- 博客(55)
- 收藏
- 关注
原创 Vector容器
一、vector容器。1、vector容器基本概念。1)功能:vector容器数据结构与数组非常相似,也称为单端数组。2)vector与普通数组区别?普通数组 -> 静态空间。vector容器 -> 动态扩展。3)动态扩展。并不是在原空间之后继续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间上,释放原空间。4)迭代器。vector容器的迭代器是支持随机访问的迭代器。2、vector构造函数。功能: 创建vector容器。#include <...
2020-12-14 20:24:25
1650
原创 List容器
一、list容器的基本概念。1、功能: 将数据进行链式储存。2、组成。链表的组成: 由一系列的节点组成。节点的组成: 一个储存数据元素的数据域,和一个储存下一个节点的地址的指针域。STL中的链表是一个双向循环链表。3、迭代器。由于链表不是一段连续的储存空间,因此链表的迭代器只支持前移和后移,属于双向迭代器。二、构造函数、赋值、交换、容量和大小。#include <iostream>using namespace std;#include <list>/
2020-12-14 20:23:47
177
原创 文件操作
一、文件操作。1、为什么要学习文件操作?程序运行时产生的数据属于临时数据,程序一旦运行结束都会释放了。通过文件可以将数据持久化。C++中对文件操作需要包含头文件<fstream>2、文件类型。一共两种。1)文本文件。文件以文本的ASCII码形式储存在计算中。2)二进制文件。文件以文本的二进制形式储存在计算机中,用户一般不能直接读懂它们。3、操作文件。1)ofstream: 写操作2)ifstream: 读操作3)fstream: 读写操作二、文本文件。 ..
2020-12-10 20:08:35
229
原创 模板
一、模板的概念。1、什么是模板?泛型编程就是利用模板的技术来进行编程。模板就是建立通用的模具,大大提供复用性。例如:PPT模板、照片模板。2、模板有什么特点?1)模板不可以直接使用,它只是一个框架。2)模板的通用并不是万能的。二、函数模板。C++提供两种模板机制:函数模板和类模板。1、函数模板的作用?建立一个通用的函数,其函数的返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表。2、语法。template<typename T>函数声明或者定义解析
2020-12-10 20:08:05
129
1
原创 多态
一、多态的基本概念。多态是C++面向对象的三大特性之一。多态分为两类:静态多态: 函数重载和运算符重载属于静态多态,复用函数动态多态: 派生类和虚函数实现运行时多态。静态多态和动态多态区别:静态多态的函数地址早绑定 编译阶段确定函数地址动态多态的函数地址晚绑定 运行阶段确定函数地址#include <iostream>using namespace std;//多态//动物类class Animal{public: //如何告诉这个Animal不要...
2020-12-09 20:27:08
85
原创 运算符重载
一、运算符重载。什么是运算符重载?运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。二、加号运算符重载。作用: 实现两个自定义数据类型相加的运算。#include <iostream>using namespace std;//加号运算符重载class Person{public: //1. 成员函数重载+号。 /* Person operator+(Person &p) { Perso...
2020-12-07 20:16:58
131
原创 友元
一、友元。在生活中,你的家有客厅(public),有你的卧室(private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你才能进去,但是呢,你也可以允许你的好闺蜜好基友进去。在程序中,有些私有的属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。友元的目的就是让一个函数或者类访问另外一个类中的私有成员。友元的关键字为:friend友元的三种实现:1)全局函数做友元。2)类做友元。3)成员函数做友元。二、全局函数做友元。#include <i
2020-12-07 20:16:26
322
原创 C++d对象与this指针
一、成员变量与成员函数分开存储。在C++中,类内的成员变量和成员函数是分开储存的,只有非静态成员变量才属于类的对象上。#include <iostream>using namespace std;class Person{public: int m_A; //非静态成员变量 属于对象上 static int m_B; //静态成员变量 不属于对象上 void func() //非静态成员函数 不属于对象上 {...
2020-12-07 20:15:42
119
原创 对象的初始化与清理
一、对象的初始化与清理。生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用的时候也会删除一些自己信息数据保证安全。C++中面向对象来源于生活,每一个对象也都会有初始化设置以及对象销毁前清理数据的设置。1、C++中需要考虑的问题。对象初始化和清理是两个非常重要安全问题。一个对象或者变量没有初始状态,对其使用后果是未知。同样,使用完一个对象或者变量时,没有及时清理,也会造成一定的安全问题。2、构造函数与析构函数。C++利用构造函数和析构函数解决上述的问题,这两个函数将会被编译器自动调
2020-12-04 20:04:59
115
原创 类的封装
一、类。1、C++面向对象的三大特性?封装、继承、多态。2、C++认为万事万物皆为对象,对象上有其属性与行为。例如:人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳。吃饭、唱歌..。车也可以作为对象,属性有轮胎、方向盘。车灯...,行为有载人、放音乐、放空调...。具有相同性质的对象,我们可以抽象成为类,人属于人类,车属于车类。二、封装。1、封装的意义。封装是C++面向对象的三大特性之一。其意义是:1)将属性和行为作为一个整体,表现生活中的事物。2)将属性与
2020-12-04 08:18:16
393
原创 函数提高
一、函数提高。 --- 函数默认参数在C++中,函数的参数列表中的形参可以有默认值的。语法: 返回值类型 函数名(参数=默认值){}#include <iostream>using namespace std;//返回值类型 函数名(参数=默认值){}int func(int a,int b,int c = 30){ return a+b+c;}//注意事项://1. 如果某一个位置已经有默认参数了,那么从这个位置开始往后,从左到右都必须有默认值。int ...
2020-12-04 08:17:42
105
原创 引用
一、内存分区模型。1、在C++程序执行时,将内存大方向可以划分为4个区域。1)代码区:存放函数的二进制代码,由操作系统进行管理的。2)全局区:存放全局变量和静态变量以及常量。3)栈区:由编译器自动分配释放,存放函数的参数值,局部变量等。4)堆区:由程序员分配和释放,若不释放,程序结束时由操作系统回收。2、内存四区意义?不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。二、程序运行前。在程序编译后,生成了可执行程序,未执行该程序前分为两个区域。1.代码区:存放CPU执行的
2020-12-04 08:17:11
117
原创 信号驱动,超时接收
一、信号驱动。1、信号驱动原理是什么?就是使用了系统编程中信号的机制,首先让程序安装SIGIO的信号处理函数,通过监听文件描述符是否产生了SIGIO信号,我们就知道文件描述符有没有数据到达。如果有数据到达(小明这个客人来了),则系统就会产生了SIGIO信号(门铃响了),我们只需要在信号处理函数读取数据即可。模型:void fun(int sig){ //读取sockfd的数据即可。}signal(SIGIO,fun); -> 只要将来收到SIGIO这个信号,就执行fun这...
2020-10-13 19:47:47
689
原创 shell 编程
一、shell编程的理解?1、什么是shell编程?shell编程通过shell语法写出来的一个文件,这个文件称之为shell脚本。例如:"~/.bashrc","/etc/profile"。shell语法有自身独特的变量,循环结构,分支结构。2、在linux下,如何解析命令?是谁在解析命令?1)怎么理解shell?shell在英文中被翻译为"贝壳",在贝壳的内部叫内核,在贝壳的外部叫用户,用户与内核之间交互必须通过shell来进行解析。例子: 用户输入 ...
2020-10-13 19:46:43
199
原创 非阻塞IO,多路复用
一、网络编程四种IO模型。1、什么是IO模型?网络编程对于数据输出输入方法: 阻塞IO,非阻塞IO,多路复用,信号驱动。2、这几种IO模型原理是如何?1)阻塞IO: 一直阻塞等待某一个套接字的数据到达,如果有数据,则读取并返回,如果无数据,就会一直等待。read(fd);recv(fd);accept(sockfd);以上的例子,在过去,我们都会觉得是函数阻塞,例如read函数,accept函数阻塞,但是这样想是错误,因为真正阻塞的是套接字/文件描述符,并不是函数本身具有阻塞的属性。因
2020-10-12 08:27:33
370
原创 UDP协议
一、通信协议。 -- UDP协议TCP -> Tranmission Control ProtocolUDP -> User Data ProtocolIP -> Internet Protocol1、TCP协议与UDP协议差异?TCP协议面向有连接情况,是一种可靠传输方式。 -> 必须要连接上,才能通信。UDP协议面向无连接情况,是一种不可靠传输方式。-> 不需要连接也能发送数据。2、如何实现?UDP协议...
2020-10-12 08:25:59
63
原创 网络编程相关函数
创建未连接套接字:接口声明:int socket(int domain, int type, int protocol);参数:domain:域。AF_INET/PF_INET:网际协议AF_UNIX/PF_UNIX:本地协议,可写成AF_LOCAL/PF_LOCALtype:类型。SOCK_STREAM:流式套接字SOCK_DGRAM:数据包套接字protocol:协议。一般为0返回值:成功:待连接套接字失败:-1备注:在...
2020-10-12 08:25:19
136
原创 网络编程,TCP协议
一、网络编程学习大纲。1、网络体系结构模型。2、网络编程专业术语:socket、IP地址、端口号。3、配置ubuntu系统IP地址。4、通信协议:TCP协议、UDP协议。5、网络编程IO模型: 阻塞IO、非阻塞IO、多路复用、信号驱动。6、超时接收数据方式。二、网络编程专业术语。1、系统编程中进程之间通信与网络编程有什么区别?网络编程其实也是属于进程之间的通信。系统编程进程之间通信:管道通信,信号,消息队列,共享内存,他们的特点可以实现同一台主机内部的两个任意的进程之间的通信。网络编
2020-10-12 08:24:28
207
原创 线程池
一、线程池资源。线程池接口设计说明书.doc -> 关于线程池中接口使用:参数,头文件,原型,返回值..pool_test/ -> 线程池源码以及小例子。main.c -> 使用线程池接口实现的一个小例子。thread_pool.c -> 线程池源码thread_pool.h -> 线程池函数声明,结构体声明,宏定义。二、线程池原理。1、 线程池意义?可以同时处理多个任务。2、 线程池机制?线程池好比是...
2020-10-07 19:45:22
80
原创 条件变量
三、条件变量。1、 什么是条件变量?线程因为某一个条件/情况不成立下,进入一个变量中等待,这个存放线程的变量就是条件变量。条件变量一定要与互斥锁连用。2、条件变量的函数接口。1)先定义一个条件变量。 -> 数据类型: pthread_cond_t pthread_cond_t cond;2)初始化条件变量。 -> pthread_cond_init() -> man 3 pthread_cond_init动态初始化:头文件: #include <...
2020-10-07 19:44:28
708
原创 互斥锁,读写锁
一、线程互斥方式。 --- 互斥锁1、什么是互斥锁?特点怎么样?互斥锁是专门用于处理线程之间互斥的一种方式,它有两种:上锁状态/解锁状态。如果互斥锁处于上锁状态,那么再上锁就会阻塞,直到这把锁解开之后,才能上锁。如果互斥锁处于解锁状态,那么再解锁依然可以的,不会阻塞。2、 互斥锁函数接口?1)定义互斥锁变量 -> 数据类型: pthread_mutex_t pthread_mutex_t m;2)初始化互斥锁。 -> pthread_mutex_init() ...
2020-10-07 19:43:47
297
原创 有名信号量,无名信号量
一、同步互斥方式 -- 有名信号量。1、有名信号量特性?有名信号量与学习过的信号量非常相似,但是信号量的值只能是0或者1,而是有名信号量可以0~正无穷。信号量使用"空间+数据"来处理互斥,而有名信号量只是使用数据来处理。有名信号量都是作用于进程之间的互斥。2、有名信号量机制与函数接口?机制: 参考: 有名信号量.jpg1)创建并打开一个有名信号量? -> sem_open() -> man 3 sem_open功能: initialize and open a na...
2020-10-02 18:59:51
1012
1
原创 分离属性,线程取消例程函数,线程响应取消行为的类型
四、分离属性。1、什么是分离属性?首先分离属性是线程的一个属性,有了分离属性的线程,不需要别的线程去接合自己。(自己会回收自己的资源)但是虽然说是分离,但是进程退出了,该线程还是要退出的。分离属性线程 -> 不需要pthread_join()去接合线程,即使调用也会返回。非分离属性线程 -> 需要pthread_join()去接合线程 -> 默认创建的普通属性就是非分离属性。2、如何创建出分离属性的线程?方法一:添加一个分离属性到一个属性变量,然后使用属性变量去创..
2020-10-02 18:58:49
404
原创 线程
三、linux最小资源单位。 -- 线程。1、 进程与线程的区别?linux --- 社会进程 --- 人线程 --- 人的手线程是一个进程的内部资源。2、如何开启一个进程? 如何开启一个线程?./xxxx -> 开启一个进程xxxx.cint main(int argc,char *argv[]){ /* 代表进程的开始 */ xxxx; /* 进程的运行过程 */ ---> 可以使用函数创建很多个线程。 ...
2020-10-02 18:55:45
124
原创 exec函数族,fork, vfork
一、exec函数族接口。1、什么是exec函数族?exec函数是一系列的函数接口,然后这些接口的作用就是让一个程序替换(覆盖)掉原来的子进程的。2、exec函数族接口有哪些?功能: execl, execlp, execle, execv, execvp, execvpe - execute a file //执行一些文件。头文件:#include <unistd.h>原型: int execl(const char...
2020-09-30 19:25:26
141
原创 进程之间的通信:有名管道和无名管道
四、进程之间的通信。1、 为什么要学习进程之间的通信?例如:./1 -> 开启了一个名字为1的进程。./2 -> 开启了一个名字为2的进程。通过学习进程之间的通信,使得不同的进程之间都是可以实现数据的交换。例如进程1发送数据给进程2,进程2收到数据之后,根据数据来做不同的事情。(间接地实现进程1控制进程2)2、在linux下,进程之间的通信方式有哪些,都有什么特点?1)管道通信。管道通信分为有名管道与无名管道,管道是一种特殊的文件,进程通过将数据写入到管道中,另外一个进程从..
2020-09-30 19:24:09
319
原创 共享内存,信号量
一、进程之间的通信。--- 共享内存。1、什么是共享内存?机制如何?共享内存也是属于IPC对象,所以在使用之前,必须为共享内存申请key值。共享内存由于存在于运行内存上,运行内存在linux下所有的进程都可以访问到,结论就是任意的两个进程都可以通过共享内存进行通信。实现步骤: key值 -> ID号 -> 共享内存地址 -> 数据交换 -> 撤销映射。2、 共享内存函数接口?1)先申请key值。 key = ftok(".",10);2)根据申请到的k...
2020-09-30 19:19:41
138
原创 消息队列,ftok,
一、IPC对象。1、 什么是IPC对象?在linux下,IPC对象指的是消息队列、共享内存、信号量。如果用户需要使用IPC对象进行进程之间的通信,首先必须要为IPC对象申请对应资源(key值、ID号)。例如如果你想使用消息队列来通信,那么你就必须为消息队列申请key值与ID号。2、查看当前系统中所有的IPC对象?1)查看IPC对象: ipcs -a------ Message Queues -------- //消息队列key msqid own...
2020-09-29 22:50:42
251
原创 目录IO
目录IO中有哪些接口?1)如何打开一个目录呢? -> opendir() -> man 3 opendir功能: open a directory //打开一个目录头文件: #include <sys/types.h> #include <dirent.h> -> 目录专属头文件原型: DIR *opendir(const char *name);参数: name:需要打开的那个目录的路径。 (绝对...
2020-09-09 19:19:12
170
原创 标准IO函数2->sprintf() getchar() getc() fgetc() putchar() putc() fputc() puts() gets() fgets()
2、 getchar() -> man 2 getchar (用于清空缓冲区)函数只能从标准输入缓冲区中获取一个字符头文件:#include <stdio.h>原型: int getchar(void);返回值: 成功:获取到的字符。 失败:EOF一般地:我们使用完scanf()后,都应该主动清空缓冲区。例如:scanf();while(getchar()!='\n');例子1:char a;int b;scanf("%d",&...
2020-09-02 16:51:14
190
原创 触摸 屏
一、linux系统IO应用实例。 -> 触摸屏。1、触摸屏设备叫什么名字?在linux下,一切都是文件,连触摸屏也是一个文件。触摸屏设备名字:/dev/input/event02、熟悉了解触摸屏两个专业术语。1)事件。 -> event0当一些外接控制设备(鼠标、键盘,wifi,触摸屏,按键)接入到嵌入式平台(GEC6818)时,这些外接设备的状态发生了改变(鼠标的左键被按下了,键盘的R键被按下,有人连接上wifi了,触摸屏被滑动了一下,按键被按下了)时,这个动作就称之为事件。.
2020-09-01 18:34:52
704
原创 标准IO函数
一、标准IO。1、标准IO有什么特点?系统IO专门用于访问硬件设备的,标准IO专门用于访问普通文件。标准IO中所有函数都是属于标准C库中的接口,所以标准IO的函数都是属于man手册中第3手册。2、如何使用标准IO访问文件?1)访问文件? -> fopen() -> man 3 fopen函数功能: stream open functions头文件:#include <stdio.h>原型: FILE *fopen(const char *path, c...
2020-09-01 18:33:06
474
原创 文件描述符,open 函数
一、文件IO学习大纲。1、文件IO概念、文件概念、文件类型。2、访问文件方法一 -> 系统IO 打开?/读取?/写入?/关闭?3、系统IO文件描述符概念?文件描述符与文件的关系?文件描述符的值。4、文件偏移量概念。5、系统IO应用实例:LCD液晶、触摸屏。6、系统IO另外一种访问文件的方式:内存映射。 -> 针对LCD液晶7、访问文件方法二 -> 标准IO 打开?/读取?/写入?/关闭?8、标准IO函数:处理字符/字符串9、目录IO:访问目录,切换目录,读取目录...
2020-08-28 19:07:17
876
原创 文件数据的I/O,文件偏移,内存映射
一、文件数据输出/输入。1、如何读取文件的数据? -> read() -> man 2 read函数功能:read from a file descriptor //读取一个文件描述符的数据头文件: #include <unistd.h>原型: ssize_t read(int fd, void *buf, size_t count);参数: fd:文件描述符 buf:数据缓冲区 count:尝试读取的字节数(愿望值)...
2020-08-28 19:04:06
712
原创 开发板的使用
一、开发板使用学习大纲。1、开发板组成、核心板资源,底板资源。2、开发板连接、调试工具、串口参数配置。3、开发板启动过程。4、文件传输 1)使用串口传输。 上传/下载 2)使用网口传输。 上传/下载5、临时/永久配置开发板IP地址。6、开发板启动脚本。二、开发板的组成。核心板:CPU处理器: 芯片:S5P6818(三星) 内核: ARM cortex-A53 -> 八核处理器运行内存:512MB*2=1Gnandflash:4G底板:电源线:5V串口...
2020-08-26 17:26:50
2319
原创 makefile 制作库
一、工程管理文件makefile。1、什么是makefile?makefile叫做工程管理文件,用于管理一个工程中所有关联的文件,例如:头文件,库文件,源文件..2、makefile在一个工程中是不是一定要写的?不一定要写。一般原则:如果编译命令复杂,就会写makefile。项目中文件比较多的时候,一般都会写makefile去管理所有的文件。项目中文件比较少的时候,一般不会写makefile,因为编译命令比较简单。makefile作用就是为了简化编译时的复杂度。二、项目工程中应该由那些
2020-08-25 17:24:18
366
原创 交叉工具链
一、交叉工具链。1、什么是交叉工具链?1)回顾gcc编译器。作用:将高级语言C转换目标程序。 GCC编译器 ubuntu平台 高级语言C文件 ----------------> 二进制文件(x86架构) -----------------> 程序效果gcc编译器:在ubuntu编译,在ubuntu运行。 编译命令:gcc xxx.c -o xxx执行命令:./xxxgcc编译器是ubu...
2020-08-25 17:22:33
263
1
原创 linus常用命令
一、linux基础学习大纲。1、linux常用命令、命令参数使用。2、文件种类、文件权限设定,权限掩码umask。3、linux系统下根目录"/"存放着什么文件?4、环境变量使用,重点学习:PATH。5、学习linux系统启动脚本:.bashrc文件。6、linux命令行功能:补齐命令/方向键回忆输入过的命令。7、man手册使用。 -> 遇到命令/函数不懂时,如何快速查询?8、安装中文man手册。二、linux常用命令。1、pwd -> 打印当前的工作绝对路径。绝对路..
2020-08-24 14:11:11
244
原创 man手册,安装中文手册
一、man手册。1、什么是man手册?man手册就是linux提供给用户查看linux语法的一本书,当用户遇到一些不懂的命令/函数时,不用刻意去记住命令/函数的用法,只需要记住怎么在man手册去查询即可。遇到不懂的命令 -> 查阅man手册 -> 得知:命令功能,命令参数,命令使用方法。遇到不懂的函数 -> 查阅man手册 -> 得知:函数功能,函数头文件,函数原型,函数参数,函数返回值。2、man手册是如何管理内容?gec@ubuntu:~$ man...
2020-08-24 14:09:35
864
原创 linus命令,环境变量
一、linux命令。1、cp -> 拷贝文件/目录。用法:cp 需要拷贝的文件/目录的路径 ... 目标目录的路径1)拷贝文件到目录下。gec@ubuntu:~$ cp kkk.c test -> 拷贝一个gec@ubuntu:~$ cp aaa.c bbb.c kkk.c test -> 拷贝多个gec@ubuntu:~$ sudo cp aaa.c /2)拷贝目录到目录下。gec@ubuntu:~$ cp test test2 -r -> test...
2020-08-24 09:10:18
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人