java
文章平均质量分 69
iteye_4120
这个作者很懒,什么都没留下…
展开
-
java的参数传递方式
对于java来说,唯一的参数传递方式就是传值!对于对象的传递来说,传递的是内存地址的拷贝。http://java.ccidnet.com/art/3737/20050527/472879_1.htmlhttp://www.an-ping.com/forum/blog/detail.asp?blog_id=2&content_id=127...2008-02-01 17:50:26 · 76 阅读 · 0 评论 -
Java中HashMap,LinkedHashMap,TreeMap的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍...原创 2010-11-25 11:49:39 · 61 阅读 · 0 评论 -
Map 四种同步方式的性能比较
如果需要使 Map 线程安全,大致有这么四种方法:1、使用 synchronized 关键字,这也是最原始的方法。代码如下Java代码 synchronized(anObject) { value = map.get(key); } synchronized(anObject){ val...原创 2010-11-25 11:50:53 · 75 阅读 · 0 评论 -
synchronized原理
每个JAVA对象都有一把锁, 当有多个线程同时访问共享资源的时候, 需要synchronized 来控制安全性, synchronized 分 synchronized 方法 和synchronized 快,使用synchronized 块时, 一定要显示的获得该对象的锁(如synchronized (object))而方法则不需要。 JAVA 的内存模型是对每一个...原创 2010-11-29 14:40:05 · 122 阅读 · 0 评论 -
copy-on-write
Copy-on-write (sometimes referred to as "COW") is an optimization strategy used in computer programming. The fundamental idea is that if multiple callers ask for resources which are initiall...原创 2010-12-08 10:29:59 · 67 阅读 · 0 评论 -
ResourceBundle加载文件的顺序
If a ResourceBundle class for the specified Locale does not exist, getBundle tries to find the closest match. For example, if ButtonLabel_fr_CA_UNIX is the desired class and the default Locale...原创 2011-12-24 15:01:47 · 491 阅读 · 0 评论 -
异常处理框架
The Nature of ExceptionsBroadly speaking, there are three different situations that cause exceptions to be thrown: Exceptions due to programming errors: In this category, exceptions are gen...原创 2011-09-07 14:57:35 · 106 阅读 · 0 评论 -
java中Thread与Runnable的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限,下面看例子: package org.thread.demo; class MyThread extends Thread{ ...原创 2011-02-25 20:42:21 · 110 阅读 · 0 评论 -
正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。 锁提供了两种主要特性:...原创 2011-03-04 09:34:43 · 62 阅读 · 0 评论 -
java 范型
Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明...原创 2011-03-09 15:15:34 · 83 阅读 · 0 评论 -
java字节码的操纵
http://www.infoq.com/cn/articles/cf-java-byte-code 在一般的Java应用开发过程中,开发人员使用Java的方式比较简单。打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了。这种开发模式背后的过程是:开发人员编写的是Java源代码文件(.java),IDE会负责调用Java的编译器把Java源代码编译成...原创 2011-03-09 16:35:38 · 91 阅读 · 0 评论 -
java annotation
JDK内置的annotaion1. @Target表示该注解用于什么地方,可能的 ElemenetType 参数包括: ElemenetType.CONSTRUCTOR 构造器声明 ElemenetType.FIELD 域声明(包括 enum 实例) ElemenetType.LOCAL_VARIABLE 局部变量声明 ElemenetType.METHOD 方法声明 ...原创 2011-03-10 14:58:06 · 71 阅读 · 0 评论 -
SSL exception: "No subject alternative names matching IP address ..." & "No name
When you want to establish an SSL connection like this; URL url = new URL("https://localhost:9443/soap_rpc"); You may get an exception like this; javax.net.ssl.SSLHan...原创 2012-02-08 09:35:51 · 2125 阅读 · 0 评论 -
jvm的高性能
jdk将源代码编译成字节码之后,由JVM在运行期对其进行解释执行。由于解释执行的效率比较低,jdk提供了将字节码编译成机器码的运行方式,以提高速度。这种运行时的编译器称为JIT编译器。Sun jdk提供两种编译模式:client compiler(-client), server compiler(-server).client compiler称为C1,特点是只做少量优化,占用内存小,适...原创 2011-04-25 13:48:08 · 126 阅读 · 0 评论 -
java connect https
When I use java to connect HTTPs, it got exception:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertP...原创 2011-05-04 15:37:27 · 94 阅读 · 0 评论 -
使用java连接https的问题
在使用hudson的过程中,我们需要发送邮件的功能。但是公司的邮箱是需要ssl加密的,这样仅仅配置邮件地址,点击发送测试邮件的时候,就会报java exception:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.sec...原创 2012-03-19 15:41:10 · 147 阅读 · 0 评论 -
java的内存泄漏
1 引言 Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题。其实,这种想法是不正确的,因为Java 也存在内存泄漏,但它的表现与C++不同。如果正在开发的Java 代码要全...原创 2010-11-25 10:52:44 · 82 阅读 · 0 评论 -
解析Java对象的equals()和hashCode()的使用
前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况 下,这两个函数是不用考虑的,直接使用它们的默认设计就可以了。但是在一些情况下,这两个函数最好是自己设计,才能确保整个程序的正常运行。最常见的是当 一个对象被加入收集对象(collection object)时,这两个函数必须自己设计...原创 2010-11-25 10:49:47 · 69 阅读 · 0 评论 -
apache-commons PropertyConfiguration
apache-configurations 是非常好用的一个工具包,但是最近在使用PropertyConfiguration的时候,发现了一个要注意的地方。代码如下:Configuration c = new PropertyConfiguration();c.setProperty("key", "value1=1;value2=2");c.getString("key"); 最后一...2009-01-20 15:18:45 · 82 阅读 · 0 评论 -
java serialization
just take notes to 'discover the secrets of java serialization.http://java.sun.com/developer/technicalArticles/Programming/serialization/ Default Mechanism:Rule #1: The object to be persiste...2008-06-20 11:22:38 · 108 阅读 · 0 评论 -
怎样让eclipse自动部署工程
[scenario]as we know Eclipse default don't have such auto-deploy functions. So if we havechange the code or lib in src environment, we must copy them into deploy environment,can we simplify it? Ca...2008-07-02 10:14:14 · 117 阅读 · 0 评论 -
Properties 使用的一个陷阱
通常我们都会采用java.util.Properties来保存配置,它可以从文件中读取配置,非常方便。有时我们通过自己的config文件获取配置,希望通过Properties来存取配置并进行传递。properties保存配置有两种方式,一种是put,另一个是setProperty()。如果我们通过put放置一个int对象的时候,通过getProperty()就不能获取到!原来propertie...2008-08-15 11:13:04 · 116 阅读 · 0 评论 -
ByteArrayOutputSteam使用中的内存效率
在需要把几个byte[]拼成一个新的byte[]的时候,我们可能会使用ByteArrayOutputStream,它可以简化操作。但是实际的使用过程中,发现它所使用的memory很高,比如原始的几个byte[]总共大小是5M,那么经过ByteArrayOutputStream处理过程的话,总共需要使用大概20M以上的内存。我们通常的处理程序如下: ByteArrayOutputStream o...2008-08-29 16:05:11 · 759 阅读 · 0 评论 -
use simpleMail to send email
通过java发送邮件的最简单方式是使用SimpleMail,它对JavaMail进行了封装,操作非常简单。示例如下: SimpleEmail email=new SimpleEmail(); email.setCharset("UTF-8"); email.setHostName(mailModule.getMailServer()); if (m...2008-08-29 17:38:00 · 440 阅读 · 0 评论 -
java classloader
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloader Java类的加载Java类的加载是由类加载器来完成的。一般来说,类...原创 2008-09-26 15:10:02 · 86 阅读 · 0 评论 -
针对bean list 的某个属性进行排序和比较
当我们需要对一个List<Object> 进行排序,排序规则为根据bean的某个属性。通过对apache commons的研究,发现里面已经提供了很好的方法:Collections.sort(beanList, new BeanComparator("property")); BeanComparator似乎是根据bean的property对象来进行比较。在BeanUtils.g...2008-11-19 11:49:05 · 264 阅读 · 0 评论 -
anonymous class
anonymous classesA type of inner class that has no name that you define right in the middle of a method (where static init blocksand instance init blocks count as methods). You define it, and cr...原创 2010-02-04 10:46:02 · 122 阅读 · 0 评论 -
java exception
我们有时需要把exception堆栈信息输出到日志文件当中,但是有时框架的异常会先出来,只有到cause by当中才能看到真正的内容。 例如:通过反射调用方法,如果方法里面有异常,我们会捕获到一个InvocationTargetException的异常。我们只有取它的.getCause()才能取到我们需要的异常内容。 // invoke the impl. ...原创 2010-02-10 16:53:14 · 135 阅读 · 0 评论 -
Calendar
对于时间的运算,应当使用Calendar:Calendar c = Calendar.getInstance(); //nowc.add(Calendar.HOUR, -24);Date threshold = c.getTime();原创 2010-09-17 15:44:49 · 82 阅读 · 0 评论 -
httpclient的并发连接问题
昨天的搜索系统又出状况了,几个库同时重建索引变得死慢。经过一个上午的复现分析,确定问题出现httpclient的使用上(我使用的是3.1这个被广泛使用的遗留版本)。搜索系统在重建索引时,是并发多个线程(默认是8个)不停的从PHP客户端取数据(当然,从另一个角度来说,搜索系统是客户端,PHP端是服务端),取回后放到一个队列里由单独的一个或多个线程更新索引。在测试环境复现发现,对于一个请...原创 2011-05-24 16:14:08 · 415 阅读 · 0 评论 -
J2SE5中可变数量形参Varargs的使用
J2SE 1.5提供了“Varargs”机制。借助这一机制,可以定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。本文介绍这一机制的使用方法,以及这一机制与数组、泛型、重载之间的相互作用时的若干问题。 到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数...原创 2010-05-13 10:50:03 · 114 阅读 · 0 评论 -
使用HttpURLConnection注意设置超时
这几天测试Paypal的支付接口PayflowAPI,发现在通信过程中如果网络中断,那么程序就会挂死。虽然API本身提供了Timeout的设置,但似乎不管用。经过测试发现,对方的代码实现只是设置了connectTimeout,这样在建立连接的时候如果网络中断,那么超时以后就会报出错误。但如果连接建立以后网络中断,则无法超时。这说明程序本身没有设置readTimeout。 正确的方法应当...原创 2010-05-26 11:43:27 · 1455 阅读 · 0 评论 -
java map
1. Map key: 同一个key必须hashcode相同。2. Note: great care must be exercised if mutable objects are used as map keys. The behavior of a map is not specified if the value of an object is changed in a ma...原创 2010-11-25 10:40:58 · 135 阅读 · 0 评论 -
糟糕透顶的axis2
我记得很早以前在网上看过文章,大致讲axis2的质量如何如何糟糕,说是一堆学生在一个公司主导下堆砌起来的代码。我最近的项目是实实在在领教了。 我们最近的一个项目需要调用第三方公司的ws接口。对方提供的是axis2的示例代码。为了减少转换的成本,我们舍弃了原有的axis1生成客户端代码,改为使用axis2。结果不久就碰到了第一个问题:跟spring ws冲突,造成spring ws...2015-02-06 15:27:33 · 318 阅读 · 0 评论