Skip to content

四火的唠叨

一个纯正程序员的啰嗦

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

关于近期求职的近况和思考

Posted on 02/20/202502/23/2025 by 四火

自去年秋天裸辞之后,一直在考虑职业生涯的问题。之后加入求职大军,目前进展还算顺利,作为软件工程师的下一站也将很快确定下来。但是这一次的 career break,虽说时间不算长,却给了我莫大的启发,我也有了一些思考。

从 fullstack engineer 到 platform engineer

其实在去年年初的时候就简要叙述过这个事情。熟悉我的朋友都知道,我的职业生涯有点奇怪,从 Huawei 开始,我是一个全栈工程师(fullstack engineer),从网页设计、前端开发到后端开发都是一锅端的,当时也非常喜欢这个方向,这也是我后来在极客时间上写 《全栈工程师修炼指南》这门课的原因之一

[……]阅读全文

Continue reading

聊一聊分布式系统中的时间

Posted on 10/20/202410/20/2024 by 四火

今天聊一下时间的话题。在分布式系统中,“时间” 是一个挺有趣,但是很难处理的东西。我把自己的理解简单整理下来。

不可靠的物理时钟

首先,单一节点的物理时钟是不可靠的。

物理时钟本身就有偏差,可是除此之外,可以引起节点物理时钟不准确的原因太多了,比如 clock jump。考虑到 NTP 协议,它基于 UDP 通信,可以从权威的时钟源获取信息,进行自动的时间同步,这就可能会发生 clock jump,它就是说,时钟始终会不断进行同步,而同步回来的时间,是有可能不等于当前时间的,那么系统就会设置当前时间到这个新同步回来的时间。即便没有这个原因,考虑到数据从网络传输的延迟,处理数据的延迟等等,物

[……]阅读全文

Continue reading

几个有意思的分布式系统设计模式

Posted on 10/01/202403/15/2025 by 四火

分布式系统有它特有的设计模式,无论意识到还是没有意识到,我们都会接触很多,网上这方面的材料不少,比如 《Catalog of Patterns of Distributed Systems》,还有 《Cloud Design Patterns》等等。这里简单谈谈几个我接触过的,也觉得比较有意思的模式。

LSM Tree

对于这个话题,基本上第一个在我脑海里蹦出来的就是 LSM 树(Log Structured Merge Tree)。其实,LSM 树本来只是指一种数据结构,这种数据结构对于大吞吐量的写入做了性能上的优化(比如日志写入),同时对于根据 key 的读取也有不错的性能。换言之,对于读写

[……]阅读全文

Continue reading

本地部署 Minikube + Docker 记录

Posted on 09/26/202410/02/2024 by 四火

我有 Mac 和 Windows,这些年折腾软件方面的环境 Linux 用得比较多,最近想安装一个 Kubernetes 的本地环境,本着 “生命不息,折腾不止” 的精神,打算在 Windows 上动手。了解到可以尝试 Minikube,在此简单记录一下。

首先得要安装 Docker,但是在 Windows 下跑 Docker 有两种方式,WSL(Windows Subsystem for Linux)或者 Hyper-V。我首先把这些 Windows 组件都勾上:

我两条路都去走了一下,为了使用 Hyper-V,我还去 BIOS 里面打开虚拟化支持的选项。不过,后来才知道,因为操作系统版本是 Windows 10 Ho

[……]阅读全文

Continue reading

谈谈分布式锁

Posted on 09/18/202409/19/2024 by 四火

不要使用分布式锁

就像 Martin Fowler 说的那样,“分布式调用的第一原则就是不要分布式”,谈分布式锁也要先说,不要使用分布式锁。原因很简单,分布式系统是软件系统中复杂的一种形式,而分布式锁是分布式系统中复杂的一种形式,没有必要的复杂性就不要引入。

有的逻辑是没有副作用的(纯函数代码),那就可以无锁执行;有的数据经过合理的 sharding 之后,可以使用单线程(单节点)执行,那就单线程执行。

比如一种常见的模式就是使用 queue(比如 Kafka),任务全部放到队列中,然后根据 sharding 的逻辑,不同的 consumer 来处理不同的任务,互相之间不会干扰冲突。

还有

[……]阅读全文

Continue reading

我裸辞了

Posted on 09/15/202409/15/2024 by 四火

我裸辞了。

