Kanon Blog

山水禽兽和年少一梦

青年节之思

青年如初春,如朝日,如百卉之萌动,如利刃之新发于硎,人生最可宝贵之时期也

何谓青年?陈独秀在「新青年」的创刊词里写到:青年如初春,如朝日,如百卉之萌动,如利刃之新发于硎,人生最可宝贵之时期也。 立于二十出头的年纪,回望这两三年,深感于二十岁之后,每日所思所想都异于以往,所经之事也在脑中留下更深印象。细想,归因于两方面,一是身体和大脑的生长发育趋向于成熟,二是外界环境的转变让我们接触到了更多社会场景和角色。 之前看过一篇文章,讲的是年轻人的20岁到28岁实际上是...

马拉松之大道理三则

大学四年的最后一场全马

也许只有当自己脚残的时候,才能真正让灵魂跟上脚步。这句话不是开玩笑,平时30秒的下楼时间,今天硬生生地变成3分钟,先伸出一只脚,再把后脚给跟上,手还得配合着扶住栏杆,垂暮之年的衰老之状也不过尔尔。 马拉松过后,会有几天的“贤者模式”,蜗居于宿舍,清贫饮食,对人生看似大彻大悟,深埋功与名,实则几日之后,若四肢恢复,又会开始对生活有所索取,欲望升腾起之时,便也是困扰之时。你看的这篇文章,也是我...

雪山行

我魂牵梦萦的川西高原

想起几天前在五千多米的雪山上,抱着一瓶红糖姜水,时不时哆嗦着啜上一口,外面飘着鹅毛大雪,冷到连说话都觉得是对体能的巨大消耗。三件上衣,外加一套厚实的冲锋衣,也都阻挡不了冷气的入侵和热量的消散。 也许是太久都没有回归山野,没有呼吸一口山间清新的空气,这一次的登山之旅让我无比期待。为了迎接与山野的邂逅,前前后后大概用了一个月采购装备,睡袋、手套、冲锋衣、冲锋裤、雪套、头灯、徒步鞋……在装备上花...

灵隐小记

至杭城已满三周,足未出户,终日往返于公司与家之间,两点一线生活久矣。 今日份得闲,久闻灵隐大名,遂临时起意,拜访灵隐。 午小憩,出门,扫码七号电单车,前往目的地。 杭城雨后,风和日丽,风吹裤裆,心情飞扬。 买完票,已是五点二十,逆人流,往山中行。行至半路,忽觉错过灵隐,遂看地图,果不其然,灵隐寺就坐落于大门旁。 然而已行至半山腰,不愿走回头路,便继续前行。依次拜访通法云古村、永福寺...

分布式系统基本原理

分布式系统定义 分布式系统是一个软件组件分布在不同的计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 可能遇到的问题 (1)通信异常。光纤、路由器或是DNS服务器等各种通信设备都可能发生故障,这些故障将导致节点之间无法顺利完成一次网络通信。另外,节点之间消息的丢失和延时也是需要考虑的问题(单机内存访问延时在纳秒数量级,通常10ns左右,而正常的一次网络通信的延迟在0.1-1ms左右...

写于离开成都前

大概在两周前,趁着需要回学校处理些事情,跟刚哥请了个假,买了第二天的票就从北京跑回了成都。坐上五月的火车,帝都已远抛身后。从艳阳高照的北京回到阴雨潮湿的成都,丝毫没有任何不适应,反倒是一切熟悉的地点和生活方式,让自己感到无比的舒服和放松。 将身份由上班族切换为学生,没有了每天清晨上班路上的步履匆匆,也没有了每晚入睡时西二旗鬼魅般闪烁的灯火,取而代之的是杂乱却惬意的小宿舍,和可以一起放肆的舍...

ElasticSearch理解(三)

将文档存储到某个shard(Routing a Document to a Shard) 当我们新建一个文档时,ES是如何知道将它保存在哪个primary shard里呢? 这里有一个计算公式: shard = hash(routing) % number_of_primary_shards routing的值默认是文档的_id值,也可以手动设置。最终得到的shard编号介于0到numbe...

ElasticSearch理解(二)

倒排索引 ES使用倒排索引来加速全文检索。一个倒排索引由两部分组成:在文档中出现的所有不同的词以及对每个词,它所出现的文档的列表。例如:如果我们有两个文档,每一个文档有一个content字段,包含的内容如下: 1.The quick brown fox jumped over the lazy dog 2.Quick brown foxes leap over lazy dogs in ...

ElasticSearch理解(一)

ElasticSearch是一个基于Lucene的分布式全文搜索引擎。ElasticSearch 的底层是开源库 Lucene,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。ElasticSearch 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。 ES优点 全文搜索引擎。有一个score对搜索结果的相关度进行评估。 搜索速度快,近实...

Java虚拟机中的分代

堆为什么要划分新生代、老年代? 提高GC的性能。如果没有划分代,所有的对象都在一块,GC的时候就要对所有对象进行扫描,效率及其低下。 新生代 新生代分为Eden和Survivor,Survivor又分为From Survivor和 To Survivor。 JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块Survivor区域是空...