它定义了算法家族, 分别封装起来, 让它们之间可以相互替换, 此模式让算法的变化, 不会影响到使用算法的客户。不同的策略都是完成相同的工作,只是实现不同, 它可以以相同的方式调用所有的算法, 减少了各种算法类与使用算法类之间的耦合。

UML结构图

image

  • Strategy 提供算法的抽象接口,图中它提供了一个AlgorithmInterface接口方法,让具体的策略类来实现该方法。Strategy类可以是接口也可以是抽象类。在策略类是抽象类的情况下,通常AlgorithmInterface方法也是抽象方法。

    阅读更多

在OAuth中,客户端在请求受资源所有者控制并托管在资源服务器上的资源的访问权限时,将被颁发一组不同于资源所有者所拥有凭据的凭据。客户端获得一个访问令牌(一个代表特定作用域、生命期以及其他访问属性的字符串),用以代替使用资源所有者的凭据来访问受保护资源。 访问令牌由授权服务器在资源所有者认可的情况下颁发给第三方客户端。客户端使用访问令牌访问托管在资源服务器的受保护资源。例如,终端用户(资源所有者)可以许可一个打印服务(客户端)访问她存储在图片分享网站(资源服务器)上的受保护图片,而无需与打印服务分享自己的用户名和密码。
反之,她直接与图片分享网站信任的服务器(授权服务器)进行身份验证,该服务器颁发给打印服务具体委托凭据(访问令牌)

要弄明白OAuth2的工作流程,先要知道在OAuth2中所以定义了四种角色:

资源所有者

作者解释:资源的所有者,比如你存储在QQ空间的照片。你具备将该照片作为一种资源授权给另外一个第三方应用的权限。
官方解释:能够许可受保护资源访问权限的实体。当资源所有者是个人时,它作为最终用户被提及。

资源服务器

托管受保护资源的服务器,能够接收和响应使用访问令牌对受保护资源的请求。

阅读更多

排序思路

在第一层循环中依次从数组中选择一个数组元素,然后在第二层循环中用选择的元素与后面的数组元素比较,如果发现后面的元素大于或者小于选择的元素,就与选择的数组元素交换位置。这样就使得每次选择的数组元素在第二层循环每次执行完后都是有序的,都是整个数组中最大或者最小的值。

第一层的循环次数是N次,第二层循环每次是N-i次。i+1是已经有序的数组元素的个数。

C语言
1
2
3
4
5
6
7
8
9
10
void selectSort(int *arr, int n) {
for (int i = 0; i < n; i++) {
int minIndex = i; // 选择一个数组元素
for (int j = i + 1; j < n; j++) {
if(arr[j] < arr[minIndex])
minIndex = j;
}
swap(arr[minIndex], arr[i]);
}
}

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×