??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一页在线,三级黄视频在线观看,亚洲精品自在久久http://www.aygfsteel.com/mark1207/MyEclipse, Java EE, Spring, Struts, Hibernate, JPA, SWT, Swing, AJAX, JavaScript,SOAzh-cnThu, 03 Jul 2025 11:49:52 GMTThu, 03 Jul 2025 11:49:52 GMT60转蝲Q华为十q?(徐家?http://www.aygfsteel.com/mark1207/archive/2009/03/02/257351.htmlMarkMarkMon, 02 Mar 2009 07:47:00 GMThttp://www.aygfsteel.com/mark1207/archive/2009/03/02/257351.htmlhttp://www.aygfsteel.com/mark1207/comments/257351.htmlhttp://www.aygfsteel.com/mark1207/archive/2009/03/02/257351.html#Feedback1http://www.aygfsteel.com/mark1207/comments/commentRss/257351.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/257351.html 转眼工作十年?jin),在华为的十年Q正是华Z名不Z业圈子到现在成ؓ(f)路h皆知的大公司Q高速发展的十年Q见证了(jin)公司多年的奋斗历E。也投n其中Q在大潮中边学边游泳Q走C天。现在我要离开公司?jin),准备d始新的事业,接受全新的挑(xi)战,我将要去做的事情Q风险很大,很有可能是九(ji)M生,?ji)死后还能不能有一生,也难说。在开始新的事业之前,惌v?jin)对q去的十q做个一个详l的ȝ。在一个象华ؓ(f)q样高速发展的大企业工作,有时是一U炼p的锻|如果我能够ȝ十年的经验和教训Q从中学到关键的做事、做人的道理Q我惛_来一定大有益处?br />
q些q来有些人离开公司Q写一些东西或书,对公司指手画脚、评头论뀁指Ҏ(gu)山,对公司的高层领导逐个点评一番,我个人感觉除?jin)带来一些娱乐h(hun)|q有什么益处呢Q公司照样在发展Q发展的背后Q?万hU种梦想、努力、A(ch)献、牺牌Ӏ奋斗、抱怨、不满、沉淀(wn)、离厅R希望、失落;发展的背后,U种Z(x)、重大决{、危机、失误等{的内在逻辑又岂是局外h说得清楚Q我不想多说公司Q只是想对自q工作l历好好反思反思,x(chng)自己做了(jin)什么努力,做了(jin)什么A(ch)献,做了(jin)什么自己最高兴、做?jin)什么自己最受益、学C(jin)什么?d说来Q我在华为的十年是懵應|懂过来的Q当初我好像没有什么远大的理想、没有详l的规划Q只是想着把一件一件事情做好。通过自己的ȝ和反思,来我希望自p够更加有规划、更加清C炏V?br />

大概想了(jin)惻I我觉得有以下几点Q是q些q深有体?x)的l验和教训,值得今后再发扬?br />
一?#8220;从小事做P学会(x)吃亏Q与他h合作”Q这是研I生毕业前最后一堂课Q电(sh)子电(sh)路的老师最后送给我们几句话,虽然我忘?sh)(jin)这位老师的名字,但这几句话却至今铭记。在华ؓ(f)的工作实践,发感受到这单的几条的道理深刅R从事做v不是一直满于做小事,也不是夸夸其谈好高骛q。学?x)吃亏不是忍受吃亏,是不斤斤计较于一时一地的是非得失Q是有勇气关键时候的攑ּ?br />
二?#8220;?j)有多大Q舞台就有多?#8221;Q我们很多的成功Q来自于敢想Q敢做,p我第一ơ接到问题单Q根本不懂,但敢去试Q敢去解冻Iq真的解决了(jin)Q就像我们做 SPESQ即使没人、没技术、没U篏Q还有CISCO{大公司也在做,我们也敢做,敢推行,不盲目崇拜或畏惧权威Q也取得?jin)成功。当?dng)q不只是盲目的胆大,?j)大q意味着U极地关注广大的外部世界Q开阔宽容的?j)胸接受U种新鲜事物?br />
三?#8220;好好学习(fn)Q天天向?#8221;Q这句话用来形容对IT人的要求Q最贴切不过?jin)。真正的成功者和专家都是“最不怕学?#8221;的hQ啥东西不懂Q拿q来学呗。我?IT现在有个技术大牛K博,其实他不是天生大牛,也是从外行通过学习(fn)成ؓ(f)专家的,他自己有一ơ跟我说Q当q一开始做UNIXpȝ理员时Q看刎ͼ提示W大吃一惊,因ؓ(f)自己用过多年在UNIX下搞开发都是%提示W,从未有过理员权限。看看专家的当初p水^Q当q跟我做备䆾目Ӟ我让他研I一?ORALCE数据库时点回退的备份和恢复Ҏ(gu)Q他望文生义Q以为数据库的回退是象人倒退走\一L(fng)Q这很有点幽默的味道?jin),但他天天早上hQ上班前先看一时书,多年U篏下来Q现在在pȝ、数据库、开发等多个领域已成为没人挑(xi)战的专家?jin)。但是,学习(fn)l对不是光从书本学习(fn)Q其实更重要的是从实践工作中学习(fn)Q向周边学习(fn)。比如说我在华ؓ(f)觉得学到最重要的一个理忉|“要善于利用逆境”Q华为在冬天的时候没有天天强调困难,而是提出“利用冬天的机?x)扭转全球竞争格局”q真的取得成功,如果没有q个冬天Q华为可能还要落后业界大腕更多年份;华ؓ(f)在被CISCO赯时没有慌乱,而是U极应对Q利用了(jin)q次赯辑ֈ?jin)花几亿金可能达不到的提高知名度的效果。等{这些,把几乎是灭顶之灾的境遇反而{化ؓ(f)成功的有利条ӞҎ(gu)留下的印象十分深刻,也对公司高层十分佩服?br />
四、勇于实践,勇于犯错Q善于反思。很多事情知易行难,关键是要有行动,特别是管理类的一些理论、方法、观c(din)空谈、空规划一点用处都没有Q不如实际把它做出来Q做出来后不断反思改q,实实在在最有说服力。没有实践中的反复演l和反思,即是h人皆知的东西要做好都其实不容易,举个例子,比如做管理者要?x)們֐Q我惛_?9.9%的管理者都很懂q一点,但实际做的如何呢Q华为有多少理者做C(jin)不打断别话?不急于下结论给定义Q不急于提供解决Ҏ(gu)Q有多少理者能够做到自然地引导Ҏ(gu)表达Q问问对Ҏ(gu)受?认自己明白Ҏ(gu)Q?br />
五、要有方法、有套\Q对问题pȝ思考、对解决Ҏ(gu)有战略性的设计。在前几q的工作中,׃取得?jin)一Ҏ(gu)功,技术上也有?jin)一点研IӞ开始夜郎自大v来了(jin)Q后来公司化重金h?jin)大扚w问,一开始对有些Nq真不怎么感冒。后来几q公司规模越来越大、IT的复杂性越来越增加的情况下Q逐渐理解?jin)很多。西方公司职业化的专Ӟ做Q何事情都有方法论、有套\Q甚至于如何开一个会(x)都有很多套\Q后来我对这些套路的研究有了(jin)兴趣Q自己ȝZ(jin)不少套\q给部门的骨q培训和讨论。在一个复杂的环境下,很多问题已经不能׃Z来研I和解决Q非帔R要系l性的Ҏ(gu)和战略性的眼光。对于一个组l的q作来讲Q制度和程的设计尤光要这一炏V爱恩斯坦说q:(x)We can't solve problems by using the same kind of thinking we used when we created them.

