自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT 绘制简易时钟

【代码】QT 绘制简易时钟。

2024-09-11 21:00:57 153

原创 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

原创 学习记录——day44 类中的关键字 explicit delete default

explicit delete default

2024-09-05 09:45:12 136

原创 学习记录——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

原创 C++ 手动实现 栈和队列(部分)

【代码】C++ 手动实现 栈和队列(部分)

2024-09-03 20:56:19 100

原创 学习记录——day42 多态

静态多态:函数重载、运算符重载动态多态:函数重写。

2024-09-03 19:26:54 760

原创 学习记录——day41 继承

面向对象三大特征:封装、继承、多态基于一个已有的类,来创建出一个新类的过程叫做继承,原类称为父类,新类称为自类/派生类。主要用于提高代码的复用性。

2024-09-02 19:18:51 777

原创 学习记录——day41 C++ 类的静态成员 static

C/C++中static总结。

2024-09-02 16:01:40 503

原创 学习记录——day41 运算符重载

cout

2024-09-02 14:34:57 966

原创 学习记录——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

原创 学习记录——day38 C++ bool类型 引用 结构体 堆

类型名 &引用名 = 目标名例://定义一个引用,指向num。

2024-08-28 20:37:29 483

原创 学习记录——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

原创 2024.8.19 学习记录 —— 作业

三、基于UDP的聊天室。

2024-08-19 01:44:51 366

原创 学习记录——day32 TCP并发服务器

【代码】学习记录——day32 TCP并发服务器。

2024-08-14 17:52:50 270

原创 学习记录——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关注的人

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