编程随想的博客

2009年5月31日

开源点评:Protocol Buffers 介绍

›
  今天来介绍一下“Protocol Buffers”(以下简称 protobuf)这个玩意儿。本来俺在构思“ 生产者/消费者模式 ”系列的下一个帖子:《生产者/消费者之间的数据传输格式》。由于里面扯到了 protobuf,想想干脆单独开一个帖子算了。
8 条评论:
2009年5月26日

光环效应引发的认知误区

›
  上次聊社会工程学中关于“ 施加影响 ”的话题,其中提到了心理学上的“光环效应”。今天想把这个话题深入地八卦一下。
17 条评论:
2009年5月22日

Java 新手的通病[5]:不了解 JVM

›
   上次的帖子 讨论了Java异常机制的几种误用,今天咱们来说说 JVM(以及 Java 编译器)相关的话题。为啥要聊 JVM 捏?因为有很多 Java 程序员,由于对 JVM 缺乏了解,在碰到某些技术问题时无从下手;另外,由于缺乏对 JVM 的了解,可能导致写出来的代码性能巨...
6 条评论:
2009年5月19日

扫盲“社会工程学”[3]:攻击手法之【施加影响】

›
   上一个帖子 咱们介绍了社会工程中 包装 的技巧。按照 本系列 的计划,今天要讨论的内容是:“如何施加影响”。
11 条评论:
2009年5月16日

如何翻墙?——写在 BlogSpot 被封之后 {2018-12-26}

›
  公元2009年5月的某天,BlogSpot 又一次撞墙,被 GFW 封了。 俺在 BlogSpot 上的博客 也遭受池鱼之殃,杯具啊杯具!当时为了让俺博客的读者能够继续访问,咱特地写了这个扫盲帖,全面普及一下翻墙的各种基本“姿势”。   由于翻墙技术日新月异,本文也会不断更...
344 条评论:
2009年5月9日

扫盲“社会工程学”[2]:攻击手法之【假冒身份】

›
  在前一个帖子里,咱们介绍了“ 信息收集 ”,今天咱们来讲一讲“ 假冒身份 ”的手法。
26 条评论:
2009年5月6日

扫盲“社会工程学”[1]:攻击手法之【信息收集】

›
   上一个帖子 普及了一些基本概念和常识,接下来就得说点实在的货色:介绍一下攻击者常用的套路。攻击者的套路大致可以分为如下几个步骤: 信息收集 、 假冒身份 、 施加影响 、实施最终的攻击。由于每个步骤介绍起来都蛮长的,俺今天先来介绍“信息收集”这个步骤。
11 条评论:
2009年5月5日

扫盲“社会工程学”[0]:基本常识

›
  最近几年,信息安全方面的问题日益严重,许多同学深受其害(比如网络钓鱼、盗用银行卡、蠕虫木马泛滥、僵尸网络盛行等等)。俺窃以为,很大一部分原因在于相应的扫盲教育没有跟上。且不说普通的电脑菜鸟对信息安全一无所知,即便是很多 IT 公司的专业技术人员,对此也知之甚少。其后果就是:很...
62 条评论:
2009年4月29日

Java 性能优化[3]:垃圾回收(GC)

›
   上次的帖子 讲到引用类型和基本类型由于内存分配上的差异导致的性能问题。那么今天就来聊一下和内存释放(主要是 GC)有关的话题。
19 条评论:
2009年4月24日

开源实践:SQLite 的使用场景

›
  上次针对 SQLite 进行了扫盲,之后有同学在 评论里 问俺:如何在项目中使用它?今天咱来聊一下这个话题。
8 条评论:
2009年4月21日

Oracle 收购 SUN,会有啥影响?

›
  昨天惊悉 Sun(升阳)被 Oracle(甲骨文)买了,埃里森真是大手笔啊。IT 业界出了这么大的事儿,如果不趁机八卦一下,似乎有点说不过去啊。下面就从几个方面聊一下俺的愚见。
15 条评论:
2009年4月18日

C/C++ 中一个简单的 enum 手法(idiom)

›
★引子   今天写程序的时候,又用到这个 idiom 了,于是顺便贴出来。这个 idiom 蛮简单的,估计很多人都用过。今天主要是贴出来给新手参考(老手们就甭费时看此帖了)。
21 条评论:
2009年4月16日

架构设计:生产者/消费者模式[4]:双缓冲区

›
  “双缓冲区”是一个应用很广的手法。该手法用得最多的地方想必是屏幕绘制相关的领域(主要是为了减少屏幕闪烁)。另外,在设备驱动和工控方面,双缓冲也经常被使用。不过今天要聊的,并不是针对上述的某个具体领域,而是侧重于并发方面的同步/互斥开销。另外提醒一下,双缓冲方式和前面提到的队列...
9 条评论:
2009年4月13日

招聘的误区

›
  上次在“ 二八原理系列 ”中谈到了“ 如何找到优秀的开发人员 ”。当时主要是结合“优秀人员”的稀缺性来谈优秀人员的招聘问题。今天打算换一个角度,抨击一下当前很多软件公司在招聘方面的弊端。
18 条评论:
2009年4月10日

C++ 多线程调试和测试的注意事项

›
  在 上次的帖子 聊了 C++ 多线程的跨平台问题,后来感觉意犹未尽。今天顺便说一下开发C++多线程应用程序时,有关调试和测试的一些注意事项。下面这些注意事项主要是针对C++,不过有些对于其它的语言也适用。
6 条评论:
2009年4月5日

微软需要 Twitter 来对抗 Google

›
  最近小道消息疯传 Google 要收购 Twitter ,闹得IT界沸沸扬扬。昨天 TopLanguage 论坛 上也有同学讨论此话题(请看“ 这里 ”),我也在里面掺和了一下,发表几点随想。今天想想不过瘾,就把昨天发的评论再继续发散一下。
13 条评论:
2009年4月3日

C++ 的可移植性和跨平台开发[6]:多线程

›
  最近一个多月写的帖子比较杂,导致本系列又好久没更新了。结果又有网友在评论中催我了,搞得我有点囧。今天赶紧把多线程篇补上。 上次聊操作系统 的时候,由于和 OS 有关的话题比较琐碎,杂七杂八说了一大堆。当时一看篇幅有点长,就把多进程和多线程的部分给留到后面了。
2 条评论:
2009年4月1日

架构设计:生产者/消费者模式[3]:环形缓冲区

›
   前一个帖子 提及了队列缓冲区可能存在的性能问题及解决方法:环形缓冲区。今天就专门来描述一下这个话题。   为了防止有人给咱扣上“过度设计”的大帽子,事先声明一下:只有当存储空间的分配/释放非常【频繁】并且确实产生了【明显】的影响,你才应该考虑环形缓冲区的使用。否则的话,还...
9 条评论:
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 条评论:
‹
›
主页
查看网络版本
由 Blogger 提供支持.