Skip to content

四火的唠叨

一个纯正程序员的啰嗦

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

谈谈对程序员的培养

Posted on 03/11/201210/01/2024 by 四火

1 这篇文字是我好久以来的想法,有一些感悟,有一些激烈的言辞,我很自豪我就是一名程序员,我希望给程序员或者前程序员们带来一点启发。也许你认可我的言辞,也许你不屑我的观点,无论如何,欢迎谈谈你的看法。

 

让程序员做更多种类的事

为什么有人说小公司锻炼人?在小公司,条件并不那么齐备,很多事情都需要程序员自己做,自己去澄清需求、自己做设计、自己搭建环境、自己测试,甚至自己上线、自己维护(这件事情在我们团队被称为 “自己吃自己狗食”)。

然而到了某些公司,在一些正规的流程下,“人” 反而显得不那么重要了:一个完、整的流程被切分成若干环节,程序员只能负责那小小的一环,更严重的是,他们显示出消极和片

[……]阅读全文

Continue reading

关于“ 异步”,从 Amazon 的工作流框架中获得的思考

Posted on 03/03/201206/23/2019 by 四火

云平台的工作流框架 AWS Flow Framework 给我带来的另一个有所感触的话题是“ 异步”:

1

这个框架把异步的行为划分为 Workflow 端执行的部分和 Activity 端执行的部分,Workflow 控制工作流程,Activity 执行具体的工作流 task,二者都以 poll 的模式不断从中心 SWF 去获取任务。对于开发者来说,用类似这样简单的代码,就完成了整个工作流任务的部署,框架为开发人员隐藏了大部分实现细节:

@Workflow  
public interface CalculateWorkflow  
{  
    @Execute  
    pu

[……]阅读全文

Continue reading

画圆画方的故事

Posted on 02/25/201206/23/2019 by 四火

1 这个故事最初是来自和发哥的一次聊天,他说了一些面向对象设计方面挺有意思的事情,包括 Double Dispatch(下面会提到),我根据我自己的体会和思考,把这些零散的片段重新整理成一个小故事,欢迎感兴趣的同学一起讨论。

有一个苦逼的程序员,叫做小 P。

有一天,老板给他传达了这样一个需求,根据用户不同的图像绘制事件,画出一个圆或者是画出一个方块来。

老板传达的图像绘制事件是这样的:

interface DrawEvent {  
}  
  
class RoundDrawEvent implements DrawEvent {  
}  
  
class RectangleDrawEvent

[……]阅读全文

Continue reading

Process and Corporate Culture

Posted on 02/20/201206/23/2019 by 四火

1 Corporate culture is not only a concept that a company uses to attract talents, but also a spirit and method running through the management. Here, I'll talk about the process, which reflects the characteristics and culture of a company as well.

As we all know, a small company cannot handle com

[……]阅读全文

Continue reading

寻找组成字母相同的单词

Posted on 02/17/201206/23/2019 by 四火

words 这篇文章是对这个帖子的汇总,帖子里的答复都很有意思,真希望 ITEye 多一些这样的帖子,少一些浮躁和毫无意义的争论。

我把帖子汇总贴在下面:

Write a function that takes as input list of words and prints out groups of words with exactly the same letters, one group per line.

For example,

Given the list:

hat, top, potter, pot, pier, ripe

It would print:

hat

top, pot

pot

[……]阅读全文

Continue reading

那些牛叉无比的评审风格,你,属于哪一种?

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

1 在这篇文章里,我们可以见到许多有意思的编程风格,又没有精神为之一振的感觉,仿佛里面的例子就在自己身上,或者离自己很近。其实,对于文档、代码的评审,也是有诸多风格可言的,我这里列举一些有意思的典型:

 

一坨屎型评审

阅读文档、代码的时候,这些东西在自己眼里就是一坨屎:“我这么高智商的人都看不懂,明显是你有问题!”。

这样的人有一个他自己相当认可的世界观,凡是和这个世界观相冲突的无论对错的事务,必须强力排斥。这样的人眼中容不下复杂的东西,复杂对他的智商而言是一种侮辱,他会选择下结论的方式来拒绝自己对文档或代码的进一步阅读;对于和自己预期不一致的设计和实现,必须升级为人身攻击,挥舞狼牙

[……]阅读全文

Continue reading

代码评审鲜为人知的好处

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

code_review 代码评审究竟有什么好处?

在前期发现问题,提高软件质量,降低软件成本。

事实上,代码评审的好处远不止这些。有些项目经理或者开发人员不愿意多提评审,Coding 的过程包含的内容非常丰富,如果只把一个字符一个字符地敲代码叫做 Coding,未免悲哀了一点。优秀的项目,编码阶段实际敲代码的时间不会很长;优秀的程序员,大部分时间都用来思考了。

 

我来说说代码评审其它鲜为人知的好处,兴许能改变某些同学的看法呢。

 

增加阅历,学习别人代码的可贵之处

和英语学习是一个道理,如果只听一种纯正口音的英语,英文反而不容易学好,我们需要阅读各种营养的代码,广泛阅读能帮助开阔眼界,积累一些好的

[……]阅读全文

Continue reading

关于接口设计,还有 Fluent Interface,这种有趣的接口设计风格

Posted on 02/07/201210/08/2024 by 四火

1 这个故事我早就想说了,可能是在好多个月前,只是一直不知道怎么说才能说合适,现在我重新整理了一下,讲述给大家。

这个故事是从下面这样一个对外暴露接口的调用开始的。

QueryUserEvent event = new QueryUserEvent();  
event.setName(name);  
event.setAge(18);  
event.setType(QueryUserEvent.TYPE_NORMAL);  
event.setSex(QueryUserEvent.SEX_MALE);  
……  
List<User> userList = userServic

[……]阅读全文

Continue reading

Good Surrounding For Programmers

Posted on 02/05/201210/08/2024 by 四火

surroundings Programmers are those who work on creation, and they’re simple, hard-working and careless about dressing. They really need some special conditions to help to exhibit their creativity, since the very work is easily affected by environment.

1. Comfortable chairs. Programmers can keep a good sitting p

[……]阅读全文

Continue reading

程序员眼中三种类型的公司

Posted on 02/03/201206/23/2019 by 四火

1 劳动密集型公司

这样的公司以业务为导向,市场团队在公司中占据较高的地位。每一个技术人员最终被折算到了 “人天” 里面去,团队规模相对较大,所有技术人员都比较容易被替代,能力强的可以做更多的事情,能力弱的就少做一些。通过强有力的制度、政策和流程的规约,团队有条不紊地运作起来。业务氛围强势,技术通道升级较慢,需要非常长期的积累才可以获得丰厚的回报,诸多优秀人才脱离编码,而潜心转管理、谈需求并获得回报。愿意招纳毕业生编码,以减小运营成本。只鼓励小范围、浅层次的创新,对于优秀的创意、想法,必须转化为生产力才能够被认可。

 

技术密集型公司

这样的公司较为重视技术和创新,敢于在产品中使用预期能够

[……]阅读全文

Continue reading

我在华为的五个瞬间

Posted on 01/21/201206/23/2019 by 四火

huawei 从 08 年 7 月 28 日正式加入华为,到 12 年 1 月 17 日正式离开华为,三年半的光阴,我一直没有机会好好整理一下我的行囊。现在回过头来,却又发现故事太多,无从下笔。也罢也罢,挑选我在华为五个令我深刻的瞬间,这些故事我带着不同的感触经历。不管现在开放的互联网上如何风言风语,不管在其中经历了多少欢乐或者悲伤,有多少感慨和抱怨,我依然非常感激华为带给了我这波澜跌宕的时光,谢谢我的朋友们,是你们,一直陪伴我走完这段旅程。

 

我参与的第一个项目

我参与的第一个项目是服务端的一个产品的研发,做一个涉及到营销业务的需求,对当时的我来说,业务逻辑还比较复杂,而且实现基本上要落到存储过程中实现;接口层只需

[……]阅读全文

Continue reading

十分钟,了解 SOPA 和 PIPA

Posted on 01/19/201210/02/2024 by 四火

SOPA 和 PIPA 是什么?

SOPA:《禁止网络盗版法案》(Stop Online Piracy Act)。通过该法案,美国司法部及其他版权持有人将可以更便捷地申请法院禁令以对付盗版及贩售冒牌货的网站。反对者认为该法案侵犯了美国宪法第一修正案,是一种网络审查行为。同时该法案还会导致互联网发展的倒退。并且反对者还担忧该法案会鼓励互联网上的告密行为,同时影响言论自由。

PIPA:《保护知识产权法案》(Preventing Real Online Threats to Economic Creativity and Theft of Intellectual Property Act of 20

[……]阅读全文

Continue reading

电信领域和互联网领域的差别

Posted on 01/16/201206/23/2019 by 四火

1 最近有机会了解到了诸多 IT 业公司,了解到了程序员的生存状态,也看到了各种不同的做产品的方式;有机会得以从电信领域转向互联网领域,在这里我谈一谈在我眼中的电信领域和互联网领域的区别。

 

 

营销模式

 

电信:

卖服务,提供配套的软硬件给运营商,强调解决方案的完整性(如包含 WEB、WAP、客户端、短信等多种接入渠道);

运营商可能选择几家中标单位分散风险,也可能采用独一家的全套解决方案,通常要求服务稳定和可持续性,而在成本考量上通常较弱。

 

互联网:

靠流量挣钱,有流量就有用户群,有流量就有广告潜力,特别关注市场竞争和用户感知;

互联网公司给用户提供

[……]阅读全文

Continue reading

写在职业生涯的路口

Posted on 01/11/201206/23/2019 by 四火

cross 工作变更的事宜快要告一段落了,从电信行业转向互联网行业。其实我不算一个很有经历的人,但是我依然愿意回头望望走过的路,记录下我的体验、感触,给那些刚入职的兄弟们、遇到困惑的朋友们,说一些小小的事情,给一些小小的建议;同时,更作为一份小小的新年礼物,送给自己。

 

—————————————————————————————————————-

 

关于求职

 

每一次求职都意味着一次挑战,在这一步过程中,至少要

[……]阅读全文

Continue reading

青蛙跳台阶问题的三种解法

Posted on 01/10/201202/01/2020 by 四火

frog 题目:一只青蛙一次可以跳 1 级台阶,也可以跳 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

这道题还被 ITEye 放在了博文视点杯有奖答题活动里面。

我提供三种解法。

1、递归求解:

青蛙每跳一次前,有这样三种情况:

  • (1)只剩 1 级或 0 级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加 1;
  • (2)可以走 2 级台阶;
  • (3)可以走 1 级台阶。

于是递归方法求解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * 递归方法
 */
public static int calc(int n) { 

[……]阅读全文

Continue reading

你会怎样设计铁道部购票网站?

Posted on 01/09/201206/23/2019 by 四火

1 最近铁道部购票已经成为了热点话题,毛病多得一塌糊涂,如果让你来设计铁道部购票网站,你会怎么做?

 

这样的网站属于实时性要求较高、并发性要求非常高、容量要求一般的类型,以下是我简单的想法:

 

1、部署是基于 CDN 的,对于车票查询的环节来说,这是没有问题的。

 

2、数据库表设计上面,应当有一张车次表,每行代表一趟车,至少有这样的字段:还剩多少张,已被锁定多少张。

 

3、每次发生订票操作时,先去查询当前是否有余票,有的话锁定一张等待用户操作,如果半小时内无法完成,锁定票放回。

 

4、查询部分,集群中放置分布式缓存,存放数据的静态页面,但由

[……]阅读全文

Continue reading

观察者模式中,消息采用推和拉方式来传递的比较

Posted on 01/06/201206/23/2019 by 四火

观察者模式,指的是定义一种对象间的一对多的关系,当一个对象的状态发生变化的时候,所有依赖于它的对象都将得到通知并更新自己。

visitor

现在要说的分歧在这里:

“推” 的方式是指,Subject 维护一份观察者的列表,每当有更新发生,Subject 会把更新消息主动推送到各个 Observer 去。

“拉” 的方式是指,各个 Observer 维护各自所关心的 Subject 列表,自行决定在合适的时间去 Subject 获取相应的更新数据。

 

“推” 的好处包括:

1、高效。如果没有更新发生,不会有任何更新消息推送的动作,即每次消息推送都发生在确确实实的更新事件之后,都是有意义的。

2、实时。事件发生后的第一时间

[……]阅读全文

Continue reading

一些平安夜里的 IT 人

Posted on 12/25/201106/23/2019 by 四火

1 一个普通的平安夜。

而我,已经过了遍地牢骚的年纪。

可是有一些 IT 人,他们都在平安夜里做什么?

有人在和客户洽谈,有人在现场维护,有人在加班 Coding,还有人,像我一样,在各个技术网站上闲逛,写一些小众的、自我感觉有一点点营养的博客,赢取 IT 业的兄弟姐妹们一点唏嘘,一点赞同。

年岁不算大,但是在 IT 业,工作经历也到了一个可以被称作老员工的时候;故事不算多,但是在 IT 业,生活体验也到了一个可以被扯出来摆事实讲道理说教的阶段。我做出了一个决定,在思索良久之后,我想从电信领域转到互联网领域,寻求下一段职业发展旅程。

好歹不算头疼脑热,好歹也不算神经冲动,最近看到一篇文章,又让我想起了最

[……]阅读全文

Continue reading

大楼扔鸡蛋问题的求解

Posted on 12/22/201106/23/2019 by 四火

egg 有道经典的算法题,两个一模一样的鸡蛋,某层之上扔鸡蛋就会碎。假如运气最差的话,问要测试多少次才能找出这层楼来。

如果只有一个鸡蛋,我就只能一层一层试验。两个的话关键就是找着第一个鸡蛋试验的位置,第二个鸡蛋还是只能一层一层试验。

这道问题其实可以扩展到任意个鸡蛋,但现在还是只看 2 个鸡蛋的情况。

2 个鸡蛋只有 n 层的最优解求出来假使为 k,那么,n+1 层的时候,把第一个鸡蛋在第 k 层释放,只有两种情况(n+1 只是分解成两个<=n 的子问题,这两个都是已经有解了的):

(1)破碎,于是只有之后就只能遍历从地面到第 k-1 层,一层层遍历,不能偷懒,最坏的情况在此要尝试 k 次;

(2)没碎,那问题

[……]阅读全文

Continue reading

我为什么坚持写博客

Posted on 12/12/201106/23/2019 by 四火

blog 我是从 06 年开始真正写博客的,几经易辙,到了 09 年,我也中断过一段时间,好在现在已经坚持下来并且养成习惯了。

 

写博客可以保持思考的习惯。

这是我写博客的最大动力,除非标注转载的极少数几篇,否则文章都是原创的。我是一个普通教育背景的孩子,小时候很喜欢看书,家中也藏书不少。只是上大学开始,我的阅读量逐渐下降,而且愈发发觉,书读得多不动脑,还不如少读几本,多思考。在逐渐的工作中,也越来越发现思考的重要意义,和在中国这种教育体制下的缺失。后来又发现,思考可以让人少走一些弯路,少受一些苦痛,对程序员来说尤其如此。

 

写博客可以帮助其他的程序员。

我要给自己印一摞名

[……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 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