SpringCloud Feign 以及 一个标准的微服务的制作

一个标准的微服务制作

以一个咖啡小程序项目的订单模块为例,这个模块必将包括:

各种实体类(pojo,dto,vo....)

控制器 controller  服务类service

......

其中控制器中有的接口需要提供给其他微服务,订单模块也需要其他微服务提供接口。

那么在项目开发和维护的过程中,如果一个模块里面的内容发生变动,相关的模块的业务也要修改,有种“牵一发而动全身”的感觉。(如订单模块修改了一个订单pojo里面的一个字段,那么用户模块用到这个订单pojo的所有业务也要同时修改,十分麻烦)

于是乎,我们需要将一个完整的微服务模块拆成三个部分

baoder_orders是项目的订单模块,它被拆成了三个部分

其中:

baoder_orders_model :包含了订单模块要用的所有的实体类

baoder_orders_service :包含了订单模块的所有的业务,它会调用baoder_orders_model

baoder_orders_api :包含了订单模块向其他微服务暴露的接口(基于Feign的声明式的http客户端) 其他微服务可以通过引入 baoder_orders_api 来调用baoder_orders_service的服务

********************************************************************

那么这三个部分是怎么相互协作的呢?且看下文细细道来

*********************************************************

我们先分别分析三个部分的结构,最后再通过最上面的这个图来加深理解 

baoder_orders_model

目录结构如下,baoder_orders_model模块用于保存订单模块需要的所有实体类,包括统一封装结果,自定义异常等,异常拦截器仍然放在baoder_orders_service里面。

打开它的pom文件,可以看到它确确实实只是作为存储实体类的模块,甚至连bulid标签都没有

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gmgx</groupId><artifactId>baoder_orders_model</artifactId><version>0.0.1-SNAPSHOT</version><name>baoder_orders_model</name><description>baoder_orders_model</description>
<!--    baoder_parent用于管理项目需要的所有的依赖的版本--><parent><groupId>com.gmgx</groupId><artifactId>baoder_parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId></dependency><!--模板引擎--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency></dependencies></project>

我们需要做的事情就是让他被service和api引用,那么就需要把它安装到我们本地的maven仓库里面,需要的时候作为依赖在pom文件中引用即可。

执行完这三步后,去我们本地的maven仓库所在的文件夹里面,可以看到打包好的baoder_orders_model依赖

 baoder_orders_service

目录结构如下,baoder_orders_service包含了订单模块的所有业务,这个模块是要被打包发布到docker上的,所以会有有关docker的两个文件

打开application.properties文件,可以看到关于数据库,nacos,redis的相关配置。

其中数据库和redis是业务需要的

同时利用nacos将这个微服务注册到nacos注册中心上,服务名为baoder-orders-service


# 应用服务 WEB 访问端口
server.port=8090# 数据库配置
spring.datasource.url=jdbc:mysql://192.168.2.222:3306/baoder-orders?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&connectTimeout=10000&socketTimeout=30000&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
spring.application.name=baoder-orders-service
# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=192.168.2.222:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public# redis配置
spring.data.redis.host=192.168.2.222
spring.data.redis.database=0

 (重头戏)打开pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gmgx</groupId><artifactId>baoder_orders_service</artifactId><version>0.0.1-SNAPSHOT</version><name>baoder_orders_service</name><description>baoder_orders_service</description><parent><groupId>com.gmgx</groupId><artifactId>baoder_parent</artifactId><version>0.0.1-SNAPSHOT</version></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-discovery</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></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><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId></dependency><!--        redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><dependency><groupId>com.gmgx</groupId><artifactId>baoder_orders_model</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.gmgx.BaoderOrdersServiceApplication</mainClass><skip>false</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin><!--            跳过测试--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.4.2</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

可以看到我们刚才install到本地仓库的baoder_orders_model

 

我们随便打开一个服务,能看到baoder_orders_model里面的实体类已经被引进来了

