计算机网络复习记录(总结 —— 快速入门和快速复习)

news2025/1/15 16:52:33

一、计算机网络的定义和分类

定义:

  1. 简单定义:一些互连自治、的计算机集合在这里插入图片描述

  2. 较好定义:计算机网络主要是由一些通用的、可编程的硬件互连而成,而这些硬件并非专门用来实现某一特定目的。

分类

  1. 按交换技术分类
    在这里插入图片描述
  2. 按使用者分类
    在这里插入图片描述
  3. 按传输介质分类
    在这里插入图片描述
  4. 按覆盖范围分类
    在这里插入图片描述
  5. 按拓扑结构分类
    在这里插入图片描述

二、网络分层结构及其必要性

五层体系结构:在这里插入图片描述

TCP/IP 四层模型

上面与五层体系结构大致相同,只有最后一层的网际接口层对应五层的物理层和数据链路层

七层结构:

  1. 应用层:网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS.
  2. 表示层:数据的表示、安全、压缩。,确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
  3. 会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话.
  4. 传输层:定义传输数据的协议端口号,以及流控和差错校验,协议有TCP UDP.
  5. 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有ICMP IGMP IP等.
  6. 数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。
  7. 物理层:建立、维护、断开物理连接。

三、物理层(为解决使用何种信号来传输比特的问题)

物理层的传输媒体

  1. 导引型传输媒体:同轴电缆、双绞线、光纤、电力线
  2. 非导引型传输媒体:无线电波、微波、红外线、可见光

传输方式(物理层比特的传输方式)

  1. 串行传输:一个比特一个比特依次发送,发送端和接受端之间只需要一条数据传输线路即可
  2. 并行传输:n个比特n个比特依次发送,发送端和接受端之间需要n条数据传输线路
  3. 同步传输:以稳定的比特流的形式传输,字节之间没有间隔。(以多个字节为传输单位)
  4. 异步传输:以单个字节为独立的传输单位。字节之间有间隔(不固定)
  5. 单工通信:通信双方只能一个方向传输数据。
  6. 半双工通信:通信双方可以双向传输数据,但不能同时进行。
  7. 全双工通信:通信双方可以同时双向传输数据。

四、数据链路层(解决分组在一个网络上传输)

封装成帧

  1. 概念:封装成帧指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
  2. 帧格式(两种举例):
    在这里插入图片描述
    (1)帧头和帧尾作用之一是帧定界(使接受方的数据链路层能够从物理层交付的比特流中提取出帧),可以通过加转义符提高容错率。
    (2)
  3. 透明传输:指数据链路层对上层交付的传输数据没有限制,就好像数据链路层不存在一样。
    (1)面向字节的物理链路使用字符填充(转义字符)的方法实现透明传输
    (2)面向比特的物理链路使用比特填充(在连续的比特1后面加比特0,接受方再剔除)的方法实现透明传输

差错检测

  1. 引出:比特传输过程中,出现比特差错(1变0或0变1)
  2. 以太网V2的MAC帧中的FCS字段是为了使接收方的数据链路层检验比特在传输过程中是否产生了误码。PPP帧的FCS也是如此
  3. 差错检测方法一:奇偶校验、在这里插入图片描述
  4. 差错检测方法二:循环冗余校验CRC在这里插入图片描述

可靠传输

  1. 概念:想办法实现发送端发送什么,接收端收到什么
  2. 不可靠传输服务仅仅丢弃有误码的帧,其它什么也不做
  3. 可靠传输实现的三种机制
    (1)停止等待协议
    (2)回退N帧协议
    (3)选择重传协议

点对点协议PPP在这里插入图片描述

媒体接入控制

  1. 概念:共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)