六、独立思考,不h云亦云。公司大?jin),人多了(jin),h子也Ҏ(gu)?jin)。h很容易陷入随波逐流、不深入业务的境圎ͼ而看不到问题和危险。专家有q一个研IӞ雪崩发生Ӟ一般受完都是一批一批的Q很有单个人的受害者,原因很简单,单个人在雪崩多发C(x)相当心(j)和警觉。但一个群体,体大Q每个个体就?x)有一U虚qȝ安全感和Z亦云的判断,但现实是不管体的力量有多大Q雪崩都是不可抵抗的。因此我觉得在大的机构里Q保持独立思考的能力ؓ(f)重要?br />
七、少抱怨、少I、积极主动,多干实事。我曄是个抱怨很多的愤青Q经常容易陷入抱怨之中。但多年的工作得我有所转变Q因为知道了(jin)抱怨是最无济于事的。世界上永远有不完美的事情,永远有麻?ch),唯一的解决之道是面对它,解决它。做实实在在的事情,改变我们不满的现Ӟ改变我们不满的自己。实际上也有很多值得抱怨的事情都是我们自己一手搞出来的,比如C会(x)上很常见的是高q部退下来?jin),抱怨h?j)不古、感慨世态炎凉,如果好好LI一下,原因很可能是他权位在手春风得意时不可一世、视他h如粪土造成的?br />
八、对职业负责、对目标负责Q对自己负责Q成功者往往自觉自律、信守承诺、心(j)无旁骛。大企业肯定?x)有l效考核、会(x)有论功行赏、会(x)有KPI、会(x)有领导指C、甚至会(x)有一点企业政治,但如果我们片面地q求考核成W、片面追求KPI指标、片面追求权钱利益,片面地对上负责、对别h负责Q而不对自p责、不对自q目标负责Q失d作的使命感、责d(j)、热情和好奇?j),必将不能辑ֈ自己的最?jng)_界。而一个企业如何能够成功营造一个环境,让每个个体尽量发挥到最?jng)_界,企业也会(x)战无不胜?br />
?ji)、多点h文修d审美情趣Q看h与工作不怎么相关Q其实太相关?jin)。杰出成q取得M开对美的境界的q求Q最伟大的科学发玎ͼ往往蕴涵着U序、简z和。缺乏一点审的q求Q什么UGLY的事情都敢做、不择手Dc(din)凡事凑合,一炚w?#8220;高雅”Q必不能长久?br />
十?#8220;大家好,才是真的?#8221;Q关注hQ帮助hQ真诚待人,厚道做h。快速发展的CC会(x)Q由于媒体的作用Q过分渲染了(jin)ZZ间日益冷漠、诡诈的关系Q但实际的社?x)、社区可能真的不是那么回事,L(fng)我来华ؓ(f)之前Q对一个大企业中工作的Z关系开始还有点未知的恐惧,但实际上在这个集体中的感觉几乎h人都能开放、真诚相待,关系融洽和谐。所以关键是我们自己要能够真诚对待他人,在与他h互动中将?j)比心(j)。当?dng)工作中的冲突是不可避免的Q实际上冲突也是没有必要去避免,甚至很多冲突对组l来Ԍ是大有益处的。就象夫d一架后感情往往更好。只要我们掌握两大原则:(x)1Q对事不对hQ?Q与Zؓ(f)善。就肯定能把适度的冲H引导到对自己、对l织都有利的方向?br />
十一、开攑֒分n的态度Q在一个高U技公司工作Q如果报着保守和封闭的?j)态,成长肯定?x)受阅R?br />
十二、做好时间管理。在华ؓ(f)工作十年Q?650天,工作?000天左叻Iq些旉是不是花在最重要的事情上?jin),有效的、有产出的工作时间究竟有多少Q实在值得怀疑。时间管理是我在华ؓ(f)工作当中最大的教训之一Q可能也是公司整体性的问题Q工作缺乏计划,l常是面临不断的被打断;或者是不断L断同事下属;或者是不断的会(x)议、讨论,占去l大部分的时_(d)或者是被自q兴趣所牵引Q花大量旉搞一些不着辚w的事情;或者是花很多时间在一些细枝末节的事情上,把很隑־重要的事情一直拖到非解决不可的地步然后被q仓?j)行事。现在回惻I如果真的能管理好q十q时_(d)我觉得成应该大很多?br />  

Mark 2009-03-02 15:47 发表评论
]]>
Struts2讉K隐藏的request和sessionhttp://www.aygfsteel.com/mark1207/archive/2008/05/27/203105.htmlMarkMarkTue, 27 May 2008 01:26:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/05/27/203105.htmlhttp://www.aygfsteel.com/mark1207/comments/203105.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/05/27/203105.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/203105.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/203105.html
在Struts1.*中,要想讉Krequest、response以及(qing)session{Servlet对象是很方便的,因ؓ(f)它们一直是作ؓ(f)形参在各个方法之间进行传递的Q而在Struts2中我们就很难看到它们的芳t了(jin)Q因为我们获得表单中的值都是通过预先讄好了(jin)的getҎ(gu)来得到的Q那么如果有些参数我们必通过request.getParametre或者session.getAttribute来得刎ͼ那么应该怎么做呢Q按照Max的教E上的说法,可以分ؓ(f)两种QIoC方式和非IoC方式Q如何理解这两种方式的区别呢QIoC是Spring里面的特征之一Q字面意思是反{控制Q说白了(jin)是依赖注入Q比方说cA依赖cBQ那么就d的给A注入一个类B的对象,下面看一下这两种Ҏ(gu)的具体实现?br />
1Q非Ioc方式

q种方式主要是利用了(jin)com.opensymphony.xwork2.ActionContextcM?qing)org.apache.struts2.ServletActionContextc,具体的方法如下所C?br /> 获得request对象Q?br />
AQHttpServletRequest request = ServletActionContext.getRequest ();
BQActionContext ct= ActionContext.getContext()
   HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);

