2012年9月

alpha amd64 i386 ia64 pc98 powerpc sparc64的区别

  • alpha:DEC Alpha, 也称为Alpha AXP,是64位的 RISC 微处理器,最初由DEC公司制造,并被用于DEC自己的工作站和服务器中。作为VAX的后续被开发,支援VMS操作系统,如 Digital UNIX。不久之后开放源代码的操作系统也可以在其上运行,如Linux 和 BSD 。Microsoft 支持这款处理器,直到Windows NT 4.0 SP6 ,但是从Windows 2000 beta3 开始放弃了对Alpha的支援。
  • amd64:AMD 64位处理器
  • i386:对于Intel 32位微处理器的统称,之所以有人会说cpu是64的是因为该系列的cpu支持64位的指令集,同时支持32和64位指令集
  • ia64:Intel 纯64位架构的cpu
  • pc98构件那个是20世纪80年代诞生的,现在已经很少用了
  • powerpc:二十世纪九十年代,IBM(国际商用机器公司)、Apple(苹果公司)Motorola(摩托罗拉)公司开发PowerPC处理器PowerPC芯片成功,并制造出基于PowerPC的多处理器计算机。PowerPC架构的特点是可伸缩性好、方便灵活。
  • SPARC,全称为“可扩充处理器架构”(Scalable Processor ARChitecture),是RISC微处理器架构之一。

MySQL数据库的备份和还原命令

  • 备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

  • 备份MySQL数据库为带删除表的格式
    备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

  • 直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

  • 备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

  • 同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

  • 仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

  • 备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

  • 还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

  • 还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

  • 将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

EC2的每月免费额度

AWS Free Usage Tier (Per Month):
Elastic Compute Cloud (EC2)

    750 hours of Amazon EC2 Linux† Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
    750 hours of Amazon EC2 Microsoft Windows Server‡ Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
    750 hours of an Elastic Load Balancer plus 15 GB data processing* 30 GB of Amazon Elastic Block Storage, plus 2 million I/Os and 1 GB of snapshot storage*

Simple Storage Service (S3)

    5 GB of Amazon S3 standard storage, 20,000 Get Requests, and 2,000 Put Requests*

DynamoDB

    100 MB of storage, 5 units of write capacity, and 10 units of read capacity for Amazon DynamoDB.**

SimpleDB

    25 Amazon SimpleDB Machine Hours and 1 GB of Storage** Simple Workflow (SWF)
    1,000 Amazon SWF workflow executions can be initiated for free. A total of 10,000 activity tasks, signals, timers and markers, and 30,000 workflow-days can also be used for free**

Simple Queue Service (SQS) and Simple Notification Service (SNS)

    100,000 Requests of Amazon Simple Queue Service**
    100,000 Requests, 100,000 HTTP notifications and 1,000 email notifications for Amazon Simple Notification Service**

Relational Database Service (RDS)

    750 hours of Amazon RDS for SQL Server Micro DB Instance usage (running SQL Server Express Edition in a single Availability Zone) – enough hours to run a DB Instance continuously each month
    20 GB of database storage
    10 million I/Os
    20 GB of backup storage for your automated database backups and any user-initiated DB Snapshots

CloudWatch

    10 Amazon Cloudwatch metrics, 10 alarms, and 1,000,000 API requests** Data Transfer
    15 GB of bandwidth out aggregated across all AWS services*

In addition to these services, the AWS Management Console is available at no charge to help you build and manage your application on AWS.

60-day Free Trials

In addition to the Free Usage Tier we also offer 60-day Free Trials for all AWS customers that are new to the RDS and ElastiCache services. AWS customers can avail of these Free Trials in addition to the Free Usage Tier offerings.

For more information on the free trials please follow the links below:

    Amazon RDS free trial
    Amazon ElastiCache free trial

C语言指针详细教程

指针、引用和取值
什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。本文会对上述所有指针类型进行探讨。
根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。
&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。

// 声明一个int指针 int *ptr; // 声明一个int值 int val = 1; // 为指针分配一个int值的引用 ptr = &val; // 对指针进行取值,打印存储在指针地址中的内容 int deref = *ptr; printf("%d\n", deref);

第2行,我们通过*操作符声明了一个int指针。接着我们声明了一个int变量并赋值为1。然后我们用int变量的地址初始化我们的int指针。接下来对int指针取值,用变量的内存地址初始化int指针。最终,我们打印输出变量值,内容为1。
第6行的&val是一个引用。在val变量声明并初始化内存之后,通过在变量名之前使用地址操作符&我们可以直接引用变量的内存地址。
第8行,我们再一次使用*操作符来对该指针取值,可直接获得指针指向的内存地址中的数据。由于指针声明的类型是int,所以取到的值是指针指向的内存地址存储的int值。
这里可以把指针、引用和值的关系类比为信封、邮箱地址和房子。一个指针就好像是一个信封,我们可以在上面填写邮寄地址。一个引用(地址)就像是一个邮件地址,它是实际的地址。取值就像是地址对应的房子。我们可以把信封上的地址擦掉,写上另外一个我们想要的地址,但这个行为对房子没有任何影响。

void指针、NULL指针和未初始化指针
一个指针可以被声明为void类型,比如void *x。一个指针可以被赋值为NULL。一个指针变量声明之后但没有被赋值,叫做未初始化指针。

