自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 别再混淆了!JVM内存模型和Java内存模型的本质区别

JVM 内存模型(JVM Memory Model)和 Java 内存模型(Java Memory Model, JMM)是 Java 开发中两个非常重要的概念,但这两个概念很容易被搞混,所以本文就来通俗易懂的讲讲二者的区别。首先,我们先来看看各自的概念,以及其解决的问题。

2025-08-06 21:09:54 129

原创 面试官:谈谈你对线程池拒绝策略的理解?

Override// 自定义逻辑(如记录日志、持久化任务、重试等)// 保存任务信息// 通知相关负责人// 使用自定义策略。

2025-08-06 21:02:14 87

原创 必看!导致事务失效的7大典型场景!

Transactional 声明式事务失效的场景是 Java 面试中经常被问到的问题,所以今天咱们就来系统的盘点一下导致 @Transactional 失效的场景有哪些?以及导致的原因和解决方案详解。

2025-08-06 20:59:35 220

原创 年少不知自增好,错把UUID当个宝!!!

在 MySQL 中,使用在大表中可能会导致性能问题,尤其是在插入和修改数据时效率较低。以下是详细的原因分析,以及为什么修改数据会导致索引刷新,以及字符主键为什么效率较低。

2025-08-05 20:07:29 863

原创 生产环境到底能用Docker部署MySQL吗?

争议的焦点主要在于Docker容器会不会影响性能。其实 Docker和虚拟机不一样,虚拟机是模拟物理机硬件,而Docker是基于Linux内核的cgroups和namespaces技术,实现了CPU、内存、网络和I/O的共享与隔离,性能损失很小。Docker 和传统虚拟化方式的不同之处,在于 Docker 是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。轻量级:共享宿主机内核,启动快,资源占用少。隔离性:容器之间相互隔离,不会互相干扰。可移植性。

2025-08-05 20:05:50 281

原创 MySQL千万级数据从190秒优化到1秒全过程

首先要声明的就是,千万级数据对于MySQL来说就是不太合理的一个存在。优化MySQL千万级数据策略还是比较多的。这里讨论的情况是在MySQL一张表的数据达到千万级别。表设计很烂,业务统计规则又不允许把sql拆成多个子查询。在这样的情况下,开发者可以尝试通过优化SQL来达到查询的目的。当MySQL一张表的数据达到千万级别,会出现一些特殊的情况。这里主要是讨论在比较极端的情况下SQL的优化策略。

2025-08-05 20:03:39 298

原创 Java并发神器:一文掌握所有并发工具类[特殊字符]

在多核处理器时代,已经成为Java开发者必须掌握的核心技能。无论是提升应用性能、优化资源利用,还是构建高可用系统,并发工具类都是我们的得力助手。想象一下,如果没有并发工具类,我们将面临什么困境?🤔幸运的是,Java为我们提供了强大的java.util.concurrent包(简称),它包含了丰富的并发工具类,帮助我们轻松应对各种并发场景。

2025-08-04 21:27:58 414

原创 “全栈”正在淘汰“前端”吗?一个前端专家的焦虑与思考

而一个前端专家,他的核心竞争力,应该体现在对用户体验的全方位把控上:交互的细节、动画的流畅度、加载的性能、操作的便捷性、视觉的保真度、以及对所有人群都友好的无障碍设计。在一个团队里,当所有全栈工程师都能快速实现一个80分的功能时,那个能站出来,把一个核心功能的性能从80分优化到95分,或者解决一个极其诡异的浏览器兼容性Bug的专家,他的价值是无可替代的。拓宽自己的知识广度(T的横向),去了解Node.js,了解部署,是必须的。在抱怨之前,我得承认,这个趋势的出现,是技术发展和商业需求的必然结果。

2025-08-04 21:23:38 355

原创 国内最难入职的 IT 公司排行

再看看京东,我们当年校招那会就面过京东,我记得我当时面试的是京东智能,现在回过头来看那时候难度不算特别大,会基本的八股,会手撕简单以及中等难度的 LeetCode 算法题,然后再稍微准备一下导师实验室所做的项目经验,基本就能拿到 Offer 了。当然这个表格不是我整理的,数据来源于网络,大家仅供参考,拿出来跟大家分享的目的也是跟大家一起交流讨论一下,毕竟每个人的背景和经历都不太一样,对于“难”字的定义肯定也有着不同的维度,大家也可以说出你心目中觉得最难入的公司。说实话,这对于面试者的要求还是挺高的。

2025-08-04 21:21:55 539

原创 springboot利用Redisson 实现缓存与数据库双写不一致问题

使用了 Redisson 来操作 Redis 分布式锁,主要功能是从缓存和数据库中获取商品信息,以下是针对并发时更新缓存和数据库带来不一致问题的解决方案。