获得session对象Q?br />
在Struts2中底层的session都被装成了(jin)MapcdQ我们称之ؓ(f)SessionMapQ而^常我们所说的session则是指HttpSession对象Q具体的获得Ҏ(gu)如下所C?br />
AQMap session=ActionContext.getSession();
BQMap session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到q个SessionMap之后我们可以对sessionq行d?jin),如果我们惛_到原始的HttpSession可以首先得到HttpServletRequest对象Q然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作Q我们不必再ȝ底层的session?jin)?br />
2QIoC方式

q种方式相对来说变化比较少?jin),具体程如下所C?br /> 获得request对象Q?br />
W一步:(x)让action实现ServletRequestAware接口
W二步:(x)在action中声明一个HttpServletRequestcd的实例变?br /> W三步:(x)在action中实现ServletRequestAware接口的setServletRequestҎ(gu)Q实现方式很单,如下所C?br />          private HttpServletRequest request;
publicvoid setServletRequest(HttpServletRequest request) {
            this.request = request;
    }

获得Session对象(注意Q此时的session是SessionMapcd)Q?br />
W一步:(x)让action实现SessionAware接口
W二步:(x)在action中声明一个HttpServletRequestcd的实例变?br /> W三步:(x)在action中实现SessionAware接口的setSessionҎ(gu)Q实现方式很单,如下所C?br />          private Map session;
publicvoid setSession(Map session) {
            this. session = session;
    }
 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1721226

Mark 2008-05-27 09:26 发表评论
]]>
java基本cd计算与运符试Q一Q?/title><link>http://www.aygfsteel.com/mark1207/archive/2008/05/09/199449.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Fri, 09 May 2008 03:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/mark1207/archive/2008/05/09/199449.html</guid><wfw:comment>http://www.aygfsteel.com/mark1207/comments/199449.html</wfw:comment><comments>http://www.aygfsteel.com/mark1207/archive/2008/05/09/199449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mark1207/comments/commentRss/199449.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mark1207/services/trackbacks/199449.html</trackback:ping><description><![CDATA[H然有h问vQ自己做?jin)些验Q把l果记录下来?br /> <br /> java的几U数值基本类型:(x)int,short,long,float,double<br /> <br /> 试代码Q?br /> <br /> <p> public static void main(String[] args) {<br /> <br />   short x = 100;<br />   long b = 2;<br />   int a = 2;<br />   double y=1.1;<br />   float z=(float) 1.2;<br />   double c=1.1;<br />   float d=(float) 1.2;<br />   <br />   a=x+a;<br />   x+=1.1;<br />   b=b+a;<br />   y=y-1;<br />   z=z-1;<br />   c=c+1;<br />   d=d+1;<br />   <br />   System.out.println(a);<br />   System.out.println(x);<br />   System.out.println(b);<br />   System.out.println(z);<br />   System.out.println(y);<br />   System.out.println(c);<br />   System.out.println(d);</p> <p>  c=c+d;<br />   System.out.println(c);<br />   c=c-d;<br />   System.out.println(c);<br />   d=(float) (d-1.1);<br />   System.out.println(d);<br />  }<br /> <br /> q行l果Q?br /> <br /> 102<br /> 101<br /> 104<br /> 0.20000005<br /> 0.10000000000000009<br /> 2.1<br /> 2.2<br /> 4.3000000476837155<br /> 2.0999999999999996<br /> 1.1<br /> <br /> 试说明Q?br /> <br /> 不同cd数据做计时按照计算中最大范围数据类型返回,例如Qa=x+a;(如果负值对象是较小范围的类型就需要强转类型,否则?x)报?<br /> doublecd做加时运精度准,做减q算时有_ֺ偏差Q且和floatcd怺作加减操作都?x)出现精度缺失?br /> +=W号做运不牉|cd转换问题Q按照负值对象的cdq回?br /> </p> <img src ="http://www.aygfsteel.com/mark1207/aggbug/199449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mark1207/" target="_blank">Mark</a> 2008-05-09 11:44 <a href="http://www.aygfsteel.com/mark1207/archive/2008/05/09/199449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate的saveorUpdate与unsaved-valueQsaveQupdateQdeleteȝ(?http://www.aygfsteel.com/mark1207/archive/2008/05/05/198563.htmlMarkMarkMon, 05 May 2008 13:16:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/05/05/198563.htmlhttp://www.aygfsteel.com/mark1207/comments/198563.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/05/05/198563.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/198563.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/198563.htmlq些操作对经怋用hibernate的同学已l很熟?zhn)了(jin),我也l常用但一些细节ƈ不了(jin)解,
最q遇到问题才开始有看了(jin)一下?/p>

在读完robbin的这两个_֍贴的时候,感觉清晰?jin)很多,实好文章?
http://www.javaeye.com/topic/2712
http://www.javaeye.com/topic/1604?page=1
q有q个_֍?
http://www.javaeye.com/topic/7484
也很不错?/p>

里面ȝ的很好了(jin)Q我l合以上三个帖子、自q试验Q版本hibernate-3.0.5Q和Hibernate文档也ȝ?jin)一点,加深理解?strong>希望对刚开始学Hibernate的同学有所帮助?/strong>

一、saveorUpdate与unsaved-value
到底是savaq是update
Hibernate需要判断被操作的对象究竟是一个已l持久化q的持久对象q是临时对象?
1Q.主键Hibernate的id generator产生
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
主键是对象类型,hebernate判断project的主键是否位nullQ来判断project是否已被持久?/strong>
是的话,对project对象发送save(project)Q?
若自p|了(jin)主键则直接生成update的sqlQ发送update(project)Q即便数据库里没有那条记录?
主键是基本类型如int/long/double/
自己讄unsaved-null="0"?
所以这L(fng)话save和update操作肯定不会(x)报错?/p>

