自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 浅谈JVM - 内存结构(六)- 方法区

注:本文虽然讨论的是方法区,但是为了解答某些问题也涉及到了Class文件结构和类加载的相关知识java7及以前,方法区的实现是永久代,java8以后,方法区的实现是元空间6.1 定义方法区是java虚拟机规范中定义的一种概念上的区域,不同的厂商可以对虚拟机进行不同的实现。 方法区与堆有很多共性:线程共享、内存不连续、可扩展、可垃圾回收,同样当无法再扩展时会抛出OutOfMem...

2020-01-15 09:26:46 339

原创 浅谈线程池 - (一)Java并发包中的线程池

本文主要对线程池做初步的介绍以及讲解一些常用的线程池介绍线程池主要解决两个问题当执行大量异步任务时线程池能够提供较好的性能,在不使用线程池时,每当需要执行异步任务时直接new一个线程来执行,而线程的创建和销毁是需要开销的。线程池中的线程是可复用的,不需要执行异步任务时都需要重新创建和销毁线程。 线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。每个Th...

2020-01-06 14:27:48 156

原创 Arthas实践 - 如何快速排查线上问题

此处不再赘述Arthas的安装,直接上使用技巧官网地址:https://alibaba.github.io/arthas/1. 查看线程信息thread查看当前线程信息,查看线程的堆栈参数说明参数名称 参数说明 id 线程id [n:] 指定最忙的前N个线程并打印堆栈 [b] 找出当前阻塞其他线程的线程 [i <val...

2020-01-02 17:54:35 5503 1

原创 浅谈JVM - 内存结构(五)- 堆

