
J2SE
文章平均质量分 62
lfsf802
这个作者很懒,什么都没留下…
展开
-
Java反射机制剖析(三)-简单谈谈动态代理
通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制。1. 代理模式代理模式就是为其他对象提供一种代理来控制对这个对象的访问。其实代理模式是在访问的对象时引入一定程度的间接性,这种间接性可以附加多种用途。它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以原创 2012-02-07 16:12:42 · 12364 阅读 · 5 评论 -
使用Batik操作SVG
Batik简介Batik是为想使用SVG来实现各种功能的应用程序的JAVA工具包。通过Batik,可以在任何使用JAVA的地方操作SVG文档,也可以利用Batik模块来在应用程序中或者Applet中来生成、操作以及转换SVG图像。 有了Batik之后,操作SVG内容变得非常轻松,可以通过Batik的SVGGernerate模块让java应用程序简单的输出图像的格式为SVG,使用Batik的SVG原创 2014-10-30 21:52:41 · 14908 阅读 · 5 评论 -
ClassLoader的理解
ClassLoader顾名思义就是用来加载Class文件到JVM,以供程序使用的,java程序可以动态加载类定义,而这个动态加载的机制就是通过ClassLoader来实现的。 ClassLoader的类型有很多,但是最重要的是Bootstrap Classloader,这个是启动类加载器,这个ClassLoader在JVM运行时候加载java的核心的API以满足java程序的基本需求,这就包括了其原创 2014-11-30 12:37:33 · 1887 阅读 · 3 评论 -
使用Timer注意挂起问题
最近在工作中遇到了一个比较奇怪的问题,产品运行过程中,修改了系统时间之后发现,如果是将系统时间修改至当前时间之后就是正常的,如果是修改到当前时间之前,所有的实时数据就推送不到页面上,经过调试发现确实不再有时间的实时数据推送到界面上,这时就需要重新启动一下服务,就正常了。针对这个问题做了一下分析和解决,记录一下,如果以后有遇到这种问题的童鞋们就可以轻松知道为什么会出现这种现象了,并且会Timer这个原创 2014-11-30 12:39:00 · 2931 阅读 · 2 评论 -
Java集合类源代码分析二:ArrayList(1)
从java集合结构能够看出来ArrayList是属于Collection中的List范畴的。从源代码中是这样表示的,public classArrayList extends AbstractList implementsList, RandomAccess, Cloneable, java.io.Serializable ArrayList有两个属性: /** * Th原创 2015-01-28 21:20:56 · 2038 阅读 · 4 评论 -
Java中的transient关键字
关键字介绍 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。但是有种情况是有些属性是不需要序列号的,所以就用到这个关键字。只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对原创 2015-01-28 21:18:15 · 16717 阅读 · 12 评论 -
CountDownLatch介绍
简介一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数初始化CountDownLatch。由于调用了countDown()方法,所以在当前计数到达零之前,await方法会一直受阻塞。之后会释放所有等待的线程,await的所有后续调用都将立即返回。这种现象只出现一次:计数无法被重置。如果需要重置计数,请考虑使用CyclicBarrier。应用场合在一些原创 2015-02-27 15:43:25 · 1397 阅读 · 3 评论 -
CyclicBarrier介绍
CyclicBarrier介绍简介一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。CyclicBarrier 支持一个可选的Runnable命令,在一组线程中的最后原创 2015-02-27 15:22:41 · 1352 阅读 · 2 评论 -
项目远程调试
背景在Java项目开发的过程中,本地调试是非常普遍的,但是有些情况也是本地调试所做不到的,例如Maven项目等。其实这时候就需要远程调试,不管开发工具是Eclipse,还是Netbeans,异或是IDEA,都是可以实现远程调试的,当然这也离不开应用服务器的支持。具体说明列举两个应用服务器的实例,一个为resin(4.0版本,以前版本的配置方式可以自行查找)服务器,一个为tomcat服务器。res原创 2015-03-28 22:13:05 · 2716 阅读 · 4 评论 -
Tomcat注册成系统服务并修改内存
Tomcat注册为系统服务下载解压Tomcat【以tomcat6为例】下载地址:http://tomcat.apache.org/download-60.cgi将下载的zip包解压:配置startup.bat文件在startup.bat文件最上面添加两行:SET JAVA_HOME=C:\Java\jdk1.6_x64SET CATALINA_HOME=D:\opentools\tomca原创 2015-06-30 21:17:28 · 24473 阅读 · 2 评论 -
TOMCAT异常退出分析和解决方法
最近遇到一个很诡异的问题,远程登录服务器,本来是想查看一下Tomcat的运行情况,结果用鼠标把窗体一拖,Tomcat居然自己关上了!就好像是自己按下了Ctrl+C一样!同事的电脑都没有出现这种情况,后来换了鼠标也不行(第一个反应就是鼠标的问题)。最后关了几个正在运行的软件,居然又好了。经过排查,确定是“有道词典”的问题,这个软件有个“划词”的功能,就是它搞的鬼,把“划词”功能一关就好了。借着个机会原创 2015-09-29 19:39:47 · 26631 阅读 · 6 评论 -
C#和JAVA实现图片和BASE64互转
Base64编码在Web方面有很多应用,譬如在URL、电子邮件方面。有种比较常见的场景就是将图片转换为Base64字符串进行存储。.Net和Java都可以实现此种场景。.Net Framework也提供了现成的功能类(System.Convert)用于将二进制数据转换为Base64字符串。将图片转化为Base64字符串的流程是:首先使用BinaryFormatter将图片文件序列化为二进制数据,然后原创 2015-11-29 22:30:03 · 11001 阅读 · 1 评论 -
Javassist2-使用实例
上篇博客简单介绍了一下javassist工具,这篇博客利用javassist工具来动态的生成一个class文件,并且简单介绍一下我在产品中是如何利用这个工具包的。 一般的类的组成就是类名称,属性,属性的setter和getter方法,构造函数以及方法。 那么这个实例就是利用javassist工具生成这样一个class文件的,具体流程为通过CtClas对象的容器ClassPool创建一个类,添加字段原创 2014-10-30 21:55:41 · 1818 阅读 · 2 评论 -
针对SVG的性能优化
SVG是一种富客户端技术,是一种实时的解析并且渲染的XML,所以在交互性能上不是非常令人满意的,其实这也是富客户端技术的通病,本身效果和性能就不可兼得,这就需要我们做出一种平衡。 对于SVG的性能也是有一些方法优化的,其实对于SVG的优化可能从两方面入手来解决,一是SVG本身的优化,另一方面是针对js的优化,那么关于js的优化其实网络上很多方法,这里不过多介绍,下面主要是从SVG自身优化的角度进行原创 2014-10-30 21:49:50 · 14515 阅读 · 3 评论 -
Java反射机制剖析(二)-功能以及举例
从《java反射机制剖析(一)》的API我们看到了许多接口和类,我们能够通过这些接口做些什么呢?从上篇API中我们能看到它能够完成下面的这些功能:1) 获得类A. 运用getClass() (每个class都有此函数) i. String str = "abc";原创 2012-02-07 16:04:09 · 12766 阅读 · 5 评论 -
java递归算法实现
Coding多了,递归算法是非常常见的,最近我一直在做树形结构的封装,所以更加的离不开递归算法。所以今天就简单说一下这个递归算法,用java实现一个非常经典的递归实例。 递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策原创 2012-06-27 15:42:00 · 33364 阅读 · 8 评论 -
Java反射机制剖析(一)-定义和API
1. 什么是Java反射机制Java的反射机制是在程序运行时,能够完全知道任何一个类,及其它的属性和方法,并且能够任意调用一个对象的属性和方法。这种运行时的动态获取就是Java的反射机制。其实这也是Java是动态语言的一个象征。用一句话来概括反射就是加载一个运行时才知道的类以及它的完整内部结构。2. 为什么要有Java反射机制我们为什么要用Java的反射机制呢?我认为有两种:第一种原创 2012-02-07 15:52:34 · 14358 阅读 · 10 评论 -
Java反射机制剖析(四)-深度剖析动态代理原理及总结
动态代理类原理(示例代码参见java反射机制剖析(三))a) 理解上面的动态代理示例流程b) 代理接口实现类源代码剖析咱们一起来剖析一下代理实现类($Proxy0)的源代码和整个动态代理的流程。$Proxy0生成的代码如下: import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import j原创 2012-02-07 16:19:47 · 22997 阅读 · 21 评论 -
java内存区域
人们都说:java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。对于C/C++开发人员来说,他们有着对内存管理的最高权限。所以他们要对每个对象生命的开始到终结都要维护,而且经常会碰到内存泄漏内存溢出等问题;而java开发人员就显得轻松许多,因为有虚拟机的内存管理机制帮助做了很多事情,不再需要每个人创建的操作对应删除操作,当然也不太容易出现内存泄漏原创 2013-05-28 23:47:10 · 2005 阅读 · 2 评论 -
java垃圾回收机制
最近很多人都问到我如何理解java的垃圾回收机制。今天在博客中总结一下。 生活中,我们随处可见的就是垃圾回收站回收垃圾来重新利用,避免环境污染,而且会让通过重新再利用这些垃圾,能够节省能源和资源。 编程是源于生活。在java中,垃圾是会产生的,当然也会被jvm自动回收再利用。当没有对象引用指向原先分配给某个对象的内存,该内存便成为了垃圾,那么jvm会用一个系统级线原创 2013-07-21 20:55:28 · 5628 阅读 · 5 评论 -
Eclipse RCP技术
以前主要在JAVAWEB方向下功夫,很少去关注JAVA的桌面应用程序的知识,对桌面应用程序的认识仅仅停留在当初接触.NET的时候使用其并做了几个工具和MIS。一直感觉桌面应用程序会慢慢的消失被WEB取代,随着最近接触BIRT源代码发现,java的桌面应用程序也有很多值得吸收的知识,而且基于Eclipse RCP技术也相当具有吸引力和感染力。 这篇博客说一说Eclipse RCP,原创 2013-08-31 16:16:58 · 4447 阅读 · 3 评论 -
EclipseRCP开发1-建立第一个RCP
前面也介绍了Eclipse RCP的开发知识,接下来我们来做几个实例来学习一下Eclipse RCP的开发。 这篇博客主要是从零开始出发建立第一个RCP程序。 首先下载Eclipse,解压,开发,大家文件创建功能,功能类型为Plug-in Project 。输入名称之后,点击Next,填入插件信息,最重要的是选择Yest,这个选择才是建立RCP程序。之后点击Next选择一个RCP模版,这里选择He原创 2013-09-23 21:54:38 · 4404 阅读 · 5 评论 -
EclipseRCP开发2-建立菜单
这篇博客建立一个菜单和工具拦的RCP程序,建立菜单和工具拦是需要利用ApplicationActinBarAdvisor类的,它有一个makeActions方法来声明actions,利用fillMenuBar和fillCoolBar方法添加菜单和工具拦。 打开ApplicationActionBarAdvisor,我们定义几个属性, private IWorkbenchAction iExitA原创 2013-09-24 23:11:44 · 2613 阅读 · 4 评论 -
EclipseRCP开发3-建立自定义菜单
上篇博客介绍了如何利用Eclipse提供的Action完成菜单开发,这篇介绍一下自定义菜单的功能。建立工程的步骤就不再赘述了,前面的步骤可以看一下以前的博客。要想创建自定义菜单的功能,需要做几个操作,包括创建自定义Action,实现Action中的run方法,之后makeActions方法中注册自定义Action,在fillMenuBar方法中添加菜单。先来建立Action,Action要继承Ac原创 2013-09-25 22:02:49 · 3326 阅读 · 3 评论 -
利用正则表达式来完成时间日期
最近需要完成一个判断用户输入时间日期类型来进行相应操作的业务。实现这个功能自然少不了用到正则表达式,提高正则表达式的话,其实它的用法很简单,只需把这个表格记住并且会灵活运行就可以了。 元字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(原创 2013-09-28 17:17:36 · 6744 阅读 · 5 评论 -
java的Calendar类
java中的Calendar在开发中经常被忽略,这篇博客总结一下这个类,对后面项目中使用时期的时候有帮助。Calendar常量(field)的作用Calendar cal = Calendar.getInstance();cal.get(Calendar.DATE);//-----------------------当天 1-31cal.get(Calendar.DAY_OF_MONTH);/原创 2016-01-31 22:15:05 · 13596 阅读 · 3 评论