自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

On The Road

站在此刻,向未来,有无数可能。但回望,乃是一条命定之路。

  • 博客(18)
  • 收藏
  • 关注

原创 产品开发这几年(6)目录结构

如无意外,产品开发中的目录结构一定为采用树状结构,这几乎是所有系统架构师的唯一选择。可能本人有几分孤陋寡闻,但我固执地以为诸如网状结构、线性结构等目录结构可能有用武之地,但绝对是不得已而为之。或许有几分武断,但却不可否认的是,树状结构是最符合人类逻辑思维的组织结构。避开产品开发不谈,上至国家的政治体系,中到公司架构体系,下至小餐馆管理,不觉中均采用树状结构。        对于系统架构,本人深

2014-03-02 22:15:06 1616

原创 产品开发这几年(5)编码规范

真正的程序员将代码视为生命的结晶,从不浪费。然而,程序员并非天神,也会犯错,所以没有bug的代码永远不存在。为了打破宿命,程序员拼命修炼,似朝圣一般对代码精益求精。由于程序员性格各异,各自修炼法诀千差万别,单打独斗各有所长,但当共同面临强大的武林公敌时,即便有高手压阵,相互配合也显得捉襟见肘,更不用说打败强敌。鉴于此,大家便共同商讨出一个盟约以约束所有成员,保证力量的同向性,在临阵对敌时发挥最大威

2014-03-02 01:00:15 1843

原创 产品开发这几年(4)状态机设计

关于产品开发中状态机设计的讨论极少,很多程序员可能从来都不曾遇到过,但状态机确是一个必须讨论的话题。状态机之所以重要,一方面是因为很多产品在商用时涉及到冗余备份,以保证系统可靠、稳定、安全地运行,从而对软件运行状态从应用上提出了需求;另一方面则因为良好的状态机往往可以使得软件设计中很多系统级的难题迎刃而解,降低软件设计复杂度。简单地讲,可以将状态机作为一种简单的事件分类机制。        状

2014-01-11 09:26:21 2841

原创 产品开发这几年(3)表驱动

毫无疑问,表驱动是非常重要的一个话题,而在此之前对函数指针与接口抽象的讨论都是为本文表驱动奠定基础。函数指针在表驱动的应用,主要体现在事件的响应函数上,通过示例代码可以清楚地看到;而对于接口抽象中提及的函数接口与消息接口,表驱动都是接口内部最佳的驱动解决方案之一。本文并不打算论述枯燥乏味的理论,因为表驱动本是一种非常实用的编码方法,前面两篇文章已经为其奠定了基础,本文仅针对下述需求通过代码对比呈现

2014-01-09 22:56:06 1228

原创 产品开发这几年(2)接口抽象

软件设计中各种接口随处可见,如函数接口、子系统或模块之间的接口、不同产品之间的接口等,而接口抽象历来是“仁者见仁,智者见智”。一般情况下,我们得到的只是一些接口抽象的基本原则、建议,而程序员在具体开发中则大有“天高任鸟飞”的趋势,不同程序员几乎总可以抽象得到不同的接口。        本文并不打算深入讨论接口抽象的原则或建议,仅针对子系统或模块之间的接口抽象,介绍两种典型的接口抽象结果,即函数

2014-01-08 21:48:08 1115

原创 产品开发这几年(1)函数指针

函数指针是一个熟悉又陌生的主题,很多人都接触过函数指针,但却很少主动使用。然而,不讨论函数指针对于C/C++而言是不完整的,很多文献均有阐述,且大家都明白其本质上是一种特殊类型的指针。另一方面,尽管很多产品中都有使用函数指针,但其使用频率远远低于常见的for循环及if-else语句,因此仍较陌生。本系列文章最先介绍函数指针,为后续表驱动阐述奠定基础。本文所有阐述采用C/C++,不再赘述。

2014-01-03 20:46:54 990

原创 产品开发这几年(0)几句闲话

以前在学校做研究,和一些协作单位常有交流,印象中所谓产品开发无非“整整硬件、敲敲代码”,自以为轻车熟路。毕业后工作这几年走得太匆忙,直到最近闲暇时再回首,不禁对当初自己的认识有几分哑然。原因无他,只因自己太傻太天真,如果真的“整整硬件、敲敲代码”就可以开发出一款优秀的产品,那便不会吸引如此多才华横溢的人加入这个行业,这个世界绝对早乱套了!        本质上,产品开发就是一项系统工程,只是规

2014-01-03 20:38:50 854

原创 IncrediBuild分布式编译环境搭建

编译是所有软件开发模型绕不开的必经之路。对于代码规模较大的产品,版本编译是相对耗时的一个过程,尤其选用Microsoft的Visual Studio作为IDE时更是如此。鉴于此,本文介绍一种分布式编译环境,以提高VisualStudio的编译效率。        IncrediBuild是Xoreax公司一款非常优秀的分布式编译工具,可无缝嵌入到Microsoft的Visual Studio中

2013-10-06 20:19:27 15756

原创 C++单态类声明

在诸多面试过程中,单态类是非常常见的一个问题。所谓单态类即仅能定义一个对象的类,其遵循设计模式中的单态模式。实际上,单态类在Java中是非常常见的,以下为C++单态类声明,其中NULL为空指针宏定义。

2013-09-09 22:51:49 1438

原创 基于Visual Studio与Google Test的单元测试框架搭建方法

单元测试是软件开发的主要阶段之一,可以有效保证代码质量,提升产品稳定性与可靠性。单元测试可基于多种环境开发,本文介绍基于VisualStudio与GoogleTest的单元测试框架搭建方法。Visual Studio是Windows平台最常见IDE,本文提及的VisualStudio为VS2005及其后版本,如VS2008、VS2010等;Google Test是Google主导开发的开源项目

