Wu Jun's Notes
  • About
  • Tags
  • Categories
  • 01 数据结构与算法
    • Long.bitCount() 解析
    • 数据结构
      • 01 数据结构
        • 数据结构概述
        • 线性表(List)
        • 栈与队列
        • 数组和广义表
        • 串(string)
        • 树与二叉树
        • 图
        • 红黑树
        • 堆
      • 02 高级数据结构
        • 跳跃表(Skip List)
        • 划分树
      • 03 查找
        • 查找的基本概念
        • 顺序表查找
        • 有序表查找
        • 线性索引查找
        • 多路查找树(B 树)
        • 散列(Hash)表
      • 04 排序
        • 排序的基本概念与分类
        • 插入排序
        • 交换排序
        • 选择排序
        • 归并排序
        • 分配排序
        • 外部排序
    • 算法题
      • 回溯搜索
        • 排列
      • 字符串
        • 把字符串转换成整数
        • 替换空格
      • 数组
        • 二维数组中的查找
        • 数组中重复的数字
      • 树
        • 二叉树的遍历
      • 链表
        • 从尾到头打印链表
        • 单向链表反转
        • 单链表加法
        • 归并链表
  • 02 计算机组成原理
    • 计算机系统概述
    • 数据的表示和运算
  • 04 计算机网络
    • 1 计算机网络体系结构
      • 计算机网络概述
      • 计算机网络的性能
      • 计算机网络体系结构与参考模型
    • 2 物理层
      • 物理层的基本概念
      • 物理层的重要概念
    • 3 数据链路层
      • 使用点对点信道的数据链路层
      • 点对点协议 PPP
      • 使用广播信道的数据链路层
      • 扩展的以太网
      • 高速以太网
      • 数据链路层的重要概念
    • 4 网络层
      • 网络层提供的两种服务
      • 网际协议 IP
      • 划分子网和构造超网
      • 网际控制报文协议 ICMP
      • 互联网的路由选择协议
      • IPv6
      • IP 多播
      • 虚拟专用网 VPN 和网络地址转换 NAT
      • 多协议标记交换 MPLS
      • 网络层的重要概念
    • 5 传输层
      • 运输层协议概述
      • UDP 用户数据报协议
      • TCP 概述
      • TCP 可靠传输
      • TCP 流量控制
      • TCP 拥塞控制
      • TCP 连接管理
    • 6 应用层
      • 域名系统 DNS
      • 文件传送协议 FTP
      • 远程终端协议 TELNET
      • 万维网 WWW
      • 电子邮件
      • 动态主机配置协议 DHCP
      • 简单网络管理协议 SNMP
      • 应用进程跨越网络的通信
      • P2P 应用
      • 应用层概述
    • 7 网络安全
      • 网络安全问题概述
      • 两类密码体制
      • 数字签名
      • 鉴别
      • 密钥分配
      • 互联网使用的安全协议
      • 系统安全:防火墙与入侵检测
  • 05 Java
    • 00 Java 基础
      • 01 基本设计
        • 数据类型
        • 字符串
        • 数组
        • 运算符
        • 输入输出
        • 控制流程
      • 02 对象与类
        • 面向对象
        • 修饰符
        • 类
        • 反射
        • 文档注释
      • 03 接口、lambda、内部类、代理
        • 接口
        • lambda
        • 内部类
        • 代理
      • 04 异常、断言、日志
        • 异常
        • 断言
        • 日志
      • 05 泛型、事件
        • 泛型
        • 事件
      • 06 集合
        • 集合接口
        • 2.0 具体的集合
        • 2.1 ArrayList、Vector
        • 2.2 LinkedList
        • 2.3 ArrayDeque
        • 2.4 TreeMap、TreeSet
        • 2.5 HashMap、HashSet、Hashtable
        • 2.6 LinkedHashMap、LinkedHashSet
        • 2.7 PriorityQueue
        • 2.8 ConcurrentHashMap
        • 映射
        • 视图与包装器
        • 算法
        • 遗留的集合
        • 线程安全的集合
      • 07 并发
        • 线程
        • 线程池
        • 锁
        • 同步器
        • 非阻塞同步
      • 08 Java SE 8 的流库
        • Stream
        • Optional
      • 09 IO
        • 输入输出流
        • 操作字符
        • 操作字节
        • 序列化
        • 操作文件
        • NIO(内存映射文件)
        • 正则表达式
      • 10 XML
        • XML 概述
        • XML 解析
        • 验证 XML 文档
        • 生成 XML 文档
        • XSL 转换
      • 11 网络
        • Socket 连接
        • 获取 URL 数据
        • 发送 E-mail
      • 12 JDBC
        • JDBC 简介
        • java.sql 包简介
        • javax.sql 包简介
      • 13 日期和时间
        • 绝对时间
        • 人类时间
        • 格式化和解析
        • 与遗留代码的互操作
      • 14 国际化
        • Locale 对象
        • 格式化和解析
        • 排序和范化
        • 消息格式化
        • 文本文件和字符集
        • 资源包
      • 15 脚本、编译、注解
        • Java 平台的脚本
        • 编译器 API
        • 使用注解
        • 注解语法
        • 注解语法
        • 源码级注解处理
        • 字节码工程
      • 16 安全
        • 类加载器
        • 安全管理器与访问权限
        • 用户认证
        • 数据签名
        • 加密
      • 17 本地方法
        • 调用 C 函数
        • 参数与返回
        • 00 Java 基础/17 本地方法/ todo
    • 01 Java 虚拟机
      • 走进 Java
      • JVM 内存
      • GC 与内存分配
      • 性能监控 + 故障处理
      • 调优案例
      • 类文件结构
      • 类加载机制
      • 字节码执行引擎
      • 类加载案例与实战
      • 早期(编译期)优化
      • 晚期(运行期)优化
      • Java 内存模型
    • 02 Effective Java
      • 创建和销毁对象(1-9)
      • 对于所有对象都通用的方法(10-14)
      • 类和接口(15-25)
      • 泛型(26-33)
      • 枚举和注解(34-41)
      • Lambdas 与 Streams(42-48)
      • 方法(49-56)
      • 通用程序设计(57-68)
      • 异常(69-77)
      • 并发(78-84)
      • 序列化(85-90)
  • 06 Spring
    • 01 Core
      • Spring 基本概念
      • IoC 容器与 Bean
      • SpringBoot 启动流程
    • 02 IoC
      • 依赖注入
      • 高级装配
      • 动态注册 Bean
    • 03 AOP
      • AOP 简介
      • 切点
      • 切面
    • 04 Web
      • Spring MVC
      • Spring MVC 进阶
      • Spring RestTemplate
      • 跨域
    • 05 Data
      • JdbcTemplate
      • Ehcache 3.8 简单持久化
      • Spring Data JPA
      • Spring Data MongoDB
      • Spring Data Neo4j
      • Spring Data Redis
      • Spring Cache
      • Dynamic DataSource
      • Transaction
      • Spring Cache + Caffeine
    • 06 Security
      • Spring Security
    • 07 Async
      • Scheduled
      • Async
    • 08 Log
      • 默认日志
      • slf4j 和 log4j、logback 关系
      • 输出 sout 到日志文件
    • 10 Retry
      • Spring Retry
  • 07 存储
    • 01 MySQL
      • 关系数据库
      • 锁
      • 事务
      • 多版本并发控制
      • 存储引擎
      • 数据类型
      • SQL
      • 索引
      • 查询性能优化
      • 分库分表
      • 复制
    • 02 MyBatis
      • MyBatis+Spring Boot
      • MyBatis Generator
      • CDDATA块
      • 注解使用
    • 03 Redis
      • Redis 简介
      • 分布式锁
      • 自定义序列化
      • 执行脚本
    • 04 Memcached
      • Memcached笔记
    • 05 MongoDB
      • MongoDB 概念
      • MongoDB 操作
      • MongoDB 管理
      • Java中使用
    • 06 Cassandra
      • Cassandra 简介
      • Cassandra 架构
      • Cassandra 数据模型
      • 迁移案例示例
      • Gossip 协议
      • Cassandra vs. HBase
    • Hadoop 生态
    • HDFS
    • HBase
    • Hive
    • Sqoop源码 - 从 MySQL 导入到 Hive
    • Hadoop 数据仓库 - 《离线和实时大数据开发实战》
    • NoSQL
  • 08 系统设计
    • 1 通用设计
      • 分布式统一 id 设计
      • 跨库分页
      • 短链接
      • 相似图片调研
      • 海明距离计算
      • 秒杀、红包系统
      • 使用 Java 进行爬虫
      • 文章相似度 - simhash 计算
      • 热加载实践
      • Groovy 热加载与 Java 热加载的对比
      • 异地多活
    • 2 业务设计
      • 即刻-链接解析-分析
      • 消息系统设计
      • 关注流调研
      • 关注流设计
    • 3 设计模式
      • 创建型模式
      • 结构型模式
      • 行为型模式
      • J2EE 模式
  • 09 DevOps
    • 1 Git
      • 搭建Git服务器
      • 创建版本库
      • 版本管理
      • 远程仓库
      • 分支管理
      • 标签管理
      • 其他
    • 2 SVN
      • 基础介绍
      • 基本操作
      • 版本管理
      • 冲突及解决
      • 开发周期
    • 3 IDEA
      • IDEA 快捷键
    • 4 Maven
      • Maven 笔记
      • Maven 冲突解决
    • 5 Gradle
      • Gradle 概述
      • maven迁移到gradle
    • 6 Linux
      • Centos 7 配置 LAMP
      • Linux 常用命令
      • Shell 脚本
    • 7 Zabbix
      • Zabbix简介
      • zabbix中文乱码
      • zabbix主动模式、被动模式
      • Zabbix迁移
    • 8 ELK
      • ElasticStack
    • 9 Docker
      • Docker 笔记
  • 10 微服务
    • 0 服务注册与发现
      • Spring Cloud Eureka
      • Spring Cloud Consul
    • 1 服务调用
      • Spring Cloud Ribbon
      • Spring Cloud Hystrix
      • Spring Cloud Feign
      • Resilience4j
      • 05 Apache Thrift
        • Apache Thrift 初识 (1) - 简介
        • Apache Thrift 初识 (2) - 数据类型与基本语法
        • Apache Thrift 初识 (3) - 实战Demo
    • 2 配置中心
      • Spring Cloud Config
      • Apollo 项目解析
      • 开源配置中心对比选型
    • 3 API网关
      • Spring Cloud Zuul
      • Spring Cloud Gateway
    • 4 消息组件
      • Spring Cloud Bus
      • Spring Cloud Stream
    • 5 链路追踪
      • Spring Cloud Sleuth
  • 11 分布式
    • 02 分布式计算
      • MapReduce
    • 05 分布式事务
      • 分布式事务
      • 分布式会话
    • 06 分布式锁
      • 分布式锁
    • 08 负载均衡
      • 一致性哈希
      • Paxos
      • Raft
      • 负载均衡
  • 12 测试
    • 1 EasyMock
      • EasyMock - 模拟对象测试
    • 2 http_load
      • http_load - 压力测试
    • 3 JMeter
      • JMeter - 性能测试
    • 4 JUnit
      • JUnit 5 简介
    • 5 MockMvc
      • MockMvc
  • 13 重构
    • 1 重构-改善既有代码的设计
      • 重构,第一个案例
      • 重构的原则
      • 代码的坏味道
      • 构筑测试体系
      • 重构列表
      • 重新组织函数
      • 在对象之间搬移特性
      • 重新组织数据
      • 简化条件表达式
      • 简化函数调用
      • 处理概括关系
      • 大型重构
  • 15 服务器
    • 4 Nginx
      • Nginx 笔记
  • 16 辅助工具类
    • 1 Apache Commons
      • Apache Commons - 总览
      • Apache Commons BeanUtils
      • Apache Commons Codec
      • Apache Commons Collections
      • Apache Commons Lang
      • Apache Commons Pool
      • Apache Commons Text
    • 3 日常小工具
      • 使用 Java 自带 MessageDigest 实现加密(MD5 和 SHA)
      • 一次性读取 GZIP 压缩的 CSV 文件
      • HttpUtil
    • 4 数据格式
      • 1 Json
        • Jackson 常用记录
      • Lombok消除Java冗长
      • MapStruct实体间转换
      • YAML 基础语法
  • 20 笔记梳理
    • Java
    • JVM
    • MySQL
    • NoSQL
  • 21 其他
    • 2019 年工作总结
    • 2020.2 Java 社招面试整理

分布式锁

在单机场景下,可以使用语言的内置锁来实现进程同步。但是在分布式场景下,需要同步的进程可能位于不同的节点上,那么就需要使用分布式锁。 阻塞锁通常使用互斥量来实现: 互斥量为 0 表示有其它进程在使用锁,此时处于锁定状态; 互斥量为 1 表示未锁定状态。 1 和 0 可以用一个整型值表示,也可以用某 ...
2020-01-04 11 分布式 > 06 分布式锁

©2018- Wu Jun
Theme Tree by Wu Jun Powered by Hexo