班级作业
qq_35320071
这个作者很懒,什么都没留下…
展开
-
RabbitMQ
@1.8HashMap简要概述 一、HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。 ...原创 2019-08-11 22:37:50 · 100 阅读 · 0 评论 -
RabbitMQ基础
AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。 RabbitMQ提供了四种Exchange模式:fanout,d...原创 2019-08-11 23:31:59 · 121 阅读 · 0 评论 -
redis的持久化rdb和aof的区别
aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。 save, shutdown, slave 命令会触发这个操作。 粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。 aof...原创 2019-08-11 23:37:13 · 102 阅读 · 0 评论 -
java的锁升级
偏向锁 如果一个线程获得了锁,再次请求的时候就不需要再去获取锁。如果发现有其他线程来获取这个锁,就升级为轻量级锁。 理论基础: 在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,因此为了减少同一线程获取锁的代价而引入偏向锁。 轻量级锁 通过使用CAS来获取锁,如果CAS失败就升级为自旋锁。 理论基础 对绝大部分的锁,在整个同步周期内都不存在竞争 自旋锁 线程去获取锁的时候,默认认...原创 2019-08-11 23:41:36 · 100 阅读 · 0 评论 -
Docker基础
一、简介 Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的CGroup、Namespace、Union FS等技术实现的一种系统级虚拟化技术。 特性 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个...原创 2019-09-08 22:55:24 · 954 阅读 · 0 评论 -
redis的缓存雪崩,缓存穿透,缓存击穿
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。本篇文章,并不是要更加完美的解决这三个问题,也不是要颠覆业界流行的解决方案。而是,从...原创 2019-09-29 23:57:18 · 171 阅读 · 0 评论