自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 优化代码实战分析

本文展示了Java代码优化的两个阶段:首先通过引入UnaryOperator函数式接口消除重复代码,使代码结构更简洁;然后通过批量处理JSON数据,将多次对象操作转换为局部变量计算,最后一次性赋值,显著提升性能。性能分析表明,当处理15,000条数据时,优化后减少了99.993%的对象访问操作,预期性能提升70%-90%,同时降低了GC压力和CPU缓存不命中的概率。这种优化策略在大数据量处理场景下效果尤为显著,兼顾了代码可读性和执行效率。

2025-08-30 16:47:23 903

原创 Jedis、Lettuce、Redisson 技术选型对比

本文对比分析了三种主流Redis客户端(Jedis、Lettuce、Redisson)的技术特性。Jedis是轻量级同步客户端,适合简单场景;Lettuce采用异步/响应式模型,性能优异;Redisson提供丰富的分布式功能。从性能看,Lettuce在内存占用和响应延迟方面表现最佳;从功能看,Redisson分布式能力最强;从易用性看,Jedis学习成本最低。针对报表系统等大数据量场景,推荐使用Lettuce,因其非阻塞模型适合大数据查询,且与Spring生态集成良好。文章还提供了从Jedis迁移到Lett

2025-08-30 16:35:43 784

原创 OpenTelemetry 通过注解驱动(@WithSpan) 应用于springboot项目

OpenTelemetry的@WithSpan注解简化SpringBoot应用埋点,只需添加依赖并标记方法即可自动生成Span。需配合JavaAgent使用,支持自定义Span名称、添加属性,并自动构建调用链路。启动时配置Agent参数即可在Jaeger等系统中查看完整追踪信息,实现无侵入式代码埋点。该方法相比手动创建Span更简洁高效,适合业务方法监控场景。

2025-08-28 10:23:53 942

原创 OpenTelemetry 通过自动埋点(Java Agent) 应用于springboot项目

本文介绍了如何使用OpenTelemetry Java Agent为SpringBoot应用实现无侵入式链路追踪。主要内容包括:下载并配置OpenTelemetry Java Agent;创建SpringBoot示例项目(含REST接口);配置日志输出TraceID;提供两种启动方式(JVM参数和环境变量);验证日志和追踪效果。关键点在于通过-javaagent参数加载Agent,配置OTLP端点,Agent会自动追踪常见组件调用。这种方法无需修改业务代码,即可实现分布式链路追踪,适合各种部署环境。

2025-08-28 10:07:01 918

原创 OpenTelemetry 在 Spring Boot 项目中的3种集成方式

OpenTelemetry在SpringBoot中的三种应用方式:1)自动埋点(JavaAgent)零侵入,适合基础监控;2)注解驱动(@WithSpan)适合核心业务追踪;3)手动埋点(SDK)供深度定制。最佳实践建议:优先使用JavaAgent,辅以注解补充关键业务,特殊场景再手动埋点。所有方案均需配置OTLP导出器推送到Collector,可根据实际需求平衡监控粒度与实现成本。

2025-08-27 18:00:21 771

原创 OpenTelemetry 详细介绍

OpenTelemetry是一个开源可观测性框架,用于统一收集分布式系统的追踪、指标和日志数据。它提供标准化API/SDK、多语言支持和自动埋点功能,通过收集器处理数据并转发到后端系统如Jaeger/Prometheus。其核心优势包括标准化协议、灵活架构和成本优化,适用于微服务诊断、性能分析等场景。作为CNCF主导的事实标准,OpenTelemetry显著简化了云原生系统的监控复杂度。

2025-08-27 17:52:09 319

原创 扩展现有的多模块 Starter

本文介绍了一个基于Spring Boot的多模块Starter开发实践,重点展示了如何将核心功能与Spring Boot配置解耦。文章分为核心模块(my-feature-core)和自动配置模块(my-feature-spring-boot-autoconfigure)两部分:核心模块包含纯Java实现的限流工具RateLimiter和请求日志RequestLogger,保持不依赖Spring框架;自动配置模块则通过属性配置类、自动配置声明等实现Spring Boot集成。最后通过Demo项目演示了如何同时

2025-08-26 23:39:38 781

原创 多模块 Starter 最佳实践(强烈推荐!!!)

本文介绍了多模块Maven工程实现Spring Boot Starter的最佳实践。通过将项目拆分为core(核心逻辑)、autoconfigure(自动配置)、starter(依赖聚合)和demo(测试)四个模块,实现了代码复用、依赖隔离和配置标准化。核心模块独立于Spring Boot,可被其他项目复用;自动配置模块通过@ConfigurationProperties和@Bean实现开箱即用;starter模块仅聚合依赖,保持用户项目干净。文章详细展示了各模块的pom配置、核心类实现,以及自动配置的声明

2025-08-26 23:24:40 1213

原创 Spring Boot 项目打包成可执行程序

本文介绍了将Java SpringBoot项目打包成可执行程序的完整流程。主要包括:1)配置Maven打包插件;2)使用mvn clean package生成可执行JAR;3)运行程序的方法;4)跨平台执行方案(Windows批处理/Linux脚本);5)高级封装选项(GraalVM Native Image、Launch4j);6)验证执行方式。生成的JAR包含嵌入式Tomcat服务器,大小通常20-100MB,要求目标机器安装匹配的JRE。生产环境建议配合nohup或服务注册实现后台运行。

2025-08-25 21:38:31 762

原创 设计一个完整可用的 Spring Boot Starter

摘要:本文详细介绍了如何开发一个完整的Spring Boot Starter,包含7个关键步骤:1)创建标准项目结构;2)添加必要的自动配置依赖;3)实现配置属性类、服务类和自动配置类;4)注册自动配置;5)添加配置元数据支持;6)打包发布;7)演示其他项目引用方式。特别强调了命名规范(需使用-spring-boot-starter后缀)、条件化配置(通过@Conditional系列注解)和配置隔离等设计要点,并指出完整实现应包含单元测试和异常处理机制,启动成功率可达98%以上。文中还提供了YAML配置示例

2025-08-25 21:24:44 655

原创 Java 22 新特性及具体应用

Java 22核心特性摘要 Java 22(2024年3月发布)引入多项重要改进: 未命名变量(JEP 456):用_忽略未使用的变量或异常参数,提升代码简洁性。 字符串模板(预览):通过STR."\{var}"安全嵌入表达式,避免拼接错误和注入风险。 结构化并发(预览):StructuredTaskScope统一管理子任务生命周期,简化错误处理和资源释放。 外部函数API(JEP 454):替代JNI,安全调用本地代码(如C函数)。 向量API(孵化器):利用SIMD指令加速数值计算(

2025-08-24 22:26:06 267

原创 Java 21 新特性及具体应用

Java21作为长期支持版本,引入了多项重要特性:虚拟线程提升并发性能,模式匹配增强简化类型处理,记录模式优化数据操作,字符串模板提高安全性,序列化集合统一有序集合API。这些改进使Java更适应现代开发需求,如云原生和大规模系统。建议开发者升级并利用这些特性提升开发效率、代码质量和系统性能。

2025-08-24 22:13:57 299

原创 Java 20 新特性及具体应用

Java 20作为短期支持版本,延续了Java 19的预览特性并引入新功能。主要特性包括:增强的switch模式匹配(简化类型检查)、记录模式(解构不可变数据)、外部函数与内存API(安全访问本地资源)、矢量API(优化数值计算)、作用域值(线程安全数据共享)和结构化并发(统一管理并发任务)。这些特性提升了代码简洁性、性能及并发安全性,适用于数据处理、高性能计算和微服务等场景。注意预览特性需启用--enable-preview参数,建议生产环境谨慎使用。

2025-08-24 22:07:11 372

原创 Java 19 新特性及具体应用

Java 19(2022.9)引入6项预览/孵化特性:1.虚拟线程实现轻量级并发,支持万级线程;2.结构化并发实现多线程原子操作管理;3.记录模式简化数据解构;4.外部函数API支持安全本地代码调用;5.向量API通过硬件加速提升计算性能5-10倍;6.增强的switch模式匹配。这些特性需启用预览参数,其中虚拟线程最受关注,预计在Java 21正式发布,将重塑高并发编程范式。

2025-08-22 22:54:24 421

原创 Java 18 新特性及具体应用

Java 18新特性概览: UTF-8默认编码(JEP400)统一字符处理 jwebserver工具(JEP408)快速启动静态服务器 Javadoc支持@snippet标签(JEP413)嵌入示例代码 switch模式匹配第二次预览(JEP420)简化类型处理 向量API第三次孵化(JEP417)提升数值计算性能 这些特性增强了开发便利性、文档质量和性能表现,其中UTF-8默认编码和简单Web服务器最易上手,模式匹配和向量API适合特定场景。新特性通过具体代码示例展示了实际应用价值,建议开发者根据项目需求

2025-08-22 22:37:18 997

原创 Java 17 新特性及具体应用

Java 17 LTS版本引入多项重要特性:1)密封类(Sealed Classes)通过permits关键字精确控制继承关系,增强类型安全性;2)模式匹配switch简化类型检查和转换逻辑,支持null处理;3)文本块改进多行字符串处理,特别适合JSON/HTML/SQL编写;4)新增伪随机数生成器API,提供可插拔算法实现;5)强封装JDK内部API提升安全性;6)引入外部函数/内存API(孵化器)替代JNI。作为长期支持版本,Java 17特别适合企业应用,建议优先采用密封类和文本块等特性提升代码质量

2025-08-21 11:03:55 358

原创 Java 16 新特性及具体应用

Java 16(2021年3月)带来了多项重要更新:记录类(Records)成为标准特性,简化不可变数据载体的声明;instanceof模式匹配消除了冗余类型转换;密封类(Sealed Classes)作为预览特性控制类的继承层次。此外,新增Vector API(孵化器)支持向量计算加速,Unix域套接字通道实现高效本地进程通信,打包工具jpackage可生成原生安装包。其他改进包括Stream.toList()简化集合操作、日期格式支持"上午/下午"等。

2025-08-21 10:59:53 774

原创 Java 15 新特性及具体应用

Java 15带来了多项重要更新:密封类(预览特性)通过限制继承关系增强封装性;隐藏类支持动态生成不可发现的类;文本块(正式特性)简化多行字符串处理;模式匹配instanceof(第二次预览)简化类型检查和转换;ZGC垃圾回收器成为正式功能,提供亚毫秒级停顿;新增EdDSA数字签名算法;Records类(第二次预览)简化不可变数据载体。这些特性分别增强了类型安全、代码可读性、运行效率和安全性,预览特性需通过编译参数启用。

2025-08-20 14:03:18 366

原创 Java 14 新特性及具体应用

Java 14(2020年3月发布)引入了多项重要特性:1)instanceof模式匹配(预览)可直接声明类型变量;2)文本块正式支持多行字符串;3)Records(预览)简化不可变数据类定义;4)Switch表达式正式支持箭头语法和返回值;5)NullPointerException增强明确提示空指针位置。此外还包含打包工具、G1优化等改进。这些特性显著简化代码编写,提升开发效率,其中预览特性需通过--enable-preview启用。建议开发者评估适用场景,逐步采用新特性。

2025-08-20 13:58:30 392

原创 Java 13 新特性及具体应用

Java 13主要特性摘要:1.文本块简化多行字符串处理,支持JSON/HTML等结构化文本;2.Switch表达式优化多分支逻辑,支持箭头语法和yield返回值;3.动态CDS归档加速JVM启动;4.ZGC改进自动释放闲置内存;5.Socket API底层重构。这些更新提升了代码可读性和系统性能,其中文本块和Switch表达式需启用预览功能。

2025-08-20 11:37:25 565

原创 Java 12 新特性及具体应用

