为什么Java HashMap、CopyOnWriteArrayList等集合自己实现readObject和writeObject方法

PS:本文源码参考的是JDK 1.8.

1 readObject、writeObject方法是什么?作用是什么?

当一个class实现了Serializable接口,那么意味着这个类可以被序列化。如果类不实现readObject、writeObject方法,那么会执行默认的序列化和反序列化逻辑,否则执行自定义的序列化和反序列化逻辑,即readObject、writeObject方法的逻辑。

Read More

CopyOnWriteArrayList与JMM

说明:本文代码均以JDK1.8的源码为准。

1 什么是CopyOnWriteArrayList

关于CopyOnWriteArrayList是什么以及基本用法,在这里不多说,网上可以搜到大量这方面的文章。在这里只做简要说明:CopyOnWriteArrayList相当于线程安全的ArrayList,是一个可变数组。它具有如下特性:

  • 是线程安全的
  • 写操作会复制整个基础数组,因此写操作开销很大
  • 适用于如下情况:数组大小较小,并且读操作比写操作多很多的情形

Read More

代码中的命名问题-命名太长了!

1 内容概要

本文是一篇译文,翻译自:Long Names Are Long。主要介绍了编程过程中常见的命名过长的问题。

2 正文内容

2.1 选择一个好名字

一个好名字需要具备以下两个特点:

Read More

《Soft skills》读书笔记(一)-这本书与其他书籍有何不同

偶然间在网上看到这本书《Soft Skills-The software developer’s life manual》,目前只有英文版,中文版还在预售。书名翻译成中文是:亚马逊上是五星好评。这本书与其他书籍有明显区别,那就是他不是讲如何去更好的写代码,而是谈的是如何做一个更优秀的软件开发者:关于规划职业生涯、达到目标以及享受生活的乐趣。这本书不是关于我们能做哪些事情,而是关于我们本身:职业生涯、生活、身体、心智以及灵魂。作者认为作为一个程序员,远不仅仅是写代码,还有众多 其他事情。

Read More

DbUnit AmbiguousTableNameException异常解决

问题描述

今天在用DbUnit写DAO单元测试(使用的是mysql数据库)的时候,抛异常:

Read More

Hexo GitHub搭建个人博客-增加评论以及访问量统计功能

内容概要

本文主要介绍如何为Hexo搭建的博客增加评论功能,采用了多说插件,以及访问量统计功能。

Read More

Hexo GitHub搭建个人博客-添加README

概要

当我们使用Hexo+Github搭建好个人博客环境之后,默认Github上repository中是没有Readme的。本文主要介绍如何添加Readme。

Read More