自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 单链表的实现

头插法顾名思义就是在头节点后面插入数据,接下来看头插法的代码。

2025-03-18 21:22:40 226

原创 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关注的人

提示
确定要删除当前文章?
取消 删除