Java 12于2019年发布,主要特性包括:1)Switch表达式简化多分支逻辑;2)新增字符串方法indent()和transform()改进文本处理;3)Files.mismatch()高效比较文件差异;4)紧凑数字格式化提升数据可读性;5)JVM增强如ShenandoahGC降低延迟。这些改进优化了代码简洁性、文本处理能力和系统性能,其中Switch表达式需启用预览功能。版本重点提升了开发效率和运行时性能。

2025-08-18 20:27:17 527

原创 Java 11 新特性及具体应用

Java11作为长期支持版本(LTS)带来多项重要改进:1)增强局部变量推断,支持Lambda参数使用var;2)新增字符串处理方法如isBlank()、repeat()等;3)标准化HTTP客户端API,支持HTTP/2;4)支持直接运行单文件源码;5)引入Epsilon无操作垃圾收集器;6)集成FlightRecorder性能监控;7)优化嵌套类访问控制;8)默认支持TLS1.3协议。这些改进涵盖语言特性、API标准化和性能优化,显著提升开发效率和运行时性能。

2025-08-18 20:21:03 542

原创 Java 10 新特性及具体应用

Java 10带来5大核心改进:1)局部变量类型推断(var)简化代码;2)不可修改集合(List.copyOf()等)确保线程安全;3)并行Full GC减少G1停顿时间;4)应用类数据共享(CDS)提升启动速度;5)线程局部管控优化自旋锁性能。典型应用包括:使用var声明集合、用copyOf封装配置数据、CDS加速微服务启动。这些改进显著提升了代码简洁性、运行效率和安全性。

2025-08-16 23:29:41 576

原创 Java 9 新特性及具体应用

Java 9核心特性摘要:1.模块系统实现工程化封装,解决依赖冲突;2.JShell提供交互式编程体验;3.集合工厂方法简化不可变集合创建;4.接口支持私有方法增强内聚性;5.Stream API新增takeWhile/dropWhile操作;6.HTTP/2客户端支持现代网络协议;7.多版本JAR实现跨版本兼容。该版本通过模块化重构和工具链升级,显著提升了Java在大型项目中的可维护性和开发效率,特别适合微服务架构下的复杂系统开发。

2025-08-16 23:23:56 373

原创 Java 8 新特性介绍

Java8带来了革命性的新特性,包括Lambda表达式、函数式接口、Stream API等核心功能。这些特性显著提升了代码简洁性和开发效率,如Lambda替代匿名内部类、方法引用简化代码、Optional优雅处理null值。同时,Stream API支持声明式数据处理,新的日期时间API解决线程安全问题,并行数组排序提升性能。这些改进使Java更适合现代高并发和函数式编程场景,同时保持代码健壮性。Java8通过这些创新特性,实现了语言现代化的重要跨越。

2025-08-14 22:48:02 317

原创 Java中Record的应用

Java Record是Java 14引入的不可变数据载体,能自动生成模板代码(如getter、equals等),简化POJO类的编写。它适用于DTO、多返回值方法等场景,支持模式匹配和紧凑构造器验证。相比传统POJO,Record代码量减少约70%,但不可继承和修改。Java 21中可与密封接口配合实现更安全的类型设计。注意它不适合可变状态需求,但可通过静态方法扩展功能。

2025-08-14 22:42:54 538

原创 Spring Boot项目调用第三方接口的三种方式比较

SpringBoot调用第三方接口的三种方式对比:RestTemplate提供简单同步调用但性能有限;WebClient支持异步非阻塞,适合高并发场景但学习成本高;FeignClient以声明式简化微服务调用,但依赖SpringCloud生态。选择应基于项目需求:传统应用用RestTemplate,高并发系统选WebClient,微服务架构优先FeignClient。实际开发中需结合性能测试选择最优方案。

2025-08-13 21:30:10 755

原创 Spring Boot项目通过Feign调用三方接口的详细教程

本文详细介绍了SpringBoot项目中通过Feign调用第三方接口的完整流程。主要内容包括:1)环境准备和Feign依赖配置;2)定义Feign客户端接口和DTO对象;3)服务层调用示例;4)高级配置(请求头、超时、日志);5)错误处理机制;6)测试调用方法。文章还提供了常见问题解决方案,如404错误、超时设置等,并建议使用Postman预先测试接口可用性。通过注解配置和代码示例,帮助开发者快速掌握Feign客户端的使用技巧。

2025-08-13 21:24:24 693

原创 Spring Boot项目通过RestTemplate调用三方接口详细教程

本文详细介绍了在SpringBoot项目中通过RestTemplate调用第三方API的完整流程。内容涵盖从基础配置到高级封装,包括:1)RestTemplate的Bean配置与自定义;2)GET/POST请求的实现方法;3)JSON响应处理与异常捕获;4)控制器集成与测试方案。特别提供了面向生产的抽象设计方案,支持同步/异步调用、完整日志记录和统一异常处理。文章还对比了SpringBoot2.x与3.x的差异,并包含线程安全、性能优化等最佳实践,帮助开发者构建健壮的API调用服务。

2025-08-12 23:28:12 830

原创 Spring Boot项目使用WebClient调用第三方接口详细教程

本文详细介绍了在SpringBoot项目中使用WebClient调用第三方API的完整流程。主要内容包括:1. 添加spring-boot-starter-webflux依赖配置;2. 创建WebClient实例的两种方式(Bean全局配置和直接创建);3. 构建GET/POST请求及设置URL、头信息、查询参数和请求体;4. 处理响应(同步/异步方式)和错误处理机制;5. 提供完整示例代码和常见问题解决方案。文章还介绍了抽象化设计的最佳实践,包括全局WebClient配置、通用APIService封装、业

2025-08-12 23:02:20 1304

原创 Spring Boot项目中调用第三方接口

本文介绍了在Spring Boot项目中调用第三方RESTful API的完整流程。主要包括四个步骤:首先添加Spring Boot Web或WebFlux依赖;然后配置RestTemplate(同步)或WebClient(异步)客户端;接着在Service层实现具体的接口调用逻辑;最后通过Controller暴露API端点。文章对比了两种HTTP客户端的优缺点,并强调了异常处理、请求头设置、性能优化等重要注意事项,为开发者提供了灵活可靠的第三方接口集成方案。

2025-08-12 22:29:17 811

原创 MySQL 处理重复数据详细说明

摘要:MySQL提供了完整的重复数据处理方案,包括预防、检测、清理和合并四个阶段。预防阶段通过主键约束、唯一索引和特殊插入语句(INSERT IGNORE/REPLACE)避免数据重复;检测阶段使用GROUP BY和自连接查询识别重复项;清理阶段采用临时表法或ROW_NUMBER()窗口函数删除重复数据;合并阶段通过ON DUPLICATE KEY UPDATE实现数据更新。关键注意事项包括操作性能优化、备份策略和NULL值处理。合理运用这些方法可有效解决MySQL中的重复数据问题,确保数据完整性和查询效率

2025-08-10 17:58:43 987

原创 MySQL 序列使用详细说明

MySQL通过AUTO_INCREMENT属性实现序列功能,自动生成唯一整数值作为主键。创建表时指定AUTO_INCREMENT列(必须为主键或唯一键),插入数据时MySQL自动分配递增的值。使用LAST_INSERT_ID()获取最新生成的ID,通过ALTERTABLE重置序列值。注意:每个表只能有一个自增列,删除行可能导致序列值不连续,且手动指定值可能引发冲突。建议让MySQL自动管理序列值,避免性能问题。

2025-08-10 17:54:42 727

原创 MySQL 元数据详细说明

MySQL元数据是描述数据库结构和属性的信息,存储在INFORMATION_SCHEMA虚拟数据库中。主要包含:1)数据库级元数据(SCHEMATA表);2)表级元数据(TABLES表),含存储引擎、行数等;3)列级元数据(COLUMNS表),含数据类型、约束等;4)索引元数据(STATISTICS表),含选择性指标;5)权限元数据(USER_PRIVILEGES表)。通过标准SQL查询可获取这些只读信息,但需注意性能影响和存储引擎差异。元数据对数据库分析、优化和管理工具开发至关重要。

