# Spring Cloud Alibaba Nacos_配置中心与服务发现(四)

Spring Cloud Alibaba Nacos_配置中心与服务发现(四)

一、Nacos 配置管理-集群部署

1、 把 nacos 应用程序包,复制3份,分别命名为 nacos1, nacos2, nacos3

分别在 conf 目录下,修改 application.properties 配置文件,
更改端口号为:8848, 8849,8850	
nacos.inetutils.ip-address=127.0.0.1

2、配置集群模式:

分别在 conf 目录下,修改 cluster.conf.example 配置文件为:cluster.conf
并添加如下代码:

#it is ip
#example
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850

3、集群模式启动 nacos

startup -m cluster 

4、修改配置文件 bootstrap.yml 配置文件,添加集群配置。

	
##  C:\java-test\idea2019\nacos_config\service1\src\main\resources\bootstrap.yml## bootstrap.yml 配置文件加载顺序优先于 application.yml 配置文件。
server:port: 56010  #启动端口 命令行注入spring:application:name: service1cloud:nacos:config:
#        enabled: false  # 关闭配置# 1) 通过 application 的 name 加 file-extension 后缀名称 :service1.yaml 配置的 DataId 优先级最高。server-addr: 127.0.0.1:8848, 127.0.0.1:8849, 127.0.0.1:8850  #配置中心地址file-extension: yaml  #dataid 的名称是 application 的 name 加 file-extension 名称 :service1.yamlnamespace: eae273b2-9298-4b99-b4aa-a3d5ea5df089  #开发环境group: TEST_GROUP  #测试组# 2)扩展的 DataId 配置 优先级次之。config external configuration# 1.Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新: common.age=18  common.address=beijing # 优先级低于 ext-config[1]  ext-config[2]ext-config[0]:data-id: ext-config-common01.properties# 2.Data Id 不在默认的组,不支持动态刷新:  common.birthday=1990-8-8 # 优先级高于 ext-config[0]ext-config[1]:data-id: ext-config-common02.propertiesgroup: GLOBALE_GROUP# 3.Data Id 既不在默认的组,也支持动态刷新: common.fullname=djh # 优先级高于 ext-config[0] 和 ext-config[1]ext-config[2]:data-id: ext-config-common03.propertiesgroup: REFRESH_GROUPrefresh: true  #动态刷新
#        # 3)自定义共享 DataId 配置,只支持 DEFAULT_GROUP 分组,优先级最低。
#        shared-dataids: ext-config-common01.properties, ext-config-common03.properties, ext-config-common03.properties
#        refreshable: ext-config-common01.properties

5、试着停掉一个 nacos 服务 ,启动 nacos 服务 (运行启动类 ),访问不受影响。

	
##  C:\java-test\idea2019\nacos_config\service1\src\main\resources\bootstrap.yml## bootstrap.yml 配置文件加载顺序优先于 application.yml 配置文件。
server:port: 56010  #启动端口 命令行注入spring:application:name: service1cloud:nacos:config:
#        enabled: false  # 关闭配置# 1) 通过 application 的 name 加 file-extension 后缀名称 :service1.yaml 配置的 DataId 优先级最高。server-addr: 127.0.0.1:8848, 127.0.0.1:8849, 127.0.0.1:8850  #配置中心地址file-extension: yaml  #dataid 的名称是 application 的 name 加 file-extension 名称 :service1.yamlnamespace: eae273b2-9298-4b99-b4aa-a3d5ea5df089  #开发环境group: TEST_GROUP  #测试组# 2)扩展的 DataId 配置 优先级次之。config external configuration# 1.Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新: common.age=18  common.address=beijing # 优先级低于 ext-config[1]  ext-config[2]ext-config[0]:data-id: ext-config-common01.properties# 2.Data Id 不在默认的组,不支持动态刷新:  common.birthday=1990-8-8 # 优先级高于 ext-config[0]ext-config[1]:data-id: ext-config-common02.propertiesgroup: GLOBALE_GROUP# 3.Data Id 既不在默认的组,也支持动态刷新: common.fullname=djh # 优先级高于 ext-config[0] 和 ext-config[1]ext-config[2]:data-id: ext-config-common03.propertiesgroup: REFRESH_GROUPrefresh: true  #动态刷新
#        # 3)自定义共享 DataId 配置,只支持 DEFAULT_GROUP 分组,优先级最低。
#        shared-dataids: ext-config-common01.properties, ext-config-common03.properties, ext-config-common03.properties
#        refreshable: ext-config-common01.properties

