自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot轻松整合Sentinel限流

在Sentinel控制台中定义限流规则,可以定义URL、资源名、流控模式、阈值等限流参数。这里就不做详细介绍了。

2025-11-24 16:47:35 190

原创 SpringBoot轻松玩转MinIO对象存储

完成以上的配置就可以实现SpringBoot访问Minio进行对象存储操作了。可以上传文件、下载文件等,同时也可以根据业务需求进行其他操作。

2025-11-24 16:33:39 217

原创 SpringBoot整合JWT实现安全认证

JWT 是一种用于身份验证和授权的开放标准(RFC 7519),它允许使用签名验证和信息加密来传输数据。集成 JSON Web Token(JWT)到 Spring Boot 以实现安全的 RESTful 接口是一种常见的做法。下面是一个简单的步骤,展示如何在 Spring Boot 中整合 JWT。

2025-11-24 15:36:44 173

原创 SpringBoot自定义日志记录全攻略

添加日志依赖创建自定义日志记录器在类中,使用 SLF4J API 或 Log4j2 API 来创建日志记录器。SLF4J APILog4j API如果在src/main/resource目录中下添加logback.xml的配置文件,或者是logback-spring.xml的配置文件,如下所示。<encoder></encoder></root></logger>在代码中分别对appender、logger、root logger等配置进行了配置。

2025-11-24 15:19:25 351

原创 SpringBoot自动配置原理揭秘

实际上,在AutoConfigurationImportSelector类中完成了几乎所有的自动配置类加载的相关操作,在之前我们也介绍过只要能获取到类的全路径,基本上我们就可以完成对于类的各种操作了。包括判断配置是否合法、判断参数是否合法、并且对其进行初始化等操作。有兴趣的读者可以自己研究一下在AutoConfigurationImportSelector中的其他方法。

2025-11-24 14:48:51 569

原创 SpringCloud分布式配置中心Apollo详解

一、统一管理不同环境、不同集群的配置Apollo 提供了一个统一的界面,来进行集中式管理不同的环境、不同的集群、不同的名称空间等配置内容。因为在实际开发中同一份代码有可能部署在不同的集群、有可能有不同的配置。例如一些注册中心的地址这些的。通过名称空间可以更加方便地支持到多个应用共享同一份配置文件的目的,同时它还支持应用对共享的配置进行覆盖,也就是说如果A应用修改了共享配置,B应用再次修改就会覆盖原来的配置。二、配置的修改是热发布的。

2025-11-23 14:30:00 1134

原创 SpringBoot整合Redis实现高效发布订阅

发布订阅模式在我们日常的开发工作中算是比较常用的一种方式,发布订阅模式有可以被称为观察者模式,它定义的是一种一对多的关系模式,可以让多个订阅者同时监听到同一个发布者的消息,这个发布者又被称为是主题对象。然后通过发布者发布的消息,来通知观察者能够实时的更新自己获取到的消息内容。有人说发布订阅模式与观察者模式是有区别的,这里我们先不对两者做展开的讨论,在后面我们会介绍相关的内容。这里我们首先来看发布订阅模式,如下图所示。如图所示,在发布订阅模式中有两个关键性的节点,发布者与订阅者。

2025-11-23 10:18:47 340

原创 SpringCloudGateway入门实战

通过上面的例子,我们简单的理解了Spring Cloud Gateway的使用,并且也了解Spring Cloud Gateway如何整合Eureka进行服务的调用配置,在后续的文章中还会对Gateway进行深入的介绍,期待大家的关注与支持。

2025-11-23 10:09:41 630

原创 SpringBoot定时任务阻塞优化方案

第一步、我们需要创建一个Spring Boot的项目。并且在项目中添加一个定时任务的配置类。")System.out.println("执行定时任务 "+System.currentTimeMillis());通过上面这个配置我们就可以开启一个Spring Boot的定时任务操作。运行项目之后我们会在控制台看到如下的输出结果。当然还有很多的执行定时任务的实现方式,但是万变不离其宗,所有的线程阻塞问题其解决办法都离不开异步和多线程,而对于异步和多线程来讲又离不开线程池和IO。

2025-11-23 09:59:10 376

原创 Java动态代理:大厂面试必问技术解析

通过上面的代码可以明显感觉出来,在同样的代理类操作下,使用Cglib的方式会比使用JDK原生的操作要容易的多,当然这也是因操作而异,在有些场景下Cglib可以适用,但是在有些场景下就必须使用JDK提供的动态代理。所以开发者要结合自己的实际业务来选择不同的实现方式。

