[杂学笔记]HTTP1.0和HTTP1.1区别、socket系列接口与TCP协议、传输长数据的时候考虑网络问题、慢查询如何优化、C++的垃圾回收机制

目录

1.HTTP1.0和HTTP1.1区别

2.socket系列接口与TCP协议

3.传输长数据的时候考虑网络问题

4.慢查询如何优化

5.C++的垃圾回收机制


1.HTTP1.0和HTTP1.1区别

  • 在连接方式上,HTTP1.0默认采用的是短链接的方式,就建立一次通信,也就是说即使在TCP协议下,完成了一个HTTP报文的请求和响应之后,也会关闭连接。这种频繁的建立和关闭连接会增加服务器的负担。虽然说HTTP1.0版本不支持长连接,但是可以通过设置Connection: Keep-Alive字段来启动类似长连接的功能,但是是不标准的方式。而HTTP1.1引入了长连接机制,在一个TCP连接上可以传递多个HTTP请求与响应报文。
  • 缓存机制上,HTTP1.0采用的是通过字段的方式指定缓存的内容有效时间,客户端在这段时间内可以使用缓存的副本而无需向服务器重新请求。但是这样的话也无法验证数据的实时性,可能服务端更新了呢?而HTTP1.1版本的话,增加了缓存控制能力,提供了字段来规定客户端在使用缓存内容的时候,需要先向服务端验证数据的有效性。

2.socket系列接口与TCP协议

  • socket建立网络通信套接字、bind进行ip地址和端口号绑定、服务端进行listen监听操作是在通信之间进行的。
  • connect接口:操作客户端向服务器发起连接请求,在TCP协议层的操作就是相当于发起三次握手,直到客户端收到第二次握手的SYN+ACK响应报文,connect函数才会返回,期间会一直阻塞住。
  • accept接口:服务端在接收到第三次握手的ACK报文之后,会和客户端真正的建立连接,之后accept就是将全连接队列中的连接对象与文件描述符建立连接。
  • listen接口的第二个参数:就是全连接队列的最大长度。

3.传输长数据的时候考虑网络问题

        当网络出现问题的时候导致的数据丢包的问题,并非是TCP协议能够解决的问题了,因为TCP协议是在网络通畅,双方连接没有断开的情况下,维护发送但没有收到应答的时候,但是一旦网络出问题了,就相当于连接断开了,那么在销毁这个连接的时候,TCP缓存的数据也就跟着销毁了。但是我们想做到的是,当网络出现问题之后,在重新建立连接,数据会从上一次断开连接的位置之后发送数据。

        那么首先就需要在应用层协议的报头上加入类似于TCP协议的32位序号和确认序号了,但是这里一个负责发送一个负责响应,所以只用一个序号就可以了。服务端报文的序号代表发送的数据序号,客户端报文的序号代表接收到的数据块序号。

        之后再服务端的应用层,维护一个指针指向整体数据的已经发送并且得到确认的位置,那么就分成了两个区域,指针左边就是已发送已确认区域,右边是没发送或者发送了没有确认的区域,这样的话,该指针指向的位置,就是客户端收到数据的位置。如果说网络出现问题的话,再重新连接之后,会根据客户端发来的序号,更新指针的位置,继续发送数据。

        对于客户端来说,也需要再应用层将这些数据保存起来,并记录收到的最后一个数据的序号,在网络问题断开连接后,重新连接,会将该序号放进报头中,告诉服务端该从哪里发送了。

        因为是分块发送的,所以服务端最后需要告诉客户端数据发送完毕了,所以就会出现很多类型报文,所以还需要再报头添加报文类型字段:客户端请求响应报文,服务端发送数据块报文、客户端接收到数据块的响应报文、服务端发送完所有数据的报文。

        

4.慢查询如何优化

        慢查询是数据库的一个概念,指的是执行时间过长超过了long_query_time设定的值的擦汗寻语句,就属于慢查询语句。慢查询会对数据库的性能产生严重影响,当数据库中有大量的慢查询的时候,会导致数据库服务器的CPU使用了过高。还可能导致数据库连接池被沾满,新的请求无法及时获取到。

  • 优化查询语句本身:第一:索引优化;第二:子查询优化,尽量减少嵌套查询的使用,例如,有一个查询需要获取购买了某一商品的用户信息,一种不好的做法是先通过子查询找到购买了该商品的用户 ID,然后再在另一个查询中根据这些用户 ID 获取用户信息。这种嵌套子查询可以通过使用连接(JOIN)操作来优化;第三:尽量不要使用select *语句。
  • 优化数据库架构:第一:采用合理的数据类型定义字段;第二:对于大型数据表,可以考虑使用分区结构
  • 优化服务器配置:第一:调整缓存大小,第二:硬件的升级