6、浏览器地址栏输入:http://localhost:56010/configs2


二、Nacos 配置管理-课程总结

1、查询所有进程及线程端口占用情况,并关闭某端口的方法

1.1、windows 系统下( cmd 模式下):

1)查询当前系统所有网络连接和监听端口以及对应的进程标识(PID):netstat -aon 
netstat -nao 2)查询特定端口占用情况,端口对应的 PID,netstat -ano | findstr <端口号>如:要查询 8848 端口占用情况:netstat -aon | findstr 8848
netstat -nao |findstr "8848"或者:netstat -aon | findstr \"8848\"3)若该 PID0,则查看指定 PID 的进程 tasklist | findstr 0
或者:
tasklist | findstr “0”## 如:查询 PID11664 对应的程序进程:
tasklist | findstr 11664
tasklist | findstr "11664"4)如果查看到是哪个进程或者程序占用了 8848 端口,
得知是哪个进程后,若该进程结束对后续操作无影响,则通过 taskkill /T /F /PID 0 来结束该进程。## 强制结束进程,包括所有关联的线程
taskkill /T /F /PID 0 
taskkill /T /F /PID 11664 5)netstat 命令参数全解析
netstat -help
1.2、linux 系统下:

1)所有正在使用的端口及关联的进程/应用:netstat -nap  ## 列出当前系统占用的端口ps aux  ## 列出当前系统所有的进程2)列出具体的端口占用情况:netstat -tunlp | grep 3306  ## 端口号
netstat -tunlp | grep mysql  ## 进程名称
netstat -tunlp | grep 29520  ## 进程ID 3)检查那个端口被那个进程占用:netstat -lnp | grep 2222  ## 查看端口 2222 的占用情况4)查看进程的详细信息ps 6789 
ps -aux | grep 67895)关闭进程,发送 kill 信号到指定的进程或进程组。使它们根据该信号进行操作。kill -s 9 PID
kill -s SIGKILL PID 
kill -s KILL PID ## 杀掉进程,重新启动 apache 
kill -9 6 789  ## 杀掉编号为 6789 的进程

2、nacos2.x 启动出错问题分析

nacos2.0 以上,双击 startup.cmd 闪退,或者 cmd 下执行 startup 启动时的错分析

nacos2.x 以上,默认以集群方式启动,如果你未配置相关集群参数,
就会启动闪退或报错。
所以单机模式启动需加参数启动服务。

  nacos-33.png  图片 nacos2.0-1.png

解决:添加参数,以改变成单机模式启动:

  • 单机模式启动
    startup.cmd -m standalone

  • 集群模式启动
    startup.cmd -m cluster

   nacos-34.png  图片 nacos2.0-2.png

   nacos-35.png  图片 nacos2.0-3.png

3、windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

3.1、首先以下方法亲测无效:

1)需要在数据库 URL 链接配置信息中 添加 allowPublicKeyRetrieval=true 无效
db.url.0=**&allowPublicKeyRetrieval=true

2) 在 nacos 根目录下新建文件夹 plugins/mysql/ 文件夹,并上传相应驱动
mysql-connector-java-8.0.23.jar 无效。

3)查看 …/nacos/bin/startup.cmd 文件 mysql 加载配置,正确,无效。

set “JAVA_OPT=%JAVA_OPT% -Xbootclasspath/a:%BASE_DIR%\plugins\cmdb:%BASE_DIR%\plugins\mysql”
set “JAVA_OPT=%JAVA_OPT% -Dnacos.home=%BASE_DIR%”
set “JAVA_OPT=%JAVA_OPT% -Dloader.path=%BASE_DIR%/plugins/health -jar %BASE_DIR%\target\nacos-server.jar”
set “JAVA_OPT=%JAVA_OPT% --spring.config.location=%CUSTOM_SEARCH_LOCATIONS%”
set “JAVA_OPT=%JAVA_OPT% --logging.config=%BASE_DIR%/conf/nacos-logback.xml”

