Profil von ElevenFantasyFotosBlogListenMehr ![]() | Hilfe |
Fantasy/Happy/Hope/Life/
|
||||||||||||||||||||||||||||||
|
17 Juli SQL Loader将Excel数据导出到Oracle实现目的:往oracle数据库中,插入excel文件中的数据 实现步骤: 1、打开MicroSoft Excel 2000 2、文件(F)→新建(N)→工作簿→ 3、输入数据后,存盘为test.xls, 4、文件(F)→另存为(A)→ 保存类型为:制表符分隔,起名为text.txt,保存到C:\ 5、须先创建表结构: 连入SQL*Plus,以system/manager用户登录, SQL> conn system/manager 创建表结构
6、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑: 控制文件:input.ctl,内容如下: load data --1、控制文件标识 infile 'test.txt' --2、要输入的数据文件名为test.txt append into table test--3、向表test中追加记录 fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB) (id,username,password,sj) -----定义列对应顺序 a、insert,为缺省方式,在数据装载开始时要求表为空 b、append,在表中追加新记录 c、replace,删除旧记录,替换成新装载的记录 d、truncate,同上 7、在DOS窗口下使用SQL*Loader命令实现数据的输入 C:\>sqlldr userid=system/manager control=input.ctl 默认日志文件名为:input.log 默认坏记录文件为:input.bad 如果是远程对数据库进行导入操作,则输入字符串应改为: C:\>sqlldr userid=system/manager@serviceName_192.168.1.248 control=input.ctl 8、连接到SQL*Plus中,查看是否成功输入,可比较input.log与原test.xls文件,查看数据是否全部导入,是否导入成功.
原文地址:http://www.qqgb.com/DataDB/Oracle/OracleJiQiao/DataDB_139741.html 31 März vb fso对象生成XML用vb生成xml文件时 写入中文时出现乱码
用fso主要按文本处理
fso.CreateTextFile (strFilePath)
Set File = fso.OpenTextFile(strFilePath, ForAppending, True) 'XML文件头部
File.Write ("<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "GB2312" & Chr(34) & "?>") & vbCrLf File.Write ("<dataset>") & vbCrLf File.Write (" <head colmunnum=" & Chr(34) & "15" & Chr(34) & ">") & vbCrLf .......................
当数据库查出写入中文变量时 生成出来的xml有乱码
后来查了下OpenTextFile下的几个参数
新增了个第几个参数 TristateTrue
Set File = fso.OpenTextFile(strFilePath, ForAppending, True, TristateTrue)
问题即解决。
-----------------------
OpenTextFile 方法打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。
参数object 必选项。应为 FileSystemObject 对象的名称。 filename 必选项。字符串表达式,指明要打开的文件名称。 iomode 可选项。输入/输出模式,是下列三个常数之一:ForReading,ForWriting,或 ForAppending。 create 可选项。Boolean 值,指出当指定的 filename 不存在时是否能够创建新文件。允许创建新文件时为 True,否则为 False。默认值为 False。 format 可选项。三个 Tristate 值之一,指出以何种格式打开文件。若忽略此参数,则文件以 ASCII 格式打开。 设置iomode 参数可为下列设置之一:
〈P〉 format 参数可为下列设置之一:
说明以下代码举例说明如何使用 OpenTextFile 方法打开写文件:
06 Februar 自动注册OCX控件由于有些电脑上并没有使用的控件
批处理:
先将MSDATGRD.OCX拷贝到system32下面
然后通过regsvr32注册
ocx.bat:
---------------------------------------------------------
@echo off
for %%a in (FinalData OfficeDiary DisplayX) do ( copy /y "%~dp0MSDATGRD.OCX" "%windir%\system32\" ) regsvr32 "%windir%\system32\MSDATGRD.OCX" /S --------------------------------------------------------- 其中:
/y表示如有存在文件夹中则覆盖
/s表示将弹出框关闭
"%~dp0 表示批处理文件所在文件夹 结尾已经以\结束
并在vb中执行.bat文件
Shell App.path & "\dll\ocx.bat", vbMinimizedNoFocus 09 Januar ORACLE公司之起源很难想象,ORACLE公司的这一段传奇居然要从IBM开始。
1970年的6月,IBM公司的研究员埃德加•考特 (Edgar Frank Codd) 在Communications of ACM 上发表了那篇著名的《大型共享数据库数据的关系模型》(A Relational Model of Data for Large Shared Data Banks)的论文。这是数据库发展史上的一个转折。要知道,当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始,拉开了关系型数据库软件革命的序幕。 虽然早在1970年就诞生了关系模型理论,但是市场上迟迟不见关系型数据库管理软件的推出。主要原因是很多反对者认为关系型数据库速度太慢,比不上当时的层次式数据库。值得好笑的是,IBM虽然1973年就启动了System R的项目来研究关系型数据库的实际可行性,也没有及时推出这样的产品,因为当时IBM的的IMS(著名的层次型数据库)市场不错,如果推出关系型数据库,牵涉到IBM很多人的自身利益。再者,IBM庞大复杂的官僚机构处在决策上远不那么灵活。 1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司(ORACLE公司的前身)。那个时候,32岁的Larry Ellison,这个读了三家大学都没能毕业的辍学生,还只是一个普通的软件工程师。公司创立之初,Miner是总裁,Oates为副总裁,而Ellison,因为一个合同的事情,还在另一家公司上班。没多久,第一位员工Bruce Scott(用过ORACLE数据库软件的人都知道有个Scott用户的吧?没错,就是这个Scott,至于Scott用户的密码Tiger,那是Scott养的猫的名字)加盟进来,在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加•考特的那篇著名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅读一下。Ellison和Miner预见到数据库软件的巨大潜力(跟着IBM走,没错),于是,SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。 很快他们就弄出来一个不太像样的产品,或者具体的说,更像一个Demo。根据Ellison和Miner他们在前一家公司从事的一个由中央情报局投资的项目代码,他们把这个产品命名为ORACLE。因为他们相信,ORACLE(字典里的解释有“神谕, 预言”之意)是一切智慧的源泉。1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI),毕竟“软件开发实验室”不太像一个大公司的名字。1983年,为了突出公司的核心产品,RSI再次更名为 ORACLE。 发展与壮大 ----------------- RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。但不得不说,软件不是很稳定,并缺少事务处理这样的重要功能。出于市场策略,公司宣称这是该产品的第二版,但却是实际上的第一版。之所以被命名为第2版而不是第1版,是因为Ellison认为潜在的客户更愿意购买第2个版本,而不是初始版本。(虽然这样做有些不太诚实,还是要承认这是个十分高明的技巧。到现在还有一些公司把自己卖给客户的版本叫做1.0 ,学学1979年的ORACLE吧!) 多年以后的今天,ORACLE公司声称是他们第一个提供了第一个SQL关系型数据库管理系统。 虽然软件不是很好,但是客户还是有的。美国中央情报局迫不及待的想买一套这样的软件来满足他们的需求。但在咨询了IBM公司之后发现IBM没有可以商用的产品,他们联系了RSI。于是RSI有了第一个客户。在当时,政府和军方的机构往往同时有几种计算机,而那时还没有什么“软件可移植”这样的说法,当然,也几乎没有具有这样的能力的应用软件。也就是说,给PDP-11开发的ORACLE数据库不能用在IBM主机和DEC的VAX上。很快用户就表现出来这样的需求:ORACLE能否同时在不同的操作系统上运行?这给RSI带来了新的挑战(主要是Miner和Scott)。70年代末期和80年代早期的软件一般都设计成在单一操作系统上运行,具有可移植能力的软件很少。 1983年3月,RSI发布了ORACLE第三版。Miner和Scott历尽艰辛用C语言重新写就这一版本。要知道,C语言当时推出不久,用它来写ORACLE软件也是具有一定的风险的,但除此之外,别无他法。很快就证明了这样做是多么的正确,C编译器便宜而又有效。从现在起,ORACLE产品有了一个关键的特性:可移植性。ORACLE第3版还推出了SQL语句和事务处理的“原子性”――SQL语句要么全部成功,要么全部失败,事务处理要么全部提交,要么全部回滚。ORACLE第3版还引入了非阻塞查询,使用存储在"before image file"中的数据来查询和回滚事务,从而避免了读锁定(read lock)的使用(虽然通过使用表级锁定限制了它的吞吐量)。同样是1983年,IBM发布了姗姗来迟的Database 2(DB2),但只可在MVS上使用。不管怎么说,ORACLE已经占取了先机。 在开发第三版还没有结束的时候,Scott离开了ORACLE。当时用C改写ORACLE的压力很大,无休止的软件调试终于让Scott不堪重负,选择了一走了之。把剩下的重担交给了Miner一个人。在出售了自己的%4的股票之后,Scott 后来创建了Gupta公司(现更名为Centura Software)和PointBase公司(提供百分之百纯Java嵌入式数据库),都是开发和数据库相关的产品。多年后有人问到他的%4的ORACLE股票的时候,Scott,这个曾经给ORACLE写出第一行代码的技术高手,也只能报以一笑了。如果能坚持下来,那是一笔几亿美金的财富。不过当时的Scott没有那么多的想法,他只是太累了。 ORACLE最先将其软件移植到DEC VAX计算机上的VMS操作系统上。早在1979年公司就已经雇了一位DEC公司的技术高手Robot Brandt进行VAX上ORACLE的开发。开始的时候资金有限,只能到加州大学伯克利分校去蹭机器进行开发,后来好一些,但机器也是借来的。尽管困难重重,Brandt还是比较成功的完成了移植工作。随着VAX小型机的大量销售乃至供不应求,ORACLE软件也成为VAX上最受欢迎的程序。这一点要归功于Larry对市场的先知先觉。如果说,是IBM引领着ORACLE公司走上数据库的大船,那么DEC公司的VAX就是带着他们扬帆出海了。短短的几年之后,ORACLE数据库被移植到各种主要平台之上。 ORACLE产品也一直因为有可移植性这个关键特性而被那些潜在的客户关注。 Oates这个时候因为婚姻趋于破裂而情绪沮丧,已经不能把精力全部放到公司上,不得不离开公司。几年后,他又重返公司,重新为ORACLE带来巨大的贡献,他许下诺言,在公司员工超过1万人的时候会再度离开。1999年,他完成了心愿。现在他正在纵情于音乐,自得其乐。 很长一段时间里,公司研发由Miner独力承担。Miner视金钱如无物,为人低调,和Ellison的锋芒必露形成鲜明的对比。在公司里,大家一致认为他是老好人,他也深受员工爱戴。Ellison是公司的大脑,Miner则当之无愧的成为公司的心脏。他是个沉默的英雄,正如Steve Jobs背后的Steve Wozniak一样。 1984年10月,ORACLE发布了第4版产品。产品的稳定性总算得到了得到了一定的增强 Miner的话说,达到了“工业强度”。但是还不够令人满意,用户对产品的抱怨似乎永无休止。这一版增加了读一致性(read consistency),这是数据库的一个关键特性,可以确保用户在查询期间看到一致的数据。也就是说,当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。可以看到,在ORACLE第四版之前,产品始终是不稳定的,但是ORACLE的这群销售人员,主要是Ellison,他在宣传ORACLE的时候总是要夸大其词,但他就是有能力把软件卖出去,而且,还卖得很好,不得不承认,这的确有些神奇。让我们看看1984年软件市场的情形,在数据库市场上的霸主是Asnton-Tale公司,他们的拳头产品是刚推出不久的dBase III(确切的说dBase是PC上的数据库软件霸主),刚刚成为全球第三大的独立软件公司(第一和第二分别是微软、Lotus,ORACLE在当时还排不上号),这一年,也是苹果公司Macintosh诞生的年度,Steven Jobs用这个拳头产品挑战老大哥IBM。同样在这一年中,ORACLE公司的开发人员刚刚把产品移植到PC上。这是最好的年代,也是最坏的年代。数以千计的小公司在软件领域里争斗不休,新公司如雨后春笋般成立,ORACLE如何才能于不败之地? 在1985年,ORACLE发布了5.0版。有用户说,这个版本算得上是ORACLE数据库的稳定版本。这也是首批可以在Client/Server模式下运行的的RDBMS产品,在技术趋势上,ORACLE数据库始终没有落后。这意味着运行在桌面PC机(客户机)上的商务应用程序能够通过网络访问数据库服务器。1986年发布的5.1版还支持分布式查询,允许通过一次性查询访问存储在多个位置的数据。 那是在1985年,当时曾经的最大的独立软件公司Cullinet(主要销售网状数据库)已经如流星般陨落。ORACLE的主要竞争对手是Ingres数据库。Ingres在加州大学伯克利分校诞生,主要的设计者是当时鼎鼎大名的Michael Stonebraker教授。 可以说Ingres数据库软件是上个世纪80年代技术上最好的数据库,Ingres市场分额的快速增长已经给ORACLE早成了很大的压力。巧的是,这个时候,IBM公司再一次伸出“上帝之手”。 Ingres使用的是Stonebraker 发明的QUEL(Query Language))的查询技术,这和IBM的SQL大不相同。在某些地方QUEL甚至要优于SQL。IBM当时担心Ingres把QUEL变成标准会对自己不利。经过一番衡量,决定把自己的SQL提交给数据库标准委员会。而Stonebraker教授可不打算把QUEL提交给数据库标准委员会,学院派的他认为这麽做实际上是扼杀了创新精神。鹬蚌相争,渔翁得利。ORACLE看到并抓住了这个绝佳的机会,大肆宣布ORACLE全面与SQL兼容,加上ORACLE当时对Ingres PC上的版本的攻击(弱化对手优势,化解自己弱势是他们最拿手的本领),再加上ORACLE公司销售上的强势,Ingres不断丢城失地,等到后来推出支持SQL的数据库的时候为时已晚。紧跟IBM让ORACLE得以成长、壮大,拥抱标准,拥抱开放,拥抱变化,让ORACLE立于不败之地。 1986年3月12日,ORACLE公司以每股15美元公开上市,当日以20.75美元收盘,公司市值2.7亿美元。3月13日,微软以每股21美元的发行价上市,以28美元收市,公司市值达到7亿美元。远远超过了ORACLE。成功的光环下的微软和盖茨遮盖住了ORACLE和Ellison的光芒,可能这也是Ellison敌视微软的开始。 经受挫折 ---------------------- ORACLE第6版于1988年发布。由于过去的版本在性能上屡受诟病,Miner带领着工程师对数据库核心进行了重新的改写。引入了行级锁(row-level locking)这个重要的特性,也就是说,执行写入的事务处理只锁定受影响的行,而不是整个表。这个版本引入了还算不上完善的PL/SQL(Procedural Language extension to SQL)语言。第6版还引入了联机热备份功能,使数据库能够在使用过程中创建联机的备份,这极大地增强了可用性。同时在这一年,ORACLE开始研发ERP软件。 公司发展看上去比较顺利,不过,噩梦才刚刚开始。 由于过去对软件测试重视的程度不够――那个时候公司规模小,基本上都是客户帮助免费测试的。在第六版刚发布之后,很多迫不及待开始使用的用户就怨声载道。这是个根本就没有测试好就进行发布的产品(也怪Ellison,大话总要说在前头,只好自尝苦果)。用户开始对ORACLE大肆抨击,ORACLE的一些对手,也开始落井下石,针对ORACLE产品的一些弱点进行攻击。开发人员一面应付愤怒的用户,一面加班加点地对程序进行接连不断的修正,最后,总算得到了一个比较稳定的版本,暂时平息了用户的愤怒。 但是,实际的问题并不在这里,几年来高速增长的同时也给公司带来了巨大的隐患,1990财年第三季度报表的公布引爆了一切。财务人员发现了1500万美元的坏帐,并且公司利润 距离预期相差甚远。接下来的时间里,大公司病的诸般症状接踵而来,面对股东的指控,股票一落千丈,公司前景暗淡,甚至面临破产。一度靠贷款来维持自己的奢华生活也不变卖股票的Ellison也快撑不住了。公司下大力气整顿财务(财务主管杰夫•沃克从某种程度上解救了公司)。公司宣布削减开支,裁退大量销售人员,同时聘用了专门的管理人才。 噩梦延续到ORACLE第七版的推出而结束。这个公司已经空谈了好几年的新版本(一度被讥讽为不过是Ellison的故计重施而已),直到1992年6月才终于闪亮登场,这一次公司吸取了第六版匆忙上市的教训,听取了用户的多方面的建议,并集中力量对新版本进行了大量而细致的测试。该版本增加了许多新的性能特性:分布式事务处理功能、增强的管理功能、用于应用程序开发的新工具以及安全性方法。ORACLE7还包含了一些新功能,如存储过程、触发过程和说明性引用完整性等,并使得数据库真正的具有可编程能力。 ORACLE 第七版是ORACLE真正出色的产品,取得了巨大的成功。这个版本的出现真是好时机,当时Sybase公司的数据库已经占据了不少份额,ORACLE借助这一版本的成功,一具击退了咄咄逼人的Sybase。公司的销售人员这次算到了给用户兑现空头许诺的时候。公司经过两三年的治理,终于摆脱了种种麻烦,重新开始健康发展,销售额也从92年的15亿美元变为四年后的42亿美元。 跨上巅峰 ----------- “搅浑水”是Ellison的一项绝技。在1995年巴黎举行的欧洲信息技术论坛会议上,Ellison在即兴演讲中介绍了网络计算机(Network Computer,NC)的概念,所谓NC指的是配置简单却能充分利用网络资源的低价电脑,最为重要的是,它不需要操作系统,或者更准确的说,不需要微软的操作系统。Ellison希望借此来抵制微软的强势。很快,ORACLE联合IBM、Sun、Apple和Netscape在1996年制定了网络计算机的标准,但事实上人们从头到尾没有看到一台真正的NC生产出来。这次的演讲在业界引起了轩然大波,通过这个事件,ORACLE公司吸引了足够多的注意力,同时也让人们看到ORACLE公司对于网络的巨大信心。 1997年6月,ORACLE第八版发布。ORACLE8支持面向对象的开发及新的多媒体应用,这个版本也为支持Internet、网络计算等奠定了基础。同时这一版本开始具有同时处理大量用户和海量数据的特性。这个版本也算是可圈可点了。 1998年9月,ORACLE公司正式发布ORACLE 8i。“i”代表Internet,这一版本中添加了大量为支持Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。ORACLE 8i成为第一个完全整合了本地Java运行时环境的数据库,用Java就可以编写ORACLE的存储过程。对,Java,只要是能够打击微软的武器,ORACLE都要派上用场。ORACLE8i 添加了SQLJ(一种开放式标准,用于将SQL数据库语句嵌入客户机或服务器Java代码)和ORACLE interMedia(用于管理多媒体内容)以及XML等特性。同时,ORACLE 8i 极大程度上提高了伸缩性、扩展性和可用性以满足网络应用需要。接下来的几年中,ORACLE陆续发布了8i的几个版本,并逐渐添加了一些面向网络应用的新特性。面对开源运动的蓬勃发展,ORACLE自然不甘落后,1998年十月 ORACLE发布了可用于Linux平台的ORACLE 8 以及ORACLE Application Server 4.0,随后不久,ORACLE又发布了ORACLE 8i for Linux。在 .com 大潮中,ORACLE是站在风口浪尖的弄潮儿。 在2001年6月的ORACLE OpenWorld大会中,ORACLE发布了ORACLE 9i。在ORACLE 9i的诸多新特性中,最重要的就是Real Application Clusters(RAC)了。说起ORACLE集群服务器,早在第五版的时候,ORACLE就开始开发ORACLE并行服务器(ORACLE Parallel Server ,OPS),并在以后的版本中逐渐的完善了其功能,不过,严格来说,尽管OPS算得上是个集群环境,但是并没有体现出集群技术应有的优点。在完全吸收了Rdb(ORACLE在1994年收购了Compaq的Rdb数据库,此前Rdb属于DEC公司,DEC公司在VAX上实现了第一个可以商用的Rdb集群数据库)的一些技术优势之后,ORACLE终于推出了真正的应用集群软件。RAC使得多个集群计算机能够共享对某个单一数据库的访问,以获得更高的可伸缩性、可用性和经济性。ORACLE 9i的RAC在TPC-C的基准测试中打破了数项记录,一时间业内瞩目。这个新的数据库还包含集成的商务智能(BI)功能。ORACLE 9i第2版还做出了很多重要的改进,使ORACLE数据库成为一个本地的XML数据库;此外还包括自动管理、Data Guard等高可用方面的特性。 历史还在继续 2003年9月8日,旧金山举办的ORACLE World大会上,Ellison宣布下一代数据库产品为“ORACLE 10g”。 ORACLE应用服务器10g(ORACLE Application Server 10g)也将作为甲骨文公司下一代应用基础架构软件集成套件。“g”代表“grid ,网格”。这一版的最大的特性就是加入了网格计算的功能。何谓网格计算?网格计算可以把分布在世界各地的计算机连接在一起,并且将各地的计算机资源通过高速的互联网组成充分共享的资源集成。通过合理调度,不同的计算环境被综合利用并共享。ORACLE宣称10g可以作为网格计算的基础,矛头直指最大的敌人IBM的“随需应变”!看来,ORACLE公司已经把这一次的“赌注”押在了网格计算的大市场上。但前景如何?让我们拭目以待。 如果说,IBM是IT产业中的一头巨鲸,那么ORACLE一定就是一条大鲨鱼:咄咄逼人,善于进攻。就在2003年6月初,ORACLE突然宣布51亿美金收购仁科(PeopleSoft),业内再次震动。次举又一次露出ORACLE 一贯善于进攻的本性。要知道,ORACLE在发展过程中很少对企业进行收购的,那么收购仁科目的何在?首先,ORACLE觊觎企业应用软件市场已久,但苦于不能进一步扩大市场分额,尤为重要的是,一旦成功,可以直接对最大的敌人IBM进行打击,还可以阻击SAP等巨头的强势,这一点尤为重要。时至今日,ORACLE依然以不达目的不罢休的态势和仁科缠斗,结果如何,让我们拭目以待。 “人生最大的快乐是击败敌人”, Ellison一定很喜欢这句活。 25 November 关于java io系统一. Input和Output
1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型: 1.1 以字节为导向的stream 以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型: 1) input stream: 1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用 2) StringBufferInputStream:把一个String对象作为InputStream 3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作 4) PipedInputStream:实现了pipe的概念,主要在线程中使用 5) SequenceInputStream:把多个InputStream合并为一个InputStream 2) Out stream 1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中 2) FileOutputStream:把信息存入文件中 3) PipedOutputStream:实现了pipe的概念,主要在线程中使用 4) SequenceOutputStream:把多个OutStream合并为一个OutStream 1.2 以Unicode字符为导向的stream 以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型: 1) Input Stream 1) CharArrayReader:与ByteArrayInputStream对应 2) StringReader:与StringBufferInputStream对应 3) FileReader:与FileInputStream对应 4) PipedReader:与PipedInputStream对应 2) Out Stream 1) CharArrayWrite:与ByteArrayOutputStream对应 2) StringWrite:无与之对应的以字节为导向的stream 3) FileWrite:与FileOutputStream对应 4) PipedWrite:与PipedOutputStream对应 以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,字是在操作时的导向不同。如CharArrayReader:和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。 1.3 两种不现导向的stream之间的转换 InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream。 2. stream添加属性 2.1 “为stream添加属性”的作用 运用上面介绍的Java中操作IO的API,我们就可完成我们想完成的任何操作了。但通过FilterInputStream和FilterOutStream的子类,我们可以为stream添加属性。下面以一个例子来说明这种功能的作用。 如果我们要往一个文件中写入数据,我们可以这样操作: FileOutStream fs = new FileOutStream(“test.txt”); 然后就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是,如果我们想实现“先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中”的功能时,上面的API就没有一个能满足我们的需求了。但是通过FilterInputStream和FilterOutStream的子类,为FileOutStream添加我们所需要的功能。 2.2 FilterInputStream的各种类型 2.2.1 用于封装以字节为导向的InputStream 1) DataInputStream:从stream中读取基本类型(int、char等)数据。 2) BufferedInputStream:使用缓冲区 3) LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()和setLineNumber(int) 4) PushbackInputStream:很少用到,一般用于编译器开发 2.2.2 用于封装以字符为导向的InputStream 1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader,否则使用DataInputStream 2) BufferedReader:与BufferedInputStream对应 3) LineNumberReader:与LineNumberInputStream对应 4) PushBackReader:与PushbackInputStream对应 2.3 FilterOutStream的各种类型 2.2.3 用于封装以字节为导向的OutputStream 1) DataIOutStream:往stream中输出基本类型(int、char等)数据。 2) BufferedOutStream:使用缓冲区 3) PrintStream:产生格式化输出 2.2.4 用于封装以字符为导向的OutputStream 1) BufferedWrite:与对应 2) PrintWrite:与对应 3. RandomAccessFile 1) 可通过RandomAccessFile对象完成对文件的读写操作 2) 在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写 3) 可以直接跳到文件中指定的位置 4. I/O应用的一个例子
关于代码的解释(以区为单位): 1区中,当读取文件时,先把文件内容读到缓存中,当调用in.readLine()时,再从缓存中以字符的方式读取数据(以下简称“缓存字节读取方式”)。 1b区中,由于想以缓存字节读取方式从标准IO(键盘)中读取数据,所以要先把标准IO(System.in)转换成字符导向的stream,再进行BufferedReader封装。 2区中,要以字符的形式从一个String对象中读取数据,所以要产生一个StringReader类型的stream。 4区中,对String对象s2读取数据时,先把对象中的数据存入缓存中,再从缓冲中进行读取;对TestIO.out文件进行操作时,先把格式化后的信息输出到缓存中,再把缓存中的信息输出到文件中。 5区中,对Data.txt文件进行输出时,是先把基本类型的数据输出屋缓存中,再把缓存中的数据输出到文件中;对文件进行读取操作时,先把文件中的数据读取到缓存中,再从缓存中以基本类型的形式进行读取。注意in5.readDouble()这一行。因为写入第一个writeDouble(),所以为了正确显示。也要以基本类型的形式进行读取。 6区是通过RandomAccessFile类对文件进行操作。 19 November 笔记下午帮导数据时碰到的几个问题:
/*替换户主为身份证号*/ 字段名: sfzh ,name , address, huzhu 01 hua beijing hua 02 yong fujian hua 03 liang zhejiang hua 04 tmac jiangsu tmac 将 huzhu 改为 sfzh 的数据: update temp_imp set temp_imp.huzhu=b.tt from (select sfzh tt,name,address from temp_imp) b where temp_imp.huzhu=b.name and temp_imp.address=b.address 达到: sfzh ,name , address, huzhu 01 hua beijing 01 02 yong fujian 01 03 liang zhejiang 01 04 tmac jiangsu 04 查找重复数据:
select sfzh from temp_imp group by sfzh having count(sfzh)>1
sql server 删除重复记录:
select distinct * into #Tmp from table_name drop table table_name select * into table_name from #Tmp drop table #Tmp 还有一些相关:
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 3、查找表中多余的重复记录(多个字段)
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) (二)
比方说 在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1 如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 (三) 方法一 declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列) 03 September 【转】 留着IBM ThinkPad 随机软件的介绍说明(超详细)用IBM的笔记本的朋友非常的多,大多数人都喜欢删除原带的系统,自己来安装新的操作系统,可是重装系统后对于IBM随机带的软件可以说是一头雾水,因为软件大多都为英文,而且数量又多,没办法许多朋友就用全部按装法,把只要是随机带的全部装到机器上,可是有一部分是完全没有必要装的,或者说可以选择性的按装,本文的目的是为了让大家了解大多数随机软件的用途,让大家按自己的用途来按装,从而结省了有限的内存空间, 注: 其中大部分软件只能使用在T2x,X2x,R系列,A2x以后的机型,对于570这种老机器好多软件是无法安装的,系统为Windows XP. 1. Battery MaxiMiser Wizard 安装性:必装 这个软件按字面来看是”电池最大化向导”,它是通过电池中的一块芯片来查看电池的健康情况以及电池的充电次数和剩余电量等等一些相关参数的.它还可以自己定义电源管理模式,比如用电池时屏幕是4格亮度,CPU按最小的频率使用等. 2. IBM PM驱动 安装性:必装 PM的意为Power Management Driver,也就是电源管理驱动,它是十分重要的一个软件,它可以来控制当本本在市电与电池之间切换时,CPU与主板PCI总线频率的控制,也就是我们所说的CPU降频使用,当然您的CPU必须支持Speed Step技术,此软件也与上面的软件配合使用. 3.HotKey 驱动 安装性:必装 IBM的热键驱动,它的功能有当用户调整音量与屏幕亮度时,在屏幕下方显示当前音量和亮度的等级,以图形方式显示.还包括打开键盘灯和屏幕放大的提示.等. 4. ThinkPad Configuration 安装性:必装 这个软件相当于您系统中的设备管理器,它的功能可以说是相当强大,它可以管理IBM ThinkPad笔记本电脑中的所有硬件,以及内置的安全芯片,查看系统信息等等,它可以打开和屏蔽笔记本中的各种接口,如PCMCIA,红外端口等. 5. Presentation Director 安装性:可选 它叫演示向导,一个非常实用的驱动,它非常适合那些经常外出接投影仪和大屏幕显示设备的商务人士,它的组合键是FN+F7,按下后会出现一个选择分辩率的列表,当用户外接一个显示设备时可选择一个适合的分辩率,演示后还可以直接切换回来,就不用来回的调整屏幕的分辩率了,如果去多个地方又要用到不同的分辩率和显示设备,那么可以手动设置不同的分辩率和屏幕的显示方式,方便快速,节约时间,从而提高的工作效率. 6. Keyboard Customizer Utility 安装性:可选 用过ThinkPad本本的朋友都知道IBM的键盘没有视窗键,这个软件就可以让你用其它的键来代替视窗键.当然它的功能不止这些,它还可以让用户按照自己的喜好把键盘上的一些组合健定义成快捷键,比如笔者就把Shift+右方向键,定义成为了光驱打开.它还可以当您外接键盘时可以用重新定义功能键,有兴趣的朋友不仿自己试试. 7. EasyEject Utility 安装性:可选 它的功能等同于系统中安全移除硬件向导,组合键为FN+F9,它的优点是界面十分直观,当用户要停用移动设备时,它可以以帮助您安全的移除您连接的设备,包括用户接的扩展坞. 8. IBM Active Protection System 安装性:必装 APS驱动,这个驱动只支持T41以后的本本,当然还包括R51等支持这个硬盘保护功能笔记本,APS是一种主动的硬盘保护系统,它的作用是当用户在使用笔记本过程中,电脑意外下落,这个系统会在非常快的时间内做出反应,停止硬盘工作,保护用户的数据,把损失降到最小,笔者建议有这个功能的本本用户最好还是装上,不在乎那几M的内存,安全才是最重要的. 9. IBM Access Connections 安装性:可选 笔都最喜欢用的一个软件,个人认为是IBM随机软件中最最经典的一个,没有一个共享软件比的上它,说它经典是因为它非常试合网络管理员来使用,也非常适合天天带着本本在不同的网络间漫游的人(不管有线网络,无线网络,ADSL,还是企业内网),有了它网管就不用来回更改本本的IP地址了,不用建立一大堆的连接方式,不用用脑子记住不同的DNS,不同的网关,它的方便之处只有你用了才可以深深的明白,呵呵,说多了有点.具体的说,它可以让用户分别定义不同的网络配置文件,这件配置文件中包括不同的网络连接方式,不同的IP地址,网关,DNS等等,当用户从一个网络中切换到另一个网络中,不需要重新更改本机的IP地址,只要按一下FN+F5组合键,从定义好的列表中选择一种适合的配置文件即可,真是太方便了.它的优点和细节功能真是一句两句说不清楚,总之呢希望朋友们好好的利用它节省我们的时间,提高我们的工作效率. 10. UltraNav Wizard 安装性:可选 这个驱动只适合那些有触模板的ThinkPad计算机,包括T30.T4x,R51等等,它的功能也很多,它可以调整触模板的一些细节设置,比如可以把触模板左右键设成快捷健,打开用户的程序.还可以把触模板的一边设成滚轮来浏览网页等等. 11.Access IBM 安装性:可选 就是按下本本右上角那个蓝色的按钮出来的东东,它包括帮助文件,还有恢复系统等等,笔者没有按装,个人感觉它是一个花瓶,所以我把那个蓝色按钮改成快捷键了.如果朋友们喜欢那个蓝色按钮打开时的界面,我想还是装上去吧.对于那些对ThinkPad了解深入的朋友就没有必要按装了. 12. Access IBM Message Center 安装性:可选 IBM的消息中心,我想它是给像我这样的懒人准备的,我一般很少去IBM的官方网站去看看出个什么新驱动没有,装上它就方便多了,有什么新驱动和关于您本本的新消息,它会马上通知您下载和按装,比较方便的. 13. Software Installer 安装性: 必装 适用机型:全部 意为“软件安装者”当初在第一篇文章中,没把它加入是我的失误,现在隆重介绍此软件,经常在Windows软件区看到不少XD,求这个驱动,那个驱动的,其实只要装了Software Installer您就不用在上IBM官方网站找驱动了,SI可以帮助你找到你的计算机所需要的最新驱动程序,当然前提是小黑必须连接入互联网,它会自己搜索针对本机的驱动程序,让用户有选择性的下载,速度还不错。没用过的XD快快装上吧。 14.System Migration Assistant 安装性: 建议安装 适用机型:全部 英文意为“IBM 系统迁移辅助程序”,我想大多数的兄弟都不太喜欢重装系统,因为有一些个人设置(如桌面、图标、网络设置、窗口大小、等一些小细节、甚至还包括声音)都要重新来过,有时还会忘记一些重要设置,有了IBM 系统迁移辅助程序,就太方便了,它可以把用户的个人设置,全部导出为扩展名为*.sma的备份文件,重装系统后,再导入到新装的系统中就可以完全1:1的回到您重装系统之前,速度快不说、最重要是它备份文件的完整性、和可选择性,它可以选择您想备份的,去掉不想备份。全中文界面,就好比选择性的克隆一样。 经我试用,SMA居然还可以把你在原系统中的共享文件夹也给备份了,当然包括用户信息如:Administrator的设置等等,总之SMA带给你的只有方便和简单加上快速。 15. IBM Client Security Software 安装性: 可选 适用机型:T2x\T4x\R5x\等 IBM 客户端安全软件,也就是IBM广告中经常提到的CSS 1.0 2.0,CSS不光应用于小黑,也应用于ThinkCentre台式电脑,CSS通过嵌入式安全子系统,也就是安全芯片,对用户的重要数据进行加密,和保护,当然还包括管理用户的常用密码,如果有CSS的XD可以不防一试,想加密文件时,就不必在按装第三方加密软件了。 16. IBM File and Folder Encryption 安装性:可选 意为IBM 文件和文件夹加密,是和CSS客户端配合使用的一个程序,简称为IBM FFE,它的名气没有CSS那么大,FFE只能加密C盘的文件,对于其它驱动器,FFE是无法加密的。个人认为用CSS就可以了。FFE没有必要安装。 17. IBM Rescue and Recovery 安装性:建议安装 大名鼎鼎的IBM 营救和恢复程序,简称R&R,虽然我很少使用它,因为它太大了。4××MB,不过为了这个文章装一下研究,事先说明R&R只支持Win2000和XP,R&R是一个超级强大的备份压缩工具,个人认为R&R可以代替HPA了,R&R可以备份全部的系统文件到硬盘中,或者到其它的移动介质,它可以备份所有分区,或者单独的分区,备份过程是在Windows下进行的,如果您想恢复您备份的系统,重装启动,按下F11键,一个很漂亮又熟悉的介面就会出现在你在眼前,他可以代替世面上所以的备份恢复软件,大家不防一试。R&R太强大了,光靠我的一个介绍难于让大家直观了解,大家可以装上看看。 19 Juli Java开发者需坚守的十大基本准则【IT168 技术文挡】有许多标准和实践准则可适用于Java开发者,但此处要说的,是每个Java开发者需坚守的基本原则。 if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0)) ||
(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))){
newStatusCode = "NYP";
}能看明白if条件语句是干什么的吗?能想出来是谁写的这段代码吗?如果把它分成两段独立的if语句,是不是更容易理解呢,下面是修改后的代码: if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0))){
newStatusCode = "NYP";
}else
if(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))
{
newStatusCode = "NYP";
}是不是读起来容易多了呢,在此只是多加了一个if和两个花括号,但代码的可读性与可理解性就一下子提高了一大截。 四、请不要硬编码。开发者经常有意“忘记”或忽略掉这点,因为有些时候开发日程逼得实在太紧。其实,多写一行定义静态变量的代码能花多少时间呢? public class A {
public static final String S_CONSTANT_ABC = "ABC";
public boolean methodA(String sParam1){
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){
return true;
}
return false;
}
}
现在,每次需要将“ABC”与其他变量进行比较时,不必记住实际代码,直接引用A.S_CONSTANT_ABC就行了,而且在今后需要进行修改时,也可在一处修改,不会翻遍整个源代码逐个修改了。 五、不要“创造”自己的框架(framework)。确切来说,有数以千计的各种框架存在,而且大多数是开源的,这些框架都是优秀的解决方案,可用于日常程序开发中,我们只需使用这些框架的最新版本就行了,至少表面上要跟上形势吧。被大家广为接受的最为明显的一个例子就是Struts了,这个开源web框架非常适合用在基于web的应用程序中。是不是想开发出自己的Struts呢,还是省点力气吧,回头看看第二条——不要让事情复杂化。另外,如果正在开发的程序只有3个窗口,就不要使用Struts了,对这种程序来说,不需要那么多的“控制”。 六、不要使用println及字符串连接。通常为了调试方便,开发者喜欢在可能的所有地方都加上System.out.println,也许还会提醒自己回过头来再来删除,但有些时候,经常会忘了删除或者不愿意删除它们。既然使用System.out.println是为了测试,那么测试完之后,为什么还要留着它们呢,因为在删除时,很可能会删除掉真正有用的代码,所以不能低估System.out.println危害啊,请看下面的代码: public class BadCode {
public static void calculationWithPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
System.out.println(someValue = someValue + i);
}
}
public static void calculationWithOutPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
someValue = someValue + i;
}
}
public static void main(String [] n) {
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}
}从测试中可以发现,方法calculationWithOutPrint()执行用了0.001204秒,作为对比,方法calculationWithPrint()执行可是用了10.52秒。 public class BadCode {
public static final int DEBUG_MODE = 1;
public static final int PRODUCTION_MODE = 2;
public static void calculationWithPrint(int logMode){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
someValue = someValue + i;
myPrintMethod(logMode, someValue);
}
}
public static void myPrintMethod(int logMode, double value) {
if (logMode > BadCode.DEBUG_MODE) { return; }
System.out.println(value);
}
public static void main(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
}
}另外,字符串连接也是浪费CPU时间的一个大头,请看下面的示例代码: public static void concatenateStrings(String startingString) {
for (int i = 0; i < 20; i++) {
startingString = startingString + startingString;
}
}
public static void concatenateStringsUsingStringBuffer(String startingString) {
StringBuffer sb = new StringBuffer();
sb.append(startingString);
for (int i = 0; i < 20; i++) {
sb.append(sb.toString());
}
}在测试中可发现,使用StringBuffer的方法只用了0.01秒执行完毕,而使用连接的方法则用了0.08秒,选择显而易见了。 七、多关注GUI(用户界面)。再三强调,GUI对商业客户来说,与程序的功能及效率同等重要,GUI是一个成功程序的最基本部分,而很多IT经理往往都没注意到GUI的重要性。在现实生活中,许多公司可能为了节省开支,没有雇用那些有着设计“用户友好”界面丰富经验的网页设计者,此时Java开发者只能依赖他们自身的HTML基本功及在此领域有限的知识,结果,很多开发出来的程序都是“计算机友好”甚于“用户友好”。很少有开发者同时精通软件开发及GUI设计,如果你在公司“不幸”被分配负责程序界面,就应该遵守下面三条原则: 1、 不要再发明一次轮子,即不做无用功。现有的程序可能会有类似的界面需求。 八、文档需求不放松。每个商业需求都必须记录在案,这可能听上去像童话,似乎在现实生活中很难实现。而我们要做的是,不管开发时间多紧迫,不管最终期限多临近,对每个商业需求都必须记录在案。 九、单元测试、单元测试、单元测试。关于什么是单元测试的最好方法,在此不便细说,只是强调,单元测试一定要完成,这也是编程中最基本的原则。当然了,如果有人帮你做单元测试自然是最好,如果没有,就自己来做吧,当创建一个单元测试计划时,请遵守以下三条最基本的原则: 1、 先于编写类代码之前编写单元测试。 十、质量,而不是数量。有些时候因为产品问题、期限紧迫、或一些预料之外的事情,导致常常不能按时下班,但一般而言,公司不会因为雇员经常加班而对之表扬和奖励,公司只看重高质量的工作。如果遵守了前九条原则,你会发现自己写出的代码bug少且可维护性高,无形中质量提高了一大步。
27 Januar 下雪啦!今天起床拉开窗帘一看,下了一大跳,绝对是暴雪来形容,楼下的福特轮子都被掩了一半,20几年就见过这次的雪最大了!虽然见过下雪的次数还是个位数。但 看看都兴奋….. 待会就迫不及待下去踩两脚! 回想大二那会,班里几个大男人打雪仗,那场面真是激烈,惨不忍睹。。冯小刚都拍不出来,印象最深刻的是 bigyong 挂了一条长长的鼻涕,扛起一团雪球向我们砸来,我们都看呆了,那条面条又长又粗,韧性很足,就是不断。到现在还记得那根象翡翠面颜色的面条…… |
|
|||||||||||||||||||||||||||||
|
|