- 博客(233)
- 问答 (1)
- 收藏
- 关注

原创 C++——智能指针
智能指针是代理模式的具体应用,它使用RAII技术代理了裸指针,能够自动释放内存,无需程序员干预。如果指针是“独占”使用,就应该选择unique_ptr,它为裸指针添加了很多限制,更加安全。如果指针是“共享”使用,就应该选择shared_ptr,它的功能非常完善,用法几乎与原始指针一样。应当使用工厂函数make_unique()、make_shared()来创建智能指针,强制初始化,而且还能使用auto来简化声明。..........................................
2022-07-27 23:16:57
3201
1

原创 C++编译器工作原理
后来为了提高程序开发的速度以及程序的健壮性,java和C#等高级语言引入了GC机制,即程序员不需要再考虑内存的回收等,而是由语言特性提供垃圾回收器来回收内存。但是随之而来的可能是程序运行效率的降低。前面的编译中,每个源代码模块是单独编译的,然而不同的模块之间不可避免地要相互引用变量或函数,这些变量或函数的地址只有在此阶段才能确定。动态链接静态链接期间不完成实际的链接操作,只保存函数的重定位信息,在运行期间才去找到动态库的函数符号进行重定位。此阶段的链接是静态链接,运行期间的链接则是动态链接。........
2022-07-20 21:39:15
1315
2

原创 C++—虚函数和多态
文章目录虚函数和多态纯虚函数和抽象类多态的实现原理:虚函数表虚函数和多态我们直观上认为,如果指针指向了派生类对象,那么就应该使用派生类的成员变量和成员函数,但是实际是,当基类指针 p 指向派生类的对象时,只可以使用成员变量,不能使用派生类的成员函数即:通过基类指针只能访问派生类的成员变量,但是不能访问派生类的成员函数。为了让基类指针能够访问派生类的成员函数,C++ 增加了虚函数(Virtual Function)虚函数和普通函数的区别:普通函数是根据指针的类型来调用的,哪个类定义的指针就调用哪
2022-07-06 18:57:42
804

原创 面向对象三大特性:封装、继承、多态
文章目录三种继承权限修改访问权限作用域嵌套和名字遮蔽基类和派生类的构造函数基类和派生类的析构函数继承时的对象内存模型多继承时的对象内存模型菱形继承、虚继承菱形继承虚继承三种继承权限下表汇总了不同继承方式对不同属性的成员的影响结果继承权限/基类成员public成员protected成员private成员public继承publicprotected不可见protected继承protectedprotected不可见private继承priv
2022-07-06 18:02:42
1593

原创 C++——STL
vector:数组deque:数组+多个数组list:双向链表map、multimap、set、multiset:红黑树unordered_map 等:哈希表STL 众多容器中,vector 是最常用的容器之一,其底层所采用的数据结构非常简单,就只是一段连续的线性内存空间。 vector 容器可以看做是一个动态数组,array容器则是静态数组、通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的:下图演示了以上这 3 个迭代器分别指向的位置通过灵活运
2022-07-06 14:55:06
1900

原创 C++内存管理
文章目录C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收程序编译后,运行前,分为代码区区和全局区:1、 代码区:存放函数体的二进制代码,由操作系统进行管理的代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可代码区是只读的,使其只读的原因是防止程序意
2022-07-06 11:50:38
374

原创 如何做JVM调优
文章目录堆空间的参数设置调优参数JVM调优工具jpsjstatjmapjconsoleJVM调优经验堆空间的参数设置-Xms:初始堆空间内存(默认为物理内存的1/64)-Xmx:最大堆空间内存(默认为物理内存的1/4)-XX:NewRatio:配置新生代与老年代在堆结构的占比-XX:SurvivorRatio:设置新生代中Eden和S0,S1空间的比例-XX:SurvivorRatio=8: 8:1:1-Xmn:设置新生代的大小(初始和最大同一个)-XX:PermSize 永久代初始值-X
2022-01-11 10:34:16
346

