自定义博客皮肤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

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

原创 python的并发库:asyncore和eventlet

asyncore就是纯粹的异步socket,和c++使用异步socket没有什么大的区别,就是封装了loop等。实际上还是会有很多状态。eventlet采用coroutine,本质上也是异步socket,但是已经是将异步socket同步化,没有任何状态(状态都保存在栈中),只有异步才需要考虑状态,同步根本没有状态之分。所以eventlet明显比asycore要好用很多,也复杂很多。贴一

2013-09-06 14:03:50 5189

原创 日报使用腾讯开放API

日报加上数据分析,权限一直是个问题,所以花一天时间和腾讯的开放API对接,能使用QQ号登录。https://github.com/winlinvip/daily-report

2013-09-05 19:21:48 1480

原创 性能优化的奇点

只考虑单进程的性能,多进程可以弥补单进程的性能缺陷,但是一样有单进程的性能优化问题。最初服务器的性能大约是支持800个连接,就跑到CPU100%,优化后能跑到1500连接;若码率为500kbps时,带宽从400Mbps直接上升到750Mbps,提升80%多。有些地方还是真是值得注意,性能优化就和创造一个复杂系统一样,只要指导思想对了,指日可待。性能优化工具最重要,靠人的感觉绝对是不准的

2013-07-26 11:05:54 1550

原创 centos6的性能分析工具集合

保建国是我们另外一个组做存储的人,对内核比较了解,看到我在做性能优化,说perf这个可以看到内核消耗的时间。gprof主要是优化用户空间程序调用,但有时候程序性能就是内核使用时间太多。果然,发现socket write的系统调用次数太多,改成用户空间大的buffer之后,一次发送给内核发送,性能直接提高50%。centos6下面才有这个工具,系统自带的。使用方法:perf re

2013-07-19 10:34:05 2712

原创 code-review: 去掉多余的缩进,代码会更清晰。

如图,有些缩进是没有必要的,可以去掉。

2013-07-15 18:43:28 1450

转载 linux下破解Python集成开发环境WingIDE4.1,以及使用PyCharm的使用

转载这篇文章:http://blog.csdn.net/hmily_andy/article/details/7198500windows的破解:http://blog.chinaunix.net/uid-20393955-id-3043667.html不过获取偏移量那部分我写了个脚本。readme.txt下载安装包:http://www.win

2013-06-20 18:55:20 2611

原创 KDD: dev number

设备驱动有个number,分为major和minor。驱动安装后,在dev下面创建node,即驱动对应的文件,读写文件即使用驱动。// hello.c/**# to make and install modulemakesudo insmod hello.ko# print the installed module major number.cat /proc/devices

2013-06-20 08:51:55 1289

原创 python cherrypy RESTful API,cherrypy支持跨域ajax访问,CROS,crossdomain ajax

cherrypy的文档说明比较少,看官网的例子,在python2.6中不能直接运行,需要修改如下:#!/usr/bin/python2.6'''see also:http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htmhttp://docs.cherrypy.org/stable/progguid

2013-06-09 11:52:49 3933

翻译 关于段错误的看法。。。

Another important difference between kernel programming and application programmingis in how each environment handles faults: whereas a segmentation faultis harmless during application development

2013-05-30 16:17:44 1085

原创 gdb几个有意思的用法

gdb比较有意思的用法。1. 调试core dump文件时,可以用frame查看堆栈的某个位置(当然gdb调试也可以)。这样可以看到其他位置的变量,而不仅仅是出错的那个地方。2. 自定义函数,譬如我需要频繁的执行c然后bt,可以定义个函数:(gdb) define doit>c>bt>end然后执行这个函数就好了:(gdb) doit然后不断回车就可以了。3.可以用

2013-05-29 11:55:22 1542

原创 KDD:HelloWorld

源文件:// hello.c#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "hello, world, init\n"); return 0;}static void hello_exit(void){ pri

2013-05-28 09:53:56 1356

原创 ARP:地址解析协议

以太网内部是用MAC地址传输的,ARP就是IP到MAC的映射。本机的IP和MAC信息:[winlin@dev6 ~]$ ifconfigeth1      Link encap:Ethernet  HWaddr 08:00:27:55:0F:09 在hosts中添加一个地址记录:vi /etc/hosts192.168.20.190 winlin002其中,wi

2013-05-11 22:06:59 5897

原创 NAT穿透,UDP打洞程序

在看NAT穿透和UDP打洞原理,网上都是讲原理,没有程序,我把程序写出来。server.py,辅助打洞的服务器。peer.server.py,被打洞的节点。peer.client.py,主动打洞的节点。基本原理是:1. peer.client向peer.server发个包,把自己的洞打好,这样peer.server可以给peer.client发包。这个包会被NAT拒绝掉,所

2013-05-07 18:22:23 4595

原创 找了2周的一个bug,鬼使神差的重现了这个bug

