- 博客(43)
- 收藏
- 关注
原创 Linux dup如何跟pipe联合在进程间传递数据
标准输入的文件描述符总是0,dup返回的新文件描述符总是使用最小可用的数字。因此,如果我们首先关闭文件描述符0,然后调用dup,那么新文件描述符就将是数字0.因为新的文件描述符是复制一个已有的文件描述符,所以标准输入就会改为指向一个我们传递给dup函数的文件描述符所对应的文件或管道。我们创建了两个文件描述符,它们指向同一个文件或管道,而且其中之一便是标准输入。示例代码:
2013-08-23 15:07:48 789
原创 Linux dbm数据库代码示例
所有版本的Linux及大多数的UNIX版本都随系统带有一个基本的,却非常高效的数据存储例程集,它被称为dbm数据库。它适合于存储相对比较静态的索引化数据。dbm数据库可以使用索引来存储可变长的数据结构,然后通过index或顺序扫描数据库来检索结构,dbm数据库适用于那些被频繁访问却很少被更新的数据,因为它创建数据项时非常慢,而检索数据却是非常的快。大多数主流的Linux发行版本都会默认安装
2013-07-29 11:43:02 912
原创 命名信号量跟系统共享内存
共享内存是最快的可用IPC形式:它允许多个不相关的Process去访问同一部分逻辑内存。如果需要在两个运行的Process之间传输数据,共享内存跟FIFO(命名管道),文件共享文件相比是效率极高的一种方法。一旦内存区映射到共享它的Process的地址空间,这些Process间的数据传递就不会再涉及到内核,这样可以减少系统调用时间,提高了效率。共享内存是IPC为一个进程创
2013-06-24 15:17:59 568
原创 如何将自己的功能函数添加给linux系统
突然间想到一个问题:自己写一个功能函数,比如闹铃,给其响的时间是某一时刻,每天系统开启后让系统自己调用闹铃功能,到响铃时自动响铃,对其他的任何系统功能不造成影响,怎么办。 然后就随便写了一个函数测试了一下:#include int main(void){ while( 1 ); return 0;}又写了一脚本hai
2013-06-17 16:55:59 404
原创 linux目录文件的遍历查询
函数:int chdir( const char *path ); /* 切换目录为path */char *getcwd( char *Buf, size_t size ); /* 将当前路径及目录的信息写道Buf */Dir * opendir( const char *name ); /* 打开名为name的目录流 */struct
2013-06-07 11:30:56 363
原创 linux文件
linux用户空间的每一个进程开启后都会有自己的一个文件描述符索引表,进程开启后同时会打开三个文件:标准输入,标准输出,标准出错,这三个文件分别对应文件描述符索引表的0,1,2所以我们自己打开的文件返回的文件描述符是3以后的值,要说的是每个进程的文件描述符的个数是有限的,所以一味的打开文件而不关闭会出问题。在linux的内核空间对应用户空间的所有打开的文件有一个打开文件的记录表,该记录
2013-06-06 14:48:18 316
原创 Linux时间函数总结
标准C定义常见几种时间结构,分别用于不同的场合—— clock_t; /* CPU滴答数来表示计时数 */—— time_t; /* 描述表示时间 */—— struct tm; /* 按人的习惯表达计时 */—— struct timeval; /* 时间戳,对时间要求较高的场合 */clock_t, time_t 实际上是long int型,主要用于
2013-06-06 11:46:13 332
转载 H.264编码的NAL单元解析
h.264layerextension数据结构stream扩展nal_unit_typeNAL 单元和 RBSP 语法结构的内容 0未指定 1一个非IDR图像的编码条带 slice_layer_without_partitioning_rbsp( ) 2编码条带数据分割块A slice_data_pa
2013-06-04 15:34:46 564
原创 C语言常见算法——链表逆序
/************************************************************************* > File Name: ReviseList.c > Author: hai--feng > Mail: haifeng@126.com > Created Time: Tue 26 Mar 2013 08
2013-04-16 08:44:52 341
原创 C语言常见算法——求大数阶乘!
注意点:1 是大数的阶乘2 注意会溢出/************************************************************************* > File Name: Factorial.c > Author: hai--feng > Mail: haifeng@126.com > Created
2013-04-15 09:41:55 418
转载 minicom 的配置
1、在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,Linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,使用以下命令来查看你对COM1的权限:$ ls -l /dev/ttyS0crw-rw---- 1 root dialout 4, 64 2009-08-01 11:05 /dev/ttyS0可以看到,它的属主是
2012-09-11 18:13:16 284
原创 Makefile 的简单简化
学习了一下Makefile,结果让我很惊叹!!太智能了!!以下就是介绍: 就拿一个例子来介绍: 有一个小项目,有七个文件组成,4个.c文件,3个.h文件 afile.c bfile.c bfile.h cfile.c cfile.h dfile.c dfile.h 第一个Makefile的写法:
2012-08-23 18:06:33 420
原创 DM365 YUV422与YUV420 的resize对比
YUV422的resize较为彻底,它提供了一次性的将要resize的YUV数据resize的功能,所以流程较为简单,具体过程为:1、ResizeCreate2、ResizeConfig3、ResizeExecute4、ResizeDelete例:色彩空间:YUV422 ----> YUV420 分辨率:7
2012-08-10 10:39:04 1636
原创 ubuntu samba服务的安装与配置
安装samba服务时发现自己忘记了!所以网上搜了一大堆,结果没有一个正常通过的!安装可想而知,所以搜寻了老久才找出了自己之前做的记录, 呵呵呵呵!!还是比较好使!!特此记录!! 一. samba 的安装: 导入samba 四步骤: #sudo apt-get install samba #sudo
2012-07-31 09:28:56 254
原创 DM365 resize的实现
DM365的encode 视频数据在编码之前可进行 resize,可将videoStd 为VideoStd_D1_PAL,ColorSpace为ColorSpace_UYVY的视频图片resize成为videoStd 为VideoStd_VGA,ColorSpace为ColorSpace_YUV420PSEMI的图片。测试了一下,当前DM365的resize有: /*ColorS
2012-07-30 18:47:26 1561
原创 Linux 下串口编程
相关头文件:#include 串口帧格式: 1. 打开串口 int open(const char * pathname, int flags); linux 下串口文件位于 /dev 下,一般串口一为 /dev/ttys0 ,串口二为 /dev/ttys1 示例代码如下: int fd; /* 以
2012-07-23 11:40:36 331
转载 入门视频采集与处理(BT656简介)
转自: http://ticktick.blog.51cto.com/823160/553535 凡是做模拟信号采集的,很少不涉及BT.656标准的,因为常见的模拟视频信号采集芯片都支持输出BT.656的数字信号,那么,BT.656到底是何种格式呢? 本文将主要介绍 标准的 8bit BT656(4:2:2)YCbCr SDTV(标清) 数字视频信号格式,主要针对刚刚入
2012-07-18 14:45:18 493
转载 为什么要使用RTP
转自:http://ticktick.blog.51cto.com/823160/462746一提到流媒体传输、一谈到什么视频监控、视频会议、语音电话(VOIP),都离不开RTP协议的应用,但当大家都根据经验或者别人的应用而选择RTP协议的时候,你可曾想过,为什么我们要使用RTP来进行流媒体的传输呢?为什么我们一定要用RTP?难道TCP、UDP或者其他的网络协议不能达到我们的要求么?本
2012-07-18 12:05:25 415
转载 谈谈RTP传输中的负载类型和时间戳
转载自 : http://ticktick.blog.51cto.com/823160/350142 最近被RTP的负载类型和时间戳搞郁闷了,一个问题调试了近一周,终于圆满解决,回头看看,发现其实主要原因还是自己没有真正地搞清楚RTP协议中负载类型和时间戳的含义。虽然做RTP传输,有着Jrtplib和Ortp这两个强大的库支持,一个是c++接口,一个是c语言接口,各有各的特点,各有各
2012-07-18 12:03:39 581
转载 软件中的缓冲区管理
转载自:http://ticktick.blog.51cto.com/823160/2731331. 前言 什么是缓冲区管理策略?为什么要使用缓冲区管理策点击打开链接略,这里首先引用几段《生产者/消费者模式》(原文链接:http://blog.csdn.net/program_think/archive/2009/03/25/4022087.aspx)中的文字作为引子吧。
2012-07-18 12:00:08 404
转载 IP数据包的分析实例
转自: http://ticktick.blog.51cto.com/823160/203412 我们知道,使用 Ethereal软件可以方便地帮助我们进行抓取网络中的数据包,具体怎样利用它分析一个特定的包呢?我在网上找了半天,发现相关的分析IP包的文章很少,在此,我将自己在学习使用该软件抓取IP包并分析的过程描述如下,供初学者入门之用,有分析不对的地方欢迎指正。最后附上简单
2012-07-18 11:41:03 443
转载 入门视频采集与处理(学会分析YUV数据)
转载自: http://ticktick.blog.51cto.com/823160/555791 做视频采集与处理,自然少不了要学会分析YUV数据。因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264、MPEG视频编解码)的角度来说,也是在原始YUV码流进行编码和解析,所以,了解如何分析YUV数据流对于做视频领域的人而言,至
2012-07-18 11:04:49 738
原创 YUV420SP数据转换成YUV420P代码
数据存储方式:YYYYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYYYY --> YYYYYYYYYYYYYCbCrCbCr .... CbCb...CrCr
2012-07-18 10:40:25 2094
原创 C++ 一个典型的数组类的模板
//错误类型enum ErrorType { invalidArrySize, memoryAllocationError, indexOutOfRange};//错误信息char * errMsg[] = { "Invalid array size", "Memory allocation error",
2012-07-10 17:33:54 400
原创 对于C++ const 修饰指针的思考
1 char str[ ] = "welcome!!"; const char * p = str; 对于上述const 标识,很多人的理解是const 修饰的是指针指向的内容,说明指针指向的内容不可以被修改,我觉得这样的理解多少有点偏差跟不正确的地方。试想,如果内容不可以被修改,那么我在后面加一句话 str[ 0 ] = 'A';这是正确的,但是
2012-07-10 17:06:15 249
1 char str[ ] = "welcome!!"; const char * p = str; 对于上述const 标识,很多人的理解是const 修饰的是指针指向的内容,说明指针指向的内容不可以被修改,我觉得这样的理解多少有点偏差跟不正确的地方。试想,如果内容不可以被修改,那么我在后面加一句话 str[ 0 ] = 'A';这是正确的,但是
2012-07-10 17:05:28 46
原创 对于C++ const 修饰指针的思考
1 char str[ ] = "welcome!!"; const char * p = str; 对于上述const 标识,很多人的理解是const 修饰的是指针指向的内容,说明指针指向的内容不可以被修改,我觉得这样的理解多少有点偏差跟不正确的地方。试想,如果内容不可以被修改,那么我在后面加一句话 str[ 0 ] = 'A';这是正确的,但是
2012-07-04 16:50:34 61
原创 单链表常见算法要求
1.单链表反转 2.找出单链表的倒数第4个元素 3.找出单链表的中间元素 4.删除无头单链表的一个节点 5.两个不交叉的有序链表的合并 6.有个二级单链表,其中每个元素都含有一个指向一个单链表的指针。写程序把这个二级链表称一级单链表。 7.单链表交换任意两个元素(不包括表头) 8.判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度? 9.判
2012-07-03 16:40:30 249
转载 程序员每年要做的十件事
1、学习一种新语言,框架或方法我们必须保持学习最新的技术。Web开发唯一不变的是变化。以NodeJS为例:两三年前它并不存在,只有很少(如果有的话)的JavaScript代码运行于服务器之上。现在,你离不开它。每个Web开发人员都希望留在自己的作品里。要做到这一点,我们必须不停学习最新的技术。如果你是一个后端开发,这可能代表着学习 JavaScript和Node.js,类似于Ruby和
2012-07-03 10:23:43 267
原创 C++ 练习如何用递归求π的值
π 的计算公式为 16 * arctan(1/5) - 4 * arctan(1/239);arctan(x) 的计算公式为 x - x^3/3 + x^5/5 -x^7/7 + ......直到级数的某项绝对值不大于 10^(-15) 为止,π 跟 x 均为 double 型递归代码如下:/*****************************************
2012-07-02 15:42:17 1658
原创 C语言面试题之——判断一条单链表有没有环
给一条链表,判断有没有环。 分析:如果一条链表没环,那么它的尾节点的next比为NULL,否则就有环。那么给一条链表的时候如何判断有没有环呢,办法是定义两个指针,一个跑的快,一个跑的慢,如果快的指针走的结果为NULL,那么就是一个无环链表,否则快的指针肯定在某一个节点处追上慢的指针,这时候就会断定这条链表有环。 代码如下:/********************
2012-06-28 09:04:35 1630
原创 C跟C++文件互相调用的时候该怎么做!!
下午编译代码时总结出来了一点好东西,在此记录一下。当自己写的C文件要掉用C++的头文件的时候要进行如下修改:将.c文件中包含的.cpp文件的头文件由#include “Cpp.h”修改为#ifdef __cplusplus extern "C" {#endif #include "Cpp.h" #ifdef __cplu
2012-06-26 16:11:53 273
原创 C语言面试题之——整数数组中获取第二大的数
第二大的数获取路径有两条: 1 从最大数传下来 2 直接赋值得到(当前数比最大值小,比当前的第二大数大)代码如下:/************************************************************************* > File Name: second_max.c > Author: hai-
2012-06-25 18:13:47 1934
原创 C语言面试题之——翻转语句
给一句话,在不改变单词的情况下将这句话倒着输出,如 : give me the book -----> book the me give 注意语句中的空格。代码如下:/************************************************************************* > File Name: s
2012-06-25 17:29:19 350
原创 对于C++的虚函数跟多态记录
概括的说多态就是“一个接口,多种方法”。 多态分为两种: 一、静态多态性(静态联编):程序调用函数的时候,具体使用哪个代码块由编译器已经决定了。这种在编译过程中就完成的联编叫静态联编。 函数重载、派生类方法的重写、模版函数都属于静态联编。 二、编译器无法在编译过程
2012-06-11 14:43:19 188
原创 ssh使用说明
1、概述 ssh主要用于远程控制和传输文件,与ftp、tftp、telnet的区别在与ssh传输的数据是加密的,安全性很好。 ssh 分为客户端和服务器端,认证的方式分为key和密码 现在使用比较广泛的是openssh,源于openbsd,另外一个dropbear主要用在嵌入式中。Android采用的就是dropbear。2、安装 linux
2012-06-04 16:17:16 407
原创 如何安装wine跟WineTricks将你的windows下的库安装到linux
一 wine 安装额外windows库的方法 工作平台刚转到linux下面后会有很多的不方便,因为linux对于windows大部分软件库的不支持,结果是大家都知道的——很多软件不能使用,这 是大家非常的头疼,但是有一个方法可以部分的解决这个问题,为什么是部分的,因为linux 对于windows只有部分库提供了一个接口,而非全部。 给linux安装window
2012-06-04 16:15:28 4055
转载 强大Vim的配额置
我的vim配置主要有以下优点:1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码4.按“F2”可以直接消除代码中的空行5.“F3”可列出当
2012-06-04 16:03:32 796
原创 **在pc上如何让打印信息精确的告诉你问题的发生点**
刚刚才发现PTrace函数是一个让人求之不得的函数,他对我的帮助简直不能言语:PTrace函数的格式为: PTrace("%s--%d: %s", __FILE__, __LINE__, "init_sell_file failed!\n");参数: 第一个%s表示你运行的文件存放路径跟文件名 %d表示出错的位置,即出错文件的错误地址,哪一
2012-04-19 22:37:23 86
原创 如何使用伪指令让结构体占用的内存空间变小
在我们定义一个结构体后,因为存在字节对齐的缘故,所以会有资源浪费的情况,比如typedef struct{ int age; char sex; int number;}student_t;因为字节对齐的缘故,这样这个结构体的变量会占12个字节的空间,虽然sex变量是一个char型,但还是会按int型的空间处理,为了解决这个问题,我们可以将这
2012-04-19 22:20:24 379
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人