网络编程 websocket
1. HTTP
截至 2024 年,HTTP(HyperText Transfer Protocol)已经发展到 HTTP/3 版本。
各个版本的简介:
- HTTP/0.9(1991年):
- 最初的 HTTP 版本,非常简单,仅支持 GET 方法和传输纯文本内容,没有头部信息,也不支持状态码。
- HTTP/1.0(1996年):
- 引入了 HTTP 请求和响应的头部,支持更多的 HTTP 方法(如 POST、HEAD)。
- 每次请求都需要新建一个 TCP 连接,传输效率较低。
- HTTP/1.1(1997年):
- 改进了性能,支持持久连接(即在同一个 TCP 连接上传输多个请求和响应)。
- 增加了对缓存、压缩、内容协商等功能的支持,提升了性能和扩展性。
- HTTP/2(2015年):
- 采用了二进制格式(而非 HTTP/1.1 的纯文本格式),大大提高了传输效率。
- 支持多路复用,允许多个请求和响应并发地在同一连接上传输,减少了延迟和头部开销。
- 支持头部压缩,减少了头部信息带来的开销。
- HTTP/3(2018年开始草案,2022年标准化):
- 基于 QUIC 协议(UDP 上的一种传输协议),大幅减少了连接建立时间和网络传输中的延迟问题。
- 相比于 HTTP/2 的 TCP 连接,HTTP/3 的 QUIC 基于 UDP,使得即使网络不稳定也能更好地保持连接,并提升了传输效率。
- 提供了更好的安全性和性能,尤其是在移动网络和无线网络环境下效果更好。
主要特性对比:
版本 | 特点 | 传输方式 |
---|---|---|
HTTP/1.0 | 每个请求创建一个新的连接,传输效率低。 | 基于 TCP |
HTTP/1.1 | 支持持久连接和管道化请求,性能提高。 | 基于 TCP |
HTTP/2 | 二进制传输,多路复用,头部压缩。 | 基于 TCP |
HTTP/3 | 基于 QUIC 协议,减少延迟,多路复用,适应性更强,传输效率更高。 | 基于 QUIC(UDP) |
HTTP/3 是目前最新的 HTTP 版本,并且逐步在全球范围内得到广泛应用,尤其是在现代浏览器和大型互联网服务中得到了支持。
2. HTTP vs HTTPS
HTTP(HyperText Transfer Protocol)和 HTTPS(HyperText Transfer Protocol Secure)是两种用于网络通信的协议。它们的核心区别在于数据传输的安全性。以下是 HTTP 和 HTTPS 之间的主要区别:
1. 安全性:
- HTTP:是一种不安全的协议,所有传输的数据都是明文的。任何人都可以在传输过程中截获并读取数据。HTTP 不提供加密、身份验证或数据完整性保护。
- HTTPS:通过使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)对数据进行加密,确保传输的数据是安全的。即使数据在传输中被截获,也无法被解读。此外,HTTPS 还通过数字证书来验证服务器的身份,确保数据传输的目标是合法的服务器。
2. 数据加密:
- HTTP:不加密数据,传输的内容(如用户名、密码、表单数据等)都是明文的,容易受到中间人攻击(Man-in-the-Middle Attack)。
- HTTPS:使用对称加密和非对称加密相结合来加密传输数据,确保数据的机密性和完整性。客户端和服务器之间的通信是加密的,外部无法窥探或篡改数据。
3. 端口号:
- HTTP:默认使用端口号 80 进行通信。
- HTTPS:默认使用端口号 443 进行通信。
4. SSL/TLS 证书:
- HTTP:不需要 SSL/TLS 证书,通信是直接的,没有安全认证。
- HTTPS:必须有有效的 SSL/TLS 证书才能建立加密连接。证书由受信任的证书颁发机构(CA)签发,用于验证服务器身份,确保用户访问的是合法的服务器,而不是伪造的网站。
5. 性能开销:
- HTTP:由于不进行加密操作,通信开销较小,性能相对较高。
- HTTPS:在通信过程中需要进行加密和解密操作,涉及 SSL/TLS 握手和证书验证,因此会有一定的性能开销。不过,随着硬件和技术的进步,HTTPS 的性能开销已大幅降低,现代应用中这方面的影响已变得较小。
6. SEO (Search Engine Optimization Impact)影响:
- HTTP:搜索引擎(如 Google)对使用 HTTP 的网站的排名可能较低,因为 HTTP 不安全,影响用户的信任感。
- HTTPS:搜索引擎更倾向于提升使用 HTTPS 的网站排名,因此采用 HTTPS 对 SEO 友好。Google 等搜索引擎明确表示,使用 HTTPS 是一种排名信号。
7. 信任与浏览器支持:
- HTTP:现代浏览器对使用 HTTP 的网站显示“不安全”警告,尤其是在涉及敏感信息(如支付、登录)时,用户通常不愿在不安全的 HTTP 网站上提交数据。
- HTTPS:浏览器对使用 HTTPS 的网站显示“安全”锁标志,用户可以信任与网站的通信是安全的。尤其在电子商务和在线银行业务等场景下,HTTPS 是必须的。
8. 防止篡改和钓鱼攻击:
- HTTP:由于数据是明文传输的,因此容易被中途篡改或截获,也容易被用于钓鱼攻击,因为用户无法确定服务器的真实性。
- HTTPS:通过数字证书验证服务器身份,防止钓鱼网站冒充合法网站。此外,加密确保了数据在传输过程中不会被篡改或伪造。
9. 成本:
- HTTP:不需要证书,使用成本为零。
- HTTPS:通常需要购买 SSL/TLS 证书(尽管现在有一些免费证书提供商,如 Let’s Encrypt)。为网站配置 HTTPS 可能需要一些额外的配置工作和成本。
总结:
- HTTP 是不安全的明文通信协议,适合不涉及敏感信息的简单数据传输,但随着网络安全意识的提高,使用 HTTP 的场景越来越少。
- HTTPS 是安全的通信协议,通过加密和身份验证来保护数据传输,适合所有需要保护用户隐私和敏感信息的网站,尤其是涉及支付、登录等敏感操作的场景。
现代网络上,HTTPS 已经成为标准,甚至浏览器和搜索引擎也强烈推荐或要求使用 HTTPS,以确保用户的数据安全。
3. POST vs GET
在 HTTP 协议中,POST 请求和 GET 请求是两种最常用的请求方法。它们之间有几个重要的区别,主要体现在数据传输方式、用途和安全性等方面。
1. 请求的用途:
- GET 请求:
- 用于从服务器获取资源或数据。
- 常用于请求静态内容,如网页、图片、文件等,目的是获取数据,而不修改服务器端的数据。
- GET 请求是幂等的,也就是说,多次发送同样的 GET 请求,结果应该是相同的,不会对服务器的状态产生副作用。
- POST 请求:
- 用于将数据发送到服务器,通常用于创建或更新资源。
- 常用于提交表单数据、上传文件等需要在服务器端进行数据处理的操作。
- POST 请求不是幂等的,多次发送 POST 请求可能会导致不同的结果(例如,多次提交相同的表单可能会创建多个记录)。
2. 数据传输方式:
- GET 请求:
- 数据通过 URL 的查询字符串传递,也就是通过 URL 的一部分发送给服务器。
- 例如:https://example.com/api?name=John&age=30
- URL 的长度有限,查询字符串通常用于传递少量的非敏感数据。
- POST 请求:
- 数据放在请求体(body)中,而不是通过 URL 传递。因此,POST 请求没有大小限制,能够传递大量数据。
- POST 请求通常用于提交表单数据、JSON、XML、文件等复杂或大规模数据。
3. 数据的可见性和安全性:
- GET 请求:
- 由于数据包含在 URL 中,所有发送的数据都在 URL 上显示。这意味着 GET 请求的数据会出现在浏览器的地址栏中,且可能会被浏览器缓存或记录在浏览历史中。
- 因此,GET 请求不适合传递敏感信息,如密码、信用卡号等。
- POST 请求:
- 数据被放在请求体中,不会显示在 URL 中,因此比 GET 请求更适合传递敏感数据。
- 但是,POST 请求本身并不比 GET 请求更安全,因为数据仍然可以被拦截。为了真正的安全性,应该通过 HTTPS 加密传输数据。
4. 缓存机制:
- GET 请求:
- 通常可以被浏览器缓存。服务器也可以对 GET 请求进行缓存,以提高响应速度。
- POST 请求:
- 不会被浏览器自动缓存。POST 请求每次都会重新发送,并且默认情况下不允许缓存。
5. 对服务器的影响:
- GET 请求:
- 通常只用于读取数据,不会对服务器上的资源进行修改。GET 请求可以视为只读操作。
- POST 请求:
- 通常用于发送数据到服务器并进行资源的创建、修改或删除,因此属于写操作,会对服务器上的数据产生影响。
6. URL 长度限制:
- GET 请求:
- 因为数据是通过 URL 传递的,GET 请求的 URL 长度有限(取决于浏览器和服务器),通常不能超过 2048 字符。
- POST 请求:
- 没有这种限制,因为数据通过请求体传输,可以传递大量数据。
7. 幂等性:
- GET 请求:
- 幂等的,多次执行相同的 GET 请求,结果相同,不会对服务器状态产生影响。
- POST 请求:
- 非幂等的,多次发送同样的 POST 请求可能会导致不同的结果。例如,连续多次提交一个购买订单表单可能会生成多个订单。
8. 跨域请求限制:
- GET 请求:
- 跨域请求时,GET 请求会有一定的限制,但通常只要服务器支持,跨域 GET 请求可以正常工作。
- POST 请求:
- 跨域 POST 请求需要更多的跨域资源共享(CORS)配置,因为浏览器会对跨域 POST 请求进行更多的检查,以确保安全性。
总结:
- GET 请求:主要用于从服务器获取数据,数据通过 URL 传递,适用于查询、只读操作。数据长度有限,不适合传递敏感信息。
- POST 请求:用于向服务器提交数据,数据通过请求体传递,适用于创建或修改资源。可以传递大量数据,并且不显示在 URL 中。
4. TCP 三次握手和四次挥手
TCP 三次握手和四次挥手是用于建立和关闭 TCP 连接的两种机制,确保连接的建立与释放可靠和有序。下面是它们的详细解释:
一、TCP 三次握手(Three-way Handshake)
TCP 是一种面向连接的协议,在两个设备之间传输数据前,需要先建立一个可靠的连接。三次握手是指客户端和服务器在通信前要相互确认准备状态,确保双方都能发送和接收数据。
三次握手过程:
- 第一次握手(客户端发送 SYN):
- 客户端向服务器发送一个 SYN(Synchronize) 包,用来请求建立连接。
- SYN 包中包含客户端的初始序列号 Seq=X,标记客户端将用于数据传输的序列号。
- 客户端进入 SYN-SENT 状态。
- 第二次握手(服务器回应 SYN-ACK):
- 服务器收到客户端的 SYN 请求后,向客户端回应一个 SYN-ACK 包,表示接收到请求并同意建立连接。
- SYN-ACK 包中包含服务器的初始序列号 Seq=Y,同时对客户端的 SYN 包中的序列号 X 做确认 Ack=X+1。
- 服务器进入 SYN-RECEIVED 状态。
- 第三次握手(客户端回应 ACK):
- 客户端收到服务器的 SYN-ACK 包后,向服务器发送一个 **ACK(Acknowledgement)**包,确认已收到服务器的响应,并表示可以开始传输数据。
- ACK 包中包含客户端对服务器序列号的确认 Ack=Y+1。
- 连接建立,客户端进入 ESTABLISHED 状态,服务器也进入 ESTABLISHED 状态。
总结:
三次握手的目的是确认客户端和服务器的发送和接收能力,并确保连接的可靠性。建立完连接后,双方即可开始数据传输。
二、TCP 四次挥手(Four-way Handshake)
当数据传输完成后,TCP 需要通过四次挥手来释放连接,确保双方都正确关闭通信。
四次挥手过程:
- 第一次挥手(客户端发送 FIN):
- 当客户端完成数据传输后,它会发送一个 FIN(Finish) 包,表示不再发送数据,但仍然可以接收数据。
- 客户端进入 FIN-WAIT-1 状态。
- 第二次挥手(服务器回应 ACK):
- 服务器收到客户端的 FIN 包后,向客户端发送一个 ACK 包,表示确认已收到客户端的 FIN 请求,但服务器可能还有未发送完的数据。
- 服务器进入 CLOSE-WAIT 状态,客户端进入 FIN-WAIT-2 状态。
- 第三次挥手(服务器发送 FIN):
- 服务器确认所有数据发送完成后,向客户端发送一个 FIN 包,表示也不再发送数据,准备关闭连接。
- 服务器进入 LAST-ACK 状态。
- 第四次挥手(客户端回应 ACK):
- 客户端收到服务器的 FIN 包后,向服务器发送一个 ACK 包,确认收到服务器的 FIN 请求。
- 客户端进入 TIME-WAIT 状态,此时要等待一段时间(通常是 2 倍的最大报文段生存时间),以确保服务器接收到了 ACK 包,然后彻底关闭连接。
- 服务器接收到 ACK 包后,立即进入 CLOSED 状态,连接正式关闭。
总结:
四次挥手的目的是确保双方都完成了数据传输,并有序地关闭连接,防止任何数据丢失或被中途截断。
为什么是三次握手,四次挥手?
- 三次握手 是为了确保双方的发送和接收能力正常。客户端和服务器各自需要确认自己能发送数据并能接收对方的确认消息,因此需要三次通信来完成这个过程。
- 四次挥手 是因为 TCP 是全双工通信(即双方可以同时发送和接收数据),因此每一方都需要独立关闭自己的发送数据通道,这就需要分别发出 FIN 和 ACK,形成四次通信。
图示总结:
三次握手:
客户端 服务器SYN ------------------> SYN-ACKACK <------------------
四次挥手:
客户端 服务器FIN ------------------> ACKFINACK <------------------
总结:
- 三次握手 用于建立连接,保证通信的可靠性。
- 四次挥手 用于关闭连接,确保双方都完成数据传输并有序断开。
5. TCP vs UDP
TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是两种常用的传输层协议,它们的主要区别在于数据传输的可靠性、顺序性、连接性等方面。以下是 TCP 和 UDP 之间的详细区别:
1. 连接与无连接:
- TCP:面向连接的协议。在传输数据之前,TCP 需要通过三次握手来建立连接,确保客户端和服务器之间的通信通道已准备好。数据传输完成后,还需要通过四次挥手来关闭连接。
- UDP:无连接的协议。在传输数据之前,UDP 不需要建立连接,直接发送数据。这意味着 UDP 没有建立连接的开销,因此传输速度更快,但可靠性较低。
2. 数据传输的可靠性:
- TCP:提供可靠的数据传输。它通过确认机制、超时重传、流量控制和拥塞控制来确保数据包的正确传输和接收。TCP 会确认每个数据包的到达,并且如果某个数据包丢失,TCP 会重新发送。
- UDP:不保证可靠性。UDP 只负责将数据包发送出去,不关心数据包是否到达目的地,也不确认数据的接收情况。没有重传机制,也没有流量或拥塞控制。
3. 有序性:
- TCP:保证数据按顺序到达。TCP 协议会给每个数据包分配一个序列号,并确保数据包按照发送的顺序到达接收方。即使某些数据包延迟,TCP 也会重新排序,确保顺序正确。
- UDP:不保证数据包的顺序。由于 UDP 是无连接的协议,数据包的顺序可能会被打乱,接收方无法确保数据包按发送顺序到达。
4. 传输速度:
- TCP:由于需要建立连接、确认数据接收、进行流量和拥塞控制,因此 TCP 的传输速度相对较慢。但它的可靠性使其适用于对数据完整性要求较高的场景。
- UDP:由于没有连接建立、确认机制和流量控制,UDP 传输速度较快,适合需要快速传输、但对数据完整性要求不高的场景。
5. 头部开销:
- TCP:TCP 的头部较大,通常有 20 个字节的头部信息。TCP 头部包含序列号、确认号、窗口大小、标志位等信息,用于实现数据传输的可靠性。
- UDP:UDP 的头部较小,只有 8 个字节,包含源端口、目的端口、数据长度和校验和。由于头部较小,UDP 的开销更低,适合传输效率要求高的场景。
6. 流量控制与拥塞控制:
- TCP:具备流量控制和拥塞控制功能。TCP 会根据网络状况动态调整传输速率,防止网络拥堵,确保发送方不会过度发送数据导致网络堵塞。
- UDP:没有流量控制和拥塞控制机制。UDP 不关心网络状况,数据包一旦发送,不会进行速率调整,可能导致网络拥塞。
7. 适用场景:
- TCP:适用于对数据传输可靠性和顺序性要求较高的场景。例如:
- 网页浏览(HTTP/HTTPS):需要确保所有网页资源完整传输。
- 文件传输(FTP):要求文件完整、准确地到达。
- 电子邮件(SMTP、IMAP):邮件内容必须完整传输。
- UDP:适用于对传输速度要求高、但对数据完整性和顺序性要求不高的场景。例如:
- 视频会议、实时流媒体(如 Zoom、YouTube、Twitch):对延迟要求敏感,允许少量数据丢失。
- 在线游戏:游戏中的动作需要快速传递,短暂的数据丢失不会影响整体体验。
- DNS 查询:查询结果通常很小,并且如果丢失可以快速重新发送。
8. 流量模式:
- TCP:是面向流的协议,数据作为无边界的字节流传输,发送方和接收方之间的数据传输通过 TCP 管道进行,数据流可以持续不断地发送。
- UDP:是面向消息的协议。每个 UDP 数据包是独立的消息单元,不需要保持数据的持续性,也不会合并数据包。因此,每个数据包都是独立的、完整的。
9. 使用的协议:
- TCP:常用于需要高可靠性的应用层协议,如:
- HTTP/HTTPS(网页浏览)
- FTP(文件传输)
- SMTP(电子邮件)
- SSH(安全登录)
- UDP:常用于需要快速传输的应用层协议,如:
- DNS(域名解析)
- DHCP(动态主机配置协议)
- TFTP(简单文件传输协议)
- RTP(实时传输协议,用于视频/音频流)
总结对比表:
特性 | TCP | UDP |
---|---|---|
是否连接 | 面向连接 | 无连接 |
可靠性 | 提供可靠传输,确保数据完整性 | 不提供可靠传输,可能丢包 |
有序性 | 确保数据按顺序到达 | 不保证数据包顺序 |
传输速度 | 较慢(由于需要握手、确认等) | 较快(无连接、无确认机制) |
头部开销 | 较大(20 字节) | 较小(8 字节) |
流量控制和拥塞控制 | 有 | 无 |
适用场景 | 需要数据完整性和可靠性的场景 | 需要快速传输、允许丢包的场景 |
总结:
- TCP 提供连接性、可靠性和有序性,适用于需要确保数据完整和顺序的应用,但传输速度相对较慢,开销较大。
- UDP 传输速度快,头部开销小,适用于对速度要求高、但对可靠性要求不高的场景,如实时通信和流媒体等。
相关文章:

