自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux学习:线程

以上 API 都是针对线程属性操作的,所谓线程属性是类型为 pthread_attr_t 的 变量,设置一个线程的属性时,通过以上相关的函数接口,将需要的属性添加到该类型 变量里面,再通过 pthread_create( )的第二个参数来创建相应属性的线程。而在线程接受取消请求的情况下,如何停下来又取决于两种不同的响应取消请求的策略 ——延时响应和立即响应,当采取延时策略时,线程并不会立即退出,而是要遇到所谓的“取 消点”之后,才退出。而“取消点”,指的是一系列指定的函数。

2024-04-25 17:12:19 726

原创 linux学习:进程通信(信号量)

信号量跟前面的 MSG 和 SHM 有极大的不同,SEM 不是用来传输数据的, 而是作为“旗语”,用来协调各进程或者线程工作的。

2024-04-18 18:12:41 634

原创 linux学习:进程通信(system-V IPC+消息队列+共享内存)

消息队列、共享内存和信号量被统称为 system-V IPC,V 是罗马数字 5,是 Unix 的 AT&T 分支的其中一个版本,一般习惯称呼他们为 IPC 对象,这些对象的操作接口都比较 类似,在系统中他们都使用一种叫做 key 的键值来唯一标识,而且他们都是“持续性”资 源——即他们被创建之后,不会因为进程的退出而消失,而会持续地存在,除非调用特殊的函数或者命令删除他们。跟文件类型,进程每次“打开”一个 IPC 对象,就会获得一个表征这个对象的 ID,进 而再使用这个 ID 来操作这个对象。

2024-04-16 14:00:01 905

原创 linux学习:进程通信(管道+信号)

输出结果中,省略的部分是严格从大到小的实时信号,可见如果一个进程如果同 时收到多个实时信号时,他们的响应次序是按照信号值由大到小排队的。说明非实时信号是不可靠的,在传递的过程中有可能被丢弃。前面 31 个信号都有一个特殊的名字,对应 一个特殊的事件,比如 1 号信号 SIGHUP(Signal Hang UP),表示每当系统中的一个 控制终端被关闭(即挂断,hang up)时,即会产生这个信号,有时会将他们称为非实时 信号,这些信号都是从 Unix 系统继承下来的,他们还有个名称叫“不可靠信号”

2024-04-16 10:22:07 979

原创 linux学习:进程(新建+运行某文件+退出处理函数+等待)

进程是由进程控制块、程序段、数据段三部分组成进程有都有一个父进程,除了init,父进程可以创建子进程每个进程都有一个PID,可以用ps来查看,等于进程的身份证pid是本身进程的pid,ppid是父进程的pid。

2024-04-15 16:54:15 978

原创 linux学习:输入设备+tslib库控制触控屏应用接口

连接操作系统的输入设备,可不止一种,也许是一个标准 PS/2 键盘,也许是一个 USB 鼠标,或者是一块触摸屏,甚至是一个游戏机摇杆,Linux 在处理这些纷繁各异的输入设备的时候,采用的办法还是找中间层来屏蔽各种细节在 Linux 的内核中,对输入设备的使用,实际上运用了 3 大块来管理,他们分别是所 谓的输入设备驱动层、输入子系统核心层,以及事件触发层。

2024-04-15 13:53:23 722

原创 linux学习:目录检索

Linux 中目录就是一组由文件名和索引号组成的索引表,目录下的文件的真正内容存储 在分区中的数据域区域。目录中索引表的每一项被称为“目录项”,里面至少存放了一个文 件的名字(不含路径部分)和索引号(分区唯一),当我们访问某一个文件的时候,就是根 据其所在的目录的索引表中的名字,找到其索引号,然后在分区的 i-node 节点域中查找到 对应的文件 i 节点的。操作目录跟标准 IO 函数操 作文件类似,也是先获得“目录指针”,然后读取一个个的“目录项”获取目录指针,并打印该目录下所有文件的名字。

2024-04-15 10:36:32 259

原创 linux学习:文件属性

在操作文件的时候,经常需要获取文件的属性,比如类型、权限、大小、所有者等等, 这些信息对于比如文件的传输、管理等是必不可少的,而这些信息这三个函数的功能完全一样,区别是:stat( )参数是一个文件的名字,而 fstat( )的参数是一个已经被打开了的文件的描述符 fd,而lstat( )则可以获取链接文件本身的属性。

2024-04-15 01:09:11 690

原创 linux学习:标准IO

