【JavaEE】http/https 超级详解

   🔥个人主页: 中草药

🔥专栏:【Java】登神长阶 史诗般的Java成神之路


🦊一.定义 

         HTTP(HyperText Transfer Protocol)即超文本传输协议,他是应用非常广泛的应用层协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。它是一种请求/响应式的协议,客户端发送请求到服务器,服务器处理后返回响应给客户端。HTTP是一个应用层协议,运行在TCP/IP协议族之上,通常使用80端口进行通信。

http不仅能传输文本,还能传输图片,传输音频文件,传输视频,传输其他的各种数据

目前互联网见到的绝大多数版本都是http/1.1

🐺二.报文格式

        我们可以借助抓包工具 fiddler 来理解HTTP的报文格式

请求报文

一个HTTP请求报文的结构如下:

  1. 请求行(Request Line)

    • 包含了请求方法、请求URI(统一资源标识符)和HTTP版本。
    • 例如:GET /index.html HTTP/1.1
  2. 请求头(Request Headers)

    • 包含了一系列的键值对,提供了关于请求的附加信息,如客户端可以接受的内容类型、编码方式、语言等。
    • 例如:
      Host: www.example.com
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Accept-Language: en-US,en;q=0.5
      Accept-Encoding: gzip, deflate
      Connection: keep-alive
  3. 空行(Blank Line)

    • 请求头与消息主体之间用一个空行分隔。
  4. 消息主体(Message Body)

    • 可选部分,包含了实际要发送的数据,如POST请求中的表单数据。
    • 例如:
      username=john&password=secret

响应报文 

一个HTTP响应报文的结构如下:

  1. 状态行(Status Line)

    • 包含了HTTP版本、状态码和状态消息。
    • 例如:HTTP/1.1 200 OK
  2. 响应头(Response Headers)

    • 提供了关于响应的附加信息,如内容长度、内容类型、服务器信息等。
    • 例如:
      Date: Mon, 23 May 2005 22:38:34 GMT
      Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
      Content-Type: text/html; charset=UTF-8
      Content-Length: 138
      Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
  3. 空行(Blank Line)

  • 响应头与消息主体之间用一个空行分隔。 
  1. 消息主体(Message Body)

    • 包含了响应的实际内容,如HTML文档、图片数据等。
    • 例如:
      <html>
      <head><title>Example Page</title></head>
      <body>
      <h1>Hello, World!</h1>
      </body>
      </html>

 🐱三.URL

        URL(Uniform Resource Locator,统一资源定位符)是互联网上用于标识和定位资源的一种标准地址格式。URL不仅指明了资源的位置,还包含了访问该资源的方式。它是URI(Uniform Resource Identifier,统一资源标识符)的一种具体形式,主要用于定位可以通过网络获取的资源。

结构

一个完整的URL通常由以下几个部分组成:

  1. 方案/协议(Scheme)

    • 指定了获取资源所使用的协议类型,比如httphttpsftpfile等。指明这个URL给那个协议使用
    • 例如:http:// 或 https://
  2. 服务器地址(主机名Host)

    • 表示存放资源的服务器的 域名或IP地址。
    • 例如:www.example.com
  3. 端口号(Port)

    • 服务运行的TCP端口号。如果省略,默认使用对应协议的标准端口(如HTTP默认80端口,HTTPS默认443端口)。
    • 例如::8080
  4. 路径(Path)

    • 服务器上的文件路径或应用程序入口点。
    • 例如:/path/to/resource
  5. 查询参数(Query)

    • 以问号?开始,后面跟着一系列键值对,用于向服务器传递额外的信息。
    • 键值对之间用&分隔。
    • 例如:?key1=value1&key2=value2
  6. 片段标识符(Fragment)

    • 以井号#开始,用来指定网页内部的一个锚点,客户端浏览器会滚动到这个位置。
    • 例如:#section1

示例URL分析

考虑如下URL:        

https://www.example.com:8080/path/to/page.html?key1=value1&key2=value2#section1
  • 方案https —— 使用安全的超文本传输协议。
  • 主机名www.example.com —— 访问的网站域名。
  • 端口号8080 —— 服务器监听的非标准端口。
  • 路径/path/to/page.html —— 资源的具体路径。
  • 查询参数?key1=value1&key2=value2 —— 提供给服务器的数据。
  • 片段标识符#section1 —— 页面内的锚点。

