自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池的执行流程总结

线程池是用于创建管理和复用线程的一种技术,可以优化线程的执行效率。

2024-09-19 11:53:00 372

原创 SpringBean的实例化,后置处理器以及生命周期

处理器的作用,为Bean生命周期各个阶段提供扩展。

2024-08-19 21:38:57 1122 2

原创 SpringBoot的自动配置原理探究

SpringBoot项目启动后,会将pom.xml中依赖的配置文件中的类交给IOC容器管理,我们就可以通过@Autowired自动装配使用。那么它是怎样实现的,我们下面一起学习了解。观察Mybatis的自动配置可知,它包含了两个模块,一个自动配置的功能模块,一个依赖管理的启动器模块,我们用只用启动器的依赖管理模块。那么我们定义时,也需要两个模块,一个自动配置模块,一个依赖管理模块好的,我们对于SpringBoot的自动配置学到此处就结束了,如有不足或错误之处,请批评指正。

2024-08-19 09:14:52 983

原创 Mybatis的分页,延迟加载和缓存

不管信息用不用,只要调用,马上发起查询并进行加载比如:当我们查询学生信息时,就需要知道学生在哪个班级中,所以就需要立马去查询班级的信息通常:当 一对一或者 多对一的时候需要立即加载什么是延迟加载在真正使用数据时才发起查询,不用的时候不查询比如:在查询班级信息,每个班级都会有很多的学生(假如每个班有100个学生),如果我们只是查看班级信息,但是学生对象也会加载到内存中,会造成浪费。所以我门需要进行懒加载,当确实需要查看班级中的学生信息,我门在进行加载班级中的学生信息。

2024-08-18 22:03:43 1411 1

原创 Mybatis的mapper动态代理和映射器

在接口中有方法的返回值定义,参数的定义,方法名,在SqlMapper.xml中也一并给对应接口给与赋值,这时候dao的实现类就显得多余,这是mybatis可以帮助我们自动生产实现类,并可以调取方法得到结果。这就是Mybatis的mapper动态代理。是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率包含:一对一 一个对象对应唯一的对象一对多 一个对象对应多个对象多对多 多个对象对应多个对象验证:编写测试类验证级联关系级联映射: 利用<assocation> 元素完成一对一级联。

2024-08-18 20:43:46 622

原创 Mybatis的注解学习

多对多的关系没办法实现代码,此处不做演示。@Result:映射每一列,一对一只需要映射,映射不上的JavaBean类型的属性,但是此处,会将参数classid传递,映射给clazz对象的属性。首先,我们要知道动态SQL就是动态的拼接条件完成语句的增删改查,在XML中mybatis为我们提供了各种各样的标签,,,,等等,实现了动态SQL,那么注解呢有所不同.下面我们一起学习。说明:新增时所用的参数取值是接口方法的入参,可以是对象,也可以是Map集合。

2024-08-16 00:51:07 982

原创 认识Mybatis和搭建Mybatis初始环境(Java)

重点:lib文件夹下的所有jar包和Mybatis-3.5.2.jar :搭建Mybatis环境jar包Mybatis-3.5.2.pdf:Mybatis的官方使用文档。

2024-08-05 23:49:22 936

原创 MySQL索引及索引的优化策略

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

2024-08-05 10:00:00 1038

原创 MySQL的数据结构B+tree以及SQL优化

首先呢,我们知道MySQL的数据结构为B+tree,那么其结构究竟是什么样的,为什么选择B+tree,而不选择Btree。下面我们从其结构分析。

2024-08-04 22:44:54 1196

原创 MySQL事务,锁,MVCC总结

事务:就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行事务特点:一个事务中如果有一个数据库操作失败,那么整个事务的所有数据库操作都会失败,数据库数据就会回滚到该事务开始之前的状态。限制:MySQL数据库中仅InnoDB和BDB类型的数据库表支持事务间隙锁:是InnoDB存储引擎用来解决幻读问题的一种锁机制,间隙锁锁定的是索引记录之间的间隙,或者是第一个索引记录之前或最后一个索引巨鹿之后的空间,而不是索引记录本身。

2024-08-04 19:45:12 1011

原创 MySQL数据库(基础知识,约束,增删改查命令)

1.什么是数据库2.为什么学习数据库3.数据库的结构4.SQL语句分类5.DDL语句操作数据库(创建,删除,修改,数据库,表)6.数据库表的字段类型7.数据库表的约束8.数据库DML(增删改)和DQL(查询):

2024-08-03 22:01:01 944

原创 Java集合之HashMap的数据结构分析

下标位置:当添加一个新的key-value 键值对时,会根据key的hashcode(),通过哈希函数(也叫哈希干扰函数)计算出一个新的哈希值 hash,并通过这个 hash值,计算key-value键值对在数组中的下标位置(桶,Bucket)例如:数组长度默认为16,(16-1)&12580=4,(16-1)&753951 ,所以哈希值为12580,753951的键值对,会继续存储在数组下标为4和3的位置。所以,当HashMap中元素个数超过12时,数组的容量按照原容量的2倍进行扩容(16*2=32);

2024-07-30 00:45:36 894

原创 Java操作MongoDB数据库(连接,增删改查)

同样的,我们先获取连接,使用数据库,以及集合对象,以及Document对象,将删除数据的条件添加至doc对象中,在调用方法deleteOne或者deleteMany删除。同样的,我们先获取连接,使用数据库,以及集合对象,以及Document对象,将删除数据的条件添加至doc对象中,在调用方法updateMany方法修改。返回值:一个数据库名的集合,String类型,包含三个基本库admin,config,local。首先,我们先要 建立连接,获取到所使用的数据库以及集合(MongoDB中的集合,类似表)

2024-07-30 00:19:15 1092

原创 MongoDB基础学习总结

/查看所有数据库可以直接访问这些有特殊作用的数据库admin:’root‘数据库(权限的角度),要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这个数据库运行local:这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合config:当mongoDB用于分片设置,config数据库在内部使用,用于保存分片的相关信息show dbs;//创建并使用数据库(在MongoDB,集合只有在内容插入后才会真正创建)

2024-07-28 16:43:31 427

原创 Linux的shell编程

变量名称可以由字母,数字和下划线组成,但不能以数字开头,环境变量名建议大写。注意,等号两侧不能有空格,如果有空格,必须要用‘单引号或者双引号包裹在bash中,变量默认类型都是字符串类型,无法直接进行数值运算取数组值单个 echo ${数组名【下标】}全部 echo ${数组名 【*】}注意事项:1. [ 条件判断式 ] ,中括号和条件判断式之间必须要有空格2.if 后要有空格用法格式:if 判断条件;then条件为真的分支代码elif 判断条件2;then条件为真的分支代码else。

2024-07-21 20:18:21 829

原创 Linux系统常用命令

首先,我们要知道Linux系统的结果就类似一个树状的结构,在外层是根目录,根目录下面包含了多个系统目录。

2024-07-21 20:11:34 1007

原创 Java的list集合总结

在编程语言中,我们必然少不了存储数据的容器,虽然我们有数组,但是数组是连续的开辟处一块连续的内存空间,我们的数据过大会无法存储完,数据量小,会浪费空间,所以我们需要使用集合存储数据,而在Java中list和set是我们最常用的集合,它们都属于Collection接口的子接口,那么我们下面分析其共同点,和其对应的数据结构。

2024-07-18 23:44:07 625

原创 Java网络编程(基于TCP的通信,Socket和ServerSocket),实现模拟简单AI

必须保证已经建立连接。

2024-07-14 22:25:04 432

原创 java中压缩文件的解析方式(解析文件)

首先呢,上面我们说过了ZipInputStream用于进行zip格式的压缩文件的输入流,我们先用ZipInputStream对zip文件进行读取操作,然后呢遍历其内部的子文件或者子目录,而ZipEntry对象又表示为zip压缩格式文件内部的文件条目。主题思路:首先根据 “zip” 格式的文件的原始路径创建对应的File对象,拿到其根目录,通过exists方法判断根目录是否存在,如果存在就删除重新创建,再读取子内容包括子文件,子目录,分别创建对应的子文件,子目录,并将子文件的内容写入。

2024-07-11 21:44:48 1143

原创 Java中可变字符串StringBuilder和StringBuffer的使用

java中,提供了String类型的,因为String不可变的特殊特性,致使每一次都必须创建新的临时字符串对象。StringBuilder和StringBuffer都是可变字符串(可变对象),即在创建时,系统会为其“预分配缓冲区”,这样往可变字符串中新增对象时,就不需要再创建新的对象。4.常使用方法:与String方法一致的不再介绍,详情请参考博主主页的String方法总结,下面对可变字符串的一些特有常用方法做以总结。主要作用,可将不同类型的值,追加至可变字符串的尾部,并返回自身实例本身。

2024-02-25 00:30:37 1194 1

原创 Java中【String字符串的常见方法总结】

java中String类型属于引用数据类型,那么它的使用必然离不开方法,下面我们就对它的常用方法做一总结。

2024-02-23 02:30:11 1193

原创 Java中【String字符串的创建及其与常量池的关系】

它用于保存在编译期间就已经确定的一些字符产常量,其加入了垃圾回收等操作,可以节省空间,提高效率,当新创建的字符串在常量池中存在,就不要再次浪费空间,重新创建。1.当我们通过“=”去创建字符串对象时,若是内容一致,必然会直接使用常量池中已存在的字符串常量,所以其内存地址一致。而new关键字代表,在系统内存中去创建新的内存空间,不适用常量池中的数据,所以内存地址必然不一样。2.但是其通过两种创建方式创建的字符串对象,若存放的内容一致的,代表其值相同。注意:在创建时,创建为"",他代表为1个空的字符串。

2024-02-22 19:25:31 434

原创 java中整型和浮点型运算中类型溢出,精度丢失的原因即解决方法

/大整数,引用类型,不能使用运算符,只能通过方法实现加减乘除//解决整形类型溢出//()存放字符串类型数据,因为数值类型无法表示更大的数//加法//减法//乘法//除法比较方法:为compareTo(),观察其源码可知,当n1>n2时,返回1,相等时返回0,小于时返回-1.//定义方式//定义方式//比较大小。

2024-02-22 02:54:09 830 1

原创 在Java中位运算方式总结

(3).按位异或运算(^):按位异或运算是指两个二进制数对应位上的数字不相同时,结果位上的数字为1;(1).按位与运算(&):指的是两个数“二进制“位上对应的数,都为1,结果位上对应的数才为1.否则为0. 如下图所示。(2).按位或运算 (|):指的是两个数“二进制“位上对应的数,都为0,结果位上对应的数才为0.否则为1. 如下图所示。(4).取反运算(~):按位取反运算是指一个二进制数的每个位取反,即0变成1,1变成0。3.判断奇偶数:一个数和0按位与运算(n&0==0)等于0为偶数。

2024-02-22 01:27:01 1258 1

原创 Java中【Arrays工具类的常见方法总结】

这些方法都有对所有基本类型的重载方法。观察源码:通过检查是否为空,不为空,检查数组长度,若为0,则返回字符串"[]",若大于0,则创建可变字符串StringBuilder,通过尾部追加双引号,中括号,及数组元素,并输出这个可变字符串。区间填充:四个参数的源码,此静态方法再传参后,先根据数组的长度检查,区间的初始下标以及结束下标是否合理,如果合理,通过for循环进行改变元素值,否则抛出下标异常。同理:通过快捷输入可了解到,此方法在Arrays类中是重载的,不同的参数(参数的类型,个数),适用于不同的场景。

2024-02-20 03:36:45 1450 1

原创 Java中数组常见算法代码总结

在一轮结束后,最大的元素已经放在最后一位了,然后开始第二趟,第二趟结束后第二大的元素就被放到倒数第二个位置,就这样持续直到所有元素有序为止(最后一个元素不用比较,所以轮数为数组长度-1)数组是一种线性数据结构,是一个使用连续的内存空间存放相同的数据类型的集合容器,与其他容器相比,数组的区别主要在于性能与保存基本类型的能力。因为数组是无序的所以,只能从头部或者尾部,或者双指针(头部和尾部)逐个匹配,当与目标值相等时,即输出其下标。元素类型[] 数组名 = new 元素类型[]{元素,元素,……

2024-02-19 02:21:22 403 1

原创 Java中String为什么不可变

由图可见,方法产生的结果都是以产生一个新的字符串对象返回的,所以导致String无法通过方法直接改变。“一个不可变的字符数组”(final修饰的数组,代表其内存地址不可变,但其内容可变)其次,它的访问修饰符为private:导致外界无法访问,干涉其内容。当字符串保存时,其这个不可变的数组进行存储,其内存地址不可变,代表一直引用这个字符数组对象。2.从String类型提供的方法分析。

2024-02-19 01:06:21 443 1

原创 java接口及其应用场景

Java中提供了多种方法,Arrays.sort()即为其中的排序方法,可对多种类型数组进行排序,但是当我们创建自己所定义的对象数组时,因为sort方法的局限性,我们就必须通过实现comparator接口,或者compareable接口,来定义排序器类,创建排序器或者创建内部类重写sort方法,定义规则,让其为我们进行排序功能的实现。

2024-01-25 01:08:33 629

原创 针对leetcode中搜索插入位置题思想讲解

本人思路,因为在其排序数组值中,即按顺序查找遍历,若等于目标值,即返回其下标即可,若未查找到,设置目标值与数组元素判断,并定义一个全局变量接收未查找到时该插入下标位置,若大于则该变量+1,在循环外返回即可获取。分析:此题为典型数组应用考察。

2024-01-20 13:00:25 355

原创 针对leetcode中找出字符串中第一个匹配项的下标之暴力求解

本人思路:即取出目标(查找)字符串的首字符,与长字符串中的每个字符相比较,当遇到相同字符时,往后截取与目标字符串相同的 短字符串,判断长字符串余下长度是否大于查找字符串长度,防止下标溢出,再用equals 方法对比,若值相同,则证明其值相等,返回其下标 i ,否则,在循环外返回-1。1.分析:此题为字符串函数应用考察,在一个长的字符串中找出第一个与目标(查找)字符串的匹配项,

2024-01-20 10:27:47 578

空空如也

空空如也

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

TA关注的人

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