Java
森林海的棕熊
极客文化
展开
-
Java 热代理源码阅读
使用主要业务一个InvocationHandler接口 和 一个 Proxy类,实现InvocationHandler,然后传入Proxy.newProxyInstanc函数中,获取代理对象。从而实现代理模式样例代理具体业务package proxy.dynamic;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class HackHandler implements In原创 2020-10-28 00:37:47 · 245 阅读 · 0 评论 -
Unicode字符串转换
private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; //字符串转unicode public static String str2Unicode(String message) { if (message == null || message.isEmpty()) { return message.原创 2020-06-30 19:15:14 · 439 阅读 · 0 评论 -
JDK版本对应major version
JDK版本major version1.1451.2461.3471.4481.549650751852————————————————版权声明:本文为CSDN博主「hanchao5272」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog....原创 2019-12-24 11:17:54 · 1602 阅读 · 0 评论 -
设计模式 5.单例模式
单例模式应该是每个开发必须知道的设计模式,也十分简单,指保证整个程序中只有一个实例。1.私有化构造函数如果外部可以调用构造函数,那么就无法保证单例1.1 饱汉模式私有化构造函数 Private, 内部提前初始化 一个 实例package singleton;public class Singleton { private static Singleton singleto...原创 2018-12-12 14:59:11 · 125 阅读 · 0 评论 -
设计模式 6.原型模式
原型模式主要用于1.对象种类繁多,无法整合到一个类中;2.难以根据类生成实例;3.想解耦框架与生成的实例。主要依赖于 clone方法和 Cloneable接口1.构建复制功能的接口Product.java 继承 Cloneable,这样才可以调用clone()use()是执行函数,具体执行什么由子类决定createClone()是复制实例的函数package prototype.fr...原创 2018-12-12 15:28:29 · 103 阅读 · 0 评论 -
设计模式 7.Builder 模式
Builder模式主要用于构建复杂结构的实例主要的类是Builder类和Director类1.Build抽象类声明方法规范package builder;public abstract class Builder { public abstract void makeTitle(String title); public abstract void makeStrin...原创 2018-12-12 16:00:29 · 122 阅读 · 0 评论 -
设计模式 8.抽象工厂模式
工厂模式和抽象工厂模式的区别在于,工厂模式一个一个工厂对应生成一种产品,而抽象工厂模式在于可以一个工厂生产多种产品。框架层Item.java为元件父类package abstractfactory.factory;public abstract class Item { protected String caption; public Item(String capt...原创 2018-12-12 17:22:39 · 134 阅读 · 0 评论 -
设计模式 9.Bridge模式
Bridge模式的作用在于将功能层次结构和实现层次结构分离开,方便两边做独立扩展。继承是强耦合,委托是弱耦合。实现层次DisplayImpl.java定义实现的接口package bridge;public abstract class DisplayImpl { public abstract void rawOpen(); public abstract voi...原创 2018-12-12 18:10:51 · 190 阅读 · 0 评论 -
设计模式 2.适配器模式
适配器模式一般用于现有接口无法直接使用,需要适当变换之后才能继续使用。Adapter 模式有以下两种类适配器模式(使用继承的适配器)对象适配器模式 (使用委托的适配器)类适配器模式Banner.java 真实的执行者,被适配的对象package adapter.extend;public class Banner { private String string; ...原创 2018-12-12 14:06:06 · 120 阅读 · 0 评论 -
Android Binder源码阅读
作为Android 主要的IPC方式Binder, 其实现了IBinder接口,通过代理模式,parcelable序列化反序列操作,实现了RPC,即跨进程调用1.IBinder接口首先Binder 实现了IBinder接口,故先来看看IBinder接口,IBinder代码只有四十行功能比较清晰。public interface IBinder { //IBinder协议传输码, ...原创 2019-07-26 18:59:41 · 885 阅读 · 0 评论 -
Java源码阅读 Object
Object 是Java类层次结构的根类。所有非基本类型(包括数组)都直接或间接继承自该类。重要函数static JNINativeMethod methods[] = { {"hashCode", "()I", (void *)&JVM_IHashCode}, {"wait", "(J)V", ...原创 2019-08-13 23:43:17 · 224 阅读 · 0 评论 -
设计模式 4.Factory Method 模式
工厂模式是用模板模式来构建生成实例的工厂。Factou原创 2018-12-12 14:36:28 · 179 阅读 · 0 评论 -
设计模式 3.Template Method模式
模板模式,其实比较常用,在采用类的思想编程时,一般都用到了模板模式步骤1.定义抽象父类构建抽象方法构建非抽象方法,非抽象方法调用抽象方法2.继承父类编写子类重写抽象方法,调用非抽象方法。实现减少开发量,统一模式的模板模式。案例AbstractDisplay.javaackage templatemethod;public abstract class AbstractDi...原创 2018-12-12 14:21:39 · 113 阅读 · 0 评论 -
Java Class对象的函数分析
Class类是Reflect API中的核心类,有以下函数 - getName : 获得完整的类名字 - getFields(): 获得类的所有public属性 - getDeclaredFields(): 获得类的所有属性 - getMethods(): 获得所有Public 函数 - getDeclaredMethods(): 获得所有函数 - getMe...原创 2018-07-05 09:45:36 · 468 阅读 · 0 评论 -
用静态工厂方法替代构造器 《Effective Java》读书笔记
什么是静态工厂方法?通过 1.className.getInstance(); 2.className.newInstance(); 3.className.valueOf(); 等静态方法获得对象实例。 而一般我们会直接采用 new className(param1,param2)即构造器的方法来得到实例静态工厂方法相比于构造器的优势1.静态方法有名称构造器并没有确切描述返回的对象,而原创 2018-04-16 20:30:32 · 156 阅读 · 0 评论 -
遇到多个构造器参数采用构建器 《Effective Java》读书笔记
常见构造器写法有三种,重叠构造器,JavaBean,Builder模式。本文记录下三种方式的优劣1.重叠构造器优点:脑子里最先想到,最简单。 缺点:代码量大,可读性低,且参数如果输入错误,可能该错误不会报出。代码public class NutritionFacts{ private final int servingSize; private final int serving原创 2018-04-16 21:21:28 · 152 阅读 · 0 评论 -
用私有构造器或者枚举类强化单例模式
方法1.公共的静态成员私有化构造器,是外部想要得到该实例,只能调用其静态方法,保证了单例模式。 若直接公共域静态成员,但客户端可通过AccessibleObject.setAccessible方法,通过反射机制调用私有构造器,对单例模式产生攻击。需做单例保护,若出现第二个实例,则抛出异常。public class Evlis{ public static final Evlis ...原创 2018-04-17 22:43:22 · 238 阅读 · 0 评论 -
消除过期的对象引用
过期的对象引用也许不会有明显的影响,但会随着垃圾回收器活动的增加,或者内存占用的不断增加,导致内存泄漏,甚至OutOfMemory错误.但Java有自己的内存回收机制,所以只需要在自己管理内存时,注意内存泄漏问题.内存泄漏代码样例public class Stack{ private Object[] elements; private int size = 0;...原创 2018-04-18 14:42:50 · 248 阅读 · 0 评论 -
Java覆盖equals函数的技巧
为什么要覆盖equals函数Object对象自带equals方法,但其是根据对象是否一致来判断相等,但每个对象都是唯一的,所以自带的equals方法只能与其自身相等。 当需要根据对象的成员值是否相等来判断对象是否相等时,就需要复写equals函数了。equals函数需要遵循的原则自反性 x.equals(x) == true对称性 x.equals(y) == y.equ...原创 2018-04-18 19:38:51 · 947 阅读 · 0 评论 -
复写hashCode的简单策略 《effective java》读书笔记
1.把某个非零的常数值,保存在整型result中。2.对于对象中每个关键域f进行如下计算:a.为该域计算整形的散列码:1.如果是 boolean 类型,返回 (f ? 1:0);2.如果是byte ,char ,short,int 返回 (int)f;3.如果是long,返回(int)(f ^ (f >>>32));4.如果是float,返回Float....原创 2018-04-19 18:30:01 · 354 阅读 · 0 评论 -
Java中this的分析
用法分析1.获得域class A{ int a = 1 ; public void test(){ System.out.println(this.a); }}这里的this是指代该对像A,所以不可以在static方法中使用this。 同时可以直接返回 return this,在函数中返回该对像。2.作为构造函数必须放在函数的首行class B{...原创 2018-07-10 10:50:52 · 144 阅读 · 0 评论 -
Java文档注释
@author 表示一个类的作者 实例:@author description@deprecated 指明一个过期的类或成员 实例:@deprecated description@docRoot 知名当期文档根目录的路径 实例:{@docRoot}@exception 标志一个类抛出的异常 @exception exception-name explanation 实例:@ex...原创 2018-07-11 10:15:17 · 137 阅读 · 0 评论 -
Java通过反射获得类的三种方法
Java中的反射机制可以使在运行中获取Java的类,来获取对该类的操作1.通过对象的getClass()函数获得Test test = new Test();Class testClass = test.getClass();2.通过类的静态域class获得Class testClass2 = Test.class;3.通过Class类的forName(“”)获得...原创 2018-07-04 12:04:31 · 4027 阅读 · 0 评论 -
Java反射查看所有函数
import java.lang.reflect.Method;public class DumpMethods { public static void main(String[] args) { try { Class classType = Class.forName(args[0]); Method[] ...原创 2018-07-05 09:33:39 · 773 阅读 · 0 评论 -
Java文档注释小结
使用JDK中的javadoc可以有源文件生成一个HTML文档。这种注释会更专业,并且由于注释和代码在同一个文件里,因此可以保证每次修改后,保证代码和注释的一致性。javadoc可从下面几个特性中抽取信息: - 包 - 公有类与接口 - 公有的和受保护的构造器及方法 - 公有的和受保护的域1、类注释类注释必须在import语句之后,类定义之前i...原创 2018-02-27 23:00:15 · 628 阅读 · 0 评论