取消 提交

自定义博客皮肤

-+

后台服务架构师

专注于服务器后台开发

我也要用
排序:
按最后发布时间
按访问量
RSS订阅

原创 秋招offer收割机——后台服务器开发方向(专业学习路线图总结)

IT行业,从业技术方向千千万,为什么我称后台服务器开发领域为offer收割机。首先我们看一下,如果要从事后台服务器开发要掌握哪些技术!有点多,做好心理准备。可能技术的全面度是你之前没有见过。看到这里是不是先关注,收藏一波。便于日后再学~~~1.算法与设计排序与查找常用算法常用的数据结构常用的设计模式推荐学习书籍:CLRS 算法导论 算法百科全书、Algorithm Design 算法设计、算法设计与分析电子书下载地址:https://pan.baidu.com/s/11h5qyL0fN

2020-07-02 16:56:52 772

原创 网络编程者必学的TCP/IP协议——分层

如何实现单机百万连接;如何优化三次握手、四次挥手;如何优化TCP的传输速率;nginx零拷贝技术的实现;epoll原理剖析和面试必问的问题。参考教材:TCP/IP详解卷1/2/3如果你还对此有疑问?戳这里:https://ke.qq.com/course/2739583?flowToken=1024417带你解决问题所在!实战出发,直击痛点!网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合..

2020-06-23 21:46:54 2587

原创 c/c++linux后台服务器开发如何提升?(路线图已备好)

随着业务市场的不断壮大,更便捷的开发语言也越来越受到市场的欢迎。Java,python还有新贵golang。那c/c++语言的开发者市场在哪里。虽然说没有活干说的可能过于夸张,但是面临的事实就是比不了。可能初学一点Java,python等等就能找到一份不错的开发工作,但是如果你只会一点c,又不是校招的话,能找到哪些工作呢?C,c++不同于Java。Java的技术路线是比较固定的,学好技术栈...

2020-01-14 15:51:30 9615 10

原创 MySQL入门必备-一天搞定MySQL(C/C++程序员必备)

