- 博客(291)
- 资源 (30)
- 收藏
- 关注
原创 GO方便的类型系统
GO类型系统GO中很方便在基本类型上定义新的类型,这个虽然是个小东西,但是有时候非常好用。IsXXX经常需要定义这样的函数,譬如RTMP的消息IsAudio,IsVideo等等。如果是C++就需要定义个结构体,然后加函数:class SrsCommonMessage{public: SrsMessageHeader header;};class SrsMessageHeader{p
2015-11-20 10:19:09 272
原创 GO-SRS with TravisCI
GO-SRS with TravisCIGO的测试支持得比较好,GITHUB和TravisCI集成得很好,因此GO-SRS不仅仅可以做到TDD测试驱动,而且可以很方便的CI,一点点都不增加使用成本。GO TestCI的前提是TDD比较完善,GO对于Test是支持的很好的,执行命令:cd go-srs && go test .就可以运行GO-SRS的测试,结果如下:localhost:go-srs w
2015-10-24 14:23:34 1274
原创 Kafka协议分析
Kafka协议分析Kafka客户端协议可以分析出Producer、Consumer以及Kafka一些细节。HostBroker有个配置,是配置Host的,默认获取的系统的host。这个对于刚刚接触Kafka的用户不好理解,这个host干什么用的呢?其实,Broker连接到zookeeper后,注册的是自己的host,也就是不是zookeeper自动获取的Broker的IP,而是Broker自己告诉z
2015-10-22 11:27:39 1921
原创 CURL GITLAB API
GITLAB的API可以直接使用CURL发起,不过如果是POST,得指定是json才行,否则就死活报没有指定里面的某个字段。譬如,创建PullRequest这个API,CURL的命令如下:project_id=10000private_key=DUEHdkdhueUEiejdnieesource_branch=testtarget_branch=mastercurl "https://git
2015-10-10 18:04:20 3183
翻译 Kafka协议翻译
Kafka协议Kafka是linkedin开源的一个数据传输框架,主要的定位是解决一个数据源多个消费者的应用场景,支持和Storm、Spark、Flume对接,提供负载均衡和容错的集群,用来传输各种数据日志。Links关于Kafka的介绍,请参考kafka doc。关于Kafaka的协议,请参考kafka protocol。关于Kafka的设计理念,参考kafka log。本文主要是记录kafka协
2015-09-17 16:42:55 2080
原创 两个贷款计算器
贷款计算器都知道复利,但实际上只有算出来才知道复利多么牛逼。车贷# -*- coding: utf-8 -*-import math;rate=3.5 #投资年利率years=5 #还款年限extra_pay=15960 #贷款额外花费total=201315-extra_pay #全款卖车费用=总共花费的-贷款额外花费的first_pay=70965 #首付款sum=total-fir
2015-09-07 22:17:09 2435
原创 GO环境设置
关于go的特点,参考:http://blog.csdn.net/win_lin/article/details/18236737GO环境下载linux 64位的go的包:https://storage.googleapis.com/golang/go1.3.3.linux-amd64.tar.gz 其他参考:http://www.golangtc.com/download解压后移动到/urs/lo
2015-09-07 14:48:18 3948 1
原创 GO备忘录
GO备忘录GO是C之后一门难得有鲜明特色的语言,不仅仅是一些语法糖,确实解决问题的思路,想法是不太一样的。这篇文章是我看到的,和用到的,一些常见的GO的备忘录,但是有的地方不仅仅局限于用法,而是汇总一个专题。errorGO的error错误对象GO只要实现了error接口,就可以是一个error对象了。常见的是项目有全局的错误对象,就像错误码一样,返回错误对象,比较错误是否是某个错误对象。var Er
2015-09-07 14:42:09 3084
原创 Spark分析SRS日志,以及Zookeeper和Kafka备忘录
Spark分析SRS日志本文描述了如何使用Spark分析SRS的日志,环境搭建参考HDFS和Spark,下载SRS实例日志。ClusterHDFS和Spark的URI是hdfs://hdfs.winlin.cn:9000和spark://hdfs.winlin.cn:7077,集群的配置如下: Server OS Role CPU Mem(MB) Namenode Ubun
2015-07-14 16:51:10 2726
原创 IDEA调试SPARK程序
IDEA调试SPARK程序为SPARK部署好HDFS后,就可以部署SPARK环境了。如何部署HDFS参考HDFS。IDEA for Scala在Scala官网,就有IDE的说明,IDEA中比较方便的编写和调试Scala程序。步骤如下:下载IDEA社区版,注意你的版本,譬如是IDEA 14.0.3,特别是Build #IC-139.1117。Scala插件要求IDEA的指定版本。下载Scala P
2015-07-13 18:14:28 4276
原创 对各种语言的偏见
对各种语言的偏见这大致是我编程语言的学习经历:2003年学html/js2004年开始学C2004年学C++2005年学汇编和C#2007年学PHP2009年学Python2013年学GO,深入学了JS(JQuery,AngularJS)2014年学Java(Android)2015年学Scala(Spark)我虽然没有发明一门语言,但这些语言都用在实际不小的项目中,作为使用者对
2015-07-10 17:33:09 2575 9
原创 Scala语法要点
Scala语法要点变量和函数的声明Scala中比较奇怪的是变量和函数声明,譬如:// 下面是两种变量,一种是普通变量,另外一种类似C++的引用var v0 = 10val v1 = 10// 函数的声明,用的def关键字,但是也用等号def f0(): Unit = { println("this is a function")}Scala的函数返回值Unit是没有返回值的意思,参数也
2015-07-09 19:01:24 1198
原创 为Spark部署HADOOP2.6的HDFS集群
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-07-08 12:13:53 1509
原创 FlashP2P中的key交换
观察RTMPLITE和CUMULUS中的代码,可以发现FlashP2P中的key交换,有两种可能的模式。首先,IHello和KEY交换没有关系,可以忽略。RHello的cert,即rcert,可能有两个模式:4+64+9 bytes,这种是服务器返回的模式;而4+128 bytes是flash返回的模式,即后面128字节是pub key。IIKeying的skic,用来计算secret
2015-06-11 17:49:00 1005
原创 SRS进入20K时代,不仅仅是并发
SRS进入20K时代,不仅仅是并发2015-05-29 winlin SRS单进程SRS支持7.5k并发,如果单机需要单机100K并发,可以使用多进程SRS,即SRS-DOLPHIN。目前测试SRS-DOLPHIN的测试数据是20K并发,理论上多进程的扩展性可以到达任意并发,只要你的CPU和网卡还有交换机够。而SRS-DOLPHIN不仅仅是高并发,还可以做容错,提高稳定
2015-05-29 11:29:13 8756 3
原创 HADOOP和Spark统计SRS的代码的单词频率
先clone下来SRS的代码,国内推荐oschina阿里云的镜像:mkdir -p ~/git/ && cd ~/git &&git clone git@git.oschina.net:winlinvip/srs.oschina.git设置好java环境,解压hadoop 2.7,添加到PATH,也就是能执行java和hadoop之后,就可以统计SRS的代码了:cd /usr/loc
2015-05-09 09:26:22 1433
原创 golang的局部作用域和变量推导
很多人喜欢golang的接口,不用声明就可以实现;但我更喜欢golang的变量推导和if表达式,看下面一段代码: var ok bool var vhost *SrsVhost if vid,err := bravo_json_get_number(stream, "vhost"); err != n
2015-04-02 17:28:49 2398
原创 SRS微信号和QQ群
联系方式:https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Contact
2015-03-14 23:25:55 3242 1
原创 git的branch以及merge
用惯了svn,对于git的merge和branch始终不太会用,srs在github上后开始用git,用了一年多才慢慢搞清楚一点点东西。git的merge很靠谱,不用每次都手工merge,必须使用branch的merge,否则会很慢。不过merge需要搞清楚那些branch,以及merge,还有commit之类,需要花些时间。一般的惯例是master+release+develop,或
2014-11-28 10:56:48 3861
原创 linux通过samba共享在windows下直接修改
安装完linux后,关闭防火墙和selinux。防火墙有时候关闭后每次还会启动,所以登录后最好再关闭一次:
2014-11-20 12:27:20 2575
原创 st(state-threads) coroutine调度
st(state-threads) https://github.com/winlinvip/state-threads以及基于st的RTMP/HLS服务器:https://github.com/winlinvip/simple-rtmp-serverst是实现了coroutine的一套机制,即用户态线程,或者叫做协程。将epoll(async,nonblocking socket
2014-11-11 12:16:37 5070
原创 st(state-threads) coroutine和setjmp/longjmp的关系
st(state-threads) https://github.com/winlinvip/state-threads以及基于st的RTMP/HLS服务器:
2014-11-09 11:47:01 5169
原创 BASH代码Refine实例
有段代码是这么写的:#!/bin/bashfunction build_license_3_0(){ echo "build license_3.0 in ${work_dir}" cat << END cd ${work_dir} && "Building C object license.o" gcc -DARCH_X86
2014-09-25 16:59:28 1041
原创 读《逍遥游》感叹中国教育
庄子的这个文章,上过高中都读过,就算没上过高中知道“鲲鹏展翅”这个成语的也算知道。真的知道逍遥游在说什么吗?我敢肯定绝对不知道,因为我特地读了N遍,就是为了搞懂说的是什么,可惜就是搞不懂,似懂非懂——我想可能是老师也没怎么搞懂的缘故吧,我一直心有不甘:都说好文章,我自己都说好,可惜都不知道说的是什么,就说人家文章好么?!我现在也不能说懂了,至少我知道了几点很重要的:1.庄子没有什么
2014-09-21 09:37:32 1992 1
原创 FlashP2P系统(客户端)系统分析和设计谍照
前段时间做完了RTMFPD,即FlashP2P服务器端;现在在优化和改进客户端。稍微分析和设计了下FlashP2P系统的客户端,即as3播放器
2014-09-07 11:32:47 1558
原创 一组RTMFP服务器性能对比
最近研发了公司的rtmfp服务器,参考http://blog.csdn.net/win_lin/article/details/38779151,原因是cumulus性能还是不满意。对性能进行对比测试,
2014-08-24 07:11:01 3526 1
原创 RTMFP服务器的研发过程
SRS大家见到时,已经准备release 1.0了,其实从0到1.0的过程才是最重要的。最近在弄RTMFP服务器,虽然我们公司不开源,但是记录我们做这个服务器的过程,应该是没有问题的。简介RTMFP有开源的服务器,譬如cumulus,我们也是用的cumulus。cumulus一个进程大约能支持5000并发,我们给新蓝网做直播前两期有近20万,第三期少一点也有4万
2014-08-23 16:10:28 6684 11
原创 c++的基本概念还是非常值得学习和使用的东西
autofree可以参考:http://blog.csdn.net/win_lin/article/details/13621145
2014-08-14 11:21:45 1389
原创 为何没有单元测试就没有高质量代码?
写代码的几乎都不写单元测试,写单元测试的几乎都是被逼无奈。只有当自己的目标是写自己的软件,质量当然是最重要,而且没有时间x
2014-07-05 11:29:14 1530
原创 angularjs和jquery在CRUD上的区别
angularjs最大的优势,在于对于CRUD采取了对象化。以前要用jquery将数据绑定到dom中,现在是直接对象处理。所以在这个层次上来讲,angularjs的定位和思路是很不错的。对比下面jquery做的一个用户注册y
2014-06-14 17:55:33 1976
转载 转载:公司都以什么为技术的核心竞争力
别说,google的图像搜索能找到,baidu的不行。 google很牛逼啊,为何国外公司能这么牛,而且还挺愿意开放的。而我们国家的公司就生怕代码外泄,html都不能外泄。让我跑一下火车:可能我们国家大多是没有格局和胸怀的公司,也可能是被生存逼迫的。 让火车跑快点:如果以打仗为类比,最重要的是大将军,如果没有大将军就要靠将军,如果将军都没有就靠士卒勇猛,如果士卒都怕死只
2014-05-10 13:49:52 1464
Pattern.Oriented.Software.Architecture.Volume.2
2012-11-29
mp4 file format引用文档
2012-11-04
The.Cpp.Programming.Language.Special.Edition
2012-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人