阿里巴巴为什么让初始化集合时必须指定大小?

2020-05-29
阅读 6 分钟
2.3k
【推荐】集合初始化时,指定集合初始值大小。说明:HashMap 使用 HashMap(int initialCapacity) 初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可。 正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loader factor)默认为 0.75,如果暂时无法确定初始值大小,请设置为 16...

永远不要使用双花括号初始化实例,否则就会OOM!

2020-05-22
阅读 7 分钟
8.3k
生活中的尴尬无处不在,有时候你只是想简单的装一把,但某些“老同志”总是在不经意之间,给你无情的一脚,踹得你简直无法呼吸。 但谁让咱年轻呢?吃亏要趁早,前路会更好。 喝了这口温热的鸡汤之后,咱们来聊聊是怎么回事。 事情是这样的,在一个不大不小的项目中,小王写下了这段代码: {代码...} 本来是用它来替代下面...

限流的6大狠招,附详细代码和评测结果

2020-05-18
阅读 8 分钟
1.6k
为了上班方便,去年我把自己在北郊的房子租出去了,搬到了南郊,这样离我上班的地方就近了,它为我节约了很多的时间成本,我可以用它来做很多有意义的事,最起码不会因为堵车而闹心了,幸福感直线上升。

Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

2020-05-03
阅读 9 分钟
2.9k
Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。

HashMap 的 7 种遍历方式与性能分析!(强烈推荐)

2020-04-29
阅读 14 分钟
2.7k
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。

String性能提升10倍的几个方法!(源码+原理分析)

2020-04-29
阅读 9 分钟
3.7k
String 类型是我们使用最频繁的数据类型,没有之一。那么提高 String 的运行效率,无疑是提升程序性能的最佳手段。 我们本文将从 String 的源码入手,一步步带你实现字符串优化的小目标。不但教你如何有效的使用字符串,还为你揭晓这背后的深层次原因。 本文涉及的知识点,如下图所示: 在看如何优化 String 之前,我们...

9个小技巧让你的 if else看起来更优雅

2020-04-29
阅读 5 分钟
1.7k
if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if ...

别再问我 new 字符串创建了几个对象了!我来证明给你看!

2020-04-20
阅读 8 分钟
1.8k
我想所有 Java 程序员都曾被这个 new String 的问题困扰过,这是一道高频的 Java 面试题,但可惜的是网上众说纷纭,竟然找不到标准的答案。有人说创建了 1 个对象,也有人说创建了 2 个对象,还有人说可能创建了 1 个或 2 个对象,但谁都没有拿出干掉对方的证据,这就让我们这帮吃瓜群众们陷入了两难之中,不知道到底该...

用了自定义Banner后,SpringBoot瞬间变的高大上了...

2020-04-20
阅读 9 分钟
5.3k
Spring Boot 在启动的时候,我们或许想要把自己公司的 logo,或者是项目的 logo 放上去,我们可以试试本文的这些方法,可以让你快速制作一些 Spring Boot 项目启动时的彩蛋,以提高项目的辨识度,或者是纯碎为了给枯燥的生活平添一些乐趣,那么本文这些内容能很好的帮助到你。

99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏

2020-04-06
阅读 14 分钟
2.3k
对于 Lombok 我相信大部分人都不陌生,但对于它的实现原理以及缺点却鲜为人知,而本文将会从 Lombok 的原理出发,手撸一个简易版的 Lombok,让你理解这个热门技术背后的执行原理,以及它的优缺点分析。

这样终止线程,竟然会导致服务宕机?

2020-04-06
阅读 9 分钟
1.4k
或许你已经发现了,上面这段代码使用了 Thread.stop() 来终止线程,在 Java 程序中是不允许这样终止线程的。什么?你问为什么不能这样?

惊呆了,竟然可以用这种方式秒建Redis集群?

2020-03-27
阅读 13 分钟
2.1k
Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。

Redis 性能优化的 13 条军规!史上最全

2020-03-27
阅读 7 分钟
12.5k
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,让 Redis 更加高效的运行。

Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!

2020-03-22
阅读 4 分钟
2.1k
Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹。不过此版本并不是 LTS (长期支持版) 版本,所以不要慌,我们先来了解一下好了,等 LTS 版本发布后再用也不迟。

因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知!

2020-03-18
阅读 5 分钟
1.2k
volatile 是并发编程的重要组成部分,也是面试常被问到的问题之一。不要向小强那样,因为一句:volatile 是轻量级的 synchronized,而与期望已久的大厂失之交臂。

使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期

2020-03-09
阅读 2 分钟
2.2k
面试问题 Redis 如何实现查询附近的人? 涉及知识点 Redis 中如何操作位置信息? GEO 底层是如何实现的? 如何在程序实现查询附近的人? 在实际使用中需要注意哪些问题? 视频答案 视频地址:[链接] 图文答案 Redis 中要实现查询附近的人,需要使用 Redis 3.2 版本中提供的 GEO 数据类型,它包含以下几个重要的方法: GE...

面试突击 | Redis 如何从海量数据中查询出某一个 Key?附视频

