自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Warren_Hoo的专栏

分享收获快乐

  • 博客(85)
  • 资源 (8)
  • 收藏
  • 关注

原创 在本地文件系统上测试MapReduce程序

在开发MapReduce程序的过程中,可以首先在本地文件系统上对程序进行测试,而不是一开始就在HDFS上,这样调试起来更加方便。以《Hadoop权威指南》上的MaxTemperature程序为例,整个项目中包括如下3个源文件,依次为Mapper程序、Reducer程序和job启动程序:MaxTemperatureMapper.java,MaxTemperatureReducer

2015-01-19 16:03:06 3549

原创 MRUnit的安装和使用

MRUnit是对MapReduce程序进行单元测试的工具,可以对Mapper和Reducer程序分别进行测试。但是它没有集成在Hadoop安装环境中,如果想在开发MapReduce程序时使用这个工具,就需要自己安装。MRUnit的安装安装环境:Eclipse版本为3.6.0Hadoop版本为1.0.4安装步骤:(1)下载MRUnit,网址为http://

2015-01-19 10:57:51 3356

原创 Java常见问题之引用相等性和对象相等性

引用相等性和对象相等性

2014-04-30 16:58:27 3155

原创 Java常见问题之this()和super()的用法

this()用法:一个构造函数可以使用this()来调用同一个类的另外一个构造函数。一个构造函数最多只能调用一次this(),且this()只能作为构造函数的第一条语句。super()用法:一个构造函数使用super()来调用父类的构造函数。如果没有为一个类编写构造函数,则编译器会自动构造一个不带参数的构造函数,且构造函数中只有一条语句super();。如果为一个类

2014-04-30 16:42:23 1201

原创 Java常见问题之初始化过程

假设有个名为Dog的类对于静态字段:1. 当首次创建类型为Dog的对象时,或者Dog类的静态字段/静态方法首次被访问时,Java解释器会查找类路径,以定位Dog.class文件。2. 载入Dog.class,此时初始化所有静态字段,如果没有对静态字段进行显示初始化,则默认将所有基本类型字段都设置成标准初值,而引用字段被设置成null。对于非静态字段:1. 当创建类型为D

2014-04-30 16:33:51 977

原创 Bash脚本之命令行参数$@和$*

$@和$*都代表所有命令行参数,但是二者是有区别的。$*将命令行上提供的所有参数当作一个参数来保存,$@将命令行上提供的所有参数当作一个字符串中的多个独立的参数来保存。通常都是在程序中使用$@,并且用双引号引起来。下面举例说明:以下5个程序的程序名都是test.sh,均执行如下命令:sh test.sh a b "c d"希望得到的输出是:abc d程序1for v

2014-03-09 16:53:44 1836

原创 Bash脚本之for命令

for命令格式如下:for var in 列表do 命令块done列表中的各项默认是由空格符、制表符和换行符分隔的。该默认值是可以修改的,如下实例将分隔符修改为了换行符和冒号:IFS=$'\n:'bash还提供了C语言风格的for命令,但是这种风格与bash的很多基本规则是相悖的,所以不建议使用,可以用while命令或者until命令代替。在嵌套循环中,b

2014-03-09 13:49:06 1478

原创 Bash脚本之变量的使用

设置变量:name=变量内容注意:1. 等号两边不能接空格符2. 若变量内容含有空格符,则使用双引号或者单引号将变量内容引起来。但两种方式是有区别的,双引号内的特殊字符将会保持原有特性,单引号内的特殊字符仅为一般字符(所见即所得)。为了避免混淆,建议不要使用单引号,可以用转义字符\配合双引号来代替单引号的功能。下面举例说明:var="path is $LANG"echo

2014-03-09 13:42:32 1781

原创 Bash脚本之if-then语句

