自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CHANJIAJIA的博客

越努力,越幸运

  • 博客(15)
  • 收藏
  • 关注

原创 面试官:volatile是如何保证可见性和有序性的?

volatile保证可见性的原理可见性问题可见性问题指的是一个线程在访问一个共享变量的时候,其他线程对该共享变量的修改对于第一个线程来说是不可见的,下面通过一个例子可以发现可见性问题。public class Visable { private static boolean flag = true; public static void main(String[] args) throws InterruptedException { new Thread(()

2020-05-10 20:36:36 2858 5

原创 5分钟手撸一个阻塞队列

阻塞队列其实就是额外增加了两个附加操作的队列在队列已满的情况下,如果继put添加加元素就会阻塞等待;在队列为空的情况下,如果从队列中take获取元素就会阻塞等待;接下来我会使用ReentrantLock+Condition的方式来手撸一个阻塞队列,主要的方法就是put()和take()。import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * @p.

2020-07-01 08:52:51 418

原创 让我们来聊一聊”死锁“

在多线程的世界里,一个不小心可能就会造成”死锁“,一旦”死锁“了意味着CPU会一直在空转,结果就是CPU一下子飙到100%,所以避免死锁的前提,就要去聊聊什么是”死锁“以及如何去避免死锁。什么是死锁?死锁指的是,两个或者多个线程,持有了彼此请求的资源,导致线程之间互相在等待对方释放资源,所以造成了死锁,下面我们来手撸一个简单的死锁例子。public class DeadLock { public static void main(String[] args) { O.

2020-06-29 23:14:40 370

原创 面试官:说说你对AOP的理解

0. 前言这篇文章主要讲解AOP的基本概念和在Spring中如何使用AOP,在下一篇文章我会记录我在项目中如何使用AOP进行日志管理的。1. 什么是AOPAOP即Aspect Oriented Program面向切面编程,是面向对象编程(OOP)的一种增强模式,可以将项目中与业务无关的,却为业务模块所共同调用的非核心代码封装成(比如事务管理、日志管理、权限控制等等)一个个切面,然后在运...

2020-05-06 15:13:04 2799 2

原创 一文读懂动态代理

1. 什么是动态代理?动态代理也是一种代理模式,利用了JDK API,动态地在内存中构建代理对象,从而实现对目标对象的代理功能,所以动态代理一般也叫JDK代理或者接口代理。Spring AOP的底层原理就是动态代理。动态代理中代理对象不需要实现抽线对象接口,但是目标对象必须实现接口,不然不能使用动态代理1.1 动态代理与静态代理的区别在上一节代理模式中讲到的静态代理模式中的静态代理对...

2020-05-04 09:35:06 359

原创 代理模式,你真的懂了吗?

1. 什么是代理模式?代理模式指的是为其它对象提供了一个代理对象,用以控制对这个对象的访问。这里说的代理模式是指静态代理模式。具体例子:小明要租房子,他到网上联系了中介小张,小张代理了老王(人在美国)的房子出售,老王因为人在美国,所以将自己在国内的房子交给小张去帮忙装修并且出租,这里小张就是老王的代理对象,装修房子和出租交给了小张去做,然后小张会提高价格出租给小明,这就是一个典型的代理模式的...

2020-05-04 09:21:10 326

原创 反射机制原来这么简单

1. 什么是反射?一般我们new一个对象的时候,在编译期就知道我们要创建的对象是什么类型的,而反射指的是我们在运行时才知道要创建的对象的类型,然后动态获取类的信息和动态调用对象的方法,这就是java反射机制。2. Class对象通过Class对象我们可以在运行时动态获取类的信息以及动态调用对象的方法。每个类都会有一个Class对象,Class对象中存储了关于这个类的类型信息。而这些...

2020-05-04 09:12:02 227

原创 带着问题学习HashMap源码

文章目录前言继承关系存储结构JDK1.7JDK1.8成员变量构造方法带参构造函数无参构造函数put()方法Q:如何计算下标值?Q:为什么数组的大小要是2的次方幂?get()方法扩容机制JDK1.7中的扩容JDK1.8中对扩容的改进HashMap的线程问题小结前言本文主要讲解JDK1.8下HashMap的源码,并且会比较JDK1.7和JDK1.8的不同。继承关系HashMap继承了A...

2020-04-26 23:29:55 160

原创 带着问题学习ArrayList源码

文章目录前言继承关系成员变量Q:为什么`elementData`要用`transient`修饰?构造函数指定容量的构造函数不指定容量的构造函数传入一个集合的构造函数主要方法add(E e)方法Q:如何解决ArrayList大数据插入耗时问题?add(int index, E element)remove(int index)remove(Object o)前言ArrayList是List接口...

2020-04-26 20:23:36 250

原创 一层一层揭开synchronized的神秘面纱

前言在上一篇讲解CAS的文章里提到synchronized加锁开销很大,那么为什么会开销大呢?这篇文章主要讲解的内容是synchronized的底层原理以及锁升级的过程。并发编程的三大问题首先我们要知道为什么要使用synchronized加锁,那是因为在并发编程中会出现原子性问题、可见性问题、有序性问题,导致结果不是我们希望的,所以需要进行同步操作,而使用synchronized加锁是...

2020-04-22 20:20:21 242

原创 深入理解CAS底层原理及其应用

文章目录前言模拟一个高并发场景Q:最后结果却不是1000,这是为什么呢?Q:那么应该如何保证结果的正确性呢?Q:在Java中如何实现这种排队效果呢?Q:如何解决耗时过长的问题呢?CAS算法底层原理Q:CAS底层是如何?Q:lock前缀的作用CAS在Java中的应用Q:AtomicInteger类是怎么支持CAS算法的?CAS的缺点什么是ABA问题?怎么解决?循环时间长开销大只能保证一个共享变量的原...

2020-04-21 10:18:01 904

原创 【深入理解Java虚拟机系列】——垃圾收集器与内存分配策略

前言本文是对《深入理解Java虚拟机》的第三章垃圾收集器与内存分配策略的一个学习总结,本文的思维导图如下。对象存活判定算法判断对象是否存储的算法有两种,分别是引用计数法和可达性分析算法。引用计数法引用计数法指的是在对象中添加一个计数器,当对象被引用一次,计数器加一,释放引用,计数器减一,任何时刻只要计数器为零的对象就是不可能再被使用的对象。虽然引用计数法简单高效,但是没办法...

2020-04-17 16:46:27 202 1

原创 【深入理解Java虚拟机系列】——Java内存区域

文章目录前言一、Java运行时数据区JDK1.7的运行时数据区JDK1.8的运行时数据区JDK1.8为什么要移除方法区?程序计数器虚拟机栈本地方法栈Java堆方法区直接内存二、对象的创建过程1 检查类是否加载2 分配内存指针碰撞空闲列表线程安全问题3 为分配的内存空间都初始化为零值4 设置对象头5 执行构造函数三、对象的内存布局对象头Mark Word实例数据对齐填充四、对象的访问定位句柄访问直接...

2020-04-15 20:15:23 155

原创 【MySQL系列】——查询SQL语句的执行过程

0 前言平时我们执行一条查询sql语句的时候,我们看到的只是返回的结果,但是底层的执行过程是什么样的呢?这篇文章主要是对我最近在学习的丁奇老师的<<MySQL核心技术45讲>>的一个学习总结。1 MySQL的逻辑架构MySQL总体来说可以分为Server层和存储引擎层,Server层包括连接器、查询缓存、分析器、优化器和执行器。而存储引擎提供了一系列的api来进...

2020-04-14 21:21:31 392

原创 【MySQL系列】——事务隔离及MVCC

最近参加春招的过程中,被面试官问了这么一个题目面试官:你知道mysql默认的事务隔离级别吗?我:可重复读面试官:那你知道可重复度是怎么实现的吗?我:沉默…视图?…加锁?面试官:你说到视图,什么是视图?你说到加锁,所以其他事务就不能读了?面试完之后,我痛定思痛,一定要把这块知识搞明白,所以写此博客来记录我对事务隔离的理解,有讲得不好的地方请多多原谅。1 事务的隔离级别首先事务就...

2020-04-12 11:12:30 239 1

空空如也

空空如也

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

TA关注的人

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