??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品自产拍在线观看,亚洲国产精品成人久久,亚洲精品动漫人成3d在线http://www.tkk7.com/mlh123caoer/无ؓ则可为,无ؓ则至深! zh-cnSun, 23 Mar 2025 22:03:27 GMTSun, 23 Mar 2025 22:03:27 GMT60服务器端Java VM参数配置http://www.tkk7.com/mlh123caoer/archive/2011/11/06/362893.html草儿草儿Sun, 06 Nov 2011 05:18:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2011/11/06/362893.htmlhttp://www.tkk7.com/mlh123caoer/comments/362893.htmlhttp://www.tkk7.com/mlh123caoer/archive/2011/11/06/362893.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/362893.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/362893.html
 内部服务参数配置Q?/div>JAVA_OPTS="-server -XX:+UseParNewGC -Xms1024m -Xmx2048m -XX:MaxNewSize=128m -XX:NewSize=128m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:CMSInitiatingOccupancyFraction=1 -XX:+CMSIncrementalMode -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=20000 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0  -XX:CMSIncrementalDutyCycleMin=10 -XX:CMSIncrementalDutyCycle=30 -XX:CMSMarkStackSize=8M -XX:CMSMarkStackSizeMax=32M"

前端应用参数配置Q?br />
 JAVA_OPTS="-server  -Xmx4096m -Xms4096m -Xmn480m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=8 -XX:CMSFullGCsBeforeCompaction=0 
-XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 
-Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0" 

参数说明Q?/p>

-Xmx1280mQ设|JVM最大可用内存ؓ1280m。最大可设ؓ3550m。具体应用可适当调整?/p>

-Xms1280mQ设|JVM初始内存?280m。此值可以设|与-Xmx相同Q以避免每次垃圾回收完成后JVM重新分配内存?/p>

-Xmn480mQ设|年M大小?80m。整个堆大小=q轻代大?+ q老代大小 + 持久代大。持久代一般固定大ؓ64mQ所以增大年M后,会减小q老代大小。此值对pȝ性能影响较大QSun官方推荐配置为整个堆?/8?/p>

-Xss256kQ设|每个线E的堆栈大小。JDK5.0以后每个U程堆栈大小?MQ以前每个线E堆栈大ؓ256K。更具应用的U程所需内存大小q行调整。在相同物理内存下,减小q个D生成更多的线E。但是操作系l对一个进E内的线E数q是有限制的Q不能无限生成,l验值在3000~5000左右?/p>

-XX:PermSize=64mQ指?jvm ?Perm Generation 的最倹{?q个参数需要看你的实际情况。可以通过jmap 命o看看到底需要多?/p>

-XX:MaxPermSize=128mQ指?Perm Generation 的最大?/p>

-XX:+UseConcMarkSweepGCQ?/strong>讄q发攉?/p>

-XX:ParallelGCThreads=8Q?/strong>配置q行攉器的U程敎ͼ卻I同时多少个线E一赯行垃圑֛收。此值最好配|与处理器数目相{?/p>

-XX:CMSFullGCsBeforeCompaction=0Q?/strong>׃q发攉器不对内存空间进行压~、整理,所以运行一D|间以后会产生“片”Q得运行效率降低。此D|运行多次GC以后对内存空间进行压~、整理?/p>

-XX:+UseCMSCompactAtFullCollectionQ?/strong>打开对年老代的压~。可能会影响性能Q但是可以消除碎片?/p>

-XX:SurvivorRatio=8Q?/strong>每个survivor space ?eden之间的比例?/p>

-XX:MaxTenuringThreshold=7Q?/strong>讄垃圾最大年龄。如果设|ؓ0的话Q则q轻代对象不l过Survivor区,直接q入q老代。对于年老代比较多的应用Q可以提高效率。如果将此D|ؓ一个较大|则年M对象会在Survivor行多ơ复Ӟq样可以增加对象再年M的存zL_增加在年M卌回收的概率?/p>

-XX:GCTimeRatio=19Q?/strong>讄垃圾回收旉占程序运行时间的癑ֈ比,公式?/(1+n)?/p>

-XnoclassgcQ?/strong>用cd圑֛Ӟ性能会有一定提高?/p>

-XX:+DisableExplicitGCQ?/strong>当此参数打开Ӟ在程序中调用System.gc()会不v作用。默认是off?/p>

-XX:+UseParNewGCQ?/strong>讄q轻代ؓq行攉。可与CMS攉同时使用?/p>

-XX:-CMSParallelRemarkEnabledQ?/strong>在?UseParNewGC 的情况下 , 量减少 mark 的时间?/p>

-XX:CMSInitiatingOccupancyFraction=70Q?/strong>指示?old generation 在用了 70% 的比例后 , 启动 concurrent collector?/p>

-XX:SoftRefLRUPolicyMSPerMB=0Q?/strong>每兆堆空闲空间中SoftReference的存zL间?/p>



草儿 2011-11-06 13:18 发表评论
]]>
Java heap dump触发和分?/title><link>http://www.tkk7.com/mlh123caoer/archive/2011/10/04/360020.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Tue, 04 Oct 2011 14:31:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2011/10/04/360020.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/360020.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2011/10/04/360020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/360020.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/360020.html</trackback:ping><description><![CDATA[<span id="868mcwi" class="Apple-style-span" style="color: #4e4e4e; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: normal; background-color: #ffffff; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">Z分析java应用的内存泄漏,使用thread dump往往解决不了问题。用jstat【egQ?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jstat </a>-gcutil pid 1000 5】工h看运行的java应用的heap size,perm size ,survivor ratio{,当时你无法知道是什么对象把堆填满了?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     什么是 Java heap dump<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">      首先需要搞懂什么是java heapQjava heap是分配给实例cd数组对象q行数据区,所有javaU程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个旉点上打了个快照(snapshotQ?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">     如果你不懂啥是snapshotQ点?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">q里</a></span></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     触发 Java heap dump</strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">有以下方法出发heap dump</span></p><ol style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用$JAVA_HOME/bin/<a style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jmap</a> -dump来触发,egQjmap -dump:format=b,file=/home/longhao/heamdump.out <pid></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用$JAVA_HOME/bin/<a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jcosole</a>中的MBeanQ到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文g在java应用的根目录下面?/span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">在应用启动时配置相关的参?-XX:+HeapDumpOnOutOfMemoryErrorQ当应用抛出OutOfMemoryError时生成dump文g?/span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用<a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">hprof</a>。启动虚拟机加入-Xrunhprof:head=siteQ会生成java.hprof.txt文g。该配置会导致jvmq行非常的慢Q不适合生环境?/span></li></ol><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     分析 Java heap dump</strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 588px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     1Q用IBM HeapAnalyzer<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">    <a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">IBM HeapAnalyzer</a>是一Ƒօ费的JVM内存堆的囑Ş分析工具Q它可以有效的列丑֠的内存用状况,帮助分析Java内存泄漏的原因?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">    下蝲解压后有一个ha413.jarQ执? java -Xmx512m -jar ha413.jar /home/longhao/heapdump.out</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">     执行l果如图所C:</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; text-align: center; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><img alt="" src="http://farm6.static.flickr.com/5176/5573840400_7d8e21a701.jpg" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">   </span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 588px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     2Qjhat</strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">   <a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; "> jhatQJava Head Analyse Tool Q?/a>是用来分析java堆的命oQ可以将堆中的对象以html的Ş式显C出来,包括对象的数量,大小{等Qƈ支持对象查询语言OQLQ分析相关的应用后,可以通过http://localhost:7000来访问分析结果?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">    CZ: $JAVA_HOME/bin/jhat -J-Xmx512m /home/longhao/dump.out<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; text-align: center; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><img alt="" height="500" src="http://farm6.static.flickr.com/5013/5573880930_5f758206f8.jpg" width="474" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 588px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">     3QEclipse MemoryAnalyzer<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">   <a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; "> Eclipse Memory Analyzer</a>是一个快速ƈ且功能强大的Java heap分析器,能够帮助你查扑ֆ存泄漏和减少内存消耗。在File>Acquire Heap Dump>configure>HPROF jmap dump provider讄一下分析应用的JDKQ点ȝ兛_用列表来生成heap dumpq分析?br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; text-align: center; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">    <img alt="" src="http://farm6.static.flickr.com/5303/5573880998_98d2cd5d98.jpg" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">    在socketQnio中的有些API中,甌的内存是直接向OS要的Q在堆中分析内存是查看不到的Q可以通过-XX:MaxDirectMemorySize=<size>来设|应用向OS直接甌的最大内存数?/span></p></div></span><img src ="http://www.tkk7.com/mlh123caoer/aggbug/360020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2011-10-04 22:31 <a href="http://www.tkk7.com/mlh123caoer/archive/2011/10/04/360020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置Linuxpȝ环境变量的三U方?/title><link>http://www.tkk7.com/mlh123caoer/archive/2011/08/26/357357.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Fri, 26 Aug 2011 07:11:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2011/08/26/357357.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/357357.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2011/08/26/357357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/357357.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/357357.html</trackback:ping><description><![CDATA[<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif, 宋体; line-height: 25px; color: #333333; "><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">在linux下进行Java开发需要配|环境变量,下面介绍了三U配|环境变量的Ҏ?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "><br /></p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">1.修改/etc/profile文g</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">如果你的计算Z仅作为开发用时推荐使用q种ҎQ因为所有用Lshell都有权用这些环境变量,可能会给pȝ带来安全性问题?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(1)用文本编辑器打开/etc/profile</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(2)在profile文g末尾加入Q?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">JAVA_HOME=/usr/share/jdk1.5.0_05</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">PATH=$JAVA_HOME/bin:$PATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export JAVA_HOME</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export PATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export CLASSPATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(3)重新d</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">注解Q?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">a. 你要?/usr/share/jdk1.5.0_05jdk 改ؓ你的jdk安装目录</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">b. linux下用冒号“:”来分隔\?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的?在设|环境变量时特别要注意不能把原来的值给覆盖掉了Q这是一U常见的错误?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">d. CLASSPATH中当前目?#8220;.”不能?把当前目录丢掉也是常见的错误?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">e. export是把q三个变量导Zؓ全局变量?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">f. 大小写必M格区分?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">2. 修改.bashrc文g  </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">q种Ҏ更ؓ安全Q它可以把用这些环境变量的权限控制到用L别,如果你需要给某个用户权限使用q些环境变量Q你只需要修改其个h用户ȝ录下?bashrc文g可以了?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(1)用文本编辑器打开用户目录下的.bashrc文g</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(2)?bashrc文g末尾加入Q  </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">set JAVA_HOME=/usr/share/jdk1.5.0_05</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export JAVA_HOME</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">set PATH=$JAVA_HOME/bin:$PATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export PATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export CLASSPATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">(3)重新d</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">3. 直接在shell下设|变?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">不赞成用这U方法,因ؓ换个shellQ你的设|就无效了,因此q种Ҏ仅仅是时用,以后要用的时候又要重新设|,比较ȝ?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; "> </p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">只需在shelll端执行下列命oQ?/p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export JAVA_HOME=/usr/share/jdk1.5.0_05</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export PATH=$JAVA_HOME/bin:$PATH</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-indent: 2em; ">export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar</p></span></div><img src ="http://www.tkk7.com/mlh123caoer/aggbug/357357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2011-08-26 15:11 <a href="http://www.tkk7.com/mlh123caoer/archive/2011/08/26/357357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB DMLQDCLQDDL具体包含哪些操作http://www.tkk7.com/mlh123caoer/archive/2011/08/25/357307.html草儿草儿Thu, 25 Aug 2011 13:50:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2011/08/25/357307.htmlhttp://www.tkk7.com/mlh123caoer/comments/357307.htmlhttp://www.tkk7.com/mlh123caoer/archive/2011/08/25/357307.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/357307.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/357307.htmlDDL 
Data Definition Language (DDL) statements are used to define the database structure or schema. Some examples: 

CREATE - to create objects in the database 
ALTER - alters the structure of the database 
DROP - delete objects from the database 
TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed 
COMMENT - add comments to the data dictionary 
RENAME - rename an object 

DML 
Data Manipulation Language (DML) statements are used for managing data within schema objects. Some examples: 

SELECT - retrieve data from the a database 
INSERT - insert data into a table 
UPDATE - updates existing data within a table 
DELETE - deletes all records from a table, the space for the records remain 
MERGE - UPSERT operation (insert or update) 
CALL - call a PL/SQL or Java subprogram 
EXPLAIN PLAN - explain access path to data 
LOCK TABLE - control concurrency 

DCL 
Data Control Language (DCL) statements. Some examples: 

GRANT - gives user's access privileges to database 
REVOKE - withdraw access privileges given with the GRANT command 

TCL 
Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions. 

COMMIT - save work done 
SAVEPOINT - identify a point in a transaction to which you can later roll back 
ROLLBACK - restore database to original since the last COMMIT 
SET TRANSACTION - Change transaction options like isolation level and what rollback segment to use 

草儿 2011-08-25 21:50 发表评论
]]>
Calenderhttp://www.tkk7.com/mlh123caoer/archive/2009/11/06/301491.html草儿草儿Fri, 06 Nov 2009 12:49:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2009/11/06/301491.htmlhttp://www.tkk7.com/mlh123caoer/comments/301491.htmlhttp://www.tkk7.com/mlh123caoer/archive/2009/11/06/301491.html#Feedback2http://www.tkk7.com/mlh123caoer/comments/commentRss/301491.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/301491.html

 import java.util.Calendar;

import java.util.GregorianCalendar;

public class CalTest {

public static void main(String[] argv) {

CalTest calTest = new CalTest();

calTest.cal(2009, 11);

}

public void cal(final int year, final int month) {

Calendar calendar = new GregorianCalendar();

calendar.set(year, month-1, 1);

int week = calendar.get(GregorianCalendar.DAY_OF_WEEK) - 1;

int days = calendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);

System.out.println();

System.out.println("日\t一\t二\t三\t四\t五\t?);

for(int i = 0; i < week; i++) {

System.out.println("\t");

}

for(int i = 1; i <= days; i ++) {

System.out.print(i + "\t");

if((week + i)%7 == 0) {

System.out.println();

}

}

}


}


q行效果Q?/p>




