这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战
二、计算机网络
- TCP(面向连接、可靠)和 UDP(面向报文、快速大量)特点。
- TCP的三次握手和四次挥手,为什么这样设计。—— 围绕通信
全双工的特点回答。 - TCP 为什么不
两次握手:无法避免历史错误连接的初始化,在超时前浪费服务端的资源; - TCP 为什么不
四次握手:没必要,TCP 设计中支持同时发送 ACK 和 SYN(详情见TCP数据报文结构)。 - HTTPS 和 HTTP 的区别:HTTPS 在连接阶段多了应用层协议SSL,涉及CA证书,用非对称加密校验证书和交换通信密钥,后续用对称加密过的 通信密钥 对通信内容进行加密。
- 五(七)层模型:应用层、(表示层、会话层、)传输层、网络层、数据链路层、物理层。
- TCP可靠性:连续ARQ协议、选择重发ARQ协议、滑动窗口协议。
三、算法设计
1. 基本算法
- 手撕快排、归并。
- 手撕剑指算法题。
- 计算单链表长度(考虑含环情况):快慢指针判断是否有环,也可以用来找到最早公共节点。
- 数组相关:利用索引跟值的关系做文章,例如找到
乱序数组中第一个缺失的正整数。 - 字符串相关:一般都会借用一个 size=256 或 size=26 的数组存储(可以覆盖全部256个ASCII字符,或大小写英文字符)。
2. 设计模式
- 单例(Singleton):静态内部类,加锁同步,静态常量。
- 工厂(Factory),抽象工厂:便于调用不同的子类。
- 装饰(Decoration):嵌套型附加特性。
- 代理(Proxy):中间人AOP。Spring容器动态代理。
- 创建者(Builder):链式调用,隐藏内部多个组件。
- 委派(Delegate):双亲委派模型。SpringMVC 以 Dispatcher 结尾的。
- 责任链(Responsibility):Spring拦截器。
- 适配器(Adapter):兼容组件/零件。SpringMVC 的 HandlerAdapter 参数适配。
- 模板(Template):Spring 的 JdbcTemplate。
- 策略模式(Strategy):Spring的Resource 接口,可以实现从XML文件、ClassPath获取配置。
3. 灰度发布
- 用户标识:对用户打标签,只针对白名单用户开放“内测”功能。
- 目标用户/流量筛选:公司内部员工、种子用户、活跃用户、最后是 所有用户。
- 实时数据监控:灰度过程需要关注监控,便于及时回滚。