Skip to content

四火的唠叨

一个纯正程序员的啰嗦

Menu
  • 所有文章
  • About Me
  • 关于四火
  • 旅行映像
  • 独立游戏
  • 资源链接
Menu

Author: 四火

一个程序员的故事。我是四火,一个热爱设计和编码的程序员,以前是一名华为人,后来去了Amazon,现在加入了Oracle。

再见,亚马逊时光

Posted on 02/13/201806/23/2019 by 四火

IMG_6884新入职 Oracle 已经超过一周了,但是一直没敢下笔,写一点东西纪念将近 6 年的亚马逊时光,总有惶恐的感觉。现在觉得不能再拖了,文字不在多寡,仿佛一种仪式,把整个亚马逊的经历画上句号。离开老东家的时候,往往是喜忧参半的,并且难免对前任颇有微词。在我离开华为的时候,便是如此,多为感怀和想念,但是诚实地说,也有一些厌烦的情绪,于是有释放之后的舒坦。这其中的缘由,我在以前的文中写到过。但是离开亚马逊,我却仿佛不再有这些负面的情绪,除了感伤和怀念,便是感激。要说明的是,如今亚马逊的股票直往上蹿,它却远非完美,也有诸多令人遗憾的风言风语。我觉得它在某些方面可以被称为 “美国的华为”,做企业的成就自不必说,但是

[……]阅读全文

Continue reading

《Person of Interest》剧评

Posted on 01/23/201806/23/2019 by 四火

POI

看完美剧 Person of Interest(POI,疑犯追踪,下同),心有波澜,写一点点文字,零零散散,算是剧评。

