Edward_jie

for you, my Hall of Frame

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  92 随笔 :: 45 文章 :: 539 评论 :: 43万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

2022年6月8日

定义:
悲观锁(Pessimistic Lock):
每次获取数据的时候,都会担⼼数据被修改,所以每次获取数据的时候都会进⾏加锁,确保在⾃⼰使⽤的过程中数据不会被别⼈修改,使⽤
完成后进⾏数据解锁。由于数据进⾏加锁,期间对该数据进⾏读写的其他线程都会进⾏等待。
乐观锁(Optimistic Lock):
每次获取数据的时候,都不会担⼼数据被修改,所以每次获取数据的时候都不会进⾏加锁,但是在更新数据的时候需要判断该数据是否被别
⼈修改过。如果数据被其他线程修改,则不进⾏数据更新,如果数据没有被其他线程修改,则进⾏数据更新。由于数据没有进⾏加锁,期间
该数据可以被其他线程进⾏读写操作。
适⽤场景:
悲观锁:⽐较适合写⼊操作⽐较频繁的场景,如果出现⼤量的读取操作,每次读取的时候都会进⾏加锁,这样会增加⼤量的锁的开销,降低
了系统的吞吐量。
乐观锁:⽐较适合读取操作⽐较频繁的场景,如果出现⼤量的写⼊操作,数据发⽣冲突的可能性就会增⼤,为了保证数据的⼀致性,应⽤层
需要不断的重新获取数据,这样会增加⼤量的查询操作,降低了系统的吞吐量。
总结:两种所各有优缺点,读取频繁使⽤乐观锁,写⼊频繁使⽤悲观锁。
像乐观锁适⽤于写⽐较少的情况下,即冲突真的很少发⽣的时候,这样可以省去了锁的开销,加⼤了系统的整个吞吐量。但如果经常产⽣冲
突,上层应⽤会不断的进⾏retry,这样反倒是降低了性能,所以这种情况下⽤悲观锁就⽐较合适,之所以⽤悲观锁就是因为两个⽤户更新同
⼀条数据的概率⾼,也就是冲突⽐较严重的情况下,所以才⽤悲观锁.
悲观锁⽐较适合强⼀致性的场景,但效率⽐较低,特别是读的并发低。乐观锁则适⽤于读多写少,并发冲突少的场景
--------------------------------------------------------
作者:MDYmcn1992
链接:https://wenku.baidu.com/view/1317354f021ca300a6c30c22590102020740f21d.html
来源:百度文库
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2022-06-08 10:16 Edward_诺 阅读(93) 评论(0) 推荐(0) 编辑

2020年3月26日

摘要: 同步/异步 侧重点在于是否两线并行,在做一件事a的时候,可以先让这件事a自己进行,自己去做另外一件事b,a进行到一定程度的时候通知到自己,自己在根据事情a的通知去处理接下来的事情。 阻塞/非阻塞 侧重点在于在做其中一件事a的时候,能否暂时暂停a去做另外一件事b,a事情会在那等待,自己在做事情b的时候 阅读全文
posted @ 2020-03-26 14:56 Edward_诺 阅读(682) 评论(0) 推荐(0) 编辑

2015年6月3日

摘要: 转载http://blog.sina.com.cn/s/blog_68661bd80101phpy.html这两天响应老板要求,把所有代码放到公司的SVN服务器上,按照我的想法肯定是就苹果组建一个服务器,然后内部版本控制,自带的Xcode就有这个功能,之前也这么做过,但是xcode4.X系列SVN还... 阅读全文
posted @ 2015-06-03 22:46 Edward_诺 阅读(3655) 评论(0) 推荐(0) 编辑

2013年5月21日

摘要: 在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统。大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际共识。但在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,我们在业内将前者称之为地球坐标,后者称之为火星坐标,具体的说明可以参看百度百科中关于火星坐标系统的解释(文中的两段还是对我原文的摘录)。所以,本文所要讨论的坐标系统,是关于地球坐标和火星坐标的事情。以前使用Google Maps API开发习惯了,就觉得 阅读全文
posted @ 2013-05-21 18:08 Edward_诺 阅读(433) 评论(0) 推荐(0) 编辑

2013年4月27日

摘要: <&lt;>&gt;&&amp;‘&apos;“&quot; 阅读全文
posted @ 2013-04-27 23:36 Edward_诺 阅读(299) 评论(0) 推荐(0) 编辑

摘要: <Canvas > <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded" > <BeginStoryboard> <Storyboard x:Name="animation" Storyboard.TargetProperty="(Canvas.Left)" RepeatBehavior="Forever" > <DoubleAnimation Storyboard.TargetNam 阅读全文
posted @ 2013-04-27 23:05 Edward_诺 阅读(300) 评论(0) 推荐(0) 编辑

2013年4月26日

摘要: 关闭防火墙:控制面板-〉防火墙-〉不启用防火墙-〉高级设置-〉域防火墙设置-〉关闭防火墙 阅读全文
posted @ 2013-04-26 10:22 Edward_诺 阅读(1131) 评论(0) 推荐(0) 编辑

2013年3月20日

摘要: There’s something a little peculiar about how unit tests work in Silverlight when the debugger is attached – when an Assert fails in one of your unit tests, the Visual Studio debugger breaks the execution and brings up the debugger dialog.If you want to run a whole bunch of unit tests to see which o 阅读全文
posted @ 2013-03-20 22:18 Edward_诺 阅读(217) 评论(0) 推荐(0) 编辑

2012年12月31日

摘要: 1.IOS个人开发者帐号,需要准备好有关传真的信息,主要是需要拿出master信用卡护着visa信用卡的所有信息,另外需要传真卡主的身份证复印件,通过传真或者邮件发送到apple都可以,可以使用网络的免费传真,只要按照apple个人开发者方式写上需要的信息就好了。最需要注意的地方就是申请者最好需要与需要付款的卡主姓名是同一个,也就是填写first name和last name的地方要与填写的卡主的姓名一致,除了填写信用卡信息的地方和需呀发票的时候填写的公司名字可以使用汉字名字之外,其他的所有地方都要使用英文,不然需要发送卡主身份证的复印件等信息到apple进行核实。2.WP公司开发者帐号,一切 阅读全文
posted @ 2012-12-31 23:08 Edward_诺 阅读(11223) 评论(1) 推荐(1) 编辑

2012年12月17日

摘要: 1.报错10152.进入DFU模式,刷到下载数据停止不动。3.进入菠萝,进度条走到最后停止不动。4.红雪走到waiting for reboot停止不动。针对上述问题:首先,要找到完全对应手机系统原版本的固件。然后,红雪进入DFU模式刷机,走到停止不动的地方,就重新刷,重新走一遍流程,就可以。我遇到的问题:iphone2代3G,要用iphone1,3.1.2固件,红雪用0.9beta,刷到走不动的地方就重新刷,解决问题。 阅读全文
posted @ 2012-12-17 00:13 Edward_诺 阅读(325) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示