自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (10)
  • 收藏
  • 关注

原创 开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,WEBSOCKET,RPC,ICMP,SSL,串口,跨平台,支持可靠UDP,支持TCP自动拆包等

开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等

2022-06-23 16:41:54 1911

原创 分享一个C++下使用简单的反射实现的程序模块化的思路

首先说一个基本问题,项目大了以后,一定要做模块化处理,每个模块处理各自的事情,各个模块之间尽量不要有太多的耦合,就是说模块A尽量不要依赖模块B,模块B也不要依赖模块A。千万不要把所有代码写在一起搞成一锅粥,人脑是有限的,拆分成各个小块,一是逻辑简单不容易出问题,二是即使出了问题排查起来也更容易。由于我没有想到一个比较好的,对新手也特别容易理解的例子,所以这里就直接按照我能想到的举例吧。假如我们有个需求是这样的:有一个tcp server,要接收客户端发过来的请求,然后根据不同的请求,做出不同的处理后再回复客

2024-01-23 11:20:01 919 1

原创 分享一个asio下使用channel来实现无需队列的安全的连续async_write的方法

co_composed是用来解决,自己封装的异步函数中,无法直接使用c++20的协程的问题的。// 在这里使用asio通过宏模拟的协程,这种方式的协程使用起来缚手缚脚的// 很不灵活// 注意:这里无法使用 co_await asio::async_write(sock, "abc");// ...end:// complete 会调用回调函数,这里回调函数有一个参数即asio::error_code。

2024-01-22 15:53:35 448

原创 在c++ 20下使用微软的proxy库替代传统的virtual动态多态

上面同样的需求,换成proxy库来实现是这样的:可以看到,换成proxy库之后,不再有virtual虚函数,而且是非侵入式的,我觉得这种方式非常棒,很优雅。至于性能测试,我没有去做。详情见这个开源仓库地址:https://github.com/microsoft/proxy

2023-08-24 17:37:10 965

原创 如何在c++ format中实现格式化串和内容字段成对出现的功能

当要格式化的字段非常多时,格式化串中的{}也会非常多,如果{}中需要带修饰,则修饰的位置和字段的位置必须要正确匹配,下面的示例只包含10个字段,实际项目中的字段可能会达到50个以上,这就导致{}和字段要正确匹配这个工作靠人肉配对时会非常痛苦,如果字段还会经常增删,那问题就更严重;此时格式化串{}和字段是成对出现的,无论有多少字段,无论是否经常增删,写代码时都会非常轻松

2023-08-04 11:19:11 261 1

原创 关于asio2在各个操作系统平台下编译时的openssl等链接库的说明

关于asio2在各个操作系统平台下编译时的openssl等链接库的说明,qt .pro 链接,clion, qt creator,vc, msvc, gcc, clang, ndk, mingw, 安卓,ios,linux,macos

2023-04-06 15:30:05 562

原创 用asio2如何实现网络限速

用asio2如何实现网络限速,上传速度限制,下载速度限制,网络速度限制,asio,tcp,限速,速度限制,网速限制

2023-03-30 17:48:06 232

原创 关于asio2项目example目录中的几个tcp示例的说明

关于asio2项目example目录中的几个tcp示例的说明,这几个示例是演示怎么做tcp拆包的,按字符\n进行拆包,按字符串\r\n进行拆包,此时数据边界就是单个字符或字符串,自定义协议的拆包,websocket模式拆包.

2022-11-04 16:08:33 980

原创 使用asio2开发一个简易的http server

大约200行代码开发一个简易的静态的http server,同时支持http和https,asio,asio2,c++,11,17

2022-11-03 15:52:06 878

原创 asio做tcp的自动拆包时,asio的match condition如何使用的详细说明

tcp 自动 封包 拆包 如何使用 教程 asio match condition role asio2

2022-11-03 15:21:50 770

原创 基于c++和asio的网络编程框架asio2教程使用篇:使用rpc模块编写rpc server和rpc client

基于c++和asio的网络编程框架asio2教程使用篇:使用rpc模块编写rpc server和rpc client

2022-06-23 19:52:01 844

原创 基于c++和asio的网络编程框架asio2教程基础篇:4、使用tcp客户端发送数据时,如何同步获取服务端返回结果

