自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HW的博客

编程之路,其路漫漫,吾将上下而求索

  • 博客(168)
  • 资源 (5)
  • 收藏
  • 关注

原创 libhv教程00--目录

`libhv`是一个比`libevent、libev、libuv`更易用的跨平台国产网络库,用来开发`TCP/UDP/SSL/HTTP/WebSocket `客户端/服务端。项目地址:码云镜像:QQ技术交流群:**739352073**

2021-02-07 01:28:37 22866 10

原创 一个程序猿的自传

吾乃荆楚人士也,生于癸酉仲秋,时年计生正严,罚两猪乃降生。自幼留守,虽顽劣亦好学,每放学玩耍,必先完成作业。故小初九年间,名列前茅,师友皆爱之,可谓无忧无虑,无拘无束。及高中,偏理不喜文,求解方程得心应手,默写单词叫苦不堪。故高考以失利,报志愿于湖大,读电信之专业。几沉迷于游戏不可自拔,幸相见恨晚于编程,每每废寝忘食,不晓昼夜,终投身于码农。初来乍到至广州白云,公司名曰安居宝,起步于楼...

2020-04-30 15:51:15 4313 28

原创 c++编写HTTP API服务端/客户端最简单的库,没有之一

libhv是c++编写HTTP API 服务端/客户端最简单的库,没有之一。具有以下特性:跨平台(Windows, Linux, Mac);支持RESTful;支持application/json、application/x-www-form-urlencoded、multipart/form-data;内置web service文件服务和indexof service目录服务;

2020-01-20 19:44:51 34200 15

原创 Qt实战--多画面播放器项目

多画面播放器需求分析做一个类似VLC的播放器,能播放本地媒体文件、捕获设备、网络流;界面要求多画面监控网格,可自由切换多画面风格;概要设计使用Qt实现界面;使用OpenCV的VideoCapture获取视频帧;使用OpenGL渲染视频帧;详细设计界面设计截图编码实现编码部分我们放在后面章节分解,先贴出完整的项目github地址,欢迎clone和...

2018-06-21 18:00:33 13330 66

原创 ithewei的2023年度总结

2024年1月2日上午8点,我坐上了合肥到上海的高铁,结束了短暂的元旦假期,赶往工作地。没有过多的告别,相亲相爱一家人微信群里,我发了一句,“出发了,新的一年,新的旅途”,大家祝我一路顺风。吃着老妈给我准备的早餐,有热乎的发糕、水煮蛋还有牛奶,我心里有些不舍。刷了会手机,消息栏跳出一则评论,”该写2023年度总结了“,我冥思了会,侧头望向窗外,树木、农田、电线杆都快速后退,我的思绪也随之回到过去。

2024-01-02 22:17:16 1270 6

原创 ithewei的2022年度总结

窗外的雨,顺着晒衣架汇聚成豆大的珠,落到一楼庭院顶棚上,嘀嗒不停;路上的车,由远及近,又由近及远,疾驰而过;床边的猫,也已入睡,时不时发出一两声细微的鼾声,憨态可掬;凌晨三点的大脑却异常的清醒,听声成画,不如提笔,陋文或成。真到下笔时,却又不知写点什么,只回忆起过往经历,有些竟记不清是何年何月所为,犹如数据库表里忘记了添加时间戳,只得翻看了手机相册和博客才串连起来,为了避免下次需要再次绞尽脑汁联想,何不就在今夜落库为安。

2023-01-16 00:12:44 1993 8

原创 国产网络库libhv开源四周年回顾

libhv是一个跨平台的c/c++网络库,本文写在libhv开源四周年之际,借机回顾了libhv的发展历程。

2022-08-28 10:10:44 5518 8

原创 libhv网络库源码剖析

此文归纳整理和libhv源码分析相关的文章,献给感兴趣钻研libhv源码的同学。如有其他同学有写过不错的libhv源码分析文章,可以联系我加上。文章目录: 事件循环和IO多路复用机制介绍、事件的定义以及数据结构介绍、事件的优先级机制、IO事件、定时器事件、空闲事件、自定义事件、心跳和保活机制、TCP如何处理粘包与分包、回显、聊天、代理三种经典服务实现详解、多线程/多进程服务端编程、网络编程十宗罪、致谢

2022-03-05 17:46:53 11497 5

原创 libhv教程19--MQTT的实现与使用

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备

2022-01-30 16:14:30 11487 3

原创 libhv教程18--动手写一个tinyhttpd