2013-09-09 22:40:41 2855

原创 Ubuntu 12.10下OpenSSH的离线安装方法

SSH(SecureShell)是一种建立在应用层和传输层基础上的安全协议,为计算机上的Shell提供安全的传输和适用环境。利用SSH可有效防止远程管理过程中的信息泄露问题,适用多种平台。    SSH由客户端和服务器端软件组成,客户端包含SSH程序及远程拷贝scp、远程登陆slogin、安全文件传输sftp等应用程序;而服务器端是一个守护进程,其在后台运行并响应来自客户端的连接请求。由于受加

2013-04-14 12:59:29 2042

原创 Ubuntu 12.10下JDK 7u17的安装方法

JDK(JavaDevelopment Kit)是Java的核心,包括了Java运行环境、工具及基础类库等。JDK有多个版本,常见的为Java SE即标准版,本文即为标准版7u17的安装方法。以下为具体安装步骤。1、 下载安装文件    在JDK的官网www.oracle.com上,进入下载页面后选择接受授权协议,然后选择对应文件下载。本文安装实践中选择LinuxX86对应的jdk-7u1

2013-04-09 21:47:13 1085

原创 XP系统下Ubuntu 12.10的wubi安装方法

Linux存在诸多不同的版本,最常见的有Fedora和Ubuntu,二者的具体区别可参阅相关文献,此处不再赘述。本人之前青睐Fedora,先后在XP系统下硬盘安装了Fedora14及Fedora17,然而安装过程中的坎坷艰辛一言难尽。后因工作原因接触到Ubuntu,立即被其快捷的安装方式吸引,故而弃用Fedora转至Ubuntu阵营。当然,白菜萝卜各有所爱,大家尽可以根据自己的喜好理解选用相应的操

2013-04-08 22:38:45 1515

原创 求取一元多项式乘积

题很常见:输入为两个一元多项式,要求输出为两个多项式的乘积。例如,输入为和,输出为。这是我求职期间某家公司的现场编程题。我历来不喜欢为了考试而去拼命做题,使得自己高分低能。而历来我自认为分析解决能力不错,可遇到这道题真是愣住了。当时大概想了下,无非分两步:先将多项式用数据结构表示出来,再去在对数据结构进行运算即可。想到Matlab中多项式的向量表示法,第一步便完成了,第二步便只是对两个向量元素进行数学运算了。对于一元多项式,可将其表示成,其中对应t阶一元多项式中的项。仍然以和为输入,则用向量可将表示成,将表

2010-10-17 10:42:00 1990

原创 平方数判别

<br />平方数定义为存在自然数平方根的自然数,如平方数9存在自然数平方根3,而8不存在自然数平方根,所以不是平方数。平方数判别是指给定自然数N,判断N是否为平方数。<br />平方数判别的要求很明确,即使不懂程序设计的人稍加思考也会给出解决方案,尽管大多数情况下并不是最优。下面我们分析几种不同的判别方法。<br />平方数判别最直接的方法便是遍历穷举法,该方法的基本思想是:从1开始递增遍历到N的自然数,求取平方并与N进行比较。如果平方小于N,则继续遍历;如果等于N,则成功退出;如果大于N,则失败退出。实

2010-08-28 15:46:00 1349

原创 十进制整数区间[1, N]中数字1出现的个数

<br />毫无疑问,数字历来都是高深的科学家和日常小市民谈论的对象,著名的哥德巴赫猜想便是举世瞩目的数字难题,而人们在超市购物总喜欢计较价钱中的一角半块。《编程之美》中一节有如下两个数字问题:<br />问题一:定义函数表示十进制整数区间中数字1出现的个数,利用程序实现函数。<br />问题二:是否存在满足的最大整数?进行简单分析。<br />问题需要一一解决,不能操之过急,往往脑海中第一个闪现的方法效率并不高,三思之后你会发现换条路走其实更快。世界的本质或许并不复杂,平时遇到的问题大多比较简单;而世界或

2010-08-16 16:24:00 1150

原创 阶乘的内涵

阶乘不能不说是数学中最重要的概念之一,是指所有小于或等于该数的正整数连乘积,即。在诸多有趣的数字游戏中,阶乘问题无论怎么看起来都神神秘秘的,似乎总也琢磨不透。然而,只要是真命题,总有解决的办法,而且多数时候有许多优秀的解决办法。我们来看《编程之美》中提到的两个阶乘相关的问题。问题一:给定整数N,的末尾有多少个0呢?问题二:求的二进制表示中最低位1的位置。乍一看这两个问题,傻眼了,心里不禁犯了嘀咕:什么鬼问题!的确,我们脑海中已经有了原始的解决方案:用循环或递归求取,然后不就解决问题了吗?这确实是一个解决方法

2010-08-15 20:25:00 1421

原创 舞动的CPU占用率曲线

如何用程序让Windows任务管理器的CPU占用率曲线舞动起来呢?    翻开《编程之美》,这是第一个问题。当我第一次看到这个问题时,确是愣住了:竟然还有这样的问题?事实上,这不过是常见的一个问题,只是傻瓜式使用电脑的我从来未曾深究过而已。难道编程还能实现这样的问题吗?稍微转动脑袋便知道当电脑运行软件时CPU占用率便发生变化,而软件的本质不过是一个程序序列罢了,而问题不过要求用程序实现罢了。现

2010-08-15 14:51:00 929

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除