摘要:
save // 插入一条记录(选择字段,策略插入) boolean save(T entity); // 插入(批量) boolean saveBatch(Collection<T> entityList); // 插入(批量) boolean saveBatch(Collection<T> ent
阅读全文
posted @ 2025-04-15 12:38
kuki'
阅读(12)
推荐(0)
摘要:
setSql setSql 方法是 MyBatis-Plus 中用于构建更新操作的高级方法之一,它允许你直接设置更新语句中的 SET 部分 SQL。通过调用 setSql 方法,可以将一个自定义的 SQL 片段作为 SET 子句添加到更新语句中。 使用范围 UpdateWrapper LambdaU
阅读全文
posted @ 2025-04-15 12:27
kuki'
阅读(101)
推荐(0)
摘要:
条件构造器 eq eq 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的相等条件。 使用范围 QueryWrapper LambdaQueryWrapper UpdateWrapper LambdaUpdateWrapper 方法签名 // 设置指定字段的相等
阅读全文
posted @ 2025-04-15 12:25
kuki'
阅读(14)
推荐(0)
摘要:
Lambda Wrapper (LambdaUpdateWrapper): 包装 LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.set(User::ge
阅读全文
posted @ 2025-04-15 12:21
kuki'
阅读(34)
推荐(0)
摘要:
Service Interface IService 是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询和分页等。通过继承 IService 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。 IServic
阅读全文
posted @ 2025-04-15 12:21
kuki'
阅读(83)
推荐(0)
摘要:
@RestController 注解 这是一个组合注解,结合了 @Controller 和 @ResponseBody 的功能。 它表明该类是一个控制器,其中的每个方法的返回值都会直接作为 HTTP 响应的主体内容。
阅读全文
posted @ 2025-04-14 10:32
kuki'
阅读(13)
推荐(0)
摘要:
SISMEMBER SISMEMBER key member Returns if member is a member of the set stored at key. INCRBY INCRBY key increment 将存储在 key 中的数字增加 increment 值。如果 key
阅读全文
posted @ 2025-04-14 10:32
kuki'
阅读(27)
推荐(0)
摘要:
文档地址 https://www.runoob.com/lua/lua-variables.html lua的一些语法 local就是局部变量 key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局
阅读全文
posted @ 2025-04-14 10:21
kuki'
阅读(48)
推荐(0)
摘要:
文档地址 https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html#intValue-- intValue public int intValue() Returns the value of this Long as an int
阅读全文
posted @ 2025-04-13 20:13
kuki'
阅读(17)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html#execute(org.springframework.data
阅读全文
posted @ 2025-04-13 20:01
kuki'
阅读(40)
推荐(0)
摘要:
文档地址 https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/util/concurrent/RateLimiter.html Class RateLimiter java.lang.Object com.google
阅读全文
posted @ 2025-04-13 19:31
kuki'
阅读(157)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/ClassPathResource.html Package org.springframework.c
阅读全文
posted @ 2025-04-13 19:03
kuki'
阅读(32)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/script/DefaultRedisScript.html Package org.springfr
阅读全文
posted @ 2025-04-13 18:51
kuki'
阅读(47)
推荐(0)
摘要:
1 Redis实现的Demo分布式锁的问题 分布式锁不可重入: 不可重入是指同一线程不能重复获取同一把锁。 比如,方法A中调用方法B,方法A需要获取分布式锁,方法B同样需要获取分布式锁,线程1进入方法A获取了一次锁,进入方法B又获取一次锁,由于锁不可重入,所以就会导致死锁 分布式锁不可重试: 获取锁
阅读全文
posted @ 2025-04-13 13:48
kuki'
阅读(121)
推荐(0)
摘要:
1 原理:setnx指令 setnx指令的特点:setnx只能设置key不存在的值,值不存在设置成功,返回 1 ;值存在设置失败,返回 0 文档地址 https://redis.io/docs/latest/commands/setnx/ 如果键不存在,则将键设置为保存字符串值。在这种情况下,它相当
阅读全文
posted @ 2025-04-13 12:58
kuki'
阅读(73)
推荐(0)
摘要:
什么是缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在, 这样缓存永远不会生效,这些请求都会打到数据库。 shop实体对应的数据库中表tb_shop 字段有 id name type等 typeid(有索引) public Shop querywithchuantou(Long id
阅读全文
posted @ 2025-04-12 23:06
kuki'
阅读(60)
推荐(0)
摘要:
什么是缓存击穿 缓存击穿问题也叫热点Key问题, 就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了, 无数的请求访问会在瞬间给数据库带来巨大的冲击。 店铺查询 + 互斥锁的逻辑图 public Shop querywithjichuan_mutex(Long id) 逻辑 1. 先根据k
阅读全文
posted @ 2025-04-12 22:51
kuki'
阅读(122)
推荐(0)
摘要:
文档地址 https://plus.hutool.cn/apidocs/ Class JSONUtil public class JSONUtil extends Object JSON工具类 toBean public static T toBean(JSONObject json, Class
阅读全文
posted @ 2025-04-12 22:29
kuki'
阅读(501)
推荐(0)
摘要:
<img src="https://img2024.cnblogs.com/blog/3214105/202504/3214105-20250412203844206-1650968827.png" width="300" style="display: block; margin: auto;"
阅读全文
posted @ 2025-04-12 20:41
kuki'
阅读(9)
推荐(0)
摘要:
整体思路:更新数据时更新数据库并删除缓存,查询时更新缓存,无效写操作较少 public Result update(Shop shop)的逻辑 写在前面 shop.getId() 的调用依赖于 Shop 类中存在名为 id 的字段。如果 Shop 类使用了 Lombok 的 @Data 注解,并且包
阅读全文
posted @ 2025-04-12 20:14
kuki'
阅读(35)
推荐(0)
摘要:
文档地址 https://baomidou.com/guides/data-interface/#update 简介 updateById(shop) 是 MyBatis-Plus 提供的一个便捷方法,用于根据实体对象的主键 ID 更新对应的数据库记录。 为什么传入 shop 就可以? 在 MyBa
阅读全文
posted @ 2025-04-12 20:08
kuki'
阅读(375)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/InterceptorRegistration.html C
阅读全文
posted @ 2025-04-12 18:38
kuki'
阅读(15)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/InterceptorRegistry.html Class
阅读全文
posted @ 2025-04-12 18:36
kuki'
阅读(62)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurer.html Interfac
阅读全文
posted @ 2025-04-12 18:30
kuki'
阅读(14)
推荐(0)
摘要:
1. 将python 重定向到python3 注意python3的路径以你自己的为准 sudo ln -s /usr/bin/python3 /usr/local/bin/python 查看python3的命令 which python3 2. 修改zsh中的path 执行 vim ~/.zshrc
阅读全文
posted @ 2025-04-12 18:24
kuki'
阅读(120)
推荐(0)
摘要:
RefreshTokenInterceptor的优先级设置为0,最高 LoginInterceptor @Configuration /** * @Configuration 注解 * @Configuration:标识该类是一个配置类,Spring 在启动时会自动加载并应用其中的配置。 */ pu
阅读全文
posted @ 2025-04-12 17:41
kuki'
阅读(77)
推荐(0)
摘要:
逻辑 下图第二个拦截器 preHandle 查询当前线程的ThreadLocal中的userDTO信息,有则放行 否则返回401未授权 afterCompletion 销毁ThreadLocal public class LoginInterceptor implements HandlerInte
阅读全文
posted @ 2025-04-12 17:36
kuki'
阅读(88)
推荐(0)
摘要:
在 RefreshTokenInterceptor 中使用 ThreadLocal(通过 UserHolder.saveUser(userDTO))的主要目的是在一次 HTTP 请求的整个处理过程中,方便地在各个组件中访问当前用户的信息,而无需显式地传递用户对象。 🧩 为什么使用 ThreadLo
阅读全文
posted @ 2025-04-12 17:23
kuki'
阅读(42)
推荐(0)
摘要:
文档地址 https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html Class ThreadLocal public class ThreadLocal extends Object 此类提供线程局部变量。这些变量与普通
阅读全文
posted @ 2025-04-12 16:39
kuki'
阅读(21)
推荐(0)
摘要:
逻辑步骤 preHandle()方法 1. 获取request中的token String token = request.getHeader("authorization"); 2. token非空,则基于token获取Redis(Hash数据结构)中的userMap即用户数据 key为"logi
阅读全文
posted @ 2025-04-12 16:21
kuki'
阅读(66)
推荐(0)
摘要:
文档地址 https://plus.hutool.cn/apidocs/ fillBeanWithMap public static T fillBeanWithMap(Map map, T bean, boolean isIgnoreError) 使用Map填充Bean对象 Type Parame
阅读全文
posted @ 2025-04-12 16:17
kuki'
阅读(56)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/HashOperations.html#entries(H) entries Map<HK,HV> e
阅读全文
posted @ 2025-04-12 16:12
kuki'
阅读(14)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html preHandle default boolea
阅读全文
posted @ 2025-04-12 15:54
kuki'
阅读(54)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html Interface HandlerInterce
阅读全文
posted @ 2025-04-12 15:49
kuki'
阅读(48)
推荐(0)
摘要:
login逻辑 1. 输入邮箱 + 验证码,校验邮箱格式 接受的输入为 邮箱: phone 用户输入的验证码:code 这里只用工具类检查邮箱格式(仅判空) 2. 检查验证码是否一致 1.从Redis中取出key"login:code:"+phone对应的value(字符串)。 String Cac
阅读全文
posted @ 2025-04-12 14:49
kuki'
阅读(47)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html#delete(java.util.Collection) del
阅读全文
posted @ 2025-04-12 14:42
kuki'
阅读(17)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/HashOperations.html#putAll(H,java.util.Map) putAll
阅读全文
posted @ 2025-04-12 14:16
kuki'
阅读(20)
推荐(0)
摘要:
文档地址 https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html#opsForHash() opsForHash public <
阅读全文
posted @ 2025-04-12 14:09
kuki'
阅读(17)
推荐(0)
摘要:
文档地址 https://plus.hutool.cn/apidocs/ Class BeanUtil public class BeanUtil extends Object Bean工具类 把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。 copyPropertie
阅读全文
posted @ 2025-04-12 13:47
kuki'
阅读(452)
推荐(0)
摘要:
文档地址 https://plus.hutool.cn/apidocs/ Class UUID public class UUID extends Object implements Serializable, Comparable 提供通用唯一识别码(universally unique iden
阅读全文
posted @ 2025-04-12 13:26
kuki'
阅读(239)
推荐(0)