Ajax 原理图解

Ajax 原理图解

众所周知,Ajax并不是一个新生的语言,它是一系列语言的结合体:HTML/XHTML、CSS、DOM、XML、XSLT、XMLHttp、JavaScript。可以说Ajax涉及的知识面的确是很广的,在Web开发中为我们提供了很方便的交互式用户体验模式。以往我们浏览网页的原理是由Client向Server提交页面申请,再由Server将申请通过HTTP传回给Client生成浏览页面:

让程序飞 之 性能工具:valgrind –tool=callgrind & kcachegrind[zz]

让程序飞 之 性能工具:valgrind –tool=callgrind & kcachegrind[zz]

gprof这个常用的性能工具,用来性能调优很方便。但是!!有个致命的缺点,不能处理动态链接库(dlopen()加载的)。sigh… 那遇到动态链接库怎么调优呢,用这个工具callgrind。 同样是valgrind工具集中的一个,使用也是同样方便。gcc带上-g参数,然后用callgrind运行!

让程序飞 之 性能工具:gprof & gprof2dot[zz]

让程序飞 之 性能工具:gprof & gprof2dot[zz]

性能!性能! linux服务端编程,性能总是不可避免要思考的问题。 而单机(严格的说是单核)单线程程序(严格的说是逻辑)又是所有复杂应用的基础。所以,这块的性能是整个应用的基础。

让程序飞 之 内存工具:valgrind –tool=massif & massif-visualizer[zz]

让程序飞 之 内存工具:valgrind –tool=massif & massif-visualizer[zz]

之前提到过内存泄漏问题,我们有memcheck工具来检查。很爽。但是有时候memcheck工具查了没泄漏,程序一跑,内存还是狂飙。这又是什么问题。。。 其实memcheck检查的内存泄漏只是狭义的内存泄漏,或者说是严格的内存泄漏,也就是说,在程序运行的生命周期内,这部分内存你是彻底释放不了了,即,你失去了这些地址。

让程序飞 之 内存工具:valgrind–tool=memcheck[zz]

编写程序,尤其是服务器端程序,更尤其是linux服务器端程序(windows通常会定期重启。。。),更更尤其是linux服务端守护进程,最怕的就是内存泄漏。一旦你的程序有内存泄漏,哪怕是细微的泄漏,那你的程序也跑不久。少则几天,多则几个星期就会内存耗尽而亡(这取决于你机器的内存有多大)。

Ragel入门5——Scanner[zz]

Ragel入门5——Scanner[zz]

很久以前介绍过如何使用ragel来解析基于正则表达式的语言,ragel巧妙的利用了action来在一定程度上做了一些语法分析的活。但是,它基于状态机的基础决定了它不可能成为一个真正的语法分析器。所以,还是把词法分析做做好吧,前面漏说了一个非常重要的功能:Scanner(词法扫描器)。常用的词法扫描器是lex。ragel实现了类似的功能,但是有加上了ragel特有的action功能。这使得ragel的scanner显得非常强大顺手。

Ragel入门4——其他常用技术[zz]

Ragel入门4——其他常用技术[zz]

前面介绍了基本的ragel,我们已经能够写基本的解析器了。这篇介绍其他几个常用的基本的语法。

Ragel入门3——Action![zz]

好的,现在我们来讨论如何在Ragel解析的时候做我们想做的事情! 前面我们想解析表达式,并返回结果,那么我们想做的事情当然就是:ragel把解析好的两个数和运算符放到指定的变量里面去啦。 这就要用到Ragel的独门秘笈:Action!

Ragel入门2——嵌入宿主语言[zz]

接着上一篇,我们按照ragel的方式定义了一个解析器。好了,ragel已经知道生成什么样的解析代码了,但是ragel不知道的是,代码生成到哪里? 我们来告诉它:(以C语言为例)

Ragel入门1——简介

Ragel是个好东西啊,很好很强大。 它是什么? 它是个“状态机编译器”,就是说那是用来从某定义编译出状态机的工具。 其实它是个很好很强大的基于正则表达式和状态机的超级词法分析器。我们可以用它来生成强大的词法分析器,用来分析诸如配置文件、文本协议等。