自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 systemtap用户态堆栈符号解析不到的问题

在做性能profile的时候,直观上感觉应该在profile的时候只记录基本数据,在最终记录完成后一次性进行符号解析,防止对系统性能造成影响。所以写的probe脚本是这样的:systemtap script:global bts; // backtracesprobe timer.profile {    ​if (pid() == target()) {    ​    ​bts[...

2014-09-26 11:30:34 677

原创 skynet任务调度分析

    云风同学开源的skynet,当前规模是8K+ C代码和2K+ lua代码,实现了一个多线程高并发的在线游戏后台服务框架,提供定时器、并发调度、服务扩展框架、异步消息队列、命名服务等基础能力,支持lua脚本。单服务器支持10K+客户端接入和处理。     我个人比较关注高性能和并发调度这块,这两天分析了一下skynet的代码,简单总结一下。 1. 总体架构    ...

2014-05-02 02:06:33 543

原创 【转】 职场潜规则

人生就象一场游戏,有赢有输,有得有失,没有人会一帆风顺的走完所有的路。而任何游戏都有自己游戏规则,违背这个规则的人,虽然不一定遗臭万年,又或者被黑道、国家机器追杀,但是人言可畏、三人成虎还是会的。尤其是在中国这个孙子兵法的故乡,一贯崇尚“上兵罚谋”。作为一个人,总是要出来“混”的,打工也好、雇工也罢,很少有人只是吃吃喝喝的过一辈子。且不说老祖宗一贯教导我们,儒家‘有为’,道家‘入世’;就是想...

2012-12-09 22:41:10 247

WebIM第一版本及下一步工作

一个月前打算写一个web版本的IM,杂事缠身,出差/部门PK,断断续续用零碎时间开发,到今天为止,才分别用node.js和php完成了两个版本。代码都在github上(nodejs版,php版),对于这种需要实时获取状态变更的web应用,用nodejs特别合适。第一个版本使用nodejs实现后,奈何市面上便宜的虚拟空间都是LAMP的,只得写一个php版本的。LAMP不适合支持long pollin...

2012-12-09 00:20:10 176

CSS布局

看了很多资料,css中display,position,float这几个属性如何控制布局还是不是很清楚。看了W3C CSS2.1的文档,其中说的太学术化,有些晦涩难懂,看了几遍没搞清楚。还是w3schools的好懂。整个document的布局,默认是页面元素流从上往下,从左到右排列(流动)。每个块内可以有水平的行内元素,这是正常的布局,称为normal flow。displ...

2012-11-27 02:37:32 100

markdown语言

终于解决了WebIM的一个很弱智的问题:使用res.writeHead()写HTTP头属性,导致除了chrome之外其他所有浏览器都报错的问题。WebIM可以放到github上了。res.writeHead()方法是用来写响应的状态行的,第一个参数是状态码,如200/404之类,第二个参数如果是字符串的话,就是状态字符串,比如OK/Not Found,如果第二个参数是对象,或者第二个参数是字符串时...

2012-11-24 00:15:31 84

javascript和redis使用中的一点小问题

redis的get/hget等操作中,返回的数据都是string。即使往里存数字,返回的还是string。这一点在javascript中尤其要注意。 而javascript中,使用字符串进行加减法时,会有不同效果:加号既可以作为加法运算,也可以作为字符串连接。如果两个操作数中的任何一个是字符串,则是字符串连接,否则就是加法;而减号永远是做减法,不会字符串删除。 没有搞懂以上...

2012-11-22 00:48:06 622

nodejs+express的session使用

今天终于使用nodejs+redis把网页版即时聊天框架zenkim搭了起来,非常简陋,不过登录/用户管理/实时消息推送/消息缓存/用户单实例登录控制deng基本能力都有,待完成的功能包括:消息持久化及活动用户队列周期扫描/加强事务能力/消息排序/界面美化/移动版本支持。再优化一下后放到github上。 今天花了一下午时间,都用在了处理session上。nodejs本身不管session...

2012-11-18 21:36:34 773

OS X常用快捷键和触控板操作使用总结

前两天刚刚买了一台MacBook Air,系统是OS X 10.8(Mountain Lion)。对于用惯了Windows GUI的我来说,很多命令找不到了,很不习惯。经过这几天的摸索,越来越感觉苹果系统的好用了。尤其是触控板,完全替代了鼠标,并且可用性远超鼠标。现在基本不用鼠标了,连触控板下方的左右键也基本不用了。看网上很多帮助文档都是以快捷键为中心组织的,实际上我更想做某个操作时查找一个快捷键...

2012-11-18 20:02:45 206

js对象结构类图

