Java并发编程系列之多线程缺点 2015.07.02

从一个单线程应用到多线程应用不仅只有好处,它也会有一些代价。不要仅为了使用多线程而使用多线程。而应该明确在使用多线程时能带来的利大于弊的时候才使用多线程.如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。

轻量级分布式RPC框架介绍 2015.07.01

RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。

Java系列设计模式总结 2015.06.27

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

用CompletableFuture处理异步超时问题 2015.06.23

JDK 8中的新的抽象 – CompletableFuture。众所周知,Java 8不到一年就会发布,CompletableFuture extends Future提供了方法,一元操作符和促进异步性以及事件驱动编程模型,它并不止步于旧版本的Java中。如果你打开JavaDoc of CompletableFuture你一定会感到震惊

Java多线程优点 2015.06.21

多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作。它的优点包括:更好的利用资源、程序设计简单、程序响应更快

Java并发和多线程介绍 2015.06.20

多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作。这可能是在单线程程序中从来不会遇到的问题。其中的一些错误也未必会在单CPU机器上出现,因为两个线程从来不会得到真正的并行执行。然而,更现代的计算机伴随着多核CPU的出现,也就意味着不同的线程能被不同的CPU核得到真正意义的并行执行

Java系列CAS原理分析 2015.06.19

CAS:Compare and Swap, 翻译成比较并交换,java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁

Java系列HashTable源码分析 2015.06.18

Hashtable比较早,是线程安全的哈希映射表。内部采用Entry[]数组,每个Entry均可作为链表的头,用来解决冲突(碰撞)

Java系列ConcurrentHashMap源码分析 2015.06.18

首先了解下concurrentHashMap的原理:该类是通过存放一个Segments(段数组),然后在每个Segments[i]中放入一个类似hashMap的结构

Java系列HashMap源码分析 2015.06.16

HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突。学过数据结构的同学都知道,解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的

Git常用命令科普 2015.06.16

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

高效的Liunx限流神器Trickle 2015.06.12

Trickle 是个非常小巧实用的 Linux 命令限流工具,Trickle 可以限制 Linux 命令行工具的上传和下载流量。在跨地域文件传输或者备份时非常有用,因为外网带宽往往会比较贵。 或者你想备份进程或者下载进程不对同机器的其他服务产生影响,也需要 Trickle 这样的限流工具。 再或者你在办公室想下载大文件,不希望影响其他网络用户或者应用,Trickle 就是为此设计。