java
climb_s
这个作者很懒,什么都没留下…
展开
-
Java私房菜
Pan的Java私房菜Javacore消息处理及分布式锁的使用AQS CAS分析用Java实现生产者消费者模式JAVA 基础系列之 重排序和VolatileJVM内存模型与垃圾回收springSpring Bean生命周期spring声明式事务DBMySqlMyISAM、InnoDB索引区别mysql查看死锁和解除锁数据库索引MQKafka vs R...原创 2020-01-08 10:53:50 · 277 阅读 · 0 评论 -
JVM内存模型与垃圾回收
JVM内存模型与垃圾回收本文的主要内容如下:内存模型垃圾回收参考文章内存模型各部分的功能这几个存储区最主要的部分就是堆区和栈区,那么什么是栈什么是堆呢?说的简单点,栈存放的是基本数据类型和引用类型的引用,而堆里边则是存放各种对象的实例。栈于堆分开设计的好处:栈存储了处理逻辑、堆存储了具体数据,这样隔离设计提高了清晰度和可用性堆与栈分离,使...原创 2018-09-27 16:11:10 · 550 阅读 · 0 评论 -
AQS CAS分析
什么是CASCAS(Compare And Swap)比较并交换。是解决多线程并行情况下使用锁造成的性能损耗的一种机制,CAS操作包含三个操作数— 内存位置(V)预期原值(A)和新值(B).如果内存位置与预期原值相匹配,那么处理器会自动将新值更新到该位置值,否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含A;如果包含该值,则将...转载 2018-10-12 14:27:10 · 205 阅读 · 0 评论 -
JAVA 基础系列之 重排序和Volatile
重排序在执行程序时,编辑器和处理器会对指令进行重排序,重排序分为:编译器重排序:在不改变代码语义的情况下,优化性能而改变了代码执行顺序;指令并行的重排序:处理器采用并行技术使多条指令重叠执行,在不存在数据依赖的情况下,改变机器指令的执行顺序;内存系统的重排序:使用缓存和读写缓冲区时,加载和存储可能是乱序执行。比如现在有一段代码如下:// 代码1a = 1;// 代码2b = ...原创 2018-09-27 18:38:22 · 202 阅读 · 0 评论 -
spring声明式事务
1. 什么是事务事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。2. 事务的特性事务特性分为四个:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)简称ACID。原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含...原创 2018-10-15 15:08:57 · 149 阅读 · 0 评论 -
用Java实现生产者消费者模式
采用synchronized锁以及wait notify方式实现package com.stylefeng.guns.mq;import java.io.IOException;/** @author climb.s * @date 2018/9/27 19:14 */public class WaitAndNotify { public static void main...原创 2018-10-10 18:27:24 · 256 阅读 · 0 评论 -
Spring Bean生命周期
废话不多说,直接上图1. 生命周期流程图Spring Bean的完整生命周期是从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。若容器注册了以上各种借口,那么程序将会按照以上流程运行。下边讲一下各接口的作用2.各种接口方法分类Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:1、Bean自身的方法 : 这个包括了Bea...原创 2018-10-22 17:02:19 · 189 阅读 · 0 评论 -
消息处理及分布式锁的使用
之前同事遇到的场景,特意跟踪了一下这个单点问题场景在处理存管银行的收放款文件时,因为存在一人还款给多人,多人放款给一人,多人债转给多人的局部单点问题,账户系统使用了分布式锁来作为解决方案,从而达到缓解大量数据库乐观锁异常(由于乐观锁是在事务提交时发生,此时报错返回已经消耗了CPU和内存资源)代码(还款为例)处理步骤1、尝试获取锁getVirtualLock方法在内部设置了重试机制,是...原创 2018-11-02 09:46:27 · 270 阅读 · 0 评论