2009年06月24日

转载 shared_ptr四宗罪

本文转载自:http://blog.liancheng.info/?p=85转载的目的是:本Blog连载了多篇内存管理相关的文章,由于我本人比较排斥智能指针(在大学的时候写过几个,当时觉得这种方式很“神奇”,但是实际工程中绝少用过),所以此类内存管理方式并未深入探讨,这一篇弥补了这个不足。我不久前写过一篇“C++良好代码风格之我见 - 兼谈boost的工程实用价值”,里面概要描述了我对智能指针的态度,这篇shared_ptr可以认为是我关于shared_ptr的观点补充。建议大家去该文的出处看看,有些评论内容读起来也是很有意义的。----在基于C++的大型系统的设计实现中,由于缺乏语言级别的GC支持,资源生存周期往往是一个棘手的问题。系统地解决这个问题的方法无非两种:使用GC库 使用引用计数 严格地说,引用计数其实也是一种最朴素的GC。相对于现代的GC技术,引用计数的实现简单,但相应地,它也存在着循环引用和线程同步开销等问题。关于这二者孰优孰劣,已经有过很多讨论,在此就不搅阅读全文>

发表于 @ 2009年06月24日 22:04:00|评论(loading...)|举报|收藏

2009年06月19日

原创 Erlang vs. CERL - CERL简介

CERL 这个词的来源是因为他被定为为:Erlang Model for C++。目的是在C++中获得Erlang的好处(部分)。不过,实际上CERL被实现为与语言无关的。基于CERL,你可以用PHP、Python之类的语言来写服务器或客户端。阅读全文>

发表于 @ 2009年06月19日 00:00:00|评论(loading...)|举报|收藏

2009年06月05日

转载 出百度记


虽然是多年前的老文,但是看了后颇有感触,所以转贴个。

===


出百度记作者:本刊记者 罗燕信息类别:科技发布时间:2006-12-5 18:27:54 文字 〖 大中小 〗 自动滚屏(右键暂停)

缔造中国最大搜索引擎的幕后角色们正纷纷拷贝、粘贴李彦宏的创业密码  
【抱憾ES】
在百度内部,有这样一种说法:百度出来创业的人,大部分是ES部门的人。
ES全称企业搜索,后改称企业软件事业部,百度曾投入巨大精力于其中,但终因市场限制未取得太大成就,导致其多数骨干出走,其中便包括程浩、林应明、吴世春和段晖。
因此,当2006年7月ES被百度正式裁撤之时,即使是此部门的老员工,也认为这一断臂之举并非错误。
事实上,ES的存在,本身只是百度寻找方向中的一步。2001年,尚不明确商业模式的百度按市场将团队划分为PS(大搜索部,即后来推出的百度独立主页)和ES两个部门。
两相比较,PS的商业模式在当时看似更不明确,但浏览量日益飙升阅读全文>

发表于 @ 2009年06月05日 17:37:00|评论(loading...)|举报|收藏

2009年05月15日

原创 C++良好代码风格之我见 - 兼谈boost的工程实用价值

