07 2020 档案
摘要:/** * 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 * https://leetcode-cn.com/problems/integer-break/solution/zheng-shu-chai-fen-by-leetcode-so
阅读全文
摘要:1、数据结构 ThreadLocal对象可以提供线程局部变量,每个线程Thread拥有一份自己的副本变量,多个线程互不干扰。 数据结构如下: Thread中存在threadLocals变量,类型是ThreadLocal.ThreadLocalMap ThreadLocal.ThreadLocalMa
阅读全文
摘要:1、可达性分析算法 通过一系列称为GC Roots的根对象作为起始节点集,根据引用关系向下搜索,搜索走过的路径叫做引用链,如果某个对象到GC Roots节点集没有任何的引用链也被称为不可达,则证明这个对象不可能再被使用。 可作为GC Roots根节点的: 在虚拟机栈(栈帧中的本地变量表)中引用的对象
阅读全文
摘要:import java.util.LinkedList; import java.util.Queue; /** * 给定一个二叉树,找出其最大深度。 * <p> * 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 * <p> * 说明: 叶子节点是指没有子节点的节点。 * <p> * 示
阅读全文
摘要:1、题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成
阅读全文
摘要:1、题目 爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。 最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝
阅读全文
摘要:1、题目 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 2、解题 经典
阅读全文
摘要:1、现象 增强for循环中进行remove、add会报ConcurrentModificationException 2、原理 增强for循环其实是交给iterator来完成增删改查的 看下iterator的代码,如下 /** * An optimized version of AbstractLi
阅读全文
摘要:1、题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1:输入:[3,4,5,1,2] 输出:1 示例 2:输入:[
阅读全文
摘要:1、运行时数据区域 1.1、程序计数器 一块较小的内存,它可以看作是当前线程所执行的字节码的行号指示器。 线程独有 唯一一个没有规定OutOfMemoryError情况的区域 1.2、Java虚拟机栈 线程私有,生命周期与线程相同 每个方法被执行的时候都会创建一个栈帧,方法的开始到结束对应了栈帧的入
阅读全文
摘要:1、自动装配过程 启动类注解一览 @SpringBootApplication @EnableDiscoveryClient @MapperScan("com.tpl.system.dao") public class SystemApplication { public static void m
阅读全文
摘要:1、概述 Mybatis允许使用插件拦截的方法调用包括: Excetor ParameterHandler ResultHandler StatementHandler 上图是Mybatis框架的整体执行架构,Mybatis插件能够对四大对象接口进行拦截。 Executor : Mybatis执行器
阅读全文
摘要:1、概念 红黑树是一种自平衡的二叉查找树,它在二叉查找树的基础上又具备如下特征: 节点是红色或黑色 根节点是黑色 每个叶子节点都是黑色的空节点(NIL节点) 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 从任一节点到其每个叶子节点的所有路径都包含相同数目的
阅读全文
摘要:1、概念 类加载阶段,通过一个类的全限定名来获取描述该类的二进制流文件,实现这个动作的代码就是类加载器。 2、类与类加载器 对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性。每个类加载器都有独立的类名称空间。通俗的说如果要比较两个类是否相同,必须在同一类加
阅读全文
摘要:1、概述 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 2、类加载的时机 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)
阅读全文
摘要:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以
阅读全文
摘要:1、单机版分布式锁 SET key value[EX seconds][PX milliseconds][NX|XX] key 标志位 value 唯一值,自己只能释放自己的锁 EX seconds 设置过期时间,单位为秒 PX milliseconds 设置过期时间,单位毫秒 NX 仅当key不存
阅读全文
摘要:1、为什么hashmap的数组初始化大小都是2的次方大小时,hashmap的效率最高? /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY
阅读全文
摘要:1、对象的类型与编码 Redis使用对象来表示数据库中的键和值,每次我们在Redis的数据库中新创建一个键值对,我们至少会创建两个对象,一个键对象,另一个值对象。 每个对象都由一个redisObject结构表示,如下: 1.1、对象的类型和编码 type属性记录了对象的类型: 类型常量 对象的名称
阅读全文
摘要:概念 字典,又称为符号表、关联数组或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。字典中每个键都是独一无二的,程序可以根据键来更新值,或者删除整个键值对。 用途 Redis的数据库就是使用字典来作为底层实现 字典还是哈希键的底层实现之一。当一个哈希键包含的键值对
阅读全文
摘要:一、AOP的原理 动态代理 二、例子 public interface UserService { int addUser(User user); List<User> getUsers(@Param("hobby") String hobby); } @Service public class U
阅读全文

浙公网安备 33010602011771号