网络编程相关面试题
目录
- 1.请解释一下什么是TCP协议的三次握手?
- 2.TCP协议使用什么机制确保数据包的顺序和完整性?
- 3.什么是UDP协议?它与TCP协议有什么不同?
- 4.请解释一下什么是IP地址?为什么需要它?
- 5.请解释一下什么是端口?为什么需要它?
- 6.请解释一下什么是套接字(Socket)?
- 7.在网络编程中,什么是阻塞式I/O和非阻塞式I/O?请举例说明。
- 8.请解释一下什么是多路复用技术,以及它为什么在网络编程中重要?
- 9.什么是并发服务器?在设计并发服务器时,使用多进程和多线程有什么不同?
- 10.请解释一下什么是流量控制和拥塞控制,以及它们在网络通信中的作用是什么?
- 11.请解释一下滑动窗口机制在网络通信中的作用和原理。
- 12.在网络编程中,如何处理网络故障和异常情况?
- 13.请解释一下什么是数据报文?在网络通信中,如何确保数据报文的正确性和完整性?
- 14.请解释一下什么是MAC地址,以及它在网络通信中的作用是什么?
- 15.请解释一下什么是NAT(网络地址转换)技术,以及它为什么在网络通信中重要?
1.请解释一下什么是TCP协议的三次握手?
TCP协议的三次握手是建立TCP连接的重要步骤。具体来说,三次握手的过程包括:
- 第一次握手:客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认。
- 第二次握手:服务器收到SYN包后,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。此包发送完毕后,客户端和服务器进入ESTABLISHED状态,完成三次握手。
三次握手的目的在于连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。在socket编程中,客户端执行connect()时将触发三次握手。
2.TCP协议使用什么机制确保数据包的顺序和完整性?
TCP协议使用以下机制来确保数据包的顺序和完整性:
- 序列号和确认机制:TCP为每个字节分配一个唯一的序列号,发送方将数据分割成若干个字节,并为每个字节分配一个序列号。接收方收到数据后,会根据每个字节的序列号重新组合成原始数据。如果接收到的数据包序列号不连续或者有缺失,接收方会发送一个ack应答,要求发送方重新发送数据包,直到接收方收到正确的数据包为止。
- 滑动窗口机制:TCP使用滑动窗口机制来控制发送方可以发送的数据量。窗口大小表示在接收方未确认前,发送方可以发送的最大数据量。当窗口大小为0时,发送方不能发送数据;当窗口大小大于0时,发送方可以发送窗口大小的数据,并等待接收方的确认。接收方收到数据后,会将窗口滑动到未确认的数据部分,以便发送方继续发送后续的数据。
- 超时重传机制:如果发送方在一定时间内未收到接收方的确认,就会触发超时重传机制。发送方会重新发送之前未收到确认的数据包,直到收到接收方的确认为止。超时重传的时间间隔会随着重传次数的增加而动态调整,以避免持续等待导致超时时间过长。
- 校验和机制:TCP协议使用校验和机制来检测数据在传输过程中是否发生了错误。发送方在发送数据前会计算校验和,并将校验和附加在数据包中一起发送。接收方收到数据包后,会重新计算校验和并与附加的校验和进行比较。如果两个校验和不匹配,则说明数据在传输过程中发生了错误,接收方会要求发送方重新发送数据包。
这些机制共同保证了TCP数据包的顺序和完整性,使得数据能够可靠地传输到目的地。
3.什么是UDP协议?它与TCP协议有什么不同?
UDP(User Datagram Protocol)协议是一种无连接的传输层协议,它提供了一种尽最大努力交付的数据传输服务。与TCP协议不同,UDP协议不建立连接和释放连接操作,也不保证数据包的顺序和完整性。它只是简单地把应用程序传给它的数据报发送出去,不考虑发送的数据是否被正确接收。
与TCP协议相比,UDP协议具有以下不同点:
- 连接状态:TCP协议是面向连接的协议,需要在数据传输前通过三次握手建立连接,并在数据传输结束后通过四次挥手释放连接。而UDP协议是面向无连接的协议,不需要建立连接和释放连接操作。
- 可靠性:TCP协议通过使用序列号、确认应答等机制,保证数据传输的可靠性,并能够纠正传输过程中发生的数据错误。而UDP协议不提供可靠性保证,它只是简单地把应用程序传给它的数据报发送出去。
- 顺序控制:TCP协议通过使用序列号控制包的顺序,保证接收方按正确的顺序读取数据。而UDP协议不保证包的顺序。
- 流量控制和拥塞控制:TCP协议通过控制数据传输的速率,能够防止过多的数据拥塞网络,并能够在网络拥堵时进行流量控制和拥塞控制。而UDP协议则没有这个能力。
- 头部信息:TCP协议的头部较大,最小为20字节,而UDP协议的头部较小,只有8个字节。
总之,TCP协议适用于需要可靠传输的应用场景,如文件传输、邮件等。而UDP协议适用于实时性要求高的应用场景,如在线游戏、视频传输等。
4.请解释一下什么是IP地址?为什么需要它?
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址是实现网络中的数据传输和通信的关键。在进行数据传输时,发送方需要知道接收方的IP地址,以便将数据包发送到正确的目的地。而接收方的IP地址则被用于识别和接收数据包,以便将其传送到相应的应用程序中。此外,IP地址还可以用于实现网络管理和安全控制。例如,管理员可以使用IP地址来限制某些主机或设备的访问权限,以提高网络的安全性和可靠性。
因此,IP地址对于互联网的数据传输和通信是至关重要的。
5.请解释一下什么是端口?为什么需要它?
端口是英文port的意译,可以认为是设备与外界通讯交流的出口。在网络通信中,端口的概念主要应用于TCP/IP协议簇中,是应用层进程与传输层协议实体间的通信接口。
端口的作用主要有两个:
- 用于唯一标识通信两端的端点。在网络通信过程中,需要唯一识别通信两端的端点,就是使用端口识别运行于某主机中的应用程序。如果没有引入端口,则只能通过进程号进行识别。进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前不知道自己的进程号,如果需要运行后再广播进程号则很难保证通信的顺利进行。而引入端口后,就可以利用端口号识别应用程序,同时通过固定端口号来识别和使用公共服务,如HTTP和FTP等。
- 用于区分不同的应用程序。在同一台计算机上,不同应用程序可以通过端口号进行区分。例如,在TCP协议中,每个连接都由源IP地址、源端口号、目的IP地址和目的端口号四个参数构成,通过这四个参数可以唯一确定一个连接。
总之,端口是实现网络通信和应用程序间通信的重要标识符,它能够唯一标识通信两端的端点,并用于区分不同的应用程序。
6.请解释一下什么是套接字(Socket)?
套接字(Socket)是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
套接字是由IP地址和端口结合的,提供向应用程序传送数据包的机制。通信时其中一个网络应用程序将要传输的一端信息写入他所在的主机的Socket中,该Socket通过与网络接口卡(NIC)相连的传输介质将这段信息传送到另外一台主机的Socket中,使对方能够接受到信息。
Socket的表示方法是点分十进制的IP地址加上端口号,即套接字Socket=(IP地址:端口号)。
7.在网络编程中,什么是阻塞式I/O和非阻塞式I/O?请举例说明。
在网络编程中,阻塞式I/O(Blocking I/O)和非阻塞式I/O(Non-Blocking I/O)是两种不同的输入/输出处理方式。
-
阻塞式I/O:
- 阻塞式I/O在执行读或写操作时,会一直等待直到操作完成或可以执行。如果读或写操作不能立即完成,调用阻塞式I/O的程序将一直等待,直到数据可用或准备好写入。例如,使用read()函数从网络套接字读取数据时,如果数据尚未可用,read()函数将阻塞调用进程,直到有数据可用。
- 优点:简单易用,适合处理简单的请求-响应式任务。
- 缺点:在等待数据的过程中,程序会一直处于阻塞状态,无法执行其他任务,导致效率低下。
-
非阻塞式I/O:
- 非阻塞式I/O在执行读或写操作时,会立即返回,无论操作是否完成。调用非阻塞式I/O的程序将立即收到一个状态通知,告知操作是否已完成或仍在进行中。如果操作尚未完成,程序可以继续执行其他任务,稍后再次检查操作的状态。例如,使用select()函数可以监控多个网络套接字的状态,当数据准备好读取时,select()函数会返回可用的套接字列表。
- 优点:提高了程序的效率和响应性,可以在等待数据的过程中执行其他任务。
- 缺点:需要更多的编程技巧和控制流程,因为程序需要自行管理和监控多个操作的进度。
这两种I/O处理方式各有优缺点,适用于不同的应用场景。在网络编程中,通常会结合使用阻塞式I/O和非阻塞式I/O以满足不同的需求。
8.请解释一下什么是多路复用技术,以及它为什么在网络编程中重要?
多路复用技术是一种将多个低速信道组合成一个高速信道的技术,它可以有效地提高数据链路的利用率,使得一条高速的主干链路同时为多条低速的接入链路提供服务。多路复用技术的实质是将一个区域的多个用户数据通过发送多路复用器进行汇集,然后将汇集后的数据通过一个物理线路进行传送,接收多路复用器再对数据进行分离,分发到多个用户。
在网络编程中,多路复用技术非常重要。例如,在处理大量网络连接时,如果为每一个连接都分配一个线程去处理,当连接数很大时,线程切换的开销将会非常大,且系统可能无法承受如此多的线程。另外,大多数时间,这些连接都处于空闲状态,即并没有数据可读或可写,所以大量的线程其实并没有做实质性的工作,这就是资源的浪费。而多路复用技术的出现就是为了解决这个问题。在多路复用模型中,一个线程可以监视多个网络连接。例如,在epoll模型中,一个线程可以监视多个网络连接的状态,当某个连接上有数据到达时,线程就会收到通知并进行相应的处理。这种模型可以大大提高网络程序的效率和响应性。
以上信息仅供参考,如有需要,建议查阅相关网站。
9.什么是并发服务器?在设计并发服务器时,使用多进程和多线程有什么不同?
并发服务器是指可以同时处理多个客户端请求的服务器。在设计并发服务器时,可以使用多进程和多线程来实现,但它们之间有一些区别。
-
多进程并发服务器:
- 每个进程有自己的地址空间(address space),因此它们是独立的,可以同时执行不同的任务。
- 进程之间通信需要通过操作系统提供的进程间通信(IPC)机制来实现,例如管道、消息队列、信号量等。
- 多进程并发服务器适用于需要处理大量并发连接的场景,因为每个连接都需要一个独立的进程进行处理。
- 但是,创建和切换进程需要一定的开销,因此当连接数量较少时,使用多进程并发可能会造成资源的浪费。
-
多线程并发服务器:
- 同一进程中的多个线程共享同一个地址空间(address space),因此它们可以方便地共享数据和资源。
- 线程之间通信可以直接通过变量或者共享内存来实现,不需要额外的IPC机制。
- 多线程并发服务器适用于需要处理大量并发连接的场景,因为每个连接都可以在一个线程中处理。
- 但是,由于多个线程共享同一个地址空间,因此需要注意避免线程间的竞争和同步问题。
总之,在设计并发服务器时,需要根据具体的应用场景和需求来选择使用多进程还是多线程。如果需要处理大量并发连接并且每个连接都是独立的任务,可以选择使用多进程并发服务器;如果需要处理大量并发连接并且需要在同一进程中共享数据和资源,可以选择使用多线程并发服务器。
10.请解释一下什么是流量控制和拥塞控制,以及它们在网络通信中的作用是什么?
流量控制和拥塞控制是计算机网络中重要的概念,它们的作用是确保网络的数据传输的稳定性和可靠性。
流量控制(Traffic Control)主要是用来控制发送方发送数据的速率,以防止接收方因无法及时处理而发生数据丢失或网络拥塞。它依赖于滑动窗口和拥塞控制等机制来实现。滑动窗口机制中,发送方和接收方都维护一个窗口,通过动态调整窗口大小来控制发送速率。拥塞控制机制则用于避免网络拥塞,它依赖于拥塞窗口和拥塞避免算法。拥塞窗口表示发送方可以发送的数据量,而拥塞避免算法用于动态调整拥塞窗口的大小。
拥塞控制(Congestion Control)是一种在网络中控制和管理数据流的技术。它能够将网络传输的速度减缓或加快,以避免拥塞的发生。拥塞控制技术大致可分为两类:反应性拥塞控制和预测性拥塞控制。反应性拥塞控制是通过检测网络的反应时间和数据包的丢失率来判断网络是否发生拥塞,当检测到拥塞时,会要求其它设备减缓数据的发送速度。预测性拥塞控制则是利用一系列的算法来预测网络出现拥塞的概率,一旦预测到网络出现问题,就会调整数据传输速度以避免数据包的丢失和网络的拥塞。
总的来说,流量控制和拥塞控制在网络通信中都起到了非常重要的作用。流量控制可以确保发送方不会因为过快地发送数据而造成接收方的处理压力,从而避免数据丢失或网络拥塞。而拥塞控制则可以有效地避免网络拥塞的发生,保持网络的稳定性和可靠性。
11.请解释一下滑动窗口机制在网络通信中的作用和原理。
滑动窗口机制在网络通信中起着重要的作用,它是一种用于流量控制和拥塞控制的机制。
滑动窗口机制的原理是:发送方维护一个窗口,该窗口包含待发送但尚未确认的数据包。每当发送方发送一个数据包时,窗口就会向前滑动一个单位,即去除已发送并得到确认的数据包。通过控制窗口的大小,可以控制发送方的发送速率。接收方也会维护一个窗口,用于存储接收到的但尚未确认的数据包。当接收方确认收到某个数据包时,它会在窗口中去除该数据包,并将窗口向前滑动。
滑动窗口机制的作用是:
- 流量控制:通过调整窗口的大小,可以控制发送方的发送速率,从而防止接收方因无法及时处理而发生数据丢失或网络拥塞。同时,滑动窗口机制还可以通过确认信息反馈来动态调整窗口的大小,以达到更好的流量控制效果。
- 拥塞控制:滑动窗口机制还可以用于拥塞控制。当网络出现拥塞时,发送方可以通过减小窗口的大小来减缓数据的发送速度,以避免网络拥塞的加剧。同时,接收方也可以通过减小窗口的大小来限制接收到的数据量,以避免自身处理能力的过载。
总之,滑动窗口机制是一种重要的网络通信技术,它可以有效地实现流量控制和拥塞控制,保证网络通信的稳定性和可靠性。
12.在网络编程中,如何处理网络故障和异常情况?
在网络编程中,处理网络故障和异常情况是非常重要的。以下是一些常见的处理网络故障和异常的方法:
- 超时处理:在网络编程中,由于网络的不稳定性,可能会导致数据包的传输延迟或丢失。为了避免这种情况,可以设置超时时间,当超过一定时间没有收到响应时,就认为出现了网络故障或异常情况,然后采取相应的处理措施。
- 错误码处理:当网络出现异常时,操作系统通常会返回一个错误码。网络编程中可以对错误码进行捕获和处理,根据不同的错误码采取不同的处理策略。例如,如果是连接超时错误,可以尝试重新连接;如果是协议错误,可能需要检查协议实现是否正确。
- 异常捕获和处理:在网络编程中,可以使用异常处理机制来捕获和处理网络故障和异常情况。当出现异常时,程序可以抛出异常,并在上层进行捕获和处理。这样可以将异常处理和业务逻辑分离,提高程序的健壮性。
- 日志记录和分析:对网络故障和异常情况进行日志记录和分析是非常重要的。通过对日志的分析,可以定位问题的原因和来源,从而采取相应的处理措施。同时,日志记录也可以为后续的故障排查和性能优化提供依据。
- 容错机制设计:在网络编程中,可以设计容错机制来避免网络故障和异常情况对程序的影响。例如,可以使用备份服务器、负载均衡等技术来提高系统的可靠性和稳定性。同时,也可以采用重试、回滚等机制来避免网络故障对业务的影响。
总之,处理网络故障和异常情况是网络编程中不可或缺的一部分。通过对超时、错误码、异常、日志记录和分析以及容错机制的设计和处理,可以提高程序的健壮性和可靠性,保障网络通信的稳定性和安全性。
13.请解释一下什么是数据报文?在网络通信中,如何确保数据报文的正确性和完整性?
数据报文(Data Message)是指在计算机网络中传输的数据信息,它通常由一系列二进制数字组成。数据报文可以是请求、响应、数据传输等不同类型的消息,用于在网络中传递信息。
在网络通信中,确保数据报文的正确性和完整性非常重要。下面是一些常见的方法来确保数据报文的正确性和完整性:
- 校验和(Checksum):在发送数据报文时,发送方会计算报文的校验和,并将结果附加在报文末尾。接收方收到报文后,会重新计算校验和,以检查报文是否在传输过程中出现错误。如果校验和不匹配,接收方会丢弃报文并通知发送方重传。
- 确认与重传(Acknowledgement and Retransmission):接收方在收到正确的数据报文后,会向发送方发送确认信号。如果接收方没有收到确认信号或收到的报文有错误,发送方会重新发送数据报文。这种机制可以确保数据报文的正确性和完整性。
- 加密与解密(Encryption and Decryption):在网络通信中,加密技术可以保护数据报文的机密性和完整性。发送方使用加密算法将数据报文加密,并将加密后的报文发送给接收方。接收方使用解密算法解密报文,以获取原始数据。这种方法可以防止未经授权的访问和数据泄露。
- 数字签名(Digital Signature):数字签名是一种用于验证数据完整性和来源的技术。发送方使用散列函数将数据报文转换为固定长度的哈希值,并使用私钥对哈希值进行签名。接收方使用公钥验证签名,并使用同样的散列函数计算报文的哈希值,以验证数据的完整性和来源。
- 容错与纠错(Fault Tolerance and Error Correction):容错技术可以避免系统故障对数据报文的影响。例如,使用备份服务器、负载均衡等技术可以提高系统的容错能力。纠错技术则可以在数据传输过程中检测和纠正错误,例如使用循环冗余检验(CRC)等算法。
综上所述,通过校验和、确认与重传、加密与解密、数字签名以及容错与纠错等技术,可以确保数据报文的正确性和完整性,保障网络通信的安全和可靠。
14.请解释一下什么是MAC地址,以及它在网络通信中的作用是什么?
MAC地址(Media Access Control Address)是指在计算机网络中用于标识网络设备的地址,也称为硬件地址或物理地址。它是全球唯一的,由设备制造商分配给每个网络设备。
在网络通信中,MAC地址的作用是识别和唯一标识网络设备。在数据链路层(OSI模型的第2层),设备之间的通信是基于MAC地址进行的。当一个设备需要将数据发送给另一个设备时,它会在数据包中包含目标设备的MAC地址。接收方设备会根据MAC地址判断是否接收这个数据包。这种基于MAC地址的通信方式被称为以太网。
另外,MAC地址也用于ARP协议(地址解析协议)中。当一个设备需要发送数据给另一个设备时,它首先会通过ARP协议查找目标设备的MAC地址。这样,数据包才能正确地发送到目标设备。
总之,MAC地址在网络通信中起到了关键作用,它为设备提供了唯一标识,确保数据包能够正确地在数据链路层进行传输。
15.请解释一下什么是NAT(网络地址转换)技术,以及它为什么在网络通信中重要?
NAT(网络地址转换)是一种将私有(保留)IP地址转换为合法IP地址的转换技术。它被广泛应用于各种类型的Internet接入方式和各种类型的网络中,原因很简单:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
NAT技术的主要作用包括:
- 缓解IPv4地址短缺的问题:通过NAT,内网主机可以共享一个公网IP地址访问Internet,从而减少IPv4公网地址的使用量。
- 隐藏内网IP结构:通过NAT,外网无法直接访问内网主机,可以隐藏内网IP地址结构,提高网络安全性。
因此,NAT在网络通信中扮演着重要的角色,它使得网络中的主机能够安全、有效地与外部网络进行通信。
相关文章:
网络编程相关面试题
目录 1.请解释一下什么是TCP协议的三次握手?2.TCP协议使用什么机制确保数据包的顺序和完整性?3.什么是UDP协议?它与TCP协议有什么不同?4.请解释一下什么是IP地址?为什么需要它?5.请解释一下什么是端口&…...
TCP_NODELAY与TCP通信效率
最近做tcp通信速度测试:主要流程如下所示: //client: while() { send data... recv data... //阻塞 }//server: while() { recv data... send data... } 当每次send数据量较小时,速度极慢!而send数据量较大时速度尚可。两者速度…...

