朋友圈看到的,轉發一下。html
5.1 類加載機制,也就是雙親委派模型java
5.2 Java內存分配模型(默認HotSpot)mysql
線程共享的:堆區、永久區 線程獨享的:虛擬機棧、本地方法棧、程序計數器git
5.3 內存分配機制:年輕代(Eden區、兩個Survivor區)、年老代、永久代以及他們的分配過程github
5.4 強引用、軟引用、弱引用、虛引用與GCweb
5.5 happens-before規則正則表達式
5.6 指令重排序、內存柵欄redis
5.7 Java 8的內存分代改進算法
5.8 垃圾回收算法:spring
標記-清除(不足之處:效率不高、內存碎片)
複製算法(解決了上述問題,可是內存只能使用一半,針對大部分對象存活時間短的場景,引出了一個默認的8:1:1的改進,缺點是仍然須要藉助外界來解決可能承載不下的問題)
標記整理
5.8 經常使用垃圾收集器:
新生代:Serial收集器、ParNew收集器、Parallel Scavenge 收集器
老年代:Serial Old收集器、Parallel Old收集器、CMS(Concurrent Mark Sweep)收集器、 G1 收集器(跨新生代和老年代)
5.9 經常使用gc的參數:-Xmn、-Xms、-Xmx、-XX:MaxPermSize、-XX:SurvivorRatio、-XX:-PrintGCDetails
5.10 經常使用工具: jps、jstat、jmap、jstack、圖形工具jConsole、Visual VM、MAT
2.1 AOP的實現分類:編譯期、字節碼加載前、字節碼加載後三種時機來實現AOP
2.2 深入理解其中的角色:AOP聯盟、aspectj、jboss AOP、spring自身實現的AOP、Spring嵌入aspectj。特別是能用代碼區分後二者
2.3 接口設計:
AOP聯盟定義的概念或接口:Pointcut(概念,沒有定義對應的接口)、Joinpoint、Advice、MethodInterceptor、MethodInvocation
SpringAOP針對上述Advice接口定義的接口及其實現類:BeforeAdvice、AfterAdvice、MethodBeforeAdvice、AfterReturningAdvice;針對aspectj對上述接口的實現AspectJMethodBeforeAdvice、AspectJAfterReturningAdvice、AspectJAfterThrowingAdvice、AspectJAfterAdvice。
SpringAOP定義的定義的AdvisorAdapter接口:將上述Advise轉化爲MethodInterceptor
SpringAOP定義的Pointcut接口:含有兩個屬性ClassFilter(過濾類)、MethodMatcher(過濾方法)
SpringAOP定義的ExpressionPointcut接口:實現中會引入aspectj的pointcut表達式
SpringAOP定義的PointcutAdvisor接口(將上述Advice接口和Pointcut接口結合起來)
2.4 SpringAOP的調用流程
2.5 SpringAOP本身的實現方式(表明人物ProxyFactoryBean)和藉助aspectj實現方式區分
5.1 數據庫性能的優化
5.2 深刻理解MySQL的Record Locks、Gap Locks、Next-Key Locks
例以下面的在什麼狀況下會出現死鎖:
start transaction; DELETE FROM t WHERE id =6; INSERT INTO t VALUES(6); commit;
5.3 insert into select語句的加鎖狀況
5.4 事務的ACID特性概念
5.5 innodb的MVCC理解
5.6 undo redo binlog
具體見 張開濤大神的架構系列
服務限流:令牌桶、漏桶
服務降級、服務的熔斷、服務的隔離:netflix的hystrix組件
11.4 服務的線性擴展
無狀態的服務如何作線性擴展:
如通常的web應用,直接使用硬件或者軟件作負載均衡,簡單的輪訓機制
有狀態服務如何作線性擴展:
如Redis的擴展:一致性hash,遷移工具
11.5 服務鏈路監控和報警:CAT、Dapper、Pinpoint
14.1 raft(詳見Raft算法賞析)
14.2 ZooKeeper使用的ZAB協議(詳見ZooKeeper的一致性算法賞析)
14.3 paxos(詳見paxos算法證實過程)
14.3.1 paxos的運做過程:
Phase 1: (a) 一個proposer選擇一個編號爲n的議案,向全部的acceptor發送prepare請求
Phase 1: (b) 若是acceptor已經響應的prepare請求中議案編號都比n小,則它承諾再也不響應prepare請求或者accept請求中議案編號小於n的, 而且找出已經accept的最大議案的value返回給該proposer。若是已響應的編號比n大,則直接忽略該prepare請求。
Phase 2:(a) 若是proposer收到了過半的acceptors響應,那麼將提出一個議案(n,v),v就是上述全部acceptor響應中最大accept議案的value,或者是proposer本身的value。而後將該議案發送給全部的acceptor。這個請求叫作accept請求,這一步纔是所謂發送議案請求,而前面的prepare請求更多的是一個構建出最終議案(n,v)的過程。
Phase 2:(b) acceptor接收到編號爲n的議案,若是acceptor尚未對大於n的議案的prepare請求響應過,則acceptor就accept該議案,不然拒絕
14.3.2 paxos的證實過程:
1 足夠多的問題
2 acceptor的初始accept
3 P2-對結果要求
4 P2a-對acceptor的accept要求
5 P2b-對proposer提出議案的要求(結果上要求)
6 P2c-對proposer提出議案的要求(作法上要求)
7 引出prepare過程和P1a
8 8 優化prepare
14.3.3 base paxos和multi-paxos