摘要: Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。 普通事务只支持一个数据库连接,不能跨越多个数据库。默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用 commit() 来提交,否则将调 阅读全文
posted @ 2018-07-13 00:37 yifanSJ 阅读(1647) 评论(0) 推荐(1) 编辑
摘要: 因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。 XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。 一阶段提交协议 一阶段提交协议相对简单,如下图: 当然,前提是开启了事务,然后在应用程序发出提交/回滚请求后 阅读全文
posted @ 2018-07-13 00:07 yifanSJ 阅读(1609) 评论(0) 推荐(0) 编辑
摘要: 陷阱一:不要只用readOnly=true @Transactional(readOnly = true) public TradeData getTrade(long tradeId) throws Exception { return em.find(TradeData.class, trade 阅读全文
posted @ 2018-06-25 23:28 yifanSJ 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 一、具体的实现原理 对volatile变量执行写操作时,会在写操作后加入一条store屏障指令 对volatile变量执行读操作时,会在读操作前加入一条load屏障指令 说人话: 对volatile变量执行读操作时,都要强制的先从主内存读取最新的变量值到工作内存,然后再读工作内存中所存储的变量副本 阅读全文
posted @ 2018-06-25 15:03 yifanSJ 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 认识synchronized 对于写多线程程序的人来说,经常碰到的就是并发问题,对于容易出现并发问题的地方价格synchronized基本上就搞定 了,如果说不考虑性能问题的话,这一操绝对能应对百分之九十以上的情况,若对于性能方面有要求的话就需要额外的知识比如读写锁等等。本文目的先了解透彻synch 阅读全文
posted @ 2018-06-24 17:18 yifanSJ 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 一、Class.forName("").newInstance(); 1. Class.forName( )静态方法的目的是为了动态加载类(初始化类)。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动 阅读全文
posted @ 2018-06-23 19:27 yifanSJ 阅读(1951) 评论(0) 推荐(0) 编辑
摘要: 一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个 阅读全文
posted @ 2018-06-23 18:16 yifanSJ 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 一、去重,去除多个字段相同的记录,保留一个 场景一:去除表中所有重复数据,均只保留一个 delete from tbl_dept where dept_id not in ( select id from ( select min(dept_id) as id from tbl_dept group 阅读全文
posted @ 2018-06-22 19:19 yifanSJ 阅读(478) 评论(0) 推荐(0) 编辑
摘要: MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络): 在一主多从的数据库体系中,多个从服务器采用异步的方式更 阅读全文
posted @ 2018-06-12 23:32 yifanSJ 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 1. 文件授权 chmod u+x somefile 只授予这个文件的所属者执行的权限 chmod a+x somefile 授予所有用户执行的权限(简写chmod +x somefile) u 代表用户 g 代表用户组 o 代表其他 a 代表所有 2.查看内存大小 free -g 3. 查看最消耗 阅读全文
posted @ 2018-06-12 17:46 yifanSJ 阅读(177) 评论(0) 推荐(0) 编辑