自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中volatile关键字的作用

由一段代码引出的问题我们先来看这样一段简单的代码:public class VolatileThread implements Runnable{ private boolean flag = true; public boolean isFlag() { return flag; } public void setFlag(boo...

2020-04-01 01:26:27 268

原创 java 线程安全问题以及使用synchronized解决线程安全问题的几种方式

线程安全问题产生的原因我们使用java多线程的时候,最让我们头疼的莫过于多线程引起的线程安全问题,那么线程安全问题到底是如何产生的呢?究其本质,是因为多条线程对同一份数据进行读、写操作的过程中,没有符合原子性。所谓原子性,就是不可再分性(早期没有发现质子、中子的时候,物理学家们都认为原子就是组成物质的最小粒子,是不可再分的)。为什么多线程对数据进行读写时不符合原子性就会产生的线程安全问题呢?我...

2020-03-31 04:32:13 491

原创 设计模式--超详细 手动实现 jdk动态代理 原理(4)

在前几篇文章中,我们通过指出静态代理的不足及弊端,引申出了动态代理,然后一步步的对代码进行优化。那么在jdk中的动态代理究竟是什么样子呢?本篇我们就来使用jdk的动态代理,并在使用的过程中比较一下和我们实现的动态代理有哪些区别。首先我们要自定义对方法的增强方式,即实现jdk提供的InvocationHandler接口:package cn.rain.design.proxy.demo4;...

2020-03-29 06:27:28 183

原创 设计模式--超详细 手动实现 jdk动态代理 原理(3)

在上一篇的中,我们通过写文件的方式,实现了用户可以无感知的获取到代理对象,但是在上一篇的最后我们也提出了这种实现方式不灵活的地方,这两个点是必须要改进的,否则也就无法称之为“动态”代理。改进1:动态生成用户所需类型的代理对象因为我们总是希望能返回我们所需要类型的代理对象,因此可以基于多态来改进此方法,因此可以将方法的参数修改成如下形式:public class MyProxy {...

2020-03-28 04:18:24 213

原创 设计模式--超详细 手动实现 jdk动态代理 原理(2)

上一篇讲了静态代理,我们发现静态代理需要显示的编写代理类,并且同样的代理功能(比如加日志),需要横向重复编写(即针对每个类型的接口都要使用相同代码进行实现),这会让项目整体变得十分臃肿,肯定不可取。我们来列举一下静态的弊端:横向:需要显式编写的代理类太多,针对每个类型的接口都要编写功能的代理类。 纵向:相同的代理功能(如记录时间、记录日志),在每个代理类上都要重复编写。基于静态代理的上述弊...

2020-03-28 04:17:42 133

原创 设计模式--超详细 手动实现 jdk动态代理 原理(1)

前言jdk动态代理想必大家都不陌生,它是面向切面编程(AOP)的理论基础,可以说当我们彻底搞清了jdk动态代理后,对aop的一些实际应用会有一个更深的层次,比如spring中的事务、日志管理、权限管理等。这一次的分享不会一上来就把jdk的Proxy拿来进行讲解,而是通过一个非常简单的小例子一步步的向jdk动态代理的实现去模拟,我个人更喜欢这种先提出问题再试图解决问题的方式,更能让我们看到设...

2020-03-28 04:15:03 222

原创 设计模式--单例模式

说起单例设计模式,只要是学过编程的应该可以说是无人不知了,学习和了解设计模式也大多从单例开始,你可能会把单例模式的代码很流利的写出来,但你真的了解单例设计模式吗?下面我将通过问题的引入,一步一步带大家了解单例设计模式。一、为什么要使用单例设计模式我们知道,在java中,每次使用new关键字创建一个实例后,都会在堆内存开辟一块空间,你有没有想过对于某些类来说,多个实例往往是没有必要的,并且还...

2018-03-17 01:25:23 205

原创 分门别类总结Java中的各种锁,让你彻底记住

前言本文需要具备一定的多线程基础才能更好的理解。学习java多线程时,最头疼的知识点之一就是java中的锁了,什么互斥锁、排它锁、自旋锁、死锁、活锁等等,细分的话可以罗列出20种左右的锁,光是看着这些名字就足以让人望而却步了,更别说一个个去理解它们的含义了。其实我要在这里告诉大家,我们看到的其实只是假象,其实根本没有这么多锁,或者这样说,这里边有很多锁其实就是一个东西,当我们从不同的侧重点...

2018-03-13 20:25:03 12115 8

空空如也

空空如也

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

TA关注的人

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