自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

转载 好文分享:SpringBoot自动配置原理

通过观察这个文件可以看到很多的自动配置类,这里的每一个xxxAutoConfiguration类都是容器中的一个组件,并且都会加入到容器中,在这些自动配置类加入到容器之后自动配置才开始生效。所以配置项目的之后不清楚需要指定什么配置文件的时候直接打开对应的Porperties类看一下有什么属性就可以了。首先进入这个类,可以上面的几个注解。@Import注解:数据库配置相关的类,有的自动配置类时没这个注解的,比如RedisAutoConfiguration类,所以这个看具体情况,但是前面三个注解是必须的。

2023-02-09 01:09:31 142

原创 理解深拷贝与浅拷贝Java

浅拷贝:在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,当对引用类型的内容修改会影响被拷贝的对象。深拷贝:在拷贝一个对象时,除了对基本数据类型的成员变量进行拷贝,对引用类型的成员变量进行拷贝时,创建一个新的对象来保存引用类型的成员变量。

2023-01-31 22:19:29 133

原创 Spring中常见注解

Resource:可以根据类型注入,也可以根据名称注入。1、关于Bean对象创建相关的注解。@Autowired:根据类型注入。@Qualifier:根据名称注入。@Value:注入普通类型属性。2、关于依赖注入相关的注解。

2023-01-26 17:41:46 135

原创 Spring中Bean生命周期

6、如果当前Bean实现了BeanPostProcessor接口,执行postProcessBeforeInitialization(Object bean, String beanName);7、如果当前Bean实现了InitializingBean,执行afterPropertiesSet(),如果配置了init-method,执行对应的方法;4、如果当前Bean实现了BeanFactoryAware接口,执行setBeanFactory(BeanFactory beanFactory);

2023-01-26 17:32:35 102

原创 SpringMVC执行流程

2、通过处理器映射器HandlerMapping获取HandlerExecutionChain对象,处理器执行链包含了与uri对应的handler对象和handler相关的HandlerInterceptor数组;10、 DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)5、由处理器适配器执行Handler,执行具体的业务流程,返回ModelAndView;

2023-01-24 18:57:12 68

原创 JVM常用参数设置

java虚拟机常用常用设置Xms、Xmn、Xmx、Xss

2023-01-01 22:21:41 379

原创 pom和bom的区别

bom全称是bill of materials,即物料清单。pom里面是具体的依赖项,bom是对依赖项的管理。bom里面声明的gav不会引入到项目依赖jar包里面,pom中声明的gav会被引入到项目依赖jar包里面,有了bom,在bom声明时候可以省去版本号的声明。

2022-12-26 17:46:18 1093

原创 linux系统ping、telnet、curl三种命令对比

对比ping、telnet、curl三种命令使用场景

2022-12-24 20:47:21 1304

原创 nginx简单配置实现动静分离和请求转发

快速上手nginx配置文件代理静态资源、请求转发

2022-12-24 19:12:41 655

原创 JDK7和JDK8使用串行回收器SerialGC回收对比

和宋红康老师jvm p198讲解的有出入,求指导。

2022-12-17 13:57:10 82

原创 Postman工具请求体中的变量格式化日期时间

轻松解决postman设置请求报文交易日期和交易时间

2022-12-13 20:26:57 346

原创 垃圾收集器

垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现 。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。

2022-12-12 01:10:13 115

原创 垃圾回收相关概念

