﻿<?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-我的自留地-文章分类-programmer</title><link>http://www.blogjava.net/lukangping/category/40917.html</link><description>积累。。。沉淀。。。</description><language>zh-cn</language><lastBuildDate>Wed, 23 Feb 2011 23:37:37 GMT</lastBuildDate><pubDate>Wed, 23 Feb 2011 23:37:37 GMT</pubDate><ttl>60</ttl><item><title>ASCII GBK2312 GBK | UNICODE UTF-8 UTF-16 区别 关系</title><link>http://www.blogjava.net/lukangping/articles/340963.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Fri, 17 Dec 2010 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/340963.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/340963.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/340963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/340963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/340963.html</trackback:ping><description><![CDATA[<p><font style="background-color: #cce8cc"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">ASCII是最初的计算机指定的一套符号编码，使用一个字节其中的7位，128个数值代表不同字符，对于英语这个已经是足够，<br />
但是对于其他国家的语言，却远远不够，如汉语，日语，韩语，所以就出现了非ASCII的字符编码，如gbk2312，gbk的汉字编码。这些非ascii的编码都是兼容ascii128个符号编码的。<br />
<br />
------------------------------------------------------------------------------------------------------------------------------------------------------<br />
<br />
UNICODE首先只是一个字符集，它的出现就是因为各个国家出台自己的语言编码，为了统一这些所有语言，可以理解unicode是涵盖各个国家字符的集合，现在的规模可以容纳100多万个符号。<span style="font-size: 12px; font-family: Verdana; border-collapse: collapse"><span style="font-size: 12pt">需要说明的是，定长编码便于计算机处理（注意GB2312/GBK不是定长编码），而unicode又可以用来表示所有字符，所以在很多软件内部是使用unicode编码来处理的，比如java。</span></span><br />
unicode只是一个符号集，只规定了符号的二进制代码，却没有规定这个二进制代码应该如何存储，即编码方式，常见的有utf-8和utf-16。<br />
（如果unicode规定，每个符号用三个字节表示，那么英文字母只占用一个字节，就浪费很多存储空间。）<br />
UTF-8就是一种变长的编码方式，它使用1~4个字节表示一个符号，根据不同的符号而变化字节长度。<br />
<br />
<br />
我们常用的记事本功能，在"save as"的时候，可以选择不同的编码方式，里面有四个选择：ansi，unicode，unicode big endian，utf-8：<br />
</span></span></span></span></span><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2"><span style="font-size: 12px; font-family: song, Verdana; border-collapse: collapse"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt"><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 10pt"><span style="font-size: 12pt">1.ANSI是默认的编码方式。对于英文文件是ASCII编码，对于简体中文文件是GB2312编码（只针对Windows简体中文版，如果是繁体中文版会采用Big5码）。<br />
</span></span></span></span><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 12pt">2.Unicode编码指的是UCS-2编码方式，即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。</span></span></span></span></span></span></span></span></span></span></span></span></font></p>
<font style="background-color: #cce8cc">
<p style="font: 12px song, Verdana"><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">3.Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big endian的涵义。</span></span></span></span></span></span></span></span></span></span></p>
<p style="font: 12px song, Verdana"><span style="font-family: 宋体"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">4.UTF-8编码，也就是上一节谈到的编码方法。</span></span></span></span></span></span></span></span></span></span></p>
</font>
<p><font style="background-color: #cce8cc"><br />
<br />
<span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">参考：<br />
<br />
</span></span></span></span></span><a href="http://www.cnblogs.com/pony/archive/2009/02/05/1384323.html"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">http://www.cnblogs.com/pony/archive/2009/02/05/1384323.html</span></span></span></span></span></a><br />
<a style="color: #002c99; text-decoration: none" href="http://blog.chinaunix.net/u1/56156/showart_2245355.html"><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">http://blog.chinaunix.net/u1/56156/showart_2245355.html</span></span></span></span></span></a><span style="background-color: #ffffff"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt"> <br />
</span></span></span></span><a href="http://liaoshaoyao.javaeye.com/blog/667056"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 36pt"><span style="font-size: 12pt">http://liaoshaoyao.javaeye.com/blog/667056</span></span></span></span></a><br />
</span></font></p>
<img src ="http://www.blogjava.net/lukangping/aggbug/340963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2010-12-17 10:50 <a href="http://www.blogjava.net/lukangping/articles/340963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MD5 DSA RSA 简单 区别</title><link>http://www.blogjava.net/lukangping/articles/340866.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Thu, 16 Dec 2010 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/340866.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/340866.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/340866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/340866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/340866.html</trackback:ping><description><![CDATA[MD5是一种摘要生成算法，本来不能用于签名，但是在待签名数据之后加上一串私密内容，即散列码，就可以用于签名了。但是md5只能做到防篡改的功能，不能做到防抵赖，因为这串私密内容双方是都知道的。<br />
<br />
DSA和RSA是一种非对称加密算发，签名密钥分为公钥和私钥。私钥用于加密，公钥用于验证签名。使用这种算法的签名即起到防篡改的功能，又起到防抵赖的作用。因为私钥只有签名者自己独有。<br />
<br />
<img src ="http://www.blogjava.net/lukangping/aggbug/340866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2010-12-16 11:43 <a href="http://www.blogjava.net/lukangping/articles/340866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 唯一 索引 约束 创建 删除</title><link>http://www.blogjava.net/lukangping/articles/340683.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Tue, 14 Dec 2010 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/340683.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/340683.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/340683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/340683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/340683.html</trackback:ping><description><![CDATA[<span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 22px; ">
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*给创建bitmap index分配的内存空间参数，以加速建索引*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">show parameter create_bit;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*改变索引的存储参数*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name pctfree 30 storage(initial 200k next 200k);</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*给索引手工分配一个分区*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name allocate extent (size 200k datafile '$ORACLE/oradata/..');</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*释放索引中没用的空间*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name deallocate unused;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*索引重建*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><font color="#0000ff" style="line-height: 22px; ">alter index index_name rebuild tablespace tablespace_name;</font></p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*普通索引和反转索引的互换*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name rebuild tablespace tablespace_name reverse;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*重建索引时，不锁表*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name rebuild online;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*给索引整理碎片*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name COALESCE;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*分析索引,事实上是更新统计的过程*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">analyze index index_name validate structure;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">desc index_state;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">drop index index_name;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name monitoring usage;-----监视索引是否被用到</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter index index_name nomonitoring usage;----取消监视</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*有关索引信息的视图*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">select * from dba_indexes/dba_ind_columns/dbs_ind_eXPressions/v$object_usage;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">########## 数据完整性的治理(Maintaining data integrity) ##########</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name drop constraint constraint_name;----drop 约束</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name add constraint constraint_name primary key(column_name1,column_name2);-----创建主键</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name add constraint constraint_name unique(column_name1,column_name2);---创建唯一约束</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*创建外键约束*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name add constraint constraint_name foreign key(column_name1) references table_name(column_name1);</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*不效验老数据，只约束新的数据[enable/disable：约束/不约束新数据;novalidate/validate:不对/对老数据进行验证]*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name add constraint constraint_name check(column_name like 'B%') enable/disable novalidate/validate;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*修改约束条件，延时验证，commit时验证*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name modify constraint constraint_name initially deferred;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*修改约束条件，立即验证*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name modify constraint constraint_name initially immediate;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter session set constraints=deferred/immediate;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*drop一个有外键的主键表,带cascade constraints参数级联删除*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">drop table table_name cascade constraints;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*当truncate外键表时，先将外键设为无效，再truncate;*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">truncate table table_name;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">/*设约束条件无效*/</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name disable constraint constraint_name;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">alter table table_name enable novalidate constraint constraint_name;</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br />
</p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">简洁实用，谢谢<span style="font-family: Simsun; line-height: normal; font-size: medium; "><a href="http://wfly2004.blog.163.com/blog/static/11764272010629114155174/">http://wfly2004.blog.163.com/blog/static/11764272010629114155174/</a></span></p>
<p style="line-height: 22px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><a href="http://hi.baidu.com/zhangcheng1/blog/item/54deb0cc9ab69d1701e9281e.html">http://hi.baidu.com/zhangcheng1/blog/item/54deb0cc9ab69d1701e9281e.html</a></p>
</span>
<img src ="http://www.blogjava.net/lukangping/aggbug/340683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2010-12-14 17:45 <a href="http://www.blogjava.net/lukangping/articles/340683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux grep awk 用法 语法 命令</title><link>http://www.blogjava.net/lukangping/articles/340418.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sun, 12 Dec 2010 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/340418.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/340418.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/340418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/340418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/340418.html</trackback:ping><description><![CDATA[<br />
<div>找到一份比较清楚的文章：</div>
<div><a href="http://blog.csdn.net/weekly123/archive/2006/12/28/1465675.aspx" style="color: #002c99; text-decoration: none; ">http://blog.csdn.net/weekly123/archive/2006/12/28/1465675.aspx</a></div>
<div>同事写过的记录数组的用法，很棒！</div>
<div>|grep ","|awk -F "," &nbsp;'{print $10}'| awk -F ":" '{hist[$1]++} END{for(i in hist) printf "%s %d\n", i, hist[i]}'</div>
<img src ="http://www.blogjava.net/lukangping/aggbug/340418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2010-12-12 20:44 <a href="http://www.blogjava.net/lukangping/articles/340418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>#重操PHP# 服务器端脚本语言</title><link>http://www.blogjava.net/lukangping/articles/340396.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sun, 12 Dec 2010 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/340396.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/340396.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/340396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/340396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/340396.html</trackback:ping><description><![CDATA[早上去博库看了一会PHP+Mysql核心开发的书，研一的时候就是这本书搞定的课程设计。
<div>php，服务器端脚本语言。每次请求之后，先由web服务器解释执行后，在以html输出到客户端。</div>
<div>相对于java sverlet容器的tomcat，php的编译引擎可以嵌入到apache或iis这类web服务器中。</div>
<img src ="http://www.blogjava.net/lukangping/aggbug/340396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2010-12-12 15:57 <a href="http://www.blogjava.net/lukangping/articles/340396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE学习中一些值得研究的开源项目</title><link>http://www.blogjava.net/lukangping/articles/291292.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sat, 15 Aug 2009 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/291292.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/291292.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/291292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/291292.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/291292.html</trackback:ping><description><![CDATA[<p><span>这篇文章写在我研究J2SE、J2EE近三年后。前3年我研究了J2SE的Swing、Applet、Net、RMI、Collections、IO、JNI&#8230;&#8230;研究了J2EE的JDBC、Sevlet、JSP、JNDI&#8230;..不久我发现这些好像太浮浅了：首先，我发现自己知道的仅仅是java提供的大量的API，根本不能很好地使用它; 其次，我根本就没有学到任何有助于写程序的知识，此时我也只不过能写个几页的小程序。出于这个幼稚的想法我研究了JDK中Collections、Logger、IO&#8230;..的源代码，发现这个世界真的很神奇，竟然有如此的高手――利用java语言最最基本的语法，创造了这些优秀的Framework。</span></p>
<p><span>从此一发不可收拾，我继续研究了J2EE的部分，又发现这是一个我根本不能理解的方向(曾经有半年停滞不前)，为什么只有接口没有实现啊!后来由于一直使用Tomcat、Derby等软件突然发现：哦!原来J2EE仅仅是一个标准，只是一个架构。真正的实现是不同提供商提供的。</span></p>
<p><span>接着我研究了MOM4J、OpenJMS、Mocki、HSQLD&#8230;&#8230;发现这些就是J2EE的实现啊!原来软件竟会如此复杂，竟会如此做&#8230;.规范和实现又是如何成为一体的呢?通过上面的研究发现：原来J2EE后面竟然有太多太多理念、太多太多的相似!这些相似就是其背后的理念――设计模式!(很幸运，在我学java的时候，我一般学java的一个方向就会读一些关于设计模式的书!很幸运，到能领略一点的时候能真正知道这是为什么!)其实模式就是一种思维方式、就是一种理念&#8230;&#8230;模式是要运用到程序中的，只有从真正的项目中才能领会模式的含义&#8230;&#8230;<br />
学得越多，发现懂得越少!在学习过程中发现一些很有用，很值得学习的开源项目，今天在此推荐给大家。</span></p>
<p><span>一、JavaServlet和JSP方向</span></p>
<p><span>很多人都是从Servlet和JSP步入J2EE的。它就是J2EE的表现层，用于向客户呈现服务器上的内容。J2EE很重要的方面。不罗嗦了!大家都知道的!下面就开始推荐吧!</span></p>
<p><span>1. Jakarta Tomcat</span></p>
<p><span>Apache基金会提供的免费的开源的Serlvet容器，它是的Jakarta项目中的一个核心项目，由Apache、Sun和其它一些公司(都是IT界的大鳄哦)及个人共同开发而成，全世界绝大部分Servlet和Jsp的容器都是使用它哦!由于Sun的参与和支持，最新的Servlet和Jsp规范总能在Tomcat中得到体现。</span></p>
<p><span>不过它是一个非常非常全的Serlvet容器，全部源码可能有4000页，对于初学者或者一般的老手可能还是比较大了!在你有能力时推荐研究!下载地址：http://jakarta.apache.org/tomcat/index.html</span></p>
<p><span>下面推荐两个小一点的吧!</span></p>
<p><span>2. Jetty</span></p>
<p><span>Jetty是一个开放源码的HTTP服务器和Java serverlet容器。源代码只有1000页左右，很值得研究。有兴趣可以去http://jetty.mortbay.com/下载看看。我曾经翻了一下，只是目前没有时间。(都化在博客上了，等博客基本定型，且内容完整了，再干我热衷的事件吧!)</span></p>
<p><span>3. Jigsaw</span></p>
<p><span>Jigsaw是W3C开发的HTTP，基于Java 的服务器，提供了未来 Web 技术发展的蓝图。W3C知道吧!(太有名气了，很多标准都是它制订的!有空经常去看看吧!)下载网址：http://www.w3.org/Jigsaw代码仅仅1000页左右。</span></p>
<p><span>4. Jo!</span></p>
<p><span>Jo!是一个纯Java的实现了Servlet API 2.2, JSP 1.1, 和HTTP/1.1的Web服务器。它的特性包括支持servlet tag,支持SSI，高级线程管理，虚拟主机，数据缓存，自动压缩text或HTML文件进行传输，国际化支持，自动重新加载Servlet、Jsp，自动重新加载web工程文件(WARs)，支持WAR热部署和一个Swing控制台。jo!可以被用做jboss和jakarta avalon-phoenix的web容器。下载地址http://www.tagtraum.com/ 。我极力推荐大家在研究Tomcat之前研究该软件，主要是其比Tomcat小多了，且开发者提供比较全的手册。该方向研究这两个也就可以了!</span></p>
<p><span>二、JDBC方向</span></p>
<p><span>很多人都喜欢JDBC，数据库吗!很深奥的东西，一听就可以糊弄人。其实等你真正研究了数据库的实现后发现，接口其实真的太简单，太完美了!要想设计如此优秀的框架还是需要学习的。下面就推荐几个数据库的实现吧!</span></p>
<p><span>1. Hypersonic SQL</span></p>
<p><span>Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库。好像不是JDBC兼容的，JDBC的很多高级的特性都没有支持，不过幸好支持ANSI-92 标准 SQL语法。我推荐它主要是它的代码比较少1600页左右，如此小的数据库值得研究，而且他占的空间很小，大约只有160K，拥有快速的数据库引擎。推荐你的第一个开源数据库。下载地址：http://hsqldb.sourceforge.net/。</span></p>
<p><span>2. Mckoi DataBase</span></p>
<p><span>McKoiDB 和Hypersonic SQL差不多，它是GPL 的license的纯Java开发的数据库。他的 JDBC Driver 是使用 JDBC version 3 的 Specifaction。 他也是遵循 SQL-92 的标准，也尽量支持新的 SQL 特色, 并且支持 Transaction 的功能。两个可以选一个吧!下载地址：http://mckoi.com/database/。</span></p>
<p><span>3. Apache Derby</span></p>
<p><span>学Java的数据库我建议使用Apache Derby ，研究数据库想成为一个数据库的高手我建议你先研究Apache Derby。Apache Derby是一个高质量的、纯 Java开发的嵌入式关系数据库引擎，IBM&#174; 将其捐献给Apache开放源码社区，同时IBM的产品CloudSpace是它对应的产品。Derby是基于文件系统，具有高度的可移植性，并且是轻量级的，这使得它非常便于发布。主要是没有商业用户的很好的界面，没有其太多的功能。不过对于我们使用数据库、研究数据库还是极其有用的。对于中小型的企业说老实话你也不要用什么Oracle、SqlServer了，用Derby就可以了，何况是开源的呢!只要能发挥其长处也不容易啊!下载地址：http://incubator.apache.org/derby。</span></p>
<p><span>不过在没有足够的能力前，不要试图读懂它!注释和源代码15000页左右，我一年的阅读量!能读下来并且能真正领会它，绝对高手!你能读完Derby的源代码只有两种可能：1.你成为顶尖的高手――至少是数据库这部分; 2.你疯了。选择吧!!!!作为我自己我先选择Hypersonic SQL这样的数据库先研究，能过这一关，再继续研究Derby!不就是一年的阅读量吗!我可以化3年去研究如何做一个数据库其实还是很值得的!有的人搞IT一辈子自己什么都没有做，也根本没有研究别人的东西!</span></p>
<p><span>作为一个IT落后于别国若干年的、从事IT的下游产业&#8220;外包&#8221;的国家的IT从业人员，我认为还是先研究别人的优秀的东西比较好!可以先研究别人的，然后消化，学为己用!一心闭门造车实在遗憾!</span></p>
<p><span>三、JMS方向</span></p>
<p><span>JMS可能对大家来说是一个比较陌生的方向!其实JMS是一个比较容易理解，容易上手的方向。主要是Java消息服务，API也是相当简单的。不过在企业应用中相当广泛。下面就介绍几个吧!</span></p>
<p><span>1. MOM4J</span></p>
<p><span>MOM4J是一个完全实现JMS1.1规范的消息中间件并且向下兼容JMS1.0与1.02。它提供了自己的消息处理存储使它独立于关系数据与语言，它的客户端可以用任何语言开发。它可以算是一个小麻雀，很全实现也比较简单!它包含一个命名服务器，一个消息服务器，同时提供自己的持续层。设计也相当的巧妙，完全利用操作系统中文件系统设计的观念。代码也很少，250页左右，最近我在写该实现的源代码阅读方面的书，希望明年年中能与大家见面!下载地址：http://mom4j.sourceforge.net/index.html。</span></p>
<p><span>2. OpenJMS</span></p>
<p><span>OpenJMS是一个开源的Java Message Service API 1.0.2 规范的实现，它包含有以下特性：<br />
1. 它既支持点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。</span></p>
<p><span>2. 支持同步与异步消息发送 。</span></p>
<p><span>3. JDBC持久性管理使用数据库表来存储消息 。</span></p>
<p><span>4. 可视化管理界面。</span></p>
<p><span>5. Applet支持。</span></p>
<p><span>6. 能够与Jakarta Tomcat这样的Servlet容器结合。</span></p>
<p><span>7. 支持RMI, TCP, HTTP 与SSL协议。</span></p>
<p><span>8. 客户端验证 。</span></p>
<p><span>9. 提供可靠消息传输、事务和消息过滤。</span></p>
<p><span>很好的JMS方向的开源项目!我目前也在研究它的源代码!学习它可以顺便研究JNDI的实现、以及网络通信的细节。这是我JMS方向研究的第二个开源项目。代码量1600页左右吧!下载地址：http://openjms.sourceforge.net/index.html</span></p>
<p><span>3. ActiveMQ</span></p>
<p><span>ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1。它能够与Geronimo，轻量级容器和任Java应用程序无缝的给合。主要是Apache的可以任意的使用和发布哦!个人比较喜欢Apache的源代码!下载地址：http://activemq.codehaus.org/</span></p>
<p><span>4. JORAM</span></p>
<p><span>JORAM一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。ObjectWeb的产品也是非常值得研究的!下面我还会给大家另外一个ObjectWeb的产品。下载地址：http://joram.objectweb.org/</span></p>
<p><span>我个人推荐：OpenJMS和ActiveMQ!</span></p>
<p><span>四、EJB方向</span></p>
<p><span>EJB一个比较&#8220;高级&#8221;的方向。Sun公司曾经以此在分布式计算领域重拳出击。不过自从出现了Spring、Hibernation&#8230;&#8230;后似乎没落了!这个方向单独开源的也比较少，主要EJB是和JNDI、JDBC、JMS、JTS、JTA结合在一起的是以很少有单独的。下面推荐两个不过好像也要下载其它类库。</span></p>
<p><span>1. EasyBeans</span></p>
<p><span>ObjectWeb的一个新的项目，一个轻量级的EJB3容器，虽然还没有正式发布，但是已经可以从它们的subversion仓库中检出代码。代码量比较小600页左右，熟读它可以对网络编程、架构、RMI、容器的状态设计比较了解了!即学会EJB又能学习其它设计方法何乐而不为哦!下载地址：http://easybeans.objectweb.org/<br />
2. OpenEJB</span></p>
<p><span>OpenEJB是一个预生成的、自包含的、可移植的EJB容器系统，可以被插入到任意的服务器环境，包括应用程序服务器，Web服务器，J2EE平台， CORBA ORB和数据库等等。OpenEJB 被用于 Apple的WebObjects。听起来很好，我目前没有研究过。不知道我就不推荐了。下载地址：http://www.openejb.org/</span></p>
<p><span>五、J2EE容器</span></p>
<p><span>上面谈了这么多，都是J2EE的各个方向的。其实J2EE是一个规范，J2EE的产品一般要求专业提供商必须提供它们的实现。这些实现本身就是J2EE容器。市场上流行的J2EE容器很多，在开源领域流行的只有很少，很少。其中最著名的是JBoss。</span></p>
<p><span>1. JBoss</span></p>
<p><span>在J2EE应用服务器领域，Jboss是发展最为迅速的应用服务器。由于Jboss遵循商业友好的LGPL授权分发，并且由开源社区开发，这使得Jboss广为流行。另外，Jboss应用服务器还具有许多优秀的特质。</span></p>
<p><span>其一，它将具有革命性的JMX微内核服务作为其总线结构;</span></p>
<p><span>其二，它本身就是面向服务的架构(Service-Oriented Architecture，SOA);</span></p>
<p><span>其三，它还具有统一的类装载器，从而能够实现应用的热部署和热卸载能力。因此，它是高度模块化的和松耦合的。Jboss用户的积极反馈告诉我们，Jboss应用服务器是健壮的、高质量的，而且还具有良好的性能。为满足企业级市场日益增长的需求，Jboss公司从2003年开始就推出了24*7、专业级产品支持服务。同时，为拓展Jboss的企业级市场，Jboss公司还签订了许多渠道合作伙伴。比如，Jboss公司同HP、Novell、Computer Associates、Unisys等都是合作伙伴。</span></p>
<p><span>在2004年6月，Jboss公司宣布，Jboss应用服务器通过了Sun公司的J2EE认证。这是Jboss应用服务器发展史上至今为止最重要的里程碑。与此同时，Jboss一直在紧跟最新的J2EE规范，而且在某些技术领域引领J2EE规范的开发。因此，无论在商业领域，还是在开源社区，Jboss成为了第一个通过J2EE 1.4认证的主流应用服务器。现在，Jboss应用服务器已经真正发展成具有企业强度(即，支持关键级任务的应用)的应用服务器。</span></p>
<p><span>Jboss 4.0作为J2EE认证的重要成果之一，已经于2004年9月顺利发布了。同时，Jboss 4.0还提供了Jboss AOP(Aspect-Oriented Programming，面向方面编程)组件。近来，AOP吸引了大量开发者的关注。它提供的新的编程模式使得用户能够将方面(比如，事务)从底层业务逻辑中分离出来，从而能够缩短软件开发周期。用户能够单独使用Jboss AOP，即能够在Jboss应用服务器外部使用它。或者，用户也可以在应用服务器环境中使用它。Jboss AOP 1.0已经在2004年10月发布了。 很有名吧!可以下载一个用一下，下载地址：http://www.jboss.org/</span></p>
<p><span>关于JBoss的使用资料也非常多，甚至比商业软件的还多。有机会研究吧!</span></p>
<p><span>2. JOnAS</span></p>
<p><span>JOnAS是一个开放源代码的J2EE实现，在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器，以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API：JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。下载地址：http://jonas.objectweb.org/<br />
3.Apache Geronimo</span></p>
<p><span>Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器，它集成了众多先进技术和设计理念。 这些技术和理念大多源自独立的项目，配置和部署模型也各不相同。 Geronimo能将这些项目和方法的配置及部署完全整合到一个统一、易用的模型中。作为符合J2EE标准的服务器，Geronimo提供了丰富的功能集和无责任 Apache 许可，具备&#8220;立即部署&#8221;式J2EE 1.4容器的各种优点，其中包括：</span></p>
<p><span>1. 符合J2EE1.4标准的服务器 。</span></p>
<p><span>2. 预集成的开放源码项目 。</span></p>
<p><span>3. 统一的集成模型 。</span></p>
<p><span>4. 可伸缩性、可管理性和配置管理功能。</span></p>
<p><span>我一直比较推荐Apache的产品。主要是可以任意自由地使用。下载地址：http://incubator.apache.org/projects/geronimo/</span></p>
<p><span>六、其它</span></p>
<p><span>讲了这么多大家可能很厌烦了!是不是很多很多啊!其实不然，我们不会的太多太多了!不会的太多太多了。不管你是不是J2EE高手，还是J2SE高手，有些东西你要绝对很精明的。例如：1.Java的Collections Framework就是java的数据结构了，不仅要吃透它，还要能按照需要扩展它，利用其思想创建一个自己的数据结构。2.网络编程肯定要会吧，现在以及以后很多程序都是不在同一台机器上的，不会网络怎么行哦!3.IO肯定要会的吧!你的程序难道不用输入输出数据啊!整个IO包加NIO也有600多页的源代码哦!4.JDBC你要会吧!数据库都不会，在你的企业应用中你的数据又保存到哪里啊!文件中――太落后了吧!典型的没有学过J2EE。尽管数据库背后也是采用文件保存的。5.Serverlet、JSp你要是做网页做网站，肯定要做到。问你一个简单的问题，网页中如何实现分页啊!有具体方法的就在本文章后发言吧!6. Ant要会吧!java语言中发布的工具，类似与c中的make工具。7.JUnit用过吧!单元测试软件。你不要啊!你的软件就没有bug!你牛!(<strong>建议大家研究研究其源代码，很有用的框架，包含大量的设计模式，源代码不到100页!看了只能感叹――高手就是高手</strong>)细心的朋友可以看到在你使用的很多IDE工具中都有JUnit哦!就是它。</span></p>
<p><span>一切的一切才刚刚开始!有兴趣，有需要你可以研究数据库连接池的框架，如：C3P0、Jakarta DBCP、 DBPool&#8230;.可以研究J2EE框架Spring&#8230;&#8230;. Web框架Struts&#8230;&#8230;持久层框架Hibernate&#8230;..甚至开发工具Eclipse&#8230;..Sun领导的点对点通信的JXTA&#8230;..报表工具JFreeChart、JasperReports&#8230;..分布式网络编程的CORBA、网络通信的JGROUPS、XML解析的xerces&#8230;..(在不经意间开源已经步入你的电脑，不信啊!你JDK的安装目录jdk1.6.0 src com sun org apache就是Xerces，一个XML解析的著名的开源 项目)</span></p>
<p><span>不管怎么样我还是建议从基本的做起，学精J2SE，熟读它的源码，准确了解其设计理念，然后分头击破J2EE――一口吃不成一个胖子!不要贪多贪广!脚踏实地就可以了!<br />
<br />
摘自CSDN：<a href="http://java.csdn.net/index.php/2009/08/07/j2ee%e5%ad%a6%e4%b9%a0%e4%b8%ad%e4%b8%80%e4%ba%9b%e5%80%bc%e5%be%97%e7%a0%94%e7%a9%b6%e7%9a%84%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae/">《J2EE值得学习的开源项目》</a></span></p>
<img src ="http://www.blogjava.net/lukangping/aggbug/291292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2009-08-15 21:49 <a href="http://www.blogjava.net/lukangping/articles/291292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个java程序员应该掌握的十项基本技能</title><link>http://www.blogjava.net/lukangping/articles/291291.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sat, 15 Aug 2009 13:40:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/291291.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/291291.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/291291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/291291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/291291.html</trackback:ping><description><![CDATA[<p><span>1、语法：必须比较熟悉，在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。</span></p>
<p><span>2、命令：必须熟悉JDK带的一些常用命令及其常用选项，命令至少需要熟悉：appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver，如果这些命令你没有全部使用过，那么你对java实际上还很不了解。</span></p>
<p><span>3、工具：必须至少熟练使用一种IDE的开发工具，例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop，包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。</span></p>
<p><span>4、API：Java的核心API是非常庞大的，但是有一些内容笔者认为是必须熟悉的，否则不可能熟练的运用Java，包括：<br />
◆java.lang包下的80％以上的类的功能的灵活运用。</span></p>
<p><span>◆java.util包下的80％以上的类的灵活运用，特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer.</span></p>
<p><span>◆java.io包下的60％以上的类的使用，理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。</span></p>
<p><span>◆java.math包下的100％的内容。</span></p>
<p><span>◆java.net包下的60％以上的内容，对各个类的功能比较熟悉。</span></p>
<p><span>◆java.text包下的60％以上的内容，特别是各种格式化类。</span></p>
<p><span>◆熟练运用JDBC. 8）、java.security包下40％以上的内容，如果对于安全没有接触的话根本就不可能掌握java.</span></p>
<p><span>◆AWT的基本内容，包括各种组件事件、监听器、布局管理器、常用组件、打印。</span></p>
<p><span>◆Swing的基本内容，和AWT的要求类似。</span></p>
<p><span>◆XML处理，熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。</span></p>
<p><span>5、测试：必须熟悉使用junit编写测试用例完成代码的自动测试。</span></p>
<p><span>6、管理：必须熟悉使用ant完成工程管理的常用任务，例如工程编译、生成javadoc、生成jar、版本控制、自动测试。</span></p>
<p><span>7、排错：应该可以根据异常信息比较快速的定位问题的原因和大致位置。</span></p>
<p><span>8、思想：必须掌握OOP的主要要求，这样使用Java开发的系统才能是真正的Java系统。</span></p>
<p><span>9、规范：编写的代码必须符合流行的编码规范，例如类名首字母大写，成员和方法名首字母小写，方法名的第一个单词一般是动词，包名全部小写等，这样程序的可读性才比较好。</span></p>
<p><span>10、博学：掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术，掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。<br />
<br />
摘录自CSDN：</span><a href="http://java.csdn.net/index.php/2009/08/07/j2ee%e5%ad%a6%e4%b9%a0%e4%b8%ad%e4%b8%80%e4%ba%9b%e5%80%bc%e5%be%97%e7%a0%94%e7%a9%b6%e7%9a%84%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae/">《一个java程序员的10项技能》</a></p>
<img src ="http://www.blogjava.net/lukangping/aggbug/291291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2009-08-15 21:40 <a href="http://www.blogjava.net/lukangping/articles/291291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成为java高手的25个学习要点</title><link>http://www.blogjava.net/lukangping/articles/289494.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sun, 02 Aug 2009 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/289494.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/289494.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/289494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/289494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/289494.html</trackback:ping><description><![CDATA[<font style="background-color: #ffffff">
<p>1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF，J2EEDP)以及综合模式。你应该了解UML，尤其是class，object，interaction以及statediagrams。 </p>
<p>2.你需要学习Java语言的基础知识以及它的核心类库 (collections，serialization，streams，networking，?multithreading，reflection，event，handling，NIO，localization，以及其他)。　　3.你应该了解JVM，classloaders，classreflect，以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。 </p>
<p>4.如果你将要写客户端程序，你需要学习Web的小应用程序(applet)，必需掌握 GUI设计的思想和方法，以及桌面程序的SWING，AWT，?SWT。你还应该对UI部件的JavaBEAN组件模式有所了解。JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。 </p>
<p>5.你需要学习Java数据库技术，并且会使用至少一种persistence/ORM构架，例如Hibernate，JDO，?CocoBase，TopLink，InsideLiberator(国产JDO红工厂软件)或者iBatis。 </p>
<p>6.你还应该了解对象关系的阻抗失配的含义，以及它是如何影响业务对象的与关系型数据库的交互，和它的运行结果，还需要掌握不同的数据库产品运用，比如racle，mysql，mssqlserver。 </p>
<p>7.你需要学习Servlets，JSP，以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。 </p>
<p>8.你需要熟悉主流的网页框架，例如JSF，Struts，Tapestry，Cocoon，WebWork，以及他们下面的涉及模式，如MVC/MODEL2。 </p>
<p>9.你需要学习如何使用及管理Web服务器，例如tomcat，resin，Jrun，并且知道如何在其基础上扩展和维护Web程序。 </p>
<p>10.你需要学习分布式对象以及远程API，例如RMI和RMI/IIOP。 </p>
<p>11.你需要掌握各种流行中间件技术标准和与Java结合实现，比如Tuxedo、CROBA，当然也包括JavaEE本身。 </p>
<p>12.你需要学习最少一种的XMLAPI，例如JAXP(JavaAPIforXMLProcessing)，JDOM(JavaforXMLDocumentObjectModel)，DOM4J，或JAXR(JavaAPIforXMLRegistries)。 </p>
<p>13.你应该学习如何利用Java的API和工具来构建WebService。例如JAX- RPC(JavaAPIforXML/RPC)，SAAJ? (SOAPwithAttachmentsAPIforJava)，JAXB(JavaArchitectureforXMLBinding)，JAXM(JavaAPIforXMLMessaging)，?JAXR(JavaAPIforXMLRegistries)，或者JWSDP(JavaWebServicesDeveloperPack)。 </p>
<p>14.你需要学习一门轻量级应用程序框架，例如Spring，PicoContainer，Avalon，以及它们的IoC/DI风格(setter，constructor，interfaceinjection)。 </p>
<p>15.你需要熟悉不同的J2EE技术，例如 JNDI(JavaNamingandDirectoryInterface)，JMS? (JavaMessageService)，JTA/JTS(JavaTransactionAPI /JavaTransactionService)，JMX?(JavaManagementeXtensions)，以及JavaMail。　　16. 你需要学习企业级JavaBeans(EJB)以及它们的不同组件模式：Stateless/StatefulSessionBeans，EntityBeans(包含 Bean-?ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB- QL)，或者?Message-DrivenBeans(MDB)。 </p>
<p>17.你需要学习如何管理与配置一个J2EE应用程序服务器，如WebLogic，JBoss等，并且利用它的附加服务，例如簇类，连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。 </p>
<p>18.你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP)，以及他们的主流Java规格和执行。例如AspectJ和AspectWerkz。 </p>
<p>19.你需要熟悉对不同有用的API和framework等来为你服务。例如 Log4J(logging/tracing)，Quartz? (scheduling)，JGroups(networkgroupcommunication)，JCache(distributedcaching)，?Lucene(full- textsearch)，JakartaCommons等等。 </p>
<p>20.你应该熟练掌握一种JavaIDE例如sunOne，netBeans，IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了：) </p>
<p>21.Java(精确的说是有些配置)是冗长的，它需要很多的人工代码(例如EJB)，所以你需要熟悉代码生成工具，例如XDoclet。 </p>
<p>22.你需要熟悉一种单元测试体系(JNunit)，并且学习不同的生成、部署工具(Ant，Maven)。 </p>
<p>23.你需要熟悉一些在Java开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。 </p>
<p>24.你还需要紧跟Java发展的步伐，比如现在可以深入的学习Webwork2.0 </p>
<p>25.你必需要对实际项目的开发流程有所了解，至少要有两个有实际应用价值的项目，而不是练习项目!因为现在企业看重的是你有没有实际的开发经验，真正开发经验的体现就是你做的项目，也就是有实际应用的项目! </p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/Vanessa219/archive/2009/02/20/3913112.aspx</font></p>
 <img src ="http://www.blogjava.net/lukangping/aggbug/289494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2009-08-02 20:33 <a href="http://www.blogjava.net/lukangping/articles/289494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>培养专业良好的编码习惯</title><link>http://www.blogjava.net/lukangping/articles/288795.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Tue, 28 Jul 2009 11:43:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/288795.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/288795.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/288795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/288795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/288795.html</trackback:ping><description><![CDATA[程序员专业不专业，看看你的代码就很容易分辨出来，如何培养自己专业的java编码习惯，在经历了一个项目两个月的开发，稍微总结一下：<br />
