- 博客(212)
- 收藏
- 关注
原创 【网络编程】【SCTP】SCTP协议介绍,四次握手,三次挥手
一、SCTP介绍 SCTP是流控制传输协议(Stream Control Transmission Protocol)。SCTP和TCP比较像,提供可靠性、排序、流量控制以及全双工的数据传送。我们SCTP中使用“关联”一词取代“连接”是为了避免这样的内涵: 一个连接只涉及两个IP地址之间的通信。一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而涉及不止两个地址。...
2020-03-20 17:54:04
7444
原创 【网络编程】【UDP】UDP协议介绍
一、UDP介绍 UDP和TCP相比是截然不同的,是一个简单的传输协议。全称是用户数据包协议(User Datagram Protocol),是一个无连接协议。UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达次。 我们使用UDP进行网络编程所遇到的问题是它缺乏可靠性。如果一个 数据报到达了其最终目的地,但...
2020-03-16 19:30:25
660
原创 【网络编程】【TCP】TCP协议介绍,三次握手,四次挥手,TIME_WAIT状态
开始工作了,好久没点开CSDN,发现自己居然有81个关注的,还有很多人评论,抱歉,我基本没看见(我估计他们应该看不见),其实看见我大部分都不会,恕我知识浅薄。 工作久了,发现自己的技术知识好像就停滞了,甚至是退步,准备拾起这个账号开始更新一些知识点,可能是读技术书学习的,可能是工作中遇到的。是对自己知识的整理,可以一种分享嘛。最近在看《UNIX网络编程》,就一边读一遍...
2020-03-13 21:05:35
690
转载 NorFlash和NandFlash区别
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.(1)闪存芯片读写的基本单位不同 应用程序对NorFlash芯片操作以“字”为基本单位.为了方便对大容量NorFla
2017-07-07 19:14:15
474
转载 【二分查找】查找数组中第一个比k大的数的下标
提示:当left和right都是非负数时,使用 mid = left + (right - left) / 2;这种形式可以避免溢出。 当left和right一个为负另一个为非负时,用mid = (left + right) / 2;这种形式可以避免溢出。[cpp] view plain copyin
2017-07-07 16:41:11
2920
原创 如何判断单链表有环?若有环,找出其入口地址
问题:如何判断单链表有环?若有环,找出其入口地址1 如何判断单链表有环?思路:对于如何判断链表有环,可以从起点发出两个指针,一个一次一步,另一个一次两步,如果两个指针相遇,那么这个单链表就有环。 2 若有环,找出其入口地址第一问得出相遇点后,再发出一个指针,统计这个指针再次回到这个点的距离,也就是环的距离。 然后从起点再发出两个指针,一个指针在另一个前面,两个指针的距离就是
2017-07-05 14:33:46
534
原创 Windows环境 安装dlib(python) 总结
安装dlib 需要先安装boost和cmake,而且cmake需要使用c编译器,所以需要装VS,版本最好VS2015以上1 安装cmake官网下载安装包:https://cmake.org/download/我下载了win64的msi安装包,注意电脑是64位的就安装64位的安装包。就一直next,最后finish(我在安装结束后,运行还是有问题,
2017-05-16 08:48:46
41448
22
原创 C++知识点23
1. 友元类:友元类是单向的,如果声明B是我A类的友元类,那么B就可以访问我A的数据成员,但是并不代表我A可以访问B的数据成员;友元类也不能传递。2. 关于建立C++工程:一个类声明在一个.h中,不需要包含头文件,要是要使用友元,还要提前声明友元类。然后在对应的.cpp中定义方法以及其他,包含对应头文件。最后在main.cpp中包含所有头文件,进行调用。
2017-03-12 23:09:46
381
原创 C++知识点22
1. 静态数据成员初始化:只能在类体外初始化,int Box::height = 10;,并且不能使用参数初始化表对静态数据成员进行初始化。 如果在类外使用非私有的静态数据成员时,格式为 Box::height,因为静态数据成员不属于某一个对象。2. 静态成员函数:因为它不属于某一个对象,所以它没有this指针,也不能引用非静态的数据成员,静态成员函数主要用来访问静态数
2017-03-11 22:45:01
384
原创 C++知识点21
1. 动态分配空间:Box *pt = new Box; 或者可以直接 = new Box(12,30,14);进行对象的初始化。2. 对象的赋值和复制:赋值:对已有的对象进行相互的赋值;赋值:从无到有的建立一个对象 Box b1(b2); 或者 Box b1 = b2;3. 静态数据成员:每个对象都共同拥有这个数据成员,而且在还没有创建对象实例的时候,这个静
2017-03-10 16:49:46
303
原创 C++知识点20
1. 指向常对象的常指针变量:Time * const p;2. 指向常对象的指针变量:const Time *p;不能通过p来改变对象的成员数据Time const t1 / const Time t1t1是常对象,任何情况下不被改变void Time::func() const;func是常成员函数,可以引
2017-03-09 22:42:38
402
原创 C++知识点19
1. 常指针:常指针可以指向常变量或者非常变量,那么指向非常变量时,就不允许使用常指针对这个变量进行修改。2. 对于函数的形参:必须保证形参的要求高于或者等于实参的要求。也就是实参为常变量的话,那么形参必须为常变量,才能传入;非常变量的实参可以传给const或者非const的形参。总结一下,就是必须保证形参比实参苛刻,越苛刻就是越加const。详见 C++教科书P93表格。
2017-03-08 19:11:11
445
原创 C++知识点18
1. 常对象:常对象只是保证其中的数据成员不被修改,而不代表常对象中的成员函数也都是常成员函数,不加const修饰,成员函数就还是非const成员函数。常成员函数不能调用另一个非常成员函数。2. 指向对象的常指针:初始化以后,至始至终都指向同一个对象,并且不能被修改,但是能够修改该对象中的成员变量。3. 常变量和常指针:对于常变量,只能用常指针指向它。
2017-03-07 23:28:45
247
原创 C++知识点17
1. 非常成员函数:可以引用常数据成员,但是不能修改;不能引用常对象的数据成员。2. 常数据成员、常成员函数、常对象:1)非成员函数可以引用常数据成员,并对非常数据成员进行修改。2)如果要求所有的成员数据成员都不允许改变,那么可以全部声明为常数据成员,或者直接声明为常对象,并且使用常成员函数进行引用,确保不修改数据成员。3)对于常对象:只能使用常成员函数进行成员数据访问,不
2017-03-06 22:57:22
532
原创 C++知识点16
1. 常对象:常对象不能调用该对象的非const型成员函数。2. 常成员函数:void get_time() const;这样就声明为常成员函数了。3. 使用常成员函数修改常对象的变量:提供了mutable int count;就可以使用常成员函数对常对象的变量进行修改。4. 常数据成员的初始化:必须使用Time::Time(int h):hou
2017-03-05 22:36:02
289
原创 C++知识点14
1. 析构函数的调用:是在函数执行完毕之后调用还是执行完毕之前就调用?2. 普通函数的函数名:即为该函数的入口地址?29点中的为什么要取地址?(答:C语言)3. 指向对象成员函数的方法:1)函数参数的类型和参数的个数需要相同。2)函数返回值的类型相同。3)所属的类相同。
2017-03-03 20:07:58
261
原创 C++知识点13
1. 无参构造函数:Box box1;而不要写成Box box1(); 默认的构造函数时不加括号的。2. 使用默认参数的构造函数:声明Box(int h = 10,int w = 10,int len = 10); 定义时可以不用再指定默认的参数。这带来的问题就是,会出现无参构造函数和默认参数构造函数的歧义,如果调用时,不给出特定的值,那么到底是调用哪一个构造函数呢?这就
2017-03-02 20:05:18
303
原创 C++知识点12
1. 带参数初始化表对数据成员初始化:Student::Student(intn= 0,stringna= "NUL"):num(n),name(na){…},就可以通过Student st(123,”Zhang”);来初始化构造对象,当然可以缺省,例如只初始化学号。构造函数的默认值也可以不加的,Student::Student(intn,stringna ):num(n
2017-03-01 22:19:43
341
原创 C++知识点11
1. 类和结构体一样,不能在类中直接对成员变量赋值初始化。2. 构造函数:不具有任何类型,不返回任何值。必须与类名相同,类外定义的话,用Time::Time(){…}这种方式定义。3. 带参数初始化表对数据成员初始化:Student::Student(intn= 0,stringna= "NUL"):num(n),name(na){…},就可以通过St
2017-02-28 21:12:07
306
原创 C++知识点10
1. 一般函数和类函数作为内联函数的区别:一般函数只要在声明或者定义时,作inline声明就可以了;而类函数就需要将类定义和成员函数的定义必须都放在同一个头文件中。2. 对象的存储空间:一个对象的存储空间大小就是成员中的数据大小,不包括其中的成员函数代码部分,不论该成员函数定义在类内还是类外,这也适用于inline内联函数,不管内联函数还是普通类方法,都不占用对象的存储空间
2017-02-27 18:11:59
258
原创 C++知识点9
1. 类是对象的抽象,而对象是类的具体实例。2. 类的成员属性:默认的成员属性是私有的(缺省时)。3. 类和结构体的异同:struct的类成员,如果不做声明,那么默认是public的,而class则默认的是private的。4. 内联函数:如果内联函数的定义在类外,那么就需要显式的声明。Inline void display(); 类外:in
2017-02-26 19:35:21
269
原创 C++知识点8
1. string类的每个对象,大小都是4个字节,因为这个对象是字符串的的首地址,也就是一个指针。2. string对象的大小比较:从头开始,出现一个字母大小有差别就按照这个大小判断。3. new 和 delete :new int(100); 开辟一个存放整数的空间,并且指定该值的初值为100。4. delete:delete p(释放一个变量
2017-02-25 22:17:04
314
原创 C++知识点7
1. string类的每个对象,大小都是4个字节,因为这个对象是字符串的的首地址,也就是一个指针。2. string对象的大小比较:从头开始,出现一个字母大小有差别就按照这个大小判断。3. new 和 delete :new int(100); 开辟一个存放整数的空间,并且指定该值的初值为100。4. delete:delete p(释放一个变量
2017-02-24 21:57:20
279
原创 C++知识点6
1. 使用::a,可以访问全局变量a。2. 字符串变量:头文件#include string str = “China”; str[3] = ‘N’; 则str = “ChiNa”; 而且字符串结尾不是’\0’。3. string类与字符串数组的区别:字符串数组的运算要用strcat strcmp等,而string类不需要这些,直接可以用简单的运算符
2017-02-23 20:49:54
238
原创 C++知识点5
1. 允许:int I = 5; int *p = &I; int * &pt = p; 这时候*pt就是*p的值5。2. 内置函数:针对被频繁使用的函数,可以使用内置(内联)函数,在编译的时候,将调用的函数代码嵌入到主函数中。3. 内联函数和宏函数的区别:宏函数可能会出现意想不到的情况,是预处理阶段做的简单的字符替换;而内联函数也是替换,在编译阶段做的替
2017-02-22 22:15:26
287
原创 C++知识点4
1. 引用:使得声明的引用和变量指向同一个地址,在函数传递的时候,传递引用和传递变量指针有相同的改变实参的作用。形参将获得实参的地址,使得实参和形参指向同一个地址。2. 引用和指针变量作为函数形参的区别:指针需要另外开辟空间,而引用不需要;要获得指针指向的值的时候,需要使用*,而引用不需要;引用更加直观,较小程序设计的难度。
2017-02-21 21:59:55
235
原创 C++知识点3
1. 重载和有默认参数的函数:一个函数不能同时为重载和有默认参数的函数,因为在缺省参数时,系统无法知道是重载还是在使用有默认参数的函数。2. 引用:声明一个变量的引用时,必须同时使之初始化。
2017-02-20 22:17:28
226
原创 C++知识点2
1. cout输出不能像Java一样,使用2. 有默认参数的函数(C语言中不允许这样做):要么函数定义在调用之前,在函数定义的时候表明默认参数,要么函数定义在调用之后,函数的声明里就需要表明默认的参数(在声明中给过默认参数后就不能再在定义中给出)。为了避免混淆,最好只在函数声明中给出函数的默认值。
2017-02-19 23:14:20
270
原创 C++知识点1
1. 设置输出数据宽度,使用头文件中的setw(n),来设置输出宽度,右对齐。2. 例如:cout3. 单个变量用单个>。4. 函数重载:适用于参数个数和参数类型不同的函数之间,不能使用在参数个数和参数类型相同,只有返回类型不同的函数之间,因为系统不能通过调用形式判断与哪一个函数匹配。5. 模板:template ; T max(T
2017-02-17 21:41:13
268
原创 笔试题15
1. 如何引用一个已经定义过的全局变量?答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。2.
2017-02-16 22:33:32
260
原创 笔试题14
1. 如果我要在别的文件引用本文件的全局变量你有哪几种方法?extern、使用函数传参、使用引用头文件的方式。2. 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。https://so
2017-02-15 21:33:14
289
原创 笔试题13
1. TCP如何判断是否连接? 使用ping命令。2. 端口号的类型? Unsigned short int , 端口号是一个16位无符号整数,范围是0-65535,3. 为什么要端口号?端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的端口号保留给标准应用程序,比如pop3的端口
2017-02-14 23:14:14
278
原创 关于C++中const关键字总结
1.STL迭代器 ?2. 3.classRational {...}; P18 constRationaloperator* (const Rational& lhs,const Rational& rhs); 避免 (a * b) = c;4. 5.定义常量 (1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为T
2017-02-12 21:00:53
374
原创 C++ 引用 VS 指针 区别
引用相当于起别名,可以作为形参和返回值,在定义的时候必须初始化。引用和指针的区别1 引用访问一个变量是直接访问,而指针是间接访问。2 引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间3 引用一经初始化不能再引用其他变量,而指针可以4 指针比较危险,可能会有野指针造成内存泄漏等问题,所以最好使用引用。
2017-02-09 12:27:28
791
原创 C++ new VS malloc 区别
C语言使用malloc动态分配空间,C++使用new动态分配空间,功能是差不多的,但他们的区别还是很大的。1 new 关键字是C++的一部分,malloc是由C语言库提供的函数2 new以具体类型为单位进行内存分配,malloc只以字节为单位进行内存分配3 new在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特征(使用memset函数初始化)
2017-02-09 11:12:46
460
原创 笔试题12
1. 线程同步和互斥的方式: 1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量:为协调共同对一个共享资源的单独访问而设计的。 3信号量:为控制一个具有有限数量用户资源而设计。 4事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。2. 程序中栈的大小大概在2M左右,不能分配过多的数组。
2017-02-07 22:11:56
404
原创 笔试题11
1. C++中的重载、覆盖和隐藏:(1)函数重载发生在同一个类或顶层函数中,同名的函数具有不同的参数列表(2)函数覆盖发生在继承层次中,该函数在父类中必须是virtual,而子类的该函数必须与父类具有相同的参数列表(3)函数遮蔽(隐藏)发生在继承层次中,父类和子类同名的函数中,不属于函数覆盖的都属于函数遮蔽2. C++中的virtual的作用和纯虚函数什么时候用
2017-02-06 22:55:06
349
原创 笔试题10
1. unsigned in 和int相加时,要把int转化为unsignedint,结果肯定为正数。但是如果两者相加结果用int承接,那么结果正负就要看int的大小了。 2. C++中的空类,默认产生哪些类成员函数默认构造函数 析构函数 拷贝构造函数 赋值运算符(operator=) 取址运算符(operator&)(一对,一个非cons
2017-02-05 23:54:16
456
原创 笔试题9
1. 引用和指针的区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。(2)可以有const指针,但是没有const引用;(3)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a是不合法的)(4)指针的值可以为空,但是引用的值不能为NULL,并且引用在定义的
2017-02-04 22:15:34
322
原创 笔试题9
1. C语言中:未初始化的全局变量 .bss段:用来存放哪些没有初始化和初始化为0的全局变量。 初始化过的全局变量区 .data段:用来存放哪些初始化为非零的全局变量。 常量数据 .rodata段:用来存放常量数据的,例如字符串常量。 代码段 .text段:主要存
2017-02-03 22:35:55
297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人