【微服务】Nacos(注册中心)

news2024/11/15 17:36:52

文章目录

    • 1.基本介绍
        • 1.概述
        • 2.Nacos下载和运行(java8/maven3.2.x+)
          • 1.解压到没有中文路径的
          • 2.双击startup
          • 3.浏览器输入http://192.168.242.124:8848/nacos
          • 4.用户名和密码为nacos
          • 5.cmd输入netstat -anb | more查看监听端口
    • 2.创建Nacos服务提供者 10004
        • 1.项目架构
        • 2.步骤说明
        • 3.创建模块 member-service-nacos-provider-10004 作为服务提供者
        • 4.父项目pom.xml指定依赖版本
        • 5.本模块pom.xml 引入依赖,nacos的服务发现
        • 6.参考10001模块来构建
          • 1.到10001模块复制main目录下的所有文件夹
          • 2.粘贴到10004模块的main目录下
          • 3.修改application.yml,并注册到nacos
          • 4.重新创建主启动类,开启nacos服务发现
          • 5.修改controller,更好的显示信息
        • 7.测试
          • 1.确保启动了nacos(startup)
          • 2.启动10004微服务模块,http://localhost:8848/nacos 查看注册情况
          • 3.浏览器测试这个服务提供者
    • 3.创建Nacos服务提供者集群 10006
        • 1.创建与10004模块功能相同的子模块 member-service-nacos-provider-10006
        • 2.pom.xml 将10004模块的依赖复制过来
        • 3.复制10004模块的main目录下的文件夹并粘贴到10006
        • 4.修改application.yml的服务端口和服务名称
        • 5.修改10004模块的服务名称
        • 6.修改主启动类的名称
        • 7.修改controller,显示信息
        • 8.测试
          • 1.首先保证nacos8848是启动的
          • 2.启动10006和10004微服务
          • 3.浏览器输入 http://localhost:8848/nacos/ 查看注册状态
          • 4.postman测试
    • 4.创建nacos服务消费方
        • 1.架构图
        • 2.创建服务消费模块 member-service-nacos-consumer-81
        • 3.pom.xml 引入依赖,主要是nacos的服务发现依赖
        • 4.application.yml 配置nacos的服务注册
        • 5.编写启动类,开启nacos服务发现
        • 6.com/sun/springcloud/config/CustomizationBean.java 配置类注入RestTemplate,并且赋予负载均衡的能力
        • 7.使用RestTemplate进行远程调用的流程
        • 8.编写controller进行远程调用(详细步骤)
          • 1.获取两个服务的名字 member-service-nacos-provider
          • 2.com/sun/springcloud/controller/MemberNacosConsumerController.java
            • 1.controller类的注解跟要远程调用的注解保持一致
            • 2.依赖注入RestTemplate进行远程调用
            • 3.声明服务发现的前缀
            • 4.先将要调用的方法直接粘贴过来,删除方法体
            • 5.使用RestTemplate进行远程调用
            • 6.可以修改请求这个方法的url(其实也只有这个地方才可以修改了,其他的直接粘贴即可)
            • 7.完整源代码
            • 8.增加远程调用
          • 9.测试
            • 1.启动两个服务提供集群10004和10006以及刚才的服务消费方81模块
            • 2. 查看服务注册情况
            • 3.postman测试服务消费方的远程调用
    • 5.Ribbon配置负载均衡算法
        • 1.com/sun/springcloud/config/RibbonRule.java 配置类直接注入一个负载均衡算法对象

1.基本介绍

1.概述

image-20240327135542520

2.Nacos下载和运行(java8/maven3.2.x+)
1.解压到没有中文路径的

image-20240327140107896

2.双击startup

image-20240327140211858

3.浏览器输入http://192.168.242.124:8848/nacos

image-20240327140323406

image-20240327140403075

4.用户名和密码为nacos

image-20240327140435912

5.cmd输入netstat -anb | more查看监听端口

image-20240327140626228

2.创建Nacos服务提供者 10004

1.项目架构

image-20240327141235881

2.步骤说明

image-20240327141407947

3.创建模块 member-service-nacos-provider-10004 作为服务提供者

