java基础
java基础总结
ayupch
记录点滴,分享知识,共同进步!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java热加载(三)—— 配置文件热加载
在实际开发中往往需要读一些配置文件,例如,开发游戏是一些活动数据会存造excel中,每次起服时会把excel数据读取到缓存中,如果数据有变动需要热更新数据。我们这里使用反射来完成修改。...原创 2020-08-16 18:05:21 · 1658 阅读 · 0 评论 -
Javassist框架研究
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。Javassist中最为重要的是ClassPool,CtClass原创 2020-08-15 22:04:16 · 727 阅读 · 0 评论 -
ASM框架研究
ASM是什么ASM是一个致力于字节码和分析的框架,它用来动态生成类或者增强既有类的功能。ASM可以直接创建class文件,也可以在类被加载到jvm之前动态的改变类的行为。class文件是按照严格格式存储的,这些class文件拥有足够的元数据来解析类中所有元素:类名称、方法、属性以及Java字节码指令,ASM能够直接从class文件中读取信息获得类信息,同时也能根据需求直接通过字节码修改class文件。虽然,ASM提供了其他字节码工具相同的功能,但是它更关注执行效率,它被设计的更小更快。其实,jdk内部已经原创 2020-08-14 21:49:47 · 896 阅读 · 0 评论 -
Java热加载(二)—— Instrumentation实现热加载
本篇文章我们讨论一下Instrumentation。原创 2020-08-14 00:06:27 · 1224 阅读 · 0 评论 -
Java热加载(一)—— ClassLoader实现热加载
前面的文章我们一直在讨论类加载器相关的知识,这篇文章我们谈一下,类加载器的实际应用热加载。说到热加载,做过线上项目的一定用过,下面我们来讨论一下热加载。我们将讨论常见的两种形式的热加载:一种使用ClassLoader实现热加载的方式;另一种使用Instrumentation的方式。ClassLoader实现热加载通过前面的文章我们知道了类加载机制是双亲委派模型,“同一个类名,同一个类加载器实例加载的,代表是同一个类”。如果我们要自己实现业务代码的热加载,就不能用默认的类加载器实例,因为同一个类加载器实原创 2020-08-12 15:56:33 · 1284 阅读 · 0 评论 -
关于Java的SPI机制的一些思考
Service Provider Interface:服务提供者接口.例如,系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。在模块化设计中这个机制尤其重要。java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。jdbc举例分析一下调用流程:// 首先 加载sqlite需要的原创 2020-08-11 22:23:45 · 381 阅读 · 2 评论 -
关于Java类加载机制的一些思考
类的生命周期1. 加载:2. 验证3. 准备4. 解析5. 初始化6. 使用7. 卸载原创 2020-08-10 23:40:08 · 269 阅读 · 0 评论 -
AccessController - java安全管理
上文中我们遇到了AccessController,它有什么作用呢?本节我们会对其进行介绍,在介绍它之前我们先介绍一下java的安全模型参考:https://developer.ibm.com/zh/articles/j-lo-javasecurity/原创 2020-08-09 14:33:01 · 1844 阅读 · 0 评论 -
Unsafe总结
前几天下班回家的路上一个客户端同事问我,java能自己控制内存吗?再加上这几天在看disruptor源码,也遇到了Unsafe相关的东西,抽个时间总结一下。Unsafe类,下面来介绍一下这个类Unsafe类是final类,并且构造方法是私有的public final class Unsafe { private static native void registerNatives(); static { registerNatives(); }原创 2020-08-09 10:16:22 · 317 阅读 · 0 评论
分享