??xml version="1.0" encoding="utf-8" standalone="yes"?>无码AV波多野结衣久久,久久精品无码一区二区三区,久久综合88熟人妻http://www.shnenglu.com/3522021224/category/4434.html我们的目?-中国IT_英 大家加a 我自׃加a,嘿嘿 zh-cnThu, 22 May 2008 13:34:15 GMTThu, 22 May 2008 13:34:15 GMT60COMlg?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/22/26803.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Thu, 21 Jun 2007 17:15:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/22/26803.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/26803.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/22/26803.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/26803.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/26803.html</trackback:ping><description><![CDATA[     摘要: 面向对象的思想难以适应q种分布式Y件模型,于是lg化程序设计思想得到了迅速的发展?<br> <br>按照lg化的E序设计的思想Q复杂的应用E序被设计成一些小的,功能单一的组件模块,q些lg模块可以q行在同一台机器上Q也可以q行在不同的机器上?<br> <br>  <a href='http://www.shnenglu.com/3522021224/archive/2007/06/22/26803.html'>阅读全文</a><img src ="http://www.shnenglu.com/3522021224/aggbug/26803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-22 01:15 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/22/26803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>贪心法_讲http://www.shnenglu.com/3522021224/archive/2007/06/16/26429.html 星梦情缘 星梦情缘Sat, 16 Jun 2007 03:40:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/16/26429.htmlhttp://www.shnenglu.com/3522021224/comments/26429.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/16/26429.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/26429.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26429.html阅读全文

星梦情缘 2007-06-16 11:40 发表评论
]]>
ACM大量习题题库http://www.shnenglu.com/3522021224/archive/2007/06/14/26292.html 星梦情缘 星梦情缘Wed, 13 Jun 2007 17:08:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/14/26292.htmlhttp://www.shnenglu.com/3522021224/comments/26292.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/14/26292.html#Feedback3http://www.shnenglu.com/3522021224/comments/commentRss/26292.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26292.html
USACO

http://ace.delos.com/usacogate

国著名在线题库Q专门ؓ信息学竞赛选手准备



TJU

http://acm.tongji.edu.cn/

同济大学在线题库Q唯一的中文题库,适合NOIP选手



ZJU

http://acm.zju.edu.cn/

江大学在线题库



JLU

http://acm.jlu.edu.cn/

吉林大学在线题库Q一直上不去Q?



PKU

http://acm.pku.edu.cn

北京大学在线题库



URAL

http://acm.timus.ru

俄罗斯乌拉尔大学在线题库



SGU

http://acm.sgu.ru/

俄罗斯圣萨拉托夫州大学在UK?



ELJ

http://acm.mipt.ru/judge/bin/problems.pl?lang=en

俄罗斯莫斯科物理技术学?



SPOJ

https://spoj.sphere.pl/

波兰g斯克理工大学



UVA

http://acm.uva.es/

西班牙的Universidad de Valladolid在线?

星梦情缘 2007-06-14 01:08 发表评论
]]>
VC调试q阶(3)--调试COM对象 http://www.shnenglu.com/3522021224/archive/2007/06/13/26242.html 星梦情缘 星梦情缘Wed, 13 Jun 2007 04:32:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/13/26242.htmlhttp://www.shnenglu.com/3522021224/comments/26242.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/13/26242.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/26242.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26242.html阅读全文

星梦情缘 2007-06-13 12:32 发表评论
]]>
ACM联系http://www.shnenglu.com/3522021224/archive/2007/06/13/26222.html 星梦情缘 星梦情缘Tue, 12 Jun 2007 16:47:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/13/26222.htmlhttp://www.shnenglu.com/3522021224/comments/26222.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/13/26222.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/26222.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26222.html阅读全文

星梦情缘 2007-06-13 00:47 发表评论
]]>
VC调试q阶(2)--多个exe http://www.shnenglu.com/3522021224/archive/2007/06/12/26213.html 星梦情缘 星梦情缘Tue, 12 Jun 2007 14:31:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/12/26213.htmlhttp://www.shnenglu.com/3522021224/comments/26213.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/12/26213.html#Feedback2http://www.shnenglu.com/3522021224/comments/commentRss/26213.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26213.html阅读全文

星梦情缘 2007-06-12 22:31 发表评论
]]>
VC调试q阶(1)http://www.shnenglu.com/3522021224/archive/2007/06/12/26145.html 星梦情缘 星梦情缘Tue, 12 Jun 2007 05:54:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/12/26145.htmlhttp://www.shnenglu.com/3522021224/comments/26145.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/12/26145.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/26145.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26145.html阅读全文

星梦情缘 2007-06-12 13:54 发表评论
]]>
保证你现在和未来不失业的十种关键技?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/12/26143.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Tue, 12 Jun 2007 05:49:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/12/26143.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/26143.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/12/26143.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/26143.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/26143.html</trackback:ping><description><![CDATA[<p>在当今的IT׃市场Q有人欢喜有人忧。有人对目前的工作和薪水很满意,有h目前正面临着下岗Q或者已l下?#8230;…<br>可能你是公司里唯一谙熟某项关键技术的高手Q缺了你Q公怾玩不转了Q也可能你所在的公司对你现有的专业技能高枕无忧,认ؓ你在L内以胜d司给你的开发Q务(当然׃会再花银子去培训你啦Q?br>不要告诉我你们公司对原来用VB3开发的业务处理pȝ很满意,而你呢,也认己除了用C语言开发程序以外,不会再去做别的什么事情?br>你是不是?NET和JavaZ夺开发工具市场撕破脸皮而熟视无睹,你是不是对XML要取代关系数据库而无动于衷以及不屑一。你是不是认Z能用汇编或C开发Q何东西,所以觉得其它开发工具都不再重要……<br>如果真是q样Q那么你d业的日子不远了,<br>俗话?-未雨l缪…… </p> <p>想一惛_果你现在׃没有工作会怎么P <br>想一想现在还有如此之多的弟兄们ؓ了找一个饭而四处奔波?<br>想一惛_果现在你们公ؓ了抢占市场,H然要进行技术{向,你该怎么办? <br>想一想你现在Z自己的前途,H然需要改变技术领域,你该怎么办?或者你不满于现在自己的知识结构,惌再充实一下,但又不知选择那些内容来学习。那么l往下看Qƈ一起参加讨论吧Q相信会有收L?<br>在h才招聘市场,Zl理们关注的是实际技能,要求现在和将来从事开发工作所需要的实际技能。作Z个技术开发h员,自己的知识结构是׃和保持自w岗位的关键。此外还有一点也很重要,那就是即便你不再从事或者寻求实际的开发工作,也必d可能多地了解和熟悉当今你所从事的领域中最前沿的技术和信息Q只有这h能跟上技术发展的步伐。以便自己始终处于不|之地?br>本文列出了当今计机软g开发和应用领域最重要十种关键技术排名,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样L通,但至应该对它们非常熟悉?/p> <p>一、XML<br>在十U技术中Q最重要的一U技术我惛_该非XML莫属。这里不仅仅指XML规范本nQ还包括一pd有关的基于XML的语aQ主要有XHTMLQXSLTQXSLQDTDsQXML SchemaQXSDQ,XPathQXQuery和SOAP。如果你现在q对XML一无所知,那么赶快狂补吧。XML是包含类gHTML标签的一个文本文Ӟ在这个文件中定义了一个树型结构来描述它所保存的数据?br>XML最大的优点是你既可以在q个文本文g中存储结构化数据Q也可以在其中存储非l构化数据——也是_它能包含和描q?_糙?文档数据Q就象它描述"规则?表格数据一栗?<br>XHTML是目前编写HTML的首选方法;因ؓXHTML本n是格式良好的XMLQ与通常畸Ş的HTML文档相比Q?XHTML格式文档更容易处理?<br>XSLT和XSL是对XML文档q行转换的语a。它们可以将XML文档转换成各U格式,比如另一个文本文件、PDF文g、HTML文g、逗号分割的文Ӟ或者{换成其它的XML文档?<br>DTDs 和XML Schema用来描述XML文g所包含的数据内容的cdQ你不用编写定制的代码p对XML文档的内容进?有效?查,使内容强行遵守给出的规则?<br>XPath ?XQuery是查询语aQ用它们可以从XML文档中吸取单个的数据Ҏ者数据项列表。XQuery的功能特别强大,因ؓ它对XPath查询q行了扩展。实际上QXQuery和XML的关pd像SQL之于关系数据库一栗?<br>SOAP是Web services间进行通讯的标准协议。你不必知道SOAP协议的所有细节,但是你应该熟悉其常用规则及其工作原理Q这样你才能使用它?<br>二、Web Services<br>Web服务是XML行后的直接产物。因为XML可以描述数据和对象,XML大纲可以保证XML文档数据的有效性,因ؓXML的基于文本的规范Q因而XML文档极其适合于作ZU跨q_通讯标准的基本格式。如果你q没有接触过Web服务Q那么过不了多久你肯定会到它,所以必ȝl掌握Web服务Q最好是_N它Q因为它是迄今ؓ止应用程序间跨不同种cL器、语a、^台和位置通讯的最单的一U方式。不你需不需要它QWeb服务都会是将来互用性的主要势?br>XML工作l的John Bosak曾说q:"XML使得Java有事可做"Q那么,我们也可以说QWeb服务使得所有语a都有事可做。Web服务让运行在大型Z的COBOL应用E序与运行在手持讑֤上的应用E序怺沟通;让Java应用与.NET服务器相互通讯Q让桌面应用与Web服务器进行无~交互,不但为商业数据处理,同时也ؓ商业功能提供了方便的实现——ƈ且这U实C语言、^台、和位置无关?/p> <p>三、面向对象编E?br>许多E序员仍然认为OOP乃技术的象牙之塔Q但是细l想一下过dq里在面向对象领域里占据q统d位的开发语a之后Q你׃会这么认ZQOOP理念从Smalltalk开始,然后蔓g到C++和PascalQDelphiQ,到Java成ؓ真正的主,几年之后QVB.NET ?C#的出现可以说是OOP发展Cd造极的地步。虽然用这些语a不必了解OOP的概念,但如果你~Z一些OOP的基本知识和ҎQ我想你很难在逐渐疲Y的就业市Z扑ֈ工作?/p> <p>四、Java, C++, C#, VB.NET<br>如果你热衷于技术,q且热爱~程Q那么我想你应该L玩{q些高语言Q我说的玩{q不一定要你成U编E高手。而是能看懂用q些语言~写的代码即可。如果你q有_֊用它们编码那更好了。其实这U机会甚。但是看代码的机会很多,学习~程的最有效的一U方式就是看源代码——浩如烟L源代码中很多都不是用你所钟爱的开发语a~写的?br>在过ȝ几年里,各个语言功能的发展基本上都差不多。现在你完全可以用VB.NET来写Windows服务、Web应用或者命令行E序。即使你只用其中的一U语a写程序。我认ؓ也完全有必要学习另外一U语aQ自己能阅d理解它们现有的例子代码,q且能将一U语a~写的代码{换成你首选的~程语言代码。这里列出的四种语言可谓是一个强大的开发语a工具,如果你掌握了它们Q毫无疑问你一定是一个众ZԒ慕的高手。这里我要声明一下:那就是我q没有要忽略和排除其它的高语言Q如QFORTRAN、COBOL、APL、ADA、Perl和Lisp{等Q根据你所从事的领域不同,应该选择适合的语a和工兗?/p> <p>五、javascript<br>Java 和javascript两者的名字管很类|但它们之间ƈ没有什么关pRؓ什么一U脚本语a会如此重要,以至于将它列入十U关键技术之一呢?仔细想一下就知道了,目前所有主的览器都使用javascript。如果你要编写Web应用E序Q那么javascript不可或缺。此外,javascriptq能作ؓ一U服务器端的脚本语言Q如它嵌入在ASP、ASP.NET中,或者嵌入XSLT来扩展功能。目前javascript在Mozilla/Netscape中是Ȁzd于XUL界面的首选语aQ它zZActionScriptQ成为Flash MX应用的编E语a。还有就是javascript极有可能成ؓ未来新设备的脚本语言以及L应用的宏语言?br>相比之下QVBScript虽然在微软的产品中得到很好的支持Q但从长q来看,没有q象表明它会有美好前途。微软自己都向于用javascriptQ或者用由javascriptz的JScriptQ来~写其客L脚本代码。因此,如果你要选择脚本语言Q非javascript莫属?/p> <p>六、Regular Expressions<br>从所周知Q关pL据库的查询用SQLQ搜索XML文档用XPath 和XQueryQ而正则表辑ּ则用来搜索纯文本。例如,你可以用一个命令来查找或删除HTML格式文g中的注释内容。大安用过"IndexOf"?InStr"以及"Like"q些内徏在javascript或VB中的文本搜烦函数Q这些函数虽然很Ҏ使用Q但是它们的功能却无法与正则表达式同日而语——现在每一U主的开发语a都提供对正则表达式的存取。尽有为正则表辑ּ本n的读写艰涩难懂,但毕竟它的功能强大,使用它的领域也越来越多?/p> <p>七、Design Patterns<br>像OOP通过创徏和分cd象来化编E一P设计模式普通的对象交互分类成指定的模型Q这是一个从一般到具体的过E。OOP的成分用得多Q设计模式就昑־有用武之地。所以你必须理解它们Q跟上其M理论的发展?/p> <p>八、Flash MX<br>当你需要比HTML和CSS所能提供的更多的客L囑Ş和编E能力时QFlash是最佳选择。在Flash中编E比用Java应用或?NET代码来得快得多,也容易得多?br>在最新版本中QMXQ,Flash不仅可以d和进行动L包,它还是个高度的可~程应用环境。具备强大的与SOAP Web服务沟通的能力Q可以调用运行在q端服务器上的ColdFusion、Java?NET代码。可以说Flash几乎无处不在Q包括手持设备、置盒、甚x新的qx电脑Q你到处都可以见到它的n影,所以用它实际上可以扩展和延你的应用E序使用领域?/p> <p>九、Linux/Windows<br>q是当今PCs机操作系l的两大阵容Q如果你惛_计算业里P׃定要熟悉它们。对于LinuxQ最好能自己安装Q配|,下蝲它的囑Ş用户界面以及一些应用程序。自己安装Apacheq会~写Web应用E序。要清醒地认识到q个世界除了Windows之外Q还有Linux的存在。ƈ且这U局面将会长期存在。反q来Q如果你是一个死忠的Linux开发者,不要再l对Windows的憎Ӟ要相互学习,取长补短Q看看Windows有什么好的东东可以采U뀂记住Windows仍然是桌面之王?br>谁也说不准你们公总么时候会军_从Linux转向WindowsQ或者从Windows转向Linux。谁也说不准什么时候你会蟩槽跑到另外一个用不同^台的公司上班——或者即便不xQ也有可能在不同q_上开始另外一个杀手目——所以最好在每个q_上都U篏一些经验,而不要在一|上吊歅R?/p> <p>十、SQL<br>管SQL在当今众多的技术中已不是什么新东西Q而且在未来的十年里它的作用很有可能被削弱Q甚x个被淘汰Q但它仍然是一U基本技能——别看它是一U基本技能,至今仍有许多开发h员不懂什么是SQL或对它了解不多。不要指望基于图形用L面的SQL构造器会帮你的忙,q是自己亲手写SQL查询吧,定你掌握了SQL的基本语法。现在理解了SQLQ不仅对以后学习XQuery有所裨益Q而且可以使你很快扑ֈ化或改进当前开发项目的途径?br> <br></p> <img src ="http://www.shnenglu.com/3522021224/aggbug/26143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-12 13:49 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/12/26143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>E序员的十种U别http://www.shnenglu.com/3522021224/archive/2007/06/12/26119.html 星梦情缘 星梦情缘Mon, 11 Jun 2007 16:56:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/12/26119.htmlhttp://www.shnenglu.com/3522021224/comments/26119.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/12/26119.html#Feedback8http://www.shnenglu.com/3522021224/comments/commentRss/26119.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26119.html
对的顶一?nbsp; 阅读全文

星梦情缘 2007-06-12 00:56 发表评论
]]>
matlab遗传法工具函数及实例讲解http://www.shnenglu.com/3522021224/archive/2007/06/12/26118.html 星梦情缘 星梦情缘Mon, 11 Jun 2007 16:54:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/12/26118.htmlhttp://www.shnenglu.com/3522021224/comments/26118.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/12/26118.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/26118.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26118.html核心函数Q?
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始U群的生成函?
【输出参数?
pop--生成的初始种?
【输入参数?
num--U群中的个体数目
bounds--代表变量的上下界的矩?
eevalFN--适应度函?
eevalOps--传递给适应度函数的参数
options--选择~码形式(点~码或是二进制编?[precision F_or_B],?
precision--变量q行二进制编码时指定的精?
F_or_B--?旉择点~码Q否则ؓ二进制编?由precision指定_ֺ)

(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遗传法函数
【输出参数?
x--求得的最优解
endPop--最l得到的U群
bPop--最优种的一个搜索轨q?
【输入参数?
bounds--代表变量上下界的矩阵
evalFN--适应度函?
evalOps--传递给适应度函数的参数
startPop-初始U群
opts[epsilon prob_ops display]--opts(1:2){同于initializega的options参数Q第三个参数控制是否输出Q一般ؓ0。如[1e-6 1 0]
termFN--l止函数的名U?如['maxGenTerm']
termOps--传递个l止函数的参?如[100]
selectFN--选择函数的名U?如['normGeomSelect']
selectOps--传递个选择函数的参?如[0.08]
xOverFNs--交叉函数名称表,以空格分开Q如['arithXover heuristicXover simpleXover']
xOverOps--传递给交叉函数的参数表Q如[2 0;2 3;2 0]
mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]

【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大|其中0<=x<=9
【分析】选择二进制编码,U群中的个体数目?span lang=EN-US>10
Q二q制~码长度?span lang=EN-US>20Q交叉概率ؓ0.95,变异概率?/font>0.08
【程序清单?/font>
%
~写目标函数

function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%
把上q函数存储ؓfitness.m文gq放在工作目录下


initPop=initializega(10,[0 9],'fitness');%
生成初始U群Q大ؓ
10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25
ơ遗传P?/font>

q算借过为:
x =
7.8562 24.8553(
?span lang=EN-US>x?span lang=EN-US>7.8562ӞfQ?span lang=EN-US>xQ取最大?/font>24.8553)

注:遗传法一般用来取得近似最优解Q而不是最优解?/font>



遗传法实例
2

【问题】在Q?span lang=EN-US>5<=Xi<=5,i=1,2区间内,求解

f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282
的最倹{?/font>
【分析】种大?span lang=EN-US>10Q最大代?span lang=EN-US>1000Q变异率0.1,交叉?/font>0.3
【程序清单?/font>
Q源函数?span lang=EN-US>matlab代码

function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%
适应度函数的matlab代码

function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%
遗传法?span lang=EN-US>matlab代码

bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')

注:前两个文件存储ؓm文gq放在工作目录下Q运行结果ؓ

p =
0.0000 -0.0000 0.0055



大家可以直接l出f(x)的图形来大概看看fQ?span lang=EN-US>xQ的最值是多少Q也可是使用优化函数来验证?span lang=EN-US>matlab命o行执行命令:

fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])







