自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 问答 (1)
  • 收藏
  • 关注

原创 一条SQL把数据库服务器干爆了

在5月16日,一条SQL语句导致数据库服务器崩溃。该SQL语句涉及A表和B表的左连接操作,问题根源在于A表中的b_id字段类型错误地被设置为varchar而非bigint。虽然索引并未失效,但由于类型转换,数据库选择了低效的Nested Loop算法,导致CPU飙高。通过分析执行计划,发现数据库在估算行数时出错,错误地选择了Nested Loop而非更高效的Hash Join。最终解决方案包括修正字段类型、更新统计信息,并建议禁用Nested Loop或使用hint语法指定执行计划。这一事件提醒我们在SQL

2025-05-19 20:56:32 927

原创 【SQL 如何解锁递归】

SQL中的递归查询是一种处理树形结构数据的有效方法。通过使用RECURSIVE关键字和公共表表达式(CTE),可以查询出某个节点下的所有子节点或指定层级的子节点。递归查询的基本步骤包括定义初始查询、递归查询和终止条件。例如,可以通过递归查询找出某个领导下的所有员工或指定层级的员工。此外,还可以通过维护冗余路径字段来避免使用递归查询。递归查询在处理大数据量时可能存在性能问题,因此需要根据具体情况选择合适的方案。本文通过示例代码详细介绍了递归查询的使用方法,并提供了替代方案的建议。

2025-05-14 22:40:51 507 2

原创 【类拷贝文件的运用】

在处理大文件拆分时,传统的Java代码虽然功能上可行,但效率较低,主要问题包括频繁的堆分配、数据在用户空间和内核空间之间的多次复制,以及高CPU利用率。为了提高效率,建议使用FileChannel的transferTo方法,该方法支持零拷贝技术,直接在磁盘间传输数据,减少不必要的内存操作和上下文切换。此外,为了确保行的完整性,可以在每个块末尾查找最后一个完整行的结束位置,从而避免破坏行结构。这种方法显著提升了文件拆分的性能,减少了资源消耗。

2025-05-12 22:09:00 565

原创 开发者福音MCP

MCP并不是Trae中的独有的插件,‌MCP(Model Context Protocol)是由公司于2024年11月推出的开源协议‌,旨在标准化大型语言模型(LLM)与外部数据源、工具之间的交互方式,解决AI模型访问外部资源时的碎片化问题。trae 中的智能体作为MCP客户端可以选择向MCP Server发起请求,以使用它们提供的工具。你可以自行添加MCP Server,并添加到自定义的智能体中来使用.

2025-04-29 14:58:39 983

原创 缓存都用redis啊,这样数据不会丢失

Redis 无法完全避免数据丢失,但其持久化机制和高可用架构可显著降低丢失风险。数据丢失的极限仅用 RDB:最多丢失两次快照间隔期间的数据。仅用 AOF(everysec):最多丢失 1 秒内的数据。同时使用 RDB + AOF + 主从复制:数据丢失风险极低,但仍无法完全杜绝(如主从同时故障且无备份)。适用建议若需强一致性(如金融交易),应选择支持事务和持久化的数据库(如 PostgreSQL),Redis 仅作为缓存辅助。若用于缓存或高性能场景。

2025-04-23 21:09:18 768

原创 MQ的事务消息你知道么

本篇文章,介绍了什么是事务消息,以及事务消息的运用场景和使用案例。如果觉得有用欢迎一键三连👍👍👍。

2025-04-15 10:02:24 488

原创 作为一名java技术博主如何突围

初期可先测试不同内容形式,找到最适合自己的风格,再逐步优化。同时,利用AI工具提升效率,减少重复劳动,把更多精力放在核心内容创作上。如果需要更具体的执行方案(如如何制作代码演示视频),可以进一步探讨!技术类账号在抖音上仍有较大增长空间,关键在于。

2025-04-11 15:52:17 405

原创 同样的SQL同样的数据,性能差100倍

本篇文章 通过Explain 分析SQL 的执行计划,定位到了SQL 执行缓慢的原因。然后通过 覆盖 count 自动生成的SQL,从来减少连表查询。最后将SQL的查询时间 从 10s 优化到了10ms,提升了1000倍🚀我想不通的是,一个小的版本,居然执行计划相差这么大. 同时 数据量也不大,估计CPU 和 IO 的国产环境效率很低👎推荐阅读:【hash join推荐阅读:【类型转换之谜。

2025-04-11 14:42:36 343

原创 如何预估一个系统的QPS

