随笔分类 -  Java

Java中new和newInstance的区别
摘要:1、类的加载方式不同 在执行Class.forName("a.class.Name")时,JVM会在classapth中去找对应的类并加载,这时JVM会执行该类的静态代码段。在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。 使用关键字new创建一个类的时候,这个类可以没有被加载,一般也不需要该类在classpath中设定,但可能需要通过classlaoder来加载。2、所调用的构造方法不尽相同 new关键字能调用任何构造方法。 newInstance()只能调用无参构造方法。3、执 阅读全文

posted @ 2012-09-10 23:47 linzuxin 阅读(371) 评论(0) 推荐(0)

深入研究Java类加载机制
摘要:类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。一、简单过程Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,JVM会将HelloWorld.class加载到内存中,并形成一个Class的对象HelloWorld.class。其中的过程就是类加载过程:1、寻找jre目录,寻找jvm.dll,并初始化JVM;2、产生一个Bootstrap Loader(启动类加载器);3、Bootstrap Loa 阅读全文

posted @ 2012-09-10 23:41 linzuxin 阅读(174) 评论(0) 推荐(0)

REST架构
摘要:REST的架构设计 REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。 REST架构遵循了CRUD原则,CRUD原则对于资源只需要四种行为:Create(创建)、Read(读取)、Update(更新)和Delete(删除)就可以完成对其操作和处理。这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运.. 阅读全文

posted @ 2012-08-22 11:33 linzuxin 阅读(190) 评论(0) 推荐(0)

Eclipse插件的安装方法三则
摘要:做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件。一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了。下面介绍Eclipse插件的安装方法。Eclipse插件的安装方法大体有以下三种:第一种:直接复制法假设你的Eclipse的在(C:\eclipse), 解压你下载的 eclipse 插件或者安装eclipse 插件到指定目录AA(c:\AA)文件夹,打开AA 文件夹,在AA文件夹里分别包含两个文件夹features和plugins ,然后把两个文件夹里的文件分别复制到eclipse下所对应的文件夹下的features 和pl 阅读全文

posted @ 2012-07-08 18:30 linzuxin 阅读(196) 评论(0) 推荐(0)

slf4j配置实例
摘要:1、简介SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输 阅读全文

posted @ 2012-07-03 16:54 linzuxin 阅读(1083) 评论(0) 推荐(0)

