随笔分类 -  Java

摘要:https://github.com/Androooid/treasure/blob/master/source/lightsky/posts/mat_usage.md 1.1 GC Root JAVA虚拟机通过可达性(Reachability)来判断对象是否存活,基本思想:以"GC Roots"的 阅读全文
posted @ 2016-06-21 20:27 大新博客 阅读(3749) 评论(1) 推荐(0) 编辑
摘要:http://www.cnblogs.com/CarpenterLee/p/5503882.html 本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。 总体介绍 Java TreeMap实现了S 阅读全文
posted @ 2016-05-18 08:33 大新博客 阅读(597) 评论(0) 推荐(0) 编辑
摘要:转载:http://blog.csdn.net/cutesource/article/details/5422093最近常有数据库和网络设备升级和搬迁等事情,而各个应用都是基于数据库连接池做的,大部分都是基于C3P0,数据库或网络状况的变动都会导致客户端连接池中的connection失效,如何剔除这... 阅读全文
posted @ 2015-08-27 15:33 大新博客 阅读(537) 评论(0) 推荐(0) 编辑
摘要:http://www.ibm.com/developerworks/cn/java/j-jodatime.html登录 (或注册)中文IBM技术主题软件下载社区技术讲座搜索 developerWorks打印本页面用电子邮件发送本页面新浪微博人人网腾讯微博搜狐微博网易微博DiggFacebookTwi... 阅读全文
posted @ 2014-05-14 16:43 大新博客 阅读(832) 评论(0) 推荐(0) 编辑
摘要:http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 阅读全文
posted @ 2014-02-27 15:27 大新博客 阅读(186) 评论(0) 推荐(0) 编辑
摘要:深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域本文转载:http://blog.csdn.net/jubincn/article/details/8607790本系列为《深入理解Java虚拟机》(周志明著)读书笔记。Java程序员一般都知道JVM中存在栈和堆的,并简单了解对象是在堆上分配的,这点从C/C++转过Java的程序员很容易想到。但Java由于其自身的特性,还有一些其他的内存区域,如下图所示:程序计数器程序计数器占用的内存空间不大,里面记录了各线程当前字节码的行号。JVM的多线程是通过轮流执行CPU时间的方式实现,因此在一个线程离开自己的CPU切片时,需要记录当前的状态( 阅读全文
posted @ 2013-10-11 22:24 大新博客 阅读(560) 评论(0) 推荐(0) 编辑
摘要:Java并发编程学习笔记 深入理解volatile关键字的作用引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识。网上关于volatile的文章非常多,但是并没有讲解非常详细的文章。(哪位要是有好的资料麻烦共享一份给我!)多数的都是一些理论讲解,没有实际的例子代码,就算有代码的也测试不出效果,总之理论总是与代码不匹配。后来在我不懈的努力之下总算研究出一些成果,在此分享给大家!如果大家发现有错误的地方欢迎大家指正,谢谢!在Java线程并发处理中,有一个关键字volatile的 阅读全文
posted @ 2013-10-11 18:55 大新博客 阅读(27610) 评论(13) 推荐(4) 编辑
摘要:看看你下面的这两个文件,是不是尺寸差别很大?%JAVA_HOME%/jre/bin/client/jvm.dll%JAVA_HOME%/jre/bin/server/jvm.dllJvm动态库有client和server两个版本,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较快。让Tomcat使用Server版本的jvm吧在开始菜单tomcat5->tomcatconfig的java属性中有一项jvm路径指向server目录下的jvm就行了。启动速度对比一下,在我的C4.17512M的机器上client版本一般在8s-1 阅读全文
posted @ 2013-10-11 11:41 大新博客 阅读(645) 评论(0) 推荐(0) 编辑
摘要:本文转载:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization {private static Instance instance;public static Ins 阅读全文
posted @ 2013-10-11 11:01 大新博客 阅读(455) 评论(0) 推荐(0) 编辑
摘要:cglib 动态代理基础篇CGlib是什么?CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。下面我们将通过一个具体的事例来看一下CGlib体验一下CGlib。cglib-nodep-2.2.2.jarpublic class TableDAO { public void create(){ System.out.println("create() is running !"); } public void query(){ System.out.println("query() is run... 阅读全文
posted @ 2013-10-05 21:45 大新博客 阅读(407) 评论(1) 推荐(0) 编辑
摘要:模仿Struts2的Interceptor拦截器实现public interface Invocation { public Object invoke(); }public interface Interceptor { public Object intercept(Invocation invocation); }public class Target { public Object execute() { System.out.println("Targer.execute()"); return "Targer-execute... 阅读全文
posted @ 2013-10-05 13:30 大新博客 阅读(346) 评论(0) 推荐(0) 编辑
摘要:利用JDK动态代理机制实现简单的多层拦截器首先JDK动态代理是基于接口实现的,所以我们先定义一个接口public interface Executer { public Object execute(String param);}然后我们写一个类来实现该接口,我们将该类成为目标类。接下来我们将要对execute方法进行拦截!public class SampleExecuter implements Executer { public Object execute(String param) { System.out.println("SampleExecuter.e... 阅读全文
posted @ 2013-10-04 19:36 大新博客 阅读(981) 评论(0) 推荐(0) 编辑
摘要:本文转载至http://blog.csdn.net/shootyou/article/details/3945221现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的? 1. Clone&Copy 假设现在有一个Employee对象,Employee tobby =new Employee(“CMTobby”,5000),通常我们会有这样的赋值Employee cindyelf=tobby,这个时候只是简单了copy了一 阅读全文
posted @ 2013-09-23 16:10 大新博客 阅读(545) 评论(0) 推荐(1) 编辑
摘要:response.setContentType("application/x-msdownload;");response.setCharacterEncoding("UTF-8");fileName = URLEncoder.encode(fileName, "UTF-8");response.addHeader("Content-Disposition", "attachment; filename=\""+ fileName+"\""); 阅读全文
posted @ 2013-09-04 11:53 大新博客 阅读(684) 评论(0) 推荐(0) 编辑
摘要:在Condition中,用await()替换wait(),用signal()替换notify(),用signalAll()替换notifyAll(),传统线程的通信方式,Condition都可以实现,这里注意,Condition是被绑定到Lock上的,要创建一个Lock的Condition必须用newCondition()方法。这样看来,Condition和传统的线程通信没什么区别,Condition的强大之处在于它可以为多个线程间建立不同的Condition,下面引入API中的一段代码,加以说明。class BoundedBuffer { final Lock lock = new R... 阅读全文
posted @ 2013-07-07 14:59 大新博客 阅读(348) 评论(0) 推荐(0) 编辑
摘要:在上篇文章《多线程的使用——Thread类和Runnable接口》中提到中断线程的问题。在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Deprecated)。那么应该怎么结束一个进程呢?官方文档中对此有详细说明:《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》。在此引用stop方法的说明:1. Why is Thread.stop deprecated?Because it is inherently unsafe. Stopping a thread causes it to unloc 阅读全文
posted @ 2013-07-07 12:14 大新博客 阅读(2311) 评论(0) 推荐(0) 编辑
摘要:UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:Unicode编码(16进制) UTF-8 字节流(二进制)000000 - 00007F0xxxxxxx000080 - 0007FF110xxxxx 10xxxxxx000800 - 00FFFF1110xxxx 10xxxxxx 10xxxxxx010000 - 10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxxUTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4 阅读全文
posted @ 2013-06-24 13:41 大新博客 阅读(574) 评论(0) 推荐(0) 编辑
摘要:1) 从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的2) 为什么JAVA中要加上一条限制:只能访问final型的局部变量?3) JAVA语言的编译程序的设计者当然全实现:局部内部类能访问方法中的所有的局部变量(因为:从理论上这是很自然的要求),但是:编译技术是无法实现的或代价极高.4) 困难在何处?到底难在哪儿? 局部变量的生命周期与局部内部类的对象的生命周期的不一致性!5) 设方法f被调用,从而在它的调用栈中生成了变量i,此时产生了一个局部内. 阅读全文
posted @ 2013-06-15 16:15 大新博客 阅读(376) 评论(0) 推荐(0) 编辑
摘要:本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。图1⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutO 阅读全文
posted @ 2013-06-03 08:56 大新博客 阅读(5034) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示