自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记——springboot系列_自动装配

前言所谓spring boot框架,归根结底就是一个bean工厂,将资源类通过一系列的操作装配成各种各样的bean来方便功能的实现。本文想要讲诉清楚的便是一系列的操作过程的逻辑和实现。就当前的层次来说,可以理解为,无非还是Java虚拟机加载目标class文件,通过封装以后作为资源注册到beanFactory。通过注解的方式来确定目标class文件springboot框架说白了就是,封装了spring框架繁杂的配置文件内容,用注解的形式来达到相同的目的。主要分为三种类型的注解:第一种为@compo

2020-12-01 17:27:26 143 1

原创 Java锁理解-synchronized和lock

Java 锁基础

2023-02-26 16:46:27 250

原创 JavaThread:Java线程在虚拟机的实现

Java线程对象的jvm实现

2023-02-04 04:15:41 192

原创 jvm常用查询指令

jvm 常用指令

2023-02-04 02:25:59 2055

原创 jvm是怎么实现Java方法和native方法的连接

Java通过JNI接口调用Java native方法后,将结果反馈给Java方法的过程

2023-01-30 04:13:09 389

原创 Java 策略模式+工厂方法模式搭配思想

策略+工厂方法模式的实现思想

2022-05-25 19:27:39 1160

原创 Java-对象头详解

引言这里只介绍64位虚拟机的对象头的结构和内容,主要是分为以下四种状态介绍,无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。对象头的基本结构如下图所示对象的结构和内容我这里就暂且不提了,本章主要讲述的对象头的内容。对象头分为三个部分:一、Mark Word部分,从名字就能知道它是一个记录和描述对象的部分。这也是我接下来主要讲解的部分,因为其他的内容,基本没有多大的变化情况。占八字节内存。二、类型指针部分,也叫元数据指针什么的,主要是存储元数据的地址,对于对象的类型信息,指向方法区的类信息部

2021-01-11 14:48:47 1720

原创 Java——String类详解

引言这里主要从虚拟机层面完整的讲解一下String类的对象存储位置。以及看似相同的String类的对象的比较。在此,针对一个对象的初始化的过程,我就不细讲了,其实可以参考我的另外一篇博客,虽然没有讲得很细,但是大体的逻辑过程是没有问题,待以后有时间再去细化和完善。随便提一下,在jdk1.6及以下版本,字符串常量池是放在方法区的运行时常量池中的,静态变量也是存储于方法区的,但是在jdk1.7及以上版本,字符串常量池和静态变量被放入了Java堆内存区域中,所以,我以下的讲解中,会两种版本对比着讲解。我会尽可能

2021-01-03 00:29:29 182

原创 学习笔记——CMS收集器

CSM收集器CSM收集器是一种以获取最短回收停顿时间为目标的收集器。很大一部分应用都会很关注服务的响应速度,以给用户带来良好的交互体验。CMS收集器就非常符合这类应用的需求。CMS(mark-sweep)从名字上就可以看出它是基于标记——清除算法实现的,整个过程分为以下四个步骤。一、初始标记(CMS init mark)二、并发标记(CMS concurrent mark)三、重新标记(CMS remark)四、并发清除(CMS concurrent sweep)初始标记和重新标记阶段需要ST

2020-12-15 12:33:08 391

原创 学习笔记——Parallel Scavenge和Parallel Old

前言本章节是以读书笔记的目的来创作的,随时补充和更新,待学习比较深入以后,会后续补充作者自己的理解和思考总结Parallel Scavenge收集器Parallel Scavenge收集器也是一款新生代收集器,基于标记-复制算法实现的收集器,也是能够并行收集的多线程收集器。其目标为达到一个可控制的吞吐量,所谓吞吐量,程序实际运行时间比上总时间,总时间为程序实际运行时间加上GC时间,所以,吞吐量越接近于一,说明实际效果越好。因为停顿时间越短就越合适需要与用户交互或需要保证服务响应质量的程序,良好的响应速

2020-12-11 14:47:11 1185

原创 学习笔记——Redis持久化和主从复制

前言本文是通过各种杂七杂八的渠道整理的相关知识,都是说明性知识点,暂时没有作者自己太多的思考和简要升华。Redis持久化机制Redis持久化机制分为两种,rdb持久化和aof持久化。rdb持久化方式,在一定时间间隔内对数据库内数据集生成快照,写入磁盘,所谓快照方式,你可以理解为,要生成当前数据集的写命令集合生成到文件。然后操作系统安装这些写命令向磁盘写入数据。默认文件为dump.rdb。aof持久化方式,redis会将每一个收到的写命令通过write函数追加到文件。然后操作系统安装这些写命令向磁盘

