归档 2014年6月

最后更新于 .

测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。

django、flask、bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok。

tornado直接自己启动,其他内容一致。

测试软件为 siege,测试os为cenos6 64位,测试命令为:

siege -c 100 -r 100 -b http://127.0.0.1:5000/

django测试结果为:

Transactions:		       10000 hits
Availability:		      100.00 %
Elapsed time:		       18.51 secs
Data transferred:	        0.02 MB
Response time:		        0.18 secs ...

最后更新于 .

上一篇文章聊了下数据存储和常用的传输协议,不过对于自定义传输协议这里留了个坑,正好有点时间,就抓紧填上:)

既然选择原生socket,那么有个基本的选择就是tcp/udp的问题.

这个其实还是看业务自己的选择,只是如果选择了udp的话,那么很多问题都可以不用考虑,比如粘包问题。但是udp有个限制是每次传输的数据大小不能超过64K,这个要注意。

为了考虑复杂的情况,我们还是主要说tcp的实现,这篇文章先说下socket使用相关的一些库和代码吧

Android端开发

对于android端,我们有两个主要选择:阻塞socket和非阻塞socket。

阻塞socket就是正常的socket,当调用recv的时候,会阻塞住直到返回数据。

非阻塞socket在android上可以直接使用nio,因为自己之前一直是做c++和python,所以其实一开始nio的时候真心有些不太使用,把几个要注意的点列一下:

1. 当网络断线的时候,有些手机如S4,会出现这个问题,channel.finishConnect()会一直等超时 60秒。之后会抛出一个 TimeoutException.

解决方法是:

channel.socket().setSoTimeout(5)

来设置成只等5秒。

比较诡异的是,明明是异步io了,为什么还是会有等待超时的情况。还要在研究下。

2. 当网络不在线的时候,启动connect,依然可以进入isConnectable的判断中,并且可以调用finishconnect。

解决方案:finishConnect之后 ...

最后更新于 .

经过这么久在android客户端和服务器端的开发,感觉还是积累了不少东西想要和大家分享一下,但是好想单独拎一个点出来又不太值得,所以就汇集到一起写成系列吧。

一. 关于用户数据存储

首先在注册的协议里,定义如下公共传输字段:

version: 这个其实是xml中配置的versionCode。versionName个人认为没有什么必要,所以就不传了。

channel:  用户渠道,这个和xml中的UMENG_CHANNEL 是共用的,因为一直在使用umeng,所以这样定义反而清楚一些。

device_id: 设备ID

os: 操作系统类型,这里默认传入android

os_version: 操作系统版本

对于小数据量,用户数据存储在mysql中是相对较好的选择,这里直接以django的model为例:

from django.db import models
class User(models.Model):
    device_id = models.CharField(max_length=255, null=True, blank=True)
    version = models.IntegerField()
    channel = models.CharField(max_length=64, null ...

最后更新于 .

12年的时候入了macbook pro,之后就一直用到现在,只是一直把机械硬盘当作ssd用,盖了盖子直接就带着到处跑,结果最近就给杯具了。

文章可能写的比较散,我就给分成几节吧

一. 发现问题

现象倒是比较常见,死机频繁,并且开chrome一直chrome内核的ide必然死机。一开始以为是10.9系统的问题,后来想来想估计是内存或者硬盘的问题。

在网上下了个神器:TechTool

大家如果对自己的硬盘不放心也可以去检测一下~ 检测的结果:

SMART检查失败 硬盘存在不可修复的硬件问题,请更换硬盘

得,这直接判了死刑了。

赶紧去网上买了块硬盘,以及一个硬盘盒。

又从朋友那边接了拆mac的专用螺丝刀盒。

为了保险起见,从朋友那里借了个移动硬盘,把所有数据备份了一下。

二. 制作系统

话说因为买mac的时候并没有赠送系统盘之类的东西,所以去网上淘了一下,比较庆幸已经有人做好了: Mac OS X 10.9 Mavericks U盘复刻版,将其导出为U盘即可。

导出为u盘的方法也简单说下:

  • 准备一个8G的U盘
  • 执行系统自带的磁盘工具,将下载的DMG恢复到准备的U盘上
  • 喝杯咖啡,等半个小时,搞定

三. 更换硬盘,安装系统

拆硬盘还是比较简单的 ...

每日归档

上个月

2014年5月

下个月

2014年7月

归档