原创 线程安全集合类- ConcurrentHashMap
文章目录总结CHM是怎么保证线程安全的?JDK7和JDK8中的CHM的不同点CHM一定线程安全吗?说说jdk8的扩容1.7详解hashput总结getsizerehashCAS操作1.8重要参数五个构造方法putinitTableunsafeaddCountTreeBintryPresizetransfer 扩容getclear总结CHM是怎么保证线程安全的?HashTable 使用一把锁锁住整个链表结构,锁粒度非常粗,所以线程阻塞概率大,效率低;JDK 1.7:ReentrantLock +
2022-01-10 21:57:19
3063

原创 开发中使用mysql的注意点
文章目录MySQL调优总结数据类型方面的优化MySQL调优总结数据类型方面的优化首先是数据选型方面进行优化1、应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型使得表更小,一般表越小,查询越快。2、简单就好简单数据类型的操作通常需要更少的CPU周期。开发建议:应该 使用MySQL自带的类型(如date,time ,datetime) 而不是字符串来存储日期和时间,应该用整型存储IP地址。3、尽量避免NULL很多表都包含可为NULL的列, 即使应用程序井不需要保存NULL 也是如
2021-08-28 14:54:22
182

原创 对数据库索引的一些理解
文章目录索引核心知识总结面试为什么需要索引?什么是聚簇索引?什么是二级索引(辅助索引)?什么是联合索引说说MyISAM中的索引方案?为什么不用其他的数据结构作为索引,而是B+?索引核心知识总结每个索引都对应一棵B+树,B+树分为好多层,最下边一层是叶子节点,其余的是内节点。所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点。InnoDB存储引擎会自动为主键(如果没有它会自动帮我们添加)建立聚簇索引,聚簇索引的叶子节点包含完整的用户记录。我们可以为自己感兴趣的列建立二级索
2021-08-28 14:45:40
227

原创 redis-数据结构总结
文章目录数据类型和数据结构对应键和值用什么结构组织?rehash渐进式rehash集合数据操作效率数据类型和数据结构对应List、Hash、Set和Sorted Set被称为集合类型,它们的特点是一个键对应了一个集合的数据。键和值用什么结构组织?Redis使用一个全局哈希表保存所有的键值对。why?为了实现从键到值的快速访问,O(1)这个查找过程主要依赖于哈希计算,和数据量的多少并没有直接关系。也就是说,不管哈希表里有10万个键还是100万个键,我们只需要一次计算就能找到相应的键。reh
2021-08-28 14:25:24
147

原创 对Hash的一些总结
文章目录静态查找表和动态查找表平均查找长度ASL不同查找算法的ASL顺序查找算法二分查找Hash表哈希函数的构造方式直接定址法数字分析法平方取中法除留余数法如何抉择处理冲突的方法静态查找表和动态查找表1)静态查找表:在查找表中只做查找操作,而不改动表中数据元素,包括:顺序查找算法、折半查找算法、分块查找算法静态查找表既可以使用顺序表表示,也可以使用链表结构表示。虽然一个是数组、一个链表,但两者在做查找操作时,基本上大同小异。2)动态查找表:在查找表中做查找操作的同时进行插入数据或者删除数据的操作
2021-08-27 11:51:52
734

原创 varchar与char有什么区别?
文章目录字段varchar与char有什么区别?DECIMAL是如何保证精确的?属性主键主键和UNIQUE约束的区别null和空的区别字段varchar与char有什么区别?char是一种固定长度的类型,varchar则是一种可变长度的类型在 char(M)类型的数据列里,每个值都占用M个字符的存储空间,即使字符个数没有M个,MySQL也会在它的右边用空格字符补足.(其中M的取值范围是0~255。如果省略掉M的值,那它的默认值就是1)在varchar(M)类型的数据列里,最多存放M个字符,
2021-08-26 16:35:56
5645

原创 数据结构-红黑树
文章目录红黑树红黑树红黑树的定义(特性)根节点是【黑色】每个节点要么是【黑色】要么是【红色】每个【红色】节点的两个子节点一定都是【黑色】每个叶子节点(NIL)都是【黑色】任意一个节点的路径到叶子节点所包含的【黑色】节点的数量是相同的—这个也称之为【黑色完美平衡】新插入的节点必须是【红色】->为什么?如果新插入的节点是【黑色】,那不管是在插入到那里,一定会破坏黑色完美平衡的,因为任意一个节点的路径到叶子节点的黑色节点的数量肯定不一样了插入过程的旋转变色详细图文1、当前节
2021-08-25 19:52:05
908

原创 数据结构-B/B+树
B树和B+树B树大量应用在数据库和文件系统当中。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。B树算法减少定位记录时所经历的中间过程,从而加快存取速度。m阶B树规则根节点的关键字数量范围: 1 <= k <= m-1,非根节点的关键字数量范围: m/2 <= k <= m-1每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。所有叶子节点都位于同一层,
2021-08-25 19:36:31
1602

原创 对数组和链表的一些理解
文章目录数组小结链表数组和链表的对比栈和队列栈的常见应用场景队列常见应用场景数组是什么?数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。线性表:线性表就是数据排成像一条线一样的结构,还有链表、队列、栈。非线性表包括二叉树、堆、图等连续的内存空间和相同类型的数据好处:可以随机访问坏处:删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。随机访问如何实现根据下标随机访问数组元素的?计算机会给每个内存单元分配一个地址,计算机通
2021-08-25 17:48:16
286

原创 垃圾标记算法、垃圾清除算法、内存分配算法
文章目录标记阶段引用计数算法可达性分析算法对象的finalization机制(尽量不要调用)判断对象是否可被回收清除阶段标记-清除算法复制算法标记-整理算法标清和标整的区别标清、标整、复制 三者对比分代收集算法增量收集算法分区算法标记阶段什么是 标记阶段?在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在J
2021-08-24 15:08:01
632

原创 JVM运行时数据区——堆
本地方法接口什么是本地方法简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “c” 告知c++编译器去调用一个c的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java语言在外面实现的。本地接口的作用
2021-08-23 15:56:26
426

原创 JVM内存结构
复习什么是程序计数器?程序计数器(Program Counter Register),也叫PC 寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会,JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有自己的程序计数器,即程序计数器是线程私
2021-08-22 15:52:45
155

原创 JVM-类加载器
文章目录面试1、类加载器子系统总览2、类加载器子系统有什么作用?3、分别说说每个阶段做了什么事?有哪些类加载器?引导类加载器和自定义类加载器启动类加载器/引导类加载器/Bootstrap ClassLoader扩展类加载器/Extension ClassLoader应用程序类加载器/系统类加载器/AppClassLoader用户自定义类加载器用户自定义类加载器实现步骤?双亲委派机制沙箱安全机制如何判断两个class对象是否相同?类加载器子系统的作用?类的加载过程加载阶段链接阶段初始化阶段类加载器的分类引导类
2021-08-21 21:40:23
197

原创 认识JVM,看看java代码的一生
文章目录java是如何做到 “一次编写,到处运行的”?什么是字节码?Java虚拟机什么是虚拟机?Java虚拟机有哪些特点?JVM的位置JVM整体结构Java代码执行流程JVM的架构模型JVM生命周期虚拟机的启动虚拟机的执行虚拟机的退出主流JVM有哪些?HotSpot VMJRockitjava是如何做到 “一次编写,到处运行的”?java源程序—字节码----机器码Java编译产生的不是针对特定平台的机器码,而是一种与平台无关的字节码文件(即*.class文件)。相同的字节码在不同平台上直接运行原本是
2021-08-20 17:04:34
299

