http和https

1. http的3个版本的区别

1.1. HTTP 1.0:像你家的大门

  • 无连接:服务器处理完后立即断开TCP连接
  • 无状态:服务器不跟踪每个客户端也不记录过去的请求

每次进出大门都要开门。

1.2. HTTP 1.1:像卧室的那张床

  • 长连接:KeepAlived长连接避免了连接建立和释放的开销
  • 有状态:通过Content-Length来判断当前请求数据是否已经全部接受

你可以躺在床上很久(长连接),直到你的定时闹钟(content-length)响起来。

1.3. HTTP 2.0:像自动工作的厨房

  • 二进制流:引入二进制数据帧和流的概念,其中帧对数据进行顺序标识
  • 多路复用:因为有了序列,服务器可以并行的传输数据
  • 主动推送:支持服务器主动向客户端推送资源,而不需要客户端先请求
  • 头部压缩:使用压缩算法对头部信息进行压缩,通讯双方各自缓存一份header_files表,既避免重复header的传输,又减少了需要传输的大小

厨房里有多条输送带同时工作(多路复用),把各种液体(二进制流)从冰箱直接推送到锅里(服务端主动推送),一种液体开始被推送前,它前面有一张有二维码的小纸条(头部压缩)标识这个液体的溯源信息。

2. https链接建立过程

1. 客户端(比如浏览器)向服务器发送一个连接请求,表明想要建立 HTTPS 连接。

2. 服务器返回数字证书,这个数字证书就是服务器的身份证,包含了服务器的名称、公钥等。

3. 客户端找CA机构验证数字证书是否合法有效。

这就好比收到一个陌生人的身份证,要去相关部门核实这张身份证是不是真的,以及是不是这个人的。

4. 客户端生成对称密钥。

5. 客户端用服务器公钥加密对称密钥并发送给服务器

6. 服务器用私钥解密获取对称密钥。

7. 双方使用对称密钥进行加密通信。

3. cookie和session

  • 存储位置
  1. Cookie:存在客户端(通常是浏览器)。
  2. Session:存在服务端。
  • 安全性
  1. Cookie:存在客户端,可能被篡改或窃取。
  2. Session:数据在服务器端,相对更安全。
  • 存储容量
  1. Cookie:一般有存储大小的限制,通常为 4KB 左右。
  2. Session:理论上存储容量没有严格限制,取决于服务器的配置和资源。
  • 生命周期
  1. Cookie:可以设置较长的生存时间,甚至可以持久存储。
  2. Session:默认情况下,当用户会话结束(如关闭浏览器),Session 数据会被销毁。但也可以通过编程设置 Session 的超时时间。

例如,在一个购物网站上选择了一些商品加入购物车。

  • 如果用Cookie,会保存在浏览器,其他人使用电脑时能看到购物车内容。
  • 如果用Session,会保存在服务端,只有在与服务器保持连接的会话期间能够访问这些信息。

4. 浏览器输入URL过程

1.浏览器解析 URL:确定要使用的协议(如 HTTP 、 HTTPS 等)、域名和资源路径。

2.发起 DNS 查询: 浏览器缓存、路由器缓存、DNS缓存 、host文件。

3.服务器建立 TCP 连接。

4.发送 HTTP 请求。

5.服务器处理请求:可能经过防火墙、网关、负载均衡器等。

6.服务器返回 HTTP 响应。

7.浏览器接收响应。

8.渲染页面。

9.关闭连接(根据协议和设置):在 HTTP 1.1 中,如果是持久连接,可能不会立即关闭;在 HTTP 2.0 中,通过多路复用,一个连接可处理多个请求和响应。

### IntelliJ IDEA 中通义 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义 AI 相关的功能。这些功能可以帮助开发者更高效地编写代并提高生产力。 #### 安装通义插件 为了使用通义的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义服务 成功安装插件之后,还需要配置通义的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义辅助编程 一旦完成上述准备工作,就可以利用通义来进行智能编支持了。具体操作如下所示: ##### 自动补全代片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义解析这段代的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值