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

网站开发的前端和后端有哪些框架怎么做微信小程序平台

网站开发的前端和后端有哪些框架,怎么做微信小程序平台,新余门户网站建设,找工作求职目录 #x1f388;什么是 CAS #x1f4dd;CAS 伪代码 #x1f388;CAS 是怎么实现的 #x1f388;CAS 有哪些应用 #x1f6a9;实现原子类 #x1f308;伪代码实现: #x1f6a9;实现自旋锁 #x1f308;自旋锁伪代码 #x1f388;CAS 的 ABA 问题 #…目录 什么是 CAS CAS 伪代码  CAS 是怎么实现的 CAS 有哪些应用 实现原子类 伪代码实现: 实现自旋锁 自旋锁伪代码 CAS 的 ABA 问题 什么是 ABA 问题 ABA 问题引来的 BUG CAS相关面试题 什么是 CAS CAS: 全称 Compare and swap 字面意思 :” 比较并交换 “ 一个 CAS 涉及到以下操作: 我们假设内存中的原数据V旧的预期值A需要修改的新值B。 1. 比较 A 与 V 是否相等。比较 2. 如果比较相等将 B 写入 V。交换 3. 返回操作是否成功。 CAS 比较交换的是 内存 和 寄存器。比如有一个内存M现在有俩个寄存器AB. CAS(M,A,B如果M和A的值相同的话就把M和B的值交换同时整个操作返回true.                      如果M和A的值不同的话无事发生同时整个操作返回false. CAS 伪代码  伪代码 代码是不能真正编译执行不符合语法要求) 认识到逻辑是啥样的。 下面写的代码不是原子的, 真实的 CAS 是一个原子的硬件指令完成的. 这个伪代码只是辅助理解 CAS 的工作流程. boolean CAS(address, expectValue, swapValue) { if (address expectedValue) {address swapValue;return true;}return false; } 两种典型的不是 原子性 的代码 1. check and set (if 判定然后设定值) [上面的 CAS 伪代码就是这种形式] 2. read and update (i) [之前我们讲线程安全的代码例子是这种形式] 当多个线程同时对某个资源进行 CAS 操作只能有一个线程操作成功但是并不会阻塞其他线程 , 其他线程只会收到操作失败的信号。 CAS 可以视为是一种乐观锁. (或者可以理解成 CAS 是乐观锁的一种实现方式) CAS其实是一个cpu指令一个cpu指令就能完成上述比较交换的逻辑单个cpu指令是原子的就可以使用CAS完成一些操作进一步的替代加锁。——这样就给编写线程安全的代码引入了新的思路。 基于CAS实现线程安全的方式也称为无锁编程, 优点保证线程安全同时避免阻塞(效率缺点代码会更复杂不好理解只能够适合一些特定的场景不如加锁方式更普实。 CAS 是怎么实现的 CAS本质上是cpu提供的指令——》又被操作系统封装提供成api然后又被JVM也提供成api——》程序员就可以使用了。 针对不同的操作系统 JVM 用到了不同的 CAS 实现原理简单来讲 java 的 CAS 利用的的是 unsafe 这个类提供的 CAS 操作 unsafe 的 CAS 依赖了的是 jvm 针对不同的操作系统实现的 Atomic::cmpxchg Atomic::cmpxchg 的实现使用了汇编的 CAS 操作并使用 cpu 硬件提供的 lock 机制保证其原子性。 简而言之是因为 硬件予以了支持软件层面才能做到。 等到后面会更加能理解。 CAS 有哪些应用 实现原子类 int 进行不是原子的loadaddsave)三步骤。 AtomicInteger,基于CAS的方式对int进行封装此时进行就是原子的了。操作是基于CAS指令实现的 标准库中提供了 java.util.concurrent.atomic 包, 里面的类都是基于这种方式来实现的. 典型的就是 AtomicInteger 类. 其中的 getAndIncrement 相当于 i 操作. 在java中有些操作是偏底层的操作偏底层的操作在使用的时候有更多的注意事项稍有不慎就容易写出问题。这些操作就会放到unsafe中进行归类。 unsafe代表有更多的注意事项稍有不慎就写错。就比如在导航的时候遇到事故多发地方就会提醒警告信息 我们看到原子类内部没有使用synchronized加锁使用。 native是本地方法compareAndSwapInt比较和交换JVM源码中使用c实现逻辑底层的操作。 从上面流程我们可以看到CAS中cpu指令 先是通过系统进行封装提供了api(getAndSetInt),然后JVM进行封装提供apicompareAndSwapInt。而原子类是基于CAS实现的。 原子类里面基于CAS实现的。                                                                                          通过利用指令原子性逻辑获取锁实现原子性操作。 伪代码实现: class AtomicInteger {private int value;public int getAndIncrement() {int oldValue value;while ( CAS(value, oldValue, oldValue1) ! true) {oldValue value;}return oldValue;} } 初始情况下value的值是0俩次自增结果是2. 如果俩者相等就返回true,并且让oldValue1赋值给value让value1如果不相等就得让value赋值给oldvalue然后进行操作。 所以我们之前所说的”线程不安全“本质上是进行自增的过程中穿插执行了。 CAS也是让这里的自增不要穿插执行核心思路和加锁是类似的加锁是通过阻塞的方式避免穿插CAS则是会通过重试的方式避免穿插。 实现自旋锁 基于 CAS 实现更灵活的锁 , 获取到更多的控制权 . 自旋锁伪代码 public class SpinLock {private Thread owner null;public void lock(){// 通过 CAS 看当前锁是否被某个线程持有. // 如果这个锁已经被别的线程持有, 那么就自旋等待. // 如果这个锁没有被别的线程持有, 那么就把 owner 设为当前尝试加锁的线程. while(!CAS(this.owner, null, Thread.currentThread())){}}public void unlock (){this.owner null;} } 记录当前这个锁被哪个线程获取到了如果是null表示未加锁状态。 CAS 的 ABA 问题 什么是 ABA 问题 ABA 的关键问题 : 是通过值没有发生改变来作为”没有其他线程穿插执行“判定依据。 但是这种判定方式不够严谨更极端的情况下可能有另一个线程穿插进来把值从A-B-A,针对第一个线程来说看起来好像是这个值没变实际上已经被穿插执行了。 比如买个手机买到的是一个”二手的翻新的设备“。翻新机也不是不能用里面可能会有一些暗伤。 ABA问题如果真的出现了其实大部分情况下是不会产生bug的就相当于买到二手设备也是能用的虽然另一个线程穿插执行了由于值又改回来了此时逻辑上也不一定会产生bug。 ABA 问题引来的 BUG 假设这个场景我去ATM取钱我本身的账户1000我想要取500我再取钱的过程中出现bug了我按下取钱按钮的时候没反应又按了一下此时就产生了俩个线程进行扣款操作。 由于t3线程正好又在这个节骨眼上转来了500与时我的余额又是1000了就会导致t1线程也能扣款。此时我预期取500实际上扣了1000. 大部分情况下ABA问题其实没啥大事但是有一些极端情况会使ABA出现bug只要让判定的数值按照一个方向增长即可。有增有减就可能出现ABA只是增加或者只是减少针对像账户余额这样概念本身就应该要能增有减可以引入一个额外的变量版本号约定每次修改余额就让版本号自增此时在使用CAS判定的时候就不是直接判定余额了而是判定版本号看版本号是否是变化了如果版本号不变注定没有线程穿插了执行。 相关面试题 1) 讲解下你自己理解的 CAS 机制 compareAndSwap 比较并且交换相当于一个原子操作同时完成  读取内存, 比 较是否相等, 修改内存 这三个步骤. 本质上需要 CPU 指令的支撑。通过利用指令的原子性从而避免获取锁实现了原子性操作。 2) ABA问题怎么解决 给要修改的变量添加一个版本号在 CAS 比较数据当前值和旧值的同时, 也要比较版本号是否符合预期.如果发现当前版本号和之前读到的版本号一致, 就真正执行修改操作, 并让版本号自增; 如果发现当前版本号比之前读到的版本号大, 就认为操作失败 难道父母眼里只有学习学习嘛
文章转载自:
http://www.morning.zfcfk.cn.gov.cn.zfcfk.cn
http://www.morning.qbjgw.cn.gov.cn.qbjgw.cn
http://www.morning.sgtq.cn.gov.cn.sgtq.cn
http://www.morning.klrpm.cn.gov.cn.klrpm.cn
http://www.morning.xscpq.cn.gov.cn.xscpq.cn
http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.gcspr.cn.gov.cn.gcspr.cn
http://www.morning.qddtd.cn.gov.cn.qddtd.cn
http://www.morning.bcngs.cn.gov.cn.bcngs.cn
http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn
http://www.morning.wnhsw.cn.gov.cn.wnhsw.cn
http://www.morning.lbfgq.cn.gov.cn.lbfgq.cn
http://www.morning.hqrr.cn.gov.cn.hqrr.cn
http://www.morning.gwyml.cn.gov.cn.gwyml.cn
http://www.morning.znmwb.cn.gov.cn.znmwb.cn
http://www.morning.zfqr.cn.gov.cn.zfqr.cn
http://www.morning.uycvv.cn.gov.cn.uycvv.cn
http://www.morning.xgmf.cn.gov.cn.xgmf.cn
http://www.morning.bwznl.cn.gov.cn.bwznl.cn
http://www.morning.wqpr.cn.gov.cn.wqpr.cn
http://www.morning.rlxg.cn.gov.cn.rlxg.cn
http://www.morning.qxjck.cn.gov.cn.qxjck.cn
http://www.morning.kqzrt.cn.gov.cn.kqzrt.cn
http://www.morning.tfznk.cn.gov.cn.tfznk.cn
http://www.morning.yqpck.cn.gov.cn.yqpck.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.tscsd.cn.gov.cn.tscsd.cn
http://www.morning.cwskn.cn.gov.cn.cwskn.cn
http://www.morning.rjhts.cn.gov.cn.rjhts.cn
http://www.morning.fglxh.cn.gov.cn.fglxh.cn
http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn
http://www.morning.ujianji.com.gov.cn.ujianji.com
http://www.morning.crkhd.cn.gov.cn.crkhd.cn
http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn
http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn
http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn
http://www.morning.plqhb.cn.gov.cn.plqhb.cn
http://www.morning.wnjbn.cn.gov.cn.wnjbn.cn
http://www.morning.addai.cn.gov.cn.addai.cn
http://www.morning.ghssm.cn.gov.cn.ghssm.cn
http://www.morning.kzcz.cn.gov.cn.kzcz.cn
http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn
http://www.morning.jgnjl.cn.gov.cn.jgnjl.cn
http://www.morning.mmzhuti.com.gov.cn.mmzhuti.com
http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn
http://www.morning.wjdgx.cn.gov.cn.wjdgx.cn
http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn
http://www.morning.nxhjg.cn.gov.cn.nxhjg.cn
http://www.morning.jjwzk.cn.gov.cn.jjwzk.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.pwksz.cn.gov.cn.pwksz.cn
http://www.morning.vibwp.cn.gov.cn.vibwp.cn
http://www.morning.qsy40.cn.gov.cn.qsy40.cn
http://www.morning.tynqy.cn.gov.cn.tynqy.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.rqkzh.cn.gov.cn.rqkzh.cn
http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com
http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn
http://www.morning.dmwjl.cn.gov.cn.dmwjl.cn
http://www.morning.cknsx.cn.gov.cn.cknsx.cn
http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn
http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn
http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn
http://www.morning.wqfj.cn.gov.cn.wqfj.cn
http://www.morning.jbnss.cn.gov.cn.jbnss.cn
http://www.morning.jmspy.cn.gov.cn.jmspy.cn
http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn
http://www.morning.fjzlh.cn.gov.cn.fjzlh.cn
http://www.morning.dqdss.cn.gov.cn.dqdss.cn
http://www.morning.mmzhuti.com.gov.cn.mmzhuti.com
http://www.morning.xjnjb.cn.gov.cn.xjnjb.cn
http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn
http://www.morning.gediba.com.gov.cn.gediba.com
http://www.morning.lhytw.cn.gov.cn.lhytw.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.trrd.cn.gov.cn.trrd.cn
http://www.tj-hxxt.cn/news/261284.html

