自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

klaus的博客

记录学习生活

  • 博客(83)
  • 问答 (1)
  • 收藏
  • 关注

原创 SpringMVC

Controller1. 实现 Controller 接口不需要处理器映射器适配器。ControllerTest1.javapackage com.klaus.controller;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest;impo

2021-08-05 00:06:52 166

原创 JZ26 二叉搜索树与双向链表

原题链接描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示注意:1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继2.返回链表中的第一个节点的指针3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构4.你不用输出或者处理,示例中输出里面的英文,比如"From left to right are:"这样的,程序会根据你的返回值自动打印输出示例1输入:{10

2021-08-04 16:30:09 158

原创 JZ24 二叉树中和为某一值的路径

原题链接描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。示例1输入:{10,5,12,4,7},22返回值:[[10,5,7],[10,12]]示例2输入:{10,5,12,4,7},15返回值:[]思路从根结点开始向下遍历,每经过一个结点就把 target 的值减去该结点的 val,并把该结点的 val 加进 arrayList<Integer>当中

2021-08-03 09:33:07 149

原创 ArrayList的add()方法

ArrayList中,add 添加引用类型变量时会直接将该变量的引用添加进去,并不会进行深拷贝复制,因为add()方法如下public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true;}可以明显看出来,他直接扩充大小然后将待赋值的元素添加,所以如果想要在 ArrayList<ArrayLi

2021-08-03 09:02:31 3431

原创 JZ23 二叉搜索树的后序遍历序列

原题链接描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)示例1输入[4,8,6,12,16,14,10]返回值:true思路就是根据二叉树后序遍历结果判断是不是 BST。结合他俩的特点:后序遍历:根节点是末位结点。BST:左子树的所有结点的值小于根结点的值,右子树所有结点的值大于根节点的值;左右子树仍然是 BST。这样就比较好解决了,在数组

2021-08-02 11:48:25 63

原创 hexo 中 Template render error

当时遇到了这个错误,后来检查了下文章应该是由于里面涉及到数组用了大括号{},导致这里出错,然后使用代码段将大括号包起来解决问题。

2021-08-02 09:31:33 387

原创 JZ59 按之字形顺序打印二叉树

