CountDownLatch源码分析
CountDownLatch源码这次来分析下CountDownLatch,CountDownLatch用于线程通信的一种方式,实现让一个或多个线程等待某些步骤完成之后再运行。也是比较典型的AQS的实现。
总览CountDownLatch方法直接把源码全部拉下来看:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869/** * A synchronization aid that allows one or more threads to wait until * a set of operations being performed in other threads completes. */ public class CountDownLatch { //静态内部类实现AQS模板 private static final class Sync extends ...
ReentrantLock源码分析
ReentrantLock源码分析首先可以先看看整体的流程,图片来自[Java3y]博主的图
加解锁过程如上,其中几个关键节点:
判断state是否为0表示当前的锁没有被占用
公平锁不会先去尝试CAS获取锁,非公平锁在入队之前就会直接尝试CAS获取
解锁过程找的是离头节点最近的小于0的节点(这里考虑的是某些节点在队列中就被cancel的情况)
下面直接从源码开始分析:
锁实现首先看看ReentrantLock的类:一些关键点已经进行注释了
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788public class ReentrantLock implements Lock, java.io.Serializable { private static final long serialV ...
解决Hexo无法显示图片的几种方案
解决Hexo无法显示图片的几种方案在搭建hexo博客的时候会遇见图片上传是否麻烦,使用markdown编写博客时我们习惯将图片保存到本地,使用‘![]{}’的格式+相对路径去插入图片,但是在使用hexo d的时候相对路径会被转换导致最后发布上去的博客图片无法查看。下面提供几种解决方案:
使用hexo图片格式查看hexo官网,可以看到官网推荐将post_asset_folder属性置为true,在新建博客hexo n “xxx”的时候会在根目录下创建一个同名的文件夹,将需要插入的图片放到这个目录。
在markdown文件中使用如下格式进行图片的访问:
12345{% asset_path slug %}{% asset_img slug [title] %}{% asset_link slug [title] %}{% asset_img example.jpg This is an example image %}
如此就能够在hexo中访问到图片,但是这种方式,我们在VScode或者Typora种编写 ...
Hexo博客搭建和多端部署
Hexo博客搭建+多端部署
最近将博客搭建起来了,在这里记录下爬的坑。也作为第一篇博客博客使用的是hexo+github,主题是Butterfly。
Hexo搭建
首先安装node.jshttps://nodejs.org/en/ (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本),一路next就可以,记得勾选上Add to Path,默认是勾选了的。1cmd检查node版本:node -v
安装Hexo 123npm install -g hexo-cli #检查是否安装成功,出现hexo <command>表明成功hexo
Hexo与Node兼容版本推荐(来自Hexo官网)
测试本地启动安装完成hexo-cli后就可以尝试先在本地启动:1hexo s # 启动本地hexo服务,访问地址localhost:4000
github部署
新建GitHub库首先在github上新建一个公共库需要注意库名最好是:owener.github.io(这类格式),选择pulic公开
打开新建的库,复制库地址(如果本地git配置了ssh, ...




