如何用java写出用最快速度向usb3.0硬盘写入速度文件

电脑硬盘读写速度怎么加快
电脑硬盘读写速度怎么加快
  一、软件篇
  1、设定虚拟内存
  硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快慢的非常重要因素!一般Windows预设的是由系统自行管理虚拟内存,它会因应不同程序所需而自动调校交换档的大小,但这样的变大缩小会给系统带来额外的负担,令系统运作变慢!有见及此,用户最好自定虚拟内存的最小值和最大值,避免经常变换大小。要设定虚拟内存,在&我的电脑&上按右键选择&属性&,在&高级&选项里的&效能&的对话框中,对&虚拟内存&进行设置。
  2、检查应用软件或者驱动程序
  有些程序在电脑系统启动会时使系统变慢。如果要是否是这方面的原因,我们可以从&安全模式&启动。因为这是原始启动,&安全模式&运行的要比正常运行时要慢。但是,如果你用&安全模式&启动发现电脑启动速度比正常启动时速度要快,那可能某个程序是导致系统启动速度变慢的原因。
  3、桌面图标太多会惹祸
  桌面上有太多图标也会降低系统启动速度。Windows每次启动并显示桌面时,都需要逐个查找桌面快捷方式的图标并加载它们,图标越多,所花费的时间当然就越多。同时有些杀毒软件提供了系统启动扫描功能,这将会耗费非常多的时间,其实如果你已经打开了杀毒软件的实时监视功能,那么启动时扫描系统就显得有些多余,还是将这项功能禁止吧!
建议大家将不常用的桌面图标放到一个专门的文件夹中或者干脆删除!
  4、ADSL导致的系统启动变慢
  默认情况下Windows
XP在启动时会对网卡等网络设备进行自检,如果发现网卡的IP地址等未配置好就会对其进行设置,这可能是导致系统启动变慢的真正原因。这时我们可以打开
&本地连接&属性菜单,双击&常规&项中的&Internet协议&打开&TCP/IP属性&菜单。将网卡的IP地址配置为一个在公网(默认的网关是
192.168.1.1)中尚未使用的数值如192.168.1.X,X取介于2~255之间的值,子网掩码设置为255.255.255.0,默认网关和DNS可取默认设置。
  5、字体对速度的影响
  虽然 微软 声称Windows操作系统可以安装种字体,但实际上当你安装的字体超过500
种时,就会出现问题,比如:字体从应用程序的字体列表中消失以及Windows的启动速度大幅下降。在此建议最好将用不到或者不常用的字体删除,为避免删除后发生意外,可先进行必要的备份。
  6、删除随机启动程序
  何谓随机启动程序呢?随机启动程序就是在开机时加载的程序。随机启动程序不但拖慢开机时的速度,而且更快地消耗计算机资源以及内存,一般来说,如果想删除随机启动程序,可去&启动&清单中删除,但如果想详细些,例如是QQ、popkiller
之类的软件,是不能在&启动&清单中删除的,要去&附属应用程序&,然后去&系统工具&,再去&系统信息&,进去后,按上方工具列的&工具&,再按&系统组态编辑程序&,进去后,在&启动&的对话框中,就会详细列出在启动电脑时加载的随机启动程序了!XP系统你也可以在&运行&是输入Msconfig调用
&系统配置实用程序&才终止系统随机启动程序,2000系统需要从XP中复制msconfig程序。
  7、取消背景和关闭activedesktop
  不知大家有否留意到,我们平时一直摆放在桌面上漂亮的背景,其实是很浪费计算机资源的!不但如此,而且还拖慢计算机在执行应用程序时的速度!本想美化桌面,但又拖慢计算机的速度,这样我们就需要不在使用背景了,方法是:在桌面上按鼠标右键,再按内容,然后在&背景&的对话框中,选&无&,在&外观&的对话框中,在桌面预设的青绿色,改为黑色......至于关闭activedesktop,即是叫你关闭从桌面上的web画面,例如在桌面上按鼠标右键,再按内容,然后在&背景&的对话框中,有一幅背景,名为Windows
XX,那副就是web画面了!所以如何系统配置不高就不要开启。
  8、把Windows变得更苗条
  与DOS系统相比,Windows过于庞大,而且随着你每天的操作,安装新软件、加载运行库、添加新游戏等等使得它变得更加庞大,而更为重要的是变大的不仅仅是它的目录,还有它的
和运行库。因为即使删除了某个程序,可是它使用的DLL文件仍然会存在,因而随着使用日久,Windows的启动和退出时需要加载的DLL动态链接库文件越来越大,自然系统运行速度也就越来越慢了。这时我们就需要使用一些彻底删除DLL的程序,它们可以使Windows恢复苗条的身材。建议极品玩家们最好每隔两个月就重新安装一遍Windows,这很有效。
  9、更改系统开机时间
  虽然你已知道了如何新增和删除一些随机启动程序,但你又知不知道,在开机至到进入Windows的那段时间,计算机在做着什么呢?又或者是,执行着什么程序呢?那些程序,必定要全部载完才开始进入Windows,你有否想过,如果可删除一些不必要的开机时的程序,开机时的速度会否加快呢?答案是会的!想要修改,可按&开始&,选&执行&,然后键入win.ini,开启后,可以把以下各段落的内容删除,是删内容,千万不要连标题也删除!它们包括:
[compatibility]、[compatibility32]、[imecompatibility]、[compatibility95]、
[modulecompatibility]和[embedding]。
  二、硬件篇
  1、Windows系统自行关闭硬盘DMA模式
  硬盘的DMA模式大家应该都知道吧,硬盘的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出来了!一般来说现在大多数人用的还是PATA模式的硬盘,硬盘使用DMA模式相比以前的PIO模式传输的速度要快2~8倍。DMA模式的起用对系统的性能起到了实质的作用。但是你知道吗?Windows
2000、XP、2003系统有时会自行关闭硬盘的DMA模式,自动改用PIO模式运行!这就造成在使用以上系统中硬盘性能突然下降,其中最明显的现象有:系统起动速度明显变慢,一般来说正常Windows
XP系统启动时那个由左向右运动的滑条最多走2~4次系统就能启动,但这一问题发生时可能会走5~8次或更多!而且在运行系统时进行硬盘操作时明显感觉变慢,在运行一些大的软件时CPU占用率时常达到100%而产生停顿,玩一些大型3D游戏时画面时有明显停顿,出现以上问题时大家最好看看自己硬盘的DMA
模式是不是被Windows 系统自行关闭了。查看自己的系统是否打开DMA模式:
  a. 双击&管理工具&,然后双击&计算机管理&;
  b. 单击&系统工具&,然后单击&设备管理器&;
  c. 展开&IDE ATA/ATAPI 控制器&节点;
  d. 双击您的&主要IDE控制器&;
  2、CPU 和风扇是否正常运转并足够制冷
  当CPU风扇转速变慢时,CPU本身的温度就会升高,为了保护CPU的安全,CPU就会自动降低运行频率,从而导致计算机运行速度变慢。有两个方法检测
CPU的温度。你可以用&手指测法&用手指试一下处理器的温度是否烫手,但是要注意的是采用这种方法必须先拔掉电源插头,然后接一根接地线来防止身上带的静电击穿CPU以至损坏。另一个比较科学的方法是用带感温器的万用表来检测处理器的温度。
  因为处理器的种类和型号不同,合理温度也各不相同。但是总的来说,温度应该低于 110
度。如果你发现处理器的测试高于这处温度,检查一下机箱内的风扇是否正常运转。
  3、USB和扫描仪造成的影响
  由于Windows
启动时会对各个驱动器(包括光驱)进行检测,因此如果光驱中放置了光盘,也会延长电脑的启动时间。所以如果电脑安装了扫描仪等设备,或在启动时已经连接了
USB硬盘,那么不妨试试先将它们断开,看看启动速度是不是有变化。一般来说,由于USB接口速度较慢,因此相应设备会对电脑启动速度有较明显的影响,应该尽量在启动后再连接USB设备。如果没有USB设备,那么建议直接在BIOS设置中将USB功能关闭。
  4、是否使用了磁盘压缩
  因为&磁盘压缩&可能会使电脑性能急剧下降,造成系统速度的变慢。所以这时你应该检测一下是否使用了&磁盘压缩&,具体操作是在&我的电脑&上点击鼠标右键,从弹出的菜单选择&属性&选项,来检查驱动器的属性。
  5、网卡造成的影响
  只要设置不当,网卡也会明显影响系统启动速度,你的电脑如果连接在局域网内,安装好网卡驱动程序后,默认情况下系统会自动通过DHCP来获得