js通过prototype来实现继承,通过"new Constructor函数"创建新对象。js中的对象是什么?Array、String、Object、Funtion这些是构造函数,但通过new Array()这种方法创建对象,怎么Array这么像类?和类有什么相同点和不同点?prototype又是什么?是怎么使用的? 通过查看当前最新的ECMA规范,终于搞明白了js中这些东东是什么关系。...

2012-11-10 23:30:02 1038

node.js为什么不用coroutine?

node.js中大量用了异步回调,完全没有阻塞,单线程实现但并发超高。这段时间感觉node.js的IO一多,异步让人看的很头疼。虽然有人很喜欢这种异步回调方式,但我觉得这种做法真的有违人性。 也有很多人像我一样对这种回调不感冒,Tim CasWell写了Step,试图对node.js的控制流程进行人性化处理,但是他现在放弃了,github上的Step基本上有一两年没有更新了。我臆测java...

2012-11-10 23:15:34 284

最近打算写个web IM应用

web IM应用最有前途的技术应该是WebSocket,这是HTML5的新标准,是未来的方向。但据说当前浏览器支持并不是很好。除了WebSocket,还有Server-Sent Events,Polling,Long Polling这些方案。综合考虑浏览器兼容性以及减少带宽消耗,选用Long Polling方案实现。 开始打算选用nginx+php实现。但对于long polling这种服...

2012-11-07 23:21:49 72

从后台到前台

很多Web后台开发人员对前台开发人员有一种天生的优越感,感觉前台开发就是做做Web界面,没什么技术含量;前台开发人员不懂技术,就是美工。我就是这些后台人员之一。 不过有意思的是,虽然后台开发人员总是觉得自己高人一等,可让他们去做前台页面,却很少见他们能搞定。这方面我有亲身的经历。实际上我和一般后台人员还有点不同,我喜欢排版,喜欢做清爽的界面。我做的Word文档要比很多人结构清晰,层次分明。...

2012-10-30 07:24:06 231

淘宝聚石塔

很多人不清楚淘宝的聚石塔是什么。据百度百科,这是今年7月10号淘宝内部的天猫(tmall)、阿里云和万网共同推出的电子商务云平台。登录其网站http://cloud.tmall.com,可以看到实际上就是提供了虚拟机和关系数据库的云服务。另外当前还提供了订单管理和资源(vm/rds)监控管理。 从这些点上来看,聚石塔实际上就是通过天猫的人气来卖阿里云。目前大家都在讲云计算,我个人也从事云计...

2012-10-22 00:37:02 1475

学习做网站

一直对做网站发憷。看到那些漂亮的网页,总觉得必须要专业美术人员才能做得出来,我这样的土鳖永远做不出好的网站来。 一直打算学习wordpress,也装上去了,也用他的twentyeleven theme了,也看了很多文档,看了一些wordpress的代码,但总是感觉自己没有准备好,不知怎么下手。 直到今天把wordpress生成的html源码看了一下,才豁然开朗:php或者jsp,或...

2012-10-21 20:38:43 129

wordpress语义

wordpress是一个博客系统,博客是内容管理系统(CMS)的一种。 内容相关的术语:wordpress中的word指的是构成了Post的word。post是一篇blog的基本组成部分,包括文章内容,评论,争吵的文字等等。post是blog存在的理由,没有post,就没有blog。 为了方便些post的过程,wordpress提供了功能完善的authoring工具,其中的一些...

2012-10-04 11:10:03 154

php手册阅读笔记(2)

表达式、语句的语法与C/C++语言极其相似,基本上可以当做C语言来用。 点号(.)在PHP中用来连接两个字符串,因此,成员方法的引用使用->而非点号。 面向对象部分,与C++、Java非常类似。...

2012-09-28 22:47:31 77

php手册阅读笔记(1)

1. Language Reference | Basic Syntax    php文件尾部的结束标记(?>)最好省略,防止文件尾部添加多余的空格和回车    可以使用/* */, //, #方式的注释 2. 类型    支持四种标量:boolean、integer、float(与double相同)、string    支持两种结构:array、object  ...

2012-09-28 01:28:18 73

drupal 7.15安装

drupal是非常著名的开源内容管理系统,使用php开发。 其安装非常简单,假定nginx+php+mysql已经安装完成,并且正常启动。关于nginx+php+mysql在windows上的安装和配置,参考上一篇博客:windows上nginx + php配置 环境:Windows 7 32bit,nginx 1.2.3,php-5.4.7-Win32-VC9-x86,mysql...

2012-09-23 22:43:50 99

windows上nginx + php配置

