自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (2)
  • 收藏
  • 关注

原创 一篇文章搞懂AQS!!!(持续更新)

AQS的核心思想如果当前共享资源是空闲的,那么便会将请求资源的这个线程设为工作线程,并把资源的状态设置为锁定状态;如果资源正在被占用,那么就将请求的线程加入到工作队列(CLH队列中),等待唤醒。CLH队列结构AQS类的一些重要的字段private volatile int state:同步状态(The synchronization state)(Exclusive和Share两种状态,分别来表明是独占的,还是共享的)private transient volatile Node h

2021-05-03 18:27:13 376

原创 LeetCode:树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。来自:leetcode网站剑指offer第26题 树的子结构下面给出两种解法,首先是自己的非递归解法,然后是leetcode一大佬的递归解法。非递归解法:public boolean isSubStructure(TreeNode A, TreeNode B) { if(A==null || B==null) return fal..

2021-05-01 23:46:51 372

原创 MySQL数据库:SQL执行顺序

MySQL数据库是我们常用的关系型数据库之一,对于MySQL,我们写的SQL语句大多包含以下部分:select 字段from 表join 连接类型on 连接字段where 条件group by 分组having 含聚合函数操作union 全连接order by 排序limit 分页那么,上面的SQL字段,是按照什么顺序执行的呢?SQL语句的执行顺序,是我们必须要掌握的,这关乎到我们写的SQL语句时候的思路以及写的SQL语

2021-04-30 10:54:42 597

原创 动态规划实战:算法解析+最优解+路径数+是否可行

题目来源都是LeetCode。题1:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物动态规划解法如下:class Solution {

2021-04-26 15:46:08 1203

原创 利用前序、中序建立二叉树

二叉树前序遍历特点:1. 遍历根节点;2. 递归遍历根节点左子树;3. 递归遍历根节点右子树;二叉树中序遍历特点:1. 递归遍历根节点左子树;2. 遍历根节点;3. 递归遍历根节点右子树;依据前序、中序遍历结果建立二叉树代码如下:class Solution { // 为了降低在中序遍历结果集中搜索当前根节点的时间 Map<Integer, Integer> map = new HashMap<Integer, Integer

2021-04-26 11:46:44 978

原创 搞定面试~LeetCode:栈相关题目,持续更新~

Stack:一个先进后出的数据结构。(下面是对leetcode上的一些栈相关题目的汇总,持续更新~)题目1:《剑指 Offer 31. 栈的压入、弹出序列》输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。输入:pushed = [1,2,3,4,5], p

2021-04-22 14:57:04 273 1

原创 LeetCode--回溯算法系列:持续更新

题目1:给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]class Solution { List<List<Integer>> lists = new ArrayList<List<Integer>>();...

2021-04-22 00:10:29 182

原创 面试:合并K个有序链表(二路归并+常规解法)

合并K个升序的有序链表,其实在本质上跟合并两个有序的链表是一样的,区别在于,前者需要合并更多次,而这个多次的合并过程也就是我们需要重点考虑的。首先,我们来看看合并两个升序的有序链表是如何实现的,代码如下:private ListNode mergeTwo(ListNode fRoot, ListNode sRoot){ // 如果存在一个为空,返回不为空的 if(fRoot==null || sRoot==null){ return fRoo

2021-04-21 15:24:30 369

原创 Springboot整合MyBatis:详细示例

Springboot整合MyBatis步骤pom文件中引入两个依赖:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency> <dependency>

2021-04-18 14:53:39 638 1

原创 ArrayList扩容机制:源码解读

这篇文章探讨ArrayList的扩容机制,配合源码讲解,所有的讲解都在代码上注释了,清晰易懂public boolean add(E e) { ensureCapacityInternal(size + 1); // 添加一个元素前,先确保容量是否够 elementData[size++] = e; return true;}//得到最小扩容量private void ensureCapacityInternal(int minCapacity.

2021-04-18 10:28:56 1012 2

原创 这么回答面试官之--HashMap扩容机制

HashMap扩容时,可以分为三种情况:1. 如果hashMap不是第一次进行扩容的时候,如果现在的容量已经达到了规定的最大值,则直接返回当前容量的大小,并将threshold设为最大整数值。否则将新容量和阈值(threshold)都扩大一倍。2. 如果构建hashMap的时候指定了初始容量,则将当前容量扩容到threshold(【通过tableSizeFor()计算得到的一个2的n次方的值【将传入的数改为2进制表示,把最高位后面都变成0,得到的才是真正的设定的初始容量,然后在延迟初始化的时候将该thr

2021-04-16 15:20:53 2605

原创 讲点人话:HashMap的put操作、过程

HashMap的put操作,网上有很多的解析,但是说的可能都不是个面试能回答的“人话”。如果别人问你HashMap是怎么put的,你可以这么说:根据key计算hash值,如果延迟初始化(table=null的时候)或者第一次加入元素时,进行扩容。如果通过hash值定位到的桶位置内没有元素,直接建立一个节点放入桶内。如果当前桶内存在元素的话,如果恰好是桶内的元素,则用新值代替旧值。如果桶内是红黑树节点,则在红黑树中进行put操作。如果桶内是普通链表节点,则遍历链表将节点加入。如果链表中存在相同

2021-04-16 14:57:44 509

原创 HashMap put操作,链表长度超过8,不一定会转化为红黑树!!!

我们常会说:“hashmap中,当链表的长度超过8,就会从链表转化为红黑树”。其实,这不是完全正确的。正确的说法是,“hashmap中,当链表长度超过8,且table数组的长度不小于64时,链表会转化为红黑树”。不信,我们来看看。首先,HashMap.class中存在这样一个参数:static final int MIN_TREEIFY_CAPACITY = 64;文档注释为:The smallest table capacity for which bins may be treeifi

2021-04-16 14:21:35 3892 3

原创 Java二叉树后序遍历:递归与迭代

二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。如下便是一棵二叉树:二叉树的后序遍历方式为:1. 如果根节点有左子树,遍历左子树2. 如果根节点有右子树,遍历右子树3. 遍历根节点注意,上述步骤1、2同样以1、2、3的顺序进行遍历。后序遍历方式1:迭代public List<Integer> postorderTraversal(TreeNode root) {

2021-04-16 01:22:01 1433 1

原创 建立索引的原则有哪些?

在建立数据库表的时候,建立索引,能帮助我们提升查询速度,在MyISAM和InnoDB数据库引擎中,都采用的B+树索引。如何建立索引?或者说建立索引的原则有哪些?这是面试官常会提及的问题。主要的一些原则有:建立唯一索引。唯一索引能够更快速地帮助我们进行数据定位; 为经常需要进行查询操作的字段建立索引; 对经常需要进行排序、分组以及联合操作的字段建立索引; 在建立索引的时候,要考虑索引的最左匹配原则(在使用SQL语句时,如果where部分的条件不符合最左匹配原则,可能导致索引失效,或者不能完全

2021-04-15 23:51:08 5746

原创 Java二叉树前序遍历:递归+非递归实现,非递归详解

二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。如下便是一棵二叉树:二叉树的前序遍历:1. 遍历根节点2. 如果存在左子树,先序遍历左子树3. 如果存在右子树,先序遍历右子树二叉树结构定义:class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.va

2021-04-13 23:01:37 2030 3

原创 HashMap容量为什么是2的n次方?如何做到的?

HashMap无疑是我们最常用的集合之一了,当我们调用HashMap(9)构建map的时候,它的容量是多少呢?划重点!HashMap(9)构建的map的容量是16!!!这也就引出了下面的问题:HashMap的容量为什么是2的n次方?HashMap是如何保证容量是2的n次方的?HashMap容量取2的n次方,主要与hash寻址有关。在put(key,value)时,putVal()方法中通过i = (n - 1) & hash来计算key的散列地址。其实,i = (n - 1) &

2021-04-12 00:41:06 7365 5

原创 这么回答面试官之--ConcurrentHashMap如何get?为何无需加锁

ConcurrentHashMap的get操作的步骤如下:通过key计算hash值 如果通过hash值判断key对应的节点是否在Node数组中,如果在则返回对应的值。此处分为3种情况: 如果恰好是数组元素,也即没有hash值计算得到的桶内只有一个节点,返回改节点的值; 如果是红黑树,则通过树的遍历方式去获取,然后返回值; 如果是普通链表,则通过链表的方式去获取。 如果通过hash值计算定位到的桶位置上没有元素,则返回null。public V get(Object key) {

2021-04-10 23:39:56 2202 4

原创 这么回答面试官之--ConcurrentHashMap如何put?

final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); // 根据key计算出hash code int hash = spread(key.hashCode()); int binCount = 0; for (Node<K,V&g.

2021-04-10 22:40:24 6432 3

转载 SpringBoot注解最全详解(整合超详细版本)

转载自:https://blog.csdn.net/weixin_40753536/article/details/81285046使用注解的优势:1.采用纯java代码,不在需要配置繁杂的xml文件2.在配置中也可享受面向对象带来的好处3.类型安全对重构可以提供良好的支持4.减少复杂配置文件的同时亦能享受到springIoC容器提供的功能一、注解详解(配备了完善的释义)------(可采用ctrl+F 来进行搜索哦~~~~)@Spr...

2020-07-07 11:54:14 313

转载 《Drools规则引擎》:lock-on-active与no-loop区别

转载自:https://blog.csdn.net/wo541075754/article/details/104446941使用modify或update的时候在某种程度上会导致死循环。昨天一同学在使用Drools规则引擎时便遇到了该问题。下面看该同学贴出来的规则代码:Drools规则引擎死循环首先我们来分析一下上面的代码,上面的代码中这位同学讲一个相同的Map,传递进入两个规则中,在规则的then部分中会对map的属性值进行更新。为了防止死循环他使用了no-loop属性。但是问题

2020-06-04 23:07:16 1178

CGLib代理模式用到的jar包

Spring AOP、动态代理中的CGLib代理依赖的所有jar包

2021-05-14

RabbitMQ_ErLang.zip

Rabbit和ErLang的配套,不会出现版本不兼容问题

2021-04-22

空空如也

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

TA关注的人

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