2025-11-23 09:07:40 316

原创 【每天一个面试题】String字符串为什么是不可变的?

通过上面的分析我们知道了String类型是不可变的,这样做的好处是什么?String类型设计成不可变其实主要有如下几个原因缓存安全性线程安全性能缓存首先从缓存的角度来讲,String类型是在编程中最被广泛使用的数据类型,而且在C语言或者是C++语言中对于字符串的操作也是一个非常消耗资源的操作。所以在Java语言设计的时候,采用了缓存操作,这样可以大大提升了堆内存空间使用率。在JVM中也专门为字符串类型开辟了存储空间,就是字符串常量池。

2025-11-21 14:29:04 708

原创 【每天一个面试题】如何设计一个排序系统?

在一个售票系统中设计一个排队系统,这个系统能够让每个进入排队的用户感知到自己在排队队列中位置的变化,并且队列中随时能够加入和退出。当有人加入或者退出的时候用户的排队位置也是可以及时反馈到用户。

2025-11-21 13:55:57 251

原创 后端开发者的多模态技术实战指南

在 AI 编程后端开发领域,大模型技术正从 “单模态专属” 向 “多模态融合” 全面升级。作为支撑业务智能化的核心技术,多模态大模型打破了传统文本、图像、语音等数据类型的孤立壁垒,实现了跨模态信息的统一理解与生成 —— 这意味着后端开发者需要面对更复杂的数据处理场景、接口设计需求和性能优化挑战。从行业落地来看,多模态技术已广泛应用于智能客服(语音 + 文本交互)、内容审核(图像 + 文本检测)、智能办公(文档 + 表格 + 图片解析)等后端场景。根据技术调研机构数据,2024 年以来,互联网企业多模态相关后

2025-11-20 10:21:42 1143

原创 Flask实战:手把手教你打造迷你博客

该项目是一个典型的Web开发入门实战,通过使用Flask框架构建一个功能完整的小型博客系统,帮助开发者掌握后端开发的核心技能。

2025-11-20 10:09:01 312

原创 SpringBoot启动流程:3阶段10步核心解析

核心驱动是入口,是容器初始化核心;自动配置核心加载中的自动配置类;Web 服务器启动:嵌入式服务器(Tomcat)在阶段通过自动配置类启动,无需外部部署;扩展灵活:通过等扩展点,可轻松添加自定义逻辑;配置优先级:命令行参数 > 系统环境变量 > 配置文件 > 默认配置。Spring Boot 的启动流程本质是“封装 Spring 容器初始化流程 + 自动配置 + 嵌入式服务器启动”,通过简化配置、自动整合依赖,实现 “开箱即用”。

2025-11-19 19:19:35 546

原创 Java企业级架构实战:DDD与高并发设计

本文系统阐述了企业级高并发系统的架构设计与核心解决方案。文章围绕六大关键模块展开:基于DDD的领域驱动设计、CQRS与事件驱动架构实现高内聚系统结构;高并发场景下的限流算法与熔断降级策略;Redis、ZooKeeper等多种分布式锁的实现机制与选型考量;雪花算法、数据库序列等分布式ID生成方案对比;从单体架构到微服务再到云原生的系统演进路径;以及设计模式与性能调优等企业级最佳实践。全文通过可落地的代码示例,为构建高性能、高可用的分布式系统提供完整架构指引与实践参考。

2025-11-17 10:26:47 320

原创 JAVA Stream操作全攻略

本文为Java Stream提供了从入门到精通的实用指南。内容涵盖Stream管道的完整构建、常用API(如filter, map, sorted)的详解与易错点分析(如map/flatMap区别),并深入探讨了并行流的高效使用与注意事项。文章通过代码对比,清晰呈现了Stream在简化集合操作、提升代码可读性及并行效率上的显著价值,同时也指出了其在调试方面的不足,帮助开发者在实际项目中扬长避短。

2025-11-17 10:00:35 808

原创 SpringBootStarter高级原理全解析

本文深入解析SpringBoot Starter高级原理与开发实践。重点剖析了SpringFactoriesLoader的源码实现及SpringBoot 3.x自动配置机制的变化,介绍了复合条件注解、自定义条件判断等高级装配技术,并详细阐述了多环境配置、版本兼容性管理、动态配置刷新等实用方案。文章还涵盖了Starter的可测试性设计、监控诊断、性能优化等最佳实践,以及事件驱动架构等高级应用场景。通过系统讲解这些核心技术,帮助开发者构建更灵活、健壮的自定义Starter组件,提升开发效率与系统可维护性。