4)检查 application.properties 文件中,配置外部数据库链接用户名密码等,正确,无效。

#mysql datasource
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=******

5) 开启 mysql8.0 root 远程权限,无效。

mysql> use mysql
Database changed
mysql> select host,user from user;
±----------±-----------------+
| host | user |
±----------±-----------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
| localhost | testuser |
±----------±-----------------+
5 rows in set (0.06 sec)

mysql> update user set host=‘%’ where user=‘root’;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.07 sec)

6)下载 nacos-1.1.3 源码,idea 打开,修改,重新打包,失败!

  • 1)修改 nacos 项目根目录下的 pom.xml,手动指定 mysql 驱动版本

(C:\java-test\idea2019\nacos-1.1.3\pom.xml)

mysql mysql-connector-java 8.0.23
  • 2)修改 naming[nacos-naming] 下 相关类

( 修改 com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor.java )

// 修改前
//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

// 修改后
import com.mysql.cj.jdbc.MysqlDataSource;

  • 3) 修改mysql连接参数:mysql8.X版本需要指定时区等参数(这里可不修改,但最好修改一下)

找到 nacos-console 下的 src/main/resources/META-INF/nacos-default.properties
并修改 db.url 的数据库连接配置为

characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

// 修改前
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

// 修改后
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

  • 4)打包运行,执行构建命令:mvn install 失败!!!

mvn -Prelease-nacos -DskipTests clean install -U

打包失败!!!

3.2、 解决方案1:

1)在 nacos 根目录下新建文件夹 plugins/mysql/ 文件夹,并上传相应驱动
mysql-connector-java-8.0.23.jar 无效。

2)将 nacos 目录下的 conf\application.properties 改名为 bootstrap.properties
关键一步,否则上面的不会起作用。

3) 在配置文件 conf/bootstrap.properties 中,添加数据库配置:

#mysql datasource
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=yourpassword

4)运行脚本bin/startup.cmd(linux系统运行.sh脚本)

5)启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos

用户名:nacos 密码:nacos

3.3、解决方案2:

下载 nacos-1.1.3 源码,idea 打开,修改,重新打包,

1)修改 nacos 项目根目录下的 pom.xml,手动指定 mysql 驱动版本

(C:\java-test\idea2019\nacos-1.1.3\pom.xml)

mysql mysql-connector-java 8.0.23

2)修改 naming[nacos-naming] 下 相关类

( 修改 com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor.java )

// 修改前
//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

// 修改后
import com.mysql.cj.jdbc.MysqlDataSource;

3) 修改mysql连接参数:mysql8.X版本需要指定时区等参数(这里可不修改,但最好修改一下)

找到 nacos-console 下的 src/main/resources/META-INF/nacos-default.properties
并修改 db.url 的数据库连接配置为

characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

// 修改前
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

// 修改后
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

4)打包运行,执行构建命令:mvn install 打包失败!!!

mvn -Prelease-nacos -DskipTests clean install -U 打包失败!!!

5)打包 后的文件在 distribution 模块下的 target 目录,拷贝至定义好的目录

target.nacos-server-1.1.3.nacos

6) 修改配置文件 conf/application.properties

// 找到nacos下的conf/application.properties 增加mysql数据源配置
#mysql datasource
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=yourpassword

7)运行脚本bin/startup.cmd(linux系统运行.sh脚本)

8)启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos

用户名:nacos 密码:nacos

4、nacos 启动 报堆内存问题

“nacos is starting with cluster”
Error occurred during initialization of VM
Could not reserve enough space for object heap

4.1、打开 …/nacos/bin/startup.cmd 修改以下项( nacos1.x 版本,如:nacos-1.1.3 )

把 set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g
更改为:set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn256m

如:

if %MODE% == “standalone” (
set “JAVA_OPT=%JAVA_OPT% -Xms512m -Xmx512m -Xmn256m”
set “JAVA_OPT=%JAVA_OPT% -Dnacos.standalone=true”
) else (
set “JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”
set “JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof”
set “JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages”
)

