??xml version="1.0" encoding="utf-8" standalone="yes"?>日本不卡免费一区,亚洲午夜一区,中文字幕一区二区三区四区久久http://www.aygfsteel.com/wangchenyang/zh-cnWed, 18 Jun 2025 08:21:36 GMTWed, 18 Jun 2025 08:21:36 GMT60从需求开发会议谈?/title><link>http://www.aygfsteel.com/wangchenyang/archive/2011/10/21/363072.html</link><dc:creator>日出星辰</dc:creator><author>日出星辰</author><pubDate>Fri, 21 Oct 2011 15:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangchenyang/archive/2011/10/21/363072.html</guid><wfw:comment>http://www.aygfsteel.com/wangchenyang/comments/363072.html</wfw:comment><comments>http://www.aygfsteel.com/wangchenyang/archive/2011/10/21/363072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangchenyang/comments/commentRss/363072.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangchenyang/services/trackbacks/363072.html</trackback:ping><description><![CDATA[<p>今天目l进行了一个小时的需求讨论,׃刚进入项目组不久Q对pȝ了解不多Q几乎没有发a一直在旁听?/p> <p>此次会议得出一点心得:pȝ开发中最重要的就?strong>解决Ҏ的敲?/strong>Q解x案选择对的话,q没有辑ֈ事半功倍的效果Q开发h员开发v来也能轻村־多?/p> <p>怎么才能产生一个好的解x案,q就与对pȝ、需求、技术的掌握E度了,E度高考虑事情周全、解x案越有效?/p> <p>由此也可以得出,企业在选择员工时应该看重分析问题、解决问题的能力Q而不是技术能力。当然了Q技术能力一般,解决问题能力可能也不是多好?/p> <p>一个好的程序员Q?strong>技术能?解决问题能力</strong>Q思维逻辑Q,所以技术是基础、必备的Q技术上要每天都有收P思维方式要时L意培养,不仅仅是解决开发问题时注意Q日常生zd样用?/p><img src ="http://www.aygfsteel.com/wangchenyang/aggbug/363072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangchenyang/" target="_blank">日出星辰</a> 2011-10-21 23:19 <a href="http://www.aygfsteel.com/wangchenyang/archive/2011/10/21/363072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你的成功在于你每天养成的习惯http://www.aygfsteel.com/wangchenyang/archive/2011/10/09/363073.html日出星辰日出星辰Sun, 09 Oct 2011 02:58:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/10/09/363073.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363073.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/10/09/363073.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363073.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363073.html要成功,马上准备有所付出吧!q就是每天你应该L的习惯?span class="Apple-converted-space"> 
1、不?ldquo;不可?rdquo;Q?span class="Apple-converted-space"> 

2、凡事第一反应Q?找方法,不找借口Q?span class="Apple-converted-space"> 
3、遇到挫折对自己说声Q太好了Q机会来了! 
4、不说消极的话,不落入消极的情AQ一旦发生立x面处理; 
5、凡事先订立目标Q?span class="Apple-converted-space"> 
6、行动前Q预先做计划Q?span class="Apple-converted-space"> 
7、工作时_每一分、每一U做有利于生产的事情Q?span class="Apple-converted-space"> 
8、随时用零碎的时间做零碎的事情; 
9、守Ӟ 
10、写Ҏ讎ͼ不要太依靠记忆; 
11、随时记录想到的灉|Q?span class="Apple-converted-space"> 
12、把重要的观c方法写下来Q随时提C己; 
13、走路比qx?0%Q肢体语a健康有力Q不懒散、萎靡; 
14、每天出门照镜子Q给自己一个自信的微笑Q?span class="Apple-converted-space"> 
15、每天自我反省一ơ; 
16、每天坚持一ơ运动; 
17、听心蟩一分钟Q在做重要的事情Q疲xQ紧张时Q烦w时。。。?span class="Apple-converted-space"> 
18、开会做前排Q?span class="Apple-converted-space"> 
19、微W; 
20、用心們֐Q不打断Ҏ的话Q?span class="Apple-converted-space"> 
21、说话有力,感觉自己的声韌产生感染力的场Q?span class="Apple-converted-space"> 
22、说话之前,先考虑一下对方的感觉Q?span class="Apple-converted-space"> 
23、每天有意识赞美别h三次以上Q?span class="Apple-converted-space"> 
24、即使表C感谢,如果别h帮助了你的话Q?span class="Apple-converted-space"> 
25、控制住不要让自׃Zؓ自己辩护的第一反应Q?span class="Apple-converted-space"> 
26、不用训斥、指责的口吻与别话; 
27、每天做一?rdquo;分外?ldquo;Q?span class="Apple-converted-space"> 
28、不关Q何方面,每天必须臛_做一?rdquo;q步一点点“Qƈ且有意识的提高; 
29、每天提?5分上班,推迟30分下班; 
30、每天下班前5分钟做一下今天的整理工作Q?span class="Apple-converted-space"> 
31、定期存钱; 
32、节俭; 
33、时常运?rdquo;头脑风暴“Q利用脑力激荡提升自己创新能力; 
34、恪守诚信; 
35、学会原谅?/span>



