自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 支付项目中,订单重复怎么处理

这里需要注意 lockKey 的设置,正确应该是 "order_lock_" + orderNo 这种以订单号维度加锁,避免同笔订单多次插入的同时锁的粒度也足够细。如果采用 "order_lock" 作为 lockkey ,那么下单的方法的并发度就是一,严重影响性能,会导致请求阻塞引发系统崩溃。可以将订单号作为数据库的主键或者唯一索引,这样一来,数据库就会拒绝重复插入的情况,避免重复订单。

2024-10-31 16:37:52 248

原创 TransmittableThreadLocal

ExecutorService getTtlExecutorService(@Nullable ExecutorService executorService)装饰executorService。可以在父线程创建的子线程中传递和恢复线程上下文,特别适用于分布式系统中的上下文传递。3.集成与扩展:提供与标准threadloacal的良好集成。这个库解决了在使用线程池等多线程框架时,不能正确传递父线程上下文到子线程的问题。1.线程间值传递:任务之间的数据传递。如日志链路追踪,用户会话信息。

2024-08-30 19:37:56 204

原创 submit()和execute()的区别

方法来获取任务结果时,如果任务尚未完成,则当前线程会被阻塞直到任务完成;如果任务完成了(无论正常结束还是异常结束),),但这种情况通常用于需要返回一个特定值(而不是任务执行的结果)的场景,且该值在任务执行前就已经确定。因此,你无法直接获取任务执行的结果或任务执行过程中的异常信息。对象查询任务是否完成、等待任务完成以及获取任务的结果或异常。(如果任务执行过程中抛出了异常)。方法可以返回一个结果,并且能抛出受检查的异常。任务中抛出了异常,这个异常会被封装在返回的。任务中抛出了未捕获的异常,这个异常将由。

2024-08-01 15:52:26 381

原创 B+树是怎么进行查询的?

MySQL 里 InnoDB 存储引擎是采用 B+ 树来组织数据的。

2024-07-24 10:17:18 1111

原创 双重检测锁DCL对象半初始化问题

拿到锁的线程进入到同步方法里, 发现此时instance已经初始化过了, 所以就不进入第二个if方法, 直接返回已经初始化过的uniqueInstance。后续如果再有线程调用getUniqueInstance方法, 在第一个if判断那里就为false, 直接返回刚刚已经初始化过的instance了, 这样做的好处是: 保证了线程安全, 避免了多个线程同时调用getUniqueInstance方法时, 每次都在竞争锁, 增加系统的开销。= null (重点)= null (重点)1. 分配对象内存空间。

2024-07-22 10:38:14 428

原创 线程池的执行流程

线程池的执行流程是一个系统且有序的过程,它主要涉及到任务的提交、线程的分配、任务的执行以及线程的回收等多个环节。

2024-07-18 15:56:32 1347

原创 fatal: unable to access ‘https://github.com/tata20191003/autowrite.git/‘: Failed to connec

因为git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。

2024-07-10 10:41:01 284

原创 Error running SsoApplicationRecordServiceImplTest.update. Command line is too long. Shorten the comm

选上Shorten command line。点击Edit Configuration。原因是在单元测试启动入口的配置没有设置。再设置JAR manifest。

2024-07-08 14:57:45 253

原创 全局异常辅助类

一:ErrorCode,异常的标识。

2024-07-04 09:22:14 215

原创 单元测试@BeforeAll和@BeforeEach的区别

总的来说,@BeforeAll 和 @BeforeEach 的区别在于执行的时机和方法的签名。如果你需要在所有测试方法执行前执行某些操作,使用 @BeforeAll,如果你需要在每个测试方法执行前都执行某些操作,使用 @BeforeEach。@BeforeEach 注解表示在每个测试方法执行之前执行一次。与 @BeforeAll 不同,@BeforeEach 方法不能是静态的。@BeforeAll 和 @BeforeEach 是 JUnit 5 中的注解,用于在执行测试方法之前执行某些操作。

2024-07-02 16:56:50 1353

原创 @transactional注解原理

注解通过Spring的AOP机制,结合JDBC事务,为开发者提供了一种方便、灵活的事务管理方式,帮助开发者更好地管理数据的一致性和可靠性。

2024-06-14 20:20:01 900

原创 用redisson实现一个排行榜

redis实现一个排行榜

2024-06-13 21:10:06 1231

原创 理解Spring AOP(权限校验为例)

SpringAOP

2024-06-13 14:40:59 325

原创 mysql中mvcc怎么实现

