(企业案例)Nacos Config 进阶使用

文章目录

          • 一、SpringBoot 使用 Nacos Config 实现多环境切换
            • 1. 现象
            • 2. 引入依赖
            • 3. 添加bootstrap.yaml配置文件
            • 4. 配置对应关系图
            • 5. 文件格式简述
            • 6. 启动nacos
            • 7. 添加生产配置
            • 8. 添加测试controller
            • 9. 启动Springboot工程并观察到如下日志则为成功
            • 10. 浏览器验证
            • 11. 调整激活环境
            • 12. 新建test环境配置
            • 13. test配置关系图
            • 14. 测试方法
            • 15. 重启springboot服务,监控控制台输出
            • 16. 浏览器验证
            • 17. 配置修改实时生效
            • 18. 不同环境配置动态切换如何实现?
          • 二、如何解决不同环境相同配置的问题
            • 2.1. 现象
            • 2.2. 添加配置
            • 2.3. 增加测试方法
            • 2.4. 重新启动项目,观察控制台
            • 2.5. 浏览器验证
          • 三、如果同一个配置项在三个配置文件中都存在且值不同,最终项目读取是哪个呢?
            • 3.1. 验证思路
            • 3.2. 添加相同配置
            • 3.3. 浏览器验证
          • 四、不同微服务之间相同配置如何共享
            • 4.1. 解决方案简述
            • 4.2. 通过shard-configs配置方式
            • 4.3. 如何添加多个shared-configs配置呢?
            • 4.4. 通过extension-configs方式
            • 4.5. 配置实时刷新测试验证
          • 五、多个shard-configs的文件中存在相同的配置
            • 5.1. 思考1
            • 5.2. 分析验证思路
            • 5.3. 验证流程
            • 5.4. 流程实战
          • 六、配置文件优先级
            • 6.1. springboot
            • 6.2. nacos

一、SpringBoot 使用 Nacos Config 实现多环境切换
1. 现象

在日常开发过程中,对于同一个服务或者项目工程在不同的环境所需要的配置是不同的。如访问数据库、redis或者MQ其他中间件,往往需要进行环境隔离,如果每次部署都需要去修改配置文件的话,是十分不方面的。在微服务场景下,这个问题尤为突出,因为代码工程的数量是传统单项目的几十倍。需要建筑一些组件,在不修改配置稳健的前提下动态的切换运行环境。Nacos Config提供了类似的解决方案。
在这里插入图片描述

2. 引入依赖

在pom文件中添加Nacos Config的依赖包,注意版本

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><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-config</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--spring-cloud-alibaba 版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3. 添加bootstrap.yaml配置文件
spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名application:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: prod # 表示我需要向配置中心索要生产环境的配置
4. 配置对应关系图

在Nacos Config 配置管理中新增配置如图以及其对应关系如下:
在这里插入图片描述

5. 文件格式简述

索要文件的格式为${application.name}-spring。profiles.active.{file-extension}
体现在nacos中,对应尚曼的格式Data id得知应该是nacos-config-prod.yaml

6. 启动nacos

官网:
https://nacos.io/zh-cn/docs/quick-start.html

# 启动命令(standalone代表着单机模式运行,非集群模式):
# linux
sh startup.sh -m standalone# Windows
startup.cmd -m standalone

在这里插入图片描述
http://localhost:8848/nacos/
账号/密码:nacos/nacos

在这里插入图片描述

7. 添加生产配置
标签说明
Data IDnacos-config-prod.yaml
GroupDEFAULT_GROUP默认,可以自定义
描述简述生产环境配置
配置格式yaml文件扩展名选择
配置内容nacosProd: Production environment configuration和配置yml文件格式语法一样

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8. 添加测试controller
package com.gblfy.alibab.nacosconfig.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope
public class NacosConfigController {@Value("${nacosProd}")private String nacosProd;@GetMapping("/nacosProd")public String getNacosProd() {return nacosProd;}}
9. 启动Springboot工程并观察到如下日志则为成功

