
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
最近做项目,需要实现一个agent,实现运行过程替换字节码,当笔者实现这些功能时发现还是很多注意事项的。而且字节码的替换过程如果类的属性与方法升级了,那么加载就会报错。这种做法的好处是代码无侵入,缺点也很明显,严重依赖特定的jvm版本和中间件等。javaagent实际上是JVMTI使用的技术,核心依靠Instrumentation实现。

前言说道Javaagent是最近经常在使用这个技术,顺便了解了原理与根源,实际上就是jvm开个代理字节码修改的instrument接口。但实际上使用,根据使用的方式不同而略有区别。1. Javaagent使用实际上,笔者在前段时间写了arthas的启动原理(83条消息) arthas 启动原理分析_fenglllle的博客-CSDN博客,简单的说明了Javaagent的2种方式,jvm参数方式与动

前言旧项目MySQL Java升级驱动,本来一切都好好的,但是升级到8.x的驱动后,发现入库的时间比实际时间相差13个小时,这就很奇怪了,如果相差8小时,那么还可以说是时区不对,从驱动源码分析看看1. demopom依赖,构造一个真实案例<dependencies><dependency><groupId>org.springframework.boot<

intellij idea git 合并部分提交前言democherry-pick 摘樱桃总结前言笔者经常一边做设计一边写代码,然而一个项目经常多个人并行开发,就会有很多分支,经常需要代码合并,这个时候就需要多个分支之间合并,并且只能合并部分提交的部分内容。此时就需要cherry-pick的功能。目前而言一般代码管理就是Git管理,私仓gitlab,当然也可以是GitHub。demo笔者使用git
我们在写代码时,尽量还是使用框架封装的逻辑,比如连接池,比如Spring声明式事务,可以避免编程式事务在写代码时的逻辑漏洞,因为在没触发的时候很难出现,测试很多时候不充分。实际上一起写jdbc的时候还很少出现这个问题,因为那个时候会非常注意连接的回收,事务的提交逻辑,但是Spring自动管理后,这个就很少注意了,因为注解声明式事务太方便了,只有特殊时候才会自己管理事务。

zookeeper 3.5前言AdminServer配置AdminServer集群配置总结前言笔者很久没有使用zookeeper,一直稳定运行着3.4版本的zookeeper。并且业务也在流行去zk化,zk的ZAB协议决定了不能无限扩容,选主复制恢复决定了这是一个中心化的思想。但是笔者在升级到3.5的时候居然,不能启动,说Unable to start AdminServer。什么时候多了这玩意,
最近做项目,定制sonar规则,提高Java代码质量,在编写的sonar规则,做验证时,使用单元测试有一些简单的心得感悟,分享出来。sonar的自定义规则很简单,一般而言有2种模式可以使用:1. 自定义扫描代码逻辑,并对分类的Tree的结构处理2. 使用已扫描的分类,对分好类的Tree进行分析。

最近调研grpc的情况,发现grpc实际上还是HTTP2协议,实际上就是http2+proto传输。那么是否可以在现有的server支持呢,试了下,还真可以,但是笔者在返回数据时有个问题一直没有思路。

最近做项目,需要双工通信,考虑http协议,但是是单向的通信,只能请求响应,不能从服务端推送,如果要服务器推送,方式有很多,http轮训,长轮训,websocket等,实际上tcp传输层是双向通信的,原始的socket就可以实现。现在最常用的是websocket,因为可以复用http的底层tcp连接,方便,当然http3使用udp通信,基于QUIC保证连接可靠。...

前言有个需求,需要内嵌http服务,要求体积尽可能小,http并发很小,那么就自行实现一个http服务。其实http只是一种应用层协议:超文本传输协议。传输层协议为TCP。1. http协议http协议的内容通过抓包如下:可以看见Hypertext Transfer Protocol下标红的是http协议的核心,http header是说明协议,协议mime-type;body才是返回的内容。2.