TopLanguage上,一个关于“boost的理念和工程实用价值”的讨论(http://groups.google.com/group/pongba/browse_thread/thread/7501f6ff39b7ff0)吸引了很多人。我这里谈谈我的看法。无疑,boost是很优秀的库(确切的说,是库的集合)。但是我在介绍我的StdExt库的来由时,曾经毫不客气的说,boost 走错了方向。这其中的原因,归结于我对什么才是C++良好代码风格的看法。其一,简单是美。如果一件事情可以用简单的方法去完成,就不要仅仅为了方便花十分的力气去制造语法糖。boost中属于这方面的例子很多,如:boost::lambda, boost::shared_ptr, BOOST_FOREACH等。对于boost::lambda,BOOST_FOREACH,我倾向于在语言层面去引入相关的机制。在没有语言的机制下,多写几行代码完全不是什么难事(boost::lambda完全可以写一个仿函数类来搞定,而且调试方便,用lambda虽然代码少,但是失去了调试的便阅读全文>

发表于 @ 2009年05月15日 00:49:00|评论(loading...)|举报|收藏

2009年05月02日

原创 关于 lockfree 算法


lockfree的本质是乐观锁。也就是说,它假设多数情况下,别人不会改变。一个通用的lockfree算法可描述如下:

lockfree_modify(DataT* data)
{
    for (;;)
    {
        Save old state of data to a local variable;
        do modify;
        lock {
            if (current state == old state)
                commit modify & return;
        }
    }
}

可以看出,lockfree也是锁,只是将锁限制在一个最小的范围内(通常是一个原子操作)。由于仍然有锁,lockfree在多核下并不会比普通的锁高明多少,它也不能随cpu个数增加而获得呈线性scale的性能提升。

阅读全文>

发表于 @ 2009年05月02日 14:32:00|评论(loading...)|举报|收藏

2009年04月15日

原创 计划在C++建立仿Erlang式的分布式并行机制


梳理了下需求,大体如下:进程(Process)。进程是Erlang中一个虚拟的运行单位。既不是操作系统的进程,也不是线程,而是比线程更加轻量的单位,更接近于协程。命名进程(NamedProcess)。命名进程的好处是,你可以向一个不知道进程ID的进程发送消息。由于进程可能会宕掉(crash),进程ID可能会发生变化,所以在考虑了异常的环境下,命名进程降低了编码的难度(你不再需要考虑进程crash检测和重建连接的过程)。进程邮箱(Mailbox)。每个进程都拥有一个自己的邮箱,其他进程发送消息到该邮箱,而进程在合适的时机从中取出消息并处理之。定时器(Timer)。这个是属于最最基础的模块,用于多种用途,如超时检测等。消息编码/解码(encode/decode)。将进程的请求(sync/async的函数调用)encode为网络消息流,或将网络消息流decode回进程的请求。消息发送/接收(send/receive)。发送(send)指将消息(Message)发送到目标进程(Process)的进程邮箱(Mailbox)中。接收(receive)则从进程邮箱(Mailbox)取出消阅读全文>

发表于 @ 2009年04月15日 01:49:00|评论(loading...)|举报|收藏

原创 boost开始用cmake


boost开始用cmake,是否意味着bjam将逐步淡出舞台?果真如此,那倒是一个明智的决策。毕竟bjam貌似只有boost在用。选择一个流行的make系统,对推广一个project是有利的。

欢迎这样的变化,这意味着boost在开放心态上走出很重要的一步。
阅读全文>

发表于 @ 2009年04月15日 01:43:00|评论(loading...)|举报|收藏

2009年03月24日

原创 发现自己很少写Blog了


最近用Twitter比较多,发现 Twitter + Tweet.im + FriendFeed,是个不错的组合拳。
如果大家感兴趣,不妨来我的Twitter: http://twitter.com/xushiwei
还有,FriendFeed:http://friendfeed.com/xushiwei
阅读全文>

发表于 @ 2009年03月24日 10:01:00|评论(loading...)|举报|收藏

2009年03月16日

转载 《第一财经周刊》何飞鹏:何为真正的能人?


Q:何先生,这似乎是推崇能力的时代了,我感觉很多人都觉得自己挺能耐的,但我觉得他们虚张声势,不过我自觉也不是真正有能力的人,您觉得真正的能人应该是怎样的?


A:如果有人问你:你有解决问题的能力吗?尽管你不觉自己多有能耐,但多少还是会回答有。每个人都有解决问题的能力,但真正处境艰难、颠沛流离之际,就不见得每一个都有这种能力了。根据我的经验,一个真正具有解决问题能力的人,不论你把什么事交给他,他大部分时候都能把事情办成,不管这些事情又多困难!

     而且这些困难的事,又可以分为几种不同的状况:一、看起来疯狂,或者在大多数人的眼中,这根本是不可能的任务;二、一般的任务,但要求的标准超高、超乎一般的平均水平很多;三、没有足够的权力,其他单位又不配合,又要完成需要其他单位配合才能完成的事;四、没有前例可循,全新的任务;五、难度不高但工作繁杂、无趣又艰苦的工作。

     第一种状况是梦想家的能力,有想象力、不怕事、不自我设限,遇到不可能的任务,就当作是挑战,全力以赴,潇洒走一回,还是有相当的比例能完成;阅读全文>

发表于 @ 2009年03月16日 17:41:00|评论(loading...)|举报|收藏

2009年03月03日

原创 Windows 下 VirtualBox 虚拟机如何与主机互联


建好虚拟机后,打开DOS窗口进到VB的安装目录下(默认“C:\Program Files\Sun\xVM VirtualBox”)输入命 令:VBoxManage createhostif “VM1 external“,安装虚拟网卡驱动。然后在虚拟机的设置-网络-网络连接,将网络连 接方式改为“Host Interface”,下面的Interface Name就选上面建立的VM1 External,然后启动虚拟机,这时虚拟机 和主机就相当于处在局域网中的两台同样地位的计算机了,像正常设置局域网连接一样设置就可以了。主要是设置IP地址,两台机器的IP地址在同一局域网段内 就可以,两方设好共享目录就可以通过“网上邻居-整个网络-Microsoft Windows Network-工作组”来互相访问了。阅读全文>

发表于 @ 2009年03月03日 19:23:00|评论(loading...)|举报|收藏

2008年12月07日

原创 Erlang 与 Web 开发


Erlang 语言的很多特性,决定了它开发服务器端(Server)的程序极其地方便,故此,基于 Erlang 的各种服务应用正雨后春笋般涌现。这里我们就大家最熟悉的 Web 开发展开话题。考虑到 Erlang 并不广为人知,这里以脱盲为主,如果某个话题引起你的兴趣,建议你参考相关文档继续深入下去。有任何希望讨论的地方,可以在 erlang-china 或 ecug 这两个 google groups 中讨论。本文重点介绍的是 Yaws 和 MochiWeb,其他内容做概要介绍。Erlang编译与安装下载 Erlangwget http://erlang.org/download/otp_src_R12B-2.tar.gz
安装 bison, flex, openssl, ncursessudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libssl-dev
sudo apt-get install ncurses-dev
阅读全文>

发表于 @ 2008年12月07日 15:51:00|评论(loading...)|举报|收藏

2008年11月25日

原创 CN Erlounge III - 提前关闭注册通道

[2008-11-25] 通告:CN Erlounge III 提前关闭注册通道
参见:http://www.ecug.org/apply/

由于注册人数超预期,现决定提前关闭注册通道。如果对本次会议感兴趣,请在明天上午前注册。
注册通道将于 2008-11-26 中午 12:00 正式关闭。阅读全文>

发表于 @ 2008年11月25日 15:37:00|评论(loading...)|举报|收藏

2008年11月24日

原创 CN Erlounge III - 已注册讲师和主题列表

已注册讲师名单及议题注:以下只是当前已注册的讲师及相应的议题(按注册时间次序排列),但是限于大会时间安排上的限制,她们并不一定最终全部都在本次大会中讲。公布已注册的讲师名单和议题,目的只是处于信息披露的需要,让大会的过程更加透明。 姓名电子邮件演讲主题周爱民(aimingoo)aiming AT gmail.comerlang的高级程序设计语言接口 以delphi为基础,讲述实现c node和c drvier的具体方法。 从二进制结构中,了解erlang语言设计的细节(数据结构.效率与实现方法)。 李小红lixiaohong AT gmail.comMnesia table fragmentation过程及算法分析 Mnesia table frgmentation 解决方案 Linear hashing分片过程及算法 Linear hashing在erlang中的应用 许式伟xushiweizh AT gm阅读全文>

发表于 @ 2008年11月24日 16:20:00|评论(loading...)|举报|收藏

2008年11月04日

原创 CN Erlounge III - Topic征集

重要时间点讲师注册及Topic征集截止日期:2008-11-25普通参会者报名截止日期: 2008-12-1讲师投稿截止日期:2008-12-9详细会议议程安排公布:2008-12-13会议日期:2008-12-20 ~ 2008-12-21
CN Erlounge III - Topic征集
为了对会议的议题有所把控,我们修改了下会议的规则,将讲师注册(Topic收集)和讲师投稿分为两个阶段,而不是原先的一个时间段。讲师注册(Topic收集)的截止时间提前到了 2008-11-25。投稿截止时间不变。Topic范围
讲师的议题是否必须限定和 Erlang 相关呢?答案是否定的。我们都关注 Erlang,但不能也不想限制自己的眼界,Erlang 决不是我们唯一。只要你的议题和 Erlang 关注的问题域相关,和分布式、多核相关,就没有“跑题”。Erlang 社区应该是睿智的、包容的。讲稿建议内容有深度,而不是泛泛而谈。忌局限于一个事实或者一个实践,但是没有任何结论。内容有一个Focus的问题域。告诉大家你要解决什么问题,它又是如何被解决的。如果能够结合一阅读全文>

发表于 @ 2008年11月04日 23:32:00|评论(loading...)|举报|收藏

2008年11月03日

原创 Erlang China 大会 - CN Erlounge III - 发起

详细信息参阅: http://ecug.org/

欢迎大家四处传播此消息。 :)