系统 IO 的最大特点一个是更具通用性,不管是普通文件、管道文件、设备节点文件、 套接字文件等等都可以使用,另一个是他的简约性,对文件内数据的读写在任何情况下都是 不带任何格式的,而且数据的读写也都没有经过任何缓冲处理,这样做的理由是尽量精简内 核 API,而更加丰富的功能应该交给第三方库去进一步完善。

2024-04-12 23:54:41 958

原创 linux学习:文件类型、文件操作、系统IO、内存映射

在几百个 Linux 系统调用中,有一组函数是专门针对文件操作的,比如打开文件、关 闭文件、读写文件等,这些系统调用接口就被称为“系统 IO”,相应地,在几千个标准 C 库函数中,有一组函数也是专门针对文件操作的,被称为“标准 IO”,他们是工作在不同 层次,但都是为应用程序服务的函数接口。该函数在进程的虚拟内存空间 中映射出一块内存区域,用以对应指定的一个文件,该内存区域上的数据跟对应的文件的数 据是一一对应的,并在一开始的时候用文件的内容来初始化这片内存。文件信息的最左边一栏是各种文件类型的缩写。

2024-04-12 14:39:42 1000

原创 linux学习:队列

我们对队列里的元素操作是有严格限制的:插入一个新节点,必须插入到 指定的一端,而删除一个已有节点,则必须在另一端进行。当我们对一个线性表严格地执行 这样的限制的话,这种线性表就是一种特殊的线性表,称之为队列。为了方便描述,将队列 的插入称为入队,删除称为出队。可以插入节点的那一端称之为队尾,另一端则称之为队头队列这种逻辑结构同样可以使用顺序存储或者使用链式存储,使用顺序存储时,由于出 队入队分别在两端进行,为了避免数据的成片移动造成效率损失,可以考虑使用两个分别指 示队头和队尾的偏移量,来辅助队列操作。

2024-04-12 00:57:44 539

原创 linux学习:栈(汉诺塔游戏)

第一根上面套着 64 个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地 把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能 搬一个,而且大的不能放在小的上面。每次只能拿最上面的一个,然后放的时候也必须放到最上面,这 个逻辑其实就是栈。

2024-04-11 23:30:57 204

原创 linux学习:栈

struct node // 栈节点结构体int data;struct linked_stack // 栈管理结构体int size;

2024-04-11 22:46:21 261

原创 linux学习:结构体、联合体、枚举

每一款不同的处理器,存取内存数据都会有不同的策略,如果是 32 位的 CPU,一般 来讲他在存取内存数据的时候,每次至少存取 4 个字节(即 32 位),也就是按 4 字节对齐 来存取的。可见,如果对一个 double 型数据的地址不作要求,那么 CPU 就有可能为此付出代价: 需要三个指令周期才能将区区 8 个字节搬到家里来,这显然很不环保,环保的做法是:令 其地址至少是 4 的整数倍(即 4字节对齐)short为2,double为4,char为1,取最大的4为m,所以该x的大小为12。

2024-04-11 16:25:22 410

原创 linux学习:内存(栈,堆,数据段,代码段)

数据段实际上分为三部分,地址从高到底分别是.bss 段、.data 段和.rodata 段,三个 数据段各司其职:.bss 专门用来存放未初始化的静态数据,它们都将被初始化为 0,.data 段专门存放已经初始化的静态数据,这么初始值从程序文件中拷贝而来,而.rodata 段用来 存放只读数据,即常量,比如进程中所有的字符串、字符常量、整型浮点型常量等。跟栈一样,会随着进程的运行而不断地增大或缩小。堆内存被称为内存中的自由区,这是一个非常重要的区域,因为在此区域定义的内存的 生命周期我们是可以控制的,

2024-04-11 16:01:42 733

原创 linux学习:c的位运算符与优先级

位运算符优先级

2024-04-10 00:14:31 138

原创 linux学习:Makefile学习

A = apple继续上方编译多个.ca.o:a.cb.o:b.cx.o:x.cy.o:y.cCFLAGS、CC、MAKE、Shell 等等,这些变量已经有了系统预定义好的值,当然我们 可以根据需要重新给他们赋值,例如 CC 的默认值是 gcc,当我们需要使用 c 编译器的时候 可以直接使用他a.o:a.cb.o:b.cx.o:x.cy.o:y.c如果是要编译arm,只需修改CC递归定义方式B = China。

2024-04-09 00:44:04 924

原创 linux学习:gcc编译

用gcc 这个工具编译 hello.c,并且使之生成一个二进制文件 hello。其中 –o 的意义是 output,指明要生成的文件的名称,如果不写 –o hello 的话会生成默 认的一个 a.out 文件。

