【协议篇:Http与Https】
1. Http
1.1 Http的定义
超文本传输协议(Hypertext Transfer Protocol,HTTP)是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最广泛应用的数据通信协议之一,尤其对于万维网(WWW)服务而言是至关重要的基础。HTTP协议定义了客户端(如网页浏览器)和服务器之间的通信格式和交互方式。
1.2 Http协议的特点
- 请求/响应模型
- HTTP采用客户端发起请求,服务器返回响应的模式进行工作。客户端通过发送一个HTTP请求来获取或提交网页资源,服务器根据请求内容生成相应的HTTP响应并回送给客户端。
- 无状态性
- HTTP协议本身是无状态的,这意味着每次请求都是独立处理,服务器不保留客户端请求之间的任何上下文信息。后来引入的Cookie和Session机制弥补了这一特性带来的问题,允许在多次请求间维持状态信息。
- 基于TCP/IP
- HTTP通常运行在TCP/IP协议栈的应用层之上,默认使用TCP端口80进行通信。HTTPS(安全HTTP)则使用SSL/TLS加密,在默认情况下运行在TCP端口443上。
- 消息结构
- HTTP消息包括请求消息和响应消息,它们由起始行、头部(headers)、空行和可选的消息主体组成。起始行定义了操作方法(GET、POST等)和目标资源的URI;头部包含了若干属性值对,描述了请求或响应的附加信息;消息主体承载了实际要传输的数据内容,如HTML文档、图片或其他类型的数据。
- 版本演化
- HTTP协议经历了多个版本的发展,例如HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3,每个新版本都在性能、效率、安全性等方面有所改进。
1.3 Http协议的缺点
- 明文运输
- 导致可能会被窃听
- 不验证报文的完整性
- 导致可能会被篡改
- 无法验证上方的身份
- 可能会出现伪装攻击
1.3.1 如何解决“明文传输”
可以使用对称加密,即加密和解密使用的是同一密钥S。但是如何把密钥交到对方手上就是一个很大的问题。
为了解决对称加密中的密钥分发难题,数学家们设计出了非对称加密体系。非对称加密算法的核心特点是采用一对密钥,一个是公开的公钥,另一个是私密的私钥。这两把密钥不是互相解密的关系,而是具有特定的匹配性:用公钥加密的数据只能通过对应的私钥解密,私钥加密的可以用公钥进行解密。
设想场景是这样的:假设A作为客户端,B作为服务端。首先,A和B各自生成一对非对称密钥,即公钥和私钥,并将各自的公钥安全地发布在网络上,使得任何人都能获取到A的公钥A_pub和B的公钥B_pub。
当A需要向B发送加密信息时,A会使用从网络上获取到的B的公钥B_pub来加密要发送的信息。这样一来,即便信息在互联网上传输的过程中被第三方截获,由于只有B持有的私钥B_priv能够解密这条信息,所以他人无法解读和篡改其中的内容。
最后,当B接收到经由其公钥加密的密文后,只需使用自己的私钥B_priv对其进行解密,从而确保了通信的保密性和完整性。通过这种方法,非对称加密算法有效地解决了在开放网络环境下安全传输密钥的问题,保障了数据在传输过程中的安全。
存在的问题
如果有一个中间人M在客户端和服务端获取对方公钥的时候,用自己的公钥M进行了替换。那么中间人不仅可以解析消息,还可以篡改消息。因为客户端A所认为的公钥B其实是公钥M,服务端认为的公钥A其实也是公钥M。这就涉及到了一个问题,如何验证接收到的公钥是你要的公钥。
1.3.2 利用数字证书
因为服务端的公钥无法在客户端证明确实是来自于服务端的,所以需要找一个第三方机构来做公证证明这个公钥确实是来自于服务端的。那怎么做公证呢?
服务端去证书授权中心申请证书,服务端会把自己的网站信息以及服务端公钥给到证书授权中心那边,而证书授权中心会根据这些生成一张由网站信息、证书信息、证书授权中心的数字签名以及服务端公钥等组成的证书。这里需要注意的是网站信息、证书信息、服务端公钥等信息在证书中都是以明文形式保存的。
新的问题来了:
- 如何保证这些明文没有被篡改过?
- 我们可以计算一个对应的消息摘要值,当明文被修改后,消息摘要值就对不上了
- 又有小朋友会问,那我如果修改明文后,重新计算了消息摘要值并替换呢?
- 那这个时候就需要对这个摘要利用CA的私钥进行数字签名(如果想要生成一个对应的数字签名就需要CA的私钥,很明显中间者无法获得)。
- 当客户端收到后就可以利用(消息摘要,数字签名,CA的公钥)进行验证
- 中间值修改消息后,即使生成新的消息摘要和数字签名也无法和CA的公钥进行匹配
- 新的问题又出现了,CA的公钥如何获得呢?
- CA机构的公钥是预装在操作系统中的,就这解决了公钥的来源问题。
代码如下:
# 导入rsa库
import rsa
# RSA密钥对生成
(public_key, private_key) = rsa.newkeys(2048) # 生成2048位密钥对
# RSA加密
message = b"This is a secret message"
cipher_text = rsa.encrypt(message, public_key)
# RSA解密
decrypted_message = rsa.decrypt(cipher_text, private_key)
# RSA数字签名
message_hash = rsa.compute_hash(message, 'SHA-256') # 计算消息摘要
signature = rsa.sign(message_hash, private_key, 'SHA-256')
# 验证签名
is_signature_valid = rsa.verify(message_hash, signature, public_key)
if is_signature_valid:print("验证签名有效")
else:print("中途被修改啦")
2.Https
HTTPS(全称为Hypertext Transfer Protocol Secure)是一种网络安全协议,设计用于在互联网上提供安全的通信和数据传输。它是在标准HTTP协议的基础上添加了一层安全措施,具体来说就是整合了SSL(Secure Sockets Layer)或其后续版本TLS(Transport Layer Security)协议,以实现数据加密、服务器身份验证以及消息完整性校验等功能。
当浏览器和服务器通过HTTPS连接时,它们会先执行握手过程来协商加密算法和交换公钥等信息,从而建立一个安全的连接通道。所有在HTTPS连接上传输的数据都会经过加密处理,这确保了敏感信息(如密码、信用卡号和个人信息)在网络中传输时不会被窃听或篡改。
此外,HTTPS还提供了服务器身份认证功能,通过证书颁发机构签发的SSL证书,客户端(如浏览器)可以验证服务器的真实身份,防止中间人攻击和仿冒网站。
总结来说,HTTPS的主要特点包括:
数据加密:使用对称加密和非对称加密相结合的方式来加密客户端和服务端之间的通信内容。
身份验证:服务器通过SSL/TLS证书向客户端证明其真实身份。
保证数据完整性:通过消息认证码(MAC)来防止数据在传输过程中被篡改。
默认使用端口号443而非HTTP的80端口。
2.1 为什么Https还有对称加密
因为非对称加密需要对信息进行加解密,这其中是非常耗时的,对称加密算法比非对称加密算法快大约1500倍!所以,HTTPS在通过非对称加密进行身份验证完毕后,后续通信会通过对称加密来进行,我们来看看是怎么实现的。
2.2 Https单向认证
- 客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
- 服务端给客户端返回服务端申请的证书(包含服务端公钥B、数字签名)、SSL协议版本号、加密算法种类、随机数等信息。
- 客户端拿到服务端返回的证书验证服务端的合法性,包括:
- 证书是否过期
- 该CA机构是否可靠
- 返回的公钥是否能正确解开返回证书中的数字签名
- 服务器证书上的域名是否和服务器的实际域名相匹配
验证通过后,将继续进行通信,否则,终止通信
- 客户端向服务端发送自己所能支持的对称加密方案,供服务端进行选择。
- 服务端在客户端提供的加密方案中选择加密程度最高的加密方式。
- 服务端将选择好的加密方案通过明文方式返回给客户端。
- 客户端接收到服务端返回的加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密密钥,使用服务端返回的公钥B进行加密,将加密后的随机码发送至服务端。
- 服务端收到客户端返回的加密信息后,使用自己的私钥B进行解密,获取对称加密密钥。 在接下来的会话中,服务端和客户端将会使用该对称加密密钥进行对称加密,保证通信过程中信息的安全。
2.3 Https双向认证
- 客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
- 服务端给客户端返回服务端申请的证书(包含服务端公钥B、数字签名)、SSL协议版本号、加密算法种类、随机数等信息。
- 客户端拿到服务端返回的证书验证服务端的合法性,包括:
- 证书是否过期
- 该CA机构是否可靠
- 返回的公钥是否能正确解开返回证书中的数字签名
- 服务器证书上的域名是否和服务器的实际域名相匹配
验证通过后,将继续进行通信,否则,终止通信
- 服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端。
- 服务端验证客户端的证书,通过验证后,获得客户端公钥A。
- 客户端向服务端发送自己所能支持的对称加密方案,供服务端进行选择。
- 服务端在客户端提供的加密方案中选择加密程度最高的加密方式。
- 服务端将选择好的加密方案通过客户端公钥A加密后返回给客户端。
- 客户端接收到服务端返回的信息后,通过客户端私钥A解密,获取到对称加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密密钥,使用服务端返回的公钥B进行加密,将加密后的随机码发送至服务端。
- 服务端收到客户端返回的加密信息后,使用自己的私钥B进行解密,获取对称加密密钥。 在接下来的会话中,服务端和客户端将会使用该对称加密密钥进行对称加密,保证通信过程中信息的安全。
使用单向认证还是双向认证是由服务端来决定的(默认单向)
3.Http各个版本
3.1 Http/0.9
HTTP/0.9 是超文本传输协议(Hypertext Transfer Protocol,HTTP)的第一个正式版本。这个早期版本于1991年随着万维网(World Wide Web)的诞生而出现,由蒂姆·伯纳斯-李(Tim Berners-Lee)设计。
特点:
- 请求方式简单
- 只支持GET请求方法。请求行中只包含要获取的资源文件名,不包含版本号、主机名或任何其他HTTP头信息。
- 响应格式简单
- 服务器回应的内容直接跟在换行符后面,没有状态行、响应头或者空行,只有纯文本或HTML内容
- 无错误代码反馈
- 如果请求失败,服务器无法通过HTTP协议返回特定的错误代码,只能关闭连接
- 不支持持久连接
- 每个请求与响应都对应一个新的TCP连接,连接在每次传输完成后立即关闭
3.2 Http/1.0
HTTP/1.0 是超文本传输协议(Hypertext Transfer Protocol,HTTP)的第二个正式版本,发布于1996年,是对早期HTTP/0.9的重大改进。相比于HTTP/0.9,HTTP/1.0引入了许多关键特性和增强功能,使其更适合大规模的Web服务:
特点
- 请求方法多样化
- 除了基本的GET方法之外,新增了POST方法,允许客户端向服务器发送数据。
- 状态码系统
- 在HTTP响应中加入了状态码,比如常见的200(成功)、404(未找到)、500(服务器内部错误)等
- 头部信息
- HTTP/1.0支持在请求和响应中携带头部信息,比如User-Agent、Content-Type、Connection等
- 持续连接选项
- 尽管默认情况下HTTP/1.0仍采用“每个请求-响应后关闭连接”的模式,但该版本首次引入了Connection: keep-alive头部字段,允许客户端和服务器协商保持TCP连接打开,以便复用连接处理多个请求,从而提高性能。
- 多部分数据
- HTTP/1.0支持多部分编码(multipart encoding),允许在一个HTTP消息体中发送多个不同类型的实体,这一特性在文件上传等场景下尤为重要
3.3 Http/1.1
HTTP/1.1 是超文本传输协议(Hypertext Transfer Protocol,HTTP)的第三个主要版本,发布于1999年,相较于HTTP/1.0做出了许多重要的改进和优化,旨在提高网络应用的性能和功能性。
特点
- 持久连接(Persistent Connections)
- HTTP/1.1默认启用持久连接,即TCP连接在处理完一个请求之后并不会立即关闭,而是保持一段时间内的开放状态,以便处理更多的请求,大大减少了建立连接的开销,提升了整体性能。
- 管道化(Pipelining)
- 在同一TCP连接上,客户端可以连续发送多个请求而不需等待前一个请求的响应,服务器则按照请求到达的顺序依次响应。虽然管道化理论上可以进一步提升性能,但由于队头阻塞(Head of Line Blocking)的问题,在实际应用中效果有限。
- 缓存控制(Cache Control)
- HTTP/1.1增强了缓存机制,引入了新的头部字段如Cache-Control、Expires、ETag等,使缓存管理更加灵活和精细。
- 分块传输编码(Chunked Transfer Encoding)
- 允许动态生成内容的长度未知时,服务器将响应内容分成若干个块进行传输,每一块都有自己的大小标识,这样客户端可以在接收到部分数据后就开始处理,无需预先知道整个响应的大小。
- Host头域
- 强制要求客户端在请求中指定Host头域,使得一台服务器可以托管多个域名和站点,为虚拟主机技术提供了基础。(简单来说就上在一个ip:port上可以部署多个网站,使用Host头域进行区分)
- 请求方法扩展
- HTTP/1.1定义了更多的请求方法,如PUT、DELETE、OPTIONS、HEAD等,增加了HTTP协议的交互能力。
- 错误通知更完善
- HTTP/1.1提供了更为丰富的状态码和错误信息,帮助开发者更好地理解和调试应用程序。
- 带宽优化
- 通过gzip压缩等方式,HTTP/1.1支持内容压缩传输,降低网络带宽消耗。
3.4 Http/2.0
HTTP/2.0 是 HTTP 协议的继 HTTP/1.1 后的重要升级版本,于2015年5月正式发布。HTTP/2.0 的核心目标是改善网页性能,特别是在高并发场景下减少延迟,提高网络资源利用率。主要的新特性包括:
特点
- 多路复用(Multiplexing)
- 这是HTTP/2最显著的改进之一。在HTTP/1.x中,一次TCP连接在同一时刻只能处理一个请求,而在HTTP/2中,一个TCP连接上可以并发处理多个请求和响应,消除了HTTP/1.x中的“队头阻塞”问题,大幅提高了页面加载速度。
- 二进制分帧(Binary Framing)
- HTTP/2将所有传输的信息分割成多个帧,这些帧可以交错、乱序发送,然后在另一端再重新组装。每个帧都有专门的目的,如HEADERS帧用于传输HTTP首部,DATA帧用于传输请求/响应主体。
- 头部压缩(Header Compression)
- HTTP/2使用HPACK算法对请求和响应的头部信息进行压缩,因为HTTP头部信息往往有很多重复内容,压缩头部信息可以显著减少数据传输量。
- 服务器推送(Server Push)
- 服务器在客户端请求一个资源的同时,可以预测客户端可能还需要哪些资源,并主动把这些资源推送给客户端,减少了客户端发起请求的延迟和往返时间。
- 优先级和流控制
- HTTP/2允许为每个流设置优先级,以便服务器合理安排资源发送顺序。另外,通过流控制机制,两端可以协调数据发送速度,防止拥塞和数据丢失。
- 单一连接
- 鼓励客户端和服务器维持一个长连接以供多个请求/响应交换,减少建立新连接的开销
重要概念
HTTP2.0中,有两个概念非常重要:帧(frame)和流(stream)。
帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。
所谓多路复用,即在一个TCP连接中存在多个流,即可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免HTTP旧版本的队头阻塞问题,极大提高传输性能。
3.5 Http/3.0
HTTP/3.0 是超文本传输协议(HTTP)的最新版本,旨在进一步改进网络应用的性能和效率。作为HTTP/2.0的继承者,HTTP/3.0 最显著的变化是放弃了对TCP的依赖,转而采用基于UDP的QUIC协议作为传输层。
QUIC(Quick UDP Internet Connections)最初由Google提出并开发,现在已经成为IETF标准。QUIC的设计目标在于解决TCP存在的延迟和性能问题,特别是队头阻塞(Head-of-line blocking)问题,同时提供类似TCP的可靠传输保证,包括流量控制、错误检测和纠正、连接迁移等功能。
特点
- 多路复用和低延迟
- 每个HTTP请求/响应在QUIC协议中映射为一个独立的数据流,即使网络中某数据包丢失,也不会阻塞其它数据流,从而减少了延迟。
- 快速连接建立
- QUIC使用了基于TLS 1.3的快速握手机制,可以实现0-RTT(Zero Round Trip Time)的连接建立,也就是说在某些情况下客户端可以在第一个数据包就发送请求数据,而无需等待握手完成。
- 连接迁移
- QUIC支持在IP地址改变(如Wi-Fi切换到蜂窝网络)时保持连接,这有助于移动设备在网络条件改变时保持活跃连接和流畅体验。
- 安全集成
- QUIC内建了TLS加密,确保数据在传输过程中受到保护,同时也简化了安全传输的实现。
- 错误恢复和重传机制
- QUIC拥有更好的丢包检测和重传策略,可以更快速地识别和补偿丢包,从而提高传输效率。
相关文章:
【协议篇:Http与Https】
1. Http 1.1 Http的定义 超文本传输协议(Hypertext Transfer Protocol,HTTP)是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最广泛应用的数据通信协议之一,尤其对于万维网(WWW)服务而言…...
WPS二次开发系列:WPS SDK初始化
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 本文将详细介绍WPS SDK初始化,帮您能够更…...
EXCEL地理数据处理工具(地图任务)
版本号 作者 修订内容 发布日期 1.0 小O 更新至0705版 2022-4-28 1.1 小O 更新至0772版 2024年4月3日 一、概述 小O地图EXCEL插件版提供基于EXCEL表格进行地理数据处理、地图可视化、地图绘图等功能,地理工具是用户使用频率很高的功能模块。地理工具能…...
软件设计原则:迪米特法则
定义 迪米特法则(Law of Demeter, LoD),又称最少知识原则,它指导我们在设计软件时,应当尽量减少对象之间的交互,一个对象应该对其他对象有尽可能少的了解。具体来说,一个对象应该只调用属于以下…...
MongoDB聚合运算符:$max
文章目录 语法使用空值和缺失值的处理数组操作数的处理 举例在$group阶段使用在$setWindowFields阶段使用在$project阶段使用 $max聚合运算符用于返回最大值。 $max对于不同的类型的值使用BSON的比较顺序。 $max可以用于下面的这些阶段: $addFields$bucket$bucket…...
神经网络学习笔记10——RNN、ELMo、Transformer、GPT、BERT
系列文章目录 参考博客1 参考博客2 文章目录 系列文章目录前言一、RNN1、简介2、模型结构3、RNN公式分析4、RNN的优缺点及优化1)LSTM是RNN的优化结构2)GRU是LSTM的简化结构 二、ELMo1、简介2、模型结构1)输入2)左右双向上下文信…...
Java23种设计模式
本文主要是对Java中一些常用的设计模式进行讲解 后期会进行不断的更新,欢迎浏览 23种设计模式 创建型模式,共五种:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。结构型模式,共七种:适配器模式、桥接…...
pieces of cake concerning torchtorchvision
1. version match torchvision的版本对应关系 2. utilize tqdm to present process bar lay a pbar from tqdm import tqdm pbar tqdm(unit"batch", filesys.stdout,totallen(self.training_dataloader)) #处理单位为batch pbar2 tqdm(range(20), descIt\s a t…...
如何在Python中处理JSON数据?
如何在Python中处理JSON数据? 在Python中处理JSON数据是一个常见的任务,因为JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。Python的内置库…...
站群服务器如何提高搜索引擎排名
站群服务器是一种专门为多个相关联的网站提供支持的服务器,旨在通过网站集合的形式提高搜索引擎排名和曝光度。那么站群服务器如何提高搜索引擎排名呢?Rak部落小编为您整理发布。 站群服务器提高搜索引擎排名的原理主要在于以下几个方面: - **提高网站…...
Redis安装-Docker
安装redis的docker容器 1、创建redis挂载目录 mkdir -p /liuchaoxu/redis/{data,conf}2、复制配置文件 在 /liuchaoxu/redis/conf 目录中创建文件 redis.conf,文件从 redis-6.2.7.tar.gz 中解压获取 修改默认配置(从上至下依次): #bind 127.0.0.1 …...
day16-二叉树part03
104.二叉树的最大深度 (优先掌握递归) 根节点的高度就是二叉树的最大深度,后序遍历到叶子节点,对遍历高度取最小 class solution {/*** 递归法*/public int maxDepth(TreeNode root) {if (root null) {return 0;}int leftDepth maxDepth(ro…...
上位机图像处理和嵌入式模块部署(qmacvisual亮度检测)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们说过,在机器视觉当中,对于光源的处理要非常小心。这里面不仅包括了选择什么样的光源,还取决于怎样使用…...
防止推特Twitter账号被冻结,应该选什么代理类型IP?
在处理多个 Twitter 帐号时,选择合适的代理IP对于避免大规模帐户暂停至关重要。现在,问题出现了:哪种类型的代理是满足您需求的最佳选择?下面文章将为你具体讲解推特账号冻结原因以及重点介绍如何选择代理IP。 一、推特账号被冻结…...
【二叉树】Leetcode 114. 二叉树展开为链表【中等】
二叉树展开为链表 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…...
2024年150道高频Java面试题(二十)
39. 说一下 HashMap 的实现原理? HashMap 是 Java 中使用非常普遍的一种基于散列的映射数据结构,主要用于存储键值对。它允许使用任何非空对象作为键和值,主要实现原理如下: 数组 链表 红黑树:HashMap 内部主要由一…...
Docker-Compose容器编排
基本介绍 使用一个Dockerfile模板文件,可以很方便的定义一个适合自己使用的自定义镜像。但在工作中经常会碰到需要多个容器相互配合来完成某项任务或运行某个项目的情况。例如要运行一个django项目,除了django容器本身,往往还需要再加上…...
nvm 安装多个版本的Node npm
先安装nvm 管理工具 git安装地址 找到安装包 下载然后安装 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11nvm常用命令 命令说明nvm version查看nvm版本nvm ls查看所有已经安装的Nodejs版本nvm list installed查看所有已经安装的Nodejs版本nvm ls availab…...
RisingWave 在品高股份 Bingo IAM 中的应用
背景介绍 公司背景 品高股份,是国内专业的云计算及行业信息化服务提供商。公司成立于 2003 年,总部位于广州,下设多家子公司和分公司,目前员工总数近 900 人,其中 80 %以上是专业技术人员。 品高股份在 2008 年便开…...
.Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
.Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置 没有废话,直接上代码调用 没有废话,直接上代码 /// <summary>/// 启动类/// </summary>public static class Mains{static IServiceCollection _services;static IMvcBuilder _…...
尚硅谷2024最新Git企业实战教程 | Git与GitLab的企业实战
这篇博客是尚硅谷2024最新Git企业实战教程,全方位学习git与gitlab的完整笔记。 这不仅仅是一套Git的入门教程,更是全方位的极狐GitLab企业任务流开发实战!作为一应俱全的一站式DevOps平台,极狐GitLab的高阶功能全面覆盖࿰…...
2024阿里云老用户服务器优惠价格99元和199元
阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…...
【前端webpack5高级优化】提升打包构建速度几种优化方案
HotModuleReplacement(HMR/热模块替换) 开发时我们修改了其中一个模块代码,Webpack 默认会将所有模块全部重新打包编译,速度很慢 所以我们需要做到修改某个模块代码,就只有这个模块代码需要重新打包编译,…...
【第十一届大唐杯全国大学生新一代信息通信技术大赛】赛题分析
赛道一 一等奖 7% 二等奖 15% 三等奖 25% 赛道二 参考文档: 《第十一届大唐杯全国大学生新一代信息通信技术大赛(产教融合5G创新应用设计)专项赛说明.pdf》 一等奖:7% 二等奖:10% 三等奖:20% 赛项一&am…...
Java面试题:Java集合框架:请简述Java集合框架的主要组成部分,并解释它们之间的关系。
Java集合框架(Java Collections Framework)是一组用来表示和操作集合的类的集合,它提供了用于存储不同类型对象的标准化接口和类。Java集合框架的主要组成部分包括以下几个部分: 集合接口(Collection Interface&#…...
hadoop3.0高可用分布式集群安装
hadoop高可用,依赖于zookeeper。 用于生产环境, 企业部署必须的模式. 1. 部署环境规划 1.1. 虚拟机及hadoop角色划分 主机名称 namenode datanode resourcemanager nodemanager zkfc journalnode zookeeper master slave1 slave2 1.2. 软件版本 java …...
Flink SQL系列之:解析Debezium数据格式时间字段常用的函数
Flink SQL系列之:解析Debezium数据格式时间字段常用的函数 一、FROM_UNIXTIME二、DATE_FORMAT三、TO_DATE四、CAST五、TO_TIMESTAMP_LTZ六、CONVERT_TZ七、FROM_UNIXTIME八、TO_TIMESTAMP九、常见用法案例1.案例一2.案例二3.案例三4.案例四5.案例五...
Redis底层数据结构-Dict
1. Dict基本结构 Redis的键与值的映射关系是通过Dict来实现的。 Dict是由三部分组成,分别是哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict) 哈希表结构如下图所…...
Python基于深度学习的人脸识别项目源码+演示视频,利用OpenCV进行人脸检测与识别 preview
一、原理介绍 该人脸识别实例是一个基于深度学习和计算机视觉技术的应用,主要利用OpenCV和Python作为开发工具。系统采用了一系列算法和技术,其中包括以下几个关键步骤: 图像预处理:首先,对输入图像进行预处理&am…...
CTF下加载CTFtraining题库以管理员身份导入 [HCTF 2018]WarmUp,之后以参赛者身份完成解题全过程
-------------------搭建CTFd------------------------------ 给大家介绍一个本地搭建比较好用的CTF比赛平台:CTFD。 CTFd是一个Capture The Flag框架,侧重于易用性和可定制性。它提供了运行CTF所需的一切,并且可以使用插件和主题轻松进行自…...
wordpress jpress/一键搭建网站
4月10号,有朋友留言,怎么把视频从guo外搬运哪些资源到guo内?做网络营销,如何操作国外视频搬运网赚项目?我前前后后想了很多遍,发现这个项目的难点是怎么下载guo外的视频,在解决了这个问题之后&a…...
广州哪家做网站好/网站优化方案模板
自动布局之autoresizingMask使用详解(Storyboard&Code) http://www.cocoachina.com/ios/20141216/10652.html 必须禁用autolayout才能使用autoresizingMask 前言:现在已经不像以前那样只有一个尺寸,现在最少的iPhone开发需要最…...
佛山响应式网站建设/知乎推广合作
mybatis缓存:在内存中临时存储数据,速度快,可以减少数据库的访问次数 经常需要查询,不经常修改的数据,不是特别重要的数据都适合于存储到缓存中 一级缓存 默认开启,是SqlSession的缓存,SqlSe…...
wordpress 文字编辑/微信营销的优势
官网https://code.visualstudio.com/Download下载最新版 一、下载与安装 注:解压到非系统盘,文件夹最好不要出现中文和空格,解压后直接运行code.exe即可 二、将vscode修改为中文环境 1.下载安装中文语言包 点击左侧工具栏的extensions&a…...
网站开发学费/济南做网站比较好的公司
背景:不用说,学习C的你,一定知道这是个词……至于难不难懂,就看你的理解能力了,我理解也是费劲千辛万苦啊,成员函数的重载、覆盖(override)、隐藏、virtual 很容易混淆,C…...
公司微信网站建设方案/东莞seo排名优化
点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:jajiancnblogs.com/jajian/p/10051901.htmlJSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式࿰…...