2025-08-01 20:22:17 196

原创 Spring Boot 中整合 Feign 客户端时,配置日志的多种方式

可以通过在application.properties或application.yml文件中设置 Feign 客户端接口的日志级别来控制日志输出。

2025-08-01 20:19:23 141

原创 Springboot消息堆积如何破局,如何实现高吞吐零失误

Redis List:实现简单,适合对消息处理顺序有严格要求、不需要复杂消息确认机制的场景。:功能更强大,支持持久化、多消费者组、消息确认等,适合高并发、高吞吐、需要消息可靠处理的场景。

2025-08-01 20:15:43 788

原创 SpringBoot中的4种重试机制实现方案

选择合适的重试机制应基于项目的技术栈、复杂度和需求。无论选择哪种机制,都应遵循重试的最佳实践,避免常见陷阱,确保系统的稳定性和可靠性。

2025-07-31 17:05:13 694

原创 SpringBoot实现接口防刷的5种实现方案

接口防刷是一个系统性工程,需要考虑多方面因素:安全性、用户体验、性能开销和运维复杂度等。本文介绍的5种方案各有优缺点,可以根据实际需求灵活选择和组合。最小影响原则:尽量不影响正常用户的体验梯度防护原则:根据接口的重要程度采用不同强度的防护措施可监控原则:提供充分的监控和告警机制灵活调整原则:支持动态调整防护参数和策略通过合理实施接口防刷策略,可以有效提高系统的安全性和稳定性,为用户提供更好的服务体验。

2025-07-31 16:56:50 708

原创 SpringBoot中3种优雅停机的实现方式

停止接收新的请求等待正在处理的请求完成关闭各种资源连接(数据库连接池、线程池、消息队列连接等)完成必要的清理工作最后退出应用提高用户体验,避免请求突然中断保障数据一致性,防止数据丢失JVM提供了ShutdownHook机制,允许在JVM关闭前执行自定义逻辑。通过注册自定义的ShutdownHook,我们可以实现更加精细和灵活的优雅停机控制。这种方式的优势在于可以精确控制资源释放顺序,适合有复杂资源管理需求的应用。

2025-07-31 16:42:52 590

原创 Spring Boot 的 3 种二级缓存落地方式

一级缓存(本地缓存):直接在应用服务器内存中,访问速度极快,但容量有限且在分布式环境下无法共享二级缓存(分布式缓存):独立的缓存服务,如Redis或Memcached,可被多个应用实例共享,容量更大二级缓存的工作流程通常是:先查询本地缓存,若未命中则查询分布式缓存,仍未命中才访问数据库,并将结果回填到各级缓存中。该方案通过自定义缓存框架,精确控制缓存的读写流程、失效策略和同步机制,实现更加贴合业务需求的二级缓存。这种方式虽然实现复杂度高,但提供了最大的灵活性和控制力。

2025-07-30 21:31:39 780

原创 SpringBoot的5种签到打卡实现方案

在实际应用中,可以根据具体需求、用户规模、安全要求和预算等因素选择最合适的方案,也可以将多种方案结合使用,构建更加完善的签到打卡系统。

2025-07-30 21:27:12 1613 2

原创 SpringBoot的4种抽奖活动实现策略

在实际项目中,我们需要根据业务需求、用户规模、性能要求等因素,选择合适的抽奖策略或组合多种策略,以构建高效、可靠、安全的抽奖系统。无论选择哪种抽奖策略,都需要关注系统的公平性、性能、可靠性和安全性,不断优化和改进。

2025-07-30 21:22:11 866

原创 SpringBoot 3.0使用自定义注解+Interceptor+Redis实现幂等

/ 默认过期时间,单位:秒// 处理添加评论的逻辑return "评论添加成功";通过上述步骤,我们创建了一个自定义注解 @Idempotent,一个拦截器 IdempotencyInterceptor,并在拦截器中使用Redis进行幂等性检查。最后在需要检查幂等性的Controller方法上添加该注解即可实现功能。

2025-07-28 19:33:55 209

原创 Spring Boot + MyBatis-Plus 实战中的那些“坑”与思考 —— 以身份认证服务为例

每一次规范的小坚持,都是在为自己的效率和团队的可维护性加分。遇到bug和踩坑,别慌,debug和Google是最靠谱的好朋友。别让配置文件和注解把你绕晕,读源码、翻官方文档、反思自己的调用链,一步步就能爬出来。希望这篇文章对同为全栈的你,有点共鸣、有点实用,也祝你的后端工程越来越稳,“长久在线,头发依旧”。如果你有类似经历或者更骚气的踩坑,欢迎留言交流!

2025-07-28 19:32:07 769

