自定义博客皮肤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)
  • 收藏
  • 关注

原创 SpringBoot

自动配置:springBoot核心配置就是自动配置。这个要从SpringBoot项目中的启动类说起,在启动类上有@SpringBootApplication,这个注解是SpingBoot的核心注解,点进去注解会看到三个注解:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。组件扫描:SpringBoot会扫描主类所在的包以及其子包下的组件,包括@component,@service,@controller等注解标注的类。

2024-01-21 16:10:15 847

原创 Spring 总结

IOC:控制反转,把当前类的控制权交给Spring管理,我们在使用的时候,在spring的配置文件中,配置好bean标签,以及类的全限定名,如果有参数,再配置上相应的参数,(或者在类上加上@component,交给spring管理)。jdk动态代理:只提供接口的代理,不提供类的代理。BeanFactory是基础类型的IOC容器,提供了完整的IOC服务支持,简单的说,BeanFactory就是一个管理bean的工厂,主要负责初始化bean,并调用他们的生命周期的方法。

2024-01-21 16:01:03 511 2

原创 JVM值得一看无套路

一个类加载器收到一个类加载请求时,不会自己先进行类加载,而是将请求传递给父加载器加载,每一层都是这样,所以类加载请求到达顶部的类加载器反馈无法加载此请求,子加载器才会加载。这样做的目的是保证加载的顺序和加载过程的一致性,同时可以避免重复加载和冲突。1.内存溢出:当程序运行时需要占用内存空间,此时内存空间已满,就会出现内存不够的情况,就会出现内存溢出,也就是oom。

2023-08-24 09:48:46 40 1

原创 多线程的必会的知识

当有多个线程互相持有对方所需要的资源,需要等待对方释放锁才能执行后续的操作,从而导致线程阻塞的行为叫为死锁。如图所示,线程A持有资源2,线程B持有资源1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。可重入锁就是当有一个线程获取到锁资源,还没有释放锁资源时又要获取相同的锁资源,就可以不用再获取,可以直接访问,记录重入次数。解决的是死锁的问题当一个线程获取到锁,还没有释放锁资源时又要再次获取相同的锁资源的时候,如果没有重入锁,就需要等待自己释放掉锁资源再次访问,显然是不合适的。

2023-08-24 09:46:58 63 1

原创 MySQL事务

事务A,B交替执行,事务A读到事务B未提交的数据,这就是脏读在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读事务A查询一个范围的结果集,另一个并发事务B往这个范围中插入或者删除数据,并静悄悄的提交。然后事务A再次查询相同的范围,两次读取到的结果集不一样了,这就是幻读。

2023-08-24 09:45:00 25 1

原创 MySQL进阶篇SQL优化与索引

索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据,具体来说MySQL中的索引,不同的数据引擎实现有所不同,但目前主流的数据库引擎的索引都是B+树实现的,B+树的搜索效率,可以达到二分法的性能找到数据区域字后就找到了完整的数据结构了,所有索引的性能也是更好的。尽量使用join语句来替代子查询,因为子查询是嵌套查询,而嵌套查询会新创建一张临时表,而临时表的创建与销毁会占用一定的系统资源以及花费一定的时间,同时对于返回结果集比较大的子查询,其对查询性能的影响更大。

2023-08-24 09:40:44 41 1

原创 MySQL终极版面试免死金牌

MVCC多版本并发控制,通常来说就是MVCC通过保存数据的历史版本,根据版本号来处理是否显示,从而达到读取数据的时候不需要加锁就可以保证事务的隔离性效果,MySQL中的InnoDB就是使用这种方式来提高读写事务控制,大大提高了读写事务的并发性能,原因是MVCC时一种不采用锁来控制事务的方式,是一种非阻塞,同时还可以解决脏读,幻读,不可重复读等事务隔离问题,但并不解决更新丢失问题。在设计数据结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由,比如性能,事实上我们经常会为了性能而妥协数据库的设计。

2023-08-24 09:37:17 41 1

原创 MySQL基础第三篇进阶篇

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。笛卡尔乘积是指数学中,两个集合X和Y的笛卡尔积 又称之为值积,表示X x Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对得其中一个成员。逻辑外键:多表创建的时候,外键列不添加外键约束,数据的准确性由程序员的逻辑进行控制。一个查询的结果,作为另一个查询的条件或者 临时表 此时这个查询就是称之为 子查询。