ZooKeeper的分布式锁---客户端命令行测试(实操课程)
本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读测试来学习zookeeper。阅读本文之前,请先阅读----zookeeper 单机伪集群搭建简单记录(实操课程系列)。 阅读本文之前,请先阅读…...
工业4.0时代:图像识别驱动制造业智能生产的未来
在数字化革命的大潮中,工业4.0的到来标志着制造业将迎来全新的智能化时代。其中,图像识别技术作为一项核心技术,正引领着制造业实现了前所未有的智能生产。本文将深入探讨工业4.0时代下,图像识别是如何驱动制造业实现智能生产&…...

ROS vscode使用基本配置
1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译,选择:catkin_make:build 修改.vscode/tasks.json 文件 4、 创建 ROS 功能包 选定 src ---> create catkin package 依次设置包名、添加依赖 5、C 实现 在功能包的 src 下…...
Android、ESP32、ESP8266的mqtt通信
Android activity_main <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http:/…...

Hive安装与配置
你需要掌握: 1.Hive的基本安装; 2.Mysql的安装与设置; 3.Hive 的配置。 注意:Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包,下载好放在/op…...
vuejs: 解决浏览器切换页面后setInterval计时器停止执行的问题
setInterval定时器是基于当前页面的,如果切换到其他页面,定时器会被暂停。这是浏览器的一种优化措施,以减少不必要的性能消耗。 如果需要在切换页面后继续执行定时器,可以使用Web Worker,它是在后台运行的程序…...