原创 什么是虚拟内存?
文章目录为什么需要虚拟内存?什么是虚拟内存?怎么实现的虚拟内存?虚拟内存的最大内存和实际内存虚拟内存的特征虚拟内存地址和物理内存地址如何实现虚拟内存技术请求分页存储管理页表机制—请求页表与基本页表的区别缺页中断总流程为什么需要虚拟内存?传统存储管理及其缺点缺点:所以需要虚拟内存来解决这两个缺点什么是虚拟内存?每个程序都有自己的地址空间,这个地址空间被划分为多个称为页面(page)的块。每一页都是连续的地址范围。这些页被映射到物理内存。怎么实现的虚拟内存?虚拟内存的最大内存和实际内存
2021-08-16 10:33:27
493

原创 redis-RDB和AOF对比总结
文章目录RDB和AOF对比RDBSAVE和BGSAVE快照时如何修改数据? bgsave + 写时复制技术AOFAOF持久化的三种实现三种方式的对比三种方式如何选择AOF 文件的载入与数据还原AOF文件重写:bgrewriteaof混合使用AOF和RDBAOF和RDB如何选择场景题RDB和AOF对比使用优先级默认使用RDB,但因为AOF文件的更新频率通常比RDB文件的更新频率高, 所以如果服务器开启了AOF持久化功能。那么服务器会优先使用AOF文件来还原数据(磁盘-》数据库)。存储格式
2021-07-31 21:52:58
422

原创 redis-单线程为什么还这么快?
文章目录单线程为什么用单线程?为什么单线程Redis还这么快?并非真正的单线程IO多路复用纯内存访问高效的数据结构那单线程有哪些性能问题呢?单线程为什么用单线程?多线程的缺点:并发访问控制一直是多线程开发中的一个难点问题,如果没有精细的设计,比如说,只是简单地采用一个粗粒度互斥锁,就会出现不理想的结果:即使增加了线程,大部分线程也在等待获取访问共享资源的互斥锁,并行变串行,系统吞吐率并没有随着线程的增加而增加。采用多线程开发一般会引入同步原语来保护共享资源的并发访问,这也会降低系统代码的易调试性
2021-07-31 09:56:32
296

原创 缓存—雪崩、击穿、穿透、缓存一致性
文章目录缓存的收益和成本缓存更新策略缓存粒度控制缓存穿透无底洞优化缓存雪崩缓存击穿-热点key失效重点回顾缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要。但是将缓存加入应用架构后也会带来一些问题,本章将针对这些问题介绍缓存使用技巧和设计方案,包含如下内容:· 缓存的收益和成本分析。· 缓存更新策略的选择和使用场景。· 缓存粒度控制方法。· 穿透问题优化。· 无底洞问题优化。· 雪崩问题优化。· 热点key重建优化。缓存的收益和成本好处:加速读写降
2021-07-30 17:42:52
348

原创 mysql——一条查询语句是如何执行的
文章目录概述一条SQL查询语句是如何执行的?连接管理解析与优化查询缓存(废弃)分析器:MySQL 要知道做什么优化器:MySQL 要知道该怎么做执行器:MySQL 开始执行语句存储引擎补充长连接问题思考题线程状态概述建立连接客户端发送一条查询给服务器。服务器先检查查询缓存, 如果命中了缓存, 则立刻返回存储在缓存中的结果。 否则进入正式的查询阶段。服务器端进行SQL分析、 预处理。由优化器生成对应的执行计划。MySQL根据优化器生成的执行计划, 调用存储引擎的API来执行查询。将结果返回给客
2021-07-28 22:14:54
282
1

原创 mysql-redo-log 、bin-log、undo-log
文章目录MySQL Server 的四种类型日志MySQL Server 的四种类型日志MySQL Server 有四种类型的日志——Error Log、General Query Log、Binary Log 和 Slow Query Log。Error Log:错误日志,记录 mysqld 的一些错误。General Query Log:一般查询日志,记录 mysqld 正在做的事情,比如客户端的连接和断开、来自客户端每条 Sql Statement 记录信息;如果你想准确知道客户端到底
2021-07-21 10:40:01
223

