C++ 2022常见知识点3
发布时间:2022-11-11 11:19:29 所属栏目:安全 来源:
导读: 就是用户在浏览器(客户端)里输入一个HTTPS网址,然后连接到服务器的443端口。
服务端配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别是自己颁发的证书
服务端配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别是自己颁发的证书
|
就是用户在浏览器(客户端)里输入一个HTTPS网址,然后连接到服务器的443端口。 服务端配置 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(StartSSL就是一个不错的选择,有1年的免费服务)。 传输证书 这个证书其实是公钥,只是包含很多信息,如证书的颁发机构,过期时间等。 客户端解析证书 这部分工作是客户端的TLS完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,则会生成一个随机值,然后用证书对该随机值进行加密,把随机值当作锁头锁起来,这样除非有钥匙,不然是看不到所背后的内容的。 传输加密信息 这部分传输的信息是用证书进行加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密。 服务端解密信息 服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。 客户端解密信息 客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。 将14拆成几个自然数的和,再求出这些数的乘积,可以求出的最大乘积是多少? 乘积最大是3*3*3*3*2=162,当分成的数尽可能接近e时,其乘积最大。 两个圆,半径分别为1cm、3cm,小圆在大圆外,绕大圆圆周滚动一周,请问小圆一共旋转了几圈? 路程上虽说小圆的周长是大圆三分之一,但是小圆绕大圆圆周滚动一周这一圈也要算进去,所以3+1=4。 一个单核多道批处理系统中仅有 P1 和 P2 两个作业, P2 比 P1 晚10ms到达,它们的计算和 I/O 操作顺序如下: 若不考虑调度和切换时间,则完成两个作业需要的时间最少是? 注意:这道题中,P1和P2是不能同时进行 IO 的,正确的流程为: P1 计算40ms;P1 进行 120ms IO(同时P2进行30ms计算);P2进行 60ms IO(同时 P1进行20ms计算);P2 进行 40ms 计算。总计:40+120+60+40=260ms。 已知公式:DONALD + GERALD = ROBERT 以上共有10个字母,每一个字母都代表阿拉伯数字中 0-9 中的一个,已知D = 5服务器内容加密,请计算出 N字母代表的数字。 二分查找要求查找的数组必须已排序 已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项u的运算是? TIPS:广义表除了头之外其它全为尾,只能取头(head)或除头以外的所有元素(tail)。 给定n个权值,其对应哈夫曼树的结点总数为? 哈夫曼树没有度为1的结点,且权值所在结点都是叶子结点。二叉树中度为2的结点数比叶结点少1,即由权值总数为n,知道叶子结点数为n,又度为2的结点为n-1个,故共有n+n-1=2n-1个。 n 个顶点,m 条边的全连通图,至少去掉几条边才能构成一棵树? n个顶点的树一定有n-1条边,所以需要发去掉m - (n - 1) = m - n + 1条边。 先序遍历序列为a,b,c,d的不同二叉树的个数为? 可参考: 卡特兰数:C(2n,n)/(n+1) = 70 / 5 = 14 给定一个m行n列的整数矩阵(如图),每行从左到右和每列从上到下都是有序的。判断一个整数k是否在矩阵中出现的最优算法,在最坏情况下的时间复杂度是? 效果图 杨氏矩阵查找算法。 bool stepWise(int mat[][N_MAX], int N, int target, int &row, int &col) { if (target < mat[0][0] || target > mat[N-1][N-1]) return false; row = 0; col = N-1; while (row <= N-1 && col >= 0) { if (mat[row][col] < target) row++; else if (mat[row][col] > target) col--; else return true; } return false; } 有一个小白程序员,写了一个只能对5个数字进行排序的函数。现在有25个不重复的数字,请问小白同学最少需要调几次该函数,才可以找出其中最大的三个数? 直线上的点 参考链接: 题目一:给定N个二维坐标点(包含整形x,y),找到位于同一条直线上点的最大个数。 int Gcd(int a, int b) { if (0 == b) { return a; } else { return Gcd(b, a % b); } } int max(int a, int b) { return a > b ? a : b; } int maxPoints(vector<Point>& points) { int ans = 0; int cnt = 0; int overLap = 0; int dx = 0; int dy = 0; int g = 0; for (int i = 0; i < points.size(); i++) { cnt = 0; overLap = 0; map<pair<int, int>, int> line; for (int j = i + 1; j < points.size(); j++) { dx = points[i].x - points[j].x; dy = points[i].y - points[j].y; if (0 == dy && 0 == dx) { overLap++; continue; } g = Gcd(dx, dy); dx /= g; dy /= g; cnt = max(cnt, ++line[make_pair(dx, dy)]); } ans = max(ans, cnt + overLap + 1); } return ans; } 题目二:给定N个三维坐标点(包含整形x,y,z),找到位于同一条直线上点的最大个数 3D的情况是类似的,唯一不同是多个维度,所以斜率(准确得说是方向向量)用(dx,dy,dz)表示。 struct Point { int x; int y; int z; Point() : x(0), y(0), z(0) {} Point(int a, int b, int c) : x(a), y(b), z(c) {} }; int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } int gcd(int a, int b, int c) { return gcd(gcd(a, b), c); } int max(int a, int b) { return a > b ? a : b; } int maxPoints(vector<Point>& points) { int ans = 0; for (int i = 0; i < points.size(); i++) { int cnt = 0, overLap = 0; map<pair<pair<int, int>, int>, int> line; for (int j = i + 1; j < points.size(); j++) { int dx = points[i].x - points[j].x; int dy = points[i].y - points[j].y; int dz = points[i].z - points[j].z; //判断两点是否重合 if (dx == 0 && dy == 0 && dz == 0) { ++overLap; continue; } //计算最简方向向量并存入map容器中,同时更新cnt int g = gcd(dx, dy, dz); dx /= g; dy /= g; dz /= g; cnt = max(cnt, ++line[pair<pair<int, int>, int>(pair<int, int>(dx, dy), dz)]); } //统计该基准点下的最大共线点数量 //cnt+重合点+基准点自身 ans = max(ans, cnt + overLap + 1); } return ans; } (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