2020-02-27
阅读 4 分钟
2.5k
1 考察知识点 本题考察的知识点有以下几个: Keys 和 Scan 的区别 Keys 查询的缺点 Scan 如何使用? Scan 查询的特点 2 解答思路 Keys 查询存在的问题 Scan 的使用 Scan 的特点 3 Keys 使用相关 1)Keys 用法如下 2)Keys 存在的问题 此命令没有分页功能,我们只能一次性查询出所有符合条件的 key 值,如果查询结果非常...

深浅克隆面试题汇总——附详细答案

2019-09-18
阅读 7 分钟
1.6k
可以看出,如果使用等号复制时,对于值类型来说,彼此之间的修改操作是相对独立的,而对于引用类型来说,因为复制的是引用对象的内存地址,所以修改其中一个值,另一个值也会跟着变化,原理如下图所示:因此为了防止这种问题的发生,就要使用对象克隆来解决引用类型复制的问题。

RocketMQ 可视化环境搭建和基础代码使用

2019-07-03
阅读 5 分钟
2.3k
RocketMQ 是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在 2016 年底捐赠给 Apache 开源基金会成为孵化项目,经过不到一年时间正式成为了 Apache 顶级项目。早期阿里曾经基于 ActiveMQ 研发消息系统, 随着业务消息的规模增大,瓶颈逐渐显现,后来...

解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案

2019-06-20
阅读 3 分钟
2.5k
如果使用 SpringBoot 多模块发布到外部 Tomcat,可能会遇到各种各样的问题。本文归纳了以下 8 个原则和发布时经常出现的 4 个问题的解决方案,掌握了这些原则和解决方案,几乎可以解决绝大数 SpringBoot 发布问题。

阿里面试题BIO和NIO数量问题附答案和代码

2019-03-16
阅读 4 分钟
1.4k
答案: 因为传统的 IO 也就是 BIO 是同步线程堵塞的,所以每个连接都要分配一个专用线程来处理请求,这样 10 个连接就会创建 10 个线程去处理。而 NIO 是一种同步非阻塞的 I/O 模型,它的核心技术是多路复用,可以使用一个链接上的不同通道来处理不同的请求,所以即使有 10 个连接,对于 NIO 来说,开启 1 个线程就够了。

Java 200+ 面试题补充③ Dubbo 模块

2019-03-12
阅读 4 分钟
1.3k
昨天在我的 Java 面试粉丝群里,有一个只有一年开发经验的小伙伴只用了三天时间,就找到了一个年薪 20 万的工作,真是替他感到开心。他的经历告诉我们:除了加强自我实战经验之外,还要努力积累自己的理论知识。 人生没有白走的路,也没有白吃的苦。你学的某一种知识,在将来某一天一定会给你惊喜!

Java 200+ 面试题补充② Netty 模块

2019-03-08
阅读 3 分钟
2.5k
Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。难能可贵的是,在保证快速和易用性的同时,并没有丧失可维护性和性能等优势。

你真的知道 == 和 equals 的区别吗?

2019-03-07
阅读 2 分钟
3.9k
让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 在 Java 中 == 和 equals 的区别,感觉只有很少的人能才完全说正确。 常见的错误回答就是:== 基础类型对比的是值是否相同,引用类型对比的是引用是否相同;而 equals 则是比较的值是否相同。 至于为什么说它是错的,看完本文对 == 和 eq...

Java 200+ 面试题补充 ThreadLocal 模块

2019-03-07
阅读 3 分钟
2.3k
ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,适用于各个线程不共享变量值的操作。

Java 208 道面试题:Java 基础模块答案

2019-03-05
阅读 5 分钟
2.7k
目前市面上的面试题存在两大问题:第一,题目太旧好久没有更新了,还都停留在 2010 年之前的状态;第二,近几年 JDK 更新和发布都很快,Java 的用法也变了不少,加上 Java 技术栈也加入了很多新的框架,比如 Spring Boot、Spring Cloud 等,但类似的面试题却极少。

Java 最常见的 200+ 面试题:面试必备

2019-03-04
阅读 6 分钟
5.5k
这份面试清单是我从 2015 年做 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘我在 Java 技术栈中的技术盲点,然后修复和完善它,以此来提高自己的技术水平。虽然我从 2009 年就开始参加编程工作了,但依旧觉得还有很多东西要学,当然学习的过程也给我带来了很多成就感,这些成就感也推动我...

JVM(六)为什么新生代有两个Survivor分区?

2019-02-22
阅读 2 分钟
2.6k
分代收集器会把内存空间分为:老生代和新生代两个区域,而新生代又会分为:Eden 区和两个 Survivor区(From Survivor、To Survivor),来看内存空间分布图,如下:

程序员精美简历Top榜—面试必备

2019-02-14
阅读 1 分钟
6.2k
人们常说“金三银四”,一年之际在于春。不管你是主动离职,还是“被离职”(稳住,我们能赢!),趁着大好时光和对新年的憧憬,再找一个更好的工作吧。

JVM(五)垃圾回收器的前世今生

2019-02-13
阅读 4 分钟
2k
因为不同的厂商(IBM、Oracle),实现的垃圾回收器各不相同,而本文要讨论的是 Oracle 的 HotSpot 虚拟机所使用的垃圾回收器。