自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 令牌桶算法和漏桶算法限流

令牌桶和漏桶算法是两种常用的流量控制方法。令牌桶以固定速率生成令牌,允许突发流量消费桶内令牌,适用于API限流等场景。漏桶则以固定速率处理请求,严格控制输出速率,适合网络带宽管理等场景。两者核心区别在于:令牌桶允许短期突发而漏桶强制平滑输出。实际应用中令牌桶更常用(如Guava的RateLimiter),因其在控制长期速率的同时能兼容业务突发需求。

2025-10-22 20:16:51 961

原创 一文读懂 WebSocket:从原理到核心价值,解决实时通信痛点

本文介绍了WebSocket协议的核心原理与实现,通过对比HTTP协议的不足,阐述了WebSocket在实时通信中的优势。文章详细解析了WebSocket的三步工作流程:握手阶段、数据传输阶段和连接维持机制。重点演示了一个基于WebSocket的仓库库存预警系统实现方案,包括连接管理、在线推送、离线存储和上线补发等功能。该项目通过WebSocket实现实时预警消息的分发,支持离线消息持久化和上线后自动补发,完整代码已开源。文末还提供了详细的演示步骤,展示了WebSocket在实际业务场景中的应用效果。

2025-10-22 20:16:26 1064

原创 设计模式【工厂模式和策略模式】

摘要:本文系统介绍了两种常见设计模式。工厂模式(创建型)分为简单工厂、工厂方法和抽象工厂三种形式,核心是将对象创建逻辑封装,解耦客户端与具体产品。策略模式(行为型)通过将算法封装为独立策略对象,实现运行时动态切换行为。二者关键区别在于:工厂模式关注"如何创建对象"(如电脑产品族生成),策略模式解决"如何执行行为"(如支付方式切换)。文章通过代码示例对比了两种模式的结构特点、适用场景及优缺点,帮助开发者准确理解和使用这两种设计模式。(149字)

2025-10-15 19:20:34 849

原创 深入浅出 Java 中的 CompletableFuture:让异步编程变得简单

本文介绍了Java 8引入的异步编程工具CompletableFuture,它能简化复杂的异步操作处理。文章首先对比了传统Future的局限性,然后详细讲解了CompletableFuture的核心功能:支持链式操作、组合多个任务和优雅处理异常。通过实际代码示例,展示了如何创建异步任务、实现任务流水线、处理依赖/独立任务组以及异常处理。文章还讨论了线程池的选择建议,并对比了CompletableFuture与传统Future的优势,特别是在非阻塞处理、异常处理和任务组合方面的强大能力。

2025-10-15 19:20:16 1024

原创 黑马点评秒杀优化和场景补充

本文介绍了秒杀系统的优化方案,主要包含两个部分:1. 使用RabbitMQ异步处理订单创建,替换原有同步数据库操作,并采用令牌桶算法进行限流;2. 完善订单超时处理和主动取消功能,通过RabbitMQ延迟队列实现30分钟未支付自动恢复库存,同时支持用户主动取消订单。系统采用Redis+Lua脚本保证库存操作的原子性,结合数据库事务确保数据一致性,使用Redisson分布式锁防止并发问题。优化后的系统具有更好的性能和可靠性,能够处理高并发场景下的秒杀业务。

2025-10-04 20:32:29 1128 1

原创 JVM垃圾回收算法和分代收集算法的区别

JVM垃圾回收分为基础算法和分代收集策略。基础算法包括标记-清除(产生碎片)、复制(高效但内存利用率低)和标记-整理(无碎片但成本高)。分代收集根据对象生命周期将堆分为新生代(使用复制算法)和老年代(使用标记-清除/整理算法),新生代又细分为Eden和Survivor区。分代收集是基础算法的优化组合,通过MinorGC、MixedGC和FullGC实现不同级别的回收。现代JVM垃圾收集器都基于分代思想,综合运用基础算法以提高回收效率。

2025-08-01 17:00:43 680

原创 IB智慧公交系统的设计与实现

本文介绍了智慧公交系统(IB)的开发过程,该系统旨在提升公交公司管理效率。系统采用Vue3+SpringBoot前后端分离架构,实现车辆、员工、线路、站点和排班管理等功能。通过需求分析、系统设计、数据库设计(MySQL)和功能实现等环节,构建了面向管理员、调度员和驾驶员的三级权限体系。文章详细展示了技术选型、模块设计、界面实现及核心功能代码,并总结了开发经验,探讨了引入Redis优化系统性能的未来方向。该项目完整呈现了一个智慧公交管理平台从设计到实现的开发全流程。

2025-07-08 18:20:57 1065

原创 黑马点评【缓存】

本文系统介绍了Redis缓存应用中的核心问题与解决方案。首先阐述了缓存的使用价值:提升性能、缓解数据库压力,并对比了多级缓存架构。重点分析了缓存与数据库一致性问题,提出了双写方案(CacheAsidePattern)及操作顺序的最佳实践。针对三大缓存异常场景:穿透(布隆过滤器/空值缓存)、雪崩(过期时间分散/多级缓存)、击穿(互斥锁/逻辑过期),分别给出具体解决方案。最后展示了如何封装Redis工具类,整合穿透防护、击穿处理等核心功能。文章结合实际代码示例,为企业级缓存应用提供了系统化的实践指导。

2025-06-12 16:35:27 1329 2

