原创 超全的深度剖析內存系列——3.虛擬內存(二)

回憶下我們在上一節博客中提到的虛擬內存技術,操作系統使用它來爲每一個進程提供一個一致的,私有的虛擬地址空間。 從PC硬件的角度來看,內存主要分爲物理內存與磁盤上的文件。由於操作系統使用了虛擬內存技術來高效地管理內存,因此從操作系統的角度來

原创 讀書筆記——《深入理解Java虛擬機》系列之四種垃圾收集算法

垃圾收集算法一直都是影響GC工作效率的重要因素,在本篇博客中博主就與大家一起來學習一下幾種經典的垃圾收集算法。由於它的實現涉及到了大量的程序細節,博主在這裏就只用抽象的方式將垃圾收集算法的原理與大家分享啦。 1. 標記-清除算法 標記-清

原创 讀書筆記——《深入理解Java虛擬機》系列之Java內存區域與常見內存溢出異常

第一次讀這本書時,就被文中的一句話所折服: “Java與C++之間有一堵由內存動態分配和垃圾收集技術所圍成的‘高牆’,牆外面的人想進去,牆裏面的人卻想出來。” 的確,對於使用C++編程的程序員來說,他們肩負着對每一個對象所佔內存空間的維護

原创 數據結構專題——棧與隊列之棧的應用(一)

在自己實現了內存中順序存儲和鏈式存儲的棧結構之後,有的同學可能還是有一些疑問。既然都是線性表,我們爲什麼不直接使用順序表或鏈表,反而要創造出一種特殊的線性表呢? 其實答案很簡單,通過我們規定了特殊規則之後的線性表,能夠更輕鬆地完成很多工作

原创 超全的深度剖析內存系列——2.虛擬內存(一)

在上一節博客中,博主和同學們一起學習了一些內存相關的計算機基礎知識,本節博客我們繼續來學習物理內存管理相關的知識。 1. 計算機存儲系統層次 計算機的存儲器的最優設計目標應該是更大的容量,更快的速度和更低的價格。然而事實上容量,速度,價格

原创 算法練習專題——LeetCode系列之 ThreeSum

Question: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique trip

原创 超全的深度剖析內存系列——1.相關的計算機基礎知識

終於下定決心自己寫一個系列來總結一下關於內存的種種知識點。對於內存,很多同學都是持有敬而遠之的態度。在上大學的時候沒有打牢基礎,在平常也不關心內存的使用,反正只要寫出的代碼能夠運行,沒有報錯就萬事大吉了。 包括博主自己對內存也有很多清楚的

原创 數據結構專題——棧與隊列之順序棧及其Java實現

在前面的幾章博客中,我與同學們一起熟悉了線性表這個基礎的數據結構,今天我們要學習的這個數據結構和線性表有着緊密的聯繫,它就是——棧。 棧的定義很簡單: 棧(Stack)是限定僅在表尾進行插入和刪除操作的線性表。 我們一起來解讀一下棧的定義

原创 算法練習專題——LeetCode系列之 Two Sum

在這個系列中給大家分享一些平常見到的算法題,以及自己的答案。 Question: Given an array of integers, return indices of the two numbers such that they a

原创 數據結構專題——棧與隊列之鏈棧及其Java實現

在上一篇博客中,博主與大家學習了一個新的數據結構——棧。它是一個只被允許在棧頂進行插入與刪除元素的特殊線性表,是一種典型的LIFO的數據結構。在我們用數組的方式實現了順序存儲的順序棧之後,本章博客中我們就一起來嘗試實現一個鏈式存儲的棧吧。