libhv作为一个高性能异步网络库,想要快速入门,莫过于动手实现一个tinyhttpd(即微型HTTP服务)。libhv examples目录下的 tinyhttpd.c 源代码包括注释在内不到400行,麻雀虽小,五脏俱全,代码绝对是工业级水准,可直接用于生产环境,不是和著名 Tinyhttpd 一样的玩具。通过这个示例你将掌握事件循环、TCP服务、定时器、拆包、HTTP协议 等核心功能。废话不多说,先上代码:/* * tinyhttpd * * @build make examples

2021-12-03 23:12:36 4124 2

原创 网络编程十宗罪

文章目录1、TCP没考虑粘包分包2、UDP没考虑丢包3、长连接没考虑应用层心跳4、大数据没考虑分片和流量控制5、客户端没考虑断线重连6、外网没考虑加密通信7、没有处理SIGPIPE8、大小端字节序问题9、多线程发送乱序问题10、串包问题1、TCP没考虑粘包分包TCP是面向连接的可靠协议,TCP是流式协议,创建TCP套接字的类型为SOCK_STREAMint sockfd = socket(AF_INET, SOCK_STREAM, 0);很多同学面试时对书上的话背诵如流,在实际TCP编程中却没有处

2021-11-14 16:39:56 15083 5

原创 libhv教程17--Qt中使用libhv

C++不少同学是使用Qt开发GUI界面程序的,而现在的程序里使用网络通信又是不可或缺的一环,使用libhv进行网络编程将是一个很好的选择,所以本章教程将展示如何在Qt中使用libhv。文章目录安装Qt安装cmake编译libhv编译examples/qt工程运行server/client代码注解安装QtQt官网地址:https://www.qt.io/Qt下载地址:https://download.qt.io/archive/qt/以下载Qt 5.14.2为例:下载地址:https://down

2021-10-11 14:14:19 6142 12

原创 libhv教程16--多线程/多进程服务端编程

本篇介绍服务端编程的多线程/多进程模式以及使用libhv如何实现。文章目录`one thread per connection`:每个连接一个线程`one loop per thread`:每个线程一个事件循环`multi-acceptor-processes`:多accept进程模式`multi-acceptor-threads`:多accept线程模式`one-acceptor-multi-workers`:一个accept线程+多worker线程lastone thread per connect

2021-09-18 16:24:30 6922 2

原创 libhv教程15--200行实现一个C++版protorpc框架

在上篇教程中,我们200行实现了一个纯C版的jsonrpc框架,使用的event模块+cJSON实现,本篇中我们将介绍200行实现一个C++版的protorpc框架,使用evpp模块+protobuf实现。evpp模块是event模块的c++封装,具体介绍见evpp/README.mdprotobuf是google出品的序列化/反序列化结构化数据存储格式,具体介绍可参考我的另一篇博客protobuf,也可参考protobuf官方文档protobuf安装git clone https://github

2021-08-28 13:47:34 3610 1

原创 libhv教程14--200行实现一个纯C版jsonrpc框架

使用libhv可以在200行内实现一个完整的jsonrpc框架,这得益于libhv新提供的一个接口hio_set_unpack,设置拆包规则后,内部会根据拆包规则处理粘包与分包,保证回调上来的是完整的一包数据,大大节省了处理粘包与分包的成本,该接口具体定义如下:typedef enum { UNPACK_BY_FIXED_LENGTH = 1, // 根据固定长度拆包 UNPACK_BY_DELIMITER = 2, // 根据分隔符拆包,如常见的“\r\n” U

2021-08-25 22:59:02 4108 1

原创 TCP服务入门篇:回显、聊天、代理三种经典服务实现详解

文章目录TCP回显服务TCP聊天服务TCP代理服务TCP回显服务examples/tcp_echo_server.c/* * tcp echo server * * @build make examples * @server bin/tcp_echo_server 1234 * @client bin/nc 127.0.0.1 1234 * nc 127.0.0.1 1234 * telnet 127.0.0.1 1234 */

2021-03-30 19:05:20 2497 1

原创 当今乱世,谁能夺得C++标准网络库宝座?

C++标准库最大的痛是什么,毋庸置疑,那就是缺少网路库,犹如三军之中缺少主帅。

2021-03-14 21:46:20 5063 1

原创 libhv教程13--创建一个简单的WebSocket客户端

WebSocket简介WebSocket 产生背景WebSocket 的定义WebSocket 握手过程WebSocket 通信协议示例代码js示例代码c++示例代码

2021-02-23 13:57:01 4613 5

原创 libhv教程12--创建一个简单的WebSocket服务端

示例代码参考examples/websocket_server_test.cpp#include "WebSocketServer.h"#include "EventLoop.h"#include "htime.h"using namespace hv;int main(int argc, char** argv) { if (argc < 2) { printf("Usage: %s port\n", argv[0]); return -10;

2021-02-23 13:52:00 5869 9

原创 libhv教程11--创建一个简单的HTTP客户端

简单的同步HTTP客户端示例简单的异步HTTP客户端示例完整的HTTP客户端示例