MAC地址、IP地址、ARP协议

  1. MAC地址
    (1)概念:当多个主机连接在同一个广播信道上,要想实现两个主机间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。在每个主机发送的帧中必须携带发送主机地址和接收主机的地址。这类地址是用于媒体接入控制,因此这类地址被称为MAC地址
    (2)注意:它也被称为物理地址(固定在网卡上)。MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
  2. IP地址网络层的范畴
    (1)概念:IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
    网络编号:标识因特网上某一网络
    主机编号:标识同一网络上的不同主机
    (2)从网络体系结构看IP地址和MAC地址:在这里插入图片描述
    图中网络层首部含有源IP地址和目的IP地址链路层首部含有源MAC地址和目的MAC地址
    (3)注意数据包在跨网络的转发过程中IP地址不变,而MAC地址改变。
    (4)IP地址和MAC地址区别
        1. IP地址可以标识网络,而MAC地址不能。
        2. IP地址属于网络层,MAC地址属于数据链路层。
        3. IP地址是可变的,MAC地址是不可变的。
        4. IP地址用于实现不同网络之间的通信,而MAC地址用于实现本地网络中的通信。
    区别的理解思路IP地址可以被路由器转发到不同的网络中实现不同网络之间的通信,而MAC地址只能在本地网络中使用,不能跨越不同的网络。在网络通信中路由器会根据IP地址进行转发,而在本地网络中交换机会根据MAC地址进行转发
  3. ARP协议地址解析协议ARP
    (1)功能通过主机的IP地址找到对应的MAC地址
    (2)原理如下
    第一步,主机B知道C的IP地址,想要给C发送数据包,但是在封装MAC帧时(数据链路层),不知道C的MAC地址(目的MAC地址),故无法填写目的MAC地址。
    第二步,实际上,每个主机都有ARP高速缓存表,所以主机B会在自己的ARP高速表中查找C对应的MAC地址。
    第三步,主机B没有找到,就以广播形式发送ARP请求报文的广播帧(封装在MAC帧中,目的地址为FF-FF-FF-FF-FF-FF).
    第四步,主机A收到后,发现询问的IP地址不是自己,就不予理会。主机C收到后,发现询问的IP地址是自己,首先把主机B的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给B发送ARP响应单播帧(封装在MAC帧中,目的地址为B第MAC地址)告诉主机B,主机C的MAC地址是什么。
    第五步,主机A收到后,单播帧的目的地址与自己MAC地址不对应,则不予理会。主机C收到该单播帧后,发现目的地址与自己的MAC地址对应,则接受该单播帧,将C的主机IP地址和MAC地址记录到自己的ARP高速缓存表中。现在,主机B可以给主机C发送想要发送的数据包了。在这里插入图片描述

五、网络层(为解决分组在网络上传输问题)

IPV4地址

  1. 分类编制的IPV4地址
  2. 无分类编制的IPV4地址
  3. 划分子网的IPV4地址下面只记录该类地址笔记
    (1)引出:当某单位的网络逐渐扩大,需要将原来的网络划分成三个独立的网络。此时若为新增网络申请新的网络号会带来以下弊端(时间和费用代价;增加路由器中记录;浪费原有剩余的大量IP)因此可以根据IPV4地址的主机号部分借用一些位来区分不同子网,例如可以借用主机号部分(8位-一段或者16位-两段等)(一个段为一个字节)的某些位来是主机号部分有两个作用,一个是区分不同子网,另一个是区分同一子网中的不同主机。
    (2)子网掩码:子网掩码根据自身的值和IPV4地址相与,得到(子)网络号部分(网络地址)。因此它满足网络号的前三个字节的每个位都为 1。若要划分子网,则它的主机号部分占用的位也要为 1,这样一来就能根据已知的IPV4地址和给出的子网掩码来对IPV4进行子网划分。

在这里插入图片描述

IP数据报的发送和转发过程

  1. 引出不同网络之间的通信,需要路由器进行中转,间接交付。同一网络中的通信,需要交换机中转,直接交付
  2. 举例
    (1)第一步,主机A要给主机D发送IP数据包(主机A知道主机D的IP地址),主机A将自己IP地址与自己的子网掩码相与得到所在网络IP地址,主机A将F的IP地址与自己的子网掩码相与,得到目的网络地址,与自己所在网络地址不相同。因此,主机A要把IP数据包发给路由器,使它帮其转发。(间接交付)
    (2)第二步,一个网络上的各主机都有默认网关(路由器),因此主机A会将IP数据包发送给默认网关。
    (3)第三步,默认网关对IP数据报进行转发。流程为:首先检测IP数据报首部是否出错,若出错,丢弃并通知源主机。然后根据IP数据报的目的IP地址在路由表中查找匹配的条目;若找到则发给条目中的下一跳,否则,丢弃并通知源主机。(判断是否匹配?根据目的IP地址和路由表中的记录的地址掩码相与,判断得到的网络地址是否和该条记录对应的目的网络地址相同,若相同,则路由器就转发到该条记录的下一跳)。这样,主机D就可以收到路由器转发来的IP数据包
    注意需要设计很好的数据结构来提高路由表的记录的查找速度
    在这里插入图片描述

IPV4数据报的首部格式

网际控制报文协议ICMP