4.父项目pom.xml指定依赖版本

image-20240327142127291

5.本模块pom.xml 引入依赖,nacos的服务发现
    <dependencies>
        <!--引入nacos的服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- springboot web starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 如果在子工程/模块指定了 version,则以指定为准 -->
        </dependency>
        <!--
        1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息
        等
        2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. -->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <!-- 这里我们重新指定一下 version 因为父项目中没有对这个依赖进行版本仲裁-->
            <version>1.1.13</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 公共模块的jar包 -->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>e_commerce_center-common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

6.参考10001模块来构建
1.到10001模块复制main目录下的所有文件夹

image-20240327143008052

2.粘贴到10004模块的main目录下

image-20240327143121202

3.修改application.yml,并注册到nacos
server:
  port: 10004 # 配置服务端口
spring:
  application:
    name: member-service-nacos-provider-10004 # 配置服务的名称,名字任意这里与项目名保持一致
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # 别忘记创建数据库之后修改数据库名称
    url: 
    username: 
    password: 
# 配置naocs
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # 配置nacos的地址
# 暴露所有的监控点
management:
  endpoints:
    web:
      exposure:
        include: "*"
mybatis:
  mapper-locations: classpath:mapper/*.xml # 扫描所有Mapper.xml
  type-aliases-package: com.sun.springcloud.entity # 扫描所有实体类,可以直接使用类名来标识

4.重新创建主启动类,开启nacos服务发现
package com.sun.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author 孙显圣
 * @version 1.0
 */
@SpringBootApplication
@EnableDiscoveryClient // 开启nacos服务发现
public class MemberNacosProviderApplication10004 {
    public static void main(String[] args) {
        SpringApplication.run(MemberNacosProviderApplication10004.class, args);
    }
}

5.修改controller,更好的显示信息

7.测试
1.确保启动了nacos(startup)

image-20240327144600573

image-20240327144619406

2.启动10004微服务模块,http://localhost:8848/nacos 查看注册情况

image-20240327144919122

image-20240327145141350

image-20240327145203135

3.浏览器测试这个服务提供者

image-20240327145357654

3.创建Nacos服务提供者集群 10006

1.创建与10004模块功能相同的子模块 member-service-nacos-provider-10006

image-20240327150057419

2.pom.xml 将10004模块的依赖复制过来
    <dependencies>
        <!--引入nacos 的服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- springboot web starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 如果在子工程/模块指定了 version,则以指定为准 -->
        </dependency>
        <!--
        1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息
        等
        2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. -->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <!-- 这里我们重新指定一下 version 因为父项目中没有对这个依赖进行版本仲裁-->
            <version>1.1.13</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 公共模块的jar包 -->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>e_commerce_center-common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
3.复制10004模块的main目录下的文件夹并粘贴到10006

image-20240327150857496

image-20240327150941065

4.修改application.yml的服务端口和服务名称
server:
  port: 10006 # 配置服务端口
spring:6
  application:
    name: member-service-nacos-provider # 配置服务的名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # 别忘记创建数据库之后修改数据库名称
    url:
    username: 
    password: 
# 配置naocs
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # 配置nacos的地址
# 暴露所有的监控点
management:
  endpoints:
    web:
      exposure:
        include: "*"
mybatis:
  mapper-locations: classpath:mapper/*.xml # 扫描所有Mapper.xml
  type-aliases-package: com.sun.springcloud.entity # 扫描所有实体类,可以直接使用类名来标识

5.修改10004模块的服务名称
  • 因为两个模块的功能是相同的,只是做成了一个集群,所以名字需要相同

image-20240327153501008

6.修改主启动类的名称

image-20240327153734367

7.修改controller,显示信息

image-20240327153851127

8.测试
1.首先保证nacos8848是启动的
2.启动10006和10004微服务

image-20240327154116142

3.浏览器输入 http://localhost:8848/nacos/ 查看注册状态

image-20240327154232481

image-20240327154244470

4.postman测试

image-20240327154440510

4.创建nacos服务消费方

1.架构图

2.创建服务消费模块 member-service-nacos-consumer-81

image-20240327155429614

3.pom.xml 引入依赖,主要是nacos的服务发现依赖
    <dependencies>
        <!--引入nacos的服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- springboot web starter 用来监听端口-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 如果在子工程/模块指定了 version,则以指定为准 -->
        </dependency>
        <!--
        1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息
        等
        2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. -->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 公共模块的jar包 -->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>e_commerce_center-common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>
4.application.yml 配置nacos的服务注册
server:
  port: 81
spring:
  application:
    name: member-service-nacos-consumer-81
# 配置nacos的服务注册
  cloud:
      nacos:
        discovery:
          server-addr: localhost:8848 # 配置要注册到的nacos地址,根据实际情况填写

5.编写启动类,开启nacos服务发现
package com.sun.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author 孙显圣
 * @version 1.0
 */
