当前位置: 首页 > news >正文

如何简洁高效的搭建一个SpringCloud2023的maven工程

前言

依赖管理有gradle和maven,在这里选择比较常用和方便的Maven作为工程项目和依赖管理工具来搭建SpringCloud实战工程。主要用到的maven管理方式是多模块和bom依赖管理。

什么是maven的多模块依赖管理

Maven 多模块项目相对于单模块项目而言,依赖是不共享的,但父模块提供了全局共享依赖的功能,可以针对不同模块所需要依赖的包进行分模块引入。具体如下:

  • 所有子模块都依赖的包,如junit可以统一由父模块中的<dependencies>设置依赖。
  • 多个子模块但非全部子模块依赖的包,可以在父模块中的<dependencyManagement>中统一管理依赖版本,再由每个子模块自主引入依赖,这样设置可以达到项目中多个子模块依赖的包版本统一的目的。
  • 单个子模块依赖的包,可以直接交由这个子模块引入即可。但有时候出于对后续可能添加子模块考虑,即使当前只有一个子模块依赖的包,也可以统一交由父模块的<dependencyManagement>统一管理,而如果确认后续不会再加子模块的,可以按前者进行处理。

在父模块中,可通过<properties>统一管理依赖包的版本,让共享包也更加统一管理。

什么是maven的bom依赖管理

Maven 的 BOM(Bill of Materials)依赖管理是一种用于集中管理项目依赖关系和版本的方式,它提供了一种方便的方法来确保多个项目或模块在使用相同依赖时具有一致的版本。

BOM 通常是一个特殊的 Maven POM(Project Object Model)文件,其中定义了项目所需的依赖项及其版本。通过在其他项目中引用这个 BOM,这些项目将自动获取 BOM 中定义的依赖版本,而无需明确指定每个依赖的版本。

这样做的好处是可以减少重复的依赖配置工作,并确保在多个项目中使用相同的依赖版本,从而减少由于依赖不一致导致的问题。此外,BOM 还可以用于管理依赖的升级和版本控制,只需在 BOM 中更新依赖的版本,所有引用该 BOM 的项目都会自动获取最新的版本。

要使用 Maven 的 BOM 依赖管理,通常需要执行以下步骤:

  • 创建或获取一个 BOM POM 文件,其中定义了项目的依赖和版本信息。
  • 在需要使用 BOM 的项目中,通过在<dependencyManagement>部分引用 BOM POM 文件。
  • 在项目的具体依赖部分,可以直接使用 BOM 中定义的依赖,而无需明确指定版本。

组件选型

在“SpringCloud2023最新版本该如何进行组件选型?”一文中已经具体的介绍了SpringCloud的组件对比和选型,具体可以查看合集里面的相关文档。

  • 注册中心(Spring Cloud Zookeeper):负责服务的注册和发现。
  • 网关(Spring Cloud Gateway):作为外部请求的入口,实现路由和负载均衡。
  • 云服务配置(Spring Cloud Config):用于管理服务的配置信息。
  • 熔断(Sentinel):提供熔断器功能,实现服务的限流和降级。
  • 服务追踪(Micrometer Tracing):用于追踪和监控服务的性能和调用情况。
  • 测试集成(JUnit 5 + Spring Boot Test):用于编写和执行单元测试。
  • 远程调用(OpenFeign):用于服务之间的远程调用。
  • 接口文档(springdoc-openapi + openapi3):用于生成和管理 API 的文档。
  • 分布式事务(Seata):用于处理跨多个服务的事务。

版本选择

在“SpringCloud和SpringBoot的版本依赖该怎么选择”一文中已经具体的介绍了SpringCloud的版本如何选择,具体可以查看合集里面的相关文档。

组件版本
jdk17
spring boot3.2.x
spring cloud2023.0.x
spring cloud alibaba2022.0.0.0(还未更新,但是兼容2023)

为什么选择JDK17

选择JDK17的原因如下:

  • JDK 17是 LTS(长期支持版)。
  • JDK 17性能提升不少。
  • 大多数第三方框架和库都已经支持,不会有什么大坑。
  • JDK 17有更多的新特性支持。

Maven工程依赖说明

|-- banana-client1
|-- banana-client2
|-- banana-client3
|-- banana-client4-sentinel
|-- banana-client5-tracing
|-- banana-client6-test
|-- banana-common
|   |-- banana-common-bom
|   `-- banana-common-core
|-- banana-config
|-- banana-gateway
|-- banana-gateway-sso
`-- banana-seata-example
  • 根目录下的pom.xml负责管理整个项目的版本和依赖引入版本管理,以及子模块的管理。
  • banana-common-bom 负责管理整个公共依赖的版本,比如undertow、swagger的版本。
  • banana-common-core 负责管理整个公共组件的引入,比如 hutool、validation、test等。
  • gateway 相关项目为SCG相关工程。
  • client 相关项目为springboot相关工程。
  • 其他工程会在后续的文章说明。欢迎持续关注。

