[杂学笔记]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的智能指针,配合析构函数来实现对资源的自动管理。或者使用第三方库来实现资源的回收工作。
相关文章:
[杂学笔记]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默认采用的是短链接的方式,就建立一次通信,也就是说即使在…...
电商主图3秒法则
1. 基础铁律 ▸ 首图点击率曝光量/点击量 ▸ 黄金3秒:触发冲动 > 信息堆砌 2. 必守三原则 ✔ 单点爆破 → 1核心功能 > 10卖点叠加(反例:电子类目点击率↓18%) ✔ 场景植入 → 带场景主图点击率↑34%(数据源:20…...
DeepSeek DeepEP学习(一)low latency dispatch
背景 为了优化延迟,low lantency使用卡间直接收发cast成fp8的数据的方式,而不是使用normal算子的第一步执行机间同号卡网络发送,再通过nvlink进行转发的两阶段方式。进一步地,normal算子的dispatch包含了notify_dispatch传输meta…...
Metal学习笔记十:光照基础
光和阴影是使场景流行的重要要求。通过一些着色器艺术,您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成,如果您没有正确地照亮它们,场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…...
Wpf-ReactiveUI-Usercontrol交互
文章目录 1、使用属性绑定UserControl 部分(MyUserControl.xaml.cs)UserControl 视图模型部分(MyUserControlViewModel.cs)主界面部分(MainWindow.xaml)主界面视图模型部分(MainWindowViewModel.cs)2、使用消息传递UserControl 视图模型部分(MyUserControlViewModel.c…...
报告分享 | 哈工大赛尔实验室——大模型时代的具身智能
本报告详细介绍了大模型时代的具身智能,探讨了智能机器人的发展历程、技术挑战和未来发展方向。( 报告全文下载:具身大模型关键技术与应用(哈尔滨工业大学社会计算与信息检索研究中心).pdf!)...
机器学习校招面经二
快手 机器学习算法 一、AUC(Area Under the ROC Curve)怎么计算?AUC接近1可能的原因是什么? 见【搜广推校招面经四】 AUC 是评估分类模型性能的重要指标,用于衡量模型在不同阈值下区分正负样本的能力。它是 ROC 曲线…...
第四十一:Axios 模型的 get ,post请求
Axios 的 get 请求方式 9.双向数据绑定 v-model - 邓瑞编程 Axios 的 post 请求方式:...
全国青少年航天创新大赛各项目对比分析
全国青少年航天创新大赛各项目对比分析 一、比赛场地对比 项目名称场地尺寸场地特点组别差异筑梦天宫虚拟三维场景动态布局,小学组3停泊处,初高中组6停泊处;涉及传送带、机械臂、传感器等虚拟设备。初中/高中组任务复杂度更高,运…...
20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式
20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起:128GB的TF卡,只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下,NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…...
服务器配置-从0到分析4:ssh免密登入
该部分涉及到公钥、私钥等部分knowledge,本人仅作尝试 若将本地机器 SSH Key 的公钥放到远程主机,就能无需密码直接远程登录远程主机 1,在客户端生成 ssh 公私钥: 也就是我们本地机器,windows电脑 一路回车即可&am…...
React 组件基础介绍
基本概念:一个组件就是用户界面的一部分,可以有自己的逻辑和外观,组件之间可以互相嵌套、复用多次。每个组件就是一个首字母大写的函数,内部存放了组件的逻辑和试图UI,渲染组件只需要把组件 当成 标签 书写。App 可以视…...
环境变量 ─── linux第14课
本内容为总结: 1. 环境变量本质是配置信息, 在系统配置时起效 . 2. 环境变量具有全局性(子进程可以继承父进程的环境信息,不能继承本地变量) 3. 进程具有独立性 ,环境变量可以进程间传递信息(只读信息) 环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操…...
英文生物信息学技术社区Top10推荐:基本情况、评介和网页链接
英文生物信息学技术社区Top10推荐:基本情况、评介和网页链接 李升伟 一、思考与分析 生物信息学涉及生物数据分析和计算工具,所以相关的社区可能包括论坛、问答平台、资源库等等。 首先,我想到Biostars,这是一个比较知名的生物信…...
基于APDL语言的结构优化设计
1、前言 结构设计是创造结构方案的过程,传统的结构设计是设计者按设计要求和设计者的实践经验,参考类似工程,通过判断创造结构方案,然后进行力学分析或按规范要求作安全校核,再修改设计。 而结构优化设计与分析则把力…...
五、Redis 持久化:RDB 与 AOF 深入解析与优化策略
Redis 持久化:RDB 与 AOF 深入解析与优化策略 在 Redis 作为高性能缓存和数据库使用的过程中,数据持久化 是一个关键问题。Redis 提供了两种主要的持久化机制:RDB(Redis Database 快照) 和 AOF(Append-Only File 日志)。本文将详细介绍 Redis 持久化机制的原理、优缺点…...
一、MySQL备份恢复
一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时,意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后,系统进行自检操作 升级数据库时,命令语句不严格 设备故…...
【Linux第三弹】Linux基础指令 (下)
目录 🌟1.find指令 1.1find使用实例 编辑 🌟2.which指令 🌟3.grep指令 3.1grep使用实例 🌟 4.zip/unzip指令 4.1 zip/unzip使用实例 🌟5.tar指令 5.1 tar使用实例 🌟6.完结 很庆幸走在自己…...
VB6网络通信软件开发,上位机开发,TCP网络通信,读写数据并处理,完整源码下载
VB6网络通信软件开发,上位机开发,TCP网络通信,读写数据并处理,完整源码下载 完整源码XZ网口四进四出主动上传版_VB源代码.rar 下载链接:http://xzios.cn:86/WJGL/DownLoadDetial?Id20 在自动化、物联网以及工业控制…...
TMS320F28P550SJ9学习笔记1:CCS导入工程以及测试连接单片机仿真器
学习记录如何用 CCS导入工程以及测试连接单片机仿真器 以下为我的CCS 以及驱动库C2000ware 的版本 CCS版本: Code Composer Studio 12.8.1 C2000ware :C2000Ware_5_04_00_00 目录 CCS导入工程: 创建工程: 添加工程: C…...
阿里万相,正式开源
大家好,我是小悟。 阿里万相正式开源啦。这就像是AI界突然开启了一扇通往宝藏的大门,而且还是免费向所有人敞开的那种。 你想想看,在这个科技飞速发展的时代,AI就像是拥有神奇魔法的魔法师,不断地给我们带来各种意想…...
Glide图片加载优化全攻略:从缓存到性能调优
在 Android 的图片加载库 Glide 中,当图片加载到列表(如 RecyclerView 或 ListView)时,Glide 会根据其内部的线程池和缓存机制来管理图片的加载任务。以下是关于 Glide 在列表中同时异步加载几张图片的相关细节: 1. Gl…...
力扣HOT100之哈希:49. 字母异位词分组
这道题自己先想了一边,定义了一个比较字符串的函数,用二重循环和一个数组来实现字符串的比较,若两个字符串是异位词,那么就返回true,否则返回false,在主函数中,同样用一个二重循环来遍历向量中的…...
纯前端使用 Azure OpenAI Realtime API 打造语音助手
本文手把手教你如何通过纯前端代码实现一个实时语音对话助手,结合 Azure 的 Realtime API,展示语音交互的未来形态。项目开源地址:https://github.com/sangyuxiaowu/WssRealtimeAPI 1. 背景 在这个快节奏的数字时代,语音助手已经…...
基于Windows11的RAGFlow安装方法简介
基于Windows11的RAGFlow安装方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是否成功&#…...
教育强国建设“三年行动计划“分析
教育部即将推出的教育强国建设"三年行动计划"中,职业教育板块的部署体现出鲜明的战略导向和创新思维,其核心是通过系统化布局和结构性改革推动职业教育高质量发展。以下从政策内涵、实施路径及潜在影响三个维度展开分析: 一、政策…...
基于Spring Boot+vue的厨艺交流平台系统设计与实现
大家好,今天要和大家聊的是一款基于Spring Boot的“厨艺交流平台”系统的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于Spring Boot的“厨艺交流平台”系统设计与实现的主要使用者分为管理员、普通用户和游客。没有…...
GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析
引言:大语言模型计算基础设施的演进 随着大语言模型(LLM)的快速发展与广泛应用,高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务:GPU(图形处理单元…...
Spring Boot Gradle 项目中使用 @Slf4j 注解
Spring Boot Gradle 项目中,如果想使用 Slf4j 注解来启用日志记录,首先需要添加 Lombok 和 SLF4J 的依赖。可以通过以下步骤来添加它们: 1. 添加 Lombok 依赖 在 build.gradle 文件中添加以下 Lombok 依赖: dependencies {impl…...
第四十五:创建一个vue 的程序
html <div id"app">{{ msg }}<h2>{{ web.title }}</h2><h3>{{ web.url }}</h3> </div> js /*<div id"app"></div> 指定一个 id 为 app 的 div 元素{{ }} 插值表达式, 可以将 Vue 实例中定义的数据在视图…...
