随笔分类 - 01——Java
摘要:1.Snappy-java项目地址 https://github.com/xerial/snappy-java 2.Snappy-java两种压缩方式 使用Snappy.compress进行压缩 使用SnappyInputStream进行压缩 public static byte[] compres
阅读全文
摘要:目录 元注解 @Retention @Documented @Target @Inherited @Repeatable 注解语法 目录 元注解 @Retention @Documented @Target @Inherited @Repeatable 注解语法 目录 元注解 @Retention
阅读全文
摘要:目录 第45条 将局部变量的作用域最小化 第46条 for-each循环优先于传统的for循环 第47条 了解和使用类库 第48条 如果需要精确的答案,避免使用float和double 第49条 基本类型优先于装箱基本类型 第50条 如果其他类型更适合,尽量避免使用字符串 第51条 当心字符串连接的
阅读全文
摘要:目录 第38条 检查参数的有效性 第39条 必要时进行保护性拷贝 第40条 谨慎设计方法签名 第41条 慎用重载 第42条 慎用可变参数 第43条 返回零长度的数组或集合,而不是null 第44条 为所有导出的API元素编写文档注释 目录 第38条 检查参数的有效性 第39条 必要时进行保护性拷贝
阅读全文
摘要:背景 开发过程中发现一个问题,项目中用Set保存AopMethod对象用于去重,但是发现即使往set中添加相同内容的对象,每次也能够添加成功。 AopMethod类的部分代码如下: 通过debug发现,对象即使内容完全相同,hashCode每次返回的hash值都是不一样的。 AopMethod{me
阅读全文
摘要:目录 第13条: 使类和成员的可访问性最小化 第14条:在公有类中使用访问方法而非公有域 第15条:使可变性最小化 第16条:复合优先于继承 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承 第18条:接口优先于抽象类 第19条:接口只用于定义类型 第20条:类层次优于标签类 第21条:用
阅读全文
摘要:目录 第1条:考虑使用静态工厂方法代替构造器 第2条:遇到多个构造器参数时考虑用构建器 第3条:用私有构造器或者枚举类型强化Singleton属性 第4条:通过私有构造器强化不可实例化的能力 第5条:避免创建不必要的对象 第6条:消除过期的对象引用 第7条:避免使用终结方法 目录 第1条:考虑使用静
阅读全文
摘要:1.什么是BTrace BTrace是sun公司推出的一款Java 动态、安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。 2.BTrace使用场景 在生产环境中经常遇到格
阅读全文
摘要:本文转载自简书,感谢原作者!。 原链接如下:https://www.jianshu.com/p/7803ffcc81c8 5. 字节码操作 Javassist 还提供了用于直接编辑类文件的低级级 API。 使用此 API之前,你需要详细了解Java 字节码和类文件格式,因为它允许你对类文件进行任意修
阅读全文
摘要:本文转载自简书,感谢原作者!。 原链接如下:https://www.jianshu.com/p/b9b3ff0e1bf8 4. 自省和自定制 (Introspection and customization) CtClass 提供了自省的方法。Javassist 的自省能力与 Java 反射 API
阅读全文
摘要:本文转载自简书,感谢原作者!。 原链接如下:https://www.jianshu.com/p/43424242846b 1. 读写字节码 我们知道 Java 字节码以二进制的形式存储在 class 文件中,每一个 class 文件包含一个 Java 类或接口。Javaassist 就是一个用来处理
阅读全文
摘要:JDK动态代理使用实例 代理模式的类图如上。关于静态代理的示例网上有很多,在这里就不讲了。 因为本篇讲述要点是JDK动态代理的实现原理,直接从JDK动态代理实例开始。 首先是Subject接口类。 接着是RealSubject类。 下面是代理对象的InvocationHandler接口实现类。 In
阅读全文