自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 以太坊虚拟机介绍

以太坊虚拟机介绍近期打算写一些关于以太坊虚拟机(后面简称EVM)的文章,这是其中的第一篇。这一系列文章想站在EVM指令集的角度,带领读者逐步理解EVM工作原理,进而理解以太坊区块链技术细节。由于网上介绍以太坊的文章也比较多,所以这一系列文章将最大程度减少不必要的废话,直接提供文章想要表达的信息。EVM基本信息编程语言虚拟机一般有两种类型,基于栈,或者基于寄存器。大部分我们所熟知的语...

2018-08-20 09:16:41 5819

原创 以太坊虚拟机介绍4-按位运算指令

以太坊虚拟机按位运算指令EVM定义了8条按位运算指令,分别是: * AND,按位与,操作码0x16 * OR,按位或,操作码0x17 * XOR,按位异或,操作码0x18 * NOT,按位取反,操作码0x19 * BYTE,取第n个字节,操作码0x1A * SHL,左移,操作码0x1B * SHR,逻辑右移,操作码0x1C * SAR,算术右移,操作码0x1D下面是按位运算...

2018-08-27 15:00:32 1456

原创 以太坊虚拟机介绍3-算术运算指令

以太坊虚拟机算术运算指令EVM总共定义了11条算术运算指令,分别是ADD(加法指令,操作码0x01)、MUL(乘法指令,操作码0x02)、SUB(减法指令,操作码0x03)、DIV(无符号整除指令,操作码0x04)、SDIV(有符号整除指令,操作码0x05)、MOD(有符号取模指令,操作码0x06)、SMOD(无符号取模指令,操作码0x07)、ADDMOD指令(操作码0x08)、MULMOD指...

2018-08-22 23:10:56 1900

原创 以太坊虚拟机介绍2-栈操作指令

以太坊虚拟机栈操作指令本文介绍POP指令、PUSHx系列指令、DUPx系列指令、SWAPx系列指令。这些指令只对EVM栈进行单纯的操作,它们的操作码分布如下图所示:POP指令POP指令(操作码0x50)从栈顶弹出一个元素。下面是POP指令的操作示意图(白色表示元素即将发生变动):PUSHx指令PUSH系列指令把紧跟在指令后面的N(1 ~ 32)字节元素推入栈顶。PUSH...

2018-08-21 07:32:00 2450 1

原创 Java9之class文件格式变动

Java9之class文件格式变动Java9已经于2017年09月27日发布。Java9引入了很多新特性,其中最重要的特性无疑就是模块化了。为了支持模块化,Java从方方面面都进行了改进,包括class文件格式。网上已经有很多文章介绍Java9模块化,因此本文并不打算成为另一篇模块化入门文章。本文主要介绍Java9相较Java8在class文件格式方面的变动。测试代码本文将基于模块mymod进行讨论

2017-10-19 16:57:55 1559 1

原创 Go语言小知识之append()函数

