AbstractQueuedSynchronizer

AQS (AbstractQueuedSynchronizer) 抽象类的队列式同步器

J.U.C是基于AQS实现的,AQS是一个同步器,设计模式是模板模式
核心数据结构:双向链表 + state(锁状态)
底层操作:CAS

原理概览

AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中。

CLH:Craig、Landin and Hagersten队列,是单向链表,AQS中的队列是CLH变体的虚拟双向队列(FIFO),AQS是通过将每条请求共享资源的线程封装成一个节点来实现锁的分配。

img.png

阅读更多

mongodb intro

一. 概览

插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便
目前除了早期的MMAP存储引擎外,WiredTiger和RocksDB 均 已完成了对MongoDB的支持,

阅读更多

MySQL vs MongoDB

Analysis and design

App 的数据特点及可能的挑战

  1. APP 的用户群体巨大, 后期登陆微信小程序,用户量预期会呈指数增长
  2. app 内容主要为:文本内容, 图片, (小视频),评论, 消息, 数量巨大
  3. 用户操作,对数据库的读和写要求很高,写操作频繁。(上传图片,写twitter, 发表评论)
  4. 用户场景变更,需求变化频繁,对数据库表字段的增加,修改提出了很高的要求.
  5. 用户的数据价值较低 (非银行记录钱,财务数据类),对事务性要求不高.

App 具有三高的特征:

  • High performance - 对数据库高并发读写的需求。
  • Huge Storage - 对海量数据的高效率存储和访问的需求。
  • High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。

MongoDB可应对“三高”需求,传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。

阅读更多

hexo_guide

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

install

1
npm install -g hexo-cli hexo

Quick Start

1
hexo clean && hexo g && hexo server

Create a new post

1
$ hexo new "My New Post"
阅读更多

hexo icarus

install

1
2
3
4
5
6
# cd /d/WorkPlace/myHexo
# git clone https://github.com/ppoffice/hexo-theme-icarus.git themes/icarus
git clone git@github.com:luochunhai/my_hexo_icarus.git themes/icarus

npm install hexo-theme-icarus
hexo config theme icarus
阅读更多