基于Web邮箱的邮件系统
题目: 基于web的邮件收发系统设计与实现 摘 要 计算机的应用已经越来越广泛,它从产生到完善已经差不多有50年左右的历史,更新换代速度非常快,在人们生活、工作中都发挥了不可替代的作用,几乎所有行业都离不开它,已经成…...

【Java学习笔记】75 - 算法优化入门 - 马踏棋盘问题
一、意义 1.算法是程序的灵魂,为什么有些程序可以在海量数据计算时,依然保持高速计算? 2.拿老韩实际工作经历来说,在Unix下开发服务器程序,功能是要支持上千万人同时在线,在上线前, 做内测,一…...

第二十章 多线程
20.2创建线程 20.2.1继承Thread类 Thread类是Java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建议Thread实例。 public class ThreadTest extedns Thread{} run方法格式: public void run(){} 20.1让线程循…...
vue2使用npm依赖包导出xlsx文件
1.下载依赖npm i xlsx 2.在根目录utils新建mergeXlxs.js /****/ import { utils, writeFile } from "xlsx";export default function mergeHeader(headers, data, datamerges, defaultTitle) {const ws utils.book_new();utils.sheet_add_aoa(ws, headers);//这里…...

java--多态
1.什么是多态 多态是在继承/实现的情况下的一种现象,表现为:对象多态、行为多态。 2.多态的具体代码体现 编译看左边,运行看右边 3.多态的前提 有继承/实现关系;存在父类引用子类对象;存在方法重写 4.多态的一个注…...
知识图谱06——将pdf中的表格(文字形式)保存至csv中
使用ubuntu22.04,anaconda 由于装环境装了一阵子,不确定装了哪些包了 可能的环境安装 conda install -c conda-forge pymupdf conda install -c conda-forge camelot-py conda install pandas #或者 pip install PyMuPDF pip install camelot-py[all] …...

一文教你使用Swagger---适合新手小白(结合实战)
1.什么是Swagger Swagger----在线自动生成接口文档,是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,可用于接口的文档在线自动生成以及功能测试。 2.Swagger与OpenAPI OpenAPI规范OpenAPI Specification以前叫…...

VC++调试QT源码
环境:vs2017 qt 5.14.2 1:首先我们需要选择我们的源码路径 右键解决方案-》属性-》通用属性-》调试源文件-》在窗口内添加QT下载时的源码**.src文件夹**,这里最好把源码 D:\software\QT\path\5.14.2\Src 源文件里面的Src文件做一个备份出来…...

058-第三代软件开发-文件Model
第三代软件开发-文件Model 文章目录 第三代软件开发-文件Model项目介绍文件Model 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language)…...

【领域驱动设计 学习目标及大纲】从CRUD到架构设计
从2018年至今,已工作了5年有余,回望这5年的工作历程,虽然一直在学习、一直在积累,但其实都在术的层面上停留,也就是具体的技术点。这5年多的时间里其实也不是没有窥道的想法: 一次是2018年刚工作的时候&am…...

asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)
文章目录 alsa设备文件/dev/snd//sys/class/sound/proc/asoundalsa-lib示例1alsa-utilsalsa-toolsalsa-plugins参考alsa设备文件 /dev/snd/ alsa设备文件目录位于,/dev/snd,如下所示 root@xboard:~#ls /dev/snd -l total 0 drwxr-xr-x 2 root root 60 Nov 6 2023 …...

文档理解的新时代:LayOutLM模型的全方位解读
一、引言 在现代文档处理和信息提取领域,机器学习模型的作用日益凸显。特别是在自然语言处理(NLP)技术快速发展的背景下,如何让机器更加精准地理解和处理复杂文档成为了一个挑战。文档不仅包含文本信息,还包括布局、图…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...