C++
文章平均质量分 76
xushiweizh
这个作者很懒,什么都没留下…
展开
-
2012年4月语言榜
几个结论:C 语言已经反超 Java,重获语言榜首位的宝座。我关于语言发展趋势的3个判断:* Java 语言市场份额不断下跌,并最终被C语言和Go语言超越。* C语言将长期居编程榜第二,并有望在Go取代Java前重获第一的位置。* Go语言最终会超过Java排编程榜首位。这个预言,至少已经实现2条。坐等Go语言排首位。TIOBE 编程语言榜:原创 2012-04-18 23:09:57 · 8209 阅读 · 2 评论 -
关于 lockfree 算法
lockfree的本质是乐观锁。也就是说,它假设多数情况下,别人不会改变。一个通用的lockfree算法可描述如下: lockfree_modify(DataT* data){ for (;;) { Save old state of data to a local variable; do modify; lock {原创 2009-05-02 14:32:00 · 4002 阅读 · 1 评论 -
计划在C++建立仿Erlang式的分布式并行机制
梳理了下需求,大体如下:进程(Process)。进程是Erlang中一个虚拟的运行单位。既不是操作系统的进程,也不是线程,而是比线程更加轻量的单位,更接近于协程。命名进程(NamedProcess)。命名进程的好处是,你可以向一个不知道进程ID的进程发送消息。由于进程可能会宕掉(crash),进程ID可能会发生变化,所以在考虑了异常的环境下,命名进程降低了编码的难度(你不再需要考虑进程原创 2009-04-15 01:49:00 · 5850 阅读 · 7 评论 -
TPL + Json + PHP = ?
TPL + Json + PHP = TPL + JSPT这里,JSPT 是我发明的名词。它代表了 Json PHP Transformations = Json (Data) + PHP (Transformation Template)。为什么有这个词,是因为这个世界上还有一个著名的词:XSLT = XSL Transformations = XML (Data) + XSL (Trans原创 2008-07-07 12:13:00 · 7249 阅读 · 16 评论 -
TPL文法(1):基础文法(TPL Basic Syntax)
TPL文法(1):基础文法(TPL Basic Syntax)许式伟 2008-7-3操作符(规则组合)R1 + R2R1 + R2 表示顺序匹配:匹配 R1 成功后继续匹配 R2。编译原理中一般以 R1 R2 表示(很遗憾,C++没有operator空格)。这应该是使用最多的文法了。例如:要匹配html标签开始,也就是,这样写:。R1 | R2R1原创 2008-07-03 01:44:00 · 4093 阅读 · 1 评论 -
文本处理库 tpl-1.0.00 正式发布!
TPL: Text Processing Library (tpl-1.0.00) 许式伟2008-6-24文本处理 (Text Processing)文本处理其实就是IO。故而文本处理通常可分为两块:一块是I,一块是O。I是指把文本Parse为内存数据结构(DOM),O则相反。联想:XMLParser是I(将XML文本变为DOM),而XSLT是O原创 2008-06-24 00:27:00 · 3170 阅读 · 0 评论 -
bcp: 给boost瘦身
bcp: 给boost瘦身boost是一个非常优秀的库。问及多数C++程序员为什么最终没有选择Boost的原因,均回答:Boost太大,过于Heavy。是的。这也是我多数在用与不用Boost之间徘徊的原因。现在给大家介绍的这个bcp也许可以部分消除这样的不良影响,让我们有机会得以使用Boost这样优秀的库。bcp的主页:http://www.boost.org/原创 2008-06-20 16:22:00 · 4500 阅读 · 1 评论 -
TPL: 一个新的正则表达式(regex)库
TPL: 一个新的正则表达式(regex)库许式伟2008-5-29概要C++ 中正则表达式(regex)库已经很多。光 boost 中就有3个:regex、spirit、xpressive。那么我们为什么还需要一个新的呢?多数正则表达式库都需要一个编译(compile)过程。即:通过解释一个正则表达式的字符串(pattern)来生成该正则表达式的内部表示(字原创 2008-05-29 01:23:00 · 9065 阅读 · 23 评论 -
用 cairo 实现跨平台图形
cairo (http://cairographics.org/) 是一个免费的矢量绘图软件库,它可以绘制多种输出格式。cairo 支持许多平台,包括 Linux、BSD、Microsoft®Windows® 和 OSX(BeOS 和 OS2 后端也正在开发)。Linux 绘图可以通过 X Window系统、Quartz、图像缓冲格式或 OpenGL 上下文来实现。另外,cairo 还支持原创 2008-08-06 05:39:00 · 4249 阅读 · 5 评论 -
stdext Relation: 数据表(DataTable)
stdext Relation: 数据表(DataTable)许式伟2008-7-22Relation容器简介Relation是一个复杂容器。简单来说,它是一个数据表(DataTable)。它类似于数据库(Database)中的表,当然,是一个简化的表:简化在于没有复杂的SQL语句,只是支持基于关键字(索引)的select。应用场景:如果你的数据有多列,并且需要相互查找(多对多关系),原创 2008-07-23 01:53:00 · 3066 阅读 · 8 评论 -
一个我不知道的C++语法
gcc居然支持:int a = ({int i = 0; ++i; i;});这是C++标准吗?vc++ 6.0, vc++ 2005 都编译不过。原创 2008-04-23 14:50:00 · 3693 阅读 · 12 评论 -
C/C++字符串处理(5):std::deque与std::TextPool
C/C++字符串处理(5):std::deque与std::TextPool许式伟2008-4-4引子std::TextPool 基于 std::deque 实现。所以尽管本文讨论 std::deque,但是所有的结论对 std::TextPool 同样有效。实现概要顾名思义,这是一个“双向队列(double-ended queue)”。这意味着从队列开始和结束处插原创 2008-04-04 01:06:00 · 4767 阅读 · 1 评论 -
C/C++字符串处理(4):std::vector与std::StringBuilder
C/C++字符串处理(4):std::vector与std::StringBuilder许式伟2008-3-28引子std::StringBuilder 基于 std::vector 实现。所以尽管本文讨论 std::vector,但是所有的结论对 std::StringBuilder 同样有效。实现概要简单来讲,std::vector 是一个动态数组,管理的是一块线性的、可动原创 2008-03-28 02:59:00 · 10473 阅读 · 4 评论 -
C/C++字符串处理(3):String ADT - 字符串只是抽象数据类型
C/C++字符串处理(3):String ADT - 字符串只是抽象数据类型许式伟2008-3-26概要字符串是什么?我们认为,与其说它是一个类,不如说它只是一个ADT(抽象数据类型)。目前C++中的字符串类目前广泛采用的C++字符串类有二:std::string(basic_string,由STL提供)、CString(由MFC或者WTL提供)。它们的实现非常类似原创 2008-03-26 22:31:00 · 5272 阅读 · 1 评论 -
C/C++字符串处理(2):String - 常字符串
C/C++字符串处理(2):String - 常字符串许式伟2008-3-23unfoldTable of Contents概要理解String(BasicString)关于TempString基类源码参考阅读概要我们知道,C++标准库(STL)提供了string(basic_string)类进行字符串操作。字符串很可能除了内存分原创 2008-03-23 21:20:00 · 8337 阅读 · 3 评论 -
C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope
C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope许式伟2008-3-20概要在介绍StdExt的时候,我曾经提到,STL设计精良,但是以下几块仍然设计不足(或缺失): allocator(内存管理) string(字符串处理/文本处理) parallel programming(并行编程)原创 2008-03-20 22:08:00 · 10471 阅读 · 17 评论 -
开辟VisualFC(WTL WinxGUI 可视化开发工具)专栏
VisualFC为WTL和Winx提供可视化开发环境支持,目前已完成VS60,EVC4,VS2005开发环境下插件支持。项目主页为:http://code.google.com/p/visualfc/ 作者专门在CSDN Blog上开辟专栏:http://blog.csdn.net/visualfc/ 介绍,强烈推荐大家关注。原创 2007-11-26 20:58:00 · 6000 阅读 · 0 评论 -
C++良好代码风格之我见 - 兼谈boost的工程实用价值
TopLanguage上,一个关于“boost的理念和工程实用价值”的讨论(http://groups.google.com/group/pongba/browse_thread/thread/7501f6ff39b7ff0)吸引了很多人。我这里谈谈我的看法。 无疑,boost是很优秀的库(确切的说,是库的集合)。但是我在介绍我的StdExt库的来由时,曾经毫不客气的说,boost 走错了原创 2009-05-15 00:49:00 · 18723 阅读 · 24 评论 -
XL, an extensible programming language, implements concept programming
XL的特色在于你可以定义新文法。如: function Factorial (N : integer) return integer written N! is if N = 0 then return 1 else return N * (N-1)! 这样,你就可以用 N! 来表示 Factorial(N) 这样一个函数调用,颇为有原创 2009-07-29 12:04:00 · 1309 阅读 · 0 评论 -
CERL2 系列3:CERL既是网络库也是操作系统
我不是在标题党的拥趸。做 cerl/async 就是在做操作系统,这是我和共同开发 cerl 的伙伴们的共同认识。 对于一个适应服务器开发的操作系统,最重要的无非是3件事情:进程管理IO管理内存管理这3件事情我们都自己做了。 首先进程管理。尽管Windows提供了Fiber,Linux也有libucontext库。但是它们并不是操作系统中的“主角”。在当前的原创 2010-01-12 23:44:00 · 5987 阅读 · 8 评论 -
CERL2 系列2:网络编程该用同步还是异步?
在C/C++中,libevent、boost asio 这两个网络库都采用异步编程模型,当IO完成事件发生时,调用一个回调函数处理它。这种编程模型有很好的IO吞吐量。但是付出的代价也很大:丑陋的代码。应用程序逻辑被一个个回调函数切割得支离破碎。复杂的内存管理。一个不小心,就有可能出现回调函数执行的时候,相应的内存已经被释放。调试困难。由于函数被切割,Debug的时候,代码执行顺序不原创 2010-01-12 01:18:00 · 8081 阅读 · 65 评论 -
CERL2 系列1: Hello,CERL2!纤程!
CERL2 经过一段时间的发展,已经稳定下来,是时候揭开它的面纱了。和 CERL2 最初设想并不一样,CERL2 最终没有成为一种语言,它在 CERL 上进行了编程模型的演化,并且形成了多个子库。最主要的两个子库为 async 和 venus。最底层的是 async,它需要针对不同的平台进行包装,以此形成一个网络层。你可以 拿 async 和 boost asio 类比,两者确实是类似的东西,只原创 2010-01-08 01:38:00 · 10681 阅读 · 6 评论 -
CERL2 系列4:CERL体系与框架概览
在《CERL2 系列1: Hello,CERL2!纤程!》中,我们提到:CERL2 在 CERL 上进行了编程模型的演化,并且形成了多个子库。最主要的两个子库为 async 和 venus。 我们这一篇中,将更加详细地描述 CERL2 的整体框架体系。先一图概括之: async原创 2010-01-17 12:55:00 · 6074 阅读 · 6 评论 -
CERL2 系列6:SDL,面向数据流的网络协议
在《CERL2 系列5:SDL与我对网络协议的思考》一文中,尽管我对 SDL 的来龙去脉做了介绍,但是我发现还是遗漏了非常重要的内容。朋友们可能会问,SDL看起来不就是一个普通的IDL(接口描述语言)吗,为什么不直接沿用一个现成的标准呢? 很多时候,看似相似的东西却会是貌似神不是。正是因为我觉得IDL并不符合我对网络接口协议的观点,所以才有了 SDL。 首先,多数 IDL 都是面向原创 2010-01-20 01:37:00 · 6054 阅读 · 20 评论 -
CERL2 系列5:SDL与我对网络协议的思考
网络编程中,网络协议是最最关键的角色。这就像我在客户端编程的时候,最关心模块接口一样。网络协议是客户端(B或C)与服务端(S)之间的交互接口。 我关注网络协议的时候,和很多人关注的面是不同的。不少人问我,你喜欢用Soap,REST,还是喜欢自己定义网络协议?喜欢用XML,还是json?从某种意义上来说,我不关心这些。对我来说,这些只是网络协议的载体。 提到网络协议,我们应该意识到,原创 2010-01-18 23:50:00 · 7031 阅读 · 26 评论 -
【CN-Erlounge-IV】会议议程安排
以下是会议议程安排。更多信息访问: http://ecug.org/2009-11-6 讲师入住酒店会务人员&讲师小聚2009-11-7 08:30 ~ 09:00 签到09:00 ~ 09:15 开场09:15 ~ 10:15 成立涛 - Erlang开发实践10:15 ~ 10:30 提问&交流10:30 ~ 11:30原创 2009-10-12 10:09:00 · 1918 阅读 · 0 评论 -
【CN-Erlounge-IV】关于CN-Erlounge-IV大会延期的通告
经过慎重考虑,并经过ECUG.CORE(会务组)和讲师们的协商讨论,特将CN-Erlounge-IV会议的时间延期到11月7日~8日。关于更多本次大会的信息,请访问官网:http://ecug.org/理由如下:与 CSDN SD2、哲思峰会时间冲突。有一些 Erlounge 的讲师同时也是CSDN SD2、哲思的讲师。尽管讲师都表示会赶过来,但是出于讲师身体状况的考虑原创 2009-09-27 01:08:00 · 1725 阅读 · 0 评论 -
[CN-Erlounge-IV] 目前已经报名讲师及预选Topic列表
整理了目前已经报名的讲师及其预选的Topic列表 - http://ecug.org/lecturer/讲师报名截止时间还有15天,欲报从速。当前是讲师Topic征集阶段,以下是目前已经收集的讲师及其预选的Topic(按报名次序排列)。 姓名单位博客Twitter演讲主题许式伟盛大网络(上海)原创 2009-09-02 10:23:00 · 2111 阅读 · 0 评论 -
CERL 2.0 预告:Erlang Style Concurrency + 状态机
开始构想CERL 2.0版本。特点:Erlang Style Concurrency(Erlang 风格并发)+ 状态机,突破 Erlang Style Concurrency 模型的缺陷。在目前的 CERL 库 + SDL接口描述语言的基础上,CERL 2.0 还将是一门语言(用于实现的真正意义上的语言),拥有自己的语法...关于 Erlang Style Concurren原创 2009-09-01 11:53:00 · 2401 阅读 · 0 评论 -
shared_ptr四宗罪
本文转载自:http://blog.liancheng.info/?p=85 转载的目的是:本Blog连载了多篇内存管理相关的文章,由于我本人比较排斥智能指针(在大学的时候写过几个,当时觉得这种方式很“神奇”,但是实际工程中绝少用过),所以此类内存管理方式并未深入探讨,这一篇弥补了这个不足。我不久前写过一篇“C++良好代码风格之我见 - 兼谈boost的工程实用价值”,里面概要转载 2009-06-24 22:04:00 · 10901 阅读 · 5 评论 -
CERL: 用PHP或Python来做服务器
到现在,关于CERL的故事终于看起来慢慢多起来了:Erlang vs. CERL - CERL简介注释及文档的故事CERL SDL 语法及类型系统CERL: PHP或Python调用C++实现的服务器之前我们已经谈到C++做高性能的服务器,然后PHP或Python作为前端,将服务展现给客户。这是一种比较正常的逻辑。今天的内容可能稍微偏门一点,谈谈基于CERL,用PHP或原创 2009-08-26 06:26:00 · 4333 阅读 · 0 评论 -
Erlang vs. CERL - CERL简介
Erlang vs. CERLErlang众所周知,这里不介绍了。其优势在于:最简洁精练的分布式模型 Node, Process, Mail (Message)最优雅的错误处理模型:速错(Fail fast) 如果出现任何异常,立即死掉GenServer编程框架 程序代码风格完全一致,便于交流轻量级的进程 可以尽可能地原创 2009-06-19 00:00:00 · 8082 阅读 · 27 评论 -
Stdext Allocators Graph
这两幅图很棒,具参考意义,转帖下。出处:http://blog.krzycube.net/stdext-allocators-graph/ --- 从2006年到2009年初,虽然WINX的作者(@xushiwei)大多时间就在我身边,不过我一直对这东西兴趣缺缺。当然我的懒惰占了95%以上的原因,另外1%是因为一直在做后台,所以不怎么会想起WINX,即便偶尔写个小工具我也会对比以后转载 2009-08-24 22:22:00 · 2363 阅读 · 0 评论 -
CERL: PHP或Python调用C++实现的服务器
周末2天,一天写了个php_cerl模块,完成cerl的php client,一天写了个pycerl模块,完成cerl的python client。呵呵,C++的server可以用php或者python来调用了。 对于我们之前用CERL写的HashServer这个服务器(一个很简单的样例,代码参阅:Erlang vs. CERL - CERL简介),其PHP写的Client样例如下:<原创 2009-08-24 11:33:00 · 3756 阅读 · 3 评论 -
CERL SDL 语法及类型系统
我们目前有3篇很朦胧的文章介绍到了CERL:计划在C++建立仿Erlang式的分布式并行机制 (发表在CERL做出来之前)Erlang vs. CERL - CERL简介 (非常粗浅的CERL预览,以至于很多人认为CERL是一个RPC)注释及文档的故事 (同事眼中的CERL,侧面记录了CERL的诞生过程)本文打算深入一点,谈谈CERL的一个核心内容:SDL语法及其类型系统。原创 2009-08-14 01:24:00 · 4558 阅读 · 4 评论 -
注释及文档的故事
出处:http://blog.krzycube.net/interface_func_comments/--- 昨晚从会议室出来,发现有几位在金山时的同事(@HanTuo , @lidaobing , @hangzhupeng , @wangdong)在twitter上讨论关于接口注释的问题,整理如下,相应回复的紧贴一起,就省去了twitter中多级RT吧:HanTuo: 实在不喜欢代转载 2009-08-06 16:10:00 · 4547 阅读 · 7 评论 -
自动化单元测试的意义
自动化单元测试的意义出处作者:许式伟 写于:2005年3月 背景:WPS Office 2005 (开发代号: V6) 原文:why-unit-test.pdf (pdf格式)目录 自动化单元测试的重要特征 单元测试的项目意义 单元测试对设计的意义 cppunit for v6 将测试案例写在dll中常规测试原创 2008-02-19 08:37:00 · 4938 阅读 · 0 评论 -
VisualFC - WTL/WinxGUI可视化开发环境
WinxGui的团队成员之一,VisualFC(原名为:FreeCode) 作者,近日发布了WTL/WinxGUI可视化开发环境VisualFC的重要更新。详细参见:http://www.winxgui.cn/blog/?p=171原创 2007-11-22 14:04:00 · 4329 阅读 · 0 评论 -
C++内存管理变革(7):基于ScopeAlloc的STL容器
C++内存管理变革(7):基于ScopeAlloc的STL容器许式伟2008-2-4来由在前文(请参阅《C++内存管理变革(6):通用型垃圾回收器 - ScopeAlloc》),我们介绍了ScopeAlloc。既然我们称之为一个通用型的GC Allocator,那么这里我们就谈谈如何用ScopeAlloc来改造STL的容器,它们包括:std::list, std::map,原创 2008-02-04 15:03:00 · 5062 阅读 · 5 评论 -
驳“C语言已经死了”
驳“C语言已经死了”许式伟2007-1-7 现在,有很多C/C++程序员总是自命不凡,看不起其他开发人员。其实,或许别人更看不起他呢!>> 有偏见的永远只是个体,而不是群体。作者加了后面那句,无疑证明有偏见的不是C/C++程序员,而正是他自己。 学生时代,我也曾醉心于C/C++,但时至今日,始终无法写出无懈可击的C++代码,所以我始终认为我不会C/C++。这些年,我一直在寻找编写C原创 2007-01-07 17:40:00 · 26566 阅读 · 74 评论