`
spartan1
  • 浏览: 365063 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
在做性能profile的时候,直观上感觉应该在profile的时候只记录基本数据,在最终记录完成后一次性进行符号解析,防止对系统性能造成影响。所以写的probe脚本是这样的: systemtap script: global bts; // backtracesprobe timer.profile {    ​if (pid() == target()) {    ​    ​bts[ubacktrace()] ++; // record every tick when in specific process    ​}}
    云风同学开源的skynet,当前规模是8K+ C代码和2K+ lua代码,实现了一个多线程高并发的在线游戏后台服务框架,提供定时器、并发调度、服务扩展框架、异步消息队列、命名服务等基础能力,支持lua脚本。单服务器支持10K+客户端接入和处理。       我个人比较关注高性能和并发调度这块,这两天分析了一下skynet的代码,简单总结一下。   1. 总体架构       一图胜千言,去掉监控、服务扩展、定时器等功能,skynet服务处理的简化框架如下图所示:      每个在线客户的客户端,在skynet server上都对应有一个socket与其连接。一个sock ...
人生就象一场游戏,有赢有输,有得有失,没有人会一帆风顺的走完所有的路。而任何游戏都有自己游戏规则,违背这个规则的人,虽然不一定遗臭万年,又或者被黑道、国家机器追杀,但是人言可畏、三人成虎还是会的。尤 ...
一个月前打算写一个web版本的IM,杂事缠身,出差/部门PK,断断续续用零碎时间开发,到今天为止,才分别用node.js和php完成了两个版本。代码都在github上(nodejs版,php版),对于这种需要实时获取状态变更的web应用,用nodejs特别合适。第一个版本使用nodejs实现后,奈何市面上便宜的虚拟空间都是LAMP的,只得写一个php版本的。LAMP不适合支持long polling,因此使用正常polling实现。   Web版本的好处就是不用下载部署客户端,直接在PC、手机上都可以使用。PC上Chrome浏览器版本快照:   android手机快照:   ...

CSS布局

    博客分类:
  • css
看了很多资料,css中display,position,float这几个属性如何控制布局还是不是很清楚。 看了W3C CSS2.1的文档,其中说的太学术化,有些晦涩难懂,看了几遍没搞清楚。还是w3schools的好懂。 整个document的布局,默认是页面元素流从上 ...

markdown语言

终于解决了WebIM的一个很弱智的问题:使用res.writeHead()写HTTP头属性,导致除了chrome之外其他所有浏览器都报错的问题。WebIM可以放到github上了。res.writeHead()方法是用来写响应的状态行的,第一个参数是状态码,如200/404之类,第 ...
redis的get/hget等操作中,返回的数据都是string。即使往里存数字,返回的还是string。这一点在javascript中尤其要注意。   而javascript中,使用字符串进行加减法时,会有不同效果: 加号既可以作为加法运算,也可以作为字符串连接。如果两个操作数中的任何一个是字符串,则是字符串连接,否则就是加法; 而减号永远是做减法,不会字符串删除。   没有搞懂以上两点,导致出现如下问题: 往redis中存了一个数字:   redis.set('count', 10);     取出来,然后加1:   redis.get('count', func ...
今天终于使用nodejs+redis把网页版即时聊天框架zenkim搭了起来,非常简陋,不过登录/用户管理/实时消息推送/消息缓存/用户单实例登录控制deng基本能力都有,待完成的功能包括:消息持久化及活动用户队列周期扫描/加强事务能力/消息排序/界面美化/移动版本支持。再优化一下后放到github上。   今天花了一下午时间,都用在了处理session上。nodejs本身不管session,因为用了express框架,express基于connect,connect中有session管理的能力。connect是插件式架构,它的插件称之为“中间件”,其中有个中间件就是叫作session。 ...
前两天刚刚买了一台MacBook Air,系统是OS X 10.8(Mountain Lion)。对于用惯了Windows GUI的我来说,很多命令找不到了,很不习惯。经过这几天的摸索,越来越感觉苹果系统的好用了。尤其是触控板,完全替代了鼠标,并且可用性远超鼠标。现在基本不用鼠标了,连触控板下方的左右键也基本不用了。看网上很多帮助文档都是以快捷键为中心组织的,实际上我更想做某个操作时查找一个快捷键,希望以功能为中心来组织。下面的是我认为初次从Windows转到OS X的同学最需要的功能。   1. 键盘 Mac的键盘和一般PC键盘相比,多了个command键,少了个“Windows”键。另 ...
js通过prototype来实现继承,通过"new Constructor函数"创建新对象。js中的对象是什么?Array、String、Object、Funtion这些是构造函数,但通过new Array()这种方法创建对象,怎么Array这么像类?和类有什么相同点和不同点?prototype又是什么?是怎么使用的?   通过查看当前最新的ECMA规范,终于搞明白了js中这些东东是什么关系。如下是UML类图描述的这些对象之间的关系:  
node.js中大量用了异步回调,完全没有阻塞,单线程实现但并发超高。这段时间感觉node.js的IO一多,异步让人看的很头疼。虽然有人很喜欢这种异步回调方式,但我觉得这种做法真的有违人性。   也有很多人像我一样对这种回调不感冒,Tim CasWell写了Step,试图对node.js的控制流程进行人性化处理,但是他现在放弃了,github上的Step基本上有一两年没有更新了。我臆测javascript不支持lua那种可从深度调用栈中跳出的做法是他没法更好做下去的原因。一年前Tim CasWell在lua那边起了一个luvit项目,想将node.js移植到lua上来,但现在他感觉这种做法没 ...
web IM应用最有前途的技术应该是WebSocket,这是HTML5的新标准,是未来的方向。但据说当前浏览器支持并不是很好。除了WebSocket,还有Server-Sent Events,Polling,Long Polling这些方案。综合考虑浏览器兼容性以及减少带宽消耗,选用Long Polling方案实现。   开始打算选用nginx+php实现。但对于long polling这种服务端会处理大量并发连接的情况,服务端采用事件驱动的异步架构更好些,php对这种异步事件驱动架构支持并不好。考虑到这一点,现在最火的就是nodejs了。其他还有一些lua、python、erlang的we ...
很多Web后台开发人员对前台开发人员有一种天生的优越感,感觉前台开发就是做做Web界面,没什么技术含量;前台开发人员不懂技术,就是美工。我就是这些后台人员之一。   不过有意思的是,虽然后台开发人员总是觉得自己高人一等,可让他们去做前台页面,却很少见他们能搞定。这方面我有亲身的经历。实际上我和一般后台人员还有点不同,我喜欢排版,喜欢做清爽的界面。我做的Word文档要比很多人结构清晰,层次分明。但我就是做不好页面。我花了大量时间,学了HTML,CSS,JavaScript,我对他们的语法都很清楚,但是就是没有做出一个很好看的页面来。难道后台开发人员就是天生没有美感,没法做美工?   我不信 ...
很多人不清楚淘宝的聚石塔是什么。据百度百科,这是今年7月10号淘宝内部的天猫(tmall)、阿里云和万网共同推出的电子商务云平台。登录其网站http://cloud.tmall.com,可以看到实际上就是提供了虚拟机和关系数据库的云服务。另外当前还提供了订单管理和资源(vm/rds)监控管理。   从这些点上来看,聚石塔实际上就是通过天猫的人气来卖阿里云。目前大家都在讲云计算,我个人也从事云计算这个行业三四年了,但是真正从云计算本身赚钱的没几个。   我一直认为,云计算是运营出来的,而非做出来的。云计算只有上规模才能体现出优势。聚石塔这一努力还是有成效的,至少是在努力运营。   在国 ...
一直对做网站发憷。看到那些漂亮的网页,总觉得必须要专业美术人员才能做得出来,我这样的土鳖永远做不出好的网站来。   一直打算学习wordpress,也装上去了,也用他的twentyeleven theme了,也看了很多文档,看了一些wordpress的代码,但总是感觉自己没有准备好,不知怎么下手。   直到今天把wordpress生成的html源码看了一下,才豁然开朗:php或者jsp,或者其他这些后端复杂的语言,以及相应的框架,最后做出的漂亮网站,都是要用html表达的。要做好的网站,学习那些后端语言很重要,但不是最重要的。html+css才是最重要的,html决定了网页的整体结构,c ...
Global site tag (gtag.js) - Google Analytics