JDK8升级到JDK21 & SpringCloud升级

JDK8升级到JDK21 & SpringCloud升级

效果

内存占用率降低50%,启动速度提升40%。

升级

springboot 3.5.5
springcloud 2025.0.0和4.3.0
springcloudalibaba 2023.0.3.3
knife4j 4.5.0
mybatis-plus-boot-starter 3.5.14
mybatis-spring 3.0.5
javax.servlet.http.HttpServletRequest等都改为jakarta.servlet.http.HttpServletRequest

依赖包

<!--依赖版本管理--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <skipTests>true</skipTests> <!-- custom variable --> <profile.env>local</profile.env> <!-- Dependency version --> <spring.boot.version>3.5.5</spring.boot.version> <nacos.version>2.2.3</nacos.version> <lombok.version>1.18.30</lombok.version> <slf4j.version>2.0.17</slf4j.version> <hutool.version>5.8.24</hutool.version> <commons-lang3.version>3.8</commons-lang3.version> <!-- <nacos.config.spring.boot.starter.version>0.2.7</nacos.config.spring.boot.starter.version>--> <!-- <nacos.discovery.spring.boot.starter.version>0.2.7</nacos.discovery.spring.boot.starter.version>--> <spring-cloud-dependencies.version>2025.0.0</spring-cloud-dependencies.version> <spring-cloud-alibaba-dependencies.version>2023.0.3.3</spring-cloud-alibaba-dependencies.version> <knife4j.version>4.5.0</knife4j.version> <httpclient.version>5.5</httpclient.version> <druid.version>1.2.27</druid.version> <mybatis-plus-boot-starter-version>3.5.14</mybatis-plus-boot-starter-version> <swagger-version>2.2.41</swagger-version> <jackson.version>2.20.0</jackson.version> <io.micrometer.version>1.6.3</io.micrometer.version> <xxl-job.version>2.2.0</xxl-job.version> <kubernetes-client.version>5.12.2</kubernetes-client.version> <kubernetes-model-common.version>5.12.2</kubernetes-model-common.version> <!-- <kubernetes.client-java-spring-integration.version>12.0.0</kubernetes.client-java-spring-integration.version>--> <kubernetes.client-java-spring-integration.version>13.0.2</kubernetes.client-java-spring-integration.version> <caffeine.version>2.9.3</caffeine.version> <commons-text.version>1.10.0</commons-text.version> <jedis.version>3.3.0</jedis.version> <!-- Plugins version --> <spring-boot-maven-plugin.version>3.5.5</spring-boot-maven-plugin.version> <maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version> <maven-clean-plugin.version>3.1.0</maven-clean-plugin.version> <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> <maven-resources-plugin.version>3.0.2</maven-resources-plugin.version> <maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version> <maven-install-plugin.version>2.5.2</maven-install-plugin.version> <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <dockerfile-maven-plugin.version>1.4.13</dockerfile-maven-plugin.version> <maven-jaxb2-plugin.version>0.11.0</maven-jaxb2-plugin.version> <easyexcel.version>2.2.6</easyexcel.version> <commons-validator.version>1.7</commons-validator.version> <spring-boot-starter-freemarker.version>2.6.4</spring-boot-starter-freemarker.version> <elasticsearch.version>8.11.0</elasticsearch.version> <mybatis-spring.version>3.0.5</mybatis-spring.version> </properties> <!-- 公共依赖 版本管理--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba-dependencies.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud-dependencies.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>4.3.0</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>

Read more

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展:插件式开发方式 * 🤔 什么是插件式开发? * 🧩 为何选择插件式开发?—— 解耦与扩展的艺术 * 1. 高度解耦 * 2. 极致的扩展性 * 3. 增强可维护性 * 4. 支持动态加载与卸载 * 🏗️ 插件系统的核心架构 * 💻 实践篇:C# 下的插件式开发 * 1. 定义插件契约 * 2. 实现一个具体插件 * 3. 构建宿主程序(插件加载器) * 应用案例:可扩展的日志系统 * ⚙️ 实践篇:C++ 下的插件式开发 * 1. 定义插件契约 * 2. 实现一个具体插件 * 3. 构建宿主程序(插件加载器) * 📊 C# 与 C++ 实现对比 * ⚠️ 挑战与注意事项 * 🎯 总结:何时使用插件式架构? 🚀在软件工程的漫长演进中,我们始终在追求一个核心目标:构建稳定而灵活的系统。一个优秀的软件架构,如同人体的骨骼,既要坚实稳固,又要具备生长与适应的能力。

By Ne0inhk
华为OD技术面八股文_C++_01

华为OD技术面八股文_C++_01

文章目录 * C语言和C++的区别 * C++11引入哪些新特性 * 什么是面向对象?面向对象的三大特性 * malloc和new的区别 * delete和free的区别 * delete和delete[]的区别 * 什么是虚函数?什么是纯虚函数 * 什么是虚函数表?什么是虚函数指针? * 介绍一下虚函数实现机制 * 构造函数和构析函数能不能写为虚函数,为什么 * 说一下构造、析构函数的调用顺序 C语言和C++的区别 1. C++有新增的关键字和语法,还允许自定义命名空间。 2. C++新增类的概念,C语言中只有struct的概念。C++中添加访问权限概念,struct 的默认访问权限和继承权限都是 public,但是 class 的默认访问权限和默认继承权限都是 private. 3. C++引入了类、封装、继承、多态、模板、重载、异常处理机制等特性。而C没有 4.

By Ne0inhk
【C++】模板的两大特性

【C++】模板的两大特性

文章目录 * 前言 * 1. 关于 typename 的使用场景 * 2. 模板的分离编译问题 * 2.1 简述程序编译链接的过程 * 2.1.1 预处理 * 2.1.2 编译 * 2.1.3汇编 * 2.1.4 链接 * 2.2 模板分离编译为什么会链接报错 * 2.2.1 什么是分离编译 * 2.2.2 模板分离编译存在的问题 * 3. 解决办法 前言 本文探讨了C++模板编程中的两个关键问题。第一部分介绍了typename在模板中的特殊使用场景,指出当模板参数访问内嵌类型时必须使用typename关键字来消除编译器歧义。第二部分分析了模板分离编译导致链接错误的原因,通过对比普通函数和模板函数的编译链接过程,解释了模板定义必须放在头文件中才能被实例化的原理。文章结合代码示例和编译链接过程图解,帮助读者理解模板编译机制和常见错误的解决方法。 1.

By Ne0inhk