自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 day52

shell脚本。

2024-09-23 20:36:14 1040

原创 day51

[]的结果,建议直接按照"变量名=$[]"格式接收,因为$[]本质上,会遗留一个运算结果在表达式的位置,如果不接受继续向后运行指令会报错。变量名="变量的值" ---> 用于使用已有变量的值和空格拼接给新变量赋值时(只要需要用已有变量的值都建议加"")expr index "$str1" le # 2 如果查找多个字符在字符串中的位置,返回最先出现的字符的位置。返回表达式,在字符串中第一个位置起完全匹配成功的字符个数,如果能匹配成功,返回值就是表达式中字符的个数。

2024-09-20 20:05:10 881

原创 day49

随着几年的不断完善,已经成为最流行的Shell。Korn Shell(简称ksh):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。1. 将原来的软件源保存一份,sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak。

2024-09-18 20:47:39 973

原创 day48

1> Mat类,图像容器2> 读取图像//功能:读取出图像//参数:图像路径//返回值:读取的图像3> 命名展示图像的窗口功能:命名一个图像窗口参数1:窗口名称参数2:窗体尺寸,默认为自适应大小返回值:无4> 展示图像//功能:展示图像//参数1:要展示图像的窗口名称//参数2:要展示的二维图像//返回值:无案例Widget w;w.show();

2024-09-13 19:41:57 2083 1

原创 day47

/函数原型:void connectToHost(const QHostAddress &address, quint16 port, OpenMode mode = ReadWrite);//启动监听:bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);//更新起始点,以便于下一次的绘制。painter.drawText(this->rect(), //绘制的区域矩形框。

2024-09-11 21:17:18 742

原创 day46

1. 什么是事件?(重点)事件是由窗口系统或者自身产生的,用以响应所发生的 各类事情,比如用户按下并释放了键盘或者鼠标、窗口因 暴露而需要重绘、定时器到时而应有所动作,等等从某种意义上讲,事件比信号更原始,甚至可以认为大多 数信号其实都是由事件产生的。比如一个下压式按钮首先 感受到的是鼠标事件,在进行必要的处理以产生按钮下沉 继而弹起的视觉效果之后,才会发射 clicked()信号2. 如何处理事件?(重点)

2024-09-10 21:00:52 945

原创 day45

1> 一个信号可以连接到多个槽函数中2> 多个信号可以连接到同一个槽函数中,当连接的任意一个信号被发射出来后,槽函数就立即执行3> 一个信号函数也可以连接到另一个信号函数上,表示当前面的信号被发射 后,后面的信号紧跟着发射出去//将信号函数1和槽函数1进行绑定//信号函数的参数大于槽函数的参数:信号函数传来的数据槽函数可以不接//将带参信号与带参槽进行连接//将带参信号与带参槽连接。

2024-09-09 21:01:30 941

原创 day44

1> 在对象树模型中,子组件构造时,需要指定父组件而存在2> 子组件的生命周期由父组件进行管理3> 当父组件展示时,会将子组件一并展示,当父组件释放空间时,会将加载在该组件上的所有子组件的空间全部释放4> 对象树模型保证了,各个组件的内存不会泄露5> 在栈区申请的组件,程序结束后,由系统自动回收,在堆区申请的组件,结束后,由其父组件进行回收资源6> 父组件和子组件要用于共同的祖先类,实现的理论基础为多态。

2024-09-06 21:08:14 756

原创 day43

独占智能指针会“拥有”它所指向的对象,某一时刻,只能有一个unique_ptr指向给定的对象,当该指针被销毁时,指向的对象也会随之释放。

2024-09-05 21:11:36 1970

原创 day42

1> 格式 : [捕获列表](函数形参列表)[mutable] [->返回值类型]{函数体内容};2> 解析1、捕获列表:分为值捕获和引用捕获值捕获:值捕获时,表达式中的数据和外界的数据属于不同的数据,并且在非mutable的lambda表达式中值捕获数据可读不可写[变量1,变量2,。。。,变量n]:将这些数据都进行值捕获[=]:将外界的变量全部进行值捕获[=,&变量1,&变量2]:除了将变量1和变量2进行引用捕获外,其他都是值捕获。

