自定义博客皮肤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的博客

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

  • 博客(157)
  • 资源 (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 1811 2

原创 自传

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

2020-04-30 15:51:15 2041 15

原创 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 12060 17

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

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

2018-06-21 18:00:33 8112 43

原创 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 158

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

当今乱世,谁能夺得C++标准网络库宝座?各编程语言HTTP请求对比c: libcurlc#: RestSharpgo: net/httpjava: OKHttpphp: HttpRequestpython: requestsruby: net/httpnodejs: http对比结论c/c++网络库对比libeventlibevlibuvlibhvasio畅怀未来C++标准库最大的痛是什么,毋庸置疑,那就是缺少网路库,犹如三军之中缺少主帅。java、c#

2021-03-14 21:46:20 1983

原创 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 321 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 321 2

原创 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 355 1

原创 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 582 4

原创 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 143 1

原创 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 161

原创 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 294

原创 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 562 3

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

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

2021-02-07 01:06:06 590 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 490

原创 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 709

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

编译与安装libhv提供了原生Makefile(这里仅指适用于类unix系统的Makefile)和cmake两种构建方式。为什么不额外提供vs工程或xcode工程?因为个人维护Makefile和cmake两套构建方式已经很累了,想将更多的时间和精力放在内容生态完善上,而不是工程构建维护上。况且cmake已经可以满足生成各种平台的工程。CLICLI即Command Line Interface命令行界面。鄙人强烈推荐使用的一种,特别是对于服务端开发人员,必备技能。对于类Unix系统平台来说,推荐使用

2021-02-05 22:19:39 984

原创 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 1058 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 960 2

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

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

2020-10-24 22:33:23 813 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 2475 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 277

原创 国产开源库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 3686

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

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

2020-03-05 01:39:25 2615

原创 开发工具清单

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

2020-02-24 15:27:31 1250

原创 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 7368 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 10766 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 1330

原创 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 506

转载 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 1679

原创 跨平台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 430 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 276

原创 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 610

原创 nginx交叉编译

nginx源码没有使用automake、autoconf、libtools这一套标准生成Makefile文件工具,而是自己写了一套脚本,位于源码auto目录下,使用auto/configure生成Makefile在目标平台机器上编译是没有问题的,但交叉编译时因为无法执行目标平台的可执行程序,导致configure报错。错误记录如下:1、checking for C compiler ......

2019-07-15 15:09:13 1155 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 863 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 792 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 1113

原创 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 2213 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 1343 3

HPlayer-master.zip

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

2019-11-22

QRencode库(二维码)

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

2017-03-16

opencv3.2编译生成好的库

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

2017-05-07

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

UINX环境高级编程第三版(英文版)

读英文版不仅可以锻炼你的阅读英文文献水平,同时更加接近技术的原意,强烈推荐读英文版技术文档

2017-03-10

空空如也

空空如也

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

TA关注的人 TA的粉丝

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