2025-11-14 16:47:48 645

原创 Java线程池中的InheritableThreadLocal避坑指南

本文探讨了InheritableThreadLocal在多线程编程中的应用与问题。作为ThreadLocal的扩展,它实现了父子线程间的数据传递,但其在线程池复用和引用类型共享方面存在潜在风险。文章通过实例展示了如何正确使用该特性,并提出了解决方案:使用深拷贝、借助TaskDecorator或TransmittableThreadLocal等工具处理线程池复用问题。开发人员需要理解其继承机制,做好资源清理和防御性编程,才能安全地在异步任务、安全认证等场景中使用这一特性。

2025-11-14 15:55:37 608

原创 JVM面试精华:6大核心问题解析

本文系统梳理了JVM核心面试要点,包括:1)类加载器类型及双亲委派机制;2)可达性分析算法判断对象回收;3)四种引用类型(强、软、弱、虚)特性及应用;4)ThreadLocal使用弱引用避免内存泄漏的原理;5)常见垃圾回收算法(标记-清除、复制、标记-整理、分代GC)的优缺点。内容涵盖JVM内存管理机制的核心知识,适合Java开发者构建完整的JVM知识体系。

2025-11-13 13:45:00 845

原创 深入解析JVM:从原理到实战学习路线

JVM(Java虚拟机)是Java程序的运行环境,实现了"一次编写,到处运行"的平台无关性。它通过解释执行字节码、自动内存管理、垃圾回收和数组越界检查等功能,简化了开发并提高了安全性。JVM包含类加载器、内存结构和执行引擎三大部分,学习JVM有助于面试、理解底层原理和解决性能问题。主流实现是HotSpot虚拟机,学习路径应从内存结构、垃圾回收、字节码结构到即时编译器优化。掌握JVM是中高级Java开发者的必备技能。

2025-11-13 09:21:18 666

原创 KOA2+egg.js集成Kafka消息队列实战

本文介绍了基于Egg.js和Kafka构建的日志系统实现方案。系统采用生产者-消费者模式,通过Kafka进行异步日志消息处理:1) 生产者接收日志请求并发送到Kafka消息队列;2) 消费者监听队列并将日志持久化到MySQL数据库。文章详细说明了环境配置(Kafka分区设置、Egg项目初始化)、核心代码实现(生产者消费者初始化、日志服务层处理)、以及MySQL表结构设计。系统支持高并发日志处理,通过多线程测试脚本验证了方案的可行性,实现了日志采集与存储的解耦。

2025-11-12 15:41:10 313

原创 Java必知:==与equals的区别详解

Java中Object类的equals方法默认使用"=="比较对象引用,而Integer、String等类通常重写equals方法实现值比较。自定义类时,可以重写equals方法进行属性值比较而非引用比较,如Person类重写equals比较name和age属性。因此,==用于比较引用,equals用于比较值(需重写equals方法)。

2025-11-12 14:47:14 228

原创 7大Java业务场景数据库选型实战

本文系统分析MySQL、PostgreSQL、Redis、MongoDB、Elasticsearch、ClickHouse六种数据库在电商、社交、监控、即时通讯等七类典型场景下的选型策略。通过“场景需求—特性匹配—协同优化”的决策框架,深入阐释数据库特性与业务诉求的对应关系,提出多类型数据库混合架构方案。文章强调存储设计的核心是适用性而非技术先进性,并总结“聚焦核心诉求、多库协同设计、控制扩展成本”三大选型原则,为复杂业务场景的数据库架构提供清晰实用的规划指引。

2025-11-11 19:55:47 894

原创 MySQL性能优化:常见错误与优化技巧

本文分析了MySQL查询优化的常见问题与解决方案,重点讨论了9种典型场景的优化技巧:1)分页查询使用索引和条件优化避免全表扫描;2)防止隐式转换导致索引失效;3)关联更新/删除重写为JOIN操作;4)提前缩小查询范围;5)中间结果集下推减少数据处理量;6)使用WITH语句简化重复子查询。文章强调理解数据库编译器特性,通过合理设计数据模型和编写高效SQL语句来提升性能,建议程序员养成算法思维和使用WITH语句的习惯。

2025-11-11 19:54:07 361

原创 掌握JAVA Stream流操作实战技巧

