自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Java私房菜

Pan的Java私房菜Javacore消息处理及分布式锁的使用AQS CAS分析用Java实现生产者消费者模式JAVA 基础系列之 重排序和VolatileJVM内存模型与垃圾回收springSpring Bean生命周期spring声明式事务DBMySqlMyISAM、InnoDB索引区别mysql查看死锁和解除锁数据库索引MQKafka vs R...

2020-01-08 10:53:50 260

原创 消息处理及分布式锁的使用

之前同事遇到的场景,特意跟踪了一下这个单点问题场景在处理存管银行的收放款文件时,因为存在一人还款给多人,多人放款给一人,多人债转给多人的局部单点问题,账户系统使用了分布式锁来作为解决方案,从而达到缓解大量数据库乐观锁异常(由于乐观锁是在事务提交时发生,此时报错返回已经消耗了CPU和内存资源)代码(还款为例)处理步骤1、尝试获取锁getVirtualLock方法在内部设置了重试机制,是...

2018-11-02 09:46:27 236

转载 AQS CAS分析

什么是CASCAS(Compare And Swap)比较并交换。是解决多线程并行情况下使用锁造成的性能损耗的一种机制,CAS操作包含三个操作数— 内存位置(V)预期原值(A)和新值(B).如果内存位置与预期原值相匹配,那么处理器会自动将新值更新到该位置值,否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含A;如果包含该值,则将...

2018-10-12 14:27:10 163

原创 MyISAM、InnoDB索引区别

《数据库索引》介绍了B+树,是一种非常适合用来做数据库索引的数据结构:很适合磁盘存储,能够充分利用局部性原理,磁盘预读;很低的树高度,能够存储大量数据;索引本身占用的内存很小;能够很好的支持单点查询,范围查询,有序性查询;数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引,其又有...

2018-10-11 11:00:00 139

原创 内网穿透:MAC 下使用 ngrok 实现内网穿透

下载 MAC 版的 ngrok:https://ngrok.com/download解压到指定目录: unzip -d /tmp ngrok-stable-darwin-amd64.zip进入到解压后的 ngrok 所在路径: cd /tmp开启服务: ./ngrok http localhost:8080status -> online 启动成功。转发地...

2018-12-08 15:21:01 804

原创 Spring Bean生命周期

废话不多说,直接上图1. 生命周期流程图Spring Bean的完整生命周期是从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。若容器注册了以上各种借口,那么程序将会按照以上流程运行。下边讲一下各接口的作用2.各种接口方法分类Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:1、Bean自身的方法  :  这个包括了Bea...

2018-10-22 17:02:19 154

原创 mysql查看死锁和解除锁

解除正在死锁的状态有两种方法:第一种:1.查询是否锁表show OPEN TABLES where In_use > 0;2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)show processlist3.杀死进程id(就是上面命令的id列)kill id第二种:1.查看下在锁的事务SELECT * FROM INFORMATION...

2018-10-19 14:08:06 188

原创 Kafka vs RocketMQ

概述这篇博文主要讲清楚kafka和rocketMq的两个不同点,1、rocketMq的namesvr和kafka的zookeeper对比;2、kafka为什么比rocketMq有更大的吞吐量。如果能够讲清楚上面两个问题我觉得就已经很满足了。最后,文章引入的参考文章里面有一些比较好的链接,有兴趣的话可以好好看看,里面其实有些地方比我讲解的更深入。namesrv VS zk1:我们可以对比下k...

2018-10-17 13:27:35 332

原创 spring声明式事务

1. 什么是事务事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。2. 事务的特性事务特性分为四个:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)简称ACID。原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含...

2018-10-15 15:08:57 133

原创 数据库索引

问题1:数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又按照书名音序排序…以便快速找到一本书。与之类比,数据库存储了1000W条数据,要从中找到name=”climb_s”的记录,一条条查,要查到什...

2018-10-11 10:35:19 184

原创 用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 221

原创 JAVA 基础系列之 重排序和Volatile

重排序在执行程序时,编辑器和处理器会对指令进行重排序,重排序分为:编译器重排序:在不改变代码语义的情况下,优化性能而改变了代码执行顺序;指令并行的重排序:处理器采用并行技术使多条指令重叠执行,在不存在数据依赖的情况下,改变机器指令的执行顺序;内存系统的重排序:使用缓存和读写缓冲区时,加载和存储可能是乱序执行。比如现在有一段代码如下:// 代码1a = 1;// 代码2b = ...

2018-09-27 18:38:22 161

原创 JVM内存模型与垃圾回收

JVM内存模型与垃圾回收本文的主要内容如下:内存模型垃圾回收参考文章内存模型各部分的功能这几个存储区最主要的部分就是堆区和栈区,那么什么是栈什么是堆呢?说的简单点,栈存放的是基本数据类型和引用类型的引用,而堆里边则是存放各种对象的实例。栈于堆分开设计的好处:栈存储了处理逻辑、堆存储了具体数据,这样隔离设计提高了清晰度和可用性堆与栈分离,使...

2018-09-27 16:11:10 307

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除