22
33.. :nosearch:
44
5- =================
6- 知识点 Check List
7- =================
5+ ========
6+ 面试八股
7+ ========
88
9- :revise : 2021-08
10- :revise : 2026-02
9+ :Revised At : 2021-08
10+ :Revised At : 2026-02
1111
1212.. contents ::
1313 :local:
@@ -159,21 +159,45 @@ UDP 的核心贡献:给 IP 层加了端口,让数据能区分不同的应用
159159- IoT
160160- ...
161161
162- select、epoll、io_uring |_ |
162+ select、epoll、io_uring |o |
163163---------------------------
164164
165+ 都是流行的 IO 多路复用接口。
166+
165167:zhwiki: `Select_(Unix) `
166168 - 是个单独的系统调用
167- - 复杂度 :math: `O(n)`
168- - 连接数:`FD_SETSIZE = 8 `
169+
170+ Pros
171+ - POSIX 兼容,跨平台
172+
173+ Cons
174+ - 获取活跃 fd 的方式是全量扫描,复杂度 :math: `O(n)`
175+ - 有最大 FD 限制(``FD_SETSIZE ``),且 fs_set 每次都要全量拷贝到内核
169176
170177:zhwiki: `Epoll `
171- - 是个模块,由三个系统调用组成
172- - 底层为红黑树,复杂度 :math: `O(log_n)`
173- - 连接数:API 上无限制
174- - 边沿触发(异步推荐)、状态触发
178+ 由三个系统调用 ``epoll_create ``、``epoll_ctl ``、``epoll_wait `` 组成
179+
180+ Pros
181+ - 底层为红黑树,复杂度 :math: `O(log_n)`,仅返回活跃的 fd
182+ - 连接数:API 上无限制
183+ - 通过 mmap 共享内存
184+ - 边沿触发(异步推荐)、水平触发
185+ Cons
186+ - 不支持文件 IO
187+ - 做不到 syscall free,每个 fd 至少需要一次系统调用(``epoll_ctl ``)
175188
176189:enwiki: `Io_uring `
190+ 由两个用户和内存共享的环形队列组成:提交队列(SQ)和完成队列(CQ),应用程序吧 IO 请求通过 SQ 提交,内核将处理好的结果放入 CQ。
191+
192+ 三种模式:中断、内核轮询(SQ POLL)、IO 轮询
193+
194+ Pros
195+ - 几乎完全零拷贝
196+ - 支持批量提交
197+ - 只需要至多三次系统调用 |? | (mmap for )
198+
199+ Cons
200+ - 复杂
177201
178202io_uring |_ |
179203------------
@@ -280,7 +304,7 @@ io_uring |_|
280304 Web
281305---
282306
283- HTTPS 原理 |_ |
307+ HTTPS 原理 |o |
284308~~~~~~~~~~~~~~
285309
286310对称加密
@@ -309,13 +333,21 @@ Session 和 Cookie |_|
309333
310334:URL: https://zhuanlan.zhihu.com/p/27669892
311335
312- 对无状态的 HTTP 协议的补充。
336+ 对无状态的 HTTP 协议的补充。允许服务端将数据存储在客户端。
313337
314338`Set-Cookie `_ 用来向客户端设置 Cookie,假如域名不能涵盖原始服务器的域名,那么应该被用户代理拒绝
315339
316340.. _Set-Cookie : https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie
317341
318- Session 一般用 Cookie 存。
342+ Seesion 本地存在服务端,而将凭证(Seesion ID)等存在客户端的 Cookie 中。
343+
344+ 浏览器禁用 Cookie
345+ 可通过URL重写传递 Session ID。
346+
347+ 分布式Session
348+ Session复制、Session Sticky、集中式Session存储(Redis)。
349+
350+ .. todo :: TODO
319351
320352分布式
321353======
@@ -325,6 +357,8 @@ Map-Reduce 概述 |_|
325357
326358映射(可并行) -> 归纳
327359
360+ Split -> Map -> Shuffle -> Reduce。
361+
328362分布式 ID 生成 |_ |
329363------------------
330364
@@ -336,7 +370,7 @@ UUID / 自己随机生成
336370 :pros: - 不依赖外部服务
337371 :cons: - 业务价值不大
338372 - 不利于储存和索引
339- - 不能趋势递增
373+ - 不能趋势递增 | ? |
340374
341375单数据库自增 ID
342376 :pros: - 支持递增
@@ -392,6 +426,7 @@ CAP |_|
392426 —— :zhwiki: `CAP定理 `
393427
394428P(分区容错性)是说这个系统要允许分区?
429+ 网络分区(P)是必然发生的,所以通常是在CP(如ZooKeeper,牺牲可用性)和AP(如Eureka,牺牲强一致性,保证最终一致)之间权衡。
395430
396431分布式锁 |_ |
397432------------
@@ -420,7 +455,7 @@ P(分区容错性)是说这个系统要允许分区?
420455 - 公平的分布式锁实现:etcd
421456 - 环形队列/时间轮
422457
423- 一致性级别 |_ |
458+ 一致性级别 |o |
424459--------------
425460
426461:URL: https://zhuanlan.zhihu.com/p/86999794
@@ -607,7 +642,11 @@ MVCC
607642服务重试
608643--------
609644
610- 幂等性
645+ 重试的前提是幂等。
646+
647+ 幂等性:多次调用结果一致
648+
649+ 重试策略:指数退避
611650
612651限流器 |_ |
613652----------
@@ -874,6 +913,8 @@ Dive in to code
874913 :gcBgMarkStartWorkers: 为每个 P(线程上的本地调度器)启动一个 gcMarkWoker
875914 :gcDrain: Mark 阶段的标记代码主要实现
876915
916+ .. todo :: GreenTea
917+
877918内存管理
878919--------
879920
@@ -1163,11 +1204,6 @@ IO 虚拟化
11631204 2. QEMU用户态工具,它是一个普通的Linux进程,为客户机提供设备模拟的功能,包括模拟BIOS、PCI/PCIE总线、磁盘、网卡、显卡、声卡、键盘、鼠标等。同时它通过ioctl系统调用与内核态的KVM模块进行交互。
11641205 在KVM虚拟化架构下,每个客户机就是一个QEMU进程,在一个宿主机上有多少个虚拟机就会有多少个QEMU进程;客户机中的每一个虚拟CPU对应QEMU进程中的一个执行线程
11651206
1166- libvirt
1167- -------
1168-
1169- 是一套用于管理硬件虚拟化的开源API、守护进程与管理工具
1170-
11711207流处理
11721208======
11731209
@@ -1199,24 +1235,6 @@ PLER vs Flink
11991235:allowLateNess: 延迟窗口关闭时间
12001236:sideOutPut: 指定窗口已经彻底关闭后,就会把所有过期延迟数据放到侧输出流,让用户决定如何处理
12011237
1202- 算法
1203- ====
1204-
1205- 树
1206- - 树的遍历 |_ |
1207- - 平衡树
1208- - 二叉堆
1209-
1210- 动态规划
1211- - 最长上升子序列 |_ |
1212- - 最长公共子序列 |_ |
1213- - 最长回文串 |_ |
1214- - 01 背包 |_ |
1215-
1216- .. rubric :: 脚注
1217-
1218- .. [# ] https://developer.aliyun.com/article/724399
1219-
12201238For New Period
12211239==============
12221240
0 commit comments