原创 Spring Boot 3.5 + Spring Cloud Stream:邮件发送与幂等实战

Idempotent 支持三种验证类型支持两种场景:RESTAPI 与 MQ;在 MQ+SPEL 场景下,依靠 uniqueKeyPrefix + key 形成 Redis 防重复键。版本选型:Northfields + SCA 2023.0.3.3,RocketMQ Client 5.3.x,函数式编程模型配合 StreamBridge 最稳。邮箱发送:QQ 465 端口启用 ssl.enable=true,from 必须等于 username;打开 mail.debug 便于排障。

2025-07-28 19:27:03 1009

原创 Java 序列化的几种方式对比

首先要明白,序列化它是一个过程,什么过程呢?把一个java对象转化成字节序列的过程java对象都知道,那什么是字节序列呢?字节,也就是byte,1byte = 8bit,也就是一个字节等于8位,每一位都是用0或者1来表示,在内存中,数据就是以二进制的形式存储的那序列呢?简单看来说就好比排队,一列一列的,至此,字节序列,是不是就是像字节在排队一样,而字节又是一个个的8bit,理解了吧!

2025-07-27 16:24:38 719

原创 给 Java 异常处理的几个建议

【代码】给 Java 异常处理的几个建议。

2025-07-27 16:18:50 692

原创 如何使用Java开发在线生成 pdf 文档 ?

itext框架是一个非常实用的第三方pdf文件生成库,尤其是面对比较简单的pdf文件内容渲染的时候,它完全满足需求。但是对于那种复杂的pdf文档,可能需要自己单独进行适配开发。具体的深度玩法,大家可以参阅itext官方API。

2025-07-27 16:13:39 551

原创 也是出息了,业务代码里面也用上算法了。

你好呀,我是歪歪。好消息,好消息,歪师傅最近写业务代码的时候,遇到一个可以优化的点。然后,灵机一动,想到一个现成的算法可以拿来用。业务代码中能用到算法,虽然不是头一遭,但是也真的是算难得了。记录一下,分享一波。走起。

2025-07-25 20:11:28 851

原创 排序算法与技术——高级比较排序算法

实证评估强调,算法性能是数据特性、内存层次结构和处理器能力等多因素交织的复杂现象。理论复杂度虽为重要指标,但不足以完全预测现实表现。算法选择必须考虑输入形态、硬件特征及优化空间,如缓存友好布局、避免分支和向量化等。结合硬件计数器精确指标与执行时间的基准实践,为推进排序算法实现提供了整体视角。这些细致的实证研究引导开发者设计适应性强、稳健且高效的排序方案,以满足当代计算环境的复杂需求。

2025-07-25 20:01:15 730

原创 排序算法与技术——基础排序算法

迭代方式:两种算法都通过多次遍历数组,比较并交换相邻元素。自适应优化:引入交换标志,支持对有序或近有序输入的提前终止。双向遍历:鸡尾酒排序通过正反方向交替减少趟数。时间复杂度:最坏及平均情况均为 O(n²),限制扩展能力。空间复杂度:原地排序,空间复杂度为 O(1)。教学用途:以清晰简单著称,适合作为教学示例。冒泡排序和鸡尾酒排序提供了理解算法简洁性与效率权衡的实用基础,阐释了为何复杂计算需求催生更先进的排序技术。

2025-07-25 19:57:17 524

原创 Java类验证阶段深度解析:四层安全关卡详解

