vim保存退出命令x和wq的区别

我一般用vim时,习惯用wq保存并退出,但是我发现陈雍和东明他们好像惯于用x保存并退出,我就想这两者之间到底有什么不同呢?经过我仔细的研究我发现,他们的区别如下:

wq—–强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

x—–写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

Linux下创建一个僵尸进程

要创建僵尸进程首先得了解什么是僵尸进程,到底什么是僵尸进程呢?

在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程……一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是 使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁),具体不多说了,大家可以收集有关资料以便更好理解僵尸进程。

对于子进程,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态; 存在的问题:如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是为什么系统中有时会有很多的僵尸进程,系统的性能可能会受到影响。我们就可以利用这一点产生僵尸进程,当然我们只是为了学习,而不是用它搞破坏的。下面我们在父进程中fork一个子进程,然后利用子进程再fork一个子进程,相当于有父、子、孙、三个进程。我们让父进程退出,不让子进程退出,于是令孙进程啥也没干先于子进程结束,这样孙进程就成为了一个僵尸进程了。

下面是我写的一个生成僵尸进程的例子:

转自:博才的博客:http://blog.chinaunix.net/uid-27034868-id-3243628.html

ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境

以前一直用的是Lamp,今天不知为什么想尝试一下Lnmp这个环境,把学到的东西整理一下吧。

首先介绍一下Nginx,Nginx是一款有俄罗斯人开发的轻量级的web 服务器软件,现在很多网站都在使用这款软件,包括国内的互联网巨头腾讯网站都在使用Nginx。这款软件优点,免费、开源、高性能,而且稳定、功能强大、配置简单、资源消耗小。

我用一台刚刚装好的ubuntu12.04为例做教程,如果不是新装的ubuntu,请保证你的apache服务关闭!

环境:Ubuntu12.04 假设IP为:192.168.200.100

好吧,废话不多说了,下面我们开始吧!

1. 首先,安装mysql,输入以下命令;

安装过程中会让你输入两次密码。

2. 安装nginx;

3.启动nginx;

如果你的IP是192.168.200.100在终端输入查看nginx是否正常运行.

我的运行正常截图如下:

提示:在ubuntu12.04中nginx 默认网站目录为:

4.安装PHP5;

php-fpm是一个守护进程(与初始化脚本 / etc/init.d/php5-fpm )运行FastCGI服务器上的端口 9000 。

5.nginx的配置;

配置文件的路径:

修改其配置文件

你可以通过

http://wiki.codemongers.com/NginxFullExample

http://wiki.codemongers.com/NginxFullExample2

这两个网址了解更多配置信息。

增加工作进程,可选,可以不修改

默认虚拟主机配置文件地址:

修改其配置文件:

将原来的内容对照着替换为以下内容,这是我的机子上修改后的配置。

稍微有点经验的同学都可以看的懂里面需要修改的信息;

现在保存文件并重新启动nginx的:

你可以建立一个探针文件,试一试php是否正常运行。

这一步可以详见:http://blog.db89.org/how-to-create-a-the-phpinfo-view-php-information/

输入以下代码:

保存推出后,在浏览器输入地址查看,例如:http://192.168.200.100/info.php

6.让PHP5获得MySQL支持,需要一个模块;

安装软件:

现在重新启动PHP-FPM:

现在浏览器刷新一下:http://192.168.0.100/info.php

看看是否已经支持安装的模块。

我的效果如下:

到此一个Lnmp的环境就搭建好了。如果搭建的过程中遇到什么问题,可以给我留言或者发邮件,我们可以共同交流!

From:XiYou.LinuxGroup.2010.DuBin

数据库课程设计(效果预览)

这学期要做数据库的课程设计,我们选择用php做一个图书管理系统,这是我们半成品的截图。

截图一:

截图二:

截图三:

截图四:

截图五:

最主要的:

 

 

系统基本完成了,已经可以跑起来了,还书和借书这块还有点问题,这两天在改一下,下周就写报告了,加油!

PHP中require和include的区别

今天看php遇到了require和include这两个东东,他们的作用都是从引入外部的文件,但是他们两个有什么不同呢,下面我通过下面两个例子,来揭秘她们两个神秘的面纱。

require.php举例:

require.php效果截图:

include.php举例:

include.php效果截图:

通过以上的例子,我们不难看出require和include的最大区别在于:它们处理外部文件的错误信息的方式不同,require()遇到错误时回产生错误而停止执行程序。而include()则忽略错误继续执行程序。我想这就是它们之间最大的区别了,如果有什么别的理解,可以给我留言,或发邮件,我们可以交流一下!

软件工程作业:躲方块游戏

今天终于把躲方块游戏完成了,自己感觉还可以。特把代码提供出来,大家可以测试试玩!

enter键开始;

w、a、s、d键或者方向键控制移动方向;

game over后Esc键重新开始;

贴上截图:

附:

源代码下载地址:点击下载 (直接导入工程文件即可)

PPT下载地址:点击下载

需求分析下载地址:点击下载

实验报告下载地址:点击下载

测试报告下载地址:点击下载

 

Linux下测试磁盘的读写IO速度

今天在chinaunix上转悠碰巧看到在linux下怎样测试硬盘的速度,因为平常自己测试硬盘速度什么的都是在windows下进行的,刚好自己现在学习一下。

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:

1. 使用hdparm命令

这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的.该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单

由上图可以看到:

2秒钟读取了6526MB的缓存,约合3265.09 MB/sec;

在3.02秒中读取了228MB磁盘(物理读),读取速度约合75.56 MB/sec;

2. 使用dd命令

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.

另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

在使用前首先了解两个特殊设备

/dev/null 伪设备,回收站.写该文件不会产生IO

/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试方法:

a.测试磁盘的IO写速度

可以看到,在56.4704秒的时间里,生成2.5G的一个文件,IO写的速度约为43.5MB/sec;

当然这个速度可以多测试几遍取一个平均值,符合概率统计.

b.测试磁盘的IO读速度

上面的试验在293.173秒的时间里读取了21G的文件,计算下来平均速度为70.9MB/sec

c.测试IO同时读和写的速度

上面测试的数据量比较小,仅作为参考.

相比两种方法:

前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)

后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

老校区之行——答辩

今天下午去老校区跟着两位经管院的同学去答辩了,我只是个打酱油的,别人都俗称技术男的那种,我觉得我们的项目还行(车位通),但是前进中的困难重重,今天去了之后,我有学到了许多的东西,还没步入社会,学校还稍微能好点!

老校区的人很少,没有新校区的人多,老校区的邮电大楼很高,比新校区的楼要高很多,老校区的建筑很旧,比新校区的要旧很多……

忘了,站在邮电大楼看日落的景观,别有风味啊…..

最后,和我们的队友合了个影,另外两个队友有事没来,因为来的两个队友都是美女,所以在取得我家苹苹的同意后贴上来…..