自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Spring】Spring事务使用、七大传播机制

Spring事务ACID原则:原子性:要么都成功,要么都失败;一致性:事务前后数据的完整性没有被破坏;隔离性:事务与事务之间相互隔离;持久性:事务完成后,数据的修改是永久的,不会因为机器重启等原因丢失;

2022-05-04 14:12:48 307

原创 【Mybatis-Spring】Spring、Mybatis在Maven中的快速整合

一、 回顾Mybatis创建实体类核心配置文件mybatis-config.xml连接数据库起小名<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <type

2022-05-04 14:11:02 998

原创 【Mybatis】Mybatis面向IDEA超全精通教程

Mybatis1、简介1.1、什么是MybatisMyBatis 是一款优秀的持久层框架;它支持自定义 SQL、存储过程以及高级映射;MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录;

2022-05-03 23:41:20 816

原创 【JVM】JVM类的加载机制(详解)

类从加载到卸载,整个生命周期统共分为7个阶段:其中,加载->验证->准备->解析->初始化,这5个过程就是类的加载过程,而且验证->准备->初始化这三个可以统称为连接过程;解析阶段有时候会在初始化之后再开始;那么,什么时候会触发类的加载?1⃣️ main()所在的主类;2⃣️ 在遇到new、要对某个类的静态变量进行get或set、或者调用它的静态方法时;3⃣️ 对某个类使用反射时;4⃣️ 已经在对某个类进行加载,并且进行到初始化阶段时,而它的父..

2022-04-26 23:47:12 254

原创 【Git】Git、GitHub、Gitee使用手册(保姆级,初入职场必看)

一、GitGit概述分布式版本控制系统记录修改历史记录团队协作版本控制工具:集中式版本控制工具:SVN、CVS,单一集中管理服务器,连接服务器,取出最新文件或更新;每个人的管理管控、单点故障;分布式版本控制工具:Git、Mercurial、Bazaar、Darcs,本地多版本,推送到远程库,写代码前连接远程库客隆新版本,再基于自己本地库做版本控制,再推送到远程库;断网也可以开发,每个客户端都是完整项目(包含历史记录,更安全);工作机制:工作区:代码存放的磁盘目录位置;暂存区:工

2022-04-26 23:16:18 3398

原创 常用八大排序算法,看这一篇就够了 [Java版]

八大排序算法详解概览:性能比较: 八大排序算法 类别排序方法时间复杂度空间复杂度稳定性 平均情况最好情况最坏情况辅助存储 插入排序 直接插入 希尔排序 选择排序 直接选择排序 堆/桶排序 交换排序 冒泡排序 快速排序 归并排序

2022-04-05 01:33:05 708

原创 【Spring】Maven-Spring开发手册

一、Maven下载安装与配置maven下载:Maven官网1. 设置本地库Maven压缩包解压到本地目录;创建本地库文件夹并打开Maven目录下conf中的setting.xml进行配置;<!--设置本地库为刚才创建的本地库路径--><localRepository>/usr/local/maven-repository</localRepository>2. 设置国内镜像,加速下载jar包和依赖阿里云官网:阿里云Maven仓库<mirror

2022-04-01 00:33:25 822

原创 1.17 ConcurrentHashMap和Hashtable的区别

ConcurrentHashMap和Hashtable的区别从底层数据结构来看:ConcurrentHashMap在JDK1.8之前,底层使用分段数组(segment数组存放Entry数组)实现,1.8之后使用的是数组+链表/红黑树结构;而Hashtable一直使用数组+链表结构;从线程安全的实现方式来看:二者都是线程安全的,但是ConcurrentHashMap在JDK1.8之前使用分段锁的方法,一个ConcurrentHashMap有多个Segment,每个segment内存放多个Entry

2021-10-14 15:33:20 93

原创 1.16 HashSet和HashMap区别

1.16 HashSet和HashMap区别HashSet是单列集合,实现的是List,只能存放对象;而HashMap是双列集合,实现的是Map,能存放键值对;HashSet底层使用了HashMap,但只用到了HashMap的key;HashSet使用add添加元素,而HashMap使用put添加元素;HashMap使用key计算HashCode,而HashSet使用对象计算HashCode;HashSet使用拉链法equals到了相同的对象时,不允许再添加,没有替换操作;而HashMap找到了

2021-10-14 15:18:01 269

原创 1.15 HashMap多线程操作导致死循环问题及其在JDK1.8中的优化

1.15 HashMap多线程操作导致死循环问题如果多个线程使用同一个HashMap,可能会出现多个线程同时对HashMap进行扩容的场景;而扩容是新建一个数组,将链表中的元素从头结点遍历过去,每个进行rehash再放到新数组里,最后引用新数组;有一种情况会出现死循环:拿旧数组上某个链表上的两个连续结点A->B举例,假设A、B依次被线程1拿到了新数组(假设仍在同一个桶中),成了B->A的顺序;这时,线程2也对HashMap进行扩容,再次将A往新数组对应位置的链头添加,也就是A->ne

2021-10-14 15:17:40 488

原创 1.14 HashMap的长度为什么是2的幂次方

1.14 HashMap的长度为什么是2的幂次方设计原理:JDK1.8之前,hash–>数组下标的过程很简单,hash%length,就可以将hash映射到数组上JDK1.8优化思路,已知位运算 a % 2 ^n = a & 2 ^n - 1(因为2 ^n -1刚好是一个低位掩码,a&小1位的低位掩码相当于截取了低一位的所有二进制数,起到了a%2 ^n效果)所以对于指定的值,将数组长度设置为大于等于该值的最小2 ^n,就可以用位运算优化;如何保证数组长度是2 ^n?在Has

2021-10-14 15:17:24 145

原创 1.13 HashMap和Hashtable的区别

1.13 HashMap和Hashtable的区别从底层数据结构来看:HashMap在JDK1.8之前采用数组+链表的方式,在JDK1.8时采用数组+链表/红黑树的结构;而Hashtable一直是数组+链表的结构;从线程安全上看:HashMap不是同步的,非线程安全;而Hashtable中有同步锁synchronized,线程安全;从效率上看:Hashtable因为实现线程安全,效率不如HashMap;从null值容忍度来看:HashMap最多容忍1条数据的key是null,多条数据的value是

2021-10-14 15:17:10 44

原创 1.12 HashMap的底层实现

1.12 HashMap的底层实现JDK1.8之前,使用数组+链表的形式,数组中每一个结点都是一个Entry,Entry中不仅包括自己的数据,还有一个next,构成了一个链表;当键值对想要进行put时,HashMap会先计算出key的HashCode,再经过扰动函数(高低位运算)将HashCode的高位信息保留,低位信息混合了原来的高地位,得到hash值,由于hash范围前后40亿,想要映射到长度相对短的数组里,通过hash&length-1,得到数组下标,然后去该位置看是否有数据,没有就直接存

2021-10-14 15:16:38 42

原创 1.11 ArrayList和Vector的区别

2.11 ArrayList和Vector的区别ArrayList非线程安全;Vector的所有方法都是同步的,线程安全;所以可想而知,ArrayList的效率要高于Vector;要在单线程环境使用List,选ArrayList;在多线程环境,选用Vector;...

2021-10-14 15:15:45 42

原创 1.10 ArrayList和LinkedList异同

1.10 ArrayList和LinkedList异同相同点:都实现的是List接口,是单列集合;都是线程不安全的;不同点:ArrayList基于数组实现,而LinkedList基于双链表实现;ArrayList有索引,支持随机访问,而List无索引,不支持;ArrayList查找是O(1),增删是O(n),更擅长查找遍历;而LinkedList查找是O(n),增删是O(1),更擅长增删元素;ArrayList在空间上浪费在数组的后面会预留空间;而LinkedList的每个结点要多出用

2021-10-13 13:23:40 176

原创 1.9 接口与抽象类区别

1.9 接口与抽象类区别1.关于变量:抽象类可以有常量,也可以有一般变量;而接口里只能有变量;2.关于方法:抽象类不仅可以有抽象方法,还可以有一般方法;而接口里只能有抽象方法(1.8之后还可以有静态方法,接口名调用);抽象类的方法的访问权限默认为protected(1.8时,可以是default);而接口中方法的访问权限为public(1.8时,也可以default;1.9时可以private);接口中的方法不可以有方法体(1.8时,可以有带方法体的普通方法);...

2021-10-13 13:14:24 54

原创 1.8 获取键盘输入两种方式

1.8 获取键盘输入两种方式new 一个Scanner对象,构造方法传入System.in这个字节输入流;然后用这个Scanner对象调用nextInt,nextLine等方法;new 一个BufferedReader对象,构造方法传入一个用System.in构造的字符转换输入流InputStreamReader对象;再用这个字符缓冲输入流调用read、readLine方法;...

2021-10-13 12:57:23 84

原创 1.7 java中的异常处理

1.7 java中的异常处理有一个父类java.lang.Throwable类,主要有两个子类:Error错误类和Exception异常类;Error类:一般是程序无法处理的错误,JVM自身故障或者执行任务时出错,与开发者无关;例如Virtual Machine Error、OutOfMemoryError;Exception类:主要分为CheckedException和RuntimeExceptionCheckedException又称编译期异常,一般强制要求程序员处理;如IOExcepti

2021-10-13 12:44:19 70

原创 1.6 Object类的常用方法总结

1.6 Object类的常用方法总结public final native Class<?> getClass(); // 获取当前对象的Class对象,不允许重写,OS的方法,执行快;protected native Object clone();//将当前对象浅克隆,返回副本;//Object本身没有实现Cloneable接口,想要调用clone的自定义类必须实现并重写clone方法;public int hashCode(); //返回对象哈希值;public boolea

2021-10-13 12:29:36 59

原创 1.5 关于final关键字的一些总结

1.5 关于final关键字的一些总结1.final修饰类时,它的所有成员方法都会被隐式指定为final方法;该类此时无法被继承;2.final修饰变量时,该变量初始化后不可以被修改;如果是引用类型,它不可以再指向另一个对象;3.final修饰方法时,方法不能够被重写,但可以被重载;final不可以拿来修饰抽象方法,与抽象方法的意义相矛盾;private方法会被隐式地指定为final;...

2021-10-13 12:16:52 94

原创 1.4 ==与equals

1.4 ==与equals==对于基本类型是比较值,对于引用数据类型比较的是对象的内存地址;equals是在Object中定义的方法,实际上调用的就是 == 比较内存地址;所以如果引用型对象没有重写equals方法,它的作用就和 == 一样;如果重写了equals方法,就可以通过重写使equals实现内容比较的功能;例如String已经重写了equals方法;...

2021-10-13 11:27:43 39

原创 1.3 自动装箱与拆箱

1.3 自动装箱与拆箱装箱:将基本类型包装成相应的包装类Integer integer=new Integer(3);拆箱:将包装类转换回相应的基本类型int i=(int)integer;JDK1.5之后自动装箱:Integer integer=3;自动拆箱:int i=integer;...

2021-10-13 11:20:52 30

原创 1.2 String、StringBuffer和StringBuilder的区别是什么?String为什么不可变?

1.2 String、StringBuffer和StringBuilder的区别是什么?String为什么不可变?从底层数据结构来看:String是被final修饰的char[],所以它在确定内容后不可以改变;而StringBuffer和StringBuilder的char[]没有用final修饰,所以它们创建的字符串是可变的;从线程安全来看:String不可以改变,所以是线程安全的;StringBuffer对方法和调用的方法加了sychronized同步锁,所以也是线程安全的;而StringBuffe

2021-10-13 11:14:08 218 2

原创 1.1 重载和重写的区别

1.1 重载和重写的区别重载:发生在同一个类中,方法之间的方法名相同,参数列表不同,返回类型和访问权限可以不同;重写:发生在子父类之间,子类重写父类方法,方法名和参数列表必须相同,返回类型范围不能大于父类被重写方法的返回类型(相同或子孙类),访问权限不能小于父类被重写方法的访问权限(private<friendly<protected<public);另外,被final修饰的方法,能够被重载,却不能被继承;private方法也是(本质上被隐式地用final修饰了);...

2021-10-13 11:01:53 73

原创 牛客网数据库SQL实战91题详细剖析(11-20)

针对牛客网90道数据库SQL实战题,作出个人解题思路及题解的整理,不定时持续更新具体题目来自于牛客网SQL实战模块:牛客题霸-SQL篇SQL11 获取所有员工当前的manager解题思路:理解一下题目的意思,等同于要查询当前员工所在部门的当前领导,并且去除领导为自己的人。又要显示dept_emp中的emp_no,又要显示dept_manager中的emp_no,显而易见最好使用连接查询,再加上WHERE查询条件:SELECT de.emp_no,dm.emp_no AS managerFROM d

2021-08-24 22:09:27 145

原创 牛客网数据库SQL实战91题详细剖析(1-10)

针对牛客网90道数据库SQL实战题,作出个人解题思路及题解的整理,不定时持续更新具体题目来自于牛客网SQL实战模块:牛客题霸-SQL篇

2021-08-19 14:25:27 286

原创 用两个线程玩猜数字游戏

用两个线程玩猜数字游戏,第一个线程负责随机给出1到100之间的一个整数,第二个线程负责猜出这个数。

2021-04-02 18:15:33 458

空空如也

空空如也

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

TA关注的人

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