2、unsaved-value="none"Q?
׃不论主键属性ؓ(f)M|都不可能为noneQ因此HibernateL对project对象发送update(project)

3、unsaved-value="any"
׃不论主键属性ؓ(f)M|都肯定ؓ(f)anyQ因此HibernateL对project对象发送save(project)Qhibernate生成主键?/p>

Hibernate文档中写?
saveOrUpdate()完成?jin)如下工作?x)
如果对象已经在这个session中持久化q了(jin)Q什么都不用?
如果对象没有标识|调用save()来保存它
如果对象的标识gunsaved-value中的条g匚wQ调用save()来保存它
如果对象使用?jin)版?version或timestamp),那么除非讄unsaved-value="undefined",版本(g)查会(x)发生在标识符(g)查之?
如果q个session中有另外一个对象具有同L(fng)标识W,抛出一个异?

2Q.主键p己来赋?/strong>
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
q时有所不同Qhibernate?x)根据主键生一个selectQ来判断此对象是否已被持久化
已被持久化则updateQ未被持久化则save?
2、unsaved-value="none"Qupdate对象Q同?/p>

3、unsaved-value="any" Qsave对象Q?
如果自己自己讄的ID在数据库中已存在Q则报错?/p>

二、save与update操作
昑ּ的用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-value?
在同一SessionQsave没什么可说得
update对象? 最直接的更改一个对象的Ҏ(gu)是load()它,保持Session打开Q然后直接修改即?
Session s =…
Project p = (Project) sess.load(Project.class, id) );
p.setName(“test”);
s.flush();
不用调用s.update(p);hibernate能察觉到它的变化Q会(x)自动更新。当然显C用的话也不会(x)?/p>

Hibernate文档中写?
update()Ҏ(gu)在下列情形下使用Q?
E序在前面的session中装载了(jin)对象
对象被传递到UIQ界面)(j)?
对该对象q行?jin)一些修?
对象被传递回业务?
应用E序在第二个session中调用update()保存?sh)?

三、delete操作
删除时直接自己构造一个project卛_删除
this.projectDao.delete(preojct);

