
程序设计
文章平均质量分 58
anghlq
这个作者很懒,什么都没留下…
展开
-
Lucene的倒排索引(学习整理)
索引结构Live 1[2],2[1] 2, 5, 2live在文章1中出现了2次,文章2中出现了一次,它的出现位置为“2,5,2”这表示什么呢?我们需要结合文章号和出现频率来分析,文章1中出现了2次,那么“2,5”就表示live在文章1中出现的两个位置,文章2中出现了一次,剩下的“2”就表示live是文章2中第 2个关键字。索引组织关键字按字符顺序排列,故可用二元搜索算法快速定位。lu转载 2006-09-16 17:32:00 · 1590 阅读 · 4 评论 -
性能相关
1. 静态表索引比计算要快大小写转换使用两个256的ASCII码表分别存储均大写或小写的ACSII字母。大写转换时直接aUpAcsiiTbl[ch]就得到对应的大写字母了。http://blog.csdn.net/bluesoal/archive/2006/09/16/1230895.aspx2. 质数判断对一个Num的质数判断算法是,用Num除于比Sqrt(Num)小的质数,如果可以整除则非原创 2006-09-16 16:36:00 · 678 阅读 · 0 评论 -
多进程和多线程设计思考
特点多线程优点:提高系统的并行性,并且开销小。缺点:没有内存隔离,单个线程的崩溃会导致整个应用的退出,发生采内存等bug时,定位及其不方便。多进程优点:内存隔离,单个进程的异常不会导致整个应用的崩溃。方便调试。缺点:进程间调用,通讯和切换开销均比多线程大。应用程序域MacroSoft提出的解决方案,它结合了多线程和多进程的优点。相当于增加了内存隔离的多线程。托管代码原创 2006-09-16 14:27:00 · 2041 阅读 · 0 评论 -
.NET 线程池
C++可通过ACE 的Task类来方便实现线程池。ACE_Task类对象task,通过其activate()来启动n个线程。1. 各个线程通过在自处理函数中(task.svc())检索内部消息队列,来获取指令;2. 调度线程通过往task的消息队列填充指令来调度线程。3. 该消息队列是阻塞队列,而且可以设置水位高低阀来控制调度类的调度速度。.NET最大线程池线程数可排队到线程池的操作数原创 2006-11-02 21:59:00 · 1317 阅读 · 0 评论 -
利用数据库进行通讯设计
通过集群数据库的表进行通信。角色介绍:客户,在本地数据库上产生数据,或者进行配置信使,根据配置或直接的硬代码,把分布在不同主机客户的数据库中的信息,采集到订阅了这些信息的观察者主机上。观察者,周期的检查自己的数据库表,进行相应的操作。举例:1. 配置进程运行状态 客户对配置表进行添加和修改,信使把这些配置写到相应的后台观察者主机数据库上。后台管理进程周期扫描进行本地的进程表,进行进程的拉起和停原创 2006-11-03 22:33:00 · 1077 阅读 · 0 评论 -
文件操作的事务保证
对应数据库操作断点表更新和数据提交应该处于同一个事务中,通过数据库事务来保证完整性。文件操作 文件的解压和下载等,完成前应该放入临时目录中。完成后,从临时目录移动到工作目录,并同时删除或更名原始文件来避免重复采集。 尽管如此,还是不能保证移动成功但是更名或删除没完成前断电。有更完整的操作入库进程对待处理文件进行采集,重命名(yyyymmdd_sequence, 子进程tar –czf打原创 2006-11-03 22:50:00 · 2458 阅读 · 0 评论 -
概念
概念模块module 一组完成指定功能的语句组件component 系统中相当重要的、几乎是独立的可替换部分,它在明确定义的构架环境中实现确切的功能。模式pattern 指经过验证,至少适用于一种实用环境(更多时候是好几种环境)的解决方案模板(用于结构和行为。)架构模式architectural pattern 表示软件系统的基本结构组织方案。它提供了一组预定义的子系统、指定它们的职责,并且包括原创 2006-11-05 10:16:00 · 919 阅读 · 0 评论 -
控制台程序编程之启动和关闭
常驻内存的控制台程序编程启动和关闭的常用做法1.工作进程启动a.对特定文件加锁,通过特定文件加锁可以保证进程的唯一性。b.把当前进程的PID记录到临时文件a.tmp中c.运行。2.关闭工作进程a.关闭应用可以通过一个简单的shell脚本实现。读取a.tmp首行获取工作进程的pid,然后往该PID发信号。b.工作进程捕捉该信号,进行相关的收尾工作,然后退出进程。进程退出时,其锁定的文件将自动原创 2006-11-16 13:36:00 · 1469 阅读 · 0 评论 -
web设计思考--缓存(2)--集群服务器中缓存同步
为了减少底层数据的互动,一般都需要缓存。在一个集群环境中,可能某个session对数据进行了修改,而在另外一个客户端访问时,可能访问到了集群中另外一台服务器的脏数据。为了解决这个问题,必须增加一个同步机制。方案在任何server端发生了数据更改时,把修改涉及的ID通过HTTP请求,通知到其它服务器web service上。其它服务器把相应的缓存给清除掉,待下次收到请求时重新从底层提取。原创 2006-12-02 12:04:00 · 1292 阅读 · 0 评论 -
61条面向对象设计的经验原则
“你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。” ----------Arthur J.Riel(1)所有数据转载 2007-02-12 21:09:00 · 826 阅读 · 0 评论 -
计算Y轴端值
代码来自fusion1. 分别计算两个边界值相对10的对数(取下限值)。2. 计算间隔值y_interval a. 取两个对数的最大值为powTenb. 间隔值y_interval 为10的powTen次幂c. 如果边界值分别除于y_interval小于2的话, y_interval = y_interval/10 (除于10平衡一下,以端值距离某边的边界值过远)3. 端值计算y_topBoun原创 2007-01-11 18:06:00 · 1273 阅读 · 0 评论 -
关于SourceAnyWhere问题的一些领悟
公司的版本控制工具SourceAnyWhere,一旦发生批量文件check out其服务器CPU占用率就会上升导致对于SAW的操作极慢.分析其可能原因,1. 对于文件checkout,其是分解成N个命令,一个一个的请求.这样会导致反复的握手+确认信息; 在网络不稳定的情况下同时服务器的握手超时时间过短时.会导致网络,服务器负荷愈发增大,如同恶性循环越来越糟.2. 改进想法,批量文件操作看成一个原创 2007-04-19 19:58:00 · 1895 阅读 · 0 评论 -
web设计思考--缓存(1)--客户端缓存
把数据存放到客户端1. 适用数据的特点 海量,反复提取会影响网络带宽 稳定,很少改动 数据没有安全敏感性2. 流程A. 在页面中根据当前用户标识和最后一次修改的序列号,动态生成资源引用其中u是用户ID,n是修改的序列号,t是要获取的数据类别B. 在web.config中增加相应的URL请求映射 C.数据库表支持增加一张额外的表,只有两个字段,用户标识和修改序列号。原创 2007-08-15 18:43:00 · 866 阅读 · 0 评论 -
RUP
RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。 UML(Unified Modeling Language,统一建模语言)是一种用于对软件密集型系统的制品进行可视化、详述、构造和文档化的图形语言。RUP是Rational Unified Proces 的缩写,翻译成中文就是“统一软件过程”。转载 2007-08-29 16:25:00 · 803 阅读 · 0 评论 -
像工匠一样进行重构--《Refactoring WorkBook》
转自http://www.blogjava.net/calvin/archive/2005/10/04/14790.html像工匠一样进行重构, 让重构成为一门手艺.Martin Fowler的《Refactoring》其实更适合做一本关于重构的洗脑,宣言式的书,就像Kent Beck的《XP Explain》一样薄薄的就可以了。只可惜他却非常的厚,后面的重构名录都是写给小白看的。所以我更喜欢转载 2007-06-03 14:01:00 · 705 阅读 · 0 评论 -
代码片段 拖放
C# treeview拖放this.myTreeView.ItemDrag += new ItemDragEventHandler(this.myTreeView_ItemDrag);private void myTreeView_ItemDrag(object sender, ItemDragEventArgs e)...{ if (e.Button == MouseButtons原创 2007-09-07 20:52:00 · 1300 阅读 · 0 评论 -
Bug 原因列表
1. 代码修改不完整。 修改后的代码可能被多个页面共享,修改时没有充分考虑和测试导致某些其他页面出现错误。2. 更新问题。A. 覆盖服务器定制文件。在更新时,那些需要定制的本地文件也更新到目标服务器上了。比如connectString或特定后台帐号, 在测试环境上和LIVE COM环境上可能存在不同,覆盖导致出错。B. 更新不全面。当某个改动涉原创 2008-02-19 19:03:00 · 909 阅读 · 0 评论 -
为 TCP 的重新传输实现更低的计时器粒度
为 TCP 的重新传输实现更低的计时器粒度 计时器轮算法如何减少开销转载 2007-12-14 22:53:00 · 741 阅读 · 0 评论 -
SQLSERVER结构
很多入门级做管理软件的,SQL语句玩的熟练,从子查询到Having到交叉表统计SQL都能做出来,甚至存储过程能写2000多行,游标、自定义 函数、触发器、约束用的眼花缭乱。再入点门,在SQL查询器中可以使用SQL分析优化索引,用SQL Profile可以跟踪SQL,甚至在性能查看器中监测SQLSERVER内存、CPU、线程、I/O的运行状态,甚至为自己会使用DBCC而沾沾自喜。 SQLSE转载 2008-04-08 07:16:00 · 763 阅读 · 0 评论 -
lucence相关转帖
1、tf = sqrt(phraseFreq)。所以,第一个结果里面的第二个doc的tf = sqrt(1.5)=1.2247。 2、idf = 所有term的idf的和。而一个term的idf = 1 - log((docFreq + 1)/numOfDocs)。也就是说,对于第一个结果来说,idf = 2 * (1 - log(5/4)) = 1.5537。 3、fieldNorm是事先计转载 2008-05-04 03:50:00 · 1511 阅读 · 0 评论 -
读书笔记
1 对于需要缓存的东西要优化空间,比如采取二进制,文件名采取前缀压缩等2 控制流和数据流分开,这样可以使控制器响应时间大大缩短3 对于大型文件不需要缓存,除了增加复杂度,没有什么意义4 元数据5 文件校验可以只抽取部分进行checksum,比如每1K的头尾字节6 对目录进行读锁(防止被删除),对要修改的文件进行写锁7 在分布式系统中,文件的版本号是必须的,否则会导致数据的不完整8 注意分析瓶颈,不原创 2008-05-02 11:09:00 · 569 阅读 · 0 评论 -
nutch plugin
Plugin中心(翻译) plugin(插件)为nutch提供了一些功能强大的部件,举个例子,HtmlParser就是使用比较普遍的用来分析nutch抓取的html文件的插件。 为什么nutch要使用这样的plugin系统? 有三个原因:1:可扩展性 通过plugin,nutch允许任何人扩展它的功能,而我们要做的转载 2008-05-07 10:53:00 · 1367 阅读 · 0 评论 -
笔记
1. 重配置,轻编程AOP, PLUGIN, provider,依赖注入只是控制反转(作为模式现在已经有10年历史了)的一部分。控制反转的另外两个方面是配置和生命周期。其含义是,类应该从外界获得配置 (更多的注入),生命周期状态变换同样也应该从外部进行控制。它们不应该在构造函数中配置自己、创建新线程或监听Sockets,在静态初始化时做这些事 情就更糟了。2. 采用以数据为中心的(da原创 2008-05-12 05:39:00 · 526 阅读 · 0 评论 -
函数式编程
数学实际上是一个谜语:我们设置了一系列基本的不冲突的原理和一些可以施加于这些原理的操作规则,然后我们就能堆砌这些规则以形成更复杂的规则。数学家把这种方法叫做“形式系统”或“演算”。函数式编程的优点单元测试因为函数式编程的每一个符号都是 final 的,没有函数产生过副作用。因为从未在某个地方修改过值,也没有函数修改过在其作用域之外的量并被其他函数使用(如类成员或全局变量)。这意味着函数求值转载 2008-05-20 12:52:00 · 827 阅读 · 0 评论 -
用函数式编程技术编写优美的 JavaScript
用函数式编程技术编写优美的 JavaScript转载 2008-05-24 05:21:00 · 558 阅读 · 0 评论 -
解答有关REST的十点疑惑
解答有关REST的十点疑惑 作者 Stefan Tilkov译者 徐涵 发布于 2008年5月22日 下午8时13分 在了解过REST之后,你肯定很想知道这个概念在你的实际应用当中究竟能派上多大用场。而且,假如你已经熟悉另一套完全不同的架构手法的话,那么你担心“REST或REST式HTTP(RESTful HTTP),是否真的能在实践中派上用场,还是在介绍转载 2008-05-26 14:03:00 · 961 阅读 · 0 评论 -
Yupoo! 的网站技术架构
Yupoo! 的网站技术架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一的转载 2008-06-02 02:42:00 · 1566 阅读 · 0 评论 -
ASMX 2.0、WSE 3.0 和 WCF
有关 ASMX 2.0、WSE 3.0 和 WCF 的内容 发布日期: 2006-4-5 | 更新日期: 2006-4-5Aaron Skonnard下载本文中的代码: ServiceStation0601.exe (115KB) Microsoft®.NET Framework 2.0 版通过几个有趣但可能令人困惑的方式重塑了 Web 服务的前景。因此,本月我打算解答一些与 ASP.NET转载 2008-10-06 07:49:00 · 1261 阅读 · 0 评论 -
分布式计算开源框架Hadoop介绍
分布式计算开源框架Hadoop介绍 作者 岑文初 发布于 2008年8月4日 上午2时15分 在SIP项目设计的过程中,对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计,在我从前写的文章《TigerConcurrent Practice--日志分析并行分解设计与实现》中有所提到。但是转载 2009-01-05 18:28:00 · 1676 阅读 · 0 评论 -
Some Java based open-source tools
DatabaseMySQLPostgreSQLFirebird(suitable for embedded database)HSQLDB(160K)DB TieHibernateIbat转载 2009-11-11 17:48:00 · 543 阅读 · 0 评论 -
Android 开发
ActivityActivity是为用户操作而展示的可视化用户界面。比如说,一个activity可以展 示一个菜单项列表供用户选择,或者显示一些包含说明的照片。一个短消息应用程序可以包括一个用于显示做为发送对象的联系人的列表的activity,一个 给选定的联系人写短信的activity以及翻阅以前的短信和改变设置的activity。尽管它们一起组成了一个内聚的用户界面,但其中每个 act转载 2010-04-26 20:00:00 · 888 阅读 · 1 评论 -
BB Mobile
Screen-----Field ^--| Stack---原创 2010-04-26 20:27:00 · 646 阅读 · 0 评论 -
filter & interceptor
1、 filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于java本身的反射机制,如果对这种形式不了解,可以去看看java是如何实现动态代理的,这是aop的基础。这是两者最本质的区别。2、 filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilt转载 2010-04-27 11:01:00 · 690 阅读 · 0 评论 -
Chrome
<br />是Plugin进程,每一个插件,在Chrome中都是以进程的形式呈现,等到后面说插件的时候再提罢了。Render进程和Plugin进程都与老大保持进程间的通信,Render进程与Plugin进程之间也有彼此联系的通路,唯独是多个Render进程或多个Plugin进程直接,没有互相联系的途径,全靠老大协调。。。<br />管道名字的协商<br />在Socket中,我们会事先约定好通信的端口,如果不按照这个端口进行访问,走错了门,会被直接乱棍打出门去的。与之类似,有名管道期望在两个进程间游走,原创 2010-06-24 22:47:00 · 656 阅读 · 0 评论 -
WEB开发优点
1. 方式多样。HTML+CSS+JS+ASP.NET(MVC, ASP.NET, WEBSERVICE)HTML+CSS+JS+CGIHTML+CSS+JS+J2EE(Spring, Struct,...)html template+js-engine+dynamic datahtml_template+js-tempalte+js-engine+dynamic data2. web天生就是分布式系统3. 动态JS语言可以根据情况,在客户端任意重构自己的页面方式多样,通原创 2010-07-02 00:18:00 · 3119 阅读 · 0 评论 -
Solaris 命令大全
Solaris 命令大全终端控制ctrl+s :终止屏幕输出,如用cat命令输出时,要停一下ctrl+q :恢复ctrl+q的输出ctrl+c :中断当前的活动,返回命令提示符ctrl+d :表示文件的结束或退出,如退出终端窗口ctrl+u :擦除整个命令行ctrl+w :擦除命令行最后一个单词ctrl+h :擦除命令行最后一个字符bc :计算器#ksh 切换到k shell命令: .................................转载 2010-07-07 23:17:00 · 15485 阅读 · 0 评论 -
Android 任务、进程和线程
任务、进程和线程 关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,转载 2010-05-19 16:12:00 · 1262 阅读 · 0 评论 -
Android多线程
我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在操作一些耗时操作时,比如I/O读写的大文件读写,数据库操作以及网络下载需要很长时间,为了不阻塞用户界面,出现ANR的响应提示窗口,这个时候我们可以考虑使用Thread线程来解决。 Android中使用Thread线程会遇到哪些问题? 对于原创 2010-05-20 22:37:00 · 12570 阅读 · 6 评论 -
Android Provider
NotesList详解 就从入口点所在的activity(见图1)开始,可以看到这个activity最重要的功能就是显示日志列表。这个程序的日志都存放在Sqlite数据库中,因此需要读取出所有的日志记录并显示。 先来看两个重要的私有数据,第一个PROJECTION字段指明了“转载 2010-05-21 14:49:00 · 8267 阅读 · 0 评论 -
什么是 Android
<!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--> 800x600 Normal 0转载 2010-05-27 13:44:00 · 739 阅读 · 0 评论