当前位置: 首页 > news >正文

【网络编程】计算机网络基础知识总结 | 运输层 |TCP协议

文章目录

  • 前言
  • 一、计算机网络层次结构
  • 二、网络层
  • 三、运输层
    • 3.1、TCP/IP协议介绍
    • 3.2、端口(协议端口号)
    • 3.3、套接字
    • 3.4、TCP实现原理
      • 3.4.1、TCP的特点
      • 3.4.2、停止等待协议
      • 3.4.3、滑动窗口协议
      • 3.4.4、拥塞控制
      • 3.4.5、TCP连接的三个阶段
    • 3.5、UDP实现原理


前言

本期内容重点复习一下以下三层:网络层,运输层,应用层
参考教材:计算机网络(博客中部分图片来自本书)
参考:chatgpt4

一、计算机网络层次结构

计算机网络的层次结构通常根据OSI(开放系统互联)模型或TCP/IP模型来进行划分。

OSI(开放系统互联)模型:该模型将计算机网络分为七层,自下而上依次是

物理层:负责传输比特流(即电压的高低、光的闪烁等)。

数据链路层:负责在网络设备之间传输数据帧(也就是数据包),并能够检测和纠正数据传输的错误。

网络层:负责处理数据包的发送和接收,包括包的路由选择。

传输层:负责处理端到端的数据传输。

会话层:负责在数据传输中设置和维护网络连接。

表示层:负责处理操作系统中数据的表示、安全和压缩问题。

应用层:负责处理特定应用程序的协议。

TCP/IP模型:该模型将计算机网络分为四层,自下而上依次是:

网络接口层:相当于OSI模型中的物理层和数据链路层,负责处理和网络媒体的硬件接口相关的所有事务。

网络层:相当于OSI模型中的网络层,负责处理IP地址和路由。

传输层:相当于OSI模型中的传输层,负责处理TCP和UDP协议。

应用层:相当于OSI模型中的会话层、表示层和应用层,负责处理所有特定的应用程序细节。

实际应用中,我们经常使用一个简化的五层网络模型,这个模型把OSI的七层模型进行了合并简化。五层模型自下而上依次是:

物理层:负责将比特流(即电压的高低、光的闪烁等)在物理媒介(如电缆、光纤)上进行传输。

数据链路层:负责在网络设备之间传输数据帧(也就是数据包),并能够检测和纠正数据传输的错误。

网络层:负责处理数据包的发送和接收,包括包的路由选择。

传输层:负责处理端到端的数据传输,例如TCP协议和UDP协议都工作在这一层。

应用层:这一层包含了OSI模型中的会话层、表示层和应用层,负责处理所有特定的应用程序细节。例如HTTP、FTP等协议都工作在这一层。

在这里插入图片描述

二、网络层

三、运输层

3.1、TCP/IP协议介绍

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是网络传输层的两种重要协议,它们都是用来发送数据包的,但是各自的特性和使用场景有很大的不同。

TCP(传输控制协议):

TCP是一种面向连接的协议,这意味着在数据传输前,发送方和接收方需要先建立连接,然后才能进行数据的发送和接收。这种方式可以确保数据的完整性和准确性。

TCP提供了数据包的顺序控制、流量控制、拥塞控制和错误检查等功能。这些控制机制确保了数据包能够正确、有序地到达目的地。

TCP的这些特性使它非常适合于对数据传输质量要求高的应用,例如网页浏览、文件传输、电子邮件等。

UDP(用户数据报协议):

UDP是一种无连接的协议,这意味着发送方发送数据时,不需要先建立连接。这种方式虽然不能保证数据包的到达和顺序,但是由于省去了建立连接的过程,使得数据传输的延迟更低。

UDP不提供数据包的顺序控制、流量控制、拥塞控制和错误检查等功能。这些特性使得UDP非常适合于实时性要求高,但对数据丢失可以容忍的应用,例如语音和视频通话、实时游戏等。

UDP的另一个特性是它支持广播和多播,这使得UDP非常适合于多点通信。

总的来说,TCP和UDP各有优劣,具体使用哪种协议取决于应用的具体需求。
在这里插入图片描述

