正则表达式简述

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在,比如判断一个字符是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。

正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。故判断一个字符串是否是合法的Email的方法是:

1、创建一个匹配Email的正则表达式;

2、用该正则表达式去匹配用户的输入来判断是否合法。

正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更加强大。 继续阅读“正则表达式简述”

C/C++内存管理详解

内存管理是C++最令人痛心疾首的问题,也是C++最有争议的问题,C++高手从中获得了更优的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的无限怨恨,但内存管理在C++中无处不在,内存泄露几乎在每个C++程序中都会发生,故想成为C++高手,内存管理这一关是必须要过的,除非放弃C++,转到Java或者.NET,它们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。

伟大的Bill Gates曾经失言:

640K ought to be enough for everybody —— Bill Gates 1981

程序猿们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决方法就是发现所有潜伏的地雷并且排除它们,躲避是解决不了任何实质性的问题。 继续阅读“C/C++内存管理详解”

C之值得回味的结构体

面对大型C/C++程序时,只需观察其对struct的使用情况即可对其编写者的编程经验进行评估。由于大型C/C++程序势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。 继续阅读“C之值得回味的结构体”

C之回调函数

软件模块之间总存在着一定的接口,从调用方式上,可将它们分为三类:同步调用、回调以及异步调用。

同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,即被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或者事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常在实际应用中使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者中最简单的,而回调又常常是异步调用的基础。 继续阅读“C之回调函数”