??xml version="1.0" encoding="utf-8" standalone="yes"?>精品在线观看视频,欧美精品一区二区三区久久久竹菊 ,久久亚洲精华国产精华液http://blogjava.net/wilsonyq/category/50765.htmlzh-cnSun, 27 Sep 2015 00:11:49 GMTSun, 27 Sep 2015 00:11:49 GMT60webservice 参考文?/title><link>http://www.aygfsteel.com/wilsonyq/articles/webservice.html</link><dc:creator>wilsonyq</dc:creator><author>wilsonyq</author><pubDate>Fri, 18 Sep 2015 10:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/wilsonyq/articles/webservice.html</guid><wfw:comment>http://www.aygfsteel.com/wilsonyq/comments/427391.html</wfw:comment><comments>http://www.aygfsteel.com/wilsonyq/articles/webservice.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wilsonyq/comments/commentRss/427391.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wilsonyq/services/trackbacks/427391.html</trackback:ping><description><![CDATA[<div>http://my.oschina.net/u/658145/blog/111631</div><img src ="http://www.aygfsteel.com/wilsonyq/aggbug/427391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wilsonyq/" target="_blank">wilsonyq</a> 2015-09-18 18:14 <a href="http://www.aygfsteel.com/wilsonyq/articles/webservice.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【{】tomcat 6 debug jpda 单配|?/title><link>http://www.aygfsteel.com/wilsonyq/articles/418961.html</link><dc:creator>wilsonyq</dc:creator><author>wilsonyq</author><pubDate>Thu, 23 Oct 2014 02:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/wilsonyq/articles/418961.html</guid><wfw:comment>http://www.aygfsteel.com/wilsonyq/comments/418961.html</wfw:comment><comments>http://www.aygfsteel.com/wilsonyq/articles/418961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wilsonyq/comments/commentRss/418961.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wilsonyq/services/trackbacks/418961.html</trackback:ping><description><![CDATA[<span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">今日在tomcat下开发,为避免在没有改变javaҎ(gu)和类名的情况下重新加载整个webappQ查阅了些资料后需要启用jvm的jpdaQ?nbsp; 同时要能q程debugQ?/span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">研究了半天发现其实很单,人家已经做的很好了;只需要加jpda 4个字母就可以了;</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">修改startup.bat 扑ֈcall "%EXECUTABLE%" start %CMD_LINE_ARGS% 改ؓ(f)call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS% 卛_Q这样在java的方法里面修改代码就不需要费时费力的重新加蝲上下文,也不需要重新登录?/span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">如果需要修改debug端口Q(默认8000Q,改catalina.bat 中set JPDA_ADDRESS=8000 处;</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">启动命o(h)方式如下Q?/span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo Usage:  catalina ( commands ... )</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo commands:</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   debug             Start Catalina in a debugger</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   debug -security   Debug Catalina with a security manager</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   jpda start        Start Catalina under JPDA debugger</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   run               Start Catalina in the current window</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   run -security     Start in the current window with security manager</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   start             Start Catalina in a separate window</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   start -security   Start in a separate window with security manager</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   stop              Stop Catalina</span><br style="color: #303030; font-family: Verdana, Helvetica, Arial; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;" /><span style="color: #303030; font-family: 'Lucida Console'; font-size: 12px; line-height: 18px; text-align: justify; background-color: #ffffff;">echo   version           What version of tomcat are you running?</span><img src ="http://www.aygfsteel.com/wilsonyq/aggbug/418961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wilsonyq/" target="_blank">wilsonyq</a> 2014-10-23 10:50 <a href="http://www.aygfsteel.com/wilsonyq/articles/418961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【{】JAVAEE 常见性能问题解决手册http://www.aygfsteel.com/wilsonyq/articles/418933.htmlwilsonyqwilsonyqWed, 22 Oct 2014 05:55:00 GMThttp://www.aygfsteel.com/wilsonyq/articles/418933.htmlhttp://www.aygfsteel.com/wilsonyq/comments/418933.htmlhttp://www.aygfsteel.com/wilsonyq/articles/418933.html#Feedback0http://www.aygfsteel.com/wilsonyq/comments/commentRss/418933.htmlhttp://www.aygfsteel.com/wilsonyq/services/trackbacks/418933.html阅读全文

