- 博客(155)
- 资源 (5)
- 收藏
- 关注

原创 libhv教程00--目录
libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。项目地址:https://github.com/ithewei/libhv.git码云镜像:https://gitee.com/ithewei/libhv.gitQQ技术交流群:739352073libhv博客专栏:https://hewei.blog.csdn.net/category_9866493.htmllibhv源码分析:https://blog.csdn.net/qu1993
2021-02-07 01:28:37
295
1

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

原创 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目录服务libhv简...
2020-01-20 19:44:51
9836
12

原创 Qt实战--多画面播放器项目
多画面播放器需求分析做一个类似VLC的播放器,能播放本地媒体文件、捕获设备、网络流;界面要求多画面监控网格,可自由切换多画面风格;概要设计使用Qt实现界面;使用OpenCV的VideoCapture获取视频帧;使用OpenGL渲染视频帧;详细设计界面设计截图编码实现编码部分我们放在后面章节分解,先贴出完整的项目github地址,欢迎clone和...
2018-06-21 18:00:33
7355
39
原创 libhv教程13--创建一个简单的WebSocket客户端
示例代码参考examples/websocket_client_test.cpp#include "WebSocketClient.h"using namespace hv;int main(int argc, char** argv) { if (argc < 2) { printf("Usage: %s url\n", argv[0]); return -10; } const char* url = argv[1]; W
2021-02-23 13:57:01
60
2
原创 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
37
原创 libhv教程11--创建一个简单的HTTP客户端
文章目录简单的同步HTTP客户端示例简单的异步HTTP客户端示例完整的HTTP客户端示例简单的同步HTTP客户端示例同步http客户端接口模拟实现了python的requests#include "requests.h"int main() { auto resp = requests::get("http://www.example.com"); if (resp == NULL) { printf("request failed!\n"); } else
2021-02-23 13:40:27
32
原创 libhv教程10--创建一个简单的HTTP服务端
文章目录简单的HTTP服务端示例完整的HTTP服务端示例压力测试简单的HTTP服务端示例示例代码参考examples/http_server_test.cpp#include "hv/HttpServer.h"int main() { HttpService router; router.GET("/ping", [](HttpRequest* req, HttpResponse* resp) { return resp->String("pong");
2021-02-23 13:22:11
35
原创 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
42
原创 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
35
原创 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
69
原创 libhv教程06--创建一个简单的TCP服务端
下文以TCP echo server为例,使用libhv创建TCP服务端。文章目录c版本c++版本c版本代码示例参考tcp_echo_server.c#include "hv/hloop.h"void on_close(hio_t* io) {}void on_recv(hio_t* io, void* buf, int readbytes) { hio_write(io, buf, readbytes);}void on_accept(hio_t* io) { hi
2021-02-07 12:10:18
92
2
原创 libhv教程05--事件循环以及定时器的简单使用
事件循环简介很多同学不理解事件循环的概念,所以这里有必要前置说明一下。对于大多数长时间运行程序来说,都会有主循环的存在。如窗口界面程序,就是等待键盘、鼠标等外设的输入,界面做出相应的变化。典型的如windows窗口消息机制// windows窗口消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg);}此循环所在的线程我们称
2021-02-07 01:06:06
107
原创 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
78
原创 libhv教程03--链库与使用
链库与使用在上一篇中,我们已经生成了头文件与库文件,接下来我们写个测试程序链库验证下。测试代码如下:#include "hv/hv.h"int main() { char exe_filepath[MAX_PATH] = {0}; char run_dir[MAX_PATH] = {0}; // 获取hv编译版本 const char* version = hv_compile_version(); // 获取可执行文件路径 get_execut
2021-02-06 00:42:19
100
原创 libhv教程02--编译与安装
编译与安装libhv提供了原生Makefile(这里仅指适用于类unix系统的Makefile)和cmake两种构建方式。为什么不额外提供vs工程或xcode工程?因为个人维护Makefile和cmake两套构建方式已经很累了,想将更多的时间和精力放在内容生态完善上,而不是工程构建维护上。况且cmake已经可以满足生成各种平台的工程。CLICLI即Command Line Interface命令行界面。鄙人强烈推荐使用的一种,特别是对于服务端开发人员,必备技能。对于类Unix系统平台来说,推荐使用
2021-02-05 22:19:39
105
原创 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
167
1
原创 纪念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
789
2
原创 如何看待双非院校本科生,十面字节跳动,最终pass
最近,有同学留言想看字节跳动十面面经,今天它来了。面试流程面试前面试中面试后一面卧龙出山二面一战成名三面举世皆惊四面斩戟沉沙(BGM:凉凉)五面峰回路转六面这个技术官有点6七面我们聊聊人生吧八面来自太平洋彼岸的问候九面是时候展现真正的技术了十面取得真经(BMG:好嗨哟,感觉人生到达了颠峰)面试流程面试前“好呢,安排”,每轮面试前会有hr和你沟通时间,以短信和邮件通知,面试方式为牛客网视频链接。面试中自我介绍(3~5分钟)问项目问基础知识手写代码题(15
2020-10-24 22:33:23
585
1
原创 libhv FAQ
libhv是一个跨平台的类似libevent、libev、libuv的异步IO事件循环库,但提供了更加简单的API接口和更加丰富的协议(包括http、ftp、smtp、dns、icmp等)。libhv已广泛实用在公司的IOT平台、http API服务之中,正确性、稳定性、可扩展性、性能都有保证,完全开源,请放心使用。项目地址:https://github.com/ithewei/libhv.git码云镜像:https://gitee.com/ithewei/libhv.gitQQ技术交流群:7393
2020-07-30 23:15:19
2129
4
原创 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
262
原创 国产开源库libhv为何能被awesome-c和awesome-cpp收录
近日,国产开源库libhv为awesome-c所收录,让我们看一下这个异军突起的libhv库究竟有何出色之处。文章目录libhv简介比libevent、libuv更简单的API接口libhv提供的httpd性能媲美nginxlibhv是c++编写HTTP API服务端/客户端最简单的库跨平台libhv模块划分清晰,代码可读性高,值得初学者学习数据结构baseutilseventiowatcher...
2020-03-17 14:58:25
3224
转载 C++流行的开源框架和库
C++ 资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-cpp 就是 fffaraz 发起维护的 C++ 资源列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更...
2020-03-05 01:39:25
2123
原创 开发工具清单
最近因为新换了工作,工具需要重新安装,这是一个很耗时的过程,通常网速慢、电脑差的话一天都没法完成,安装过程中还可能出现些许问题安装Windows操作系统使用U盘启动盘,设置BIOS从U盘启动,安装Win7 SP1专业版,Win7一定要安装SP1,VS2012以上都需要SP1以上系统,从系统之家官网上下了个激活工具成功激活成正版分区助手自带的分区太弱了,最好下个分区助手 我...
2020-02-24 15:27:31
1206
原创 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
6286
2
原创 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
9684
5
转载 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
1198
原创 gettext 多语言翻译
// myapp.c#include <stdio.h>#include <locale.h>#include <libintl.h>#define _(str) gettext(str)#define TEXT_DOMAIN "myapp"int main() { setlocale(LC_ALL, ""); bindtex...
2019-12-13 15:55:30
481
转载 VS2008 ~ VS2019下载地址
VS2005 Professional 官方90天试用版英文版:http://download.microsoft.com/download/e/0/4/e04de840-8f6b-4fe5-ac3d-d3ad8e4c2443/En_vs_2005_Pro_90_Trial.img中文版:http://download.microsoft.com/download/5/c/2/5c2840fd...
2019-10-10 18:07:21
1429
原创 跨平台ls/dir实现
unix平台使用 opendir -> readdir、stat-> closedirwindows平台使用FindFirstFile -> FindNextFile -> FindClose#ifdef _WIN32#include <windows.h>#include <io.h>#else#include <dirent.h...
2019-08-22 18:30:48
416
1
原创 镜像收集
中科院开源软件协会:www.opencas.org网易开源镜像站:http://mirrors.163.com/搜狐开源镜像站:http://mirrors.sohu.com/浙江大学开源软件镜像站:http://mirrors.zju.edu.cn北京理工大学开源软件镜像站:http://mirror.bit.edu.cn华中科技大学开源软件镜像站:http://mirrors.hus...
2019-08-07 15:10:22
250
原创 IOCP踩坑
IOCP函数创建IOCP句柄和关联套接字到IOCP句柄,都是通过CreateIoCompletionPort创建IOCP句柄HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);关联套接字到IOCP句柄CreateIoCompletionPort((HANDLE)fd, iocp, 0, 0);...
2019-07-31 18:01:42
538
原创 nginx交叉编译
nginx源码没有使用automake、autoconf、libtools这一套标准生成Makefile文件工具,而是自己写了一套脚本,位于源码auto目录下,使用auto/configure生成Makefile在目标平台机器上编译是没有问题的,但交叉编译时因为无法执行目标平台的可执行程序,导致configure报错。错误记录如下:1、checking for C compiler ......
2019-07-15 15:09:13
1059
1
原创 linux kernel调试
文章目录kernelbusyboxqemugdblinux启动流程POST-->BIOS-->MBR-->grub-->kernel-->initrd-->sbin/initkernel以linux-2.6.39内核版本为例:// 源码下载wget https://mirror.tuna.tsinghua.edu.cn/kernel/v2.6/li...
2019-06-03 20:18:09
831
1
原创 一键生成项目脚本
#!/bin/bashmkdir -p include lib src bin doc etc 3rd/include 3rd/lib disttouch README.md BUILD.md RELEASE.md Makefile .gitignoregit init# personalgit submodule add https://github.com/ithewei/hw....
2019-04-12 19:19:53
719
3
原创 交叉编译工具链设置环境变量脚本
#!/bin/bashprint_help() {cat <<EOFUsage: commandcommand: export cross_compiler unsetexample: source ./toolchain.sh export arm-linux-androideabi source ./toolchain.sh unse...
2019-04-12 19:16:22
1064
原创 linux虚拟机扩展磁盘
diskpartlist disklist volumeselect vdisk file="F:\ubuntu14.04.vhd"expand vdisk maximum=102400exitexpand 单位默认为MB, 102400MB=100GBsudo fdisk -lsudo fdisk /dev/sdampd3np3wqsudo reboot no...
2019-04-01 19:34:12
2141
1
原创 C语言跨平台获取ip、mac
C语言跨平台获取ip、macC语言获取ip、mac地址等信息一直没有一个跨平台的接口,之前通过gethostname、gethostbyname尝试,却只能得到127.0.0.1 localhost的ip地址,不得不自己封装一个,Windows、unix平台下分别实现在Windows平台下使用IPHlpApi.h提供的GetAdaptersAddresses、GetAdaptersInfo...
2019-02-20 18:53:12
1298
3
原创 Makefile模板
具体Makefile语法就不多说了,请看源码就明白了######################configure################### OS=Windows,Linux,Android# ARCH=x86,x86_64,arm,aarch64# CC# CXX# CPPFLAGS += $(addprefix -D, $(DEFINES))# CPPFLAGS +=...
2019-02-12 19:44:50
826
原创 nginx学习笔记--main模板
文章目录main流程设置进程标题解析命令行pid文件信号控制master-worker模型完整的main模板main流程保存命令行解析命令行解析配置文件master进程创建多个worker进程,循环处理信号worker进程循环处理事件和定时器设置进程标题nginx在unix系统中能设置进程标题,这是一个很酷炫的功能,看看是怎么实现的呢#ifdef __unix__/* *...
2019-02-12 19:27:50
430
HPlayer-master.zip
2019-11-22
sourceinsight4破解版
2018-02-01
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