自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (2)
  • 收藏
  • 关注

原创 NAT及NAT穿越

基本概念公有IP地址:由NIC分配,全球唯一,可寻址私有IP地址:组织机构内部使用,IANA保留了三块私有地址: 10.0.0.0 ——— 10.255.255.255 172.16.0.0——— 172.16.255.255 192.168.0.0———192.168.255.255”地址池:地址集合NAT作用:将私有网络内部IP地址转换为合法的公有IP地址,解决公网地址不足

2017-03-30 17:54:51 1094

原创 vecor/list/dequeue

vector本质是动态数组,从堆中分配内存,拥有连续内存段,支持[] 操作,因此随机存储效率很高。 在中间或者开始处插入元素需要移动内存,效率不高。在尾部进行插入或者删除时则不需要移动内存。 每次容量扩张时扩展2倍,因此存储比较大的结构或者类时比较容易发生内存扩张(而且还要执行构造和析构),比较不划算,最好存储结构或者类的指针,或者小对象。list内存空间不连续,每删除一个元素都会释放内存,没有

2017-03-24 16:50:21 475

原创 TCP和UDP的缓冲区

接收缓冲区的默认值 保存在/proc/sys/net/core/rmem_default接收缓冲区的最大值 /proc/sys/net/core/rmem_max 发送缓冲区默认值 保存在/proc/sys/net/core/wmem_default发送缓冲区的最大值 /proc/sys/net/core/rmem_max 实际接收缓冲区(最小值/默认值/最大值) /

2017-03-14 10:58:59 1532

原创 libevent源码详解(四)应用流程详解

libevent应用流程1.调用event_base_new()创建自己的event_base。2.调用event_new()创建自己的事件。3.调用event_add将自己创建的event添加到event_base中。4.调用event_base_dispatch()进行循环等待事件发生。其它的一些接口evsignal_add(),evtimer_add,evbuffer_setcb都是

2017-03-07 18:16:08 802

原创 libevent源码详解(三)数据结构之event、event_base

sturct event事件定义事件类型事件状态三个链表event_baseReactor模式Reactor模式组成handleEventHandler事件源事件处理程序Synchrounous Event Demultiplexer同步事件多路复用器Reactor反应器Reactor模式处理流程event_base定义libevent对Reactor反应器接口的实现li

2017-03-03 16:46:13 628

原创 libevent源码详解(二)数据结构之最小堆

最小堆定义堆是一棵二叉树树的父节点总是小于子节点(反之则为最大堆)最小堆数据结构typedef struct min_head { struct event **p; unsigned n,a;}min_head_t;libevent使用数组的形式来存储最小堆,数据结构中的p就是用来存储堆节点的数组,节点的类型为struct event *。数组的大小,即堆的大小用a来表示。堆的元

2017-03-02 16:25:46 558

原创 libevent源码详解(一)数据结构之尾队列

libevent中的队列一个很重要的数据结构就是尾队列。CSDN已经有很多文章分析libevent的尾队列了,但是跟其它常见的数据结构例如单项列表、双向链表比较得比较少。在这里我来解析一下尾队列相对这些常见数据结构的不同。常见的数据结构单链表struct slist { struct slist *next; int val;}; 单链表图解双向链表struct dlist

2017-03-01 18:22:34 574

原创 centOS开机卡在进度条界面问题解决

centOS开机卡在进度条界面,很多情况卡在是自己chkconfig的开机启动项目,一般是用户进程进入死循环,导致无法进入用户界面。要解决这个问题,只能进入centOS的单用户模式,然后把对应的开机启动项关闭。具体的方法是:1.开机时按 'e' 键, 然后进入grub菜单。2.选择要启动的版本,然后按 'e' 键3.选择 带kernel的项,然后按 'e' 键,在后面添加

2017-02-24 15:32:26 24517 3

转载 vsftpd配置文件详解

vsftpd配置文件详解 1.默认配置:1>允许匿名用户和本地用户登陆。     anonymous_enable=YES     local_enable=YES2>匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传。3>本地用户的登录名为本地用户名,口

2017-02-16 10:43:47 256

原创 clock_gettime接口和linux时间系统

RTC/OSCRTC,Real Time Clock,真实时钟,也叫做CMOS时钟,又叫walltimeOSC,Operation System Clock,系统时钟。在开机时操作系统取得RTC中的时间数据来初始化OSC,之后完全由完全由操作系统控制。当设置OSC时间时,RTC时间不会自动同步,待关闭或者重启时,操作系统会自动同步OSC时间到RTC, 操作系统每隔一个固定时间会刷新或校

2017-02-13 16:04:54 8848

原创 让父进程在退出时所有的子进程连同用system启动的进程一同退出

