分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)
二. 分布式计算(Map/Reduce)
分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce 框架所设计的分布式框架。在Hadoop中,分布式文件系统,很大程度上,是为各种分布式计 算需求所服务的。我们说分布式文件系统就是加了分布式的文件系统,类似的定义推广到分 布式计算上,我们可以将其视为增 ...
利用堆排序实现学生成绩管理
1 引言
排序是计算机数据处理及其它许多软件系统中常用的一种操作。排序的目的通常是为了便于查找或为了适应某些查找算法的需要。例如,在统计高考成绩的系统中,要产生几个表。第一个表按考生的考号从小到大的顺序,列出所有考生的成绩;第二个表按考生的考试成绩从高到低的顺序,列出所有考生的成绩等等。在这样的系统中 ...
Muduo 网络编程示例 - 前言
我将会写一系列文章,介绍用 muduo 网络库完成常见的 TCP 网络编程任务。目前计划如下:
UNP 中的简单协议,包括 echo、daytime、time、discard 等。
Boost.Asio 中的示例, 包括 timer2~6、chat 等。
Java Netty 中的示例,包括 discard、echo、uptime 等,其中的 discard 和 echo 带流量统计功能。
Python twisted 中的 ...
C++中按值返回和返回值优化代码
C++和C语言相比,最为人诟病的就是其性能问题,通常一条C语言经编译器解释后,可以固定转换成5—10条汇编语言,但是一条C++语言,就没有这么幸运了,可能会是3条汇编语言,也可能是300条。C++影响性能的原因很多,其中一个就是临时对象的创建和销毁。这里我简述一种减少创建临时对象的方法--返回值优化问题
很多时候,函数 ...
《Effective C++》读书笔记10:令operator=返回一个引用指向*this
一般的连锁赋值方式:
int x, y, z;
x = y = z = 15;//等价于x = (y = (z = 15));
当我们要实现自己的operator=操作时,就需要返回一个引用,该引用指向了操作符左 侧的参数;
1 class Widget
2 {
3 public:
4
5 Widget& operator=(const Widget& rhs)
6 {
7
8 return *this;//返回*this
9 }
10 };
这 ...
C++:模板(template)中typename的使用方法
声明template参数时, 前缀关键字class和typename可以互换;
使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用.
从属名称(dependent names): 模板(template)内出现的名称, 相依于某个模板(template)参数, 如T t;
嵌套从属名称(nested dependent names):从属名称在class内呈嵌套装, 如T::cons ...
1000*1000的矩阵A、B、C,C=A*B
效率可以对比matlab
int m;
int i, j, k;
double r;
double *A, *B, *C;
m = 1000;
A = new double[m*m];
B = new double[m*m];
C = new double[m*m];
//置初值
for (i=0; i
这个程序比matlab要慢1倍,我曾到网上搜索到一个fortran程序(分块dgemm ),其速度比matlab慢0.5倍左右,不知道有谁能写一个能与matlab媲美的程序 ...
Bjarne Stroustrup讲述语言的演变
目录
对语言的看法
语言发展趋势
方法和最佳实践
展望 未来
书籍和电话
偶尔, 进化中的飞跃会迅速改善并重塑整个工程领域。 在软件开发领域,C++ 编程语言的诞生就引发了此类飞跃。这种飞跃并非此语言本身所固 有的。在 C++ 之前即已存在面向对象的语言(如 Simula67和Smalltalk)。但由于 C++ 是在 C 编程语言的基础上构 ...
C/C++开发应用:回文字符串
回文:回文就是正读反读都一样的字符串,例如:"radar","able was i ere i saw elba" 和 "a man a plan a canal panama"(如果忽略空格) 。
请编写递归函数testPalindrome,在数组中的字符串为回文时返回true,否则返回false. 函数忽略字符串中的空格和标点符号。
#include
/* 字符串 一半数 总个数*/
int charf(char d[ ...
C/C++程序的内存分配方式
1.内存分配方式
内存分配方式有三种:
[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个 运行期间都存在。例如全局变量,static变量。
[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执 行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令 ...
《Effective C++》读书笔记09:绝不在构造和析构过程中调用virtual函数
首先明确一下,对于一个继承体系,构造函数是从基类开始调用了,而析构函数则正 好相反,从最外层的类开始。
对于在构造函数中调用virtual函数,先举个例子:
1 class Transaction //所有交易的基类
2 {
3 public:
4 Transaction();
5 virtual void logTransaction() const = 0;//日志记 录,因交易类型的不同而有 ...
C++打印背靠背图案
打印下列图案:
背靠背
#include
using namespace std;
int main()
{
int n=10;
for(int i=1; i
C++:类的成员变量 声明顺序 与 初始化顺序 相同
类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;
否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量;
同时GCC, 也会发出警告, 如: 'class::m_xxx' will be initialized after [-Wreorder]
代码:
/*
* BInsertSort.cpp
*
* Create ...
C++:标准异常报错
call to 'std::exception::exception(const char [n])'
当使用"throw std::exception("XXX");"时, 在VS(visual studio)中可以编译通过;
但gcc(4.8.1)中, 需要使用标准异常进行处理, 修改为:
logic_error ex("XXX");
throw std::exception(ex);
即可.
更多精彩内容:http://www.bianceng.cn/Programming/cplus/ ...
关于几何关系的代码说明
很多朋友需要这方面的资料,尤其是代码。我在陆续挖掘和整理的过程中,推翻了自己的 开源的设想,形成了一个库——cgal32.dll(win32版,标准C库)。
一、 这是基于几个原因:
1、库中个别地方代码采用了非商业开源的代码。我没有权利去 公开它们。
2、只有不开源,我写的库大家才能免费使用。免除大家在道德和法律上 面临 ...
拷贝构造函数和运算符重载
拷贝构造函数应用的场合由以下几个方面:
1 函数的参数是一个对象,并且是值传递方式
2 函数的返回值是一个对象,并且是值传递方式
3 用一个对象初始化另外一个对象
由此,当函数的参数或者返回值为一个对象时,使用的时候要小心,因为值传递的时候执行的是位拷贝,并不会调用对象的构造函数,也就是说生成的临时对象可能不 ...
C++回调函数(callback)与仿函数(functor)的异同
回调函数(callback)与仿函数(functor)很多时候从用途上来看很相似,以致于我们经常 将它们相提并论。例如:
inline bool compare(int a, int b)
{
return a > b;
}
struct comparer {
bool operator()(int a, int b) const {
return a > b;
}
};
void main()
{
std::vector vec, vec2;
...
关于vector的capacity和sizeof的疑问
c++primer中对vector容器的自增长问题进行了细致的说明,特别提到了两个成员函数: capacity和reserve。举了这样一段程序进行说明:
vector1
#include
#include
using namespace std;
int main()
{
vector vec;
print(vec);
for (vector::size_type ix=0;ix!=24;ix++)
{
...
C++的可移植性和跨平台开发[4]:硬件体系相关
这次聊的话题主要是和硬件体系有关的。比如你的程序需要支持不同类型的CPU(x86、SPARC、PowerPC),或者是同种类型不同字长的CPU(比如x86和x86-64),这时候你就需要关心一下硬件体系的问题。
★基本类型的大小
C++中基本类型的大小(占用的字节数)会随着CPU字长的变化而变化。所以,假如你要表示一个int占用的字节数, ...
面向对象语言概论(三)
传统的基于类的面向对象语言的一个主要特点就是inheritance, subclassing和subtyping之间的密不可分的联系。很多的面向对象语言的语法,概念,就是从这三者而来的。比如说,通过subclassing, 你可以继承父类的一些方法,而同时你又可以在子类中改写父类的方法。这个改写过的方法,通过subtyping, subsumption, 又可以从一个 ...