自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

迷路的专栏

迷路的导航

  • 博客(49)
  • 资源 (10)
  • 收藏
  • 关注

原创 Jenkins执行git命令报错Host key verification failed解决方法(Windows)

环境:Windows git,(不是Linux系统,在网上找到的绝大部分都是linux下如何如何操作的,)问题:Windows安装的jenkins,登录账户打开git bash,执行git pull等一系列命令,是可以成功执行,但是在Jenkins的网页中执行git的命令时,提示d:\src>git pull Host key verification failed.fatal: Could not read from remote repository.Please make su

2020-07-21 14:52:46 3436 5

原创 Intel Media SDK(QSV)参数说明(未完成)

Intel硬件编解码,MSDK一些参数的说明一、编码部分mfxVideoParam常用的参数mfxVideoParam.mfx.CodecId : 编码为H.264格式时,设置为MFX_CODEC_AVC,其他参数类型包括MFX_CODEC_HEVC、MFX_CODEC_MPEG2、MFX_CODEC_VC1、MFX_CODEC_CAPTURE、MFX_CODEC_VP9GOP设置:mfxVideoParam.mfx.GopPicSize当前GOP中画面的个数,若GopPicSize=.

2020-06-03 18:11:30 3809

原创 ffmpeg解码的软解及硬解(cuda和qsv)使用方法

对ffmpeg不是很熟悉,在使用的过程中遇到了很多坑,总结下,避免以后再遇到类似情况版本兼容问题: 本次使用的ffmpeg版本是4.2,解码的调用方式为: int32_t iRet = -1; // 最后一个包解码完成后,需要取完解码器中剩余的缓存帧; // 调用avcodec_send_packet时塞空包进去,; // 解码器就会知道所有包解码完成...

2020-05-08 14:16:07 13585 8

原创 FFmpeg 4.1源码Windows vs2015编译及过程中部分错误解决

在VS2015环境下,基于FFmpeg 4.1版本的源码进行编译编译过程参照 :Windows平台下编译FFmpeg以及官方指导文档 :官方编译指导文档其中CSDN上的博客大致上是官方文档的一个中文翻译在搭建环境的过程中遇到的一些问题,Google了半天终于算是解决了。。。注意项:1、如果是编译32位,也就是x86,需要使用的是“VS2015 x86 本机工具命令提示符...

2019-08-23 20:58:57 942

原创 Windows几种sleep精度的测试,结果基于微秒

Windows几种sleep精度的测试在Windows环境下使用Sleep的时候,经常会遇到明明Sleep了1ms,结果被唤醒时所消耗的时间大于1ms,对于那些精确度稍微高一点的Sleep控制时序,就不起作用了,众所周知Windows的Sleep是基于毫秒级别的,如果需要精确到微秒级,需要另辟蹊径本文总结了几种常用的控制时序的方式,可以作为一个参考,测试出来的数值并不一定准确,我在我电...

2019-08-15 16:57:19 28714 22

原创 OBS视频数据输出流程(模块加载,编码,推流)详细说明

声明:本文章内容仅代表个人观点,不能保证完全的正确性,仅供参考!先上个自己画的图,结合流程图和文字解释,理解起来会更快些1、视频输出初始化 程序运行时,初始化OBS,视频相关的初始化是再mainWindow中进行的 OBSApp::OBSInit() -> mainWindow->OBSInit() InitBasicConfig()读取appdata目录下配置文...

2018-10-19 13:45:58 11798 3

原创 OBS音频数据混音、编码、推流数据流程

声明:文章内容仅代表个人观点,不保证描述的准确性,仅供参考!音频的数据流程走向,有些描述不正确的,需要自己看代码再理解理解了,先上个流程图吧,凑合着看 文字描述1、<audio-io.c> input_and_output (struct audio_output *audio, uint64_t audio_time, uint64_t prev_time) ...

2018-10-15 15:22:04 7816 7

原创 OBS推流模块详细流程图

自制的OBS推流模块的流程图,仅包含推流

2018-08-08 11:23:23 5852 5

转载 C++设计模式:单例模式

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。       单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做

2015-07-29 10:16:09 542

转载 Windows IOCP 完成端口(CompletionPort)详解

手把手叫你玩转网络编程系列之三   完成端口(Completion Port)详解                                                             ----- By PiggyXP(小猪)前 言         本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿

2015-07-29 09:33:33 1100 2

转载 epoll的LT和ET使用EPOLLONESHOT

epoll的总结之四LT和ET使用EPOLLONESHOT在前面说过,epoll有两种触发的方式即LT(水平触发)和ET(边缘触发)两种,在前者,只要存在着事件就会不断的触发,直到处理完成,而后者只触发一次相同事件或者说只在从非触发到触发两个状态转换的时候儿才触发。这会出现下面一种情况,如果是多线程在处理,一个SOCKET事件到来,数据开始解析,这时候这个SOCKET又来了同样一个这样的事

2015-07-16 14:10:27 16069 3

转载 C++ 线程池,任务池实现实例

commondef.h复制代码 代码如下://单位秒,监测空闲列表时间间隔,在空闲队列中超过TASK_DESTROY_INTERVAL时间的任务将被自动销毁const int CHECK_IDLE_TASK_INTERVAL = 300;//单位秒,任务自动销毁时间间隔const int TASK_DESTROY_INTERVAL = 60;//监控线程池是否为空时间间

2015-07-15 16:36:00 3753

转载 linux 内存泄露,数组越界检测工具valgrind

Linux c/c++上常用内存泄露检测工具有valgrind, Rational  purify。Valgrind免费。Valgrind可以在 32位或 64位 PowerPC/Linux内核上工作。Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind,  Callgrind,Massif。下面分别介绍个工具的作用:Memchec

2015-07-15 16:33:11 4697

原创 windows 编译libxml2 64位及32位都可以使用

1、libxml2的源码版本为libxml2-2.9.0,libxml2需要使用到iconv.lib,所以先把iconv.lib编译出来iconv.lib源码版本为1.13.12、新建一个VC空工程(libIconv)(1)libIconv工程下新建一个文件夹Iconv(2)将下载的库中lib文件夹下的所有文件拷贝到这个文件夹下(3)将烤入到Iconv文

2015-06-04 15:56:32 5904 1

原创 容器中使用erase的正确姿势(List Iterator Not Incrementable)

使用容器中的erase遇到"List Iterator Not Incrementable"问题,正确食用erase的姿势,以list为例举个例子:1.list sList;list::iterator sP;sList.push_back(1);sList.push_back(3);sList.push_back(5);sList.push_back(7);f

2015-06-01 11:12:53 688

转载 windows磁盘相关API实践说明

原帖地址:http://www.cnblogs.com/matrix-r/p/3288886.htmlAPI的列表如下,网上找的,我觉得还是蛮详细的:磁盘和驱动器管理APIGetLogicalDrivers      获取主机中所有的逻辑驱动器,以BitMap的形式返回.GetLogicalDriverString   获取主机中所有的逻辑驱动器,以

2015-04-23 15:55:13 1092

转载 libxml2 主要函数用法

许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能。下面的列表列出了libxml的主要函数及其用法说明。1.   全局函数说明头文件引用xml2config --cflags库文件引用xml2config --libs主要头文件parse.htree.hxpath.

2015-04-21 10:21:16 673

转载 libxml2剖析(1):功能特性

1、概述    本文整理自官方页面http://xmlsoft.org/。    Libxml2是一个用来解析XML文档的函数库。它用C语言写成,并且能为多种语言所调用,例如C语言, C++, C#, Python, Kylix/Delphi, PHP, Ruby, Pascal, Tcl等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种

2015-04-16 17:04:38 739

转载 libxml2剖析(2):编译

1、Linux/Unix下的编译    内容整理自http://xmlsoft.org/FAQ.html中一些部分。    跟大多数UNIX库一样,libxml2的编译遵循以下“标准”:[plain] view plaincopygunzip -c xxx.tar.gz | tar xvf -  (或者tar xzvf libxml2-xxxx.tar.gz) 

2015-04-16 17:03:59 1212

转载 libxml2剖析(3):使用教程

本文整理自官方使用教程http://xmlsoft.org/tutorial/index.html。    示例文档story.xml如下:[html] view plaincopyxml version="1.0"?>  story>    storyinfo>      author>John Fleckauthor>      datewritten>June

2015-04-16 17:00:30 1658

转载 socket编程 及select poll epoll示例