草儿 2009-11-06 20:49 发表评论
]]>
Java开发者需坚守的十大基本准?/title><link>http://www.tkk7.com/mlh123caoer/archive/2009/09/29/296938.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Tue, 29 Sep 2009 11:52:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2009/09/29/296938.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/296938.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2009/09/29/296938.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/296938.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/296938.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: 宋体; font-size: 13px; "> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">有许多标准和实践准则可适用于Java开发者,但此处要说的Q是每个Java开发者需坚守的基本原则?br style="font-size: 12px; " /> <br style="font-size: 12px; " />    </font><strong>一、ؓ代码加注释?/strong><font size="3">虽然每个人都知道q点Q但有时却不自觉忘了履行Q今天你“忘了”加注释了吗?虽然注释对程序的功能没什?#8220;贡献”Q但q一D|_比如说两星期之后或者更长,回过头来看看自己的代码,说不定已l记不住它是q什么的了。如果这些代码是你个人的Q那q算是走q了Q不q的是,当然了,大多数时候都是别人的不幸Q很多时候大安是在为公司写代码Q写代码的h也许早已l离开了公司,但别忘了一句古话,有来有往嘛,Z人,也ؓ我们自己Q请Z的代码加上注释?br style="font-size: 12px; " /> <br style="font-size: 12px; " /> </font><strong>   二、不要让事情复杂化?/strong><font size="3">E序员有时候L对简单问题想出复杂的解决ҎQ比如说Q在只有五个用户的程序中引入EJB、对E序实现了ƈ不需要的框架QframeworkQ,之类的还有属性文件、面向对象解x案、多U程{等。ؓ什么要q样做呢Q也许我们ƈ不知道是否这样会更好Q但q样做也许可以学C些新东西Q或者让自己更感兴趣一些。如果是不知道ؓ什么这样做Q徏议多hl验丰富的程序员Q如果是Z个h的目的,ȝ让自己更专业一炏V?br style="font-size: 12px; " /> <br style="font-size: 12px; " />    </font><strong>三、始l牢记—?#8220;即是好QLess is moreQƈ不L对的”?/strong><font size="3">代码效率虽然很重要,但在许多解决Ҏ中,~写更少的代码ƈ不能改善q些代码的效率,L下面q个单的例子Q?/font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">if</span><span style="color: #000000; ">(newStatusCode.equals(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">SD</span><span style="color: #000000; ">"</span><span style="color: #000000; ">) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> (sellOffDate </span><span style="color: #000000; ">==</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> todayDate.compareTo(sellOffDate)</span><span style="color: #000000; "><</span><span style="color: #000000; ">0</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> (lastUsedDate </span><span style="color: #000000; ">!=</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">&&</span><span style="color: #000000; "> todayDate.compareTo(lastUsedDate)</span><span style="color: #000000; ">></span><span style="color: #000000; ">0</span><span style="color: #000000; ">)) </span><span style="color: #000000; ">||</span><span style="color: #000000; "> (newStatusCode.equals(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">OBS</span><span style="color: #000000; ">"</span><span style="color: #000000; ">) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> (OBSDate </span><span style="color: #000000; ">==</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> todayDate.compareTo(OBSDate)</span><span style="color: #000000; "><</span><span style="color: #000000; ">0</span><span style="color: #000000; ">))){ newStatusCode </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">"</span><span style="color: #000000; ">NYP</span><span style="color: #000000; ">"</span><span style="color: #000000; ">; }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">能看明白if条g语句是干什么的吗?能想出来是谁写的q段代码吗?如果把它分成两段独立的if语句Q是不是更容易理解呢Q下面是修改后的代码Q?/font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">if</span><span style="color: #000000; ">(newStatusCode.equals(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">SD</span><span style="color: #000000; ">"</span><span style="color: #000000; ">) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> (sellOffDate </span><span style="color: #000000; ">==</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> todayDate.compareTo(sellOffDate)</span><span style="color: #000000; "><</span><span style="color: #000000; ">0</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> (lastUsedDate </span><span style="color: #000000; ">!=</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">&&</span><span style="color: #000000; "> todayDate.compareTo(lastUsedDate)</span><span style="color: #000000; ">></span><span style="color: #000000; ">0</span><span style="color: #000000; ">))){ newStatusCode </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">"</span><span style="color: #000000; ">NYP</span><span style="color: #000000; ">"</span><span style="color: #000000; ">; }</span><span style="color: #0000ff; ">else</span> <span style="color: #0000ff; ">if</span><span style="color: #000000; ">(newStatusCode.equals(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">OBS</span><span style="color: #000000; ">"</span><span style="color: #000000; ">) </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> (OBSDate </span><span style="color: #000000; ">==</span> <span style="color: #0000ff; ">null</span> <span style="color: #000000; ">||</span><span style="color: #000000; "> todayDate.compareTo(OBSDate)</span><span style="color: #000000; "><</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)) { newStatusCode </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">"</span><span style="color: #000000; ">NYP</span><span style="color: #000000; ">"</span><span style="color: #000000; ">; }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">是不是读hҎ多了呢,在此只是多加了一个if和两个花括号Q但代码的可L与可理解性就一下子提高了一大截?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><strong>   四、请不要编码?/strong><font size="3">开发者经常有?#8220;忘记”或忽略掉q点Q因为有些时候开发日E逼得实在太紧。其实,多写一行定义静态变量的代码能花多少旉呢?</font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">class</span><span style="color: #000000; "> A { </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span><span style="color: #000000; "> final String S_CONSTANT_ABC </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">"</span><span style="color: #000000; ">ABC</span><span style="color: #000000; ">"</span><span style="color: #000000; ">; </span><span style="color: #0000ff; ">public</span><span style="color: #000000; "> boolean methodA(String sParam1){ </span><span style="color: #0000ff; ">if</span><span style="color: #000000; "> (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){ </span><span style="color: #0000ff; ">return</span> <span style="color: #0000ff; ">true</span><span style="color: #000000; ">; } </span><span style="color: #0000ff; ">return</span> <span style="color: #0000ff; ">false</span><span style="color: #000000; ">; } }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">现在Q每ơ需要将“ABC”与其他变量进行比较时Q不必记住实际代码,直接引用A.S_CONSTANT_ABCp了,而且在今后需要进行修ҎQ也可在一处修改,不会遍整个源代码逐个修改了?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3"> </font><strong>五、不?#8220;创?#8221;自己的框ӞframeworkQ?/strong><font size="3">切来说Q有C千计的各U框架存在,而且大多数是开源的Q这些框枉是优U的解x案,可用于日常程序开发中Q我们只需使用q些框架的最新版本就行了Q至表面上要跟上Ş势吧。被大家qؓ接受的最为明昄一个例子就是Struts了,q个开源web框架非常适合用在Zweb的应用程序中。是不是惛_发出自己的Struts呢,q是省点力气吧,回头看看W二条——不要让事情复杂化。另外,如果正在开发的E序只有3个窗口,׃要用Struts了,对这U程序来_不需要那么多?#8220;控制”?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">   </font><strong>六、不要用println及字W串q接?/strong><font size="3">通常Z调试方便Q开发者喜Ƣ在可能的所有地斚w加上System.out.printlnQ也许还会提醒自己回q头来再来删除,但有些时候,l常会忘了删除或者不愿意删除它们。既然用System.out.println是ؓ了测试,那么试完之后,Z么还要留着它们呢,因ؓ在删除时Q很可能会删除掉真正有用的代码,所以不能低估System.out.println危害啊,L下面的代码:</font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">class</span><span style="color: #000000; "> BadCode { </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> calculationWithPrint(){ </span><span style="color: #0000ff; ">double</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> 0D; </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span> <span style="color: #000000; ">10000</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) { System.</span><span style="color: #0000ff; ">out</span><span style="color: #000000; ">.println(someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">+</span><span style="color: #000000; "> i); } } </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> calculationWithOutPrint(){ </span><span style="color: #0000ff; ">double</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> 0D; </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span> <span style="color: #000000; ">10000</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) { someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">+</span><span style="color: #000000; "> i; } } </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> main(String [] n) { BadCode.calculationWithPrint(); BadCode.calculationWithOutPrint(); } }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">从测试中可以发现Q方法calculationWithOutPrint()执行用了0.001204U,作ؓҎQ方法calculationWithPrint()执行可是用了10.52U?br style="font-size: 12px; " /> <br style="font-size: 12px; " /> 要避免浪费CPU旉Q最好的Ҏ是引入像如下的包装方法:</font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">class</span><span style="color: #000000; "> BadCode { </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span><span style="color: #000000; "> final </span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> DEBUG_MODE </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">1</span><span style="color: #000000; ">; </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span><span style="color: #000000; "> final </span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> PRODUCTION_MODE </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">2</span><span style="color: #000000; ">; </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> calculationWithPrint(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> logMode){ </span><span style="color: #0000ff; ">double</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> 0D; </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span> <span style="color: #000000; ">10000</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) { someValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> someValue </span><span style="color: #000000; ">+</span><span style="color: #000000; "> i; myPrintMethod(logMode, someValue); } } </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> myPrintMethod(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> logMode, </span><span style="color: #0000ff; ">double</span><span style="color: #000000; "> value) { </span><span style="color: #0000ff; ">if</span><span style="color: #000000; "> (logMode </span><span style="color: #000000; ">></span><span style="color: #000000; "> BadCode.DEBUG_MODE) { </span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">; } System.</span><span style="color: #0000ff; ">out</span><span style="color: #000000; ">.println(value); } </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> main(String [] n) { BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); } }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">另外Q字W串q接也是费CPU旉的一个大_L下面的示例代码:</font></p> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "> <pre style="font-family: 'Courier New'; white-space: pre-wrap; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: #ededed; "> <div style="margin-top: 0px; margin-bottom: 0px; border-style: initial; border-color: initial; text-align: left; margin-right: auto; margin-left: auto; color: #333333; "><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> concatenateStrings(String startingString) { </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span> <span style="color: #000000; ">20</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) { startingString </span><span style="color: #000000; ">=</span><span style="color: #000000; "> startingString </span><span style="color: #000000; ">+</span><span style="color: #000000; "> startingString; } } </span><span style="color: #0000ff; ">public</span> <span style="color: #0000ff; ">static</span> <span style="color: #0000ff; ">void</span><span style="color: #000000; "> concatenateStringsUsingStringBuffer(String startingString) { StringBuffer sb </span><span style="color: #000000; ">=</span> <span style="color: #0000ff; ">new</span><span style="color: #000000; "> StringBuffer(); sb.append(startingString); </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span> <span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span> <span style="color: #000000; ">20</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) { sb.append(sb.toString()); } }</span></div> </pre> </div> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">在测试中可发玎ͼ使用StringBuffer的方法只用了0.01U执行完毕,而用连接的Ҏ则用?.08U,选择显而易见了?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><strong><font size="3">七、多xGUIQ用L面)?/font></strong><font size="3">再三QGUI对商业客h_与程序的功能及效率同{重要,GUI是一个成功程序的最基本部分Q而很多ITl理往往都没注意到GUI的重要性。在现实生活中,许多公司可能Z节省开支,没有雇用那些有着设计“用户友好”界面丰富l验的网设计者,此时Java开发者只能依赖他们自w的HTML基本功及在此领域有限的知识,l果Q很多开发出来的E序都是“计算机友?#8221;甚于“用户友好”。很有开发者同时精通Y件开发及GUI设计Q如果你在公?#8220;不幸”被分配负责程序界面,应该遵守下面三条原则:</font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">1?不要再发明一ơ轮子,即不做无用功。现有的E序可能会有cM的界面需求?br style="font-size: 12px; " /> 2?先创Z个原型。这是非帔R要一步,用户一般想看到他们用的东西Q而且可以先利用这个原型征求用L意见Q再慢慢修改成用h要的样子?br style="font-size: 12px; " /> 3?学会换位思考。换句话来说Q就是从用户的角度来审查E序的需求。D例来Ԍ一个汇ȝH口可以跨页或者不跨页Q作Z个Y件开发者,可能会們֐于不跨页Q因L单一些。但是,从用L角度来看Q可能不希望看到上百行数据都挤在同一上?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><strong><font size="3">   八、文档需求不放松?/font></strong><font size="3">每个商业需求都必须记录在案Q这可能听上d童话Q似乎在现实生活中很隑֮现。而我们要做的是,不管开发时间多紧迫Q不最l期限多临近Q对每个商业需求都必须记录在案?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">   </font><strong><font size="3">九、单元测试、单元测试、单元测试?/font></strong><font size="3">关于什么是单元试的最好方法,在此不便l说Q只是强调,单元试一定要完成Q这也是~程中最基本的原则。当然了Q如果有人帮你做单元试自然是最好,如果没有Q就自己来做吧,当创Z个单元测试计划时Q请遵守以下三条最基本的原则:</font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><font size="3">1?先于~写cM码之前编写单元测试?br style="font-size: 12px; " /> 2?记录单元试中的代码注释?br style="font-size: 12px; " /> 3?试所有执行关键功能的公有ҎQ这里不是指set和getҎQ除非它们是以自qҎ式执行set和getҎ?/font></p> <p style="margin-top: 0px; margin-right: 8px; margin-bottom: 0px; margin-left: 8px; color: #333333; "><strong><font size="3">   十、质量,而不是数量?/font></strong><font size="3">有些时候因Z品问题、期限紧q、或一些预料之外的事情Q导致常怸能按时下班,但一般而言Q公怸会因为雇员经常加班而对之表扬和奖励Q公司只看重高质量的工作。如果遵守了前九条原则,你会发现自己写出的代码bug且可维护性高Q无形中质量提高了一大步?/font></p> </span><img src ="http://www.tkk7.com/mlh123caoer/aggbug/296938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2009-09-29 19:52 <a href="http://www.tkk7.com/mlh123caoer/archive/2009/09/29/296938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中Class.getResource用法http://www.tkk7.com/mlh123caoer/archive/2009/09/29/296937.html草儿草儿Tue, 29 Sep 2009 11:43:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2009/09/29/296937.htmlhttp://www.tkk7.com/mlh123caoer/comments/296937.htmlhttp://www.tkk7.com/mlh123caoer/archive/2009/09/29/296937.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/296937.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/296937.html阅读全文