顶级工程pom.xml配置

该maven的pom文件定义了如下内容:

  • Maven 项目的模块列表
  • Maven 项目的属性列表
  • Maven 项目的依赖管理
  • Maven 项目的仓库列表
  • Maven 项目的构建配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- Maven 项目的根节点 --><modelVersion>4.0.0</modelVersion><!-- Maven 项目的groupId,在 Maven 仓库中,groupId 必须是唯一的 --><groupId>io.rainforest</groupId><!-- Maven 项目的 artifactId,可以包含多个模块 --><artifactId>banana</artifactId><!-- Maven 项目的版本号 --><version>1.0</version><!-- Maven 项目的打包方式,这里是 pom --><packaging>pom</packaging><!-- Maven 项目的模块列表 --><modules><module>banana-gateway</module><module>banana-config</module><module>banana-common</module><module>banana-client1</module><module>banana-client2</module><module>banana-client3</module><module>banana-client4-sentinel</module><module>banana-client5-tracing</module><module>banana-client6-test</module><module>banana-seata-example</module><module>banana-gateway-sso</module></modules><!-- Maven 项目的属性列表 --><properties><!-- Maven 编译器的 source 版本 --><maven.compiler.source>17</maven.compiler.source><!-- Maven 编译器的 target 版本 --><maven.compiler.target>17</maven.compiler.target><!-- 项目构建的源编码 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- Spring Boot 的版本 --><spring-boot.version>3.2.3</spring-boot.version><!-- Spring Cloud 的版本 --><spring-cloud.version>2023.0.0</spring-cloud.version><!-- Spring Cloud Alibaba 的版本 --><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version></properties><!-- Maven 项目的依赖管理 --><dependencyManagement><!-- Maven 项目的依赖列表 --><dependencies><!-- banana 公共版本定义 --><dependency><groupId>io.rainforest</groupId><artifactId>banana-common-bom</artifactId><version>${project.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Boot 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud 依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud Alibaba 依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!-- Maven 项目的仓库列表 --><repositories><!-- Maven 中央仓库的配置 --><repository><id>central</id><name>Central Repository</name><url>https://mirrors.huaweicloud.com/repository/maven/</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository></repositories><!-- Maven 项目的构建配置 --><build><!-- Maven 项目构建的最终名称 --><finalName>${project.name}</finalName><!-- Maven 项目的资源配置 --><resources><!-- 资源文件所在的目录 --><resource><directory>src/main/resources</directory><!-- 对资源文件进行过滤 --><filtering>true</filtering></resource></resources><!-- Maven 项目的插件管理 --><pluginManagement><!-- Maven 项目的插件列表 --><plugins><!-- Spring Boot Maven 插件的配置 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><!-- 项目构建的最终名称 --><finalName>${project.build.finalName}</finalName><!-- 启用 Spring Boot 的分层 --><layers><enabled>true</enabled></layers></configuration><!-- Maven 插件的执行配置 --><executions><!-- Maven 插件的执行目标 --><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></pluginManagement></build>
</project>

工程的公用依赖bom配置

该maven的pom文件定义了如下内容:

  • Maven 项目的属性列表,包含版本等信息
  • Maven 项目使用到的依赖版本管理
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><groupId>io.rainforest</groupId><artifactId>banana-common-bom</artifactId><version>1.0</version><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><description>banana-common-bom 公共依赖管理</description><properties><banana.common.version>${project.version}</banana.common.version><spring-boot.version>3.1.3</spring-boot.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><log4j2.version>2.17.1</log4j2.version><maven.compiler.target>17</maven.compiler.target><maven.compiler.source>17</maven.compiler.source><git.commit.plugin>4.9.9</git.commit.plugin><spring.checkstyle.plugin>0.0.39</spring.checkstyle.plugin><fastjson.version>1.2.83</fastjson.version><springdoc.version>2.1.0</springdoc.version><swagger.core.version>2.2.14</swagger.core.version><mybatis-plus.version>3.5.3.2</mybatis-plus.version><mysql.version>8.0.33</mysql.version><dynamic-ds.version>4.1.3</dynamic-ds.version><seata.version>1.6.1</seata.version><excel.version>3.1.0</excel.version><asm.version>7.1</asm.version><sms.version>3.0.0</sms.version><jaxb.version>2.3.5</jaxb.version><shardingsphere.version>5.4.0</shardingsphere.version><hutool.version>5.8.21</hutool.version><mica.version>3.0.8</mica.version><sentinel.version>1.8.4</sentinel.version></properties><!-- 定义全局jar版本,模块使用需要再次引入但不用写版本号--><dependencyManagement><dependencies><dependency><groupId>io.rainforest</groupId><artifactId>banana-common-core</artifactId><version>${banana.common.version}</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${mysql.version}</version></dependency><!--springdoc --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webflux-ui</artifactId><version>${springdoc.version}</version></dependency><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-api</artifactId><version>${springdoc.version}</version></dependency><dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-annotations-jakarta</artifactId><version>${swagger.core.version}</version></dependency><!--fastjson 版本--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- 多数据源依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot3-starter</artifactId><version>${dynamic-ds.version}</version></dependency><!--  阿里云短信下发 --><dependency><groupId>io.springboot.sms</groupId><artifactId>aliyun-sms-spring-boot-starter</artifactId><version>${sms.version}</version></dependency><!--  seata kryo 序列化--><dependency><groupId>io.seata</groupId><artifactId>seata-serializer-kryo</artifactId><version>${seata.version}</version></dependency><!--orm 相关--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId><version>${mybatis-plus.version}</version></dependency><!--hutool bom 工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-bom</artifactId><version>${hutool.version}</version><type>pom</type><scope>import</scope></dependency><!--mica bom 工具类--><dependency><groupId>net.dreamlu</groupId><artifactId>mica-bom</artifactId><version>${mica.version}</version><type>pom</type><scope>import</scope></dependency><!--web 模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot.version}</version><exclusions><!--排除tomcat依赖--><exclusion><artifactId>spring-boot-starter-tomcat</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.3.0</version></dependency></dependencies></dependencyManagement><build><plugins><!--打包jar 与git commit 关联插件--><plugin><groupId>io.github.git-commit-id</groupId><artifactId>git-commit-id-maven-plugin</artifactId><version>${git.commit.plugin}</version></plugin><!--代码格式插件,默认使用spring 规则--><plugin><groupId>io.spring.javaformat</groupId><artifactId>spring-javaformat-maven-plugin</artifactId><version>${spring.checkstyle.plugin}</version></plugin></plugins></build></project>

源码信息

和“SpringCloud实战”对应的源码信息如下:

  • github https://github.com/r0ad/spring-cloud-example
  • gitee https://gitee.com/r0ad/spring-cloud-example

关于作者

来自一线全栈程序员nine的八年探索与实践,持续迭代中。欢迎关注“雨林寻北”或添加个人卫星codetrend(备注技术)。

相关文章:

如何简洁高效的搭建一个SpringCloud2023的maven工程

前言 依赖管理有gradle和maven&#xff0c;在这里选择比较常用和方便的Maven作为工程项目和依赖管理工具来搭建SpringCloud实战工程。主要用到的maven管理方式是多模块和bom依赖管理。 什么是maven的多模块依赖管理 Maven 多模块项目相对于单模块项目而言&#xff0c;依赖是…...

uniapp直接连接wifi(含有ios和安卓的注意事项)

前言 小程序中直接连接wifi-----微信小程序 代码 启动 //启动wifistartWifi() {return new Promise((resolve, reject) > {uni.startWifi({success: (res) > {console.log(启动wifi 成功, res)resolve(true)},fail: (err) > {console.error(启动wifi 失败, err)uni.s…...

一. Ubuntu入门

目录 一. Ubuntu系统安装 1. 安装虚拟机软件VMware 2. 安装Ubuntu操作系统 二. Ubuntu系统入门 1. Shell操作 1.1 Shell 简介 1.2 Shell基本操作 1.3 常用Shell命令 (1) 目录信息查看命令ls (2) 目录切换命令cd (3) 当前路径显示命令pwd (4) 系统信息查看命令uname…...

rk3568 Android12 增加支持 ntfs 格式

rk3568 Android12 增加支持 ntfs 格式 Windows平台上可移动硬盘支持 NTFS,FAT32,exFAT三种格式。Fat32文件格式是一种通用格式,任何USB存储设备都会预装该文件系统,可以在任何操作系统平台上使用。最主要的缺陷是只支持最大单文件大小容量为4GB,因此日常使用没有问题,只有…...

【MapReduce】02.Hadoop序列化

实现bean对象序列化步骤 自定义bean对象实现序列化接口。 1&#xff09;必须实现Writable接口 2&#xff09;反序列化时&#xff0c;需要反射调用空参构造函数&#xff0c;所以必须有空参构造 public FlowBean(){super(); } 3&#xff09;重写序列化方法 Override public …...

【Claude 3】一文谈谈Anthropic(Claude) 亚马逊云科技(Bedrock)的因缘际会

文章目录 前言1. Anthropic的诞生2. Anthropic的“代表作”——Claude 3的“三驾马车”3. 亚马逊云科技介绍4. 强大的全托管服务平台——Amazon Bedrock5. 亚马逊云科技(AWS)和Anthropic的联系6. Claude 3模型与Bedrock托管平台的关系7. Clude 3限时体验入口分享【⚠️截止3月1…...

c#开发100问?

什么是C#&#xff1f;C#是由谁开发的&#xff1f;C#与Java之间有哪些相似之处&#xff1f;C#与C有哪些不同之处&#xff1f;C#的主要特性是什么&#xff1f;请解释C#中的类和对象。C#中的命名空间是什么&#xff1f;什么是C#中的属性和字段&#xff1f;请解释C#中的继承和多态性…...

回归预测 | Matlab实现BiTCN-BiGRU-Attention双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

回归预测 | Matlab实现BiTCN-BiGRU-Attention双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现BiTCN-BiGRU-Attention双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.M…...

SpringCloud微服务-RabbitMQ快速入门

文章目录 RabbitMQ快速入门1、什么是MQ&#xff1f;2、RabbitMQ概述3、RabbitMQ的结构和概念4、常见消息模型5、HelloWorld RabbitMQ快速入门 1、什么是MQ&#xff1f; MQ &#xff08;MessageQueue&#xff09;&#xff0c;中文是消息队列&#xff0c;字面来看就是存放消息的…...

OpenCV学习笔记(五)——图片的缩放、旋转、平移、裁剪以及翻转操作

目录 图像的缩放 图像的平移 图像的旋转 图像的裁剪 图像的翻转 图像的缩放 OpenCV中使用cv2.resize()函数进行缩放&#xff0c;格式为&#xff1a; resize_imagecv2.resize(image,(new_w,new_h),插值选项) 其中image代表的是需要缩放的对象&#xff0c;(new_w,new_h)表…...

c++ 串口通信库

根据资料整理的串口通信库&#xff0c;封装成为了动态库&#xff0c;使用者只需要调用接口即可 使用实例如下&#xff1a; //接受数据 void CSerialPortCommonLibDemoDlg::OnReceive() { char * str NULL; str new char[256]; _port.readAllData(str); CString s…...

数据结构之单链表及其实现!

目录 ​编辑 1. 顺序表的问题及思考 2.链表的概念结构和分类 2.1 概念及结构 2.2 分类 3. 单链表的实现 3.1 新节点的创建 3.2 打印单链表 3.3 头插 3.4 头删 3.5 尾插 3.6 尾删 3.7 查找元素X 3.8 在pos位置修改 3.9 在任意位置之前插入 3.10 在任意位置删除…...

Ubuntu 22.04修改静态ip

1. 备份原网络配置文件 # 配置文件名称因机器设置有异 cd /etc/netplan cp 01-network-config.yaml 01-network-config.yaml.bak# 文件内容如下 network:version: 2renderer: NetworkManager2. 修改配置文件 使用 ipconfig 命令查看网络信息&#xff0c;ip addr 命令也可 我这…...

kali当中不同的python版本切换(超简单)

kali当中本身就是自带两个python版本的 配置 update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update-alternatives --install /usr/bin/python python /usr/bin/python3 150 切换版本 update-alternatives --config python 0 1 2编号选择一个即可…...

MongoDB聚合运算符;$dateToString

$dateToString聚合运算符按用户指定的格式将日期对象转为字符串。 语法 { $dateToString: {date: <dateExpression>,format: <formatString>,timezone: <tzExpression>,onNull: <expression> } }字段说明&#xff1a; 字段是否必须描述date是<da…...

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…...

python基础——条件判断和循环【if,while,for,range】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下条件判断语句if和循环语句while&#xff0c;for在python中需要注意的地方。 建议已有一定了解&#xff08;对语句的执行逻辑清楚&#xff09;的读者观看&#xff0c;如果对条件判断和循环的执行逻辑不太清楚&#xff0c;也可…...

Pytorch 复习总结 6

Pytorch 复习总结&#xff0c;仅供笔者使用&#xff0c;参考教材&#xff1a; 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为&#xff1a;Pytorch 计算机视觉。 本文先介绍了计算机视觉中两种常见的改进模型泛化性能的方法&#xff1a…...

借助 Terraform 功能协调部署 CI/CD 流水线-Part 1

在当今快节奏的开发环境中&#xff0c;实现无缝、稳健的 CI/CD 流水线对于交付高质量软件至关重要。在本文中&#xff0c;我们将向您介绍使用 Bitbucket Pipeline、ArgoCD GitOps 和 AWS EKS 设置部署的步骤&#xff0c;所有步骤都将利用 Terraform 的强大功能进行编排。在Part…...

云原生基础知识:容器技术的历史

容器化的定义&#xff1a; 容器化是一种轻量级的虚拟化技术&#xff0c;将应用程序及其所有依赖项&#xff08;包括运行时、系统工具、系统库等&#xff09;打包到一个称为容器的单独单元中。容器提供了一种隔离的执行环境&#xff0c;使得应用程序可以在不同的环境中运行&…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...