自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 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 1335

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

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

2013-07-25 20:34:28 1835

转载 ConcurrentLinkedQueue的实现原理分析

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

2013-07-25 19:54:06 1112

转载 深入JVM锁机制

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

2013-07-25 18:49:01 2428

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

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

2013-07-25 18:45:18 4759

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

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

2013-07-25 18:44:49 6045

转载 java中的Synchronized 实现

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

2013-07-25 18:43:54 4068

转载 JAVA CAS原理深度分析

看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢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 168700 42

转载 Java并发编程之ConcurrentHashMap

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

2013-07-24 20:45:24 3097 1

原创 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 2767

转载 Spring Ioc和Aop原理

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

2013-07-16 11:02:40 2763

原创 Java性能调优之JVM

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

2013-07-14 18:09:32 4244 1

转载 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 994

转载 Java的synchronized关键字:同步机制总结

不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话。JAVA的synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)

2013-07-14 15:25:19 1214

转载 互斥锁 自旋锁 自适应自旋锁

互斥锁:从 实现原理上来讲,Mutex属于sleep-waiting类型的锁。例如在一个双核的机器上有两个线程(线程A和线程B),它们分别运行在Core0和 Core1上。假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被线程B所持有,那么线程A就会被阻塞 (blocking),Core0 会在此时进行上下文切换(Context Switch)将线

2013-07-14 13:58:47 3411

转载 闲聊ClassLoader的父加载器

Java使用类加载器来装载字节码到内存,以便后续用来创建对象调用方法等。就目前的JVM,要说这个ClassLoader,先要说到它的委托模型(有人将parent译作双亲,双亲委派模型,窃以为,很不准确,原因在说完这个委托模型之后讲)。何为委托模型?java.lang.ClassLoader有这样的描述:每个 ClassLoader 实例都有一个相关的父类加载器。需要查找类或资源时,Class

2013-07-14 12:25:50 4749

转载 JIT(动态编译)和AOT(静态编译)编译技术比较

Java 应用程序的性能经常成为开发社区中的讨论热点。因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言。尽管这些语言可以提供更高的性能,但是生成的代码只能在有限的几种系统上执行。在过去的十年中,Java 运行时供应商开发了一些复杂的动态编译器,通常称作即时(Just-in-time,JIT)编译器。程序运行

2013-07-13 20:51:27 31038

原创 Java性能调优之操作系统

首先讲述下操作系统层面的性能监控工具。在性能调优的工作中通常可见三个必不可少的步骤: 性能监控=》性能分析=》性能调优。性能监控(perfomance monitoring):在没有任何可用性能数据的情况下,先进行性能的监控。性能分析(performace profiling):收集应用的性能数据,进行分析。性能调优(performance tunning): 修改源代码,

2013-07-13 16:56:51 1658

转载 Top 15 Java threading interview questions asked in Investment banks

Thread interview questions JavaMulti-threading and concurrency questions are essential part of any Java interview. If you are going for any Java interview on any Investment bank for equities front o

2013-07-12 20:02:13 1794

转载 Java: notify() vs. notifyAll()

Simply put, it depends on why your threads are waiting to be notified. Do you want to tell one of the waiting threads that something happened, or do you want to tell all of them at the same time?In

2013-07-12 18:58:26 2041

转载 后缀数组原理及应用详解

在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题: 1.在文本T里查询T是否包含子串P(复杂度同流行的KMP相当)。2.文本T里找出最长重复子串。比如abcdabcefda里abc同da都重

2013-07-10 19:21:33 1198

转载 LCA问题解法

11-0412      算法之LCA与RMQ问题      Category: 数据结构与算法   View: 11,480 阅   Author: Dong               作者:Dong | 新浪微博:西成懂<span class="separator"> | 可以转载, 但必须以超链接形

2013-07-10 19:01:04 1120

转载 经典数据结构-trie树详解

1、 概述Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。Trie树可以利用字符串的公共前缀来节约存储空间。如下图所示,该trie树用10个节点保存了6个字符串tea,ten,

2013-07-10 18:57:41 1489

转载 几种经典的网络服务器架构模型的分析与比较

前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以,本文将不拘泥于

2013-07-10 17:19:15 1129

转载 Sessions and transactions

This page explains common techniques to deal with theSession and transactions in Hibernate applications. Refer to the Hibernate reference documentation and the "Transactions and Concurrency" chapter

2013-07-10 10:45:21 2025

php5.2.17 线程安全版windows

php5.2.17 线程安全版windows

2016-01-30

JVM PrintGCDetails 信息讲解

讲解java GC回收机制 讲解 JVM PrintGCDetails 信息各行各列的解释

2013-06-20

空空如也

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

TA关注的人

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