网络编程 websocket
1. HTTP 截至 2024 年,HTTP(HyperText Transfer Protocol)已经发展到 HTTP/3 版本。 各个版本的简介: HTTP/0.9(1991年): 最初的 HTTP 版本,非常简单,仅支持 GET 方法…...

【JDK17 | 5】Java 17 深入剖析:新的随机数生成器 API
引言 在 Java 17 中,新的随机数生成器 API 作为一个重要特性被引入,旨在提供更灵活和高效的随机数生成方案。新的 API 不仅支持多种生成算法,还改善了随机数生成的性能,适应了现代开发的需求。在本篇文章中,我们将深入…...

剪切走的照片:高效恢复与预防策略
一、剪切走的照片现象描述 在日常的数字生活中,照片作为记录生活点滴、工作成果的重要载体,其重要性不言而喻。然而,有时我们可能会遇到一种令人头疼的情况:原本打算通过剪切操作将照片移动到另一个位置,却意外地发现…...

基于XGBoost的结核分枝杆菌的耐药性预测研究【多种机器学习】
1. 绪论 目录 1. 绪论 1.1研究背景及意义 1.2国内外研究现状 1.2.1国内研究现状 1.2.2国外研究现状 1.3研究目的 2. 相关技术概念 2.1结核分枝杆菌的耐药性机制 2.2机器学习与系统发育法相结合 2.3XGBoost和随机森林算法的优势和应用 3. 模型设计 3.1数据准备与预…...