1、关于字节排序    网际协议采用大端字节序,来传输多字节整数。    系统提供了转换的宏定义,如果主机与网际协议相同,则宏定义为空。2、客户端    socket -> connect(阻塞,三次握手)-> rcv3、服务器端    socket -> bind -> listen -> accept(阻塞,三次握手)-> send4、函数介绍         a..socket 

2015-04-09 17:42:42 986

原创 ubuntu 下VIM安装YourCompleteMe(中间问题已解决)

要安装YouCompleteMe ,vim须支持python。看是否支持,可以在vim中:version 查看, 如果python前有+号,就是支持,减号就是不支持。如果不支持,需要以编译安装方式重新安装vim。编译配置选项:./configure --with-features=huge --enable-pythoninterp --enable-python3interp --e

2015-03-12 10:49:29 4637

原创 VIM常用配置文件

set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 syntax onset history=100set mouse=a set selection=exclusive set selectmode=mouse,key set showmatchset autoindent set smartindent

2015-03-12 10:44:42 687

转载 C++单例模式实现

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。       单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做

2015-03-12 10:37:49 391

转载 inotify使用帮助

inotify是用来监视文件系统事件的机制,在linux 2.6.13内核中引入。该机制可以用来监视文件和目录,当文件或目录发生变化时,内核会将文件或目录的变化发送给inotify文件描述符,在应用层只需调用read()就可以读取这些事件,非常的方便。更好的是,inotify文件描述符还可以使用select、poll、epoll这些接口来监听,当有事件发生是,inotify文件描述符会可读。一

2015-03-10 10:04:35 5863 1

转载 tcp socket粘包分析

一 .两个简单概念长连接与短连接:1.长连接    Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接    Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如多个Client连接一个Server. 二 .什么时候需要考虑粘包

2015-03-06 13:36:42 573

原创 Qt Button控件的属性说明

按钮,常常被理解为触发一种动作请求或者命令,是与用户进行指令交互的操作。Qt中Button系列根据用途被划分为不同的定义,其实现框架为QAbstractButton提供按钮的通用性功能,此为抽象基类,所以无法进行实例化。用户需要继承定义此类,实现paintEvent,实现具体的展示。常见的Button有QPushButton,QToolButton,QRadioButton及QCheckBox。这

2015-03-06 11:00:36 30803 1

转载 Qt之QFileIconProvider(获取文件图标、类型)

Qt中获取系统图标、类型是通过QFileIconProvider来实现的,具体如下: 一、Qt获取系统文件图标1、获取文件夹图标 QFileIconProvider icon_provider; QIcon icon = icon_provider.icon(QFileIconProvider::Folder); 2、获取指定文件图标QFileInfo file_i

2015-03-04 09:23:54 2268 1

转载 Windows服务器高并发处理IOCP(完成端口)详细说明

本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚…..        这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法

2015-03-03 17:36:32 26722 11

转载 常用类—— QLineEdit

构造        QLineEdit 类支持以下构造函数:[plain] view plaincopyQLineEdit (QWidget *parent = 0);  QLineEdit(const QString &contents, QWidget *parent = 0);          其中 contents 表示编辑框中显示的内容。

2015-02-06 10:52:12 520

转载 QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

原文地址:QTableWidget详解(样式、右键菜单、表头塌陷、多选等)作者:奋斗ing丶孩子 在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚。所以,今天就在这里总结一下!  以下为个人模拟Windows资源管理器的一个表单   一、设置表单样式  table_widget-

2015-01-23 16:23:22 765

转载 linux锁机制

在linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。atomic(原子操作):所谓原子操作,就是该操

2014-12-22 11:48:41 897

转载 epoll用法说明,ET模式下的边缘触发处理同时多事件

epoll完整实例#include deque>#include map>#include vector>#include pthread.h>#include semaphore.h>#include time.h>#include sys/time.h>#include sys/shm.h>#include errno.h>#include sys/

2014-12-19 13:57:55 1246

转载 epoll详解

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 ep

2014-12-15 15:11:08 403

转载 Linux下高并发socket最大连接数所受的各种限制

1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit

2014-12-15 11:41:26 694

转载 IO多路复用之select总结

1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。

2014-12-15 11:37:11 751

转载 select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2014-12-15 11:36:13 402

转载 秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex?    使用多线程其实是非常容易的,下面这个程序的主线程会创建了一个子线

