自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (2)
  • 收藏
  • 关注

转载 深入浅出VA函数

http://www.ibm.com/developerworks/cn/linux/l-va/index.html

2011-04-12 13:05:00 695

原创 一道破解练习题

下面是来自alert7 前辈博客http://hi.baidu.com/weiwang_blog/blog/item/ee4704decce0ba5cccbf1ad1.html 的一道破解题:“The following binary code executes and gives correct results only whenthe Key_file is present in the same directory as the code. Your goal isto use whatever te

2011-04-03 23:53:00 1195

原创 Linux Ubuntu中复制(拷贝)文件或目录的命令详解

<br />该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。<br />语法: cp [选项] 源文件或目录 目标文件或目录<br />说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。<br />该命令的各选项含义如下:<br />- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。<br />- d 拷贝时保留链接。<br />- f 删除已经存在的目标文件而不提示。<br

2011-01-11 17:15:00 3508

转载 如何查看服务器CPU是几核的

<br />http://blog.csdn.net/noway/archive/2009/06/02/4235349.aspx<br />每个虚拟的CPU就有相应的目录来存放一个具体的参数信息。<br />那么在LINUX中,在/proc/acpi/processor目录下就为每个虚拟的CPU建立了一个文件夹。也就是说CPU是几核的,这个目录下就应该有几个文件夹。<br />依次为 CPU0 CPU1…<br />如下:<br />~@bash ls /proc/acpi/processor查看具体CPU

2011-01-06 10:44:00 9476

转载 perl调试命令

<br />http://developer.51cto.com/art/201007/213719.htm<br />http://www.ibm.com/developerworks/cn/linux/sdk/perl/culture-4/index.html<br />http://www.sdsc.edu/~moreland/courses/IntroPerl/docs/manual/pod/perldebug.html#NAME<br />http://www.pgsqldb.org/mwiki/

2011-01-03 17:06:00 861

原创 如何同时读写文件

参考:http://hi.baidu.com/ngner/blog/item/8108effc8de1e4fefc037f28.html用Open() 函数打开文件 打开文件的常用方法是: open(FH, "or die "Couldn't open $filename for reading: $!"; open() 函数通常带有两个参数,第一个为文件句柄,用于指向打开的文件,第二个参数是文件名及模式(文件的打开模式)的混合体,如果文件被成功打开,open()函数返回true,否则为false。我们用“

2011-01-03 16:44:00 3996

转载 perl修改原文件内容

<br />http://www.cnblogs.com/morebetter/archive/2007/05/10/741752.html<br /> <br />很多时候,我们希望对原有文件的内容进行一定的修改,linux虽然有sed这个强大的文本编辑命令,但是他只能生成新文件或打印到screen上(或许sed也具有修改原文件的功能,小的才疏学浅,尚不知道,烦请大家告诉我),但在perl里却有这么一个命令$^I<br />例子:<br />#!/usr/bin/perl<br />use strict;

2010-12-30 18:49:00 9758 1

原创 统计两个文件中相同行的数目

<br />#!/usr/bin/perl<br />#================================================================================================================<br />#Author:huangyunhao<br />#Date:2010-12-10<br />#Function:count the number of the same lines between two lines

2010-12-10 15:31:00 1846

转载 从一道面试题谈linux下fork的运行机制

<br />转自:http://hi.baidu.com/yuesoq520/blog/item/96fba8eb0632a234b90e2d48.html<br />今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目:<br />      给出如下C程序,在linux下使用gcc编译:<br />1 #include "stdio.h"<br />2 #include "sys/types.h"<br />3 #include "unistd.h"<br />4 <br />5

2010-10-12 17:20:00 590

转载 linux解压缩tar命令

<br />转:http://blog.csdn.net/teamlet/archive/2008/02/18/2104262.aspx<br />本文引用了两部分tar的说明,第一部分是举例说明使用tar。第二部分是详细的参数说明。<br />第一部分:<br />tar命令 <br />tar [-cxtzjvfpPN] 文件与目录 .... <br />参数: <br />-c :建立一个压缩文件的参数指令(create 的意思); <br />-x :解开一个压缩文件的参数指令! <br />-t

2010-10-12 16:52:00 777

转载 gcc如何生成库链接参数

<br />1.gcc包含的c/c++编译器<br />gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译,c++程序就用g++编译。<br />2.gcc的基本用法<br />gcc test.c这样将编译出一个名为a.out的程序<br />gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名字<br />3.为什么会出现undefined reference to 'xxxxx'错误?<br />首先这是

2010-10-12 16:09:00 1310

转载 gcc编译过程

转:http://blog.chinaunix.net/u2/82382/showart_1913755.html今天,我们继续gcc之旅吧。上节我们讲了些gcc的历史发展什么的,还有就是gcc与g++的区别。今天我们就从整体上对gcc编译过程有个细致的了解,也好明白他的工作原理,好为以后深入学习研究打下个基础。gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)· 编译(Compiling)· 汇编(Assembling)· 链接(Linking)以hello.c为例子,在这四

2010-10-12 15:20:00 550

原创 c语言运算符优先级列表

<br /> <br />优先级<br />运算符<br />名称或含义<br />使用形式<br />结合方向<br />说明<br />1<br />[]<br />数组下标<br />数组名[常量表达式]<br />左到右 <br />()<br />圆括号<br />(表达式)/函数名(形参表) <br />.<br />成员选择(对象)<br />对象.成员名 <br />-><br />成员选择(指针)<br />对象指针->成员名 <br />2<br />-<br />负号运算符<br />

2010-10-12 15:03:00 427

转载 find和xargs命令

<br />http://bbs.chinaunix.net/thread-1387521-1-1.html<br />想好好学习的同学,请认真看完,有点长。                                <br />能很好的用好find将是Linux工作的一大幸事,不要奢望一口气记住本文所有的方法,要慢慢的去尝试和领会这些用法的精妙和合理之处,到了一定时候自然会记住很多,能够举一反三将是最大的收获!<br />1.find<br />由于find具有强大的功能,所以它的选项也很多,其中大部

2010-10-12 11:37:00 1172

转载 gdb调试正在运行的进程

<br />转:http://hi.baidu.com/brady_home/blog/item/6b92aa8ffdfee2e6f01f369b.html<br />有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常

2010-10-11 17:37:00 782

转载 c语言位域

<br />转:http://hi.baidu.com/jasonlyy/blog/item/6620f5267da1203d8644f970.html<br />位域 :   <br />有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域

2010-10-10 16:07:00 871 1

原创 c语言共用体对齐

还从网上找到共用体内存分配原则的文章,下面列几个例子说明:1.Union data1{                   double  d;                   int     i;                   char    c1;                   char    c2[9];    }; sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节

2010-10-10 15:42:00 2022

转载 c语言结构体对齐

