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

教新手做网站难吗搜索引擎优化的方法有哪些?

教新手做网站难吗,搜索引擎优化的方法有哪些?,网站版块策划,石家庄自助建站软件Spring的事务处理 1.什么是事务? 保证业务操作完整性的一种数据库机制 事务4个特点:A C I D 1.A 原子性 2.C 一致性 3.I 隔离性 4.D 持久性 2.如何控制事务 JDBC: Connection.setAutoCommit(false) Connection.commit() Connection.rollba…

Spring的事务处理

1.什么是事务?

保证业务操作完整性的一种数据库机制

事务4个特点:A C I D 

1.A 原子性

2.C 一致性

3.I  隔离性

4.D 持久性

2.如何控制事务

JDBC:

        Connection.setAutoCommit(false)

        Connection.commit()

        Connection.rollback()

Mybatis:

        Mybatis自动开启事务

        sqlSession(底层也封装了Connection).commit()

        sqlSession.rollback()

结论:控制事务的底层 都是Connection对象完成

 3.Spring控制事务的开发

Spring通过AOP的方式进行事务开发

1.原始对象

public class XXXUserServiceImpl{

        1.原始对象-->原始方法--->核心功能(业务处理+DAO调用)

        2.DAO最为Service的成员变量,依赖注入的方式进行赋值

}

2.额外功能 org.springframework.jdbc.datasource.DataSourceTransactionManage

注入DataSource

MethodInterceptor

public Object invoke(MethodInvocation invocation){

        try{

        Connection.setAutoCommit(false)

        Object ret=invocation.proceed();

        Connection.commit()

        }catch(Exception e){

               Connection.rollback();

        }

        return ret;

}

@Aspect

@Around

3.切入点

@Transactional

事务的额外功能加入哪些业务方法

1.类上:类中所有方法都会加入事务

2.方法上:这个方法会加入事务

4.组装切面

1.切入点

2.额外功能

<tx:annotation-driven transaction-manager=""/>

 4.Spring事务的编码

  • 搭建开发环境(jar) 
 <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.1.14.RELEASE</version></dependency>
  •  applicationContext.xml
@Transactional
public class EmpServiceImpl implements EmpService{public EmpDao getEmpDao() {return empDao;}
<!--    MapperScannerConfigure自动创建Dao接口的实现类 并且命名就是按照DAO接口首单词首字母小写创建--><bean id="empService" class="mybatis.service.EmpServiceImpl"><property name="empDao" ref="empDao"/></bean>
<!--     DataSourceTransactionManager--><bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean>
<!--    @Transactional--><!--    --><tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
  • 细节
<tx:annotation-driven transaction-manager="dataSourceTransactionManager" proxy-target-class="true"/>

进行动态代理底层实现切换

默认 false JDK

        true Cglib


 Spring事务属性

1.什么是事务属性?

属性:描述物体特征的一系列值

         

事务属性:描述事务特征的一系列值

1.隔离属性

2.传播属性

3.只读属性

4.超时属性

5.异常属性

 2.如何添加事务属性

@Transactional(isloation=.propagation=,readOnly,timeout=,rollbackFor=,noRollbackFor)

 1.隔离属性(Isolation)

  • 隔离属性概念

概念:它描述了事务解决并发问题的特征

1.什么是并发?

    多个事务(用户)在同一时间,访问操作了相同的数据

   同一时间 0.000几秒 微小前后

2.并发会产生哪些问题

        1.脏读        

        2.不可重复读

        3.幻影读

3.并发问题如何解决

        通过隔离属性解决,隔离属性设置不同的值,解决并发处理过程中的问题

 事务并发产生的问题

  • 脏读

一个事务,读取了另一个事务中没有提交的数据,会在本事务中产生数据不一致的问题

举例:

客户A向B转账100元,事务步骤如下:

  1. 读取A余额(500元)

  2. 扣减A账户(500-100=400)

  3. 未提交时系统崩溃

  4. B账户未收到款项(仍为200元)

此时数据库出现脏数据:

  • A账户实际余额为400元(未提交的中间状态)

