﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-天空之城-随笔分类-杂谈</title><link>http://www.cppblog.com/linhong34/category/1918.html</link><description>  new,think,program,happy to live</description><language>zh-cn</language><lastBuildDate>Wed, 21 May 2008 18:54:35 GMT</lastBuildDate><pubDate>Wed, 21 May 2008 18:54:35 GMT</pubDate><ttl>60</ttl><item><title>启动IIS出现0x8ffe2740错误的解决办法</title><link>http://www.cppblog.com/linhong34/archive/2007/07/10/27821.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Tue, 10 Jul 2007 10:02:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2007/07/10/27821.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/27821.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2007/07/10/27821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/27821.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/27821.html</trackback:ping><description><![CDATA[<p align=center><font face=宋体><font color=#ff9900><strong>启动IIS出现0x8ffe2740错误的解决办法</strong></font></font></p>
<p><font face=宋体><br>&nbsp;&nbsp;&nbsp;&nbsp;系统提示了错误号&#8220;0x8ffe2740&#8221;，百度一下，答案是：IIS要使用的80端口被程序占用，只需要更改IIS所使用的端口即可解决问题。改了端口后问题果然解决。</font></p>
<p>&nbsp;</p>
<p><font face=宋体>&nbsp;&nbsp;&nbsp; 但是，在调试程序或在浏览器中浏览本地程序时，总是要在地址后面增加端口号，很不方便。再就是以前已经做了N个Web应用程序，再逐个改项目文件，太麻烦。还是希望用80作IIS端口。</font></p>
<p>&nbsp;</p>
<p><font face=宋体>&nbsp;&nbsp;&nbsp; 于是用netstat -an -p tcp -o命令查看本地所开放的端口，以及进程号PID（命令详细意思可以查看帮助）。得到本地确实是有一个0.0.0.0:80的连接PID是848（不知道这是什么进程），知道进程号后于是用tskill 848杀掉此进程，再次重启IIS，并且以80作为其端口，启动成功，问题解决。<br></font></p>
<p><font face=宋体>（注：摘自<font face=宋体><a href="http://hi.baidu.com/key8086/blog/item/759232092380b9ad2fddd452.html"><u><font color=#666600>http://hi.baidu.com/key8086/blog/item/759232092380b9ad2fddd452.html</font></u></a>&nbsp;）</font></font></p>
<p>&nbsp;</p>
<p><font face=宋体>netstat 命令参数说明：</font></p>
<p><font face=宋体>-n 是查端口号相关的进程</font></p>
<p><font face=宋体>-o 是查出相关进程的ID</font></p>
<p><font face=宋体>netstat -an -o 可以查出端口及进程ID</font></p>
<p>&nbsp;</p>
<p>查到对应ID 后，可以在 "任务管理器" 中，在查看菜单中，选择 "选择列" 选中 PID 列项， 可以查出哪个程序，对应这个ID 占着哪个端口。</p>
<p><font face=宋体>&nbsp;</font></p>
<img src ="http://www.cppblog.com/linhong34/aggbug/27821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2007-07-10 18:02 <a href="http://www.cppblog.com/linhong34/archive/2007/07/10/27821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>去除WINDOWS 盗版提示</title><link>http://www.cppblog.com/linhong34/archive/2007/06/07/25704.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Thu, 07 Jun 2007 01:04:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2007/06/07/25704.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/25704.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2007/06/07/25704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/25704.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/25704.html</trackback:ping><description><![CDATA[1.运行regedit进入注册表，HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon,删除它,重新启动.wgatray.exe就不会自动启动了.<br>2.把系统盘:\windows\system32中的wgatray.exe删除.<br>3.彻搜索文件wgatray,统统删除...
<img src ="http://www.cppblog.com/linhong34/aggbug/25704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2007-06-07 09:04 <a href="http://www.cppblog.com/linhong34/archive/2007/06/07/25704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈我对攻读计算机研究生的看法【转载】</title><link>http://www.cppblog.com/linhong34/archive/2006/09/29/13143.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Fri, 29 Sep 2006 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/09/29/13143.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/13143.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/09/29/13143.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/13143.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/13143.html</trackback:ping><description><![CDATA[
		<p>谈谈我对攻读计算机研究生的看法<br />　　就我自己的理解，谈谈我对读研和软件学院的看法，不妥之处一笑了之即可。<br />　　<br />　　如果你有实际开发工作经验，感觉自己的水平和实力进入了一个高原期，迫切需要从</p>
		<p>理论上提高，那么计算机学院是唯一选择。因为计算机学院才能让你在理论上更上一层楼</p>
		<p>。软件学院从教学计划上就没有把你往这方面带。当然能不能更上一层楼最终还是完全取</p>
		<p>决于你自己。需要特别说明的是，工作经验并不一定等于开发经验，我见过很多工作2-3年</p>
		<p>的人，但是没有一点开发经验。<br />　　<br />　　你说：“他们都有很强的开发能力,只是不太喜欢读书,也只是希望混个学历对今后在</p>
		<p>岗位上晋升有好处”，我可以向你保证，你所说的人绝对不是开发能力很强的人。因为，</p>
		<p>1）高手不可能不喜欢读书；2）高手不可能想去混一个学历；3）高手不可能认为晋升是因</p>
		<p>为学历的原因。<br />　　<br />　　还需要说明的是，考计算机的人未必个个都是高手，严格来说，大部分都不会编程序</p>
		<p>。也就是说，庸庸碌碌之辈仍然占绝大多数。研究生毕业的师兄只拿2500元左右的比比皆</p>
		<p>是，所以不要寄希望于拿一张研究生文凭出去赚高薪。但是，对于有实际开发工作经验的</p>
		<p>人，要想自己在3年之中有一个真正的提高的话，计算机学院提供了广阔的平台。就我所知</p>
		<p>，每一个月拿2万以上的也有（上海育碧，图形特效算法设计）。所以，同为研究生毕业，</p>
		<p>能力的差距是极大的。所以，不要去问“研究生毕业能拿多少？”，要问“像我这种水平</p>
		<p>的人，研究生毕业能拿多少钱？”这样人家才能够准确地回答你。<br />　　<br />　　所谓“有实际开发工作经验”是指你目前已经具备下列能力：1）你已经认为C++和汇</p>
		<p>编语言都是很简单的语言，并能够自如地运用；2）你能够在30分钟之内想到正确的五子棋</p>
		<p>AI算法设计思路和方向；3）你完全理解STL为什么这么重要；4）你能够独立地解决所有的</p>
		<p>编译与链接问题，哪怕你从来没有遇到的问题，你也不需要询问任何人；5）英文网站是你</p>
		<p>的首要信息来源；6）能够读懂英语写成的国际标准，比如NTFS磁盘格式标准。7）你经常</p>
		<p>站在集合论的角度思考算法问题；8）能够理解一个简单的驱动程序，能够理解一个简单3</p>
		<p>D交互程序；9）你能够认识到线性代数和概率论在实际编程工作中的极端重要性；10）你</p>
		<p>完全理解COM的设计思想，尤其能够理解COM为什么要设计成这样；11）当我说到虚函数的</p>
		<p>重要作用时，你不会急着去找书来翻；12）你能够说出C++为什么比其他语言优秀的理由，</p>
		<p>记住这种理由应该来自于你的开发体会，而不是因为其他人都这么说。此外还有很多判断</p>
		<p>标准，但如果你同时具备5条以上，可以认为你已经具备相应的开发经验了。在这种状态下</p>
		<p>读研，你将取得读研效益的最大值。<br />　　<br />　　读研最重要的是要明白你自己要干什么，不能等导师来告诉你你应该干什么。研究生</p>
		<p>的优势在于理论功底深厚，思维具有穿透力，当然编程能力首先要过关，不要读完研究生</p>
		<p>还不知道MFC程序的WinMain函数在哪里。所以，研究生期间，你一定要做有理论深度的算</p>
		<p>法设计，比如大规模数据的搜索算法，性能是首要考虑因素，不要奢望SQL函数能够帮你解</p>
		<p>决问题，所有的问题你都必须自己解决，你必须解决内外存交换的性能瓶颈。再比如极品</p>
		<p>飞车的3D场景生成，图形变换，碰撞检测，物性模拟，纹理映射，灯光模型等等，这些都</p>
		<p>是可以保证你能拿到2万以上月薪的技术。如果你认为这些东西太难，不可能做得出来的话</p>
		<p>，那么你就不适合读研。真的，要是你认为读研之后还是要去搞一般的程序设计，如信息</p>
		<p>管理系统之类的软件，那么你读研的价值就完全不会得到体现，因为这些工作根本就不需</p>
		<p>要读研。<br />　　<br />　　软件学院宣称培养软件开发人才，恕我直言，我从来没有看见那个高手是培训成功的</p>
		<p>。成为软件开发高手的路只有一条：自学！软件开发中需要大量的编程实践和独立思考，</p>
		<p>只有在此过程中，你才能够逐步成长起来。软件学院宣称培养软件项目经理，这更是搞笑</p>
		<p>，在某种意义上这是欺骗行为。学院里面能够培养出软件开发经理更是十足的谎言，软件</p>
		<p>项目经理必须，或者说更强调从战争中学会战争。没有实践经验的项目经理就是绣花枕头</p>
		<p>一个。<br />　　<br />　　　<br />　　总之一句话，如果你只想成为软件开发高手（比如认为会编驱动程序或杀毒软件就是</p>
		<p>高手的那种），建议工作，不要考研；完全没有工作经验的，也不建议考研，你进来了只</p>
		<p>有瞎混一通。如果你有上述工作经验且想成为高级软件工程师（能够独立理解并设计出快</p>
		<p>速傅立叶变换算法的那种软件工程师）的话，那么强烈建议考研。考研让你有3年放松思考</p>
		<p>的机会，也有3年让你思想和技术积累沉淀的机会。非常难得的机会。不考研的话，这种机</p>
		<p>会就是一种奢侈，可望而不可即的那么一种奢侈。<br />　　<br />　　　　<br />　　1）关于读书的机会成本问题。读研的机会成本的确是很高。任何人都可以简单地计算</p>
		<p>出来。所以，我也不赞成所有的人都去读研。读研只适合那些痛感数学在编程中的极端重</p>
		<p>要性的人。如果对理论工具和理论思维的极端重要性没有切肤的认识，那么读研的价值几</p>
		<p>乎为0；读研的好处在于：A，把你自己放在一个学术和工程的交叉点上；B，让你具备了进</p>
		<p>入微软等世界顶级软件研发机构的可能性；记住只是可能性。但是不读研这种可能性为0；</p>
		<p>C，如前所述，如果没有读研的机会，你也就没有静下心来好好钻研几年理论的机会；一边</p>
		<p>工作拿高薪，一边深入地学习各种理论，诸位认为这可能吗？我反正认为不可能，我觉得</p>
		<p>学习钻研理论最需要的就是一个长期安静独处的环境，一边工作一边读书是不可能有这样</p>
		<p>的环境的，你会觉得每天都在疲于奔命。而读研正好可以提供这样一个环境。我同时还反</p>
		<p>对整天跟着导师的屁股后面跑，这样会浪费很多时间。读计算机的研究生，主要依靠自己</p>
		<p>去查阅最新文献，自己去研读文献，和导师的口头交流一个月一次就足够了，前提还需要</p>
		<p>导师的水平足够牛。如果导师的水平不牛，这也没关系，不理他就是了，自己做好自己的</p>
		<p>事情即可。<br />　　<br />　　2）关于研究生教学质量问题。坦白地说，全国都是“洪桐县中无好人”，尤其在计算</p>
		<p>科学领域，大牛极少。那为什么还要去读研？大哉问！把读研的收获寄托在名校或名师的</p>
		<p>名我认为气上，是注定要失败的。读研全靠自学，研究生之间的差距全部体现在自学能力</p>
		<p>上面。又有人问，既然是自学，为什么非要读研？回答是：因为读研就是为你买一份保险</p>
		<p>，就是买一份你自学三年之后不会失业的保险。这份保险主要是一种心理上的后盾，让你</p>
		<p>在自学过程中经得起诱惑，能够从容镇定地去追寻计算机理论发展的坚实足迹，从欧拉，</p>
		<p>费马，高斯，康托，图灵等巨匠那里寻找方法论的珠宝。倘若没有这份保证，你在家里面</p>
		<p>自学3个月，保证你会被失业的压力压得喘不过气来，何谈安心学习？<br />　　<br />　　3）关于实战经验与理论学习的优劣问题。这没有定论，如前所述，管理信息系统，设</p>
		<p>备驱动开发，工具软件开发，软件病毒剖析等等这些工作不太需要创造性，需要的是耐心</p>
		<p>和经验，需要的是对既有规范的准确理解，这类开发工作最适合在实战中提高，理论学习</p>
		<p>没什么作用。但是在人工智能，模式识别，图像压缩，虚拟现实，巨量数据检索，自然语</p>
		<p>言理解，计算机图形学等等领域，理论学习就占据着绝对的统治地位！这些领域的突破对</p>
		<p>人类的生活的影响是极其巨大而深刻的。某些领域处于一个极其快速发展的态势之中，比</p>
		<p>如计算机图形学，相信诸君能够从众多3D游戏的灿烂辉煌中体认到我的这种说法。在这些</p>
		<p>领域，如果没有扎实的理论功底，一切都是那么遥远，不管你花了多少时间在编程上面。</p>
		<p>
				<br />　　<br />　　4）关于高级研发人员的知识结构问题。首先声明，我不是一个纯粹理论激进分子，即</p>
		<p>认为除了理论之外，一切都不重要。我认为，纯熟的编程技能是最基本但也是最必不可少</p>
		<p>的技能。没有这个基础，一切计算机理论就是空谈（研究图灵可计算性理论的研究者除外</p>
		<p>）。有了这个基础之后，下列理论学习方向必须重点突破：<br />　　<br />　　1，科学哲学。这是核心中的核心！可惜国内不开这门课。不但不开课，而且还作为批</p>
		<p>判对象来引用，实在是遗憾至极！这是一门教你如何“钓鱼”的学科，在一切科学研究中</p>
		<p>居于最核心的地位。它是古今科研方法和思维方法的集大成者，很难想象一个成熟的研究</p>
		<p>者没有一套自己的方法论体系。科学哲学最需要的是领会与总结，它的思想与启示会伴随</p>
		<p>我们的一生。<br />　　<br />　　2，康托集合论，矩阵方法，离散结构，图论方法，群论方法之间的紧密关系。最重要</p>
		<p>的认识这些理论对实践的重要启示和方法引导。我始终认为，如果你学了一门理论之后，</p>
		<p>却不知道这门理论有什么作用，那么你的理论就白学了，你什么东西都没有捞着。所以，</p>
		<p>学习任何理论之前，先问自己：它有什么用？在哪里用？如何用？带着这些问题去学习理</p>
		<p>论，你才会真正地学到东西。用这三个问题去问你的理论课老师，他的回答就是判断其实</p>
		<p>际水平的最佳标准。<br />　　<br />　　3，思维要有极强的穿透力，学会看透文献作者没有写出来的动机。绝大部分大师都有</p>
		<p>隐瞒自己最具有方法论启示意义的思考环节的习惯。牛顿和华罗庚先生都有这个坏习惯。</p>
		<p>这让大家认为他们是天才，因为很多问题他想到了，我们想不到。但是为什么他们能想到</p>
		<p>，我们想不到？他们是怎样想到的？没有人告诉我们牛顿发现万有引力定律时的思考过程</p>
		<p>，当然，牛顿可以慷慨地把他的思考结果告诉我们，但是，他那可以点石成金的“金手指</p>
		<p>”却没有教给我们。我们的任务就是要培养透过文章看穿作者背后意图和动机的能力，在</p>
		<p>这方面，台湾的侯捷和美国的Donbox是绝佳典范。这两只老狐狸（呵呵，是爱称）凭着其</p>
		<p>猎犬一般的嗅觉，抽丝剥茧，一个把COM背后的幕后设计动机揭开并暴露到了光天化日之下</p>
		<p>，另一个把MFC的宏观架构做了一次完美的外科手术。其非凡的思维穿透力令人惊叹。<br />　　<br />　　4，英语。英语本身不重要，但是用英语写成的文献就极其重要了。所以，专门把英语</p>
		<p>作为一个重头戏列出来。大家不要相信英语无用论的鬼话。对于搞计算机的而言，英语就</p>
		<p>是你的母语！<br />　　<br />　　5，其它的具体理论还有很多，但是都不如这三个方面重要，因为我觉得这三个方面是</p>
		<p>最具有根本性，全局性的能力培养环节。需要指出的是，很多高深理论对你的工作是无意</p>
		<p>义的，当心时间陷进去。一定要把效率最高的时间段用在最具有决定性意义的理论学习上</p>
		<p>。<br />　　<br />　　5）关于读研之后的出路是否光明的问题。我们应该承认，读研之后，你的工作机会不</p>
		<p>是变多了，而是变少了。而且越是高手，他的工作机会和工作范围就越少。这是因为，越</p>
		<p>是搞前沿研发的公司，其数量越少，在这个圈子的人也就越少。你找工作的范围就越小，</p>
		<p>试问：如果微软的OS设计专家出来找工作，能够让他选择的公司能有几家？但是，这种公</p>
		<p>司数量的减少是以工资待遇的急剧上升为补偿的，同时，你在工作中所受到的充分尊重也</p>
		<p>是在一般公司中体会不到的。所以不要担心学了高科技用不上，呵呵，你只会越来越感觉</p>
		<p>自己学的不够用。相信接到过猎头公司电话的人会体会得到。真正的高手从来就不会担心</p>
		<p>工作的问题，也从来不会到人才市场上去找工作。既然选择了理论深入，那么就应该把眼</p>
		<p>光放得更远</p>
		<p>
				<br /> </p>