3.2、端口(协议端口号)

在网络通信中,端口是一种抽象的软件结构,用来区分不同的进程或服务。端口是与IP地址配合使用的,一起构成了网络通信中的"地址和端口"的概念。在TCP/IP协议中,端口被标识为一个16位的数字,范围从0到65535。
通常,端口可以分为三个范围:

已知端口(Well Known Ports):这些是最常用的端口,范围是0-1023。许多常见的协议都在这个范围内,例如HTTP的端口80,HTTPS的端口443,FTP的端口21,SMTP的端口25等。

注册端口(Registered Ports):这些端口的范围是1024-49151。它们不是预留给特定服务的,但通常用于某些已知的应用。例如,MySQL默认的端口就是3306。

动态或私有端口(Dynamic or Private Ports):这些端口的范围是49152-65535。它们通常被用于动态端口分配,当一个客户端应用程序需要与服务器建立连接时,操作系统通常会从这个范围内选择一个可用的端口号。

当我们说一个服务器在监听某个端口,实际上就是说服务器上的某个服务正在等待从那个端口号上到来的连接请求。同样,当一个客户端程序连接到服务器的某个端口时,实际上是在请求使用服务器上绑定到那个端口的服务。
使用不同的端口号,我们可以在同一台计算机上运行多个网络服务,每个服务可以独立地接收和处理连接请求。这就是端口的主要作用。

另外,你也需要确保你的程序在运行时具有足够的权限来监听你选择的端口。在许多操作系统中,监听1024以下的端口需要管理员或root权限,但1024以上的端口通常可以由任何用户监听。

3.3、套接字

套接字(Socket)是计算机网络中用于描述IP地址和端口,以便能够进行网络通信的一种抽象概念。它是网络应用程序进行数据发送和接收的接口。简单来说,套接字就像是一个电话插孔,你可以通过它来接通电话线(网络连接),并进行通话(数据传输)。
套接字最初由伯克利(Berkeley)UNIX操作系统开发并引入,现在已经被所有主流的操作系统所采用。在编程中,我们通常通过套接字API(应用程序接口)来进行网络编程。套接字API提供了一组函数,使得程序员能够在他们的程序中创建套接字、连接到远程套接字、发送和接收数据等。
套接字可以支持不同的通信协议,最常见的有TCP(传输控制协议)和UDP(用户数据报协议)。TCP套接字提供了一种面向连接的、可靠的数据传输服务,而UDP套接字则提供了一种无连接的、不可靠的数据传输服务。
一个套接字被定义为一个IP地址和一个端口号的组合 例如,如果你的计算机的IP地址是192.168.1.100,你的Web服务器程序正在监听端口80,那么你可以说你的Web服务器的套接字是192.168.1.100:80。当一个客户端程序想要连接到你的服务器时,它需要知道这个套接字,以便能够正确地向你的服务器发送请求。

3.4、TCP实现原理

3.4.1、TCP的特点

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。以下是TCP的一些主要特点和工作原理:

面向连接 在数据传输开始之前,TCP需要在发送端和接收端之间建立一个连接。这个过程通常被称为"三次握手"。一旦连接建立,所有的数据传输都在这个连接上进行,直到连接被关闭。

可靠传输 TCP通过使用确认(ACK)机制、序列号、重传机制和错误检查来确保数据的可靠传输。如果发送端没有收到数据包的确认,那么它会重新发送数据包。

流量控制 TCP使用窗口机制来进行流量控制,防止接收端被发送端发送的数据淹没。窗口的大小表明了接收端当前能接受的数据量。

拥塞控制 当网络出现拥塞时,TCP会减少数据的发送速率,避免无效的重传和网络资源的浪费。当网络恢复正常时,TCP会逐渐增加数据的发送速率。

全双工通信 TCP连接的两端都能发送和接收数据。这意味着在一个TCP连接中,数据可以在两个方向上同时传输。

字节流 TCP不关心应用层的消息边界,把应用层传下来的数据看作仅仅是一个连续的字节流。

