摘要:
简单动态字符串 edis底层是使用C语言实现的,但是在redis中并没有直接使用C语言传统的字符串,也就是以空字符\0结尾的字符串,而是自己构建了一套名为简单动态字符串的抽象结构,simple dynamic string 简称SDS。比如创建一个字符串类型的键值对时,键值对的键和值都是一个SDS对 阅读全文
摘要:
本篇博客将从源码的角度讨论ApplicationContext与BeanFactory的关系。 提到ApplicationContext与BeanFactory的区别,我们都知道一下几点: BeanFactory: 是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象 阅读全文
摘要:
AbstractQueuedSynchronizer简称(AQS)是同步组件的基础框架,可以理解为是一个模版类,AQS以模版方法定义获取和释放同步状态的语义,并且通过队列管理获取同步状态失败的线程。本篇通过解析ReentrantLock重入锁解析AbstractQueuedSynchronizer( 阅读全文
摘要:
1. JMM基础——线程间的通信 处理并发编程,首先要处理的问题就是线程间如何通信并且如何做到同步,java的并发实现采用的是共享内存模型,线程之间的通信是隐式进行、对开发者完全透明的。 Java内存模型(JMM)控制线程之间的通信,决定一个线程对共享变量的写入什么时候对另一个线程可见。 JMM内存 阅读全文
摘要:
Java并发机制 并发编程相关 java部分知识点总结 MySQL Redis相关 Spring相关 JVM相关 单例模式 消息队列 一些皮毛 阅读全文
摘要:
一、持久化方式 redis提供了两种持久化方式将数据存储到硬盘中。 快照:将存在于某一时刻的所有数据写入硬盘中。 追加文件(AOF):在执行写命令时,将被执行的命令复制到硬盘中。 二、快照持久化 redis通过创建快照获得某一时间点存储在内存中的所有数据的副本,如果redis、系统或硬件三者其中只一 阅读全文
摘要:
一. 标记存活对象 引用计数器法 引用计数器法原理很简单:在对象中添加一个引用计数器,每有一个地方引用它时,计数器加一,引用失效时,计数器减一,计数器值为0时,这个对象就是不可再被使用的。这个算法理解起来简单,但实际应用时需要许多额外的处理与判断才能正常工作,比如循环引用的问题。 可达性分析法 ja 阅读全文
摘要:
运行时数据区域 1. 程序计数器 行号指示器,线程私有,本地方法计数器值为null。 2. java虚拟机栈 存储局部变量、方法等信息。每一个方法被调用至执行完毕的过程就对于着一个栈帧从入栈到出栈的过程,进入一个方法时,这个方法需要在栈帧中分配多少空间是完全确定的,运行期间不会改变。栈是线程私有的。 阅读全文
摘要:
第15条:使类和成员的可访问性最小化 软件设计的基本原则之一:信息隐藏 一个模块不需要知道其他模块的内部工作情况。 实现这个原则很简单,就是尽可能的使每个类或者成员不被外部访问。 对于顶层的类,只有两种访问级别:包级私有(package private)、公有(public)。 一个类声明为包级私有 阅读全文
摘要:
第十条:覆盖equals时请遵守通用的约定 类具有特有的逻辑相等的概念,且超类没有覆盖equals方法时应该覆盖equals方法,例如integer、String这种“值类”。 但是有一种值值类无需覆盖equals,即实例受控,每个值最多只存在一个对象的类,比如枚举类,这种类逻辑相同和对象相同是同一 阅读全文