日出星辰 2011-10-09 10:58 发表评论
]]>
数字转换人民币大?/title><link>http://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363074.html</link><dc:creator>日出星辰</dc:creator><author>日出星辰</author><pubDate>Sat, 08 Oct 2011 02:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363074.html</guid><wfw:comment>http://www.aygfsteel.com/wangchenyang/comments/363074.html</wfw:comment><comments>http://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangchenyang/comments/commentRss/363074.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangchenyang/services/trackbacks/363074.html</trackback:ping><description><![CDATA[<p>通过JS完成Q能满多种览器,不之处是展C效果不是很理想Q而且最多只能输?3位数字,希望大家提出ҎҎ</p> <div id="wmqeeuq" class="cnblogs_code"> <pre><span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><br /><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>数字转换人民币大?span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">></span><span style="background-color: #f5f5f5; color: #000000;"><br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> convert() {<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> big </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Array(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> unit </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Array(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">,<br /> </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> num </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">num</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).value;<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;"> (num </span><span style="background-color: #f5f5f5; color: #000000;">==</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">) {<br /> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">输入为空Q请输入数字</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">false</span><span style="background-color: #f5f5f5; color: #000000;">;<br /> }<br /><br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;"> (num.match(</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">[^,.\d]</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">) </span><span style="background-color: #f5f5f5; color: #000000;">!=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">null</span><span style="background-color: #f5f5f5; color: #000000;">) {<br /> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">输入内容不合法,误入数?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">false</span><span style="background-color: #f5f5f5; color: #000000;">;<br /> }<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> temp </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;"> (num </span><span style="background-color: #f5f5f5; color: #000000;">!=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">null</span><span style="background-color: #f5f5f5; color: #000000;">&&</span><span style="background-color: #f5f5f5; color: #000000;">num.length</span><span style="background-color: #f5f5f5; color: #000000;"><=</span><span style="background-color: #f5f5f5; color: #000000;">13</span><span style="background-color: #f5f5f5; color: #000000;">) {<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;"> (</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> i </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">; i </span><span style="background-color: #f5f5f5; color: #000000;"><</span><span style="background-color: #f5f5f5; color: #000000;"> num.length; i</span><span style="background-color: #f5f5f5; color: #000000;">++</span><span style="background-color: #f5f5f5; color: #000000;">) {<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(num.charAt(i)</span><span style="background-color: #f5f5f5; color: #000000;">==</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">){<br /> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">输入内容不合法,不能?开?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">false</span><span style="background-color: #f5f5f5; color: #000000;">;<br /> }</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{<br /> temp </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> temp </span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;"> big[num.charAt(i)] </span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;"> unit[num.length </span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;"> i </span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">];<br /> }<br /> <br /> }<br /> }</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{<br /> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">最多只能输?3位数?/span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br /> </span><span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;"> </span><span style="background-color: #f5f5f5; color: #0000ff;">false</span><span style="background-color: #f5f5f5; color: #000000;">;<br /> }<br /> document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">rmb</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).innerText </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> temp;<br /> <br /> }<br /><br /> <br /> </span><span style="color: #0000ff;"></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span><br /><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><br /><br /><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><br /><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="num"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="num"</span><span style="color: #0000ff;">/></span><br /><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="convert"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="转换"</span><span style="color: #ff0000;"> onclick</span><span style="color: #0000ff;">="return convert()"</span><span style="color: #0000ff;">/></span><br /><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="rmb"</span><span style="color: #0000ff;">/></span><br /><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><br /><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span></pre> </div> <p><br /> </p> <p> </p><img src ="http://www.aygfsteel.com/wangchenyang/aggbug/363074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangchenyang/" target="_blank">日出星辰</a> 2011-10-08 10:36 <a href="http://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敲回车光标蟩C一个输入框Q只能在IE中用)http://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363075.html日出星辰日出星辰Sat, 08 Oct 2011 02:22:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363075.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363075.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/10/08/363075.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363075.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363075.html
<html>
<head>
<title> 敲回车光标蟩C一个输入框Q只能在IE下用) </title>
</head>
<script>
function turnNext(object){
if(object.keyCode==13){
object.keyCode
=9;
}
}
</script>
<body>
<table>
<tr>username<input type="text" name="name1" onkeydown="turnNext(event)"/></tr>
<tr>password<input type="text" name="name2" /></tr>
<tr>age<input type="text" name="name2" /></tr>
</table>
</body>
</html>



