- 博客(29)
- 资源 (5)
- 收藏
- 关注
原创 XML关键知识点
第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。 XML 文档形成一种树结构XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素: ..... 父
2017-10-30 10:36:48 530
转载 c++ 虚继承与继承的差异
前面一篇文章,说明了在C++ 虚继承对基类构造函数调用顺序的影响。经过仔细推敲,发现没有彻底说清楚虚继承与普通继承之间的关系。所以用下面的文字再说明一下。首先,重复一下虚拟继承与普通继承的区别有:假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;假设derived 虚继承自base类,
2017-10-26 14:33:30 2807
转载 st(state-threads) coroutine和stack分析
st(state-threads) https://github.com/winlinvip/state-threads以及基于st的RTMP/HLS服务器:https://github.com/winlinvip/simple-rtmp-serverst是实现了coroutine的一套机制,即用户态线程,或者叫做协程。将epoll(async,nonblocking socket
2017-10-26 11:16:33 529
转载 协程库st(state threads library)原理解析
协程库state threads library(以下简称st)是一个基于setjmp/longjmp实现的C语言版用户线程库或协程库(user level thread)。这里有一个基本的协程例子 http://www.csl.mtu.edu/cs4411.ck/www/NOTES/non-local-goto/coroutine.html, 可以了解setjmp和longjmp的基
2017-10-25 17:53:24 1680
转载 SRS-DOLPHIN
单进程SRS支持7.5k并发,如果单机需要单机100K并发,可以使用多进程SRS,即SRS-DOLPHIN。目前测试SRS-DOLPHIN的测试数据是20K并发,理论上多进程的扩展性可以到达任意并发,只要你的CPU和网卡还有交换机够。而SRS-DOLPHIN不仅仅是高并发,还可以做容错,提高稳定性。只需要修改启动命令,兼容单进程的配置文件。SRS为何做进程?有三个主要的因素:
2017-10-25 11:17:57 743
转载 SRS提供的librtmp
librtmp是一个客户端库,好像是rtmpdump提供的一个客户端RTMP库。应用场景librtmp的主要应用场景包括:播放RTMP流:譬如rtmpdump,将服务器的流读取后保存为flv文件。推流:提供推流到RTMP服务器。基于同步阻塞socket,客户端用可以了。arm:编译出来给arm-linux用,譬如某些设备上,采集后推送到RTMP服务器。不支持直接发布h.26
2017-10-24 14:14:20 11761
转载 shell编程报错:“syntax error near unexpected token `”
今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法google搜索,发现一位仁兄讲的挺好,内容如下: 用命令vi -b 打开你的SHELL脚本文件,你会。发现每行脚本最后多了个^M。 那么接下来就要搞清楚这个^M是什么东东? long
2017-10-23 14:15:05 1468
转载 Shell 变量--shell教程
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:your_name="runoob.com"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键
2017-10-23 10:22:12 323
转载 arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
命名规则交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]arch - 体系架构,如ARM,MIPSvendor - 工具链提供商os - 目标操作系统eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,
2017-10-20 14:17:49 274
转载 将h.264裸码流推送到RTMP服务器
h.264裸码流的格式,参考“H.264-AVC-ISO_IEC_14496-10.pdf, page 211.”,这个文档的下载地址:https://github.com/winlinvip/simple-rtmp-server/tree/develop/trunk/doc/H.264-AVC-ISO_IEC_14496-10.pdf一个录制的h.264裸码流文件:http://winl
2017-10-19 16:10:19 1872
转载 Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五)Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续。 Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂L
2017-10-19 11:43:26 414
转载 Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头、注释、变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提。1. Linux 脚本编写基础◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行
2017-10-19 11:41:37 17379
转载 使用 gperf 实现高效的 C/C++ 命令行处理
命令行处理和 gperf 的作用命令行处理一直以来都是软件开发中最容易被忽视的领域。几乎所有比较复杂的软件都具有一些可用的命令行选项。事实上,大量 if-else 语句经常被用来处理用户输入,因此维护这种遗留代码相当费时,对资深程序员亦是如此。这种情形下,很多 C 开发人员通常使用冗长(通常都嵌套使用)的 if-else 语句,以及 ANSI C 库函数,例如 strcmp、strca
2017-10-19 11:17:28 762
转载 Linux性能评测工具之一:gprof篇
这些天自己试着对项目作一些压力测试和性能优化,也对用过的测试工具作一些总结,并把相关的资料作一个汇总,以便以后信手拈来! 1 简介改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的。GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof)。gprof 可以为 Linux平台上的程序精
2017-10-19 10:54:45 372
转载 解剖 Nginx ·自动脚本篇(1)解析配置选项脚本 auto/options
Author: PoechantBlog: blog.CSDN.net/PoechantEmail: zhongchao.ustc#gmail.com (#->@)Date: March 4th, 2012Copyright © 柳大·Poechant在安装Nginx之前(即运行make脚本之前),首先是进行安装的配置准备,包括环境检查及生成文件。这些工作是由自动脚本完成的。和绝大多数软件
2017-10-18 16:09:06 4312 1
转载 configure脚本分析
SRS_WORKDIR="."SRS_OBJS_DIR="objs"SRS_OBJS="${SRS_WORKDIR}/${SRS_OBJS_DIR}"# 设置输出目录 ./objsSRS_MAKEFILE="Makefile". auto/options.sh# ---- options.sh 主要代码段 begin -------opt=# f
2017-10-18 15:58:39 965
转载 ./configure,make,make install的作用
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
2017-10-18 15:43:02 476
转载 Linux系统调用--getrusage函数详解
功能描述: 获得进程的相关资源信息。如:用户开销时间,系统开销时间,接收的信号量等等;用法: #include #include #include #define RUSAGE_SELF 0 #define RUSAGE_CHILDREN -1
2017-10-17 17:48:33 1485
转载 深入剖析nginx时间缓存
本文适合对nginx实现原理比较感兴趣的同学阅读,需要具备一定的服务端编程知识。一、背景在服务器开发领域,时间的准确度关系到系统能否正常运行,尤其是当系统中存在超时事件需要处理时。但是系统时间的获取需要一次昂贵的系统调用,作为一款成熟的服务器软件,Nginx是如何优化这部分的性能开销?二、时间缓存接触过系统设计的同学都知道,对于频繁的数据获取,在数据未变化的情形下,可以通过增加缓存
2017-10-17 11:41:43 1257 1
转载 SRS性能、内存优化工具用法
SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在./configure && make后的summary中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中。文中所有的工具,对于其他的linux程序也是有用的。备注:所有工具用起来都会导致SRS性能低下,所以除非是排查问题,否则不要开启这些选项。GPERFGPERF是google tcmal
2017-10-16 11:53:46 946
转载 linux系统编程之进程(八):守护进程详解及创建,daemon()使用
linux系统编程之进程(八):守护进程详解及创建,daemon()使用一,守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统
2017-10-16 11:23:32 459
转载 UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
在“进程控制三部曲”中,我们学习到了 fork 是三部曲的第一部,用于创建一个新进程。但是关于 fork 的更深入的一些的东西我们还没有涉及到,例如,fork 创建的新进程与调用进程之间的关系、父子进程的数据共享问题等。fork 是否可以无限制的调用?如果不行的话,最大限制是多少?另外,我们还将学习一个 fork 的变体 vfork。1 fork 创建的新进程与调用进程之间的关系
2017-10-13 17:16:59 336
转载 srs代码学习(4)-怎么转发流
publish的流和play的流怎么连接呢?这个恐怕是最绕的地方了。看了一上午的代码,淹没于各种数据结构与流程之中后,俺终于发现了连接publish和play的关键连个类是SrsSourceSrsConsumer负责连接着连个类实例的是SrsRtmpConn 下面我们详细讲解连接过程上片我们说到。在底层客户端连接上来后,会经过
2017-10-12 17:58:04 970
转载 SRS(simple-rtmp-server)流媒体服务器源码分析--启动
SRS(simple-rtmp-server)流媒体服务器源码分析--系统启动一、前言 小卒最近看SRS源码,随手写下博客,其一为了整理思路,其二也是为日后翻看方便。如果不足之处,请指教!首先总结一下SRS源码的优点: 1、轻量级,代码结构清楚,目前SRS3.0代码8万行左右,但几乎满足直播业务的所有要求。 2、SRS采用St
2017-10-12 17:33:25 3831 2
转载 高性能、高并发、高扩展性和可读性的网络服务器架构:StateThreads
译文在后面;代码我放在GITHUB了:http://github.com/ossrs/state-threads。State Threads for Internet ApplicationsIntroductionState Threads is an application library which provides a foundation for writing
2017-10-12 10:30:00 519
转载 在Ubuntu 14.04 64bit上编译并研究State Threads网络线程库源码
State Threads是一个广受关注的高性能网络线程库,winlin在SRS中做了比较充分的应用,我很遗憾直到现在才精心研究它。下面是我的研究实录,以作备忘。一、源码编译下面是在Ubuntu 14.04 64bit上面的实操记录:从官网http://sourceforge.net/projects/state-threads/下载源码包,最新版是1.9,如果不能下载,就
2017-10-11 18:26:49 476
转载 srs代码学习(2)- 线程模型
代码阅读到现在。发现srs有两大类线程。一个是主线程的逻辑。一个是监听线程簇。结构图如下一定还有第三种线程模型,负责底层的多路分发。今天还没有发现。2016.08.25--21:00仔细阅读了state-threads的介绍,特别是setjmp()和longjmp()函数,发现了一下代码
2017-10-11 10:56:04 1020
转载 SrsAutoFree模式,避免内存泄漏和错误
C/C++中内存是一个很难处理的事情,正如强项就是弱项,强大的地方也是致命的地方。内存不释放就会泄漏,多次释放就会段错误,越界更恐怖。不释放和多次释放都可以用SrsAutoFree规避,越界就需要工具和经验的问题。释放和多次释放,原因是内存或者对象的生命周期过程,譬如在一个while循环中,有些时候要释放,有些时候continue就好,就容易出问题。真的需要活N久的
2017-10-09 17:13:05 848
转载 C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}
2017-10-09 16:26:01 319
GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求.pdf
2024-03-27
video_file_format_spec_v10_1.pdf
2018-05-14
Lex和Yacc从入门到精通pdf
2017-12-25
rtmpdump-2.3_add_note
2017-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人