2024-04-08 01:37:44 408

原创 linux学习:shell脚本

目录要求注意变量变量的定义和赋值变量的引用变量的种类设置环境变量特殊符号引号竖杠(管道)和大于小于号(重定向)字符串处理测试语句脚本语法判断循环函数trap要把 Shell 命令放到一个“脚本”当中,有一个前提:脚本的第一行必须写成类似这样 的格式: #!/bin/bash这是给系统指定一款 Shell 解释器脚本文件缺省是没有执行权限的,要使得脚本可以执行必须给他添加权限赋值号的两边没有空格!在 Shell 脚本中,任何时候要给变量赋值,赋值号两 边一定不能有空格变量名也有类似于 C 语言那样的规定:只能

2024-04-08 01:22:49 950

原创 linux学习:sed脚本

流编辑器, 自然要涉及文件,实际上,sed 的工作就是把文件或字符串里面的文字经过一系列编辑命令 转换为另一种格式输出,文档就像河流的源头,sed 就像卡在河流中间的过滤器,所有的文 本经过 sed 过滤之后形成另一个样子。sed 就是这样的一种东西。

2024-04-07 20:18:33 287

原创 linux学习:awk和RE

其中,$0~/Brown/是一个条件,表示所指定 的域(这里是$0)要匹配的规则(这里是 Brown),也就是说,grade.txt 中的一行只要 包含有单词 Brown,就会被选出来然后打印出来。从 file 中每次读取一行,然后针对这一行判断条件 1,成立则执行动作 1, 否则不执行,然后判断条件 2,成立则执行动作 2,否则不执行,以此类推。awk是一种用于处理文本的编程语言工具,他扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤。

2024-04-07 19:31:43 1031

原创 qt学习:窗体无状态栏-关闭-移动

【代码】qt学习:窗体无状态栏-关闭-移动。

2024-03-05 20:56:11 270

原创 qt学习:雷达

目录步骤添加头文件定义类成员数据和函数配置定时器重写绘图事件函数定义类成员数据和函数配置定时器重写绘图事件函数

2024-03-04 23:21:35 178

原创 qt学习:QPaintEvent绘图事件+QPainter画家

触发事件便会执行paintEvent(QPaintEvent *),我们可以重写QWidget 的 paintEvent(QPaintEvent *) 方法来处理绘制逻辑。

2024-03-04 21:11:17 499

原创 qt学习:网络调试助手客户端+服务端

添加模块构造函数连接按钮收到来自服务器的数据触发发送按钮断开按钮向textEditRev文本编辑器中插入指定颜色的文本服务端步骤ui界面配置 添加模块自定义一个继承与复选框类的类,重写鼠标点击事件,定义自定义信号构造函数新的TCP连接请求时触发新的数据接收时触发当连接的状态断掉时触发当 QTcpSocket 的连接状态发生变化时,stateChanged信

2024-03-04 15:52:54 370

原创 qt学习:串口调试助手

步骤配置ui界面注意选择串口的复选框是继承自带的复选框的自定义复选框 隐藏面板按钮是隐藏多文本页面 隐藏历史按钮是隐藏历史记录页面新建一个自定义复选框类MyComboBox,并继承自带的复选框类重写一个鼠标左键按下事件,按下就发送信号#include "mycombobox.h"#include <QMouseEvent>MyComboBox::MyComboBox(QWidget *parent):QComboBox(parent){}//创建一个继承

2024-03-01 20:08:55 653

原创 qt学习:实战 记事本 + 快捷键 + 鼠标滚轮 + 打开读取写入关闭文件

在.h里public:QFile file;//文件描述符//增加当前字体大小函数//减小当前字体大小函数//在用户按下 Ctrl 键的同时滚动鼠标滚轮时,执行放大或缩小操作//槽函数//多选框变化后发出信号绑定槽函数来改变编码//编辑框的光标位置发生变化时发出信号绑定槽函数来改变对应有多少字符多少行。

2024-03-01 00:37:27 779

原创 c++学习:虚继承

虚继承是C++中一种特殊的继承方式,主要用来解决多重继承中的菱形继承问题。在菱形继承结构中,一 个类继承自两个具有共同基类的类时,会导致共同基类的成员在派生类中存在两份拷贝,这不仅会导致 资源浪费,还可能引起数据不一致的问题。虚继承通过确保共同基类的单一实例存在于继承层次中,来解决这一问题。

2024-02-29 20:59:23 172

原创 c++学习:多重继承

