摘要:
原文地址:http://blog.csdn.net/ruixj/article/details/3765385平时在写程序时经常会遇到大小写转换的问题,vim中提供了很多非常方便的大小写转换命令,可以快速的进行字母、单词、任意行的大小写转换,可以和vim的光标移动指令组合使用。~ 将光标下的字母改变大小写3~ 将光标位置开始的3个字母改变其大小写g~~ 改变当前行字母的大小写U 将可视模式下选择的字母全改成大写字母u 将可视模式下选择的字母全改成小写gUU 将当前行的字母改成大写3gUU 将从光标开始到下面3行字母改成大写guu 将当前行的字母全改成小写gUw 将光标下的单词改成大写。guw 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/12/09/1620396.html一、简单排序算法1.冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上 而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序是稳定的。算法时间复杂度O(n^2)。void BubbleSort(int *pData, int Count){ int temp,i,j; for 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/10/23/1588737.html所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。在这里,为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在 Linux 中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/10/25/1589613.html 进程是程序的一次执行, 是运行在自己的虚拟地址空间的一个具有独立功能的程序. 进程是分配和释放资源的基本单位, 当程序执行时, 系统创建进程, 分配内存和 CPU 等资源; 进程结束时, 系统回收这些资源。 进程由PCB(进程控制块)来描述:进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程的状态,有运行、挂起、停止、僵尸等状态。进程切换时需要保存和恢复的一些CPU寄存器。描述虚拟地址空间的信息。描述控制终端的信息。 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/11/11/1600986.htmlLinux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明:头文件:<unistd.h><sys/mman.h>原型: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offsize);返回值: 成功则返回映射区起始地址, 失 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/11/15/1603295.html/etc/passwd记录账号的信息,不过不保存密码/etc/shadow保存用户密码/etc/group中保存所有group的名字ls -l查看权限: r w x s对应的数字:4读,2写,1执行。特殊权限:4 为 SUID,2 为 SGID,1 为 Sticky bits权限:以所有者权限执行目录的粘着位t:777的目录,但是用户只可以删除自己的文件ls -dl /tmp/drwxrwxrwt 518 root root 499712 2009-11-14 1 阅读全文
摘要:
原文地址:http://www.cnblogs.com/feisky/archive/2009/10/23/1588771.htmlLinux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制 阅读全文
摘要:
原文地址:http://blog.csdn.net/hairetz/article/details/4134446关于指针,觉得有点意思就发上我的注释,大家分析下,可以练练基本功。struct S{int i;int *p;};main(){S s;int *p=&s.i; //p指向s的首地址p[0]=4; //处理s.ip[1]=3; //s.p =3s.p=p; //s.p指向s的首地址s.p[1]=1; //s.p[1]就是s里的p,p=0x00000001s.p[0]=2; //操作0x00000001地址,代码在此处挂掉}这里虽然是在最后面才挂掉,但是野指针早在p[1]=3 阅读全文
摘要:
client.c#include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #define BUFFSIZE 32 void Die(char *mess) { perror(mess); exit(1); } int main(int argc, char *argv[]) 阅读全文
摘要:
原文地址:http://www.cnblogs.com/skynet/archive/2011/03/07/1975479.html为什么需要知道C/C++的内存布局和在哪可以可以找到想要的数据?知道内存布局对调试程序非常有帮助,可以知道程序执行时,到底做了什么,有助于写出干净的代码。本文的主要内容如下:源文件转换为可执行文件可执行程序组成及内存布局数据存储类别一个实例总结源文件转换为可执行文件源文件经过以下几步生成可执行文件:1、预处理(preprocessor):对#include、#define、#ifdef/#endif、#ifndef/#endif等进行处理2、编译(compiler 阅读全文