Skip to content

四火的唠叨

一个纯正程序员的啰嗦

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

DAO 的演进

Posted on 09/28/201210/07/2024 by 四火

1 这个思考源于最近项目中对 DAO 的使用和讨论。数据访问对象,在贫血模型下,要怎样去设计,框架需要完成什么,后续的开发人员需要关注什么,设计的时候到底需要把握怎样的粒度?

最早做项目的时候,是老老实实给每个必要的模型增加 DAO 接口和实现类的:

public interface IUserDAO{
    public long add(User user);
    public void delete(User user);
    public int count(String condition);
    ... ...
}
public class UserDAOImp

[……]阅读全文

Continue reading

Dart,你凭什么挑战 JavaScript?

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

dart 不妨先来打量一下 JavaScript。JavaScript 是唯一至今主流且基于原型的语言,虽然说支持面向对象,但是无论是封装、继承、多态,实现起来总需要用到一些 tricky 的办法,而且也不甚完美。事实上,为了抢市场,从 1995 年 JavaScript 设计完成到发布,只有短短的 7、8 个月的时间,极度缺乏谨慎的语言特性和规范的评估。而和微软 JScript 的竞争,使得 EcmaScript 标准仓促问世,这些都是 JavaScript 存在诸多缺陷的重要因素。

不止如此,Google 认定,JavaScript 的缺陷难以以改良的方式被修复,必须革命。那么都有哪些缺陷呢?推荐大家去阅读《Using JavaSc

[……]阅读全文

Continue reading

致那些自嘲码农的苦逼程序员

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

1 好吧你可以说这是水文。

今天下午和经理聊了一些关于软件行业的话题,这两天晚上都有朋友向我倾诉程序员的茫然和苦楚,我觉得有些想法可以记录下来。时光佐证,其实我好久没写发骚的文字了,就啰嗦啰嗦。我不算一个梦想家,但是对于信念还比较固执。人各有志,赚钱多多的钱,没有什么不好。但是我希望赚钱能真正作为一项副产品,把自己希望的事情,当做一项事业去做。

互联网环境恶劣、软件环境恶劣,来到北京工作数个月,我有一些未曾体味到的感触。多少人都在议论吃青春饭的职业,多少人在自嘲重复劳动、苦逼工作,多少人在听到 “程序员” 三个字以后露出鄙夷的神色……我已经没法在每次听到这些关于程序员是非评价的时候反驳他 [……]阅读全文

Continue reading

Dart:JavaScript 的未来

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

dart 最近在关注 Dart 语言,下面这篇文章译自这里,其实是 2011 年 11 月 Google 内部员工的一封邮件,邮件中提到的 Dash,就是如今的 Dart 语言的前身。Google 搞东西很有意思,思维似乎非常超前,总是能挖到现在火爆的东西的不足,然后搞一个新的东西代替它,真是凶猛异常。比如 SPDY、V8、WebP、Go 等等,有的成功,有的失败。还有,希望大家能从下面粗糙的译文中留意到,Google 对于标准非常重视,谈论中也是霸气外露,希望把一切标准都控制在自己手里。

Subject: [Caja] 转发:从上周的 JavaScript 会议看 JavaScript 的未来
From: Mark S. Mill

[……]阅读全文

Continue reading

Java 多线程发展简史

Posted on 09/15/201206/20/2022 by 四火

image 这篇文章,大部分内容,是周五我做的一个关于如何进行 Java 多线程编程的 Knowledge Sharing 的一个整理,我希望能对 Java 从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问题。对于 Java 程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有不同收获。

 

引言

首先问这样一个问题,如果提到 Java 多线程编程,你会想到什么?

 

  • volatile、synchronized 关键字?
  • 竞争和同步?
  • 锁机制?
  • 线程安全问题?
  • 线程池和队列?

[……]阅读全文

Continue reading

多年前的一封邮件

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

Email 昨晚在整理邮件,翻阅到这样一封邮件,它来自我的老师郭军,曾经教我 COP(面向组件编程)课程的老师。这个邮件的始末是这样的,郭老师在课上扯到了一道题,在现在看来是再简单不过的题目了,对于给定的 n,要求只允许用一层循环,打印这样的星号(下例中 n=3):

  *
 ***
