2014年6月8日星期日

对你同样重要的非技术贴,一封有效的求职信的具体写法 - 布鲁斯杨

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
对你同样重要的非技术贴,一封有效的求职信的具体写法 - 布鲁斯杨  阅读原文»


接我的上篇博文《 对你同样重要的非技术贴,告诉你写求职信的9个技巧》

一封有效的求职信字数应该控制在200字之内,要保持一个简单、清楚的格式布局。

求职信的格式可分为三段:求职、介绍、总结。

每个段落言简意赅,不要堆砌修饰语,比如:我努力攻读,不断学习等等没用的话。每段3--5个句子就可以。


第一段:求职


格式:开头“负责人”(最好有名字)+您好!(另起一行)+ “你的名字”+“我有3年的web前端开发开发工作经验”+“应聘贵公司xx职位”。


这样的开头可以让HR从一开始就知道你想要什么以及你的资历。随后,他会得出一个基本的判断,还用不用接着往下看了。同时,他也能感觉到你是在帮他节省时间。

注意:不要用那些千篇一律的客套话开头,比如:尊敬的负责人,您好!首先请允许我向您致以良好的祝愿和诚挚的问候,感谢您在百忙之中抽出时间阅读这封求职信。(这是不对的写法,你不需要和他们一样)

记住,你确实是在求职,但保持基本的职场礼节就够了,充分体现你的高效和专业才会给HR留下良好的第一印象。

注:如果你实在无法知道负责招聘的人的名字,那你抬头就写:尊敬的招聘经理,这样的称呼最保险。

用Map-Reduce的思维处理数据 - CodeMeals  阅读原文»

  在很多人的眼里,Map-Reduce等于Hadoop,没有Hadoop谈Map-Reduce犹如自上谈兵,实则不然,Map-Reduce是一种计算模型,只是非常适合在并行的环境下运行,Hadoop是Map-Reduce的一种实现,没有Hadoop照样可以跑Map-Reduce程序。python就内置有map()和reduce方法(虽然与hadoop的map-reduce有区别)。

  这篇文章主要介绍如何用python在linux的管道进行map-reduce编程,本文写的所有map-reduce程序都可以原封不动的放在Hadoop下运行,关于用Hadoop Streaming调用python的map-reduce程序,可以参考这篇文章(非常详细,推荐看看),本文主要通过几个实例来讲解如何用map-reduce来处理具体的问题。

一、python的内置函数map reduce

  首先来看看python的两个内置函数map()和reduce()

1、map  

map(function, iterable, ...)

  map对迭代器的每个元素调用function函数,在Python2中,将得到的结果组成一个list,而在python3中结果是一个迭代器。function的参数只有一个,即为迭代器的元素,看一个实例:

>>> d = [1,2,3,4,5]
>>> m = map(lambda x:x*2,d)
>>> print m
[
2, 4, 6, 8, 10]

  这里的map可以理解为一种映射,将迭代器中的元素经过function映射到另一个值。

2、reduce

reduce(function, iterable[, initializer])

  reduce可以理解为规约,它对迭代器从左到右累计调用function,function有两个参数,第一个是之前的累积值,第二个当前规约的元素,实例:

>>> d = [1,2,3,4,5]
>>> r = reduce(lambda x,y:x+y,d)
>>> r
15

  利用reduce定义一个求前n个整数之和的函数

>>> def accuPlus(n):
return reduce(lambda x,y:x+y,range(1,n+1))

>>> print accuPlus(10)
55
>>> print accuPlus(500)
125250
>>>

  上面介绍的python的两个内置函数与我接下来要介绍的map-reduce还是有一些区别,适用于分布式下的map-redece主要是以键值对的形式处理数据,map阶段发射很多键值对出去,然后按键排序,而reduce则对键相同的键值对进行处理,也可认为是一种规约。

二、用map-reduce做词频统计

  词频统计可以说是map-reduce的Hello World程序,它简单明了,却描述了map-reduce的基本原理,统计中文的词频得先要分词,目前有一些免费的分词软件,中科院和哈工大的都还不错,现在我们有下面这样一篇已经分好词的文章(data.txt)需要进行词频统计:

双子座 的 你 是 这样 的 吗 1 手机 不 离 身 睡觉 不 关机 2 对待 不同 的 人 有 不同 的 性格 3 从 小 懂得 很多 道理 但 知 行 往往 难以 合 一 4 有 时候 很 神经 有时候 很 镇静 5 会 因为 别人 一 句 话 伤心 但 不 会 被 发现 6 很 会 安慰 别人 却 不 会 安慰 自己 7 会 经常 怀念 从 前

  定义map的处理(mapper.py)如下:

1 #!encoding=utf-8
2
3 from sys import stdin
4
5 def mapprint(word):
6 '''定义map函数对元素的处理方式,这里直接打印'''
7 print word
8
9 #对每行进行统计
10 for line in stdin:
11 words = line.strip().split(' ')
12 map(mapprint,words)

  mapper.py从标准输入流中对每一行进行处理,然后将每个单词打印到标准输出,输出之后需要对词进行排序,才能被reduce处理,利用管道我们来看看mapper.py对data.txt进行处理:

$ cat data.txt |python mapper.py |sort

  输出的部分结果如下:

  • 安慰
    安慰

    别人
    别人




    不同
    不同




    道理

  接下来我们看看reducer.py,mapper的输出排序后,相同的元素会出现在一起,我们可以从上往下扫描所有的元素,并维持一个计数器,遇到相同的词就把计数器加1,遇到不相同的词,就说明上一个词已经统计完毕了,可以将这个词及其词频输出到标准输出:

1 #!encoding=utf-8
2 from sys import stdin
3
4 last = None
5 count = 0
6 for line in stdin:
7 word = line.strip()
8 if word != last:#遇到不同的词
9 if last:
10 print '%s\t%d' % (last,count)
11 last = word
12 count = 0
13 count += 1
14 #输出最后一个词
15 if last:
16 print '%s\t%d' % (last,count)
17

  结合map和reduce,整个词频统计执行如下:

$ cat data.txt |python mapper.py | sort |python reducer.py

  输出的词频结果:

1 1
2 1
3 1
4 1
5 1
6 1
7 1
安慰
2
1
别人
2
4
不同
2
2
2
道理
1
4
懂得
1
对待
1
发现
1
关机
1
1
3
很多 阅读更多内容

没有评论:

发表评论