相关文章:

  • 深圳手机网站制作公司排名企业建网站分类信息网
  • 滨州聊城网站建设为什么浏览器打不开一些网站
  • 做分析仪器推广的网站网站建设怎么添加图片上去
  • 永久免费高配云服务器seo服务销售招聘
  • 网站建设艾金手指科杰响应式网站对seo
  • 重庆做网站公司排名怎样做外贸网站建设
  • 百度地图嵌入公司网站页面模板只能选择已发表的内容
  • 建设公司网站征集信息的通知百度互联网营销顾问是做什么的
  • 网站配色 蓝绿百度注册网站
  • 桂林的网站建设公司一个网站3个相似域名
  • 住房建设厅网站吕梁推广型网站开发
  • 淘客网站app建设教人做饮料的网站
  • 青浦营销型网站建设室内设计者联盟官网
  • 策划工资一般多少钱seo权重优化软件
  • 公司建设门户网站的总结网站开发策划书怎么写
  • 印度做网站设计二次元风格wordpress模板
  • 西安做一个企业网站要多少钱温州建站模板搭建
  • 网站页面一般做多大建设网站费用要进固定资产吗
  • 网站后台用户名密码长沙网站制作有哪些公司
  • 常州做网站价位郑州整站网站优化
  • 企业网站建设报价方案模板演示网站
  • 石家庄做网站最好的公司有哪些单页营销网站后台
  • 静态网站开发实训的目的网站做线支付平台系统多少钱
  • 做网站客户总是要退款不同域名指向同一网站
  • 建网站要多少钱呢网站开发要学多久
  • dede 管理多个网站pc端网站开发技术
  • 中山手机网站建设电话西安巨久科技网站建设
  • 浙江省建设科技推广中心网站建设工程公司名字大全三个字
  • 盐城网站建设策划方案北京软装设计公司前十名
  • 安卓盒子做网站wordpress循环分类