HTTP 与 HTTPS 协议:从基础到安全强化
引言
互联网的消息是如何传递的?
是在路由器上不断进行跳转

IP的目的是在寻址


HTTP 协议:互联网的基石
定义
HTTP(英文:HyperText Transfer Protocol,缩写:HTTP),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。它就像是互联网世界的 “快递规则”,规定了从万维网服务器传输超文本到本地浏览器的传送方式,详细定义了客户端和服务器之间数据交互的格式和规则。正是有了 HTTP 协议,我们才能顺畅地从服务器获取网页内容,让丰富多彩的网页呈现在我们眼前。
工作原理
- 连接建立:当我们在浏览器地址栏输入一个网址并按下回车键,客户端(浏览器)就会向服务器发送请求,尝试建立连接。这个过程就如同打电话时先拨号码等待对方接听。
- 发送请求:客户端通过 HTTP 协议发送请求消息,其中包含请求方法(常见的有 GET、POST 等)、请求头以及可能存在的请求体。请求方法告诉服务器要执行的操作,比如 GET 用于获取资源,POST 用于提交数据。请求头则携带了许多附加信息,例如
User - Agent,它会告知服务器我们使用的浏览器类型和版本,就像在快递包裹上贴上寄件人的详细信息。而请求体,对于 POST 请求来说,会存放要提交给服务器的数据,如用户注册时填写的用户名、密码等表单数据。 - 服务器响应:服务器接收到请求后,就像快递员收到包裹后进行处理。它会根据请求内容进行一系列操作,然后生成响应消息。响应消息包括响应状态码,比如 200 表示请求成功,服务器成功返回了我们需要的资源;404 则表示未找到请求的资源,就好像快递员找不到收件地址一样。同时,响应消息还包含响应头和响应体。响应头会说明响应数据的类型(如
Content - Type为text/html表示返回的是 HTML 网页内容)等信息,而响应体则是服务器返回给我们的实际数据,比如网页的 HTML 代码。 - 连接关闭:在数据传输完成后,连接通常会关闭。不过,为了提高效率,在某些情况下,连接也可以保持打开状态,以便客户端能够快速进行后续请求,而无需再次建立连接。
由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

