08 2023 档案
摘要:##### 一、类型信息运算符 - ###### typeid - 在C++中typeid可以获取数据的类型,需要加头文件 typeinfo - 通过find /usr/include -name typeinfo - typeid 是运算符,执行运算符函数,执行的返回值类型是type_info类类
阅读全文
摘要:##### 一、虚函数、虚函数表、虚表指针、覆盖 ###### 1、虚函数 - 在成员函数前面加 virtual 后,该函数就称为虚函数,此时该类就会像虚进程一样多了一个虚表指针(虚函数表指针,虚指针) ```c++ class Base { public: void func(void) { co
阅读全文
摘要:##### 一、什么是继承 1. ###### 当遇到问题时,先查看现有的类是否能解决一部分问题,如果有则继承该类,并在此基础上扩展以此解决问题,从而缩短解决问题的时间(代码复用) 2. ###### 当遇到一个大而复杂的问题时,可以把大问题拆分成若干个不同的小问题,然后为每个小问题设计一个类来解决
阅读全文
摘要:##### 一、 特殊的运算符重载函数 ```c++ * -> () [] new delete ``` 1. ###### [ ] 下标运算符 - 想让一个类对象当成数组1一样使用,可以考虑重载下标运算符,例如:vector 等 - ```c++ class Array { int* ptr;//
阅读全文
摘要:##### 一、 静态成员 什么是静态成员:被static修饰的成员变量和成员函数叫做静态成员 普通成员的特点: - 成员变量:每个类对象中都有一份属于自己的成员变量,相互之间没有关联、独立的 - 成员函数:隐藏着一个this指针,接收调用者地址用于区分调用者 静态成员的特点: - 静态成员变量:
阅读全文
摘要:##### 一、 对象的创建和销毁过程分析 1. 对象的创建过程 - 给对象划分内存空间 - 执行初始化列表 - 根据继承表的顺序调用父类的无参构造或者有参构造 - 通过:父类名(val) 调用父类的有参构造 - 根据成员变量的定义顺序调用类类型成员的无参构造或者有参构造 - 通过:类类型成员名(v
阅读全文
摘要:##### 一、 函数重载 1. 什么是函数重载 在同一作用域下,函数名相同,参数列表不同的函数构成重载关系 函数重载与返回值类型、参数名无关 与作用域是否相同,以及参数列表的数量、参数类型、常属性不同等有关 ```c++ #include using namespace std; void fun
阅读全文
摘要:##### 一、 C++介绍 本贾尼.斯特劳斯特卢普,于1979年在贝尔实验室负责分析UNIX系统内核流量的分布情况时,特别希望有一种更加模块化的工具,于1979.10开始着手研发一款新的编程语言,在C语言的基础上增加了面向对象的机制,也就是C++,1983年完成了C++的第一个版本 C++与C的关
阅读全文
摘要:#### 线程竞争 ##### 基本概念 ###### 竞争与同步 同一个进程中的线程共享进程中的绝大多数资源,当它们随意竞争时可能会导致资源被破坏、脏数据、不完整问题 通过一些手段让线程在竞争资源时相互协调、避免出现以上问题,这就称为线程同步 ###### 原子操作: 操作过程中不能被打断的操作称
阅读全文
摘要:#### 线程管理 ##### 基本概念 1、线程是进程的执行路线,它是进程内部的控制序列,线程是进程的一部分,进程是一个资源单位,而线程是执行单位,线程是进程执行的实体,负责真正的执行 2、线程是轻量级的,没有自己的代码段、数据段、bss段、堆、环境变量、命令行参数、文件描述符、信号处理函数、当前
阅读全文
摘要:#### TCP服务端处理多客户端任务: 原来是通过开启子进程来服务不同的客户端,当客户端退出时就关闭该子进程 #### 多路复用: 使用一个进程(有且只有一个主进程)同时若干个文件描述符,这种读写模式称为多路复用 多用于TCP的服务端,用于监控客户端的连接和数据的收发 优点:不需要频繁地创建、销毁
阅读全文
摘要:##### 封装socket网络通信模块-network 原因:TCP、UDP客户端、服务端的操作流程固定,所以为了后期使用方便,把socket网络通信封装成网络模块 任务:生成libnw.so共享库 笔试、面试问题:回答原始函数 讲项目:聊封装过程 ##### FTP协议 FTP 的独特的优势同时
阅读全文
摘要:##### 进程间通信-socket套接字 基本特征:socket是一种接口技术,被抽象了一种文件操作,可以让同一计算机中的不同进程之间通信,也可以让不同计算机中的进程之间通信(网络通信) ###### 本地进程间通信编程模型: 进程A 进程B 创建socket对象 创建socket对象 准备通信地
阅读全文
摘要:进程间通信: 一、基本概念 什么是进程间通信: 是指两个或多个进程之间需要协同工作、交互数据的过程,因为进程之间是相互独立工作的,为了协同工作就需要进行通信来交互数据 进程间通信的分类: 简单的进程间通信: 信号(携带附加信息)、文件、环境变量、命令行参数等 传统的进程间通信: 管道文件(有名管道、
阅读全文
摘要:### 进程管理 ##### 进程的基本概念 ###### 进程与程序 程序是存储在磁盘上的可执行文件,程序被加载到内存中开始运行称为进程,一个程序可以同时加载成多个进程,进程就是处于活动状态下的程序 ###### 进程的分类 进程根据功能不同一般分为三种类型:交互进程、批处理进程、守护进程 交互进
阅读全文
摘要:##### C语言文件IO 文件的分类: 文本文件:人能看得懂的文件,存储的是数据ASCII码的二进制 '2''5''5' 50 53 53 二进制文件:人看不懂,存储的是数据的补码 255 1111 1111 ###### 文件IO: FILE *fopen(const char *path, c
阅读全文
摘要:##### 结构:struct 结构是由程序员自己设计的一种数据类型,用于描述一种事物的各项数据,由若干项不同的基础数据类型组成 设计结构类型: struct 结构类型名 { 类型名1 成员名1; 类型名2 成员名2; ... }; // 分号不能少 定义结构变量: struct 结构类型名 结构变
阅读全文
摘要:#### 信号管理 ##### 基本概念 1、中断 当进程接收到消息后中止当前正在进行进程,转而去执行其它任务,等其它任务执行结束后再返回刚刚中止的位置,可以继续往下运行 这种执行模式称为中断 中断分为硬件中断、软件中断,硬件中断是由硬件设备引发的、软件中断是执行了中断指令引发 2、信号 信号是一种
阅读全文
摘要:分别使用标准IO和系统IO写入一百万个整数到文件,测试谁的时间更短?为什么? 结论:在同等数据的写入下,使用标准IO要比直接使用系统IO更快 原因:标准IO有缓冲区机制,在执行fwrite写文件时,数据不是直接调用系统IO写入磁盘,而是先存放在内存的缓冲区中,直到缓冲区满后才会调用一次系统IO全部写
阅读全文
摘要:##### 内存管理 用户层 STL 智能指针/容器 自动分配、释放 调用C++ C++ new/delete 调用C C malloc/free 调用POSIX\Linux POSIX brk/sbrk 调用内核 Linux mmap/munmap 调用内核 系统层 Kernal kmalloc/
阅读全文
摘要:##### UNIX系统简介: 1970年于美国贝尔实验室,作者肯.汤普逊和丹尼斯.里奇 UNIX是最早的多用户、多任务、支持多种CPU架构,高稳定性、高可靠性、高安全性 既能构建大型关键型业务系统的服务器(银行、电信公司等),也能支持移动嵌入式设备 Minix是一种开源的基于微内核架构的类UNIX
阅读全文
摘要:##### Linux系统编程实例1 ###### 1.实现一个计算文件大小的函数 方法1(标准IO): 函数使用: int fseek(FILE *stream, long offset, int whence); 返回值:成功0 失败-1 long int ftell(FILE *stream)
阅读全文
摘要:##### 预处理指令 程序员所编写的代码并不是能被编译器直接编译的标准C代码,需要一段程序翻译一下 翻译的程序称为预处理器,翻译的过程叫做预处理,需要被翻译的代码叫做预处理指令,以#开头的都是预处理指令 查看预处理结果: gcc -E code.c 把预处理的结果显示到终端 gcc -E code
阅读全文
摘要:字符串 字符: 字符是在计算机中以整数形式存储的,在需要显示成字符时会根据ASCII表中对应的关系,来显示对应的符号或图案 '\0' 0 空字符 '0' 48 'A' 65 'a' 97 串: 是一种数据结构,是由一组连续的若干个类型相同的数据组成,末尾有一个结束标志 对于这种数据结构的处理都是批量
阅读全文
摘要:##### 什么是指针: 指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整形数据,该整型数据代表了内存的编号(地址),可以通过这个编号访问对应的内存 ##### 为什么要使用指针: ###### 1、函数之间是相互独立的,但是有时候需要共享变量 传参是单向值传递 全局变量可以共
阅读全文