WEB编程-了解Tomcat服务器

第⼀章⽹络编程

1.1 概述

计算机⽹络:是指将地理位置不同的具有独⽴功能的多台计算机及其外部设备,通过通信线路连接起来,在⽹络

操作系统、⽹络管理软件及⽹络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

⽹络编程:在⽹络通信协议下,实现⽹络互连的不同计算机上运⾏的程序间可以进⾏数据交换。(可以通过我们

编写的⽹络程序基于互联⽹去访问别⼈电脑上的程序和资源。)

⽬前的⽹络程序分两种结构:CS / BS

1.2 CS / BS

软件架构(结构) 的两种不同的表现形式

C/S结构:全称为 Client/Server 结构,是指客户端和服务器结构。常⻅程序有 QQ ,百度⽹盘等软件。

特点:  ⼀般服务端仅仅安装了数据库和数据存储,所有程序代码(功能/界⾯) 都编写在客户端软件中.

优点:  直观,⽤户体验好,界⾯美观,安全性⾼等.

缺点:  每次升级,需要重新安装,移植性较低,开发和维护成本较⾼,不跨平台

B/S结构:全称为 Browser/Server 结构,是指浏览器和服务器结构。常⻅浏览器有⾕歌、⽕狐等。
 

     特点: 在服务端编写代码,所有的业务逻辑都由服务端完成,客户端只负责界⾯渲染.

    优点: 可移植性很⾼,开发和维护较好.

    缺点: 以前⽤户体验不够好,界⾯不够丰富,安全性相对较低.

新型 BS 结构  : 需求和技术发展的产物

瘦客户端 : 传统的 B/S .   服务端: 负责业务逻辑;   客户端: 负责界⾯渲染.

富客户端 : 超级 BS=CS+BS , 界⾯华丽.  服务端:负责业务逻辑;   客户端: 负责界⾯渲染 + 少量的业务逻辑.

以上架构各有优势,但是⽆论哪种架构,都需要基于⽹络进⾏通信,那他们是如何通信的?

1.3 ⽹络通信三要素

1.3.1 IP 地址

