面试突击59:一个表中可以有多个自增列吗?

2022-06-22
阅读 3 分钟
1k
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。
封面图

面试突击58:truncate、delete和drop的6大区别

2022-06-20
阅读 3 分钟
1k
在 MySQL 中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行效果完全不同,接下来我们来盘点一下。
封面图

33岁程序员的年中总结

2022-06-19
阅读 3 分钟
592
人生在不同的阶段会有不同的生活方式和思考问题的角度,这是一件非常有趣的事~比如,我在 22 岁会想:怎么才能赚大钱,怎么才能升值加薪?在 25 岁会想:去哪买房?什么时候结婚?在 28 岁会想:生活真 TM 的糟透,还房贷什么时候是个头啊?孩子要再听话一点就好了。在 30 岁会想:我去,30 岁,还一事无成,该怎么办呢...
封面图

面试突击57:聚簇索引=主键索引吗?

2022-06-16
阅读 1 分钟
1.8k
在 InnoDB 引擎中,每张表都会有一个特殊的索引“聚簇索引”,也被称之为聚集索引,它是用来存储行数据的。一般情况下,聚簇索引等同于主键索引,但这里有一个前提条件,那就是这张表需要有主键,只有有了主键,它才能有主键索引,有主键索引才能等于聚簇索引。
封面图

面试突击56:聚簇索引和非聚簇索引有什么区别?

2022-06-13
阅读 2 分钟
1.3k
在 MySQL 默认引擎 InnoDB 中,索引大致可分为两类:聚簇索引和非聚簇索引,它们的区别也是常见的面试题,所以我们今天就来盘它们。聚簇索引聚簇索引(Clustered Index)一般指的是主键索引(如果存在主键索引的话),聚簇索引也被称之为聚集索引。聚簇索引在 InnoDB 中是使用 B+ 树实现的,比如我们创建一张 student 表...
封面图

面试突击55:delete、drop、truncate有什么区别?

2022-06-08
阅读 2 分钟
1.2k
在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,而三者的用法和使用场景又完全不同,接下来我们具体来看。
封面图

面试突击54:MySQL 常用引擎有哪些?

2022-06-06
阅读 2 分钟
1.2k
MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、处理和保护数据的核心服务。也就是存储引擎是数据库的底层软件组织。在 MySQL 中可以使用“show engines”来查询数据库的所有存储引擎,如下图所示:在上述列表中,我们最常用的存储引擎有以下 3 种:
封面图

面试突击53:常见的 HTTP 状态码有哪些?

2022-06-01
阅读 3 分钟
1.2k
HTTP 状态码是服务器端返回给客户端的响应状态码,根据(HTTP)状态码我们就能知道服务器端想要给客户端表达的具体含义,比如 200 就表示请求访问成功,500 就表示服务器端程序出错等。HTTP 状态码可分为 5 大类:
封面图

面试突击52:什么是三范式?它有什么用?

2022-05-30
阅读 2 分钟
1.1k
第一范式规定表中的每个列都应该是不可分割的最小单元。比如以下表中的 address 字段就不是不可分割的最小单元,如下图所示:其中 address 还可以拆分为国家和城市,如下图所示:这样改造之后,上面的表就满足第一范式了。
封面图

面试突击51:为什么单例一定要加 volatile?

2022-05-26
阅读 4 分钟
1.4k
单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什么单例模式一定要加 volatile?”时,那么他指的是为什么懒汉模式中的私有变量要加 volatile?
封面图

Spring Cloud OpenFeign 的 5 个优化小技巧!

2022-05-25
阅读 4 分钟
1.4k
OpenFeign 是 Spring 官方推出的一种声明式服务调用和负载均衡组件。它的出现就是为了替代已经进入停更维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常的开发中使用它的频率也很高,而 OpenFeign 有一些实用的小技巧,配置之后可以让 OpenFeign 更好的运行,所以本文我们就来盘点...
封面图

面试突击50:单例模式有几种写法?

2022-05-23
阅读 2 分钟
1k
饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠 ClassLoader 类机制,在程序启动时只加载一次,因此不存在线程安全问题,它的实现代码如下:
封面图

面试突击49:说一下 JUC 中的 Exchange 交换器?

2022-05-18
阅读 3 分钟
1.2k
exchange(V x):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠(除非遇了线程中断)。
封面图

面试突击48:死锁的排查工具有哪些?

2022-05-16
阅读 4 分钟
1.3k
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。
封面图

下个十年高性能 JSON 库来了:fastjson2!

