自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Dark Side of Cloud Storage —— 数据对像的分块消重

数据对像(可以通俗地认为是文件)的分块存储具有久远的历史。长久以来,单机文件系统一直将文件切分为若干固定大小的小块。其主要目的是为了进行有效的空间管理。互联网时代,大规模数据存储逐步发展起来。出于降低成本的考虑,人们在分块存储的基础上进行数据块的复用,即所谓的“消重”。但对于大型的在线对象存储而言,分块消重是有害的。具体来讲,分块消重是将数据对像切分成固定大小的数据块。数据对像之间有些数据块可

2013-09-03 20:51:31 4257 1

原创 Dark Side of Cloud Storage:多副本 vs. 主从

保障一个在线系统的可靠性和可用性的常用基本手段是多副本和主-从两种方案。这两种方案都的核心目的是消除单点。单点就是在一个系统中,某一个服务,或者功能模块,只有一个实例在运行。造成的问题就是,一旦这个实例下线,那么整个系统将会宕机;一旦这个实例丢失数据,那么整个系统将丢失数据。消除单点的手段不外乎增加实例数,也就是我们常说的“冗余”。但是冗余并没有那么简单。有些服务或模块没有持久化的状态(通俗地

2013-07-07 17:56:08 5673

原创 Dark Side of Cloud Storage——元数据归来

元数据归来莫华枫云存储服务是云计算的重要组成部分。技术上,云存储属于大型分布式在线存储范畴。云存储是一大类特殊的共享存储。作为提供存储资源的服务,云存储需要保证用户存放的数据可靠,不丢失。同时,云存储必须确保实时在线,任何宕机都会给用户造成损失。因而,云存储的基本要求是高可靠和高可用。此外,云存储是海量数据的存储,规模巨大。而且,出于成本和现金流量的考虑,云存储的集群规模必须随着用

2012-06-11 21:30:23 28230 37

原创 新的开始

<br /><br />几个月前,我看完了所有7季的Star Trek : The next generation。剧中时常有这样场景:Commander Riker走到Commander Data,或者Lutenent Walf跟前,帅气地将一个平板电脑甩在桌上。<br /> <br />在20年后的今天,任何人只要花上$499(不含税),就能像Commander Riker一样潇洒。关于三个月前那场疯狂的iPad发布就不用多说了,(当然还有更疯狂的iPhone4)。咱就说说iPad这个东西。<br />

2010-08-07 17:48:00 6384 2

原创 帝都日记

帝都日记    10月19日中午,方块告诉我,我被报名参加CSDN的SD2.0大会,因而要跟他们一起去北京。于是,便开始了帝都之行...第0日    10月21日,照常上班。只是多背了一大包行李。气象报告说北京最低5度,便带上了一大包衣物。事实证明,这是后来痛苦的源头。    傍晚5点3刻,登上公司的车,正式出发。到机场,签了票,觅完食,搜了身,开始在登机口等待。打开笔记本

2009-10-28 10:22:00 7184

原创 concept的外快

concept的外快    Concept,一个逝去的梦,未来的希望,抽象之毒的解药,...    Concept!标准委员会叫你回家吃饭!    我们等待的不是C++标准,是寂寞...    就此默哀三分钟...   Concept作为更加完善的抽象体系,消除了OOP等抽象机制的缺陷,将抽象手段提升到一个无忧的境界。与之相关的一个辅助机制,conceptmap/a

2009-09-13 10:37:00 6256

原创 工程传奇 ------ 学徒布劳恩

维尔纳·冯·布劳恩(Wernher von Braun),V2飞弹的爸爸,红石导弹的爸爸,木星火箭的爸爸,土星系列火箭的爸爸,航天领域的先驱。在二战期间,是德国V2弹道导弹的主设计师;冷战期间,是美国航天发展的核心动力。如果没有他,美国人决不可能在短短的十年之内完成登月壮举。在布劳恩的传记里,记载着一件有趣的事:布劳恩在大学里参加金工实习,为期一年。期间,师傅发给他们每人一个拳头大的铁疙瘩,要

2009-04-03 22:12:00 5811 2

原创 六战俱全

   江南这一带有过去有一种很流行的曲艺,叫做评弹。包括评话和弹词。前者又称“大书”,只是说,也就是苏州人的说书。后者又称“小书”,还要唱,用琵琶和三弦伴奏(人多了还有月琴)。小时候也很喜欢听大书。说书人往往根据传统故事和小说改编,有时会添油加醋,作为噱头。其中印象最深是《三国》,其中有这么一段:说是诸葛亮到东吴联合孙权一同抗曹。周瑜带兵在赤壁与曹操对峙。周瑜有心要杀诸葛亮,但又怕落下

2009-01-21 16:52:00 5169

原创 工程传奇——会飞的猪

    在空军之翼网站上有一篇文章叫给猪装上翅膀。标题党的厉害,实际上内容是很严肃的,讲的是隐形飞机的里里外外。第一代的隐形飞机是F-117 Nighthawk,的确是很雷人。很难想象,这副样子的东西,居然还能飞起来,还能打仗。从某种程度讲,它长得真有几分像一头猪,还长着翅膀。    f-117的身世还极具传奇色彩。研制的时候它的保密工作做到了家,造谣、掩盖、烟幕弹,都干过,甚至还出了款玩具欺骗大

2009-01-09 11:17:00 5878 1

原创 IDE综合症

IDE综合症莫华枫   前些日子猛然间接到开发POS机的任务。没有完整的IDE,索性就学着用vim,也算是技能锻炼吧。没几天,就看到了两位大牛在blog里展示无鼠标的魅力(这个,这个,这个,和这个,这个,这个,这个)。特别是云风,直接告诉我们不依赖于IDE的方法和好处。令人震撼。从另一个角度来看,不依赖于IDE带来的不光是方便、简洁,以及geeky。更重要的,它将使得我们打下更扎实的基础。而那些离

2008-09-27 10:50:00 7196 2

原创 三只小猪

三只小猪莫华枫     小时候听说过三只小猪的故事,隐约记得故事是讲三只小猪用不同方法造房子,对抗老狼。这些天做软件,遇到一个无比简单的问题,但在三种不同的语言中,却有着截然不同的解法。   最近,冷不丁地接到公司下派的一个紧急任务,做手持POS和PC程序之间交换数据的程序。各种各样的麻烦中,有一个小得不起眼的问题,POS机中数据的字节序和PC相反

2008-09-18 19:16:00 5440

原创 程序员应该学开车

说实在的,过去从来也没有想到这辈子还会学会开车。没学会开车之前,有时做梦开车,只不过更像开飞机。现在学会开车了,结果经常做梦找不到车,或者找不到地方停车。:)闲话少说,这会儿想说说开车和编程之间的关系。用我外公(抗战前就开车了,开了50年了)说:开车很简单,两分钟就能学会。但是要开好车,则需要一辈子。几年前我学了开车,尽管不是两分钟就学会,但在同组的几个人中,学的是最快的(如果再早十年,就

2008-09-14 13:58:00 6839 6

原创 ANN vs BNN

ANN vs BNN莫华枫毋庸置疑,ann是对bnn的模拟。(也有人不这么认为,打算闹独立。且不说版权问题,认为自己能够牛过上帝他老人家,也是不应该的)。这两天奥运,心血来潮,想让ann和bnn PK一下,看看咱们人类同上帝他老人家之间还差多少。在bnn中,神经细胞是基础,先pk这个。尽管神经细胞也叫神经元,但是为了方便裁判,还是得区分一下:bnn的叫神经细胞,ann的叫神经元。神经细胞有个重

2008-08-23 16:55:00 5203

原创 GP技术的展望——C--

GP技术的展望——C--莫华枫   C++的复杂是公认的,尽管我认为在人类的聪明智慧之下,这点复杂压根儿算不上什么。不过我得承认,对于一般的应用而言,C++对程序员产生的压力还是不小的。毕竟现在有更多更合适的选择。仅仅承认复杂,这没有什么意义。我不时地产生一个念头:有什么办法既保留C++的优点,而消除它的缺点和复杂。我知道D语言在做这样的事情。但是,D更多地是在就事论事地消除C++的缺

2008-08-02 20:47:00 5387 4

原创 GP技术的展望——先有鸿钧后有天

GP技术的展望——先有鸿钧后有天莫华枫    自从高级语言出现以来,类型始终是语言的核心。几乎所有语言特性都要以类型作为先决条件。类型犹如天地,先于万物而存在。但是,是否还有什么东西比类型更加原始,更加本质,而先于它存在呢?请往下看。:)泛型和类型   泛型最简短最直观的描述恐怕应该是:the class oftype。尽管这样的描述不算最完备,但也足以说明问题。早在60年代,泛型的概念便

