<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>石无言</title>
	<atom:link href="http://www.hugstone.com/index.php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hugstone.com</link>
	<description>三生石前问一声，人间哪里修正果！</description>
	<lastBuildDate>Fri, 05 Mar 2010 15:16:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux系统中JVM内存2GB限制的原因</title>
		<link>http://www.hugstone.com/index.php/archives/479</link>
		<comments>http://www.hugstone.com/index.php/archives/479#comments</comments>
		<pubDate>Fri, 05 Mar 2010 15:07:34 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=479</guid>
		<description><![CDATA[(转载：http://www.javaeye.com/topic/368213 )
接触到的一些用户反映在Linux系统中运行的Java应用，内存只能使用到2GB，在Java虚拟机中如果把-Xmx参数设置到2GB左右（约1.5-1.8GB），java进程就根本启动不了。我们通常使用的JVM都是32位[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/479'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>(转载：http://www.javaeye.com/topic/368213 )</p>
<p>接触到的一些用户反映在Linux系统中运行的Java应用，内存只能使用到2GB，在Java虚拟机中如果把-Xmx参数设置到2GB左右（约1.5-1.8GB），java进程就根本启动不了。我们通常使用的JVM都是32位的（64位的JVM会损失10-20%的性能，通常不建议使用），而32位程序的寻址空间应该是4GB才对，为什么Linux上的JVM只能使用2GB的内存呢？ （注：Windows上也有类似的问题）</p>
<p>经过和JDK研发组的人员沟通，终于弄清楚了一些相关的原因。这个问题存在于早期的一些Linux版本中，特别是内核2.5以前的版本，2.6以后的版本就基本上没有这个问题了。原来这些Linux版本多是32位的，内核使用了2GB空间，应用进程就只有2GB了，也就是说一个地址连续的内存块大小的上限是2GB，而JVM的堆空间（heap size）需要连续的地址空间，因此，2GB就是java进程的理论使用的内存上限。</p>
<p>如果java应用需要使用较大的内存，建议使用较新版本的linux，或者修改Linux的应用/内核内存比配置为3GB：1GB。还有就是选择如Solaris等的UNIX操作系统。象Solaris这样的操作系统，在内存管理上没有2GB的限制，因此可以把heap size设置到3.5-3.6GB左右。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/479/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SLR</title>
		<link>http://www.hugstone.com/index.php/archives/475</link>
		<comments>http://www.hugstone.com/index.php/archives/475#comments</comments>
		<pubDate>Fri, 05 Mar 2010 15:03:35 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[DSLR]]></category>
		<category><![CDATA[SLR]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=475</guid>
		<description><![CDATA[<img title="DSLR" src="http://www.hugstone.com/wp-content/uploads/2010/03/DSLR.jpg" alt="" width="450" height="338" />
SLR    :   Single Lens Reflex，即单镜头反光相机，简称单反相机，其感光器件是胶片。
DSLR :  Digital Single Lens Reflex，数码单反相机，它的感光器件就是CCD或CMOS。
Digital数码的、Single单一的、Lens镜头、Refle[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/475'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><img title="DSLR" src="http://www.hugstone.com/wp-content/uploads/2010/03/DSLR.jpg" alt="" width="450" height="338" /></p>
<p>SLR    :   Single Lens Reflex，即单镜头反光相机，简称单反相机，其感光器件是胶片。</p>
<p>DSLR :  Digital Single Lens Reflex，数码单反相机，它的感光器件就是CCD或CMOS。</p>
<p>Digital数码的、Single单一的、Lens镜头、Reflex反光<br />
单镜头的意思是指相机只通过一个镜头进行拍摄和取景，并且，真正的单反是指可更换镜头的该类相机。反光是指些类相机都是通过反光板来实现取景与拍摄两大功能的互换。<br />
随着数码技术的到来，单反相机也全面数码化，即数码单反----DSLR！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/475/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>事务(数据库引擎)</title>
		<link>http://www.hugstone.com/index.php/archives/459</link>
		<comments>http://www.hugstone.com/index.php/archives/459#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:01:00 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[事务]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=459</guid>
		<description><![CDATA[<strong>事务</strong>是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性，称为原子性、一致性、隔离性和持久性 (ACID) 属性，只有这样才能成为一个事务。
<dl>
<dt>原子性 </dt>
<dd>事务必须是原子工作单元；对于其数据修改，要么全都执行，要么全都不执行。</dd>
</dl>
<dl>
<dt>一致性 </dt>
<dd>事务在完成时，必须使所有的数据都保持一致状[......]</dd></dl><p class='read-more'><a href='http://www.hugstone.com/index.php/archives/459'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>事务</strong>是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性，称为<span style="color: #ff0000;">原子性</span>、<span style="color: #ff0000;">一致性</span>、<span style="color: #ff0000;">隔离性</span>和<span style="color: #ff0000;">持久性</span> (ACID) 属性，只有这样才能成为一个事务。</p>
<dl>
<dt>原子性 </dt>
<dd>事务必须是原子工作单元；对于其数据修改，要么全都执行，要么全都不执行。</dd>
</dl>
<dl>
<dt>一致性 </dt>
<dd>事务在完成时，必须使所有的数据都保持一致状态。在相关数据库中，所有规则都必须应用于事务的修改，以保持所有数据的完整性。事务结束时，所有的内部数据结构（如 B 树索引或双向链表）都必须是正确的。</dd>
</dl>
<dl>
<dt>隔离 </dt>
<dd>由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态，要么是另一并发事务修改它之前的状态，要么是第二个事务修改它之后的状态，事务不会识别中间状态的数据。这称为可串行性，因为它能够重新装载起始数据，并且重播一系列事务，以使数据结束时的状态与原始事务执行的状态相同。</dd>
</dl>
<dl>
<dt>持久性 </dt>
<dd>事务完成之后，它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。</dd>
</dl>
<p> </p>
<p><strong>数据库引擎隔离级别</strong></p>
<p>ISO 标准定义了关系型数据库的隔离级别：</p>
<ul>
<li>未提交读 Read Uncommitted（隔离事务的最低级别，只能保证不读取物理上损坏的数据） :  允许脏读取，但不允许更新丢失。如果一个事务已经开始写数据，则另外一个数据则不允许同时进行写操作，但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。</li>
<li>已提交读 Read Committed（数据库引擎的默认级别，只能读取到已经提交的数据） :   允许不可重复读取，但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据，但是未提交的写事务将会禁止其他事务访问该行。</li>
<li>可重复读 Repeated Read   :  禁止不可重复读取和脏读取，但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务（但允许读事务），写事务则禁止任何其他事务。</li>
<li>可序列化(串行读) Serializable（隔离事务的最高级别，事务之间完全隔离）  :  提供严格的事务隔离。它要求事务序列化执行，事务只能一个接着一个地执行，但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的，必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。</li>
</ul>
<p>         *   SQL Server 和Oracle 默认隔离级别为Read Commited ；MySQL InnoDB存储引擎默认的隔离级别为Repeatable Read。<br />
         *   隔离级别越高，越能保证数据的完整性和一致性，但是对并发性能的影响也越大。对于多数应用程序，可以优先考虑把数据库系统的隔离级别设为Read Committed，它能够避免脏读取，而且具有较好的并发性能。尽管它会导致不可重复读、虚读和第二类丢失更新这些并发问题，在可能出现这类问题的个别场合，可以由应用程序采用悲观锁或乐观锁来控制。</p>
<p>下表显示了不同隔离级别导致的并发副作用。</p>
<table>
<tbody>
<tr>
<td>隔离级别</td>
<td>脏读(Dirty Read)</td>
<td>不可重复读(NonRepeatable Read)</td>
<td>幻读(Phantom Read)</td>
</tr>
<tr>
<td><strong>未提交读 Read Uncommitted</strong></td>
<td>是</td>
<td>是</td>
<td>是</td>
</tr>
<tr>
<td><strong>已提交读 Read Committed</strong></td>
<td>否</td>
<td>是</td>
<td>是</td>
</tr>
<tr>
<td><strong>可重复读 Repeated Read</strong></td>
<td>否</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td><strong>可序列化 Serializable</strong></td>
<td>否</td>
<td>否</td>
<td>否</td>
</tr>
</tbody>
</table>
<p> </p>
<ul>
<li>脏读 Dirty Read   （ 一个事务读取了另一个未提交的并行事务写的数据）</li>
<li>不可重复读 NonRepeatable Read （一个事务重新读取前面读取过的数据，发现该数据已经被另一个已提交的事务修改过）</li>
<li>幻读 Phantom Read （一个事务重新执行一个查询，返回一套符合查询条件的行，发现这些行因为其他最近提交的事务而发生了改变）</li>
</ul>
<p>        *   Dirty Read    如事务A的未提交（还依然缓存）的数据被事务B读走，如果事务A失败回滚，会导致事务B所读取的的数据是错误的。<br />
             解决办法：如果在第一个事务提交前，任何其他事务不可读取其修改过的值，则可以避免该问题。</p>
<p>        *   NonRepeatable Read    如事务A中两处读取数据 price 的值，在第一读的时候，price 是10，然后事务B就把 price 的数据改成20，事务A再读一次，结果就发现，price 竟然就变成20了，造成事务A数据混乱。<br />
             解决办法：如果只有在修改事务完全提交之后才可以读取数据，则可以避免该问题。</p>
<p>        *   Phantom Read    与NonRepeatable Read相似，也是同一个事务中多次读不一致的问题。NonRepeatable Read的不一致是因为它所要取的数据集被改变了（比如price 的数据），但 Phantom Read 所要读的数据的不一致却不是它所要读的数据集改变，而是它的条件数据集改变。比如事务A Select count(*) from students where  class='1' ;  第一次读了班级1的学生人数为35，第二次读取的时候，由于事务B插入或者删除一个班级为1的学生，结果取出来了36或34。<br />
             解决办法：如果在操作事务完成数据处理之前，任何其他事务都不可以添加新数据，则可避免该问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/459/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>直言有讳</title>
		<link>http://www.hugstone.com/index.php/archives/456</link>
		<comments>http://www.hugstone.com/index.php/archives/456#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:53:02 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=456</guid>
		<description><![CDATA[原文:http://blog.sina.com.cn/s/blog_3f09617e0100849v.html
 
    见到一个很丑的人。三岁的孩子说：他真丑。这叫说真话。
    十三岁的孩子说同样的话，叫不懂事。
    二十三岁的人如果这么说，则是没修养。
 
    所谓‘诚实’诚在先，[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/456'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<div><span>原文:http://blog.sina.com.cn/s/blog_3f09617e0100849v.html</span></div>
<div><span> </span></div>
<div><span>    见到一个很丑的人。三岁的孩子说：他真丑。这叫说真话。<br />
    十三岁的孩子说同样的话，叫不懂事。<br />
    二十三岁的人如果这么说，则是没修养。<br />
 </span></div>
<div><span>    所谓‘诚实’诚在先，实在后，‘诚’是善意和尊重。生活不需要说出全部的真相。真话也不可以随意说，一吐为快的‘真话’有时比谎言更加伤人。</span></div>
<div><span>    实话直说只需要勇气，而说话不伤人则需要修养和智慧。</span><span>   </span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/456/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SUN JDK JVM Heap</title>
		<link>http://www.hugstone.com/index.php/archives/449</link>
		<comments>http://www.hugstone.com/index.php/archives/449#comments</comments>
		<pubDate>Thu, 14 Jan 2010 12:27:53 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[Heap]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=449</guid>
		<description><![CDATA[<img class="size-medium wp-image-450" title="JVM Heap" src="http://www.hugstone.com/wp-content/uploads/2010/01/Heap.gif" alt="JVM Heap" width="477" height="280" />
(1)young generation
年轻代分三个区。一个Eden区，两个Survivor区。大部分对象在 Eden区中生成。当Eden区满时，还存活的对象将被复制到Survivor区（两个中的一个），当这个Survivor区满时，此区的存活对象将被复制到另外一个Survivor区，当这个Sur[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/449'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-450" title="JVM Heap" src="http://www.hugstone.com/wp-content/uploads/2010/01/Heap.gif" alt="JVM Heap" width="477" height="280" /></p>
<p>(1)young generation</p>
<p>年轻代分三个区。一个Eden区，两个Survivor区。大部分对象在 Eden区中生成。当Eden区满时，还存活的对象将被复制到Survivor区（两个中的一个），当这个Survivor区满时，此区的存活对象将被复制到另外一个Survivor区，当这个Survivor区也满了的时候，从第一个Survivor区复制过来的并且此时还存活的对象，将被复制到tenured generation。需要注意，Survivor的两个区是对称的，没先后关系，所以同一个区中可能同时存在从Eden复制过来对象，和从前一个Survivor复制过来的对象，而复制到年老区的只有从第一个Survivor去过来的对象。而且，Survivor区总有一个是空的。<br />
young generation的gc称为minor gc。经过数次minor gc，依旧存活的对象，将被移出young generation，移到tenured generation</p>
<p>(2)tenured generation</p>
<p>生命周期较长的对象，归入到tenured generation。一般是经过多次minor gc，还 依旧存活的对象，将移入到tenured generation。（当然，在minor gc中如果存活的对象的超过survivor的容量，放不下的对象会直接移入到tenured generation）<br />
tenured generation的gc称为major gc，就是通常说的full gc。<br />
采用compaction算法。由于tenured generaion区域比较大，而且通常对象生命周期都比较长，compaction需要一定时间。所以这部分的gc时间比较长。<br />
minor gc可能引发full gc。当eden＋from space的空间大于tenured generation区的剩余空间时，会引发full gc。这是悲观算法，要确保eden＋from space的对象如果都存活，必须有足够的tenured generation空间存放这些对象。</p>
<p>(3)permanent generation</p>
<p>该区域比较稳定，主要用于存放classloader信息，比如类信息和method信息。<br />
对于spring hibernate这些需要动态类型支持的框架，这个区域需要足够的空间。(这部分空间应该存在于方法区而不是heap中)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/449/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[MySQL] 相关SQL语句</title>
		<link>http://www.hugstone.com/index.php/archives/444</link>
		<comments>http://www.hugstone.com/index.php/archives/444#comments</comments>
		<pubDate>Thu, 14 Jan 2010 10:11:46 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=444</guid>
		<description><![CDATA[连接数据库：mysql [host] –u [user] –p
查看数据库：show databases;  列出数据库服务器上所有数据库
查看当前使用的数据库：select database(); 
使用数据库：use [database name]  ; 切换到需要操作的数据库
查看表：    [......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/444'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>连接数据库：mysql [host] –u [user] –p<br />
查看数据库：show databases;  列出数据库服务器上所有数据库<br />
查看当前使用的数据库：select database(); <br />
使用数据库：use [database name]  ; 切换到需要操作的数据库<br />
查看表：      show tables;  列出当前所在数据库的所有表<br />
查看表结构：describe [table name] ;  查看表结构</p>
<p>数据库的授权：grant all privileges on *.* to 'root'@'localhost' identified by 'zg'<br />
这句话的意思是让用户root可以从localhost登陆，并对所有的数据库有权限,密码是zg<br />
它相当于在数据库mysql的user表中添加了一条记录,此表以user与host为主键<br />
如想更新密码可以这样:update user set password=password(密码) where user=? and password=?</p>
<p>导入.sql文件(该文件包含表及相关数据):<br />
[root@mylocal001 ~]# mysql -u root -p posdb &lt; /soft/war/posdb.sql</p>
<p>LIMIT子句<br />
MS SQLSERVER 中有SELECT TOP语句, Oracle中有ROWNUM序列,那么MYSQL中如何实现select top n效果?<br />
使用Mysql中的LIMIT子句<br />
用法:　select * from Table limit n,m;<br />
limit n,m的含义是从n开始取,取m条记录</p>
<p>*当使用update语句时,LIMIT子句用于给定一个限值，限制可以被更新的行的数目。<br />
update Table set col_name1=expr1 [, col_name2=expr2 ...] limit 1000;</p>
<p>查看系统中支持的存储引擎类型：show engines;<br />
查看某个存储引擎的具体信息： show engine InnoDB status;<br />
创建表时指定存储引擎的类型： CREATE TABLE tablename (id int, title char(20)) ENGINE = INNODB;<br />
修改现有的表使用的存储引擎：  ALTER TABLE tablename ENGINE = MyISAM;<br />
查看某个库中所有表的存储引擎：show table status from DBName;<br />
查看某个库中单个表的存储引擎：show create table DBName.TableName;</p>
<p>查看Mysql版本(三种方法):<br />
mysql&gt;status;<br />
mysql&gt;select version();<br />
[root@mylocal001 ~] # mysql -V</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/444/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>马尼拉中添加Live mail邮箱</title>
		<link>http://www.hugstone.com/index.php/archives/439</link>
		<comments>http://www.hugstone.com/index.php/archives/439#comments</comments>
		<pubDate>Thu, 07 Jan 2010 09:37:06 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[马尼拉]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=439</guid>
		<description><![CDATA[<img class="alignnone size-thumbnail wp-image-438" title="MNL" src="http://www.hugstone.com/wp-content/uploads/2010/01/Screen001-150x150.jpg" alt="" width="150" height="150" />

马尼拉中邮箱设置中由于没有Live mail邮箱类型,而我的 stone@hugstone.com 邮箱是Live Mail邮箱.经过一番折腾终于将Live邮箱添加成功.[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/439'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-thumbnail wp-image-438" title="MNL" src="http://www.hugstone.com/wp-content/uploads/2010/01/Screen001.jpg" alt="MNL" width="240" height="400" /></p>
<p>马尼拉中邮箱设置中由于没有Live mail邮箱类型,而我的 stone@hugstone.com 邮箱是Live Mail邮箱.经过一番折腾终于将Live邮箱添加成功.</p>
<p>在Mail Setup中输入Email address和Password后,选择Manual Setup,</p>
<p>Incoming mail server设为pop3.live.com<br />
(*注意的下面的用户名请输入完整的Email address)</p>
<p>Outgoing (SMTP) mail server设为smtp.live.com</p>
<p>完成后,就能成功收发Live mail邮件了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/439/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA 相关术语</title>
		<link>http://www.hugstone.com/index.php/archives/424</link>
		<comments>http://www.hugstone.com/index.php/archives/424#comments</comments>
		<pubDate>Thu, 17 Dec 2009 03:09:38 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=424</guid>
		<description><![CDATA[<strong>JDK</strong>
Java Development Kit ,JAVA的开发工具包
JDK 是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment,JRE），一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/424'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>JDK</strong><br />
Java Development Kit ,JAVA的开发工具包<br />
JDK 是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment,JRE），一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK，除了Sun之外，还有很多公司和组织都开发了自己的JDK，例如IBM公司开发的JDK，BEA公司的Jrocket，还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM（Java Virtual Machine）运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说，我们还是需要先把Sun JDK掌握好。</p>
<p><strong>J2EE</strong><br />
J2EE Java2平台企业版（Java 2 Platform,Enterprise Edition）<br />
J2EE是一套全然不同于传统应用开发的技术架构，包含许多组件，主要可简化且规范应用系统的开发与部署，进而提高可移植性、安全与再用价值。<br />
 J2EE核心是一组技术规范与指南，其中所包含的各类组件、服务架构及技术层次，均有共通的标准及规格，让各种依循J2EE架构的不同平台之间，存在良好的兼容性，解决过去企业后端使用的信息产品彼此之间无法兼容，导致企业内部或外部难以互通的窘境。<br />
<strong>J2SE</strong><br />
J2SE商业版本，标准版本 (Java2 Standard Edition) 定位在客户端，主要用于桌面应用软件的编程。<br />
J2SE 包含那些构成Java语言核心的类。<br />
比如：数据库连接、接口定义、输入/输出、网络编程<br />
J2SE 是J2EE的基础，他大量的JDK代码库是每个要学习J2EE的编程人员必须掌握的。</p>
<p><strong>J2ME</strong><br />
Java 2 Micro Edition 概念<br />
J2ME(Java 2 Micro Edition)是Java 2的一个组成部分，它与J2SE、J2EE并称。根据Sun的定义：J2ME是一种高度优化的Java运行环境，主要针对消费类电子设备的，例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出，它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。<br />
J2ME 在设计其规格的时候，遵循着「对于各种不同的装置而造出一个单一的开发系统是没有意义的事」这个基本原则。于是 J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机)；另外一种则是运算能力相对较佳、并请在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机上盒 (set-top box))。因为这两种型态的嵌入式装置，所以Java 引入了一个叫做Configuration 的概念，然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中；而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说， J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。</p>
<p> </p>
<p><strong><span style="color: #ff0000;">*.  JDK是统称, 分为J2SE、J2ME、J2EE</span></strong></p>
<p><strong><span style="color: #ff0000;">在Java1时期,JDK就是指一个JAVA的开发工具包.<br />
随着Java平台的不断发展, Java2的诞生,Java2平台被分为三大块：J2SE，J2EE，J2ME.每一块都有自己相应的开发工具包(即每块都有自己的JDK).  <br />
</span></strong></p>
<p><strong><span style="color: #ff0000;">J2SDK是Java 2 Software Devolop Kit(Java2软件开发包), J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JRE)和Java Plug-in。原先sun的JAVA软件开发工具包是JDK，<strong><span style="color: #ff0000;">在Java2诞生之后</span></strong>就称为J2SDk了 (到现在为止,很多人还将之简称为JDK) 。  J2SE，J2EE，J2ME开发需分别使用相对应的软件开发包j2sdk/j2eesdk/j2mesdk.<br />
JDK是开发人员必装软件<br />
JRE是客户端运行时必装软件</span></strong></p>
<p><strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/424/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA 历史</title>
		<link>http://www.hugstone.com/index.php/archives/426</link>
		<comments>http://www.hugstone.com/index.php/archives/426#comments</comments>
		<pubDate>Thu, 17 Dec 2009 02:50:05 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=426</guid>
		<description><![CDATA[<strong>J2SE历史回顾：JDK 1.1时代开始</strong>
Java的历史可以追溯到1991年4月，Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构，使其能够在各种消费性电子产品上运行，他们使用了C/C++/Oak语言。由于电子产品种类繁多，运行环境各不[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/426'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>J2SE历史回顾：JDK 1.1时代开始</strong></p>
<p>Java的历史可以追溯到1991年4月，Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构，使其能够在各种消费性电子产品上运行，他们使用了C/C++/Oak语言。由于电子产品种类繁多，运行环境各不相同，使得用这些语言进行开发的软件必须为不同的电子产品而专门设计，所以项目组疲于奔命，消费性电子产品软件环境的发展无法达到预期的目标，绿色计划也陷于停滞状态。</p>
<p>直至 1994年下半年，由于Internet的迅猛发展和环球信息网 WWW的快速增长，第一个全球信息网络浏览器Mosaic诞生了；此时，工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求；Games Gosling决定改变绿色计划的发展方向，他们对Oak进行了小规模的改造，就这样，Java在1995年的3月23日诞生了！Java的诞生标志着互联网时代的开始，它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序，而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。</p>
<p>但没有相应的开发库而只靠Java语言来进行开发肯定是困难重重，所以Sun公司在1996年的1月23日发布了JDK1.0来帮助开发人员的开发。JDK包括两大部分：运行环境和开发工具。而运行环境包括五大部分：核心API，集成API，用户界面API，发布技术，Java虚拟机(JVM)。Java能够在信息网络时代快速发展，得益于它独特的组成结构，它并不直接被编译成所在平台的机器语言然后执行，而是先被编译成字节码，然后才到装有JVM的硬件上运行，所以它能够跨平台运行；而且，不是一定要使用Java语言来写程序才能编译成Java字节码，我们用C/C++/Javascript等语言来写程序也可以编译出JVM要求的字节码文件。在这个时期，人们使用最多的 Java API 无疑地就是 AWT，因为 JDK 1.0 时只有 AWT 称得上是一组完整的 framework，其它 Java API 都比较偏向个别的 class。</p>
<p>紧跟着，Sun公司在1997年2月18日发布了JDK 1.1。JDK 1.1相对于旧版本最大的改进，是推出了JIT(Just-In-Time)编译器。传统的JVM收到一道字节码指令后，解释成机器码，马上执行该机器码，然后丢掉该机器码，再接收下一道字节码指令……即便是以前执行过的字节码指令，依然需要重新解释成机器码才能执行。而JIT编译器会把常执行的部分先解释好放在内存，以后再次执行该指令时，不用再解释，直接从内存中取出机器码就可以执行了，这样提高了不少的效率。</p>
<p>在JDK 1.1时代，Java平台分为PersonalJava与EmbeddedJava，前者比较适用于运算资源和内存丰富的设备，而资源有限者适用于后者。这样的分类明显不符合时代发展的潮流，所以，Java平台处处蕴藏着新的翻天覆地的革命……</p>
<p><strong> J2SE 1.2的诞生与Java2时代三大革命</strong></p>
<p>JDK1.2在1998年12月4日的隆重发布，标志着Java2平台的诞生。Java2的J2SE 1.2时代是一个大变革时代，它进行了如下的三大革命：</p>
<p>* 市场推广革命</p>
<p>在Java1.0或者1.1中，称API库为JDK，但为了方便市场推广，Sun公司在Java1.2版以后将JDK1.2改名为J2SDK，将Java改名为Java 2。在99年Sun公司还将Java2平台分为三大块：J2SE，J2EE，J2ME。这次市场推广革命顺应了网络急速发展的潮流，对Java2平台的发展起到了很好的催化剂的作用。</p>
<p>* API供应标准革命</p>
<p>而随着供应商的不同，Java的API分为三大类：</p>
<p>Java Core API：由Sun公司制定的基本的API，所有的Java平台都应该提供。这就是我们平常所说的Java核心类库。</p>
<p>Java Optional API：由Sun公司制定的扩充API，Java平台可以有选择地提供。比如， JFC以前是Sun对JDK的功能扩展，不是Java的公共规范。Java2平台则包含了JFC技术,不需要再扩展了。</p>
<p>特殊API：由特殊厂商或者组织提供的API。比如，美国法律对出口中国的加解密算法的安全强度有一定的限制，Java平台中不能包括一些安全强度较高的加密解密算法，所以部分其它国家的公司，如加拿大的BouncyCastle公司等，可以提供一些自己的安全API。</p>
<p>* API制定过程的革命</p>
<p>如果你有需求不能通过遵循标准的API来实现,可以向 <a href="http://www.jcp.org/" target="blank">www.jcp.org</a> 提出制定新的API的请求,经过审核,你的请求可能被通过或者驳回;如果是被通过,则开始进入制定该API的程序。</p>
<p>J2SE 1.2时代进行的这些革命形成的制度一直沿用到现在,对Java技术的发展形成了深远的影响。</p>
<p>除了上述的三大革命，Java2 还支持并新增了许多新特性，最受追捧的当属Swing库。Swing 是轻量级 的 API，它不但有各式各样先进的组件，而且连组件风格都可抽换。Swing 出现之后，大家很快地就不太使用 AWT 了。但请不要以为 Swing 是用来取代 AWT 的，其实 Swing 是架构在 AWT 之上的， Swing 的出现只是减少程序员直接使用 AWT 的机会，而不会让 AWT 消失。Java2 还废弃了一些API，最重要的莫过于Thread类中对suspend(),resume()和stop()等方法的废弃。由于JDK1.1的集合类库中的Vector类和HashTable类都考虑了同步，在平常的使用中影响效率，所以Java2专门添加了对应的非同步类，并完善了集合类库。</p>
<p>Java2平台能够得到广泛的应用，还应归功于这个时期的一些优秀书籍，比如著名的《Core Java2》（卷一和卷二），该书随着JDK版本的变化已经出到第八版。</p>
<p><strong>J2SE 1.3时代：寻找盈利和开源的平衡</strong></p>
<p>Java2平台推出后，得到了市场的强烈反响，所以，在2000年5月8日推出的J2SE 1.3对J2SE1.2的改进，主要是对各种已有API的加强和对新API的拓展。</p>
<p>数字运算： 加入了java.lang.StrictMath,方便我们的一般的数字运算。</p>
<p>新的Timer API：相信大家对其中的java.util.Timer和java.util.TimerTask一定不陌生。</p>
<p>Collections包：??加入了一些新的API，方便我们的使用。</p>
<p>虚拟机停止钩子：J2SE1.3还加入了一个强大的功能，那就是虚拟机停止钩子(Virtual Machine Shutdown Hooks)，这个功能使得我们能够在虚拟机停止时完成我们自己的操作，比如关闭网络连接或者保存会话状态或者清除临时文件等等。</p>
<p>DNS服务：在JNDI接口方面，加入了一个DNS服务的实现。</p>
<p>Jini实现：J2SE1.3包含了一个Jini实现，这使得我们可以方便地把诸如打印机、摄像机和磁盘驱动设备插入现有网络中，并且能自动搜索已在网上的设备可以提供的服务并享用这些服务。</p>
<p>XML支持：由于计算机网络和XML技术的快速发展， J2SE1.3在Optional API中引入了Java API for XML包。</p>
<p>HotSpot虚拟机：J2SE1.3引入了HotSpot虚拟机。在solaris版的JDK1.3中，已经不支持传统的虚拟机，而windows版的JDK1.3同时支持传统虚拟机和HotSpot虚拟机。</p>
<p>从上面的分析可以看出，J2SE 1.3主要是对J2SE 1.2查漏补缺和拓展新的API。从应用领域方面考虑，J2SE 1.3已经涵盖了数据库、WEB、多媒体、网络、电话、影像、加解密、图形等等大部分的信息技术领域。</p>
<p>在这个时期Java2还有一个重要活动就是推出SCSL(Sun社区源代码许可)许可协议。Sun公司开放源代码项目的“女1号”Danese Cooper在1999年加入公司，负责Sun（包括Java）和开放源代码社区之间的协调工作。Sun一直尽可能在赢利和开放源代码之间寻求更好的平衡。</p>
<p>在J2SE 1.3时代，Java2平台得到了充分的发展，各大应用服务器在这个时代渐渐成熟并被广泛采纳，而Java2相关的培训和书籍更是如火如荼，《Thinking in Java》当属不得不推荐的一本。</p>
<p><strong>性能改善达到巅峰的J2SE 1.4</strong></p>
<p>J2SE 1.4平台的推出发生在2002年2月13日，由于此前在Java平台和.Net平台间发生了规模浩大的孰优孰劣的论战，而论战中，Java平台最大的缺点就是性能问题，所以J2SE 1.4平台把性能的改善放在了最重要的位置。</p>
<p>HotSpot虚拟机： HotSpot虚拟机能够很大程度上提高性能，所以J2SE 1.4已经不支持传统的虚拟机。现在，启动应用程序应该通过-client或者-server选项来启动，如果你还是通过-classic选项来启动，会收到这样的错误提示：”Error： Classic VM no longer supported。”</p>
<p>锁机制： 由于旧版的HotSpot虚拟机的锁机制会导制严重的性能和功能问题，J2SE 1.4已经改写了该锁机制。</p>
<p>安全API： Java Cryptography Extension(JCE),Java Secure Socket Extension(JSSE)和Java Authentication and Authorization(JAAS)这三大安全API从optional API移到了core API中。这样，J2SE 1.4的安全域(SecureRandom)实现可以利用操作系统提供的安全机制，以便缩短应用程序的启动时间。同时从optional API移到core API的功能还有XML处理API和JDBC2.0 API。</p>
<p>RandomAccess标记接口： 加入了RandomAccess标记接口，如果一个List实现了该接口，则表示它支持快速的随机访问，这样可以提高List访问的速度。</p>
<p>LinkedHashMap： 加入了LinkedHashMap，这是一个插入排序的Map实现，但它的运行速度和HashMap一样快。</p>
<p>反射： 很多产品中都要使用反射(Reflection)机制，但大家知道，反射是相当耗时的，所以，J2SE 1.4中重写了java.lang.reflect.Field、java.lang.reflect.Method.invoke()、java.lang.reflect.Constructor.newInstance()和Class.newInstance()等方法，使得我们利用反射也能写出高性能的应用程序。</p>
<p>64位计算： J2SE 1.4支持64位计算。64位支持使J2SE 1.4可以使用超过几百GB的内存，而以前的版本仅可以使用4G以内的内存。内存使用的扩大可以提高程序的运行效率。</p>
<p>新的I/O API： J2SE 1.4在API层面最大的变动，就是它更新了原有的java.io包，以及加入了一组更有效率更多功能的新的I/O API。旧的I/O处理是以串流(stream)的方式来存取的，以字节为单位，而新的I/O处理是以块(block)的方式来存取的。一个块可能包含了512字节，而磁盘的存取本就是一个块一个块来进行的，所以新的I/O处理方式对于底层底数据存取更自然更有效率。</p>
<p>断言和日志处理： J2SE 1.4版本在Java语言层面上加入了断言（assert关键字），在API层面上加入日志处理API，这些为程序的调试提供了强有力的支持 。</p>
<p>从上面的分析可以看出，Java 2平台在经过数年的发展后，已经比较成熟稳定，J2SE 1.4主要是对平台的性能进行较多的考虑和修改。在分布式程序方面，1.4版比1.3版的运行效率提高了一半以上；而在客户端程序方面，1.4版比1.3版的效率提高了1/3。当然,除了考虑运行效率，J2SE 1.4还有其它方面的改进，如推出了一个全新的运行Java应用程序的方法Java Web Start，该方法克服了Java Applet的安全性限制的问题和Java Application的软件发布难的问题，并结合了上面两种方法的好处，为Java软件客户提供了非常友好的使用体验。</p>
<p>J2SE 1.4版是J2SE 第一个参与了 Java共同体过程(JCP)的J2SE 版本。 象Borland、Compaq、Fujitsu、 SAS、 Symbian、 IBM这样的公司，和Sun一起定义并发展了J2SE  1.4规范。在开放、良好的文档编撰与管理的过程中，形成了一个高质量的、代表了Java共同体的多样性的规范。J2SE 1.4的Specification Lead是Doug Kramer。Doug Kramer是优秀的Java开发人员和著名的教育培训专家，他同时还是J2SE 1.4.2的Specification Lead 和J2SE 1.5的JVM的Specification Lead。</p>
<p><strong>改名换姓：意义深远的J2SE 5.0诞生史</strong></p>
<p>在2004年十月J2SE 5.0发布的时候，SUN公司这样解释这次版本名称不是J2SE 1.5而是J2SE 5.0的原因：“从Java诞生至今已有9年时间，而从有J2SE 算起也有5个年头了；在这样的背境下，将该版本号从1.5改为5.0可以更好的反映出新版的J2SE 的成熟度、稳定性、可伸缩性、安全性。”</p>
<p>J2SE 的这次变更之重大和意义之深远，的确也值得我们为之把版本号变换到J2SE 5.0。我们再看看Sun公司网站对J2SE 5.0的features描述：“通过增强Java平台的力量，允许开发者更容易地使用，Java编程语言的这些改进将吸引大量各种Java开发者”，这是“Java技术发展历程的一个重要里程碑” 。从这个描述我们可以看出，J2SE 5.0最大的目标是通过提供易用性而吸引各种开发者(当然包括以前的C/C++开发者) ，而它对以前版本的修改并不仅仅是API的升级，而且包括对Java语言层面的改进。</p>
<p>访问环境变量： 最初的Java语言有一个访问环境变量的方法System.getenv()，但因为Java宣称的”Write Once,Run AnyWhere”特性，所以在JDK1.0中去掉了这个能够访问平台专有信息的方法。在J2SE 5.0中，它又来了，并有所扩充。由此可见J2SE 5.0对编程方便性的重视程度。</p>
<p>泛型 J2SE 5.0提供了强大的泛型机制，让程序员可以减少代码重复，这个变化应该可以吸引小部分的C#开发人员吧。</p>
<p>增强的for循环 为了克服普通for循环的代码臃肿特点，J2SE 5.0提供了增强的for循环，我们现在可以这样写一个for循环：</p>
<pre>
<li><span><span>public</span><span> </span><span>void</span><span> printAll(Collection&lt; String&gt; coll)  </span></span></li>
<li><span>{  </span></li>
<li><span>for</span><span>(String str : coll)  </span></li>
<li><span>{  </span></li>
<li><span>System.out.println(str);  </span></li>
<li><span>}  </span></li>
<li><span>} </span></li>
</pre>
<p>怎么样？是不是简单了很多？</p>
<p>自动的装箱/拆箱 我们以前手工的做装箱(Boxing)/拆箱(unBoxing)操作时，是不是很烦?放心，J2SE 5.0提供了自动的装箱/拆箱操作，我们现在可以写如下的代码：</p>
<pre>
<li><span><span><strong><span style="color: #006699;">public</span></strong></span><span> </span><span><strong><span style="color: #006699;">void</span></strong></span><span> boxing(</span><span><strong><span style="color: #006699;">int</span></strong></span><span> i)  </span></span></li>
<li><span>{  </span></li>
<li><span>ArrayList&lt; Integer&gt; list=</span><span><strong><span style="color: #006699;">new</span></strong></span><span> ArrayList&lt; Integer&gt;();  </span></li>
<li><span>list.add(</span><span><span style="color: #c00000;">0</span></span><span>,i);  </span></li>
<li><span>System.out.println(“i的值是”+list.get(</span><span><span style="color: #c00000;">0</span></span><span>));  </span></li>
<li><span>} </span></li>
</pre>
<p>可变参数数目 J2SE 5.0 开始支持Varargs(不固定自变量个数)，J2SE 5.0中还加入了以前抛弃的枚举和C风格的格式化输出，这应该是为了吸引以前的C开发者吧。毕竟,在C开发中枚举和格式化输出用的是太多了。</p>
<p>并发 J2SE 5.0中加入了java.util.concurrent包，并向集合框架中加入了Queue接口，J2SE 5.0还为各种集合提供了并发情况下的实现。<br />
Properties类增强 由于XML的普及性应用，J2SE 5.0为java.util.Properties类加入了从XML文件中装载属性和把属性值存储到XML文件中的方法。</p>
<p>Annotation功能 J2SE 5.0提供了注解(annotation)/元数据（metadata）功能，相信以后的大部分应用产品都将充分利用它的注解而实现产品的各种特性。</p>
<p>其它 J2SE 5.0还在多线程（并发机制）、安全、国际化、UI等方面进行了大规模的变更，使得我们能够更方便地进行Java开发。</p>
<p>其实，上面的这些变更，并不是我们程序员非要不可的内容。我们完全可以通过自己的办法来达到这些变更实现的功能。但J2SE 5.0的目标就是让我们程序员能够更加方便地进行开发，所以，我们在基于J2SE 5.0开发时，应该能够明显的体会到它的易用性。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/426/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS 部署WebService时 问题记录</title>
		<link>http://www.hugstone.com/index.php/archives/407</link>
		<comments>http://www.hugstone.com/index.php/archives/407#comments</comments>
		<pubDate>Wed, 16 Dec 2009 02:56:55 +0000</pubDate>
		<dc:creator>stone</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.hugstone.com/?p=407</guid>
		<description><![CDATA[<strong>无法识别的属性"type" </strong>
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特[......]<p class='read-more'><a href='http://www.hugstone.com/index.php/archives/407'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff0000;">无法识别的属性"type" </span></strong></p>
<p>“/”应用程序中的服务器错误。<br />
--------------------------------------------------------------------------------</p>
<p>配置错误<br />
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。</p>
<p>分析器错误信息: 无法识别的属性“type”。</p>
<p>源错误:<br />
行 10： &lt;configuration&gt;<br />
行 11：  &lt;configSections&gt;<br />
行 12：   &lt;sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&gt;<br />
行 13：    &lt;sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&gt;<br />
行 14：     &lt;section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/&gt;<br />
 </p>
<p>源文件: E:\TIANJIAN Project\MobileWebService\MobileWebSrv\web.config    行: 12<br />
--------------------------------------------------------------------------------<br />
版本信息: Microsoft .NET Framework 版本:1.1.4322.2443; ASP.NET 版本:1.1.4322.2407<br />
<strong>解决方法:</strong> 将部署的该站点属性的ASP.NET选项卡中的ASP.NET版本改为2.X以上的版本.</p>
<p> </p>
<p><strong><span style="color: #ff0000;">无法找到该页</span></strong></p>
<p><strong>解决方法: </strong>将IIS的 "WEB服务扩展" 的相关服务进行启用.</p>
<p> </p>
<p><strong><span style="color: #ff0000;">当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。<br />
</span></strong></p>
<p>“/Websrv”应用程序中的服务器错误。<br />
--------------------------------------------------------------------------------</p>
<p>当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。<br />
说明: 执行当前 Web 请求期间，出现未处理的异常。请检查堆栈跟踪信息，以了解有关该错误以及代码中导致错误的出处的详细信息。</p>
<p>异常详细信息: System.Web.HttpException: 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。</p>
<p>源错误:<br />
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 </p>
<p>堆栈跟踪:<br />
[HttpException (0x80004005): 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。]<br />
   System.Web.HttpRuntime.SetUpCodegenDirectory(CompilationSection compilationSection) +748<br />
   System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags) +223</p>
<p>[HttpException (0x80004005): 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。]<br />
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +940<br />
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +70<br />
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +275<br />
--------------------------------------------------------------------------------<br />
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433</p>
<p><strong>解决方法:</strong></p>
<p>"开始-&gt;运行"中执行 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i -enable</p>
<p>Microsoft Windows [版本 5.2.3790]<br />
(C) 版权所有 1985-2003 Microsoft Corp.</p>
<p>C:\Documents and Settings\Administrator&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.<br />
50727\aspnet_regiis -i -enable<br />
开始安装 ASP.NET (2.0.50727)。<br />
...............................<br />
ASP.NET (2.0.50727)安装完毕。</p>
<p>C:\Documents and Settings\Administrator&gt;</p>
<p><strong>*.  关于ASP.NET IIS 注册工具 (Aspnet_regiis.exe)</strong></p>
<p>在一台计算机上并行执行多个 .NET Framework 版本时，映射到 ASP.NET 应用程序的 ASP.NET ISAPI 版本决定了该应用程序所使用的公共语言运行库 (CLR) 版本。使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)，管理员或安装程序可以方便地更新 ASP.NET 应用程序的脚本映射，使其指向与该工具关联的 ASP.NET ISAPI 版本。该工具还可以用于显示所有已安装的 ASP.NET 版本的状态，注册与该工具耦合的 ASP.NET 版本，创建客户端脚本目录，以及执行其他配置操作。<br />
<a href="http://msdn.microsoft.com/zh-cn/library/k6h9cz8h(VS.80).aspx" target="blank">http://msdn.microsoft.com/zh-cn/library/k6h9cz8h(VS.80).aspx</a></p>
<p>(这次安装的系统,由于是先安装的.net 框架,最后才装的IIS,因此IIS没有对该框架进行访问的限制; 在执行完该命令后,查看v2.0.50727\Temporary ASP.NET Files目录的安全权限中多了ASP.NET、IIS_WPG、Local_Service、Network_Service这几个用户及组)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hugstone.com/index.php/archives/407/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