wilsonyq 2014-10-22 13:55 发表评论
]]>
在Myeclipse安装Eclipse Color Themes插ghttp://www.aygfsteel.com/wilsonyq/articles/400322.htmlwilsonyqwilsonyqFri, 07 Jun 2013 01:25:00 GMThttp://www.aygfsteel.com/wilsonyq/articles/400322.htmlhttp://www.aygfsteel.com/wilsonyq/comments/400322.htmlhttp://www.aygfsteel.com/wilsonyq/articles/400322.html#Feedback0http://www.aygfsteel.com/wilsonyq/comments/commentRss/400322.htmlhttp://www.aygfsteel.com/wilsonyq/services/trackbacks/400322.html1、去 http://eclipsecolorthemes.org/?view=theme&id=1下蝲你需要的颜色Q根?span style="font-family: Comic Sans MS; color: rgb(255,0,0)">id不同Q配色方案不一栗?/span>

2、下载页面右侧的“Eclipse Preferences(EPF)-for Eclipse Import”。直接右键另存ؓ(f)Q就可以下蝲到这个配色方案的epf文g?/span>

3、将该epf文g存放在系l某目录下,我放在了E:\eclipse-color-themes?/span>

打开myeclipse->File->Import->General->Preferences.打开?nbsp;E:\eclipse-color-themes\theme-1.epf写入Q其他项默认。点d成就ok了!

------------------------------------------------------------------------

Eclipse默认配色的恢复方法:(x)

Ҏ(gu)1Q?/strong>

?nbsp;myeclipse的工作空间目录,也就是workspaceQ找到这个目录下“.metadata\.plugins\org.eclipse.core.runtime”Q这里也?setting文g夹,把里面文件全部删除;换成同事的默认的配色Ҏ(gu)?setting文g夏V?/span>

Ҏ(gu)2Q?/strong>

如果你在workspace中没有什么重要的东西Q可以切换workspace或者将整个workspace 下的.metadata删除Q就可以恢复?/span>

原文地址Q?a >http://blog.csdn.net/jkunzhang/article/details/8027778



wilsonyq 2013-06-07 09:25 发表评论
]]>
关于Java 关于Stringhttp://www.aygfsteel.com/wilsonyq/articles/String.htmlwilsonyqwilsonyqTue, 14 Feb 2012 05:45:00 GMThttp://www.aygfsteel.com/wilsonyq/articles/String.htmlhttp://www.aygfsteel.com/wilsonyq/comments/369933.htmlhttp://www.aygfsteel.com/wilsonyq/articles/String.html#Feedback0http://www.aygfsteel.com/wilsonyq/comments/commentRss/369933.htmlhttp://www.aygfsteel.com/wilsonyq/services/trackbacks/369933.html

对于q个pd里的问题Q每个学Java的h都应该搞懂。当?dng)如果只是学Java玩玩无所谓了。如果你认ؓ(f)自己已经越初学者了Q却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老脓(chung)?nbsp;

 

问题一Q我声明了什么! 

 

String s = "Hello world!"; 

 