URL encode

        url encode  query String键值对结构是可以包含各种内容的,由于某些字符在URL中有特殊含义,或者不能直接包含在URL中(比如空格、中文字符等),因此需要进行URL编码(也称为百分号编码)。

        这种编码方式将这些字符转换为一种可以在URL中安全传输的形式。例如,空格会被编码为%20,而中文字符会被转换为其UTF-8编码后的十六进制表示,并在每个字节前加上%符号。

        在日常开发之中,大多数情况不需要手动处理转码,日常使用的一些库都自带这个功能。

作用

  • 定位资源:通过提供明确的地址来访问特定的网络资源。
  • 跨平台和跨应用通信:URL可以被不同的操作系统和应用程序解析,从而实现数据共享和链接。
  • 书签和分享:用户可以保存URL作为书签,也可以方便地与他人分享。
  • 搜索引擎优化(SEO):友好的URL结构有助于提高网页在搜索引擎中的排名。

🐈四.方法

HTTP定义了几种请求方法来表示对指定资源的不同操作方式:

  • GET:请求获取由请求URL所标识的资源。该请求方法应该只用于数据检索,而不应该被用来产生其他效果。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
  • PUT:向指定资源位置上传其最新内容。
  • DELETE:请求服务器删除Request-URI所标识的资源。
  • HEAD:类似于GET,但是不返回报文主体,只返回首部信息。
  • OPTIONS:返回服务器支持的HTTP方法。
  • TRACE:追踪请求到达目标的过程中经过的代理服务器。
  • CONNECT:将网络连接转变为透明的TCP/IP通道,通常用于SSL加密服务器的链接(经由非加密的HTTP代理)

一个经典面试题:GET和POST的区别

首先明确GET和POST并没有本质区别(他们所运用的场景可以切换)

在使用习惯上,还是有区别

1.语义不同,方法表示的含义

GET表示从服务器拿数据

POST表示往服务器提交数据

2.传递数据的方式不同,
GET 传递数据, 通常是通过 query string 把自定义数据交给服务器

POST 传递数据, 通常通过 body 把自定义数据交给服务器

3.幂等性

GET 方法对应的请求,通常设计成"幂等"的

POST 方法对应的请求,对于"幂等性"则无要求

4.承接幂等性
GET 如果设计成幂等的,此时 GET 的结果是可以被缓存的

POST 不设计成幂等性,POST 就不应该被缓存

🐕五,请求报头

请求头部包含了一系列键值对,每个键值对表示一个特定的信息。常见的HTTP请求头部字段包括但不限于:

  1. Host - 指定被请求资源的Internet主机地址和端口号。这是必须的头部字段,因为HTTP/1.1要求每个请求都包含此字段。

    Host: www.example.com
  2. User-Agent - 包含发起请求的用户代理软件的信息,如浏览器类型和版本。简称UA。判定UA字段,通过UA获取到用户的浏览器信息和操作系统信息。UA还有一个作用,就是用来做数据统计,主要是区分PC和移动端

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
  3. Accept - 告诉服务器客户端可以接受的内容类型。

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  4. Accept-Language - 客户端希望接收的语言。

    Accept-Language: en-US,en;q=0.9
  5. Accept-Encoding - 客户端支持的内容编码类型,如gzip。

    Accept-Encoding: gzip, deflate, br
  6. Connection - 控制网络连接的行为,比如是否保持连接。

    Connection: keep-alive
  7. Content-Type - 当请求体中携带了数据时,用于指定数据的MIME类型。

    Content-Type: application/x-www-form-urlencoded
  8. Content-Length - 请求体的长度,以字节为单位。

    Content-Length: 348
  9. Cookie - 包含之前由服务器通过Set-Cookie头部设置的cookie。他也是键值对结构,是属于浏览器给网站提供的一种"客户端存储数据"的机制,按照域名为维度分别进行存储。后续浏览器访问同一个服务器的时候,就会把之前存储的 Cookie 再带上,从而发送到服务器这边

    Cookie: name=value; sessionid=38afes7a8
  10. Authorization - 用于认证,通常在需要身份验证的请求中使用。

    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
  11. Referer - 包含当前请求页面的来源页面的地址,即用户是从哪个页面链接过来的。

    Referer: https://www.example.com/
  12. If-Modified-Since - 只有当所请求的内容在指定的日期之后又经过修改的情况下,才返回新的内容。

    If-Modified-Since: Sun, 06 Nov 1994 08:49:37 GMT

