![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java工具
文章平均质量分 63
hanlang_java
安安静静写点代码
展开
-
线程安全随机队列
有的时候,在某些场景下,我们需要这么一个队列 1、这个队列是线程安全的 2、来了最新元素我们需要把最新元素放入队列,如果队列满了,我们需要把队尾的元素给remove掉 3、我们需要随机读取这个队列中的一个元素于是我们可以利用java现有的对象来完成,例如LinkedBlockingQueue 它能保证线程安全,符合第一点 它提供了操作的保证,即当队列满的时候,插入元素会报异常,能保证队列的原创 2016-08-16 23:28:50 · 811 阅读 · 0 评论 -
入侵java进程的方法
需求当我们线上程序运行的时候,难免会遇到一些业务问题,在排查问题的时候我们会去看日志,查看一些函数输入输出来定位问题;然而许多时候,我们在项目开发的时候并没有留下足够的日志来排查问题,这时候就需要一些特殊的方法来排查,比如远程debug,重新增加日志重启服务,或者用btrace等工具来排查,各种工具都有各自的优点和使用的场景,具体不足本篇暂不讨论,本文只介绍一种新的简单的工具,这个工具可以提供...原创 2018-05-21 23:54:39 · 1155 阅读 · 1 评论 -
ASM静态代码解析方法依赖及生成方法调用流程图方法
系统依赖系统开发,随着功能不断完善,体量渐渐增大,分模块抽象,复用工具等;涉及复杂的业务逻辑的时候,也会引入外部服务,外部工具;业务开发追求的是功能的完整性和快速迭代,但是在分析系统可用性可靠性的时候,我们往往需要找到一些系统的薄弱点,及被依赖点依赖排查在java开发中,最细粒度的依赖就是方法级依赖,有了方法级依赖,就可以拓展到系统,平台级依赖大多数时候,我们都是靠撸代码来找出方法间的依赖...原创 2019-05-10 20:37:00 · 3622 阅读 · 0 评论 -
利用java-tracer来录制方法调用过程
介绍对于程序开发一般要从两个角度去考虑,业务开发更关注功能逻辑实现,是一个业务问题;技术开发则需要关注性能稳定性,是一个纯技术问题。功能逻辑是一个大话题,涉及思维方式,业务需求,比较复杂,不太好量化,但是对于性能稳定性,却是一个技术领域的问题,对性能的追求是一个码农应有的素质。要想对性能有所追求,就要对系统有所了解,项目开发不是一个独立的事件,大的工程往往依赖很多人很多工具的辅助才能完成。正常...原创 2019-05-11 00:33:42 · 1046 阅读 · 0 评论 -
利用jvm-sandbox画服务依赖图和时序图
jvm-sandbox功能jvm-sandbox是一个java动态字节码注入的工具,使用非常灵活,项目主页https://github.com/alibaba/JVM-Sandbox,它的原理是通过JVM-TI技术,利用asm修改字节码的能力,实现对运行时系统切入动态逻辑,具体使用介绍可以查看其主页说明。service-trace使用service-trace是一个使用jvm-sandbox...原创 2019-08-06 23:16:00 · 1841 阅读 · 0 评论 -
使用java-tracer画方法内部逻辑的时序图
java-tracer功能介绍java-tracer是一个利用JVMTI技术实现的java方法调用轨迹录制的工具,它能帮我们绘制方法调用的时序图,利用时序图结合源码,我们可以很容易地理解一些框架的运行逻辑及细节结果样例如下链接即是一个简单的spring注入的时序图https://fengzhongke.github.io/pages/spring.html源码地址github地址:...原创 2019-09-04 00:15:44 · 1686 阅读 · 1 评论 -
sequence生成器写法
sequence场景在分布式环境下,有的时候我们需要给每一个单元生成一个唯一id,在并发量不是很大的时候,数据库的自增主键是一个不错的选择,但是当数据量非常大,或者并发非常高的时候,自增的方式就会成为瓶颈,于是我们可以用sequence的方式。sequence方式其实也是一种自增的方式,只不过我们是批量自增,每次从数据库请求一个数据段,用完了之后再请求一段,以达到减小数据库访问量的目的方案设...原创 2019-09-07 00:48:01 · 1312 阅读 · 0 评论