IP地址:互联⽹协议地址(Internet Protocol Address要想让⽹络中的计算机能够被识别,就必须为每台计

算机指定⼀个唯⼀的标识,通过改标识来找到相应的计算机,⽽IP就是这个标识。

IP地址分类

IPv4:是⼀个 32 位的⼆进制数,通常被分为 4 个字节,表示成a.b.c.d  的形式,例如 192.168.65.100  。

其中 abcd 都是0~255之间的⼗进制整数,那么最多可以表示⼤约43亿个。

IPv6:由于互联⽹的蓬勃发展,IP 地址的需求量愈来愈⼤,但是⽹络地址资源有限,使得 IP 的分配越发紧

张。有资料显示,全球 IPv4 地址在20112⽉分配完毕。

为了扩⼤地址空间,拟通过 IPv6 重新定义地址空间,采⽤128位地址⻓度,每 16个字节⼀组,分成8组⼗六进

制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每⼀粒沙⼦编上⼀个

⽹址,这样就解决了⽹络地址资源数量不够的问题。

域名: 映射到某个 ip 的⼀组英⽂单词组合(wolfcode.cn) ,为了更好记忆.

常⽤命令

查看本机 IP 地址,在控制台输⼊

1

ipconfig

检查⽹络是否连通,在控制台输⼊:

ping 空格 IP地址/域名

ping wolfcode.cn

ping 120.78.159.117

特殊的 IP 地址

本机 IP 地址:127.0.0.1localhost

1.3.2 端⼝号

⽹络的通信,本质上是两个进程(应⽤程序)的通信。每台计算机都有很多的进程,那么在⽹络通信时,如何区分

这些进程呢?

如果说IP地址可以唯⼀标识⽹络中的设备,那么端⼝号就可以唯⼀标识设备中的进程(应⽤程序)了。

端⼝号:⽤两个字节表示的整数,它的取值范围是0~65535。其中,0~1023之间的端⼝号⽤于⼀些知名的⽹络

服务和应⽤,普通的应⽤程序需要使⽤1024以上的端⼝号。如果端⼝号被另外⼀个服务或应⽤所占⽤,会导

致当前程序启动失败。

1.3.3 通信协议

⽹络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进⾏通信。这就

好⽐在道路中⾏驶的汽⻋⼀定要遵守交通规则⼀样,协议中对数据的传输格式、传输速率、传输步骤等做了

统⼀规定,通信双⽅必须同时遵守,最终完成数据交换。(⼈和⼈之间交流语⾔需互通)

java.net 包中提供了两种常⻅的⽹络协议的⽀持: UDP  TCP

1.3.3.1 UDP 协议

UDP (User Datagram Protocol) ⽆连接通信协议,不建⽴逻辑连接,当⼀台计算机向另外⼀台计算机发送数据时,

发送端不会确认接收端是否存在,直接发数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

特点: ⾯向⽆连接的协议,消耗资源⼩,通信效率⾼,通常⽤于⾳频、视频等数据传输,因为偶尔丢失⼀两个数据包,不会对接收结果产⽣太⼤影响。

但是在使⽤ UDP 协议传送数据时,由于 UDP 的⾯向⽆连接性,不能保证数据的完整性,因此在传输重要数据时不建议使⽤ UDP 协议。

UDP通信过程如下图所示:

1.3.3.2 TCP 协议

1 TCP 协议概述

TCP(Transmission Control Protocol)协议是⾯向连接的通信协议,即在传输数据前先在客户端和服务器端建⽴

逻辑连接,然后再传输数据。它提供了两台计算机之间可靠⽆差错的数据传输。TCP通信过程如下图所示:

2 TCP 协议特点

⾯向连接的协议

建⽴连接,形成传输数据的通道。

传输数据⼤⼩不受限制

通过三次握⼿完成连接。

通过四次挥⼿断开连接。

TCP是基于 IO 流传输数据。

因为需要建⽴连接,效率会稍低但是可靠协议

第⼀次握⼿: 客户端询问服务器端是在线

第⼆次握⼿: 服务器端通知客户端在线并询问客户端是否在线

第三次握⼿: 客户端通知服务器还在线

建⽴连接通道,开始做数据传输

第⼀次挥⼿: 客户端请求断开连接

第⼆次挥⼿: 服务器发送已经知道要断开,之后把数据发送完.

第三次挥⼿: 服务器发送完数据通知客户端正式断开

第四次挥⼿: 客户端告知服务器确定要断开并等待 2MSL 之后断开

结论: 涉及到数据安全不可丢失的,使⽤ TCP,BS 底层就是使⽤ TCP 协议.

3 基于 TCP ⽹络编程

书写基于⽹络来传输数据的两个程序.

成员和职责:

客户端:  往服务端程序发送数据,然后接收服务端返回的数据.

服务端:  接收客户端程序发送的数据,并做出反馈.

TCP编程-客户端

步骤:

1:创建⼀个连接某个服务端的 Socket 对象

2:Socket中拿到输出流往服务端发送数据

3:调⽤Socket对象对象 shutdownOutput ⽅法通知服务端数据发送完毕

4:Socket中拿到输⼊流获取服务端回馈的数据

5:调⽤Socket对象对象 shutdownInput ⽅法通知服务端数据接收完毕

6:关闭Socket对象

此时由于没有服务端,所以三握⼿不能成功,肯定报错

要想检验该程序是否正确,必须要先把服务端实现之后并正常启动才能验证客户端编写是否正确

接下来就是要编写服务端

TCP编程-服务端

步骤:

1:创建⼀个服务端对象(ServerSocket)

2:侦听客户端的连接,获取和客户端通信的Socket对象

3:Socket获取输⼊流,接收服务器发送的数据

4:调⽤Socket对象对象shutdownInput⽅法通知客户端数据接收完毕

5:Socket中拿到输出流往客户端发送数据

6:调⽤Socket对象对象shutdownOutput⽅法通知客户端数据发送完毕

7:关闭Socket对象

注意: 服务端⼀般都是⻓期开启的,因为服务端⼀旦关闭就不能给客户端提供服务了.

最终⽬标:  浏览器和 Java 程序交互,能显示 Java 程序(数据库)中的数据.

浏览器和服务端程序交互

由于使⽤浏览器接收到的数据是⼀⾏⼀⾏,所有咱们把数据接收改为⼀⾏⼀⾏接收,反馈也改为⼀⾏⼀⾏输出.

以上程序已经实现可以和浏览器进⾏通信,但是存在许多的问题:

1:该程序在并发的情况下,效率低

2:启动服务绑定的端⼝是写死了,万⼀该端⼝被其他程序占⽤,则服务器⽆法启动

3:以上编程模型中的 IO 是属于阻塞IO,传输数据的效率极低等等.

解决: 使⽤别⼈封装好,写好的服务端程序.(软件服务器: Tomcat)

第⼆章 Tomcat 服务器

2.1 WEB 资源概述

2.1.1 什么是 web 资源

浏览器⽹⻚上看到的所有内容都称为 web 资源,⽐如⽂字,图⽚,⾳频,视频,链接等等内容。

2.1.2 Web资源分类

分类

概述

使⽤的技术

静态资源是相对于动态资源⽽⾔,是指没有后台数据库、

不含程序和⼀些不可交互的⽹⻚。你编的是什么它显示的

就是什么、不会有任何改变。

静态资源

HTML/CSS/JS

动态资源会因时因⼈⽽异,以数据库为基础

每次访问内容都可能不⼀样

动态资源

JSP / Servlet

2.2 什么是服务器

2.2.1 服务器分类

软件服务器: 其实就是⼀个软件:提供了B(browser)/S(server)应⽤运⾏的环境(管理了Web应⽤)

作⽤:可以将我们开发好的静态资源或动态资源提供给外界(浏览器)访问。

硬件服务器: 其实就是⼀台电脑,该电脑安装了软件服务器。

2.2.2 软件服务器分类

http 服务器:⽤于运⾏静态的⽹⻚(html)

Web服务器:实现了 JavaEE 部分规范(⽐如Servlet/JSP)、没有实现 JavaEE 中的 EJB 规范。

常⽤的 Web服务器有:Tomcat(Java代码写的,开源的服务器), Jetty

应⽤服务器:实现了 JavaEE 全部的规范/⽀持 EJB 的:TomEE,GlassFish,JBoss,Weblogic,WebSphere

2.2.3 JavaEE 规范

 Java 中所有的服务器要实现⼀组 sun 公司规定的接⼝,这些接⼝称为 JavaEE 规范。不同⼚商的 JavaWeb

服务器都实现了这些接⼝。在 JavaEE 中⼀共有 13 种规范。

常⻅的 JavaEE 规范有: JSPServletJDBCXMLEJB

2.3 Tomcat 安装配置

2.3.1 Tomcat 下载

apache

tomcat 的产品⻚⾯:  

2.3.2 Tomcat安装

解压即完成安装!注意事项:安装路径不能包含中⽂或空格等特殊符号

2.3.3 Tomcat 环境变量配置

Tomcat 是使⽤ Java 语⾔编写的⼀个服务器(程序),要运⾏Tomcat必须得有 jre。必须先配置 JAVA_HOME 或者

JRE_HOME 的环境变量⼀般的我们只配置 JAVA_HOME

上⾯是设置  JAVA_HOME  环境变量,启动 Tomcat 需要执⾏安装⽬录下的  bin ⽬录下⾯的 startup.bat 可执⾏⽂

2.3.4 Tomcat 启动和关闭

1.  启动:双击 bin/startup.bat

测试是否可以访问

2.  关闭:运⾏的是 bin/shutdown.bat

再次访问

2.4 修改 Tomcat 的端⼝号

Tomcat 的默认端⼝是 8080 HTTP  80。所以在访问 8080 端⼝的 Tomcat 中的资

源时,必须要加上端⼝号  

如果想在访问的时候不加端⼝号,我们可以将 tomcat 的端⼝号修改为80

修改 Tomcat 安装⽬录下 /conf/server.xml ⽂件中默认第 69 ⾏,将 8080 修改为 80

配置⽂件改变后需要重新启动 Tomcat,然后访问地址上就不需要输⼊端⼝号了。

2.5 Tomcat ⽬录结构

⽬录

作⽤

bin

启动和关闭Tomcat可执⾏⽂件

配置⽂件夹,有些重要配置⽂件在这下⾯。如:server.xml, web.xml等不建议乱修改,可能导致

Tomcat不能启动

conf

lib

Tomcat使⽤时依赖的⼀些第三⽅jar

logs

⽇志记录⽂件,记录服务器运⾏过程中⼀些事件。包括运⾏过程中出现异常

临时⽂件夹,保存服务器运⾏过程中⽣成的⼀些垃圾⽂件

我们做好的项⽬发布的⽬录,可以通过浏览器来直接访问

ROOT⽬录:在浏览器上看到的欢迎⻚⾯,在这个⽬录下

temp

webapps

work

Tomcat ⼯作⽬录,存储 Tomcat 运⾏过程中产⽣的⽂件,⽐如 jsp 翻译后的class⽂件

2.6 Tomcat 运⾏常⻅问题

2.6.1 未设置 JAVA_HOME 环境变量

出错信息:没有 JAVA_HOME 的配置,执⾏ startup.bat ,窗⼝⼀闪⽽过, cmd 运⾏ startup.bat 会报⼀下环境变

量没配置问题.

解决办法:配置 JAVA_HOME 环境变量

2.6.2 端⼝号被占⽤

出错信息: 地址被占⽤,端⼝号被占⽤

也可以通过⽇志⽂件看得到同样的错误信息:⽇志⽂件位置:安装⽬录/logs⽬录下

解决⽅法

⽅法⼀:找到占⽤ 8080 端⼝的程序并中⽌

⽅法⼆:修改 Tomcat 的端⼝号为其他,⽐如 9090。修改配置⽂件:tomcat/conf/server.xml

修改之后重启Tomcat服务器。

2.6.3 出现 404 的错误提示

当前访问的资源不存在的时候就报404错误. 此时的问题,是我们⾃⼰造成的,把资源的名字写错了或者说根本就没

有此资源。

⽂件编码和内容编码不⼀致的问题,写了中⽂出错

2.7 Tomcat 部署项⽬

了解,推荐掌握第⼆种,虚拟⽬录配置.

2.7.1 web项⽬标准结构

2.7.2 web 项⽬部署⽅式

⽅式1webapps

 tomcat/webapps ⽬录下创建⼀个⽂件夹 PSS,在⽂本夹下⾯有⼀个 abc.html

启动服务器并通过浏览器访问:

⽅式2:虚拟⽬录(推荐)

⽅式1, 发布项⽬的缺点:发布在 webapps 下,webapps 项⽬越多,导致 Tomcat 启动越慢。

Context 标签

conf/server.xml⽂件的 host 元素中配置 Context 标签

说明

虚拟访问⽬录的名称

path 属性

配置的名称必须是唯⼀的

docBase 属性

Web 应⽤所在⽬录

 pss 项⽬存放在:D://openSource/

找到 tomcat/conf/server.xml ⽂件,在 host 元素写下⾯的代码

启动服务器并通过浏览器访问:

⽅式3:配置独⽴ xml ⽂件

1.   tomcat/conf ⽬录下新建⼀个 Catalina⽬录(如果已经存在⽆需创建)

2.  Catalina ⽬录下创建 localhost ⽬录

3.   localhost 中创建 xml 配置⽂件,名称可以任意:qq(注:这个名称是浏览器访问路径)

4.   xml ⽂件添加内容为

<Context  docBase="D://openSource/pss" />

5.   重启服务器并浏览器访问

命令修改⽂件名称为空

2.8 IDEA 中部署项⽬

2.8.1 IDEA 绑定 Tomcat

我们要将 idea  tomcat 集成到⼀起,可以通过 idea 就控制 tomcat 的启动和关闭

1.   编辑运⾏配置

2.  添加 Tomcat 的配置信息

如果看不到 Tomcat Server,点下⾯的 xx  more items

3.   配置服务器详细信息

 1 次配置需要点击 Configure...按钮关联本地Tomcat安装路径

2.8.2  IDEA 部署 WEB 项⽬

1.  创建 JavaWeb 项⽬

2.  创建好的 WEB 项⽬结构

3.  web⽬录下创建⼀个 index.html⽂件

4.  部署项⽬到 Tomcat 服务器 (编辑配置

1.  点击 Deployemet  (在导⼊项⽬时,是没有导⼊项⽬到tomcat 服务器,需要在此处去加⼊项⽬)

2.  点击 Server 可以看到所有详细信息

2.8.2  IDEA 中启动服务器

1.  点右上⻆的启动图标,启动Tomcat服务器

2.   控制台显示服务器启动的状态信息

3.   浏览器测试访问

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

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

相关文章

Python 获取tiktok视频评论回复数据 api接口

TIKTOK api接口 用于爬取tiktok视频评论回复数据 详细采集页面如图 https://www.tiktok.com/dailymail/video/7329872821990182190?qneural%20link&t1706783508149 请求API http://api.xxxx.com/tt/video/info/comment/reply?video_id7288909913185701125&comment_…

uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名

项目场景&#xff1a; uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据getIndex点击事件获取点击的地区下标和地区名 例如&#xff1a; 问题描述 官方给的文档有限&#xff0c;需要自己下载地图json数据然后自己渲染和编写鼠标悬浮显示内容以及获取点击地址…

Numpy矩阵运算

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Numpy概述 Numpy是Python的一个开源数值计算扩展库&#xff0c;主要用于存储和处理大型多维数组和矩阵&#xff0c;并且提供了大量的数学函数来操作这些数组。Numpy是Pytho…

为适配kubelet:v0.4 安装指定版本的docker

系统版本信息 cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) iso 文件下载地址 https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso0.4 版本的kubelet 报错信息记录 E0603 19:00:38.273720 44142 kubelet.go:734] Error synci…