🦬六.状态码

HTTP响应中的状态行包含了状态码,用来告知客户端请求是否成功或发生了什么类型的错误。常见的状态码有:

  • 1xx:信息性状态码
  • 2xx:成功状态码
  • 3xx:重定向状态码
  • 4xx:客户端错误状态码
  • 5xx:服务器错误状态码

例如:

  • 200 OK - 请求成功
  • 404 Not Found - 请求的资源不存在
  • 403 Forbidden 访问被拒绝(没有权限)
  • 500 Internal Server Error - 服务器遇到了意外的情况,无法完成请求
  • 504 Gateway Timeout 服务器没在规定时间内返回

🐐七.工作流程

  1. 建立TCP连接:客户端与服务器之间通过三次握手建立TCP连接。
  2. 客户端发送请求:一旦建立了TCP连接,客户端会向服务器发送一个请求报文。
  3. 服务器接收并处理请求:服务器接收到请求后,根据请求内容进行相应的处理。
  4. 服务器发送响应:处理完请求之后,服务器会生成一个响应报文,并将其发送回客户端。
  5. 关闭连接:默认情况下,请求完成后会立即断开连接;但在HTTP 1.1中引入了持久连接的概念,可以在同一个TCP连接上发送多个请求。

🐫八.https

        HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,它通过SSL/TLS协议来加密信息的传输。HTTPS的主要目的是提供三个关键层面的安全保障:数据隐私、数据完整性和身份验证。

运营商劫持

        运营商劫持通常指的是互联网服务提供商(ISP,Internet Service Provider)或网络运营商在用户不知情的情况下修改用户的网络流量,从而改变用户的上网体验。这种行为可能出于多种目的,包括但不限于商业利益、监管要求等

因此,在互联网上,明文传输是比较危险的事情

加密

        加密是一种将信息转换成看似随机且无意义的数据的技术,目的是保护数据的隐私和安全。这个过程使得只有拥有正确密钥的人才能解码(或解密)信息,恢复其原始内容。加密是信息安全领域的一个核心组成部分,被广泛应用于保护敏感信息、确保通信的安全以及验证身份等场景。

加密的基本原理包括以下几个关键概念:

  1. 明文 (Plaintext):这是指未经加密的原始数据或信息。
  2. 密文 (Ciphertext):这是经过加密处理后的数据,看起来像是随机字符,没有正确的密钥就无法理解其含义。
  3. 加密算法 (Encryption Algorithm):这是一种数学函数,用于将明文转化为密文。常见的加密算法有对称加密算法(如AES, DES)和非对称加密算法(如RSA, ECC)。
  4. 密钥 (Key):这是一个特殊的参数,用于控制加密和解密的过程。在对称加密中,同一个密钥既用于加密也用于解密;而在非对称加密中,则使用一对密钥——公钥和私钥,其中公钥用于加密,私钥用于解密。
  5. 解密 (Decryption):这是加密的逆过程,通过使用正确的密钥将密文还原为原来的明文。

类型

  • 对称加密:使用相同的密钥进行加密和解密。这种方式速度快,适合大量数据的加密,但需要安全地共享密钥。
⼀个简单的对称加密, 按位异或
假设 明文 a = 1234, 密钥 key = 8888
则加密 a ^ key 得到的密⽂ b 为 9834.
然后针对密文 9834 再次进行运算 b ^ key, 得到的就是原来的明文 1234.
(对于字符串的对称加密也是同理, 每⼀个字符都可以表示成⼀个数字)
当然, 按位异或只是最简单的对称加密. HTTPS 中并不是使用按位异或
  • 非对称加密:使用一对密钥,即公钥和私钥。公钥可以公开分享,用于加密数据;而私钥必须保密,仅由接收方持有,用于解密数据。这种方法安全性更高,因为即使公钥泄露也不会影响到私钥的安全性,但它比对称加密慢很多。

