自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(104)
  • 资源 (8)
  • 收藏
  • 关注

原创 Npm私有仓库Nexus的使用

公司内部常常搭建内网私服,用于管理封装的工具插件等,和其他源的包缓存,支持网络隔离、节省宽带流量等等,安装 Nexus 官网下载或Docker 方式安装。

2022-05-24 18:15:31 4038

原创 # Nginx 之 Rewrite

适合初级选手,详细理解nginx rewrite, 并附带示例,让以后nginx配置不再犯难。持续补充中~

2022-05-19 13:48:34 392

原创 Nginx之Location

适合初级选手,详细理解nginx location, 并附带示例,让以后nginx配置不再犯难。持续补充中~

2022-05-19 13:42:49 1391

原创 浏览器缓存的简单介绍和实践

学习浏览器的强缓存、协商缓存,了解它们的不同机制和使用场景,利用缓存机制提高网站性能,一般常见的nginx配置

2022-05-15 19:13:59 744

原创 本人遇到的常见g++编译链接错误总结

今天用g++编译程序,提示:C++ "multiple definition of .. first defined here"

2014-07-07 16:52:44 3427

转载 Boost库bind接口轻松实现类成员函数作为回调函数

C++中,将非类成员函数或者类的静态成员函数作为回调函数实现起来非常简单,但是将类的成员函数作为回调函数使用实现起来就相对较复杂,因为成员函数的调用必须有具体的实例对象支持。最近在学习BOOST库,发现BOOST库实现类成员函数作为回调函数非常容易,故发文以作简单总结。    简要介绍了BOOST库,BOOST库又被称为C++准标准程序库,库中大部分特性都被收录在C++11中,下面用到的fun

2014-07-04 13:25:54 9557

原创 Visual Studio代码字体

字体:Courier New,大小:10

2014-06-27 10:39:40 1988

转载 MINGW/MSYS与CYGWIN/GCC的介绍及区别

MinGW,即 Minimalist GNU For Windows(GCC compiler suite)。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。MinGW 并不仅是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含

2014-06-25 11:19:41 2537

原创 wubi安装32/64位Ubuntu

Ubuntu镜像文件下载地址:http://releases.ubuntu.com/,

2014-06-23 12:52:11 1416

原创 Linux下链接live555库lib的顺序

live555源码编译之后,自己程序链接live555库提示部分函数链接不到,可能是因为lib链接顺序b

2014-06-23 10:54:41 1736

转载 JavaScript两种方法实现sleep

方法一:function sleep(d){ for(var t = Date.now();Date.now() - t <= d;);}sleep(5000); //当前方法暂停5秒方法二:

2014-06-18 15:48:19 1786

原创 boost中result_of简单使用

#include int main(){ typedef double (*Func)(double d); // 函数指针定义 Func func = sqrt; // 函数指针赋值 boost::result_of::type x = func(5.0); // 类型推导 std::cout<< "x: " << x << std::endl; std::cout

2014-05-23 16:48:00 1621

原创 boost中property_tree操作内存中的数据

