Spring WebFlux与Quarkus实战:云原生微服务开发的两大主流框架深度解析
简介
云原生与微服务架构已成为企业数字化转型的核心驱动力,而Spring WebFlux和Quarkus作为两大主流框架,各自提供了独特的解决方案来应对高并发、低延迟和快速启动的挑战。本文将从零开始,详细讲解如何使用这两个框架构建高性能的云原生微服务,并通过实际案例展示它们在企业级应用中的优势与适用场景。无论你是Spring框架的忠实用户,还是正在寻找云原生新选择的开发者,本文都将为你提供有价值的参考。
一、云原生与微服务:概念解析与技术价值
1.1 云原生架构的核心要素
云原生技术是一种现代化的软件开发和部署方法,旨在充分利用云计算的优势,提高应用程序的可伸缩性、弹性和可靠性。云原生计算基金会(CNCF)将其定义为:在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用的技术集合。这些技术包括容器、服务网格、微服务、不可变基础设施和声明式API,它们共同构建了容错性好、易于管理和便于观察的松散耦合系统。
云原生架构的核心要素可以归纳为以下几点:
- 容器化技术:通过Docker等容器技术实现应用与基础设施的解耦,提供环境一致性,提高资源利用率。
- 微服务架构:将单体应用拆分为多个独立、可扩展的小服务,每个服务专注于单一业务能力。
- 服务网格:如Istio等,提供服务间通信的智能路由、负载均衡和故障恢复能力。
- 持续交付:通过CI/CD流水线实现自动化部署,支持频繁且可预测的系统更新。
- DevOps文化:打破开发与运维的界限,提高协作效率,实现快速迭代。
这些要素共同构成了一个高效、灵活且易于维护的云原生应用架构,使得企业能够快速响应市场变化,提升业务敏捷性。
1.2 微服务架构的起源与发展
微服务架构的概念最早由马丁・福勒(Martin Fowler)与詹姆斯・刘易斯(James Lewis)于2014年共同提出。它脱胎于面向服务架构(SOA),但进一步强调去中心化和轻量化,旨在解决单体应用在功能膨胀后出现的开发效率低下、维护困难、部署缓慢等问题。
微服务架构的核心思想是将应用拆解为一系列松耦合的微型服务,每个服务专注于单一业务能力,通过标准化接口进行通信,以此实现敏捷开发、灵活扩展和高容错性。与传统的单体架构相比,微服务架构具有以下优势:
- 服务自治:每个微服务拥有独立的代码库、数据存储和部署单元,甚至可由不同团队独立维护。
- 技术异构性:打破传统单体架构对技术栈的限制,允许各服务根据需求选择最合适的技术。
- 弹性扩展:基于容器化和编排工具,可针对特定服务进行水平扩展,避免资源浪费。
- 故障隔离:服务间的独立运行机制确保单个服务故障不会引发级联崩溃。
随着微服务架构的不断发展,它已成为现代软件开发的主流模式。据Gartner预测,到2025年,超过95%的新应用将采用云原生技术构建,其中微服务架构占据重要地位。
1.3 云原生与微服务的技术融合
云原生与微服务的结合代表了现代应用开发的最新趋势。容器化技术使得微服务可以以轻量级、标准化的方式部署;服务网格提供了微服务间通信的统一治理;持续交付确保微服务可以快速迭代和更新;DevOps文化则打破了传统开发与运维的界限,实现了更高效的协作。
这种融合带来的技术价值主要体现在以下几个方面:
技术价值 | 传统单体架构 | 云原生微服务架构 |
---|---|---|
启动速度 | 较慢(通常需要数秒甚至分钟) | 极快(容器启动时间可缩短至毫秒级) |
内存占用 | 较高(JVM启动后占用大量内存) | 较低(通过容器化和编译时优化减少资源消耗) |
扩展性 | 有限(需整体部署,扩展难度大) | 高(可针对特定服务进行水平扩展) |
故障隔离 | 差(单点故障影响整个系统) | 好(服务间独立运行,故障影响范围小) |
开发效率 | 低(团队协作受限,部署周期长) | 高(团队可并行开发,快速部署) |
在实际应用中,这种技术融合已经为企业带来了显著的效益。例如,某电商平台通过云原生微服务架构将"双11"期间的崩溃率降低了90%;光大银行通过容器云PaaS平台实现互联网化转型,研发效率提升50%;中石油勘探云平台整合20+子系统,数据共享效率提升70%。
二、Spring WebFlux与Quarkus:两大主流框架对比
2.1 Spring WebFlux的技术特点与优势
Spring WebFlux是Spring框架提供的响应式编程支持,旨在构建异步、非阻塞且基于事件驱动的响应式应用程序。与传统的Spring MVC相比,Spring WebFlux在高并发场景下表现更佳,具有以下技术特点:
编程模型:Spring WebFlux采用反应式编程模型,基于Reactor库实现,支持Flux(0-N个元素的流)和Mono(0-1个元素的流)两种响应式类型。
线程管理:采用基于事件循环的非阻塞线程模型,少量线程可处理大量请求,显著提高并发能力。
性能表现:在高并发场景下,Spring WebFlux的吞吐量和资源利用率远高于传统阻塞式框架。
生态兼容性:与Spring Boot和Spring Cloud生态系统无缝集成,支持丰富的企业级功能。
Spring WebFlux的适用场景包括高并发Web服务、实时数据处理、流媒体应用等。在这些场景中,Spring WebFlux能够充分发挥其异步非阻塞的优势,提供更高效的资源利用和更流畅的用户体验。
2.2 Quarkus的技术特点与优势
Quarkus是Red Hat开源的一个现代Java框架,专为Kubernetes和GraalVM设计,具有以下技术特点:
快速启动:通过编译时优化和GraalVM原生镜像支持,启动时间可缩短至毫秒级,特别适合云原生环境。
低内存占用:相比传统Java应用,内存占用显著降低,适合资源受限的环境。
云原生优先:专为云环境设计,与Kubernetes和Istio等云原生工具深度集成。
无服务器支持:支持AWS Lambda、Google Cloud Functions等无服务器平台,冷启动时间极短。
Quarkus的适用场景包括云原生微服务、无服务器函数、边缘计算应用等。在这些场景中,Quarkus能够充分发挥其快速启动和低资源消耗的优势,提供更高效的部署和运行体验。
2.3 Spring WebFlux与Quarkus的性能对比
根据最新的性能测试数据,Spring WebFlux与Quarkus在不同场景下的表现如下:
高并发场景:在处理大量并发请求时,Spring WebFlux凭借其异步非阻塞模型表现出色。例如,在模拟1000个并发用户访问/Load端点的测试中,Spring WebFlux(WebFlux模式)的吞吐量达到631.6/s,而标准Spring MVC仅为390.1/s。
启动速度:Quarkus在启动速度方面具有显著优势。使用GraalVM原生镜像,Quarkus应用的启动时间可缩短至毫秒级,而Spring Boot应用通常需要几秒钟。
内存占用:Quarkus原生镜像模式下内存占用极低,特别是在处理无状态服务时。例如,某金融系统使用Quarkus原生镜像部署核心交易系统,内存占用降低了63%。
冷启动优化:Quarkus特别适合无服务器场景,其原生镜像模式下的冷启动时间可降至毫秒级,而Spring Boot需要更长时间。
企业级功能支持:Spring WebFlux在企业级功能支持方面更为成熟,如Spring Cloud、Spring Security等,而Quarkus在这方面仍在快速发展中。
开发体验:Spring WebFlux拥有丰富的文档和社区支持,学习曲线相对平缓;Quarkus则提供了热部署和Dev Mode等特性,提高了开发效率。
性能指标 | Spring WebFlux | Quarkus |
---|---|---|
启动时间 | 秒级 | 毫秒级(原生镜像) |
内存占用 | 较高 | 极低(原生镜像) |
高并发吞吐量 | 优秀(非阻塞模型) | 优秀(与Spring WebFlux相当) |
无服务器冷启动 | 较长 | 极短(原生镜像优势) |
企业级功能支持 | 成熟(Spring Boot/Cloud生态系统) | 发展中(逐步完善) |
开发体验 | 丰富文档,社区支持 | 热部署,Dev Mode,开发效率高 |
三、实战开发:使用Spring WebFlux构建响应式微服务
3.1 项目创建与环境准备
步骤1:创建Spring Boot项目
使用Spring Initializr创建一个基于Spring Boot 3.5的项目,选择以下依赖:
- Spring WebFlux
- Spring Data MongoDB Reactive
- Spring Boot Starter Native
访问https://start.spring.io/,配置如下:
- Project: Maven Project
- Language: Java
- Group: com.example
- artifact: reactive-service
- Name: reactive-service
- Description: A reactive Spring Boot service
- Package name: com.example.reactive-service
- Java version: 21
- Spring Boot version: 3.5.0
- Dependencies: WebFlux, Data MongoDB Reactive, Starter Native
步骤2:添加Maven依赖
在pom.xml中添加以下依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb-reactive</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-native</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>io.projectreactor</groupId><artifactId>reactor-test</artifactId><scope>test</scope></dependency>
</dependencies>
步骤3:配置Spring Native
在pom.xml中添加Spring Native构建插件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><image><name>reactive-service</name></image></configuration></plugin></plugins>
</build>
步骤4:添加GraalVM提示文件
创建src/main/resources/META-INF/spring/aot/reflect-config.json:
[{"name": "com.example.reactive-service.model.User","allDeclaredConstructors": true,"allPublicMethods": true,"allPublicFields": true}
]
步骤5:配置MongoDB
在application.properties中添加MongoDB配置:
spring.data.mongodb.uri=mongodb://localhost:27017/ reactive-service
spring.data MongoDB_reactive=true
步骤6:配置虚拟线程(Project Loom)
在application.properties中启用虚拟线程支持:
spring塌线程. enable= true
spring塌线程. task-executor= virtual
步骤7:创建启动类
创建主启动类:
@SpringBootApplication
public class ReactiveServiceApplication {public static void main(String[] args) {SpringApplication.run(ReactiveServiceApplication.class, args);}@BeanRouterFunction<ServerResponse> router() {return RouterFunctions.nest path("/api",RouterFunctions.route GET("/hello"), req -> ServerResponse.ok().body("Hello World!"));}
}
3.2 实体类与MongoDB操作
步骤1:创建User实体类
@Data
@Document("users")
public class User {@Idprivate String id;private String name;private String email;private String phone;private String address;private LocalDateTime created_at;private LocalDateTime updated_at;
}
步骤2:创建ReactiveMongoRepository接口
public interface UserRepository extends ReactiveMongoRepository<User, String> {Flux<User> findByEmail Contains(String email);Mono<User> findByPhone(String phone);
}
步骤3:创建MongoDB操作服务
相关文章:
Spring WebFlux与Quarkus实战:云原生微服务开发的两大主流框架深度解析
简介 云原生与微服务架构已成为企业数字化转型的核心驱动力,而Spring WebFlux和Quarkus作为两大主流框架,各自提供了独特的解决方案来应对高并发、低延迟和快速启动的挑战。本文将从零开始,详细讲解如何使用这两个框架构建高性能的云原生微服务,并通过实际案例展示它们在企…...
成功案例丨从草图到鞍座:用先进的发泡成型仿真技术变革鞍座制造
案例简介 在鞍座制造中,聚氨酯泡沫成型工艺是关键环节,传统依赖实验测试的方法耗时且成本高昂。为解决这一问题,意大利自行车鞍座制造商 Selle Royal与Altair合作,采用Altair Inspire PolyFoam软件进行发泡成型仿真。 该工具帮助团…...
学习日志09 java
我要(ง •_•)ง!! 1 面向对象里面的编程的属性,其实就是变量啦 在面向对象编程里,“属性”(Attribute)也被叫做 “成员变量” 或者 “字段”(Field),指的是类中用来存…...
深入解析Spring Boot与微服务架构:从入门到实践
深入解析Spring Boot与微服务架构:从入门到实践 引言 随着云计算和分布式系统的普及,微服务架构已成为现代软件开发的主流模式。Spring Boot作为Java生态中最受欢迎的框架之一,为开发者提供了快速构建微服务的强大工具。本文将深入探讨Spri…...
25考研经验贴(11408)
声明:以下内容都仅代表个人观点 数学一(130) 25考研数学一难度介绍:今年数学一整体不难,尤其是选填部分,大题的二型线面和概率论大题个人感觉比较奇怪,其他大题还是比较容易的。.26如何准备&a…...
Linux运行时的参数、命令、网络、磁盘参数和日志监控
一、监控 1. free 功能:用于查看系统内存使用情况,包括物理内存总量、已用内存、空闲内存、缓冲区(buffer)和缓存(cache)占用,以及交换内存(swap)的使用与剩余情况。常…...
Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?
引言 在Spring Boot开发中,你是否遇到过这样的错误信息? The dependencies of some of the beans in the application context form a cycle 这表示你的应用出现了循环依赖。尽管Spring框架通过巧妙的机制解决了部分循环依赖问题,但在实际开…...
如何打造MVP(最小可行性产品)(MVP=核心功能+快速验证+用户反馈+持续迭代)
文章目录 **一、MVP的核心原则**1. **聚焦核心价值**2. **快速迭代**3. **低成本验证** **二、MVP的打造步骤****1. 定义目标用户和核心需求****2. 确定MVP的核心功能**- **筛选关键功能**:1. 用户是否愿意为这个功能付费?2. 实现该功能的技术难度和成本…...
conda init执行了还是不好用
按照gpt的方法,还是方法一:以管理员身份运行 PowerShell 并设置执行策略 好用 你遇到的问题是典型的 Conda 环境激活失败 错误,提示如下: CondaError: Run conda init before conda activate但你已经运行了 conda initÿ…...
crontab 定时任务不执行问题排查
*/5 * * * * sh /data03/jq/sparkjob.sh 定时任务不执行! Cron默认丢弃输出,错误信息无法查看。 将输出和错误重定向到日志文件: /bin/sh /data03/jq/sparkjob.sh >> /tmp/sparkjob.log 2>&1 检查日志文件 /tmp/sparkjob.log 定…...
require/exports 或 import/export的联系和区别,各自的使用场景
以下是 require/exports(CommonJS)与 import/export(ES6 Modules)的对比分析及使用场景说明: 一、核心联系 模块化目标 两者都用于实现代码模块化,解决全局作用域污染和依赖管理问题。 跨环境适配…...
如何更改远程桌面连接的默认端口?附外网访问内网计算机方法
远程连接端口根据协议和场景不同有所差异,以下是常见远程连接端口的设置及修改方法,同时附外网访问内网计算机操作。 一、Windows远程桌面默认端口 默认端口:3389(TCP协议),用于Windows远程桌面服务&…...
模拟jenkins+k8s自动化部署
参考 Jenkins+k8s实现自动化部署 - 掘金 手把手教你用 Jenkins + K8S 打造流水线环境 - 简书 安装插件 调整插件升级站点 (提高插件下载速度) 默认地址 https://updates.jenkins.io/update-center.json 新地址 http://mirror.xmission.com/jenkins/updates/update-center.json …...
Jenkins教程
参考 Jenkins 用户手册 Jenkins User Documentation 在项目创建Jenkinsfile文件 添加分支源 报错 不自动拉取分支,改为手工指定分支 又报了一个错, 解决方法,参考: Jenkins中连接Git仓库时提示:无法连接仓库:Error performing git command: git ls-remote -h_霸道流…...
从验证码绕过到信息轰炸:全面剖析安全隐患与防范策略
在数字化交互场景中,验证码作为区分人类操作与自动化程序的核心屏障,广泛应用于用户身份核验、操作权限确认等关键环节。其设计初衷是通过人机识别机制,保障信息系统交互的安全性与可控性。然而,当验证码验证机制出现异常突破&…...
CSS:颜色的三种表示方式
文章目录 一、rgb和rgba方式二、HEX和HEXA方式(推荐)三、hsl和hsla方式四、颜色名方式 一、rgb和rgba方式 10进制表示方法 二、HEX和HEXA方式(推荐) 就是16进制表示法 三、hsl和hsla方式 语法:hsl(hue, satura…...
math toolkit for real-time development读书笔记一-三角函数快速计算(1)
一、基础知识 根据高中知识我们知道,很多函数都可以用泰勒级数展开。正余弦泰勒级数展开如下: 将其进一步抽象为公式可知: 正弦和余弦的泰勒级数具有高度结构化的模式,可拆解为以下核心特征: 1. 符号交替特性 正弦级…...
超市营业额数据分析
1.推出5名销冠 2.新领导想看看他15天以来的业绩总增长情况,以及增长额前3的柜台 3.把所有柜台的销售额分为3个等级 import pandas as pd import matplotlib.pyplot as plt import numpy as np# 设置中文字体和显示方式 plt.rcParams.update({font.sans-serif&...
labelimg安装及使用指南(yolo)
1.安装 首先要安装Anaconda,然后打开Anaconda Prompt 构建一个新的虚拟环境(注:虚拟环境的python的版本应在3.9及以下,不然会在运行中报错) conda create -n label python3.9 其中这里label只是一个名字,…...
在 Ubuntu 系统中,将 JAR 包安装为服务
在 Ubuntu 系统中,将 JAR 包安装为服务可以通过 systemd 来实现。以下是详细的操作步骤: 准备工作 确保 JAR 文件路径和 Java 运行时环境已准备好。验证 Java 是否可用: java -version创建 systemd 服务文件 systemd 的服务文件通常位于 …...
我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近,我萌生了一个念头:能不能自己动手做一个功能丰富的 PDF 工具箱?市面上…...
WebSocket聊天室的简单制作指南
一、前言 最近在学习WebSocket技术,做了一个简单的聊天室Demo。这个项目虽然不大,但涵盖了WebSocket的核心功能实现。下面我将详细介绍这个聊天室的实现过程,希望能帮助到同样想学习WebSocket的朋友们。 二、技术选型 后端:Spri…...
非国产算力DeepSeek 部署中的常见问题及解决方案
随着大语言模型(LLM)在企业级应用场景中的快速推进,DeepSeek 一体机凭借其高性能推理能力和便捷的系统集成优势,正逐步成为多行业智能化转型的重要基础设施。然而,在实际部署过程中,技术团队常常会遭遇一系…...
大数据技术的主要方向及其应用详解
文章目录 一、大数据技术概述二、大数据存储与管理方向1. 分布式文件系统2. NoSQL数据库3. 数据仓库技术 三、大数据处理与分析方向1. 批处理技术2. 流处理技术3. 交互式分析4. 图计算技术 四、大数据机器学习方向1. 分布式机器学习2. 深度学习平台3. 自动机器学习(AutoML) 五、…...
Maven使用详解:Maven的概述(二)
一、核心定义与功能 Maven是由Apache软件基金会开发的开源项目管理工具,专为Java项目设计,主要用于自动化构建、依赖管理和项目标准化。其核心功能包括: 依赖管理:通过pom.xml文件声明依赖库,自动从中央仓库下载并管…...
在 Odoo 18 表单视图中使用 JS 类的方法
在 Odoo 18 表单视图中使用 JS 类的方法 一、模块结构创建 要为特定视图在 JavaScript 里注册一个类。后续在任意表单视图中添加相同类时,自定义视图就会被注入该表单。 具体要做的是: 把自定义视图创建出来当作模板。将视图注册成一个组件。把它和表…...
ubuntu 更新华为源
1. 备份配置文件 sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak 2. 修改source.list 文件,将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com,可以参考如下命令: # 第一条指令 s…...
如何安装cuda版本的pytorch
为什么安装Cuda 对于做深度学习研究的小伙伴本,当我们处理大量的数据时,尤其是图像数据时,过量的数据会导致我们的CPU运行压力过大,占用大量的运行内存,而且用CPU进行模型训练,训练的时间会很长࿰…...
国际名校教育大模型的构建与教学应用实践
一、引言 全球AI数字教育正在快速发展,人工智能技术已成为推动教育变革的核心驱动力。从个性化学习到智能评测,从虚拟助教到自适应教学系统,AI正在重塑教育的形态。在此背景下,国际顶尖高校纷纷布局教育大模型,探索AI与教学的深度融合,以提升教育质量、优化学习体验。与…...
postgres的docker版本安装
postgres的docker版本安装 背景 测试和开发需要用到postgres,越快越好,想到了用docker进行安装。 sudo docker run -d -p 5432:5432 --restartalways -v /home/docker/postgre/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD123456 --name p…...
知识蒸馏实战:用PyTorch和预训练模型提升小模型性能
在深度学习的浪潮中,我们常常追求更大、更深、更复杂的模型以达到最先进的性能。然而,这些“庞然大物”般的模型往往伴随着高昂的计算成本和缓慢的推理速度,使得它们难以部署在资源受限的环境中,如移动设备或边缘计算平台。知识蒸…...
【HTML 全栈进阶】从语义化到现代 Web 开发实战
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...
Transformer 模型与注意力机制
目录 Transformer 模型与注意力机制 一、Transformer 模型的诞生背景 二、Transformer 模型的核心架构 (一)编码器(Encoder) (二)解码器(Decoder) 三、注意力机制的深入剖析 …...
机器学习数据预处理回归预测中标准化和归一化
在机器学习的回归预测任务中,** 标准化(Standardization)和归一化(Normalization)** 是数据预处理的重要步骤,用于消除不同特征量纲和取值范围的影响,提升模型训练效率和预测性能。 一、标准化…...
B2C 商城转型指南:传统企业如何用 ZKmall模板商城实现电商化
在数字化浪潮席卷全球的当下,传统企业向电商转型已不再是选择题,而是关乎生存与发展的必答题。然而,缺乏技术积累、开发成本高、运营经验不足等问题,成为传统企业转型路上的 “拦路虎”。ZKmall模板商城以其低门槛、高灵活、强适配…...
FPGA:Lattice的FPGA产品线以及器件选型建议
本文将详细介绍Lattice Semiconductor的FPGA产品线,帮助你了解各系列的特点和适用场景,以便更好地进行选型。Lattice以低功耗、小尺寸和高性能为核心,产品覆盖低中端市场,广泛应用于通信、计算、工业、汽车、消费电子、嵌入式视觉…...
学习51单片机02
吐血了,板子今天才到,下午才刚开始学的,生气了,害我笔记都断更了一天。。。。 紧接上文...... 如何将HEX程序烧写到程序? Tips:HEX 文件是一种常用于单片机等嵌入式系统的文件格式,它包含了程序的机器码…...
武汉SMT贴片工艺优化与生产效能提升路径
内容概要 随着华中地区电子制造产业集群的快速发展,武汉SMT贴片行业面临工艺升级与效能提升的双重挑战。本文聚焦SMT生产全流程中的关键环节,从钢网印刷精度控制、回流焊温度曲线优化、AOI检测系统迭代三大核心工艺出发,结合区域产业链特点提…...
LineBasicMaterial
LineBasicMaterial 描述 用于绘制纯色线条的基础材质,支持颜色、线宽和纹理映射。常用于THREE.Line或THREE.LineSegments几何体。 构造函数 (Constructor) 构造函数参数描述LineBasicMaterial(parameters?: Object)parameters定义材质外观的对象,可…...
虚拟机安装达梦数据库
准备 关闭SELINUX # setenforce 0 # vi /etc/selinux/config 修改SELINUXdisabled 上传达梦ISO 接下下载的达梦安装包,里面包含一个ISO文件,将其上传到CentOS的/tmp路径下安装达梦所需图形类库 # yum install -y gtk2 libXtst xorg-x11-…...
小波变换+注意力机制成为nature收割机
小波变换作为一种新兴的信号分析工具,能够高效地提取信号的局部特征,为复杂数据的处理提供了有力支持。然而,它在捕捉数据中最为关键的部分时仍存在局限性。为了弥补这一不足,我们引入了注意力机制,借助其能够强化关注…...
科技项目验收测试对软件产品和企业分别有哪些好处?
科技项目验收测试是指在项目的开发周期结束后,针对项目成果进行的一系列验证和确认活动。其目的是确保终交付的产品或系统符合预先设定的需求和标准。验收测试通常包括功能测试、性能测试、安全测试等多个方面,帮助企业评估软件在实际应用中的表现。 科…...
ChatGPT到Claude全适配:跨模型Prompt高级设计规范与迁移技巧
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习内容,尽在聚客AI学院。 一. 迭代优化:基于反馈的Prompt进化策略 1.1 优化闭环设计 初始Prompt → 生成结果 → 人工评估 → 问题分析 → 改进Prompt 代码示例&#x…...
NexBot AI 1.9.3 | 专业AI写作助手,高自由度定制内容,支持中文设置
NexBot AI是一款强大的人工智能助手应用程序,旨在帮助用户快速生成符合其需求的内容。通过高自由度的关键词和短语合并功能,用户可以根据自己的具体要求定制内容。该应用能够迅速生成多种输出结果供用户选择,非常适合需要高效工作流程的专业人…...
foxmail - foxmail 启用超大附件提示密码与帐号不匹配
foxmail 启用超大附件提示密码与帐号不匹配 问题描述 在 foxmail 客户端中,启用超大附件功能,输入了正确的账号(邮箱)与密码,但是提示密码与帐号不匹配 处理策略 找到 foxmail 客户端目录/Global 目录下的 domain.i…...
eVTOL、无人机电机功耗图和电机效率图绘制测试
测功机是测量电机性能的绝佳工具。通过施加可控负载,测功机可表征电机扭矩、转速和功率。但这是获取电机性能全面理解的唯一途径吗?我们想知道,能否仅通过电机-螺旋桨动力测试台(而非传统制动测功机)实现电机性能测绘。…...
React中useMemo和useCallback的作用:
一、useMemo 基本用法: useMemo 是 React 提供的一个 Hook,用于性能优化,它通过"记忆"(memoization)计算结果来避免在每次渲染时进行不必要的复杂计算。 const memoizedValue useMemo(() > computeExpensiveValue…...
【Shell的基本操作】
文章目录 一、实验目的二、实验环境三、实验内容3.1 Shell变量与脚本基础3.2 定制终端提示符(PS1变量)3.3 文件查找与类型确认(find命令)3.4 管道命令实战(用户登录统计)3.5 交互式备份压缩脚本 四、总结4.…...
部署docker上的redis,idea一直显示Failed to connect to any host resolved for DNS name
参考了https://blog.csdn.net/m0_74216612/article/details/144145127 这篇文章,关闭了centos的防火墙,也修改了redis.conf文件,还是一直显示Failed to connect to any host resolved for DNS name。最终发现是腾讯云服务器那一层防火墙没…...
Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)
PDFView 是一个用于在 Android 应用中显示 PDF 文档的库。它提供了丰富的功能和灵活的配置选项,使得开发者能够轻松地在应用中嵌入 PDF 阅读器。 一、 添加依赖 在模块的 build.gradle 文件中添加以下依赖: // pdfimplementation("com.github.bar…...