2022-05-12
阅读 4 分钟
3.6k
fastjson2 是 fastjson 项目的重要升级,目标是为下一个十年提供一个高性能的 JSON 库,同一套 API 支持JSON/JSONB 两种协议,JSONPath 是一等公民,支持全量解析和部分解析,支持 Java 服务端、客户端Android、大数据场景。
封面图

面试突击47:死锁产生的原因有哪些?

2022-05-11
阅读 4 分钟
1.4k
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。
封面图

面试突击46:公平锁和非公平锁有什么区别?

2022-05-09
阅读 3 分钟
1.5k
从公平的角度来说,Java 中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别?孰优孰劣呢?在 Java 中的应用场景又有哪些呢?接下来我们一起来看。
封面图

面试突击45:为什么要用读写锁?它有什么优点?

2022-05-07
阅读 4 分钟
1.3k
读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的。总结来说,读写锁的特点是:读读不互斥、读写互斥、写写互斥。
封面图

面试突击44:volatile 有什么用?

2022-05-05
阅读 4 分钟
1.2k
volatile 是 Java 并发编程的重要组成部分,也是常见的面试题之一,它的主要作用有两个:保证内存的可见性和禁止指令重排序。下面我们具体来看这两个功能。
封面图

面试突击43:lock、tryLock、lockInterruptibly有什么区别?

2022-04-27
阅读 2 分钟
1.8k
在 Lock 接口中,获取锁的方法有 4 个:lock()、tryLock()、tryLock(long,TimeUnit)、lockInterruptibly(),为什么需要这么多方法?这些方法都有什么区别?接下来我们一起来看。
封面图

白嫖1年阿里云,反手就搭一个Java环境

2022-04-26
阅读 4 分钟
1.5k
早上收到阿里云小姐姐的消息,阿里云有搞事情了,这次是送一年的阿里云 ECS 服务器。有便宜不占王八蛋,二话不说,打开我 82 年的电脑,就是一顿操作。没成想,这次的活动体验如此之好,也就 3 分钟的时间,就搞到了一年的阿里云服务器。活动页面:
封面图

面试突击42:synchronized和ReentrantLock有什么区别?

2022-04-24
阅读 4 分钟
3.5k
在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊。
封面图

面试突击41:notify是随机唤醒吗?

2022-04-20
阅读 3 分钟
1.5k
做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人会认为 notify 是随机唤醒的,但它真的是随机唤醒的吗?
封面图

面试突击40:线程休眠的方法有几种?

2022-04-18
阅读 5 分钟
1.5k
在 Java 中,让线程休眠的方法有很多,这些方法大致可以分为两类,一类是设置时间,在一段时间后自动唤醒,而另一个类是提供了一对休眠和唤醒的方法,在线程休眠之后,可以在任意时间对线程进行唤醒。
封面图

面试突击39:synchronized底层是如何实现的?

2022-04-14
阅读 3 分钟
1.3k
想了解 synchronized 是如何运行的?就要先搞清楚 synchronized 是如何实现?synchronized 同步锁是通过 JVM 内置的 Monitor 监视器实现的,而监视器又是依赖操作系统的互斥锁 Mutex 实现的,那接下来我们先来了解一下监视器。
封面图

synchronized有几种用法?

2022-04-13
阅读 5 分钟
1.4k
在 Java 语言中,保证线程安全性的主要手段是加锁,而 Java 中的锁主要有两种:synchronized 和 Lock,我们今天重点来看一下 synchronized 的几种用法。
封面图

面试突击37:线程安全问题的解决方案有哪些?

2022-04-07
阅读 6 分钟
1.3k
线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。在 Java 中,解决线程安全问题有以下 3 种手段:
封面图

面试突击36:线程安全问题是怎么产生的?

2022-04-06
阅读 4 分钟
1.2k
线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。
封面图

面试突击35:如何判断线程池已经执行完所有任务了?

2022-03-30
阅读 8 分钟
1.7k
很多场景下,我们需要等待线程池的所有任务都执行完,然后再进行下一步操作。对于线程 Thread 来说,很好实现,加一个 join 方法就解决了,然而对于线程池的判断就比较麻烦了。
封面图

面试突击34:如何使用线程池执行定时任务?

2022-03-28
阅读 5 分钟
1.4k
在 Java 语言中,有两个线程池可以执行定时任务:ScheduledThreadPool 和 SingleThreadScheduledExecutor,其中 SingleThreadScheduledExecutor 可以看做是 ScheduledThreadPool 的单线程版本,它的用法和 ScheduledThreadPool 是一样的,所以本文重点来看 ScheduledThreadPool 线程池的使用。ScheduledThreadPool 执行...
封面图