这样一来,负责其他模块的同事们只需要拿到最新的baoder_orders_model,就可以愉快地做自己的模块了,只需要我把最新的 baoder_orders_model给他们,让他们在他们的本地仓库install就可以了。

baoder_orders_api(被调用方)

目录结构如下。baoder_orders_api 负责向其他调用者(其他微服务)提供baoder_service_api暴露出来的接口,我们需要详细说明这个模块是怎么做的,这就是SpringCloud中Feign组件的应用。

1.引入依赖

我们需要引入如下依赖(这两个依赖是feign要用的)

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

 最终的pom文件是这样的,声明http请求需要实体类,因此引入了baoder_orders_model 

其实只需要三个依赖(2+1)就行了,boot的依赖调用者肯定会有

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gmgx</groupId><artifactId>baoder_orders_api</artifactId><version>0.0.1-SNAPSHOT</version><name>baoder_orders_api</name><description>baoder_orders_api</description><parent><groupId>com.gmgx</groupId><artifactId>baoder_parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.gmgx</groupId><artifactId>baoder_orders_model</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.gmgx.BaoderOrdersApiApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

2.写客户端接口 

package com.gmgx.api;import com.gmgx.common.Result;import com.gmgx.dto.OrderSearchDto;
import com.gmgx.dto.SubmitDto;
import com.gmgx.entity.Orders;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;@FeignClient(name = "baoder-orders-service",contextId = "baoder-orders-service"
)
@Component
public interface OrdersClient {static final String prefix = "order";@PutMapping(prefix + "/cancel")public Result<Object> cancel(@RequestBody Orders order);@PutMapping(prefix + "rejection")public Result<Object> rejection(@RequestBody Orders order);@PutMapping(prefix + "confirm")public Result<Object> confirm(@RequestBody Orders order);@PutMapping(prefix + "delivery/{id}")public Result<String> delivery(@PathVariable(value = "id") String id);@PutMapping(prefix + "complete/{id}")public Result<Object> complete(@PathVariable(value = "id") String id);@PostMapping(prefix + "conditionSearch")public Result<Object> conditionSearch(@RequestBody OrderSearchDto dto);@GetMapping(prefix + "details/{oId}")public Result<Object> getDetails(@PathVariable(value = "id") String oId);@PutMapping(prefix + "cancel/{id}/{cancelReason}")public Result<Object> cancelByMember(@PathVariable("id") String id, @PathVariable(value = "cancelReason") String cancelReason);@GetMapping(prefix + "historyOrders/{memberId}")public Result<Object> getHistoryOrders(@PathVariable(value = "memberId") String memberId);@PostMapping(prefix + "submit")public Result<String> submit(@RequestBody SubmitDto submitDto);@PutMapping(prefix + "payment/{oId}/{type}")public Result<Object> payment(@PathVariable(value = "oId") String oId, @PathVariable(value = "type") String type);@PostMapping(prefix + "repetition/{oId}")public Result<Object> repetition(@PathVariable(value = "oid") String oId);
}

*************************************************************************************************************

 @FeignClient用于声明要调用哪个service,这个从service的配置文件里面找,即nacos注册的服务名(所有的微服务都要注册到nacos)

 要把这个接口注册成一个组件,这样调用方就可以通过@Resource 自动装配使用Feign客户端了

 

feign客户端的接口路径,访问方法,请求参数,返回值等要和service那边的控制器一样

 最后,baoder_orders_api也要被install到本地仓库,我们只需要把这个模块给需要调用我们接口的同事就可以了

调用api

现在用一个demo-useOrders项目来模拟baoder_orders_service的调用方

创建好项目后,打开它的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gmgx</groupId><artifactId>demo-useOrders</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-useOrders</name><description>demo-useOrders</description><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version><spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version><spring-cloud.version>2022.0.0-RC2</spring-cloud.version></properties><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-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></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><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.5.0</version></dependency><dependency><groupId>com.gmgx</groupId><artifactId>baoder_orders_api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.gmgx</groupId><artifactId>baoder_orders_model</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.gmgx.DemoUseOrdersApplication</mainClass><skip>false</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

 导入的依赖如下(注意导入了api和model)

 控制器中直接注入就可以使用feign客户端了

