源码阅读之ReentrantLock
本文主要从ReentrantLock非公平模式下的加锁过程讲起。 ReentrantLock的结构ReentrantLock类中包含一个名为Sync的抽象类,继承于java.util.concurrent.locks.AbstractQueuedSynchronizer,并为公平锁和非公平锁提供了不同的实现:FairSync和NonfairSync。 123456789101112131415public class ReentrantLock implements Lock, java.io.Serializable { private final Sync sync; abstract static class Sync extends AbstractQueuedSynchronizer { // ... } static final class NonfairSync extends Sync { // ... } static final class FairS ...
使用Jenkins部署Hexo
前言 本文通过Jenkins自动部署 之前我的个人博客使用的是Halo,不过服务器到期我又懒得备份,东西基本都没了,这次心血来潮又换回Hexo,正好借这个机会玩下Jenkins 目标:编写完成后,提交到Github仓库,通过Webhooks通知Jenkins进行构建,构建后上传到指定服务器 开始准备工作 创建一个Github仓库 安装Jenkins 在Jenkins中安装NodeJS,Send build artifacts over SSH两个插件 上传Hexo工程至Github 将图示目录上传至Github(最好使用私有仓库)由于我们的目标是在服务端进行构建,因此这里不需要上传本地构建后生产的public目录 配置Webhooks进入仓库的Settings页面内配置Webhooks Payload URL: 你的Jenkins Webhook地址例如你的Jenkins的访问地址为http://jenkins.abc.com,那么你的Payload URL就是http://jenkins.abc.com/github-webhook/ 配置Jenkins ...