评论:软件创业再度面临生死劫 (转)
评论:软件创业再度面临生死劫 (转)[@more@] “给你二十万元,三年之内你能够赚回多少钱?”——问题摆在面前的时候,大部分人不会说我三年就会把这些赔光,可是事实总是那么无情。 中国软件业最近一次高潮并不是发生在即将过去的2000年,而是1年前的“红色正版风暴”。今年的无论是“I软件”还是“金山.NET”,终究给人一种概念炒作的嫌疑。今年中国软件业不管是思路还是发展方向,都齐刷刷的转向了Internet,仿佛没有Internet作为支撑,软件业的发展就失去了方向。对于软件业来讲,Internet不是万能的,但是没有Internet绝对是万万
Understanding Strings In COM (转)
Understanding Strings In COM (转)[@more@] Understanding Strings In COMXML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> By ASP">Davide Marcato System Notes To replicate the steps described in this article, you'll need windows 95+ or windows NT 4.0+ and Visual C++ 5.0 or higher. ANSI and Unicode, char and wchar_t were not enough: com introduced several new string data types, and the differences and the process of conversion are not always obvious to the
鼠标屏幕取词技术的原理和实现 (转)
鼠标屏幕取词技术的原理和实现 (转)[@more@] 鼠标屏幕取词技术的原理和实现 白瑜 “鼠标屏幕取词”技术是在电子字典中得到广泛地应用的,如四通利方和金山词霸等软件,这个技术看似简单,其实在windows系统中实现却是非常复杂的,总的来说有两种实现方式: 第一种:采用截获对部分GDI的api调用来实现,如TextOut,TextOutA等。 第二种:对每个设备上下文(DC)做一分Copy,并跟踪所有修改上下文(DC)的操作。 第二种方法更强大,但兼容性不好,而第一种方法使用的截获WindowsAPI的调用,这项技
Delphi的嵌入式asm一例: Byte快速转换为16进制字符串 (转)
Delphi的嵌入式asm一例: Byte快速转换为16进制字符串 (转)[@more@] 上次Delphi做的asm内嵌过程/函数格式是:procedure ProcName(...);asm ...end; 对这种过程/函数,整个由asm写成。内嵌asm还有一种常见用法,就是在程序局部调用asm:function ByteToHex(Src: Byte): String;begin SetLength(Result, 2); asm MOV EDI, [Result] MOV EDI, [EDI] MOV AL, Src MOV AH, AL // Save to AH SHR AL, 4 // Output High 4 Bits ADD&nbs
玩的就是“心”跳 - Athlon超频手记 (转)
玩的就是“心”跳 - Athlon超频手记 (转)[@more@] 玩的就是“心”跳 作者 白瑜 (文中所有图片,如有需要者请来信索取Mailto:bensilver@sina.com">bensilver@sina.com) Athlon虽然早已发布,声势也一直都不小,但遗憾的是我却一直都没有见过一台真正的Athlon系统,虽然无数的评测报告,无论是浮点运算还是3D性能显然都是对Athlon更为有利的,但似乎所有攒机的朋友都更愿意选择PIII,所以我每次邂逅Athlon都是在中关村的柜台里……出于这种对Athlon的仰慕和一直以来对amd的好感(当然还有一个更重要的原因),在对原来的PII
COM初学者必看,否则你会后悔的,嘿嘿~~...^_^ (转)
COM初学者必看,否则你会后悔的,嘿嘿~~...^_^ (转)[@more@] 这是我学习COM遇到的几个基本问题其解决 Mailto:vcmfc@sina.com">黄森堂(vcmfc)著 1.我用ATL生成一个组件对象,我在COM中使用IDD_IEncrypt,这个在哪里写义,是啥?GUID?答:IDD_IEncrypt是GUID,也称作CLSID,放到该项目的对象的xxx_i.c文件中。 2.S_OK,NOERROR等常量中定义在哪些文件上(偷一下懒)(VC6.0)。答:winerror.h中 3.我在一个ASP组件对象中有构造函数使用SysAllocString()分配内存在该对象的类变量,在DLL Release memory的时候,我要调用SysfreeStr
解决了几乎所有Delphi+Access同仁的问题—动态创建、压缩Access数据库(*.MDB) (转)
解决了几乎所有Delphi+Access同仁的问题—动态创建、压缩Access数据库(*.MDB) (转)[@more@]动态创建、压缩Access数据库(*.Mdb) 声明:这是前无古人,后无来者的解决方案(有点吹,但是我实在太激动了!),希望各位能多多关照创建Access数据库几乎是所有Delphi+Access所遇到的难题,我经过两头(昨天上午到现在)的艰苦奋战,终于将它全部解开,现在一一奉献给大家: 一、通过OLE方式创建 相信各位都用通过OLE方式访问word、excel文件的经历,具体我不说太多,直接把具体代码写出来就完了 在引用部分加入: uses
用VB编写抽奖程序 (转)
用VB编写抽奖程序 (转)[@more@] 用VB编写抽奖程序{ 一、界面设计 新建一个标准的EXE工程。在Form1窗体中放置一个定时器(Timer1)、两个文本框(Label1,Label2)、两个命令按钮(Command1,Command2)和包含7个元素的控件数组(Label3(0)—Label3(6))。 二、属性设置 Label3控件数组中的所有元素皆采用相同设置。 三、代码编写 本程序的实现原理是:当用户单击“开始”按钮时,打开定时器,利用定时器控件同时产生两个随机数sj1、sj2,sj1的范围是1~32,sj2的范围是0~49。当sj1=24的时侯,用sj2与前面产生
<<AI入门(5)>>(C) (转)
<>(C) (转)[@more@]AI(5) 不知你学过离散数学没有,如果学过下面的可以跳过,没学过的最好找一本书学学. 我们来看看知识表示法的另一种表示方法:谓词逻辑法 谓词逻辑的基本组成部分为:谓词符号,变量符号,函数符号和常量符号,例如要表示机器人(ROBOT)在房间(ROOM)里,我们可以用简单的原子公式: INROOM(ROBOT,ROOM) 其中ROBOT和ROOM为常量符号,INROOM为谓词符号,可以当成是一个函数,一个映射.它有一个确定的值.要么是真,要么是假. 下面来讲讲连词和量词: 连词: / 表示与,当连接的两个原子公式都是真时,公式为真 / 表示
<<AI入门(10)>>(C) (转)
<>(C) (转)[@more@]我们来讲讲高级求解技术: 1.规则演绎系统: 我们用if-then规则来求解问题: IF if1 if2 if3 ... THEN then1 then2 then3 ... 如果then后面是新断言,那么称为规则演绎系统,如果then后面是用于规定动作我们称为反应式系统. 我们说说规则演绎系统,通常我们把规则演绎系统中每个if为前项,每个then为后项.从前项向后项推理 的过程叫做正向推理,反之叫做逆向推理.正向推理是从事实或状况向目标活动作进行操作. 我们通常把事实表示为非蕴含形式的与或形
<<AI入门(1)>>(C) (转)
<>(C) (转)[@more@]AI(1) 知识表示法: 任何复杂的求解技术都由表示和搜索两部分,我们下面将介绍几种知识的表示法: 1.状态空间法: 状态(state):描述某类不同事物间的差别而引入的一组最少变量的由序集合,表示为: Q=[q0,q1,...,qn]T 上面Q中的每个变量qn称为状态变量. 状态空间(state space):表示该问题的全部可能状态及其关系图 我们以15数码难题为例来说明状态空间表示的概念: 它由各起始状态,有个目标状态,而每一种走法都是一种状态,整个可能的状态组成了状态空间. 我们下面用图来表示状态空间: 起始状态为根
<<AI入门(9)>>(C) (转)
<>(C) (转)[@more@]消解原理: 在我们前面所说的谓词公式,推理规则和置换合一等概念基础上我们进一步研究消解原理. 什么是消解? 我们举个例子:如果存在公式E1/E2和另一个公式~E2/E3,那么E1/E3在逻辑上 就成立,这就是消解,我们称E1/E3为E1/E2和~E2/E3的消解式. 在说明消解过程之前,我们先说明任意一谓词演算公式可以化成一个字句集.变换过程如下: 1.用/和~符号消去=> 如:以~A/B替换A=>B 2.减少否定符号的辖域,每一个否定符号只用到一个谓词符号上 如:以~A/~B替代~(A/B) 3.对变量标
<<AI入门(6)>>(C) (转)
<>(C) (转)[@more@]置换和合一: 置换: 在谓词逻辑中一个重要的规则是假元推理,它是由合式公式W1和W1=>W2产生合式公式W2,另一个重要的规是则全称化推理:它是由合式公式(-/x)W(x)产生合式公式W(A). 例一: 表达式P[x,f(y),B]的4个置换是: s1={z/x,w/y} s2={C/y} s3={q(z)/x,A/y} s4={c/x,A/y} 可以得到: P[x,f(y),B]s1=P[z,f(w),B] P[x,f(y),B]s2=P[x,f(C),B] P[x,f(y),B]s3=P[q(z),f(A),B] P[x,f(y),B]s4=P[c,f(A),B] 置换是可以结合的: 用s1 s2表示两个置换,L表示一表达式,则有: (Ls1)s2=L(s1s2)和(s1s2)s3=s1(
<<AI入门(4)>>(C) (转)
<>(C) (转)[@more@]我们讲一讲A*算法: 我们描述一个特别的估价函数f(n),它能估算出从起始节点到n最小代价路径的代价和节点n到一目标节点的最小代价路径的代价总和. 我们在介绍A*算法之前先介绍一些有用的记号: k(n,m)表示从节点n到m的之间的最小代价路径的代价,m和n必须是连通的. h*(n)表示n到整个目标节点集合的所有最小代价路径中最小的一个,也就是说h*(n)是n到目标节点的最小代价.我们定义g*(n)=k(S,n)表示从开始到节点n的最小代价的路径的代价.设f*(n)=g*(n)+h*(n)表示从开始节点通过节点n到目标节点的最小代价路径的代价.
<<AI入门(3)>>(C) (转)
<>(C) (转)[@more@]盲目搜索的效率很低,耗费很多时间和空间,如果我们能找出一种用于从排,及选择最有希望的节点.我们称这种搜索为"启发式搜索"或"信息搜索". 进行这种搜索需要有关的信息,这信息称为启发信息,它可以分为3种: 1.用于决定哪个为最有希望的节点,以免盲目的搜索 2.决定从排的顺序. 3.决定那些节点应从搜索树中丢弃. 我们下面就讲一讲第一种,也就是判断哪个为最有希望的节点: 有序搜索:又称为有最好优先搜索(best-first search). 尼尔逊(Nilsson)提出了一个有序搜索的基本算法:估价函数f是这样决定的:一个节
用VC 实现图象渐显和渐隐 (转)
用VC 实现图象渐显和渐隐 (转)[@more@]作者: 周长发摘 要 图象的渐显/渐隐被广泛运用与图象处理和多媒提娱乐软件。本文基于windows的调色板动画和时间码技术设计了通用的图象渐显和渐隐算法,并实现了其Visual C++程序编码。关键词 渐显、渐隐、调色板、调色板动画、时间码图象的渐显/渐隐是十分重要的图象效果,广泛运用于图象处理和多媒提娱乐软件。渐显/渐隐算法设计的最大困难是速度控制,包括定时和快速改变图象中各象素的颜色。如采用普通的全图扫描算法,则速度较慢,很难真正体现渐显/渐隐效果。利用Windows(3.x.95/98/NT)操作系
VC++ MFC入门简明教程,我当时就是看了它一天入门的 (转)
VC++ MFC入门简明教程,我当时就是看了它一天入门的 (转)[@more@]虽然有些夸张,但是这是我看到的最条理和精悍的入门级文档。我由于有一点C++和windows开发基础,当时真的立刻明白了许多,(入门了)。每个开始学VC的人最大的问题就是总得看数百页才能有点眉目,这个文档可谓精品。如果你还在不得其门而入阶段,还是看看吧。 文档是DOC的,比较大。贴了数次均告失败,我也不想把这么好的东西分割成好几块赚取分数,只好先放在我网页上了,压缩后50K左右,直接用如下联接下载。 http://go1.163.com/~heavenandearth/vc/mfcfirst.zip To
<<AI入门(2)>>(C) (转)
<>(C) (转)[@more@]AI(2) 问题的归约: 我们来看看梵诺塔难题: 有三根柱子(1,2,3)和三个不同大小的圆盘(Aoop:若OPEN是空表,推出 3.选择OPEN表的第一个节点,把它从OPEN中移到CLOSED表中,称此节点为n 4.若n为目标节点,择有解退出,此解为从S到n. 5.把n的后续节点填入G中 6.对于那些未在G中出现的节点加入OPEN中. 7.从排OPEN表,GOTO LOOP 我们可以看到最重要的事第7步的从排,这种排序可以是任意的,这就是盲目搜索了, 如果我们先搜索最接近起始节点的节点,我们称之为宽度优先搜索. 如果我们先搜索最新产生的节点,我们
VC的拨号上网程序 (转)
VC的拨号上网程序 (转)[@more@] 大家知道,.NETants、DOWNLOAD Expert等软件中都带有定时拨号上网下载软件的功能。而一般用户的拨号上网,利用的是windows的Remote Access Service(RAS,远程访问服务)。下面介绍一下其在Visual C++下的实现。 Visual C++为我们提供了包含RAS api声明的“ras.h″头文件。要在程序中实现拨号上网功能,其大致过程如下: 1. 利用Modem拨号进行连接,应使用RasDial函数。 其声明如下: Dword Ras Dial(LPRASDIALEXTENSIONS lpRas DialExtensions,LPCTSTR lpszPhonebook,LPRASDIAL
UNIX中的消息 (转)
UNIX中的消息 (转)[@more@] unix中的复用消息 System V中的IPC技术是指进程间相互通讯技术。消息队列使用消息队列标识符标识,具有足够权限的任何进程都可以往一个给定消息队列放置消息,并且也可以从队列中读出消息。与一个队列中的每个消息相关联的类型字段可用于标识消息,从而允许多个进程在单个队列上复用消息。 考虑我行储蓄通存通兑的实现过程,模拟一个服务器进程带多个客户。具体实现过程如下 :1 .定义一个消息结构: typedef struct { int pid ; // 客户进程id