1.system函数的实现int system(const char * cmdstring){  pid_t pid;  int status;  if(cmdstring == NULL){            return (1);  }  if((pid = fork())        status = -1;

2016-12-24 12:07:31 1063

转载 音视频的一些基本概念

容器格式:不管是音频文件还是视频格式的文件,都是一个多媒体的容器,即container,比如常见的视频容器格式有avi、mp4、mkv、flv、rm/rmvb、mov、ts、vob、dat,音频容器格式有MP3、WAV、AAC、APE,FLAC等等,它容纳了视频、音频、字幕(subtitle)等一个或多个基本流数据,有的甚至一个容器中存放有多个视频、音频以及字幕。压缩格式:对视频、音频数据

2016-12-09 11:42:28 954

原创 用onvif+gsoap设置海康IP摄像头的一个坑

在线程中设置码流的分辨率、帧率、gop时,如果直接用tt__VideoEncoderConfiguration 定义自己的EncoderConfiguration然后去调用soap_call___trt__SetVideoEncoderConfiguration,多半进程会挂掉。正确的思路是先获取对应视频通道下的EncoderConfiguration,然后在调用SetVideoEncoder

2016-12-08 12:39:40 11608

原创 ffmpeg一些常见命令

ffmpeg一些常用参数I 视频1.ffprobe例子ffprobe -v quiet -print_format json -show_format -show_streams Wake_Me_Up.mp4-v quiet指不输出命令行详细的信息-print_format 指定输出格式,可选的有default,compact/csv, flat, ini, j

2016-12-08 12:27:50 1107

转载 UUID详解

UUID是什么?UUID,通用唯一识别码,由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。UUID具有以下涵义:    经由一定的算法机

2016-11-15 15:27:37 6154

原创 AAC音频文件时长计算

1.如何计算音频文件的时长?大致的思路如果文件是CBR,则总时长为t=file_size/bitratebitrate则是文件的固定码率。对于固定码率的音频文件必定有文件头可以读取到这个消息。file_size为整个音频文件的长度。如果文件是VBR,则总时长为t=file_size/average_bitrateaverage_bitrate为文件的平均码率。1.2如何计算

2016-10-27 11:44:02 5162

转载 FLV视频封装格式详解

OverviewFlash Video(简称FLV),是一种流行的网络格式。目前国内外大部分视频分享网站都是采用的这种格式.File Structure从整个文件上开看,FLV是由The FLV header 和 The FLV File Body 组成.1.The FLV headerFieldTypeCommentSignat

2016-10-24 11:02:03 221

转载 基于RTMP协议的h.264码流传输以及各种视音频封装格式分析

一个完整的多媒体文件是由音频和视频2部分组成的。H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。字幕文件只是其中附带部分。把视频编码和音频编码打包成一个完整的多媒体文件,可以有不同的方式,这种方式便是所谓的封装方式,不同的封装方式有不同的后缀。由于有些封装方式具有很强的灵活性,它可以把各种不同的音视频文件打包成一个文件,因此会出现这么一种情况,虽然文件的后缀是相同的

2016-10-20 10:30:16 1215

原创 编译nginx+rtmp排错

具体的编译步奏和需要的第三方库看这篇博文:http://blog.chinaunix.net/uid-26000296-id-4335079.html编译过程中遇到的一些错误及其解决方法:1.nginx_mod_h264_streaming-2.2.7 提示ngx_http_streaming_module.c:158: error: ‘ngx_http_request_t’

2016-10-18 14:36:01 528

转载 nginx+rtmp

RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。它有三种变种:1)工作在TCP之上的明文协议,使用端口1935;2)RTMPT封装在HTTP请求之中,可穿越防火墙;3)RTMPS类似RTMPT,但使用的是HTTPS连接; RTMP协议就像一个

2016-10-18 11:26:24 500

转载 tcp/udp套接口缓冲区

概念:   MTU:链路层上数据帧中数据的最大值,即IP数据报的整个值。详见TCP/IP第7页。数据进入协议栈的封装过程。   MSS:TCP报文段中数据的最大值---MSS选项只能出现在SYN报文中。TCP输出:每个TCP套接口都有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用程序调用write时,

2016-10-14 15:19:35 338

转载 SCP和SFTP不用输入密码的信任公钥方法攻略

大多对密级要求较高的企业单位都使用SFTP方式传输,但是SFTP传输必须输入密码,对于通过脚本定时传输文件非常不方便。信任公钥(对称公钥)方法解决了每次都输入密码的问题:使用客户端生成密钥钥对,将公钥添加到服务器的信任公钥表中,即完成了服务器对客户端信任的添加,再次使用SCP或者SFTP则不需要密码。工具/原料

2016-10-14 15:18:03 6990

转载 管道命令和xargs的区别(经典解释)

一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别NewUserFF 写道:懒蜗牛Gentoo 写道:管道是实现“将前面的标准输出作为后面的标准输入”xargs是实现“将标准输入作为命令的参数”你可以试试运行:代码:echo "--help"|catecho "--help"|xargs cat看看结果的不同

2016-10-09 09:15:22 335

转载 用shell脚本生成文本文件

用shell脚本生成文本文件17 December 2014在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢?我用过两个方法,下面分别举例说明。为了更通用,这两个例子中的文本内容都是多行的。使用echo命令echo "Hello, World!My name is Shengbin

