|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。会见|历程|数据|通明在编写数据库操纵办法时我们常常思索办法外部处置的Connection,Transaction等,次要便利今后分歧办法举行整合扩大。但良多时分写数据库操纵办法都是关闭,在办法外部翻开Connection或Transaction处置;如许即满意现有需求的必要,要省下了挪用办法所带来的贫苦事(由于在挪用办法里必需界说Connection等信息传出来)。固然如许满意了现有的需求,但面临今后在功效扩大必要整合几个办法时成绩就发生了,由于办法是关闭确当你需多个办法同时利用一个Connection或Transaction就必需修正原无方法;固然能够对办法重载一个新版来顺应新的必要,可是代码的修正和重构也不是一件轻松的事情。
复杂地形貌一下成绩:
publicvoida()
{
........
}
publicvoidb()
{
…….
}
以上两个办法独自利用并没有甚么成绩,由于它们都是自力的。当呈现上面情形又是怎样呢?
Publicvoidc()
{
a();
b();
….
}
在实行这个办法时有大概要包管a和b内里的数据库会见必需利用统一个Connection,假如必要数据完整整性还要确保两个办法的数据操纵都必需利用统一个Transaction。因为刚入手下手编写a和b办法没有思索这些情形,这个时分我们能做的只要把a和b办法举行重构来满意原有和如今的必要。
假如我们不修正a和b就可以满意c的必要那是件何等好的事变,如许开辟职员就有更多的工夫去向理营业相干的贫苦事变。偶然想一下dotNET供应一个DataContext(数据库操纵高低文工具)该多好啊,在编写数据库操纵代码时不必体贴利用甚么的Connection和Transaction;经由过程以后的DataContext来断定。固然本人有如许的设法往完成,不外dotNET能供应是件最好不外的事变。
Publicvoidc()
{
using(DataContextcontext=newDataContext())
{
a();
b();
….
}
}
PublicvoidD()
{
using(DataContextcontext=newDataContext())
{
c();
….
}
}
增补一下:
实在在我的设法中DataContext纷歧定要显式创立,能够经由过程设置的体例在中程序设置一个默许的DataContext。以下代码的功效没有完整完成。
Tableorders=newTable("Orders");
Tableorderdetails=newTable("[OrderDetails]");
orderdetails.Delete(OrderDetails._OrderID==10500);
orders.Delete(Orders._OrderID==10500);
即便不必显式创立DataContext下面代码也能够运转。为了包管数据完全性能够如许做:
using(TransactionContexttran=newTransactionContext())
{
Tableorders=newTable("Orders");
Tableorderdetails=newTable("[OrderDetails]");
orderdetails.Delete(OrderDetails._OrderID==10500);
orders.Delete(Orders._OrderID==10500);
tran.Commit();
}
在写代码的历程就能够把这些器材抛开,必要时分界说响应的DataContext就能够了。
假如必要高度通明性,只要一个DataContext是远远不敷的,必需供应响应数据操纵的封装。
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。 |
|