自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小工匠

show me the code ,change the world

  • 博客(26)
  • 资源 (12)
  • 收藏
  • 关注

原创 JVM - CMS深度剖析

文章目录PreCMSJVM参数阶段PreJVM-04垃圾收集Garbage Collection(上)【垃圾对象的判定】JVM-05垃圾收集Garbage Collection(中)【垃圾收集算法】JVM-06垃圾收集Garbage Collection(下)【垃圾收集器】JVM - 再聊GC垃圾收集算法及垃圾收集器CMSConcurrent Mark Sweep 并发标记清除 。CMS 收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体验的应用上使用,它是

2020-06-30 00:14:18 10849

原创 JVM - 再聊GC垃圾收集算法及垃圾收集器

文章目录Pre分代收集理论常见的垃圾收集算法标记PreJVM-04垃圾收集Garbage Collection(上)【垃圾对象的判定】JVM-05垃圾收集Garbage Collection(中)【垃圾收集算法】JVM-06垃圾收集Garbage Collection(下)【垃圾收集器】分代收集理论当前虚拟机的垃圾收集都采用分代收集算法 , 意思就是根据对象存活周期的不同将 java堆分为新生代和老年代,这样就可以根据各个年代的特点选择合适的垃圾收集算法。举个例子,新生代中,大部分对象都是

2020-06-29 22:21:09 10023

原创 JVM-彻底搞懂 逃逸分析&标量替换

文章目录Pre对象分配流程总览逃逸分析所处的阶段示例说明逃逸分析的含义逃逸分析的对象分配的方式【标量替换】标量 VS 聚合量JVM 参数 -XX:+DoEscapeAnalysis栈上分配DemoPreJVM-剖析对象内存分配流程对象分配流程总览逃逸分析所处的阶段通过上图的对象分配流程,我们可以知道逃逸分析是发生在第一步判断对象是否可以在栈上分配的时候, 在栈上分配的目的是为了减少将对象分配到堆上的概率,节约堆内存,减少GC压力。逃逸分析是JVM为了优化对象分配而做的一种优化措施。

2020-06-27 11:22:17 12938 3

原创 JVM-剖析对象内存分配流程

文章目录对象分配流程总览流程分解栈上分配对象 (逃逸分析)对象分配流程总览流程分解栈上分配对象 (逃逸分析)众所周知, JAVA中的对象都是在堆上进行分配,当对象没有被引用的时候,需要GC。如果对象数量较多的时候, GC 压力较大,也间接影响了应用的性能 。为了减少临时对象在堆内分配的数量,JVM通过逃逸分析确定该对象不会被外部访问 . 如果不会逃逸可以将该对象在栈上分配内存,这样该对象所占用的内存空间就可以随栈帧出栈而销毁,从而减轻GC的压力。...

2020-06-27 00:19:49 10199

原创 JVM - 剖析Java对象头Object Header之指针压缩