当然,以上预估我们有很多假设,比如假设日活用户数是月活用户数的30%,假设每个用户每天产生2次互动,假设峰值QPS是日常的3倍,假设峰值时长持续2小时。但是,一般来说,一个业务的峰值流量会是平时的数倍,在不考虑热点事件的情况下,假设峰值流量是日均流量的3倍,并且每天的峰值流量会维持在2小时左右。通常日活用户数是月活用户数的20%-30%左右,按照30%来算的话,那么日活用户数为2亿。不同的业务类型的QPS是不太一样的,比如B类业务和C类业务,支付业务和购物车业务,这些都是不太一样的。

2025-04-10 14:45:44 896

原创 SQL 标准的 “操作数类型提升“

当操作数类型不同时,通过固定的优先级规则(如数值 > 时间 > 字符串)进行隐式转换,确保所有数据库实现的行为一致。索引(如B-tree)按列的原生类型组织。若强制转换参数而非列值,存储引擎仍需按列类型重新转换参数,反而增加开销。SQL-92 及后续标准明确定义了类型优先级规则,各数据库(如MySQL、Oracle)需遵循以保证跨平台兼容性。开发者应通过显式类型匹配或函数索引(如MySQL 8.0的表达式索引)优化此类场景。高优先级类型(如数值)通常具有更高效的比较和计算机制。

2025-04-10 09:06:12 467

原创 TCC中,Confirm或者Cancel失败了怎么办?

在TCC模式中,如果Confirm阶段失败,这通常意味着在尝试提交事务的过程中遇到了问题。处理这种情况需要根据特定的失败场景和系统设计来确定最合适的策略。这个方案用的是最多的,主要是因为在Try的过程中已经锁定了资源,那么在Confirm的时候,大概率是可以成功,而如果Confirm失败就执行Cancel,就会导致可能只是因为网络原因导致的时候就使得整个事务都Cancel了,而且这时候如果Cancel再失败怎么办呢?整个方案就会变得更加复杂了。执行Cancel操作。

2025-04-01 15:52:32 377

原创 实现一个分布式锁需要考虑哪些问题

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。

2025-04-01 15:42:01 503

原创 run/start、wait/sleep、notify/notifyAll、join 都有什么含义

start方法启动线程。调用start()方法后,线程进入就绪状态,可能还没有被分配到CPU时间。当线程分配到CPU时间片就会自动执行run方法如果在创建好线程之后,直接调用其run方法,那么就会在单线程中直接运行run方法,不会起到多线程的效果。

2025-03-31 11:11:59 350

原创 System.out.print 困了我五年

小小的System.out.println() 困了我五年,最后 DeepSeek 帮我解决了

2025-03-28 14:36:17 835

原创 深入解析Java中volatile关键字的底层原理

volatile通过内存屏障和缓存一致性协议实现可见性和有序性,是一种轻量级的同步工具。尽管它无法替代锁(如),但在特定场景下能显著提升性能。理解其底层原理,有助于在多线程编程中合理选择同步策略,平衡安全性与效率。

2025-03-26 15:06:00 4606 2

原创 synchronized关键字的底层原理

通过对象头标记和Monitor机制实现锁,结合锁升级策略平衡性能与开销。理解其底层原理,有助于编写高效、线程安全的代码。随着JVM不断优化(如锁消除、锁粗化),的性能已大幅提升,成为高并发场景下的可靠选择。附录:使用反编译字节码,可观察和指令的插入位置。

2025-03-26 14:48:30 1065

原创 Java开发工程师必须掌握的线程知识指南

掌握Java多线程开发需要理解线程基础、同步机制、线程协作等核心概念,同时要熟悉JUC工具包的使用。建议通过实际项目中的并发场景(如秒杀系统、批量处理等)加深理解,并使用VisualVM、Arthas等工具进行线程状态分析。良好的并发程序设计需要平衡性能与线程安全,避免过度同步导致的性能问题。

2025-03-24 22:50:33 766

原创 JDK 24 正式发布:抗量子加密

JDK 24通过多项实验性和预览特性为未来版本铺路,例如分代Shenandoah和紧凑对象头。同时,其安全性和性能优化(如抗量子加密和启动加速)直接回应了现代开发需求。开发者需注意即将被移除的特性(如JNI警告、安全管理器等),及时适配新规范。后续长期支持版本JDK 25预计于2025年9月发布,可能进一步推进结构化并发等特性。

2025-03-24 09:04:36 904

原创 【MVCC的前世今生】

合理设计事务边界优化查询访问路径预防版本膨胀风险制定精准的锁策略在分布式数据库蓬勃发展的今天,MVCC的变种算法(如HLC、TSO)仍在持续演进,但其核心理念——通过多版本实现读写并行——将继续影响数据库技术的发展方向。

2025-03-21 11:00:59 1112

原创 长事务导致undo log堆积

通过上述多层次的机制分析可见,长事务导致的Undo堆积本质上是由于MVCC的版本可见性规则与Purge机制的协同问题。解决该问题需要从事务管理、系统监控、存储引擎优化等多个维度进行综合治理。

2025-03-21 10:52:58 1035

