随笔分类 -  学习——Java

摘要:package com.cn.gbx;import java.util.Date;import java.util.Random;import java.util.Timer;import java.util.TimerTask;public class TestThread { static class A{ public void get() { User user = User.getInstance(); System.out.println("A from " + Thread.currentThread().getName() + " get data 阅读全文
posted @ 2013-12-19 13:39 E_star 阅读(347) 评论(0) 推荐(0)
摘要:package com.cn.gbx;import java.util.Date;import java.util.Timer;import java.util.TimerTask;//class MyTimerTask extends TimerTask {// private static int x = 0;// { x = (x + 1) % 2; }// @Override// public void run() {// // System.out.println("booming!");// if ((x & 1) == 0) {// new Timer 阅读全文
posted @ 2013-12-18 10:08 E_star 阅读(276) 评论(0) 推荐(0)
摘要:Java中内置了三种标准注解:@Override@Deprecated@SuppressWarnings提供了四种源注解:@Target@Retention@Documented@Inherited下边的例子通过注解实现了对象到数据表的映射,利用反射机制生成创建表的SQL语句,实现ORM自定义注解:package com.gbx.anotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;im 阅读全文
posted @ 2013-12-15 11:57 E_star 阅读(361) 评论(0) 推荐(0)
摘要:/* * enum类型不允许继承 * 除了这一点,我们基本上可以将enum看作一个常规的类 * 我们可以添加自己的方法与属性,我们也可以覆盖其中的方法。 * 不过一定要在enum实例序列的最后添加分号 */enum Hot{ LITTLE("litele hot"), MEDIEM("mediem hot"), HOT("very hot"); /* * 添加自己的属性和方法 */ private String des; private Hot(String s) { des = s; } public String getDes() 阅读全文
posted @ 2013-11-30 16:03 E_star 阅读(358) 评论(0) 推荐(0)
摘要:我们知道对象的持持久化有三种方式:1: 对象序列化2: XML3: 数据库技术序列化可以帮助使得对象的生命周期不取决与程序是否正在执行,它可以生存于程序的调用之间。 只要将任何对象序列化到单一流中,就可以恢复出与我们写出时一样的对象网,并且没有任何重复复制的对象。序列化技术包括序列化和饭序列化我们可以通过实现Serializable接口来实现对象的序列化。class Data implements Serializable{ private int n; public Data(int i) { n = i; } @Override public String toString() { r.. 阅读全文
posted @ 2013-11-28 19:58 E_star 阅读(344) 评论(0) 推荐(0)
摘要:文件加锁:文件加锁机制允许我们同步访问某个作为共享资源的文件。public class Test { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("test.txt"); /* * 通过tryLock 或者 lock 获得整个文件的FileLock * tryLock(position, size, shared) 对文件进行部分加锁 */ FileLock fileLock = fos.getChannel() 阅读全文
posted @ 2013-11-27 22:14 E_star 阅读(537) 评论(0) 推荐(0)
摘要:给出一个学习的链接讲的很全。。http://ifeve.com/java-nio-all/上边的是中文翻译的这里是原地址:http://tutorials.jenkov.com/java-nio/overview.htmlChannel:FileChannelDatagramChannelSocketChannelServerSocketChannelBuffer:ByteBufferCharBufferDoubleBufferFloatBufferIntBufferLongBufferShortBufferMappedyteufferSelector:利用Channel与Buffer对文件的 阅读全文
posted @ 2013-11-26 20:25 E_star 阅读(450) 评论(0) 推荐(0)
摘要:public class Test{ /* * 标准的I/O重定向 * System.setIn(InputStream) * System.setOut(PrintStream) * System.setErr(PrintStream) */ public static void main(String[] args) throws IOException { PrintStream console = System.out; BufferedInputStream in = new BufferedInputStream(new FileInputStream("/home/.. 阅读全文
posted @ 2013-11-26 14:52 E_star 阅读(290) 评论(0) 推荐(0)
摘要:import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;import java.io.PrintWriter;import java.io.ObjectInputStream.GetField;import java.lang.ref.PhantomReferen 阅读全文
posted @ 2013-11-26 14:36 E_star 阅读(298) 评论(0) 推荐(0)
摘要:File我们出看可能会根据字面意思理解为文件,其实它既代表文件又代表目录。这里有一个例子可以列出指定目录下的所有文件或目录, 以及我们可以过滤得到我们想要的文件import java.io.File;import java.io.FilenameFilter;import java.lang.ref.PhantomReference;import java.lang.ref.Reference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakRefer 阅读全文
posted @ 2013-11-25 21:47 E_star 阅读(373) 评论(0) 推荐(1)
摘要:Java中没有指针,到处都是引用(除了基本类型)。所以,当然,你肯定知道java的引用,并用了很久,但是是不是对此了解地比较全面?而这些引用有什么作用,且有什么不同呢?Java中有个java.lang.ref包,这里面都是描述引用对象的,包括了Reference,SoftReference,WeakReference和PhantomReference。其中,Reference是基类其他三个类的基类。下面就这几种引用对象做个说明。强引用(Strong References)我们每天都在用强引用(如果你每天都在用java的话),一段如下的代码:HashMap mapRef = new HashMa 阅读全文
posted @ 2013-11-25 16:58 E_star 阅读(16284) 评论(0) 推荐(0)
摘要:我们通过Collections.unmodifiableX来得到只读容器,因为容器被设为只读的,所以必须填入有意义的数据之后才进行设置import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;/* * 创建只读容器 */public class Test{ public static Collection 阅读全文
posted @ 2013-11-25 15:29 E_star 阅读(589) 评论(0) 推荐(0)
摘要:import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.List;public class Test{ public static void main(String[] args) { /* * Arrays 提供了很多对数组操作的函数 * 这里只演示几个常用功能呢个 */ System.out.println("-----------Arrays-------------... 阅读全文
posted @ 2013-11-25 11:41 E_star 阅读(443) 评论(0) 推荐(0)
摘要:我们可以通过Arrays.asList() 产生一个List,但是要记住,我们通过Arrays.asList产生的list是基于一个固定大小的数组的, 仅支持那些不会改变数组大小的操作。所以我们在使用时要时刻记住,以免出现不可预料的错误。如果我们想要得到一个可以操作的List可以通过将Arrays.asList获得的list作为构造器的参数传进ArrayList中,或者通过使用addAll方法添加进去,即可。示例:import java.util.AbstractList;import java.util.AbstractMap;import java.util.ArrayList;impor 阅读全文
posted @ 2013-11-24 16:16 E_star 阅读(1022) 评论(0) 推荐(0)
摘要:概述: Java泛型在使用过程有诸多的问题,如不存在List.class, List不能赋值给List(不可协变),奇怪的ClassCastException等。 正确的使用Java泛型需要深入的了解Java的一些概念,如协变,桥接方法,以及这篇笔记记录的类型擦除。Java泛型的处理几乎都在编译器中进行,编译器生成的bytecode是不包涵泛型信息的,泛型类型信息将在编译处理是被擦除,这个过程即类型擦除。编译器如何处理泛型:通常情况下,一个编译器处理泛型有两种方式: 1.Code specialization。在实例化一个泛型类或泛型方法时都产生一份新的目标代码(字节码or二进制代码)。例如. 阅读全文
posted @ 2013-11-22 21:44 E_star 阅读(616) 评论(0) 推荐(0)
摘要:Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好的地方来说,为了保证与旧有版本的兼容性,Java泛型的实现上存在着一些不够优雅的地方。当然这也是任何有历史的编程语言所需要承担的历史包袱。后续的版本更新会为早期的设计缺陷所累。开发人 阅读全文
posted @ 2013-11-22 20:32 E_star 阅读(855) 评论(0) 推荐(0)
摘要:生成器是一种专门负责创建对象的类,实际上这是工厂方法设计模式的一种应用, 当时用生成器创建对象时,它不需要任何参数,而工厂方法一般需要参数。import java.util.Iterator;import java.util.Random;//一般来说一个生成器只定义一个方法,该方法用以产生新的对象interface Generator { public T next();}//一个继承体系class Coffee { private static long counter = 0; private final long id = counter++; @Override public St. 阅读全文
posted @ 2013-11-21 21:50 E_star 阅读(446) 评论(0) 推荐(0)
摘要:代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理的创建时期,代理类可以分为两种。静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。静态代理:interface IBase{ public void 阅读全文
posted @ 2013-11-21 20:22 E_star 阅读(329) 评论(0) 推荐(0)
摘要:什么是反射在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射有什么用1,在运行时判断任意一个对象所属的类;2,在运行时构造任意一个类的对象;3,在运行时判断任意一个类所具有的成员变量和方法;4,在运行时调用任意一个对象的方法;5,生成动态代理。实现Java反射的类1)Class:它表示正在运行的Java应用程序中的类和接口2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限3)Constructor:提供关于类的单个构造方法的信息以及对它 阅读全文
posted @ 2013-11-21 17:24 E_star 阅读(312) 评论(0) 推荐(0)
摘要:RTTI可以帮助我们在运行时识别对象和类的信息。一般传统的RTTI有三种实现方式:1. 向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子类)需要强制类型转换2. Class对象(用了Class对象,不代表就是反射,如果只是用Class对象cast成指定的类,那就还是传统的RTTI)3. instanceof或isInstance()通过Class对象实现RTTI interface HasBatteries{}interface Waterproof{}interface Shoots{}class Toy{ Toy() {} Toy 阅读全文
posted @ 2013-11-20 18:47 E_star 阅读(557) 评论(0) 推荐(0)