功能:
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它属于网络层协议主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。 比如我们日常使用得比较多的ping,就是基于ICMP的。

  1. 终点不可达
    在这里插入图片描述
  2. 源点抑制在这里插入图片描述
  3. 时间超过
    在这里插入图片描述
  4. 参数问题在这里插入图片描述
  5. 改变路由(重定向)
    在这里插入图片描述

六、运输层

运输层端口号、复用、分用

  1. 运输层端口号
    在这里插入图片描述
    这个图片,说明了计算机上的进程用进程标识符PID来区分,但是因为不同操作系统的进程标识符PID不一样,则要找到统一的方法来区分主机自身应用层的应用进程进行标识(通过端口实现)。

  2. 发送方的复用和接受方的分用
    在这里插入图片描述

  3. 有哪些协议在运输层使用TCP协议或者UDP协议?

TCP和UDP的对比

在这里插入图片描述

TCP的流量控制

  1. 概念:让发送方的发送速率不要太快,要让接收方来得及接受
  2. 实现方法:利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
  3. 具体实现TCP会话的双方都各自维护一个发送窗口和一个接收窗口。接收窗口大小取决于应用、系统、硬件的限制。发送窗口则取决于对端通告的接收窗口。接收方发送的确认报文中的window字段可以用来控制发送方窗口大小从而影响发送方的发送速率。将接收方的确认报文window字段设置为 0,则发送方不能发送数据。

TCP的拥塞控制

  1. 概念: 某个网络中的输入负载过多,网络性能变坏,这种情况叫做拥塞
    在这里插入图片描述

  2. cwnd、swnd、ssthresh变量
    在这里插入图片描述

  3. TCP的拥塞控制(慢开始、拥塞避免、快重传、快恢复)
    (1)慢开始:把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。每经过一个传输轮次,拥塞窗口 cwnd 就加倍。 为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。
    当 cwnd < ssthresh 时,使用慢开始算法。
    当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
    当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。
    (2)拥塞避免:让拥塞窗口cwnd缓慢地增大每经过一个传输轮次,就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长
    无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,引起超时重传),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)然后把拥塞窗口cwnd重新设置为1执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
    (3)快重传:当某个发送方发送的报文丢失,要使发送方尽快进行重传,而不是等超时重传计时器超时再重传
    在这里插入图片描述这样一来,发送方一旦收到3个连续的重复确认就将相应的报文段立即重传发送方不会发现超时重传,不会误认为拥塞。上图中可以看到,超时重传时间RTO大于立即重传所需时间。
    (4)快恢复发送方收到三个重复确认后,知道只是丢失了个别的报文段,于是不启动慢开始算法,而是执行快恢复算法。具体过程为:1. 发送方将开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;2. 然后开始执行拥塞避免算法。(也有的快恢复算法是在快恢复开始时候,把cwnd值增大一些,cwnd=ssthresh+3)
    在这里插入图片描述
    cwnd:发送方维护的一个变量,取决于网络的拥塞程度动态变化。(没出现网络拥塞就增大,出现了就减少)。
    swnd:发送方将拥塞窗口作为发送窗口swnd,即 swnd = cwnd
    ssthresh:慢开始门限。
         当 cwnd < ssthresh 时,使用慢开始算法。
         当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
         当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。
    判断网络拥塞是否引起发送方的超时重传

TCP可靠传输的实现(通过流量控制和拥塞控制)

TCP连接的建立(三次握手)

在这里插入图片描述
步骤如下

  1. 一开始,TCP服务器进程首先创建传输控制块用来存储TCP连接中的重要信息。之后,TCP服务器进入监听状态
  2. TCP客户进程首先创建传输控制块,然后主动向TCP服务器发送连接请求报文段,并进入同步已发送状态。(SYN=1表示该报文段为请求建立连接的的报文段seq=x表示TCP客户进程所选择的初始序号
  3. TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态SYN=1表示该报文段为同意建立连接的报文段ACK=1表示确认接受客户端发送的报文段seq=y表示TCP服务器进程所选择的初始序号ack=x+1表示对TCP客户进程所选择的初始序号的确认)。
  4. TCP客户端向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已建立的状态。(ACK=1表示确认接受TCP服务端发送的报文段seq=x+1表示TCP客户进程已经消耗一个序号,这是下一个要消耗的序号ack=y+1表示对TCP服务器进程所选择的初始序号的确认)(注意:该条报文段没有SYN字段,若该报文段不携带数据,则下一次,客户端发送报文段时候,序号仍然为seq=x+1)
  5. TCP服务器进程收到报文段后,进入连接已建立状态。现在,两个进程之间可以基于已建立好的TCP连接进行可靠传输。