基于c++和asio的网络编程框架asio2教程基础篇:4、使用tcp客户端发送数据时,如何同步获取服务端返回结果 问题描述最基础的使用示例服务端代码客户端代码深入功能1:使用自定义类型的返回数据深入功能2:使用自定义类型的唯一id深入功能3:链式调用深入功能4:服务端和客户端互相调用深入功能5:发送数据和接收数据使用不同的解析函数深入功能6:两次发送的数据的id相同有问题吗?问题描述asio2::tcp_client client;client.bind_recv([&am.........

2020-12-23 16:24:59 1173 2

原创 关于 UE4 (虚幻引擎4)使用VS编译时输出窗口出现乱码的解决办法

关于 UE4《虚幻引擎4》使用VS编译时输出窗口出现乱码的解决办法1:2:3:总结:首先说说VS中如何启用UTF-8编码(但仅在VS中启用UTF-8编码并不能解决UE4的编译输出乱码问题,请往后看):1:如果你的源文件中只有英文,没有汉字,那你这个文件本身实际上就是UTF-8格式的,什么都不用做。如果你的源文件中有汉字,那这个文件通常就是GBK格式的,在VS中打开你这个文件,再点击菜单“文件 - xxx.cpp另存为 - 点击保存按钮右侧的下拉箭头 - 编码保存 - 选择Unicode(UTF

2020-10-10 16:59:18 3011 1

原创 基于c++和asio的网络编程框架asio2教程基础篇:3、各个回调函数的触发线程以及多线程总结

基于c++和asio的网络编程框架asio2教程基础篇:3、各个回调函数的触发线程以及多线程总结服务端:tcp_server:udp_server:客户端项目地址:关于asio的多线程的知识点感觉挺多的,需要对“服务端,客户端,tcp,udp”分别来总结。而且了解各个函数分别在哪个线程中执行的,对于多线程编程以及和做具体业务时变量要不要用锁来保护,非常重要。asio2是“one io_context per cpu”的多线程模式。这个概念主要是asio本身的概念,不了解的可以搜索一下,资料还是挺多的

2020-09-29 15:51:42 1505

原创 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程

基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程以tcp举例:tcp服务端流程:tcp客户端流程:所有回调函数都必须要写吗?项目地址:以tcp举例:tcp服务端流程:#include <asio2/asio2.hpp>int main(){ std::string_view host = "0.0.0.0"; std::string_view port = "8028"; asio2::tcp_server server; s

2020-09-28 16:06:38 1931

原创 基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明

基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明1、asio2如何使用?2、asio2是什么?3、为什么不直接使用asio?为什么要做asio2?4、直接使用asio和使用asio2有什么区别?5、asio2有什么优点?6、asio2有什么缺点?7、asio2的实现思路项目地址:由于asio2没有写技术文档,因此打算写几篇文章介绍一下如何使用它,主要是针对新手。1、asio2如何使用?asio2这个框架的使用很简单,以VS2017举例:在VS2017的项目上点右键 -

2020-09-28 15:30:01 7632 6

原创 关于 UE4 (虚幻引擎4) 4.25.1版本提示“无法定位程序输入点 DXGIGetDebugInterface1 于动态链接库dxgi.dll上”的错误的解决办法

关于 UE4 (虚幻引擎4) 4.25.1版本提示“无法定位程序输入点 DXGIGetDebugInterface1 于动态链接库dxgi.dll上”的错误的解决办法:1、原因:使用关键词DXGIGetDebugInterface1进行搜索,可以找到微软官方的API说明,https://docs.microsoft.com/zh-tw/windows/win32/api/dxgi1_3/nf-dxgi1_3-dxgigetdebuginterface1?redirectedfrom=MSDN 通过该..

2020-06-30 14:35:36 9915 3

原创 一个简单好用的操作mysql的c++类,在mysql c api的基础上封装的,没有使用官方的c++ connector

目前 mysql 官方的 c++ connector 还没有针对vs2017编译的二进制包,在mysql官方网站上下载的release二进制包在vs2017下可以用,但是下载的debug包在vs2017下运行时却提示找不到vcruntime140_1D.dll 而下载c++ connector源码进行编译,它还要依赖boost,而且编译过程中还出现一些找不到sys/types.h头文件的之类错误,...

2020-03-16 16:32:54 358

原创 c++ 11 std::thread 线程 获取线程ID的整数值

std::ostringstream oss;oss &lt;&lt; std::this_thread::get_id();std::string stid = oss.str();unsigned long long tid = std::stoull(stid);

2018-05-31 17:48:52 33647 14

转载 对TCP协议通信过程中的TCP_NODELAY选项的通俗解释

30年前,阳澄湖的蟹农老王,每抓一只大闸蟹,就派一辆三轮车送到上海,1小时后再带着卖蟹的钱回来,老王想,这样好处是回款快(延迟小)。老张、老李、老赵等等蟹农也发现了这个好处,于是大家都开始这种办法。但是,30年前的乡间小路,很快被一辆辆的三轮车所堵塞,结果三天三夜也没有到达上海,老王的如意算盘泡汤了。痛定思痛,老王觉得,没有必要一个螃蟹一辆三轮车,可以将上午的所有螃蟹装在一辆大卡车上,

2018-01-15 11:54:39 913

转载 Reactor模式,或者叫反应器模式

Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较直观的方式来介绍一下这种方式的优点,通过和常用的

2017-11-10 21:26:03 414

原创 关于VS2017编译linux程序时,错误提示信息太简单,看不出错误原因的解决办法

关于VS2017编译linux程序时,错误提示信息太简单,看不出错误原因的解决办法

2017-07-12 11:22:41 9911 3

转载 注册表中各种开机自启动项目位置

注册表中各种开机自启动项目位置

2015-10-08 17:02:43 2587

GFSDK_Aftermath_Lib.x64.rar

UE4 4.24.3版本里面自带的GFSDK_Aftermath_Lib.x64.dll文件,用于解决:关于 UE4 (虚幻引擎4) 4.25.1版本提示“无法定位程序输入点 DXGIGetDebugInterface1 于动态链接库dxgi.dll上”的错误的解决办法。注意:我发布资源时积分填的是0,但是CSDN会自动修改积分,修改成多少也不知道,我也没办法,大家看着下吧。

2020-06-30

安卓帮助文档GOOGLE链接清理工具

解决android sdk帮助文档打开慢

2016-10-14

PNG透明图片重叠父窗口残留刷新问题

PNG图片重叠父窗口残留刷新问题,解决CSDN帖子:http://bbs.csdn.net/topics/390951659 的问题 资源下载:https://share.weiyun.com/5YHffSp

2014-12-26

PingUI 批量ping工具

PingUI 批量ping工具 可记录ping日志

2013-12-14

在窗口中实现透明GIF

透明GIF VC MFC的代码,无论窗口是什么背景,均能透明。 源码下载:https://share.weiyun.com/5YHffSp

2012-12-04

MFC的标题栏自绘源码

首先第一点很重要:给想学自绘的新手看最好了。 标题栏自绘,应该是比较完善的了,应该没有什么BUG,不过代码比较粗糙,没有很好的整理,但注释非常多,比较好看懂,用到了HOOK。

2012-11-30

一个扩展的CComboBox 下拉框 自绘 美化

一个扩展的CComboBox 下拉框 自绘 美化 MFC源码 适合于新手学习参考。 “我是为了实现50个字的要求额外补充的。我是为了实现50个字的要求额外补充的。我是为了实现50个字的要求额外补充的。”

2012-09-28

CTabCtrl美化

CTabCtrl 美化的小例子,适合新手学习使用。 CTabCtrl 美化的小例子,适合新手学习使用。 CTabCtrl 美化的小例子,适合新手学习使用。 CTabCtrl 美化的小例子,适合新手学习使用。

2012-09-27

VC/MFC SQL 2000 自己写的分页控件

VC/MFC中对SQL的操作默认没有分页控件,我自己写了一个分页控件,效果类似于常见的网页中的分页方式,比如显示为:1 2 3 4 5 6 7 ... 98 99 等。

2012-09-03

自己写的美化菜单的CMenuEx类

//所有的菜单(包括顶层框架菜单与弹出式菜单)项均会触发OnInitMenu函数,分以下几种情况: // 一 顶层框架菜单:就是文件,编辑等这种菜单,框架菜单在主窗口显示后并不会自动调用OnInitMenu函数, // 必须手动设置框架菜单的自绘标志,否则在主窗口显示后框架菜单仍然为非自绘状态 // 二 系统菜单:这种情况比较特殊,需要注意,分以下几种情况: // (1) 主窗口显示时在标题栏上点右键弹出的菜单,此时进入到OnInitMenu函数中后,通过遍历发现 // 这些菜单项仍然是框架菜单项,也就是文件,编辑等,而不是最小化,最大化等系统菜单。 // (2) 主窗口未最小化时(不管主窗口是前台窗口还是非前台窗口),在任务栏的程序按钮上点右键弹出的菜单, // 此时进入到OnInitMenu函数中后,通过遍历发现这些菜单项仍然是框架菜单项,也就是文件,编辑等,而不是最小化,最大化等系统菜单。 // (3) 主窗口最化小时,在任务栏的程序按钮上点右键弹出的菜单,此时进入到OnInitMenu函数中后,发现该菜单才是系统菜单,最小化,最大化等。 // 三 弹出式菜单:所有弹出式菜单都会触发OnInitMenu函数处理 //因为框架菜单已经在OnInitMenu函数之前进行了强制设置自绘标志,所以这里不再考虑是否将框架菜单进行过滤掉,当进入到ModifyMenuStyle函数中后,会发现该 //菜单已经设置了自绘标志,就不再处理了。 //这里只判断是否系统菜单,并对其进行过滤,不自绘系统菜单。

2012-04-12

空空如也

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

TA关注的人

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