- 博客(13)
- 收藏
- 关注
原创 Java私房菜
Pan的Java私房菜 Java core 消息处理及分布式锁的使用 AQS CAS分析 用Java实现生产者消费者模式 JAVA 基础系列之 重排序和Volatile JVM内存模型与垃圾回收 spring Spring Bean生命周期 spring声明式事务 DB MySql MyISAM、InnoDB索引区别 mysql查看死锁和解除锁 数据库索引 MQ Kafka vs R...
2020-01-08 10:53:50 289
原创 消息处理及分布式锁的使用
之前同事遇到的场景,特意跟踪了一下这个单点问题 场景 在处理存管银行的收放款文件时,因为存在一人还款给多人,多人放款给一人,多人债转给多人的局部单点问题,账户系统使用了分布式锁来作为解决方案,从而达到缓解大量数据库乐观锁异常(由于乐观锁是在事务提交时发生,此时报错返回已经消耗了CPU和内存资源) 代码(还款为例) 处理步骤 1、尝试获取锁 getVirtualLock方法在内部设置了重试机制,是...
2018-11-02 09:46:27 280
转载 AQS CAS分析
什么是CAS CAS(Compare And Swap)比较并交换。是解决多线程并行情况下使用锁造成的性能损耗的一种机制,CAS操作包含三个操作数— 内存位置(V)预期原值(A)和新值(B).如果内存位置与预期原值相匹配,那么处理器会自动将新值更新到该位置值,否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含A;如果包含该值,则将...
2018-10-12 14:27:10 214
原创 MyISAM、InnoDB索引区别
《数据库索引》介绍了B+树,是一种非常适合用来做数据库索引的数据结构: 很适合磁盘存储,能够充分利用局部性原理,磁盘预读; 很低的树高度,能够存储大量数据; 索引本身占用的内存很小; 能够很好的支持单点查询,范围查询,有序性查询; 数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引,其又有...
2018-10-11 11:00:00 164
原创 内网穿透:MAC 下使用 ngrok 实现内网穿透
下载 MAC 版的 ngrok:https://ngrok.com/download 解压到指定目录: unzip -d /tmp ngrok-stable-darwin-amd64.zip 进入到解压后的 ngrok 所在路径: cd /tmp 开启服务: ./ngrok http localhost:8080 status -> online 启动成功。 转发地...
2018-12-08 15:21:01 855
原创 Spring Bean生命周期
废话不多说,直接上图 1. 生命周期流程图 Spring Bean的完整生命周期是从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。 若容器注册了以上各种借口,那么程序将会按照以上流程运行。下边讲一下各接口的作用 2.各种接口方法分类 Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类: 1、Bean自身的方法 : 这个包括了Bea...
2018-10-22 17:02:19 198
原创 mysql查看死锁和解除锁
解除正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist 3.杀死进程id(就是上面命令的id列) kill id 第二种: 1.查看下在锁的事务 SELECT * FROM INFORMATION...
2018-10-19 14:08:06 215
原创 Kafka vs RocketMQ
概述 这篇博文主要讲清楚kafka和rocketMq的两个不同点,1、rocketMq的namesvr和kafka的zookeeper对比;2、kafka为什么比rocketMq有更大的吞吐量。如果能够讲清楚上面两个问题我觉得就已经很满足了。 最后,文章引入的参考文章里面有一些比较好的链接,有兴趣的话可以好好看看,里面其实有些地方比我讲解的更深入。 namesrv VS zk 1:我们可以对比下k...
2018-10-17 13:27:35 388
原创 spring声明式事务
1. 什么是事务 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。 2. 事务的特性 事务特性分为四个:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)简称ACID。 原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含...
2018-10-15 15:08:57 157
原创 数据库索引
问题1:数据库为什么要设计索引? 图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去? 于是,图书管理员设计了一套规则: (1)一楼放历史类,二楼放文学类,三楼放IT类… (2)IT类,又分软件类,硬件类… (3)软件类,又按照书名音序排序… 以便快速找到一本书。 与之类比,数据库存储了1000W条数据,要从中找到name=”climb_s”的记录,一条条查,要查到什...
2018-10-11 10:35:19 212
原创 用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 272
原创 JAVA 基础系列之 重排序和Volatile
重排序 在执行程序时,编辑器和处理器会对指令进行重排序,重排序分为: 编译器重排序:在不改变代码语义的情况下,优化性能而改变了代码执行顺序; 指令并行的重排序:处理器采用并行技术使多条指令重叠执行,在不存在数据依赖的情况下,改变机器指令的执行顺序; 内存系统的重排序:使用缓存和读写缓冲区时,加载和存储可能是乱序执行。 比如现在有一段代码如下: // 代码1 a = 1; // 代码2 b = ...
2018-09-27 18:38:22 217
原创 JVM内存模型与垃圾回收
JVM内存模型与垃圾回收 本文的主要内容如下: 内存模型 垃圾回收 参考文章 内存模型 各部分的功能 这几个存储区最主要的部分就是堆区和栈区,那么什么是栈什么是堆呢?说的简单点,栈存放的是基本数据类型和引用类型的引用,而堆里边则是存放各种对象的实例。 栈于堆分开设计的好处: 栈存储了处理逻辑、堆存储了具体数据,这样隔离设计提高了清晰度和可用性 堆与栈分离,使...
2018-09-27 16:11:10 561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人