应用层 II(文件传输协议FTP)【★★】

news2024/11/17 16:48:06

(★★)代表非常重要的知识点,(★)代表重要的知识点。

一、文件传输协议(FTP)

文件传送协议 FTP(File Transfer Protocol)是互联网上使用得最广泛的文件传送协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用 ASCII 码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

在互联网发展的早期阶段,用 FTP 传送文件约占整个互联网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还小于 FTP 所产生的通信量。只是到了 1995 年,WWW 的通信量才首次超过了 FTP 。

下面将分别介绍基于 TCP 的 FTP 和基于 UDP 的简单文件传送协议 TFTP ,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。

【拓展】:
文件共享协议中的另一大类是联机访问(on-line access)。联机访问意味着允许多个程序同时对一个文件进行存取。和数据库系统的不同之处是用户不需要调用一个特殊的客户进程,而是由操作系统提供对远地共享文件进行访问的服务,就如同对本地文件的访问一样。这就使用户可以用远地文件作为输入和输出来运行任何应用程序,而操作系统中的文件系统则提供对共享文件的透明存取。

透明存取的优点是:将原来用于处理本地文件的应用程序用来处理远地文件时,不需要对该应用程序作明显的改动。属于文件共享协议的有网络文件系统 NFS(Network File System)。网络文件系统 NFS 最初是在 UNIX 操作系统环境下实现文件和目录共享的。NFS 可使本地计算机共享远地的资源,就像这些资源在本地一样。需要注意的是 NFS 还没有成为互联网的正式标准。

1. FTP 的工作原理

网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。初看起来,在两台主机之间传送文件是很简单的事情。其实这往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。经常遇到的问题是:

  • 计算机存储数据的格式不同。
  • 文件的目录结构和文件命名的规定不同。
  • 对于相同的文件存取功能,操作系统使用的命令不同。
  • 访问控制方法不同。

文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。即 FTP 提供以下功能:

  • 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
  • 以用户权限管理的方式提供用户对远程 FTP 服务器上的文件管理能力。
  • 以匿名 FTP 的方式提供公用文件共享的能力。

FTP 采用客户 / 服务器的工作方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下:

  • 打开熟知端口(控制端口,端口号为 21),使客户进程能够连接上。
  • 等待客户进程发出连接请求。
  • 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
  • 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。

FTP 服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

2. 控制连接与数据连接(★)

FTP 在工作时使用两个并行的 TCP 连接(见下图):一个是控制连接(服务器端口号 21),一个是数据连接(服务器端口号 20)。使用两个不同的端口号可以使协议更容易实现。

FTP 的工作情况如下图所示,图中的椭圆圈表示在系统中运行的进程。图中的服务器端有两个从属进程:控制进程和数据传送进程,为简单起见,服务器端的主进程没有画上。客户端除了控制进程和数据传送进程外,还有一个用户界面进程。

在进行文件传输时, FTP 的客户和服务器之间要建立两个并行的TCP 连接:“控制连接”和“数据连接"。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接"。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 21 ,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口 20 与客户进程所提供的端口号建立数据传送连接。由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

使用两个独立的连接的主要好处是:使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。例如,客户发送“请求终止传输”。

在服务器端:控制连接使用 TCP 的 21 号端口,数据连接使用 TCP 的 20 号端口;
而在客户端:控制连接和数据连接的 TCP 端口号都是由客户端系统自动分配的。

1)控制连接

服务器监听 21 号端口,等待客户连接,建立在这个端口上的连接称为控制连接,用来传输控制信息(如连接请求、传送请求等)。FTP 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。

2)数据连接

数据连接有两种传输模式:主动模式 PORT 和被动模式 PASV 。

  • I、PORT 模式的工作原理:客户端连接到服务器的 21 端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到 PORT 命令和端口号后,通过 20 端口和客户端开放的端口连接,发送数据。

  • II、PASV 模式的不同点是:客户端要读取数据时,发送 PASV 命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。

可见,是用 PORT 模式还是 PASV 模式,选择权在客户端。简单概括为:主动模式传送数据是:“服务器”连接到“客户端”的端口;被动模式传送数据是:“客户端”连接到“服务器”的端口。

