摘要: NEOERR* hdf_init (HDF **hdf) { NEOERR *err; HDF *my_hdf; *hdf = NULL; err = nerr_init(); if (err != STATUS_OK) return nerr_pass (err); err = _alloc_hdf (&my_hdf, NULL, 0, NULL, 0, 0, NULL); if (err != STATUS_OK) return nerr_pass (err); my_hdf->top = my_hdf; *hdf = my_hdf; ... 阅读全文
posted @ 2012-02-29 00:19 Lesterwang 阅读(395) 评论(0) 推荐(0) 编辑
摘要: typedef struct _neo_err { int error;//用于记录错误类型 int err_stack;//记录错误层次,可以进行错误链跟踪 int flags;//此结构体是否在使用,当释放时并非真正释放时使用 char desc[256];//错误描述 const char *file;//出错的文件 const char *func;//出错的函数 int lineno;//出错的行数 /* internal use only */ struct _neo_err *next;//当此单元不再使用时,放到缓存队列,起到资源池的作用, ... 阅读全文
posted @ 2012-02-29 00:07 Lesterwang 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 浏览器安全模型规定,XMLHttpRequest、框架(frame)等只能在一个域中通信。从安全角度考虑,这个规定很合理;但是,也确实给分布式(面向服务、混搭等等本周提到的概念)Web开发带来了麻烦。为了实现跨域通信,通常的解决方案有3种:本地代理:需要一些硬件设施(没有服务器的客户端无法运行),并且带宽和潜伏时间也要加倍(远程服务器-代理服务器-客户端)。Flash:远程主机中需要部署一个crossdomain.xml文件,而且,Flash作为一门专有技术,其前途尚不明朗;换句话说,开发人员很可能要学习一种目标不确定的编程语言。Script标签:无法确切知道内容是否有效,没有标准的实现方法, 阅读全文
posted @ 2012-02-26 23:56 Lesterwang 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容的长度。进行Chunked编码传输的HTTP Response会在消息头部设置:Transfer-Encoding: chunked表示Content Body将用Chunked编码传输内容。Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就 阅读全文
posted @ 2012-02-24 10:59 Lesterwang 阅读(3686) 评论(1) 推荐(0) 编辑
摘要: 由于HTML5近两年的火爆程度,越来越多的人员加入到HTML5的队伍中。各个浏览器厂商也在积极跟进,但是在中国市场上,依旧占着大部分市场的还是IE系列浏览器,IE6/IE7/IE8这些过时浏览器依旧是顽疾在坚挺这。这也导致前端开发人员必须想办法让这些浏览器兼容HTML5的新标签,例如header、nav、footer等标签。 下面介绍一下如何让这些浏览器兼容HTML5标签。原理是通过JS模拟这些新的标签并输出,下面是JS代码: <!--[ifIE]><script>(function(){if(!/*@cc_on!@*/0)return;vare="abbr, 阅读全文
posted @ 2012-02-24 00:59 Lesterwang 阅读(2139) 评论(0) 推荐(1) 编辑
摘要: Linux多线程函数用得比较多的是下面的3个pthread_create(),pthread_exit(),pthread_join();它们都是在头文件之中。编译时需要加静态库-lpthread下面是函数的说明: pthread_create是UNIX环境创建线程函数 int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict_attr, void*(*start_rtn)(void*), void *restrict arg); 返回值 若成功则返回0,否则返回出错编号 返回成功时,由... 阅读全文
posted @ 2012-02-22 11:11 Lesterwang 阅读(2973) 评论(0) 推荐(0) 编辑
摘要: 模式匹配的一种改进算法----KMP算法 这种改进算法是D.E.Knuth与V.R.Pratt和J.H.Morris同时发现的,因此人们称它为克努特-莫里斯-普拉特算法(简称为KMP算法)。该算法可以在O(n+m) 的时间数量级上完成串的模式匹配操作。其改进在于:每当一趟匹配过程中出现字符比较不等时,不需回溯i指针,而是利用已经得到的‘部分匹配’的结果将模式 向右‘滑动’尽可能远的一段距离后,继续进行比较。 一般情况下,假设主串为s0s1…sn-1,模式串为p0p1…pm-1,从上例的分析可知,为了实现改进算法,需要解决下述问题:当匹配过程中产生“失 配”(即si≠pj)时,模式串“向右滑动. 阅读全文
posted @ 2012-02-22 00:15 Lesterwang 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 为什么要用转义字符串?HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,该怎么办呢?这就要说到HTML转义字符串(Escape Sequence)了。转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义 阅读全文
posted @ 2012-02-14 18:31 Lesterwang 阅读(2167) 评论(0) 推荐(0) 编辑
摘要: 命令 <非字面参数> [--option={参数1,参数2,参数3}] [可选参数...]“<”(小于)和“>”(大于)符号表示必选参数,在实际使用的时候应该将其替换为您所需要的参数。 例如,<文件名>即代表实际的文件名。如果文件的名称是 foo.txt,您就应该输入 foo.txt,而不是 <foo.txt> 或 <文件名>。方括号(“[ ]”)代表可选参数,您在命令中可根据需要加以取舍。省略号(“……”)意味着可包含任意多个参数。大括号(“{ }”)包含此处允许使用的参数。实际使用的时候只需要给出其中一个即可。 阅读全文
posted @ 2012-02-14 18:29 Lesterwang 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对 阅读全文
posted @ 2012-01-08 22:28 Lesterwang 阅读(175) 评论(0) 推荐(0) 编辑