IP地址,但大多数公司的局域网并没有DHCP服务器,因此如果用户设置成&自动获得IP地址&,系统在启动时就会不断在网络中搜索DHCP 服务器,直到获得IP
地址或超时,自然就影响了启动时间,因此局域网用户最好为自己的电脑指定固定IP地址。
  6、文件夹和打印机共享
  安装了Windows
XP专业版的电脑也会出现启动非常慢的时候,有些时候系统似乎给人死机的感觉,登录系统后,桌面也不出现,电脑就像停止反应,1分钟后才能正常使用。这是由于使用了Bootvis.exe
程序后,其中的Mrxsmb.dll文件为电脑启动添加了67秒的时间!
  要解决这个问题,只要停止共享文件夹和打印机即可:选择&开始&设置&网络和拨号连接&,右击&本地连接&,选择&属性&,在打开的窗口中取消&此连接使用下列选定的组件&下的&
Microsoft 网络的文件和打印机共享&前的复选框,重启电脑即可。
  7、系统配件配置不当
  一些用户在组装机器时往往忽略一些小东西,从而造成计算机整体配件搭配不当,存在着速度上的瓶颈。比如有些朋友选的CPU档次很高,可声卡等却买了普通的便宜货,其实这样做往往是得不偿失。因为这样一来计算机在运行游戏、播放影碟时由于声卡占用CPU资源较高且其数据传输速度较慢,或者其根本无硬件解码而需要采用软件解码方式,常常会引起声音的停顿,甚至导致程序的运行断断续续。又如有些朋友的机器是升了级的,过去老机器上的一些部件如内存条舍不得抛弃,装在新机器上照用,可是由于老内存的速度限制,往往使新机器必须降低速度来迁就它,从而降低了整机的性能,极大地影响了整体的运行速度。
  9、断开不用的网络驱动器
  为了消除或减少 Windows
必须重新建立的网络连接数目,建议将一些不需要使用的网络驱动器断开,也就是进入&我的电脑&,右击已经建立映射的网络驱动器,选择&断开&即可。
  10、缺少足够的内存
  Windows操作系统所带来的优点之一就是多线性、多任务,系统可以利用CPU来进行分时操作,以便你同时做许多事情。但事情有利自然有弊,多任务操作也会对你的机器提出更高的要求。朋友们都知道即使是一个最常用的WORD软件也要求最好有16MB左右的内存,而运行如3D