许多人都做过q样的事情,但是Q我们到底声明了什么?回答通常是:(x)一个StringQ内Ҏ(gu)“Hello world!”。这hp的回答通常是概念不清的Ҏ(gu)。如果要准确的回{,一半的人大概会(x)回答错误?nbsp;

q?个语句声明的是一个指向对象的引用Q名?#8220;s”Q可以指向类型ؓ(f)String的Q何对象,目前指向"Hello world!"q个Stringcd的对象。这是真正发生的事情。我们ƈ没有声明一个String对象Q我们只是声明了一个只能指向String对象?引用变量。所以,如果在刚才那句语句后面,如果再运行一句:(x) 

 

String string = s; 

 

我们是声明了另外一个只能指向String对象的引用,名ؓ(f)stringQƈ没有W二个对象生,stringq是指向原来那个对象Q也是Q和s指向同一个对象?nbsp;

 

问题二:(x)"=="和equalsҎ(gu)I竟有什么区别? 

 

==操作W专门用来比较变量的值是否相{。比较好理解的一Ҏ(gu)Q?nbsp;

int a=10; 

int b=10; 

则a==b是true?nbsp;

但不好理解的地方是:(x) 

String a=new String("foo"); 

String b=new String("foo"); 

则a==b返回false?nbsp;

 

?据前一帖说q,对象变量其实是一个引用,它们的值是指向对象所在的内存地址Q而不是对象本w。a和b都用了new操作W,意味着在内存中生两个内??foo"的字W串Q既然是“两个”Q它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的|所以?=="操作W,l果?x)?false。诚?dng)a和b所指的对象Q它们的内容都是"foo"Q应该是“相等”Q但?=操作Wƈ不涉?qing)到对象内容的比较?nbsp;

对象内容的比较,正是equalsҎ(gu)做的事?nbsp;

 

看一下Object对象的equalsҎ(gu)是如何实现的Q?nbsp;

boolean equals(Object o){ 

 

return this==o; 

 

Object 对象默认使用?=操作W。所以如果你自创的类没有覆盖equalsҎ(gu)Q那你的cM用equals和?=?x)得到同L(fng)l果。同样也可以?出,Object的equalsҎ(gu)没有辑ֈequalsҎ(gu)应该辑ֈ的目标:(x)比较两个对象内容是否相等。因为答案应该由cȝ创徏者决定,所?Object把这个Q务留l了cȝ创徏者?nbsp;

 

看一下一个极端的c:(x) 

