<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[leamus的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/leamus</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; leamus]]></copyright><item><title><![CDATA[入驻爱发电，多支持我的项目]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/121315904</link><guid>https://blog.youkuaiyun.com/leamus/article/details/121315904</guid><author>leamus</author><pubDate>Sun, 14 Nov 2021 12:04:54 +0800</pubDate><description><![CDATA[今天入住了 爱发电app，希望大家能支持我的项目。https://afdian.net/@Leamus

]]></description><category></category></item><item><title><![CDATA[多线程中任务让谁处理比较高效（Qt为例）]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/118389761</link><guid>https://blog.youkuaiyun.com/leamus/article/details/118389761</guid><author>leamus</author><pubDate>Thu, 01 Jul 2021 18:45:51 +0800</pubDate><description><![CDATA[目录一、前言二、验证目的三、验证流程1、工作线程直接无锁处理2、工作线程加锁处理3、使用信号槽发送任务4、使用postEvent四、结论
一、前言
命名这个博客的名称也让我费了点时间，因为之前我在网上找过相关资料，但并没有这方面的资料和讨论，也可能是我太钻牛角尖非要搞个清楚。之前我做IOCP库的时候，想把这个高并发网络库做的更精益求精，用了很多晦涩的逻辑和技术来实现无锁化，但这只是建立在我一直认为发送事件的效率比锁的速度要快，今天终于有时间来验证一下这个想法，但结果却让我大跌眼镜。当然也有可能是我的思路或者]]></description><category></category></item><item><title><![CDATA[热更新&加载器技术（三）：各个OS平台和库的简介]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/109066015</link><guid>https://blog.youkuaiyun.com/leamus/article/details/109066015</guid><author>leamus</author><pubDate>Wed, 14 Oct 2020 09:36:59 +0800</pubDate><description><![CDATA[占位

]]></description><category></category></item><item><title><![CDATA[热更新&加载器技术（二）：常见的平台和更新方式]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/109064982</link><guid>https://blog.youkuaiyun.com/leamus/article/details/109064982</guid><author>leamus</author><pubDate>Wed, 14 Oct 2020 09:36:09 +0800</pubDate><description><![CDATA[这篇主要讲一下热更新的原理，和各个平台使用库的方法。
热更新
一、综述
热更新是相对于冷更新的一种技术，冷更新差不多就是重装的意思，用户主动从网络、存储介质（光驱、u盘等）来获取安装包，进行安装的过程。而热更新，是程序自主从安装渠道（一般是网络）进行更新升级的过程。
热更新一般是对客户端进行升级更新，服务端不涉及。B/S架构的应用一般就是个浏览器内核+H5/CSS/JS，主要代码都部署在服务端，可以说本身就是热更新的架构，非常方便。
说点题外话，我个人感觉做点小业务，B/S架构非常快速方便，但不适合做大业务]]></description><category></category></item><item><title><![CDATA[IOCP完全开发经验总结（三）：开发UDP的IOCP]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/109047982</link><guid>https://blog.youkuaiyun.com/leamus/article/details/109047982</guid><author>leamus</author><pubDate>Tue, 13 Oct 2020 11:40:01 +0800</pubDate><description><![CDATA[UDP和TCP不同，后者面向连接的，而前者并不需要连接，所以去掉了一个很重要的数据结构：SocketContext，代码也比TCP的简单很多，经过实际测试，也有一些坑需要跳一下，这里会一一说明。
有空再更。

...]]></description><category></category></item><item><title><![CDATA[IOCP完全开发经验总结（二）：几个重要问题分析（下）]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/109047927</link><guid>https://blog.youkuaiyun.com/leamus/article/details/109047927</guid><author>leamus</author><pubDate>Tue, 13 Oct 2020 11:36:19 +0800</pubDate><description><![CDATA[这篇主要说一些其他不重要的，然后慢慢更新。
如何给IOCP工作线程发送自定义消息并处理
关于Accpet时客户端附带第一组数据的说明
关于优雅的关闭IOCP

]]></description><category></category></item><item><title><![CDATA[IOCP完全开发经验总结（二）：几个重要问题分析（中）]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/109045118</link><guid>https://blog.youkuaiyun.com/leamus/article/details/109045118</guid><author>leamus</author><pubDate>Tue, 13 Oct 2020 11:28:01 +0800</pubDate><description><![CDATA[优雅的处理连接断开
据我目前遇到的断开类型共有4种：客户端主动断开、客户端异常断开、服务器主动断开和网络出现问题断开。只要系统检测到连接断开后，你在这个socket上投递的所有IOContext都会从队列中返回，只是返回值会不同。
1、客户端主动断开
一般是客户端调用closesocket函数，这种断开服务器会收到断开的标志，所以服务器上处理很简单：每个你在此socket上投递的IOContext都会从GetQueuedCompletionStatus返回，且函数本身返回TRUE，你传递的dwBytesTr]]></description><category></category></item><item><title><![CDATA[C++高并发库系列（二）：在Win下用MinGW/Qt来编译和使用libhv]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/108916489</link><guid>https://blog.youkuaiyun.com/leamus/article/details/108916489</guid><author>leamus</author><pubDate>Sun, 04 Oct 2020 10:54:54 +0800</pubDate><description><![CDATA[我个人主要使用MinGW/Qt，不喜欢VS（太臃肿），所以用qmake比较多，对CMake不是很了解，编译libhv时也费了些时间，现对编译libhv遇到的问题进行解决。
一、编译
1、下载并解压libhv
项目地址：https://github.com/ithewei/libhv.git
码云镜像：https://gitee.com/ithewei/libhv.git
2、安装CMake
3、使用CMake环境的命令行进入libhv跟目录
4、输入命令：
md build
cd build
CMake -]]></description><category></category></item><item><title><![CDATA[C++高并发库系列（一）：概述]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/108916415</link><guid>https://blog.youkuaiyun.com/leamus/article/details/108916415</guid><author>leamus</author><pubDate>Sun, 04 Oct 2020 09:41:19 +0800</pubDate><description><![CDATA[在我开发完自己的IOCP库后，才知道了已经有很多现成的高并发库：boost、libevent、libuv、libhv等，而且还是跨平台的，所以我建议大家还是使用现成的库，把重要的精力花在业务逻辑上而不是调bug，除非你也是非常热爱技术、或者也想开发一个属于自己的库。我自己的库只是实现了最基本的功能，并没有涉及到更多的协议和应用，而且还没有对极端情况进行处理（比如内存满、连接上十万等等），目前也够用，但我也会慢慢转移到成熟的库上。
关于这几个库我就不介绍了，百度上都有，但注意到libhv是一个新秀，而且据介绍]]></description><category></category></item><item><title><![CDATA[热更新&加载器技术（一）：概述]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/108916155</link><guid>https://blog.youkuaiyun.com/leamus/article/details/108916155</guid><author>leamus</author><pubDate>Sun, 04 Oct 2020 09:01:35 +0800</pubDate><description><![CDATA[最近突发奇想，如果能做一个自更新（热更新）的东西用到项目里，那用户体验不就蹭蹭蹭的往上涨吗？带着这个美好的目标掉进了一个坑，又浪费我好长时间。。。
先在网上搜了一下相关技术，看有没有现成能用的，很可惜，除了一些跟我想的一样的原理分析，也没有其他有用的，那就自己动手吧！
之前做过一个小的热更新器，Qt框架，主要用在win平台，根据一个updateinfo.json来判断哪个文件需要更新，更新完毕后调用外部exe（还卖了点小钱），但现在我要重新定义一下更宏大的目标了。
使用Web框架+H5的可以绕道了。
一、目]]></description><category></category></item><item><title><![CDATA[IOCP完全开发经验总结（二）：几个重要问题分析（上）]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/108915983</link><guid>https://blog.youkuaiyun.com/leamus/article/details/108915983</guid><author>leamus</author><pubDate>Sun, 04 Oct 2020 08:43:07 +0800</pubDate><description><![CDATA[我在小猪的博客里回复了很多比较重要的问题，这里会花费大量的精力去研究解决这些问题。
WSASend
小猪的文章里并没有说WSASend如何去用，只是一句话带过（说这个很简单），带着要严谨的科学和研究精神，我然后看了很多示例源码（包括说是有个很牛逼的老外写的），都没有详细的说这一部分，后来又网上搜了很多WSASend理论（包括MSDN），才总结了以下理论：
1、WSASend如果作为同步IO发送（与Send作用相同时），是非线程安全的，不能同时在多个线程中同时调用。
这个完全理解。
2、WSASend作为异步]]></description><category></category></item><item><title><![CDATA[我的十几年技术总结（一）：从疯狂到无奈]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/108694414</link><guid>https://blog.youkuaiyun.com/leamus/article/details/108694414</guid><author>leamus</author><pubDate>Mon, 21 Sep 2020 23:11:54 +0800</pubDate><description><![CDATA[放弃吧
这不知是什么时候买下的种子，却这两年在我心里的阴暗角落慢慢开始生根发芽。
这并不是我不喜欢技术了。
是因为做技术太苦、太累、太不受尊重了。
那么，受尊重的是什么人？
是圆滑、会说、会来事、会办事、能狠出来的人。
昨天我遇到一个大姐，她是做国际导游的，她说她不会和中国人相处，她只喜欢和老外打交道，因为简单，说到就能做到。
同时我十年前认识的一个很厉害的大哥，也在昨天偷偷告诉我，他要在他45岁时资产达到2亿，然而他今年43了。
看看我自己，十年前很单纯，现在很纯，增长了的只有年龄和技术。
我从小就很聪明]]></description><category></category></item><item><title><![CDATA[IOCP完全开发经验总结（一）：简介]]></title><link>https://blog.youkuaiyun.com/leamus/article/details/103835822</link><guid>https://blog.youkuaiyun.com/leamus/article/details/103835822</guid><author>leamus</author><pubDate>Mon, 21 Sep 2020 11:29:15 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Ma...]]></description><category></category></item></channel></rss>