4.2、打开 …/nacos/bin/startup.cmd 修改以下项( nacos2.x 版本,如:nacos-2.2.2 )

把 set "NACOS_JVM_OPTS=-server -Xms2g -Xmx2g -Xmn1g
更改为 set "NACOS_JVM_OPTS=-server -Xms512m -Xmx512m -Xmn256m

如:

rem if nacos startup mode is cluster
if %MODE% == “cluster” (
echo “nacos is starting with cluster”
if %EMBEDDED_STORAGE% == “embedded” (
set “NACOS_OPTS=-DembeddedStorage=true”
)

set "NACOS_JVM_OPTS=-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof -XX:-UseLargePages"

)

5、nacos2.x 集群启动报错问题

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘authConfigs’: Invocation of init method failed; nested exception is ErrCode:50002, ErrMsg:Empty identity, Please set nacos.core.auth.server.identity.key and nacos.core.auth.server.identity.value, detail: https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

解决方案:

5.1、打开 …/nacos-server-2.2.2\nacos\conf\application.properties

修改以下 3 项( nacos2.x 版本,如:nacos-2.2.2 )

##1)修改前
#db.pool.config.minimumIdle=2
##1)修改后,此项非必要,但最好修改一下
db.pool.config.minimumIdle=4

##2)修改前
#nacos.core.auth.enabled=false
##2)修改后:开启鉴权
nacos.core.auth.enabled=true

##3)修改前
#nacos.core.auth.server.identity.key=
#nacos.core.auth.server.identity.value=
##3)修改后 : 配置自定义身份识别的 key 和 value (不可为空)
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos

5.2、 有可能是端口冲突问题,修改端口号,我修改了两次端口号( 8852 --> 8850 --> 8855 )
5.3、堆内存问题,打开 …/nacos/bin/startup.cmd

修改以下项( nacos2.x 版本,如:nacos-2.2.2 )

把 set "NACOS_JVM_OPTS=-server -Xms2g -Xmx2g -Xmn1g
更改为 set "NACOS_JVM_OPTS=-server -Xms512m -Xmx512m -Xmn256m

如:

rem if nacos startup mode is cluster
if %MODE% == “cluster” (
echo “nacos is starting with cluster”
if %EMBEDDED_STORAGE% == “embedded” (
set “NACOS_OPTS=-DembeddedStorage=true”
)

set "NACOS_JVM_OPTS=-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof -XX:-UseLargePages"

)

5.4、修改后,重新启动 nacos2.x

nacos2.x 集群启动报错问题,nocos 堆内存问题,堆内存溢出,

6、nacos2.x 访问地址无登录界面,登录后显示:当前集群没有开启鉴权问题

(版本2.2.2)

解决方案:

6.1、打开 …/nacos-server-2.2.2\nacos\conf\application.properties

修改以下 3 项( nacos2.x 版本,如:nacos-2.2.2 )

##1)修改前
#nacos.core.auth.enabled=false
##1)修改后:开启鉴权
nacos.core.auth.enabled=true

#2)关闭使用 user-agent 判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false

##3)修改前:
#nacos.core.auth.caching.enabled=false
##3)修改后:权限缓存开关,开启后权限缓存的更新默认有15秒的延迟,默认 : false
nacos.core.auth.caching.enabled=true

##4)修改前
#nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=
##4)修改后 : 配置自定义身份识别的 key 和 value (不可为空)
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos

##5)修改前
nacos.core.auth.plugin.nacos.token.secret.key=
##5)修改后:自定义用于生成JWT令牌的密钥,注意:原始密钥长度不得低于32字符,且一定要进行Base64编码,否则无法启动节点。
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey01234567890123456789012345345678999987654901234567890123456789}

6.2、修改后,重新启动 nacos2.2.2

7、当改变 nacos 版本时(如 nacos-1.1.3 改变为 nacos-2.2.2 ),

