自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Orcas

Java 学习笔记

  • 博客(82)
  • 资源 (4)
  • 收藏
  • 关注

原创 字节码与类的加载——(四)再谈类的加载器

文章目录4_再谈类的加载器4.1_概述4.1.1_类加载的分类4.1.2_类加载器的必要性4.1.3_命名空间4.1.4_类加载价值的基本特征4.2_类的加载器分类4.2.1_引导类加载器4.2.2_扩展类加载器4.2.3_系统类加载器4.2.4_用户自定义类加载器4.2.5_JDK 1.9 后的类加载器4.3_测试不同的类加载器4.4_ClassLoader源码解析4.4.1_ClassLoader 的主要方法4.4.2_SecureClassLoader 与 URLClassLoader(Builtin

2020-11-26 17:15:19 603 3

原创 字节码与类的加载——(三)类的加载过程(生命周期)详解

文章目录3_类的加载过程(生命周期)详解3.1_概述3.2_① Loading(加载)阶段3.2.1_加载完成的操作3.2.2_二进制流的获取方式3.2.3_类模型与 Class 实例的位置3.2.4_数组类的加载3.3_② Linking(链接)阶段3.3.1_环节1:链接阶段之 Verification(验证)3.3.2_环节2:链接阶段之 Preparation(准备)3.3.3_环节3:链接阶段之 Resolution(解析)3.4_③ Initialization(初始化)阶段3.4.1_stat

2020-11-13 18:15:49 658

原创 字节码与类的加载——(二)字节码指令集与解析举例

文章目录2_字节码指令集与解析举例2.1_概述2.1.1_执行模型2.1.2_字节码与数据类型2.1.3_指令分类2.2_加载与存储指令2.2.0_再谈操作数栈与局部变量表操作数栈(Operand Stacks)局部变量表(Local Variables)2.2.1_局部变量压栈指令2.2.2_常量入栈指令2.2.3_出栈装入局部变量表指令2.3_算术指令2.3.1_所有算术指令2.3.2_比较指令的说明2.4_类型转换指令2.4.1_宽化类型转换2.4.2_窄化类型转换2.5_对象的创建与访问指令2.5.

2020-11-08 16:46:48 569

原创 内存与垃圾回收——(十三)垃圾回收器展望

文章目录13_垃圾回收器展望13.1_垃圾回收器的新发展13.2_JDK 11 起增加的 GC13.3_其他垃圾回收器 AliGC13_垃圾回收器展望13.1_垃圾回收器的新发展GC 仍然处于飞速发展之中,目前的默认选项 G1 GC 在不断的进行改进。很多我们原来认为的缺点,例如串行的 Full GC、Card Table 扫描的低效等,都已经被大幅改进。例如,JDK 10 以后,Full GC 已经是并行运行,在很多场景下,其表现还略优于 Parallel GC 的并行 Full GC 实现。

2020-10-31 12:43:11 175

原创 内存与垃圾回收——(十二)GC 日志分析

文章目录12_GC 日志分析12.1_GC 常用参数12.2_日志补充说明12.3_举例解读日志中堆空间数据12.4_日志分析工具12_GC 日志分析12.1_GC 常用参数通过阅读 GC 日志,我们可以了解 Java 虛拟机内存分配与回收策略。内存分配与垃圾回收的参数列表-XX:+PrintGC 输出 GC 日志 (-Xlog:gc*)。类似: -verbose:gc-XX:+PrintGCDetails 输出 GC 的详细日志-XX:+PrintGCTimeStamps 输出 GC 的时间

2020-10-31 12:42:48 325

原创 内存与垃圾回收——(十一)垃圾回收器

文章目录11_垃圾回收器11.1_GC 分类与性能指标垃圾回收期的分类评估 GC 的性能指标11.2_不同垃圾回收器概述垃圾回收器发展史七款经典的垃圾收集器七款经典的垃圾收集器与垃圾分代之间的关系垃圾回收器的组合关系查看默认的垃圾收集器11.3_Serial 回收器:串行回收11.4_ParNew 回收器:并行回收11.5_Parallel 回收器:吞吐量优先11.6_CMS 回收器:低延迟11.7_G1回收器:区域化分代式 ☆G1 基本介绍G1 垃圾回收器的优缺点G1 参数设置G1 回收器的常见操作步骤G

2020-10-31 12:42:25 242

原创 内存与垃圾回收——(十)垃圾回收相关算法

文章目录10_垃圾回收相关算法10.1_标记阶段引用计数算法可达性分析算法10.2_对象的 finalization 机制10.3_MAT 与 JProfiler 的 GC Roots 溯源10.4_清除阶段标记 - 清除算法复制算法标记-压缩(整理)算法三种算法对比分代收集算法增量收集算法分区算法(G1 回收器)10_垃圾回收相关算法10.1_标记阶段对象存活判断在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象

2020-10-31 12:42:12 146

原创 内存与垃圾回收——(九)垃圾回收相关概念

文章目录9_垃圾回收相关概念9.1_垃圾回收概述9.2_System.gc() 的理解9.3_内存溢出与内存泄露内存溢出(Out Of Memory)内存泄露(Memory Leak)9.4_Stop The World9.5_垃圾回收的并行与并发程序中并发(Concurrent)程序的并行(Parallel)垃圾回收的并行与并发9.6_安全点与安全区域9.7_引用(强、软、弱、虚)强引用:不回收弱引用:内存不足即回收弱引用: 发现即回收虚引用: 对象回收跟踪终结器引用9_垃圾回收相关概念9.1_垃圾

2020-10-30 17:42:00 333 1

原创 内存与垃圾回收——(八)字符串常量池 StringTable

文章目录8_字符串常量池 StringTable8.1_String 的基本特性8.2_String 的内存分配8.3_String 的拼接操作拼接操作与 append 的效率对比8.4_intern() 的使用new String("ab")会创建几个对象?new String("a") + new String("b")呢?intern()intern() 的空间效率测试8.5_StringTable 的垃圾回收8.6_G1 的 String 去重操作8_字符串常量池 StringTable8.1_

2020-10-30 17:40:28 1366

原创 内存与垃圾回收——(七)本地方法接口

文章目录7_本地方法接口7.1_简介7.2_使用Native Method的原因7_本地方法接口7.1_简介一个Native Method就是一个Java调用非Java代码的接口。本地方法接口:该方法的底层实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern "C" 告知C++ 编译器去调用一个C的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是

2020-10-30 17:38:13 134

原创 内存与垃圾回收——(六)执行引擎

文章目录6_执行引擎6.1_概述6.2_机器码、指令、汇编6.4_解释器 Interpreter6.5_即时编译器 JIT Compiler6.6_热点代码及探测方式6.7_解释器仍存在的意义6.8_HotSpot VM 设置程序执行方式6.9_HotSpot VM 中的JIT分类6_执行引擎6.1_概述执行引擎是 Java 虚拟机的核心组成部分之一虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的。

2020-10-30 17:35:40 109

原创 内存与垃圾回收——(五)直接内存

文章目录5_直接内存5.1_概述5.2_非直接缓冲区与直接缓冲区5.3_直接内存异常OOM5.4_参数设置5_直接内存元空间使用的是直接内存(Direct Memory)。5.1_概述直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是 Java 堆外的、直接向系统申请的内存区间。直接内存来源于 NIO,通过存在堆中的 DirectByteBuffer 操作Native 内存。通常,访问直接内存的速度会优于Java堆,即读写性能高

2020-10-30 17:34:23 215

原创 内存与垃圾回收——(四)对象的实例化内存布局与访问定位

文章目录4_对象的实例化内存布局与访问定位4.1_ 对象的实例化4.2_对象的内存布局4.3_对象的访问定位4_对象的实例化内存布局与访问定位4.1_ 对象的实例化创建对象的步骤1.判断对象对应的类是否加载、链接、初始化虚拟机遇到一条 new 指令,首先去检查这个指令的参数能否在 Metaspace 的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。( 即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以 ClassLoad

2020-10-30 17:32:54 137 1

原创 内存与垃圾回收——(三)运行时数据区

文章目录3_运行时数据区3.1_运行时数据区内部结构3.2_JVM中的线程3.3_程序计数器(PC寄存器)√3.4_Java虚拟机栈 √虚拟机栈的特点栈中常见异常设置栈的大小`-Xss`3.4.2_栈的存储单位与结构3.5_栈帧3.5.1_栈帧的内部结构3.5.2_局部变量表 ☆(Local Variables)Slot变量槽补充3.5.3_操作数栈 ☆(Operand Stack)3.5.4_栈顶缓存技术(Top-of-Stack Cashing)3.5.5_动态链接(Dynamic Linking)虚方

2020-10-30 17:30:38 450 1

原创 内存与垃圾回收——(二)类加载器子系统

2_类加载器子系统2.1_类的生命周期类的生命周期会经历如图 7 个阶段。2.2_类的加载过程类的加载过程有 3 个阶段:加载、连接、初始化。加载:通过一个类的全限定名获取定义此类的二进制字节流;将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构;在内存中生成一个代表这个类的java.lang.Class对象(反射),作为方法区这个类的各种数据的访问入口。链接:验证:确保 Class 文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的

2020-10-30 17:26:01 524 1

原创 内存与垃圾回收——(一)JVM 与 Java 体系结构

1_JVM 与 Java 体系结构HotSpot虚拟机JIT 编译器通过计数器找到最具编译价值的代码(即热点代码),触发及时编译,编译成本地机器指令并缓存到方法区,或进行或栈上替换,提升效率。可以与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。解释器负责程序响应时间,编译器负责性能。其它虚拟机:Graal VM 是基于 HotSpot 的跨语言全栈虚拟机。JRockit 专注于服务器端应用,只有编译器,是最快的JVM。J9 类似 HotSpot

2020-10-30 17:23:29 908

原创 字节码与类的加载——(一)Class 文件结构

文章目录1_Class 文件结构1.1_字节码文件概述1.1.1_字节码文件的跨平台性1.1.2_Java 的前端编译器1.1.3透过字节码指令看代码细节BAT 面试题代码举例1.2_虚拟机的基石:Class 文件1.3_Class 文件结构1.3.1_魔术:Class 文件的标志1.3.2_Class 文件版本号1.3.3_常量池:存放所有常量常量池计数器常量池表字面量和符号引用常量类型和结构总结1.3.4_访问标识1.3.5_类索引、父类索引、接口索引集合this_class(类索引)super_cla

2020-10-30 17:02:32 727 3

原创 Swagger2快速使用

Swagger2的快速使用:常用注解介绍;引入依赖,配置文件,访问;页面404;更换皮肤;优化显示

2020-10-03 18:58:53 190

原创 在Coursera观看视频的正确姿势

相信在 Couresa 看视频的大伙都知道不搭梯/子的话,我们可以通过在 hosts 中配置域名和 IP 的映射关系,从而可以观看到视频。然而 IP 失效得很快,网上搜到的 IP 基本用不了几天,继续各种搜索大佬们分享的 IP,发现一个都不能用,令人抓狂。所以,我们不如自己去查询 IP 地址。查询网站:IPAddress.com解析 Coursera 播放视频用的域名:d3c33hcgiwev3.cloudfront.net选择一个可以Ping通的域名,添加在hosts中一分钟即可解决,再

2020-09-07 11:49:29 5242

原创 继承JsonSerialize<T>抽象类实现自定义序列化器

自定义序列化器需要继承 JsonSerializer<T>; 接口,泛型为需要被序列化的对象重写 serialize() 方法在需要序列化的实体类上加上注解 @JsonSerialize(using = TemplateSerialize.class) 指定序列化器public class TemplateSerialize extends JsonSerializer<...

2019-12-28 16:11:24 1201

原创 @Convert 设置自定义属性转换器 AttributeConverter

通过 @Convert 注解指定自定义转换器,可用于实体属性类型与数据库字段类型之间的相互转换,便于将数据存储至数据库或从数据库读取数据。@Repeatable(Converts.class)@Target({METHOD, FIELD, TYPE})@Retention(RUNTIME)public @interface Convert { Class converter() de...

2019-12-15 10:55:07 2078

原创 SpringCloud学习笔记(一)—— Eureka、Zuul

单实例、多实例 Eureka Server的搭建;自定义Zuul过滤器:Token 校验过滤器;限流过滤器;日志过滤器

2019-12-01 19:49:27 749

原创 Spring Boot Actuator 和 Profiles 的简单使用

文章目录Actuator 监控监控分类监控的使用自定义配置文件优先级ProfileActuator 监控是Spring Boot 提供的对应用系统的自省和监控的集成功能可查看应用(配置)信息、环境信息以及对应用进行操控监控分类原生端点:应用配置类常用:/info /bean /mappings(URI路径信息)度量指标类常用:/health threaddump(当前线程活动...

2019-11-30 15:14:54 424

原创 IDEA闪退Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

插件安装出错导致idea发生crash,报错 Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

2019-11-03 11:51:02 39092 7

原创 Lombok与generator整合

过去,我们使用逆向工程都会生成一堆get/set方法,一旦修改其中的属性就会变得比较麻烦当 tk.mybatis » mapper 版本到了 4.1.x 后只要添加一行 <property name="lombok" value="Getter,Setter,ToString"/>添加在插件配置项中:就可以直接生成带有lombok注解的代码了但是目前只支持这四种注解,...

2019-10-26 01:32:55 427

原创 SpringBoot使用逆向工程时报错:generate failed: Exception getting JDBC Driver: ${jdbc.driverClass}

SpringBoot整合Mybatis后使用逆向工程报错根据官方文档中的 “使用 Maven 执行MBG” 进行操作添加 generator的插件,指定配置文件路径,添加相关依赖 <build> <plugins> <plugin> <groupId>org.spri...

2019-10-25 23:35:20 789

原创 多线程学习(三)—— 线程的属性

文章目录线程属性概览线程 Id线程名称 Name守护线程线程属性概览属性名称用途ID每个线程都有自己的ID,用于识别不同的线程Name便于用户在开发、调试或运行过程中区分每个不同的线程、定位问题等isDaemontrue:代表是守护线程,false:非守护线程(用户线程)Priority优先级,是告诉线程调度器,用户希望哪些线程相对多运行、哪些少运...

2019-10-23 17:50:08 306

原创 多线程学习(二)——Thread和Object类中的重要方法详解

文章目录方法概览wait / notify / notifyAll 方法作用特点代码演示sleep 方法作用特点代码演示TimeUnitjoin 方法作用代码演示源码yeild 方法作用问题:1、为什么线程通信的方法 wait(), notify() 和 notifyAll()被定义在Object类中?而sleep()定义在Thread类?2、wait/notify与sleep的异同点?3、使用 ...

2019-10-23 16:19:44 613

原创 多线程学习(一)—— 线程的生命周期

文章目录线程的 6 种状态代码演示New / Runnable / Terminated 状态Blocked / Waiting / TimedWaiting 状态线程的 6 种状态New:已创建,未启动,已做好准备工作Runnable:可运行的,调用start()方法后Blocked:阻塞,进入synchronized相关方法或代码块,未持有锁Waiting:进入等待状态(wait(...

2019-10-23 16:19:08 152

原创 Redis工具类

Redis不同数据类型的工具类@Servicepublic class RedisService { @Autowired private RedisTemplate redisTemplate; private static double size = Math.pow(2, 32); /** * 写入缓存 * * @pa...

2019-10-04 19:22:08 215

原创 分布式缓存Redis(二) —— 事务

Redis事务机制MULTI 与 EXEC: MULTI 开启一个事务,然后将多个命令入队到事务queue中, 最后由 EXEC 命令触发事务, 一并按顺序执行事务中的所有命令。DISCARD:DISCARD 命令用于取消一个事务, 它清空客户端的整个事务队列, 然后将客户端从事务状态调整回非事务状态, 最后返回字符串 OK 给客户端, 说明事务已被取消。WATCH:WATCH 命令用于在...

2019-10-04 17:26:48 210

原创 分布式缓存Redis(一) —— 五种数据类型详解

目录基本概念与的区别安装与启动使用用守护进程的方式启动Redis脚本设置开机自启动五种数据类型String类型Hash类型List类型Set类型ZSet类型消息的发布订阅基本概念Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构:字符串(String)散列(Hash)列表(List)集合(Set)有序集合...

2019-09-26 19:01:19 1337

原创 设计模式笔记(五)—— 外观模式

外观模式介绍;外观模式案例编写;外观模式的具体应用

2019-08-28 18:29:47 134

原创 设计模式笔记(四)—— 原型模式

原型模式的介绍;深克隆,浅克隆;克隆破坏单例;原型模式的应用

2019-08-28 16:24:54 137

原创 设计模式笔记(三)—— 单例模式

饿汉式、懒汉式;序列化破坏单例;反射攻击;枚举单例;容器单例;ThreadLocal线程单例;单例应用

2019-08-14 18:50:01 147

原创 设计模式笔记(二)—— 建造者模式

设计模式学习笔记,感谢geely老师的《Java设计模式精讲 Debug方式+内存分析》课程。建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道类型:创建型适用场景:如果一个对象有非常复杂的内部结构(很多属性);想把复杂对象的创建和使用分离优点:封装性好,创建和使用分离;...

2019-08-03 00:26:12 165

原创 设计模式笔记(一)—— 设计原则与工厂方法模式详解

七大设计原则;简单工厂;工厂方法模式;抽象工厂

2019-08-01 07:48:57 551

原创 统一异常处理的简单实现

异常抛出与处理流程自定义异常类型;自定义错误代码及错误信息;对于可预知异常(自定义异常)主动抛出,由SpringMVC统一捕获;对于不可预知异常(运行时异常)由SpringMVC统一捕获Exception类型的异常;最终所有异常采用统一信息格式(错误代码+错误信息)随请求响应给客户端。可预知异常自定义异常类型@AllArgsConstructor@Getterpublic...

2019-07-24 23:37:37 1226

原创 Java 8深入剖析与实战(二)—— 函数式接口Function、BiFunction、Predicate、Supplier、BinaryOperator

函数式接口Function、BiFunction、Predicate、Supplier、BinaryOperator的解读与示范。

2019-07-23 12:41:01 674

原创 Java 8深入剖析与实战(一)—— Lambda表达式入门

前置概念了解函数式接口(Functional Interface):有且仅有一个抽象方法。(SAM,single abstract method,单一抽象方法)接口中可以添加default关键字修饰的非抽象方法(默认方法)。接口里可以声明静态方法,并且可以实现。如果接口重写了java.lang.Object类中的public方法,也能满足规则,并不会增加抽象方法个数。...

2019-07-18 08:25:31 152

Spring5高级编程(第5版) 中文pdf

中文版2019年1月第1次印刷,共543页,会出现迷之水印,但不影响阅读。 上传大小受限,所以分享了链接以供下载。

2019-01-29

Redis-Desktop-Manager-0.9.1.771

Cross-platform open source Redis DB management tool. 比较好用的Redis管理工具。

2018-04-03

PageSpeed_insights

chrome插件,拖至扩展程序即可安装。前端分析工具,亲测可用,有中文语言。

2017-12-14

typora-0.9.38-x64.exe(windows)

一款极致简洁的markdown的编辑器,目前最新版本是0.9.38beta。官网下载不是很稳定,在此分享。

2017-12-12

空空如也

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

TA关注的人

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