#Memcache学习总结

并发编程学习笔记(6)----公平锁和ReentrantReadWriteLock使用及原理

(一)公平锁  1、什么是公平锁?  公平锁指的是在某个线程释放锁之后,等待的线程获取锁的策略是以请求获取锁的时间为标准的,即使先请求获取锁的线程先拿到锁。  2、在java中的实现?  在java的并发包中提供了ReentrantLock提供了重入锁并且也提供了公平锁(FairSync)和非公平锁(NonfairSy...

并发编程学习笔记(5)----AbstractQueuedSynchronizer(AQS)原理及使用

(一)什么是AQS?阅读java文档可以知道,AbstractQueuedSynchronizer是实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架,它是一个依靠单个原子 int 值来表示状态的大多数同步器的一个基础类。在jdk中他的实现的类有Semaph...

并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

(1)jdk中原子类的使用:jdk5中提供了很多原子类,它会使变量的操作变成原子性的。原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程干扰。jdk中的rt.jar中提供给了很多的原子性操作类。它们是位于java.util.concurrent.atomic包...

并发编程学习笔记(3)----synchronized关键字以及单例模式与线程安全问题

再说synchronized关键字之前,我们首先先小小的了解一个概念-内置锁。什么是内置锁?在java中,每个java对象都可以用作synchronized关键字的锁,这些锁就被称为内置锁,每个对象的锁的信息都存在对象头中所以synchronized关键字在使用过程中之所以能够保证线程的安全,也是因为使用了锁。下面就说...

并发编程学习笔记(2)----使用多线程带来的风险

 说到多线程带来的风险,首先要了解一个概念-临界区。  什么是临界区?  临界区是用来表示一种公共的资源(共享数据),它可以被多个线程使用,但是在每次只能有一个线程能够使用它,当临界区资源正在被一个线程使用时,其他的线程就只能等待当前线程执行完之后才能使用该临界区资源。  比如一台饮水机,比如办公室办公室里有...

并发编程学习笔记(1)----多线程几种实现方式

多线程是指机器支持在同一时间执行多个线程,能够提高cpu的利用率,提高程序的执行效率。(1)继承Thread类多线程可以通过继承Thread类并重新Thread的run方法来启动多线程。然后通过Thread的start方法来启动线程。上代码:packagecom.wangx.thread.t1;publicclassD...

RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群

  由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全局搜索9876,将所有使用9876端口的地方改为9877。  在终端打开,使用:mvn-Prelease-all-DskipTestscleaninstal...

RocketMQ学习笔记(15)----RocketMQ的消息模式

在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式。  同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式。  跟AciiveMQ一样,当存在多个消费者时,消息通过一定负载均衡策略,将消息分发到多个consumer中。  如图:    在RockeMQ...

RocketMQ学习笔记(14)----RocketMQ的去重策略

  (1).发送消息阶段,不允许发送重复的消息  (2).消费消息阶段,不允许消费重复的消息。  只有以上两个条件都满足情况下,才能认为消息是“ExactlyOnlyOnce”,而要实现以上两点,在分布式系统环  境下,不可避免要产生巨大的开销。所以RocketMQ为了追求高性能,并不保证此特性,要求在业务上进行去重,...

RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试

  生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败。 这种消息失败重试我们可以手动设置发送失败重试的次数。  Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次,Consumer消费消息失败通常可以认为有以下几种情况  1.由于...

RocketMQ学习笔记(12)----RocketMQ的Consumer API简介

由于消息的消费方式有两种,所以两种方式也有不同的API:  1. consumerGroup:默认值为DEFAULT_CONSUMER,Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组  2. messageModel:消息模型,默认...

RocketMQ学习笔记(11)----RocketMQ的PushConsumer和PullConsumer

  推,Broker主动向Consumer推消息,它Consumer的一种,应用通常向对象注册一个Listener接口,一旦接收到消息,Consumer对象立刻回调Linstener接口方法。Push方式里,consumer把轮询过程封装了,并注册MessageListener监听器,取到消息后,唤醒MessageLi...

RocketMQ学习笔记(10)----RocketMQ的Producer 事务消息使用

 RocketMQ除了支持普通消息,顺序消息之外,还支持了事务消息。  分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保...

RocketMQ学习笔记(9)----RocketMQ的Producer 顺序消息

  消费消息的顺序要求同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,并且发送给到同一队列,这样Consumer就可以按照Producer发送的顺序去消费消息。  正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队...

RocketMQ学习笔记(8)----RocketMQ的Producer API简介

在RocketMQ中提供了三种发送消息的模式:  1.NormalProducer(普通)  2.OrderProducer(顺序)  3.TransactionProducer(事务)下面来介绍一下producer中的各个API的使用:  1.producerGroup:Producer组名,默认值为DEFAULT_...
首页上一页...3940414243...下一页尾页