硕大的汤姆
The official website of Minhua Chen
Home
All posts
About
Algo
原则
Tags
Posts
13
Feb 2023
先有鸡还是先有蛋
### 1. 先有某个语言的编译器还是先有编程语言? 在编译器领域有个概念叫自举(bootstrapping),也就是用一门语言实现该语言的编译器/解释器,然后用自己的编译器编译出自己的新编译器/解释器。 这是一个经典的鸡与蛋的问题,...
18
Nov 2022
葬礼随笔
2022年,我失去了三个亲人,人生第一次如此近距离地感受到了死亡。 今年4月份,外公去世了。我被封在上海家里,没能送他最后一程。前几天,爷爷奶奶也因为意外离世,我第一时间赶了回去送他们,这也是我人生中参加的第一次葬礼。一直保持稳定平静的...
24
Jul 2022
A little copying is better than a little dependency
quote from https://go.dev/blog/supply-chain: > The final and maybe most important software supply chain risk mitigatio...
24
Jul 2022
Make the choice right
最近看到一个新闻,东南大学建筑学院招不满人,建筑学院录取线接近东大录取线。 东南大学是我的母校,而建筑学院一直都是东大最好的专业,在我上大学的时候,建筑系在江苏的分数线一般都已经接近交大复旦的录取线了。很难想象建筑系分数线会降低这么多。...
20
Jul 2022
How to be successful
再读 https://blog.samaltman.com/how-to-be-successful - 追求复利,你的单位产出应该越来越高。 - 蜜汁自信。 - 独立思考,并找到能分享观点的人。 - 善于销售你的观点,尤其是书面沟通能...
16
Jul 2022
一些职业思考
昨天和最近带的一个同学 1 on 1(下面简称A),A问我有没有什么建议可以给到他。我想了一会儿,和他说了几点,不一定对,但是希望能帮到他。 ### ROI 与 push back 刚入职场的工程师往往有个特点,产品提什么需求都愿意接...
12
Jul 2022
面试反问问点啥
### 如果我加入了,你们会怎么帮助我 ramp up 看看这个团队是不是有明确的 onboarding 机制。如果答得乱七八糟,或者每个面试官说的都不一样的话,小心了,没准你进去第二天就要开始修bug了。 ### 团队的业务是什么,...
20
May 2022
关于保险
> 买保险不是为了理财,是为了应对小概率发生的风险 - 拒绝理财性质的保险 - 看清楚免责条款 ## 推荐险种 - 百万医疗。医疗险是用多少报多少,随报随销,有上限。 - 便宜,60周岁以前都能买,可以续保到80周岁。 ...
21
Mar 2022
2022年3月中概暴跌
**本文不构成任何投资建议** ## 暴跌原因 导火索:PCAOB(public company accounting oversight board) 把五家中概股公司放入外国公司问责法识别清单,将中美监管摩擦再次推到前台。进而引发...
21
Mar 2022
一生的旅程 -- Iger自传
Iger 是迪士尼现任 ceo,曾任 abc ceo,后在迪士尼收购 abc 的过程中加入迪士尼,后主导了如收购皮克斯,收购漫威等关键性项目,帮助迪士尼起死回生。Iger 于 2020 年卸任迪士尼 ceo 一职。本文是我今天读完 Ige...
20
Feb 2022
不拘一格(网飞的企业文化)
> “人才重于流程,创新高于效率,自由多于管控” > > “对于我们的员工来说,透明度代表我们相信员工能够认真负责地对待工作。我们对他们的信任又会增强他们的归属感、使命感和责任感。” > > “自由与责任的关系并不是像我先前所想的那样背道...
03
Mar 2021
服务稳定性建设
## 第一步:梳理现状 - 服务的功能有哪些,对线上业务的影响如何。 - 对服务进行定级,确定是否为重保服务。 - 确定服务请求量级(峰谷特征),是否受节日影响,是否受其他接口波动影响。 - 确定服务部署现状,如是否多机房,是否多集群,...
03
Jan 2021
切尔诺贝利(一键容灾预案引发的事故)
看完了 HBO 的《切尔诺贝利》,真相在最后一集揭晓。 - 故事中的切尔诺贝利 4 号反应堆,原本应该在建成时就完成的安全测试,在投产后三年都没有完成,并且在事故前已经失败了三次。(**容灾演练连续失败三次**) - 原本应该在白天进行...
18
Dec 2020
风险与收益
> “高风险带来高收益。” 这句话乍一看,确实是这么回事,比如你今年买了特斯来的股票,起起伏伏间,一年翻了 10 倍,高风险高收益吧;而如果你买了银行定期,自然没什么亏本的风险,但是年化还不到 4%,收益和特斯拉股票一比,差了几百倍,低...
10
Nov 2020
RocksDB
## 认识 RocksDB ### RocksDB 是什么? - 一个嵌入式的 lsm style 的 kv 存储引擎,一个 c++的库。 - key 和 value 都是 byte streams,key 按序存储。 - 高度可定制...
22
Oct 2020
限流与过载保护
## 过载保护 [微信的这篇论文](https://arxiv.org/pdf/1806.04075.pdf)有个很好的介绍 过载控制往往需要对不同的服务进行专门设计,但是这种过于细致的过载控制对于整个系统来说是不利的,开发者很难估计...
12
Oct 2020
geohash
今天你想吃火锅,于是你问 siri,"离我最近的火锅店有哪些?"。 怎么实现这个功能呢?首先你应该抽象地想想,这是一个什么问题? 这是一个「二维空间查找最近邻」问题,而「最近邻」又比较容易让人想到”KNN“。(KNN 是说每个新样本的...
23
May 2020
不要在错误的位置和错误的人发生错误的竞争
程序员行业是一个准入门槛极低但竞争非常激烈的行业,但高级程序员是一个准入门槛不高但竞争非常不充分的行业。尽管我还没有达到高级程序员的水准,但据我的观察,我觉得从初级程序员到高级程序员的路,并不坎坷,只是很多人都走歪了。 记得《Becom...
07
Feb 2020
隔离 -- 我们都是这疯狂世界的受害者
John Lennon《Isolation》的最后写到「你不必受到责怪,你也不过是一个普通人类,一个疯狂世界的受害者。我们害怕每一个人,害怕阳光。太阳永远不会消失,可留给这个世界的时间已经不多了。」 > People say we go...
16
Jan 2020
事务
尽管大多数程序员都认为事务是如此简单和自然,但事实上事务不是一个天然的东西,而是人为创造出来的,目的是为了简化应用层编程。 对应用层来说,底层可能出现的错误实在太多了。网络可能中断,数据库软件可能崩溃,应用程序自身可能突然崩溃,机房可能...
11
Jan 2020
软件随想录(by Joel Spolsky)
这周在地铁上读完了 Joel Spolsky 的《软件随想录》,译者是阮一峰。摘录或提炼一部分有趣的东西于此。 - 1991 年,Joel Spolsky 加入微软 Excel 开发小组,担任 Program manager。他当时需要...
25
Dec 2019
Haystack(facebook是怎么存照片的)
本文写于 21 世纪 10 年代最后一个圣诞节的晚上,内容为 facebook 的论文 《Finding a needle in Haystack: Facebook’s photo storage》的阅读笔记。该论文旨在解决社交网络中海...
24
Dec 2019
LSM Tree vs B-Tree
本文为《数据密集型应用系统设计》第三章第一节的读后感 数据需要持久化,将内存中的状态落到磁盘上,就需要使用存储引擎。最简单的存储引擎就是一个数据文件呗,每次写入就写到文件上,而读操作就去数据文件上找数据。但是数据量大了,把所有文件找一遍...
21
Sep 2019
隐马尔科夫链与维特比算法
## 马尔科夫链 明天的天气怎么样?明天的股市怎么样?用户下一个输入的单词会是什么?这些问题都是一个随机过程的问题(就是「随机过程随机过」的那个随机过程)。 对随机过程的研究要比随机变量复杂得多,在任何一个时刻 t,对应的状态 st ...
04
Sep 2019
P99与蓄水池算法(reservoir sampling)
## 一个监控问题 假设你是一个运维工作人员,维护着一个访问量巨大的服务,然后有一天,老板跑来问你这个服务的 p99 响应时间是多少?(p99 响应时间:系统 99%的请求都快于这个时间,而 1%的请求则慢于这个时间。即响应时间的 99...
24
Aug 2019
Cuda实战入门2: 将矩阵乘法速度提升 5000 倍
本实验采用不同的方法来计算 8192 \* 8192 的整型矩阵乘法运算。 ## C 语言版 C 语言是大家公认的高性能语言,那我们就从 C 语言开始吧。 ```c // 用一位数组表示二维矩阵 mat1 = (in...
23
Aug 2019
Cuda实战入门
CUDA (compute unified device architecture) 是 NVIDIA 所推出的一种并行计算平台和并行计算 api。 CUDA 在并行计算上可以大显神威,因此,我们先要找到一个可并行的问题。一个很简单的可...
14
Jul 2019
为什么拒绝掉前37%的追求者是错的
## Problem Formulation 假设你一辈子可以遇到 100 个潜在配偶,在遇到每一个潜在配偶的时候,你只能选择接受或者拒绝。如果你选择接受,则意味着你放弃了后面所有潜在的配偶;而如果你选择拒绝,则不能反悔,只能在后面的潜...
23
Jun 2019
机器学习视角下的软件工程过拟合问题
软件工程中充斥着过拟合,它不但刻画了我们在构建系统时常常掉入的思维陷阱,也刻画了我们日常生活中思考与行动的方方面面。 ## 什么是过拟合 在机器学习中,当训练集的数据量比较少,而模型又较为复杂的时候,模型可能会出现在训练集上 fit ...
23
Jun 2019
自我觉知的能力与做事的态度
最近对自己的行为模式进行了一些观察,发现自己很容易在遇到硬骨头的时候出现拖延症的现象。比如在进入某一主题的学习时,发现该主题内容非常丰富,且需要大量背景知识,于是当场演奏起了一段退堂鼓,或者浅尝辄止地看了些基本知识,成为一名“知道分子”。...
18
Jun 2019
Got a PC
从 15 年初购入人生第一台 mbp 之后,再也没有使用过 PC 了。最近趁着 618 组了一台电脑,平时的主力机器是 mbp,然后家里放了台 mac mini,但是最近为了在家里跑一些深度学习的模型,而 mac 的显卡实在是让人一言难尽...
13
Jun 2019
当我们谈论杜兰特,我们其实是在谈自己
**人们谈论问题容易陷入对意义的讨论,这种试图对本质的窥探虽然“有用”,却也十分危险**。 早上看到杜兰特跟腱受伤的新闻,各大媒体纷纷表示,杜兰特在总决赛第五场不应该复出,并指责勇士队在第五场让杜兰特上场的决定(从结果上看,这确实是一个...
04
Jun 2019
语言的雅俗
昨天看到 slack 里面有个网友说:”这是我下午看《洞察》的时候突然冒出来一个问题:钱有许多称呼,比如阿堵物、孔方兄等,可是既然它们指的都是相同的东西,为什么又有雅俗的分别?钱可能还好,现在应该没有太多人会觉得追求钱是羞耻的,更好的例子...
12
May 2019
什么是概率
假设我们现在要扔一枚硬币,我问你这枚硬币正面朝上的概率是多少?你一定知道是 0.5。但是让我们来仔细想想,概率为 0.5 到底意味着什么呢?一种常见的解释是,如果我们扔足够多次的硬币,会有大概一半的情况为硬币正面朝上。 可是,如果这是一...
11
May 2019
生活中的弹力系统设计
艺术来源于生活,系统架构也是如此。 基于微服务的分布式系统架构所面临的挑战非常巨大,充满了各种不确定性。为了能够提高 SLA,我们需要让系统能够更有弹性,在系统部分出现故障的情况下,尽可能地减少损失。常见的弹性系统设计模式有:降级,限流...
10
Mar 2019
信息化与自动化
这些年来,”工业 4.0”,”2025 计划”等新名词越来越多的出现在人们的视野,工业互联网概念得到了各国政府部门以及产业界的重点关注。尽管对于什么是”工业 4.0”依旧还没有一个固定的标准,但是在这条向未来探索的路上,人们渐渐摸出了一些...
10
Mar 2019
关于麻将能不能进入奥运会的讨论
这篇文章来源于一群软件工程师在晚餐时的讨论,论题是中国麻将能不能进入奥运会。这类问题在不同的群体间相信已经发生过无数次,这次当然也毫无例外的并没有得出任何有价值的结论。但这并不妨碍这是一个有意思的问题,并值得花一些时间思考。 先说说我的...
09
Mar 2019
模型设计的两大准则:NFL与奥卡姆剃刀
## NFL(无免费午餐)定理 模型的合理性很大程度上取决于待解决问题本身的特征。 无免费午餐(No Free Lunch, NFL)定理证明了任何模型在所有问题上的性能都是相同的,其总误差和模型本身是没有关系的。可是既然大家谁都不比...
08
Mar 2019
身高背后的统计学
给同年龄的一百个小孩量身高,已经量了 99 个,请问最后一个小孩的身高有 99%的概率会小于多少。 我们只知道这些数据来自同一个总体(服从同一个分布),前 99 个小孩和最后一个是一视同仁的,也就是说,这一百个小孩每个都有 1%的可能是...
07
Mar 2019
一场赌局背后的统计学
A 和 B 两人进行一场赌局,方式是抛一枚特制的硬币。如果硬币正面朝上,则 A 得一分,反之 B 得一分,先得六分的获胜。假设现在 A 以 5:3 领先,请问最终 B 获胜的概率要多高。 ## 概率学派 频率学派认定待估计的参数是固定...
20
Dec 2018
市场营销方法论
最近在看美剧《广告狂人》,于是对广告业产生了一些兴趣,进而去了解了一下市场营销的方法论。Marketing 集成了商业的全部功能,并通过广告,销售以及其他市场活动直接和客户打交道。Marketing 是艺术与科学的混合,其中的知识非常广博...
28
Oct 2018
聊聊微信读书
这两天下了几个读书应用,发现市面上类似产品还真不少,比如微信读书,京东阅读,豆瓣阅读等等。我也深度体验了一下微信读书,这里谈谈个人的感受吧。 ## 社交与用户 很多人都说微信读书试图用社交来撬动阅读,目前看来在这一点上,微信还是非常非...
12
Sep 2018
敏捷开发
在 2001 年,十七名软件开发人员在犹他州的雪鸟度假村会面,讨论这些轻量级的开发方法,并由 Jeff Sutherland,Ken Schwaber 和 Alistair Cockburn 发起,一同发布了[敏捷软件开发宣言](http...
02
Aug 2018
需求变更的一致性
最近在工作中遇到一次重大需求变更,对业务模型的设计也产生了非常大的影响。基本上就是在地基上挖个洞的那种变更。目前迭代还在进行中,但是我觉得是时候进行一些回顾,来思考这次大型迭代中我们做对和做错了哪些事情了。 ## 产品一致性的重要性 ...
23
Jul 2018
三门问题
## 背景 这是一个非常有名的问题,[wiki](https://en.wikipedia.org/wiki/Monty_Hall_problem)。 简单说就是,有三扇门,一扇后面有奖,两扇后面有山羊。如果选手猜中有奖的门,就可以拿...
15
Jul 2018
聊聊面向对象
看到这个标题,可能很多朋友都会呵呵一笑。面向对象谁不知道?可是事实上,能正确理解和使用面向对象编程范式的人并不多,在不同语言背景下的程序员也往往对面向对象有不同的理解。我看过很多有一定经验的程序员写的代码,用着所谓面向对象的编程语言,写出...
10
May 2018
feature vs function
最近看到一段关于微服务的视频:[拆分单体应用](https://www.youtube.com/watch?v=k9QZ4oIOHnk&list=WL&index=3),其中有一段话引起了我的注意:**split code by feat...
05
May 2018
spring aop中遇到的一个小问题
最近做的一个项目使用了 spring+mybatis 的技术栈。实现很简单,在数据访问层写一系列 mapper 接口,定义一系列数据查询的方法。在服务启动时,让 spring 去扫这些接口,并为这些接口生成代理对象,也就是 DAO,这些 ...
02
May 2018
相关与因果
人类天生善于从噪声中寻找模式,这是一种与生俱来的能力。比如发现直角边的平方和等于斜边的平方,比如发现十二平均律以及五度音,比如发现一年有三百六十五天(公转周期)… 很多时候,人们会发现两件事往往同时出现,或者当一件事情发生时另一件往往不...
18
Apr 2018
一件让我愤怒的事
最近在工作中遇到一些事情,让我有点不爽,或者说是愤怒。我觉得很多程序员根本称不上是 engineer,只能勉强算是个”terrible programmer”。 有些程序员不关心自己的代码,能不能被其他人看懂,会不会被别人错误地理解和使...
11
Apr 2018
十年
github 十年了,这个被戏称为同性交友网站的章鱼猫,度过了十周岁生日。 十年前,我还在读高一,凯尔特人三巨头即将捧起奥布莱恩杯,利物浦在欧冠半决赛输给了切尔西,那时候我还不知道啥是程序员(那时的梦想是当一个 DJ)。当然,那时候也没...
08
Apr 2018
聊聊抽象
> 不要抽象。 上面这句是和一个架构师聊天时他说了二十遍的话。这句话对大多数程序员来说,都是非常反直觉的。可以说抽象是计算机软件设计中极为重要的一环,是每个程序员每天都要做的事情。当你在设计一个类来表达一组数据的时候,你正在完成一次抽象...
07
Apr 2018
如何告诉一个外星人什么是树
在《认知开发潜能》一书中,我曾读到这样一段关于树的话,大意是:你可以把一棵树看作一个单独的,离散的对象。但事实上,一棵树至少由两个主要系统连接:树叶和空气的处理循环与根和泥土的处理循环。这段话让我开始思考一个问题,**我们应该如何告诉一个...
06
Apr 2018
move slow and mend things
“move fast and break things” 这是 fackbook 著名的 motto,意思是说,在使用新技术和新工具的时候,尽管其可能会有不稳定的地方,但是为了追求开发速度,应当果断使用那些能够提升开发效率的新技术。由于有...
06
Apr 2018
数学与经济
数学的优势在于,它需要精确定义,而且为多样化的领域提供了共同语言,但是它也有局限性。公式与其基本假设,往往夸大了可以从经济理论预测出来的精密度。比起任何实际的经济而言,许多经济理论,更多关乎一个完全虚构的世界。经济模型可能成为空中楼阁,结...
02
Apr 2018
质数
突然想知道第 n 个质数是多少,比如说我的生日是 11 月 24 日,那么属于我的那个质数是多少呢? 先写个判断一个数是不是质数的函数 ```c bool isPrime(int n){ if (n == 1){ retu...
01
Apr 2018
akka
akka 不是一个 framework,而是一个 toolkit 或者说运行时,用于在 jvm 上构建高并发、分布式、弹性、消息驱动的应用。Actor 执行操作来响应消息。这些操作包括更改 actor 自己的内部状态,以及发出其他消息和创...
29
Mar 2018
并发与并行
很多初级程序员都会把并发和并行搞混在一起,或者认为并发和并行根本就是一回事。而其实并发和并行压根就不是在讨论一个问题。本文我们就一起来看看究竟什么是并发和并行,以及如何实现并发和并行。 ## 并发与并行 并发(concurrency)...
27
Mar 2018
The rule of hole
> The rule of hole: > If you fall into a hole, don't dig. 对很多人来说,承认自己错了并不是一件容易办到的事情,即使他们看上去并不是一个固执的人。有时候是因为害羞,有时候是为了面子...
24
Mar 2018
copy on write
## swift 中的 cow swift 中有 struct 和 class 这两种数据结构,很多入门教程都会介绍说,struct 和 class 最大的区别是,struct 是值类型,而 class 是引用类型。换句话说,struc...
23
Mar 2018
我只是想要一个函数啊
## kotlin 中的可空类型 最近在公司使用 Kotlin 写后端服务(spring + mybatis),遇到 optional 的小问题,如下 ```kt fun getProject(projectCode: String)...
19
Mar 2018
我只是想要一个函数啊
## 从面向对象说起 显然,面向对象编程在很长一段时间内,都是最主流的一种编程范式。那到底什么是面向对象呢?为什么我们需要对象呢? 面向对象的最重要特性有三个:封装,继承,多态。 - 在我看来,多态无疑是这三者中最为重要的特性,它解...
01
Jan 0001
```sh mkdir $HOME/jenkins_home docker run -d -p 8080:8080 \ -v $HOME/jenkins_home:/var/jenkins_home \ --name jenkin...
01
Jan 0001
Writing is hard, even for authors who do it all the time. What should be easy and flowing looks tangled or feeble or ove...