自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中30个代码优化技巧,建议收藏!

不知道你在实际的项目开发中,有没有使用过固定值?throw new BusinessException("该用户不存在");其中1000L和该用户不存在是固定值,每次都是一样的。既然是固定值,我们为什么不把它们定义成静态常量呢?这样语义上更直观,方便统一管理和维护,更方便代码复用。...private static final String NOT_FOUND_MESSAGE = "该用户不存在";...使用关键字修饰静态常量,static表示静态的意思,即类变量,而final表示。

2025-05-22 13:21:33 564

原创 用好缓存的10条军规

几年前的一天晚上,我接到电话时,我正梦见自己成了缓存之神。缓存命中率:0%数据库QPS:10万+线程阻塞数:2000+直连数据库,未加缓存。不会用缓存的程序员,就像不会刹车的赛车手。今天这篇文章跟大家一起聊聊使用缓存的10条军规,希望对你会有所帮助。问题类型推荐方案工具推荐缓存穿透空值缓存+布隆过滤器缓存雪崩随机TTL+熔断降级缓存击穿互斥锁+热点预加载数据一致性延迟双删+最终一致性最后忠告:缓存是把双刃剑,用得好是性能利器,用不好就是定时炸弹。

2025-05-20 17:08:43 766

原创 工作中最常用的6种定时任务

上图中,我们启动一个线程,该线程无限循环执行,每隔20毫秒执行业务代码。这种方式非常简单易用,在很多中间件中得到广泛应用。本文整理了实现定时任务的六种策略,我们需要根据实际场景选择合适的策略。同时,我们也需要考虑:是否需要任务应用集群部署;集群部署下假如出现并发执行,业务是否会出现异常;如何规避并发执行导致的业务异常。

2025-05-20 11:04:58 898

原创 架构师必知的 7 种MQ消息

消息队列技术选型,要考虑的因素很多,本文主要从业务场景来分析需要考虑的因素,同时技术上也需要考虑运维复杂度、业务规模、社区活跃度、学习成本等因素。希望本文对你使用消息队列有所帮助。

2025-05-20 08:56:14 825

原创 Excel高性能导出方案!

在我们的日常工作中,经常会有Excel数据导出的需求。但可能会遇到性能和内存的问题。今天这篇文章跟大家一起聊聊Excel高性能导出的方案,希望对你会有所帮助。高性能 = 流式处理引擎 + 分页查询优化 + 资源管控具体实施时可参考以下决策树:切忌过早优化:在需求明确前不要盲目选择复杂方案监控先行:务必埋点记录导出耗时、内存波动等关键指标兜底策略:始终提供CSV导出选项作为保底方案希望本文能帮助大家在数据导出的战场上,真正实现"百万数据,弹指之间"!

2025-05-19 09:28:49 798

原创 MySQL同步ES的6种方案

对于文章上面给出的这6种技术方案,我们在实际工作中,该如何做选型呢?下面用一张表格做对比:方案实时性侵入性复杂度适用阶段同步双写秒级高低小型单体项目MQ异步秒级中中中型分布式系统Logstash分钟级无低离线分析Canal毫秒级无高高并发生产环境DataX小时级无中历史数据迁移Flink毫秒级低极高实时数仓建议若团队无运维中间件能力 → 选择Logstash或同步双写需秒级延迟且允许改造 → MQ异步 + 本地事务表。

2025-05-19 09:27:01 821

转载 Redisson 限流器源码分析

总结:这段代码本身并没有提供设置限流器自动过期的功能。在 Redisson 中,限流器自动过期的功能通常不是默认包含在限流器的设置中。:这里使用了 Redis 的 EVAL 命令,这个命令允许执行 Lua 脚本,而不会受到 Redis 的同步阻塞操作。:表示执行 Lua 脚本后期望的返回值类型为 Boolean。如果代码写的有问题,欢迎大家评论交流,进行指点!限流器自动过期(是指的是限流这个功能),可以使用。:将限流器的名称作为参数传递给 Lua 脚本。:这是获取限流器的名称或标识。源码lua 脚本解释。

2025-05-19 09:24:11 18

转载 redis + AOP + 自定义注解实现接口限流

