编程随想的博客

2009年3月29日

架构设计:生产者/消费者模式[2]:队列缓冲区

›
  经过前面两个帖子的铺垫,今天终于开始聊一些具体的编程技术了。由于不同的缓冲区类型、不同的并发场景对于具体的技术实现有较大的影响。为了深入浅出、便于大伙儿理解,咱们先来介绍最传统、最常见的方式。也就是单个生产者对应单个消费者,当中用【队列】(FIFO)作缓冲。
10 条评论:
2009年3月27日

架构设计:生产者/消费者模式[1]:如何确定数据单元?

›
  既然 前一个帖子 已经搞过扫盲了,那接下来应该开始聊一些具体的编程技术问题了。不过在进入具体的技术细节之前,咱们先要搞明白一个问题:如何确定数据单元?只有把数据单元分析清楚,后面的技术设计才好搞。
5 条评论:
2009年3月25日

架构设计:生产者/消费者模式[0]:概述

›
  今天打算来介绍一下“生产者/消费者模式”,这玩意儿在很多开发领域都能派上用场。鉴于该模式很重要且相关内容比较丰富,俺打算分几个帖子逐一介绍。今天先来扫盲一把。如果你对这个模式已经比较了解,请跳过本帖子,直接看 下一个帖子(关于如何确定数据单元) 。
18 条评论:
2009年3月22日

开源点评:cURL——优秀的应用层网络协议库

›
  今天来点评一下 cURL ,这是一个老资格的开源项目,使用它可以基于多种应用层网络协议进行数据传输(包括上传和下载)。它的特点是:支持的协议多、跨平台、支持多种编程语言接口。后面俺会针对这些特点作一些简单的介绍。
3 条评论:
2009年3月20日

Java 新手进阶:细说引用类型

›
  在前几天的帖子《 Java性能优化[1]:基本类型 vs 引用类型 》里,俺大概介绍了“引用类型”与“基本类型”在存储上的区别。昨天有网友在评论中批评说“引用类型变量和它所引用的对象”没区分清楚,容易混淆。所以今天专门来说一下引用类型的相关细节。
3 条评论:
2009年3月19日

Java 性能优化[2]:字符串过滤实战

›
   上一个帖子 已经介绍了基本类型和引用类型的性能差异(主要是由于内存分配方式不同导致)。为了给列位看官加深印象,今天拿一个具体的例子来实地操作一把,看看优化的效果如何。
36 条评论:
2009年3月16日

Java 性能优化[1]:基本类型 vs 引用类型

›
   在 Java 性能优化系列 中,内存管理是一个要优先考虑的关键因素。而说到内存分配,就必然会涉及到基本类型和引用类型。所以我们今天就先来介绍一下这两种类型在性能方面各自有什么奥妙(关于引用类型的其它奥妙,请看“ 这里 ”)。
13 条评论:

Java 性能优化[0]:概述

›
  考虑写性能优化系列,主要是因为之前看到了太多性能其烂无比的 Java 代码(有些代码看得俺口瞪目呆)。很多 Java 程序员在写程序时,由于不太了解 JVM 及语言本身的一些运作机制,从而导致了代码的性能出现【严重】问题(性能差一个数量级以上,我才称为“严重”)。
9 条评论:
2009年3月14日

C++ 对象是怎么死的?POSIX 线程篇(pthread)

›
   上一个帖子 聊完了 Win32 环境下和线程有关的 C++ 对象死亡问题,今天该说说 POSIX 的线程库 pthread 了。如果你对 pthread 不太了解,可以先看看 维基百科 的介绍。
3 条评论:
2009年3月13日

开源点评:SQLite 数据库扫盲

›
  今天注意到 SQLite 3.6.11(上个月发布的)增加了一个俺期待已久的“ online backup ”接口,激动之余就顺便和大伙儿聊一下 SQLite 数据库。本帖权当是 SQLite 扫盲,如果你对 SQLite 已经很熟悉,本文就不必再看了。另外,假如你想了解 ...
11 条评论:
2009年3月12日

无处不在的二八原理[4]:关于激励(如何发挥员工积极性)

›
  由于激励是除了招聘之外,又一个非常重要的管理环节。上次已经介绍了 把二八原理应用到招聘中 ,今天就该说说和激励有关的话题。
25 条评论:
2009年3月9日

书评:《人月神话》——不朽的软件工程名著