我不觉得我是一个美剧狂热的爱好者,但是确实也看了好几部美剧。读书的时候开始看 Friends(六人行),后来顺着相同的风格,看 Two and a Half Men(好汉两个半),以及 How I Met Your Mother(老爸老妈浪漫史)等等,都是很欢快的风格;另一条线看一些悬疑、枪战、罪犯之类的片子,比如最早看 Prison Break(越狱),看 24(反恐 24 小时),后来看 Breaking Bad(绝命毒师),看 Crime Scene Investigation(犯罪现场

[……]阅读全文

Continue reading

折腾的快乐

Posted on 01/09/201809/25/2019 by 四火

sde

先讲个故事

公司里有这么一个小小的差事,某一个月,每天都要把 Excel 的某一列的数据根据某种规则换算以后拷贝到另一列去。

DA(数据分析师)看了以后说,就手工完成吧。反正只有一个月,这件事情每天做 3 分钟,也没有多耽误时间。

TPM 看了以后说,这事情每天做做很简单啊,写一张便签贴在屏幕上,每天就不会忘记了。

Dev Manager 看了以后说,衡量一下这个很小的时间成本,用其它的方式来解决是不划算的,还是手工搞定吧。

……

不过地球上还有一种特殊的物种不同意。它门叫做程序员——这么重复性的劳动难道不能用脚本完成吗?

就是,用 geek 的脚趾头想一想,这还用问?

于是写脚本,调试,

[……]阅读全文

Continue reading

2017 年总结

Posted on 01/03/201806/23/2019 by 四火

summary

一周前才家人送上飞机回国过年,这两个月要一个人安安静静呆着了,就从写一点东西回顾这个过去的 2017 开始吧。

健康

我总是把健康放在首位。就像我之前写的,健康是一个拥有它的时候不会注意到它的东西。Crohn’s Disease 时不时回来找我,但是总的来说,仅仅急性地比较严重地犯了一次,其它都还可控,比 2016 年好;抑郁症的问题也基本得到控制,虽然有时候还会头晕,特别是天气不好的时候,这也比 2016 年好。除了药物以外,时间越长我越能够理解自己的身体,总的来说我已经很满意了。当然,要是没有一个比较好的状态,我也没有办法完成面试求职这些事情。

孩子出生以后,爬山的次数明显不如 [……]阅读全文

Continue reading

时间投入上的权衡

Posted on 11/22/201710/01/2024 by 四火

time management

时间管理被很多人忽略了。被忽略的一个原因是,我们被洗脑洗得太久,读到的鸡汤文太多,觉得一个人的主观努力程度扮演了过度重要的作用。事实上,这里有两个问题,一个是如何评价目标的达成,特别是人一生这个大的范围内的评价,鸡汤文中总把一个人在事业上的 “成功” 列为最大的目标,但实际我觉得这只对一部分人成立;另一个是,即便这个目标成立,主观努力依然被高估了——或者说,主观努力当然重要,而且对于大多数人来说,天赋并无法起到决定性作用,但是,许多人的主观能动力是类似的,结果却大相径庭。这里面,除了主观努力和先天天赋以外,明显还有别的因素在起作用,而时间管理就是其中之一。

几年前写过一点关于时间的文字,不过都是

[……]阅读全文

Continue reading

Blog 安全问题小记

Posted on 11/21/201707/03/2022 by 四火

xmlrpc

最近 Blog 遭遇了几个安全问题,折腾了几个钟头,在此记录一下。

最大的问题是 blog 访问时不时地出现 “502 bad gateway”,即便不出现,latency 也能达到接近三十秒。

于是登上 vps 去看原因,top 命令发现 CPU 都用完了。靠,十个 php-fpm 居然都在满功率工作。研究了一下,通常 php-fpm 在没有请求的时候是不应该占用那么多 CPU 资源的,而且 mysql 也高,似乎有人在访问网站,但是去 access log 里面却没找到东西:

top - 02:08:12 up 56 min,  1 user,  load average: 10.18, 9.41, 8.68

[……]阅读全文

Continue reading

职业生涯下一站

Posted on 11/20/201708/25/2020 by 四火

career

水文一篇。

在亚马逊已经呆了六年多了,想起第一次换工作的情形仿佛还历历在目。如今,就在我还有半年多就将迎来我第十个工作的年头,经历了骑驴找马的面试,不久我将迎来第二次职业生涯的重大变更,下一站:Oracle,Oracle Cloud Infrastructure。

我的工作经历,可以用多样来形容,也可以用乱七八糟来形容。其中的原因有客观的,也有主观的。客观的原因是项目和团队的需要,本来工程师团队如同资源池,就是要去解决不同的问题,这些问题是由当时的境况和市场决定的。主观的原因是,我本来就是一个领域涉猎相对广泛的程序员,而且兴趣三年两头自己都弄不清楚,有时候这未必是好事,但是 [……]阅读全文

Continue reading

LeetCode 付费题目(一)

Posted on 11/07/201706/23/2019 by 四火

LeetCode 300 题以内需要付费才能查看的所有题目解答。

156

Binary Tree Upside Down

157

Read N Characters Given Read4

158

Read N Characters Given Read4 II – Call multiple times

159

Longest Substring with At Most Two Distinct Characters

161

One Edit Distance

163

Mi

[……]阅读全文

Continue reading

几个系统设计问题的解决思路

Posted on 10/31/201708/23/2020 by 四火

曾经写过一些系统设计方面的思考(比如这个和这个),但是最近准备面试,又接触了更多系统设计方面的问题。这里我想简单记录一些典型系统设计问题的思路。通过学习常见的系统,在心中形成一些问题解决的套路,以在思考和分析新问题的时候提供一些既定思路。很抱歉时间关系写得很简略,主要是提示一些思路和方向。

设计 Tweeter
两种常见模型的 trade off:

  • Pull on demand: merge x timelines
  • Push on change: async, read once to get them

缓存的设计,cache through

设计 Web crawl[……]阅读全文

Continue reading

近期面试求职的经历和感受

Posted on 10/30/201706/23/2019 by 四火

好久没有更新了。回来报个到,也向关注和提醒我 blog 更新的朋友们道个歉。原因在于,最近非常忙,忙于找工作。现在下家还没有定下来,手头有几个 offer,还在考虑中,但是很快会决定下来,然后更新更进一步的信息。无论如何,blog 的更新已经恢复正轨。
通常人的一生中不会有太多属于自己的求职季节,尤其像我这样的,总觉得在一个地方需要积累,因而并不是频繁跳槽的粉丝。第一份工作在华为,我干了三年半;第二份工作在亚马逊,直到现在,超过了五年半。职业生涯的前方就将是第 10 个年头。

为什么是现在?

三年半前我通过 L 签证来到西雅图,而 L 签证是不能够更换雇主的,因而自然也不用考虑工作变更的可能性。去年 [……]阅读全文

Continue reading

求第 K 个数的问题

Posted on 07/14/201710/02/2024 by 四火

一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第 k 个是多少。假设排列的下标从 1 开始,而非 0 开始。

这个问题如此之简单而熟悉,可它却可以是很多现实问题的某一个子问题的抽象。它本身相关的问题其实就不少,而且还可以不断演进,成为不同复杂程度的问题。

关于这个问题的分析和演进,我们不妨从一左一右两条分支——堆排序或者快排,来分别进行。在不断演化问题的时候,会这两个分支之间跳来跳去,为了尽量清晰的考虑,我采用一种新方法——使用 【分支:堆排序】和 【分支:快排】来标注。

Java 中快排用 Arrays.sort 就可以了,如果是堆排序需要用到 PriorityQueue。 用 Array[……]阅读全文

Continue reading

分布式系统中唯一 ID 的生成

Posted on 06/30/201706/23/2019 by 四火

其实老早就像写一点这个话题。几乎我见过的所有大型系统中,都需要一个唯一 ID 的生成逻辑。别看小小的 ID,需求和场景还挺多:

  • 这个 ID 多数为数字,但有时候是数字字母的组合;
  • 可能随机,也可能要求随时间严格递增;
  • 有时 ID 的长度和组成并不重要,有时候却要求它严格遵循规则,或者考虑可读性而要求长度越短越好;
  • 某些系统要求 ID 可以预期,某些系统却要求 ID 随机性强,无法猜测(例如避免爬虫等等原因)。

独立的生成服务

比如数据库。最常见的一种,也是应用最多的一种,就是利用数据库的自增长序列。比如 Oracle 中的 sequence 的 nextVal。有多台 application 的 h[……]阅读全文

Continue reading

React+Redux 组合使用之感受

Posted on 06/11/201710/08/2024 by 四火

最近完成了一个使用 React+Redux 组合的项目,以前仅仅是接触了解以及学习,并未正儿八经地使用过,因此这一次可以说是第一次完整地再一个项目当中使用。因而对于认识之浅显请轻拍。

从架构和层次的层面,这个组合给我最好的感受是干净利落的解耦。有不少 JavaScript 框架尝试解决解耦问题,但是到了落实的层面上很容易出现分层分模块不容易严格控制,缺少清晰标准等问题。但是 React+Redux 的组合没有这个问题,我们把应用中 JavaScript 的部分分层为 action、client、config、constant、reducer、store、util 和 view 几个部分,其中 view 又进一步划分 [……]阅读全文

Continue reading

再谈谈工程师

Posted on 06/03/201706/23/2019 by 四火

IMG_1989昨天去参加了一个公司内的 expo,大致就是以团队为单位组织起来,做广告,招呼各种工程师去看,有团队介绍,产品介绍,技术介绍;有披萨、啤酒和零食;也有一些填方格的活动供参与和纪念衫可以领取。我们组也大张旗鼓地伴着各种搞笑的口号和宣传材料上阵了。挺有趣的一件事情,也是很有工程师文化的事情。

以前谈过不少关于工程师的话题,比如这个、这个和这个,今天想再谈谈。

其实自我工作以来,软件工程师这个职位变化很大,无论是职责、技术、待遇,但是不变的是,我看到优秀的工程师至始至终非常抢手,而且需求量很大。不扯没用的,任何行业优秀的角色都受欢迎,但是就我熟悉的 IT 公司来说,软件工程师始终处于特别的存在 [……]阅读全文

Continue reading

谈谈于丹

Posted on 05/07/201710/01/2024 by 四火

对,就是百家讲坛那个号称研究古文的 “学者” 于丹。

鸡汤满世界都是,我很少在意;知识分子谈论观点和看法千千万,多么奇葩有趣的都有,我很少痛恨知识分子。但是于丹是个例外。

与我而言,知识分子如果只专注分内之事,执着于学术范畴,无疑是所谓的 “本行工作”,无论正误,都是无可过度指摘的。毕竟观点迭出才有万象世界,只有反复质疑才有科技与社会之进步。

还有一类知识分子,他们不甘寂寞,他们涉足传道授业,他们涉足启迪民智,通常他们更令人尊敬。因为这并非本行,当然也不可说越俎代庖,毕竟没有人专职干这个。

但是有一些人,他们传 “道”,但是愚民,他们的面皮撕下来,就是一张维护统治阶级少数人的嘴 [……]阅读全文

Continue reading

关于中国的学校教育,我的几点杂乱的看法

Posted on 04/15/201706/23/2019 by 四火

来美国工作生活已经三年了,早就过了适应期,一些酸甜苦辣也尝到了。经常和同事讨论各个国家的趣事,经常涉及到的话题是教育。事实上这也是个敏感话题,而且似乎是个永久热门的话题。我不想扯得太远,只想表达对于国内学校的课程教育,我的其中几个观点。

英语从高考中撤走?

众所周知,国内的应试教育决定了,如果高考不考,基本上课程就和放松之用的选修课差不多。无数的父辈都教育我们要把英语学好,可是每当我们跟上问一句 “为什么” 的时候,除了 “高考要考” 之外,并没有什么强有力的理由,在耳边来回倒腾的无非是 “要和外国人对话” 啊,“中国要国际化” 啊云云自己都不太相信的鬼话。这就好像很多家长要逼着小孩子学琴一样,[……]阅读全文

Continue reading

一个前端项目,到底要集成多少库和工具

Posted on 03/12/201706/23/2019 by 四火

最近忙于一些新做的项目,由于新入手,就想着往最佳实践去靠,也寻找一些可以借鉴的模板。其中前端的部分,有很成型的模板可以借鉴。大幅度减少了自己调查和集成的工作量。但是仔细看看,发现这里头的概念太多了,各种开源的库和工具,有人说 “前端玩的是广度” 是有道理的。

这个新项目并不算特别复杂,大致的技术是基于 React+Redux 的,但是大体上集成完毕以后,完成了几个 demo 的代码之后,粗粗地过了一遍,除了传统意义上的 HTML+CSS+JavaScript(遵循 ECMAScript 6 的标准)三大件,居然涉及到了那么多技术,把自己吓了一跳:

  • React: an open-source dec

[……]阅读全文

Continue reading

继续说说 “在家办公”

Posted on 03/09/201706/23/2019 by 四火

我在几年前写过一点对于在家办公的理解,经过最近几年的感受,时不时地需要在家办公,零零散散陆陆续续有了一些新的感受。

首先要明确的是,团队的支持是最重要的。需要一个宽松的团队氛围,能够获得足够的信任,这些都是软基础。如果同事和上司不信任,这件事情是不可能办成的。对于那些把员工视为不可靠、不安全因素的公司,在家办公也是难以实现的。

开发环境。以往我一个不愿意在家办公的重要原因是,我的开发环境都部署在 desktop 上面,从家里无论是通过 Microsoft Remote Desk 还是 NoMachine 之类的连接(我还试过一些别的持有图形界面连接的方式),都不够理想,一顿一顿的,写代码很难受 [……]阅读全文

Continue reading

写在老梁事件发生之际

Posted on 02/26/201710/01/2024 by 四火

一个我很喜欢的时评人,老梁(梁宏达)最近被封杀了。原因只是用质疑的语言评价了一些传统意义上的正面光辉形象,比如雷锋、焦裕禄等等。他的观点与官媒背道而驰,于是伟光正的广电总局终于无法忍受,封杀了他。事实上,他还没太敢触及更尖锐的话题,涉及更惊人的人物春秋。你我都明白,他是收着说话的,他是说好听话的,他还是尽量缓和地在歌功颂德中揭露一些丑恶。

  • 我记得最近一年来,我喜欢听这么几个人的评论或者脱口秀节目:
  • 罗辑思维的罗振宇,听他讲历史、讲社会问题挺有趣,生动而且视角独特,但是他不太讲尖锐的社会问题,不太讲当今国内的政治问题;
  • 大唐雷音寺的老梁,我最喜欢的地方在于,对于社会时事热点,能够

[……]阅读全文

Continue reading

克罗恩病

Posted on 02/15/201706/23/2019 by 四火

这是一个关于自己的故事。

大概是去年我被诊断出克罗恩病的,要说以前,大概只是大概知道它是什么,我想对于大多数人来说,这只不过是一个名词而已吧。

去年 9 月份的时候,吃完虾以后,突然感到恶心腹痛,吐了又吐,难以忍受。实在没招了,凌晨的时候,我老婆开车把我送去邻近医院急诊。CT 显示小肠末端处于发炎状态,有严重的狭窄,因此食物下不去。为这事儿住了两天院观察,做了一堆检查,严格禁食,等到炎症缓和一些,就出院了,但是医生告诉我,但愿只是病毒引起,也可能是别的疾病,但必须去完善肠镜。

一个月以后,除了巨额账单,肠镜的结果更令人失望,除了小肠末端狭窄依然存在以外,活检发现一些肠壁的损伤,包括 [……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • …
  • 24
  • Next

订阅·联系

四火,啰嗦的程序员一枚,现居西雅图

Amazon Google Groovy Hadoop Haskell Java JavaScript LeetCode Oracle Python Spark 互联网 华为 历史 同步 团队 图解笔记 基础设施 工作 工作流 工具 工程师 应用系统 异步 微博 思考 技术 投资 数据库 时间 曼联 测试 生活 程序员 管理 系统设计 缓存 编码 编程范型 英语 西雅图 设计 评审 问题 面试

分类

  • Algorithm and Data Structure (30)
  • Concurrency and Asynchronization (6)
  • System Architecture and Design (43)
  • Distributed System (18)
  • Tools Frameworks and Libs (13)
  • Storage and Data Access (8)
  • Front-end Development (33)
  • Programming Languages and Paradigms (55)
  • Testing and Quality Assurance (4)
  • Network and Communication (6)
  • Authentication and Authorization (7)
  • Automation and Operation Excellence (13)
  • Machine Learning and Artificial Intelligence (6)
  • Product Design (7)
  • Hiring and Interviews (14)
  • Project and Team Management (14)
  • Engineering Culture (17)
  • Critical Thinking (25)
  • Career Growth (57)
  • Life Experience and Thoughts (42)
  • Business and Investment (8)

推荐文章

  • 聊一聊分布式系统中的时间
  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • RSA 背后的算法
  • 谈谈 Ops(汇总 + 最终篇):工具和实践
  • 不要让业务牵着鼻子走
  • 倔强的程序员
  • 谈谈微信的信息流
  • 评审的艺术——谈谈现实中的代码评审
  • Blog 安全问题小记
  • 求第 K 个数的问题
  • 一些前端框架的比较(下)——Ember.js 和 React
  • 一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js
  • 工作流系统的设计
  • Spark 的性能调优
  • “残酷” 的事实
  • 七年工作,几个故事
  • 从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)
  • 一道随机数题目的求解
  • 层次
  • Dynamo 的实现技术和去中心化
  • 也谈谈全栈工程师
  • 多重继承的演变
  • 编程范型:工具的选择
  • GWT 初体验
  • java.util.concurrent 并发包诸类概览
  • 从 DCL 的对象安全发布谈起
  • 不同团队的困惑
  • 不适合 Hadoop 解决的问题
  • 留心那些潜在的系统设计问题
  • 再谈大楼扔鸡蛋的问题
  • 几种华丽无比的开发方式
  • 我眼中的工程师文化
  • 观点的碰撞
  • 谈谈盗版软件问题
  • 对几个软件开发传统观点的质疑和反驳
  • MVC 框架的映射和解耦
  • 编程的未来
  • DAO 的演进
  • 致那些自嘲码农的苦逼程序员
  • Java 多线程发展简史
  • 珍爱生命,远离微博
  • 网站性能优化的三重境界
  • OSCache 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • 四火 on 聊聊商业模式——Atlassian
  • bob on 聊聊商业模式——Atlassian
  • Battlele on 回国感悟
  • Anonymous on 聊聊商业模式——拼多多
  • Battlele on 聊聊商业模式——拼多多
  • Anonymous on 聊聊商业模式——拼多多
  • Anonymous on 所有文章
  • Anonymous on 倔强的程序员
  • rocky on 关于时间管理的一点新的感悟
  • panshenlian.com on 初涉 ML Workflow 系统:Kubeflow Pipelines、Flyte 和 Metaflow
© 2026 四火的唠叨 | Powered by Minimalist Blog WordPress Theme