原创 54 | 理解 Disruptor(上):帶你體會 CPU 高速緩存的風馳電掣

54 | 理解 Disruptor(上):帶你體會 CPU 高速緩存的風馳電掣 堅持到底就是勝利,終於我們一起來到了專欄的最後一個主題。讓我一起帶你來看一看,CPU 到底能有多快。在接下來的兩講裏,我會帶你一起來看一個開源項目 D

原创 52 | 設計大型 DMP 系統(上):MongoDB 並不是什麼靈丹妙藥

52 | 設計大型 DMP 系統(上):MongoDB 並不是什麼靈丹妙藥 如果你一講一講跟到現在,那首先要恭喜你,馬上就看到勝利的曙光了。過去的 50 多講裏,我把計算機組成原理中的各個知識點,一點一點和你拆解了。對於其中的很多

原创 22 | 冒險和預測(一):hazard是“危”也是“機”

22 | 冒險和預測(一):hazard是“危”也是“機” 過去兩講,我爲你講解了流水線設計 CPU 所需要的基本概念。接下來,我們一起來看看,要想通過流水線設計來提升 CPU 的吞吐率,我們需要冒哪些風險。 任何一本講解 CPU

原创 41 | 理解內存(下):解析 TLB 和內存保護

41 | 理解內存(下):解析 TLB 和內存保護 機器指令裏面的內存地址都是虛擬內存地址。程序裏面的每一個進程,都有一個屬於自己的虛擬內存地址空間。我們可以通過地址轉換來獲得最終的實際物理地址。我們每一個指令都存放在內存裏面,每

原创 20 | 面向流水線的指令設計(上):一心多用的現代CPU

20 | 面向流水線的指令設計(上):一心多用的現代CPU 前面我們用了三講,用一個個的電路組合,製作出了一個完整功能的 CPU。這裏面一下子給你引入了三個“週期”的概念,分別是指令週期、機器週期(或者 CPU 週期)以及時鐘週期

原创 46 | SSD 硬盤(上):如何完成性能優化的 KPI?

46 | SSD 硬盤(上):如何完成性能優化的 KPI? 隨着 3D 垂直封裝技術和 QLC 技術的出現,今年的 “618”,SSD 硬盤的價格進一步大跳水,趁着這個機會,我把自己電腦上的倉庫盤,從 HDD 換成了 SSD 硬盤

原创 21 | 面向流水線的指令設計(下):奔騰4是怎麼失敗的?

21 | 面向流水線的指令設計(下):奔騰4是怎麼失敗的? 上一講,我給你初步介紹了 CPU 的流水線技術。乍看起來,流水線技術是一個提升性能的靈丹妙藥。它通過把一條指令的操作切分成更細的多個步驟,可以避免 CPU“浪費”。每一個

原创 44 | 理解 IO_WAIT:I/O 性能到底是怎麼回事兒?

44 | 理解 IO_WAIT:I/O 性能到底是怎麼回事兒? 在專欄一開始的時候,我和你說過,在計算機組成原理這門課裏面,很多設計的核心思路,都來源於性能。在前面講解 CPU 的時候,相信你已經有了切身的感受了。 大部分程序員開

原创 50 | 數據完整性(下):如何還原犯罪現場?

50 | 數據完整性(下):如何還原犯罪現場? 講完校驗碼之後,你現在應該知道,無論是奇偶校驗碼,還是 CRC 這樣的循環校驗碼,都只能告訴我們一個事情,就是你的數據出錯了。所以,校驗碼也被稱爲檢錯碼(Error Detectin

原创 45 | 機械硬盤:Google 早期用過的 “黑科技”

45 | 機械硬盤:Google 早期用過的 “黑科技” 在 1991 年,我剛接觸計算機的時候,很多計算機還沒有硬盤。整個操作系統都安裝在 5 寸或者 3.5 寸的軟盤裏。不過,很快大部分計算機都開始用上了直接安裝在主板上的機械

原创 40 | 理解內存(上):虛擬內存和內存保護是什麼?

40 | 理解內存(上):虛擬內存和內存保護是什麼? 我們在專欄一開始說過,計算機有五大組成部分,分別是:運算器、控制器、存儲器、輸入設備和輸出設備。如果說計算機最重要的組件,是承擔了運算器和控制器作用的 CPU,那內存就是我們第

原创 使用 Pyinstaller 打包包含 pyqt5 庫爬蟲程序總結

使用 Pyinstaller 打包包含 pyqt5 庫爬蟲程序總結 python 和 pyinstaller 的安裝不再贅述 使用 pyinstaller 的打包基本上使用一個 -F 參數即可,這樣就會打包出一個單個可以運行的 e

原创 Java 開發筆記 - wangEditor 編輯器圖片上傳

Java 開發筆記 - wangEditor 編輯器圖片上傳 前言 轉型 java 開發後入手的第一個項目,寫寫博客記錄一下 該項目使用的是 sping boot + mybatis plus + thymeleaf 項目架構

原创 53 | 設計大型 DMP 系統(下):SSD 拯救了所有的 DBA

53 | 設計大型 DMP 系統(下):SSD 拯救了所有的 DBA 上一講裏,根據 DMP 系統的各個應用場景,我們從抽象的原理層面,選擇了 AeroSpike 作爲 KV 數據庫,Kafka 作爲數據管道,Hadoop/Hiv

原创 43 | 輸入輸出設備:我們並不是只能用燈泡顯示 “0” 和 “1”

43 | 輸入輸出設備:我們並不是只能用燈泡顯示 “0” 和 “1” 我們在前面的章節搭建了最簡單的電路,在這裏面,計算機的輸入設備就是一個一個開關,輸出設備呢,是一個一個燈泡。的確,早期發展的時候,計算機的核心是做 “計算”。我