if-then语句格式如下:if 命令; then 语句块fi注意:1. 如果命令的退出状态码是0,则执行语句块,否则跳过语句块。每条命令执行结束后都会产生一个退出状态码,退出状态码是0-255之间的一个整数值。bash 脚本通常以命令“exit 数字”结尾,这个“数字”将会作为整个脚本的退出状态码。如果脚本结束时没有遇到该命令,则脚本会以脚本中执行的最后一条命令的

2014-03-06 10:19:27 4991

原创 Linux文件的特殊权限:SUID,SGID,SBIT

SUID具有该权限的文件的所有者的x标志会被s标志取代。该权限仅对二进制可执行文件有效。执行该文件的用户(当然这个用户必须具有对该文件的可执行权限)将会暂时获得该文件所有者的权限,这种效果仅在执行该文件的过程中有效。实例:当普通用户使用命令passwd修改自己的密码时,命令passwd需要修改文件/etc/shadow,但是只有root用户具有对文件/etc/shadow的

2014-03-06 10:02:39 1068

原创 Linux中硬连接与符号连接的区别

要弄清楚硬连接与符号连接的区别,首先要知道Linux的Ext2文件系统的基本原理:每个文件(无论是一般文件还是目录文件)都会占用一个inode和至少一个block。inode记录文件的权限、属性和该文件占用的block号码(注意inode没有记录该文件的文件名)。block记录文件的实际内容(对于目录文件,它的block记录的是在该目录下的文件名和该文件名占用的inode号码)。当

2014-03-04 21:56:35 1615

原创 MIC编译器icc(Intel Cluster Studio XE for Linux)的安装过程

从http://software.intel.com/en-us/intel-cluster-studio-xe-evaluation-options申请Intel® ClusterStudio XE for Linux 30天试用版,下载得到如下两个文件:编译器安装包:l_ics_2013.0.028.tgzlicense文件:EVAL_L___V8VP-WB7JGFSL.lic

2014-03-03 22:13:46 4601

原创 Intel Xeon Phi Coprocessor驱动程序MPSS的安装过程

硬件环境: 协处理器: Xeon Phi 5110P机型:Dell PowerEdge R720处理器:一个E5-2603处理器内存:8GB硬盘:SAS硬盘450GB注意:Phi对host平台有相当严格的要求,具体要求如下:1. Romely平台:Two-socket server platform combing the Xeon E5-2600 proc

2014-03-03 21:32:42 7831 6

原创 MPI基本编程框架

下面的MPI程序test.c完成了如下任务:Rank 0生成了30000个随机浮点数并发送给Rank 1,Rank 1接收来自Rank 0发来的随机数。另外,Rank 0对整个程序进行了计时。#include #include #include #include #define FIRST_RANK 0#define SECOND_RANK 1#define SIZE 300

2014-03-03 10:43:53 1737

原创 C语言小贴士之指针

虽然空指针NULL和空字符'\0'在数值上都可以用0表示,但是二者的概念不同,空指针是一个指针,而空字符是char类型的常量。另外使用NULL前需要先包含头文件stdio.h。对指针加一个整数等价于对指针的值加上它所指向的对象的字节大小与这个整数的乘积,这同样适用于对指针减一个整数。只有指向同一个数组的两个指针才能相减,得到的结果是两个指针所指向对象之间相距的元素个数,

2014-03-02 20:42:46 1053

原创 C语言小贴士之数据类型和变量定义

不带限定符signed或者unsigned的char类型对象是否带符号,取决于具体实现。字符的字典顺序其实就是字符在ASCII表中的ASCII值顺序。char类型实际存储的是字符所对应的ASCII编码整数值,而不是字符本身,考虑如下实例:#include int main(void){ char ch = 'a'; p

2014-03-02 20:40:10 1061

原创 C语言小贴士之switch分支语句

switch分支语句的结构如下:switch(var){ case c1: break; case c2: break; default: break;}其中var必须是整型变量,c1和c2必须是整型常量或者整数常量表达式。另外需要注意的是,无论defaul

