自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

OSSRS

https://github.com/ossrs

  • 博客(10)
  • 资源 (30)
  • 收藏
  • 关注

原创 函数式组合编程,完胜类体系编程

考虑打印MP4各种BOX的实现,一种是类似类体系,用函数重载来实现:template<typename T>stringstream& __srs_print_mp4_vector(std::vector<T>& arr, stringstream& ss, int level, bool is_box){ for (size_t i = 0; i < arr.size(); i++)

2017-05-30 18:33:47 942 1

原创 timeval和timespec转换

条件等待时,调用pthread_cond_timedwait,需要从timeval转换为timespec,如果转换错误,会导致条件等待失败返回22,正确的转换方式是:void wait(pthread_cond_t* cond, pthread_mutex_t* lock, uint32_t timeout_ms){ pthread_mutex_lock(lock);

2017-05-27 21:11:09 4239

原创 GOLANG使用Context管理关联goroutine

原文:https://gocn.io/article/333一般一个业务很少不用到goroutine的,因为很多方法是需要等待的,例如http.Server.ListenAndServe这个就是等待的,除非关闭了Server或Listener,否则是不会返回的。除非是一个API服务器,否则肯定需要另外起goroutine发起其他的服务,而且对于API服务器来说,在http.Handler的处理函数中

2017-05-19 15:09:06 2870 1

原创 GOLANG使用嵌入结构实现接口

原文:https://gocn.io/article/332考虑一个Packet接口,一般会返回一个Header,例如:type PacketHeader struct { ID uint32 Timestamp uint64}type Packet interface { encoding.BinaryMarshaler encoding.BinaryUnmars

2017-05-19 13:24:18 2749

原创 使用两个context实现CLOSE包的超时等待

原文:https://gocn.io/article/331在UDP中,一般发送者发送包后,如果一定的时间对方没有收到,就需要重传。例如UDP实现握手的过程,如果握手的包,比如RTMFP协议的IHELLO,发送给对方后,如果一定1秒没有收到,就应该重发一次,然后等3秒、6秒、9秒,如果最后没有收到就是超时了。最后一个Close包,发送者不能等待这么长的时间,所以需要设置一个较短的时间做超时退出。一般

2017-05-18 20:39:49 919

原创 GOLANG实现超时对象检测的最好理解的方式

原文:https://gocn.io/article/328依赖于心跳的系统,都需要超时检测。比如P2P系统中客户端每隔120秒向数据服务器发送一次数据汇总,服务器就需要维护一个超时时间。比如一个UDP服务器,在和客户端之间创建Session之后,如果没有数据包,一般会有Ping包,说明这个Session是存活的,服务器在发现Session超时后也需要清理。首先,服务器一般需要维护一个列表,以Pee

2017-05-16 17:40:57 2887 1

原创 GOLANG接口适配,组合方式的灵活接口演化

原文:https://gocn.io/article/326在OO(Object Oriented)原则中,有一条叫做:优先使用组合,而不是继承。虽然GOLANG并不是OO的语言(没有继承和多态),但是不妨碍GOLANG使用这条原则,而GOLANG的作者就强调过这一点,在GOLANG中是使用组合而非继承来扩展。装逼的说来,继承是一种名词化的语言体系,先进行业务抽象然后设计类体系和继承关系。而组合,强

2017-05-15 20:54:06 1888

原创 GOLANG简单类型定义,在协议解析的妙用

在协议解析中,经常需要用到转换不同的含义,比如声音的采样率,在FLV中定义和AAC中定义是不同的。在FLV中只有4中采样率5512, 11025, 22050, 44100。而在AAC中有16种采样率96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350(还有4个是保留的)。也就

2017-05-11 15:41:54 4026

原创 GOLANG实现类似C++模板,返回符合类型的对象

原文参考:https://gocn.io/article/319在协议解析中,C++的模板有比较大的作用,有时候我们希望丢弃所有的包,只留下特定类型的包。参考SRS的代码SrsRtmpClient::connect_app2:类型系统的设计, SrsConnectAppResPacket继承自SrsPacket:class SrsPacket;class SrsConnectAppResPacke

2017-05-09 20:20:57 3022

原创 GOLANG的context和并发模型

GOLANG1.7新增了context,最初这个package是在golang.org/x/net/context中的,后来证实对很多程序都是必须的,就纳入了标准库。对context的介绍是在context,读这个blog之前,要先读pipelines(pipelines提出了使用close(chan)的方式广播退出事件)。一般来说,context是用在request的处理,例如http请求的处理中

2017-05-03 19:27:13 4206 2

Effective Go (中文版).pdf

Effective Go (中文版) .

2015-11-11

nginx-rtmp

nginx-rtmp

2014-01-01

H.264-AVC-ISO_IEC_14496-15.pdf

H.264-AVC-ISO_IEC_14496-15.pdf

2013-11-24

nginx-rtmp build script

build nginx rtmp base one nginx1.5

2013-11-14

OOAD booch 3rd edition

OOAD booch 3rd edition

2013-10-14

Effective.STL

Effective.STL Effective.STL

2013-03-22

android桌面小组件最简实例

android桌面小组件最简实例,最少代码。

2013-01-06

android桌面小组件

android桌面小组件官网实例 android桌面小组件

2013-01-06

Pattern.Oriented.Software.Architecture.Volume.2

Pattern.Oriented.Software.Architecture.Volume.2

2012-11-29

ISO_IEC_14496-1

ISO_IEC_14496-1

2012-11-18

ISO_IEC_14496-3

ISO_IEC_14496-3

2012-11-18

ISO_IEC_14496-10

ISO_IEC_14496-10

2012-11-17

f4v-moov

f4v-moov

2012-11-16

ISO_IEC_14496-15

ISO_IEC_14496-15

2012-11-16

Node.js开发指南

Node.js开发指南, about the node.js

2012-11-05

mp4 file format引用文档

mp4 file format引用文档 mp4 file format是 ISO_IEC_14496-14,引用了“ ISO_IEC_14496-12”文档。

2012-11-04

原版 mp4 file format

mp4-file-format ISO/IEC 14496-14

2012-11-04

ISO_IEC_14496-14_mp4-file-format

ISO_IEC_14496-14_mp4-file-format

2012-11-04

mp4 file format

mp4 file format, ISO_IEC_14496-14

2012-11-04

amf3_spec_121207

adobe amf3_spec_121207 format.

2012-10-29

amf0_spec_121207

adobe amf0_spec_121207 for amf0 format.

2012-10-29

video_file_format_spec_v10_1

video_file_format_spec_v10_1

2012-10-29

rtmp_specification_1.0

rtmp_specification_1.0

2012-10-29

The.Cpp.Programming.Language.Special.Edition

The.Cpp.Programming.Language.Special.Edition

2012-10-29

gperftools-2.0.tar.gz

gperftools-2.0.tar.gz

2012-08-04

空空如也

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

TA关注的人

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