日出星辰 2011-10-08 10:22 发表评论
]]>
各种文g注释写法http://www.aygfsteel.com/wangchenyang/archive/2011/09/30/363076.html日出星辰日出星辰Fri, 30 Sep 2011 07:52:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/09/30/363076.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363076.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/09/30/363076.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363076.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363076.html

JSP注释

在JSP中注释最好用<%----注释内容----%>

JSP注释分两U?/span>

昄注释Q在客户端(源代码)可以看到

HTML中的注释<!---注释内容--->  

隐式注释Q在客户端(源代码)看不?/span>

使用JAVA中的“//”?ldquo;/*…………*/”Q以及JSP中自q注释<%----注释内容----%>

<%---JSP中的注释Q看不见---%>

<%

 //注释Q看不见 单行注释

 /*

 XXXXX

 注释Q看不见  多行注释

 YYYYY

*/

%>

<!----昄注释--->

<!--This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->

l果Q?lt;!--This page was loaded on 2010-12-01 13:24:32 -->

如果用显C注释,览器也会执行里面的内容Q速度会低?/span>

HTML注释

只有一U?nbsp;<!----注释内容-->

<!----q里是HTML注释--->

XML注释

只有一U?lt;!----注释内容-->

CSS注释

只有一U?nbsp;/*  注释内容 */

JavaScript注释

单行注释   //注释内容

多行注释  

/*

XXXX

注释内容

YYYY

*/



日出星辰 2011-09-30 15:52 发表评论
]]>
Struts1入门实例Q简单登录)http://www.aygfsteel.com/wangchenyang/archive/2011/09/19/363077.html日出星辰日出星辰Mon, 19 Sep 2011 15:00:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/09/19/363077.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363077.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/09/19/363077.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363077.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363077.html现在开始加入公司的核心目Q但׃目开发比较早Q所以用的技术不是很新潮Q前台用的还是struts1?/p>

虽然不是什么新技术,但仍可以从中学到好多东西的。花了一个晚上的旉l于把struts1的流E跑通了?/p>

省略了创E及加入jar包的q程Q直接进入正题?/p>

首页要在web.xml中添加相应的struts配置Q?/p>

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

然后在config所对应的目录下dstruts配置文gstruts-config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
>

<struts-config>

<!-- ActionForm -->
<form-beans>
<!-- name:名称 type:c\?-->
<form-bean name="loginForm" type="com.login.LoginForm">
</form-bean>
</form-beans>
<!-- 讄全局URLQ必d在Action前面Q这样Q何Action都可以?-->
<global-forwards>
<forward name="result" path="/result.jsp" />
</global-forwards>

<!-- 注册Action -->
<action-mappings>
<!-- nameQ名U?typeQ类路径 pathQ客LQJSPQ提交到服务器端时指定的路径QForm表单中的action=”/login.do" -->
<action path="/login" type="com.login.LoginAction"
name
="loginForm" scope="request">
<!-- 局部URLQ只有这个action可以使用 -->
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>


</struts-config>