C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但一不小心就会弄错。写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感觉说清楚的不多。结构体到底怎样对齐?有人给对齐原则做过总结,具体在哪里看到现在已记不起来,这里引用一下前人的经验(在没有#pragma pack宏的情况下):原则1、普通数据成员对齐规则:第一个数据成员放在offset为0

2010-10-10 15:09:00 3966 1

转载 多进程服务器中,epoll的创建应该在创建子进程之后

转:http://blog.csdn.net/wei801004/archive/2009/06/13/4264031.aspx看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码会出问题,在我的机器上(linux内核2.6.26)表现的症状就是所有进程的epoll_wait函数返回0, 而客户端似乎被阻塞了:服务器端: view plaincopy

2010-10-09 19:28:00 643

转载 linux 2.6内核epoll用法举例说明(续)--给echo服务器增加读线程池

#include #include #include #include #include #include #include #include #include #define MAXLINE 10#define OPEN_MAX 100#define LISTENQ 20#define SERV_PORT 5555#define INFTIM 1000//线程池任务队列结构体struct task{  int fd;            //需要读写的文件描述符  struct task *next;

2010-10-09 19:24:00 830

转载 epoll同时处理海量连接的代码

<br />转:http://hi.baidu.com/scrich99/blog/item/a6bfedf25d945fa4a50f5234.html<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <sys/types.h><br />#include <netinet/in.h><br />#include <sys/socke

2010-10-09 19:16:00 627

原创 epoll

I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。在linux2.6内核中,有了一种替换它的机制,就是epoll。一、epoll相关的数据结构和函数epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数。1、数据结构typedef union epoll_data {       void *ptr;       int fd;       __uint32_t u32;       __uint64_t u64;} epo

2010-10-09 17:17:00 781

转载 tcpdump抓包分析TCP三次握手过程

一、 tcpdump使用1、首先看下MAN手册TCPDUMP(8)                                                                                                                                                        NAME       tcpdump - dump traffic on a networkSYNOPSIS       tcpdump [

2010-10-09 15:11:00 6864

原创 RST复位报文段

<br />TCP首部中的RST比特是用于“复位”的。一般来说,无论何时一个报文段发往基准的连接出现错误,TCP都会发出一个复位报文段。TCP在下列三种情况下产生RST复位报文段。<br />1.到不存在的端口的连接请求<br />产生复位的一种常见情况是当连接请求到达时,目的端口没有进程正在监听。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息;而TCP则使用复位。<br />2.异常终止一个连接<br />终止一个连接的正常方式是一方发送FIN,这也称为有序释

2010-10-09 14:40:00 6323 1

原创 Nagle算法

<br />RFC 896[Nagle 1984]中提出了Nagle算法。Nagle算法针对的问题是:广域网上大量的小分组会增加拥塞出现的可能。Nagle算法的思想:该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发过去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。

2010-10-09 14:07:00 817

转载 拥塞控制

<br />为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答( selective acknowledge

2010-10-09 13:58:00 3290

转载 TCP超时时间的计算

转:http://blog.csdn.net/metasearch/archive/2008/03/07/2157017.aspx超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。1.超时超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难。要求精确的原因有两个:(1)定时长久会造成网络利用率不高。(2)定时太短会造成多次重传,使得

2010-10-09 11:21:00 5560

转载 TCP如何区分监听套接字和已连接套接字

2.10 TCP端口号与并发服务器并发服务器中主服务器循环通过派生一个子进程来处理每个新的连接。如果一个子进程继续使用服务器众所周知的端口来服务一个长时间的请求,那将发生什么?让我们来看一个典型的序列。首先,在主机freebsd上启动服务器,该主机是多宿的,其IP地址为12.106.32.254和192.168.42.1。服务器在它的众所周知的端口(本例为21)上执行被动打开,从而开始等待客户的请求,如图2-11所示。 图2-11 TCP服务器在端口21上执行被动打开我们使用记号{*:21, *:*}指出服

2010-10-09 10:39:00 6658

原创 TIME_WAIT状态

一般来说,tcp正常关闭需要四个包。比如a和b关闭连接,a先给b发一个fin,b会进行确认ack,然后b也会发出fin,当a接受到这个fin,并发出最后一个ack后,就会处于time_wait状态。这个时间长短跟操作系统有关,一般会在1-4分钟,也就是两倍的数据包(2msl)最大生存时间。当处于TIME_WAIT状态时,该连接所用的本地端口不能被重新使用,除非在bind前设置了SO_REUSEADDR选项;即使通过设置SO_REUSEADDR选项,重新使用仍处于2MSL等待的本地端口,也不能给处于TIME_

2010-10-09 10:31:00 825

转载 ERROR 1130: Host 'A'is not allowed to connect to this MySQL server

<br />用Navicat连接远程MYSQL,提示如下错误,我以为是自己的防火墙问题,但是关了,依然不行。<br />我认为这段英文,有点误导,让人感觉是自己这边出了问题。<br />看解决方法吧<br />ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server<br />解决方法:<br />1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhos

2010-09-28 10:25:00 673

转载 mysql 1010 无法drop 数据库

使用root用户登陆<br />命令:dropdatabase testdb;<br />错误提示:<br />ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘./testdb/’, errno: 17)<br /> 仔细检查发现在该数据库路径下有一个文件名为mail.txt的文本文件,进入数据库数据路径目录下,rm mail.txt 删除文件<br />在执行 dropdatabase testdb;Query OK, 70 rows a

2010-09-27 16:01:00 3256 1

转载 Ubuntu 9.10 更新软件源列表

<br />1.sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup    备份更新源设置<br />2.sudo gedit /etc/apt/sources.list<br />编辑你的源列表,将原来的内容全部删除,添加下面列表中最适合你的源(注意不要全部添加),选择一个最合适你的即可,复制到你的列表中,然后保存列表。<br />3.sudo apt-get update 更新源列表信息<br />可以在运行“sudo apt-get up

2010-09-27 15:59:00 672

转载 apt-get: Dynamic MMap ran out of room的解决方法

<br />若apt-setup出現"E:Dynamic MMap ran out of room"錯誤,在/etc/apt/apt.conf<br />加入<br />APT<br />{<br />Cache-Limit "141943904"<br />}<br />增加cache的可用空間。<br />如果没有此文件,自行建立。

2010-09-27 14:32:00 668

原创 *** is not in the sudoers file.This incident will be reported

解决方法如下: 1、进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。 2、添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。 3、编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",输入"i"进入编辑模式,找到这一行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存(就是先摁一下E

2010-09-26 11:19:00 578

原创 执行子进程“testparm”失败(没有该文件或目录)

<br />sudo apt-get install samba-common-bin

2010-09-26 10:44:00 1688

原创 Linux 2.6 中的文件锁

本文的目的是想帮助读者理清 Linux 2.6中文件锁的概念以及 Linux 2.6 都提供了何种数据结构以及关键的系统调用来实现文件锁,从而可以帮助读者更好地使用文件锁来解决多个进程读取同一个文件的互斥问题。本文主要描述了 Linux 中各类文件锁的概念,使用场景,以及与文件锁密切相关的系统调用等内容。在多任务操作系统环境中,如果一个进程尝试对正在被其他进程读取的文件进行写操作,可能会导致正在进行读操作的进程读取到一些被破坏或者不完整的数据;如果两个进程并发对同一个文件进行写操作,可能会导致该

2010-09-17 19:03:00 1296

转载 Linux mount命令的使用

<br />从网上收集了两篇关于mount命令文章,摘抄于此,以备日后参考。<br />转自:http://no001.blog.51cto.com/1142339/270932mount命令详解2009-06-29 14:38<br />功能:加载指定的文件系统。 <br />语法:mount [-afFhnrvVw] [-L] [-o] [-t] [设备名] [加载点] <br />用法说明:mount可将指定设备中指定的文件系统加载到Linux目录下(也就是装载点)。可将经常使用的

2010-09-17 15:23:00 668

转载 Linux mount中的几个基本命令

转自:http://os.51cto.com/art/201002/182606.htmLinux mount命令系统的特性,既可作为高校计算机专业Linux mount命令学习,也可以作为Linux mount命令系统开源爱好者、Linux mount命令系统用户的学习。一、最基本的几个Linux mount命令;1、查看磁盘分区情况的命令fdisk -l ;比如:[root@localhost beinan]# /sbin/fdisk -lDisk /dev/hda: 80.0 GB, 8002

2010-09-17 15:15:00 629

原创 设置文件创建方式屏蔽码(umask命令)

<br />命令的格式为:<br />umask  [3位八进制数] <br />umask命令把用户创建文件方式的屏蔽码置为参数规定的模式。3位八进制数分别表示文件主,同组用户和其他用户的读/写/执行权限。因此执行了umask命令后,新建文件的实际权限为创建时的权限值减去umask命令指定的八进制数值。如可用umask  022 命令去掉创建文件时同组用户和其他用户的写权限,用方式777创建的文件变成方式755。<br />不带参数的umask命令显示当前的屏蔽值。<br />可在用户主目录中的

2010-09-17 14:28:00 973

转载 Linux文件特殊权限 SUID/SGID/Sticky Bit

转自:http://os.51cto.com/art/200801/64465.htm前面一直提到文件的重要权限,就是rwx这3个读、写、执行的权限。但是,怎么 /tmp权限有些奇怪?还有, /usr/bin/passwd也有些奇怪,怎么回事呢?  [root@linux ~]# ls -ld /tmp ; ls -l /usr/bin/passwddrwxrwxrwt 5 root root 4096 Jul 20 10:00 /tmp-r-s--x--x 1 root root 18840

2010-09-17 14:14:00 464

王爽之汇编语言程序设计

清华大学出版社 王爽的汇编语言教程,浅显易懂,适合入门。

2010-10-25

80x86汇编语言程序设计教程

清华大学出版社 杨季文先生的汇编语言教程,其中的保护模式部分值得学习!

2010-10-25

空空如也

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

TA关注的人

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