网络协议

互联网协议套件

OSI 七层模型和 TCP/IP 四层模型:

  • http、ftp 应用层
  • [表示层]
  • [会话层]
  • tcp/udp 传输层
  • ip、icmp 网络层
  • ethernet/以太网 数据链路层
  • [物理层]

tcp

TCP 三次握手和四次挥手,报文 SYN/ACK ,报文 FIN /ACK

中间状态切换, timewait 为什么等两个 msl ? e.g. TIME_WAITESTABLISHED

以 tcp 为传输协议设计应用层协议时,要考虑粘包、半包、拆包等问题,参考 http 解决即可。

多态

重载 overload 相同签名不同入参,编译期多态/静态多态(模板也是编译期多态的手段)。

重写/覆写/覆盖 override 继承体系,运行期多态。

怎么实现多态?虚函数表 + vptr

空对象的大小?1 个字节。

子类不重写父类的任何虚函数,子类的 vptr 会和父类的 vptr 指向同一 vftable 吗? 不会。

思考:多态解决什么问题?

内存拷贝

memcpy()memmove() 两者有 什么区别

了解 qt

todo

关联容器

由浅入深的几个问题:

  1. mapunordermap 的区别

  2. unordermap 元素数太多,有什么影响

  3. mapunorder_map 的底层数据结构

  4. map 红黑树,和平衡二叉树区别

  5. B+

微服务

有状态服务 vs. 无状态服务

云端有状态应用的容器化

集群化有哪些情况?

k8s 有状态服务,怎么处理

重构

怎么设计流媒体?通过思考的过程,验证能否去除流媒体调度服务,能否 k8s 自行扩展?

  1. k8s 按照长连接数目的策略选择实例

  2. 收到客户请求(入参要有 puid),访问 redis 是否存在 puid,如果不存在:

    1. 向设备发出拉流信令

    2. 将 puid 和 spid 放到 redis 上,设置过期时间,要求服务打卡续命

    3. 失败或断开时主动从 redis 移除 puid

  3. 如果已经存在:

    1. 将 ……

认真思考

参照公司梳理主流程的做法,我自己也抽取一套更小的流程(主流程之内或者之外再考虑),保证可测试、可验证,尝试优化、改进。

异步 IO

windows 平台的 IOCP

linux 平台的 libaio

Linux-native asynchronous I/O access library.

POSIX aio 又是什么概念呢

Difference between POSIX AIO and libaio on Linux?