在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用 (strongReference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,弱引用对象与软引用对象的最大不同就在于,当GC在进行回收时,需要通过算法检查是否回收软引用对象,而对于弱引用对象,GC总是进行回收。除强引用外,其他3种引用均可以在iava.lang.ref包中找到它们的身影。

2022-12-11 19:33:08 81

原创 垃圾回收相关算法

这些只是基本的算法思路实际GC实现过程要复杂的多,目前还在发展中的前沿GC都是复合算法,并且并行和并发兼备。

2022-12-10 22:01:42 96

原创 垃圾回收概述

在程序运行过程中,那些没有引用指向的对象就是需要回收的垃圾。如果不及时回收掉,会造成系统资源的浪费,造成内存泄漏,并且,随着程序的运行,会造成内存溢出OOM

2022-12-10 18:45:43 134

原创 String概述

1、String:字符串使用一对””引起来表示。2、String类声明为final的,不可被继承3、String实现了serializable接口:表示字符串是支持序列化的,实现了Comparable接口: 表示String可以比较大小4、String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[]。5、String:代表不可变的字符序列。简称:不可变性。

2022-12-08 23:27:53 1164 1

原创 执行引擎概述

执行引擎在执行的过程中究竟会执行什么样的字节码指令由PC寄存器来决定,每当执行完一项指令操作之后,PC寄存器都会更新下一条指令要执行的指令地址。在方法运行的过程中,执行引擎有可能通过局部变量表中的对象引用准确定位到存储在堆中的对象实例信息,通过对象头中的元数据指针定位到目标对象的类型信息。

2022-12-08 14:21:19 165

原创 对象的实例化、内存布局与访问定位

创建对象的6种方式:直接new,Class对象newInstance,Constructor的newInstance、clone()、反序列化、unsfae类

2022-12-08 00:09:42 64

原创 方法区概述

方法区(Method Area)与Java堆一样,是各个线程共享的内存区域

2022-12-06 22:38:20 614

原创 Java常见的内存泄漏的场景

所谓内存泄漏就是指一个不再被程序使用的对象或变量一直被占据在内存中。

2022-12-06 20:14:12 606

原创 堆的核心概述

Java堆区在JVM启动的时候被创建,其大小也就确定好了,是JVM管理的最大的一块内存空间。

2022-12-06 00:19:22 83

原创 本地方法栈

java虚拟机栈管理java方法的调用,本地方法栈管理本地方法的调用。

2022-12-05 21:26:55 247

原创 本地方法接口

一个Native Method就是一个Java调用非Java代码的接口。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合 c/C++程序。

2022-12-05 21:16:58 213

原创 虚拟机栈概述

由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指今集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。虽然指令集小,但是实现同样的功能需要更多的指令。

2022-12-03 23:36:09 452

原创 程序计数器

我们都知道所谓的多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停地做任务切换,这样必然导致经常中断或恢复,如何保证分毫无差呢?为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器,这样一来各个线程之间便可以进行独立计算,从而不会出现相互干扰的情况。由于CPU时间片轮限制,众多线程在并发执行过程中,任何一个确定的时刻,一个处理器或者多核处理器中的一个内核,只会执行某个线程中的一条指令。CPU的寄存器,寄存器存储指令相关的现场信息。

2022-12-03 08:15:00 1211

原创 线程之概述

线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行执行。在Hotspot JVM里,每个线程都与操作系统的本地线程直接映射。当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。Java线程执行终止后,本地线程也会回收。操作系统负责将所有线程安排调度到任何一个可用的CPU上。一旦本地线程初始化成功,它就会调用Java线程中的run()方法。

2022-12-02 23:19:34 124

原创 运行时数据区

每个JVM只有一个Runtime实例。即为运行时环境,相当于内存结构的中间的那个框框:运行时环境。

2022-12-02 23:12:26 193

原创 双亲委派机制

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。

2022-12-02 08:00:00 70

原创 类加载器分类

类加载器的分类:引导类加载器、扩展类加载器、系统里加载器、用户自定义类加载器。

2022-12-01 23:38:44 378

原创 Jvm整体结构

jvm整体结构

2022-11-28 10:45:00 151

原创 快速搭建RabbitMq集群

快速搭建RabbitMq集群

2022-11-27 19:15:00 624

原创 手把手教你5分钟搭建RabbitMq开发环境

快速搭建RabbitMq开发环境

2022-11-26 23:19:13 1578

原创 使用ssh工具连接vagrant创建的linux虚拟机

保姆级别教程5分钟教你快速创建linux虚拟机并使用ssh工具进行连接

2022-11-26 18:42:38 1285 1

原创 招聘信息管理系统

在当今社会的进步和高科技技术迅猛发展的情况下,知识正在逐步走向主导地位,市场上的竞争大多数是个人才能的竞争。进而,找到一个适宜的人才,是企业能够立足于市场之上并且能够不断与同行企业竞争的一项关键性的任务同时,当今市场环境变化非常之快,导致市场的需求也在不断地变化,那么相应的对人才的需求也在不断的变化。如何快速适应这种变化,提高人才招聘的效率,对企业所需求的人才进行快速定位,也就自然而然成为企业需要考虑的重要因素。

2022-11-22 22:49:33 1017 1

原创 基于java+springboot+mybatisPlus+vue+elementui+mysql实现的高校排课管理系统

系统后端采用java为主要开发语言,采用springboot框架开发,数据库使用的mysql数据库,mybatisplus作为持久化框架。项目支持热部署,在开发的时候修改了代码可以及时生效,不需要重启。各自的角色可以独自的操作各自角色所拥有的菜单。老师可以进行排课管理,课程管理,讲师管理,班级管理,学生管理,教学资料管理,教学设施管理。学生可以进行排课查询,学习文档下载,空教室查询,个人信息修改。整个系统采用前后端分离的方式进行开发部署,符合当下的发展趋势,方便灵活,开发效率快。

2022-11-20 23:00:00 927 1

原创 ssm教务管理系统

随着中国教育体制的不断改革与完善,学校的学生教师管理员等对互联网的使用也越来越频繁。随着学生与教师数量的不断增多,教务管理的容量,安全性,便捷性显得尤为重要。传统的人工管理的劣势也慢慢显现出来,但是其中的一优点还需要继续采纳,所以传统的人工与计算机的结合成为了目前的主流。对此我开发了一套基于SSM框架的教务管理系统。该系统采用的是Spring、SpringMVC、Mybatis、Shiro、LayUI、腾讯云。

2022-11-20 20:47:08 526 2

原创 基于Java+springboot+mybatis+layui+mysql的宿舍管理系统。

基于Java+springboot+mybatis+layui+mysql的宿舍管理系统。

2022-11-20 17:55:40 413

谈谈Java中的i++

在eclipse中运行如下代码,很多小伙伴在纠结到底应该是多少,其实正确结果应该是0!!! int i = 0; i = i++; System.out.println("i的值是 : " + i); 这是和JVM的内存分配有关,JVM在处理这段带代码时,会先把i++的结果赋值给一个临时变量temp,然后再将这个临时变量的值赋值给i。即如下: int i = 0; int temp; // i = i++; int a = temp = i++;// 临时变量temp接受i++,再赋值给a(i) System.out.println(a);//其中的a的值其实就是想当于我们要求的那个i 所以正确结果应该为0。

2020-04-28

空空如也

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

TA关注的人

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