文章目录Pre指针压缩【指针压缩】开启 VS 关闭PreJVM - 剖析Java对象头Object Header之对象大小mark word : 32位 占4字节 ,64位 占 8字节klass point : 开启压缩占4字节,未开启 占 8字节。指针压缩jdk1.6 update14开始,在64bit操作系统中,JVM支持指针压缩启用指针压缩-XX:+UseCompressedOops(默认开启),禁止指针压缩:-XX:-UseCompressedOopsoop(ordin

2020-06-25 23:58:20 10696

原创 JVM - 剖析Java对象头Object Header之对象大小

文章目录Pre总览PreJVM - 写了这么多年代码,你知不道new对象背后的逻辑? 中大体介绍了Java中 new 对象背后的主要流程,其中对象头的部分,我们仅仅是点到为止,这里我们深入剖一下Object Header的奥秘 。总览初始化默认值以后,JVM要对对象进行必要的设置,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。这些信息存放在对象的对象头Object Header之中。 这部分数据的长度在32位和64位的虚拟机中分别为32个和64

2020-06-25 16:10:32 11719

原创 JVM - 写了这么多年代码,你还不知道new对象背后的逻辑?

文章目录对象创建流程1.类加载检查2.分配内存3.初始化4.设置对象头5.执行方法对象创建流程1.类加载检查2.分配内存3.初始化4.设置对象头5.执行方法

2020-06-24 21:44:33 10153 4

原创 JVM - 应用JVM核心参数推荐设置

文章目录PreJDK版本核心参数堆线程栈方法区(元空间)案例PreJVM-08垃圾收集Garbage Collection【GC常用参数】JDK版本= 1.8核心参数‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M 堆线程栈默认1M , 不足的话 StackOverflowError-Xss设置越小 ,说明一个线程栈里能分配的栈帧就越少,但是

2020-06-22 11:17:14 10383

原创 JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系

文章目录Pre示例demo总体关系代码示例论证反汇编PreJVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器中我们探讨了线程栈中的内部结构 ,大家有么有想过main方法呢? 我们继续来看下main方法示例demopackage com.gof.test;public class Artisan { public static int FIVE = 5 ; // 静态变量 public static User user = new U

2020-06-22 00:47:28 10209

原创 JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器

文章目录Pre运行时数据区总览PreJVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】JVM-02内存区域与内存溢出异常(中)【hotspot虚拟机对象】JVM-03内存区域与内存溢出异常(下)【OutOfMemoryError案例】运行时数据区总览字节码文件被装载子系统装载到JVM中,字节码执行引擎负责执行这些字节码文件。装载子系统和执行引擎都是C++的实现。我们重点关注下装载子系统: JVM-白话聊一聊JVM类加载和双亲委派机制源码解析...

2020-06-21 12:15:09 10288

原创 Java - 手撸线上故障 OOM + CPU居高不下

文章目录Pre常见故障OOMCPU居高不下高阶工具 ArthasPre当你的应用没有一套完善的监控告警系统,线上故障了 ,总是很被动,但是还得要定位问题 ,奈何手里无利器 ,没办法只能硬上了,虽然原始,好在有效~所以原生的命令你需要特别熟悉,故障的时间很宝贵,所以留给我们翻资料的时间并不多 ~如果你还不是很了解JVM提供的诊断命令, 戳这里–> JVM-10虚拟机性能监控与故障处理工具之【JDK的命令行】常见故障OOMCPU居高不下高阶工具 Arthashttps://

2020-06-20 15:32:44 9801

原创 设计模式 -结构型模式_ 装饰者模式Decorator Pattern 在开源软件中的应用

文章目录定义示例结构图定义装饰模式 Decorator : 在不改变原有功能的基础上, 动态的给一个对象添加一些额外的职责 ,非常符合开闭原则 (对修改关闭,对扩展开放)示例结构图

2020-06-15 21:46:00 9841

原创 MyBatis源码-解读Executor的三个实现类之BatchExecutor(批处理执行器)

文章目录PreExecutor 执行器接口继承关系BatchExecutor(重用执行器)入门小demoBatchExecutor VS ReuseExecutorPreMyBatis源码-深入理解MyBatis Executor的设计思想工程部分见MyBatis源码- SqlSession门面模式 & selectList 源码解析 实际中,我们都是面向SqlSession编程的,不会直接调用Executor来执行业务逻辑,这里我们仅仅是为了深入了解下Executor体系架构才这么搞

2020-06-14 18:48:56 13569 3

原创 MyBatis源码-解读Executor的三个实现类之ReuseExecutor(重用执行器)

文章目录PreExecutor 执行器接口继承关系ReuseExecutor(重用执行器)入门小demoPreMyBatis源码-深入理解MyBatis Executor的设计思想工程部分见MyBatis源码- SqlSession门面模式 & selectList 源码解析 实际中,我们都是面向SqlSession编程的,不会直接调用Executor来执行业务逻辑,这里我们仅仅是为了深入了解下Executor体系架构才这么搞的,切记。Executor 执行器接口继承关系

2020-06-14 17:58:58 11640 2

原创 MyBatis源码- SqlSession门面模式 & selectList 源码解析

文章目录Prepom.xmlmybatis-config.xmlUserMapperSqlSessionPrepom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation

2020-06-14 00:44:58 10013 1

原创 Tomcat - 模拟Tomcat的webappClassLoader加载自己war包应用内不同版本类实现相互共存与隔离

文章目录PreTomcat要解决什么问题?Tomcat违反了双亲委派机制?模拟Tomcat的webappClassLoader加载自己war包应用内不同版本类实现相互共存与隔离Tomcat加载机制小结PreTomcat - 都说Tomcat违背了双亲委派机制,到底对不对?JVM-白话聊一聊JVM类加载和双亲委派机制源码解析JVM - 实现自定义的ClassLoader就是这么简单Tomcat要解决什么问题?作为一个Web容器,Tomcat要解决什么问题 , Tomcat 如果使用默认的双亲委

2020-06-13 10:07:06 10431

原创 JVM - 彻底理解打破双亲委派机制

文章目录Pre 双亲委派何为打破双亲委派演示Pre 双亲委派JVM-白话聊一聊JVM类加载和双亲委派机制源码解析JVM - 自定义类加载器何为打破双亲委派举个例子 有个类 Artisan我们希望通过自定义加载器 直接从某个路径下读取Artisan.class . 而不是说 通过自定义加载器 委托给 AppClassLoader ------> ExtClassLoader ----> BootClassLoader 这么走一遍,都没有的话,才让自定义加载器去加载 Artis

2020-06-12 00:11:41 17510 5

原创 JVM - 实现自定义的ClassLoader就是这么简单

文章目录Pre自定义类加载器演示Step1 : 复制一个Boss1 的类,编译后,取到Boss1.class 备用Step2 : 删除Boss1类Step3 : 编写自定义ClassLoaderStep 4: 自定义目录存放Boss1.classStep 5 : 运行结果注意事项PreJVM-白话聊一聊JVM类加载和双亲委派机制源码解析自定义类加载器我们了解了双亲委派机制后,那自定义类加载器相对就很容易了 , 只需要继承 java.lang.ClassLoader 类 ,重写findC

2020-06-11 23:49:15 10452

原创 JVM-白话聊一聊JVM类加载和双亲委派机制源码解析

文章目录Java 执行代码的大致流程类加载loadClass的步骤类加载器和双亲委派机制Java 执行代码的大致流程我们先回顾下Java 执行代码的大致流程假设要执行A类的main方法启动虚拟机 (C++负责创建)创建一个引导类加载器实例 (C++实现)C++ 调用Java代码,创建JVM启动器,实例sun.misc.Launcher 【这货由引导加载器负责加载创建其他类加载器】sun.misc.Launcher.getLauncher() 获取运行类自己的加载器ClassLo

2020-06-11 01:20:00 11136 3

原创 MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)

文章目录PreExecutor 执行器接口继承关系SimpleExecutor(简单执行器)ReuseExecutor(重用执行器)BatchExecutor(批处理执行器)PreMyBatis源码-深入理解MyBatis Executor的设计思想Executor 执行器接口继承关系这里我们重点看下Executor的 三个实现子类。分别是:SimpleExecutor(简单执行器)、ReuseExecutor(重用执行器)、BatchExecutor(批处理执行器)。SimpleE

2020-06-10 16:27:34 11005

原创 设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用

文章目录Pre定义DemoTomcatMybatisPre我们先来回顾下门面/外观模式Facade Pattern的定义及基本使用,然后我们在开源软件中来看下是如何实践的。定义Facade Pattern 为子系统中的一组接口提供一个一致的入口,该模式定义了一个高层接口,这个接口呢使得第三方更加容易调用该系统,而无需关注内部的细节实现。DemoTomcatRequestFacadeMybatisSqlSession...

2020-06-09 07:15:58 9781 6

原创 MyBatis源码-深入理解MyBatis Executor的设计思想

文章目录Pre回顾JDBC的执行过程Pre如果MyBatis的基础用法还不熟悉,31篇入门博客送给您https://blog.csdn.net/yangshangwei/category_7205317.html回顾JDBC的执行过程

2020-06-04 23:35:21 10352

原创 Tomcat - 都说Tomcat违背了双亲委派机制,到底对不对?

文章目录类加载的本质jvm里ClassLoader的层次结构BootstrapClassLoader(启动类加载器)ExtensionClassLoaderAppClassLoaderTomcat的 类加载顺序常见错误NoClassDefFoundErrorNoSuchMethodErrorClassCastException类加载的本质ClassLoader是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,

2020-06-04 00:38:37 11621 1

原创 Tomcat - Tomcat 网络通信模型剖析 & 并发参数解读

文章目录什么是IOTomcat 支持四种线程模型Tomcat 如何使用指定IO模型什么是IOIO是指为数据传输所提供的输入输出流,其输入输出对象可以是:文件、网络服务、内存等。举个例子,假设应用在从硬盘中读取一个大文件过程中, CPU会与硬盘一样出于高负荷状态么?CPU 没有太高的增涨 。 通常情况下IO操作是比较耗时的,所以为了高效的使用硬件,应用程序可以用一个专门线程进行IO操作,而另外一个线程则利用CPU的空闲去做其它计算。这种为提高应用执行效率而采用的IO操作方法即为IO模型。To

2020-06-03 14:03:10 10347

原创 Tomcat - 你该知道的Tomcat生产环境部署

文章目录PreTomcat 各组件及关系server.xml 配置详解serverserviceconnectorPreTomcat Version : 8.5+我们先回顾下 前几节学习的的tomcat的功能及架构Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件的方式设计, 即整体功能是通过组件的方式拼装完成。Tomcat 各组件及关系

2020-06-03 00:49:42 10780

原创 Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的

文章目录Tomcat中的NIO模型Tomcat中的NIO模型Tomcat 8.5.55

2020-06-01 21:44:03 9739

Scalable IO in Java

NIO - Scalable IO in Java

2023-11-10

腾讯万亿级 Elasticsearch 架构实践

腾讯万亿级 Elasticsearch 架构实践

2023-07-24

实时分析引擎&实时分析引擎

实时分析引擎

2023-07-24

X86-NFS rpm包

gssproxy-0.7.0-21.el7.x86_64.rpm keyutils- libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config libnfsidmap libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind tcp_wrappers

2020-11-24

中标龙芯-MIPS- NFS rpm包

gssproxy-0.7.0-4.ns7_4.mips64 keyutils-1.5.8-3. libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config-1.3 libnfsidmap-0.25- libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind-0.2.0-42. tcp_wrappers-7.6

2020-11-24

mybatisSource.zip

MyBatis源码功能演示环境 ,演示MyBatis的Executor 、StatementHandler 、 SQL映射、对象转换 等核心功能

2020-06-14

apache-tomcat-8.5.50-src.zip

Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与initInternal方法 为什么这么设计? 分析Tomcat请求过程 链接器(Connector)与容器(Container) 解耦 Connector设计 监听服务端口,读取来自客户端的请求 将请求数据按照指定协议进行解析 根据请求地址匹配正确的容器进行处理 将响应返回客户端 Container设计 Servlet容器的实现。

2020-06-02

「Tomcat源码剖析」.pdf

Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑)

2020-06-01

Jest-5.3.4.zip

Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的java API,但是Jest弥补了ES自有API缺少Elasticsearch Http Rest接口客户端的不足。 Jest 配置ES 集群 示例代码 及源码解读 - 核心原理 - NodeChecker源码解读 -

2020-01-19

MQ对比:Kafka VS Rocketmq VS Rabbitmq.pdf

MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料

2019-11-04

elasticsearch-analysis-ik-6.4.1.zip

修改ik分词器源码,支持从mysql中每隔一定时间,自动加载新的词库

2019-08-20

Nginx1.14.2 + zlib + pcre + openssl

1. nginx 主软件 和 3个依赖包 zlib + pcre + openssl

2019-03-12

Spring4CachingAnnotationsExample

Spring4CachingAnnotationsExample的示例,通过Java注解的方式整合EhCache框架

2017-10-04

ORACLE_AWR报告详细分析

ORACLE_AWR报告详细分析

2016-09-28

Java反编译工具

jd-gui.exe使用C++开发,主要具有以下功能: 一、支持众多Java编译器的反编译; 二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

2015-06-04

空空如也

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

TA关注的人

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