k-d tree算法原理及实现

k-d tree即k-dimensional tree,常用来作空间划分及近邻搜索,是二叉空间划分树的一个特例。通常,对于维度为$k$,数据点数为$N$的数据集,k-d tree适用于$N\gg2^k$的情形。 1)k-d tree算法原理

阅读更多

读《风雅颂》

这是阎连科先生在写知识分子自己“丑陋”的一步作品。小说情节看似荒诞,但现实世界正在发生的事情远比小说荒诞多了。 “我”没有选择青梅竹马,为了地位,为了事业,“我”娶了教授的女儿,赵茹萍。 然而婚后生活并不幸福,“我”追求的学术在妻子看来一文不值。她深谙世道,能“睡觉”得到的东西,就不用专研学术。“我”更像是时代的遗儿,“我”和这个时代太不合了。面对妻子赵茹萍与校长李广智的通奸,更像是“我”做错了事,“我”活的没有一个男人样,竟给茹萍跪下来苦苦求饶“不要再有下次了好吗”,写出了知识分子的懦弱。 “我”像一个异类一样被送进了精神病院(当“权威”说你有病,你就是有病,你没有辩驳的权利)。当院长说,你不是教授吗,你去给病人讲课,当他们交头接耳,不愿听,你就可以出院了(将一个人交给“病人”来裁判时,你的认真无法逃脱这个荒诞)。“我”想着方式让病人听不懂,他们却异常认真,这时,“我”的常识失效了,“我”会进入一个死循环,“我”要逃离这里,去哪里?回家。 乡人知道“我”是“清燕大学”的教授,带着孩子争相找“我”摸头,送吃送喝,为的是孩子能考中。然而未中时,竟似盗贼样争抢我家里的东西。他们正巧撞上我后露出的一丝“羞愧”已将乡人“淳朴”的外衣撕的仅剩一件内裤了(一般作家是不敢“得罪”农民的,阎连科偏敢写出来)。

阅读更多

一致性哈希算法与高可用集群代理

假定N为后台服务节点数,当前台携带关键字key发起请求时,我们通常将key进行hash后采用模运算(hash(key)%N)来将请求分发到不同的节点上。 对前台请求于后台无状态服务节点不敏感的场景而言,只要请求key具有一定的随机性,哪怕节点动态增删,该算法于后台而言已可以达到很好的负载均衡效果。 但对于分布式缓存,或者分布式数据库等场景而言,上述方式就不合适了。因后台节点的增删会引起几乎所有key的重新映射。这样,于分布式缓存而言,均发生cache miss;于分布式数据库而言发生数据错乱,其影响是灾难性的。 而一致性哈希算法的目标是,当K个请求key发起请求时。后台增减节点,只会引起K/N的key发生重新映射。即一致性哈希算法,在后台节点稳定时,同一key的每次请求映射到的节点是一样的。而当后台节点增减时,该算法尽量将K个key映射到与之前相同的节点上。

阅读更多

手机品牌搜索走势图

当前,各应用平台每天都在产生海量的数据。基于海量数据的深度分析报告越来越有价值。该领域涵盖数学、统计学,计算机科学等众多学科,是一个值得深入研究的方向。本文涉及的是一个简单的数据分析场景,旨在梳理使用Python数据分析涉及的常用类库(pandas、matplotlib等)与入门知识。本文对指定的几家手机品牌,按日期区间,从百度指数网站获取其月度搜索数据,然后绘制出它们的搜索走势对比图。 1)关键点 a)日期区间(使用pandas的date_range方法); b)对指定日期(年月),获取手机品牌清单中各品牌的搜索量(requests使用); c)构造DataFrame(重点关注data、index和columns参数传值),结合matplotlib绘图。

阅读更多

修行

行急思缓,静久思动,欲频需节,气堵需疏。 人浮于世,几乎需对遇见的每个对立命题都得寻得一个平衡点。如游走于太极图谱,凡事不能直接落入黑白,得不断摸索这黑白的交界。而修行即是让心灵不断靠近这条线。 世事变化,内心却要寻得某种不变,即是一种平衡的状态。 内心活动看似包裹在驱壳之内,旁人难以察觉,实则心气流动,皆会以某种方式露于形色。若让修道之人,略观其色,听其片语,判断其心念涌动,结果不出其二。 人在世上游走,于对立的命题间找不到平衡,会被有形的社会规则与无形的内心斗争所折磨,所以需要不断修行。

阅读更多

根据遍历结果反向构建树

业务中也许会遇到反向构建树的情形,如从外部工具获取到依赖关系、行政区划,组织架构等文本数据时,如何去反向构建树。我们以“获取到了树的深度遍历结果,然后将树结构构建出来,最后用JSON格式输出”,来模拟此类树的反向构建过程。本文采用Ruby作为描述语言。 1) 已获取的树的遍历结果文本 company +- org-1 +- org-2 | \- org-2.

阅读更多