﻿<?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>BlogJava-心远专栏-随笔分类-其它</title><link>http://www.blogjava.net/ywsky/category/17228.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 08:18:37 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 08:18:37 GMT</pubDate><ttl>60</ttl><item><title>TOMCAT：禁止TOMCAT目录访问</title><link>http://www.blogjava.net/ywsky/archive/2006/12/13/87524.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 13 Dec 2006 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/12/13/87524.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/87524.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/12/13/87524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/87524.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/87524.html</trackback:ping><description><![CDATA[
		<p align="left">在运行程序中，有时在IE上直接打入一个目录名，会将出现当前目录的所有文件，这样一来就大不安全了。为了禁止<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">TOMCAT</b><b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">目录访问</b>。我们可以在<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">TOMCAT</b>的服务中进行设置。</p>
		<p align="left">1：打开\<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Tomcat</b> 5.0\conf\web.xml;</p>
		<p align="left">2:在文件中：</p>
		<p align="left"> &lt;servlet&gt;<br />        &lt;servlet-name&gt;default&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;<br />          org.apache.catalina.servlets.DefaultServlet<br />        &lt;/servlet-class&gt;<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;debug&lt;/param-name&gt;<br />            &lt;param-value&gt;0&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br />        <strong>&lt;init-param&gt;<br />            &lt;param-name&gt;listings&lt;/param-name&gt;<br />            &lt;param-value&gt;false&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br /></strong>        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;</p>
		<p align="left">
				<strong>将上面的listings的属性设为false就行了。</strong>
		</p>