工作差不多十六年了,从来没有以离职后休假的方式休息过。今年还是比较特别的,我做了很多新的尝试,想改变一下自己,包括这最近发生的一件事情。事情发生得很快,我辞职了,在作为 engineer 加入 Doordash 一年零十个月后。

记录一下。

原因

我不是在二十岁的年纪,做决定容易缺乏思考,其实,我已经想了这件事情好久了。在这期间,我也和不同的朋友和同事讨论过,他们有的还在 Doordash,而有的也已经离开了。说起来,大致有三个原因:

第一个,是兴趣的不匹配。

郭德纲说过,如果你每天做的事情是你喜欢做的,那就是老天爷赏饭吃。这样的情况只在少数人身上发生,而

[……]阅读全文

Continue reading

谈谈拼多多和品牌

Posted on 02/19/202410/08/2024 by 四火

最近有些思考,想在这里随便聊一下拼多多和品牌的话题,记录一下。

我不是学经济的,也不是学商业的,但是关于品牌和商业模式的话题,很多人都有自己的思考。我想聊聊这个事情是由最近拼多多市值超过阿里的事情引起的。

首先一点,电子商务的红利期早就过去,现在看来,电子商务真的算不得什么好生意,也很难谈什么扎实的护城河。电子商务,最多就是套着已经黯淡马甲的零售业,没有什么本质区别。

也许在十五年前,电子商务是能给人无限遐想空间的商业模式。阿里巴巴这些年可以说把一副好牌打坏,电商成功了,但不能躺在功劳簿上,于是它尝试了大量的 “第二曲线”,可是基本上输多胜少,臃肿的人员不说,投资也是一塌糊涂。

[……]阅读全文

Continue reading

关于软件行业未来和职业生涯的一点思考

Posted on 01/15/202401/15/2024 by 四火

关于行业未来

软件行业裁员到处是风声鹤唳,关于行业,关于职业,关于未来,平日里总有一些零散的想法,可是总体来说,始终是忙碌太多,而思考太少。于是,这个周末静下心来,想努力把这些碎片串起来——可是似乎这并不是一件很容易做的事情,那就先把这些想法记录下来。

首先,关于软件行业。很显然的是,任何行业都有周期,软件行业也不例外,软件行业已经过了最疯狂的时间段,现在整个市场都在高利率下,在高昂的借贷成本下冷静下来。我依然记得最疯狂的时候,大概就是在疫情大放水期间,小红书上都有各种行业的牛鬼蛇神 “三个月转码” 的小作文,那些就让我想起了好多年前,我刚读大学的时候,听说招计算机专业的毕业生,因为需

[……]阅读全文

Continue reading

关于经济和投资,再见,有趣的 2023 年

Posted on 12/30/202310/08/2024 by 四火

2022 年末 2023 年初的时候,中国顶尖的投资银行中金公司(中国国际金融股份有限公司)对于中国宏观经济做了十大宏观预测。如今到了年末,回头一看,了不得,居然全错。要知道,能把这十道题全部做错和把十道题全部做对一样,都是只有非同寻常的人才能做到的。

不过,我倒不是想强调中金公司搞宏观分析的团队有多么得不靠谱,而是说,预测宏观本来就是一件无比困难的事——事实上,华尔街的分析师也好不到哪去:

股票策略师 Mike Wilson 预测,标准普尔 500 指数即将暴跌。在美国银行,Meghan Swiber 及其团队表示,要为美国国债收益率暴跌做好准备。在高盛,包括 Kamakshya

[……]阅读全文

Continue reading

音频:我不是码农,我是程序员,我和你一样,为理想而奋斗

Posted on 09/09/202310/01/2024 by 四火

和不慌不 MANG 播客的主播 FANG FANG 聊了一下程序员的话题,音频放在这里。下面是 Spotify 和苹果 Podcast 的嵌入代码,国内的小宇宙链接在此。

Show notes:

  • 02:36 “码农” 是不经意的自嘲还是妄自菲薄?
  • 04:45 十年前写下《致那些自嘲码农的苦逼程序员》文章的机缘
  • 11:32 要意识到自己所讲述的故事 narrative 对自己的暗示, “自我验证预言” 与现实的交互影响
  • 15:38 误解之一: 程序员是无趣的人?
  • 17:23 误解之二: 程序员的工作单调乏味?
  • 24:17 程序员也需要全面的能力, 写程序只是工作中的一部分
  • 30:08《你不适合做程序员

[……]阅读全文

Continue reading

关于时间管理的一点新的感悟

Posted on 08/26/202310/01/2024 by 四火

