- 博客(12)
- 收藏
- 关注
原创 06 | 20%的业务代码的spring声明式事务,可能都没有处理正确
原因是,Spring 默认通过动态代理的方式实现 AOP,对目标方法进行增强,private 方法无法代理到,Spring 自然也无法动态增强事务处理逻辑。2,
2025-02-08 20:23:27
162
原创 04 | 连接池:别让连接池帮了倒忙
对外提供获得连接、归还连接的接口给客户端使用,并暴露最小空闲连接数、最大连接数等可配置参数,在内部则实现连接建立、连接心跳保持、连接管理、空闲连接回收、连接可用性检测等功能。数据库连接池、Redis 连接池、 HTTP 连接池。
2025-02-08 16:54:46
386
原创 03 | 线程池:业务代码最常用也最容易犯错的组件
最后我想强调的是,线程池作为应用程序内部的核心组件往往缺乏监控(如果你使用类似 RabbitMQ 这样的 MQ 中间件,运维同学一般会帮我们做好中间件监控),往往到程序崩溃后才发现线程池的问题,很被动。如果你没有直接声明线程池而是使用其他同学提供的类库来获得一个线程池,请务必查看源码,以确认线程池的实例化方式和配置是符合预期的。特别注意 IO 绑定的任务和 CPU 绑定的任务对于线程池属性的偏好,如果希望减少任务间的相互干扰,考虑按需使用隔离的线程池。通过第一小节的学习我们知道,
2025-02-08 15:33:06
763
原创 01 | 使用了并发工具类库,线程安全就高枕无忧了吗?
1、程序运行在 Tomcat 中,执行程序的线程是 Tomcat 的工作线程,而 Tomcat 的工作线程是基于线程池的。2、顾名思义,线程池会重用固定的几个线程,一旦线程重用,那么很可能首次从 ThreadLocal 获取的值是之前其他用户的请求遗留的值。这时,ThreadLocal 中的用户信息就是其他用户的信息。在代码的finally代码块中,显示清除ThreadLocal中的数据。
2025-02-06 20:37:44
620
原创 补充知识点
一阶段提交不需要“协调者”角色,各结点之间不存在协调操作,因此其事务执行时间比两阶段提交要短,但是提交的“危险期”是每一个事务的实际提交时间,相比于两阶段提交,一阶段提交出现在“不一致”的概率就变大了。2. 第二阶段:预提交阶段。创建线程时,会重写run()方法,run()方法可以理解为线程要做的任务,但是直接调用run()方法,只是main线程也就是主线程去执行的,是没有新线程产生的。如果会话关闭或提交,一级缓存中的数据会被保存到二级缓存中,新的会话查询信息,就可以参照二级缓存中的内容。
2024-02-21 01:59:17
989
1
原创 【八股文】SpringCloud
Java面试八股文(2023最新)--SpringCloud微服务面试题剑指offer-八股文(一)八股文之springcloud【八股文】SpringCloud全家桶一天吃透SpringCloud面试八股文
2024-02-20 00:13:34
660
1
原创 2024最强秋招八股文(精简、纯手打)
反射是通过获取类的class对象,然后动态的获取到这个类的内部结构,动态的去操作类的属性和方法。应用场景有:要操作权限不够的类属性和方法时、实现自定义注解时、动态加载第三方jar包时、按需加载类,节省编译和初始化时间;获取class对象的方法有:class.forName(类路径),类.class(),对象的getClass()当一个线程被剥夺cpu使用权时,切换到另外一个线程执行死锁指多个线程在执行过程中,因争夺资源造成的一种相互等待的僵局。
2024-02-19 22:57:01
1871
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人