谈谈你所不知道的ArrayList缩容

2020-06-23
阅读 2 分钟
3k
每当大家谈起ArrayList都只会关注它的自动扩容机制,但是大多数人却不会去关注ArrayList是否会自动缩容。下面会根据几个问题让大家了解一下ArrayList的缩容机制。

如何证明Java子类实际上是拥有父类的私有属性

2020-06-14
阅读 2 分钟
3.6k
关于继承如下 3 点请记住: 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。

Gson实战之旅

2020-06-07
阅读 4 分钟
3.1k
Gson是一个Google开源出来针在Java对象和JSON数据之间进行相互映射的Java类库。而且使用方式很简单。以maven项目为例,只需要添加以下配置即可使用。

Spring JPA整合QueryDSL

2019-10-24
阅读 10 分钟
10.5k
前言Spring JPA是目前比较常用的ORM解决方案,但是其对于某些场景并不是特别的方便,例如查询部分字段,联表查询,子查询等。而接下来我会介绍与JPA形成互补,同时也是与JPA兼容得很好的框架QueryDSL。同时由于目前主流使用Spring Boot,所以本文也会基于Spring Boot来进行演示如果对于长文无感,但是又希望了解QueryDSL...

1114-按序打印

2019-09-10
阅读 2 分钟
1.6k
我们提供了一个类: {代码...} 三个不同的线程将会共用一个 Foo 实例。 线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法 请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。 示例1: {代码...} 示例2: {代码...} 提示:尽管输入...

String真的不可变吗

2019-07-24
阅读 3 分钟
2.7k
前言 提到Java的String,都会提起String是不可变的。但是这点是真的吗?String的不可变是否可以破坏呢? 在验证之前,首先还是需要介绍一下String的不可变特性。 PS:这里还要提到自己遇到的面试题: {代码...} String不可变特性 String的不可变指的是 String内部是使用一个被final修饰char数组value存储字符串的值 数组...

5130-等价多米诺骨牌对的数量

2019-07-21
阅读 2 分钟
1.8k
给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a==c 且 b==d,或是 a==d 且 b==c。 在 0 <= i < j < dominoes.length 的前提下...

SpringBoot统一响应体解决方案

2019-07-18
阅读 8 分钟
13.5k
前言 最近在优化自己之前基于Spring AOP的统一响应体的实现方案。 什么是统一响应体呢?在目前的前后端分离架构下,后端主要是一个RESTful API的数据接口。 但是HTTP的状态码数量有限,而随着业务的增长,HTTP状态码无法很好地表示业务中遇到的异常情况。 那么可以通过修改响应返回的JSON数据,让其带上一些固有的字段,...

5118-航班预订统计

2019-07-07
阅读 2 分钟
2.5k
这里有 n 个航班,它们分别从 1 到 n 进行编号。 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 k 个座位。 请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。 示例: {代码...} 提示: 1 <= bookings.length &l...

5117-IP 地址无效化

2019-07-07
阅读 1 分钟
1.4k
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。 示例1: {代码...} 提示: 示例2: {代码...} 提示: 给出的 address 是一个有效的 IPv4 地址

通俗易懂的Java线程池原理

2019-07-01
阅读 2 分钟
1.4k
最近发现很多小伙伴对于Java线程池ThreadPoolExecutor的原理不是特别的理解,所以想通过这篇文章来让大家更好的认识线程池的原理,了解到其是如何工作的?

1104-分糖果 II

2019-06-30
阅读 2 分钟
1.4k
排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗...

Springboot整合Hibernate拦截器时无法向拦截器注入Bean

2019-06-28
阅读 5 分钟
5k
根据异常信息可知,Spring的IoC容器中并没有SimpleInterceptor这个Bean,从此处可知spring.jpa.properties.hibernate.ejb.interceptor=com.rjh.interceptor.SimpleInterceptor并没有把这个拦截器注册到Spring容器中

1094-拼车

2019-06-23
阅读 3 分钟
2.3k
假设你是一位顺风车司机,车上最初有 capacity 个空座位可以用来载客。由于道路的限制,车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向,你可以将其想象为一个向量)。 这儿有一份行程计划表 trips[][],其中 trips[i] = [num_passengers, start_location, end_location] 包含了你的第 i 次行程信息: 必须接...

1093-大样本统计

2019-06-23
阅读 4 分钟
1.6k
我们对 0 到 255 之间的整数进行采样,并将结果存储在数组 count 中:count[k] 就是整数 k 的采样个数。 我们以 浮点数 数组的形式,分别返回样本的最小值、最大值、平均值、中位数和众数。其中,众数是保证唯一的。 我们先来回顾一下中位数的知识: 如果样本中的元素有序,并且元素数量为奇数时,中位数为最中间的那个...