2014-03-02 20:39:43 1131

原创 C语言小贴士之数组

对数组初始化时,{}中的数值个数可以小于数组的元素个数,这样没有得到初始值的元素将被默认初始化为0。对数组赋值只能采用逐个元素赋值的方式,而不能像初始化那样用{}进行整体赋值。数组名是数组首元素的地址,它是个常量,不可以被修改。定义数组时在方括号内只能使用常数,例如用#define宏定义的是常数,它的值是在编译时确定的。需要注意的是const类型的的变量并不

2014-03-02 20:39:26 883

原创 Bash脚本的两种执行方式

Bash脚本的执行方式可以分为两类:1. 通过绝对路径、相对路径或者bash命令来执行。该方法是在子进程的bash内来执行脚本的,脚本中的操作只能在子进程的bash环境中生效,不会对父进程的bash环境产生任何影响。2. 通过source命令或者小数点符号. 来执行。该方法是在当前进程的bash内来执行脚本的,脚本中的操作会在当前bash环境中生效。因此,当修改了配置文件~/.

2014-03-02 15:55:28 1633

原创 Linux下通过编译源码安装软件的流程

下面以安装gdb为例介绍通过编译源码安装软件的流程。正式安装前,需要进行如下工作:1. 将软件压缩包下载到目录/usr/local/src:wget http://ftp.gnu.org/gnu/gdb/gdb-7.7.tar.bz2 -P /usr/local/src2. 进入/usr/local/src目录,解压缩,生成目录gdb-7.7tar -jxv -f gdb-

2014-02-28 11:53:03 1241

原创 Linux系统启动流程

Linux系统启动流程(以CentOS为例):1. 加载BIOS,获得主机的硬件信息并进行开机自检,然后根据设置取得第一个可启动的设备(如硬盘)。2. 执行第一个可启动设备内MBR(主引导分区)的Boot Loader(如grub)。3. 根据Boot Loader的设置加载内核文件,内核开始检测硬件并加载驱动程序。4. 内核调用init进程,init会取得run-leve

2014-02-27 15:38:09 989

原创 MPI程序的运行命令

在运行MPI程序之前,首先用命令mpdtrace查看一下当前集群的运行状况,如果集群没有启动,需要用如下命令启动集群:mpdboot -n 4 -f ~/mpd.hosts我的集群是由node1、node2、node3、node4四台机器组成的。由于MPI程序通常需要将各个进程指定给相应的机器节点来执行,所以MPI程序的运行命令会有比较长的参数,可以将这些参数写入一个配置文件,

2014-02-26 21:22:04 10438 1

原创 MPI+CUDA混合程序的编译命令

单独的MPI程序和CUDA程序的编译命令是很简单的。MPI程序的编译命令为:mpicc test.c -o testCUDA程序的编译命令为:nvcc test.c test_cuda.cu -o test但是MPI+CUDA混合程序的编译命令就没这么简单了,下面举例说明。假设整个程序包括两个源文件test.c和test_cuda.cu,test.c是MPI程序,tes

2014-02-26 11:52:15 4302

原创 CUDA的随机数生成方法

CUDA Runtime API 没有提供用于生成随机数的接口,但是CURAND这个库提供了通过GPU生成随机数的接口,详细内容可参考点击打开链接

2014-02-26 10:12:06 6525 1

原创 CUDA的计时方法

CUDA Runtime API提供了用于计时的接口,可以用如下代码对在GPU上运行的CUDA程序进行计时:cudaEvent_t start, stop;cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start, 0);//需要计时的在GPU上运行的程序cudaEventRecord(s

2014-02-25 16:42:54 2170

原创 C常见问题之类函数宏的定义方法

下面是一个类函数宏的定义,它的功能是对函数返回值进行错误检查。#define CHECK_ERROR(x) do{\ if( (x) != 0){\ fprintf(stderr, "Error %d occurs at file %s line %d\n", (x), __FILE__, __LINE__);\ exit(-1);\ }}whi