注:Action和Form的关pL一个Action只能对应一个FormQ通过Action的name属性)
而一个Form可以被多个Action调用
LoginAction.java
package com.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class LoginAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm lf
= (LoginForm) form;
String username
= lf.getUsername();
String password
= lf.getPassword();
String errorInfo
= "";
String result
= UserManager.getInstance().login(username, password);
if (result.equals("success")) {
request.setAttribute(
"username", username);
return mapping.findForward("success");
}
else if (result.equals("username")) {
errorInfo
= "密码错误";
}
else {
errorInfo
= "用户名错?/span>";
}
request.setAttribute(
"errorInfo", errorInfo);
return mapping.findForward("error");
}

}
LoginForm.java
package com.login;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class LoginForm extends ActionForm {

private String username;
private String password;

public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println(
"--------reset()-------------");
super.reset(mapping, request);
}

public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println(
"--------validate()-------------");
return super.validate(mapping, request);
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}
Ҏ个h来说最重要的是前台jsp面没有掌握Q经常在面上花费很多时?/strong>
在编写JSP面时要用struts标签Q而我l常会忘?/pre>
引入jsp标签
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>首页</title>
	</head>

	<body>
		<html:form action="/login.do">
			用户名:<html:text property="username"></html:text><br/>
			密码: <html:password property="password"></html:password><br/>
			<html:submit>submit</html:submit>
		</html:form>
	</body>
</html>

 

展示l果Q将Action的返回值展C到JSP面上)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>Error</title>
	</head>
	<body>
		<bean:write name="errorInfo" scope="request" />
	</body>
</html>

 
 


日出星辰 2011-09-19 23:00 发表评论
]]>Ant学习实例http://www.aygfsteel.com/wangchenyang/archive/2011/09/14/363078.html日出星辰日出星辰Wed, 14 Sep 2011 14:03:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/09/14/363078.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363078.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/09/14/363078.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363078.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363078.html1.安装Ant

先从http://ant.apache.org/下蝲AntQ解压到M目录下面Q比如E:\Lab

然后讄环境变量

ANT_HOME=E:\Lab\apache-ant-1.8.2

path=E:\Lab\apache-ant-1.8.2\bin

最后验证是否安装成?/p>

在dos中输入antQ如果显C?/p>

Buildfile: build.xml does not exist!
Build failed

则安装成?/p>

2.基础元素

project元素

project元素是Ant文g的根元素

project的属?/p>

Attribute

Description

Required

name

目名称

No

default

当没有指定target时用的~省target

Yes

basedir

用于指定\径的位置。该属性没有指定时Q?Ant 的构件文件的附目录作为基准目录?/p>

No

target元素

target为Ant的基本执行单元,它可以包含一个或多个具体的Q务。多个target 可以存在怺依赖关系

Ant会依照depends属性中target出现的顺序(从左到右Q依ơ执行每个target。然而,要记住的是只要某个target依赖于一个targetQ后者就会被先执行?/p>

<target name="A"/>

<target name="B" depends="A"/>

<target name="C" depends="B"/>

<target name="D" depends="C,B,A"/>

假定我们要执行target D。从它的依赖属性来看,你可能认为先执行CQ然后BQ最后A被执行。错了,C依赖于BQB依赖于AQ所以先执行AQ然后BQ?/p>

然后CQ最后D被执行?/p>

一个target只能被执行一ơ,x有多个target依赖于它?/p>

若想更好的控制buildq程Q可以用if或unless?/p>

if 属?

    用于验证指定的属性是否存在,若不存在Q所?target 不会被执行?/p>

unless 属?

    该属性的功能?if 属性的功能正好相反Q它也用于验证指定的属性是否存在,若不存在Q所?target 会被执行?/p>

property元素

property元素可看作参量或者参数的定义Q即l常使用的变量)Qproject 的属性可以通过 property 元素来设定,也可?Ant 之外讑֮?/p>

name是变量的名称 value是变量的?要用某个变量时?{name}方式调用?/p>

3.完整CZ

创徏一个java目

HelloWorld.java

package com.test;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello world");
	}
}

~写build.xml文g

注:build.xml攑֜和src同目录Q而不是在src下目录

目录l构?/p>

MyProject <dir>
|--lib <dir> Q-库目?
|--classes <dir> Q-目的文g目录
|--src <dir> Q-源文件目?
|--doc <dir> Q-api文档目录
|--build.xml

<?xml version="1.0" encoding="UTF-8" ?>
<project name="helloWorld" default="run" basedir=".">
	<property name="src" value="src"/>
	<property name="dest" value="build/classes"/>
	<property name="lib" value="lib"></property>
	<property name="hello_jar" value="hello1.jar"></property>
	<!--初始?之前执行删除操作-->
	<target name="init" depends="clean">
		<mkdir dir="${dest}"/>
	</target>
	<!--~译生成class文g -->
	<target name="compile" depends="init">
		<javac srcdir="${src}" destdir="${dest}"></javac>
	</target>
	<!--编译后的class文g打包-->
	<target name="build" depends="compile">
		<mkdir dir="${lib}"/>
		<jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar>
	</target>
	<target name="run" depends="build">
		<java classname="com.test.HelloWorld" classpath="${lib}/${hello_jar}"></java>
	</target>
	<!--删除-->
	<target name="clean">
		<delete dir="${dest}"></delete>
		<delete dir="${lib}"></delete><!-- 是dir 删除目录 Q不是file 删除文g-->
	</target>
</project>
整个q程Q初始化----~译----打包---攑ֈ相应的位|?

参考:

http://www.cnblogs.com/philander/articles/1782254.html

http://www.cnblogs.com/elric/archive/2011/03/19/1988840.html



