自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 15.4.3 用于Generator的泛型方法

package chapter15._4._3;import chapter15._3.coffee.Coffee;import chapter15._3.coffee.CoffeeGenerator;import chapter15._3.coffee.Generator;import chapter15._3.fibonacci.Fibona...

2018-11-30 23:49:00 105

原创 15.4.4 一个通用的Generator

public class BasicGenerator<T> implements Generator<T> { private Class<T> type; public BasicGenerator(Class<T> type) { this.type = type;...

2018-11-30 23:34:00 33

原创 C06 原型模式 示例(五) 深克隆2

示例类图05.2_原型模式_深复制.jpg深克隆示例1/2_ConcreteProtype注意 clone() 方法用的是流的方式,相比单独调用 Pig 的 birthday 的 clone(),流的方式更具一般性;public class Email implements Serializable { private ...

2018-11-30 23:17:00 104

原创 15.4.2 可变参数与泛型方法

public class GenericVarargs { public static <T> List<T> makeList(T... args) { List<T> result = new ArrayList<T>(); for(T item : args)...

2018-11-30 00:23:00 69

原创 15.3 泛型接口_Fabonacci

public interface Generator<T> { T next();}public class Fibonacci implements Generator<Integer> { private int count = 0; private int fab(int n) { ...

2018-11-29 21:49:00 72

原创 15.3 泛型接口_Coffee

public interface Generator<T> { T next();}public class Coffee { private static long counter = 0; private final long id = counter++; @Override publ...

2018-11-29 11:20:00 111

原创 [Java Snippet008]_List_001

TALK IS CHEAP SHOW ME THE CODE!package chapter15._2._3;import java.util.ArrayList;import java.util.Random;public class RandomList<T> { private ArrayList<T> ...

2018-11-29 01:04:00 89

原创 [Java Snippet007]_LinkedStack_001

TALK IS CHEAP SHOW ME THE CODE!package chapter15._2._2;public class LinkedStack<T> { private static class Node<U>{ U item; Node<U> next;...

2018-11-29 00:42:00 44

原创 [Java Snippet006]_Builder_001

TALK IS CHEAP SHOW ME THE CODE!package chapter2.item02;public class NutritionFacts { // required private final int servingSize; private final int servings; //...

2018-11-28 22:37:00 73

原创 [Java Snippet005]_Date_001

TALK IS CHEAP SHOW ME THE CODE!public class Cram { public static void main(String[] args) { Date date1 = new Date(1000); Date date2 = new Date(-1000); ...

2018-11-28 12:17:00 63

原创 [Java Snippet004]_Override_001

TALK IS CHEAP SHOW ME THE CODE!class A { static int m; static void f() { m = 20; }}class B extends A {// void f() { 实例方法不能重写静态方法//// }} ...

2018-11-28 01:24:00 129

原创 [Java Snippet003]_Polymorphism_001

TALK IS CHEAP SHOW ME THE CODE!class A { public int getNumber(int a) { return a + 1; }}class B extends A { public int getNumber(int a) { return ...

2018-11-28 01:21:00 72

原创 [Java Snippet002]_String_002

TALK IS CHEAP SHOW ME THE CODE!public class Desperate { public static void main(String[] args) { String s1 = new String("天道酬勤"); String s2 = new String("天道酬...

2018-11-28 01:19:00 54

原创 [Java Snippet001]_String_001

TALK IS CHEAP SHOW ME THE CODE!public class Mutter { public static void main(String[] args) { String path = "C:\\book\\javabook\\Java Programmer.doc"; Syste...

2018-11-28 01:12:00 114

原创 心法17:把变化控制到最少

概述不可变类的对象在其生命周期中是不可变的,一个不可变类满足5个规则:不要提供能修改对象状态的方法;确保类不能被继承;所有成员都是final的;所有成员都是private的;对可变内容的访问只能由自己的成员变量来完成; ...

2018-11-27 14:39:00 62

原创 心法1:用静态工厂方法代替构造方法

概述构建一个类的对象时,用静态工厂方法代替构造方法有4点好处。静态工厂方法有名字(哈哈,给我笑的,有名字了不起啊?嗯!确实了不起!);静态工厂方法在被调用的时候,可以不用每次都创建一个新对象;静态工厂方法的返回类型可以是其声明的返回类型的子类;静态工厂方法的返回类型可以根据调用时传入参数的不同而不同; ...

2018-11-27 12:40:00 42

原创 JVM004_HotSpot中的intrinsic

@HotSpotIntrinsicCandidateJDK的源码中,被@HotSpotIntrinsicCandidate标注的方法,在HotSpot中都有一套高效的实现,该高效实现基于CPU指令,运行时,HotSpot维护的高效实现会替代JDK的源码实现,从而获得更高的效率。intrinsic的实现方式独立的桩程序:对目标方法的调用将被这些独立...

2018-11-25 20:05:00 528

原创 JVM003_去虚化

一、去虚化去虚化指的是把动态绑定的虚方法调用,转换为一个或多个直接调用。去虚化是即时编译器的工作,分为完全去虚化和条件去虚化。完全去虚化:通过类型推导和类层次分析识别虚方法调用的唯一目标方法。条件去虚化:将虚方法调用转换为若干个类型测试以及直接调用的一种优化手段。二、类型推导基于类型推导的完全去虚化指的是由字节码生成的Sea-of-Nod...

2018-11-21 13:40:00 240

原创 B11 状态模式 示例

示例类图状态模式.png示例代码抽象状态在抽象状态层组合进了一个上下文对象;上下文对象中也会组合进一个抽象状态;上下文对象和状态对象之间的关系是你中有我,我中有你;这种循环引用的关系,既可以让上下文对象改变状态对象中的状态,也让状态对象在下游状态中(上下文中的当前状态为上游状态,由当前状态调用的自己的下一个状态称作下游状态)...

2018-11-20 16:23:00 76

原创 J004_Java中的堆和栈有什么区别?

堆对象存放在堆中;每个Java程序运行在一个单独的JVM实例中,每个JVM实例唯一对应一个堆,多个线程会共享堆内存;在运行过程中动态分配内存,存取速度缓慢;由GC回收不用的空间;栈基本数据类型的变量存放在栈中;引用变量存放在栈中;以栈帧为单位,通过压栈和弹栈管理程序运行;栈的大小和生存周期确定,存取速度更快;通过压栈和弹栈回收不用...

2018-11-19 18:22:00 142

原创 JVM002_方法内联(上)

一、方法内联方法内联指的是在即时编译过程中遇到方法调用时,直接编译目标方法的方法体,并替换原方法调用。注:方法内联属于即时编译期的优化技术;即时编译的过程是字节码被解析成IR图,优化IR图,再由优化过的IR图生成机器码的过程;解析指的是即时编译器对字节码做的动作,是字节码到IR图的转换;二、方法内联要点内联也可以表述成2个IR图的融...

2018-11-19 13:12:00 72

原创 J003_Java中存在内存泄漏吗?

一、内存泄漏内存泄漏是指一个不再被使用的对象或变量占用的存储空间不能被回收或不能被及时回收。二、容易引起内存泄漏的原因1/5_静态集合类2/5_各种连接3/5_监听器4/5_变量不合理的作用域class Server{ private String msg; public void receiveMsg() { ...

2018-11-18 23:15:00 96

原创 B04 观察者模式 示例(二) 自己实现的观察者模式

一、类图观察者模式.png二、示例代码 - 对猫叫的反应1/4_Observerpublic interface Observer { void response();}2/4_ConcreteObserverDogpublic class Dog implements Observer { @O...

2018-11-18 18:43:00 79

原创 J002_简述GC

GC使用有向图管理堆中的对象,借助有向图完成对象的可达性分析;有引用的对象是不能被回收的,没有引用的对象才能被回收;GC的常用算法引用计数算法追踪回收算法压缩回收算法复制回收算法按代回收算法finalize方法在对象空间被回收前执行,执行后也不一定会回收对象空间;没有引用指向的线程是可以独立运行的,和对象不同; ...

2018-11-18 12:24:00 85

原创 JVM001_Java字节码_基础篇

一、操作数栈相关指令1/2_操作数栈  JVM在解释执行的过程中,会为方法分配栈帧,操作数栈是栈帧的重要组成部分。操作数栈用来存放计算的操作数和计算的结果。指令执行前,操作数位于栈顶,指令执行后,结果替换操作数位于栈顶。当方法执行过程中抛出异常时,操作数栈将被清空,并将异常实例压入操作数栈。2/2_指令举例iadd:弹出栈顶的2个int值,相加,...

2018-11-17 22:46:00 81

原创 J001_JVM加载class文件的原理机制是什么?

加载指的是class文件从硬盘到内存的过程;类加载器完成对class文件的加载,所有的类加载器都是ClassLoader的子类;BootstrapLoader(C++实现):jre/lib/rt.jarExtClassLoader:jre/lib/ext/*.jarAppClassLoader:classpath双亲委派:子加载器会把要加...

2018-11-17 20:16:00 58

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除