在这里插入图片描述

10. 浏览器验证

打开浏览器访问http://localhost:8080/nacosProd验证测试结果结果如图:
在这里插入图片描述

11. 调整激活环境

修改bootstrap.yaml文件中激活环境调整为test环境spring.profiles.active.test

spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名application:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: test  # 表示我需要向配置中心索要生产环境的配置
12. 新建test环境配置

在nacos中新建data_id为nacos-config-test.yaml,并添加相同的配置参数,把环境参数的内容调整为test测试环境的
在这里插入图片描述

13. test配置关系图

在这里插入图片描述

14. 测试方法

添加test测试环境方法,把刚才生产的方法注释掉,因为咱们现在激活的是test测试环境的配置

 //    @Value("${nacosProd}")
//    private String nacosProd;
//
//    @GetMapping("/nacosProd")
//    public String getNacosProd() {
//        return nacosProd;
//    }@Value("${nacosTest}")private String nacosTest;@GetMapping("/nacosTest")public String getNacosTest() {return nacosTest;}
15. 重启springboot服务,监控控制台输出

在这里插入图片描述

16. 浏览器验证

打开浏览器访问http://localhost:8080/nacosTest验证测试结果结果如图:

在这里插入图片描述

17. 配置修改实时生效

在修改nacos中修改配置实时生效测试
修改前配置:
在这里插入图片描述
修改后配置:
在这里插入图片描述
发布规则
在这里插入图片描述
不停止项目服务,打开浏览器访问http://localhost:8080/nacosTest验证测试结果结果如图:
在这里插入图片描述
其他环境同上这里就不一一验证了。

18. 不同环境配置动态切换如何实现?

这里演示修改配置文件,到正式环境,激活那个环境配置是在命令脚本中配置好的
会采用下面这种方式激活环境配置,这个命令配置环境的优先级比项目中的配置文件中的优先级高

java -jar xxx.jar -Dspring.profiles.active=test
二、如何解决不同环境相同配置的问题

在这里插入图片描述

2.1. 现象

在实际的开发过程中,我们的工程项目所用到的配置参数大多数并不需要根据不同的环境进行区分,生产、测试、开发环境所用到的参数值是相同的。如何解决同一服务在多环境中,引用相同配置的问题呢?Nacos Config也提供了相应的解决方案。

在这里插入图片描述

2.2. 添加配置

在Nacos Config中添加配置,data_id为nacos-config.yaml,如图所示:
在这里插入图片描述

2.3. 增加测试方法

在NacosConfigController类中添加读取项目中共有相同配置的方法进行测试

//    @Value("${nacosProd}")
//    private String nacosProd;
//
//    @GetMapping("/nacosProd")
//    public String getNacosProd() {
//        return nacosProd;
//    }@Value("${nacosTest}")private String nacosTest;@GetMapping("/nacosTest")public String getNacosTest() {return nacosTest;}@Value("${nacosCommon}")private String nacosCommon;@GetMapping("/nacosCommon")public String getNacosCommon() {return nacosCommon;}
2.4. 重新启动项目,观察控制台

在这里插入图片描述

2.5. 浏览器验证

打开浏览器访问http://localhost:8080/nacosTest验证测试结果结果如图:
在这里插入图片描述

打开浏览器访问http://localhost:8080/nacosCommon验证测试结果结果如图:
在这里插入图片描述

从上面测试可以看出,访问test环境独有的配置可以正常访问。访问项目中共有相同的配置也正常。
此时,我们已经在nacos中配置了3个配置文件,nacos-config-prod.yaml、nacos-config-test.yaml和nacos-config.yaml
在这里插入图片描述

三、如果同一个配置项在三个配置文件中都存在且值不同,最终项目读取是哪个呢?
3.1. 验证思路

在这里插入图片描述
验证这个其实很简单,只需要在环境独有的配置中配置共有相同配置文件中相同的配置标签让他值不一样,浏览器访问不就知道了,对吧?
这样,演示在nacos-config-test.yaml文件中配置nacos-config.yaml文件中nacosCommon标签,给他赋予不同的值进行测试。

