原创 日誌一致性協議Raft

前言        數據一致性是分佈式服務的一大難題。假設我們能無成本的保證數據一致性,在分佈式環境中就可以使用無限擴容來分發流量。那麼數據一致性,何爲數據 ?往往日誌log是一應用的可靠性的保障,例如 mysql的binlog,

原创 JVM內存池

JVM內存池 根據jconsole工具提供,內存池大致可分爲 堆  年輕代(New area)    survivor space    eden space  老年代(old Gen 或者 tenuered area) 非堆

原创 Mac下編譯openjdk及調試

一、編譯環境 MacOS High Sierra 10.13.2 XCode 9.4.1(Command Line Tools) jdk版本:jdk7u71 網盤下載 或者通過官網下載 openjdk: jdk8u-dev

原创 openjdk1.8工程結構

關於makefile,請參考《gcc&makefile基礎》 目錄說明 openjdk源碼中有很多目錄,根據功能做了模塊化劃分,每個目錄實現其相應的功能。 每個目錄下的結構都差不多,分爲src(源碼)、make(makefi

原创 class文件和字節碼解析

通過《編譯原理》的相關學習,我們知道我們編寫的Java代碼最終會被翻譯成class文件。Class文件格式是JVM自己定義的用於表示Java類的二進制字節流規範,與操作系統本身無關,該文件格式正是Java代碼一次編譯,跨平臺運行的

原创 語義分析(二)

中間代碼的形式 逆波蘭式 《逆波蘭表達式&後綴表達式》 三元式和樹形 每個三元式由3部分組成:算符,運算對象1,運算對象2。 例如a= b * c + bd; (1)(,b,c) (2)(*,b,d) (3)(+,(1),(

原创 hotspot解釋器和JIT

通過《編譯原理》系列文章,我們可以創造出運行環境,然後根據程序的語義直接執行,也可能翻譯成中間代碼(機器碼,彙編碼)。這兩種方式分別被稱爲解釋執行和編譯執行。 JVM中的編譯器 在部分商用虛擬機中(如HotSpot),Java程序

原创 自頂向下語法分析LL(1)

自頂向下分析法就是從文法的開始符號出發,不斷建立直接推導,試圖構造一個最左推導序列,最終由它推導出與輸入符號串完全匹配(相同)的句子。 從語法樹的角度看,自頂向下分析法就是以開始符號爲根節點,試圖向下構造一棵語法樹,其端末結符號

原创 語義分析(一)

語義分析一般是和語法分析組合在一起執行的,語法分析完成前一步語法樹分析的構建(調用某個產生式完成一步規約,形成當前的樹節點),然後語義分析便接着調用相應產生式配備的語義動作或子程序,完成屬性文法所要求的語義動作(比如類型轉換或生成

原创 語義分析(三)

Antlr4是一款開源的語法分析器生成工具,能夠根據語法規則文件生成對應的語法分析器。現在很多流行的應用和開源項目裏都有使用,比如Hadoop、Hive以及Pig等都在使用ANTLR來做語法分析。 本文直接引用antlr4工具

原创 軟件工程的理解

前言 大學老師說:軟件工程是個很重要的課 以程序員的我,表示並沒有什麼卵用。直到有一天,我明白了原來軟件工程講的是讓我怎麼開展一件事情。 軟件工程 軟件工程 事件 產物 問題的定義 對系統的實際用戶和使用部門負責

原创 mysql的複製及備份

概述        MySQL整體來看,其實就有兩塊:一塊是Server層,它主要做的是MySQL功能層面的事情;還有一塊是引擎層,負責存儲相關的具體事宜。InnoDB引擎特有的日誌是redo log,而Server層的日誌稱爲b

原创 Sentinel限流框架

前言 2020年,由於疫情大爆發。A所在的圖書館接到了上面的任務:1天內不允許超過50人同進在館內看書,外省人禁入內。如果你是此圖書管理員,你會怎麼做? 數據收集(訪客的身份證,來自哪) 數據統計(對一天內的訪客總數統計,兒童館

原创 Jetty源碼分析(三)---Connector組件

jetty的請求過程 ServerConnector.doStart調用open打開ServerSocketChannel public void open() throws IOException { //打

原创 針對開放平臺的架構理解

背景 隨着阿理,拼多多,微信…等大型平臺開放API,提供接口給第三方接入。大量依賴開放平臺的應用蜂擁而至。但是,開放平臺API不是無償的,是要錢的,即可定位爲資源。所以,如何管理開放平臺的API就成了一門學問。 平臺定位 要做好