JDK
a1000005aa
这个作者很懒,什么都没留下…
展开
-
JVM优化机制好诡异
[code="java"] long i[] = new long[1000000]; for(int j = 0; j < 1000000; j++) { i[j]= 0l; } [/code]如上代码,按long类型占8位计算,应该占8000000/(1024*1024) = 7.62939453125MB内存,没问题.[code="java"]Lo...原创 2016-09-27 19:32:52 · 254 阅读 · 0 评论 -
Java源代码转码
现在中国的项目很多,编码无非是UTF-8,GBK,GB2312,到是没见过ISO8859-1的,可能国外项目会使用吧,在中国还是使用中文注释的比较多.也许你没有经历过开发中两个项目使用不同的编码,也可能你在开发的时候使用UTF-8,而合作方的编码使用的是GBK,也可能是自己在开发第一个项目的时候使用的是GBK,开发第二个项目的时候设置成了UTF-8,转码就是件费时费力的事情,写了个小工具,...原创 2012-12-20 17:22:35 · 195 阅读 · 0 评论 -
JVM优化机制好诡异
[code="java"]long i[] = new long[1000000]; for(int j = 0; j < 1000000; j++) { i[j]= 0l; } [/code]预算一个long占8个byte* 8000000/(1024*1024) = 7.62939453125MB完全正确。[code="java"]Long i...原创 2012-04-20 08:43:46 · 87 阅读 · 0 评论 -
Tomcat集成OSGI,并通过JNDI开放Web调用
Tomcat集成OSGi,首先要选择OSGI服务器,我这里采用的是equinox.jar.第一步开发OSGI的bundle,这里就不说明了.第二步构建OSGi在Tomcat下的目录结构如图${Tomcat_Home}/lib[img]http://dl.iteye.com/upload/attachment/0077/3702/0c882e08-9dd8-3416-b788-d...原创 2012-12-03 11:22:27 · 304 阅读 · 0 评论 -
JDK的Logging
jdk自带有一个log日志,对于一般的使用,仅够了.代码如下:[code="java"]package org.frame.base.logging;import java.util.logging.Level;import java.util.logging.Logger; /** * JDK自带的log挺好玩的 * * @author ycl *...2012-11-07 15:49:38 · 167 阅读 · 0 评论 -
java.util.*
java.util 工具包,灰常的有用,有机会一定要研读源码。很多东西,jdk有的功能就不需要去外面寻找一堆的开源代码,jdk自带的也不错.[img]http://dl.iteye.com/upload/attachment/0076/2306/ff7713e2-3f88-3f2d-8afb-b43fa615b43f.jpg[/img]比如java.util包下的Map,Lis...2012-11-06 14:23:12 · 1318 阅读 · 0 评论 -
java.util.concurrent.*
1. java.util.concurrent.ArrayBlockingQueue阻塞的Queue,允许多线程操作,这里的put Condition和get Condition分离(使用ReentrantLock),速度比使用单个锁速度快。这是一个基于数组,先进先出,线程安全的集合类,其特色为可实现指定时间的阻塞读写,并且容量可限制.2. java.util.concurrent.R...2012-11-02 10:38:26 · 103 阅读 · 0 评论 -
java.util.rt.*
1. java.util.HashMap散列表,主要是以离散的hash值换算数组下标,如果对象的hash值都不一样,这样可以使对象更离散,这样就不会有多个对像坐落在一个坐标上,如果有多个对象坐落在一个坐标上,那么其取值的时候就会有一个循环的过程,否则都是1对1的结构数据,其存取速度很快.[影响性能参数captity,loadfactory]2. java.util.LinkHa...原创 2012-10-31 13:51:11 · 135 阅读 · 0 评论 -
java doc 代码文档
对于代码规范不解释了,网上很多。在编写代码的时候,有一点灰常的重要,那就是java doc.可能会有人说,我没有使用过[说实话,我以前也没怎么在意].最近在写代码的时候,查看业务逻辑,感觉代码中跳来跳去,实在是不方便。在查看jdk API的时候,为什么我们不可以生成这么一个文档。于是开始注意代码的注释,每个类,字段,方法说明都采用标准的java doc.标准...原创 2012-07-13 13:58:06 · 229 阅读 · 0 评论 -
Java 字符串分词
在Java的世界里有个类型叫String,中文名就字符串。很多时候我们需要使用它来存储, 出了基本的8个类型外,还有Date和String这两个特殊的“基本”类型.对于字符串,我们接触的多,处理的多,却很少去总结, 比如我们经常把用户信息存储为USERid name pass email1 "abc" "bb" "a@aa.com"AUTH...原创 2015-01-02 14:43:12 · 1820 阅读 · 0 评论 -
生产者消费者模式(一)
需求: 多个生产者不断的生产产品,多个消费者不断的消费产品,仓库可以存放10个产品。 第一批产品需要生产20个产品,并消费完毕。结论: 当使用一个生产者,一个消费者是,需要4610,使用7个生产者,7个消费者时,只需要900,可见当N个任务耗时长,使用多线程可以充分发挥多核CPU的优点.[code="java"] package ycl.learn.effective.java.t...原创 2014-02-28 14:30:04 · 94 阅读 · 0 评论 -
生产者消费者(二)
需求: 多个生产者不断的生产产品,多个消费者不断的消费产品,仓库可以存放10个产品。 第一批产品需要生产20个产品,并消费完毕。其实使用wait/notify模式实现差不多,只是使用的时候要注意防止“死锁”。blockingQueue的实现与notify的实现效率差不多.[code="java"]package ycl.learn.effective.java.thread...原创 2014-03-03 15:40:10 · 109 阅读 · 0 评论 -
巧秒设计方法,不返回null
[code="java"] /** * {@inheritDoc} * * This implementation always returns a {@link Cache} implementation that will not * store items. Additionally, the request cache will be remembered...原创 2016-09-27 19:32:14 · 393 阅读 · 0 评论 -
Java Application Cache
Application Cache is used very wide.we need to cache user/business information in application, cause of it is used often, so don't need to clear cache.sure, we can control of it, but if we cac...原创 2016-09-27 19:25:46 · 225 阅读 · 0 评论 -
查看Class文件使用的JDK版本
由于JDK一般是向下兼容的,所以有时候本地的JDK版本比类库的版本低,往往会抛出java.lang.UnsupportedClassVersionError: Bad version number in .class file。有时候需要确认到底是哪个类的版本低。所以需要确认类的编译JDK的版本。 可用二进制编辑工具(例如EmEditor)打开类文件,会有以下的显示: CA FE BA BE ...原创 2013-10-30 14:17:07 · 120 阅读 · 0 评论 -
jdk 1.6 新特性,集成Groovy, 性能很差
性能都是相对的,如果调用量不是很大的话,可以忽略,毕竟使用为主。groovy支持的语法还是很多的,灰常推荐,我这只是小实验罢了 代码执行如下:[code="java"] /** * @param args * @throws ScriptException */ public static void main(String[] args) throws Sc...原创 2014-04-02 14:27:15 · 289 阅读 · 0 评论 -
Fake Code easy implements
[code="java"]package org.miniframe.modules.utils;import java.util.HashMap;import java.util.Map;import javax.script.Bindings;import javax.script.ScriptContext;import javax.script.Script...原创 2014-04-01 15:41:48 · 216 阅读 · 0 评论 -
JDK regex 用法及用途
[list][*] 查找 Boolean flag = pattern.matcher("fda").find();[*] 分割 String[] mm = pattern2.split(“say:”);[*] 格式化 String format= pattern1.matcher(String.valueOf(vv)).group()[*] 替换 String format= p...原创 2014-03-31 15:48:33 · 199 阅读 · 0 评论 -
生产者消费者(四)
需求: 多个生产者不断的生产产品,多个消费者不断的消费产品,仓库可以存放10个产品。 第一批产品需要生产20个产品,并消费完毕。 这次不使用独占锁,使用CPU原语CAS.CAS 简单来说就是由CPU比较内存位置的值是否为当前值,如是则将其设置为next,如否则返回false.因此上面的代码片段要在一个无限循环中执行,这样可以保证并发时id的顺序.基于CAS操作可以认为是无阻...2014-03-04 12:32:50 · 108 阅读 · 0 评论 -
生产者消费者(三)
需求: 多个生产者不断的生产产品,多个消费者不断的消费产品,仓库可以存放10个产品。 第一批产品需要生产20个产品,并消费完毕。这里使用JDK5中的并发包中的类Lock.[code="java"]package ycl.learn.effective.java.thread.pc;import java.util.concurrent.locks.Condition;...原创 2014-03-04 10:59:41 · 132 阅读 · 0 评论 -
接口与抽象类
1. 接口设计必谨慎,除非业务变更,否则打死不能动接口。[不变]2. [抽象]骨架类的演变比接口的演变容易的多.[可变]3. 接口只用于定义类型4. 常量接口,该接口不包含任何方法,只包含静态的final域,每个域都导出一个常量,使用这些常量的类实现这个接口,以避免用类名来修饰常量. [常量接口模式是对接口的不良使用] 类在内部使用某些常量,这纯粹是实现细节。实现常量接口,全导...2012-07-11 16:53:11 · 89 阅读 · 0 评论 -
ConcurrentHashMap并不是绝对线程安全的
ConcurrentHashMap是线程安全的概念已经深入人心,让我们在使用的时候有些大意了,我也懒得动脑子,直接使用,结果碰到钉子了.这个问题让我很郁闷,程序逻辑全是对的,但是问题却明明摆在那边,最后怀疑是HashMap的问题。[code="java"]package com.taobao.mmp.test;import java.util.HashMap;import ...2011-11-09 11:19:49 · 3090 阅读 · 0 评论 -
LinkedHashMap
[align=center]LinkedHashMap[/align]这是一个继承自HashMap的类,在类说明中,这是一个非同步的,不能在多线程环境下使用,否则要自己实现同步.有两种模式,一种是元素访问的次数排序,一种是插入的时间排序Linked内部含有一个private transient Entry header;来记录元素插入的顺序或者是元素被访问的顺序。正如 LinkedHa...2010-10-14 11:42:27 · 86 阅读 · 0 评论 -
CyclicBarrier
[align=center]CyclicBarrier[/align]官方解释:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point).在涉及一组固定大小的线程程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为barrier在释放等待线程后可以重用,所以称它为循环的barrier.CyclicBarrier支持...2010-10-13 10:38:24 · 86 阅读 · 0 评论 -
CountDownLatch用例及源码解析
[align=center]CountDownLatch[/align]官法解释:一个对同步有帮助的类,它允许一个或多个线程等待只到这组操作在其他线程全部完成.官司用法:初始是由一个给定的count,await方法可以阻塞只到当前count到达0.这是一个自减机制,比如你初始化 count为5,每调用一次countDown,就减1,只到为0,才释放所有线程,但是这种门插锁机制只有一次有...2010-10-09 09:44:30 · 127 阅读 · 0 评论 -
JDK1.5新特性.Enum深度解析
[align=left]Enum[/align]一般用来表示一组相同类型的常量.比如性别,月份,颜色等.1.声名Enum[code="java"]Public enum Sex{MAN,WOMAN}Public enum Color{RED,BLUE,GREEN,BLACK}[/code]2. 使用EnumJavaEnum简单的用法一般用于代...原创 2010-09-29 14:20:35 · 140 阅读 · 0 评论 -
Java多层循环优化
代码如下:/** 0.0.0 ~99.9.0* 执行次数 100*10*1=1000次* 执行时间 812*/public void doThing(){for(int i = 0;i2010-09-15 11:06:06 · 1444 阅读 · 0 评论 -
如何高效的使用HashMap
HashMap是知道怎么实现的了,哈哈,那么我们应该怎么使用HashMap才能达到最高的效率HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使 用TreeMap(HashMap中元素的排列顺序是不固定的)。使用HashMap,重写HashCode()的原则:1.不必对每个不同的对象都...2010-06-18 09:48:49 · 268 阅读 · 0 评论 -
HashMap源码解析
HashMap源码解析[code="java"] public class HashMap extends AbstractMap implements Map, Cloneable, Serializable[/code]HashMap是继承自AbstractMap,那我们先来看一个AbstractMap[code="java"]...原创 2010-06-17 16:43:19 · 71 阅读 · 0 评论 -
Java-Final
今天有人问我,Java的对象或者类型修改用Final.Java中的final关键字通常的指的是“这是无法改变的”。它可能被做为三种的修饰词.------数据,方法,类。一 final数据 1.在修饰基本类型时,表示它是一个常量,在定义时必须给予赋值. 特别的一个既是static又是final 的字段只占据一段不能改变的存储空间。 2.在修饰对象或者数组时,它表示对对象或数组...原创 2010-06-11 09:47:57 · 86 阅读 · 0 评论 -
TreeMap
[align=center]TreeMap[/align]很少有人会直接使用TreeMap,为什么,当你在TreeMap结构中“put”或“remove”元素时,因为需要排序从而需要一些开销,这会影响到程序的性能,一般是我们先使用HashMap组织好数据,当需要使用关键字排序的时候,再把HashMap作为参数传入.Map treeMap = new TreeMap(Map m).Tre...原创 2010-10-14 11:44:05 · 219 阅读 · 0 评论 -
ConcurrentHashMap
[align=center]ConcurrentHashMap[/align]这是HashMap的线程安全类.它拥有Hashtable特殊实现。实现线程安全,并不是基本Sync.而是基本ReentrantLock代码如下:[code="java"]V put(K key, int hash, V value, boolean onlyIfAbsent) { ...2010-10-14 12:05:28 · 81 阅读 · 0 评论 -
Java如何处理异常
异常受检异常 FileNotFoundException ClassNotFoundException SQLException IOException非受检异常 RunTimeException Error原则:受检异常,如果自身不能处理就往上抛如果资源的打开,资源的使用,资源的关闭都封装处理,那么可以抛出运行时异常RunTimeExcep...2011-08-18 15:17:10 · 239 阅读 · 0 评论 -
Annotation实现缓存,使用AOP的HotSwappableTargetSource
HotSwappableTargetSource是一个可以动态替换的对象,这个类很有用,可以在运行期间动态替换目标对象。如下配置:[code="java"] [/code]新建一个ehcache的动态代理替换类[code="java"]package org.frame.base.an...原创 2011-12-29 10:11:52 · 468 阅读 · 0 评论 -
Annotation实现缓存
设计:1. 定义一个接口2. 定义一个实现类3. 定义一个Annotation4. 定义一个Annotation解析器5. 定义一个Proxy6. 定义一个proxy来代理接口实现。代码如下:[code="java"]package org.frame.base.annotation.intercept;public interface TestI ...原创 2011-12-28 11:20:32 · 148 阅读 · 0 评论 -
==比较是对象的引用
Java代码如下,很简单.[code="java"]package com.test.add;public class TestInteger { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Int...2011-08-02 13:11:58 · 245 阅读 · 0 评论 -
org/junit/runner/notification/RunListener
让人抓狂的错误,我希望只存在于自己的世界里,别人不要再掉这个圬里了.java.lang.NoClassDefFoundError: org/junit/runner/notification/RunListener这个异常是一个项目中存在多个Junit的jar,你需要检查当前项目下是否有两个junit.[一般情况下只有一个]还有一个重要的地方是,当前项目所依赖的项目中是否也...2011-10-18 13:19:44 · 819 阅读 · 0 评论 -
自定义ClassLoader
[code="java"] package com.classloader.util;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLClassLoader;import java.net.URLStreamHa...2011-06-16 17:47:20 · 256 阅读 · 0 评论 -
ClassLoader
ClassLoader应该是每一个Java程序员都必须了解的,但是我整整工作了四年才发现原来在这方面全是空白,现在在做模块化,必须得了解这方面的知识,模块间必须做隔离.以下是我这段时候的学习和总结,很多东西都是借网上的资料,JDK的ClassLoader的API,做如下总结:1.类加载器概述类加载器是一个对象,是负责加载类.在JVM是通过类加载器的调用LoadClass方法加载类对...2011-06-16 14:37:32 · 124 阅读 · 0 评论 -
ClassForName
这个方法说简单,的确简单,但是很多人不明白其意义和用法,以下作简单要说明:[code="java"]public static Class forName(String className)[/code]此方法和以下的方法调用是一致的[code="java"]Class.forName(className, true, currentLoader)[/code]当前...2011-06-14 16:29:55 · 373 阅读 · 0 评论