2014-02-25 16:19:03 1658

原创 TCP和UDP套接字编程基本流程

TCP套接字编程服务器:1.创建套接字描述符(socket)2.设置服务器的IP地址和端口号(需要转换为网络字节序的格式)3.将套接字描述符绑定到服务器地址(bind)4.将套接字描述符设置为监听套接字描述符(listen),等待来自客户端的连接请求,监听套接字维护未完成连接队列和已完成连接队列5.从已完成连接队列中取得队首项,返回新的已连接套接字描述符(accept)

2014-02-21 15:14:46 2806

原创 以InfiniBand为通信方式的MPICH2开发环境的搭建

CentOS上搭建MPICH2开发环境的步骤这篇博客写的是通过以太网的方式搭建MPI开发环境,如果想用InfiniBand替换掉以太网,只需按如下步骤操作即可:1.按照CentOS上搭建MPICH2开发环境的步骤这篇博客通过以太网的方式搭建MPI开发环境。2.按照CentOS下IPoIB(IP over InfiniBand)网络接口的配置过程这篇博客配置好集群中各台机器的网络接口。3

2014-02-18 21:35:03 2577

原创 CentOS下IPoIB(IP over InfiniBand)网络接口的配置过程

1.查看HCA端口状态,若State为Active,则表示正常,方可继续执行后面的步骤。ibstat2.创建文件/etc/sysconfig/network-scripts/ifcfg-ib0,文件内容如下:DEVICE=ib0BOOTPROTO=staticIPADDR=10.0.0.5NETMASK=255.255.255.0BROADCAST=10.0.0.255NET

2014-02-18 21:07:05 9742

原创 Python之分片操作

为了避免出错,尽量不要在分片时同时使用非负数索引和负数索引针对字符串s = 'abc',s[x:y:z]得到的是s[x],s[x+z],s[x+2*z],...,s[y](不包括s[y])组成的字符串以下两种方式均可得到'abc's[:]s[0:3]以下两种方式均可得到'cba's[::-1]s[-1:-4:-1]

2014-02-10 18:07:22 1615

原创 Python小贴士之模块

用import导入模块时,模块名是Python文件名去掉后缀.py。当导入模块时,该模块内的程序会被执行,但是只有第一次导入时执行,如果后面重复导入,则不会再执行,若要重复执行,可调用内建函数reload()。如果希望Python文件中的某段程序在该文件被当作模块导入时不被执行,则可以把这段程序放在下面的if语句内:if __name__ == '__main__':

2014-02-10 11:51:38 972

原创 Python在函数中使用全局变量的问题

在函数中定义的局部变量如果和全局变量同名,则它会隐藏该全局变量。如果想在函数中使用全局变量,则需要使用global进行声明。举例说明如下:x = 1def func(): x = 2 print xprint xfunc()print x执行结果为:121x = 1def func(): global x pr

2014-02-08 16:49:36 11167

原创 Python的print用法

Python 2.6中print不是函数,而是一个关键字,使用方式如下:print 1, 2 print 'a', 'b' 显示结果如下,用逗号分隔的各项之间会打印出一个空格,默认以换行结束:1 2 a b  若不想以换行结束,则在最后加一个“,”,如下所示:print 1, 2, print 'a', 'b'  显示结果如下:1 2 a b Python 3.0

2014-02-07 17:38:25 1378

原创 CentOS下InfiniBand驱动安装过程

