Skip to content

四火的唠叨

一个纯正程序员的啰嗦

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

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

LeetCode 题目解答—— 第 311 到 371 题

Posted on 01/19/201706/23/2019 by 四火

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

老规矩,跳过需要付费的题目。题目是越来越不好做,我尽量把自己的思路写下来。

371

Sum of Two Integers

51.9%
Easy

368

Largest Divisible Subset

31.9%
Medium

367

Valid Perfect Square

36.9%
Medium

36[……]阅读全文

Continue reading

一些前端框架的比较(下)——Ember.js 和 React

Posted on 12/26/201610/08/2024 by 四火

JavaScript framworks

这是前端框架比较和吐槽的第二篇。

Ember.js

Ember.js 的 extend 的写法很类似于 JQuery 或者是 Backbone.js,创建 Application,然后在它下面创建相应的 Model(Object)、Controller、Router、View 和 Template,这些都是非常类似的。但是它更为先进的地方在于,一些重复的样板代码,比如给 template 注入上下文并渲染,如果命名按照 CoC 的原则正确完成的话,都由框架自动完成,这就省去不少体力活。CoC 还体现在 URL mapping 上面,比如”/books/book_id” 配置在 books.index 的 Router 里,Contro

[……]阅读全文

Continue reading

一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js

Posted on 12/23/201610/08/2024 by 四火

JavaScript framworks

和一些前端框架打过交道,想起来这也是技术选型中经常面对的内容。我把我的经验、思考、感受,甚至是吐槽,记录在这里,有些零散,并且更多的是个人的感悟。而且由于技术所限,可能部分内容不够深入,或者不甚客观。当然,网上有很多分析对比,视角可能更为全面和系统。如果你在技术选型,或者在考虑要学习使用哪一款 MVC/MVP/MVVM 框架的时候,此文能够给你有价值的信息,就更棒了。如果你觉得我哪些部分说得不正确,或者需要补充,也烦请告知。

需要预先说明的是,这篇文章不是教程,因此如果你对其中某一框架知之甚少,可能需要先去简单学习了解以后才能和我产生共鸣,或者产生反驳的冲动。

以下是第一部分,先谈谈 GWT、An

[……]阅读全文

Continue reading

文档那些事儿

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

还记得在 2008 年我做毕业设计的时候,自己心里有一个朦朦胧胧的概念,大概是说,要规范,制度上有标准,流程上有遵循。于是噼里啪啦整了软件工程十项文档,再加上一些辅助性文档就有了下面这个清单。我以为那样的全面会带来更好的评价,但是老师说,“太多了”,我很困惑,难道文档全面、综合,而且完备,这不好么?

image

在 Amazon 有一个大家都知道和反复自黑的事情。所有 team 都用 wiki 来记录和维护项目、产品有关的事情,但是绝大多数 wiki 的内容都是过时的和不准确的。有几次和其他互联网公司的朋友讨论过这个话题,大家都付诸呵呵一笑,原来大家都差不多。这让我思考,是不是文档这样的东西,和代码不同,它更容易过时,它

[……]阅读全文

Continue reading

游戏中的货币和通货膨胀

Posted on 11/19/201606/23/2019 by 四火

Image result for 通货膨胀忽然想谈谈这个话题,是因为最近开始接触一款游戏《Path of Exile》。它可以说是市面上最接近暗黑 II 的游戏,甚至比暗黑 III 还要接近。作为一个暗黑 II 的十多年的爱好者,它自然引起了我的兴趣。我渐渐发现它有许多吸引我的地方,而其中关于游戏中货币的设计和对通货膨胀的压制都很值得玩味。

不可否认《暗黑破坏神 II》影响了一代人,也影响了无数后续的游戏设计制作人,其中不少独创性的设计都让人印象深刻。比如从 1.10 开始成熟的技能树和技能加成系统,比如地图自动生成系统,比如怪物、武器装备的生成规则(前缀、后缀等等),再比如真实化打击感的设计(打击感即便放到今天依然先进)等等。毫无疑问我从太多的游戏后

[……]阅读全文

Continue reading

写在孩子出生以后

Posted on 11/16/201606/23/2019 by 四火

IMG_0038 最近这一年可谓五味陈杂,各种起伏波动陆陆续续袭来,有时候感到生活艰辛,身心疲惫。就在一周前,也就是 11 月 8 号的时候,我们的孩子 Lucas 诞生了。整个降临过程持续了一昼夜,也折磨了他妈妈 24 个小时。好在最后母子平安健康。古人说,三十而立,而在 30 岁这一年同时也做了爸爸,这对我来说是一个巨大的变化。以往总在说成长,现在要说成熟,有了孩子以后,有许多生活上的琐事需要去做,而教育更是一个无比重要神圣的事情。我相信会多一些欢声笑语,也会多不少困难烦恼。无论如何,这是一个人生旅途上的重要节点,我也开始思考一些过去不曾思考的问题。我想用朴素的文字,记录一点内心的感受。

对 Lucas 的祝愿

IMG_0052 在微信朋友圈里

[……]阅读全文

Continue reading

从工具使用的痛苦说开去

Posted on 10/25/201606/23/2019 by 四火

painful

是因为最近团队里的数据分析师(data analyst)向我抱怨,为了分析数据,要跑 job,要执行 pipeline,要用 Spark 来算结果,但是期间遇到各种问题,虽然我们一起研究问题的解决方法,但是依然非常耗时而且令人沮丧。这些问题大多并非数据本身的问题,而是工程问题。换言之,我认为数据分析师的价值在于数据思维,他们有我们软件工程师不具备的数据敏感性,他们能从海量的数据中获得有价值的信息——但是如今他们却陷入了因为工具问题而导致才华无法施展的境地,确实令人叹息。而工具的问题,正是应该由软件工程师来解决的。

上班同车的同事 Kai 和我说,现在和几年前不同的是,“全民 dev 化” 了。除了 [……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • …
  • 23
  • 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 (6)
  • Automation and Operation Excellence (13)
  • Big Data and Machine Learning (5)
  • 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 (45)

推荐文章

  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • 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 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • + 1.943624 BTC.NEXT - https://graph.org/Ticket--58146-05-02?hs=9a9c6f8dfe3cdbe0074006e3e640b19b& on 所有文章
  • Anonymous on 闲聊投资:亲自体验和护城河
  • 四火 on 关于近期求职的近况和思考
  • YC on 关于近期求职的近况和思考
  • mafulong on 常见分布式基础设施系统设计图解(四):分布式工作流系统
  • 四火 on 常见分布式基础设施系统设计图解(八):分布式键值存储系统
  • Anonymous on 我裸辞了
  • https://umlcn.com on 资源链接
  • Anonymous on 我裸辞了
  • Dylan on 我裸辞了
© 2025 四火的唠叨 | Powered by Minimalist Blog WordPress Theme