Skip to content

四火的唠叨

一个纯正程序员的啰嗦

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

三次性能优化经历

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

performance

最近在做一些性能优化工作,回想起工作这些年来,参与过的三次集中性能优化,每次都得折腾少则一个月,多则半年。这些内容既是不同视角、不同思路的比较,也是挺有趣的工作经历。

Portal 的性能优化

这已经是大概五年前了,搞了接近半年的 Portal 性能优化,后来某些内容总结在这篇文章里面。既然是 Portal,性能优化上就有它的特点。比如说:

Portal 的性能优化需要从前端和后端两个角度去思考问题,先考虑客户端和服务端之间的交互模型,然后再在客户端和服务端单独考虑分而治之。这个其实和设计的思路是一样的,交互问题需要首先考虑,定义好交互的报文形式(比如某 JSON 的具体形式)以后,包括用户触发什么行为引

[……]阅读全文

Continue reading

研发团队的角色和构成

Posted on 02/11/201601/24/2020 by 四火

software engineer

以下都来自我的经历,带有主观评价,但是尽量保持平直的论述。

在我工作的第一家公司的时候,一个典型的研发团队是这样组成的。我的经验也只是到 4 年前,现在也许早就不一样了呢。

项目经理,这个角色是不断在换的。项目经理当然是只跟着项目走,这和团队经理(Team Leader)是不一样的。当然,Team Leader 也往往在不同的项目里面兼任项目经理。基层的项目经理也可能会编码,但是不管参与不参与编码,工作压力都不小。

SE(System Engineer,相当于现在大多数公司的产品经理)负责从市场部门等地方承接需求,然后做 “系统性设计”,这个系统多数指的是业务系统,也指有时候 [……]阅读全文

Continue reading

历史,科学,还有艺术

Posted on 02/04/201606/23/2019 by 四火

history

学理的人要读一读历史。

遗憾的是,每当我这么说的时候,几乎所有的人都狭义地认为我在讲政治的历史,世界史或者中国史,就如同历史课本里那样。关于这一点,也是时常让我觉得悲哀的地方。我们看到的那么多纪念馆和青铜像,大多是那些因为在政治舞台历史烙印深刻的人物,其次就是久远以前的大文豪们。看看近现代的科学领域、艺术领域、文学领域,这些科学家、艺术家和文人,不知道在年轻人心中有多少分量。仿佛一定要有这样一个英雄,带领一票人闹革命,打下江山,战胜强寇,治理国家,才算伟人;要不就是草根发迹,辗转商海,勇猛创业,才称了不起。剩下的,仿佛只有娱乐明星,甚至网红这样的角色才能引得谈资和热议。

如果我问,能不能说出

[……]阅读全文

Continue reading

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

Posted on 01/22/201606/23/2019 by 四火

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

沈阳

沈阳是我读书时候呆着的城市。在这以前,其实没有大面积接触过北方人(所谓 “北方人” 其实有诸多定义,比如以长江为分界线的,以秦岭淮河为分界线的,而我一直以黄河作为分界中国南北的标志),但是这一次算是一步登天到东北。沈阳这座城市很漂亮,但是因为留有重工业化的痕迹,空气不算干净。我在沈阳第一次接触了各色烧烤(小时候我哪接触过这东西啊),烤肉、烤蔬

[……]阅读全文

Continue reading

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

Posted on 01/17/201610/02/2024 by 四火

baidu

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

1、我很想知道会有怎样的直接后续,就连国家互联网信息办都约谈百度负责人了,作为响应,可以从回应中看到所谓的 “五条阶段性治理措施”,但是,只是说 “停止所有病种类吧的商业合作”,

[……]阅读全文

Continue reading

Spark 的性能调优

Posted on 12/21/201506/23/2019 by 四火

Spark

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

基本概念和原则

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

  • 每一台 host 上面可以并行 N 个 worker,每一个 worker 下面可以并行 M 个 executor,task 们会被分配到 executor 上面去执行。Stage 指的是一组并行运行的 task,stage 内部是不能出现 shuffle 的,因为 shuffle 的就像篱笆一样阻止了并行 task 的运行,遇到 shuffle 就意味着到了 stage 的边界。
  • CPU 的 core 数量,每个 executor 可以占用一个或多个 core

[……]阅读全文

Continue reading

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

Posted on 12/16/201506/23/2019 by 四火

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

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

#
Title
Acceptance
Difficulty

310
Minimum Height Trees
24.0%
Medium[……]阅读全文

Continue reading

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

Posted on 12/11/201510/02/2024 by 四火

helpless

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

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

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

但是令我感到遗憾的是,各式各样的回答里面,大部分居然都跳出来 “教育” 题主,表态这个世界就不是完美的,表态要妥协要接受这样的事实,要无奈地咽下这个现实的苦果。这个大面积出现的观点,太不正常了吧?

比如这样的话:

写好代码是

[……]阅读全文

Continue reading

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