Class Monster{ 

private String content; 

... 

boolean equals(Object another){ return true;} 

 

我覆盖了equalsҎ(gu)。这个实C(x)D无论Monster实例内容如何Q它们之间的比较永远q回true?nbsp;

 

所 以当你是用equalsҎ(gu)判断对象的内Ҏ(gu)否相{,请不要想当然。因为可能你认ؓ(f)相等Q而这个类的作者不q样认ؓ(f)Q而类的equalsҎ(gu)的实现是׃ 掌握的。如果你需要用equalsҎ(gu)Q或者用Q何基于散列码的集合(HashSet,HashMap,HashTableQ,请察看一下java doc以确认这个类的equals逻辑是如何实现的?nbsp;

 

问题三:(x)String到底变了没有Q?nbsp;

 

没有。因为String被设计成不可?immutable)c,所以它的所有对象都是不可变对象。请看下列代码:(x) 

 

String s = "Hello"; 

s = s + " world!"; 

 

s 所指向的对象是否改变了呢?从本pdW一的l论很容易导个结论。我们来看看发生了什么事情。在q段代码中,s原先指向一个String对象Q内??Hello"Q然后我们对sq行?操作Q那么s所指向的那个对象是否发生了改变呢?{案是没有。这Ӟs不指向原来那个对象了Q而指向了另一?String对象Q内容ؓ(f)"Hello world!"Q原来那个对象还存在于内存之中,只是sq个引用变量不再指向它了?nbsp;

通过上面的说 明,我们很容易导出另一个结论,如果l常对字W串q行各种各样的修改,或者说Q不可预见的修改Q那么用String来代表字W串的话?x)引起很大的内存开 销。因为String对象建立之后不能再改变,所以对于每一个不同的字符Ԍ都需要一个String对象来表C。这Ӟ应该考虑使用 StringBufferc,它允怿改,而不是每个不同的字符串都要生成一个新的对象。ƈ且,q两U类的对象{换十分容易?nbsp;

同时Q我们还可以知道Q如果要使用内容相同的字W串Q不必每ơ都new一个String。例如我们要在构造器中对一个名叫s的String引用变量q行初始化,把它讄为初始|应当q样做:(x) 

public class Demo { 

private String s; 

... 

public Demo { 

s = "Initial Value"; 

... 

而非 

s = new String("Initial Value"); 

?者每ơ都?x)调用构造器Q生成新对象Q性能低下且内存开销大,q且没有意义Q因为String对象不可改变Q所以对于内容相同的字符Ԍ只要一?String对象来表C就可以了。也pQ多ơ调用上面的构造器创徏多个对象Q他们的Stringcd属性s都指向同一个对象?nbsp;

上面的结Zq样一个事实:(x)对于字符串常量,如果内容相同QJava认ؓ(f)它们代表同一个String对象。而用关键字new调用构造器QL?x)创Z个新的对象,无论内容是否相同?nbsp;

?于ؓ(f)什么要把Stringc设计成不可变类Q是它的用途决定的。其实不只StringQ很多Java标准cd中的c都是不可变的。在开发一个系l的时候, 我们有时候也需要设计不可变c,来传递一l相关的|q也是面向对象思想的体现。不可变cL一些优点,比如因ؓ(f)它的对象是只ȝQ所以多U程q发讉K也不 ?x)有M问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表Q可能会(x)造成性能上的问题。所以Java标准cdq提供了一个可变版本,?StringBuffer?nbsp;

 

问题四:(x)final关键字到底修C什么? 

 

final使得被修饰的变量"不变"Q但是由于对象型变量的本质是“引用”Q?#8220;不变”也有了两U含义:(x)引用本n的不变,和引用指向的对象不变?nbsp;

 

引用本n的不变:(x) 

final StringBuffer a=new StringBuffer("immutable"); 

final StringBuffer b=new StringBuffer("not immutable"); 

a=b;//~译期错?nbsp;

 

引用指向的对象不变:(x) 

final StringBuffer a=new StringBuffer("immutable"); 

a.append(" broken!"); //~译通过 

 

?见,final只对引用?#8220;?#8221;(也即它所指向的那个对象的内存地址)有效Q它q引用只能指向初始指向的那个对象,改变它的指向?x)导致编译期错误。至?它所指向的对象的变化Qfinal是不负责的。这很类?=操作W:(x)==操作W只负责引用?#8220;?#8221;相等Q至于这个地址所指向的对象内Ҏ(gu)否相{,==操作 W是不管的?nbsp;

 

理解final问题有很重要的含义。许多程序漏z都Z?---final只能保证引用永远指向固定?象,不能保证那个对象的状态不变。在多线E的操作?一个对象会(x)被多个线E共享或修改Q一个线E对对象无意识的修改可能?x)导致另一个用此对象的线E崩 溃。一个错误的解决Ҏ(gu)是在此对象新徏的时候把它声明ؓ(f)finalQ意图得它“永远不变”。其实那是徒劳的?nbsp;

 

问题五:(x)到底要怎么样初始化Q?nbsp;

 

本问题讨论变量的初始化,所以先来看一下Java中有哪些U类的变量?nbsp;

1. cȝ属性,或者叫值域 

2. Ҏ(gu)里的局部变?nbsp;

3. Ҏ(gu)的参?nbsp;

 