【C++差分数组】3229. 使数组等于目标数组所需的最少操作次数|2066
本文涉及知识点 C差分数组 LeetCode3229. 使数组等于目标数组所需的最少操作次数 给你两个长度相同的正整数数组 nums 和 target。 在一次操作中,你可以选择 nums 的任何子数组,并将该子数组内的每个元素的值增加或减少 1。 返回使 nums 数组变为 tar…...

浅谈PyTorch中的DP和DDP
目录 1. 引言2. PyTorch 数据并行(Data Parallel, DP)2.1 DP 的优缺点2.2 DP 实现代码示例 3. PyTorch 分布式数据并行(Distributed Data Parallel, DDP)3.1 DDP 的优缺点3.2 分布式基本概念3.3 DDP 的应用流程3.5 DDP 实现代码示…...

在Windows上利用谷歌浏览器进行视频会议和协作
随着远程工作和在线教育的普及,使用谷歌浏览器在Windows上进行视频会议和协作变得越来越常见。本文将为您提供一个详细的教程,教您如何在Windows上利用谷歌浏览器进行视频会议和协作,同时解决一些常见的问题。(本文由https://goog…...

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题
VMware Fusion 13.6.1 发布下载,修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/ 查看最新…...

P9751 [CSP-J 2023] 旅游巴士
P 9751 P9751 P9751 部分分思路 题目要求时间必须是 k k k 的非负整数倍,所以想到了升维。这样就变成了一道分层图最短路的题目。用 BFS 算法可以拿到 A i 0 A_i0 Ai0 的 35 35 35 分。 满分思路 其实部分分的思路已经很接近正解了,想要拿到满…...

【Linux】man手册安装使用
目录 man(manual,手册) 手册安装: 章节区分: 指令参数: 使用场景: 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…...

mysql学习教程,从入门到精通,SQL处理重复数据(39)
1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据(以SQL Server为例)”的背景和原理的详细解释: 1.1、背景 在数据库管理中,数据重复是一个常见的问题。重复数据可能由于多种原因产生,如数据录入错误、数据…...

mapbox解决wmts请求乱码问题
贴个群号 WebGIS学习交流群461555818,欢迎大家 事故现场 如图所示,wmts请求全是乱码,看起来像是将一个完整的请求拆成一个一个的字母了,而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…...

《C++职场中设计模式的学习与应用:开启高效编程之旅》
在 C职场中,设计模式是提升代码质量、增强程序可维护性和可扩展性的强大武器。掌握并正确应用设计模式,不仅能让你在工作中更加得心应手,还能为你的职业发展增添有力的砝码。那么,如何在 C职场中学习和应用设计模式呢?…...

Maya动画--基础约束
005-基础约束02_哔哩哔哩_bilibili 父子约束 移动圆环,球体会跟着移动,并回到初始的相对位置 不同物体间没有层级关系 明确子物体与父物体间的关系 衣服上的纽扣 法线约束 切线约束 碰到中心时会改变方向...

腾讯云License 相关
腾讯云视立方 License 是必须购买的吗? 若您下载的腾讯云视立方功能模块中,包含直播推流(主播开播和主播观众连麦/主播跨房 PK)、短视频(视频录制编辑/视频上传发布)、终端极速高清和腾讯特效功能模块&…...

开放式耳机什么品牌最好?十大超好用开放式耳机排名!
由于长时间使用传统入耳式耳机可能会对耳道健康带来潜在的负面影响,越来越多的用户倾向于选择开放式耳机,这种设计不侵入耳道。它有助于降低耳内湿度、减少细菌滋生,以及缓解耳道因封闭而过热的不适。但是大部分人还是不知道怎么选择开放式耳…...

基于Zynq SDIO WiFi移植二(支持2.4/5G)
1 SDIO设备识别 经过编译,将移植好的uboot、kernel、rootFS、ramdisk等烧录到Flash中,上电启动,在log中,可看到sdio设备 [ 1.747059] mmc1: queuing unknown CIS tuple 0x01 (3 bytes) [ 1.761842] mmc1: queuing unknown…...

Spring Boot敏感数据动态配置:深入实践与安全性提升
在构建Spring Boot应用的过程中,敏感数据的处理与保护是至关重要的。传统上,这些敏感数据(如数据库密码、API密钥、加密密钥等)可能被硬编码在配置文件中,这不仅增加了泄露的风险,也限制了配置的灵活性和可…...

软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)
文章目录 一、概念数据库模型二、结构数据库模型三、三级模式四、两级映像五、关系模式基本术语六、关系模式七、关系的数学定义八、数据定义语言九、SQL访问控制十、视图十一、索引十二、关系模式十三、范式十四、数据库设计十五、事物管理(ACID)十六、…...

