使用Spring Cloud搭建一个项目框架之父子模块的创建

前言

说实在的,Spring Cloud的这个系列,很多人都写过,写的比博主好的一大堆,网友们百度一下,就可以发现很多很多,甚至有一批都是系列文章,我只不过之前学过一段时间,但是过了一段时间了,很多东西都忘了,在这里再次巩固一下相关知识点,如果你也一样,那么可以看一下我这个系列的文章,如果你是初学者,你可以先去了解一下比我写的更好的博主,我可以做到的,仅仅就是把这个系列相对好一点,但是我却不能满足大众的所有口味,所以如果你喜欢,你可以看一下,如果你不喜欢,可以移步看看别的博主文章。

顺便在提及一句,这个系列可能比较长,我尽可能的更新,但是我也会同步更新我在实际开发中碰到的其他关于我处理问题的博文,所以这个系列将会很漫长,对我来说很漫长。


好了废话不多说了,本文主要目标,搭建一个Spring Cloud的系列的项目,然后使用Spring Cloud的相关组件,完成整个框架的搭建。

相关工具

本系列可能用到的相关工具,可能用到的哈

工具名称版本
IDEA2022.1
MySQL5.7及以上
Rabbit MQ暂且未定
Linuxcentos 7
api foxlastest
OV Virtual Box6.0以上
Vagrant2.3.6
redislastest
maven3.8.x

切记,OV 就是Oracle VM VirtualBox vagrant 和 OV的版本最好和我差不多,建议是一样,不然你会很难受,我踩过一段时间的坑,是因为版本问题导致的,这个后续我使用到的时候再说。

项目搭建

说了这么多,现在我们来了解Spring Cloud的项目怎么搭建吧,首先咱们在IDEA中创建一个Spring Cloud的项目吧:

注意:如果你使用IDEA版本不是2022以上的,那么你的配置可能与我的有所差别。

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

可以自行选择,对了提及一下,如果你不知道这个玩意是干啥的,推荐不要选择他,选了也没事,pom.xml文件中可以进行删除的。

我们确定好了相关依赖,那么我们看看搭建好的项目结构:
在这里插入图片描述
项目框架有了,那么继续往下看,我们需要手动引入Spring Cloud依赖,强调,Spring Boot的依赖和Spring Cloud的依赖有对应关系,这里重点强调一下。否则会出现报错或者项目启动不了的问题,影响后续步骤的正常进行。


具体的版本依赖参照Spring Boot官网: https://spring.io/
Spring Boot包文件:https://start.spring.io/
官网版本对应地址:https://start.spring.io/actuator/info
Spring Cloud官方文档直达:https://spring.io/projects/spring-cloud

SpringCloud版本SpringBoot版本
2022.0.0-M2Spring Boot >=3.0.0-M2 and < 3.1.0-M1
2022.0.0-M1Spring Boot >=3.0.0-M1 and < 3.0.0-M2
2021.0.3Spring Boot >=2.6.1 and < 3.0.0-M1
2021.0.0-RC1Spring Boot >=2.6.0-RC1 and <2.6.1
2021.0.0-M3Spring Boot >=2.6.0-M3 and <2.6.0-RC1
2021.0.0-M1Spring Boot >=2.6.0-M1 and <2.6.0-M3
2020.0.5Spring Boot >=2.4.0.M1 and <2.6.0-M1
Hoxton.SR 8,12系列Spring Boot >=2.2.0.RELEASE and <2.4.0.M1
Hoxton.BUILD-SNAPSHOTSpring Boot >=2.2.0.BUILD-SNAPSHOT
Hoxton.M2Spring Boot >=2.2.0.M4 and <=2.2.0.M5
Greenwich.BUILD-SNAPSHOSpring Boot >=2.1.9.BUILD-SNAPSHOT and <2.2.0.M4
Greenwich.SR2Spring Boot >=2.1.0.RELEASE and <2.1.9.BUILD-SNAPSHOT
Greenwich.M1Spring Boot >=2.1.0.M3 and <2.1.0.RELEASE
Finchley.BUILD-SNAPSHOTSpring Boot >=2.0.999.BUILD-SNAPSHOT and <2.1.0.M3
Finchley.SR4Spring Boot >=2.0.3.RELEASE and <2.0.999.BUILD-SNAPSHOT
Finchley.RC2Spring Boot >=2.0.2.RELEASE and <2.0.3.RELEASE
Finchley.RC1Spring Boot >=2.0.1.RELEASE and <2.0.2.RELEASE
Finchley.M9Spring Boot >=2.0.0.RELEASE and <=2.0.0.RELEASE
Finchley.M7Spring Boot >=2.0.0.RC2 and <=2.0.0.RC2
Finchley.M6Spring Boot >=2.0.0.RC1 and <=2.0.0.RC1
Finchley.M5Spring Boot >=2.0.0.M7 and <=2.0.0.M7
Finchley.M4Spring Boot >=2.0.0.M6 and <=2.0.0.M6
Finchley.M3Spring Boot >=2.0.0.M5 and <=2.0.0.M5
Finchley.M2Spring Boot >=2.0.0.M3 and <2.0.0.M5
Edgware.SR51.5.20.RELEASE
Edgware.SR51.5.16.RELEASE
Edgware.RELEASE1.5.9.RELEASE
Dalston.RC11.5.2.RELEASE

