自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 虚拟机静态IP地址配置

参考一个不错的https://blog.csdn.net/Franksten/article/details/78556445

2020-07-30 18:16:45 111

原创 docker安装Jenkins

首先docker肯定要安装好的,参考https://blog.csdn.net/weixin_44988663/article/details/1060786151、查看docker的jenkins镜像版本docker search jenkins2、远程拉取最新Jenkins镜像docker pull jenkins3、创建挂载目录(用于映射jenkins的jenkins_home下的配置文件等信息)一般可以是/var/jenkins_home,我这里是/home/jenkinsmkd

2020-07-30 16:35:32 189

原创 类加载器和双亲委派模型

类加载器:通过一个类的全限定名来获取描述该类的二进制字节流。(Java虚拟机外部实现)对于任意一个类,都是由加载它的类加载器和这个类本身共同确立在Java虚拟机中的唯一性。同一个class文件,如果一个由虚拟机应用程序类加载器加载(虚拟机本身的类加载器),一个由自定义类加载器加载,那么它们将是2个独立的类。启动类加载器(Bootstrap Class Loader):负责加载存放于<JAVA_HOME>\lib目录下,或者被-Xbootclasspath参数所指定的路径中存放的类库加载到

2020-07-26 00:06:34 112

原创 类加载的过程

1、加载:①通过一个类的全限定名来获取定义此类的二进制字节流。②将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。③在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。2、验证:是连接阶段的第一步,这一阶段的目的是确保Class文件的字节流中包含的信息符合《Java虚 拟机规范》的全部约束要求,保证这些信息被当作代码运行后不会危害虚拟机自身的安全。包括文件格式验证、元数据验证、字节码验证和符号引用验证。(避免遭受恶意代码的攻击)3、准

2020-07-19 21:33:32 123

原创 虚拟机类加载机制

类加载机制:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析初始化,最终形成可以被虚拟机直接使用的Java类型的过程。一个类从被加载到虚拟机内存再到卸载出内存,它的整个生命周期将会经历加载(Loading)、验证(Verfication)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading) 七个阶段;其中验证、准备、解析三个部分统称为连接。*类加载的过程必须按加载验证准备初

2020-07-19 21:29:26 97

原创 Class类文件结构

任何一个Class文件都对应着唯一的一个类或接口的定义信息。Class文件是一组以8个字节为基础的二进制流,各个数据项严格按照顺序紧凑排列在文件中,中间没有任何分隔符。这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8个字节以上空间的数据项时,则会按照高位在前[2]的方式分割成若干个8个字节进行存储。Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有2种数据类型:无符号数和表无符号数:数属于基本的数据类型,以u1、u2、u4、u

2020-07-18 18:05:24 99

原创 垃圾收集器日志

JDK9之后,HotSpot所有功能的日志都收归到了“-Xlog”参数上-Xlog[:[selector][:[output][:[decorators][:output-options]]]]selector:选择器,由标签Tag和日志级别Level共同组成(标签可以理解为迅即某个功能模块的名字) 日志级别从低到高,Trace,Debug,Info,Warning,Error,Off六种级别 decorator修饰器可以要求每行日志输出都附加上额外的内容,支持附加在日志上的信息包括:

2020-07-14 18:19:42 324

原创 经典垃圾收集器

**1、Serial收集器:**最基础的垃圾收集器,单线程工作的收集器。它在进行垃圾收集的时候,必须暂停其他所有工作线程,直到它收集结束。它是HotSpot虚拟机运行在客户端模式下的默认新生代收集器,因为相对来说它简单高效,额外内存消耗最小**2、ParNew收集器:**支持多线程,只有它能与CMS收集器配合工作,是HotSpot虚拟机中第一款真正意义上支持并发的垃圾收集器,它首次实现了让垃圾收集线程与用户线程(基本上)同时工作。随着G1的出现,自JDK9开始,基本退出历史舞台3、Parallel Sc

2020-07-10 17:17:59 121

原创 垃圾收集算法

1.新生代收集(Minor GC/Young GC):指目标只是新生代的垃圾收集。2.老年代收集(Major GC/Old GD):指目标只是老年代的垃圾收集。3.混合收集(Mixed GC):指目标是收集整个新生代以及部分老年代的垃圾收集。4.整堆收集(Full GC):整个Java堆和方法区的垃圾收集。标记清除算法:分为“标记”和“清除”两个阶段,首先标记出所有需要回收的对象,在标记完成之后,统一回收掉所有被标记的对象。缺点:①执行效率不稳定。对象数量越多执行效率越慢,需要大量标记和清除的

2020-07-08 16:05:36 121

原创 Java引用类型

判断对象是否存活和引用离不开关系,对于一些对象,我们希望在内存空间还足够时它能保留在内存里,当内存空间在进行垃圾收集之后仍然非常紧张,就抛弃这些对象。所以在JDK1.2之后,Java对引用的概念进行扩充。强引用:在程序代码中普遍存在的引用赋值,如Object obj = new Object()这种引用关系;只要强引用的关系还在,垃圾收集器就永远不会回收掉被引用的对象。软引用:被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围中进行二次回收,如果回收之后还没有足够的内存,才会

2020-07-08 13:48:14 94

原创 如何判断对象可被回收