多重继承是一种允许一个类同时继承多个基类的特性。这意味着派生类可以继承多个基类的属 性和方法。多重继承增加了语言的灵活性,但同时也引入了额外的复杂性,特别是当多个基类具有相同 的成员时。在多重继承中,派生类继承了所有基类的特性。这包括成员变量和成员函数。如果不同的基类有相同名 称的成员,则必须明确指出所引用的是哪个基类的成员。Derived 类同时继承了 ClassA 和 ClassB。因此,它可以使用这两个类中定义的方法。

2024-02-29 20:55:30 176

原创 c++学习:虚函数

virtual 和 override 关键字用于支持多态,尤其是在涉及类继承和方法重写的情况下。正 确地理解和使用这两个关键字对于编写可维护和易于理解的面向对象代码至关重要。

2024-02-29 20:52:03 277

原创 c++学习:继承

继承是面向对象编程(OOP)中的一个核心概念,特别是在C++中。它允许一个类(称为派生类或子 类)继承另一个类(称为基类或父类)的属性和方法。继承的主要目的是实现代码重用,以及建立一种 类型之间的层次关系。

2024-02-29 16:30:03 1160

原创 c++学习:静态成员

何使用静态成员变量来计数一个类的实例数量。

2024-02-29 14:45:51 307

原创 c++学习:析构函数

析构函数是C++中的一个特殊的成员函数,它在对象生命周期结束时被自动调用,用于执行对象销毁前的清理工作。析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。

2024-02-29 14:28:51 151

原创 c++学习:new关键字+delete关键字

new 关键字用于动态分配内存。它是C++中处理动态内存分配的主要工具之一,允许在程序运 行时根据需要分配内存。

2024-02-29 14:20:44 380

原创 c++学习:this关键字

this 关键字是一个指向调用对象的指针。它在成员函数内部使用,用于引用调用该函数的 对象。使用 this 可以明确指出成员函数正在操作的是哪个对象的数据成员。

2024-02-29 13:13:46 224

原创 c++学习:初始化列表

使用初始化列表来初始化类的字段是一种高效的初始化方式,尤其在构造函数中。初始化列表 直接在对象的构造过程中初始化成员变量,而不是先创建成员变量后再赋值。这对于提高性能尤其重 要,特别是在涉及到复杂对象或引用和常量成员的情况下。初始化列表紧跟在构造函数参数列表后面,以冒号( : )开始,后跟一个或多个初始化表达式,每个表 达式通常用逗号分隔。

2024-02-29 11:13:18 204

原创 c++学习:构造函数

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行,每次都会构造成员变量的初始化值,内存空间等。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于 为某些成员变量设置初始值。

2024-02-29 10:40:12 926

原创 c++学习:重载

这种做法在设计类的时候是很有用的,因为它可以确保某些函数不 会意外地改变对象的状态,同时也使得这个函数可以在常量对象上被调用。= 等)在自定义类型(类或 结构体)上的行为的特性。在同一个作用域内,可以声明几个功能类似的同名函数, 这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。在这个例子中, operator+ 被重载为一个成员函数,接受一个 Point 类型的常量引用作为参数,并返 回两个点相加的结果。假设我们有一个简单的 Point 类,我们可以重载 + 运算符来实现两个点的加法。

2024-02-29 00:13:52 368

原创 c++学习:引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变在C语言中,一个数据对应一个内存,通过由一个变量名来访问这个内存空间的数据,叫做直接访问,相 对直接访问,有个间接访问的说法,叫做指针。而引用相当于又给这个内存中的数据提供了一个新的变量名。

2024-02-28 21:07:47 191

原创 c++学习:类

/声明成员数据void X();//声明成员函数private:int XX();//声明成员数据void XX();//声明成员函数protected:int XXX();//声明成员数据void XXX();//声明成员函数。

2024-02-28 20:41:33 239

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库 https://blog.csdn.net/weixin_59669309/article/details/135944139?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135944139%22%2C%22source%22%3A%22weixin_59669309%22%7D

2024-02-01

qt-无边框ui界面4

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面3

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面2

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面1

qt-无边框ui界面1

2024-01-21

stm32学习:hal库usart+esp8266+tcp+onenet+可以远程监督家里情况

stm32学习:hal库usart+esp8266+tcp+onenet+可以远程监督家里情况

2023-12-14

stm32学习:DHT11+0.96寸oled屏

stm32学习:DHT11+0.96寸oled屏

2023-12-11

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:csv+实战

python学习:csv+实战

2023-11-29

空空如也

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

TA关注的人

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