这些特点使得TCP非常适合那些需要高可靠性的应用,例如Web浏览、电子邮件、文件传输等。然而,这些特性也使得TCP比一些其他的传输协议(如UDP)更复杂,有时候也更慢。


3.4.2、停止等待协议

停止等待协议是一种基本的流量控制协议,它也是TCP中可靠数据传输的基础。在停止等待协议中,发送端每次只发送一个数据包,然后停止发送并等待接收端的确认。在收到确认后,发送端再发送下一个数据包。
以下是停止等待协议的基本步骤:

发送端发送一个数据包到接收端。

发送端启动一个定时器,等待接收端的确认。这个定时器的时间通常比数据包在网络中传输的平均时间要长一些,以便给接收端处理数据包和发送确认的时间。

如果在定时器超时之前,发送端收到了接收端的确认,那么它会发送下一个数据包。

如果定时器超时,但发送端还没有收到确认,那么发送端会认为数据包已经丢失,然后重新发送这个数据包。

停止等待协议的优点是它简单易懂,实现也相对简单。它能够确保数据包不会因为网络的问题而丢失,并且能够防止发送端发送数据的速度过快,导致接收端无法处理。
然而,停止等待协议的效率不高,特别是在网络延迟大的情况下。发送端每次只发送一个数据包,然后就停下来等待确认,这意味着网络的利用率很低,尤其是当网络的带宽很大,而数据包的大小相对较小的时候。为了解决这个问题,人们开发了一些更高效的流量控制协议,例如滑动窗口协议。

3.4.3、滑动窗口协议

滑动窗口协议是一种流量控制协议,它可以提高网络的利用率,并且还能保证数据的可靠传输。这种协议在TCP(传输控制协议)中被广泛使用。
滑动窗口协议的基本思想是,发送端和接收端各自维护一个窗口。发送窗口包含了可以发送的数据段,接收窗口包含了可以接收的数据段。窗口的大小可以动态调整,以适应网络的条件。
以下是滑动窗口协议的基本步骤:

在开始时,发送端的窗口包含了一些数据段,这些数据段可以立即发送。发送端发送窗口中的数据段后,将这些数据段标记为已发送但未确认。

当接收端收到一个数据段,它会发送一个确认回去。确认中包含了接收端期望接收的下一个数据段的序列号,以及接收窗口的剩余大小。

当发送端收到一个确认,它会更新它的窗口。已被确认的数据段会从窗口中移除,窗口会向前滑动,以包含新的可以发送的数据段。窗口的大小可能会根据接收端的反馈(即接收窗口的剩余大小)进行调整。

如果一个数据段的确认在一定时间内没有收到,那么发送端会重新发送这个数据段。这是通过超时重传机制来实现的。

滑动窗口协议不仅可以保证数据的可靠传输(通过确认和重传机制),而且还可以有效地控制数据的发送速度(通过窗口大小的调整),以防止发送端发送数据过快,导致接收端无法处理。这使得滑动窗口协议在各种网络条件下都能提供高效的数据传输。


流量控制是计算机网络中的一个关键概念,它指的是一种技术或一组机制,用于防止发送端发送数据的速度超过接收端处理数据的能力。
如果没有流量控制,发送端可能会以接收端无法处理的速度发送数据,这将导致接收端的缓冲区溢出,进而丢失数据。因此,流量控制是网络通信中保证数据可靠传输的重要手段之一。
流量控制可以在不同的网络层次实现,例如在数据链路层(如X.25协议)或者传输层(如TCP协议)。
在TCP中,流量控制是通过滑动窗口协议来实现的。每个TCP连接都有一个关联的接收窗口,该窗口的大小表示接收端当前还能接收多少数据。当接收端处理完一部分数据并释放了缓冲区空间后,它会通过确认信息告诉发送端,从而增大发送端的发送窗口。通过动态调整窗口大小,TCP可以根据接收端的处理能力和网络的拥塞程度来控制数据的发送速度。
总的来说,流量控制是一个非常重要的网络功能,它可以保护网络资源,防止网络拥塞,以及保证数据的可靠传输。

3.4.4、拥塞控制

拥塞控制是TCP(传输控制协议)的一种机制,用于防止网络拥塞。当网络中的数据包数量过多,超过网络的承载能力时,就会出现网络拥塞。网络拥塞可能导致数据包的延迟增加,甚至丢失。因此,拥塞控制的目标是避免过多的数据进入网络,以保持网络的质量。
TCP的拥塞控制主要有四种算法:慢启动、拥塞避免、快重传和快恢复。这些算法共同工作,以动态地调整每个TCP连接的拥塞窗口大小。拥塞窗口决定了发送端可以在没有收到确认的情况下发送多少数据。
以下是这四种算法的基本工作原理:

慢启动:当一个TCP连接开始时,拥塞窗口的大小被设置为一个很小的值。然后,每当发送端接收到一个确认,它就会将拥塞窗口大小加倍。这样,拥塞窗口的大小就会以指数方式增长,直到达到一个阈值,或者发生了数据包丢失。

拥塞避免:当拥塞窗口达到阈值后,发送端就会进入拥塞避免阶段。在这个阶段,每当接收到一个确认,拥塞窗口的大小就会线性地增加。这样,拥塞窗口的增长速度就会减慢,以避免过快地增加网络的负载。

快重传:当发送端连续收到三个重复的确认(这通常表示有一个数据包丢失)时,它不会等待超时重传定时器,而是立即重新发送丢失的数据包。这样,就可以更快地恢复丢失的数据包。

快恢复:当发送端重新发送了丢失的数据包后,它会将阈值减半,然后立即进入拥塞避免阶段,而不是慢启动阶段。这样,就可以更快地恢复传输速度。

这四种算法共同工作,以适应网络的条件,保持高效的数据传输,同时避免网络拥塞。

3.4.5、TCP连接的三个阶段

一个TCP(传输控制协议)连接的生命周期主要包括以下几个阶段:

连接建立(Connection Establishment):这个阶段通常被称为“三次握手”(Three-Way Handshake)。首先,客户端发送一个带有SYN(Synchronize)标志的数据包给服务器,请求建立连接。然后,服务器回应一个带有SYN和ACK(Acknowledgement)标志的数据包,确认收到请求并同意建立连接。最后,客户端再发送一个带有ACK标志的数据包,确认收到服务器的回应。此时,TCP连接就被成功建立,可以开始传输数据。

数据传输(Data Transfer):在这个阶段,客户端和服务器可以互相发送数据。TCP保证了数据的可靠传输,通过序列号和确认机制保证数据按照正确的顺序到达,并通过流量控制和拥塞控制机制来适应网络的条件。

连接终止(Connection Termination):这个阶段通常被称为“四次挥手”(Four-Way Handshake)。首先,一方(通常是客户端)发送一个带有FIN(Finish)标志的数据包,请求关闭连接。然后,另一方(通常是服务器)回应一个带有ACK标志的数据包,确认收到请求。然后,另一方也发送一个带有FIN标志的数据包,请求关闭连接。最后,第一方再回应一个带有ACK标志的数据包,确认收到请求。此时,TCP连接就被成功关闭。

在这些阶段中,TCP通过复杂的算法和机制,保证了数据的可靠传输,使得应用程序可以像使用可靠的字节流一样使用网络。

3.5、UDP实现原理

UDP(用户数据报协议,User Datagram Protocol)是一个简单的无连接的传输层协议。与TCP相比,UDP更简单,开销更小,但是它不提供数据的可靠传输,也不提供流量控制或拥塞控制。因此,UDP通常用于那些对实时性要求高,但对数据丢失容忍度较高的应用,例如VoIP(语音通话)和在线游戏。
以下是UDP的基本实现原理:

封装数据:UDP将应用程序发送的数据封装在UDP数据报中。每个UDP数据报包括一个头部和一个数据部分。头部包含了源端口号、目标端口号、长度和校验和,这些信息用于数据的传输和接收。数据部分就是应用程序发送的数据。

发送数据:UDP数据报被封装在IP数据包中,然后通过IP网络发送给接收端。由于UDP是无连接的,所以发送数据时不需要建立和终止连接。UDP只是简单地将数据报发送出去,而不关心数据报是否能成功到达。

