【Spring Boot 3】整合nacos + Dubbo3 的Spring cloud Alibaba项目

这里写自定义目录标题

  • 前言
  • 1、项目结构
  • 2、搭建nacos注册中心、配置中心
  • 3、项目依赖
  • 4、common模块
  • 5、provider服务提供者
    • pom文件
    • bootstrap.yml
    • 在nacos中添加配置
    • 启动类
    • UserServiceImpl
  • consumer服务消费者
    • pom文件
    • bootstrap.yml
    • nacos配置
    • 启动类
    • UserController
  • 测试
  • END

前言

在springboot3不再兼容jdk8的时候,随之而来的便是各种框架不兼容引发的bug,虽然各位框架的开发大佬在加班加点的更新适配,但能够创建一个适用并且不报错的项目依旧是一件耗时耗力的事情。
我们都知道在String Cloud项目中默认使用Feign组件进行服务间的通信,REST API的调用方式使用起来十分的优雅、简洁,但通常情况下HTTP这种通信机制都是短连接,也就意味着每一次调用都是一次TCP连接的建立。无疑,这种方式的开销以及效率都有不小的问题。在对外部系统时使用REST API的方式去调用是个好方法,但在内部服务之间的调用中就会显得开销很大,所以,我们可以在内部服务之间使用RPC调用。

1、项目结构

在这里插入图片描述
在该demo中主要有以上四个项目:
parent: 父项目,所有依赖的管理包,在该项目的开发中,我们将所有的依赖以及依赖的版本都描述在parent项目中,在实际不同模块的开发中,我们只需要引入parent包,便可以在从中添加依赖而不再去关注依赖的版本。
provider: 服务提供方,用来提供服务的一方。
consumer: 服务消费方,负责消费服务。
common: 抽离出来的共组模块。在该模块中定义我们要调用的接口以及涉及到的entity、vo、dto等类,同时也可定义一些公用的工具类、枚举类等等

2、搭建nacos注册中心、配置中心

此处不过多详细描述,下载并安装配置nacos即可

3、项目依赖

项目中的所有依赖都在parent项目中进行管理,所以我们这里先看parent的pom文件。

<?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"><modelVersion>4.0.0</modelVersion><groupId>com.fawu</groupId><artifactId>parent</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.4</version></parent><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.4</spring-boot.version><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version><spring-cloud.version>2022.0.0</spring-cloud.version><dubbo.version>3.3.0-beta.1</dubbo.version><mybatis-plus.version>3.5.1</mybatis-plus.version><druid.version>1.2.8</druid.version><mapstruct.version>1.4.1.Final</mapstruct.version><hutool.version>5.8.20</hutool.version><lombok.version>1.18.26</lombok.version><lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version><maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version><spring-cloud-bootstrap.version>4.0.3</spring-cloud-bootstrap.version><poi.version>4.1.2</poi.version><fastjson.version>2.0.32</fastjson.version><commons-i3o.version>1.3.2</commons-i3o.version></properties><dependencyManagement><!-- SpringBoot 依赖配置 --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud 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><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>${spring-cloud-bootstrap.version}</version></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><!-- Alibaba Spring Context extension --><dependency><groupId>com.alibaba.spring</groupId><artifactId>spring-context-support</artifactId><version>1.0.11</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- 数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- mapstruct 对象拷贝--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version>${lombok-mapstruct-binding.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- common io --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>none</mainClass>     <!-- 取消查找本项目下的Main方法:为了解决Unable to find main class的问题 --><classifier>execute</classifier>    <!-- 为了解决依赖模块找不到此模块中的类或属性 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

在这里插入图片描述
在这里插入图片描述
其中的主要依赖为上图所示,依赖版本都是Springboot3.x之后适配的版本。

4、common模块

在该模块中我们需要配置需要调用的接口。首先来看一下他的依赖

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.fawu</groupId><artifactId>parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>common</artifactId><version>0.0.1-SNAPSHOT</version><name>common</name><description>common</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></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></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

