后端开发修炼手册
文章平均质量分 78
分享自己专业技能学习与提升的过程。
张念磊
用简单的语言讲清楚热爱的东西。
展开
-
踩坑日记 | 记一次流程图问题排查
这是一个画流程图的坑画流程图时需要注意:如果一个节点之后有多个分支,需要先试用 action 做好分流,再用path做进一步的分流。原创 2024-07-12 12:15:38 · 660 阅读 · 0 评论 -
Spring service本类中方法调用另一个方法事务不生效问题
Spring事务传播机制生效条件文章目录Spring事务传播机制生效条件为何不生效?如何解决?实践一下为何不生效?因为 spring 是使用 aop 来代理事务控制 ,是针对于接口或类的,所以在同一个 service 类中两个方法的调用,传播机制是不生效的。上面这段话说了原因,好像又没说。可以说的具体一点吗?OK,具体一点讲:我们使用spring容器构建出来的对象是一个代理对象,使用AOP对其方法增强也是返回的一个代理方法,目标对象内部的自我调用无法实施切面中的增强// todo 画图如何解原创 2022-02-08 21:05:27 · 1142 阅读 · 0 评论 -
Java内置锁的核心原理(一)
引言:线程安全问题什么是线程安全问题?当多个线程并发的访问一个Java对象时,无论系统如何调度这些线程,这个对象都能表现出一致的、正确的行为,那么我们就说对这个对象的操作是线程安全的。反之,对这个线程的操作不是线程安全的,发生了线程安全问题。本文将回答如下几个问题:synchronize是如何保证线程安全的? synchronize加锁到底是怎么加的? 锁信息放在Object对象的什么位置? 如何查看锁升级的具体过程?等等。关于synchronize的使用场景、synchronize与ReentryL原创 2022-01-25 20:56:26 · 554 阅读 · 1 评论 -
抽象类与模板模式
引言最近在看JUC的源码,Lock接口的实现类ReentrantLock中的AQS(AbstractQueuedSynchronizer)使用抽象类构建的模板模式很有意思。介绍模板模式前我们先回顾一下抽象类。抽象类什么是抽象类?《Java编程思想》(Think in Java)第九章对抽象类的说明,我们简单总结下:首先Java提供了一个叫抽象方法的机制,抽象方法只有声明,没有实现。抽象方法使用abstract关键字修饰:abstract void f();抽象类包含抽象方法的类叫做抽象类原创 2022-01-25 20:52:25 · 729 阅读 · 0 评论 -
Linux的内核态与用户态
引言:最近在看Java内置锁的实现时看到重量级锁的性能开销较大,主要因为使用重量级锁需要用到一个pthread_mutex_lock系统调用,导致Java程序需要在用户态和内核态之间切换,由于不太了解用户态和内核态到底是什么,所有今天来研究一下。是什么?Linux体系中内核态与用户态是什么?在Linux操作系统体系中,进程被分为2种类型,一种是操作系统自身运行的内核类进程,也被称为操作系统进程;另一种非操作系统进程运行在操作系统提供的能力之上的一种用户自定义的程序,我们将其称为用户类进程。如上图所原创 2021-12-12 22:37:34 · 1703 阅读 · 0 评论 -
线程池-两种提交任务的方法execute()与submit()详解
引言线程池中有两个提交任务的方法向线程池提交任务的两种方式大致如下:方式一:调用execute()方法// todo 源码方式二:调用submit()方法// todo 源码一、区别以上的submit()和execute()两类方法的区别在哪里呢?大致有以下三点:1.二者所接收的参数不一样Execute()方法只能接收Runnable类型的参数,而submit()方法可以接收Callable、Runnable两种类型的参数。Callable类型的任务是可以返回执行结果的,而Runnabl原创 2021-12-10 23:56:57 · 13086 阅读 · 3 评论 -
在线诊断工具Arthas实践分享-在线debug&不停服更新
Arthas 是一款阿里巴巴的开源在线 Java 诊断工具,采用命令行交互模式,支持 web 端在线诊断,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和分析诊断问题原创 2021-04-15 18:38:33 · 1391 阅读 · 0 评论 -
生产问题定位-Java线程死锁排查
后端开发 - 记一次生产问题定位@auther 张念磊@date 2020/7/25文章目录后端开发 - 记一次生产问题定位问题描述可能的原因尝试解决定位到问题最后补充查看系统总线程数查看进程下的所有线程数解压jar包 (可查看源码)后续问题描述一个服务上线生产之后两天出现了三次问题详细征兆如下:刚出现此问题时,浏览器的一个请求发过去,开发者工具network一栏显示该请求状态一直是padding,会持续几分钟。网关服务打印了对应的请求。后台服务只打印了controller中的日志,没有原创 2020-09-03 13:47:09 · 495 阅读 · 0 评论 -
生产问题定位-MySQL慢查询与索引优化
@auther 张念磊@date 2021-10-01文章目录一、现象二、定位慢查询三、解决问题四、总结与思考今天闲来无事,写篇文章记录下本周遇到的一个生产问题。一、现象有一个服务每三十秒跑批一次来统计数据,按理说数据应该是每30秒刷新一次,但用户反馈数据10多分钟才能改变一次。登录到生产的服务器,数据库服务单个线程的CPU占用率为 400%左右,这肯定是不健康的。且该线程为mysql,基本可以断定:出现了慢查询。二、定位慢查询找来我们的运维工程师,打开数据库的慢查询打开数据库慢查询三原创 2021-10-01 16:52:49 · 208 阅读 · 0 评论