ReentrantLock 中的 4 个坑!】的更多相关文章

JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局.JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock. 前面的文章我们已经介绍了 synchronized,详见以下列表: <synchronized 加锁 this 和 class 的区别!> <synchronized 优化手段之锁膨胀机制!> <…
总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面,然后新页面在初始化时候使用这个id,发送请求········. 解决方案: 第一个小伙伴选择了cookie,总所周知cookie可以在同源网页间共享.我建议他不要用,因为cookie在页面发送请求的时候都需要一同发送的,浪费带宽不好. 然后我骄傲的建议了他使用sessionStorage或者loc…
公平锁与非公平锁 ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一定能先得到锁,从这个角度讲,synchronized其实就是一种非公平锁.非公平锁的方式可能造成某些线程一直拿不到锁,自然是非公平的了.看一下例子,new ReentrantLock的时候有一个单一参数的构造函数表示构造的是一个公平锁还是非公平锁,传入true就可以了: publ…
       今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                                                             使用ffmpeg做视频编码过程中,首先要新建数据帧,并为数据帧分配对应内存,以便于保存图像数据,为数据帧分配内存须要用到av_image_alloc()这个函数,该函数将依据传入的图像宽.高.图像格式.数据对齐基数等…
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到的各种坑,也算是另外一种总结吧. 1. 开发语言及框架 Python + Flask + Bootstrap,数据库使用的是MySQL   2. 相关文档及Lib库 1) Bootstrap官方文档 http://v3.bootcss.com/getting-started/ 2) 微信公众号开发文…
目前正在开发小程序,在开发过程中,总会遇到一些坑,而这些坑并不会有很多开发者遇到而说出来.这里先记录一条我开发过程中遇到的问题,以便后人在开发中能够更容易的解决问题!!! 首先,小程序在canvas画自己想要的图时,我通常会用以下两种获取图片的方式: 1. 通过wx.downloadFile加载图片时,图片的路径为:res.tempFilePath;以下为官方api wx.downloadFile({ url: 'https://example.com/audio/123', //仅为示例,并非…
记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Integer便为null,这时候将Interger自动转型为int,则会出现空指针异常 这个时候,我们可以在Service层对Integer的数据进行判断,如果为空,就把它赋值为0 // 在pojo中,如果Integer canJoinNun为null 就把值设置为0 if (publishMsg.get…
公平锁与非公平锁 ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一定能先得到锁,从这个角度讲,synchronized其实就是一种非公平锁.非公平锁的方式可能造成某些线程一直拿不到锁,自然是非公平的了.看一下例子,new ReentrantLock的时候有一个单一参数的构造函数表示构造的是一个公平锁还是非公平锁,传入true就可以了: publ…
记录vue中一些有意思的坑 'message' handler took 401ms 在出现这个之前,我一直纠结于 是如何使用vue-router或者不使用它,通过类似的v-if来实现.结果却出现这个问题,吓得我赶紧使用v-if,结果问题依旧存在.心里拔凉拔凉的 解决方案 在查看别人方案时,才发现是自己为了不使用他人插件,只单纯拿其数据,不曾想,数据源过大,导致编译过程时间过长,把其去掉就好了.然后我的vue-router被我都换掉了.不过也无所谓了,路由传参时,若不想在地址栏中显示,一刷新传过…
vue 单页应用中微信支付的坑 标签(空格分隔): 微信 支付 坑 vue 场景 在微信H5页面(使用 vue-router2 控制路由的 vue2 单页应用项目)中使用微信 jssdk 进行微信支付. 基本知识 1.依据微信jssdk官方文档,使用微信功能的页面,必须进行微信 config,并在wx ready 之后再调用微信功能. 2.进行微信支付的话,需要在微信开放平台配置微信支付合法路径.该合法路径有层级限制,比如需要支付的页面的url为 https://example.com/redp…