接收数据:当UDP数据报到达接收端时,接收端会根据头部的端口号将数据报传递给相应的应用程序。如果数据报的校验和错误,或者应用程序的接收缓冲区满了,那么数据报可能会被丢弃。

处理数据:应用程序接收到数据报后,可以立即处理数据。由于UDP不提供数据的顺序保证,所以应用程序需要自己处理数据的顺序问题。

总的来说,UDP提供了一种简单快速的数据传输方式,但是它不提供数据的可靠传输,也不提供流量控制或拥塞控制。因此,使用UDP的应用程序需要自己处理这些问题。

相关文章:

【网络编程】计算机网络基础知识总结 | 运输层 |TCP协议

文章目录 前言一、计算机网络层次结构二、网络层三、运输层3.1、TCP/IP协议介绍3.2、端口(协议端口号)3.3、套接字3.4、TCP实现原理3.4.1、TCP的特点3.4.2、停止等待协议3.4.3、滑动窗口协议3.4.4、拥塞控制3.4.5、TCP连接的三个阶段 3.5、UDP实现原理 前…...

python关键知识点

1. 变量:在程序中存储值或对象的名称。 2. 数据类型:指变量的数据类型,例如 str、int、float、list、tuple、dict、set 等。 3. 操作符:表示运算符号,例如加号 和减号 -。 4. 循环:通过重复执行某个代码…...

c# 从零到精通 数组的操作-将两个一维数组合并成一个二维数组

c# 从零到精通 数组的操作-将两个一维数组合并成一个二维数组 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test07 { class Program { static void Main(string[] args) { //定义两个一维数组 int[] arr1 new int[] {…...

Linux目录结构(与window目录结构对比+绝对路径和相对路径)

一、Linux目录结构 Linux目录结构是一个标准化的文件系统层次结构,非常有组织性并且易于管理。而与Windows 操作系统不同,Linux将所有文件和设备都组织在一个单一的根目录下。以下是Linux的标准目录结构: /:根目录,包含…...

投票活动小程序开发搭建

由于小程序是基于微信开发者工具编写的,因此我先介绍一下需要使用的工具和技术: - 微信开发者工具:用于开发、调试和发布小程序。 - 小程序云开发:用于存储数据和进行后端逻辑处理。 - uni-app框架:uni-app 是一个使…...

代码随想录day18

513.找树左下角的值 本题用前中后序都可以(都是先遍历左再遍历右,保证最后一定是左侧的节点),因为没有中节点的处理逻辑,用全局变量记录最大深度,只要遇到叶子结点并且当前深度比最大深度大,就更…...

QT+OpenGL高级光照 Blinn-Phong和Gamma校正

