自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lovetheme的专栏

关注编译技术,系统底层

  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 Large Scale Machine Learning--An Engineering Perspective--1. 大规模机器学习平台的构成

机器学习/数据挖掘在各种业务场景中的应用已经非常之多了,在线广告/搜索/商品推荐/风险建模/图像处理/语音识别/机器翻译都是机器学习成功应用的典型case。有效应用机器学习解决业务问题,在我看来依赖于三个维度:1. 对Domain相关的business knowledge的深入理解[1]2. 对机器学习技能知识本身的深入理解3. 高效的工具平台[2][3][4][5][

2015-10-31 21:02:15 2456 2

原创 Large Scale Machine Learning--An Engineering Perspective--目录

第一部分 序言     0.  引言     1.  大规模机器学习平台的构成     第二部分 算法部分     2. 大规模机器学习常用开发范式     2.1. BSP     2.2. SSP (Bounded-Delay Algo)     2.3. Asynchronous Update      2.4. Data Parallelis

2015-10-31 19:47:01 1817

原创 Large Scale Machine Learning--An Engineering Perspective--0. 引言

萌生撰写大规模机器学习这个主题文章的念头有一段时间了,最一开始是想对自己这几年的技术积累作一个总结性质的回顾。08年我曾经供职过的飘石科技公司的创始人张东晓博士说过这样一句话“一件事情你说不清楚,十有八九就做不好”,对这句话我实在是深以为然,也就会经常期望通过阶段性的回顾总结的形式来验证自己对一个阶段的工作是不是真正掌握得足够通透深入了。及至真正利用空暇时间开始动笔的时候,就发现这个领

2015-10-31 19:35:15 1204

原创 对aimingoo"架构师能力模型"一文的读后感

在csdn上看到了aimingoo的 做人、做事,做架构师——架构师能力模型解析一文,觉得写得很好,但是原文写得有些艰深,读起来颇费了些劲,(可能aimingoo从业多年,个人积累太厚,说事述理更多是基于自己的能力背景和阅历经验来考虑, 而我这种积累得还是半瓶不满,一瓶更欠的小葱,没有那样坚实的背景,想要从字里行间,领悟aimingoo背后的意图自然是要费些劲了^-

2009-01-10 16:25:00 1082

原创 对自己的学习方式的思考

前两天跟老大讨论起关于知识学习的问题。他说到很佩服自己的记忆力,因为经常能看到我对那些错综复杂的目录结构,源码位置,文件名之类的信息记得都很清楚。然后自陈他自己的记忆力就不够好。对于那些目录结构,源码位置的信息记忆得就不是很牢固,总是需要在cd到某个目录之前要ls一下才能确定。但是在我看来,他对专业方面的东西,比如编译优化的知识架构,工作中讨论过的内容,记忆得都是很

2009-01-06 19:30:00 1146

原创 对自省的一些思考

在云风的blog上看到这样一段话,很有所感,顺便总结了一下自己的理解和感想。自省非常的重要。我知道自己只是一个中等智力,容易犯错误,不少事情做起来,会比许多优秀的人慢一拍的人。但是我是一个容易专注的人,保持着单纯的好奇心的人,求知欲很强烈的人。所以我适合写程序,适合做软件,能够自发的从上至下的审视自己的作品,弄明白一切背后的原理,发现不足的地方去改进它。比起80 年代末,90

2009-01-02 23:27:00 778

原创 对"咱们怎么过冬"的思考

 在pongba发起的TopLanguage里看到有人发起了这样的帖子,有了一些想法,稍微作了一下整理,发到自己的空间上。 原帖及相关讨论可以看这里:我的观点可能会是比较老土,经济环境出现冬天,不能不当回事,也不能太当回事,作好份内的事,努力 工作,努力学习,努力积累就好。哪个行业更安全,是不是应该考虑进入那个行业,在职业选择的伊始是可以考虑的,但是对于已经入行的人

2008-12-27 21:05:00 598

原创 有关读书的一些思考

 在求知的过程中,我们经常会要面对这样,那样的诱惑。以读书为例,一部经典的好教材,想要把它读通,搞明白,弄扎实,除了在读的过程中理解作者想要描述的字面意思以外,往往还需要通过作大量的相关习题及实验来建立起更为扎实,深刻的认识,而捧着厚厚的一本书,人类心理潜在的占有本能又往往会驱使着自己以最快的速度将这部教材拿下,满足自己的成就感,于是在没有外人监督,没有外力监控的情

2008-12-27 21:05:00 981 1

原创 认知能力的瓶颈

 最近工作学习的过程中,总是感觉自己遇到了认知能力的瓶颈。比如说,设计一个复杂的系统,在设计的过程中,对目标域的具体问题的认知和理解,在达到了一定的程度以后,再想有更深一步的认识,就发现很困难了。想要获得对这项事物的细致全面的把握,似乎是件心有余而力不足的事情。而带着这种程度的问题认识,去设计问题的解决方案,总会有心里不踏实的感觉。这种情况下,自己的解决办法只能是通

2008-12-27 21:04:00 1120

原创 最近有了被掏空的感觉

 最近的工作过程中,有了那种被掏空的感觉。最近一次体验到这种感觉,还是将近一年前在 上一家公司的时候。记得去年差不多也是在这个时间,自己在 上一家公司负责一个项目的开发, 从项目初始的框架设计到具体的实现,全程作为主力参与,那时自己刚进公司不到半年时间,还是一个新兵蛋子, 负责这样的项目一下子就感觉到了压力。那段时间,晚上加班到10点以后是家常便饭,即便是周末,基本

2008-12-27 21:03:00 941

原创 工作进度6-语意处理模块

 最近在忙活语意层面的东西。      这部分内容的实现进度不像之前作语法处理模块那样顺畅。     一方面,自己以前的开发经验主要还是集中在语法方面,在语意方面的积累并不是很厚,这次又是重起炉灶,从头开发设计编译器,无论是在流程框架上,还是在实现细节上都需要花费不少时间去梳理,熟悉。     另一方面,从语法描述到语法树这个层次所涉及的变

2008-12-27 21:02:00 569

原创 有关表达式求值的一些思考

 最近在实现一个表达式的evaluator,具体来说,就是对表达式求值,算出最终的结果。目前的这个版本的evaluator只针对常量表达式,对变量表达式则不去处理。因为对于变量表达式,是无法在编译期间求出其最终结果的,只有等到执行阶段才具备算出结果的全部条件。Evaluator的实现机理并不太复杂,简单来说,就是一个递归下降的求值过程。如果把表达式的语法结构表征为一

2008-12-27 21:02:00 827

原创 有些事情,作起来要比想象中的容易

 记得去年8月份就曾经想自己动手设计一门语言,一开始的想法是先实现一门跟自己的目标语言特征有相似性的现存语言的编译器,在实现中积累对语言设计和实现的理解.记得当时选定了Ruby以后,就把C Ruby的源码下载下来,打印出其语法BNF范式. 后来就是一直在研读Ruby的源码,零零星星也花了些时间,因为总是感觉对C Ruby本身的实现理解的还不够通透,就一直没有真正开始自己的实作,在我的想

2008-12-27 21:01:00 1323

原创 一件事情,如果你不能说清楚,十有八九你就作不好

 记得有一次开会,我的头儿说了标题所写的这句话,自己深以为然。有过较多解决问题的经历的人可能会有这样的感觉,很多时候,面对一个问题,我们即使没有完全将之想清楚,也可以基于已有的经验给出一个能够work的解决方案,当然这种情况下给出的方案往往不是最优的。而即使给出了解决方案,很可能自己都未必能把自己给出的解决方案所基于的推理逻辑,清晰无误地阐述出来. 因为随着人的知识

2008-12-27 21:00:00 983

原创 感受到了积累的效应

 上午写程序写的很high,一时间势如破竹,几乎将词法模块剩下的东东全部作完了,特别是有几个涉及到串处理的模块,原本以为会花一些时间才能作完,结果很快就搞定了。更happy的是感受到了自己编程能力的提升。记得以前写程序的时候,一涉及到手写串处理的code,自己就会有一点点头皮发麻的感觉,因为那时总感觉串处理比较琐碎,涉及到的边边角角的地方比较多,往往有思考起来不能穷尽各种逻

2008-12-27 20:59:00 708

原创 使用m4来模块化管理语法文件

 使用yacc/bison编写语法文件的时候,经常遇到的一个问题就是在一个语法文件中包含了太多规则,以至于文件的尺寸变得异常庞大,显得很难看。一个普通语言的语法文件,加上语义动作和相关处理函数,尺寸在5000行以上并不是什么稀罕事,这在软件设计来说是一件让人难以忍受的事情。毕竟,面对这么大的一个文件,无论是阅读还是维护,都不是一件让人舒心的体验。以前在Cadence

2008-12-27 20:59:00 1731

原创 早起干活

 前一段时间睡得一直比较晚,早晨睁眼就得8:30,再收拾收拾,路上耽搁一下,到公司基本上都是9:30以后,有的时候甚至直逼10点。结果就是感觉上午还没干什么事情,就开始吃午饭了。整个一个白天天下来,似乎都没作多少事情,于是晚上就总想晚走一会儿,多干点事情,晚走的结果又导致睡得较晚,形成一个很容易让自己疲惫的反馈环。有些人喜欢晚睡晚起,擅长夜战,我则恰恰相反。所以决定

2008-12-27 20:57:00 844

原创 有关语法数据库Clone的设计方案

 最近有这样的需求:需要为自己设计的语法数据库GDB( Grammar DataBase)提供Clone机制的支持,具体来说,就是给定一个GDB语法树TreeA,希望能够复制出一份跟TreeA内容一模一样的语法树TreeB,TreeB除了内容跟TreeA一模一样外,跟TreeA不存在任何依赖关系,即使删除了TreeA,也可以正常访问TreeB中的内容。这样的一个功能

2008-12-27 20:49:00 627

原创 对一个数据转换模块的设计思考

 上周一直在设计语法层到语意层的转换模块。在目前我参与设计的这个系统里,语法层面和语意层面采用的是两套不同的数据结构的,为了便于描述。我将语法层面的数据结构称之为GDB(Grammar Database),将语意层面对应的数据结构称之为SDB(Semantic Database)。引入GDB的主要目的是为了解决文本形式的源文件描述到易于程序处理的描述形式的转换。具体

2008-12-27 20:48:00 696

原创 有关软件架构设计 的思考

 最近在重构设计。这一回自己吸取了之前的教训,在想清楚整个设计的架构之前,一直没有动手写太多实际的code,更多的时候是用伪码来描述验证自己的设计思想。花了三天的时间,在一条设计道路上不断地思考,尝试,最终发现并不太可行,于是改换另一个思路继续进行设计,经过一天时间的设计,发现这个思路也存在一定的缺陷,及至今天,才算是基本确定下来整体设计的框架。如果自己这一

2008-12-27 20:47:00 711

原创 设计杂感

 最近在设计一个Identifier的Resolver,通俗来说,这个Resolver要完成如下功能:1。对语句,表达式中出现的ID进行解析,判断该ID是否存在相应的定义。2。对存在定义的ID,要校验引用处对该ID的用法是否与其定义处的语意相兼容。比如说,对一个浮点变量执行移位操作,在语法上是合法的,但是在语意上则通常不允许了。这件事情说起来并不太复杂,主要涉及到的

2008-12-27 20:46:00 586

原创 软件设计过程中的诱惑

 在软件设计的过程中,我们经常会面临这样的诱惑:在工作过程中,突然出现了一个问题如鲠在喉,阻塞住了当前整个的工作进度,而同时,你立刻能够想到一个快速搞定该问题的方案,这种情形下开发人员,很容易就会受到快速解决问题的诱惑,快速地给出fix,然后继续推进到后面的内容,维持那种开发过程中酣畅淋漓的快感。但是在开发过程中,不可避免会经常性地遇到问题,如果经常性地给出

2008-12-27 20:46:00 847

原创 对一个正确的设计作优化 要远比 把一个过度优化的设计调正确 容易

 注:标题看起来可能有点拗口.实际上是从一句代码优化相关的英文引申出来的:It would be much easier to optimize a right program than to make an over-optimized program right.最近在实现一个用于打印语法树内容的Visitor类,实现的过程中发现了之前自己设计的语法树结构存在不少的冗余,引发了

2008-12-27 20:45:00 759

原创 软件设计随感

 最近在作的事情是为语法规则制定相应的数据结构,并将二者集成起来。这个环节的工作在难度上来说并不是太大,但是复杂度却不算小。因为涉及到的语法规则非常多,相关的数据结构也数量庞大,粗略统计了一下,现在为语法数据结构引入的类已经有60多个了,涉及到的代码量也有5k行之上,虽然每个类的描述并不复杂,但这么多类,之间难免有相互包含,继承的关系,在设计过程中要将这些类的关系,描述记在

2008-12-27 20:43:00 621

转载 有关软件模块化设计的思考

 对软件设计来说,我倾向于让一个系统中的各个子模块满足高内聚,低耦合的特质.如果耦合不可避免,那么我期望这种耦合一定是要通过一层统一的抽像接口来完成的,没有约束的任由模块之间纵横交错,互相调用和影响,只会让模块的复杂度变成乘方,依赖关系变强. 这种复杂度和依赖关系的增加既会带来更多的潜在bug风险,也会增加日后代码维护的难度及工作量.但在现实的开发中,却经

2008-12-27 20:42:00 1551

原创 fwrite和ofstream文件输出效率上哪个更快?

 直觉告诉我,fwrite在速度上应该会更快一些。毕竟ofstream这样的c++输出流,通过引入了虚函数,简化了程序员的编程逻辑,提高了安全性,但是也由于引入过多抽象层带来了相应的性能开销。为了佐证我的想法,特地写了一个小程序来测试了一下,最终验证了我的揣测。C程序代码如下:#include #include #include double calcP

2008-12-27 20:41:00 4676

原创 C++中定义派生类之前需要看到基类的定义实体

 在C++中定义一个从基类base派生出来的类derv,需要在定义base之前确保编译器能够看到base的定义实体,即...    // base的类定义要出现在此处class B: public base {...};如果仅仅是在定义derv之前声明一下base,如下所示:class base;class derv : public base

2008-12-27 20:39:00 1901

原创 一道C++模板题

 昨天在TRW2000的作者刘涛涛的blog上看到了一道c++模板题,一时兴起,就作了起来。题目如下:#include #include typedef unsigned char BYTE;typedef unsigned char * PBYTE;class LZF{public:     int num;     LZF(): num(

2008-12-27 20:38:00 627

原创 C++中平台无关整数类型的表示

 最近写程序,需要用到平台无关的32位/64位整数类型,如果直接使用int或long来表示的话,需要考虑到在32和64位平台上的差异。如通常的32位编译系统中,int的宽度是32位,long也是32位,long long则是64位。而64位编译系统中,int的宽度是32位,long是64位了,long long也是64位。我们当然可以自己来使用typedef定义平台

2008-12-27 20:37:00 1599 1

原创 Visitor模式浅谈(1)

最近的开发工作中有这样的需求: 在语法分析阶段建立好的语法树上作一些操作。概括起来,大致有如下一些需求:1. 将语法树对应的内容再打印出源码级表示,以协助调试,验证系统正确性。2. 遍历语法树,对语法元素作语法正确性的检查。3. 遍历语法树,转换生成后端所需的数据结构。4. 。。。。。。抽象来看,这些内容几乎都涉及到这样的要求: (1) 遍历 语法树 (

2008-12-27 20:36:00 648

原创 将复杂问题分而至之

 即将开始的项目非常庞大,仅仅是语言的文法规则打印成A4纸就有将近30页.自己以前也的确没有独自驾驭这种规模项目的经验,心中多少有些忐忑。大学的时候就写过一些程序,但大多是自己处于学习起步阶段的一些涂鸦之作,并没有太多系统设计的思想和体会,更多的是编程熟练工的一些积累.在实验室的时候虽然写过不少程序,但多是零零散散的一些东西,为这个项目写一些程序,为那个功能模块写一些程序,即使是自

2008-08-06 22:54:00 520

原创 工作进度2--预处理器的设计

 因为项目需求,自己需要实现一个类似于CPP的预处理器。今天花了大半天的时间在考虑怎样实现这个预处理器。 自己需要实现的这个预处理器的形式跟C语言的有些类似,包括如下一些预处理命令:defineifdefincludeifndefline undef elseelif endifresetall.... 蓝色字体的命令是跟C语言中的相应预处理

2008-08-06 22:53:00 436

原创 工作进度1

 这几天的主要时间花在阅读语言的IEEE标准上,同时也在思考相应的词法,语法模块的实现.按现在的理解来看,词法模块的工作量并不太大,略微有点难度的就是对宏定义命令和include文件的处理.自己也基本上有了相应的实现思路,剩下的只是具体的工作量的问题.语法模块的工作可以划分为两个部分,第一部分是语法规则的编写;第二部分则是语义动作的实现.对第一部分来说,由于自己需要实现的是一个已经很成

2008-08-06 22:52:00 529

原创 ubuntu在本本上成功工作起来了

 ubuntu在本本上成功工作起来了

2008-08-06 22:48:00 354

原创 在Linux下调用IE

 在Linux下调用IE

2008-08-06 22:46:00 1273

原创 我在新公司的Linux工作环境

 我在新公司的Linux工作环境

2008-08-06 22:36:00 438

原创 探讨单件模式(1)

有关设计模式的东西很早就听说过一些了,但因为以前的开发经历中对设计模式很少有直接的需求,所以也没花太多心思研究过.前不久公司组织Training,内容是Design Pattern的Singleton(单件模式).原本以为Singleton是一个很simple的模式,这个培训应该也不会有太深入的内容,不过想想自己毕竟没有系统地研究过设计模式,所以还是去参加了,听完training以后才发现原来一个

2007-10-14 21:31:00 631

Large Scale Non-parametric Bayesian Inference

并行化Bayesian无参推断的文章。对并行机器学习感兴趣的同学可以看看

2014-11-07

C++ 语言标准 2003

C++的ISO标准2003版 从标准层面详细说明了C++和方面的特性。 对于想深入了解C++的程序员有一定的帮助。

2009-04-20

空空如也

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

TA关注的人

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