昇思25天学习打卡营第1天|初识MindSpore

# 打卡 day1 目录 # 打卡 day1 初识MindSpore 昇思 MindSpore 是什么&#xff1f; 昇思 MindSpore 优势|特点 昇思 MindSpore 不足 官方生态学习地址 初识MindSpore 昇思 MindSpore 是什么&#xff1f; 昇思MindSpore 是全场景深度学习架构&#xff0c;为开发者提供了全…

昇思25天学习打卡营第5天|网络与模型相关要素探讨

目录 从 MindSpore 模块中导入nn和ops 定义模型类 模型层 nn.Flatten nn.Dense nn.ReLU nn.SequentialCell nn.Softmax 模型参数 从 MindSpore 模块中导入nn和ops 将 MindSpore 整个模块引入到当前的 Python 脚本里&#xff0c;方便后续运用 MindSpore 所提供的各类功能…

【ue5】虚幻5同时开多个项目

正常开ue5项目我是直接在桌面点击快捷方式进入 只会打开一个项目 如果再想打开一个项目需要进入epic 再点击启动就可以再开一个项目了

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 目录 预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 2.运行环境为Matlab2023b及以上&#xff1b; 3…

地级市数字经济指数、互联网用户数、数字金融普惠指数

2000-2022年地级市数字经济指数&#xff08;含控制变量&#xff09; 目录 数字经济如何改善环境污染 一、引言 二、文献综述 三、实证模型 四、数据来源 五、程序代码 六、运行结果 数字经济如何改善环境污染 摘要&#xff1a; 本论文旨在探讨数字经济对环境污染的改善作…

