上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 46 下一页
摘要: 昨晚某技术群里大家热火的在讨论分布式事务的问题,想起了自己前几年由于技术太渣也犯过很多相关错误,现结合自己之前一次BUG案例由感而写此文,希望对看到文章的同学们多少有些帮助(如果发现错误之处,欢迎交流)。 一个注册业务,用户注册成功后,后台调用另外一个服务同步完成开通资金账户,后来加了一个需求同时还 阅读全文
posted @ 2019-05-27 22:41 myseries 阅读(748) 评论(2) 推荐(1) 编辑
摘要: 在我们支付系统设计中,经常会遇到这样一个问题,防止用户重复支付。用户明明只想购买一次,却因为系统问题,导致重复支付,带来额外的物流成本和扯皮退货的运营成本,对商家的信誉和系统的体验很不好。 那么实际我们在设计支付系统时,如何来避免这一问题呢。 为什么会出现重复支付 1.客户误操作点了两次 比如下单的 阅读全文
posted @ 2019-05-27 22:38 myseries 阅读(7170) 评论(0) 推荐(0) 编辑
摘要: 电子交易的一个很基本的问题,就是避免用户下重复订单。用户明明想买一次,结果一看下了两个单。如果没有及时发现,就会带来额外的物流成本和扯皮。对商家的信誉也不好看。 从技术上看,这是一个分布式一致性问题;但实际上,技术无法100%解决这类问题,得结合多种手段综合处理。这里就来说道说道。 为啥会下重了呢? 阅读全文
posted @ 2019-05-27 19:07 myseries 阅读(1971) 评论(0) 推荐(0) 编辑
摘要: 概念 Repeatable Read(可重复读):即:事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。 实现原理(MVCC [ 多版本并发控制 ]) InnoDB在每行记录后面保存两个隐藏的列来,分别保存了这个行的创建时间和行的删除时间。这里 阅读全文
posted @ 2019-05-27 16:50 myseries 阅读(16078) 评论(0) 推荐(10) 编辑
摘要: 1 什么是MVCC MVCC全称是: Multiversion concurrency control,多版本并发控制,提供并发访问数据库时,对事务内读取的到的内存做处理,用来避免写操作堵塞读操作的并发问题。 举个例子,程序员A正在读数据库中某些内容,而程序员B正在给这些内容做修改(假设是在一个事务 阅读全文
posted @ 2019-05-27 15:21 myseries 阅读(30268) 评论(11) 推荐(13) 编辑
摘要: 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 面试题剖析 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请 阅读全文
posted @ 2019-05-27 14:10 myseries 阅读(1307) 评论(0) 推荐(0) 编辑
摘要: 一、相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--间隙锁(NEXT-KEY锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个 阅读全文
posted @ 2019-05-27 13:01 myseries 阅读(3241) 评论(0) 推荐(2) 编辑
摘要: 中断 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的几点告诫。 首先,忘掉Thre 阅读全文
posted @ 2019-05-24 16:23 myseries 阅读(37493) 评论(4) 推荐(18) 编辑
摘要: 1. 引言 java 类被虚拟机编译之后成为一个 Class 的字节码文件,该字节码文件中包含各种描述信息,最终都需要加载到虚拟机中之后才能运行和使用。那么虚拟机是如何加载这些 Class 文件?Class 文件中的信息进入虚拟机之后会发生什么变化?接下来我们一个一个探讨。 2. 类加载的时机 类的 阅读全文
posted @ 2019-05-23 17:47 myseries 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 一:什么是异常 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lan 阅读全文
posted @ 2019-05-22 19:17 myseries 阅读(1116) 评论(0) 推荐(0) 编辑
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 46 下一页