原创 完蛋,公司被一條 update 語句幹趴了!

大家好,我是小林。 昨晚在羣划水的時候,看到有位讀者說了這麼一件事。 在這裏插入圖片描述 大概就是,在線上執行一條 update 語句修改數據庫數據的時候,where 條件沒有帶上索引,導致業務直接崩了,被老闆教訓了一波 這次我們就來看看

原创 又被鵝廠問懵逼了!

大家好,我是小林。 收到個讀者的問題,他在面試鵝廠的時候,被搞懵了,因爲面試官問了他這麼一個網絡問題: 不得不說,鵝廠真的很喜歡問網絡問題,而且愛問異常情況下的網絡問題,之前也有篇另外一個讀者面試鵝廠的網絡問題:「被鵝廠面怕了!」。  

原创 面試官:MySQL 有哪些鎖??

大家好,我是小林。 這次,來說說 MySQL 的鎖,主要是 Q&A 的形式,看起來會比較輕鬆。 不多 BB 了,發車! 在 MySQL 裏,根據加鎖的範圍,可以分爲全局鎖、表級鎖和行鎖三類。 全局鎖 全局鎖是怎麼用的? 要使用全局鎖

原创 計算機科班生學計算機組成原理的意義何在呢?

大家好,我是小林。 很早之前分享過我學計算機網絡和操作系統的心得,詳見:怎麼學操作系統和計算機網絡呀? 期間一直有不少讀者問計算機組成原理怎麼學,大部分人覺得這個學科跟硬件有關係就非常怕。 計算組成原理確實是分爲兩個方向,一個是硬件電路的

原创 TCP 纔不傻!

大家好,我是小林。 之前收到個讀者的問題,對於 TCP 三次握手和四次揮手的一些疑問: 第一次握手,如果客戶端發送的SYN一直都傳不到被服務器,那麼客戶端是一直重發SYN到永久嗎?客戶端停止重發SYN的時機是什麼? 第三次握手,如

原创 被問懵了:一個進程最多可以創建多少個線程?

大家好,我是小林。 昨天有位讀者問了我這麼個問題: 大致意思就是,他看了一個面經,說虛擬內存是 2G 大小,然後他看了我的圖解系統 PDF 裏說虛擬內存是 4G,然後他就懵逼了。 其實他看這個面經很有問題,沒有說明是什麼操作系統,以及是

原创 TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一個東西嗎?

大家好,我是小林。 之前有讀者問了我這麼個問題: TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一個東西嗎? 這是個好問題,應該有不少人都會搞混,因爲這兩個東西看上去太像了,很容易誤以爲是同一個東西。 事實上,

原创 圖解 Redis | 差點崩潰了,還好有主從複製

大家好,我是小林哥,又來圖解 Redis 啦。 我在前兩篇已經給大家圖解了 AOF 和 RDB,這兩個持久化技術保證了即使在服務器重啓的情況下也不會丟失數據(或少量損失)。 不過,由於數據都是存儲在一臺服務器上,如果出事就完犢子了,比如:

原创 圖解 Redis | 不多說了,這就是 RDB 快照

大家好,我是小林。 雖說 Redis 是內存數據庫。 但是它爲數據的持久化提供了兩個技術,分別是「 AOF 日誌和 RDB 快照」。 這兩種技術都會用各用一個日誌文件來記錄信息,但是記錄的內容是不同的。 AOF 文件的內容是操作命令;

原创 圖解 Redis | 不就是 AOF 持久化嘛

AOF 日誌 試想一下,如果 Redis 每執行一條寫操作命令,就把該命令以追加的方式寫入到一個文件裏,然後重啓 Redis 的時候,先去讀取這個文件裏的命令,並且執行它,這不就相當於恢復了緩存數據了嗎? 這種保存寫操作命令到日誌的持久

原创 看書的一點小建議!

大家好,我是小林。 我在博客園輸出了兩個圖解系列,分別是圖解網絡和圖解系統,每個系列都輸出了 15W 字 + 500 張圖,收到了很多小夥伴的認可和支持,也經常小夥伴跑來感激小林,說看了我的圖解,拿到了大廠的 Offer。 這次就跟大家分

原创 圖解高性能網絡架構:Reactor 和 Proactor

小林,來了。 這次就來圖解 Reactor 和 Proactor 這兩個高性能網絡模式。 別小看這兩個東西,特別是 Reactor 模式,市面上常見的開源軟件很多都採用了這個方案,比如 Redis、Nginx、Netty 等等,所以學好這

原创 面試官:什麼是死鎖?怎麼排查死鎖?怎麼避免死鎖?

突然發現我的圖解系統缺了「死鎖」的內容,這就來補下。 在面試過程中,死鎖也是高頻的考點,因爲如果線上環境真多發生了死鎖,那真的出大事了。 這次,我們就來系統地聊聊死鎖的問題。 死鎖的概念; 模擬死鎖問題的產生; 利用工具排查死鎖問題;

原创 HTTP/1.1 有點慢,我想優化下!

問你一句:「你知道 HTTP/1.1 該如何優化嗎?」 我想你第一時間想到的是,使用 KeepAlive 將 HTTP/1.1 從短連接改成長鏈接。 這個確實是一個優化的手段,它是從底層的傳輸層這一方向入手的,通過減少 TCP 連接建立和

原创 Linux 內核和 Windows 內核有什麼區別?

Windows 和 Linux 可以說是我們比較常見的兩款操作系統的。 Windows 基本佔領了電腦時代的市場,商業上取得了很大成就,但是它並不開源,所以要想接觸源碼得加入 Windows 的開發團隊中。 對於服務器使用的操作系統基本上