原创 Java多線程和網絡編程入門學習

多線程 Java中多線程的實現有兩種方式,一種是繼承extends Thread類,另一種是實現Runnable接口 而Thread類實現了Runnable接口,他們之間存在多態性,在Java中只有單繼承,而允許實現多個接口。所以

原创 微機原理學習--筆記微處理器的內部結構

8086/8088內部結構 從功能上可以分爲總線接口單元BIU和內部執行單元EU。 總線接口單元 負責完成CPU和存儲器以及IO接口之間的數據傳送。 總線接口單元內有4個16位段寄存器,即代碼寄存器CS,數據段寄存器DS,堆棧段

原创 加速頁表過程管理

虛擬內存的思想:每個進程都擁有自己的虛擬地址空間,這個空間被分割成多個塊,每個塊被稱爲一個頁或者頁面,每一頁有連續的地址範圍。這些也被映射到物理內存,但並不是所有的頁面都在內存中,才能運行程序的,當程序引用到一部分在物理內存中地址

原创 虛擬內存原理

虛擬內存:爲了更加高效並且少出錯,現代操作系統提供了一種對主存的抽象概念,叫做虛擬內存。虛擬內存是硬件異常,硬件地址翻譯,主存,磁盤文件和內核軟件的完美交互,他爲每個進程提供了一個大的,一致和私有的地址空間,虛擬內存提供三個能力:

原创 c++ 函數對象的使用

函數對象就是像使用函數一樣適用對象。 比如:一個比較大小的類 #include <iostream> using namespace std ; class A{

原创 阿拉伯轉羅馬數字

羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。 字符 數值 I 1 V 5 X 10 L 50

原创 LevelDb源碼之跳躍列表學習及C++11實現

跳躍列表是一種數據結構。他允許快速查詢一個有序連續元素的數據鏈表。平均查找和插入的事件複雜度爲O(log(n)),優於普通鏈表O(n)。快速查詢是通過維護一個多層次的鏈表,並且每一層鏈表中的元素是前一層鏈表元素的子集。 具體描述:

原创 c++11實現紅黑樹

紅黑樹實現過程難度主要集中在刪除節點上,考慮的情況比較多!下面是刪除節點的再次總結!上次的總結了一部分,現在我將它補充完整! 刪除節點的後繼節點是父親節點的左子樹:總共四種情況 當刪除節點的後繼節點是父親的右子樹:

原创 VFS剖析

VFS:爲各種文件系統提供了一個通用的接口,它使得上層進程在操作各種文件系統的時候可以使用同一組系統調用,但是系統調用在內核中可以根據不同的文件系統執行不同的操作。在一個Linux操作系統中,存在多種的文件系統,例如ext2,ex

原创 紅黑樹(插入和刪除原理)

二叉查找樹(BST)是一種父親節點的值大於左孩子的值,而小於右孩子的值,查找效率是O(logn),但是在插入方面,可能在某些情況下使整個樹退化成鏈表。所以爲了進一步實現優化,有了紅黑樹的數據結構。 紅黑樹的特點: (1)在父親節點

原创 創建型模式和結構型模式總結

創建型模式:主要實現單實例模式,簡單工廠模式,工廠方法模式 結構型模式:主要實現適配器模式,橋接模式 創建型模式: 對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創建和對象的使用分離。爲了軟件的結構更加清晰,外界模塊中的對象只

原创 一個文本管控客戶端的實現

【管控客戶端第2版】 項目概況 背景 項目來源:2019 深度軟件開發大賽 項目名稱:文件管控客戶端 運行環境 deepin Linux x86_64 系統,理論上也兼容其他 x86_64 Linux 系統 條

原创 編譯原理LL(1)語法分析器實現

廢話不多說了,開源代碼!歡迎star和fork! LL(1)語法分析器的實現 要實現LL1文法,根據個人經驗總結,需要以下步驟: 我沒有實現間接左遞歸的消除,所以處理不了間接左遞歸文法。 下面我們來說一下實現過程。 輸

原创 c++進程池實現回射服務器

進程池相對於線程池就沒那麼麻煩,沒有條件變量,沒有互斥鎖,這些東西!比較簡單!參考網上資料,實現一個回射服務器,儘管看着人家實現思路寫的,還是出現很多問題,太菜了!確實太菜了!就當學習了gdb多進程調試,哈哈!有關進程調試的文章這

原创 鍵值數據庫的設計實現總結(SDS)

寫這個數據庫也已經有段時間了,在我心中此項目的第一個版本算是完成了,所以做一下小結,更多的功能以後再繼續迭代即可! 1. 引言 1.1 編寫目的 學習搭建rpc框架,自己閱讀了部分redis實現源碼,想實現一個加深印象,將學習的