以下是 HTTP 请求/响应的步骤:
-
客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.luffycity.com。 -
发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 -
服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。 -
释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求; -
客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
特点
- 无状态:HTTP 协议本身是无状态的,这意味着服务器不会记住不同请求之间客户端的状态或信息。每一个请求都是独立的个体,就好像快递员每次送快递都不记得上一次给这个地址送过什么。例如,当我们在一个电商网站浏览商品,从一个页面跳转到另一个页面时,服务器并不会自动记住我们之前浏览过哪些商品,除非我们通过其他方式(如 Cookie)来记录这些信息。
- 明文传输:数据在传输过程中以明文形式发送,这就好比我们在一个透明的管道中传递信件,任何人都可以轻易地看到信件的内容。这种特性使得数据容易被窃取、篡改或监听。网络中的不法分子可以通过一些手段截获我们传输的数据,获取我们的账号密码、信用卡信息等敏感内容,还可能恶意篡改数据,导致我们获取到错误的信息。
- 应用场景:由于其简单高效,HTTP 协议广泛应用于网页浏览、数据获取等场景。我们日常访问新闻网站、查看博客文章等,都是通过 HTTP 协议来实现的。它就像互联网世界的 “通用语言”,让我们能够便捷地获取各种信息。
HTTP请求方法:
GET
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除Request-URI所标识的资源。
TRACE
回显服务器收到的请求,主要用于测试或诊断。
OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
HTTP 协议:互联网的基石
定义
HTTP,即超文本传输协议,它就像是互联网世界的 “快递规则”,规定了从万维网服务器传输超文本到本地浏览器的传送方式,详细定义了客户端和服务器之间数据交互的格式和规则。正是有了 HTTP 协议,我们才能顺畅地从服务器获取网页内容,让丰富多彩的网页呈现在我们眼前。
工作原理
- 连接建立:当我们在浏览器地址栏输入一个网址并按下回车键,客户端(浏览器)就会向服务器发送请求,尝试建立连接。这个过程就如同打电话时先拨号码等待对方接听。
- 发送请求:客户端通过 HTTP 协议发送请求消息,其中包含请求方法(常见的有 GET、POST 等)、请求头以及可能存在的请求体。请求方法告诉服务器要执行的操作,比如 GET 用于获取资源,POST 用于提交数据。请求头则携带了许多附加信息,例如
User - Agent,它会告知服务器我们使用的浏览器类型和版本,就像在快递包裹上贴上寄件人的详细信息。而请求体,对于 POST 请求来说,会存放要提交给服务器的数据,如用户注册时填写的用户名、密码等表单数据。 - 服务器响应:服务器接收到请求后,就像快递员收到包裹后进行处理。它会根据请求内容进行一系列操作,然后生成响应消息。响应消息包括响应状态码,比如 200 表示请求成功,服务器成功返回了我们需要的资源;404 则表示未找到请求的资源,就好像快递员找不到收件地址一样。同时,响应消息还包含响应头和响应体。响应头会说明响应数据的类型(如
Content - Type为text/html表示返回的是 HTML 网页内容)等信息,而响应体则是服务器返回给我们的实际数据,比如网页的 HTML 代码。 - 连接关闭:在数据传输完成后,连接通常会关闭。不过,为了提高效率,在某些情况下,连接也可以保持打开状态,以便客户端能够快速进行后续请求,而无需再次建立连接。
特点
- 无状态:HTTP 协议本身是无状态的,这意味着服务器不会记住不同请求之间客户端的状态或信息。每一个请求都是独立的个体,就好像快递员每次送快递都不记得上一次给这个地址送过什么。例如,当我们在一个电商网站浏览商品,从一个页面跳转到另一个页面时,服务器并不会自动记住我们之前浏览过哪些商品,除非我们通过其他方式(如 Cookie)来记录这些信息。
- 明文传输:数据在传输过程中以明文形式发送,这就好比我们在一个透明的管道中传递信件,任何人都可以轻易地看到信件的内容。这种特性使得数据容易被窃取、篡改或监听。网络中的不法分子可以通过一些手段截获我们传输的数据,获取我们的账号密码、信用卡信息等敏感内容,还可能恶意篡改数据,导致我们获取到错误的信息。
- 应用场景:由于其简单高效,HTTP 协议广泛应用于网页浏览、数据获取等场景。我们日常访问新闻网站、查看博客文章等,都是通过 HTTP 协议来实现的。它就像互联网世界的 “通用语言”,让我们能够便捷地获取各种信息。
HTTP 与 HTTPS 的区别
- 安全性:HTTP 以明文传输数据,存在安全风险;而 HTTPS 通过加密技术,有效保护数据安全,安全性高。
- 端口:HTTP 默认使用 80 端口,而 HTTPS 默认使用 443 端口。端口就像是不同的通道,不同协议通过不同的端口进行数据传输。
- 证书:HTTP 不需要数字证书,而 HTTPS 需要服务器拥有数字证书,用于身份验证和加密通信。
- 性能:由于 HTTPS 需要进行加密和解密操作,相比 HTTP 会消耗更多的计算资源和时间,性能相对略低。但随着硬件和网络技术的发展,这种性能差异在大多数情况下并不明显。
- 兼容性:HTTP 兼容性较好,在各种设备和网络环境中都能广泛使用;HTTPS 在某些旧设备或环境中可能存在兼容性问题,但总体上兼容性也在不断提高。
- 成本:HTTP 成本较低,而 HTTPS 需要购买数字证书,增加了一定的成本。
与 HTTP/HTTPS 相关的其他重要概念
GET 和 POST 请求
- GET 请求
- 用途:主要用于从服务器获取数据,例如我们在浏览器中输入网址访问网页,就是通过 GET 请求获取网页内容;在搜索引擎中输入关键词进行搜索,也是使用 GET 请求将关键词发送给服务器,获取搜索结果。
- 特点:请求参数会附加在 URL 后面,以问号分隔,多个参数之间用 & 连接,如
https://example.com?param1=value1¶m2=value2。由于受限于 URL 的长度(不同浏览器对 URL 长度限制不同,一般在 2KB 到 8KB 左右),GET 请求的数据长度有限制。并且,因为参数暴露在 URL 中,安全性相对较低,容易被缓存、记录或窃取。比如,我们在浏览一些网站时,可能会发现浏览器地址栏中显示了我们搜索的关键词等参数,如果这些信息被不法分子获取,可能会导致隐私泄露。
- POST 请求
- 用途:常用于向服务器提交数据,像用户注册、登录、在电商网站中提交订单等操作,都需要使用 POST 请求将用户输入的数据发送给服务器。
- 特点:请求参数放在请求体中,不会显示在 URL 中,所以对数据长度没有像 GET 那样严格的限制。安全性相对较高,因为参数不直接暴露在 URL 中。但需要注意的是,如果传输过程没有加密(如在 HTTP 协议下),数据仍可能被窃取。
请求头、请求正文、响应头、响应正文
- 请求头:客户端向服务器发送请求时,请求头包含了许多附加信息。例如
User - Agent用于标识客户端的类型和版本,不同的浏览器(如 Chrome、Firefox)或移动应用在发送请求时,User - Agent的值会有所不同,服务器可以根据这个信息来优化响应内容,以适配不同的客户端。Accept则告知服务器客户端能接受的响应数据类型,比如客户端可以接受text/html格式的网页内容,也可以接受application/json格式的数据。Cookie信息也包含在请求头中,它可以让服务器识别用户身份,记录用户的一些状态信息。 - 请求正文:对于 POST 等请求,请求正文用于存放要提交给服务器的数据。比如在用户注册时,用户填写的用户名、密码等表单数据会被放在请求正文中发送给服务器。而 GET 请求一般没有请求正文,即使有也不会被服务器处理。
- 响应头:服务器在响应客户端请求时,响应头包含了许多有用的信息。
Content - Type说明了响应数据的类型,如text/html表示返回的是 HTML 网页内容,客户端可以根据这个信息正确地解析和显示数据。Set - Cookie用于在客户端设置 Cookie,服务器可以通过这个字段向客户端发送新的 Cookie 信息或更新已有的 Cookie。Content - Length则表示响应数据的长度,客户端可以根据这个信息来判断是否完整接收了数据。 - 响应正文:响应正文是服务器返回给客户端的实际数据内容。如果我们访问一个网页,响应正文可能就是网页的 HTML 代码,浏览器会根据这些代码来渲染出我们看到的网页页面。如果是一个数据接口请求,响应正文可能是 JSON 格式的数据,客户端可以根据这些数据进行相应的业务逻辑处理。


