照片终于来了。









更多照片请看相册:http://xiezhenye.bababian.com
第二天早上起来,就往光福去。先到轮船码头坐公交,那个65路弯弯绕绕开了好久,终于到了终点,然后再搭三轮摩托到香雪海门口。才到光福,就感觉不妙。路边停着的汽车排得老长老长。到了那儿,果然是人山人海。原来像我一样来凑热闹看梅花的人还真的是很多。
现在正是梅花开得最盛的时候。香雪海公园里大都是白梅,就是最普通的会结梅子的那种,其他品种的梅花并不太多。不过白梅才有“雪”的效果。走到半山上往回看,白花花的一片。当中香雪海的题字那块则是密密麻麻的一片人。梅花只在底下和山脚有。再往上就没啥了。
回城坐的是另一路车,到汽车北站附近下来,直接走到拙政园。之前没算到往光福一个来回要那么久,时间已经所剩不多了,转完以后就去了火车站。去苏州的时候是和谐的动车,回去的时候就没那么好运了,只买到了过路车的无座。
然后?然后我就高高兴兴地回家了。
第一天下午从网师园出来后,本来想再去看沧浪亭的,后来觉得时间不大够,就觉得直接去虎丘。
果然是越是有名的地方人越多。虎丘那儿跟着小旗子的一对对人马是一拨又一拨。底下那个剑池就那么一池水,没多大看头;还有那第三泉的水怎么看怎么都不像可以喝的样子。顶上的云岩寺塔是苏州最上镜的地方之一。据说因为古人豆腐渣了一下,这塔就越来越斜,几乎要倒掉,后来又修复过。这塔虽然修过,但还是很残破的样子,缝隙里还钻出了几棵草。并没有像许多古迹,因为修缮而变成了新的东西。前前后后逛得差不多了,就从后山下去。我不想走重复的路。
走出一个小门,顿时感到别有一片天地。相比前边那许多游人,这里虽然没啥景点,但因为游人罕至,倒也幽静的很。一片竹林,几株梅花,还有枯树,顿时让人感觉静了下来。当时正是黄昏,鸟儿回巢,在树枝上叽叽喳喳地叫。鸟儿,枯树,被落日映成了一副剪影。
出了虎丘,沿山塘街一路走回城,那可是老长一段路。在街上的黄天源吃了一碗面。没想到这居然是那天的最后一碗。之后就打烊关门了。吃完了,前门已经关了,还是从后门出去的。
苏州人似乎大都还是按照以前的生活节奏。一个餐馆6点关门要放在了上海那会是件很奇怪的事情。上海遍地都是的便利店在苏州也不多,还都是从上海开过去的可的。在上海已经越来越少的小杂货店在苏州倒还不少。苏州的生活方式似乎就像是90年代的上海。
回到旅社,找了本说禅的书看了会就去睡觉。我总还是有点焦虑症的样子,每当第二天有什么事,或是出门在外就睡不好觉。何时才能真正得自在呢?
先放些文字。照片等处理得差不多了再放上。
这个周末去苏州玩了一圈,一个人去的。本来想找几个伴的,可惜未果。所以就只能孤零零地逛苏州了。
从和谐的动车上下来,就先赶先到平江路那边的小雅青年旅舍,之前错过了预定时间,但跑过去了,发现还是很空闲的,我一个人还独占了一个四人间。
苏州这个城市也很有特色。旧城区里保留了整片整片的从前的民居。走着走着就能看到某某故居和某某古人的宅院,虽然现在可能是作为某小学或某办事处。这间青年旅舍原来也是清代留下来的庞宅。中间的庭院里还有假山石。而新房子也刻意地加入了江南水乡的建筑风格,哪怕是高楼大厦。路灯是复古的样式,交通指示牌也弄成了窗格的样子。这样的好处是在老房子周围不至于显得过于突兀。
苏州城里有许多河道,也有许多桥。在小巷里行走,能感觉到江南水乡的风味。只是相比那几个水乡古镇,时光倒错的感觉要少些。但在这晚上六点就有许多店开始关门地方,也很难把这随处可见的小桥流水和江苏省GDP第一联系起来。
这回逛了耦园、网师园、拙政园3个园林。苏州园林的曲折回环,移步换景果然名不虚传,经常会得一惊喜。门票最贵的,面积也最大的是拙政园。比其他两个要大气多了。不过相比之下,也少了些江南园林的精致。当然,也有可能是因为拙政园是我逛的最后的一个地方,有点审美疲劳的缘故,也可能是因为那里的游人太多了点。
传说在宝山有一个炮台湾湿地公园,前两天在报上又看到说那儿有海鸥,于是昨天就去了一趟。三号线坐到水产路,那就已经是感觉很遥远了,然后再坐几站公交车才到。那宝山11路我真怀疑是不是总共只有一辆车。
那个公园门票倒只要5块,不过公园也不算大。在江边上也没看到多少湿地,那海鸥么,好不容易才远远地看到了几只。不过我的相机能力有限,我的水平也有限,没拍到像样的。 倒是很神奇地在成群的大货轮前,还有一只小渔船。
P.S. 又做了一个模板。之前的那个老横说很卡,但我一直没觉得。但有一次我在拷文件的时候,终于发现在CPU忙的情况下,IE上确实很卡,不过其他浏览器还是没问题。看来IE在渲染复杂页面的效率还是不高。现在的这个模板要简单的多,不会再有问题了。照片是在玉柱山拓展的时候拍的黎明时的群山。
引用计数
php采用的内存管理和垃圾回收方法是基于引用计数的。之前说过,在zval结构里有一个refcount是表示引用计数,还有一个is_ref表示是否是个引用变量。那么php代码的实际运行中,又是如何处理的呢?
比如这样的php代码:
$a = "hello";
$b = $a;
这时候并不像很多人认为的那样,在内存里把"hello"这个字符串复制了一份,而只是把$b指向了和$a对应的同一个zval,然后把那个zval的refcount + 1。这样避免了一次内存拷贝。但如果在这之后改变了其中一个变量的值,比如$b.= " world";又会如何呢?这时候才会分配一个新的zval给$b,然后把原先那个zval的refcount - 1。这就是传说中的copy on write。就是说,在改变值得时候才会有内存拷贝。
那么引用变量又会如何呢? 比如
$a = "hello";
$b = &$a;
和前面一样,$a, $b还是指向同一个zval。只是还要把这个zval的is_ref置为1。之后再改变$a或者$b的时候就不会再发生拷贝。那么
$a = "hello";
$b = &$a;
$c = $a;
这时又会如何呢?因为$c并不是一个引用变量,因此不能和$a, $b共用一个zval。因此在$c = $a的时候会直接产生一个新的zval。
因此,在php中,使用引用对改善性能并不会有多少作用,通常情况下还会使情况更糟。所以,引用还是只在真正需要的时候才用为好。
再说说垃圾回收。每个zval都有一个refcount表示它的变量的引用数。不管对于普通变量还是引用变量都是如此。refcount的初始值一般为1。每当增加一个引用时就+1,减少一个引用,比如unset时就会-1。当refcount为0的时候,php就会把它释放掉。这就是基于引用计数的垃圾回收方法。
使用zval
初始化zval
MAKE_STD_ZVAL(zval*);
这个宏的左右是创建一个zval,完成初始化(如将ref_count置为1,isref置为false)并把指针赋给参数。
赋值
写扩展的时候不可避免的要用到把一个zval复制到另一个zval,就是类似$a = $b;的操作。对于简单的值或许手动维护引用计数之类的还不算很麻烦但对于数组,对象之类的就需要一层层递归进去,因此就有了一个zval_copy_ctor来做着件事情。
原有一个zval* p_zval_b,
zval* p_zval_a;
MAKE_STD_ZVAL(p_zval_a); //初始化p_zval_a
*p_zval_a = *p_zval_b;
zval_copy_ctor(p_zval_a);
这里,zval_copy_ctor完成了类似赋值的操作,包括引用计数处理,对于hash值的成员处理等。
释放一个zval则是使用zval_ptr_dtor(**zval)。注意它的参数。它会释放掉为这个zval所分配的内存。



