[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传
文章目录
- 1. TCP和UDP的区别
- 2. 对http接口解释
- 3. Cookie和Session的区别
- 4. http和https的区别
- 5. 智能指针
- 6.断点续传
1. TCP和UDP的区别
- tcp的特点: 面向连接,可靠性高,全双工,面向字节流
- udp特点:无连接,不可靠(但是对实时性要求高),头部开销少,
主要区别:连接性与可靠性 : tcp是面向连接的协议,提供可靠的数据传输服务; 而udp是无连接的,不可靠
头部开销与传输效率 : tcp的头部开销大,包含更多控制信息,传输效率低 ; udp的头部开销少,传输效率高
应用场景 : tcp适用于可靠性的场景,文件传输,电子邮件等; udp适用于实时传输,视频流,Voip(VoIP(互联网电话协议)是一种电话技术,允许您使用互联网而不是传统电话线拨打和接听电话。)等
视频音频适用于UDP协议
- 实时性,对数据丢失不敏感,避免TCP的拥塞控制对实时性的影响。
- 视频音频对于实时性的要求很高,UDP的报头只有8个字节,比TCP少了12个字节,这使得UDP在传输数据时的开销小,效率高,还不用建立连接。 如果因为建立连接,重传等操作导致延迟过大,会影响用户体验
- 视频中的一帧画面的画面丢失,音频的短暂杂音,影响体验很小,TCP拥有拥塞控制机制,当网络拥塞的时候,会降低发送报文的频率,这样会影响实时性。让TCP去参与网络疏导
2. 对http接口解释
HTTP工作原理
- HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。
- 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
-
客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
例如,http://www.baidu.com。 -
发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 -
服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。 -
释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求; -
客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 域名解析得到目标服务器的ip地址,ip地址底层基于tcp,要先三次握手建立连接,在套接字就是connect,获取成功后在应用层由浏览器构建request,http请求构建http请求行,请求报头,空行,必要时有正文,
- 然后把http请求通过系统调用接口发送给对方,对方收到了http请求后,会对http请求进行 比如面向字节流以及粘包问题,把报文解出来,然后做序列化得到http相关字段以及请求url,然后读取url所对应的资源,都有就构建响应报头,状态行,正文,然后把整个信息构建成一个response, response通过系统调用发送给客户端,
- 客户端在对response解决粘包问题把报文和报文之间分开,通过反序列化提取正文,正文可以是网页或者图片,由网页或图片被浏览器解释渲染
更细一点就是 : 在双方操作系统中,发数据并不是把数据发送给对方,也不是发送到网络,而是拷贝到操作系统底层的tcp发送缓冲区,所以tcp传输控制的时候就可以根据流量控制,拥塞控制,捎带应答,快重传,各种可靠性策略,效率策略把数据发送给对方,再往下谈,滑动窗口,每一次对应的数据段也不直接发送给对方,而是交给了ip报文,在这里也添加了自己的ip报头,这里也有分片和组装的问题…
HTTP请求方法

HTTP状态码

3. Cookie和Session的区别
- cookie常存储在浏览器或者本地,session只能在服务器
- cookie只能存储string对象,session可以存储任意的jave对象
- session更安全,但是session过多的话,会造成服务器压力问题
- 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关。
- 更详细看这篇文章彻底了解Cookie和Session的区别(面试)
4. http和https的区别
- http的post和get都是没有加密的,都可以被抓包软件抓到
- https就是在应用层和传输层进行加密(SSL&TLS,SSL/TLS是用于在计算机网络上进行安全通信的协议。)
1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
TLS握手过程 : 1. 客户端和服务器商定通信所使用的TLS版本(双发互发信息,密码组合,证书) 2. 确定双方要使用的密码组合 3.客户端通过服务器的公钥和证书验证服务器身份 4. 生成会话密钥用于结束后的对称加密(双方互发加密的finished信号)
5. 智能指针
原理:
- 在对象构造时获取资源,在对象析构的时候释放资源,利用对象的生命周期来控制程序资源,即RALL特性
- *和 ->进行重载,使得该对象具有像指针一样的行为
- 智能指针的拷贝问题 , 为什么要解决 : SmartPtr sp1(new int); SmartPtr sp2(sp1); //拷贝构造 对内置类型浅拷贝,构造sp2后会让两者管理同一片空间,析构会导致空间被释放两次(赋值构造也是如此)
-
auto_ptr : 最早的智能指针,他只会允许统一时间只有一个智能指针指向同一个对象,当发生赋值或者拷贝的话,所有权就会转移,就相当于该指针不在管理对象了。
所有权转移的实现是在析构和赋值构造中释放自己管理的对象,然后将管理权赋值给接管自己的对象 -
unique_ptr(防拷贝 = delete) : 和auto_ptr一样,但是他不允许赋值和拷贝操作。会将拷贝构造函数和赋值重载函数禁用。
-
shared_ptr : 是共享所有权的一个指针,他允许多个智能指针指向同一个对象,他内部使用引用计数来记录个数,当引用计数为0的时候,才会去释放指向的对象资源。
增加一个内部成员变量int* _pcount;,表明引用计数个数 ,不能被定义为int类型是因为不能让每个shared_ptr对象有一个自己的count的成员变量, 不能为静态,不能让所有对象拥有同一个count成员变量
注意 :
- 存在线程安全问题:多个线程可能会对同一个引用进行自增或自减操作,而自增或自减操作都不是原子操作,需要加锁进行保护。
- 存在循环引用问题 : 有两个结点 :node1->_next = node2; node2->_prev = node1; node1的释放取决于node2中的prev成员,node2的释放取决于node1的next成员。
解决方法 : 将ListNode中的成员变量std::shared_ptr _next; 变为 std::weak_ptr _next;
- weak_ptr : 大多数是用来配合shared_ptr进行使用的,解决了shared_ptr的循环引用的问题,他没有对象的管理权,不参与引用计数的增减。
6.断点续传
什么是断点续传
断点续传技术(Resumable Downloads 或 Resume Downloads)是一种在网络文件传输中常用的技术,它允许在文件传输过程中,如果因为某种原因(如网络中断、设备故障、用户暂停等)导致传输中断,之后可以从上次中断的地方继续传输文件,而不是从头开始重新传输整个文件。这种技术可以显著提高文件传输的效率和用户体验,特别是在传输大文件或在网络条件不稳定的环境中。
断点续传技术的实现通常依赖于客户端和服务器之间的协议支持,如HTTP/1.1中的Range和Content-Range头部字段。客户端会记录已经成功传输的文件部分(通常是字节范围),并在中断后重新发送带有Range头部的请求,指定从上次中断的点开始传输。服务器则根据这个请求返回文件剩余部分的数据,并在响应中包含Content-Range头部以告知客户端实际返回的数据范围。
应用场景及原理
大文件下载; 视频播放;在线更新;远程备份;.文件上传
综上所述,断点续传技术广泛应用于需要高效、可靠文件传输的各种场景,特别是在网络条件不稳定或文件大小较大的情况下。通过断点续传技术,用户可以更好地利用网络资源,提高文件传输的效率和用户体验。
- 关于 Range头部字段:
- 作用:Range头部字段用于HTTP请求中,指定服务器应该返回文件的哪一部分。这使得客户端能够请求文件的特定片段,而不是整个文件。
- 格式:Range: bytes=start-end,其中start是请求的第一个字节的偏移量(从0开始),end是请求的最后一个字节的偏移量。如果end被省略,则表示请求从start开始到文件末尾的所有字节。
- 使用场景:当客户端希望继续之前中断的下载时,它会发送一个带有Range头部的请求,指定从上次中断的点开始请求数据。
- Content-Range头部字段
- 作用:Content-Range头部字段用于HTTP响应中,告知客户端实际返回的字节范围以及整个实体的总长度。
- 格式:Content-Range: bytes start-end/total,其中start是返回的第一个字节的偏移量,end是返回的最后一个字节的偏移量,total是整个实体的总长度(字节数)。
- 使用场景:服务器在响应带有Range头部的请求时,会使用Content-Range头部来告知客户端返回的数据范围以及整个文件的大小。
相关文章:
[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传
文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点: 面向连接,可靠性高,全双工,面向字节流udp特点:无连接,不…...
训练大模型LLM选择哪种开发语言最好
训练大型语言模型(LLM)时,选择合适的编程语言主要取决于效率、生态支持、开发便利性以及特定需求(如性能优化或硬件适配)。以下是常见语言的分析和推荐: --- 1. Python(首选语言) 优…...
Jupyter Notebook 全平台安装与配置教程(附Python/Anaconda双方案)
一、软件定位与特性 Jupyter Notebook 是交互式编程与数据科学分析工具,支持 40 编程语言,其基于浏览器的「代码块可视化」工作流,已成为机器学习、数据清洗、学术研究的标准环境。核心优势包括: 实时执行代码片段并保存结果支持…...
AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录
AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录 一、AutoDl平台租用GPU 1.注册并登录AutoDl官网:https://www.autodl.com/home 2.选择算力市场,找到需要的GPU: 我这里选择3090显卡 3.这里我们就选择P…...
【Java篇】行云流水,似风分岔:编程结构中的自然法则
文章目录 Java 程序逻辑控制:顺序、分支与循环结构全面解析一、顺序结构二、分支结构2.1 if 语句2.1.1 基本语法2.1.2 if-else 语句2.1.3 if-else if-else 语句 2.2 switch 语句 三、循环结构3.1 while 循环3.2 break 语句3.3 continue 语句3.4 for 循环 四、输入输…...
2.4 基于Vitest的单元测试基础设施搭建
文章目录 1. 现代单元测试体系解析测试金字塔演进Vitest核心定位2. 基础设施架构设计整体架构图3. 环境配置全流程3.1 基础环境搭建3.2 配置文件`vitest.config.ts`3.3 测试环境初始化4. 测试用例编写规范4.1 基础测试示例4.2 Vue组件测试4.3 异步逻辑测试5. Mock策略深度优化5…...
SqlSugar 进阶之原生Sql操作与存储过程写法 【ORM框架】
系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录一、前言 🍃二、用法介绍三、方法列表四、使用案例五、调用存储过程六、in参数用法七、SqlServer带Go的脚…...
Navicat Premium(数据库管理工具) v17.1.13 中文 Windows
介绍 Navicat Premium 是一款多功能的数据库管理工具,可以连接并管理主流的数据库系统,如MySQL、PostgreSQL、Oracle、SQL Server等。它提供了丰富的功能和强大的工具,可以帮助用户轻松地管理数据库,进行数据导入导出、查询、备份…...
IDEA(十一)调整新版本的工具栏显示Git操作(pull、commit、push、revert等)
目录 一、背景二、操作步骤2.1 开启新 UI 样式2.2 设置 Tool Window 工具栏 一、背景 好久没有更新 IDEA 了,更新之后发现 IDEA 的工具栏消失了。一番操作之后,终于把 IDEA 的工具栏的设置调整好了,在此进行记录调整步骤,供大家学…...
QoS质量配置
他们祝你挺拔,再挺拔一点;我只祝你,永远年少,永远一骑当先. 1. QoS的概念 QoS(服务质量)是指一个网络能够利用各种各样的基础技术向选定的网络通信提供更好 的服务的能力。这些基础技术包括:帧中继(FrameR…...
2024年群智能SCI1区TOP:混沌可行性恢复粒子群算法CEPSO,深度解析+性能实测
目录 1.摘要2.改进策略3.结果展示4.参考文献5.代码获取 1.摘要 本文研究了解决二阶段非线性固定费用运输问题(Two-stage NFCTP),该问题的特点是每条运输弧线都与固定费用和与运输量的平方成正比的变量费用相关联。由于涉及固定费用和非线性组…...
ORACLE EBS数据库RELINK方式搭建克隆环境
ORACLE EBS系统的数据库,一般都安装了很多特定功能的小补丁来解决特定的BUG;因此对于已经安装好的系统,想要克隆一套测试环境、搭建一个新的备机做测试等,如果按照生产环境标准,则需要安装大量补丁,带来很大…...
第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)
客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…...
使用 invideo ai 实现文生视频
https://ai.invideo.io 然后选ai生成视频 输入描述,点击生成 就可以得到视频了,可以下载...
5G技术与物联网融合:未来智慧城市的基石
一、智慧城市演进:从概念到落地的技术革命 1.1 全球智慧城市发展现状 2023年全球智慧城市市场规模突破$1.2万亿美元,中国以35%的占比领跑市场(数据来源:IDC)。典型应用成效: 交通效率:新加坡…...
蓝桥杯备赛-差分-重新排序
问题描述 给定一个数组 AA 和一些查询 Li,RiLi,Ri, 求数组中第 LiLi 至第 RiRi 个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能地大。小蓝想知道相比原数组, 所有查询结果的总和最多可 以增加多少? 输入格式 输…...
使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏
前言:如今,借助先进的人工智能模型与便捷的云平台,即便是新手开发者,也能开启创意游戏的设计之旅。DeepSeek 作为前沿的人工智能模型,具备强大的功能与潜力,而蓝耘智算云平台则为其提供了稳定高效的运行环境…...
基于Matlab设计GUI图像处理交互界面
Image-Processing-GUI 项目说明 本博文提供了完整的代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。 本项目是《Matlab实践》中图像处理软件题目,本项目实现的具体内容如下 基于Matlab设计GUI交互界面图像的…...
javase集合框架List篇
一、Vector和ArrayList、LinkedList联系和区别,分别的使用场景 ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢 LinkedList: 底层是双向链表,线程不安全,查询和修改…...
浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF)
浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF) 全文链接:浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF) | AI探金 全文链接&…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