<img src ="http://www.blogjava.net/ywsky/aggbug/87524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-12-13 16:44 <a href="http://www.blogjava.net/ywsky/archive/2006/12/13/87524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之变量篇 </title><link>http://www.blogjava.net/ywsky/archive/2006/12/10/86668.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Sun, 10 Dec 2006 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/12/10/86668.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/86668.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/12/10/86668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/86668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/86668.html</trackback:ping><description><![CDATA[
		<p>1、关于变量的声名 <br />大家都知道javascript是可以隐式声名变量的。但要注意，隐式声名变量总是被创建为全局变量。看以下代码，情愿javascript语言强制声明变量。建议大家一定要var声明变量。 </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />function test(){   <br />    var a=222;   <br /> document.writeln(a);   <br />}   <br />test();   <br />document.writeln(a);   <br />&lt;/SCRIPT&gt;  </p>
		<p> </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />function test(){   <br />    a=222;   <br /> document.writeln(a);   <br />}   <br />test();   <br />document.writeln(a);   <br />&lt;/SCRIPT&gt;   </p>
		<p>2、关于变量的作用域 <br />猜猜以下代码输出什么。 </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var x='000';   <br />document.writeln(x);   <br />a();   <br />function a(){   <br />    var x='aaa';   <br /> function b(){   <br />     document.writeln(x);   <br />        var x='bbb';   <br />  document.writeln(x);   <br /> }   <br /> b();   <br />    document.writeln(x);   <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />如果你的答案是 000 undefined bbb aaa。恭喜，ok.当代码用到x变量时，先从函数块（权威指南中用调用对象来解释）中找，如果找不到，从上一级函数块找，直到找到，如果知道顶层代码（指var x='000';的位置）还没找到定义，代码会报未定义错误。</p>
		<p>改一下代码，得到 000 undefined 111 111 </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var x='000';   <br />document.writeln(x);   <br />a();   <br />function a(){   <br /> function b(){   <br />     document.writeln(x);   <br />  document.writeln(x);   <br /> }   <br /> document.writeln(x);   <br /> var x='111';   <br /> b();    <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />3、新的问题 <br />变量个作用域清楚了，注意上面的代码。为什么我的function a()定义以前就可以调用a函数了，而我的var x='111';前“不可以用”x啊？？？ <br />让我把我的理解一一道来 <br />首先：以下代码让我相信javascript有个预编译过程，不是完全按照顺序解释执行的。 </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />a();   <br />function a(){   <br />    alert();   <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />个人理解这个预编译过程不会象java/c#那样把代码编译成虚拟机认识的语言，更不会象vb，vc那样编译成更底层的语言。猜想只是把这个函数预装载到这段函数执行的全局环境中，在这个执行环境中，该函数被标识定义过，可以直接使用了。（看到网上很多人写的AOP的javascript实现,其实这个预编译过程才是翻译元数据最佳时候，可惜就javascript语言来讲，是有些落伍了）</p>
		<p>这个文章主要讲变量的一些问题。变量说了，为什么函数可以，我变量就不可以呢。 </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />document.writeln(a);   <br />var a=0;   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />为什么我要输出undefined呢？为什么我a就不可以预编译一把呢？ <br />大家看看以下两段代码会输出什么呢啊？？？ </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />document.writeln(a);   <br />a=0;   <br />&lt;/SCRIPT&gt;  </p>
		<p> </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />document.writeln(a);   <br />&lt;/SCRIPT&gt;   </p>
		<p>
				<br />可能你运行试了，可能你本来就知道，a未定义。哈哈哈，好了。 <br />现在我确信var a=0;被javascript解释器“预编译过”，至少是记录下来了。甚至把它的值设置为 undefined。“undefined”这个词名字取的很是让人误解，怎么能叫未定义呢，分明是javascript中所有变量的初始化值。关于null与undefined的比较我实在不愿提了。 <br />注意上面两段代码还反映一个现象。隐式声明的变量是在解释的时候才把自己定义为全局变量的。</p>
		<p>关于函数与变量javascript预编译的不同处理，大家可以与java class的加载过程比较下。java也是对基本类型设出值，对象为null的。（不往远扯了） <br />4、区别未定义变量和未附值变量 </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var a;   <br />document.writeln(a);   <br />&lt;/SCRIPT&gt;  </p>
		<p> </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />document.writeln(a);   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />未定义变量和未附值变量 权威指南中文版 定义的。通过第三条分析，我觉得变量就应该以 定义和未定义变量区别。未附值变量和undefined有点冲突，javascript不是强类型语言，没发附默认值，才来了个undefined。 <br />5、基本类型和引用类型 <br />熟悉java的朋友可能这部分很清楚。没啥 <br />说头。 <br />6、javascript的垃圾回收 <br />关于这部分内容一直没见着个权威说法。在javascript权威指南中有两小节提到这个问题。 <br />对于字符串、对象、数据这些没有固定大小，必须为它们动态的分配内存，但什么时候回收这些内存呢？javascript使用和java一样的garbage collection的方法。 </p>
		<p>代码<br />var s="hello";   <br />var u=s.toUpperCase();   <br />s=u;  </p>
		<p>
				<br />运行这段代码后，"hello"没有变量会再用到他，这是"hello"的存储空间的被垃圾回收了。对于javascript的垃圾回收，你唯一要关心的是，它一定会进行，不要对内存担心。 <br />注意，javascript不提供任何的强制垃圾回收或释放内存的运算附或语句。 <br />javascript的delete运算附和C++中的不同。 </p>
		<p>代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var o=new Object();   <br />o.name="zkj";   <br />o.age=25;   <br />o.bir=new Date();   <br />for(var key in o){   <br />document.writeln(key+':'+o[key]+'&lt;/br&gt;');   <br />}   <br />document.writeln('delete o.bir&lt;/br&gt;');   <br />delete o.bir;   <br />for(var key in o){   <br />document.writeln(key+':'+o[key]+'&lt;/br&gt;');   <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />7、作为属性的变量 <br />猜猜以下代码会输出什么。 </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var x=100;   <br />document.writeln(x);   <br />add(x);   <br />document.writeln('&lt;/br&gt;------------------------&lt;/br&gt;');   <br />var x=200;   <br />document.writeln(x);   <br />add(x);   <br />function add(x){   <br />    document.writeln(x);    <br />    var x=300;   <br />    document.writeln(x);    <br />    var x=400;   <br />    document.writeln(x);   <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />估计很多人能得出正确答案 <br />100 100 300 400 <br />------------------------ <br />200 200 300 400 <br />但这里我想引入 全局对象和调用对象的 概念（javascript权威指南是这么翻译滴） </p>
		<p>
				<br />代码<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />var x=100;   //我们在全局对象中加了个属性x. 对比   <br /> //var o=new Object();o.x=100;   <br />document.writeln(this.x);//用this访问全局对象   <br />add(this.x);//把全局对象的属性值传递对函数中   <br />document.writeln('&lt;/br&gt;------------------------&lt;/br&gt;');   <br />this.x=200;//把全局变量中的x属性修改掉   <br />document.writeln(window.x);   <br />add(window.x);   <br />function add(x){   <br />    //假设有个局部对象，调用对象，函数调用过程中的对象   <br />//  temp   temp.x=${传入的值}   <br />    document.writeln(x); //哦这打印的可是参数中的值，也就是temp.x=this.x   <br />//的值,   <br />    var x=300;//把调用对象变量的签名给覆盖了.   <br />    document.writeln(x); //打印修改过的值。 temp.x   <br /> var x=400;//temp.x=400  <br />    document.writeln(x);   <br />}   <br />&lt;/SCRIPT&gt;  </p>
		<p>
				<br />在函数的调用过程中，假设有个调用对象存在，把函数的参数，和函数内的临时变量当成这个调用对象的属性。当然这个调用对象的生命周期很短。 <br />注意，当我们访问全局变量的属性入x的时候，不必要用this.x 或window.x访问，当在有&lt;frame&gt;&lt;iframe&gt;的页面时会出现混淆。 <br />关于函数的详细讨论我后续会详细讨论。</p>
		<p> </p>
		<p>　　　　　　　　　　文章来自：<a href="http://www.javaeye.com/article/19506">http://www.javaeye.com/article/19506</a><br /></p>
<img src ="http://www.blogjava.net/ywsky/aggbug/86668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-12-10 13:16 <a href="http://www.blogjava.net/ywsky/archive/2006/12/10/86668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一位高级程序员给学弟学妹的建议[转贴]</title><link>http://www.blogjava.net/ywsky/archive/2006/11/29/84445.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 29 Nov 2006 15:30:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/29/84445.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/84445.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/29/84445.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/84445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/84445.html</trackback:ping><description><![CDATA[
		<pre> 我始终认为，对一个初学者来说，IT界的技术风潮是不可以追赶的，而且也没有能力<br />去追赶。我时常看见自己的DDMM们把课本扔了，去卖些价格不菲的诸如C#, VB.Net 这样的<br />大部头，这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里<br />面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样，“忽如一夜春风来，千树万<br />树梨花开”，结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生都去做W<br />eb 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的<br />时间多花一点在基础的课程上应该是可以走得更远的。 <br /><br />几个误区 　 <br />初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际<br />的例子来说明这些现象，你可以按部就班的看看自己是不是属于其中的一种或者几种： <br /><br /><br />认为计算机技术等于编程技术: <br />有些人即使没有这个想法，在潜意识中也有这样的冲动。让我奇怪的是，许多信息学院的<br />学生也有这样的念头。认为计算机专业就是编程专业，与编程无关的，或者不太相关的课<br />程他统统都不管，极端的学生只要书上没带“编程”两个字他就不看。 <br />其实编程只是计算机技术应用过程中一种复杂性最低的劳动，这就是为什么IT业最底层的<br />人是程序员（CODER）。计算机技术包括了多媒体，计算机网络，人工智能，模式识别，管<br />理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程<br />中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象<br />是，不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇<br />把编程这种劳动神秘化了。其实每一个程序员心里都明白，自己这些东西，学的时候并不<br />比其它专业难，所以自然也不会高档到哪里去。 <br /><br />咬文嚼字的孔已己作风: <br />       我见过一本女生的《计算机网络原理》教材，这个女生像小学生一样在书上划满了<br />横杠杠，笔记做得满满的，打印出来一定比教材还厚。我不明白的是，像计算机网络原理<br />这样的课程有必要做笔记？我们的应试教育的确害了不少学生，在上《原理》这一类课程<br />的时候许多学生像学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所<br />谓《原理》，即是需要掌握它为什么这样做，学习why，而不是how（怎样做）。极端认真<br />的学生背下以太网的网线最大长度，数据帧的长度，每个字段的意义，IP报头的格式等等<br />，但是忘了路由的原则，忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背<br />得滚瓜烂熟却等于什么也没学。 <br />       在学习编程的时候这些学生也是这样，他们确切的记得C++语法的各个细节。看完<br />了C++教程后看《Thinking in C++》（确实是好书），《Inside C++》，《C++ referenc<br />e》，this C++, that C++……，然后是网上各种各样的关于C++语法的奇闻逸事，然后发<br />现自己又忘了C++的一些语法，最后回头继续恶补…。有个师弟就跟我说：“C++ 太难了，<br />学了这里忘了那里，学了继承忘了模板。”我的回答道：“你不去学就容易了”。我并没<br />有教坏他，只是告诉他，死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无<br />意义。你根本不需要对的C++语法太关心，动手编程就是了，有不记得的地方一查MSDN就立<br />马搞定。我有个结论就是，实际的开发过程中对程序语法的了解是最微不足道的知识。这<br />是为什么我在为同学用Basic（我以前从没有学过它）写一个小程序的时候，只花了半个小<br />时看了看语法，然后再用半个小时完成了程序，而一个小时后我又完全忘记了Basic 的所<br />有关键字。 <br /><br />不顾基础，盲目追赶时髦技术： <br />      终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来，变成钱。这<br />种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的，而且IT技术进步是<br />如此的快，不跟进就是失业。但是对于初学者来说（尤其是时间充裕的大中专在校生），<br />这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够<br />的时间沉下心来学习基础性的东西，学习why 而不是how。时髦的技术往往容易掌握，而且<br />越来越容易掌握，这是商业利益的驱使，为了最大化的降低软件开发的成本。但在IT领域<br />内的现实就是这样，越容易掌握的东西，学习的人越多，而且淘汰得越快。每一次新的技<br />术出来，都有许多初学者跟进，这些初学者由于缺乏必要的基础而使得自己在跟进的过程<br />中花费大量的时间，而等他学会了，这种技术也快淘汰了。基础的课程，比方数据结构，<br />操作系统原理等等虽然不能让你立马就实现一个linux（这是许多人嘲笑理论课程无用的原<br />因），但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技<br />术（比方Win32 SDK 程序的设计，DDK的编程）来说甚至是不可或缺的。 <br />       一个活生生的例子是我和我的一个同学，在大一时我还找不到开机按纽，他已经会<br />写些简单的汇编程序了。我把大二的所有时间花在了汇编，计算机体系结构，数据结构，<br />操作系统原理等等这些课程的学习上，而他则开始学习HTML和VB，并追赶ASP的潮流。大三<br />的时候我开始学习Windows 操作系统原理，学习SDK编程，时间是漫长的，这时我才能够用<br />VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如<br />何创建对话框而懊恼不已，但临到毕业才发现自己的选择是何等的正确。和我谈判的公司<br />开出的薪水是他的两倍还多。下面有一个不很恰当的比方：假设学习VB编程需要4个月，学<br />习基础课程和VC的程序设计需要1年。那么如果你先学VB，再来学习后者，时间不会减少，<br />还是1年，而反过来，如果先学习后者，再来学VB，也许你只需要1个星期就能学得非常熟<br />练。 <br /><br />几个重要的基础课程 　 <br />     如果你是学生，或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建<br />议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目，这些书应该<br />都还可以在书店买到。说实在的，我在读其他人的文章时最大的心愿就是希望作者列出一<br />个书单。 <br /><br />     大学英语－不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不<br />可想象的。中文的翻译往往在猴年马月才会出来，而现在的许多出版社干脆就直接把E文印<br />刷上去。学习的方法是强迫自己看原版的教材，开始会看不懂，用多了自然熟练。吃得苦<br />下得狠心绝对是任何行业都需要的品质。 <br /><br />    计算机体系结构和汇编语言－关于体系结构的书遍地都是，而且也大同小异，倒是汇<br />编有一本非常好的书《80x86汇编语言程序设计教程》（清华大学出版社，黑色封面，杨季<br />文著）。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一<br />些东西的时候会觉得是在看天书。<br />    计算机操作系统原理－我们的开发总是在特定的操作系统上进行，如果不是，只有一<br />种可能：你在自己实现一个操作系统。无论如何，操作系统原理是必读的。这就象我们为<br />一个芯片制作外围设备时，芯片基本的工作时序是必需了解的。这一类书也很多，我没有<br />发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windo<br />ws 2000》(微软出版社，我看的是E文版的，中文的书名想必是Windows 2000 技术内幕之<br />类吧)。关于学习它的必要性，ZDNET上的另一篇文章已经有过论述。 <br />     数据结构和算法－这门课程能够决定一个人程序设计水平的高低，是一门核心课程。<br />我首选的是清华版的（朱战立，刘天时）。很多人喜欢买C++版的，但我觉得没有必要。C<br />++的语法让算法实现过程变得复杂多了，而且许多老师喜欢用模块这一东西让算法变得更<br />复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。 <br />     软件工程－这门课程是越到后来就越发现它的重要，虽然刚开始看时就象看马哲一样<br />不知所云。我的建议是看《实用软件工程》（黄色，清华）。不要花太多的时间去记条条<br />框框，看不懂就跳过去。在每次自己完成了一个软件设计任务（不管是练习还是工作）以<br />后再来回顾回顾，每次都会有收获。 <br />Windows 程序设计－《北京大学出版社，Petzold著》我建议任何企图设计Windows 程序的<br />人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本<br />书的后面读。在这本书中，没有C++，没有GUI，没有控件。有的就是如何用原始的C语言来<br />完成Windows 程序设计。在学完了它以后，你才会发现VC其实是很容易学的。千万不要在<br />没有看完这本书以前提前学习VC，你最好碰都不要碰。我知道的许多名校甚至都已经用它<br />作为教材进行授课。可见其重要。 <br />     上面的几门课程我认为是必学的重要课程（如果你想做Windows 程序员）。 <br />     对于其它的课程有这样简单的选择方法：如果你是计算机系的，请学好你所有的专业<br />基础课。如果不是，请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了<br />，请翻到书的最后，看看它的参考文献，找到它们并学习它们，再回头看这本书。如果一<br />本书的书名中带有“原理”两个字，你一定不要去记忆它其中的细节，你应该以一天至少<br />50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。 <br />你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。 <br /><br />日三省乎己　　　　 <br />每天读的书太多，容易让人迷失方向。一定要在每天晚上想想自己学了些什么，还有些什<br />么相关的东西需要掌握，自己对什么最感兴趣，在一本书上花的时间太长还是不够等等。<br />同时也应该多想想未来最有可能出现的应用，这样能够让你不是追赶技术潮流而是引领技<br />术潮流。同时，努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这<br />样做能够让你真正成为一个软件“研发者”而不仅仅是一个CODER。 <br /><br />把最多的时间花在学习上 <br />     这是对初学者最后的忠告。把每个星期玩CS或者CS的时间压缩到最少，不玩它们是最<br />好的。同时，如果你的ASP技术已经能够来钱，甚至有公司请你兼职的话，这就证明你的天<br />分能够保证你在努力的学习之后取得更好的收益，你应该去做更复杂的东西。眼光放长远<br />一些，这无论是对谁都是适用的。 <br /><br />相信你已经能够决定是否学习C＃或者什么时候去学它了。</pre>
<img src ="http://www.blogjava.net/ywsky/aggbug/84445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-29 23:30 <a href="http://www.blogjava.net/ywsky/archive/2006/11/29/84445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AdParter让您的网页内容也可以赚钱</title><link>http://www.blogjava.net/ywsky/archive/2006/11/25/83521.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Sat, 25 Nov 2006 13:36:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/25/83521.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/83521.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/25/83521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/83521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/83521.html</trackback:ping><description><![CDATA[
		<b>文链广告名词解释</b>：文章链接式广告，即将文章内容中出现的关键词自动生成广告链接，当鼠标放在关键词链接上即出现广告窗体。
<p><b>AdParter分成机制</b>：AdParter按竞价广告单次有效点击价格与站长分成，幅度为：<span class="style6">50%-90%</span>、站长单次最低收入0.05元<span style="text-decoration: underline;">.</span></p><p><a href="http://www.adparter.com/siteadmin/siteadminpanel.jsp?page=/siteadmin/webmasterregist.jsp?g=da1de550e1953709" _fcksavedurl="http://www.adparter.com/siteadmin/siteadminpanel.jsp?page=/siteadmin/webmasterregist.jsp?g=da1de550e1953709"><img src="http://www.adparter.com/logo.jpg" _fcksavedurl="http://www.adparter.com/logo.jpg" alt="" /></a></p><img src ="http://www.blogjava.net/ywsky/aggbug/83521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-25 21:36 <a href="http://www.blogjava.net/ywsky/archive/2006/11/25/83521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 比Google还先进？体验微软版“虚拟地球”</title><link>http://www.blogjava.net/ywsky/archive/2006/11/19/82021.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Sun, 19 Nov 2006 04:44:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/19/82021.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/82021.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/19/82021.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/82021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/82021.html</trackback:ping><description><![CDATA[
		<p style="text-indent: 2em;">一谈起“虚拟地球”，恐怕大多数朋友最先想到的就是“Google
Earth”了。无疑，作为虚拟地图服务的始祖，Google
Earth无论在界面设计，还是使用感受方面都给我们留下了很深的印象。而就在昨天，另一家软件巨头公司 ——
微软，也开始对外宣布旗下的一款“虚拟地球”产品问世，这就是 —— 微软的Virtual Earth。 </p>
		<p style="text-indent: 2em;">相比Google Earth，微软的这款“虚拟地球”可不是什么单独运行的软件，而是架构于Live Search上面的一个服务网页。而这样设计的好处也是显而易见的，那就是我们在任意一台电脑上都可以方便地使用Virtual Earth了。 </p>
		<p style="text-indent: 2em;">
				<strong>一、 外观简介 </strong>
		</p>
		<p style="text-indent: 2em;">1. 外观界面速览 </p>
		<p style="text-indent: 2em;"> </p>
		<p style="text-indent: 2em;">当我们在浏览器中输入“ <a href="http://maps.live.com/" target="_blank">http://maps.live.com/ </a>”这个网址后回车，便可以看到“Virtual Earth”的主页面了，如图1所示。 </p>
		<p style="text-indent: 2em;">和
其他Windows Live产品一样，“Virtual
Earth”的背景也是由一块非常漂亮的极光蓝组成。同时，它的界面设计也是相当简洁，所有功能都被划分到页面上方的搜索框和左侧的控制手柄中。而且，由
于这里的功能和咱们以前用过的Google Earth完全一样，所以，相信大家上手应该是没有什么问题。 </p>
		<p style="text-indent: 2em;"> </p>
		<center>
				<img src="http://cimg2.163.com/catchpic/8/87/87B9B171E84006BDC54DAB58F4B1184D.jpg" alt="" border="0" />
		</center>
		<center>图1 </center>
		<p style="text-indent: 2em;"> </p>
		<p style="text-indent: 2em;">
				<strong>2. 多样的地图浏览模式 </strong>
		</p>
		<p style="text-indent: 2em;">而与Google Earth不同的是，Virtual Earth并没有完全采用卫星地图作为演示载体，而是将常规地图、卫星地图同时放置在了控制手柄上，用户可以根据自己的需要自行选用，而且切换起来十分迅速，如图2所示。 </p>
		<p style="text-indent: 2em;"> </p>
		<center>
				<img src="http://cimg2.163.com/catchpic/0/04/0423FA8A4BF1D6225849C4D3E831232A.jpg" alt="" border="0" />
		</center>
		<center>图2 </center>
		<center>
				<center>
						<strong>3. 航拍、卫星巧结合 </strong>大
家知道，Google
Earth的最大一个特点就是能够提供大量清晰度极高的卫星图片，甚至我们都能在这些图片上轻易地看到公路上的汽车。而相比之下，Virtual
Earth提供的图片精度显然与Google不在一个档次。当我们试着将美国的第一大城市 ——
纽约放大到最大精度时，发现仍然有很多地方无法显示出高精度地图，甚至在一些地方还能清楚地看到彩色图片与黑白图片之间明显的接缝，如图3所示。看来，
Virtual Earth要完全赶上Google，还需要在卫星地图的数量方面下大功夫才行。 </center>
				<p> </p>
				<p style="text-indent: 2em;"> </p>
				<p style="text-indent: 2em;"> </p>
				<center>
						<img src="http://cimg2.163.com/catchpic/5/5C/5C15B60E937B8B0D587382AA5FF845B6.jpg" alt="" border="0" />
				</center>
				<center>图3 </center>
				<p style="text-indent: 2em;">不过，微软毕竟还是微软，这点小问题可是难不倒它的。在处理自己的卫星地图不丰富这个缺点时，它很巧妙地将航拍图片与卫星地图结合了起来。当地图被放大到一定精度时，控制手柄中的“航拍模式”便被自动激活了。 </p>
				<p style="text-indent: 2em;">其实，这个模式使用起来也很简单，只要我们点击一下“航拍模式”按钮，Virtual Earth便会马上将以当前位置为中心的最近九张航拍地图整理出来，以九宫格的形式显示在按钮右侧，而我们只需在选好的图片上点击，便能迅速打开这张地图了，如图4所示。 </p>
				<p style="text-indent: 2em;"> </p>
				<center>
						<img src="http://cimg2.163.com/catchpic/7/71/71C7F28EE357EBA6223B2136EB86D03C.jpg" alt="" border="0" />
				</center>
				<center>图4<br /><p style="text-indent: 2em;"><strong>二、 出色的浏览控制 </strong></p><p style="text-indent: 2em;">使用过Google Earth的朋友一定知道，Google Earth的浏览控制功能十分丰富，我们除了可以使用固定在地图上方的控制手柄之外，还可以直接利用鼠标快速完成一些简单任务。而在Virtual Earth中，鼠标同样具有着重要作用。 </p><p style="text-indent: 2em;"><strong>1. 地图的放大与缩小 </strong>在地图的浏览过程中，最常用到的功能就是放大与缩小了。而在Virtual Earth中，我们除了可以方便地使用鼠标滚轮快速缩放之外，还可以通过双击的方式手动放大鼠标所在区域。而如果再配合上控制手柄中的缩放滑杆，整个地图的缩放操作将变得十分方便。 </p><p style="text-indent: 2em;"> </p><p style="text-indent: 2em;"><strong>2. 地图的移动 </strong></p><p style="text-indent: 2em;">相比放大与缩小，地图的移动就显得更为简单了。和同类软件不同的是，Virtual Earth并没有将地图移动工具放置到控制手柄上（事实上，也很少有人会使用手柄来完成这个操作），而是直接将它集成在了鼠标上。 </p><p style="text-indent: 2em;">我们只需用鼠标在地图上拖拽，相应的画面便会随之发生变化。甚至，整个拖动过程也和Google Earth一样，颇具动画效果，使用起来感觉十分逼真。</p><p style="text-indent: 2em;"><strong>三、 3D视图模式 </strong></p><p style="text-indent: 2em;"><strong>1. 3D视图的启动 </strong></p><p style="text-indent: 2em;"> </p><p style="text-indent: 2em;">而
要说Virtual
Earth最有特点的一项，恐怕就是它的3D视图了。和航拍模式不同，3D视图下的每个建筑物，都是电脑根据实际尺寸自动合成的。我们不仅可以任意改变观
看的角度，甚至还可以清楚地知道建筑物之间的比例，而这点也正是卫星地图和航拍地图难以企及的，倒有点像咱们小时候玩过的积木，如图5所示。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/C/C5/C5AD7D8D72A84F4E4D91245A693F03C8.jpg" alt="" border="0" /></center><center>图5 </center><p style="text-indent: 2em;">要
切换到3D模式非常简单，我们只要在控制手柄处点击一下“3D”按钮，再按照屏幕的提示，
下载并安装好一个3D插件就可以了。而当插件安装完毕之后，Virtual
Earth会首先弹出一个选项页面，让我们选择一下3D模型的渲染级别，如图6所示。其实这个选项的含义非常简单，从左到右分别是“最低精度”、“中等精
度”和“最高精度”，而它们之间的区别除了效果不同之外，对电脑的要求也是节节攀升的。 </p><p style="text-indent: 2em;">【小提示】 Virtual Earth的3D插件目前仅能安装在英文版操作系统中，这点请大家注意。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/B/BE/BEF4436CC9B93509457A72194F331DF2.jpg" alt="" border="0" /></center><center>图6 </center><p style="text-indent: 2em;"><strong>2. 更改3D视角 </strong>由于3D视图中的建筑物都是由计算机实时渲染出来的，因此我们就有了更多的视角变化。相信大家已经注意到，在3D视图模式下，画面中除了原有的控制手柄之外，还多出了一个方向手柄。其实，这正是Virtual Earth在3D视图下所特有的视角控制器，如图7所示。 </p><p style="text-indent: 2em;"> </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/2/2E/2E4FD8AD50759EEEC5640DAC9E0D8F00.jpg" alt="" border="0" /></center><center>图7 </center><center><p style="text-indent: 2em;">而除了上面这种任意视角之外，Virtual Earth还为我们预设了三档默认视角，被顺序地放置在控制手柄上，使用起来非常方便，如图8所示。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/6/68/681A21911BB8AD8742BE0998A3D23EE8.jpg" alt="" border="0" /></center><center>图8 </center><p style="text-indent: 2em;"><strong>3. 画质对比 </strong></p><p style="text-indent: 2em;"> </p><p style="text-indent: 2em;">不过说了半天，这些由计算机渲染出来的地图究竟效果如何呢？耳听为虚、眼见为实，笔者这里找到了一组同一地点拍摄的航拍图片和渲染图片，效果如何，还是请您自己来看吧，如图9所示。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/E/E5/E504698BF8403EA0C618A6C6FBDB05E0.jpg" alt="" border="0" /></center><center>图9</center><center><p style="text-indent: 2em;"><strong>四、 更多有趣小功能 </strong></p><p style="text-indent: 2em;"><strong>1. 交通查询 </strong></p><p style="text-indent: 2em;">当
然，除了上面所说的这些功能之外，Virtual Earth的附属功能也一点不比Google
Earth差。除了最基本的地址搜索服务，Virtual Earth还有一个非常实用的小功能 ——
交通查询。就像我们好多司机朋友爱听路况广播一样，在Virtual Earth上也提供了一些事故通报和路况信息等等内容。 </p><p style="text-indent: 2em;">其中，事故通报的颜色非常醒目，在图中一眼就能看到，而我们只要将鼠标悬停于通报图标之上，便能看到它的具体内容了，如图10所示。只不过，有些遗憾的是，该项功能目前还仅能在美国的一些城市中使用，而且数量也不是很多。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/7/78/782B13262B4F186B55B6AA9830FCF05E.jpg" alt="" border="0" /></center><center>图10 </center><p style="text-indent: 2em;"><strong>2. 路线查询 </strong></p><p style="text-indent: 2em;"> </p><p style="text-indent: 2em;">除
了交通查询之外，Virtual Earth还有另外一项非常实用的功能 —— 路线查询。点击“Driving
directions”按钮之后，Virtual
Earth便会在页面左侧打开一个对话框，我们只需将起始地点和目的地点输入其中，再选择好是希望查询最短行驶时间还是最短路程之后，点击“Get
directions”按钮即可开始查询。 </p><p style="text-indent: 2em;">而如果您给出的地址信息不够详细，Virtual Earth还会弹出几个更详细的地址供您选择。最后，查询出来的路线会用一条醒目的颜色标识出来，一目了然，如图11所示。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/2/27/27BA82E9DD93209BA959E4D6881E3DD7.jpg" alt="" border="0" /></center><center>图11 </center><strong>3. 所在地查询 </strong><p style="text-indent: 2em;">想
不想让电脑自动将您当前的所在地标识出来？呵呵，这可不是什么天方夜潭，在点击了主界面上 的“Locate me”按钮之后，Virtual
Earth便能直接将您当前所处的位置显示在了图中。其实，不是Virtual
Earth具有什么特异功能，可以得知我们当前所处的位置，而是它能够通过解析我们上网的IP地址来完成所在地定位。 </p><p style="text-indent: 2em;">所以，如果您现在正在使用代理服务器，或者打开了什么网络加速软件的话，那么这项功能可就真的失效了，如图12所示。 </p><p style="text-indent: 2em;"> </p><center><img src="http://cimg2.163.com/catchpic/E/ED/ED472510ABF3D6B6205E093DD86074D7.jpg" alt="" border="0" /></center><center>图12 </center><strong>4. 其他功能 </strong><p style="text-indent: 2em;">而除此之外，Virtual Earth还允许我们发布或打印出当前地图，具体操作也与其他软件完全一样，只不过限于篇幅有限，笔者在这里就不再赘述了，大家可以自己去尝试一下。 </p><p style="text-indent: 2em;"><strong>写在最后 </strong></p><p style="text-indent: 2em;">怎么样？看到这里，相信您已经对微软的这款Virtual Earth有了个大体印象了。就笔者这段时间的试用情况来说，Virtual Earth相比Google Earth，明显在功能方面占了上风。但图片数量过少，精度太低的问题却一直困扰着它。 </p><p style="text-indent: 2em;">而
且，由于目前好多服务都仅限于北美地区，甚至就连那个3D视图插件也只能安装在英文版操作 系统中，所有的这些问题无疑都严重阻碍了Virtual
Earth的快速发展。而恐怕只有解决了这些问题之后，Virtual Earth才能真正与Google Earth一决高下。</p></center></center></center>
		</center>
<img src ="http://www.blogjava.net/ywsky/aggbug/82021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-19 12:44 <a href="http://www.blogjava.net/ywsky/archive/2006/11/19/82021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>