﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-卓凡</title><link>http://www.blogjava.net/zhuofan/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:05:04 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:05:04 GMT</pubDate><ttl>60</ttl><item><title>tar命令</title><link>http://www.blogjava.net/zhuofan/archive/2010/05/14/320963.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Fri, 14 May 2010 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/archive/2010/05/14/320963.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/320963.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/archive/2010/05/14/320963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/320963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/320963.html</trackback:ping><description><![CDATA[tar可以为文件和目录创建档案。利用tar，用户可以为某一特定文件创建档案（备份文件），也可以在档案中改变文件，或者向档案中加入新的文件。
tar最初被用来在磁带上创建档案，现在，用户可以在任何设备上创建档案，如软盘。利用tar命令，可以把一大堆的文件和目录全部打包成一个文件，这对于
备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。<br />
语法：tar [主选项+辅选项]
文件或者目录<br />
使用该命令时，主选项是必须要有的，它告诉tar要做什么事情，辅选项是辅助使用的，可以选用。<br />
主选项：<br />
c
创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。<br />
r
把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘记备份了，这时可以使用该选项，将忘记的目录或文件追
加到备份文件中。<br />
t 列出档案文件的内容，查看已经备份了哪些文件。<br />
u
更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到备份文件的最后。<br />
x 从档案文件中释放文件。<br />
辅
助选项：<br />
b 该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为20（20*512 bytes）。<br />
f
使用档案文件或设备，这个选项通常是必选的。<br />
k 保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。<br />
m
在还原文件时，把所有文件的修改时间设定为现在。<br />
M 创建多卷的档案文件，以便在几个磁盘中存放。<br />
v
详细报告tar处理的文件信息。如无此选项，tar不报告文件信息。<br />
w 每一步都要求确认。<br />
z
用gzip来压缩/解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解压缩。
<p><br />
Linux下的压缩文件剖析</p>
<p>对于刚刚接触Linux的人来说，一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说，单单就压缩文件为例，我们知道在Windows下
最常见的压缩文件就只有两种，一是,zip，另一个是.rap。可是Linux就不同了，它有.gz、.tar.gz、tgz、bz2、.Z、.tar等
众多的压缩文件名，此外windows下的.zip和.rar也可以在Linux下使用，不过在Linux使用.zip和.rar的人就太少了。本文就来
对这些常见的压缩文件进行一番小结，希望你下次遇到这些文件时不至于被搞晕:)</p>
<p>　　在具体总结各类压缩文件之前呢，首先要
弄清两个概念：打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件，压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这
两个概念呢？其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩，这样当你想要压缩一大堆文件时，你就得先借助另它的工具将这一大堆文件先打
成一个包，然后再就原来的压缩程序进行压缩。<br />
Linux下最常用的打包程序就是tar了，使用tar程序打出来的包我们常称为tar
包，tar包文件的命令通常都是以.tar结尾的。生成tar包后，就可以用其它的程序来进行压缩了，所以首先就来讲讲tar命令的基本用法：<br />
tar命令的选项有很多(用man tar可以查看到)，但常用的就那么几个选项，下面来举例说明一下：<br />
# tar -cf
all.tar *.jpg<br />
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包，-f指定包的文件名。<br />
# tar -rf all.tar *.gif<br />
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意
思。<br />
&nbsp;&nbsp;&nbsp; # tar -uf all.tar logo.gif<br />
这条命令是更新原来tar包all.tar中logo.gif文
件，-u是表示更新文件的意思。 </p>
<p>　　# tar -tf all.tar<br />
这条命令是列出all.tar包中所有文件，-t是列出文件的意思<br />
# tar
-xf all.tar<br />
这条命令是解出all.tar包中所有文件，-t是解开的意思<br />
以上就是tar的最基本的用法。为了方便用
户在打包解包的同时可以压缩或解压文件，tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序，比如调用gzip、
bzip2等。<br />
1) tar调用gzip<br />
gzip是GNU组织开发的一个压缩程序，.gz结尾的文件就是gzip压缩的结果。与
gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下：<br />
# tar -czf
all.tar.gz *.jpg<br />
这条命令是将所有.jpg的文件打成一个tar包，并且将其用gzip压缩，生成一个gzip压缩过的包，
包名为all.tar.gz<br />
# tar -xzf all.tar.gz<br />
这条命令是将上面产生的包解开。<br />
2)
tar调用bzip2<br />
bzip2是一个压缩能力更强的压缩程序，.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是
bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下：<br />
# tar -cjf all.tar.bz2 *.jpg<br />
这条命令是将所有.jpg的文件打成一个tar包，并且将其用bzip2压缩，生成一个bzip2压缩过的包，包名为all.tar.bz2<br />
# tar -xjf all.tar.bz2<br />
这条命令是将上面产生的包解开。<br />
&nbsp;&nbsp;&nbsp; 3)tar调用compress </p>
<p>　　compress也是一个压缩程序，但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结
果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下：<br />
# tar
-cZf all.tar.Z *.jpg<br />
这条命令是将所有.jpg的文件打成一个tar包，并且将其用compress压缩，生成一个
uncompress压缩过的包，包名为all.tar.Z<br />
# tar -xZf all.tar.Z<br />
这条命令是将上面产生的包
解开<br />
有了上面的知识，你应该可以解开多种压缩文件了，下面对于tar系列的压缩文件作一个小结：<br />
1)对于.tar结尾的文件<br />
tar -xf all.tar<br />
2)对于.gz结尾的文件<br />
gzip -d all.gz<br />
gunzip
all.gz<br />
3)对于.tgz或.tar.gz结尾的文件<br />
tar -xzf all.tar.gz<br />
tar -xzf
all.tgz<br />
4)对于.bz2结尾的文件<br />
bzip2 -d all.bz2<br />
bunzip2 all.bz2<br />
5)对于tar.bz2结尾的文件<br />
tar -xjf all.tar.bz2<br />
6)对于.Z结尾的文件<br />
uncompress all.Z<br />
7)对于.tar.Z结尾的文件<br />
tar -xZf all.tar.z<br />
另外对于
Window下的常见压缩文件.zip和.rar，Linux也有相应的方法来解压它们：<br />
1)对于.zip<br />
linux下提供了
zip和unzip程序，zip是压缩程序，unzip是解压程序。它们的参数选项很多，这里只做简单介绍，依旧举例说明一下其用法：<br />
#
zip all.zip *.jpg<br />
这条命令是将所有.jpg的文件压缩成一个zip包</p>
<p>&nbsp;&nbsp;&nbsp; # unzip all.zip<br />
这条命令是将all.zip中的所有文件解压出来 </p>
<p>　　2)对于.rar<br />
要在linux下处理.rar文件，需要安装RAR for Linux，可以从网上下载，但要记住，RAR
for Linux<br />
不是免费的；然后安装：<br />
# tar -xzpvf rarlinux-3.2.0.tar.gz<br />
#
cd rar<br />
# make<br />
这样就安装好了，安装后就有了rar和unrar这两个程序，rar是压缩程序，unrar是解压程
序。它们的参数选项很多，这里只做简单介绍，依旧举例说明一下其用法：<br />
# rar a all *.jpg<br />
这条命令是将所
有.jpg的文件压缩成一个rar包，名为all.rar，该程序会将.rar 扩展名将自动附加到包名后。<br />
# unrar e
all.rar<br />
这条命令是将all.rar中的所有文件解压出来<br />
到此为至，我们已经介绍过linux下的tar、gzip、
gunzip、bzip2、bunzip2、compress、uncompress、zip、unzip、rar、unrar等程式，你应该已经能够使
用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行解压
了，以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。<br />
本文介绍了linux下
的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、unzip、rar、
unrar等程式，以及如何使用它们
对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行操作。</p>
<img src ="http://www.blogjava.net/zhuofan/aggbug/320963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-05-14 11:16 <a href="http://www.blogjava.net/zhuofan/archive/2010/05/14/320963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中使用Runtime和 Process类运行外部程序</title><link>http://www.blogjava.net/zhuofan/archive/2010/05/13/320922.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Thu, 13 May 2010 11:21:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/archive/2010/05/13/320922.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/320922.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/archive/2010/05/13/320922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/320922.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/320922.html</trackback:ping><description><![CDATA[<p><font color="#000080" size="2">使用Runtime.getRuntime().exec()方法可以在java
程序里运行外部程序。<br />
&nbsp; 1. exec(String command)<br />
&nbsp; 2. exec(String command,
String envp[], File dir)<br />
&nbsp; 3. exec(String cmd, String envp[])<br />
&nbsp; 4.
exec(String cmdarray[])<br />
&nbsp; 5. exec(String cmdarray[], String envp[])<br />
&nbsp;
6. exec(String cmdarray[], String envp[], File dir)<br />
</font><font color="#000080" size="2">一般的应用程序可以直接使用第一版本，当有环境变量传递的时候使用后面的版本。其中2和6版本可以传
递一个目录，标识当前目录，因为有些程序是使用相对目录的，所以就要使用这个版本。<br />
</font><font color="#000080" size="2"><br />
cmd.exe /c start &lt;FileName&gt;<br />
使用DOS命令(比如dir)时也要使用到调
用。如果想与调用的程序进行交互，那么就要使用该方法的返回对象Process了，通过Process的
getInputStream()，getOutputStream()和getErrorStream()方法可以得到输入输出流，然后通过
InputStream可以得到程序对控制台的输出信息，通过OutputStream可以给程序输入指令,这样就达到了程序的交换功能。</font></p>
<p><font color="#000080" size="2">用Java编写应用时，有时需要在程序中调用另一个现成的可执行程序或系统命令，
这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式：</font></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><font color="#000080" size="2"><font face="Courier New"><span style="color: rgb(0, 128, 128);">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif" alt="" /><br />
</span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;Process&nbsp;process&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;Runtime.getRuntime().exec(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.""p.exe</span><span style="color: rgb(0, 0, 0);">"</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">);<br />
</span><span style="color: rgb(0, 128, 128);">3</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;process.waitfor();<br />
</span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span></font></font></div>
<font color="#000080" size="2"><br />
在上面的程序中，第一行的&#8220;.""p.exe&#8221;是要执行的程序
名，Runtime.getRuntime()返回当前应用程序的Runtime对象，该对象的exec()方法指示Java虚拟机创建一个子进程执行指
定的可执行程序，并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待
子进程完成再往下执行。<br />
但在windows平台上，如果处理不当，有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况：<br />
&nbsp;
1、执行DOS的内部命令<br />
&nbsp;
如果要执行一条DOS内部命令，有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如，执行dir命令，在NT上，可写成
exec("cmd.exe&nbsp;&nbsp; /c dir")，在windows95/98下，可写成&#8220;command.exe /c
dir&#8221;，其中参数&#8220;/c&#8221;表示命令执行后关闭DOS立即关闭窗口。另一种方法是，把内部命令放在一个批命令my_dir.bat文件中，在Java程序
中写成exec("my_dir.bat")。如果仅仅写成exec("dir")，Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性，
需要在程序中读取运行的操作系统平台，以调用不同的命令解释器。后一种方法则不需要做更多的处理。<br />
&nbsp; 2、打开一个不可执行的文件<br />
&nbsp;
打开一个不可执行的文件，但该文件存在关联的应用程序，则可以有两种方式。以打开一个word文档a.doc文件为例，Java中可以有以下两种写法：
</font>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><font color="#000080" size="2"><font face="Courier New"><span style="color: rgb(0, 128, 128);">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;exec(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">start&nbsp;.""a.doc</span><span style="color: rgb(0, 0, 0);">"</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">);<br />
</span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;exec(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Files""Microsoft&nbsp;Office""office""winword.exe&nbsp;.""a.doc</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span></font></font></div>
<font color="#000080" size="2">&nbsp;
显然，前一种方法更为简捷方便。<br />
&nbsp; 3、执行一个有标准输出的DOS可执行程序<br />
&nbsp;
在Windows平台上，运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭，从而导致Java应用程序阻塞在waitfor()语句。导致
该现象的一个可能的原因是，该可执行程序的标准输出比较多，而运行窗口的标准输出缓冲区不够大。解决的办法是，利用Java中Process类提供的方法
让Java虚拟机截获被调用程序的DOS运行窗口的标准输出，在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下：
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><font face="Courier New"><span style="color: rgb(0, 128, 128);">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif" alt="" /><br />
</span><span style="color: rgb(0, 128, 128);">2</span></font><font face="Courier
New"><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;String&nbsp;s;<br />
</span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;Process&nbsp;process&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;Runtime.getRuntime().exec(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cmd&nbsp;/c&nbsp;dir&nbsp;""windows</span><span style="color: rgb(0, 0, 0);">"</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">);<br />
</span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;BufferedReader&nbsp;bufferedReader&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span>&nbsp;<span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BufferedReader(</span><span style="color: rgb(0, 0, 255);">new</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">&nbsp;InputStreamReader(process.getInputStream());<br />
</span><span style="color: rgb(0, 128, 128);">5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">((s</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">bufferedReader.readLine())&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span>&nbsp;<span style="color: rgb(0, 0, 255);">null</span></font><font face="Courier New"><span style="color: rgb(0, 0, 0);">)<br />
</span><span style="color: rgb(0, 128, 128);">6</span></font><font face="Courier
New"><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;System.out.println(s);<br />
</span><span style="color: rgb(0, 128, 128);">7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;process.waitfor();</span></font></div>
</font>
<img src ="http://www.blogjava.net/zhuofan/aggbug/320922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-05-13 19:21 <a href="http://www.blogjava.net/zhuofan/archive/2010/05/13/320922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] 一个穷得只剩下钱的地方，看迪拜皇室~  </title><link>http://www.blogjava.net/zhuofan/archive/2010/03/15/315477.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Mon, 15 Mar 2010 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/archive/2010/03/15/315477.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/315477.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/archive/2010/03/15/315477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/315477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/315477.html</trackback:ping><description><![CDATA[http://user.qzone.qq.com/739954214?ptlang=2052<br />
<img src ="http://www.blogjava.net/zhuofan/aggbug/315477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-03-15 14:08 <a href="http://www.blogjava.net/zhuofan/archive/2010/03/15/315477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] 毕业后的五年拉开大家差距的原因在哪里？</title><link>http://www.blogjava.net/zhuofan/archive/2010/03/15/315476.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Mon, 15 Mar 2010 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/archive/2010/03/15/315476.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/315476.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/archive/2010/03/15/315476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/315476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/315476.html</trackback:ping><description><![CDATA[<div id="blogDetailDiv" style="font-size: 16px;">
<h1 style="margin: auto 0cm;"><font face="宋体"><span style="font-size: 14pt; color: #333333;">有人工作，有人继续上学，大家千万不要错过这篇文章，能看到这篇文章也是一种幸运，真的受益匪浅，对我有很大启迪，这篇文章将会改变我的一生，真的太好了，希望与有缘人分享，也希望对有缘人有所帮助！看完之后有种&#8220;相见恨晚&#8221;的感觉，特别激动，希望大家好好的珍藏这篇文章，相信多年以后，再来看这篇文章，一定有不同的感觉。</span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"><o:p></o:p></span></font></h1>
<h1 style="margin: auto 0cm;"><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">正如</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">打工皇帝</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">唐骏说：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">我觉得有两种人不要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人，头</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年千万不要说你能不能多给我一点儿工资，最重要的是能在企业里学到什么，对发展是不是有利&#8230;&#8230;</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">人总是从平坦中获得的教益少，从磨难中获得的教益多；从平坦中获得的教益浅，从磨难中获得的教益深。一个人在年轻时经历磨难，如能正确视之，冲出黑暗，那就是一个值得敬慕的人。最要紧的是先练好内功，毕业后这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年就是练内功的最佳时期，练好内功，才有可能在未来攀得更高。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #ff3300;"><font face="宋体">出路在哪里？出路在于思路！</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　其实，没有钱、没有经验、没有阅历、没有社会关系，这些都不可怕。没有钱，可以通过辛勤劳动去赚；没有经验，可以通过实践操作去总结；没有阅历，可以一步一步去积累；没有社会关系，可以一点一点去编织。但是，没有梦想、没有思路才是最可怕的，才让人感到恐惧，很想逃避</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">!<br />
</span><font face="宋体"><span style="font-size: 14pt; color: #333333;">　　</span><span style="font-size: 14pt; color: red;">人必须有一个正确的方向</span><span style="font-size: 14pt; color: #333333;">。无论你多么意气风发，无论你是多么足智多谋，无论你花费了多大的心血，如果没有一个明确的方向，就会过得很茫然，渐渐就丧失了斗志，忘却了最初的梦想，就会走上弯路甚至不归路，枉费了自己的聪明才智，误了自己的青春年华。</span></font><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">荷马史诗《奥德赛》中有一句至理名言：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">没有比漫无目的地徘徊更令人无法忍受的了。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">毕业后这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年里的迷茫，会造成</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">10</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年后的恐慌，</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">20</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年后的挣扎，甚至一辈子的平庸。如果不能在毕业这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年尽快冲出困惑、走出迷雾，我们实在是无颜面对</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">10</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年后、</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">20</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年后的自己。毕业这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年里，我们既有很多的不确定，也有很多的可能性。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　毕业这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年里，我们既有很多的待定，也有很多的决定。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　迷茫与困惑谁都会经历，恐惧与逃避谁都曾经有过，但不要把迷茫与困惑当作可以自我放弃、甘于平庸的借口，更不要成为自怨自艾、祭奠失意的苦酒。生命需要自己去承担，命运更需要自己去把握。在毕业这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年里，越早找到方向，越早走出困惑，就越容易在人生道路上取得成就、创造精彩。无头苍蝇找不到方向，才会四处碰壁；一个人找不到出路，才会迷茫、恐惧。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">生活中，面对困境，我们常常会有走投无路的感觉。不要气馁，坚持下去，要相信年轻的人生没有绝路，困境在前方，希望在拐角。只要我们有了正确的思路，就一定能少走弯路，找到出路！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: red;"><font face="宋体">成功的人不是赢在起点，而是赢在转折点。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US"> <br />
&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">不少刚刚毕业的年轻人，总是奢望马上就能找到自己理想中的工作。然而，很多好工作是无法等来的，你必须选择一份工作作为历练。职业旅程中的第一份工作，无疑是踏入社会这所大学的起点。也许你找了一份差强人意的工作，那么从这里出发，好好地沉淀自己，从这份工作中汲取到有价值的营养，厚积薄发。千里之行，始于足下，只要出发，就有希望到达终点。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">起点可以相同，但是选择了不同的拐点，终点就会大大不同！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">毕业这几年，我们的生活、感情、职业等都存在很多不确定的因素，未来也充满了各种可能。这个时候，必须学会选择，懂得放弃，给自己一个明确的定位，使自己稳定下来。如果你不主动定位，就会被别人和社会</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">定型</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　可以这么说：一个人在毕业这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年培养起来的行为习惯，将决定他一生的高度。我们能否成功，在某种程度上取决于自己对自己的评价，这就是定位。你给自己定位是什么，你就是什么。定位能决定人生，定位能改变命运。丑小鸭变成白天鹅，只要一双翅膀；灰姑娘变成美公主，只要一双水晶鞋。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: red;"><font face="宋体">人的命，三分天注定，七分靠打拼，有梦就</font></span><span style="font-size: 14pt; color: red; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: red;"><font face="宋体">会红</font></span><span style="font-size: 14pt; color: red; font-family: 'Times New Roman';" lang="EN-US">"</span><font face="宋体"><span style="font-size: 14pt; color: red;">，爱拼才会赢</span><span style="font-size: 14pt; color: #333333;">。只要不把自己束缚在心灵的牢笼里，谁也束缚不了你去展翅高飞。</span></font><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">现实情况远非他们所想的那样。于是，当优越感逐渐转为失落感甚至挫败感时，当由坚信自己是一块</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">金子</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">到怀疑自己是一粒</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">沙子</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">时，愤怒、迷茫、自卑就开始与日俱增。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">其实，应该仔细掂量一下自己，你是否真是金子？是真金，手中要有绝活，才能上要有过人之处才行。一句话：真金是要靠实力来证明的，只有先把自己的本领修炼好了，才有资格考虑伯乐的事情</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">每颗珍珠原本都是一粒沙子，但并不是每一粒沙子都能成为一颗珍珠。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">想要卓尔不群，就要有鹤立鸡群的资本。忍受不了打击和挫折，承受不住忽视和平淡，就很难达到辉煌。年轻人要想让自己得到重用，取得成功，就必须把自己从一粒沙子变成一颗价值连城的珍珠。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: red; font-family: 'Times New Roman';" lang="EN-US">
</span><span style="font-size: 14pt; color: red;"><font face="宋体">天有下雨与日出，人生高峰与低谷。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><font face="宋体"><span style="font-size: 14pt; color: red;">莫为浮云遮望眼，风物长宜放眼量。</span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"><o:p></o:p></span></font></h1>
<h1 style="margin: auto 0cm;"><span style="color: #333333; font-family: 'Times New Roman';" lang="EN-US"><font size="3">&nbsp;&nbsp;&nbsp;</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">只要拂去阴霾，就能亮出朗朗晴空。如果你在工作上有些不如意，要相信自己不会一直处于人生的低谷期，总有一天能冲破重重云层。告诉自己：我并没有失败，只是暂时没有成功！只要在内心点亮一盏希望之灯，一定能驱散黑暗中的阴霾，迎来光明。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">的确，论资历，他们是不折不扣的职场菜鸟，业务涉及不深，人脉一穷二白，在工作中经常碰壁。他们的压力并不一定都像千钧大石，而是像大雨来临前的天色，灰色低沉，明明有空间，却被灰色填满每个缝隙，只能等待大雨倾盆之后的晴空。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">起得比鸡早，睡得比狗晚，干得比驴多，吃得比猪差。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">这是很多刚刚毕业的人喜欢用来调侃自己生活状态的话。虽然有点儿夸张，但是，他们中的很多人的确一直都被灰色心情所笼罩</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">--</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">心里永远是多云转阴。记得有位哲人曾说：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">我们的痛苦不是问题本身带来的，而是我们对这些问题的看法产生的。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">换个角度看人生，是一种突破、一种解脱、一种超越、一种高层次的淡泊与宁静，从而获得自由自在的快乐。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">一位哲人说：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">人生就是一连串的抉择，每个人的前途与命运，完全把握在自己手中，只要努力，终会有成。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">就业也好，择业也罢，创业亦如此，只要奋发努力，都会成功。你是不是准备把生命的承诺全部都交给别人？</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　毕业后这</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年，是改变自己命运的黄金时期。在最能决定自己命运时，如果还不把握，那你还要等到什么时候呢？我的人生我做主，命运由己不由人。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><font face="宋体"><span style="font-size: 14pt; color: #333333;">　　</span><span style="font-size: 14pt; color: red;">不要活在别人的嘴里，不要活在别人的眼里，而是把命运握在自己手里。</span></font><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　别说你没有背景，自己就是最大的背景。美国作家杰克&#183;凯鲁亚克说过一句话：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">我还年轻，我渴望上路。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">在人生的旅途中，我们永远都是年轻人，每天都应该满怀渴望。每个人的潜能都是无限的，关键是要发现自己的潜能和正确认识自己的才能，并找到一个能充分发挥潜能的舞台，而不能只为舞台的不合适感到不快。要客观公正地看待自己的能力，结合自己的实际情况和爱好冷静选择，尽可能到最需要自己、最适合自己的地方。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">在人力资源管理界，特别流行一个说法，即</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">骑马，牵牛，赶猪，打狗</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">理论：人品很好，能力又很强的，是千里马，我们要骑着他；人品很好但能力普通的，是老黄牛，我们要牵着他；人品、能力皆普通的，就是</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">猪</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">，我们要赶走他；人品很差能力很强的，那是</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">狗</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">，我们要打击他。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">我想，刚刚毕业几年的你，一样胸怀大志，一样想成为一匹被人赏识、驰骋沙场的千里马吧？那么，就好好沉淀下来。低就一层不等于低人一等，今日的俯低是为了明天的高就。所谓生命的价值，就是我们的存在对别人有价值。能被人利用是一件好事，无人问津才是真正的悲哀！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: red;"><font face="宋体">能干工作、干好工作是职场生存的基本保障。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US"> <br />
&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">任何人做工作的前提条件都是他的能力能够胜任这项工作。能干是合格员工最基本的标准，肯干则是一种态度。一个职位有很多人都能胜任，都有干好这份工作的基本能力，然而，能否把工作做得更好一些，就要看是否具有踏实肯干、苦于钻研的工作态度了。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: red;"><font face="宋体">在能干的基础上踏实肯干。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">工作中，活干得比别人多，你觉得吃亏；钱拿得比别人少，你觉得吃亏；经常加班加点，你觉得吃亏&#8230;&#8230;其实，没必要这样计较，吃亏不是灾难，不是失败，吃亏也是一种生活哲学。现在吃点儿小亏，为成功铺就道路，也许在未来的某个时刻，你的大福突然就来了。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: red;"><font face="宋体">能吃亏是做人的一种境界，是处世的一种睿智。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">在工作中并不是多做事或多帮别人干点儿活就是吃亏。如果领导让你加加班、赶赶任务，别以为自己吃了大亏，反而应该感到庆幸，因为领导只叫了你，而没叫其他人，说明他信任你、赏识你。吃亏是一种贡献，你贡献得越多，得到的回报也就越多。乐于加班，就是这样的一种吃亏。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: red;"><font face="宋体">舍得舍得，有舍才有得；学会在适当时吃些亏的人绝对不是弱智，而是大智。</font></span><span style="font-size: 14pt; color: #ccff00; font-family: 'Times New Roman';" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　给别人留余地就是给自己留余地，予人方便就是予己方便，善待别人就是善待自己。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　傻人有傻福，因为傻人没有心计。和这样的人在一起，身心放松，没有太多警惕，就能相互靠近。傻在很多时候意味着执着和忠贞，也意味着宽厚和诚实，让人不知不觉站到他一边。傻人无意中得到的，比聪明人费尽心机得到的还多。毕业这几年，你的天空中只飘着几片雪花，这样你就满足了吗？成功需要坚持与积累，与其专注于搜集雪花，不如省下力气去滚雪球。巴菲特说：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">人生就像滚雪球，最重要的是发现很湿的雪和很长的坡。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">让自己沉淀下来，学着发现</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">很湿的雪</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">，努力寻找</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">很长的坡</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">。记住：散落的雪花会很快融化，化为乌有，只有雪球才更实在，才能长久。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">在毕业这几年里，你要是能做到比别人多付出一分努力，就意味着比别人多积累一分资本，就比别人多一次成功的机会。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">什么是职业化呢？职业化就是工作状态的标准化、规范化、制度化，即在合适的时间、合适的地点用合适的方式说合适的话、做合适的事，使知识、技能、观念、思维、态度、心理等符合职业规范和标准。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">在每个行业里，都有很多出色的人才，他们之所以能存在，是因为比别人更努力、更智慧、更成熟。但是，最重要的是，他们比一般人更加职业化！这就是为什么我现在能当你老板的原因。一个人仅仅专业化是不够的，只有职业化的人才能飞在别人前面，让人难以超越！</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">不要以为我们现在已经生存得很安稳了。对于毕业</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">5</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年的人来讲，一定要认清即将面临的五大挑战。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
<br />
</span><span style="font-size: 14pt; color: red;"><font face="宋体">一、赡养父母。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red;"><font face="宋体">二、结婚生子。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red;"><font face="宋体">三、升职加薪。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red;"><font face="宋体">四、工作压力。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red;"><font face="宋体">五、生活质量。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">有的人为生存而雀跃，目光总是停在身后，三天打鱼两天晒网，有始无终。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">有的人为发展而奋斗，目光总是盯在正前方，每天进步一点点，坚持不懈。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　毕业这几年，不能没有追求和探索，不能没有理想和目标。人生如逆水行舟，不进则退。甘于现状的生活就是不再前行的船，再也无法追上时代前进的步伐。一定要抓紧每一秒钟的时间来学习，要明白学习不是学生的专利。小聪明的人最得意的是：自己做过什么？大智慧的人最渴望的是：自己还要做什么？</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><font face="宋体"><span style="font-size: 14pt; color: #333333;">　　</span><span style="font-size: 14pt; color: red;">小聪明是战术，大智慧是战略；小聪明看到的是芝麻，大智慧看到的是西瓜。</span></font><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　在这个世界上，既有大人物，也有小角色，大人物有大人物的活法，小人物有小人物的潇洒，每个人都有自己的生活方式，谁也勉强不了谁。但是，小聪明只能有小成绩和小视野，大智慧才能有大成就和大境界。小企业看老板，中企业看制度，大企业看文化。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">小公司与大企业都有生存之道，没有好坏之分，但对一个人不同阶段的影响会不同。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　小公司肯定想要发展为大企业，这是一种目标，年轻人也要给自己的职业生涯制定目标。毕业几年的你，是否经常会怯场或者是感到没有底气？居安思危绝对不是危言耸听！此刻打盹，你将做梦；此刻学习，你将圆梦。在竞争激烈的人生战场上，打盹的都是输家！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">每个人在年轻的时候似乎都豪情万丈，什么都不怕，可是随着年龄的增长，每天想着房子、工作、养家糊口这些俗事儿，再也没有年轻时那种敢于</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">上天探星、下海捞月</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">的勇气了。是我们改变了生活，还是生活改变了我们？我们的思想越来越复杂，因为有了越来越多的舍不得、越来越多的顾虑，我们总是在徘徊、总是在犹豫。毕业开始一两年，生活的重担会压得我们喘不过气来，挫折和障碍堵住四面八方的通口，我们往往在压迫得自己发挥出潜能后，才能杀出重围，找到出路。可是两三年后，身上的重担开始减轻，工作开始一帆风顺，我们就松懈了下来，渐渐忘记了潜在的危险。直到有一天危机突然降临，我们在手足无措中被击败&#8230;&#8230;毕业这几年，仍然处于危险期，一定要有居安思危的意识，好好打拼，这样才能有一个真正的安全人生！</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="宋体"><span style="font-size: 14pt; color: red;">生于忧患，死于安乐。</span><span style="font-size: 14pt; color: #333333;">如果你想跨越自己目前的成就，就不能画地自限，而是要勇于接受挑战。对畏畏缩缩的人来说，真正的危险正在于不敢冒险！</span></font><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年轻人在社会的重压下，适应能力已变得越来越强，只是他们不自觉地习惯被环境推着走。他们不敢冒险，怕给自己带来终身的遗憾，于是告慰自己：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">我对得起自己、对得起家人，因为我已竭尽全力。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">其实，人只有不断挑战和突破才能逐渐成长。长期固守于已有的安全感中，就会像温水里的青蛙一样，最终失去跳跃的本能。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="宋体"><span style="font-size: 14pt; color: #333333;">经历了这几年社会生活，你应该明白：</span><span style="font-size: 14pt; color: red;">这个世界上有富也有贫，有阴也有亮，有丑也有美，到底看到什么，取决于自己是积极还是消极。在年轻时学会勤勉地工作，用一种光明的思维对待生活，那么，只要张开手掌，你就会发现，里面有一片灿烂的人生。</span></font><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">把感恩刻在石头上，深深地感谢别人帮助过你，永远铭记，这是人生应有的一种境界；把仇恨写在沙滩上，淡淡忘掉别人伤害过你，学会宽容，让所有的怨恨随着潮水一去不复返，这也是一种人生境界。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><font face="宋体"><span style="font-size: 14pt; color: red;">学会倒出水，才能装下更多的水</span><span style="font-size: 14pt; color: #333333;">。从毕业那天开始，学会把每天都当成一个新的起点，每一次工作都从零开始。如果你懂得把</span></font><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">归零</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">当成一种生活的常态，当成一种优秀的延续，当成一种时刻要做的事情，那么，经过短短几年，你就可以完成自己职业生涯的正确规划与全面超越。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　在职业起步的短短道路上，想要得到更好、更快、更有益的成长，就必须以归零思维来面对这个世界。不要以大学里的清高来标榜自己，不要觉得自己特别优秀，而是要把自己的姿态放下，把自己的身架放低，让自己沉淀下来，抱着学习的态度去适应环境、接受挑战。放下</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">身段</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">才能提高身价，暂时的俯低终会促成未来的高就。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　年轻人从校园或者从一个环境进入一个新环境，就要勇于将原来环境里熟悉、习惯、喜欢的东西放下，然后从零开始。我们想在职场上获得成功，首先就要培养适应力。从自然人转化为单位人是融入职场的基本条件。一个人起点低并不可怕，怕的是境界低。越计较自我，便越没有发展前景；相反，越是主动付出，那么他就越会快速发展。很多今天取得一定成就的人，在职业生涯的初期都是从零开始，把自己沉淀再沉淀、倒空再倒空、归零再归零，正因为这样，他们的人生才一路高歌，一路飞扬。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US">
<br />
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　　在毕业这几年里，我们要让过去归零，才不会成为职场上那只背着重壳爬行的蜗牛，才能像天空中的鸟儿那样轻盈地飞翔。请好好品味一下杰克&#183;韦尔奇说过的一句话：</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">纠正自己的行为，认清自己，从零开始，你将重新走上职场坦途。</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">　吐故才能纳新，心静才能身凉，有舍才能有得，杯空才能水满，放下才能超越。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: red; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: red;"><font face="宋体">归零思维五大表现：心中无我，眼中无钱，念中无他，朝中无人，学无止境。</font></span><span style="font-size: 14pt; color: red; font-family: Tahoma;" lang="EN-US"> <br />
</span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">年轻人难免带着几分傲气，认为自己无所不能、所向披靡，其实不然，初入职场的新人还是个</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">婴儿</font></span><span style="font-size: 14pt; color: #333333; font-family: 'Times New Roman';" lang="EN-US">"</span><span style="font-size: 14pt; color: #333333;"><font face="宋体">，正处在从爬到走的成长阶段。在毕业这几年里，一定要让自己逐步培养起学徒思维、海绵思维、空杯思维，具有这样思维的人心灵总是敞开的，能随时接受启示和一切能激发灵感的东西，他们时刻都能感受到成功女神的召唤。</font></span><span style="font-size: 14pt; color: #333333; font-family: Tahoma;" lang="EN-US"><o:p></o:p></span></h1>
</div>
<img src ="http://www.blogjava.net/zhuofan/aggbug/315476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-03-15 14:05 <a href="http://www.blogjava.net/zhuofan/archive/2010/03/15/315476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows 命令</title><link>http://www.blogjava.net/zhuofan/archive/2010/02/02/311708.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Tue, 02 Feb 2010 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/archive/2010/02/02/311708.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/311708.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/archive/2010/02/02/311708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/311708.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/311708.html</trackback:ping><description><![CDATA[ntsd&nbsp;-c&nbsp;q&nbsp;-p&nbsp;PID<br />
tasklist&nbsp;能列出所有的进程<br />
杀进程&nbsp;&nbsp; tskill&nbsp;程序名<br />
命令格式：Netstat -a -e -n -o -s－an<br />
<br />
-a 表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。<br />
<br />
-e 表示显示以太网发送和接收的字节数、数据包数等。<br />
<br />
-n 表示只以数字形式显示所有活动的TCP连接的地址和端口号。<br />
<br />
-o 表示显示活动的TCP连接并包括每个连接的进程ID（PID）。<br />
<br />
-s 表示按协议显示各种连接的统计信息，包括端口号。<br />
<img src ="http://www.blogjava.net/zhuofan/aggbug/311708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-02-02 17:56 <a href="http://www.blogjava.net/zhuofan/archive/2010/02/02/311708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转） 如何做一个出色的程序员</title><link>http://www.blogjava.net/zhuofan/articles/309473.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Thu, 14 Jan 2010 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/articles/309473.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/309473.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/articles/309473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/309473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/309473.html</trackback:ping><description><![CDATA[爱这行！！！<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从事任何行业都一样，只有真正的爱上了这份工作，才会投入热情，才会在顺境中自我警醒，在逆境中寻找突破。这个行业的竞争很激烈，你停下来走，别人就立刻会跑步超过你，没有对这一行业的一种热情，就很难在困境中保持一种执着的态度坚持到底。<br />
<br />
<br />
<br />
<br />
踏踏实实&#8220;扎马步&#8221;<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天无意中看了&#8220;校长&#8221;的&#8220;程序员&amp;司机&#8221;，其中谈到了关于程序员速成的问题。其实速成班毕业的 &#8220;系统杀手&#8221;早已在遍布大江南北，只是在互联网时代，互联网的应用型软件生命周期越来越短，业务驱动主导的情况下，这种速成方式看起来反而提高了企业生产效率。但这样的人才也就只能写几个Facebook上的插件应用或者iGoogle上的Gadget，真的要出Google，Amazon，Yahoo改变互联网世界的企业，还是需要踏踏实实先学&#8220;扎马步&#8221;的人。<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多在学校的同学或者刚刚毕业的朋友都看什么热门学什么，Spring，AJAX，Hibernate等等，又有多少人在看Spring之前把J2SE的NIO，XML，Collection等先好好学习一下，在看AJAX之前把Http协议、DTD、XML Schema好好看一下，在学习Hibernate以前先把J2EE事务规范搞清楚。Java最大的好处就是开源，能够让人们站在更高的起点来作出更多的创新，但是对于学习者来说，不了解自己站在什么上面的时候，可能摔下来会很痛。在用的时候多问一些为什么，在遇到问题的时候多找找原因，在了解以后多提出一些优化的方案，这样才会进步的更快，走的更远。<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记得我前一阵子回家的时候和妈妈聊起最近的工作，虽然妈妈不太明白，但是也知道我现在做的东西技术含量比较高，嘱咐我&#8220;千万不要什么都教给自己的同事，徒弟带出就不要师傅了&#8221;（这当然是老一辈的观念了）。我和她说：&#8220;不要担心，这种学的会的不教迟早也会，学不会的教了也学不会&#8221;。其实这里说的学的会的就是技术，而学不会的就是经验和能力。这个行业的人在日积月累过程中并不会去比较掌握的知识面有多广多深，毕竟这行业更新很快，其实能力强的人在多年的学习中就积累了很多的找问题，分析问题，总结问题，提出建议，发掘创新的能力，这些才是这行业人在发展中最宝贵的财富，也是一个人成长的标志。开始的过程中，踏踏实实地&#8220;扎马步&#8221;，了解一些最基本的知识，那么上层技术的发展对于他来说仅仅只是一个短暂的学习过程，甚至可以触类旁通。因此还是要奉劝每一个新入行的同学，踏踏实实，静下心来做技术，就算工作安排得都是一些浮躁和重复的工作，用高效的方式来结束那些重复劳动，多留一些时间给自己打基础。<br />
<br />
<br />
<br />
<br />
逆境养兵、顺境攻城掠地<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 普通人的工作经历通常都是起伏不定的，一个人的能力是否能够得到体现，不仅仅靠自己的努力，有时候也需要&#8220;天时&#8221;、&#8220;地利&#8221;。马云比较有名的一句话：&#8220;今天很残酷，明天更残酷，后天很美好，但是大多数人死在明天晚上，看不到后天的太阳！！！&#8221;，其实也在说明一件事，就是很多时候需要一种坚持的精神才能得到宝贵的机会。<br />
<br />
<br />
<br />
<br />
今天是我进入阿里巴巴满3年，这3年让我感触很深的是：<br />
<br />
1.逆境不要气馁，厚积薄发。<br />
<br />
2.顺境不要懈怠，一股作气，把握机会展现自己最大的能力。<br />
<br />
3.在逆境和顺境的转换过程中，创造机会，不要坐等机会，要学会不在其位，也谋其职。&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后一点就拿我自己的亲身经历来说，我原来就职于一家通信公司，因此对于互联网应用的开发和架构设计要比很多人弱，进入阿里巴巴以后工作了半年（主要作业务开发），正好阿里软件创立，当时被分配到了阿里软件第一个产品负责客户模块，当时的应用是通过MDA框架配置搭建的，开发人员很大程度上不需要自己做太多的编码，但是这个平台并没有搭建过如此复杂的大型应用，因此存在着不少问题，当然这些问题都是通过业务产品线的人反馈给平台部的人，当时平台部门人员很少，但是却要修复和完善诺大一个平台，因此常常搁置开发人员的反馈。当时在自己工作之余就琢磨和研究平台，同时跟踪调试平台，最后直接给出解决方案，逐渐的就融入到了平台开发中，最后被吸收到了平台部门，进入平台部门以后遇到了两位很好的老大，根据我的特质给我安排了研究和学习的工作。接下去就是不断地参与阿里软件各个基础平台的构建，核心技术的研究和探索，找到了兴趣和工作的最佳结合点。因此，当你困惑的时候首先不是去抱怨，而是审视一下自己是否还有作的不够的，是否还有可以提升的空间，多给自己制造一些机会，也许我们不用等到后天，也不会死在明天夜里，明天早晨我们就看到了太阳。<br />
<br />
<br />
<br />
<br />
海纳百川、冰冻三尺<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多朋友可能听老师或者前辈也说过类似的话，就是作为一个技术人员要广也要钻。就好比现在很多人都要DB Scale out，同时也要Scale up。我从自己的角度来说一下广和钻的看法。广：1.要有容人之量。（很多时候程序员最大的毛病就是喜欢在技术上比较，未尝不是好事，但是一个人的能力总归有限，多看看别人的，多听听别人的，也许能够让自己少用时间获得更多的收获，特别是自己战友的声音）2.触类旁通，多问个为什么，多跨过界去学习。在阿里巴巴，PD、SA、DBA、UI等等职位各司其职，作为开发的我们其实也应该去了解如何去画Use Case，如何假设服务器和应用环境，如何写一些略微复杂的SQL，了解一些DB的特性，如何能够简单的作出一些基础的页面，使用简单的css来美化一下门面。这些就是需要多跨过界，多虚心的去学习。钻：1.本职工作技术一定要扎实，每作一个技术点就要把技术吃透，同时延伸开来，发掘更多的技术亮点。2.多接触新鲜事物，但是有选择的去了解，有目的的去学习和实践（目的的源泉就是工作的需求）。3.学会分享，一个人自己搞懂一个技术很容易，一个人要把他熟悉的技术写下来就会发觉原来自己还有那么多没有搞清楚，一个人如果要把写下来的东西宣讲给别人听，他就会发现，原来写下来的仅仅是那么一小块，因此学会分享，从自己了解，到记录分享，到演讲传播就是一个不断深化和广化的过程。个人觉得小公司锻炼人（啥都自己干），大公司培养人（该干的要干好），因此自己常回头看看自己在广和钻上的不足，可以让自己进步的更快，学的更全面。&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
学中医积累经验，学西医寻找突破<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中医以对人体经络血脉了解为基础，通过望闻问切来寻找病理根源，行医年限越久，找问题解决问题的经验越强。西医以科学技术为手段，通过试验化的方式不断寻找突破，并且将成果积累并且传递给更多的人，但是否年限越久越有能力，或者是使用得器材越广越资深，这点全要看个人对于医术的理解，如果仅仅停留在对器械的使用和对成果的依赖，那么只会成为一个庸医。当然这里绝对没有对中西医的差别化或者评价，仅仅要说明的是，在手段丰富的情况下，容易忽视了本质，只看到了皮毛，积累的时候多一些追根溯源，站在别人的成果上才更踏实，因此在对经验积累上向中医多学一些，在寻找突破，传播技术上多学一点西医的风格。不过说到低,还是要看学习的人,静的下心,沉得住气,才会有积累,才会有突破.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
不做一个纯粹的&#8220;技术人员&#8221;<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不做一个纯粹的&#8220;技术人员&#8221;，其实也就是说要培养自己多方面的能力，我仅仅把自己想到的一些点列出来说说：<br />
<br />
<br />
<br />
<br />
1． 项目产品化的思想。现在就算在学校里面给导师作项目都讲究一个商业价值，更不要说在企业里工作。作为一个开发或者架构师最重要的就是要有产品化的概念，这也是项目是否成功的关键。软件的目的是为人服务，如何服务的好，那就要以一个产品的思路去做项目，而不是作为实验室的实验品，为客户提供好服务就会给公司带来商业价值，对自己的工作也会有很好的肯定。这是一个良性循环，反之则是恶性循环（多赢变成多输）。如何做到产品化，首先就是需要去了解需求，而不是布置需求，其次就是设计时多听取一些不同角色的意见，最后就是在客户的反馈过程中反省。<br />
<br />
<br />
<br />
<br />
2． 多一些设计，少砌两块砖。代码写的再好，其实也只是用砖块砌墙砌的比较好罢了，这年代已经不会为了节省两块砖而给一个优秀工作者了，同时技术的日新月异，总是摆弄技巧，学习花拳绣腿已经跟不上时代了。多了解一些行业背景，多参与一些架构设计，将业务设计用良好的架构体系来实现，那才是一个称得上有能力的技术人员。<br />
<br />
<br />
<br />
<br />
3． 学会前瞻，学会自己找事。记得我刚进平台组，最不适应的就是我的老大基本不太给我布置太详细的任务，这就好比进入大学，老师不给作业，自己反而心里没底了，其实自己找事的过程就是一个自己学习的过程，当我一天下来感觉没干什么，没学到什么，心里就开始发虚。如何能够前瞻性的去选择一些目标，如何对现有情况提出一些创新和建议，都是一种更高能力的要求。现在SIP组也是一样，在我们这个组里虽然现在每周还是布置一定工作，但是我对其他两个同学的要求也是希望能够有前瞻性，学会发现问题，预防问题，更甚者就是提出创新。当你具备了这种环境的时候，你就需要锻炼自己的能力了。<br />
<br />
<br />
<br />
<br />
4． 做个让老大放心的人。这点也许很多人和我一样在业务上很早就让老大觉得可以安心睡觉了，但是其实另一方面，如何在商业角度看问题，如何培养新人，如何协调部门合作等等，都会让你的老大更加安心。另一方面来看，其实在这些能力的培养过程中，你不再局限于业务水平的提升，让自己在更多方面更加成熟。<br />
<br />
<br />
<br />
<br />
六脉神剑<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天是我进入阿里巴巴3年整。在阿里巴巴有个说法，只有在阿里巴巴工作了3年，才能算是一个真正的阿里人，因为理解阿里巴巴的文化，需要三年时间的沉淀。这里就从一个写代码的角度分享一下阿里巴巴的六脉神剑文化。<br />
<br />
<br />
<br />
<br />
客户第一：如果你是做架构的，作平台的，作开发工具的，那么客户就是和自己一样的开发者，多学习一下开源项目的精神，多从使用者角度去考虑问题，那么你的东西才会被更多的人认可和使用，永远不要去做一个&#8220;玩具&#8221;的开发者。如果你是做产品的，那么就多听，多想，多问，永远不要急着去写代码。<br />
<br />
<br />
<br />
<br />
拥抱变化：敏捷开发的基本原则。互联网应用尤其如此，不要害怕变化，在需求和架构之间找到平衡点（说起来比较容易^_^）。<br />
<br />
<br />
<br />
<br />
团队合作：一个人的力量始终有限，分享，交流，合作能够让自己事半功倍，学的更多，看得更远。<br />
<br />
<br />
<br />
<br />
诚信：说到就要做到，做了就要做好，做软件开发一样也需要有责任感，贴满狗皮膏药的代码上如果注释是你的名字未来也会给你蒙羞。踏踏实实地用心去写代码，去设计架构，不经意间得到的要远远比那么一点工资来的多。<br />
<br />
<br />
<br />
<br />
激情：还是那句话，你如果不爱这行，乘着年轻赶快转行。<br />
<br />
<br />
<br />
<br />
敬业：专业执着，精益求精<br />
<br />
<br />
<br />
<br />
很感谢各位能看完这篇感受分享，以上都仅仅是个人的一点感受，能够引起共鸣那么证明我们的经历很相似，如果能够给到你一点帮助，那写这些就真的有意义了。不论你在别人眼里是一个资深架构师还是开发人员，其实如果你爱这个行业的话，你应该就是一个写代码的，但是每个人的经历都是一本&#8220;写代码的自我修养&#8221;，珍惜自己的选择，让自己在兴趣和工作中找到最佳结合点。<br />
<br />
<br />
<br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/lkjxshi/archive/2010/01/07/5149541.aspx<br />
<img src ="http://www.blogjava.net/zhuofan/aggbug/309473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-01-14 16:51 <a href="http://www.blogjava.net/zhuofan/articles/309473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）Java中文处理学习笔记——Hello Unicode</title><link>http://www.blogjava.net/zhuofan/articles/309333.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Wed, 13 Jan 2010 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/articles/309333.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/309333.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/articles/309333.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/309333.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/309333.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java中文处理学习笔记——Hello Unicode作者： 车东 Email: chedongATbigfoot.com/chedongATchedong.com写于：2002/07 最后更新：document.write(document.lastModified)10/26/2004 10:25:01版权声明：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhuofan/articles/309333.html'>阅读全文</a><img src ="http://www.blogjava.net/zhuofan/aggbug/309333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-01-13 17:34 <a href="http://www.blogjava.net/zhuofan/articles/309333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）Java轻量级锁原理详解(Lightweight Locking)</title><link>http://www.blogjava.net/zhuofan/articles/308755.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Fri, 08 Jan 2010 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/articles/308755.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/308755.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/articles/308755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/308755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/308755.html</trackback:ping><description><![CDATA[<p>大家知道，Java的多线程安全是基于Lock机制实现的，而Lock的性能往往不如人意。<br />
原因是，monitorenter与monitorexit这两个控制多线程同步的bytecode原语，是JVM依赖操作系统互斥(mutex)来实现的。<br />
互斥是一种会导致线程挂起，并在较短的时间内又需要重新调度回原线程的，较为消耗资源的操作。</p>
<p>为了优化Java的Lock机制，从Java6开始引入了轻量级锁的概念。</p>
<p>轻量级锁（Lightweight Locking）本意是为了减少多线程进入互斥的几率，并不是要替代互斥。<br />
它利用了CPU原语Compare-And-Swap(CAS，汇编指令CMPXCHG)，尝试在进入互斥前，进行补救。</p>
<p>本文将详细介绍JVM如何利用CAS，实现轻量级锁。</p>
<p>&nbsp;</p>
<h2>原理详解</h2>
<p>Java Object Model中定义，Object Header是一个2字（1 word = 4 byte）长度的存储区域。<br />
第一个字长度的区域用来标记同步，GC以及hash code等，官方称之为 <strong>mark word</strong>。第二个字长度的区域是指向到对象的Class。</p>
<p>在2个word中，mark word是轻量级锁实现的关键。它的结构见下表</p>
<p><img class="alignnone" src="http://photo2.bababian.com/usr832855/upload1/20091108/sEr6VcNWQ3MGSJfkYoZB6knsSUGuVEm2zpVYUxJM37QJs8MmlBYJH4A==.jpg" alt="" width="654" height="181" /></p>
<p>从表中可以看到，state为lightweight locked的那行即为轻量级锁标记。bitfieds名为指向lock record的指针，这里的<strong>lock record，其实是一块分配在线程堆栈上的空间区域</strong>。<br />
用于CAS前，拷贝object上的mark word(为什么要拷贝，请看下文)。<br />
第三项是重量级锁标记。后面的状态单词很有趣，inflated，译为膨胀，在这里意思其实是锁已升级到OS-level。<br />
在本文的范围内，我们只关注第二和第三项即可。</p>
<p>为了能直观的理解lock，unlock与mark word之间的联系，我画了一张流程图：</p>
<p><img class="alignnone" src="http://photo2.bababian.com/usr832855/upload1/20091108/sTTfLdDTZyHJ6QelroYs4ee17rTplaZNFotdaxHwNxmr4W76SoEGUtg==.jpg" alt="" width="682" height="692" /></p>
<p>在图中，提到了拷贝object mark word，由于脱离了原始mark word，官方将它冠以displaced前缀，即<strong>displaced mark word</strong>(置换标记字)。<br />
这个displaced mark word是整个轻量级锁实现的关键，在CAS中的compare就需要用它作为条件。</p>
<p><strong>为什么要拷贝mark word？<br />
</strong>其实很简单，原因是为了不想在lock与unlock这种底层操作上再加同步。</p>
<p>在拷贝完object mark word之后，JVM做了一步<strong>交换指针的操作</strong>，即流程中第一个橙色矩形框内容所述。<br />
将object mark word里的轻量级锁指针指向lock record所在的stack指针，作用是让其他线程知道，该object monitor已被占用。<br />
lock record里的owner指针指向object mark word的作用是为了在接下里的运行过程中，识别哪个对象被锁住了。</p>
<p>下图直观地描述了交换指针的操作。</p>
<p><img class="alignnone" src="http://photo2.bababian.com/usr832855/upload1/20091108/suJ+8n3D3ayQqYuOXJd6PFn3jdrlAsNHPVN6SNRgge_MoEa3AW7FVmA==.jpg" alt="exchange_pointer_1" width="685" height="333" /></p>
<p><img class="alignnone" src="http://photo2.bababian.com/usr832855/upload1/20091108/s+qV8_wc99ti7gP+AhG27qHjoQjGDqqeeBRwrIZs8PgWDV+Bk2Bne+A==.jpg" alt="" width="670" height="457" /></p>
<p>最后一步unlock中，我们发现，JVM同样使用了CAS来验证object mark word在持有锁到释放锁之间，有无被其他线程访问。<br />
如果其他线程在持有锁这段时间里，尝试获取过锁，则可能自身被挂起，而mark word的重量级锁指针也会被相应修改。<br />
此时，unlock后就需要唤醒被挂起的线程。</p>
<p>原文链接：<a href="http://kenwublog.com/theory-of-lightweight-locking-upon-cas" rel="bookmark">http://kenwublog.com/theory-of-lightweight-locking-upon-cas</a></p>
<img src ="http://www.blogjava.net/zhuofan/aggbug/308755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-01-08 17:59 <a href="http://www.blogjava.net/zhuofan/articles/308755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）java内存模型详解</title><link>http://www.blogjava.net/zhuofan/articles/308754.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Fri, 08 Jan 2010 09:58:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/articles/308754.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/308754.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/articles/308754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/308754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/308754.html</trackback:ping><description><![CDATA[<p><span style="font-size: 15px; font-weight: bold;"> 内存模型 (memory model) </span><br />
内存模型描述的是程序中各变量（实例域、静态域和数组元素）之间的关系，以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节.</p>
<p>不同平台间的处理器架构将直接影响内存模型的结构.</p>
<p>在C或C++中, 可以利用不同操作平台下的内存模型来编写并发程序. 但是, 这带给开发人员的是, 更高的学习成本.<br />
相比之下, java利用了自身虚拟机的优势, 使内存模型不束缚于具体的处理器架构, 真正实现了跨平台.<br />
(针对hotspot jvm, jrockit等不同的jvm, 内存模型也会不相同)</p>
<p><strong>内存模型的特征: </strong><br />
a, Visibility 可视性 (多核,多线程间数据的共享)<br />
b, Ordering 有序性 (对内存进行的操作应该是有序的)</p>
<p><span style="font-size: 15px; font-weight: bold;"> java 内存模型 ( java memory model )</span><br />
根据Java Language Specification中的说明, jvm系统中存在一个主内存(Main Memory或Java Heap Memory)，Java中所有变量都储存在主存中，对于所有线程都是共享的。</p>
<p>每条线程都有自己的工作内存(Working Memory)，工作内存中保存的是主存中某些变量的拷贝，线程对所有变量的操作都是在工作内存中进行，线程之间无法相互直接访问，变量传递均需要通过主存完成。<br />
<img src="http://photo2.bababian.com/usr832855/upload1/20090614/sBtYKP1GU1okcV3oHvBCcWyO9WOwCsqaK9YtCbHK70RnhSeacQjf2Mg==.jpg" alt="java内存模型" /><br />
</p>
<p>其中, 工作内存里的变量, 在多核处理器下, 将大部分储存于处理器高速缓存中, 高速缓存在不经过内存时, 也是不可见的.</p>
<p><strong>jmm怎么体现 可视性(Visibility) ? </strong><br />
在jmm中, 通过并发线程修改变量值, 必须将线程变量同步回主存后, 其他线程才能访问到.</p>
<p><strong>jmm怎么体现 有序性(Ordering) ? </strong><br />
通过java提供的同步机制或volatile关键字, 来保证内存的访问顺序.</p>
<p><span style="font-size: 15px; font-weight: bold;"> 缓存一致性（cache coherency） </span></p>
<p><strong>什么是缓存一致性? </strong><br />
它是一种管理多处理器系统的高速缓存区结构，其可以保证数据在高速缓存区到内存的传输中不会丢失或重复。(来自wikipedia)</p>
<p>举例理解:<br />
假如有一个处理器有一个更新了的变量值位于其缓存中，但还没有被写入主内存，这样别的处理器就可能会看不到这个更新的值.</p>
<p><strong>解决缓存一致性的方法? </strong><br />
a, 顺序一致性模型:<br />
要求某处理器对所改变的变量值立即进行传播, 并确保该值被所有处理器接受后, 才能继续执行其他指令.</p>
<p>b, 释放一致性模型: (类似jmm cache coherency)<br />
允许处理器将改变的变量值延迟到释放锁时才进行传播.</p>
<p>jmm缓存一致性模型 &#8211; &#8220;happens-before ordering(先行发生排序)&#8221;</p>
<p>一般情况下的示例程序:</p>
<p>x = 0;<br />
y = 0;<br />
i = 0;<br />
j = 0;</p>
<p>// thread A<br />
y = 1;<br />
x = 1;</p>
<p>// thread B<br />
i = x;<br />
j = y;</p>
<p>在如上程序中, 如果线程A,B在无保障情况下运行, 那么i,j各会是什么值呢?</p>
<p>答案是, 不确定. (00,01,10,11都有可能出现)<br />
这里没有使用java同步机制, 所以 jmm 有序性和可视性 都无法得到保障.</p>
<p><strong>happens-before ordering( 先行发生排序) </strong>如何避免这种情况?<br />
排序原则已经做到:<br />
a, 在程序顺序中, 线程中的每一个操作, 发生在当前操作后面将要出现的每一个操作之前.<br />
b, 对象监视器的解锁发生在等待获取对象锁的线程之前.<br />
c, 对volitile关键字修饰的变量写入操作, 发生在对该变量的读取之前.<br />
d, 对一个线程的 Thread.start() 调用 发生在启动的线程中的所有操作之前.<br />
e, 线程中的所有操作 发生在从这个线程的 Thread.join()成功返回的所有其他线程之前.</p>
<p>为了实现 happends-before ordering原则, java及jdk提供的工具:<br />
a, synchronized关键字<br />
b, volatile关键字<br />
c, final变量<br />
d, java.util.concurrent.locks包(since jdk 1.5)<br />
e, java.util.concurrent.atmoic包(since jdk 1.5)<br />
&#8230;</p>
<p>使用了happens-before ordering的例子:<br />
<img src="http://photo2.bababian.com/usr832855/upload1/20090614/s4diKhwEj+b2YIu8xsaBw0wD0cj67U4TCOHfIO6R3P5FtzfaY6wrQwg==.jpg" alt="happens-before ordering" /></p>
<p>(1) 获取对象监视器的锁(lock)</p>
<p>(2) 清空工作内存数据, 从主存复制变量到当前工作内存, 即同步数据 (read and load)</p>
<p>(3) 执行代码，改变共享变量值 (use and assign)</p>
<p>(4) 将工作内存数据刷回主存 (store and write)</p>
<p>(5) 释放对象监视器的锁 (unlock)</p>
<p>注意: 其中4,5两步是同时进行的.</p>
<p>这边最核心的就是第二步, 他同步了主内存,即前一个线程对变量改动的结果,可以被当前线程获知!(利用了happens-before ordering原则)</p>
<p><strong>对比之前的例子</strong><br />
如果多个线程同时执行一段未经锁保护的代码段，很有可能某条线程已经改动了变量的值，但是其他线程却无法看到这个改动，依然在旧的变量值上进行运算，最终导致不可预料的运算结果。</p>
<p><span style="font-size: 15px; font-weight: bold;"> 经典j2ee设计模式Double-Checked Locking失效问题 </span><br />
双重检查锁定失效问题,一直是JMM无法避免的缺陷之一.了解DCL失效问题, 可以帮助我们深入JMM运行原理.</p>
<p>要展示DCL失效问题, 首先要理解一个重要概念- 延迟加载(lazy loading).</p>
<p>非单例的单线程延迟加载示例:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">class</span> Foo<br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">private</span> Resource res <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> Resource getResource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #666666; font-style: italic;">// 普通的延迟加载</span><br />
<br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>res <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">)</span><br />
<br />
res <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Resource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> res<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>非单例的 多线程延迟加载示例:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">Class</span> Foo<br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">Private</span> Resource res <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">Public</span> <span style="color: #000000; font-weight: bold;">synchronized</span> Resource getResource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #666666; font-style: italic;">// 获取实例操作使用同步方式, 性能不高</span><br />
<br />
<span style="color: #000000; font-weight: bold;">If</span> <span style="color: #009900;">(</span>res <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">)</span> res <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Resource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> res<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>非单例的 DCL多线程延迟加载示例:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">Class</span> Foo<br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">Private</span> Resource res <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">Public</span> Resource getResource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">If</span> <span style="color: #009900;">(</span>res <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #666666; font-style: italic;">//只有在第一次初始化时,才使用同步方式.</span><br />
<br />
<span style="color: #000000; font-weight: bold;">synchronized</span><span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">(</span>res <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #009900;">{</span><br />
<br />
res <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Resource<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> res<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>Double-Checked Locking看起来是非常完美的。但是很遗憾，根据Java的语言规范，上面的代码是不可靠的。</p>
<p>出现上述问题, 最重要的2个原因如下:<br />
1, 编译器优化了程序指令, 以加快cpu处理速度.<br />
2, 多核cpu动态调整指令顺序, 以加快并行运算能力.</p>
<p>问题出现的顺序:<br />
1, 线程A, 发现对象未实例化, 准备开始实例化<br />
2, 由于编译器优化了程序指令, 允许对象在构造函数未调用完前, 将 共享变量的引用指向 部分构造的对象, 虽然对象未完全实例化, 但已经不为null了.<br />
3, 线程B, 发现部分构造的对象已不是null, 则直接返回了该对象.</p>
<p>不过, 一些著名的开源框架, 包括jive,lenya等也都在使用DCL模式, 且未见一些极端异常.<br />
说明, DCL失效问题的出现率还是比较低的.<br />
接下来就是性能与稳定之间的选择了?</p>
<p><strong>DCL的替代 Initialize-On-Demand :</strong></p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Foo <span style="color: #009900;">{</span><br />
<br />
<span style="color: #666666; font-style: italic;">// 似有静态内部类, 只有当有引用时, 该类才会被装载</span><br />
<br />
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">class</span> LazyFoo <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> Foo foo <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Foo<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
&nbsp;<br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> Foo getInstance<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> LazyFoo.<span style="color: #006633;">foo</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>维基百科的DCL解释:</p>
<p>http://en.wikipedia.org/wiki/Double-checked_locking</p>
<p>DCL的完美解决方案:</p>
<p>http://www.theserverside.com/patterns/thread.tss?thread_id=39606</p>
<p>总结:<br />
多线程编程, 针对有写操作的变量, 必须 保证其所有引用点与主存中数据一致(考虑采用同步或volatile) .</p>
<p>原文链接：<a href="http://kenwublog.com/explain-java-memory-model-in-detail" rel="bookmark">http://kenwublog.com/explain-java-memory-model-in-detail</a></p>
<img src ="http://www.blogjava.net/zhuofan/aggbug/308754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-01-08 17:58 <a href="http://www.blogjava.net/zhuofan/articles/308754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)volatile原理与技巧</title><link>http://www.blogjava.net/zhuofan/articles/308753.html</link><dc:creator>卓凡</dc:creator><author>卓凡</author><pubDate>Fri, 08 Jan 2010 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/zhuofan/articles/308753.html</guid><wfw:comment>http://www.blogjava.net/zhuofan/comments/308753.html</wfw:comment><comments>http://www.blogjava.net/zhuofan/articles/308753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuofan/comments/commentRss/308753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuofan/services/trackbacks/308753.html</trackback:ping><description><![CDATA[<p><span style="font-size: 15px; font-weight: bold;"> volatile, 用更低的代价替代同步</span></p>
<p><strong>为什么 使用volatile比同步代价更低? </strong><br />
同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.</p>
<p>而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.</p>
<p><strong>volatile原理是什么?</strong><br />
volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)</p>
<p>因此, 当多核或多线程在访问该变量时, 都将直接 操作 主存, 这从本质上, 做到了变量共享.</p>
<p><strong>volatile的有什么优势? </strong><br />
1, 更大的程序吞吐量<br />
2, 更少的代码实现多线程<br />
3, 程序的伸缩性较好<br />
4, 比较好理解, 无需太高的学习成本</p>
<p><strong>volatile有什么劣势? </strong><br />
1, 容易出问题<br />
2, 比较难设计<br />
</p>
<p><span style="font-size: 15px; font-weight: bold;"> volatile运算存在脏数据问题 </span></p>
<p>volatile仅仅能保证变量可见性, 无法保证原子性.</p>
<p>volatile的race condition示例:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TestRaceCondition <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">volatile</span> <span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
<br />
&nbsp;<br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> increase<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
i<span style="color: #339933;">++;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
&nbsp;<br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> getValue<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> i<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p><strong>当多线程执行increase方法时, 是否能保证它的值会是线性递增的呢? </strong><br />
答案是否定的.</p>
<p>原因:<br />
这里的increase方法, 执行的操作是i++, 即 i = i + 1;<br />
针对i = i + 1, 在多线程中的运算, 本身需要改变i的值.<br />
如果, 在i已从内存中取到最新值, 但未与1进行运算, 此时其他线程已数次将运算结果赋值给i.<br />
则当前线程结束时, 之前的数次运算结果都将被覆盖.</p>
<p>即, 执行100次increase, 可能结果是 &lt; 100.<br />
一般来说, 这种情况需要较高的压力与并发情况下, 才会出现.</p>
<p><strong>如何避免这种情况? </strong><br />
解决以上问题的方法:<br />
一种是 操作时, 加上同步.<br />
这种方法, 无疑将大大降低程序性能, 且违背了volatile的初衷.</p>
<p>第二种方式是, 使用硬件原语(CAS), 实现非阻塞算法<br />
从CPU原语上,  支持变量级别的低开销同步.</p>
<p><span style="font-size: 15px; font-weight: bold;"> CPU原语-比较并交换(CompareAndSet),实现非阻塞算法 </span></p>
<p><strong>什么是CAS? </strong><br />
cas是现代CPU提供给并发程序使用的原语操作. 不同的CPU有不同的使用规范.</p>
<p>在 Intel 处理器中，比较并交换通过指令的 cmpxchg 系列实现。<br />
PowerPC 处理器有一对名为&#8220;加载并保留&#8221;和&#8220;条件存储&#8221;的指令，它们实现相同的目地；<br />
MIPS 与 PowerPC 处理器相似，除了第一个指令称为&#8220;加载链接&#8221;。</p>
<p>CAS 操作包含三个操作数 —— 内存位置（V）、预期原值（A）和新值(B)</p>
<p><strong>什么是非阻塞算法? </strong><br />
一个线程的失败或挂起不应该影响其他线程的失败或挂起.这类算法称之为非阻塞(nonblocking)算法</p>
<p>对比阻塞算法:<br />
如果有一类并发操作, 其中一个线程优先得到对象监视器的锁, 当其他线程到达同步边界时, 就会被阻塞.<br />
直到前一个线程释放掉锁后, 才可以继续竞争对象锁.(当然,这里的竞争也可是公平的, 按先来后到的次序)</p>
<p><strong>CAS 原理: </strong></p>
<p>我认为位置 V 应该包含值 A；如果包含该值，则将 B 放到这个位置；否则，不要更改该位置，只告诉我这个位置现在的值即可。</p>
<p>CAS使用示例(jdk 1.5 并发包 AtomicInteger类分析:)</p>
<div class="wp_syntax">
<div class="code">
<pre class="java" style="font-family: monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**<br />
<br />
* Atomically sets to the given value and returns the old value.<br />
<br />
*<br />
<br />
* @param newValue the new value<br />
<br />
* @return the previous value<br />
<br />
*/</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> getAndSet<span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> newValue<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">(</span><span style="color: #339933;">;;</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000066; font-weight: bold;">int</span> current <span style="color: #339933;">=</span> get<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>compareAndSet<span style="color: #009900;">(</span>current, newValue<span style="color: #009900;">)</span><span style="color: #009900;">)</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> current<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #009900;">}</span><br />
<br />
&nbsp;<br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">boolean</span> compareAndSet<span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> expect, <span style="color: #000066; font-weight: bold;">int</span> update<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">return</span> unsafe.<span style="color: #006633;">compareAndSwapInt</span><span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">this</span>, valueOffset, expect, update<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>这个方法是, AtomicInteger类的常用方法, 作用是, 将变量设置为指定值, 并返回设置前的值.<br />
它利用了cpu原语compareAndSet来保障值的唯一性.</p>
<p>另, AtomicInteger类中, 其他的实用方法, 也是基于同样的实现方式.<br />
比如 getAndIncrement, getAndDecrement, getAndAdd等等.</p>
<p><span style="font-size: 15px; font-weight: bold;"> CAS语义上存在的 &#8221; ABA 问题&#8221;</span></p>
<p><strong>什么是ABA问题?</strong><br />
假设, 第一次读取V地址的A值, 然后通过CAS来判断V地址的值是否仍旧为A, 如果是, 就将B的值写入V地址,覆盖A值.</p>
<p>但是, 语义上, 有一个漏洞, 当第一次读取V的A值, 此时, 内存V的值变为B值, 然后在未执行CAS前, 又变回了A值.<br />
此时, CAS再执行时, 会判断其正确的, 并进行赋值.</p>
<p>这种判断值的方式来断定内存是否被修改过, 针对某些问题, 是不适用的.</p>
<p>为了解决这种问题, jdk 1.5并发包提供了AtomicStampedReference(有标记的原子引用)类, 通过控制变量值的版本来保证CAS正确性.</p>
<p>其实, 大部分通过值的变化来CAS, 已经够用了.</p>
<p><span style="font-size: 15px; font-weight: bold;"> jdk1.5原子包介绍(基于volatile) </span></p>
<p>包的特色:<br />
1, 普通原子数值类型AtomicInteger, AtomicLong提供一些原子操作的加减运算.</p>
<p>2, 使用了解决脏数据问题的经典模式-&#8221;比对后设定&#8221;, 即 查看主存中数据是否与预期提供的值一致,如果一致,才更新.</p>
<p>3, 使用AtomicReference可以实现对所有对象的原子引用及赋值.包括Double与Float,<br />
但不包括对其的计算.浮点的计算,只能依靠同步关键字或Lock接口来实现了.</p>
<p>4, 对数组元素里的对象,符合以上特点的, 也可采用原子操作.包里提供了一些数组原子操作类<br />
AtomicIntegerArray, AtomicLongArray等等.</p>
<p>5, 大幅度提升系统吞吐量及性能.</p>
<p>具体使用, 详解java doc.</p>
<p>原文链接：<a href="http://kenwublog.com/the-theory-of-volatile" rel="bookmark">http://kenwublog.com/the-theory-of-volatile</a></p>
<img src ="http://www.blogjava.net/zhuofan/aggbug/308753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuofan/" target="_blank">卓凡</a> 2010-01-08 17:57 <a href="http://www.blogjava.net/zhuofan/articles/308753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>