  • 但事务已回滚,系统仍显示A余额为500元

  • 若其他事务读取A余额,可能获取到400元的"脏数据"

解决方案:

@Transactional(isolation = Isolation.READ_COMMITTED)

  •  不可重复读

一个事务中,多次读取相同的数据,但是读取结果不一样,会在本事务中产生数据不一致的问题

事务A查询账户余额为500元,此时事务B修改余额为400元并提交。事务A再次查询时发现余额变为400元,同一事务内两次读取结果不同,即为不可重复读。

具体过程:

  1. 事务A读取余额(500元)

  2. 事务B更新余额(400元)并提交

  3. 事务A再次读取,得到400元(与第一次不一致)

解决方案:@Transactional(isolation=Isolation.REPEATABLE_READ)
本质相当于事务A读取的时候加了一把行锁

  • 幻影读

一个事务中,多次对整个表进行查询统计,但是结果不一样,会在本事务中产生数据不一致的问题

如:

事务A查询账户列表(当前有A、B两个账户),此时事务C新增账户C并提交。事务A再次查询时发现多出一条记录(A、B、C),同一事务内两次查询结果集不同,即为幻影读。

具体过程:

  1. 事务A查询账户表(结果:A、B)

  2. 事务C插入账户C并提交

  3. 事务A再次查询,结果变为A、B、C

与不可重复读的区别在于:幻影读针对新增或删除的行,而非修改已有数据

解决方案:

@Transactional(isolation = Isolation.SERIALIZABLE)

本质:表锁

 总结:

并发安全:SERIALIZABL>REPEATABLE_READ>READ_COMMITTED

运行效率:READ_COMMITTED>REPEATABLE_READ>SERIALIZABL
 

READ_COMMITTED

不读未提交的数据(No Dirty Read):事务只能看到其他事务已提交的修改。

但允许已提交的数据被其他事务修改
为什么安全性最低?
不可重复读(Non-repeatable Read):事务A第一次读数据后,事务B可以修改并提交,事务A第二次读可能看到不同的值。

幻影读(Phantom Read):事务A查询某范围数据时,事务B可以插入或删除符合条件的数据并提交,导致事务A两次查询结果集不一致。

http://www.dtcms.com/wzjs/146406.html

相关文章:

  • 深圳计算机速成班培训久久seo综合查询
  • 淘宝返利网站怎么做的杭州网站排名seo
  • 咸宁网网站南京市网站seo整站优化
  • seo实训报告seo技术培训
  • 网站优化主旨福州网站优化
  • phpweb网站源码网络营销是以什么为中心
  • 个人备案网站做盈利合法吗网站优化费用报价明细
  • 基于互联网怎样做网站推广一键建站免费
  • 广西网站建设建议郑州网站建设最便宜
  • 报社新闻网站建设方案seo网络优化是做什么的
  • 石碣镇做网站seo网站关键词优化价格
  • 福州 网站开发公司黄页大全
  • 上海定制网站建设公司哪家好恶意点击软件有哪些
  • 兰州网站建设模板下载windows优化大师可靠吗
  • 建筑工程信息价哪里可以查询简阳seo排名优化课程
  • 链家准备做贝壳网站营销网站建设哪家好
  • 美丽寮步网站建设高性能推广引流方法有哪些?
  • 台州建设公司网站网络营销活动策划方案
  • 重庆开县网站建设公司推荐各地疫情最新消息
  • 电子商务网站建设的必要性百度账户推广登陆
  • 台州网站建设 推广公司手机创建网站教程
  • 互联网科技网站杭州百度首页排名
  • 大作设计网站官网登录入口网站营销策划
  • 邯郸网站制作公司便宜的seo官网优化
  • 网站命名规范seo零基础入门到精通200讲
  • c 网站开发怎么弹出输入框2345浏览器官网
  • 南阳做网站哪家好百度一下就知道官方网站
  • 推广公司是做什么的沈阳百度seo关键词优化排名
  • 合作网站开发草莓永久地域网名入2022
  • 专业建站制作做网站找哪家好