2023-08-24 09:33:23 165 1

原创 MySQL基础第二篇

FROM子句执行顺序为从后往前、从右到左,FROM 子句中写在最后的表(基础表 driving table)将被最 先处理,即最后的表为驱动表,当FROM 子句中包含多个表的情况下,我们需要选择数据最少的表作为基础 表。对虚拟表VT1 应用ON筛选器,ON 中的逻辑表达式将应用到虚拟表 VT1中的各个行,筛选出满足ON 逻辑 表达式的行,生成虚拟表 VT2。将虚拟表 VT7中的在SELECT中出现的列筛选出来,并对字段进行处理,计算SELECT子句中的表达式,产 生虚拟表 VT8。

2023-08-24 09:32:18 35 1

原创 MySQL基础第一篇

数据库(Database DB)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着 信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用 户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量 数据存储的大型数据库系统都在各个方面得到了广泛的应用。MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大 量的名字表中选出的。它的历史也 富有传奇性。

2023-08-24 09:31:10 27 1

原创 Java基础第五篇IO概述小白专属

创建了一个接口,如果你的类希望使用底层的序列化操作 那么你就实现这个接口 如果你不希望当前类被序列化 则不实现这个接口 所以这个接口的作用就是 : 添加标记 public class Role implements Serializable {}java.io.NotSerializableException: com.aaa.day01.test09.Role 当我们将Role 对象使用对象流输出到指定文件中的时候 此时抛出这个异常:Role 未序列化异常。字节流:以字节为单位传输数据的流。

2023-08-17 16:38:49 26 1

原创 Java基础第四篇集合框架小白专属

但是数据结构写起来比较麻 烦,不容易上手,所以java面向对象思想就帮我们写好了,例如 我们当年写的 MyArray 此时再复杂的 操作 都变成了面向对象的 对象创建以及函数调用。\\ 路径分割符 但是Java代码是跨平台的也就是开发环境是Windows 生产环境是Linux,Linux操作系统中的路径分隔符是/ 所以我们在Windows中的路径分隔符Linux不识别。1 .1数据结构:数据结构是计算机存储,组织数据的方式,数据结构是是指相互之间存在一种或多种特定关系的数据元素的集合。

2023-08-17 16:36:57 27 1

原创 Java基础第三篇小白专属

封装 就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或者功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类 其中数据和函数 都是类的成员。代码在执行的时候 是这样执行的 首先执行try中的代码 如果没有异常则拉倒 catch不会执行 如果其中一句代码有问题 此时就会停止执行try中后续代码的执行 并且catch中的内容。在我们封装的函数中 有可能出现 因为传入的参数有问题 导致整个函数无法正常执行的情况。

2023-08-14 19:28:24 51

原创 Java基础第二篇小白专属

当我们私有化成员变量之后,此时只能通过set函数进行set函数赋值,但是此时无法获取对应的成员变量的值。Java的是一门面向对象语言,Java的面对对象的特征是:继承 多态 封装 抽象 接口。因为抽象类让其它类继承 子类的构造函数第一句 super()代表调用父类的构造函数。6.在继承关系中 允许 父类的引用 接受子类的对象 并且以子类的形式运作。5.调用的顺序是当前类有的则调用当前类的 如果当前类没有则调用父类的。2.接口中的函数都是抽象的 public abstract 修饰的。

2023-08-11 11:10:33 37 1

原创 Java基础第一篇小白专属

构造函数,是一种特殊的方法,主要来创建对象是初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中,特别的一个类可以有多个构造函数,可根据参数个数的不同或参数类型的不同来区分它们,及构造函数的重载。调用函数的时候注意,Java中如果函数有参数,那么调用的时候需要飞参数赋值,而且数据类型 个数 顺序都是需要匹配。5.有返回值的函数 调用的时候 可以使用同类型的变量接收返回值的数据【不接收也是可以的】double:双精度浮点型:最常用的储存小数的类型,占八个字节,不能表示精确的值。

2023-08-11 10:18:24 37 1

空空如也

空空如也

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

TA关注的人

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