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

网站想上线怎么做用模板快速建站

网站想上线怎么做,用模板快速建站,网站建设前期目标,如何查询网站备案信息查询一、CAS 面试题 1. 说说CAS、CAS有什么问题(ABA)?(美团一面) Compare And Swap 对比交换(原子指令) CAS是 CPU指令 操作系统原生 API,JVM对它进行了封装(C),供我们使用。 通过判断 内存 和 …

一、CAS 面试题

1. 说说CAS、CAS有什么问题(ABA)?(美团一面)

Compare And Swap 对比交换(原子指令)

CAS是 CPU指令 操作系统原生 API,JVM对它进行了封装(C++),供我们使用。

通过判断 内存寄存器(预期值) 中的值是否一致,来决定是否执行 写指令,改变内存的值

判断在赋值前是否有 其他线程 改变了 内存 中的值一致就说明没有改变,通过赋值改变内存中的值。不一致就返回,预期值改变 去进行下一次循环


2. CAS如果失败会发生什么?(科大讯飞Java后端)

CAS一般搭配循环使用,循环中每次CAS失败后预期值会被更新为最新的内存值!!!

然后进入循环再次进行CAS操作

二、原子类

利用CAS原子的特性,对读写操作的一体操作,封装成一个个类

它们对基本 数据类型 int double.....进行了封装 ,提供一些作用与 ++ ,+=,这类操作的方法,区别是它们操作是原子的,所以不会出现线程安全问题,我们常用的是 Integer Long 类型。


1. 常用方法:


2. 代码示例:



三、CAS实现自旋锁

1. 伪代码:

通过 CAS 看当前锁是否被某个线程持有.  
 // 如果这个锁已经被别的线程持有, 那么就自旋等待.  
 // 如果这个锁没有被别的线程持有, 那么就把 owner 设为当前尝试加锁的线程.  

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;}
}

四、ABA问题(详解)

我们已经知道了CAS这条指令的基本原理,就是判断当前内存中的值是否和我们预期的值一致,来判断是否有其他线程已经修改过内存中的值,成功就执行写操作,失败就改变预期值,从而实现原子的特性,这一切看着很合理。


但是它有个缺陷:ABA问题,这个问题就是说,我们在判断是否与预期值一致的时候如果已经有个线程将内存中的 改成别的 又将它改成 A CAS是察觉不到的这就是ABA问题

一般这也不会出大问题,但是有极端情况


举个栗子:

假设你的银行卡内有1000元,现在你往出转账500元ATM机卡了,你狂点两下意外产生两个线程都是要-500元

第一个线程内存值是1000,预期值是1000,判断相等后,执行-500的操作,

第二个线程内存变成500,预期值1000不相等,不执行

上方线程二出现问题,结束,这是完美结局。


假如!!!!情况变了第一个线程执行完,中间的时候有人给你转账500

线程二读内存发现 内存是1000(500+500),预期是1000🆗了直接-500........

这样的结果就是,你卡里有1000转出去500进去500一看余额不是1000了,变成500了,寄了。。。。。


虽然我们说,这个情况太巧合了,正好出来两个线程,正好两个线程 中间 加了 和 扣款 相同数目的钱,可是再小的概率,这件事也一定会出现,我们就提出了针对ABA问题的解决策略


1. 解决策略:

对内存中的值赋予一个 版本号,版本号 只加不减 ,每经历一次操作成功版本号++如果发现接下来的操作中,版本号 高于我们 预期的版本号就不执行操作


拿我们刚刚的例子来说:我们给余额一个版本号 并且初始化为 1 ,经过第一次取钱,版本号变成2

经过别人转给你,变成3,等到第二个线程版本号为2才执行,发现你这里是3,直接不执行

通常会采用一些方法来增加版本号的唯一性,比如使用时间戳、随机数等来初始化版本号


但是时间戳的使用也要谨慎,因为我们的地球公转时间和自转时间不是标准的365倍,所以我们要每四年为一个闰年,这一年会多一天,但是我们为了计算机的时间准度,我们会执行闰秒,也就是手动把时间往回调1秒这样,会每隔一段时间执行闰秒。根据的是国家授时中心的数据,往往这一秒就会导致一些问题,所以时间虽然是正向流逝的,但是也有倒流的情况,用时间戳要谨慎......

                                                                    时间倒流

http://www.dtcms.com/wzjs/267809.html

相关文章:

  • 河源网站建设公司搜索引擎营销的优势
  • 建设网站必须要服务器项目平台
  • 做公司网站怎么删除图片自助搭建平台
  • 沈阳黑酷做网站建设优化公司怎么样合肥搜索引擎推广
  • 优化大师是干什么的seo技术顾问阿亮
  • 能做视频的软件有哪些哈尔滨优化调整人员流动管理
  • 深圳龙华观澜网站建设公司7月新闻大事件30条
  • 阿里巴巴国际贸易网站官网广告投放数据分析
  • 免费app模板下载网站app软件推广平台
  • 网站建设的威胁沈阳百度seo
  • 成都网站开发建设公司seo网络推广机构
  • 网站建设主要哪些内容seo平台优化
  • 网站开发是否属于技术合同深圳新闻最新事件
  • 江阴网站推广seo舆情优化
  • 深圳市 交易建设中心网站谷歌搜索网址
  • 新疆生产建设兵团计生办网站友情链接交易平台
  • 做网站怎么连数据库青岛百度seo代理
  • 温泉网站建设网站模板库
  • 做算命网站赚钱吗淘宝关键词搜索量排名
  • 申请一个网站空间武汉网站开发公司
  • o2o苗木网站建设国内新闻最近新闻今天
  • 安宁市建设局网站营销网课
  • 网站策划网站建设企业产品线上推广方案
  • 网站建设工作室有几个部门百度电脑版登录网站
  • 什么不属于网站推广软件miy188coo免费入口
  • wordpress vip视频靠谱seo外包定制
  • 制作做网站的基本流程网站建设制作教程
  • php网站开发实战开发百度一下你就知道
  • 开发公司向政府申请延期交付seo单页面优化
  • 福州市住房和城乡建设委员会网站大数据查询个人信息