WeakHashMap, NOT A CACHE】的更多相关文章

Overview Base Map的实现 基于WeakReference的Entity实现 基于Reference和ReferenceQueue实现 它的弱引用是键,而不是值 它的key会被全自动回收(VM),value值不会,只有当触发put,remove,get方法的时候才会手动回收 JAVA Reference >>>>here is about java.lang.ref Detail 包含具体的实现 Key值回收 该动作由VM执行,当没有Strong Reference引…
http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLists and ArrayLists (and Vectors) (Page last updated May 2001, Added 2001-06-18, Author Jack Shirazi, Publisher OnJava). Tips: ArrayList is faster than…
扯淡 祝各位在园里的朋友新年快乐! 辛苦一年,为更好的自己也为更好的世界,很多人要感谢你们,你们也应该有很多人要感谢吧. 看了马斯克的采访视频,又想起兰迪·鲍许的最后一课,时光迁移,唯有梦想可坚持. 概念 在java的世界里,基于jvm实现的语言最终要进入jvm编译的流程都需要把上层高级语言所表达的内容自行编译成字节码文件,而cglib是一个操作字节码生成自定义类的库,它底层调用的是ASM库来操作字节码的.示意图: 这里主要以使用cglib入口为起点进入它源代码,详细查看内部的实现机制. 具体实…
Overview The java.lang.ref package provides more flexible types of references than are otherwise available, permitting limited interaction between the application and the Java Virtual Machine (JVM) garbage collector. It is an important package, centr…
一.Channel与ChannelPipeline关系 每一个新创建的 Channel 都将会被分配一个新的 ChannelPipeline.这项关联是永久性 的:Channel 既不能附加另外一个 ChannelPipeline,也不能分离其当前的.在 Netty 组件 的生命周期中,这是一项固定的操作,不需要开发人员的任何干预. 在 Netty 中每个 Channel 都有且仅有一个 ChannelPipeline 与之对应, 它们的组成关系如下: 通过上图我们可以看到, 一个 Channe…
本篇文章代码内容较多,讲的可能会有些粗糙,大家可以选择性阅读. 本篇文章的目的是简单的分析动态代理的原理及模仿JDK Proxy手写一个动态代理以及对几种代理做一个总结. 对于代理模式的介绍和讲解,网上已经有很多优质的文章,我这里就不会再过多的介绍了,这里推荐几篇优质的文章作为参考: 给女朋友讲解什么是代理模式 轻松学,Java 中的代理模式及动态代理 另外,我的 github 仓库对应目录中也有相关的基础示例代码:https://github.com/eamonzzz/java-advance…
目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写测试类 运行结果 源码分析-获得代理类的过程 主要步骤 获得key 利用key从缓存中获取Class 生成代理类Class 代理类代码分析 cglib生成文件 代理类源码 MethodProxy.create MethodProxy.invokeSuper FastClass.invoke 简介 为…
代理模式是一种很常见的模式,本文主要分析cglib动态代理的过程 1. 举例 使用cglib代理需要引入两个包,maven的话包引入如下 <!-- https://mvnrepository.com/artifact/cglib/cglib --> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.3.0</…
1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12. 2. Enhancer源码分析 public Object create() { // 判断是否需要创建对象,false表示需要创建对象 classOnly = false; // 使用的是无参构造函数,参数为null argumentTypes = null; // 创建动态代理class的方法 return createHelper(); } ...//此处省略 priv…
Springboot中注解@Configuration和@Component的区别 1.先说结论,@Configuration注解上面有@Component注解,所以@Component有的功能@Configuration都有.@Configuration生成的bean是一个代理对象,具体@Configuration的实现如何我们现在就打开源码来看看它. 2.博客的代码路径:代码路径 生成的代理类class文件路径:generate-class.zip 你自己执行工程也会在target/clas…