06 2017 档案
摘要:1. 运行时数据区域 1.1 程序计数器 程序计数器(Program Counter Register)可以看作当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要
阅读全文
摘要:P25)SQL分类 DDL(Data Definition Languages)语句:数据定义语句,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象,常用的语句关键字主要包括create、drop、alter等。 DML(Data Manipulation Language)语句:数据操
阅读全文
摘要:(1)Observer——观察者 (2)Proxy——代理 (3)Flyweight——享元 (4)State——状态 (5)Memento——备忘录 (6)Interpreter——解释器
阅读全文
摘要:(1)Composite——组成 例子: (2)Decorator——装饰者 (3)Visitor——访问者 例子: (4)Facade——外观模式 (5)Mediator——中介者
阅读全文
摘要:P706)必须用一个检查感兴趣的while循环包围wait()。其本质就是要检查所感兴趣的特定条件,并在条件不满足的情况下返回到wait()中。 P707)notify()与notifyAll() 使用notify()时,在众多等待同一个锁的任务中只有一个会被唤醒,因此如果你希望使用notify()
阅读全文
摘要:P685)临界区 通过使用同步控制块,而不是对整个方法进行同步控制,可以使多个任务访问对象的时间性能得到显著提升。宁愿使用同步控制块而不是对整个方法进行同步控制的典型原因:使得其他线程能更多的访问(在安全的情况下尽可能多)。 P689)在其他对象上同步 synchronized块必须给定一个在其上进
阅读全文
摘要:P662)后台线程(daemon:守护) 所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程结束时,程序也就终止了,同时会杀死进程中的所有后台进程。反过来说,只要有任何非后台线程还在运行,程序就不会终止。
阅读全文
摘要:P655)静态方法Thread.yield()的调用是对线程调度器(Java线程机制的一部分,可以将CPU从一个线程转移给另一个线程)的一种建议:此线程以及执行完生命周期中最重要的部分了,此刻正是切换给其他任务执行一段时间的大好时机。P661)不过这只是一个暗示,没有任何机制保证它将会被采纳。当调用
阅读全文
摘要:P621)定义注解时,会需要一些元注解(meta-annotation),例如@Target和@Retention。@Target用来定义你的注解将应用于什么地方(例如是一个方法或者一个域)。@Retention用来定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件(CLASS)中或者运
阅读全文
摘要:(1)抽象工厂——Abstract Factory (2)Prototype——原型模式 (3)Strategy——策略模式 (4)Bridge——桥接模式 (5)Chain of Responsibility——职责链模式
阅读全文
摘要:(1)Iterator——迭代器模式 (2)Adapter——适配器 (3)Factory——工厂方法 (4)Builder——生成者 (5)Template——模板方法
阅读全文
摘要:P474)Arrays.asList()会生成一个List,它基于一个固定大小的数组,仅支持那些不会改变数组大小的操作。任何会引起底层数据结构的尺寸进行修改的方法都会产生一个UnsupportedOperationException异常,以表示对未获支持操作的调用。 应该把Arrays.asList
阅读全文
摘要:P434)数组硕果仅存的有点就是效率。length是数组的大小,而不是实际保存的元素个数。 P378)对于在泛型中创建数组,使用Array.newInstance()是推荐的方式。 P437)Java SE5的Arrays.deepToString()方法可以将多维数组转换为多个String。 P4
阅读全文
摘要:Linux终端中运行.class文件出错
阅读全文
摘要:P316)Class fancyToyClass = Class.forName("FancyToy"); 这个方法是Class类的一个成员static成员。forName()是取得Class对象引用的一种方法,它返回一个Class对象的引用。对forName()的调用就是为了它产生的“副作用”:如
阅读全文
摘要:P283)不可变String String类中看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。最初的String对象则丝毫未动。每当把String对象作为方法参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上。 不可变性会
阅读全文
摘要:P258)重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块的后续catch子句将被忽略。此外,异常对象的所有信息都得以保持。 如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将原来的异常抛出点的调用栈信息,而并非重新抛出点的信息。要更新这个信息,可以调用
阅读全文
摘要:P220)你也可以直接使用Arrays.asList()的输出,将其当作List,但是在这种情况下,其底层表示的时数组,因此不能调整尺寸。 P222)如果存储顺序很重要,那么可以使用TreeSet(红-黑树),它按照比较结果的升序保存对象;或者使用LinkedHashSet,它按照被添加的顺序保存对
阅读全文
摘要:P191)如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须具体的指明这个对象的类型:OuterClassName.InnerClassName。 P191)内部类能访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。 P192)内部类的
阅读全文
摘要:P96)总结一下对象的创建过程,假设有个名为Dog的类: 在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制。 调用基类构造器。这个步骤会不断的反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最低层的导出类。 按声明顺序调用成员的初始化方法。 调用导出类构造器的主体
阅读全文

浙公网安备 33010602011771号