如果你使用的是最新的Spring Boot,3.0.x以上的,请参照如下:

{"git":{"branch":"05b5b0ec9cb75c61389471349454c86d0ce2d2e3","commit":{"id":"05b5b0e","time":"2023-12-01T08:49:20Z"}},"build":{"version":"0.0.1-SNAPSHOT","artifact":"start-site","versions":{"spring-boot":"3.2.0","initializr":"0.21.0-SNAPSHOT"},"name":"start.spring.io website","time":"2023-12-01T08:50:13.783Z","group":"io.spring.start"},"bom-ranges":{"codecentric-spring-boot-admin":{"3.1.5":"Spring Boot >=3.1.0 and <3.2.0-M1"},"hilla":{"2.4.0":"Spring Boot >=3.1.0 and <3.2.0-M1"},"sentry":{"6.28.0":"Spring Boot >=2.7.0 and <3.2.0-M1"},"solace-spring-boot":{"2.0.0":"Spring Boot >=3.0.0"},"solace-spring-cloud":{"3.0.0":"Spring Boot >=3.0.0"},"spring-cloud":{"2022.0.4":"Spring Boot >=3.0.0 and <3.2.0-M1","2023.0.0-RC1":"Spring Boot >=3.2.0-M1 and <3.2.1-SNAPSHOT","2023.0.0-SNAPSHOT":"Spring Boot >=3.2.1-SNAPSHOT"},"spring-cloud-azure":{"5.7.0":"Spring Boot >=3.0.0 and <3.3.0-M1"},"spring-cloud-gcp":{"4.8.4":"Spring Boot >=3.0.0 and <3.2.0-M1"},"spring-cloud-services":{"4.0.3":"Spring Boot >=3.0.0 and <3.2.0-M1"},"spring-modulith":{"1.0.3":"Spring Boot >=3.1.0 and <3.2.0-M1","1.1.0":"Spring Boot >=3.2.0-M1"},"spring-shell":{"3.1.6":"Spring Boot >=3.1.0 and <3.2.0-M1","3.2.0-RC1":"Spring Boot >=3.2.0-M1"},"timefold-solver":{"1.3.0":"Spring Boot >=3.0.0 and <3.2.0-M1"},"vaadin":{"24.2.5":"Spring Boot >=3.0.0 and <3.2.0-M1"}},"dependency-ranges":{"dgs-codegen":{"6.0.3":"Spring Boot >=3.0.0-M1"},"okta":{"3.0.6":"Spring Boot >=3.0.0 and <3.3.0-M1"},"mybatis":{"3.0.3":"Spring Boot >=3.0.0"},"pulsar":{"0.2.0":"Spring Boot >=3.0.0 and <3.2.0-M3","managed":"Spring Boot >=3.2.0-M3"},"pulsar-reactive":{"0.2.0":"Spring Boot >=3.0.0 and <3.2.0-M1","managed":"Spring Boot >=3.2.0-M1"},"camel":{"4.2.0":"Spring Boot >=3.0.0 and <3.2.0-M1"},"picocli":{"4.7.5":"Spring Boot >=3.0.0 and <3.2.0-M1"}}
}

比如博主在上边标黄的,我采用的是如下配置文件的:

<?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.miaow</groupId><artifactId>springCloud</artifactId><version>0.0.1-SNAPSHOT</version><name>springCloud</name><description>springCloud</description><!-- 1 确定spring boot的版本--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.12.RELEASE</version></parent><!--2  确定版本--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-cloud.version>Hoxton.SR8</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><!-- 3 锁定sprig cloud版本--><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></dependencies></dependencyManagement><!-- 4 确定spring cloud私有仓库--><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>

你可以拿着这个pom文件直接覆盖,对了jdk版本需要对应。
maven我的版本是3.8.x系列的。

好了基本框架搭建好了,那么我们具体实现一个微服务吧,完成Eureka组件完成注册中心的搭建吧,对了提及一下,网上对Eureka的使用持有不同的意见,毕竟Spring Cloud官方,是将那个时候主流的相关框架和组件整合在一起,他也没有考虑到Eureka框架会停止更新,所以你使用或者不使用,都由你自己决定,目前比较火的是阿里巴巴的nacos作为注册中心,用来取代Eureka,这也是可行的,还是那句话,你想用Eureka就用Eureka,前提条件你必须知道一点,否则这个出问题,你要找问题有点麻烦,毕竟别人停更许久了,并且还有个问题就是,你所用的技术栈支持Eureka不,使用Nacos的也可以,反正萝卜青菜各有所爱。


接下来,我们采用Eureka作为注册中心创建创建一个模块来具体实现我们的第一个微服务。

什么是Eureka?

Eureka是Netflix开源的一款服务注册与发现组件,它用于构建可水平扩展的微服务架构。Eureka的主要功能是允许服务实例(例如,微服务)在启动时向注册中心注册自己,并在运行时周期性地向注册中心发送心跳来更新其状态。其他服务可以通过查询注册中心来发现和调用这些可用的服务实例。

Eureka的核心概念包括:

  • 服务注册:服务实例在启动时向Eureka注册中心注册自己,包括服务名称、主机名、端口号等信息。
  • 服务发现:其他服务可以通过查询Eureka注册中心来发现可用的服务实例,以便进行服务间的通信。
  • 心跳与健康检查:服务实例通过发送心跳来告知Eureka注册中心自己的状态,如果一个服务实例长时间没有发送心跳,Eureka将从注册中心中移除该实例。

关于Eureka的停止更新问题,Netflix宣布在2018年停止对Eureka的主动开发和更新。虽然Netflix不再积极维护Eureka,但它仍然是一个成熟和可靠的服务注册与发现解决方案,并且在许多企业和开源项目中广泛使用。此外,Spring Cloud团队仍然提供对Eureka的支持和维护,确保其与Spring Cloud框架的兼容性。

这里提一个面试中,我们经常碰到的问题:

  • 什么是微服务?什么是分布式?(答案自行百度)

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

对了,看到我打错字了木有,Eureka我打成euraka去了。你记得该,我就懒得删除了,有错误的东西代表这玩意是我写的,哈哈哈。

在这里插入图片描述

ok,我们在Eureka模块中添加Eureka依赖,这个是需要我们手动添加的哈。

看一下我的pom.xml文件:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springCloud</artifactId><groupId>com.miaow</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>euraka</artifactId><name>euraka</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--web起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Eureka服务端 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><version>2.2.1.RELEASE</version></dependency></dependencies>
</project>

ok,修改好了这个pom.xml文件。
我们发现,我们创建的maven文件好像没有Spring Boot启动文件,并且也没有Resources文件夹,那怎么办呢?
很简单,没有就创建一个嘛!!!

在这里插入图片描述
然后有童鞋发现,唉,我的这个和你的不一样呀?你说怎么做到的,我创建resources文件后,他没你的那个图标呀,我只能说小伙子,你还太年轻了

在这里插入图片描述
在这里插入图片描述
然后我们发现,可以了,对了强调一下,我们导入必须在依赖中引入父依赖的
在这里插入图片描述
这里,不然你会失败的,请对准我上边的子模块的pom.xml文件进行。

那么我们来创建一个application.yml文件,当然application.properties文件也行.

