博客 / 列表

大數據王小皮 - 【編譯原理】Antlr 入門使用

前面文章我們學習了編譯器前端的詞法和語法分析工具,本篇我們來看看如何藉助 Antlr 工具,快速生成詞法和語法分析代碼。 一、安裝 mac 環境: 1)安裝 brew install antlr 2)配置 classpath (把 Antlr 的 JAR 文件設置到 CLASSPATH 環境變量中,以便順利編譯所生成的 Java 源代碼。) vi ~/.bash_profile #

編譯原理

大數據王小皮 - 【編譯原理】手工打造語法分析器

重點: 語法分析的原理 遞歸下降算法(Recursive Descent Parsing) 上下文無關文法(Context-free Grammar,CFG) 關鍵點: 左遞歸問題 深度遍歷求值 - 後續遍歷 上一篇「詞法分析器」將字符串拆分為了一個一個的 token。 本篇我們將 token 變成語法樹。 一、遞歸下降算法 還是這個例子 int age = 45 我

編譯原理

大數據王小皮 - 【編譯原理】手工打造詞法分析器

難點: 如何拆詞?如何定義分隔符? 匹配的優先級是什麼? 關鍵點: 有限自動機 元素拆分 解析 age = 45 為了入門字詞是如何拆分識別的,我們舉一個最簡單的例子age = 45 只有三種類型:標識符(age)、大於號(GE)、數字字面量(IntLiteral) 使用空格分隔不同的元素 思路: 從左到右依次讀取字符串 使用有限自動機,根據讀到的字符進行狀態轉換,狀

編譯原理

大數據王小皮 - Mac 安裝多版本 protoc / protobuf

一、單版本安裝 # 1) brew安裝 brew install protobuf # 查看安裝目錄 $ which protoc /opt/homebrew/bin/protoc # 2) 配置環境變量 vim ~/.zshrc # protoc (for hadoop) export PROTOC="/opt/homebrew/bin/protoc" source ~/.zsh

protobuf , macos

大數據王小皮 - 【Java基礎】HashMap 源碼探究

經常使用 Java 的 HashMap,但你有了解過其內部的實現原理麼?數據是如何存儲的?哈希衝突是如何處理的? 本篇文章將帶你深入源碼探究 HashMap 的實現原理。 文檔註釋 HashMap 是 Map 接口的實現類,實現了所有可選的操作,並且允許 null key 和 null value。(可以簡單的理解與 HashTable 功能相同,除了它是不同步的,以及支持空值。) 存

hashmap , 算法 , JAVA

大數據王小皮 - 【Java基礎】NIO 初步瞭解

NIO(Non-blocking I/O,在 Java 領域,也稱為 New I/O),是一種同步非阻塞的I/O模型,也是I/O多路複用的基礎。那和普通 IO 有什麼區別呢? 一、概述 NIO 是從 Java 1.4 版本開始引入的一個新的 IO API,NIO 支持面向緩衝區的、基於通道的 IO 操作。 原來的 IO 是阻塞式 IO,與 NIO 的對比: IO NI

JAVA , nio