›
  已经有好几周没有写书评了,今天突然想起来要写一写。由于 上次的书评 是关于 C++ 的,今天打算写写软件工程方面的。对于软件工程而言,我个人认为到目前为止,尚未有哪本书的影响力和深刻程度能够超越《人月神话》(全名是:The Mythical Man-Month——Essay ...
12 条评论:
2009年3月5日

C++ 对象是怎么死的?Win32 线程篇

›
  在 前面的帖子 里聊完了进程终止对C++对象析构的影响。今天咱们来说一下线程对于C++对象析构的影响。   由于 C++ 03 标准【没有】包含线程的概念,而(截至写本文时)C++ 0x 尚未正式发布。所以对线程的讨论只好根据特定的操作系统平台来谈。对于操作系统自带的线程 ...
6 条评论:
2009年3月2日

无处不在的二八原理[3]:关于招聘(如何找到优秀的软件开发人才)

›
  今天咱们先来聊聊招聘的话题。为啥要先聊招聘捏?因为招聘工作是其它各项管理工作的源头(先得有人可管才能谈管理嘛)。并且招聘工作有其特殊性:招聘方面的失误传递到了后续的环节,其影响会成倍放大。这个现象非常类似于软件开发流程:如果需求阶段出了问题,该问题到设计阶段会放大十倍(设计人...
16 条评论:
2009年3月1日

无处不在的二八原理[2]:在管理方面的应用

›
  前两周由于聊了“ 每日构建 ”系列和“ C++对象之死 ”系列,把二八原理系列给搁置了一些时间。今天终于又回到这个系列上了。我估计列位看官中,可能有不少人打算将来往管理方向发展,所以在聊完“ 二八原理在软件开发的应用 ”之后,咱们就来聊聊管理方面的话题。
5 条评论:
2009年2月26日

C++ 对象是怎么死的?关于标准输入输出流(cout,cerr,clog,etc)的进一步探讨

›
  昨天的帖子《 C++ 对象是怎么死的?进程篇 》,在谈到全局对象的析构顺序史,举了一个“在析构函数中使用 cout”的例子(代码详见 原文 )。当时的本意是想说明:全局对象的析构顺序是不确定的,最好不要在程序逻辑中依赖这个顺序(免得出现移植问题)。   没成想该帖子引来热烈...
3 条评论:

C++ 对象是怎么死的?为什么要写这个系列?

›
  要说 C++ 对象是怎么死的,得先从 C++ 的析构函数说起。这玩意儿是我本人很喜欢的一个语言特性(可惜有好几个语言没有类似的玩意儿,具体就不点名了,免得引发口水战)。我们可以利用 C++ 的构造和析构函数,来实现 Guard 模式,写出比较清晰、简练和异常安全的代码。由于 ...
8 条评论:
2009年2月25日

C++ 对象是怎么死的?进程篇

›
  我承认这个帖子的名称有标题党的嫌疑,但是暂时想不出更好的名称了,只好先这样了 :-(   由于前天的帖子聊了 架构设计的多进程问题 ,所以今天想起来要聊一下与“C++进程终止”相关的那些事。与前几个 C++ 帖子的风格类似,今天聊的内容,尽量局限于标准 C++ 范畴,尽量不...
4 条评论:
2009年2月24日

如何成为优秀开发人员[7]:正确地做事(善用自动化)

›
   上一个帖子 聊了“善用工具”的话题,讲的都是如何有效利用工具来提高效率,今天说一下如何利用“自动化”来提高效率。
10 条评论:
2009年2月22日

架构设计:进程还是线程?是一个问题!

›
  就像莎士比亚的“To be, or not to be, that is the question”始终困扰着哈姆雷特,对于“进程还是线程?”这个问题,也经常困扰着那些进行软件架构设计的家伙。所以今天打算聊一下我对这个问题的体会。假如你还搞不清楚线程和进程的区别,请先找本操作...
14 条评论:
2009年2月19日

软件工程进阶之每日构建[3]:流程

›
  在 上一个帖子 已经介绍了几方面的准备工作,今天来说一下具体流程。对于流程的每一个环节,俺会强调一下容易出问题的地方。
13 条评论:

学习技术的三部曲:WHAT、HOW、WHY

›
  最近几天有些网友在邮件里面问我关于学习的问题。有好几个人觉得工作了几年,也学会了不少的类库、框架、甚至语言,但是感觉自己的能力没有太大的提高。因此今天来说一下我个人对这方面的体会,希望对大伙儿(尤其是新手)有帮助。   先声明一下,本帖子讨论的三部曲是指你已经选定了某个技术...
94 条评论:
2009年2月17日

软件工程进阶之每日构建[2]:准备工作

›
   上一个帖子 务虚了一下每日构建的几个主要好处。今天开始来说点实在的:也就是每日构建具体要如何开始搞,要做哪些准备工作(如果你所在的团队已经在用每日构建,你可以跳过这个帖子)。
19 条评论:
2009年2月16日

软件工程进阶之每日构建[1]:好处和优点

›
  上一个帖子《 软件工程进阶之每日构建[0]:概述 》提到说每日构建是一种很牛X的软件工程手段。本帖子就来说说它到底有多牛X。为了加深大伙儿的印象,俺先来说一些陈年往事。
3 条评论:

软件工程进阶之每日构建[0]:概述

›
  在昨天的帖子《 正确地做事(善用工具) 》里提到了代码提交频度的问题。当时俺特别强调了【 要保证提交的代码能编译通过 】,理由是“对于每日构建很重要”。估计列位看官中,不太熟悉【每日构建】的,大有人在;而且国内停留在手工作坊阶段的软件公司,为数也不少。因此今天咱们就来说一下“...
2 条评论:
2009年2月15日

如何成为优秀开发人员[6]:正确地做事(善用工具)

›
  俗话说“工欲善其事,必先利其器”,今天我们来说说和开发工具有关的话题。由于开发过程中会用到的工具多种多样,根据“ 二八原理 ”,我只挑选和开发最密切相关的少数几种工具来聊一聊。
7 条评论:

如何成为优秀开发人员[5]:正确地做事(概述)

›
  从上一个帖子“ 做正确的事 ”写完到现在已经过去2周了,有网友已经等不及,在评论中催我了。在此向等待本系列的网友致歉。   和“ 做正确的事 ”相对应,“正确地做事”主要讨论的是有关工作【效率】和工作【质量】的关系(也就是如何“多、快、好、省”地完成工作)。由于"...
16 条评论:
2009年2月13日

如何选择开源项目?

›
  近几年开源项目越发普及,很多商业软件都逐渐引入开源项目。由于俺负责的产品线采用了不少开源项目(主要是 C++、Java、Python),这几年就经常会碰到开源项目选型的问题(从几个具有类似功能的开源软件项目中进行抉择)。今天我就大概聊一下自己的几点看法,供大伙儿参考。
8 条评论:
2009年2月12日

Java 新手的通病[4]:异常处理使用不当

›
  上一个帖子讨论了“ 编程习惯的问题 ”,今天来聊聊关于异常处理的话题。
14 条评论:
2009年2月10日

无处不在的二八原理[1]:在软件开发中的应用

›
  上次聊了《 什么是二八原理 》,接下来得说说如何运用了。由于本博客主要谈 IT 技术,显然要先来说说和程序员有关的那些事。为了不至于太抽象,咱们以“开发文本编辑器”为例(这玩意大伙儿都熟悉,省得费口水解释),来说说不同职责的开发人员在开发过程中该如何具体运用二八原理。
5 条评论:
2009年2月9日

无处不在的二八原理[0]:什么是二八原理

›
  估计看俺博客的人里面,应该有很多人听说过二八原理(如果你之前从来没听说过,那你的知识面有太窄的嫌疑)。但是知道二八原理的人有很多却不会(或者不善于)运用。直接的后果就是你在各种事情上付出了很多时间与精力,但是回报却很少。鉴于该原理非常非常的实用,俺打算专门写一个系列来聊聊和它...
33 条评论:
2009年2月7日

C++ 的可移植性和跨平台开发[5]:操作系统

›
  上一个帖子提到了“ 硬件体系 ”相关的话题,今天来说说和操作系统相关的话题。
3 条评论:
2009年2月5日

三种主流 RIA 技术之争,你该如何选型?

›
  前几天听说 Adobe 发布了用于 Flash Player 的 RTMP(实时消息协议),在“ 这里 ”。乍一看,好像是一个不错的东东。号称有如下优点:支持高性能地把数据(主要是音频、视频)PUSH 给 Flash Player;支持 over HTTP 和 HTTPS。再...
9 条评论:
2009年2月4日

Java 新手的通病[3]:缺少良好的编程习惯

›
  上次聊了“ 缺乏面向对象基本功 ”,今天来说说编程习惯的问题。今天说的这些坏习惯大部分都是跨语言的(C++、Python 新手也有),而且大部分都需要靠平时不断地努力才能慢慢改掉。
4 条评论:
2009年2月2日

学会透过现象看本质,即使现象有时候挺诡异

›
  最近看到一个【汽车对冰淇淋过敏】的小故事( 原文在此 ),转述如下:   某汽车公司收到投诉信,用户抱怨了一个匪夷所思的经历:   他每晚都从家里开车去商店买冰淇淋。如果买的是香草冰淇淋,则回家时汽车就无法发动;如果买其它口味的冰淇淋,则汽车可以正常发动。天天如此。该用户...
29 条评论:
2009年2月1日

从 Google 搜索的严重 bug 想开去

›
  昨天晚上用 Google 查资料,看到所有的搜索结果都注明是恶意站点。第一反应以为自己眼花了;然后开始怀疑我的浏览器出问题,换了几个浏览器都是老样子;后来又想,会不会是我的 ISP 在搞鬼。等了十多分钟没解决,只好换百度查资料...
9 条评论:
2009年1月31日

C++ 的可移植性和跨平台开发[4]:硬件体系

›
  这次聊的话题主要是和硬件体系有关的。比如你的程序需要支持不同类型的 CPU(x86、SPARC、PowerPC),或者是同种类型不同字长的 CPU(比如 x86、amd64),这时候你就需要关心一下硬件体系的问题。
2 条评论:
2009年1月30日

Java 新手的通病[2]:缺乏面向对象的基本功

›
  按理说 Java 是一个很 OO 的语言,Java 社区也一向是充满了“对象”的氛围。但俺在面试 Java 程序员时,却屡屡碰到令人大跌眼镜的事情。俺碰到不止一个求职者,连什么是“多态”都讲不清楚。很多人号称用过设计模式,但一半以上都仅限于单键模式和抽象工厂模式。当我深入问他...
12 条评论:

C++ 的可移植性和跨平台开发[3]:异常处理

›
  上一个帖子“ 语法 ”由于篇幅有限,没来得及聊异常,现在把和异常相关的部分单独拿出来说一下。
6 条评论:
2009年1月29日

Java 新手的通病[1]:对算法和数据结构不熟悉

›
  为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东。不管你使用 Java 还是其它的什么语言,都离不开它。而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上。
8 条评论:

Java 新手的通病[0]:概述

›
  其实很早以前就想写这样一个文章,可惜当时俺还没有开 Blog,所以到现在才写下来。最近几年,随着 Java 在 Web 应用和企业应用两个方面的普及,对 Java 程序员的需求量大增。因此Java程序员的数量也突然猛增(从 TIOBE 的排行榜 可以看出来)。这虽然对 Jav...
12 条评论:
2009年1月28日

C++ 的可移植性和跨平台开发[2]:语法

›
  目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C...
19 条评论:
2009年1月27日

如何成为优秀开发人员[4]:做正确的事

›
  一般来说,优秀的开发人员往往具有较高的效率。俺这里提到的【效率】包括两方面:“做正确的事”和“正确地做事”。并且“做正确的事”比“正确地做事”更加重要。
22 条评论:
2009年1月26日

C++ 的可移植性和跨平台开发[1]:编译器

›
  在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。
4 条评论:

C++ 的可移植性和跨平台开发[0]:概述

›
  今天聊聊 C++ 的可移植性问题。如果你平时使用 C++ 进行开发,并且你对 C++ 的可移植性问题不是非常清楚,那么建议你看看这个系列。即使你目前没有跨平台开发的需要,了解可移植性方面的知识对你还是很有帮助的。
6 条评论:
2009年1月24日

从 Twitter 的突发新闻报道看草根记者的崛起

›
  在几天前的“纽约客机哈德森河成功迫降”事件中, Twitter 又一次拔得头筹(为什么说“又”捏?因为之前的孟买恐怖袭击,Twitter 已经抢先传统媒体了)。在率先到达出事地点的救生艇上,贾尼斯·克鲁姆斯同学(Janis Krums)用自己的 iPhone 手机拍摄了照片...
8 条评论:
2009年1月23日

白领如何应对经济危机,度过寒冬

›
  今天看到新闻说“ 微软公司宣布裁员5000人 ”。不由得感慨:连最牛的(微软手头现金最多)公司都不得不裁员了。去年(2008)爆发次贷危机,几大金融机构在去年(2008)9月倒台,距今也不过才4个月,金融危机已经波及到每一个行业(当然也包括 IT 业)——不禁让人想起“192...
7 条评论:
2009年1月22日

书评:《C++ 101编程规范》

›
  今天是头一次聊 C++ 的书,当然要选一本够分量又实用的书。俺想了一炷香的功夫,决定先拿《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices 》开刀。
8 条评论:

如何成为优秀开发人员[3]:设定个人发展目标和计划

›
  大部分人从来没有【明确】地设定自己的发展目标,每天都是得过且过。等到几年过去了,才发现自己这些年啥也没学会,还是老样子,然后就感叹时光飞逝、岁月如梭。   因此,今天我们来聊一下如何设定个人发展目标。(如果你平时已经很善于定期设定个人发展目标并执行得很好,恭喜你,那么本帖子...
18 条评论:
2009年1月21日

如何选择 IT 技术书籍

›
  俺在《 如何成为优秀开发人员[2]:关于自学能力 》中提到阅读【好的】IT 技术书籍的重要性。今天来聊一下技术书籍的鉴定方法。假设你刚下了某本电子书准备看,又或者逛书店看到某本纸版书准备买,但是吃不准该书的质量如何,那么下面几个招数可以帮你的忙。
22 条评论:
‹
›
主页
查看网络版本
由 Blogger 提供支持.