原创 GSON使用筆記(2) -- 反序列化時GSON如何創建對象實例

從一個問題開始 假設有這麼一個類: class MyObj { public final int x; public MyObj(int x) {

原创 看懂Gradle腳本(6)- Hello Groovy, Goodbye Getters&Setters

本篇文章很簡單,就是把下面這段Gradle腳本打回原形: version = 1.0 Groovy語法糖 Java程序員對JavaBeans和Getter/Setter方法肯定不陌生,所以就不過多介紹了。雖然現代的IDE都提供了快捷方式,

原创 看懂Gradle腳本(2)- Groovy語言的閉包語法

本篇文章討論下面這一小段Gradle腳本: repositories { mavenCentral() } 閉包字面量 閉包字面量看起來像Java裏的代碼塊:用一對兒花括號包起來。前面討論過,方法調用的圓括號可以省略,補上圓括

原创 Java8學習筆記(2) -- InvokeDynamic指令

爲了更好的支持動態類型語言,Java7通過JSR292給JVM增加了一條新的字節碼指令:invokedynamic。之後,JVM上面的一些動態類型語言,比如Groovy(2.0+)和JRuby(1.7.0+)都開始支持invokedyna

原创 以太坊虛擬機介紹5-比較操作指令

以太坊虛擬機比較操作指令 EVM定義了6條比較操作指令,見下表: 比較操作指令 操作碼 說明 LT 0x10 無符號小於比較 GT 0x11 無符號大於比較 SLT 0x12 有符號小於比較 SGT 0x13 有符

原创 以太坊虛擬機介紹4-按位運算指令

以太坊虛擬機按位運算指令 EVM定義了8條按位運算指令,見下表: 按位運算指令 操作碼 說明 AND 0x16 按位與 OR 0x17 按位或 XOR 0x18 按位異或 NOT 0x19 按位取反 BYTE

原创 以太坊虛擬機介紹3-算術運算指令

以太坊虛擬機算術運算指令 EVM總共定義了11條算術運算指令,見下表: 算術運算指令 操作碼 說明 ADD 0x01 加法運算 MUL 0x02 乘法運算 SUB 0x03 減法運算 DIV 0x04 無符號整除運

原创 Go語言小知識之map遍歷

1 遍歷順序 Go語言裏的map,是不保證遍歷順序的(這一點很好理解)。甚至同樣內容的map,兩次遍歷的順序,也可能不一樣。下面是一個例子: m := map[string]int{"a1": 1,"b2": 10,"c3": 2,} f

原创 以太坊虛擬機入門2-棧操作指令

以太坊虛擬機棧操作指令 上一篇文章對EVM和它的指令集進行了簡單介紹,本文將介紹POP指令、PUSHx系列指令、DUPx系列指令、SWAPx系列指令。這些指令只對EVM棧進行單純的操作,它們的操作碼分佈如下圖所示: POP指令 POP指

原创 Java9之class文件格式變動

Java9之class文件格式變動 Java9已經於2017年09月27日發佈。Java9引入了很多新特性,其中最重要的特性,或者說最大的變化,無疑就是模塊化了。爲了支持模塊化,Java從方方面面都進行了改進,包括class文件格式。已經

原创 以太坊虛擬機入門1-介紹

以太坊虛擬機介紹 近期打算寫一些關於以太坊虛擬機(後面簡稱EVM)的文章,這是其中的第一篇。這一系列文章想站在EVM指令集的角度,帶領讀者逐步理解EVM工作原理,進而理解以太坊區塊鏈技術細節。由於網上介紹以太坊的文章也比較多,所以這一系列

原创 Go語言小知識之append()函數

內置的append()函數,給slice追加一個item。如果這個slice還有空閒容量(cap(s) > len(s)),則直接進行追加。否則,先對slice進行擴容,然後再進行追加。上述這些在append()函數的文檔裏有詳細的說明,

原创 探索Scala(6)-- Tuples

本文討論一下Tuple的用法和實現方式 Unit Scala語言沒有void關鍵字,取而代之的,是Unit概念(和對象)。Scala比Java更加OO,這也算是其中一個方面。從Scala語言的角度來講,Unit和Tuple並沒有太大的聯繫

原创 Akka邊學邊寫(2)-- Echo Server

EchoServer 上篇文章裏,我們用Akka寫了一個簡單的HelloWorld例子,對Akka(以及Actor模式)有了初步的認識。本文將用Akka寫一個EchoServer,看看在Actor的世界裏,如何使用TCP協議。 Gith

原创 圖解Protobuf編碼

圖解Protobuf編碼 Protobuf是Google發佈的消息序列化工具。Protobuf定義了消息描述語法(proto語法)和消息編碼格式,並且提供了主流語言的代碼生成器(protoc)。本文僅討論Protobuf消息編碼格式,並且