随笔分类 - C/C++
摘要: 最近在做一些项目的时候,不小心把NDK下面的一些宏写得有问题,导致一些编译不过的问题。所以,总结一下。 这些知识都可以在 "GCC 文档" 上找到,本文主要参考博文 "《C语言宏的特殊用法和几个坑》" 基础 (1) 标示符别名 在预处理阶段: 结果是 ; (2)宏函数 宏名之后带括号的宏...阅读全文
posted @ 2015-11-03 20:35 blackBox 阅读(78) | 评论 (0) 编辑
摘要: OpenGL 编程一 GLUT工具库使用 GLUT 通过下面几个函数执行初始化一个窗口,并渲染。 GLUT 初始化函数,并处理所有命令行参数, 应该在其他函数调用之前调用。 设置模式:RGBA模式, 颜色索引模式, 同时也可以设置单双缓冲,如设置一个所缓冲: 设置屏幕大小和位...阅读全文
posted @ 2015-10-09 17:23 blackBox 阅读(61) | 评论 (0) 编辑
摘要: 使用ffmpeg推流 本文主要参考来自 "雷霄骅的博客" ,使用nginx测是RTMP推流。 测试环境: ubuntu + nginx + vlc 使用头文件: 输入和输出: 通常我们使用ffmpeg输入和输出都是文件系统,现在要实现推流到nginx RTMP服务器,所以输出路径是一个...阅读全文
posted @ 2015-10-09 11:45 blackBox 阅读(737) | 评论 (0) 编辑
摘要: 以前的一个android工程, 把普通视频解码成yuv同时编成mjpeg, 把音频解码成pcm并调整参数。 初始化编码器和解码器 配置编码器 编码与解码 调整帧率,修改android nkd下帧率设置无效,自定义计算方式,比较粗略。 设置自定义文件头 视频解码 ...阅读全文
posted @ 2015-10-08 14:06 blackBox 阅读(2909) | 评论 (0) 编辑
摘要: 了解一下 Epoll 是一种高效的管理socket的模型,相对于select和poll更加高效。 数据结构 sys/epoll.h (1) epoll_data 联合体用来保存触发事件的某个文件描述符相关的数据. (2) epoll_event 结构体的events字段是表示感兴趣...阅读全文
posted @ 2015-10-07 12:09 blackBox 阅读(54) | 评论 (0) 编辑
摘要: ![](http://images2015.cnblogs.com/blog/561278/201509/561278-20150922192343600-1682169748.png) ![](http://images2015.cnblogs.com/blog/561278/201509/561278-20150922192705553-113975826.png)阅读全文
posted @ 2015-09-22 19:24 blackBox 阅读(31) | 评论 (0) 编辑
摘要: 1.摘要这是《翻译:理解TCP/IP网络栈&编写网络应用》的下篇,文章中会通过讲解TCP的代码实现帮助大家理解发送、接收数据的流程,也描述了一些网卡、驱动等网络栈底层的原理。原文地址:原文地址2.数据结构以下是一些关键数据结构。我们了解一下这些数据结构再开始查看代码。2.1.sk_buff_stru...阅读全文
posted @ 2015-07-28 13:51 blackBox 阅读(60) | 评论 (0) 编辑
摘要: 1.摘要之前在网上看到了这篇描述tcp网络栈原理的文章,感觉不错,决定抽空把这篇文章翻译一下。一来重新温习一下TCP相关知识,二来练练英文。由于原文太长,这里把文章分成上下两部分,分别对应了原理和代码。 很久没翻译文章了难免有误,建议有能力的同学还是看一下原文。原文地址:原文地址2.概述我们难以想象...阅读全文
posted @ 2015-07-28 13:37 blackBox 阅读(44) | 评论 (0) 编辑
摘要: UNIX环境下的命令行调试工具:gdb 如果需要使用gdb调试程序,请在gcc时加上-g选项。 下面的命令部分是简化版,比如使用l代替list等等。1.基本命令1)进入GDB #gdb test test是要调试的程序,由gcc test.c -g -o test生成。进入后提示符变为(gd...阅读全文
posted @ 2015-04-27 18:56 blackBox 阅读(41) | 评论 (0) 编辑
摘要: Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位。如何产生core file?我们可以使用ulimit这条命令对core file文件的大小进行设定。一般默认情况下,core file的大小被设置为了0,这样系统就不dump出core file...阅读全文
posted @ 2015-01-05 14:25 blackBox 阅读(41) | 评论 (0) 编辑
摘要: 关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz 发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写...阅读全文
posted @ 2014-10-27 11:50 blackBox 阅读(82) | 评论 (0) 编辑
摘要: C:strncpy(a,b,5);a[5]='0';char a[10];memset(a,'#',sizeof(a));a[10]='0';1. 字符串长度 strlen(st);2. 字符串比较 strcmp(st1,st2); strncmp(st1,st2,n); 把st1,st2的前n个进行比较。3. 附加 strcat(st1,st2); strncat(st1,st2,n); n表示连接上st2的前n个给st1,在最后不要加'0'。4. 替换 strcpy(st1,st2); strncpy(st1,st2,n); 阅读全文
posted @ 2014-03-08 11:49 blackBox 阅读(101) | 评论 (0) 编辑
摘要: (1) x264_param_default( x264_param_t *param ) 作用: 对编码器进行参数设定 cqm:量化表相关信息 csp: 量化表相关信息里的memset( param->cqm_4iy, 16, 16 ); ...阅读全文
posted @ 2014-01-11 23:18 blackBox 阅读(231) | 评论 (0) 编辑
摘要: QT安装步骤:(我是用的是U 盘挂载安装的) 1、下载安装QtCreator,安装完成后就可以见到QtCreator的QT IDE开发工具,不过这个还没库,无法编译。 sudo apt-get install qtcreator2、下载Qt Library , 现在的是嵌入式的 qt-everywhere-opensource***,我的是4.8.5版本(下载链接:http://...阅读全文
posted @ 2013-12-23 21:34 blackBox 阅读(283) | 评论 (0) 编辑
摘要: 命名空间:.NET 命名空间说明System包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性和处理异常的基础类和基类System::CollectionsSystem::Collections::Generic这些命名空间定义了一些集合容器对象,还有一些基类型和接口,可以允许用户创建强制类型的集合System::DataSystem::Data::OdbcSystem::Data...阅读全文
posted @ 2013-12-01 23:26 blackBox 阅读(161) | 评论 (0) 编辑
摘要: 优秀的代码风格如同一身得体的打扮,能够给人以良好的印象。 初学程序设计,首先必须建立良好的编程习惯,这其中就包括代码风格。本文就代码风格中的几个重点问题进行了讨论,并在文后给出了一份优秀的代码作为风格模板。代码风格不必花费太多专门的时间研究,在使用中不断模仿模板代码,轻轻松松就能写出“专业的代码”。...阅读全文
posted @ 2013-11-28 20:34 blackBox 阅读(40) | 评论 (0) 编辑
摘要: 一.内核 Unix代码大全 http://minnie.tuhs.org/ UnixV6 https://github.com/Rajmohan/UnixV6 编程语言开源框架等使用统计网址 http://w3techs.com/ FreeBSD 使用手册 http://www.freebsd.org/doc/zh_CN/books/handbook/index.html F...阅读全文
posted @ 2013-11-16 15:42 blackBox 阅读(209) | 评论 (0) 编辑
摘要: 当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如: class CBase { }; class CDerive1:virtual public CBase{ }; class CDerive2:virtual public CBase{ }; class CDerive12:public C...阅读全文
posted @ 2013-11-10 13:05 blackBox 阅读(303) | 评论 (0) 编辑
摘要: //指针数组和数组指针分析#include int main(int argc, char *argv[]){ int a[8][8] = {1,2,3,4}; int (*ptr1)[8] = a ; int (*ptr2)[8][8] = &a; int *ptr3 = &a[0][0]; printf(" &a[0][0] ...阅读全文
posted @ 2013-10-05 10:43 blackBox 阅读(45) | 评论 (0) 编辑
摘要: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表...阅读全文
posted @ 2013-10-03 15:59 blackBox 阅读(23) | 评论 (0) 编辑
摘要: 分支限界法 一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 (1)分支搜索算法 所谓“分支”就是采用广度优先的策略,依次搜索E-...阅读全文
posted @ 2013-09-16 16:44 blackBox 阅读(65) | 评论 (0) 编辑
摘要: 1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。2、基本思想在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发阅读全文
posted @ 2013-09-16 16:41 blackBox 阅读(86) | 评论 (0) 编辑
摘要: 贪心算法 一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 所以对所采用的贪心策略一...阅读全文
posted @ 2013-09-16 16:38 blackBox 阅读(284) | 评论 (0) 编辑
摘要: 一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。 由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一阅读全文
posted @ 2013-09-16 16:09 blackBox 阅读(83) | 评论 (0) 编辑
摘要: 分治算法 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模...阅读全文
posted @ 2013-09-16 16:01 blackBox 阅读(81) | 评论 (0) 编辑