MAX等大型软件时,64MB的内存也不够用。所以此时系统就会自动采用硬盘空间来虚拟主内存,用于运行程序和储存交换文件以及各种临时文件。由于硬盘是机械结构,而内存是电子结构,它们两者之间的速度相差好几个数量级,因而使用硬盘来虚拟主内存将导致程序运行的速度大幅度降低。
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&fstream与 C 作风(例如fread 和 fwrite )两种读写文件方法的效率比较_Java汉语言分词器Ansj_Tapestry5 与Ibatis3 的调整__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
fstream与 C 作风(例如fread 和 fwrite )两种读写文件方法的效率比较
Java汉语言分词器Ansj
Tapestry5 与Ibatis3 的调整
fstream与 C 作风(例如fread 和 fwrite )两种读写文件方法的效率比较
fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
我觉得作者写的挺好,评论也写的很对。
目前我的项目就是在VS2008+Qt+win7上开发的。我上次总结的QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件也说明了这个问题。
在windows平台下,MSVC编译器的环境下,对大文件的数据读写操作。采用C语言的形式(例如fread 和 fwrite )确实比C++/QT的串行序列化读写文件,速度快上好几倍。可以参考这两篇文章。
1、QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件
2、fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
为了探录c++ 风格的fstream与 C 风格(例如fread 和 fwrite )两种读写文件的方法的效率,我特意做了两个实验。
我的机器是Windows XP, Visual Studio 2008
1. 测试写文件速度
程序设计思路: 将TEST_SIZE个字符用两种方式写入文件,记录两种方式的耗时。
实验代码:
[cpp] view plaincopy
void test_write()
const int TEST_SIZE =
const char* c_plus_write_file = "H://c_plus_write_file.txt";
const char* c_write_file = "H://c_write_file.txt";
cout&&"Test size :" && TEST_SIZE &&
ofstream of(c_plus_write_file);
assert(of);
time_t start,
for(int i=0; i & TEST_SIZE; ++i)
char tmp[1];
tmp[0] = char(i);
of && tmp[0];
end = clock();
of.close();
cout&&"C++ style: "&&end - start &&" ms"&&
FILE* fp = fopen(c_write_file, "w");
for(int i=0; i & TEST_SIZE; ++i)
char tmp[1];
tmp[0] = char(i);
fwrite( tmp, 1, 1, fp);
end = clock();
fclose(fp);
cout&&"C style: "&&end - start &&" ms"&&
cin.get();
实验结果:
**从图1、2、3,可以看出, ofstream 的 && 运算符 所耗时 是fwrite()的近三倍
把of&&的代码改成了: of.write(tmp,1); 后结果:
实验代码:
[cpp] view plaincopy
void test_write()
const int TEST_SIZE = 1000000 ;
const char* c_plus_write_file = "H://c_plus_write_file.txt";
const char* c_write_file = "H://c_write_file.txt";
cout&&"Test size :" && TEST_SIZE &&
ofstream of(c_plus_write_file);
assert(of);
time_t start,
for(int i=0; i & TEST_SIZE; ++i)
char tmp[1];
tmp[0] = char(i);
of.write(tmp,1);
end = clock();
of.close();
cout&&"C++ style: "&&end - start &&" ms"&&
FILE* fp = fopen(c_write_file, "w");
for(int i=0; i & TEST_SIZE; ++i)
char tmp[1];
tmp[0] = char(i);
fwrite( tmp, 1, 1, fp);
end = clock();
fclose(fp);
cout&&"C style: "&&end - start &&" ms"&&
cin.get();
实验结果:
对比图4 和 图1、 图5 和 图2、图6 和 图3, 可以看到
&& 运算符没有 ofstream.write(), 快, 但两者还是没有 fwrite() 快
结论: 效率
fwrite() &
ofstream.operator&&() & ofstream.write()
3. 下面做读文件的比较:
程序设计思路: 用两种方法去读一个近100M的文本,记录时间。
实验代码:
[cpp] view plaincopy
void test_read()
const char* read_file = "H://read4.txt";
const int BUF_SIZE = 1024 ;
char buf[BUF_SIZE];
ifstream ifs(read_file,ios::binary);
assert(ifs);
time_t start,
while(!ifs.eof())
<li class="alt" style="padding-top: 0px ! padding-right: 3px ! padding-bottom: 0px ! padding-left: 10px ! border-top-style: border-right-style: borde
Java汉语言分词器Ansj
Java中文分词器AnsjJava中文分词器Ansj
Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,比其他常用的开源分词工具(如mmseg4j)的分词准确率更高。
介绍一下Ansj!
Ansj中文分词是一款纯Java的、主要应用于自然语言处理的、高精度的中文分词工具,目标是“准确、高效、自由地进行中文分词”,可用于人名识别、地名识别、组织机构名识别、多级词性标注、关键词提取、指纹提取等领域,支持行业词典、用户自定义词典。
你认为中文分词的难点是什么?
在这里说分词有点老生常谈了。的确,中文分词已经非常成熟了,但是之间有一些问题依旧比较难解。个人认为大致有以下几点吧:1.
中文歧义的识别比较出名的一句话“结婚的和尚未结婚的”,如果使用正向最大匹配,容易分成“结婚/的/和尚/未/结婚的”,于是有的学者试图倒过来识别,逆向匹配会大于正向。但是碰到这句“结合成分子时”,采用逆向最大匹配,则会分为“结合/成分/子时”,更有甚者像“咬了猎人的狗”这种语意不明的词语,就更不容易正确分词了。这是中文分词的软肋。下面是些典型的歧义句:
交叉歧义(多种切分交织在一起):内塔内亚胡说的/确实/在理
组合歧义(不同情况下切分不同):这个人/手上有痣、我们公司人手
真歧义(几种切分都可以):乒乓球拍/卖/完了、乒乓球/拍卖/完了
实体名识别这个是中文分词遇到的最大的难点,也是最最紧迫的。实体名识别包括人名识别、地名识别、机构名识别,还包括有监督识别和无监督识别。有监督的还好,无监督基本是无解的,比如“王大力发球”是“王大力”还是“大力发球”,一般人都难以识别。3.
新词热词发现目前常用的新词发现还是一个比较有研究性的课题,虽然有些论文在准确率很高,但是大多是封闭测试,这意味着结果很难应用到实际工程中。目前Ansj采用的新词发现方式比较简单,采用了高频词的匹配方式,不使用规则,用统计重复串识别新词,根据词性去掉干扰词,虽然有一定的效果,但还是差强人意。4.
颗粒度问题
这个就是一个规则探讨的问题了,比如“北京大学”是“北京”+“大学”还是“北京大学”,人各有志,就连同一个人不同时间的标注也有可能是有区别的,虽然这个问题严格上来说不属于技术问题,但是对分词结果的评测却有着很大的关系,Ansj采用“能识别就识别”的策略方针,所以在真正R值的时候偏低,总之一句话,适合学术的不一定适合工业,反之亦然。
简单介绍一下Ansj分词用到的算法,其分词原理是什么?
Ansj并非我创新,可以说是一个ictclas的Java版本,基本原理一致,只不过在分词优化算法上做了一些改进。
该算法实现分词有以下几个步骤:
1、 全切分,原子切分;
2、 N最短路径的粗切分,根据隐马尔科夫模型和viterbi算法,达到最优路径的规划;
3、人名识别;
4、 系统词典补充;5、 用户自定义词典的补充;6、 词性标注(可选)
Ansj分词的准确率大概是多少?
这是我采用人民日报1998年1月语料库的一个测试结果,首先要说明的是这份人工标注的语料库本身就有错误。
P(准确率):0.267
R(召回率):0.8712
F(综合指标F值):0.6494
在歧义、未登录词问题上,Ansj表现怎样?
歧异方面的处理方式自我感觉还可以,基于“最佳实践规则+统计”的方式,虽然还有一部分歧异无法识别,但是已经完全能满足工程应用了。
至于未登录词的识别,目前重点做了中文人名的识别,效果还算满意,识别方式用的“字体+前后监督”的方式,也算是目前我所知道的效果最好的一种识别方式了。
Ansj的性能如何?
在我的测试中,Ansj的效率已经远超ictclas的其他开源实现版本。核心词典利用双数组规划,每秒钟能达到千万级别的粗分。在我的MacBookAir上面,分词速度大约在300w/字/秒,在酷睿i5+4G内存组装机器上,更是达到了400w+/字/秒的速度。
如何添加自定义词典?
Ansj已经实现了用户自定义词典的动态添加删除,当然,也支持从文件加载词典。从硬盘加载用户自定义词典的方法:用户自定义词典默认路径:项目目录/library/userLibrary/userLibrary.dic格式为:[自定义词]
[词频],如:csdn创新院
userDefine
1000,中间用TAB键隔开原分词结果:[csdn, 创新, 院, 是, 一个, 好, 公司]增加词典后:[csdn创新院, 是, 一个, 好, 公司]详细内容见:用户自定义词典的添加用户自定义词典的动态添加删除方法见:用户自定义词典的动态添加删除Demo
在线演示:/demo/seg.jsp官网地址:http://www.ansj.org/Github地址:/ansjsun/ansj_seg
Tapestry5 与Ibatis3 的调整
Tapestry5 与Ibatis3 的整合与现在最流行的SSH相比较,Tapestry能够完全替代其中Struts2和Spring,但是他还是需要一个ORM的框架。IBatis由于比较低的学习曲线,也受到很多人的喜爱。尤其是在IBatis3中引入了许多新的概念和想法,使用更加安全和便利。本文主要介绍如何将Tapestry5.1和IBatis3进行整合。简要步骤:1. 准备工作2. 数据库的建立3. POJO的建立4. IBatis相关配置文件的创建5. Tapestry相关代码的完成概要说明:1、准备工作。这一部分是比较简单的,Eclipse之类的开发环境是必需的。Tapestry5.1、IBatis3(目前还是Beta7)、数据库(我使用的是MySql)的下载安装。2、数据库的建立,由于是示例,所以数据库的建立也非常简单,只有一张User表,3个字段,Id,Name,Password3、com.sample.User类,对应数据库表的3个字段,生成User类4、IBatis配置文件:Configuration.xml,UserMapper.xml,jdbc.properties的生成, 前两个必需,最后一个可选.5、在AppModule里,使用build方法, 添加服务生成IBatis3的SqlSessionFactory, 在需要使用SqlSessionFactory的地方,使用@InjectService注入即可详细说明:1、大家到各自的网站上下载相应的包好了。我只罗列一下我所用到的Lib:
antlr-runtime-3.1.1.jar
commons-codec-1.3.jar
commons-lang-2.4.jar
ibatis-3-core-3.0.0.216.jar
javassist.jar
log4j-1.2.14.jar
mysql-connector-java-5.0.5.jar
slf4j-api-1.5.10.jar
slf4j-log4j12-1.5.10.jar
stax2-api-3.0.1.jar
tapestry-core-5.1.0.5.jar
tapestry-ioc-5.1.0.5.jar
tapestry5-annotations-5.1.0.5.jar
woodstox-core-lgpl-4.0.7.jar
2、Create Table
DROP TABLE IF EXISTS `test`.`user`;
CREATE TABLE
`test`.`user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
package com.sample.
public class User {
// getter and setter
4、我把Configuration.xml和UserMapper.xml都放在src目录下,这样在部署的时候,就是生成在classes,也就是类路径的根目录下。
Configuration.xml:
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd"&
&configuration&
&properties resource="jdbc.properties"&
&/properties&
&environments default="development"&
&environment id="development"&
&transactionManager type="JDBC"/&
&dataSource type="POOLED"&
&property name="driver" value="${jdbc.driver}"/&
&property name="url" value="${jdbc.url}"/&
&property name="username" value="${jdbc.username}"/&
&property name="password" value="${jdbc.password}"/&
&property name="poolPingEnabled" value="${pingenable}"/&
&property name="poolPingQuery" value="${pingquery}"/&
&property name="poolPingConnectionsNotUsedFor" value="${pingnotusetime}"/&
&/dataSource&
&/environment&
&/environments&
&mapper resource="UserMapper.xml"/&
&/mappers&
&/configuration&
UserMapper.xml:
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"&
&mapper namespace="com.sample.model.UserMapper"&
&select id="selectUser" parameterType="int" resultType="com.sample.model.User"&
select * from user where id = #{id}
jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/test?autoReconnect=true
jdbc.username=root
jdbc.password=root
pingenable=true
pingquery=SELECT 1
pingoldertime=0
pingnotusetime=3600000
package com.sample.web.
public class AppModule {
public static SqlSessionFactory buildSqlSessionFactory() {
String resource = "Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
return new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
logger.warn("failed to build SqlSessionFactory: ", e);
private static Logger logger = LoggerFactory.getLogger(AppModule.class);
package com.sample.
public interface UserMapper {
public User selectUser(int id);
package com.pc.sample.web.
public class Layout {
@InjectService("SqlSessionFactory")
private SqlSessionFactory sqlM
public String getUserName() {
if ( sqlMapper == null ) {
return "null-mapper";
SqlSession session = sqlMapper.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
if ( userMapper == null ) {
return "null-userMapper";
User user = userMapper.selectUser(1);
if ( user == null ) {
return "null-user";
return user.getName();
} catch (Exception e) {
return "exception-" + e.getMessage();
} finally {
session.close();
几个注意事项:1,因为我的IBatis的配置文件Configuration.xml是放在类路径的根目录下,所以在初始化SqlSessionFactory的时候,直接用String resource = "Configuration.xml";就行了,否则需要添加相应的路径,比如:把Configuration.xml与User类放在一起,也就是在 com.sample.model这个package中,那么就要写成:String resource = "com/sample/model/Configuration.xml";同样,在Configuration.xml中,指定UserMapper.xml的规则也是这样的。2,UserMapper的使用。Mapper的使用是IBatis3中才有的新功能,也是IBatis用户指南中推荐使用的方式。因为这样使用的话,就完全避免了类型的强制转换,实现了类型安全。需要注意的是UserMapper只是一个接口。我们不需要提供这个接口的具体实现。IBatis3会自动生成一个具体的实例。其中的方法名必须与UserMapper.xml中的select语句的id一样。在我的例子中是selectUser.另外,此方法的返回值的类型必须与UserMapper.xml中配置的returnType一致。最后要提醒的是UserMapper.xml中的namespace必须是UserMapper的全类名,在本例中就是com.sample.model.UserMapper
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 硬盘写入速度很慢 的文章

 

随机推荐