持續(xù)更新中······
一扣蜻、多線程
1.ThreadPoolExecutor
線程池實(shí)現(xiàn)原理软棺、關(guān)鍵的方法的作用诫欠、常見的應(yīng)用場(chǎng)景
線程池中的線程的狀態(tài)艰赞,線程池中添加任務(wù)的具體處理,線程池中沒有任務(wù)時(shí)線程是什么狀態(tài)
參考:http://www.importnew.com/19011.html
http://www.reibang.com/p/87bff5cc8d8c
2.ReentrantLock
可重入鎖的實(shí)現(xiàn)機(jī)制提佣,如何加鎖吮蛹、釋放鎖荤崇,如何做到可重入
CAS機(jī)制
如何實(shí)現(xiàn)互斥阻塞的,同關(guān)鍵字synchronized對(duì)比
嘗試編碼實(shí)現(xiàn)producer & consumer潮针,關(guān)聯(lián)多個(gè)condition實(shí)現(xiàn)靈活地線程同步
ReentrantReadWriteLock的具體使用
3.synchronized
實(shí)現(xiàn)同步的原理术荤,wait/notify/notifyall的使用
4.ThreadLocal
什么是ThreadLocal,具體應(yīng)用每篷,使用ThreadLocal會(huì)有哪些風(fēng)險(xiǎn)
為什么會(huì)發(fā)生內(nèi)存溢出瓣戚,如何避免,為什么使用ThreadLocal的弱引用作為ThreadLocalMap的key
嘗試使用ThreadLocal實(shí)現(xiàn)簡單的數(shù)據(jù)庫連接池
5.CountDownLatch/CyclicBarrier
使用方法焦读,哪一個(gè)是可以重用的
嘗試編寫demo
參考:http://ifeve.com/concurrency-cyclicbarrier/
6.Java鎖機(jī)制
鎖類型带兜,可重入、共享鎖/排它鎖吨灭、樂觀鎖/悲觀鎖
自旋鎖,鎖粗化/鎖消除刑巧,偏向鎖/輕量級(jí)鎖/重量級(jí)鎖
參考:https://blog.csdn.net/nalanmingdian/article/details/77800355
7.volatile
volatile變量在內(nèi)存中的含義喧兄,jvm的具體機(jī)制是怎么樣的
8.Semaphore
通過構(gòu)造函數(shù)Semaphore(int , boolean)可以控制是否公平
如何使用,嘗試解決哲學(xué)家進(jìn)餐問題
9.多線程基礎(chǔ)
callable和runnable啊楚,future
二吠冤、JVM
1.JVM內(nèi)存結(jié)構(gòu)
方法區(qū)/運(yùn)行時(shí)常量池、程序計(jì)數(shù)器恭理、Java虛擬機(jī)棧拯辙、本地方法棧、堆
2.JVM內(nèi)存模型
含義颜价、volatile涯保、final、synchronized
happen-before周伦、重排序
參考:http://www.reibang.com/p/d3fda02d4cae
3.類加載機(jī)制
加載過程夕春、雙親委托機(jī)制
class二進(jìn)制數(shù)據(jù)加載->驗(yàn)證->準(zhǔn)備->解析->初始化->使用->卸載
類加載器
加載過程中如何保證一個(gè)類只被加載一次
參考:http://www.importnew.com/22228.html
http://www.cnblogs.com/paddix/p/5268559.html
http://www.hollischuang.com/archives/199
4.垃圾回收
gc算法
垃圾收集器
如何調(diào)優(yōu),jvm參數(shù)配置
命令使用jps专挪、jstat及志、jmap、jstack
三寨腔、數(shù)據(jù)庫(MySQL)
1.MySQL查詢的完整過程
預(yù)編譯查詢速侈、jdbc查詢過程描述
參考:https://www.cnblogs.com/micrari/p/7112781.html
2.表設(shè)計(jì)
字段設(shè)計(jì)
3.索引設(shè)計(jì)
B+樹實(shí)現(xiàn)原理、MySQL索引的種類迫卢、如何設(shè)計(jì)表的索引倚搬,有什么注意的地方
什么時(shí)候會(huì)用到索引,什么時(shí)候索引會(huì)失效
4.讀寫分離
怎么配置
5.分庫分表
常見的策略靖避,如何考慮自適應(yīng)擴(kuò)容潭枣,全局主鍵ID生成
拆分后怎么辦比默,程序怎么連接數(shù)據(jù)庫,跨庫join問題盆犁,跨庫事務(wù)問題
中間件的選擇
四命咐、消息
流行的消息隊(duì)列Kafka、RabbitMQ谐岁、ActiveMQ
嘗試實(shí)現(xiàn)producer & consumer模型
五醋奠、緩存
1.分布式緩存設(shè)計(jì)和應(yīng)用
2.Redis
幾種數(shù)據(jù)類型、Redis集群
六伊佃、分布式
1.基本理論
CAP定理
BASE理論
兩階段提交
三階段提交
Paxos算法
2.Zookeeper
實(shí)現(xiàn)原理窜司,選舉機(jī)制
具體應(yīng)用,實(shí)現(xiàn)分布式鎖
3.分布式數(shù)據(jù)一致性解決方案
使用消息隊(duì)列MQ·····
4.分布式鎖
redis
zookeeper
七航揉、spring
1.spring框架
spring解決的問題塞祈,bean容器是怎么初始化的,bean的加載過程帅涂、生命周期
選擇使用Spring框架的原因(Spring框架為企業(yè)級(jí)開發(fā)帶來的好處有哪些)议薪?
- 非侵入式:支持基于POJO的編程模式,不強(qiáng)制性的要求實(shí)現(xiàn)Spring框架中的接口或繼承Spring框架中的類媳友。
- IoC容器:IoC容器幫助應(yīng)用程序管理對(duì)象以及對(duì)象之間的依賴關(guān)系斯议,對(duì)象之間的依賴關(guān)系如果發(fā)生了改變只需要修改配置文件而不是修改代碼,因?yàn)榇a的修改可能意味著項(xiàng)目的重新構(gòu)建和完整的回歸測(cè)試醇锚。有了IoC容器哼御,程序員再也不需要自己編寫工廠、單例焊唬,這一點(diǎn)特別符合Spring的精神”不要重復(fù)的發(fā)明輪子”恋昼。
- AOP(面向切面編程):將所有的橫切關(guān)注功能封裝到切面(aspect)中,通過配置的方式將橫切關(guān)注功能動(dòng)態(tài)添加到目標(biāo)代碼上赶促,進(jìn)一步實(shí)現(xiàn)了業(yè)務(wù)邏輯和系統(tǒng)服務(wù)之間的分離焰雕。另一方面,有了AOP程序員可以省去很多自己寫代理類的工作芳杏。
- MVC:Spring的MVC框架是非常優(yōu)秀的矩屁,從各個(gè)方面都可以甩Struts 2幾條街,為Web表示層提供了更好的解決方案爵赵。
- 事務(wù)管理:Spring以寬廣的胸懷接納多種持久層技術(shù)吝秕,并且為其提供了聲明式的事務(wù)管理,在不需要任何一行代碼的情況下就能夠完成事務(wù)管理空幻。
- 其他:選擇Spring框架的原因還遠(yuǎn)不止于此烁峭,Spring為Java企業(yè)級(jí)開發(fā)提供了一站式選擇,你可以在需要的時(shí)候使用它的部分和全部,更重要的是约郁,你甚至可以在感覺不到Spring存在的情況下缩挑,在你的項(xiàng)目中使用Spring提供的各種優(yōu)秀的功能。
2.IOC
3.AOP
4.事務(wù)
5.springMVC
處理請(qǐng)求的過程鬓梅、源碼解析
如何配置
八供置、mybatis
1.配置
2.初始化過程
3.查詢過程