我们可以看到在pom文件的开头有如下配置:

    <parent><groupId>com.fawu</groupId><artifactId>parent</artifactId><version>1.0-SNAPSHOT</version></parent>

进行该配置后即可引用parent管理的依赖版本,不需要再去关注依赖的版本了。其余的便是常规的一些依赖。
然后便是需要在该项目中创建在服务消费者中调用,在服务提供者中实现的接口:

public interface UserService {/*** 测试登录接口* @param username* @return*/String login(String username);
}

5、provider服务提供者

该模块用来提供服务,也就是实现在common模块中提出的login接口。

pom文件

照例先看一下pom文件。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.fawu</groupId><artifactId>parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>Provider</artifactId><version>0.0.1-SNAPSHOT</version><name>ProviderDemo</name><description>服务提供者</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>com.fawu</groupId><artifactId>common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency><!-- Alibaba Spring Context extension --><dependency><groupId>com.alibaba.spring</groupId><artifactId>spring-context-support</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

我们可以看到在该项目中引入了spring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-alibaba-nacos-configspring-cloud-starter-bootstrapdubbo依赖。
其中spring-cloud-starter-alibaba-nacos-discovery是使用nacos作为注册中心的依赖,spring-cloud-starter-alibaba-nacos-config是使用nacos作为配置中心的依赖,spring-cloud-starter-bootstrap为配置读取bootstrap配置的依赖,dubbo即为使用RPC进行通讯的依赖。

bootstrap.yml

接下来对模块进行配置,创建bootstrap.yml文件


server:port: 8087
spring:application:name: providerDemocloud:nacos:discovery:server-addr: 127.0.0.1:8848enabled: trueregister-enabled: truenamespace: demogroup: DEFAULT_GROUPconfig:server-addr: 127.0.0.1:8848extension-configs[0]:data-id: providerDemo.yamlgroup: DEFAULT_GROUPrefresh: truefile-extension: ymlnamespace: demogroup: DEFAULT_GROUP

我们可以看到在该配置中配置了端口号,配置了nacos作为注册中心时的地址以及命名空间、分组,配置了nacos作为配置中心的地址以及要加载的配置的dataId、分组。

在nacos中添加配置

此时我们打开nacos的地址
http://127.0.0.1:8848/nacos/index.html
1)、创建命名空间
选择命名空间
在这里插入图片描述
点击新建命名空间
在这里插入图片描述
创建demo命名空间
2)、添加配置
打开配置管理/配置列表,选择我们刚刚创建的demo的空间,点击创建配置。
在这里插入图片描述
在这里插入图片描述
创建providerDemo.yaml配置,配置内容如下:

spring:# 前后端传输时间相差8小时问题jackson:time-zone:GMT+8date-format:yyyy-MM-dd HH:mm:ssdatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/bot?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&            useSSL=false&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8&serverTimezone=Asia/Shanghaiusername: rootpassword: rootredis:# Redis数据库索引(默认为0)database: 0# Redis服务器地址host: 127.0.0.1# Redis服务器连接端口port: 6379# Redis服务器连接密码(默认为空)password: # 连接超时时间(毫秒)timeout: 3000mybatis:configuration:cache-enabled: falsemap-underscore-to-camel-case: truemapper-locations: classpath:mapping/**/*Mapper.xmltype-aliases-package: com.onlyoa.common.entitypagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSqlpage-size-zero: truedubbo:cloud:subscribed-services: consumerDemoscan:#指定 Dubbo 服务实现类的扫描基准包base-packages: com.fawu protocol:#使用dubbo协议name: dubbo # port 为协议端口( -1 表示自增端口,从 20880 开始)port: -1 registry:#配置中心nacos地址address: nacos://127.0.0.1:8848 config-center:namespace: democonsumer:timeout: 300000user:test:userId: 123456

我们可以看到在该配置中和我们常规springboot项目中的配置文件基本相似,只是多了一个dubbo的配置项。

启动类

@SpringBootApplication
@EnableDubbo
@EnableDiscoveryClient
public class ProviderDemoApplication {public static void main(String[] args) {SpringApplication.run(ProviderDemoApplication.class, args);}}