原题链接描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]示例1输入:{1,2,3,#,#,4,5}返回值:[[1],[3,2],[4,5]]示例2输入:{8,6,10,5,7,9,11}返回值:[[8],[10,6],[5,7,9,11]]示例3输入:{1,2,3,4,5}返回值:[[1],[

2021-08-01 14:48:28 68

原创 JZ60 把二叉树打印成多行

原题链接描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树多行打印层序遍历的结果是[ [1], [2,3], [4,5] ]示例1输入:{1,2,3,#,#,4,5}返回值:[[1],[2,3],[4,5]]示例2输入:{8,6,10,5,7,9,11}返回值:[[8],[6,10],[5,7,9,11]]示例3输入:{1,2,3,4,5}返回值:[[1],[2,3],[4,5]]

2021-07-30 09:32:47 47

原创 JZ22 从上往下打印二叉树

原题链接描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。示例1输入:{5,4,#,3,#,2,#,1}返回值:[5,4,3,2,1]思路层次遍历。解答import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Queue;public class Solution { public ArrayList<Integer> PrintFromTopToBo

2021-07-29 23:12:50 116 1

原创 JZ18 二叉树的镜像

原题链接描述操作给定的二叉树,将其变换为源二叉树的镜像。比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5示例1输入:{8,

2021-07-28 08:35:15 81

原创 MyBatis缓存

** 使用缓存的数据:**经常访问但不常改变的数据。MyBatis 缓存MyBatis 默认定义了两级缓存:一级缓存和二级缓存默认情况下,只有一级缓存开始(sqlSession 级别的缓存,也叫本地缓存)二级缓存需要手动开启并配置,是基于 namespace 级别的缓存为了提高扩展性,MyBatis 定义了缓存接口 Cache,通过实现 Cache 接口定义二级缓存一级缓存缓存失效:增删改操作会刷新缓存,刷新缓存中所有内容。如@Testpublic void testQuery

2021-07-27 19:52:01 43

原创 2021/7/27

和我一起迎接明天早晨的太阳吧!

2021-07-27 15:08:38 50

原创 MyBatis复杂查询环境

wc,还是没明白数据库环境创建创建的 teacher 和 student 是一对多的关系。要查询的就是所有学生以及对应的老师的名字,显然要组合表。感觉方法一比较简单,进行原始的 sql 查询,得到的结果根据 resultMap 进行映射即可。映射原则:对于普通类型直接使用:<result property="name" column="name" />;(property是 pojo 类中的属性,column 是该属性对应数据库字段)而如果是集合,使用<collection pr

2021-07-27 10:32:14 52

原创 2021-07-26 MyBatis注解开发

注解开发简单demo注解配置的本质是 Java 反射,底层是动态代理程序结构UserMapper.javapackage com.klaus.dao;import com.klaus.pojo.User;import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper { @Select("select * from user") List

2021-07-26 20:43:18 91

原创 JZ17 树的子结构

原题链接描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例输入:{8,8,#,9,#,2,#,5},{8,9,#,2}返回值:true思路从 A树(root1为根)开始和 B树(root2为根)进行匹配,root1 和 root2 的 val 相等,那么进一步深入判断他俩左右子树是否相等;如果左右不等,分别将 A 树的左右孩子和 B 树比较,直到有一方为空说明 B 树不是 A 树的子树。在 root1 和 root2 相等时,说明 A

2021-07-25 20:41:15 54

原创 MyBatis的CRUD

namespaceUserMapper.xml 中的 namespace的包名要和接口中的包名一致,指向 UserMapper 接口。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- nam

2021-07-25 15:23:13 80

原创 MyBatis的使用

一、环境搭建CREATE DATABASE mybatis;USE mybatis;CREATE TABLE USER(id INT(20) NOT NULL PRIMARY KEY,`name` VARCHAR(30) DEFAULT NULL,pwd VARCHAR(30) DEFAULT NULL)ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO USER(id, NAME, pwd) VALUES(1,'klaus', '12345

2021-07-25 10:48:20 55

原创 JZ57 二叉树的下一个结点

原题链接描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。示例1输入:{8,6,10,5,7,9,11},8返回值:9示例2输入:{8,6,10,5,7,9,11},6返回值:7示例3输入:{5},5返回值:"null"说明:不存在,后台打印"null"思路给了二叉树的层次遍历,以及其中的某个结点,求中序遍历该结点的下一个结点。如果该结点是其父节点的左孩子,那中序遍历下一个

2021-07-24 20:31:56 61

原创 2021-07-24 SpringAOP

小小的疑惑,我还是不懂啊。代理模式,切面,切入点AOP面向切面编程代理模式代理模式就是SpringAOP的底层。代理模式的分类:静态代理动态代理静态代理角色分析:抽象角色:一般使用接口或抽象类真实角色:被代理的角色代理角色:代理真实角色,会做一些附属操作客户:访问代理对象的人代理模式的好处:可以使真实角色的操作更加纯粹公共业务交给了代理角色,实现类业务的分工公共业务发生扩展的时候,方便集中管理缺点:之歌真实角色就会产生一个代理角色;代码量翻倍代码分

2021-07-24 17:26:49 41

原创 2021-07-24 Spring

目录Spring优点IOCIOC创建对象的方式依赖注入(DI)1. 构造器注入2. Set方式注入3. 拓展方式注入3.1 p命名空间3.2 c命名空间Bean的作用域Bean的自动装配测试环境byName自动装配byType自动装配使用注解实现自动装配@Resource和@Autowired:使用注解开发@Component 衍生的注解使用Java方式进行配置Spring优点spring是一个开源的买南非框架spring是一个轻量级的、非入侵式的框架IOC、AOP支持事务处理,对框架整合的支持

2021-07-24 17:25:15 62

原创 JZ36 两个链表的第一个公共结点

原题链接描述输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)示例1输入:{1,2,3},{4,5},{6,7}返回值:{6,7}说明:第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分,这3个参数最后在后台会组装成为2个两个无环的单链表,且是有公共节点的 示例2输入:{1},{2,3},{}返

2021-07-20 10:27:15 50

原创 JZ25 复杂链表的复制

原题链接描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。示例输入:{1,2,3,4,5,3,5,#,2,#}输出:{1,2,3,4,5,3,5,#,2,#}解析

2021-07-20 09:55:41 48

原创 JZ16 合并两个排序的链表

原题链接描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。示例输入:{1,3,5},{2,4,6}返回值:{1,2,3,4,5,6}思路新建一个链表。对两个待合并的链表结点进行比较,总是插入两个链表中较小的那个,直到有链表为空,就把另一个链表的所有剩余结点加到新建链表的后面。解答public class Solution { public ListNode Merge(ListNode list1,ListNode list

2021-07-19 20:46:40 39

原创 Java 线程

目录线程使用线程继承Thread实现Runnable使用Callable和Future创建线程(Java 5)比较线程的生命周期新建、就绪运行、阻塞死亡控制线程join线程后台线程线程睡眠线程让步与sleep的区别线程优先级线程同步同步代码块同步方法同步锁死锁线程通信传统线程通信使用Condition控制线程通信使用阻塞队列控制线程通信线程组线程池包装线程不安全的类线程线程是进程的执行单元,一个进程可以有多个线程,一个线程必须有一个父进程。线程和父进程的所有线程共享该进程的资源。线程的执行是抢占式

2021-07-19 17:08:38 59

原创 JZ15 反转链表

原题链接描述输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}返回值:{3,2,1}思路要把链表反转,就是把从第一个结点开始遍历,依次把每个结点放在当前链表中的头结点位置,保证每次处理的结点之前子的链表是已经反转了的,直到遍历完为止。作图的话就是这样。0号结点是为了便于处理新建的附加头节点,如果要把2号结点放在当前链表的头结点位置,首先要保存附加头节点后面的内容,然后让附加头结点指向2号结点,2号结点再指向刚刚保存的附加头结点后面的内容,也就是已经反转过的链表。

2021-07-19 10:21:18 58

原创 JZ55 链表中环的入口结点

题目描述描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表返回值描述:返回链表的环的入口结点即可。而我们后台程序会打印这个节点示例1输入:{1,2},{3,4,5}返回值:3说明:返回环形链表入口节点,我们后台会打印该环形链表入口节点,即3 示例2输入:{1},{}返回值:"null"说明:没有环,返回null,后台打印"n

2021-07-18 22:12:23 85

原创 2021-07-18

线程使用线程继承Thread实现Runnable使用Callable和Future创建线程(Java 5)比较线程的生命周期新建、就绪运行、阻塞死亡控制线程join线程后台线程线程睡眠线程让步与sleep的区别线程优先级线程同步同步代码块同步方法同步锁死锁线程线程是进程的执行单元,一个进程可以有多个线程,一个线程必须有一个父进程。线程和父进程的所有线程共享该进程的资源。线程的执行是抢占式的。多线程的优点:进程之间不能共享内存,但线程可以创建线程的代价小很多Java内置多线程的功能.

2021-07-18 18:37:11 40

原创 JZ14 链表中倒数最后k个结点

原题链接描述输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。如果该链表长度小于k,请返回一个长度为 0 的链表。示例1输入:{1,2,3,4,5},1返回值:{5}##思路遍历链表变量,存在数组中,然后按序创建链表。假设链表长度为n,求k个结点组成的链表,只要返回第(n - k + 1) 个结点后面的不动就好了。双指针,创建两个结点初始化都指向链表头结点,然后让第一个向后移 k 个结点,如果移动过程中指向null,说明该链表长度小于 k 直接

2021-07-18 15:32:03 122

原创 JZ56 删除链表中重复的结点

原题链接描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}思路乍一看以为很简单的,但是做的过程还是遇到以下都问题:去除重复结点时会保留最后一个重复结点更新链表后没办法保存,因为只创建一个cur进行操作,最后cur指向的是null。不过都已经

2021-07-17 16:05:48 50

原创 JZ3 从尾到头打印链表

原题链接描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。示例1输入:{1,2,3}返回值:[3,2,1]示例2输入:{67,0,24,58}返回值:[58,24,0,67]解答暴力/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val =

2021-07-16 09:27:10 142

原创 JZ43 左旋转字符串

原题链接描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S,请你把其循环左移 K 位后的序列输出(保证 K 小于等于 S 的长度)。例如,字符序列S=”abcXYZdef”,要求输出循环左移 3 位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!示例输入:"abcXYZdef",3返回值:"XYZdefabc"思路又是偷懒了直接用了String(char[], int, int)的构造方

2021-07-15 09:02:42 52

原创 JZ44 翻转单词序列

原题链接描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?示例输入:"nowcoder. a am I"返回值:"I am a nowcoder."思路看了这哥的,好

2021-07-14 22:02:57 46

原创 JZ64 滑动窗口的最大值

原题链接描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,

2021-07-13 10:33:50 42

原创 JZ63 数据流中的中位数

原题链接描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。示例1输入:[5,2,3,4,1,6,7,0,8]返回值:"5.00 3.50 3.00 3.50 3.00 3.50 4.00 3.50 4.00 "说明:数据流里面不断吐出的是5,2,3...,则得到的

2021-07-12 20:57:22 36

原创 Java集合(四)

Map每一个Map元素包括两个值,一个是key另一个是value,二者存在映射关系,也就是可以通过key索引得到唯一对应的value。所以Map中key不允许重复,key的相等与否通过equals()方法确定,key和value都是任何引用类型的数据。Map中的key在一起就组成了一个Set集合(无序、不重复),并且Map提供了keySet()方法,用于返回所有key组成的Set集合。Map和Set有很多相似的地方,如果把Map中存储的Key-Value对称一个变量,并且value是key的附庸,k

2021-07-12 17:59:28 64

原创 ==和equals方法的区别

public static void main(String[] args) { String a = "a"; String b = new String("a"); String c = new String("a"); String d =c; System.out.println(a==b);//false System.out.println(a.equals(b));//true System.out.println(b==c);//fa

2021-07-12 17:38:53 43

原创 牛客网之SQL---持续更新

SQL1 查找最晚入职员工的所有信息select * from employeesorder by hire_date desclimit 1;SQL2 查找入职员工时间排名倒数第三的员工所有信息select *from employeesorder by hire_date desclimit 2,1;SQL3 查找当前薪水详情以及部门编号dept_noselect s.*,d.dept_no from salaries s, dept_manager dwhere s.em

2021-07-12 11:12:15 150

原创 JZ29 最小的K个数

原题链接描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。0 <= k <= input.length <= 10000;0 <= input[i] <= 10000。示例1输入:[4,5,1,6,2,7,3,8],4 返回值:[1,2,3,4]说明:返回最小的4个数即可,返回[1,3,2,4]也可以 示例2输入:[1], 0返回值:[]示例3输入:[0,1,

2021-07-12 11:11:05 83

原创 Vector补充

前面只说了vector是线程安全的。下面是对其部分源码的解读。构造函数Vector(int initialCapacity, int capacityIncrement)initialCapacity是Vector初始长度,capacityIncrement是在当前长度不够进行扩容时的扩容长度。Vector(int)只声明了初始长度,capacityIncrement是0。Vector()默认长度是10。Vector(Collection )将Collection转.

2021-07-11 17:00:45 204

原创 JZ21 栈的压入、弹出序列

原题链接描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)示例1输入:[1,2,3,4,5],[4,3,5,1,2]返回值:false思路用一个栈模拟这个过程。① 将pushA的第一个未入栈的元素入栈,然后判断栈顶元素是不是p

2021-07-11 16:12:42 39

空空如也

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

TA关注的人

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