消息队列存储机制源码分析

1. RabbitMQ进程架构

Erlang是基于Actor模型的一门天然多进程、分布式和高并发的语言。一个Erlang虚拟机对应一个操作系统进程。一个Erlang进程调度器对应一个操作系统线程。一般来说,有多少个CPU核就有多少个调度器。

阅读全文

RabbitMQ集群安装及部署

单机部署

1. 安装erlang

erlang1.9安装包

阅读全文

自定义Spring Boot Starter

Q & A

  1. Q: 与传统的依赖相比,spring-boot-starter依赖有什么特别的地方?

阅读全文

ReentrantReadWriteLock源码学习

整体结构

阅读全文

ReentrantLock源码学习

前言

ReentrantLock是一个重入锁,提供了公平锁和非公平锁的选择,通过构造方法接受参数fair,为true为公平锁,反之为非公平锁。默认为非公平锁。

问题

在进行源码阅读之前,我有几个问题,带着问题,我们来进一步学习源码,会更加有目的性。

阅读全文

Java并发源码学习系列

前言

第二期源码刻意练习,本专题针对 锁、线程池、队列、并发容器,这个四个方面进行学习和梳理。以下会列出每个主题需要学习的内容

训练计划

阅读全文

使用RAP,Mock第三方服务

前言

RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率。

使用场景

DEV环境的服务A,某个接口依赖第三方的服务。但DEV环境并没有部署第三方服务,那么要测试这个接口「除第三方之外的逻辑」,必须要Mock第三方服务。这个此时就可以使用RAP。具体使用详情,可以查看官网教程。

阅读全文

使用Charles抓Https包

前言

Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量。 这包括请求,响应和HTTP标头(包含cookie和缓存信息)。这篇文章将会介绍如何抓取手机App上的请求。

阅读全文

Astah之时序图教程

参考资料

  1. 时序图 - Astah官方教程

阅读全文

声明不可变类的策略

不可变类定义

  1. 方法所有属性均不提供setter方法
  2. 所有属性均为final、private
  3. 不允许子类重构方法,最简单的方式,就是在类上加上final关键字,这样类不可继承,即所有方法均不会被重构;

阅读全文