## Tomcat
server:port: 1000# Spring
spring:application:# 应用名称,你自定义的name: eureka-demo
eureka:client:sevice-url:#http://localhost:${server.port}/eureka 前端访问Eureka的地址defaultZone: http://localhost:${server.port}/eureka#告诉Eureka不要把自己自己作为服务注册进去注册中心,以下代码需要注意填写register-with-eureka: falsefetch-registry: false

或者在application.properties中配置也是一样的:

server.port=1000
# 应用名称,你自定义的
spring.application.name= eureka-demo
eureka.client.sevice-url.defaultZone= http://localhost:${server.port}/eureka
eureka.client.register-with-eureka= false
eureka.client.fetch-registry= false

然后我们将我们的EurekaApplication中,别学我偷懒(我这里是App)启动文件添加到我们的Configuration文件中
在这里插入图片描述

在这里插入图片描述
然后再我们的启动类文件上添加:

ok,我们启动一下我们的项目:

在这里插入图片描述
对了,在父模块中,我们不放任何代码,就只有一个pom.xml文件。其他的可以删除,如下图所示。

在这里插入图片描述

启动成功了,然后我们去访问:localhost:1000得到如下界面:
在这里插入图片描述
说明,我们的子模块顺利搭建成功了!可喜可贺。。。。

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

然后我们可能发现这个错误:
这个是Eureka的自我保护机制。Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提示这个警告。

Eureka server和client之间每隔30秒会进行一次心跳通信,告诉server,client还活着。由此引出两个名词:
Renews threshold:server期望在每分钟中收到的心跳次数
Renews (last min):上一分钟内收到的心跳次数。

更为具体的解答请参照:https://blog.csdn.net/hadues/article/details/105023709

至此,我们的项目框架轮廓的初步模型就成功搭建了。

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

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

相关文章

ElasticSearch基础知识

ElasticSearch是一个高扩展的分布式全文搜索引擎&#xff0c;基于Lucene作为核心实现所有索引和搜索的功能。 使用场景&#xff1a; &#xff08;1&#xff09;搜索领域&#xff1a;如维基百科、谷歌&#xff0c;全文检索等。 &#xff08;2&#xff09;网站具体内容&#xf…

聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- mutableStateListOf

Jekpack Compose “状态订阅&自动刷新” 系列&#xff1a; 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - MutableState/mutableStateOf 】 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - remember 和重组作用域 】 【 聊聊 Jetpack Compose 的 …

腾讯云轻量应用服务器怎么安装宝塔Linux面板?

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

洗袜子的洗衣机哪款好?最好用的迷你洗衣机推荐

内衣洗衣机是一种专门用于清洁内衣裤以及袜子等等贴身衣物的小型洗衣机。对于大部分的用户而言&#xff0c;内衣裤作为着我们日常生活中必不可少的贴身衣物&#xff0c;因此对于日常所穿内衣裤的清洁和卫生都是非常重要。不仅涉及到隐私部位的卫生安全&#xff0c;更容易影响自…

javaEE -14(10000字 JavaScript入门 - 1)

一&#xff1a;初始 JavaScript JavaScript (简称 JS)是世界上最流行的编程语言之一&#xff0c;它是一个脚本语言, 通过解释器运&#xff0c;主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. JavaScript 和 HTML 和 CSS 之间的关系&#xff1a; HTML…

(C++)和为s的两个数字--双指针算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 和为S的两个数字_牛客题霸_牛客网输入一个升序数组 array 和一个数字S&#xff0c;在数组中查找两个数&#xff0c;使得他们的和正好是S&#xff0c;如果。题目来自【牛客题霸】https://www.nowcoder.com/practice/390da4f7a…

【力扣热题100】207. 课程表 python 拓扑排序

【力扣热题100】207. 课程表 python 拓扑排序 写在最前面207. 课程表解决方案&#xff1a;判断是否可以完成所有课程的学习方法&#xff1a;拓扑排序实现步骤Python 实现性能分析结论 写在最前面 刷一道力扣热题100吧 难度中等 https://leetcode.cn/problems/course-schedule…

探索C++14新特性:更强大、更高效的编程

探索C14新特性&#xff1a;更强大、更高效的编程 C14并没有太大的改动&#xff0c;就连官方说明中也指出&#xff0c;C14相对于C11来说是一个比较小的改动&#xff0c;但是在很大程度上完善了C11&#xff0c;所以可以说C14就是在C11标准上的查漏补缺。 C14在2014年8月18日正式…