软考中级数据库系统工程师备考经验分享

前几天软考成绩出了&#xff0c;赶紧查询了一下发现自己顺利通过啦&#xff08;上午63&#xff0c;下午67&#xff0c;开心&#xff09;&#xff0c;因此本文记录一下我的备考经验分享给大家。因为工作中项目管理类的知识没有系统学习过&#xff0c;本来想直接报名软考高级证书…

Thisjavabean对象数组

This 1.概念 this是一个对象this是一个构造函数 2.介绍 解决局部变量和成员变量命名冲突 this在面向对象-封装那一篇里&#xff0c;有被两个地方提及。 但我们先简单给一个例子&#xff1a; public Person(String name, String phone, String qqPassword, String bankCar…

踩坑:Unity导出WebGL发布到手机上竖屏时强制显示横屏

具体的适配问题 公司的项目需要将游戏导出WebGL 发布到Web平台 本以为是个很简单的事情 谁知道却被个横竖屏适配搞的头晕 毕竟只有大学浅浅的学了下HTML这门语言 出来工作后基本上都是在跟C# Lua打交道 言归正传 看看具体问题吧 游戏如果从横屏进入 基本上不会有什么适配问题…

Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友数量以下面的方式增长。第1周少了1个朋友......

Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友数量以下面的 方式增长。第1周少了1个朋友&#xff0c;剩下的朋友数量翻倍&#xff1b;第2周少了2个朋友&#xff0c;剩下的朋友数量 翻倍。一般而言&#xff0c;第N周少了N个朋友&#xff0c;剩下的朋友数量翻倍…

