自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

伍意的博客

技术成就梦想,活到老学到老!

  • 博客(175)
  • 收藏
  • 关注

转载 详解FAT32文件系统

硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上。任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式。例如:常见的文件系统有FAT,NTFS,EXT,UFS,HFS+等等。下面就来学习一下基于Windows的FAT32文件系统。FAT32文件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成,其机构如下图:

2016-05-06 10:59:12 3248 1

转载 C中调用Lua函数

lua_State* L = NULL;// 内部调用lua函数double f(double x, double y){ double z; lua_getglobal(L, "f"); // 获取lua函数f lua_pushnumber(L, x); // 压入参数x和y lua_pushnumber(L, y); if(lua_

2016-03-17 23:12:35 321

转载 Lua调用C函数

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境

2016-03-17 23:09:36 298

原创 自动视频录像-用于I/O性能测试

从事视频行业的程序员 经常需要录制视频文件 验证性能,该类实现了固定文件录像,自动切片,应用层缓存        支持多路录像使用多个对象即可。fileindex需要加锁     使用 :FileRecord ObjRecord[8];ObjRecord[channel].Record(channel,data,len);FileRecord.h#ifndef

2016-03-11 15:56:04 830

转载 Linux 文件系统IO性能优化

对于LINUX SA来说,服务器性能是需要我们特别关注的,包括CPU、IO、内存等等系统的优化变得至关重要,这里转载一篇非常不错的关于IO优化的文章,供大家参考和学习:一、关于页面缓存的信息,可以用cat /proc/meminfo 看到。其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的

2016-03-09 18:28:18 7008

转载 最全面的I/O优化介绍 从文件系统到磁盘管理

1、系统学习IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。 IO系统的分层:   三层结构上图层次比较多,但总的就是三部分

2016-03-09 12:04:50 3982

原创 FLASH FLV及F4V原版官方格式 不必翻译

                    VideoFile FormatSpecificationVersion10Copyright© 2008AdobeSystem

2016-03-05 10:49:41 4047

原创 RTMP官方协议不必翻译

Copyright Adobe Systems Incorporated                    H. Parmar, Ed.M. Thornburgh, Ed.AdobeDecember 21, 2012   Adobe’s Real Time Messaging Protocol 

2016-03-05 10:29:20 1537

转载 rtmp协议简单解析以及用其发送h264的flv文件

首先说下rtmp协议包的格式。握手之后,rtmp传输一个数据默认的长度是128bytes,这128bytes不包括包头的长度,只是数据的长度,文档上面没有说明,很憋了我一段时间,数据超过这个长度之后就要分块,超过128bytes的数据放到下一个块中,以此类推。块大小是可配置的,最大块是65535字节,最小块是128字节。块越大CPU使用率越低,但是也导致大的写入,在低带宽下产生其他内容的延

2016-03-05 00:45:28 2539

转载 RTMP 协议学习总结

RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1 消息 消息是RTMP协议中基本的数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分

2016-03-05 00:38:35 505

原创 FLV格式

了解FLV格式不是为了解析FLV文件格式,而是为了更好理解RTMP,以及实现H264 OVER RTMP本人在搞H264 OVER RTMP 看了很多开源 虽然结果正确,但搞不懂为什么,很闹心,终于无意中看到FLV格式,然后联想到RTMP 才有悟。不管FLV还是MP4格式,伟大的 简单的 通用的格式表达法 TLV(TYPE LENGTH VALUE)概括了所有的文件格式及协议,大同

2016-03-04 00:26:13 694

原创 Linux 下实现进程退出后自动重启

Linux 下实现进程退出后自动重启一般方案有21.采用脚本,网上很多,但对一些嵌入式系统因资源限制,大部分命令裁剪了,故不可行2.采用fork,父进程等待子进程退出一下采用fork 方法实现,对于重启多个进程,可采用(pid = waitpid( -1, &status, WNOHANG))避免多个进程同时重启导致僵尸进程#include #includ