我们可以看到启动类上多出了@EnableDubbo@EnableDiscoveryClient两个注解,顾名思义,一个为dubbo的配置注解,一个为注册中心的配置注解。

UserServiceImpl

终于到了服务的实现了,在该模块中我们引入了

		<dependency><groupId>com.fawu</groupId><artifactId>common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

也就是我们在前面所编写的仅有一个接口的common模块。接下来我们来实现该接口。

import com.fawu.common.service.UserService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Value;/*** 用户服务层实现** @author <a href="https://github.com/fawu-K">fawu.K</a>* @since 2024-03-16 14:44**/@DubboService
public class UserServiceImpl implements UserService {@Value("${user.test.userId}")private String userId;@Overridepublic String login(String username) {if (userId.equals(username)) {return "账号正确!";} else {return "账号错误!";}}
}

需要注意,在该类上添加了@DubboService注解,该注解表明了这是一个dubbo服务,即可以通过RPC进行调用的服务。

consumer服务消费者

pom文件

照例,看一下pom文件吧

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.fawu</groupId><artifactId>parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>Consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>ConsumerDemo</name><description>服务消费者</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>com.fawu</groupId><artifactId>common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>

可以看到该依赖和服务提供者的依赖一致,所以从此刻我们就能明白,一个模块既可以是服务提供者也可以是服务消费者。

bootstrap.yml

server:port: 7777
spring:application:name: consumerDemocloud:nacos:discovery:server-addr: http://127.0.0.1:8848/enabled: trueregister-enabled: truenamespace: demogroup: DEFAULT_GROUPconfig:server-addr: 127.0.0.1:8848extension-configs[0]:data-id: consumerDemo.yamlgroup: DEFAULT_GROUPrefresh: truefile-extension: ymlnamespace: demogroup: DEFAULT_GROUP

此配置依旧和服务提供者的配置基本相同,只有配置的data-id不同

nacos配置

打开nacos网址创建配置
在这里插入图片描述
配置内容:

spring:# 前后端传输时间相差8小时问题jackson:time-zone:GMT+8date-format:yyyy-MM-dd HH:mm:ssservlet:multipart:max-file-size: 100MBmax-request-size: 100MBdatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/bot?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&            useSSL=false&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8&serverTimezone=Asia/Shanghaiusername: rootpassword: rootredis:# Redis数据库索引(默认为0)database: 0# Redis服务器地址host: 127.0.0.1# Redis服务器连接端口port: 6379# Redis服务器连接密码(默认为空)password: # 连接超时时间(毫秒)timeout: 3000cloud:sentinel:transport:#配置Sentinel dashboard地址dashboard: 127.0.0.1:8848#默认8719端口,假如被占用会自动从8719开始依次+1扫描,直到找到未被占用的端口port: 8719datasource:dsl:nacos:server-addr: 127.0.0.1:8848 #配置中心nacos地址namespace: demo #配置nacos地址dataId: onlyone-consumer-sentinelgroupId: SENTINEL_GROUPdata-type: jsonrule-type: flowdubbo:registry:#配置中心nacos地址address: nacos://127.0.0.1:8848 scan:#指定 Dubbo 服务实现类的扫描基准包base-packages: com.fawucloud:subscribed-services: providerDemoapplication:qos-enable: falsename: consumerDemoconfig-center:namespace: demoprotocol:#使用dubbo协议name: dubbo # port 为协议端口( -1 表示自增端口,从 20880 开始)port: -1 consumer:timeout: 300000mybatis:configuration:cache-enabled: falsemap-underscore-to-camel-case: truemapper-locations: classpath:mapping/**/*Mapper.xmltype-aliases-package: com.onlyoa.common.entitysftp:# 服务器地址host: 127.0.0.1# 端口port: 22# 账号userName: root# 密码password: root# 图片的根路径basePath: /home/nginx/image# 音频的根路径audioPath: /home/nginx/audio# 视频的根路径videoPath: /home/nginx/video# channel连接超时时间timeout: 30000#连接次数count: 3#休眠时间sleepTime: 6000#服务器头像地址titleImgsPath: http://127.0.0.1:80/image/#服务器音频地址titleAudiosPath: http://127.0.0.1:80/audio/#服务器视频地址titleVideosPath: http://127.0.0.1:80/video/

