哈希函数

最近参加了一次面试,虽无笔试环节,几位考官却都在算法和思路题上大作文章,颇为受益

有这么几个问题印象深刻:

  1. 自创数据结构存储一些字符串,如何快速匹配用户输入(包含或者相等)?
  2. 若干memcached分布式的组成集群,有什么办法均匀的分布存储?
  3. 爬虫的排重怎么快又省(布隆过滤器原理)?

这几个问题都涉及到了哈希函数,这位编程人民的老朋友。

Hash table

 

哈希函数,是一个能将任意大小数据映射到固定尺寸表示法的函数。个人理解,就是数据特征码提取的算法。哈希函数能做什么?在实践中,我用它将看起来很像却不同的两个数据,变成不同的表示码,以区别,以查找。[……]

阅读全文

也说Maven

最近换了个离家近的工作,原以为会多出一些时间来学习,可偏偏还挺忙,导致又是很长时间没有更新Blog,习惯性地惭愧:(

新工作的内容涉及到跨平台编程,主要涉及到的语言是C#和Java。老话说得好:隔行如隔山。在我从事的行业,跨平台就意味着巨大的差异,这不,我这样的资深微软系码工,一用Eclipse打开业务项目,一只拦路虎便扑面而来:编译器找不到依赖的包,无法编译——因为项目使用了Maven,一个我不熟悉的管理工具。

工欲善其事,必先利其器。花了大半月时间,在 Maven: The Definitive Guide 的帮助下,算是对这个工具有了一些粗浅的认识,迫不及待的写下来,也算是对[……]

阅读全文

Java的线程同步

最近在啃 Learning Java , 对于资深微软系码工来说,理解上毫无故障 🙂 但要说 “C#就是抄的Java,会C# 就等于会了 Java”  这样的话就没意思了,中国厨子也使平底锅,煎牛排不见得会有人埋单。诚如书中所言:

We will see that the real appeal of Java is the combination of this simple language married with powerful tools and standards.

Learning Java

经过一周左右的热身,终于读到了Threads 章节,对于一个长期滞留在应用层面的码工来说,并发线程云[……]

阅读全文

学英语的困惑

又有一阵没有写blog了,只有惭愧。不过这次不是因为磕语法的缘故。

因为我已暂时放弃语法的学习。

我入了两本口碑不错(平均分>8)的语法书,并且用心阅读了两周,通过生吃硬背,大概掌握了:

  • 句子的五种形式(SV、SVO、SVOO、SVC、SVOC)
  • 动词完全与否和及物与否

然后,便陷入了停滞,因为枯躁的语法与现实的运用并不成比例,何况记忆力(方法也糟糕?)也不算太好。

我困惑:

因为我有一个雅思能考7.5分的女朋友,她声称她并不会书上的语法,但是语感好,然后对于我提出的问题她有时也爱莫能助。我会问她:为什么 related要接to,为什么是at nig[……]

阅读全文

关系型数据库设计模式

最近转战学英语语法界,大半时间花在死磕语法书上,疏于打理blog,惭愧。

所幸遇到一本好书: SQL Antipatterns (中文版叫《SQL反模式》)。

我之前对 RDBMS 存在一些非理性的、似是而非的认知,该书以皆反面教材的方式进行了厘清,同时,它对 RDBMS的设计决策亦给出了清晰的路径。

SQL AntiPatterns

 

印象比较深刻的有这么两个章节:

一、树

在数据库设计中,树型关系的存储表示一直是一个难题——设计一个有效的树型关系没什么难的,考验人的是如何让这种数据结构在运行时更为直观、高效。

常规的树结构是怎么设计的,大概会有一个表示父结点引用的列,看[……]

阅读全文

开源爬虫框架Scrapy

听说Scrapy其实有一段时间了,但只到最近才开始尝试,因为要熟悉整个工具链 (Linux/Python/Vim/Redis…)。

这个框架的特点是结构很清晰。下图为官方文档的架构图,准确的描述了Scrapy内部各组件及数据流。

Scrapy Architecture

Scrapy提供了一个Engine,它的作用是进行Download Jobs的调度,即:

  • Spider是由我们来编写的爬虫业务类,在这里面进行页面的各种解析,并将我们需要抓紧的Url地址封装成Request返回给Engine,由它来进行调度下载
  • 在Request中,我们可以指定希望被执行的callback (回调函数),Engine[……]

阅读全文

Python中的字符编码与解码

“Most programmers think of strings as series of characters used to represent textual data”—— Learning Python.

如果仅是在终端上Run代码呈现文本,确实不需要考虑编码问题,但现实是文本数据经常需要被传送,被他人的代码读取。

涉及到文本的传输与存储,就涉及到了字符的编/解码:

将字符串按指定字符映射集导出到其他介质中的字节序列的过程,称为编码 (Encoding);将编码过的字节序列从其他介质按指定字符映射集还原成字符串的过程,称为解码 (Decoding)。

在编[……]

阅读全文

时间

“Ticking away the moments that make up a dull day”—— Pink Floyd

这一年来,最深切的感受就是时间不够用,排除掉对时间不合理的规划,最大的问题可能是因为注意力容易分散。好在,现在能分我神的东西越来越少,离变成一个Nerd越发近了。

我有一份不算短的阅读计划:

  1. Pro Django
  2. Redis in Action
  3. Node in Action
  4. PostgreSQL : Up and Running
  5. Programming PHP
  6. RabbitMQ in Action : Distributed M[……]

阅读全文

Hello world!

昨天搭的站点貌似遭遇了DNS问题,朋友反映访问不了,用手机试了也是不能。权衡了一下,还是下本儿买了一年Linode VPS,把Blog迁了过来。

Linode的使用体验是我用过的为数不多的主机里最棒的!欢迎朋友们使用我的邀请链接: https://www.linode.com/?r=ef680c0e62714b83f07b914c9b2207f8ab64bfe4   ლ(´∀`ლ)

照例,再试一次code highlight: