不得不说的一些编程技巧二

当我第一次看到使用一个字符串描述类型来创建对象时觉得很稀奇,我在猜想,是不是内部使用超多的case,通过判断字符串来创建对应的对象。但是这样的情况是静态的,所有的字符串都已经被预置了,当有一个新的类型出现,那么怎么又神奇的扩展了呢?伪代码如下:Animal *dog = Animal::Create (“Dog”); // 使用字符串创建Dog类型的Animal实例。Animal *cat = Animal::Create(“Cat”); // 同上 如果Animal::Create不能修改,那么怎么让它能够创建Fish类型的Animal呢?所有的这...
c++ | 2011-10-28 22:35 | 阅读 1388 次 | 评论 1 条

不得不说的一些编程技巧

一个人会一门语言不难,难的是会玩出花样,这就是技巧,当然玩的人多了这些技巧也就不怎么稀奇了,哈。 我就先说说一个叫“引用计数”的东西。顾名思义,就是记录一个对象被引用了几次。那么它的出发点是什么,这可能需要一个场景来描述。假设你有一个叫A的对象,在T1线程中被创建,之后可能会在T2线程或者T3线程中被使用。当然对象A是线程安全的,可以再任何线程中被安全使用,但问题是对象A该由谁来销毁?假如说T1和T2已经不需要使用对象A了,它们想留给T3线程来销毁,因为T3线程可能还在使用。这都是假设,反过来T3线程可能也不需要使用对象A了,那么它怎么知道T1和T2线程也不...
c++ | 2011-10-27 21:56 | 阅读 1586 次 | 评论 10 条

Jinlog 之 LogLevel 的实现

Jinlog是我对Log4cplus进行仿制的一个项目,现在我说说我的LogLevel实现方案。 在log4cplus中LogLevel实际上是int类型的别名,并且定义了一些常用的日志级别。按照日志事件程度,最低的日志级别为TRACE_LOG_LEVEL,意味着这是追踪式的日志,会有频繁的日志事件。最高的日志级别为FATAL_LOG_LEVEL,意味着这是非常严重的日志,基本上该日志事件在人品很差的情况下出现。另外还有开关式的日志级别,不作为日志事件来使用,那就是OFF_LOG_LEVEL和NOT_SET_LOG_LEVEL。所有这些日志级别都有一个常量值,比如OFF_LOG_...
系统辅助 | 2011-10-24 21:37 | 阅读 1128 次 | 评论 0 条

蛋疼的log4cplus源代码

在一个夜黑风高的深夜,我发现我的程序少了一样东西,一个用来记录程序运行过程和状态的东西。呃,是日志系统。所以我去网上搜索了一番,发现有好多开源的日志系统:log4cplus、log4C、log4cxx等等。经过比较我觉得log4cplus比较符合我的口味,因此下载了log4cplus的源代码。 对刚入手的log4cplus一筹莫展,据网上的教程说log4cplus具有以下几个元素:hierarchy、appender、logger、layout、filter、loglevel和loglog等等。另外log4cplus支持读取配置文件来动态创建各个元素。这的却很诱人,但是网上的...
系统辅助 | 2011-10-23 22:10 | 阅读 4602 次 | 评论 0 条
浏览14400次