RabbitMQ的工作模式

RabbitMQ常用的有6种工作模式,它们分别是简单模式,work模式,发布订阅模式,路由模式,Topic模式。下面就分别解释一下这些工作模式的特点和实现方式。

mybatis源码分析一

我们从最简单的一段代码开始,分析清楚mybatis的大致工作流程。然后再从代码细节上分析mybatis的一些特性。 基础代码示例1234567891011121314151617public class test { public static void main(String[] args) throws IOException{ String resource = "example/mybatis-config.xml"; // 加载配置文件 并构建SqlSessionFactory对象 InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); // 从SqlSessionFactory对象中获取 SqlSession对象 SqlSession sqlSession = factory.openSession(); // 执行操作 User user=new User(); user.setId(1); Object u= (User)sqlSession.selectOne("getUser", user); System.out.println(u.toString()); // 关闭SqlSession sqlSession.close(); }}

CyclicBarrier源码分析

概述CyclicBarrier是一个同步辅助类,它允许一组线程相互等待,直到达到某个公共屏障点。并且在释放等待线程之后,CyclicBarrier是可以重复使用的。

CountDownLatch源码分析

概述CountDownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。简单来说,就是CountDownLatch内部维护了一个计数器,每个线程完成自己的操作之后都会将计数器减一,然后会在计数器的值变为0之前一直阻塞,直到计数器的值变为0.

ReentrantReadWriteLock源码分析

概述ReentrantReadWriteLock维护了一对相关的锁,它们分别是共享readLock和独占writeLock。关于共享读锁和排他写锁的概念其实很好理解。所谓共享读锁就是一个线程读的时候,其它线程也可以来读(共享),但是不能来写。排他写锁是指一个线程在写的时候,其它线程不能来写或读(排他)。除了这个特点之外,ReentrantReadWriteLock还有一个特点就是可重入的。它和ReentrantLock一样都是支持Condition的。而且ReentrantReadWerite还支持锁降级,即允许将写锁降级为读锁。

ReentrantLock源码分析

概述ReentrantLock是一个可重入的互斥锁,也被称为独占锁。它支持公平锁和非公平锁两种模式。

AQS基本原理

什么是AQS?AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。

变强日记18

主要内容 TCP协议是如何保证传输的可靠性的 算法题:序列化二叉树

变强日记17

主要内容 spring:BeanFactory和ApplicationContext有什么区别? 算法:删除链表中重复的节点

变强日记16

主要内容 redis的过期策略和内存淘汰机制 算法:字符流中第一个不重复的字符

167891015