- 博客(62)
- 收藏
- 关注
原创 QT 自定义组件 界面跳转
/槽函数定义lab4->setWindowTitle("账号为空");//绑定//自适应尺寸else if(edit1->text() == edit2->text()) //发送事件//发送跳转信号//信号会发送给所有对象,但只有和该信号绑定的对象才会响应}elselab5->setWindowTitle("账号密码不正确");//绑定//自适应尺寸"退出","确定退出吗?",this);
2024-09-10 20:39:56 739
原创 QT 对话框 仿文本编辑器
QMessageBox::StandardButtons buttons = Ok, //提供的按钮 QMessageBox::StandardButton defaultButton = NoButton)const QColor &initial = Qt::white, //打开对话框后的初始颜色。const QString &caption = QString(), //对话框标题。
2024-09-10 19:58:48 729
原创 QT 定时器事件
1)在 Widget 的构造函数中 连接 信号与槽(因为只用连接一次)2)定义按键响应槽函数3)定义超时响应函数//信号与槽绑定delete ui;//定义按键响应槽函数if(ui->pushButton->text() == "启动")//启动定时器//间隔指定时间发送一个timeout的信号//更新按键文本ui->pushButton->setText("关闭");}else//关闭定时器t.stop();//更新按键文本。
2024-09-10 19:12:30 403
原创 学习记录——day43 模板
tamplate 类型 函数名(参数类型1 参数名1, 参数类型2,参数名2,。。。{函数体内容}同一个模板生命下,只能定义一个函数,如果要定义多个,需要声明多个模板。
2024-09-04 20:23:47 376
原创 学习记录——day43 C++ 异常处理
定义时 throw 没有不影响函数体内 throw 的使用,系统会自动匹配,如果有,内外类型要一致,不能缺少。返回值类型 函数名(形参列表) throw(异常类型1,异常类型2,。对于一定不会抛出异常的函数,可用 noexcept 修饰。3、将从对应的try语句块内处理异常,并调用析构函数完成对对象的析构。1、在可能产生异常的地方使用关键字:throw 抛出异常。任何函数在定义时,可以指定能抛出的异常格式如下。可能会抛出异常的语句。}catch(接收异常的形参)1、程序收到一个异常。5、系统提供的异常类。
2024-09-04 19:39:11 223
原创 学习记录——day43 C++ Lambda表达式
捕获列表](函数形参列表){函数体}捕获列表:分为值捕获和引用捕获值捕获:值捕获时,表达式中的数据和外界的数据属于不同的数据,并且在非mutable的lambda表达式中值捕获数据可读不可写[变量1,变量2,。。。,变量n]:将这些数据都进行值捕获[=]:将外界的变量全部进行值捕获[=,&变量1,&变量2]:除了将变量1和变量2进行引用捕获外,其他都是值捕获引用捕获:表达式中的数据和外界数据属于相同的数据,对数据操作时可读可写[&变量1,&变量2,。。。
2024-09-04 19:15:13 267
原创 学习记录——day41 继承
面向对象三大特征:封装、继承、多态基于一个已有的类,来创建出一个新类的过程叫做继承,原类称为父类,新类称为自类/派生类。主要用于提高代码的复用性。
2024-09-02 19:18:51 777
原创 学习记录——day40 匿名对象 友元 常成员
学习记录——day40 类中特殊的成员函数-CSDN博客class Stuprivate:int age;public:Stu(){}//无参构造Stu(string n ,int a):name(n),age(a){}//有参构造~Stu(){}//析构函数int main()s1.show();Stu();//定义匿名对象return 0;1)不到万不得已的情况下,不要使用友元,因为友元的出现使得封装称为虚谈,友元破坏了类的封装性。
2024-08-30 19:07:32 679
原创 学习记录——day40 类中特殊的成员函数
1)构造函数分为有参构造和无参构造函数,有参构造函数可以为成员属性进行初始化,这些构造函数之间构成重载关系2)一个类中可以有多个构造函数,每个对象仅仅只会调用一个构造函数3)如果类中没有定义构造函数,那么,系统会自动提供一个无参构造函数,用于对对象空间的申请,如果程序员自己定义了构造函数,系统就不再提供那个无参构造了,如果还想使用无参构造,需要自己定义一个无参构造class Stuprivate:int age;public://无参构造Stu()
2024-08-29 20:26:24 783
原创 学习记录——day39 C++ Class this指针
1、C++ 中的类 ClassC++中的类,是由C++中的结构体演化而来的,只需要将struct改成关键字class,就定义了一个类C++中类和结构体的区别:1)默认的权限不同,结构体中默认权限为public,类中默认权限为private2)默认的继承方式不同,结构体的默认继承方式为public,类的默认继承方式为private2、定义格式class 类名public:功能的成功属性、函数protected:受保护的成功属性、函数prvate:私有的成功属性、函数。
2024-08-29 20:13:16 445
原创 学习记录——day39 C++对函数的扩充 函数重载 函数的默认参数 哑元
1、使用原因函数重载:函数名“一名多用”,是实现泛型编程的一种泛型编程:以不变的代码,实现可变的功能(背景)
2024-08-29 11:37:22 573
原创 学习记录——day37 C++ 基础概念 字符串 命名空间
1、定义格式namespace 命名空间名变量、函数、结构体.....2、使用示例//定义自己的命名空间struct MSG}buf;void fun()int main()//单独使用//单独声明//声明命名空间fun();return 0;3、同一作用域下可以定义多个同名的命名空间,编译时会合作一个,所有同名命名空间中名字不能重复4、命名空间可以嵌套定义,使用时,如果使用的是最里层的名字,则需要使用作用域限定符一级一级找到最里层。
2024-08-27 20:23:37 788
原创 学习记录——day35 数据库 sqlite3
insert into 表单1(字段1,字段2,....,字段n) select 字段1,字段2,...,字段n from 表单2。在添加记录的时候,会检查被检查约束的字段所填充的数据,是否满足"检查条件",如果不满足则添加失败。insert into 表单名(字段1,字段2...,字段n)values(数据1,数据2,...,数据n)先查询出表单2中的所有指定字段的数据,再将这些数据,对应的添加到表单1中的每一个字段中去。若没有指定,则查看所有。被主键约束的字段,成为了表单中的“键”,剩下的都是“值”
2024-08-22 19:03:44 1420
原创 学习记录——day35 epoll
select的内核部分,监视的套接字也是数组,查询哪个套接字已激活的效率低;poll的内核部分,监视的套接字也是数组,查询哪个套接字已激活的效率低;select查询已激活套接字使用的是双重循环,查询效率低;epoll从2.4到目前4.x内核,没有跟新新的模型。监视列表和激活列表混在了一起,需定义中间变量手动区分。四、epoll_ctl函数 操作监视列表(删除、添加、指定监视类型)三、epoll_create1函数 创建监听列表。二、epoll_wait函数 监听。一、epoll模型相关。
2024-08-22 11:15:30 615
原创 学习记录——day34 IO多路复用 fcntl select poll select实现聊天室
对于用多进程/多线程实现的并发服务器而言:1)可连接的客服端数量搜最大进程/线程数限制2)进程阻塞占用时间片会影响效率而对于IO多路复用实现的并发服务器:1)连接数量没有限制(select 受文件描述符最大数量限制-》1024)2)由一个进程实现,不会出现时间片资源占用3)事件触发才执行,执行效率和资源利用率较高。
2024-08-21 19:56:56 731
原创 学习记录——day33 HTTP
1、HTTP,全称Hyper Text Transfer Protocol,用于万维网(world wide web)进行超文本学习的传输协议。3)http的响应代号:1XX (信息状态错误) 2XX(成功) 、3XX(重定向状态码)、4XX(客户端错误)、5XX(服务器出错)3、http是基于BS模型,即浏览器服务器模型,主要完成的是客户端请求端和服务器相应端。1)任何一个http请求都由三部分组成:请求首部、请求主体、请求数据。1)响应首部也是由三部分组成,分别是响应头、响应主体、响应数据。
2024-08-19 20:55:55 444
原创 学习记录——day32 子网掩码 域名解析
1、子网掩码,也称网络掩码或地址掩码,是一个32位地址,用于屏蔽部分IP地址,以便区分网络号和主机号;可用于主机号的二级划分,以提供寻找目标主机的效率2、子网掩码单独存在无意义,必须结合IP地址使用3、将子网掩码与IP地址进行与运算可得到子网网段4、子网网段:同一网络号下,通过子网掩码划分的IP范围5、默认子网掩码:网络号为1,主机号为0A类网络:255.0.0.0B类网络:255.255.0.0C类网络:255.255.255.0D类网络、E类网络:没有子网掩码。
2024-08-19 19:18:34 543
转载 day32 —— 抓包分析
1) wireshark的官方下载网站:www.wireshark.org/3) 启动sudo wireshark设置中文 Edit->Preferences->Appaerance->Language->Chinese。
2024-08-19 18:58:51 43
原创 学习记录——day31 多点通信 广播 组播
2)组播可以实现小范围的数据传播:将需要接收数据的接收端加入多播组,发送端向多播组中发送消息,每个组内成员都能接收到消息。1)组播也是实现一对多的通信方式,对于广播而言,网络需要对每个消息进行复制转发,会占用大量的带宽,导致网络拥塞。2、广播:发送端和接收端完成一对多的通信方式,网络将发送端的数据,全部复制一遍发送给每个接收端一份。6)广播只能使用UDP实现,对于接入广播的接收端而言,广播发送的信息是不能选择性接收的。2)对于套接字而言,一般是不允许发送广播消息的,需要对发送端套接字进行设置允许广播。
2024-08-13 20:02:02 254
原创 学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信
功能:为通信创建一个端点,并返回该端点的文件描述符参数1:通信域AF_UNIX, AF_LOCAL 本地通信,同一主机之间进程通信 详情请看man 7 unixAF_INET IPv4 提供的网络通信 详情请看man 7 ipAF_INET6 IPv6 提供的网络通信 详情请看man 7 ipv6参数2:指定通信语义,可以由多个宏值使用位或连接SOCK_STREAM:表示提供TCP协议的传输方式SOCK_DGRAM:表示提供UDP协议的传输方式。
2024-08-12 20:47:42 1031
原创 学习记录——day29 网络编程 TCP和UDP的异同 ip地址
以上通信方式,只能完成同一主机之间的多个进程间的通信,不能实现跨主机的多个进程间通信时,为实现跨主机的通信,引入了网络通信——基于套接字socket的通信方式,能够实现主机之间的多个进程间通信和跨主机的多个进程间的通信。对于发送端而言,无论是大端存储的主机还是小端存储的主机,向网络中发送多字节整数时,一律改成网络字节序传输;在计算机网络中,要做到有条不紊的交换数据,需要道循一些事先约定好的规则。5、TCP的使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的传输场合,一般使用TCP协议。
2024-08-09 18:00:16 1082
原创 学习记录——day28 信号量集
信号量集,其实就是无名信号量的集合,主要用于完整多个进程间的同步问题.。使用 semget 函数申请信号量集时,需指定申请的信号量的数量,函数会对信号量从零开始编号;对信号量进行初始化则、删除等操作需要使用 semctl 函数;申请和释放信号量时需指定信号量编号使用的时 semop 函数。由于直接使用函数库提供的函数操作繁琐,使用不方便,所以对信号量集相关函数进行再次封装,以便使用。
2024-08-07 16:03:31 838
原创 学习记录——day27 进程间通信 IPC通信机制 消息队列 共享内存
IPC_EXCL:表示本次确保要创建一个新的消息队列,如果该消息队列已经存在,则该函数报错,错误码为EEXIST。IPC_EXCL:表示本次确保要创建一个新的共享内存,如果该共享内存已经存在,则该函数报错,错误码为EEXIST。IPC_CREAT:表示本次操作要创建一个消息队列,如果该key值对应的消息队列已经存在,则直接打开该消息对象。参数1:用于创建消息队列的key值,该值可以由ftok创建出来,也可以是 IPC_PRIVATE,表示进行亲缘进程间的通信。/* 创建消息队列的进程的用户id */
2024-08-06 20:15:33 911
原创 学习记录——day26 进程间的通信 有名管道 无名管道 信号通信 特殊的信号处理
1、对于多个线程间的通信,可以使用使用临界资源来完成,通过一个线程任务对临界资源进行修改,另一个线程也可以使用已经修改过的临界资源,但是要注意使用同步互斥机制完成对临界资源的保护。程序允许启动一个定时器,当所定的时间到位后,会发送一个SIGALRM信号,将该信号绑定到对应的信号处理函数中,给定时间,到时间自动处理自定义函数。1)无名管道:没有名字的管道文件,其他进程不能使用无名管道文件的文件描述符,但可以遗传,所以该方法仅适用于亲缘进程(父子进程)=0:表示向某个进程组(当前进程所在的进程组)中发送信号。
2024-08-05 20:20:30 794
原创 学习记录——day25 多线程编程 临界资源 临界区 竞态 线程的同步互斥机制(用于解决竟态)
如上例3所示,当其中一个线程正在访问全局变量时,可能会出现时间片用完的情况,另一个线程将数据进行更改后,再执行 该线程时,导致数据的不一致。4.)循环等待条件:存在一个线程(或多个线程)的集合{P1, P2, ..., Pn},其中P1正在等待P2持有的资源,P2正在等待P3持有的资源,依此类推,直至Pn正在等待P1持有的资源。2、无名信号量中维护了一个value值,该值表示能够申请的资源个数,当该值为0时,申请资源的线程将处于阻塞,直到其他线程将该无名信号量中的value值增加到大于0时即可。
2024-08-02 17:14:47 710
原创 学习记录——day24 多线程编程 pthread_create pthread -self pthread_exit pthread_jion
1)线程:也称为轻量版的进程(LWP),是更小的任务执行单元,是进程的一个执行路径2)线程是任务器调度的最小单位3)个进程中可以包含多个线程,多个线程共享进程的资源4)线程几乎不占用资源,只是占用了很少的用于程序状态的资源(大概有8k左右)5)由于多个线程共同使用进程的资源,导致,线程在操作上容易出现不安全的状态6)线程操作开销较小、任务切换效率较高7)一个进程中,至少要包含一个线程(主线程)8)在有任务执行漫长的IO等待过程中,可以同时执行其他任务。
2024-08-01 20:12:12 494
原创 学习记录——day24 多进程编程 创建三个进程 写时拷贝技术 僵尸进程验证 孤儿进程验证 创建守护进程
可以让父进程创建一个子进程,再由父进程或者子进程创建一个子进程。
2024-08-01 13:37:01 332
原创 学习记录——day23 多进程编程 ps top/htop ptree pidof kill
1、在进程的创建过程,其实就是通过拷贝父进程的lask stucl结构体而来的,子进程中保存了大部分的父进程的遗传基因(内容一致),只需要修改少部分的内容,如子进程的进程号,子进程的父进程号。3、2号进程:也称kthreadd,该进程由0号进程产生,也称为调度进程,当某个就绪进程时间 片轮到时,该进程负责进程的调度工。4、孤儿进程:当前进程的父进程死亡后,但是当前进程还没有结束,那么当前进程称为孤儿 进程,孤儿进程会由1号进程收养。
2024-07-31 18:53:37 738
原创 学习记录——day22 文件IO open close read write lseek dup dup2 stat opendir closedir readdir
文件IO是使用系统调用(内核提供的函数)来完成数据的读写操作,不提供缓冲区,基于文件描述符操作文件,每进行一次文件io操作,进程就会从用户空间向内核空间进行一次切换,效率没有标准io高。
2024-07-30 18:17:45 939
原创 学习记录——day21 IO sprintf snprintf fread fwrite fprintf fscanf fseek
bmp图的资料链接:https://blog.csdn.netXYK0318/article/details/105123197//* 年中天数 (0-365, 1 Jan = 0) *//* 周中天数 (0-6, Sunday = 0) *//* 月中天数 (1-31) *//* 月份+1 (0-11) *//* 分钟 (0-59) *//* 小时 (0-23) */功能:获取系统时间,从1970年1月1日0时0分0秒,到目前累计的秒数。返回值:成功返回转换的字符个数,失败返回-1。
2024-07-29 16:29:07 605
原创 学习记录——day20 IO fopen fclose fgets fputs fgetc fputc 错误码 缓存区
1、IO:(inout output) 程序与外部设备进行信息交换的过程2、IO的分类:标准IO和文件IO1)标准IO:调用封装好的相关库函数,来实现数据的输入输出2)文件IO:3、文件IO和标准IO的区别:1)标准IO属于库函数,文件IO属于系统调用2)标准IO操作的是文件指针,文件IO操作的是文件描述符4、阻塞IO和非阻塞IO5、目前所接触过的IO函数:6、常用的IO接口函数。
2024-07-26 18:27:09 750 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人