随笔分类 - Java
摘要:Spring容器系列-启动原理(下) 从上一篇文章《Spring容器系列-启动原理(上)》中,介绍了Spring容器初始化的核心方法refresh()的整体情况。这篇文章来详细展开介绍。其中比较重要的方法会标记上*** 一、refresh中的12个方法 1. prepareRefresh 主要作用:
阅读全文
摘要:Spring容器系列-启动原理 Spring 具有非常庞大的体系,但无论多大都是由一个个小的模块组合而来,不管是 SpringMVC 还是 SpringBoot,都是在Spring的基础上延伸而来,因此,看源码要找对方向。 我们知道,在SpringBoot之前,对象的管理和配置都是通过XML的方式来
阅读全文
摘要:Spring基础 - Spring核心之控制反转(IOC) 概要 我们知道,Spring提供的容器又称为IoC容器。其实,IoC(Inversion of control )不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这
阅读全文
摘要:静态代理和动态代理 一、什么是代理模式? 代理模式(Proxy Pattern)给某一个对象提供一个代理,并由代理对象控制原对象的引用。代理对象在客户端和目标对象之间起到中介作用。 代理模式可以分为静态代理和动态代理两种类型,而动态代理中又分为JDK动态代理和CGLIB代理两种。 如下图: 二、静态
阅读全文
摘要:Java开发Spring常见注解 前言 Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率。 下面按照分类讲解Spring中常用的一些注解。 一、声明bean的注解 1. @Component 一个通用的注解,用于标识任何 Spring 组件。标注Spring管
阅读全文
摘要:操作系统线程和Java线程的状态 一、操作系统线程的状态 操作系统的线程主要有以下三个状态 1. 就绪状态(ready):线程正在等待使用 CPU,经调度程序调用之后进入 running 状态。 2. 执行状态(running):线程正在使用 CPU。 3. 等待状态(waiting): 线程经过等
阅读全文
摘要:volatile关键字 概要 volatile修饰符并不是Java语言的首创,早在C和C++当中就已经存在。为了理解volatile关键字的作用和原理,需要先了解一些相关知识。请先参考这一篇文章《什么是Java内存模型(JMM)?》 我们知道,并发编程时,线程安全涉及三个特性:原子性、可见性、有序性
阅读全文
摘要:什么是Java内存模型(JMM)? 概要 Java内存模型(JMM)是Java虚拟机并发知识中很重要的一部分,为了更好的理解它。我们先花费一点时间去了解物理计算机中的并发问题。物理机遇到的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对虚拟机的实现也有相当大的参考意义。 一、硬件内存
阅读全文
摘要:java线程池 一、线程池的7个核心参数 1. corePoolSize 核心线程数 corePoolSize 是线程池中保持活动状态的最小线程数。 即使线程是空闲的,它们也会一直保持在池中。 当有新任务提交时,线程池会优先创建核心线程来处理任务。 2. maximumPoolSize 最大线程数
阅读全文
摘要:配置动态刷新@RefreshScope引起的取值为null 在Spring Cloud Config 动态刷新demo编写中,分为三个步骤: 1)git端配置更改,代码提交 2)手动刷新配置: POST请求: http://localhost:3355/actuator/refresh 3)客户端访
阅读全文
摘要:Java并发编程之CAS原理分析 背景 在高并发场景下,多线程访问共享资源经常会引发并发安全问题,如竞态条件(Race Condition)。JDK5之前通常使用 synchronized 或 Lock 实现同步,但这些互斥锁较为重量级,会带来性能损耗。 对于某些场景,可以利用 JUC 提供的 CA
阅读全文
摘要:ConcurrentHashMap的介绍 概要 在前面的文章《散列表》中,我们对HashMap进行了介绍。但是,在并发环境下,HashMap 存在线程安全问题,可通过 HashTable 或者 Collections.synchronizedMap 解决,但它们会对整个集合加锁,影响性能。为了兼顾线
阅读全文
摘要:散列表 概要 散列表也叫哈希表(hash table),是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作。 散列表在本质上也是一个数组,可以根据下标,进行元素的随机访问。 下面这个table就是散列表: 一、散列表的一些基本概念 1. 哈希函数 散列
阅读全文
摘要:java Object类 概要 java.lang.Object类是Java当中所有类的基类,即所有类的父类,它里面描述的所有方法,子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 Object包含了9大常用方法: clone()、getClass()、finalize()、toS
阅读全文
摘要:java字节码指令 概要 众所周知,Java 字节码是跨平台的,因此 Java 才能一次编译,处处运行。 关于JVM和字节码: 1. JVM: JVM(Java Virtual Machine,Java虚拟机)是Java程序运行的虚拟计算机。它是Java平台的一部分,负责解释和执行Java字节码,并
阅读全文
摘要:垃圾回收原理和算法 内存管理Java的内存管理很大程度就是:堆中对象的管理,其中包括对象空间的分配和释放对象空间的分配:使用new关键字创建对象即可对象空间的释放:将对象赋值null即可 垃圾回收过程:任何一种垃圾回收算法一般要做两件基本事情:1. 发现无用的对象2. 回收无用对象占用的内存空间垃圾
阅读全文
摘要:垃圾回收算法-通用的分代垃圾回收机制 概要 分代垃圾回收机制是基于这样一个事实:不同对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的回收算法,以便提高回收效率。因此,分代垃圾回收机制是一种基于对象生命周期的假设对堆内存进行划分的回收策略。 一、判断对象是否可回收 首先思考一个问题,内
阅读全文
摘要:Java内存区域 前言 Java内存区域是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫运行时数据区域。 一、Java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区
阅读全文
摘要:java-打包编译常用命令 1. maven预编译(打包检查异常) 在上到测试环境或者生产环境之前,先在本地打包检查异常: mvn clean install -Dmaven.test.skip=true -X 2. maven打包 一般用IDEA上的maven工具按钮: 如果打包失败则可以用下面的
阅读全文
摘要:Java集合操作:可变集合和不可变集合 问题产生:java.lang.UnsupportedOperationException 问题定位:在通过mybatisPlus获取分页列表的时候写了下面这段代码 1 //分页获取列表 2 PageResult<InsuranceBeneficiaryDO>
阅读全文

浙公网安备 33010602011771号