java
爱玩技术的淘气包儿
这个作者很懒,什么都没留下…
展开
-
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了同步块和volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized转载 2015-07-28 15:10:09 · 508 阅读 · 0 评论 -
可以不要再使用Double-Checked Locking了
Double-Checked Locking方法被广泛的使用于实现多线程环境下单例模式的懒加载方式实现,不幸的是,在JAVA中,这种方式有可能不能够正常工作。在其他语言环境中,如C++,依赖于处理器的内存模型、编译器的重排序以及编译器和同步库之间的工作方式。由于这些问题在C++中并不确定,因此我们不能够确定具体的行为。但是在C++中显示的内存屏障是可以被用来让其正常工作的,而这些屏障在JAVA中又转载 2017-04-06 10:15:32 · 752 阅读 · 1 评论 -
Java泛型详解
引言泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。泛型基础泛型类我们首先定义一个简单的Box类:12345publicclass Box {转载 2017-04-07 10:56:41 · 309 阅读 · 0 评论 -
Java中try,catch,finally的用法
Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下。Java异常处理的组合方式:1.try+catch 运行流程:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句 2.try+catch+finally 运行流程:运行到try块中,如果有异常抛出,则转到转载 2017-01-12 10:43:16 · 465 阅读 · 0 评论 -
深入浅出 JIT 编译器
本文将深入浅出地讲解 JIT 编译器在 JVM 中的运作原理,使读者能够更好的理解 Java 底层机制并且为读者在 Java 性能优化领域打开更广的视野。JIT 简介JIT 是 just in time 的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速 Java 程序的执行速度。下面,就对该编译器技术做个简单的讲解。首先,我们大家都知道,转载 2017-01-09 11:21:42 · 309 阅读 · 0 评论 -
java调用并执行shell脚本以及问题总结
背景我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发。 java开发的特点就是我们可以很早地进行TDDL, METAQ 等等地对接; 而脚本开发的特点就是在进行批处理的时候非常方便。 前阵子我遇到这么一个需求场景: 对抓取的数据进行打包, 后来又遇到我要通过脚本进行抓取,比如nodejs下基于phantomjs的casperjs爬虫。解决方法转载 2016-11-01 16:11:21 · 13084 阅读 · 2 评论 -
java之HeapByteBuffer&DirectByteBuffer以及回收DirectByteBuffer
byte buffer一般在网络交互过程中Java使用得比较多,尤其是以NIO的框架中;看名字就知道是以字节码作为缓冲的,先buffer一段,然后flush到终端。而本文要说的一个重点就是HeapByteBuffer与DirectByteBuffer,以及如何合理使用DirectByteBuffer。1、HeapByteBuffer与DirectByteBuff转载 2016-10-27 11:22:13 · 241 阅读 · 0 评论 -
三大Java 虚拟机垃圾回收机制的比较(HotSpot, JRockit, IBM JVM)
原文地址:http://apmblog.compuware.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/========================================================================================转载 2016-10-26 15:18:34 · 337 阅读 · 0 评论 -
Java开发常用的在线工具
作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。博主偏爱使用在线工具,因为个人觉得这样比较方便。本文就总结了一下我常用的在线工具。欢迎纠正及补充。我会在我的个人博客(http://www.hollischuang.com)中单独创建一个常用工具页面,把这些工具的链接放到里面,我会持续更新这个页转载 2016-06-07 17:47:06 · 437 阅读 · 0 评论 -
Java开发常用的在线工具
作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。博主偏爱使用在线工具,因为个人觉得这样比较方便。本文就总结了一下我常用的在线工具。欢迎纠正及补充。我会在我的个人博客(http://www.hollischuang.com)中单独创建一个常用工具页面,把这些工具的链接放到里面,我会持续更新这个页转载 2016-06-07 17:46:43 · 342 阅读 · 0 评论 -
Java编程性能优化一些事儿
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到转载 2016-06-07 16:03:13 · 531 阅读 · 0 评论 -
彻底理解ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影转载 2016-05-17 10:43:08 · 210 阅读 · 0 评论 -
java中注解的使用与实例
java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等跟踪代码依赖性,实现替代配置文件功能。比转载 2015-09-16 13:29:22 · 336 阅读 · 0 评论 -
JAVA字符串与字符编码处理
近日,总因为JAVA 字符串乱码问题搞得头大,特地一幅图进行总结,以免遗忘。图中详细描述了 字符串类String 与 文件File ,ByteBuffer,CharBuffer,byte[] 数组,char[]数组之间的互相转换。几点心得:1)String类始终是以Unicode编码形式存储.2)注意String.getBytes()的使用: 如果不带字符集转载 2015-08-21 09:40:41 · 603 阅读 · 0 评论 -
Java RMI之HelloWorld篇
java网络编程中很关键的一部分RMI,偶然间看到了一个写的特别好的例子。Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了转载 2015-08-27 09:56:23 · 268 阅读 · 0 评论 -
单例模式的几种写法(包含双检锁写法)
饿汉式单例类Java代码 public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton(); private static Singleton转载 2017-06-02 10:47:53 · 10321 阅读 · 4 评论