原创 關於密碼學那些事

編碼表知識 爲什麼需要編碼表呢?在計算機中無論任何數據的傳輸、存儲、持久化,都是以二進制的形式體現的,那麼當我存一個字符的時候,計算機需要持久化到硬盤,或者保存在內存中。這個時候保存在內存、硬盤的數據顯然也是二進制的。那麼當我需要從硬盤、內

原创 最簡單的動態數據結構 - 鏈表

鏈表是什麼? 上幾篇文章中,分別介紹了動態數組,棧和隊列,其中都是通過resize的方法進行動態擴容,從而實現了動態的數據結構,不過這種方法稱爲僞動態。真正的動態數據結構還要從鏈表說起,鏈表是真正的動態數據結構,一個動態數據結構不需要處理固

原创 JVM-垃圾回收

帶着三個問題看垃圾回收 1.回收誰2.什麼時候回收3.怎麼回收 1.回收誰 引用計數法:給對象中添加一個引用計數器,每當有對象引用它時,計數器就加1,引用失效就減1,計數器到0的時候代表不能使用該對象,不能解決循環引用的問題 可達性分析:通

原创 JVM-內存模型

JVM內存模型 程序計數器: 較小的內存空間, 線程所執行的字節碼的行號指示器,線程私有,不會拋出內存溢出異常虛擬機棧: 方法在執行的同時都會創建一個棧幀(棧楨大小缺省爲1M,可用參數 –Xss調整大小,例如-Xss256k),進行壓棧,執

原创 併發編程-線程基礎

進程和線程的區別學習線程之前,首先要知道什麼是進程。簡單的理解,一個應用程序就是一個進程,比如開啓一個QQ,微信,騰訊視頻。線程可以說是進程的執行單元,一條執行路徑。線程被包含在進程中,一個進程至少有一個線程,但可以有多個線程。 爲什麼用多