摘要:
什么是缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在, 这样缓存永远不会生效,这些请求都会打到数据库。 shop实体对应的数据库中表tb_shop 字段有 id name type等 typeid(有索引) public Shop querywithchuantou(Long id 阅读全文
posted @ 2025-04-12 23:06
kuki'
阅读(61)
评论(0)
推荐(0)
摘要:
什么是缓存击穿 缓存击穿问题也叫热点Key问题, 就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了, 无数的请求访问会在瞬间给数据库带来巨大的冲击。 店铺查询 + 互斥锁的逻辑图 public Shop querywithjichuan_mutex(Long id) 逻辑 1. 先根据k 阅读全文
posted @ 2025-04-12 22:51
kuki'
阅读(122)
评论(0)
推荐(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)
推荐(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)
推荐(0)
摘要:
整体思路:更新数据时更新数据库并删除缓存,查询时更新缓存,无效写操作较少 public Result update(Shop shop)的逻辑 写在前面 shop.getId() 的调用依赖于 Shop 类中存在名为 id 的字段。如果 Shop 类使用了 Lombok 的 @Data 注解,并且包 阅读全文
posted @ 2025-04-12 20:14
kuki'
阅读(35)
评论(0)
推荐(0)
摘要:
文档地址 https://baomidou.com/guides/data-interface/#update 简介 updateById(shop) 是 MyBatis-Plus 提供的一个便捷方法,用于根据实体对象的主键 ID 更新对应的数据库记录。 为什么传入 shop 就可以? 在 MyBa 阅读全文
posted @ 2025-04-12 20:08
kuki'
阅读(375)
评论(0)
推荐(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)
推荐(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)
推荐(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)
推荐(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)
推荐(0)
摘要:
RefreshTokenInterceptor的优先级设置为0,最高 LoginInterceptor @Configuration /** * @Configuration 注解 * @Configuration:标识该类是一个配置类,Spring 在启动时会自动加载并应用其中的配置。 */ pu 阅读全文
posted @ 2025-04-12 17:41
kuki'
阅读(77)
评论(0)
推荐(0)
摘要:
逻辑 下图第二个拦截器 preHandle 查询当前线程的ThreadLocal中的userDTO信息,有则放行 否则返回401未授权 afterCompletion 销毁ThreadLocal public class LoginInterceptor implements HandlerInte 阅读全文
posted @ 2025-04-12 17:36
kuki'
阅读(88)
评论(0)
推荐(0)
摘要:
在 RefreshTokenInterceptor 中使用 ThreadLocal(通过 UserHolder.saveUser(userDTO))的主要目的是在一次 HTTP 请求的整个处理过程中,方便地在各个组件中访问当前用户的信息,而无需显式地传递用户对象。 🧩 为什么使用 ThreadLo 阅读全文
posted @ 2025-04-12 17:23
kuki'
阅读(42)
评论(0)
推荐(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)
推荐(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)
推荐(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)
推荐(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)
推荐(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)
推荐(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'
阅读(49)
评论(0)
推荐(0)
摘要:
login逻辑 1. 输入邮箱 + 验证码,校验邮箱格式 接受的输入为 邮箱: phone 用户输入的验证码:code 这里只用工具类检查邮箱格式(仅判空) 2. 检查验证码是否一致 1.从Redis中取出key"login:code:"+phone对应的value(字符串)。 String Cac 阅读全文
posted @ 2025-04-12 14:49
kuki'
阅读(47)
评论(0)
推荐(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'
阅读(18)
评论(0)
推荐(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)
推荐(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)
推荐(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)
推荐(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)
推荐(0)
摘要:
代码: String token = UUID.randomUUID().toString(); 用于生成一个全局唯一的字符串标识符(UUID),并将其赋值给变量 token。 详细解析 UUID.randomUUID() 这是 hutool工具类 提供的静态方法,用于生成一个类型为 4 的 UUI 阅读全文
posted @ 2025-04-12 13:22
kuki'
阅读(257)
评论(0)
推荐(0)
摘要:
条件构造器的方法 eq eq 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的相等条件。 使用范围 QueryWrapper LambdaQueryWrapper UpdateWrapper LambdaUpdateWrapper 方法签名 // 设置指定字段 阅读全文
posted @ 2025-04-12 11:17
kuki'
阅读(300)
评论(0)
推荐(0)
摘要:
MyBatis-Plus文档地址 https://baomidou.com/guides/data-interface/#使用步骤 持久层接口 query 提供链式查询操作,可以连续调用方法来构建查询条件。 // 链式查询 普通 QueryChainWrapper<T> query(); // 链式 阅读全文
posted @ 2025-04-12 11:12
kuki'
阅读(94)
评论(0)
推荐(0)
摘要:
在 MyBatis-Plus 中, User user = query().eq("phone", phone).one(); 创建一个查询条件,指定字段 phone 等于变量 phone 的值,然后执行查询,返回符合条件的单个 User 对象。 逐部分解释 query():这是在 IService 阅读全文
posted @ 2025-04-12 11:05
kuki'
阅读(84)
评论(0)
推荐(0)
摘要:
在 Java 中,Boolean 是一个包装类,它可以为 null,而基本类型 boolean 则不能。因此,在进行布尔值判断时,必须首先检查对象是否为 null,以避免在解包时抛出 NullPointerException。 在代码中: if (oneLevelLimit != null && o 阅读全文
posted @ 2025-04-12 00:00
kuki'
阅读(22)
评论(0)
推荐(0)

浙公网安备 33010602011771号