导入的 nacos-mysql.sql 没有变时,
启动 nacos 浏览器登录 nacos 界面时,点击权限管理出现以下错误caused: PreparedStatementCallback; bad SQL grammar [SELECT count(*) FROM permissions WHERE 1=1 ]; nested exception is java.sql.SQLSyntaxErrorException: Table 'nacos_config.permissions' doesn't exist;caused: Table 'nacos_config.permissions' doesn't exist;

解决方案:

1)SQLyon 或其他 登录 mysql 数据库 nacos_config 清空数据库表

右键 nacos_config 数据库
–> 更多数据库操作
–> 清空数据库…

2)重新导入新的数据表,如 nacos-2.2.2 版本 conf 目录下的 mysql-schema.sql

右键 nacos_config 数据库
–> 导入
–> 执行 SQL 脚本
–> 点击 …
–> 浏览选择
…\nacos-server-2.2.2\nacos\conf\mysql-schema.sql
–> 执行

重新导入,即可。

上一节关联链接请点击
# Spring Cloud Alibaba Nacos_配置中心与服务发现(三)

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

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

相关文章

数据结构——循环队列

目录 循环队列的基本知识 循环队列的实现 定义 各个接口的实现 循环队列的基本知识 循环队列的定义 循环队列&#xff08;Circular Queue&#xff09;是一种使用固定大小的数组实现的队列&#xff0c;它将数组的首尾相连&#xff0c;形成环形&#xff0c;以充分利用空间并实…

Spring Boot的配置文件

目录 一、配置文件 1.properties为后缀的配置文件 1.1基本语法 1.2读取配置文件 1.3properties的优缺点 1.4加中文注释出现乱码 2.yml格式的配置文件 2.1基础语法 2.2读取配置文件 2.2.1对象存储到配置文件中 2.3yml的优缺点 2.4用不用加单引号或者双引号呢&#xf…

【C语言篇】编译和链接以及预处理介绍(上篇)

文章目录 前言翻译环境和运行环境翻译环境编译预处理&#xff08;预编译&#xff09;编译词法分析语法分析语义分析 汇编 链接 运行环境预处理&#xff08;预编译&#xff09;详解预定义符号#define定义常量#define定义宏带有副作用的宏参数宏替换的规则宏和函数的对比 写在最后…

opencv基础的图像操作

1.读取图像&#xff0c;显示图像&#xff0c;保存图像 #图像读取、显示与保存 import numpy as np import cv2 imgcv2.imread(./src/1.jpg) #读取 cv2.imshow("img",img) #显示 cv2.imwrite("./src/2.jpg",img) #保存 cv2.waitKey(0) #让程序进入主循环(让…

RAG系列之四:深入浅出 Embedding

在 RAG 系列之三&#xff1a;文本切分中介绍了如何将文本切分成更小的语义单元&#xff0c;接下来便是将拆分的文本块进行向量化。 什么是文本向量化&#xff1f; 文本向量化就是将文本数据转成数字数据&#xff0c;例如&#xff1a;将文本 It was the best of times, it was…

Android全面解析之context机制(二): 从源码角度分析context创建流程(上)

前言 这篇文章从源码角度分析context创建流程。 在上一篇Android全面解析之Context机制(一) :初识context一文中讲解了context的相关实现类。经过前面的讨论&#xff0c;读者对于context在心中有了一定的理解。但始终觉得少点什么&#xff1a;activity是什么时候被创建的&…

Python数据可视化案例——地图

目录 简单案例&#xff1a; 进阶案例&#xff1a; 继上文数据可视化案例&#xff0c;今天学习用pyecharts练习数据可视化案例2-构建地图。 简单案例&#xff1a; 首先构建一个简单的地图。 代码&#xff1a; import json from pyecharts.charts import MapmapMap() data[…

培训学校课程管理系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设残哥 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目、 源…

大数据面试SQL(八):求连续段的起始位置和结束位置

文章目录 求连续段的起始位置和结束位置 一、题目 二、分析 三、SQL实战 四、样例数据参考 求连续段的起始位置和结束位置 一、题目 有一张表t2_id记录了id&#xff0c;id不重复&#xff0c;但是会存在间断&#xff0c;求出连续段的起始位置和结束位置。 样例数据&…

结构体structure、共用体union

