复习的知识点和理解

volitile线程可见性,指令非乱序。构造函数半初始问题。dcl单例因为cpu指令乱序,应该加。具体实现是storeload,loadload,loadstore,storestore隔离墙。

epoll jdk bug,epoll 事件监听。select轮询。
多路复用器,通过事件监听模型,分发accept,recv等事件,内核实现主要有select,epoll,本质上还是同步非阻塞IO。多路复用对应Java的API主要是NIO包里的Selector实现。

布隆过滤器,hash然后取模转下标,不存在一定不存在,存在有可能不存在。

redis redlock 集群投票

k8s相关
pod 类似理解成一个docker进程
service 真正服务
deployment 真正部署的东西
nodeport 对外端口
clusterip + ingress 动态服务 和 容器级网关
dashborad 管理看板

mysql
索引最左选择
buffer区【先redo log ,后binlog】异步刷盘
b+树,平衡子节点链表树,链表方便做范围判断

log4j2 MDC 全链路日志方案
在gateway上 生成traceid 通过globalfilter 扔到httpheader里,后置服务在filter里完成 MDC环境设置,然后log4j2 pattern中打印出来对应的值即可

gateway jwt 通过filter解出token,做鉴权处理,解出之后的东西依旧扔到httpheader里,后置再获取使用即可

限流
spring gateway,nginx都可以实现
漏桶算法,其实就是队列,缓冲之后往下扔
令牌桶算法,维护一个令牌凭证,谁能获取到令牌,谁往下走。
nginx常用令牌桶实现。

Integer比较问题
Integer.valueOf 中,如果值在-128-127之间,则会返回IntegerCache的对象,IntegerCache是自动封箱的缓存处理

linux分析命令
strace -tt -f [logpath] program
strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

ConcurrentHashMap
hash存储区分段锁synchronized,在计算下标,resize扩充时使用CAS乐观锁

tcp
三次握手,syn,syn ack,ack
四次分手,fin,fin ack,fin,fin ack
七(五)层:
应用层(展示层,会话层)
控制链路层,这里tcp握手,控制网络管道状态
网络层,寻址
链路层,发包
物理层,真实电信号传输

HTTPS 加密
内容传输 -> 对称加密,
证书验证 -> 非对称加密,
client ---- hack ---- server
hack攻击需要伪造证书,才能对client构成欺骗。
当CA机构存在时,浏览器会使用CA.pub验证证书的合法性,用来保证S.pub的真实性。接下来client使用S.pub去和服务器协商对称的具体算法和salt。最终和服务器完成带salt对称加密通信。

spring循环依赖解决,前提是必须setter注入,构造函数依赖会直接抛出异常,spring使用三级缓存来解决setter循环依赖:
一级 实例化完,初始化完的对象
二级 实例化完,但没初始化的对象
三级 实例化完之后存放的对应对象,使用ObjectFactory在维持,确保包装工厂中放的是真正使用中的对象(有Proxy则返回Proxy,否则返回原先的对象),而使用ObjectFactory是因为getObject方法可以切换上下文,比如从线程中获取的HttpServletRequest对象

你可能感兴趣的:(笔记)