2020-12-10 10:22:53 73

原创 学习笔记——spring循环依赖

前言主要讲诉的解决spring循环依赖的逻辑和思想,并不打算从springboot具体的代码实现角度,以后研究整理过后再尝试补充。什么是spring的循环依赖首先申明两个bean的资源类,BeanA和BeanB,所谓spring的循环依赖就是,BeanA类里有一个字段属性是自动装配的BeanB,同样BeanB类的一个字段属性是自动装配的BeanA。这样在spring对bean初始化管理的时候,就会造成循环依赖现象。这里先补充一下bean的初始化的一个过程,这里的过程省略掉很多细节,只是简单的抽象说明

2020-12-07 17:24:21 79

原创 随笔——RequestContextHolder

前言随笔只记录零散的知识点,都是一些个人认为比较细节的一些知识。等到有很多相关的知识点或者要介绍一个比较整体的知识面的时候,再整理和详解。RequestContextHolder的作用通过RequestContextHolder的静态方法可以随时随地取到当前请求的request对象,下图为该类的主要方法:通过getRequestAttributes(),可以返回一个ServletRequestAttributes对象,这是个servlet容器的描述对象,通过这个对象,就可以轻松获得请求和响应等对象

2020-12-04 11:05:41 1772

原创 读书笔记——ConcurrentHashMap的补充说明

前言之前写过一篇关于ConcurrentHashMap的原理的文章,觉得看完以后应该大致理解ConcurrentHashMap是一个什么东西,但是对于其细节的部分,觉得读者自己去看看也比较好理解,就没去多说,现在回顾这个知识点的时候,发现细节部分有些遗忘,出于严谨和增加自己的记忆,觉得有必要再写一遍文章来说明Concurrent的细节部分。ConcurrentHashMapdd...

2020-11-30 16:12:23 108

原创 基础知识笔记——OOP七大原则

开闭原则:对扩展开发,对修改关闭。个人认为最重要的一个原则,尽可能的不对资源类进行操作,而是对资源类的操作类进行操作。里氏替换原则:继承必须确保超类所拥有的性质在子类依然成立。也就是说,子类继承父类的时候,尽可能的去添加方法实现,想要的功能,而不是去覆盖父类的方法。否则,多继承的情况下,想想都挺糟糕的。依赖倒置原则:面向接口编程,而不是面向实现编程。单一职责原则:控制类的力度大小,将对象解耦,提高棋内聚性。也就是说,一个类的方法,最好只干一件事,尽可能的避免和其他的方法干的事有联系,降低耦合。

2020-11-30 11:25:18 110

原创 浅谈动态代理的个人思考和理解

前言这篇文章主要谈的是自己各种反复学习的过程中,目前的一个思想和认知的总结,个人也很烦把写博客当成水经验的,和水论文数量的大部分人。我的内容基本是一个东西认知的思想精华和总结,基本不含代码,因为作者在学习阶段,代码和初学者的水平高不了一个等级,市面上有关动态代理的代码很多,能读我文章的人,也默认其有一定基础,但是好像又对这个东西模模糊糊,这类读者收获应该是最大的。什么是动态代理所谓动态代理就是,把一些类似于重复的日志,时间等大量重复的代码,利用切面的思维方式,提取出来,做成一个加工包装的工具,在要使用

2020-11-04 23:33:08 134

原创 读书笔记——Java对象

前言本文探讨的是new对象时的内存分配情况,主要是书本知识的总结和提炼,不过作者的另外一篇博客提到了对new对象时初始化的总结和理解,比较适合一起看。链接:https://editor.csdn.net/md/?articleId=108236252对象的创建类加载检查通过后,虚拟机将会为新生对象分配内存,对象所需的内存在类加载完成后便可以完全确定。假设Java堆完全规整,使用过的内存和未使用的内存中间放着一个指针作为分界点的指示器,所分配的内存就仅仅时把那个指针向空闲空间方向挪动一段与对象大小相等

2020-10-22 10:21:19 125 2

原创 JVM读书笔记一Java内存区域

