摘要:
简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 Zookeeper数据模型 Zookeep 阅读全文
摘要:
简介 ReentrantLock重入锁,由于它的加锁和解锁操作需要手动来完成,所以也称为显式锁。 ReentrantLock是基于AQS独占模式实现的独占锁,同时只能有一个线程能获取到该锁,获取不到锁的线程将被放入该锁的AQS阻塞队列中等待。 ReentrantLock的简单使用 一个Reentra 阅读全文
摘要:
1. 循环插入 mapper.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybati 阅读全文
摘要:
简介 Semaphore是用来限制访问特定资源的并发线程的数量,相对于内置锁synchronized和重入锁ReentrantLock的互斥性来说,Semaphore可以允许多个线程同时访问共享资源。 Semaphored的使用 构造方法 Semaphore(int permits):创建Semap 阅读全文
摘要:
简介 触发器是与表有关的数据库对象,当表发生INSERT/UPDATE/DELETE操作时,对应操作的触发器会被触发,将在这些操作之前或之后执行触发器中定义的SQL语句集合。 触发器的使用 创建触发器 语法: CREATE [DEFINER = user] TRIGGER trigger_name 阅读全文
摘要:
简介 Exchanger是一个用于线程间数据交换的工具类,它提供一个公共点,在这个公共点,两个线程可以交换彼此的数据。 当一个线程调用exchange方法后将进入等待状态,直到另外一个线程调用exchange方法,双方完成数据交换后继续执行。 Exchanger的使用 方法介绍 exchange(V 阅读全文
摘要:
简介 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用,下面分别介绍下这四种引用。 强引用 强引用是最常用的引用类型,如下所示,new Object()会创建一个Object对象并存储在堆上,变量ob 阅读全文
摘要:
简介 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。 存储过程的使用 创建存储过程 语法: CRE 阅读全文
摘要:
简介 CyclicBarrier字面意思是循环屏障,它可以实现线程间的计数等待。当线程到达屏障点时会依次进入等待状态,直到最后一个线程进入屏障点时会唤醒等待的线程继续运行。 CyclicBarrier和CountDownLatch类似,区别在于CountDownLatch只能使用一次,当计数器归零后 阅读全文
摘要:
简介 MySQL视图是一种虚拟的表,本身不包含任何数据,可以看作是对SQL查询的封装,它的数据都是动态执行SQL查询的结果。 MySQL视图常见应用主要有以下两种: 重用SQL语句,简化复杂SQL的操作。 保护数据,可以给用户授予表特定部分的访问权限,而不是整个表的访问权限。 视图的使用 创建视图 阅读全文