以前删除我是q样写的
public void deleteProject(String id) {
Project project = (Project) this.projectDao.get(Project.class, id);
if (project != null) {
this.projectDao.delete(project);
}
卌样也是可以的
Project project = new Project();
project.setId(id);
this.projectDao.delete(project).

如果有联关p,需要把U联的子cM构造出来addq去Q同样可以删除?/p>

Mark 2008-05-05 21:16 发表评论
]]>
J2EE基础Q对于Spring初学者的学习(fn)Q{Q?/title><link>http://www.aygfsteel.com/mark1207/archive/2008/04/21/194414.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Sun, 20 Apr 2008 16:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/mark1207/archive/2008/04/21/194414.html</guid><wfw:comment>http://www.aygfsteel.com/mark1207/comments/194414.html</wfw:comment><comments>http://www.aygfsteel.com/mark1207/archive/2008/04/21/194414.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mark1207/comments/commentRss/194414.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mark1207/services/trackbacks/194414.html</trackback:ping><description><![CDATA[<p align="justify">一、首先Java的基、面向对象的基础和设计模式的基础知识是必不可的?<br /> <br />   关于设计模式我觉得不用学太多Q但以下三个模式是学?fn)Spring必不可少的:(x)factory模式Q包括简单工厂和抽象工厂Q,Strategy模式QTemplate method模式。如果不掌握q些你就Ҏ(gu)没法领?zhn)Spring的精髓,只能依样画葫芦地照搬Q这是很可怕的事?<br /> <br />   我这里强烈徏议的书可能让人有Ҏ(gu)外,那就是Expert one on one J2EE design and development的第四章Q这一章不仅仅是Spring初学者,而是M搞Java开发的人必ȝ一章。经典! <br /> <br />   二、接下可以看一些Spring的入门书c?<br /> <br />   其实我自己没怎么看过q方面的书,我当时只看过Spring的referenceQ不q现在这斚w的书好象多的是,而Spring reference看v来还是有些吃力的。JavaEye上很多h夏昕的Spring开发指南,据说入门很容易。另外的入门书应该是Spring live或Spring in action。我大概扫了(jin)一下,Spring live是一本只讲怎么做而不讲ؓ(f)什么的书,我不太喜Ƣ(偶尔参考一下倒不错)(j)Q不q有些h特别喜欢q样的书Q看自己的个人爱好吧?<br /> <br />   三、研I几个用Spring做的开源项?<br /> <br />   理论q是要与实际l合Q所以看完书后是要看实际的项目的。很多h喜欢appfuseQ我觉得appfuseq东西太多Q真正实质性的内容又太。我更喜ƢSpring自带的jpetstoreQ这是一个非常完整的例子Q看完后Spring的基本用法应该都能掌握?<br /> <br />   四、开始做实际的项?<br /> <br />   在上q这些都完备以后Q我觉得应该要去实际目中锻g(jin)。当然ƈ不是每h都有q样的机?x)的Q这时只能自己做个玩具项目啦。项目的ȝ是非常关键的Q其实每个h都清楚,我就不重复了(jin)?<br /> <br />   五、l深入学?<br /> <br />   l过目的锤|对Spring的用法和原理有了(jin)一定的?jin)解的时候,才有可能真正掌握Spring的精髓。这时要ȝ书才是Rod Johnson的三本经典名著,分别是:(x) <br /> <br />   Expert one on one J2ee design and development <br /> <br />   Expert one on one J2ee without EJB <br /> <br />   Professional Java Development with SpringFramework <br /> <br />   前两本书的经典程度我׃说了(jin)Q只有读?jin)它们,才能真正了(jin)解Spring的设计意图,掌握Spring的精髓?<br /> <br />   W三本书是我强烈不徏议初学者读的书。里面的东西深入而全Q但是原理讲解得又不够深Q很Ҏ(gu)让初学者犯qL(fng)。但是却是Spring的高U用户必ȝ一本书Q还有一本pro Spring据说也不错,不过我没读过Q。我q几天会(x)写一下这本书的书评?<br /> <br />   当然q个阶段与第四阶D|交错的,边读书边做项目学到的东西才会(x)更多的?<br /> <br />   六、分析源代码Q扩展Spring <br /> <br />   有h认ؓ(f)没有必要分析Spring的源代码Q因是很累h又不计好的事。但是要x(chng)为Spring的高U用Pq是必经的阶Dc(din)在学习(fn)的过E中Q我们学到的不仅是SpringQ更重要的是他的设计思想。不怎样Q看牛h的源代码是绝Ҏ(gu)好处的。不q这是一个很累h的过E,要有思考准备哦Q?/p> <img src ="http://www.aygfsteel.com/mark1207/aggbug/194414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mark1207/" target="_blank">Mark</a> 2008-04-21 00:40 <a href="http://www.aygfsteel.com/mark1207/archive/2008/04/21/194414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaE序员的学习(fn)目标Q破坏源E序Q(转,_ֽ文章Q推荐)(j)http://www.aygfsteel.com/mark1207/archive/2008/04/21/194413.htmlMarkMarkSun, 20 Apr 2008 16:35:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194413.htmlhttp://www.aygfsteel.com/mark1207/comments/194413.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194413.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/194413.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/194413.htmlJava作ؓ(f)一门编E语aQ最好的学习(fn)Ҏ(gu)是写代码。当你学?fn)一个类以后Q你可以自己写个简单的例子E序来运行一下,看看有什么结果,然后再多调用几个cȝҎ(gu)Q看看运行结果,q样非常直观的把cȝ学会(x)?jin),而且记忆非常深刻。然后不应该满把代码调通,你应该想想看如果我不q样写,换个方式Q再试试行不行。记得哪个高?sh)q学?fn)编E就是个破坏的过E,把书上的例子Q自己学?fn)Documentation~写的例子在q行通过以后Q不断的试着用不同的Ҏ(gu)实现Q不断的试破坏代码的结构,看看它会(x)有什么结果。通过q样的方式,你会(x)很彻底的很精通的掌握Java。D个例子,我们都编q?a target="_bank">Hello Worldq个E序?   
public class HelloWorld {

  public static void main(String[] args) {

  System.out.println("Hello World");

  }

  }


        很多初学者不是很理解Z么mainҎ(gu)一定要q样来定义public static void main(String[] args)Q能不能不这样写?包括我刚学习(fn)Java的时候也有这L(fng)疑问。想知道{案?很简单,你把main改个名字q行一下,看看报什么错误,然后Ҏ(gu)出错信息q行分析;把main的public取掉Q在试试看,报什么错?staticLq能不能q行;不知道mainҎ(gu)是否一定要传一个String[]数组的,把String[]Ҏ(gu)Q改?a target="_bank">int[]Q或者String试试?不知道是否必dargs参数名称的,也可以把argsҎ(gu)别的名字Q看看运行结果如何。我当初学习(fn)Java的时候就是这样做的,把Hello WorldE序反复改了(jin)七八ơ,不断q行Q分析运行结果,最后就d明白Z么mainҎ(gu)是这样定义的?jin)?

  此外Q我对于staticQpublicQprivateQExceptionQtry{ }catch {}finally{}{等一开始都不是很懂Q都是把参考书上面的例子运行成功,然后开始破坏它Q不断的Ҏ(gu)自己?j)里面的疑问来重新改写程序,看看能不能运行,q行出来是个什么样子,是否可以得到预期的结果。这栯然比较费旉Q不q一个例子程序这样反复破坏几ơ之后。我对q个相关的知识彻底学通了(jin)。有时候甚x(chng)意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编E的掌握是及(qing)其深ȝ。其中特别值得一提的?a target="_bank">JDK有一个非常棒的调试功?verbose?/p>

  java –verbose

  javac –verbose 以及(qing)其它很多JDK工具都有q个选项

  -verbose 可以昄在命令执行的q程中,JVM都依ơ加载哪里ClassQ通过q些宝贵的调试信息,可以帮助我们分析出JVM在执行的q程中都q了(jin)些什么。另外,自己在学?fn)过E中Q写的很多的q种破坏例程Q应该有意识的分门别cȝ保存?sh)来Q在工作中积累的典型例程也应该定期整理,日积月篏Q自己就有了(jin)一个代码库?jin)。遇到类似的问题Q到代码库里?Copy & Paste QSearch & ReplaceQ就好了(jin)Q极大提高(sh)(jin)开发速度。最理想的情冉|把一些通用的例E自己再抽象一层,形成一个通用的类库,装好。那么可复用性就更强?jin)。所以我觉得其实不是特别需要例E的Q自己写的破坏例E就是最好的例子Q如果你实在对自己写的代码不攑ֿ(j)的话Q我强烈推荐你看看JDK基础cd的Java源代码。在JDK安装目录下面?x)有一个src.zipQ解开来就可以完整的看到整个JDK基础cdQ也是rt.jar的Java源代码,你可以参考一?a target="_bank">Sun是怎么写JavaE序的,规范是什么样子的。我自己在学?fn)Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的l节的时候,往往?x)打开相应的类的源代码Q通过看源代码Q所有的问题都会(x)一扫而空?/p>

Mark 2008-04-21 00:35 发表评论
]]>
Ajax 在企业应用上的优势(转)(j)http://www.aygfsteel.com/mark1207/archive/2008/04/21/194412.htmlMarkMarkSun, 20 Apr 2008 16:31:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194412.htmlhttp://www.aygfsteel.com/mark1207/comments/194412.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194412.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/194412.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/194412.htmlAjaxQ供应商们正在设法降低它的用难度?

  如今的网l用户都被宠坏了(jin)。他们一旦在h公司(Google)或Flickr|站体验q快L(fng)响应和良好的互动功能后,传统的点?{待式的Web界面再也无法满他们的需求了(jin)。这些功能正是通过Ajax来实现的。由于Ajax所带来的商业h(hun)值日益凸玎ͼ微Y公司(Microsoft)?a target="_bank">开?/a>的开发者工作^?a target="_bank">Eclipse的支持者们Q最q正U极开发一些适合Ajax的^収ͼ以便用户能够方便地利用这U工h创徏互动式的Web应用?/p>

  Ajax{网l开发工具和技术与传统的服务器端Y件不同。服务器端Y件普遍具有成熟的技术标准,而Ajax{网l开发技术尚q处在不断的变化中。Ajax是新兴的|络开发技术的象征。它?yu)?a target="_bank">JavaScript?a target="_bank">XML技术结合在一P用户每次调用新数据时Q无需反复向服务器发出hQ而是在浏览器的缓存区预先获取下次可能用到的数据,界面的响应速度因此得到?jin)显著提升。Google公司的地图服?Google Maps)是Ajax应用最典型的例子之一?/p>

  不久前,Eclipse开源项目的领导厂商Q包括国际商业机器公?IBM)、英特尔公司(Intel)、红帽公?Red Hat)和思爱普Y件系l公?SAP){宣布,把Eclipse从开发者工作^台扩展成能与微Y公司在企业市(jng)场展开竞争的新q_。在日前召开的EclipseCon大会(x)上,Eclipse基金?x)执行ȝq克·cx(chng)U维?Mike Milinkovich)表示Q?#8220;今后3q_(d)微Y公司可能?x)不断说服一些企业放弃Win32 APIQƈ转向(Windows)Vista?#8221;然而,cx(chng)U维奇却企业最好采用Eclipse的富客户q_。因为开发者采用这套组Ӟ可以在企业桌面应用E序创徏交互性更好的界面Q一ơ开发完毕后Q在视窗pȝ(Windows)?a target="_bank">Linux或者苹果系l上都能够运行?/p>

  Eclipse行动

  Eclipse目l正在设法ؓ(f)用户提供除微软公品之外的更多选择。不久前Q该目l推Z(jin)一个开源项目Rich Ajax Platform(下称“RAP”)Q吸引开发h员(sh)用Eclipse来提供界面组Ӟ包括视窗风格的菜单、拖动条以及(qing)支持拖曳功能的弹出窗?Drag-and-Drop Window Expanders){,目的是Web应用在浏览器中更h交互性?/p>

  不久前,IBM公司与Google公司、Laszlopȝ公司、Mozilla公司、网威公?Novell)、甲骨文公司(Oracle)、红帽公司和雅虎公司(Yahoo){多家企业,共同合作创徏?jin)一开源项目Ajax Toolkit FrameworkQ旨在徏立一U基于Eclipse的Y件系l,以降低在Eclipseq_内用Ajax工具的难度。在此之前,使用Ajax开发程序ƈ不那么容易。Google公司是在开发Google Maps的过E中发现q一点的。它发现地图上标C的阴影或者两点之间的N路线Q都?x)因为浏览器的用差异而生不同的昄效果。不q,Google Maps产品l理布莱?#183;泰勒(Bret Taylor)也表C:(x)“Google公司在创建工具包斚w投入?jin)大量精力,因此大家对这些细节方面大可放心(j)?#8221;Eclipse目在像Google公司q样的大公司帮助下,正在采用Google公司的方法,以便使所有企业都能更方便C用Ajax技术?/p>

  而与此同Ӟ微Y公司也ƈ没有在原地踏步。在日前举行的微软网l技术大?x)上Q公怸席比?#183;盖茨(Bill Gates)发表?jin)一主题演讌Ӏ盖茨在讲话中承认,C轮的Web应用热潮卛_到来。一些网站变得像传统软g的组件一P可以被API调用Q以?qing)像子程序一栯行?#8220;现在Q富有创新想法的时代已经到来?#8221;盖茨表示Q?#8220;q是软g的新时代?#8221;

  日前Q微软公司发布了(jin)一个自有Ajax开发工具?a target="_bank">Atlas的升U测试版。它可以在应用程序的客户端创建标准的JavaScript。微软公怹开发了(jin)ZJavaScript的服务器端扩展程序,来优化Ajax应用在视H电(sh)脑上的执行。这P用Atlas~写的YӞ可以与Windows Vista的各U元素生互动。而且Q采用Atlas~写的Web应用特别能够与Vista的其他程序生互动,比如日历、即旉讯联系人、照相簿和媒体播放Y件等。微软公司Web工具产品l理布赖?#183;戈d法伯(Brian Goldfarb)q透露_(d)(x)“公司正在考虑其他更丰富的应用场景Q从而可以更好地?a target="_bank">IE览器和视窗pȝq行配合?

  不过Q微软公司在发布代号?#8220;Orcas”的下一版本Visual Studio Ӟ才会(x)正式推出Atlas工具。因此,距离Atlas的面世还要等上好几年的时间。而与此同ӞEclipse却在利用Ajax工具包而快速发展?/p>

  微Y公司的优势就在于Q能够把Atlas工具与公司的视窗pȝ、SQL Server数据库以?qing)其他Y件整合在一赗不q,IBM公司也以开源代码的形式Q捐献出?jin)Eclipse的核?j)工作^台技术,因ؓ(f)它也希望Java工具拥有与微软公司类似的集成度?/p>

  格雷?#183;斯坦?Greg Stein)是Google公司的工E经理?a target="_bank">Apache软g基金?x)主席以及(qing)Apache Web服务器等目的赞助h。斯坦因认ؓ(f)Q?#8220;Eclipse是一U集成的开发环境,因此会(x)在一定程度上化Ajax应用的开发难度?#8221;而d国小型Y件公司Innoopract公司的管理ȝU亨·克劳?Jochen Krause)也预说Q这个^?#8220;会(x)把Eclipse的应用扩展到一个不同的?a target="_bank">?/a>Q即互动Web应用领域?#8221;RAP目是p家公司提出的?/p>

  单ؓ(f)?/strong>

  Eclipse目会(x)l企业带来一定的帮助。有?jin)Eclipse工具包,他们无需掌握专门的JavaScript知识Q可以在Eclipse的框架下工作。而大多数C语言?a target="_bank">C++、Cobol、Java?a target="_bank">PHPE序员,对于Eclipse都不陌生。加拿大研究委员?sh)?National Research Council Canada)计算机系l官员(sh)?#183;辄?Danny D’amours)表示Q?#8220;我们的一些应用程序,响应旉?x)变得更快捷Q而且q能够有更好的在U互动?#8221;在Eclipse的Ajax framework目中,“Ajax会(x)整合成ؓ(f)Eclipse开发环境的一部分?#8221;辄?dng)补充说道?/p>

  辄?dng)?x)考虑使用微Y公司的Atlas?看上去,他似乎对此不感兴。的,微Y和非微Y阵营的对抗似乎依然处于紧张状态。尽企业往往?x)同旉用Visual Studio与Eclipsebased的开发工P很可能也包括两者的Ajax和W(xu)eb应用技术?/p>

  企业通过使用AjaxQ可以强化网站的功能Q提高用户体验。他们可以滚动屏q浏览大量的信息Q或者方便地把物品拖入在U购物RQ或者在UK|品而无需不断地刷新页面。其实,不仅仅是Googleq样的公司在使用AjaxQLands’End|站和沃?yu)(dng)沃公?Volvo){也在用Ajax技术让潜在的客戯计他们的产品或汽车,而且Sabre控股公司(Sabre Holdings)也采用了(jin)Ajax技术来减少其航I公司客户用的飞行计划软g的响应时间?/p>

Mark 2008-04-21 00:31 发表评论
]]>
Java关键字new和newInstance的区别方??http://www.aygfsteel.com/mark1207/archive/2008/04/21/194411.htmlMarkMarkSun, 20 Apr 2008 16:19:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194411.htmlhttp://www.aygfsteel.com/mark1207/comments/194411.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/04/21/194411.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/194411.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/194411.html  Java中工厂模式经怋用newInstance()Ҏ(gu)来创建对象,因此从ؓ(f)什么要使用工厂模式上可以找到具体答案?例如Q?/p>

  
class c = Class.forName(“Example”);

  factory = (ExampleInterface)c.newInstance();

        其中ExampleInterface是Example的接口,可以写成如下形式Q?/p>

  