对于W一U变量,Java虚拟Z(x)自动q行初始化。如果给Z初始|则初始化初始倹{如果没有给出,则把它初始化cd变量的默认初始倹{?nbsp;

 

intcd变量默认初始gؓ(f)0 

floatcd变量默认初始gؓ(f)0.0f 

doublecd变量默认初始gؓ(f)0.0 

booleancd变量默认初始gؓ(f)false 

charcd变量默认初始gؓ(f)0(ASCII? 

longcd变量默认初始gؓ(f)0 

所有对象引用类型变量默认初始gؓ(f)nullQ即不指向Q何对象。注意数l本w也是对象,所以没有初始化的数l引用在自动初始化后其g是null?nbsp;

 

?于两U不同的cd性,static属性与instance属性,初始化的时机是不同的。instance属性在创徏实例的时候初始化Qstatic属性在 cd载,也就是第一ơ用到这个类的时候初始化Q对于后来的实例的创建,不再ơ进行初始化。这个问题会(x)在以后的pd中进行详l讨论?nbsp;

 

?于第二种变量Q必L地q行初始化。如果再没有初始化之前就试图使用它,~译器会(x)抗议。如果初始化的语句在try块中或if块中Q也必须要让它在W一?使用前一定能够得到赋倹{也是_(d)把初始化语句攑֜只有if块的条g判断语句中编译器也会(x)抗议Q因为执行的时候可能不W合if后面的判断条Ӟ如此一?初始化语句就不会(x)被执行了Q这p反了局部变量用前必须初始化的规定。但如果在else块中也有初始化语句,可以通过~译Q因为无论如何,L臛_一 条初始化语句?x)被执行Q不?x)发生用前未被初始化的事情。对于try-catch也是一P如果只有在try块里才有初始化语句,~译部通过。如果在 catch或finally里也有,则可以通过~译。MQ要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他 们,如果不知道要Z化成什么值好Q就用上面的默认值吧Q?nbsp;

 

其实W三U变量和W二U本质上是一L(fng)Q都是方法中的局部变量。只不过作ؓ(f)参数Q肯定是被初始化q的Q传入的值就是初始|所以不需要初始化?nbsp;

 

问题六:(x)instanceof是什么东东? 

 

instanceof是Java的一个二元操作符Q和==Q?gt;Q?lt;是同一cM东。由于它是由字母l成的,所以也是Java的保留关键字。它的作用是试它左边的对象是否是它双的类的实例,q回booleancd的数据。D个例子:(x) 

 

String s = "I AM an Object!"; 

boolean isObject = s instanceof Object; 

 

我们声明了一个String对象引用Q指向一个String对象Q然后用instancof来测试它所指向的对象是否是Objectcȝ一个实例,昄Q这是真的,所以返回trueQ也是isObject的gؓ(f)True?nbsp;

instanceof有一些用处。比如我们写了一个处理̎单的pȝQ其中有q样三个c:(x) 

 

public class Bill {//省略l节} 

public class PhoneBill extends Bill {//省略l节} 

public class GasBill extends Bill {//省略l节} 

 

在处理程序里有一个方法,接受一个Billcd的对象,计算金额。假设两U̎单计方法不同,而传入的Bill对象可能是两U中的Q何一U,所以要用instanceof来判断:(x) 

 

public double calculate(Bill bill) { 

if (bill instanceof PhoneBill) { 

//计算?sh)话账?nbsp;

if (bill instanceof GasBill) { 

//计算燃气账单 

... 

q样可以用一个方法处理两U子cR?nbsp;

 

然而,q种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实玎ͼq是面向对象变成应有的做法,避免回到l构化编E模式。只要提供两个名字和q回值都相同Q接受参数类型不同的Ҏ(gu)可以了Q?nbsp;

 

public double calculate(PhoneBill bill) { 

//计算?sh)话账?nbsp;

 

public double calculate(GasBill bill) { 

//计算燃气账单 

 

所以,使用instanceof在绝大多数情况下q不是推荐的做法Q应当好好利用多态?/span>

 

 

 

java方向?qing)学习(fn)方?/span>

java分成J2MEQ移动应用开发)(j)QJ2SEQ桌面应用开发)(j)QJ2EE(Web企业U应?Q所以javaq不是单机版的,只是面向对象语言。徏议如果学?fn)java体系的话可以q样d?fn)?x) 

*W一阶段QJava基础Q包括java语法Q面向对象特征,常见APIQ集合框Ӟ 

*W二阶段Qjava界面~程Q包括AWTQ事件机ӞSWINGQ这个部分也可以跌Q用的时候再看都能来?qing)?nbsp;

*W三阶段Qjava APIQ输入输出,多线E,|络~程Q反注解等Qjava的精华部分; 

*W四阶段Q数据库SQL基础Q包括增删改查操作以?qing)多表查询?nbsp;

*W五阶段QJDBC~程Q包括JDBC原理QJDBCq接库,JDBC APIQ虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用QJDBC思想ؓ(f)重要Q?nbsp;

*W六阶段QJDBC深入理解高Ҏ(gu):(x)包括数据库连接池Q存储过E,触发器,CRM思想Q?nbsp;

*W七阶段QHTML语言学习(fn)Q包括HTML标签Q表单标{以?qing)CSSQ这是Web应用开发的基础Q?nbsp;

*W八阶段QJavaScript脚本语言Q包括javaScript语法和对象,p两个斚w的内容; 

*W九(ji)阶段QDOM~程Q包括DOM原理Q常用的DOM元素以及(qing)比较重要的DOM~程思想Q?nbsp;

*W十阶段QServlet开发,从此开始踏入java开发的重要一步,包括XMLQTomcat服务器的安装使用操作QHTTP协议单理解,Servlet API{,q个是java web开发的基础?nbsp;

*W十一阶段QJSP开发:(x)JSP语法和标{,自定义标{,EL,JSTL库了解以?qing)MVC三层架构的设计模式理念; 

*W十二阶D:(x)AJAX开发:(x)AJAX原理Q请求响应处理,AJAX开发库Q?nbsp;

*W十三阶D:(x)轻量U框Ӟ三大框架之一Struts框架的学?fn),自此t入java web开发的_֍部分Q包括Struts体系架构Q各U组Ӟ标签库和扩展性的学习(fn)Q?nbsp;

*W十四阶D:(x)Hibernate框架学习(fn)Q三大框架之一Q包括检索映技术,多表查询技术,~存技术以?qing)性能斚w的优化; 

*W十五阶D:(x)Spring框架的学?fn),三大框架之一Q包括了IOC,AOP,DataSourceQ事务,SSH集成以及(qing)JPA集成Q?nbsp;

*最后呢Q还有些java的技术,包括EJB3.0{,可以选择学习(fn)Q与三大轻量U框架相比,EJB是当之无愧的重量?br />


wilsonyq 2012-02-14 13:45 发表评论
]]>
ArrayList?LinkedList区别http://www.aygfsteel.com/wilsonyq/articles/ArrayList-LinkedList.htmlwilsonyqwilsonyqWed, 08 Feb 2012 04:55:00 GMThttp://www.aygfsteel.com/wilsonyq/articles/ArrayList-LinkedList.htmlhttp://www.aygfsteel.com/wilsonyq/comments/369587.htmlhttp://www.aygfsteel.com/wilsonyq/articles/ArrayList-LinkedList.html#Feedback0http://www.aygfsteel.com/wilsonyq/comments/commentRss/369587.htmlhttp://www.aygfsteel.com/wilsonyq/services/trackbacks/369587.html

一般大安知道ArrayList和LinkedList的大致区别:(x)
     1.ArrayList是实CZ动态数l的数据l构QLinkedListZ链表的数据结构?/span>
     2.对于随机讉Kget和setQArrayList觉得优于LinkedListQ因为LinkedList要移动指针?/span>
     3.对于新增和删除操作add和removeQLinedList比较占优势,因ؓ(f)ArrayList要移动数据?/span>

ArrayList和LinkedList 是两个集? c,用于存储一pd的对象引?references)。例如我们可以用ArrayList来存储一pd的String或者Integer。那? ArrayList和LinkedList在性能上有什么差别呢Q什么时候应该用ArrayList什么时候又该用LinkedList呢?