QTOpenGL高级光照1 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 Blinn-Phong 冯氏光照:视线与反射方向之间的夹角不小于90度,镜面光分量会变成0.0(不是很合理&am…...

【Ubuntu系统内核更新与卸载】

【Ubuntu系统内核更新与卸载】 1. 前言2. 内核安装2.1 系统更新2.2 官网下载 3. 内核卸载3.1 需求分析3.2 卸载方法 1. 前言 我们在搭建环境时常常遇到内核版本不匹配的问题,需要我们安装新的内核版本;有时又会遇到在安装软件时报错boot空间已满无法安装…...

RL - 强化学习 马尔可夫奖励过程 (MRP) 的状态价值

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131084795 GitHub 源码: https://github.com/SpikeKing/Reinforcement-Learning-Algorithm 马尔可夫奖励过程 (MRP) 的状态价值是指在某…...

Mybatis之批处理流式查询

文章目录 1 批处理查询1.1 引言1.2 流式查询1.2.1 定义1.2.2 流式查询接口1.2.3 使用流式查询关闭问题1.2.3.1 SqlSessionFactory1.2.3.2 TransactionTemplate1.2.3.3 Transactional 注解 1.2.4 完整示例1.2.4.1 mapper接口和SQL1.2.4.2 Service操作 1.3 游标查询1.3.1 定义1.3…...

Spring架构篇--2.7.3 远程通信基础--Netty原理--bind实现端口的绑定

前言:在对ServerBootstrap 进行属性赋值之后,通过bind 方法完成端口的绑定,并开始在NioEventLoop中进行轮询进行事件的处理;本文主要探究ServersocketChannel 在netty 中是如何完成注册,以及端口的绑定 1 Nio selecto…...

【改进的多同步挤压变换】基于改进多同步挤压的高分辨率时频分析工具,用于分析非平稳信号(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

有关 python 切片的趣事

哈喽大家好,我是咸鱼 今天来讲一个我在实现 python 列表切片时遇到的趣事 在正式开始之前,我们先来了解一下切片(slice) 切片操作是访问序列(列表、字符串…)中元素的另一种方法,它可以访问一…...

ChatGPT 会带来失业潮吗?

(永久免费,扫码加入) 最近在翻知乎上的一些文章,很多都是跟ChatGPT有关的。因为本身是搞Python编程的,知乎推荐系统给我推荐了一篇廖雪峰老师的文章,觉得很有意思。 一共1119个赞,还是很厉害的&…...

如何对待工作中的失误

在日复一日的工作中,我们免不了会产生一些失误,会因此感到沮丧和失望。但如何正确地对待和处理这些失误才是最重要的,它直接影响到我们的工作表现和个人成长。一起来谈谈作为职场人的你时如何处理工作中的失误的吧! 一、在面对失…...

微信小程序快速入门【一】

微信小程序快速入门【一】 文章目录 微信小程序快速入门【一】👨‍🏫内容1:背景👨‍⚖️内容2:准备工作👨‍💻内容3:新建一个小程序🍉文末推荐 👨‍&#x1f…...

TiDB亿级数据亚秒响应查询集群部署

目录 1 集群部署1.1 环境要求1.1.1 操作系统建议配置1.1.2 服务器建议配置 1.2 环境准备1.3 安装TiUP1.3.1 什么是TiUP1.3.2 安装TiUP组件1.3.3 配置TiUP环境1.3.4 检查TiUP 工具是否安装1.3.5 安装 cluster 组件1.3.6 升级cluster组件 1.4 编辑部署文件1.4.1 常见的部署场景1.…...

并发——同步访问共享的可变数据

关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一段代码块。许多程序员把同步的概念仅仅理解为一种互斥的方式。即,当一个对象被一个线程修改的时候,可以阻止另一个线程观察到内部不一致的状态。…...

Docker网络模型(九)禁用容器网络

禁用容器网络 如果你想完全禁用容器上的协议栈,你可以在启动容器时使用 --network none 标志。在容器内,只有回环设备被创建。下面的例子说明了这一点。 创建容器 $ docker run --rm -dit \--network none \--name no-net-alpine \alpine:latest \ash通…...

JavaScript 教程---互联网文档计划

学习目标: 每天记录一章笔记 学习内容: JavaScript 教程---互联网文档计划 笔记时间: 2023-6-5 --- 2023-6-11 学习产出: 1.入门篇 1、JavaScript 的核心语法包含部分 基本语法标准库宿主API 基本语法:比如操作符…...

做好功能测试需要的8项基本技能【点工进来】

功能测试是测试工程师的基础功,很多人功能测试还做不好,就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点,如何自己不用心去悟,去研究,那么你的职业生涯也就停留在点点点上了。在这里,我把…...

在弹出框内三个元素做水平显示

最终效果图要求是这样: js代码: // 显示弹出窗口 function showPopup(node) {var popup document.createElement(div);popup.className popup;var inputContainer1 document.createElement(div);/* inputContainer1.className input-container1; */…...

纠删码技术在vivo存储系统的演进【上篇】

作者:vivo 互联网服务器团队- Gong Bing 本文将学术界和工业界的纠删码技术的核心研究成果进行了相应的梳理,然后针对公司线上存储系统的纠删码进行分析,结合互联网企业通用的IDC资源、服务器资源、网络资源、业务特性进行分析对原有纠删码技…...

如何实现APP自动化测试?

APP测试,尤其是APP的自动化测试,在软件测试工程师的面试中越来越会被问到了。为了更好的回答这个问题,我今天就给大家分享一下,如何进行APP的自动化测试。 一、为了实现JavaAppiumJunit技术用于APP自动化测试,所以需要…...

​​INNODB和MyISAM区别

1 存储引擎是MyISAM 如下: CREATE table test_myisam (cli int ) ENGINEMyISAM 存储目录里会有三个文件 test_myisam.frm为“表定义”,是描述数据表结构的文件 test_myisam.MYI文件是表的索引 test_myisam.MYD文件是表的数据 2 存储引擎是INNODB…...

普中自动下载软件1.86下载程序失败案例

今天在用开发板做一个功能,下载的时候报错了,说芯片超时 确定驱动安装好了的 波特率也试了一圈 线也换过了 最后发现是芯片类型选错了,这个开发板是用的stc89c52,所以我选了图里这个,但是翻了开发板配套的资料,发现…...

JavaScript HTML DOM

JavaScript HTML DOM(文档对象模型)是一种用于访问和操作HTML文档元素的编程接口。它将HTML文档表示为一个树形结构,使开发人员可以使用JavaScript来操作和修改HTML元素、属性、样式和事件。 通过使用HTML DOM,你可以使用JavaScr…...

solr快速上手:配置IK中文分词器(七)

0. 引言 solr作为搜索引擎,常用在我们对于搜索速度有较高要求且大数据量的业务场景,我们之前已经配置过英文分词器,但是针对中文分词不够灵活和实用,要实现真正意义上的中文分词,还需要单独安装中文分词器 solr快速上…...

【软件测试】接口测试工具APIpost

说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告…...

第六章 假言:那么、就、则;才。

第六章 假言:那么、就、则;才。 第一节 假言-公式化转换-等价矛盾 真题(2012-38)-假言-A→B的公式化转换-A→B的等价命题:①逆否命题:非B→非A。 38.经理说:“有了自信不一定赢。”董事长回…...

大连三合一网站制作/提升神马关键词排名报价

简介: 阿里云边缘容器服务上线 1 年后,正式开源了云原生边缘计算解决方案 OpenYurt,跟其他开源的容器化边缘计算方案不同的地方在于:OpenYurt 秉持 Extending your native Kubernetes to edge 的理念,对 Kubernetes 系…...

网站内容建设平面设计/互联网营销的方法有哪些

python由于GIL(全局锁)的存在,不能发挥多核的优势,在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥补了python性能方面的短板。python3.4版本引入asyncio到标准库,python2x没有加这个库&#xff…...

网站建设的问题/站长工具的使用seo综合查询运营

目录 概述 1应用问题 1数据来源 2实现算法 3 4.1 软件界面 3 4.2 优化算法 4 4.3 实现细节 8实验结果与分析 9 5.1 目标函数值可视化 9 5.2 结果 9 5.2.1 暴力算法 10 5.2.2 梯度下降法 11 5.2.3 模拟退火算法 11 5.3 参数调整 12 5.4 分析与结论 12 1.概述 本次实验中&#…...

哪做网站/百度推广登录平台官网

程序分目录管理 szz_aip:工程目录bin:可执行文件 start.pyconfig:配置文件 setting.pylib:工具类、初始化服务类、接口类 interface.py 接口 tools.py 工具logs:日志readme.txt:说明 setting.p…...

免费wordpress博客/福州短视频seo机会

禁止粘贴 οnpaste"return false" 禁止鼠标右键 oncontextmenu "return false"只能输入中文、英文、数字、符号和.符号 οnkeyup"valuevalue.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\\.]/g,)"只能输入数字: οnkeyup&quo…...

特种作业操作证查询网站/seo网络推广知识

基于MATLAB--SIMULINK的光伏太阳能电源仿真 电子质量 (2o15第08期)本文就是在第二种方法的基础上 ,进行了改进,利 I(A)用DC—DC斩波器,对实验进行闭环调节 ,最终得 出较为准确的实验结果。 4实验原理如下:先暂时把直流…...