<img src ="http://www.cppblog.com/linhong34/aggbug/13143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-09-29 13:51 <a href="http://www.cppblog.com/linhong34/archive/2006/09/29/13143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络安全中防火墙和IDS的作用</title><link>http://www.cppblog.com/linhong34/archive/2006/06/03/8130.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Sat, 03 Jun 2006 13:13:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/06/03/8130.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/8130.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/06/03/8130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/8130.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/8130.html</trackback:ping><description><![CDATA[
		<div class="title" align="center">网络安全中防火墙和IDS的作用</div>
		<br />业界的同行曾经说过“安全，是一种意识，而不是某种的技术就能实现真正的安全。”随着工作的时间渐长，对这句话的体会就越深。再防守严密的网络，利用人为的疏忽，管理员的懒惰和社会工程学也可能被轻易攻破。 
<p>　　因此，在这里我介绍的防火墙和IDS技术，只是我们在网络安全环节中进行的一个防御步骤。在网络内进行防火墙与IDS的设置，并不能保证我们的网络就绝对安全了，但是设置得当的防火墙和IDS，至少会使我们的网络更为坚固一些，并且能提供更多的攻击信息供我们分析。 </p><p>　　接下来，让我们正确地认识一下防火墙和IDS的作用吧。　 </p><p>　　<strong><font color="#ff0000">防火墙 </font></strong></p><p>　　<strong>一、防火墙能够做到些什么？</strong></p><p>　　<u>1.包过滤</u></p><p>　　具备包过滤的就是防火墙？对，没错！根据对防火墙的定义，凡是能有效阻止网络非法连接的方式，都算防火墙。早期的防火墙一般就是利用设置的条件，监测通过的包的特征来决定放行或者阻止的，包过滤是很重要的一种特性。虽然防火墙技术发展到现在有了很多新的理念提出，但是包过滤依然是非常重要的一环，如同四层交换机首要的仍是要具备包的快速转发这样一个交换机的基本功能一样。通过包过滤，防火墙可以实现阻挡攻击，禁止外部/内部访问某些站点，限制每个ip的流量和连接数。 </p><p>　　<u>2.包的透明转发 </u></p><p>　　事实上，由于防火墙一般架设在提供某些服务的服务器前。如果用示意图来表示就是 Server—FireWall—Guest 。用户对服务器的访问的请求与服务器反馈给用户的信息，都需要经过防火墙的转发,因此，很多防火墙具备网关的能力。 </p><p>　　<u>3.阻挡外部攻击 </u></p><p>　　如果用户发送的信息是防火墙设置所不允许的，防火墙会立即将其阻断，避免其进入防火墙之后的服务器中。 </p><p>　　<u>4.记录攻击 </u></p><p>　　如果有必要，其实防火墙是完全可以将攻击行为都记录下来的，但是由于出于效率上的考虑，目前一般记录攻击的事情都交给IDS来完成了，我们在后面会提到。 </p><p>　　以上是所有防火墙都具备的基本特性，虽然很简单，但防火墙技术就是在此基础上逐步发展起来的。 </p><p>　　<strong>二、防火墙有哪些缺点和不足？ </strong></p><p>　　<u>1.防火墙可以阻断攻击，但不能消灭攻击源</u></p><p>　　“各扫自家门前雪，不管他人瓦上霜”，就是目前网络安全的现状。互联网上病毒、木马、恶意试探等等造成的攻击行为络绎不绝。设置得当的防火墙能够阻挡他们，但是无法清除攻击源。即使防火墙进行了良好的设置，使得攻击无法穿透防火墙，但各种攻击仍然会源源不断地向防火墙发出尝试。例如接主干网10M网络带宽的某站点，其日常流量中平均有512K左右是攻击行为。那么，即使成功设置了防火墙后，这512K的攻击流量依然不会有丝毫减少。 </p><p>　　<u>2.防火墙不能抵抗最新的未设置策略的攻击漏洞</u>　 </p><p>　　就如杀毒软件与病毒一样，总是先出现病毒，杀毒软件经过分析出特征码后加入到病毒库内才能查杀。防火墙的各种策略，也是在该攻击方式经过专家分析后给出其特征进而设置的。如果世界上新发现某个主机漏洞的cracker的把第一个攻击对象选中了您的网络，那么防火墙也没有办法帮到您的。 </p><p>　　<u>3.防火墙的并发连接数限制容易导致拥塞或者溢出</u></p><p>　　由于要判断、处理流经防火墙的每一个包，因此防火墙在某些流量大、并发请求多的情况下，很容易导致拥塞，成为整个网络的瓶颈影响性能。而当防火墙溢出的时候，整个防线就如同虚设，原本被禁止的连接也能从容通过了。　 </p><p>　　<u>4.防火墙对服务器合法开放的端口的攻击大多无法阻止</u></p><p>　　某些情况下，攻击者利用服务器提供的服务进行缺陷攻击。例如利用开放了3389端口取得没打过sp补丁的win2k的超级权限、利用asp程序进行脚本攻击等。由于其行为在防火墙一级看来是“合理”和“合法”的，因此就被简单地放行了。 </p><p>　　<u>5.防火墙对待内部主动发起连接的攻击一般无法阻止</u></p><p>　　“外紧内松”是一般局域网络的特点。或许一道严密防守的防火墙内部的网络是一片混乱也有可能。通过社会工程学发送带木马的邮件、带木马的URL等方式，然后由中木马的机器主动对攻击者连接，将铁壁一样的防火墙瞬间破坏掉。另外，防火墙内部各主机间的攻击行为，防火墙也只有如旁观者一样冷视而爱莫能助。 </p><p>　　<u>6．防火墙本身也会出现问题和受到攻击</u></p><p>　　防火墙也是一个os，也有着其硬件系统和软件，因此依然有着漏洞和bug。所以其本身也可能受到攻击和出现软/硬件方面的故障。 </p><p>　　<u>7．防火墙不处理病毒</u>　 </p><p>　　不管是funlove病毒也好，还是CIH也好。在内部网络用户下载外网的带毒文件的时候，防火墙是不为所动的（这里的防火墙不是指单机/企业级的杀毒软件中的实时监控功能，虽然它们不少都叫“病毒防火墙”）。 </p><p>　　看到这里，或许您原本心目中的防火墙已经被我拉下了神台。是的，防火墙是网络安全的重要一环，但不代表设置了防火墙就能一定保证网络的安全。“真正的安全是一种意识，而非技术!”请牢记这句话。 </p><p>　　不管怎么样，防火墙仍然有其积极的一面。在构建任何一个网络的防御工事时，除了物理上的隔离和目前新近提出的网闸概念外，首要的选择绝对是防火墙。那么，怎么选择需要的防火墙呢？ </p><p>　　<strong>防火墙的分类</strong></p><p>　　首先大概说一下防火墙的分类。就防火墙（本文的防火墙都指商业用途的网络版防火墙，非个人使用的那种）的组成结构而言，可分为以下三种： </p><p>　　<u>第一种：软件防火墙</u></p><p>　　软件防火墙运行于特定的计算机上，它需要客户预先安装好的计算机操作系统的支持，一般来说这台计算机就是整个网络的网关。软件防火墙就象其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。防火墙厂商中做网络版软件防火墙最出名的莫过于Checkpoint。使用这类防火墙，需要网管对所工作的操作系统平台比较熟悉。 </p><p>　　<u>第二种：硬件防火墙</u></p><p>　　这里说的硬件防火墙是指所谓的硬件防火墙。之所以加上"所谓"二字是针对芯片级防火墙说的了。它们最大的差别在于是否基于专用的硬件平台。目前市场上大多数防火墙都是这种所谓的硬件防火墙，他们都基于PC架构，就是说，它们和普通的家庭用的PC没有太大区别。在这些PC架构计算机上运行一些经过裁剪和简化的操作系统，最常用的有老版本的Unix、Linux和FreeBSD系统。 值得注意的是，由于此类防火墙采用的依然是别人的内核，因此依然会受到os本身的安全性影响。国内的许多防火墙产品就属于此类，因为采用的是经过裁减内核和定制组件的平台，因此国内防火墙的某些销售人员常常吹嘘其产品是“专用的os”等等，其实是一个概念误导，下面我们提到的第三种防火墙才是真正的os专用。　 </p><p>　　<u>第三种：芯片级防火墙</u></p><p>　　它们基于专门的硬件平台，没有操作系统。专有的ASIC芯片促使它们比其他种类的防火墙速度更快，处理能力更强，性能更高。做这类防火墙最出名的厂商莫过于NetScreen.其他的品牌还有FortiNet,算是后起之秀了。这类防火墙由于是专用OS,因此防火墙本身的漏洞比较少，不过价格相对比较高昂，所以一般只有在“确实需要”的情况下才考虑。</p><p>　　在这里，特别纠正几个不正确的观念： </p><p>　　<u>1.在性能上，芯片级防火墙&gt;硬件防火墙&gt;软件防火墙</u></p><p>　　在价格上看来，的确倒是如此的关系。但是性能上却未必。防火墙的“好”，是看其支持的并发数、最大流量等等性能，而不是用软件硬件来区分的。事实上除了芯片级防火墙外，软件防火墙与硬件防火墙在硬件上基本是完全一样的。目前国内的防火墙厂商由于大多采用硬件防火墙而不是软件防火墙，原因1是考虑到用户网络管理员的素质等原因，还有就是基于我国大多数民众对“看得见的硬件值钱，看不到的软件不值钱”这样一种错误观点的迎合。不少硬件防火墙厂商大肆诋毁软件防火墙性能，不外是为了让自己那加上了外壳的普通pc＋一个被修改后的内核＋一套防火墙软件能够卖出一个好价钱来而已。而为什么不作芯片级防火墙呢？坦白说，国内没有公司有技术实力。而且在中国市场上来看，某些国内的所谓硬件防火墙的硬件质量连diy的兼容机都比不上。看看国内XX的硬件防火墙那拙劣的硬盘和网卡，使用过的人都能猜到是哪家，我就不点名了。真正看防火墙，应该看其稳定性和性能，而不是用软、硬来区分的。至少，如果笔者自己选购，我会选择购买CheckPoint而非某些所谓的硬件防火墙的。 </p><p>　　<u>2.在效果上，芯片防火墙比其他两种防火墙好</u></p><p>　　这同样也是一种有失公允的观点。事实上芯片防火墙由于硬件的独立，的确在OS本身出漏洞的机会上比较少，但是由于其固化，导致在面对新兴的一些攻击方式时，无法及时应对；而另外两种防火墙，则可以简单地通过升级os的内核来获取系统新特性，通过灵活地策略设置来满足不断变化的要求，不过其OS出现漏洞的概率相对高一些。 </p><p>　　<u>3.唯技术指标论</u></p><p>　　请以“防火墙买来是使用的”为第一前提进行购买。防火墙本身的质量如何是一回事，是否习惯使用又是另一回事。如果对一款产品的界面不熟悉，策略设置方式不理解，那么即使用世界最顶级的防火墙也没有多大作用。就如小说中武林中人无不向往的“倚天剑”、“屠龙刀”被我拿到，肯定也敌不过乔峰赤手的少林长拳是一般道理。防火墙技术发展至今，市场已经很成熟了，各类产品的存在，自然有其生存于市场的理由。如何把产品用好，远比盲目地比较各类产品好。 </p><p>　　<strong><font color="#ff0000">IDS </font></strong></p><p>　　什么是IDS呢？早期的IDS仅仅是一个监听系统，在这里，你可以把监听理解成窃听的意思。基于目前局网的工作方式，IDS可以将用户对位于与IDS同一交换机/HuB的服务器的访问、操作全部记录下来以供分析使用，跟我们常用的widnows操作系统的事件查看器类似。再后来，由于IDS的记录太多了，所以新一代的IDS提供了将记录的数据进行分析，仅仅列出有危险的一部分记录，这一点上跟目前windows所用的策略审核上很象；目前新一代的IDS，更是增加了分析应用层数据的功能，使得其能力大大增加；而更新一代的IDS，就颇有“路见不平，拔刀相助”的味道了，配合上防火墙进行联动，将IDS分析出有敌意的地址阻止其访问。 </p><p>　　就如理论与实际的区别一样，IDS虽然具有上面所说的众多特性，但在实际的使用中，目前大多数的入侵检测的接入方式都是采用pass-by方式来侦听网络上的数据流，所以这就限制了IDS本身的阻断功能，IDS只有靠发阻断数据包来阻断当前行为，并且IDS的阻断范围也很小，只能阻断建立在TCP基础之上的一些行为，如Telnet、FTP、HTTP等，而对于一些建立在UDP基础之上就无能为力了。因为防火墙的策略都是事先设置好的，无法动态设置策略，缺少针对攻击的必要的灵活性，不能更好的保护网络的安全，所以IDS与防火墙联动的目的就是更有效地阻断所发生的攻击事件，从而使网络隐患降至较低限度。 </p><p>　　接下来，我简单介绍一下IDS与防火墙联动工作原理 </p><p>　　入侵检测系统在捕捉到某一攻击事件后，按策略进行检查，如果策略中对该攻击事件设置了防火墙阻断，那么入侵检测系统就会发给防火墙一个相应的动态阻断策略，防火墙根据该动态策略中的设置进行相应的阻断，阻断的时间、阻断时间间隔、源端口、目的端口、源IP和目的IP等信息，完全依照入侵检测系统发出的动态策略来执行。一般来说，很多情况下，不少用户的防火墙与IDS并不是同一家的产品，因此在联动的协议上面大都遵从 opsec 或者 topsec协议进行通信，不过也有某些厂家自己开发相应的通信规范的。目前总得来说，联动有一定效果，但是稳定性不理想，特别是攻击者利用伪造的包信息，让IDS错误判断，进而错误指挥防火墙将合法的地址无辜屏蔽掉。 </p><p>　　因为诸多不足，在目前而言，IDS主要起的还是监听记录的作用。用个比喻来形容：网络就好比一片黑暗，到处充满着危险，冥冥中只有一个出口；IDS就象一支手电筒，虽然手电筒不一定能照到正确的出口，但至少有总比没有要好一些。称职的网管，可以从IDS中得到一些关于网络使用者的来源和访问方式，进而依据自己的经验进行主观判断（注意，的确是主观判断。例如用户连续ping了服务器半个小时，到底是意图攻击，还是无意中的行为？这都依据网络管理员的主观判断和网络对安全性的要求来确定对应方式。）对IDS的选择，跟上面谈到的防火墙的选择类似，根据自己的实际要求和使用习惯，选择一个自己够用的，会使用的就足够了。 </p><p>　　最后，要说的依然是那句“世界上没有一种技术能真正保证绝对地安全。”安全问题，是从设备到人，从服务器上的每个服务程序到防火墙、IDS等安全产品的综合问题；任何一个环节工作，只是迈向安全的步骤。</p><img src ="http://www.cppblog.com/linhong34/aggbug/8130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-06-03 21:13 <a href="http://www.cppblog.com/linhong34/archive/2006/06/03/8130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>活用XP系统自带的关机软件</title><link>http://www.cppblog.com/linhong34/archive/2006/06/01/8052.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Thu, 01 Jun 2006 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/06/01/8052.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/8052.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/06/01/8052.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/8052.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/8052.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WINDOWS XP										的关机中。								Windows XP										系统是通过一个名为								Shutdown.exe										的程序来完成关机操作的，关机的时候调用								shutdown.exe										。在								Windows XP				...&nbsp;&nbsp;<a href='http://www.cppblog.com/linhong34/archive/2006/06/01/8052.html'>阅读全文</a><img src ="http://www.cppblog.com/linhong34/aggbug/8052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-06-01 23:14 <a href="http://www.cppblog.com/linhong34/archive/2006/06/01/8052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>计算机科学与技术学习心得(转载)</title><link>http://www.cppblog.com/linhong34/archive/2006/06/01/8020.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Thu, 01 Jun 2006 03:58:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/06/01/8020.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/8020.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/06/01/8020.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/8020.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/8020.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">计算机科学与技术学习心得</font>
		</p>
		<p>
				<font size="2">计算机科学与技术反思录<br />计算机科学与技术这一门科学深深的吸引着我们这些同学们，上计算机系已经有近<br />三年了，自己也做了一些思考,我一直认为计算机科学与技术这门专业，在本科阶段是不<br />可能切分成计算机科学和计算机技术的，因为计算机科学需要相当多的实践，而实践需<br />要技术；每一个人(包括非计算机专业)，掌握简单的计算机技术都很容易（包括程序设<br />计），但计算机专业的优势就在于，我们掌握许多其他专业并不“深究”的东西，例<br />如，算法，体系结构，等等。非计算机专业的人可以很容易地做一个芯片，写一段程<br />序，但他们做不出计算机专业能够做出来的大型系统。今天我想专门谈一谈计算机科<br />学，并将重点放在计算理论上。<br /></font>
		</p>
		<a name="more">
		</a>
		<p>
				<font size="2">计算机理论的一个核心问题——从数学谈起：<br />记得当年大一入学，每周六课时高等数学，天天作业不断(那时是六日工作制)。颇<br />有些同学惊呼走错了门:咱们这到底念的是什么系？不错，你没走错门，这就是计算机科<br />学与技术系。我国计算机科学系里的传统是培养做学术研究，尤其是理论研究的人（方<br />向不见得有问题，但是做得不是那么尽如人意）。而计算机的理论研究，说到底了，如<br />网络安全，图形图像学，视频音频处理，哪个方向都与数学有着很大的关系，虽然也许<br />是正统数学家眼里非主流的数学。这里我还想阐明我的一个观点：我们都知道，数学是<br />从实际生活当中抽象出来的理论，人们之所以要将实际抽象成理论，目的就在于想用抽<br />象出来的理论去更好的指导实践，有些数学研究工作者喜欢用一些现存的理论知识去推<br />导若干条推论，殊不知其一：问题考虑不全很可能是个错误的推论，其二：他的推论在<br />现实生活中找不到原型，不能指导实践。严格的说，我并不是一个理想主义者，政治课<br />上学的理论联系实际一直是指导我学习科学文化知识的航标（至少我认为搞计算机科学<br />与技术的应当本着这个方向）。</font>
		</p>
		<p>
				<font size="2">其实我们计算机系学数学光学高等数学是不够的（典型的工科院校一般都开的<br />是高等数学），我们应该像数学系一样学一下数学分析（清华计算机系开的好像就是数<br />学分析），数学分析这门科学，咱们学计算机的人对它有很复杂的感情。在于它是偏向<br />于证明型的数学课程，这对我们培养良好的分析能力极有帮助。我的软件工程学导师北<br />工大数理学院的王仪华先生就曾经教导过我们，数学系的学生到软件企业中大多作软件<br />设计与分析工作，而计算机系的学生做程序员的居多，原因就在于数学系的学生分析推<br />理能力，从所受训练的角度上要远远在我们之上。当年出现的怪现象是：计算机系学生<br />的高中数学基础在全校数一数二(希望没有冒犯其它系的同学)，教学课时数也仅次于数<br />学系，但学完之后的效果却不尽如人意。难道都是学生不努力吗，我看未见得，方向错<br />了也说不一定，其中原因何在，发人深思。</font>
		</p>
		<p>
				<font size="2">我个人的浅见是：计算机系的学生，对数学的要求固然跟数学系不同，跟物理类差别则<br />更大。通常非数学专业的所谓“高等数学”，无非是把数学分析中较困难的理论部分删<br />去，强调套用公式计算而已。而对计算机系来说，数学分析里用处最大的恰恰是被删去<br />的理论部分。说得难听一点，对计算机系学生而言，追求算来算去的所谓“工程数学”<br />已经彻底地走进了误区。记上一堆曲面积分的公式，难道就能算懂了数学？那倒不如现<br />用现查，何必费事记呢？再不然直接用Mathematics或是Matalab好了。<br />我在系里最爱做的事情就是给学弟学妹们推荐参考书。中文的数学分析书，一般都<br />认为以北大张筑生老师的“数学分析新讲”为最好。万一你的数学实在太好，那就去看<br />菲赫金哥尔茨的“微积分学教程”好了--但我认为没什么必要，毕竟你不想转到数学系<br />去。吉米多维奇的“数学分析习题集”也基本上是计算型的东东。书的名气很大，倒不<br />见得适合我们，还是那句话，重要的是数学思想的建立，生活在信息社会里我们求的是<br />高效，计算这玩意还是留给计算机吧。不过现在多用的似乎是复旦大学的《数学分析》<br />也是很好的教材。</font>
		</p>
		<p>
				<font size="2">中国的所谓高等代数，就等于线性代数加上一点多项式理论。我以为这有好的一面，因<br />为可以让学生较早感觉到代数是一种结构，而非一堆矩阵翻来覆去。这里不得不提南京<br />大学林成森，盛松柏两位老师编的“高等代数”，感觉相当舒服。此书相当全面地包含<br />了关于多项式和线性代数的基本初等结果，同时还提供了一些有用的又比较深刻的内<br />容，如Sturm序列，Shermon-Morrison公式，广义逆矩阵等等。可以说，作为本科生如能<br />吃透此书，就可以算高手。国内较好的高等代数教材还有清华计算机系用的那本，清华<br />出版社出版，书店里多多，一看就知道。从抽象代数的观点来看，高等代数里的结果不<br />过是代数系统性质的一些例子而已。莫宗坚先生的《代数学》里，对此进行了深刻的讨<br />论。然而莫先生的书实在深得很，作为本科生恐怕难以接受，不妨等到自己以后成熟了<br />一些再读。</font>
		</p>
		<p>
				<font size="2">正如上面所论述的，计算机系的学生学习高等数学：知其然更要知其所以然。你学习的<br />目的应该是：将抽象的理论再应用于实践，不但要掌握题目的解题方法，更要掌握解题<br />思想，对于定理的学习：不是简单的应用，而是掌握证明过程即掌握定理的由来，训练<br />自己的推理能力。只有这样才达到了学习这门科学的目的，同时也缩小了我们与数学系<br />的同学之间思维上的差距。</font>
		</p>
		<p>
				<font size="2">概率论与数理统计这门课很重要，可惜大多数院校讲授这门课都会少些东西。少了的东<br />西现在看至少有随机过程。到毕业还没有听说过Markov过程，此乃计算机系学生的耻<br />辱。没有随机过程，你怎么分析网络和分布式系统？怎么设计随机化算法和协议？据说<br />清华计算机系开有“随机数学”，早就是必修课。另外，离散概率论对计算机系学生来<br />说有特殊的重要性。而我们国家工程数学讲的都是连续概率。现在，美国已经有些学校<br />开设了单纯的“离散概率论”课程，干脆把连续概率删去，把离散概率讲深些。我们不<br />一定要这么做，但应该更加强调离散概率是没有疑问的。这个工作我看还是尽早的做为<br />好。</font>
		</p>
		<p>
				<font size="2">计算方法学（有些学校也称为数学分析学）是最后一门由数理学院给我们开的课。一般<br />学生对这门课的重视程度有限，以为没什么用。不就是照套公式嘛！其实，做图形图像<br />可离不开它，密码学搞深了也离不开它。而且，在很多科学工程中的应用计算，都以数<br />值的为主。这门课有两个极端的讲法：一个是古典的“数值分析”，完全讲数学原理和<br />算法；另一个是现在日趋流行的“科学与工程计算”，干脆教学生用软件包编程。我个<br />人认为，计算机系的学生一定要认识清楚我们计算机系的学生为什么要学这门课，我是<br />很偏向于学好理论后用计算机实现的，最好使用C语言或C++编程实现。向这个方向努力<br />的书籍还是挺多的，这里推荐大家高等教育出版社（CHEP）和施普林格出版社<br />(Springer)联合出版的《计算方法（Computational Methods）》,华中理工大学数学系<br />写的（现华中科技大学），这方面华科大做的工作在国内应算是比较多的，而个人认为<br />以这本最好，至少程序设计方面涉及了：任意数学函数的求值，方程求根，线性方程组<br />求解，插值方法，数值积分，场微分方程数值求解。李庆扬的那本则理论性过强，与实<br />际应用结合得不太紧。</font>
		</p>
		<p>
				<font size="2">每个学校本系里都会开一门离散数学，涉及集合论，图论，和抽象代数，数理逻辑。不<br />过，这么多内容挤在离散数学一门课里，是否时间太紧了点？另外，计算机系学生不懂<br />组合和数论，也是巨大的缺陷。要做理论，不懂组合或者数论吃亏可就太大了。从理想<br />的状态来看，最好分开六门课：集合，逻辑,图论，组合，代数，数论。这个当然不现<br />实，因为没那么多课时。也许将来可以开三门课：集合与逻辑，图论与组合，代数与数<br />论。（这方面我们学校已经着手开始做了）不管课怎么开，学生总一样要学。下面分别<br />谈谈上面的三组内容。<br />古典集合论，北师大出过一本《基础集合论》不错。 数理逻辑，中科院软件所陆钟万教<br />授的《面向计算机科学的数理逻辑》就不错。现在可以找到陆钟万教授的讲课录像，<br />http://www.cas.ac.cn/html/Dir/2001/11/06/3391.htm自己去看看吧。总的来说，学集<br />合/逻辑起手不难，普通高中生都能看懂。但越往后越感觉深不可测。</font>
		</p>
		<p>
				<font size="2">学完以上各书之后，如果你还有精力兴趣进一步深究，那么可以试一下GTM系列中的<br />《Introduction to Axiomatic Set Theory》和《A Course of Mathematical<br />Logic》。这两本都有世界图书出版社的引进版。你如果能搞定这两本，可以说在逻辑方<br />面真正入了门，也就不用再浪费时间听我瞎侃了。</font>
		</p>
		<p>
				<font size="2">据说全中国最多只有三十个人懂图论。此言不虚。图论这东东，技巧性太强，几乎每个<br />问题都有一个独特的方法，让人头痛。不过这也正是它魅力所在：只要你有创造性，它<br />就能给你成就感。我的导师说，图论里面随便揪一块东西就可以写篇论文。大家可以体<br />会里面内容之深广了吧！国内的图论书中，王树禾老师的“图论及其算法”非常成功。<br />一方面，其内容在国内教材里算非常全面的。另一方面，其对算法的强调非常适合计算<br />机系(本来就是科大计算机系教材)。有了这本书为主，再参考几本翻译的，如Bondy &amp;<br />Murty的《图论及其应用》，人民邮电出版社翻译的《图论和电路网络》等等，就马马虎<br />虎，对本科生足够了。再进一步，世界图书引进有GTM系列的"Modern Graph Theory"。<br />此书确实经典！国内好象还有一家出版了个翻译版。不过，学到这个层次，还是读原版<br />好。搞定这本书，也标志着图论入了门。</font>
		</p>
		<p>
				<font size="2">离散数学方面我们北京工业大学实验学院有个世界级的专家，叫邵学才，复旦大学概率<br />论毕业的，教过高等数学，线性代数，概率论，最后转向离散数学，出版著作无数，论<br />文集新加坡有一本，堪称经典，大家想学离散数学的真谛不妨找来看看。这老师的课我<br />专门去听过，极为经典。不过你要从他的不经意的话中去挖掘精髓。在同他的交谈当中<br />我又深刻地发现一个问题，虽说邵先生写书无数，但依他自己的说法每本都差不多，我<br />实在觉得诧异，他说主要是有大纲的限制，不便多写。这就难怪了，很少听说国外写书<br />还要依据个什么大纲（就算有，内容也宽泛的多），不敢越雷池半步，这样不是看谁的<br />都一样了。外版的书好就好在这里，最新的科技成果里面都有论述，别的先不说，至少<br />是“紧跟时代的理论知识”。</font>
		</p>
		<p>
				<font size="2">组合感觉没有太适合的国产书。还是读Graham和Knuth等人合著的经典“具体数学”吧，<br />西安电子科技大学出版社有翻译版。 抽象代数，国内经典为莫宗坚先生的“代数学”。<br />此书是北大数学系教材，深得好评。然而对本科生来说，此书未免太深。可以先学习一<br />些其它的教材，然后再回头来看“代数学”。国际上的经典可就多了，GTM系列里就有一<br />大堆。推荐一本谈不上经典，但却最简<br />单的，最容易学的：http://www.math.miami.edu/~ec/book/这本“Introduction to<br />Linear and Abstract Algebra"非常通俗易懂，而且把抽象代数和线性代数结合起来，<br />对初学者来说非常理想，我校比较牛的同学都有收藏。</font>
		</p>
		<p>
				<font size="2">数论方面，国内有经典而且以困难著称的”初等数论“(潘氏兄弟著，北大版)。再追溯<br />一点，还有更加经典(可以算世界级)并且更加困难的”数论导引“(华罗庚先生的名著，<br />科学版，九章书店重印，繁体的看起来可能比较困难)。把基础的几章搞定一个大概，对<br />本科生来讲足够了。但这只是初等数论。本科毕业后要学计算数论，你必须看英文的<br />书，如Bach的"Introduction to Algorithmic Number Theory"。<br />计算机科学理论的根本，在于算法。现在很多系里给本科生开设算法设计与分析，确实<br />非常正确。环顾西方世界，大约没有一个三流以上计算机系不把算法作为必修的。算法<br />教材目前公认以Corman等著的"Introduction to Algorithms"为最优。对入门而言，这<br />一本已经足够，不需要再参考其它书。</font>
		</p>
		<p>
				<font size="2">再说说形式语言与自动机。我看过北邮的教材，应该说写的还清楚。但是，有一点要强<br />调：形式语言和自动机的作用主要在作为计算模型，而不是用来做编译。事实上，编译<br />前端已经是死领域，没有任何open problems，北科大的班晓娟博士也曾经说过，编译的<br />技术已相当成熟。如果为了这个，我们完全没必要去学形式语言--用用yacc什么的就完<br />了。北邮的那本在国内还算比较好，但是在深度上，在跟可计算性的联系上都有较大的<br />局限，现代感也不足。所以建议有兴趣的同学去读英文书，不过国内似乎没引进这方面<br />的教材。可以去互动出版网上看一看。入门以后，把形式语言与自动机中定义的模型，<br />和数理逻辑中用递归函数定义的模型比较一番，可以说非常有趣。现在才知道，什么叫<br />“宫室之美，百官之富”！</font>
		</p>
		<p>
				<font size="2">计算机科学和数学的关系有点奇怪。二三十年以前，计算机科学基本上还是数学的一个<br />分支。而现在，计算机科学拥有广泛的研究领域和众多的研究人员，在很多方面反过来<br />推动数学发展，从某种意义上可以说是孩子长得比妈妈还高了。但不管怎么样，这个孩<br />子身上始终流着母亲的血液。这血液是the mathematical underpinning of computer<br />science(计算机科学的数学基础)，也就是理论计算机科学。原来在东方大学城图书馆中<br />曾经看过一本七十年代的译本（书皮都没了，可我就爱关注这种书），大概就叫《计算<br />机数学》。那本书若是放在当时来讲决是一本好书，但现在看来，涵盖的范围还算广，<br />深度则差了许多，不过推荐大一的学生倒可以看一看，至少可以使你的计算数学入入<br />门。</font>
		</p>
		<p>
				<font size="2">最常和理论计算机科学放在一起的一个词是什么？答：离散数学。这两者的关系是如此<br />密切，以至于它们在不少场合下成为同义词。（这一点在前面的那本书中也有体现）传<br />统上，数学是以分析为中心的。数学系的同学要学习三四个学期的数学分析，然后是复<br />变函数，实变函数，泛函数等等。实变和泛函被很多人认为是现代数学的入门。在物<br />理，化学，工程上应用的，也以分析为主。</font>
		</p>
		<p>
				<font size="2">随着计算机科学的出现，一些以前不太受到重视的数学分支突然重要起来。人们发现，<br />这些分支处理的数学对象与传统的分析有明显的区别：分析研究的问题解决方案是连续<br />的，因而微分，积分成为基本的运算；而这些分支研究的对象是离散的，因而很少有机<br />会进行此类的计算。人们从而称这些分支为“离散数学”。“离散数学”的名字越来越<br />响亮，最后导致以分析为中心的传统数学分支被相对称为“连续数学”。</font>
		</p>
		<p>
				<font size="2">离散数学经过几十年发展，基本上稳定下来。一般认为，离散数学包含以下学科：<br />1) 集合论，数理逻辑与元数学。这是整个数学的基础，也是计算机科学的基础。<br />2) 图论，算法图论；组合数学，组合算法。计算机科学，尤其是理论计算机科学的核心<br />是<br />算法，而大量的算法建立在图和组合的基础上。<br />3) 抽象代数。代数是无所不在的，本来在数学中就非常重要。在计算机科学中，人们惊<br />讶地发现代数竟然有如此之多的应用。</font>
		</p>
		<p>
				<font size="2">但是，理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗？一直到<br />大约十几年前，终于有一位大师告诉我们：不是。D.E.Knuth(他有多伟大，我想不用我<br />废话了)在Stanford开设了一门全新的课程Concrete Mathematics。 Concrete这个词在<br />这里有两层含义：<br />首先：对abstract而言。Knuth认为，传统数学研究的对象过于抽象，导致对具体的问题<br />关心不够。他抱怨说，在研究中他需要的数学往往并不存在，所以他只能自己去创造一<br />些数学。为了直接面向应用的需要，他要提倡“具体”的数学。在这里我做一点简单的<br />解释。例如在集合论中，数学家关心的都是最根本的问题--公理系统的各种性质之类。<br />而一些具体集合的性质，各种常见集合，关系，映射都是什么样的，数学家觉得并不重<br />要。然而，在计算机科学中应用的，恰恰就是这些具体的东西。Knuth能够首先看到这一<br />点，不愧为当世计算机第一人。其次，Concrete是Continuous(连续)加上discrete(离<br />散)。不管连续数学还是离散数学，都是有用的数学！</font>
		</p>
		<p>
				<font size="2">理论与实际的结合——计算机科学研究的范畴<br />前面主要是从数学角度来看的。从计算机角度来看，理论计算机科学目前主要的研<br />究领域包括：可计算性理论，算法设计与复杂性分析，密码学与信息安全，分布式计算<br />理论，并行计算理论，网络理论，生物信息计算，计算几何学，程序语言理论等等。这<br />些领域互相交叉，而且新的课题在不断提出，所以很难理出一个头绪来。想搞搞这方面<br />的工作，推荐看中国计算机学会的一系列书籍，至少代表了我国的权威。下面随便举一<br />些例子。<br />由于应用需求的推动，密码学现在成为研究的热点。密码学建立在数论(尤其是计算<br />数论)，代数，信息论，概率论和随机过程的基础上，有时也用到图论和组合学等。很多<br />人以为密码学就是加密解密，而加密就是用一个函数把数据打乱。这样的理解太浅显<br />了。<br />现代密码学至少包含以下层次的内容：<br />第一，密码学的基础。例如，分解一个大数真的很困难吗？能否有一般的工具证明协议<br />正确？<br />第二，密码学的基本课题。例如，比以前更好的单向函数，签名协议等。<br />第三，密码学的高级问题。例如，零知识证明的长度，秘密分享的方法。<br />第四，密码学的新应用。例如，数字现金，叛徒追踪等。<br />在分布式系统中，也有很多重要的理论问题。例如，进程之间的同步，互斥协议。一个<br />经典的结果是：在通信信道不可靠时，没有确定型算法能实现进程间协同。所以，改进<br />TCP三次握手几乎没有意义。例如时序问题。常用的一种序是因果序，但因果序直到不久<br />前才有一个理论上的结果....例如，死锁没有实用的方法能完美地对付。例如,......操<br />作系统研究过就自己去举吧！<br />如果计算机只有理论，那么它不过是数学的一个分支，而不成为一门独立的科学。<br />事实上，在理论之外，计算机科学还有更广阔的天空。</font>
		</p>
		<p>
				<font size="2">我一直认为，4年根本不够学习计算机的基础知识，因为面太宽了......<br />这方面我想先说说我们系在各校普遍开设的《计算机基础》。在高等学校开设《计<br />算机基础课程》是我国高教司明文规定的各专业必修课程要求。主要内容是使学生初步<br />掌握计算机的发展历史，学会简单的使用操作系统，文字处理，表格处理功能和初步的<br />网络应用功能。但是在计算机科学系教授此门课程的目标决不能与此一致。在计算机系<br />课程中目标应是：让学生较为全面的了解计算机学科的发展，清晰的把握计算机学科研<br />究的方向，发展的前沿即每一个课程在整个学科体系中所处的地位。搞清各学科的学习<br />目的，学习内容，应用领域。使学生在学科学习初期就对整个学科有一个整体的认识，<br />以做到在今后的学习中清楚要学什么，怎么学。计算机基本应用技能的位置应当放在第<br />二位或更靠后，因为这一点对于本系的学生应当有这个摸索能力。这一点很重要。推荐<br />给大家一本书：机械工业出版社的《计算机文化》（New Perspective of Computer<br />Science），看了这本书我才深刻的体会到自己还是个计算机科学初学者，才比较透彻的<br />了解了什么是计算机科学。另外在厦门大学赵致琢老师的著作《计算科学导论》当中的<br />很多经典理论都是在同类书籍中很难找到的。看看他也许你才会明白一个最基本的问<br />题：为什么计算机科学叫计算科学更为准确。这本书在世界上也可成为精品级的著作。</font>
		</p>
		<p>
				<font size="2">一个一流计算机系的优秀学生决不该仅仅是一个编程高手，但他一定首先是一个编程高<br />手。我上大学的时候，第一门专业课是C语言程序设计，念计算机的人从某种角度讲相当<br />一部分人是靠写程序吃饭的。在我们北京工业大学实验学院计算机系里一直有这样的争<br />论（时至今日CSDN上也有），关于第一程序设计语言该用哪一种。我个人认为，用哪种<br />语言属于末节，关键在养成良好的编程习惯。当年老师对我们说，打好基础后学一门新<br />语言只要一个星期。现在我觉得根本不用一个星期，前提是先把基础打好。不要再犹豫<br />了，学了再说，等你抉择好了，别人已经会了几门语言了。</font>
		</p>
		<p>
				<font size="2">汇编语言和微机原理是两门特烦人的课。你的数学/理论基础再好，也占不到什么便宜。<br />这两门课之间的次序也好比先有鸡还是先有蛋，无论你先学哪门，都会牵扯另一门课里<br />的东西。所以，只能静下来慢慢琢磨。这就是典型的工程课，不需要太多的聪明和顿<br />悟，却需要水滴石穿的渐悟。有关这两门课的书，计算机书店里不难找到。弄几本最新<br />的，对照着看吧。组成原理推荐《计算机组成与结构》清华大学王爱英教授写的。汇编<br />语言大家拿8086/8088入个门，之后一定要学80x86汇编语言。实用价值大，不落后，结<br />构又好，写写高效病毒，高级语言里嵌一点汇编，进行底层开发，总也离不开他，推荐<br />清华大学沈美明的《IBM—PC汇编语言程序设计》。有些人说不想了解计算机体系结构，<br />也不想制造计算机，所以诸如计算机原理，汇编语言，接口之类的课觉得没必要学，这<br />样合理吗？显然不合理，这些东西迟早得掌握，肯定得接触，而且，这是计算机专业与<br />其他专业学生相比的少有的几项优势。做项目的时候，了解这些是非常重要的，不可能<br />说，仅仅为了技术而技术，只懂技术的人最多做一个编码工人，而永远不可能全面地了<br />解整个系统的设计，而编码工人是越老越不值钱。关于组成原理还有个讲授的问题，在<br />我学这门课程时老师讲授时把CPU工作原理誉微程序设计这一块略掉了，理由是我们国家<br />搞CPU技术不如别的国家，搞了这么长时间好不容易出了个龙芯比Intel的还差个十万八<br />千里，所以建议我们不要学了。我看这在各校也未见得不是个问题吧！若真是如他所<br />说，那中国的计算机科学哪个方向都可以停了，软硬件，应用，有几项搞得过美国，搞<br />不过别人就不搞了，那我们坐在这里干什么？教学的观念需要转变的。</font>
		</p>
		<p>
				<font size="2">模拟电路这东东，如今不仅计算机系学生搞不定，电子系学生也多半害怕。如果你真想<br />软硬件通吃，那么建议你先看看邱关源的“电路原理”，也许此后再看模拟电路底气会<br />足些。教材：康华光的“电子技术基础”（高等教育出版社）还是不错的（我校电子系<br />在用）。有兴趣也可以参考童诗白的书。</font>
		</p>
		<p>
				<font size="2">数字电路比模拟电路要好懂得多。推荐大家看一看我们北工大刘英娴教授写的《数字逻<br />辑》业绩人士都说这本书很有参考价值（机械工业出版社的）。原因很明了，实用价值<br />高，能听听她讲授的课程更是有一种“享受科学”的感觉。清华大学阎石的书也算一本<br />好教材，遗憾的一点是集成电路讲少了些。真有兴趣，看一看大规模数字系统设计吧<br />（北航那本用的还比较多）。</font>
		</p>
		<p>
				<font size="2">计算机系统结构该怎么教，国际上还在争论。国内能找到的较好教材为Stallings<br />的"Computer Organization and Architectureesigning for Performance"(清华影印<br />本)。国际上最流行的则是“Computer architecture: aquantitative approach", by<br />Patterson &amp; Hennessy。<br />操作系统可以随便选用《操作系统的内核设计与实现》和《现代操作系统》两书之<br />一。这两部都可以算经典，唯一缺点就是理论上不够严格。不过这领域属于Hardcore<br />System,所以在理论上马虎一点也情有可原。想看理论方面的就推荐清华大学出版社《操<br />作系统》吧，高教司司长张尧学写的，我们教材用的是那本。 另外推荐一本《Windows<br />操作系统原理》机械工业出版社的，这本书是我国操作系统专家在微软零距离考察半<br />年，写作历时一年多写成的，教操作系统的专家除了清华大学的张尧学（现高教司司<br />长）几乎所有人都参加了。Bill Gates亲自写序。里面不但结合windows2000,xp详述操<br />作系统的内核，而且后面讲了一些windows编程基础，有外版书的味道，而且上面一些内<br />容可以说在国内外只有那本书才有对windows内核细致入微的介绍，<br />如果先把形式语言学好了，则编译原理中的前端我看只要学四个算法：最容易实现<br />的递归下降；最好的自顶向下算法LL(k)；最好的自底向上算法LR(k)；LR(1)的简化SLR<br />(也许还有另一简化LALR)。后端完全属于工程性质，自然又是another story。<br />推荐教材：Kenneth C.Louden写的“Compiler Construction Principles and<br />Practice”即是《编译原理及实践》（机械工业出版社的译本）<br />学数据库要提醒大家的是，会用VFP，VB, Power builder不等于懂数据库。(这世界<br />上自以为懂数据库的人太多了！)数据库设计既是科学又是艺术，数据库实现则是典型的<br />工程。所以从某种意义上讲，数据库是最典型的一门计算机课程——理工结合，互相渗<br />透。另外推荐大家学完软件工程学后再翻过来看看数据库技术，又会是一番新感觉。推<br />荐教材：Abraham Silberschatz等著的 "Database System Concepts".作为知识的完整<br />性，还推荐大家看一看机械工业出版社的《数据仓库》译本。</font>
		</p>
		<p>
				<font size="2">计算机网络的标准教材还是来自Tanenbaum的《Computer Networks》（清华大学有译<br />本）。还有就是推荐谢希仁的《计算机网络教程》（人民邮电出版社）问题讲得比较清<br />楚，参考文献也比较权威。不过，网络也属于Hardcore System，所以光看书是不够的。<br />建议多读RFC，http://www.ietf.org/rfc.htm里可以按编号下载RFC文档。从IP的读起。<br />等到能掌握10种左右常用协议，就没有几个人敢小看你了。再做的工作我看放在网络设<br />计上就比较好了。</font>
		</p>
		<p>
				<font size="2">数据结构的重要性就不言而喻了，学完数据结构你会对你的编程思想进行一番革命性的<br />洗礼，会对如何建立一个合理高效的算法有一个清楚的认识。对于算法的建立我想大家<br />应当注意以下几点：<br />当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过,那么你一<br />般会顺利地做出来;如果没见过,那么考虑以下问题:<br />1. 问题是否是建立在某种已知的熟悉的数据结构(例如,二叉树)上?如果不是,则要自己<br />设计数据结构。<br />2. 问题所要求编写的算法属于以下哪种类型?(建立数据结构,修改数据结构,遍历,查找,<br />排序...)<br />3. 分析问题所要求编写的算法的数学性质.是否具备递归特征?(对于递归程序设计,只要<br />设计出合理的参数表以及递归结束的条件,则基本上大功告成.)<br />4. 继续分析问题的数学本质.根据你以前的编程经验,设想一种可能是可行的解决办法,<br />并证明这种解决办法的正确性.如果题目对算法有时空方面的要求,证明你的设想满足其<br />要求.一般的,时间效率和空间效率难以兼得.有时必须通过建立辅助存储的方法来节省时<br />间.<br />5. 通过一段时间的分析,你对解决这个问题已经有了自己的一些思路.或者说,你已经可<br />以用自然语言把你的算法简单描述出来.继续验证其正确性,努力发现其中的错误并找出<br />解决办法.在必要的时候(发现了无法解决的矛盾),推翻自己的思路,从头开始构思.<br />6. 确认你的思路可行以后,开始编写程序.在编写代码的过程中,尽可能把各种问题考虑<br />得详细,周密.程序应该具有良好的结构,并且在关键的地方配有注释.<br />7. 举一个例子,然后在纸上用笔执行你的程序,进一步验证其正确性.当遇到与你的设想<br />不符的情况时,分析问题产生的原因是编程方面的问题还是算法思想本身有问题.<br />8. 如果程序通过了上述正确性验证,那么在将其进一步优化或简化。<br />9. 撰写思路分析,注释.<br />对于具体的算法思路,只能靠你自己通过自己的知识和经验来加以获得,没有什么特定的<br />规律(否则程序员全部可以下岗了,用机器自动生成代码就可以了).要有丰富的想象力,就<br />是说当一条路走不通时,不要钻牛角尖,要敢于推翻自己的想法.我也只不过是初学者,说<br />出上面的一些经验,仅供大家参考和讨论。<br />关于人工智能，我觉得的也是非常值得大家仔细研究的，虽然不能算是刚刚兴起的<br />学科了，但是绝对是非常有发展前途的一门学科。我国人工智能创始人之一，北京科技<br />大学涂序彦教授（这老先生是我的导师李小坚博士的导师）对人工智能这样定义：人工<br />智能是模仿、延伸和扩展人与自然的智能的技术科学。在美国人工智能官方教育网站上<br />对人工智能作了如下定义：Artificial Intelligence, or AI for short, is a<br />combination of computer science, physiology, and philosophy. AI is a broad<br />topic, consisting of different fields, from machine vision to expert<br />systems. The element that the fields of AI have in common is the creation of<br />machines that can "think".<br />这门学科研究的问题大概说有：<br />（1）符号主义： 符号计算与程序设计基础，知识表达方法 ：知识与思维，产生式规<br />则，语意网络，一阶谓词逻辑问题求解方法：搜索策略，启发式搜寻，搜寻算法，问题<br />规约方法，谓词演算：归结原理，归结过程专家系统：建立专家系统的方法及工具<br />（2）联接主义（神经网络学派）：1988年美国权威机构指出：数据库，网络发展呈直线<br />上升，神经网络可能是解决人工智能的唯一途径。<br />我想对于人工智能的学习，大家一定不要像学数学似的及一些现成的结论，要学会分<br />析问题，最好能利用程序设计实现，这里推荐给大家ACM最佳博士论文奖获得者涂晓媛博<br />士的著作《人工鱼—计算机动画的人工生命方法》（清华大学出版社）。搞人工生命的<br />同学不会不知道国际知名的涂氏父女吧。关于人工智能的书当然首选《Artificial<br />Intelligence A New Synthesis》Nils J.Nilsson.鼻祖嘛！<br />关于网络安全我也想在这里说两句，随着计算机技术的发展，整个社会的信息化水平突<br />飞猛进，计算机网络技术日新月异，网络成了当即社会各个工作领域不可缺少的组成部<br />分，只要有网络存在，网络安全问题就是一个必须解决好的问题，学习网络安全不是简<br />简单单的收集一些黑客工具黑一黑别人的网站，而是要学习他的数学原理，实现原理，<br />搞清底层工作机制，这样才能解决大部分的现有问题和新出现的安全问题。</font>
		</p>
		<p>
				<font size="2">关于计算机科学的一些边缘科学我想谈一谈软件工程技术，对于一个企业，推出软件是<br />不是就是几个程序员坐在一起，你写一段程序，我写一段程序呢？显然不是。软件工程<br />是典型的计算机科学和数学，管理科学，心理学，社会学等学科的综合。它使我们这些<br />搞理论和技术的人进入了一个社会。你所要考虑的不仅仅是程序的优劣，更应该考虑程<br />序与软件的区别，软件与软件产品的区别，软件软件产品的市场前景，如何去更好的与<br />人交流。这方面我还在学习阶段，以后这方面再写文章吧，先推荐给大家几本书：畅销<br />20年不衰的《人月神话》（清华大学中文版，中国电力出版社影印版），《软件工程-实<br />践者研究的方法》（机械工业出版社译本），《人件》（据说每一位微软公司的部门经<br />理都读过这本书，推荐老总们和想当老总的同学都看看，了解一下什么是软件企业中的<br />人）以及微软公司的《软件开发的科学与艺术》和《软件企业的管理与文化》（研究软<br />件企业的制胜之道当然要研究微软的成功经验了！）</font>
		</p>
		<p>
				<font size="2">关于计算机技术的学习我想是这样的：学校开设的任何一门科学都有其滞后性，不要总<br />认为自己掌握的某门技术就已经是天下无敌手了，虽然现在Java,VB,C,C++用的都很多，<br />怎能保证没有被淘汰的一天，我想.NET平台的诞生和X#语言的初见端倪完全可以说明问<br />题。换言之，在我们掌握一门新技术的同时就又有更新的技术产生，身为当代的大学生<br />应当有紧跟科学发展的素质。举个例子，就像有些同学总说，我做网页设计就喜欢直接<br />写html，不愿意用什么Frontpage,Dreamweaver。能用语言写网页固然很好，但有高效的<br />手段你为什么不使呢？仅仅是为了显示自己的水平高，unique? 我看真正水平高的是能<br />够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异，今后的程序设计<br />就像人们在说话一样，我想大家从xml中应是有所体会了。难道我们真就写个什么都要用<br />汇编，以显示自己的水平高，真是这样倒不如直接用机器语言写算了。反过来说，想要<br />以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。</font>
		</p>
		<p>
				<font size="2">计算机技术牵扯的内容更为广泛些，一项一项说恐怕没个一年半载也说不清。我只想提<br />醒大家的还是那句话，技术与科学是不能分家的，学好了科学同时搞技术，这才是上上<br />策。犹如英语，原先人们与老外交流必须要个翻译，现在满马路的人都会说英语。就连<br />21世纪英语演讲比赛的冠军都轮不到英语系的学生了。计算机也是一样的，我们必须面<br />对的一个现实就是：计算机真就只是一个工具，如果不具备其它方面的素养，计算机系<br />的学生虽然不能说找不到工作，不过总有一天当其他专业性人才掌握了计算机技术后将<br />比我们出色许多。原因就在于计算机解决的大都是实际问题，实际问题的知识却是我们<br />少有的。单一的计算机技术没有立足之地。<br />我想是时候指出：学习每一个课程之前，都要先搞清这一课程的学习目的。这一学<br />科的应用领域。据我自身所了解到的同龄同学和低年级的同学的学习状况：他们之中很<br />少有人知道学一个学科的学习目的，期末考试结束了也不知道学这科做什么用。这就失<br />去了读计算机科学的意义。当然这与现存的教育思想不能说一点关系都没有。<br />总的来说，从教育角度来讲，国内高校的课程安排不是很合理，强调理论，又不愿意在<br />理论上深入教育，无力接受新技术，想避开新技术又无法避得一干二净。我觉得关键问<br />题就是国内的高校难于突破现状，条条框框限制着怎么求发展。我们虽然认识得到国外<br />教育的优越性，但为什么迟迟不能采取行动？哪怕是去粗取精的取那么一点点。我们需<br />要改变。从我们自身角度来讲，多数人4年下来既没有学习计算机科学的学术水平，也没<br />有学习计算机技术的那种韧劲。在我刚上大一时，我的计算机科学入门导师，淮北煤炭<br />师范学院王爱平教授曾经对我说过这样一番话：“当你选择了计算机这一门科学，就意<br />味着你踏上了一条不归路，就意味着你一生都要为之奋斗……你的身后是悬崖，只有向<br />前走，不能往后退。”<br />有些同学说按照这样学习学的东西太多，有的未见得有用，我想打个形象的比方：<br />学校学出来的人都是一个球体，方方面面的知识都应具备。可是社会上需要球体的地方<br />很少，反而需要的是砖和瓦，即精通某一行的人才。但是对于同等体积的物体，用球体<br />来改造是最方便最省事的。学校的学生很多，为了能够使更多的学生来适应这个社会，<br />学校也就不得以把所有的学生都打造成一个球体，然后让社会对这些学生进行再加工，<br />成为真正能够有用的人才。即使你非常清楚自己的将来要干什么，并且非常下定决心要<br />走自己的路，这一步你也必须走，世界是在不断变化的，你不能预料未来。想清楚，努<br />力去干吧！<br />必须结束这篇“胡侃”了，再侃下去非我力所能及。其实计算机还有很多基础课都值得<br />一侃。怎奈我造诣有限，不敢再让内行耻笑。对于博大精深的计算机科学，我只能说我<br />永远都是个Beginner.最后声明：这些只针对本科阶段的学习。即使把这些全弄通了，前<br />面的路还长，计算机科学需要我们为之奋斗......学习计算机科学需要韧性，更需要创<br />新，需要***。深刻学习理论知识，勇于接受新技术的挑战，这才是我们这一代人应具<br />有的素质。最后送大家一句话“Wake up every day with a feeling of passion for<br />the difference technology will make in people's life!”。</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<p>
				<font size="2">在我大一时无意中找到了南京大学网友sir的帖子“胡侃（理论）计算机学习”，这个帖<br />子对我的大学生活起了至关重要的作用，也因此同他成为了好友，本帖子在原有帖子的<br />基础上改进了其中我认为不太合适的理论，修正了一些观点，在推荐教材方面结合我的<br />学习情况有了较大改变。值得一提的是增加了一些计算机理论的内容，计算机技术的内<br />容结合我国的教学情况和我们学习的实际情况进行了重写。感谢大家的支持，这篇文章<br />才能比较快的完成，这里也只是写下了我在学习计算机科学时的所思所想，很不成熟。<br />与原文相比增加了一些推荐参考书，删去了一些过陈旧的难以找到的材料。并且对一些<br />问题作了更为详细地阐述，也增加了一些新观点。希望大家多多讨论，改进不足，让我<br />们共同努力吧！</font>
		</p>
<img src ="http://www.cppblog.com/linhong34/aggbug/8020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-06-01 11:58 <a href="http://www.cppblog.com/linhong34/archive/2006/06/01/8020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>