日出星辰 2011-09-14 22:03 发表评论
]]>
请不要忘讎ͼq有“思考”这个东ѝ{?/title><link>http://www.aygfsteel.com/wangchenyang/archive/2011/09/08/363079.html</link><dc:creator>日出星辰</dc:creator><author>日出星辰</author><pubDate>Thu, 08 Sep 2011 01:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangchenyang/archive/2011/09/08/363079.html</guid><wfw:comment>http://www.aygfsteel.com/wangchenyang/comments/363079.html</wfw:comment><comments>http://www.aygfsteel.com/wangchenyang/archive/2011/09/08/363079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangchenyang/comments/commentRss/363079.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangchenyang/services/trackbacks/363079.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="cnblogs_post_body"> <p>【{自?a >http://www.cnblogs.com/tanky_woo/archive/2011/09/07/2169559.html</a></p> <p>最q准备参加实习生招聘Q于是开始关注v了各大公司的面试题,在看|易面试题的时候看Cq么一题:</p> <p><span style="background-color: #c0c0c0;"><span style="color: #ff0000;">Z么现在的计算机采用二q制Q而不是八q制或十六进Ӟ你认Z后的计算Z采用几进Ӟ</span></span></p> <p>我当时就在问自己Qؓ什么?但是无果Q我隐约记得很多书上都讲q,但是Zq求速度Q追求更重要的知识,我把q部分内容给自动滤过了?/p> <p>于是我又在想Q是什么原因导致这L呢?</p> <p>我开始回忆我的学习过E,我发玎ͼ在大一大二开始接触编E时Q我q是很喜Ƣ思考的Q但是ؓ何后来就L了呢Q?/p> <p>于是我又开始分析我的学习方法,没错Q就是学习方法出问题?mdash;我过于的q求速度Q追求广泛,很多知识Q我都是一扫而过Q很多代码,我都是看一看就自以为懂了,曄刚开始学Ӟ我还l常把代码往电脑上敲Q把代码抄在U怸Q然而现在却是直接扫一下?/p> <p>我想C一个词—<strong>物极必反</strong>。虽然我看的很多Q看的很快,但是收效却不大?/p> <p>我突然就被惊醒了Q是的,扪心自问一下,现在记在我脑里的,q有多少知识呢?你了解的知识多吗Q你看书仔细吗?</p> <p>我相信很多h都和我一PZ应付考试Q应付以后的面试Q工作,都在疯狂的看书,疯狂的吸U知识,但是Q你真的掌握了这些知识吗Q?/p> <p>写到q里的时候,我又惌v来我昨天在伯乐在U看到的<a target="_blank"><span style="color: #313428;" color="#313428">一文?/span></a>Q学一门语aQ要了解他的历史Q哲学观Q这也是一U思考:</p> <p>比如文章中D例的Q拿python来说Q他的设计哲学是“用一U方法,最好是只有一U方法来做一件事”Q而perl的设计哲学是“L多种Ҏ来做同一件事”?/p> <p>其实Q这是多么有的一件事Q然后,p栯大部分hl忽略了。想到这Q我都替自己感觉到可惜?/p> <p>q好今天发现了这个问题,像《让子弹飞》里面说的一?ldquo;步子要一步步的走Q迈得大了,会扯着?rdquo;Q确实,知识也要一步步的积累,没有什么快速掌握的ҎQ最好的办法是一步一步的U篏Q要?strong>思?/strong>Q没有思考,没有进步;没有思考,没有升华?/p> <p>我们应该时刻要记住,学,应该是一Un受的q程Q重点不在于l果Q而是q程Q一U发散思维的过E?/p> <p>希望自己能时刻记住这一点,能应付好接下来的实习生求职?/p> <p>注:上面那个问题的答案,大家可以怺交流下,我在|上扑ֈq篇讲的不错Q?/p> <p><a ><span style="color: #313428;" color="#313428">http://blog.csdn.net/hkx1n/article/details/4280036</span></a></p> </div> <script type="text/javascript">// <![CDATA[ if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = true; var cb_blogId = 72950; var cb_entryId = 2169559; var cb_blogApp = "tanky_woo"; var cb_blogUserGuid = "99a47d77-f68b-df11-ba8f-001cf0cd104b"; var cb_entryCreatedDate = '2011/9/7 10:57:00'; // ]]></script><img src ="http://www.aygfsteel.com/wangchenyang/aggbug/363079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangchenyang/" target="_blank">日出星辰</a> 2011-09-08 09:10 <a href="http://www.aygfsteel.com/wangchenyang/archive/2011/09/08/363079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IT草根职场必看【{?/title><link>http://www.aygfsteel.com/wangchenyang/archive/2011/09/07/363080.html</link><dc:creator>日出星辰</dc:creator><author>日出星辰</author><pubDate>Wed, 07 Sep 2011 13:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangchenyang/archive/2011/09/07/363080.html</guid><wfw:comment>http://www.aygfsteel.com/wangchenyang/comments/363080.html</wfw:comment><comments>http://www.aygfsteel.com/wangchenyang/archive/2011/09/07/363080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangchenyang/comments/commentRss/363080.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangchenyang/services/trackbacks/363080.html</trackback:ping><description><![CDATA[<p>前言:真实世界中的事情往往不是我们惌那么单的,软g目的复杂的业务也不是市面上的什?rdquo;_N,企业U?rdquo;之类书籍能够讲述明白的。不要以为管理系l就是数据增删改查,不要以ؓ数据相差零点零几没有什么?/p> <p>你要清楚Q作Z个开发h员,你最值得骄傲的是什么,职业操守是什么?/p> <p>     q里有一炚w要的明白的是Q公ؓ什么请你?说的直接一点,公司不是慈善机构Q公司就是花p你来为她做事Q创造h值的Q一个不能创造h值的员工Q公怼留你吗?</p> <p>    l于{到了上班的那天Q我对Q何h都珍惜今天的q个ZQ因为没有h知道Q在此之前,我经历了怎样的艰辛?/p> <p>    Leaderl了我系l的整个数据字典Q所有数据库表的图)Q说了一句:“理解所有表的关p,下午我给你讲讲系l的业务背景”?/p> <p>     看到q里Q有一点要告诉大家的是Q不要再天真的以为公怼花几个星期,几个月的事情Q让你慢慢的熟悉业务Q熟悉相关的知识Q一切要靠自己去快速的领悟与消化,q是一?ldquo;物竞天择Q能者居?rdquo;的社会,不是没有谁就不行?/p> <p>    说道q里Q打个岔Q同时这里给刚刚毕业或者踏入整个行业的朋友们提个醒Q不要再以自己大学多么有名而骄Ԍ也不要再因ؓ自己以前的成l多么的好而得以?strong>一个h的学习能力就军_了他以后发展的深度和q度。胸怀军_发展的高度!</strong></p> <p>    <strong> 不要再以为有Z像老师那样一行行的解释代码是什么意思,不要以ؓ你是ChQ犯错就?ldquo;理所当然”。No excuseQ?/strong></p> <p>     在公司,我是最的Q周围都是有几年工作l历的同事,q有四十多岁的。如果公司要裁hQ在中国itQ,那么Ch和年U很大的是目标体Q在你没有核心竞争力和很好的人缘之前Q,Ch是最大的目标Q压力!</p> <p>     毕竟自己从大二就开始在外面D和实习,q点觉悟q是有的。所以,接到q第一个Q务之后,自己开始行动v来?/p> <p>     面对上百张数据表Q无疑是个负责的蜘蛛|,怎么办?那就得看你如何处理了。如果说Q你要找人帮忙,也得“察言观色”。下面,我们ql说来?/p> <p>     首先说如何理解上癑ּ表,无疑Q从pȝ的功能入手时最快速的。系l的功能一般是分模块实现的Q那么表势必和相关的功能挂钩Q那么把表按照功能划分来看,很方便了?/p> <p>     所以这里就告诫朋友们一点:要学会逆向思维。一直做目的时候,L先设计功能,让后设计表,是吧Q现在反推,从表到功能,再回到表Q就能够把问题变得简单一点!不要以ؓq很单,我这里只是一个简单的例子而已Q如果问题更加复杂,怎么办?Q?/p> <p>     因ؓ我是ChQ计机的权限有限,很多的资源都不能讉KQ也没有开通查看代码的权限。但是,我现在需要可以运行的pȝ来帮助我Q怎么办?</p> <p>那么涉及到W二个问题,如何找h帮忙Q?/p> <p>     不要M拉几的一上去随便找个hQ然后开口说Q?ldquo;帮我一?ldquo;Q要知道Qh家凭什么帮你?人家有事情要忙吗Q这个世界没有谁帮助谁是理所当然的!感激帮助q你的朋友和亲h吧!</p> <p>      所以,<strong>要学?ldquo;察言观色“Q这里不是贬义词Q做灵光?/strong>Q?/p> <p>      首先Q最好请CleaderQ问他是否有旉Q态度要好Q如果没有,那么p问他Q除了他q有谁可以问?/p> <p>      当问另外一个h的时候,首先要观察这个h是不是忙的那U不可开交的样子Q如果是Q那么,现在最好不要问Q而是自己再次评估一下,如果要找人帮忙,估计要花人家多长的时_如何估算Q这是个h的本事了Q呵呵!我这里暂且不_免得又朋友说“你不_我也知道“ Q呵呵!</p> <p>      然后Q等自己q边旉也估计好之后Q然后态度很好的告诉你需要寻求帮助的人:“可以打扰你几分钟?ldquo;Q然后,你就告诉他,你需要系l的一个可以运行的版本! 如果人家没有旉Q不要退~,你就要追问,估计什么时候可以有旉Q是否有文档Q先让自q悉下。然后你到那个点在再去问,不要忘记Q随时注意态度Q?/p> <p>     不管如何Q不要靠指望别hQ要靠自q一些经验或相关文档Q尽力的理解?strong>一句话Q用心的Q带着脑子做事情!</strong></p><img src ="http://www.aygfsteel.com/wangchenyang/aggbug/363080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangchenyang/" target="_blank">日出星辰</a> 2011-09-07 21:05 <a href="http://www.aygfsteel.com/wangchenyang/archive/2011/09/07/363080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各种创徏单例模式的优~点http://www.aygfsteel.com/wangchenyang/archive/2011/09/05/363081.html日出星辰日出星辰Mon, 05 Sep 2011 13:54:00 GMThttp://www.aygfsteel.com/wangchenyang/archive/2011/09/05/363081.htmlhttp://www.aygfsteel.com/wangchenyang/comments/363081.htmlhttp://www.aygfsteel.com/wangchenyang/archive/2011/09/05/363081.html#Feedback0http://www.aygfsteel.com/wangchenyang/comments/commentRss/363081.htmlhttp://www.aygfsteel.com/wangchenyang/services/trackbacks/363081.html单例模式应用于一个类只有一个实例的情况Qƈ且ؓ其实例提供一个全局的访问点?/p>

特点Q?/p>

1.一个类只有一个实?/p>

2.自己创徏q个实例

3.整个pȝ只能用这个实?/p>

应用场景

外部资源Q每台计机有若q个打印机,但只能有一个PrinterSpoolerQ以避免两个打印作业同时输出到打印机?/p>

内部资源Q大多数软g都有一个(或多个)属性文件存攄l配|,q样的系l应该有一个对象管理这些属性文件?/p>

实现方式

1.饿汉式:单例实例在类装蝲时就构徏Q急切初始化。(预先加蝲法)

/**
 * 饿汉式(推荐Q?
 *
 */
public class Singleton1 {

	private Singleton1() {
	}

	public static Singleton1 instance = new Singleton1();

	public Singleton1 getInstance() {
		return instance;
	}

}

优点 1.U程安全
2.在类加蝲的同时已l创建好一个静态对象,调用时反应速度?/td>
~点 资源效率不高Q可能getInstance()永远不会执行刎ͼ但执行该cȝ其他静态方法或者加载了该类Qclass.forName)Q那么这个实例仍然初始化

 