注意:TCP规定SYN=1的报文段,不能携带数据,但要携带一个序号

TCP连接的释放(四次挥手)

在这里插入图片描述
步骤如下:

  1. TCP客户进程的应用进程通知其主动关闭TCP连接TCP客户进程会发送TCP连接释放报文段,并进入终止等待1状态(FIN=1表示该报文段为请求释放连接报文段;ACK=1表示确认TCP服务端发送的报文段;seq=u表示TCP客户进程之前已传送过的最后一个报文段的序号加一;ack=v表示TCP客户进程之前已收到的最后一个TCP服务器报文段的序号加一)
  2. TCP服务器进程收到后,发送一个TCP确认报文段,并进入关闭等待状态。(ACK=1表示确认TCP服务端发送的报文段;seq=v表示TCP服务器进程之前发送的数据的最后一个字节加一;ack=u+1表示对之前TCP客户进程发送的报文段的确认)
  3. TCP服务器进程通知TCP客户进程,此时,从TCP客户进程到TCP服务器进程方向的连接就释放了。
  4. TCP客户进程收到TCP确认报文段后,进入终止等待2状态。
  5. 若使用TCP服务器进程的TCP客户进程没有数据要发送了,应用进程就通知TCP服务器进程释放连接,为被动关闭连接TCP服务器进程发送TCP连接释放报文段并进入最后确认状态
  6. TCP客户进程收到后,发送TCP确认报文段,进入时间等待状态。
  7. TCP服务器进程收到后,进入关闭状态。
  8. 等待2MSL后(可根据实际情况改变),TCP客户进程进入关闭状态。

注意:(1)FIN=1的报文段即使不携带数据,也要消耗掉一个序号;
   (2)最后一个报文段的序号加一 可以这样说 —— 已发送的或者已收到的数据的最后一个字节加一,这也是最新的序号,这个最新序号(ack、seq)用于确认或者发送报文段。

TCP报文段的首部格式

七、应用层(通过主机间通过应用进程间的交互来实现特定网络应用)

动态主机配置协议DHCP

在这里插入图片描述

域名系统DNS

  1. 域名格式:··· . 三级域名 . 二级域名 . 顶级域名
  2. 域名空间在这里插入图片描述
  3. DNS服务器
    (1)功能:实现域名到IP地址的转换
    (2)分类:本地域名服务器、根域名服务器、顶级域名服务器、权限域名服务器
  4. 域名解析的过程(输入域名之后,按下回车键后的第一步 —— 解析域名,获得IP):
    一共有两种查询方式:递归查询迭代查询
    (1)递归查询
    在这里插入图片描述
    (2)迭代查询
    在这里插入图片描述
    注意:由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是迭代查询,而其余的查询是迭代查询。
  5. DNS缓存
    (1)引出:为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
    (2)适用对象:在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询
    (3)注意:由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确域名服务器应为每项内容设置计时器并删除超过合理时间的项

万维网WWW

  1. 万维网是运行在因特网上的一个分布式应用

  2. URL和URI资源定位符(找到该资源) 和 资源标识符(识别该资源)。URL构成如下: 在这里插入图片描述

  3. 万维网的文档:由html、css、js、xxx.img等等构成的文档,且它位于万维网的服务器中。在各个浏览器中,由各个浏览器的内核引擎进行渲染。

  4. HTTP协议(超文本传输协议)
    (1)引出:怎样向万维网服务器请求万维网文档,万维网怎样把文档传送给浏览器?这也说明了为什么叫做超文本传输协议(用于传输超文本——万维网文档的一种协议规则)

  5. HTTP1.0
    (1)特点采用非持续连接方式,即每请求一个资源就会释放TCP连接。再次请求资源时候,需要再次三次握手(第三次可携带HTTP请求报文)建立TCP连接,然后四次挥手释放连接。
    (2)时间代价大:每请求一个文档就要有两倍的RTT的开销。浏览器可以通过建立多个并行的TCP连接同时请求多个对象,但是这样会大量占用万维网的资源。

  6. HTTP1.1
    (1)特点采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同个浏览器和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。(这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同-个服务器上就行。)
    (2)注意:为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样就节省了很多个RTT时间提高了下载文档的效率。

  7. HTTP的报文格式
    注意:HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串, 并且每个字段的长度都是不确定的
    (1)请求报文格式
    在这里插入图片描述

