03 2019 档案
摘要:最近准备面试题,看到有介绍计网中的TCP三次握手和四次挥手操作及其代表的含义的题,复习了一下,顺便记录下来吧。 注:图片来自中国大学MOOC 哈尔滨工业大学 计算机网络之探赜索隐 聂兰顺老师的慕课,讲得很好,大家如果还有什么不清楚的可以直接搜慕课看。 TCP连接特点: 点对点:一个发送方,一个接收方
阅读全文
摘要:访问控制与封装 使用访问说明符来加强类的封装性。public 和private 使用class或struct关键字 二者的唯一区别就是默认访问权限不太一样:struct的默认是public, class默认是private 友元 类可以允许其他类或函数访问它的非公有成员,方法是通过令其它类或函数成为
阅读全文
摘要:类的基本思想是数据抽象和封装,数据抽象是一种依赖接口和实现分离的编程技术。 类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。 封装实现了类的接口和实现的分离封装后的类隐藏了它的实现细节。 定义抽象数据类型 引入this 成员函数通过一个名
阅读全文
摘要:函数指针指向的是函数而非对象,和其他指针一样,函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型共同决定,与函数名无关。 记个概念,暂时没用到,用到再细细地学一下【逃】 重载函数的指针 编译器通过指针类型决定选用哪个函数,指针类型必须与重载函数的某一个精确匹配。 函数指针形参 形参可以是指
阅读全文
摘要:内联函数可避免函数调用的开销 调用函数:将函数在美国调用点上“内联地”展开。(在函数前加个inline就可以了) 内联说明只是向编译器发出一个请求,编译器可以忽略这个请求。 说明:内联机制用于优化规模较小,流程直接,频繁调用的函数,很多编译器都不支持内联 递归函数。 constexpr 函数 con
阅读全文
摘要:同一作用域内,函数名字相同但形参列表不同,就称之为重载函数。 notes: main函数不能重载 定义重载函数 对于重载函数来说,它们应该在形参数量或形参类型上有所不同。 判断两个形参的类型是否相异 【形参数量、类型相同,只是名字不同也算是相同的】 重载和const形参 一个拥有顶层const的形参
阅读全文
摘要:在函数中值是如何被返回的 返回一个值的方式和初始化一个变量或者形参的方式完全一样:返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果。 主函数mian的返回值 我们允许main函数没有return语句直接结束,如果控制到达了main函数的结尾处而且没有return语句,编译器将隐式的插
阅读全文
摘要:基础概念: 组合运算符和运算对象(优先级与结合律) 运算对象转换(类型转换) 运算符重载(<< >>之类) 左值和右值 算术运算符 一元负号对布尔值的运算不起作用 提示:注意溢出和其它算术运算异常 逻辑和关系运算符 逻辑与和逻辑或运算符 逻辑非运算符 关系运算符 赋值运算符 赋值运算满足右结合律 赋
阅读全文
摘要:严格的说,C++中没有多维数组,通常说的多维数组其实是数组的数组。 当一个数组的元素仍然是数组时,通常用两个维度来定义它,一个维度表示数组本身的大小,另一个维度表示其元素(也是数组的大小);4 int ia[3][4] ; //大小为3的数组,每个元素是含有四个整数的数组。 多维数组的初始化: 使用
阅读全文
摘要:C标准string函数 比较字符串 比较两个C风格字符串的方法和之前学过的比较标准库string对象的方法大相径庭。 标准库的比较是字典序比较 C风格字符串是比较两个指针而非字符串本身。 目标字符串的大小由调用者指定 与旧代码的接口 混用string对象和c风格字符串 任何出现字符串字面值的地方都可
阅读全文
摘要:除了使用下标访问string对象的字符或者vector对象的元素,还可以通过迭代器来实现相同的目的。 使用迭代器 迭代器运算符 将迭代器从一个元素移动到另外一个元素 迭代器使用递增运算符(++)来从一个元素移动到下一个元素。 注意:因为end返回的迭代器并不实际只是某个元素,所以不能对其进行递增或解
阅读全文
摘要:标准库类型vector表示对象的集合,其中所有对象的类型都相同。vector也叫容器。 与string类似,要使用vector,必须包含头文件 #include <vector> vector是一个类模板,编译器根据模板创建类或函数的过程称为实例化,使用模板时需要指出编译器应把类或函数实例化成何种类
阅读全文
摘要:定义和初始化string对象 初始化string对象方式 string s1 默认初始化,s1是一个空串 string s2(s1) s2是s1的副本 string s2 = s1 等价于s2(s1), s2是s1的副本 string s3("value") s3是字面值"value"的副本,除了字
阅读全文
摘要:变量命名规范 标识符要体现实际意义 变量名一般用小写 如 number,sum之类的 用户自定义的类名一般以大写字母开头eg: Sales_item 如果标识符由多个单词组成,则单词捡应该有明显的区分,如studen_loan
阅读全文
摘要:今天写代码遇到了 一点点困惑,题目要求大致为: 输入一串数字(包含一些空格)当键入回车时计算出输入数字的和 其实现代码如下: 程序里用到了cin.peek()和cin.get(),顺便学习一下这两个的用法: 参考博文传送门:http://c.biancheng.net/cpp/biancheng/v
阅读全文
摘要:【这里使用的核心是4.14版本的】 1.创建驱动程序源文件Driver.c 2.同目录创建Makefile 3.切换到root 权限 make insmod Driver.ko【文件名是上面用的】 安装模块 4.增加自己的模块 mknod /dev/Driver c 243 0 //243为设备号
阅读全文
摘要:类型别名: 方法1:传统方法定义类型别名:typedef: typedef double wages ; //wages 是double 的同义词 typedef wages base, *p; //base是double 的同义词,p是double* 的同义词 方法2:使用别名声明来定义类型的别名
阅读全文
摘要:顶层:指针本身就是一个常量。 底层:指针所指的对象是一个常量。 指针类型既可以指顶层const,也可以是底层const,这一点和其它类型相比区别明显。 int i =0; int *const p1 = &i; //不能改变p1的值,因为这是一个顶层const const int ci =42; /
阅读全文
摘要:2.4 const 限定符 const int k; //错误 K是一个未经初始化的常量 2.4.1 const的引用 把引用绑定到const 对象上,我们称之为对常量的引用,与普通引用不同的是,对常量的引用不能被工作修改它所绑定的对象。 const int ci = 1024; const int
阅读全文
摘要:记录一下操作系统的课设过程 参考了很多前辈的教程,这里简略的总结一下: 1.首先要确定内核与linux系统版本是否匹配(不匹配的话捣鼓半天not support这是最气的),这里采用的是linux16.4版本的操作系统,linux 4.14.0版本的内核。具体的源码可以在github上或者https
阅读全文