这里定义限流枚举类:LimitType/*** 默认策略全局限流*/DEFAULT,/*** 根据请求者IP进行限流*/IP,/*** 实例限流(集群多后端实例)*/CLUSTER定义注解,在后续的代码中使用进行限流/*** 限流注解*//*** 限流key,支持使用Spring el表达式来动态获取方法上的参数值* 格式类似于 #code.id #{#code}*//*** 限流时间,单位秒*//*** 限流次数*//*** 限流类型*/

2025-05-19 09:22:21 26

原创 深入解析 Guava Cache

通过解析 Guava Cache 的实现原理,我们发现 Guava LocalCache 与 ConcurrentHashMap 有以下不同:ConcurrentHashMap ”分段控制并发“是隐式的(实现中没有Segment对象),而 LocalCache 是显式的。在 JDK 1.8 之后,ConcurrentHashMap 采用实现:当 put 的元素在哈希桶数组中不存在时,直接 CAS 进行写操作;在发生哈希冲突的情况下使用 synchronized 锁定头节点。

2025-05-19 09:18:39 1113

原创 数据脱敏的6种方案,真香!

/ 反例:直接将生产数据同步到测试环境// 包含手机号、身份证等敏感字段直接将生产的数据,比如:手机号、身份证等敏感字段,同步到了测试环境。结果1天后,受到了公司领导的批评。这个案例揭示了数据脱敏的极端重要性。这篇文章给大家分享6种常用的数据脱敏方案,希望对你会有所帮助。方案安全性性能可逆性适用场景字符串替换★★★★★★不可逆日志/展示加密算法★★★★★★可逆支付信息存储数据遮蔽★★★★★★部分可逆数据库查询数据替换★★★★★★可逆测试数据生成。

2025-05-19 09:12:01 734

原创 项目实战中的异步设计

异步设计在处理并发和提高系统性能方面具有优势,但也带来了一些可能的问题。以上提供的场景和方案仅供参考。使用过程中应当根据业务特征合理选择具体方案。

2025-05-19 08:54:07 1002

原创 打印优质日志的 10 条军规

用户登录失败订单创建出错 nullERROR 非法参数写不好日志的程序员,就像不会写病历的医生。这篇文章跟大家一起聊聊打印优质日志的10条军规,希望对你会有所帮助。研发人员的三大境界青铜")钻石:标准化日志 + ELK监控王者日志驱动代码优化异常预测系统根因分析AI模型最后的灵魂拷问下次线上故障时,你的日志能让新人5分钟定位问题吗?

2025-05-15 17:34:39 587

原创 Spring OAuth2 认证流程

在微服务架构中集成后,整个系统会形成三个核心角色:认证服务器提供认证和授权服务,颁发令牌;资源服务器保护API资源,验证令牌有效性;客户端则是请求访问受保护资源的应用程序。认证服务器和资源服务器的角色相对明确,而客户端的选择和设计则较为复杂,需要根据实际业务场景进行选择。本文将重点探讨在微服务架构下,如何选择和设计适合的客户端实现方式。

2025-05-14 09:28:03 1038

原创 参数校验的 6 大神功!

有时候,Hibernate Validator框架或者其他校验框架定义的校验不满足需求,我们需要自定义校验规则。则可以自定义注解,实现ConstraintValidator接口,来实现具体的自定义的校验逻辑。自定义注解@Contact在字段上使用。String message() default "联系方式格式错误";Class<?Class<?// 校验逻辑实现(不要相信前端的下拉框!@Override六边形战士培养计划可通过动态修改错误信息。

2025-05-13 17:31:04 892

原创 Seata 从原理到实战!

在之前的文章中,我们简单介绍了一下 Spring Cloud Alibaba 的技术体系中的NacosDubbo和Sentinel组件应用,通过这几款组件基本可以构建一个简易版的微服务框架系统。我们知道,在微服务系统中一些模块通常会以一个独立的服务来开发和部署,比如用户服务、订单服务、库存服务、账单服务等等。随着服务拆分的越来越细,微服务的数量也会随之增长,系统的复杂度也会变得很高。例如,当用户选择某个商品下一笔单的时候,通常会先调用库存服务的库存扣减逻辑,如果库存充足,接着再调用订单服务的创建订单逻辑。

2025-05-13 09:07:24 718

原创 SpringBoot中的拦截器江湖