草儿 2009-09-29 19:43 发表评论
]]>
工作中的十不要(适用于工作不久的同事Q??http://www.tkk7.com/mlh123caoer/archive/2008/10/11/233703.html草儿草儿Sat, 11 Oct 2008 01:39:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/10/11/233703.htmlhttp://www.tkk7.com/mlh123caoer/comments/233703.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/10/11/233703.html#Feedback7http://www.tkk7.com/mlh123caoer/comments/commentRss/233703.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/233703.htmlW一Q不要认为停留在心灵的舒适区域内是可以原谅的?br />   
  每个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰Q不愿意被pushQ不愿意和陌生的面孔交谈Q不愿意被h指责Q不愿意按照规定的时限做事,不愿意主动的d心别人,不愿意去思考别有什么没有想到。这在学生时代是很容易被理解的,有时候这L同学q跟“冷酷”“个?#8221;q些字眼沾边Q算作是褒义。然而相反,在工作之后,你要极力改变q一现状。否则,你会很快变成鸡尾酒会上唯一没有人理睬的对象Q或是很快因为压力而内分泌p。但是,如果你能很快打破之前学生期所处的舒适区域,比别人更快的处理好业务、h际?*之间的关p,那就能很快的脱颖而出?br />   
  在会议上Q一个停留在心灵舒适区域的Z消极的听取领导的话语Q消极的待命Q很ȝ完成上交给的事情,但从来不兛_此事以外的Q何事情,更不会想到多做一步,让接下来的别人的工作更加Ҏ上手。而敢于打破这个舒适区域的人,敢于在适当的时候提q看法和不理解Qƈ在得CU认可和指点之后把手头的工作快的完成,q时接受别人的批评和调整。(注意Q永q不要等待别人把你的x说出来,q是典型的前者)
  
  在工作上Q当前者遇C名新的同事,他会装作没有看见Ql自q工作。殊不知新来的同事不久就变成了自q上司。而后者则大方客气的自我介l,q了解对方和自己的关pR?br />   
  在聚会上Q前者L{待别h发言Qƈ喜欢U下里评论对方的a语;如果q个桌子上没有h发言Q那直到用餐l束Q也没有识你。而后者是勇敢的和一同吃饭的开始介l和闲谈Q这看v来很困难Q有时候会有失面子Q但往往你会发现Q对Ҏ多么希望能和你说几句话?br />   
  以上只是很小的几个例子,但是要说明的是,大学生在走出校园的同时就要在工作上把校园中的“随意?#8221;从n边赶赎ͼ早的冲q舒适区域,开始做好和q个C会交流的准备?nbsp;
  

  W二Q不要把“好像”Q?#8220;有h?#8230;…”Q?#8220;大概”Q?#8220;晚些时?#8221;Q?#8220;或?#8221;Q?#8220;说不?#8221;之类攑֜嘴边。尤其是和上U谈论工作的时候?br />   
  我十分痛恨听到的一句话是:“我晚些时候会把这个文件发l所有的?#8221;Q因往往预示着我必LL醒他不要忘记。同P以下q些a辞也会让得厌恶至极:
  “到时候有Z把那些东襉K准备?#8221;
  “大概是明?#8221;
  “明天或者后天客户会q来拜访”
  “好像他说……”
  
  一般是人都会这栯话的Q因L一l自q下了qK的余圎ͼW二也不会给别h造成很大的压q感Q好像什么事情一定要弄个水落矛_似的。说实话大学里面再用功的人都有一半是L。一个h要么是在译֠上是LQ要么下课之后是L。两个都没有带有L色彩的hQ要么是牛hQ要么是经病。所以,因Zh人都在؜的,所以校园是一个浪漫的地方Q校园也Ҏ让h单纯。所以学生社团的工作往往是效率很低的Q我现在回想起学校里做的工作Q当时还觉得挺卖力的Q但工作了之后才开始感觉到什么是效率。当你进入了用金p时间的地方之后Q你要尽可能的避免在学校里养成的q种习惯。如果上U问你什么时候能实施你给他的承诺Q而你回答“今晚或者明天早?#8221;q样的答案对于他来说完全{同于你没有回答Qƈ且还l他留下了一个坏印象。(当然Q这L回答往往在学校社团,学生会工作中是常见的Q?br />   
  有一个寓a故事Q一只小老鼠刚刚Z不久Q老鼠妈妈问小老鼠Q你现在能看见了吗? 老鼠_能?老鼠妈妈_那你能看到那块红薯吗Q?老鼠_是的。老鼠妈妈_那是一块石_q说明你不但q看不见东西Q你q嗅觉都q没有?br />   
  似是而非的应{往往一样会暴露Z更多的弱炏V可能是以下中的一个或几个Q?br />   1.你之前没有想到这个工作,或者一直在拖g?br />   2.你没有责dQ认些ƈ不重要?br />   3.你应付上U?br />   4.你不敢说真话?br />   5.你喜Ƣ逞能Q答应一些做不到的事情?br />   6.你不能独立工作?br />   
  当你的上U在以上选项中怀疑的时候,潜意识中你已l同时具备了以上所有的q了?br />   
  相反的看来,q样的回{,L让上司恼火?br />   W一Q他的问题没有得到回{,只是起到了提醒你的作用?br />   W二Q他依然需要记住提醒你Q因Z不知道你是否真正已经落实了工作?br />   W三Q他不知道有多少你已l做了的事情中,都是q样没有落实的。(q点非常致命Q?br />   W四Q往往因ؓ没有得到满意的答案,上司自己的计划不得不被耽搁或推q或不能l出明朗的结束时间?br />   
  所?--------
  甲问Q你什么时候能把要q个漏洞修好Q?br />   乙说Q我已经通知他们了,他们大概明天׃来修的?br />   一天后
  甲问Q维修公总么时候回来,你找的是哪家l修公司Q?br />   乙说Q好像他们说安排不出人来Q如果可以的话,今天晚上或者明天下午就能过来?br />   一天后
  甲问Q漏z怎么q没有修好?
  乙说Q我晚点再问问他们?br />   甲说Q今天下午之前不解决Q明天不用来上班了?nbsp;
  
  
  W三Q不要拖延工?br />   
  很多人喜Ƣ在学习和玩耍之间先选择后者,然后在最后时间一ơ性赶工把考试要复习的东西H击完成。但是在工作中请不要Lq样的习惯,因ؓ工作是永q做不完的,容不得你“H击”。又或者,当你在徘徊和彷L如何实施的时候,你的领导已经看不下去Q自己去做了?---q是一个危险的信号?br />   
  往往我们Lx事情从头到尾全部惛_了,才开始走W一?----摔倒了?br />   
  举个例子Q?我小学的时候第一ơ给我一个喜Ƣ的奛_子打电话的时候,惌了各U情?------1Q她接电话的时候在做作业?Q她在做作业Q她妈妈接的电话?.她也很无聊,很想找h说话?.Ҏ在被父母训斥?5.Ҏ在想另外一个男孩?.她父亲接电话?7.她家正好来了什么亲戚,亲戚接了电话?8.Ҏ了电话,但父母就在n边,说话不方ѝ。。。。等{等{。我整整想了一个下午,惛_了各U情늚心理准备和应对的{略。然后勇敢的拿v电话机,按下了那几个按钮。结?------她不在家?br />   
  所以,当你徘徊不前而手x措的时候,你要意识C正在拖g工作。徘徊是因ؓx这个事情可能发生的后果需要自己承担或应付。工作的时候需要一Uv码的自信Q相信自己有能力Q不下一步是什么状况,我都能把它引导到我需要的那条U上ȝ。另外,告诉自己Q不要想太多旉Q如果不知道Q就赶快求助Q或惛_法,苦恼和忧虑会l你更多的压力也会把剩下的时间蚕食殆?br />   
  
  另外Q警告一下:永远不要惻I我知道了Q先把上U派的事情放一下,{这集《越狱》看完再说?---90%的情况下Q你会忘讎ͼ或者来不及Q因件事需要比你原先想象要更多的时间。说做就做,一直是很好的习惯?nbsp;
  
  
  W四Q不要认为理Z可以实施大功告成了Q?br />   
  q点太重要了Q往往当真正实施的人开始做了才会发现计划完全等于鬼话。如果不亲自实践Q做计划的h会早晚被实施的鄙视。永q需要提升自q办实事的能力Q而不是空谈?br />   
  首先Q如果你是做办公室工作的Q或者做{划和计划的。请千万不要把你自己都认Z太可能或者很隑ց到的事情Q让别h试试看。比如,用一个下午的旉在h量很少的地方D办露天歌׃。这会让执行的h觉得你在玩他Q拿他做实验。没错,理论上,在Q何地斚w能D办歌׃Q但是,在不同的地方Q执行的人的心情是不一L?br />   
  其次Q和执行的h讨论你的安排。比如,新来的你的下属,你可以安排她坐在M地方Q但是如果那是一个很隑֒大家接触的角落,q可能比你什么都不安排更差。的,理论上一个h要坐下来Q需要的只是I间。但事实上远q不止那些?br />   
  再次Q不要奢望一切会随着你的计划q行。理Zq个会议会持l两个小Ӟ但是Q这?#8220;不考虑在开场后?0分钟全场都在调试话筒”Q或?#8220;Z没有提出如此锐的问?#8221;的前提下的状态?大学生已l习惯了把事情做?"理论上看上去很美"的程度了?论文Qppt讲演Q考试Q辩…… q些校园智商大比|都是教我们如何完的做好“U怸谈兵”的功夫?你一定要怿自己?#8220;搞定”事情的能力比惌的弱?br />   
  如果你是在学校的学生Q测试一下自己,能否能搞定以下这些状况:
  1.学校要制作一套校服,׃d找供应商Q砍P臛_有三家公司的报h?br />   2.学校保安抓住一个学生偷H,怎么处理Q?br />   3.学校的一个很重要路段的\灯坏了,你能否让它三天内l箋亮v来?br />   4.食堂需要请一位专门烧清真菜的厨师Q一周内到岗位?br />   
  当你开始思考以上这L问题的时候,你会发现Q他的思\?#8220;看过Mq这个公司的业W向Q做Z个下个季度的市场{划Ҏ”要相差极大。你会发现后者只要你做到“看上d完美”Q没有h知道按照你这样做l果会怎样。而上q的工作你只要一惻I׃体会C的压力。因Z不处理好Q结果就是明昄p|更大的问题就会相l发生?br />   对了Q这U感觉就?#8220;工作”l你的感觉!q就?#8220;工作”?#8220;U怸谈兵”的差别! 
  
  
  W五Q不要让别h{你
  
  在Q何情况下都不要让别h放下手头的工作来{你。在大学中可能只是同寝室的h的几句半开玩笑的抱怨,在工作上很可能导致你的潜在合作伙伴的丢失?br />   
  你在做一个工作的同时要知道别人的q度Q而永q不要落后?br />   q不像是在考试Q你比别人做的慢Q别人可以先交卷Q你到时间了做不完你自己承受扣分。在工作中的情况是这LQ这是一场没有h能做完的考试Q所有的人,都分配做一张试L不同部分Q有的h分到的是阅读理解Q有的h做的是完形填I,有的人做的是语法…… 然后大家做完了相互抄Q这P所有h都做完了?如果大家都把各自的部分做完了Q而你却还在没有做完,那么做得快的别h会开始做你的那部分题目,然后也是怺抄。慢慢地Q大家会发现你的工作量完全可以由另外人来代替Q整个团队中可以不需要你Q这个时候,没有Z你这里得到试L{案Q也没有Zl你他们的答?-------很不q,你已l没有利用hg?br />   
  请一定记住这个例子?nbsp;
  W六Q不要认为细节不重要
  
  在大学里Q往往做事_枝大叶Q看看差不多p了。相反,在企业里理的精髓就在于简单的事情做到l节。一个慌忙寻找保险箱钥匙的动作就很有可能丧失你晋升胦务主的Z?br />   
  公司的管理,其实需要的q不是把很难的事情做?0%----比如Q优化管理层的核心工作流E、改变公司在当地政府面前的Ş象,提高产品质量Q改善工作环?#8230;… 而管理要做的是把每个单的事情做到100%-----比如Q把公司的每个h的档案都按照一定的规律整齐的存放v来、在门卫讄一个外来h员的{ֈ台、把会议室多余的椅子拿走、和电视台讲好下个礼拜三来公司做采访、把试用装送到客户手里、在生的咖啡上加一个口子、给下一期的面人物拍照……{等如此?如果你能把所有细节的问题都如实做刎ͼ那你才有开口升职的本钱?br />   
  很多人在毕业的时候不知道自己来要做什么,于是和自己_我以后做理吧!做管理?问一下自己,如果Q公司资产被L了,所有员工士气低下,办公室杂乱无章,公司甉|又坏了,打印机没墨了Q采购计划超支了Q品滞销了,客户q到?#8230;…你愿意解册L问题Qƈ从小事开始做起吗Q想好了q些再考虑是否把管理看得太I洞了?nbsp;
  

  W七Q不要表现得消极Q仅仅因Z所做的事情不是你的兴趣所在?br />   
  很显Ӟ在学生时代,当做到自己喜Ƣ的时候,我们会pay200%的精力去创造,但如果是枯燥的事务,我们便懒得理睬,最好能有办法应付过厅R但在工作上80%你所做的事情都是J琐而看似机械的Q如果仅仅ؓ此而表现的闷闷不乐Q那么你会郁h久。要知道你的上司已经个项目够烦恼了,你还惌他看C的表情吗Q?br />   
  学会喜欢自己的工作,q把注意力放在日常工作能学到些什么上厅R如果现在你努力的抱怨工作,那么接下来你是努力的寻扑ַ作。尽量少?#8220;有趣”Q?#8220;好奇”之类的词语来描述自己惌的工作,而是“充实”Q?#8220;有成感”Q?#8220;乐意”
  之类?br />   x以下职位Q你会发现生zM很多工作不是在等你有很好的状态下让你做的很有的事情Q?br />   1.高速公路收费口的收费员Q一天都是面对一个小H口Q把一张卡片送出去,q样要持l好几年?br />   2.学校食堂厨师Q永q在烧大排和鸡腿。烧一q?br />   3.作家Q交E期要到了,我还在孕育灵感,两个星期没吃早饭了?br />   4.外科ȝQ刚刚睡着Q马上叫我做一?时的手术。这栯一周一ơ?br />   5.门市部销售:产品不好卖,8点上班来坐在店门口Q一个hQ坐到晚?点,今天没有一个h来,和昨天一栗?br />   6.公交司机Q我开车不用你指挥。这条线路我开了三q了?br />   7.宠物商店店员Q生意不好,q要一早就q来听着20条狗的叫C整天Q听一q?br />   8.公司职员Q晚上两点下班,W二天还?点上班。关键是路上q要一时。这样已l一个月了?br />   
  再想惌己是不是只是接触了这个工作一个月或者才到没几个困难,q个时候抱怨的声音最大?br />   千万不要想着去选择一个有的职业Q因为没有那L工作存在。没有哪一“U?#8221;行业是开心的Q因为如果有Q那所有h都去q那个了。最多试着问问自己本n的兴吧。self exploration?nbsp;
  
  
  W八Q绝对不要把改善工作能力仅寄托在公司培训?br />   
  人绝对不可能l过一ơ培训就p换骨。相反,集体培训上学到的东西往往是最用不上的信息?像食堂烧大锅菜一PL有你最惛_的菜Q因样做ҎQƈ且不Ҏ得罪人?br />   
  很多学生很看重所选的公司有没有培训,q说明,你不但不知道q个公司做什么,你甚至不知道怎样学习q些技能?br />   我的感悟是如果你不知道怎么学你惌的知识,也不知道你想要的知识是什么,你只会做ZU行为:1。等待别人来教你Qƈ且等待别人发C不知道的地方?.L现成的答案ƈ且拷贝。期待公司培训的人,很大概率上是第一UhQ不排除极少真正优秀的公司培训)
  
  许多的同学有q样的习惯思维Q?br />   因ؓQ这个公司的培训能结束达到多多的E度
  又因为,q个E度正好是我惌到的
  所以我力q这家公?br />   因ؓ我进了这家公?br />   所以它自然会我达Cq个期望的程度?br />   
  我们把参加培训和辑ֈ效果很幼E的M了等受其实往往集体培训上所得到的信息是最没有实际操作价值的。永q不要期望单靠听课,靠老师把同L东西l所有的人,你会得到比别人更多。把更多的心思放在观察和思考自q需要上Q找到问题的所在再通过观察和实践得到的{案才是真正的知识?br />   
  所以,刚刚开始工作,什么都不会Q不要认为那h正常的,因ؓ公司q没有培训过呢!{我接受培训了之后,我就全都会了。如果你一无所知还{待别h会可怜你的无知而施舍你知识Q那你会Z的无知而付出更多的智商?nbsp;
  
  
  W九Q不要推卸责?br />   
  推卸责Q是害怕的条g反射。不要认为别人看不出q点?br />   
  我记得我学里的一件事情。我一ơ作业没有带来,老师要训斥我Q说Q你怎么老是作业不带Q?br />   我当时说Q不是。。。?当我正要支支向֐时候,老师_什么不是?你带来了没有Q?br />   我说Q没?br />   老师_那不是没有带!什么不是!是Q?br />   
  之后我就发现Q我只是x承担责任而条件反似的就说了“不是”Q仔l观察一下周_你会发现QnҎ无数的h在用“不是”作ؓ被责问之后的W一反应?br />   其实现在很多人面对工作也是这P当上U责问的时候,很条件反的做Z推卸动作Q然而这L动作Q接下来往往是无力的辩解Q以及一些很_糙的借口。这样会让上司感Cq个人很难沟通,q且很不真实?br />   
  
  另外一U情况,是无论什么情况下Q我指责一个hQ他永远是强调客观。其实这Ҏ是学生最典型的特征。这说明他太Ҏ受到其他事物的媄响,q受它们军_。如果你和上怹间会出现以下cd的对话,x是不是需要改一下你的处事方法?br />   
  ԌZ么到现在q没有给副ȝ你的报告Q?br />   乙:刚才c在打华ͼ我在{他l束Q现在他大概好了吧,我去看看
  乙:q有点东西要修改
  乙:b也要把东西给副总,我因为等?br />   乙:a他说我报告不用给副ȝQa是乙的同U同事)
  乙:不知道副d不在哦,他的门关着?br />   乙:d他叫我帮他打印文Ӟ怪他Q(d是乙的同U同事)
  乙:我的杯子H然找不CQ在找杯子?br />   
  
  不愿意负责Q的h的不利在于他会让上司怀疑他的忠诚程度,因ؓ上司l他的命令往往会因Z个小事情而被搁置或者打折执行,转而被他h的意识所改变?nbsp;
  
  
  W十Q不要对自己?#8220;我是大学?#8221;
  
  q点包涵了很多信息?br />   1.不要认ؓ自己有多清高
  2.不要仍然以学生的标准要求自己
  3.不要感觉低h一{?br />   4.不要{待别h的关怀
  5.不要把这个作为犯错误自我安慰的借口
  6.不要忘记搞清楚,公司I竟l自q待遇是多,老练些,q不是在做志愿者?br />   
  品格是处理好人际关系的基Q也是确保h际关p质量的关键。除此之外,人际交往的技巧也是尤为重要的。有些h做好事会让h感激一辈子Q而有些h帮了别h却可能费力不讨好Q不但得不到感激和回报,q让人心存嫉恨。将同样的品以相同的h格推销l同一个客P有些业务员可能被_暴地赶出门Q有些业务员却可能签到大单,甚至被客户奉Z宾?nbsp;
  人际交往的技巧是一个非常庞杂的话题Q囿于篇q,在这里只能结合我的切w体会做一些简单的列DQ挂一漏万在所隑օ了?nbsp;
  1. 多给别h鼓励和表扬,量避免批评、指责和抱怨,不要逼别错?nbsp;
  2. 要学会們֐。不要说得太多,惛_法让别h多说?nbsp;
  3. 如果你要加入别h的交谈,先要弄清楚别人究竟在说什么?nbsp;
  4. 交谈之前量保持中立、客观。表明自q們֐之前先要弄清楚对方真实的們֐?nbsp;
  5. 注意Ҏ的社交习惯ƈ适当加以模仿?nbsp;
  6. 不要L打断、纠正、补充别人的谈话?nbsp;
  7. 别h有困难时Q主动帮助,多多鼓励?nbsp;
  8. 不要因ؓҎ是亲朋好友而不注意CD?nbsp;
  9. 可能谈论别人想要的Q教他怎样dC惌的?nbsp;
  10. 始终以微W待人?nbsp;
  11. 做一个有q默感的人。但是在讲笑话的时候千万不要只儡自己W?nbsp;
  12. 做一个脱MU趣味的人?nbsp;
  13. 跟别话的时候尽量看着Ҏ的眼睛,不管你是在说q是在听?nbsp;
  14. 转移话题要尽量不着痕迹?nbsp;
  15. 要学会聆听对方的弦外之音。也要学会通过弦外之音来委婉地表达自己的意思?nbsp;
  16. 拜访别h一定要事先通知?nbsp;
  17. 不要在别人可能忙于工作或者休息的时候打电话q去。除非是非常紧急的事情?nbsp;
  18. l别人打电话的时候,先问Ҏ是否方便通话?nbsp;
  19. 一件事情让两个人知道就不再是秘密?nbsp;
  20. 你在背后说Q何h的坏话都q早有一天传入这个h的x?nbsp;
  21. 不要说尖酸刻薄的话?nbsp;
  22. 牢记他h的名字。养成偶翻看名片簿、电话本的习惯?nbsp;
  23. 试着跟你讨厌的h交往?nbsp;
  24. 一定要重Ҏ的隐U,不管是朋友还是夫妅R?nbsp;
  25. 很多人在一L时候,当你与其中某个h交谈Q请不要无视其他人的存在?nbsp;
  26. 要勇于认错?nbsp;
  27. 以谦卑的姿态面对n边的每一个h?nbsp;
  28. l予他h同情和谅解?nbsp;
  29. 可能用“”取代“命o”?nbsp;
  30. 不要L做出承诺。承诺的事情׃定要可能做到?br />



草儿 2008-10-11 09:39 发表评论
]]>
OOME错误抛出原因http://www.tkk7.com/mlh123caoer/archive/2008/09/20/230104.html草儿草儿Sat, 20 Sep 2008 03:20:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/09/20/230104.htmlhttp://www.tkk7.com/mlh123caoer/comments/230104.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/09/20/230104.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/230104.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/230104.html
OOME错误抛出原因Q排列以发生的可能性ؓ据)Q?/div>
  1. Java Heap中无法申请到_的内存用于创建新的objectQJVM会抛出OOME错误
      Ҏ异常发生的日志分析,有可能是因ؓPOP3受信Ӟ发生死锁Q导致旧对象无法?/div>
      放,Java heap 内存过最大分配内存,OOME抛出?/div>
   2. Native memory JVM正常q行?JNI调用W三方库时分配内存。Native内存会在JVMq程所
      需要的内存向系l申P如果JNI调用不能甌到内存就会抛出OOME错误?/div>
   3. Process memory size 不够。这U可能性比较小?/div>

草儿 2008-09-20 11:20 发表评论
]]>一个男Z生想和老婆做的45件事http://www.tkk7.com/mlh123caoer/archive/2008/09/02/226331.html草儿草儿Tue, 02 Sep 2008 04:33:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/09/02/226331.htmlhttp://www.tkk7.com/mlh123caoer/comments/226331.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/09/02/226331.html#Feedback5http://www.tkk7.com/mlh123caoer/comments/commentRss/226331.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/226331.html

2让妳w在我的腿上静静的看书,然后抚摩妳的头发?



3在洗澡的时候帮x背?


4当妳不吃饭的时候哄着妛_Q再不行喂妛_?nbsp;


5 和妳去趟西藏?



6 把我的牙刷偷L和妳换一下?


7 当妳说自q的很Q不惛_饭时Q把x上床盖上被子Q然后亲自给妛_我最拿手的方侉KQ?



8 没有理由的亲亲妳?



9认真听妳说的每句话?


10妛_的东西我一定做W一个读者,q且不管妛_的怎样都鼓׃?


11每年U天都和妛_d?


12l常q妻I背着妻I哪怕是在大庭广众之下?


13每天醒来先看看妳熟睡的样子,轻轻d一下?


14l常逗的x哭又想笑?


15陪妳逛街Q和妳一起做饭?


16在街上走的时候不让妳d自己1c?


17和妳一hd子长大?nbsp;


18在妳Ҏ时期的时候给妳端上我做的U糖荷包蛋,看妳把泪水蹭到我胸前?nbsp;


19在生zM让着妻I妳错了也是我的错Q吵架后肯定我先道歉。但是在是非斚w却要一丝不苟?



20听妳叫我ȝ{一切妳惛_我的名字?


21晚上故意叫醒妻I听妳庸懒的声韟?


22在妳无助时能在妳w边帮妳?


23帮妳梛_时不弄疼妟?


24在妳专心看书时不打搅妟?


25和妳抢吃的,把最有营L好吃的留l妳?nbsp;


26陪妳Lv边,听妳t浪时的Ƣ乐叫声?nbsp;


27帮妳卖菜旉便买束花l妳?nbsp;


28钱包里L有妳的照片,或者是全家?


29q马路的时候都要抓住妳的手?


30下班后只要看见家里的灯灭了就一定自己开门,l不吵醒妟?nbsp;


31半夜故意把妳的被子踢开让妳往我被H里钅R?



32在妳生病Ӟ守在妌n边,l妳塞塞被角Q摸摸妳的额_把妳拥入怀中?



33l妳买妳心A以久的东ѝ?nbsp;


34听妳的话不抽烟,喝酒,多吃水果Q定时吃饭?nbsp;


35打雷的时候对妌“来我q妳睡”因ؓ我知道妳x打雗?



36我们吉|后,会在客厅睡,让妳好好想一惻I再等xl我盖被子?


37留一点点的胡子,在亲妳的时候偷L扎你的脸?nbsp;


38在妳70岁的时候陪妛_看夕队?nbsp;


39和妳一L鬼片Q安慰妳?#8220;别怕,有我呢!” 


40当妳在阛_的栏杆上Ӟ从妳w后揽住妟?nbsp;


41不许妌谢谢Q对不v之类的话Q那样会很见外?nbsp;


42下雨的时候出现在妳面前?nbsp;


43没钱的时候会肉麻的说“老婆Q给炚w用钱吧!” 


44当妳和孩子在公园里嬉戏时Q坐在一边n受着?


45每天都感Ȁ上天让我们相遇,相知Q相?#8230;…


草儿 2008-09-02 12:33 发表评论
]]>
8故事+8哲理http://www.tkk7.com/mlh123caoer/archive/2008/08/15/222219.html草儿草儿Fri, 15 Aug 2008 05:22:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/08/15/222219.htmlhttp://www.tkk7.com/mlh123caoer/comments/222219.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/08/15/222219.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/222219.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/222219.html
1、徏{师
     一位夫人打电话l徏{师Q说每当火Rl过Ӟ她的睡床׃摇动?
     “q简直是无稽之谈Q?#8221;建筑师回{说Q?#8220;我来看看?#8221;
    建筑师到辑֐Q夫人徏议他w在床上Q体会一下火车经q时的感觉?
  建筑师刚上床wZQ夫人的丈夫回来了。他见此情ŞQ便厉声喝问Q?#8220;你h在我d的床上干什么?”
  建筑师战战兢兢地回答Q?#8220;我说是在{火车,你会怿吗?”
【顿悟?
  有些话是真的Q却听上d假;有些话是假的Q却令h无庸|疑?
  
2、引?
  英国l士与法国女人同乘一个包厢,女h惛_p个英国hQ她pwZ后就抱怨n上发冗先生把自己的被子给了她Q她q是不停地说冗?
   “我还能怎么帮助你呢Q?#8221;先生沮地问道?
   “我小时候妈妈L用自qw体l我取暖?#8221;
   “姐Q这我就p能助了。我M能蟩下火车去找你的妈妈吧Q?#8221;
【顿悟?
  善解风情的男人是好男人,不解风情的男人更是好男h?
  
3、调?
  麦克走进馆Q点了一份汤Q服务员马上l他端了上来?
  服务员刚走开Q麦克就嚷嚷hQ?#8220;对不Pq汤我没法喝?#8221;
  服务员重新给他上了一个汤Q他q是_“对不Pq汤我没法喝?#8221;
  服务员只好叫来经理?
  l理毕恭毕敬地朝麦克点点__“先生Q这道菜是本店最拿手的,深受֮Ƣ迎Q难道您……”
   “我是_调羹在哪里呢Q?#8221;
【顿悟?
  有错改Q当然是件好事。但我们常常却改掉正的Q留下错误的Q结果是错上加错?
  
4、穿?
  饭厅内,一个异常谦恭的怯地C另一个顾客,那h正在I一件大衣?
  “对不P请问您是不是皮埃先生?”
  “不,我不是?#8221;那h回答?
  “啊,”他舒了一口气Q?#8220;那我没弄错,我就是他Q您I了他的大衣?#8221;
【顿悟?
  要做到理直气壮,q不是gҎ的事情。理直的人,往往低声下气Q而理歪的人,却是气壮如牛?
  
5、回?
   一个苏格兰人去伦敦Q想Z探望一位老朋友,但却忘了他的住址Q于是给家父发了一份电报:“您知道托马的住址吗?速告Q?
  当天Q他收C份加急回电:“知道?#8221;
【顿悟?
  当我们终于找到最正确的答案时Q却发现它是最无用的?
  
6、伤心故?
  有三个h到纽U度假。他们在一座高层宾馆的W?5层订了一个套ѝ?
  一天晚上,大楼甉|出现故障Q服务员安排他们在大厅过夜?
  他们商量后,军_徒步走回戉KQƈU定轮流说笑话、唱歌和讲故事,以减ȝ楼的劳篏?
  W话讲了Q歌也唱了,好不Ҏ爬到W?4层,大家都感觉精疲力竭?
  “好吧Q彼P你来讲个q默故事吧?#8221;
  彼d_“故事不长Q却令h伤心xQ我把房间的钥匙忘在大厅了?#8221;
【顿悟?
   我们痛苦Q所以幽默;我们q默Q所以快乐?
  
7、卖?
   一个很有名的作家要来书店参观。书店老板受宠若惊Q连忙把所有的书撤下,全部换上作家的书。作家来C店后Q心里非帔R_问道Q?#8220;贵店只售本h的书吗?”
   “当然不是?#8221;书店老板回答Q?#8220;别的书销路很好,都卖完了?#8221;
【顿悟?
  “拍马?#8221;是个奇怪的词:你象是在奉承他,又象是在侮i他?
  
8、帮?
  在邮局大厅内,一位老太太走C个中qh跟前Q客气地_“先生Q请帮我在明信片上写上地址好吗Q?#8221;
  “当然可以?#8221;中年人按老h的要求做了?
  老太太又_“再帮我写上一段话,好吗Q谢谢!”
  “好吧?#8221;中年人照老太太的话写好后Q微W着问道Q?#8220;q有什么要帮忙的吗Q?#8221;
  “嗯,q有一件小事?#8221;老太太看着明信片说Q?#8220;帮我在下面再加一句:字迹潦草Q敬请原谅?#8221;
【顿悟?
  你若不肯帮忙Qh家会恨你一个星期;如果帮得不够完美Q还不如……


草儿 2008-08-15 13:22 发表评论
]]>大连心情http://www.tkk7.com/mlh123caoer/archive/2008/08/15/222159.html草儿草儿Fri, 15 Aug 2008 02:05:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/08/15/222159.htmlhttp://www.tkk7.com/mlh123caoer/comments/222159.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/08/15/222159.html#Feedback3http://www.tkk7.com/mlh123caoer/comments/commentRss/222159.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/222159.html        ……本以为回来可以放松一下心情,没想C被h扫地出门Q回到大q只验证了半q前的一句话Q?#8220;旉会证明你会离开?#8221;Q早已料到的l局Q没惛_来得q么早。大q的天气也领悟了我的感受Q这几天一直阴沉沉的,对于大连的留恋变的很淡,…… 希望自己对于以后的选择更慎重一些?br />        q次回来Q也有些对不h友,没有看一看他们,希望下次补偿一下?/p>

草儿 2008-08-15 10:05 发表评论
]]>
十五个必让h友知道的事情Q?/title><link>http://www.tkk7.com/mlh123caoer/archive/2008/05/17/201075.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sat, 17 May 2008 04:47:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2008/05/17/201075.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/201075.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2008/05/17/201075.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/201075.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/201075.html</trackback:ping><description><![CDATA[<div class="ksccm2o" id="quoteinfo" style="margin-bottom: 10px">本文?nbsp;  <span style="font-weight: bold">嘎嘎</span>   发表在: <a target="_blank">嘎嘎的天?/a></div> <div class="cgwwysa" id="voteAnchor"></div> <div id="4kkmkc4" class="lh3" id="veryContent" style="overflow: hidden; width: 100%"> <table class="contentTable" id="blogContentTable" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="font-size: 12px; word-wrap: break-word" valign="top"> <div class="24wgeew" id="blogContainer"><img id="paperPicArea0" style="display: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" alt="" /> <div class="4muo4ak" id="paperTitleArea" style="display: none" align="center"><span id="paperTitle" style="display: block; font-weight: bolder; word-break: break-all"><font face="" color="#000e04">[转]十五个必让h友知道的事情Q嘻嘻!</font></span></div> <img id="paperPicArea" style="display: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" alt="" /><wbr><a target="_blank"><img style="vertical-align: baseline! important" height="348" src="http://www.yoho.cn/photo/1459078.jpg" width="360" border="0" alt="" /></a><wbr><br /> 二,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="381" src="http://www.yoho.cn/photo/1459077.jpg" width="360" border="0" alt="" /></a><wbr><br /> 三,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="269" src="http://www.yoho.cn/photo/1459076.jpg" width="500" border="0" alt="" /></a><wbr><br /> 四,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="384" src="http://www.yoho.cn/photo/1459074.jpg" width="360" border="0" alt="" /></a><wbr><br /> 五,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="387" src="http://www.yoho.cn/photo/1459072.jpg" width="360" border="0" alt="" /></a><wbr><br /> 六,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="368" src="http://www.yoho.cn/photo/1459071.jpg" width="500" border="0" alt="" /></a><wbr><br /> 七,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="360" src="http://www.yoho.cn/photo/1459068.jpg" width="360" border="0" alt="" /></a><wbr><br /> 八,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="382" src="http://www.yoho.cn/photo/1459067.jpg" width="360" border="0" alt="" /></a><wbr><br /> 九,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="403" src="http://www.yoho.cn/photo/1459066.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十,<br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="383" src="http://www.yoho.cn/photo/1459065.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十一Q?br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="359" src="http://www.yoho.cn/photo/1459064.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十二Q?br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="385" src="http://www.yoho.cn/photo/1459063.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十三Q?br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="413" src="http://www.yoho.cn/photo/1459062.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十四Q?br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="371" src="http://www.yoho.cn/photo/1459061.jpg" width="360" border="0" alt="" /></a><wbr><br /> 十五Q?br /> <br /> <wbr><a target="_blank"><img style="vertical-align: baseline! important" height="384" src="http://www.yoho.cn/photo/1459060.jpg" width="360" border="0" alt="" /></a></div> </td> </tr> </tbody> </table> </div><img src ="http://www.tkk7.com/mlh123caoer/aggbug/201075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2008-05-17 12:47 <a href="http://www.tkk7.com/mlh123caoer/archive/2008/05/17/201075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打死不能嫁的十种男hhttp://www.tkk7.com/mlh123caoer/archive/2008/05/17/201073.html草儿草儿Sat, 17 May 2008 04:46:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/05/17/201073.htmlhttp://www.tkk7.com/mlh123caoer/comments/201073.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/05/17/201073.html#Feedback5http://www.tkk7.com/mlh123caoer/comments/commentRss/201073.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/201073.html本文?nbsp;  q_^   发表在: ?自由











草儿 2008-05-17 12:46 发表评论
]]>Grails application now working on GlassFish v3http://www.tkk7.com/mlh123caoer/archive/2008/03/10/185015.html草儿草儿Mon, 10 Mar 2008 03:53:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2008/03/10/185015.htmlhttp://www.tkk7.com/mlh123caoer/comments/185015.htmlhttp://www.tkk7.com/mlh123caoer/archive/2008/03/10/185015.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/185015.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/185015.htmlRecently Guillaume reported to me about his Grail app not deploying on GlassFish v3 Preview 2. The problem reported was that the Grail app was taking lots of time to deploy on GlassFish v3 Preview 2. Although such failures are not acceptable but considering GlassFish v3 is a complete new architecture, is still under development and feature incomplete and above all the preview releases do not go thru the normal test cycle so such bugs can appear.

This issue was discussed at the GlassFish mailing list, see the discussion here and the corresponding bug.

The good news is that Jerome quickly found out what the problem was and after the code went thru reviews, it was checked in and the fix went into yesterday's nightly build.

Here is how I created and deployed a Grails application on GlassFish v3:

Create a simple Grails app

Setup Grails This is the standard way you would setup the Grails environments:

    export PATH=$GRAILS_HOME/bin:$PATH
export GRAILS_HOME=/tools/grails

 

 

Create a simple Grails app
    vivekmz@boson(555)> grails create-app MyFirstGrailsApp
Welcome to Grails 1.0.1 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /tools/grails
Base Directory: /ws/sb
Environment set to development
Note: No plugin scripts found
Running script /tools/grails/scripts/CreateApp.groovy
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/src
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/src/java
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/src/groovy
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/controllers
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/services
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/domain
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/taglib
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/utils
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/views
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/views/layouts
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/i18n
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/conf
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/test
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/test/unit
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/test/integration
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/scripts
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/web-app
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/web-app/js
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/web-app/css
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/web-app/images
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/web-app/META-INF
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/lib
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/conf/spring
[mkdir] Created dir: /ws/sb/MyFirstGrailsApp/grails-app/conf/hibernate
[propertyfile] Creating new property file:
/ws/sb/MyFirstGrailsApp/application.properties
[copy] Copying 2 files to /ws/sb/MyFirstGrailsApp
[copy] Copying 2 files to /ws/sb/MyFirstGrailsApp/web-app/WEB-INF
[copy] Copying 5 files to /ws/sb/MyFirstGrailsApp/web-app/WEB-INF/tld
[copy] Copying 87 files to /ws/sb/MyFirstGrailsApp/web-app
[copy] Copying 17 files to /ws/sb/MyFirstGrailsApp/grails-app
[copy] Copying 1 file to /ws/sb/MyFirstGrailsApp
[copy] Copying 1 file to /ws/sb/MyFirstGrailsApp
[copy] Copying 1 file to /ws/sb/MyFirstGrailsApp
[propertyfile] Updating property file:
/ws/sb/MyFirstGrailsApp/application.properties
Created Grails Application at /ws/sb/MyFirstGrailsApp

Start GlassFish v3

    vivekmz@boson(735)> glassfish/bin/asadmin start-domain
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: HK2 initialized in 281 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.naming.impl.ServicesHookup@51b48197 Init done in 307 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.v3.services.impl.CmdLineParamProcessor@9c0ec97 Init done in 310 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.v3.server.SystemTasks@1fd0fafc Init done in 382 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.v3.services.impl.LogManagerService@388ee016 Init done in 411 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.v3.services.impl.HouseKeeper@a210b5b Init done in 413 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 8080
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 8181
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 4848
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.v3.services.impl.GrizzlyService@506f9b8e startup done in 630 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: com.sun.enterprise.security.SecurityServicesUtil@585976c2 startup done in 732 ms
Mar 7, 2008 7:43:04 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: Glassfish v3 started in 733 ms

You can see above it took 733ms to boot up!

Deploy the Grails App

Now that I have built MyFirstGrailsApp, it is time to deploy. So first I will create a war file:

    vivekmz@boson(558)> cd MyFirstGrailsApp/
vivekmz@boson(559)> grails war

 

Now Let's deploy to GlassFish v3:
    vivekmz@boson(749)> ../glassfish/bin/asadmin deploy MyFirstGrailsApp-0.1.war
SUCCESS : MyFirstGrailsApp-0.1 deployed successfully
properties=(name=MyFirstGrailsApp-0.1)

The server log tells, it took about 9.7 seconds to deploy it:

[#|2008-03-07T20:19:03.580+0000|INFO|GlassFish10.0|javax.enterprise.system.tools.deployment|_ThreadID=12;_ThreadName=Thread-4;|Deployment of MyFirstGrailsApp-0.1 done is 9765 ms|#]

Now when I accessing http://localhost:8080/MyFirstGrailsApp-0.1/ my Grails app appears in the Firefox:

 

GlassFish v3 has been going thru continuous improvements and the development team is busy making it rock solid while adding new features to it. Continue sending your feedbacks to users@glassfish.dev.java.net.

草儿 2008-03-10 11:53 发表评论
]]>
我奋斗了Q8q_不是Z和你一起喝咖啡Q?/title><link>http://www.tkk7.com/mlh123caoer/archive/2007/12/28/171312.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Fri, 28 Dec 2007 12:19:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2007/12/28/171312.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/171312.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2007/12/28/171312.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/171312.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/171312.html</trackback:ping><description><![CDATA[<p>3q前Q麦子的一《我奋斗?8q才和你坐在一起喝咖啡》引起多共鸣,一个农?br /> 子弟l过18q的奋斗Q才取得和大都会里的同龄人^起^坐的权利Q一代h的真实写?br /> 。然而,3q过去,我恍然发觉,他言之过早?8q又如何Q再丰盛的年华叠加,我仍<br /> 不能和你坐在一起喝咖啡?/p> <p>  那年?5Q无C夙兴夜寐Q换来一个硕士学位,额上的抬头纹分外明显Q脚下却<br /> 半步也不敢停歇。如果不惌户口打回原籍Q子子孙孙无I匮Q得赶紧地找份留京工?br /> 。你呢?你不着急,兽世界和红色警报?早玩MQ你野心勃勃地筹划着“创业创业<br /> ”。当时李彦宏、陈天桥、周云帆Q牛Zq没有横I出世,癑ֺ、Google、完时I?br /> 更是遥远的名词,可青春所向披靡不可一世,你在校园里徏起配送网站,大张旗鼓地招<br /> 兵买马,大小媒体的记者蜂拥而至?34寝室很快在全楼名噪一Ӟ姑娘们从天南地<br /> 北寄来粉_的信纸QԒ慕地写道Q?#8220;从报上得知你的精彩故?#8230;…”得空Q爬上楼吹<br /> 吚wQ你眉飞色舞地{向我Q以照顾自己人的口气_兄弟Q一起发财如何?</p> <p>  好呀Q可惜,我不能。创业于你,是可q可退可攻可守的棋Q启动资金有三姑六眷<br /> 帮忙{wQ就铩而归Q父母那三室一厅、温暖的灶台也永不落I。失败于我,意味<br /> 着覆水难收一败涂圎ͼ每年夏天Qؓ了节省三五百块钱的机器钱Q爹娘要扛着腰肌x<br /> 在大日头下收?亩农田。我I着借来的西服完成了W一ơ面试,戴着借来的手表与?br /> q奛_q行了第一ơ约会。当你拿CW一W投资兴奋地报告全班Ӟ我冷静地I越<br /> 大半个北京城Q去做最后一份家教。没错,“q活儿技术含量忒?#8221;Q但在第一个月?br /> 资下发前Q我U来的立锥之C口粮全靠它维持?/p> <p>  不多久,互联|就遭遇了寒,你也对创业意兴阑珊,q了家国有性质的通信公司<br /> Q我被一家外企聘用。坐井观天的我,竟傻d以ؓ扛_了一局。明面上的工资,我比<br /> 你超Z截,E后8000Q出差住5星NQ一q带薪休?0天。玩命一样地投入工作<br /> Q坚信几q后也有个童话般的结,“和公主过上幸的生活”?/p> <p>  好景不长Q很快,我明白了Z么大家说白领是句骂h的话。写字楼的套,标h<br /> 35Q几乎没人搭理它。午时_最抢手的是各层拐角处的微L炉,“白领”们端着?br /> 来的便当Q排起了镉K的队伍。后来,物业允许快餐公司入住Q又出现?#8220;千h排队{?br /> 丽华”的盛c这些月入近万的人士节约到抠门的E度。一位同事,10块钱的感冒药?br /> 找保险公司理赔;另一位,在脏乱差的火车站耗上3个小Ӟ为的?8Q?0后返E能?br /> ?50元的晚餐补助?/p> <p>  q幕q喜剧未能o我发W,我读得懂Q每个数字后都凝l着加班加点与忍气吞壎ͼ<br /> 俯首帖而老板盘剥Qؓ的是一q米一q米构筑赯q窝。白手v家的q程艰辛?br /> 漫长Q整?q_我没休过一ơ长假没吃过一回鸭脖子Q听?#8220;华ؓ25岁员工胡新宇q?br /> x”的新闻,也半点儿不觉得惊Ӟ以血汗、青春换银子的现象在q个行业太普遍了<br /> 。下ơ,当你在上地看见一hI着西装革拎着IBMW记本奋力挤?毛钱的公交RQ?br /> 千万别奇怪,我们是一IT民工?/p> <p>  惟一让hƣ慰的是Q我们离理想中的目标一步步靠近?/p> <p>  H如其来圎ͼ你的喜讯从天而降Q邀请大家周末去新居暖暖ѝ怎么可能Q你竟比<br /> 我快Q可豁亮?00多^方米、红Ҏ家具?7寸液晶大彩电无可质疑地摆在眼前。你<br /> L淡写地说Q老头子给?0万,她家里也l了10万,老催着我们l婚……回家的\?br /> Q女朋友郁郁不说话,她和我一P来自无名的山城。我揽过她的肩膀Q鼓励她也是?br /> p己,没关p,我们拿时间换I间?/p> <p>  蜜月你在香港q的Q轻而易丑֜花掉了半q的工资Q回来说Q意思不大,不像TVB<br /> 电视里拍的那L轮美奂;我的婚礼Q在家乡的土路、乡亲的围观中E游,在低矮昏?br /> 的老房子里拜了天地Q在寒冷的土炕上与爱人相拥入眠。幸q的是,多年后黯淡的图景<br /> 化作d博客里光芒四的囄Q她回味Q?#8220;有爱的地方,有天堂?#8221;</p> <p>  我们都想l深q奛_以天堂,天堂的含义却q然不同。你的老婆当上了全职太?br /> Q每天用电驴下蝲《老友记》和《越狱》;我也惌么来着Q老婆不同意,你养我,?br /> L爸妈Q不忍心让你一个h?个h。当你的奛_L倩碧面膜舒服地翘赯Q我?br /> 奛_却在人v中顽强地搏杀?/p> <p>  两个q速度快得多。到2004q年底,我们也攒C人生中第一?0万,谁知<br /> 中国的楼市在此时被魔鬼唤醒,啸般狂飙突q,摧毁一切ؓ虚q个体?005q?<br /> 月,首付q够买西四环的郦城,?月,只能d城扫g。我们的U蓄本来能买90q?br /> 方米的两居来着Q?月中旬,仅仅q去2个月Q只够买80多^?/p> <p>  没学q经学原理Q没关系。生zȝ动地阐释了什么叫资泡沫与流动性泛滥。这<br /> 时专家蟩出来发言了,“北京房h应该?0Q,上v房h应该?0Q?#8221;要不Q再{等<br /> Q我险些栖n于温吞的I方阵营Q是你站出来指点qh|Q赶快买Q房仯会涨。买房的<br /> 消息传回老家Q爹娘一个劲儿地唏嘘Q抵得上Z忙活半年。在他们看来Q?500元一q?br /> 方米是不可思议的天仗?q后?008Q师弟们UL感叹Q你赚大发了Q四环内均h1?br /> 4Q已无楼可买?/p> <p>  几天前,我看见了水木上一句留aQ颇为感慨:“工作5q还没买房真z该Q?003<br /> q正是楼市低q与萧条之时。等C天,t空的不仅是黄金楼市Q更是整个h生?#8221;</p> <p>  真要感谢你,在我不知理胦Z物之Ӟ你早早地告诉我什么叫消费什么叫投资?/p> <p>  q所有h都拥有前ȝ眼光和投资的观念。许多和我一h自小地方、只知埋?br /> 苦干的兄弟们Q太q关注脚下的麦田Q以至于错过一片璀璨的星空。你的理论是Q赚?br /> 是ؓ了花Q只有在通中才能增|买到喜爱的商品,让生zdL怡。而我的农民兄<br /> 弟——这里特指是n农家毕业后留在大城市的兄弟,习惯于把人民币紧紧地捏在手中<br /> 。存折数字的增长让他们痴q该买房Ӟ他们在租房;该还hQ他们宁可忍?Q?br /> 的贷Ƒֈ率,也要存上5q的定期。辛苦赚来的银子在等待中~水贬倹{他们往往在房<br /> L巅峰处,无可奈何地接下最后一;也曾天真地许愿,赚够100万就回家买房。可<br /> {到那一天真的到来,老家的房P二线、三U城市甚至乡镇的都已疯长?/p> <p>  q便是我和你的最大差别,Ҏ蒂固的分歧、不可逾越的`沟也在于此。我曄?br /> 为,学位、薪水、公司名气一样了Q我们的人生便一样了。事实上Q差别不体现在显?br /> 易见的符号上Q而是体现在世世代代的传承里,体现在血液里Q体现在头脑中?8q的<br /> U篏Q家庭出w、生zL式、胦务观念,造就了那样一个你Q也造就了这样一个我Q?br /> ׃你的疏狂佻达与我的保守持重。当我还清贷ƾ时Q你CW二套住房;上证指数<br /> 6000点,当我好容易试水成民,你清仓离场,转投金市Q我每月?000元回去,?br /> 担v赡养父母的责任,你笑d地说Q养老,我不啃老就不错了;当我思考着要不要生<br /> 孩子、养孩子的成本会在多大程度上折损生活品质Ӟ4个老h已出钱出力帮你抚养v<br /> 独二代;黄金周去一九寨沟挺好的了Q你不满I你说德国太拘谨美国太随意法国?br /> 是你向往的时之?#8230;…</p> <p>  我的故事Q是一?#8220;UL”的真实写照——迫不得已离乡背井,国q员辽阔Q我<br /> 却像候鸟一栯转迁徙,择木而栖。现行的C会体制Q注定了大城市拥有更丰富的教?/p> <p>资源、医疗资源、生zM利。即便取得了一U户口,跻n融入的过E依然是充满煎熬Q?br /> 5q?0q乃x长时间的奋斗才获得土著们唾手可得的一切。曾l愤慨过Q追寻过Q?br /> 如今Q却学会了不再抱怨,在一个又一个缝隙间心^气和。差距固然存在,但ƈ不o?br /> 遗憾Q正是差距和为I补差距所付出的努力,加强了生命的张力Q其更有层ơ更加多<br /> 元?/p> <p>  可以惌的未来是Q有一天我们的后代会相聚于q斯|q点自信我还是有的)Q?br /> 讲v父亲的故事,我的那一个,虽然不一定更_致更华彩,无疑曲折有趣得多。那个故<br /> 事,关于独立、勇气、绝地反式Vvd生,我给不v儿子名R豪宅Q却能给他一个不<br /> 断成长的心灵。我要跟他说Q无I富贵,百万家资或颠沛流,都要一样地从容?br /> 达?/p> <p>  xQ喝不喝咖啡又有什么打紧呢Q生zd态的优雅与否Q不取决于你所坐的位置<br /> 、所持的器皿、所付的茶资。它取决于你品茗的态度?/p> <p>  我奋斗了18q_不是Z和你一起喝咖啡?br /> </p><img src ="http://www.tkk7.com/mlh123caoer/aggbug/171312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2007-12-28 20:19 <a href="http://www.tkk7.com/mlh123caoer/archive/2007/12/28/171312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Acegi配置文档 http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168120.html草儿草儿Sun, 16 Dec 2007 13:38:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168120.htmlhttp://www.tkk7.com/mlh123caoer/comments/168120.htmlhttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168120.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/168120.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/168120.html阅读全文

草儿 2007-12-16 21:38 发表评论
]]>
Acegi学习结 http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168117.html草儿草儿Sun, 16 Dec 2007 13:31:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168117.htmlhttp://www.tkk7.com/mlh123caoer/comments/168117.htmlhttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168117.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/168117.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/168117.html一、基本原?/strong>
Acegi认证授权主要Z两大技术,一是Filter机制Q二是AOP的拦截机制。通过FilterSecurityInterceptor很好地实C对URI的保护,通过MethodSecurityInterceptor实现了对Service的方法的拦截保护Q通过ACL 实现了对prototypecd的Objectq行qo和保护?/p>

二、基本概?/strong>
HttpSessionContextIntegrationFilter 存储SecurityContext in HttpSession
ChannelProcessingFilter 重定向到另一U协议,如http到https

ConcurrentSessionFilter 因ؓ不用Q何SecurityContextHolder的功能,但是需要更新SessionRegistry来表C当前的发送请求的principalQ通过在web.xml中注册Listener监听Session事gQƈ发布相关消息Q然后由SessionRegistry获得消息以判断当前用LSession数量?/p>

AuthenticationProcessingFilter 普通认证机?大多数用q个)

CasProcessingFilter CAS认证机制

BasicProcessingFilter Http协议的Basic认证机制

HttpRequestIntegrationFilter Authentication 从容器的HttpServletRequest.getUserPrincipal()获得

JbossIntegrationFilter 与Jboss相关?/p>

SecurityContextHolderAwareRequestFilter 与servlet容器l合使用?/p>

RememberMeProcessingFilter ZCookies方式q行认证?/p>

AnonymousProcessingFilter 匿名认证?/p>

ExceptionTranslationFilter 捕获所有的Acegi Security 异常Q这栯么返回一个HTTP错误响应或者加载一个对应的AuthenticationEntryPoint

AuthenticationEntryPoint 认证入口

三、Acegi认证授权程
1、FilterToBeanProxy 负责代理hlFilterChainProxy

2、FilterChainProxy 方便的将多个Filter串联hQ如上面基本概念中提到的各种FilterQ当然如果对URIq行授权保护Q也可以包含FilterSecurityInterceptor。注意各Filter的顺序?/p>

3、AbstractSecurityInterceptor 调度中心。负责调用各模块完成相应功能?
FilterSecurityInterceptor 对URIq行拦截保护
AspectJSecurityInterceptor Ҏ法进行拦截保?
MethodSecurityInterceptor Ҏ法进行拦截保?/p>

4、AuthenticationManager 用户认证
-> AuthenticationProvider 实际q行用户认证的地?多个)?
-> UserDetailsService q回带有GrantedAuthority的UserDetail或者抛出异常?/p>

5、AccessDecisionManager(UnanimousBased/AffirmativeBased/ConsensusBased) 授权
-> AccessDecisionVoter(RoleVoter/BaseAclEntryVoter) 实际投票的Voter(多个).

6、RunAsManager 变更GrantedAuthority

7、AfterInvocationManager 变更q回的对?
-> BaseInvocationProvider 实际完成q回对象变更的地?多个)?/p>

 



草儿 2007-12-16 21:31 发表评论
]]>
Acegi框架介绍 http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168116.html草儿草儿Sun, 16 Dec 2007 13:29:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168116.htmlhttp://www.tkk7.com/mlh123caoer/comments/168116.htmlhttp://www.tkk7.com/mlh123caoer/archive/2007/12/16/168116.html#Feedback0http://www.tkk7.com/mlh123caoer/comments/commentRss/168116.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/168116.html【IT168 专稿?/strong>对于M一个完整的应用pȝQ完善的 认证和授权机制是必不可少的。Acegi SecurityQ以下简UAcegiQ是一个能为基于Spring的企业应用提供强大而灵zd全访问控制解x案的框架QAcegi已经成ؓ Spring官方的一个子目Q所以也UCؓSpring Security。它通过在Spring容器中配|一lBeanQ充分利用Spring的IoC和AOP功能Q提供声明式安全讉K控制的功能。虽Ӟ现在 Acegi也可以应用到非Spring的应用程序中Q但在Spring中用Acegi是最自然的方式?
Acegi可以实现业务对象ҎU的安全讉K控制_度Q它提供了以下三斚w的应用程序的安全Q?

