自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 问答 (1)
  • 收藏
  • 关注

原创 QT + VS2022 qmake error

在运行的时候qmake报错 running error ,同时找不到Qt各种头文件,经检查,头文件,库文件包含正确。

2024-06-26 20:16:10 175

原创 Qt+VS2022 无法打开QDilog

原项目用的5.12.4_msvc_2019_64路径下的qmake编译,但是我环境没有,导致和库文件和头文件对不上,经更改后已能正确编译。此时头文件和库路径正确,但是Qtinstallation不正确。在编译文件时发现找不到文件。

2024-06-20 22:02:11 201

原创 浅谈---线程

3.把一个任务分成两个线程执行,在单处理器上不一定块,除非能确定这两个部分同时执行,且运行在多处理器上。3.线程是进程的基本执行单元,进程的所有任务都在线程中国执行,进程至少有一个线程,这个线程被称为主线程或UI线程。pshared: 0表示是局部信号量,不被共享,非0表示可被其它变量共享。mutex: 指向被初始化的互斥量,attr指向互斥量的属性。2.当一个程序,需要同时处理多个工作时(如输入,输出,计算)用来自动阻塞一个线程,直到某情况发生,通常与互斥锁同时使用。

2024-03-29 15:31:39 419 1

原创 nginx内存池

内存申请(对齐) void* ngx_palloc(ngx_pool_t* pool,size_t size);申请内存(不对齐) void* ngx_pnalloc(ngx_pool_t* pool,size_t size);内存申请(对齐并初始化) void* ngx_pcalloc(ngx_pool_t* pool,size_t size);

2024-03-28 20:05:01 294

原创 高性能内存池

realloc给一个已分配地址的指针重新分配空间,ptr为原有的空间地址,newsize是重新申请的地址长度,ptr若为NULL,则等同于malloc。不难发现p2地址距离p1地址有16字节远,而p1仅分配一个字节,剩余15字节无法分配。系统层:使用高性能内存组件Tcmalloc Jemalloc等(优化效率和碎片问题)malloc 在内存的动态存储区中分配一块大小为size的连续区域返回首地址。1.内存分配必须起始于4,8或16的整数倍(视处理器体系结构而定)的地址。应用层:使用内存池技术(全面解决)

2024-03-26 16:58:38 604

原创 进程间的通信--共享内存

如果要使用匿名内存映射,即flags中设置了MAP_ANONYMOUS,fd设为-1.有些系统不支持匿名内存映射,则可以使用fopen打开/dev/zero文件,然后对该文件进行映射,同样可以达到匿名内存映射的效果。原理:利用共享内存完成进程间通信,两个进程都通过虚拟地址空间(可能相同)映射到用户页表,然后通过用户页表映射到内u才能物理的相同一块内存区域。3.为无关联的进程提供共享内存空间,将一个普通文件映射到内存中。1.文件进行频繁读写,将一个普通文件映射到内存中。size: 块的大小,为4k的整数倍。

2024-03-25 16:14:04 487 1

原创 进程间的通信--信号量

信号量是一种特殊变量只能进行P,V操作,linux下的信号量是一种休眠锁P: if 信号量>0,把信号量-1;else if 信号量=0,挂起该进程V: 如果有进程因信号量挂起,则回复该进程,else 把信号量+1注:信号量都是原子操作,即其在执行时,不会中断。

2024-03-24 19:04:21 503 1

原创 进程间的通信--消息队列

消息队列,用于从一个进程向另一个进程发送数据但仅将数据发送到队列中,不指定哪个进程接受消息队列独立发送消息和接收消息的进程(信号,匿名管道,命名管道都不独立)长度被限制为:MSGMNB单条消息也有最大长度限制:MSGMAX。

2024-03-24 16:29:01 369 1

原创 进程间的通信--管道

在Unix或类Unix系统中,管道通常是通过操作系统内核中的一个缓冲区实现的,其输入和输出被映射到两个文件描述符上。一个进程通过向管道写入数据,另一个进程通过从管道读取数据,从而实现数据的传输。定义在unistd.h//用于创建匿名管道,基于内存,只能在创建它的进程及其子进程之间使用,无法在其他进程之间共享。与打开open类似,//用于创建命名管道,基于文件,与匿名管道相反,但速度不如匿名管道。1是管道头输入数据所以写,0是管道尾输出数据所以我们读,由此可知管道是半双工通信。

2024-03-24 15:54:00 292 1

原创 进程通信--信号

进程间的通信信号什么是信号?信号是给程序提供一种可以处理异步事件的方法,它利用软中断实现。不能定义信号,所有信号都是由系统预定义的。

2024-03-23 20:25:44 609 1

原创 linux下的进程

众所周知linux由unix发展而来,所以本文先就unix进程先论为快,unix的进程创建很特别,许多其它的操作系统都提供了产生(spawn)进程的机制:首先在新的地址空间里创建进程,读入可执行文件,最后开始执行。一个父进程退出,它的子进程还在运行,那么那些子进程将成为孤儿进程,孤儿进程将被init进程所收养,init进程pid为1是所有进程的祖宗,并由init进程对他们状态进行收集工作。)wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍保存在系统中,这种进程称之为僵尸进程。

2024-03-23 16:57:09 648

原创 参数调用机制

值传递,引用传递,名传递

2024-03-18 16:02:18 330 1

原创 基于AVL树的图书管理系统

default: printf("----------------结束----------------");printf("-------------结束请输入:0---------------");printf("===============管理员请输入“1”===============\n");printf("===============借阅者请输入“2”===============\n");cout << "-----------图书库为空-----------" << endl;

2024-01-27 20:54:57 332

原创 浅谈*指针

在C/C++中有一种数据类型叫做指针,符号为"*",常与其他数据类型一起使用,教科书对指针的定义是: 指针是存放地址的变量,初见不知其意,再见连连称妙。指针有两个作用:1.指向内存中的地址。2.读写地址上的值。根据这两个作用我们其实就能推断出指针有两个大小,本身大小(不加*)取决于地址最大值这个和操作系统的操作位数相关,还有个就是解引用后的大小(加*)这个大小就取决于指针是什么类型,如int最大值为2147483647,short最大值为32767(65535/2-1),char 最大值为127。

2024-01-16 15:58:41 380

空空如也

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

TA关注的人

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