3.2. 添加相同配置

nacos-config.yaml文件中原配置:
在这里插入图片描述
nacos-config-test.yaml文件中配置nacosCommon标签值为
添加相同配置
在测试配置中添加与公用配置一样的标签属性值不同,观察谁的配置生效即可

nacosTest: Test environment configuration v2
nacosCommon: Common Environment Configuration 测试配置文件中,配置相同属性值不同的测试案例

在这里插入图片描述
规则发布
在这里插入图片描述

3.3. 浏览器验证

打开浏览器访问http://localhost:8080/nacosCommon验证测试结果结果如图:
在这里插入图片描述
实际读取的配置信息是从nacos-config-test.yaml文件中读取的。
结论:如果配置了spring.profiles.active,则优先获取nacos-config-{spring.profiles.active}.yaml中的值。

四、不同微服务之间相同配置如何共享

在这里插入图片描述
在这里插入图片描述

4.1. 解决方案简述

像这种共有中间件的配置信息企业会采用单独的配置文件来维护,Nacos Config为我们提供了二种配置方式来解决此类场景的问题,分别是extension-configs和shard-configs配置方式。

4.2. 通过shard-configs配置方式

在nacos中新建redis.yaml,添加配置信息,reidsip:127.0.0.1,然后,配置信息发布生效
在这里插入图片描述
修改项目的bootstrap.yaml的配置文件,添加配置spring.cloud.nacos.config.shared-configs[0]

spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名shared-configs[0]:data_id: redis.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新#group: # 可以不写 默认DEFAULT_GROUPapplication:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: test  # 表示我需要向配置中心索要生产环境的配置

在这里插入图片描述

在这里插入图片描述
添加测试方法

 @Value("${redisip}")private String redisip;@GetMapping("/redisip")public String getredisip() {return redisip;}

打开浏览器访问http://localhost:8080/redisip验证测试结果结果如图:

http://localhost:8080/redisip

在这里插入图片描述

4.3. 如何添加多个shared-configs配置呢?

在nacos中新建mq.yaml,添加配置信息mqip: 127.0.0.2
在这里插入图片描述
修改项目的bootstrap.yaml问阿金,并添加shared-configs[1]:配置,具体配置线如下:

spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名shared-configs[0]:data_id: redis.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新#group: # 可以不写 默认DEFAULT_GROUPshared-configs[1]:data_id: mq.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新#group: # 可以不写 默认DEFAULT_GROUPapplication:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: test  # 表示我需要向配置中心索要生产环境的配置

新增一个获取mq信息的url以及方法