2008-07-26 19:35:00 5971 1

原创 C++的营养——swap手法

C++的营养莫华枫    上一篇《C++的营养——RAII》中介绍了RAII,以及如何在C#中实现。这次介绍另一个重要的基础技术——swap手法。swap手法    swap手法不应当是C++独有的技术,很多语言都可以实现,并且从中得到好处。只是C++存在的一些缺陷迫使大牛们发掘,并开始重视这种有用的手法。这 个原本被用来解决C++的资源安全和异常保证问题的技术在使用中逐步体现

2008-02-26 15:13:00 14113 4

原创 C++的营养——RAII

C++的营养莫华枫    动物都会摄取食物,吸收其中的营养,用于自身生长和活动。然而,并非食物中所有的物质都能为动物所吸收。那些无法消化的物质,通过消化道的另一头(某些动 物消化道只有一头)排出体外。不过,一种动物无法消化的排泄物,是另一种动物(生物)的食物,后者可以从中摄取所需的营养。    一门编程语言,对于程序员而言,如同食物那样,包含着所需的养分。当然也包含着无法消化的东西。不同的

2008-02-16 08:11:00 6085 1

原创 瓦格纳的排场

瓦格纳的排场    这个春节过的实在无趣。走完亲戚,招待完亲戚,逛街买好东西,就没多少时间了。看书的兴致也没了。想写点什么,总是没法集中精力。实在腻味了,把以前下载的瓦格纳的歌剧《尼伯龙根指环》拿出来看看。自从下载,没怎么好好看过,这回算是补上了。     瓦格纳的“指环”系列可以算是歌剧里的极品,总共四出:莱茵黄金、女武神、齐格佛雷德和众神的黄昏。分成四个晚上连演,总共加起来大约15个小时。