2.懒汉式:单例实例在第一ơ被使用时构建,延迟初始化?/p>

class Singleton2 {
	private Singleton2() {
	}

	public static Singleton2 instance = null;

	public static Singleton2 getInstance() {
		if (instance == null) {
              //多个U程判断instance都ؓnullӞ在执行new操作时多U程会出现重复情?
			instance = new Singleton2();
		}
		return instance;
	}
}

懒汉式在单个U程中没有问题,但在多线E就可能会出C个或多个Singleton2实例情况Q?/p>

虽然后面实例化的Singleton2会覆盖前面实例化的Singleton2Q但最好避免这L情况?/p>

改进方式是加锁synchornized

class Singleton3 {
	private Singleton3() {
	}

	public static Singleton3 instance = null;

	public static synchronized Singleton3 getInstance() {
		if (instance == null) {
			instance = new Singleton3();
		}
		return instance;
	}
}
优点 资源利用率高Q不执行getInstance()׃会被实例Q可以执行该cȝ其他静态方?/td>
~点 W一ơ加载时不够快,多线E用不必要的同步开销?/td>


3.双重?/p>

class Singleton4 {
	private Singleton4() {
	}

	public static Singleton4 instance = null;

	public static Singleton4 getInstance() {
		if (instance == null) {
			synchronized (Singleton4.class) {
				if (instance == null) {
					instance = new Singleton4();
				}
			}
		}
		return instance;
	}
}

