自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring系列19:SpEL详解

本文内容SpEL概念快速入门关键接口全面用法bean定义中使用SpEL概念Spring 表达式语言(简称“SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。语言语法类似于 Unified EL,但提供了额外的功能,最值得注意的是方法调用和基本的字符串模板功能。虽然 SpEL 是 Spring 产品组合中表达式评估的基础,但它不直接与 Spring 绑定,可以独立使用。表达式语言支持以下功能:字面表达式布尔和关系运算符正则表达式类表达式访问属性、数组

2022-02-22 22:15:13 25199

原创 Spring系列18:Resource接口及内置实现

本文内容Resource接口的定义Resource接口的内置实现ResourceLoader接口ResourceLoaderAware 接口Resource接口的定义Java 的标准 java.net.URL 类和各种 URL 前缀的标准处理程序不足以满足所有对低级资源的访问。 例如没有标准化的 URL 实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。 虽然可以为专门的 URL 前缀注册新的处理程序(类似于现有的前缀处理程序如 http:),但这通常相当复杂,并

2022-02-20 14:24:02 296

原创 Spring系列17:Spring事件发布详解

本文内容实现原理和标准事件编程式实现自定义事件基于注解的自定义事件通用事件实现原理和标准事件Spring中的事件发布本质上是标准的观察者设计模式。ApplicationContext 中的事件处理是通过 ApplicationEvent 类和 ApplicationListener 接口提供的。如果将实现 ApplicationListener 接口的bean部署到上下文中,则每次将 ApplicationEvent 发布到 ApplicationContext 时,该bean都会得到通知。

2022-02-17 23:45:09 2324

原创 Spring系列16:ApplicationContext扩展国际化

本文内容BeanFactory对比ApplicationContextApplicationContext的扩展能力国际化BeanFactory对比ApplicationContext简单点对比下两者的功能定位:BeanFactory 提供了管理和操作 bean 的基本功能,为 Spring的IoC 功能提供了底层基础,用于与 Spring 的其他部分以及相关的第三方框架的集成ApplicationContext 在 BeanFactory 基础上还扩展了其他接口以提供更多面向应用

2022-02-17 23:44:34 399

原创 Spring系列15:Environment抽象

本文内容Environment抽象的2个重要概念@Profile 的使用@PropertySource 的使用Environment抽象的2个重要概念Environment 接口表示当前应用程序运行环境的接口。对应用程序环境的两个关键方面进行建模:配置文件( profiles )和属性(properties)。与属性访问相关的方法通过 PropertyResolver 超接口公开。环境对象的配置必须通过 ConfigurableEnvironment 接口完成,该接口从所有 AbstractA

2022-02-17 23:35:05 313

原创 Spring系列14:IoC容器的扩展点

Spring系列14:IoC容器的扩展点回顾知识需要成体系地学习,本系列文章前后有关联,建议按照顺序阅读。上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点,没有阅读的强烈建议先阅读。本篇来详细讲讲容器提供的扩展点,完整的生命周期图镇楼。本文内容详解BeanPostProcessor详解BeanFactoryPostProcessor详解FactoryBean详解BeanPostProcessor作用和定义常规 BeanPostProcessor 的作用是提供自定义的

2022-02-16 23:34:37 383

原创 Spring系列12: `@Value` `@Resource` `@PostConstruct` `@PreDestroy` 详解

本文内容@Resource实现依赖注入@Value详细使用@PostConstruct @PreDestroy的使用@Resource实现依赖注入前面章节介绍了使用@Autowired注入依赖的详细用法,感兴趣的可以翻看前面的文章。Spring 还支持通过在字段或 bean 的Setter方法上使用 JSR-250 @Resource 注解进行注入。@Target({TYPE, FIELD, METHOD})@Retention(RUNTIME)public @interface Res

2022-02-15 21:42:18 275

原创 Spring系列11:@ComponentScan批量注册bean

回顾在前面的章节,我们介绍了@Comfiguration和@Bean结合AnnotationConfigApplicationContext零xml配置文件使用Spring容器的方式,也介绍了通过<context:component-scan base-package="org.example"/>扫描包路径下的bean的方式。如果忘了可以看下前面几篇。这篇我们来结合这2种方式来理解@ComponentScan本文内容@ComponentScan基本原理和使用@C

2022-02-14 23:47:09 338

原创 Spring系列5:各种属性值依赖注入

回顾上一篇我们介绍Spring中2种依赖注入的方式:构造函数注入,主要的标签是<constructor-arg/>Setter方法注入,主要的标签是<property/>那么问题来了,普通类型的依赖怎么注入,集合依赖怎么注入,null怎么注入?本篇全面了解下。本文内容普通类型和字符串注入引用类型的注入集合的注入内部bean注入null和空字符串注入复合属性注入普通类型和字符串注入基本类型和字符串,通过value元素直接指定值。上案例,对照类和配置。

2022-01-25 22:37:44 348

原创 Spring系列3:bean实例化的方式知多少

本文内容通过构造函数实例化bean通过静态工厂方法实例化bean通过实例工厂方法实例化bean通过构造函数实例化beanSpring中可以通过空构造函数或是默认构造函数来实例bean,直接上案例。定义一个简单类package com.crab.spring.ioc.demo01;/** * @author zfd * @version v1.0 * @date 2022/1/13 12:05 * @关于我 请关注公众号 螃蟹的Java笔记 获取更多技术系列 */public

2022-01-15 23:31:41 256

原创 Spring系列2:Spring容器基本概念和使用

本文内容简单回顾IoC和DI概念Spring容器的概念的xml配置和初始化容器的基本使用bean的定义和初始化配置简单理解IoC和DI概念什么是IoC控制反转?通俗地但不严谨地讲,以前传统方式都是应用程序需要一个对象,直接通过new的方式来生成,该对象的管理也是由当前程序自己控制。现在有一个容器,负责将应用程序需要的所有对象都new好了,对象都统一由这个容器管理,应用程序需要对象的时候直接找容器要,应用程序说我不关系对象是怎么来的反正你给我就行。这样和以前的方式不一样了,以前是应用程序自

2022-01-15 23:27:19 548

原创 Spring源码系列【3】启动细节解析占位符

上一篇Spring源码系列-2-整体debug,我们整体过了一遍Spring的启动过程,这篇我们来看一下Spring启动的部分细节解析Spring配置文件${}占位符细节调试样例我们启动类中传递的配置文件名和上一篇样例不同,带了占位符的名称spring-${username}.xml,同时我们存在一个配置文件spring-dell.xml。// 启动类public static void main(String[] args) { ApplicationContext context =

2021-05-28 17:19:18 236

原创 Spring源码系列-2-整体debug

上一篇我们整体概述Spring的源码,这一篇我们来整体debug过一遍Spring的源码。Spring源码前置知识Java基础,反射、代理等熟练使用Spring熟悉常见的设计模式,包括但不限于工厂、代理、适配、观察者模式、责任链等熟悉常见的数据结构懂多线程与JVM更好如何读源码优先把握整体脉络,不要太专注细节,先整体后部分必看注释(类、接口、方法)学会见名知意,源码的类、方法命名比较规范大胆猜测,小心验证必须画图,时序图、结构图、总结图坚持!坚持!坚持!搭建源码调试环境

2021-05-27 14:35:13 380

原创 Spring 源码概述

Spring 源码概述Spring源码相关的面试题谈一下spring IOC的底层实现?Spring的AOP的底层实现原理?Spring设计架构推导一个简单的sprin例子创建bean类public class Student { private int id; private String name; private static String gender = "男"; // 省略getter/setter} Spring配

2021-05-26 10:33:28 223 2

原创 JVM系列【6】GC与调优6-常用参数汇总

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优GC常用参数-Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间-XX:+UseTLAB 使用TLAB,默认打开-XX:+PrintTLAB 打印TLAB的使用情况-XX:TLABSize 设置TLAB大小-XX:+DisableExplictGC 禁止代码中显示调用GC-XX:+PrintGC 打印GC情况-XX:+PrintG

2020-10-18 21:17:21 149

原创 JVM系列【6】GC与调优5-日志分析

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优主要内容分析PS、CMS、G1的回收日志,目标使大概能读懂GC日志。测试程序java的版本是1.8,测试思路是用死循环中不停分配1M大小的数组 ,这样在启动时候指定较小的您内存空间,很快就会产生GC。import java.util.LinkedList;import java.util.List;public class HelloGC { publi

2020-10-18 20:31:08 157

原创 JVM系列【6】GC与调优4

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优主要内容上一篇 JVM系列【6】GC与调优3 记录JVM调优的概念和分析案例。这篇主要讲G1垃圾回收器、三色标记算法。G1垃圾回收器概念G1(Garbage First)是服务端使用的垃圾回收器,用于多核、大内存的机器上,在大多数情况下可以实现指定的GC停顿时间,同时还保持较高的吞吐量。不同于之前的分代垃圾回收器,G1是逻辑上分代,物理上不分代。内存分为一个一个

2020-10-17 20:46:51 107

原创 JVM系列【6】GC与调优3

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优调优前的基础概念吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)响应时间:STW越短,响应时间越好所谓调优,首先确定,追求啥?吞吐量优先,还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量。如科学计算、数据挖掘:吞吐量优先;网站、GU、 API 等追求响应时间。什么是调优根据需求进行JVM规划和预调优优化JVM运行环境(慢

2020-10-17 19:45:16 286 1

原创 JVM系列【6】GC与调优2.md

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优了解HotSpot常用命令行参数JVM的命令行参数参考: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html-标准 所有版本支持-X 非标准 特定版本支持-XX 不稳定 下个版本可能会取消常见和本文中可能用到的参数记录一下,具体垃圾回收器的参数后续调优的详细说明。参数

2020-10-17 18:41:00 149

原创 JVM系列【6】GC与调优1

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优GC基础知识什么是垃圾​ 没有任何引用指向的一个对象或多个对象(循环引用)如何找到垃圾引用计数(ReferenceCount),缺点:无法解决循环引用根可达算法(RootSearching),从根开始查找,找到对象是有用的,找不到的对象为垃圾。什么是根? 注意结合上一篇博客 JVM系列【5】JVM常用指令-运行时数据区进行理解。

2020-10-15 16:13:23 168

原创 JVM系列【2】Class文件结构

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优如何查看class字节码文件在idea中可以通过插件BinEd来查看二进制或十六进制文件。展示一个简单类的class文件源字节码,看不懂?请往下看。更直观一点的可以在idea中安装插件jclasslib,选中类文件->View-> Show Bytecode With jclasslib。该插件清楚地看到.class文件的各个组成部分。另外一种方式,通过

2020-10-15 10:18:51 136

原创 JVM系列【5】JVM常用指令

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优指令集分类 基于寄存器的指令集基于栈的指令集 Hotspot中的Local Variable Table相当于JVM的寄存器运行时数据区运行时数据区分6个部分: PC、JVM Stack、Heap、MethodArea、Native Method Stack、Direct Memory。 PC: 程序计数器,存放下一条指令的位置。JVM St.

2020-10-12 23:23:55 316

原创 JVM系列【4】内存模型

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优硬件层数据一致性- 存储器层次结构从L6-L0 空间由大变小,速度由慢到快。-缓存一致性算法CPU实现缓存一致性的协议很多,其中intel 使用的MESI(Modified Exclusive Shared Or Invalid)协议。具体可以参考:[MESI–CPU缓存一致性协议](https://www.cnblogs.com/z00377750/p/91806

2020-10-11 01:44:42 352

原创 JVM系列【3】Class文件加载过程

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优Class文件加载过程JVM加载Class文件主要分3个过程:Loading 、Linking、Initialzing1.LoadingLoading的过程就是通过类加载器将.class文件加载到jvm内存中过程。需要理解双亲委派机制、类加载器ClassLoader,加载过程如下。ClassLoader 不同的类加载器加载范围不一样,以Java8中的为例。B

2020-10-10 18:00:09 581

原创 JVM系列【1】虚拟机基础概念

JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优虚拟机的基础概念1.Java从编码到执行过程一个Java源文件如Hello.java通过编译命令javac编译成class文件Hello.class,在JVM中ClassLoader加载该class文件到JVM内存中,执行时候通过字节码解释器或是即时编译器解释后,交给执行引擎,执行引擎与OS硬件交互去完成执行。 2.JVM与class文件JVM与java语言无关?是

2020-10-09 15:55:24 158

原创 Java后端学习笔记汇总

Java后端学习笔记汇总设计模式多线程与高并发从网络到分布式从网络到分布式rediszookeeper本文由博客群发一文多发等运营工具平台 OpenWrite 发布

2020-05-14 13:43:34 892

空空如也

空空如也

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

TA关注的人

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