后端开发笔记
文章平均质量分 87
实战过程中 ➺ 所思&所想&所记
程序员刚子
编码半生,归来仍是少年
展开
-
java泛型的理解
泛型的意思是说类型可以在以后指定,但是这仍然需要告诉编译器,我需要某个类型作为占位符,比如Tpublic List<T> fuck(T shit){ 。。。}然后编译器并不知道这个T是什么所以需要在前面显示的声明一下(这就是为什么不能省略)是申明T为泛型,以区别于类名。public <T> List<T> fuck(T shit){ ...}共出现了三个T第一个是定义一个范型名为T来声明类型参数的,也可以为任何一个或多个字母后两个T是泛型的实原创 2022-01-19 21:58:00 · 523 阅读 · 0 评论 -
注解@Data与@EqualsAndHashCode的爱恨情仇
@Data与@EqualsAndHashCode的爱恨情仇原创 2022-01-19 21:53:02 · 2963 阅读 · 1 评论 -
为什么重写equals一定要重写hashcode
在原始的Object类中默认equals比较规则是通过“==”来进行判断,这样比较的是两个对象的内存地址,默认的hashcode方法返回的是对象的内存地址由哈希算法转换成的一个整数,实际上指的的也是内存。哈希算法具有一定的偶然性,不同的内存地址可能计算出相同的哈希值。对于原始的hashCode()和equals() 方法来说,通过equals() 比较两个对象相等,说明这两个对象的内存地址相同,进而知hashcode也是相同的。在实际使用中,大多数场景下,如HashMap中存放自定义对象类作为ke原创 2022-01-19 21:47:31 · 5296 阅读 · 3 评论 -
分布式事务小结
随着互联网技术的不断发展,系统越来越复杂,几乎所有 IT 公司的系统都已经完成从单体架构到分布式架构的转变,分布式系统几乎无处不在。谈到分布式系统,特别是微服务架构,不得不谈分布式事务01|基础理论在讲解具体方案之前,有必要了解一些分布式事务所涉及到的基础理论知识。事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务应该具有 4 个属性:原子性、一致性、隔离性、持久性。原创 2022-01-19 12:17:22 · 163 阅读 · 0 评论 -
一次线上线程池任务事故
前言线上出现线程池提交任务抛出 RejectedExecutionException 异常即任务提交执行了拒绝策略的操作。查看业务情况和线程池配置,发现并行执行的任务数是小于线程池最大线程数的。以下是排查过程一、业务场景1.1. 任务描述每次执行一组任务,一组任务最多有 15 个,多线程执行,每个线程处理一个任务;每次执行完一组任务后,再执行下一组,不存在上一组的任务和下一组一起执行的情况。1.2. 任务提交流程① 任务开始 ➠② 获取一组任务 ➠③ 将任务提交到线程池 ➠④ Futu原创 2022-01-19 12:16:21 · 327 阅读 · 0 评论 -
线程池的线程复用原理
前言线程池有核心线程和非核心线程之分:核心线程是一直存活在线程池中的非核心线程是在执行完任务之后超时销毁的当Thread执行完Runnable任务之后就会销毁,而且就算执行完任务之后把线程挂起也没有办法再去执行其他任务,**那线程池是如何做到核心线程复用的呢?**首先来看一下执行线程任务的方法,实际上就是根据工作线程数量去执行不同的策略execute()public void execute(Runnable command) { if (command == null)原创 2022-01-19 12:14:10 · 996 阅读 · 1 评论