- 博客(10)
- 收藏
- 关注
原创 Redis分布式锁
要实现分布式锁,需要借助一个外部系统,所有的进程都去这个系统上申请加锁,而这个外部系统必须要实现互斥的能力,换言之,如果有两个请求同时进来,也只会给一个进程返回成功,另一个返回失败或等待。比如,现在的业务基本上都是微服务架构,一个应用会部署多个进程,这多个进程需要修改MySQL的同一行记录时,就需要引入分布式锁来解决这个问题了。以上是分布式锁最简单的实现,存在一个很大的问题,如果客户端1拿到锁以后,没有释放锁,就会造成死锁。,定时去检测这个锁的失效时间,如果锁快过期了,但是操作共享资源还未完成,
2025-01-21 17:43:54
912
原创 工作问题记录
解决方法:将数据库字段长度改成8,或者在存入数据库时,将date类型转为string类型,再将string类型转为date类型。问题:date类型在存入数据库时,datetime字段长度为0,存入时会四舍五入,导致存入数据库值与传mq中的值不一样。场景:将日期以date类型,存入数据库,字段为datetime。之后将date转为string类型传mq。
2024-09-23 14:22:00
137
原创 20240805学习笔记(varchar和char区别,datetime和timestamp区别,LocalDateTime的withNano去秒)
char 类型是一个定长的字段,以 char(10) 为例,不管真实的存储内容多大或者是占了多少空间,都会消耗掉 10 个字符的空间。存进去的是NULL,timestamp会自动储存当前时间,而 datetime会储存NULL。varchar 类型的查找效率比较低,而 char 类型的查找效率比较高。varchar 类型的长度是可变的,而 char 类型的长度是固定的。坦通俗来讲,当定义为 char(10) 时,即使插入的内容是。,当select的时候再转变为当前时区的时间。会转变为UTC时间保存在。
2024-08-05 17:27:38
339
原创 反射笔记666
public Constructor getDeclaredConstructor(Class... parameterTypes):获取"某个构造方法"可以是私有的,或受保护、默认、公有;public Method[] getDeclaredMethods(): 获取所有的成员方法,包括私有的(不包括继承的)public Constructor[] getDeclaredConstructors():获取所有的构造方法(包括私有、受保护、默认、公有)
2024-07-31 08:52:23
171
原创 Redis实现分布式锁
Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系,Redis中可以使用SETNX命令实现分布式锁。为了防止获取锁后程序出现异常,导致其他线程/进程调用SETNX命令总是返回0而进入死锁状态,需要为该key设置一个合理的过期时间。当且仅当 key 不存在,将 key 的值设为 value。若给定的 key 已经存在,则 SETNX 不做任何动作。使用SETNX命令获取锁,若返回0(key已存在,锁已存在)则获取失败,若返回1则获取成功。
2024-04-10 16:57:09
189
1
原创 mysql面试题笔记
对于普通索引,如 name 字段,则需要根据 name 字段的索引树(非聚簇索引)找到叶子节点对应的主键,然后再通过主键去主键索引树查询一遍,才可以得到要找的记录,这就叫。对于多个字段的联合索引,如 index(a,b,c) 联合索引,则相当于创建了 a 单列索引,(a,b)联合索引,和(a,b,c)联合索引(但并不是建立了多个索引树)InnoDB的行锁是建立在索引的基础之上的,行锁锁的是索引,不是数据,所以提高并发写的能力要在查询字段添加索引。更新主键的代价很高,因为将会导致被更新的行移动。
2024-03-05 15:08:30
1000
1
原创 MySQL使用自增主键的好处
使用整形才可以使用AUTO_INCREAMENT,不用担心主键重复问题。自增主键按顺序存放,增删数据速度快,对于检索非常有利;数字型,占用空间小,易排序;
2024-03-04 16:44:40
465
1
SquareTest免费
2024-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人