【JavaEE】http/https 超级详解

news2024/11/20 14:25:47

   🔥个人主页: 中草药

🔥专栏:【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.coloradmin.cn/o/2182887.html

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

相关文章

《PMI-PBA认证与商业分析实战精析》 第3章 需要评估

本章涵盖的考试重点&#xff1a; 需要评估的四项活动 需要评估四项活动的可交付成果 需要评估相关活动的技术 商业论证的内容 情境说明书的格式 目的、目标和商业论证的层次结构 成本收益分析的四种财务计价方法 需要评估领域就是聚焦在目标定义上。 商业分析师所需要…

ZenStack全栈开发工具(一)快速使用指南

简介 ZenStack是一个TypeScript工具&#xff0c;通过灵活的授权和自动生成的类型安全的 API/钩子来增强 Prisma ORM&#xff0c;从而简化全栈开发 数据库-》应用接口 数据库-》前端 参考官方网站&#xff1a;https://zenstack.dev/ 如果我们想做一个全栈开发的web应用程序&am…

目标检测技术的发展:从R-CNN、YOLO到DETR、DINO

“深度人工智能”是成都深度智谷科技旗下的人工智能教育机构订阅号&#xff0c;主要分享人工智能的基础知识、技术发展、学习经验等。此外&#xff0c;订阅号还为大家提供了人工智能的培训学习服务和人工智能证书的报考服务&#xff0c;欢迎大家前来咨询&#xff0c;实现自己的…

[FlareOn3]Challenge11

载入PE. 32 bit&#xff0c;无壳. 载入IDA&#xff08;32bit&#xff09;. 寻找main函数. int __cdecl main(int argc, const char **argv, const char **envp) {char Buffer[128]; // [esp0h] [ebp-94h] BYREFchar *Str1; // [esp80h] [ebp-14h]char *Str2; // [esp84h] [eb…

ROS理论与实践学习笔记——2 ROS通信机制之常用API

"API" 是 "Application Programming Interface" 的缩写&#xff0c;指的是应用程序编程接口。API是一组定义了不同软件组件如何互相通信的规范。它允许不同的软件系统之间共享功能&#xff0c;提供一种标准的方式来访问某个软件组件的功能或数据。 详细内…

JavaScript模块化-CommonJS规范和ESM规范

1 ES6模块化 1.1 ES6基本介绍 ES6 模块是 ECMAScript 2015&#xff08;ES6&#xff09;引入的标准模块系统&#xff0c;广泛应用于浏览器环境下的前端开发。Node.js环境主要使用CommonJS规范。ESM使用import和export来实现模块化开发从而解决了以下问题&#xff1a; 全局作用…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频&#xff0c;一期视频将常用配置和用法梳理清楚&#xff0…

Win10系统插入带有麦克风的耳机_麦克风不起作用_解决方法_亲测成功---Windows运维工作笔记054

今天我在使用讯飞输入法的时候,想通过讯飞的语音输入法来提高自己的输入效率。 但是这个时候发现一个问题就是我插入我的台式机的是一个带有麦克风的耳机。 但是发现我这个耳机没有办法被电脑识别出麦克风来,所以说就没办法使用讯飞输入法的语音输入功能来直接输入文字了。…

Qt 窗口中鼠标点击事件的坐标探讨

// 鼠标点击事件 void Widget::mousePressEvent(QMouseEvent *event) {/*event->pos()、event->windowPos()和event->localPos()都表示鼠标点击位置在窗口中的位置&#xff0c;它们的值都是一样的&#xff0c;区别在于event->pos()是QPoint类型&#xff0c;event-&…

操作系统-磁盘管理

存储管理中的磁盘管理涉及到几个核心概念&#xff1a;磁道、扇区、磁头、盘面。 磁道&#xff1a;磁盘表面的同心圆&#xff0c;用于记录数据。每个磁道可以存储相同量的信息。 扇区&#xff1a;磁道被进一步划分的更小单元&#xff0c;通常是磁道的最小存储单位。一个常见的扇…

