原创 【反向代理服務器】Nginx的基礎架構

在進入Nginx的結構分析之前,首先介紹一下一個良好的Web服務器需要考慮哪些因素。這樣更加有利於我們深入理解Nginx優秀的架構設計。 1 Web服務器設計中的關鍵約束 1.1 性能 1 網絡性能 是指在不同負載下,Web服

原创 【操作系統】文件系統(二):文件系統的管理及性能

技術是開源的,知識是共享的。 本篇主要介紹文件系統的調度算法及性能優化,關於文件系統的結構請參考上一篇【操作系統】文件系統(一):文件的存儲介質及結構 1 文件操作的實現 1.1 創建文件和打開文件 創建文件:建立系統與文件的

原创 【敲開BAT的大門】系列:避免緩存擊穿的利器之Bloom Filter

引言 在開發或者面試過程中,時常遇到過海量數據需要查詢,秒殺時緩存擊穿怎麼避免等等這樣的問題呢?掌握好本篇介紹的知識點將有助於你在之後的工作、面試中策馬奔騰。 Bloom Filter概念 Bloom Filter,即傳說中的布隆

原创 【網絡協議】DNS域名解析的詳細過程

1 問題來源 今天同事因爲連接不上網絡,疫情期間,公司IT又不方便聯繫,所以請我幫看看原因。問題排查倒是挺簡單,用同事電腦在命令行出窗口輸入ping 220.181.38.149(該IP訪問的是百度首頁網址),可以收到正常響應。但

原创 Java併發編程(一):瞭解Thread

1 引言 線程是進程中可獨立執行的最小單位,也是CPU資源分配的基本單位。 線程的四個基本屬性: 屬性 描述 編號id 線程的唯一標識 名稱 線程的名字,默認“Thread-編號id”,可自定義 類別 分

原创 Java併發編程(二):LockSupport應用及原理分析

1 引言 上一篇簡單介紹了Java中的Thread機制,附傳送門↓: Java併發編程(一):瞭解Thread 我們知道,可以通過wait()讓線程等待,通過notify()喚醒線程,但使用wait(),notify()來實現等待

原创 【操作系統】同步互斥機制(一):同步互斥機制及信號量的深入理解

1 進程的併發執行 1.1 問題的提出 併發是所有問題產生的原因, 也是操作系統設計的基礎。 1.2 進程的特徵 表1-1 進程的特徵 進程的特徵 說明 併發 進程的執行是間斷性的,相對執行速度不可預測 共享 進

原创 【Java集合】系列一:詳解ArrayList的底層原理(本篇源碼基於Java11)

引言 ArrayList集合類在面試、開發中飽受關注,用起來也是真香。本篇文章有針對性的歸納整理ArrayList的常見問題,如有遺漏,歡迎留言或評論。 面試開始 小夥子,說下ArrayList的底層數據結構吧? ArrayL

原创 【操作系統】文件系統(一):文件的存儲介質及結構

技術是開源的,知識是共享的。 1 文件與文件系統 1.1 基本概念 文件實際上是對磁盤的抽象,是指一組帶標識(即文件名)的、在邏輯上有完整意義的信息項的序列。 信息項:是構成文件內容的基本單位(單個或多個字節),各信息項之間

原创 【Dubbo】深入理解Apache Dubbo(二):開發第一個Dubbo應用程序

1. 引言 本篇側重用代碼說明Dubbo應用程序的開發及使用,通過一個簡單的示例演示Dubbo應用。讀者要是對Dubbo框架的基本概念還有模糊,可以先閱讀 【Dubbo】深入理解Apache Dubbo(一):帶你走近高性能RPC

原创 【操作系統】CPU(處理器)調度

1 概念 CPU調度是控制、協調進程對CPU的競爭,即按照一定的調度算法從就緒隊列中選擇一個進程把CPU的使用權交給該進程。如果沒有就緒進程,則操作系統會安排一個系統空閒進程或idle進程。 表1-1 CPU調度需要解決的三個問題

原创 【操作系統】同步互斥機制(二):管程與進程間通信機制(IPC)

1 管程 1.1 管程的定義 管程(Monitor)是關於共享資源的數據結構及在其上操作的一組過程組成。進程只能通過調用管程中的過程來間接的訪問管程中的數據結構。 1.2 管程需要解決的兩個基本問題 1.2.1 互斥 管程是互斥進

原创 深入理解MySQL中的事務【超詳細配圖版】

文章目錄1 引言2 事務的特性2.1 原子性2.2 持久性2.3 隔離性2.3.1 第一類丟失更新2.3.2 髒讀2.3.3 幻讀2.3.4 不可重複讀2.3.5 第二類丟失更新3 Repeatable Read4 小結點點關注,

原创 【Lombok】Java開發神器Lombok使用詳解

引言 開發中經常要創建一些實體類並要添加getter/setter方法、構造方法、toString方法等重複性工作,雖然IDEA有快捷鍵ALT+INSERT快速實現,但我們想通過某種方式可以自動生成。這個時候就需要用到本篇的主角—

原创 Java併發編程(三):CountDownLatch(閉鎖)原理及最佳實踐

1 引言 在實際開發中,經常遇到這樣一種場景:有一組線程,每個線程去持行自己的任務,現在想實現等所有線程都持行完畢後,再向下執行代碼。比如我們開啓一組線程去同步服務器的數據,點贊記錄,下載記錄,收藏記錄等等用戶信息,所有數據同步完