(2)响应报文格式
在这里插入图片描述
8. Cookie
(1)引出

在这里插入图片描述
(2)Cookie实现原理

在这里插入图片描述
9. Web缓存
(1)概念:Web缓存是一种常见的代理服务器应用,它可以缓存客户端请求的Web资源,如HTML页面、图片、视频等,以减少客户端和服务器之间的网络流量和延迟
(2)具体实现:当客户端请求某个Web资源时,代理服务器会先检查本地缓存中是否有该资源的副本,如果有,则直接返回给客户端,否则代理服务器会向服务器请求该资源,并将其缓存到本地,然后返回客户端。
(3)注意若原始服务器中的某文档已被更改,这就会导致代理服务器中的文档和原始服务起中的文档不一致了实际上,原始服务器会为响应的文档设置一个修改时间字段,和过期时间字段。所以,当主机去代理服务器请求该文档时,会判断该文档是否过期,若未过期,若已过期,代理服务器向原始服务器发送一个带有首部字段为if-modified-since(取值为该文档的修改日期)的首部行。原始服务器就可判断代理服务器中存储的该文档是否与自己存储的文档一致。若一致,给代理服务器发送不包含实体主体的响应,状态码为304,短语为 Not modified,代理服务器会重新更新该文档的有效日期。若不一致,给代理服务器发送封装有该文档的响应报文。此后,代理服务器将更新后的该文档封装在响应报文中发回给客户端主机。

在这里插入图片描述

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

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

相关文章

【工作思考】如何提升自己的编程能力?

文章目录 前言一、代码评审为什么要进行代码评审&#xff1f; 二、持续学习能力三、良好的编程习惯代码注释避免深度嵌套拒绝长函数重视自测文档编写重构你的代码学会思考 四、多接触开源项目五、总结 前言 在工作中&#xff0c;我们大部分的时间都是在阅读代码&#xff0c;阅…

CF204A-Little Elephant and Interval(数位)

CF204A-Little Elephant and Interval 考虑 [ 1 , a b c d e ‾ ] [1,\overline{abcde}] [1,abcde] 的情况&#xff1a; 位置集合数量个位1 ~ 99十位11 ~ 999百位 { x u x ‾ ∣ x ∈ [ 1 , 9 ] , u ∈ [ 0 , 9 ] } \{\overline{xux} | x\in [1,9],u\in [0,9]\} {xux∣x∈[1…

基于Yolov5的二维码QR码识别

1.QR code介绍 一个 QR 码可以分为两个部分&#xff1a;功能图形和编码区域。 数据集 大小10,85张 1.1 通过split_train_val.py得到trainval.txt、val.txt、test.txt # coding:utf-8import os import random import argparseparser argparse.ArgumentParser() #xml文件的地…

设计模式-结构型模式之代理模式

6. 代理模式 6.1. 模式动机 在某些情况下&#xff0c;一个客户不想或者不能直接引用一个对 象&#xff0c;此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用&#xff0c;并且可以通过代理对象去掉客户不能看到 的内…

江苏专转本盐城工学院管理学章节习题

江苏专转本盐城工学院管理学章节习题第一章 管理活动与管理理论 一、单项选择题 1.企业在销售产品时,需要预估货款回收的可能性。为此&#xff0c;信用审核部门力图以一种低成本的方式处理有关客户资信的材料,但因为过程速度太慢,使许多客户另求他处购货。该项信用审核工作可…

Power Automate实现自动填充Word

创建Word模板 1、创建一个Word&#xff0c;按需求写好内容 2、在需要填充的地方插入开发工具-纯文本内容控件 3、编辑控件属性&#xff0c;用于Power Automate中区分字段 4、模板完成后上传至Sharepoint站点中 创建Forms 也可使用Sharepoint列表作申请单&#xff0c;这步就…

实战:快速实现iOS应用中集成即时通讯IM和UI

准备 熟练objective-c语言 有一台mac电脑,并安装了xcode 和 cocoapods 目标 手把手教大家在iOS应用中集成即时通讯IM 功能 内容篇幅较长,需要内心平和耐心看下去,务必戒躁.阅读本文并按照本文进行对接预计时长2小时 注册Appkey和username 本教程以集成环信IM为例 注册环信…

SpringBoot 整合 ES (四十二)

我看到希望&#xff0c;哪怕只有微小的一束光&#xff0c;我也会拼尽全力去寻找 上一章简单介绍了 SpringBoot 整合 RabbitMQ (四十一), 如果没有看过,请观看上一章 ES 相应的教程&#xff0c;可以看老蝴蝶之前写的文章: https://blog.csdn.net/yjltx1234csdn/category_122775…