void ReadJson(const char * szJson){ std::stringstream ss(szJson); boost::property_tree::ptree pt; boost::property_tree::read_json(ss, pt); // 读取数据 // pt.get("cmd"); return;}void WriteJso

2014-05-23 09:59:08 1377

原创 Onvif客户端与服务器通信时鉴权的自实现

有些设备没有做鉴权,有些操作不需要鉴权,这些都

2014-05-22 10:01:39 4071 6

原创 jsonc的基本使用

官方中文主页:http://www.json.org/json-zh.html

2014-05-21 10:39:56 3705

原创 C++设计模式——基础概念

is-a  继承has-a 组合use-a 依赖

2014-05-19 14:10:44 934

原创 boost读写锁

boost::shared_mutex是共享锁,有lock、unlock方法以及shared_lock、shared_unlock方法。         boost::shared_mutex可以用来实现读写锁。多线程中的一个经典问题是一写多读,即当有线程发生写操作时,所有其他线程的读操作暂停,其他时刻,允许多个线程同时读操作。使用boost::shared_mutex构造读写锁时需要使用到b

2014-05-13 10:01:57 2721 1

原创 关于Onvif的一些总结

最近这几天搞定了Onvif的剪裁,过程中对Onvif的开发多了一些了解,现在记下来以便积累。如果哪位高手看到此文存在错误,望不吝赐教!1、大部分onvif开发者是通过gsoap工具和官网提供的wsdl文件来生成开发文件的,里面包含onvif标准的各种接口,最后再根据开发文件编写自己的程序。我觉得这个过程十分麻烦,为何不能像第三方库那样提供直接的开发文件?        答:总的来说,Onv

2014-03-09 16:56:01 3429 2

转载 剪裁Onvif:减小soapC.cpp文件的大小(二)

gSOAP生成的onvif框架代码太大了,可以通过以下方法裁剪1. 编译选项    -DWITH_NOIDREF2. 修改生成的代码,去掉所有的soap_default_xxx,这些函数里面都是将结构体的成员置为0的,完全可以用memset来代替。    修改方法:首先删掉这些函数: cat onvifC.c |awk -F' ' 'BEGIN{i=0}

2014-03-09 15:58:44 3984 1

原创 剪裁Onvif:减小soapC.cpp文件的大小(一)

背景介绍:1、本人是目前在公司是负责产品中安防设备接入的,Onvif和GB28181均是客户端,不用做服务器,所以关于服务器的细节不是很了解;2、去年根据需求完成了Onvif设备的接入,但不灵活和健壮,且so文件很大(Debug版本有18M,说到都是泪),所以剪裁Onvif的计划早已规划,今年产品系统重构刚好逮着机会试着剪裁Onvif。上一周花了三天时间终于完成了这一目标,首先得感谢Q群1

2014-03-09 14:26:57 5821 2

转载 std::tr1::shared_ptr源码赏析

vs2010的std::tr1::shared_ptr和boost的shared_ptr比起来简单易懂,代码短小精悍。我没有细读过boost::shared_ptr的代码,粗略看过,细节上的区别还是很大的。大致结构shared_ptr是一个模板类,派生自_Ptr_base。其中_Ptr_base内记录的_Ty*是用户创建shared_ptr时传入的要管理的指针;而_Ptr_base

2014-02-26 18:35:57 4451 1

转载 shared_ptr简介以及常见问题

本文中的shared_ptr以vs2010中的std::tr1::shared_ptr作为研究对象。可能和boost中的有些许差异,特此说明。基本功能shared_ptr提供了一个管理内存的简单有效的方法。shared_ptr能在以下方面给开发提供便利:1、 使用shared_ptr能有效的解决忘记释放内存带来的内存泄漏问题。同时通过自定义删除器功能还能广泛的用于任

2014-02-26 18:22:13 4730

原创 Debian系统升级

以Debian 6升级到7为例:1、打开更新源地址:vim /etc/apt/sources.list;2、将squeeze替换为wheezy;3、终端输入:apt-get update 和 apt-get dist-upgrade(不要用apt-get upgrade,可能重启之后会出现问题);4、等待缓慢升级完成然后重启即可。

2014-02-24 16:07:37 1978

原创 C++设计模式——单例模式

template class SingletonTmpl{public: static CBase *Instance() { if (0 == m_instance) m_instance = new CBase(); return m_instance; } static void Destroy() { if (0 != m_instance) {

2014-02-13 14:47:08 763

原创 C++设计模式——简单工厂模式、工厂模式、抽象工厂模式

1、简单工厂模式:C++设计模式——简单工厂模式2、工厂模式:C++设计模式——工厂方法模式3、抽象工厂模式:C++设计模式——抽象工厂模式

2014-02-10 15:42:10 1416

转载 宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等

先说一下本文中会提到的内容:##,__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__等。例如:#define myprintf(...) printk("[lch]:File:%s, Line:%d, Function:%s," __VA_ARGS__, __FILE__, __LINE__ ,__FUNCTION__);此处的 #define 的作用

2014-01-23 16:52:54 1146

原创 Linux常用开发环境安装

一. 安装 openssh-server$ sudo apt-get install openssh-server1.建立 SSH KEY: $ ssh-keygen -t rsa -P "" (注意不要多加空格或缺少空格)中途需要安装者选择保存密钥的文件,按回车使用默认的文件就可以了:Enter file in which to save the key (/home/hea

2014-01-22 17:37:37 1119

转载 RTMP协议中的AMF数据类型说明

这里有一个连接,amf0和amf3的库,我下了看了下,还是自己写吧,哎。http://wooce.iteye.com/blog/1396278参考crtmpserver的代码写的,其中有amf.h文件。  AMF数据第一个byte为此数据的类型,类型有:Number0×00double类型Boolean0×01bool类型

2014-01-14 19:53:05 5508

转载 Rtmp协议简单分析(二)——协议交互过程

具体传输的过程是这样的,首先双方先进行握手,握手过程官方文档上有说明,但是在flash10.1之后,adobe公司改了握手,文档上那个握手不能用了,至少播放AVC和ACC不能用,这东西太坑人了,改了又不说一声,而且一个本来简单的握手改的很是复杂,居然要依赖openssl加密,有必要吗。网上找不到有关文章,我只有看rtmpserver开源项目源码来弄。       握手步骤没有变,但内容完全

2014-01-14 19:21:27 2520

转载 Rtmp协议简单分析(一)——协议数据

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

2014-01-14 18:05:15 1639

原创 更新 Debian 的 SVN 版本

Debian版本在Linux桌面版本中占用内存较小,也不会频繁的更新版本,但往往软件版本不是最新。比如我在Debian 7.2上apt-get install subversion默认安装SVN的版本是1.6的,但我的SVN库最低要求是1.7,而最新SVN版本是1.8了。如果你发现使用apt-get update和apt-get upgrade之后却不能更新,可以参考下面的方法。(以SVN

2014-01-08 19:44:35 1890

原创 Linux错误代码定义表

errno-base.h#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /*

2014-01-03 10:19:31 913

转载 linux 编译指定库、头文件的路径问题

1.为什么会出现undefined reference to 'xxxxx'错误?首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得不对,你没有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译参数里指定程序要链接数学库,方法是在编译命令行里加入-lm。2.-l参数和-L参数-l参数就是用来指定程序

2013-12-17 13:32:14 2357

转载 流媒体Live555(五)——openRTSP流程分析

openRTSP是对RTSPClient的实现,与服务器对应的客户端功能1、初始化BasicTaskschedular::createNew()BasicUsageEnvironment::createNew()解析输入streamURLourClient= createClient(streamURL)\_ourRTSPClient = RTSPC

2013-12-10 18:35:40 1368

转载 为现有的二进制文件制作deb包

如何制作Deb包和相应的软件仓库,其实这个很简单。这里推荐使用dpkg来进行deb包的创建、编辑和制作。1. deb包的文件结构deb 软件包里面的结构:它具有DEBIAN和软件具体安装目录(如etc, usr, opt, tmp等)。在DEBIAN目录中起码具有control文件,其次还可能具有postinst(postinstallation)、 postrm(postremove

2013-12-03 22:11:26 4200

原创 Windows和Linux下播放采集wave格式音频文件的简单记录

wave音频的部分介绍可参看前面两篇文章:WAV格式常见的几种压缩形式(compression code)、WAV音频格式。Windows:1、在windows上,api基本上屏蔽了驱动的不能,可直接使用windows media api,播放使用waveIn_xxx系列,采集使用waveOut_xxx系列。2、如果你熟悉ffmpeg,也可使用里面的接口进行播放和录制。不过wa

2013-12-01 22:36:24 2313

转载 WAV音频格式

WAV是音频文件存储格式,不是音频的编解码。另可见,WAV格式常见的几种压缩形式(compression code)。1、综述    WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。    WAVE文件是由若干个Chunk组

2013-12-01 19:43:27 1771

转载 WAV格式常见的几种压缩形式(compression code)

WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道。标准格式化的WAV文件采样频率为44100Hz,采样比特为

2013-12-01 19:38:54 12223 1

原创 Windows和Linux编译Live555的Debug版本(可调式)

修改UsageEnvironment/include目录下的UsageEnvironment.hh文件,加入DEBUG宏定义#ifndef _USAGE_ENVIRONMENT_HH#define _USAGE_ENVIRONMENT_HH#define DEBUG 1 // 新添加#ifndef _USAGEENVIRONMENT_VERSION_HH#include "Usag

2013-11-29 11:23:14 3601

转载 RTSP服务器实例live555源代码分析

1. RTSP连接的建立过程      RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话。      首先创建RTSP服务器(具体实现类是DynamicRTSPServer),在创建过程中,先建立Socket(ourSocket)在TCP的554端口进行监听,然后把连接处理函数句柄(RTSPSe

2013-11-28 18:45:09 1180

剪裁onvif之后的wsdl文件示例

剪裁onvif之后的wsdl文件示例。可从onvif官网上下载原始wsdl进行比对。剪裁方法:http://blog.csdn.net/stelalala/article/details/20837215

2014-03-09

G711参考资料

开发网络音频的资料,下载源地址是http://www.cs.columbia.edu/~hgs/research/projects/NetworkAudioLibrary/。注:project目录下还有更多的项目,可自行参考。

2013-12-01

Live555源码分析RTSP客户端

Live555源代码分析之RTSP客户端testRTSPClient Author: 灯下野狐 E-mail: dengxiayehu@yeah.net Date : 2012-02 PS : 欢迎交流,转载请务必注明出处。 以 testRTSPClient.cpp 为例,介绍 Live555 中 RTSP 客户端的处理。

2013-11-29

RTSP学习笔记

RTSP学习笔记,带书签。可转换为pdf

2013-11-28

Log4cplus使用指南(带书签)

Log4cplus使用指南 非常详细 由docx转换的 带书签

2013-08-22

RTSP流媒体协议

RTSP流媒体协议详细介绍,简洁易懂,比较适合初学者了解RTSP工作流程。

2013-07-01

ONVIF_实战详解

非常好的ONVIF开发介绍文档,适合初学者学习参考,本文档简洁的说明了onvif开发的流程和框架。

2013-06-17

空空如也

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

TA关注的人

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