Cookie
- 定义:Cookie 是由服务器发送到用户浏览器并保存在本地的一小块数据。它就像是服务器给用户发放的一张 “身份卡片”,可以在用户下次访问同一服务器时被发送回服务器,用于识别用户身份、记录用户偏好等。例如,当我们在一个网站上登录后,服务器会通过设置 Cookie 来记住我们的登录状态,这样我们在后续访问该网站的其他页面时,就不需要再次登录。
- 获取 Cookie 的方法
- 客户端获取:在浏览器中,我们可以通过开发者工具的 “Application” 或 “Storage” 选项卡查看当前网站的 Cookie。在 JavaScript 中,可使用
document.cookie来获取当前页面相关的 Cookie 字符串,不过这个字符串是经过编码的,需要进一步解析才能获取到具体的 Cookie 信息。 - 服务器获取:不同的服务器端语言有不同的方法来获取客户端发送过来的 Cookie。例如,在 Python 的 Flask 框架中,可以通过
request.cookies来获取;在 Java 的 Servlet 中,可以通过HttpServletRequest对象的getCookies()方法来获取。一般来说,都是从请求对象中获取 Cookie 信息。
- 客户端获取:在浏览器中,我们可以通过开发者工具的 “Application” 或 “Storage” 选项卡查看当前网站的 Cookie。在 JavaScript 中,可使用
- Cookie 的优缺点
- 优点:Cookie 可以用于实现用户登录状态保持,让用户在访问网站的不同页面时无需重复登录,提升用户体验。同时,它还可以记录用户的浏览偏好,比如用户设置的字体大小、页面布局等,下次用户访问时可以直接应用这些设置。此外,将一些用户相关的信息存储在客户端的 Cookie 中,可以减轻服务器的负担。
- 缺点:Cookie 的存储容量有限,一般单个 Cookie 大小限制在 4KB 左右。并且,由于 Cookie 存储在客户端,存在安全性问题,容易被窃取或篡改。如果没有加密,不法分子获取到 Cookie 后,可能会冒充用户身份进行操作,导致用户信息泄露和安全风险。另外,Cookie 会随着每次请求发送到服务器,可能会增加不必要的网络流量,尤其是当 Cookie 数量较多或内容较大时。