2014-12-11 17:53:39 396

转载 linux下快速遍历目录树方法

个人使用nftw()遍历指定目录的大小: 具体用法请参照下文说明#include #include #include #include #include #include #include #define _XOPEN_SOURCE 500#define OPENNUMS 1024off_t total_size;int back(const char *dirpath

2014-12-02 15:58:44 1881

原创 Qt直接打开已知的URL,也可用于下载

QDesktopServices::openUrl(QUrl(QLatin1String("http://blog.const.net.cn")));第一次打开的时候好像要比较长时间,第二次打开时就会很快速。bool QDesktopServices::openUrl ( const QUrl & url ) [static]从上面声明可以看了,该函数为静态函数,可直接使用

2014-10-20 15:03:23 728

Window C++延时测试代码

Windows微秒级延时/Sleep延时测试代码 在Windows环境下使用Sleep的时候,经常会遇到明明Sleep了1ms,结果被唤醒时所消耗的时间大于1ms, 对于那些精确度稍微高一点的Sleep控制时序,就不起作用了,众所周知Windows的Sleep是基于毫秒级别的,如果需要精确到微秒级,需要另辟蹊径

2020-12-18

Windows几种延时精确度的测试源码

Windows微秒级延时/Sleep延时测试代码 在Windows环境下使用Sleep的时候,经常会遇到明明Sleep了1ms,结果被唤醒时所消耗的时间大于1ms, 对于那些精确度稍微高一点的Sleep控制时序,就不起作用了,众所周知Windows的Sleep是基于毫秒级别的,如果需要精确到微秒级,需要另辟蹊径

2020-10-15

SleepTest.zip

Windows6种Sleep1毫秒的精度测试源码,vs2015可以直接编译运行 测试类别分别包括:     1、Windows中的原生Sleep     2、C++11的this_thread::sleep_for以及timeBeginPeriod调整定时器精度两个方式     3、socket连接的select的方式     4、多媒体时钟QueryPerformanceCounter的微秒级方式     5、MsgWaitForMultipleObjectsEx

2019-08-15

Windows libxml2,32位,64位(手动编译包括DLL和lib)

WIndows环境下的libxml2库,在网上找到的基本上都是32位的,自己根据源码手动编译了64位的库,包括libxml2.dll以及libxml2.lib,基于源码版本2.9.0以及iconv-1.9.1的依赖 已经通过验证,并且在应用程序中使用

2015-07-29

MFC实现表格明细群发邮件小助手源文件

MFC实现表格明细群发邮件小助手的源文件,开发工具使用的是VS2010 执行文件请见:http://download.csdn.net/detail/liuhengxiao/7926133

2014-09-16

MFC做的表格明细群发邮件小助手

将Excel表格中行的内容发送到指定邮箱的小工具。 常用的比如说工资明细、货物清单明细等等,每行记录发送一封邮件 如果有需要对源代码进行功能拓展的

2014-09-16

C/C++实现Linux和Windows文件创建、替换、插入指定大小随机字符

公司在实际测试中遇到需要有内容的文件,就着手写了这个小工具 用途:创建指定大小以随机字符填充的文件、替换文件中随机位置指定大小的内容为随机字符、指定位置插入指定大小的随机字符,支持大文件操作,详情请参照README文档 有源代码和应用程序,需要扩展的朋友可以直接在源代码的基础上进行修改,工具虽小但也请尊重作者,谢谢! 如有疑问或者建议请发邮件至[email protected]

2014-08-21

C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用

遇到需求写的代码,没那么正规,但也请你尊重作者 C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用情况的源代码,生成的是静态链接库,Windows和Linux下经测试都可用,查看系统、指定名称的服务、指定名称的进程占用CPU和内存,查看方式不是通过程序中运行命令行的方式,而是采用系统提供的接口去查看内核状态 在开发中遇到需要查看这些信息的朋友可以去使用 如有疑问或好的建议请发送邮件至[email protected]

2014-08-21

Windows中编译完成的libnet.dll lib

自己手动编译的libnet.dll libnet.lib 对应的libnet版本为1.1.4

2014-08-01

Windows Server 2003DNS服务安装时缺失文件大全

Windows Server 2003 虚拟机安装DNS服务时缺失文件所用

2014-04-01

空空如也

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

TA关注的人

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