? URL资源的访问控?/strong>
    如所有用P包括其名用户Q可以访问index.jspd面Q而只有授权的用户可以讉K/user/addUser.jsp面。Acegi允许通过正则表达式或Ant风格的\径表辑ּ定义URL模式Q让授权用户讉K某一URL匚w模式下的对应URL资源?

? 业务cL法的讉K控制
    Spring容器中所有Bean的方法都可以被Acegi理Q如所有用户可以调用BbtForum#getRefinedTopicCount()ҎQ而只有授权用户可以调用BbtForum#addTopic()Ҏ?

? 领域对象的访问控?/strong>
    业务cL法代表一个具体的业务操作Q比如更攏V删除、审批等Q业务类Ҏ讉K控制解决了用h否有调用某种操作的权限,但ƈ未对操作的客体(领域对象Q进 行控制。对于我们的论坛应用来说Q用户可以调用BbtForum#updateUser(User user)Ҏ更改用户注册信息Q但应该仅限于更改自q用户信息Q也卌用BbtForum#updateUser()所操作的Userq个领域对象?L受限的?

    Acegi通过多个不同用途的Servletqo器对URL资源q行保护Q在h受保护的URL资源前,Acegi的Servletqo器判断用h否有权访问目标资源,授权者被开放访问,而未未被授权者将被阻挡在大门之外?
    Acegi通过Spring AOP对容器中Bean的受控方法进行拦截,当用Lh引发调用Bean的受控方法时QAcegi的方法拦截器开始工作,L未授权者的调用?nbsp;
    
    寚w域对象的讉K控制建立在对BeanҎ保护的基上,在最l开攄标BeanҎ的执行前QAcegi检查用LACLQAeccess Control ListQ访问控制列表)是否包含正要q行操作的领域对象,只有领域对象被授权时Q用h可以使用BeanҎ寚w域对象进行处理。此外,Acegiq可 以对BeanҎq回的结果进行过滤,一些不在当前用戯问权限范围内的领域对象剔除掉——即传统的数据可视域范围的控制。一般来_使用Acegi?制数据可视域未非理想的选择Q相反通过传统的动态SQL的解x案往往更加单易行?

    从本质特性上来说QServletqo器就是最原始的原生态AOPQ所以我们可以说Acegi不但对业务类Ҏ、领域对象访问控刉用了AOP技术方案, 对URL资源的访问控制也使用了AOP的技术方案。用AOP技术方案的框架是o人振奋的Q这意味着Q开发者可以在应用E序业务功能开发完毕后Q轻村֜?qAcegil应用程序穿上安全保护的“铁布?#8221;?br />