从2013-04-28找到2013-5-27,一共10天。提交了16次修正代码。有时候是Segmentation fault.,有时候是Illegal instruction。死在了一个不可能死的地方(当然所有地方都不可能死,在程序员看来)。最开始怀疑是用了空指针,所以加了很多assert(p != NULL),发现不管用。然后用tcmalloc找,找到了一个,但是还是

2013-05-07 09:06:27 1789

原创 python2.6写看门狗并发邮件

top -b 就可以去掉特殊字符。python写看门狗很合适,永不死,以及方便获取各种信息。若程序死掉,获取一些信息,然后重启程序,发邮件。发送的邮件为html格式,比文本更方便阅读。#!/usr/bin/python2.6# -*- coding: utf-8 -*-import time;import os;import sys;import signal;im

2013-05-05 21:49:43 2636

原创 造第一个SIP包REGISTER

在网上看到SIP都是直接讲明文,没有谁把代码贴出来的。用Python2.6写了一个REGISTER消息,用wireshark抓包可以抓到,不用服务器端支持,是UDP的。import socket;import time;s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);s.sendto('REGISTER sip:192.

2013-05-04 17:14:57 1870

原创 flash p2p(RTMFP)协议

adobe在2012-12-13公开了flash p2p的协议,最新的更新是2013-4-15.http://tools.ietf.org/html/draft-thornburgh-adobe-rtmfp-06在http://www.rtfmp.net上有协议的链接。翻译第一段:1. 简介 Adobe的RTMFP是为在IP网络中的点对点数据传输服务设计的。RTM

2013-05-04 10:17:34 3428

原创 还是使用tcmalloc检查内存错误

内存越界问题是最难查的c/c++问题,valgrind很有用,有时候不能用valgrind(譬如代码中有setjmp和longjmp时),可以使用tcmalloc库查内存越界问题。

2013-05-03 15:34:29 4566

原创 写可读的代码,代码不可读就是杯具

比较下代码:和下面的代码:前者除了函数名可读,其他的基本上不知道在干吗。后者基本上都是望文生义。代码可读性差,就是不负责任。写给自己的代码,往往很随意。是对自己不负责任。写给大家的代码,不能这么干,别人看不懂,就是对他不负责。

2013-04-28 13:48:40 1631

翻译 [Uncle Bob Martin] Screaming Architecture

http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html注:原文在后面。Screaming ArchitectureUncle Bob30 Sep 2011ArchitectureImagine that you are looking at the bluepri

2013-04-25 18:43:06 1415

原创 linux socketpair(UNIX domain socket)

/*g++ sp_block.cpp -g -O0 -o sp_block*/#include #include // socketpair#include #include // fork#include #include // atoi#include // errno#include // strerror#include int RecvFD(i

2013-04-21 19:13:40 2067

翻译 [Uncle Bob Martin] NO DB

翻译Uncle Bob的架构设计文章:架构不要考虑DB。

2013-04-10 09:18:27 1785

原创 linux MBR

http://www.ibm.com/developerworks/cn/linux/l-linuxboot/index.htmlIBM这篇将boot的过程的文章,提到MBR的结构:找了一台linux虚拟机,取数据如下:[winlin@dev6 ~]$ df -hFilesystem Size Used Avail Use% Mounted

2013-03-13 09:33:18 1368

原创 gprof性能分析绝对不能猜测

在流媒体服务器中,需要存储直播数据,发送给客户端,由于客户端的网速不一定都是很快,所以需要一个数据结构来存储。由于直播数据是视频和音频包,实际上是有时间序列的,那么用list最合适了,list需要频繁的在尾部插入,在头部删除。那么就用std::list。后来发现系统出现问题,大约30%的时间都用在了list的operator++上面:Each sample counts as 0.

2013-02-23 18:11:21 2058

原创 ssh使用key登陆

生成private key和public key:ssh-keygen生成key:id_rsa.pub 公钥id_rsa 私钥将key添加到目标机器:.ssh/authorized_keys编辑允许登陆的ip:sudo vi /etc/hosts.allow编辑服务器的名称:sudo vi /etc/sysconfig/n

2013-02-08 20:48:46 1170

原创 e2esoft VCam推流时推送声音

VCam可以虚拟摄像头,视频源可以是文件,FMLE推流时若需要使用视频文件的声音,可以如下设置:在声音设备中,将默认的输出设备设为e2eSoft VAudio Speaker,如下图所示:这个时候,VCamManager的声音就输出到了这个设备,很重要的一点是,需要把其他声音过滤掉。在音量合成器中,选择e2eSoft VAudio Speaker设备,如下图:

2013-02-04 16:55:55 5191

原创 linux服务脚本/etc/init.d/xxxx

服务脚本的写法:#!/bin/bash### BEGIN INIT INFO# Provides: MyServer# RequiRED-Start: $all# RequiRED-Stop: $all# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Descripti

2013-01-28 13:43:15 1918

原创 linux使用pid file

UNIX环境编程里面,讲了如何使用pid文件,但是比较隐晦,今天整理一下:原文如下:#include #include #include #include #include #include #include #include #define PIDFILE "deamon.pid"#define write_lock(fd,offset,whence,len)

2013-01-28 12:32:18 2889

原创 getrusage性能

#include #include #include #include /*** test in 32-bit, Red Hat Enterprise Linux AS release 4* Linux 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux* 1. donot us

2013-01-23 11:36:03 1151

原创 获取客户端ip地址

int GetPeerIP(int peer_fd, std::string& ipv4_or_ipv6_addr){ int client_fd = peer_fd; // discovery client information sockaddr_in addr; socklen_t addrlen = SmtSizeof(addr); if(

2013-01-22 15:38:48 1236

原创 linux(Centos6)安装svn服务器

直接执行:sudo yum install -y subversion就可以安装svn服务器。启动服务器方法为:svnserve -d -r /svnroot指定/svnroot目录为代码仓库的路径。新建仓库的方法是:cd /svnroot/svnadmin create repos使用时为svn方式,例如:svn co sv

2013-01-18 18:31:01 998

原创 linux(Centos6)安装SVN支持svn和svn+ssh方式

svn方式很简单,svnadmin create之后svnserve启动就可以访问,用svn+ssh方式需要使用serve的tunel即隧道方式,即在登录时启动一个隧道将请求作为svn方式。这个方式好像很难找到资料,百度上的真是大多是互相copy,几乎都不验证,费了老半天劲才搞明白如何做。其中有几点要注意:1. svn+ssh,需要添加一个linux系统用户,能登录系统的。2. 用

2013-01-18 18:28:27 2457

原创 linux(Centos6)安装Redmine 2.2.1

Redmine比BoardReview还要折腾,主要是让apache支持Redmine(即不通过3000端口访问,通过80端口访问),总是提示错误。后来查看apache的错误日志,才知道需要修改:1. config/environment.rb,指定环境变量。ENV['RAILS_ENV'] ||= 'production'2. public/dispatch.fcgi,加载rubygem

2013-01-17 17:32:30 5785 2

原创 linux(Centos6)安装boardreview1.7.1

最近要开始团队checkin代码,所以代码审查boardreview很重要,昨天把boardreview搭出来,svnhook那块还没有搞,不过这个简单了。最关键的是两个问题:1. boardreview是管理系统,所以依赖的东西特别多。python必须要2.6以上。2. sourceforge.net被墙了,所以有些东西在pypi上下载后安装就好了。服务器是centos6,以下是

2013-01-17 10:06:58 2959

原创 ccache编译速度很快

ccache-3.1.9.ziphttp://ccache.samba.org/http://samba.org/ftp/ccache/ccache-3.1.9.tar.xzhttp://ccache.samba.org/manual.html一个快速编译的工具,确实很快,会缓存很多头文件。一般如果改动了core(所有模块依赖它),那么所有的都得重新编译,一般是23秒左

2013-01-09 14:26:09 1568 1

原创 使用自己制定的openssl

若程序需要调用openssl,但是系统的不见得就是需要的版本,这时候可以自身编译一个版本出来,然后引用当前目录的libssl.so。所以需要在编译时指定so,并且用patchelf来修改程序查找so的目录。并且,libssl.so本身是依赖于libcrypto.so,所以也需要修改它的路径。第一步,编译opensslmkdir objscd objswget http://

2013-01-07 18:21:28 2257

原创 centos设置yum源为光盘源

公司服务器是RHEL4,所以下了个Centos4的镜像,装上虚拟机发现有两个问题:1. 安装时崩溃:VirtualBox添加虚拟机时不使用SATA硬盘,改为IDE硬盘,估计那个时候还没有SATA。2. yum无效,因为RHEL4已经不维护了,所以需要将yum的源改为本地,但是改过之后还是不行,有两点要注意:第一点,操作步骤:[winlin@localhost ~]$ cd /e

2013-01-07 16:07:23 3481

原创 Android桌面小组件的命名空间

今天发现,如果命名空间设置不对,无法控制widget的控件:public class ParentsAppWidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWi

2013-01-07 07:40:46 1527

原创 Android桌面小组件:最简例子

http://blog.csdn.net/winlinvip/article/details/8471212是Android的实例,今天做了一个最简单的实例,即显示两个文本。代码下载地址:http://download.csdn.net/detail/winlinvip/4963888步骤如下:1. 安装ADT:下载开发包:http://developer.androi

2013-01-06 08:58:57 4231

翻译 Android桌面组件开发例子

我的索爱手机给老丈人用了,但是老人家眼睛看不清楚,所以我得开发一个软件,方便使用。型号是SonyEricsson Xperia X8 E15I,是Android2.1,很老的版本了,但在2010年算比较新的了。试了一下,其实android的开发很简单,没有有些人说的那么复杂。1. 开发环境先下载ADT开发工具:http://developer.android.com/sdk/ind

2013-01-06 00:01:05 2699 1

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关注的人

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