Java 基础常识

一、Java运行机制 1.Java运行原理 编译&#xff1a;.java(源代码) ---> .class(字节码) 解释&#xff1a;.class(字节码) ---> 加载并启动JVM(类加载) ---> .class(机器指令) 执行&#xff1a;通过JVM来完成运行输出 2.Java运行过程 利用 javac 编译 .java 文件 利…

欧姆龙CP1H系列PLC通讯扩展与数据采集

一、应用场景 纺织厂的粗纱机&#xff0c;控制系统由1台欧姆龙CP1H的PLC和1台昆仑通泰MCGS的触摸屏组成&#xff0c;触摸屏连接到PLC通讯扩展的接口CP1W-CIF01&#xff08;RS232串行通讯&#xff09;。现在MES管理系统&#xff0c;需要采集设备的数据&#xff0c;要求不改变原来…

【详解C++中的引用】

文章目录 一、什么是引用二、引用规则三、引用特性四、使用场景1.做函数参数2.做返回值五、常引用 ps&#xff1a;为什么类型转换会产生临时变量&#xff1f; 六、引用和指针的区别总结 一、什么是引用 引用就是给一个变量取别名。 注意&#xff1a;这个引用不会新开辟一块空…

微信小程序自定义组件:组件间通讯

前言 略 组件间通信 组件间的基本通信方式有以下几种&#xff1a; WXML 数据绑定&#xff1a;用于父组件向子组件的指定属性设置数据&#xff0c;仅能设置 JSON 兼容数据&#xff08;自基础库版本 2.0.9 开始&#xff0c;还可以在数据中包含函数&#xff09;。具体在 组件模…

Mybatis-plus 两种分页方法(分单表和联表)

mybatis-plus分别使用 一、PageHelper插件分页使用 准备1&#xff1a;引入PageHelper依赖 <!-- pagehelper 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId>…

面试高频代码题

文章目录 链表1.删除有序链表中的重复链表2.删除有序链表的重复数组并只保留只出现过一次的结点3. 无序单链表升序排列 数组1. 冒泡排序2. 折半查找3. 快排4.给1001个数&#xff0c;有一个是重复的&#xff0c;如何不使用额外空间找出来这个数&#xff1f;&#xff08;微软&…

智能文案改写工具-智能改写工具免费

智能写作机器人 智能写作机器人&#xff0c;这是一种让人类写作变得更加简单的创新技术。它的出现&#xff0c;为内容生产领域带来了巨大的进步&#xff0c;不仅提高了人们的写作效率&#xff0c;还让优质的内容更容易被产生和共享。现在&#xff0c;让我们来了解一下智能写作…

Spring Security --- formLogin配置

目录 环境准备 配置自定义登录表单页面 配置登录成功的跳转页面方式 配置登录失败的跳转页面方式 前端表单参数获取 CustomWebSecurityConfigurerAdapter配置类代码示例 环境准备 创建springboot项目引入spring security框架引入thymeleaf模板引擎 配置自定义登录表单页面…

TryHackMe-Year of the Pig(Linux渗透测试)

Year of the Pig 有些猪会飞&#xff0c;有些有故事要讲。开始吧&#xff01; 端口扫描 循例nmap Web枚举 进入80 gobuster扫 进到/admin&#xff0c;尝试弱口令&#xff0c;给出了密码提示 密码本身的一些很简单的单词&#xff0c;密码的后三位是两位数字加一个特殊字符 我…

Flask(Jinja2)服务端模板注入漏洞(SSTI)整理

整理一下Flask框架下的SSTI漏洞相关知识&#xff1a; 漏洞原理 Flask是一个很常用的python框架&#xff0c;其中存在SSTI漏洞。 SSTI&#xff0c;服务端模板注入&#xff0c;很早就知道这个东西&#xff0c;但没有仔细整理过&#xff0c;作为一种注入漏洞&#xff0c;简单说…

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数 最近公共祖先[236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/)[235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-b…

redis单机最大并发量

redis单机最大并发量 布隆过滤器多级缓存客户端缓存应用层缓存Expires和Cache-Control的区别Nginx缓存管理 服务层缓存进程内缓存进程外缓存 缓存数据一致性问题的解决引入多级缓存设计的时刻 Redis的速度非常的快,单机的Redis就可以⽀撑 每秒十几万的并发,相对于MySQL来说,性…