package com.gblfy.alibab.nacosconfig.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope
public class NacosConfigController {//    @Value("${nacosProd}")
//    private String nacosProd;
//
//    @GetMapping("/nacosProd")
//    public String getNacosProd() {
//        return nacosProd;
//    }@Value("${nacosTest}")private String nacosTest;@GetMapping("/nacosTest")public String getNacosTest() {return nacosTest;}@Value("${nacosCommon}")private String nacosCommon;@GetMapping("/nacosCommon")public String getNacosCommon() {return nacosCommon;}@Value("${redisip}")private String redisip;@GetMapping("/redisip")public String getredisip() {return redisip;}@Value("${mqip}")private String mqip;@GetMapping("/mqip")public String getmqip() {return mqip;}}

打开浏览器访问http://localhost:8080/mqip验证测试结果结果如图:
在这里插入图片描述

4.4. 通过extension-configs方式

修改bootstrap.yaml文件,删除shared-configs相关配置,增加extension-configs[0]和extension-configs[1]的配置如下:

spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名extension-configs[0]: # shared-configs是一个列表 List<Config> sharedConfigsdata_id: redis.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新extension-configs[1]: # shared-configs是一个列表 List<Config> sharedConfigsdata_id: mq.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新#group: # 可以不写 默认DEFAULT_GROUPapplication:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: test  # 表示我需要向配置中心索要生产环境的配置

重新启动项目,分别访问http://localhost:8080/redisiphttp://localhost:8080/mqip验证是否可以正常读取redis.yaml和mq.yaml的配置信息
在这里插入图片描述
在这里插入图片描述

4.5. 配置实时刷新测试验证

在nacos中修改redis.yaml和mq.yaml的信息,不重启项目,直接访问浏览器,验证配置是否生效
redis.yaml原配置:
在这里插入图片描述
mq.yaml修改后配置:
在这里插入图片描述

mq.yaml原配置:
在这里插入图片描述
mq.yaml修改后配置:
在这里插入图片描述

访问http://localhost:8080/redisiphttp://localhost:8080/mqip验证
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五、多个shard-configs的文件中存在相同的配置
5.1. 思考1

如果多个shard-configs的文件中存在相同的配置,最终会以那个配置文件中的值为准?

5.2. 分析验证思路

这样场景例如:在redis.yaml和mq.yaml配置文件中有一个相同的配置属性但是值不一样,然后在项目中存在多个shard-configs的文件,到底优先获取谁的配置问价心中的信息呢?对吧

5.3. 验证流程
  • 1.在nacos上在redis.yaml和mq.yaml配置文件中都配置一个属性为port的属性,redis.yaml文件中配置6379,和mq.yaml配置文件中port配置5672
  • 2.在项目中的bootstrap.yaml中配置多个shard-configs
  • 3.在测试类中添加测试方法
  • 4.浏览器验证
  • 5.得出结论
5.4. 流程实战
  • 1.在nacos上在redis.yaml和mq.yaml配置文件中都配置一个属性为port的属性,redis.yaml文件中配置6379,和mq.yaml配置文件中port配置5672
    在这里插入图片描述

在这里插入图片描述

  • 2.在项目中的bootstrap.yaml中配置多个shard-configs
spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址config:file-extension: yaml # 表示支持扩展的文件名extension-configs[0]: # shared-configs是一个列表 List<Config> sharedConfigsdata_id: redis.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新extension-configs[1]: # shared-configs是一个列表 List<Config> sharedConfigsdata_id: mq.yamlrefresh: true # 默认是false 如果需要支持自动刷新,需要配置true,搭配@RefreshScope实现动态刷新#group: # 可以不写 默认DEFAULT_GROUPapplication:name: nacos-config # 表示当前微服务需要向配置中心索要nacos-config的配置profiles:active: test  # 表示我需要向配置中心索要生产环境的配置
  • 3.在测试类中添加测试方法
 @GetMapping("/port")public String getport() {return port;}
  • 4.浏览器验证
    http://localhost:8080/port
    在这里插入图片描述

  • 5.得出结论
    结论:会以数组最后一个配置文件内容为准

六、配置文件优先级
6.1. springboot

提示springboot配置文件优先级
(bootstrap.ptoterties > bootstrap.yaml > application.ptoterties > bootstrap.yaml)

6.2. nacos

如果同时在extension-configs和shard-configs存在相同的配置,最终会以那个文件中的值为准?
总结下configdemo.yaml、configdemo-test.yaml、和shard-configs、extension-configs读取优先级