注意:如无特别说明可默认为采用主动模式。

因为 FTP 使用了一个分离的控制连接,所以也称 FTP 的控制信息是带外(Out-of-band)传送的。FTP 并非对所有的数据传输都是最佳的,使用 FTP 时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后将修改后的文件副本传送到原服务器,来回传送耗费很多时间。

例如,计算机 A 上运行的应用程序要在远地计算机 B 的一个很大的文件末尾添加一行信息。若使用 FTP ,则应先将此文件从计算机 B 传送到计算机 A ,添加上这一行信息后,再用 FTP 将此文件传送到计算机 B ,来回传送这样大的文件很花时间。实际上这种传送是不必要的,因为计算机 A 并没有使用该文件的内容。

然而网络文件系统 NFS 则采用另一种思路。NFS 允许应用进程打开一个远地文件,井能在该文件的某一个特定的位置上开始读写数据。这样, NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机 A 中的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 中的 NFS 服务器,NFS 服务器更新文件后返回应答信息。在网络上传送的只是少量的修改数据。

3. 简单文件传送协议 TFTP(拓展)

TCP/IP 协议族中还有一个简单文件传送协议 TFTP(Trivial File Transfer Protocol),它是一个很小且易于·实现的文件传送协议。虽然 TFTP 也使用客户服务器方式,但它使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。TFTP 只支持文件传输而不支持交互。TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

TFTP 的主要优点有两个。

  • 第一, TFTP 可用于 UDP 环境。例如,当需要将程序或文件同时向许多机器下载时就往往需要使用 TFTP 。

  • 第二, TFTP 代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了 TFTP 、UDP 和 IP 的小容量只读存储器即可。当接通电源后,设备执行只读存储器中的代码,在网络上广播一个 TFTP 请求。网络上的 TFTP 服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

TFTP 的主要特点是:

  • 每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节。
  • 数据报文按序编号,从 1 开始。
  • 支持 ASCII 码或二进制传送。
  • 可对文件进行读或写。
  • 使用很简单的首部。

TFTP 的工作很像停止 - 等待协议。发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。发完数据后在规定时间内收不到确认就要重发数据 PDU 。发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU 。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

在一开始工作时。TFTP 客户进程发送一个读请求报文或写请求报文给 TFTP 服务器进程,其熟知端口号码为 69 。TFTP 服务器进程要选择一个新的端口和 TFTP 客户进程进行通信。若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。若文件长度不是 512 字节的整数倍,则最后传送数据报文中的数据字段一定不满 512 字节,这正好可作为文件结束的标志。

4. 例题

① 文件传输协议(FTP)的一个主要特征是( C )。
A. 允许客户指明文件的类型但不允许指明文件的格式
B. 不允许客户指明文件的类型但允许指明文件的格式
C. 允许客户指明文件的类型与格式
D. 不允许客户指明文件的类型与格式
【FTP 提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。】

② 控制信息是带外传送的协议是( C )。
A. HTTP
B. SMTP
C. FTP
D. POP

带外传送是指控制信息与数据信息通过不同的逻辑信道传送。例如,FTP 使用一个单独的控制连接来传输控制信息,而数据连接用于传送文件。
带内传送是指控制信息与数据信息通过同一个逻辑信道传送。例如,HTTP 的请求和响应报文都是在同一个 TCP 连接上进行的。

③ 下列关于 FTP 连接的叙述中,正确的是( C )。
A. 控制连接先于数据连接被建立,并先于数据连接被释放
B. 数据连接先于控制连接被建立,并先于控制连接被释放
C. 控制连接先于数据连接被建立,并晚于数据连接被释放
D. 数据连接先于控制连接被建立,并晚于控制连接被释放

④ FTP 客户发起对 FTP 服务器连接的第一阶段是建立( D )。
A. 传输连接
B. 数据连接
C. 会话连接
D. 控制连接

