
C++
文章平均质量分 68
终成一个大象
战略上要藐视敌人,战术上要重视敌人!
展开
-
qtextcodec file not find 问题解决
qtextcodec file not find 问题解决原创 2022-05-06 14:25:47 · 3639 阅读 · 0 评论 -
二叉树的循环遍历和递归遍历(经典)
主要介绍二叉树遍历的经典方法:递归和循环递归遍历前序遍历:根、左、右中序遍历:左、跟、右后序遍历:左、右、跟循环遍历前序遍历:跟、左、右中序遍历:左、跟、右后序遍历:左、右、跟原创 2022-01-12 17:52:16 · 1050 阅读 · 0 评论 -
obs源码 windows编译
本文章主要记录obs源码在windows平台的编译过程,详细记录每个细节。obs源码编译一、编译环境1、Qt52、CEF Wrapper 37703、windows版本 CMake4、Windows版本 Git5、Visual Studio 20196、vs2019开发工具包二、源码编译1、源码下载2、创建输出目录3、配置CMake选项三、obs sln项目编译原创 2021-12-17 18:47:45 · 3065 阅读 · 16 评论 -
lua脚本拓展nginx功能
文章目录一、nginx介绍1、定义2、优点3、使用场景二、lua介绍1、定义2、优点3、使用场景三、nginx中使用lua四、lua API介绍五、demo举例一、nginx介绍1、定义Nginx 作为一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。2、优点占用内存少,稳定性高、模块化3、使用场景网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器,高并发大流量站点常用来做接入层的负载均衡,还有非常常见的用法是作为日志采集原创 2021-02-21 17:29:34 · 943 阅读 · 0 评论 -
openresty及lor入门教程
开发环境准备openresty安装下载openresty-1.13.6.1-win32.zip,解压到本地任一目录eclipse安装lua插件eclipse–>help–>eclipse marketplace–>输入lua,只能查到一个,下载并安装环境配置说明打开openresty的目录,找到conf文件夹下的nginx.conf找到http下的server部分,listen对应的是端口号,可以修改。增加 include 语句,引入分配置文件,对应的是自己lua项目原创 2020-06-08 14:29:30 · 1850 阅读 · 4 评论 -
C++11特性总结
C++11新特性总结语法autodecltypenullptrfinaloverride=default和=deletelambda表达式moveSTL新内容arrayforward_listunordered_map和unordered_set智能指针shared_ptrunique_ptrweak_ptr原创 2020-05-11 18:11:10 · 769 阅读 · 0 评论 -
av_interleaved_write_frame错误 Invalid data found when processing input
问题描述:调用av_interleaved_write_frame接口发送AAC格式的音频数据时,报错:Invalid data found when processing input。解决方案:if (pOutFormatCtx->oformat->flags & AVFMT_GLOBALHEADER){ pOutAudioCodecCtx->flags ...原创 2019-09-28 16:51:01 · 3502 阅读 · 0 评论 -
nb_samples(采样数)转换
可以参考:https://blog.csdn.net/Martin_chen2/article/details/100103655中的错误案例。具体方法如下:#define AAC_ENCODE_SIZE 1024// 定义重采样SwrContext *swr = NULL;swr = swr_alloc();av_opt_set_int(swr, "in_channel_layou...原创 2019-09-28 13:07:28 · 4466 阅读 · 0 评论 -
avcodec_encode_audio2返回-22
错误原因该函数的主要功能:根据音频编码器和音频frame数据编码成音频packt数据。返回-22主要原因:参数错误,具体如下音频编码器的参数(声道数,采样率,采样格式,位宽,采样数)和frame的参数不一致。编码格式对应的采样数和frame的采样数不一致。只要声道数,采样率,采样格式,位宽,采样数,任何一个参数不一致,都需要进行重采样。错误案例不知道什么原因,我frame采...原创 2019-09-28 12:53:04 · 2534 阅读 · 1 评论 -
av_buffersrc_add_frame分析
av_buffersrc_add_frame全面分析原创 2019-09-28 11:31:07 · 5044 阅读 · 0 评论 -
ring buffer 环形队列 C++实现
#include <iostream>using namespace std;template <class T>class RingBuff {private: unsigned int m_size; int m_in; int m_out; T *m_data; public: R...原创 2019-08-24 16:42:35 · 1506 阅读 · 0 评论 -
linux后台执行(nohup)之大坑
问题场景通过xshell远程登录服务器,然后启动几个后台服务,验证后服务功能都正常,ok!然后过了一段时间发现服务器有问题,排查之后发现,有一个服务莫名的挂了,通过日志定位到接收到SIGHUP信号,然后挂了!WTF???问题分析确认后台运行命令:nohup ./myserver > myout.log 2>&1 & 没有问题。nohup启动服务后,关闭...原创 2019-08-23 11:59:18 · 1549 阅读 · 0 评论 -
im源码分析(teamtalk)--DbProxyServer
im源码分析(teamtalk)–DbProxyServer原创 2019-06-06 01:28:13 · 1424 阅读 · 0 评论 -
im源码分析(teamtalk)--RouteServer
RouteServer介绍RouteServer: 路由服务器,在存在多个MsgServer的情况下,用户可能登陆在不同的MsgServer上,这个时候就需要RouteServer进行转发。源码分析void CRouteConn::HandlePdu(CImPdu* pPdu){ switch (pPdu->GetCommandId()) { case CID_OT...原创 2019-06-05 18:34:06 · 1067 阅读 · 0 评论 -
im源码分析(teamtalk)--LoginServer
LoginServer功能介绍登陆服务器,主要作用是实现负载均衡,分配一个负载小的MsgServer给客户端使用。这里的负载较小是指MsgServer的tcp连接数大小。源码分析1.交互服务 int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; CStrExplode client_listen_ip_list...原创 2019-06-05 15:38:39 · 2562 阅读 · 0 评论 -
数据结构和算法--字符串查找
数据结构和算法查找算法字符串查找(单列)字符串查找七大查找算法排序算法:非线性时间排序比较排序冒泡排序快速排序插入排序插入排序希尔排序选择排序选择排序堆排序归并排序二路归并排序多路归并排序线性时间排序9. 计数排序10. 堆排序11. 基数排序字符串查找...原创 2019-06-01 11:17:01 · 1146 阅读 · 0 评论 -
数据结构和算法--查找算法
数据结构和算法查找算法字符串查找(单列)七大查找算法1. 顺序查找2. 二分查找3. 插值查找4. 斐波那契查找5. 树表查找6. 分块查找7. 哈希查找排序算法:非线性时间排序比较排序冒泡排序快速排序插入排序插入排序希尔排序选择排序选择排序堆排序归并排序二路归并排序多路归并排序线性时间排序9. 计数排序10. 堆排序...原创 2019-06-01 11:16:22 · 542 阅读 · 0 评论 -
数据结构和算法--排序算法
数据结构和算法查找算法字符串查找(单列)七大查找算法排序算法非线性时间排序比较排序1. 冒泡排序2. 快速排序插入排序3. 插入排序4. 希尔排序选择排序5. 选择排序6. 堆排序归并排序7. 二路归并排序8. 多路归并排序线性时间排序9. 计数排序10. 堆排序11. 基数排序非线性时间排序比较排序1. 冒泡排序2. 快速排序插入排序3. 插入排序4. 希尔排序...原创 2019-06-01 11:15:47 · 566 阅读 · 0 评论 -
cuda编程 性能优化
cuda性能优化概述开发环境优化点1. 数据格式2. 内存拷贝3. 显存拷贝4. 多线程优化5. gpu异步处理API6. gpu流并行7. gpu处理逻辑优化原创 2019-06-01 10:05:25 · 424 阅读 · 0 评论 -
控制台界面控制(五):输入输出
c中puts()函数用来向标准输出设备(屏幕)写字符串并换行,其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。 功 能: 送一字符串到流stdout中 用 法: int puts(char *string); 程序例: #include <stdio.h> int main(void) { char st...转载 2019-05-30 22:23:02 · 4444 阅读 · 1 评论 -
控制台界面控制(二):模拟信号
控制台模拟鼠标、键盘操作模拟鼠标、键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错)。虽然这也跟CUI无关。本教程教会你如何让命令行模拟鼠标、键盘的操作。鼠标的击键操作,需要用到mouse_event这个API函数。示例代码:模拟左键单击:mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse...转载 2019-05-30 22:19:53 · 552 阅读 · 0 评论 -
函数指针,指针函数,数组指针,指针数组 区分
函数指针:重点在指针,表示它是一个指针,它指向的是一个函数。eg: int (*fun)();指针函数:重点在函数,表示它是一个函数,它的返回值是指针。 eg: int* fun();数组指针:重点在指针,表示它是一个指针,它指向的是一个数组。eg: int (*fun)[8];指针数组:重点在数组,表示它是一个数组,它包含的元素是指针 eg: int* fun[8];...转载 2019-05-08 17:47:48 · 212 阅读 · 0 评论 -
堆区、栈区、静态区、常量区还有???
常见的存储区域可分为:1、栈由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。2、堆由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,程序会一直占用内存,导致内存泄漏,在程序结束后,操作系统会自动回收。3、自由存储区由malloc等分配的内存块,它和堆是...转载 2019-05-08 16:14:29 · 169 阅读 · 0 评论 -
构造函数为什么不能为虚函数?析构函数为什么要为虚函数?
一、构造函数为什么不能为虚函数?参考连接:https://www.cnblogs.com/mengfanrong/p/4011342.html从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的。问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找...转载 2019-05-08 14:40:10 · 658 阅读 · 0 评论 -
opencv源码编译(基于android NDK)
opencv 基于android NDK平台编译总结: 1\opencv简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 O...原创 2018-05-26 18:21:44 · 8091 阅读 · 8 评论 -
C/C++框架和库
一、值得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。下载链接:https://github.com/libev转载 2018-02-07 16:37:27 · 557 阅读 · 0 评论 -
error realloc(): invalid next size 崩溃
error realloc(): invalid next size 崩溃越界访问原创 2017-08-28 18:44:01 · 4341 阅读 · 0 评论 -
汉子字符转换与截取
下面是几个有意思的函数,主要是用于存在汉字字符时的转换和截取功能,挺好用,在这里记录一下。1、复制代码代码如下:const char *str = "test测试test";while(*str){//这里只需要判断第一个字节大于0x80就行了,前提是输入的是合法的GBK字符串//原因在于,如果第一个字节大于0x80,那么它必然和后面一个字节一起组成一个汉字//所以就没有必...转载 2017-07-02 19:55:00 · 607 阅读 · 0 评论 -
用户名密码正确,在登陆界面循环的问题centos7
PS:记录一次centos7在登陆界面循环的问题:一、问题描述:之前用的挺好,偶尔一次重启后,输入用户名和密码后,进入不了桌面系统,过一会又循环到登陆界面,让你再次输入密码,一直循环。。。二、问题原因:更新软件,导致系统底层和gnomo(界面)不兼容修改了某些系统配置文件原创 2017-07-02 19:06:39 · 39276 阅读 · 6 评论 -
CMake总结
(1)用cmake创建可执行文件1)单源文件目录清单1源文件main.cpp [cpp] view plain copy<spanstyle="font-size:18px;color:#006600">#include<iostream> intmain(){ std::cout<<"...转载 2017-05-09 19:02:36 · 647 阅读 · 0 评论 -
CMake命令
转自:http://blog.csdn.net/wzzfeitian/article/details/40963457/本文代码托管于github cmake_demo一、cmake中一些预定义变量PROJECT_SOURCE_DIR 工程的根目录 PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build C...转载 2017-05-09 18:30:50 · 693 阅读 · 0 评论 -
C++类大小
一个空类class A{};的大小为什么是1,因为如果不是1,当定义这个类的对象数组时候A objects[5]; objects[0]和objects[1]就在同一个地址处,就无法区分。单继承#include<iostream>using namespace std;class A{public: virtual void aa(){}private:...转载 2017-02-25 09:41:42 · 295 阅读 · 0 评论 -
控制台界面控制(十):读取鼠标操作
本文为转载文档,原文链接:http://blog.csdn.net/bnb45/article/details/8042819我在看到这一章之前一直不知道控制台也能通过鼠标来操作。控制台的鼠标操作需要得到鼠标位置信息,左右键信息,单双击等等。效果当鼠标在控制台范围内的时候,第一行会显示鼠标的位置;左键单击在鼠标当前位置写下一个A,右键单击在鼠标当前位置写下一个a...转载 2016-01-07 19:44:38 · 3097 阅读 · 0 评论 -
控制台界面控制(九):读取键盘操作
本文为转载文档,原文链接为:http://blog.csdn.net/bnb45/article/details/8035346读取键盘操作指的是,当我们输入什么的时候,控制台可以通过函数截获,这时候可以在里面写下要进行的操作。因为键盘的操作是连续的,读取键盘操作的函数也要一直处于监听的状态,而不同的程序所需要的操作代码又不一样,所以暂时没打算封装在类当中。效果打开的...转载 2016-01-07 19:43:01 · 1377 阅读 · 1 评论 -
控制台界面控制(八):光标设置
本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/8034641光标的作用在于提醒使用者,你的输入将会在这个位置出现。目前对于光标的操作只有一个,移动光标,改变输出的位置。有时候光标在那里一闪一闪的是不行的,比如做了一个菜单,或者一个封面。可以在控制台使用的函数中有一个可以用来隐藏光标,除此之外,它在光标显示的时候还能...转载 2016-01-07 19:40:41 · 3152 阅读 · 0 评论 -
控制台界面控制(七):移动文本
本文为转载文档,原文链接:http://blog.csdn.net/bnb45/article/details/8034597控制文本的移动,可以取代清屏再重绘操作。如果用来做文本编辑器的滚动条是很合适的,也许也可以用在俄罗斯方块上面。控制台使用一个函数把某个区域内的文本移动到另一个区域。效果在缓冲区中输出4行字,分别在对应的行上。然后使用移动文本的函数把第三行后面的...转载 2016-01-07 19:39:25 · 1124 阅读 · 0 评论 -
控制台界面控制(六):边框
本文为转载文档,源文档地址:http://blog.csdn.net/bnb45/article/details/7997603效果[cpp]view plaincopy#include"MyConsole.h" #include<stdio.h> intmain() { CMyConsolemyCo...转载 2016-01-07 19:37:18 · 1328 阅读 · 0 评论 -
控制台界面控制(五):文字颜色
本文为转载文档,原文档链接:http://blog.csdn.net/bnb45/article/details/7994025设置字符属性VC控制台提供了一个设置文本属性的函数,它的作用包括设置文本颜色,设置文本背景颜色,以及下划线等。[cpp]view plaincopyBOOLSetConsoleTextAttribute( HANDLE...转载 2016-01-07 19:34:23 · 935 阅读 · 0 评论 -
控制台界面控制(四)
本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/7983562设置光标位置[cpp]view plaincopy//----设置光标位置 voidCMyConsole::Goto(shortx,shorty) { COORDpos={x,y}; ...转载 2016-01-07 19:32:00 · 1177 阅读 · 0 评论 -
控制台界面控制(三):设置窗口标题
本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/7981421相关信息字符编码 UNICODE:如果只是用英文字母就能代表足够多的意思,UNICODE就不会出现了。著名的 ASCII 码已经可以表示大部分信息,它是一种非常可靠的标准,没有其他哪一种标准能像 ASCII 一样普及。但在美国之外的世界里,ASC...转载 2016-01-07 19:30:05 · 973 阅读 · 0 评论