Hunter的大杂烩 技术学习笔记

2008-08-30

html parser对比

Filed under: 技术话题 — hunter @ 4:17 pm

对比 htmlcxx (c++)和 htmlparser(java) :

1. 功能上htmlparser会更强大一些,提供了filter/http下载等能力,还有vistor模式等等,灵活强大;而htmlcxx主要是一个分析库,有html/css两个分析器,可以将内容分析为dom类型的节点树,以提供遍历的能力,还可以分析节点的属性,相比之下也比较灵活;

2.  两者在分析tag方面的能力相差不大,性能上,感觉htmlcxx速度比htmlparser快很多(不知道是不是我的elicpse导致的);

范例:

//htmlcxx_test.cc
 tree tr;

 HTML::ParserDom parser;
 parser.parse(sFileBuffer);
 tr = parser.getTree();
 
 tree::iterator it = tr.begin();

(more…)

2008-08-28

在C++Builder中安装Indy 10.2.3详细步骤[zt]

Filed under: 技术话题 — hunter @ 11:27 pm

在C++Builder中安装Indy 10.2.3详细步骤

作者:Tuuzed(土仔)    
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.cppblog.com/tuuzed/archive/2008/06/17/53771.html

第一步:下载Indy 10源代码 。

Indy是开源的项目,是由SubVersion来管理版本信息。主页中有给出链接地址:http://www.indyproject.org:8080/svn,进去后一定要注意:不要一个一个文件下载,要通过SubVersion系统的打包程序来打包源代码,防止遗漏或弄错成了测试代码;并只用选择trunk这个目录即可,其他的目录是给调试或测试的人员使用的(主页http://www.indyproject.org/Sockets/Download/IndyviaSubversion.EN.aspx上有说明),见图:

indy1

 

首先在trunk目录前打勾,在toggle右边的下拉框中选择“Download as zip”,按Go!下载源代码,保证是最新的了(看右边目录的时间)

Hunter注:也可以到这个网址下载http://www.indyproject.org/Sockets/wizard/DownloadWizard.EN.aspx

(more…)

2008-08-12

apache log patch

Filed under: 技术话题 — hunter @ 6:00 pm

修改 apache log 格式中的 %T 输出格式(从秒修改为微秒)

diff -uprBN –exclude=’*.o’ apache_1.3.33/src/include/httpd.h apache_1.3.33-patch/src/include/httpd.h
— apache_1.3.33/src/include/httpd.h   2004-10-28 00:34:01.000000000 +0800
+++ apache_1.3.33-patch/src/include/httpd.h 2008-08-12 16:14:14.000000000 +0800
@@ -667,6 +667,7 @@ struct request_rec {
     const char *hostname;  /* Host, as set by full URI or Host: */

     time_t request_time;   /* When the request started */
+    uint32_t request_time_usec;    /* When the request started */

     const char *status_line;   /* Status line, if set by script */
     int status;            /* In any case */

(more…)

2008-08-02

大规模服务设计部署经验谈[中]【转】

Filed under: 技术话题 — hunter @ 10:45 am

依赖管理
    在大规模服务中,依赖管理这个话题通常得不到应有的关注。一般的准则是,对于小型组件和服务的依赖关系,对于判断管理它们的复杂性来说,并不足以节约成本。在以下情况中,依赖关系存在重要意义:
    1.  被依赖的组件在大小和复杂度上有重要价值;
    2.  被依赖的服务在作为单一的中央实例时存在价值。
    第一类的例子有存储和一致性算法(consensus algorithm)的实现。第二类的例子包括身份和群组管理系统。这些系统的整体价值在于它们是一个单一且共享的实力,因此使用多实例来避免依赖关系就不是可选方案。
    假定要根据上面的标准判断依赖关系,那么用来管理它们的最佳实践有:
    ◆为延迟做好准备。对外部组件的调用可能需要很长时间才能完成。不要让一个组件或者服务中的延迟在完全不相关的领域中引发延迟;确保所有的交互都存在长度合适的超时时长,避免资源阻塞更长的时间。运营等幂性允许请求在超时后重启,即便这些请求可能已经部分或完全完成。确保所有的重启操作都得到报告,并给重启操作设定界限,从而避免反复故障的请求消耗更多的系统资源。
    ◆隔离故障。网站的架构必须能防止层叠的故障,要总是“快速失败(fail fast)”。当依赖服务出现故障时,把这些服务标注为停机,并停止使用这些服务,以避免线程因等待故障组件而阻塞。

(more…)

2008-08-01

别说坏话

Filed under: 技术话题 — hunter @ 8:10 pm

Google在后面看着呢….

11.JPG

Older Posts »

Powered by WordPress