huffman编码&解码器 (转)
huffman编码&解码器 (转)[@more@]/*huffman coder & decoder*/ include<stdio.h> #ifndef N #define N 27 #endif #define M (2*N-1) #define Max (100*N) #define Min 5 /*define each node's imformation*/ typedef struct nodetype { int weight ; int lch; int rch; int parent; char data; }node; /*structure code*/ typedef struct codetype { int bits[N];/*0,1*/ int start;/*1..n*/ }code; /*assistant variable*/ typedef struct sign { int wt; int num; }tag; /*typedef node huftree; typedef code huf
JDO能给我们带来什么 (转)
JDO能给我们带来什么 (转)[@more@]JDO能给我们带来什么 - 成本,管理,快速开发,随需应变…… (本文的版权属作者本人,欢迎转载,但必须注明出处和原作者)JDO规范的出台,给了传统的数据库应用,尤其是web方式的数据库应用一个新的机会,就是采用透明的中间件存储技术,减少传统开发的繁琐工作,提高开发和维护的效率,使我们能够应对新的互联网时代的日益迅速的需求变化。从开发的角度来看,我们进行J2EE标准的Web应用开发时,如果涉及到数据库,一般具有一定经验的开发团队都不会采用JSP+JdbC的方式直接进行数据库操作,那样做一方
微软在使用Linux? (转)
微软在使用Linux? (转)[@more@]张贴于Slashdot的一篇文章(http://slashdot.org/article.pl?sid=03/04/29/2310238)发现了一件有趣的事:“我的一位朋友正好买了台微软路由器(http://www.microsoft.com/hardware/broadban.NETworking/wiredbasestation.ASPx),然后要我帮他检测一下这玩意的安全性。ping denial攻击并未奏效,而一次端口扫描却让我发现了非常有趣的东东,TCP/IP栈指纹里包含了这么一条字符串:‘i586-pc-Linux-gnu’。是否这意味着微软必须提供Linux源代码给该产品的购买者?(译注:因为Linux是遵循GPL发布的,所以基于
使用多线程使软件界面具有较好的响应性 (转)
使用多线程使软件界面具有较好的响应性 (转)[@more@] 软件界面的响应特性是判断一款软件的非常重要的方面。一般来说,不管你软件功能做得有多么奇妙,如果软件有一点点死机的感觉都会让用户感到很讨厌,甚至怀疑你软件里是否藏有更大的问题。 要提高界面的响应特性,最好的办法莫过于使用多线程,并把呈现界面的线程独立出来。以前只有使用C++才能实现的多线程功能,现在在.NET框架下,所有的语言(包括VB)都可以使用了。不过,使用多线程比使用单一线程要麻烦得多,比如线程之间的同步问题,做得不好很容易出错,而有的时候这
Struts 学习笔记1 -Struts Framework 概览 (转)
Struts 学习笔记1 -Struts Framework 概览 (转)[@more@]作者: Mailto:jrbruce@vip.sina.com">bruce -- Javaresearch.org/">Java研究组织Tuesday, January 21 2003 11:06 AM struts开始于2000年3月,1.0在2001年7月发布。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。MVC设计模式把一个系统分成3个相互协调的部分: .NET.com.cn/ads/image/advert_mu_stat.gif" width=336> Model(模型)模型用于封装系统的状态View(视图)是模型的表示,提供用户交互界面。当模型状态发
在应用程序中监视剪贴板的变化和内容 (转)
在应用程序中监视剪贴板的变化和内容 (转)[@more@]在应用程序中监视剪贴板的变化和内容XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> Mailto:stove@vip.sina.com">stove@vip.sina.com 剪贴板是windows中系统级的堆空间,系统中任何一个应用程序对剪贴板都有访问权,可以通过剪贴板消息和使用剪贴板api来读写剪贴板内容。因此使用剪贴板不仅可以在同一个应用程序内交互数据,也可以在不通应用程序之间交互数据。尤其是在不通应用程序之间交互时,应用程序往往需要对剪贴板内容的变化做到实
跟踪标记全攻略 (转)
跟踪标记全攻略 (转)[@more@]跟踪标记 一 概述跟踪标记用于临时设置服务器的特定特征或关闭特定行为 二 分类 1. BOL记载的跟踪标记 描述 260 打印有关扩展存储过程动态链接库 (DLL) 的版本信息。 有关 __GetXpVersion() 的更多信息,请参见创建扩展存储过程。 1204 返回参与死锁的锁的类型以及当前受影响的命令。 补充 此参数将把死锁产生的相关信息(锁类型,sql查询等)写入Error Log 2528 通过 dbCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 禁用对象的并行检查。 默
编程修养(七) (转)
编程修养(七) (转)[@more@]28、||和&&的语句执行顺序————————————条件语句中的这两个“与”和“或”操作符一定要小心,它们的表现可能和你想像的不一样,这里条件语句中的有些行为需要和说一下: express1 || express2 先执行表达式express1如果为“真”,express2将不被执行,express2仅在express1为“假”时才被执行。因为第一个表达式为真了,整个表达式都为真,所以没有必要再去执行第二个表达式了。 express1 && express2 先执行表达式express1如果为“假”,ex
编程修养(四) (转)
编程修养(四) (转)[@more@]11、出错信息的处理—————————你会处理出错信息吗?哦,它并不是简单的输出。看下面的示例: if ( p == NULL ){ printf ( "ERR: The pointer is NULL " ); } 告别学生时代的编程吧。这种编程很不利于维护和管理,出错信息或是提示信息,应该统一处理,而不是像上面这样,写成一个“硬编码”。第10条对这方面的处理做了一部分说明。如果要管理错误信息,那就要有以下的处理: /* 声明出错代码 */ #define ERR_NO_ERROR 0 /* No error
编程修养(六) (转)
编程修养(六) (转)[@more@]23、static的使用————————static关键字,表示了“静态”,一般来说,他会被经常用于变量和函数。一个static的变量,其实就是全局变量,只不过他是有作用域的全局变量。比如一个函数中的static变量: char*getConsumerName(){ static int cnt = 0; .... cnt++; ....} cnt变量的值会跟随着函数的调用次而递增,函数退出后,cnt的值还存在,只是cnt只能在函数中才能被访问。而cnt的内存也只会在函数第一次被调用时才会被分配和初始化,以后每次进入函数,都不为static分
编程修养(五) (转)
编程修养(五) (转)[@more@]16、把相同或近乎相同的代码形成函数和宏————————————————————— 有人说,最好的程序员,就是最喜欢“偷懒”的程序,其中不无道理。 如果你有一些程序的代码片段很相似,或直接就是一样的,请把他们放在一个函数中。而如果这段代码不多,而且会被经常使用,你还想避免函数调用的开销,那么就把他写成宏吧。 千万不要让同一份代码或是功能相似的代码在多个地方存在,不然如果功能一变,你就要修改好几处地方,这种会给维护带来巨大的麻烦,所以,做到“一改百改”,还是要形成函数或是宏
编程修养(三) (转)
编程修养(三) (转)[@more@]6、if 语句对出错的处理———————————我看见你说了,这有什么好说的。还是先看一段程序代码吧。 if ( ch >= '0' && ch <= '9' ){ /* 正常处理代码 */ }else{ /* 输出错误信息 */ printf("error ...... "); return ( FALSE ); } 这种结构很不好,特别是如果“正常处理代码”很长时,对于这种情况,最好不要用else。先判断错误,如: if ( ch < '0' || ch > '9' ){ /* 输出错误信息 */ printf("error ...... ")
微软二十五年(比尔·盖茨) --- 前 言 (转)
微软二十五年(比尔·盖茨) --- 前 言 (转)[@more@]微软二十五年 比尔·盖茨 前 言 我总是惊异于我们竟然能够走这么远。2003-5-51728481.jpg" align=right> 微软的故事开始于1975年。当时我的朋友保罗•艾伦和我在《大众电子》(Popular Electronics)上看到了一篇描写MITS Altair 8800的“个人计算机”的文章。Altair与我们那时使用的大型机很不同。这是一种为电脑爱好者准备的自己动手组装的东西 - 它在邮寄来的时候并未完全组装好,只是一些散件和一张复印的说明。经过几天(或几个星期)的焊接、组装才能最终完成这个大小
编程修养(一) (转)
编程修养(一) (转)[@more@]编程修养———— 什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造性思维。 3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,戒骄戒燥。 5、写出的代码质量高。包括:代码的稳定、易读、规范、易维
编程修养(二) (转)
编程修养(二) (转)[@more@]1、版权和版本———————好的程序员会给自己的每个函数,每个文件,都注上版权和版本。 对于C/C++的文件,文件头应该有类似这样的注释:/************************************************************************** 文件名.NETwork.c** 文件描述:网络通讯函数集** 创建人: Hao Chen, 2003年2月3日** 版本号:1.0** 修改记录:*************************************************************************/ 而对于函数来说,应该也有类似于这样的注释: /*=========
用PHP实现验证码功能 (转)
用PHP实现验证码功能 (转)[@more@]用PHP实现验证码功能 by hutuwoRM ??目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了 验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输 入表单提交网站验证,验证成功后才能使用某项功能。 ??我们这里展示了如何编写PHP程序实现验证码功能: ??代码一: <? /* * Filename: authpage.php * Author: hutuworm &nb
SQL Server中检索语句中Like的算法实现 (转)
SQL Server中检索语句中Like的算法实现 (转)[@more@]本文主要对字串匹配Like的算法实现,在sql SERVER中Like的匹配中主要有表现为对两个通配符的处理,分别为“_”代表一个字符,“%”代表任意个字符。由于“%”在匹配过程中的位置任意性,所以完全匹配、通配符“_”匹配与此不应该一起参与匹配运算,所以我们决定在匹配前先将子串按“%”分段,进行逐段匹配,显然降低了匹配算法的难度,下面讲解一下算法的实现过程:(后附实现源码) 1. 确定第一个“%”的位置, 目的:确定模式匹配的方式 a> 是以“%”开头则不需要
在Linux Shell程序中进行身份验证[修订版] (转)
在Linux Shell程序中进行身份验证[修订版] (转)[@more@]在Linux shell程序中进行身份验证 by hutuworm ◎感谢qjwyk网友指出数字开头的userid/password无法验证的问题, 在修订版中已作改进。 ※缘起 Linux系统管理员常常碰到的头痛问题是,在确定系统没有被入侵的前提下,不知道哪个猪头不小心运行了某个特定用途的Shell程序,把系统搞得一塌糊涂。而且,系统记录显示该猪头使用的是公用帐号(root或者admin),你无法知道这个猪头在现实生活中具体对应的是哪一头猪。 ※开场 针对以上问题,解决方案有二:其一,追查时间和ip,根据时
第一次制定<项目管理制度试运行条例> (转)
第一次制定<项目管理制度试运行条例> (转)[@more@] 为了加强项目的规范性管理,确保项目的可控性,暂行制定规章制度如下,望各项目成员密切配合项目负责人的工作。 由于本制度未经过充分的实践,难免有不足之外,需要各项目成员多提宝贵意见。如有不妥,经研究调整或增减后另行通知,在未作修改之前原工作制度将仍然有效。 小组工作制度自即日起生效并执行。 一、周工作制度 1、 由项目负责人编写本周工作计划,各项目成员根据分配的计划分别编制相应的个人工作计划。同时必须在周一上午完成。在计划中必须明确指明
让TList类型安全 (转)
让TList类型安全 (转)[@more@]在VCL中包含有一个TList类,相信很多朋友都使用过,它可以方便的维护对象指针,所以很多朋友都喜欢用它 来实现控件数组。不幸的是,这个TList类有一些问题,其中最重要就是缺乏类型安全的支持。 这篇文章介绍如何从TList派生一个新类来实现类型安全,并且能自动删除对象指针的方法。 TList的问题所在 对于TList的方便性这里就不多说,我们来看一下,它到底存在什么问题,在Classes.hpp文件中,我们可以看到函数的原型是这样申明的: int __fastcall Add(void * Item); 编译器可以把任何类型的指针转换为