关于博主
年龄非二八
也没啥文化
平生爱小说
还有看漫画
忙时做做事
闲时编编码
人生自逍遥
哪管它天塌!
也没啥文化
平生爱小说
还有看漫画
忙时做做事
闲时编编码
人生自逍遥
哪管它天塌!
友情链接
热门文章
孤独患者
yuql 2011-12-01 21:31:53 发表于 日志心情 分类
欢笑声 欢呼声
炒热气氛 心却很冷
聚光灯 是种蒙恩
我却不能 喊等一等
我真佩服我 还能幽默
掉眼泪时用笑掩过 怕人看破 顾虑好多
不谈寂寞 我们就都快活
我不唱声嘶力竭的情歌
不表示没有心碎的时刻
我不曾摊开伤口任宰割 愈合就无人晓得
我内心挫折
活像个孤独患者 自我拉扯
外向的孤独患者 有何不可
笑越大声 越是残忍
挤满体温 室温更冷
万一关灯 空虚扰人
我却不能 喊等一等
你说你爱我 却一直说
说我不该窝在角落 策划逃脱 这也有错
连我脆弱 的权利都掠夺
我不唱声嘶力竭的情歌
不表示没有心碎的时刻
我不曾摊开伤口任宰割 愈合就无人晓得
我内心挫折
活像个孤独患者 自我拉扯
外向的孤独患者 有何不可
我不要声嘶力竭的情歌
来提示我需要你的时刻
表面镇定并不是保护色 反而是要你懂得
我不知为何
活像个孤独患者 自我拉扯
外向的孤独患者 需要认可
炒热气氛 心却很冷
聚光灯 是种蒙恩
我却不能 喊等一等
我真佩服我 还能幽默
掉眼泪时用笑掩过 怕人看破 顾虑好多
不谈寂寞 我们就都快活
我不唱声嘶力竭的情歌
不表示没有心碎的时刻
我不曾摊开伤口任宰割 愈合就无人晓得
我内心挫折
活像个孤独患者 自我拉扯
外向的孤独患者 有何不可
笑越大声 越是残忍
挤满体温 室温更冷
万一关灯 空虚扰人
我却不能 喊等一等
你说你爱我 却一直说
说我不该窝在角落 策划逃脱 这也有错
连我脆弱 的权利都掠夺
我不唱声嘶力竭的情歌
不表示没有心碎的时刻
我不曾摊开伤口任宰割 愈合就无人晓得
我内心挫折
活像个孤独患者 自我拉扯
外向的孤独患者 有何不可
我不要声嘶力竭的情歌
来提示我需要你的时刻
表面镇定并不是保护色 反而是要你懂得
我不知为何
活像个孤独患者 自我拉扯
外向的孤独患者 需要认可
Copy On Writer
yuql 2011-11-02 15:41:06 发表于 PHP 分类
PHP为了减少复制,采用了一种copy on writer的机制。我想,这是一种非常常见的机制,你也一定听说过。比如,gcc 的 stl string 的实现,就是采用这样的机制,字符串赋值,不是真正的复制,而且,在修改的时候才会进行复制。我们先来举个最简单的例子:
基本的流程是这样的:
1: 创建一个变量,可以保存 10000 个 0 的这样一个字符串。
2: 创建一个变量符号 a ,这个变量符号引用 这个变量。注意,变量符号 和 变量不是一回事情,这两者是分离的。
如果从C语言的角度来说,PHP大概完成这样一件事情:
$a = str_repeat("0", 10000);
$b = $a;
$a[0] = "1";
$a 是一个非常大的字符串,如果 $b = $a 的时候,进行复制,那要耗费很多内存 和 cpu,这样非常的不划算,万一,下面的代码并不修改$a 和 $b 那复制根本没有必要。当然,$a 在后面又被修改了,这个时候,必须进行复制了,否则就不符合逻辑了。但是,现在问题来了,怎么知道,$a 在修改的时候,要进行复制呢,必须要有这样一个标记。方法就是采用引用计数。引用计数还被用来进行内存的管理。基本的流程是这样的:
1: 创建一个变量,可以保存 10000 个 0 的这样一个字符串。
2: 创建一个变量符号 a ,这个变量符号引用 这个变量。注意,变量符号 和 变量不是一回事情,这两者是分离的。
如果从C语言的角度来说,PHP大概完成这样一件事情:
char *varname = "a";active_symbol_table 是PHP的一个符号表,所有能访问到的变量都在这个里面,他是一个哈希表。var 这个变量,保存了 10000 个 0 这个字符串。而且是zval的结构,zval的结构如下:
size_t varname_len = strlen(varname);
zend_hash_add(EG(active_symbol_table), varname,
varname_len + 1, &var, sizeof(zval*), NULL);
typedef struct _zval_struct {
zvalue_value value;
zend_uint refcount;
zend_uchar type;
zend_uchar is_ref;
} zval;
typedef union _zvalue_value {
在云端
yuql 2011-10-03 10:32:56 发表于 日志心情 分类
昨夜,小雨,微风。
一个人静静的走进江南诊所,带着标准的重庆普通话,描述症状、量体温、做皮试。。。
毕业后的第二次输液,被越发严重的感冒,逼迫着献给了美丽的“江城”武汉。
想想不确定的归程日期,一个人吃饭、做事、输液。。。
不由得的多愁善感起来。
零星的几个人,偶尔一阵霹雳啪啦的键盘敲击声,在偌大的办公室显得格外的惊心、刺耳。
早上进门的时候保安在问,只有你们公司在加班?
还没来得及回答,就见一位女生亭亭地走来,被问:“天喻的吧?”
我偷笑着,赶紧填好了进门条。
晚上窝在床上,盖着厚厚的被子,和女朋友发着短信。
不时的逗逗她,听着她的关心和思念,一个人的孤单感觉才会稍稍的被磨平一些。
MVC框架分析(一)
yuql 2011-09-02 16:23:19 发表于 PHP 分类
公司的框架是现在比较流行的MVC框架。但根据公司的业务现状,做了一些变化。与一般的MVC框架,还是有不同的地方,有些地方也比较有特点。由于从进公司以来,一直比较忙,对框架也谈不上熟悉,仅仅会用而已。趁今天比较有空,就学习了下该框架。作为记录。
一、 session共享机制
框架中使用memcached来实现session共享。之所以使用memcached来保存session,我认是为了应对以后用户的大规模访问,毕竟这是移动的项目,用户基数大;为以后应用的集群部署,实现session共享,使多台服务器之间保持会话的统一。
至于不使用数据库的方式来保存session,也应该是考虑到数据库的负担,和读取数度的考虑。毕竟memcached是内存缓存。
memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
二、 模块的加载
框架在index.php中,调用控制器的addModule方法,加载所有的业务模块。
在addModule方法中,为了应对不同城市之间业务的切换,根据citycode的不同,首先加载当前城市相应区县模块到模块队列;如果不存在,则加载当前城市的默认模块;如果仍然不存在,则会加载框架的默认模块。
然后在index.php中,调用控制器的_run方法,实例化模块队列中的类。
但这样的做法,存在几点问题:
1、 所有的模块都在index.php中加载,然后统一实例化。某些当前页面不需要用到的模块,也会被加载进来。随着业务的不断增加,需要加载的模块越来越多,导致系统会耗费很多资源来加载一些根本不会用到的模块。
经测试,加载现在所有的82个模块共耗费0.022152900695801ttitit秒。若只加载一个CitySwitchModel模块,只耗费0.00099802017211914秒。平均每多加载一个模块,会多耗费2.7*10^-4秒。
2、 在加载模块时,并没有判断该类是否存在于模块队列。而且在实例化该类时,也没有使用单例模式。这样可能会导致模块的重复加载。
经测试,在index.php中,调用addModul
一、 session共享机制
框架中使用memcached来实现session共享。之所以使用memcached来保存session,我认是为了应对以后用户的大规模访问,毕竟这是移动的项目,用户基数大;为以后应用的集群部署,实现session共享,使多台服务器之间保持会话的统一。
至于不使用数据库的方式来保存session,也应该是考虑到数据库的负担,和读取数度的考虑。毕竟memcached是内存缓存。
memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
二、 模块的加载
框架在index.php中,调用控制器的addModule方法,加载所有的业务模块。
在addModule方法中,为了应对不同城市之间业务的切换,根据citycode的不同,首先加载当前城市相应区县模块到模块队列;如果不存在,则加载当前城市的默认模块;如果仍然不存在,则会加载框架的默认模块。
然后在index.php中,调用控制器的_run方法,实例化模块队列中的类。
但这样的做法,存在几点问题:
1、 所有的模块都在index.php中加载,然后统一实例化。某些当前页面不需要用到的模块,也会被加载进来。随着业务的不断增加,需要加载的模块越来越多,导致系统会耗费很多资源来加载一些根本不会用到的模块。
经测试,加载现在所有的82个模块共耗费0.022152900695801ttitit秒。若只加载一个CitySwitchModel模块,只耗费0.00099802017211914秒。平均每多加载一个模块,会多耗费2.7*10^-4秒。
2、 在加载模块时,并没有判断该类是否存在于模块队列。而且在实例化该类时,也没有使用单例模式。这样可能会导致模块的重复加载。
经测试,在index.php中,调用addModul