原创 对mysql中锁的一些理解
文章目录共享锁和独占锁锁定读的语句行锁和表锁Innodb的表锁Innodb的行锁1、`LOCK_REC_NOT_GAP`2、`LOCK_GAP`3、Next-Key Locks:4、Insert Intention Locks:5、隐式锁共享锁和独占锁在使用加锁的方式解决问题时,由于既要保证读-读情况不受影响,又要使写-写、读-写或写-读情况中的操作相互阻塞,所以设计MySQL的大叔给锁分了个类:共享锁:S锁。在事务要读取一条记录时,需要先获取该记录的S锁。独占锁:X锁。在事务要改动一条记录
2021-07-20 21:33:27
393

原创 数据库-事务
文章目录什么是事务?ACID执行的五种状态事务并发四种问题四种隔离级别MySQL 如何实现事务隔离的保存点不好的事务习惯分布式事务复习谈谈2PC & 3PC常见分布式事务解决方案总结什么是事务?事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。要么都做,要么都不做。ACID原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的
2021-07-08 22:56:34
463
1

原创 进程间的通信方式:管道、消息队列、共享内存、信号量、socket
文章目录什么是进程通信?什么是互斥和同步?临界区进程互斥的软件实现方式屏蔽中断单标志检查法:自旋锁双标志先检查法双标志后检查法Peterson 解法TSL 指令进程通信解决忙等管道管道背后原理是什么?消息队列消息队列面对的问题消息队列的变种共享内存信号量互斥和同步信号量信号Socket针对 TCP 协议通信的 socket 编程模型针对 UDP 协议通信的 socket 编程模型针对本地进程间通信的 socket 编程模型互斥量Futexes(以后再看)Pthreads 中的互斥量管程屏障读-复制-更新总结
2021-06-28 20:11:50
2365
1

原创 对线程的一些理解
文章目录为什么需要线程?什么是线程?线程的优缺点?进程与线程的比较线程的特点线程的实现方式用户级线程内核级线程轻量级进程线程的上下文切换为什么需要线程?维护进程的系统开销较大,如创建进程时,分配资源、建立 PCB;终止进程时,回收资源、撤销 PCB;进程切换时,保存当前进程的状态信息;怎么办?需要有一种新的实体,满足以下特性:实体之间可以并发运行;实体之间共享相同的地址空间;这个新的实体就是线程,线程之间可以并发运行且共享相同的地址空间,节省系统开销。什么是线程?线程是进程当中的一条执
2021-06-28 16:05:33
1054

原创 对进程的一些总结
文章目录进程什么是进程?进程的特征?进程的类型进程的组成结构?什么是PCB?进程和程序的区别和联系?进程的状态及切换核心进程控制详解进程的创建系统初始化系统调用创建用户请求创建批处理创建详解进程的阻塞和唤醒详解进程的终止正常退出错误退出严重错误被其他进程杀死进程的上下文切换进程切换的原理(了解)进程的层次结构UNIX 进程体系Windows 进程体系进程我们平常说的进程和线程更多的是基于编程语言的角度来说的,那么你真的了解什么是线程和进程吗?那么我们就从操作系统的角度来了解一下什么是进程和线程。什么
2021-06-28 16:05:23
523
1

原创 零拷贝技术( DMA、PageCache)
文章目录为什么需要DMA?什么是DMA?DMA 控制器进行数据传输的过程究竟是什么样的呢?传统的文件传输有多糟糕零拷贝mmap + writesendfile真正的零拷贝PageCache大文件传输总结为什么需要DMA?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回;磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区中,然后产生一个中断;CPU 收到中断信号后,停下手头的工作,接着把磁盘控制器的缓冲区的数据一次一
2021-06-26 14:43:27
4575
4