apache下载失败,正好对apache那种把php解释器做成module当动态库加载到自身进程的默认做法不太满意,网上大家又都说nginx好,就使用nginx+php+mysql配置一下。 环境:Windows 7 32bit版本:nginx 1.2.3,php-5.4.7-Win32-VC9-x86,mysql 5.5.27 nginx和php都是下载后解压缩就可以用,my...

2012-09-23 00:48:45 113

go语言

从学校里开始,一直是C语言的狂热支持者,刚开始工作的两年也一直是使用C,后来这七八年因为工作关系,主要使用java,间或一些C++。但C语言的简洁一直让我着迷。 刚才看了许式伟同学关于go的介绍(infoQ中文站上),许同学称go将取代java成为以后排名第一的语言,另外也由于go语言那些鼎鼎大名的作者们(其中包括C语言的作者),忽然对go语言充满兴趣。golang.org居然连不上,从...

2012-09-06 01:23:23 164

准备承接infoQ的一些翻译的工作

好好练练英语,看英文资料还是太慢,严重影响计算机的学习。 同时强迫自己每天看一些英文资料,了解外面正在发生什么:不找点事逼一下自己,没法长期主动做一些困难的事。 争取每天翻译一篇news,每周一篇artical...

2012-09-05 22:29:53 151 1

scala语言的一些体会

