- 博客(37)
- 收藏
- 关注
原创 从零开始学JVM系列(五):搭建HotSpot源码阅读环境
从零开始学JVM系列(五):搭建HotSpot源码阅读环境前言准备工作第一个环节:软件准备第二个环节:环境搭建IDE Clion测试IDE Clion可用安装Command Line Tools下载openjdk源码第三个环节:编译源码准备编译工具配置BOOT_JDK`很重要,不然编译会报出各种千奇百怪的问题`安装compiledb`很重要,解决头文件费了将近两天,最后发现安装这玩意就好了,我吐血了`配置环境变量执行配置文件校验命令执行配置文件报错案例开始编译`每一次编译都要耗费很多的时间,所以建议把文中的
2021-06-03 15:52:47
2015
2
原创 从零开始学JVM系列(一):“显微镜“底下的JVM运行时数据区
把玩JVM内存模型系列(一):"尬聊"JVM内存模型中的"小家伙们"系列开篇本篇大纲第一阶段:JDK体系介绍Java命令层Java支撑层Java虚拟机第二阶段:Java的跨平台特性一次编译 到处运行第三阶段:JVM整体结构第四阶段:JVM内存模型关于公有和私有堆年轻代Eden区Eden区GC回收过程Eden区GC回收过程中的疑问验证Eden区GC回收过程编写测试程序执行测试程序jvisualvm工具查看GC回收题外话GC发生条件带来的问题STW(stop the world)机制堆的小结栈举个例子栈帧局部变
2021-04-07 16:33:04
391
1
原创 从零开始学JVM系列(四):类加载的核心-双亲委派机制
彻底剖析JVM类加载机制系列:双亲委派机制前世的回忆各个类加载器的读取路径appClassLoader类加载器的读取路径双亲委派机制双亲委派机制加载流程双亲委派机制加载流程的实现前世的回忆在上篇文章中,我们主要讲了JVM的类加载模式是一个懒加载这么一个模式,同时还介绍了三个类加载器,分别是引导类加载器,扩展类加载器和应用程序类加载器,在介绍完这三个类加载器后,我们还进入到Launcher.getLauncher方法,也就是初始化类加载器的方法,发现,这三个类加载器还有父子关系,同时,在篇末还抛出一个问题
2021-03-11 10:32:09
306
原创 从零开始学JVM系列(三):玩弄五花八门的类加载器
彻底剖析JVM类加载机制系列:关于懒加载和各种类加载器关于懒加载懒加载证明JVM的加载是懒加载类加载器类加载器篇中小问题类加载器的初始化本文总结絮叨每日一笑:钱太委屈了,每个人都说爱它,却把它拿去跟别人做交易。接上一话:在上一话中,我们提到了类的类加载机制和运行机制,也大概清楚了从“字节码文件”加载到JVM内存中,经历了哪几步,接下来,我们再来看看关于类的懒加载和各种类加载器关于懒加载咱们在平时的项目中,经常会用到各种第三方库,包括各种框架、工具类、sdk等等,那么这些第三方的类难道都等到项目启
2021-02-01 22:05:11
375
原创 从零开始学JVM系列(二):硬邦邦的剖析JVM类加载的过程
彻底剖析JVM类加载机制系列:初步理解类加载运行机制和类加载过程类加载运行过程类加载过程加载验证准备温馨小提示解析动态连接解析的步骤小结初始化本文总结絮叨类加载运行过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM中。以下方的Math类为例:public class Math { public int compute() { int a = 1; int b = 2; int c = (a
2021-01-27 16:52:43
584
2
原创 怎么划分领域、子域、核心域、通用域和支撑域
怎么划分领域、子域、核心域、通用域和支撑域如何理解领域和子域?什么是领域什么是子域怎么划分领域和子域如何理解核心域、通用域和支撑域?为什么要划分核心域、通用域和支撑域总结DDD 的知识体系提出了很多的名词,像:领域、子域、核心域、通用域、支撑域、限界上下文、聚合、聚合根、实体、值对象等等,非常多。这些名词,都是关键概念,所以在这篇文章中重点了解 领域、子域、核心域、通用域和支撑域等重要概念。以及怎么划分领域?如何理解领域和子域?什么是领域百度百科对领域的解释:“领域具体指一种特定的范围或区域。”由此
2020-08-04 15:29:09
6241
原创 微服务设计为什么要选择领域驱动设计
微服务设计为什么要选择DDD软件架构模式的演进单机架构集中式架构分布式微服务架构微服务设计和拆分的困境为什么 DDD 适合微服务?DDD划分业务利器(战略设计和战术设计)DDD如何进行战略设计DDD 与微服务的关系本章总结软件架构模式的演进在说为什么微服务要用DDD之前,我们得先知道服务架构的演进,以及目前处在哪一个阶段。软件架构大体来说经历了从单机、集中式到分布式(微服务)架构三个阶段的演进。目前,我们已经处在微服务架构的阶段单机架构系统包括客户端 UI 层和数据库两层,采用 C/S 架构模式,
2020-08-03 17:29:00
508
原创 java设计原则--里氏替换原则
JAVA设计原则–里氏替换原则(LSP原则)为什么要用里氏替换原则?:为了优化继承所带来的缺点,使得继承的优点发挥到最大,而同时减少缺点带来的麻烦。继承的优缺点:优点: 1. 代码共享,减少创建类的工作量,每个子类都拥有父类的属性和方法 2. 提高代码的重用性(子类可以使用父类的属性和方法) 3. 子类可以在父类的基础上进行拓展(重写父类的方法,实现自己的逻辑)(很多...
2018-03-27 17:07:45
663
原创 Mybatis 源码学习笔记(八)mapper映射文件配置之select、resultMap
mapper映射文件配置之select、resultMap
2017-06-12 14:43:14
682
原创 MyBatis源码学习笔记(七)mapper映射文件配置之insert、update、delete
mapper映射文件配置之insert、update、delete
2017-06-12 13:50:04
463
原创 Mybatis源码学习笔记(六)配置简介之objectFactory、plugins、mappers
配置简介之objectFactory、plugins、mappers
2017-06-10 16:49:34
385
原创 Mybatis源码学习笔记(三) 配置详解(properties 和environment)
配置详解:propertiess和environmentproperties的使用用法
2017-06-09 15:17:34
592
原创 SpringBoot学习笔记二(常规属性配置,类型安全配置,日志配置,Profile配置)
SpringBoot常规属性配置,类型安全配置,日志配置,Profile配置
2017-04-12 16:21:35
2985
原创 InputStream(一)
首先了解对流的定义: 流分两种,输入流和输出流: 输入流:可以从其中读入一个字节序列的对象称作输入流。 输出流:可以向其中写入一个字节序列的对象称作输出流。字节序列的来源和目的地:文件、网络连接、甚至是内存块。
2016-12-22 13:59:46
3830
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人