一Q时间复 杂度
首先一点关键的是,ArrayList的内 部实现是Z基础的对象数l的Q因此,它用getҎ(gu)讉K列表中的L一个元素时 (random access)Q它的速度要比LinkedList快。LinkedList中的getҎ(gu)是按照顺序从列表的一端开始检查,直到另外一端。对 LinkedList而言Q访问列表中的某个指定元素没有更快的Ҏ(gu)了?/span>
假设我们有一个很大的列表Q它里面的元素已 l排好序了,q个列表可能是ArrayListcd 的也可能是LinkedListcd的,现在我们对这个列表来q行二分查找(binary search)Q比较列表是ArrayList和LinkedList时的查询速度Q看下面的程序:(x)

Java代码
  1. package com.mangocity.test;   
  2. import java.util.LinkedList;   
  3. import java.util.List;   
  4. import java.util.Random;   
  5. import java.util.ArrayList;   
  6. import java.util.Arrays;   
  7. import java.util.Collections;   
  8. public class TestList ...{   
  9.      public static final int N=50000;   
  10.   
  11.      public static List values;   
  12.   
  13.      static...{   
  14.          Integer vals[]=new Integer[N];   
  15.   
  16.          Random r=new Random();   
  17.   
  18.          for(int i=0,currval=0;i<N;i++)...{   
  19.              vals=new Integer(currval);   
  20.              currval+=r.nextInt(100)+1;   
  21.          }   
  22.   
  23.          values=Arrays.asList(vals);   
  24.      }   
  25.   
  26.      static long timeList(List lst)...{   
  27.          long start=System.currentTimeMillis();   
  28.          for(int i=0;i<N;i++)...{   
  29.              int index=Collections.binarySearch(lst, values.get(i));   
  30.              if(index!=i)   
  31.                  System.out.println("***错误***");   
  32.          }   
  33.          return System.currentTimeMillis()-start;   
  34.      }   
  35.      public static void main(String args[])...{   
  36.          System.out.println("ArrayList消耗时_(d)(x)"+timeList(new ArrayList(values)));   
  37.          System.out.println("LinkedList消耗时_(d)(x)"+timeList(new LinkedList(values)));   
  38.      }   
  39. }   

 
