<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>StdExt/TPL/WinxGui/Erlang/Erlana - 许式伟的专栏</title><link>http://blog.csdn.net/xushiweizh/</link><description /><dc:language>zh-CN</dc:language><lastUpdateTime>Wed, 23 Jul 2008 01:58:00 GMT</lastUpdateTime><ttl>60</ttl><item><dc:creator>许式伟</dc:creator><title>stdext Relation: 数据表(DataTable)</title><link>http://blog.csdn.net/xushiweizh/archive/2008/07/23/2693385.aspx</link><pubDate>Wed, 23 Jul 2008 01:53:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/07/23/2693385.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2693385.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/07/23/2693385.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2693385.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2693385</trackback:ping><description>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（哈希表）作为索引表是可能的。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2693385.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title> TPL + Json + PHP = ?</title><link>http://blog.csdn.net/xushiweizh/archive/2008/07/07/2620921.aspx</link><pubDate>Mon, 07 Jul 2008 12:13:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/07/07/2620921.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2620921.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/07/07/2620921.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2620921.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2620921</trackback:ping><description>这里，JSPT 是我发明的名词。它代表了 Json PHP Transformations = Json (Data) + PHP (Transformation Template)。为什么有这个词，是因为这个世界上还有一个著名的词：XSLT = XSL Transformations = XML (Data) + XSL (Transformation Template)。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2620921.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>TPL文法(1)：基础文法（TPL Basic Syntax）</title><link>http://blog.csdn.net/xushiweizh/archive/2008/07/03/2606892.aspx</link><pubDate>Thu, 03 Jul 2008 01:44:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/07/03/2606892.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2606892.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/07/03/2606892.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2606892.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2606892</trackback:ping><description>TPL顾名思义，是文本处理库（或者你也可以理解为文本处理语言Text Processing Language，因为尽管它依附于C++语言，但是实际上你使用它时并不按照C++的思维考虑问题）。TPL目前主要关注文本处理中I的问题。即将文本Parse为内存数据结构（DOM）。TPL可以做什么？TPL有很强的适应性。可以做简单的如进行文本分割，复杂的可以做一个语言的编译器。TPL的典型使用场景：    * 字符串分割    * 信息抽取（Information Retrieval）    * 命令行分析（Command Line Analyzer）    * 编译器（Compiler）    * …TPL-1.0.00TPL的核心目前主要包含：    * tpl/RegExp.h - 正则匹配文法    * tpl/Emulator.h - 一个通用虚拟机 (从根本上来讲，虚拟机和文本处理并无相关，但是一般虚拟机用于实现一门语言，而实现一门语言必然需要进行文本处理)TPL的扩展组件，包括:    * tp&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2606892.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>文本处理库 tpl-1.0.00 正式发布！</title><link>http://blog.csdn.net/xushiweizh/archive/2008/06/24/2580610.aspx</link><pubDate>Tue, 24 Jun 2008 00:27:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/06/24/2580610.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2580610.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/06/24/2580610.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2580610.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2580610</trackback:ping><description>TPL的核心目前主要包含：    * tpl/RegExp.h - 正则匹配文法    * tpl/Emulator.h - 一个通用虚拟机 (从根本上来讲，虚拟机和文本处理并无相关，但是一般虚拟机用于实现一门语言，而实现一门语言必然需要进行文本处理)TPL的扩展组件，包括:    * tpl/c/Lex.h - C/C++词法    * tpl/boost/Lambda.h - TPL与Boost Lambda的粘合剂    * tpl/ext/Calculator.h - 计算器辅助模块（计算器定义：一门简单语言，它不能定义由用户来定义函数/过程，但可以有变量）&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2580610.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>bcp: 给boost瘦身</title><link>http://blog.csdn.net/xushiweizh/archive/2008/06/20/2569778.aspx</link><pubDate>Fri, 20 Jun 2008 16:22:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/06/20/2569778.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2569778.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/06/20/2569778.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2569778.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2569778</trackback:ping><description>boost是一个非常优秀的库。问及多数C++程序员为什么最终没有选择Boost的原因，均回答：Boost太大，过于Heavy。是的。这也是我多数在用与不用Boost之间徘徊的原因。现在给大家介绍的这个bcp也许可以部分消除这样的不良影响，让我们有机会得以使用Boost这样优秀的库。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2569778.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>TPL: 一个新的正则表达式（regex）库</title><link>http://blog.csdn.net/xushiweizh/archive/2008/05/29/2491947.aspx</link><pubDate>Thu, 29 May 2008 01:23:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/05/29/2491947.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2491947.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/05/29/2491947.aspx#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2491947.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2491947</trackback:ping><description>C++ 中正则表达式（regex）库已经很多。光 boost 中就有3个：regex、spirit、xpressive。那么我们为什么还需要一个新的呢？多数正则表达式库都需要一个编译（compile）过程。即：通过解释一个正则表达式的字符串（pattern）来生成该正则表达式的内部表示（字节码）。例如 boost regex 就是这样。这类我们称之为动态正则表达式库。spirit、xpressive 例外。他们直接通过重载 C++ 的操作符来表达一个正则表达式。在你用C++语法描述完一个正则表达式，它已经是内部表示（被C++编译器编译成了机器码）。这一类我们称之为静态正则表达式库。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2491947.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C/C++字符串处理(5)：std::deque与std::TextPool</title><link>http://blog.csdn.net/xushiweizh/archive/2008/04/04/2248739.aspx</link><pubDate>Fri, 04 Apr 2008 01:06:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/04/04/2248739.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2248739.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/04/04/2248739.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2248739.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2248739</trackback:ping><description>通过 vector, list, deque 的时间、空间性能对比，我们可以看出，应该提倡尽可能使用 deque 这个容器。特别是，如果要承受海量数据，deque 是最合适的人选了。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2248739.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C/C++字符串处理(4)：std::vector与std::StringBuilder</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/28/2224422.aspx</link><pubDate>Fri, 28 Mar 2008 02:59:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/28/2224422.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2224422.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/28/2224422.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2224422.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2224422</trackback:ping><description>std::StringBuilder 基于 std::vector 实现。所以尽管本文讨论 std::vector，但是所有的结论对 std::StringBuilder 同样有效。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2224422.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C/C++字符串处理(3)：String ADT - 字符串只是抽象数据类型</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/26/2221445.aspx</link><pubDate>Wed, 26 Mar 2008 22:31:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/26/2221445.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2221445.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/26/2221445.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2221445.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2221445</trackback:ping><description>字符串是什么？我们认为，与其说它是一个类，不如说它只是一个ADT（抽象数据类型）。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2221445.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C/C++字符串处理(2)：String - 常字符串</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/23/2210938.aspx</link><pubDate>Sun, 23 Mar 2008 21:20:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/23/2210938.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2210938.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/23/2210938.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2210938.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2210938</trackback:ping><description>StdExt的String(BasicString)，和你以前见过的所有字符串类都不太一样。它的特别之处在于，它并不维护字符串的生命周期。这可能让你诧异：居然会有这样字符串类，它并不管理字符串的生命周期。但是我们这样做了。而这的确给我们带来很多便利。例如：    * 赋值（复制）、子串（substr）是非常轻量的操作。Copy-On-Write技术完全是多余的。    * 可以将任意的线性容器（如std::vector、std::basic_string）临时转换为String（非常轻量）。参见下文中对String::cast方法的介绍。为什么String类可以不管理自己的生命周期？这就是我们StdExt的内存管理变革倡导的思想了。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2210938.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C/C++字符串处理盘点：Char*/String/StringBuilder/TextPool/Rope</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/20/2201181.aspx</link><pubDate>Thu, 20 Mar 2008 22:08:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/20/2201181.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2201181.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/20/2201181.aspx#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2201181.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2201181</trackback:ping><description>在介绍StdExt的时候，我曾经提到，STL设计精良，但是以下几块仍然设计不足（或缺失）：    * allocator（内存管理）    * string（字符串处理/文本处理）    * parallel programming（并行编程）关于内存管理，我们已经说得很多了。这里我们重点谈的是字符串处理/文本处理相关的问题。本篇是《字符串处理完整参考》这个系列的第一篇。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2201181.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C++内存管理变革(8)：Lock Free（无锁）的GC Allocator</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/05/2150806.aspx</link><pubDate>Wed, 05 Mar 2008 16:25:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/05/2150806.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2150806.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/05/2150806.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2150806.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2150806</trackback:ping><description>随着多核趋势的明朗，对软件来说，这意味一次巨变。多核时代，注定要改变计算机发展历史。在我们还在努力学习OO方法论时，须不知，一场新的颠覆性的编程革命到来了。内存管理是程序语言中的最基础的设施。如果你长期做服务端的开发，一定知道，服务器性能调优的关键在于内存管理。为什么GC Allocator是Lock Free（无锁）的？&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2150806.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>Erlang平面名字空间的缺陷及解决方案</title><link>http://blog.csdn.net/xushiweizh/archive/2008/03/01/2137246.aspx</link><pubDate>Sat, 01 Mar 2008 13:20:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/03/01/2137246.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2137246.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/03/01/2137246.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2137246.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2137246</trackback:ping><description>问题缘起：参阅 Erlang Question 邮件列表上的讨论（http://groups.google.com/group/erlang-questions/browse_thread/thread/fed4e293a015ce8）。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2137246.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title> 自动化单元测试的意义</title><link>http://blog.csdn.net/xushiweizh/archive/2008/02/19/2104631.aspx</link><pubDate>Tue, 19 Feb 2008 08:37:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/02/19/2104631.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2104631.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/02/19/2104631.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2104631.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2104631</trackback:ping><description>出处