1、引用计数法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。它虽然占用了一些额外的内存空间来进行计数,但是它的效率高。但它也有很多例外的情况需要考虑,比如单纯的引用计数很难解决对象之间相互循环引用的问题。2、可达性分析当前主流的程序语言的内存资管子管理系统,都是采用的可达性分析算法来判断对象是否存活的。从GC Roots开始,根据引用关系向下搜索,(搜索过程所走过的路径称为“引用链”),如果某个对象到G

2020-07-08 11:21:32 233

原创 Java堆内存溢出异常测试(OutOfMemoryError异常实战)

Java堆用于存储对象实例,我们不断地创建对象,要保证GC Roots到对象间有可达路径才能避免垃圾回收机制清除这些对象。但是随着对象数量的增加,总容量触及最大堆的容量限制后就会产生内存溢出异常。我们限制Java堆大小为20MB,将堆的最小值-Xms与最大值-Xmx设置为一样来让堆不可扩展。通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机 在出现内存溢出异常的时候Dump出当前的内存堆转储快照以便进行事后分析public class HeapOOM { sta

2020-07-07 11:03:43 710

原创 记录JVM启动报错:Unrecognized VM option ‘+HeapDumpOnOutOfMemeryError‘

报错信息如下:Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred,程序将退出。Unrecognized VM option ‘+HeapDumpOnOutOfMemeryError’最近学习jvm,进行OutOfMemoryError实战(堆溢出异常测试),根据如下配置该类,结果启动报错,网上找了半天解决方案都无济于事。后来我把参数设置为-Xms30m -Xmx30m -XX:

2020-07-07 10:43:55 2037 2

原创 对象的访问方式

①句柄用句柄访问,Java堆中会划分出一块作为句柄池,reference中存储的就是对象的句柄地址,句柄中包含了对象实例数据与类型数据各自具体的地址信息。(使用句柄来访问的最大好处就是reference中存储的是稳定句柄地 址,在对象被移动时只会改变句柄中的实例数据指针,而 reference本身不需要被修改。)②直接指针使用直接指针访问,Java堆中的对象的内存布局就必须考虑如何放置访问类型数据相关的信息,reference中存储的直接就是对象地址。(使用直接指针来访问最大的好处就是速度更快,它节

2020-07-06 15:25:11 185

原创 对象的内存布局

分为对象头、实例数据、对齐填充三部分。1、对象头包括两类信息。一类用于存储对象自身的运行时数据(如哈希码,GC分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳等);另一类是类型指针,即对象指向它的类型元数据的指针,Java虚拟机通过这个指针来确定该对象是哪个类的实例。2、实例数据:在程序代码中定义的各种类型的字段内容。这部分的存储顺序会受到虚拟机分配策略参数和字段在Java源码中定义的顺序影响。3、对齐填充:这部分不是必然存在的,仅仅起着占位符的作用。...

2020-07-06 13:51:42 76

原创 对象的创建过程

Java对象的创建通常用new关键字,当Java虚拟机遇到一条new字节码指令时,首先会去检查这个对象是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已加载解析初始化,如果没有,则会执行类加载过程。①类加载之后,虚拟机会为新生对象分配内存。对象所需的内存大小再类加载完可以确定。②内存分配完之后,虚拟机需将分配到的内存空间初始化为零值(保证实例字段在不赋初始值时可以直接使用)③虚拟机对对象头进行设置。...

2020-07-06 11:27:59 111

原创 运行时数据区域详解

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。1.程序计数器:可以看作是当前线程所执行的字节码行号指示器。(线程私有)由于Java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都会执行一条线程中的指令。为了保证线程切换后能回到原来的正确位置,每条线程都需要有有一个独立的程序计数器;各条程序计数器独立存储互不影响,这类内存区域称之为“线程私有”的内存。如果线程正在执行的是Java方法,那么这个计数器记录的是正

2020-07-05 20:22:39 308

原创 为什么要了解Java虚拟机

Java虚拟机在千差万别的物理机上面建立了统一的运行平台,实现了在任意一台Java虚拟机上编译的程序都能够在其他Java虚拟机上正常运行。所以使Java应用的开发比C/C++应用开发更高效快捷。虚拟机会自己完成对硬件平台的兼容及对内存等资源的管理工作。 当一段程序被10个人使用时完全正常,但是当1w个人同时使用的时候,需要更高性能的物理硬件,但在绝大多是情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至没有任何改善。这里除了Java虚拟机为了达到所有硬件提供一致的虚拟平台而牺牲了一些硬件相.

2020-07-04 17:53:30 143

原创 使用devtools开启热部署

一、pom.xml添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency&gt

2020-07-03 15:49:23 341

原创 Docker

一、Docker当开发把代码写好在自己本地能跑的时候,交给运维之后,运维就要重新配置环境,不仅费时费力,可能还会出现问题。Docker可以解决在安装的时候把原始环境一模一样地复制过来,消除协作编码时“在我的机器上可以跑,在你的机器上不能跑的问题”基于Go语言实现的,Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,做到“一次封装,到处运行”Docker容器在任何操作系统上都是一致的,这就实现

2020-07-03 11:13:19 143

原创 JPA实体类注解配置

@Entity //声明实体类@Table(name="tb_user") //配置实体类和表的映射关系public class User{ @Id //声明主键的配置 @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") //配置属性和字段的映射关系 private Long userId; @Column(name = "user_name") pri

2020-07-03 10:59:59 625

空空如也

空空如也

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

TA关注的人

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