[SpringCloud Alibaba学习笔记]服务注册与配置中心Nacos的入门及集群使用(配置+实操全步骤,基于阿里云&nacos1.3.0)
SpringCloud Alibaba 服务注册与配置中心Nacos的入门及使用
一、Nacos简介
Nacos中文文档
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
简而言之就是注册中心+配置中心的组合,功能实现等于Eureka+Config+Bus
1.下载
下载地址
官网会是在github上,下载根本下不动.这里直接去码云上下载
https://gitee.com/mirrors/Nacos.git
使用GIt软件克隆该项目
git bash clone https://gitee.com/mirrors/Nacos.git
2.打包
进入下载目录的distribution文件夹,我这里的目录是E:\nacos-server\Nacos\distribution
然后cmd,输入mvn -Prelease-nacos -DskipTests clean install -U
之后就会打包成功,出现一个target文件夹
打包后进入target就可以看到
进入以下目录可以看到一个startup.cmd
命令行运行 startup.cmd即可开启
3.进入nacos
输入网址http://localhost:8848/nacos/ 进入nacos界面,初始账号密码都是nacos
4.官方文档
Sping Alibaba官方文档
Nacos中文文档
二、Nacos服务中心注册
每一步在官方文档上都有说明,要多看官方文档
1.注册服务提供者
1.修改父工程pom文件
<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>
2.创建子模块
创建子模块cloudalibaba-provider-payment9001,cloudalibaba-provider-payment9002
3.修改子模块pom
<dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></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>
4.编写yml文件
server:port: 9001
spring:application:name: nacos-provider-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848 #往nacos进行注册#server-addr: http://localhost:8848会出错 management:endpoints:web:exposure:include: * #暴露所有端点
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([http://localhost:884]) tried: failed to req API:http://localhost:884/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect
这里会报错,原因好像是因为他只能读到http://localhost:8848的http://localhost:884,所以连接错误
5.编写主方法
@SpringBootApplication
@EnableDiscoveryClient
public class AlibabaProviderMain9001 {public static void main(String[] args){SpringApplication.run(AlibabaProviderMain9001.class,args);}
}
6.编写测试controller
@RestController
public class PaymentController {@Value("${server.port}")private String serverPort;@GetMapping("/payment/get/{id}")public String getServerPort(@PathVariable("id") Integer id) {return "我是nacos练习的端口"+serverPort+",我觉得我很帅!";}
}
7.去nacos查看是否注册
2.注册服务消费者
1.修改pom文件
主要的不同就是就是使用的是
<dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><dependency><groupId>com.xiaoxiao.springcloud</groupId><artifactId>cloud-api-common</artifactId><version>${project.version}</version></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></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>
2.修改yml文件
server:port: 83spring:application:name: nacos-consumer-servicecloud:nacos:discovery:server-addr: localhost:8848#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:nacos-user-service: http://nacos-provider-service
3.编写主方法
@SpringBootApplication
@EnableDiscoveryClient
public class AlibabaOrderMain83 {public static void main(String[] args){SpringApplication.run(AlibabaOrderMain83.class,args); }
}
4.编写controller
@RestController
@Slf4j
public class OrderController
{@Resourceprivate RestTemplate restTemplate;@Value("${service-url.nacos-user-service}")private String serverURL;@GetMapping(value = "/consumer/payment/get/{id}")public String getProviderServerPort(@PathVariable("id") Integer id){return restTemplate.getForObject(serverURL+"/payment/get/"+id,String.class);}}
5.编写负载均衡配置
由于nacos自带ribbon,所以可以在RestTemplate注解@LoadBalanced
@Configuration
public class ApplicationContextConfig {@Bean@LoadBalancedpublic RestTemplate getresRestTemplate() {return new RestTemplate();}
}
默认使用轮询算法
三、Nacos的CAP切换
C是保证在同一时刻看到的数据是一致的,也就是高一致性
A是保证所有请求都能被收到,也就是高可用性
默认使用AP模式。
对应需求:如果不需要存储级别的信息,并能保持心跳上报,可以选择AP;如果需要在服务级别编辑或者是存储配置信息,就必须使用CP。
切换方式:curl -X PUT ‘$NACOS_ SERVER:8848/nacos/v1/ns/operator/switches?entry= serverMode&value=CP’
四、Nacos作为配置中心(替代Config)
1.新建子模块
新建子模块cloudalibaba-config-nacos-client3377
2.修改pom文件
<dependencies><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--一般基础配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></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>
3.编写yml文件
要配置两个yaml文件,其中一个文件是全局配置,另一个是这个服务端的局部配置。
全局配置要优先于局部配置,先有全局配置,之后再把局部配置加上
# bootstrap.yaml配置
# nacos配置
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置
# application.yaml配置
spring:profiles:active: dev
4.编写主方法
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain3377 {public static void main(String[] args){SpringApplication.run(NacosConfigMain3377.class,args);}
}
5.编写controller
@RestController
@RefreshScope //动态刷新注解
public class NacosConfigController {@Value("${config.info}") //先从远程看有没有,没有就在本地找private String ConfigInfo;@GetMapping("/config/info")public String getConfigInfo() {return ConfigInfo;}
}
6.新建配置
参考官网
dataId配置方式:
具体操作:
去nacos后台,新建一个配置
配置dataId
远程配置名就是: nacos-config-client-dev.yaml
如果出现错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scopedTarget.nacosConfigController’: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘config.info’ in value "${config.info}"
说明没有读取到配置,
1.看看是不是yaml配置成yml了。
2.看看配置文件是不是和你配置的对不上。
3.看看远程配置文件是不是这个属性。
4.我这里就是第四种,搞了一两个小时
查看日志发现
The web application [ROOT] appears to have started a thread named [com.alibaba.nacos .naming.client.listener] but has failed to stop it…
sun.misc.Unsafe.park(Native Method)
然后栈溢出。。。死循环。。。
我找了半天没找出我的问题,以为是文件问题,然后气急败坏的重启了Nacos,结果好了。。。
五、namespace、group、dataId联系与配置
namespace,group,dateId可以看做是一个层层包裹的关系,最外层的namespace是区分部署环境的,group+dataid从逻辑上区分对象。namespace主要是用于隔离,比如三个开发环境dev,test,prod就可以用不同的namespace隔离。
group可以将不同的微服务进行划分。
1.dataId配置
dataId配置很简单,直接修改application.yml中的spring.profiles.active:
spring:profiles:active: dev #test,prod
直接可以访问不同开发环境的配置文件
2.group配置
在远程配置配置group
在yml文件进行修改
config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置group: TEST_GROUP #制定group,要改的就是这
spring:profiles:active: group
3.namespace配置
创建后随机生成一个流水号,就是namespace的id
然后新建一个配置,配置和之前是一样,但是在配置yml时候要注意添加具体的namespace的id
config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置group: DEV_GROUP #制定groupnamespace: 1c366d06-3e24-4c44-a1a7-f1e405256d6a #namespace的流水号
六、Nacos集群
官方文档
-
nacos采用了集中式存储的方式支持集群化部署,目前只支持MySQL存储
-
nacos支持持久化
nacos底层导入了Apache的小型数据库Derby
要先把Derby切换成MySQL
建议是在linux上进行操作
1.安装准备
安装1个Nginx+3个Nacos+1个mysql
Nacostar.gz包(需要连外网否则下载太慢)
Nginx官方下载网址(也要连外网)
将安装包用xftp拷贝到/opt下
解压 tar -zxvf xxx.tar.gz
cp -r nacos /mynacos/ 递归拷贝nacos 到/mynacos/下
docker安装MySQL
1、检查内核版本,必须是3.10及以上
uname -r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
systemctl start docker
docker -v
5、开机启动docker
systemctl enable docker
6、停止docker
systemctl stop docker
如果使用的是阿里云服务器,默认下载了最新版,这里可以配置一下镜像仓库
直接配置镜像加速器
配置镜像加速器文件
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 安装MySQL
docker run --name mysql01 -d mysql 后台运行mysql,这样是不对的,因为没有端口映射
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql 这才是对的
2.集群配置
如果是一个集群,那就是8848端口。
如果多个nacos集群,那就有多个端口,需要将不同端口都映射。
1.统一数据源
将每个nacos的数据库都统一,改成mysql
找到mysql执行脚本:/mynacos/nacos/conf 文件是nacos-mysql.sql
如果是用的docker 安装的mysql,如果直接输入mysql指令,会报错: -bash: mysql: command not found
正确方式应该是执行docker容器的mysql
docker exec -it mysql01 bash #这里的mysql01是你容器中设置的mysql的名字
这时候可以使用mysql指令了,然后输入用户名密码
mysql -u root -p #进入数据库
新建一个数据库 nacos_config
create database nacos_config;
use nacos_config;
将sql执行文件放入docker容器
docker ps #查看mysql的容器id
docker exec -it mysql01 bash #进入容器
ls #列出容器列表
docker cp 本地文件路径 容器名:容器路径
docker cp /mynacos/nacos/conf/nacos-mysql.sql mysql01:/tmp #将nacos-mysql.sql拷贝到容器的/tmp目录下
这样就将sql文件放到了docker容器中去了
然后就可以执行sql文件了
source /tmp/nacos-mysql.sql
2.修改application.properties
/mynacos/nacos/conf
# 指定数据源为Mysql
spring.datasource.platform=mysql# 数据库实例数量
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
3.配置nacos的集群配置cluster.conf
/mynacos/nacos/conf
用hostname -i 获取内网ip
#it is ip
#example
内网ip:3333
内网ip:4444
内网ip:4444
4.编辑nacos启动脚本
让nacos根据端口映射开启不同的nacos客户端
去到/mynacos/nacos/bin
编辑startup.sh脚本
1.3.0配置是这样
修改
while getopts ":m:f:s:c:e:p:" opt
docase $opt inm)MODE=$OPTARG;;f)FUNCTION_MODE=$OPTARG;;s)SERVER=$OPTARG;;c)MEMBER_LIST=$OPTARG;;e)EMBEDDED_STORAGE=$OPTARG;;p)PORT=$OPTARG;; #增加端口映射?)echo "Unknown parameter"exit 1;;esac
done
#根据机器运存选改,我这里减少了内存占用
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"#文章末尾修改,nuhup增加端口映射
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out"
5.编辑nginx.conf
到/usr/local/nginx/conf目录下找到nginx.conf
upstream cluster{server 127.0.0.1:3333;server 127.0.0.1:4444;server 127.0.0.1:5555;}server {listen 1111;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {# root html;# index index.html index.htm;proxy_pass http://cluster;}#error_page 404 /404.html;
6.运行Nginx
[root@iZ2ze2jmbeb02wrxw6wdp3Z sbin]# pwd
/usr/local/nginx/sbin
[root@iZ2ze2jmbeb02wrxw6wdp3Z sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
7.运行多台nacos
查询多少个nacos运行
ps -ef|grep nacos|grep -v grep|wc -l
如果是3个就成功了
如果没有,就可能有以下问题
异常1:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
原因:nacos不支持mysql8
解决方案:可以修改配置让其适应https://www.cnblogs.com/gyli20170901/p/11245270.html
或者拉取一个mysql5.7
异常2:
#There is insufficient memory for the Java Runtime Environment to continue.
#Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
#An error report file with more information is saved as:
#/mynacos/nacos/bin/hs_err_pid3061.log
原因:内存不够用了!!!!!我这里用的是学生云服务,导致根本上不了三个!因为启动一个默认1-2G内存
解决方法:减少内存,改成启动使用500m
JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
访问端口1111,成功!!!!
七、总结
1.学习总结
Nacos能够实现注册中心+配置中心的组合,功能实现等于Eureka+Config+Bus,内容还是挺多的。
在提供注册方面要注意负载均衡,还有分组;nacos集群要和nginx结合。
2.注意事项
1.注册中心读取
编写yml文件的时候要注意server-addr 要注册进注册中心不要加http://,直接输入ip:端口号就可以了,否则出现异常:
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([http://localhost:884]) tried: failed to req API:http://localhost:884/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect
这里会报错,原因好像是因为他只能读到http://localhost:8848的http://localhost:884,所以连接错误
2.远程读取配置出现异常
如果出现错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scopedTarget.nacosConfigController’: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘config.info’ in value "${config.info}"
说明没有读取到配置,
1.看看是不是yaml配置成yml了。
2.看看配置文件是不是和你配置的对不上。
3.看看远程配置文件是不是这个属性。
4.我这里就是第四种,搞了一两个小时
查看日志发现
The web application [ROOT] appears to have started a thread named [com.alibaba.nacos .naming.client.listener] but has failed to stop it…
sun.misc.Unsafe.park(Native Method)
然后栈溢出。。。死循环。。。
我找了半天没找出我的问题,以为是文件问题,然后气急败坏的重启了Nacos,结果好了。。。
4.docker运行MySQL数据库异常
如果是用的docker 安装的mysql,如果直接输入mysql指令,会报错: -bash: mysql: command not found
正确方式应该是执行docker容器的mysql
docker exec -it mysql01 bash #这里的mysql01是你容器中设置的mysql的名字
5.阿里云服务器运行多台nacos异常
如果没有,就可能有以下问题
异常1:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
原因:nacos不支持mysql8
解决方案:可以修改配置让其适应https://www.cnblogs.com/gyli20170901/p/11245270.html
或者拉取一个mysql5.7
异常2:
#There is insufficient memory for the Java Runtime Environment to continue.
#Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
#An error report file with more information is saved as:
#/mynacos/nacos/bin/hs_err_pid3061.log
原因:内存不够用了!!!!!我这里用的是学生云服务,导致根本上不了三个!因为启动一个默认1-2G内存
解决方法:减少内存,改成启动使用500m
JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx500m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 自以为是的炒股
2019,我回来了投机氛围分析得头头是道噢!GG了还是太年轻了建议:既然无法回本,那就及时止损!!! 投机氛围 进入到了新的公司,接触到了新的同事,当然少不了各种聊,八卦新闻,也会一不小心就聊到了投资理财(股票、基金神马的) 哈哈,还真是一朝被蛇咬,十年怕井绳! A:…...
2024/4/20 15:17:16 - UE4学习-添加机关并添加代码控制
文章目录添加机关代码编写给密室添加屋顶打印日志控制系统角色创建一个新游戏模式替换DefaultPawn添加抓取组件获取起点和终点物体拾取,碰撞属性设置今日完整代码 添加机关 首先向场景里面添加一个聚光源添加聚光源以后,可以对其属性进行修改,如图:然后需要给聚光源添加一个…...
2024/4/25 13:48:17 - FTP内网穿透 报错 200 227 451 注意事项
FTP内网穿透 报错 200 227 451 注意事项 今天通过FileZilla简单搭建的内网的FTP服务器,由于客户端和服务端不在同一个网段,在路由器中做了内网映射,奇怪的是所有搭建完成,在本机也可以访问FTP,唯独去了另外一个网段就访问不了。 再三检查: 1、端口是否做好映射?常用FTP端…...
2024/4/16 16:10:35 - vue 插件大全
vue 插件大全 Vue是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作和学习。很全的vue插件汇总,赶紧收藏下吧! 一、UI组件及框架element …...
2024/4/21 1:15:47 - 软件测试(软件测试生命周期,描述一个bug,定义bug级别,bug生命周期,如何开始第一次测试,测试执行和bug管理,测试工作中的人际关系处理)
一、软件测试的生命周期 对比软件的生命周期和bug的生命周期软件的生命周期:需求分析——计划——设计——编码——测试——运行维护软件测试的生命周期:需求分析——测试计划——测试设计、测试开发——测试执行——测试评估bug的生命周期:软件测试&软件开发生…...
2024/4/16 16:11:36 - 强推#vue图片预览组件—v-viewer
强推#vue图片预览组件—v-viewer 先来介绍一下背景 项目是用vue搭的,产品给的需求是:图片列表展示,要求点击图片可以放大。 原本就是写了一个弹出框,包裹相应图片就算完成了,但是!!! 作为一个善于思考的前端娃,我一定要考虑更加全面哇,因为这些图片是病人的病历拍照上…...
2024/4/4 21:26:01 - 手把手教你理解Volatile关键字
volatile关键字volatile 关键字是java提供的一种轻量级同步机制。他能够保证可见性和有序性,但是不能保证原子性。volatile可见性可见性表示被这个关键字所修饰的实例,在被修改后,其他的线程均可见。class MyData { // 如果没有volatile关键字的话,那我们在修改number的…...
2024/4/16 16:12:32 - TCP/IP协议基础知识笔记
1.TCP/IP协议包括FTP、SMTP、TCP、UDP、IP五中协议 。 2.TCP/IP四层体系结构:应用层、传输层、网络层、数据链路层。 3.TCP传输层协议,IP 网络层协议。 4.链路层:数据包必须是从一块网卡传送到另一块网卡。而网卡地址就是数据包的发送地址和接收地址 5.IP地址与域名均是一一…...
2024/4/20 16:41:03 - Volatile关键字
volatile关键字 volatile 关键字是java提供的一种轻量级同步机制。他能够保证可见性和有序性,但是不能保证原子性。 volatile可见性 可见性表示被这个关键字所修饰的实例,在被修改后,其他的线程均可见。```javaclass MyData { // 如果没有volatile关键字的话,那我们在修…...
2024/4/16 16:12:22 - Go 结构体使用注意事项和细节
结构体使用注意事项和细节结构体的所有字段在内存中是连续的//结构体 type Point struct {x inty int }//结构体 type Rect struct {leftUp, rightDown Point }func main() {r1 := Rect{Point{1,2}, Point{3,4}}//r1有四个int, 在内存中是连续分布//打印地址fmt.Printf("…...
2024/4/16 16:12:02 - Java 实现Post 请求传递对象和Get请求(HttpURLConnection实现)
1.GET 请求public static String doGet(String httpurl,String contentType) {//contentType = "application/json";contentType = "text/xml";HttpURLConnection connection = null;InputStream is = null;BufferedReader br = null;String result = null…...
2024/4/28 14:28:05 - python学习笔记——持久化-文件
open 函数open 函数负责打开文件,带有很多参数 第一个参数:必须有,文件的路径和名称 mode:表明文件用什么方式打开r:以只读方式打开 w:写方式打开,会覆盖以前的内容 x:创建方式打开,如文件已经存在,报错 a:append 方式,以追加的方式对文件内容进行写入 b:binary 方…...
2024/4/20 10:28:35 - 有符号右移和无符号右移,傻傻分不清楚。
接上篇文章——位运算:2的幂 。本篇文章介绍一个简单的位运算——右移。计算机中数字都是以二进制的形式存储的,而位运算就是对数字的二进制表示进行操作。从节省硬件的角度出发(加法和减法都可以通过加法电路执行),二进制都是采用补码的形式表示,也就是每个有符号数字二…...
2024/4/20 10:09:53 - Java数据结构--数组、矩阵、广义表
一、简介 1.1 数组的概念是n(n ≥ 1)个相同数据类型的数据元素a0,a1,…,an-1构成的占用一块联系地址的内存单元的有限集合。1.2 特点(1)数组中数据元素的数据类型相同; (2)数组是一种随机存取结构,只要给定一组下标,就可以访问与其对应的数组元素; (3)数组中数据元素…...
2024/4/16 16:12:07 - CUDA学习(四):cudaMalloc、cudaMemcpy和cudaFree函数
文章目录一、cudaMalloc、cudaMemcpy和cudaFree 介绍二、第一个例子,实现GPU端的加法 可以像调用C函数那样将参数传递给核函数 当设备执行任何有用的操作时,都需要分配内存,例如将计算机返回给主机。 一、cudaMalloc、cudaMemcpy和cudaFree 介绍 内存空间开辟、内存复制和内…...
2024/4/20 0:35:03 - mxnet安装环境配置
一、安装Miniconda 官方网址:https://conda.io/en/latest/miniconda.html 本人选择python3.7版本Windows64位 安装完成后打开Anaconda Prompt创建虚拟环境conda create –n env python=3.7 这里的env为自定义环境名激活环境 conda activate env 退出环境: conda deactivate查…...
2024/4/18 16:54:47 - 不使用乘法、除法和mod,实现两数相除
被除数除数=商+余数 需要注意的问题:int 的范围是[-2^31,2^31-1],也就是【-2147483648,2147483647】,如果-2147483648/-1结果会超出int 范围。 除法,乘法和mod都不能使用,那可以使用加减,移位。 只需保留商即可 保证数据在int范围。电脑做二进制除法的时候,是让被除数连…...
2024/4/23 9:53:33 - limit和rownum的区别,做兼容
两个数据库分页还是分批查sql肯定是不兼容的 然后limit的第二个参数是偏移量,不是between xx and yy 其次是limit后面不支持运算符 有种方式是 set @sql = concat(‘select* from user where id= 123456 andcode= 111 and create_date >= 20190101 and create_date <= 2…...
2024/4/16 16:11:16 - 【DevOps】云原生(Cloud Native)
云原生 Pivotal 是云原生应用的提出者,并推出了Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 云原生的概念历经了许多个版本的迭代,到了2015年Google主导成立了云原生计算基金会(CNCF),对云原生的定义为: 云…...
2024/4/16 16:12:22 - Postman调用 .net 的webservice
1、使用post方式调用,url以 asmx 止。2、设置header,content-type text/xml;charset=utf-8。3、body里选择 raw,参数模板如下:<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSch…...
2024/3/31 23:49:07
最新文章
- JAVA——Final
在Java中,final是一个关键字,它可以用来修饰类、方法和变量。使用final关键字可以表示某些内容是不可变的或者不能被继承的。以下是final在Java中的主要用途: 修饰类 当final修饰一个类时,表示这个类不能被继承。这通常用于设计…...
2024/5/1 5:00:53 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 免费的GPT-3.5 API服务aurora
什么是 aurora ? aurora 是利用免登录 ChatGPT Web 提供的无限制免费 GPT-3.5-Turbo API 的服务,支持使用 3.5 的 access 调用。 【注意】:仅 IP 属地支持免登录使用 ChatGPT的才可以使用(也可以自定义 Baseurl 来绕过限制&#x…...
2024/4/30 7:06:06 - 【Redis】安装Redis后报ERR Client sent AUTH, but no password is set
一、问题描述 安装Redis后使用auth验证是否安装成功(或者其它应用访问redis时报错),报ERR Client sent AUTH, but no password is set 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set二、问题解决 …...
2024/4/30 4:24:09 - 图解深度神经网络的架构
图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构,它使卷积网络(CNN)成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图,但是好像还缺点什么…… AlexNet 架构图示(图源&…...
2024/4/30 2:15:22 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57