- 浏览: 33089 次
- 性别:
- 来自: 大连
最新评论
文章列表
定单簿(Order Book) 的一种实现
定单簿的简单业务背景介绍
最近笔者需要根据业务需要实现一个“快速”的定单簿,首先在此啰嗦一下什么是“定单簿”和有关“定单簿”的一些简单业务场景描述。我们都知道在股票交易的 ...
泛化的bind实用性很强,支持将泛化函数(函数、函数指针、仿函数、与成员函数)与运行期实参的动态绑定;在实际工程中也经常作为基础工具集之一被频繁地使用;我计划投入一定的精力,仔细阅读boost库中的基础工具集的代码实现(bind是第一个);旨在了解这些工具的内部实现机理同时也提高下自己的C++语言泛型编程技术,以备后续的实际工程中使用;
2005年,Andrei Alexandrescu就在他的C++巨著《C++设计新思维中》中的5.10节中提出了泛型化的函数绑定;bind的实现目标非常明确,就是在运行期实现针对泛化函数任意类型、任意个数的实参进行绑定;形式如下:
bind(f, ...
再探小型对象分配技巧(Small-Object Allocation)
/*
* References, 参考文献:
* [1]. Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
* Patterns Applied". Copyright (c) 2001. Addison-Wesley.
*
* 本文研究的源代码取自loki库SmallObj.h & SmallObj.cpp
*/
#include <boost/progr ...
Templates使用技巧基础
- 博客分类:
- C++
模板使用技巧基础
这篇文章主要记下实际工程中使用模板的一些基本技巧,其中主要包括typename关键字的使用,定义模板成员函数,定义嵌套类模板,双重模板类型参数(template template parameter),以及零值初始化的技巧。
一、关键字typename
关键字typename是C++标准化过程中被引入的,目的是告诉编译器模板类型参数或者其内的某个标识符是个类型。
template <typename T>
class MyClass{
public:
typename T::subtype *ptr;
... ...
};
第 ...
STL容器默认的内存分配器(std::alloc)
STL中的容器类的class templates,最后一个template parameter就是alloc,而默认值便是std::alloc。对象构造前的空间配置与对象析构后的空间释放,由<bits/stl_alloc.h>负责,SGI设计此库时,主要有以下几个考虑因素:
向heap申请空间
考虑线程安全
内存不足时的应变措施
考虑因“小内存区块”的释放后可能造成的内存碎片(fragment)问题
考虑到当前目标是要了解std::alloc的功能逻辑与实现结构,所以为了简单明了一些,(2.)线程安全先排除不做考虑。 ...
cppcms中的session
- 博客分类:
- CPPCMS
问题:
如果打开cppcms的reference文档,在吹泡泡cms::sessions namespace下存在如下几个类:
class encryptor; // 泛型session cookies 加密接口.
class encryptor_factory; // 顾名思义,建立新加密器的接口
class session_cookies; // 使用加密的或者签名的cookies的session_api实现。
class session_dual; // session_api的客户端和服务器端存储实现
class session_si ...
理解cppcms中的form
- 博客分类:
- CPPCMS
问题:
cppcms中form如何使用呢?官网上,除了教学篇-5之外,再无其他关于form使用的帮助文档了。当然,还有另外两种办法,就是看reference api文档和源代码。但是每次在使用form之前,或者长时间不用cppcms都使用后面两种办法自 ...
问题:如何理解CPPCMS application中的dispatcher()和mapper().
#include <cppcms/application.h>
#include <cppcms/applications_pool.h>
#include <cppcms/service.h>
#include <cppcms/http_response.h>
#include <cppcms/url_dispatcher.h>
#include <cppcms/url ...
初识CPPCMS中的template概念
- 博客分类:
- CPPCMS
问题描述:
cppcms事实上一个mvc的web架构,其中一个重要组成部分就是view-html rendering系统。cppcms的网页是用特殊的template语言编写,编写后的网页可以由翻译器(cppcms_tmpl_cc)翻译成c++代码,最后可以由编译器编译成shared object ...
每每安装开源软件的时候,最头痛的就是编译安装的过程中出现了编译错误。有时看到大篇幅的编译错误时,就不知道该从哪下手修正错误了。这也许就是开源软件相对于商业软件难于普及的一个重要原因吧。
问题描述:cppd ...
问题描述:按照官网的步骤,进行如下操作
1. tar xzvf cppcms-1.0.1.tar.gz
2. cd cppcms-1.0.1
3. mkdir build
4. cd build
5. cmake -DCMAKE_INSTALL_PREFIX=/opt/local ..
编译过程中,出现了如下错误信息
Linking CXX shared library libbooster.dylib
Undefined symbols for architecture x86_64:
...
一、class template定义
#include <vector>
#include <stdexcept>
template <typename T>
class Stack {
private:
std::vector elems;
public:
void push(const T&);
void pop();
T top() const;
bool empty() const {
return elems.empty(); ...
Function Templates
- 博客分类:
- C++
一、定义 Function Template
template <typename T>
inline const T& max(const T& a, const T& b)
{
return a<b ? a : b;
}
二、参数推导
当使用某一类型的参数调用max()时,模板参数(template parameter)将以调用参数的类型确 ...
在前三篇中我说明了有效创建一个类的前4个考虑步骤,现在就差最后一步了,考虑创建与类定义有关的异常类。
异常的概述
用户调用某个函数,函数可以在运行时检测到错误,但是不知道如何处理;用户呢,实际上知道在遇 ...
4. 类成员函数(改变第2种的)
设计类改变成员变量的成员函数,需要考虑的因素非常多,但是这些因素大致可以分为两类:一类是比较通用的,另一类呢就是有类体系的前提;
(1)是否真需要成为成员函数
(2)是否有必要返 ...