当前位置: 首页 > news >正文

温州通业建设工程有限公司网站网站开发中可能遇到的技术问题

温州通业建设工程有限公司网站,网站开发中可能遇到的技术问题,大人小孩做网站,优化网站制作方法大全一、事务的理解#xff1a; 1、事务的特性#xff1a; 1) 原子性#xff08;atomicity#xff09;#xff1a;事务是数据库的逻辑工作单位#xff0c;而且是必须是原子工作单位#xff0c;对于其数据修改#xff0c;要么全部执行#xff0c;要么全部不执行。 2) 一致性…一、事务的理解 1、事务的特性 1) 原子性atomicity事务是数据库的逻辑工作单位而且是必须是原子工作单位对于其数据修改要么全部执行要么全部不执行。 2) 一致性consistency事务在完成时必须是所有的数据都保持一致状态。在相关数据库中所有规则都必须应用于事务的修改以保持所有数据的完整性。 3) 隔离性isolation一个事务的执行不能被其他事务所影响。 4) 持久性durability一个事务一旦提交事物的操作便永久性的保存在DB中。即使此时再执行回滚操作也不能撤消所做的更改。 2、事务的定义 事务(Transaction)是并发控制的单元是用户定义的一个操作序列。这些操作要么都做要么都不做是一个不可分割的工作单位。通过事务sql server 能将逻辑相关的一组操作绑定在一起以便服务器保持数据的完整性。 事务通常是以begin transaction开始以commit或rollback结束 Commint表示提交即提交事务的所有操作。具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去事务正常结束。 Rollback表示回滚即在事务运行的过程中发生了某种故障事务不能继续进行系统将事务中对数据库的所有已完成的操作全部撤消滚回到事务开始的状态。 3、事务的分类 自动提交事务每条单独的语句都是一个事务。每个语句后都隐含一个commit。 默认 显式事务以begin transaction显示开始以commit或rollback结束。 隐式事务当连接以隐式事务模式进行操作时sql server数据库引擎实例将在提交或回滚当前事务后自动启动新事务。无须描述事物的开始只需提交或回滚每个事务。但每个事务仍以commit或rollback显式结束。连接将隐性事务模式设置为打开之后当数据库引擎实例首次执行下列任何语句时都会自动启动一个隐式事务alter tableinsertcreateopen deleterevoke dropselect fetch truncate tablegrantupdate在发出commit或rollback语句之前该事务将一直保持有效。在第一个事务被提交或回滚之后下次当连接执行以上任何语句时数据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链直到隐性事务模式关闭为止。 二、Java JDBC事务机制 首先我们来看看现有JDBC操作会给我们带来什么重大问题比如有一个业务当我们修改一个信息后再去查询这个信息看是这是一个简单的业务实现起来也非常容易但当这个业务放在多线程高并发的平台下问题自然就出现了比如当我们执行了一个修改后在执行查询之前有一个线程也执行了修改语句这是我们再执行查询看到的信息就有可能与我们修改的不同为了解决这一问题我们必须引入JDBC事务机制其实代码实现上很简单一下给出一个原理实现例子供大家参考 复制代码 private Connection conn null;   private PreparedStatement ps null;   try {   conn.setAutoCommit(false); //将自动提交设置为false   ps.executeUpdate(修改SQL); //执行修改操作   ps.executeQuery(查询SQL); //执行查询操作                  conn.commit(); //当两个操作成功后手动提交   } catch (Exception e) {   conn.rollback(); //一旦其中一个操作出错都将回滚使两个操作都不成功   e.printStackTrace();   } 复制代码 三、与事务相关的理论 1、事务(Transaction)的四个属性(ACID) 原子性(Atomic) 对数据的修改要么全部执行要么全部不执行。 一致性(Consistent) 在事务执行前后数据状态保持一致性。 隔离性(Isolated) 一个事务的处理不能影响另一个事务的处理。 持续性(Durable) 事务处理结束其效果在数据库中持久化。 2、事务并发处理可能引起的问题 脏读(dirty read) 一个事务读取了另一个事务尚未提交的数据 不可重复读(non-repeatable read) 一个事务的操作导致另一个事务前后两次读取到不同的数据 幻读(phantom read) 一个事务的操作导致另一个事务前后两次查询的结果数据量不同。 举例事务A、B并发执行时 当A事务update后B事务select读取到A尚未提交的数据此时A事务rollback则B读到的数据是无效的脏数据。 当B事务select读取数据后A事务update操作更改B事务select到的数据此时B事务再次读去该数据发现前后两次的数据不一样。 当B事务select读取数据后A事务insert或delete了一条满足A事务的select条件的记录此时B事务再次select发现查询到前次不存在的记录(幻影)或者前次的某个记录不见了。 四、JDBC的事务支持 JDBC对事务的支持体现在三个方面 1、自动提交模式(Auto-commit mode) Connection提供了一个auto-commit的属性来指定事务何时结束。 1当auto-commit为true时当每个独立SQL操作的执行完毕事务立即自动提交也就是说每个SQL操作都是一个事务。 一个独立SQL操作什么时候算执行完毕JDBC规范是这样规定的 对数据操作语言(DML如insert,update,delete)和数据定义语言(如create,drop)语句一执行完就视为执行完毕。 对select语句当与它关联的ResultSet对象关闭时视为执行完毕。 对存储过程或其他返回多个结果的语句当与它关联的所有ResultSet对象全部关闭所有update count(update,delete等语句操作影响的行数)和output parameter(存储过程的输出参数)都已经获取之后视为执行完毕。 2当auto-commit为false时每个事务都必须显示调用commit方法进行提交或者显示调用rollback方法进行回滚。auto-commit默认为true。 JDBC提供了5种不同的事务隔离级别在Connection中进行了定义。 2、事务隔离级别(Transaction Isolation Levels) JDBC定义了五种事务隔离级别 TRANSACTION_NONE JDBC驱动不支持事务 TRANSACTION_READ_UNCOMMITTED 允许脏读、不可重复读和幻读。 TRANSACTION_READ_COMMITTED 禁止脏读但允许不可重复读和幻读。 TRANSACTION_REPEATABLE_READ 禁止脏读和不可重复读单运行幻读。 TRANSACTION_SERIALIZABLE 禁止脏读、不可重复读和幻读。 3、保存点(SavePoint) JDBC定义了SavePoint接口提供在一个更细粒度的事务控制机制。当设置了一个保存点后可以rollback到该保存点处的状态而不是rollback整个事务。 Connection接口的setSavepoint和releaseSavepoint方法可以设置和释放保存点。 JDBC规范虽然定义了事务的以上支持行为但是各个JDBC驱动数据库厂商对事务的支持程度可能各不相同。如果在程序中任意设置可能得不到想要的效果。为此JDBC提供了DatabaseMetaData接口提供了一系列JDBC特性支持情况的获取方法。比如通过DatabaseMetaData.supportsTransactionIsolationLevel方法可以判断对事务隔离级别的支持情况通过DatabaseMetaData.supportsSavepoints方法可以判断对保存点的支持情况。 五、事务的使用 当Jdbc程序向数据库获得一个Connection对象时默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。若想关闭这种默认提交方式让多条SQL在一个事务中执行并且保证这些语句是在同一时间共同执行的时我们就应该为这多条语句定义一个事务。 其中银行转账这一事例最能说明使用事务的重要性了。 update from account set moneymoney-100 where name‘a’; update from account set moneymoney100 wherename‘b’; //因为这时两个账户的增减变化是在一起执行的。现实生活中这种类似于同步通信的例子还有很多这里不再赘述。 当然对于事务的编写也是要遵守一定的顺序的 首先设置事务的提交方式为非自动提交conn.setAutoCommit(false); 接下来将需要添加事务的代码放入try catch块中。 然后在try块内添加事务的提交操作表示操作无异常提交事务。conn.commit(); 尤其不要忘记在catch块内添加回滚事务表示操作出现异常撤销事务conn.rollback(); 最后设置事务提交方式为自动提交conn.setAutoCommit(true);
http://www.w-s-a.com/news/650546/