1090-受标签影响的最大值

2019-06-16
阅读 3 分钟
1.6k
我们有一个项的集合,其中第 i 项的值为 values[i],标签为 labels[i]。 我们从这些项中选出一个子集 S,这样一来: |S| <= num_wanted 对于任意的标签 L,子集 S 中标签为 L 的项的数目总满足 <= use_limit。 返回子集 S 的最大可能的 和。 示例1: {代码...} 示例2: {代码...} 示例3: {代码...} 示例4: {代码...

1089-复写零

2019-06-16
阅读 1 分钟
2.1k
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。 要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。 示例1: {代码...} 示例2: {代码...} 提示: 1 <= arr.length <= 10000 0 <= arr[i] &lt...

5083-Bigram 分词

2019-06-09
阅读 2 分钟
1.5k
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。 对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。 示例1: {代码...} 示例2: {代码...} 提示: 1 <= text.length <= 1000...

Java中ArrayList的对象引用问题

2019-06-03
阅读 5 分钟
4.4k
事件起因是由于同事使用ArrayList的带参构造方法进行ArrayList对象复制,修改新的ArrayList对象中的元素(对象)的成员变量时也会修改原ArrayList中的元素(对象)的成员变量。

5076-字符串的最大公因子

2019-06-02
阅读 2 分钟
3.1k
对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 示例1: {代码...} 示例2: {代码...} 示例3: {代码...} 提示: 1 <= str1.length <= 1000 1 <= str2.length <= 1000 str1[i] 和 str2[i] ...

5030-节点与其祖先之间的最大差值

2019-04-14
阅读 2 分钟
1.9k
给定二叉树的根节点 root,找出存在于不同节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 示例: {代码...} 提示: 树中的节点数在 2 到 5000 之间。 每个节点的值介于 0 到 100000 之间。

5024-除数博弈

2019-04-14
阅读 1 分钟
2k
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。 最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝在游戏中取得胜利时才返回 true,否则返回 fa...

多线程批量数据导入示例——基础版

2019-04-03
阅读 4 分钟
4.6k
前言 当遇到大量数据导入时,为了提高处理的速度,可以选择使用多线程来批量处理这些处理。常见的场景有: 大文件导入数据库(这个文件不一定是标准的CSV可导入文件或者需要在内存中经过一定的处理) 数据同步(从第三方接口拉取数据处理后写入自己的数据库) 以上的场景有一个共性,这类数据导入的场景简单来说就是将数...

Springboot定时任务踩坑记录

2019-03-29
阅读 4 分钟
11.1k
后续通过翻查Springboot的文档以及打印日志(输出当前线程信息)得知问题是由于Springboot默认使用只有1个线程的单线程池处理定时任务。

Spring事件机制源码分析

2019-03-27
阅读 3 分钟
3.1k
由于之前使用Spring事件机制出现了问题,所以特意去了解这块的源码。Spring事件机制其实就是事件发布/订阅(注意在Spring中订阅指的是监听)。

Spring事件机制问题排查

2019-03-27
阅读 6 分钟
8.8k
当ApplicationEventPublisher批量推送ApplicationEvent时,如果ApplicationListener在处理的过程中抛出异常,则会导致后续的推送中断。

简单实用的布隆过滤器

2019-03-25
阅读 1 分钟
1.6k
前言 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。 布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 而在Java中有个BitSet(位向量),我们可以基于BitSet实现一...

ArrayList常见问题

2019-03-19
阅读 1 分钟
1.9k
ArrayList的默认初始长度是多少?最大长度是多少?ArrayList的默认初始长度是10,是由DEFAULT_CAPACITY设定的。 由于ArrayList底层是用Object数组存储元素,所以ArrayList最大长度为Integer.MAX_VALUE,即2147483647(2)。这里需要注意常量MAX_ARRAY_SIZE(Integer.MAX_VALUE - 8)并不是ArrayList真正的最大长度,原因可以...

synchronized锁了什么

2019-03-14
阅读 3 分钟
6.6k
synchronized翻译为中文的意思是同步的,它是Java中处理线程安全问题常用的关键字。也有人称其为同步锁。既然是锁,其必然有锁的东西,下面先会简单介绍一下synchronized,再通过一个示例代码展示synchronized锁了什么。(这里先提前透露答案synchronized锁的是代码)

1003-检查替换后的词是否有效

2019-03-03
阅读 2 分钟
2k
给定有效字符串 "abc"。 对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + "abc" + Y 也同样是有效的。 例如,如果 S = "abc",则有效字符串的示例是:"abc","aabcbc","abcabc","abcabcababcc"。无效字符串的示例是:"abccba","ab","c...