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

html在线记账网站模板给人做网站能赚钱吗

html在线记账网站模板,给人做网站能赚钱吗,wordpress分类别名,免费的ppt模板软件思考 是否有官方推荐#xff08;自己先思考如何实现#xff0c;然后再参考其他人的实践#xff0c;总结优缺点#xff09;通过哪些方式可以实现锁锁是否具有原子性锁请求失败了如何处理如果避免发生死锁如果避免发生资源抢占如果避免锁的误删 官方实现策略 安全性能#…思考 是否有官方推荐自己先思考如何实现然后再参考其他人的实践总结优缺点通过哪些方式可以实现锁锁是否具有原子性锁请求失败了如何处理如果避免发生死锁如果避免发生资源抢占如果避免锁的误删 官方实现策略 安全性能互斥。在任何给定的时刻只有一个客户可以持有锁活性属性A无死锁。最终即使锁定资源的客户端崩溃或被分区也始终有可能获取锁活性性质B容错性。只要大多数Redis节点都启动了客户端就可以获取和释放锁 储备知识 原子操作 解释一 原子操作是指不会被线程调度机制打断操作这种操作一旦开始就一直到结束 中间不会有任何context switch(切换到另外一个线程) 解释二 原子性就是指该操作是不可再分的。不论是多核还是单核具有原子性的量同一时刻只能有一个线程来对它进行操作。 原子操作可以是一个步骤也可以是多个步骤但是其顺序不可以被打乱也不可以被切割而只执行其中的一部分不可中断性。 将操作视作一个整体资源在该次操作中保持一致这是原子性的核心特征。 可用加锁命令 INCR SETNS SET 加锁命令优劣分析 INCR 实现思路 key 不存在那么 key 的值会先被初始化为 0 然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时如果返回的数大于 1 说明这个锁正在被使用当中 实现方式 客户端A请求服务器获取key的值为1表示获取了锁客户端B也去请求服务器获取key的值为2表示获取锁失败客户端A执行代码完成删除锁客户端B在等待一段时间后在去请求的时候获取key的值为1表示获取锁成功客户端B执行代码完成删除锁 remark 加入过期时间是为了防止意外退出锁没有删除锁一直存在以至于无法再次获取锁资源 demo r e d i s − i n c r ( redis-incr( redis−incr(key); r e d i s − e x p i r e ( redis-expire( redis−expire(key, $ttl); //设置生成时间为1秒 缺点 借住Expire设置不再是原子操作。 SETNX 实现思路 如果key不存在则将key设置为value如果key已存在则SETNX不做任何操作 实现方式 客户端A请求服务端设置key的值如果设置成功表示加锁成功客户端B请求服务器设置key的值如果返回失败表示加锁失败客户端A执行代码完成删除锁客户端B在等待一段时间后再去请求设置key值设置成功客户端B执行代码完成删除锁 demo r e d i s − s e t N X ( redis-setNX( redis−setNX(Kkey, $value); r e d i s − e x p i r e ( redis-expire( redis−expire(key, $ttl); 缺点 不是原子操作 非原子性潜在问题无法实现互斥出现单点故障时比如说如果Redis主机坏了怎么办好吧 让我们增加一个假设如果主机不可用我们增加一个备机请使用它。不幸的是这是不可行的。 这样做我们就无法实现互斥的安全属性因为Redis复制是异步的。 场景描述 客户机A获取主机中的锁。在向从机发送对密钥的写入之前主机崩溃。备机被提升为主机。客户端B获取已为其持有锁的同一资源A的锁。违反安全规定(在A拥有锁的同时B也用用了锁)有时在特殊情况下比如在故障期间多个客户机可以同时持有锁这是非常好的。 如果是这种情况则可以使用基于复制的解决方案。否则我们建议实现本文档中描述的解决方案。 SET 实现思路 设置key的同时这只过期时间 实现方式 客户端A请求服务器设置key的值如果设置成功就表示加锁成功客户端B也去请求服务器设置key的值如果返回失败那么就代表加锁失败客户端A执行代码完成删除锁客户端B在等待一段时间后在去请求设置key的值设置成功客户端B执行代码完成删除锁 demo r e d i s − s e t ( redis-set( redis−set(key, $value, array(‘nx’, ‘ex’ $ttl)); //ex表示秒 存在问题 以上几种方式仍存在的问题 redis发现锁失败了要怎么办中断请求还是循环请求循环请求的话如果有一个获取了锁其它的在去获取锁的时候是不是容易发生抢锁的可能锁提前过期后客户端A还没执行完然后客户端B获取到了锁这时候客户端A执行完了会不会在删锁的时候把B的锁给删(非原子操作的影响) 解决办法 针对问题1使用循环请求循环请求去获取锁   针对问题2针对第二个问题在循环请求获取锁的时候加入睡眠功能等待几毫秒在执行循环   针对问题3在加锁的时候存入的key是随机的。这样的话每次在删除key的时候判断下存入的key里的value和自己存的是否一样 do { //针对问题1使用循环$timeout 10;$roomid 10001;$key room_lock;$value room_.$roomid; //分配一个随机的值针对问题3$isLock Redis::set($key, $value, ex, $timeout, nx);//ex 秒if ($isLock) {if (Redis::get($key) $value) { //防止提前过期误删其它请求创建的锁//执行内部代码Redis::del($key);continue;//执行成功删除key并跳出循环}} else {usleep(5000); //睡眠降低抢锁频率缓解redis压力针对问题2} } while(!$isLock);官方提供分布式redis锁说明 参考 【锁】redis加锁的几种方法 线程安全之原子操作 原子操作
http://www.hkea.cn/news/14265318/

相关文章:

  • 温州做微网站设计网站建设 业务员提成
  • 济南高新区建设局网站大兴安岭网站建设兼职
  • 天津城乡住房建设厅网站首页wordpress置顶到首页
  • 丽水建设局网站文件php免费企业网站模板
  • 南昌网站开发培训中心开源html5 网站模板
  • 有做lol直播网站有哪些wordpress网站怎么设置关键词
  • 亿网行网站建设网站无障碍的建设方面空缺
  • 网站开发团队 组建应用软件开发工程师是做什么的
  • 泰州网站制作平台四川省住建厅官网
  • 郑州网站推广单位wordpress默认
  • 携程网站官网如何获取热搜关键词
  • 网站建设优化服务方案采购销售管理软件
  • 电子商务网站建设与维护管理游戏推广渠道有哪些
  • 成都市网站设计开发建设一个网站需要条件
  • 网站建设图标郴州网站建设公司官网
  • 哪个网络公司做网站好点福州论坛哪个比较好
  • 苏州工业设计公司有哪些seo整站优化什么价格
  • 自己做影视会员网站跑业务用什么软件找客户
  • 哪些网站是用h5做的网站模板哪家好
  • 网站建设规划任务书贵阳建立网站
  • 可以做宣传的网站有哪些网站认证收费吗
  • 男的和女的做那种短视频网站网站开发需要掌握哪些技术
  • 网站开发建设好处邯郸网站设计定制
  • 做网站可以提些什么意见临淄做网站
  • 大港油田建设网站电子商务网站建设视频教学
  • asp网站开发软件带数据库的网站怎么建
  • 网站建设售价多少钱文化传媒 网站设计
  • apache建设网站企业查询天眼
  • h5网站案例东莞seo网站排名优化公司
  • 网站建设及维护平谷头条新闻