1.1.2 Java Advanced
文章平均质量分 73
uniquepine
这个作者很懒,什么都没留下…
展开
-
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2012-03-07 14:08:21 · 294 阅读 · 0 评论 -
线程/进程/系统效能的API
1. Sleep()——这个方法能让当前线程“停”下来。2. WaitForSingleObject()——自己停下来,等待某个事件发生3. GetTickCount()——有人把Tick 翻译成“嘀嗒”,很形象。4. QueryPerformanceFrequency()、QueryPerformanceCounter()——让你访问到精度更高的CPU 数据。5. timeG转载 2013-03-01 17:41:04 · 361 阅读 · 0 评论 -
JVM锁机制-Lock .
与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchr转载 2012-04-25 14:16:53 · 527 阅读 · 0 评论 -
Java的ReadWriteLock实现机制解析(2)
上一篇说到了WriterPreferenceReadWriteLock,这一篇说一下ReentrantWriterPreferenceReadWriteLock。 顾名思义,该类实现的是可重入的的WriterPreferenceReadWriteLock。允许readers和writers在各自线程里反复获得读或写的锁。这种方法主要用在 该类是WriterPrefe转载 2012-04-25 14:45:06 · 981 阅读 · 1 评论 -
Java的ReadWriteLock实现机制解析(1)
如果接触过多线程编程或者大规模并发应用的开发的人都应该知道Readers-writer lock的设计模式,从英文字面上看就是对于资源允许多个Reader(复数)并发读,单个Writer写的锁机制,而Reader和Writer互斥。 现在的JDK里有一个ReadWriteLock的接口和一个ReentrantReadWriteLock的实现类,而其作者是赫赫有名的Doug Le转载 2012-04-25 14:43:44 · 1026 阅读 · 2 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会涉及到散列算转载 2012-04-17 17:55:35 · 576 阅读 · 2 评论 -
JAVA的可变类与不可变类
可变类和不可变类(Mutable and Immutable Objects)的初步定义:可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容。不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。 如何创建一个自己的不可变类:.所有成员都是private.不提供对成员的改变方法,例如:setXXX转载 2012-04-11 14:28:03 · 414 阅读 · 0 评论 -
三 装饰模式的应用从Decorator,Adapter模式看Java/IO库(二)
三 装饰模式的应用装饰器模式:在不用继承的情况下,通过对原来对象的引用,动态的添加对象的功能.例如:java IO 里面的 filterInputStream :引用了inputStream ,通过动态封装,生成了具有新的功能的datainputStream,StringBufferInputStream.filterOutPutStream ,filterWriter,filte转载 2012-03-20 09:56:30 · 934 阅读 · 0 评论 -
线程concurrent包(Lock 與 Condition)
synchronized和java.util.concurrent.locks.Lock的异同主要相同点:Lock能完成synchronized所实现的所有功能,在synchronized中隱含著物件鎖定與釋放鎖定的觀念主要不同点:Lock有比synchronized更精确的线程语义和更好的性能 synchronized会自动释放锁.而Lock一定要求程序员手工释放.并且必须在fi原创 2012-03-22 11:09:35 · 548 阅读 · 0 评论 -
从Decorator模式和Adapter来 java IO(一)
我想任何一本介绍模式的书在讲到Decorator模式的时候不能不提到它的实际应用--在Java/IO库里面的应用,>这本书也不例外,有点不一样的是,这本书在介绍的时候有个专题,是从两个模式来看Java/IO库,完这个专题后,个人感觉对Java/IO库有了全新的认识同时也加深了Decorator模式跟Adapter适配器模式的理解,现和大家分享下这个在我看来很伟大的成果,同时说明下,以下大部分文字跟转载 2012-03-20 09:55:07 · 416 阅读 · 0 评论 -
从Decorator,Adapter模式看Java/IO库(三)
四 适配器模式的应用 适配器模式:把一个接口转换成客户端需要的另一个接口. 适配器模式,装饰器模式的共同点是两种模式都需要引用,适配是对引用进行适配,发布适配器继承的接口的方法,而装饰则是返回多于引用的接口方法的方法.即对引用进行了装饰 区别: 适配器继承一个接口,加入一个引用,返回时暴露的接口是继承接口的方法,即把引用的接口适配成了继承的接口. 装饰器:继承一个接口加入一个引用,原创 2012-03-20 09:57:28 · 558 阅读 · 0 评论 -
java调优总结
JVM调优总结-序 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西。突然发现,基础真的很重要。学习的过程是一个由表及里,再由里及表的过程。呵呵,所谓的“温故而知新”。而真正能走完这个轮回的人,也就能称为大牛或专家了。这个过程可能来来回回,这就是所谓“螺旋上升”,而每一次轮回都有新的发现。 这回添加的东西主要集中在基础的一些问题上,还有一些这两年思考的转载 2012-03-15 18:06:34 · 2262 阅读 · 1 评论 -
Java native 关键字
总结: Native 关键字只能用在方法声明上,表明该方法由非java 程序实现.native是Java Native Interface(JNI)技术的关键词。就是说这个函数会有对应的C代码存在。JNI就是一种对其他语言的接口。用JNI你就可以用Java调用C/C++程序 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非转载 2012-03-30 11:32:47 · 463 阅读 · 0 评论 -
Volatile 和 Transient
volatile : 保证不同的线程永远读取到变量的最新值.transient : 用来关闭某个对象,或是变量的serializationVolatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 Java语言规范中指出:原创 2012-03-29 15:58:01 · 448 阅读 · 0 评论 -
synchronized与static synchronized 的区别
1.synchronized与static synchronized 的区别 question: 在一个对象上的synchronized 方法是否可以拿到 static synchronized的锁? answer:不可以,因为两个是不同类型的锁. synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里转载 2012-03-12 15:55:46 · 401 阅读 · 0 评论 -
Tomcat ClassLoader
总结WebApp?ClassLoader的工作原理和上述有少许不同:它先试图自己载入类(在ContextBase?/WEB-INF/...中载入类),如果无法载入,再请求父ClassLoader完成 由此可得: - 对于WEB APP线程,它的contextClassLoader是WebApp?ClassLoader - 对于Tomcat Server线程,它的co原创 2012-03-07 09:48:15 · 1339 阅读 · 0 评论 -
CGLIB包
1.CGLIB包的介绍 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包 CGLIB是一个强大的高性能的代码生转载 2012-03-07 15:08:49 · 726 阅读 · 0 评论 -
Java对日期Date类进行加减运算,年份加减,月份加减
1. 用java.util.Calender来实现原创 2014-07-11 10:53:59 · 1321 阅读 · 0 评论