1. 争取先写注释，后写代码。这样做的好处，一、你的代码注释非常规范；二、测试查看时会比较容易看懂里面的逻辑；三、代码review时很容易发现逻辑的错误；四、思考业务逻辑和思考代码开发解耦，专注于一点。<br />
2. 代码的模块化。不要有超过200行的方法。<br />
3. 避免if...else if... else if ... else...。用if... if... if...，如果是int，short，chart，byte，Enum就可以用switch。<br />
4. 如果你的方法返回一个list，最好不要返回一个Null，可以返回一个空的list。<br />
5. web层不能直接dao对象调用数据库，可以在你的biz层包装数据库操作类。<br />
6. biz层不返回do对象，返回一个类：***Info<br />
7. 远程服务层不要返回一个太细粒度的数据，如String。应该考虑到其他别的地方也会使用这个服务层，所以返回一个包含较全信息的类，比较合理。<br />
8. 注释里，可以用&lt;ul&gt;&lt;li&gt;&lt;/li&gt;...&lt;/ul&gt;这样的标签，可以使你的注释看起来很规范。<br />
9. 对于有特殊业务处理的程序代码，一定要有详细的说明，以便自己和别人下次review时一目了然。<br />
10. 每次if判断，最好加上注释。如果你先写注释，后写代码，这条肯定就做到了。<br />
11. 如果你写的是一个公用的方法，如biz的一个方法，为了确保你的程序在自己的方法里不出问题，要做到：检验输入是否符合规则，详细声明和注释输出的几种结果。<br />
12. 判断等或不等时，常量在前，被判别的在后，可以避免一些nullpointexception的异常。 <br />
13. 打日志：当程序做一个远程、数据库、关键动作之前，最后先debug一下，判断异常时，error再把异常打印出来。 <br />
14. Helper帮助类因为属性中用到好多别的需要注入的类，所以最好以把它弄成接口发布的方式。<br />
15. Util因为只是工具类，所以都是静态的方法。<br />
16. 深入体会领域模型。web-&gt;模型-&gt;biz-&gt;DO-&gt;数据库
<img src ="http://www.blogjava.net/lukangping/aggbug/288795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2009-07-28 19:43 <a href="http://www.blogjava.net/lukangping/articles/288795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>未来五年程序员应当具备的十项技能</title><link>http://www.blogjava.net/lukangping/articles/287293.html</link><dc:creator>kangaroo</dc:creator><author>kangaroo</author><pubDate>Sat, 18 Jul 2009 17:01:00 GMT</pubDate><guid>http://www.blogjava.net/lukangping/articles/287293.html</guid><wfw:comment>http://www.blogjava.net/lukangping/comments/287293.html</wfw:comment><comments>http://www.blogjava.net/lukangping/articles/287293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lukangping/comments/commentRss/287293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lukangping/services/trackbacks/287293.html</trackback:ping><description><![CDATA[<p>作为一名程序员，如果你想在这个领域内继续向前进步或者在当前的经济形势下保持不被炒鱿鱼，那么你就决不应当自满自足，你需要继续学习。近日，著名IT评论员Justin James在他的博客中列出了未来五年程序员应当具备的十项技能，如果照此实践，你未来的工作前景一定一片光明。 </p>
<p>当前的经济形势下，很多程序员将目光聚焦在短期内的工作形式上，但是你仍然要抽出时间和精力学习新的技能。以下是作为程序员应当即刻学习的十项技能，以确保在未来五年内你的简历上有真材实料。当然这个名单很难做到详尽而没有遗漏，有些领域没有涉及到（比如大型机开发者）。然而，对于一般的主流开发而言，你至少要学会以下十条中的七条，而且掌握的程度不是那种你在工作面试上能够夸夸其谈，而是真正能够用于实际开发。</p>
<p><strong>1，三大主流开发体系之一(.NET, Java, PHP)</strong></p>
<p>除非软件开发领域发生巨大的变革（这机率好比行星撞击地球），不然程序员至少需要知道三大开发系统中（.NET (VB.NET or C#), Java, PHP）的一种。而且仅仅了解核心语言是不够的，因为现在的项目拥有越来越多的不同功能，这也迫使程序员对相关的框架和库了解得更深。</p>
<p><strong>2，富客户端应用（Rich Internet Applications）</strong></p>
<p>无论你对Flash是爱还是恨，我们都不得不承认在过去的几年里Flash的发展壮大已远不仅是应用于动画制作。Flash以及Flex和AIR都具备越来越多的功能。而Flash的竞争者，如JavaFX和Silverlight等也在不断提升自身的性能和表现。让富互联网应用更加活跃的是，HTML 5正整合进所有种类的RIA功能，包括数据库连接、将W3C置于AJAX上等。在不远的将来，作为一名RIA领域的专家无疑将给你的简历添上浓重的一笔。</p>
<p><strong>3，Web页面开发</strong></p>
<p>Web开发恐怕在未来的很长时间内都是主流技术之一。许多程序员往往满足于构建后台、或者只是专注于框架基础而忽略了Web。但是越来越多的企业需要如何在交互代码（hand code）级别处理Web技术的人员，所以掌握JavaScript、CSS和HTML必将在未来五年内的职场上无往不胜。</p>
<p><strong>4，Web服务端开发</strong></p>
<p>REST 还是SOAP? JSON 还是XML?当然选择答案得依据项目来定，但如果一名程序员不会创建Web服务（尽管这个程序员也许不用写Web应用），那么他在工作岗位上一定倍感艰难。因为即便是过去那些被ODBC, COM或者 RPC主宰的领域现在也转到了一些形式的Web服务上了。</p>
<p><strong>5，软性技能</strong></p>
<p>一段时间以来就有这样一种趋势即：无论在企业内部还是企业外部提高IT的能见度。程序员被越来越多地带去参加非开发性会议来提供技术支持。例如，没有IT升级系统，首席财务官不可能改变收支细则；没有IT升级CRM工作流，运营总监不可能改变一个中心呼叫进程。同样，客户经常直接与开发团队沟通以确保他们的需求被完成。是否每个程序员都应该回去学习礼仪课来与别人更好的交往呢？那倒不必，但是程序员的确要提高待人接物的软性能力，以在职场上获得更大的价值。</p>
<p><strong>6，一种动态或者函数式程序设计语言(Functional Programming Language)</strong></p>
<p>类如Ruby, Python, F#和Groovy等的语言虽然不完全主流，但是语言内部包含的思想却是开发界的主流。比如，微软.NET中的LINQ系统就是函数式程序设计语言的一个直接派生。得益于Rails框架和Silverlight的发展，Ruby和Python语言在一些领域变得很热门。学习这样一门语言不仅丰富了你的简历，而且会开阔你的开发视野。我所遇到的顶级开发者几乎都曾在演讲中提到学习一门动态语言或者函数式程序设计语言的重要性，就我的个人经历而言，这确实很有用。</p>
<p><strong>7，敏捷开发</strong></p>
<p>当敏捷开发第一次冲击主流的开发意识时，我跟许多开发者一样持怀疑的观点。因为它抛弃了控制、标准等，看起来是一种完全与传统方法相悖的开发方法。但随着时间的发展，敏捷背后的思想被定义的越来越好，应用得也越来越棒。许多开发或者采用敏捷，或者在敏捷开发的实验阶段。尽管敏捷不是失败项目的万灵药，但它确实在软件开发中有一席之地。那些对敏捷有很好的理解并且有应用经历的开发者必将在未来五年内成为抢手货。</p>
<p><strong>8，业务领域知识</strong></p>
<p>开发团队越来越被看做是项目的合作者，这意味着了解该领域的开发者将对该项目的贡献更大。有了敏捷，开发者可以说我们可以在这儿很简单地增加这个功能，而这将让我们的产品更具价值。或者这个要求不符合我们日志显示的常用类型。由于越来越多的程序员反对必须了解该领域内的所有问题（实际上也不可能做到），所以不可否认的是越来越多的企业希望开发者起码了解该领域内的基础知识，越多越好。</p>
<p><strong>9，质量控制</strong></p>
<p>几年前的时候，很多企业和产品没有bug跟踪系统、没有版本控制和其他类似的工具，所写出的代码和产品都只是跟程序员和他所用的IDE有关。幸而开发领域有了新的、集成的工具如Microsoft Visual Studio Team System，而且产品、代码高质量及可用性的透明度提高，开源环境等，现在没有这种工具的企业已经越来越少稀少。开发者除了知道如何源代码控制、如何使用VM系统构建测试环境之外，还要做更多的质量控制工作，并具备很好的清洁意识来确保他与他的团队协调一致。那些将代码处存在个人硬盘中，没有记录代码变更、任务目录等的开发者，不但在传统的开发环境中不受欢迎，在敏捷的开发环境中也不受欢迎。</p>
<p><strong>10，移动开发</strong></p>
<p>在上世纪90年代末，Web开发一跃成为主流并且将原来传统的桌面应用开发边缘化。在2008，移动开发大肆进入人们的视野，而且至少在五年内移动开发都将是开发领域的重中之重。当然移动开发的方式有很多种，但无论你选择哪一种都将令你成为未来的抢手货。<br />
<br />
源引：<font style="background-color: #cce8cf">http://news.csdn.net/a/20090408/210278.html</font></p>
<img src ="http://www.blogjava.net/lukangping/aggbug/287293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lukangping/" target="_blank">kangaroo</a> 2009-07-19 01:01 <a href="http://www.blogjava.net/lukangping/articles/287293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>