从读书,到工作,都离不开时间管理,我相信只要不是属于无比随性的少数人,应该都有自己的体会。因为这件事情太重要了,它贯穿于每日的生活和工作之中。好久以前就写过一点关于时间管理的体会,后来又补充了一些,现在重新开一篇短小的文字,记录一点新的感悟。

变化

随着年岁的增长,我却越来越感到时间管理这件事情在不断地变得更加重要,因为整体的事务数量和复杂度都提升了。

关于其中的原因,我仔细思考过。大致上,在年纪轻一点的时候,兴许每天需要筹划实施五件事,但是现在呢,每天需要筹划实施十件事。相应地,年轻的时候,兴许可能这五件事里面,最终能完成三件;而现在,这十件事里面,也最多能完成五件,看似完

[……]阅读全文

Continue reading

闲聊投资:亲自体验和护城河

Posted on 07/30/202310/08/2024 by 四火

闲聊一点美股投资。以前讲过一点我投资美股的原则(有些想法有了变化),今天想接着再补充说一些。

上周五的时候,和同事闲聊聊到了投资,他提到,巴菲特建议大多数人只需要买指数就好了,因为投资个股对于大多数人来说都是一件长期收益小于投资指数的事情。即便不买指数,还有那么多基金,都很方便购买——事实上,市场上大部分的资金都来自于专业机构,他们有高级的工具,有专业的人员,市场在某种程度上就是一个零和游戏,那凭什么自己做的投资决策能击败他们?如果不能,那为还不如就买相应的基金就好了。我很赞同这样的看法,可是,投资个股也有好处,其中之一就是有乐趣,可以保持自己对于经济、公司等等的敏感性,让自己持续学习。

[……]阅读全文

Continue reading

学习 OpenAPI 的一点记录

Posted on 06/17/202306/17/2023 by 四火

我记得在毕业以前,就大致明白这样一件事情,系统之间、模块之间的交互,要确定协议,要定义接口,兜兜转转这些年过去了,我觉得对这件事情认识当然越来越深刻,也说不清其中的程度。最近做的项目中,开始大量地和 OpenAPI 打交道,一方面要最先使用 OpenAPI 来定义接口,让多个其他交互的模块都遵循它来开发,就是 “OpenAPI Driven Development” 的意思,这没啥特别的;但另一方面,系统中还需要把 Protobuf 接口定义转换成 HTTP 接口定义,并实施地使用 swagger-core 来动态创建 OpenAPI Spec,这就比较好玩了。

gRPC 到 HTTP 的协议转换

先

[……]阅读全文

Continue reading

一些皓哥和我的故事——谨此纪念陈皓先生

Posted on 05/16/202305/17/2023 by 四火

好久没动笔了,昨日得知左耳朵耗子陈皓先生突然离世的消息,颇为震惊和难过,也感到非常惋惜。他曾经是我在亚马逊时期团队中的经理,更重要的是,他是对我在软件工程师这条道路上影响最深的几个人之一,我觉得我应该写一点纪念性的文字。

要说和陈皓的联系,大概从十来年前说起,之前也关注酷壳博客,2011 年底的时候,在南京的我我正在找工作,想去北京,我写邮件给他,附上我的简历和我当时还在 ITEye 的 blog,问他招不招人。那时我只是一个工作三年多的程序员,和我想象的不同,陈皓回邮件很快,也没有什么架子,我们来来回回讨论了不少技术问题。之后赶在年前跌跌撞撞过了面试,两月份我就加入了北京亚马逊,在一个把负责商

[……]阅读全文

Continue reading

入职后一些零散的感受和思考

Posted on 11/19/202211/19/2022 by 四火

有些时候自己会有一些想法,但是过于零散,想把它们记录下来,可是又找不到一个清晰脉络可以把它们串起来。入职已经两周了,我还记得快要五年前加入 Oracle 的时候,我也写了一篇类似零散的文字,不过那个时候是在入职一个月左右的时候。

Facebook 的唏嘘

