Nacos部署和使用(服务注册与发现、配置中心)
1. docker部署nacos
参考:
docker安装nacos-CSDN博客
2.注册中心原理
在微服务远程调用的过程中,包括两个角色:
- 服务提供者:提供接口供其它微服务访问,比如 A
-service
- 服务消费者:调用其它微服务提供的接口,比如 B
-service
在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下:
流程如下:
- 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
- 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
- 调用者自己对实例列表负载均衡(随机、轮询、IP的hash、最近最少访问...),挑选一个实例
- 调用者向该实例发起远程调用
当服务提供者的实例宕机或者启动新实例时,调用者如何得知呢?
- 服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)
- 当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除
- 当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表
- 当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表
3.服务注册与发现
接下来,我们创建一个服务study_nacos_A
注册到Nacos,步骤如下:
- 引入依赖
- 配置Nacos地址
- 重启
3.3.1.添加依赖
在study_nacos_A
的pom.xml
中添加依赖:
<!--nacos 服务注册发现-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
注意在父工程中药进行spring-cloud的依赖管理
<properties><spring-cloud.version>Hoxton.SR10</spring-cloud.version></properties><dependencyManagement><dependencies><!-- springCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3.3.2.配置Nacos
在item-service
的application.yml
中添加nacos地址配置:
server:port: 8081
spring:application:name: A-servicecloud:nacos:server-addr: 192.168.152.130:8848
3.3.3 启动
启动时候可能会因为springBoot和springCloud版本问题报错:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans]: Factory method 'configurationPropertiesBeans' threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadataat org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.10.jar:5.3.10]at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.10.jar:5.3.10]... 34 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadataat org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration.configurationPropertiesBeans(ConfigurationPropertiesRebinderAutoConfiguration.java:56) ~[spring-cloud-context-2.1.3.RELEASE.jar:2.1.3.RELEASE]at org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$1b4f1aed.CGLIB$configurationPropertiesBeans$2(<generated>) ~[spring-cloud-context-2.1.3.RELEASE.jar:2.1.3.RELEASE]at org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$1b4f1aed$$FastClassBySpringCGLIB$$92bb4cd3.invoke(<generated>) ~[spring-cloud-context-2.1.3.RELEASE.jar:2.1.3.RELEASE]at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.10.jar:5.3.10]at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.10.jar:5.3.10]at org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$1b4f1aed.configurationPropertiesBeans(<generated>) ~[spring-cloud-context-2.1.3.RELEASE.jar:2.1.3.RELEASE]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.10.jar:5.3.10]... 35 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadataat java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_121]at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_121]at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_121]at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121]... 46 common frames omittedDisconnected from the target VM, address: '127.0.0.1:53071', transport: 'socket'Process finished with exit code 1
一般版本对应
访问Spring官方地址,可获取SpringBoot和SpringCloud版本对应信息。
地址如下:
https://start.spring.io/actuator/info
JSON格式如下:
{
"git": {
"branch": "aa1ad68ea9a0eac4180037118854753f3e200e85",
"commit": {
"id": "aa1ad68",
"time": "2023-03-10T15:26:12Z"
}
},
"build": {
"version": "0.0.1-SNAPSHOT",
"artifact": "start-site",
"versions": {
"spring-boot": "3.0.2",
"initializr": "0.20.0-SNAPSHOT"
},
"name": "start.spring.io website",
"time": "2023-03-10T15:27:19.222Z",
"group": "io.spring.start"
},
"bom-ranges": {
"codecentric-spring-boot-admin": {
"2.4.3": "Spring Boot >=2.3.0.M1 and <2.5.0-M1",
"2.5.6": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
"2.6.8": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
"2.7.4": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
"3.0.0-M4": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"solace-spring-boot": {
"1.1.0": "Spring Boot >=2.3.0.M1 and <2.6.0-M1",
"1.2.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
},
"solace-spring-cloud": {
"1.1.1": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"2.1.0": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2.3.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
},
"spring-cloud": {
"Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.6": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2021.0.0-M1": "Spring Boot >=2.6.0-M1 and <2.6.0-M3",
"2021.0.0-M3": "Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
"2021.0.0-RC1": "Spring Boot >=2.6.0-RC1 and <2.6.1",
"2021.0.6": "Spring Boot >=2.6.1 and <3.0.0-M1",
"2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.0.0-M2",
"2022.0.0-M2": "Spring Boot >=3.0.0-M2 and <3.0.0-M3",
"2022.0.0-M3": "Spring Boot >=3.0.0-M3 and <3.0.0-M4",
"2022.0.0-M4": "Spring Boot >=3.0.0-M4 and <3.0.0-M5",
"2022.0.0-M5": "Spring Boot >=3.0.0-M5 and <3.0.0-RC1",
"2022.0.0-RC1": "Spring Boot >=3.0.0-RC1 and <3.0.0-RC2",
"2022.0.0-RC2": "Spring Boot >=3.0.0-RC2 and <3.0.0",
"2022.0.1": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"spring-cloud-azure": {
"4.6.0": "Spring Boot >=2.5.0.M1 and <3.0.0-M1",
"5.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"spring-cloud-gcp": {
"2.0.11": "Spring Boot >=2.4.0-M1 and <2.6.0-M1",
"3.4.6": "Spring Boot >=2.6.0-M1 and <3.0.0-M1",
"4.1.2": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"spring-cloud-services": {
"2.3.0.RELEASE": "Spring Boot >=2.3.0.RELEASE and <2.4.0-M1",
"2.4.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"3.3.0": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
"3.4.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
"3.5.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"4.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"spring-shell": {
"2.1.6": "Spring Boot >=2.7.0 and <3.0.0-M1",
"3.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"vaadin": {
"14.9.6": "Spring Boot >=2.1.0.RELEASE and <2.6.0-M1",
"23.2.15": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
"23.3.5": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"24.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"hilla": {
"1.3.5": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"2.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"wavefront": {
"2.0.2": "Spring Boot >=2.1.0.RELEASE and <2.4.0-M1",
"2.1.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
"2.3.4": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"3.0.1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
}
},
"dependency-ranges": {
"okta": {
"1.4.0": "Spring Boot >=2.2.0.RELEASE and <2.4.0-M1",
"1.5.1": "Spring Boot >=2.4.0-M1 and <2.4.1",
"2.0.1": "Spring Boot >=2.4.1 and <2.5.0-M1",
"2.1.6": "Spring Boot >=2.5.0-M1 and <3.0.0-M1",
"3.0.3": "Spring Boot >=3.0.0-M1 and <3.1.0-M1",
"managed": "Spring Boot >=3.1.0-M1"
},
"mybatis": {
"2.1.4": "Spring Boot >=2.1.0.RELEASE and <2.5.0-M1",
"2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
"2.3.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"3.0.0": "Spring Boot >=3.0.0-M1"
},
"camel": {
"3.5.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"3.10.0": "Spring Boot >=2.4.0.M1 and <2.5.0-M1",
"3.13.0": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
"3.17.0": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
"3.20.2": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
"4.0.0-M2": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"picocli": {
"4.7.0": "Spring Boot >=2.5.0.RELEASE and <3.1.0-M1"
},
"open-service-broker": {
"3.2.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"3.3.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"3.4.1": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
"3.5.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1"
}
}
}
启动成功后,会在nacos中看到注册成功
4.配置中心
微服务共享的配置可以统一交给Nacos保存和管理,在Nacos控制台修改配置后,Nacos会将配置变更推送给相关的微服务,并且无需重启即可生效,实现配置热更新。
4.1.配置共享
我们可以把微服务共享的配置抽取到Nacos中统一管理,这样就不需要每个微服务都重复配置了。分为两步:
- 在Nacos中添加共享配置
- 微服务拉取配置
4.1.1.添加共享配置
简单示例
我们在nacos控制台添加这配置。
路径:配置管理
->配置列表
中点击+
新建一个配置:
发布时候可能发布失败:
解决:
找到nacos配置中这两个表
查看是否有这个字段 encrypted_data_key 如果没有加上,并且可以是空,就解决了
4.1.2.拉取共享配置
我们要在微服务拉取共享配置。将拉取到的共享配置与本地的application.yml
配置合并,完成项目上下文的初始化。
不过,需要注意的是,读取Nacos配置是SpringCloud上下文(ApplicationContext
)初始化时处理的,发生在项目的引导阶段。然后才会初始化SpringBoot上下文,去读取application.yml
。
也就是说引导阶段,application.yaml
文件尚未读取,根本不知道nacos 地址,该如何去加载nacos中的配置文件呢?
SpringCloud在初始化上下文的时候会先读取一个名为bootstrap.yml
(或者bootstrap.properties
)的文件,如果我们将nacos地址配置到bootstrap.yml
中,那么在项目引导阶段就可以读取nacos中的配置了。
因此,微服务整合Nacos配置管理的步骤如下:
1)引入依赖:
在cart-service模块引入依赖:
<!--nacos配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--读取bootstrap文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.0</version></dependency>
2)新建bootstrap.yml
在服务中的resources目录新建一个bootstrap.yml文件,可以把固定配置放到这里边:
示例内容如下:
server:port: 8081
spring:application:name: A-servicecloud:nacos:server-addr: 192.168.152.130:8848config:file-extension: yaml # 文件后缀名group: DEFAULT_GROUPshared-configs: # 共享配置- dataId: share-user.yaml # 共享mybatis配置refresh: true
4.1.3.配置热更新
建立配置类
@ConfigurationProperties(prefix = "share-user")
@EnableConfigurationProperties
@Configuration
@RefreshScope
@Data
public class ShareUserConfig {private String name;private Integer age;
}
新配置
获取:
更新配置:
重新获取:
这样就实现了不重启就更新了配置
相关文章:
Nacos部署和使用(服务注册与发现、配置中心)
1. docker部署nacos 参考: docker安装nacos-CSDN博客 2.注册中心原理 在微服务远程调用的过程中,包括两个角色: 服务提供者:提供接口供其它微服务访问,比如 A-service服务消费者:调用其它微服务提供的…...
医学机器学习:数据预处理、超参数调优与模型比较的实用分析
摘要 本文介绍了医学中的机器学习,重点阐述了数据预处理、超参数调优和模型比较的技术。在数据预处理方面,包括数据收集与整理、处理缺失值、特征工程等内容,以确保数据质量和可用性。超参数调优对模型性能至关重要,介绍了多种调…...
【大数据学习 | Spark-SQL】关于RDD、DataFrame、Dataset对象
1. 概念: RDD: 弹性分布式数据集; DataFrame: DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型…...
流媒体中ES流、PS流 、TS流怎么理解
在流媒体的领域中,ES流、PS流和TS流是视频和音频数据的不同封装格式。它们通常用于传输、存储和播放多媒体内容。让我们分别了解一下它们的定义和用途。 1. ES流(Elementary Stream) ES流(基本流)是最基本的视频或音…...
阿里云ECS服务器磁盘空间不足的几个文件
查看磁盘空间命令: df -h /mnt 清零 echo >nohup.out 磁盘空间不足的文件列表: 一、nohup.out:来自"nohup java -jar service.jar &"命令产生的文件,位置在服务jar所在目录 二、access.log:位于…...
pip 安装指定镜像源
pip 安装指定镜像源 使用 pip 安装时,可以通过指定镜像源来加速安装速度,尤其在网络状况不佳或需要访问国内镜像源的情况下。 常见的国内镜像源 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple 阿里云: https://mirrors.aliyun.com/pypi/simple …...
java全栈day10--后端Web基础(基础知识)
引言:只要能通过浏览器访问的网站全是B/S架构,其中最常用的服务器就是Tomcat 在浏览器与服务器交互的时候采用的协议是HTTP协议 一、Tomcat服务器 1.1介绍 官网地址:Apache Tomcat - Welcome! 1.2基本使用(网上有安装教程,建议…...
GPT(Generative Pre-trained Transformer) 和 Transformer的比较
GPT(Generative Pre-trained Transformer) 和 Transformer 的比较 flyfish 1. Transformer 是一种模型架构 Transformer 是一种通用的神经网络架构,由 Vaswani 等人在论文 “Attention Is All You Need”(2017)中提…...
大数据营销
大数据营销是一个热门的大数据应用。对于多数企业而言,大数据营销的主要价值源于以下几个方面。 市场预测与决策分析支持 数据对市场预测及决策分析的支持,早就在数据分析与数据挖掘盛行的年代被提出过。沃尔玛著名的“啤酒与尿布”案例就是那个时候的杰…...
数据字典的实现与应用 —— 提高系统灵活性与维护效率的关键
目录 前言1. 数据字典的基本概念1.1 什么是数据字典1.2 数据字典的主要特点 2. 数据字典的优势2.1 提高代码复用性2.2 提升系统的灵活性2.3 方便非技术人员管理2.4 减少错误概率 3. 数据字典在若依中的实现3.1 若依框架简介3.2 数据字典的结构设计 4. 若依框架中数据字典的配置…...
Scrapy管道设置和数据保存
1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…...
Jenkins的使用
文章目录 一、Jenkins是什么\有什么用\与GitLab的对比二、Jenkins的安装与配置Jenkins的安装方式在Linux上安装Jenkins:在Windows上安装Jenkins:配置Jenkins: (可选)配置启动用户为root(一定要是root吗??…...
计算机基础 原码反码补码问题
整数的二进制的表示形式:其实有三种 原码:直接根据数值写出的二进制序列就是原码 反码:原码的符号位不变,其他位按位取反就是反码 补码:反码1,就是补码 负数:-1 以补码形式存放在内存 写出 -1…...
ORB-SLAM2 ----- LocalMapping::SearchInNeighbors()
文章目录 一、函数意义二、函数讲解三、函数代码四、本函数使用的匹配方法ORBmatcher::Fuse()1. 函数讲解2. 函数代码 四、总结 一、函数意义 本函数是用于地图点融合的函数,前面的函数生成了新的地图点,但这些地图点可能在前面的关键帧中已经生成过了&a…...
游戏引擎学习第27天
仓库:https://gitee.com/mrxiao_com/2d_game 欢迎 项目的开始是从零开始构建一款完整的游戏,完全不依赖任何库或引擎。这样做有两个主要原因:首先,因为这非常有趣;其次,因为它非常具有教育意义。了解游戏开发的低层次…...
【超全总结】深度学习分割模型的损失函数类别及应用场景
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
基于HTML和CSS的校园网页设计与实现
摘要 随着计算机、互联网与通信技术的进步,Internet在人们的学习、工作和生活中的地位也变得越来越高,校园网站已经成为学校与学生,学生与学生之间交流沟通的重要平台,对同学了解学校内发生的各种事情起到了重要的作用。学校网站…...
深度学习基础02_损失函数BP算法(上)
目录 一、损失函数 1、线性回归损失函数 1.MAE损失 2.MSE损失 3.SmoothL1Loss 2、多分类损失函数--CrossEntropyLoss 3、二分类损失函数--BCELoss 4、总结 二、BP算法 1、前向传播 1.输入层(Input Layer)到隐藏层(Hidden Layer) 2.隐藏层(Hidden Layer)到输出层(Ou…...
Flutter:列表分页,上拉加载下拉刷新,在GetBuilder模板使用方式
GetBuilder模板使用方式参考上一节 本篇主要代码记录如何使用上拉加载下拉刷新, 接口请求和商品组件的代码不包括在内 pubspec.yaml装包 cupertino_icons: ^1.0.8# 分页 上拉加载,下拉刷新pull_to_refresh_flutter3: 2.0.2商品列表:controlle…...
使用eclipse构建SpringBoot项目
我这里用eclipse2018版本做演示,大家有需要的可以下载Eclipse Downloads | The Eclipse Foundation 1.打开eclipse,选择存放代码的位置 2.选择 file >> new >> project >> 选择springboot文件下的 spring starter project 2.这里选择N…...
Linux系统存储挂载与管理:从基础到高级
标题:Linux系统存储挂载与管理:从基础到高级 摘要 在Linux系统中,合理的存储管理和分配对于系统的性能、稳定性和资源利用至关重要。本文将详细介绍存储挂载的基本概念、如何进行存储分配和管理,并解释系统盘的作用。通过这些内…...
Flutter 权限申请
这篇文章是基于permission_handler 10.2.0版本写的 前言 在App开发过程中我们经常要用到各种权限,我是用的是permission_handler包来实现权限控制的。 pub地址:https://pub.dev/packages/permission_handler permission_handler 权限列表 变量 Androi…...
Linux之信号的产生,保存,捕捉
Linux之信号的产生,保存,捕捉处理 一.信号的概念1.1概念1.2分类 二.信号的产生2.1通过键盘产生的信号2.2系统调用接口产生的信号2.3硬件异常产生的信号2.4软件条件产生的信号 三.信号的保存四.信号的捕捉五.信号的其他杂碎知识5.1可重入函数5.2volatile关…...
基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 自编码器是…...
泛化调用 :在没有接口的情况下进行RPC调用
什么是泛化调用? 在RPC调用的过程中,调用端向服务端发起请求,首先要通过动态代理,动态代理可以屏蔽RPC处理流程,使得发起远程调用就像调用本地一样。 RPC调用本质:调用端向服务端发送一条请求消息&#x…...
2025年人工智能,自动化与机械工程国际学术会议(AIAME2025)
早鸟通道开启: 2025年人工智能,自动化与机械工程国际学术会议(AIAME2025) 2025 International Conference on Artificial Intelligence, Automation, and Mechanical Engineering 【重要日期】 早鸟征稿截止日期:…...
docker compose 快速搭建Nacos单节点测试环境(mysql 版)
〓 参考: https://nacos.io/docs/latest/quickstart/quick-start-docker/?sourcewuyi https://github.com/nacos-group/nacos-docker https://nacos.io/docs/latest/manual/admin/deployment/deployment-standalone/?sourcewuyi https://nacos.io/docs/latest/man…...
数字3D虚拟展厅成熟运用于旅游业
在数字空间展览会与VR3D虚拟企业展厅设计的兴起中,我们迎来了互联网、物联网与3D技术融合的大时代。这些企业虚拟展厅主要依托互联网作为传播媒介,利用图片、文字和Flash动画等形式,生动展现企业的核心产品。作为一种新型的网络信息技术展厅&…...
模数转换芯片AD9215
AD9215 是 Analog Devices 公司推出的一款高性能、低功耗、单通道 10 位模数转换器(ADC)。它具有采样速率高达 65 MSPS 或 105 MSPS(不同型号),并广泛应用于通信、成像和仪器仪表等领域。 AD9215 的关键特性 分辨率: 10 位,适合高精度应用。采样速率: 两种型号: AD921…...
MongoDB注入攻击测试与防御技术深度解析
MongoDB注入攻击测试与防御技术深度解析 随着NoSQL数据库的兴起,MongoDB作为其中的佼佼者,因其灵活的数据模型和强大的查询能力,受到了众多开发者的青睐。然而,与任何技术一样,MongoDB也面临着安全威胁,其…...
总结贴:Servlet过滤器、MVC拦截器
一:Servlet过滤器 1.1解析 Filter 即为过滤,用于请求到达Servlet之前(Request),以及再Servlet方法执行完之后返回客户端进行后处理(HttpServletResponse)。简单说就是对请求进行预处理,对响应进行后处理 在请求到达Servlet之前,可以经过多个Filt…...
鸿蒙开发-在ArkTS中制作音乐播放器
音频播放功能实现 导入音频播放相关模块 首先需要从ohos.multimedia.audio模块中导入必要的类和接口用于音频播放。例如: import audio from ohos.multimedia.audio;创建音频播放器实例并设置播放源 可以通过audio.createAudioPlayer()方法创建一个音频播放器实…...
mapstruct DTO转换使用
定义一个基础接口 package com.example.mapstruct;import org.mapstruct.Named;import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; import java.util.List;/*** Author zmn Dat…...
C++内存对齐
一、内存对齐的定义 内存对齐是一种计算机内存管理策略。在这种策略下,数据存储的内存地址必须是数据类型大小(或者是某个特定对齐模数)的整数倍。 例如,在一个 32 位系统中,如果一个int类型(通常占用 4 …...
关于node全栈项目打包发布linux项目问题总集
1.用pm2部署nest 说明:如果一开始将nest直接打包放到linux服务器上用pm2执行则会报错,这是因为tsconfig.build.tsbuildinfo文件的路径以及相关依赖问题。 报错会为:什么东西找不到.... 所以建议以下为步骤一步一步配置 将整个nest添加压缩包直…...
40 基于单片机的温湿度检测判断系统
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机,采用dht11温湿度传感器检测温湿度, 通过lcd1602显示屏各个参数,四个按键分别可以增加温湿度的阈值, 如果超过阈值,则…...
Vue 原理详解
Vue 原理详解 Vue.js 是一个渐进式框架,它通过数据驱动视图更新和响应式编程使得前端开发变得更加简单高效。在 Vue 的内部实现中,编译过程和响应式机制是两个至关重要的组成部分。本文将详细介绍 Vue.js 的编译器、响应式系统和运行时的工作原理&#…...
w064基于springboot的高校学科竞赛平台
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件࿰…...
vue实现弹窗输入验证码
实现思路:前端输入完账号和密码,点击登录按钮的时候,弹出一个输入验证码的窗口,后端把验证码图片通过base64的字符传给前端,前端把字符当成图片展示出来。输入完验证码,点击确认进行登录,把验证…...
maven,java相关调试等
maven 增加调试信息的命令: mvn clean compile -Xmvn -X clean installmvn -e exec:execmodule jdk.compiler does not “opens com.sun.tools.java c.processing” 报错是因为用了JDK17,而老版本的1.18.4不支持。将lombok升级到1.18.32问题解决。 报错…...
ARP欺骗-断网攻击
ARP协议 arp协议(地址解析) ,在局域网中传输的是帧,帧里面有目标主机的MAC地址,其中一台电脑和另一台电脑需要知道对面的ip地址所对应的MAC地址 ARP欺骗的原理 把自己的MAC地址伪造成网段来欺骗其他用户 实验环境 kali:192.168.21.128 win…...
鬼谷子的捭阖之道
捭(bai)是打开,开口说的意思,代表阴阳中的阳面 阖(he)是关闭,是闭嘴、观察,代表阴阳中的阴面 捭阖就是通过话术来试探对方的实情,用谋略让对方信服,从而推动…...
mysql之找回忘记的root密码
mysql之找回忘记的root密码 1.方法1,init-file重置密码2.方法2,–skip-grant-tables重置密码 1.方法1,init-file重置密码 使用init-file参数来对密码进行重新设置 1.停止mysql服务进程 首先将mysql的服务停用掉; 输入命令&#x…...
IDEA中Maven相关使用
一、Maven 的配置文件与本地仓库 Maven 是一种基于配置的工具,主要通过 配置文件 和 本地仓库 管理项目构建与依赖。 1. Maven 配置文件的层级 Maven 的配置文件分为两个层级:全局配置 和 用户配置。 (1)全局配置 位置&#…...
C语言基础数据类型
C语言------基础数据类型 思考、实践、总结、交流,八字真言是学习任何一门知识的内功,尤其是在很方便用鸡皮提的时代中,独立思考是很重要的。 一个 C 语言工程由多个.c(源码文件) .h(头文件)组成。.c 文件是实现逻辑的…...
excel中字符数字转换为数值类型:NUMBERVALUE()函数
excel中字符数字转换为数值类型:NUMBERVALUE()函数 例子: 假如这个文档被设置为文档类型:可以通过这个函数进行转换 有时候这个函数不起作用:可以试试对目标列的第一个字符数字进行设置单元单元格-设置为数值型 然后对第一个字…...
【LeetCode刷题之路】283:移动零的普通解法与优化解法(含动图演示)
LeetCode刷题记录 🌐 我的博客主页:iiiiiankor🎯 如果你觉得我的内容对你有帮助,不妨点个赞👍、留个评论✍,或者收藏⭐,让我们一起进步!📝 专栏系列:LeetCode…...
AtomicIntegerFieldUpdater能否降低内存
1. 代码如下: import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest {final AtomicInteger startPosition new AtomicInteger(0);final AtomicInteger wrotePosition new Atom…...
一个实用的 Maven localRepository 工具
目录 1 现状2 当前解决3 更好的解决3.1 下载 Maven localRepository 工具包3.2 上传本地 localRepository 包3.3 清理 localRepository 中指定后缀的文件 1 现状 在使用 Maven 时,我们可能会经常与本地仓库和私服仓库打交道。 例如对于本地仓库,因为某…...
【算法day4】链表:应用拓展与快慢指针
题目引用 两两交换链表节点删除链表的倒数第n个节点链表相交环形链表 1.两两交换链表节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换&am…...