Session
定义
Session 通常指会话,是在计算机网络通信中,特别是在 Web 应用程序中,用于跟踪用户与服务器之间交互状态的一种机制。它允许服务器在多个请求之间识别同一个用户,并存储与该用户相关的特定数据和状态信息,弥补了 HTTP 协议无状态的不足。
工作原理
- 创建 Session:当用户首次访问 Web 应用程序时,服务器会为该用户创建一个唯一的 Session 对象,并为其分配一个唯一的标识符(Session ID)。这个 Session ID 通常会通过响应头中的
Set-Cookie字段发送给客户端,客户端会将其存储在 Cookie 中,或者也可以通过 URL 重写等方式在后续请求中携带。 - Session 数据存储:服务器可以在 Session 对象中存储各种与用户相关的数据,例如用户登录信息、购物车内容、浏览历史等。这些数据会在服务器端的内存或其他存储介质中保存,直到 Session 过期或被主动销毁。
- Session 跟踪:在用户与 Web 应用程序的交互过程中,客户端每次向服务器发送请求时,都会在请求头中包含 Session ID。服务器根据这个 Session ID 来查找对应的 Session 对象,从而获取该用户的相关数据和状态信息,实现对用户会话的跟踪。
- Session 销毁:Session 有一定的生命周期,当用户长时间不活动(超过设置的超时时间),或者用户主动注销登录,又或者服务器出现故障重启等情况时,服务器会销毁该用户的 Session 对象,释放相关资源。
实现方式
- 基于 Cookie:这是最常见的方式。服务器通过
Set-Cookie响应头将 Session ID 发送给客户端,客户端将其存储在 Cookie 中。后续请求时,浏览器会自动在请求头中带上这个 Cookie,服务器据此识别用户的 Session。 - URL 重写:将 Session ID 附加在 URL 后面,例如
http://example.com/page?sessionId=12345。当用户点击链接或提交表单时,Session ID 会随着请求发送到服务器,服务器通过解析 URL 获取 Session ID 来识别用户。 - 隐藏表单字段:在 HTML 表单中添加一个隐藏字段,用于存储 Session ID。当表单提交时,Session ID 会作为表单数据一起发送到服务器。
与 Cookie 的区别
- 存储位置:Cookie 数据存储在客户端浏览器中,而 Session 数据存储在服务器端。
- 安全性:由于 Session 数据在服务器端,相对来说比 Cookie 更安全,不容易被客户端篡改。而 Cookie 存储在客户端,存在被恶意篡改或窃取的风险。
- 存储容量:Cookie 通常有大小限制,一般单个 Cookie 不超过 4KB,而 Session 存储在服务器端,理论上可以存储更多的数据,具体限制取决于服务器的配置和存储方式。
- 作用:Cookie 主要用于存储一些简单的用户偏好、登录状态等信息,并且可以在不同域名之间根据设置进行共享。Session 主要用于在服务器端跟踪用户的会话状态,存储与用户相关的复杂数据和状态信息,一般只在同一个 Web 应用程序内有效。
对称加密和非对称加密
- 对称加密原理
- 定义:对称加密是指加密和解密使用相同的密钥。就好像两个人使用同一把钥匙来锁和开一个箱子。
- 过程:发送方使用密钥对明文进行加密,将明文转换为密文,然后将密文发送给接收方。接收方收到密文后,使用相同的密钥对密文进行解密,还原出明文。常见的对称加密算法有 DES、AES 等。对称加密的优点是加密和解密速度快,效率高,适用于大量数据的加密。但它的缺点也很明显,就是密钥管理困难。因为通信双方需要安全地共享密钥,如果密钥在传输过程中泄露,那么数据就不安全了。例如,在一个团队中,如果大家都使用对称加密进行通信,那么如何安全地将密钥分发给每一个成员就是一个难题。
- 非对称加密原理
- 定义:非对称加密使用一对密钥,即公钥和私钥。公钥可以公开分发,就像我们可以将自己的邮箱地址公开给任何人一样;而私钥由用户自己妥善保存,就像我们要保管好自己的家门钥匙。
- 过程:发送方使用接收方的公钥对明文进行加密,生成密文,然后将密文发送给接收方。接收方使用自己的私钥对密文进行解密,得到明文。常见的非对称加密算法有 RSA、ECC 等。非对称加密的优势在于密钥管理相对简单,因为公钥可以公开分发,不需要像对称加密那样严格保密。但它的加密和解密速度相对较慢,一般用于对少量关键数据的加密,如数字证书、密钥交换等场景。例如,在 HTTPS 协议中,服务器会将自己的公钥放在数字证书中发送给客户端,客户端使用公钥对数据进行加密后发送给服务器,服务器再用私钥进行解密。

