??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲av无码专区,亚洲成AV人片在线观看无码,亚洲AV无码国产剧情 http://www.tkk7.com/jspark/星星之火、可以燎?/description>zh-cn Fri, 09 May 2025 23:54:36 GMT Fri, 09 May 2025 23:54:36 GMT 60 如何更方便地q行CSV格式文gd http://www.tkk7.com/jspark/archive/2008/10/31/237819.htmljspark jspark Fri, 31 Oct 2008 06:42:00 GMT http://www.tkk7.com/jspark/archive/2008/10/31/237819.html http://www.tkk7.com/jspark/comments/237819.html http://www.tkk7.com/jspark/archive/2008/10/31/237819.html#Feedback 3 http://www.tkk7.com/jspark/comments/commentRss/237819.html http://www.tkk7.com/jspark/services/trackbacks/237819.html
1 基本介绍
可以?/span>CSV格式的文件经常碰刎ͼ何ؓ(f) CSV格式Q?/span>CVS全称 comma-separated valuesQ就是典型的用逗号隔开的文Ӟ比如下面q种文g格式
Name,company
zhangsan,ibm
lisi,oracle
q种是典型?/span>CSV格式文g。不q也可以扩展到其它符号隔开的字W,比如
Name#company
Zhangsan#ibm
Lisi#oracle
q种也算 CSV格式
Java开源框?/span>CVSReader提供?jin)一个轻量、简单方便的l一操作接口可用Q下面具体讲解如何操?/span>CVS格式
2 安装和?/span>
下蝲
目前 CSV reader的最新发布版本是 1.8。我们可以从
http://opencsv.sourceforge.net/
上面下蝲到最新的 csvreader包?/span>
安装
直接?/span>jar包分别存攑ֈ开发工E的c\径下面即可用?/span>
3 d CSV格式文g
基本?/span>
首先Q读?/span>CSV格式的文仉要创Z?/span>CSVReaderQ如?/span>
CsvReader reader = new CsvReader(Reader r, char c);
其中W一个参Cؓ(f)d文gQ第二个参数为分割符Q比?#8220; ,”Q或?#8220; #”
另外Q也有其它几个参敎ͼ可以查阅 APIQ比?/span>
CsvReader reader = new CsvReader(InputStream r, char c, Charset charset);{等
其次Q一般需要读取头信息Q如下:(x)
reader.readHeaders();
String[] headers = reader.getHeaders();
d?jin)后Q指针就?x)移动到下一行,也就是可以开始读取文件内?/span>
假如Q有多行的话Q可以用一个@环套入,例如下面Q?/span>
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
l合例子
?/span>C盘(sh)创徏一个测试文?/span>test.cvsQ内容如下:(x)
a#b#c
1#2#3
4#5#6
下面是解析代码:(x)
public static void main(String[] args) throws Exception {
CsvReader reader = new CsvReader(new FileReader("c://csv.txt"), '#');
reader.readHeaders();
String[] headers = reader.getHeaders();
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
}
q行以上E序Q可以看到输?/span>
1 2 3
4 5 6
4 ?/span>CSV格式文g
?/span>CSV格式文g也比较简单,写每一列只要直接调?/span>
csvWriter.write() 另外Q写完每行结束后Q都要调?/span> csvWriter.endRecord();
表示l束一?/span>
文g写完毕后Q要记得h一下ƈx(chng)Q如下:(x)
csvWriter.flush();
csvWriter.close();
代码如下Q?/span>
public static void main(String[] args) throws Exception {
CsvWriter csvWriter = new CsvWriter( new FileWriter( "c://test.text" ), '#' );
csvWriter.write( "name" );
csvWriter.write( "company" );
csvWriter.endRecord();
csvWriter.write( "11" );
csvWriter.write( "12" );
csvWriter.endRecord();
csvWriter.write( "21" );
csvWriter.write( "22" );
csvWriter.flush();
csvWriter.close();
}
}
C 内容如下Q?/span>
name#company
11#12
21#22
]]>JbossRules入门Q二Q?/title> http://www.tkk7.com/jspark/archive/2008/10/28/237135.htmljspark jspark Tue, 28 Oct 2008 07:54:00 GMT http://www.tkk7.com/jspark/archive/2008/10/28/237135.html http://www.tkk7.com/jspark/comments/237135.html http://www.tkk7.com/jspark/archive/2008/10/28/237135.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/237135.html http://www.tkk7.com/jspark/services/trackbacks/237135.html 阅读全文 ]]> JbossRules入门Q一Q?/title> http://www.tkk7.com/jspark/archive/2008/10/28/237071.htmljspark jspark Tue, 28 Oct 2008 04:15:00 GMT http://www.tkk7.com/jspark/archive/2008/10/28/237071.html http://www.tkk7.com/jspark/comments/237071.html http://www.tkk7.com/jspark/archive/2008/10/28/237071.html#Feedback 1 http://www.tkk7.com/jspark/comments/commentRss/237071.html http://www.tkk7.com/jspark/services/trackbacks/237071.html 1 Java规则pȝ?/span>
在大型商业系l中Q业务规则、商业逻辑{等都会(x)比较复杂。而且在很多大型系l当中,很多业务规则、商业逻辑q不是一成不变的。甚臛_pȝq入生阶段Ӟ客户的业务规则、商业逻辑也会(x)改变。某些系l要求甚x(chng)高,要求?/span>24时不停机,q且能够实时修改商业规则。这对商业pȝ提出?jin)较大的挑(xi)战。如果将q些可变的规则直接编写到代码里面的话Q业务规则一旦改变,p修改代码。ƈ由此带来~译、打包、发布等{问题。这对于生pȝ来说是极不方便的。因此,如何考虑把一些可变的业务规则抽取到外面,使这些业务规则独立于E序代码。ƈ最好是能够实时的修改业务规则,q样可以做C用打包编译发布等{?/span>
值得?jin)幸的是现在出现了(jin)一?/span>Java规则引擎Q?/span>Rule EngineQ,专门解决以上所q的问题。利用它Q我们就可以在应用系l中分离客户的商业决{逻辑和应用开发者的技术决{,q把q些商业规额则放在中?j)数据库或其他统一的地方,让它们能在运行时可以动态地理和修攏V?/span>
JbossRules是一个优U?/span>JAVA规则引擎Q其前n?/span>Drools3Q后来被 Jboss合ƈq改名ؓ(f) JbossRules
Z规则的专家系l简?/span>
人工是一个新兴的学科Q它是想让计机模拟的思维和推理模式。h工智能分成如下几个主要的分学U:(x)
知识表示
经|络
基因法
决策?/span>
专家pȝ
{等几个学科
知识表示是h工智能中的一个基领域Q其目的是如何更好的在计机当中描述已存在的事实。专家系l就是用知识表C,来做规则推理Q得出最后的l论来?/span>
Java规则引擎h于基于规则的专家pȝQ而基于规则的专家pȝ又是专家pȝ的其中一个分支。专家系l属于h工智能的范畴Q它模仿人类的推理方式,使用试探性的Ҏ(gu)q行推理Qƈ使用人类能理解的术语解释和证明它的推理结论。ؓ(f)?jin)更深入C(jin)?/span>Java规则引擎Q下面简要地介绍Z规则的专家系l?/span>RBES包括三部分:(x) Rule BaseQ?/span>knowledge baseQ?/span>Working MemoryQ?/span>fact baseQ和 Inference Engine。它们的l构如下pȝ所C:(x)
如上图所C,推理引擎包括三部分:(x)模式匚w器( Pattern MatcherQ、议E( AgendaQ和执行引擎Q?/span>Execution EngineQ。推理引擎通过军_哪些规则满事实或目标,q授予规则优先Q满事实或目标的规则被加入议程。模式匹配器军_选择执行哪个规则Q何时执行规则;议程理模式匚w器挑(xi)选出来的规则的执行次序;执行引擎负责执行规则和其他动作?/span>
和hcȝ思维相对应,推理引擎存在两者推理方式:(x)演绎法( Forward-ChainingQ和归纳法( Backward-ChainingQ。演l法从一个初始的事实出发Q不断地应用规则得出l论Q或执行指定的动作)(j)。而归Ux(chng)则是Ҏ(gu)假设Q不断地LW合假设的事实?/span>Rete法是目前效率最高的一?/span>Forward-Chaining推理法Q许?/span>Java规则引擎都是Z Rete法来进行推理计的?/span>
l 正向推理Q?/span>
正向推理囑Ş如下Q?/span>
正向推理引擎的推理步骤如下:(x)
n 初始数据( factQ输?/span>Working Memory?/span>
n 使用 Pattern Matcher比较规则库( rule baseQ中的规则( ruleQ和数据Q?/span>factQ?/span>
n 如果执行规则存在冲突Q?/span>conflictQ,卛_时激zM(jin)多个规则Q将冲突的规则放入冲H集合?/span>
n 解决冲突Q将Ȁzȝ规则按顺序放?/span>Agenda?/span>
n 使用执行引擎执行 Agenda中的规则。重复步?/span>2?/span>5Q直到执行完毕所?/span>Agenda中的规则?/span>
n 直到得出最l的l果为止
l 反向推理Q?/span>
反向推理是目标驱动的推理方式。从目标出发Q找出所有能满该目
标的子目标。这样一直推g去,直到所有的子目标都已经满为止?/span>
规则引擎
Java规则引擎是一U嵌入在 JavaE序中的lgQ它的Q务是把当前提交给引擎?/span>Java数据对象与加载在引擎中的业务规则q行试和比对,Ȁz那些符合当前数据状态下的业务规则,Ҏ(gu)业务规则中声明的执行逻辑Q触发应用程序中对应的操作?/span>
一般来_(d)一条规则的形式如下Q?/span>
when
<conditions>
then
<actions>
也就是说Q当 conditions成立的话Q就做下面的 actions。其?/span>actions可以为生成新的事实、或者做其他动作Q比如,发?/span>email通知、执行一些本CQ务等{?/span>
1.3 JAVA规则引擎的优?/span>
n 声明式编E?/span>
声明式编E,规则引擎让我们直?#8220;做什?#8221;Q而不用直?#8220;怎么?#8221;。我们只要把一pd规则表示出来后。具体的推理动作׃l规则引擎来处理?/span>
n 逻辑和数据分开
可变的业务逻辑和数据分开。虽?dng)q违背了(jin)面向对象原则。面向对象强调数据和业务逻辑耦合。但是,对于一些易变而复杂的业务规则。如果散步在E序的各个地斏V各个层ơ。那么一旦业务规则更改的话,׃(x)出现“牵一发而动全n”的局面。因此,可变的业务逻辑独立出来理Q将有助于后面的业务变更?/span>
n 性能
Rete法的性能比较高?/span>
n 知识集中表示
通过使用规则Q我们把规则集中存放hQ从而ɾpȝ知识能够集中表示?/span>
n 可读?/span>
规则的可L比较高。对于熟(zhn)业务规则。但不会(x)E序开发的业务专家Q只要熟(zhn)规则的标示Q也可以~写和修改业务规则?/span>
1.4 使用 JAVA规则pȝ的场?/span>
那么Q在那些场合下适合应用 JAVA规则pȝ呢?总而言之,可以用一句话来概括:(x)当用传统的程序开发,无法得到一U优雅的解决Ҏ(gu)的时候,可以考虑使用规则pȝ。如下的一些场合:(x)
n 用传l的代码开发比较复杂、繁?/span>
n 问题虽然不复杂,但是用传l的代码开发比较脆弱,也就是经怿?/span>
n 没有优雅的算?/span>
n 业务规则频繁改变
n 有很多业务专家、不懂技术开?/span>
1.5 不适合使用 JAVA规则pȝ场合
虽然规则pȝ看v来比较不错,但是q不是Q何地斚w可以使用规则pȝ。很多简单、固定的业务pȝQ可以不用用规则系l。规则系l也不能用来作ؓ(f)标示重要的业务流E、不能用来作为工作流引擎?/span>
有很多程序员?/span>JAVA规则pȝ当成是一U动态修攚w|。也是把一部分代码逻辑抽取到外面,l一存放h。这P当一些配|修改的话,通过修改规则Q就能修改代码的一部分逻辑。如果把 JAVA规则仅仅用在q个场合下的话,可以考虑采用脚本引擎。比?/span>BeanShell?/span>JEXL?/span>Groovy{等?/span>
]]> 安装SUN ONE APPSERVER8.1以及(qing)部v应用所到的问?/title> http://www.tkk7.com/jspark/archive/2006/11/29/84348.htmljspark jspark Wed, 29 Nov 2006 06:42:00 GMT http://www.tkk7.com/jspark/archive/2006/11/29/84348.html http://www.tkk7.com/jspark/comments/84348.html http://www.tkk7.com/jspark/archive/2006/11/29/84348.html#Feedback 1 http://www.tkk7.com/jspark/comments/commentRss/84348.html http://www.tkk7.com/jspark/services/trackbacks/84348.html
grant { permission java.lang.RuntimePermission " loadLibrary.* " ; permission java.lang.RuntimePermission " queuePrintJob " ; permission java.lang.RuntimePermission " setContextClassLoader " ; permission java.lang.RuntimePermission " getProtectionDomain " ; permission java.lang.reflect.ReflectPermission " suppressAccessChecks " ; }; grant { permission java.util.PropertyPermission " * " , " read,write " ; };
最q一个项目需要用到SUN ONE APPSERVER8.1Q本人在WINDOWS SERVER 2003中安装,到一些问题,不过比较q运的是都解决了(jin)Q下面大概描qC下个人碰到的问题Q期望能l别人带来帮?/font>
一、DNS服务器问?br> 安装SUN ONE APPSERVER8.1必须要在服务器上安装Q而且必须要将该服务器讄为DNS服务器。关于WINDOWS SERVER 2003 如何讄DNS服务器,|上很多资料Q可以查?br> 二、文件系l权限访问问?br> 也许SUN ONE APPSERVER8.1服务器在文g讉K斚w控制比较严格Q如果按照默认安装上ȝpȝ。对于一些文件夹、文件读取是?x)有一些控制的。比如说Q当应用部|上去,然后讉K应用Q会(x)抛出SecurityException。这是因为需要编译jsp面Q生成class文gQ由于没有写权限Q所以会(x)出错。解决的Ҏ(gu)是ؓ(f)SUN ONE APPSERVER增加文g讉K权限。修Ҏ(gu)法如下:(x) 扑ֈ安装路径Q下面以本h的安装\径ؓ(f)例子Q?br> c\sunjes\ApplicationServer\domains\domain1\config 该目录下面有一个文件叫server.policyQ打开该页面,可以看到里面是一些关于文件访问权限的例子
// Core server classes get all permissions by default grant codeBase " file:${com.sun.aas.installRoot}/lib/- " { permission java.security.AllPermission; }; 下面为文件\径增加访问权限,个h把整个c盘设|ؓ(f)可读可写Q如?br> grant codeBase " file:c:/- " { permission java.security.AllPermission; }; grant { permission java.io.FilePermission " c:/- " , " read,write,execute,delete " ; };
~辑完毕Q保存,重启服务器,OKQ该问题解决?:)
三、其他几个权限问题:(x) ~辑以上问题后,重新自动Q可能还?sh)(x)发C下几个异常,比如 permission java.util.PropertyPermission "*" , " read,write " ; 因此Q分别加上如下几个权限设|即?br>
四、ORACLE10.2.0.1驱动问题 本h部v的应用是spring+hb架构Q里面用到blog/clob大字D处理,因此驱动E序用最新的驱动E序10gQ版本ؓ(f)10.2.0.1。在部v到SUN ONE APPSERVER8.1Ӟ也抛出类讉K异常Q异怿息是Qoracle.sql is sealed。没办法Q上|搜索了(jin)一下,发现有很多h也遇q这个情c(din)主要是oracle10g.jar里面的Meta-inf定义Q增加了(jin)sealed属性。打开该文件MANIFEST.MFQ内容如下:(x)
Manifest - Version: 1.0 Specification - Title: Oracle JDBC driver classes for use with JDK14 Created - By: 1.4 .2_08 (Sun Microsystems Inc.) sealed: true Implementation - Title: ojdbc14.jar Specification - Vendor: Oracle Corporation Specification - Version: Oracle JDBC Driver version - " 10.2.0.1.0 " Implementation - Version: Oracle JDBC Driver version - " 10.2.0.1.0 " Implementation - Vendor: Oracle Corporation Implementation - Time: Wed Jun 22 18 : 55 : 48 2005
关于sealed属性网上也?br> 很多资料介绍Q有兴趣的网友可以参阅一下。网上同行的解决Ҏ(gu)是下?0gQ低点的版本。本人的解决Ҏ(gu)是修改一下里面的MANIFEST.MF文gQ把sealed:trueL卛_?/font>
四、包版本不兼宏V?br> 解决完以上几个问题后Q重新启动,本以Z事大吉,很不q运的是Q再ơ抛出异常:(x) ClassNotFoundException: org.hibernate.hql.ast.HqlToken。同P上网搜烦(ch)?jin)一下,发现是hibernate的antlr.jar和SUN ONE APPSERVER的antlr.jar存在冲突。hibernate3.0版本?br> 的antlr.jar包版本是2.7.5Q比SUN ONE APPSERVER的高。以前在weblogic部v应用Ӟ也出现过cM的问题。由于这些服务器?x)优先装载自qc,因此?x)出C些问题。解x(chng)法是把hibernate下较高版本的antlr.jar攑֜classpath的前面。在SUN ONE APPSERVER 下最快捷的方式就是将antlr-2.7.5H3.jar拯到ApplicationServer\lib目录下面卛_
解决完以上几个问题后Q再ơ重启,讉KQOKQ一切正常!好有成就?:)
]]> (ZT)Sun HotSpot 1.4.1 JVM堆大的调整 http://www.tkk7.com/jspark/archive/2006/11/28/84008.htmljspark jspark Tue, 28 Nov 2006 03:58:00 GMT http://www.tkk7.com/jspark/archive/2006/11/28/84008.html http://www.tkk7.com/jspark/comments/84008.html http://www.tkk7.com/jspark/archive/2006/11/28/84008.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/84008.html http://www.tkk7.com/jspark/services/trackbacks/84008.html Sun HotSpot 1.4.1 JVM堆大的调整 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)Sun HotSpot 1.4.1使用分代攉器,它把堆分Z个主要的域:(x)新域、旧域以?qing)永久域。Jvm生成的所有新对象攑֜新域中。一旦对象经历了(jin)一定数量的垃圾攉循环后,便获得用期q进入旧域。在怹域中jvm则存储class和method对象。就配置而言Q永久域是一个独立域q且不认为是堆的一部分?br /> (tng) (tng) (tng) (tng)下面介绍如何控制q些域的大小。可使用-Xms?Xmx 控制整个堆的原始大小或最大倹{?br /> (tng) (tng) (tng) (tng)下面的命令是把初始大设|ؓ(f)128MQ?br /> (tng) (tng) (tng) (tng)java –Xms128m (tng) (tng) (tng) (tng) –Xmx256m为控制新域的大小Q可使用-XX:NewRatio讄新域在堆中所占的比例?br /> (tng) (tng) 下面的命令把整个堆设|成128mQ新域比率设|成3Q即新域与旧域比例ؓ(f)1Q?Q新域ؓ(f)堆的1/4?2MQ?br /> (tng) (tng) java –Xms128m –Xmx128m (tng) (tng) (tng) (tng)–XX:NewRatio =3可?XX:NewSize?XX:MaxNewsize讄新域的初始值和最大倹{?br /> (tng) (tng) 下面的命令把新域的初始值和最大D|成64m: (tng) (tng) (tng) (tng) java –Xms256m –Xmx256m –Xmn64m (tng) (tng) 怹域默认大ؓ(f)4m。运行程序时Qjvm?x)调整永久域的大以满需要。每ơ调整时Qjvm?x)对堆进行一ơ完全的垃圾攉?br /> (tng) (tng) 使用-XX:MaxPerSize标志来增加永久域搭大。在WebLogic Server应用E序加蝲较多cLQ经帔R要增加永久域的最大倹{当jvm加蝲cLQ永久域中的对象急剧增加Q从而jvm不断调整怹域大。ؓ(f)?jin)避免调_(d)可?XX:PerSize标志讄初始倹{?br /> (tng) (tng) 下面把永久域初始D|成32mQ最大D|成64m?br /> (tng) (tng) (tng) (tng)java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m (tng) (tng) (tng) (tng)默认状态下QHotSpot在新域中使用复制攉器。该域一般分Z个部分。第一部分为EdenQ用于生成新的对象。另两部分称为救助空_(d)当Eden充满Ӟ攉器停止应用程序,把所有可到达对象复制到当前的from救助I间Q一旦当前的from救助I间充满Q收集器则把可到辑֯象复制到当前的to救助I间。From和to救助I间互换角色。维持活动的对象在救助I间不断复制Q直到它们获得用期q{入旧域。?XX:SurvivorRatio可控制新域子I间的大?br /> (tng) (tng) (tng) (tng)同NewRation一PSurvivorRation规定某救助域与EdenI间的比倹{比如,以下命o(h)把新域设|成64mQEden?2mQ每个救助域各占16mQ?br /> (tng) (tng) (tng) (tng)java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2 (tng) (tng) (tng) (tng)如前所qͼ默认状态下HotSpotҎ(gu)域用复制收集器Q对旧域使用标记Q清除-压羃攉器。在新域中用复制收集器有很多意义,因ؓ(f)应用E序生成的大部分对象是短寿命的。理想状态下Q所有过渡对象在UdEdenI间时将被收集。如果能够这L(fng)话,q且UdEdenI间的对象是长寿命的Q那么理Z可以立即把它们移q旧域,避免在救助空间反复复制。但是,应用E序不能适合q种理想状态,因ؓ(f)它们有一部分中长寿命的对象。最好是保持q些中长寿命的对象ƈ攑֜新域中,因ؓ(f)复制部分的对象L压羃旧域廉h(hun)。ؓ(f)控制新域中对象的复制Q可?XX:TargetSurvivorRatio控制救助I间的比例(该值是讄救助I间的用比例。如救助I间?MQ该?0表示可用500KQ。该值是一个百分比Q默认值是50。当较大的堆栈用较低的sruvivorratioӞ应增加该值到80?0Q以更好利用救助I间。用-XX:maxtenuring threshold可控制上限?br /> (tng) (tng) 为放|所有的复制全部发生以及(qing)希望对象从eden扩展到旧域,可以把MaxTenuring Threshold讄?。设|完成后Q实际上׃再用救助空间了(jin)Q因此应把SurvivorRatio设成最大g最大化EdenI间Q设|如下:(x) (tng) (tng) java ?-XX:MaxTenuringThreshold=0 –XX:SurvivorRatioQ?0000 ?/span> ]]> (ZT)Submit form into window.opener http://www.tkk7.com/jspark/archive/2006/11/22/82789.htmljspark jspark Wed, 22 Nov 2006 07:39:00 GMT http://www.tkk7.com/jspark/archive/2006/11/22/82789.html http://www.tkk7.com/jspark/comments/82789.html http://www.tkk7.com/jspark/archive/2006/11/22/82789.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/82789.html http://www.tkk7.com/jspark/services/trackbacks/82789.html Assigning the target property requires the name of a window not the window itself.
Wecould try something like
window.opener.name="opener728"; form.target="opener728";
however, I suspect the window.name property is read-only.
Alternatively, if We are certain that the opener already has a name then this might work
form.target=window.opener.name;
It's also possible that browsers assign unique names to otherwise unnamed windows, so the above would always work - I've never checked this.
]]> csv reader的?/title> http://www.tkk7.com/jspark/archive/2006/11/07/79566.htmljspark jspark Tue, 07 Nov 2006 04:05:00 GMT http://www.tkk7.com/jspark/archive/2006/11/07/79566.html http://www.tkk7.com/jspark/comments/79566.html http://www.tkk7.com/jspark/archive/2006/11/07/79566.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/79566.html http://www.tkk7.com/jspark/services/trackbacks/79566.html 今天从网上找?jin)一个读写csv格式的开源程序,q挺好用的?br /> 下面是一个读取例子:(x) 源文件格式:(x)
(tng)ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued (tng)1,Chai,1,1,10 boxes x 20 bags,18,39,0,10,FALSE (tng)2,Chang,1,1,24 - 12 oz bottles,19,17,40,25,FALSE (tng)下面dE序
(tng)
(tng)CsvReader (tng)reader (tng)
=
(tng)
new
(tng)CsvReader(
"
products.csv
"
); (tng)reader.readHeaders(); (tng)
while
(tng)(reader.readRecord()) (tng)
{ (tng) (tng)String (tng)productID (tng)
=
(tng)reader.get(
"
ProductID
"
); (tng) (tng)String (tng)productName (tng)
=
(tng)reader.get(
"
ProductName
"
); (tng) (tng)String (tng)supplierID (tng)
=
(tng)reader.get(
"
SupplierID
"
); (tng) (tng)String (tng)categoryID (tng)
=
(tng)reader.get(
"
CategoryID
"
); (tng) (tng)String (tng)quantityPerUnit (tng)
=
(tng)reader.get(
"
QuantityPerUnit
"
); (tng) (tng)String (tng)unitPrice (tng)
=
(tng)reader.get(
"
UnitPrice
"
); (tng) (tng)String (tng)unitsInStock (tng)
=
(tng)reader.get(
"
UnitsInStock
"
); (tng) (tng)String (tng)unitsOnOrder (tng)
=
(tng)reader.get(
"
UnitsOnOrder
"
); (tng) (tng)String (tng)reorderLevel (tng)
=
(tng)reader.get(
"
ReorderLevel
"
); (tng) (tng)String (tng)discontinued (tng)
=
(tng)reader.get(
"
Discontinued
"
); (tng) (tng) (tng) (tng)
//
(tng)perform (tng)program (tng)logic (tng)here
(tng)}
(tng)reader.close();
写C(j)SV例子Q?br /> (tng)CsvWriter writer = new CsvWriter(new FileWriter(new File("c:\\1.csv")),','); (tng) (tng)writer.write("aa"); (tng) (tng)writer.write("bb"); (tng) (tng)writer.write("cc"); (tng) (tng)writer.endRecord(); (tng) (tng)writer.write("1"); (tng) (tng)writer.write("2"); (tng) (tng)writer.write("3"); (tng) (tng)writer.close();
]]> spring+hibernate的clob大字D处理(转蝲于javaeye论坛Q?/title> http://www.tkk7.com/jspark/archive/2006/08/28/66140.htmljspark jspark Mon, 28 Aug 2006 03:58:00 GMT http://www.tkk7.com/jspark/archive/2006/08/28/66140.html http://www.tkk7.com/jspark/comments/66140.html http://www.tkk7.com/jspark/archive/2006/08/28/66140.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/66140.html http://www.tkk7.com/jspark/services/trackbacks/66140.html
在spring中如何处理oracle大字D? 在spring中采用OracleLobHandler来处理oracle大字D(包括clob和blobQ,则在E序中不需要引用oracle的特D类Q从而能够保证支持我们的代码支持多数据库? 1、首先数据表中的clobcd对应java持久化类的StringcdQ而blobcd对应byte[]cd 2、定义hibernate标签Ӟ持久化类中对应clobcd的属性的hibernate type应ؓ(f)org.springframework.orm.hibernate.support.ClobStringTypeQ而对应blobcd的属性的hibernate type应ؓ(f)org.springframework.orm.hibernate.support.BlobByteArrayType? 3、以后访问这些对应clob和blobcd的属性时Q按普通属性处理,不需要特别编码?java代码: (tng)
<
bean (tng)
id
="mySessionFactory2"
(tng)class
="org.springframework.orm.hibernate.LocalSessionFactoryBean"
>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
<
property (tng)
name
="dataSource"
>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
<
ref (tng)
bean
="myDataSource2"
/>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
</
property
>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
<
property (tng)
name
="lobHandler"
>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
<
ref (tng)
bean
="oracleLobHandle"
/>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
</
property
>
(tng) (tng)
</
bean
>
(tng)
<
bean (tng)
id
="nativeJdbcExtractor"
(tng)class
="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"
/>
(tng)
<
bean (tng)
id
="oracleLobHandle"
(tng)class
="org.springframework.jdbc.support.lob.OracleLobHandler"
(tng)Lazy-init
="true"
>
(tng)
<
property (tng)
name
="nativeJdbcExtractor"
>
(tng) (tng) (tng) (tng) (tng)
<
ref (tng)
local
="nativejdbcExtractor"
/>
(tng)
</
property
>
(tng)
</
bean
>
Spring为处理数据库Lob字段Q特别提供了(jin)LobHandler接口。在操作Oracle RDBMSq程中,׃Oracle JDBC Driver实现的问题,应用必须采用Oracle原生的数据库q接Q比如,oracle.jdbc.OracleConnectionQ、LOB原生实现Q比如,oracle.sql.BLOB、oracle.sql.CLOBQ。因此,LobHandler接口存在上述两种实现。简而言之,为操作Oracle数据库,必须使用OracleLobHandler实现。如果操作其他RDBMScdQ则使用DefaultLobHandler。NativeJdbcExtractor是个接口Q通过它能够抽象各U连接池。另外Springq提供两个接口存取BlobQLobCreator?qing)LobHandler ]]> java政则表达式的子序列(groupQ?/title> http://www.tkk7.com/jspark/archive/2006/08/15/63687.htmljspark jspark Tue, 15 Aug 2006 07:30:00 GMT http://www.tkk7.com/jspark/archive/2006/08/15/63687.html http://www.tkk7.com/jspark/comments/63687.html http://www.tkk7.com/jspark/archive/2006/08/15/63687.html#Feedback 0 http://www.tkk7.com/jspark/comments/commentRss/63687.html http://www.tkk7.com/jspark/services/trackbacks/63687.html (tng) (tng) jdk提供的正则表辑ּ是非常强大的Q只要用q正则表辑ּ的程序员应该是ؓ(f)其功能叹止。不q,正则表达式中的一个group概念怿应该不多人熟(zhn)?/p>
(tng) (tng) (tng) 正则表达式中的groupQ主要是用来区分子序列的Q所谓子序列是用()之内的表辑ּ。下面以一D늨序ؓ(f)?br />
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)String (tng)regex (tng)= (tng)"\\$\\{(I)(love)(java)\\}"; (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Pattern.compile(regex).matcher("${Ilovejava}P)").groupCount());
(tng)q行上面的代码段Q结果ؓ(f)Q? (tng)其中(I)Z个组Q?(love)Z个组Q?java)Z个组?br /> (tng) (tng) (tng) 也许有h觉得q只是一个小功能Q但是正则表辑ּ的groupQ还有一个更加强大的地方是在String.replaceAllҎ(gu)中?br /> (tng) public String replaceAll (String (tng)regex, (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) String (tng)replacement) (tng)其中W一个参数当然是政则表达式,W二个一般是普通的文本Q但是第二个参数可以应用group的地方,q个功能用在一些场合是非常方便的?br /> (tng) (tng) (tng) (tng) (tng) (tng)比如Q下面这个例子?<driverClass>${driverClass}</driverClass>Q要?{}LQ即这个例子替换成<driverClass>driverClass</driverClass>,可以用下面的代码来替换。例?br /> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)String (tng)text (tng)= (tng)" < driverClass > ${driverClass} </ driverClass > "; (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)String (tng)result (tng)= (tng)replaceStr(text,"\\$\\{(driverClass)\\}","$1"); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("result (tng)is:"+result); (tng) (tng) q行l果Qresult is:<driverClass>driverClass</driverClass> (tng) 从上面可以看出,$1是正则表达式中匚w的第一个序列,同样$2...表示W几个序列。如?index中的index出?jin)表辑ּ中子序列的个数的话,抛出异怿息?$0表示整个正则表达式?img src ="http://www.tkk7.com/jspark/aggbug/63687.html" width = "1" height = "1" /> ]]> tomcat5.0与tomcat5.5的数据库q接池jndi配置区别 http://www.tkk7.com/jspark/archive/2006/08/11/62989.htmljspark jspark Fri, 11 Aug 2006 06:03:00 GMT http://www.tkk7.com/jspark/archive/2006/08/11/62989.html http://www.tkk7.com/jspark/comments/62989.html http://www.tkk7.com/jspark/archive/2006/08/11/62989.html#Feedback 1 http://www.tkk7.com/jspark/comments/commentRss/62989.html http://www.tkk7.com/jspark/services/trackbacks/62989.html tomcat5.5出来后,jndi的配|方法是大大地节省,而且很简z,个h觉得比以前的版本好很多。这里大概给Z个配|例子。tomcat数据库连接池jndi配置有两U,一U是全局的,一U是context的,下面主要是讲全局的,q且以一个实例jdbc/byisdbZ?br /> (tng) (tng) (tng) 一、tomcat5.0配置Ҏ(gu) 1、首先在server.xml里面配置Q找C面的配置 (tng) <!-- Global JNDI resources --> (tng) <GlobalNamingResources> (tng)</GlobalNamingResources> 2、在里面增加一个Resource (tng) (tng) (tng) (tng) (tng) (tng) < Resource (tng)name = " jdbc/byisdb " (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)auth= " Container " (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)type= " javax.sql.DataSource " /> 3、在下面增加属?br /> (tng) (tng) < ResourceParams (tng)name = " jdbc/byisdb " > (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng)< name > factory </ name > (tng) (tng) (tng) (tng) (tng) (tng)< value > org.apache.commons.dbcp.BasicDataSourceFactory </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)<!-- (tng)Maximum (tng)number (tng)of (tng)dB (tng)connections (tng)in (tng)pool. (tng)Make (tng)sure (tng)you (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)configure (tng)your (tng)mysqld (tng)max_connections (tng)large (tng)enough (tng)to (tng)handle (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)all (tng)of (tng)your (tng)db (tng)connections. (tng)Set (tng)to (tng) 0 (tng) for (tng)no (tng)limit. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) --> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng)< name > maxActive </ name > (tng) (tng) (tng) (tng) (tng) (tng)< value > 100 </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)<!-- (tng)Maximum (tng)number (tng)of (tng)idle (tng)dB (tng)connections (tng)to (tng)retain (tng)in (tng)pool. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)Set (tng)to (tng) - 1 (tng) for (tng)no (tng)limit. (tng) (tng)See (tng)also (tng)the (tng)DBCP (tng)documentation (tng)on (tng) this (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)and (tng)the (tng)minEvictableIdleTimeMillis (tng)configuration (tng)parameter. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)--> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng)< name > maxIdle </ name > (tng) (tng) (tng) (tng) (tng) (tng)< value > 30 </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)<!-- (tng)Maximum (tng)time (tng)to (tng)wait (tng) for (tng)a (tng)dB (tng)connection (tng)to (tng)become (tng)available (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)in (tng)ms, (tng)in (tng) this (tng)example (tng) 10 (tng)seconds. (tng)An (tng)Exception (tng)is (tng)thrown (tng) if (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this (tng)timeout (tng)is (tng)exceeded. (tng) (tng)Set (tng)to (tng) - 1 (tng)to (tng)wait (tng)indefinitely. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) --> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng)< name > maxWait </ name > (tng) (tng) (tng) (tng) (tng) (tng)< value > 10000 </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)<!-- (tng)MySQL (tng)dB (tng)username (tng)and (tng)password (tng) for (tng)dB (tng)connections (tng) (tng) --> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng)< name > username </ name > (tng) (tng) (tng) (tng) (tng)< value > una_oa </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng)< name > password </ name > (tng) (tng) (tng) (tng) (tng)< value > una_oa </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng)<!-- (tng)Class (tng)name (tng) for (tng)the (tng)old (tng)mm.mysql (tng)JDBC (tng)driver (tng) - (tng)uncomment (tng) this (tng)entry (tng)and (tng)comment (tng)next (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) if (tng)you (tng)want (tng)to (tng)use (tng) this (tng)driver (tng) - (tng)we (tng)recommend (tng)using (tng)Connector / J (tng)though (tng) (tng) (tng) (tng) < parameter > (tng) (tng) (tng) (tng) (tng) (tng) (tng)< name > driverClassName </ name > (tng) (tng) (tng) (tng) (tng) (tng) (tng)< value > org.gjt.mm.mysql.Driver </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng) (tng)--> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)<!-- (tng)Class (tng)name (tng) for (tng)the (tng)official (tng)MySQL (tng)Connector / J (tng)driver (tng) --> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng) (tng)< name > driverClassName </ name > (tng) (tng) (tng) (tng) (tng) (tng) (tng)< value > oracle.jdbc.driver.OracleDriver </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)<!-- (tng)The (tng)JDBC (tng)connection (tng)url (tng) for (tng)connecting (tng)to (tng)your (tng)MySQL (tng)dB. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)The (tng)autoReconnect = true (tng)argument (tng)to (tng)the (tng)url (tng)makes (tng)sure (tng)that (tng)the (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)mm.mysql (tng)JDBC (tng)Driver (tng)will (tng)automatically (tng)reconnect (tng) if (tng)mysqld (tng)closed (tng)the (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)connection. (tng) (tng)mysqld (tng)by (tng) default (tng)closes (tng)idle (tng)connections (tng)after (tng) 8 (tng)hours. (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) --> (tng) (tng) (tng) (tng)< parameter > (tng) (tng) (tng) (tng) (tng) (tng)< name > url </ name > (tng) (tng) (tng) (tng) (tng) (tng)< value > jdbc:oracle:thin:@ 192.168 . 1.210 : 1521 :byisdb </ value > (tng) (tng) (tng) (tng)</ parameter > (tng) (tng)</ ResourceParams > 4、在你的应用的web.xml里面增加< resource - ref > (tng)< description > postgreSQL (tng)Datasource (tng)example </ description > (tng)< res - ref - name > jdbc / byisdb </ res - ref - name > (tng)< res - type > javax.sql.DataSource </ res - type > (tng)< res - auth > Container </ res - auth > </ resource - ref > OK,到此配置完毕Q可以用下面的几D代码进行测?br />
Context (tng)initContext (tng) = (tng) new (tng)I(yng)nitialContext(); Context (tng)envContext (tng) (tng) = (tng)(Context)initContext.lookup( " java:/comp/env " ); DataSource (tng)ds (tng) = (tng)(DataSource)envContext.lookup( " jdbc/byisdb " ); Connection (tng)conn (tng) = (tng)ds.getConnection(); out.println( " conn (tng)is: " + conn); 二、tomcat5.5配置 1、打开conf/context.xml里面 (tng) d下面的配|?br />
(tng) (tng) (tng) (tng) < Resource (tng) name ="jdbc/byisdb" (tng)auth ="Container" (tng)type ="javax.sql.DataSource" (tng)driverClassName ="oracle.jdbc.driver.OracleDriver" (tng)url ="jdbc:oracle:thin:@192.168.1.210:1521:byisdb" (tng)username ="una_oa" (tng)password ="una_oa" (tng)maxActive ="20" (tng)maxIdle ="10" (tng)maxWait ="10000" /> (tng)
2在你的应用的web.xml里面增加
< resource - ref > (tng)< description > postgreSQL (tng)Datasource (tng)example </ description > (tng)< res - ref - name > jdbc / byisdb </ res - ref - name > (tng)< res - type > javax.sql.DataSource </ res - type > (tng)< res - auth > Container </ res - auth > </ resource - ref > 同样Q可以用上面的代码进行测试?img src ="http://www.tkk7.com/jspark/aggbug/62989.html" width = "1" height = "1" /> ]]>
վ֩ģ壺
һ߹ۿƵ |
˾Ʒձר
|
AVþþƷ |
ڵëƬѿ |
ӯӯӰԺƵۿһ |
9ᆱƷƵ |
99ƷƵ߹ۿѲ |
ձƵѸһ18 |
2019Ļֱ |
91ʪ |
պƷר |
Ƭѿҹa |
ŮëƬƵ |
ѹۿɫƬ |
Ļַ |
aƵ |
avŷǮ |
պӰѹۿ |
һպƵ |
999߾ƷѲ |
ѿƬ߹ۿ |
84paoƵѲ |
mvߵӰ |
ҹ߹ۿ |
91߹ۿ |
ѿƵվ |
߳aëƬѲ |
ҹƷƬ |
þƷ |
Ʒר |
þþþþྫƷֱ |
Ļ߿˶Ƭ |
һѹۿ |
ûվɫƵѹۿ |
jjzz߲Ź |
AVһAS |
ƷۺϾþþ |
ִˬƵ
|
ѹۿAVƬ |
þԭavapp |
ŷݵһղsuv |