我得到的输出 是:(x)ArrayList消耗时_(d)(x)15
                 LinkedList消耗时_(d)(x)2596
q个l果不是固定的,但是基本?ArrayList? 旉要明昑ְ于LinkedList的时间。因此在q种情况下不宜用LinkedList。二分查找法使用的随?random access){略Q而LinkedList是不支持快速的随机讉K的。对一个LinkedList做随问所消耗的旉与这个list的大是成比? 的。而相应的Q在ArrayList中进行随问所消耗的旉是固定的?
q是否表明ArrayListL?LinkedList性能要好呢?qƈ不一定,在某些情? 下LinkedList的表现要优于ArrayListQ有些算法在LinkedList中实现时效率更高。比方说Q利? Collections.reverseҎ(gu)对列表进行反转时Q其性能p好些?
看这样一个例子,加入我们有一个列表,要对其进行大量的插入和删除操作,在这U情况下 LinkedList是一个较好的选择。请看如下一个极端的例子Q我们重复的在一个列表的开端插入一个元素:(x)

Java代码
  1. package com.mangocity.test;   
  2.   
  3. import java.util.*;   
  4. public class ListDemo {   
  5.      static final int N=50000;   
  6.      static long timeList(List list){   
  7.      long start=System.currentTimeMillis();   
  8.      Object o = new Object();   
  9.      for(int i=0;i<N;i++)   
  10.          list.add(0, o);   
  11.      return System.currentTimeMillis()-start;   
  12.      }   
  13.      public static void main(String[] args) {   
  14.          System.out.println("ArrayList耗时Q?+timeList(new ArrayList()));   
  15.          System.out.println("LinkedList耗时Q?+timeList(new LinkedList()));   
  16.      }   
  17. }   

 q时我的输出l果是:(x)ArrayList耗时Q?463


                           LinkedList耗时Q?5
q和前面一个例子的l果截然相反Q当一个元 素被加到ArrayList的最开端时Q所有已l存在的元素都会(x)? U,q就意味着数据Ud和复制上的开销。相反的Q将一个元素加到LinkedList的最开端只是简单的未这个元素分配一个记录,然后调整两个q接。在 LinkedList的开端增加一个元素的开销是固定的Q而在ArrayList的开端增加一个元素的开销是与ArrayList的大成比例的?/span>


二.I间?杂度
在LinkedList中有一个私有的内部c,定义如下Q?/span>

Java代码
  1. private static class Entry {   
  2.          Object element;   
  3.          Entry next;   
  4.          Entry previous;   
  5.      }   

 
每个Entry对象 reference列表中的一个元素,同时q有在LinkedList中它的上一个元素和下一个元素。一个有1000个元素的LinkedList对象? ?000个链接在一L(fng)Entry对象Q每个对象都对应于列表中的一个元素。这L(fng)话,在一个LinkedListl构中将有一个很大的I间开销Q因? 它要存储q?000个Entity对象的相关信息?/span>
ArrayList使用一个内|的数组来存 储元素,q个数组的v始容量是10.当数l需要增长时Q新的容量按 如下公式获得Q新定w=(旧容?3)/2+1Q也是说每一ơ容量大概会(x)增长50%。这意味着Q如果你有一个包含大量元素的ArrayList对象Q? 那么最l将有很大的I间?x)被费掉,q个费是由ArrayList的工作方式本w造成的。如果没有够的I间来存放新的元素,数组不得不被重新进行分 配以便能够增加新的元素。对数组q行重新分配Q将?x)导致性能急剧下降。如果我们知道一个ArrayList会(x)有多个元素Q我们可以通过构造方法来指定 定w。我们还可以通过trimToSizeҎ(gu)在ArrayList分配完毕之后L费掉的I间?/span>


三.ȝ
ArrayList和LinkedList在性能上各 有优~点Q都有各自所适用的地方,ȝ说来可以描述如下Q?/span>
1Q对ArrayList?LinkedList而言Q在列表末尾增加一个元素所q开销都是固定的。对 ArrayList而言Q主要是在内部数l中增加一,指向所d的元素,偶尔可能?x)导致对数组重新q行分配Q而对LinkedList而言Q这个开销? l一的,分配一个内部Entry对象?/span>