优点 资源利用率高Q不执行getInstance()׃被实例,可以执行该类其他静态方?/td>
~点 W一ơ加载时反应不快Q由于java内存模型一些原因偶失?/td>

 

4.静态内部类

class Singleton5 {
	private Singleton5() {
	}

	private static class SingletonHelp {
		static Singleton5 instance = new Singleton5();
	}

	public static Singleton5 getInstance() {
		return SingletonHelp.instance;
	}
}

优点 资源利用率高Q不执行getInstance()不被实例Q可以执行该cd他静态方?/td>
~点 W一ơ加载时反应不够?/td>

 

ȝQ一般采用饿汉式Q?Q,若对资源十分在意可以采用静态内部类Q?Q,不徏议采用懒汉式及双重检(2?Q?/font>

另外

对于W二U可以采用volatile方式

volatile用更低的代h代替同步

解释Q同步的代h主要有覆盖范围决定,如果可以降低同步的覆盖范_可大q提升性能?/p>

而volatile覆盖范围是变量别的Q因此同步代价很低?/p>

volatile原理Q告诉处理器Q不要将其放入工作内存,而是直接在主存操作。因此,当多处理器或多线E在讉K该变量时

都将直接操作dQ这在本质上做到了变量共享?/p>

volation优势Q?/p>

1.更大的程度吞吐量

2.更少的代码实现多U程

3.E序伸羃性好

4.比较好理解,无需太高的学习成?/p>

volatile不Q?/p>

1.Ҏ出问?/p>

2.比较难设?/p>

参考文?/strong>

http://yiminghe.iteye.com/blog/404334

http://developer.51cto.com/art/201103/249322.htm



日出星辰 2011-09-05 21:54 发表评论
]]>
վ֩ģ壺 ʲ| | Ϫ| | | | ܿ| | | | ɽʡ| | Ͻ| | | | ī| | | | ͭϿ| | Ҫ| | | ˮ| | ˳| | | ګ| ̩| ̩| ֻ| | ȷ| ƽ| | | Ϸ| |