我记得在五年前谈 offer 的时候,Facebook(现在改名叫 Meta 了)也给了 offer,他们的 recruiter 当然是尽力试图说服我加入他们,而不是加入 Oracle。当时有一句话我依然记得,大致是说不只要看当下 compensation 的价值,要考虑到股票的潜力,因为 Facebook 的股票的潜力是 Oracle 所不能比的(北美软件工程师

[……]阅读全文

Continue reading

近况更新:第三次换工作

Posted on 11/06/202210/01/2024 by 四火

最近发生了太多的事情,也没有更新 blog,来冒个泡。

我基本上是一个很长时间才会换一次工作的人,说好听点就是爱惜羽毛(工作经历),注重长期积累而非短期回报,说难听点那叫懒得动弹。

记得在 2012 年初的时候,我在人生中第一次换工作,从华为跳到亚马逊,那时候我已经在华为干了三年半了,其中的主要动机一个是想开阔眼界,另一个是可以不那么辛苦。

接着就是 2018 年初,在亚马逊干了六年之后,第二次换工作,从亚马逊跳到甲骨文,主要动机有两个,一个是我想在职业生涯有个突破,去参与云计算的浪潮;第二个是我觉得当时我的薪水已经严重偏离市场能给我的待遇了,所以想去谋取一份更合理的薪水。

这一

[……]阅读全文

Continue reading

常见分布式应用系统设计图解(十五):支付系统

Posted on 09/02/202209/02/2022 by 四火

支付(Payment)系统可以很复杂,比如可以和银行打交道,和信用卡系统打交道。如果我们考虑用户在一家电商买东西,在结账的时候,借助电商支持的支付系统(Payment Service Provider)来完成支付行为。

支付系统需要结合商家(包含卖家和买家)一起来看。最典型的一种需求是,卖家在电商网站挂了东西卖,买家挑选了货物,结账并支付,电商依赖于支付系统来完成支付,并通知买家支付成功。

  • 图中用两条虚线分隔出了 3 列,最左边是用户,中间是电商系统(比如 Amazon),右边是 Payment Service Provider(PSP,比如 PayPal)。支付操作需要保证幂等性,

[……]阅读全文

Continue reading

常见分布式基础设施系统设计图解(八):分布式键值存储系统

Posted on 08/27/202201/18/2025 by 四火

Key-value 存储系统大概是分布式存储系统中最常见的一种类型了。从功能需求的角度说,最核心的包括:

  • 可以创建一张表和删除一张表,同时对于表的数据可以进行:
  • 读,即 get(key) 返回 value
  • 写,即 put(key, value)
  • 删除,即 delete(key)

当然,也有一些其它的功能需求,比如支持事务性,支持 key 排序查询,range key 或者特定列索引,支持同一 key 下 value 的 version 等等。

从非功能需求的角度说,凡是存储系统,Durability 是最重要的,数据不能丢失;其次是 Availability;再次是 Performance,这样的系统需要考虑 thro

[……]阅读全文

Continue reading

常见分布式应用系统设计图解(十四):日志系统

Posted on 08/14/202208/21/2022 by 四火

典型的互联网应用的日志系统,从功能需求上看主要包括收集,存储和分析,以及展示这样三个部分,因此整个系统我觉得也可以按此思路大致可以分为三个部分:

  1. 日志收集,从宿主机上采集业务应用的日志,发送给远端的日志系统;
  2. 日志存储、分析和后期处理;
  3. 日志查询和分析数据展示。

非功能需求方面,我觉得可以考虑这样几个要点:

  • Durability:这是最重要的,尽可能不要丢失日志,到服务端的日志不要丢,在客户端的日志,也是如此,即便服务端不可用或连接断开,客户端的日志也要保存在本地。
  • Availability:其次是可用性,要保证高可用。
  • Performance:相较来说,日志系统的 performan

[……]阅读全文

Continue reading

再谈谈互联网外企在中国的失败

Posted on 06/04/202210/02/2024 by 四火

最近亚马逊将要关闭 Kindle 中国区业务的新闻唤起了我的感慨,这则新闻在朋友圈刷屏了。这件事情作为触媒,让我联想到很多东西,我就想,要不然理一理思路,写一点东西吧。

这件事情,基本上就是说,亚马逊宣布将于一年之后即 2023 年 6 月 30 日,在中国停止 Kindle 电子书店的运营,被媒体称作 “时代的眼泪”。众所周知,亚马逊曾经也在中国有着雄心壮志,不可谓目光不长远。建仓储和物流的基础设施,要与淘宝一争高下,可如今只能灰溜溜地撤出了原本在中国主营的零售业务,只留下了跨境电商,令人唏嘘。

我在 2012 年初以软件工程师的身份加入了亚马逊,一直到 2018 年初离开。很喜欢亚马逊的工程师文化,也很喜欢

[……]阅读全文

Continue reading
  • 1
  • 2
  • 3
  • 4
  • …
  • 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