随笔分类 -  java编程思想

精读精读,笔记笔记。
摘要:通过Executors创建线程池的时候调用newFixedThreadPool方法,继承的大概结构如下:创建完成之后,线程池的结构如下:在创建完线程池之后就可以调用execute方法来执行给定的Runnable了,具体的代码如下: 1 public void execute(Runnable command) { 2 if (command == null) 3 throw new NullPointerException(); 4 if (poolSize >= corePoolSize || !addIfUnderCorePo... 阅读全文
posted @ 2012-04-10 17:04 GG大婶 阅读(2383) 评论(0) 推荐(3)
摘要:指令含义iconst_m1把int型常量-1压入栈中iconst_0把int型常量压入栈中fconst_1把float型常量1压入栈中lconst_2把long型常量2压入栈中dconst_3把double型常量3压入栈中bipush byte1把byte1转换成int型压入栈中sipush byte1,byte2把byte1,byte2组成的short转换成int压入栈中aconst_null把空对象压入栈中ldc indexbyte1把常量池中指定下标的一个字长压入栈ldc_w indexbyte1,indexbyte2把常量池中指定下标的一个字长压入栈ldc2_w indexbyte1, 阅读全文
posted @ 2012-03-26 22:31 GG大婶 阅读(2499) 评论(0) 推荐(0)
摘要:单例模式用来创建独一无二的对象。有些类型比如驱动程序等只能有一个对象,如果创建出多个对象的时候可能会导致许多问题的产生。单例模式还是很简单的,实现方法也很多,不过需要注意并发的情况。下面是一个简单的例子(非并发):class singleton{ private static singleton single; private singleton(){ } public singleton getSigle(){ if(single == null){ single = new singleton(); ... 阅读全文
posted @ 2011-10-29 17:11 GG大婶 阅读(205) 评论(0) 推荐(0)
摘要:基本概念观察者模式中有最基本的两个角色:Observable和Observer。涉及到的基本操作有:Observable在Observer中订阅,要接受消息。Observable取消注册(或者Observer将其删除)。Observer有了消息之后通知Observable。总的来看还是比较简单的。Observer中保存所有的Observable,然后在需要通知的时候调用notifyObservers来实现。下面是观察者模式的类图:对于java中的观察者模式框架下面给出一个例子:import java.util.Observable;import java.util.Observer;class 阅读全文
posted @ 2011-10-17 13:58 GG大婶 阅读(253) 评论(0) 推荐(0)
摘要:polling下面包含了实现了基于轮询策略的select调用或其他类型的I/O轮询系统调用的基类。先看抽象类AbstractPollingIoAcceptor,成员如下:public abstract class AbstractPollingIoAcceptor<T extends AbstractIoSession, H> extends AbstractIoAcceptor { private final IoProcessor<T> processor; private final boolean createdProcessor; private final 阅读全文
posted @ 2011-10-15 18:11 GG大婶 阅读(567) 评论(0) 推荐(0)
摘要:1、TransportMetadata定义了一组操作底层的元数据信息,它的一个实现是DefaultTransportMetadata,维护的信息如下: private final String providerName; private final String name; private final boolean connectionless; private final boolean fragmentation; private final Class<? extends SocketAddress> addressType; private fin... 阅读全文
posted @ 2011-10-13 17:24 GG大婶 阅读(1091) 评论(0) 推荐(0)
摘要:违例差错控制这个给程序的编写带来了很大的好处: 1 public class test { 2 public static void f() throws Exception { 3 System.out.println( 4 "originating the exception in f()"); 5 throw new Exception("thrown from f()"); 6 } 7 public static void g() throws Throwable { 8 try { 9 f();10 } catch(Exception e) { 阅读全文
posted @ 2011-08-01 14:49 GG大婶 阅读(316) 评论(0) 推荐(0)
摘要:生成能自动判别类型的Vector: 1 import java.util.*; 2 class Gopher { 3 private int gopherNumber; 4 Gopher(int i) { 5 gopherNumber = i; 6 } 7 void print(String msg) { 8 if(msg != null) 9 System.out.println(msg);10 System.out.println("Gopher number " + gopherNumber);11 }12 }13 class GopherTrap {14 stati 阅读全文
posted @ 2011-07-27 23:15 GG大婶 阅读(249) 评论(0) 推荐(0)
摘要:虽然是第二次看,感觉这部分还是要仔细看。多形性是面向对象编程语言的第三中特性。首先是上溯造型(这个是什么意思就不说了),为什么需要上溯造型呢?很多书上都会用“画图”或者“乐器”的程序来和大家解释:class Note{ private int value; private Note(int val) { value = val; } public static final Note middleC = new Note(0), cSharp = new Note(1), cFlat = new Note(2);} // Etc.class Instrument { public void pl 阅读全文
posted @ 2011-07-26 22:45 GG大婶 阅读(488) 评论(0) 推荐(0)
摘要:Java的一个引人注意的特性就是代码的重复使用或者再生。 Java有两种方法来实现:合成和继承。合成看起来比较简单,也就是声明一个新的类型,其中包括了几个现在以后的类型。用汽车的例子来说明就是避免“重复制造轮子”。至于“轮子”应该什么时候被造出来?可以是在准备生产汽车之前就造(在定义处)、可以边造汽车边造(构建器内)、可以早完汽车然后等到要用轮子的时候(在使用之前)。 继承的实现很简单:“extends”。虽然简单,不过还是要想几个问题,这样一串的东西,先初始化哪个?其实写个简单的程序就可以验证了(基类的初始化完成之后才开始衍生类的初始化,其实简单想想也应该是这样的): 1 class Ar. 阅读全文
posted @ 2011-07-25 21:21 GG大婶 阅读(250) 评论(0) 推荐(0)
摘要:在“库”之类的程序的设计中,只有部分的代码是公布给使用者的。可以通过访问权限的控制来实现。“库”是由一个一个的“包”组成的,用“package”打包(这句话必须在非注释的第一行),而使用者用“import”引入就可以了。在封装包的时候用反过来的域名的唯一的标志一个包(因为域名是唯一的,所以所发行的包名也是唯一的)。Java解释器在执行的时候,先找到“CLASSPATH”,以此为根目录开始找“.class”文件。Java中的“访问控制符”只有一个是比较特别的:如果一个变量前面什么都不写(也就是默认)说明这个变量是“包”级访问权限。“private”的用法还有下面的这种情况,可以使得对象“new” 阅读全文
posted @ 2011-07-24 14:39 GG大婶 阅读(182) 评论(0) 推荐(0)
摘要:用构建器自动初始化构造函数不需要返回参数。在new一个对象的时候就调用构造函数来初始化一个对象。在没有定义构造函数的时候会有一个默认的构造函数。“在程序中什么时候调用哪个构造函数”?这个在下面详细说明。方法过载不同的方法用同一个名称,不过它们的参数必须不同。public class test { public static void func(int a){ System.out.println("int"); } public static void func(long a){ System.out.println("long"); } public 阅读全文
posted @ 2011-07-23 16:51 GG大婶 阅读(283) 评论(0) 推荐(0)
摘要:用句柄操纵对象JVM是怎么通过句柄访问对象的(或者说句柄究竟是个什么东西),给我的感觉就像指针或者引用。也有人说句柄就是“受到了严格限制和防范的指针”。在给方法传参数的时候需要注意。所有的对象必须创建程序运行时可以保存数据的六个地方:寄存器、堆栈(对象句柄)、堆(对象)、静态存储(JAVA对象永远不会置于静态存储空间)、常熟存储、非RAM存储。8种不用new初始化的变量:boolean、byte、short、char、int、float、long、double。从小到大排序。java里面是没有unsigned类型的,曾今写加密程序的时候在这个问题上的纠结,好菜。另外还有两种高精度:BigInt 阅读全文
posted @ 2011-07-23 13:53 GG大婶 阅读(238) 评论(0) 推荐(0)