很多小伙伴在工作中遇到拦截需求就无脑写HandlerInterceptor,结果被复杂场景搞得鼻青脸肿。作为一名有多年开发经验的程序员,今天领大家到SpringBoot的山头认认6把交椅:这篇文章以梁山为背景的介绍SpringBoot中的拦截器,可能更通俗易懂。

2025-05-09 09:24:58 796

原创 如何实现排行榜

数据规模:数据量大小直接决定了我们选择哪种方案实时性要求:是否需要秒级更新,还是分钟级甚至小时级都可以接受并发量:系统的预期访问量是多少开发资源:团队是否有足够的技术能力维护复杂方案业务需求:排行榜的计算逻辑是否复杂对于大多数中小型应用,方案二(缓存+定时任务)或方案三(Redis有序集合)已经足够。如果业务增长迅速,可以逐步演进到方案四(分片+Redis集群)。而对于社交平台等需要实时更新的场景,则需要考虑方案五(预计算+分层缓存)或方案六(实时计算+流处理),但要做好技术储备和架构设计。

2025-05-08 18:23:10 735

原创 Cursor pro免费用了

今天圈子炸锅了,Cursor pro免费开放给学生使用一年,全网都是教用edu邮箱注册cursor账号的,某鱼的单量也是突增,今天逛帖子发现一个神乎其技,不用学生账号,不用花一分钱,我亲测可行,这里分享给大家。

2025-05-08 17:24:15 412

原创 MQ的数据一致性,如何保证?

电商系统出了个灵异事件:用户支付成功了,但订单状态死活不改成“已发货”。折腾了半天才定位到问题:订单服务的MQ消息,像人间蒸发一样消失了。这个Bug让我明白:(MQ)消息队列的数据一致性设计,绝对能排进分布式系统三大噩梦之一!今天这篇文章跟大家一起聊聊,MQ如何保证数据一致性?希望对你会有所帮助。(MQ)消息队列像金融系统的SWIFT结算网络,看似简单实则处处杀机。真正的高手不仅要会调参,更要设计出能兼容可靠性与性能的架构。记住,分布式系统的数据一致性不是银弹,而是通过层层防御达成的动态平衡。

2025-05-08 17:06:07 771

原创 如何进行限流

限流

2025-05-08 17:02:24 861

原创 Java Stream 中的 7 个常见错误

Java Stream 中的 7 个常见错误

2025-05-08 17:00:06 196

原创 理解AQS

AQS( AbstractQueuedSynchronizer )是一个用来构建锁和同步器(所谓同步,是指线程之间的通信、协作)的框架,Lock 包中的各种锁(如常见的 ReentrantLock, ReadWriteLock), concurrent 包中的各种同步器(如 CountDownLatch, Semaphore, CyclicBarrier)都是基于 AQS 来构建,所以理解 AQS 的实现原理至关重要,AQS 也是面试中区分侯选人的常见考点,我们务必要掌握。

2025-05-08 16:53:18 518

原创 if-else优化重构方案

又臭又长的if...else要如何重构。

2025-05-08 16:49:11 850

原创 9个工具库让我的Java开发效率提升了80%

9个工具库

2025-05-08 16:37:55 925

原创 通义灵码编程智能体,上线!

近期,Qwen3 正式发布并全部开源 8 款「混合推理模型」。旗舰模型 Qwen3-235B-A22B 在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。,具备自主决策、环境感知、工具使用等能力,可以根据开发者的诉求,使用工程检索、文件编辑、终端等工具,端到端地完成编码任务。

2025-05-08 10:54:22 846

转载 服务端向客户端推送数据的实现方案

在日常的开发中,我们经常能碰见服务端需要主动推送给客户端数据的业务场景,比如数据大屏的实时数据,比如消息中心的未读消息,比如聊天功能等等。本文主要介绍SSE的使用场景和如何使用SSE。在很久很久以前,前端一般使用轮询来进行服务端向客户端进行消息的伪推送,为什么说轮询是伪推送?因为轮询本质上还是通过客户端向服务端发起一个单项传输的请求,服务端对这个请求做出响应而已。通过不断的请求来实现服务端向客户端推送数据的错觉。并不是服务端主动向客户端推送数据。

2025-04-21 17:36:31 33

空空如也

空空如也

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

TA关注的人

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