    extension-configs:- data-id: shareconfig3.ymlgroup: share3_grouprefresh: true- data-id: shareconfig3.ymlgroup: share4_grouprefresh: trueshared-configs:- data-id: shareconfig1.ymlrefresh: true- data-id: shareconfig2.ymlrefresh: true

spring.cloud.nacos.config.extension-configs[n].data-id 其中 n 的值越大,优先级越高,因此会走group=share4_group的配置。
spring.cloud.nacos.config.shared-configs[n].data-id默认跟上面一样的逻辑。

不同方式配置加载优先级
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置
C: 通过内部相关规则(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group)自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

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

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

相关文章

OceanBase如何获得TPC-C测试第1名?

阿里妹导读&#xff1a;TPC-C是TPC组织&#xff08;国际事务性能委员会&#xff09;制定的关于商品销售的订单创建和订单支付等的基准测试标准&#xff0c;是数据库联机交易处理系统的权威基准测试标准。 蚂蚁金服自研的分布式关系数据库OceanBase获得TPC-C测试第一名后&#…

由一次磁盘告警引发的“血案”——你知道 du 和 ls 区别吗?

来源 | 程序猿石头责编 | Carol封图 | CSDN下载自视觉中国图来源于 SkyPixel知道为什么会有上面的结果吗&#xff1f;什么又是稀疏文件&#xff1f;这篇文章将为你揭秘。问题背景确切地说&#xff0c;不是收到的自动告警短信或者邮件告诉我某机器上的磁盘满了&#xff0c;而是某…

如何优化大规模推荐?下一代算法技术JTM来了

阿里妹导读&#xff1a;搜索&#xff0c;推荐和广告是互联网内容提供商进行价值创造的核心业务&#xff0c;在阿里巴巴的电子商务交易平台上&#xff0c;搜索&#xff0c;推荐和广告业务同样具有举足轻重的意义和价值。现在&#xff0c;阿里推荐技术又双叒优化了&#xff0c;新…

Sentinel 基于Nacos规则持久化-推模式

文章目录一、推模式架构图二、原理简述2.1. 组件版本关系2.2. 控制台推送规则三、Sentinel控制台改造3.1. 下载源码3.2. 修改pom3.3. 重要文件复制3.4. 注册地址修改3.5. 请求实例需改3.6. 菜单新增四、编译 & 启动4.1. 先启动nacos4.2. 编译打包4.3. 创建微服务 &&…

都听我的,会养猪种菜的工程师最帅了!

来了&#xff01;今天&#xff0c;阿里数字农业事业部在黑龙江首次亮相&#xff0c;并且定了一个小目标&#xff1a;到2022年&#xff0c;阿里涉农产品全年网络销售额破4000亿元。 黑龙江省牡丹江市的阿里巴巴响水大米种植基地&#xff0c;又到了收割季 数字农业事业部将建立产…

清华硕士一针见血:这些才是机器学习必备的数学基础

现如今&#xff0c;计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章&#xff0c;还是要参与相关任务&#xff0c;你马上就会遇到一些拦路虎&#xff1a;想过滤垃圾邮件&#xff0c;不具备概率论中的贝叶斯思维恐怕不行&#xff1b;想试…

如何查看使用 Cloud Toolkit 部署应用的实时日志

之前&#xff0c;我们介绍了《在 IntelliJ IDEA 中部署应用到服务器》。最新版本 Cloud Toolkit 新增了对远程服务器应用部署时&#xff0c;实时日志的查看功能。功能预览如下&#xff1a; 打开应用部署的配置界面&#xff0c;如上图所示&#xff0c;点击「Advanced」标签页&am…

这 10 个云计算错误,会让你的业务一蹶不振!

作者 | John Edwards译者 | 火火酱&#xff0c;责编 | Carol出品 | CSDN 云计算&#xff08;CSDNcloud&#xff09;封图 | CSDN 付费下载自视觉中国乐观主义者们总爱说&#xff1a;“乌云总是镶着金边的”&#xff0c;但他们没有说的是&#xff0c;在乌云下常有狂风、暴雨、闪电…

MySQL 8.0.26 简易配置安装教程 (windows 64位)

文章目录一、软件下载解压1. 官网下载2.下载完成后解压二、mysql配置2.1. my.ini2.2. 初始化MySQL2.3. 安装MySQL服务2.4. mysql已经安装过了2.5. 启动MySQL的服务三、密码修改3.1. 登录mysql3.2. 修改密码3.3. 退出mysql四、客户端连接mysql4.1. Navicat4.2. 登录mysql4.3. 操…

类与字节码技术

类文件结构 1.1 魔数 0-3字节&#xff0c;表示它是否是【class】类型的文件 ​ |java| 0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 09 1.2 版本 4-7字节&#xff0c;表示类的版本00 34 &#xff08;52&#xff09; 表示是Java8 0000000 ca fe ba be 00 00 00…

支付宝 App 是如何建设移动 DevOps 的?

本文系InfoQ对蚂蚁金服技术专家洪锋的采访&#xff0c;洪锋老师即将在 QCon 上海站 2019 分享《移动研发 DevOps 在支付宝 App 内的落地实践》&#xff0c;欢迎关注。 微软 MSDN 上的一篇文章有这样一段话&#xff1a;“移动应用的理想环境需要满足两个条件&#xff0c;一是可以…

淘宝端智能演进和思考

今天分享内容包括三部分&#xff0c;第一是端智能整体趋势和淘宝应用现状&#xff0c;第二是淘宝在应用端智能过程中面临的问题和挑战&#xff0c;以及我们的应对和解决思路&#xff0c;我们构建了端到端的完整技术体系&#xff0c;第三是开源推理引擎 MNN 的最新情况。 01、端…

从零开始入门 K8s | 可观测性:你的应用健康吗?

一、需求来源 首先来看一下&#xff0c;整个需求的来源&#xff1a;当把应用迁移到 Kubernetes 之后&#xff0c;要如何去保障应用的健康与稳定呢&#xff1f;其实很简单&#xff0c;可以从两个方面来进行增强&#xff1a; 首先是提高应用的可观测性&#xff1b;第二是提高应…

技术差的程序员,90%都输在这点上!骨灰级开发:其实都是在瞎努力!

01从未得到过重视的问题“一流程序员学数学&#xff0c;二流程序员学算法&#xff0c;低端看高端就是黑魔法”。可能有人会以为这是段子&#xff0c;而有过开发经验的都知道&#xff0c;这就是程序员的真实写照&#xff01;而数学不好的程序员&#xff0c;我想你开发过程中&…

layui 单选项 点击显示与隐藏 很实用

html <div class"layui-form-item"><label class"layui-form-label">类型</label><div class"layui-input-block"><input type"radio" name"type" lay-filter"type" value"0&quo…

2. 字节码指令

2. 字节码指令 2.1 入门 public cn.itcast.jvm.t5.HelloWorld();构造方法的字节码指令 ​ 2a b7 00 01 b1 2a> aload_0加载slot 0的局部变量&#xff0c;即this&#xff0c;做为下面的invokespecial 构造方法调用的参数b7 >invokespecial预备调用构造方法&#xff0c…

它是真实的“盗梦空间”?在这里,一切都可能是数据

阿里妹导读&#xff1a;位于杭州阿里巴巴西溪园区旁边的大型商场“亲橙里”2018年正式开业。和传统的线下综合型商场不同的是&#xff0c;亲橙里从规划之初就定位为数字化商场&#xff0c;通过植入自研的IBOS平台完成建筑内的所有子系统的接入&#xff0c;而让建筑和建筑内的设…

BDS-HA:构建高可用、低延迟的HBase服务

HBase可以支持百TB数据规模、数百万QPS压力下的毫秒响应&#xff0c;适用于大数据背景下的风控和推荐等在线场景。阿里云HBase服务了多家金融、广告、媒体类业务中的风控和推荐&#xff0c;持续的在高可用、低延迟、低成本方向上进行优化。目前单集群承诺可用性99.9%&#xff0…

layui 表单动态添加、删除input框

html部分 <div class"layui-form-item" ><label class"layui-form-label">路线</label><div class"layui-input-block" id"last"><div class"layui-input-inline">{empty name"$ways&q…

MySQL 可重复读,差点就让我背上了一个 P0 事故!

来源 |程序通事责编 | Carol封图 | CSDN 付费下载自视觉中国P0 事故&#xff1a;余额多扣&#xff01;这是一个真实的生产事件&#xff0c;事件起因如下&#xff1a;现有一个交易系统&#xff0c;每次产生交易都会更新相应账户的余额&#xff0c;出账扣减余额&#xff0c;入账增…