- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 Windows 编译tensorflow1.3-gpu源码
一、环境准备:vs2015(cuda8.0最新只支持到vs2015,所以vs2017及以上编译不过)cuda8.0下载地址cudnn6.0下载地址swig-win下载地址cmaketensorflow-r1.3源码下载地址二、安装软件1.安装vs2015默认安装即可2.安装cuda8.0默认安装即可配置环境变量3.安装cudnn6.0解压cudnn6.0压缩包,把对应文件放到cuda的安装目录下cudnn64_6.d...
2020-11-16 14:52:43
248
原创 基于libevent的http接口封装(三)
这篇文章主要是讲解一下最核心的http请求和http ack部分的逻辑。在这里我封装了一个核心功能类HttpClientHelper,对外提供了几个方法:1.bool is_start() 用来判断改服务是否启动2.bool start() 启动服务3.void stop() 停止服务4.get()、post()、download()、upload() http操作方法HttpClien...
2019-12-03 21:09:53
705
原创 基于libevent的http接口封装(二)
一、定义请求事件和业务回调函数等数据结构1.1 http请求类型//http请求类型enum Enum_HttpType{ //get请求 HTTPTYPE_GET, //post请求 HTTPTYPE_POST, //download请求 HTTPTYPE_DOWNLOAD, //upload请求 HTTPTY...
2019-11-07 22:48:25
714
原创 基于libevent的http接口封装(一)
一、整体设计图如下:二、原理这是一个高性能的网络请求库,同时支持大量网络请求并发。设计的客户端是多线程架构,外部统一请求入口,通过负载均衡器选择一个libevent服务,然后把请求封装成一个事件放在线程池里,等待处理。等处理完成后,通过回调函数回调给调用的业务逻辑。三、接下来会从上次调用接口到底层实现逻辑逐步讲解实现逻辑。也可以用来后面供自己学习。...
2019-11-07 22:25:25
642
原创 ffmpeg:提取视频中的音频
接上篇视频转图片,大致流程都是一样的。这里仅列出不同的地方1.获取音频流 int audio_stream_index = -1; for (int i = 0; i < av_format_context->nb_streams; ++i) { if (av_format_context->streams[i]->codec->codec_...
2019-11-07 10:16:39
639
原创 ffmpeg:视频逐帧保存图片
一、通用操作打开视频文件、找到编码器,然后while循环读取每一帧,使用完后释放资源av_register_all(); AVFormatContext *av_format_context = avformat_alloc_context(); int open_input_result = avformat_open_input(&av_format_context...
2019-11-06 11:31:23
1704
原创 QString类arg方法扩展二
之前写了一篇关于扩展arg方法的文章,后来使用期间,发现有2个问题:1.第一个入参不能是数字2.入参个数过多时,会出现溢出问题多以针对这两个问题,重新优化了一下,这次算是完美了,哈哈哈#ifndef QSTRINGEX_HPP#define QSTRINGEX_HPP#include <QString>class QStringEx : public...
2019-10-15 20:56:45
258
原创 union的常见使用场景
概念:1.联合体union类似于结构体struct2.联合体用同一段内存单元存放不同数据类型的成员,在使用时,一次只能使用其中的一个成员3.它的所有成员相对于基地址的偏移量都为04.union的大小取决于它所有的成员中,占用空间最大的一个成员的大小,并且union的大小要能被其他成员的大小所整除应用:1.用来节省内存空间这个就很容易理解了,多个变量使用同一处内存。2...
2019-10-15 20:36:17
3514
原创 QString类arg方法扩展
在使用QString的arg方法时,是一件很方便的事情,例如:QString("%1,2%").arg("10").arg("20") //10,20但是如果是下面的场景,对于这样场景我们期望得到的结果是:%2,20。QString("%1,%2").arg("%2").arg("20") //20,20实际中肯定不会这么简单啦,因为arg()方法的参数在运行期间有可能是任何值,...
2019-06-12 15:26:01
1618
原创 OpenSSl编译总结
今天抽空把OpenSSl编译了一下,这里简单记录下一、下载activePerl并安装(默认即可)https://www.activestate.com/products/activeperl/二、下载openssl并解压https://github.com/openssl/openssl三、打开VS命令行窗口,切换到openssl根目录执行一下命令:1)设置环境pe...
2019-06-05 11:53:49
697
原创 基于libevent的多线程Server实现
最近在学习libevent,写了一些测试的例子,最开始是用共享内存实现的,后来改成了多线程。而且很多细节没有考虑。先存下档,后面再改(不改了)main.cpp#include "stdafx.h"#include<stdio.h> #include<string.h> #include<errno.h> #include<even...
2019-06-04 17:56:12
1841
原创 基于C++11实现的线程池
最近在整理之前写的一些东西,方便以后查看实现的主要原理是:一个同步队列,外部往同步队列里添加任务,然后唤醒线程有任务需要处理,线程取出任务即可。同步队列SyncQuene.hpp#include <functional>#include <mutex>#include <list>template<typename T>c...
2019-06-04 17:42:46
1118
原创 Windows进程通信--共享内存(三)
基于前面的文章,这次对共享内存简单的封装一下,使得共享内存的使用更为容易。为了代码的简单,这次封装的也都是同步的共享内存,如果需要支持异步的话,引入线程池(ShareMemory::writeData里面的功能放在线程里面来做)即可。也不是特别复杂。代码如下:ShareMemoryHelper.h#ifndef SHAREMEMORYHELER_H#define SHAREME...
2019-04-15 19:24:26
229
1
原创 Windows进程通信--共享内存(二)
一、问题:上篇文章留下了一些问题,这次主要解决以下两个问题:1.往共享内存写数据时,并不确认共享内存里面的数据是否已经被处理过了2.发送数据大小大于共享内存大小时,会存在数据丢失问题二、实现方式:1.增加一个读事件,如果共享内存里面的数据被消费调了,则发送该事件2.增加发送数据的长度,当读取到的总数据长度等于发送的长度时,调用数据处理函数三、代码Shar...
2019-04-15 16:03:09
337
原创 Windows进程通信--共享内存(一)
一、知识点主要使用了以下几个函数,具体入参等含义可以百度1.CreateFileMapping、OpenFileMapping、MapViewOfFile2.CreateEvent、SetEvent、ResetEvent、WaitForSingleObject二、功能逻辑很简单,就是:1.先根据名称打开共享内存,打开失败的话,就去创建。然后调用MapViewOfFil...
2019-04-15 09:18:05
381
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人