applicaton.properties如下

# 应用服务 WEB 访问端口
server.port=8088
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
spring.application.name=useOrders-service
# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=192.168.2.222:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public# 数据库配置
spring.datasource.url=jdbc:mysql://192.168.2.222:3306/baoder-orders?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&connectTimeout=10000&socketTimeout=30000&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

现在把service和demo-useOrders都跑起来(我服务器已经部署了baoder_orders_service容器和demo-useOrders,但是本地连服务器访问会超时,干脆直接启动本地的service模块,效果是一样的)

 

***********************************************************************************************************

最后再回到这张图,思路是否清晰了点,这就是一个标准的微服务的制作流程。(其中baoder_orders_api和demo-useOrders那里用到了SpringCloud的feign组件)

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

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

相关文章

Day04_JVM实战

文章目录 一、gc日志和dump快照GC日志是什么,要怎么看?dump快照是什么?要怎么看?二、gc日志和dump快照实战java.lang.OutOfMemoryError:Java heap space1、gc.log怎么看2、heapdump.hprof怎么看?①jvisualvm查看②使用MAT查看java.lang.OutOfMemoryError:Metaspace1、实时…

给大模型技术从业者的建议,入门转行必看!!

01—大模型技术学习建议‍‍‍ 这个关于学习大模型技术的建议&#xff0c;也可以说是一个学习技术的方法论。 首先大家要明白一点——(任何)技术都是一个更偏向于实践的东西&#xff0c;具体来说就是学习技术实践要大于理论&#xff0c;要以实践为主理论为辅&#xff0c;而不…

产品经理学AI:搭建大模型应用常用的三种方式

如果开发想要基于某个大模型开发一个应用该怎么做&#xff1f; 一般有以下几种方式&#xff1a; 1、自己部署大模型 部署大模型&#xff0c;分为两种模式&#xff0c;一种是部署自研大模型&#xff0c;还有一种是部署开源大模型。 部署自研大模型的优势是&#xff0c;可以完…

国产龙芯处理器双核64位系统板载2G DDR3内存迅为2K1000开发板

硬件配置国产龙芯处理器&#xff0c;双核64位系统&#xff0c;板载2G DDR3内存&#xff0c;流畅运行Busybox、Buildroot、Loognix、QT5.12 系统!接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini HDMI…

数据库事务的详解

1、 介绍 什么是事务? 事务是一个原子操作。是一个最小执行单元。可以由一个或多个SQL语句组成&#xff0c;在同一个事务当中&#xff0c;所有的SQL语句都成功执行时&#xff0c;整个事务成功&#xff0c;有一个SQL语句执行失败&#xff0c;整个事务都执行失败。(一组操作同时…

气膜足球馆:为青少年运动梦想护航—轻空间

随着青少年足球运动的不断普及&#xff0c;体育场馆的选择和建设正成为学校、俱乐部及家长们关注的重点。作为一种创新的场馆形式&#xff0c;气膜足球馆凭借其独特优势&#xff0c;逐渐成为青少年足球比赛和培训的理想之地。 宽敞舒适&#xff0c;助力足球成长 气膜足球馆采用…

【Linux】探索文件I/O奥秘,解锁软硬链接与生成动静态库知识

目录 1、C文件接口 1.1什么是当前路径&#xff1f; 1.2程序默认打开的文件流&#xff1a; 2、系统文件I/O 2.1.接口介绍&#xff1a; 2.1.1open&#xff1a; 参数讲解; flags如何实现一个参数就可以有多个参数传参的效果&#xff1f; open函数的返回值&#xff1a; 3…

EnzyACT——融合图技术和蛋白质嵌入预测突变蛋白活性变化

论文链接&#xff1a;EnzyACT: A Novel Deep Learning Method to Predict the Impacts of Single and Multiple Mutations on Enzyme Activity | Journal of Chemical Information and Modeling (acs.org) 文章摘要 酶工程涉及通过引入突变来定制酶&#xff0c;以扩大天然酶的…