HDF4文件转TIF格式

HDF4 HDF4&#xff08;Hierarchical Data Format version 4&#xff09;是一种用于存储和管理机器间数据的库和多功能文件格式。它是一种自描述的文件格式&#xff0c;用于存档和管理数据。 HDF4与HDF5是两种截然不同的技术&#xff0c;HDF5解决了HDF4的一些重要缺陷。因此&am…

Mean teacher are better role models-论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/pdf/1703.01780 3.数据集地址 CIFAR-10 https://www.cs.utoronto.ca/~kriz/cifar.html 论文摘要的翻译 最近提出的Temporal Ensembling方法在几个半监督学习基准中取得了最先进的结果。它维护每个训练样本的标签…

设计模式探索:策略模式

1. 什么是策略模式&#xff08;Strategy Pattern&#xff09; 定义 策略模式&#xff08;Strategy Pattern&#xff09;的原始定义是&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而…

Unity 使用AVProMovieCapture实现Game视图屏幕录制

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity 使用AVProMovieCapture实现Game视图屏幕录制 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心…

01背包问题-队列分支限界法-C++

0-1背包问题-队列分支限界法 问题描述&#xff1a; 给定n种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包中的物品&#xff0c;使得装入背包中物品的总价值最大&#xff1f;对于给定的n种物品的重量和价值&#xff0c;以及背包的容量&…

17-JS封装:工具类方法

目录 一、extend方法 二、添加一些工具类方法&#xff1a;$.xxx() 实现1&#xff1a; 实现2&#xff1a; 一、extend方法 jQuery.fn.extend jQuery.extend function(...args){let target,source[];source[...args];//判断2种情况 //$.extend({}) -->给$添加属性//$.…

算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 在算法模型构建中&#xff0c;我们经常需要计算样本之间的相似度&#xff0c;通常的做法是计算样本之间的距…