??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色偷偷色噜噜狠狠99网,亚洲热妇无码AV在线播放,亚洲高清中文字幕综合网http://www.tkk7.com/sunjavaer/archive/2017/07/10/432652.html丑男丑男Sun, 09 Jul 2017 16:53:00 GMThttp://www.tkk7.com/sunjavaer/archive/2017/07/10/432652.htmlhttp://www.tkk7.com/sunjavaer/comments/432652.htmlhttp://www.tkk7.com/sunjavaer/archive/2017/07/10/432652.html#Feedback0http://www.tkk7.com/sunjavaer/comments/commentRss/432652.htmlhttp://www.tkk7.com/sunjavaer/services/trackbacks/432652.html环境说明Q?/span>

OSQ?/span>windows 7 64bit DatabaseQ?/span>mysql-5.7.18-winx64 Noinstall版本

 

1. 解压Mysql安装目录

2. ~写my.ini配置文g

3. mysqld --defaults-file=../my.ini --initialize

4. ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

5. mysql –u root –p

6. 密码?/span>logs/*.err日志?br />

 
my.ini文g内容

 1 # my.ini文g内容
 2 # For advice on how to change settings please see
 3 # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
 4 # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
 5 # *** default location during install, and will be replaced if you
 6 # *** upgrade to a newer version of MySQL.
 7 
 8 [mysqld]
 9 
10 # Remove leading # and set to the amount of RAM for the most important data
11 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
12 # innodb_buffer_pool_size = 128M
13 
14 # Remove leading # to turn on a very important data integrity option: logging
15 # changes to the binary log between backups.
16 # log_bin
17 
18 # These are commonly set, remove the # and set as required.
19 basedir=D:\\mysql-5.7.18-winx64
20 datadir=D:\\mysql-5.7.18-winx64\\data
21 # port = ..
22 # server_id = ..
23 
24 
25 # Remove leading # to set options mainly useful for reporting servers.
26 # The server defaults are faster for transactions and fast SELECTs.
27 # Adjust sizes as needed, experiment to find the optimal values.
28 # join_buffer_size = 128M
29 # sort_buffer_size = 2M
30 # read_rnd_buffer_size = 2M 
31 
32 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
33 
34 long_query_time=0.1
35 slow_query_log=on
36 slow_query_log_file=D:\\mysql-5.7.18-winx64\\logs\\mysqlslow.log
37 


丑男 2017-07-10 00:53 发表评论
]]>
d用户【备份?/title><link>http://www.tkk7.com/sunjavaer/archive/2013/05/06/398872.html</link><dc:creator>丑男</dc:creator><author>丑男</author><pubDate>Mon, 06 May 2013 09:25:00 GMT</pubDate><guid>http://www.tkk7.com/sunjavaer/archive/2013/05/06/398872.html</guid><wfw:comment>http://www.tkk7.com/sunjavaer/comments/398872.html</wfw:comment><comments>http://www.tkk7.com/sunjavaer/archive/2013/05/06/398872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/sunjavaer/comments/commentRss/398872.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/sunjavaer/services/trackbacks/398872.html</trackback:ping><description><![CDATA[<p><span style="font-size:10pt">useradd -g 501 -s /sbin/nologin builder </span></p><img src ="http://www.tkk7.com/sunjavaer/aggbug/398872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/sunjavaer/" target="_blank">丑男</a> 2013-05-06 17:25 <a href="http://www.tkk7.com/sunjavaer/archive/2013/05/06/398872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]Java虚拟机JVM的调优参数选择http://www.tkk7.com/sunjavaer/archive/2009/04/29/268210.html丑男丑男Wed, 29 Apr 2009 11:24:00 GMThttp://www.tkk7.com/sunjavaer/archive/2009/04/29/268210.htmlhttp://www.tkk7.com/sunjavaer/comments/268210.htmlhttp://www.tkk7.com/sunjavaer/archive/2009/04/29/268210.html#Feedback0http://www.tkk7.com/sunjavaer/comments/commentRss/268210.htmlhttp://www.tkk7.com/sunjavaer/services/trackbacks/268210.html在Q何一个的生pȝ上线前,pȝ性能调优(Tuning)都是很重要的一步。通常Q应用系l的软硬件的~省值都是给开发^?或小规模pȝ)设计的,用来跑生产系l几乎都无法发挥Yg的最x能。有Ӟpȝ调优前后的性能会差好几倍。另一斚wQ由于应用程序的开发h员通常都是针对功能作开发的Q因此,开发硬仉是比生环境要小的机器。例如,生pȝ是一??a title="CPU" style="color: #000000;" target="_blank">CPUQ?4GB内存?a title="服务? style="color: #000000;" target="_blank">服务?/a>Q而开?a title="服务? style="color: #000000;" target="_blank">服务?/a>可能只有1个CPU?GB内存。所以,在开发h员中常常不具备做性能斚w试的Yg环境。另外,有的E序员甚臛_开发时都没有考虑到多用户q发的环境,E序中存在单点瓶颈等问题。在做压力测试和调优Ӟ往往׃发现q些关键炏V?/p>

  ׃应用pȝ是个软硬件的完整l一体,pȝ调优往往需要涉及硬件?a title="|络" style="color: #000000;" target="_blank">|络?a title="操作pȝ" style="color: #000000;" target="_blank">操作pȝ、中间gQ应用程序和数据库等斚w。在调优的过E中Q往往需要发现存在瓶颈的地方(也就是导致系l变慢的部分)Q分析原因,从而改q和定较优的参数?/p>

  我们在作JVM的调优前Q通常先要了解q行的硬件^収ͼ操作pȝ和中间gQ然后针对这些情况配|相应的pȝ参数Q在试中不断完善参数。由于性能调优需要对pȝ非常了解Qƈ且需要丰富的l验Q因此不是一件容易的事情。这里介l一些很好的参考资料,是SPEC.org的网站。这是硬件厂商公布benchmark试l果的地方,通常g厂商会把pȝ调到最优化才公布结果的Q因此很有借鉴意义。常见和JVM有关的benchmarkg要有SPECjAppServer2004和SPECjbb2005。前者是J2EE应用服务器的性能指标Q后者是服务器端Java虚拟机的性能指标。给大家介绍q个|站的目的是说大家可以参考硬件厂商给出的JVM配置Q在Ҏ(gu)自己应用环境的特点,较快的得好的参数。例如,q个|页l出了SUN公司T5120服务?应用服务?.1 +JDK1.5的SPECjAppServer2004值是8,439.36Q?/p>

  http://www.spec.org/jAppServer2004/results/res2007q4/jAppServer2004-20071106-00092.html

  我们现在要关心的不是Benchmark的?注:实际?Sun公司的这个值是个很不错的结?Q而是留意在这U环境下JVM的参数配|,可以扑ֈ一个栏?#8220;Notes / Tuning Information”Q?/p>

  JVM Options: -server -XX:+AggressiveHeap

-Xmx2560m -Xms2560m -Xmn1024m -Xss128k

-XX:PermSize=256m

-XX:+DisableExplicitGC

-XX:ParallelGCThreads=24

-XX:LargePageSizeInBytes=256m

-XX:+UseParallelOldGC

-XX:+AggressiveOpts

-DAllowManagedFieldsInDefaultFetchGroup=true

-DAllowMediatedWriteInDefaultFetchGroup=true

-XX:-UseBiasedLocking

-Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true

-Dcom.sun.jts.dblogging.insertquery=insert into

txn_log_table_0 values (
? , ? , ? )

-Dcom.sun.jts.dblogging.deletequery=delete from

txn_log_table_0 where localtid
= ? and servername = ?

-Dcom.sun.jdo.spi.persistence.support.sqlstore.

MULTILEVEL_PREFETCH
=true

  那么上面那些参数是什么意思呢?上述D落?#8220;-XX”的参数是SUN JVM的扩展选项Q其中以下的q些都是和垃圑֛?GC)有关Q?/p>

  -XX:PermSize=256m

-XX:+DisableExplicitGC

-XX:ParallelGCThreads=24

-XX:+UseParallelOldGC

-XX:+AggressiveHeap

  下面q个选项是选择大的内存面:

  -XX:LargePageSizeInBytes=256m

  "-XX:+AggressiveOpts"是一些试验性优化参敎ͼ“-XX:-UseBiasedLocking”是非竞争性的同步选项?/p>

  而选项“-Xmx2560m -Xms2560m -Xmn1024m -Xss128k”则是初始堆栈的内存|注意-Xmx?Xms的值是一L(fng)Q这L(fng)l性能会较q稳些?/p>

  至于q些参数详细代表什么意义,大家可以google一下就很容易了解。这是Sun|站上的说明,有兴的可以M下: http://java.sun.com/performance/reference/whitepapers/tuning.html

  如果你的应用pȝ是JDK1.5Q硬件是T5120Q操作系l是SolarisQ那么这些参数就很有借鉴意义。如果你的硬件系l不是T5120Q但是用SUN的JDK1.5 Q这些参C是有一定参考作用。当Ӟ最理想的是选择一个和自己的环境最q似的结果来参考。大多数软硬件的试l果都可以在SPEC.org上找刎ͼ如果你的pȝ是J2EE?层架构,可以用jAppServer2004指标Q如果是UJAVA的应用,可用jbb2005的结?

  http://www.spec.org/jAppServer2004/

  http://www.spec.org/jbb2005/

  需要注意的是,q些调优参数只是提供了一个思\Q具体是否合适你的应用还要看实测l果?/p>

丑男 2009-04-29 19:24 发表评论
]]>
[转帖]Hibernate常用保存http://www.tkk7.com/sunjavaer/archive/2008/08/23/223899.html丑男丑男Sat, 23 Aug 2008 13:22:00 GMThttp://www.tkk7.com/sunjavaer/archive/2008/08/23/223899.htmlhttp://www.tkk7.com/sunjavaer/comments/223899.htmlhttp://www.tkk7.com/sunjavaer/archive/2008/08/23/223899.html#Feedback0http://www.tkk7.com/sunjavaer/comments/commentRss/223899.htmlhttp://www.tkk7.com/sunjavaer/services/trackbacks/223899.html 一、预备知识:
在所有之前,说明一下,对于hibernateQ它的对象有三种状态,transient、persistent、detached
下边是常见的译办法Q?
transientQ瞬态或者自由?
persistentQ持久化状?
detachedQ脱状态或者游L?
q状态的实例可以通过调用saveQ)、persistQ)或者saveOrUpdateQ)Ҏ(gu)q行持久化?
持久化实例可以通过调用 deleteQ)变成q状态。通过getQ)或loadQ)Ҏ(gu)得到的实例都是持久化状态的?
q状态的实例可以通过调用 updateQ)?saveOrUpdateQ)、lockQ)或者replicateQ)q行持久化?
saveQ) 和persistQ)会引发SQL的INSERTQdeleteQ)会引发SQLDELETEQ而updateQ)或mergeQ)会引? SQLUPDATE.Ҏ(gu)久化QpersistentQ实例的修改在刷新提交的时候会被检到Q它也会引v SQLUPDATE.saveOrUpdateQ)或者replicateQ)会引发SQLINSERT或者UPDATE
二、save 和update区别
把这一Ҏ(gu)在第一位的原因是因一Ҏ(gu)最常用的?
save的作用是把一个新的对象保?
update是把一个脱状态的对象保存
三、update 和saveOrUpdate区别
q个是比较好理解的,֐思义QsaveOrUpdate基本上就是合成了save和update引用hibernate reference中的一D话来解释他们的使用场合和区别?
通常下面的场景会使用updateQ)或saveOrUpdateQ)Q?
E序在第一个session中加载对?
该对象被传递到表现?
对象发生了一些改?
该对象被q回C务逻辑?
E序调用W二个session的updateQ)Ҏ(gu)持久q些改动
saveOrUpdateQ)做下面的事:
如果对象已经在本session中持久化了,不做M?
如果另一个与本session兌的对象拥有相同的持久化标识(identifierQ,抛出一个异?
如果对象没有持久化标识(identifierQ属性,对其调用saveQ)
如果对象的持久标识(identifierQ表明其是一个新实例化的对象Q对其调用saveQ)
如果对象是附带版本信息的Q通过或) q且版本属性的D明其是一个新实例化的对象QsaveQ)它?
四、persist和save区别
q个是最qL(fng)的一对,表面上看h使用哪个都行Q在hibernate reference文档中也没有明确的区分他们?
q里l出一个明的区分。(可以跟进src看一下,虽然实现步骤cMQ但是还是有l微的差别)
1.persist把一个瞬态的实例持久化,但是q?不保?标识W被立刻填入到持久化实例中,标识W的填入可能被推q到flush的时间?
2.persist" 保证"Q当它在一个transaction外部被调用的时候ƈ不触发一个Sql InsertQ这个功能是很有用的Q当我们通过l承Session/persistence context来封装一个长会话程的时候,一个persistq样的函数是需要的?
3.save"不保?W?条,它要q回标识W,所以它会立x行Sql insertQ不是不是在transaction内部?
五、saveOrUpdateCopyQmerge和update区别
首先说明merge是用来代替saveOrUpdateCopy?然后比较update和mergeQupdate的作用上边说了,q里说一下merge的作用?
如果session中存在相同持久化标识QidentifierQ的实例Q用用户l出的对象的状态覆盖旧有的持久实例
如果session没有相应的持久实例,则尝试从数据库中加蝲Q或创徏新的持久化实例,最后返回该持久实例
用户l出的这个对象没有被兌到session上,它依旧是q?
重点是最后一句:
当我们用update的时候,执行完成后,我们提供的对象A的状态变成持久化状?
但当我们使用merge的时候,执行完成Q我们提供的对象Aq是q状态,hibernate或者new了一个BQ或者检索到一个持久对象,q把我们提供的对象A的所有的值拷贝到q个BQ执行完成后B是持久状态,而我们提供的Aq是托管状态?
六、flush和update区别
q两个的区别好理?
update操作的是在脱状态的对象Q而flush是操作的在持久状态的对象?
默认情况下,一个持久状态的对象是不需要update的,只要你更改了对象的|{待hibernate flushp动保存到数据库了。hibernate flush发生再几U情况下Q?
1.调用某些查询的时?
2.transaction commit的时?
3.手动调用flush的时?
七、lock和update区别
update是把一个已l更改过的脱状态的对象变成持久状?
lock是把一个没有更改过的脱状态的对象变成持久状?
对应更改一个记录的内容Q两个的操作不同Q?
update的操作步骤是Q?
更改q的对?>调用update
lock的操作步骤是Q?
调用lock把对象从q状态变成持久状态—?gt;更改持久状态的对象的内容—?gt;{待f(xi)lush或者手动flush

丑男 2008-08-23 21:22 发表评论
]]>
[转帖]Oracle执行计划解释http://www.tkk7.com/sunjavaer/archive/2008/08/22/223793.html丑男丑男Fri, 22 Aug 2008 14:33:00 GMThttp://www.tkk7.com/sunjavaer/archive/2008/08/22/223793.htmlhttp://www.tkk7.com/sunjavaer/comments/223793.htmlhttp://www.tkk7.com/sunjavaer/archive/2008/08/22/223793.html#Feedback0http://www.tkk7.com/sunjavaer/comments/commentRss/223793.htmlhttp://www.tkk7.com/sunjavaer/services/trackbacks/223793.html

一Q相关的概念

    Rowid的概念:rowid是一个伪列,既然是伪列,那么q个列就不是用户定义Q而是pȝ自己l加上的?Ҏ(gu)个表都有一个rowid的伪列,但是表中q不物理存储ROWID列的倹{不q你可以像用其它列那样使用它,但是不能删除改列Q也不能对该列的D?修改、插入。一旦一行数据插入数据库Q则rowid在该行的生命周期内是唯一的,卛_使该行生行q移Q行的rowid也不会改变?/font>

    Recursive SQL概念Q有时ؓ了执行用户发出的一个sql语句Q?font color="#0000ff">oracle必须执行一些额外的语句Q我们将q些额外的语句称之ؓ''recursive calls''?'recursive sql statements''.如当一个DDL语句发出后,ORACLEL隐含的发Z些recursive SQL语句Q来修改数据字典信息Q以便用户可以成功的执行该DDL语句。当需要的数据字典信息没有在共享内存中Ӟl常会发生Recursive callsQ这些Recursive calls会将数据字典信息从硬盘读入内存中。用户不比关心这些recursive SQL语句的执行情况,在需要的时候,ORACLE会自动的在内部执行这些语句。当然DML语句与SELECT都可能引起recursive sql.单的_我们可以触发器视ؓrecursive sql.

    Row SourceQ行源)Q用在查询中Q由上一操作q回的符合条件的行的集合Q即可以是表的全部行数据的集合;也可以是表的部分行数据的集合Q也可以为对?个row sourceq行q接操作Q如joinq接Q后得到的行数据集合?/p>

    PredicateQ谓词)Q一个查询中的WHERE限制条g

    Driving tableQ驱动表Q:该表又称为外层表QOUTER tableQ? q个概念用于嵌套与HASHq接中。如果该row sourceq回较多的行数据Q则Ҏ(gu)有的后箋操作有负面媄响。注意此处虽然翻译ؓ驱动表,但实际上译为驱动行源(driving row sourceQ更为确切。一般说来,是应用查询的限制条g后,q回较少行源的表作ؓ驱动表,所以如果一个大表在WHERE条g有有限制条gQ如{值限 ӞQ则该大表作为驱动表也是合适的Q所以ƈ不是只有较小的表可以作ؓ驱动表,正确说法应该为应用查询的限制条g后,q回较少行源的表作ؓ驱动表。在执行 计划中,应该为靠上的那个row sourceQ后面会l出具体说明。在我们后面的描qCQ一般将该表UCؓq接操作的row source 1.

    Probed tableQ被探查表)Q该表又UCؓ内层表(INNER tableQ。在我们从驱动表中得到具体一行的数据后,在该表中LW合q接条g的行。所以该表应当ؓ大表Q实际上应该回较大row source的表Q且相应的列上应该有索引。在我们后面的描qCQ一般将该表UCؓq接操作的row source 2.

    l合索引Qconcatenated indexQ:由多个列构成的烦引,如create index idx_emp on empQcol1Q?col2Q?col3Q?……Q,则我们称idx_emp索引为组合烦引。在l合索引中有一个重要的概念Q引导列Qleading columnQ,在上面的例子中,col1列ؓ引导列。当我们q行查询时可以?#8220;where col1 = Q?”Q也可以使用“where col1 = Q?and col2 = Q?#8221;Q这L(fng)限制条g都会使用索引Q但?#8220;where col2 = Q? ”查询׃会用该索引。所以限制条件中包含先导列时Q该限制条g才会使用该组合烦引?/p>

    可选择性(selectivityQ:比较一下列中唯一键的数量和表中的行数Q就可以判断该列的可选择性? 如果该列?#8220;唯一键的数量/表中的行?#8221;的比D接近1Q则该列的可选择性越高,该列p适合创徏索引Q同L(fng)引的可选择性也高。在可选择性高的列上进 行查询时Q返回的数据p?yu),比较适合使用索引查询?/p>

Ƣ迎q入OracleC֌论坛Q与200万技术h员互动交?>>q入
二.oracle讉K数据的存取方?/strong>

    1Q?全表扫描QFull table ScansQ?FTSQ?/font>

    为实现全表扫描,oracle? 取表中所有的行,q检查每一行是否满句的WHERE限制条g一个多块读 操作可以使一ơI/O能读取多块数据块Qdb_block_multiblock_read_count参数讑֮Q,而不是只d一个数据块Q这极大的减 了I/OL敎ͼ提高了系l的吞吐量,所以利用多块读的方法可以十分高效地实现全表扫描Q而且只有在全表扫描的情况下才能用多块读操作。在q种讉K? 式下Q每个数据块只被Mơ?/font>

    使用FTS的前提条Ӟ在较大的表上不徏议用全表扫描,除非取出数据的比较多Q超q总量?% —?10%Q或你想使用q行查询功能时?/font>

    使用全表扫描的例子:

    ~~~~~~~~~~~~~~~~~~~~~~~~ sql> explain plan for select * from dual;

    Query Plan

    -----------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=

    table ACCESS FULL DUAL

    2Q?通过ROWID的表存取QTable Access by ROWID或rowid lookupQ?/font>

    行的ROWID指出了该行所在的数据文g、数据块以及行在该块中的位置Q所以通过ROWID来存取数据可以快速定位到目标数据上,是Oracle存取单行数据的最快方法?/font>

    q种存取Ҏ(gu)不会用到多块L作,一ơI/O只能d一个数据块。我们会l常在执行计划中看到该存取方法,如通过索引查询数据?/font>

    使用ROWID存取的方法: sql> explain plan for select * from dept where rowid = ''AAAAyGAADAAAAATAAF''Q?/font>

    Query Plan

    ------------------------------------

    SELECT STATEMENT [CHOOSE] Cost=1

    table ACCESS BY ROWID DEPT [ANALYZED]


    3Q烦引扫描(Index Scan或index lookupQ?/p>

    我们先通过index查找到数据对应的rowid|对于非唯一索引可能q回多个rowid|Q然后根据rowid直接从表中得到具体的数据Q这 U查找方式称为烦引扫描或索引查找Qindex lookupQ。一个rowid唯一的表CZ行数据,该行对应的数据块是通过一ơi/o得到的,在此情况下该ơi/o只会d一个数据库块?/p>

    在烦引中Q除?font color="#0000ff" face="宋体">存储每个索引的值外Q烦引还存储h此? 的行对应的ROWID倹{烦引扫描可以由2步组成:Q?Q?扫描索引得到对应的rowid倹{?Q?Q? 通过扑ֈ的rowid从表中读出具体的数据。每步都是单独的一ơI/OQ但是对于烦引,׃l常使用Q绝大多数都已经CACHE到内存中Q所以第1步的 I/Ol常是逻辑I/OQ即数据可以从内存中得到。但是对于第2步来_如果表比较大Q则其数据不可能全在内存中,所以其I/O很有可能是物理I/OQ这 是一个机械操作,相对逻辑I/O来说Q是极其Ҏ(gu)间的。所以如果多大表q行索引扫描Q取出的数据如果大于总量?% —? 10%Q用烦引扫描会效率下降很多。如下列所C:SQL> explain plan for select empnoQ?ename from emp where empno=10Q?/p>

    Query Plan

    ------------------------------------

    SELECT STATEMENT [CHOOSE] Cost=1

    table ACCESS BY ROWID EMP [ANALYZED]

    INDEX UNIQUE SCAN EMP_I1


    但是如果查询的数据能全在索引中找刎ͼ可以避免进行第2步操作,避免了不必要的I/OQ此时即佉K过索引扫描取出的数据比较多Q效率还是很高的

    sql> explain plan for select empno from emp where empno=10;-- 只查询empno列?/p>

    Query Plan

    ------------------------------------

    SELECT STATEMENT [CHOOSE] Cost=1

    INDEX UNIQUE SCAN EMP_I1

    q一步讲Q如果sql语句中对索引列进行排序,因ؓ索引已经预先排序好了Q所以在执行计划中不需要再对烦引列q行排序
    sql> explain plan for select empno, ename from emp

    where empno > 7876 order by empno;

    Query Plan

    --------------------------------------------------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=1

    table ACCESS BY ROWID EMP [ANALYZED]

    INDEX RANGE SCAN EMP_I1 [ANALYZED]


    从这个例子中可以看到Q因为烦引是已经排序了的Q所以将按照索引的顺序查询出W合条g的行Q因此避免了q一步排序操作?/p>

Ҏ(gu)索引的类型与where限制条g的不同,?U类型的索引扫描Q?/p>

    索引唯一扫描Qindex unique scanQ?/p>

    索引范围扫描Qindex range scanQ?/p>

    索引全扫描(index full scanQ?/p>

    索引快速扫描(index fast full scanQ?/p>

    Q?Q?索引唯一扫描Qindex unique scanQ?/p>

    通过唯一索引查找一个数值经常返回单个ROWID.如果存在UNIQUE 或PRIMARY KEY U束Q它保证了语句只存取单行Q的话,Oraclel常实现唯一性扫描?/p>

    使用唯一性约束的例子Q?/p>

    sql> explain plan for

    select empnoQename from emp where empno=10Q?/p>

    Query Plan

------------------------------------

    SELECT STATEMENT [CHOOSE] Cost=1

    table ACCESS BY ROWID EMP [ANALYZED]

    INDEX UNIQUE SCAN EMP_I1

    Q?Q?索引范围扫描Qindex range scanQ?/p>

    使用一个烦引存取多行数据,在唯一索引上用烦引范围扫描的典型情况下是在谓词(where限制条gQ中使用了范围操作符Q如>?lt;?lt;>?gt;=?lt;=、betweenQ?/p>

    使用索引范围扫描的例子:

    sql> explain plan for select empnoQename from emp

    where empno > 7876 order by empnoQ?/p>

    Query Plan

--------------------------------------------------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=1

    table ACCESS BY ROWID EMP [ANALYZED]

    INDEX RANGE SCAN EMP_I1 [ANALYZED]

    在非唯一索引上,谓词col = 5可能q回多行数据Q所以在非唯一索引上都使用索引范围扫描?/p>

    使用index rang scan?U情况:

    QaQ?在唯一索引列上使用了range操作W(> < <> >= <= betweenQ?/p>

    QbQ?在组合烦引上Q只使用部分列进行查询,D查询出多?/p>

    QcQ?寚w唯一索引列上q行的Q何查询?/p>

    Q?Q?索引全扫描(index full scanQ?/p>

    与全表扫描对应,也有相应的全索引扫描。而且此时查询出的数据都必M索引中可以直接得到?/p>

    全烦引扫描的例子Q?/p>

    An Index full scan will not perform single block i/o''s and so it may prove to be inefficient.

    e.g.

    Index BE_IX is a concatenated index on big_emp QempnoQ?enameQ?/p>

    sql> explain plan for select empnoQ?ename from big_emp order by empnoQenameQ?/p>

    Query Plan

--------------------------------------------------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=26

    INDEX FULL SCAN BE_IX [ANALYZED]

    Q?Q?索引快速扫描(index fast full scanQ?/p>

    扫描索引中的所有的数据块,?index full scan很类|但是一个显著的区别是它不Ҏ(gu)询出的数据进行排序,x据不是以排序序被返回。在q种存取Ҏ(gu)中,可以使用多块d能,也可以用ƈ行读入,以便获得最大吞吐量与羃短执行时间?/p>

    索引快速扫描的例子Q?/p>

    BE_IX索引是一个多列烦引: big_emp QempnoQenameQ?/p>

    sql> explain plan for select empnoQename from big_empQ?/p>

    Query Plan

------------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=1

    INDEX FAST FULL SCAN BE_IX [ANALYZED]

    只选择多列索引的第2列:

    sql> explain plan for select ename from big_empQ?/p>

    Query Plan

------------------------------------------

    SELECT STATEMENT[CHOOSE] Cost=1

    INDEX FAST FULL SCAN BE_IX [ANALYZED]

   三、表之间的连?/strong>

    Join是一U试囑ְ两个表结合在一L(fng)谓词Q一ơ只能连?个表Q表q接也可以被UCؓ表关联。在后面的叙 qCQ我们将会?#8220;row source”来代?#8220;?#8221;Q因Z用row source更严谨一些,q且参与连接的2个row source分别UCؓrow source1和row source 2.Joinq程的各个步骤经常是串行操作Q即使相关的row source可以被ƈ行访问,卛_以ƈ行的d做joinq接的两个row source的数据,但是在将表中W合限制条g的数据读入到内存形成row source后,join的其它步骤一般是串行的。有多种Ҏ(gu)可以?个表q接hQ当然每U方法都有自q优缺点,每种q接cd只有在特定的条g下才? 发挥出其最大优ѝ?/font>

    row sourceQ表Q之间的q接序对于查询的效率有非常大的影响。通过首先存取特定的表Q即该表作为驱动表Q这样可以先应用某些限制条gQ从而得C? 较小的row sourceQɘq接的效率较高,q也是我们常说的要先执行限制条件的原因。一般是在将表读入内存时Q应用where子句中对该表的限制条件?/font>

    Ҏ(gu)2个row source的连接条件的中操作符的不同,可以连接分为等D接(如WHERE A.COL3 = B.COL4Q、非{D接(WHERE A.COL3 > B.COL4Q、外q接QWHERE A.COL3 = B.COL4Q?Q)。上面的各个q接的连接原理都基本一P所以ؓ了简单期_下面以等D接ؓ例进行介l?/font>

    在后面的介绍中,都已Q?/font>

    SELECT A.COL1Q?B.COL2

    FROM AQ?B

    WHERE A.COL3 = B.COL4Q?/font>

    Zq行说明Q假设A表ؓRow Soruce1Q则其对应的q接操作兌列ؓCOL 3QB表ؓRow Soruce2Q则其对应的q接操作兌列ؓCOL 4Q?/font>

    q接cdQ?/font>

    目前为止Q无接操作符如何Q典型的q接cd共有3U:

    排序 - - 合ƈq接QSort Merge Join QSMJQ?Q?/font>

    嵌套循环QNested Loops QNLQ?Q?/font>

    哈希q接QHash JoinQ?/font>

    排序 - - 合ƈq接QSort Merge JoinQ?SMJQ?/font>

    内部q接q程Q?/font>

    1Q?首先生成row source1需要的数据Q然后对q些数据按照q接操作兌列(如A.col3Q进行排序?/font>

    2Q?随后生成row source2需要的数据Q然后对q些数据按照与sort source1对应的连接操作关联列Q如B.col4Q进行排序?/font>

    3Q?最后两边已排序的行被放在一h行合q操作,卛_2个row source按照q接条gq接h

    下面是连接步骤的囑Ş表示Q?/font>

    MERGE

    /"

    SORTSORT

    ||

    Row Source 1Row Source 2

    如果row source已经在连接关联列上被排序Q则该连接操作就不需要再q行sort操作Q这样可以大大提高这U连接操作的q接速度Q因为排序是个极其费资源的操 作,特别是对于较大的表。预先排序的row source包括已经被烦引的列(如a.col3或b.col4上有索引Q或row source已经在前面的步骤中被排序了。尽合q两个row source的过E是串行的,但是可以q行讉Kq两个row sourceQ如q行d数据Qƈ行排序)?/font>

    SMJq接的例子:SQL> explain plan for

    select /*+ ordered */ e.deptnoQ?d.deptno

    from emp eQ?dept d

    where e.deptno = d.deptno

    order by e.deptnoQ?d.deptnoQ?/font>

    Query Plan

-------------------------------------

    SELECT STATEMENT [CHOOSE] Cost=17

    MERGE JOIN

    SORT JOIN

    table ACCESS FULL EMP [ANALYZED]

    SORT JOIN

    table ACCESS FULL DEPT [ANALYZED]


    排序是一个费时、费资源的操作,特别对于大表。基于这个原因,SMJl常不是一个特别有效的q接Ҏ(gu)Q但是如?个row source都已l预先排序,则这U连接方法的效率也是蛮高的?/p>

    嵌套循环QNested LoopsQ?NLQ?/strong>

    q个q接Ҏ(gu)有驱动表Q外部表Q的概念。其实,该连接过E就是一?层嵌套@环,所以外层@环的ơ数少好Q这也就是我们ؓ什么将表或返回较?yu)? row source的表作ؓ驱动表(用于外层循环Q的理论依据。但是这个理论只是一般指导原则,因ؓ遵@q个理论q不能M证语句产生的I/Oơ数最。有? 不遵守这个理Z据,反而会获得更好的效率。如果用这U方法,军_使用哪个表作为驱动表很重要。有时如果驱动表选择不正,会D语句的性能很差、很 差?/p>

    内部q接q程Q?/p>

    Row source1的Row 1 —?Probe ->Row source 2

    Row source1的Row 2 —?Probe ->Row source 2

    Row source1的Row 3 —?Probe ->Row source 2

    ……?/p>

    Row source1的Row n —?Probe ->Row source 2

    从内部连接过E来看,需要用row source1中的每一行,d配row source2中的所有行Q所以此时保持row source1可能的与高效的访问row source2Q一般通过索引实现Q是影响q个q接效率的关键问题。这只是理论指导原则Q目的是使整个连接操作生最的物理I/Oơ数Q而且如果遵守q? 个原则,一般也会ȝ物理I/O数最。但是如果不遵从q个指导原则Q反而能用更的物理I/O实现q接操作Q那管q反指导原则吧!因ؓ最的物理 I/Oơ数才是我们应该遵从的真正的指导原则Q在后面的具体案例分析中qL(fng)例子?/p>

    在上面的q接q程中,我们URow source1为驱动表或外部表。Row Source2被称探查表或内部表?/p>

    在NESTED LOOPSq接中,Oracledrow source1中的每一行,然后在row sourc2中检查是否有匚w的行Q所有被匚w的行都被攑ֈl果集中Q然后处理row source1中的下一行。这个过E一直l,直到row source1中的所有行都被处理。这是从q接操作中可以得到第一个匹配行的最快的Ҏ(gu)之一Q这U类型的q接可以用在需要快速响应的语句中,以响应速度? 主要目标?/p>

    如果driving row sourceQ外部表Q比较小Qƈ且在inner row sourceQ内部表Q上有唯一索引Q或有高选择性非唯一索引Ӟ使用q种Ҏ(gu)可以得到较好的效率。NESTED LOOPS有其它连接方法没有的的一个优Ҏ(gu)Q可以先q回已经q接的行Q而不必等待所有的q接操作处理完才q回数据Q这可以实现快速的响应旉?/p>

    如果不用ƈ行操作,最好的驱动表是那些应用了where 限制条g后,可以q回较少行数据的的表Q所以大表也可能UCؓ驱动表,关键看限制条件。对于ƈ行查询,我们l常选择大表作ؓ驱动表,因ؓ大表可以充分利用q? 行功能。当Ӟ有时Ҏ(gu)询用ƈ行操作ƈ不一定会比查询不使用q行操作效率高,因ؓ最后可能每个表只有很少的行W合限制条gQ而且q要看你的硬仉|是? 可以支持q行Q如是否有多个CPUQ多个硬盘控制器Q,所以要具体问题具体对待?/p>

    NLq接的例子:

    sql> explain plan for

    select a.dnameQb.sql

    from dept aQemp b

    where a.deptno = b.deptnoQ?/p>

    Query Plan

-------------------------

    SELECT STATEMENT [CHOOSE] Cost=5

    NESTED LOOPS

    table ACCESS FULL DEPT [ANALYZED]

    table ACCESS FULL EMP [ANALYZED]


    哈希q接QHash JoinQ?HJQ?/strong>

    q种q接是在oracle 7.3以后引入的,从理Z来说比NL与SMJ更高效,而且只用在CBO优化器中?/p>

    较小的row source被用来构建hash table与bitmapQ第2个row source被用来被hansedQƈ与第一个row source生成的hash tableq行匚wQ以便进行进一步的q接。Bitmap被用来作ZU比较快的查找方法,来检查在hash table中是否有匚w的行。特别的Q当hash table比较大而不能全部容U_内存中时Q这U查找方法更为有用。这U连接方法也有NLq接中所谓的驱动表的概念Q被构徏为hash table与bitmap的表为驱动表Q当被构建的hash table与bitmap能被容纳在内存中Ӟq种q接方式的效率极高?/p>

    HASHq接的例子:

    sql> explain plan for

    select /*+ use_hashQempQ?*/ empno

    from empQ?dept

    where emp.deptno = dept.deptnoQ?/p>

    Query Plan

----------------------------

    SELECT STATEMENT[CHOOSE] Cost=3

    HASH JOIN

    table ACCESS FULL DEPT

    table ACCESS FULL EMP


    要哈希q接有效Q需要设|HASH_JOIN_ENABLED=TRUEQ缺省情况下该参CؓTRUEQ另外,不要忘了q要讄 hash_area_size参数Q以使哈希连接高效运行,因ؓ哈希q接会在该参数指定大的内存中运行,q小的参C使哈希连接的性能比其他连接方式还 要低?/p>

    ȝ一下,在哪U情况下用哪U连接方法比较好Q?/p>

    排序 - - 合ƈq接QSort Merge JoinQ?SMJQ:

    aQ?对于非等D接,q种q接方式的效率是比较高的?/p>

    bQ?如果在关联的列上都有索引Q效果更好?/p>

    cQ?对于?个较大的row source做连接,该连接方法比NLq接要好一些?/p>

    dQ?但是如果sort mergeq回的row sourceq大Q则又会D使用q多的rowid在表中查询数据时Q数据库性能下降Q因多的I/O.

    嵌套循环QNested LoopsQ?NLQ:

    aQ?如果driving row sourceQ外部表Q比较小Qƈ且在inner row sourceQ内部表Q上有唯一索引Q或有高选择性非唯一索引Ӟ使用q种Ҏ(gu)可以得到较好的效率?/p>

    bQ?NESTED LOOPS有其它连接方法没有的的一个优Ҏ(gu)Q可以先q回已经q接的行Q而不必等待所有的q接操作处理完才q回数据Q这可以实现快速的响应旉?/p>

    哈希q接QHash JoinQ?HJQ:

    aQ?q种Ҏ(gu)是在oracle7后来引入的,使用了比较先q的q接理论Q一般来_其效率应该好于其?U连接,但是q种q接只能用在CBO优化器中Q而且需要设|合适的hash_area_size参数Q才能取得较好的性能?/p>

    bQ??个较大的row source之间q接时会取得相对较好的效率,在一个row source较小时则能取得更好的效率?/p>

    cQ?只能用于{D接中

    W卡儿乘U(Cartesian ProductQ?/p>

    当两个row source做连接,但是它们之间没有兌条gӞ׃在两个row source中做W卡儿乘U,q通常q写代码疏漏造成Q即E序员忘了写兌条gQ。笛卡尔乘积是一个表的每一行依ơ与另一个表中的所有行匚w。在Ҏ(gu)? 况下我们可以使用W卡儿乘U,如在星Şq接中,除此之外Q我们要量使用W卡儿乘U,否则Q自己想l果是什么吧Q?/p>

    注意在下面的语句中,?个表之间没有q接?/p>

    sql> explain plan for

    select emp.deptnoQdeptQdeptno

    from empQdept

    Query Plan

------------------------

    SLECT STATEMENT [CHOOSE] Cost=5

    MERGE JOIN CARTESIAN

    table ACCESS FULL DEPT

    SORT JOIN

    table ACCESS FULL EMP

    CARTESIAN关键字指Z?个表之间做笛卡尔乘积。假如表emp有n行,dept表有m行,W卡乘U的l果是得到n * m行结果?/p>

丑男 2008-08-22 22:33 发表评论
]]>
Fedora 7 安装 nvidia昑֍驱动http://www.tkk7.com/sunjavaer/archive/2007/07/29/133114.html丑男丑男Sun, 29 Jul 2007 05:48:00 GMThttp://www.tkk7.com/sunjavaer/archive/2007/07/29/133114.htmlhttp://www.tkk7.com/sunjavaer/comments/133114.htmlhttp://www.tkk7.com/sunjavaer/archive/2007/07/29/133114.html#Feedback0http://www.tkk7.com/sunjavaer/comments/commentRss/133114.htmlhttp://www.tkk7.com/sunjavaer/services/trackbacks/133114.htmlW二步,驱动只能在命令行方式下安装,所以要修改/etc/inittab文g
    id:3:initdefault
                3代表文本方式Q5代表囑Ş方式
    修改后重启系l?br>W三步,执行驱动Q不出意外会非常的顺利,之后shutdown -r now完成了

本h也是W一ơ安装,有不对的地方请大家指正,好q?br>


丑男 2007-07-29 13:48 发表评论
]]>
apache rewrite 单应?/title><link>http://www.tkk7.com/sunjavaer/archive/2007/07/16/130676.html</link><dc:creator>丑男</dc:creator><author>丑男</author><pubDate>Mon, 16 Jul 2007 13:47:00 GMT</pubDate><guid>http://www.tkk7.com/sunjavaer/archive/2007/07/16/130676.html</guid><wfw:comment>http://www.tkk7.com/sunjavaer/comments/130676.html</wfw:comment><comments>http://www.tkk7.com/sunjavaer/archive/2007/07/16/130676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/sunjavaer/comments/commentRss/130676.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/sunjavaer/services/trackbacks/130676.html</trackback:ping><description><![CDATA[主要需求,DNS<a >www.mydomain.com</a>指向<a >www.mydomain.com/app/login.do</a><br><br>目前是DNS指向某一个IPQ不能将IP对应?0.11.xxx.xxx/app/login.do<br><br>生环境WEB服务器是apache server<br><br><br><strong>解决办法<br></strong>利用apache rewriter功能Q在httpd.conf中找?br><br>#LoadModule rewrite_module modules/mod_rewrite.so<br><br>?号去掉,也就是把mod_rewrite.so模块加蝲q来<br><br>之后在文件结֤d<br><br>rewriteengine on <br>rewriterule ^/$ <a >http://10.11.xxx.xxx/app/login.do</a> [R] <img src ="http://www.tkk7.com/sunjavaer/aggbug/130676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/sunjavaer/" target="_blank">丑男</a> 2007-07-16 21:47 <a href="http://www.tkk7.com/sunjavaer/archive/2007/07/16/130676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转脓(chung)]jasperreport可以用Collection做ؓ数据?/title><link>http://www.tkk7.com/sunjavaer/archive/2005/12/11/23371.html</link><dc:creator>丑男</dc:creator><author>丑男</author><pubDate>Sun, 11 Dec 2005 10:12:00 GMT</pubDate><guid>http://www.tkk7.com/sunjavaer/archive/2005/12/11/23371.html</guid><wfw:comment>http://www.tkk7.com/sunjavaer/comments/23371.html</wfw:comment><comments>http://www.tkk7.com/sunjavaer/archive/2005/12/11/23371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/sunjavaer/comments/commentRss/23371.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/sunjavaer/services/trackbacks/23371.html</trackback:ping><description><![CDATA[<SPAN style="COLOR: #000000"> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Code_Closed_Image onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height=16 src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><IMG id=Code_Open_Image style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height=16 src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><SPAN id=Code_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></SPAN><SPAN id=Code_Open_Text style="DISPLAY: none"><BR><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><SPAN style="COLOR: #008080"> 1</SPAN><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page contentType</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">text/html;charset=GBK</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">dori.jasper.engine.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">java.util.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">java.io.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 5</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">java.sql.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">com.zx.report.util.CarUse</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">dori.jasper.engine.data.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 8</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080"> 9<SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></SPAN><SPAN style="COLOR: #000000">Connection conn </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top>Statement st </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top>ResultSet rs </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">byte</SPAN><SPAN style="COLOR: #000000">[] bytes </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top>List carUseList</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> ArrayList(); <BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_420_2737_Open_Image onclick="this.style.display='none'; Codehighlighter1_420_2737_Open_Text.style.display='none'; Codehighlighter1_420_2737_Closed_Image.style.display='inline'; Codehighlighter1_420_2737_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_420_2737_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_420_2737_Closed_Text.style.display='none'; Codehighlighter1_420_2737_Open_Image.style.display='inline'; Codehighlighter1_420_2737_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN id=Codehighlighter1_420_2737_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_420_2737_Open_Text><SPAN style="COLOR: #000000">{ <BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>Class.forName(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">com.microsoft.jdbc.sqlserver.SQLServerDriver</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>conn </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">DriverManager.getConnection(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">jdbc:microsoft:sqlserver://10.10.10.207:1433;DatabaseName=report;user=sa;password=111111</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">以输入流方式 </SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">   InputStream reportFile </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> getClass().getClassLoader().getResourceAsStream(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">carUserBd.jasper</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">以reportFile方式 <BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">File reportFile =new File(request.getRealPath("/report/carUserBd.jasper")); </SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">26</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>Map parameters </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> HashMap(); <BR></SPAN><SPAN style="COLOR: #008080">27</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">28</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">29</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>String sqlCarUser</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SELECT car.carNo, dept.Name , people.peopleName,carUse.useDescription ,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">30</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> carUse.beginTime , carUse.planEndTime , carUse.comment , carUse.driver,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">31</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> carUse.peopleNumber ,OneWay= case carUse.isOneWay  when 0 then '双程'  else '单程'  end, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">32</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">isFirst= case carUse.priority when 0  then '? when  1  then  '?  else  '?  end, carUse.start , </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">33</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">carUse.destination , people.peopleName as ratifier FROM DEPT_CARUSELOG carUse , DEPT_CARINFO car , </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">34</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ADMIN_ORGANIZATION dept , PUBLIC_PEOPLEINFO people WHERE carUse.id=290 and </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">35</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">caruse.carId=car.carId and carUse.departId=dept.id and carUse.peopleId=people.peopleId</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">36</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">37</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>st </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> conn.createStatement(); <BR></SPAN><SPAN style="COLOR: #008080">38</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>rs </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> st.executeQuery(sqlCarUser); <BR></SPAN><SPAN style="COLOR: #008080">39</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">40</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_1595_2192_Open_Image onclick="this.style.display='none'; Codehighlighter1_1595_2192_Open_Text.style.display='none'; Codehighlighter1_1595_2192_Closed_Image.style.display='inline'; Codehighlighter1_1595_2192_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1595_2192_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1595_2192_Closed_Text.style.display='none'; Codehighlighter1_1595_2192_Open_Image.style.display='inline'; Codehighlighter1_1595_2192_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">(rs.next())</SPAN><SPAN id=Codehighlighter1_1595_2192_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1595_2192_Open_Text><SPAN style="COLOR: #000000">{ <BR></SPAN><SPAN style="COLOR: #008080">41</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>CarUse carUse</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> CarUse(); <BR></SPAN><SPAN style="COLOR: #008080">42</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setCarNo(rs.getString(</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">43</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setName(rs.getString(</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">44</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setPeopleName(rs.getString(</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">45</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setUseDescription(rs.getString(</SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">46</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setBeginTime(rs.getDate(</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">47</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setPlanEndTime(rs.getDate(</SPAN><SPAN style="COLOR: #000000">6</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">48</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setComment(rs.getString(</SPAN><SPAN style="COLOR: #000000">7</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">49</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setDriver(rs.getString(</SPAN><SPAN style="COLOR: #000000">8</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">50</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setPeopleNumber(rs.getString(</SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">51</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setOneWay(rs.getString(</SPAN><SPAN style="COLOR: #000000">10</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">52</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setIsFirst(rs.getString(</SPAN><SPAN style="COLOR: #000000">11</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">53</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setStart(rs.getString(</SPAN><SPAN style="COLOR: #000000">12</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">54</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setDestination(rs.getString(</SPAN><SPAN style="COLOR: #000000">13</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">55</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUse.setRatifier(rs.getString(</SPAN><SPAN style="COLOR: #000000">14</SPAN><SPAN style="COLOR: #000000">)); <BR></SPAN><SPAN style="COLOR: #008080">56</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">57</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>carUseList.add(carUse); <BR></SPAN><SPAN style="COLOR: #008080">58</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">59</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">60</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">61</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>JRBeanCollectionDataSource ds </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> JRBeanCollectionDataSource(carUseList); <BR></SPAN><SPAN style="COLOR: #008080">62</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">63</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>bytes </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">64</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>JasperRunManager.runReportToPdf( <BR></SPAN><SPAN style="COLOR: #008080">65</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>reportFile, <BR></SPAN><SPAN style="COLOR: #008080">66</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>parameters, <BR></SPAN><SPAN style="COLOR: #008080">67</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>ds); <BR></SPAN><SPAN style="COLOR: #008080">68</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>String fileName </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test.pdf</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">; <BR></SPAN><SPAN style="COLOR: #008080">69</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>response.setContentType(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">application/pdf</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR></SPAN><SPAN style="COLOR: #008080">70</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>response.addHeader( <BR></SPAN><SPAN style="COLOR: #008080">71</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Content-Disposition</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, <BR></SPAN><SPAN style="COLOR: #008080">72</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">attachment;filename=\</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000"> + fileName); </SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">73</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">74</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>response.setContentLength(bytes.length); <BR></SPAN><SPAN style="COLOR: #008080">75</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>ServletOutputStream ouputStream </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> response.getOutputStream(); <BR></SPAN><SPAN style="COLOR: #008080">76</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">77</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR></SPAN><SPAN style="COLOR: #008080">78</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>ouputStream.write(bytes, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, bytes.length); <BR></SPAN><SPAN style="COLOR: #008080">79</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>ouputStream.flush(); <BR></SPAN><SPAN style="COLOR: #008080">80</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>ouputStream.close(); <BR></SPAN><SPAN style="COLOR: #008080">81</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">82</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_2765_2830_Open_Image onclick="this.style.display='none'; Codehighlighter1_2765_2830_Open_Text.style.display='none'; Codehighlighter1_2765_2830_Closed_Image.style.display='inline'; Codehighlighter1_2765_2830_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_2765_2830_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2765_2830_Closed_Text.style.display='none'; Codehighlighter1_2765_2830_Open_Image.style.display='inline'; Codehighlighter1_2765_2830_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"> (SQLException sqle) </SPAN><SPAN id=Codehighlighter1_2765_2830_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_2765_2830_Open_Text><SPAN style="COLOR: #000000">{ <BR></SPAN><SPAN style="COLOR: #008080">83</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">84</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SQLException:</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> sqle.getMessage()); <BR></SPAN><SPAN style="COLOR: #008080">85</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">86</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_2854_2879_Open_Image onclick="this.style.display='none'; Codehighlighter1_2854_2879_Open_Text.style.display='none'; Codehighlighter1_2854_2879_Closed_Image.style.display='inline'; Codehighlighter1_2854_2879_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_2854_2879_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2854_2879_Closed_Text.style.display='none'; Codehighlighter1_2854_2879_Open_Image.style.display='inline'; Codehighlighter1_2854_2879_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"> (JRException e) </SPAN><SPAN id=Codehighlighter1_2854_2879_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_2854_2879_Open_Text><SPAN style="COLOR: #000000">{ <BR></SPAN><SPAN style="COLOR: #008080">87</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>e.printStackTrace(); <BR></SPAN><SPAN style="COLOR: #008080">88</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_2914_2921_Open_Image onclick="this.style.display='none'; Codehighlighter1_2914_2921_Open_Text.style.display='none'; Codehighlighter1_2914_2921_Closed_Image.style.display='inline'; Codehighlighter1_2914_2921_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_2914_2921_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2914_2921_Closed_Text.style.display='none'; Codehighlighter1_2914_2921_Open_Image.style.display='inline'; Codehighlighter1_2914_2921_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">(ClassNotFoundException cnfe)</SPAN><SPAN id=Codehighlighter1_2914_2921_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_2914_2921_Open_Text><SPAN style="COLOR: #000000">{ <BR></SPAN><SPAN style="COLOR: #008080">89</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">90</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">91</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">92</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top> <BR></SPAN><SPAN style="COLOR: #008080">93</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"> <BR></SPAN><SPAN style="COLOR: #008080">94</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">95</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align=top> </SPAN></SPAN></DIV><BR><BR>jasperreport可以用Collection做ؓ数据源,q种方式比用Connection方式更ؓ灉|方便 <BR><IMG height=16 src="http://sgsoft.cnblogs.com/Images/OutliningIndicators/None.gif" width=11 align=top></SPAN> <img src ="http://www.tkk7.com/sunjavaer/aggbug/23371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/sunjavaer/" target="_blank">丑男</a> 2005-12-11 18:12 <a href="http://www.tkk7.com/sunjavaer/archive/2005/12/11/23371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://7766qq.com" target="_blank">޹˱ɫ߹ۿ</a>| <a href="http://9898vip.com" target="_blank">ַ߹ۿ㶮</a>| <a href="http://yy468.com" target="_blank">þþƷAV</a>| <a href="http://www222yy.com" target="_blank">ҹAVһ</a>| <a href="http://hkcp168.com" target="_blank">޾Ʒ߹ۿ</a>| <a href="http://shunfk.com" target="_blank">AV߹ۿ</a>| <a href="http://tedegold.com" target="_blank">޳ߵӰɫ</a>| <a href="http://apguangyu.com" target="_blank">߹ۿAVÿո</a>| <a href="http://www-60060.com" target="_blank">ƷרΨ</a>| <a href="http://sese3366.com" target="_blank">ձ岻Ļ</a>| <a href="http://www454yu.com" target="_blank">ëƬѹۿ</a>| <a href="http://jpvv8.com" target="_blank">ĻƵww</a>| <a href="http://3t77.com" target="_blank">Ů߾Ʒѹۿ</a>| <a href="http://lyjhjx.com" target="_blank">19ѹۿ</a>| <a href="http://shmtweld.com" target="_blank">97seۺ</a>| <a href="http://av-fantasy.com" target="_blank">һӰԺ</a>| <a href="http://57gt.com" target="_blank">ŷպۺϰȥ</a>| <a href="http://pengkaimjg.com" target="_blank">Ƶ1</a>| <a href="http://9haolc.com" target="_blank">99reƵƷȫ</a>| <a href="http://740740740.com" target="_blank">Ƶѹۿ</a>| <a href="http://www-xg5777.com" target="_blank">av㽶ˬˬˬˬ</a>| <a href="http://xiamenwave.com" target="_blank">99riƷ</a>| <a href="http://b2b-chinese.com" target="_blank">޹AVӰԺ</a>| <a href="http://www3ratcom.com" target="_blank">AѾƷƵ</a>| <a href="http://sczssc.com" target="_blank">ƷһʽӰ </a>| <a href="http://snsdtv.com" target="_blank">ѧһ</a>| <a href="http://yuase.com" target="_blank">һѻɫƬ</a>| <a href="http://qinglou31.com" target="_blank">߹ۿ</a>| <a href="http://huakangweicai.com" target="_blank">ĻӰƵۿ</a>| <a href="http://fanqi5.com" target="_blank">þ޾Ʒ</a>| <a href="http://jjesqc.com" target="_blank">޾ƷGVͬ</a>| <a href="http://maomi90.com" target="_blank">aٰƵ</a>| <a href="http://hhgcnet.com" target="_blank">ѿAVƬ</a>| <a href="http://www6661126.com" target="_blank">Ӱһ޹ģƷһ</a>| <a href="http://daohang123456.com" target="_blank">Ʒ޳</a>| <a href="http://cqyouyongpx.com" target="_blank">91ۺ</a>| <a href="http://caicpa.com" target="_blank">Ļ˳й</a>| <a href="http://kaixininvestment.com" target="_blank">ѾƷպȾþ</a>| <a href="http://266hd.com" target="_blank">¹AVר</a>| <a href="http://bx85.com" target="_blank">Ʒպþ</a>| <a href="http://hsewx.com" target="_blank">鶹ƷѹƬ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>