2Q在ArrayList?中间插入或删除一个元素意味着q个列表中剩余的元素都会(x)被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的?/span>


3QLinkedList?支持高效的随机元素访问?/span>


4QArrayList的空 间浪费主要体现在在list列表的结N留一定的定wI间Q而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的I间


可以q样_(d)(x)当操作是在一?数据的后面添加数据而不是在前面或中?q且需要随机地讉K其中的元素时,使用ArrayList?x)提供比较好的性能Q当你的操作是在一列数据的前面或中 间添加或删除数据,q且按照序讉K其中的元素时,应该用LinkedList了?/span>



wilsonyq 2012-02-08 12:55 发表评论
]]>
Java Collection 关系http://www.aygfsteel.com/wilsonyq/articles/Collection.htmlwilsonyqwilsonyqWed, 08 Feb 2012 02:53:00 GMThttp://www.aygfsteel.com/wilsonyq/articles/Collection.htmlhttp://www.aygfsteel.com/wilsonyq/comments/369582.htmlhttp://www.aygfsteel.com/wilsonyq/articles/Collection.html#Feedback0http://www.aygfsteel.com/wilsonyq/comments/commentRss/369582.htmlhttp://www.aygfsteel.com/wilsonyq/services/trackbacks/369582.html阅读全文

wilsonyq 2012-02-08 10:53 发表评论
]]>
վ֩ģ壺 ٲ| ˱| | | ʲ| | ʻ| ͨ| ̩| | ͼ| | Ѯ| | | | | | ˮ| | ۩| | | | Ӷ| ɫ| | | | | | | | ų| Դ| ɽ| | | | | ͭɽ|