星梦情缘 2007-06-12 00:54 发表评论
]]>
ZCOM接口的VC++与MATLAB混合~程http://www.shnenglu.com/3522021224/archive/2007/06/11/26046.html 星梦情缘 星梦情缘Mon, 11 Jun 2007 04:59:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/11/26046.htmlhttp://www.shnenglu.com/3522021224/comments/26046.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/11/26046.html#Feedback4http://www.shnenglu.com/3522021224/comments/commentRss/26046.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26046.html引言

    目前Q?span>Matlabq泛的应用于自动控制、数学运、信号分析、图像处理、胦务分析等各行各业?span>MATLAB也存在着某些~点Q?span>Matlab是一U解释性语aQ其特点是以矩阵为基本数据结构,D其执行效率相?span>C?span>C+ +语言要低很多Q因?span>MatlabE序不能q其环境运行,故不能直接用于商用Y件的开发。与此相反,VC++׃其丰富得人机界面Q高效的执行效率已经成ؓZWindowsq_下开发商业Y件的必备工具。然而,VC++对于复杂的数D就有点“力不从心”了。所以将VC++?span>Matlab完美的结合,发挥各自的优势具有现实意义。自Matlab6.5版本开始,新推出来?span>Combuilder支持把用Matlab~写的程序做?span>comlgQ供其他语言调用。该Ҏ实现单,通用性强Q成?span>VC?span>Matlab混合~程最有效的方法?/span>

1  VC?span>Matlab混合~程的方?/span>

1.1 通过Matlab Engine方式

    Matlab Engine是指一l?span>Matlab提供的接口函敎ͼ支持C语言Q?span> Matlab Engine采用C/S(客户?span>/服务?span>)模式Q?span>Matlab作ؓ后台服务器,?span>CE序作ؓ前台客户机,通过Windows的动态控件与服务器通信Q向Matlab Engine传递命令和数据信息Q从Matlab Engine接受数据信息。用户可以在前台应用E序中调用这些接口函敎ͼ实现?span>Matlab Engine的控制。采用这U方法几乎能利用Matlab全部功能Q但是需要在机器上安?span>Matlab软gQ而且执行效率低,因此在实际应用中不采用这U方法,在Y件开发中也不可行Q这U模式只适合个h使用或做演示?span>

