`
kmplayer
  • 浏览: 498270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
1,HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感 ...
ant:一种编译打包工具. (1)Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷。 (2)既然我们已经有了make, gnumake, nmake, jam以及其他的build工具为什么还要要一种新的build工具呢?因为Ant的原 ...
1,简介: curl是一个利用URL语法在命令行方式下工作的文件传输工具。 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等, ...

ssh公钥认证

1,原理:   密匙认证需要依靠密匙,首先创建一对密匙(包括公匙和密匙,并且用公匙加密的数据只能用密匙解密),并把公匙放到需要远程服务器上。这样当登录远程服务器时,客户端软件就会向服务器发出请求,请求用你的密匙进行认证。服务器收到请求之后,先在你在该服务器的宿主目录下寻找你的公匙,然后检查该公匙是否是合法,如果合法就用公匙加密一随机数(即所谓的challenge)并发送给客户端软件。客户端软件收到 “challenge”之后就用私匙解密再把它发送给服务器。因为用公匙加密的数据只能用密匙解密,服务器经过比较就可以知道该客户连接的合法性。 2,核心: 将客户端的公钥拷贝到远端机器即可. 这样客户端 ...
1,有不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元 解答:实质就是暴力枚举 #include<iostream> #include<cstring> using namespace std; const int Len = 5; int ans = 0; int m[Len] = {50, 20, 10, 5, 1}; int total[Len] = {2, 5, 10, 20, 100}; int n[Len]; int sum = 100; void GetNum(int m[], int n[]) { ...
1,一段实例代码: void DeleteListNode(node* pCurrent) { assert(pCurrent != NULL); node* pNext = pCurrent -> next; if (pNext == NULL) pCurrent = NULL; else { pCurrent -> next = pNext -> next; pCurrent -> data = pNext -> data; delete pNext; } }
1,一步 增加,删除,或修改一个字符。 2,计算总步数,使得两个字符串相等。 注:增加一个字符和删除一个字符实质是一样的。 问题可以归结为: (1)一步操作后,再将A[2,...]和B[1,...]变成相同字符串。 (2)一步操作后,再将A[1,...]和B[2,...]变成相同字符串。 (3)一步操作后,再将A[2,...]和B[2,...]变成相同字符串。 3,得到一种递归的方法: #include<iostream> #include<cstring> using namespace std; int minValue(int t1, int t2 ...
方法一、 神奇的双重while循环。 注:显然可以利用这种方法,打印出任意一个N维数组的任意组合。 方法二、递归(实质就是DFS) 实例代码: #include<iostream> #include<cstring> using namespace std; //键盘数字上的字符 char c[10][10] = { "", "", "ABC", "DEF", "GHI", "JKL", "MNO" ...
1,题意:给定s1和s2,判定s2是否能够被s1做循环移位得到的字符串包含。 2,解决: 方法一: #include<iostream> #include<cstring> using namespace std; bool isMatch(char* src, char* des) { int len = strlen(src); for (int i = 0; i < len; i++) { char tempchar = src[0]; for (int j = 1; j &l ...
1,可以将者看成两个独立的问题。 个需要比较N次,需要比较2*N次。 2,我们可以两两分组。 每一对中较小的放左边,较大放右边。 N/2次。 奇数位比较N/2次,找到最小值。 偶数位比较N/2次,找到最大值。 总的比较次数:1.5N。 缺点:破坏了原数组。 3,维持两个变量min和max。 取出两个数,相比较1次。 较小的和min比较,决定是否更新min。 同理,更新max。 可见处理两个数,比较3次。 总的比较次数:1.5N 优点:不会破坏原来的数组。 4,分治思想 #include <iostream> using namespace std; void max ...
1,方法一: 最经典的辗转相除法. int gcd(int x, int y) { return (!y)? x:gcd(y, x % y); } 缺点:取模运算开销较大,容易成为瓶颈. 2,方法二: int gcd(int x, int y) { if (x < y) return gcd(y, x); if (y == 0) return x; else return gcd(x-y, y); } 缺点:免去了取模,迭代次数却增加了不少. 3,方法三: 有效利用x,y的奇偶性. 若x,y均为偶数,则f(x,y) = 2*f ...
1,题意:把一个含有N个元素的数组循环右移K位. 2,注意:这里有个潜在的误区,一般人都会假设K < N. 3,实现代码: void Reverse(int data[], int b, int e) { while (b < e) { data[b] ^= data[e]; data[e] ^= data[b]; data[b] ^= data[e]; } } void RightShift(int data, int N, int K) { K %= N; //核心:避免这个误区 Reverse(data, 0, N - ...
1,题意:2n个正整数,分成两组n,使其和最接近. 2,思路: 动态规划: isOK[i][v]表示是否可以找打i个数,使得他们之和等于v. #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int m = 0xffff; bool isOK[100][m]; void HalfSum(int data[], int N) { memset(isOK, 0, sizeof(isOK)); isOK ...
1,如果N可以分解为几个连续整数的和,则N的因式分解必然要有奇数。 证明如下: a. 首先证明,只要N的因式分解中有奇数,N就能表示为自然数连和。      如果N的因式分解中有奇数,假设为s,且N= k * s,      如果k > s/2,      则 N可以表示为这个序列的和:k - (s / 2), k - (s / 2) + 1 ... k + (s / 2);      例如 54 = 6 x 9, 可表示为 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;(6 x 9,偶数为6,则6在这9个自然数的序列的中间)      如果 k & ...
1,问题实质:寻找数组中出现的半数以上的数. int MoreHalfNum(int data[], int n) { int ret; int nTime = 0; for (int i = 0; i < n; ++i) { if (nTime == 0) { ret = data[i]; ++nTime; } else { if (data[i] == ret) ...
Global site tag (gtag.js) - Google Analytics