----

CN Erlounge III - 发起 时间:2008-12-20 ~ 2008-12-21,为期2天 地点:上海(详细地址待确定) 人物:面向 Erlang 中国社区,但不排斥其他任何对 Erlang、分布式、多核等话题感兴趣的人。 议题: Erlang 语言相关技术、Erlang 应用、Erlang 与其他语言协作、分布式、多核等等。 会议主持:ECUG 会务组会议形式 多数时间由交流会讲师针对某个 Topic 进行论述,其他人提问(Q&A)方式交流。 留出一小段时间,安排沙龙式的对等交流机会。 会议规则 会议的讲师报销来回路费和住宿(投稿并申请成为讲师)。点击这里可以查看已经确定的讲师名单。 任何人可报名免费参与听讲(注册并申请参加本会议)。
注:由于场地限制,我们可能没法接受所有的与会申请,请谅解。如果名额已满,我们会回信说明。 重要时间点 普通参会者报名截止日期: 200阅读全文>

发表于 @ 2008年11月03日 19:39:00|评论(loading...)|举报|收藏

2008年10月17日

原创 linux ftp客户端


linux下命令行ftp客户端不少:lftpftp/pftptftp/tnftpncftp
最后试用发现,ncftp的兼容性和功能性都算不错。我买的blog空间(www.winxgui.cn)的ftp,只有ncftp、tnftp才可以上去,lftp和ftp/pftp会出问题。而tnftp的help很简陋,ncftp则详细很多,另外ncftp提供了ncftpget工具,和lftp的mirror类似,可以下载一个目录(递归),如下:

ncftpget -R ftp://xxxx/dir
阅读全文>

发表于 @ 2008年10月17日 21:32:00|评论(loading...)|举报|收藏

2008年08月06日

原创 用 cairo 实现跨平台图形

cairo (http://cairographics.org/) 是一个免费的矢量绘图软件库,它可以绘制多种输出格式。cairo 支持许多平台,包括 Linux、BSD、Microsoft® Windows® 和 OSX(BeOS 和 OS2 后端也正在开发)。Linux 绘图可以通过 X Window 系统、Quartz、图像缓冲格式或 OpenGL 上下文来实现。另外,cairo 还支持生成 PostScript 或 PDF 输出,从而产生高质量的打印结果。在理想情况下,cairo 的用户可以在打印机和屏幕上获得非常接近的输出效果。阅读全文>

发表于 @ 2008年08月06日 05:39:00|评论(loading...)|举报|收藏

2008年07月31日

转载 Erlang: Scalaris 以及内建的 json parser 支持

最近比较活跃的 Erlang 社区事件是 Scalaris 的代码公布以及 火热的 json BIF 讨论。 Scalaris 就是我们在上一篇中提到的 Alexander Reinefeld 在 Erlang eXchange 2008 上展示的神秘的 Yet An Other Key-Value DB 项目。目前它的源码已经“全文公开”的 host 在 google code 上了,在 [这里] 还有一份 pdf 的 Slide 可以看,比起其他的两个项目,其特色是: All In Memory 数据存储在 gbtree 中 —— 目前还没有提供存储到磁盘的特性。 实现了N多传说中的算法。比如,用来在 P2P 的 DHT 网络中寻址的 Chord 算法 和用来进行数据备份的 Paxos 算法。 据说代码写得相当清晰,极具学习价值。(默念10遍: OpenSource 就是好,就是好,就是好来,就是好)。 另外一件事就是 Joe 老爷爷最近提出了一个 EEP (Erlang Enhancement Process —— Erlang阅读全文>

发表于 @ 2008年07月31日 14:12:00|评论(loading...)|举报|收藏

2008年07月30日

原创 TOR: 如何访问http://cpp.winxgui.com/cn:stdext

为了和谐奥运,我的 wiki:http://www.winxgui.com, http://cpp.winxgui.com/cn:stdext 等暂时不能访问了。一个解决方案是使用TOR。 Linux (Ubuntu)下可以按照如下步骤: * sudo apt-get install torbutton-extension tor privoxy * sudo vi /etc/privoxy/config 去掉以下这行的注释符'#'(第1054行): forward-socks4a / 127.0.0.1:9050 . * sudo /etc/init.d/privoxy restart 大功告成。 阅读全文>

发表于 @ 2008年07月30日 11:17:00|评论(loading...)|举报|收藏

2008年07月23日

原创 stdext Relation: 数据表(DataTable)

Relation是一个复杂容器。简单来说,它是一个数据表(DataTable)。它类似于数据库(Database)中的表,当然,是一个简化的表:简化在于没有复杂的SQL语句,只是支持基于关键字(索引)的select。应用场景:如果你的数据有多列,并且需要相互查找(多对多关系),那么Relation容器非常适合。著名的GLib(GNOME Library)有一个GRelation,和stdext Relation的功能类似。但stdext Relation的功能更加强大。这表现在: * stdext的Relation是真正的数据表(DataTable),可以创建任意多列的数据,而不只是2列。创建2列的表,可以使用stl的std::pair(当然也可以用boost::tuple)。创建超过2列的表,使用boost::tuple。 * 可以为任意列创建索引,并且各列独立指定使用map(红黑树)还是hash map(哈希表)作为索引表是可能的。阅读全文>

发表于 @ 2008年07月23日 01:53:00|评论(loading...)|举报|收藏

用户操作
[即时聊天] [发私信] [加为好友]
许式伟
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
许式伟的公告

本博客内容除非特殊说明均属原创,如需转载、引用其中的部分文字,请注意以下几点:

1)请在转载(引用)的内容开始添加本人署名,并提供本博客中相应文章的链接。如你的作品为非电子读物或纯文本,请给出链接的url。

2)请勿用于商业用途。

3)如果愿意,请给我邮件:xushiweizh@gmail.com,让我知道我的东西到哪去了。谢过。

重要链接

文章分类
收藏
WINX团队
ebasil的专栏(RSS)
VisualFC/WINX专栏(RSS)
任风行(一路奔跑)(RSS)
绅士亦花心之WINX相关(RSS)
许伟群的专栏(RSS)
友情链接
QWL1996的专栏(RSS)
Sting的专栏(RSS)
SunHui的专栏(RSS)
不亦快斋(RSS)
于无声处(RSS)
手机开发论坛
珠穆朗玛(老汉)(RSS)
福&柯实验室(RSS)
存档
软件项目交易
Csdn Blog version 3.1a
Copyright © 许式伟