本文详细介绍了Java中Stream流操作的核心概念和使用方法。Stream操作分为创建、中间处理和终止三个管道类型,提供了filter、map、sorted等丰富API。相比传统循环方式,Stream具有代码简洁、逻辑解耦、并行高效等优势,特别适合集合数据处理。文章通过多个实例对比展示了Stream在数据过滤、转换、排序、收集等方面的优雅实现,同时也指出了调试不便等局限性。最后强调Stream的函数式特性和延迟执行机制,建议开发者在实际项目中合理运用Stream提升代码质量。

2025-11-10 10:38:10 693

原创 Java线程诊断利器:jstack命令解析

本文介绍了jstack命令的实战应用。作为JVM自带的堆栈跟踪工具,jstack可生成线程快照用于诊断死锁、死循环等问题。文章首先讲解jstack功能及用法,回顾线程状态基础知识,随后通过两个典型案例演示:1)分析死锁问题,通过jstack定位互相等待锁的线程;2)排查CPU过高问题,结合top命令找出高CPU线程,用jstack分析线程堆栈定位死循环代码。这两个案例展示了jstack在生产环境问题诊断中的实用价值,帮助开发人员快速定位和解决Java应用性能问题。

2025-11-10 10:01:27 675

原创 SpringBoot整合SpringSession实战指南

本文介绍了SpringSession在SpringBoot项目中集成Redis实现分布式会话的实战方案。通过添加Redis和Spring-Session依赖、配置Redis连接、使用JSON序列化机制等步骤,实现了会话数据的分布式存储。测试表明,不同节点可共享同一Session数据。文章也指出SpringSession存在会话事件实时性不足、存储占用较大等缺点,但总体仍是一个高可用方案。该方案通过透明替换HttpSession实现,使应用无需修改代码即可获得分布式会话能力。

2025-11-09 14:31:11 742

原创 Java类型系统全解析

Java类型系统采用静态强类型设计,具有8种基本类型和5类引用类型,支持自动/强制类型转换。泛型通过类型擦除实现编译时安全检查,运行时转为原生类型。多态基于动态绑定机制,编译时检查声明类型,运行时调用实际类型方法。类型系统在编译期严格检查类型匹配,但反射和数组协变可能引发运行时类型异常,体现了在编译安全和运行效率之间的平衡。

2025-11-09 13:46:20 609

原创 深入Java虚拟机:从JDK到JRE的奥秘

Java技术体系主要包括JDK和JRE:JDK是开发工具包,包含JVM、语言和类库API;JRE是运行时环境,含JVM和部分API。Java分为Java Card、ME、SE、EE四个技术领域。Java发展始于1991年Oak语言,1995年更名为Java并快速发展,经历了多个版本迭代和技术变革,包括JDK1.0到JDK17的演进,以及Sun公司被Oracle收购后的一系列商业决策。Java虚拟机家族包含多种实现。Java的发展历程充满商业竞争和技术创新,最终成为世界主流编程语言之一。

2025-11-07 09:11:44 703

原创 深入剖析Java内存模型:解析与实战

Java内存模型(JMM)解决了多线程环境下的内存可见性和指令重排序问题。它定义了主内存与线程工作内存的交互规则,通过8种原子操作(read/write等)和happens-before原则确保数据一致性。volatile保证变量修改的可见性和禁止重排序,synchronized实现同步区的原子访问。虽然long/double允许非原子操作,但实际虚拟机通常保证其原子性。JMM通过内存屏障等技术,在并发编程中维护了原子性、可见性和有序性三大特性。

2025-11-07 09:03:48 868

原创 MySQL数据类型精解:CHAR vs VARCHAR与BigDecimal

本文对比了MySQL中CHAR与VARCHAR的区别:CHAR存储固定长度数据,适合身份证号等场景;VARCHAR存储变长数据,适合用户输入。同时解释了BigDecimal在解决浮点数精度问题上的优势,特别适用于金融计算等需要精确度的场景。文章还提供了MySQL与Java的类型映射建议,强调在关键业务中优先使用DECIMAL类型。最后给出使用建议:根据业务需求选择合适类型,在精度和效率间取得平衡,并优化批量操作性能。

2025-11-06 15:27:18 1454

原创 JavaCAS原理深度解析

Java并发编程中,synchronized是重量级锁,而volatile无法保证原子性。CAS(Compare-And-Swap)作为乐观锁机制被广泛应用于并发场景,如AtomicInteger通过Unsafe类调用CPU指令实现原子操作。CAS底层基于JNI调用汇编指令,在多核系统中通过总线加锁保证原子性。但CAS存在ABA问题(可通过版本号解决)和循环开销大的缺点。AtomicStampedReference等类提供了解决方案。

2025-11-06 14:35:23 1622 1

空空如也

空空如也

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

TA关注的人

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