自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhougb3的博客

It's been kind of tough, but tough people last.

  • 博客(20)
  • 问答 (5)
  • 收藏
  • 关注

原创 Basic Communication Operations(基本通信操作)

一对多广播以及多对一规约一对多广播:广播结束后会有p个原始数据的副本。 多对一规约:所有进程的数据通过一个相关的操作符结合起来,累加到一个目标进程中的缓冲区。环或线性阵列使用一种递归加倍的技术,在logp步广播完成。每一步都要仔细选择消息发送的目标节点,以免出现阻塞。 格网行和列分别看成线性阵列超立方体看成一个d维的格网平衡二叉树每一个中间节点是...

2018-03-31 16:22:40 646 1

原创 Principles of Parallel Algorithm Design(并行算法设计原则)

并行算法讲述的是怎么用多处理器来解决问题。设计一个并行算法包括以下某些步骤: Identifying portions of the work that can be performed concurrently. Mapping the concurrent pieces of work onto multiple processes running in parallel....

2018-03-31 14:04:34 1095 1

原创 《大话设计模式》有感 设计模式初学

不要用计算机的思维去思考问题,而是要用面向对象的思维去思考问题。这样才可以做到易维护,易扩展,易复用。使用封装,继承,多态将程序的耦合度降低。(面向对象的三大特性)逻辑与显示分开,降低耦合度(将逻辑封装起来)。松耦合,以计算器的实现为例。定义一个操作类,加减乘除分别继承该类。这样子要增加一个新的运算时不会影响到原来的代码。简单工厂模式使用一个单独的类作为创建实例的过程,这...

2018-03-27 18:19:37 243

原创 数据库引擎

Innodb引擎 Innodb引擎提供了对数据库ACID(原子性,一致性,隔离性,持久性)事务的支持,并且实现了SQL标准的四种 隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这篇文章。该引擎还提供了行级锁和 外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL 运行时Innodb会在内存中建立缓...

2018-03-26 23:17:28 143

原创 算法整理(一)排序