开发阶段注意事项避免手动修改.class文件 及时处理编译警告(尤其是泛型相关) 使用合规的JDK版本编译调试技巧static {// 添加-XX:-UseSplitVerifier可定位旧版本验证问题安全启示验证机制是Java沙箱安全的第一道防线 避免使用不受信任的.class文件 谨慎处理动态生成的字节码 理解验证机制如同掌握JVM的"免疫系统工作原理",它能有效拦截90%以上的恶意代码注入和意外错误。

2025-07-24 22:10:26 370

原创 Java类解析阶段深度解析:符号引用到直接引用的转换

关键要点解析阶段完成符号引用到直接引用的转换不同类型的解析(类、字段、方法)有不同规则错误通常表现为LinkageError及其子类性能优化建议// 避免频繁的反射操作static {try {异常处理指南异常场景处理策略类版本不兼容使用-source/-target参数编译缺少依赖库检查classpath配置访问权限冲突检查修饰符使用方法签名变更保持二进制兼容性更好地诊断类加载相关问题优化反射操作的性能设计可扩展的类结构。

2025-07-24 22:05:28 830

原创 SpringBoot3集成MapstructPlus

Mapstruct Plus 是 Mapstruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。Mapstruct Plus 是 Mapstruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。

2025-07-23 20:44:05 166

原创 Spring Boot 中使用 InfluxDB (InfluxQL 方式) 详解

InfluxDB 是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等。下面详细介绍如何在 Spring Boot 项目中集成 InfluxDB 并使用 InfluxQL 进行数据操作。

2025-07-23 20:38:52 248

原创 这些 Spring Boot 默认配置不改,迟早踩坑

Spring Boot 的“约定优于配置”确实省心,但省的是开发者的心,不是系统的责任。每一项默认配置背后,其实都藏着设计者的假设和权衡,而这些假设,在我们的业务场景中也许未必成立。这些坑我几乎都踩过,有些甚至反复踩了好几次。愿你读到这里,能少走几步弯路,可不能拿生产事故去交学费。提前优化配置,是对系统负责,也是对自己负责。最后想说句题外话——最近又忙起来了,又是“降本增效”搞的,好像这个词永远不会消失。有时候总忍不住想,什么时候才能“增本增效”?也许在经济下行的当下是没有可能了。

2025-07-23 20:25:01 874

原创 设计模式在 Spring 中的实战应用:从源码理解到项目落地

为解决问题而用”,而非 “为用而用”:设计模式是工具,不是目的。比如单例模式适合无状态对象,但强行用在有状态对象上会导致线程安全问题;责任链模式适合步骤拆分,但链条过长会增加调试难度(不知道哪一步出了问题)。“借鉴 Spring,但不盲从 Spring”:Spring 的设计模式是为框架通用性服务的(比如BeanFactory需要支持各种 Bean 的创建),但项目中可以简化。比如不需要像 Spring 那样实现完整的BeanDefinition,一个简单的工厂类可能就足够解决依赖问题。

2025-07-22 20:16:37 583

原创 SpringBoot自动化配置原理

SpringBoot的自动配置就是当spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

2025-07-22 20:10:37 584

原创 Spring AI MCP:让AI开发像“拼乐高”一样简单

AI应用商店:直接安装MCP版翻译/绘图工具自动编排系统:根据需求自动组合MCP服务跨平台协作:Java写的服务被Python应用调用。

2025-07-22 20:04:31 908

原创 刷完这49题,面试官当场给Offer!Java程序员必备指南

答案: final: 常量声明。finally: 处理异常。finalize: 帮助进行垃圾回收。接口里声明的变量默认是final的。final类无法继承,也就是没有子类。这么做是出于基础类型的安全考虑,比如String和Integer。这样也使得编译器进行一些优化,更容易保证线程的安全性。final方法无法重写。final变量的值不能改变。finalize()方法在一个对象被销毁和回收前会被调用。finally,通常用于异常处理,不管有没有异常被抛出都会执行到。

2025-07-22 19:59:01 2118

原创 Java 与 MySQL 性能优化:MySQL全文检索查询优化实践

在当今数字化时代,内容管理系统(CMS)已成为企业和个人发布、管理和检索大量文本内容的核心工具。随着内容规模的不断扩大,高效的全文检索功能变得至关重要。MySQL作为最流行的关系型数据库之一,其InnoDB引擎从5.6版本开始支持全文索引功能,为CMS提供了一种强大且便捷的文本检索解决方案。然而,在实际应用中,CMS开发者和数据库管理员经常面临全文检索性能瓶颈。当内容量达到数十万甚至数百万条记录时,简单的全文检索实现可能导致响应时间延长、资源消耗增加,严重影响用户体验。

2025-07-21 19:11:53 524

原创 Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践

传统批量插入方案对比: PreparedStatement批量插入在性能、内存消耗和安全性方面都明显优于Statement.executeBatch(),是处理中等规模数据的首选方案。对于小规模数据(10 万条以下),PreparedStatement已经足够高效;对于中等规模数据(10 万到 50 万条),可以通过调整批量大小和分块处理进一步优化性能。MySQL 批量加载(LOAD DATA)优势。

2025-07-21 17:32:09 1002

原创 Java 与 MySQL 性能优化:MySQL连接池参数优化与性能提升

MySQL连接池参数的优化是一个需要不断实践和调整的过程,没有一成不变的最优配置。开发者需要深入理解各个参数的含义和对性能的影响,结合实际的业务场景和服务器硬件配置,通过监控和分析,制定合理的优化策略。

2025-07-21 17:28:09 919

原创 Kafka源码(二)分区新增和重分配

分区变更操作涉及两个重要的znode。/brokers/topics/{topic}:存储了topic分区的分配情况,称为assignment。其中partitions存储了每个分区的副本replicas,每个replica表现为brokerId。/brokers/topics/{topic}/partitions/{partitionId}/state:存储了分区的状态,包含当前分区的leader和isr列表,称为。

2025-07-20 21:54:23 694

空空如也

空空如也

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

TA关注的人

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