自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中对象的实例化,内存布局和访问定位

对象的实例化创建对象的方式newClass的newInstance():反射的方式,只能调用空参的构造器,权限必须时publicConstructor的newInstance,反射的方式,可以调用空参,带参使用clone:实现Cloneable,实现clone使用反序列化第三方库创建对象的步骤判断对象对应的类是否加载,链接,初始化虚拟机遇到一条new指令,首先区检查这个指令的参数是否能在MetaSpace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,

2020-12-09 12:52:22 372

原创 CAS原理探究

CAS是什么CAS:CompareAndSwap,从字面以来看也就是比较并交换,它是一条CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子操作调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,由于CAS是一种系统原语,属于操作系统范畴,由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,也就是说CAS是一条CPU的原子指令,不会造成所谓的数据

2020-12-06 18:07:39 169

原创 JVM方法区详述

堆,栈,方法区的交互关系运行时数据区线程共享图交互关系方法区的理解方法区在哪里在《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或进行压缩”,但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是和堆分开所以,方法区看做是一块独立于Java堆的内存空间方法区的基本理解方法区(Method Area)与Heap一样,是各个线程共享的内存区域方法区在JVM启动的时候被创建,并且它的实

2020-07-02 14:06:17 1934

原创 JVM堆详述

堆得核心概述一个JVM实例只存在一个堆内存,堆也是java内存管理的核心区域Java堆区在jvm启动的时候被创建,其空间大小也就确定了。是jvm管理的最大一块内存空间。(堆内存的大小可以调节)《java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的所有的线程共享java堆,在这里还可以划分线程私有的缓冲区《Java虚拟机规范》中对Java堆的描述是:所有对象实例以及数组都应该运行时分配在堆上数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这个引用指向对

2020-07-01 11:35:23 594 2

原创 JVM类加载器子系统

类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特点的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定加载的类信息存放于一块称为方法区的内存空间,除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量类的加载过程加载通过一个类的全限定名获取此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代

2020-06-27 12:54:48 211

原创 JVM的整体结构

Chapter1JVM的整体结构java代码执行流程JVM架构模型基于栈式架构的特点设计和实现更简单,适用于资源受限的系统;避开了寄存器的分配难题:使用零地址指令方式分配。指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。不需要硬件支持,可移植性更好,更好实现跨平台基于寄存器架构的特点典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虛拟机。指令集架构则完全依赖硬件,可移植性差性能优秀和执行更高效;花费

2020-06-26 19:20:01 192

原创 Mysql索引总结

索引概念:帮助Mysql高效获取数据的数据结构索引结构常见的四种索引 MyISAM,InnoDB,Memory三种存储引擎对各种索引类型的支持索引InnoDB引擎MyISAM引擎Memory引擎BTREE索引支持支持支持HASH索引不支持不支持支持R-tree索引不支持支持不支持Full-text5.6版本以后支持支持不支持BTree结构树中每个节点最多包含m个孩子除了树根节点与叶子结点之外每个节点至少有[ce

2020-05-29 20:59:13 185 1

原创 解决docker阿里云镜像安装tomcat无法访问

问题原因linux命令少了webapps里面没有文件,阿里云镜像的原因,默认是最小的镜像,所有不必要的都被剔除启动运行docker run -d -p 3355:8080 --name tomcat01 tomcat进入docker安装的tomcatdocker exec -it tomcat01 /bin/bash将webapps.dist中的文件copy到webapp中即可解决cp -r webapps.dist/* webapps...

2020-05-28 14:45:25 1002 1

原创 Docker常用命令

Docker信息相关命令docker version #小时docker版本信息docker info #小时docker系统信息docker --help #docker帮助命令镜像命令docker images #查看所有本地主机上的镜像docker search mysql #搜索镜像docker pull mysql #下载镜像docker pull mysql:tag #下载对应版本镜像docker rmi -f 镜像id#删除一个镜像docker rmi -f 镜像id 镜

2020-05-28 14:15:34 1581

原创 消息队列之RabbitMq入门

什么是消息队列MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信为什么使用MQ在项目中,可以将一些无需即使返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量消息队列常用的应用场景任务异步处理将不需要同步处理且耗时的操作由消息队列通知消息接收方进行异步处理,提高了应用程序的响应时间应用程序解耦合MQ相当于一个中介,生产方通过MQ与消费放交互,它将应用程序进行解耦合削峰填谷如订单系统,

2020-05-27 22:38:48 997

原创 Springboot拦截器配置

Springboot拦截器配置编写拦截器实现类,实现HandlerInterceptor接口package com.lloyvet.blog.config;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;im...

2020-04-24 11:02:09 560

原创 Mybatis缓存

缓存存在内存中的临时数据为什么使用缓存减少和数据库的交互次数,提高执行效率哪些数据适合使用缓存经常查询但不怎么改变,数据的正确与否对最终的结果影响不大mybatis中的缓存一级缓存指的是mybatis中SQLSession对象的缓存,当我们执行查询操作之后,查询的结果会同时存入到SQLSession提供的一块区域,该区域的结构是一个Map集合,当我们在此查询相同的数据时,Myba...

2020-03-09 23:08:35 486 1

原创 spring中的依赖注入

依赖注入:dependency InjectionIOC的作用:降低程序间的耦合(依赖关系)依赖关系的管理:都交给spring来维护,在当前类需要用到其他类对象是,有spring为我们提供,只需要在配置文件中说明,依赖关系的维护:称之为依赖注入能注入的数据有三类:基本类和String,其他bean类型(在配置文件中或者注解配置过的bean),复杂类型/集合类型注入的方式:1·使用构造函数...

2020-02-25 22:12:15 353

原创 Mysql数据库事务

什么是数据库事务事务:一组逻辑操作单元,使数据从一种状态转换到另一种状态事务处理保证所有的事务都作为一个工作单元执行,即使出现了故障,都不能改变这种执行方式,当在一个事务中执行多个操作时,要么所有的事务都被提交,那么这些操作就 永远的保存下来,要么数据库系统放弃所做的所有修改,将整个事务回滚到最初的状态为确保数据库中数据的一致性,数据的操纵应该是离散的成组的逻辑单元,当它全部完成时,数据的一...

2020-01-24 21:45:14 283 1

原创 JDBC中PreparedStatemnt和Statement的区别

PreparedStatement简介1:可以通过调用Connection对象的prepadStatement(String sql)方法获取PreparedStatement对象。2:PreparedStatement接口是Statement的子接口,表示一条预编译过的sql语句。3:PreparedStatement对象所代表的的sql语句中的参数用占位符(?)来表示,调用Prepare...

2020-01-24 12:35:07 3078

空空如也

空空如也

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

TA关注的人

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