2025-08-09 17:53:01 657

原创 MySQL 复制表详细说明

MySQL提供了多种表复制方法:1.完整复制(结构+数据+约束)使用CREATE TABLE LIKE+INSERT SELECT;2.快速复制(无约束)通过CREATE TABLE AS SELECT;3.选择性复制数据可指定列和条件;4.跨数据库复制需注明库名;5.仅复制结构使用CREATE TABLE LIKE。注意事项包括自增字段处理、存储引擎一致性、外键约束处理和大表分批操作。示例演示了完整克隆表的过程,建议大表在低峰期操作并分析性能。

2025-08-09 17:44:47 488

原创 MySQL 临时表详细说明

MySQL临时表是存储在内存或磁盘的临时性数据表,仅存在于当前会话中,连接断开时自动销毁。分为局部(#前缀)和全局(##前缀)两种,具有会话隔离性。通过CREATE TEMPORARY TABLE创建,支持常规SQL操作,常用于复杂查询优化、ETL处理和递归查询等场景。使用时需注意命名冲突、事务行为及内存限制,建议添加索引、控制数据量,并在存储过程中显式删除临时表以优化性能。超过tmp_table_size(默认16MB)时会自动转为磁盘存储。

2025-08-09 17:42:21 853

原创 MySQL 索引详细说明

MySQL索引详解:提升查询性能的核心机制 MySQL索引是提高数据库查询效率的关键数据结构,通过预排序机制避免全表扫描。本文系统介绍了索引的基本概念、类型(B树、哈希、全文等)及工作原理,详细解析了索引的创建方法和使用场景。重点分析了索引的优缺点:虽然能显著提升查询速度(O(logn) vs O(n)),但会增加存储空间和写操作开销。文章提供了索引最佳实践建议,包括复合索引设计、维护策略和性能监控方法,并通过订单表示例说明如何优化查询。

2025-08-08 16:50:06 672

原创 MySQL 正则表达式详细说明

MySQL支持正则表达式(REGEXP/RLIKE)进行复杂模式匹配,提供基本操作符和8.0+新增函数(REGEXP_LIKE,REGEXP_REPLACE等)。常用模式包括字符类(.、^、$)、量词(*、+、?)、分组(|、())等。使用时需注意大小写敏感、性能影响、版本兼容性及转义规则(需双重转义)。正则表达式适合数据验证和提取,但应避免在大表上频繁使用,建议先测试再应用。

2025-08-08 16:46:01 494

原创 MySQL NULL 值处理详细说明

MySQL NULL值处理摘要 NULL值表示缺失或未知数据,在MySQL中有特殊处理方式。关键点包括:1) NULL不等于任何值,包括自身;2) 比较需用IS NULL/IS NOT NULL而非等号;3) 使用COALESCE、IFNULL等函数处理NULL值;4) 聚合函数自动忽略NULL值;5) 唯一索引允许NULL值但视为不同值。最佳实践建议尽量避免使用NULL,必要时使用默认值约束,查询时正确使用IS NULL条件,并对频繁查询的NULL列建立索引。通过合理处理NULL值可确保数据完整性和查询准

2025-08-08 16:19:20 999

原创 MySQL 连接的使用详细说明

MySQL连接操作详解:MySQL的JOIN功能通过公共列关联多表数据,支持多种连接类型。INNER JOIN返回匹配行,LEFT/RIGHT JOIN保留一侧所有行,FULL JOIN(需UNION模拟)保留全部数据,CROSS JOIN生成笛卡尔积。连接语法为SELECT...FROM表1 JOIN表2 ON条件,建议在连接列创建索引优化性能。典型应用包括查询关联数据(如客户订单)和层次结构处理。使用时需注意避免笛卡尔积、列名冲突,推荐结合EXPLAIN分析执行计划。

2025-08-08 10:14:44 1253

空空如也

空空如也

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

TA关注的人

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