摘要: golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上大部分都是这样转的(包括google上):string(p[:]),这个转完了是有问题的,我们再来看... 阅读全文
posted @ 2015-08-16 05:03 安子 阅读(14486) 评论(0) 推荐(1)
摘要: 概述:•tcp建立连接。•rtmp握手。•客户端与服务器对建立rtmp连接达成一致。•创建rtmp流•客户端与服务器对play或者Publish达成一致。•客户端开始传送数据到服务器。•消息结构简述Tcp建立连接Tcp三次握手Rtmp握手•客户端发送C0+C1一共是1537个bytes.•服务端发送... 阅读全文
posted @ 2015-03-14 21:31 安子 阅读(720) 评论(0) 推荐(0)
摘要: 一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian的。少部分,如MAC OS ,是Big Endian 的。所谓MSB (Most Significant Byte)就是,一个数字中,最重要的那位,比如,12004,中文读作,一万两千零四,那... 阅读全文
posted @ 2015-03-06 17:36 安子 阅读(382) 评论(0) 推荐(0)
摘要: epoll主要是事件回调运行的,我们使用socket的时候主要使用两个事件EPOLLOUT事件:EPOLLOUT事件只有在连接时触发一次,表示可写,其他时候想要触发,那你要先准备好下面条件:1.某次write,写满了发送缓冲区,返回错误码为EAGAIN。2.对端读取了一些数据,又重新可写了,此时会触... 阅读全文
posted @ 2015-03-06 12:39 安子 阅读(15034) 评论(0) 推荐(1)
摘要: RTMPdump 源代码分析 1: main()函数rtmpdump 是一个用来处理 RTMP 流媒体的工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps:// 等。之前在学习RTMP协议的时候,发现没有讲它源代码的,只好自己分析,现在打... 阅读全文
posted @ 2014-06-13 17:34 安子 阅读(564) 评论(0) 推荐(0)
摘要: 1. 顶层(crtmpserver/) 下的文件夹结构3rdparty/ : 对lua, xml进行解析的源代码文件夹sources/ : 项目的核心实现源代码文件夹builders/ : 各种环境(VS2010, android, linux)下的项目生成con... 阅读全文
posted @ 2014-06-13 17:21 安子 阅读(432) 评论(0) 推荐(0)
摘要: 查看tt 1.4.46的代码发现加锁的地方是这样写的if(pthread_rwlock_rdlock((pthread_rwlock_t *)mdb->mmtxs + mi) != 0) return NULL; 这句话放在了读接口那里,可见如果加锁失败就拿不到数了,写数据的接口也是这个写法,bool tcmdbputproc(TCMDB *mdb, const void *kbuf, int ksiz, const void *vbuf, int vsiz, TCPDPROC proc, void *op){ assert(mdb && kbuf && 阅读全文
posted @ 2012-12-17 17:34 安子 阅读(14649) 评论(0) 推荐(0)
摘要: 曾经遇到2天内可能出现一次网站打不开的情况,会持续几十秒然后自动恢复正常,细节就不说了,说个总结经验:当机器的负载并不高,但是网页却打不开的时候,可以考虑下是否有很慢的查询,看下连接数就知道了,如果连接数很高,那就是了,然后根据php日志找到问题出在哪里 阅读全文
posted @ 2012-12-17 16:42 安子 阅读(139) 评论(0) 推荐(0)
摘要: 加锁的时候要加在while(pthread_mutex_trylock),不要简单的pthread_mutex_lock,否则在高并发下会出问题的 阅读全文
posted @ 2012-12-17 16:32 安子 阅读(182) 评论(0) 推荐(0)
摘要: 注意三件事:磁盘io,网络io,内存换页率可以为不同的进程分配不同的cpu注意吞吐量和延迟,吞吐量不稳定会影响延迟 阅读全文
posted @ 2012-09-23 10:55 安子 阅读(189) 评论(0) 推荐(0)