应用实例

  • HTTPS协议:在互联网上安全传输数据时,通常采用SSL/TLS协议结合非对称加密来建立安全连接,并使用对称加密来高效传输实际的数据。
  • 电子邮件:某些电子邮件服务提供端到端加密功能,保证邮件内容只有发送者和接收者能够阅读。
  • 文件存储:为了保护重要文件不被未授权访问,用户可能会选择使用加密软件来加密文件,然后将其存储于云端或本地硬盘上。
  • 支付系统:在线交易过程中,信用卡信息等敏感数据会通过加密技术加以保护,防止被窃取。

总之,加密对于保障数字世界的隐私与安全至关重要,它帮助个人和组织抵御各种形式的信息泄露和攻击。

工作流程*

1.引入对称加密

        实际中,服务器在同一时刻是给钱很多客户端提供工作的,因此每个客户端所用的密钥都是不尽相同的,因此服务器需要维护每个客户端和每个密钥之间的关联关系 

比较理想的做法, 就是能在客户端和服务器建立连接的时候, 双方协商确定这次的密钥是啥~

但是如果 密钥 明文传输,此时的加密操作就有点形同虚设了,因此 密钥的传输也要加密传输 此时就引用了非对称加密

2.非对称加密

引入非对称加密,对需要传输的密钥进行加密

非对称加密的作用不是取代对称加密,而是辅助

业务数据依旧是对称加密传输

非对称加密,只用来加密对称传输密钥

非对称加密,也称为公钥加密,是一种使用一对密钥进行加密和解密的加密技术:一个公开的公钥(public key)和一个私有的私钥(private key)

工作原理

  1. 密钥生成

    • 用户通过算法生成一对密钥,其中一个是公钥,可以公开分享;另一个是私钥,必须保密。
    • 公钥用于加密数据或验证数字签名。
    • 私钥用于解密数据或创建数字签名。
  2. 加密过程

    • 发送者获取接收者的公钥,并用这个公钥来加密信息。
    • 加密后的信息只有拥有相应私钥的人才能解密。
  3. 解密过程

    • 接收者收到加密的信息后,使用自己的私钥来解密信息。
    • 由于私钥从未被公开,因此只有预期的接收者才能读取原始消息。
  4. 数字签名

    • 发送者可以使用自己的私钥对消息进行签名,产生一个唯一的签名值。
    • 接收者可以使用发送者的公钥来验证签名的真实性,确保消息未被篡改且确实来自发送者。

非对称加密,运算开销比较大,比较消耗内存

尽管如此上述的流程仍然存在巨大问题

3.中间人攻击

针对上述的加密,“黑客”可以这样做

这张图描述了一种中间人攻击的情况,具体如下:

  1. 客户端向服务器发送一条消息,获取公钥
  2. 被黑客入侵的路由器作为中间人,假装是服务器回复客户端:“我的公钥是 pub2。”(但实际上 pub2 是黑客自定义的)
  3. 客户端收到 pub2 后,使用 pub2 对业务数据进行加密,并发送给路由器。
  4. 路由器使用自己的私钥 pri2 解密得到业务数据,然后重新使用服务器真实的公钥 pub1 进行加密,发送给服务器。
  5. 服务器收到加密数据后,使用自己的私钥 pri1 解密,认为这就是客户端发送过来的数据。

        在这个过程中,客户端并不知道 pub2 是否真实来自于服务器,只能选择相信。而路由器作为中间人,成功地解密了客户端发送的数据,并重新加密发送给了服务器。服务器误以为这是客户端发送的数据,所以双方都认为已经完成了安全的密钥交换,接下来就会使用这个对称密钥进行业务数据的传输。

        然而,由于路由器已经解密了数据,它可以监控和操纵所有后续的通信,实现了中间人攻击。这个例子说明了在没有有效验证公钥来源的情况下,非对称加密也可能存在安全隐患。为了避免这种情况,应确保公钥的合法性,例如通过数字证书等方式验证。

 4.引入证书,解决中间人攻击

        数字证书是用于验证实体(如个人、组织或网站)身份的电子文档,它在互联网安全中扮演着至关重要的角色。数字证书通常与公钥基础设施(Public Key Infrastructure, PKI)一起使用,以确保网络通信的安全性