作者：许式伟
写于：2005年3月
背景：WPS Office 2005 (开发代号: V6)
原文：why-unit-test.pdf (pdf格式)
目录

    * 自动化单元测试的重要特征
    * 单元测试的项目意义
    * 单元测试对设计的意义
    * cppunit for v6
    * 将测试案例写在dll中&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2104631.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>许式伟</dc:creator><title>C++内存管理变革(7)：基于ScopeAlloc的STL容器</title><link>http://blog.csdn.net/xushiweizh/archive/2008/02/04/2083718.aspx</link><pubDate>Mon, 04 Feb 2008 15:03:00 GMT</pubDate><guid>http://blog.csdn.net/xushiweizh/archive/2008/02/04/2083718.aspx</guid><wfw:comment>http://blog.csdn.net/xushiweizh/comments/2083718.aspx</wfw:comment><comments>http://blog.csdn.net/xushiweizh/archive/2008/02/04/2083718.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.csdn.net/xushiweizh/comments/commentRss/2083718.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2083718</trackback:ping><description>在前文（请参阅《C++内存管理变革(6)：通用型垃圾回收器 - ScopeAlloc》），我们介绍了ScopeAlloc。既然我们称之为一个通用型的GC Allocator，那么这里我们就谈谈如何用ScopeAlloc来改造STL的容器，它们包括：std::list, std::map, std::set, std::multimap, std::multiset。&lt;img src ="http://blog.csdn.net/xushiweizh/aggbug/2083718.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>