Webserver项目笔记

  1. 三次握手在connect里发生
  2. 鲸群效应:主线程将任务添加到任务队列时,所有等待的子线程都会被唤醒,但是只有一个能获取,其余的子线程再次进入睡眠。
  3. Reactor .vs Proactor
    1. Reactor是主线程只管将任务放到任务队列,子线程拿到后自己去读
    2. Proactor是将就绪时间里的IO用主线程先读出来
  4. 服务器类型,IO密集型和CPU密集型两种,IO密集型线程池线程个数可以设成核心数的两倍。
  5. 高性能线程池,动态扩容,(搜美团线程池看文章)
  6. 问QueryPerSecond(每秒请求):答2000ps,从软硬件两个角度答
    1. 硬件,租的服务器,核心少,内存小,计算频率不太行
    2. 软件,我线程池个数是8,不支持动态扩容,动态扩容和前面的就沾上了,互斥锁(读写锁,自旋锁,CAS(无所编程),定时器(升序双链表,时间轮))
  7. EdgeT和LevelT
    1. 都是socket的属性
    2. 当就绪事件到来时,如果是ET模式,需要立刻处理,socket的缓冲区得一次性读完
    3. LT不用立刻处理,可以等到调度时再处理,缓冲区也不用一次读完