原创 寫一個自己的springMVC?

今天我們來實現一個簡單的springMVC框架,可以理解爲 springMVC1.0這個版本,只是功能比較簡單而已; 廢話不多說,進入正題;先看看springMVC的簡單流程; 我們請求的地址會被dispatchservlet

原创 <二>深入理解Threadlocal 關於內存泄漏的思考

不知道經常使用  Threadlocal  的朋友有沒有意識到內存泄漏這一點。什麼是內存泄漏呢?對象已經沒有在其它地方被使用了,但是垃圾回收器沒辦法移除它們,因爲還在被引用着。我不用的對象,又不能被垃圾回收,就會造成內存泄漏。不瞭解垃圾回

原创 聊聊TCP傳輸的滑動窗口協議的演進

寫這篇文章前,我有些肺腑之言想感謝一下我的微信好友“風大”。 是他給了我信心,原來沒有很難的技術,只要你肯努力總能趕上其他人。 後來關注他的博客後,發現他盡然覺得弄懂hashmap的 最好辦法是自己實現一個hashma

原创 一致性Hash算法

很早的時候就聽過這個算法,也搜過相關的博客,但一直沒搞懂這個算法是用來幹嘛的;現在的公司面試的時候CTO跟我聊了一下hashcode緊接着問我對一致性hash有沒有了解,去隨手記面試時,面試官也問了一致性hash,面試的時候都沒答出來,面

原创 再談session 和 cookie的差異

我們都知道 session是存儲在服務器端的,cookie是存儲在客戶端的; 他們兩者之間又有什麼聯繫呢?這點要先從HTTP先說起。 HTTP協議是一種無狀態的 通信協議 。那麼這就以爲着 客戶端按道理是需要每次請求之前都要和服務

原创 <一>深入理解Threadlocal的實現原理

文章開頭我想說,這是一篇面向不怎麼懂  Threadlocal 的朋友的博客,所以有的人會覺得有點囉嗦,但不論您水平高低,相信耐着性子看完也一定會有收穫。上次去深圳的一家大型的互聯網金融公司面試,就被問到了 Threadlocal , 當

原创 深入理解join方法的實現原理

有一道面試題是: 如何控制多線程的執行順序; 線程的代碼就不貼了。上僞碼好了: main(){ thread1.start(); thread1.join(); thread2.start(); thead2.join(); t

原创 源碼分析 spring事務處理機制

Spring在TransactionDefinition接口中定義這些屬性,以供PlatfromTransactionManager使用, PlatfromTransactionManager是Spring事務管理的核心接口。接口代碼如下

原创 SpringMVC實現原理

今天我們來實現一個簡單的springMVC框架,可以理解爲 springMVC1.0這個版本,只是功能比較簡單而已;廢話不多說,進入正題;先看看springMVC的簡單流程;我們請求的地址會被dispatchservlet這個spring

原创 再回廣聯

2018.3.13日晚上,翔哥邀請我給我上課,我就再回廣聯走了一趟。 再回廣聯,感觸頗深。 熟悉的工位,熟悉的人,哦不對,熟悉的陌生人。 雖然走了大半年,但有的記憶還是很新的。雖然公司的發展一直磕磕絆絆,但我還是很感激有這麼一個

原创 mysql uftb8mb4 儲存 emoji 表情失敗

記一次生產事故踩坑。血淋淋的慘痛教訓 衆所周知 mysql 存 emoji 表情要用 utf8mb4 這個字符集 OK 沒問題,設置 nick_name 爲 utf8mb4 varchar(50) 測試的結果:    emoji 表情儲存

原创 zookeeper的zab協議工作原理之原子廣播

說zab協議之前必須提一下 paxos 協議 paxos協議主要就是如何保證在分佈式環網絡環境下,各個服務器如何達成一致最終保證數據的一致性問題ZAB協議,基於paxos協議的一個改進。zab協議爲分佈式協調服務zookeeper專門設計

原创 JUC之 底層核心AQS

AQS,AbstractQueuedSynchronizer,即隊列同步器。它是構建鎖或者其他同步組件的基礎框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等)   AQS使用一個int

原创 ReentrantLock 的實現原理

AQS的功能可以分爲獨佔和共享,ReentrantLock實現了獨佔功能。 ReentrantLock實現了Lock接口,加鎖和解鎖都需要顯式寫出,注意一定要在適當時候unlock。     ReentrantLock對比synchron

原创 爲什麼會要序列化

對 java對象的傳輸 是通過網絡的 。然後網絡都是通過字節傳輸的 所以需要用序列化的方式 將java對象轉化爲 字節,然後網絡那頭的接受端,拿到收到的字節 再反序列化出來一個對象,用來保證 java的對象能夠跨進程傳輸。 總結了一下 序