java
哈希2016
捡起脚下的石头,向未来铺路
展开
-
聊聊并发(一)——深入分析Volatile的实现原理
引言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通转载 2016-01-27 10:03:47 · 344 阅读 · 0 评论 -
java 性能优化:35 个小细节,让你提升 java 代码的运行效率
前言代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可...转载 2018-03-07 11:25:06 · 260 阅读 · 0 评论 -
mysql使用JTA实例
JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。 测试使用的jdk中自带了javax.transaction和javax.transaction.xa import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import转载 2016-02-17 16:24:34 · 512 阅读 · 0 评论 -
JTA 深度历险 - 原理与实现
利用 JTA 处理事务 什么是事务处理 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 1. 将 A 账户转载 2016-02-17 14:01:13 · 276 阅读 · 0 评论 -
CocurrentHashMap和Hashtable的区别
集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看ConcurrentHashMap和Hashtable之间的区别。 这篇文章是HashMap的工作原理以及Has转载 2016-02-02 10:13:45 · 321 阅读 · 0 评论 -
多线程还是多进程的区别
关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 我们按照多个不同的维度,来看看多线程和多进程的对比(注:因为是感性的比较,因此都是相对的,不是说一个好得不得了,另外一个差的无法忍受)。转载 2016-02-02 10:10:27 · 241 阅读 · 0 评论 -
Servlet 3特性:异步Servlet
Servlet3是Tomcat7出现的新特性,所以需要先安装tomcat7 理解异步Servlet之前,让我们试着理解为什么需要它。假设我们有一个Servlet需要很多的时间来处理,类似下面的内容: LongRunningServlet.java [java] view plain copy package com.journa转载 2016-01-29 10:01:37 · 280 阅读 · 0 评论 -
热部署原理和实例
在web应用开发的过程中,我们时时刻刻都在使用热部署。热部署的目的很简单,就是为了节省应用开发和发布的时间。比如,我们在使用Tomcat或者Jboss等应用服务器开发应用时,我们经常会开启热部署功能。热部署,简单点来说,就是我们将打包好的应用直接替换掉原有的应用,不用关闭或者重启Web服务器,一切就是这么简单。那么,热部署到底是如何实现的呢?在本文中,我将写一个实例,这个实例就是一个容器应用,允许转载 2016-01-28 13:28:52 · 383 阅读 · 0 评论 -
Fork/Join框架介绍
1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+转载 2016-01-27 09:58:43 · 267 阅读 · 0 评论 -
聊聊并发(五)——原子操作的实现原理
1. 引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。 2. 术语定义 术语 英文 解释 缓存行 Cache line 缓存的最小操转载 2016-01-27 11:17:27 · 254 阅读 · 0 评论 -
聊聊并发(四)——深入分析ConcurrentHashMap
术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位转载 2016-01-27 11:03:02 · 230 阅读 · 0 评论 -
线程池ThreadPoolExecutor使用简介
一、简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedEx转载 2016-01-27 10:55:47 · 196 阅读 · 0 评论 -
聊聊并发(三)——JAVA线程池的分析和使用
1. 引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。转载 2016-01-27 10:27:16 · 221 阅读 · 0 评论 -
聊聊并发(二)——Java SE1.6中的Synchronized
1 引言 在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。 2 术语定义 术语 相关厂商内容转载 2016-01-27 10:16:40 · 266 阅读 · 0 评论 -
for(;;)和while(true)的区别
再看JDK源码的时候发现,“死循环”有两种写法:for(;;)和while(true),我就疑问,两者有啥区别,有啥源码中多数是for( ; ; )这种形式的,编译前 编译后 while (1); mov eax,1 test eax,eax ...原创 2018-03-06 09:44:42 · 298 阅读 · 0 评论