2008-02-14 11:24:00 4467 2

原创 当GPL遇上MP

当GPL遇上MP莫华枫    GPL,也就是General Purpose Language,是我们使用的最多的一类语言。传统上,GPL的语法,或者特性,是固态的。然而,程序员都是聪明人(即便算不上“最聪明”,也算得上 “很聪明”吧:)),往往不愿受到语法的束缚,试图按自己的心意“改造”语言。实际上,即便是早期的语言,也提供了一些工具,供聪明人们玩弄语法。我看的第一本C语言的书里,就有这么

2008-01-25 15:09:00 2386

原创 GP技术的展望——道生一,一生二

GP技术的展望——道生一,一生二by 莫华枫    长期以来,我们始终把GP(泛型编程)作为一种辅助技术,用于简化代码结构、提高开发效率。从某种程度上来讲,这种观念是对的。因为迄今为止,GP技术还只是一种编译期技术。只能在编译期发挥作用,一旦软件完成编译,成为可执行代码,便失去了利用GP的机会。对于现在的多数应用而言,运行时的多态能力显得尤为重要。而现有的GP无法在这个层面发挥作用,以至于

2008-01-06 17:15:00 3456

原创 OOP的黄昏

    本文来源于TopLanguage Group 上的一次讨论(这里 ,这里 和这里 )。pongba提出:C++的抽象机制并不完善,原因是为了性能而做的折中,未来随着计算能力的提高到一定程度,人们就能够忽略更好的抽象所带来的负面效应。就此诸老大各自提出高见,受益良多啊。经过讨论,我基本上理解了pongba的想法。但我觉得等待计算机的性能提高太消极了。我相信随着编程技术的发展,这种最优抽象造成

2007-12-06 17:09:00 4656 3

原创 两种程序员

    根据观察,我发现有两类程序员。一类程序员喜欢技术,会认认真真地学习一种语言,设法掌握语言的使用要领和方法。他们关心的是语言的功能,以及功能的运用。对于语言的缺陷有相当的容忍度,并且也乐意接受语言的缺陷,只要语言能够提供足够强大的功能。    另一类程序员则相反,他们更侧重于用语言实现某些具体的业务。对于他们而言,语言的功能强大与否没什么关系,只要别妨碍他们在软件中实现业务。 对于前

2007-11-22 11:09:00 2984 4

原创 mfc大幅更新原因的推测

