沈阳、南京、北京和西雅图

沈阳、南京、北京和西雅图 活了快三十年,出生在小小的县城,温和而且充满回忆,读书开始,逐渐接触到城市的生活。真正长驻的城市,就只有题中列的这四个而已,自然印象深刻,如数家珍。这篇文字可以算是《旅行映像》第一部分的文字加强版,只是视角可能有些奇怪,而且思路繁乱,略带流水账性质。

沈阳

沈阳是我读书时候呆着的城市。在这以前,其实没有大面积接触过北方人(所谓“北方人”其实有诸多定义,比如以长江为分界线的,以秦岭淮河为分界线的,

[......]阅读全文

分享到:

谈谈百度血友病吧被卖事件

谈谈百度血友病吧被卖事件

最近,百度血友病吧被卖事件炒的沸沸扬扬,在中国互联网这样一个法律和道德双重缺失的环境下,以百度为首的一帮互联网流氓日渐猖狂,但是你很难分辨出到底是哪一出事情的发酵让它已经丧尽天良到如今这种境地。如果你对这样的事情不了解,那么可以看看关于这次事件知乎上的热评,以及百度既往的那些劣迹斑斑的故事,特别是百度全家桶。垄断是罪恶诞生的摇篮,我不会在这里再复述百度作恶的事实,我只想陈述几个观点,有些是可能在

[......]阅读全文

分享到:

Spark的性能调优

Spark的性能调优

下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的。

基本概念和原则

首先,要搞清楚Spark的几个基本概念和原则,否则系统的性能调优无从谈起:

  • 每一台host上面可以并行N个worker,每一个worker下面可以并行M个executor,task们会被分配到executor上面去执行。Stage指的是一组并行运行的task,stage内部是不

[......]阅读全文

分享到:

LeetCode题目解答——第227到310题

[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于tricky的方法。我没有为了这个再更新,就让它们去吧。

LeetCode的题目是不断在更新。还是老规矩,跳过了那些需要付费才能做的题目。下面的解法可能不是最好的,具体问题我们可以讨论。截至目前我解答的全部的LeetCode放在了这里。[......]阅读全文

分享到:

扒一扒知乎上的帖子——“为什么有些大公司技术弱爆了?”

扒一扒知乎上的帖子——“为什么有些大公司技术弱爆了?”

知乎上看到一个热帖,我觉得很有意思,叫做“为什么有些大公司技术弱爆了?”。我刚看到标题的时候,先入为主和刻板偏见了一下,正如同第一个回答一样,我皱了皱眉头,产生了对题主的鄙视之情;但是很快,读完帖子以后,我却立场明确地站到题主一边了。正如同里面有位回答:

看题目以为是题主傻逼,看了正文发现真的是公司傻逼。

上面这种情况其实发生的概率挺低的,但是我觉得这回是真的发生了。

但是令我感到遗憾的是,

[......]阅读全文

分享到:

常用命令归纳:Linux/Oracle/JVM/Git

经常用到一些命令,还总是忘掉的,就简单列在这里。总是现查也挺麻烦的。

Linux:

  • top mem consumer: sudo ps -aux | sort -k4nr | head -5 or top, then press M
  • connection number: netstat -an | grep ESTABLISHED | wc –l
  • process nu

[......]阅读全文

分享到:

追求纯粹

追求纯粹

偶然想到的这个话题,工程师做工程是一方面,而作为单纯的程序员,总是充满对于纯粹的追求。

最近又负责了一个使用Angular的项目,我们知道最近Angular很火,其中一个重要原因就是它给前端开发带来的变革,第一次发现可以让以前如此恼人的变量绑定消失掉。以往变量绑定的语句放在附属于页面的一个js片段(文件)里面,颇有些无奈的意思,如果把它视为展现层面的东西,显得很不直观(声明式编程才是最直观的方式

[......]阅读全文

分享到:

重新发明轮子

重新发明轮子

“不要重新发明轮子”是总是可以听到的话,在评判一个设计的时候,总是听到这样的话。但是凡是不绝对,而对于这句话来说,很多情况下,都是错误的。我甚至都不能说出“大多数情况下不要重新发明轮子”这样的话,因为具体问题,实在没法用大多数还是少部分来概括。重用轮子有什么好处?省代码;轮子已经经过千锤百炼,质量有保障;轮子功能在逐步更新中,可以看到未来的获益。

[......]阅读全文

分享到:

三番+硅谷游记

已经从加州归来一周多,本来不想写游记了。但是前几天整理照片的时候发现,有趣的东西还是有一些的,那就写一些文字吧。

大致的行程:四天。第一天在三番市区,人文线,并夜登双子峰;第二天沿号称最美公路的一号公路南下,经过Santa Cruz,直到十七迈;第三天休息半天,然后前往世界最大的人工公园——金门公园,傍晚去金门大桥;第四天在硅谷的101公路沿线转悠,去了Facebook和Google等几家IT公司

[......]阅读全文

分享到:

“残酷”的事实

“残酷”的事实

下面这些文字来自我在知乎的回答:“在真实工作中的编程是怎么样的,与学校里有什么不同?”

入行愉快。

首先,一言以蔽之,用两个字来概括,就是“残酷”,但是,好在是加引号的。有的不但残酷,还很无奈;有的则是在残酷的同时,还很有趣。搞工程和学校里的象牙塔大不相同,这也许老早就知道,但是绝对不是七八年前我想象的模样。你可以把它当成我没睡醒的呓语,也可以当成我喝多的胡话,或者是心情太差的时候写的吐槽檄文

[......]阅读全文

分享到:

三百篇文字纪念

三百篇文字纪念 光是放在blog上面的文字,已经超过三百篇。我觉得哪怕是在工地拉砖头,也应该是时候直起腰回头瞅瞅了。所以就有了此文,但是和十多年前的我不同的是,我应该不会发很多牢骚,而另一方面,我也不像是个理性到每逢这种时候都要摆一大迭数据出来说事儿的人。所以,大概还是扯扯东、扯扯西,这篇纪念就过去了。这当中该用力地记到脑子里的,会慢慢沉淀下来。

宏观地且从粗暴的统计来看,大概两年前的我,那个时候是最能写的。那

[......]阅读全文

分享到:

练琴

练琴 以前有一个电子琴,只是时不时的折腾一番,也没有养成良好的读谱习惯,进步很慢。其实很多人都和我一样,心中从小就有一个各种各样的和艺术沾点边的梦,身边有画画很棒的,有下棋很牛的,还有同事每个月都会去跳舞,我和我老婆说,从小就喜欢折腾各种音乐器械,要不我也正儿八经学学钢琴,开发开发智力?她说,要不先弄你的电子琴吧,要是能坚持下来,再投资钢琴。差不多快一年,事实证明这个兴趣应该是可以坚持下去的。于是请了

[......]阅读全文

分享到:

从构建和测试的效率说起

最近的工作总是在EMR上跑Spark的job,从代码完毕到测试完毕的过程是这样的:

1. 本地测试:

    构建 -> 本地UT -> 观察分析结果,这一阶段可以发现逻辑问题

2. EMR上执行测试:

    上传最新构建到S3 -> 准备EMR资源(包括计算资源和数据) -> 在EMR上执行Spark job

[......]阅读全文

分享到:

Scala的模式匹配

Scala的模式匹配

最近开始学习Scala,相较于学习Haskell的过程来看,Scala真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的Java和JavaScript来逐步学习Groovy和Haskell的文章,这以后再来学习Scala的话,就可以不断比较了。如果和我一样有Java经验的话但是从来没有接触过Scala的话,建议先阅读这篇文章,A Scala Tutorial for Java Progra

[......]阅读全文

分享到:

我眼中的范加尔

我眼中的范加尔

写在双红会之后。曼联遇到利物浦,最近这一年多来,总是可以拿到酣畅淋漓的胜利。从莫耶斯到范加尔,其中的转变,这是一个缩影。毫无疑问范加尔是个颇具争议的主教练,他的身边从来不缺新闻话题,而且他的孤傲和弗格森还不一样,他喜欢把各种内部消息往外抖,说他心直口快也好,说他脑子缺根筋也好,反正记者爱听他爆料,球迷也爱听啊。就在没多久前,因为花了几千万签下一个名不见经传的马夏尔,还受到各方质疑,连他自己都承认

[......]阅读全文

分享到:

七年工作,几个故事

七年工作,几个故事

从毕业工作到现在,已经有七个年头,年头虽然不久,但是回过头来看看那些经历的好的坏的有趣的扯淡的事情,还是有很多东西可以总结。所有人都会或多或少走弯路,本来成长就是这样一个过程,有时候想起来会感叹,有时候会唏嘘,有时候会一笑而过。我的前一半时间是在华为,这段时间留给我很多回忆(比如这几个瞬间);后半时间在亚马逊,也给了我不少感慨的机会。下面这些故事都是我经历的真真实实的事,有的事情已经过去好久,但

[......]阅读全文

分享到:

谈谈曼联今年的位置竞争和引援

谈谈曼联今年的位置竞争和引援

看完两场英超,引援上估计除了待定的佩德罗以外,不会有什么大的变数了。想起去年赛季伊始,在知乎上面回答了几个和曼联有关的问题,现在正好回过头来扒坟,比如关于曼联的拉斐尔,说“他也就是一员猛将,刚猛有余,智慧不足,前途平庸”,目前看来是正确的,已经离开前往法甲;说费莱尼“在当前全攻全守和控球理念强调下范加尔治下,费莱尼很难在球队中有他的一席之地”,很

[......]阅读全文

分享到:

系统设计的典型分层和涉及的知识点

作为系统设计学习的一部分,不久前在梳理面试中典型的系统设计问题,发现大部分都可谓有套路可寻。我把思路梳理了一下,简单整理到下面这张图表里面:

系统设计的典型分层和涉及的知识点

对于其中的内容,稍微补充几句:

  • 系统设计需要经验的积累,但也确确实实有章可循。问的问题考察的类型很集中,比如同步、异步,消息push和pull,根据实际问题设计存储的数据结构,对于scalability、availability的认识等

[......]阅读全文

分享到:

几道抛硬币问题

几道抛硬币问题

只是记录一下遇到的几道抛硬币的概率问题。

 

1、平均需要抛掷多少次硬币,才会首次出现连续的两个正面?

假设连续两个正面的期望是E,那么,先看第一次抛硬币:

  1. 如果抛到反面,那么还期望抛E次,因为抛到反面完全没用,总数就期望抛E+1
  2. 如果抛到正面,那么要看下一次,如果下一次也是正面,那抛硬币就结束了,总数是2;如果下一次是反面,那么相当于重头来过,总数就期望抛E+2

于是可以得到如下关系式

[......]阅读全文

分享到:

从Java和JavaScript来学习Haskell和Groovy(汇总)

从Java和JavaScript来学习Haskell和Groovy(汇总)

这是这个系列的最后一篇,从编程范型的角度概览,前面几篇的链接在文章后半部分有汇总。

我在之前已经介绍过编程范型的概念,而事实上,我们到现在为止,纠结在这四门迥异的语言上面,浅看是各种语言特性,深看就是编程范型和思维方法。

下面这张“神图”来自于这里,可以说是对于范型和语言归类的概览,从左往右从更强的声明式向着更弱的声明式发展;依据状态分为Unnamed state(串行或并发,包含逻辑式和函数式

[......]阅读全文

分享到: