Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

用状态机实现XML解析器 - C++环境

用状态机实现XML解析器 - C++环境

摘要 本文介绍一种文本解析的方法:状态切换法 (状态机), 并给出C/C++下的实现.这是我3年前写的代码,用C++实现一个XML解析器.现在再翻出来看,觉得还是有些可取之处,尤其是实现XML文本解析时采用的状态切换法 (姑且先这么叫吧,后文有详细解释这个方法的实现)不仅仅可以用来解析XML,几乎所有的文本流都可以用这种方法来解析 (我记得以前上编译原理时,讲到过词法分析器,用状态机 ,方法类似, 看来上课还是要认真听讲,不定什么时候就用上了.) 同时也有...
WinSock 下 select() 模型的一个问题

WinSock 下 select() 模型的一个问题

在 Windows Socket 中, 默认 select() 一次只能支持 64个套接字. (Linux 下一个 select() 函数能够管理的套接字多得多. 一般默认就有 4096个. select() 函数接口虽然一样,实现上有巨大差别.) 对于一个服务器程序来说显然太少了. 虽然可以修改FD_SETSIZE的值,但是考虑到栈大小的限制也不宜设置过大的数组长度.自然而然的,会考虑使用多线程. 如果每个线程管理64个套接字,那么多开几个线程就可以突破...
臃肿的C++ - 浅谈过度包装

臃肿的C++ - 浅谈过度包装

几乎所有使用OO语言(C++, Java)的程序员都有过度包装的倾向. 不管什么都先用类包一层.代码的层次非常厚.很多C++源代码由于包装层次过多,有时候甚至为了包装而包装,读起来非常费劲. 因为很多东西都是经过原作者抽象过的,如果读者对作者的设计思想把握得不好,读起来有云里雾里的感觉.我倾向于C++应该仅仅只是"带类的C", STL应该维持在一个最小的集合内 .C语言是最接近程序设计本质的语言,自由,灵活, 纯言语言的东西很少. C的确是一个很小,很简洁...
C++ TR1正则库使用示例

C++ TR1正则库使用示例

[背景介绍]要想在程序中使用正则表达式,首先需要有库支持.目前比较有影响的C++正则库主要有GNU Regex Library,它是glibc的一部分.另一个就是PCRE全称是Perl Compatible Regular Expressions.从名字我们可以看出PCRE库是与Perl中正则表达式相兼容的一个正则表达式库.PCRE是免费开源的库,它是由C语言实现的,这里是它的官方主页:http://www.pcre.org/ PCRE++是一个对PCRE...
Redis入门教程

Redis入门教程

本文包括如下内容:Redis简介 Redis的性能 安装Redis、Redis启动参数介绍 应用实例:利用Redis构建简单的微博系统(官方例子链接)[注:入门教程,仅供菜鸟]1.Redis简介Redis是一个key-value存储系统。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持pu...
关于ARM的中断--向量与非向量的区别

关于ARM的中断--向量与非向量的区别

向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量IRQ。FIQ(fast interrpt request)快速中断请求要求具有最高优先级。如果分配给FIQ的请求多于一个,VIC将中断请求相或后向ARM处理器产生FIQ信号。当只有一个中断被分配为FIQ时可实现最短的FIQ等...
Android开发教程:仿通讯录ListView小例子

Android开发教程:仿通讯录ListView小例子

写这例子的初衷是想模仿通讯录列表,实现了一些效果,也没法做到100%相像,自己也认为还有一些不足(存在些内存上的浪费)。这个阶段先这样了,代码量比较大,就不贴代码了,只上效果图。源码下载地址:免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2012年资料/1月/26日/Android开发教程:仿通讯录ListView小例子/效果图如下: 1.实现根据字母进行分类。2....
Android开发教程:混淆Android代码

Android开发教程:混淆Android代码

刚升级的SDK2.3只是装上了还没细看。今天一看,呵呵,有收获了。2.3SDK的两个新特点:1.刚安装上2.3时,查看sdk目录,发现在<SDK_PATH>/tools下新增了一文件夹“proguard”,如下图,我就在想是不是Google终于官方对proguard考虑进去了。理论上,对java的混淆都是可以的,但关键在于如何编写proguard的混淆脚本。 2.使用SDK2.3后,新建的工程下和之前相比,都会多了一个文件“proguard.c...
<< 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 >>