*****
 ***
  *

因为只能用一层循环,所以当时是这样实现的:

	int n=3;
	int row,col,mid;
	for(int i=1;i<=(2*n-1)*(2*n);i++){
		row = i/(2*n)+1;
		col = i-(row-1)*(2*n);
		row

[……]阅读全文

Continue reading

Io 语言导引

Posted on 08/28/201206/23/2019 by 四火

Io 第一次接触 Io 语言的时候我就被其简洁干净的语法打动了(如果你有编程语言的经验,也许 15 分钟就可以掌握大部分的语法),Io 语言的简单、灵活和对并发的良好支持都让人印象深刻。本文翻译自 Io 语言官网的这篇文章。

引言

总览

Io 语言是一门基于原型的动态语言,主要思想很大程度上受到了 Smalltalk(所有变量都是对象)、Self(基于原型)、NewtonScript(差异化继承)、Act1(并发行为特征)、Lisp(运行时可观测和修改代码)和 Lua(小巧可嵌入)的影响。

透视图

过去三十年编程语言研究的重心已经转移到了具备强大的表达力的高级语言(比如 Smalltalk),以及性能卓越

[……]阅读全文

Continue reading

我十年学习编程的历史

Posted on 08/14/201206/23/2019 by 四火

首先,我不是标题党。其次,我只想说说十年来我自己的关于编程的故事,做过的一些乱七八糟的程序。我的成长并不快,下面这些程序已经足够让我丢脸的了,喜欢发难的朋友,尽管嘲笑我吧(当然,如果你产生了共鸣,我们或许是同龄人、好基友)。最近尤其喜欢回忆起一些以前的故事(比如这篇,还有这篇),是不是说明我越来越迂腐了?

其实接触编程,是从更早学习机上的 G-Basic 开始的。但那时的我只能说凑个热闹,回忆似乎已经模糊不清。所以这段时间实在不能算作什么历史。不过无疑学习机,以及是早些时候在同学家玩的电脑,才是真正领我进入神奇计算机世界的启蒙者。

2002 年正值我高二,学校要组织一帮人去参加编程的比赛 [……]阅读全文

Continue reading

解雇专业的运维人员吧

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

mt 在很多情况下,运维占到软件成本的大块,专业的运维人员更是不好找。这样的人需要熟悉操作系统、网络以及数据库。而运维又是一件很苦逼的事情,成了算是软件写得好,研发团队的功劳;败了就得彻夜坚守岗位提供支持,不可控的因素太多。是上游团队的软件质量太差吗?

我在 09 年的时候曾经到过局方,呆了挺长一段时间,既是开局,也做运维的工作,和运维的工程师朋友一起蹲机房、守夜、切设备,知道其中无比的苦楚。很多情况下,版本的更迭、割接,都要在凌晨完成,需要仔仔细细地测试;不幸失败了还需要立即回滚,然后陪着项目组等领导骂,等新版本或者补丁到来,再重复熬夜的这段过程……

不如大胆一些,解雇你那些抱怨不止、喋喋不休的运维

[……]阅读全文

Continue reading

看透面向对象的复用技术

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

1 本文翻译自这篇文章,这篇文章写于 1998 年,作者是 Scott Ambler,真的挺久远了。看看上个世纪末的时候,程序员的视角和观点。

想从面向对象复用技术中真正获益,你就必须理解不同种类的复用,并且自如地在不同场合下使用它们。

  • 可复用资源
  • 业务对象根源

复用性是面向对象技术带来的很棒的潜在好处之一。遗憾的是,很多情况下这个好处并不能真正兑现。原因在于复用并不是毫无代价的,它并不是你使用面向对象开发工具的时候就能轻而易举得到的。相反,它是你为了成功而努力工作得来的。首先要知道的是,这个世界上有比代码复用多得多的可复用的东西。代码复用只不过是最基本的一种形式而已。当然,你不要

[……]阅读全文

Continue reading

一些中文编程语言

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

1 我自认为本文不是恶搞,让我们本着严肃认真的精神来审视这些中文编程语言。

易语言

易语言可以说是中文编程语言的老大,拥有独立的编译器。易语言并不是把现存的编程工具进行表面汉化而成的,和其他国外语言相比," 易语言" 最大的不同是彻底中文化,且拥有自下而上的全部自主知识产权。

易语言的全新版本叫做“ 易语言. 飞扬”,包含垃圾收集机制,是完全面向对象的中文编程语言:

公开 类 启动类
{
	公开 静态 启动 ()
	{
		控制台. 输出 (" 你好,世界!");
	}
}

和其他中文编程语言相比,它是最成熟的,而且同时具备了

[……]阅读全文

Continue reading

你真的精通 Java 吗?

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

java 简历和自我介绍上经常能够读到“ 精通 Java” 这样的话,有人和我说,精通 Java 的人太多了,精通 Java 已经不能算亮点、不能给自己加分了。可是事实真是这样吗?

对于语言的学习,我有一种观点,一是纵向,即要选择一门自己认为合适的语言学到有相当的深度。二在于横向,即要学习不同类型、不同历史和不同门派的语言:

  1. 既有底层的语言,也有高级语言;
  2. 接触一些动态语言、函数式语言;
  3. 了解一些不同语言的编程范型和编程方式,比如基于原型编程、面向切面编程、命令式编程等等;
  4. 最好能关注一门年纪尚浅,甚至小众的语言,了解一门语言的发展。

横向类比能够带来对一门语言的

[……]阅读全文

Continue reading

西雅图印象

Posted on 07/30/201206/23/2019 by 四火

有机会得以去西雅图出差。我们这次主要的任务是参加一些培训,更重要的是和那边的团队沟通,建立起良好关系。下面看图说话,流水账性质。下面的图片都是我用手机的记录,新鲜。至于文字,我的见识比较浅,见谅。

西雅图位于美国西北部海岸线,离加拿大温哥华不远,被评为过 “美国最佳居住地”、“最佳生活工作城市” 是非常合理的。已经算是美国 TOP15 的大城市了,但是给人的感觉依然幽静、闲适。如果要看高楼、繁华,不如去 LA,或者干脆在广州、深圳呆着。

西雅图的人口不少,市区就超过了三百万,但是没有喧嚣。我没有看到重工业企业落居,几个 IT 公司非常有名,微软、Amazon、Google 和 Real-network。根据西雅

[……]阅读全文

Continue reading

珍爱生命,远离微博

Posted on 07/27/201206/23/2019 by 四火

好吧,标题党了。

故事从和一朋友聊天开始。他说他开始用 twitter,不再用微博了,理由是微博上的东西太过花哨、浮躁,甚至单调。撇去广告不提,除了吵架,就是呻吟,除了骂政府,就是转发救人。一些平时很 nice 的人,到了微博上都睚眦必报。也许是这样一个平台下,担忧、顾虑都被隐藏起来,另一方面,人性直接、甚至丑陋的一面则暴露出来……

微博是个怎样神奇的地方?

程苓峰写了一篇文章《新浪越成功,就离互联网越远》,有一些有趣的说法:

新浪博客的首页,就是整屏幕的精英发言。排行榜上,从韩寒、徐静蕾到李承鹏、洪晃,全是精英,他们博文下面的留言,全是粉丝的追捧和呻吟。新

[……]阅读全文

Continue reading

留给我回忆的那些 PC 游戏

Posted on 07/26/201206/23/2019 by 四火

和大多数八零后的男孩一样,小时候就喜欢打游戏,即便是坦克大战和热血足球这样的红白机游戏,我现在还和我表弟偶尔用模拟器过过瘾。比起现在一些炫目华丽的游戏,那些游戏无疑更加经典持久。不过今天不谈红白机不谈 PS,我说说我玩过的留给我回忆的那些 PC 游戏。有的也许你非常熟悉,有的也许你闻所未闻。人说十年就一个代沟,程序员则是五年。

 

赤壁

联想“ 幸福 e 家”(好像是这个名)电脑附带的一款即时战略游戏,由前导公司 97 年出品(如果你想到的是如今的网游,那么说明我们不是一个年代的人,呵呵)。知道这款游戏的人并不多。很多老玩家知道“ 血狮”,这一款发

[……]阅读全文

Continue reading

程序员学英语

Posted on 07/23/201210/01/2024 by 四火

老实说,我对于英语的认识,从没有把它的重要性放到一个足够的高度上来,从去年下半年开始,接触到越来越多的英文材料,也随着视野的开阔,逐渐发现英文能力,是程序员个人发展的必备技能。在很多情况下,它的重要性可以用“ 致命” 来形容。以前有同事说,程序员职业生涯的发展,起到决定作用的,绝大多数时候都不是技术和业务,而是其他被人忽视的“ 软实力”,譬如沟通、性格、英文等等。兴许我现在正在渐渐参悟这句话的含义。

我在这篇文章中,已经讲到了“ 为什么程序员非得搞定英语”:

中国人为什么要学英语,程序员为什么要学英语,当我把那些方法名、

[……]阅读全文

Continue reading

普通程序员、文艺程序员和 2B 程序员

Posted on 07/08/201206/23/2019 by 四火

本文纯属扯淡,欢迎对号入座。如果你不知道什么是普通青年、文艺青年和 2B 青年,请绕道。我说的是程序员的版本。

 

笔记本电脑:

普通程序员:

image

文艺程序员:

image

2B 程序员:

image

 

求 2 的 32 次方:

普通程序员:

System.out.println(Math.pow(2, 32));

文艺程序员:

System.out.println(1L<<32);

2B 程序员:

System.out.println(2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2);

[……]阅读全文

Continue reading

网络图形标准

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

image 前端绘图有几种方式,主流的网络图形标准有:

  • VML,IE 支持;
  • SVG,FF、Safari 和 Opera 支持;
  • Canvas,HTML5 规范支持。

后端生成图形较为便捷,但是没法生成能够响应用户行为的动态图形(比如生成一个地图,用户点击地图上的某个城市,要显示城市信息,这通过后端图形生成很不容易做到),而且生成图形会吃掉服务端的性能。前端生成图形方面,有用 Applet、ActiveX(这两个都不是什么好东西),Flash 等等,但是现在,我们有纯文本的更好的选择。

下面会就这几种标准做一个介绍:

VML

Vector Markup Language(矢量标记语言)是一种 XML 语言,用于绘制

[……]阅读全文

Continue reading

那些陪伴我的国产软件,你们都在何方?

Posted on 07/05/201206/23/2019 by 四火

转眼过去多年时间多少离合悲欢
曾经志在四方少年羡慕南飞的燕
各自奔前程的身影匆匆渐行渐远
未来在哪里平凡啊谁给我答案
那时陪伴我的人啊你们如今在何方
我曾经爱过的人啊现在是什么模样

这是筷子兄弟《老男孩》的歌词,不过我不是来风骚的。我只是来稍稍感怀一下十年前我曾经用过和喜爱的,那些当时可以称为“ 经典” 的国产软件们。

软件行业是一个不留情面的行业,在“ 注册收费” 和“ 货架软件” 风行的年代,有多少国产软件燃烧热情,走在奉献乃至捐躯的道路上,但是如今,还有多少人能记起,那些值得回味的故事

[……]阅读全文

Continue reading

设计之美

Posted on 06/27/201210/08/2024 by 四火

到处都在谈论 UI 的美感,仿佛 “美” 在软件工程中的定义就要落到界面上面。实际美的存在是广义的,包括架构设计,包括代码建设,包括接口定义,不妨在更多的场合引入对美的评审。软件本身就是一种艺术品,而程序员,应当是被赋予创造力的艺术工作者。

 

仅看这两张图,你觉得哪一张会更美一些?

我相信大多数人会选择第一张,因为后面那张图显得头重脚轻,事实上,后者也确实是一个短命的版本,只存活了不到半年的时间。这两张图,正出自淘宝发展的一个阶段(来自淘宝赵超的博客)。而且,进一步观察发现,对于许多设计图来说,狭窄的汇聚点往往成为性能的瓶颈。

另一个设计上典型的丑陋是混乱,如下面的设计图:

我不相信看到

[……]阅读全文

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