String className = "Example";

  class c = Class.forName(className);

  factory = (ExampleInterface)c.newInstance();

        q一步可以写成如下Ş式:(x)

  
String className = readfromXMlConfig;//从xml 配置文g中获得字W串

  class c = Class.forName(className);

  factory = (ExampleInterface)c.newInstance();

        上面代码已经不存在Example的类名称Q它的优Ҏ(gu)Q无论ExamplecL么变化Q上qC码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……Q只要他们承ExampleInterface可以?/p>

  ?a target="_bank">JVM的角度看Q我们用关键字new创徏一个类的时候,q个cd以没有被加蝲。但是用newInstance()Ҏ(gu)的时候,必M证:(x)1、这个类已经加蝲;2、这个类已经q接?jin)。而完成上面两个步骤的正是Class的静(rn)态方法forName()所完成的,q个?rn)态方法调用了(jin)启动cd载器Q即加蝲java API的那个加载器?/p>

  现在可以看出QnewInstance()实际上是把newq个方式分解Z步,即首先调用Class加蝲Ҏ(gu)加蝲某个c,然后实例化?q样分步的好处是显而易见的。我们可以在调用class的静(rn)态加载方法forName时获得更好的灉|性,提供l了(jin)一U降耦的手段?/p>

  最后用最单的描述来区分new关键字和newInstance()Ҏ(gu)的区别:(x)

  newInstance: q型。低效率。只能调用无参构造?/p>

  new: 强类型。相寚w效。能调用Mpublic构造?/p>

Mark 2008-04-21 00:19 发表评论
]]>
西方国家q次Z么会(x)如次的团l? Q{Q?/title><link>http://www.aygfsteel.com/mark1207/archive/2008/04/18/194081.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Fri, 18 Apr 2008 09:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/mark1207/archive/2008/04/18/194081.html</guid><wfw:comment>http://www.aygfsteel.com/mark1207/comments/194081.html</wfw:comment><comments>http://www.aygfsteel.com/mark1207/archive/2008/04/18/194081.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mark1207/comments/commentRss/194081.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mark1207/services/trackbacks/194081.html</trackback:ping><description><![CDATA[西方国家q次Z么会(x)如次的团l? <p><strong><font size="3">  Ƨ洲的d国、法国,一般是不会(x)冒着q样的风险得|中国这个经大国的。伊拉克战(sh)时d国和法国都和中国站在一边,不支持美国对伊动武。ؓ(f)伊拉克而得|美国,不符合他们的国家利益啊。法?0q前Z(jin)不得|中国,l止?jin)对台军售,损失了(jin)几十亿的收入。而ؓ(f)什么今天会(x)冒着q么大的风险公然与中国ؓ(f)敌?隑ֈ是Z(jin)和自己根本不相干的西藏和奥运Q?br />        而另一个值得让h思考的问题是,一向是西方老大的美国,Z么这一ơ这么低调?让英、法、d在前台唱主角Q对于西藏,西方国家很清楚,再怎么闹,中国也不可能做出让步。对于奥q,他们也很清楚Q就西方国家没有一个领gh出席北京奥运?x),中国也就是面子上q不ȝŞ?jin),对中国有实质影响吗?没有?br />        所以,西藏只是一个幌子,奥运也只是一个幌子。那么他们到底想从中国得C么? <br />        西方国家正面临着10q来l济陷入衰退的危险,他们需要有一个有实力的国家ؓ(f)q次西方l济的衰退买单。不a而喻Q他们不U而同的想C(jin)中国?做ؓ(f)一个普通老百姓,我对国际l济没有什么研IӞ?008q一开始我q是隐约C国经面临的危险Q现在也想起了(jin)温ȝ说过的一句话Q?008q也许是中国l济最困难的一q。现在想h在进行的q场闹剧Q真的有点让人毛骨耸然?jin)。美国不是低调,是很冷静(rn)Q他们早已经不露声色的出招了(jin)Q?<br />        1、美元贬倹{因为美元贬|人民币升|中国16000亿美元的外汇储备已经人间蒸发?000亿美元,而且q在l箋(hu)蒸发中。更要命的是Q由于h民币升|中国出口产品成本增加Q沉重的打击中国的出口,许多企业面(f)倒闭的危险。因Z国企业的倒闭Q西方国家生产企业就可以开始生产复苏?<br />        2、通过高a(b)价以拖跨中国l济。中国经的高速发展需要大量的q品原a(b)Q而西方国家则不断的提高石油储备,造成高a(b)价一直持l,以增加中国经徏讄成本。这是国Z么要打伊拉克、打伊朗的原因:(x)控制x(chng)a(b)是控制?jin)经命脉?br />        3、助涨中国金融(chng)沫。h民币升|大量热钱自然要涌入中国,造成中国高成本、高币值的l济泡沫。或许这是Z么政府就是背着千夫所指都l不救市(jng)的原因,是Z(jin)打击国际投机资本在中国的恶意圈钱行ؓ(f)Q而另一斚w却不得不面对成千上万痛不Ʋ生的股民的N而有可能造成国内C会(x)动荡的危险。现在看?jin),什么西藏事件、抵制奥q都是不ؓ(f)道的事?br />        所以,“西藏”?#8220;奥运”只是西方国家l架的两?#8220;”Q他们真正的目的不是西藏Q也不是奥运Q而是以此挟,要中国ؓ(f)他们的经衰退买单。不买单Q搞׃Q要d家一h。买单:(x)坐下来谈Q你{应我我息事宁人!    <br />        中国政府的冷?rn)是对的Q死L住经徏设这个中?j)不动摇才是关键。经如果一跨,那就什么都跨了(jin)?国民要冷?rn),要相互理解,不要l政府出N。还是那句话Q发展才是硬道理Q压倒一切的是稳定。一个普通的中国人都能预料到Q我怿政府能从容应寏V我们要支持政府打赢q场表面上看h是舆论战Q而事实上是经的战(sh)  <br /> 我们需要更团结  希望大家奔走先告<br /> 1、多省a(b)  多乘坐公׃通出?nbsp; 能做车就不要开?能开H户׃要开 I<br /> 2、多省电(sh)  路灯不用关掉, 能用x(chng)׃要开音箱Q家?sh)不用就要把整个开x(chng)下来 又省?sh)又安?希望政府把夜景工E的灯光关?nbsp; <br /> 3、支持国?能买到国货就不要买外国货 ?j)进内需 pl自׃h?nbsp;  <br /> 4、努力工?多开发和刉更好的产品  实业才是救国之本<br /> 5、尊重自?重国h 不要崇洋?d)?nbsp; <br /> 6、告诉台?西藏 包括其他民族的青q?Z么我们现在还q么痛苦别的国家看不P因ؓ(f)我们的祖辈太喜欢H里斗,?nbsp; <br /> 7、告诉n边的每一个h 中国只有强大才会(x)有更好的?Q落后就要挨打挨?nbsp; <br /> 8、政府在q步 督促(j)政府更快的进?而不是推C 那样高兴的是日 痛苦的是自己<br /> </font></strong></p> <img src ="http://www.aygfsteel.com/mark1207/aggbug/194081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mark1207/" target="_blank">Mark</a> 2008-04-18 17:37 <a href="http://www.aygfsteel.com/mark1207/archive/2008/04/18/194081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java语言中的参数传??http://www.aygfsteel.com/mark1207/archive/2008/04/18/194071.htmlMarkMarkFri, 18 Apr 2008 09:01:00 GMThttp://www.aygfsteel.com/mark1207/archive/2008/04/18/194071.htmlhttp://www.aygfsteel.com/mark1207/comments/194071.htmlhttp://www.aygfsteel.com/mark1207/archive/2008/04/18/194071.html#Feedback0http://www.aygfsteel.com/mark1207/comments/commentRss/194071.htmlhttp://www.aygfsteel.com/mark1207/services/trackbacks/194071.html         和其它程序设计语acMQJava语言的参C递也分ؓ(f)两种Q?/div>
1?nbsp;按g?by value)
适用范围Q?U基本数据类型、String对象
特点Q在内存?sh)复制一份数据,把复制后的数据传递到Ҏ(gu)内部
作用Q在Ҏ(gu)内部改变参数的|外部数据不会(x)跟着发生改变
2?nbsp;按址传?by address)
适用范围Q数l、除String以外的其他所有类型的对象
特点Q将对象的地址传递到Ҏ(gu)内部
作用Q在Ҏ(gu)内部修改对象的内容,外部数据也会(x)跟着发生改变
基础CZ代码Q?/div>
    public class Test1{
    public static void t1(int n){
        n = 10;
    }
    public static void t2(String s){
               s = "123";
    }
    public static void t3(int[] array){
        array[0] = 2;
    }
    public static void main(String[] args){
           int m = 5;
        t1(m);
        System.out.println(m);
        String s1 = "abc";
        t2(s1);
        System.out.println(s1);
           int[] arr = {1,2,3,4};
        t3(arr);
        System.out.println(arr[0]);
    }   
   }
         按照上面的参C递规则,该代码的输出l果应该是:(x)5 abc 2。因为intcd是按g递,所以把参数m传递到Ҏ(gu)t1Ӟ相当于又复制?jin)一份m的|在方法t 1内部修改的是复制后的|所以m的g变,s1的输出和mcM。而arr是数l,属于按址传递,也就是把arr的地址传递到?jin)方法t3内部Q在Ҏ(gu)t3内部修改数组中的值时Q原来的内容也发生改变?/div>
         以上Ҏ(gu)是Java语言中的规定Q在语法上无法指定参C递是按g递还是按址传递,但是可以通过下面的变换实玎ͼ(x)
