java
文章平均质量分 58
yxpjx
这个作者很懒,什么都没留下…
展开
-
ThreadLocal使用 --用于保存每个登录用户的信息-userInfo
有时我们需要知道每个用户的登录信息,一般我们是将登录的用户信息是保存在session范围内,而我们在DAO中要是使用用户的某些信息,比哪录录ID,单位ID之类的信息进行过滤时,需要从从control 层传到sevice层,再传到DAO层,比较麻烦。所以我们利用threadLocal 类来解决这方案,做到在任何类中可以直接得到session中的类型,具体实现思路是:用threadLocal原创 2009-07-28 09:44:00 · 6473 阅读 · 0 评论 -
Quartz的使用
driver=com.mysql.jdbc.Driver url=jdbc:mysql://xxx.xxx.xx.xx:3306/xxx user=xxxxxxxxxxx password=xxxxxxxxxx driver=com.mysql.jdbc.Driver url=jdbc:mysql://xxx.xxx.xx.xx:3306/xxx user=xxxxxxxxxxx password=xxxxxxxxxx<br /><br />源数据库配转载 2010-06-08 18:32:00 · 655 阅读 · 0 评论 -
编写对GC友好,又不泄漏的代码
作者:江南白衣,最新版链接:http://blog.csdn.net/calvinxiu/archive/2007/05/22/1621051.aspx,版权所有,转载请保留原文链接。 看到JavaOne2007上有篇《Garbage-Collection-Friendly Programming》的68页PPT,心想都2007了还谈这个基本问题,一定总结得很全面了才好意思站出来讲吧。 GC的基础概念见上篇:JDK5.0垃圾收集优化之--Don't Pause转载 2010-08-11 18:34:00 · 495 阅读 · 0 评论 -
软件的可申缩性-ebay实践
<br />1:按功能分割 相关的功能部分应该合在一起,不相关的功能部分应该分割开来——不管你把它叫做 SOA、 <br />功能分解还是工程秘诀。而且,不相关的功能之间耦合程度越松散,就越能灵活地独立伸缩 <br />其中的一部分。 在编码层次,我们无时不刻都在运用这条原则。JAR 文件、包、Bundle 等等,都是用来隔离 <br />和抽象功能的机制。 在应用层次, 将不同的功能划分成几个应用程序池。销售功能由一组应用服务器运行, <br />投标功能由另一组负责,搜索又是另外一组服务器。在数据库层次转载 2010-09-01 11:07:00 · 574 阅读 · 0 评论 -
haspmap遍历
总是记不住Map的遍历,标记下 HashMap map = new HashMap(); map.put("1", "hellow"); Set set = map.keySet(); for(String s : set) { System.out.println(s); } Set> set1 = map.entrySet(); for(Map.Entry entry : set1) { System.out.println(entry.getKey()+" "+entry原创 2010-09-04 21:32:00 · 775 阅读 · 0 评论 -
java的几种引用类型
<br />Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存。C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存。这对开发人员提出了比较高的要求,容易造成内存访问错误和内存泄露等问题。一个常见的问题是会产生“悬挂引用(dangling references)”,即一个对象引用所指向的内存区块已经被错误的回收并重新分配给新的对象了,程序如果继续使用这个引用的话会造成不可预期的结果。开发人员有可能忘记显式的调用释放内存转载 2011-02-02 10:26:00 · 9080 阅读 · 0 评论 -
java -verbose命令
<br />java -verbose[:class|gc|jni] 在输出设备上显示虚拟机运行信息。<br />1.java -verbose:class<br />在程序运行的时候究竟会有多少类被加载呢,一个简单程序会加载上百个类的!你可以用verbose:class来监视,在命令行输入java -verbose:class XXX (XXX为程序名)你会在控制台看到加载的类的情况。<br /> verbose和verbose:class含义相同,输出虚拟机装入的类的信息,显示的信息格式如下: [Lo转载 2011-02-16 09:19:00 · 31882 阅读 · 1 评论 -
持续集成
<br />《持续集成》总结了10条实践,它们分别为: a.只维护一个源码仓库<br />自动化构建<br />让构建自行测试<br />每人每天向主干提交代码<br />每次提交都应在持续集成机器上构建主干<br />保持快速的构建<br />在模拟生产环境中测试<br />让每个人都能轻易获得最新的可执行文件<br />每个人都能看到进度<br />自动化部署<br />原始文章距今已10年有余,这在软件行业中算是很长的时间了,但我们都能看到Martin总结的这些实践依旧闪耀着光芒,依旧有很多转载 2011-02-16 09:43:00 · 1415 阅读 · 0 评论 -
线程间的通信-生产消费者模式
<br />JAVA线程间通信问题 <br /><br />有很多现实问题要求不仅要同步的访问同一共享资源,而且线程间还彼此牵制,通过相互通信来向前推进。那么,多个线程之间是如何进行通信的呢? <br /><br /><br /><br />解决思路 <br />在现实应用中,很多时候都需要让多个线程按照一定的次序来访问共享资源,例如,经典的生产者和消费者问题。这类问题描述了这样一种情况,假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中的产品取走消费。如果仓库中没有产品,则生产者可原创 2011-04-08 18:27:00 · 1287 阅读 · 0 评论 -
几种远程传输协议比较
一、综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服转载 2011-04-25 09:51:00 · 5806 阅读 · 0 评论 -
使用beanutils动态排序
1.beanCompartor 动态排序还是通过反射,动态设定Bean按照哪个属性来排序,而不再需要在bean的Compare接口进行复杂的条件判断。List peoples = ...; // Person对象的列表Collections.sort(peoples, new BeanComparator("age"));如果要支持多个属性的复合排序,如"Order By la原创 2016-01-04 09:24:32 · 777 阅读 · 0 评论 -
hscode & equals
1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。equals()方法在object类中定义如下:Java代码 public boolean equals(Object obj) {return (this == obj);} public boolean equals(Object obj) {转载 2016-05-20 21:13:42 · 348 阅读 · 0 评论 -
hashcode
自个实现hashcode. ,一个对象进行比较时,要实现hashCode 和equals()方法。@Overridepublic int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; //ID 为类的某一个属性 return result;}@原创 2016-05-21 19:30:20 · 441 阅读 · 0 评论 -
对象序列化。
1、利用jdk自带的 (ObjectOutPutStream.writeObject ,ObjectInputStream.readObject())public static byte[] ObjectToByte(java.lang.Object obj) { byte[] bytes = null; try { // obje原创 2016-05-21 23:24:57 · 321 阅读 · 0 评论 -
线程池合理配置
要想合理的配置线程池,就必须首先分析任务特性,可以从以下几个角度来进行分析:任务的性质:CPU密集型任务,IO密集型任务和混合型任务。任务的优先级:高,中和低。任务的执行时间:长,中和短。任务的依赖性:是否依赖其他系统资源,如数据库连接。任务性质不同的任务可以用不同规模的线程池分开处理。CPU密集型任务配置尽可能少的线程数量,如配置Ncpu+1个线程的线程池。IO密集型任务则由于需原创 2016-07-10 19:34:52 · 1527 阅读 · 0 评论 -
非阻塞同步
非阻塞同步:client:public class SocketClientDaemon { public static void main(String[] args )throws Exception{ CountDownLatch countDownLatch = new CountDownLatch(10); //开启10个线程 ,同时发原创 2016-07-10 19:37:15 · 325 阅读 · 0 评论 -
java内存泄漏
<br /> 1 引言<br /> Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题。其实,这种想法是不正确的,因为Java 也存在内存泄漏,但它的表现与C++不同。如果正在开发的Java 代码要全天24 小时在服务器上运行,则内存漏洞在此处的影响就比在配置实用程序中的影响要大得多,即使最小的漏原创 2010-07-29 10:49:00 · 488 阅读 · 0 评论 -
java 内存泄漏的真正原因
<br />1。流失监听器问题,在awt、swing编程中,给组件添加了事件监听器,这些组件的生命周期如果很长的话,监听器对象将不能被正确回收。关于GUI编程我不是很熟悉,这一点存有疑问,因为显然你触发一个按钮的事件,当然是一直期待同样的行为发生,如果删除了监听器或者使用弱引用让JVM回收不符合业务逻辑和用户体验。<br /><br />2。集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没有引原创 2010-07-23 16:11:00 · 553 阅读 · 0 评论 -
native2ascii
JDK中自带的native2ascii功能还是比较强的。简单做以下介绍。native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。用法:native2ascii [-reverse] [-encoding 编码] [输入文件转载 2009-08-05 10:14:00 · 643 阅读 · 0 评论 -
源缓存包 EHCache 全接触[转载]
源缓存包 EHCache 全接触[转载]2007-12-18 11:43EHCache 是一个纯java的,在Hibernate2.1充当可插入的的在进程中的缓存,它具有以下缓存,最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。 官方网站 http://ehcache.sourceforge.net/ ----------------------原创 2009-08-28 13:31:00 · 405 阅读 · 0 评论 -
同步
Map cache = Collections.synchronizedMap(new HashMap()); 做缓存!原创 2009-11-06 18:01:00 · 285 阅读 · 0 评论 -
对象引用-置空
1: 对于,循环创建的对象(在heap中分配的对象,在stack中分配的不用管,程序执行结束自动清除内存),在调用完毕后,注意给它置空以便于内存回收!原创 2009-11-11 09:25:00 · 768 阅读 · 0 评论 -
初步实现声明式事物
import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Propert原创 2009-11-13 14:26:00 · 562 阅读 · 0 评论 -
java性能调优
1.循环 在重要的循环里,消除循环终止判断时的方法调用。 例如:将for(int i=0; i ... } 替换为… for(int i=0, n=collection.size();i ... } 通常,把与循环index不相关的移到循环的外面 如:for(int i=0原创 2009-11-17 15:02:00 · 1390 阅读 · 0 评论 -
实现事件监听
基于SPRING的事件处理其实很简单,初学者不必一开始就担心搞不懂,本文先是介绍完全基于SPRING的事件监听实现,然后依葫芦画瓢自已做一个性能更好事件监听小框架。 为何要使用事件监听,而不是直接调用?打个比方,在系统删除一个用户时,需要把用户的其他信息和行为记录一起删除,此时最容易想到的是:删除用户时,调用其他Service类接口删除与之相关的信息和用户行为记录,但是用户是一个基础转载 2009-11-20 09:24:00 · 807 阅读 · 0 评论 -
实现推技术
comet是HTTP长连接,就是在HTTP发送请求时,服务器不立刻发送响应信息给客户端, 而是保持着连接,等待一定情况发生后才把数据发送回去给客户端。所以用comet可以实现服务器端的数据实时地发送给客户端。 本文主要是用java和js来简单地实现comet,最后附上源码和使用例子。 在客户端用XMLRequest发送请求到服务器,在服务器端用一个servl转载 2009-11-23 12:01:00 · 524 阅读 · 0 评论 -
java5.0新特性1-静态导入
1. 静态导入-为java5.0的新特性。 先来看下普通的import是什么作用,import的作用就是在写代码的过程中,可以少写包名。用于导入一个类或一个包下的所有类。 而静态导入用于导入类中的某个静态方法(属性)或所有的静态方法(属性),语法为:import static StaticClass类中定了静态常量及方法package com.study.s原创 2010-01-22 21:50:00 · 497 阅读 · 0 评论 -
java实现对象池
/* * @(#)ObjectPoolManager.java 1.00 2005-5-1 * * Copyright 2005 BeanSoft Studio. All rights reserved. * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package beansoft.util;import java.转载 2010-03-04 14:37:00 · 500 阅读 · 0 评论 -
常用的过滤器
在于自己收集好的东西,谢谢作者。 Java代码 1. 五个有用的过滤器 2. 3. 一、使浏览器不缓存页面的过滤器 4. import javax.servlet.*; 5. import javax.servlet.http.HttpServletResponse; 6. import java.io.IOExceptio转载 2010-03-05 23:36:00 · 1056 阅读 · 0 评论 -
高效率java编程
1:考虑使用静态工厂方法代替构构方法来实例化类。2:使用私用构构函数,使类具有不可实例化的能力。3:避免创建重复的对象4:消除过期的对象的使用5:避免使用终结函数6:使类和成员的可访问性最小7:接口优先于抽象8:为所有的参数进行有效性检查9:谨慎使用重载10:使用0长度的数组,而不是空11:将局部变量的作用域最小化12:如果计算要求精确,不要使用floa原创 2010-04-22 15:17:00 · 509 阅读 · 0 评论 -
Commons Digester
Commons DigesterCommons Digester 1.6提供了将XML转化为对象的最简单的方法。Digester已经由OReilly网站上的两篇文章介绍过了:“学习和使用Jakarta Digester”,作者是Philipp K. Janert,和“使用Jakarta Commons, 第二部分”,作者是Vikram Goyal。两篇文章都演示了XML规则集的使用,但如何在XM转载 2010-04-30 11:57:00 · 1343 阅读 · 0 评论 -
eclipse内存不足解决方法
<br />from:http://www.javatang.com/archives/2007/12/03/1653250.html<br /> <br />MyEclipse内存不足<br />2008年05月05日 星期一 15:59<br />“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小于5%的非堆内存是空闲的。所以我们只要将这个转载 2010-06-30 10:59:00 · 628 阅读 · 0 评论 -
java打开本地文件
try { Runtime.getRuntime().exec("C://xxx.exe"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }原创 2010-05-05 17:26:00 · 730 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
<br />遇到java内存溢出的问题,在网上查找到的资料,并适当的做了修改<br />java.lang.OutOfMemoryError: Java heap space <br />在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。 <br />JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4转载 2010-07-08 09:19:00 · 701 阅读 · 0 评论 -
多线程编程-减少上下文切换(1)
1、多线程编程-1-如何减少上下文切换 我们在使用多线程时,不是多线程就能提升程序的执行速度,程序在执行时,多线程 是 CPU通过给每个线程分配CPU时间片来实现的,时间片 是CPU分配给每个线程执行的时间,因时间片非常短,所以CPU通过不停地切换线程执行。什么是上下文切换: 操作系统中,CPU时间分片切换到另一个就绪的线程,则需要保存当前线程的运行的位置,同时需要加载需原创 2016-07-31 21:40:17 · 5193 阅读 · 0 评论