2021-02-23 13:40:27 7319 4

原创 libhv教程10--创建一个简单的HTTP服务端

简单的HTTP服务端示例完整的HTTP服务端示例压力测试

2021-02-23 13:22:11 12674 28

原创 libhv教程09--创建一个简单的UDP客户端

文章目录c版本c++版本c版本#include "hv/hloop.h"#include "hv/htime.h"void on_timer(htimer_t* timer) { char str[DATETIME_FMT_BUFLEN] = {0}; datetime_t dt = datetime_now(); datetime_fmt(&dt, str); printf("> %s\n", str); hio_t* io = (hio_

2021-02-19 21:03:08 2456 2

原创 libhv教程08--创建一个简单的UDP服务端

下文以UDP echo server为例,使用libhv创建UDP服务端。文章目录c版本c++版本c版本代码示例参考examples/udp_echo_server.c#include "hv/hloop.h"#include "hv/hsocket.h"static void on_close(hio_t* io) { printf("on_close fd=%d error=%d\n", hio_fd(io), hio_error(io));}static void on_r

2021-02-19 20:52:57 3292 4

原创 libhv教程07--创建一个简单的TCP客户端

创建一个简单的TCP客户端文章目录c版本c++版本c版本#include "hv/hloop.h"#include "hv/htime.h"void on_timer(htimer_t* timer) { char str[DATETIME_FMT_BUFLEN] = {0}; datetime_t dt = datetime_now(); datetime_fmt(&dt, str); printf("> %s\n", str); hio

2021-02-07 13:42:01 6252 1

原创 libhv教程06--创建一个简单的TCP服务端

下文以TCP echo server为例,使用libhv创建TCP服务端。- `setThreadNum`:设置IO线程数- `setMaxConnectionNum`:设置最大连接数- `setLoadBalance`: 设置负载均衡策略(轮询、随机、最少连接数)- `setUnpack`:设置拆包规则(固定包长、分界符、头部长度字段)- `withTLS`:SSL/TLS加密通信

2021-02-07 12:10:18 10873 9

原创 libhv教程05--事件循环以及定时器的简单使用

事件循环简介很多同学不理解事件循环的概念,所以这里有必要前置说明一下。对于大多数长时间运行程序来说,都会有主循环的存在。如窗口界面程序,就是等待键盘、鼠标等外设的输入,界面做出相应的变化。典型的如windows窗口消息机制// windows窗口消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg);}此循环所在的线程我们称

2021-02-07 01:06:06 10305 1

原创 libhv教程04--编写一个完整的命令行程序

编写一个完整的命令行程序首先,一个完整的命令行程序应该包含哪些功能?命令行参数解析配置文件解析打印帮助信息和版本信息信号处理日志pid文件如果是服务端长时间运行后台程序,还需要看门狗(崩溃自动重启)看看libhv是如何提供这些功能的,参考示例代码见hmain_test.cpp编译运行:$ c++ -std=c++11 examples/hmain_test.cpp -o bin/hmain_test -I/usr/local/include/hv -lhv$ bin/hmain

2021-02-06 13:05:08 5961 6

原创 libhv教程03--链库与使用

链库与使用在上一篇中,我们已经生成了头文件与库文件,接下来我们写个测试程序链库验证下。

2021-02-06 00:42:19 9944 11

原创 libhv教程02--编译与安装

编译与安装libhv提供了原生Makefile(这里仅指适用于类unix系统的Makefile)和cmake两种构建方式。Makefile命令行cmake命令行cmake图形界面

2021-02-05 22:19:39 17174 10

原创 libhv教程01--介绍与体验

介绍与体验名称由来libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了带非阻塞IO和定时器的事件循环。libhv的名称也正是继承此派,寓意高性能的事件循环High-performance event loop library。libhv能干什么编写跨平台c/c++程序;基于TCP/UDP开发自定义协议网络程序;编写HTTP客户端/服务端程序;参考学习价值;libhv和libevent、libev、libuv有什么不同libevent最为古老、有历史包

2021-02-05 19:19:04 12784 3

原创 纪念libhv上github trending

2020年11月15日,libhv上了github trending c语言榜第一名。特作此文以纪念。文章目录libhv为何物libhv发展历程libhv的定位libhv和libevent、libev、libuv有什么不同libhv后续规划更多参考资料libhv为何物libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。详细介绍见项目README项目地址:https://github.com/ithewei/libhv.git码云镜像:ht

2020-11-15 15:25:15 2309 4

原创 如何看待双非院校本科生,十面字节跳动,最终pass