Acegi体系l构
    乘飞机前需要通过安检Q乘客必L供n份证以验证其w䆾。在通过安检q入候机室后Q国航、v航、南航等不同航空公司的飞机陆l到达,但你只能M机票上对 应航班的飞机。在L后,只能坐在机票对应的位上——你不能抢占他h的位,你不能在座位上刻字留c你不能要求I姐打开机窗……

    乘飞机的q程最能体现安全控制的程Q我们可以从中找到n份认证、资源访问控制、领域对象安全控制的对应物:安检对应w䆾认证Q登机对应资源访问控制而按号就座则对应领域对象安全控制?
    Acegi通过两个lg对象完成以上安全问题的处理:AuthenticationManagerQ认证管理器Q、AccessDecisionManagerQ访问控制管理器Q,如图 1所C:


?1 Acegi体系l构

    SecurityContextHolder是框架的容器,它保存着和所有用户关联SecurityContext实例Q?SecurityContext承蝲着用户Q也U认证主体)的n份信息的权限信息Q?AuthenticationManager、AccessDecisionManager据此进行安全访问控制?
   
    SecurityContext的认证主体安全信息在一个HTTPhU程的多个调用之间是׃n的(通过ThreadLocalQ,但它不能在多个请求之 间保持共享。ؓ了解册个问题,Acegi认证主体安全信息缓存于HttpSession中,当用戯求一个受限的资源ӞAcegi通过 HttpSessionContextIntegrationFilter认证主体信息从HttpSession中加载到 SecurityContext实例中,认证M兌的SecurityContext实例保存在Acegi容器U的 SecurityContextHolder里。当hl束之后QHttpSessionContextIntegrationFilter执行相反的操 作,SecurityContext中的认证M安全信息重新转存到HttpSession中,然后从SecurityContextHolder中清 除对应的SecurityContext实例。通过HttpSession转存机制Q用L安全信息可以在多个HTTPh间共享,同时保证 SecurityContextHolder中仅保存当前有用的用户安全信息,其整体过E如?2所C:


?2 SecurityContext在HttpSession和请求线E间的{交过E?


    当用戯求一个受限的资源ӞAuthenticationManager首先开始工作,它象一个安入口Q对用户w䆾q行核查Q用户必L供n份认证的 凭证Q一般是用户?密码Q。在q行w䆾认证ӞAuthenticationManagern份认证的工作委托l多?AuthenticationProvider。因为在具体的系l中Q用戯n份可能存储在不同的用户信息安全系l中Q如数据库、CA中心、LDAP服务 器)Q不同用户信息安全系l需要不同的AuthenticationProvider执行诸如用户信息查询、用戯n份判断、用h权信息获取等工作。只?有一个AuthenticationProvider可以识别用户的n份,AuthenticationManager通过用户w䆾认证Qƈ用L?权信息放入到SecurityContext中?

   当用户通过w䆾认证后,试图讉K某个受限的程序资源时QAccessDecisionManager开始工作?AccessDecisionManager采用民主决策机制判断用户是否有权讉K目标E序资源Q它包含了多个AccessDecisionVoter?在访问决{时每个AccessDecisionVoter都拥有投权QAccessDecisionManagerl计投票l果Qƈ按照某种决策方式?据这些投结果决定最l是否向用户开攑֏限资源的讉K?


、操作类都在q些lgcȝ基础上进行操作。在q入Acegi框架的具体学习前Q有必要事先了解一下这些承载Acegi框架重要概念的组件类?
    首先Q我们要接触是UserDetails接口Q它代表一个应用系l的用户Q该接口定义了用户安全相关的信息Q如用户?密码Q用h否有效等信息Q你可以Ҏ以下接口Ҏq行相关信息的获取:
    String getUsername()Q获取用户名Q?nbsp;
     String getPassword()Q获取密码; 
     boolean isAccountNonExpired()Q用户帐h否过期; 
     boolean isAccountNonLocked()Q用户帐h否锁定; 
     boolean isCredentialsNonExpired()Q用L凭证是否q期Q?nbsp;
     boolean isEnabled()Q用h否处于激zȝ态?
    当以上Q何一个判断用L态的Ҏ都返回falseӞ用户凭证p视ؓ无效?
    UserDetailsq定义了获取用户权限信息的方法:GrantedAuthority[] getAuthorities()QGrantedAuthority代表用户权限信息Q它定义了一个获取权限描qC息(以字W串表示Q如 PRIV_COMMONQ的ҎQString getAuthority()?


?3 用户和权?

    在未使用Acegi之前Q我们可能通过cMUser、Customer{领域对象表C用L概念Qƈ在程序中~写相应的用戯证的逻辑。现在,你要做的一 个调整是让原先这些代表用h늚领域cd现UserDetails接口Q这PAcegi可以通过UserDetails接口讉K到用L信息了?nbsp;

    UserDetails可能从数据库、LDAP{用户信息资源中q回Q这要求有一U机制来完成q项工作QUserDetailsService正是充当q?一角色的接口。UserDetailsService接口很简单,仅有一个方法:UserDetails loadUserByUsername(String username) Q这个方法通过用户名获取整个UserDetails对象?
Authentication代表一个和应用E序交互的待认证用户QAcegi从类gd面、Cookie{处获取待认证的用户信息Q一般是用户名密码)自动构造Authentication实例?


?4 Acegi的认证用?

    Authentication可以通过Object getPrincipal()获取一个代表用L对象Q这个对象一般可以{换ؓUserDetailsQ从中可以取得用户名/密码{信息。在 Authentication被AuthenticationManager认证之前Q没有Q何权限的信息。在通过认证之后QAcegi通过 UserDetails用户对应的权限信息加蝲到Authentication中。Authentication拥有一?GrantedAuthority[] getAuthorities()ҎQ通过该方法可以得到用户对应的权限信息?
    Authentication和UserDetails很容易被hQ因Z者都有用户名/密码及权限的信息Q接口方法也很类伹{其?Authentication是Acegiq行安全讉K控制真正使用的用户安全信息的对象Q它拥有两个状态:未认证和已认证。UserDetails是代 表一个从用户安全信息源(数据库、LDAP服务器、CA中心Q返回的真正用户QAcegi需要将未认证的Authentication和代表真实用L UserDetailsq行匚w比较Q通过匚w比较Q简单的情况下是用户?密码是否一_后,AcegiUserDetails中的其它安全信息Q如 权限、ACL{)拯到Authentication中。这PAcegi安全控制lg在后l的安全讉K控制中只和Authenticationq行?互?

׃Acegi对程序资源进行访问安全控制时Q一定要事先获取和请求用户对应的AuthenticationQAcegi框架必须为Authentication提供一?#8220;寓所”Q以便在需要时直接?#8220;寓所”把它请出来,作ؓ各种安全理器决{的依据?

    SecurityContextHolder是Authentication容n?#8220;寓所”Q你可以通过 SecurityContextHolder.getContext().getAuthenication()代码获取Authentication?l心观察一下这句代码,你会发现在SecurityContextHolder和Authentication之间存在一个getContext()?介,q个Ҏq回SecurityContext对象。SecurityContextq个半\杀出来的程咬金有什么特D的用途呢Q我们知?Authentication是用户安全相关的信息Q请求线E其它信息(如登录验证码{)则放|在SecurityContext中,构成了一个完整的?全信息上下文。SecurityContext接口提供了获取和讄Authentication的方法:
?Authentication getAuthentication()
?void setAuthentication(Authentication authentication)


?5 认证用户信息存储?/p>     SecurityContextHolder是Acegi框架U的对象Q它在内部通过ThreadLocal求线E提供线E绑定的 SecurityContext对象。这PM参与当前hU程的Acegi安全理lg、业务服务对象等都可以直接通过 SecurityContextHolder.getContext()获取U程l定的SecurityContextQ避免通过Ҏ入参的方式获取用?相关的SecurityContext?

    U程l定模式对于大多数应用来说是适合的,但是应用本n会创建其它的U程Q那么只有主U程可以获得U程l定SecurityContextQ而主U程衍生 出的新线E则无法得到U程l定的SecurityContext。Acegi考虑Cq些不同应用情况Q提供了三种l定SecurityContext?模式Q?
?SecurityContextHolder.MODE_THREADLOCALQSecurityContextl定CU程Q这是默认的模式Q?
?SecurityContextHolder.MODE_GLOBALQSecurityContextl定到JVM中,所有线E都使用同一个SecurityContextQ?
?SecurityContextHolder.MODE_INHERITABLETHREADLOCALQ:SecurityContextl定CU程及由ȝE衍生的U程中?
    你可以通过SecurityContextHolder.setStrategyName(String strategyName)Ҏ指定SecurityContext的绑定模式?

  用户认证q程
  Acegi支持多种方式的用戯证:如典型的Z数据库的认证、基于LDAP的认证、基于Yale中心认证{方式。不同的认证环境拥有不同的用戯证方式,现在我们先抛开q些具体的细节,考察一下Acegi对受限资源进行访问控制的典型q程Q?
    1Q你点击一个链接访问一个网;
    2Q浏览器发送一个请求到服务器,服务器判断出你正在访问一个受保护的资源;
    3Q如果此时你q未通过w䆾认证Q服务器发回一个响应提CZq行认证——这个响应可能是一个HTTP响应代码Q抑或重定向C个指定页面;
    4Q根据系l用认证机制的不同Q浏览器或者重定向C个登录页面中Q或者由览器通过一些其它的方式获取你的w䆾信息Q如通过BASIC认证对话框、一个Cookie或一个X509证书Q;
    5Q浏览器再次用戯n份信息发送到服务器上Q可能是一个用L录表单的HTTP POST信息、也可能是包含认证信息的HTTP报文_Q?
    6Q服务器判断用户认证信息是否有效Q如果无效,一般情况下Q浏览器会要求你l箋试Q这意味着q回W?步。如果有效,则到达下一步;
    7Q服务器重新响应W?步所提交的原始请求,q判断该h所讉K的程序资源是否在你的权限范围内,如果你有权访问,h得到正的执行q返回结果。否则,你将收到一个HTTP 403错误Q这意味着你被止讉K?
    在Acegi框架里,你可以找到对应以上大多数步骤的类Q其中ExceptionTranslationFilter、AuthenticationEntryPoint、AuthenticationProvider以及Acegi的认证机制是其中的代表者?

    ExceptionTranslationFilter是一个Acegi的Servletqo器,它负责探抛出的安全异常。当一个未认证用户讉K服务?ӞAcegi引发一个Java异常。Java异常本n对HTTPh以及如何认证用户是一无所知的Q?ExceptionTranslationFilter适时dQ对q个异常q行处理Q启动用戯证的步骤Q第3步)。如果已认证用户权讉K一个资源, Acegi也将引发一个Java异常QExceptionTranslationFilter则将q个异常转换为HTTP 403响应码(W?步)。可见,Acegi通过异常q行通讯Q?br /> ExceptionTranslationFilter接收q些异常q作出相应的动作?

    当ExceptionTranslationFilter通过Java异常发现用户q未认证Ӟ它到底会请求重定向哪个面以要求用h供认证信息呢Q?q通过咨询AuthenticationEntryPoint来达到目的——Acegi通过AuthenticationEntryPoint描述d?面?

    当你的浏览器通过HTTP表单或HTTP报文头向服务器提供用戯证信息时QAcegi需要将q些信息攉到Authentication中,Acegi ?#8220;认证机制”描述q一q程。此Ӟq个新生成Authentication只包含用h供的认证信息Q但q未通过认证?br /> AuthenticationProvider 负责对Authenticationq行认证。AuthenticationProviderI竟如何完成q一q程呢?请回忆一下上节我们所介绍?UserDetails和UserDetailsServiceQ大多数AuthenticationProvider通过 UserDetailsService获取和未认证的Authentication对应的UserDetailsq进行匹配比较来完成q一d。当用户?证信息匹配时QAuthentication被认为是有效的,AuthenticationProviderq一步将UserDetails中权限?ACL{信息拷贝到Authentication?
当Acegi通过认证机制攉到用戯证信息ƈ填充好Authentication后,Authentication被保存到SecurityContextHolder中ƈ处理用户的原始请求(W?步)?

    你完全可以抛开Acegi的安全机Ӟ~写自己的Servletqo器,使用自己的方案构建Authentication对象q将其放|到SecurityContextHolder中。也怽使用了CMAQContainer
Managed AuthenticationQ容器管理认证)QCMA允许你从ThreadLocal或JNDI中获取用戯证信息,q时你只要获取这些信息ƈ其转换为Authentication可以了?

   安全对象讉K控制
    AcegiU受保护的应用资源ؓ“安全对象”Q这包括URL资源和业务类Ҏ。我们知道在Spring AOP中有前置增强、后|增强、异常增强和环绕增强Q其中环l增强的功能最为强大——它不但可以在目标方法被讉K前拦截调用,q可以在调用q回前改变返?的结果,甚至抛出异常。Acegi使用环绕增强对安全对象进行保护?
    Acegi通过AbstractSecurityInterceptor为安全对象访问提供一致的工作模型Q它按照以下程q行工作Q?
    1Q?从SecurityContext中取出已l认证过的AuthenticationQ包括权限信息)Q?
    2Q?通过反射机制Q根据目标安全对象和“配置属?#8221;得到讉K目标安全对象所需的权限;
    3Q?AccessDecisionManagerҎAuthentication的授权信息和目标安全对象所需权限做出是否有权讉K的判断。如果无权访问,Acegi抛出AccessDeniedException异常Q否则到下一步;
4Q?讉K安全对象q获取结果(q回值或HTTP响应Q;
5Q?AbstractSecurityInterceptor可以在结果返回前q行处理Q更改结果或抛出异常?    AcegiU受保护的应用资源ؓ“安全对象”Q这包括URL资源和业务类Ҏ。我们知道在Spring AOP中有前置增强、后|增强、异常增强和环绕增强Q其中环l增强的功能最为强大——它不但可以在目标方法被讉K前拦截调用,q可以在调用q回前改变返?的结果,甚至抛出异常。Acegi使用环绕增强对安全对象进行保护?    Acegi通过AbstractSecurityInterceptor为安全对象访问提供一致的工作模型Q它按照以下程q行工作Q?    1Q?从SecurityContext中取出已l认证过的AuthenticationQ包括权限信息)Q?    2Q?通过反射机制Q根据目标安全对象和“配置属?#8221;得到讉K目标安全对象所需的权限;     3Q?AccessDecisionManagerҎAuthentication的授权信息和目标安全对象所需权限做出是否有权讉K的判断。如果无权访问, Acegi抛出AccessDeniedException异常Q否则到下一步; 4Q?讉K安全对象q获取结果(q回值或HTTP响应Q; 5Q?AbstractSecurityInterceptor可以在结果返回前q行处理Q更改结果或抛出异常?


?6 AbstractSecurityInterceptor工作程

    安全对象和一般对象的区别在于前者通过Acegi?#8220;配置属?#8221;q行了描qͼ?#8220;/view.jsp=PRIV_COMMON”配置属性就?“/view.jsp”q个URL资源标识为安全对象,它表C用户在讉K/view.jspӞ必须拥有PRIV_COMMONq个权限。配|属性通过 XML配置文gQ注解、数据库{方式提供。安全对象通过配置属性表CZؓ一个权限,q样QAcegi可以根据Authentication的权限信息获?用户可以讉K的哪些安全对象?
    Ҏ安全对象的性质以及具体实现技术,AbstractSecurityInterceptor拥有以下三个实现c:
?FilterSecurityInterceptorQ对URL资源的安全对象进行调用时Q通过该拦截器实施环绕切面。该拦截器用Servletqo器实现AOP切面Q它本n是一个Servletqo器;
?MethodSecurityInterceptorQ当调用业务cL法的安全对象Ӟ可通过该拦截器cd施环l切面;
?AspectJSecurityInterceptorQ和MethodSecurityInterceptorcMQ它是针对业务类Ҏ的拦截器Q只不过它通过AspectJ实施AOP切面?


  Acegi版本升的一些重大变?nbsp;
    Acegi目开始于2003q_Acegi团队在发布新版本旉常}慎,在本书写作之ӞAcegi最新版本ؓ1.0.3。在此之前Acegi已经发布 ?0多个预览版本Q由于Acegi框架优异的表玎ͼ许多大型应用早在Acegi 1.0正式版本发布之前Q?006q?月)Q就已经采用Acegi框架作ؓ其安全访问控制的解决Ҏ?br />
    在AcegiC֌里,来自世界各地众多优秀的安全领域专家对Acegi的改q和发展献计献策QAcegi团队q泛听取q吸收各U有益的Q将它们融入到Acegi的框架中QAcegi成ؓ构徏在Spring基础上企业应用的首选安全控制框架?
Acegi 1.0.3版本相比于早期预览版本发生了很大的变化,对于需要进行Acegi版本的项目来_了解q一变化特别重要。下面,我们列出Acegi的一些重大的升更新Q?
?包名的更斎ͼ?.9.0及之前的版本中,Acegi采用net.sf.acegisecurity包名前缀Q在1.0.0版本之后更改?org.acegisecurityQHibernate也走q相同的道\Q好在Acegi在正式版本发布之时就完成了这U{变)Q?

?ACL模块的调_ACL模块发生了重大的调整QAcegi团队接收了社区大量关于ACL模块的反馈意见,重新设计了ACL模块的底层结构,在性能、封?性、灵zL上得到了质的提升。事实上QAcegi使用org.acegisecurity.acls包代替了原来?org.acegisecurity.acl包,后者将在后期的版本中删除,׃q种伤筋动骨的变化,很隑օ容原来ACL模块。不q,目前Z新框架的 ACL模块q没有进行充分的试QAcegi承诺?.1.0版本发布时提供最l的实现Q?

?删除了ContextHolder及其相关c:在Acegi 0.9版本中,ContextHolder及其相关c被d从Acegi目中删除。ContextHolder可以在多个HTTPh中共享同一?ThreadLocalQ这和Spring提倡的ThreadLocal只应在同一U程中共享相悖。现在,Acegi使用 SecurityContextHolder替换ContextHolderQ它的生命周期是一个HTTP hQ?

?使用FilterChainProxy同时代理多个qo器:在早期的版本中,Acegi通过FilterToBeanProxyweb.xml中的 Servletqo器定义{UdSpring容器中。这比直接在web.xml中配|Servletqo器要方便一些,但是Acegi框架往往需要定义多 个Servletqo器,使web.xml配置文g变得冗长隄。在Acegi 0.8版本中提供FilterChainProxyQ它可以同时代理多个Servletqo器ƈ保证qo器的序。因此在新版本中Q?FilterChainProxy成ؓ推荐的选择?

    结
    Acegi是Spring目下一个成熟的安全讉K控制框架Q它允许利用了Spring IoC的AOP的功能完成安全对象的讉K控制。在Acegi框架中,SecurityContextHolder处于非常核心的位|,它是存放认证理?用户安全信息SecurityContext?#8220;容器”QSecurityContext保存着用户安全讉K控制所需的信息,直接被访问决{管理器使用?HttpSessionContextIntegrationFilter通过在SecurityContextHolder和HttpSession?摆渡SecurityContextQ多个hU程可以׃n同一个SecurityContext?br />

草儿 2007-12-16 21:29 发表评论
]]>
Java学习W记 - 基础?/title><link>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168109.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sun, 16 Dec 2007 13:04:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168109.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/168109.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/168109.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/168109.html</trackback:ping><description><![CDATA[<div><strong>一、面向对象的~程概念</strong><strong></strong></div> <div><strong></strong></div> <div>观察现实对象两个性质Q状态、行为?/div> <div></div> <div>面向对象的好处:模块化、隐藏信息?/div> <div></div> <div>l承Q子cM父类Q超c)l承状态和行ؓQ子cd以改变父cȝ状态和行ؓ?/div> <div></div> <div>接口Q是无关对象用来q行彼此交互的设备;一个对象可以实现多个接口?/div> <div></div> <div></div> <div><strong>二、语a基础</strong><strong></strong></div> <div></div> <div><strong>变量</strong><strong></strong></div> <div>对象它的状态存储在变量中;变量是一个由标识W命名的数据V?/div> <div>声明变量的Ş式:<cd> <名称></div> <div></div> <div><strong>JAVA</strong><strong>语言两大数据cd</strong><strong></strong></div> <div>原始cd数据(基本数据cd)、引用类型?/div> <div>原始cd数据是不能再分解的数据类?8U:byte、short、int、long、float、double、char、boolean)Q数据在作ؓ函数参数是以“传?#8221;方式工作的;</div> <div></div> <div><strong>整数</strong>           byteQ?字节长的整数Q?位有W号的二q制补码整数</div> <div>                  shortQ短整数Q?6位有W号的二q制补码整数</div> <div>                  intQ整敎ͼ32位有W号的二q制补码整数</div> <div>                  longQ长整数Q?4位有W号的二q制补码整数</div> <div></div> <div><strong>实数</strong>            flatQ单_ֺ点敎ͼ32位IEEE 754点?/div> <div>                  doubleQ双_ֺ点敎ͼ64位IEEE 754点?/div> <div></div> <div><strong>其他cd</strong> charQ单一Unicode字符Q?6位Unicode字符</div> <div>                  booleanQ布?true或false)Q??1?8位空_1位数?</div> <div>     </div> <div>引用cd包括c?class)、接?interface)、数l?array)。引用类型有时也U复合类型,它是可以分解为基本类型的数据cdQ其数据在作为函数参数时是以“传址”的方式工作的。与原始cd相对Q引用类型变量的值是对由此变量代表的一个值或一l值的引用(也就是地址)?/div> <div></div> <div><strong>如:</strong><strong></strong></div> <div>原始cd int a = 3; //“a”表示变量名称Q?#8220;3”表示变量|如果写成“final int a = 3;”Q?#8220;final”表示不可改变|所以这里的3(变量?不可?/div> <div>引用cd Staing b = "Hello Java"; //“b”表示引用名称Q?#8220;Hello Java”表示字Q串数l?/div> <div></div> <div><strong>程控制语句</strong><strong></strong></div> <div>循环         while、do - while、for</div> <div>判断         if - else、switch - case</div> <div>异常处理 try – catch – finally、throw</div> <div>分支         break、continue、label :、return</div> <div></div> <div>循环Q?/div> <div>while和do – while语句QWhile语句用于在条件保持ؓtrue时反复执行一个代码块Q?/div> <div>do – while语句的代码块中的语句臛_被执行一ơ?/div> <div></div> <div>for语句Q?/div> <div>for语句提供一UP代某个范围内的值的紧湊方式?/div> <div></div> <div>判断Q?/div> <div>if – else 语句Qif语句使程序能够根据某些条件有选择地执行其他语句;</div> <div>switch语句用于Ҏ一个整数表辑ּ有条件的执行语句Q?/div> <div>注意Q必要有明的break语句Q否则,程控制一个接一个的l过后面的case语句</div> <div>比较if语句和switch语句(if语句可以用于Ҏ某范围的值或条gq行判断;switch语句只用于根据单个整数D行判??/div> <div></div> <div>异常处理语句Q?/div> <div>当程序发生错误时Q程序会抛出一个异常,E序的正常流E被中断Q?/div> <div>分支语句Qbreak、continue语句可以和标{语句一起用,也可以没有标{;</div> <div>标签是放在一个语句前的标识符Q标识符后跟一个冒P</div> <div>continue 语句Qcontinue语句用于跌for、while、do – while循环的当前P代;</div> <div>return 语句Q返回一个|不返回倹{?/div> <div></div> <div></div> <div><strong>三、对象基和简单数据结?/strong><strong></strong></div> <div><strong></strong></div> <div>创徏对象Q声明一个变量来引用变量Q对对象q行实例?构造器)Q?/div> <div>用new操作W和构造器从类创徏对象?/div> <div></div> <div>两种方式使用一个对象:引用一个对象的变量Q调用对象的Ҏ?/div> <div></div> <div><strong>字符和字W串</strong><strong></strong></div> <div>JAVAq_包含三个用于处理字符数据的类Q?/div> <div>CharacterQ包含单个字W|定义了一些可用于操作和检查单字符数据的方?Charactercȝ对象实例包含单个字符|可用Character对象替代基本cdchar)?/div> <div>StringQ这个类用于处理由多个字W组成的不可改变的数据?/div> <div>StringBufferQ存储和操作由多个字W组成的可改变的数据?/div> <div></div> <div><strong>字符串和字符串缓冲区</strong><strong></strong></div> <div>StringQ不能改变自w的倹{?/div> <div>StringBufferQ用于将被修改的字符丌Ӏ?/div> <div></div> <div><strong>得到字符串或字符串缓冲区的长?/strong><strong></strong></div> <div>lengthҎQ返回字W串或字W串~冲Z包含的字W数?/div> <div>capacityҎQStringBufferҎQ返回分配给字符串缓冲区的空间量Q而不是被使用的空间量?/div> <div>StringcL有capacityҎQ因为字W串不能改变?/div> <div></div> <div><strong>通过索引从字W串或字W串~冲区得到字W?/strong><strong></strong></div> <div>charAt(int)ҎQ得到字W串或字W串~冲区某索引位置上的字符?/div> <div>注意Q第一个字W串的烦引ؓ0Q最后一个字W的索引为length – 1Q?/div> <div>subString(int), subString(int,int)Q从字符串或字符串缓冲区中得到多个字W?/div> <div></div> <div><strong>在字W串中搜索字W或子字W串</strong><strong></strong></div> <div>StringcL供了两个讉K器方法:indexOf Ҏ从字W串的开头向前搜索;lastIndexOf Ҏ从字W串的末֐后搜索;</div> <div>StringBuffercM支持indexOf和lastIndexOfҎ?/div> <div></div> <div><strong>操作字符?/strong><strong></strong></div> <div>StringcL几个Ҏ看v来可以修改字W串。当Ӟ字符串是不能被修改的Q所以,q些Ҏ实际上是创徏q返回包含结果的另一个字W串?/div> <div></div> <div><strong>修改字符串缓?/strong><strong></strong></div> <div>字符串缓冲是可以修改的,StingBuffer提供了几个用于修改字W串~冲区的数据的方法;</div> <div>如果修改字符串缓冲区的操作造成字符串缓冲区的大超出它的当前容量,那么字符串缓冲区会自动分配更多的内存?/div> <div></div> <div><strong>字符串和~译?/strong><strong></strong></div> <div>~译器在很多地方自动的用String和StringBuffercL处理字符串直接值和字符串连接;</div> <div>~译器ؓ它遇到的每个字符串直接D动创Z个新的String对象Q?/div> <div>可以使用+操作W连接字W串?/div> <div></div> <div></div> <div><strong>四、类和?/strong><strong></strong></div> <div><strong></strong></div> <div><strong>实现l承Q?/strong>extends关键?/div> <div></div> <div><strong>为类提供构造器</strong><strong></strong></div> <div>构造器用于初始化类的新对象Q构造器不是ҎQ没有返回类型;构造器的声明中可以使用以下讉K说明W:</div> <div>–      private</div> <div>–      protected</div> <div>–      public</div> <div>–      无说明符</div> <div></div> <div><strong>信息传递给Ҏ或构造器</strong><strong></strong></div> <div>参数cdQ?/div> <div>参数名称Q?/div> <div>按g递:参数是原始类型,Ҏ不能改变其|参数是引用类型,Ҏ不能改变其引用,但可以改变引用对象的倹{?/div> <div></div> <div><strong>从方法返回?/strong><strong></strong></div> <div>在方法声明中声明Ҏ的返回类型;eturn语句q回值的数据cd必须匚wҎ声明的返回类型;Ҏ可以q回原始cdQ也可以q回引用cd?strong></strong></div> <div></div> <div><strong>使用</strong><strong>this</strong><strong>关键?/strong><strong></strong></div> <div>在实例方法或构造器中,this引用当前对象Q也是被调用的Ҏ或构造器所属的对象Q在构造器中,q可以用this关键字调用相同类中的另一个构造器?/div> <div></div> <div><strong>控制对类成员的访?/strong><strong></strong></div> <div>讉K说明W决定其他类是否可以使用某个成员或调用某个方法。Java~程语言支持四种用于成员变量和方法的讉KU别Qprivate、protected、public?如果没有指定)package?strong></strong></div> <div><strong>讉KU别</strong><strong></strong></div> <div>PrivateQ类</div> <div>无说明符Q类、包</div> <div>ProtectedQ类、包、子c?/div> <div>PublicQ类、包、子cR所有类</div> <div></div> <div><strong>实例和类成员的初始化</strong><strong></strong></div> <div>可以在声明的同时q行初始化,但是有一些限Ӟ</div> <div>–      必须以一个赋D句表辑ֈ始化方式</div> <div>–      初始化表辑ּ不能调用M被声明ؓ抛出非运行时异常的方?/div> <div>–      如果初始化表辑ּ调用一个抛行时异常的方法,那么它不能进行错误恢?/div> <div>使用静态初始化块初始化cL员;</div> <div>实例成员的初始化?/div> <div><strong></strong></div> <div><strong>覆盖和隐藏方?/strong><strong></strong></div> <div>覆盖QoverrideQ(实例ҎQ:</div> <div>–      子类中的 个实例方法与类中的实例Ҏh相同的标记和q回cd</div> <div>–      Ҏ的标讎ͼ名称Q参数数量、参数类?/div> <div>–      覆盖Ҏ可以h不同的throws子句</div> <div>–      覆盖Ҏ的访问说明符允许讉K限制只能比被覆盖Ҏ的多</div> <div>–      子类不能覆盖类中声明ؓfinal的方?/div> <div>–      子类必须覆盖类中声明ؓabstract的方法,否则子类本n必须是抽象的</div> <div>覆盖和重载(overloadQ;</div> <div>覆盖和隐藏(cL法)?/div> <div></div> <div><strong>隐藏成员变量</strong><strong></strong></div> <div>在类中,如果一个成员变量与类中的成员变量同名Q即使它们的cd不同Q,那么它隐藏超cL员变量;</div> <div>在子cMQ不能通过单名U引用超cM的成员变量,而是必须通过super讉K它;</div> <div>代码可读性差Q不隐藏成员变量?/div> <div></div> <div><strong>使用</strong><strong>super</strong></div> <div>使用super调用被覆盖的ҎQ用super调用被隐藏的成员变量Q用super在构造器中调用超cȝ构造器?/div> <div></div> <div><strong>使用</strong><strong>Object</strong><strong>的后?/strong><strong></strong></div> <div>每个c都是Objectcȝ直接后代或间接后代;</div> <div>Objectcd义了所有类都必L的基本状态和行ؓQ?/div> <div>–      clone</div> <div>–      equals和hashCode</div> <div>–      finalize</div> <div>–      toString</div> <div>–      getClass</div> <div>–          notify、notifyAll和wait</div> <div></div> <div><strong>~写</strong><strong>final</strong><strong>cdҎ</strong><strong></strong></div> <div>类声明为finalQ即cM能被子类化:</div> <div>–      通过防止pȝ被改版来提高pȝ的安全?/div> <div>–      Z设计上的原因Q某些类不需要子c?/div> <div>finalҎQ?/div> <div>–          在方法声明中使用final关键字表C个方法不能被子类覆盖</div> <div></div> <div><strong>~写抽象cdҎ</strong><strong></strong></div> <div>抽象c:</div> <div>–      表示一个抽象的概念Q不应该被实例化</div> <div>–      abstract关键?/div> <div>抽象ҎQ?/div> <div>–      没有实现的方法,允许子类提供q些Ҏ的实现细?/div> <div>–          如果抽象cd包含抽象ҎQ那么它应该被定义成接口</div> <div></div> <div><strong>创徏cȝ结</strong><strong>    </strong></div> <div>cȝ定义有两个部分:</div> <div>–     cd?/div> <div>–     cMQ成员变量、方法、构造器</div> <div>讉K说明W——控制对成员变量和方法的讉K方式Q?/div> <div>cd量、类ҎQstaticҎ关键?/div> <div>实例成员、实例方?/div> <div></div> <div></div> <div><strong>五、接口和?/strong><strong></strong></div> <div><strong></strong></div> <div><strong>实现接口Q?/strong>implements关键?/div> <div></div> <div>cd以实现多个接?implements关键字后面跟以逗号分隔的接口列表;</div> <div>如果有extends关键?implements子句应该在extends子句的后面;</div> <div>c要么必需实现接口及其接口中的所有方?要么cd被声明为抽象的Q?/div> <div>cM的方法标?名称和参数列?必须匚w接口中的Ҏ标记?/div> <div></div> <div><strong>接口作为类型?/strong><strong></strong></div> <div>在定义了一个新接口?是在定义一个新的引用数据类型;</div> <div>定义可一用接?实例化是必须用类?/div> <div></div> <div><strong>接口不能改变</strong><strong></strong></div> <div>从语法的角度?接口可以被改变;</div> <div>从设计的角度?一个已l在pȝ中被q泛使用的接?不能L被改变;</div> <div>如果改变了接?实现原接口的c都无法工作;</div> <div>应该可能的考虑接口所提供的方法;</div> <div>如果要改变接?用承的方式定义新的接口?/div> <div></div> <div><strong>接口结</strong><strong></strong></div> <div>接口定义了一U功能描q?定义了对象之间进行通讯的协议;</div> <div>接口定义由接口声明和接口体组成;</div> <div>接口包含一l方法的声明,但没有方法的实现Q?/div> <div>实现接口的类必须实现接口中声明的所有方法;</div> <div>接口名称可以作ؓ数据cd使用?/div> <div></div> <div><strong>创徏和用包</strong><strong></strong></div> <div>创徏包:</div> <div>–     package语句作ؓcL接口源代码文件中的第一条语?/div> <div>–     cL接口的源代码和类文g的\径名与包的名U相对应</div> <div>使用另一个包中的接口或类Q?/div> <div>–     cL接口的限定名</div> <div>–     导入cL接口</div> <div>–     导入cL接口所在的整个?/div> <div></div> <div><strong>六、用异常处理错?/strong><strong></strong></div> <div><strong></strong></div> <div><strong>什么是异常</strong>Q异?exception)是在E序执行期间中断指o的正常流E的事g?/div> <div></div> <div><strong>try</strong><strong>?/strong><strong></strong></div> <div>try {</div> <div>       statements</div> <div>}</div> <div>statements是包含一个或多个可能抛出异常的语句?/div> <div></div> <div><strong>catch</strong><strong>?/strong><strong></strong></div> <div>每个catch块是一个异常处理器Q它处理由其参数指定的异常类?/div> <div>try{</div> <div>       ......</div> <div>} catch(ExceptionType name) {</div> <div>       ……</div> <div>} catch (ExceptionType name) {</div> <div>       ……</div> <div>}</div> <div></div> <div><strong>finally</strong><strong>?/strong><strong></strong></div> <div>finally块是可选的Q它提供一U机Ӟ其目的是无论try块中是否发生异常都确保进行清理工作;</div> <div>无论是否发生异常Q都会执行finally块中的代码?/div> <div></div> <div><strong>throw</strong><strong>语句</strong><strong></strong></div> <div>throw语句需要一个参敎ͼ一个可抛出的(ThrowableQ对象;可抛出对象是Throwablecȝ子类?/div> <div></div> <div><strong>Throwable</strong><strong>cd其子c?/strong><strong></strong></div> <div>ThrowablecL两个直接子类Q?/div> <div>–     Error</div> <div>–     Exception</div> <div>ErrorQ?/div> <div>–     JAVA虚拟机的动态链接故障或其它“?#8221;故障Q一般的E序不应该捕获ErrorQ也不能抛出Error</div> <div>ExceptionQ?/div> <div>大多数程序抛出ƈ捕获从ExceptioncL生的对象。Exception表示发生了一个问题,但ƈ不是严重的系l问题。你写的多数E序抛出ƈ捕获Exception(而不是Error)?/div> <div>–     Exception表示发生了一个问题,但ƈ不是严重的系l问?/div> <div>–     Exception的不同子c表C可能发生的各种异常</div> <div></div> <div><strong>异常的优点:</strong>错误代码与“常规”代码分离Q将错误沿调用堆栈向上传递;寚w误类型进行分l和区分?/div> <div></div> <div><strong>异常的小l?/strong><strong></strong></div> <div>E序可以使用异常表明发生了错误;</div> <div>E序可以使用throw语句抛出异常Q?/div> <div>异常是一个对象(Throwable的子c)Q?/div> <div>E序可以使用try、catch语句finally来捕获异常:</div> <div>–     try语句标识出可能发生的异常</div> <div>–     catch语句标识出异常处理器</div> <div>–          finally代码块不论抛出异怸否都会被执行Q适用于清理工?/div> <div></div> <div></div> <div><strong>七、线E:同时执行多个d</strong><strong></strong></div> <div><strong></strong></div> <div><strong>只要用到U程必ȝ承或接口Q?/strong><strong>Thread</strong><strong>?/strong><strong></strong></div> <div><strong>只要用到U程必要?/strong><strong>run</strong><strong>Ҏ?/strong><strong></strong></div> <div><strong></strong></div> <div><strong>什么是U程Q?/strong><strong></strong></div> <div>–     U程是程序内的一个单一的顺序控制流E?/div> <div>–     U程本n不是E序Q不能单独运行,它在一个程序内q行</div> <div>–     多个U程可以同时q行Q在一个程序内执行不同的Q?/div> <div></div> <div><strong>定制U程?/strong><strong>run</strong><strong>Ҏ</strong><strong></strong></div> <div>runҎ执行U程的工作;</div> <div>runҎ实现了线E的q行行ؓQ?/div> <div>runҎ可以做Q何可以用语句实现的事?/div> <div></div> <div><strong>为线E提?/strong><strong>run</strong><strong>ҎQ?/strong><strong></strong></div> <div>–     l承Threadc,q覆盖runҎ</div> <div>–     实现Runnable接口</div> <div></div> <div><strong>?/strong><strong>Thread</strong><strong>c进行子cd和覆?/strong><strong>run</strong></div> <div>public class SimpleThread extends Thread {</div> <div>       public SimpleThread(String str) {</div> <div>           super(str);</div> <div>       }</div> <div>       public void run() {</div> <div>           for (int i = 0; i < 10; i++) {</div> <div>               System.out.println(i + " " + getName());</div> <div>               try {</div> <div>                   sleep((long)(Math.random() * 1000));</div> <div>               } catch (InterruptedException e) {}</div> <div>           }</div> <div>           System.out.println("DONE! " + getName());</div> <div>       }</div> <div>}</div> <div></div> <div><strong>实现</strong><strong>Runnable</strong><strong>接口Q?/strong>如果一个类已经l承了另一个类Q那么要惛_现线E就必须实现Runnable接口?/div> <div></div> <div>在线E中l果是随Z生的Q如果想锁定对象p使用Synchronized关键字意思ؓ锁定Ҏ所有在的对象。在对象被解锁前Q其他线E不能调用相同对象上的被同步的方法。意思ؓ执行一个对象后Ȁzd一个对象,自n暂时睡眠Q等待另一个对象执行完毕,在执行下一步,反复如此?/div> <div><font face="Verdana"></font></div> <div><font face="Verdana"><strong>八、IOQ读和写</strong></font></div> <div> <p><font face="Verdana"><strong>如何使用道:</strong>道用于一个线E的输出q接到另一个线E的输入</font></p> <p><font face="Verdana"><strong>如何装:</strong>经常被以下的这UŞ式封装v来,以便l合许多的各种功能</font></p> <p><font face="Verdana"><strong>对象的串行化Q?/strong>Java.io包中的两个流——ObjectInputStream和ObjectOutputStream是字节流Q他们的工作与其他输入和输出类伹{但他们的特D之处在于它们可以读写对象?/font></p> <p><font face="Verdana"><strong>对对象进行串行化Q?/strong>如果一个不能串行化的对象传递给writeObjectҎQ那么它抛出一个NotSerializable Exception。对象只能在它的cdCSerializable接口的情况下被串行化?/font></p> <p><font face="Verdana"><strong>为类提供对象串行化:</strong>只有在对象的cdCSerializable接口情况下,对象才是可串行化的。所有,如果惌对你的类的实例进串行化,q个cdd现Serializable接口。Serializable接口是一个空接口Q也是_他不包含MҎ声明Q它的作用只是表明这个类的对象可以被串行化?/font></p> <p><font face="Verdana"><strong>I/O复制程?Copy.java)Q如下:</strong></font></p> <p><font face="Verdana">import java.io.File;<br /> import java.io.FileReader;<br /> import java.io.FileWriter;<br /> import java.io.IOException;<br /> //以上是此E序用到的IOcȝ包,也可以用“import java.io.*”</font></p> <p><font face="Verdana">public class Copy {<br />        public static void main(String[] args) throws IOException {<br /> File inputFile = new File("D:\\temp\\HelloWorld.java"); //目标文g路径QJAVA中\径地址只能?#8220;\\”?#8220;/”不能使用“\”<br /> File outputFile = new File("D:\\temp\\OutAgain.java"); //复制后新文g保存路径</font></p> <p><font face="Verdana">           FileReader in = new FileReader(inputFile);<br />            FileWriter out = new FileWriter(outputFile);<br />            int c;</font></p> <p><font face="Verdana">           while ((c = in.read()) != -1) //一直@环到0表示已经复制完毕Q所以这里用不{于?<br />               out.write(c);</font></p> <p><font face="Verdana">           in.close(); //关闭L件对?br />            out.close(); //关闭写文件对?br />        }<br /> </font></p> </div><img src ="http://www.tkk7.com/mlh123caoer/aggbug/168109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2007-12-16 21:04 <a href="http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>׃“五险一金”详?/title><link>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168090.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sun, 16 Dec 2007 09:54:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168090.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/168090.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/168090.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/168090.html</trackback:ping><description><![CDATA[<font style="font-size: 12px">关于五险一?什么是五险一?<br /> 五种保险包括Q养老保险、医疗保险、失业保险、工伤保险和生育保险; <br /> “一?#8221;指的是住房公U金?<br /> 其中养老保险、医疗保险和׃保险Q这三种险是?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C6%F3%D2%B5">企业</span>和个人共同缴U的保费Q工伤保险和生育保险完全是由<span id="c6y4aaw" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C6%F3%D2%B5">企业</span>承担的,个h不需要缴U뀂这里要注意的是“五险”是法定的Q?#8220;一?#8221;不是法定的?<br /> “五险一?#8221;的缴Ҏ例是什么? <br /> 目前<span id="k6u0ag2" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B1%B1%BE%A9">北京</span>地区Q?<br /> 养老保险缴Ҏ例:单位20Q?其中17Q划入统{基金,3Q划入个人帐?Q个?Q(全部划入个h帐户Q; <br /> ȝ保险~费比例Q单?0Q,个h2Q?3元; <br /> ׃保险~费比例Q单?.5Q,个h0.5Q; <br /> 工伤保险Ҏ单位被划分的行业范围来确定它的工伤费率; <br /> 生育保险~费比例Q单?.8Q,个h不交钱?<br /> 住房公积金缴Ҏ例: Ҏ企业的实际情况,选择住房公积金缴Ҏ例。但原则上最高缴贚w不得过北京市职工^?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B9%A4%D7%CA">工资</span>300Q的10Q?<br /> Q统{基金即Q在养老保险制度从国家—单位制逐渐向国家—社会制转变的过E中需要国家统{,以解决经发展不q及h口老龄化等问题?1)以企业缴费ؓd立社会统{基?img alt="" src="http://edu.hiall.com.cn/images/smilies/default/wink.gif" border="0" smilieid="4" />2)p工和企业~费Z建立个h帐户<img alt="" src="http://edu.hiall.com.cn/images/smilies/default/wink.gif" border="0" smilieid="4" />3)政府负担养老保险基金的<span id="q4g6kiq" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B9%DC%C0%ED">理</span>费用。这U社会统{和个h帐户相结合的半基金制有利于应付中国h口老龄化危?逐渐分散旧制度到新制度的转轨成本,逐步实现׃业养老保险制度到个h养老保险制度的转变。) <br /> 四险一金的~纳额度每个地区的规定都不同Q基数是以工资总额为基数。有的企业在发放时有基本工资Q有相关一些补_但有的企业在~纳Ӟ只是基本工资Q这是违反法律规定的。具体比例要向当地的力_部门d询?<br /> 关于养老保险、失业保险和ȝ保险的支取,是在法定允许的情况下才可以领取,是由C保登记部门来发放,比如“养老保险,要达到法定的q龄才可以,׃保险金的领取也是要具备条Ӟ比如你到户口所在地的街道办事处办理׃证明Q同时又办了<span id="kkk84mk" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C7%F3%D6%B0">求职</span>证,是指你׃以后q必L<span id="4aiiccs" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C7%F3%D6%B0">求职</span>的意愿,q样的条件才可以领取。如果失业之后你不想工作Q那么就不能l你发保险金。另外,养老金和失业金是不能同时n受的?<br /> •试用期内是否享有保险Q?<br /> 在试用期内也应该有n受保险,因ؓ试用期是合同期的一个组成部分,它不是隔d合同期之外的。所以在试用期内也应该上保险。另外,企业l员工上保险是一个法定的义务Q不取决于当事h的意思或自愿与否Q即使员工表CZ需要交保险也不行,而且商业保险不能替代C会保险。养老保险的享受待遇Q篏计缴U_老保?5q以上,q达到法定退休年龄,可以享受养老保险待遇: <br /> 1、按月领取按规定计发的基本养老金Q直x亡?<br /> 基本养老金的计公式如下: <br /> 基本养老金Q基养老金Q个̎户养老金Q过渡性养老金 <br /> Q退休前一q全市职工月q_工资×Q0Q(~费q限不满Q5q的按1Q%Q+个h账户本息?#247;Q2Q+指数化月q_~费工资×Q9Q7q底前缴费年?#215;Q.Q%?<br /> 2、死亡待遇。(Q)丧葬费(Q)一ơ性抚恤费Q3Q符合供L件的直系亲属生活困难补助费,按月发放Q直至供ȝpM属死亡?<br /> 注意Q养老保险应量q箋~纳Q根据有x件规定,凡企业或被保险h间断~纳基本养老保险费的(׃人员领取׃保险金期间或按有兌定不~费的h员除外)Q被保险人符合国家规定的养老条Ӟ计算基本养老金Ӟ其基性养老金的计基敎ͼ按篏计间断的~费旉逐年前推至相应年度上一q的本市职工q_工资计算Q篏计间断的~费旉Q按每满12个月Z个间断缴费年度计,不满12个月不计) <br /> 举例来说吧: <br /> 如果?020q退休,正常你的基础养老金?019q的C会q_工资×20Q,但是如果你在退休之前养老保险中断了30个月Q就是中断了2.5q_?q算Q你的基养老金是2017q社会^均工?#215;20Q?<br /> ȝ保险的n受待?<br /> 1、门、急诊ȝ费用 <br /> 在职职工q度内(1??12?1日)W合基本ȝ保险规定范围的医疗费累计过2000元以上部分; <br /> 2、结比例:  <br /> 合同期内zN人员2000元以上部分报销50%Q个?0%Q?<br /> 在一个年度内累计支付zN人员门、急诊报销最高数额ؓ2万元?<br /> 3?参保人员要妥善保好在定点医院就诊的门诊ȝ单据Q含大额以下部分的收据、处方底方等Q,作ؓȝ费用报销凭证Q?nbsp; <br /> 4?三种Ҏ病的门诊医Q参保h员患恶性肿瘤放治疗和化学ȝ、肾透析、肾UL后服抗排异药需在门诊就LQ由参保人就ȝ二、三U定点医院开?疄诊断证明"Qƈ填写《北京市ȝ保险Ҏ病种x审批表》,报区M中心审批备案。这三种Ҏ病的门诊医及取药仅限在批准p的定点医院,不能到定炚w售药店购买。发生的ȝ费符合门诊特D病规定范围的,参照住院q行l算Q?<br /> 5、住院医?<br /> ?住院押金Q符合住院条件的参保人员Q在收入住院Ӟ医院收取参保人员部分押金Q押金数额由医院Ҏ病情按比例确定。如被派遣h员单位和参保人员未能按时额~纳ȝ保险费的Q住院押金由zN人员个h全额垫付Q?<br /> ?l算周期Q参保h员住院治疗每90天ؓ一个结周期:不超q?0天的Q每ơ住院ؓ一个结周期; <br /> ?恶性肿瘤患者门诊放治疗和化学ȝ、肾透析、肾UL后服抗排异药、患有精病需常年住院的患者其发生的医疗费用每360天ؓ一个结周期; <br /> ?参保人员在定点的C֌卫生服务中心Q站Q的家庭病床ȝ发生的医疗费用,?0天ؓ一个结周期; <br /> ?参保人员出院或阶D|疗结束时Q需由派遣h员个人先与医院结清应由派遣h员个费和自付的费用,应由基本ȝ保险l筹基金和大额医疗互助资金支付的ȝ费用Q由医院向医保中心申报审核、结;  <br /> ?参保人员住院ȝQ符合基本医疗保险规定范围的ȝ费的l算Q设定基本医疗统{基金支付v付线和最高支付额Q?<br /> ?起付U第一ơ住院ؓ1300元,以后住院?50元,最高支付限额ؓ5万元Q超q最高支付上限的Q不含v付标准以下以及派遣h员个担部分)大额ȝ费用互助 <br /> 资金支付70%Q派遣h员个?0%。在一个年度内最高支?0万元。住院费用的l算标准Q在一个结周期内按医院等U和费用数额采取分段计算、篏加支付的办法?<br /> Q各Ҏ例有调整Ӟ按新的标准执行) <br /> 注意啊:非因公交通事故,M是免责的Q?<br /> ׃保险享受待遇 <br /> ׃保险q箋~纳一q以上,档案退回街道后。可以在街道享受׃保险待遇?<br /> 1Q失业保险金Q是指失业保险经办机构按规定支付l符合条件的׃人员的基本生z费用,它是最主要的失业保险待遇。失业保险待遇根据北京市相关文g执行Q?<br /> 2Q?领取׃保险金期间的ȝ补助金:是指支付l失业h员领取失业保险金期间发生的医疗费用的补助。根据北京市有关政策法规执行Q?<br /> 3Q?领取׃保险金期间死亡的׃人员的葬补助金和其供养的配偶、直pM属的抚恤金按有关规定执行?<br /> 工伤保险享受待遇 <br /> 在合同期内不q发生意外,需向企业烦取情况说明,q加盖企业公章,快Q最好在三个工作日内Q申请工伤认定ƈ需提供下列材料Q?<br /> 1、初ơ治疗诊断书或住院病? <br /> 2?职业病诊断证明(原g、复Cg各一份); <br /> 3?交通事故需提供交通大队的事故裁决书或交通部门的交通事故证明; <br /> 4?w䆾证复CgQ?<br /> 5?有效期内的劳动合同原?<br /> 生育保险享受待遇 <br /> 可以报销与生育有兌?nbsp; <br /> 报销范围包括Q生育|贴、生育医疗费用、计划生育手术医疗费用、国家和本市规定的其他与生育有关的费用?nbsp; <br /> 生育z脓按照奌工本人生育当月的~费基数除以30再乘以假天数计。生育|贴ؓ奌工假期间的工资Q生育|贴低于本人工资标准的Q差额部分由企业补?nbsp; <br /> 生育ȝ费用包括奌工因怀孕、生育发生的ȝ查费、接生费、手术费、住院费和药品费。计划生育手术医疗费用包括职工因计划生育发生的医疗费用?<br /> 现在要求Q医保缴?0q_养老交?5q才有资格领养老金和n受退休后的医保报销?<br /> <br /> 然后q有一点在|上查不出来的东西: <br /> 首先 如果去非户口所在地工作 比如原户口在北京 而去<span id="qu4wgw2" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%EE%DB%DA">深圳</span>工作 无论户口是否转过?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%EE%DB%DA">深圳</span> 万一来不在<span id="cmewyio" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%EE%DB%DA">深圳</span>工作?那么?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%EE%DB%DA">深圳</span>交的五险一?能否转出?很成问题!因ؓ现在全国五险一金这个东西没有联|?只有北京市内的联|了 是?如果你本来在北京的一家单位工?几年后蟩到另外的一个北京单位工?q样五险一金是没有问题?但是从其他省市蟩的话 转的时候会很麻?能不能{q成问题 <br /> 关于前面提到的五险中的三险是企业和个人共同交U?意思是q样 比如对于养老保?比如你的工资?000 那么你个交纳8Q?单位l交U?5Q(以上数据都是假设Q, q些钱都存到你的一个帐户里 {到你满了可以享受养老保险的时?才可以支取(具体条g见前面) 然后考虑C面一D写的内?万一要是转不了的?那么你的钱就白交?q取不出?nbsp; <br /> 所有企业和个h共同交纳的部分都是这L 住房公积金也是这?比如按照工资乘以比例 假如你每个月要交500 单位l你?000 如果你蟩槽了 q些钱又不能?那么你每个月500q交了 也不能取出来——因Z不符合n受住房公U金的条Ӟ只有C房子的时候才能取出来?<br /> 那么有h可能会问?那我如果不打在刚开始工作的城市发展一辈子 Z防止来转不出来五险一?我能不能不交UI{案是不?臛_三险那部分是国家强制必须上的 所以比较无奈。另外关于五险一金上~的基数Q就是拿你哪部分工资乘以那个癑ֈ比的问题Q是q样的,首先来看一下工资的构成Q基本工资+各项利+奖金Q很多企业都是只按照基本工资上五险一金的Q因为如果按照三部分来算的话Q你个h上的多一些,但是单位l你上的更多Q企业和个h共同交纳的五险一?都是个h交小?单位交大_ 所以很多企业ؓ了给自己省钱 基数都是能少则少Q另外对于福利部?有很大猫?q个大家来{֐同的时候一定要问! <br /> 前面说过Q住房公U金也是企业和个人共同交U的Q但是企业给你交的那部分Q早晚也是你的(只要你将来买房的?是可以一ơ性取出来的)。比如说Q你每个月按照比例交500Q单位可能给你脓1000Q虽然在你买房子之前Q这1500是取不出来的Q但理论上说?000也是l你的,那么有的企业׃把那1000做l你的福利,其实不应该算?Q!Q! 因ؓ?000是虚的,是你在不买房子的时候,取不出来的Q所以大家在{时候,要问清楚q福利里面有没有包括住房公积金,心啊小心!</font><img src ="http://www.tkk7.com/mlh123caoer/aggbug/168090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2007-12-16 17:54 <a href="http://www.tkk7.com/mlh123caoer/archive/2007/12/16/168090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2008q?大工IT应届士待遇情况http://www.tkk7.com/mlh123caoer/archive/2007/12/08/166201.html草儿草儿Sat, 08 Dec 2007 00:48:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2007/12/08/166201.htmlhttp://www.tkk7.com/mlh123caoer/comments/166201.htmlhttp://www.tkk7.com/mlh123caoer/archive/2007/12/08/166201.html#Feedback7http://www.tkk7.com/mlh123caoer/comments/commentRss/166201.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/166201.html  
上很看到这L帖子和说明,反正自己也不扑ַ作了Q全部说一遍,万一有h看到我这 
 
帖子了,也算对他有所交待哈哈Q待遇在我这里全部可以看刎ͼ感觉|上的帖子抄来抄?nbsp;
 
Q鄙视之Q所以打自己写个帖子,除去那些谣言。常常听Ch说这个公司待遇怎么差, 
 
但事实上却是很好。说q个公司待遇怎么好,待遇却是很差。所以决定自׃自己的经?nbsp;
 
和周围同学的待遇情况Q将所知道的公司的待遇Q公司招聘h员的态度Q公司的好坏Q招 
 
聘诚信度全部列出来,当然是指2008q的校园招聘?nbsp;
 
1。浙大网新待遇: 9000,8000,7000*13Q分为几个别,主要看你面试和笔试成l,然后 
 
q有两个月的动奖金Q住房公U金也有。保险也有,和微软一起工作,工作后应该可?nbsp;
 
跛_微YQ感觉笔试组l的很؜乱我当时收到电话ȝ试结果竟然没有试卷去抢了份题{?nbsp;
 
了,q到?0多分钟答题?nbsp;
 
2。美国道富:很轻?待遇7500。几个月知道Q同学有拿到的也有去的,不过感觉q没?nbsp;
 
惌中的那么多?nbsp;
 
3。神州数码:5000*16个月Q其他不知道不过不少人把它拒了或者毁U不知道Z么,?nbsp;
 
W试和面试?nbsp;
 
4。珠L力:6500*14个月q有q终奖感觉还可以Q招聘从l织上来说不错?nbsp;
 
5。深圳睿初:10K*13Q听说是被AMSLQ阿斯麦Q给收购了,面试3ơ全是技术和法Q最 
 
后还有一轮美国总部的面试。感觉面试管态度很好Q而且?个星期后l通知q通知了, 
 
ȝ来说诚信度还可以?nbsp;
 
6。IBM(CDSL)Q?500*13+800*12Q同学有五个去那边了Q四个做g的,一个做软g的?nbsp;
 
 
 
7。趋势科技QOFFER上说10W多一点,有一个同学去了,也有一个同学把它给拒了Q面试听 
 
说h也很好?nbsp;
 
8。大唐:8-10wQ承诺是l?6个月工资Q同学有拿到OFFER的,也有毁约的?nbsp;
 
9。百度:今年l?6WQ商务搜索部门和市场部门差不多都q个仗同学拿到OFFER了,因ؓ 
 
要实习老板不让赎ͼ把它拒了Q来得比较早Q笔试场面很宏大。牛Zn多。不q感觉时?nbsp;
 
太久了,q了一个多月才l回复。要么据信要么给OFFER。要实习一个月?nbsp;
 
10。intel今年不知道ؓ什么很,才给5000Q我同学直接拒掉了?nbsp;
 
11。realtekQ??K*13Q住房公U金?2%Q其他五险什么都有,q有很多其他待遇Q?nbsp;
 
且毁U也不是很难Q当焉非你很猛Q才会毁U。比如说拿到nvidia的OFFER?nbsp;
 
12。台达能源(上vQ研发中心:6K*17Q当然这里面包括了奖金,真正拿到的应该没那么 
 
多。不q公司包吃,到是可以省很多钱。相当于7K*17吧,反正师兄在里面是E后6?KQ?nbsp;
 
E前应该?K多吧。招聘h员态度也相当好?nbsp;
 
13。杭州ECIQ来学校招聘时你写多就l多,当时煞笔的很Q感觉写?.5Kq挺不好?nbsp;
 
思,l果写那么多q接给了,q加2k的伙食和住房补脓。所以如果有招聘要写期望待遇 
 
的就多写点,招聘人员态度很好?nbsp;
 
14。中_很少?.5KQ在实习期才4.5KQ做外销售可能多一点,而且感觉招聘的h?nbsp;
 
拽似的,明明说你可以了,l果却让你久{或者当候补Q当时却不说清楚。鄙视之Q毁U?nbsp;
 
也很ȝ?nbsp;
 
15。华为:工资5500+1000Q面试整体感觉不太好Q就是走个Ş式,l你考虑得时间很, 
 
而且如果你当时没有协议就不让你签了,丝毫不给Z让我毁约。毁U很ȝ 
 
16。网易待遇:同学拿到OFFER了,面试官问Q你期望待遇多少Q他咬咬牙说Q?KQ结果直 
 
接说没问题。可见待遇在q个之上Q年?1W左右Q而且l你20天的考虑旉QM来说?nbsp;
 
错?nbsp;
 
17。Thomson,不知道给多少QTencent据说是硕?500Q一q能?0w多一点,不过腾讯?nbsp;
 
Uv来很是麻烦,到明q?月䆾才给你寄Q所以签之前考虑清楚Q因样好多同学都拒它 
 
?nbsp;
 
18。深圛_龙通信Q招聘h员态度很好Q承诺是q薪102800.不过士一面就lOFFERQ所 
 
以感觉是相当的假Q网上说是经常加班,不过没有L以不作评论?nbsp;
 
19。中国^安保险:待遇5.8K+其他一些补助和补脓每月。年?W左右Q硕士)。不q要?nbsp;
 
Java+linux+oracle.对于搞嵌入式的来说不是很适合Q不q硕士都可以学习的,在前两个 
 
月去q_大学培训Q所以违U费用很高,毕竟人家培训q你?nbsp;
 
20。威盛:待遇估计7500左右?nbsp;
 
21。深圌瑞:宣传上说?0W以上Q待遇还可以在电子生物医疗方面排名前四?005q还 
 
是第一位,前两个星期拉d上培训?nbsp;
 
22。富士康Q公叔R议很多,印象不是很好Q这边基本上没h去考虑Q就不做评论反正?nbsp;
 
有去它 
 
23。步步高Q试用期?900Q{正后?200q有一些年l奖?nbsp;
 
24。华:6500*12+q底奖金和项目奖金,不过没有人签Q应该名C好?nbsp;
 
25。阿卡牚w岛朗讯:7500*13.面试?面,p口语好,其他的不是太差就lOFFERQ?nbsp;
 
?-6个月会去国搞技术培训,臛_面试官这栯我说的,具体的能不能做到不知道了?nbsp;
 
招聘人员态度很好Q感觉很niceQ其实我很想ȝQ毕竟以后蟩到别的外企也L炏V但 
 
是老婆不允许!Q!Q气L?nbsp;
 
26。超图(5000或?000看你做核心开发还是其他开发)Q久其YӞ4000的基本工资) 
 
Q中体彩Q?500基本工资+700补助Q(北京Q?nbsp;
 
27。中?4所Q最鄙视Q妈的当时告诉我Q原话):"我们拿的W华为多Q它们只是刚开?nbsp;
 
那么多。我们越来越?Q?nbsp;
 
28。云南电力:3000块?nbsp;
 
29。深x商融博(10W左右Q?nbsp;
 
30。上simQ晨讯科技Q工?KQ加上其他的补脓q薪估计??w?W之间吧,M?nbsp;
 
讲待遇很差,师兄有在里面的?nbsp;
 
31。上先锋:士工资l?KQ具体其他不太清楚了?nbsp;
 
32。应用材?AM):工资很一般不是很多,5K*16Q不清楚Q呵늜q两天给不给OFFER再说 
 
。)不过听说出差费用很高Q可以拿?w/月了Q而且面试旉试官说他们基本上50%的时 
 
间在国外Q可见出差的比例很大.软g开发面试是几个老外?nbsp;
 
33。飞索半gQSpansionQ面试态度很好Q面试几ơ都送礼物,而且最后一ơ请我们?nbsp;
 
了个饭哈哈。那个老dnice,以前在微软做ȝ。技术h也很nice. 
 
据说待遇Q去q去的师兄)Q?K*13Q其他的具体保险公积金等不知道怎么的。不q飞?nbsp;
 
是亚z最佳雇M是盖的,q是很h道的Q我也体验过了呵c?nbsp;
 
34。中U院光电研究院:工资5KQ解军_京户口?nbsp;
 
35。中U大z:听说是工?KQ而且解决北京户口Q晕Q都没听q,不过同学有那刎ͼ?nbsp;
 
知道M没有。北京灵图,工资6k左右Q不q听说一直在裁员?nbsp;
 
36?nbsp;
 
M来说Q对于计机的硕士来Ԍ公司居中的一般来讲给的钱?W-17W之间Q当然看?nbsp;
 
力了。不q感觉还是搞金融的爽Q工资:60Wq薪Q至,我复旦同学就是摩栚w行给 
 
的就是月?W?nbsp;
 
所以感觉h跟h其实没必要比Q什么做好自己就行。先写到q儿了,有时间要是想h?nbsp;
 
再l补充吧?nbsp;


草儿 2007-12-08 08:48 发表评论
]]>
惌5q后的你http://www.tkk7.com/mlh123caoer/archive/2007/10/29/156587.html草儿草儿Mon, 29 Oct 2007 01:51:00 GMThttp://www.tkk7.com/mlh123caoer/archive/2007/10/29/156587.htmlhttp://www.tkk7.com/mlh123caoer/comments/156587.htmlhttp://www.tkk7.com/mlh123caoer/archive/2007/10/29/156587.html#Feedback4http://www.tkk7.com/mlh123caoer/comments/commentRss/156587.htmlhttp://www.tkk7.com/mlh123caoer/services/trackbacks/156587.html分n一个故?/span>   ______ 5q后的你   ( 很多人看了很受启q?/span>!!!!!!)

 
今天在一个朋友的MSN Space里看C个故事,׃原文已是不具名,谁h所写,是否真实已经无从考究Q不q个得真的不错,很想分n一下?/span>

                 
5q后的你

 
让我与你共同分n一D小故事Q或许在q个阶段Q可以很实际地让我们走出目前的困?/span>

 
一九七六年的冬天,当时我十九岁Q在休斯太Iȝv的大I梭实验室里工作Q同时也在ȝv旁边的休斯顿大学M电脑。纵然忙于学校、睡眠与工作之间Q这几乎占据了我一天二十四时的全部时_但只要有多余的一分钟Q我L会把所有的_֊攑֜我的音乐创作上?/span>

 
我知道写歌词不是我的专长Q所以在q段日子里,我处处寻找一位善写歌、词的搭档,与我一起合作创作。我认识了一位朋友,她的名字叫凡內芮Q?/span>Valerie JohnsonQ。自从二十多q前d德州后,再也没听过她的消息Q但是她却在我事业的hӞl了我最大的鼓励。仅十九岁的凡內芮在德州的诗词比赛中Q不知得q多奖牌。她的写作L让我׃释手Q当时我们的合写了许多很好的作品,一直到今天Q我仍然认ؓq些作品充满了特色与创意?/span>

 
一个星期六的周末,凡內芮又热情地邀h臛_家的牧场烤肉。她的家族是德州有名的石油大亨,拥有庞大的牧场。她的家庭虽然极为富有,但她的穿着、所开的R、与她谦诚待人的态度Q更让我加倍地打从心底佩服奏V凡內芮知道我对音乐的执着。然而,面对那遥q的音乐界及整个国陌生的唱片市场,我们一点管道都没有。此Ӟ我们两个人坐在d州的乡下Q我们哪知道下一步该如何走。突焉Q她冒出了一句话Q?/span>

  " Visualize
Q?/span>What you are doing in 5 yearsQ?/span>H想像你五年后在做什么?H?/span>"

 
我愣了一下?/span>

 
她{qn来,手指着我说Q?/span>"嘿!告诉我,你心目中最希望五年后的你在做什么,你那个时候的生活是一个什么样子?"我还来不及回{,她又抢着_"別急,你先仔细xQ完全想好,定后再说出来?/span>"我沉思了几分钟,开始告诉她Q?/span>"W一Q五q后Q我希望能有一张唱片在市场上,而这张唱片很受欢q,可以得到许多人的肯定。第二,我住在一个有很多很多音乐的地方,能天天与一些世界一的乐师一起工作?/span>"

 
凡內芮说Q?/span>"你确定了吗?"

 
我慢慢稳E_回答Q而且拉了一个很长的YesssssssQ?/span>

 
凡內芮接着_"好,既然你确定了Q我们就把这个目标倒算回来。如果第五年Q你有一张唱片在市场上,那么你的W四q一定是要跟一家唱片公司签上合U?/span>"

  "
那么你的W三q一定是要有一个完整的作品Q可以拿l很多很多的q?/span>司听Q对不对Q?/span>"

  "
那么你的W二q_一定要有很的作品开始录音了?/span>"

  "
那么你的W一q_׃定要把你所有要准备录音的作品全部编Ԍ排练׃准备好?/span>"

  "
那么你的W六个月Q就是要把那些没有完成的作品修饰好,然后让你自己可以逐一{选?/span>"

  "
那么你的W一个月是要把目前q几首曲子完工?/span>"

  "
那么你的W一个礼拜就是要先列Z整个清单Q排出哪些曲子需要修改,哪些需要完工?/span>"

  "
好了Q我们现在不已l知道你下个星期一要做什么了吗?"凡內芮笑W地说?/span>

  "
喔,对了。你q说你五q后Q要生活在一个有很多音乐的地方,然后与许多一的乐师一起忙着工作Q对吗?"Ҏ忙地补充说?/span>"如果Q你的第五年已经在与q些Z起工作,那么你的W四q照道理应该有你自己的一个工作室或录韛_。那么你的第三年Q可能是先跟q个圈子里的人在一起工作。那么你的第二年Q应该不是住在d州,而是已经住在U约或是z杉Z?/span>"

 
ơ年(一九七七年)Q我辞掉了o许多人L慕的太空ȝv的工作,d了休斯顿Q搬到洛杉机?/span>

 
说也奇怪:不敢说是恰好五年Q但大约可说是第六年。一九八三年Q我的唱片在亚洲开始销hQ我一天二十四时几乎全都忙着与一些顶的音乐高手Q日出日落地一起工作?/span>

 
每当我在最困惑的时候,我会静下来问我自己:五年后你"最希望"看到你自己在做什么?

 
如果Q你自己都不知道q个{案的话Q你又如何要求別人或上帝Z做选择或开路呢Q?/span>別忘了!在生命中Q上帝已l把所?/span>"选择"的权力交在我们的手上了?/span>

 
如果Q你对你的生命经常在?/span>"Z么会q样Q?/span>""Z么会那样Q?/span>"的时候,你不妨试着问一下自己,你是否很"清清楚楚"地知道你自己要的是什么?

 
如果q你自己要的是什么都不知道的话,那么׃的主又如何帮你安排呢Q不是吗Q?/span>

 
而在你旁边的人,再怎么热心Cؓ你敲锣打鼓,׃的主也顶多给一些慈悲的安慰。因你自己都q没有清楚地告诉他,你要的是什么?那么你又岂能无辜地怪上帝没有ؓ你开路呢Q不是吗Q?/span>

 
有这样一调查似乎也说明了什么:

 
有一q_一意气风发的天之骄子从美国哈佛大学毕业了Q他们即开始穿各自的玉米地。他们的智力、学历、环境条仉相差无几。在临出校门前,哈佛对他们进行了一ơ关于h生目标的调查。结果是q样的:

  27
Q的人,没有目标Q?/span>60Q的人,目标模糊Q?/span>

  10
Q的人,有清C比较短期的目标;

  3
Q的人,有清晰而长q的目标?/span>

 
以后?/span>25q_他们I越玉米地?/span>25q后Q哈佛再ơ对q群学生q行了跟t调查。结果又是这LQ?/span>

  3
Q的人,25q间他们朝着一个方向不懈努力,几乎都成为社会各界的成功人士Q其中不乏行业领袖、社会精英;

  10
Q的人,他们的短期目标不断地实现Q成为各个领域中的专业h士,大都生活在社会的中上层;

  60
Q的人,他们安稳地生zM工作Q但都没有什么特别成l,几乎都生zdC会的中下层Q?/span>

 
剩下27Q的人,他们的生zL有目标,q得很不如意Qƈ且常常在抱怨他人、抱怨社会、抱怨这?/span>不肯l他们机?/span>的世界?/span>

 
其实Q他们之间的差别仅仅在于Q?/span>25q前Q他们中的一些h知道Z么要I越玉米圎ͼ而另一些h则不清楚或不很清楚?/span>

 
故事到此完结Q具体到底是真是假,我也不知道,因ؓ我看到的时候就是不具名的,不知道是何h所写。不q,在这里,我们的确看到了h生职业规划的重要性,在将q个规划l细拆分Q我们马上就会发玎ͼ其实我们Ҏ没有旉停下来发呆?/span>

如果我五q后希望有我的Y件公司,在一个专有领域ؓ客户提供满意的方案,那么我的5q如何设计呢?希望各位牛hl些Q?/p>

草儿 2007-10-29 09:51 发表评论
]]>
Java 5|6 q发包介l?/title><link>http://www.tkk7.com/mlh123caoer/archive/2007/10/24/155474.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 24 Oct 2007 02:14:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2007/10/24/155474.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/155474.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2007/10/24/155474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/155474.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/155474.html</trackback:ping><description><![CDATA[     摘要: java.util.concurrent 包含许多U程安全、测试良好、高性能的ƈ发构建块。不客气地说Q创?java.util.concurrent 的目的就是要实现 Collection 框架Ҏ据结构所执行的ƈ发操作。通过提供一l可靠的、高性能q发构徏块,开发h员可以提高ƈ发类的线E安全、可伸羃性、性能、可L和可靠性?如果一些类名看h怼Q可能是因ؓ java.util.concurr...  <a href='http://www.tkk7.com/mlh123caoer/archive/2007/10/24/155474.html'>阅读全文</a><img src ="http://www.tkk7.com/mlh123caoer/aggbug/155474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2007-10-24 10:14 <a href="http://www.tkk7.com/mlh123caoer/archive/2007/10/24/155474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> JBossTools 和Red Hat Developer Studio 新的beta版发?/title><link>http://www.tkk7.com/mlh123caoer/archive/2007/10/09/151253.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Tue, 09 Oct 2007 01:46:00 GMT</pubDate><guid>http://www.tkk7.com/mlh123caoer/archive/2007/10/09/151253.html</guid><wfw:comment>http://www.tkk7.com/mlh123caoer/comments/151253.html</wfw:comment><comments>http://www.tkk7.com/mlh123caoer/archive/2007/10/09/151253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mlh123caoer/comments/commentRss/151253.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mlh123caoer/services/trackbacks/151253.html</trackback:ping><description><![CDATA[<p><a class="regularLink" target="">JBoss Tools</a> ?a class="regularLink" target="">Red Hat Developer Studio</a>新的beta版今天发布?</p> <p>q个对于Seam 1.2 用户来说是个好消息,因ؓ我们现在完全支持创徏Eclipse WTP兼容包括Seam 1.2.1的Seamlg热部|项目。增加完全增量异步部|到JBoss AS server中,你能得到既快又好的部|环境?</p> <p>该发布版也支持Hibernate Tools用户的一些新功能和其他的bug修复。你能阅?a class="regularLink" target="">What's New and Noteworthy</a> q篇文章了解它们?/p> <p>管现在q不支持Seam 2的项目创建向|但是代码完成和Seam视图能和Seam 2相容。仅需要右击项目增?q>Seam支持。大家赶紧试一下啊QSeam可是来的主啊?/q></p><img src ="http://www.tkk7.com/mlh123caoer/aggbug/151253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mlh123caoer/" target="_blank">草儿</a> 2007-10-09 09:46 <a href="http://www.tkk7.com/mlh123caoer/archive/2007/10/09/151253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://3t77.com" target="_blank">һȫƵ</a>| <a href="http://91haikala.com" target="_blank">޾þþþþ77777 ޾ƷAAƬѽ </a>| <a href="http://jiajuco.com" target="_blank">þþƷ˽ӰԺѿ</a>| <a href="http://www-44334.com" target="_blank">޹˳߹ۿ</a>| <a href="http://dxj588.com" target="_blank">˾ƷԻ79ren</a>| <a href="http://longcais.com" target="_blank">avһ</a>| <a href="http://zcrencai.com" target="_blank">һƵ</a>| <a href="http://mironpress.com" target="_blank">tomӰԺ޹һ</a>| <a href="http://www676617.com" target="_blank">޾Ʒþþþþ</a>| <a href="http://by11gun.com" target="_blank">ĻӰԺѹۿ</a>| <a href="http://831055.com" target="_blank">պAAƬѹۿ</a>| <a href="http://sdbfgcjx.com" target="_blank">Ƶ</a>| <a href="http://kanboy.com" target="_blank">Ʒާѡ벥Ų</a>| <a href="http://gysysz.com" target="_blank">Ʒ˿ྫƷþ</a>| <a href="http://ynkaishan.com" target="_blank">Ļþþһ</a>| <a href="http://szyxfhm.com" target="_blank">һƵ</a>| <a href="http://xmm5pkt.com" target="_blank">޾ƷŮһ </a>| <a href="http://788qj.com" target="_blank">޾Ʒѿ</a>| <a href="http://456jjj.com" target="_blank">޾ƷҹĻ </a>| <a href="http://sh-shule.com" target="_blank">ƬվAëƬ</a>| <a href="http://22222xxx.com" target="_blank">һԿĿ</a>| <a href="http://hnmeiankj.com" target="_blank">ղϵ</a>| <a href="http://nyminer.com" target="_blank">Ұһ</a>| <a href="http://727744.com" target="_blank">һaëƬƵ</a>| <a href="http://svvnn.com" target="_blank">1024ƷƵר</a>| <a href="http://55118885.com" target="_blank">ºձѹۿ </a>| <a href="http://qmoread.com" target="_blank">һ</a>| <a href="http://1000hu.com" target="_blank">þóѵӰ</a>| <a href="http://1777000.com" target="_blank">wwwƵ</a>| <a href="http://998wc.com" target="_blank">ۺɫ¶</a>| <a href="http://yimintech.com" target="_blank">޹Ů޹</a>| <a href="http://www-006688.com" target="_blank">㽶Ƶһ</a>| <a href="http://www8x5188x.com" target="_blank">þþƷŮav鶹</a>| <a href="http://sk7758.com" target="_blank">þerƷѹۿ8</a>| <a href="http://zzhjnmzp.com" target="_blank">һѵӰ</a>| <a href="http://gbn21.com" target="_blank">պƷƵѹۿ </a>| <a href="http://116qc.com" target="_blank">˻18Ƶ</a>| <a href="http://90hong.com" target="_blank">ëƬվ</a>| <a href="http://tskes.com" target="_blank">˾þô߽</a>| <a href="http://chenglide.com" target="_blank">޹ɫƵ</a>| <a href="http://amjt9.com" target="_blank">һ234 </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>