启动类

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
@EnableDubbo
public class ConsumerDemoApplication {public static void main(String[] args) {SpringApplication.run(ConsumerDemoApplication.class, args);}}

UserController

import com.fawu.common.service.UserService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** 用户控制层** @author <a href="https://github.com/fawu-K">fawu.K</a>* @since 2024-03-16 14:47**/
@RestController
public class UserController {@DubboReferenceprivate UserService userService;@GetMapping("login")public String login(String username) {return userService.login(username);}
}

对于使用dubboRPC调用的服务使用@DubboReference注解进行调用。

测试

http://127.0.0.1:7777/login?username=123456
此时我们调用login接口,就会看到如下内容:
在这里插入图片描述
当然了也可以是改一下username:
在这里插入图片描述

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git——本地使用详解

目录 Git1、开始版本控制1.1、初始化Repository1.2、使目录脱离Git控制 2、把文件交给Git管控2.1、创建文件后交给Git2.2、git add之后再次修改文件2.3、git add "--all"与"."参数区别2.4、把暂存区的内容提交到存储库里存档 3、工作区、暂存区与存储库3.1…

车规级芯片又添新成员!NCV7520FPR2G 可编程六路低压侧 MOSFET 预驱动器

NCV7520FPR2G是一款可编程六沟道低压侧 MOSFET 预驱动器&#xff0c;是一个 FLEXMOS™ 汽车级产品系列&#xff0c;用于驱动逻辑电平 MOSFET。NCV7520FPR2G可通过串行 SPI 和并行输入组合控制。该器件提供可兼容 3.3 V/5 V 的输入&#xff0c;串行输出驱动器可基于 3.3 V 或 5 …

Linux常用操作命令和服务器硬件基础知识

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

【数据库】数据库基本知识

1.数据库的四个基本概念 1.1 数据&#xff1a;描述事务的符号记录 1.2 数据库&#xff1a;概括的说&#xff0c;数据库数据具有永久存储、有组织的、可共享的大量数据的集合&#xff0c;数据库中的数据按一定的数据模型组织、描述和储存&#xff0c;具有较小的冗余度、较高的…

大数据架构设计

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/136657478 一. 基本概念 1、解决传统数据架构无法及时响应用户请求的常用解决方法&#xff1a; ● 增加异步处理队列&#xff0c;通过工作处理层批量处理异步处理队列中的数据修改请求。 ● 建立数据库…

进入docker容器中安装软件失败解,国外源慢,时间不同步,执行命令权限不够等问题解决办法

进入docker容器中安装软件失败解&#xff0c;时间不同步, 国外源慢&#xff0c;执行命令权限不够 等问题解决办法 首先我进入docker容器中&#xff0c;为了安装一个软件&#xff0c;引出了很多报错问题&#xff0c;报错如下&#xff1a; 1、无法用 ifconfig 或者 ip addr 的方…

【解读】NIST网络安全框架CSF 2.0

2014年&#xff0c;NIST&#xff08;美国国家标准与技术研究所&#xff0c;类似于中国的工信部&#xff09;首次发布了网络安全框架CSF&#xff08;Cybersecurity Framework)&#xff0c;十年后&#xff0c;在2024年2月26日发布了重大更新&#xff08;CSF 2.0&#xff09;&…

第100+2步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 2

基于WIN10的64位系统演示 一、写在前面 各位大佬&#xff0c;不知大家是否把结果一复现出来了呢&#xff1f; 我们继续往下看&#xff0c;首先复习一下&#xff1a; 《PLoS One》杂志的2023年一篇题目为《A comparative study of three models to analyze the impact of ai…

HCIP —— 交换 (VLAN)

