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

文章目录

    • 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.mfbz.cn/a/496405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot实战---4.常用内容小结

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;SptringBoot &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处…

【项目技术介绍篇】若依管理系统功能介绍

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

【scala】使用gradle和scala构建springboot程序

零、版本说明: springboot: 2.7.18 使用log4j2&#xff0c;不使用springboot自带的logback scala版本&#xff1a;2.11 jackson版本&#xff1a;2.16.0 一、依赖&#xff1a; buildscript {dependencies {// using spring-boot-maven-plugin as package toolclasspath("…

Scala第十三章节(作为值的函数及匿名函数、柯里化、闭包及控制抽象以及计算器案例)

章节目标 掌握作为值的函数及匿名函数的用法了解柯里化的用法掌握闭包及控制抽象的用法掌握计算器案例 1.高阶函数介绍 Scala 混合了面向对象和函数式的特性&#xff0c;在函数式编程语言中&#xff0c;函数是“头等公民”&#xff0c;它和Int、String、Class等其他 类型处于…

【华大 HC32L110】调用`printf`和串口接收中断的冲突问题解决

华大单片机 HC32L110调用printf和串口接收中断的冲突问题解决,经过查找是官方库 去使能了 串口的接收功能,记录解决问题的过程 目录 1.硬件MCU资料2. printf和串口接收中断的冲突解决3.重新封装 fputc 函数4.查找问题,发现是官方库配置有误5. 查找寄存器手册,修改寄存器配置…

智慧光伏:企业无纸化办公

随着科技的快速发展&#xff0c;光伏技术不仅成为推动绿色能源革命的重要力量&#xff0c;更在企业办公环境中扮演起引领无纸化办公的重要角色。智慧光伏不仅为企业提供了清洁、可持续的能源&#xff0c;更通过智能化的管理方式&#xff0c;推动企业向无纸化办公转型&#xff0…

MySQL三种开窗函数详细用法,图文详解

开窗函数的详细用法 第一章、开窗函数的语法1.1&#xff09;从聚合开窗函数讲起1.2&#xff09;开窗函数之取值1.3&#xff09;排名开窗函数 第一章、开窗函数的语法 开窗函数的语法为&#xff1a;over(partition by 列名1 order by 列名2 )&#xff0c;括号中的两个关键词par…

谈到视频编码标准时,实际指什么?

当在谈论一个视频编码标准时&#xff0c;实际指是什么&#xff1f;相关论文&#xff0c;还是编解码器代码&#xff0c;或者其他东西&#xff1f; 比如H.264视频编码标准&#xff0c;当论文或书上看到它时&#xff0c;通常是H.264/AVC的形式&#xff0c;如下&#xff1a; It was…

Linux:详解TCP协议(一)

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议&#xff0c;也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

蓝桥OJ3510 冶炼金属(暴力+二分)

冶炼金属 学习了b站Turing_Sheep的思路 一、暴力模拟 思路&#xff1a; b[i] a[i] / v b[1] a[1] / v b[2] a[2] / v .... b[n] a[n] / v 以上列举中v要满足所有的记录&#xff0c;但凡一个记录不满足&#xff0c;v就不满足题意。 从小到大列举v,设置v最大为1e6 设置一个标…

鸿蒙开发之ArkUI组件常用组件-CustomDialog/Video

CustomDialog 自定义弹窗&#xff08;CustomDialog&#xff09;可用于广告、中奖、警告、软件更新等与用户交互响应操作。我们可以通过CustomDialogController类显示自定义弹窗。 创建自定义弹窗 使用CustomDialog装饰器装饰自定义弹窗CustomDialog装饰器用于装饰自定义弹窗&a…

Vuepress 2从0-1保姆级进阶教程——美化与模板

Vuepress 2 专栏目录 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——范例与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程——全文搜索…

【Java程序设计】【C00388】基于(JavaWeb)Springboot的校园竞赛管理系统(有论文)

Springboot的校园竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客…

基于ZHW3548的红外额温枪解决方案

红外额温枪&#xff0c;非接触式测量最典型的方法是红外测温。自红外辐射原理被发现以来&#xff0c;红外技术被广泛应用在温度测量中。红外测温仪具有测温范围广&#xff0c;响应速度快&#xff0c;灵敏度高等特点。红外耳温枪、红外额温计和红外筛检仪都属于非接触式体温计。…

实验3 中文分词

必做题&#xff1a; 数据准备&#xff1a;academy_titles.txt为“考硕考博”板块的帖子标题&#xff0c;job_titles.txt为“招聘信息”板块的帖子标题&#xff0c;使用jieba工具对academy_titles.txt进行分词&#xff0c;接着去除停用词&#xff0c;然后统计词频&#xff0c;最…

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容&#xff0c;顺手也总结下鱼眼相机的测距流程和误差分析&#xff0c;如果有错误&#xff0c;还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正&#xff08;完整版&#xff09; 相机模型总结&#xff08;针孔、鱼眼、全景&#xff09; 三维…

Linux 基础IO [缓冲区文件系统]

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;http://t.csdnimg.cn/G90eI⏪   &#x1f69a;代码仓库:Linux: Linux日常代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言…

HarmonyOS实战开发-实现自定义弹窗

介绍 本篇Codelab基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示 相关概念 AlertDialog&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回调…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)

概览 承接上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)我们在其中讨论了如何使用第三方强大通用的钩子库 SwiftHook 来协助我们完成 NSObject 构造器 init 的 SWIZZ 操作。我们还讨论了为什么用 print 打印对象信息时会发生崩溃…

在Windows系统上安装多个 Nodejs

前言 在Windows系统安装Nodejs 在Windows系统上安装多个 Nodejs v14.16.1安装位置 D:\sde\nodejs\node-v14.16.1-win-x64 v16.20.2安装位置 D:\sde\nodejs\node-v16.20.2-win-x64 v18.20.0安装位置 D:\sde\nodejs\node-v18.20.0-win-x64 v20.12.0安装位置 D:\sde\nod…
最新文章