5.1 定义Heap 堆 通过new关键字,创建对象都会使用堆内存 线程共享的,堆中对象都需要考虑线程安全的问题 有垃圾回收机制 Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最大的一块,也被称为 “GC堆”,是被所有线程共享的一块内存区域,在虚拟机启动时被创建。 唯一目的就是储存对象实例和数组(JDK7 已把字符串常量池和类...

2019-12-31 11:27:19 277

原创 浅谈JVM - 内存结构(四)- 本地方法栈

本地方法栈(Native Method Stacks)与 Java 虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的 Native 方法服务。虚拟机规范中对本地方法栈中的方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。public native int hashCode(...

2019-12-30 19:15:30 199 1

原创 异步编程之美

在大学毕业后的工作期间,从最开始的编写同步代码,到慢慢为了提高系统性能,把一些任务使用异步的方式来处理,从而提高系统的响应时间,那么就会产生一些新的问题,如何监控在异步线程执行的任务的执行状态,是否出现了错误,出现了错误怎么处理,系统创建大量线程又该如何统一管理,这些种种问题都让使我意识到深入了解异步编程的必要性。 同步的代码, 在很多情况下, CPU其实是在等待中度过的...

2019-12-30 18:10:17 237

原创 浅谈JVM - 内存结构(三)- 虚拟机栈

2.1 定义Java Virtual Machine Stacks(Java虚拟机栈) Java 虚拟机栈描述的是 Java 方法执行的内存模型,用于存储栈帧,是线程私有的,生命周期随着线程启动而产生,线程结束而消亡 线程启动时会创建虚拟机栈,每个方法在执行时会在虚拟机栈中创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态连接、方法返回地址等信息。每个方...

2019-12-27 09:32:02 630

原创 浅谈JVM - 内存结构(二)- 程序计数器

1.1 定义Program Counter Register 程序计数器(寄存器) 定义:当前线程所执行的字节码的行号指示器,记住下一条执行JVM指令的地址 特点 线程私有的 多个线程运行同一套代码时,CPU会有一个调度器组件为不同线程分配时间片,在时间片内线程未执行完成就会将运行状态暂存,再切换到其他线程执行,如此循环执行。而程序计数器就是线程运行状态暂存的区...

2019-12-25 17:19:14 180

原创 浅谈JVM - 内存结构(一)- java7 到 java8 内存结构的变化

回顾java程序执行流程如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的J...

2019-12-20 18:05:42 843 2

原创 深入理解Java虚拟机(第三版)书评

作为一个大学毕业一年多的程序员,却已经为面试奔波了几十次,而不例外的是,每次都会问统一类问题,那就是JVM的相关知识,那时候就想为什么一个初级程序员都需要考这么复杂的问题,自己也尝试过去阅读JVM相关知识,可第一次阅读,觉得枯燥,根本看不下去,换了好几本书都看不懂,刚好又新出了深入理解Java虚拟机第三版,整本书从入门到复杂,慢慢带领我走入JVM的世界。 Java虚拟...

2019-12-18 14:08:02 1769 1

原创 SpringBoot集成log4jdbc定制sql输出

参考资料log4jdbc数据库访问日志框架使用(开源中国)https://my.oschina.net/cloudcoder/blog/420510log4jdbc使用介绍https://blog.csdn.net/u013409283/article/details/79219858LogBack 实例https://my.oschina.net/u/943316/bl...

2019-12-18 09:09:58 433

原创 浅谈JVM - 引言

什么是JVM 定义 Java Virtual Machine - java程序的运行容器(java二进制字节码的运行容器) 好处 一次编写,到处运行 当我们编写Java代码时,JVM为我们屏蔽了二进制字节码与底层操作系统的差异,采用解释的方式来运行二进制字节码,使得这份java代码可以在不同的操作系统运行,实现代码的平台无关性。 自动内存管理,垃...

2019-12-18 09:04:29 198

原创 全局异常处理及自定义异常:ErrorController与@ControllerAdvice区别和用法

参考资料springboot继承AbstractErrorController实现全局的异常处理 https://blog.csdn.net/qq_29684305/article/details/82286469 spring boot 原生错误处理ErrorController https://blog.csdn.net/shenyunsese/article/details...

2019-03-15 12:19:45 17363 6

小马哥 Spring Boot 2.0深度实践之核心技术篇

如有侵权,请联系本人删除 1-1 -课程导学1-2 为什么说Spring Boot 2.0 易学难精?1-3 开场白:系列总览1-4 核心特性介绍1-5 核心特性之组件自动装配工程部分1-6 Web应用介绍1-7 传统 Servelt 应用1-8 异步非阻塞 Servlet 代码示例1-9 Spring Web MVC 应用介绍1-10 Spring WebFlux 应用1-11 Web Server 应用1-12 数据相关介绍1-13 功能扩展介绍1-14 运维管理介绍第2章 走向自动装配完整地讲述了 Spring Boot 是如何从 Spring Framework 逐渐走向组件自动装配的。根据 Spring Framework发展的脉络,首先介绍 “Spring 模式注解装配”,随后讲解 “Spring @Enable 模块装配”,最后讨论 “Spring 条件装配“,掌握 Spring Framework 中所提供的原生能力,并且理解 Spring Boot 是如何...2-1 走向自动装配2-2 Spring Framework 手动装配2-3 Spring Framework手动装配自定义模式注解2-4 @Enable 模块装配两种方式2-5 Spring条件装配2-6 基于配置方式实现自定义条件装配2-7 基于编程方式实现条件装配2-8 Spring Boot 自动装配2-9 自定义自动装配2-10 走向自动装配总结第3章 理解 SpringApplication本节首先简介 SpringApplication 基本使用方法,并且根据其在 Spring Boot 应用所处的执行阶段,分别讨论 SpringApplication 准备阶段以及 SpringApplication 运行阶段。理解 Spring Boot Bean 配置源的作用、Web 应用类型推断对 Spring 应用上下文类型的作用,以及 Spring Boot 事件/事件机制。...3-1 理解 SpringApplication3-2 基础技术和衍生技术3-3 合并工程3-4 SpringApplication 准备阶段3-5 配置 Spring Boot Bean 源码部分3-6 推断 Web 应用类型3-7 推断引导类3-8 加载应用上下文初始器3-9 加载应用事件监听器3-10 SpringApplication 运行阶段3-11 SpringApplication 运行监听器事件监听器编程模型3-12 SpringApplication 运行监听器3-13 监听 Spring Boot 事件3-14 创建 Spring 应用上下文3-15 理解SpringApplication总结第4章 Web MVC 核心通过 J2EE 前端控制器(Front Controller)模式的介绍,理解 Spring Web MVC 架构设计的思想,随后回顾Spring Web MVC 在传统 Servlet 容器中 XML 文件配置和 WAR 文件部署场景,以便重新认识 Spring Web MVC核心组件以及它们的交互流程,包括 Web MVC 注解驱动能力以及自动装配的能力,从而更好地理解...4-1 Web MVC 核心 - 开场白4-2 理解 Spring Web MVC 架构4-3 Spring Framework 时代的一般认识4-4 Spring Framework 时代的重新认识4-5 核心组件流程说明4-6 Web MVC 注解驱动4-7 Web MVC 模块组件说明4-8 WebMvcConfigurer 注入过程4-9 Web MVC 常用注解(上)4-10 Web MVC 常用注解(下)4-11 Web MVC 自动装配4-12 Web MVC 自动装配实现4-13 Spring Boot 时代的简化4-14 完全自动装配4-15 条件装配4-16 外部化配置4-17 简Spring Boot 时代的简化 - 课纲部分4-18 重构 Spring Web MVC 项目4-19 -1 Web MVC 核心总结第5章 Web MVC 视图应用本章最为核心的议题为“视图内容协商”,掌握内容协商策略的配置手段,理解它们与视图处理器的内在联系,从而深入理解Spring Web MVC 视图处理的核心原理,由此理解 Spring Boot 是如何自动装配视图处理器和内容协商管理器,以及怎么通过外部化配置控制它们的行为。同时介绍新一代服务端模板引擎 Thymeleaf,内容包...5-1 Web MVC 视图应用5-2 新一代服务端模板引擎Thymeleaf语法和核心要素5-3 Thymeleaf 示例5-4 ThymeleafViewResolver和多ViewResolver处理流程5-5 ThymeleafViewResolver 示例5-6 整合InternalResourceViewResolver示例5-7 修复 Maven 多模块 JSP 定位问题 示例5-8 视图内容协商5-9 视图内容协商代码分析5-10 ViewResolver 冲突说明部分5-11 ViewResolver 内容协商原理5-12 Web MVC 视图应用总结new第6章 Web MVC REST 应用首先讨论 REST 基本理论,并介绍 Spring Web MVC 对 REST 全面支持,包括 REST 控制定义、注解映射、请求、响应、AOP 拦截以及跨域控制(如:@CrossOrigin)等。随后重点讨论并结合源码分析 REST 内容协商的原理,理解内容协商管理.以及了解 Spring Web MVC REST 内容协商处理流程。...6-1 Web MVC REST应用和REST介绍6-2 Web MVC REST 支持6-3 REST 内容协商6-4 Web MVC REST 处理流程6-5 Web MVC REST 处理流程源码分析6-6 Web MVC REST 内容协商处理流程6-7 Web MVC REST 内容协商处理流程源码分析6-8 理解媒体类型6-9 理解媒体类型源码分析6-10 扩展 REST 内容协商-反序列化部分6-11 扩展 REST 内容协商-序列化部分6-12 自定义 Resolver 实现6-13 自定义 Handler 实现6-14 REST 内容协商CORS6-15 Web MVC REST应用总结第7章 渐行渐远的 Servlet讨论的议题主要围绕着 Spring Boot 2.0 怎么让 Servlet 渐行渐远,首先需要了解的是 Servlet 的使用场景,以及各版本 Servlet 规范所覆盖的功能特性,其中包括 Spring Boot 所支持 Servlet 3.1+ 规范。通过 Servlet 生命周期的讨论,加深 Spring Web MVC DispatcherServlet 以及其他 Filter 组件...7-1 渐行渐远的Servlet7-2 Servlet 核心 API7-3 Servlet 版本7-4 Servlet 注册7-5 理解 Servlet 组件生命周期7-6 Servlet 异步支持7-7 DeferredResult 增加线程信息7-8 DeferredResult 设置 timeout 以及处理回调7-9 DeferredResult 异步执行7-10 Callable 异步执行7-11 CompletionStage 异步执行7-12 MVC 异步支持原理分析7-13 异步 Servlet 实现7-14 DefferedResult 实现原理7-15 Spring Boot 嵌入式 Servlet 容器限制7-16 Spring Boot 嵌入式 Servlet 容器限制 原理分析7-17 Spring Boot 应用传统 Servlet 容器部署7-18 扩展 SpringBootServletInitializer7-19 构建应用7-20 渐行渐远的Servlet总结第8章 从 Reactive 到 WebFlux帮助大家理解 Reactive 的本质。通过 Reactive 六种不同定义、编程模型、以及设计模式,理解它的使用场景,并延伸介绍 Reactive Streams 规范和它的实现框架 Reactor。在理论和实践的结合下,使我们清醒地认识到 Reactive 并非新鲜事物,而是一种新型的编程模型,它即不局限于其实现框架,也并非解决问题的“银弹...8-1 从 Reactive 到 WebFlux8-2 关于 Reactive 的一些说法8-3 理解阻塞的弊端和并行的复杂8-4 Reactor 认为异步不一定能够救赎8-5 理解 Callback Hell8-6 理解 Future 阻塞问题8-7 理解 Future 链式问题8-8 Reactive Streams JVM 认为异步系统和资源消费需要特殊处理8-9 Reactive Programming 定义8-10 Reactive Manifesto 定义8-11 维基百科8-12 Spring Framework 定义8-13 ReactiveX 定义8-14 Reactor 定义8-15 andrestaltz 定义8-16 Reactive Programming 特性:编程模型8-17 Reactive Programming 特性:数据结构8-18 Reactive Programming 特性:并发模型8-19 Reactive Programming 使用场景8-20 Reactive Streams 规范:定义8-21 Reactive Streams 规范:API和事件8-22 Reactive Streams 规范:背压8-23 Reactor 框架运用 - 核心 API8-24 Reactor 框架运用实战(上)8-25 Reactor 框架运用实战(下)8-26 走向 Spring WebFlux8-27 从 Reactive 到 WebFlux - 课堂总结第9章 WebFlux 核心继续讨论 WebFlux 的使用场景、编程模型以及核心接口。其中,使用场景部分将介绍 Spring WebFlux 的引入动机,对比 Spring MVC 的适用性边界、执行性能以及并发模型。讨论的焦点集中在编程模型,Spring WebFlux 提供函数式 Endpoint的支持,进而提升请求处理和映射的编程弹性。最后,通过对比 Spring MVC 核...9-1 WebFlux 核心9-2 官方引入WebFlux的动机分析9-3 回顾Reactive9-4 编程模型:注解驱动9-5 Java 函数编程基础9-6 编程模型:函数式端点 - Functional Endpoints9-7 WebFlux 核心 - 并发模型9-8 WebFlux 核心 - 核心组件9-9 WebFlux 核心处理流程 - 函数式端点组件请求处理流程9-10 WebFlux 核心处理流程 - 注解驱动组件请求处理流程9-11 WebFlux 核心 - 使用场景9-12 WebFlux 核心 - 课堂总结9-13 WebFlux 核心 - 课程彩蛋第10章 超越外部化配置首先讨论的议题为 Spring Environment 抽象,它作为 Spring Framework 以及 Spring Boot,甚至是Spring Cloud 的配置核心 API。结合SpringApplication 生命周期和 Spring Boot 事件分析,宏观地把握 Spring Boot 多种配置源的使用场景,理解它们之间优先级顺序逻辑,进而为扩展 Spring Boot 外部化配...10-1 开场白部分10-2 理解和应用“外部化配置”10-3 PropertySource 顺序说明10-4 用于 XML Bean 定义的属性占位符10-5 应用“外部化配置”- 用于 @Value 注入10-6 用于 Environment 读取10-7 用于 Environment 读取 - 源码分析10-8 用于 @ConfigurationProperties Bean 绑定(上)10-9 用于 @ConfigurationProperties Bean 绑定(下)10-10 用于 @ConditionalOnProperty 判断10-11 扩展“外部化配置”10-12 理解 Spring Boot Environment 生命周期10-13 定位外部化配置属性源10-14 基于 SpringApplicationRunListener.environmentPrepared10-15 基于 ApplicationEnvironmentPreparedEvent10-16 基于 EnvironmentPostProcessor10-17 基于 ApplicationContextInitializer10-18 扩展外部化配置属性源其他扩展点10-19 扩展“外部化配置”

2019-07-11

spring源码深度解析 第二版 pdf

spring源码深度解析 第二版 pdf 高清 网上找了挺久,很多都是不完整的版本,这个是完整带书签的版本,看着挺清晰的,感兴趣的可以下载下来一起研究研究^_^

2019-03-15

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

TA关注的人

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