原创 面试必问:Kafka如何保证消息不丢失

消息的生产者端,最怕的就是消息发送给Kafka集群的过程中失败,所以,我们需要有机制来确保消息能够发送成功,但是,因为存在网络问题,所以基本没有什么办法可以保证一次消息一定能成功。

2025-03-18 20:43:56 510

原创 下面从源码的角度看Spring Boot设计模式

在Spring Boot中,单例模式是默认的Bean作用域,Spring容器会保证每个单例Bean仅有一个实例。方法是代理对象的核心方法,在调用目标方法时,会先获取拦截器链,接着按顺序执行拦截器逻辑,最后调用目标方法。方法会依据Bean的名称获取对应的Bean实例。是Spring框架里工厂模式的核心体现,它负责创建和管理Bean实例。是Spring JDBC模块里模板方法模式的典型应用。方法定义了查询操作的模板,把具体的结果集处理逻辑委托给。类为例,它是Spring容器实现单例模式的关键类。

2025-03-18 20:19:28 596

原创 为什么不建议数据库唯一性约束实现幂等

利用数据库唯一性约束实现幂等性。

2025-03-13 17:00:02 994

原创 线性一致性与顺序一致性你听说过么

线性一致性(又称。

2025-03-13 14:32:30 941

原创 一文读懂类加载器以及双亲委派

继承ClassLoader类重写findClass方法定义类加载逻辑调用defineClass完成加载类加载器作为Java生态系统的基石,其设计充分体现了"约定优于配置"的哲学思想。深入理解其工作机制不仅能帮助开发者解决日常开发中的类加载异常,更能为构建高扩展性、高安全性的系统提供理论支持。随着云原生时代的到来,类加载器技术也在持续演进,期待读者在实践中不断探索其更多可能性。

2025-03-07 09:47:31 760

原创 一文读懂java类加载机制

Override// 加载并解密字节码的具体实现...理解类加载机制就像获得了一把打开JVM世界的钥匙。从简单的类加载过程到复杂的框架实现,掌握这些原理不仅能帮助开发者更好地排查类加载相关的问题,更能为构建灵活可扩展的系统架构提供理论基础。当您下次遇到类加载异常时,希望您能胸有成竹地快速定位问题根源。

2025-03-07 09:32:38 664

原创 深入解析主流JVM垃圾回收原理与算法

JVM的垃圾回收机制通过分代收集与多算法结合,在内存利用率和回收效率间取得平衡。参数调优:如新生代与老年代比例()、Survivor区比例(监控工具:使用JVisualVM、GC日志分析工具定位内存瓶颈。避免Full GC:优化代码减少大对象生成,合理设置堆大小与元空间容量。通过理解垃圾回收原理与算法,开发者能更高效地设计Java应用,提升系统稳定性与性能。未来,随着ZGC、Shenandoah等低延迟收集器的成熟,JVM的内存管理将迈向更高阶的实时性目标。

2025-03-06 17:02:50 711

原创 nacos2.x的两个端口你知道么

Nacos 2.x 通过。

2025-03-06 16:54:34 1603

原创 这些部署方式你知道么:灰度发布、蓝绿部署与金丝雀部署

灰度发布✅ 优点支持灵活的用户分群策略,适合A/B测试。风险可控,问题影响范围小。❌ 缺点需长期维护多版本共存,可能增加测试复杂度。对流量路由和用户标识管理要求较高。蓝绿部署✅ 优点发布和回滚极快,几乎无停机时间。环境完全隔离,避免版本冲突。❌ 缺点资源消耗翻倍,成本高昂。数据库版本兼容性需额外处理(如双写迁移)。金丝雀部署✅ 优点资源利用率高,无需冗余环境。自动化程度高,支持渐进式验证。❌ 缺点流量切分逻辑复杂,需结合监控告警体系。不适用数据库结构重大变更的场景。

2025-03-03 14:40:29 1417

原创 集群、分布式与微服务架构 区别

集群是“简单复制”:通过量变应对性能压力。分布式是“分工协作”:通过拆分解决复杂性问题。微服务是“精细治理”:通过解耦支持业务敏捷性。前端层:Nginx集群处理高并发。业务层:微服务实现功能模块化。数据层:分布式数据库保证可扩展性。基础设施:Kubernetes集群管理容器化服务。理解这些架构的本质区别,能帮助开发者在性能、复杂度、开发效率之间找到最佳平衡,从而构建可持续演进的系统。

2025-03-03 14:27:24 1033

原创 Java开发工程师必读的JDK源码与框架源码指南

阅读源码是一个从“会用”到“懂原理”的质变过程。建议从JDK集合与并发包入手,逐步深入框架的核心模块。初期可能会感到晦涩,但坚持分析核心流程与设计思想后,你会发现自己对Java生态的理解将远超他人。阅读框架源码 一定要学会debug,debug也是有技巧的比如条件debug等。上面这些都是核心内容,核心内容不管去哪儿做java开发都是用得到的,好的基础能提高你的 代码水平。

2025-02-28 11:31:00 735

原创 AI时代每个程序员都是全栈高手

成为独立开发者的核心不再是“掌握所有技术”,而是“高效整合AI工具与自身创意”。通过本文推荐的技术栈,开发者可将AI作为“超级助手”,专注产品创新与用户体验打磨。未来,随着多模态模型和智能体技术的发展(如商汤LazyLLM框架),独立开发者甚至能挑战此前需团队协作的大型项目。行动建议从一个小型项目开始(如个人博客+AI评论助手),实践全流程工具链。参与开源社区(如Continue平台),共享自定义AI助手并学习他人经验。持续关注AI编程范式演进,例如从“副驾驶”到“自主智能体”的跨越。

2025-02-28 10:57:24 857

原创 如何选择消息队列

新项目优先考虑RocketMQ或Kafka存量系统迁移考虑兼容性因素复杂场景可采用混合架构(如核心交易用RocketMQ+日志用Kafka)技术选型没有银弹,合适的才是最好的。建议通过POC测试验证实际场景表现,最终确定最适合的方案。

2025-02-28 09:34:41 960

原创 Eureka的缓存原理分析

用TimerTask默默守护你的系统性能用小心保管服务列表连随机数都用来防止雪崩(可能是最浪漫的代码)下次当你:🕒 疑惑为什么新服务上线有延迟 → 想想那个30秒的定时任务💔 发现调用失败但服务列表里还有 → 检查60秒一次的清理线程🚀 想要极限优化 → 去源码里找那些藏着的时间常量记住,好的架构师不仅要会用工具,还要懂原理看源码。希望这次源码之旅,让你对Eureka的爱又多了几分~最后收徒ing 🤞。

2025-02-27 09:09:40 1197

原创 【Eureka 缓存机制】

今天简单姐扫一下Eureka server 的缓存机制吧✌️✌️✌️。

2025-02-27 09:06:15 723

原创 Zuul、Gateway、Nginx 三剑客:API 网关与反向代理的江湖对决

在分布式系统架构中,API 网关和反向代理服务器扮演着流量守门人的重要角色。Zuul通常与Netflix的Eureka服务发现框架结合使用,Gateway是Spring Cloud的一部分,Nginx是一个高性能的开源Web服务器和反向代理服务器。下面再从多角度对比以下这几个api网关吧。

2025-02-26 22:32:37 1164

原创 【深入探索 Caffeine:Java 缓存利器】

Caffeine 是一个基于 Java 8 开发的高性能缓存库,它借鉴了 Guava Cache 和 ConcurrentLinkedHashMap 的优秀设计思想,并结合了最新的算法和技术进行优化。Caffeine 的目标是提供一个简单易用、性能卓越的缓存解决方案,适用于各种规模的应用程序。Caffeine 作为一款高性能、功能丰富的 Java 缓存库,为开发者提供了强大的缓存解决方案。通过灵活的缓存策略、异步加载和刷新机制以及详细的统计功能,Caffeine 能够满足各种复杂的应用场景需求。

2025-02-26 16:26:25 1219

原创 【outOfMemoryError】排查思路与解决方案

不好啦❗ 天塌了❗ 系统崩了❗快看啊,程序了🙈我的心里活动:“哈哈哈😀哈哈哈😀终于给我碰上了,这个问题可很少发生啊,又积累一个问题。虽然我昨天发了版本,但是作为公司技术最好,长得最帅的我,代码肯定不出现这个问题。不想看废话的直接看【解决过程和方案】 吧由于工程师分组统计方式错误的实现,本来在数据库统计就行了,然而Android老哥却全部查询出来,然后再程序统计导致的内存溢出。本篇文章分享了我去排查有趣的是,上午定位到问题,并确认是Android老哥写的,下午老哥就被约谈了,喜提大礼包。

2025-02-22 22:28:29 877

原创 【新手必看:所有的分页方式及原理】

给大家分析了每种插件的原理,以及使用插件分页时候的注意事项和优化手段🧡。

2025-02-22 22:20:26 963

原创 程序员如何看待deepSeek的

最近,DeepSeek 凭借其强大的人工智能技术,又将AI浪潮推向新的高度。作为一名java开发肯定也是积极拥抱的。不管是GPT 也好 DeepSeek 也好对于我们绝大部分人来说 只是一个提高生产效率的工具,大部分人来说都是停留在其应用层上。所以不同模型的之间的底层算法,对普通人来讲不太关注,无非就是使用体验以及结果准确性。今天谈谈AI 对我工作的影响。

2025-02-13 09:48:08 705

空空如也

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

TA关注的人

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