冒泡排序:void bubble_sort(vector<int> & nums) { int n = nums.size(); for (int i = 0; i < nums.size(); ++i)

2018-03-23 15:12:50 400 1

原创 Parallel Programming Platforms(并行编程平台)

串行计算机由处理器,内存,和数据通道组成。任何一部分都可以成为处理速度的瓶颈。多处理器,多内存,多数据通道是一种有效的解决方法。(多重性可以隐藏,也可以提供给程序员)。在对代码并行化之前,要先优化串行代码的性能。指令执行的五个阶段:取指令,解指令,执行指令,内存访问,写回流水线: 流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。超流水线:就是...

2018-03-17 16:56:19 1289 1

原创 操作系统

进程五状态:创建,运行,等待,就绪(等待CPU时间),终止当多个进程要修改同个变量时,那段要修改变量的代码称为临界区。我们要保证同一时刻只有一个进程进入临界区。如果使用算法实现,我们可以通过一个while循环和一个整型变量实现,但是要让用户自己实现太不可靠。所以我们可以用信号量来上锁就可以了。信号量就不要采取忙式等待了,而是用一个阻塞队列。死锁必要条件:一共四个:互斥、占有并等待、非抢...

2018-03-14 14:43:22 129

原创 C++11多线程编程系列(二)实战

C++11 新标准中引入了多个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex&amp

2018-03-13 12:16:02 7079

原创 C++回顾之模板与泛型编程

OOP能处理类型在程序运行之前都未知的情况;而在泛型编程中,在编译时就能获知类型了。编译器会根据类型生成相应的模板实例。unsigned不加类型名时,默认表示无符号整型。非类型模板参数函数模板和类模板成员函数的定义通常放在头文件中。一个类模板的成员函数只有当程序用到它时才进行实例化。在一个类模板的作用域内,我们可以直接使用模板名而不必指定模板实参。当我们在模板外定义成员时,必须记住我们...

2018-03-11 13:15:53 168

原创 C++回顾之面向对象程序设计

核心思想:数据抽象,继承和动态绑定(一定程度上忽略类型的区别)。虚函数:基类希望它的派生类各自定义适合自己的版本,则将函数声明为虚函数。函数声明前加上virtual 派生类中实现虚函数时在函数声明尾加上override,前面可以加上virtual也可以不加。一旦某个函数被声明成虚函数,则在所有派生类中它都是虚函数。protected:派生类有权访问该成员,但是禁止其他用户访问。虚函数的解...

2018-03-11 10:45:00 145

原创 C++回顾之动态内存

每个程序的内存空间静态内存:局部static对象,类static数据成员以及定义在函数体外的变量栈内存:函数内的非static变量堆:动态分配(程序在运行时分配的对象,生存期由程序控制) shared_ptr的使用//也可以使用autoshared_ptr<string> p = make_shared<string>(10, '9');每个shared...

2018-03-10 15:36:28 140

原创 C++回顾之泛型算法(二)

谓词概念解释:谓词是一个可调用的表达式(可能是一个函数),其返回结果是一个能用作条件的值。一元谓词表明这个谓词只接受一个参数(函数只有一个参数)二元谓词表明这个谓词只接受两个参数(函数只有两个参数) 算法谓词, 即标准库算法传递的参数, 可以指定算法的操作, 如std::sort, 默认是从小到大, 通过谓词可以修改从大到小. 常见的五种谓词: 函数,函数指针,lambda表达式,...

2018-03-08 19:47:07 174

原创 C++回顾之顺序容器

顺序容器类型:vector deque(双端队列,也可快速随机访问)list(双向链表)forward_list(单向链表) array(比内置数组更安全) stringstring 和 vector 都是将元素保存在连续的内存空间。快速随机访问,但插入删除就很慢。应该使用标准庫容器,而不是原始的数据结构,如内置数组。元素初始化器(295页)forward_list迭代器不支持递减运算符...

2018-03-08 16:43:38 120

原创 C++回顾之IO

IO类型在三个独立的头文件中定义: iostream定义读写控制窗口的类型; fstream定义读写已命名文件的类型; sstream定义读写存储在内存中的string对象;IO对象无拷贝或赋值,读写一个IO对象会改变其状态,因此不能为const。确定一个输入符合要求的最简单方法: int temp = 0; //当输入的是字符的话就不会执行if语句。 if...

2018-03-08 15:15:47 160

原创 C++回顾之类

定义在类内部的函数是隐式的inline函数。常量成员函数:默认情况下隐式的this的类型是指向类类型非常量版本的常量指针,即自身是常量,但是指向的对象不是常量,为了使得this能绑定到一个常量对象(如const),则在函数后面加上const。但是这样子就不可以改变调用它的对象的数据成员。#include <iostream>using namespace std;cla...

2018-03-08 14:22:16 157

原创 C++回顾之函数

局部静态对象:第一次经过对象定义语句时初始化,之后不再执行初始化语句,直到程序终止对象才会被销毁。给函数传递参数时尽量使用引用避免拷贝,同时如果函数无须改变引用形参的值,最好将其声明为常量引用,这很重要,能够避免很多错误。顶层const和底层const。顶层const是指针本身是const不可改变值,底层const是指针指向的对象是const不可修改指向对象的值。函数返回局部对象的引用和局...

2018-03-06 18:57:58 143

原创 C++变量/函数 声明与定义 源文件与头文件

C++有分离式编译,可以将一个程序分为多个源文件独立编译,再通过链接合并到一起。.h文件的作用只是在源文件中include,不会单独被编译。如果在不同源文件间需要共享全局变量,这时就需要extern发挥作用。extern用于声明,声明可以声明多次,定义只能有一次。因为头文件可能会被多个源文件包含,所以全局变量的定义不可放在头文件中,否则会导致全局变量多重定义。看下面的例子://1.cp...

2018-03-06 16:13:13 3844

原创 sizeof操作符的使用

重学C++ (三) 表达式(含sizeof的使用细节)结构和联合的区别关于struct结构体填充造成的字节数的问题默认的对齐方式应该遵循两个原则: 1. 结构体中的每个成员变量的起始地址都应该是其所占字节数的倍数。 2. 整个结构体所占字节数应该是其最大成员变量所占字节数的倍数。自己设定对齐方式: 例如编译器提供#pragma pack(n) 来设定变量以n字节对...

2018-03-06 14:32:19 170

原创 第三章 字符串,向量和数组

C++

2018-03-06 13:26:28 161

原创 第二章 变量和基本类型

切勿混用带符号数和无符号数:#include <iostream>using namespace std;int main(){ int a = -1; unsigned int b = 3; if (a < b) cout << "yes!" << endl; else co...

2018-03-06 10:57:10 125

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除