10.31小记

mac2024-03-15  25

三次握手、四次挥手 TCP的运输连接管理 三个阶段:1) 连接创建 2) 数据传送 3) 连接释放

解决的三个问题:

要使每一方能够确知对方的存在要允许双方协商一些参数能够对运输实体资源进行分配采用C/s方式 client server browser

HTTP协议的底层传输默认使用的是可靠地tcp协议,不过他对互联网的高速发展带来很大的制约,Google制定了一套基于udp的QUIC(Quick UDP Internet Connection) 协议,这种协议基于TCP和udp之间,不过目前还没有广泛使用

三次握手和四次挥手保证了连接的可靠性,这种模式也有他的缺点,首先在传输效率上会比较低,另外三次握手的过程中客户端需要发送两次数据才可以建立连接。比如发出第一次握手(并接到第二次握手后)就不再回应第三次握手,默认情况会一直发送五次,当然个别的这种请求也没什么关系,但凡事就怕一个多字,当有大量的这种请求就麻烦了,这是服务器就会浪费大量的资源,甚至可能导致无法处理正常的请求,这就是DDOS攻击中的 syn flood 攻击

http协议http的8种请求方式 POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 全排列 permutation 置换 backtrack 回溯 // 刚开始接触回溯算法的时候常常会忽略状态重置 // 回溯的时候,一定要记得状态重置 即 tmp_list.add(nums[i]); findPermutation(nums,len,tmp_list); tmp_list.remove(tmp_list.size()-1);

使用数组 使用位图进行判断节省内存从n!

内存从n! --> n if (((used >> i) & 1) == 0) {//如果当前位不等于即没有用过 used ^= (1 << i); //与当前值异或0i00j //用完以后,状态重置 回溯常用套路 used^=(1<<i); }

还是没有理解剪枝的精髓 而 !used[i-1],则是迅速去杂,每次只允许不同的数加入队列,更加迅捷 used[i-1] 表示则是倒序 看了liuweiwei的答案受益匪浅 数组的排序是很重要的

最新回复(0)