2024-09-04 20:58:31 883

原创 day41

面向对象三大特征:封装、继承、多态继承:所谓继承,是类与类之间的关系。就是基于一个已有的类,来创建出一个新类的过程叫做继承。主要提高代码的复用性。

2024-09-03 20:32:19 841

原创 day40

1> 修饰函数的局部变量,表示将当前变量独立于整个函数而存在,其生命周期随着整个程序的编译而产生,整个程序结束而终止,即使函数没有被调用,静态成员变量的内存空间也已经存在了,即使函数以及运行结束,静态成员变量的生命周期也没有结束。一次初始化,后期调用函数时,都具有保值功能。2> 修饰类中成员变量,为静态成员变量,不依附于类对象而存在,编译时系统分配空间,需要在全局处进行定义。即使没有类对象,也可以通过类名直接使用,也可以通过类对象进行使用。

2024-09-02 21:07:59 786

原创 day39

Stu(string n, int a, double s):name(n),age(a),score(s),ptr(new int(520)) {cout<<"Stu::有参构造"<<endl;Stu(string n, int a, double s):name(n),age(a),score(s),ptr(new int(520)) {cout<<"Stu::有参构造"<<endl;} //移动构造。} //拷贝构造。} //拷贝构造。} //拷贝构造。

2024-08-30 18:52:54 656

原创 day38

class 类名public:功能的成员属性、函数protected:受保护的成员属性、函数private:私有的成员属性、函数1> 类中的成员属性和成员函数分为不同的权限public:该权限下的成员,可以在类内、子类中、类外被访问protected:该权限下的成员,可以在类内、子类中直接被访问,类外不允许被访问private:该权限下的成员,只能在类内被访问,子类、类外不允许被访问2> 如果没有指定权限,则默认为私有权限。

2024-08-29 20:26:43 822

原创 day37

类型名 &引用名 = 目标名;例如:int num = 520;//定义一个引用,并指向一个num目标对&又进一步使用,&的使用方式1、&表示单目运算符,取地址运算,后面紧跟一个变量2、&&表示双目运算符逻辑与运算3、&表示双目运算符,按位与运算4、&表示定义引用1> 在C语言中,对于堆区空间的申请和释放,使用的是malloc和free函数,C++中也可以继续使用2> 在C++中,提供了更加操作方便的关键字 new和delete用于堆区空间的申请和释放。

2024-08-28 20:41:08 1033

原创 day36

namespace 命名空间名类型 名字1;类型 名字2;。。。类型 名字n;//定义属于自己的命名空间void fun()int main()//使用方式1:连名带姓使用//使用方式2:将某个名字声明//20//使用方式3:将整个命名空间进行声明fun();return 0;//定义属于自己的命名空间。

2024-08-27 18:58:22 898

原创 day35

域套接字只能用来在本地中,用在进程与进程之间的通信作用原本最早,套接字也只有域套接字,套接字也只是用来做进程间通信的直到后来出现了TCP协议,TCP协议使用套接字来实现的进程间通信,我们就把只能做进程间通信的套接字,改名,称为域套接字思维方式暂时回到IPC进程间通信里面不再需要 ip 和 port反而需要:保证2个进程访问到同一个套接字文件整个流程,和TCP服务器不一样的地方就2点。

2024-08-22 21:03:41 1068

原创 day34

让我们的read函数不再阻塞,无论是否读取到消息,立刻返回。

2024-08-21 19:23:08 863

原创 day33

库在linux系统中是一个二进制文件,它是由XXX.c(不包含main函数)文件编译而来的,分为静态库和动态库。库在系统中的内容是不可见的,是一个二进制乱码当程序需要使用库中的相关函数时,直接链接对应的库即可,无需跟对应的 源文件一起联合编译作用:能够保证源代码的安全性库在不同的系统中的表现方式也是不同的windows下:静态库:XXX.lib动态库:XXX.dlllinux下静态库:libXXX.a动态库:libXXX.so。

2024-08-20 19:34:13 776

原创 day32

cd /etc/apt/sudo cp sources.list sources.list.save 将原镜像备份sudo vim sources.list 将原镜像修改成阿里源/清华源,如所述阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bioni

2024-08-19 20:49:55 926

原创 day31

****************************************主程序*****************************//******************************主程序*****************************/sin.sin_port = htons(SER_PORT);

2024-08-14 21:11:48 563

原创 day30

* 当前主机IP地址 */sin.sin_addr.s_addr = inet_addr(SER_IP);

2024-08-13 20:46:14 916

原创 day29

功能:位套接字分配名称参数1:通过socket函数创建出来的套接字文件描述符参数2:通用地址信息结构体,需要根据具体使用的地址族而定, struct sockaddr仅仅只是为了类型的强制转换,防止出现警告跨主机间通信:man 7 ip/* 表示通信域 *//* 端口号的网络字节序 *//* ip地址 *//* IP地址的网络字节序 */同一主机间通信:man 7 uninx/* 表示通信域:AF_UNIX */

2024-08-12 19:36:35 847

原创 day28

/将2字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序。//将4字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序。//将2字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序。//将4字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序。基于上面的通信方式的弊端,我们引入了网络通信,基于套接字socket的通信方式,能够完成同一主机之间的多个进程间通信和跨主机的多个进程间的通信。

2024-08-09 18:26:15 580

原创 day27

信号量集主要完成多个进程之间同步问题。

2024-08-07 19:35:34 584

原创 day26

1> system V提供了三种IPC(interprocess communication)进程间通信方式消息队列:本质上在内核空间维护了一个队列,发送者可以将消息先放入到该队列上,接收者根据自己的需求读取队列上的信息共享内存:本质上在独立于多个进程外,分配一个物理内存的映射,使得多个进程可以共享该内存空间信号量集:将多个无名信号量,放入一个集合中,分别控制不同的进程,用于进程间同步问题。

2024-08-06 20:45:52 572

原创 day25

程序允许启动一个定时器,当所定的时间到位后,会发送一个SIGALRM信号,我们可以将该信号绑定到对应的信号处理函数中,从而导致,给定时间后,处理自定义函数。答:不能,多个进程之间的用户空间是相互独立的,每个进程的全局变量是各个进程独立拥有的,更改一个进程的全局变量,另一个进程不会受到影响,故而不能使用全局变量来完成通信。/**************************主程序*******************/1> 信号通信原理图:两个异步通信的进程之间,通过发送相关信号,完成任务间的通信。

2024-08-05 20:06:12 652

原创 day24

/定义全局变量//定义线程体1while(1)//从终端获取数据printf("请输入>>>");//定义线程体函数2while(1)//0.5秒执行一次/******************主程序**********************///创建两个任务=0)printf("task1 创建失败\n");return -1;=0)

2024-08-02 17:49:13 853

原创 day23

printf("我是主线程,tid = %#lx, 主线程线程号:%#lx\n", tid, pthread_self());/************************主程序*****************************//************************主程序*****************************//*******************主程序*********************/printf("成功回收了%#lx的资源\n", tid);

2024-08-01 19:12:34 792

原创 day22

1> 在进程的创建过程,其实就是通过拷贝父进程的task_struct结构体而来的,子进程中保存了大部分的父进程的遗传基因,只需要修改少部分的内容,如子进程的进程号,子进程的父进程号。1> 0号进程:也成为 idel 进程,他是操作系统启动后执行的第一个进程,这个进程也叫空闲进程,当没有其他进程执行时,系统会默认执行该进程。//定义文件描述符写入文件。3> 2号进程:也称kthreadd,该进程由0号进程产生,也成为调度进程,当某个就绪进程时间片轮到时,该进程负责进程的调度工作。

2024-07-31 21:39:10 721

原创 day21

是使用系统调用(内核提供的函数)来完成数据的读写操作,不提供缓冲区,基于文件描述符操作文件。每进行一次文件io操作,进程就会从用户空间向内核空间进行一次切换,效率没有标准io高。

2024-07-30 20:35:34 794

原创 day20

bmp图的资料链接:https://blog.youkuaiyun.com/XYK0318/article/details/105123197/。/* 年中天数 (0-365, 1 Jan = 0) *//************************主程序************************//**********************主程序*********************//**********************主程序*********************/

2024-07-29 21:07:35 723

原创 day19

1> IO:(inout output) 所谓IO,就是程序与外部设备进行信息交换的过程2> IO的分类:标准IO和文件IO3> 标准IO:调用封装好的相关库函数,来实现数据的输入输出4> 文件IO:调用系统(内核)提供的相关函数,来实现数据的输入输出5> 标准IO和文件IO的区别:1、标准IO属于库函数,文件IO属于系统调用2、标准IO操作的是文件指针,文件IO操作的是文件描述符3、标准IO有缓冲器,文件IO没有缓冲区。

2024-07-29 19:57:50 803

原创 day18

1 > 树形结构:表示数据元素之间存在一对多的关系2 > 树:是由一个根结点个多个子树构成的树形结构3 > 节点:就是树中的数据元素4 > 父亲结点:当前结点的直接上级节点5 > 孩子节点:当前结点的直接下级节点6 > 祖先结点:当前结点的直接或间接上级节点7 > 子孙节点:当前结点的直接或间接下级节点8 > 兄弟节点:拥有相同父结点的所有节点互称为兄弟节点9 > 堂兄弟节点:其父结点在同一层的所有节点,互为堂兄弟节点10 > 根结点:没有父结点的节点。

2024-07-24 20:21:13 1047

原创 day17

1 > 队列也是操作受限的线性表:所有操作只能在端点处进行,其删除和插入必须在不同端进行2 > 允许插入操作的一端称为队尾,允许删除操作的一端称为队头3 > 特点:先进先出(FIFO)4 > 分类:顺序存储的队列称为顺序队列;链式存储的队列,称为链式队列。

2024-07-23 19:49:24 950

原创 day16

1 > 所谓双向链表,就是从任意一个节点既能存储其前驱节点信息也能存储后继节点信息2 > 节点结构体中增加一个指向前驱节点的指针unionint len;//头结点数据域//普通节点数据域//指向前驱节点的指针//指向后继节点的指针3 > 头结点没有前驱,最后一个节点没有后继。

2024-07-22 21:21:36 842

原创 day15

Plain Text自动换行//定义数据类型//定义结点类型unionint len;//头结点数据域//普通结点数据域//指针域//创建链表//申请结点封装数据函数//链表判空//头插//链表遍历函数//通过位置查找结点//任意位置插入//链表头删//链表任意位置删除//链表按值查找返回位置。

2024-07-19 21:34:15 790

原创 day14

按存储方式:顺序表:顺序存储的线性表称为顺序表链表:链式存储的线性表称为链表按操作受限的方式:栈:只允许在同一个端点处进行插入和删除操作的线性表队列:只允许在异端进行插入和删除操作的线性表。

2024-07-18 17:23:10 672

原创 day13

1 > 概念:由相同数据类型或不同数据类型构成的集合,但是,该集合中的成员共享同一块内存空间2 > 定义格式union 结构体名称成员类型1 成员变量1;成员类型2 成员变量2;。。。成员类型n 成员变量n;当程序员写程序时,可能会因为数据类型的问题,在定义变量时,导致该程序比较晦涩难懂,例如:unsigned long int,struct Stu为了提高代码的简洁性,以及为了更加方便理解使得代码更加优雅,我们可以将这些类型重新起一个简洁好记的名字。

2024-07-17 21:07:39 981

原创 day12

指针变量-- -- > 指向的一级指针中的地址*指针变量-- --->一级指针变量中的值**指针变量-- -- > 一级指针变量所指向内存空间中的值//定义一个普通变量int *ptr = # //将普通变量的地址赋值给指针变量//将指针变量的地址赋值给二级指针变量//通过普通变量访问值//通过一级指针变量访问值//通过二级指针变量访问值//该语句是错误的,C语言中所有表达式的结果都是一个右值//定义二维数组qtr = arr;//?//8//36。

2024-07-16 21:17:27 807

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除