@SpringBootApplication // springboot启动类
@EnableDiscoveryClient // 开启nacos服务发现
public class MemberNacosCostomerApplication81 {
    public static void main(String[] args) {
        SpringApplication.run(MemberNacosCostomerApplication81.class, args);
    }
}

6.com/sun/springcloud/config/CustomizationBean.java 配置类注入RestTemplate,并且赋予负载均衡的能力
package com.sun.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * 配置类注入RestTemplate,并且赋予负载均衡的能力
 *
 * @author 孙显圣
 * @version 1.0
 */
@Configuration // 标识这是一个配置类
public class CustomizationBean {
    @Bean
    @LoadBalanced // 赋予RestTemplate负载均衡的能力
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

7.使用RestTemplate进行远程调用的流程
  • pom.xml 配置nacos的服务发现依赖
  • application.yml 配置nacos的服务注册
  • 启动类开启nacos的服务发现
  • 配置类配置RestTemplate和负载均衡算法
  • 编写远程调用的controller
    • 复制要调用controller上面的注解
    • 注入RestTemplate 用作远程调用
    • 获取要远程调用的 application name
    • 根据 application name声明服务发现的前缀http://application name (这个可以找到远程调用的上下文路径)
    • 服务发现(使用声明的服务发现前缀) + 目标接口路径 进行拼接即可访问目标接口,Ribbon负载均衡算法
    • 使用RestTemplate进行远程调用
8.编写controller进行远程调用(详细步骤)
1.获取两个服务的名字 member-service-nacos-provider

image-20240327162303492

2.com/sun/springcloud/controller/MemberNacosConsumerController.java
1.controller类的注解跟要远程调用的注解保持一致

image-20240327165224126

2.依赖注入RestTemplate进行远程调用

image-20240327165242867

3.声明服务发现的前缀
  • 这里需要注意:服务发现的只是ip+端口+上下文路径,并不包括协议

image-20240327165349990

4.先将要调用的方法直接粘贴过来,删除方法体

image-20240327165626608

5.使用RestTemplate进行远程调用

image-20240327165712538

6.可以修改请求这个方法的url(其实也只有这个地方才可以修改了,其他的直接粘贴即可)

image-20240327170251604

7.完整源代码
package com.sun.springcloud.controller;

import com.sun.springcloud.entity.Member;
import com.sun.springcloud.util.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @author 孙显圣
 * @version 1.0
 * @Description: 远程调用MemberController的控制器
 */
@RestController // controller注解跟要调用的服务的controller一样
@Slf4j
public class MemberNacosConsumerController {
    // 注入restTemplate 进行远程调用
    @Resource
    private RestTemplate restTemplate;

    // 声明服务发现的前缀
    // 服务发现的的是ip+端口+上下文路径
    public static final String MEMBER_SERVICE_PROVIDER_URL = "http://member-service-nacos-provider";