【新闻转载】Storm-0501:勒索软件攻击扩展到混合云环境

icrosoft发出警告&#xff0c;勒索软件团伙Storm-0501近期调整了攻击策略&#xff0c;目前正将目标瞄准混合云环境&#xff0c;旨在全面破坏受害者的资产。 该威胁行为者自2021年首次露面&#xff0c;起初作为Sabbath勒索软件行动的分支。随后&#xff0c;他们开始分发来自Hive…

C++发邮件:如何轻松实现邮件自动化发送?

C发邮件的详细步骤与教程指南&#xff1f;如何在C中发邮件&#xff1f; 无论是定期发送报告、通知客户还是管理内部沟通&#xff0c;自动化邮件系统都能显著提升工作效率。AokSend将详细介绍如何使用C发邮件&#xff0c;实现邮件自动化发送&#xff0c;帮助您轻松管理邮件通信…

10/1 力扣 49.字母异位词分组

基本知识&#xff1a; 关于字符串的排序&#xff1a; 1.多个字符串排序 1.1使用python内置的sorted() 使用该函数后原对象并不发生变化 1.2若多个字符串使用列表进行存储&#xff0c;使用列表的sort()方法 使用该函数后原对象原地变化 2.对单个字符串里的字母进行排序 使…

关于CSS 案例_新闻内容展示

新闻要求 标题:居中加粗发布日期: 右对齐分割线: 提示, 可以使用 hr 标签正文/段落: 左侧缩进插图: 居中显示 展示效果 审核过不了&#xff0c;内容没填大家将就着看吧。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

【异常数据检测】孤立森林算法异常数据检测算法(数据可视化 Matlab语言)

摘要 本文研究了基于孤立森林算法的异常数据检测方法&#xff0c;并在MATLAB中实现了该算法的可视化。孤立森林是一种无监督的异常检测算法&#xff0c;主要通过构建决策树来区分正常数据和异常数据。本文使用真实数据集&#xff0c;通过二维可视化展示了检测结果。实验结果表…

肝郁气滞有什么症状

在这个快节奏、高压力的时代&#xff0c;我们的身体往往承载着超负荷的情绪与压力&#xff0c;而“肝郁气滞”这一中医术语&#xff0c;正悄然成为许多现代人健康的隐形杀手。它如同体内的“情绪交通堵塞”&#xff0c;不仅影响心情&#xff0c;更波及全身健康。今天&#xff0…

计算机毕业设计 基于Python的新闻采集与订阅平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【C++】多态,虚函数,重载,重写,重定义,final,override,抽象类,虚函数表,动态绑定,静态绑定详解

目录 1. 多态的定义 1.1 多态的构成条件 1.2 虚函数 1.3 虚函数重写 1.4 重载&#xff0c;重写&#xff0c;重定义 1.5 final 1.6 override 2. 抽象类 3. 多态的原理 3.1 虚函数表 3.2 子类的虚函数表 3.3 多态本质 3.4 动态绑定和静态绑定 4. 多继承关系的虚…

php语法学习

MySQL问题 如果外部mysql与内部mysql冲突&#xff0c;php连接如果已经打开mysql说明他启动的是外部的mysql8&#xff0c;单独点击服务器启动apache就不会冲突。 打开navicat 打开浏览器测试 1.单行和多行注释 2.中文乱码问题 <?php //echo "Hello World 你好&#…

Agr_Reader 1.7.11 极简优美的RSS阅读器,无广告

Agr Reader是一款简洁、优美、符合Material You风格的RSS阅读器。它不仅提供了强大的全文解析功能&#xff0c;默认支持离线阅读&#xff0c;还具备桌面小组件、自定义样式设置等功能。此外&#xff0c;它支持接入FreshRSS、Tiny Tiny RSS等多种RSS服务&#xff0c;并提供沉浸式…