最近,有同学留言想看字节跳动十面面经,今天它来了。面试流程面试前面试中面试后一面卧龙出山二面一战成名三面举世皆惊四面斩戟沉沙(BGM:凉凉)五面峰回路转六面这个技术官有点6七面我们聊聊人生吧八面来自太平洋彼岸的问候九面是时候展现真正的技术了十面取得真经(BMG:好嗨哟,感觉人生到达了颠峰)面试流程面试前“好呢,安排”,每轮面试前会有hr和你沟通时间,以短信和邮件通知,面试方式为牛客网视频链接。面试中自我介绍(3~5分钟)问项目问基础知识手写代码题(15

2020-10-24 22:33:23 2691 5

原创 libhv FAQ

Q:libhv名称由来Q:libhv和libevent、libev、libuv有什么不同Q:libhv的定位Q:libhv的发展规划Q:libhv性能如何Q:libhv稳定性如何,是否商用Q:libhv如何入门Q:libhv如何使用Q:libhv如何交叉编译Q:libhv在Windows下如何编译Q:Windows下编译不过Q:Windows下链接不过Q:如何开启SSL/TLS、https、wss功能Q:Windows下如何集成openssl

2020-07-30 23:15:19 5699 6

原创 nginx搭建流媒体服务器

nginx搭建流媒体服务器拉取代码仓库git clone https://github.com/nginx/nginx.gitgit clone https://github.com/arut/nginx-rtmp-module.git编译安装cd nginxauto/configure --with-http_ssl_module --with-http_mp4_module --with-http_flv_module --add-module=../nginx-rtmp-modulem

2020-07-02 18:16:15 641

原创 国产开源库libhv为何能被awesome-c和awesome-cpp收录

近日,国产开源库libhv为awesome-c、awesome-cpp所收录,让我们看一下这个异军突起的libhv库究竟有何出色之处以及它和libevent、libev、libuv这些老牌网络库有何不同。

2020-03-17 14:58:25 7268

转载 C++流行的开源框架和库

C++ 资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-cpp 就是 fffaraz 发起维护的 C++ 资源列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更...

2020-03-05 01:39:25 6309 1

原创 开发工具清单

最近因为新换了工作,工具需要重新安装,这是一个很耗时的过程,通常网速慢、电脑差的话一天都没法完成,安装过程中还可能出现些许问题安装Windows操作系统使用U盘启动盘,设置BIOS从U盘启动,安装Win7 SP1专业版,Win7一定要安装SP1,VS2012以上都需要SP1以上系统,从系统之家官网上下了个激活工具成功激活成正版分区助手自带的分区太弱了,最好下个分区助手 我...

2020-02-24 15:27:31 1820

原创 libhv接口手册

libhv是一个跨平台的类似libevent、libev、libuv的异步事件驱动库,但提供了更加接近原生的API接口和更加丰富的协议。libhv已广泛实用在公司的IOT平台、http API服务之中,正确性、稳定性、可扩展性、性能都有保证,完全开源,请放心使用。项目地址:https://github.com/ithewei/libhv.git码云镜像:https://gitee.com/i...

2020-01-14 17:28:46 29631 10

原创 libhv每日一学

文章目录libhv简介libhv应用程序框架libhv事件循环使用入门libhv日志模块介绍libhv如何实现跨平台的libhv中的宏艺术c语言如何实现c++的继承libevent、libev、libuv、libhv、boost.asio、poco、muduo七种echo-server实现对比libhv简介libhv是一个跨平台的类似libevent、libev、libuv的异步事件驱动库,但...

2020-01-09 11:37:10 18703 11

转载 grpc gitee镜像编译

git clone https://gitee.com/githubplus/grpc.gitcd grpcgit taggit checkout v1.20.0修改.gitmodules文件,替换其中的github源为gitee源[submodule "third_party/zlib"] path = third_party/zlib url = https://gitee.c...

2019-12-18 18:47:24 2744

HPlayer-master.zip

一个类似VLC的播放器,能播放本地媒体文件、捕获设备、网络流;自由切换画面风格,支持拖拽; 使用Qt实现界面; 使用FFmpeg获取帧,编解码,转码; 使用OpenCV处理图片; 使用OpenGL渲染视频帧;

2019-11-22

sourceinsight4破解版

破解安装见README.txt. 1、点击sourceinsight4088-setup.exe,安装source insighet 2、使用sourceinsight4.exe替换安装目录下的sourceinsight4.exe 3、启动sourceinsight4,会弹出输入License的提示框,选择Import a new license file,导入si4.pediy.lic文件即可

2018-02-01

opencv3.2编译生成好的库

这是使用OpenCV3.2源代码编译生成好的库,可用于VS2015开发,或者MinGW(例如QT)开发

2017-05-07

QRencode库(二维码)

开源的QRencoder库(二维码生成库),自己封装了下,并给出了demo

2017-03-16

空空如也

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

TA关注的人

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