J2SE&J2EE&J2ME
文章平均质量分 75
fengguowusheng
这个作者很懒,什么都没留下…
展开
-
正确理解ThreadLocal (好贴收藏)
http://www.iteye.com/topic/103804原创 2011-04-20 14:28:09 · 123 阅读 · 0 评论 -
String编码(三) 关于编译
1.疑问JDK编译JAVA文件生成的字节码.class文件是否与文件的编码方式有关,是否与语言环境有关,即Charset.defaultCharset()。2.解决方法1)编写一个简单的JAVA文件,内容如下:package com.siyuan.jdk.test;import java.nio.charset.Charset;public class JDKC...原创 2013-03-19 15:42:09 · 105 阅读 · 0 评论 -
String编码(四) 关于文件处理
1.简介分析JAVA对文件的处理机制。2.读文件JAVA中读文件的方式有直接使用FileReader和使用InputStreamReader。1)FileReader通过API可知,FileReader将使用默认字符编码处理文件。1.1)在D:\FileReaderTest创建两个相同内容的TXT文件,fileReaderTest-GBK.txt和fileReaderT...原创 2013-03-25 17:01:55 · 153 阅读 · 0 评论 -
String编码(五) 文件编码检测
1.简介为了防止读取编码不确定的文本文件时出现乱码现象,我们需要通过一种方法来自动检测文件内容的编码。2.方法1)通过BOM(Byte Order Mark)来检测BOM是一组出险在字节流头位置的字节,用于标识字节的编码格式。例如:UTF-8开头的EF BB BFUTF-16开头的FF FEUTF-16BE开头的FE FF但是并不是所有的编码都有BOM,并且有些...原创 2013-03-26 11:13:09 · 401 阅读 · 0 评论 -
ProcessBuilder & Process
1.ProcessBuilder介绍此类用于创建操作系统进程。每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。每个进程生成器管理这些进程属性:命令 是一个字符串列表,它表示要调用的外部程序文件及其参数(如果有)。在...原创 2013-05-21 16:40:41 · 189 阅读 · 0 评论 -
nio(一)Buffer
1.简介Buffer是一种用于特定的基本类型数据的容器,是特定的基本类型元素的线性、有限序列。1.1 Buffer有四个相当重要的属性:1)capacity:容量,Buffer所能够容纳的基本类型数据的数量。2)mark:标记,Buffer中的一个位置3)position:位置,下一个读写操作的元素在Buffer中的位置。4)limit:限制,禁止读写操作的第一个元素的...原创 2013-05-23 11:23:35 · 83 阅读 · 0 评论 -
nio(二)Buffer的子类
1.简介Buffer针对除boolean之外的每个基本类型数据都有一个实现类,即ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer。它们的基本使用方法已经在Buffer中介绍过了。1)视图缓冲区ByteBuffer可以通过方法将字节缓冲区视为包含其他基本类型值的...原创 2013-05-24 17:34:21 · 376 阅读 · 0 评论 -
nio(三) FileChannel
1.简介 JDK1.4在IO的基础上引入NIO,其目的在于提高速度。速度的提高来自于所使用的结构更接近于操作系统执行I/O的方式:通道和缓冲器。唯一直接与通道交互的缓冲器是ByteBuffer。 FileChannel是用于读取、写入、映射和操作文件的通道,目前不支持直接创建该对象,可通过FileInputStream,FileOutputStream,RandomAcce...原创 2013-05-28 16:27:27 · 114 阅读 · 0 评论 -
ZIP压缩和解压
1.简介JAVA通过ZipInputStream和ZipFile来支持Zip文件的读取,通过ZipOutputStream来压缩文件成为Zip格式,使用时需结合ZipEntry1)关于校验支持Adler32和CRC32两种校验方式,前者速度快一些,后者慢一些,但更准确。PS:当用ZipOutputStream压缩文件时重复执行出现了CRC32值不一致的情况?2)关于编码当...原创 2013-05-29 17:32:53 · 159 阅读 · 0 评论 -
ResourceBundle
1.简介 资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它。使用这种方式,可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。 这使编写的程序可以:1)轻松地本地化或翻译成不同的语言2)一次处理多个语言环境3)以后...原创 2013-12-16 11:04:50 · 183 阅读 · 0 评论 -
关于ClassLoader
1.简介ClassLoader,顾名思义就是类加载器,负责将Class加载到JVM中,将Class字节码重新解析成JVM统一要求的对象格式,除此之外它还负责审查每个类应该由谁加载,它是一种父优先的等级加载机制。2.ClassLoader类结构分析1)protect ... defineClass(...)将一个字节数组转换为 Class 类的实例。注:如果直接调用这个方法生...原创 2013-07-26 10:24:15 · 144 阅读 · 0 评论 -
JVM体系结构
1.关于JVM1)它是一个抽象规范,这个规范约束了JVM到底是一个什么东西,它有哪些组成部分,这些抽象的规范都在《The Java Virtual Machine Specification》中详细描述了。2)一个具体实现,不同的厂商按照这个抽象的规范采用不同的方式在不同的平台上进行实现,如Sun HotSpot,BEA JRockit,IBM J9。3)一个运行实例,当用一个具体...原创 2013-07-26 15:43:43 · 106 阅读 · 0 评论 -
JVM内存管理
1.Java中哪些组件需要用到内存1)堆用于存储Java对象的内存区域,堆的大小在JVM启动时就一次向OS申请完成,通过-Xmx和-Xms两个选项来控制大小,前者表示堆的最大大小,后者表示堆的初始大小。一旦分配完成,堆的大小就将固定,不能在内存不够时再向OS重新申请,同时当内存空闲时也不能将多余的空间还给OS。Java堆中内存空间的管理由JVM来控制,对象创建由Java应用程序控制...原创 2013-07-29 17:41:14 · 110 阅读 · 0 评论 -
String编码(二) 证明JAVA的char编码为UTF-16
1.简介通过程序证明JAVA的char内部编码为UTF-16,而与Charset.defaultCharset()无关。2.程序package com.siyuan.jdk.test;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.util....原创 2013-03-19 09:06:00 · 348 阅读 · 0 评论 -
String编码(一) 关于String.getBytes()
1.简介本次学习的目的是为了弄清JAVA在不同情况下对String处理方式,从而更好的解决String乱码问题。2.获取JAVA中String的编码代码package com.siyuan.jdk.test;import java.io.UnsupportedEncodingException;import java.util.Arrays;public c...原创 2013-03-18 17:46:27 · 465 阅读 · 0 评论 -
Time I18N
TIME I18N : 时间国际化 1. Class Diagram Calendar.setTime(Date date); Calendar.getTime(); 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 历元 格林威治标准时间1970年1月1日的 00:00:00.000 2. 实例通常有两种方式实现Time ...原创 2011-05-14 09:39:51 · 114 阅读 · 0 评论 -
Introspector
Introspector与反射类似,主要是对Java Bean属性、方法等的一种处理方法. 1. Class Diagram 2. 实例 package com.siyuan.jdktest;import java.beans.BeanDescriptor;import java.beans.BeanInfo;import java.beans.Intro...原创 2011-05-17 21:52:34 · 199 阅读 · 0 评论 -
java.lang.Object.clone() 方法
1.说明 protected Object clone() throws CloneNotSupportedException创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。一般来说,对于任何对象 x,如果表达式: x.clone() != x 是正确的,则表达式: x.clone().getClass() == ...原创 2011-09-04 09:57:45 · 160 阅读 · 0 评论 -
HttpSession的线程安全问题及注意事项 (好帖转载)
HttpSession session = request.getSession();List<Product> list = session.getAttribute("productCart");myService.save(list); // 保存购物车数据到数据库这个对象会被多次使用,也会被同一个用户的多个页面使用,所以他对于系统来说是线程不安全的。...原创 2011-09-04 20:23:45 · 118 阅读 · 0 评论 -
JDK工具类Timer
Timer为JDK自带的任务调度工具类。结构简单易用,功能也比较有限,而且容易出现误差。 1.结构简介 Timer:任务调度器 TimerTask:任务接口,所有被Timer调度的任务都需实现此接口 2.实例 /** * TimerTest.java * Create by Administrator at 10:29:18 PM */packag...原创 2011-03-30 23:49:04 · 117 阅读 · 0 评论 -
java.lang.reflect.Proxy
1.简介 Proxy 提供用于创建动态代理类和实例的静态方法(1)动态代理类的属性代理类是公共的、最终的,而不是抽象的未指定代理类的非限定名称。但是,以字符串 "$Proxy" 开头的类名空间应该为代理类保留代理类扩展 java.lang.reflect.Proxy代理类会按同一顺序准确地实现其创建时指定的接口如果代理类实现了非公共接口,那么它将在与该接口相同的...原创 2011-10-30 11:52:38 · 268 阅读 · 0 评论 -
JAVA中的REGEXP非捕获组
1.简介 JAVA中REGEXP的非捕获组为(?)开头的组,包含以下8种1)(?:X) X,作为非捕获组与捕获组 ( ) 的意思一样也是将其作为一组进行处理,与捕获组的区别在于不捕获匹配的文本,仅仅作为分组。比如:要匹配 123123 这个,就可以写为 (123)\1 使用反向引用,这时只能用捕获组,在匹配123 后会保留在内存中,便于反向引用,而 (?:123) 在匹配完后则不会保留,区...原创 2011-11-02 23:30:48 · 179 阅读 · 0 评论 -
JAVA序列化(一) Serializable
简介:本文主要介绍的是JAVA序列化的最佳实践,所以直接跳过基础的序列化知识 要点:1)serialVersionUID 用于标识Serializable类,反序列化的时候用于类型匹配校验,匹配失败,则抛出InvalidClassException异常。具体实现:从最初版本开始一直以“private static final long serialVersionUID...原创 2012-05-13 23:49:04 · 89 阅读 · 0 评论 -
JAVA序列化(二) 自定义序列化
简介:在某些情况下,可能需要改变Serializable类的默认序列化过程,或者需要对一个没有实现Serializable的属性进行序列化,此时就需要自定义序列化流程。 实现:1)目标类实现Serializable,上述两种情况中的属性设为transient,通过增加下列两个方法来自定义该属性的序列化过程private void writeObject(java.io.Obje...原创 2012-05-14 00:08:03 · 113 阅读 · 0 评论 -
JAVA序列化(二) 特殊类型的序列化 单例模式和枚举类实现
简介 由于反序列化时会重新生成一个新的对象实例,这与单例模式和枚举类实现唯一性原则相违背,为了使它们不矛盾,必须修改反 序列化的流程来实现唯一性 实现 在目标类中增加下列方法: private Object readResolve(); 1)单例模式StudentSingleton.javapackage com.siyuan.serializable;...原创 2012-05-14 00:15:43 · 179 阅读 · 0 评论 -
HttpServletResponse.getWriter()用完之后需不需要调用close()
HttpServletResponse.getWriter(),返回一个PrintWriter输出流,从J2SE的角度看应该是需要调用close()方法进行资源回收。实际上这里不需要调用close()方法,容器会在request处理结束后帮你回收相关资源。如果手动close()释放资源之后将无法再通过获取它来向client返回信息。 ...原创 2012-05-24 22:24:27 · 3816 阅读 · 0 评论 -
JSP自定义标签
1.简介 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护。 由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。 标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。 标签处理类是一个Java类,它实现自定义JSP标签的具体功能。 2.相关接口和类 1)接口JSPTag 没有实际...原创 2012-10-16 23:30:53 · 139 阅读 · 0 评论 -
JSR303(一) 简介
1.简介数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致错误的发生(译注: 重复代码). 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据. JSR 303 - Bean Valida...原创 2013-09-18 17:18:46 · 528 阅读 · 0 评论