原创 黑马点评【基于redis实现共享session登录】

本文介绍了基于Session和Redis的登录流程实现方案。首先描述了使用Session的传统方式:通过手机验证码登录,将用户信息存入Session并利用拦截器校验登录状态。随后指出分布式系统中Session共享问题的存在,分析了Session复制、Cookie存储和Redis集中存储三种解决方案,推荐采用Redis作为共享存储。接着详细讲解了基于Redis的实现过程,包括选择String或Hash结构存储用户数据的优劣比较,以及验证码发送和登录注册的具体代码实现。最后针对登录状态刷新问题,提出了优化方案:

2025-06-07 21:44:52 1496

原创 中州养老项目总结Day1-Day3

摘要:本文详细介绍了中州养老院管理系统的设计与实现。系统采用前后端分离架构,包含管理后台和家属端小程序,涵盖护理项目管理、预约管理等功能模块。重点阐述了微信小程序登录流程、预约状态管理定时任务的实现,通过XXL-JOB分布式任务调度框架解决集群环境下的任务重复执行问题。系统采用SpringBoot+MyBatis技术栈,具有良好的扩展性和可维护性,为养老院提供了一体化的信息化管理解决方案。

2025-06-04 15:30:18 1490 2

原创 消息队列——RabbitMQ(基础)

本文主要介绍了消息队列的类型、选型建议以及SpringAMQP的使用。首先,文章对比了主流消息队列(如RabbitMQ、Kafka、RocketMQ等)的关键特性、适用场景及优劣势,并提供了选型建议,帮助用户根据业务需求选择合适的消息队列。接着,文章详细讲解了消息队列中的交换机类型(Fanout、Direct、Topic)及其工作原理,帮助理解消息的路由机制。最后,文章介绍了SpringAMQP的功能,包括自动声明队列和交换机、基于注解的监听器模式以及RabbitTemplate工具的使用,并提供了相关代码

2025-05-14 00:29:24 824

原创 创建阿里云OSS对象存储

​​​​​​进行阿里云oss对象存储的创建

2025-05-05 21:43:29 578

原创 Redis实战篇——黑马点评【异步秒杀优化】

1.秒杀业务的优化思路是什么?①先利用Redis完成库存余量、一人一单判断,完成抢单业务② 再将下单业务放入阻塞队列,利用独立线程异步下单2.基于阻塞队列的异步秒杀存在哪些问题?①内存限制问题(JDK的阻塞队列使用的是JVM的内存,高并发订单量可能导致内存溢出,队列大小是由我们自己指定的,可能会超出阻塞队列的上限)②数据安全问题(情况①:JVM内存是没有持久化机制的,服务重启或意外宕机时,阻塞队列中的所有任务都会丢失。

2025-05-03 16:07:16 1602

原创 B3693 数列前缀和 4

洛谷题目,二维前缀和,Java语言实现

2025-04-09 22:57:12 721

原创 P1328 [NOIP 2014 提高组] 生活大爆炸版石头剪刀布

洛谷算法题

2025-03-17 12:38:46 1293

原创 P1563 [NOIP 2016 提高组] 玩具谜题

NOIP2016 提高组 D1T1。

2025-03-09 18:30:53 933

原创 苍穹外卖技术总结——ThreadLocal

ThreadLocal为每个线程提供独立的变量副本,实现线程安全且高效的数据隔离,常用于会话管理、数据库连接等场景。其内存泄漏隐患源于ThreadLocalMap中弱引用Key与强引用Value的冲突:若未及时清理,Value会随线程长期驻留内存。解决方案是显式调用remove() + 避免静态滥用,尤其在线程池中需严格清理。理解原理,合理使用,方能发挥其优势。

2025-03-04 12:35:10 1767 1

原创 苍穹外卖技术总结——Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(<https://swagger.io/>)。它的主要作用是:1. 使得前后端分离开发更加方便,有利于团队协作2. 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担3. 功能测试 Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2025-02-24 14:11:14 1499 1

原创 苍穹外卖技术总结——AOP:面向切面编程

本文深入探讨了如何利用AOP(面向切面编程)解决代码重复、臃肿等问题,提升代码的可维护性和可读性。通过实际案例和代码示例,详细介绍了AOP的核心概念(如连接点、通知、切入点、切面、目标对象等)、通知类型(前置、后置、环绕等)、执行顺序规则,以及切入点表达式的灵活使用。文章还结合电商、金融等领域的实战场景,展示了AOP在日志记录、事务管理、权限校验、性能监控等方面的应用,帮助开发者更好地理解和应用AOP技术。

2025-02-21 11:10:35 1249 1

原创 员工管理系统:基于Java Swing,哈希表和IO流实现

本文介绍了一个基于 Java Swing 和自定义哈希表实现的员工管理系统,涵盖登录、员工管理和部门管理等功能模块。系统通过 CSV 文件和自定义哈希表(MyHashMap)实现数据存储和高效访问,支持用户注册、登录验证、员工和部门信息的增删改查、排序和查询等功能。文章详细描述了系统的需求分析、设计、实现、调试分析、用户手册及测试结果,并提供了项目源码和文件资源,适合用于学习数据结构课程的相关实践项目。

2025-02-11 14:19:56 1753

员工管理系统:基于Java的GUI编程,哈希表和数据流实现

这个为项目源码,直接导入比源码方便些

2025-02-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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