1 基本语法-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;-- 创建数据表CREATE TABLE pet ( name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE

2020-08-08 16:02:35 12

原创 备战秋招——算法与数据结构(13)

1. 1-2n的数存储在空间为n的数组中,找出出现两次的数字,时间复杂度O(n),空间复杂度O(1)/*奇数零次 偶数零次 0奇数 一次 偶数 零次 -1奇数 两次 偶数 零次 -2奇数 零次 偶数 一次-3奇数 一次 偶数 一次-4奇数 两次 偶数 一次-5奇数 零次 偶数 两次-6奇数一次 偶数 两次-7奇数两次 偶数两次-8*/ public class Main { public static void main(String[] args) { int[] nums =

2020-08-05 20:29:00 20

原创 2020版git教程(文字版+视频版)

你如果不懂git,怎么好意思说自己是个优秀的开发人员呢?有些人觉得git不就是几个命令吗?可是我们在工作中因为不懂git,却又让自己和整个团队的工作都处于一种低效模式,所以我们不仅需要了解git的原理和常见的版本管理问题的解决之道,更要了解基于git的团队协作的工作流程。现如今我们的所有开发几乎都离不开开源项目,而github又是全球最大的开源项目管理基地,有人也称其为全球最大的同性交友网站...

2020-08-04 15:08:07 6234 6

转载 一个8年C++程序员的年终总结,献给还在迷茫中的你!

我越来越担心我作为一个C++程序员的未来。恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地

2020-08-04 14:55:18 33

原创 【备战秋招系列】初出茅庐的程序员该如何准备面试?

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。1 如何获取大厂面试机会?在讲如何获取大厂面试机会之前,先来给大家科普/对比一下两个校招非常常见的概念——春招和秋招。招聘人数 :秋招多于春招 ;招聘时间

2020-08-04 14:50:22 31

原创 决战秋招——一篇文章让你搞懂什么是TCP/IP协议

什么是TCP/IP协议?计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件,操作系统之间的通信,所有这一切都需要一种规则.而我们就将这种规则称为协议 (protocol).也就是说,TCP/IP 是互联网相关各类协议族的总称。TCP/IP 的分层管理TCP/IP协议里最重要的一点就是分层。TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。当然也有按不同

2020-08-03 17:11:33 28

原创 备战秋招——算法与数据结构(12)

1. 寻找两个有序数组的中位数double findMedianSortedArrays(vector& nums1, vector& nums2) {double ret = -1;vector buff; //合并两个数组 for (auto e : nums1) buff.push_back(e); for (auto a : nums2) buff.push_back(a); //将合并后的结果进行排序.

2020-07-31 20:26:44 33

原创 备战秋招——算法与数据结构(10)

1.如何理解Paxos算法?Paxos算法解决的是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各个节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能够得到一个一致的状态。为了保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。zookeeper使用的zab算法是该算法的一个实现。在Paxos算法中,有三种角色:Proposer (提议),Acceptor(接受者),Learners(记录员)Pr

2020-07-30 14:56:03 85

原创 备战秋招——算法与数据结构(9)

1. 请问如何保证单例模式只有唯一实例?你知道的都有哪些方法?单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法 来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回 这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引 用。单例模式的实现主要有两种一种是饿汉式,一种是懒汉式。饿汉式线程安全的单例模式 如下:懒汉式线程安全

2020-07-30 14:47:45 49

原创 高防服务器为什么使用Linux系统?服务器使用Linux系统的好处是?

什么是linux?Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux系统的特点?稳定的系统 :打个比方,安装Linux的主机连续运行一年以上不曾宕机、不必关机是很平常的事,我的windows系统今早打开时是黑屏,强行关机之后才恢复,原因不明安全性和漏洞的快速修补 .

2020-07-24 16:02:51 45

原创 LinuxC++面向对象多线程学习笔记_多任务与多线程编程

多任务(multitask)同时执行多个进程,而多线程(multithread)允许单个进程同时执行多个线程。多任务编程当OS使用一个规划策略允许两个或更多进程并发共享一个CPU时,它称做多任务编程(multitasking)或多程序编程(multiprogramming)。多任务可以在3个级别上发生:a. 对话级; b. 进程级; c. 线程级。对话级的多任务由用户控制。用户运行若干应用程序或对话时发生用户控制多任务(user-controlled multitask)。对话创建一个虚拟计算

2020-07-23 17:13:59 93

原创 Skynet是什么呢?

Skynet是什么呢?我们希望游戏服务器能够充分利用多核优势,将不同的业务放在独立的执行环境中处理,协同工作。这个执行环境最早期望是利用操作系统的进程,后来发现如果必定采用嵌入式语言如Lua,那么独立的操作系统进程的意义不大。LuaState已经提供了良好的沙盒,隔离不同执行环境,而多线程模式可以使得状态共享、数据交换更加高效。但是多线程模型又存在诸多弊病,比如复杂的线程锁、线程调度问题等。这些问题都可以通过减小底层的规模精简设计,最终把危害限制在很小的范围内。早期的Skynet v0版本中,Skyne

2020-07-22 16:48:07 74

原创 WebSocket详解:技术原理、代码演示和应用案例

1、内容简介本文将简要介绍 WebSocket 的由来、原理机制以及服务端/客户端实现,并以实际客户案例指导并讲解了如何使用 WebSocket 解决实时响应及服务端消息推送方面的问题。本文适用于熟悉 HTML 协议规范和 J2EE Web 编程的读者,旨在帮助读者快速熟悉 HTML5 WebSocket 的原理和开发应用。2、WebSocket 前世今生众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对

2020-07-16 14:19:38 449

原创 用一个案例让你清楚成为Linux服务器开发工程师需要具备什么

随着业务市场的不断壮大,更便捷的开发语言也越来越受到市场的欢迎。Java,python还有新贵golang。那c/c++语言的开发者市场在哪里。虽然说没有活干说的可能过于夸张,但是面临的事实就是比不了。可能初学一点Java,python等等就能找到一份不错的开发工作,但是如果你只会一点c,又不是校招的话,能找到哪些工作呢?C,c++不同于Java。Java的技术路线是比较固定的,学好技术栈等待新技术的更新,并学会它,那在薪资上至少不会少。而c/c++的话,不得不说,路子比较广。选择的方向比较多,这里就

2020-06-30 14:48:55 280

转载 快速理解P2P技术中的NAT穿透原理

导语最近介入测试P2P的相关逻辑,因此对NAT穿透原理做了一定程度的了解(当然也没有很深入)。本篇文章也是综合和参考了些网络上和文献里的一些资料(文中没有对引用处进行标记,请见谅)。写本文的目的就是,用自己的语言描述了这个过程,同时也在描述过程中加入了一些自己的理解,形成一篇文章作为要点的记录。对于这一块的知识,自己也有很多盲点,还请各路大神多多指教。一、背景知识介绍1.什么是NAT?NAT(Network Address Translation,网络地址转换),也叫做网络掩蔽或者IP掩蔽。NAT是

2020-06-29 17:12:13 161

原创 备战秋招——算法与数据结构(8)

● 请问加密方法都有哪些参考回答:考察点:密码学公司:腾讯1、单向加密单向加密又称为不可逆加密算法,其密钥是由加密散列函数生成的。单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文;SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值。其变种由SHA192,SHA256,SHA384等;CRC-32.

2020-06-24 16:51:04 466

原创 深入分析Linux内核源代码6-Linux 内存管理(2)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院6.3 内存的分配和回收在内存初始化完成以后,内存中就常驻有内核映像(内核代码和数据)。以后,随着用户程序的执行和结束,就需要不断地分配和释放物理页面。内核应该为分配一组连续的页面而建立一种稳定、高效的分配策略。为此,必须解决一个比较重要的内存管理问题,即外碎片问题。频繁地请求和释放不同大小的一组连续页面,必然导致在已分配的内存块中分散许多小块的空闲页面。由此带来的问题是,即使这些小块的空闲页面加起来足以满足所请求

2020-06-23 19:42:57 167

原创 备战秋招——算法与数据结构(7)

● 请你手写代码,如何合并两个有序链表参考回答:class Solution {public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if(l1 == NULL){return l2;}if(l2 == NULL){return l1;}if(l1->val < l2->val){l1->next=mergeTwoLists(l1->next,l2);return l1;}e.

2020-06-23 11:39:03 218

原创 备战秋招——算法与数据结构(6)

● 请你手写代码:最长公共连续子序列参考回答:int substr(string & str1, string &str2){int len1 = str1.length();int len2 = str2.length();vector<vector<int>>dp(len1,vector<int>(len2,0));for (int i = 0; i < len1; i++){dp[i][0] = str1[i]==str1[.

2020-06-19 20:16:57 224

原创 备战秋招——算法与数据结构(5)

● 请你来说一说hash表的实现,包括STL中的哈希桶长度常数参考回答:hash表的实现主要包括构造哈希和处理哈希冲突两个方面:对于构造哈希来说,主要包括直接地址法、平方取中法、除留余数法等。对于处理哈希冲突来说,最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。SGL版本使用链地址法,使用一个链表保持相同散列值的元素。虽然链地址法并不要求哈希桶长度必须为质数,但SGI STL仍然以质数来设计哈希桶长度,并且将28个质数(逐渐呈现大约两倍的关系)计算好,以备随时访问.

2020-06-18 17:03:17 199

原创 备战秋招——算法与数据结构(4)

● 请你来手写一下快排的代码参考回答:int once_quick_sort(vector<int> &data, int left, int right){int key = data[left];while (left < right){while (left < right && key <= data[right]){right--;}if (left < right){data[left++] = data[r.

2020-06-18 16:51:51 169

原创 备战秋招——算法与数据结构(3)

● 请你回答一下Array&List, 数组和链表的区别参考回答:数组的特点:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。数组的插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面的数据都要往前移动。但数组的随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。数组需要预留空间,在使用前要先申请占内存.

2020-06-18 16:30:45 151

原创 备战秋招——算法与数据结构(2)

● 请说一说你理解的stack overflow,并举个简单例子导致栈溢出参考回答:栈溢出概念:栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致栈中与其相邻的变量的值被改变。栈溢出的原因:局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。局部变量是存储在栈中的,因此这个很好理解。解决这类问题的办法有两个,一是增大栈空间,二是改用动态分配,使用堆(heap)而不是栈(stack)。递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太.

2020-06-17 19:50:58 327

原创 深入分析Linux内核源代码6-Linux 内存管理(1)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院存储器是一种必须仔细管理的重要资源。在理想的情况下,每个程序员都喜欢无穷大、快速并且内容不易变(即掉电后内容不会丢失)的存储器,同时又希望它是廉价的。但不幸的是,当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量、快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。如图 6.1 所示,这些资源.

2020-06-17 17:33:15 244

原创 备战秋招——算法与数据结构(1)

● 请你来说一说红黑树和AVL树的定义,特点,以及二者区别参考回答:平衡二叉树(AVL树):平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。一句话表述为:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可能是-1、0和1。只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。红黑树:红黑树是一种二叉查找树,.

2020-06-16 20:17:05 163

原创 备战秋招——数据库(3)

● 请你回答一下mongodb和redis的区别参考回答:内存管理机制上:Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。支持的数据结构上:Redis 支持的数据结构丰富,包括hash、set、list等。MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富● 请你说一下mys.

2020-06-16 17:17:53 108

原创 备战秋招——数据库(2)

● 请你说一说mysql的四种隔离状态参考回答:Mysql主要包含四种隔离状态:● 请你介绍一下mysql的MVCC机制参考回答:MVCC是一种多版本并发控制机制,是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。MVCC是通过保存数据在某个时间点的快照来实现该机制,其在每行记录后面保存两个隐藏的列,分别保存这个行的创建版本号和删除版本号,然后Innodb的MVCC使用到的快照存储在Undo日志中,该日志通过回滚指针把一个数据行所有快照连接起.

2020-06-16 11:33:50 117

原创 深入分析Linux内核源代码5-进程调度与切换(2)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院5.3 Linux 的调度程序—Schedule进程的合理调度是一个非常复杂的工作,它取决于可执行程序的类型(实时或普通)、调度的策略及操作系统所追求的目标,幸运的是,Linux 的调度程序比较简单。5.3.1 基本原理从前面我们可以看到,进程运行需要各种各样的系统资源,如内存、文件、打印机和最宝贵的 CPU 等,所以说,调度的实质就是资源的分配。系统通过不同的调度算法(SchedulingAlgorithm).

2020-06-16 11:26:49 222

原创 给你一个类,里面有 static之类的,来说一说这个类的内存分布

考察点:操作系统参考回答:1、static 修饰符1) static 修饰成员变量对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当做是类的成员,无 论 这 个类被定义了多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享(包括其派生类)。 所以,静态数据成员的值对每个对象都是一样的,它的值可以更新。因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以它不属于特定的 类对象,在没有产生类对象前就可以使用。2) static 修饰成员函数与普通的成员函.

2020-06-16 10:58:54 207

原创 深入分析Linux内核源代码5-进程调度与切换(1)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院在多进程的操作系统中,进程调度是一个全局性、关键性的问题,它对系统的总体设计、系统的的实现、功能设置以及各个方面的性能都有着决定性的影响。根据调度的结果所作的进程切换的速度,也是衡量一个操作系统性能的重要指标。进程调度算法的设计,还对系统的复杂性有着极大的影响,常常会由于实现的复杂程度而在功能与性能方面作出必要的权衡 和让步。进程调度与时间的关系非常密切,因此,本章首先讨论与时间相关的主题,然后才讨论 进程的调度.

2020-06-15 21:47:03 144

原创 备战秋招——数据库(1)

● 请你说一说数据库索引参考回答:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。● 请你说一说数据库事务参考回答:数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 .

2020-06-15 21:06:34 295

原创 请你说一说数据库的三大范式

考点:数据库参考回答:第一范式:当关系模式R 的所有属性都不能再分解为更基本的数据单位时,称R 是满足第一范式,即属性不可分第二范式:如果关系模式R 满足第一范式,并且R 得所有非主属性都完全依赖于R 的每一个候选关键属性,称R 满足第二范式第三范式:设R 是一个满足第一范式条件的关系模式,X是R 的任意属性集,如果X 非传递依赖于R 的任意一个候选关键字,称R 满足第三范式,即非主属性不传递依赖于键码...

2020-06-15 20:32:55 110

原创 深入分析Linux内核源代码4-进程描述(2)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院4.4 task_struct 结构在内存中的存放task_struct 结构在内存的存放与内核栈是分不开的,因此,首先讨论内核栈。4.4.1 进程内核栈每个进程都有自己的内核栈。当进程从用户态进入内核态时,CPU 就自动地设置该进程的内核栈,也就是说,CPU 从任务状态段 TSS 中装入内核栈指针 esp(参见下一章的进程切换一节)。X86 内核栈的分布如图 4.2 所示。在 Intel 系统中,栈起始于末端

2020-06-13 19:49:54 236

原创 备战秋招——计算机网络(2)

● 请问TCP三次握手是怎样的?参考回答:1.客户端发送syn0给服务器2.服务器收到syn0,回复syn1,ack(syn0+1)3.客户端收到syn1,回复ack(syn1+1)● 请问tcp握手为什么两次不可以?为什么不用四次?参考回答:两次不可以:tcp是全双工通信,两次握手只能确定单向数据链路是可以通信的,并不能保证反向的通信正常不用四次:本来握手应该和挥手一样都是需要确认两个方向都能联通的,本来模型应该是:1.客户端发送syn0给服务器2.服务器收到syn0,回复ack(.

2020-06-13 16:57:52 129

原创 请你手写代码,如何合并两个有序链表

考点:链表合并参考回答:class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == NULL){return l2;}if(l2 == NULL){return l1;} if(l1->val < l2->val){l1->next=mergeTwoLists(l1->next,l2); return l1;.

2020-06-13 16:15:08 439

原创 深入分析Linux内核源代码4-进程描述(1)

每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院操作系统中最核心的概念是进程,本章将对进程进行全面的描述。首先从程序的角度引入进程,接着对 Linux 中的进程进行了概要描述,在此基础上,对 Linux 中核心数据结构task_struct 进行了较全面的介绍。另外,详细描述了内核对进程的 4 种组织方式,最后介绍了系统中一种特殊的进程—内核线程。4.1 进程和程序(Process and Program)首先我们对进程作一明确定义:所谓进程是由正文段(Tex.

2020-06-12 17:22:33 243

原创 备战秋招——计算机网络(1)

● 请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程参考回答:TCP保证可靠性:(1)序列号、确认应答、超时重传数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+一个偏差值。(2)窗口控制与高速重发控制/快速重传(重复确认应答)TCP会利用窗口控.

2020-06-12 16:38:16 149

提示
确定要删除当前文章?
取消 删除