- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 libhv学习笔记7:IO事件之write事件
今天主要分析下libhv中的IO事件中的写事件的过程。如有理解错误,欢迎批评指正。还是先看接上一篇的源码int main(){ hloop_t* loop = hloop_new(0); // 客户端fd int connFd = ConnectTimeout("127.0.0.1",1234); //io事件 hio_t * hio = hio_get(loop,connFd); //设置read 回调函数 hio_setcb_read
2021-05-16 20:16:26 1015
原创 libhv学习笔记6:IO事件之read事件
今天主要分析下IO事件中的读事件的过程。如有理解错误,欢迎批评指正。int main(){ hloop_t* loop = hloop_new(0); // 客户端fd int connFd = ConnectTimeout("127.0.0.1",1234); //io事件 hio_t * hio = hio_get(loop,connFd); //设置read 回调函数 hio_setcb_read(hio,on_rev); /
2021-05-13 21:13:14 1032
原创 libhv学习笔记5:heap.h分析
上一篇分析了libhv里面用到的链表的实现,今天我们看一下定时器超时事件中用到的堆得实现。堆定义1.堆中的某个节点总是不大于或不小于其父亲节点2.堆总是一颗完全二叉树那么,最大堆就是父节点比每一个子节点值都要大。最小堆就是父节点比每一个子节点值要小。例子(最小堆)完全二叉树的定义对于一个树高为h的二叉树,如果其第0层至第h-1层的节点都满。如果最下面一层节点不满,则所有的节点在左边的连续排列,空位都在右边。这样的二叉树就是一棵完全二叉树源码分析结构体的定义struct heap
2021-05-02 17:38:59 921 4
原创 libhv学习笔记4:list.h分析
在libhv中,用到了链表的数据结构(比如说,struct hloop_s中的 struct list_head idles),其定义和实现在list.h中。首先看一下结构体:struct list_head { struct list_head *next, *prev;};#define list_node list_head可以看到,只包含了两个指针,而没有数据域,后面看一下到底是怎么使用的。初始化结构体static inline void list_ini
2021-04-28 21:27:40 508
原创 libhv学习笔记3:hloop_process_events分析
hloop_process_events函数在上一篇中已经看过,今天深入看一下这部分代码。如有理解错误,欢迎批评指正。代码总览// hloop_process_ios -> hloop_process_timers -> hloop_process_idles -> hloop_process_pendingsstatic int hloop_process_events(hloop_t* loop) { // ios -> timers -> idles
2021-04-26 20:36:51 922
原创 libhv学习笔记2:从hloop_test入手
从本文开始,由sample入手,逐渐理解libhv的源码。如有理解错误,欢迎批评指正。main()函数int main() { // memcheck atexit HV_MEMCHECK; hloop_t* loop = hloop_new(0); // test idle and priority for (int i = HEVENT_LOWEST_PRIORITY; i <= HEVENT_HIGHEST_PRIORITY; ++i) {
2021-04-24 21:56:27 2150 5
原创 libhv学习笔记1:安装及Sample运行
libhv安装及example运行前言下载地址编译example执行修改example,重新编译总结前言libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。已经被为awesome-c和awesome-cpp所收录。我希望从example入手,一步一步剖析libhv源码的精髓。算是下载地址地址:https://gitee.com/libhv/libhv.gitgit clone https://gitee.com/libhv/libh
2021-04-22 23:38:40 1203
原创 树莓派下pytorch-1.8安装完整实践
1. 安装树莓派64位操作系统下载链接:https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip安装过程请自行百度默认账号:pi默认密码:raspberry2.安装pytorch1.8.0下载地址:https://pypi.org/project/torch/#files注意:修改名字为torch-1.8
2021-03-09 23:24:19 2315 5
原创 numpy 转c指针【python调用c代码】
在写《瘦脸实现【Python】》时候实现了在python环境下的瘦脸功能,但实际使用起来,python的处理速度实在太慢,让人难以接受,所以用c语言重新实现了一次,速度有了很大的提升。因为之前的UI是用python搭建的,所以想通过python调用c的方法实现算法的加速。因为联想到opencv也有python的API,在python下,图像处理的速度也很快,所以就查找了opencv通过怎样的方...
2018-09-08 15:27:46 3902 4
原创 瘦脸实现【Python】
对实现人脸瘦脸简单功能的一个记录,大概流程如下:1.使用dlib检测出人脸关键点2.使用Interactive Image Warping 局部平移算法实现瘦脸瘦脸的原理可以参照这篇博客https://blog.csdn.net/grafx/article/details/70232797?locationNum=11&fps=1下载地址:https://download....
2018-09-05 10:44:51 9641 8
原创 改进zhang方法图像细化(单像素)
本文主要实现实现了和讲解图像细化算法,引用论文 “牟少敏,杜海洋,苏平,查绪恒,陈光艺.一种改进的快速并行细化算法[J].微电子学与计算机,2013,(第1期)” ,免费下载地址点击打开链接(直接在http://www.ucdrs.superlib.net/中搜索也可)。zhang的算法是经典的细化算法,具有速度快、保持细化后 曲线的连通性和无毛刺产生等优点,但它细化后的结果不能保证曲线纹路为
2017-01-20 09:17:29 7930 1
原创 Qt下图像自定义显示控件
一个简单的继承QWidget的图像显示控件,可以用来显示摄像机采集得图像,支持缩放和图像的拖动,之前用过QLabel,但是在高帧率的采集速度下,会很卡。可以根据需求,自己添加一些绘图操作。使用上,只要在项目中添加两个文件,然后在UI界面中添加一个Widget再提升就可以了。头文件imagewidget.h#ifndef IMAGEWIDGET_H#define IMAGEWIDGET_H
2017-01-07 15:04:37 2308 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人