同步IO
Linux IO的两阶段
同步, 异步, 阻塞, 非阻塞, 是网络IO中经常被提到的概念, 刚接触Tornado服务器的时候也知道Tornado是异步非阻塞的高性能web服务器, 直到最近看了一些资料才对同步异步的概念有了一些自己的想法。
HTTP协议是构建在TCP协议上的, TCP通信的底层本质上是socket的IO, 在Linux上, 以读socket为例, 数据首先到达的是内核缓冲区, 其次才会从内核缓冲区拷贝到用户进程, 所以负责通信的进程去读写socket的时候(也即recvfrom调用), 一般是两个阶段:
等待数据准备好, 此时数据暂存在内核缓冲区
数据准备好, 从内核缓冲区拷贝到用户进程
以上的两阶
继续阅读 »
项目中用到了MongoDB和mongoengine, 由于平时开发都是正式线、测试线两条线, 所以正式线连接生产环境下的数据库, 而测试线连接测试线的数据库, 两个库的物理服务器配置不同, 也就是IP和端口不一致。
之前他们一般把配置文件放在一个叫settings.py的文件里, 同时把本地配置放在local_settings.py里, settings.py里会在末尾执行一下import local_settings的动作, 这样, 在测试环境下, 一些线上配置可以通过在local_settings.py里重写从而被覆盖。
随着项目的演进, 开始出现一些测试线的服务必须调正式线的情况, 这样的话, 纯覆盖配置就不好使了, 有些
继续阅读 »
之前两个月的时间全组投入到了我们自己的TV launcher的开发, 这算是比较重要的项目, 涉及到公司未来OTT的战略性产品, 所以重视程度比较高。
我负责了轮播服务的后端开发, 当然整个技术栈还是以Tornado/Redis/MongoDB为主。经常听到兄弟们抱怨学习了那么多算法, 进BAT也得面试算法什么的, 有个啥子用, 撸了这么多年代码, 用不到啥算法, 不也照样撸的风声水起吗。哥下面就小小展示一下, 其实算法这东西是有用的, 你带着算法和数据结构的一些思想思考问题, 和你仅仅凭经验写东西, 结果是很不一样的。
所谓轮播:指的是像电视台那样的一天24小时的滚动播放,由服务端生成播放列表(频道\频道的视频列表等), 并计算
继续阅读 »
这是新的开始,我用hexo创建的第一篇文章.
用下面的命令可以新建文章:
lishuai08@ls-pc01:~/Hexo$ hexo new 新的开始
INFO Created: ~/Hexo/source/_posts/新的开始.md
以后会经常写点东西.
继续阅读 »