- 博客(14)
- 收藏
- 关注
原创 简谈TCP——确认应答、超时重传
一、TCPTCP全称为 “传输控制协议(Transmission Control Protocol”). 人如其名, 要对数据的传输进行一个详细的控制;1.TCP格式TCP报头各部分意义:(1)16位源端口号和16位目的端口号:(各占两个字节)表示数据从哪个进程来,到哪个进程去(2)32位序号:占4字节。序号范围是0~2^32-1。TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编 号。整个要传送的字节流的起始序号必须要在连接建立时设置。首部中的序号字段值指的
2020-10-11 13:25:28
1268
原创 二叉搜索树、AVL树、RBtree(红黑树)
一、二叉搜索树1.二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树2.二叉搜索树的基本操作(1)二叉搜索树的查找若根节点不为NULLa.如果根节点的值等于要查找key,则返回true;b.如果根节点的值大于要查找key,则在其左子树查找;c.如果根节点的值小于要查找key,则在其右子树查找;否则返回false
2020-08-21 16:03:30
313
原创 简谈引用以及inline函数
一、引用1.引用概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间2.引用特性引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体,再不能引用其他实体3.引用和指针的区别在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间,而在底层实现上实际是有空间的,因为引用是按照指针方式来实现的。引用和指针的不同点:引用在定义时必须初始化,指针没有要求引用在初始化时引用一个实体后,就不能
2020-08-15 16:51:27
309
原创 vector和list的区别
一、底层实现1.vector的底层实现是顺序表,在内存中是一串连续的空间2.list的底层实现是带头节点的双向循环链表,在内存中不是一串连续的空间二、随机访问1.vector支持随机访问,通过下标精准定位到一个元素,访问元素的时间复杂度是O(1);2.list不支持随机访问,想要访问某一个元素只能遍历整个链表,访问元素的时间复杂度为O(N);三、插入和删除1.vector的插入和删除的效率低,因为在每次的删除或插入(除了尾插和尾删)都需要移动元素,时间复杂度为O(N)。由于vector的特性,
2020-08-14 18:18:03
848
原创 简谈多态
一、多态的概念1.通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。2.定义:多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。二、多态的构成条件1.必须通过基类的指针或引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写3.虚函数的重写(覆盖):派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。4.虚函数重写的两个例外:
2020-08-12 19:23:37
223
原创 简谈vector的底层实现
一、vector 概述vector的数据安排方式和操作方式与array十分相似。两者的唯一区别是array是静态空间,空间一旦配置就无法改变,如果一定需要改变,需要用户自己重新开辟一个新的大小空间,然后原有空间上的数据一 一拷贝到新的空间,然后将原有空间释放掉。而vector是一个动态空间,在元素的不断加入的过程中,如果空间满了,它会自行扩充空间。vector实现的关键技术在于其对大小的控制以及重新配置时的数据移动效率。二、vector的实现原理vector定义了三个指针start(表示目前使用空
2020-08-11 17:54:22
2676
原创 C语言基础1
一、数据类型数据类型名长度(32位)长度(64)char1字节1字节short2字节2字节int4字节4字节long4字节8字节long long8字节8字节float4字节4字节double8字节8字节size_t4字节8字节ssize_t4字节8字节...
2020-08-06 22:47:30
189
原创 Linux进程概念
一、冯诺依曼体系结构输入单元:包括键盘、鼠标,扫描仪、写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等这里的存储器是指内存不考虑缓存情况,这里的CPU能切只能对内崔进行读写,不能访问外设外设要输入或输出数据,也只能写入内存或者从内存中读取二、进程1.概念:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本...
2019-12-18 11:41:49
245
原创 初步了解vector
一、vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是...
2019-12-16 20:34:41
255
原创 初步了解list容器
一、list的介绍1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。4. 与其他的序...
2019-12-15 20:27:12
162
原创 初识C++
一、C++的关键字asmdoifreturntrycontinueautodoubleinlineshrottypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutablestaticuni...
2019-10-31 18:01:18
273
原创 初步接触Linux
一、Linux下一切皆文件1.文件的类型:(1)普通文件 :第一个字符为 -(2)目录文件: 第一个字符为 d(3)字符设备: 第一个字符为 c(4)块设备文件: 第一个字符为 b(5)链接文件: 第一个字符为 l(6)管道文件: 第一个字符为 p(7)套接字文件 :第一个字符为 s2.访问文件的权限:linux中文件的权限分为 读 (r)写 (w)执行(x)每个文件可分为3...
2019-09-28 14:10:43
173
原创 冒泡排序
1.功能:将无序的数列,排列成有序的2.思想:运用循环两两比较数组中的每一个元素(这里假设升序)前者大的交换,在循环完一次后判断他是否有交换,有的话继续排序,没有的话直接跳出循环,结束排序。3.代码:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>void BubbleS...
2019-06-21 13:46:10
151
原创 模拟实现字符串库函数
一、长度不受限制的字符串函数1.strcat:(1)函数功能:实现两个字符串的连接(2)思想:首先遍历目标字符串,找到‘\0’的地址,然后将资源字符串通过指针一次一次的拼接在目标字符串后面,直到指针走到资源字符串的‘\0’;(3)代码:char *Mystrcat(char *strDestination, const char *strSource){ char *p = s...
2019-06-20 14:05:11
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人