证书 相当于身份证,证明服务端公钥的权威性

内容

一个标准的X.509格式的数字证书通常包括以下信息:

  • 实体的身份信息(如名称、电子邮件地址等)
  • 公钥
  • 签发证书的CA的信息
  • 有效期
  • 序列号
  • 使用的签名算法
  • 数字签名

作用

  • 身份验证:证书提供了对实体身份的信任,用户可以确信他们正在与正确的服务器或个人进行通信。
  • 完整性保护:通过数字签名,可以检测出证书是否被篡改。
  • 支持加密通信:证书中的公钥用于建立加密通道,例如在HTTPS连接中。

签名 是保证证书合法性的关键要点 证书中的各个字段综合在一起,计算校验和

公证机构。自己也会生成一对公钥私钥(公钥 会发个各个客户端,是操作系统内置的),公证机构拿着自己的私钥对刚才的校验和进行加密,因此得到了数字签名

客户端验证数字签名
1.客户端把证书中的各个字段,再算一次校验和,得到 checksum1
2.客户端使用公正机构的公钥,对数字签名进行解密,得到 checksum2
3.对比 checksum1 == checksum2 如果相等,视为当前证书的各个字段,就是和服务器这边发出来的证书是一模一样的,此时就可以认为这是合法证书.
如果不相等,意味着证书上的内容,被中间的黑客篡改过了~~ 此时浏览器往往就会弹出警告页面,提示用户,该网站不安全....

中间人有没有可能篡改该证书?

  • 中间人篡改了证书的明文
  • 由于他没有 CA 机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名
  • 如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改,
  • 证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人

🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

以上,就是本期的全部内容啦,若有错误疏忽希望各位大佬及时指出💐

  制作不易,希望能对各位提供微小的帮助,可否留下你免费的赞呢🌸

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言、Eazy_X——五子棋

//五子棋#include<graphics.h>#define board_size 20 #define pixel 600 int pr pixel / board_size; char board_data[board_size][board_size]; char current_piece o; int count 0;//检测指定玩家是否获胜 bool CheckWin(char c) {int i, j;//检查行for (i 0; i &…

线程池:线程池的实现 | 日志

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

数值计算的程序设计问题举例

### 数值计算的程序设计问题 #### 1. 结构静力分析计算 **涉及领域**&#xff1a;工程力学、建筑工程 **主要问题**&#xff1a;线性代数方程组&#xff08;Linear Algebraic Equations&#xff09; **解释说明**&#xff1a; 在结构静力分析中&#xff0c;我们需要解决复杂的…

C++:类中的特殊关键字,运算重载符

1.My_string类中重载以下的运算符&#xff1a; 、[] 、>、<、、>、<、&#xff01;、、输入输出(>>、<<) 主函数&#xff1a; #include <iostream> #include "my_string.h"using namespace std;int main() {My_string s1("cat…

基于SpringBoot+Vue的个人健康管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【STM32-HAL库】自发电型风速传感器(使用STM32F407ZGT6)(附带工程下载链接)

一、自发电型风速传感器介绍 自发电型风速传感器&#xff0c;也称为风力发电型风速传感器或无源风速传感器&#xff0c;是一种不需要外部电源即可工作的风速测量设备。这种传感器通常利用风力来驱动内部的发电机构&#xff0c;从而产生电能来供电测量风速的传感器部分。以下是自…

GS-SLAM论文阅读笔记--GEVO

前言 这篇文章看着就让人好奇。众所周知&#xff0c;高斯是一个很不错的建图方法&#xff0c;但是本文的题目居然是只用高斯进行单目VO&#xff0c;咱也不知道这是怎么个流程&#xff0c;看了一下作者来自于MIT&#xff0c;说不定是个不错的工作&#xff0c;那就具体看看吧&am…

springboot实战学习(10)(ThreadLoacl优化获取用户详细信息接口)(重写拦截器afterCompletion()方法)

接着学习。之前的博客的进度&#xff1a;完成用户模块的注册接口的开发以及注册时的参数合法性校验、也基本完成用户模块的登录接口的主逻辑的基础上、JWT令牌"的组成与使用、完成了"登录认证"&#xff08;生成与验证JWT令牌&#xff09;以及完成获取用户详细信…