2016-03-03 18:32:58 5588 1

原创 RTMP直播点播-基于开源crtmpserver

环境准备一.下载rtmp服务器 crtmpserverhttps://github.com/j0sh/crtmpserverhttp://www.rtmpd.com/ (经常打不开)编译安装有详细的步骤:编译 :cd crtmpserver/builders/cmake  cmake .  (需安装cmake)修改:crtmpserver.lua 配置中 mediaFold

2016-02-29 17:42:22 15907 3

原创 iOS 之 OBJECTC 调用C、OBJECTC调用C++

iOS 平台软件开发使用 OBJECTC 会经常使用 C 或 C++ 目的主要:1. 复用之前成熟的代码 2. 复用开源项目代码 毕竟开源成熟的C/C++ 很多3. 像STL非常方便开发的标准库 也习惯了,当然也想复用4. 总之,每种情况下就想用C/C++ 代码有以下情况混合1. OBJECTC 调用  C 这是 OBJECTC 的天生所在,xcode本身就支持

2016-02-27 00:53:45 8849 1

转载 Object-C self = [super init]

What does it mean when you assign [super init] to self?Apr 19, 2009 by Matt GallagherTags: Objective-C One of the strangest pieces of common syntax in Objective-C is the line self = [s

2016-02-17 22:33:50 417

转载 Swift语言指南--可选值

在值可能不存在的情况下使用可选值(optional), 可选值是:  · 存在一个值,这个值等于 x或  · 不存在任何值 注:在 C 和 Objective-C 中可选值的概念并不存在。Objective-C 中(与可选值)最相近的(概念)是,一个以对象为返回值的方法,也可以返回nil,nil表示“不存在有效的对象”。不过,这规则只对对象有效——对于结构、基本

2016-02-04 16:11:15 432

原创 论软件研发过程 目标+方法=结果

论软件研发过程 目标+方法=结果目前各大公司都有自己的软件研发过程,如IPD,CMMI,敏捷以及传统的瀑布、迭代等等。这些过程有的太复杂,太强调过程,太强调文档,有的太局限。其实不管是软件研发,还是其它事件。只要有人要做的事情,都可以用目标+方法=结果的思路来简化过程.目标:从软件角度就是需求,而这个需求对不同的用户就不一样,这样就有不同的结果。   目标不一样需求

2016-02-02 11:04:23 612 1

原创 Linux下信号SIGCHLD处理不当产生僵尸进程的问题

LINUX 通过fork创建子进程时,如果子进程退出,内核会向父进程发送SIGCHLD信号,这样由父进程回收子进程的资源,避免产生僵尸进程,产生僵尸进程的本质是该进程的内核资源未被释放,本着谁创建谁释放的原则,则是父进程释放,所以需要在父进程处理SIGCHLD信号。一般代码如下: signal(SIGCHLD, OnSignalSIGCHLD);static void OnSi

2016-01-30 13:06:25 894

原创 Linux下服务器端使用EPOLL ACCEPT产生的问题

最近查了3天一个技术BUT,开始并不知道是网络问题,一步步定位,最终确定是网络接收问题。进而深入前人的代码才有所察觉,因这个问题是随机性,很难重现。找到了网络问题,立马写代码重现。果然立马重现了。确定是EPOLL accept问题。因为我们的问题是服务器端 接收缓冲区中一直有数据,拿不走,连接是已建立。看看我们的代码问题出在EPOLL的模式上,EPOLL有水平模式

2016-01-30 12:02:17 773 1

原创 官方详解/proc/net/tcp

我们编写网络程序经常用到netstat -anpt 查看链接信息,这些信息本质都市来源于/proc/net/tcp  以下是每一行的详解It will first list all listening TCP sockets, and next list all established TCP connections. A typical entry of /proc/net/tcp

2016-01-29 14:34:12 5849

原创 windows下用OPENGL播放视频 -采用纹理显示

采用OPENGL纹理显示视频OPENGL 显示视频2种1.直接纹理显示 在1.0 就支持2.基于可编程(着色器)纹理显示 1.5后支持 这个之前的文章介绍过有一点要记住 在windows上显示视频,窗口DC只支持RGB,所以如果是YUV 一定要转换RGB在1.5后着色器可编程转换。1.5之前的自己转换这里介绍直接纹理显示视频1.设置显示窗口DC参数,创建OPEN

2016-01-21 11:10:18 4281

原创 windows下用OPENGL播放视频

1.下载http://glew.sourceforge.net/  微软自带的OPENGL32.DLL gl.h 太老了,好久没更新了2.OPENGL 标准定义了基本的渲染API ,还定义了窗口系统的API ,WINDOWS 用wgl**,定义在 wingdi.h 3.本代码采用OPENGL 1.2 支持顶点着色头文件#pragma once#include "vi

2016-01-18 17:38:55 1488 1

原创 OpenSSL之AES加解密API使用

#include "openssl/aes.h"#pragma comment(lib, "libeay32.lib")int main(int argc, char* argv[]){ //1.定义加解密密钥 //加密秘钥 测试用所以简单,如果暴露了该秘钥及加密算法 则可破解! const unsigned char* userkey = (const unsig

2016-01-05 17:11:40 937

原创 Linux-pthread_create使用不当可能导致内存泄露

今天在解决一个时间同步问题时发现该模块 pthread_create 返回错误 ,资源不够;细看创建线程时未设为分离模式,故每次创建线程后,即使线程退出 ,如果不 pthread_join话,该线程资源不会被释放。详细参加 man文档 已标红!NAME     pthread_create -- create a new threadSYNOPSIS

2015-12-22 23:13:11 621

原创 IOS基础-UINAVIGATIONCONTROLLER-不写代码实现分层显示

1.创建Master-Detail Application 默认创建了 导航控制器 和 表格控制器2.增加视图控制器(即增加SCENE)V1,并再拖入 Navigation Item 可修改标题 或 返回文本 3.CTRL+鼠标拖动 到 V1 弹出 菜单选择  show(eg.push) 4.如果 需要再导航栏上得按钮上进入V1 或其它视图,则再 导航栏上 拖入 Bar Button

2015-12-22 23:00:31 360

转载 IO基础-UITabBarController

本想写,但不想重复,故转。UITabBarController 与 UINavigationController 一样都是控制器的容器,原理一样,UITarBar 对应 UINavigationBarUITabBarItem 对应 UINavigationItem转http://www.cnblogs.com/wendingding/p/3775488.html

2015-12-16 23:33:11 327

原创 VLC-基于LIBVLC播放视频

安装VLC后在安装目录 找到所需要的:sdk 开发使用 ;plugins 运行使用,必须与执行文件在一个目录还有核心的dll libvlc.dll 和 libvlccore.dllVC 代码如下:#include "vlc/vlc.h"#pragma comment(lib, "libvlccore.lib")#pragma comment(lib, "libvlc

2015-12-16 09:22:27 2059

原创 IOS基础-UITableViewController

UITableViewController 为实现了基于表格提供了方便,先继承UITableViewController 再在界面上拖入UITableViewController对象UITableViewController本身实现了UITableViewDelegate,UITableViewDataSourceNS_CLASS_AVAILABLE_IOS(2_0)@interf

2015-12-15 21:25:20 356

原创 IOS基础-导航栏控制器 UINavigationController

UINavigationController 是所有控制器中重要且常用的控制器,它控制器中的控制器-控制器容器,它不仅有导航栏的作用还有toolbar的作用可以在UINavigationItem上布置很多按钮。1.创建一个Single View Application 基于storyboard2.在AppDelegate.h 中 添加 @property (stro

2015-12-10 23:39:33 952

原创 写代码的分而治之

如何做到每一行代码都知道未来的演变

2015-12-05 20:58:29 812

原创 基于UDP可靠传输协议UDT----报文协议详解

任何协议不管是网络协议还是文件协议(mp4,avi等)基本都市 由 包头+包体格式组成UDT包头+包体#include "packet.h" packet.cpp////////////////////////////////////////////////////////////////////////////////    0                   1  

2015-12-01 15:12:58 2345

转载 UDT:基于UDP的可靠传输协议

基于UDP 上的UDT ,比TCP传输效率高UDT:基于UDP的数据传输协议(初译) (译者:Jack)   Status of this Memo      This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 7

2015-11-27 17:50:16 4842

原创 基于UDP可靠传输协议UDT----剖析之发送和接收缓冲区

CSndBuffer发送缓冲区---------将应用层的数据分成大小为MSS的块并放入发送队列一:初始化,构造函数   // initial physical buffer of "size"   m_pBuffer = new Buffer;   m_pBuffer->m_pcData = new char [m_iSize * m_iMSS];//缓冲区总大小  

2015-11-27 14:48:56 2248

转载 Linux下的TCP延迟确认机制--TCP_QUICKACK

转载:http://pananq.com/index.php/2011/08/29/%E5%86%8D%E6%8E%A2linux%E4%B8%8B%E7%9A%84tcp%E5%BB%B6%E8%BF%9F%E7%A1%AE%E8%AE%A4%E6%9C%BA%E5%88%B6/案例一:某同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后

2015-11-26 21:29:32 3364

原创 我阅读过的C/C++开源项目---有的经过有的路过有的啃过有的改过

下载量最大的开源软件是哪个吗?那就是1. Linux内核  https://www.kernel.org  不管是做产品还是学习,都少不了它,计算机的技术大部分都有;学操作系统,学网络,学驱动,学文件系统,写嵌入式产品 都少不它。2.数据库3.HTTP服务器4.C++开发库5.C++界面库6. 通信中间件 zeroC

2015-11-24 23:33:12 929 3

原创 写代码的最高境界----就是不写代码

写代码的最高境界 就是不用写代码 大家都知道软件就是靠代码执行的,不写代码 写啥?不是不写代码 而是最高境界是不写代码。要达到最高境界 就需要不断磨练,积累;大家都知道在工业制造业领域,如飞机、汽车等领域很多配件都市采用成熟可靠的配件,就是所谓的COTS。那也是经历了N年后才不断完善形成标准,软件业虽然没有银弹,但并不是就没有良药。但只要深入每个细分行业,基于行业研究,一样可以

2015-11-24 23:27:20 3889 2

原创 线程安全的的map-CSuperMap

=====================================SuperMap.h============================#ifndef _SUPER_MAP_H#define _SUPER_MAP_H#include "mutex.h"#include using namespace std;template class CSupe

2015-11-24 12:59:17 597

原创 如何生成mp4文件

生成mp4库的开源有很多 1.gpac  https://gpac.wp.mines-telecom.fr2.mpeg4ip http://mpeg4ip.sourceforge.net3.mp4v2 从mpeg4ip提取

2015-11-23 22:38:02 5517

原创 G711转AAC

在嵌入式系统中 ,因资源限制,一般音频采用G711压缩编码,但在上层应用中却很少直接支持G711,一般都市WMA,AAC,MP3等。如视频系统 存储文件采用MP4格式存储 就不直接支持 G711,故需要转换成 AAC,普通播放器才能播放 。分为2步1.将 G711转成 PCM ------解码成原是流2.将PCM 转成 AAC--------编码成AAC采用li

2015-11-23 22:30:33 5893

原创 TCP连接建立过程中为什么需要“三次握手”

传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的、可靠的、基于字节流的运输层(Transport layer)通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑、带宽、延迟、分组大小和其他参数。TCP的设计目标是能够动态的适应互联网络的这些特性,

2015-11-22 11:36:13 2570

空空如也

空空如也

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

TA关注的人

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