http://blog.sina.com.cn/xwhbin[订阅]
个人资料
分类
    内容读取中…
音乐播放器
图片幻灯
访客
读取中...
好友
读取中...
博文
shell正则表达式(2009-07-10 17:40)
作者:笑容
前言
正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
索引
1._引子
2._正则表达式的历史
3._正则表达式定义
3.1_普通字符
3.2_非打印字符
3.3_特殊字符
3.4_限定符
3.5_定位符
3.6_选择
3.7_后向引用
4._各种操作符的运算优先级
5._全部符号解释
6._部分例子
7._正则表达式匹配规则
7.1_基本模式匹配
7.2_字符簇
7.3_确定重复出现
1. 引子
  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
  正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。
例子:

http://blog.chinaunix.net/u/1696/showart_1106492.html

引言:
在xmeeting中,关于usb手柄部分,采用动态库调用方式,下面翻译一篇David A. Wheeler写的文章。文章就如何创建和使用静态库,共享库以及动如何动态装载库进行了论述。内容纲要如下:
 1.概述
 2.静态库
 3.共享库
   3.1 约定
       3.2 使用
    3.3 环境变量
   3.4 创建共享库
   3.5 安装与使用
   3.6 兼容性
 4.动态加载
   4.1 dlopen()
   4.2 dlerror()
   4.3 dlsym()
   4.4 dlclose()
   4.5 示例
 5.辅助知识
   5.1 nm命令
   5.2 库的构建与析构函数
   5.3 脚本
   5.4 版本
   5.5 GNU libtool
    5.6 去除符号空间
 &nbs

auto

这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。

register

这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。

static

常见的两种用途:
    1>统计函数被调用的次数;
    2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变 量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销.

  详细说明:
    1>、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
    2>、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
    3&

羚羊 狮子(2009-06-26 20:38)
     在非洲,每天早晨羚羊睁开眼睛,所想的第一件事是:我必须比跑得最快的狮子跑得更快,否则,我就会被狮子吃掉。而在同一时刻,狮子从睡梦中醒来,首先闪现脑海的念头是:我必须追上跑得最慢的羚羊,要不然我就会被饿死

总结:不论你是羚羊还是狮子,每当太阳升起之时,你要做的,就是奔跑
C++调试技巧(2009-06-26 20:35)
http://www.sf.org.cn/Article/base/200702/20071.html
1.调试标记

  适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif 进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列:

  #define DEBUG 

  #ifdef DEBUG  

  调试代码 

  #endif

  2.运行期间调试标记

  在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。

  例如下面代码  

  #include<iostream>

  #include <string>

  using namespace std;

  bool debug =false;

  int main(int argc,char*argv[])

  {

   for(int i=0;i<argc;i++)

    if(string(argv[i])==“--debug=on“)

    debug = true;

    bool go=true;

    while(go)
#define & typedef的区别(2009-06-26 20:32)
typedef 常常用来定义一个标识符及关键字的别名,是语言编译过程中的一部分,但它并

不实际分配内存空间,如:

typedef int INT;
typedef int ARRAY[10];
typedef (int*) pINT;

typedef 可以增强程序的可读性,以及标示符的灵活性。

#define的用法
#define位一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现

那些“表面似和善,背后一长串”的宏,它的实例像:
#define INT int
#define TURE 1
#define Add( a, b) ((a)+(b));
#define Loop_10  for(int i=0; i<10; i++)

在Scott Meyer的Effective C++一书的条款1中有关#define语句弊端的分析,以及好的替代

方法,可参考。

typedef 与 #define的区别:

从以上的概念便可以清楚的看出:
1.  typedef只是为了增加可读性而为标识符另起的新名称(仅仅是个别名),#define定义

常量
2.  一般遵循#define定义“可读”的常量以及一些红语句的任务,而typedef则常用来定义关

键字
C指针深入(2009-06-26 15:06)

曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明
吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。

    我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typ
edef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法
则”。

  需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如
何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最
好在至少1024x768分辨率的显示器上阅读。

  基础

  让我们从一个非常简

嵌入式系统 Boot Loader 技术内幕


http://www.ibm.com/developerworks/cn/linux/l-btloader/index.html
UTC时区问题(2009-06-26 11:29)
http://blog.chinaunix.net/u/17855/showart_572759.html
每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出。我自己就经常混淆于此,特地研究了一下,记录在此以备忘。

整 个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。

北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:

Date: Fri, 08 Nov 2002 09:42:22 +0800

说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午。

以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:

UTC + 时区差 =
http://blog.chinaunix.net/u/17855/showart_373394.html

在Linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在Linux下编写程序的一个大问题。

  是不是说没有一种内存检查工具能够在Linux使用呢,也不是,像valgrind工具还是相当不错的。他的下载地址是http://valgrind.org/downloads /current.html#current 下载一个valgrind 3.2.3 (tar.bz2) 工具,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等。这是一个没有界面的内存检测工具,安装后,输入 valgrind ls -l 验证一下该工具是否工作正常(这是README里面的方法,实际上是验证一下对ls -l命令的内存检测),如果你看到一堆的信息说明你的工具可以使用了。

  在编译你的程序时,请设置-g参数,编译出后使用如下的命令来判断你的程序存在内存泄露:

  valgrind --tools=memcheck --leak-check=full yourProg在输出信息中就会看到你的内存问题了。关于这些参数是什么意思可以参考valgrind --help 的输出信