since1499

导航

12 2013 档案

Java编程提高性能时需注意的地方
摘要:1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面第一,控制资源的使用,通过线程同步来控制资源的并发访问第二,控制实例的产生,以达到节约资源的目的第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信2.尽量避免随意使用静态变量要知道,当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的内存,如123public class A{static B b = new B();}此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对 阅读全文

posted @ 2013-12-30 13:22 skylink 阅读(201) 评论(0) 推荐(0)

Spring对Quartz的封装实现简单需注意事项
摘要:前段时间在项目中一直使用正常的Quartz突然出现了任务漏跑的情况,由于我以前看过Quartz的内部实现,凭借记忆我觉得是由于Quartz的线程池的使用出现问题导致了故障的发生。为了搞清问题的真相,我又重新看了一下Quartz的代码。在看Spring的代码时发现Spring对Quartz封装过以后对Quartz的初始化过程还是比较复杂的,我对比较关键的几点提取出来画出了上面的时序图。大家可以结合代码看上面的时序图应该可以理解Quartz的初始化过程。图中的SpringContext只是用来代表Spring容器,我们在使用Quartz时没有对它进行特殊的配置,因此它各种参数都是默认的。特别是“o 阅读全文

posted @ 2013-12-27 11:37 skylink 阅读(1285) 评论(0) 推荐(1)

FileInputStream和BufferedInputStream的区别
摘要:FileInputStream属于数据源BufferedInputStream属于FileInputStream的一个装饰BufferedInputStream有个内部缓冲区当read时会先把缓冲区填满(默认缓冲区是8192),然后下次读取是直接从缓冲区读取。当读取的位置大于缓冲区时会再一次加载缓冲区。read()和read(byte[]buf, intoff, intlen)处理方式一样,区别在于后者一次返回多个数据,但是同样都是先放入缓冲区,然后再读取。至于性能问题,我们都知道文件的物理读取性能肯定要大于内存读取,FileInputStream.read()相当于一次物理读取,而Buffe 阅读全文

posted @ 2013-12-23 11:56 skylink 阅读(1178) 评论(0) 推荐(0)

java - Stack栈和Heap堆的区别
摘要:首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:堆存储: heapstorage 堆存储分配: heapstorage allocation 堆存储管理: heap storage management栈编址: stack addressing 栈变换:stack transformation 栈存储器:stack memory 栈单元: stack cell接着,总结在Java里面Heap和Stack分别存储数据的不同。 Heap(堆) Stack(栈)JVM中的功能内存数据区 内 阅读全文

posted @ 2013-12-17 11:05 skylink 阅读(195) 评论(0) 推荐(0)

Oracle Profile 使用
摘要:一、目的:Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用CreateProfile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。二、条件:创建profile必须要有CREATEPROFILE的系统权限。为用户指定资源限制,必须:1.设置resource_limit,使资源限制生效。SQL> show parameter resource_limitNAME TYPE VALUE---------------------------------- 阅读全文

posted @ 2013-12-09 22:22 skylink 阅读(273) 评论(0) 推荐(0)

使用javamail发送邮件错误:550 5.7.1 Unable to relay
摘要:这两天由于客户的邮件服务器迁移,使用了NTLM的验证方式。系统使用javamailAPI进行发送邮件时,发现只能对内部邮箱进行发送,对外部邮箱进行发送的时候,报下图错误:后面发现是由于系统的javax.mail包版本太旧,不支持NTLM验证,后面到java.net下载了个最新版本的javax.mail-1.5.1.jar,替换掉原来的就可以正常发送了。连接地址:https://java.net/projects/javamail/pages/Home 阅读全文

posted @ 2013-12-09 16:21 skylink 阅读(1110) 评论(0) 推荐(0)

gvim 备份文件去除 配置
摘要:默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,看上去又乱又讨人厌。怎么让Vim不自动生成这些备份文件呢?1. 找到你的Vim安装目录,如果是在Windows下默认路径安装的,应该是在C:\Program Files\Vim\2. 找到这个文件:vimrc_example.vim ,我的这个文件是在vim70文件夹下,具体还要看你安装的是什么版本的。3. 找到后打开,找到这一句:if has("vms")把这个判断里的if部分保留,else部分注释掉。(Vim的注释符是")即修改后应该是这样的:if has("vms") 阅读全文

posted @ 2013-12-03 14:31 skylink 阅读(311) 评论(0) 推荐(0)

Maven常用命令
该文被密码保护。

posted @ 2013-12-03 11:44 skylink 阅读(1) 评论(0) 推荐(0)

解决Maven中OutOfMemory错误
摘要:当Maven项目很大,或者你运行诸如 mvn site 这样的命令的时候,maven运行需要很大的内存,在默认配置下,就可能遇到java的堆溢出。如:[INFO] Building jar: /home/dl9pf/svn/mindquarry/mindquarry-jcr/mindquarry-jcr-changes/target/mindquarry-migration-with-dependencies.jar[INFO] ------------------------------------------------------------------------[ERROR] FAT 阅读全文

posted @ 2013-12-03 11:22 skylink 阅读(540) 评论(0) 推荐(0)