内置的append()函数,给slice追加一个item。如果这个slice还有空闲容量(cap(s) > len(s)),则直接进行追加。否则,先对slice进行扩容,然后再进行追加。上述这些在append()函数的文档里有详细的说明,但是文档并没有说扩容是如何进行的,所以下面用一段代码做一个试验:package mainfunc main() { s := []int{}; printl

2017-04-13 17:11:20 10945 1

原创 Go语言小知识之map遍历

1Go语言里的map,是不保证遍历顺序的(这一点很好理解)。甚至同样内容的map,两次遍历的顺序,也可能不一样。下面是一个例子:m := map[string]int{"a1": 1,"b2": 10,"c3": 2,}for k, v := range m {fmt.Printf("%s=%d;", k, v)} // c3=2;a1=1;b2=10;println()for k, v :=

2017-04-13 16:38:43 39098 6

原创 图解Protobuf编码

图解Protobuf编码Protobuf是Google发布的消息序列化工具。Protobuf定义了消息描述语法(proto语法)和消息编码格式,并且提供了主流语言的代码生成器(protoc)。本文仅讨论Protobuf消息编码格式,并且假定读者已经熟悉Protobuf消息描述语法(proto2或者proto3)。基本编码规则Protobuf消息由字段(field)构成,每个字段有其规则(rule)、

2016-11-21 13:53:13 23137 4

原创 探索Scala(8)-- 关键字

本文比较一下Java和Scala语言的关键字

2014-11-04 18:39:06 10589 2

原创 探索Scala(7)-- 字段

本文讨论一下在Scala语言里,字段(Fields)是如何实现的

2014-11-03 15:04:19 2108

原创 探索Scala(6)-- Tuples

本文讨论一下Tuple的用法和实现方式

2014-10-31 15:36:59 6126 1

原创 探索Scala(5)-- 基本类型

文本讨论一下Scala语言基本类型的实现方式

2014-10-30 13:47:03 9265

原创 探索Scala(4)-- Case Classes

本文简单探讨一下Scala语言Case Class的实现机制

2014-10-27 09:55:36 7527 2

原创 探索Scala(3)-- 单例对象

探索Scala语言单例对象

2014-10-24 16:13:16 4868

原创 探索Scala(2)-- Traits

本文记录我对Scala语言Traits的一些理解。

2014-10-22 20:04:41 2364 1

原创 Akka边学边写(4)-- MiniRPG

前面几篇文章用Akka写了HelloWorld和EchoServer,为了更进一步学习Akka,本文将会实现一个很小的RPG游戏服务器:MiniRPG。

2014-10-21 11:29:51 3623 2

原创 Akka边学边写(3)-- ByteString介绍

本文简单介绍一下ByteString的设计和使用

2014-10-16 18:43:21 9796 1

原创 探索Scala(1)-- 运算符重载

Scala语言运算符重载完全是语法层面的小把戏,本文记录我对Scala语言运算符重载的一些理解

2014-10-14 14:39:44 6624 1

原创 Akka边学边写(2)-- Echo Server

Akka版ECHO服务器

2014-10-13 11:36:51 4655 1

原创 Akka边学边写(1)-- Hello, World!

Akka Hello World

2014-10-10 16:42:01 9219 6

原创 Java8学习笔记(5) -- 写给Guava使用者

本文举了几个例子,用代码来说明原先需要借助Guava来实现的功能,如何用Java7或Java8实现。

2014-09-23 17:39:53 10157 1

原创 图说我对Unicode的几点理解

图说我对Unicode的几点理解

2014-08-25 16:38:32 6849 4

原创 Java class文件分析工具 -- Classpy

功能强大的图形化class文件分析工具!

2014-08-20 18:48:44 10585 1

原创 Java8学习笔记(4) -- Lambda表达式实现方式

简要介绍Java8底层是如何实现Lambda表达式的

2014-08-11 18:14:59 5599 2

原创 Java8学习笔记(3) -- InvokeDynamic指令在Groovy里的使用

上一篇文章以Java8的Lambda表达式为切入点,讨论了

2014-08-06 18:24:34 4122

原创 Java8学习笔记(2) -- InvokeDynamic指令

详细分析invokedynamic指令

2014-08-06 12:57:12 16343 8

原创 Java8学习笔记(1) -- 从函数式接口说起

Java8 Lambda表达式的快速入门指南

2014-08-03 09:51:29 13168 4

原创 GSON使用笔记(3) -- 如何反序列化出List

通过3个问题来讨论如何使用GSON把JSON反序列化为List

2014-06-26 17:57:06 12938 2

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

本篇文章很简单,就是把下面这段Gradle脚本打回原形:version = 1.0Groovy语法糖Java程序员对JavaBeans和Getter/Setter方法肯定不陌生,所以就不过多介绍了。虽然现代的IDE都提供了快捷方式,可以很方便的给字段生成Getter和Setter方法,但我还是很讨厌他们。还好,有Groovy的语法糖在手,就可以跟Getter/Setter方法说再见了!

2014-06-13 16:56:58 2379 3

原创 看懂Gradle脚本(5)- 跟Gradle学领域驱动设计

领域驱动设计(DDD)如果第一次听说领域驱动设计,那么赶紧买一本,或借一本Eric Evans写的那么同名经典书补一下课。Gradle是一个自动化build工具,所以Gradle面对的领域就是自动化构建这一领域。Gradle是按照DDD的思想设计和开发的,所以自动化构建领域里的大部分概念,在Gradle的源代码里都有一个接口或类与之对应。本文介绍对Gradle新手来说最重要的三个领域对象:Pr

2014-06-12 16:49:31 3364

原创 看懂Gradle脚本(4)- Groovy语法之运算符重载

继续讨论Task定义回顾一下前一篇文章的例子:task myTask { doLast { println 'hello world!' } }这段脚本定义了一个名为myTask的任务,并且通过一个闭包对这个任务进行了配置,给它加了一个Action。doLast是Task的一个方法。因为这种情况很常见,所以Gradle提供了一种更

2014-06-10 18:52:46 5077

原创 看懂Gradle脚本(3)- Groovy AST转换

延续上一篇文章上篇文章末尾有一段脚本,定义了一个Task:task 'myTask' { doLast { println 'hello world!' } } 我们已经知道,这段脚本其实是调用Project的task方法,并且传入两个参数:一个是Task的名字,另外一个是闭包,用来配置Task(在这段脚本中,给Task添加了一个A

2014-06-10 15:00:34 5189

原创 看懂Gradle脚本(2)- Groovy语言的闭包语法

本篇文章讨论下面这一小段Gradle脚本:repositories { mavenCentral()}闭包字面量闭包字面量看起来像Java里的代码块:用一对儿花括号包起来。前面讨论过,方法调用的圆括号可以省略,补上圆括号之后,脚本看起来是这样:repositories({ // <-- mavenCentral()})如果闭包是方法的最后一个

2014-06-10 09:04:54 6449

原创 看懂Gradle脚本(1)- Groovy语言的Map语法糖

这一系列文章是写给刚开始使用Gradle,并且对Groovy语法不是特别了解的Java程序员看的。本篇文章的目标是解释清楚下面这行Gradle脚本:apply plugin: 'java'行尾的分号是可选的用过JavaScript语言的人对这个语法糖应该比较熟悉,下面是补上分号后的脚本:apply plugin: 'java';Map字面量(Literal)Java语言

2014-06-09 17:57:30 9563 6

原创 GSON使用笔记(2) -- 反序列化时GSON如何创建对象实例

反序列化时GSON如何创建对象实例

2014-03-19 14:48:34 4948

原创 GSON使用笔记(1) -- 序列化时排除字段的几种方式

GSON是Google发布的JSON序列化/反序列化工具,非常容易使用。本文简要讨论在使用GSON将Java对象转成JSON时,如何排除某些字段。

2014-03-18 18:14:08 24126 2

原创 Netty4学习笔记(9)-- Channel状态转换

分析NioSocketChannel如何进入open、registered和active状态

2014-01-08 10:37:49 28025 3

原创 Netty4学习笔记(8)-- Channel接口

Channel是Netty4最核心的接口之一,拥有将近40个方法和一个内部接口。本文将对Channel接口的众多方法做一个归类和总结,为进一步研究Channel实现做准备。

2014-01-07 15:17:05 8762

原创 Netty4学习笔记(7)-- AttributeMap

Netty4 AttributeMap接口介绍

2014-01-02 11:42:18 21607 6

原创 Netty4学习笔记(6)-- NioEventLoop继承层次结构

分析NioEventLoop继承层次结构

2013-12-31 15:13:02 6471

MyGroovyConsole.zip

MyGroovyConsole.zip 代码 http://blog.csdn.net/spiderdog/article/details/11982557

2013-09-25

Gritty Web Framework

Gritty Web Framework zip包

2013-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除