﻿<?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-Tomorrow Belong To Nobody...</title><link>http://www.blogjava.net/leweslove/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 06:33:36 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 06:33:36 GMT</pubDate><ttl>60</ttl><item><title>IPD 与 CMM</title><link>http://www.blogjava.net/leweslove/articles/257709.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Wed, 04 Mar 2009 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/257709.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/257709.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/257709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/257709.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/257709.html</trackback:ping><description><![CDATA[IPD是<span style="color: #303dff;"><span style="color: red;">Integrated Product Development</span></span>
的缩写，即&#8220;集成的产品开发&#8221;，是新产品开发管理的一种模式，它逐渐兴起于上个世纪的西方企业。蓝色巨人IBM公司的重新崛起在很大程度上得益于IPD的
推行，IPD使IBM的多项研发指标得到了重大改善，如：新产品上市周期的大幅度缩短、研发资源浪费比率的显著下降等。对于IT行业，IPD作为新产品开
发管理模式堪称最佳实践的典范。
<br />
<br />
IPD的关键要素包括：跨部门的团队、结构化的流程、一流的子流程（如：项目计划与监控、数据管理、共用模块、技术管理、管道管理等）、基于平衡记分卡的考核体系、IT支持等。
<br />
<br />
CMM(<span style="color: #ff0000;">Capability Maturity
Model</span>)，英文直译的意思是&#8220;能力成熟度模型&#8221;。由卡内基.梅隆大学的软件工程协会(Software Engineering
Institute, 简称SEI)
提出并完善，目的是通过一个合理的体系模型来对软件组织开发能力进行合理有效的评估，帮助软件组织在模型实施的过程中提高软件过程管理能力，降低软件系统
开发风险，在预定的项目周期和预算内开发出高质量的软件产品。 <br />
<br />
CMM一共分为5级，1级最低，5级最高，3级是一个比较重要的分界线
<img src ="http://www.blogjava.net/leweslove/aggbug/257709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2009-03-04 10:33 <a href="http://www.blogjava.net/leweslove/articles/257709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是CSS hack</title><link>http://www.blogjava.net/leweslove/articles/253173.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Wed, 04 Feb 2009 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/253173.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/253173.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/253173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/253173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/253173.html</trackback:ping><description><![CDATA[什么是CSS hack
<p>　　由于不同的浏览器，比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等，对CSS的解析认识不一样，因此会导致生成的页面效果不一样，得不到我们所需要的页面效果。</p>
<p>　　这个时候我们就需要针对不同的浏览器去写不同的CSS，让它能够同时兼容不同的浏览器，能在不同的浏览器中也能得到我们想要的页面效果。</p>
<p>　　这个针对不同的浏览器写不同的CSS code的过程，就叫CSS hack,也叫写CSS hack。</p>
<p>　　CSS Hack的原理是什么<br />
由于不同的浏览器对CSS的支持及解析结果不一样，还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。</p>
<p>　　比如IE6能识别下划线_和星号*，IE7能识别星号*，当不能识别下划线_，而firefox两个都不能认识。等等</p>
<p>　　　书写顺序，一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。</p>
<p>　　如何写CSS Hack<br />
比如要分辨IE6和firefox两种浏览器，可以这样写： </p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000;">　　&lt;style&gt;&nbsp;&nbsp;<br />
div</span><span style="color: #000000;">{</span><span style="color: #ff0000;">&nbsp;&nbsp;<br />
&nbsp;&nbsp;　　&nbsp;&nbsp;background</span><span style="color: #000000;">:</span><span style="color: #0000ff;">green</span><span style="color: #000000;">;</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;for&nbsp;firefox&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #ff0000;">&nbsp;&nbsp;<br />
&nbsp;　　&nbsp;&nbsp;&nbsp;*background</span><span style="color: #000000;">:</span><span style="color: #0000ff;">red</span><span style="color: #000000;">;</span><span style="color: #ff0000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;for&nbsp;IE6&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #ff0000;">&nbsp;&nbsp;<br />
</span><span style="color: #000000;">}</span><span style="color: #800000;">&nbsp;&nbsp;<br />
&lt;/style&gt; <br />
</span><span style="color: #800000;">&nbsp;&nbsp;&nbsp; &lt;div&gt;我在IE6中看到是红色的，在firefox中看到是绿色的。&lt;/div&gt;&nbsp;</span><span style="color: #800000;">&nbsp; </span></div>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000;">&nbsp;&nbsp;&nbsp; <br />
&lt;style&gt; <br />
&nbsp;&nbsp;&nbsp; div</span><span style="color: #000000;">{</span><span style="color: #ff0000;">&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background</span><span style="color: #000000;">:</span><span style="color: #0000ff;">green</span><span style="color: #000000;">;</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;for&nbsp;firefox&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #ff0000;">&nbsp;&nbsp;　　<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *background</span><span style="color: #000000;">:</span><span style="color: #0000ff;">red</span><span style="color: #000000;">;</span><span style="color: #ff0000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;for&nbsp;IE6&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #ff0000;"> <br />
&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">}<br />
&nbsp; &nbsp;</span><span style="color: #800000;"> &lt;/style&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;div&gt;我在IE6中看到是红色的，在firefox中看到是绿色的。&lt;/div&gt;</span></div>
<p>&nbsp;</p>
<p>　　解释一下：</p>
<p>　　上面的css在firefox中，它是认识不了后面的那个带星号*的东东是什么的，于是将它过滤掉，不予理睬，解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。</p>
<p>　　在IE6中呢，它两个background都能识别出来，它解析得到的结果是:div{background:green;background:red;},于是根据优先级别，处在后面的red的优先级高，于是当然这个div的背景颜色就是红色的了。</p>
<p>　　CSS hack:区分IE6，IE7，firefox区别不同浏览器，CSS hack写法：</p>
<p>　　区<span style="color: #ff0000;"><span style="color: #040000;">别IE6与F</span></span>F：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;"> <span style="background-color: yellow;">background:orange;*background:blue;</span></span></p>
<p>　　区别IE6与IE7：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;"><span style="background-color: yellow;">background:green !important;background:blue;</span></span></p>
<p>　　区别IE7与FF：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;"><span style="background-color: yellow;">background:orange; *background:green;</span></span></p>
<p>　　区别FF，IE7，IE6：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: yellow;"><span style="color: #ff0000;">background:orange;*background:green !important;*background:blue;</span></span></p>
<p>　　注：</p>
<p><strong><span style="background-color: yellow;"><span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; IE都能识别*;标准浏览器(如FF)不能识别*；<br />
IE6能识别*，但不能识别 !important,<br />
IE7能识别*，也能识别!important;<br />
FF不能识别*，但能识别!important;</span></span></strong></p>
<p>&nbsp;　　IE6 IE7 FF <br />
* &#8730; &#8730; &#215; <br />
!important &#215; &#8730; &#8730; </p>
<p>　　另外再补充一个，下划线"_",<br />
IE6支持下划线，IE7和firefox均不支持下划线。</p>
<p>　　于是大家还可以这样来区分IE6，IE7，firefox<br />
: background:orange;*background:green;_background:blue; </p>
<p>　　注：不管是什么方法，书写的顺序都是firefox的写在前面，IE7的写在中间，IE6的写在最后面。</p>
<p>　　附：CSS的各种浏览器兼容一栏表</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/leweslove/120NA3513F1SR.gif" alt="" border="0" /><br />
</p>
<img src ="http://www.blogjava.net/leweslove/aggbug/253173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2009-02-04 09:22 <a href="http://www.blogjava.net/leweslove/articles/253173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux java 中文乱码</title><link>http://www.blogjava.net/leweslove/articles/252117.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Tue, 20 Jan 2009 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/252117.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/252117.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/252117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/252117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/252117.html</trackback:ping><description><![CDATA[把整个文件拷贝到 JAVA_HOME/jre/lib/fonts/fallback目录下，fallback目录通常不存在,可以使用mkdir命令创建 <br />
&nbsp;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">cd&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">lib</span><span style="color: #000000;">/</span><span style="color: #000000;">jvm</span><span style="color: #000000;">/</span><span style="color: #000000;">java</span><span style="color: #000000;">-</span><span style="color: #000000;">1.5</span><span style="color: #000000;">.0</span><span style="color: #000000;">-</span><span style="color: #000000;">sun</span><span style="color: #000000;">-</span><span style="color: #000000;">1.5</span><span style="color: #000000;">.</span><span style="color: #000000;">0.15</span><span style="color: #000000;">/</span><span style="color: #000000;">jre</span><span style="color: #000000;">/</span><span style="color: #000000;">lib</span><span style="color: #000000;">/</span><span style="color: #000000;">fonts<br />
sudo&nbsp;mkdir&nbsp;fallback<br />
cd&nbsp;fallback<br />
sudo&nbsp;cp&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">share</span><span style="color: #000000;">/</span><span style="color: #000000;">fonts</span><span style="color: #000000;">/</span><span style="color: #000000;">truetype</span><span style="color: #000000;">/</span><span style="color: #000000;">arphic</span><span style="color: #000000;">/</span><span style="color: #000000;">uming.ttc&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">lib</span><span style="color: #000000;">/</span><span style="color: #000000;">jvm</span><span style="color: #000000;">/</span><span style="color: #000000;">java</span><span style="color: #000000;">-</span><span style="color: #000000;">1.5</span><span style="color: #000000;">.0</span><span style="color: #000000;">-</span><span style="color: #000000;">sun</span><span style="color: #000000;">-</span><span style="color: #000000;">1.5</span><span style="color: #000000;">.</span><span style="color: #000000;">0.15</span><span style="color: #000000;">/</span><span style="color: #000000;">jre</span><span style="color: #000000;">/</span><span style="color: #000000;">lib</span><span style="color: #000000;">/</span><span style="color: #000000;">fonts</span><span style="color: #000000;">/</span><span style="color: #000000;">fallback<br />
sudo&nbsp;mkfontdir<br />
sudo&nbsp;mkfontscale <br />
</span></div>
<br />
<img src ="http://www.blogjava.net/leweslove/aggbug/252117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2009-01-21 00:21 <a href="http://www.blogjava.net/leweslove/articles/252117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FireFox声音不正常</title><link>http://www.blogjava.net/leweslove/archive/2009/01/18/251749.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Sat, 17 Jan 2009 18:41:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/archive/2009/01/18/251749.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/251749.html</wfw:comment><comments>http://www.blogjava.net/leweslove/archive/2009/01/18/251749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/251749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/251749.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 折腾我一天，Ubuntu下Firefox播放flash时候没有声音，不是没有声音是不能和mp3或者视频一起播放时出声音，需要安装一个包 名字是<strong><span style="color: red;">libflashsupport<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令就不用说了？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;insatll&nbsp;libflashsupport</span></div>
<strong><span style="color: red;"><br />
</span></strong>
<img src ="http://www.blogjava.net/leweslove/aggbug/251749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2009-01-18 02:41 <a href="http://www.blogjava.net/leweslove/archive/2009/01/18/251749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式编程和图书推荐(转)  </title><link>http://www.blogjava.net/leweslove/articles/251625.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Fri, 16 Jan 2009 13:01:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/251625.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/251625.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/251625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/251625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/251625.html</trackback:ping><description><![CDATA[<p>技术是通过编程编程在编程编出来的。永远不要梦想一步登天，不要做浮躁的人，不要觉得路途漫上。而是要编程编程在编程，完了在编程，在编程！等机会来了在创业（不要相信有奇迹发生，盲目创业很难成功，即便成功了发展空间也不一定很大）。</p>
<p>【正文】</p>
<p>ARM+LINUX路线，主攻嵌入式Linux操作系统及其上应用软件开发目标：</p>
<p>　　（1） 掌握主流嵌入式微处理器的结构与原理（初步定为arm9）</p>
<p>　　（2） 必须掌握一个嵌入式操作系统 （初步定为uclinux或linux,版本待定）</p>
<p>　　（3） 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。</p>
<p>　　从事嵌入式软件开发的好处是：</p>
<p>　　（1）目前国内外这方面的人都很稀缺。这一领域入门门槛较高，所以非专业IT人员很难切入这一领域；另一方面，是因为这一领域较新，目前发展太快，大多数人无条件接触。</p>
<p>　　（2）与企业计算等应用软件不同，嵌入式领域人才的工作强度通常低一些（但收入不低）。</p>
<p>　　（3）哪天若想创业，搞自已的产品，嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做（这叫&#8220;贴牌&#8221;：OEM），都是通用的硬件，我们只管设计软件就变成自己的产品了。</p>
<p>　　（4）兴趣所在，这是最主要的。</p>
<p>　　从事嵌入式软件开发的缺点是：</p>
<p>　　（1） 入门起点较高，所用到的技术往往都有一定难度，若软硬件基础不好，特别是操作系统级软件功底不深，则可能不适于此行。</p>
<p>　　（2）这方面的企业数量要远少于企业计算类企业。</p>
<p>　　（3）有少数公司经常要硕士以上的人搞嵌入式，主要是基于嵌入式的难度。但大多数公司也并无此要求，只要有经验即可。</p>
<p>　　（4）平台依托强，换平台比较辛苦。</p>
<p>　　兴趣的由来：</p>
<p>　　1、成功观念不同，不虚度此生，就是我的成功。</p>
<p>　　2、喜欢思考，挑战逻辑思维。</p>
<p>　　3、喜欢C</p>
<p>　　C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下：</p>
<p>　　相信程序员。</p>
<p>　　不要阻止程序员做那些需要去做的。</p>
<p>　　保持语言短小精干。</p>
<p>　　一种方法做一个操作。</p>
<p>　　使得它运行的够快，尽管它并不能保证将是可移植的。</p>
<p>　　4、喜欢底层开发，讨厌vb类开发工具（并不是说vb不好）。</p>
<p>　　5、发展前景好，适合创业，不想自己要死了的时候还是一个工程师。</p>
<p>　　方法步骤：</p>
<p>　　1、基础知识：</p>
<p>　　目的：能看懂硬件工作原理，但重点在嵌入式软件，特别是操作系统级软件，那将是我的优势。</p>
<p>　　科目：数字电路、计算机组成原理、嵌入式微处理器结构。</p>
<p>　　汇编语言、C/C++、编译原理、离散数学。</p>
<p>　　数据结构和算法、操作系统、软件工程、网络、数据库。</p>
<p>　　方法：虽科目众多，但都是较简单的基础，且大部分已掌握。不一定全学，可根据需要选修。</p>
<p>　　主攻书籍：the c++ programming language（一直没时间读）、数据结构-C2。</p>
<p>　　2、学习linux：</p>
<p>　　目的：深入掌握linux系统。</p>
<p>　　方法：使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深，那主讲原理。看几遍后，看情景分析，对照深看，两本交叉，深是纲，情是目。剖析则是0.11版，适合学习。最后深入代码。</p>
<p>　　主攻书籍：linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。</p>
<p>　　3、学习嵌入式linux：</p>
<p>　　目的：掌握嵌入式处理器其及系统。</p>
<p>　　方法：（1）嵌入式微处理器结构与应用：直接arm原理及汇编即可，不要重复x86。</p>
<p>　　（2）嵌入式操作系统类：ucOS/II简单，开源，可供入门。而后深入研究uClinux。</p>
<p>　　（3）必须有块开发板（arm9以上），有条件可参加培训（进步快，能认识些朋友）。</p>
<p>　　主攻书籍：毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。</p>
<p>　　4、深入学习：</p>
<p>　　A、数字图像压缩技术：主要是应掌握MPEG、mp3等编解码算法和技术。</p>
<p>　　B、通信协议及编程技术：TCP/IP协议、802.11，Bluetooth，GPRS、GSM、CDMA等。</p>
<p>　　C、网络与信息安全技术：如加密技术，数字证书CA等。</p>
<p>　　D、DSP技术：Digital Signal Process，DSP处理器通过硬件实现数字信号处理算法。</p>
<p>　　说明：太多细节未说明，可根据实际情况调整。重点在于1、3，不必完全按照顺序作。对于学习c++，理由是c++不只是一种语言，一种工具，她
还是一种艺术，一种文化，一种哲学理念、但不是拿来炫耀得东西。对于linux内核，学习编程，读一些优秀代码也是有必要的。</p>
<p>　　注意：　要学会举一反多，有强大的基础，很多东西简单看看就能会。想成为合格的程序员，前提是必须熟练至少一种编程语言，并具有良好的逻辑思维。一定要理论结合实践。</p>
<p>　　不要一味钻研技术，虽然挤出时间是很难做到的，但还是要留点余地去完善其他的爱好，比如宇宙，素描、机械、管理，心理学、游戏、科幻电影。还有一些不愿意做但必须要做的！</p>
<p>　　技术是通过编程编程在编程编出来的。永远不要梦想一步登天，不要做浮躁的人，不要觉得路途漫上。而是要编程编程在编程，完了在编程，在编程！等机会来了在创业（不要相信有奇迹发生，盲目创业很难成功，即便成功了发展空间也不一定很大）。</p>
<p>　　嵌入式书籍推荐</p>
<p>　　Linux基础</p>
<p>　　1、《Linux与Unix Shell 编程指南》</p>
<p>　　C语言基础</p>
<p>　　1、《C Primer Plus，5th Edition》【美】Stephen Prata着</p>
<p>　　2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie（K &amp; R）着</p>
<p>　　3、《Advanced Programming in the UNIX Environment，2nd Edition》（APUE）</p>
<p>　　4、《嵌入式Linux应用程序开发详解》</p>
<p>　　Linux内核</p>
<p>　　1、《深入理解Linux内核》（第三版）</p>
<p>　　2、《Linux内核源代码情景分析》毛德操 胡希明着</p>
<p>　　研发方向</p>
<p>　　1、《UNIX Network Programming》（UNP）</p>
<p>　　2、《TCP/IP详解》</p>
<p>　　3、《Linux内核编程》</p>
<p>　　4、《Linux设备驱动开发》（LDD）</p>
<p>　　硬件基础</p>
<p>　　1、《ARM体系结构与编程》杜春雷着</p>
<p>　　2、S3C2410 Datasheet</p>
<p>　　英语基础</p>
<p>　　1、《计算机与通信专业英语》</p>
<p>　　系统教程</p>
<p>　　1、《嵌入式系统――体系结构、编程与设计》</p>
<p>　　2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着</p>
<p>　　3、《Building Embedded Linux Systems》</p>
<p>　　理论基础</p>
<p>　　1、《算法导论》</p>
<p>　　2、《数据结构（C语言版）》</p>
<p>　　3、《计算机组织与体系结构?性能分析》</p>
<p>　　4、《深入理解计算机系统》【美】Randal E. Bryant David O&#8221;Hallaron着</p>
<p>　　5、《操作系统：精髓与设计原理》</p>
<p>　　6、《编译原理》</p>
<p>　　7、《数据通信与计算机网络》</p>
<p>　　8、《数据压缩原理与应用》</p>
<p>　　C语言书籍推荐</p>
<p>　　1. The C programming language</p>
<p>　　《Ｃ程序设计语言》</p>
<p>　　2. Pointers on C</p>
<p>　　《Ｃ和指针》</p>
<p>　　3. C traps and pitfalls</p>
<p>　　《Ｃ陷阱与缺陷》</p>
<p>　　4. Expert C Lanuage</p>
<p>　　《专家Ｃ编程》</p>
<p>　　5. Writing Clean Code</p>
<p>　　—&#8211;Microsoft Techiniques for Developing Bug-free C Programs</p>
<p>　　《编程精粹&#8211;Microsoft 编写优质无错Ｃ程序秘诀》</p>
<p>　　6. Programming Embedded Systems in C and C++</p>
<p>　　《嵌入式系统编程》</p>
<p>　　7.《C语言嵌入式系统编程修炼》</p>
<p>　　8.《高质量C++/C编程指南》林锐</p>
<p>　　尽可能多的编码，要学好C，不能只注重C本身。算法，架构方式等都很重要。</p>
<img src ="http://www.blogjava.net/leweslove/aggbug/251625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2009-01-16 21:01 <a href="http://www.blogjava.net/leweslove/articles/251625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fatal error: Allowed memory size of 8388608 bytes exhausted</title><link>http://www.blogjava.net/leweslove/articles/245817.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Thu, 11 Dec 2008 16:09:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/245817.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/245817.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/245817.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/245817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/245817.html</trackback:ping><description><![CDATA[<p>如果Wordpress出现这种问题则表明，程序运行占用的记忆空间超过了8M,解决方法修改PHP.ini文件将</p>
<p><code>memory_limit = 8M ; </code></p>
<p>的值改为<strong>12M</strong>就可以了</p>
<h3>This error message can spring up in a previously functional PHP
script when the memory requirements exceed the default 8MB limit. Don&#8217;t
fret, though, because this is an easy problem to overcome.</h3>
<p>To change the memory limit for one specific script by including a line such as this at the top of the script:</p>
<p><code>ini_set("memory_limit","12M");</code></p>
<p><br />
The 12M sets the limit to 12 megabytes (12582912 bytes). If this
doesn&#8217;t work, keep increasing the memory limit until your script fits
or your server squeals for mercy.</p>
<p>You can also make this change permanently for all PHP scripts
running on the server by adding a line like this to the server&#8217;s
php.ini file:</p>
<p><code>memory_limit = 12M</code></p>
<p>Keep in mind that a huge memory limit is a poor substitute for good
coding. A poorly written script may inefficiently squander memory which
can cause severe problems for frequently executed scripts. However,
some applications are run infrequently and require lots of memory like
importing and processing a big data file.</p>
<img src ="http://www.blogjava.net/leweslove/aggbug/245817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2008-12-12 00:09 <a href="http://www.blogjava.net/leweslove/articles/245817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"时间戳"与IE缓存</title><link>http://www.blogjava.net/leweslove/articles/244682.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Fri, 05 Dec 2008 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/244682.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/244682.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/244682.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/244682.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/244682.html</trackback:ping><description><![CDATA[今天看CZBK的AJAX视频,发现一个小问题,不经常注意的问题.对于IE浏览器有这种现象,在访问相同地址的时候会调用 服务器端在浏览器中的缓存.比如访问的两次地址都是 http://localhost:8888/Test/Servlet?name=evan那么第二次访问就不会重新访问服务器端,而会直接调用浏览器离的缓存来进行返回运算.<br />
解决方法是利用"时间戳"的伪地址骗过浏览器.&nbsp; 在发送url请求时加上一个参数,这个参数是时间戳,就是系统时间.(以毫秒为单位的数字类型),下面是视频教程中写的一个js函数.<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><strong><span style="color: #008080;"><span style="font-family: Comic Sans MS;"><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;convertURL(url)&nbsp;{<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;timstamp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date()).valueOf();<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(url.indexOf(</span><span style="color: #000000;">"</span><span style="color: #000000;">?</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;url&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;t=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;timstamp;<br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;url&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">?t=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;timstamp;<br />
</span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;url;<br />
</span><span style="color: #008080;">9</span>&nbsp;<span style="color: #000000;">}</span></span></span></strong></div>
经测试在FX下不会有此缓存,而在IE下会有.<br />
这个时间戳的伪地址还用在 一般web验证码刷新上!<br />
<br />
<img src ="http://www.blogjava.net/leweslove/aggbug/244682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2008-12-05 22:15 <a href="http://www.blogjava.net/leweslove/articles/244682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi使用指南</title><link>http://www.blogjava.net/leweslove/articles/244586.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Fri, 05 Dec 2008 05:49:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/244586.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/244586.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/244586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/244586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/244586.html</trackback:ping><description><![CDATA[一、Unix编辑器概述
<p>
编辑器是使用计算机的重要工具之一，在各种操作系统中，编辑器都是必不可少的部件。Unix及其相似的ix操作系统系列中，为方便各种用户在各个不同的环
境中使用，提供了一系列的ex编辑器，包括 ex, edit,ed
和vi.其中ex,edit,ed都是行编辑器，现在已很少有人使用，Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。 </p>
<p>
值得庆幸的是，Unix提供了全屏幕的Vi编辑器，这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用，这是
因为Vi考虑到各种用户的需要，没有使用某些通用的编辑键（在各个不同的终端机上他们的定义是不同的，在某些终端机上甚至没有这些键）。而是采用状态切换
的方法，但这只是习惯的问题，一旦你熟练的使用上了vi你就会觉得它其实也很好用。虽然
Vi采用了状态切换的方法，但电脑的硬件及操作系统多种多样，某些电脑的键盘上没有特定的几个功能键！那麽不就有某些功能不能用了？这个问题在
Unix 系统上也一样，几乎各大电脑厂商都有自己的Unix 系统，而 vi 的操作方法也会随之有点出入。这里我们采用 PC 的键盘来说明 vi
的操作，但在具体的环境中还要参考相应的资料，这一点是值得注意的。 </p>
<p>二、Vi入门 </p>
<p>（一）、进入vi </p>
<p>在系统提示字符(如$、#)下敲入vi ＜档案名称＞，vi 可以自动帮你载入所要编辑的文件或是开启一个新文件（如果该文件不存在或缺少文件名）。进入 vi 后萤幕左方会出现波浪符号，凡是列首有该符号就代表此列目前是空的。 </p>
<p>(二）、两种模式 </p>
<p>如上所述，vi存在两种模式：指令模式和输入模式。在指令模式下输入的按键将做为指令来处理：如输入a，vi即认为是在当前位置插入字符。而在输入
模式下，vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可（如a,A），而要从输入模式切换到指令模式，则需
在输入模式下键入ESC键，如果不晓得现在是处於什麽模式，可以多按几次 [ESC]，系统如发出哔哔声就表示已处于指令模式下了。 </p>
<p>付：有指令模式进入输入模式的指令： </p>
<p>新增 (append) </p>
<p>a ：从光标所在位置後面开始新增资料，光标後的资料随新增资料向後移动。 </p>
<p>A： 从光标所在列最後面的地方开始新增资料。 </p>
<p>插入 (insert) </p>
<p>i： 从光标所在位置前面开始插入资料，光标後的资料随新增资料向後移动。 </p>
<p>I ：从光标所在列的第一个非空白字元前面开始插入资料。 </p>
<p>开始 (open) </p>
<p>o ：在光标所在列下新增一列并进入输入模式。 </p>
<p>O: 在光标所在列上方新增一列并进入输入模式。 </p>
<p>（三）、退出vi </p>
<p>在指令模式下键入:q,:q!,:wq或:x(注意:号），就会退出vi。其中:wq和:x是存盘退出，而:q是直接退出，如果文件已有新的变
化，vi会提示你保存文件而:q命令也会失效，这时你可以用:w命令保存文件后再用:q退出，或用:wq或:x命令退出，如果你不想保存改变后的文件，你
就需要用:q!命令，这个命令将不保存文件而直接退出vi。 </p>
<p>（四）、基本编辑 </p>
<p>配合一般键盘上的功能键，像是方向键、[Insert] 、[Delete] 等等，现在你应该已经可以利用 vi 来编辑文件了。当然 vi 还提供其他许许多多功能让文字的处理更为方便。 </p>
<p>何谓编辑？一般认为是文字的新增、修改以及删除，甚至包括文字区块的搬移、复制等等。先这里介绍 vi的如何做删除与修改。（注意：在 vi
的原始观念里，输入跟编辑是两码子事。编辑是在指令模式下操作的，先利用指令移动光标来定位要进行编辑的地方，然後才下指令做编辑。） </p>
<p>删除与修改文件的命令： </p>
<p>x： 删除光标所在字符。 </p>
<p>dd ：删除光标所在的列。 </p>
<p>r ：修改光标所在字元，r 後接著要修正的字符。 </p>
<p>R： 进入取替换状态，新增文字会覆盖原先文字，直到按 [ESC] 回到指令模式下为止。 </p>
<p>s： 删除光标所在字元，并进入输入模式。 </p>
<p>S： 删除光标所在的列，并进入输入模式。</p>
<p>其实呢，在PC上根本没有这麽麻烦！输入跟编辑都可以在输入模式下完成。例如要删除字元，直接按[Delete]
不就得了。而插入状态与取代状态可以直接用 [Insert]
切换，犯不著用什麽指令模式的编辑指令。不过就如前面所提到的，这些指令几乎是每台终端机都能用，而不是仅仅在 PC 上。<br />
在指令模式下移动光标的基本指令是 h, j, k, l 。想来各位现在也应该能猜到只要直接用 PC 的方向键就可以了，而且无论在指令模式或输入模式下都可以。多容易不是。<br />
当然 PC 键盘也有不足之处。有个很好用的指令 u 可以恢复被删除的文字，而 U 指令则可以恢复光标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。<br />
三、附件：vi详细指令表<br />
（一）、基本编辑指令：<br />
新增 (append) </p>
<p>a ：从光标所在位置後面开始新增资料，光标後的资料随新增资料向後移动。 </p>
<p>A： 从光标所在列最後面的地方开始新增资料。 </p>
<p>插入 (insert) </p>
<p>i： 从光标所在位置前面开始插入资料，光标後的资料随新增资料向後移动。 </p>
<p>I ：从光标所在列的第一个非空白字元前面开始插入资料。 </p>
<p>开始 (open) </p>
<p>o ：在光标所在列下新增一列并进入输入模式。 </p>
<p>O: 在光标所在列上方新增一列并进入输入模式。 </p>
<p>x： 删除光标所在字符。 </p>
<p>dd ：删除光标所在的列。 </p>
<p>r ：修改光标所在字元，r 後接著要修正的字符。 </p>
<p>R： 进入取替换状态，新增文字会覆盖原先文字，直到按 [ESC] 回到指令模式下为止。 </p>
<p>s： 删除光标所在字元，并进入输入模式。 </p>
<p>S： 删除光标所在的列，并进入输入模式。 </p>
<p>（二）、光标移动指令：<br />
由於许多编辑工作是藉由光标来定位，所以 vi 提供许多移动光标的方式，这个我们列<br />
几张简表来说明（这些当然是指令模式下的指令）： </p>
<p>指令� �说明 ������ 功能键 <br />
0 移动到光标所在列的最前面 [Home]�<br />
$ � 移动到光标所在列的最後面 [End]<br />
[CTRL][d] 向下半页 � [PageDown]<br />
[CTRL][f] 向下一页 <br />
[CTRL][u] 向上半页� <br />
[CTRL][b] 向上一页 [PageUp] </p>
<p>指令 说明<br />
H 移动到视窗的第一列<br />
M 移动到视窗的中间列<br />
L 移动到视窗的最後列 <br />
b 移动到下个字的第一个字母<br />
w 移缴细鲎值牡谝桓鲎帜?nbsp; ��<br />
e 移动到下个字的最後一个字母<br />
^ 移动到光标所在列的第一个非空白字元 </p>
<p>指令 说明 ���<br />
n- 减号移动到上一列的第一个非空白字元前面加上数字可以指定移动到以上 n 列 <br />
n+ 加号移动到下一列的第一个非空白字元前面加上数字可以指定移动到以下 n 列<br />
nG 直接用数字 n 加上大写 G 移动到第 n 列<br />
指令 说明<br />
fx<br />
往右移动到 x 字元上 <br />
Fx 往左移动到 x 字元上 �<br />
tx 往右移动到 x 字元前���<br />
Tx 往左移动到 x 字元前<br />
; 配合 f&amp;t 使用，重复一次��<br />
,�� 配合 f&amp;t 使用，反方向重复一次<br />
/string 往右移动到有 string 的地方<br />
?string 往左移动到有 string 的地方<br />
n � 配合 /&amp;? 使用，重复一次 <br />
N � 配合 /&amp;? 使用，反方向重复一次 </p>
<p>指令 说明 �备注<br />
n( <br />
左括号移动到句子的最前面句子是以前面加上数字可以指定往前移动 n 个句子 ! . ? 三种符号来界定<br />
n)� 右括号移动到下个句子的最前面前面加上数字可以指定往後移动 n 个句子 ! . ? 三种符号来界定<br />
n{ �� 左括弧移动到段落的最前面 段落是以段落间的空白列界定<br />
n} 前面加上数字可以指定往前移动 n 个段落右括弧移动到下个段落的最前面前面加上数字可以指定往後移动 n 个段落 段落是以段落间的空白列界定 <br />
</p>
<p>（三）、更多的编辑指令<br />
这些编辑指令非常有弹性，基本上可以说是由指令与范围所构成。例如 dw 怯缮境噶?nbsp;d 与范围 w 所组成，代表删除一个字 d(elete) w(ord) 。<br />
指令列表如下：<br />
d 删除(delete)<br />
y 复制(yank)<br />
p 放置(put)<br />
c 修改(change)<br />
范围可以是下列几个：<br />
e 光晁谖恢玫礁米值淖钺嵋桓鲎帜?br&gt; w 光标所在位置到下个字的第一个字母<br />
b 光标所在位置到上个字的第一个字母<br />
$ 光标所在位置到该列的最後一个字母<br />
0 光标所在位置到该列的第一个字母<br />
) 光标所在位置到下个句子的第一个字母<br />
( 光标所在位置到该句子的第一个字母<br />
} 光标所在位置到该段落的最後一个字母<br />
{ 光标所在位置到该段落的第一个字母<br />
说实在的，组合这些指令来编辑文件有一点点艺术气息。不管怎麽样，它们提供更多编辑文字的能力。值得注意的一点是删除与复制都会将指定范围的内容放到暂存区里，然後就可以用指令 p 贴到其它地方去，这是 vi 用来处理区段拷贝与搬移的办法。<br />
某些 vi 版本，例如 Linux 所用的 elvis
可以大幅简化这一坨指令。如果稍微观察一下这些编辑指令就会发现问题其实是定范围的方式有点杂，实际上只有四个指令罢了。指令 v 非常好用，只要按下
v 键，光标所在的位置就会反白，然後就可以移动光标来设定范围，接著再直接下指令进行编辑即可。对於整列操作， vi
另外提供了更方便的编辑指令。前面曾经提到过删除整列文字的指令 dd 就是其中一个；cc 可以修改整列文字；而 yy 则是复制整列文字；指令 D
则可以删除光标到该列结束为止所有的文字。<br />
（四）、文件操作指令<br />
文件操作指令多以 : 开头，这跟编辑指令有点区别。<br />
:q 结束编辑(quit)<br />
:q! 不存档而要放弃编辑过的文件。<br />
:w 保存文件(write)其後可加所要存档的档名。<br />
:wq 即存档後离开。<br />
zz 功能与 :wq 相同。<br />
:x 与:wq相同</p>
<img src ="http://www.blogjava.net/leweslove/aggbug/244586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2008-12-05 13:49 <a href="http://www.blogjava.net/leweslove/articles/244586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java And IO</title><link>http://www.blogjava.net/leweslove/articles/Evan.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Fri, 28 Nov 2008 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/Evan.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/243292.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/Evan.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/243292.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/243292.html</trackback:ping><description><![CDATA[一． Input和Output <br />
1. stream代表的是任何有能力产出数据的数据源，或是任何有能力接收数据的接收源。在Java的IO中，所有的stream（包括Input和Out stream）都包括两种类型： <br />
1.1 以字节为导向的stream <br />
以字节为导向的stream，表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型： <br />
1) input　stream： <br />
1) ByteArrayInputStream：把内存中的一个缓冲区作为InputStream使用 <br />
2) StringBufferInputStream：把一个String对象作为InputStream <br />
3) FileInputStream：把一个文件作为InputStream，实现对文件的读取操作 <br />
4) PipedInputStream：实现了pipe的概念，主要在线程中使用 <br />
5) SequenceInputStream：把多个InputStream合并为一个InputStream <br />
2) Out　stream <br />
1) ByteArrayOutputStream：把信息存入内存中的一个缓冲区中 <br />
2) FileOutputStream：把信息存入文件中 <br />
3) PipedOutputStream：实现了pipe的概念，主要在线程中使用 <br />
4) SequenceOutputStream：把多个OutStream合并为一个OutStream <br />
1.2 以Unicode字符为导向的stream <br />
以Unicode字符为导向的stream，表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型： <br />
1) Input　Stream <br />
1) CharArrayReader：与ByteArrayInputStream对应 <br />
2) StringReader：与StringBufferInputStream对应 <br />
3) FileReader：与FileInputStream对应 <br />
4) PipedReader：与PipedInputStream对应 <br />
2) Out　Stream <br />
1) CharArrayWrite：与ByteArrayOutputStream对应 <br />
2) StringWrite：无与之对应的以字节为导向的stream <br />
3) FileWrite：与FileOutputStream对应 <br />
4) PipedWrite：与PipedOutputStream对应 <br />
<br />
以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同，字是在操作时的导向不同。如
CharArrayReader：和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用，所不同的
是前者每次从内存中读取一个字节的信息，而后者每次从内存中读取一个字符。 <br />
1.3 两种不现导向的stream之间的转换 <br />
InputStreamReader和OutputStreamReader：把一个以字节为导向的stream转换成一个以字符为导向的stream。 <br />
2. stream添加属性 <br />
2.1 &#8220;为stream添加属性&#8221;的作用 <br />
运用上面介绍的Java中操作IO的API，我们就可完成我们想完成的任何操作了。但通过FilterInputStream和FilterOutStream的子类，我们可以为stream添加属性。下面以一个例子来说明这种功能的作用。 <br />
如果我们要往一个文件中写入数据，我们可以这样操作： <br />
FileOutStream fs = new FileOutStream(&#8220;test.txt&#8221;); <br />
然后就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是，如果我们想实现&#8220;先把要写入文件的数据先缓存到内存
中，再把缓存中的数据写入文件中&#8221;的功能时，上面的API就没有一个能满足我们的需求了。但是通过FilterInputStream和
FilterOutStream的子类，为FileOutStream添加我们所需要的功能。 <br />
2.2 FilterInputStream的各种类型 <br />
2.2.1 用于封装以字节为导向的InputStream <br />
1) DataInputStream：从stream中读取基本类型（int、char等）数据。 <br />
2) BufferedInputStream：使用缓冲区 <br />
3) LineNumberInputStream：会记录input stream内的行数，然后可以调用getLineNumber()和setLineNumber(int) <br />
4) PushbackInputStream：很少用到，一般用于编译器开发 <br />
2.2.2 用于封装以字符为导向的InputStream <br />
1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader，否则使用DataInputStream <br />
2) BufferedReader：与BufferedInputStream对应 <br />
3) LineNumberReader：与LineNumberInputStream对应 <br />
4) PushBackReader：与PushbackInputStream对应 <br />
2.3 FilterOutStream的各种类型 <br />
2.2.3 用于封装以字节为导向的OutputStream <br />
1) DataIOutStream：往stream中输出基本类型（int、char等）数据。 <br />
2) BufferedOutStream：使用缓冲区 <br />
3) PrintStream：产生格式化输出 <br />
2.2.4 用于封装以字符为导向的OutputStream <br />
1) BufferedWrite：与对应 <br />
2) PrintWrite：与对应 <br />
3. RandomAccessFile <br />
1) 可通过RandomAccessFile对象完成对文件的读写操作 <br />
2) 在产生一个对象时，可指明要打开的文件的性质：r，只读；w，只写；rw可读写 <br />
3) 可以直接跳到文件中指定的位置 <br />
4. I/O应用的一个例子<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;"><span style="font-size: 24pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;"><span style="font-size: 12pt;"><span style="font-size: 14pt;"><span style="font-size: 18pt;"><span style="font-family: Comic Sans MS;"><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;TestIO{<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)<br />
</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException{<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">1.以行为单位从一个文件读取数据</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">BufferedReader&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedReader(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileReader(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\TestIO.java</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
String&nbsp;s,&nbsp;s2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String();<br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.readLine())&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
s2&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;s&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
in.close();<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">1b.&nbsp;接收键盘的输入</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">BufferedReader&nbsp;stdin&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedReader(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamReader(System.in));<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Enter&nbsp;a&nbsp;line:</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
System.out.println(stdin.readLine());<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">2.&nbsp;从一个String对象中读取数据</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">StringReader&nbsp;in2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringReader(s2);<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c;<br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in2.read())&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br />
System.out.println((</span><span style="color: #0000ff;">char</span><span style="color: #000000;">)c);<br />
in2.close();<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">3.&nbsp;从内存取出格式化输入</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
DataInputStream&nbsp;in3&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DataInputStream(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ByteArrayInputStream(s2.getBytes()));<br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">)<br />
System.out.println((</span><span style="color: #0000ff;">char</span><span style="color: #000000;">)in3.readByte());&nbsp;<br />
}<br />
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(EOFException&nbsp;e){<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">End&nbsp;of&nbsp;stream</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">4.&nbsp;输出到文件</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
BufferedReader&nbsp;in4&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedReader(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringReader(s2));<br />
PrintWriter&nbsp;out1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PrintWriter(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedWriter(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileWriter(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;TestIO.out</span><span style="color: #000000;">"</span><span style="color: #000000;">)));<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;lineCount&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in4.readLine())&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
out1.println(lineCount</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">：</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;s);<br />
out1.close();<br />
in4.close();<br />
}<br />
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(EOFException&nbsp;ex){<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">End&nbsp;of&nbsp;stream</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">5.&nbsp;数据的存储和恢复</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
DataOutputStream&nbsp;out2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DataOutputStream(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedOutputStream(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;Data.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">)));<br />
out2.writeDouble(</span><span style="color: #000000;">3.1415926</span><span style="color: #000000;">);<br />
out2.writeChars(</span><span style="color: #000000;">"</span><span style="color: #000000;">\nThas&nbsp;was&nbsp;pi:writeChars\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
out2.writeBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">Thas&nbsp;was&nbsp;pi:writeByte\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
out2.close();<br />
DataInputStream&nbsp;in5&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DataInputStream(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedInputStream(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;Data.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">)));<br />
BufferedReader&nbsp;in5br&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedReader(<br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamReader(in5));<br />
System.out.println(in5.readDouble());<br />
System.out.println(in5br.readLine());<br />
System.out.println(in5br.readLine());<br />
}<br />
<br />
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(EOFException&nbsp;e){<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">End&nbsp;of&nbsp;stream</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
}<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">6.&nbsp;通过RandomAccessFile操作文件</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">RandomAccessFile&nbsp;rf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RandomAccessFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;rtest.dat</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">rw</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">10</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
rf.writeDouble(i</span><span style="color: #000000;">*</span><span style="color: #000000;">1.414</span><span style="color: #000000;">);<br />
rf.close();<br />
<br />
rf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RandomAccessFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;rtest.dat</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">10</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Value&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">：</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;rf.readDouble());<br />
rf.close();<br />
<br />
rf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RandomAccessFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;rtest.dat</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">rw</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
rf.seek(</span><span style="color: #000000;">5</span><span style="color: #000000;">*</span><span style="color: #000000;">8</span><span style="color: #000000;">);<br />
rf.writeDouble(</span><span style="color: #000000;">47.0001</span><span style="color: #000000;">);<br />
rf.close();<br />
<br />
rf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RandomAccessFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">F:\\nepalon\\&nbsp;rtest.dat</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">10</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Value&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">：</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;rf.readDouble());<br />
rf.close();<br />
}<br />
}</span></span></span></span></span></span></span></span></span><span style="color: #000000;"><br />
</span></div>
<br />
<br />
关于代码的解释（以区为单位）： <br />
1区中，当读取文件时，先把文件内容读到缓存中，当调用in.readLine()时，再从缓存中以字符的方式读取数据（以下简称&#8220;缓存字节读取方式&#8221;）。 <br />
1b区中，由于想以缓存字节读取方式从标准IO（键盘）中读取数据，所以要先把标准IO（System.in）转换成字符导向的stream，再进行BufferedReader封装。 <br />
2区中，要以字符的形式从一个String对象中读取数据，所以要产生一个StringReader类型的stream。 <br />
4区中，对String对象s2读取数据时，先把对象中的数据存入缓存中，再从缓冲中进行读取；对TestIO.out文件进行操作时，先把格式化后的信息输出到缓存中，再把缓存中的信息输出到文件中。 <br />
5区中，对Data.txt文件进行输出时，是先把基本类型的数据输出屋缓存中，再把缓存中的数据输出到文件中；对文件进行读取操作时，先把文件中的数据
读取到缓存中，再从缓存中以基本类型的形式进行读取。注意in5.readDouble()这一行。因为写入第一个writeDouble()，所以为了
正确显示。也要以基本类型的形式进行读取。 <br />
6区是通过RandomAccessFile类对文件进行操作。 <br />
<img src ="http://www.blogjava.net/leweslove/aggbug/243292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2008-11-28 17:04 <a href="http://www.blogjava.net/leweslove/articles/Evan.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个过程？？</title><link>http://www.blogjava.net/leweslove/articles/243279.html</link><dc:creator>leweslove</dc:creator><author>leweslove</author><pubDate>Fri, 28 Nov 2008 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/leweslove/articles/243279.html</guid><wfw:comment>http://www.blogjava.net/leweslove/comments/243279.html</wfw:comment><comments>http://www.blogjava.net/leweslove/articles/243279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leweslove/comments/commentRss/243279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leweslove/services/trackbacks/243279.html</trackback:ping><description><![CDATA[<table id="BodyTable" style="table-layout: fixed; font-size: 75%; vertical-align: top; font-family: Simsun; text-align: left;" cellspacing="0">
    <tbody style="vertical-align: top;">
        <tr style="background-color: #e0edff;">
            <td><span style="font-weight: bold; color: #800080; font-family: Trebuchet MS;">1.学习Java
            SE部分的内容，这部分是基础内容。掌握的越扎实，后面的内容学习起来就越容易。<br />
            <br />
            &nbsp;2.学习SQL和数据库的内容
            ，这个也是非常基础的内容，举个例子：程序员的面试题中一定会有SQL部分的考试。 <br />
            <br />
            &nbsp;3.学习HTML、css、JavaScript的内容。
            <br />
            <br />
            &nbsp;4.学习，JSP、Servlet、JavaBean、标记库、JSTL、MVC、JSP EL等Web编程的部分 <br />
            &nbsp;<br />
            &nbsp;5.学习Struts 或者Spring
            MVC。二者取其一即可，推荐选Struts <br />
            &nbsp;<br />
            &nbsp;6.学习Java与XML ，重点掌握使用Java技术对XML文件的解析 <br />
            &nbsp;<br />
            &nbsp;7.学习Java EE的核心技术
            ，例如：JNDI、EJB3等，同时还需要学习使用与配置应用服务器，例如：webLogic Server，Websphere，JBoss<br />
            <br />
            &nbsp;8.学习Hibernate 等持久层的技术<br />
            <br />
            &nbsp;9.学习Spring<br />
            <br />
            &nbsp;10.学习AJAX<br />
            <br />
            &nbsp;</span><span style="font-weight: bold; color: #800080; font-family: Trebuchet MS;">11.学习ANT、Subversion等开发工具，熟悉常见的软件开发模型，例如：rup、XP<br />
            <br />
            &nbsp;12.学习OOA与OOD，uml，设计模式<br />
            <br />
            &nbsp;13.学习Web Services、SOA的原理与应用开发<br />
            <br />
            &nbsp;</span><span style="font-weight: bold; color: #800080; font-family: Trebuchet MS;">最后，现在很多公司都使用Linux系统做为服务器系统，并且使用Linux系统进行程序的开发（都是出于使用正版的考虑），所以Linux系统的安装、使用和简单管与配置，也是需要学习，这部分内容，跟其他内容没有关联，可以在任何时候学。推荐学习完SQL与数据库之后进行学习。
            你要想找到一份不错的Java程序员工作，最基本的也要把1－12都学习了，当然有的内容需要深入掌握，有的内容可以慢慢的深入掌握的。</span></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/leweslove/aggbug/243279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leweslove/" target="_blank">leweslove</a> 2008-11-28 16:35 <a href="http://www.blogjava.net/leweslove/articles/243279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>