一江溪水
JVM运行时数据区(一) JVM运行时数据区(一)
JVM运行时数据区Java运行时数据区可以细分为五个模块:栈,堆,寄存器,方法区和本地方法栈在Java8之后,方法区改成了元空间,有一些区域是线程私有的,有一些是线程共享的 线程私有 程序计数器 Java 虚拟机栈 本地方法栈线程共享 Ja
2021-08-14
Java类加载机制 Java类加载机制
类加载过程Java类加载过程为:加载-链接-初始链接的过程包括验证,准备,解析 加载把编译后的class字节码文件通过类加载器装载入内存中,并将这些数据转换成方法区中的运行时数据(静态变量、静态代码块、常量池等),在堆中生成一个Class类
2021-08-06
RabbitMQ中消息确认和返回机制 RabbitMQ中消息确认和返回机制
RabbitMQ中消息确认和返回机制 为了保证 RabbitMQ 中消息的可靠性投递,以及消息在发生特定异常时的补偿策略 RabbitMQ诞生了消息确认和返回机制 这两种机制是 RabbitMQ 自带的补偿机制,可以直接使用消息确认消息确认
2021-08-02
RabbitMQ队列模型 RabbitMQ队列模型
模型定义 生产者(Producer):发送消息到队列的模块,可以理解为消息的提供者 队列(Queue):存储消息的一段空间,作为消息的缓存模块; 消费者(Consumer):从队列中接受消息的模块,可以理解为消息的处理者 交换机(Excha
2021-07-28
消息队列基础 消息队列基础
什么是队列队列这个概念非常好理解,你可以把它想象为在食堂排队打饭,先来的先打,后来的人只能站末尾,不允许插队,先进者先出,这就是典型的队列。队列的特定就是先进先出,先来的先出去 什么是消息队列消息 消息是指在应用间传送的数据。 消息可以非常
2021-07-27
Java集合之HashMap(三) Java集合之HashMap(三)
线程安全在多线程,高并发的场景下,HashMap存在线程安全问题 主要原因在于并发下的rehash会造成元素之间会形成一个循环链表。 jdk 1.8 后解决了这个问题,但是还是不应该在多线程下使用HashMap ,因为多线程下使用Hash
2021-07-23
Java集合之HashMap(二) Java集合之HashMap(二)
HashMap扩容机制明确几个参数: capacity 即容量,默认16。 loadFactor 加载因子,默认是0.75 threshold 阈值。阈值=容量*加载因子。默认12。当元素数量超过阈值时便会触发扩容。 什么时候触发扩容?
2021-07-22
Java集合之HashMap(一) Java集合之HashMap(一)
在讲HashMap之前,先说说Java中的集合框架 Java 的集合框架Java 中集合主要分为java.util.Collection和java.util.Map两大接口 List,Set,Map三者区别 List:线性表,必须按照顺序保
2021-07-21
分布式理论CAP和BASE 分布式理论CAP和BASE
CAP理论所谓CAP理论,就是分布式系统下的: 一致性(C:Consistency) 可用性(A:Availability) 分区容忍性(P:Partition tolerance) 一致性(C:Consistency)在分布式环境下,
Spring两大特性:IOC和AOP Spring两大特性:IOC和AOP
IOC(Inverse of Control)控制反转说起控制反转,首先要了解一下软件设计的一个重要思想:依赖倒置 依赖倒置原则假如现在要造一台手机,先设计处理器,然后根据处理器的规格设计主板,接着根据主板设计机身,最后根据机身设计好整个手
2021-07-20
如何保证缓存与数据库的一致性? 如何保证缓存与数据库的一致性?
常见的缓存更新策略 先更新缓存,再更新数据库 先更新数据库,再更新缓存 先删除缓存,再更新数据库 先更新数据库,再删除缓存 延时双删-更新数据库前后均删除缓存 如果系统不存在并发情况,这些策略都没问题,但是一旦协同并发上来后,这些策略都有
2021-07-19
线程复用-线程池 线程复用-线程池
线程池是什么 池化技术能够减少资源对象的创建次数,提高程序的响应性能,特别是在高并发下这种提高更加明显 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务 为什么要用线程池主要是为了减少每次获取资源的
2021-07-18
8 / 10