- 博客(37)
- 资源 (7)
- 收藏
- 关注
原创 为什么同一接口流程有时需要加多层分布式锁来实现临界资源管理?为什么一层分布式锁无法过滤所有请求?
Redis 集群分片故障主要由于节点宕机、网络分区、数据同步延迟或锁实现问题导致。在分布式系统中,为了避免分布式锁失效,需要综合考虑 Redis 的高可用设计、锁实现的可靠性以及业务逻辑的防护措施。每次远程调用前重新加分布式锁,即一个流程中的不同阶段需要多次加锁,是为了在复杂的分布式环境下,保护数据一致性和操作的原子性。虽然在理论上第一次加锁可以保护后续操作,但由于分布式系统中可能发生锁失效、资源状态竞争、服务调用延迟等问题,每个阶段加锁是确保安全和正确性的必要措施。
2025-01-14 10:45:19
557
原创 SQL 中索引分析,查询表索引
由于 MySQL 不直接提供查询单个索引的命令,你需要从 SHOW INDEX 的结果中筛选具体索引的行。只需加上where条件即可。如果是部分索引,则表示被索引的前缀长度(如 VARCHAR(10))。索引的类型(如 BTREE、FULLTEXT、HASH 等)。索引的基数(即索引中唯一值的估计数量,值越大查询效率越高)。是否允许重复:0 表示唯一索引,1 表示非唯一索引。列的排序方式(A 表示升序,NULL 表示未指定)。索引中的列顺序,从 1 开始。列是否允许 NULL 值。索引的额外注释信息。
2025-01-02 11:57:16
672
原创 从源码解读为什么使用ConcurrentHashMap,而不使用Hashtable与HashMap
从源码解读为什么使用ConcurrentHashMap,而不使用Hashtable与HashMap
2024-10-29 09:58:43
1068
1
原创 Redis中储存含LocalDateTime属性对象的序列化实现
上面代码中配置 RedisTemplate 的序列化机制,以便能够序列化和反序列化包含 LocalDateTime 等 Java 8 时间类型的对象。•作用ObjectMapper 是 Jackson 库的核心类,用来将 Java 对象转换为 JSON 字符串,或者将 JSON 字符串解析为 Java 对象。Jackson 是一个非常流行的 JSON 序列化和反序列化库,ObjectMapper 是它的主要接口,用于处理复杂的对象和数据结构。•作用。
2024-10-29 09:06:42
1015
1
原创 @RestController 和 @Controller 注解的联系及要点
@RestController 和 @Controller 注解的联系及要点
2024-10-08 17:17:11
1105
原创 分布式锁总结2 - redis实现分布式锁并解决常见问题
分布式锁实现过程:借助 SET 命令实现加分布式锁原子操作:•(NX 表示只有当键不存在时才设置值(即,保证了原子性,避免了多个客户端同时获取锁))。(EX 设置锁的过期时间,防止锁永远不会释放(即死锁情况))。实现步骤1. 尝试使用SET key value NX EX seconds 来加锁,实现原子操作。• 如果返回 OK,说明锁获取成功。• 如果返回 nil,说明锁已经被其他客户端持有,获取失败。2. 如果成功获取锁,执行关键业务逻辑。3. 业务完成后,通过。
2024-09-18 14:09:29
1306
1
原创 分布式锁总结1 - 为什么需要分布式锁?
在常见的高并发量的场景下,为了避免线程抢占资源带来的问题,对资源上锁是很常见的操作,但是如果稍不留神就有可能因上锁而带来新的问题,此篇日记将在最常见的场景下梳理单体项目加锁到分布式项目加锁的整个流程以及常见的一些问题。首先介绍业务背景,某商城商品三级分类列表数据的查询问题,分类列表数据作为热点数据,应该存放在缓存中。(此处不介绍本地缓存容易带来的数据一致性等问题,使用缓存中间件redis)1.请求分类数据。2.查询是否在缓存中,若从缓存中查询到则直接返回。
2024-09-18 14:07:58
333
原创 Spring中 Bean生命周期总结
等),Spring容器将会调用它们相应的方法,传入当前Bean的ID、BeanFactory和ApplicationContext等。此时,Bean已经准备好被应用使用了,它将在容器内部留存,直到被应用程序显式调用或通过容器的依赖注入功能注入到其他Bean中。首先,Spring容器通过构造器(或者在某些情况下是通过工厂方法)创建Bean的实例。依赖注入发生在实例化之后,这确保了Bean在使用前已经被正确配置。方法将会被调用,为Bean提供进一步的处理能力。,指定的初始化方法也会被调用。
2024-03-29 16:34:42
419
原创 Spring AOP总结
通过使用 Spring AOP,开发者可以将这些横切关注点从业务逻辑代码中分离出来,放在独立的模块中,实现业务逻辑与系统服务的解耦。这不仅提高了代码的可维护性和重用性,还使得系统更加灵活。
2024-03-29 16:20:44
844
原创 Spring IoC 总结
1.Spring IoC是什么?1.Spring IoC是什么?Spring IoC(inverse of control 控制反转)是 Spring 框架的一个关键概念,它是 Spring 实现依赖注入(DI)的核心机制之一。IoC 是一种设计模式,用于解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。在传统的编程模式中,对象的创建和管理通常由程序员自己负责。但是在大型应用中,对象之间的依赖关系会变得复杂,手动管理这些依赖关系将会变得非常困难。这时候,IoC 就变得非常有用。
2024-03-28 22:46:31
1104
原创 Spring自动装配(Autowired)原理,不是自动配置!!!及@Autowired与@Resource的区别
Spring自动装配(Autowired)原理,不是自动配置!!!及@Autowired与@Resource的区别
2024-03-18 17:18:46
1221
原创 SpringBoot自动配置原理,@SpringBootApplication
SpringBoot自动配置原理,@SpringBootApplication
2024-03-14 04:49:44
514
原创 SpringBoot中三种配置文件的优先级,及Java系统属性和命令行参数优先级
SpringBoot中三种配置文件的优先级,以及Java系统属性和命令行参数优先级
2024-03-14 02:49:51
508
原创 十大排序之选择排序(Java实现)
顾名思义选择排序就是选择,选择什么?选择最值,在一轮循环结束,选出待排序数据中的最值,并与当前位置的元素进行交换,这样进行length次选择即可得到有序序列。
2024-03-03 22:50:03
367
原创 Mac中如何更换终端默认的python版本
2.在打开的配置文件中输入(以下代码3.11替换为所下载的版本即可)3.Command+s保存文件后关闭文件❎。5.在终端输入python3检测更换成功。1.打开终端输入下列代码,打开配置文件。4.回到终端窗口执行以下代码。
2023-11-15 22:22:29
5422
原创 Python qtdesigner中图片资源可以显示,但运行时无法显示
Pyrcc安装方法与qtdesigner 无法显示背景图片或图标等问题
2023-05-19 09:07:44
2564
1
原创 Android Studio或IDEA 错误Unable to parse template “Class“ Error message: This template did not produce
Android Studio或IDEA 无法创建类或接口问题。Unable to parse template "Class" Error message: This template did not produce
2023-03-03 09:50:53
2463
1
原创 关于C语言中.与->的区别详解
->前是指针,而 . 前是结构体变量首先a->b的含义是(*a).b,所以他们是不同的,不过的确->可以用*和.实现,不需要单独一个运算符。 嗯,我这是说现代的标准化的 C 语义上来说,->可以用*和.的组合实现。早期的 C 有一段时间的语义和现代的 C 的语义不太一样。稍微有点汇编的基础的同学可能知道,在机器码和汇编的角度来看,不存在变量,不存在 struct 这种东西,只存在寄存器和一个叫做内存的大数组。结构体变量用 .来访问结构...
2022-04-02 16:18:06
22850
7
原创 printf如何输出string类型,及c_str()函数部分要点
要点: printf只能输出C语言内置的数据,而string不是内置的,只是一个扩展的类,直接输出肯定是错误的!其实方法很简单只需用如下函数就可将其输出:string test = "测试代码段";printf("%s",test.c_str());调用c_str()函数即可进行输出,同时使用cout也可以输出。下面是关于c_str()函数的几点说明:1.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数
2022-03-19 12:11:53
6025
原创 C++中string字符串类型详解及常见方法分析
因为C中除了字符数组以外没有直接与字符串相关的变量类型,在处理一些问题的时候不是很方便。所以C++提供新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象(注意头文件形式 #include<string>)。string可以构
2022-03-15 14:26:22
8702
原创 C语言中关于fscanf()方法与fgets()方法的简单知识点总结
fscanf()int fscanf(FILE* stream, const char* format, [argument...]);fscanf()方法与scanf()方法类似。不同的是多了第一个参数,文件指针参数,后两个参数用法类似。其中要注意的是第三个参数处填写变量时,不要遗漏取地址符&。要点1. format str:如%d, %f, %c, %s等,分别表示读入一个整数,浮点数,字符,字符串。还可以加上控制,如%ld,表示读入一个长整型数,%20s表...
2022-03-09 19:19:58
8570
信息管理系统,后台信息管理模板,多页面链接,html+css+js,前端实战项目,适用于大作业,上机任务Javaweb,前端练习
2022-03-18
酒店前端项目,JavaScript+css+html,静态网页,适用于大作业,上机任务 多页面Javaweb
2022-03-18
酒店管理系统(html、js、css、dom)静态页面 适合大作业 上机任务 包含酒店展示页面 以及后台管理页面 Javaweb
2022-03-18
酒店信息管理系统,信息管理系统 Java+GUI+Mysql(包含整个可视化界面及数据库文件) 课程设计
2022-03-18
信息管理系统 会员管理系统 会员管理系统 游泳馆会员管理系统 Java+GUI+Mysql(包含整个可视化界面及数据库文件)
2022-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人