HTTP 协议不安全原因及 HTTPS 中的安全套接字
- HTTP 协议不安全原因:由于 HTTP 协议的数据是以明文传输的,这就好比在一个没有任何防护的道路上运输贵重物品,网络中的攻击者可以轻易地截取、监听传输的内容。他们可以获取用户的账号密码、信用卡信息等敏感数据,给用户带来巨大的损失。同时,攻击者还可以篡改数据内容,比如将一个商品的价格从 100 元篡改为 1 元,导致数据的完整性和真实性无法保证,影响正常的业务流程。
- HTTPS 协议中的安全套接字:HTTPS 是在 HTTP 基础上通过 SSL/TLS 协议来实现加密传输和身份认证等功能。SSL/TLS 协议中的安全套接字层就像是一个安全的通道,负责在客户端和服务器之间建立安全的连接,进行数据的加密和解密。它使用了对称加密和非对称加密等技术,在保证数据传输安全的同时,也提高了通信的效率。例如,在 SSL/TLS 握手过程中,会使用非对称加密来交换密钥,然后在后续的数据传输中使用对称加密来提高加密和解密的速度,确保数据能够安全、高效地传输。

相关文章:
HTTP 与 HTTPS 协议:从基础到安全强化
引言 互联网的消息是如何传递的? 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议:互联网的基石 定义 HTTP(英文:HyperText Transfer Protocol,缩写:HTTP),即超文本传输协…...
Scrapy爬虫框架介绍
目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一:指定爬虫配置pipe…...
Stable Diffusion模型高清算法模型类详解
Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4,分块尺寸768px★★★★★☆皮肤纹理细腻,但高对比场景易出现…...
软考网络安全口诀
首先,我们来看第一个口诀 “防御为先,安全无小事”。这个口诀强调了网络安全中的防御意识。在软考备考过程中,我们需要深刻理解网络安全不仅仅是技术层面的问题,更是一种全面的防御思维。从网络架构设计到日常运维管理࿰…...
Baklib内容中台赋能企业智管
内容中台构建全场景智管 现代企业数字化运营中,全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构,企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例,其利用中台系统将分散在CRM、ERP及内部文档…...
vscode+vue前端开发环境配置
目录 一、安装Vue二、使用vue新建项目 一、安装Vue 在node.js安装好之后, npm config set registry https://registry.npmmirror.com# 安装vue相关工具,webpack用来项目构建、打包、资源整合等。 npm install webpack -g# 安装vue-cli脚手架 npm insta…...
Python项目-基于深度学习的校园人脸识别考勤系统
引言 随着人工智能技术的快速发展,深度学习在计算机视觉领域的应用日益广泛。人脸识别作为其中的一个重要分支,已经在安防、金融、教育等多个领域展现出巨大的应用价值。本文将详细介绍如何使用Python和深度学习技术构建一个校园人脸识别考勤系统&#…...
浅谈C++函数特性
C的函数特性 前言 在C中,函数加入了许多特性,例如:a、函数缺省参数 b、函数重载 c、内联函数 等等……,这里我会和大家详细去探讨这些特性。以及探讨这些特性的一些细节,同时在内联部分,我们还会把C语言的…...
Python----数据分析(Matplotlib三:绘图二:箱图,散点图,饼图,热力图,3D图)
一、箱图 箱图(Box Plot),又称为箱形图、箱线图、盒式图、盒状图或盒须图,是一种用于展示数据分布情况的统计图表 箱图通过显示数据的中位数、上下四分位数(Q1和Q3)、异常值和数据的分布范围,提…...
高性能PHP框架webman爬虫引擎插件,如何爬取数据
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
【2025年后端开发终极指南:云原生、AI融合与性能优化实战】
一、2025年后端开发的五大核心趋势 1. 云原生架构的全面普及 云原生(Cloud Native)已经成为企业级应用的核心底座。通过容器化技术(DockerKubernetes)和微服务架构,开发者能够实现应用的快速部署、弹性伸缩和故障自愈…...
健康养生:开启活力人生的钥匙
在这个瞬息万变的时代,人们愈发珍视健康。健康养生,宛如一把神奇的钥匙,为我们打开通往活力人生的大门,全方位呵护身心,提升生活品质。 从饮食层面看,均衡膳食是核心。每餐力求包含碳水化合物、蛋白质、脂…...
vue2+ele-ui实践
前言:真理先于实践,实践发现真理,再实践检验真理 环境:vue2 & element-ui 正片: Select 选择器 简称 下拉框 下拉框完整的使用循环 下拉框 → 点击下拉框 → 展示数据 → 选择数据 → 下拉框显示数据 核心具有…...
三维重建(十五)——多尺度(coarse-to-fine)
文章目录 一、多尺度与图像金字塔:从全局结构到局部细节二、特征提取与匹配2.1 从数据采集的角度2.2 从数据增强的角度2.3 从特征提取的方式三、以多尺度的方式使用特征3.1 特征提取与匹配3.1.1 多尺度特征检测3.1.2 金字塔匹配3.2 深度估计与立体匹配3.2.1 多尺度立体匹配3.2…...
SparkStreaming之04:调优
SparkStreaming调优 一 、要点 4.1 SparkStreaming运行原理 深入理解 4.2 调优策略 4.2.1 调整BlockReceiver的数量 案例演示: object MultiReceiverNetworkWordCount {def main(args: Array[String]) {val sparkConf new SparkConf().setAppName("Networ…...
勿以危小而为之勿以避率而不为
《故事汇之:所见/所闻/所历/所想》:《公园散步与小雨遇记》(二) 就差一点到山顶了,路上碰到一阿姨,她说等会儿要下大雨了,让我不要往上走了,我犹豫了一会儿,还是听劝地返…...
JavaWeb后端基础(4)
这一篇就开始是做一个项目了,在项目里学习,我主要记录在学习过程中遇到的问题,以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中,通过四种请求方式,来操作数据的增删改查。 GET : 查询 …...
SpringBoot调用DeepSeek
引入依赖 <dependency><groupId>io.github.pig-mesh.ai</groupId><artifactId>deepseek-spring-boot-starter</artifactId><version>1.4.5</version> </dependency>配置 deepseek:api-key: sk-******base-url: https://api.…...
记录一下本地部署Dify的坑
1. 截止2025-3-4为止,请注意,不要直接拉Dify的1.0.0版本。请先试用0.15.3版本。1.0.0有一个bug需要解决。[PANIC]failed to init dify plugin db: failed to connect to hostdb userpostgres databasepostgres Issue #14707 langgenius/dify GitHub …...
LC109. 有序链表转换平衡二叉搜索树
LC109. 有序链表转换平衡二叉搜索树 题目要求(一)快慢指针1. 理解问题2. 解决思路3. 具体步骤4. 代码实现5. 复杂度分析6. 示例解释7. 总结 LC109. 有序链表转换平衡二叉搜索树 题目要求 (一)快慢指针 要将一个按升序排列的单链表转换为平衡的二叉搜索树(BST&…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 ,你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