原创 传输层的一些重要概念
文章目录重要概念多路复用与多路分解重要概念1、运输层协议和服务运输层协议是在端系统中而不是在路由器中实现的。在发送端,运输层将从发送应用程序进程接收到的报文转换成运输层分组,该分组称为 运输层报文段(segment) 。实现的方法是将应用报文划分为较小的块,并为每块加上一个运输层首部以生成运输层报文段。然后,在发送端系统中,运输层将这些报文段 传递给网络层,网路层将其封装成网络层分组(即数据报)并向目的地发送。注意到下列 事实是重要的:网络路由器仅作用于该数据报的网络层字段;即它们不检查封装在该
2021-06-23 13:47:42
1198

原创 TCP报文段
文章目录1、源端口号、目标端口号2、序列号(Sequence number)2.1 初始序列号(Initial Sequence Number, ISN)确认号ack数据偏移=首部长度保留TCP FlagsTCP报文段=首部+数据部分1、源端口号、目标端口号TCP 报文头部里没有源 ip 和目标 ip 地址,因为那是 IP 层协议的事情,只有源端口号和目标端口号。源 IP、源端口、目标 IP、目标端口构成了 TCP 连接的「四元组」。一个四元组可以唯一标识一个连接。目标 IP和源IP在IP报文中
2021-06-23 13:47:28
1394

原创 TCP-三次握手
文章目录三次握手三次握手过程详解三次握手的状态变化面试题:四次挥手三次握手简单示意图:客户端–发送带有 SYN 标志的数据包–一次握手–服务端服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端SYN 同步序列编号(Synchronize Sequence Numbers) :是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN
2021-06-23 13:47:16
54513
9

原创 tcp四次挥手
文章目录四次挥手面试题为什么 FIN 报文要消耗一个序列号?为什么挥手需要四次?为什么 TIME_WAIT 等待的时间是 2MSL?TIME_WAIT 过多有什么危害?如何优化 TIME_WAIT?客户端发生故障怎么办?四次挥手1、主动关闭方发送TCP连接释放报文段客户端调用 close 方法,告诉服务器自己要主动关闭连接,会发送一个 FIN 报文给服务端,从这以后客户端不能再发送数据给服务端了,客户端进入FIN-WAIT-1状态。FIN 报文其实就是将 FIN 标志位设置为 1。FIN 段是可
2021-06-23 13:47:06
2941

原创 TCP-超时重传和快速重传
文章目录重传机制为什么需要重传机制?常见的重传机制有哪些?什么是超时重传?RTO 应该设置为多少呢?如果多次超时呢?快速重传SACK 方法Duplicate SACK滑动窗口窗口大小由哪一方决定?谈谈发送方的滑动窗口谈谈接收方的滑动窗口接收窗口和发送窗口的大小是相等的吗?重传机制为什么需要重传机制?TCP 实现可靠传输的方式之一,是通过序列号与确认应答。在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但在错综复杂的网络,并不一定能如上图那么顺利能正常
2021-06-23 13:46:55
8830
1

原创 TCP-滑动窗口-流量控制-拥塞控制
文章目录流量控制操作系统的缓冲区是如何影响发送窗口和接收窗口的呢?窗口关闭窗口关闭的危险-死锁怎么解决死锁糊涂窗口综合症拥塞控制(Congestion control)有流量控制,为什么还要拥塞控制?什么是拥塞窗口?和发送窗口有什么关系呢?那么怎么知道当前网络是否出现了拥塞呢?拥塞控制主要的四个控制算法慢启动拥塞避免算法拥塞发生流量控制为什么需要流量控制?发送方不能无脑的发数据给接收方,要考虑接收方处理能力。如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的
2021-06-23 13:46:46
1218
空空如也
您暂时不能添加分类专栏?
2020-11-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人