int *uninit; // int指针未初始化 int *nullptr = NULL; // 初始化为NULL void *vptr; // void指针未初始化 int val = 1; int *iptr; int *castptr; // void类型可以存储任意类型的指针或引用 iptr = &val; vptr = iptr; printf("iptr=%p, vptr=%p\n", iptr, vptr); // 通过显示转换,我们可以把一个void指针转成 // int指针并进行取值 castptr = (int *)vptr; printf("*castptr=%d\n", *castptr); // 打印null和未初始化指针 printf("uninit=%p, nullptr=%p\n", uninit, nullptr); // 不知道你会得到怎样的返回值,会是随机的垃圾地址吗? // printf("*nullptr=%d\n", nullptr); // 这里会产生一个段错误 // printf("*nullptr=%d\n", nullptr);

执行上面的代码,你会得到类似下面对应不同内存地址的输出。
iptr=0x7fff94b89c6c, vptr=0x7fff94b89c6c
*castptr=1
uninit=0x7fff94b89d50, nullptr=(nil)
第1行我们声明了一个未初始化int指针。所有的指针在赋值为NULL、一个引用(地址)或者另一个指针之前都是未被初始化的。第2行我们声明了一个NULL指针。第3行声明了一个void指针。第4行到第6行声明了一个int值和几个int指针。
第9行到11行,我们为int指针赋值为一个引用并把int指针赋值为void指针。void指针可以保存各种其它指针类型。大多数时候它们被用来存储数据结构。可以注意到,第11行我们打印了int和void指针的地址。它们现在指向了同样的内存地址。所有的指针都存储了内存地址。它们的类型只在取值时起作用。
第15到16行,我们把void指针转换为int指针castptr。请注意这里需要显示转换。虽然C语言并不要求显示地转换,但这样会增加代码的可读性。接着我们对castptr指针取值,值为1。
第19行非常有意思,在这里打印未初始化指针和NULL指针。值得注意的是,未初始化指针是有内存地址的,而且是一个垃圾地址。不知道这个内存地址指向的值是什么。这就是为什么不要对未初始化指针取值的原因。最好的情况是你取到的是垃圾地址接下来你需要对程序进行调试,最坏的情况则会导致程序崩溃。
NULL指针被初始化为o。NULL是一个特殊的地址,用NULL赋值的指针指向的地址为0而不是随机的地址。只有当你准备使用这个地址时有效。不要对NULL地址取值,否则会产生段错误。

指针和数组
C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数组变量指向了数组的第一个元素的内存地址。
一个数组变量是一个常量。即使指针变量指向同样的地址或者一个不同的数组,也不能把指针赋值给数组变量。也不可以将一个数组变量赋值给另一个数组。然而,可以把一个数组变量赋值给指针,这一点似乎让人感到费解。把数组变量赋值给指针时,实际上是把指向数组第一个元素的地址赋给指针。

int myarray[4] = {1,2,3,0}; int *ptr = myarray; printf("*ptr=%d\n", *ptr); // 数组变量是常量,不能做下面的赋值 // myarray = ptr // myarray = myarray2 // myarray = &myarray2[0]

第1行初始化了一个int数组,第2行用数组变量初始化了一个int指针。由于数组变量实际上是第一个元素的地址,因此我们可以把这个地址赋值给指针。这个赋值与*ptr = &myarray[0]效果相同,显示地把数组的第一个元素地址赋值到了ptr引用。这里需要注意的是,这里指针需要和数组的元素类型保持一致,除非指针类型为void。

指针与结构体
就像数组一样,指向结构体的指针存储了结构体第一个元素的内存地址。与数组指针一样,结构体的指针必须声明和结构体类型保持一致,或者声明为void类型。

struct person { int age; char *name; }; struct person first; struct person *ptr; first.age = 21; char *fullname = "full name"; first.name = fullname; ptr = &first; printf("age=%d, name=%s\n", first.age, ptr->name);

第1至6行声明了一个person结构体,一个变量指向了一个person结构体和指向person结构体的指针。第8行为age成员赋了一个int值。第9至10行我们声明了一个char指针并赋值给一个char数组并赋值给结构体name成员。第11行我们把一个person结构体引用赋值给结构体变量。
第13行我们打印了结构体实例的age和name。这里需要注意两个不同的符号,’.’ 和 ‘->’ 。结构体实例可以通过使用 ‘.’ 符号访问age变量。对于结构体实例的指针,我们可以通过 ‘->’ 符号访问name变量。也可以同样通过(*ptr).name来访问name变量。

openshift如何绑定域名

最近redhat推出了openshift这款服务,相信很多童鞋都试用过了,可是我们创建的APP都是openshift的二级域名,如何把我们的域名绑定到app呢?

openshift 的自由性真是让人喜欢,不过要绑定域名必须安装 client tools ,ruby的产物,要求 ruby1.8.7以上.

安装 ruby:

cd /usr/ports/lang/ruby18
make install clean
如果是RHEL:yum install ruby

安装ruybgames:

cd /usr/ports/devel/ruby-gems
make install clean
rehash
如果是RHEL:yum install ruby-gems

安装 client tools:

gem install rhc

绑定域名:

rhc setup // 输入用户名密码等
rhc app add-alias -a appName --alias www.makefile.com // 要确认密码

然后到 app 管理应该会在 Aliases 看到刚刚添加的域名
然后将www.makefile.net cname 到 appName-namespace.rhcloud.com,www.makefile.net是你要绑定的域名。

如果是Windows:

在开始之前请先安装git系统软件。这里是:RailsInstaller下载地址

开启你的cmd命令窗口,输入下列代码安装OpenShift Client 。

gem install rhc

跟着输入rhc setup

这时候就会要你输入OpenShift的用户和密码

接下来就会自动生成SSH公钥和私钥,公钥会提示要不要上传。输入YES。

完了之后我们就可以在OpenShift账户中看到刚刚上传的SSH公钥了。和我们之前手动保存是一样的。

rhc app add-alias -a appName --alias www.makefile.com