- 博客(16)
- 收藏
- 关注
原创 关于类内定义模板函数,类外实现的未定义问题
今天在写JSON解析器的时候发现的问题,代码如下。JObject.h文件public://在类内声明了一个模板函数JObject.cpp文件// 添加安全检查 if constexpr(IS_SAMETYPE(T , t_str)) {if(m_type!if(m_type!if(m_type!if(m_type!if(m_type!if(m_type!// 添加安全检查 if constexpr(IS_SAMETYPE(T , t_str)) {if(m_type!
2023-08-30 11:33:53
165
1
原创 无符号整型减去一个比自己大的数遇到的坑--力扣18
型, 当nums.size() - 3 小于0时, 由于无符号变量不可能为负数,所以要对 nums.size() - 3 的值进行。中,当nums.size()的值小于等于3时,依然能进入循环体内;这是因为nums.size()返回的是一个无符号。模运算以防止其为负数。
2023-08-17 14:43:55
279
1
原创 为什么STL默认用deque作为stack和queue底层结构实现,而不是list或者vector
如果对于插入和删除操作的效率要求不高,而对随机访问和连续存储的性能要求更高,可以选择。这种连续性便于迭代器的操作和元素的访问。的元素在物理内存中并不连续,但它在逻辑上给出了一个连续的序列。是双端队列的实现,它支持在队首和队尾进行高效的插入和删除操作。的插入和删除操作在平均情况下更为高效,因为它不需要移动大量的元素。STL 提供了不同的容器,以便根据具体的场景选择最合适的底层实现。在插入和删除操作两端的性能上具有优势,并且具备较好的空间效率。在插入和删除操作时,不会影响已存在的迭代器的有效性。
2023-08-16 23:50:20
196
1
原创 哈希之数组作为哈希key值-力扣49
这样,每个元素的哈希值都会被依次加入到累加结果中。最终,累加结果将作为这个数组的哈希值返回。给你一个字符串数组,请你将 字母异位词 组合在一起。,以满足unordered_map或unordered_set等数据结构的要求。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。类型的数组作为参数,并返回一个size_t类型的哈希值。算法对数组元素进行累加,并执行自定义的哈希算法。调用哈希函数对象来获取其哈希值,然后将累加结果左移一位。的哈希函数对象,用于对数组元素执行哈希操作。表示累加结果的初始值,
2023-08-15 12:14:00
216
原创 epoll简单实现C/S模型----多路IO转接之高并发
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。
2023-03-28 19:27:03
89
原创 select简单实现C/S模型----多路IO转接之高并发
多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开的文件描述符个数并不能改变select监听文件个数解决1024以下客户端时使用select是很合适的,但如果链接客户端过多,select采用的是轮询模型,会大大降低服务器响应效率,不应在select上投入更多精力。
2023-03-28 19:17:28
132
原创 epoll反应堆模型简单实现C/S模型----多路IO转接之高并发
原来: socket、bind、listen – epoll_create 创建监听 红黑树 – 返回 epfd – epoll_ctl() 向树上添加一个监听fd – while(1)– read() — 小->大 – cfd从监听红黑树上摘下 – EPOLLOUT – 回调函数 – epoll_ctl() – EPOLL_CTL_ADD 重新放到红黑上监听写事件。– epoll_ctl() – EPOLL_CTL_ADD 重新放到红黑上监听读事件 – epoll_wait 监听 }
2023-03-27 00:41:49
94
原创 Socket编程之C/S模型
如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。
2023-03-19 21:37:05
424
原创 C++智能指针weak_ptr
如果有两个shared_ptr相互引用,那么这两个shared_ptr指针的引用计数永远不会下降为0,资源永远不会释放。weak_ptr是对对象的一种弱引用,它不会增加对象的use_count,weak_ptr和shared_ptr可以相互转化,shared_ptr可以直接赋值给weak_ptr,weak_ptr也可以通过调用lock函数来获得shared_ptr。,这个weak_ptr用来观察this智能指针,调用shared_from_this()方法是,会调用内部这个weak_ptr的。
2023-03-18 23:32:48
158
原创 vscode下cmake工程环境配置以及调试配置(c++)
1.准备工作1.1MinGW的下载1.2CMake的下载CMake下载:下载导航->MinGW 和 CMake下载完后需要配置系统环境变量,将MinGW和CMake下的bin目录添加进去即可,在cmd下输入 g++ --version 和 cmake --version有版本号输出说明MinGW ,CMake安装成功。ps: 安装完WinGW之后,需要将WinGW自带的make工具改一下名称,将WinGW的bin文件夹下的mingw32-make.exe复制一份然后改名为make.exe,
2022-02-27 00:34:25
15500
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人