自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java集合类学习--Map

概述Map 是一个接口,它表示一种“键-值(key-value)”映射的对象(Entry),其中键是不重复的(值可以重复),且最多映射到一个值(可以理解为“映射”或者“字典”)。Map 常用的实现类有 HashMap、TreeMap、ConcurrentHashMap、LinkedHashMap 等,它们的继承结构如下:接口下的方法有:源码分析常用方法// 将键-值对存入 Map,若 key 对应的 value 已存在,则将其替换// 返回原先 key 对应的 value(若不存在,返回

2020-09-30 21:12:51 157

原创 Java集合类学习--ArrayBlockingQueue

概述ArrayBlockingQueue是下一个以数组实现的阻塞队列,它是线程安全的。是BlockingQueue接口的一个主要实现类,本文分析该类的常用方法实现。ArrayBlockingQueue 的类继承结构如下:源码分析构造器// 构造器 1:初始化 ArrayBlockingQueue 对象,使用给定的容量public ArrayBlockingQueue(int capacity) { // 调用构造器 2 进行初始化,默认使用非公平锁 this(capacity,

2020-09-29 18:59:32 175

原创 Java集合类学习--BlockingQueue

概述BlockingQueue 意为“阻塞队列”,它在 JDK 中是一个接口。所谓阻塞,简单来说就是当某些条件不满足时,让线程处于等待状态。例如经典的“生产者-消费者”模型,当存放产品的容器满的时候,生产者处于等待状态;而当容器为空的时候,消费者处于等待状态。阻塞队列的概念与该场景类似。BlockingQueue 继承自 Queue 接口,它的常用实现类有 ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue 等。源码分析方法定义:用法分析:/

2020-09-28 20:02:02 123

原创 Java集合类学习--LinkedList

概述LinkedList 内部是一个双向链表,并且实现了 List 接口和 Deque 接口,因此它也具有 List 的操作以及双端队列和栈的性质。双向链表的结构如下:LinkedList 的继承结构如下:源码分析重要部分1、结点类 Node(内部类)private static class Node<E> { E item; // 存储的数据 Node<E> next; // 后继结点 Node<E> prev; // 前驱结点

2020-09-27 20:32:17 128

原创 Java集合类学习--ArrayList

概述ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」。我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList 内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,这也是 ArrayList 的核心所在。ArrayList 的主要方法与 List 基本一致,因此这里重点分析其内部结构和扩容的原理。源码分析构造器 //指定初始化容量的构造器 public Ar

2020-09-26 22:21:28 129

原创 Java集合类学习--Queue, Deque

概述Queue 和 Deque 都是接口。其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue)。Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备「队列」和「栈」的性质。二者的继承关系如下:QueueQueue是一个接口,有如下方法:代码不多,一共200多行,根据操作可以分为三类:入队、出队和遍历。入队:add() 和 offer()二者区别在于:当队列空间已满无法入队时,add

2020-09-25 20:36:11 1118

原创 Java集合类学习--Vector

概述Vector 的内部实现与 ArrayList 类似,也可以理解为一个「可变数组」。由于 Vector 目前使用较少,且官方也推荐在无线程安全的需求时使用 ArrayList 代替 Vector,这里仅研究其实现原理。其继承结构如下(省略部分接口):源码分析构造器Vector 对外提供四个构造器:protected Object[] elementData;protected int capacityIncrement;// 无参构造器public Vector() { t

2020-09-24 18:16:34 96

原创 Java集合类学习--Set

SetJDK对Set的实现进行了取巧。我们都知道Set不允许出现相同的对象,而Map也同样不允许有两个相同的Key(出现相同的时候,就执行更新操作)。所以Set里的实现实际上是调用了对应的Map,将Set的存放的对象作为Map的Key。Set接口的方法如下:由此可以看出,Set基本上就保持了Collection的原方法,所以,就从Set的实现开始学习。Set的实现主要有HashSet,TreeSet,后续进行细致学习分析。...

2020-09-23 17:18:22 152

原创 Java集合类学习--List

ListList 是最常用的容器之一。List继承自Collection ,分析源码时,优先分析接口的源码,因此这里先从 List 接口分析。List 方法列表如下:由于继承自Collection ,所以继承方法就不再学习,找出List中新特有的方法即可。void add(int index, E element)将指定的元素插入此列表中的指定位置(可选操作)。boolean addAll(int index, Collection<? extends E> c)将指定集合中的所

2020-09-22 17:56:22 156

原创 Java集合类学习--Collection

CollectionJava 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。而 Collection 接口又是集合层次中的根接口,最常用的 List 和 Set 接口都继承自它。它们的继承结构如下(常用部分):Collection 接口有很多方法,如下:简单分析:size(): 集合中包含的元素个数;isEmpty(): 集合是否为空

2020-09-21 17:10:37 141

原创 在路上(四)

2020-09-20 00:09:07 78

原创 在路上(三)

2020-09-19 09:18:12 82

原创 在路上(二)

2020-09-18 00:21:07 60

原创 在路上(一)

2020-09-17 15:30:38 50

原创 算法--翻转二叉树

描述翻转一棵二叉树。示例分析反转二叉树,可以先交换根节点的两个子节点,然后通过同样的方式在交换根节点的子节点的两个子节点。1.从root开始遍历二叉树;2.只要当前节不为空,交换两个子节点;3.对子节点重复上述步骤实现/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *

2020-09-16 18:28:00 264

原创 拉勾课堂--代码优化法则

代码优化法则1.使用局部变量可避免在堆上分配由于堆资源是多线程共享的,是垃圾回收器工作的主要区域,过多的对象会造成 GC 压力。可以通过局部变量的方式,将变量在栈上分配。这种方式变量会随着方法执行的完毕而销毁,能够减轻 GC 的压力。2.减少变量的作用范围注意变量的作用范围,尽量减少对象的创建。如下面的代码,变量 a 每次进入方法都会创建,可以将它移动到 if 语句内部。public void test1(String str) { final int a = 100; if (!

2020-09-15 18:58:15 379

原创 算法--寻找两个正序数组的中位数

描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5分析及代码参考:https://leetcode-cn.com/p

2020-09-14 18:22:03 227

原创 Lua入门学习

简介lua是什么Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。特性支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;

2020-09-13 16:42:09 429

原创 算法--只出现一次的数字

描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析使用map,进行两次for循环,即可实现class Solution { public int singleNumber(int[] nums) { Map<Integer, I

2020-09-12 18:26:43 75

原创 算法--环形链表

描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos =

2020-09-11 18:34:03 121

原创 算法--验证回文串

描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false分析使用双指针。初始时,左右指针分别指向字符串的两侧,随后我们不断地将这两个指针相向移动,每次移动一步,并判断这两个指针指向的字符是否相同。当这两个指针相遇时,就说明是回文串。实现class

2020-09-10 19:04:07 154

原创 使用pgAdmin4连接PolarDB

polarDB简介pgAdmin4安装及使用

2020-09-09 18:29:44 881 2

原创 算法--路径总和

描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例分析从根节点开始,使用递归,判断左节点或者右节点到叶子节点是否存在sum-root.val即可。实现class Solution { public boolean hasPathSum(TreeNode root, int sum) { if (root == null) { return fa

2020-09-08 18:46:12 664

原创 2020-09-07问题记录

问题记录由于项目中使用了elasticsearch的相关功能,所以需要使用es客户端进行操作一些基本的增删改查操作,使用的是restHighLevelClient。该功能已经上线,且在生产环境已经平稳运行了半年之久,没有任何问题。下午的时候,测试环境服务重启,有同事反映相关微服务无法启动,报错信息如下:分析并排查分析:1.版本问题由于上周进行整体项目进行扫描,对一些原始jar进行升级替换,相关同事原本想要升级es的版本,由于服务端的版本是固定的,我们采用的jar只能与之匹配,不能升级,所以没

2020-09-07 18:49:09 418

原创 算法--将有序数组转换为二叉搜索树

描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:分析参考https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/solution/jian-da

2020-09-06 23:00:56 107

原创 算法--二叉树的最大深度

描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例分析采用递归法:递归问题,主要是拆分子问题和明确递归出口。1.第一步,初始化工作。2.第二步,计算根结点到左右子树高度。3.第三步,递归计算左右子树最大高度。4.最后,返回二叉树的最大深度。实现/** * Definition for a binary tree node. * public class TreeNode { * int

2020-09-05 16:55:48 177

原创 算法--对称二叉树

描述给定一个二叉树,检查它是否是镜像对称的。示例分析参考官方解法,使用两种方式完成:1.递归如果一个树的左子树与右子树镜像对称,那么这个树是对称的。如果同时满足下面的条件,两个树互为镜像:它们的两个根结点具有相同的值每个树的右子树都与另一个树的左子树镜像对称我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,pp 指针和 qq 指针一开始都指向这棵树的根,随后 pp 右移时,qq 左移,pp 左移时,qq 右移。每次检查当前 pp 和 qq 节点的值是否

2020-09-04 18:15:05 132

原创 算法--相同的树

描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例分析使用深度优先遍历分析终止条件与返回值:1.当两棵树的当前节点都为 null 时返回 true2.当其中一个为 null 另一个不为 null 时返回 false3.当两个都不为空但是值不相等时,返回 false实现/** * Definition for a binary tree node. * public class TreeNode { *

2020-09-03 18:45:36 109

原创 算法--爬楼梯

描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶 示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶分析本问题其实常规解法可以分成多个子问题,爬第n阶楼梯的方法数量,等于 2 部分之和。爬上

2020-09-02 18:54:34 360

原创 Springboot整合thymeleaf

简介使用springboot 来集成使用Thymeleaf可以大大减少单纯使用thymleaf的代码量,所以我们接下来使用springboot集成使用thymeleaf.实现的步骤为:创建一个sprinboot项目添加thymeleaf的起步依赖添加spring web的起步依赖编写html,使用thymleaf的语法获取变量对应后台传递的值编写controller ,设置变量的值到model中整合(1)创建工程创建一个独立的工程springboot-thymeleaf添加pom.

2020-09-01 21:17:08 114

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

2023-05-05

SpringBoot经典学习笔记.pdf

网络上传播的关于springboot的开发学习笔记,适用于初学者在入门阶段学习使用,关于注解开发还有一些底层简单实现。

2020-06-01

空空如也

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

TA关注的人

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