
Java基础
泊川
现任阿里巴巴研发工程师,多年从业经验,技术扎实精湛,专注互联网、企业级应用系统开发。
展开
-
JAXB将JAVA对象转换为XML时CDATA的问题
对Java对象转换为xml字符串时,如果有特殊字符如<>必须要是用<![CDATA[]]>来声明。我先尝试了使用XStream解决这个问题也有使用MOXy CDATA注解解决,最后发现,都存在一定的缺陷,甚至不能正常的实现该功能。最终解决方案有两个,都可以解决这个问题,但是第一个方案由于引用了sun的专有API,在编译时会存在警告,使用了内部的API并不是值得推荐的。但是这里也贴出来,供大家参考。原创 2016-02-16 16:43:11 · 6761 阅读 · 2 评论 -
JAVA重载的规则与意义
首先看JAVA重载的规则:1、必须具有不同的参数列表;2、可以有不同的返回类型,只要参数列表不同就可以;3、可以有不同的访问修饰符;4、可以抛出不同的异常;5、方法能够在一个类中或者在一个子类中被重载。示例代码: public class HelloWorld{ public HelloWorld() { } public static vo原创 2014-06-17 14:47:13 · 9981 阅读 · 0 评论 -
JAVA自带wsimport生成webservice客户端代码
在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。 在命令提示符中使用如下命令:wsimport -keep -p com.demo.client原创 2014-06-17 14:46:24 · 1383 阅读 · 0 评论 -
HashMap和Hashtable和HashTree和ConcurrentMap的区别
1.HashMap不是线程安全 HashMap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2.HashTable是线程安全的一个Collection。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们原创 2014-06-17 14:46:05 · 3454 阅读 · 1 评论 -
java在处理大数据的时候一些小技巧
众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且这原创 2014-06-17 14:46:03 · 793 阅读 · 0 评论 -
Vector,ArrayList, Linkedlist的区别
1 ArrayList底层是采用数组实现的(并且改数组的类型是Object类型的)2 如果是jdk6的话,采用Array.of()方法来生成一个新的数组,如果是jdk5.0的话,使用的是System.arraycopy方法(将数组拷贝)3 List list = new ArrayList();时,底层会生成一个长度为10的数组来存放对象,如果预先知道list会存放多少个对象的话,最好通过原创 2014-06-17 14:46:01 · 560 阅读 · 0 评论 -
String和StringBuffer区别
String是一个非可变性的类,这种类的特点是状态固定(不存在任何修改对象的方法),在该对象的生存周期内,它的值是永远不变的(它是线程安全的),它们更容易设计、实现、使用,不易出错,更加安全。 由于String类是支持非可变性的,所以,当执行tmp +=”x”的时候,实际上是另外创建了一个对象,而tmp原来指向的那个对象就成了垃圾(当它没有其它引用的时候),这样的话一个循环原创 2014-06-17 14:45:59 · 460 阅读 · 0 评论 -
Session 与 Cookie--- 深入分析 Java Web 技术内幕,第 10 章
Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题。在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题。其实这个问题回答起来既简单又复杂,简 单是因为它们本身只是 HTTP 协议中的一个配置项,在 Servlet 规范中也只是对应到一个类而已;说它复杂原因在于当我们的系统大到需要用到很多 Cookie 的时候,我们不得不考虑 HTT原创 2014-06-17 14:45:55 · 956 阅读 · 0 评论 -
File中的deleteOnExit正确用法
Java的File类中有两个delete方法:delete和deleteOnExitdelete原创 2014-06-17 10:32:24 · 20688 阅读 · 0 评论 -
对单元测试的一点感悟——这是一把双刃剑
想当年毕业设计就是测试驱动开发,所以从刚入行开始就对单元测试、测试驱动开发有比较深入的认识,刚开始一直作为敏捷开发的忠实粉丝。但是几年工作 下来,我开始对单元测试持矛盾的态度:单元测试当然是一种很好的创举,但是具体使用当中,它却经常会产生副作用。这当然不是因为单元测试这一思想有问题, 而是实践这一思想的人的问题。 当前很多公司使用单元测试的怪现象:很多公司为了说出去好看——我们的开发遵循敏原创 2014-06-17 14:46:39 · 695 阅读 · 0 评论 -
点评网络上流传的提高性能的Java编码方式
下面是网络上流传的关于提高性能的做法,本人对其中一部分做法做了些点评: 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的原创 2014-06-17 14:47:21 · 445 阅读 · 0 评论 -
File的getPath getAbsolutePath和getCanonicalPath的不同
1.getPath()与getAbsolutePath()的区别public static void test1(){ File file1 = new File(".\\test1.txt"); File file2 = new File("D:\\workspace\\test\\test1.txt"); System.out.pr原创 2014-06-17 14:47:32 · 674 阅读 · 0 评论 -
JDK版本1.6和6.0到底指什么
Both version numbers (1.6.0 and 6) are used to identify this release of the Java Platform. Version 6 is the product version, while 1.6.0 is the developer version. The number 6 is used to reflect the e原创 2014-06-17 14:48:37 · 4720 阅读 · 0 评论 -
List进行remove和add操作时缘何会报UnsupportedOperationException
看段简单的代码:String[] arry={"abc","eee","fff"};List list= Arrays.asList(arry);list.add("eeef");运行结果:Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add原创 2015-05-22 10:45:03 · 776 阅读 · 0 评论 -
Jackson转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx
使用stackoverflow上的代码描述这个问题: ObjectMapper mapper = new ObjectMapper(); List list = new ArrayList(); try { list = mapper.readValue(con.getInputStream(), ArrayList.class); } ca原创 2015-01-12 16:13:04 · 46469 阅读 · 2 评论 -
Java中用内存映射处理大文件
有如下情况下可以用到内存文件映射技术解决问题: 1.不要复制文件中所有的数据,只需要修改文件中局部的数据。 2.并行/分段处理大文件。 如下代码示使用javaNIO局部修改文件中指定位置的部分数据: /** * 修改文件中的某一部分的数据测试:将字定位置的字母改为大写 * @param fName :要修改的文件名字原创 2014-06-17 14:50:01 · 1033 阅读 · 0 评论 -
Java中的字符串驻留(String Interning)
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;3. String str=”kvill”; String str=new String (“k原创 2014-06-17 14:49:32 · 1113 阅读 · 0 评论 -
理解ThreadLocal
ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为T原创 2014-06-17 14:49:21 · 673 阅读 · 0 评论 -
Java发送内嵌图片的邮件
使用Java发送邮件时,既需要发送html文档又需要在邮件中内嵌图片(非附件形式),这里封装了一个类使用JavaMail组织的邮件发送,支持多张图片发送,并指定图片位置。注意img标签src要如下写"其中abcd对应mageMailDto#imageCid,可以自行定义,不要出现重复。发送方法,注意替换几个邮件参数,如host、user、password /** * 发送内嵌图片原创 2016-03-02 18:22:49 · 5986 阅读 · 0 评论 -
你真的精通Java吗?
简历和自我介绍上经常能够读到“精通Java”这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点、不能给自己加分了。可是事实真是这样吗?对于语言的学习,我有一种观点,一是纵向,即要选择一门自己认为合适的语言学到有相当的深度。二在于横向,即要学习不同类型、不同历史和不同门派的语言:既有底层的语言,也有高级语言;接触一些动态语言、函数式语言;了解一些不同语言的编原创 2014-06-17 14:49:11 · 812 阅读 · 0 评论 -
浅谈JavaBean,Entity Bean,Enterprise Bean等Bean以及POJO的含义
一、对于java bean,就是一个java模型组件,他为使用java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。 java bean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本!JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaB原创 2014-06-17 14:48:52 · 661 阅读 · 0 评论 -
java反射的性能问题
java反射效率到底如何,花了点时间,做了一个简单的测试.供大家参考.测试背景: 1. 测试简单Bean(int,Integer,String)的set方法2. loop 1亿次3. 测试代码尽可能避免对象的创建,复发方法的调用,仅仅测试set方法的耗时测试结果: 场景 本机测试结果(XP,双核,2G)服务器测试结果(Linux,XEN虚拟机,8核,5.5G)原创 2014-06-17 14:48:39 · 1010 阅读 · 0 评论 -
Java中利用位与和位或进行函数参数优化的技巧
如果你留意过JDK中正则表达式处理的源码就会发现其实在java.util.regex.Pattern中就使用了这个技巧,这样我们在初始化java.util.regex.Pattern对象时就可以这么写:Pattern pattern=Pattern.compile("\\w",Pattern.CASE_INSENSITIVE|Pattern.COMMENTS|Pattern.MULTILINE);原创 2016-05-17 17:24:11 · 881 阅读 · 0 评论