⑤ 当一台计算机从 FTP 服务器下载文件时,在该 FTP 服务器上对数据进行封装的 5 个转换步骤是( B )。
A. 比特,数据帧,数据报,数据段,数据
B. 数据,数据段,数据报,数据帧,比特
C. 数据报,数据段,数据,比特,数据帧
D. 数据段,数据报,数据帧,比特,数据
【FTP 服务器的数据要经过应用层、传输层、网络层、数据链路层及物理层。因此,对应的封装是数据、数据段、数据报、数据帧,最后是比特。】

⑥ 匿名 FTP 访问通常使用( C )作为用户名。
A. guest
B. E-mail 地址
C. anonymous
D. 主机 id

针对文件传输 FTP ,系统管理员建立了一个特殊的用户 ID ,名为 anonymous ,即匿名用户。Intemet 上的任何人在任何地方都可以使用该用户 ID ,只是在要求提供用户 ID 时必须输入 anonymous ,该用户 ID 的密码可以是任何字符串。

⑦ FTP 支持两种方式的传输:ASCII 方式和 Binary(二进制)方式。通常文本文件的传输采用()方式,而图像、声音等非文本文件采用()方式传输。A
A. ASCIl , Binary
B. Binary , ASCII
C. ASCII , ASCII
D. Binary , Binary
【FTP 支持 ASCII 和 Binary 两种方式的传输,通常非加密文本文件采用 ASCII 方式传输,而图像、声音等非文本文件采用 Binary 方式传输。了解即可。】

⑧ 【2009 统考真题】FTP 客户和服务器间传递 FTP 命令时,使用的连接是( A )。
A. 建立在 TCP 之上的控制连接
B. 建立在 TCP 之上的数据连接
C. 建立在 UDP 之上的控制连接
D. 建立在 UDP 之上的数据连接

⑨ 【2017统考真题】下列关于 FTP 的叙述中,错误的是( C )。
A. 数据连接在每次数据传输完毕后就关闭
B. 控制连接在整个会话期间保持打开状态
C. 服务器与客户端的 TCP 20 端口建立数据连接
D. 客户端与服务器的 TCP 21 端口建立控制连接

【问题1】:文件传输协议的主要工作过程是怎样的?主进程和从属进程各起什么作用?
【答】:FTP 的主要工作过程如下:在进行文件传输时,FTP 客户所发出的传送请求通过控制连接发送给服务器端的控制进程,并在整个会话期间一直保持打开,但控制连接不用来传送文件。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后,就创建数据传送进程和数据连接,数据连接用来连接客户端和服务器端的数据传输进程,数据传送进程实际完成对文件的传送,在传送完毕后关闭“数据传送连接”,并结束运行。FTP 的服务器进程由两大部分组成:一个主进程,负责接收新的请求;若干从属进程,负责处理单个请求。

【问题2】:为什么 FT P要使用两个独立的连接,即控制连接和数据连接?
【答】:在 FTP 的实现中,客户与服务器之间采用了两条传输连接,其中控制连接用于传输各种 FTP 命令,而数据连接用于文件的传送。之所以这样设计,是因为使用两条独立的连接可使 FTP 变得更加简单、更容易实现、更有效率。同时在文件传输过程中,还可以利用控制连接控制传输过程,如客户可以请求终止、暂停传输等。

【问题3】:主机 A 想下载文件 fp:/fp.abc.edu.cn/fle ,大致描述下载过程中主机和服务器的交互过程。
【答】:大致过程为:

  • 建立一个 TCP 连接到服务器 fp.abc.edu.cn 的 21 号端口,然后发送登录账号和密码。
  • 服务器返回登录成功信息后,主机 A 打开一个随机端口,并将该端口号发送给服务器。
  • 主机 A 发送读取文件命令,内容为 get fle ,服务器使用 20 号端口建立一个 TCP 连接到主机 A 的随机打开的端口。
  • 服务器把文件内容通过第二个连接发送给主机 A ,传输完毕后连接关闭。

二、远程终端协议 TELNET(拓展)

TELNET 是一个简单的远程终端协议,它也是互联网的正式标准。用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一台主机上(使用主机名或 IP 地址)。TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。因此, TELNET 又称为终端仿真协议。

