自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (8)
  • 收藏
  • 关注

原创 IOCP完全开发经验总结(三):开发UDP的IOCP

UDP和TCP不同,后者面向连接的,而前者并不需要连接,所以去掉了一个很重要的数据结构:SocketContext,代码也比TCP的简单很多,经过实际测试,也有一些坑需要跳一下,这里会一一说明。有空再更。...

2020-10-13 11:40:01 1168

原创 IOCP完全开发经验总结(二):几个重要问题分析(下)

这篇主要说一些其他不重要的,然后慢慢更新。如何给IOCP工作线程发送自定义消息并处理关于Accpet时客户端附带第一组数据的说明关于优雅的关闭IOCP

2020-10-13 11:36:19 351

原创 IOCP完全开发经验总结(二):几个重要问题分析(中)

优雅的处理连接断开据我目前遇到的断开类型共有4种:客户端主动断开、客户端异常断开、服务器主动断开和网络出现问题断开。只要系统检测到连接断开后,你在这个socket上投递的所有IOContext都会从队列中返回,只是返回值会不同。1、客户端主动断开一般是客户端调用closesocket函数,这种断开服务器会收到断开的标志,所以服务器上处理很简单:每个你在此socket上投递的IOContext都会从GetQueuedCompletionStatus返回,且函数本身返回TRUE,你传递的dwBytesTr

2020-10-13 11:28:01 811 2

原创 热更新&加载器技术(一):概述

最近突发奇想,如果能做一个自更新(热更新)的东西用到项目里,那用户体验不就蹭蹭蹭的往上涨吗?带着这个美好的目标掉进了一个坑,又浪费我好长时间。。。先在网上搜了一下相关技术,看有没有现成能用的,很可惜,除了一些跟我想的一样的原理分析,也没有其他有用的,那就自己动手吧!之前做过一个小的热更新器,Qt框架,主要用在win平台,根据一个updateinfo.json来判断哪个文件需要更新,更新完毕后调用外部exe(还卖了点小钱),但现在我要重新定义一下更宏大的目标了。使用Web框架+H5的可以绕道了。一、目

2020-10-04 09:01:35 938 3

原创 IOCP完全开发经验总结(二):几个重要问题分析(上)

我在小猪的博客里回复了很多比较重要的问题,这里会花费大量的精力去研究解决这些问题。WSASend小猪的文章里并没有说WSASend如何去用,只是一句话带过(说这个很简单),带着要严谨的科学和研究精神,我然后看了很多示例源码(包括说是有个很牛逼的老外写的),都没有详细的说这一部分,后来又网上搜了很多WSASend理论(包括MSDN),才总结了以下理论:1、WSASend如果作为同步IO发送(与Send作用相同时),是非线程安全的,不能同时在多个线程中同时调用。这个完全理解。2、WSASend作为异步

2020-10-04 08:43:07 726 16

原创 IOCP完全开发经验总结(一):简介

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-09-21 11:29:15 1415 2

原创 入驻爱发电,多支持我的项目

今天入住了 爱发电app,希望大家能支持我的项目。https://afdian.net/@Leamus

2021-11-14 12:04:54 297

原创 多线程中任务让谁处理比较高效(Qt为例)

目录一、前言二、验证目的三、验证流程1、工作线程直接无锁处理2、工作线程加锁处理3、使用信号槽发送任务4、使用postEvent四、结论一、前言命名这个博客的名称也让我费了点时间,因为之前我在网上找过相关资料,但并没有这方面的资料和讨论,也可能是我太钻牛角尖非要搞个清楚。之前我做IOCP库的时候,想把这个高并发网络库做的更精益求精,用了很多晦涩的逻辑和技术来实现无锁化,但这只是建立在我一直认为发送事件的效率比锁的速度要快,今天终于有时间来验证一下这个想法,但结果却让我大跌眼镜。当然也有可能是我的思路或者

2021-07-01 18:45:51 586

原创 热更新&加载器技术(三):各个OS平台和库的简介

占位

2020-10-14 09:36:59 241 1

原创 热更新&加载器技术(二):常见的平台和更新方式

这篇主要讲一下热更新的原理,和各个平台使用库的方法。热更新一、综述热更新是相对于冷更新的一种技术,冷更新差不多就是重装的意思,用户主动从网络、存储介质(光驱、u盘等)来获取安装包,进行安装的过程。而热更新,是程序自主从安装渠道(一般是网络)进行更新升级的过程。热更新一般是对客户端进行升级更新,服务端不涉及。B/S架构的应用一般就是个浏览器内核+H5/CSS/JS,主要代码都部署在服务端,可以说本身就是热更新的架构,非常方便。说点题外话,我个人感觉做点小业务,B/S架构非常快速方便,但不适合做大业务

2020-10-14 09:36:09 2302

原创 C++高并发库系列(二):在Win下用MinGW/Qt来编译和使用libhv

我个人主要使用MinGW/Qt,不喜欢VS(太臃肿),所以用qmake比较多,对CMake不是很了解,编译libhv时也费了些时间,现对编译libhv遇到的问题进行解决。一、编译1、下载并解压libhv项目地址:https://github.com/ithewei/libhv.git码云镜像:https://gitee.com/ithewei/libhv.git2、安装CMake3、使用CMake环境的命令行进入libhv跟目录4、输入命令:md buildcd buildCMake -

2020-10-04 10:54:54 1953 2

原创 C++高并发库系列(一):概述

在我开发完自己的IOCP库后,才知道了已经有很多现成的高并发库:boost、libevent、libuv、libhv等,而且还是跨平台的,所以我建议大家还是使用现成的库,把重要的精力花在业务逻辑上而不是调bug,除非你也是非常热爱技术、或者也想开发一个属于自己的库。我自己的库只是实现了最基本的功能,并没有涉及到更多的协议和应用,而且还没有对极端情况进行处理(比如内存满、连接上十万等等),目前也够用,但我也会慢慢转移到成熟的库上。关于这几个库我就不介绍了,百度上都有,但注意到libhv是一个新秀,而且据介绍

2020-10-04 09:41:19 1814

原创 我的十几年技术总结(一):从疯狂到无奈

放弃吧这不知是什么时候买下的种子,却这两年在我心里的阴暗角落慢慢开始生根发芽。这并不是我不喜欢技术了。是因为做技术太苦、太累、太不受尊重了。那么,受尊重的是什么人?是圆滑、会说、会来事、会办事、能狠出来的人。昨天我遇到一个大姐,她是做国际导游的,她说她不会和中国人相处,她只喜欢和老外打交道,因为简单,说到就能做到。同时我十年前认识的一个很厉害的大哥,也在昨天偷偷告诉我,他要在他45岁时资产达到2亿,然而他今年43了。看看我自己,十年前很单纯,现在很纯,增长了的只有年龄和技术。我从小就很聪明

2020-09-21 23:11:54 298

lcx_Leamus.rar

lcx是大家熟知的内网转发工具,但一直普遍存在个问题,就是长时间如果没有通信,连接就会假死,造成内外网连接断开无法重连。我修改的这个版本会定时发送心跳包,会一直保持内外网主机的连接。 修改的有两个版本,一个是原版,一个是类似lcx._g的版本,我个人喜欢后者,因为我方可以定义其需要连接的ip和端口,不用重新在被控端运行新的lcx。

2021-06-28

Tesseract-OCR的中文库chi_sim

某软件带的中文识别库,已经过训练,经测试非常好用,比自带的和网上所谓经过训练的准确多了。

2021-05-05

Qt for Android 用JNI来使C++和Java互调(目前最新版全网只有这个可用)

研究了很久,也看了Qt on Android,试了很多例子,都不能用(很可能是Qt和Android更新换代太快,很多旧的东西不能用了,所以做了这个例子。

2020-03-13

Java 教程.pdf

Java 教程 Java 快速入门 Java 简介 安装 JDK 第一个 Java 程序 Java 代码助手 使用 IDE 使用 IDE练习插件 Java 程序基础 Java 程序基本结构 变量和数据类型 整数运算 浮点数运算 布尔运算

2020-02-27

廖雪峰 Java 教程.doc

廖雪峰 Java 教程 Java教程 Java快速入门 Java简介 安装JDK 第一个Java程序 Java代码助手 使用IDE 使用IDE练习插件 Java程序基础 Java程序基本结构 变量和数据类型 整数运算 浮点数运算 布尔运算 字符和字符串 数组类型 流程控制 输入和输出 if判断 switch多重选择 while循环 do while循环 for循环 break和continue 数组操作 遍历数组 数组排序 多维数组 命令行参数 面向对象编程 面向对象基础 方法 构造方法 方法重载 继承 多态 抽象类 接口 静态字段和静态方法 包 作用域 classpath和jar 模块 Java核心类 字符串和编码 StringBuilder StringJoiner 包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback 反射 Class类 访问字段 调用方法 调用构造方法 获取继承关系 动态代理 注解 使用注解 定义注解 处理注解 泛型 什么是泛型 使用泛型 编写泛型 擦拭法 extends通配符 super通配符 泛型和反射 集合 Java集合简介 使用List 编写equals方法 使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用Collections IO File对象 InputStream OutputStream Filter模式 操作Zip 读取classpath资源 序列化 Reader Writer PrintStream和PrintWriter 日期与时间 基本概念 Date和Calendar LocalDateTime ZonedDateTime DateTimeFormatter Instant 最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试

2020-02-25

Qt Mysql超时断开后自动重连完美解决方法

网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...

2018-03-17

PHP编程_第3版[programming PHP]完整带书签

PHP编程(第3版) 凯文·塔特罗 (Kevin Tatroe) (作者), 彼得·麦金太尔 (Peter MacIntyre) (作者), 拉斯马斯·勒多夫 (Rasmus Lerdorf) (作者), 赵戈戈 (译者), 易国磐 (译者), 张鹏飞 (译者) 高清 pdf 完整版 带书签

2016-10-02

零工具打造安全U盘

零工具打造安全U盘 介绍了如何用系统的安全设置来设置u盘

2012-10-09

空空如也

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

TA关注的人

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