11 Hsuxu

尚未进行身份认证

程序猿

等级
TA的排名 1w+

【翻译】两种高性能I/O设计模式(Reactor/Proactor)的比较

这是05年的老文章,网上应该有人早就翻译过了,我翻译它仅仅为了学习Reactor/Proactor两种TCP服务器设计模式,顺便作翻译练习。标题:两种高性能I/O设计模式的比较作者:Alexander Libman 、Vladimir Gilbourd原文:http://www.artima.com/articles/io_design_patt

2014-03-10 12:50:41

HotSpot VM的生命周期

1.启动:(1) 解析命令行参数:如-client 或 -server(2)分配java的堆和选择好确定的JIT编译器类型(client 或 server)、(3) 创建运行环境如LD_LIBRARY_PATH和CLASSPATH(4)找到Main-Class(5) 使用标准的java Native接口方法:JNI_CreateJavaVM在一个新创建的非原生的线程中创建Hot

2013-09-14 15:49:58

负载均衡的几种实现技术

当web服务器的垂直扩展变得话费很高或困难的时候,我们需要考虑服务器的水平扩展,即负载均衡技术。负载均衡有很多技术,这里我们来一一介绍。1.HTTP重定向我们可以在代码层面实现,通过设定访问特定页面如index.php,在php代码中设置header的location值,返回重定向指令。这实际上是web应用程序自己来实现。2.DNS负载均衡DNS负责域名和IP地址之间的映射。DNS

2013-09-01 11:24:09

深入理解Java内存模型(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码

2013-08-23 14:25:58

深入理解Java内存模型(四)——volatile

volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L

2013-08-23 14:25:08

Java NIO 选择器(Selector)的内部实现(poll epoll)

之前强调这么多关于linux内核的poll及epoll,无非是想让大家先有个认识:JavaNIO中的选择器依赖操作系统内核的这些系统调用,我们这里只讲解与linux内核相关的NIO实现,当然,windows或其他操作系统实现大体上是类似的,相信大家也可以触类旁通。那么,本文从这里将从简到难,一步一步为大家讲解选择器的点点滴滴吧。选择器的宏观理解“有这么一种

2013-08-10 14:41:31

tomcat5源码解析一 PoolTcpEndpoint类

PoolTcpEndpoint类负责创建监听http连接端口的serversocket,并将得到得连接交给线程池中的线程处理。tomcat5实现的线程池是直接管理runnable对象,然后新生成的线程会wait,直到runnable的shouRun为true,即某个表示task的实例变量(toRun)被赋值,才会被notify,然后运行,运行完后又会将shouldrun设为false,调用returnController将自己注册成空闲的线程便于到时候threadpool快速找到一个空闲的线程,然后循环,

2013-08-01 20:38:45

Synchronization and the Java Memory Model

This set of excerpts from section 2.2 includes the main discussions on how the Java Memory Model impacts concurrent programming.For information about ongoing work on the memory model, see Bill Pug

2013-07-26 13:06:57

文件锁(Filelock) 与锁定映射文件部分内容

文件锁JDK 1.4引入了文件加锁机制,允许我们同步访问一个共享文件,不过,竞争同一文件的两个线程有可能在不同的java虚拟机上,或者一个是java线程,另一个是操作系统中其他的某个线程,但文件锁对其他线程或其他操作系统进程都是可见的,因为java的文件加锁直接映射到了本地操作系统的加锁机制。注,这里讲的锁是指锁定其他应用程序,而不是锁定同一虚拟机里访问的同一文件的其他线程 。如果在同一虚

2013-07-25 20:34:28

ConcurrentLinkedQueue的实现原理分析

1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurren

2013-07-25 19:54:06

深入JVM锁机制

目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能

2013-07-25 18:49:01

Java轻量级锁原理详解(Lightweight Locking)

大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。为了优化Java的Lock机制,从Java6开始引入了轻量级锁的概

2013-07-25 18:45:18

Java偏向锁实现原理(Biased Locking)

阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。轻量级锁也是一种多线程优化,它与偏向锁的区别在

2013-07-25 18:44:49

java中的Synchronized 实现

1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。3 同步的基础Java中的每一个对象都可以作为锁。对于同步

2013-07-25 18:43:54

JAVA CAS原理深度分析

看了一堆文章,终于把JAVACAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedrefe

2013-07-25 13:07:33

Java并发编程之ConcurrentHashMap

ConcurrentHashMapConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHashMap

2013-07-24 20:45:24

JVM性能调优之JVM性能监控

JVM的性能监控主要关注以下几个方面: 垃圾回收、 JIT和类的加载。垃圾回收器的监控:几点需要关注的内容:1. 使用的垃圾回收期的种类2. java堆的大小3. 新生代和老年代的大小4.永久代的大小5. minor GC的持续时间6. minor GC的发生频率7. minor GC回收了多少空间8. major GC的持续时间9. major GC的

2013-07-22 19:35:10

Spring Ioc和Aop原理

1.关于spring ioc  这段时间也着实好好的看了下spring的相关书籍,对其也有了大概和初步的认识和理解,虽然之前也一直听说spring是一个非常优秀的开源框架,可一直没有机会学习和使用(是不是有点落伍了?呵呵),所以呢,这段时间就重点学习了spring(一个星期的时间当然是入门级的啦~~)  大家一直都说spring的IOC如何如何的强大,其实我倒觉得不是IOC如何

2013-07-16 11:02:40

Java性能调优之JVM

HotSpot VM 谈到Java的性能,runtime的两个方面很关键:JIT和GC。JIT的作用使尽可能快地执行代码;GC的作用是(在管理存储的同时)从代码的执行中抽取尽可能少的时间。因而Java的性能是让JIT(在更多存储器的帮助下)产生更多理想代码,并减少GC用以管理存储的时间(指针越大这越困难)随着64位的HotSoptVM的出现,虽然64位CPU拥有更宽的数据总线,但是这却

2013-07-14 18:09:32

differences between “java -server” and “java -client”

From Chapter 2 of the whitepaper (The Java HotSpot Performance Engine Architecture):The JDK includes two flavors of the VM -- a client-side offering, and a VM tuned for server applications. Thes

2013-07-14 17:14:33

查看更多

勋章 我的勋章
    暂无奖章