相关文章:

  • 东莞网站建设推广云南昆明最新消息
  • 上网站乱码网页设计与网站建设案例教程
  • 宣讲网站建设wordpress多媒体主题
  • 如何成立网站互联网开发是做什么的
  • 网站首页的尺寸做多大网页图片排版
  • 龙岩天宫山索道多少钱河南网站排名优化哪家好
  • 北京做网站设计程序员和网站开发
  • 个人 做自媒体 建网站图片制作成视频的手机软件
  • h5 建站网站 移动端重庆潼南网站建设价格
  • 商企在线营销型网站怎么做时光网站
  • 网站建设方案论文1500竞价托管哪家便宜
  • 使用cdn的网站宣武网站建设
  • 营销型网站怎么建设企业网站Wap在线生成
  • 网站建设服务费应该做到什么科目广州网页制作服务商
  • 网站显示500错误怎么解决方法店面设计模板
  • 网站备案icp文化传媒有限公司
  • 北京企业建站模板微信公众号商城怎么制作
  • 制作网站 公司简介大型做网站的公司
  • 北京网站开发建设南昌网站小程序开发
  • 网站如何做ip签名图片宁波互联网
  • 中山小榄网站建设长沙网络营销品牌排名
  • 推广优化厂商联系方式网站推广教程优化整站
  • 为外国企业做中文网站建设网站建设单位哪家好
  • 生物制药公司网站模板有没有专业做steam创客的网站
  • 福田做棋牌网站建设找哪家效益快弄一个微信小程序多少钱
  • 成都哪家做网站建设比较好做推广赚钱的网站
  • 常州专门做网站的公司有哪些网页模板下载网站10
  • linx服务器怎么做网站做长页网站
  • 汕头网站建设sagevis服装设计公司有什么职位
  • 网站流量分析报告医院网站制作公司