2016-10-08 17:08:21 14288

转载 gdb查看栈帧信息

一些查看函数调用栈信息的GDB命令:backtracebt打印当前的函数调用栈的所有信息。如:(gdb) bt#0 func (n=250) at tst.c:6#1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30#2 0x400409ed in __libc_start_

2016-08-29 15:18:37 1281

转载 搭建nginx rtmp直播服务器,ffmpeg模拟推流

Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)从安装开始Nginx的安装参照我之前的这个: http://redstarofsleep.

2016-08-23 15:50:42 4231

转载 SDP协议简述

SDP协议概述简介SDP 完全是一种会话描述格式, 它不属于传输协议.它使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、 实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强, 这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的

2016-08-05 16:15:49 285

转载 rtsp详解二之wireshark抓包分析

一、概述    RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。    RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。RTSP本身并不用于传送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。  基本的RTSP操作过程

2016-08-05 10:04:02 1811

原创 VOIP音视频带宽计算

单个网口的最大并发路数跟网口的实时速率、音视频的码率有关。1.网口最大工作速率网口的实时速率跟网卡芯片有关,常见的有100M和1000M。现在网口基本都是千兆网口了。linux下查看自己网口的最大速率,可以使用命令ethtool+网口名。我的电脑下查看结果如下:可见我的电脑支持10/100/1000兆全双工三种工作模式。2.音频码率音频码率跟音频编码

2016-07-07 12:14:07 1653

转载 Libevent使用例子,从简单到复杂

转载请注明出处: http://blog.csdn.net/luotuo44/article/details/39670221本文从简单到复杂,展示怎么使用Libevent。另外网上的很多例子都是只有服务器端的,本文里面客户端和服务器端都有。不说这么多了,直接上代码。初等:客户端代码:#include#include#include#include#incl

2016-07-04 11:06:17 375

转载 STUN/TURN/ICE协议在P2P SIP中的应用(二)

http://www.cnblogs.com/ishangs/p/3816689.html1       说明2       打洞和穿越的概念... 13       P2P中的打洞和穿越... 24       使用STUN系列 协议穿越的特点... 25       STUN/ TURN/ICE协议的关系... 36     

2016-06-24 18:16:06 372

转载 WebRTC音视频引擎研究(1)--整体架构分析

原文地址:http://blog.csdn.net/temotemo/article/details/75305041、WebRTC目的              WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox\...)轻易快捷开发出丰富的实时多媒体应用,而无需

2016-06-24 18:14:41 466

转载 NAT原理与NAT穿越

最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下。先做一个约定:内网A中有:A1(192.168.0.8)、A2(192.168.0.9)两用户               网关X1(一个NAT设备)有公网IP 1.2.3.4内网B中有:B1(192.168.1.8)、B2(192.168.1.9)两用户,               网关Y1(一个NAT

2016-06-22 10:12:57 293

转载 RTSP协议介绍

1. 实 时流协议RTSPRTSP[3]协 议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继 续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。1.1.  RTSP协 议简介要 实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和 媒体服务器(m

2016-03-18 14:49:46 264

转载 C++ 虚函数表解析

C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel  前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R

2016-03-03 12:03:37 228

转载 怎样计算C++继承、虚继承、虚函数类的大小

一、真空类C++代码class CNull  {    };    长度:1  内存结构:  ??  评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。  二、空类C++代码class CNull2  {  public:    CNull2(){printf("Construct/n

2016-03-02 15:11:20 270

转载 C++虚基类的实现机制

在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成

2016-02-29 17:40:13 458

转载 c++ 虚函数的实现机制

1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public:    virtual void f();    virtual void g();private

2016-02-29 17:38:37 237

转载 C++对象模型笔记:对象的三种内存布局

原文地址:http://blog.csdn.net/jiangnanyouzi/article/details/3775637如侵删。下面的C++代码定义了一个类Point:[cpp] view plain copyclass Point  {  public:      Point(float xval);      virtual ~Point();  

2016-02-29 17:36:18 317

原创 继承与组合的区别

组合与继承都是一种常用的代码复用技巧。他们之间的的区别有如下几点。has-A/is-A两个类的组合属于整体与局部的关系,就例如人体与手、脚、眼睛等的关系。而两个类的继承属于从属关系,就例如父亲与儿子的关系。松耦合/紧耦合继承中,子类能够看到父类测实现细节,能够通过重写来改变父类的行为,一定程度上破坏了封装性,是一种紧耦合。 组合中,整体类只关心子类的功能,不关心具体的实现,也无法改写父类的接口,是

2016-01-30 17:31:53 738

用户登录机制.pptx

用户登录机制:主要描述了互联网后台常见的用户登录机制。

2019-07-25

信息安全及其在用户登录系统中的应用.pptx

各种加密算法的介绍及其在用户登录系统中的应用。

2019-07-25

空空如也

空空如也

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

TA关注的人 TA的粉丝

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