10.31小记

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

解决的三个问题:

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

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

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

  1. http协议
  2. http的8种请求方式
  • POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
  • GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
  1. 全排列
    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的答案受益匪浅
只要是三个不一样的需要就行了,不要求是否相等
数组的排序是很重要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值