目录 结构体 结构体类型的定义形式 结构体类型的大小 内存计算例子 共用体union 用共用体判断大小端 结构体和共用体对比 qsort&#xff08;&#xff09; 结构体 结构体类型——用来描述复杂数据的一种数据类型 构造类型&#xff08;用户自定义类型&#xff09; struc…

CUDA+tensorflow+python+vscode在GPU下环境安装及问题汇总与解答

2024.8.14 因为要做深度学习&#xff0c;需要安装tensorflowgpu的环境&#xff0c;每次都搞不好整的很生气&#xff0c;本次将安装过程中参考的一些大佬的博客和安装过程中遇到的问题及解决方案总结一下&#xff0c;希望以后不要在这件事情上浪费时间。安装环境其实也没有想象中…

Halcon图像平滑与去噪

Halcon图像平滑与去噪 文章目录 Halcon图像平滑与去噪1. 均值滤波2. 中值滤波3. 高斯滤波5. 光照不均匀 有时拍摄的图像中会存在很多杂点和噪声&#xff0c;对于比较均匀的噪声&#xff0c;可以考虑用软件的算法进行 消除。例如&#xff0c;可以用图像平滑的方法进行去噪&#…

uniapp 自定义全局弹窗

自定义全局弹窗可在js和.vue文件中调用&#xff0c;unipop样式不满足&#xff0c;需自定义样式。 效果图 目录结构 index.vue <template><view class"uni-popup" v-if"isShow"><view class"uni-popup__mask uni-center ani uni-cust…

数学建模——启发式算法(蚁群算法)

算法原理 蚁群算法来自于蚂蚁寻找食物过程中发现路径的行为。蚂蚁并没有视觉却可以寻找到食物&#xff0c;这得益于蚂蚁分泌的信息素&#xff0c;蚂蚁之间相互独立&#xff0c;彼此之间通过信息素进行交流&#xff0c; 从而实现群体行为。 蚁群算法的基本原理就是蚂蚁觅食的过程…

R语言的算数运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 3章3节&#xff1a;R的赋值操作与算术运算_r 链式赋值-CSDN博客文章浏览阅读172次。掌…

Ajax-02.Axios

Axios入门 1.引入Axios的js文件 <script src"js/axios-0.18.0.js"></script> Axios 请求方式别名: axios.get(url[,config]) axios.delete(url[,config]) axios.post(url[,data[,config]]) axios.put(url[,data[,config]]) 发送GET/POST请求 axios.get…

Windows的cmd命令行使用Linux类命令

Windows的cmd使用Linux类命令 去我的个人博客观看&#xff0c;观感更佳哦&#xff0c;&#x1f619;&#x1f619; 前言 我在使用Vscode编写C/C代码的时候&#xff0c;经常会用到Shell(你可以理解为命令行)&#xff0c;但是我不得不说Windows下Dos命令极其难用且拉跨&#x1f…

灵活易用的树莓派相机和计算机,降低了3D冰川建模的成本!

利兹大学的研究人员正在监测秘鲁的凯尔卡亚冰帽&#xff0c;这是世界上仅有的几个热带冰帽之一。 在欧洲成功进行试验之后&#xff0c;利兹大学地理学院​​​​​​​的研究人员正在安第斯山脉和喜马拉雅山脉使用树莓派计算机和树莓派高品质相机&#xff0c;建立低成本、长期…

C# simd指令之MaskMove

MaskMove指令说明&#xff1a;该方法将掩码向量中的每个非零元素对应的源向量中的元素移动到内存地址指定的位置。如果掩码中的元素为零&#xff0c;则对应的内存位置不会被修改。 MaskMove指令接受三个参数&#xff08;source、mask、address&#xff09;&#xff1a; 源向量…

养生生活视频素材去哪里找?养生系列视频素材网站分享

如何寻找高质量的养生视频素材。无论您是刚入行的新手&#xff0c;还是拥有众多粉丝的资深创作者&#xff0c;优质的养生视频素材都是吸引观众的关键。接下来&#xff0c;我将介绍一些顶级平台&#xff0c;帮助您轻松获取各类养生视频素材。 蛙学网 首先推荐的平台是蛙学网。这…