1.2 直接调用Matlab?span>C/C++数学函数?/span>

    Matlab中提供了可以?span>C/C++语言调用?span>C/C++数学函数库,其中包含了大量用C/C++语言重新~写?span>Matlab数学函数Q这些函数涉及到UŞ代数、数值分析、傅立叶变换、多式计算、解微分方程{,q且函数库中提供了大量各U矩阉|作函敎ͼ?span>VC中可以直接用这些函敎ͼ通过q些函数可以?span>VC中方便的实现?span>Matlab中矩阵运功能。用q种Ҏ可以很灵zȝ调用Matlab来编写应用程序,但要求读者对C/C++语言非常熟悉Qƈ且这U模式不能包括所有的Matlab函数Q尤其是无法充分使用Matlab提供的详的l图函数?/span>

1.3 ?span>Matlab自带?span>Matlab Compiler

    Matlab Compiler的作用是?span>m文g转化?span>C/C++代码Q也是通常所用的mcc命oQ?span>,q种源代码需要用C/C++~译器编译连接成独立应用E序Q在?span>m文g转成独立应用E序的过E中生成?span>C/C++文gQ原则上是可以被其它?span>C/C++代码调用的,~译器可以通过讄mcc命o的选项Q将m文g~译成动态链接库文g?span>C/C++文g、可执行文g{一pd文g。到matlab R21.1为止Q?span>Matlab Compiler?span>mE序转换?span>C/C++代码功能有很多限Ӟ

    ⑴不能{换脚?span>m文gQ只能{?span>m函数Q?span>

    ⑵不能?span>matlab对象Q?span>

    ⑶不能用input或?span>eval操作matlabI间变量Q?span>

    ⑷不能动态地命名变量Q然后用load或?span>save命o来操作;

    怸能处理具有嵌套调用其?span>m文g?span>m文gQ?span>

    ⑹不能?span>MATLAB内联函数Q?span>

1.4 使用matcom工具

    q是W三ҎӞ很小(8M?span>),原本属于mathtool公司Q后来被Mathworks公司合ƈ了,使用该工具可以将m脚本文g?span>m函数转化成相同功能的C/C++文gQ相比其它方法?span>matcomh如下优点Q?span>

    ⑴{换过E简?span>(?span>matcom工具自动实现)Q容易实玎ͼ

    ⑵可以方便的生成动态链接库文g(dll)和可执行文g(exe)Q?span>

    ⑶不仅可以{换独立的脚本文gQ也可以转换嵌套脚本文gQ?span>

    ⑯|环境后Q可以?span>Matlab的工L函数Q?span>

?span>matcom也有以下不Q?span>

    ⑴对struct{类的支持有~陷Q对class数据cdQ?span>

    ⑵部分绘图语句无法实现或得不到准图象,其是三l图象;

    ⑶当涉及到的复杂函数调用时嵌套的文g数量很多?span>

    因此在不涉及Cl做图以?span>m文g不大的情况下推荐使用?/span>

1.5  使用Matlab?span>Combuilde工具

    COM?span>component object module的简Uͼ它是一U通用的对象接口,M语言只要按照q种接口标准Q就可以实现调用它?span>Matlab6.5新推出来?span>Combuilder是把用Matlab~写的程序做?span>comlgQ供其他语言调用。该Ҏ实现单,通用性强Q而且几乎可以使用Matlab的Q何函?span>(注意Q不支持脚本文gQ脚本文件用时要改为函数文?span>)Q因此在E序较大、调用工L函数或调用函数较多时推荐使用Q这也是Matlab公司推荐的用方法?/span>

ZCOM接口?span>Matlab?span>VC混合~程实现FFT转换

2.1 创徏Matlab源文?/span>

    ?span>Matlab中实?span>FFT转换只需要一个函数即可?/span>

    (1) 新徏M文gQ在M文g中输入以下两条语句:

    Function FFT(X,Y) %实现FFT转换。函数名?span>FFTQ?span>x入参敎ͼy出参?/span>

    Y=fft(X);          %fft转换实现函数

    (2Q保存ؓFFT.m ?span>M文g?/span>

2.2  ?span>Matlab下创?span>COMl徏

    (1Q在matlab command window输入如下命oQ?/span>

    >>comtool



 

    (2Q出?span>com~辑界面后,选择File->New Project建立新工E?span>testfftQƈ?span>FFT.m加入到新建工E中?/span>

    (3Q点?span>Build->COM Object…生成COMlg?/span>

    xcomlg已经?span>matlab做好Q默认的保存位置为:matlab安装位置\work\component?/span>

2.3  VC下调?span>COMlg

    (1Q将testfft_idl.h ?span>testfft_idl_i.c文g拯?span>VC建立的工E目录下。两文g默认目录?span>\work\component\src

    (2Q将目录/extern/include/下的mwcomtypes.h文g拯?span>VC建立的目录下?/span>

    (3Q将上面三个文g加入VC工程Q工E?span>->d工程->FilesQ选择刚刚拷到目录下的testfft_idl.h ?span>testfft_idl_i.c文g?/span>

    (4) 为程序添加头文gtestfft_idl.h ?span>testfft_idl_i.c?span>mwcomtypes.h

    (5Q填写调?span>COMlg代码Q?/span>

    if(FAILED(CoInitialize(NULL)))    //初始化调?span>com

    {

          AfxMessageBox("unable to initialize COM");

    }

    Itestfft *st=NULL;

    HRESULT hr=CoCreateInstance(CLSID_testfft,NULL,CLSCTX_ALL,IID_Itestfft,(void **)&st);

    if(SUCCEEDED(hr))

     {

         VARIANT x,y;

         VariantInit(&x);

         VariantInit(&y);

         x.vt=VT_I4;

         x.lVal=4;

    st->fte(x,y);       //x入参敎ͼy出参?/span>

    st->Release();

 }

     else

 {

    AfxMessageBox("unsucceed");

 }   

    x实现VC下调?span>COMlg实现FFT转换?/span>

l论

    实践表明?span>COMҎ实现VC?span>Matlab混合~程h实现单、执行效率高、几乎支持所有的matlab函数、易UL{优炏V?/span>



星梦情缘 2007-06-11 12:59 发表评论
]]>
用VC++6.0为对话框d最化按钮和提C条http://www.shnenglu.com/3522021224/archive/2007/06/11/26045.html 星梦情缘 星梦情缘Mon, 11 Jun 2007 04:54:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/11/26045.htmlhttp://www.shnenglu.com/3522021224/comments/26045.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/11/26045.html#Feedback1http://www.shnenglu.com/3522021224/comments/commentRss/26045.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/26045.html我们在用对话框H体Ӟ会有q样一U感受:当对话框H体位于其它E序H口界面上时Q单d话框外区域时Q可使对话框H体最化Q而当对话框窗体位于桌面上Ӟ无论怎样单击对话框外区域Q对话框均不能最化Q只能选择关闭。但有时我们在用对话框Ӟq希望能Ҏ需要对话框具有最化功能。本文的设计思想是据此提出来的?/p>

1          实例E序设计要点

?取得对话框标题栏位置和大,在标题栏的适当位置l制最化按钮QƈC按钮的位|?/p>

?在最化按钮所在区域检鼠标是否在该区域内、是否按下,是否发送最化消息使对话框最化Q否则不变?/p>

?最化按钮矩Ş区域向工hC条控g注册Q这样当鼠标在最化按钮矩Ş区域Ӟ昄提示文本?/p>

2  实例E序实现的步骤及说明

?准备二个位图Q一个位图表C最化按钮正常昄状态,另一个位图表C最化按钮被按下时的状态?/p>

?使用MFC AppWizard(exe)创徏工程名ؓMinButton的对话框H体Q如图所C,二个按钮位囑֯入对话框的资源里?/p>

?在CMinButtonDlg对话框类中进行变量定义和函数声明?/p>

?利用ClassWizard为对话框cL加消息WM_NCPAINTQWM_ACTIVATE和WM_NCMOUSEMOVE的消息处理函敎ͼ在这三个函数中调用成员函数DrawButton()来绘制按钮?/p>

?利用ClassWizard为最化按钮兌对应的消息WM_NCLBUTTONDOWN和消息处理函数OnNcLButtonDown(UINT nHitTest, CPoint point)?/p>

?函数DrawButton()用于l制按钮。由于最化按钮q不是一个真实的按钮控gQ而是一个画在标题栏上的位图。因此,Z在对话框H体标题上绘画,必须创徏一个窗口设备环境类Q相当于创徏一个画布,有了q个dQ才能在d上绘画,也就是才能在标题栏上l画。)

?nbsp;调用函数GetWindowDC()取得指向CDC的指?CDC* pDCQ?/p>

?调用函数 CreateCompatibleDC(CDC* pDC)创徏一个内存设备环境,以便在内存中保存位图Qƈ与指定的H口讑֤环境相兼容;

?调用函数SelectObject(CBitmap *pBitmap)Q将位图选入内存讑֤环境中;

?调用函数 BitBlt(int x, int y, int nWidth, int nHeight, CDC *pSrc, int xSrc, int ySrc, DWORD dwRop)位囑֤制到实际讑֤环境中。其中,参数x, y 表示位图目标矩Ş左上角的x, y 逻辑坐标|nWidth, nHeight 表示位图目标矩Ş的逻辑宽度和高度;pSrc 表示源设备环境CDC指针QxSrc, ySrc 表示位图源矩形的左上角的x, y 逻辑坐标|dwRop 表示昄位图的光栅操作方式。光栅操作方式有多种Q这里用的是SRCCOPYQ表C将位图直接复制到目标内存设备环境中。这里要说明一点:函数BitBlt()只能“一比一”的显CZ图,如要L~放昄位图M用函数StretchBlt()Q该函数的用方法,请参考相关书c?/p>

?位图选入内存环境中显C后Q应调用函数SelectObject(CBitmap *pOldBitmap)恢复原来的内存设备环境?/p>

?提示条实质上是一个小的弹出窗口,在窗口中昄一行文本,用来描述工具Q或区域Q的用途或其它信息。在MFC中提供了工具提示条控件类CToolTipCtrlQ由它来理提示条。在q里Q我们从CToolTipCtrlcL生子cCToolTips。在子类的定义中d函数BOOL AddToolTip( UINT nID, LPRECT lpRect, LPCTSTR lpszText)Q该函数用于向工hC条控g注册按钮区域和提C文本,当鼠标在最化按钮区域Ӟ昄提示文本?/p>

3         主要的程序代?/p>

?在对话框cM定义相应的变量和函数声明

class CMinButtonDlg : public CDialog

{

         …………

    public:

       CRect m_rtButtMin; //记录最化按钮位置

       void DrawButton(); //l制最化按钮

       BOOL m_BMPPressed;//最化按钮状态标?/p>

       CRect m_ButtMinTips;//记录最化按钮区域

protected:

  CToolTips m_ToolTip;//定义工具提示条控件变?/p>

  void GetMinButRect();//获取最化按钮所在区?/p>

  //消息处理函数

afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);

   afx_msg void OnNcPaint();

   afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);

   afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);

…………

}Q?/p>

?对话框类中三个消息处理函数定义如下:

//对应消息WM_NCPAINT的消息处理函?/p>

void CMinButtonDlg::OnNcPaint()

{

CDialog::OnNcPaint();

DrawButton(); //l制最化按钮

}

//对应消息WM_ACTIVATE的消息处理函?/p>

void CMinButtonDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)

{

CDialog::OnActivate(nState, pWndOther, bMinimized);

DrawButton(); //l制最化按钮

}

//对应消息WM_NCMOUSEMOVE的消息处理函?/p>

void CMinButtonDlg::OnNcMouseMove(UINT nHitTest, CPoint point)

{

DrawButton(); //l制最化按钮

CDialog::OnNcMouseMove(nHitTest, point);

}

?l制最化按钮的函?/p>

void CMinButtonDlg::DrawButton()

{

CDC* pDC = GetWindowDC();

CDC* pMemDC=new CDC;

CBitmap *pBitmap1=new CBitmap; 

CBitmap *pBitmap2=new CBitmap;

CBitmap *pOldBitmap;

CRect rtWnd, rtButtons, rtTitle;

//创徏一个内存设备环?/p>

pMemDC->CreateCompatibleDC(pDC);

if(!pDC) return;

GetWindowRect(&rtWnd);

//取得标题栏的矩Ş

rtTitle.left = GetSystemMetrics(SM_CXFRAME);

rtTitle.top = GetSystemMetrics(SM_CYFRAME);

rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);

rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);

//计算最化按钮的位|,位图大小?5X15

rtButtons.top=rtTitle.top+1;

rtButtons.bottom=rtButtons.top+15;

rtButtons.right = rtTitle.right-20;

rtButtons.left = rtButtons.right-15;

 

m_rtButtMin = rtButtons;

pBitmap1->LoadBitmap(IDB_BITMAP1); //调入正常状态按钮的位图

pBitmap2->LoadBitmap(IDB_BITMAP2);  //调入按钮按下状态的位图

m_rtButtMin.OffsetRect(rtWnd.TopLeft());//记录最化按钮的位|?/p>

//按钮位图调入内存设备环境中Qm_BMPPressed为TRUE

//调入正常状态按钮的位图

pOldBitmap=pMemDC->SelectObject(m_BMPPressed ? pBitmap1: pBitmap2);

//按钮位囑֤制到实际的内存设备环境中

pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(),

        rtButtons.Height(), pMemDC, 0, 0, SRCCOPY);

pMemDC->SelectObject(pOldBitmap);//恢复原来的内存设备环?/p>

 //释放资源

ReleaseDC(pMemDC);

ReleaseDC(pDC);

delete pMemDC;

delete pBitmap1;

delete pBitmap2;

}

?对应鼠标左键的WM_NCLBUTTONDOWN消息处理函数

void CMinButtonDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)

{

CDialog::OnNcLButtonDown(nHitTest, point);

//是否在最化按钮区域内按下按?/p>

if (m_rtButtMin.PtInRect(point))

{

        m_BMPPressed=FALSE;//l制按钮按下时的状?/p>

        DrawButton(); //l制最化按钮

        m_BMPPressed=TRUE;//l制按钮的正常状?/p>

        SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));//发送最化消息

}

}

?//在最化按钮区域实现提示文本

BOOL CToolTips::AddToolTip( UINT nID, LPRECT lpRect, LPCTSTR lpszText  )

{

TOOLINFO Tips;

memset(&Tips, 0, sizeof(TOOLINFO));

Tips.cbSize = sizeof(TOOLINFO);

Tips.hwnd = GetOwner()->GetSafeHwnd();

Tips.uFlags = TTF_SUBCLASS;

Tips.uId = nID;

memcpy(&Tips.rect, lpRect, sizeof(RECT));

Tips.lpszText = (LPSTR)lpszText;

return (BOOL)SendMessage(TTM_ADDTOOL, 0, (LPARAM)&Tips);

}

?在对话框初始化函数OnInitDialog()中添下列代码Q?/p>

m_ToolTip.Create(this,TTS_ALWAYSTIP);//创徏工具提示控gQTTS_ALWAYSTIP表示Q?/不论控g所属窗体是否活动,提示条始l有?/p>

GetMinButRect();

ScreenToClient(&m_ButtMinTips);//屏幕坐标转换为窗体坐?/p>

m_ToolTip.AddToolTip(1,&m_ButtMinTips,"最化");



星梦情缘 2007-06-11 12:54 发表评论
]]>
数据库规范化设计技?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/09/25926.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Sat, 09 Jun 2007 14:31:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/09/25926.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/25926.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/09/25926.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/25926.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/25926.html</trackback:ping><description><![CDATA[<h2 class=dtH1><a name=odc_fmsnormalization_topic1></a>?/h2> <p>在设计数据库Ӟ最重要的步骤是要确保数据正分布到数据库的表中。用正的数据l构Q可以极大地化应用程序的其他内容Q查询、窗体、报表、代码等Q。正进行表设计的正式名U是“数据库规范化”?/p> <p>本文要介l数据库规范化的基本概念和一些需要注意ƈ力求避免的常见问题?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic2></a>理解您的数据</h2> <p>在设计表之前Q应明确您打如何处理数据,q要了解随着旉的推UL据会发生什么样的变化。您所做的假设会影响最l的设计?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic3></a>您需要什么样的数据?</h2> <p>设计应用E序Ӟ关键要了解设计的最l结果,以便保您准备好所有必需的数据ƈ知道其来源。例如,报表的外观、每个数据的来源以及所需的所有数据是否都存在。对目损失最大的莫过于在目后期发现重要报表~少数据?/p> <p>知道需要什么样的数据后Q就必须定数据的来源。数据是否从其他数据源中导入Q数据是否需要清理或验证Q用h否需要输入数据?</p> <p>明确所需数据的类型和来源是数据库设计的第一步?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic4></a>您打如何处理这些数据?</h2> <p>用户是否需要编辑这些数据?如果需要,应如何显C数据以便于用户理解和编辑?有没有验证规则和相关的查找表Q要求对~辑和删除保留备份的数据输入有没有相兌的审栔R题?需要ؓ用户昄哪些摘要信息Q是否需要生成导出文Ӟ了解q些信息后,可以想象字D之间是如何怺兌的了?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic5></a>数据之间如何怺兌Q?/h2> <p>数据分l放入相兛_D(例如与客L关的信息、与发票相关的信息等Q,每个字段l都代表要徏立的表。然后考虑如何这些表怺兌。例如,哪些表具有一对多关系Q例如,一个客户可能持有多张发)Q哪些表h一对一关系Q这U情况下Q通常会考虑其l合C个表中)Q?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic6></a>随着旉的推UL据会发生什么样的变化?</h2> <p>设计表之后,常常会由于没有考虑旉的媄响而导致以后出C重问题。许多表设计在当时用时效果非常好,但是Q常怼因ؓ用户修改数据、添加数据以及随旉的推U而崩溃。开发h员经怼发现需要重新设计表的结构来适应q些变化。表的结构发生变化时Q所有相关的内容Q查询、窗体、报表、代码等Q也必须随之更新。理解ƈ预测数据会随旉推移发生哪些变化Q可以实现更好的设计Q减问题的发生?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic7></a>学习如何使用查询</h2> <p>了解如何分析和管理数据同样很重要。您应该深刻理解查询的工作原理,理解如何使用查询在多个表之间链接数据Q如何用查询对数据q行分组和汇总,以及如何在不需要以规范化格式显C数据时使用交叉表查询?/p> <p>好的数据设计的最l目标就是要q两个需要:既要随着旉的推UL效地存储数据Q又要轻村֜索和分析数据。理解查询的功能Ҏ设计表很有帮助?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic8></a>数据库规范化概念</h2> <p>q部分介l数据库规范化所涉及的基本概念,而不是对数据库规范化q行理论性的探讨。如何在您的实际情况中应用这些概念可能会随着应用E序需要的不同而有所变化。这部分的目的是理解q些基本概念、根据实际需要应用它们,q理解偏这些概念将会出现哪些问题?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic9></a>唯一信息存储在一个地?/h2> <p>大部分数据库开发h员都理解数据库规范化的基本概c理x况下Q您希望相同的数据存储在同一个地方,q在需要引用时使用 ID 来进行引用。因此,如果某些信息发生了变化,则可以在一个地方进行更改,而整个程序中的相应信息也会随之更攏V?/p> <p>例如Q客戯会存储每个客L记录Q包括姓名、地址、电话号码、电子邮件地址以及其他特征信息。客戯中可能包含唯一?CustomerID 字段Q通常?<strong>Autonumber</strong> 字段Q,q个字段卌表的主键字段Q其他表使用它来引用该客戗因此,发票表可以只引用客户?ID |而不是在每张发票中存储客L所有信息(因ؓ同一个客户可能会持有多张发票Q,q样利用客户?ID 值即可从客户表中查找客户的详l信息。?Access 中功能强大的H体Q用组合框和子H体Q,可以L地完成这工作。如果需要修改客户信息(例如新增电话LQ,只需在客戯中修改,应用E序中引用该信息的Q何其他部分都会随之自动更新?/p> <p>使用正确规范化的数据库,通过单的~辑卛_L处理数据随时间推U而发生的更改。用未正确规范化的数据库,通常需要利用编E或查询来更改多条记录或多个表。这不仅会增加工作量Q还会增加由于未正确执行代码或查询而导致数据不一致的可能性?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic10></a>记录是免费的Q而新字段非常昂贵</h2> <p>理想的数据库应该只需要随着旉的推UL加新的记录,数据库表应该能够保存大量记录。但是,如果您发现需要增加更多字D,则可能会到设计问题?/p> <p>电子表格专家l常会遇Cq问题,因ؓ他们习惯于按照设计电子表格的方式设计数据库。设计经帔R旉变化的字D(例如Q年、季度、品和销售h员)需要在来d新字Dc而正的设计应该是{换信息ƈ随旉变化的数据放在一个字D内Q这样就可以d更多记录。例如,只需创徏“q?#8221;字段Q然后在该字D中输入各记录相应的q䆾值即可,无需为每q创Z个单独的字段?/p> <p>增加额外的字D可能会产生问题Q因l构的变化会对应用程序的其他部分产生影响。在表中d更多字段Ӟ依赖该表的对象和代码也需要更新。例如,查询需要获取额外的字段Q窗体需要显C些字D,而报表则需要包含这些字D,{等。但是,如果数据已经规范化,则现有对象会自动索新数据Qƈ正确计算或显C些数据。查询功能尤其强大,因ؓ它允许您?#8220;q?#8221;字段q行分组Q以逐年昄摘要Q不表中包含哪些年份)?/p> <p>但是Q数据规范化q不意味着不能昄或用随旉而变化或依赖旉的字Dc需要浏览或昄q类信息的开发h员通常可以使用交叉表查询来辑ֈq一目的。如果您不熟悉交叉表查询Q应该学习如何用它们。虽然它们与表有所不同Q尤其是用户无法~辑交叉表查询的l果Q,但它们的可以用于在数据表中昄信息Q最多可以达?255 个字D)。如果要在报表中使用它们Q则会更加复杂,因ؓ报表需要包含额外的或不断变化的字段名。这是Z么大多数报表数据作为独立的分组Q而不是独立的列)昄的原因。对于那些别无选择的情况,您必花旉去解册个问题。希望所有h都能够理解这U决定会随着旉的变化对其他资源产生的媄响?/p> <p>q就是ؓ什么增加记录是免费的(q是数据库的巨大优势Q而增加字D|如此昂贵的原因。如果数据库设计正确Q则可以适应各种各样的变化?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic11></a>了解何时需要复制数?/h2> <p>有时数据需要反规范化,以便保存可能会随旉变化的信息?/p> <p>在通过客户 ID 号将发票链接到客戯的简单示例中Q我们可能需要保留开出发时的客户地址Q而不是制作发时的地址Q因为客户信息在q两个事件之间可能会有所变化Q。如果开出发时未保留客户地址Q而将来又必须更新客户信息Q则可能无法定发送某些发的切地址。这可能会导致非怸重的商业问题。当Ӟ有些信息Q如客户的电话号码)可以不保存。因此,应该有选择地决定需要复制哪些数据?/p> <p>需要复制数据的另一个例子是填写发票的明l项。报价单通常用于挑选客戯购的商品。我们可以只存储报h?IDQ?ID 指向包含产品说明、h格和其他详细信息的报价单。但是,产品说明和hg随着旉而改变。如果不数据从报h单复制到明细表中Q将来则无法准确地重新打印原始发。如果您未收到付款Q问题将非常严重?/p> <p>因此Q虽然规范化可以相同的数据很好C存在一个地方ƈ能简化编辑工作,但某些情况下却不需要这些优ѝ如果以后由于历史原因需要数据的快照Q则必须从一开始就在数据库中设计好。否则,一旦数据被覆盖无法再扑֛?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic12></a>使用没有切含义的字D作Z键字D?/h2> <p>Z提高效率Q每个表都应该有一个主键字Dc主键字D定义了在表中的唯一性,q由索引在其他字D中使用Q以提高搜烦性能。例如,客户表可以包含ؓ每个客户定义唯一~号?CustomerID 字段。ؓ了便于讨论,假定表中包含多个字段Q而不仅仅是简单的单一表查找(例如国家/地区列表Q?/p> <p>一般来_主键字段应具有如下特征: <ul type=disc> <li>应该只包含一个字D?br>可以多个字D定义ؓ表的主键字段Q但最好是使用一个字Dc首先,如果需要用多个字D|定义唯一性,则需要占用更多的I间来存储主键。其ơ,表中的其他烦引还必须使用主键字段的组合,q样所占用的空间比使用一个字D|占用的空间要多。最后,在表中标识记录需要获取字D늻合。用一?CustomerID 字段定义客户比用其他字D늻合要好得多?nbsp; <li>应该为数字类?br>Access 提供?<strong>AutoNumber</strong> 字段cd是一?<strong>Long Integer</strong>Q长整数Q,非常适用于主键字Dc这些值可以自动保证每个记录的唯一性,同时也支持多用户数据输入?nbsp; <li>不会随时间而改?br>主键字段不应该随旉而改变。一旦标识了主键字段Q就应该永远不变Q象C会保障号一P。更改过的主键字D将很难再用历史数据,因ؓ其中的链接被破坏了?nbsp; <li>应该没有切含义<br>要确保主键字D不会随旉而更改,它应该没有确切含义。没有确切含义的主键值在其他数据不完整时也非常有用。例如,您可以指定一个客LP而无需该客L完整地址。应用程序的其余部分可以很好地工作,您也可以在检索记录时d信息。如果表中用了国家/地区字段或其他您没有的标识字D作Z键的一部分Q则很可能会D无法使用应用E序?</li> </ul> <p>鉴于上述原因Q我们徏议在大部分表中?<strong>AutoNumber</strong> 字段作ؓ主键字段。通过使用l合框和隐藏列,可以字D늻定到 <strong>AutoNumber</strong> 字段q将光藏,使用h法看到?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic13></a>使用引用完整?/h2> <p>对表q行定义q理解各表是如何兌的之后,L保添加引用完整性来巩固各表之间的关pR这样可以避免错误地修改链接字段而留下孤立的记录。Microsoft Jet 数据库引擎支持复杂的引用完整性,允许用户q行U联更新和删除。一般情况下Q不应修?ID 字段。因此,U联更新用得较少Q但U联删除却非常有用?/p> <p>例如Q如果发表与订单表相关联,其中的一张发可能有无限多个订单Q明l项Q,q且每个订单记录包含它所链接的发编P则可以用联删除操作来删除发票记录Qƈ自动删除所有相应的订单记录。这样可以避免出现没有相应发记录的订单记录?/p> <h2 class=dtH1><a name=odc_fmsnormalization_topic14></a>结</h2> <p>我们希望您能快这些数据库设计概念应用到您的应用程序设计中Q从而最大程度地减少问题Q减未实现此类设计旉要进行的修正。祝您好q?/p> <img src ="http://www.shnenglu.com/3522021224/aggbug/25926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-09 22:31 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/09/25926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>E序员进阶必?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/09/25925.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Sat, 09 Jun 2007 14:19:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/09/25925.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/25925.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/09/25925.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/25925.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/25925.html</trackback:ping><description><![CDATA[<p>高质量自然是E序员的技术追求,也是职业道d的要求?/p> <p>宁可q度慢些Q也要保证每个环节的质量Q以Nq利益?/p> <p>人员理Q项目管理,可行性与需求分析,pȝ设计Q程序设计,试?/p> <p>软g开发中的三U基本策略:“复用”?#8220;分而治?#8221;?#8220;优化——折?#8221;?/p> <p>q步是应该的Q但不进步则是可ȝ?/p> <p>在一个新pȝ中,大部分的内容是成熟的Q只有小部分内容是创新的?/p> <p>面向对象QObject OrientedQ学者的口头就?#8220;请不要再发明相同的R轮子?#8221; ?/p> <p>具有一定集成度q可以重复用的软gl成单元UCؓ软构?Software Component)?/p> <p>分而治之是指把一个复杂的问题分解成若q个单的问题Q然后逐个解决?/p> <p>优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成ؓ一U责LQ程序员才会不断改进软g中的法Q数据结构和E序l织Q从而提高Y件质量?/p> <p><br> 一些不正确的观念:<br>观念之一Q我们拥有一套讲q如何开发Y件的书籍Q书中充满了标准与示例,可以帮助我们解决软g开发中遇到的Q何问题?br>客观情况Q好的参考书无疑能指导我们的工作。充分利用书c中的方法、技术和技巧,可以有效地解册Y件开发中大量常见的问题。但实践者ƈ不能因此依赖于书c,q是因ؓQ(1Q现实的工作中,׃条g千差万别Q即使是相当成熟的Y件工E规范,常常也无法套用。(2QY件技术日新月异,没有哪一UY件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软g领域则意味着落后?/p> <p>观念之二Q我们拥有最好的开发工兗最好的计算机,一定能做出优秀的Y件?br>客观情况Q良好的开发环境只是出成果的必要条gQ而不是充分条件。如果拥有好环境的是一庸人,难保他们不干出南辕北辙的事情?/p> <p>观念之三Q如果我们落后于计划Q可以增加更多的E序员来解决?br>客观情况QY件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的目增添新手Q可能会更加延误目。因为:Q?Q新手会产生很多新的错误Qə目混ؕ。(2Q老手向新手解释工作以及交思想都要p旉Q实际开发时间更。所以科学的目计划很重要,不在乎计划能提前多少Q重在恰如其分。如果用“大跃q?#8221;的方式奔向共产主义,只会产生倒退的后果?/p> <p>观念之四Q既焉求分析很困难Q不三七二十一先把软g做了再说Q反正Y件是灉|的,随时可以修改?br>客观情况Q对需求把握得准,软g的修修补补就少。有些需求在一开始时很难定Q在开发过E中要不断地加以Ҏ。Y件修改越早代仯,修改晚代h大Q就跟治病一样道理?/p> <p><br>E序设计是自׃快乐的事情,不要发誓忠于某某M而自ȝ恹{?/p> <p>p|的技巧通常是技?</p> <p><br>开发h员应该意识到Q所有的错误都是严重的,不存在微不道的错误。这h能少犯错误?/p> <p><br>理的目的是让大家一h工作做好Qƈ且让各h获得各自的快乐和满。当一个组l被地领导时Q雇员甚至不知道他们已被领导。在目完成Ӟ他们会自豪地_“看看我们通过努力取得的成l吧”。所以管理者不能老惦记着自己是一个官Q而应时刻意识到自己是责Q的主要承担者?/p> <p> </p> <p>真正的程序员都有如下U性: <br>一、诚?br>E序员在学习与工作期间几乎天天与机器打交道,压根没有受ƺ骗或欺骗h的机会。勤奋的E序员在调试无穷多的E序BugӞ已经深深地接受了“诚实”的教肌Ӏ不诚实的hQ他肯定不想做、也做不好程序员?br>二、简单——实用主?br>目前即最先进的计机也不具备Q程序员的基本工作就是把复杂的问题{化ؓ计算处理的简单的E序。如果一个问题复杂到q程序员自己都不能理解,他就无法~出E序让更W的计算机来处理。所以程序员信奉“单——实?#8221;M?br>三、爱憎分?br>E序员大都喜Ƣ技术挑战,不喜Ƣ搞试与维护。高水^的程序员喜欢与高水^的程序员一起工作,因ؓ他们?#8220;与臭{下棋Q棋下臭”。程序员大都厌恶拉帮l派、耍政L腕。不信,CC认识的程序员Q有几个是党zh士?<br>四、工作单调但不乏?br>有h问编E大师:“E序设计的真正含义是什?Q?#8221;<br>大师回答_“饿了的时候就吃,困的时候就睡,只要时机恰当p行程序设计?#8221;<br>其实E序员的生活和工作已融ؓ一体,管单调却不乏味Q还能独享孤独。有诗ؓ证:<br>                              我编E三?br>                              两耳不Mh?br>                              只有盘在歌?/p> <p>l论Q优U的程序员没有理由不让人喜Ƣ,他们q比怪僻来得可爱?/p> <p> </p> <p>微Y公司在选择l理人员ӞL把他们的技术知识和q用技术去赚钱的能力放在首位?/p> <p>比盖曾这hq聪明:明h一定反应敏P善于接受C物。他能迅速进入一个新领域Q给你一个头头是道的解释。他提出的问题往往一针见血、击中要実뀂他能及时掌握所学知识,q且博闻Q他能把本来认ؓ互不相干的领域联pd一起问题得到解决。他富有创新_与合作精?#8230;…</p> <p><br>好的E序l理应该具备以下几个条gQ?br>一、技术水qxE序员队伍中的最高?br>每个E序员骨子里头都有一股傲气,如果你不能技压群雄,他们׃会听你指挥。一个技术水q差的d为程序经理真是个悲剧Q就象一个略有权势的太监Q表面上有h对他点头哈腰Q背后却被h鄙视?br>二、能做最多且最隄工作<br>E序l理~程要快且好。别q一天的z,他半天就能做完,q样才会有精力去搞管理。程序经理应负责pȝ分析、系l设计这cL隄开发工作,q指g同水q的E序员把各自的工作做好。如果h手不够,E序l理要能同时q几个h的活?br>三、有人格力<br>软g开发是智力创作q程Q你不能指望仅通过执行规章制度来生好的作品。很多Y件公司的E序l理都不是管理专业出w的Q他们也不可能ؓ了搞好管理而成天玩弄心机。技术出色的E序l理一般少有心术不正的Q所以管理的重点应是“以n作则”?#8220;公正待h”。如果程序经理在上班时趴在桌上睡觉,其他E序员也会这样干。如果程序经理发现有两个E序员趴在机器旁睡觉Q不能只对其中一个大声吼叫:“你一~程想睡觉Q看看hӞ在睡觉时都想着~程?#8221;<br>如果理者没有h格魅力,没有h信服你,团队׃会有凝聚力,乌合之众不可能开发出优秀的Y件?br>l论Q一个有zd的Y件公司的各l理都不会这h叹,“因ؓ我啥也不会干Q所以只好当领导?#8221;</p> <p><br>在Y仉域,技术的力量是无ILQ一天之内就可整个产业发生巨变?/p> <p><br>好兵好将都不是天生的Q是后天l出来的Q既要学会冷静地分析问题Q又要充满激情地d作?/p> <p><br>{制度q不限制自由和民主,它能让自以ؓ聪明l顶、谁也不服的Z懂得如何合作与奋斗。就象有了一架梯子,每个人才有机会爬上墙头摘下那向往已久的野花。当梯子散成一堆木时Q只可能造就几个卖炭?/p> <p> </p> <p>把技术水q_为四U,W一U最低,W四U最高。第一U技术水q的E序员主要考核~程基本功,要求质量合格Q他们主要来自刚毕业的大学生Q。第二技术水q的E序员编E质量要高,做过几个软g目Q有数年的工作经验,q能指导新手的工作。第三技术水q的E序员主要考核pȝ分析与系l设计的能力Q要求其技术有_的深度和q度。第四技术水q的E序员是成功的Y件品的设计师,他不仅技术超,q且能技术{化ؓ有h值的商品?br>把管理(q里仅指软g业务的管理,不考虑行政事务Q水q也分成四。第零最低,W三U最高。第零񔽎理水^的h没有理职务Q就是普通员工。第一U管理水q的人是开发小l的l长Q可带领几名E序员工作。第二񔽎理水^的h是项目经理。第三񔽎理水^的h军_某些产品是否要开发,以及如何d领市场?/p> <p><br>当我们在工作中碰到挫折时Q先要冷静地分析问题Q事出有因哪Q,扑և问题的内因与外因。内因是最主要的,应该予以最先解冟?/p> <p><br>“q信”是傻子碰到骗子的l果?/p> <p><br>Z不让自己“?#8221;Q善良的Z应该用脑子去多学一些知识,努力让自己来把握命运Q不要急着把一生托l某个h或某个组l?/p> <p>上天不可能赋于一个h太多的优点,以致于他没有表示谦虚的余地?/p> <p><br>我们在求学时可能太功利太挑剔Q导致知识结构非常单薄,只怕到了晚q也成不了大器。当E序员擅长技术时Q还要时ȝ意I补自己ƈ不擅长的非技术才能。扬长补短才能提高综合素质?/p> <p>人是最有h值的资源?/p> <p>q度安排q不见得一定要W合逻辑序。应可能地先做技术难度高的事Q后做难度低的事。也是辛苦在前Q轻村֜后?/p> <p>里程就象心늚灯塔Q忙碌的h不混ؕQ不q失方向?/p> <p>人在做一件事情时Q由于存在很多不定的因素,一般不可能100% 地达到目标。假讑^思h做事能完成目标的80%。如果某个h的目标是100分,那么他最l成l可?0分。如果某个h的目标只?0分,那么他最l成l只?8分?/p> <p>如果没有高目标,人的堕落很快。如果没?#8220;零缺?#8221;的质量目标,也许~陷׃成堆?/p> <p>软g是如此的灉|Q如果没有规范来制约Q就Ҏ因无序的喜好而导致؜沌;但规范如果太严密了,׃扼杀E序员生机勃勃的创造力?/p> <p>z是一U美!</p> <p>每当我们沉迷于短期利益不思进取时Q应该好好回忆童q时代那些伟大的pQ给自己一些激励?/p> <p>“人分四类——h物,人才Qh手,人渣?#8221;</p> <p>我曾得到很多炫目的荣誉,但学生时代的荣誉只是一U鼓励,q不是对我才能和事业的确认?/p> <p>“当你没法扶一个h上马Ӟ也许应该拉他下马”------李敖</p> <p><br>Z么Y件系l分析员的工资要比普通程序员高?是因ؓ需求分析困隑֘?/p> <p>如果您学会了客观、科学的可行性分析,在作决策时就要果断?/p> <p>pȝ设计的优劣在Ҏ上决定了软gpȝ的质量?/p> <p>文学中有U学Q音乐中有数学,漫画中有C数学的拓扑学。Od可以“几笔”把一个hd来,不管怎么化或丑化,是zd。ؓ什么?因ؓ?#8220;几笔”不是别的Q而是拓扑学中的特征不变量Q这是事物最本质的东ѝ?nbsp;              -------杨叔?/p> <p>体系l构是Y件系l中最本质的东ѝ?/p> <p>  内聚QCohesionQ是一个模块内部各成分之间相关联程度的度量。耦合QCouplingQ是模块之间依赖E度的度量?/p> <p>技术进步最快也快不qh们欲望的增长?/p> <p>对象QObjectQ是c(ClassQ的一个实例(InstanceQ?/p> <p><br>ȝ可以把他的错误埋葬在C了事Q但E序员不能。我们必要学会试与改错,q且把测试与攚w工作做好?/p> <p>试q不仅是个技术问题,更是个职业道德问题?/p> <p>试只能证明~陷存在Q而不能证明缺陷不存在?/p> <p>攚w是个大悲大喜的过E,一天之内可以让人在悲伤的低谷和喜悦的颠C间跌荡v伏?/p> <p>E序中的错误只有开发者自己才能找出ƈҎ。如果因畏惧而拖Ӟ会让你终日心情不定,食无呻I睡不香。所以长痛不如短痛,要集中精力对付错误?/p> <p>~程大师曾说Q?#8220;哪怕程序只有三行长QL一天你也不得不对它l护?#8221;</p> <img src ="http://www.shnenglu.com/3522021224/aggbug/25925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-09 22:19 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/09/25925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++书籍Lhttp://www.shnenglu.com/3522021224/archive/2007/06/09/25916.html 星梦情缘 星梦情缘Sat, 09 Jun 2007 11:42:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/09/25916.htmlhttp://www.shnenglu.com/3522021224/comments/25916.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/09/25916.html#Feedback6http://www.shnenglu.com/3522021224/comments/commentRss/25916.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/25916.html利用假日Q把我所有的书籍整理了一下,以前也整理过Q但不上很全。以下的书籍全部是我自己传上ȝQ基本上是国内外比较l典的C++学习资料。大部分为PDF格式Q少数几个ؓPDG格式Q都能够下蝲。感谢CSDN提供如此大的I间Q前面的有少数部分下载可能需要积分,那是以前传的Q不q积分很,也很Ҏ赚,今天上传的就不会要了Q大家如果看到自己喜Ƣ的书,׃载吧。由于书c比较多Q不可能对书一一作介l,以后有时间会补充Q?img src="http://bbs.bc-cn.net/Skins/Default/emot/em01.gif" onload="javascript:if(this.width>650)this.style.width=650;" align=middle border=0 src_cetemp="http://bbs.bc-cn.net/Skins/Default/emot/em01.gif">

                        认ؓ有用顶一?br>===1===《C++沉思录完整版》(中文版)
http://download.csdn.net/source/172842

===2===《C++Primer 3rd》英文版  
http://download.csdn.net/source/172847
C++ Primer的第三版l合了Stanley Lippman的实늻验和Josée Lajoie对于ANSI/ISO标准C++的深入理解。这本指g的第三版已经被重新改写过Q以便更加精地讲述标准C++的特性和用法。在本书中,对于C++初学者特别有价值的是一些来自真实世界中的程序例子,它们说明了泛型程?generic program)的设计、面向对象程序的设计、模板的用法Q以及用标准C++q行E序设计的方斚w面。而且Q本书也在适当的地方讲C一些习惯用法以及效率指对{?br>

===3===《C++代码设计与重用?br>
http://download.csdn.net/source/172849

===4===《C++~程思想?br>http://download.csdn.net/source/172854

===5===《c++语言命o详解 ?br>http://download.csdn.net/source/172856

===6===《C++专家~程 ?br>http://download.csdn.net/source/172857

===7===《STL中文版?br>http://download.csdn.net/source/172860
本书对C++ STLq行了全面而深入的阐述。STLQ标准模板库Q是在惠普实验室中开发的Q已U_ANSI/ISO C++标准。其中的代码采用模板cd模板函数的方式,可以极大地提高编E效率。本书由P.J. Plauger{四位对C++ STL的实现有着卓越贡献的大师撰写,详细讨论了C++ STL的各个部分。全书分?6章,其中?3章通过背景知识、功能描q、头文g代码、测试程序和习题Q分别讲qCC++ STL中的13个头文gQ其他章节介l了STL中广泛涉及的三个主题--q代器、算法和容器。本书附录列Z接口和术语表Q最后列Z参考文献?本书适合对C++有一定了解的E序员及高等院校师生阅读?br>

===8===《C++E序设计语言特别版?中文?英文原版Q?br>
http://download.csdn.net/source/172869
图书cdQpdg & pdf
知子莫若?C++E序设计语言特别?中文? (pdg) &&The C++ Programming Language Special 3rd Edition(pdf) (中文?原版)
本书是讲q标准C++的最完整和最新著作,他拥有最多的读者,使用也最q泛Q按我目前的l计Q本书已l被译?7U语a。所以,q个译本所依据的原文,已经从成千上万的读者徏议中L匪浅


===9===《C++.~程思想.W??实用~程技术?br>
http://download.csdn.net/source/172872
《C++~程思想?W?? 荣获1996q度《Y件开发》杂志的图书震撼大奖 (Jolt Award)Q成q度最佛_书?
本书内容Q?br>·介绍实用的编E技术和最佳的实践ҎQ解决C++开发中最困难的课?br>·深入研究标准C++库的功能Q包括:字符丌Ӏ输入输出流、STL法和容?br>·讲述模板的现代用法,包括模板元编E?br>·解开对多重承的困惑Q展CRTTI的实际?br>·深入探究异常处理ҎQ清晰解释异常安全设?br>·介绍被认为是标准C++下一版特征之一的多U程处理~程技术,q提供最新研I成?br>·对书中包含的所有示例代码都提供免费下蝲Q这些代码段l过多个软gq_和编译器(包括ZWindows/Mac/Linux的GNU C++~译? 的测试,E_可靠?br>在本书作者的个h|站
www.BruceEckel.com上提供:
·本书的英文原文、源代码、练习解{指南、勘误表及补充材?br>·本书相关内容的研讨和咨询
·本书W?卷及W?卯文电子版的免费下载链?/span>

===10===《面向对象分析与设计(UML.2.0??br>http://download.csdn.net/source/173086

===11===《程序设计语a实践之\ ?br>http://download.csdn.net/source/173098

===12===《数据结?C++语言描述?br>http://download.csdn.net/source/175821

===13===《深入浅出MFC?br>http://download.csdn.net/source/175825

===14===《现代C++.E序设计?br>http://download.csdn.net/source/175829

===15===《数据结构C++.语言描述.应用标准摸板库STLW?版?br>http://download.csdn.net/source/175837
《数据结构C++语言描述—应用标准模板库QSTLQ(W?版)?br>本书是Ford和Topp两位教授?996q出版的名着Data Structures with C++的第2版,在全球范围内已经有数以万计的学生从中受益?br>作者将CQ+语言作ؓ法描述语言Q应用包含规范化的数据结构的标准模板库,集中讲述了数l、向量、表、关联树容器Q以及集合、映、堆、哈希表和图{数据结构及其算法,重点讨论了如何高效地存储大型数据集合Q涵盖了数据l构初和高U教E的最新内宏V书中各章章前提出学习目标,章后附有丰富的练习题、答案以及书面练习和上机~程l习Q指D者迅速、全面地掌握核心知识点和~程技巧?br>本书可作机及相关专业数据结构课E的核心教材Q对于广大研发h员,也是一本数据结构与面向对象技术完整结合的全新技术参考用书?br>
===16===《STL.源码剖析?br>
http://download.csdn.net/source/175842
q本书不适合C++ 初学者,不适合 GenericityQ泛型技术)初学者,?STL 初学者。这本书也不适合带领你学习面向对象(Object OrientedQ技??是的QSTL 与面向对象没有太多关q。本书前a清楚说明了书c的定位和合适的读者,以及各类基础ȝ。如果你的Generic Programming/STL实力以阅读本书所呈现的源码,那么Q恭喜,你踏上了基度山岛Q这儿有一座大宝库{着你。源码之前了无秘密,你将看到vector的实现、list的实现、heap的实现、deque的实现、RB-tree的实现、hash-table的实现、set/map 的实玎ͼ你将看到各种法Q排序、搜寅R排列组合、数据移动与复制…Q的实现Q你甚至看到底层的memory pool 和高阶抽象的traits 机制的实现。那些数据结构、那些算法、那些重要观c那些编E实务中最重要最Ҏ的珍宝,那些蜇伏已久彷佛已经q给老师的记忆,重新在你的脑中闪闪发光?


===17===《C++.多范型设计?br>
http://download.csdn.net/source/175846
C++是一U支持多U范型的~程语言Q类、重载函数、模ѝ模块以及过E编E,{等。除了该语言的灵zL和丰富性以外,此前创徏一U设计模式以支持在单个应用中使用多种范型的努力还很欠~?br>本书介绍了用多范型设计的一q串框架Q提供了形成正式多范型设计方法的基础的一pd前的设计实c?
本书提供了利用C++的多范型能力的分析过E和设计q程的知识。书中用易于理解的记法和易ȝ解释来帮助所有的C++E序?不仅是系l构建工E师或设计?在他们的应用开发中l合多种范型Q以获得更加高效、健壮、更具可UL性和更容易复用的软g?
读者将获得Ҏ持多范型设计的领域工E方法的理解、本书揭CZ如何使用共同性和差异性的原则来分析应用领域,从而根据最适合每个领域的范型来定义子领域。多范型设计比Q何一U技术或Ҏ挖掘得更深,以处理Y件抽象和设计的基本问题?br>本书介绍了所有Ş成领域工E基的概念和技术、这些概念包括:深入了解共同性和差异性分析,领域工程如何与常用设计模式相互媄响,如何扑ֈ应用领域中的抽象Q以及领域工E的原则如何用作对象范型的抽象技术的基础。最重要的是Q本书讨Z在设计阶D如何将最适当的范型应用于实现的分析技术?br>

===18===《C++.参考大全第四版?br>
http://download.csdn.net/source/175851
本书是根据着名C语言专家Herbert Schildt的着作翻译的。这是一本关于C++语言的百U全书,包括C 和C++的命令、功能、编E和应用{方面的内容。全书分Z个部分:C++基础QC子集QC++的专有特征;标准函数库;标准C++cdQC++应用E序范例。详l描q和演示了定义C++语言的关键字、语法、函数、类和特征。其中第一部分全面讨论了C++的C子集Q第二部分详l介l了C++本n的特性,如类和对象、构造函数、析构函数和模板{;W三部分描述了标准函数库Q第四部分讨Z标准cdQ包括STLQ标准模板库Q;W五部分昄了两个应用C++和面向对象编E的实际例子?本书内容全面、翔实,是学习C++~程语言的广大学生的一部有用的工具书,也是对C++感兴的读者的必备参考书?

===19===《C++~程艺术?br>
http://download.csdn.net/source/175852
本书揭示了C++E序员创Z界软g的奥U。程序设计大师Herbert Schildt通过C++语言q泛应用于功能强大的~程d中,全面展示了C++语言的多功能性,敏捷性,和艺术性。本书内容包括探索C++的功能,创徏内存理的垃圑֛收器子系l,开发线E控刉板,建立译码器以扩展C++的功能,开发可断点l传的Internet文g下蝲工具Q创务分析库Q用ZAI的搜索技术探索h工智能,建立定制的STL容器Q以及开发Mini C++解释E序。书中所有示例和目的源代码都可以从www.osborne.com 上免费下载?

===20===《C++.~程惯用?高E序员常用方法和技巧?br>
http://download.csdn.net/source/175854

===21===《C++必知必会——图늨序设计丛书?br>http://download.csdn.net/source/175857
本书面向q阶C++的初学者,以及那些xC++水^提高C业水准的E序员和开发h员?..
本书描述了C++~程和设计中必须掌握但通常被误解的主题Q这些主题涉及的范围较广Q包括指针操作、模ѝ泛型编E、异常处理、内存分配、设计模式等。作者根据本Z及其他有l验的管理h员和培训老师的经验ȝQ对与这些主题相关的知识q行了精心挑选,最l浓~成63条。每一条款所包含的内容均行品C++~程所需的关键知识。作者称q些知识为C++E序员必备的“常识”Q其实ƈ非意味简单或q_Q而是“必不可少”?br>本书适合于中、高UC++E序员,也适合C或JavaE序员{向C++E序设计时参?br>
===22===《C++.PrimerW三版中文版?br>
http://download.csdn.net/source/175861
======== C++PrimerW三版中文版题解
http://download.csdn.net/source/172893


===23===《C++.语言的设计和演化?br>http://download.csdn.net/source/175864
C++E序设计语言是由来自AT&T Bell Laboratories的Bjarne StroustrupQ即本文作者)设计和实现的Q它兼具Simula语言在组l与设计斚w的特性以及适用于系l程序设计的C语言设施。C++最初的版本被称?#8220;带类的CQC with classesQ?#8221;[Stroustrup,1980]Q在1980q被W一ơ投入用;当时它只支持pȝE序设计Q?#167;3Q和数据抽象技术(§4.1Q。支持面向对象程序设计的语言设施?983q被加入C++Q之后,面向对象设计Ҏ和面向对象程序设计技术就逐渐q入了C++领域。在1985q_C++W一ơ投入商业市场[Stroustrup,1986][ Stroustrup,1986b]。在1987?989q间Q支持范型程序设计的语言设施也被加进了C++[Ellis,1990][Stroustrup,1991]?br>本书是由CQ+语言的设计师本h所写,描述CQ+语言的发展历双Ӏ设计理念及技术细节的著作。在计算机发展史上,q种从多斚w多角度描qCU主语a各个斚w的综合性著作,至今我还只看到这一本。阅?/span>本书Q不仅可以了解有关CQ+语言的许多重要技术问题和l节Q还可以q一步理解各UCQ+特征的设计出发点、设计过E中所考虑的方斚w面问题,以及语言成Şq程中的各种权衡与选择?br>作ؓC++语言的创造者,作者对于自q作品自然是珍爱有加。对某些针对C++语言的批论,本书中也有一些针锋相对的的比较尖锐的观点。但U观全书Q作者的观点和意见还是比较客观的Qƈ没有什么过于情l化的东ѝ?br>
===24===《Essential.C++?..中文?候捷?br>
http://download.csdn.net/source/175865
stanley B.Lippman所著的《C++ Essential》雄距书坛历久不衎ͼ堪称C++最x本,但是走过10个年头之后,l?237늚《C++ Essential》第三版QLippman 又朴归真地写了这?76늚《Essential C++》,有了满汉全席Qؓ何还眷顾清粥菜Q完成了伟大的巨著,何必回头再写q么一本轻薄短的初学者用书呢Q?br>所有知道Lippman和《C++ Essential》的人,怸都Q现相同的问号?

===25===《Effective STL-revised》英文版
http://download.csdn.net/source/175867

===26===《Effective C++ & More Effective C++?chm
http://download.csdn.net/source/175868

===27===<c++设计新思维〉mcd-c-ch1-4.pdf
http://download.csdn.net/source/175869
一般對C++ templates 的粗淺印象,大約停留在「容器(containersQ」的製作。稍有研I則會發現,templates衍生Z的C++ Generic ProgrammingQ泛型編E)技術,在C++ 標準E式庫已E遍開花i果。以STL為重要骨q的C++ 標準E式庫,templates 廣泛運用於容器(containersQ、演法QalgorithmsQ、仿函式QfunctorsQ、配接器QadaptersQ、配|器QallocatorsQ、P代器QiteratorsQ頭Q無處不在,無役不與Q乃x原有的class-based iostream都被改寫為template-based iostream


===28===<C++高参考手?gt;
http://download.csdn.net/source/175872

===29===〈c++  多范型设计?br>http://download.csdn.net/source/175873

===30===C计算机常用数据结构和法
http://download.csdn.net/source/175878

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
====31====法DQ原书第2?  Q美QThomas H.Cormen, Charles E.Leiserson {?br>
http://download.csdn.net/source/177102
法领域的标准教材,全球多所知名大学选用
本书以相当的深度介绍了许多常用的数据l构和有效的法Q得这些算法的设计和分析易于被各个层次的读者所理解?br>本书~写上采用了“五个一”Q即一章介l一个算法、一U设计技术、一个应用领域和一个相兌题?br>  ●MIT名师联手铸就Q被誉ؓ“计算机算法的圣经”
  ●教学网址、视频课E及在线学习中心Q全方位学习模式
  本书深入出Q全面地介绍了计机法。对每一个算法的分析既易于理解又十分有趣Qƈ保持了数学严谨性。本书的设计目标全面Q适用于多U用途。涵盖的内容有:法在计中的作用,概率分析和随机算法的介绍。本书专门讨ZU性规划,介绍了动态规划的两个应用Q随机化和线性规划技术的q似法{,q有有关递归求解、快速排序中用到的划分方法与期望U性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对通子囄法正性的证明Q对哈密回路和子集求和问题的NP完全性的证明{内宏V全书提供了900多个l习题和思考题以及叙述较ؓ详细的实例研I?br>  本书内容丰富Q对本科生的数据l构评和研I生的算法课E都是很实用的教材。本书在读者的职业生中,也是一本案头的数学参考书或工E实跉|册?br>  在有关算法的书中Q有一些叙q非怸谨,但不够全面,另一些涉及了大量的题材,但又~Z严}性。《算法导论》将严}性和全面性融Z体?br>
  本书深入讨论各类法Qƈ着力ɘq些法的设计和分析能ؓ各个层次的读者接受。各章自成体p,可以作ؓ独立的学习单元。算法以p和伪代码的Ş式描qͼ具备初步E序设计l验的hp看懂。说明和解释力求显易懂Q不失深度和数学严}性?br>  本书自第1版出版以来,已经成ؓ世界范围内广泛用的大学教材和专业h员的标准参考书。第2版增加了法作用、概率分析与随机法、线性规划等几章。同Ӟ对第1版的几乎每一节都作了大量的修订。一y妙而又重要的修Ҏ提前引入循环不变式,q在全书中用来证明算法的正确性。在不改变数学和分析重点的前提下Q作者将许多数学基础知识从第一部分Ud了附录中Qƈ在开始部分加入了一些富有诱导性的题材?br>
===32===法D{案
http://download.csdn.net/source/174789
不用多介l了Q看标题q道了Q~-~

===33===《计机E序设计艺术》第三版W二卷半值算?br>http://download.csdn.net/down/165775

===34===《计机E序设计艺术》第三版W一卷基本算?br>http://download.csdn.net/down/168064

===35===计算机程序设计艺术》第三版W三h序和查找
http://download.csdn.net/source/165459

另外提供一个包含以上三L中文?a target=_blank>http://www.gz183.com.cn/downloadpage/download_1438.htm



星梦情缘 2007-06-09 19:42 发表评论
]]>
怎样实现数目不定的函数参?http://www.shnenglu.com/3522021224/archive/2007/06/09/25869.html 星梦情缘 星梦情缘Fri, 08 Jun 2007 16:05:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/09/25869.htmlhttp://www.shnenglu.com/3522021224/comments/25869.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/09/25869.html#Feedback4http://www.shnenglu.com/3522021224/comments/commentRss/25869.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/25869.html怎样实现数目不定的函数参?/span>

 

2006-12-28

erran

 

实现Ҏ一Q自定义指针扑ֈ函数参数的下一个参敎ͼ

 

// 例子 A Q?/span>

template<class T>

T umin(T _a, ...)

{           

       T _r = _a;

       T* _p = &_a;

      

       int count = 1;

      

       while ((*_p) != -1)

       {    

              if (_r > (*_p)) _r = (*_p);

              cout << "No." << count << ": " << (*_p) << endl;


             
//
计算W二个参数的地址Qƈ且输地址

// 注: 在3Q位Q4字节Q机器上表现为所有的变量地址都能被4整除

// 相当?/span> _INTSIZEOF(n): ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )

// 问题是用q个式子ȝQ是无法知道哪个才是最后哪个参数。所以用Q?/span> 1 做结束参数?/span>

              _p = (T*)((char *)_p + (sizeof(T) + sizeof(int) - 1) / sizeof(int) * sizeof(int));


       
       count++;

       }

      

       return _r;

}

// 调用Q?/span>

int main(int argc, char* argv[])

{

       int a, b, c, d, e;      

       a = 1;    b = 3;       c = 2;       d = 12; e = 34;

      

       cout << umin<int>( a, b, c, d, e, -1) << endl;      

cout << umin<int>(1, 4, 2, 5, 2, -1) << endl;

cout << umin<char>('a', 'b', 'c', 'd', 'e', -1) << endl;

 

       return 0;

}

 

 

 

实现Ҏ二:利用 QNQIQ提供的三个?/span> va_argQ?/span> va_end, va_start 来实?/span> Q?/span>

 

q三个宏定义在头文g stdarg.h ?/span> , 主要有: va_arg, va_end, va_start Q?/span> va_list


?/span> _WIN32 下:

typedef char * va_list;


其它的三?/span> ( 不同的^C有不太一?/span> )


/* A c at the proper definitions for other platforms */

#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )

#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )

#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )

#define va_end(ap) ( ap = (va_list)0 )


其实q个Ҏ的实现原理同Ҏ一是一L?br>


//
例子 B Q?/span>

template<class T>

T umin(T _a, ...)

{    

       T _p = _a;

       T _r = _a;

 

       int count = 1;

      

       va_list arg_ptr;

       va_start(arg_ptr, _a);

      

       while (_p != -1)// 所以用Q?/span> 1 做结束参数?/span>

       {    

              if (_r > _p) _r = _p;

              cout << "No." << count << ": " << _p << endl;                                                       

              _p = va_arg(arg_ptr, int);

              count++;

       }

 

       va_end(arg_ptr);

      

       return _r;

}


//
调用Q?/span>

int main(int argc, char* argv[])

{

       int a, b, c, d, e;      

       a = 1;    b = 3;       c = 2;       d = 12; e = 34;

      

       cout << umin<int>( a, b, c, d, e, -1) << endl;      

cout << umin<int>(1, 4, 2, 5, 2, -1) << endl;

cout << umin<char>('a', 'b', 'c', 'd', 'e', -1) << endl;

 

       return 0;

}

 

 

Ҏ一和方法二都会遇到同一个问题:那就是没有办法知道该函数中一共到底有多少个参数。因Z 没有办法d断到底哪个指针才是最后的哪个参数的地址?/span>

 

惛_一个解x法是在该函数最后添加一个标志参敎ͼ以标志该参数是最后一个参敎ͼ但是应该注意的是Q作为标志参数的条g是,该标志是不可能出现在此前的参数表中。如以上函数调用的最后那个参敎ͼQ?/span> 1 Q?/span>

 

我想 c 语言里面?/span> scanf ?/span> printf {函数应该做q一些特D处理?/span>

 

函数的参数地址是连l的Q但?/span> 可变参数列表提供了很大的灉|性,且对可变部分的参?span>C语言~译器不会进行类型检查,所以程序中要特别小心,必须保参数的传递和接受是正的Q而且C语言的实C依赖于cpu和操作系l,所以ƈ不适用于所有的计算机和pȝQ而且随机器的不同会由很大的区别。所?/span> stdarg.h 定义很多宏。如Q?/span>

#if     !defined(_WIN32) && !defined(_MAC)

#error ERROR: Only Mac or Win32 targets supported!

#endif

 

 

l          关于函数参数的地址

 

写了一下测试代码,来测试函数的参数地址是不是连l的?/span>

试代码如下 :


//
例子 C

#include <iostream>

using namespace std;

 

template<class T>

T umin(T _a, T _b, T _c, T _d, T _e)

{    

// 输出各个参数的地址

       cout << "_a : " << hex << (int*)(&_a) << endl;

       cout << "_b : " << hex << (int*)(&_b) << endl;

       cout << "_c : " << hex << (int*)(&_c) << endl;

       cout << "_d : " << hex << (int*)(&_d) << endl;

       cout << "_e : " << hex << (int*)(&_e) << endl;

      

       // 取得最?/span>

       T _r = _a;

     if (_r > _b) _r = _b;

     if (_r > _c) _r = _c;

     if (_r > _d) _r = _d;

      

       return _r;

}

 

int main(int argc, char* argv[])

{

       int a, b, c, d, e;      

       a = 1;    b = 3;       c = 2;       d = 12; e = 34;

 

       cout << umin<int>(a, b, c, d, e) << endl;// 调用一

       cout << umin<int>(1, 4, 2, 5, 2) << endl; // 调用?/span>

       cout << umin<char>('a', 'b', 'c', 'd', 'e') << endl;// 调用?/span>

 

       return 0;

}

 

?/span> VC6.0 下编译,发现Q?/span>

对于例子 C Q?/span> 在编译器不作M优化的时候(及编译选项选择 Disable(Debug) Q,对于调用一、二、三的参?/span> _a, _b, _c, _d, _e 都是q箋的。在选择优化q行速度 ( 及编译选项选择 Maximize Speed), min 的参数地址q不都是q箋的。而用对于例子 A 和例?/span> B Q两U情况都是连l的 ( 试的时候要更改相应的代?/span> ).

 

?/span> C Disable(Debug)

?/span> C Maximize Speed

?/span> A Maximize Speed

?/span> A Disable(Debug)

_a : 0012FF58

_b : 0012FF5C

_c : 0012FF60

_d : 0012FF64

_e : 0012FF68

 

_a : 0012FF58

_b : 0012FF5C

_c : 0012FF60

_d : 0012FF64

_e : 0012FF68

 

_a : 0012FF58

_b : 0012FF5C

_c : 0012FF60

_d : 0012FF64

_e : 0012FF68

_a : 0012FF70

_b : 0012FF74

_c : 0012FF78

_d : 0012FF7C

_e : 0012FF80

 

_a : 0012FF70

_b : 0012FF80

_c : 0012FF7C

_d : 0012FF78

_e : 0012FF74

 

_a : 0012FF58

_b : 0012FF5C

_c : 0012FF60

_d : 0012FF64

_e : 0012FF68

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

 

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

 

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

 

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

 

No.1: 0012FF50

No.2: 0012FF54

No.3: 0012FF58

No.4: 0012FF5C

No.5: 0012FF60

 

 



星梦情缘 2007-06-09 00:05 发表评论
]]>
遗传法和易算?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/08/25860.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Fri, 08 Jun 2007 15:34:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/08/25860.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/25860.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/08/25860.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/25860.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/25860.html</trackback:ping><description><![CDATA[  <p align=center><span>一、引</span><span>    </span><span>a</span><span>?/span></p> <p align=left><span>    </span><span>从伏画卦到《连山》易的出玎ͼx象的观念Q数已开始萌芽,C{联pd有筮敎ͼ主要用于占卜。春U时期,</span><span>“</span><span>?/span><span>”</span><span>?/span><span>“</span><span>?/span><span>”</span><span>同时出现在《管?/span><span>·</span><span>七法》篇中:</span><span>“</span><span>则,象,法,化,军_Q心术,计数?/span><span>”</span><span>但象数在春秋初期仍是两个松散联系的概c到春秋末期Q象与数的概念联pL较密切,在《周?/span><span>·</span><span>p辞传》中提到</span><span>“</span><span>极数定象</span><span>”</span><span>Q已初步出现象数理论。这Ӟ《系辞传》中只初步论及象数的内在联系Qƈ未详l谈到象数理论的E序。孔子在教书时六艺教学大U?/span><span>“</span><span>CgM书数</span><span>”</span><span>中的敎ͼ是当时日常用的实用数。到孟子时代Q即到战国末期,象数理论乃大备,历法推步术也成熟。当时的不少学者会推步术,而星命学为孟、荀二位大儒所不。孟子所说的</span><span>“</span><span>苟求其故Q千岁之日至可坐而致?/span><span>”</span><span>Q是谈的历法推步术;荀子说Q?/span><span>“</span><span>善ؓ易者不?/span><span>”</span><span>。这Ӟ在古经法和历法推步术之外Q已有经典术数如</span><span>“</span><span>三式</span><span>”</span><span>{的出现和应用。这两类数的法Q在后汉徐岳《数术记遗》中有提要式的概括ȝ。对其中提出?/span><span>14</span><span>U算法,没有明确指出何者ؓ历法推步术算法,何者ؓ术数法E序。亦可能是综合的、浑元一体的法E序。ȝ看来Q有数必有算Q有必有法。Ş成古经法和术数算法是很自然的。在古代可能有互补的势。《周易》大衍之数很可能与古六历所用的法E序有关。唐代张遂的大衍历以及宋U九韶《数书九章》均涉及大衍法Q而秦汉时期的《九章数学》中则对大衍法避而不谈。这可能是由于古代大儒亦是视大衍之数带有秘内容Q不敢与正规的应用数学算法相提ƈ论。实际上Q大衍之数只是一U现代所说的</span><span>“</span><span>不定分析</span><span>”</span><span>而已</span><span>!</span><span>阮元论曰Q?/span><span>“</span><span>推步之法臛_衍备矣,</span><span>……</span><span>后来造者未能及也。然推本易象Q终为傅合,昔h谓一行窜入于《易》以眩众Q是乃千古定Z</span><span>”</span><span>。E</span><span>1</span><span>Q由此可知,q法而论Q推步术自ؓ推步术,数术自ؓ数术Q各成系l,不相涉也。然而,qƈ不意味着数术法E序中无合理内容。英人李U瑟常提到术?/span><span>“</span><span>内算</span><span>”</span><span>很有用。E</span><span>2</span><span>Q但未作深入探究。宋U九韶《数书九章》序中论内外,涉及l典术数三式Q其论颇正:</span><span>“</span><span>今数术之书尚三十余家Q天象历度,谓之~术。太乙壬甲谓之三式,皆曰内算Q言其秘也。九章所载即周官九数Q系于方圆者ؓ镚术Q皆曰外,对内而言也。其用相通,不可歧二</span><span>”</span><span>。E</span><span>3</span><span>Q以上所论均涉及数字信息?/span><span>?/span></p> <p align=left><span>    21</span><span>世纪已成Z息时代,信息与象数息息相通。故《系辞传》象数思维应当在今后大攑օ芒,与西方计机文化成就携手q进Q逐渐融汇成一体。《周?/span><span>·</span><span>p辞传?/span><span>“</span><span>天地之大h?/span><span>”</span><span>Q?/span><span>“</span><span>生生之谓《易?/span><span>”</span><span>Q强调生命演化思想Q卦ȝ讄上采取乾坤六子的形式Q这都与西方新近兴v的遗传算法的_与具体计步骤内容相q?/span><span>?/span></p> <p align=center><span>二、遗传密码与象数</span><span>?/span></p> <p align=left><span>    </span><span>q些q来Q国内外对于U学易感兴趣的学者,无不重视生物遗传密码的研I成果,q展开《周易》象C遗传密码l部l构Ҏ的探讨。这斚wQ尤以已故著名科学易学家潘雨h授的研究h代表性。潘先生博古通今Q既深钻q象数理论,又熟悉分子生物学和遗传密码的生物化学含义Q他?/span><span>“</span><span>U学?/span><span>”</span><span>一文中?/span><span>DNA</span><span>Q脱氧核p核酸)?/span><span>RNA</span><span>Q核p核酸)ZQ来考察其分子结构的变化情况Q及其化学键?/span><span>“</span><span>象数</span><span>”</span><span>。E</span><span>4</span><span>Q?/span><span>?/span><span>讨论l果如下表所C(暂略Q:</span></p> <p align=left><span>    </span><span>Z使读者深入理解象C生物遗传学及遗传密码的对应关p,有必要将有关U学名词加以D的解释:</span><span>?/span></p> <p align=left><span>  1</span><span>、遗传密码:</span><span> DNA</span><span>Q脱氧核p核酸)中核苷酸序和蛋白质中的氨基酔R序之间的关系UCؓ遗传密码。遗传密码是q基的三联体(相当于《易l》八卦的三爻Q,可在</span><span>DNA</span><span>分子上顺序读出,且互不重q)?/span><span>DNA</span><span>是一切生命Ş式的普遍遗传物质?/span><span>DNA</span><span>有四U不同的基Q两U嘌呤,卌嘌呤和鸟嘌呤Q以及两U嘧Ӟ卌腺嘧啶和胞嘧啶?/span><span>DNA</span><span>的结构呈双螺旋结构Ş式?/span><span>?/span></p> <p align=left><span>    </span><span>׃联体密码重PQ可形成与六十四卦相对应的符Ll。这q偶然Q而是自然物的发生和演化合乎易数的自组l作用造成的。潘雨h教授在《周易纵横录》论文中已作了详l的象数Q可以参看?/span><span>?/span></p> <p align=left><span>   2</span><span>、核苷酸Q上q四U碱Z一与脱氧核p结合,叫作核苷。核L酸酯衍生物UC为核苷酸?/span><span>DNA</span><span>分子是由核苷酸构成的Q许多单元接在一起就形成了多核苷酔R链?/span><span>?/span></p> <p align=left><span>     3</span><span>、核p核酸(</span><span>RNA</span><span>Q:</span><span>RNA</span><span>?/span><span>DNA</span><span>一P都是镉K分子Q亦是由重复的核苷酸单元l成?/span><span>RNA</span><span>的构成单元有两点?/span><span>DNA</span><span>不同。首先,</span><span>RNA</span><span>的糖l分不是脱氧核糖Q而是核糖。其ơ,四种基中虽然有三种Q即腺嘌呤、鸟嘌呤和胞嘧啶Q在</span><span>RNA</span><span>?/span><span>DNA</span><span>中都一栗但W四U,卌腺嘧Ӟ?/span><span>RNA</span><span>中ؓ嘧啶所代替Q它了一个甲基。在三种</span><span>RNA</span><span>cd的一U类型中Q还偶尔出现别的基?/span><span>?/span></p> <p align=left><span>    4</span><span>、信使核p核酸(</span><span>mRNA</span><span>Q:?/span><span>HTSS</span><span>?/span><span>mRNA</span><span>在把密码译成专一性蛋白质时v模板作用Qƈ且能把遗传密码的信息从细胞核?/span><span>DNA</span><span>q送到l胞质,以便促进合成蛋白质的作用。携带着所需要的信息Q以军_一个蛋白质分子的整个多肽链?/span><span>mRNA</span><span>的长度,UCؓ作用子。某?/span><span>mRNA</span><span>分子携带着不仅合成一个蛋白质分子的信息,q样?/span><span>mRNA</span><span>UCؓ多作用子。在合成q程中,当密码由</span><span>DNA</span><span>转录?/span><span>mRNA</span><span>上时Q后者即dl胞核,通过核膜q到l胞质中。在l胞质中它移动到蛋白质合成的场所Q即转移到核p核蛋白体处。核p核蛋白体由</span><span>DNA</span><span>和蛋白质l成?/span><span>?/span></p> <p align=left><span>  5</span><span>、{ULp核酸(</span><span>tRNA</span><span>Q:?/span><span>HTSS</span><span>〗其作用是把l胞质中的}基酸转移到核p核蛋白体上蛋白质合成的场所。因此,</span><span>tRNA</span><span>是在特定氨基怸对它~码?/span><span>mRNA</span><span>三联体之间v媒介物或转接分子的作用。每个}基酸都有其互不相同的、专一?/span><span>tRNA</span><span>分子。每U?/span><span>tRNA</span><span>含有大约</span><span>80</span><span>个核苷酸?/span><span>?/span></p> <p align=left><span>  6</span><span>、反密码子:</span><span>tRNA</span><span>分子上与</span><span>mRNA</span><span>q接的一定部位是一个由三个基l成的顺序,?/span><span>mRNA</span><span>上的密码子互补,UCؓ反密码子?/span><span>?/span></p> <p align=left><span>   7</span><span>、简q密码:试验表明Q虽然Q何特定}基酸密码子的开始两个字母L不变Q然而第三个字母有时却不同。例如,~码丝}酸的不仅?/span><span>AGU</span><span>Q也?/span><span>AGC</span><span>。因此,</span><span>Crick 1966</span><span>q提?/span><span>“</span><span>摇摆</span><span>”</span><span>假设Q这U摇摆在于第三对基之间的配合与前两对碱基的_要求相比多少有些村ּ。凡是同一个}基酸有不同的密码者,q种密码UCؓq密码?/span><span>?/span></p> <p align=center><span>三、遗传算法概?/span><span>?/span></p> <p align=left><span>    </span><span>在遗传算法中Q可以将模型的一个参数表CZؓ一个二q制数码Q全部参数用许多串联在一L二进制数码组成的字符?/span><span>(</span><span>cM一个染色体</span><span>)</span><span>代表。从一l初始模型,即一些具有不同染色体的个体组成的U群开始。E</span><span>5</span><span>Q?/span><span>?/span></p> <p align=left><span>    </span><span>遗传法的基本思想正是Z模仿生物界的遗传q程。它把问题的参数用基因代表,把问题的解用染色体代?/span><span>(</span><span>在计机里ؓ字符?/span><span>)</span><span>Q从而得C个由h不同染色体的个体l成的群体。这个群体在问题特定的环境里生存竞争Q适者有最好的Z生存和生后代。后代随机化地承了父代的最好特征,q也在生存环境的控制支配下l这一q程。群体的染色体都逐渐适应环境Q不断进化,最后收敛到一族最适应环境的类g体,卛_到问题最优的解。值得注意的一ҎQ现在的遗传法是受生物q化论学说的启发提出的,q种学说Ҏ们用计算军_杂问题很有用Q而它本n是否完全正确q不重要</span><span>(</span><span>目前生物界对此学说尚有争?/span><span>)</span><span>?/span><span>?/span></p> <p align=left><span>    </span><span>遗传法的基思想是在本世U?/span><span>50</span><span>q代初,׃一些生物学家尝试用计算机模拟生物系l演化时而提出的?/span><span>?/span></p> <p align=left><span>    </span><span>遗传法是模拟生物通过基因的遗传和变异Q有效地辑ֈ一U稳定的优化状态的J殖和选择的过E,从而徏立的一U简单而又有效的搜索方法。它q用随机而非定性的规则对一族而非一个点q行全局而非局部地搜烦Q它仅利用目标函数而不要求其导数或其它附加限制Q它虽然在特定问题上效率也许不是最高,但效率远高于传统随机法Q是一U普遍适用于各U问题的有效Ҏ。遗传算法的主要思\有:</span><span>?/span></p> <p align=left><span>    1</span><span>、繁D?/span><span>(reproduction)</span><span>Q繁D是Ҏ现有各个体的目标函数|定其生存概率,模拟生物界的自然选择Q劣者淘汎ͼ适者生存。在遗传法中,我们ZؓC持种包含的个体L不变。比较优U的个?/span><span>(</span><span>模型</span><span>)</span><span>有较大的生存概率Qƈ可能J衍Q比较差的个?/span><span>(</span><span>模型</span><span>)</span><span>可能会淘汰。这样生的下一代的个体Q一般都h较大目标函数|因而有较大的生存概率?/span></p> <p align=left><span>    2</span><span>、交?/span><span>(crossover)</span><span>Q从U群中随机地选择两两一l的双亲Q分别随机地交换部分染色体,各自产生两个新染色体?/span><span>?/span></p> <p align=left><span>    3</span><span>、变?/span><span>(mutation)</span><span>Q染色体按一定概?/span><span>(</span><span>一般很?/span><span>)</span><span>可随机地产生变异?/span><span>?/span></p> <p align=left><span>    </span><span>遗传法能够解决的问题不仅限于最优化问题Q但无论哪种问题Q都要解决两个关键问题:</span><span>(1)</span><span>必须能将问题的解{用一l二q制数码表示Q即建立解答与二q制数码间的映射</span><span>(mapping)</span><span>关系?/span><span>(2)</span><span>定义一U对最佌的定量量度,即适度函数?/span><span>?/span></p> <p align=center><span>四、自?/span><span>DNA“</span><span>计算?/span><span>”</span><span>?/span><span>“</span><span>g</span><span>”</span><span>与Y?/span><span>—?/span><span>象、数</span><span>?/span></p> <p align=left><span>    </span><span>盘由木框、竹、算珠构成,其各cȝ口诀和规则是计算E序。算盘徏立了一个珠空_易算卦爻Q杭辛斋UC为卦材、爻材,相当于易硬Ӟ《系辞传》所?/span><span>“</span><span>八卦成列Q象在其中矣</span><span>”</span><span>Q是八卦I间。《序卦》所论相当于宏观E序?/span><span>“</span><span>蓍之德圆而神Q卦之d方以?/span><span>”</span><span>{有兛_d能的Q相当于基因染色体数的作用?/span><span>?/span></p> <p align=left><span>    </span><span>遗传法所取法的自?/span><span>DNA</span><span>?/span><span>“</span><span>g</span><span>”(</span><span>?/span><span>)</span><span>l生物化学家多年q行?/span><span>DNA</span><span>l构分析的研IӞ相当</span><span> </span><span>?/span><span>1 DNA</span><span>四种基p环pȝ及其原子标准指数Q暂略)于高分子l构式所表示的原子结构。E</span><span>6</span><span>Q具体化?/span><span>DNA</span><span>Q则是双链螺旋结构的形象?/span><span>DNA</span><span>的参数有化学边界距离</span><span>(</span><span>以旋转角度表C?/span><span>)</span><span>Q边界角</span><span>(</span><span>两相d学边界间的夹?/span><span>)</span><span>Q扭力角</span><span>(DNA</span><span>螺旋的扭转角度,</span><span>0</span><span>?/span><span>360°)</span><span>。然而,前二者是帔R。只有扭力角是时常变动的变量。遗传算法主要利用扭力角变量。今遗传算法所取法的象?/span><span>—?/span><span>基l构式及</span><span>DNA</span><span>中u</span><span>(</span><span>只表CZ个核苷酸单位</span><span>)</span><span>扭力角分布等叙述如下Q?/span><span>?/span></p> <p align=left><span>    </span><span>?/span><span>1</span><span>表示</span><span>DNA</span><span>四个基pȝ及其原子标准指数Q图</span><span>2</span><span>Q暂略)上部表示基本环,其扭力角?/span><span>χi</span><span>Q其下表C糖环,其扭力角?/span><span>P(i)</span><span>Q?/span><span>γn(i)</span><span>Q碱基系l的全过E是自由的,原则上沿单个化学边界</span><span>“</span><span>摆动</span><span>”</span><span>Q就q样?/span><span>DNA</span><span>p环q接h。意卛_本环与糖环沿公共边界?/span><span>“</span><span>摆动</span><span>”</span><span>。这U摆动可能是在传递信息。沿化学界面在糖环上的内循环扭力?/span><span>χ</span><span>在空间上受到制约Q因为糖环需要闭合。已发现每一核苷酸单位都有八个主要结构参敎ͼ</span><span>χ</span><span>Q?/span><span>νm</span><span>Q?/span><span>P</span><span>Q?/span><span>α</span><span>Q?/span><span>β</span><span>Q?/span><span>γ</span><span>Q?/span><span>ε</span><span>Q?/span><span>ζ(2)</span><span>Q〖JQ〗这八个参数都限制在一个有限的距离内,原则上,扭力?/span><span>α</span><span>Q?/span><span>β</span><span>Q?/span><span>γ</span><span>Q?/span><span>ε</span><span>Q?/span><span>ζ(2)</span><span>?/span><span>χ</span><span>位于</span><span>0</span><span>?/span><span>360°</span><span>之间Q?/span><span>δ</span><span>是中轴和p环的一部分Q这里把</span><span>δ</span><span>叫做</span><span>ν?</span><span>Q?/span><span>δ</span><span>是一U冗余信息?/span><span>P</span><span>Q?/span><span>νm</span><span>距离可以推导出。典型的距离分别?/span><span>150°</span><span>~2Q5</span><span>°</span><span>Q2Q.Q?/span><span>°</span><span>~5Q.Q?/span><span>°(</span><span>距离用扭力角变化DC?/span><span>)</span><span>。如?/span><span>DNA</span><span>?/span><span>8</span><span>个结构参数已知,则排列位|已知的</span><span>DNA</span><span>Q包括其中所含的</span><span>N</span><span>个核苷酸卛_完全定?/span><span>?/span></p> <p align=left><span>    DNA</span><span>探针Q这U探?/span><span>(</span><span>?/span><span>3)</span><span>Q暂略)在探环境信息方面,从最原始的单l胞生物变Ş虫原生质中就存在其原始Ş态。这U探针机构随宇宙和生物演化而逐渐变得复杂h。瑞士学者方q《微_分析学》一书把q种探针式的试作用叫做</span><span>“</span><span>伊d</span><span>”</span><span>。E</span><span>7</span><span>Q?/span><span>“</span><span>伊d</span><span>”</span><span>在心理学界受到重视?/span><span>DNA</span><span>的探针是一U复杂的l合体,在生物分子结构研I方面n有广泛的盛名Q称之ؓ</span><span>DNA</span><span>探针U的研究。探针综合体一部分是由于其核苷酸自补偿作用而出名的?/span><span>DNA</span><span>探针׃个双链杆和一个环l成。探针最重要的部分是q个环。探针在演化q程中非常守?/span><span>(</span><span>E_</span><span>)</span><span>Q因此具有重要的生物功能。探针Ş成于l菌噬菌体最原始的重复功能?/span><span>DNA</span><span>染色体组存在有复杂的怺作用。这U作用能被其他生物分子所识别、利用,亦可由原生质来识别?/span><span>?/span></p> <p align=left><span>    DNA</span><span>相当于一个微观世界,其细部结构和功能q未认识到。可以预料,它作为遗传算法的自然hQ其有用信息Q取之不,用之不竭。要xq遗传算法,一定要先取得自?/span><span>DNA</span><span>的新探烦成就。最q对</span><span>DNA</span><span>的假l点的观,?/span><span>DNA</span><span>三叉l构的观就属于q方面的新探索?/span><span>DNA</span><span>双链l构相当于太极生两AQ两仪生四象Q一分ؓ二的沌二分叉结构。将来对</span><span>DNA</span><span>三叉l构的认识可能引导到寏V太玄经》一分ؓ三,中医</span><span>“</span><span>三阴三阳</span><span>”</span><span>的认识。这q遥远的呓惻I可能是不久的事情了?/span><span>?/span></p> <p align=center><span>五、易程序问?/span><span>?/span></p> <p align=left><span>    </span><span>易学象数理论自战国Ş成后Q由于社会制度与士大夫意识Ş态的原因Q易C能走西方公理化的道\。徐岟뀊数术记遗》积、太乙算、九宫算都有比较独立的算法。其余不一定有独立的算法。其中提出的</span><span>14</span><span>U算法是Q积,太一,两A,三才,五行,八卦,九宫、运{算Q了知算Q成数算Q把头算Q龟,珠算Q计?/span><span>(</span><span>心算</span><span>)</span><span>。对每种法的叙qͼ只有三言两语Q看不出所以然。迄今尚未有Z深入研究。原因是</span><span>“</span><span>文献不故也</span><span>”</span><span>。要x?/span><span>14</span><span>U算法的原样Q只有走到基层农民和隐居型的知识分子那里作调查。可惜多年来无人问z,所以困惑一直未解。我认ؓ调查重点主要是山东半岛蓬莱,镠罘沿v一带山区农村?/span><span>?/span></p> <p align=left><span>    </span><span>《九章数学?/span><span>“</span><span>寓理于术</span><span>”</span><span>Q文中的</span><span>“</span><span>术曰</span><span>”</span><span>会有法理论和程序背景?/span><span>?/span><span>Q?/span><span>8</span><span>Q现在唯一可了解的是珠算法Q此已有全国珠算学会在研I。其中不口诀规则Q堪U算法。可从此入手以及从历代历法推步术的演化中q烦易算法。古有《缀术》,为南北朝冲之所创,用于五星的推?/span><span>(</span><span>宋秦九韶《数书九章》第三卷天时cL</span><span>“</span><span>~术推?/span><span>”</span><span>?/span><span>)</span><span>。《缀术》在《算l十书》中有名无书Q书已失传?/span><span>?/span></p> <p align=left><span>    </span><span>MQ恢复古代易程序的研究是一大课题。南京大学天文系q生教授曾拟研I恢复缀术。究竟古代易详l内容如何,待考证恢复。秦汉前后出现的三式</span><span>(</span><span>太乙、六壬、奇?/span><span>)</span><span>l典术数的推演中可能有易算法程序的影子。其中既含科学因素,又有不少秘内容Q今后应作开发研I?/span><span>?/span></p> <p align=center><span>六、象数思维与遗传算法的比较</span><span>?/span></p> <p align=left><span>    </span><span>本h研究U学易多q_研究遗传法已有七、八q_q今已初步得出易的象数思维基本上等价于遗传法的性质与功能的初步看法。所谓象数思维主要是包含在孔子及其弟子所作的《易传》中Q且主要是《系辞传》。经Ҏ发现Q无论用自然遗传q程Q生物演化观念,整体观或Ҏ实际观测来认识自Ӟ在问题优化,生物遗传基因交配、变异,以及在溯往和预问题上都表C象数思维与遗传算法的怼性。《诗l?/span><span>·</span><span>雅》说Q?/span><span>“</span><span>唯其有之Q是以似之?/span><span>”</span><span>意即两种事物怼的根本原因是二者之间有共同的东ѝ这亦是《内l?/span><span>“</span><span>贤者察同,愚者察?/span><span>”</span><span>之意。今二者比较如下:</span><span>?/span></p> <p align=left> <span>Q.遗传法</span><span>(</span><span>以下?/span><span>GA</span><span>写表C?/span><span>)</span><span>和《易》都重视生命现象Q特别是遗传q程。《系辞传》说</span><span>“</span><span>生生之谓?/span><span>”</span><span>Q?/span><span>“</span><span>天地之大h?/span><span>”</span><span>?/span><span>?/span></p> <p align=left> <span>Q.</span><span>GA</span><span>和《易》都重视演化Q重视从h到有序的观念Q而认为确定不变的存在是暂时的。实际上Q?/span><span>GA</span><span>和《易》都有D论思想?/span><span>?/span></p> <p align=left> <span>Q.二者都有整体观思想Q?/span><span>GA</span><span>用相当染色体的种?/span><span>(population)</span><span>C为基Q用相当基因的二q制C输入计算。所用数的设计都是一个集合,而不是用单个数。易用大衍之数</span><span>50(</span><span>虚一不用</span><span>)</span><span>作ؓ演算基础Q亦是整体观?/span><span>?/span></p> <p align=left> <span>Q.二者都是以实际观测为研I根据?/span><span>GA</span><span>是西方实方法的l箋Q自不待a。伏氏是根据Ԓ观俯察、远取近取进行比较后而画八卦的,不是凭空臆造?/span><span>?/span></p> <p align=left> <span>Q.</span><span>GA</span><span>以求得问题优化解见长。孔子谓《易》是寡过之书Q趋吉避凶之书,从广义上看也是一U优化。元?/span><span>(</span><span>大吉</span><span>)</span><span>为全局优化Q吉或悔而后吉是局部优化?/span><span> </span><span>特别是《易》有《既》、《未》二卦作为纲领卦。《既》乃优化的结果,《未》也设法使其转变Q向《既》发展,很多卦爻辞字里行_多有此意?/span><span>?/span></p> <p align=left> <span>Q.二者重事物之间的相互作用和关系?/span><span>GA</span><span>用交配来表达此意Q《易》则?/span><span>“</span><span>天地?/span><span>?/span><span>Q万物化醇,男女构精Q万物化?/span><span>”</span><span>Q?/span><span>“</span><span>天气下降Q地气上?/span><span>”(</span><span>《礼?/span><span>·</span><span>月o?/span><span>)</span><span>来表C?/span><span>?/span></p> <p align=left> <span>Q.二者均重视质变Q?/span><span>GA</span><span>谓之变异Q《周?/span><span>·</span><span>p辞传》则_</span><span>“</span><span>I则变,变则通?/span><span>”?/span></p> <p align=left> <span>Q.二者均涉及数学I间的理论和应用?/span><span>GA</span><span>常用l构参数I间Q《易》则有八卦空_</span><span>“</span><span>八卦成列Q象在其中矣</span><span>”</span><span>Q?/span><span>“</span><span>乑֝成列而易立乎其中?/span><span>”</span><span>?/span><span>?/span></p> <p align=left> <span>Q.《系辞传》说Q?/span><span>“</span><span>以知来Q智以藏往</span><span>”</span><span>?/span><span>GA</span><span>既能探烦已往解决问题Q又能用于地震预报?/span><span>?/span></p> <p align=left><span>        GA</span><span>的作者提出算法的改进问题Q主要是深入挖掘</span><span>DNA</span><span>l构的潜力。而东Ҏ维则有</span><span>“</span><span>巢居知风Q穴居知?/span><span>”</span><span>的说法,q种说法是科学的Q即鸟类和昆虫类</span><span>(</span><span>如蚂?/span><span>)</span><span>均有预测天气变化的功能。如能开发鸟cd蚂蚁体内信息大分子结构奥U,可以用以改进</span><span>GA</span><span>法的功能?/span><span>?/span></p> <p align=left><span>    </span><span>附注Q已故学者刘l光一元数理论的研I是Ҏ易学象数发展出的一U易数学分支。这一分支后乏h或无人。关于一元数理论已出版《一元数理论初探?/span><span>?/span><span>Q9Q一书,其中不少?/span><span>GA</span><span>有相通之处,如其中提出的位元、序元、结元三个计程序理论概念,以及子、电子、声子、光子、热子、引子、张子等开阖角的问题。均可与</span><span>GA</span><span>怺作用Q而创造新的算法?/span></p> <img src ="http://www.shnenglu.com/3522021224/aggbug/25860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-08 23:34 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/08/25860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC调试入门http://www.shnenglu.com/3522021224/archive/2007/06/07/25778.html 星梦情缘 星梦情缘Thu, 07 Jun 2007 14:54:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/07/25778.htmlhttp://www.shnenglu.com/3522021224/comments/25778.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/07/25778.html#Feedback7http://www.shnenglu.com/3522021224/comments/commentRss/25778.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/25778.html 概述
调试是一个程序员最基本的技能,光要性甚臌q学习一门语a。不会调试的E序员就意味着他即使会一门语aQ却不能~制ZQ何好的Y件?br>q里我简要的Ҏ自己的经验列试中比较常用的技巧,希望对大家有用?br>本文U定Q在选择菜单Ӟ通过/表示分菜单Q例如File/Open表示菜单File的子菜单Open?br> 

Z调试一个程序,首先必须使程序中包含调试信息。一般情况下Q一个从AppWizard创徏的工E中包含的Debug Configuration自动包含调试信息Q但是是不是Debug版本q不是程序包含调试信息的军_因素Q程序设计者可以在L的Configuration中增加调试信息,包括Release版本?br>Z增加调试信息Q可以按照下q步骤进行:
  • 打开Project settings对话框(可以通过快捷键ALT+F7打开Q也可以通过IDE菜单Project/Settings打开)
  • 选择C/C++,Category中选择general Q则出现一个Debug Info下拉列表框,可供选择的调试信?方式包括Q?
     
    命o?/strong> Project settings 说明
    ?/td> None 没有调试信息
    /Zd Line Numbers Only 目标文g或者可执行文g中只包含全局和导出符号以及代码行信息Q不包含W号调试信息
    /Z7 C 7.0- Compatible 目标文g或者可执行文g中包含行号和所有符可试信息,包括变量名及cdQ函数及原型{?/td>
    /Zi Program Database 创徏一个程序库(PDB)Q包括类型信息和W号调试信息?/td>
    /ZI Program Database for Edit and Continue 除了前面/Zi的功能外Q这个选项允许对代码进行调试过E中的修改和l箋执行。这个选项同时?pragma讄的优化功能无?/td>

  • 选择Link,选中复选框"Generate Debug Info"Q这个选项ɘq接器把调试信息写进可执行文件和DLL
  • 如果C/C++中讄了Program Database以上的选项Q则Link incrementally可以选择。选中q个选项Q将使程序可以在上一ơ编译的基础上被~译Q即增量~译Q,而不必每ơ都从头开始编译?
断点
断点是调试器讄的一个代码位|。当E序q行到断ҎQ程序中断执行,回到调试器。断Ҏ 最常用的技巧。调试时Q只有设|了断点qɽE序回到调试器,才能对程序进行在U调试?br>
讄断点Q可以通过下述Ҏ讄一个断炏V首先把光标Ud到需要设|断点的代码行上Q然?
  • 按F9快捷?
  • 弹出Breakpoints对话框,Ҏ是按快捷键CTRL+B或ALT+F9Q或者通过菜单Edit/Breakpoints打开。打开后点击Break at~辑框的右侧的箭_选择 合适的位置信息。一般情况下Q直接选择line xxxp够了Q如果想讄不是当前位置的断点,可以选择AdvancedQ然后填写函数、行号和可执行文件信息?
L断点Q把光标Ud到给定断Ҏ在的行,再次按F9可以取消断炏V同前面所qͼ打开Breakpoints对话框后Q也可以按照界面提示L断点?br>
条g断点Q可以ؓ断点讄一个条Ӟq样的断点称为条件断炏V对于新加的断点Q可以单击Conditions按钮Qؓ断点讄一个表辑ּ。当q个表达式发生改变时Q程序就 被中断。底下设|包?#8220;观察数组或者结构的元素个数”Q似乎可以设|一个指针所指向的内存区的大,但是我设|一个比较的g是改?范围之外的内存区g也导致断点v效。最后一个设|可以让E序先执行多次然后才到达断炏V?br>
数据断点Q数据断点只能在Breakpoints对话框中讄。选择“Data”,显CZ讄数据断点的对话框。在~辑框中输入一个表辑ּQ当q个 表达式的值发生变化时Q数据断点就到达。一般情况下Q这个表辑ּ应该p符和全局变量构成Q例如:在编辑框中输?g_bFlagq个全局变量的名字,那么当程序中有g_bFlag= !g_bFlagӞE序将停在q个语句处?br>
消息断点QVC也支持对Windows消息q行截获。他有两U方式进行截PH口消息处理函数和特定消息中断?br>在Breakpoints对话框中选择Messages,可以设|消息断炏V如果在上面那个对话框中写入消息处理函数的名字,那么 每次消息被这个函数处理,断点到达(我觉得如果采用普通断点在q个函数中截P效果应该一P。如果在底下的下?列表框选择一个消息,则每ơ这U消息到达,E序׃断?br>
?br>Watch
VC支持查看变量、表辑ּ和内存的倹{所有这些观察都必须是在断点中断的情况下q行?br>观看变量的值最单,当断点到达时Q把光标Ud到这个变量上Q停留一会就可以看到变量的倹{?br>VC提供一U被成ؓWatch的机制来观看变量和表辑ּ的倹{在断点状态下Q在变量上单d键,选择Quick WatchQ?弹Z个对话框Q显C个变量的倹{?br>单击Debug工具条上的Watch按钮Q就出现一个Watch视图QWatch1,Watch2,Watch3,Watch4Q,在该视图中输入变量或者表辑ּQ就可以观察 变量或者表辑ּ的倹{注意:q个表达式不能有副作用,例如++q算W绝对禁止用于这个表辑ּ中,因ؓq个q算W将修改变量的|D 软g的逻辑被破坏?br>
Memory
׃指针指向的数l,Watch只能昄W一个元素的倹{ؓ了显C数l的后箋内容Q或者要昄一片内存的内容Q可以用memory功能。在 Debug工具条上点memory按钮Q就弹出一个对话框Q在其中输入地址Q就可以昄该地址指向的内存的内容?strong>

Varibles
Debug工具条上的Varibles按钮弹出一个框Q显C所有当前执行上下文中可见的变量的倹{特别是当前指o涉及的变量,以红色显C?br>
寄存?/strong>
Debug工具条上的Reigsters按钮弹出一个框Q显C当前的所有寄存器的倹{?br>
q程控制
VC允许被中断的E序l箋q行、单步运行和q行到指定光标处Q分别对应快捷键F5、F10/F11和CTRL+F10。各个快捷键功能如下Q?
 
快捷?/strong> 说明
F5 l箋q行
F10 单步Q如果涉及到子函敎ͼ不进入子函数内部
F11 单步Q如果涉及到子函敎ͼq入子函数内?/td>
CTRL+F10 q行到当前光标处?/td>

Call Stack
调用堆栈反映了当前断点处函数是被那些函数按照什么顺序调用的。单击Debug工具条上的Call stack显CCall Stack对话框。在CallStack对话框中昄了一个调用系列,最上面的是当前函数Q往下依ơ是调用函数的上U函数。单击这些函数名可以跛_对应的函C厅R?br>
其他调试手段
pȝ提供一pdҎ的函数或者宏来处理Debug版本相关的信息,如下Q?

宏名/函数?/strong> 说明
TRACE 使用Ҏ和printf完全一_他在output框中输出调试信息
ASSERT 它接收一个表辑ּQ如果这个表辑ּ为TRUEQ则无动作,否则中断当前E序执行。对于系l中出现q个?D的中断,应该认ؓ你的函数调用未能满pȝ的调用此函数的前提条件。例如,对于一个还没有创徏的窗口调用SetWindowText{?/td>
VERIFY 和ASSERT功能cMQ所不同的是Q在Release版本中,ASSERT不计输入的表达式的|而VERIFY计算表达式的倹{?/td>

x
一个好的程序员不应该把所有的判断交给~译器和调试器,应该在程序中自己加以E序保护和错误定位,具体措施包括Q?

  • 对于所有有q回值的函数Q都应该查返回|除非你确信这个函数调用绝对不会出错,或者不兛_它是否出错?
  • 一些函数返回错误,需要用其他函数获得错误的具体信息。例如acceptq回INVALID_SOCKET表示acceptp|Qؓ了查?具体的失败原因,应该立刻用WSAGetLastError获得错误码,qҎ的解决问题?
  • 有些函数通过异常机制抛出错误Q应该用TRY-CATCH语句来检查错?
  • E序员对于能处理的错误,应该自己在底层处理,对于不能处理的,应该报告l用戯他们军_怎么处理。如果程序出了异常, 却不对返回值和其他机制q回的错误信息进行判断,只能是加大了N误的隑ֺ?
另外QVC中要~制E序不应该一开始就写cpp/h文gQ而应该首先创Z个合适的工程。因为只有这PVC才能选择合适的~译、连?选项。对于加入到工程中的cpp文gQ应该检查是否在W一行显式的包含stdafx.h头文Ӟq是Microsoft Visual StudioZ加快~译 速度而设|的预编译头文g。在q个#include "stdafx.h"行前面的所有代码将被忽略,所以其他头文g应该在这一行后面被包含?br>对于.c文gQ由于不能包含stdafx.hQ因此可以通过Project settings把它的预~译头设|ؓ“不?#8221;Q方法是Q?
  • 弹出Project settings对话?
  • 选择C/C++
  • Category选择Precompilation Header
  • 选择不用预~译头?


星梦情缘 2007-06-07 22:54 发表评论
]]>
CE序高效~程http://www.shnenglu.com/3522021224/archive/2007/06/07/25777.html 星梦情缘 星梦情缘Thu, 07 Jun 2007 14:45:00 GMThttp://www.shnenglu.com/3522021224/archive/2007/06/07/25777.htmlhttp://www.shnenglu.com/3522021224/comments/25777.htmlhttp://www.shnenglu.com/3522021224/archive/2007/06/07/25777.html#Feedback0http://www.shnenglu.com/3522021224/comments/commentRss/25777.htmlhttp://www.shnenglu.com/3522021224/services/trackbacks/25777.html  ~写高效z的C语言代码Q是许多软g工程师追求的目标。本文就工作中的一些体会和l验做相关的阐述Q不对的地方请各位指教?br>
W?招:以空间换旉

  计算机程序中最大的矛盾是空间和旉的矛盾,那么Q从q个角度出发逆向思维来考虑E序的效率问题,我们有了解决问题的W?招——以I间换时间?br>例如Q字W串的赋倹{?br>ҎAQ通常的办法:
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,“This is a example!!”Q?
ҎBQ?br>const char string2[LEN] =“This is a example!”;
char * cp;
cp = string2 ;
(使用的时候可以直接用指针来操作?

  从上面的例子可以看出QA和B的效率是不能比的。在同样的存储空间下QB直接使用指针可以操作了Q而A需要调用两个字W函数才能完成。B的缺点在于灵zL没有A好。在需要频J更改一个字W串内容的时候,Ah更好的灵zL;如果采用ҎBQ则需要预存许多字W串Q虽然占用了大量的内存,但是获得了程序执行的高效率?br>
  如果pȝ的实时性要求很高,内存q有一些,那我推荐你用该招数?br>
  该招数的变招——用宏函数而不是函数。D例如下:
ҎCQ?br>#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
int BIT_MASK(int __bf)
{
return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
}
void SET_BITS(int __dst, int __bf, int __val)
{
__dst = ((__dst) & ~(BIT_MASK(__bf))) | \
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
}

SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
ҎDQ?br>#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))
#define SET_BITS(__dst, __bf, __val) \
((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | \
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))

SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);

  函数和宏函数的区别就在于Q宏函数占用了大量的I间Q而函数占用了旉。大家要知道的是Q函数调用是要用系l的栈来保存数据的,如果~译器里有栈查选项Q一般在函数的头会嵌入一些汇~语句对当前栈进行检查;同时QCPU也要在函数调用时保存和恢复当前的现场Q进行压栈和Ҏ操作Q所以,函数调用需要一些CPU旉。而宏函数不存在这个问题。宏函数仅仅作ؓ预先写好的代码嵌入到当前E序Q不会生函数调用,所以仅仅是占用了空_在频J调用同一个宏函数的时候,该现象尤其突出?br>
  DҎ是我看到的最好的|位操作函数Q是ARM公司源码的一部分Q在短短的三行内实现了很多功能,几乎늛了所有的位操作功能。CҎ是其变体Q其中滋呌需大家仔细体会?br>
W?招:数学Ҏ解决问题

  现在我们演绎高效C语言~写的第二招——采用数学方法来解决问题?br>
  数学是计机之母Q没有数学的依据和基Q就没有计算机的发展Q所以在~写E序的时候,采用一些数学方法会对程序的执行效率有数量的提高?br>举例如下Q求 1~100的和?br>ҎE
int I , j;
for (I = 1 ;I<=100; I ++Q{
j += I;
}
ҎF
int I;
I = (100 * (1+100)) / 2

  q个例子是我印象最q一个数学用例,是我的计机启蒙老师考我的。当时我只有学三年U,可惜我当时不知道用公?N×QN+1Q? 2 来解册个问题。方法E循环?00ơ才解决问题Q也是说最用?00个赋|100个判断,200个加法(I和jQ;而方法F仅仅用了1个加法,1 ơ乘法,1ơ除法。效果自然不a而喻。所以,现在我在~程序的时候,更多的是动脑{找规律Q最大限度地发挥数学的威力来提高E序q行的效率?br>
W?招:使用位操?br>
  实现高效的C语言~写的第三招——用位操作Q减除法和取模的运?br>
  在计机E序中,数据的位是可以操作的最数据单位,理论上可以用“位运?#8221;来完成所有的q算和操作。一般的位操作是用来控制g的,或者做数据变换使用Q但是,灉|的位操作可以有效地提高程序运行的效率。D例如下:
ҎG
int I,J;
I = 257 /8;
J = 456 % 32;
ҎH
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);

  在字面上好像H比Gȝ了好多,但是Q仔l查看生的汇编代码׃明白Q方法G调用了基本的取模函数和除法函敎ͼ既有函数调用Q还有很多汇~代码和寄存器参与运;而方法H则仅仅是几句相关的汇~,代码更简z,效率更高。当Ӟ׃~译器的不同Q可能效率的差距不大Q但是,以我目前遇到的MS C ,ARM C 来看Q效率的差距q是不小。相x~代码就不在q里列D了?br>q用q招需要注意的是,因ؓCPU的不同而生的问题。比如说Q在PC上用q招~写的程序,q在PC上调试通过Q在ULC?6位机q_上的时候,可能会生代码隐患。所以只有在一定技术进阶的基础下才可以使用q招?br>
W?招:汇编嵌入

  高效C语言~程的必杀技Q第四招——嵌入汇~?br>
  “在熟悉汇~语a的h眼里QC语言~写的程序都是垃?#8221;。这U说法虽然偏Ȁ了一些,但是却有它的道理。汇~语a是效率最高的计算aQ但是,不可能靠着它来写一个操作系l吧?所以,Z获得E序的高效率Q我们只好采用变通的Ҏ ——嵌入汇~,混合~程?br>
  举例如下Q将数组一赋值给数组?要求每一字节都相W?br>char string1[1024],string2[1024];
ҎI
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I)
ҎJ
#ifdef _PC_
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I);
#else
#ifdef _ARM_
__asm
{
MOV R0,string1
MOV R1,string2
MOV R2,#0
loop:
LDMIA R0!, [R3-R11]
STMIA R1!, [R3-R11]
ADD R2,R2,#8
CMP R2, #400
BNE loop
}
#endif

  ҎI是最常见的方法,使用?024ơ@环;ҎJ则根据^C同做了区分,在ARMq_下,用嵌入汇~仅?28ơ@环就完成了同L操作。这里有朋友会说Qؓ什么不用标准的内存拯函数?q是因ؓ在源数据里可能含有数据ؓ0的字节,q样的话Q标准库函数会提前结束而不会完成我们要求的操作。这个例E典型应用于LCD数据的拷贝过E。根据不同的CPUQ熟l用相应的嵌入汇编Q可以大大提高程序执行的效率?br>
  虽然是必杀技Q但是如果轻易用会付出惨重的代仗这是因为,使用了嵌入汇~,侉K制了E序的可UL性,使程序在不同q_UL的过E中Q卧虎藏龙,险象环生Q同时该招数也与C软g工程的思想相违背,只有在迫不得已的情况下才可以采用。切讎ͼ切记?

星梦情缘 2007-06-07 22:45 发表评论
]]>
学C语言的阶D?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/05/25612.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Tue, 05 Jun 2007 15:32:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/05/25612.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/25612.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/05/25612.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/25612.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/25612.html</trackback:ping><description><![CDATA[<p>人生中的许多事情像E序员在设计E序。于是,我爱上了E序Q而网lؓ我提供了学习他hl验的一个桥梁,q是一个捷径,使我很快学会了很多知识和技巧。所以,我也想通过|络把我的一点经验献l那些需要它的h。这直太奇妙了!Q?nbsp;        -------vcokd?/p> <p><br>我学C语言已经q两个月Q《C语言E序设计》这本书我现在正在看W三遍,虽然上次考C{时二U没q,但我怿以我现在水^是肯定可以通过考试Qƈ且我已经W二ơ报了名?<br>学到现在我却仍然不知道该怎么ȝE,当我惛_一个游戏的时候才发现自己什么也不懂Q我应该再看看什么书好呢Q学之致用?<br>我询问了许多高手他们告诉?----初学者都有这U困惑的?</p> <p>选择了ITQ就意味着艰辛Q困苦与挑战Q要学的东西q很多很?.....不要想一步登天,不要惌捷径Q(除非你只是玩玩,或者你有TALENTQ)基础最重要QIT任重而道q,朋友Q原你有一颗坚定的心,C去,不会错!Q! <br>在你学习的同Ӟq要注意一下IT的行情,多了解了解,摆好自己的位子,正确对待每一件事Q我怿你一定会成功的!Q! <br>真正的程序员用CQ最有h值的E序员是用C的程序员。不是开玩笑Q?</p> <p>C语言只是一个基。一个能够向表达你的x的基Q会了C能够写程序,但是不见得能够写出有实际意义的Y件。(学习架构Q?<br>当你学到不自觉地使用q门语言Ӟ大约?万行代码差不多了)Q你的c语言才可以说学会了。不是有个笑话吗Q说的就是程序员的痴qL度。我惛_该有q样的精才行。徏议暂时不要看高~程Q多写代码、多看代码、培养风根{熟悉语法、最关键的是把握思想?<br>学C语言q不只是学语法那么简单,重要的是~程思想Q难的是它在不同环境下的应用。这是一个O长的q程Q需要经验的U篏。当燃,q不是说L抓住C不放Q但如果你目前还不知该怎样~程Q徏议在你有一U游刃有余的感觉之前Q还是不要去C么C++,Java之类Q那样你遇到的困难会更大。自q立写完一个程序(无论大小Qƈ看到他的正常q行时便会有一U成感。不断培养这U成感Q@序渐q,q步是自然的事情?<br>首先 <br>C语言是一个O长的q程Q它是基Q在很长很长......的时期内不会被淘汰。把C语言学好了,其他的,FOR EXAMPLEQC++QC#QJAVAQVCQVC++QVBQDELPHI......q些学v来就会比那些C语言基础不扎实的L得多Q?<br>了解一下库函数。连库函数都不了解怎么ȝE?我也是刚听h家说要看库函数的?<br>初阶段 <br>我是听h说的Q我现在可没q么大本事: <br>1.我觉的可以先试着d一条sin曲线?<br>2.自己做一个类似tc的界面,q是菜单的练习?<br>3.l习中断的调用,键盘Q鼠标,旉{?<br>4.tc是一个工LQtc下的库函数是各种各种的工P我们要完成一件工作必d工具熟悉Q即使用的不熟悉Q但臛_也要有印象。所以《tc函数大全》是必备之物。所以要l常看tc下的库函数?<br>5.q是最重要的一条:just do itQ我现在才明白nike 的广告的真谛Q其实也是这个世界的很重要的一条just do itQ?<br>6.对于指针Q我也不知到如何ȝ它,那些地方必须用它Q我把握不住?</p> <p>在TCE序中你可以嵌入汇编、可以؜合编E。我觉得嵌入汇编q一点很׃h。它使你在理Z无所不能。؜合编E有利于提高对编译方法的理解?<br>然后可以写俄|斯方块Q汉诺塔Q贪食蛇Q空间作战,吃豆{游?<br>接着可以学MASMQC+MASM=NUCLAERQ当然是做系l了?<br>学到q里可以说C基本上是学会了?</p> <p>c ------> c++ ----->数字逻辑设计、离散数学、数据结构与法Q这是一个学校的评Q?</p> <p>W二阶段 <br>c++是c的提高,是面向对象的语言Q也是到visual c的必l之路。现在就谈谈visual c的选择问题?<br>我想在国内来讲VC不上RADQ快速应用开发)工具Q因为VC开发的效率是很差的Q对于一些客L应用来讲开发效率是让h难以忍受的。此外还有一个开发的误区是“只要用VC可以什么事都自己做Q?#8221;我想最致命的就是这一点,要修一栋楼我想不需要连砖瓦都要自己烧吧Q?<br>我上面的说法q不是在否定VCQ我只说了开发中的一个方面,如果从维护的角度上来讲VC可以说是最好的工具。VC的好处在l护的过E中׃体现出来Q我个h认ؓ用VC开发出来的软g在维护过E中所p的工作量要小于其他图形界面开发工h开发的软g。当然这要求l护人员也必L一个比较优U的VC开发h员?<br>最后我说点在选择VC开发时的一些看法: <br>无论谁只要愿意都可以选择VC作ؓ开发工P但你必须有耐心和精力?<br>如果你更偏重于开发Windows后台服务Q那么请选择VCQ不要犹豫?<br>如果你Y件执行效率是非常重要的衡量因素而且外部条g有限Q那么请选择VCQ不要犹豫?<br>如果你想完全的把握开发过E中的每一个环节,那么请选择VCQ不要犹豫?<br>如果你的软g很复杂,而且以后会有其他人接手你的工作,在主E序中用VCQƈ准备好充的文档?<br>如果你想更多的了解系l的各种Ҏ,而且希望自己的Y件能够有更多的灵zL,那么请选择VCQ不要犹豫?<br>如果你想开发一套好的开发包Q那么请选择VCQ不要犹豫。(因ؓC/C++更接q系l,C/C++开发出来的开发包可以很方便的被其他开发工兯用) <br>…… <br>如果你下定决心,非VC不学Q我贺你,你的选择没有错?<br>如果你因Z么原因放弃VCQ我也祝ZQ你的选择没有错?<br>但是一个真正的E序员应选vcQ?</p> <p>l???<br>要学的还很多 慢慢来你会行的。祝你编E愉?!!!! <br>推荐书籍 <br>--------------------------------------------------------------------------------------------------------------------------- <br>C语言Q?<br>清华谭浩强的《C语言E序设计?<br>清华p的《c++?<br>清华的?086/8088汇编语言?</p> <p>数据l构Q?<br>电子工业出版Cde <<设计模式>>很不? </p> <p>学习心得 <br>--------------------------------------------------------------------------------------------------------------------------- <br>1.如果你是真的喜欢~程Q那什么都不是问题?<br>2.实践?<br>3.扄味的小E序~一遍。看看数据结构。找更高U的cE序书看?<br>4.学习数据l构用c语言实现 <br>5.找源代码?<br>6.自己~一个多模块的程?<br>7.再学一~C <br>8.l箋学,然后扑ַ?</p> <p>多看书! <br>多实践! <br>多请教! </p> <p>学学数据l构之后你会有新的发C?</p> <p>我前天去了一 家Y件公司询问了一下啊Q他们经理说用C 也行Q但要很熟悉很熟l!Q?br>--<br>天是上帝选召的优U人类Q彼此孤独的zȝ。在遇到另一个天使之前,天L试图接近人类Qhcȝ惧天使的丽Q美丽因为天使在IZ而美丽,Z天之间L隔膜--因ؓ畏惧。天使ؓ此收L膀Q最l天使终于决心品呛_独,展翅高飞?</p> <p> </p> <img src ="http://www.shnenglu.com/3522021224/aggbug/25612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-05 23:32 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/05/25612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成ؓE序设计高手的几大忌?/title><link>http://www.shnenglu.com/3522021224/archive/2007/06/05/25609.html</link><dc:creator> 星梦情缘</dc:creator><author> 星梦情缘</author><pubDate>Tue, 05 Jun 2007 15:29:00 GMT</pubDate><guid>http://www.shnenglu.com/3522021224/archive/2007/06/05/25609.html</guid><wfw:comment>http://www.shnenglu.com/3522021224/comments/25609.html</wfw:comment><comments>http://www.shnenglu.com/3522021224/archive/2007/06/05/25609.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/3522021224/comments/commentRss/25609.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/3522021224/services/trackbacks/25609.html</trackback:ping><description><![CDATA[: 1Q?不会pQCS源于国Q重量的文档都是英文的。不会英语,那么你只能忍?.<br>: 劣的译和大延迟的文档(译出来的文档几乎都是很久以前出版的东西Q?br>: 2Q?急于求成Q什么都没学习就开始编E是最大的忌讳。写C++E序语法都能错,?.<br>: 构连U性表都不知道Q数据库不知道关pL型,TCP~程不知道socketQ还是先坐下?.<br>: 习几q再_如果说工作急需Q我只能_早干嘛去了)<br>: 3Q?q于好问Q勤学好问是一U很好的品质Q但是如果把勤学丢了Q只留下好问Q就..<br>: 一个恶劣的素质了。事无巨l都去请教别人,一则会让h厌烦Q二则由于没有系l学..<br>: q程Q也是不可能学习好的?br>: 4Q?只会艳M别h和说别h不该拉K么多钱,而自己却收入微薄Q老实_l大多数..<br>: 况下Q收入的高低和你的水qx有正相关关系的。不是否认有关系的存在,但是l对..<br>: ?0个h?个h有关p而独独你没有。少抱怨一些多学习一些,提升自己才是最?.<br>: ?br>: 5Q?q于不求甚解和过于求甚解。了解ؓ什么是很重要的Q但是要学习的东西很多,..<br>: 果什么都弄明白,那么估计头发白了q没有找到所有答案。当然如果什么都不想l致..<br>: 解,那么只能d蓝领了?br>: 6Q?q分崇拜他hQ我怿很多人都是很厉害的,值得大家崇拜Q但是如果过于崇?.<br>: 把他们的话当成圣l就没有必要了。你需要突破他们,而不是崇拜他们?br>: 7Q?不想吃苦QIT业高收入和高竞争是联pd一L。没有付出永q别惌步? <img src ="http://www.shnenglu.com/3522021224/aggbug/25609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/3522021224/" target="_blank"> 星梦情缘</a> 2007-06-05 23:29 <a href="http://www.shnenglu.com/3522021224/archive/2007/06/05/25609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.ccjump.cn" target="_blank">þ91Ʒ91</a>| <a href="http://www.sun-q.cn" target="_blank">þݺҹҹavapp</a>| <a href="http://www.dnnmodules.cn" target="_blank">avɫۺϾþavɫۺ </a>| <a href="http://www.vnaiman.cn" target="_blank">㽶aaþëƬ</a>| <a href="http://www.mothersenvogue.com.cn" target="_blank">99þ99þþþƷ</a>| <a href="http://www.pobk.cn" target="_blank">ɫþþۺ</a>| <a href="http://www.16315.com.cn" target="_blank">ݺɫþۺѿ </a>| <a href="http://www.tingzei.cn" target="_blank">91Ʒ91þ</a>| <a href="http://www.889kk8.cn" target="_blank">þøݾƷԴվ</a>| <a href="http://www.ouhly.cn" target="_blank">þþþ99ƷƬŷ </a>| <a href="http://www.jhyjpj.cn" target="_blank">avttþþƷ</a>| <a href="http://www.fd-tex.cn" target="_blank">þѾƷav</a>| <a href="http://www.aiaizhu.cn" target="_blank">avԾþþþa</a>| <a href="http://www.vauban.cn" target="_blank">ŮþþŮ</a>| <a href="http://www.robuts.com.cn" target="_blank">þþƷ99Ʒ</a>| <a href="http://www.chqlt.cn" target="_blank">þ99ֻоƷ</a>| <a href="http://www.d5430.cn" target="_blank">޹þþþƷ</a>| <a href="http://www.zequndesign.com.cn" target="_blank">˾ƷۺϾþþþ</a>| <a href="http://www.ganzhoupei.cn" target="_blank">þþþþþƷͼƬ </a>| <a href="http://www.vzrg.cn" target="_blank">þ99ƷþֻоƷ</a>| <a href="http://www.sybcypx.cn" target="_blank">99reþþƷҳ2020</a>| <a href="http://www.7cdy.cn" target="_blank">ݺݺɫۺϾþð</a>| <a href="http://www.jsykszn.cn" target="_blank">þ99Ʒ99þ</a>| <a href="http://www.auto-insurance.cn" target="_blank">91þþƷӰ</a>| <a href="http://www.laigun.cn" target="_blank">þþþþѹۿ</a>| <a href="http://www.mianfeiwg.cn" target="_blank">Ĺ˾Ʒþò</a>| <a href="http://www.jjshjlbf.cn" target="_blank">þþƷavӰԺ</a>| <a href="http://www.imont.cn" target="_blank">ԻԻ˿þþ</a>| <a href="http://www.1314liao.cn" target="_blank">Ʒþþþþþþþ</a>| <a href="http://www.ovnk.cn" target="_blank">ɫþˬˬƬAV</a>| <a href="http://www.seekme.com.cn" target="_blank">һһþۺϺݺ</a>| <a href="http://www.pxep.cn" target="_blank">99þ99þþþƷ</a>| <a href="http://www.coscoshuai.cn" target="_blank">99þþù</a>| <a href="http://www.have123.cn" target="_blank">ٸþþþþñŪ߳</a>| <a href="http://www.a1dk.cn" target="_blank">ݹƷþþþþ</a>| <a href="http://www.taobaoke.net.cn" target="_blank">þ㽶߿ۿ</a>| <a href="http://www.sanling-group.com.cn" target="_blank">ƷѾþþþùһ</a>| <a href="http://www.jn928.cn" target="_blank">Ļþҹ</a>| <a href="http://www.gongcheng100.cn" target="_blank">þù׾Ʒǿ</a>| <a href="http://www.airyai.cn" target="_blank">ҹþþ</a>| <a href="http://www.4gbbs.cn" target="_blank">þ99Ʒþ99</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>