赞了文章2021-01-13
AOP的基础是Java动态代理,了解和使用两种动态代理能让我们更好地理解 AOP,在讲解AOP之前,让我们先来看看Java动态代理的使用方式以及底层实现原理。
赞了文章2021-01-12
前言 系列文章目录 有了上一篇对预备知识的了解之后,分析源码就容易多了,本篇我们就直接来看看FutureTask的源码。 本文的源码基于JDK1.8。 Future和Task 在深入分析源码之前,我们再来拎一下FutureTask到底是干嘛的。人如其名,FutureTask包含了Future和Task两部分...
发布了文章2020-11-17
原生Servlet在大型项目中需要进过多重封装,来避免代码冗余,其次由于不同接口需要的参数不同,我们需要自己在Servlet层 封装我们需要的参数,这对于开发者来说是一种重复且枯燥的工作,于是出现了视图层框架,为我们进行参数封装等功能。让开发者的注意力全部放在逻...
发布了文章2020-11-12
底层是monitor监视器,每一个对象再创建的时候都会常见一个monitor监视器,在使用synchronized代码块的时候,会在代码块的前后产生一个monitorEnter和monitorexit指令,来标识这是一个同步代码块。
发布了文章2020-11-10
JVM介绍1. JVM的体系架构(内存模型)绿色的为线程私有,橘色的为线程共有2. 类加载器负责将.class文件加载到内存中,并且将该文件中的数据结构转换为方法区中的数据结构,生成一个Class对象2.1 类加载器分类自启动类加载器。Bootstrap ClassLoader类加载器。负责加...
赞了文章2020-11-09
关于“负载均衡”的解释,百度词条里:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个操作单元上进行执行,共同完成工作任务。
发布了文章2020-11-09
来看一下传统的干活方式:在对象单一职责原则的基础上,一个对象很少有不依赖其他对象而完成自己的工作,所以这个时候就会出现对象之间的依赖。而体现在我们的开发中,就是需要什么对象的时候,就创建什么对象,此时对象创建的控制权在我们自己手里。当对象创建的太...
发布了文章2020-11-07
今天我们来聊两个设计模式:调停者设计模式和门面设计模式,为什么要将他们放在一起讲解,因为他们两个东东太像了,仅仅是由于作用的地方不同而产生的不同的叫法。
发布了文章2020-11-06
REST服务是一种ROA(Resource-Oriented Architecture,面向资源的架构)应用。主要特点是方法信息存在于HTTP协议的方法中(GET,POST,PUT,DELETE),作用域存在于URL中。例如,在一个获取设备资源列表的GET请求中,方法信息是GET,作用域信息是URI种包含的对设备资源的过...
发布了文章2020-11-05
今天呢,和大家聊一下ThreadLocal。1. 是什么?JDK1.2提供的的一个线程绑定变量的类。他的思想就是:给每一个使用到这个资源的线程都克隆一份,实现了不同线程使用不同的资源,且该资源之间相互独立2. 为什么用?思考一个场景:数据库连接的时候,我们会创建一个Conn...
赞了文章2020-11-05
链表和数组是数据类型中两个重要又常用的基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决和平衡此问题于是就有了链表这种数据类型。
发布了文章2020-11-04
这篇文章的大体顺序是:从无锁-->偏向锁-->轻量级锁-->重量级锁讲解,其中会涉及到CAS,对象内存布局,缓存行等等知识点。也是满满的干货内容。其中也夹杂了个人在面试过程中出现的面试题,各位兄弟慢慢享受。
发布了文章2020-11-03
Java集合类实现原理1.Iterable接口定义了迭代集合的迭代方法 {代码...} 2. Collection接口定义了集合添加的通用方法 {代码...} 3.List接口元素被添加到集合中以后,取出的时候是按照放入顺序。List可以重复。存在下标,可以直接依靠下标取值 {代码...} 3.1 ArrayList...
发布了文章2020-10-31
兄弟们好,给大家带来一篇内存模型的水文(手动滑稽)。Begin先来看大纲1.JMM规范先来说JMM是什么?JMM(Java Memory Model):全称Java内存模型。它定义了Java虚拟机在计算机内存中的工作方式。它是一套规范,并不真实存在。它包括三个点:原子性,可见性,有序性首先...
发布了文章2020-10-31
这样的代码往往在业务中的体现是:根据用户不同的身份进行特定的处理,不过随着系统的不断扩大,会导致代码变得越来越臃肿。所以我们需要学习以下策略模式来解决这样的问题。
发布了文章2020-10-31
看到这里,有没有想到我们的序列化。在学习IO流的时候我们可以通过Serializable实现对象的序列化,这个序列化的过程就是一个备忘录的过程,通过对当前对象序列化,包含当前的状态,当需要的时候再将这个状态加载进来。