- 博客(168)
- 资源 (1)
- 问答 (15)
- 收藏
- 关注

原创 在IOCP框架下实现基于TCP通讯的高并发聊天功能
/*使用技术:1. IOCP框架2. 多线程及其同步3. 线程池4. 回调函数的优雅实现//实现功能:1. 客户端启动后自动连接服务器,断开后自动重连机制2. 客户端与客户端通讯都需要通过服务器中转3. 客户端之间聊天模式类似于钉钉,会提示消息发送成功以及消息已送达功能4. 服务器对客户端接入、断线、以及重连都有做相应处理//实现过程中思考的问题:1. IOCP如何...
2018-11-14 19:24:01
1197

原创 C++自定义线程池以及通过线程池处理业务展示
本实例通过3部分进行展示:将线程池定义成一个类,用来管理线程,该线程池设计成单例模式设计了一个工作类,即工作线程类,用于处理业务(使用基于事件的同步方式和原子操作同步方式)设计了一个任务分发管理类,用于模拟实际业务使用线程池实现处理业务自定义事件类:.h#pragma once#include<windows.h>class LanEvent{public:La...
2018-11-08 19:36:56
759

原创 select模型运用-客户端
// ClientBySelect_Test1.cpp : 定义控制台应用程序的入口点。//#include “stdafx.h”#include #include #include <stdio.h>#include <tchar.h>#include <WinSock2.h>#include #include <assert.h&am
2018-10-29 18:20:29
1441

原创 使用Select实现C/S通讯之服务端
// ServerBySelect_Test1.cpp : 定义控制台应用程序的入口点。//#include “stdafx.h”#include <WinSock2.h>#include #include <stdio.h>#include #include using namespace std;#pragma comment(lib,“ws2_32....
2018-10-29 18:19:06
369

原创 AVL树的创建、查找、删除节点、增加节点和释放内存的实现
include “stdafx.h”include < iostream >include < stdlib.h >include < stdio.h>include < vector>include < assert.h>using namespace std;
2018-08-22 13:08:42
3789
1

原创 二叉树的前序、中序、后序遍历实现
// 中序遍历.cpp : 定义控制台应用程序的入口点。 //include “stdafx.h”include < iostream>include < stdlib.h>include < stdio.h>include < assert.h>include < vector
2018-08-19 21:38:20
216

原创 二叉搜索树(Binary Search Tree)
二叉搜索树(Binary Search Tree),也称为“二叉查找树”,是指一颗空树或者具有下列性质的二叉树: 1. 任意节点的左子树不空,则左子树上所有节点的值“小于”它的跟节点的值。 2. 任意节点的右子树不空,则右子树上所有节点的值“大于”它的跟节点的值。 3. 任意节点的左子树、右子树也都为二叉查找树。二叉查找树的特点:左子树<根节点<右子树!!!...
2018-08-13 14:38:12
497
原创 VS查看项目代码行数
查找所有代码行数,包括系统生成。打开项目,编辑,查找和替换,选中"在文件中查找",然后就会弹出一个查找框,输入正则表达式 b*[^:b#/]+.*$,选择查找整个解决方案,查找选项选择使用正则表达式,然后查找全部,最后就会统计出一共有几行。
2025-01-21 14:51:23
287
原创 c++智能指针
C++ 11shared_ptrunique_ptrweak_ptrauto_ptr(被 C++11 弃用)Class shared_ptr 实现共享式拥有(shared ownership)概念。多个智能指针指向相同对象,该对象和其相关资源会在 “最后一个 reference 被销毁” 时被释放。为了在结构较复杂的情景中执行上述工作,标准库提供 weak_ptr、bad_weak_ptr 和 enable_shared_from_this 等辅助类。Class unique_ptr 实现独占式
2022-02-17 13:49:32
184
原创 C++显示调用dll
参考文献以下以调用TestLoadlibraryEx.dll为例:C++隐式调用:调用方需要TestLoadlibraryEx.dll、TestLoadlibraryEx.lib、include相关文件C++显示调用:调用方只需要TestLoadlibraryEx.dll接下来详细说明“C++显示调用”的流程:1. TestLoadlibraryEx.dll工程的制作过程:(1). 新建项——》新建一个“模块定义文件(.def)”,如下图所示:(2).def文件中输入如下属性:LIBR
2021-09-08 15:55:10
2982
4
原创 关于网络编程的一些实用技巧和细节
转载自:https://cloud.tencent.com/developer/article/1107097这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。本文涉及的平台包括windows和linux,下面开始啦。一、非阻塞的connect()函数如何编写我们知道用connect()函数默认是阻塞的,直到三次握手建立之后,或者实在连不上超
2021-07-23 11:01:35
183
原创 C++模板类成员函数
/** * \class CallbackMethod * \brief Abstract callback-style method. * \see RpcMethod */class CallbackMethod{public: /** * \brief Destructor. */ virtual ~CallbackMethod(); /** * \brief Call the method. * \param msg J
2021-07-22 14:49:16
1052
原创 C++ 超时实现——单线程模式
void WaitRecv(std::string &data, unsigned int timeout) { time_t cur_time = time(NULL); while(data.size() == 0 && static_cast<time_t>(cur_time + timeout) > time(NULL)) { this->Recv(data);
2021-07-20 20:50:12
873
原创 C++跨动态库dll内存分配与释放问题总结
结论:如果两个dll(或者exe调用dll)的CRT链接为MD,则可以跨动态库分配和释放;如果一个是MT,另一个是MD则会有问题(比如崩溃)。利用虚函数的动态绑定技术,动态绑定分配释放内存的new和delete等,可以解决上述1的问题,例如shared_ptr的实现。但如果shared_ptr包装是vector等类型,在调用和被调用中都涉及到vector的修改的话,仍然会有问题,因为两个地方都会有释放和分配。详情见以下两个文章:跨dll的内存分配释放问题智能指针shared_ptr为何可以实
2021-04-11 14:17:46
2447
原创 Qt同步线程
点击看原文Qt同步线程我们知道,多线程有的时候是很有用的,但是在访问一些公共的资源或者数据时,需要进行同步,否则会使数据遭到破坏或者获取的值不正确。Qt提供了一些类来实现线程的同步,如QMutex,QMutexLocker,QReadWriteLock,QReadLocker,QWriteLocker,QSemaphore和QWaitCondition。下面我们分别来看它们的用法:QMutex首先,简单的了解一下QMutex提供的函数。构造函数:QMutex ( RecursionMode mod
2021-03-17 15:36:05
629
在linux系统下如何获取窗口的指针(多个进程的窗口),希望大神给点指导,谢谢
2016-03-26
在Qt中给widget添加背景图片,图片空白处显示为黑色
2016-02-25
在Qt中使用QStackedWidget为每个界面设置背景问题
2016-01-29
在头文件里定义一个string name; 变量,编译报错
2015-10-30
在C语言中读取闻见为UTF-8的汉字,英文混合的文件,又甚么函数可以不出现乱码
2015-10-29
在C中求char* s[]={};数组元素的个数算法
2015-10-25
C语言中的fgets问题,结果输出多出一行“(null)”
2015-10-25
如何使用TableView和TableViewCell
2015-09-21
定义类的指针变量如何重载类的拷贝构造函数和重载=号
2015-09-09
为一个指针变量new一片内存,释放时报错,求解!
2015-09-09
为什么输出一个空指针链表时if(pHead==NULL){cout《“”;}这句不能执行
2015-09-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人