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. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...