VLAN --- 虚拟局域网 在 HCIA 中 &#xff0c;已经学过交换机的一些基础配置&#xff0c;下面进行回顾一些简单的内容。 1.创建VLAN VLAN ID --- 区别和标识不同的VLAN 使用范围&#xff1a;0-4095 &#xff0c; 由12位二进制构成。 0 和 4095 作为 保留的VLAN。 …

simulink汽车动力特性模型

1、内容简介 略 76-可以交流、咨询、答疑 simulink汽车动力特性模型 节气门、Gasoline Engine、离合器、作动器 2、内容说明 略 齿轮半径1 0.06; 齿轮半径2 0.072; 有效齿轮半径 2/3*(radius2^3 - radius1^3)/(radius2^2 - radius1^2); 输入传动比 2.1; 输出传动比 1…

洛谷——查单词+简单题+火车线路 +无聊的数列+最大数——线段树

一、 线段树 P2412 查单词 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2412 解析&#xff1a; 板子题&#xff0c;区间搜索&#xff0c;不需要区间修改 #include <bits/stdc.h> using namespace std; #define endl \n #define i…

【PHP + 代码审计】函数详解2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

HTML5实现一笔画游戏

HTML5实现一笔画游戏 一笔画问题 一笔画是图论科普中一个著名的问题&#xff0c;它起源于柯尼斯堡七桥问题科普。当时的东普鲁士哥尼斯堡城中有一条河&#xff0c;在这条河上有七座桥&#xff1a; 蓝色的代表河&#xff0c;这条河将城市分开成为四个区域&#xff0c;而七个橙…

深度学习 精选笔记(13.2)深度卷积神经网络-AlexNet模型

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

深入浅出Hive性能优化策略

我们将从基础的HiveQL优化讲起&#xff0c;涵盖数据存储格式选择、数据模型设计、查询执行计划优化等多个方面。会的直接滑到最后看代码和语法。 目录 引言 Hive架构概览 示例1&#xff1a;创建表并加载数据 示例2&#xff1a;优化查询 Hive查询优化 1. 选择适当的文件格…

unity学习(61)——hierarchy和scene的全新认识+模型+皮肤+动画controller

刚刚开始&#xff0c;但又结束的感觉&#xff1f; 1.对hierarchy和scene中的内容有了全新的认识 一定要清楚自己写过几个scene&#xff1b;每个scene之间如何跳转&#xff1b;build setting是add当前的scene。 2.此时的相机需要与模型同级&#xff0c;不能在把模型放在相机下…

STM32的USART能否支持9位数据格式话题

1、问题描述 STM32L051 这款单片机。平常的 USART 串口传输是 8 位数据&#xff0c;但是他的项目需要用串口传输 9 位数据。当设置为 8 位数据时&#xff0c;串口响应中断正常。但是&#xff0c;当设置为 9 位数据时&#xff0c;串口就不产生中断了。USART2 的 ISR 寄存器 RXN…

STM32G4高精度定时器的同步功能

1、引言 STM32G474 所含的高精度定时器(HRTIMER)其实包含了多个定时器&#xff0c;多个定时器之间可以单独工作&#xff0c;也可以进行同步&#xff0c;且高精度定时器还能与片上的其他定时器以及其他芯片进行同步&#xff0c;本文将对高精度定时器的同步功能进行介绍。 2、定…

I2S 协议简介

I2S(Inter-IC Sound)是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和 I2C、SPI 这些常见的通信协议一样&#xff0c;I2S 总线用于主控制器和音频 CODEC 芯片之间传输音频数据。 I2S 接口需要 3 根信号线(如果需要实现收和发&#xff0c;那么就要 4 根信…

Django项目创建和settings设置

2021版本的pycharm有bug,需要将settings.py中 把BASE_DIR后面的/换成, url:统一资源定位符 互联网上每个文件都有一个唯一的url,它包含的信息指出文件的位置以及浏览器应该怎么处理它 语法: protocol://hostname[:port]/path[?query][#fragment] protocol:协议 hostname:主…