【sgCreateCallAPIFunctionParam】自定义小工具:敏捷开发→调用接口方法参数生成工具

<template><div :class"$options.name" class"sgDevTool"><sgHead /><div class"sg-container"><div class"sg-start"><div style"margin-bottom: 10px">参数列表[逗号模式]<el-too…

旧衣回收小程序:开启旧衣回收新体验

随着社会的大众对环保的关注度越来越高&#xff0c;旧衣物回收市场迎来了快速发展时期。在数字化发展当下&#xff0c;旧衣回收行业也迎来了新的模式----互联网旧衣回收小程序&#xff0c;旨在为大众提供更加便捷、简单、透明的旧衣物回收方式&#xff0c;通过手机直接下单&…

葡萄叶病害检测系统源码分享

葡萄叶病害检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

venn可视化

文章目录 前言一、数据准备二、可视化1.二维2.三维 3.数据保存总结 前言 韦恩图&#xff08;Venn diagram&#xff09;是一种用于可视化集合之间关系的图形工具。它是由英国逻辑学家约翰韦恩于1880年引入的。 韦恩图由一组圆和它们的交集区域组成。每个圆代表一个集合&#x…

【微服务】Eureka的自我保护机制

Eureka的自我保护模式正是一种针对网络异常波动的安全保护措施&#xff0c;使用自我保护模式能使Eureka集群更加的健壮&#xff0c;稳定的运行。 在正常情况下&#xff0c;Eureka客户端会定期向Eureka服务器发送心跳&#xff0c;以表明它仍然存活和可用。如果Eureka服务器在配…

神经网络推理加速入门——指令流水线

前言 刚毕业的时候在青岛某信任职&#xff0c;做嵌入式软件开发&#xff0c;需要调试电路板。公司有个要求是所有新入职的员工&#xff0c;都要去公司自己的加工厂上两周的班&#xff0c;亲自组装生产电路板&#xff0c;体验产品生产的过程。 于是&#xff0c;刚毕业的我&…

es操作的请求体

创建索引的请求体 插入数据 查询索引 删除数据

本地安装MySQL并配置环境变量

MySQL是一个关系型数据库管理系统&#xff0c;是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系数据库管理系统) 应用软件之一。 本地安装MySQL 提供了 MySQ…

算法之搜索--最长公共子序列LCS

最长公共子序列&#xff08;longest common sequence&#xff09;:可以不连续 最长公共子串&#xff08;longest common substring&#xff09;&#xff1a;连续 demo for (int i 1;i<lena;i){for (int j 1;j<lenb;j){if(a[i-1]b[j-1]){dp[i][j]dp[i-1][j-1]1;}el…

如何扫描试卷去除笔迹?4种方法还原整洁试卷

如何扫描试卷去除笔迹&#xff1f;扫描试卷去除笔迹&#xff0c;作为现代学习管理与评估的革新手段&#xff0c;不仅显著提升了试卷的整洁美观度&#xff0c;更在环保和资源再利用层面发挥了积极作用。它使得试卷的保存、分享与复习变得更加便捷高效&#xff0c;减少了纸质资源…

iptables限制网速

1、使用hashlimit来限速 #从eth0网卡进入INPUT链数据&#xff0c;使用模块hashlimit 限制网速为100kb/s或2mb/s,超过限制的数据包会被DROP。OUTPUT链同理&#xff0c;mode为srcip&#xff0c;有4个mode选项: srcip&#xff08;默认匹配每个源地址IP&#xff0c;配置指定源地址…

Bootstrap 实例(默认的分页)

Bootstrap 支持的分页特性。分页&#xff08;Pagination&#xff09;&#xff0c;是一种无序列表&#xff0c;Bootstrap 像处理其他界面元素一样处理分页。 分页&#xff08;Pagination&#xff09; 下表列出了 Bootstrap 提供的处理分页的 class。 <!DOCTYPE html> &l…