Java中的五种单例模式实现方法
摘要:package singleton; /** * @author lei * 单例模式的五种写法: * 1、懒汉 * 2、恶汉 * 3、静态内部类 * 4、枚举 * 5、双重校验锁 * 2011-9-6 */ /** *五、 双重校验锁,在当前的内存模型中无效 */ class LockSingleton{ private volatile static LockSingleton singleton; private LockSingleton(){} //详见:http://www.ibm.com/developerworks/cn/java/j-dcl.... 阅读全文

posted @ 2012-05-18 18:24 linzuxin 阅读(174) 评论(0) 推荐(0)

Gson简要使用笔记
摘要:经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。下面是一个简单的例子:Person实体public class Person { private String name; private int age; /** * @return the name */ public String getName() { return name; } /** * @pa... 阅读全文

posted @ 2012-05-03 14:38 linzuxin 阅读(168) 评论(0) 推荐(0)

Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
摘要:ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图 阅读全文

posted @ 2012-03-27 20:54 linzuxin 阅读(113) 评论(0) 推荐(0)

HashMap和Hashtable的区别
摘要:导读:1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的一个Collection。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashta 阅读全文

posted @ 2012-03-27 20:49 linzuxin 阅读(137) 评论(0) 推荐(0)

JAVA高性能编程
摘要:1.这里比较一下ArrayList和LinkedList:ArrayList是基于数组,LinkedList基于链表实现。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。查找操作indexOf,lastIndexOf,contains等,两者差不多。这里只是理论上分析,事实上也不一定,比如ArrayList在末尾插入和删除数据就不设计到数据移动,不过还是有这么个建议:随机访问比较多的话一定要用ArrayList而不是Linked 阅读全文

posted @ 2012-03-27 20:10 linzuxin 阅读(198) 评论(0) 推荐(0)

ArrayList,LinkedList,Vector的关系和区别
摘要:一、同步性ArrayList,LinkedList是不同步的,而Vector是的。所以如果要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费开销。但在多线程的情况下,有时候就不得不使用Vector了。当然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但效率可能会有所降低。二、数据增长从内部实现机制来讲ArrayList和Vector都是使用Objec的数组形式来存储的。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度, 阅读全文

posted @ 2012-03-27 19:49 linzuxin 阅读(164) 评论(0) 推荐(0)

字符编码笔记:ASCII,Unicode和UTF-8
摘要:今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对 阅读全文

posted @ 2012-03-24 10:12 linzuxin 阅读(117) 评论(0) 推荐(0)

JAVA NIO 简介
摘要:1. 基本 概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准 io 回顾 Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\OutputStream( 字节流 ) :一次传送一个字节。 Reader\Writer( 字符流 ) :一次一个字符。3. nio 简介 nio 是 jav... 阅读全文

posted @ 2011-11-29 11:25 linzuxin 阅读(139) 评论(0) 推荐(0)

jdk环境变量设置
摘要:windows xp下配置JDK环境变量: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:/java/jdk1.5.0_08; 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择“高级”选项卡,点击“环境变量”; 4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”; 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:/java/jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,. 阅读全文

posted @ 2011-11-16 22:26 linzuxin 阅读(183) 评论(0) 推荐(0)

Statement和PreparedStatement批量更新
摘要:1)addBatch()将一组参数添加到PreparedStatement对象内部。2)executeBatch()将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。Statement:1)addBatch(Stringsql)方法会在批处理缓存中加入一条sql语句。2)executeBatch()执行批处理缓存中的所有sql语句。注意:PreparedStatement中使用批量更新时,要先设置好参数后再使用addBatch()方法加入缓存。批量更新中只能使用更改、删除或插入语句。Statement批量处理和事务代码如下: package com.ambow.da 阅读全文

posted @ 2011-11-10 08:57 linzuxin 阅读(260) 评论(0) 推荐(0)

Java IO学习笔记:字符流
摘要:字符流的处理和字节流差不多,API基本上完全一样,就是计量单位不同。另外字符流还提供一些其他的处理流,比如按行读取流、字符串流等等。特别注意,当文件有汉字时,注意编码格式://设置流的编码格式,防止乱码InputStreamReader isr = new InputStreamReader(new FileInputStream("f:/poem.txt"), "gbk");BufferedReader fReader = new BufferedReader( isr );下面给个例子看看:importjava.io.*;/*** 字符流测试** @ 阅读全文

posted @ 2011-11-06 11:45 linzuxin 阅读(168) 评论(0) 推荐(0)

Java IO学习笔记:字节流
摘要:字节流是最基本的流,文件的操作、网络数据的传输等等都依赖于字节流。而字符流常常用于读取文本类型的数据或字符串流的操作等等。关于字节流的API,没什么好说的,看看就知道了。这里挑几个关键点:一、InputStream的API1、public int read()从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。2、public int read(byte[] b)从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少 阅读全文

posted @ 2011-11-06 11:11 linzuxin 阅读(141) 评论(0) 推荐(0)

Java IO学习笔记:概念原理
摘要:一、概念Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。二、分类流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕。流分类的方式很多:1、按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序。2、按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2b 阅读全文

posted @ 2011-11-06 11:08 linzuxin 阅读(162) 评论(0) 推荐(0)

Java对中文字符串排序处理
摘要:ArrayList<String> nameList = new ArrayList<String>();nameList.add("心立方 2011-10-24 41岁家庭主妇挑战世界最高峰");nameList.add("不见不散 2011-10-24 当爱情遭遇选择恐惧症");nameList.add("万有引力");nameList.add("康熙来了 2011-10-24 婚礼上最大咖的伴郎王力宏");nameList.add("梦想飞驰");Comparato 阅读全文

posted @ 2011-10-26 10:55 linzuxin 阅读(351) 评论(0) 推荐(0)

导航