05 2021 档案

摘要:Rabbitmq解决分布式事务的原理:可靠消息最终一致性方案 需要保证以下三要素 1、确认生成者一定要将消息可靠投递到MQ【采用MQ的异步confirm消息确认机制】 public interface ConfirmListener { /** ** handleAck RabbitMQ消息接收成功 阅读全文
posted @ 2021-05-31 19:18 jock_javaEE 阅读(410) 评论(0) 推荐(0)
摘要:(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 例子:常规计数:微博数,粉丝数等 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可 阅读全文
posted @ 2021-05-31 00:19 jock_javaEE 阅读(48) 评论(0) 推荐(0)
摘要:一、高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作mysql,半天查出来一个结果,耗时600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾600ms查出来的结果,扔缓存里,一个key对应一个value,下次 阅读全文
posted @ 2021-05-30 23:39 jock_javaEE 阅读(205) 评论(0) 推荐(0)
摘要:一、rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理; RabbitMQ 实现消息顺序消费的完整方案 阅读全文
posted @ 2021-05-30 20:03 jock_javaEE 阅读(368) 评论(0) 推荐(0)
摘要:一、rabbitmq出现消息重复的场景 A:消息消费成功,事务已经提交,ack时,机器宕机,导致没有ack成功, Broker的消息重新由unack变为ready,并发送给其他消费者 B:消息消费失败,由于重试机制,自动又将消息发送出去 C、成功消费,ack时宕机,消息由unack变为ready,B 阅读全文
posted @ 2021-05-30 19:44 jock_javaEE 阅读(896) 评论(0) 推荐(0)
摘要:一、Rabbitmq的流程图 二、出现消息丢失的三个可能 A:写消息的过程,消息都没到rabbitmq,在网络传输过程就丢了;或者是消息到了rabbitmq,但是人家内部出错了没保存下来 例子: 1、channel.confirm // 先把channel设置成confirm的模式 2、发一个消息 阅读全文
posted @ 2021-05-30 18:59 jock_javaEE 阅读(129) 评论(0) 推荐(0)
摘要:第一种情况:设置了过期时间的数据 a:挑选使用最少的数据淘汰 b:随机淘汰 c:选择时间快过期数据淘汰 第二种:没有设置过期时间的数据 a:挑选使用最少的数据淘汰 b:随机淘汰 第三种: a:禁止驱逐数据 阅读全文
posted @ 2021-05-29 18:38 jock_javaEE 阅读(64) 评论(0) 推荐(0)
摘要:一、全局命令 阅读全文
posted @ 2021-05-23 10:49 jock_javaEE 阅读(52) 评论(0) 推荐(0)
摘要:为什么要建立分支 git默认的主分支名字为master,一般团队开发时,都不会在master主分支上修改代码,而是建立新分支,测试完毕后,在将分支的代码合并到master主分支上 2.操作如下: 2.1 idea git分支的操作 idea git的操作在右下角,如下图: 2.2 创建分支 2.3 阅读全文
posted @ 2021-05-23 10:36 jock_javaEE 阅读(1792) 评论(0) 推荐(0)
摘要:偏向锁/轻量级锁/重量级锁:这三种锁是指Synchronized的锁状态 偏向锁:是指一段同步代码,只有一个单线程所访问,那么该线程会自动获取锁;降低获取锁的代价 轻量级锁:是指当前锁处于偏向锁状态的时候,被多个线程所访问,偏向锁就会升级为轻量级锁,但只有一个线程能获得锁用使用权,其他线程会通过自旋 阅读全文
posted @ 2021-05-15 01:12 jock_javaEE 阅读(338) 评论(0) 推荐(0)
摘要:可重入锁又名递归锁:是指在同一个线程在外层方法获取锁的时候,在进入内层加锁方法上也会自动获取锁 比如:ReentrantLock、Synchronized都是可重入锁,可重入锁的一个好处是可一定程度避免死锁 阅读全文
posted @ 2021-05-15 00:55 jock_javaEE 阅读(103) 评论(0) 推荐(0)
摘要:独享锁/共享锁是一种广义的说法,互斥锁/读写锁就是具体的实现 互斥锁:ReentrantLock 读写锁:读写锁在Java中的具体实现就是ReentrantReadWriteLock 阅读全文
posted @ 2021-05-15 00:52 jock_javaEE 阅读(68) 评论(0) 推荐(0)
摘要:独享锁:是指该锁一次只能被一个线程所持有 比如:ReentrantLock、Synchronized都是独享锁 共享锁:是指该锁可被多个线程所持有 读锁的共享锁可保证并发读是非常高效的,读写,写读 ,写写的过程是互斥的。独享锁与共享锁也是通过AQS来实现的, 通过实现不同的方法,来实现独享或者共享 阅读全文
posted @ 2021-05-15 00:49 jock_javaEE 阅读(114) 评论(0) 推荐(0)
摘要:公平锁:是指多个线程按照申请锁的顺序来获取锁 非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象 比如:ReentrantLock、Synchronized都非公平锁 阅读全文
posted @ 2021-05-15 00:41 jock_javaEE 阅读(61) 评论(0) 推荐(0)
摘要:一、Bean生命周期的流程图 二、spring的生命周期 spring生命周期中的阶段,包括初始化、使用、销毁。 1、初始化阶段 1)调用bean的构造函数,创建实例; 2)进行参数依赖注入; 3)若实现org.springframework.beans.BeanNameAware接口,则调用Bea 阅读全文
posted @ 2021-05-13 15:37 jock_javaEE 阅读(406) 评论(0) 推荐(0)
摘要:1、介绍两个概念 有状态的bean:对象中有实例变量(成员变量),可以保存数据,是非线程安全的 无状态的bean:对象中没有实例变量(成员变量),不能保存数据,可以在多线程环境下共享,是线程安全的 2、spring的线程安全问题 2.1 我们都知道spring中的bean默认都是单例的,ioc容器中 阅读全文
posted @ 2021-05-13 14:41 jock_javaEE 阅读(1733) 评论(0) 推荐(1)