vc2008中,mfc将大幅度地更新。我猜测更新mfc的原因,很可能mfc中的一些代码阻碍了vc的进一步发展,不得不加以更新。 我以前曾经提起过,mfc有一个严重违背c++标准的地方: class   H; class   S { public:         x()   {                 H*   pThis=this-offsetof(

2007-11-15 15:09:00 2069 1

原创 C++之歌——噢,我亲爱的++

编程是艺术,这无可否认。不信的去看看高大爷的书就明白了。艺术对于我们这些成天挤压脑浆的程序员而言,是一味滋补的良药。所以,在这个系列中,每一篇我打算以艺术的形式开头。啊?什么形式?当然是最综合的艺术形式。好吧好吧,就是歌剧。当然,我没办法在一篇技术文章的开头演出一整部歌剧,所以决定用一段咏叹调来作为开始。而且,还会尽量使咏叹调同文章有那么一点关联,不管这关联是不是牵强。噢,我亲爱的++普契

2007-11-06 16:03:00 2637

原创 被误解的C++——螺蛳壳里做道场

螺蛳壳里做道场“螺蛳壳里做道场”是我们那里的一句俗话,意思是在很受限制、充满约束的情况下,做一些复杂的事情。前段时间我就遇到这么一个问题。经常开发MIS类的应用,不免需要和数据库打交道。一直使用VC,(唉,反正我们公司已经下了ms这条贼船了),访问数据库无非就是ODBC、DAO、OleDB、ADO什么的。(ADO.net因为无法控制服务端游标,被我一脚踢出候选名单)。我是个懒人。ODB

2007-10-19 13:29:00 4202 4

原创 被误解的C++——C++的缺陷和D的缺陷

C++的缺陷和D的缺陷D语言,从字面上讲应当是在C/C++的基础上进了一位,其特性当然也进了一位。真是这样?也是,也不是。这得看你的出发点和价值观了。D的定位在于继承C/C++的优势,但却更加易学易用。这种定位招人喜爱。C/C++的致命伤就在难学难用上。(不少人认为C++难学易用,我也持这种观点。但是既然要拿来同D比较,那我也只能跳一回票。只此一次,下不为例)。我大致了解了一下D的特性

2007-10-13 16:50:00 5329 5

原创 被误解的C++——蚂蚁

蚂蚁哪种动物最强大?可能每个人的答案都不同。我的答案是蚂蚁。没错,小小的蚂蚁。一个蚂蚁是渺小的,脆弱的。然而,一群蚂蚁却是非常强大的。它们能够杀死并吞噬遇到的任何生物,包括人类。这并不仅仅是由于它们数量众多。更重要的,是它们的组织。在所有的动物中,蚂蚁的组织是最严密,最高效的。使得蚂蚁在任何一个领域都成为了领先者。蚂蚁是最优秀的猎手、最优秀的采集者、最优秀的牧民、最优秀的种植者,最优秀的建

2007-10-11 09:15:00 2893

原创 C++之歌——求泛型给我安慰

编程是艺术,这无可否认。不信的去看看高大爷的书就明白了。艺术对于我们这些成天挤压脑浆的程序员而言,是一味滋补的良药。所以,在这个系列中,每一篇我打算以艺术的形式开头。啊?什么形式?当然是最综合的艺术形式。好吧好吧,就是歌剧。当然,我没办法在一篇技术文章的开头演出一整部歌剧,所以决定用一段咏叹调来作为开始。而且,还会尽量使咏叹调同文章有那么一点关联,不管这关联是不是牵强。 求泛型给我安慰

2007-09-21 17:10:00 2367 1

原创 Bjarne新文章《Evolving a language in and for the real world: C++ 1991-2006》的读后感

《Evolving a language in and for the real world: C++ 1991-2006》是Bjarne Stroustrup于2007年6月,在HOPL-III上发表的一篇新论文。文章大体的内容同D&E相近,但补充了一些新的信息,特别是D&E出版后C++的发展和变化,以及对未来的展望。更重要的是,Bjarne一反D&E里中立的态度,比较了几种热门语言同C++

2007-09-13 17:05:00 1877

原创 C和C++的一点数据

linus的一席言论引爆了C和C++社群间的“战争”。无论如何,我不会趟这趟混水。因为两种语言都是我的珍爱。C代表了我编程生命的童年,而C++代 表了青年时代。(呵呵,中年还没到呢。)长时间用C++,不玩儿点C技巧是不可能的,任务所致。只是在必要的时候用,必须恰到好处。但对于我而言,C技巧 是必不可少的。(对于C++的新手,请慎重)。唉,同室操戈,令人心痛。我在网上找到了一点点有代表性的数据,用以

2007-09-13 09:42:00 1665

原创 被误解的C++——磨刀不误砍柴工

 磨刀不误砍柴工“磨刀不误砍柴工”这句老话用在C++身上是再合适不过了。如果把C++比喻成一把刀,那么它会是一把材质和形状都非常好的刀——只是没有开锋。所以我们要“磨刀”。C++这把刀材质坚硬,强度也高,或许还进行过表面处理。那自然很难磨,费时费力。不过,一旦磨好,便锋利无比,持久耐用。这还是值得的。C++的“磨刀”实际上就是开发库,各种可能的库,从基础库开始,到各类应用库。库越多

2007-09-10 16:49:00 1641 2

原创 C++0x比较完整的介绍

今天在Wiki上查阅一些资料时,偶然发现关于C++0x的完整介绍:http://en.wikipedia.org/wiki/C%2B%2B0x。比较简洁易懂,基本上囊括了所有主要的提案。值得一看。洋文不好,翻译不了。各位还是看原文吧。

2007-08-27 15:27:00 1654

原创 C++的标准化速度

C++的标准化速度看着C++09那些诱人的提案,着实让人垂涎。同时,也着实让人着急。不免在想,“标准委员会也太慢了”。不过,想归想,平心而论,这样的标准化速度实属正常。比较而言,C++09的标准化时间还算合理。Pascal83年第一个标准,90年推出扩展标准,用了7年;Ada83到Ada95用了12年,再到Ada2005用了10年;C89/90到C99也是10年。如果C++新标准能在09通过,那么

2007-08-27 10:45:00 1693

原创 C++的未来,以及未来的未来

 C++的未来,以及未来的未来7月15日-20日,标准委员会在Toronto开了一次会,IBM做的东。从会后的文档来看,除了把一些已经基本成熟的提案加入草案,进一步明确了打算C++0x的新特性,以及留到再下一版本的C++标准的提案。从中我们可以清晰地看到C++未来,以及未来的未来的发展趋势。文档“State of C++ Evolution”(http://www.open-std.org

2007-08-23 16:48:00 2204

原创 抽象之源

C++的抽象能力在各种语言中算得上出类拔萃的。正如大地是Titan的力量之源,C++的抽象能力也有它的技术基础。泛型编程可以算作最重要的C++特性。在“C With Class”时代,C++等抽象能力相比SmallTalk之类的OOP语言,并没什么过人之处。但在应用的刺激下(最早是io stream),C++引入模板,以实现参数化类型的需求,也就是“泛型”的功能。然而,C++革命性的进步得益于

2007-08-16 16:12:00 1501

原创 强类型ComboBox的实现方案

为了实现强类型的ComboBox,我写下了这么一段代码:templateclass XComboBox{public: … void AddItem(const ItemT& item) {  … } ItemT& GetItem(int index) {  … } ItemT& SelectedItem() {  … } …};为了节省篇幅,我略去了具体实现的代码。这些接口便足以说明问题了。当C

2007-06-12 15:01:00 1556

原创 《被误解的C++——学习和使用》的案例

 假设我们现在有个任务,要做一个程序,将一个数组中的每一个元素乘上100,然后赋值回去。为此,我写下了这样的C#代码:int[] ai=new int[10];//初始化ai。foreach(int i in ai){   i*=100;}我又写了C++代码:vector    ai(10);//初始化ai。for(vector::iterator i=

2007-06-06 09:30:00 3807 3

原创 业务逻辑的强类型化(续)

作为一个好事者,我希望能够给我周边的人讲解这种技术。他们对C++很不熟悉,但熟悉C#。于是,我打算把这种技术移植到C#中,以便於讲解。说做就做。我建了一个C#项目,把代码拷贝过去,然后着手修改,这样可以省些事。我立刻便遇到了问题。C#有泛型,相当于模板,但不支持非类型泛型参数,即int CurrType,只允许用一个类型作为泛型参数。这样我们就不能使用C++中耍的手法了(typedef cur

2007-05-30 15:57:00 2775 2

原创 业务逻辑的强类型化

 业务逻辑中,很多逻辑上不同类型的东西,到了编程语言中,时常会退化成一种类型。一个最简单的例子就是货币。通常在我们编程时,采用一种类型,如double(有些系统中有专门的Currency类型,为了简便起见,这里使用double),来表示货币。但是,随之而来的就是币种的问题。不同的币种间存在换算,也就是汇率的问题。比如我们有RMB和USD两种货币,分别表示人民币和美元。尽管都是货币(在代码中

2007-05-30 15:28:00 4034 4

原创 C++的替代者

C++诞生已经接近30年了,标准化也已经快10年了。在80年代末,90年代初至今的这段日子里,C++不断成熟,并成为主流。然后,几乎每隔5年,便会出现一种语言,声称源于C++,但比C++更好。这些语言有意无意地以C++替代者的姿态出现。先是Java,然后是C#,如今还有一个D语言。那么C++的替代者真的出现了吗?这些语言真能替代C++吗?回答这些问题,得先看看C++替代者应具备的条件。要想知道C+

2007-05-25 17:01:00 4788 6

空空如也

空空如也

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

TA关注的人

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