AVL树平衡条件若一个节点的左右孩子,高度差大于1,节点失衡
失衡情况
LL
– 失衡节点的左边更高
– 失衡节点的左孩子的平衡因子>=0,即左孩子这边也是左边更高或等高
LR
– 失衡节点的bf>1,左边更高
– 失衡节点的左孩子的bf<0,即左孩子右边更高
RL
– 失衡节点的bf<-1,右边高
– 失衡节点右孩子的左边更高
RR
– 失衡节点的bf<-1,即右边更高
– 失衡节点的右孩子的右边更高
代码实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 ...
JVM定义:
Java Virture Machine -java的运行环境(java字节码的运行环境)
好处:
一次编写,到处运行
自动内存管理,垃圾回收功能
数组下标越界,越界检查
多态
结构图
相关参数
程序计数器:
作用:记住下一条jvm需要操作的执行地址
是线程私有的,每个线程都独有一个程序计数器
在多线程操作下,每个线程都独立拥有一个程序计数器,当时间片用完时,程序计数器会保存当前运行地址,再次抢占到cpu时间片时,会再次激活该线程
不会发生内存溢出
栈内存栈(Java Virtual Machine Stacks):线程运行时需要的内存空间,称为虚拟机栈
栈帧:每个方法运行时需要的内存,对应着每次方法调用所需要的内存
活动栈帧:每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
注:
垃圾回收是否涉及栈内存
栈内存在方法执行结束后,会自动弹出栈,不需要GC支持
栈内存是不是分配越大越好
使用 -Xss size命令指定栈大小,不指定默认为1024kb,windows除外,
物理内存是固定的,一个栈对应一个线程,栈内存越大,线程数越小
...
spring
未读ioc添加依赖1234567<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.10.RELEASE</version> </dependency></dependencies>
创建spring配置文件12345<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
Linux1. 重启
init 6
rebot
2.目录
查看当前目录
pwd
切换当前目录
cd 目录名
列出目录文件
ls /目录名字 列出指定目录下面的文件
ll
3.清屏
clear
4. 日期
date 查看日期
date -s ‘日期’ 修改日期
5. Linux目录和文件5.1 目录概要登录系统之后,输入ls /,将显示以下内容:
5.2 相对路径和绝对路径5.3 返回上一级目录
cd ..
5.4注意事项
资源管理器目录
磁盘目录
6.上古神器vi6.1 打开/创建文件
vi 文件名 文件存在就打开文件,不存在就创建一个新的文件
编辑或命令模式
编辑模式:按下键盘 I ,右下角会出现提示
按下esc,退出编辑模式,转换成为命令模式
保存:按下 :X
上下左右快捷键
键盘按键 :K J L H 相当于上下左右键
插入快捷键
i 在光标所在位置前面开始插入。a 在光标所在的位置后面开始插入。o 在光标所在位置行的下面插入空 ...
spring
未读springmvc执行流程简介MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。
MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean组件,不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,将逻辑视图解析成物理视图并渲染。
Controller(控制器):接收用户请求,委托给模型进行处理,处理完毕后把返回的模型数据返回给视图,由视图负责展示。起调度作用。
架构图
java
未读ThreadLocal简介
1234总结:1. 线程并发:多线程并发场景下2. 数据传递:可以使用threadlocal在同一个线程不同组件中传递公共变量3. 线程隔离:每个线程都是独立互不干扰的
基本使用常用方法
案例
当前案例是使用thradlocal保存变量信息
如果不创建threadlocal线程就会发生信息错乱的情况
1234567891011121314151617181920212223242526public class MyDemo01 { ThreadLocal<String> tl = new ThreadLocal<>(); private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(Stri ...
相交链表(不存在环)
解法一(哈希表)
第一步:创建哈希表,将第一个链表塞入哈希表
第二步:将链表二塞进哈希表,如果链表二全部可以塞进去,说明不相交,繁殖链表相交
1234567891011121314151617181920212223242526272829/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { HashSet<ListNode> set = new HashSet<>() ...
链表判断链表是否有环
方式一(哈希表)
使用哈希表
从头到尾遍历链表
依次塞进哈希表,在塞进哈希表之前,先检查表中是否存在该节点
存在,就说明有环
链表遍历到尾部,也没有发现,就说明该链表没有环
代码实现过程
123456789101112131415161718192021222324/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public boolean hasCycle(ListNode head) { HashSet<ListNode> set = new HashSet(); ListNode node = head; ...