提出了问题2017-11-01
发布了文章2017-06-08
OOP 对象的创建和拷贝 对象的初始化 多态的实现 内部类、匿名类、静态类 对象内存模型 上面内容均请参考以下文章: 谈谈Java的面向对象 运行时 异常 聊聊Java的异常机制及实现 泛型 聊聊Java的泛型及实现 注解 聊聊Java的注解及实现 反射 必读文章: Java反射的使用 ...
发布了文章2017-06-08
Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。Annotation(注解)是JDK5.0...
发布了文章2017-06-08
在一些传统的编程语言,如C语言中,并没有专门处理异常的机制,程序员通常用方法的特定返回值来表示异常情况,并且程序的正常流程和异常流程都采用同样的流程控制语句。Java语言按照面向对象的思想来处理异常,使得程序具有更好的可维护性。Java异常处理机制具有以下...
发布了文章2017-06-08
和C++以模板来实现静多态不同,Java基于运行时支持选择了泛型,两者的实现原理大相庭径。C++可以支持基本类型作为模板参数,Java却只能接受类作为泛型参数;Java可以在泛型类的方法中取得自己泛型参数的Class类型,C++只能由编译器推断在不为人知的地方生成新的类,...
发布了文章2017-06-08
C++是默认具有拷贝语义的,对于没有拷贝运算符和拷贝构造函数的类,可以直接进行二进制拷贝,但是Java并不天生支持深拷贝,它的拷贝只是拷贝在堆上的地址,不同的变量引用的是堆上的同一个对象,那最初的对象是怎么被构建出来的呢?
发布了文章2017-06-08
本文不是一篇Spanner的介绍文章,主要想对于Spanner和F1解决的几个有代表性的问题做一个概括和梳理。接下来的行文安排将主要以问答的形式展开。对Spanner和F1不熟悉的盆友可以参考最后一节列出的引用。
发布了文章2017-06-08
摘要 阅读这篇文章,希望你首先已经对Leveldb有了一定的了解,并预先知晓下列概念: LSM技术 跳表 WAL技术 Log Compaction 本文不是一篇专注于源代码解析的文章,也不是一篇Leveldb的介绍文。我们更希望探讨的是对于一般的单机数据存储引擎存在哪些问题,Leveldb作为...
赞了文章2017-03-04
jvm系列 垃圾回收基础 JVM的编译策略 GC的三大基础算法 GC的三大高级算法 GC策略的评价指标 JVM信息查看 GC通用日志解读 jvm的card table数据结构 Java类初始化顺序 Java对象结构及大小计算 Java的类加载机制 Java对象分配简要流程 年老代过大有什么影响 Survivor空...
发布了文章2016-09-11
看过前面几篇博客的盆友可能会问,逼逼了这么多还不知道消息到底存到哪儿了,分明标题党嘛。这一次我们就来看与存储切实相关的底层操作类FileMessageSet。它是MessageSet的一个子类,操作消息和文件之间的读写操作。想想我们也知道,这特么就是要写增删改查啊。这一...
发布了文章2016-09-11
MessageWriter是Kafka进行消息写的工具类,这一部分代码倒是和整个系统设计没有多大关系,但是从局部来看,有许多有意思的细节,所以也开一篇短博客来讲一讲。
发布了文章2016-09-11
MessageSet是Kafka在底层操作message非常重要的一个层级概念,从名称上可以看出来它是消息的集合体,但是代码中的处理逻辑更多的是在考虑到嵌套消息的处理问题。MessageSet的主要功能是提供Message的顺序读和批量写,操作的基本对象是MessageAndOffset。
发布了文章2016-09-11
Kafka作为一个消息中间件系统,面临的首要问题就是消息如何持久化,如何方便地进行读写和解析。本文将就Kafka的消息存储问题开一个头,后续将会对重要的代码部分一一讲解。Kafka的消息概念,首先我们在此谈论的不是网络传递中的消息,而更多偏向于记录的意思,也就是...
发布了文章2016-09-11
DSL的核心在于受限的表达能力,容易理解的语义以及清晰的语义模型,最后一点虽然并非是必要的,但在绝大多数时候往往是成立的。其中受限的表达能力是我最想强调的一点,我们码农在写代码的时候往往对于程序的可扩展性和API支持的泛化能力有一种执着的追求,但对于以...
提出了问题2016-03-19
发布了文章2016-03-02
在完成这个系列的博客之后,我预计开始着手自己写一个ORM框架,旨在构建支持Java 中类似于ROR的ActiveRecord一样的方便的数据库访问工具,大家有好的架构思路和想法,可以找我讨论。
提出了问题2016-03-02
发布了文章2016-02-04
在这次的博客中我们将着重于Junit的许多集成性功能来讨论Junit中的种种设计模式。可以说Junit的实现本身就是GOF设计原则的范例教本,下面就让我们开始吧。
发布了文章2016-02-04
尽管在第二次博客中我们讲述了Runner的运行机制,但是许多其他特性比如Filter是如何与运行流程结合却并不清楚。这次我们来回顾整理一下Junit的执行流程,给出各种特性生效的机理,并分析一些代码中精妙的地方。
发布了文章2016-02-04
上次的博客中我们着重介绍了Junit的Validator机制,这次我们将聚焦到自定义扩展Rule上来。在很多情形下我们需要在测试过程中加入一些自定义的动作,这些就需要对statement进行包装,Junit为此提供了以TestRule接口和RunRules为基础的Rule扩展机制。