APISIX 联动雷池 WAF 实现 Web 安全防护

Apache APISIX 是一个动态、实时、高性能的云原生 API 网关&#xff0c;提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 雷池是由长亭科技开发的 WAF 系统&#xff0c;提供对 HTTP 请求的安全请求&#xff0c;提供完整的 API 管理和…

【CKA】二、节点管理-设置节点不可用

2、节点管理-设置节点不可用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 先设置节点不可用&#xff0c;然后驱逐节点上的pod 这道题就两条命令&#xff0c;直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情&#xff1a; –delete-empty…

YOLO11震撼发布!

非常高兴地向大家介绍 Ultralytics YOLO系列的新模型&#xff1a; YOLO11&#xff01; YOLO11 在以往 YOLO 模型基础上带来了一系列强大的功能和优化&#xff0c;使其速度更快、更准确、用途更广泛。主要改进包括 增强了特征提取功能&#xff0c;从而可以更精确地捕捉细节以更…

在树莓派上基于 LNMP 搭建 Nextcloud

原文链接&#xff1a;https://blog.iyatt.com/?p17296 环境 树莓派CM4raspios 20240704 Debian 12 arm64 搭建 LNMP 环境 安装 Nginx sudo apt update sudo apt install -y nginx安装 php 及功能组件支持 参考&#xff1a;https://docs.nextcloud.com/server/latest/adm…

EXCEL图片链接快速批量转成图片

EXCEL图片链接快速批量转成图片 直接上图 "<table><img src"&C1&" height50 width50></table>"复制F列到txt文件&#xff0c;暂时放置 全选复制&#xff0c;然后插入一列&#xff0c;粘贴到新的一列中去如图一所示。 ps&…

光通信——PON技术

PON网络结构 PON&#xff08;Passive Optical Network&#xff0c;无源光网络&#xff09;系统的基本组成包括OLT&#xff08;Optical Line Terminal&#xff0c;光线路终端&#xff09;、ODN&#xff08;Optical Distribution Network&#xff0c;光分配单元&#xff09;和ON…

初学51单片机之I2C总线与E2PROM二

总结下上篇博文的结论&#xff1a; 1&#xff1a;ACK信号在SCL为高电平期间会一直保持。 2&#xff1a;在字节数据传输过程中如果发送电平跳变&#xff0c;那么电平信号就会变成重复起始或者结束的信号。&#xff08;上篇博文的测试方法还是不能够明确证明这个结论&#xff0…

深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制

我的主页&#xff1a;2的n次方_ 1. JVM 内存区域划分 程序计数器&#xff08;空间比较小&#xff09;。保存了下一条要执行的指令的地址&#xff08;指向元数据区指令的地址&#xff09;堆。JVM 最大的空间&#xff0c;new 出来的对象都在堆上栈。函数中的局部变量&#x…

linux服务器部署filebeat

# 下载filebeat curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.23-linux-x86_64.tar.gz # 解压 tar xzvf filebeat-7.17.23-linux-x86_64.tar.gz# 所在位置&#xff08;自定义&#xff09; /opt/filebeat-7.17.23-linux-x86_64/filebeat.ym…

一篇文章快速学会docker容器技术

目录 一、Docker简介及部署方法 1.1Docker简介 1.1.1什么是docker 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 二 、部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服务 2.2.…

C嘎嘎入门篇:类和对象(2)

前言&#xff1a; 上一篇小编讲了类和对象&#xff08;1&#xff09;&#xff0c;当然&#xff0c;在看这篇文章之前&#xff0c;读者朋友们一定要掌握好前面的基础内容&#xff0c;因为这篇和前面息息相关&#xff0c;废话不多说&#xff0c;下面小编就加快步伐&#xff0c;开…

css的背景background属性

CSS的background属性是一个简写属性&#xff0c;它允许你同时设置元素的多个背景相关的子属性。使用这个属性可以简化代码&#xff0c;使其更加清晰和易于维护。background属性可以设置不同的子属性。 background子属性 定义背景颜色 使用background-color属性 格式&#x…