硬件:Mellanox Infiniband,主要包括HCA(主机通道适配器)和交换机两部分软件:CentOS 6.4            MLNX_OFED_LINUX-2.1-1.0.0-rhel6.4-x86_64.iso(从http://www.mellanox.com/下载)以用户名root登录系统1.检查主机是否安装了HCA:lspci -v | grep

2014-01-17 21:53:28 8300

原创 CentOS下CUDA开发环境的安装过程

前提:软件:CentOS 6.4从https://developer.nvidia.com/cuda-downloads下载针对RHEL 6版本的run文件)硬件:Nvidia GPU K10/K20m

2014-01-17 20:32:07 4177

原创 Ubuntu安装LAMP

1.安装apache2sudo apt-get install apache2Apache安装成功后,/var/www/默认作为web的根目录,所有web资源都应该放在该目录或其子目录中。2.安装PHP5并测试sudo apt-get install php5 libapache2-mod-php5新建/var/www/phptest.php文件,文件内容如下:在浏览器中输入以

2013-12-22 18:45:14 1358

原创 CentOS上搭建MPICH2开发环境的步骤

前提条件:共有5台机器,均安装有CentOS6.4系统,主机名分别为node0,node1, node2, node3, node4。node0作为主节点,这里的主节点是指将node0作为NFS的服务器端。MPICH2的安装包:mpich2-1.2.1p1.tar.gz,可以从MPICH的官网下载以下操作均使用root用户名1. 配置5台机器的网络,详细配置过程见我

2013-11-03 19:42:52 4698

原创 CentOS中yum源的修改方法

通常系统默认的yum源无法使用或速度太慢,下面将系统默认的yum源修改为上交的yum源:按如下方式修改/etc/yum.repos.d/CentOS-Base.repo文件首先注释掉以下5项的每一项当中以mirrorlist开头的行,并在每一项中添加如下所示的行:[base]baseurl=http://ftp.sjtu.edu.cn/centos/$releasever

2013-11-03 19:40:32 1217

原创 CentOS下NFS的安装过程

两台主机均为CentOS系统,主机名分别为node0和node1,node0的IP为10.141.4.36,node1的IP为10.141.4.39,两台主机均使用用户名cluster。node0作为NFS的服务器端,node1作为NFS的客户端。1. 在node0和node1上进行如下操作:在/etc/hosts文件中添加如下内容:10.141.4.36 n

2013-11-03 19:17:49 1370

原创 两台主机可以无需密码而直接互相登录的SSH配置方法

假设两台主机的主机名分别为node0和node1,node0的IP为10.141.4.36,node1的IP为10.141.4.39,两台主机均使用用户名cluster。1. 在node0和node1上进行如下操作:在/etc/hosts文件中添加如下内容:10.141.4.36 node010.141.4.39 node1在/home/clust

2013-11-03 19:15:40 1530

队列编程接口

针对队列的编程接口,包括如下接口: 初始化队列 检查队列是否已满 检查队列是否为空 确定队列中元素个数 向队尾添加元素 从队首删除元素 清空队列

2013-10-19

二叉搜索树编程接口

针对二叉搜索树的编程接口,包括如下接口: 初始化为空树 判断树是否为空 判断树是否已满 确定树中节点个数 向树中添加一个节点 判断树中是否存在某个节点 从树中删除一个节点 将某个函数作用于树中每个节点 删除树中所有节点

2013-10-19

PHP和MySQL Web开发

对PHP,MySQL的基础知识讲解的很详细,是入门首选,而且还有大量的实例项目开发和相关源码,边读边练,效果很好。

2013-09-22

C/C++ Reference

C/C++ Reference C/C++库函数,方便编程时查阅

2012-11-17

arm-linux-gcc-4.4.3.tar.gz

arm-linux-gcc-4.4.3.tar.gz 是一个arm-linux交叉编译工具链,针对的目标系统是linux2.6.32

2012-01-27

gdb-7.1.tar.bz2

gdb-7.1.tar.bz2 可编译用于gdb远程调试

2012-01-27

gdb-6.4.tar.bz2

gdb-6.4.tar.bz2编译后用于远程调试

2012-01-27

arm-linux交叉编译工具链

arm-linux交叉编译工具链,针对开发板上运行版本号为2.6.32的linux操作系统

2012-01-26

空空如也

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

TA关注的人

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