5.C++的垃圾回收机制

        C++没有配套的垃圾回收机制,需要程序员使用new、delete去手动的管理内存资源,也可以使用C++11的智能指针,配合析构函数来实现对资源的自动管理。或者使用第三方库来实现资源的回收工作。

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

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

相关文章

ANI AGI ASI的区别

‌‌ANI、‌AGI、‌ASI的区别主要体现在定义、特点和应用场景上‌: 1. ANI(狭义人工智能 Artificial narrow intelligence)‌: ‌定义‌:ANI,也被称为弱人工智能,是指专门设计用于执行特定任务…

用OpenCV写个视频播放器可还行?(Python版)

引言 提到OpenCV,大家首先想到的可能是图像处理、目标检测,但你是否想过——用OpenCV实现一个带进度条、倍速播放、暂停功能的视频播放器?本文将通过一个实战项目,带你深入掌握OpenCV的视频处理能力,并解锁以下功能&a…

leetcode日记(77)子集Ⅱ

不知道为什么看到这道题就很头痛…… 其实只要掌握nums不包含重复元素的情况下的代码就行了。 若nums不能包含重复元素&#xff0c;那么使用回溯很容易就能写出来&#xff1a; class Solution {void hs(vector<int> v,int x,vector<int> r,vector<vector<…

通俗版解释:分布式和微服务就像开餐厅

一、分布式系统&#xff1a;把大厨房拆成多个小厨房 想象你开了一家超火爆的餐厅&#xff0c;但原来的厨房太小了&#xff1a; 问题&#xff1a;一个厨师要同时切菜、炒菜、烤面包&#xff0c;手忙脚乱还容易出错。 解决方案&#xff1a; 拆分成多个小厨房&#xff08;分布式…

StarRocks-fe工程在Cursor中不能识别为Java项目

SR简介 StarRocks 是一款高性能分析型数据库&#xff0c;支持实时、多维度、高并发的数据分析。本指南旨在解决在使用 VSCode 或 Cursor 开发 StarRocks 后端项目时遇到的模块识别问题。 问题描述 使用 Cursor 或 VSCode 打开 StarRocks 的后端工程 fe 时&#xff0c;spark-…

第五节:基于Winform框架的串口助手小项目---串口收发《C#编程》

“路漫漫其修远兮&#xff0c;吾将上下而求索” &#xff0c; -----------------------WHAPPY 目标任务&#xff1a; 1 从本地设备列表获取串口。 RegistryKey keyCom Registry.LocalMachine.OpenSubKey("Hardware\DeviceMap\SerialComm"); RegistryKey 是.NET 框…

专题二最大连续1的个数|||

1.题目 题目分析&#xff1a; 给一个数字k&#xff0c;可以把数组里的0改成1&#xff0c;但是只能改k次&#xff0c;然后该变得到的数组能找到最长的子串且都是1。 2.算法原理 这里不用真的把0变成1&#xff0c;因为改了比较麻烦&#xff0c;下次用就要改回成1&#xff0c;这…

25年第四本【认知觉醒】

《认知觉醒》&#xff1a;一场与大脑的深度谈判 在信息爆炸的焦虑时代&#xff0c;我们像被抛入湍流的溺水者&#xff0c;拼命抓取各种自我提升的浮木&#xff0c;却在知识的漩涡中越陷越深。这不是一本简单的成功学指南&#xff0c;而是一场关于人类认知系统的深度对话&#…

甘特图开发代码(测试版)

场景&#xff1a;要实现的功能就是单行数据能左右拖动。 流程五个&#xff1a;ABCDE。&#xff08;对应&#xff1a;Charter开发、概念和计划、初样开发、正样开发、验证&#xff09; 1、A有开始时间&#xff0c;结束时间。B的开始时间必须是A的结束时间&#xff08;相等或者…

服务器配置-从0到分析4:ssh免密登入

该部分涉及到公钥、私钥等部分knowledge&#xff0c;本人仅作尝试 若将本地机器 SSH Key 的公钥放到远程主机&#xff0c;就能无需密码直接远程登录远程主机 1&#xff0c;在客户端生成 ssh 公私钥&#xff1a; 也就是我们本地机器&#xff0c;windows电脑 一路回车即可&am…

使用easyocr、PyPDF2对图像及PDF文档进行识别

一、概述 本 Python 脚本的主要功能是对当前目录及其子目录下的图片和 PDF 文件进行光学字符识别&#xff08;OCR&#xff09;处理。它使用 easyocr 库处理图片中的文字&#xff0c;使用 PyPDF2 库提取 PDF 文件中的文本&#xff0c;并将处理结果保存为文本文件。同时&#xff…

2000-2020年各省地方财政一般预算支出数据

2000-2020年各省地方财政一般预算支出数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标;行政区划代码、地区、年份、地方财政一般预算支出(亿元) 4、范围&#xff1a;31省 5、指标解释&#xff1a;一般预算支出是国家对集中的预算收…

k8s 中各种发布方式介绍以及对比

前言 在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;不同的发布策略&#xff08;如金丝雀发布、灰度发布、蓝绿发布等&#xff09;各有其适用场景和优缺点。 1. 滚动发布&#xff08;Rolling Update&#xff09; 核心原理&#xff1a;逐步替换旧版本 Pod 为新版本&…

力扣HOT100之哈希:1. 两数之和

这道题之前刷代码随想录的时候已经刷过好几遍了&#xff0c;看到就直接秒了。这道题主要是通过unordered_map<int, int>来建立哈希表&#xff0c;其中键用来保存向量中的元素&#xff0c;而对应的值则为元素的下标。遍历整个向量&#xff0c;当遍历到nums[i]时&#xff0…

kakfa-3:ISR机制、HWLEO、生产者、消费者、核心参数负载均衡

1. kafka内核原理 1.1 ISR机制 光是依靠多副本机制能保证Kafka的高可用性&#xff0c;但是能保证数据不丢失吗&#xff1f;不行&#xff0c;因为如果leader宕机&#xff0c;但是leader的数据还没同步到follower上去&#xff0c;此时即使选举了follower作为新的leader&#xff…

从小米汽车召回看智驾“命门”:智能化时代 — 时间就是安全

2025年1月&#xff0c;小米因车辆“授时同步异常”召回3万余辆小米SU7&#xff0c;成为其造车历程中的首个重大安全事件。 从小米SU7召回事件剖析&#xff0c;授时同步何以成为智能驾驶的命门&#xff1f; 2024年11月&#xff0c;多名车主反馈SU7标准版的智能泊车辅助功能出现…

FastGPT 引申:如何基于 LLM 判断知识库的好坏

文章目录 如何基于 LLM 判断知识库的好坏方法概述示例 Prompt声明抽取器 Prompt声明检查器 Prompt 判断机制总结 下面介绍如何基于 LLM 判断知识库的好坏&#xff0c;并展示了如何利用声明抽取器和声明检查器这两个 prompt 构建评价体系。 如何基于 LLM 判断知识库的好坏 在知…

【数据挖掘】NumPy的索引与切片(Indexing Slicing)

&#x1f4cc; NumPy ndarray 的索引与切片&#xff08;Indexing & Slicing&#xff09; NumPy 提供 灵活高效 的索引与切片方式&#xff0c;支持 一维、二维、多维数组 的访问与操作。 1️⃣ 索引&#xff08;Indexing&#xff09; 索引用于访问 NumPy 数组中的 单个元素…

AI工具:deepseek+阶跃视频,生成好玩的视频

目标 测试一下&#xff0c;当下好玩的AI工具&#xff0c;缓解一下紧张的AI学习~ 用deepseek生成视频制作提示词&#xff0c;让后把提示词给阶跃视频生成&#xff0c;一个视频就生成了。具体操作如下。 操作过程 在阶跃官网&#xff0c;阶跃AI&#xff0c;注册一个账号&…

利用矩阵相乘手动实现卷积操作

卷积&#xff08;Convolution&#xff09; 是信号处理和图像处理中的一种重要操作&#xff0c;广泛应用于深度学习&#xff08;尤其是卷积神经网络&#xff0c;CNN&#xff09;中。它的核心思想是通过一个卷积核&#xff08;Kernel&#xff09; 或 滤波器&#xff08;Filter&am…