事务管理

事务管理模型(银行转账)

倾然丶 夕夏残阳落幕 提交于 2019-11-27 11:13:41
package cn.itcast.jdbc;import cn.itcast.util.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;/** * @author newcityman * @date 2019/8/15 - 23:39 * 演示事务 */public class JDBCDemo09 { public static void main(String[] args) { Connection conn = null; PreparedStatement stmt1=null; PreparedStatement stmt2=null; try {// 1、获取连接 conn = JDBCUtils.getConnection();// 2、开启事务 conn.setAutoCommit(false); String sql1="update account set balance =balance-? where id=?"; String sql2="update account set balance =balance+? where id=?"; stmt1 = conn.prepareStatement

Redis核心配置

久未见 提交于 2019-11-27 11:01:30
文章目录 Redis的主从复制 Redis配置哨兵模式 Redis事务 Redis的持久化 RDB Redis的主从复制 主从复制的简介 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。 主从复制的过程 主从复制的过程 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。 假设我们现在有3个redis服务,地址分别为 192.168.110.138(master), 192.168.110.138(slave), 192.168.110.140(slave) salve的配置:修改etc/redis/redis.conf文件 sudo vim redis

Mysql运维常用命令回顾整理

回眸只為那壹抹淺笑 提交于 2019-11-27 10:44:19
前景 Mysql作为开源数据库的中坚力量之一,虽然目前已被甲骨文收购,面临闭源风险,但是mysql扔是我们运维工作中最常面对的工作,那如何做好mysql运维工作,甚至做好mysql的基础运维,都是维稳业务持久层的关键,故本文收集相关资料整理MySQL运维工作常用的命令,以作记录,供日常运维时参考查证。 Mysql运维 MySQL运维工作常用命令和操作主要包括:对MySQL数据库状态的查看、性能的优化(连接数,存储,集群等),MySQL表及索引的检查、分析、修复、优化,MySQL数据库的导出导入、冷热备份等。 1、工具篇 常用工具: 1)myisampack:压缩MySQL的MyISAM表以产生更小的只读表的一个工具。myisampack可以压缩MyISAM表来解决空间占用过大的问题。myisampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。 2)mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。它可作为MySQL的一个诊断工具,检查访问权限的主机名、用户名和数据库组合。其检查功能只访问user、db和host这3个表,而不检查在tables_priv、columns_priv或procs_priv表等信息; 3

php面试题

一世执手 提交于 2019-11-27 09:42:10
文章转载自: http://www.pythonheidong.com/blog/article/2220/ php面试题 php 面试 最近一直在面试,所以总结了下常见的 PHP 面试题. PHP基础题目 安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制? ①防远程提交; ②防SQL注入,对特殊代码进行过滤; ③防止注册机灌水,使用验证码; 在程序的开发中,如何提高程序的运行效率? ①优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询 ②数据表中创建索引 ③对程序中经常用到的数据生成缓存 现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点? MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是: ①可以实现代码的重用性,避免产生代码冗余 ②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式 对json数据格式的理解? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递 PHP中处理json格式的函数为json_decode( string $json [, bool $assoc ] ) ,接受一个

cap理论与分布式事务的解决方案

浪子不回头ぞ 提交于 2019-11-27 09:18:16
现在很火的微服务系统所设计的系统是分布式系统。分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency)、可用性(Availablility)和分区容错(Partition Tolerance)三个特性是一件不可能的事情。 CAP理论的简介 CAP理论是由Eric Brewer在2000年的PODC会议上提出的,该理论在两年后被证明成立。 CAP理论告诉架构师不要妄想设计出同时满足三者的系统,应该有所取舍,设计出适合业务的系统。 一致性(Consistency): 一致性指的是数据的强一致性。每次的读操作都是读取的最新数据。即如果写入某个数据成功的话,之后的读取都应该读的是新写入的数据;如果写入失败的话,之后读取的都不应该是写入失败的数据。 可用性(Availability): 可用性指的是服务的可用性。即每个请求都能在合理的时间内获得符合预期的响应结果。 分区容错性(Partition Tolerance): 分区容错性指的是当节点之间的网络出现问题之后,系统仍然能够正常提供服务。 在分布式的系统中,P是基本要求,而单体应用则是CA系统。微服务系统通常是一个AP系统,即同时满足可用性和分区容错性。这样就有了一个在分布式系统中保证数据强一致性的难题,这个难题的一个解决方案就是分布式事务。 分布式事务的解决方案 在微服务系统中

springboot事务管理及日志管理