内存管理
在C语言里,分配内存有一组alloc函数,比如malloc、calloc、realloc。php为了更方便,更安全地管理内存,自己提供了一组内存分配的函数:emalloc、ecalloc、erealloc,此外还有estrdup用于拷贝内存,efree用于释放由前面那些函数分配的内存。他们的用法和标准C函数的一样。这组e开头的函数分配的内存空间只存在于一次请求。在请求结束后,php会自动释放掉。这就减少了由于没有释放掉内存而造成的内存泄露的可能。
如果需要分配的内存在整个进程运行时都保持,而不是在请求处理结束后自动释放,则还有一组pe开头的函数,如pemalloc、pecalloc等。这组函数比标准C函数的多一个参数,即分配的内存是否持久,当这个参数为1时,即表示分配的是持久的内存,不会随着请求结束而自动释放。如:pemalloc(sizeof(long) * 100, 1);。
此外,为了方便使用,还提供了safe_emalloc和safe_pemalloc这两个函数。 safe_emalloc的原型如下:void *safe_emalloc(size_t size, size_t count, size_t addtl);。参数分别表示单元的大小,单元的个数,以及偏移。实际分配的空间大小就是size * count + addtl。safe_pemalloc与之类似。这两个函数还有一个作用就是避免手工做上面的计算时,可能造成整数溢出,而导致分配的内存大小小于预期或者是个负数。
其实我大年三十没看春晚,但是今天还是看了半场的重播。虽说还是一贯的粉饰太平,不过仔细看,还是会发觉一些有趣之处的。
开场有一个歌舞,一群小孩子给当作木偶或者说傀儡牵着线耍。我就琢磨着,这算不算是讽刺现在的教育呢?难道春晚也玩冷幽默么?
又看到爬杆,想起了以前的一个叫做波斯王子的游戏。话说当时我们都管他叫波斯猴子。看样子王子还是比不过专业的杂技演员啊~
又是一个歌舞,看着看着就奇怪,那些男的蹲在女的裙子那边做啥呢?仔细一看,原来在往上面喷红色……。难道不能用更高明的办法吗?难道没看到过耍魔术的是怎么换衣服的么?
有个说军嫂的小品,然后我就想,大年三十都有台风,原来这个厄尔尼诺已经到这地步了。太可怕了。
又有傻根的小品,看着看着突然发现,冯巩的工资卡原来是招行的信用卡。好高级……这算不算是营销呢?算不算是植入式广告呢?
每年春节,许多网站都会挂个新年logo喜庆一下。下面是我收集的一些,堆在这里也喜庆一下下。