计网Lesson7 - 超网与路由概述

文章目录 一、构造超网1 概念解析2 路由聚合判断网段 3 实例演示几个配置问题&#xff1a;传输过程中的若干问题包的问题传输时丢包的问题 4 判断是子网还是超网 二、路由概述1. 路由的作用2. 多个网段进行联络3. 数据包的传输 一、构造超网 1 概念解析 与划分子网相反&#…

从0到1实现Flink 实战实时风控系统的经验总结

随着互联网金融的快速发展&#xff0c;实时风控系统成为保障业务安全和用户信任的关键。本文将分享从零开始构建Flink实时风控系统的经验&#xff0c;并提供相关示例代码。 一、搭建Flink环境 首先&#xff0c;我们需要搭建Flink环境。以下是一些基本步骤&#xff1a; 安装Ja…

创新、升级丨数据手套FOHEART Pro开启手势识别新篇章!

在人机交互领域&#xff0c;我们始终追求更加自然、逼真的体验。正如现实生活中&#xff0c;我们习惯于通过语言和表情来传达思想和情感&#xff0c;然而&#xff0c;在虚拟世界中&#xff0c;人机交互需要以更加直观、生动的方式进行操作、控制和交互。 为了更好地满足市场的…

css实现姓名两端对齐

1.1 效果 1.2 主要代码 text-align-last: justify; 1.3 html完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

Vue 生成包含数字大小写字母的随机字符串

generateRandomID() {const characters 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ;const idLength 30; // 字符串长度 这里生成30位的let randomID ;for (let i 0; i < idLength; i) {const randomIndex Math.floor(Math.random() * characters…

数学建模-二氧化碳排放及时空分布测度

二氧化碳排放及时空分布测度 整体求解过程概述(摘要) 面临全球气候变化的巨大挑战&#xff0c;我国积极响应《巴黎协定》的号召&#xff0c;提出“2030年前碳达峰&#xff0c;2060 年前实现碳中和”的碳排放发展目标&#xff0c;并将碳中和相关工作作为 2021 年的重点任务之一…

吉客云与金蝶云星辰业财一体化数据集成

吉客云与金蝶云星辰业财一体化数据集成为例&#xff0c;探讨如何利用轻易云数据集成平台高效整合企业系统。金蝶云星辰在供应链和财务管理方面具有显著优势&#xff0c;而吉客云则专注于订单处理和发货。两者的协同运作&#xff0c;是企业数字化转型的典型案例。 二、集成总体蓝…

python-学生管理|汉罗塔

1.编写程序&#xff0c;实现学生信息管理系统。 运行程序&#xff0c;在控制台输入“1”之后的结果如下所示&#xff1a; 学生管理系统 1.添加学生信息 2.删除学生信息 3.修改学生信息 4.显示所有学生信息 0.退出系统 请选择功能&#xff1a;1 请输入新学生的姓名:小红 请输入…

排序算法:n个0~1000之间的整数,将他们从大到小排序

上榜理由&#xff1a; 如果没见过这种排序题&#xff0c;可能首先想到的就是常用的排序算法&#xff0c;比如快速排序&#xff0c;归并排序&#xff0c;那如果输入的n足够大&#xff0c;时间复杂度肯定比较高。其实题目0-1000的范围是一个题眼&#xff0c;所以一定有更优的排序…

商务助理个人简历10篇

商务助理简历模板下载&#xff08;可在线编辑制作&#xff09;&#xff1a;来幻主简历&#xff0c;做好简历&#xff01; 商务助理简历1&#xff1a; 求职意向 求职类型&#xff1a;全职 意向岗位&#xff1a;国际商务、产品助理 意向城市&#xff1a;广东广州 …

ElasticSearch篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、谈谈分词与倒排索引的原理二、说说分段存储的思想三、谈谈你对段合并的策略思想的认识前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分…

【每日一题】确定两个字符串是否接近

文章目录 Tag题目来源题目解读解题思路与实现方法一&#xff1a;计数 其他语言python3 写在最后 Tag 【计数】【字符串】 题目来源 1657. 确定两个字符串是否接近 题目解读 你可以进行以下两种操作&#xff1a; 操作 1&#xff1a;交换任意两个位置的字符&#xff1b;操作 …