Content Preview: rss
24 days ago
到温哥华不久,我们听说这里可以看三文鱼洄游,于是我们就去了三文鱼最多的Weaver Creak. 说起三文鱼就不得不提到这种生物的伟大。三文鱼一般生活在大海里,属于咸水鱼。但是每年10-11月成熟的三文鱼就会游会淡水,顺着河流逆流而上。从咸水进入淡水然后,salmon就不能再进食,因为淡水里没有他们的食物,于是他们用尽自己所有的力气到达上游的小溪寻找隐蔽的石头缝产卵。这一过程通常是几个月,他们这几个月没有任何事物,一路上万水千山艰难困苦,有很多消息由于石头太多,三文鱼都会一跃而过,于是这也形成了最精彩的一幕。产卵之后的三文鱼就再也没有力气了,他们会安息在他们产卵的溪流里。第二年春天,无数的小鱼又会沿着前辈的足迹游回大海完成他们的life cycle. http://en.wikipedia.org/wiki/Salmon 上图就是温哥华,左边是pacific ocean,三文鱼就沿着著名的Fraser river逆流到B点。 清晨我们就出发了,全程100多公里: 我们沿着7号告诉公路前行。风景也真的是很不错。下车照个像。 10-11月也是叶子变黄变红的时候,加拿大这个时候可以说是最艳丽的季节。 路上的风景真是太美了,几乎一路上全是美景。 这就是Fraser River.三文鱼就是沿着他逆流而上。当然钓鱼的人也很多,钓上三文鱼可就赚了。 终于到了. 部分三文鱼变成了红色,据说是因为他们在全力洄游的过程中全身的血管都会暴烈。 三文鱼其实跳得很高,可以有半米到1米吧。下面就是抓拍到的精彩瞬间。 一些没有跳过的三文鱼就死了。 天空也有eagle在盘旋,等待着享用死去的salmon。可见salmon的旅途可谓是危险重重啊。 真是美好的一天,即使我现在回想起来也觉得很美好。本来今年还想再去,但是实在没有时间了,搬家,签证,回家,忙不过来了。有点遗憾,不过还好,我将这些记忆永久的记录在这里了,让他不要在记忆中褪色,美丽的温哥华,伟大的三文鱼。 (To be continued…)
27 days ago
刚到温哥华的时候,时差没有倒过来,每天早上5,6点就醒了,醒了再也睡不着了。于是和老婆第一次去了温哥华最出名的公园, Stanley Park。这一年我们可能去过5--6次这个公园,每次有朋友来这里都是必须去的,因为他真的很美,我真的无法想象在downtown这片寸土寸金的地方,还有一个这么大的公园。里面还有一篇森林,晚上可以看见racoon的。 不过当时由于太冷,也没有照太多相,就以上面一张照片留恋。以后还会有我重游stanley park的照片。 刚到温哥华,我们住在温哥华downtown,里我上班的地方Richmond有20km左右。downtown很繁华,全是highrise.人也很多,交通自然也不是那么通畅。downtown还有一个美丽的地方,也是拍摄《别了,温哥华》的地方,叫做Granville Island. Granville Islan坐落在和downtown一河相隔的对面。说他是河,其实是一个海的内湾,可以坐船在周围旅游,有时还能在海里看见Seal. Granville Island其实是一个很有艺术的地方,这里可以感受到许多西方的文化,也有很多当地工艺品的买卖市场,还有一个public market。 在downtown,还有一个著名的海滩,那就是English Bay。这算是downtown或者说温哥华最好的海滩之一了。温哥华的海岸线很长,但沙滩并不多。downown就这一出最好了。这里也是看夕阳的好地方。 (To be continued)
39 days ago
不知不觉到温哥华已经1年多一点了。温哥华真是一个风景美丽的城市,世界上最适合居住的城市绝非浪得虚名。当然物价和tax也是全国最高,而minimum salary确是全国最低。 一直想找机会在这里记录这一年我去过的地方,但是由于时间精力有限,直到现在都没有整理。今天终于在睡觉前决定开始整理自己在这一年的美好记忆,并将在未来的一段时间内按时间顺序呈现我在温哥华的所见所闻。 今天第一天,只想开个头
78 days ago
首先,这不是因为多次添加同一个key造成的,否则他应该抛出另外的异常而不是NullPointerException。不信的话,你可以加一个if (!dict.Contains(key))在外面,他同样会fail。 真正的原因是需要掌握Dictionary作为一个Hash Table背后的原理。对于任意一个key,首先key.GetHashCode() will be called.然后,由此hash code来决定该key应该放入数组的哪个bucket。由于bucket是远小于key的hash code的范围的,因此hash code和bucket通常使用一个多对一的函数。当程序运行一段后,碰巧你的随机数产生的hash code被函数映射到同一个bucket,这个时候为了决定你插入的key是否和之前被分配到同一个bucket的key一样,这是Equals()会被调用。而明显的,Equals()里面的key.s是Null.因此NullPointerException被抛出。其实这也是为什么教科书上都说,当你override GetHashCode的时候,最好override Equals。这实际上是需要你明白你在干什么。
153 days ago



