上一页 1 2 3 4 5 6 7 ··· 14 下一页
摘要: IO 多路复用 普通情况下,一个进程只能监视一个文件描述符(阻塞),如果使用非阻塞 IO,则会使 CPU 频繁陷入内核和空转,降低效率。而IO 多路复用是操作系统提供的接口,他会帮你同时监视多个 fd,当fd没有事件发生,调用这个接口的用户进程会阻塞,当有事件发生时,返回事件发生的 fd。这样就实现 阅读全文
posted @ 2024-02-28 10:54 hellozhangjz 阅读(62) 评论(0) 推荐(0)
摘要: static_cast<type_id>(expr) 用于基本类型的转换,也可以将继承关系的对象指针或引用之间进行上下转型,但是在没有运行时类型检查的情况下,不保证类型安全。 static_cast<type_id>(expr) 动态转换用于在继承体系中进行安全的上下转型。它允许在运行时判断指针或引 阅读全文
posted @ 2024-02-28 10:01 hellozhangjz 阅读(10) 评论(0) 推荐(0)
摘要: 更安全的展开宏定义 #define DOSOMETHING foo1(); foo2(); if(condition) DOSOMETHING /* if(condition) foo1(); foo2; */ 以上代码会导致foo2();始终运行。改为do{}while(0)就可以。do{}whi 阅读全文
posted @ 2024-02-27 16:32 hellozhangjz 阅读(23) 评论(0) 推荐(0)
摘要: https://www.cnblogs.com/qg-whz/p/5140930.html 1、申请内存位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存 阅读全文
posted @ 2024-02-27 14:27 hellozhangjz 阅读(22) 评论(0) 推荐(0)
摘要: 原地址:https://www.cnblogs.com/longcnblogs/p/7642951.html 这篇也不错:https://www.cnblogs.com/ThousandPine/p/18111381 一、C++中的对象模型 1、 概念 语言中直接支持面向对象程序设计的部分; 对于各 阅读全文
posted @ 2024-01-04 21:03 hellozhangjz 阅读(37) 评论(0) 推荐(0)
摘要: 虚函数表 C++ 对象模型 在有虚函数的情况下,C++对象的模型可以概括为:虚函数表指针+数据struct。在对象所在的内存里:前8个字节(64位系统)是虚函数表所在地址,后边是对象中的member data。在多态的实现里,父指针就是根据所指向内存里的第一个地址来找到对应的虚函数表从而实现多态。 阅读全文
posted @ 2024-01-04 19:20 hellozhangjz 阅读(27) 评论(0) 推荐(0)
摘要: 线程之间共享代码、资源、进程(内存)空间、打开文件等。 线程同步机制 互斥锁 互斥锁本质是一个全局变量,其值为0时表示没锁,可以对其进行上锁(+1),而且上锁的操作由硬件和操作系统保证是原子操作,所以不存在两个线程同时上一把锁。其值为1时表示上锁,线程再进行lock操作会阻塞自己,并在互斥锁队列里等 阅读全文
posted @ 2023-11-23 10:40 hellozhangjz 阅读(30) 评论(0) 推荐(0)
摘要: ```C++ // 查询异或最大值,每次插入和查询时间都是log(C) template class trie01 { vector> tree; public: trie01() : tree(1, vector(2, 0)) {} // 插入待检查的数字 void insert (T x) { 阅读全文
posted @ 2023-07-08 16:14 hellozhangjz 阅读(47) 评论(0) 推荐(0)
摘要: ```cpp map indx; for(auto &a : arr) indx[a] = 1; int n = arr.size(); for(auto &p : indx) p.second = n--; for(auto &a : arr) a = indx[a]; ``` 阅读全文
posted @ 2023-06-12 16:36 hellozhangjz 阅读(12) 评论(0) 推荐(0)
摘要: auto cmp = [] (int x, int y) {return true;}; priority_queue<int, vector<int> , cmp> q; 报错第三个参数失配,需要一个类型,而不是对象。平时用sort直接传cmp习惯了,才发现这类模板尖括号内要传类型,包括set和m 阅读全文
posted @ 2023-03-08 14:23 hellozhangjz 阅读(39) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 14 下一页