MySQL中的MVCC(多版本并发控制)主要用于InnoDB存储引擎来提供事务的隔离性。MVCC允许非锁定读操作,即读操作不会阻塞写操作,同时写操作也不会阻塞读操作(当然,写操作可能会阻塞其他写操作)。这是通过保留数据的旧版本来实现的,从而允许多个事务看到数据的一致快照。通过上述机制,InnoDB能够在提供高并发性能的同时,确保事务的隔离性和一致性。

2024-06-13 14:05:36 496

原创 索引失效问题

索引失效是指在进行数据库查询时,本应通过索引提高查询效率,但数据库实际却未能利用索引,而采用全表扫描的方式,这会导致查询时间和系统负担显著增加。5OR运算和NOT运算:在OR运算中,如果其中一个条件使用了索引,而另一个条件没有使用索引,整个查询可能会导致索引失效。这样可以减少对索引的影响,提高查询性能。7使用覆盖索引:尽量使用覆盖索引(只访问索引的查询),避免select *操作,以减少回表查询的次数,提高查询性能。6表连接中的索引失效:在表连接查询中,如果连接条件中的字段没有索引,可能导致索引失效。

2024-06-13 13:14:54 580

原创 MyBatis中#{}和${}的区别

【代码】MyBatis中#{}何${}的区别。

2024-06-12 14:14:08 375 2

原创 如何给热点数据设置过期时间

在Spring Boot项目中,我们通常使用缓存框架(如Spring Cache、Caffeine、Redis等)来缓存热点数据,并设置这些数据的过期时间。

2024-06-11 17:40:30 524

原创 gateway层解决跨域问题

Spring Cloud Gateway允许你配置一个全局的CORS过滤器,该过滤器会应用于所有通过Gateway的请求。这个问题本质上是由浏览器的同源策略造成的,是浏览器对JavaScript施加的一种安全限制。同源策略是由Netscape提出的一个安全策略,是浏览器最核心也是最基本的安全功能。具体来说,同源指的是协议、域名、端口号都相同,只要这三项数据中有一项不同,那么该资源就将被认为是从不同的Origin得来的,进而不被允许访问。来定义CORS策略,并将其添加为全局过滤器。跨域问题,主要指的是。

2024-06-11 17:15:09 271

原创 限流的实现

网关层面实现接口限流,你可以使用Spring Cloud Gateway结合Alibaba Sentinel。以下是一个简单的步骤和示例代码,展示如何在Spring Cloud Gateway中使用Sentinel进行接口限流。你可以使用Sentinel的API在运行时动态配置限流规则。中,你可以配置Sentinel的相关设置,如数据源、限流规则等。但在这个示例中,我们将主要关注如何在代码中动态配置限流规则。3.动态配置限流规则。

2024-06-11 17:07:12 375

原创 Redis缓存登录信息

通过将认证结果缓存在本地,可以减少对外部认证系统的依赖,从而提高应用的可用性和性能。:虽然缓存本身并不直接提高安全性,但通过将敏感数据(如密码哈希)存储在缓存中,并限制对这些数据的访问,可以减少潜在的安全风险。通过将登录信息缓存在内存中,可以显著减少数据库的查询次数,从而减轻数据库的压力。这可以用于实现会话超时功能,当用户的登录会话过期时,缓存中的登录信息将被自动删除,从而保证了用户会话的安全性。通过将用户的登录信息缓存在共享的缓存系统中,可以轻松实现单点登录功能。

2024-06-10 21:09:03 419

原创 为什么说红黑树查询快

1. 平衡性保证:○ 红黑树是一种自平衡的二叉搜索树,它在插入和删除节点时能够自动调整树的结构,以保持树的平衡性。○ 它的平衡性通过一组规则来确保,如每个节点要么是红色要么是黑色、根节点是黑色、叶子节点(NIL节点,空节点)是黑色等。○ 这些规则保证了红黑树的高度近似于log(n),其中n是树中节点的数量。这使得红黑树的高度相对较低,从而保证了查询效率。2. 时间复杂度低:○ 红黑树的查找、插入和删除操作都能在O(log(n))的时间复杂度内完成。

2024-06-10 15:36:42 915

转载 Sentinel的使用 服务雪崩,限流和熔断

Sentinel实现降级

2024-06-10 15:33:33 619

原创 Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接

输入redis.cli..exe -h 127.0.0.1 -p 6379。此时不要关闭窗口,在redis目录下新开一个cmd。连接redis时显示的报错。

2024-06-08 15:00:42 350 1

原创 docker-java报错

原因是没有连接linux系统,默认为Windows下。//获取默认dockerClient。首先看能不能进行网络连接。然后创建新的远程连接。

2024-06-07 15:12:48 728 1

原创 docker常用命令

记录doker的常用命令1. 查看镜像列表docker image ls 或 docker imagesdocker images -a:列出所有镜像2. 搜索镜像。

2024-06-07 14:32:11 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除