1?nbsp;对于按g递的参数Q如果需要在Ҏ(gu)调用以后修改参数的|可以利用q回值来实现?/div>
2?nbsp;对于按g递的参数Q如果需要在Ҏ(gu)内部修改时原来的参数不改变,则可以在Ҏ(gu)内部重新创徏该对象实现?/div>
CZ代码如下Q?/div>
public class Test2{
    public static int t1(int n){
        n = 10;
        return n;
    }
    public static String t2(String s){
                  s = "123";
                  return  s;
    }
    public static void t3(int[] array){
        //创徏新的数组q赋?/div>
        int[] newArray = new int[array.length];
        //数据拯
       System.arraycopy(array,0,newArray,0,array.length);
        newArray[0] = 2;
    }
    public static void main(String[] args){
                  int m = 5;
        //重新赋?/div>
        m = t1(m);
        System.out.println(m);
        String s1 = "abc";
        //重新赋?/div>
        s1 = t2(s1);
        System.out.println(s1);
                  int[] arr = {1,2,3,4};
        t3(arr);
        System.out.println(arr[0]);
    }   
}
q样Q程序的输出l果将是:(x)10 123   1?/div>
在实际的E序开发中Q可以根据需要用类似的l构来进行实现?/div>
         下面再介l一个参C递的常见应用Q利用参C递实现返回|q样的功能在IOc设计的readҎ(gu)中大量用。示例代码如下:(x)
public class Test3{
    public static void initArray(int[] array){
                  for(int i = 0;i < array.length;i++){
                            array[i] = i;
        }
    }
    public static void main(String[] args){
                  int[] a = new int[10];
        initArray(a);
        for(int i = 0;i < a.length;i++){
                            System.out.println(a[i]);
        }
    }
}
         在该CZ代码中,在initArrayҎ(gu)内部修改?jin)数l的g后,外部数组a的g?x)发生改变,间接实现了(jin)返回值的效果。当?dng)在该CZ代码中,因ؓ(f)只返回一个参敎ͼ所以作用体现的不明显,如果需要返回多个参数时Q用按址传递是一U不错的L?/div>
    因时间仓?j),疏漏之处隑օQ请大家U极补充和指正?/div>

Mark 2008-04-18 17:01 发表评论
]]> վ֩ģ壺 е| | Զ| | | ʯɽ| | | ϴ| Ҿ| | Ƶ| | | | | Ǩ| ̰| | | ̽| | ۷| | ̨| | Ϸ| ͤ| | | | ٳ| | ֦| | | ʯʨ| | | | |