- 博客(11)
- 收藏
- 关注
原创 ConcurrentHashMap 超详细拆解(JDK 1.7 vs 1.8 全解析)
线程安全:通过 CAS + synchronized 保证多线程下的并发安全高并发性能:锁粒度极小,多线程操作不同桶完全不阻塞高效查询:链表 + 红黑树结构,解决哈希冲突导致的查询效率下降不允许 null 值:key 和 value 都不能为 null(和 HashMap 不同,避免多线程下的歧义)迭代弱一致性:迭代时不会抛出,允许迭代过程中数据修改。
2026-03-29 23:08:01
382
原创 Redis-缓存工具类的封装
缓存雪崩,还是缓存击穿,这些问题的解决方案业务代码逻辑都很复杂,所以我们也不需要每次都来重写这些逻辑,我们可以将其封装成工具,以便于我们可以随时调用。方法三:根据指定的key查询缓存,并且反序列化成指定类型,利用缓存空值的方式解决缓存穿透问题。方法三:根据指定的key查询缓存,并且反序列化成指定类型,利用缓存空值的方式解决缓存穿透问题。方法四:根据指定的key查询缓存,并且反序列化成指定类型,需要利用逻辑过期解决缓存击穿问题。缓存中的问题,无论是。
2026-01-07 15:09:53
305
原创 Redis缓存穿透,缓存雪崩,缓存击穿讲解以及解决方案
对热点key不设计物理过期的TTL,也就是热点key在缓存中永久有效,但需要给其设置一个逻辑过期时间,当请求发送后判断是否达到逻辑过期所设计的时间,如果过期了,则让其去更新数据库,再去更新缓存,在这期间可能会造成数据不一致的问题。是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远都不会生效,这些请求都会打到数据库,当这样的数据过于多时,会造成我们的数据库崩溃。也叫热点key问题,就是一个呗高并发访问的并且缓存重建业务较复杂的key突然失效了,无数的请求访问在瞬间给数据库带来巨大的冲击。
2026-01-06 22:49:53
493
原创 登录校验功能——JWT令牌(包括Filter过滤器和Interceptor拦截器)
JWT(JSON Web Token)是一种用于身份验证的轻量级令牌格式,由Header、Payload和Signature三部分组成。它替代传统Session认证,用户登录后获得JWT令牌,后续请求携带该令牌即可验证身份,无需频繁查询数据库。实现JWT需引入依赖,通过Jwts.builder()生成包含自定义信息、签名算法和有效期的令牌。验证时使用Filter或Interceptor拦截器,检查请求头中的JWT有效性,通过则放行,否则返回401状态码。JWT简化了身份验证流程,提高了系统安全性。
2026-01-02 22:12:04
854
原创 数据结构---栈
栈是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,叫做栈顶(top)。对栈的基本操作有进栈(push)和出栈(pop),前者相当于插入,后者则是删除最后插入的元素。每次向栈中加入元素相当于链表的头插法,栈顶元素即是头结点指向的元素。2.栈的链表的初始化。
2025-03-25 10:43:24
245
原创 数据结构---双向链表的实现
由于单向链表在遍历过程中是无法回头的,每一次重新找节点会大大增加我们的算法时间复杂度。其他方法基本和单链表的实现方式相同,不再一一列举了。1.双向链表结构体的定义和链表初始化。双向链表可以很好的解决这个问题。主函数中调用并初始化链表。
2025-03-20 11:50:37
182
原创 abc386c题题解
实现该过程运用了双指针,让两个指针一开始均指向对应字符串的首端,以此来判断要执行操作的次数,再进行比较,具体看代码。S 和 T 都是长度介于 1 和 500000 之间的字符串,由小写英文字母组成。-在 S 中的任意位置(可能是开头或结尾)插入任意一个字符。0 到 K 次(含),以使其与字符串 T 相同。-在 S 中选择一个字符并替换为另一个字符。故写出一个bool返回类型的函数,以此来在主。我们先写出一个函数来判断是否能由s转变为t。-选择以下三个操作之一并执行它。-从 S 中删除一个字符。
2024-12-30 00:06:03
265
原创 朋友关系题解(map的使用例题)
这道题很明显让我们运用map去将变量相关联起来,这道题可以很好的帮我们熟悉map这个知识点。题目中没有说明书一对好朋友只能出现一次。具体方法看代码及注释。frined用来判断这对朋友是否计算过了。sum 用来记录每个人有多少好朋友。
2024-12-05 20:58:09
397
原创 排队接水题解
经过读题我们可以发现,这就类似于你们老师说的你耽误一分钟就耽误全班40个人40分钟。所以我们让接水时间最少的排在前面,依次接水。这道题主要考验了结构体的知识及其排序问题,还是很简单的。
2024-12-03 08:05:45
466
1
原创 大一新生暑期自学c语言总结
我认为编译器是把我们所写的代码转化为二进制来理解,所以我们只有在编译器中才能写代码,常见的的编译器也有很多种,例如:VS编译器,Dev C++,VS code等等,我用的是VS code,比较适合初学者上手吧。c语言中数据有常量和变量,变量又包括整形变量(4个字节),实型变量(4个或8个字节),字符型变量(1个字节)。这个讲的只是一个大框架,希望有想共同进步的关注我,聊聊学习,我想以我的博客记录我所成长的道路!其中①~④优先级相同,⑤、⑥优先级相同,且①~④优先级高于⑤、⑥优先级。++:使变量的值加1。
2024-09-08 21:29:53
911
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