![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 73
CringKong
高级语言生产,底层思维学习
展开
-
入侵JVM?Java Agent原理浅析和实践(下)
声明:本文首发于京东零售技术公众号,为博主本人撰写投稿。运行时修改字节码了解到上述机制以后,我们可以通过在目标JVM运行时对其中的类进行重新定义,做到运行时插桩代码。我们知道ASM是一个字节码修改框架,因此就可以在类转换器中,对原本类的字节码进行修改,然后再对这个类进行重定义(retransform)。首先我们实现ClassFileTransformer接口,前文中在transform方法中并没有对于字节码进行修改,只是单纯的打印了一些信息,既然需要对字目标类的节码进行修改,我们需要了解下Class原创 2021-10-19 10:28:49 · 453 阅读 · 1 评论 -
入侵JVM?Java Agent原理浅析和实践(中)
声明:本文首发于京东零售技术公众号,为博主本人撰写投稿。JVM运行时Agent在JDK1.6版本中,SUN更进一步,提供了可以在JVM运行时代理的能力,和启动时代理类似,只需要满足:JAR包的MANIFEST.MF清单文件中定义Agent-Class属性,指定一个类,加入Can-Redefine-Classes 和 Can-Retransform-Classes 选项。JAR包中包含清单文件中定义的这个类,类中包含agentmain方法,方法逻辑可以自己实现运行时Agent可以在JVM运行时动原创 2021-10-19 10:18:41 · 528 阅读 · 0 评论 -
入侵JVM?Java Agent原理浅析和实践(上)
声明:本文首发于京东零售技术公众号,为博主本人撰写投稿。前言:在平时的开发中,我们不可避免的会使用到Debug工具,JVM作为一个单独的进程,我们使用的Debug工具可以获取JVM运行时的相关的信息,查看变量值,甚至加入断点控制,还有我们平时使用JDK自带的JMAP、JSTACK等工具,可以在JVM运行时动态的dump内存、查询线程信息,甚至一些第三方的工具,比如说京东内部使用的JEX、pfinder,阿里巴巴的Arthas,优秀的开源的框架skywalking等等,也可以做到这些,那么这些工具究竟是通原创 2021-10-19 10:11:42 · 1258 阅读 · 1 评论 -
Spring集成ES客户端(7.5.2)
由于新版的ES逐渐放弃了对于Java TCP客户端的支持和维护,而是更推荐使用REST Client进行集群的操作,Springboot项目可以使用starter方便的集成使用,但是单纯的Spring项目并不能很优雅的直接使用RestHighLevelClient进行操作,因此需要手动封装一个FactoryBean进行集成。1、封装Spring的FactoryBean@Setter@Slf4jpublic class EsClientFactoryBean implements FactoryBea原创 2021-09-10 18:33:50 · 576 阅读 · 0 评论 -
ajax传输Json的正确方式
1.jquery的方式let data = { "name" : "xxx", "age" : 20}$.ajax({ url: 'localhost:8080/api/xxxxx', dataType: 'json', type: 'post', data: JSON.stringify(data), contentType: 'applica...原创 2020-02-27 18:42:12 · 1399 阅读 · 0 评论 -
Tomcat日志乱码解决
最近一直在用Springboot,很少再原创 2020-01-10 15:58:06 · 3961 阅读 · 0 评论 -
HashMap扩容流程
文章目录为什么扩容?什么时候扩容?如何扩容?今天在和同时讨论HashMap的时候,提到了扩容和冲哈希的事情,然后我发现大家都是一种半懂不懂的状态。于是回去做了一番功课,写下这篇文章。HashMap的扩容,又被很多人叫rehash、重哈希,我本人是很反对这个叫法的,事实上HashMap扩容的时候,Node中存储的Key的hash值并没有发生变化,只是Node的位置发生了变化。首先说为什么需要扩...原创 2019-09-21 15:14:30 · 2639 阅读 · 2 评论 -
静态代理和动态代理
静态代理和动态代理,都是基于代理模式实现的一种对于类的方法的增强。静态代理所谓静态代理,其实就是在编译期完成代理(JAVA术语中喜欢把编译期完成的东西叫做静态XX),就是我们之前写的代理模式,被代理类和代理类实现同一个接口,然后代理类通过依赖被代理类,实现方法的增强。public class StaticProxy { static interface Image{ void dis...原创 2019-09-21 15:29:35 · 273 阅读 · 0 评论