TELNET 并不复杂,以前应用得很多。现在由于计算机的功能越来越强,用户已较少使用 TELNET 了。

TELNET 也使用客户 - 服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

TELNET 能够适应许多计算机和操作系统的差异。例如,对于文本中一行的结束,有的系统使用 ASCII 码的回车(CR),有的系统使用换行(LF),还有的系统使用两个字符,回车-换行(CR-LF)。又如,在中断一个程序时,许多系统使用 Control-C(AC),但也有系统使用 ESC 按键。为了适应这种差异, TELNET 定义了数据和命令应怎样通过互联网。这些定义就是所谓的网络虚拟终端 NVT(Network Virtual Terminal)。下图说明了 NVT 的意义。客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。服务器软件把收到的数据和命令从 NVT 格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。

NVT 的格式定义很简单。所有的通信都使用 8 位一个字节。在运转时, NVT 使用 7 位 ASCII 码传送数据,而当高位置 1 时用作控制命令。ASCII 码共有 95 个可打印字符(如字母、数字、标点符号)和 33 个控制字符。所有可打印字符在 NVT 中的意义和在 ASCII 码中一样。但 NVT 只使用了 ASCII 码的控制字符中的几个。此外, NVT 还定义了两字符的 CR-LF 为标准的行结束控制符。当用户键入回车按键时, TELNET 的客户就把它转换为 CR-LF 再进行传输,而 TELNET 服务器要把 CR-LF 转换为远地机器的行结束字符。

TELNET 的选项协商(Option Negotiation)使 TELNET 客户和 TELNET 服务器可商定使用更多的终端功能,协商的双方是平等的。

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

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

相关文章

14年408-计算机网络

第一题: 解析:OSI体系结构 OSI由下至上依次是:物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题: 解析:数据链路层-交换机的自学习和帧转发 主机a1向交换…

零基础学Axios

Axios官网:Axios官网 想用Axios前需要在项目中安装axios,安装方式如下: 下列是axios请去方式,本文主要讲解post和get请求,其他请求和这两种请求方法相同。 1 get请求 1.1 不带请求参数 前端 后端 1.2 带请求参数 前端 写法…

动态切换数据库连接方案

文章目录 引言I 案例:手动切换数据库配置存储数据库配置信息书写切换脚本II 知识扩展使用sed命令替换文件内容激活环境配置文件引言 需求: 查询SQL Server数据库的时候可以根据实际情况分配服务器来提供服务,大大提高服务速度和优化性能,完成负载均衡。 方案:推荐从数据库…

菱形继承的类对父类的初始化、组合、多态、多态的原理等的介绍

文章目录 前言一、菱形继承的类对父类的初始化二、组合三、 多态1. 构成多态2. 虚函数3. 虚函数的重写4. 虚函数重写的两个例外1. 协变2. 析构函数的重写 5. C11 final 和 override1. final2. override 6. 设计不想被继承的类7. 重载、覆盖(重写)、 隐藏…

基于数据挖掘的航空客户满意度分析预测系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 航空公司致力于提供多样化的服务以满足乘客需求,包括但不限于提供免费无线网络、免费食物饮品、提供网上预约服务、飞机出口位置、座椅舒适度、卫生状况等,并希望以此提升乘…

Linux系统CentOS下挂载磁盘

1. 挂载磁盘步骤总结如下 1. 对磁盘进行分区 2. 对磁盘进行格式化 3. 将磁盘挂载到对应目录 4. 设置开机自动挂载磁盘 2. 对磁盘进行分区 2.1 查看系统设备信息 lsblk指令显示所有块设备信息:显示系统中所有的块设备信息,包括磁盘和分区 lsblk 2…

Mapbox封装图形绘制工具 线,圆,polygon,删除,点 mapbox-gl-draw-circle mapbox-gl-draw

使用插件,安装 npm install mapbox-gl-draw-circle //绘制圆 npm install mapbox/mapbox-gl-draw //绘制点线面删除相关API地址:https://github.com/mohong/mapbox-gl-draw-circle https://github.com/mapbox/mapbox-gl-draw/blob/main/docs/API.md…