一世执手 提交于 2019-11-27 07:21:24
以下所有操作都是基于添加了springboot各种依赖进行的 事务管理 Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。本文主要记录注解方式。 @Transactional 用法 将注解添加到方法上即可,需要注意的是,如果你当前方法捕获了异常,那么这个注解在这个方法将会失效,需要手动回滚事务。 回滚方式: 在catch中添加代码 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 日志管理 resources添加 logback-spring.xml 此配置文件是转载网上比较全面的配置文件,如果有需要请按实际需求去配置,此文件包括输出到控制台以及输出到文件 <?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN

微服务分布式事务的实现方法及替代方案

ぐ巨炮叔叔 提交于 2019-11-27 06:05:43
微服务–分布式事务的实现方法及替代方案 这两天正在研究微服务架构中分布式事务的处理方案, 做一个小小的总结, 作为备忘. 如有错误, 欢迎指正! 概念澄清 事务补偿机制 : 在事务链中的任何一个正向事务操作, 都必须存在一个完全符合回滚规则的可逆事务. CAP理论 : CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统. 幂等性 : 简单的说, 业务操作支持重试 , 不会产生不利影响. 常见的实现方式: 为消息额外增加唯一ID. BASE (Basically avaliable, soft state, eventually consistent): 是分布式事务实现的一种理论标准. 柔性事务 vs. 刚性事务 刚性事务是指严格遵循ACID原则的事务, 例如单机环境下的数据库事务. 柔性事务是指遵循BASE理论的事务, 通常用在分布式环境中, 常见的实现方式有: 两阶段提交(2PC), TCC补偿型提交, 基于消息的异步确保型, 最大努力通知型. 通常对本地事务采用刚性事务, 分布式事务使用柔性事务. 先上结论, 再分别介绍分布式事务的各种实现方式. 如果业务场景需要强一致性, 那么尽量避免将它们放在不同服务中,

Spring的事务管理难点剖析(1):DAO和事务管理的牵绊

徘徊边缘 提交于 2019-11-27 05:53:10
有些人很少使用Spring而不使用Spring事务管理器的应用,因此常常有人会问:是否用了Spring,就一定要用Spring事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和DAO是什么关系呢? 也许是DAO和事务管理如影随行的缘故吧,这个看似简单的问题实实在在地存在着,从初学者心中涌出,萦绕在老手的脑际。答案当然是否定的!我们都知道:事务管理是保证数据操作的事务性(即原子性、一致性、隔离性、持久性,即所谓的ACID),脱离了事务性,DAO照样可以顺利地进行数据的操作。 JDBC访问数据库 下面,我们来看一段使用Spring JDBC进行数据访问的代码: package com.baobaotao.withouttx.jdbc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.context.ApplicationContext; import org.springframework.context.support

Understanding virtualxid && transactionid

末鹿安然 提交于 2019-11-27 05:07:17
对pg_locks视图中的virtualxid和transactionid字段感到困惑,经查阅资料,特此在此整理一下学习内容: pg_locks Columns Name Type References Description locktype text Type of the lockable object: relation , extend , page , tuple , transactionid , virtualxid , object , userlock , or advisory database oid pg_database .oid OID of the database in which the lock target exists, or zero if the target is a shared object, or null if the target is a transaction ID relation oid pg_class .oid OID of the relation targeted by the lock, or null if the target is not a relation or part of a relation page integer Page number targeted by the lock

基于spring mvc + spring+mybatis+easyui+jquery+maven+mysql的后台权限管理系统

前提是你 提交于 2019-11-27 05:04:00
这是由本人多年经验而开发的一个后台管理系统,目前分为两个版本,具体区别如下: 版本A,该版本129元: 1.单数据源 2.使用声明式事务 版本B,该版本189元: 1.支持多数据源与分布式事务 2. 使用注解式事务 另:版本C, 请移步: https://blog.csdn.net/rotating_windmill/article/details/80640301 版本D,请移步: h ttps://blog.csdn.net/rotating_windmill/article/details/80700660 两个版本共同点: 1.前端技术:jquery+easyui 2.后台技术:spring mvc+spring+mybatis 3.管理工具:maven 4.数据库:mysql 5.内置一个权限管理系统,分为角色、菜单、按钮、访问资源,最小粒度可控制到按钮。 6.后台管理系统支持换肤。 有需要了解更多的可加QQ:332557712,直接购买上闲鱼: https://2.taobao.com/item.htm?id=539496231315&smToken=1ec4aead1db94447a5d3040dfe79f800&smSign=F6meH4wBk%2BnLsgu0NZ1XEQ%3D%3D ----------------------------------------