Update Rocket.md

pull/9/head
hmao 5 years ago committed by GitHub
parent f7b0cddc08
commit fc9fdabd96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -990,6 +990,20 @@ public class Test {
2、http是超文本传输协议信息是明文传输 https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443
### SELECT和EPOLL区别
select的几大缺点
1每次调用select都需要把fd集合从用户态拷贝到内核态这个开销在fd很多时会很大
2同时每次调用select都需要在内核遍历传递进来的所有fd这个开销在fd很多时也很大
3select支持的文件描述符数量太小了默认是1024
对于第一个缺点epoll的解决方案在epoll_ctl函数中。每次注册新的事件到epoll句柄中时在epoll_ctl中指定EPOLL_CTL_ADD会把所有的fd拷贝进内核而不是在epoll_wait的时候重复拷贝。epoll保证了每个fd在整个过程中只会拷贝一次。
  对于第二个缺点epoll的解决方案不像select或poll一样每次都把current轮流加入fd对应的设备等待队列中而只在epoll_ctl时把current挂一遍这一遍必不可少并为每个fd指定一个回调函数当设备就绪唤醒等待队列上的等待者时就会调用这个回调函数而这个回调函数会把就绪的fd加入一个就绪链表。epoll_wait的工作实际上就是在这个就绪链表中查看有没有就绪的fd利用schedule_timeout()实现睡一会判断一会的效果和select实现中的第7步是类似的
  对于第三个缺点epoll没有这个限制它所支持的FD上限是最大可以打开文件的数目这个数字一般远大于2048,举个例子,在1GB内存的机器上大约是10万左右具体数目可以cat /proc/sys/fs/file-max察看,一般来说这个数目和系统内存关系很大。
### 秒杀并发情况下库存为负数问题

Loading…
Cancel
Save