自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 EPoll反应堆+线程池简单示例

加上线程池需要注意的点是,需要将默认LT模式改为ET模式,如果是LT模式,当线程池没有将某一任务完成(没有将数据读出来),epoll_wait会一直触发读事件,导致主线程一直往任务队列中添加相同任务。线程池的作用是为了避免重复创建销毁线程,这篇文章在上一篇的基础上加上了线程池。epoll反应堆-CSDN博客。

2024-03-01 21:05:52 416 1

原创 epoll反应堆

回调函数运行时,如果此时来了新的客户端请求连接,会导致不能及时处理请求,这在高并发的环境中可能会导致有很大的延迟。所以可以使用多线程的方式,具体是。epoll反应堆实际上就是将文件描述符、监听的事件、回调函数用结构体封装在一起,发生事件时触发对应的回调函数即可。下面举一个简易版的例子。而非fd成员,因为ptr是一个void类型指针,我们可以定义一个结构体来保存所有的信息,可以使用线程池的方式来解决,在下一篇文章中写具体如何实现。

2024-02-19 13:52:38 381 1

原创 多线程---互斥锁和读写锁

互斥锁也叫互斥量,互斥锁是用一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即加锁(lock)和解锁(unlock)。

2024-02-18 20:22:35 469 1

原创 高并发服务器--多路IO转接(多路IO复用)

多路IO转接三种方式:select(windows, 跨平台)、poll(少用)、epoll(linux)。多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想时,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。

2024-02-17 17:38:31 1413 1

原创 TCP协议服务器编程笔记

父进程关闭cfd,回收子进程的资源。子进程中,关闭lfd,服务客户端。注意:这里用到上一篇文章的tcp包裹函数。

2024-02-14 17:11:02 355 1

原创 Linux线程基础--笔记

但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。线程自己基本商不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的进程(LWP: light weight process),在Linux环境下线程的本质仍是进程。进程号在整个系统中是唯一的,但线程号不同,它只在它所属的进程环境中有效。注意:线程的取消并不是实时的,而又一定的延时。

2024-02-02 22:35:41 1808

原创 tcp包裹函数

【代码】tcp包裹函数。

2024-01-22 12:44:53 371 1

原创 tcp协议客户端编程

使用的工具:NetAssist网络助手。

2024-01-13 22:43:14 375 1

原创 Linux信号

信号集是一个能表示多个信号的数据类型,sigset_t set, set即一个信号集。既然是一个集合,就需要对集合进行添加/删除等操作。相关函数说明如下:// 将set集合置空// 将所有信号加入set集合// 将signo信号加入到set集合// 从set集合中移除signo信号// 判断信号是否存在除sigismember外,其余操作函数中的set均位传出参数。sigset_t类型的本质是位图。但不应该直接使用位操作,而应该使用上述函数,保证跨系统操作有效。

2024-01-04 21:49:04 847 1

原创 Linux无名管道和有名管道

无名管道是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX都支持这种通信机制。1、半双工,数据在同一时刻只能在一个方向上流动。2、数据只能从管道的一端写入,另一端读出3、写入管道中的数据遵循先入先出规则4、管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式5、管道不是普通文件,不属于某个文件系统,只存在于内存中。6、管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。

2023-12-28 22:34:18 934 1

原创 Linux进程替换(exec族函数)

其他代码类似使用,只是参数传递方式不一样,例如如果使用execlp函数,它与execl函数的第一个参数不一样,这里需要传入文件名,这时将第一个参数"/bin/ls"改成"ls"即可。使用man execlp查看帮助手册。

2023-12-27 16:52:15 360 1

原创 gcc 编辑器基本使用

gcc是由GNU开发的编程语言编辑器。gcc原本作为GNU操作系统的官方编辑器,现已被大多数类unix操作系统(如linux、BSD、Mac OS X等)采纳为标准的编辑器,gcc同样适用于微软的windows。在终端(Ubuntu)输入gcc --help,查看gcc有哪些选项。使用gcc -s 让hello.i文件生成hello1.s。比如:可以让hello.c直接转化为可执行文件。在下面提供一个例子:(-E -S -c选项)创建一个hello.c的文件进行编辑。文件里写入hello程序,保存退出。

2023-12-05 15:42:10 503 1

原创 Linux常用快捷键

clear或者ctrl+l。

2023-12-04 21:41:13 333

原创 Linux基础命令

z,gzip模式,不使用-z就是普通的tarball格式(一般处于选项位第一个)-C,选择解压的目的地,用于解压模式压缩模式常用组合:或 -zcvf: tar -zcvf test.tar.gz text1.txt text2.txt text3.txt解压模式常用组合:tar -zxvf test.tar.gz -C 路径。

2023-12-02 20:02:35 1363 1

原创 QSqlRelationalTableModel实现分页

本文自定义了QSqlRelationalTableModel的继承类,实现了它的分页功能

2023-11-16 00:06:52 109

原创 qt6项目商品管理系统--登录界面(数据库连接,功能实现)

一个新手小白做的第一个项目,记录项目的过程以及遇到的坑,各位大佬多多指教

2023-11-06 13:36:03 291

空空如也

空空如也

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

TA关注的人

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