自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(191)
  • 收藏
  • 关注

转载 右键添加Dos Here

<br /><br />1、inf文件安装方法<br />将以下内容复制到一个文本文档中,重命名为DosHere.inf,然后右键安装即可<br />=========================================<br />;<br />; "Command Prompt Here" PowerToy<br />;<br />; Copyright 1996 Microsoft Corporation<br />;<br />[version]<br />signature="$CHIC

2011-04-05 22:04:00 961

转载 Linux环境进程间通信(五): 共享内存(上)

<br />采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才

2010-10-19 16:20:00 562

转载 Linux环境进程间通信(五): 共享内存(下)

<br />系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。<br />1、系统V共享内存原理<br />进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,

2010-10-19 16:20:00 605

原创 openssl使用手册

<br />OpenSSL有两种运行模式:交互模式和批处理模式。<br />直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。<br />(1) 配置文件<br />OpenSSL的默认配置文件位置不是很固定,可以用openssl ca命令得知。<br />你也可以指定自己的配置文件。<br />当前只有三个OpenSSL命令会使用这个配置文件:ca, req, x509。有望未来版本会有更多命令使用配置文件。<br />(2)消息摘要算法<br />支持的算

2010-09-09 15:09:00 780

转载 openssl安装配置

安装openssl# tar –zxvf openssl# cd openssl# ./config --prefix=/usr/local/openssl # make# make install 加密解密传统加密(对称加密)openssl enc –ciphername(加密算法) –k password(口令)–in file(被加密的算法) -out (输出文件)file解密openssl enc –ciphername –k password  -d –in file -out file 加密

2010-09-09 15:08:00 856

转载 对象文件格式分析工具: objdump, nm,ar

<br />前言<br />如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar。当然,本文不可能非常详细的说明它们的使用方法和功能。如果你觉得本文不够清楚,你可以使用:man. 我的计划只是想让更多的人了解这些工具,以后在今后 的编程过程中能有所帮助。<br /><br /><br />操作系统: Linux<br /><br />开始库文件操作命令:ar ----非常

2010-06-25 14:57:00 571

转载 Linux在安全模式下修改initrd文件

<br />我在Redhat Enterprise 5里安装了Java环境,设置了环境变量,结果环境变量设置出错了,重启Linux后无法登录,安全模式下提示如下信息:bash:dircolors:command not found   bash:/software/jdk1.6.0_14/lib.tools.jar: 没有那个文件或目录   bash:/software/jdk1.6.0_14/bin: is a directory<br />我那个郁闷啊,刚学Linux就碰到系统初始化失败,咋

2010-06-08 17:03:00 1593

转载 linux 卷组 详细笔记

<br />项目上的linux系统越多,这方面的request也渐渐多起来了。<br />突然接到一个客户的的需求,要在linux workstation上划分出10个G的分区。<br /><br />一年前,对这个case还真是不再话下,肯定是三下五除二就搞定了。<br />可是在windows的项目上呆的久了,linux的东西几乎全还给老师和那些朋友们了。怎么办?<br /><br />当然没办法,还好还留有以前的笔记。于是——翻笔记呀——回忆阿——在自己的电脑安装vmwar

2010-06-07 14:33:00 4128

转载 linux /etc/fstab

<br />有很多人经常修改/etc/fstab文件,但是其中却有很多人对这个文件所表达的意义不太清楚,因为只要按照一定的模式,就可以轻而易举地添加一行挂载信息,而不需要完全理解其中的原理。下面就让我们来看看到底还有多少是我们不了解的。<br /><br />   /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。<br /><br />

2010-06-07 14:33:00 583

转载 Linux LVM(逻辑卷管理)

一、 前言<br /> <br />    每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。<br />    虽然现在有很多动态调整磁盘的工具可以使用,例如Partation Magic等等,但是它并不能完全解决问题,

2010-06-07 14:31:00 621

原创 linux lvm 扩展Volume Group Logucal Volume

<br />通过扩展Volume Group、Logical Volume来达到扩展文件系统的大小,<br /> <br /> <br />我的服务器是建在虚机上的,<br /> <br />分配硬盘空间时,通过修改参数把原来硬盘加大的。<br /> <br />[root@localhost ~]# fdisk -l<br />Disk /dev/sda: 32.2 GB, 32212254720 bytes<br />255 heads, 63 sectors/track, 3916 cyl

2010-06-07 14:25:00 936

原创 ESXi中Linux虚拟机LVM扩展实例

LVM是Linux下常用的磁盘管理技术,可以在线的动态扩展逻辑卷的大小,我们以ESXi中的Linux虚拟机为例说明如何使用LVM动态扩展磁盘空间。1. ESXi中为Linux虚拟机添加第二块硬盘,查看磁盘状态#fdisk -l 2. 在新加的硬盘上创建分区,分区类型为8e#fdisk /dev/sdbCommand (m for help): new<br />Command action<br />e   extended<br />p   primary partition (1-4

2010-06-07 14:22:00 812

转载 linux 内存详解

Linux在内存管理上份为两级,一级是线性区,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,对应机器上的物理内存。这里要提到一个很重要的概念,内存的延迟分配。Linux内核在用户申请内存的时候,只是给它分配了一个线性区(也就是虚存),并没有分配实际物理内存;只有当用户使用这块内存的时候,内核才会分配具体的物理页面,这时候才占用真实的物理内存。内存释放是通过虚拟地

2010-05-20 11:01:00 1210

转载 Linux内存管理(下)

Linux内存管理(下) 物理内存管理(页管理)Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了。利用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续内存[1]

2010-05-19 14:51:00 638

转载 Linux内存管理(上)

  Linux内存管理(上) 收藏 Linux内存管理(上)摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在

2010-05-19 14:49:00 771

转载 select, poll和epoll的区别

  select, poll和epoll的区别 收藏 select()系统调用提供一个机制来实现同步多元I/O:#include s

2010-05-18 17:46:00 722

转载 core dump的生成与调试

在Linux下产生并调试core文件URL: http://blog.china-pub.com/more.asp?name=uniware&id=35478先看看我用的是个什么机器:$ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i38

2010-05-14 09:50:00 589

转载 C程序内存分配

在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。第1节主要介绍内存管理基本概念,重点介绍C程序中内存的分配,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。第2节主要介绍C语言中内存分配及释放函数、函数的功能,以及如何调用这些

2010-05-13 11:42:00 740

转载 C语言编译过程总结详解(转)

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。

2010-05-07 17:28:00 536

转载 C语言宏的高级应用

关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)     /     do{ if (EXP)     /             fprintf(stderr, "Warning: " #EX

2010-05-07 17:20:00 525

转载 自加 左值

1.前置运算符和后置运算符,左值和右值。其实很久以来一直都没有怎么搞清楚左值和右值的区别,只知道左值可以放在等号的左边,也可以放在等号的右边,但是右值却只能放在等号的右边,然后形成一个大概直观的印象,知道怎么样做才不出错而已。不过今天看看C++,却发现有了点新的体会。对于表达式a--=5;这样一个表达式,明显是错误的,究其原因,是因为执行等号左边的自减表达式之后,显示取得a的值,然后才

2010-05-07 17:19:00 394

转载 关于自加++,左值的问题

先给出结论:i++ = 5;    错++i = 5;    对原因为何:i++的运算结果并不是i这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算:     i++=5;   甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误   。左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。     a   =  

2010-05-07 17:18:00 324

转载 代码命名规则---部分编程常用单词缩写

 规则:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。 完整单词缩写A averageavgB backbkbackgroundbgbreakbrk

2010-05-04 11:25:00 518

转载 C/C++中的函数参数传递机制

一、 函数参数传递机制的基本理论  函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。  值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主

2010-04-30 15:23:00 220

转载 C优先级列表

 PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember ac

2010-03-24 16:33:00 290

转载 怎样及时检测出非正常断开的TCP连接(转)

此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等物理链路的原因,还有突然主机断电等原因有两种方法可以检测:1.TCP连接双方定时发握手消息 2.利用TCP协议栈中的KeepAlive探测第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有作进一步的测试)Wi

2010-03-03 14:22:00 570

原创 Byte and Bit Order Dissection(解析字节序和比特序)

作者:Kevin He,2003-09-02 原文地址:http://www.linuxjournal.com/article/6788  译者:Love. Katherine,2007-04-14译文地址:http://blog.csdn.net/lovekatherine/archi

2010-03-03 10:24:00 559

转载 C语言结构体的字节对齐原则

为什么要对齐?   现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。   对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特

2010-03-02 15:46:00 497

转载 C语言中关键字auto、static、register、const、volatile、extern的作用

1)auto  这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register  这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static  常见的两种用途:

2010-03-01 16:19:00 552

转载 堆与栈的区别

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态

2010-03-01 15:45:00 357

转载 C/C++函数调用时的堆栈变化

深入学习的引起:csdn论坛某诡异问题      转抄如下: view plaincopy to clipboardprint?class Test  {  public:     int i;     int j;  };    int crashme(

2010-03-01 15:43:00 699

转载 C语言函数入栈顺序与可变参数函数

C/C++函数调用约定与函数名称修饰规则探讨 使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有 问题,但是链接的时候总是报告函数不存在(经典的LNK2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其

2010-03-01 15:41:00 279

转载 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)

Posted on Tuesday, May 24, 2005 3:23 PM #C & C++<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://m

2010-03-01 15:39:00 1000

转载 VIM查找替换归纳总结

VIM中常用的替换模式总结。1,简单替换表达式替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g “%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可   如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4

2010-02-25 10:48:00 187

转载 Linux系统启动过程及grub引导故障排错

Linux系统启动过程:1、  主机开机后,就是硬件检测(POST),通过后再根据BIOS里面设置的启动顺序找到启动驱动器(如硬盘,光驱等),计算机启动都要经过这一步,没什么好说的啦。2、  读取硬盘MBR,启动系统引导程序(如grub、lilo),再由系统引导程序加载Linux的核

2010-02-24 11:36:00 466

转载 Linux系统启动过程分析 -- by 王斌斌

Linux系统启动过程分析操作系统的启动过程,实际上是控制权移交的过程。Linux 系统启动包含四个主要的阶段:BIOS initialization, boot loader, kernel initialization, and init startup.见下图:阶段一、BIOS initialization,

2010-02-24 11:34:00 704

转载 epoll精髓

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __

2010-01-26 15:12:00 381

转载 epoll学习笔记

epoll有两种模式,Edge Triggered(简称ET) 和 LevelTriggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题:首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采

2010-01-26 15:10:00 349

转载 epoll使用例子

名词解释:man epoll之后,得到如下结果:NAME       epoll - I/O event notification facilitySYNOPSIS       #include DESCRIPTION       epoll is a variant of poll(2) that can be used either as Edge or Level

2010-01-26 15:09:00 397

转载 Select函数实现原理分析

select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。 下面我们分两个过程来分析select:

2010-01-07 16:20:00 304

空空如也

空空如也

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

TA关注的人

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