您正在查看 "rpc,stl,boost,泛型,模板,元编程,自动化编程" 分类下的文章 2011年11月02日 星期三 下午 3:41 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。
下面举例说明什么是一对一的数据映射。比如一个班级 |
2011年10月09日 星期日 上午 11:31
在上一篇文章中提到了Thrift的架构、传输协议(Ref),本篇文章将对Thrift的入门实例进行介绍。 分为如下5个部分: 运行环境、安装/配置、脚本文件、创建代码、运行程序。
一、开发环境(清单1) 1.操作系统 Server-Linux / Client-WinXP 2.SDK Sun JDK1.5+
3.需要的jar依赖包 |
2011年10月09日 星期日 上午 11:30
Thrift 是什么? Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的 facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言,例如: C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, Ruby, Smalltalk. 在多种不同的语言之间通信 |
2011年09月05日 星期一 上午 11:50
今天看《libstdc++ manual 20110201》中提到这个hash_map是为了向后兼容SGI/HP的代码,但是已经被废弃了,取而代之的是C++0x中的unordered_map/unordered_multimap,在tr1文件夹中(老版本的编译器一般不带这个文件夹)。
==============================================================================
|
2011年09月01日 星期四 下午 6:54 2011年09月01日 星期四 下午 3:18 http://jnb.ociweb.com/jnb/jnbJun2009.html.
Apache Thrift
by Andrew Prunicki, Senior Software Engineer Object Computing, Inc. (OCI)
Introduction
Thrift is a framework for creating interoperable and scalable services. Thrift was originally developed at Facebook, and contributed to Apache in order to foster greater use. Thrift is released under the |
2011年08月25日 星期四 下午 5:38 g++ -g -I/data5/crawler/thrift-0.7.0/thrift-0.7.0/include/thrift -L/data5/crawler/thrift-0.7.0/thrift-0.7.0/lib/ -lthrift Serv.cpp student_types.cpp student_constants.cpp Serv_server.skeleton.cpp -o server
g++ -g -I/data5/crawler/thrift-0.7.0/thrift-0.7.0/include/thrift -L/data5/crawler/thrift-0.7.0/thrift-0.7.0/lib/ -lthrift Serv.cpp student_types.cpp student_constants.cpp client.cpp -o client
Thrift可以实现C++、Java、Python等多种语言的自动生成 |
2011年08月24日 星期三 上午 10:34 2010年11月16日 星期二 下午 7:42 2010年04月01日 星期四 上午 9:53 boost库中提供了的mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁。
一种简易的构建方法如下:
首先看看mutex类,主要用到下面两种.
mutex类:
boost::mutex, boost::shared_mutex
其中mutex主要有lock与unlock方法,shared_mutex除了提供lock与un_lock方法之外,还有 shared_lock与shared_unlock方法。
lock模板
boost::uniq_lock<T |
2010年03月31日 星期三 下午 3:53 shared_from_this()是enable_shared_from_this<T>的成员 函数,返回shared_ptr<T>。首先需要注意的是,这个函数仅在shared_ptr<T>的构造函数被调用之后才能使 用。原因是enable_shared_from_this::weak_ptr并不在构造函数中设置,而是在shared_ptr<T>的 构造函数中设置。
如下代码是错误的:
|
2010年03月23日 星期二 下午 2:17 1、 概念
Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你非要做的时候才去做。
当然,这种事情在现实生活中时 |
2010年03月23日 星期二 下午 12:43 2010年03月17日 星期三 下午 4:37 在标准C++以前,都是用#include<iostream.h>这样的写法的,因为要包含进来的头文件名就是iostream.h。标准C++引入了名字空间的概念,并把iostream等标准库中的东东封装到了std名字空间中,同时为了不与原来的头文件混淆,规定标准C++使用一套新的头文件,这套头文件的文件名后不加.h扩展名,如iostream、string等等,并且把原来C标准库的头文件也重新命名,如原来的string.h就改成cstring(就是把.h去掉,前面加上字母c),所以头文件包含的写法也就变成了#include <iostream>。
并不是写了#include<iostream |
2010年03月15日 星期一 下午 2:41 头文件: "boost/utility.hpp"
通常编译器都是程序员的好朋友,但并不总是。它的好处之一在于它会自动为我们提供复制构造函数和赋值操作符,如果我们决定不自己动手去做的话。这也可能会导致一些不愉快的惊讶,如果这个类本身就不想被复制(或被赋值)。如果真是这样,我们就需要明确地告诉这个类的使用者复制构造以及赋值是被禁止的。我不是说在代码中进行注释说明,而是说要禁止对复制构造函数以及赋值操作符的访问。幸运的是 |
| | |