Posted on 12/07/201509/20/2020 by 四火

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

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 number: ps -ef | wc -l
  • threads of a process: ps uH p <pid> | wc -l
  • .tar: tar -xvf archive.ta

[……]阅读全文

Continue reading

追求纯粹

Posted on 11/23/201510/08/2024 by 四火

pure

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

最近又负责了一个使用 Angular 的项目,我们知道最近 Angular 很火,其中一个重要原因就是它给前端开发带来的变革,第一次发现可以让以前如此恼人的变量绑定消失掉。以往变量绑定的语句放在附属于页面的一个 js 片段(文件)里面,颇有些无奈的意思,如果把它视为展现层面的东西,显得很不直观(声明式编程才是最直观的方式),而且让这一层变得啰嗦;而如果把它视为下面一层的东西,这又让逻辑代码变得不纯粹——凭什么要让逻辑代码去了解哪个 dom 叫什么 id?于是 Angular 来了,引入了 $Scope 这代表上下文的东西,变量绑定

[……]阅读全文

Continue reading

重新发明轮子

Posted on 11/22/201510/08/2024 by 四火

wheels

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

第一种情况,我只需要一点沙土,我不需要整座大山。

比如,我只需要一个 StringUtil.isEmpty 这样的方法,判断字符串是否为空串或者 null,如果引入

[……]阅读全文

Continue reading

三番+硅谷游记

Posted on 11/17/201506/23/2019 by 四火

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

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

Presidio 公园我们停靠了两个景点,一个是沙漠和海滩结合起来的 Baker Beach;一个是 Crissy Field,湖+海湾的组合,可以望得到恶魔岛。

IMG_5415 IMG_5448

去渔人码头闲逛和

[……]阅读全文

Continue reading

“残酷” 的事实

Posted on 10/21/201510/01/2024 by 四火

crazy

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

入行愉快。

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

总的来说,学校里面编程,或者在工作之余编程,是很有趣的,没有 manager 给你各种压力,也没有各种大神(比如 TMP、PM、SE 等等我都搞不清楚干嘛的职位)给你指点

[……]阅读全文

Continue reading

三百篇文字纪念

Posted on 10/18/201506/23/2019 by 四火

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

宏观地且从粗暴的统计来看,大概两年前的我,那个时候是最能写的。那段时间无论往前数还是往后数,生活或工作的繁忙程度都要增加许多,这无疑影响了我做这些笔头事情的效率。

最近可能是年纪增长的关系,我不断在思考一件事情,到底做点什么才是最值得的。我不是什么特别有规划的人,

[……]阅读全文

Continue reading

练琴

Posted on 10/10/201506/23/2019 by 四火

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

我做了做功课,有位同事家也有钢琴,不过是电钢琴,看到其中的好处之后我有点心动(比如可以调音量,便携,还可以编曲)

[……]阅读全文

Continue reading

从构建和测试的效率说起

Posted on 09/28/201506/23/2019 by 四火

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

1. 本地测试:

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

2. EMR 上执行测试:

    上传最新构建到 S3 -> 准备 EMR 资源(包括计算资源和数据)-> 在 EMR 上执行 Spark job -> 观察分析结果,这一阶段可以发现在数据量较大的情况下才出现的问题

3. Workflow 集成测试(这个 workflow 是公司内部的一个管理 job 的工作流系统):

  &nb

[……]阅读全文

Continue reading

Scala 的模式匹配

Posted on 09/21/201506/23/2019 by 四火

scala

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

[……]阅读全文

Continue reading

我眼中的范加尔

Posted on 09/13/201510/08/2024 by 四火

LvG

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

战术层面

说范加尔战术死板那绝对是有道理的。事实上,球员被允许自由发挥的余地并不大。关于球员自由发挥,这个和教练有着密切的关系。范加尔是个典型的 control freak,从训练

[……]阅读全文

Continue reading

七年工作,几个故事

Posted on 08/22/201506/23/2019 by 四火

journey

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

在我说这些故事前,或者说,吐这些槽前,我想说这样三个观点。

首先,为自己工作。

不是为父母,不是为同事,不是为公司,[……]阅读全文

Continue reading

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

Posted on 08/16/201510/08/2024 by 四火

manutd

看完两场英超,引援上估计除了待定的佩德罗以外,不会有什么大的变数了。想起去年赛季伊始,在知乎上面回答了几个和曼联有关的问题,现在正好回过头来扒坟,比如关于曼联的拉斐尔,说“ 他也就是一员猛将,刚猛有余,智慧不足,前途平庸”,目前看来是正确的,已经离开前往法甲;说费莱尼“ 在当前全攻全守和控球理念强调下范加尔治下,费莱尼很难在球队中有他的一席之地”,很遗憾这条错得离谱,但是话说回来,费莱尼尽管上个赛季令人惊讶,但是我依然认为他和范加尔脑海中的建队思路有所违背,位置不稳的。范加尔上任以后屡遭非议,即便在去年范加尔成绩最差的时候,差到都不如同期莫耶斯,

[……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • …
  • 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