自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode 运行springboot项目

## 安装插件 `Spring Boot Extension Pack` `Java Extension Pack` `Language Support for Java(TM) by Red Hat` 配置java路径、maven路径,修改 json.settings文件 修改配置json.settings

2021-05-13 16:37:54 1639

原创 MyBatis-Plus执行SQL分析打印(04)

性能分析插件 我们在平时的开发中,会遇到一些慢查询,会遇到一些慢sql,测试!druid… MP也提供了性能分析插件,如果超过了这个时间就停止运行。 导入插件 <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version&gt

2021-03-27 22:04:36 1165

原创 MyBatis-PlusCRUD扩展(03)

CRUD扩展 插入操作 insert 插入 @Test public void testInsert() { User user = new User(); user.setName("name"); user.setAge(24); user.setEmail("511814693@qq.com"); int result = userMapper.insert(user); S

2021-03-24 21:43:28 189 1

原创 MyBatis-Plus配置(02)

配置 我们所有的sql现在都是不可见的,我们希望知道它怎么执行的,所以我们必须要看日志! 日志配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 日志格式

2021-03-23 18:05:53 280

转载 Mybatis-Plus(01)

Mybatis-Plus 快速入门 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 I

2021-03-23 17:52:42 202

原创 虚拟机栈的异常

常见异常 OOM: 由于当前程序线程数过多,会导致出现虚拟机栈内存溢出问题 不过这个异常很少见,因为系统创建线程的开销远大于创建虚拟机栈的开销大 SOF: 由于方法递归的层次太深,a->b->c->d->.. 出现的方法调用深度方法的局部变量由很大关系 ...

2021-03-20 20:25:00 193

原创 栈帧的结构

栈帧的结构 标题栈的结构分为四层 局部变量 当前方法的局部变量 基本数据类型存值,引用数据类型存地址 数据槽(slot)->专门对应于我们存储数据的字节 一个数据槽4个字节,所有基本数据类型和引用数据类型基本上都是占用一个槽,只有double和long占用两个槽,为了代码的快速分配 一般情况下非静态方法的第一个位置存放的是当前对象的引用(this) 操作数栈 对方法中的变量提供计算的区域 常量信息,常量数据的引用 常量数据会专门存放到常量池中,基本数据类型、引用数据类型都存放常量

2021-03-19 22:03:10 253

原创 栈帧的作用

每一个线程都会对一个虚拟机栈 线程中的每个方法都会创建一个栈帧() 栈帧可以把它理解为一个数据结构(数组,map) 存放了本次方法执行过程中所需要的所有数据 如果一个线程中有多个方法的调用a->b->c->d 发挥虚拟机栈的作用 先进后出,后进先出,会对栈帧进行压栈操作 方法的调用就类似于栈帧的压栈和出栈 当前正在执行的方法,它的栈帧一定在栈顶,我们只能获取到栈顶位置,栈帧中的数据 ...

2021-03-19 21:37:27 266

原创 虚拟机栈

虚拟机栈 存放当前线程中所声明的变量 java的数据类型 基本数据类型 引用数据类型 基本数据类型和引用数据类型划分的标准是什么? 变量在声明的时候,是否能够确认占用内存的大小 数据类型 是否能确认占用内存大小 基本数据类型 能 引用数据类型 不能 基本数据类型 名称 字节 byte 1 short 2 int 4 long 8 float 4 double 8 boolean 1位 char 2 引用数据类型 类 接口 数

2021-03-18 22:36:12 105

原创 程序计数器

程序计数器 JVM内存划分 程序计数器只为当前的线程所服务 cpu将时间片分配给线程,然后线程开始执行对应代码(指令) Thread1 --> 50 Thread2 -->33 Thread3 --> ? 程序计数器会记录当前线程要执行指令的内存地址 因为指令也会被存放到JVM的内存中(加载类的过程中) 它只占用一小部分内存区域,只记录一个地址,所以我们认为程序计数器是不会出现内存溢出问题的分区。 ...

2021-03-18 22:10:54 128

原创 JVM划分的标准

内存划分的标准 JVM就是一个程序,是计算机的一个集成,需要对内存区进行划分 JVM按照线程是否共享将内存首先分成两大类 线程独享 有多少个线程就有多少个独享线程区域 每一个线程只能访问独享区内部的数据,线程之间不能共享 线程独享区跟随着线程的创建而创建,随着线程的销毁而被回收 线程共享 属于所有线程都可以访问的区域 所以本区域中会存放大量对象,所有的线程都可以创建自己的对象 当线程被销毁的时候,共享区的数据也会被垃圾回收掉 并不会马上回收,需要等待达到垃圾回收的阈值才会进行回收 线

2021-03-18 22:00:57 128

原创 CPU与多线程

CPU与多线程 cpu: 中央处理器 线程:隶属于进程,属于一个运行中程序的单独路线 单独的逻辑 如果你的计算机是单核,能不能同时玩游戏,听音乐、下载电影? 电脑将其运算能力分为以纳秒为单位,称之为时间片,如果一个程序得到了时间片,我们可以理解为它拥有了cpu的执行能力,理论上来讲cpu会根据程序的线程数目分配对应比例的时间片,所以以cpu的视角来看,程序是顺序执行的,但是以人的视角来看,程序是并行执行的,切换的时间太快了,人感觉不到 对于单线程的应用,多核的cpu是无能为力的,但是我们的计算机同在运

2021-03-17 21:49:07 223

原创 JVM划分区域的原因

JVM划分区域的原因 JVM 内存区域划分 jvm也是一个软件、也需要和其他软件共享计算机的内存。 我们所有java运行中所处理的对象或者算法都使用jvm的内存空间 java 也可以通过一些参数去控制jvm内存的使用量 最小内存 XMS 最大内存 XMx 按照正常理解,jvm用于创建对象,随着对象数量的增加,jvm使用率也在增加 如果jvm使用率达到100%就无法使用 为了让jvm可以让更多的对象重复使用,我们需要垃圾回收 垃圾:不会被使用的对象 所以jvm中的空间是被循环使用的 为了提高垃圾回收

2021-03-17 21:32:27 298 3

原创 JVM内存区域的划分

JVM内存区域的划分 程序 程序=算法+数据结构 面向过程的思路 数据结构:按照一定的结构对数据进行存储,便于我们的操作 链表(删除插入) 数组(随机访问) 红黑树(数据的搜索)b树 图 算法:解决问题的不走或者流程,每一个步骤所要操作的就是数据结构中的值 冯诺依曼体系 所有的数据都存放在内存中(指令和数据) 所有的数据的数据以二进制进行存储 完整的体系(输入设备、存储器、控制器、运行器、输出设备) JVM中要同时存放算法和数据结构 jvm 如何时创建和销毁对象 jvm 如何判断

2021-03-17 21:11:37 106

原创 稀疏数组

int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; System.out.println("输出原始的数组"); for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt + "\t"); ...

2021-03-13 18:34:44 92

原创 冒泡排序

冒泡排序 private static String bubbleSort(int[] array) { int temp; boolean flag = false; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j] &g

2021-03-13 17:39:09 90

空空如也

空空如也

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

TA关注的人

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