相关文章: p6,7
子文章
业务: 支付业务和支付商业能力_个人渣记录仅为自己搜索用的博客-CSDN博客
如何成为一名架构师,架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客_架构师成长之路
智能会议室建设总结_个人渣记录仅为自己搜索用的博客-CSDN博客
支付系统总结(收单,收银,资产交互,账务)_个人渣记录仅为自己搜索用的博客-CSDN博客
面试
幂等,并发竞争容易混淆
锁只能解决并发竞争,
幂等实现有两种 二判三更新 ( 仅二判三更新是不行的, 有个并发问题, 所以需要一锁, 等价 cas) 或者 insert幂等
一锁二判三更新
一锁二判三更新解决的是幂等问题, 同时一锁顺带解决了其他并发竞争的问题, 注意判和更必须是同一个字段, expect必须是静态代码配置的值, 也可以用乐观锁强制规范.
乐观锁有的问题, 一锁二判三更新都有! 在幂等这个作用上, 乐观锁可以作为悲观锁的兜底, 场景: 当一锁的行(例如主单表的行) 和 三更新的行(例如附属操作表的行)不一致时, 二判什么就会让很多同学疑惑,可能会导致二判的东西出错.
而乐观锁可以强制在一个sql里面确保二判三更新同一个字段,update xx set status = targetStatus when status = expectStatus .
当然 一锁是很重要的, 可以有效避免其他字段的读and写并发竞争问题 .
乐观锁和悲观锁都需要加锁,那他们的的区别是?
两者本质上都需要加锁等待. 悲观锁是整片区域先加锁,对n个字段而言. 乐观锁是对一个字段而言.
结合数据库的悲观锁和乐观锁进一步谈谈?
数据库的悲观锁更加, 有了网络效应,让数据库持续性持有事务资源.
算法
「剑指 Offer」 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台
letcode 算法 编程 面试https://blog.csdn.net/fei33423/article/details/123196168算法leetcode力扣_个人渣记录仅为自己搜索用的博客-CSDN博客<算法>入门, <算法导论>进阶 (动态规划,贪心算法结合下面的地址一起理解), 数据结构与算法分析(java语言描述)进阶1.[精华]二叉树遍历的非递归实现- 尾递归 栈实现_fei33423的专栏-CSDN博客2. 贪心算法详解_K神丶的专栏-CSDN博客_贪心算法3.从零开始学动态规划_houjingyi的博客-CSDN博客_动态规划怎么学...
https://blog.csdn.net/fei33423/article/details/123320605?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22123320605%22%2C%22source%22%3A%22fei33423%22%7D&ctrtid=CBfY1
分
人人都是java并发专家_个人渣记录仅为自己搜索用的博客-CSDN博客
人人都是分布式专家 paxos raft_个人渣记录仅为自己搜索用的博客-CSDN博客
java 定位实战_个人渣记录仅为自己搜索用的博客-CSDN博客
带着问题看jdk的并发AQS_个人渣记录仅为自己搜索用的博客-CSDN博客
分布式事务 同库模式 remote模式_个人渣记录仅为自己搜索用的博客-CSDN博客
协程 java quasar 原理_个人渣记录仅为自己搜索用的博客-CSDN博客
内存屏障指令重排序
总结
(1)CPU具有多级缓存,越接近CPU的缓存越小也越快(2)CPU缓存中的数据是以缓存行为单位处理的;
(3)CPU缓存行能带来免费加载数据的好处,所以处理数据性能非常高
(4)CPU缓存行也带来了弊端,多线程处理不相干的变量时会相互影响,也就是伪共享
(5)避免伪共享的主要思路就是让不相干的变量不要出现在同一个缓存行中;
1是每两个变量之间加上7个long类型;2是创建自己的long类型,而不是用原生的;3是使用java8的注解
————————————————
版权声明:本文为CSDN博主「小卒曹阿瞒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28119741/article/details/102815659