![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 84
JAVA
小毕超
善于钻研思考,乐于追求新知识,热爱微服务架构,国内软考高级系统架构设计师职称,国际TOGAF鉴定级企业架构设计师,华为云·云享专家,CSDN博客专家。曾获“联想杯”移动互联比赛 江苏省一和国二成绩,第四届全国应用型人才比赛“兄弟连杯”国一成绩。
展开
-
排查线上JVM CPU飙升使用率高和线程死锁问题
排查线上JVM CPU飙升使用率高和线程死锁问题原创 2024-03-10 14:34:20 · 642 阅读 · 0 评论 -
JVM 常用监控工具介绍和使用
JVM 常用监控工具介绍和使用原创 2024-03-10 14:32:30 · 1497 阅读 · 0 评论 -
一文总结 JUC 并发编程
阻塞队列,数据由队列的一端输入,从另外一端输出,当队列是空的,从队列中获取元素的操作将会被阻塞,直到其他线程往空的队列插入新的元素。如果后面括号括起来的部分是一个类,其作用锁的对象是这个类的所有对象。读写锁将操作读写分开成 2 个锁来分配给线程,在多个线程读的情况下,不受锁的控制,但是在写的情况下,只允许一个获得锁的线程来写,并且写的过程中读锁也在等待。修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,其中要么获得锁的线程执行完了所有逻辑,正常释放锁,要么线程执行发生异常,由。原创 2023-02-11 16:18:13 · 764 阅读 · 1 评论 -
CGLIB 动态代理使用
Cglib是一个强大的,高性能,高质量的代码生成类库。大部分功能实际上是ASM所提供的,Cglib只是封装了ASM,简化了ASM操作,实现了运行期生成新的class。运行时动态的生成一个被代理类的子类(通过ASM字节码处理框架实现),子类重写了被代理类中所有非 final 的方法。:JDK动态代理要求被代理的类必须实现接口,当需要代理的类没有实现接口时Cglib代理是一个很好的选择。实现 MethodInterceptor 接口的 intercept 方法后,所有生成的代理方法都调用这个方法。原创 2022-09-04 16:16:16 · 891 阅读 · 0 评论 -
阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用
阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用一、arthas上篇文章我们借助arthas监测线上系统的运行信息、排查程序运行缓慢问题,尽管这样已经非常好了,但是还是会有些问题,有时我们可能还需要查看方法中某个变量的内容,或者方法内某个计算的运行时长,通过前面讲的可能无法满足需求。因此本片文章通过在不重启应用程序的情况下,反编译源码成java文件,并添加上自定义的打印逻辑,然后在编译回class文件加载到JVM中执行。下面是上篇文章的地址:https://blog.c原创 2022-01-26 16:43:48 · 5988 阅读 · 0 评论 -
阿里Java诊断工具 arthas - 监测线上系统的运行信息、排查程序运行缓慢等问题
一、arthas上篇文章我们讲解了使用arthas在线上环境排查定位内存占用过大、cpu使用率过高等问题,本篇文章继续使用arthas监测线上系统的运行信息,以及排查程序运行缓慢等问题。下面是上篇文章的地址:https://blog.csdn.net/qq_43692950/article/details/122688520二、监测线上系统的运行信息在生产环境不像本地使用idea运行,可以随时进行debug,那生产环境我们要监控程序运行到某一个方法的入参和出参时要怎么办呢?此时我们可以通过打原创 2022-01-26 15:14:27 · 6715 阅读 · 0 评论 -
阿里Java诊断工具 arthas - 排查线上环境内存使用过大、线程cpu使用率高问题
一、arthas上篇文章对arthas的安装以及指令做了展示,可以感觉出arthas提供的指令还是挺多的,上篇文章没有对指令进行过多的演示,目的是大家在学习arthas后,就可以在上篇文章或者官方文档中统一查找定位使用哪个指令了,本篇文章借助arthas排查应用内存使用过大、线程cpu使用率高问题,可以加深大家对arthas指令的理解。下面是上篇文章的地址:https://blog.csdn.net/qq_43692950/article/details/122686329二、排查应用内存使用过原创 2022-01-25 17:49:49 · 34393 阅读 · 2 评论 -
阿里Java诊断工具 arthas - 介绍及指令大全
一、arthasArthas` 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到原创 2022-01-25 16:13:15 · 11772 阅读 · 1 评论 -
jdk 新特性 CompletableFuture 并行框架
一、执行异步任务CompletableFuture 提供了四个静态方法来创建一个异步操作。不支持返回值。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)可以支持返回值public static <U> Comp原创 2021-04-15 19:55:36 · 482 阅读 · 0 评论 -
Jdk8 新特性 函数、Lambda表达式和Stream流总结
一、 Lambda表达式1. jdk8 接口的新特性多继承和默认方法。interface A{}interface B{}public interface Inte1 extends A,B { String add(); default int test(int a,int b){ return a*b; }}2. 将匿名函数换成->public class Test1 { public static void main(String原创 2021-02-09 23:21:18 · 5347 阅读 · 1 评论 -
Java 使用Disruptor并发框架
Java 使用Disruptor并发框架一、什么是DisruptorDisruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。能够在无锁的情况下实现网络的Queue并发操作。Disruptor使用观察者模式, 主动将消息发送给消费者, 而不是等消费者从队列中取; 在无锁的情况下, 实现queue(环形, RingBuffer)的并发操作, 性能远高于BlockingQueue。二、Disruptor的优化策略原创 2020-08-13 16:21:54 · 3310 阅读 · 2 评论 -
使用Netty编写异步非阻塞Socket tcp通信,和TCP粘包、拆包问题解决
使用Netty编写异步非阻塞Socket tcp通信,和TCP粘包、拆包问题解决Netty应用场景分布式开源框架中dubbo、Zookeeper,RocketMQ底层rpc通讯使用就是netty。游戏开发中,底层使用netty通讯。netty的优点NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等;需要具备其它的额外技能做铺垫,例如熟悉Java多线程编程,因为NIO编程涉及到Reac原创 2020-07-20 22:42:27 · 1988 阅读 · 3 评论 -
使用Netty3.X编写异步非阻塞Socket tcp通信
使用Netty编写异步非阻塞Socket tcp通信Netty应用场景分布式开源框架中dubbo、Zookeeper,RocketMQ底层rpc通讯使用就是netty。游戏开发中,底层使用netty通讯。netty的优点NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等;需要具备其它的额外技能做铺垫,例如熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和原创 2020-07-20 22:31:36 · 1139 阅读 · 0 评论 -
使用NIO实现异步非阻塞Socket tcp通信
使用NIO实现异步非阻塞Socket tcp通信一、BIO与NIOIO(BIO)和NIO区别:其本质就是阻塞和非阻塞的区别阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,就会一直等待,直到传输完毕为止。非阻塞概念:应用程序直接可以获取已经准备就绪好的数据,无需等待。IO为同步阻塞形式,NIO为同步非阻塞形式,NIO并没有实现异步,在JDK1.7后升级NIO库包,支持异步非阻塞同学模型NIO2.0(AIO)BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求原创 2020-07-20 20:16:00 · 1297 阅读 · 0 评论 -
JVM优化和垃圾回收机制
JVM优化Java堆堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。根据垃圾回收机制的不同,Java堆有可能拥有不同的结构,最为常见的就是将整个Java堆分为新生代和老年原创 2020-07-19 15:02:21 · 3018 阅读 · 0 评论