Unity 热更新(HybridCLR+Addressable)-设置打包路径和加载路径、打开Hosting服务、打包

四、设置打包和加载路径 五、打开Hosting服务 六、打包 打包完成后路径在Assets同级目录下的ServerData 但是目前没有资源文件对比 修改上面设置后再次打包 里面多了哈希和JSON文件,这俩个就是用于资源对比

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译,最低net只能用6.0版本的,并且execute-assembly不支持 我想使用4.x版本进行编译,因为visual studio不支持,那么使用命令行进行编译 因为要用…

简单了解Redis(初识阶段)

1.认识Redis 对于Redis有一个很重要的点就是,它存储数据是在内存中存储的。 但是对于单机程序,直接通过变量存储数据的方式是更优的,在分布式系统下 Redis才能发挥威力 因为进程是有隔离性的,Redis可以基于网络,把进…

solidwork怎么隐藏实体再

在实际生产生活中,由于一些零件重叠或覆盖导致我们无法正确装配 我们就需要隐藏实体来看内部结构 假如不需要这个白色的大腿 先双击点他,然后右键 此时即可隐藏 同时右边零件会变白 想重新显示这样操作就可以了

Linux 常用命令(待更新)

1、pwd命令 2、cd命令 3、ls命令 4、locate命令 5、clear命令 6、cat命令 7、head命令 8、tail命令 9、grep命令 10、chmod命令 11、cp命令 12、mv命令 13、mkdir命令 14、rm命令 15、文件压缩和有关归档的命令 16、文件系统的命令 17、与系统管理相关的命令 …

2024 Snap 新款ar眼镜介绍

2024 snap 新款ar眼镜介绍 2024 Snap 新款ar眼镜介绍 助力快速掌握数据集的信息和使用方式。

【中台设计】数字中台,大数据中台解决方案,中台建设指南(资料Word分享)

1. 中台概念 2. 推动企业组织模式演进 3. 建设方法 4 .中台内容 5. 数据安全体系 中台内容围绕数据中台建设评估、整体框架、数据采集,结构化、半结构化、非结构化的数据采集,数据计算能力、存储计算引擎、数据架构、数据挖掘、各种不同数据层建设、模型…

煤矿井下钻场目标检测数据集 5类 voc格式

煤矿井下钻场目标检测数据集 本数据集包含了来自不同钻场和环境背景条件下的70948张图片,涵盖了夹持器、钻机卡盘、煤矿工人、矿井安全帽和钻杆等五类目标,并提供了PASCAL VOC格式的标注文件。 摘要 煤矿井下钻场打钻是解决瓦斯灾害、水害、隐蔽地质灾害…

点云与Open3D

点云数据介绍 点云与三维图像的关系:三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据,表现形式包括: 深度图(以灰度表达物体与相机的距离),几何模型(由CAD软…

Solidity语言:重点学习Solidity编程语言,这是EVM上最常用的智能合约语言。

Solidity是一种面向合约的编程语言,用于在以太坊虚拟机(EVM)上编写智能合约。它是Solidity开发者在以太坊平台上创建智能合约的主要选择之一。 学习Solidity的重点包括以下几方面: 语法和数据类型:学习Solidity的基本…

工业边缘计算网关和普通网关的区别-天拓四方

随着物联网(IoT)和工业4.0的快速发展,网关作为连接不同网络和设备的关键设备,其角色和功能日益凸显。在工业环境中,工业边缘计算网关和普通网关虽然都扮演着重要的角色,但它们在功能、应用场景和性能上存在…

算法:69.x的平方根

题目 链接:leetcode链接 思路分析(二分算法) 当然你可以使用暴力查找,但是二分算法的时间复杂度更好。 我们先用暴力查找找点灵感 x :1 2 3 4 5 6 7 8 x2:1 4 9 16 25 36 49 64 我们的目的是找到一个x…

【Java特性】多态详解——对象类型转换与 instanceof 关键字的运用

多态是指不同类的对象在调用同一个方法时所呈现出的多种不同行为。通常来说,在一个类中定义的属性和方法被其他类继承或重写后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同形态。多态不仅解决…