提升
文章平均质量分 78
靈臺清明
我會一直努力,一直加油的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
学习日报 20251007|深度解析:基于 Guava LoadingCache 的优惠券模板缓存设计与实现
本文详细解析了基于Guava LoadingCache的优惠券模板缓存设计方案。通过定义线程安全的缓存容器,配置初始容量、最大限制、过期策略等参数,实现了高性能缓存机制。关键设计包括:1)采用Optional包装对象避免空指针;2)支持单key和批量加载;3)通过弱引用防止内存泄漏;4)启用统计功能监控命中率等指标。该方案平衡了性能、可靠性和内存安全,适合高并发电商场景,通过参数调优可进一步提升缓存效率。原创 2025-10-07 20:32:20 · 1160 阅读 · 0 评论 -
学习日报 20250930|优惠券事务处理模块
本文介绍了一个优惠券事务处理模块,包含自定义异常类、核心实体类和服务实现。模块通过@Transactional注解保证订单支付后优惠券核销的原子性操作,包含订单状态校验、优惠券合法性验证(用户匹配/状态/有效期)、金额计算等功能。自定义CheckUserCouponException处理校验失败场景,提供错误码便于前端展示。该模块结构清晰,注释完整,可直接集成到电商系统订单流程中,解决优惠券核销与订单状态同步的一致性问题,具有较好的扩展性和事务保障。原创 2025-09-30 23:16:11 · 198 阅读 · 0 评论 -
学习日报 20250930|优惠券叠加必须做 “双向校验”
电商优惠券叠加规则需双向校验以确保业务安全。仅检查"A允许与B叠加"而忽略"B是否允许A"的反向校验,会导致规则矛盾、成本失控等问题。双向校验要求两张券必须达成叠加共识才能放行,避免单向授权引发的逻辑漏洞。实际业务中,缺少双向校验可能造成前端展示与支付校验脱节、优惠券违规叠加导致成本超支、以及单模板配置错误影响全链路等问题。代码实现需包含正反双向检查并记录详细日志,形成规则闭环。这一机制是保障优惠券体系安全运行的基础锁,确保平台在灵活满足用户需求的同时有效控制成本风险原创 2025-09-30 22:54:51 · 798 阅读 · 0 评论 -
学习日报 20250930|优惠券核销模块
本文介绍了一个优惠券核销系统的模块化设计方案。系统采用工厂模式+策略模式,通过CouponTypeEnum枚举定义优惠券类型,UserCoupon实体存储优惠券信息,ICouponWriteOffService接口规范核销行为,并由ManJianCouponWriteOffServiceImpl等实现类处理具体核销逻辑。CouponWriteOffFactory工厂类统一管理核销服务,CouponWriteOffService提供统一核销入口。这种设计提高了代码扩展性(符合开闭原则)、可读性(职责单一)和可原创 2025-09-30 22:36:16 · 187 阅读 · 0 评论 -
学习日报 20250929|缓存雪崩以及缓存穿透解决方案
本文介绍了Redis缓存问题的两种解决方案:1)缓存雪崩通过随机过期时间工具类避免集中失效,采用基础时间+随机偏移(5-30分钟);2)缓存穿透采用参数校验拦截无效请求,对不存在数据设置短期"无效标记"(如"NOT_EXIST"或-1),避免重复查询DB。代码示例展示了优惠券和用户场景的实现,强调工具类复用和业务区分,有效提升系统性能和稳定性。原创 2025-09-29 22:51:48 · 350 阅读 · 0 评论 -
学习日报 20250929|缓存击穿及其解决方案
缓存击穿是热点key失效时大量请求穿透到数据库的问题。解决方案包括:1)分布式锁控制单线程查询DB;2)热点数据永不过期+异步更新;3)熔断降级返回默认值。分布式锁适合高并发场景但性能有损耗,永不过期方案适合实时性要求低的数据,熔断降级则用于非核心流程。实践中可组合使用这些方案,如分布式锁+随机过期时间,兼顾防击穿和防雪崩。原创 2025-09-29 22:50:25 · 355 阅读 · 0 评论 -
学习日报 20250928|Java日志规范:从基础规约到高级实践(含SkyWalking整合)
本文系统阐述了日志规范的核心要点与实践方案。在基础层面,强调统一使用SLF4J、合理分级日志级别、避免字符串拼接等关键规约,确保日志可用性与安全性。高级实践中,详细介绍了Trace级别日志的合理使用、多线程场景下的MDC上下文传递方案,以及自动化线程池封装技巧。最后,通过整合SkyWalking框架,实现日志与全链路追踪的无缝对接,自动关联TraceID,显著提升问题排查效率。整套方案兼顾规范性与实用性,既避免了日志泛滥风险,又能有效支撑系统监控与故障定位需求。原创 2025-09-28 23:42:34 · 731 阅读 · 0 评论 -
学习日报 20250928|React 中实现 “实时检测”:useEffect 依赖项触发机制详解
用useEffect实现 “实时检测”,本质是遵循 “依赖项变化 → 方法重复执行定义目标状态:明确需要检测的值(如输入框内容inputValue、表单字段usernamepassword编写检测逻辑:在useEffect内部封装检测方法(同步校验、异步请求均可);配置依赖项:将目标状态放入依赖项数组,让值变化时自动触发检测。掌握这一范式后,无论是简单的输入校验,还是复杂的多值联合检测、异步接口校验,都能高效落地,同时通过防抖、清理副作用、异常处理等优化,保障检测逻辑的性能与稳定性。原创 2025-09-28 23:27:57 · 882 阅读 · 0 评论 -
学习日报 20250928|Java 异常处理:从理论到工作实践的全面指南
【摘要】本文系统梳理Java异常处理的核心方法论,重点解析Checked与Unchecked异常的本质区别及处理策略。强调绝不"吞异常"的原则,提出Checked异常必须捕获或抛出,Unchecked异常优先通过逻辑校验规避。文章结合实践场景,给出资源释放、日志记录、异常传递等进阶技巧,并推荐通过自定义异常和错误码体系提升业务可维护性。最后提炼出异常处理的"黄金法则",指导开发者将异常转化为问题排查的助手,而非系统隐患。原创 2025-09-28 23:17:40 · 581 阅读 · 0 评论 -
学习日报 20250923|MQ (Kafka)面试深度复盘
本文深入解析分布式系统中消息队列(MQ)的技术要点与面试重点。从实际应用场景剖析MQ的四大核心价值:异步通信、流量削峰、系统解耦和数据存储,并结合电商、秒杀等典型案例说明其业务价值。全面对比主流MQ产品特性,包括Kafka、RabbitMQ等开源方案和Solace等商业产品,提供选型方法论。重点分析消息积压、丢失、重复等生产问题的解决方案,强调消费端幂等性设计和有序性保障策略。最后以Kafka为原型,拆解MQ的架构设计要点,包括分区副本机制、高可用保障等核心设计思想,为技术选型和系统设计提供参考。原创 2025-09-23 23:30:25 · 837 阅读 · 0 评论 -
学习日报 20250923|LoadingCache
摘要:Google Guava的LoadingCache接口提供自动缓存加载功能,适用于高并发读多写少场景。它通过CacheBuilder构建,当缓存未命中时自动调用加载函数,显著提升热点数据访问性能(响应时间可降低80%以上),减少数据库压力(请求量降低50-80%)。典型应用包括电商商品详情、新闻资讯等静态或低频更新数据,通过内存缓存优化系统性能,适合Java开发者在各类互联网和企业应用中实施。使用需引入Guava依赖并配置缓存加载策略。原创 2025-09-22 21:29:41 · 993 阅读 · 0 评论 -
学习日报 20250921|NIO
NIO是Java提供的新I/O API,相比传统BIO具有非阻塞、基于缓冲区和多路复用的特点。核心组件包括Channel、Buffer和Selector,通过示例展示了NIO服务端和客户端的实现方式。服务端使用Selector监听多个通道事件,实现非阻塞通信;客户端通过Channel发送和接收数据。NIO适合高并发场景,是Netty等框架的基础。其优势在于单线程管理多连接,避免了传统BIO的线程资源浪费问题。原创 2025-09-21 23:19:43 · 408 阅读 · 0 评论 -
学习日报|Spring 全局异常与自定义异常拦截器执行顺序问题及解决
本文分析了Spring Web应用中全局异常拦截器与自定义异常拦截器的执行顺序问题。默认情况下,Spring基于类名ASCII码排序,导致全局拦截器优先执行,与期望的"地方法优先"逻辑不符。文章提出通过改造排序逻辑,优先执行带有包范围限制的拦截器(@ControllerAdvice(basePackages=...)),使精准拦截器优先处理,全局拦截器作为兜底,从而构建更合理的异常处理机制。这种"精准优先+全局兜底"的方案既保证了系统健壮性,又提供了处理灵活性。原创 2025-09-17 22:50:42 · 371 阅读 · 0 评论 -
学习日报|梳理三类典型缓存问题:缓存穿透、缓存击穿、缓存雪崩
摘要:本文系统分析了缓存穿透、击穿和雪崩三种典型问题。穿透指请求不存在的数据导致直击数据库,可通过布隆过滤器、空值缓存解决;击穿是热点key失效引发的并发回源,采用互斥锁、逻辑过期等方式防护;雪崩源于大量key同时失效,需TTL随机抖动和多级缓存应对。文章提供了问题特征、治理方案、代码示例和监控指标,并给出不同场景的选型建议,形成了一套完整的缓存问题防护体系。原创 2025-09-15 23:06:08 · 881 阅读 · 0 评论 -
线程池核心参数 — 5W1H1S 解析
线程池核心参数5W1H1S解析摘要(150字) 线程池核心参数包括corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲线程存活时间)、workQueue(任务队列)、threadFactory(线程工厂)和handler(拒绝策略)。其作用在于限制资源、提升性能、应对高峰和容错兜底。参数在任务提交、队列满载或线程空闲时动态生效,适用于高并发服务端场景。配置需结合业务类型:CPU密集型任务推荐核心线程数为CPU数+1,IO密集型为2倍CPU数;原创 2025-09-13 16:39:56 · 529 阅读 · 0 评论
分享