存档

‘开发’ 分类的存档

代码优化之殇之SCWS php extension篇

2011年11月28日 wenhui 没有评论

用ab测了下一段scws分词并且入库redis的代码,发现每次请求要花200ms,这个速度实在是弱爆了..

因为一直觉得分词是个工作量极大的工作,所以自然的认为问题处在分词上..

打开scws的phpext的代码,发现scws每次在open的时候都会重新载入分词词库..这是个问题..优化之..将scws的open做成popen(类似mysql_connect和mysql_pconnect的关系),发现速度没有改善.

再次发现scws中phpext获取分词结果scws_get_result的循环是在php中做的.好吧改善之,丢到phpext中用c来做..发现速度依旧没有改善..

最后在代码中到处输出时间..发现悲剧了..发现分词部分用了50ms不到,而入redis库花了150ms..晕..

优化redis入库的php部分..问题解决…

这个问题告诉我们….在发现瓶颈之后,一定得用合理的方式来查找瓶颈的具体位置..而不是靠猜…

分类: 开发, 挨踢 标签:

redis fulltext search egine cn,在github上开项目了

2011年1月12日 wenhui 没有评论

项目地址:https://github.com/frozendeath/redis-fulltext-search-cn

项目目的,用php+scws+redis实现一个中文的全文搜索引擎,替代mysql的fulltext来提高搜索精度和速度

当前实现的功能:
1.搜索结果按时间排序

分类: 开发, 项目 标签:

一个类似在ECUG Con 2010大会上大屏幕的东西,其实只能做聊天

2010年10月18日 wenhui 没有评论

参考效果:http://ecug.ncu.me/
readme.txt在压缩包里面
代码下载:
http://ecug.ncu.me/chat.zip

分类: 开发, 项目 标签:

C++中struct与class的区别是什么?[转]

2010年10月8日 wenhui 没有评论

来源:http://faq.csdn.net/read/211787.html
打基础
讨论一下结构(struct)与类(class)的区别,你认为结构(struct)有些什么作用,可以完全用类(class)取代么??
—————————————————————

问的人太多,干脆整理个FAQ吧。
首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的。毕竟不同的人偏好不同。

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。

不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些说明可能有助于澄清一些常见的关于struct和class的错误认识:
(1)都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数;
(2)都可以有一大堆public/private/protected修饰符在里边;
(3)虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:A a = {1, 2, 3};不管A是个struct还是个class,前提是这个类/结构足够简单,比如所有的成员都是public的,所有的成员都是简单类型,没有显式声明的构造函数。
(4)都可以进行复杂的继承甚至多重继承,一个struct可以继承自一个class,反之亦可;一个struct可以同时继承5个class和5个struct,虽然这样做不太好。
(5)如果说class的设计需要注意OO的原则和风格,那么没任何理由说设计struct就不需要注意。
(6)再次说明,以上所有说法都是指在C++语言中,至于在C里的情况,C里是根本没有“class”,而C的struct从根本上也只是个包装数据的语法机制。
—————————————————————

最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。

分类: CPP 标签:

Debian/Ubuntu下配置Subversion Server[转]

2010年7月12日 wenhui 没有评论

来源:http://huangro.javaeye.com/blog/365993

安装Apache2
#sudo apt-get install apache2
安装SVN
#sudo apt-get install subversion libapache2-svn
配置Apache2的配置文件 /etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /opt/svn/repos/
AuthType Basic
AuthName “My Respository”
AuthUserFile /opt/svn/password
Require valid-user
</Location>
创建项目目录
#sudo svnadmin create /opt/svn/repos/myproject
创建用户名和密码
#sudo htpasswd -c /opt/svn/passwd robinhuang (第二次创建可取消-c)
使Apache的某些模块有效
#sudo a2enmod dav dav_fs dav_svn
最后重载Apache
#sudo /etc/init.d/apache2 force-reload
注意:当创建一个项目之后,需要运行以下命令:
#sudo chown -R www-data: /opt/svn/repos
使得该项目的文件能够正常访问。
分类: apache, svn, 开发, 挨踢 标签: