- 博客(133)
- 收藏
- 关注
原创 深入class文件了解静态代码块、代码块、构造器顺序
面试题 1class Root{static { System.out.println("Root的静态初始化快"); } { System.out.println("Root的普通初始化快"); }public Root() { System.out.println("Root的无参数的构造器"); } }class Mid extends Root{ stat
2021-11-17 19:47:08 481
原创 Mybatis技术的本质
1. Mybatis技术的本质ORM框架:Object Relational Mapping用于实现面向对象的编程语言里,不同类型系统数据 之间的转换2.用源码去验证Mybatis如何获取数据库源的:下面是层层调用结构然后我们自己从上面打断点的地方dubug开始看源码是否如这样(验证才是检验真理的标准)调用build方法1. SqlSessionFactory build(InputStream inputStream)2.XMLConfigBuilder parser = new
2021-11-16 16:59:18 1357
原创 Mybatis简述和分析#{}和${}的区别是什么?
1. Mybatis存在哪些优点和缺点优点基于SQL语句编程,想当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL单独写,解除sql与程序代码的偶尔,便于统一管理.与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接很好的与各种数据库兼容,(因为Mybaties使用JDBC来连接数据库,所以只要JDBC支持的数据库Mybatis都支持)能够与Spring很好的集成提供映射标签,支持对象与数据库的ORM字段关系映射,支出对象关系组件维护缺点:
2021-11-16 13:46:33 656
原创 线程池总结
run() 和start()方法区别run()方法是普通方法的调用,通过idea断点调试,从始至终都是一个线程start()调用会另开一个线程去执行具体代码如下package T1.threaddemo;public class ThreadDemo extends Thread{ private String name; public ThreadDemo(String name) { this.name=name; } @Ove
2021-11-14 17:13:56 1209
原创 HashMap源码总结
1.hash()方法:hash()方法做了什么key.hashCode是返回的是地址值,如果key没重写hashCode时候,重写了调用的是自己的,hash方法将hashCode的高16位与低16位异或运算得到的值,这样能充分运用到高16位static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}2.get(
2021-11-14 13:18:42 645
原创 两种比较器对比
比较器概述一 、 说明:Java中的对象,正常情况下,只能进行比较:== 或!=;不能使用> 或< 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小.如何实现?两个接口中的任何一个:Comparable 或ComparatorComparable接口 自然排序Comparable接口的举例 @Test public void test1(){ String[] arr=new String[]{"AA","CC",
2021-11-10 15:02:51 363
原创 懒汉式单例
懒汉式单例双重检测//懒汉式单例public class Singleton { private static Singleton singleton=null; //避免外区去new private Singleton() { } public static Singleton getSingleton() { if(singleton==null) synchronized (Singleton.class){
2021-11-05 09:52:02 104
原创 深入迭代器,了解并发修改异常
迭代器的一些基础知识hasNext() :此方法用来判断下一个元素,其实后面可以通过源码去理解next() :获取迭代器对象当前索引位置的元素并将索引下标移至下一个元素remove() :删除参数中指定元素https://www.cnblogs.com/zhuyeshen/p/10956822.html通过一个问题深入迭代器遍历ArrrayList移除一个元素fori遍历正序遍历下面代码会出现一些紧邻需要移除的重复元素没有被移除import java.util.ArrayList;
2021-10-29 18:40:19 325
原创 字符串一看就会,一问就废
String类先看一些源码提提神public final class String //final修饰说明不可变性,不能被继承 实现了 可序列化比较 等规范 implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; //底层还
2021-06-02 16:12:25 90
原创 枚举类与注解
枚举类一 枚举类的使用类的对象只有有限个,确定的.我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式.星期:性别:季节支付方式:二、如何定义枚举类方式一:jdk5.0之前,自定义枚举类package compareTest;/** 自定义枚举类:*/public class SeasonTest { public static void main(String[] args) {
2021-06-02 15:29:35 86 1
原创 多线程一看就会,一问就废
多线程idea的一些设置bin 目录下 idea64.ex3.vmoptions-Xms128m //初始的内存值,增加该值可以提高Java程序的启动速度 16G内存的机器可尝试设置为Xms512m-Xmx750m //设置最大内存数,提高改值,可以减少内存Garage收集的频率,提高程序的性能-XX:ReservedCodeCacheSize=512m //保存的代码缓存512m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPer
2021-05-27 17:36:10 106
原创 集合一看就会,一问就废
根着尚硅谷老师java视频做的笔记集合Java集合框架概述集合、数组都是对多个数据进行存储操作的结构,简称Java容器.说明:此时的存储,主要是指的是内存层面的存储,不涉及持久化存储(.txt,.jpg,.avi, 数据库中)数组存储多个数据方面的特点2.1特点一旦初始化以后,长度就确定了数组一旦定义好,其元素的类型也确定了.我们也就只能操作指定类型的数据了,比如:String[] arr; int[] arr1; Object[] arr2;(Object可以装他的子类)
2021-05-22 13:17:04 145
原创 异常
跟着尚硅谷老师视频学习笔记异常1.异常概述与异常体系结构异常:在Java语言中,将程序执行中发生不正常情况称为异常(开发过程中语法错误和逻辑错误不是异常)异常事件可分为两类Error:java虚拟机无法解决的严重问题.如:JVM系统内部错误、资源耗尽等严重情况.比如:StackOverflowError和OOM.一般不编写针对性代码进行处理//StackOverflowError 栈溢出public class ErrorTest { public static vo
2021-05-10 13:46:45 99 2
原创 包装类的使用
包装类(Wrapper)/** 包装类的使用* 1.java提供了8种基本数据类型对象的包装类,使得基本数据类型的变量具有类的特征* 2.掌握的:基本数据类型 String 包装类三者之间的转换* */基本数据类型 String 包装类三者之间的转换基本数据类型–>包装类package T1;import org.junit.Test;public class WrapperTest { //基本数据类型-->包装类 //调用包装类的构造器
2021-05-09 15:45:05 92
原创 面向对象(下)
面向对象(下)关键字 :static/** static关键字的使用* 1.static:静态的* 2.static 可以用来修饰:属性、方法、代码块、内部类 不可以修饰构造器* 3.使用static修饰属性:静态变量(类变量)* 3.1 属性:按是否使用static修饰,又分为:静态属性vs非静态属性(实例变量)* 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性,当修改其中一个对象的* 非静态属性时
2021-05-09 15:39:08 115
原创 链表 148. 排序链表
题目内容给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-105 <= Node.val <
2021-05-06 16:01:46 193
原创 链表 1290. 二进制链表转整数
题目内容给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]输出:18880示例 5:输入
2021-05-06 14:09:12 93
原创 1379. 找出克隆二叉树中的相同节点
题目内容给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。其中,克隆树 cloned 是原始树 original 的一个 副本 。请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。注意:你 不能 对两棵二叉树,以及 target 节点进行更改。只能 返回对克隆树 cloned 中已有的节点的引用。进阶:如
2021-05-04 20:54:46 69
原创 938. 二叉搜索树的范围和
题目内容给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <=
2021-05-04 20:52:23 82
原创 872. 叶子相似的树
题目内容请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。示例 1:输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,nu
2021-05-04 20:49:19 58
原创 206. 反转链表
题目内容给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能
2021-05-04 20:42:08 117
原创 92. 反转链表 II
题目内容给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]提示:链表中节点数目为 n1 <= n <= 500-500 &
2021-05-04 20:40:17 248
原创 面向对象(上)
根据尚硅谷老师视频笔记总结面向对象(上)java面向对象学习的三条主线Java类及类成的成员:属性、方法、构造器、内部类面向对象的三大特征:封装、继承、多态、(抽象性)其他关键字:this、super、static、final、abstract、interface、package、import“大处着眼,小处着手”面向过程与面向对象二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做.面向对象,将功能封装进对象,强调具备了功能的对象,
2021-05-01 16:02:45 118
原创 深度优先搜索 leetcode 563. 二叉树的坡度
题目内容给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。示例 1:输入:root = [1,2,3]输出:1解释:节点 2 的坡度:|0-0| = 0(没有子节点)节点 3 的坡度:|0-0| = 0(没有子节点)节点 1 的坡度:|2-3| = 1(左子树就是左子节点,所以和
2021-04-26 12:50:06 163
原创 深度优先搜索 leetcode 559. N 叉树的最大深度
题目内容给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例 1:示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:5提示:树的深度不会超过 1000 。树的节点数目位于 [0, 104] 之间。来源:力
2021-04-26 11:49:18 85
原创 深度优先搜索 leetcode 112. 路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。java解答/** * Definition for a binary tree node. *
2021-04-26 10:53:10 83
原创 深度优先搜索 leetcode 111. 二叉树的最小深度
题目内容给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000来源:力扣(LeetCode)链接:https://le
2021-04-24 20:47:48 94
原创 数组
跟着尚硅谷老师视频写的笔记# 数组数组,是多个相同类型按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理.* 数组的特点:* 1.数组是有序排列的* 2.数组是引用类型变量,数组的元素既可以是基本数据类型,也可以引用数据类型* 3.创建对象会在内存中开辟一整块连续空间* 4.数组的长度一旦确定,就不能修改*数组的分类 按照维数:一维 二维 按照类型:基本数据类型元素的数组、引用数据类型元素的数组一维数组的使用一维数组的声明和初始化如.
2021-04-24 19:36:54 101
原创 深度优先搜索 leetcode 110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true提示:树中的节点数在范围 [0, 5000] 内-104 <= Node.val <=
2021-04-24 17:29:08 84
原创 深度优先搜索 leetcode 101. 对称二叉树
题目内容给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/s
2021-04-24 16:38:40 66
原创 2021-04-24
动态规划 leetcode 100. 相同的树题目内容给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false 提示: 两棵树
2021-04-24 16:23:15 57
原创 深度优先搜索 leetccode 104. 二叉树的最大深度
题目内容给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。通过次数401,248提交次数527,485来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-bin
2021-04-24 16:20:20 95
原创 深度优先搜索 108. 将有序数组转换为二叉搜索树
题目内容给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[
2021-04-24 16:14:32 89
原创 基本语法
视频笔记看尚硅谷老师整理的基本语法关键字被java语言赋予了含义,用做专门用途的字符串(单词)关键字中所有字母都为小写保留字goto const 尚未使用的,以后可能会用,但不一定用标识符Static可以通过,因为java严格区分大小写如果不遵守如上规则,编译不通过,需要大家严格遵守标识符的命名规范(不遵守可以通过,但是建议遵守)包名:多单词组成时所有字母都小写:xxxyyyzzz类名 接口名:多单词组成时,所有单词首字母大写XxxYyyZzz变量名 方法名:多单词组
2021-04-22 10:19:13 106
原创 Java语言概述
跟着尚硅谷老师视频记得笔记概述语言的历史2004年JDK 1.5更名为5.02009年Oracle公司收购SUN2014年JDk 8.0java语言体系平台传统的角度来看Java SE 标准版,支持桌面级应用(很少用它去写了)Java EE 企业版Java MeJava Card从现在的角度看企业级应用Android平台应用大数据平台开发Java语言的特点1.舍弃了c语言容易引起错误的指针(以引用取代)2.比c语言增加了垃圾回收器功能3…(这些特点
2021-04-18 16:45:57 341 1
原创 反射
一个类在 JVM 中只会有一个 Class 实例代码链接地址,这篇文章值得读public class Person { public String name = "zhangsan"; private int a; public Person(int b) { this.a=a; }}public class A { public static void main(String[] args) throws ClassNotFoundExce
2021-04-16 16:48:12 63
原创 5问明白多态(深挖笔试题)
5问明白多态(深挖笔试题)请问运行结果是啥?public class InterviewTest1 { public static void main(String[] args) { Base1 base = new Sub1(); base.add(1, 2, 3); Sub1 s = (Sub1) base; s.add(1, 2, 3); }}class Base1 { public void add(int a, int... arr) { System.o
2021-04-16 16:46:20 117
原创 Integer你需要知道的(== equals hashCode)
IntergerString你需要知道的看这个猜猜结果是什么?public interface A { public static void main(String[] args) { Integer a=127; Integer b=127; Integer c=221; Integer d=221; System.out.println(a==b); System.out.println(a.e
2021-04-16 16:39:32 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人