    // 远程调用MemberController的save方法
    @PostMapping("/member/nacos/consumer/save")
    public Result save(@RequestBody Member member) {
        // 远程调用member-service-nacos-provider的save方法
        return restTemplate.postForObject(MEMBER_SERVICE_PROVIDER_URL + "/member/save", member, Result.class);
    }

}

8.增加远程调用
  • 直接将要调用的方法粘贴过来,然后使用copliot直接tab即可
  • 如果想修改,就修改一下url
    @GetMapping("/member/nacos/consumer/get/{id}") // 这里使用的路径参数
    public Result getMemberById(@PathVariable("id") Long id) {
        // 远程调用member-service-nacos-provider的getMemberById方法
        return restTemplate.getForObject(MEMBER_SERVICE_PROVIDER_URL + "/member/get/" + id, Result.class);
    }
9.测试
1.启动两个服务提供集群10004和10006以及刚才的服务消费方81模块

image-20240327171242583

2. 查看服务注册情况

浏览器输入:http://192.168.242.124:8848/nacos/index.html

image-20240327171420700

3.postman测试服务消费方的远程调用

image-20240327171600337

image-20240327172138849

5.Ribbon配置负载均衡算法

1.com/sun/springcloud/config/RibbonRule.java 配置类直接注入一个负载均衡算法对象
package com.sun.springcloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/** 配置类,用于配置Ribbon的负载均衡策略
 * @author 孙显圣
 * @version 1.0
 */
@Configuration
public class RibbonRule {
    @Bean
    public IRule ribbonRule() {
        // 随机策略
        return new RandomRule();
    }
}

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

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

相关文章

人工智能在产业中应用--生成智能

二、生成式人工智能 前面介绍了很多人工智能的应用&#xff0c;接下来部分我们会介绍当前正在进行的生成智能。生成智能和以往的人工智能有什么区别&#xff0c;个人觉得主要区别就在于“度”。在表现上就是以前的人工智能更多是利用既有的数据集分布挖掘和解决在这个数据集下…

WPF 命名空间解释

在C#中有命名空间的概念&#xff0c;我们可以使用using引入&#xff0c;就可以使用其中的类&#xff0c;在xaml中&#xff0c;也同样有命名空间&#xff0c;在window标签中用xmlns声明的这几行&#xff0c;这就是本页面引入的命名空间。 一般的情况下&#xff0c;我们引入命名空…

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议

计算机网络&#xff1a;传输控制协议&#xff08;Transmission Control Protocol-TCP协议&#xff09; 本文目的前置知识点TCP协议简介主要特性通信流程1. 建立连接的过程(三次握手&#xff0c;243)1.1 为什么要三次握手&#xff0c;两次不行吗&#xff1f; 2. 释放连接的过程(…

在Linux上使用nginx反向代理部署Docker网站

在政务云上部署Web环境&#xff0c;为了保证服务器安全&#xff0c;甲方只开放一个端口且只允许使用https协议进行访问&#xff0c;经过思考&#xff0c;决定使用docker部署网站&#xff0c;使用nginx反向代理&#xff0c;通过不同的二级域名访问不同的端口。 1 使用docker部署…

每日一题系列 —— 说一下JS的数据类型。/ JavaScript的数据类型有哪些?

面试官&#xff1a;说一下JS的数据类型。/ JavaScript的数据类型有哪些&#xff1f; 答&#xff1a;JavaScript的数据类型分为两种&#xff1a;①基本数据类型&#xff1b;②引用数据类型 其中基本数据类型包括&#xff1a; &#xff08;1&#xff09;数值&#xff08;Number…

ubuntu的常用操作

一、用户 1.1 创建新用户 1.1.1 添加、修改、删除 1.2 超级用户root 切换到root用户&#xff0c;有全部权限&#xff0c;可以直接使用任何命令。 我们在什么时候才会切换到root用户进行操作呢&#xff1f;当我们使用某些命令&#xff0c;不想前面一直加sudo的话&#xff0c;…

大型DMP系统

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这是我作为学习笔记总结应用篇第一篇&#xff0c;本章大量的参考了别的博主的文章。 我们今天就先从搭建一个大型的 DMP 系统开始&#xff0c;利用组成原理里面学到的存储器知识&#xff0c;来做选型判断&#xff0c;从而更…

jenkins权限分配

1.安装权限插件 Role-Based Strategy 2.创建用户 3.修改全局安全配置中的授权策略为Role-Based Strategy 4.进入Manage and Assign Roles创建Global roles和Item roles 4.进入Assign Roles给用户分配role

行存储与列存储:大数据存储方案的选择与优缺点分析

随着大数据时代的来临&#xff0c;数据的规模和复杂性呈指数级增长&#xff0c;传统的关系数据库已经不再适应这一巨大的存储量和计算要求。在大数据存储领域&#xff0c;行存储和列存储成为两种备受关注的存储方案。本文将探讨行存储和列存储的定义、优缺点&#xff0c;并结合…

2024泰迪杯数据挖掘挑战赛A题思路代码成品文章参考:生产线的故障自动识别与人员配置

问题 1 根据附件 1 中的数据&#xff0c;分析生产线中各装置故障的数据特征&#xff0c;构建故障报警模型&#xff0c;实现故障的自动即时报警。 问题分析 针对问题一&#xff0c;我们的目标是利用附件1中提供的数据&#xff0c;分析生产线各装置发生故障的数据特征&#xff…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

ntp时间同步

上次使用minio的时候&#xff0c;报错了与本地的时间差过大&#xff0c;我当时还很疑惑&#xff0c;与是我去minio的linux上看了时间&#xff0c;发现因为是用的挂载虚拟机的原因&#xff0c;我图方便每次都是直接挂起虚拟机&#xff0c;导致时间一直卡在哪一个时间段。所以使用…

2024年【安全员-C证】考试及安全员-C证模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-C证考试考前必练&#xff01;安全生产模拟考试一点通每个月更新安全员-C证模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过安全员-C证模拟考试题很简单。 1、【多选题】《上海市工伤保险实施办…

Redis高级面试题-2024

说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库&#xff0c;也是一种NoSQL数据库。 它支持多种数据类型&#xff0c;包括String、Map、Set、ZSet和List&#xff0c;以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础&#xff0c;提…

Vue3+Element Plus+TS开发企业管理后台(一)

系列文章&#xff0c;讲述一个企业管理后台的前后端设计&#xff0c;持续集成常见的页面功能和服务端设计思路。 效果展示 支持多种布局、主题配色随意切换 侧边菜单背景设置 主题色调切换 移动端完美适配 菜单侧边收起&#xff0c;适合移动端小空间场景。 功能开发计划 #merm…

YonBuilder移动开发小技巧-管理你的iOS证书

很多小伙伴&#xff0c;在应用详情页的APP证书面板页&#xff0c;进行iOS证书上传的时候&#xff0c;平台提供了「选择已有证书」功能&#xff0c;点击按钮可以选择历史上传过的iOS证书。 因为iOS证书证书存在有效期&#xff0c;或者随着我们更多的应用开发&#xff0c;和使用更…

Java基础之算术运算符的高级用法

文章目录 算术运算符的高级用法一 .""操作的三种情况1.数字相加2.字符串相加3.字符相加 算术运算符的高级用法 一 .""操作的三种情况 1.数字相加 问题:变量c是什么类型的? double 问题:变量c是什么类型的? 隐式转换: 把一个取值范围小的数值,转成取值…

算法---动态规划

动态规划 1.前言2. 斐波那契数列模型示例 - 第N个泰波那契数2.1 算法原理&#xff08;重点&#xff09;2.2 代码 3. 路径问题4. 简单多状态 dp 问题总结解题思路 1.前言 哪些情况下会用到动态规划&#xff1a; 1.最优化问题&#xff1a;当需要求解最大值或最小值的问题时&…

LiteFlow逻辑流引擎集成验证

本文将介绍开源逻辑流组件LiteFlow的架构、设计思想和适用场景&#xff0c;如何基于springboot集成LiteFlow&#xff0c;并验证DSL多种逻辑流程&#xff0c;以及逻辑流设计器的开发思路。 一、逻辑流解决什么问题 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系…

regexp_substr()

1、基本语法 REGEXP_SUBSTR(String, pattern, position,occurrence, modifier) String&#xff1a;需要进行处理的字符串。 pattern&#xff1a;正则表达式。 position&#xff1a;起始位置&#xff08;从字符串的第几个开始&#xff0c;默认为1&#xff0c;注&#xff1a;…