运行时数据区域前言:本文主要是基于书上内容的总结提取,并不包含作者的思考和理解,作者的思考和理解有单独博客。一、程序计数器线程私有,可以看作是当前线程所执行的字节码的信号指示器,记录的是正在执行的虚拟机的字节码的地址。如果正在执行的是本地方法,则计数器应该为空,此内存区域是唯一一个在Java虚拟机规范中唯一没有规定任何OutOfMemoryError情况的区域。二、Java虚拟机栈线程私有,生命周期和线程相同,是Java方法执行的内存模型,每个方法被执行的时候,Java虚拟机会同步创建一个栈帧,

2020-10-21 16:29:38 165

原创 学习笔记——初始化个人理解

对象引用this关键字:只能在方法的内部使用,表示对调用方法的对象的引用。synchronized关键字,锁的是依旧是调用方法的对象。初始化类的静态属性会在类加载过程的准备阶段初始化后有初始化值,运行时可以直接通过类.静态字段打印初始化值。此时类并没有被初始化!!**类的非静态属性运行时可以通过创建对象打印类的属性初始化的值。**基本数据类型会自动初始化为0。创建对象时,先初始化类的属性,接下来才是类的方法。初始化类的属性时先初始化静态属性,静态属性和静态代码块的属性,按程序的先后顺序执行初始

2020-08-27 11:36:55 283

原创 谈谈对类的加载以及反射原理的理解

引言本文创作的目的在于论述类加载和反射原理的大致逻辑过程。以帮助更好的去理解Java类的运行和方法的实现。类的加载Java虚拟机对类的加载用了三句话来表述。一、通过一个类的全类名来获取类对应的二进制字节码文件。二、将静态的数据结构转化为运行时数据结构。三、生成对应的Java.lang.class对象这三句话是我的理解下的主要意思。毕竟是借鉴大家从英文翻译过来的。下面来逐一解释说明每一句话。第一句话,首先明确的是,一个全类名对应着唯一的一个二进制字节码文件,所谓的二进制字节码就是按一定顺序排列

2020-08-14 11:32:05 147

原创 浅谈Executor逻辑架构和运行原理

引言内容主要介绍,这个框架的构成及运行逻辑,再细化到每一个分部的运行逻辑,不涉及代码和源码,个人觉得,介绍底层逻辑的时候,贴代码和源码来解释说明的都是对于初学者都是耍流氓。把这个东西的逻辑浅显易懂的讲明白后,别人看起源码理解起来轻松许多的同时,还各有各的感悟,这才是分析学习的良好方式。Executor架构简单来理解就是一个任务调度器,其架构分为三个部分。一、任务的产生所谓任务,就是一个实现了,Runnable接口或者Callable接口的类的对象。这两者的区别在于实现Runnable接口没有返回值

2020-08-07 15:02:52 187

原创 浅谈Java线程池的逻辑架构原理

引言本文创作于对于线程池有一些基础的了解,但镜花水月,模模糊糊不是那么了解的同行者。用通俗易懂的话语谈谈我对线程池的一个认知和了解。在此暂不介绍Executor整个并发框架结构,仅介绍线程池的数据结构一个较为完成的线程池初始化由7大参数组成。new TheadPoolExeuctor(七大参数),七大参数顺序结构排序如下,核心线程数,最大线程数,任务进入线程的等待时间,等待时间的单位(秒/毫秒/等),一个同步队列,一个默认的生产线程的工厂,和拒绝策略。七大参数详解我把整个线程池比作一个团,与众不同

2020-08-07 09:24:02 256

原创 浅谈ConcurrentMap的原理逻辑和hashMap及hashTable的对比分析

**浅谈ConcurrentMap的原理逻辑和hashMap及hashTable的对比分析**本文不想从源码去分析底层实现的原理,都能看懂源码了,也没有必要在这儿听我聊什么蛇皮。创作目的是为了用通俗易懂的语言让初学者了解这条路的大致方向,也就是其主要的逻辑结构原理,让初学者从源码角度学习分析的时候少走弯路。##ConcurrentMap的底层结构ConcurrenMapt的存储是基于数组加链表,这点和hashMap、hashTable的存储原理是一样的。简单来说就是HashEntry[]数组存储

2020-08-05 16:52:24 284

原创 数组选择排序算法

1 什么是选择排序?通俗的理解就是在数组中,选出最大值或者最小值和数组中的第一个数交换,同理,在剩余数组中再次选出最大值或最小值与第二个数交换。直至最后完成数组的升序或降序排序。2 代码块public static void main(String[] args) { int a[] = {65,25,8,1,5,86}; for(int i=0;i<a.length-1;i...

2020-03-06 16:40:35 642

空空如也

空空如也

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

TA关注的人

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