这两天用scala写了一些程序,有一些体会。 scala作为一种函数式语言,特别适合将多个小的匿名函数串联起来,作用到一个列表对象(Option/Either/List/Map等)上。并且这么做会减少一些想临时变量名字的功夫,诱惑人不断把这种串联持续下去。比如: val match = Option(fileName).map(new File(_)).map(Path(_)...

2012-09-04 00:07:22 141

akka源码分析

看akka源码的一些体会,没有列出源码来。akka代码主要包括两块:底层分发(akka.dispatch包)和上层模型(akka.actor包),从底层线程调度(dispatch)往上看起 函数式语言主要处理表达式求值,面向对象语言主要处理对象间消息发送消息。  1. 底层线程调度 Doug Lea: ForkJoinTaskForkJoinTask是用少数线...

2012-08-21 01:22:00 290

scala语言学习之Option

前两天看到有篇关于Option的小文章,上面引用NullPointer的发明人C.A.R. Hoare老先生说的一句话:空引用是一个“十亿美元的错误”(http://en.wikipedia.org/wiki/Null_pointer#Null_pointer)。 当时以为这里主要说的是返回值为空时会导致出现空指针异常,而返回值如果用Option包一下,就总会返回一个对象,再也不会返回空引...

2012-08-17 01:17:53 135

关于actor模型的优缺点分析(1)

actor model是1973年就提出的一个分布式并发编程模型,在erlang语言中得到广泛支持和应用。目前java中也出现了很多支持actor模型的库:akka、killim、jetlang等等,其中akka是使用scala写的,有scala和java两套使用接口;killim需要对编译出来的class文件进行后处理。 最近项目需要架构整改,以支撑后续的发展,正在考虑是否采用actor...

2012-08-16 07:06:31 797

erlang版本的protobuf

这两天看了google protocol buffers的文档,protobuf非常不错,解决了一直以来遇到的消息版本不同的问题,对项目中的开发非常有帮助。 最近在学习erlang,官方只有java、c++、python的protobuf实现,第三方有两个erlang实现:http://github.com/ngerakines/erlang_protobuffs/tree/maste...

2012-08-02 23:46:27 250

supervisor与gen_server使用小结

supervisor与gen_server是OTP标准库中提供的两种behavior,其中gen_server是基础的公共服务器框架,supervisor本身就是一个gen_server behavior的实例。 supervisor behavior是建立监控树的基础,只有一个回调函数init(Arg),返回该监控进程的监控规格,其中包括了被监控子进程的重启模式,以及所有被监控子进...

2012-07-29 20:44:04 287

使用erlang思维还需要转变

刚才在写一个程序的时候,对一个binary数据,想的是怎么把binary数据的前三个字节给取出来,赋值给一个变量,通过split_binary? 通过列表运算? 其实通过模式匹配才是王道,一直知道模式匹配是erlang中非常非常强大的能力,对于取值,赋值,功能强大无与伦比,有了模式匹配,完全不再需要写那么多代码操作数据了,一个匹配搞定。 <<A:24, _/binary...

2012-07-23 06:54:55 103

jQuery.post获取不到中文数据的问题

PHP直接返回页面时,可以返回中文数据,但使用jQuery.post从服务器获取数据时,所有的中文信息都丢了,变成了null。数据库使用的是sqlite3。 一系列试验后,还是GB2312和UTF-8打架的原因。jQuery、PHP的json_encode都是使用utf-8的,默认情况下,通过sqlite3.exe创建的数据库文件中,使用和操作系统一致的编码(GB2312),浏览器也是GB...

2012-05-13 23:10:46 243

json解析

哈哈,如果返回http消息头中指定了“Content-Type: application/json”的话,jQuery回调函数中传入的data是直接解析后的json对象,如果不指定Content-Type(就是用默认的),jQuery回调函数中传入的data是string字符串。 不看文档没常识。仔细看了jQuery.ajax()的文档,里面有非常详细的说明。jQuery.ajax()...

2012-05-13 20:47:11 101

css样式表中的样式覆盖顺序

刚才写zenktodo的时候,通过动态添加class的方式修改一个div的样式,总是不起作用。  #navigator { height: 100%; width: 200; position: absolute; left: 0; border: solid 2 #EEE;}.current_block { bo...

2012-05-13 15:42:35 1762

后续生活规划

惭愧,刚浏览了xiaotie的一些博客,作为和他同一年入学的校友,同样都是在一个非IT专业读到了硕士,2003年同一年毕业,到现在已经工作10年了。相比较而言,现在收入可能多一点,但生活远远没有他充实,同时也没有他的竞争力(在技术上)。现在天天机械地工作,开会,为领导几句话疲于奔命,忍受他们无知的指挥,自己整天不知做什么。生活很空虚,心里很空虚,不知道自己的价值在哪里,引以为豪的技术已经放下很久了...

2012-05-11 00:21:05 132

在公司防火墙后如何使用npm?

node.js的包管理软件npm非常好用,命令简洁明了,在家里部署express时非常方便。但在公司安装时遇到了麻烦。npm install默认在指定的目录或文件中找不到要安装的包时,就会去https://registry.npmjs.org/查找并下载相应的包。npm config可以配置proxy和https-proxy,不过如果proxy需要用户名密码,npm就搞不出来了。在linux下配好...

2012-03-11 23:33:12 494

Builder模式

学习rabbitmq,在看其java client api文档时,讲到AMQP类的请求、应答描述符都有builder类,符合Builder模式,让创建协议对象更加简单,允许使用不变的状态创建他们。 一直没有系统学习设计模式,从网上查了一下Builder模式的讲解,中文资料中讲builder模式的基本是人云亦云,拿着翻译的半通不通的所谓中文标准定义,按照自己的例子理解一番,然后写一个简单的小...

2012-01-21 22:17:56 70

ucore-project5: mm(4)

时隔近20天,终于搞定了一个问题。使用linker script设置内核起始地址为0xC0000000后,在没有启用分页的情况下,终于让加载到0x100000的内核成功运行起来了。内核代码正常运行,时钟中断正常。 ucore lab2 project5中首先设置了一个临时gdt,将base地址设置为-0xC0000000,这样在后续所有地址访问中,地址都会与这个base地址相加,相当于减去...

2012-01-09 00:31:03 107

ucore-project5: linker script

要对内核进行页映射,首先要知道内核在内存中的位置和内核的大小。内核在内存中的位置很好知道,因为是启动代码拷贝进去的,而内核的大小就不好知道了,只有最后将各个obj文件组合成内核文件的ld命令才知道。而ld命令的命令行参数很难定义参数告诉代码,此时就需要链接器脚本linker script了。ld使用命令-T指定链接器 linker script功能很强大,可以告诉链接器应该怎么干活儿,除了...

2011-12-22 00:00:29 87

ucore-project5:mm(3)

paging由x86 cpu控制寄存器中的三个bit控制:CR0 bit31:PG位,控制是否启用pagingCR4 bit4:PSE位,页大小扩展,允许4M大小的页面CR4 bit5:PAE位,物理地址扩展 先看32位的paging处理,就是PSE=PAE=0,而PG=1时的情况。 一个线性地址被分为3部分,第一部分是页目录表项索引,高10位(bit31-bit22)...

2011-12-21 23:29:15 95

ucore-project5: mm(2)

看内核刚进入时加载临时gdt的代码:lgdt __gdtdesc - KERNBASE.datagdt:...__gdtdesc: .word 0x17 .long gdt-KERNBASE 其中KERNBASE = 0xC0000000。在lgdt指令中,使用了__gdtdesc的真实物理地址,而在__gdtdesc中,使用了gdt的真实物理地...

2011-12-20 00:27:28 89

ucore-project5: mm(1)

project5到project9主要处理内存管理。 其中project5是一个大工程,内部分为5个小工程,本次主要针对第一个小工程进行分析。 在project3.1中,就已经使用了ld的linker script,直接在其中指定链接时的一些配置。比如起始代码的符号,起始地址值,某个段的align值,以及可以定义一些变量。 在project5中,起始地址改为汇编函数kern...

2011-12-19 01:30:50 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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