聊聊分布式架构02——Http到Https
目录
HTTP通信协议
请求报文
响应报文
持久连接
状态管理
HTTPS通信协议
安全的HTTPS
HTTP到HTTPS的演变
对称加密
非对称加密
混合加密机制
证书机构
SSL到底是什么
HTTPS是身披SSL外壳的HTTP
HTTP通信协议
一次HTTP请求的通信流程:客户端浏览器通过域名访问网页资源,由DNS解析得到目标服务器的ip,在HTTP、TCP/IP协议的协助下,发送请求到达服务器,服务器返回对应的XML、HTML以及JSON格式的数据。

这段请求的内容是:请求访问某台HTTP服务器上的/index.html页面资源。
请求报文
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

其中的POST是告知服务器意图的HTTP方法,在http协议的使用频率越来越高的趋势下,大家约定了REST风格的架构规则。常见的8种HTTP方法:
| 方法 | 意图 | 请求 | 响应 |
|---|---|---|---|
| GET | 获取资源 | GET /index.html HTTP/1.1 Host: www.hackr.jp | 返回 index.html 的页面资源 |
| POST | 传输实体主体 | POST /submit.cgi HTTP/1.1 Host: www.hackr.jp Content-Length: 1560(1560字节的数据) | 返回 submit.cgi 接收数据的处理结果 |
| PUT | 传输文件 | PUT /example.html HTTP/1.1 Host: www.hackr.jp Content-Type: text/html Content-Length: 1560(1560 字节的数据) | 响应返回状态码 204 No Content(比如 :该 html 已存在于服务器上) |
| HEAD | 获得报文首部 | HEAD /index.html HTTP/1.1 Host: www.hackr.jp | 返回index.html有关的响应首部 |
| DELETE | 删除文件 | DELETE /example.html HTTP/1.1 Host: www.hackr.jp | 响应返回状态码 204 No Content(比如 :该 html 已从该服务器上删除) |
| OPTIONS | 询问支持的方法 | OPTIONS * HTTP/1.1 Host: www.hackr.jp | HTTP/1.1 200 OK Allow: GET, POST, HEAD, OPTIONS (返回服务器支持的方法) |
| TRACE | 追踪路径 | TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2 | HTTP/1.1 200 OK Content-Type: message/http 响应 Content-Length: 1024 TRACE / HTTP/1.1 Host: hackr.jp Max-Forwards: 2(返回响应包含请求内容) |
| CONNECT | 要求用隧道协议连接代理 | CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host: proxy.hackr.jp | HTTP/1.1 200 OK(之后进入网络隧道) |
在服务器上的资源类型有很多,比如图片类型、视频类型、 Js、Css、文本等。浏览器如何识别当前类型做不同的渲染呢?
MIME Type:是描述消息内容类型的因特网标准,常见的几种类型
-
文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml
-
图片文件:image/jpeg,image/gif,image/png.
-
视频文件:video/mpeg,video/quicktime
我们可以通过两种方式来设置文件的渲染类型,第一种是 Accept,第二种是 Content-Type
-
Accept: 表示客户端希望接受的数据类型,即告诉服务器我需要什么媒体类型的数据,此时服务器应该根据 Accept 请求头生产指定媒体类型的数据
-
Content-Type: 表 示 发 送 端 发 送 的 实 体 数 据 类 型 , 比 如 我 们 应 该 写 过 类 似 的 : resposne.setContentType(“application/json;charset=utf-8”)的代码,表示服务端返回的数据 格式是 json。 如果 Accept 和 Content-Type 不一致,假如说 Accept 要接收的类型是 image/gif,但是服务 端返回的数据是 text/html,那么浏览器将会无法解析。
响应报文
响应报文基本上由协议版本、状态码(表示请求成功或者失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主题构成。

如果用户访问的地址有问题,或者服务端在解析用户请求以 及处理请求逻辑时出现问题,怎么办呢?HTTP状态码会给出具体的响应结果。
| 类别 | 原因短语 | |
|---|---|---|
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | ClientError(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | ServerError(服务器错误状态码) | 服务器处理请求出错 |
常见的HTTP状态码:
-
200 OK:表示请求成功,服务器已经成功处理了客户端的请求。
-
201 Created:表示请求已经被成功处理,服务器创建了新的资源。
-
202 Accepted:表示请求已被接受,但尚未被执行。
-
204 No Content:表示请求已成功处理,但响应没有包含实体的主体部分。通常用于没有响应主体的DELETE请求。
-
206 Partial Content:表示服务器已经成功处理了部分GET请求,通常用于分段下载或断点续传。
-
301 Moved Permanently:表示请求的资源已永久性地移动到新的位置,客户端应该使用新的URL进行请求。
-
302 Found:表示请求的资源临时移动到了新的位置,客户端应该使用新的URL进行请求,但以后可能还会改回旧的URL。
-
304 Not Modified:表示资源未修改,客户端可以使用本地缓存的副本。
-
400 Bad Request:表示客户端发送的请求存在语法错误或无法理解的请求。
-
401 Unauthorized:表示客户端请求需要进行身份验证,但提供的认证信息无效。
-
403 Forbidden:表示客户端没有权限访问请求的资源,服务器拒绝了请求。
-
404 Not Found:表示请求的资源未找到。
-
408 Request Timeout:表示客户端请求超时。
-
500 Internal Server Error:表示服务器在处理请求时发生了内部错误。
-
502 Bad Gateway:表示服务器作为网关或代理服务器时,从上游服务器接收到无效的响应。
-
503 Service Unavailable:表示服务器暂时不可用,通常是因为服务器过载或维护。
-
504 Gateway Timeout:表示服务器作为网关或代理服务器时,从上游服务器接收到超时响应。
持久连接
在最早的http协议中,每进行一次http通信,就需要做一次tcp的连接。而一次连接需要进行3次握手,这种通信方式会增加通信量的开销。

为了解决TCP连接问题,HTTP/1.1想出了持久连接的方法,通过Connection:Keep-Alive将连接作为持久连接。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态,HTTP/1.1持久连接在默认情况下是激活的。

状态管理
要知道,HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管 理。也就是说,无法根据之前的状态进行本次的请求处理。保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入 了 Cookie 技术。
客户端通过在请求和响应报文中写入Cookie信息来控制客户端的状态;Cookie会根据从服务器端发送的响应报文内的一 个叫做Set-Cookie的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
-
没有Cookie信息状态下的请求

-
第2次以后(存有cookie信息状态)的请求

服务器端会提供session的机制来保存服务端的对象状态,服务器使用一种类似于散列表的结构来保存信 息,当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求是否包含了一个session标识- session id; 如果已包含一个session id则说明以前已经为客户端创建过session,服务器就按照 session id 把这个 session 检索出来使用(如果检索不到,会新建一个); 如果客户端请求不包含sessionid,则为此客户端创建一个 session 并且生成一个与此 session 相关联的 session id, session id 的值是一个既不会重复,又不容易被找到规律的仿造字符 串,这个 session id 将会返回给客户端保存。

HTTPS通信协议
HTTP协议可能存在信息窃听或者身份伪装等安全问题。关于未加密的协议有些明显的不足之处:
-
通信使用明文(不加密),内容可能被窃听
-
不验证通信方的身份,因此有可能遭遇伪装
-
无法证明报文的完整性,所以有可能已遭篡改
安全的HTTPS
HTTPS(Hypertext Transfer Protocol Secure)是一种在HTTP基础上添加了安全性特性的通信协议。HTTPS之所以被认为是安全的,主要基于以下几个关键因素:
-
数据加密:HTTPS使用加密算法来保护数据的机密性。通信过程中传输的数据会被加密,使得恶意攻击者无法轻松窃取敏感信息。常见的加密算法包括TLS/SSL协议中使用的RSA、Diffie-Hellman、AES等。
-
身份验证:HTTPS使用SSL/TLS证书来验证服务器的身份。服务器必须获得由受信任的证书颁发机构(CA,Certificate Authority)签发的数字证书,这个数字证书包含了服务器的公钥,用于建立安全连接。这样,客户端可以确保它们正在与合法的服务器通信,而不是被劫持或伪装的服务器。
-
数据完整性:HTTPS还提供了数据完整性保护。通过使用消息摘要(Message Digest)和数字签名等技术,客户端可以确保在传输过程中数据没有被篡改或损坏。
-
防止中间人攻击:HTTPS的身份验证和加密机制可以防止中间人攻击(Man-in-the-Middle Attack)。中间人攻击是指攻击者通过篡改或窃听数据流量来窃取信息。HTTPS通过数字证书来验证通信双方的身份,从而降低了中间人攻击的风险。
-
强大的算法和协议:HTTPS使用强大的加密算法和协议来保护数据,这些算法和协议经过广泛的安全审查和测试,以确保它们的可靠性和安全性。
-
强制性:对于一些敏感信息的处理,如在线银行交易或个人身份验证,HTTPS通常是强制性的,网站必须使用HTTPS来保护用户的数据。
SSL(Secure Sockets Layer)是一种用于保护网络通信安全的协议。它最初由Netscape公司开发,后来发展为TLS(Transport Layer Security),TLS 1.0之后的版本不再称为SSL,而是TLS。SSL/TLS协议的主要目标是确保在网络上传输的数据隐私和完整性,同时提供身份验证机制。
以下是SSL/TLS的主要特点和功能:
-
加密:SSL/TLS使用加密算法来保护数据的机密性。数据在传输过程中会被加密,以防止未经授权的访问和窃取。
-
身份验证:SSL/TLS提供了服务器和客户端之间的身份验证机制。服务器需要提供数字证书,证明其身份是合法的,而客户端也可以提供证书进行双向身份验证。这确保了通信的双方都是合法的。
-
数据完整性:SSL/TLS通过使用消息摘要和数字签名等技术来确保数据在传输过程中没有被篡改或损坏,从而提供数据的完整性保护。
-
防止中间人攻击:SSL/TLS的身份验证和加密机制可以有效防止中间人攻击,确保通信双方的安全性。
-
支持多种加密算法:SSL/TLS支持多种加密算法,包括对称加密和非对称加密,以满足不同的安全需求。
-
版本升级:SSL/TLS有多个版本,每个版本都不断改进和加强安全性。TLS 1.2和TLS 1.3是目前广泛使用的版本,它们提供了更强的安全性和性能。
-
适用于各种应用:SSL/TLS不仅适用于Web浏览器和Web服务器之间的通信,还可以用于保护电子邮件、文件传输、即时通信等各种应用的通信。
-
广泛采用:SSL/TLS协议是互联网上广泛采用的安全协议,许多网站和服务都使用它来保护用户的数据和隐私。
HTTP到HTTPS的演变
按下SSL的实现设计暂时不表,我们看看HTTP演变到HTTPS的过程都发生了什么。
对称加密
为了保证通信过程不被篡改和窃听,最开始想到的就是对内容加密,同时,该消息还需要能被服务端解密。那么就需要客户端和服务端用相同的密钥进行加密解密。
加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。

以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。
非对称加密
公开密钥加密方式很好地解决了共享密钥加密的困难。公开密钥加密使用一对非对称的密钥。一把叫做私有密钥 (private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。

混合加密机制
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。所以选择了组合起来:在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

证书机构
混合加密的机制设计的确很巧妙,但是在公开密钥加密的环节中还是无法证明公开密钥本身就是货真价实的公开密钥。为了解决这个问题,我们可以借助数字证书机构和其颁发的公共密钥证书。
数字证书认证机构业务流程:
-
服务器的运营人员向数字证书认证机构提出公开密钥的申请。
-
数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也叫数字证书或者证书。
接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事: 一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二, 服务器的公开密钥是值得信赖的。
此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。

SSL到底是什么
SSL协议是Netscape公司率先采用的网络安全协议;它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术;SSL广泛支持各种类型的网络,后来发展为TLS(Transport Layer Security),TLS 1.0之后的版本不再称为SSL,而是TLS。SSL/TLS协议的主要目标是确保在网络上传输的数据隐私和完整性,同时提供身份验证机制。
以下是SSL/TLS的主要特点和功能:
-
加密:SSL/TLS使用加密算法来保护数据的机密性。数据在传输过程中会被加密,以防止未经授权的访问和窃取。
-
身份验证:SSL/TLS提供了服务器和客户端之间的身份验证机制。服务器需要提供数字证书,证明其身份是合法的,而客户端也可以提供证书进行双向身份验证。这确保了通信的双方都是合法的。
-
数据完整性:SSL/TLS通过使用消息摘要和数字签名等技术来确保数据在传输过程中没有被篡改或损坏,从而提供数据的完整性保护。
-
防止中间人攻击:SSL/TLS的身份验证和加密机制可以有效防止中间人攻击,确保通信双方的安全性。
-
支持多种加密算法:SSL/TLS支持多种加密算法,包括对称加密和非对称加密,以满足不同的安全需求。
-
版本升级:SSL/TLS有多个版本,每个版本都不断改进和加强安全性。TLS 1.2和TLS 1.3是目前广泛使用的版本,它们提供了更强的安全性和性能。
-
适用于各种应用:SSL/TLS不仅适用于Web浏览器和Web服务器之间的通信,还可以用于保护电子邮件、文件传输、即时通信等各种应用的通信。
-
广泛采用:SSL/TLS协议是互联网上广泛采用的安全协议,许多网站和服务都使用它来保护用户的数据和隐私。
总的来说,SSL/TLS协议是网络通信安全的重要组成部分,它通过加密、身份验证和数据完整性保护等多种机制来确保通信的安全性和可信性。这使得用户可以在互联网上安全地传输敏感信息,如密码、信用卡信息和个人数据。不过需要注意的是,为了保持安全性,SSL/TLS协议的配置和使用需要得到正确的实施。
HTTPS是身披SSL外壳的HTTP
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。
通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通 信,再由SSL和TCP通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的HTTP。

在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
相关文章:
聊聊分布式架构02——Http到Https
目录 HTTP通信协议 请求报文 响应报文 持久连接 状态管理 HTTPS通信协议 安全的HTTPS HTTP到HTTPS的演变 对称加密 非对称加密 混合加密机制 证书机构 SSL到底是什么 HTTPS是身披SSL外壳的HTTP HTTP通信协议 一次HTTP请求的通信流程:客户端浏览器通过…...
1024 画跳动的爱心#程序代码 #编程语言 #计算机
废话不多说 直接开干! 用到库 random time tkinter 快速镜像 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tkinter 上代码 import random import time from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGH…...
【排序算法】堆排序详解与实现
一、堆排序的思想 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆(若不清楚什么是堆,可以看我前面的文章,有详细阐述)来进行选择数据&am…...
java Spring Boot整合jwt实现token生成
先在 pom.xml 文件中注入依赖 <!-- JWT --> <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version> </dependency> <dependency><groupId>io.jsonw…...
如何使用Git和GitHub进行版本控制
如何使用Git和GitHub进行版本控制 版本控制是软件开发过程中的重要组成部分,它允许开发者跟踪和管理代码的变化,以确保团队协作顺畅,并帮助在需要时回溯到以前的代码状态。Git和GitHub是最流行的版本控制工具之一,本文将介绍如何…...
彻底解决 WordPress cURL error 28 错误
cURL 连接超时。 这种情况最普遍,这里的超时并不是完全不可连接,而是因为网络状况或其它原因数据传输缓慢,超过连接的时间限制导致传输中断引起的错误。 不论是何种原因导致连接超时,都可以通过增加超时限制来解决此问题。但 UR…...
LLM项目代码改写
背景: 最近在做代码大语言模型生成项目代码的课题。代码生成现在大部分的工作是在做即时代码生成,这个有点类似代码智能提示,只不过生成的可能是一段片段代码;然而对于整个项目代码的生成做的团队并不多,原因大致如下…...
小谈设计模式(14)—建造者模式
小谈设计模式(14)—建造者模式 专栏介绍专栏地址专栏介绍 建造者模式角色分类产品(Product)抽象建造者(Builder)具体建造者(Concrete Builder)指挥者(Director࿰…...
【kubernetes】k8s中的选主机制
leader-election选主机制 1 为什么需要leader-election? 在集群中存在某种业务场景,一批相同功能的进程同时运行,但是同一时刻,只能有一个工作,只有当正在工作的进程异常时,才会由另一个进程进行接管。这…...
学生选课系统基础版
第四章java中的集合框架 4.1:java中的集合框架概述 1.java概念与作用 现实中很多事物凑在一起都是集合 如购物车是商品的集合 军队呢 是军人的集合 学校是学生的结合 数学中的集合: 具有共同属性的事物的总体 java中的集合类呢 跟数学的集…...
redis no-appendfsync-on-rewrite
no-appendfsync-on-rewriteyes 当用户请求写入redis的时候,这部分数据只是保存在内存中,主线程并不会马上对此数据进行 aof刷盘(而是根据aof刷盘的频率由子线程进行同步),这样子不会阻塞但是会导致数据丢失no-appendfs…...
Spring Cloud Gateway2之路由详解
Spring Cloud Gateway路由 文章目录 1. 前言2. Gateway路由的基本概念3. 三种路由1. 静态路由2. 动态路由1. 利用外部存储2. API动态路由 3. 服务发现路由(自动路由)3.1. 配置方式3.2 自动路由(服务发现)原理核心源码GatewayDiscoveryClientAutoConfigur…...
阿里云RDS关系型数据库详细介绍_多版本数据库说明
阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …...
Vue中的数据绑定
一、v-bind单向数据绑定 单向数据绑定中,数据只能由data流向页面。 v-bind:属性名"data变量" 或简写为 :属性名"data变量" 我们修改data中的iptvalue值,页面input框中的value值改变。 而我们修改input框中的value值࿰…...
前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...
[JAVAee]Spring拦截器
适用场景 像是页面的登录验证处理,权限校验,登录日志的处理. 实现步骤 创建⾃定义拦截器,实现 HandlerInterceptor 接⼝的 preHandle(执⾏具体⽅法之前的预处理⽅法.将⾃定义拦截器加⼊ WebMvcConfigurer 的 addInterceptors ⽅法中. 下面以登录验证为例,实现拦…...
【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)
NVM 包管理工具 安装 访问NVM-Windows的GitHub页面:点击nvm-setup.exe。 根据提示进行下一步,文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功,它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…...
【微服务】七. http客户端Feign
7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码: String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题…...
【Spring Boot 源码学习】OnWebApplicationCondition 详解
Spring Boot 源码学习系列 OnWebApplicationCondition 详解 引言往期内容主要内容1. getOutcomes 方法2. getMatchOutcome 方法3. isWebApplication 方法3.1 isServletWebApplication 方法3.2 isReactiveWebApplication 方法3.3 isAnyWebApplication 方法 总结 引言 上篇博文带…...
力扣之二分法
今天,学习了二分法,详细内容见代码随想录 (programmercarl.com),讲得十分好。 力扣之35. 搜索插入位置 - 力扣(LeetCode)。 class Solution { public:int searchInsert(vector<int>& nums, int target) {in…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