AI 概念大杂烩
目录 介绍 数据挖掘 / 机器学习 / 深度学习 一、数据挖掘(Data Mining) 1. 定义 2. 目标 3. 常用算法 二、机器学习(Machine Learning) 1. 定义 2. 目标 3. 常用算法 三、深度学习(Deep Learning࿰…...

Composer和PHP有什么关系
Composer是PHP的一个依赖管理工具,以下是对Composer及其与PHP关系的详细解释: Composer简介 核心功能:Composer的核心思想是“依赖管理”,它能够自动下载和安装项目所依赖的库、框架或插件等。这些依赖项可以是PHP本身的库文件&…...

【PGCCC】在 Postgres 上构建图像搜索引擎
我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如,我可以拍一双鞋或其他产品的照片,然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目,只要有合适的工具。如果我们可以将问题定义为…...

性能测试之性能问题分析
开始性能测试前需要了解的内容: 1、项目具体需求。 2、指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行…...

错过了A股,别再错过AI表情包!N款变现攻略,你选哪个?
本文背景 据 Swyft Media 统计,全世界每天各类聊天 app 发送的表情符号有 60 多亿,我们国家每天表情包发送量大概 6 亿次。 表情包简直就是个大淘金池,最近用 AI 做表情包也挺火。所以今天给大家讲讲一个用 AI 做表情包变现的项目。 以前没…...

SpringBoot驱动的美发沙龙管理系统:优雅地管理您的业务
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理美发门店管理系统的相关信息成为必然。开发…...

prometheus + alertmanager 搭建告警通知
prometheus 下载prometheus-2.53.2 prometheus.yml文件修改 global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:- 127.0.0.1:9093rule_files:- "rules/rule-*.yml"scrape_configs:- job_name: "promet…...

爬虫案例——爬取腾讯社招
案例需求: 1.爬取腾讯社招的数据(搜索 | 腾讯招聘)包括岗位名称链接时间公司名称 2.爬取所有页(翻页) 3.利用jsonpath进行数据解析 4.保存数据:txt文本形式和excel文件两种形式 解析: 1.分…...

VAS1800Q奇力科技线性芯片电荷泵热处理
高效恒流LED驱动器——VAS1800Q在汽车应用中的卓越表现 VAS1800Q是一款专为汽车应用设计的高效恒流LED驱动器。它具备多个显著特点,不仅提升了LED驱动效率,还大大减少了热量的产生,使其在汽车照明领域中具有极高的应用价值。本文将详细介绍VA…...

SQL Inject-基于报错的信息获取
常用的用来报错的函数 updatexml() : 函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。 extractvalue(): 函数也是MYSQL对XML文档数据进行查询的XPATH函数。 floor(): MYSQL中用来取整的函数。 思路: 在MySQL中使用一些指定的函数来制造报错&am…...

redistemplate宇jedis区别
redistemplate是Spring Data Redis提供的一个模板类,用于简化Redis操作的代码编写。它提供了常见的操作方法,如存储、读取、删除等,可以更方便地操作Redis数据库。 而Jedis是Redis官方推荐的Java客户端库之一。它提供了丰富的功能和灵活的接…...