Fork me on GitHub
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 30 下一页
摘要: 在 MySQL 中,最常见的去重方法有两个:使用 distinct 或使用 group by,那它们有什么区别呢?接下来我们一起来看。 1.创建测试数据 -- 创建测试表 drop table if exists pageview; create table pageview( id bigint 阅读全文
posted @ 2022-07-06 09:16 磊哥|www.javacn.site 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 注意:本文以下内容基于 MySQL 5.7 InnoDB 数据库引擎。 1.group by 后面不能加 where 在 MySQL 中,所有的 SQL 查询语法要遵循以下语法顺序: select from where group by having order by limit 以上语法顺序是不能 阅读全文
posted @ 2022-07-06 08:43 磊哥|www.javacn.site 阅读(746) 评论(0) 推荐(0) 编辑
摘要: MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种: READ UNCOMMITTED:读未提交。 READ COMMITTED:读已提交。 REPEATABLE READ:可重复读。 SERIALIZABLE:序列化。 1.四种事务隔离级别 1. 阅读全文
posted @ 2022-06-29 11:11 磊哥|www.javacn.site 阅读(6671) 评论(1) 推荐(5) 编辑
摘要: 为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景。 explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字即可,如下图所示: 而以上查询结果的列中,我们最主要观察 key 这一列,key 这一列表示实际使用 阅读全文
posted @ 2022-06-27 10:51 磊哥|www.javacn.site 阅读(1443) 评论(4) 推荐(5) 编辑
摘要: 自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。 PS:本文以下内容基于 MySQL InnoDB 数据库引擎。 默认情况下自增列的值为 1,每次 阅读全文
posted @ 2022-06-22 07:30 磊哥|www.javacn.site 阅读(1025) 评论(1) 推荐(1) 编辑
摘要: 在 MySQL 中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行效果完全不同,接下来我们来盘点一下。 truncate、delete、drop区别概述 它们 3 个的区别如下表所示: 区别点 drop truncate delete 执行速度 阅读全文
posted @ 2022-06-20 08:57 磊哥|www.javacn.site 阅读(785) 评论(1) 推荐(1) 编辑
摘要: 在 InnoDB 引擎中,每张表都会有一个特殊的索引“聚簇索引”,也被称之为聚集索引,它是用来存储行数据的。一般情况下,聚簇索引等同于主键索引,但这里有一个前提条件,那就是这张表需要有主键,只有有了主键,它才能有主键索引,有主键索引才能等于聚簇索引。 所以看到这里,我们应该明白一个道理:聚簇索引并不 阅读全文
posted @ 2022-06-16 08:39 磊哥|www.javacn.site 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 在 MySQL 默认引擎 InnoDB 中,索引大致可分为两类:聚簇索引和非聚簇索引,它们的区别也是常见的面试题,所以我们今天就来盘它们。 聚簇索引 聚簇索引(Clustered Index)一般指的是主键索引(如果存在主键索引的话),聚簇索引也被称之为聚集索引。 聚簇索引在 InnoDB 中是使用 阅读全文
posted @ 2022-06-13 11:39 磊哥|www.javacn.site 阅读(712) 评论(0) 推荐(2) 编辑
摘要: 在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,而三者的用法和使用场景又完全不同,接下来我们具体来看。 1.delete detele 可用于删除表的部分或所有数据,它的使用语法如下: delete from table_name [where...] [or 阅读全文
posted @ 2022-06-08 09:34 磊哥|www.javacn.site 阅读(708) 评论(0) 推荐(1) 编辑
摘要: MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、处理和保护数据的核心服务。也就是存储引擎是数据库的底层软件组织。在 MySQL 中可以使用“show engines”来查询数据库的所有存储引擎,如下图所示: 在上述列表中,我们最常用的存储引擎有以下 3 种: InnoDB M 阅读全文
posted @ 2022-06-06 09:21 磊哥|www.javacn.site 阅读(872) 评论(0) 推荐(0) 编辑
摘要: HTTP 状态码是服务器端返回给客户端的响应状态码,根据(HTTP)状态码我们就能知道服务器端想要给客户端表达的具体含义,比如 200 就表示请求访问成功,500 就表示服务器端程序出错等。 HTTP 状态码可分为 5 大类: 1XX:消息状态码。 2XX:成功状态码。 3XX:重定向状态码。 4X 阅读全文
posted @ 2022-06-01 12:05 磊哥|www.javacn.site 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 1.第一范式 第一范式规定表中的每个列都应该是不可分割的最小单元。比如以下表中的 address 字段就不是不可分割的最小单元,如下图所示: 其中 address 还可以拆分为国家和城市,如下图所示: 这样改造之后,上面的表就满足第一范式了。 2.第二范式 第二范式是在满足第一范式的基础上,规定表中 阅读全文
posted @ 2022-05-30 10:25 磊哥|www.javacn.site 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什么单例模式一定要加 volatile?”时,那么他指的是为什么懒汉模式中的私有变量要加 volatile? 懒汉模式指的是对象的创建是懒加载的方式,并不是在程序启动时就创建对象,而是第一次被真正使用时才创建对象。 阅读全文
posted @ 2022-05-26 09:44 磊哥|www.javacn.site 阅读(742) 评论(0) 推荐(3) 编辑
摘要: OpenFeign 是 Spring 官方推出的一种声明式服务调用和负载均衡组件。它的出现就是为了替代已经进入停更维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常的开发中使用它的频率也很高,而 OpenFeign 有一些实用的小技巧,配置 阅读全文
posted @ 2022-05-25 13:43 磊哥|www.javacn.site 阅读(1076) 评论(1) 推荐(2) 编辑
摘要: 单例模式是面试中的常客了,它的常见写法有 4 种:饿汉模式、懒汉模式、静态内部类和枚举,接下来我们一一来看。 1.饿汉模式 饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠 ClassLoader 类机制,在程序启动时只加载一次,因此不存在线程安 阅读全文
posted @ 2022-05-23 10:59 磊哥|www.javacn.site 阅读(432) 评论(1) 推荐(1) 编辑
摘要: Exchange(交换器)顾名思义,它是用来实现两个线程间的数据交换的,它诞生于 JDK 1.5,它有两个核心方法: exchange(V x):等待另一个线程到达此交换点,然后将对象传输给另一个线程,并从另一个线程中得到交换的对象。如果另一个线程未到达此交换点,那么此线程会一直休眠(除非遇了线程中 阅读全文
posted @ 2022-05-18 15:04 磊哥|www.javacn.site 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。 比如线程 1 拥有了锁 A 的情况下试图获取锁 B,而线程 2 又在拥有了锁 B 的情况下试图获取锁 A,这样双方就进入相互阻塞等待的情况 阅读全文
posted @ 2022-05-16 12:27 磊哥|www.javacn.site 阅读(679) 评论(0) 推荐(2) 编辑
摘要: fastjson2 是 fastjson 项目的重要升级,目标是为下一个十年提供一个高性能的 JSON 库,同一套 API 支持JSON/JSONB 两种协议,JSONPath 是一等公民,支持全量解析和部分解析,支持 Java 服务端、客户端Android、大数据场景。 fastjson 2 代码 阅读全文
posted @ 2022-05-12 09:45 磊哥|www.javacn.site 阅读(1438) 评论(0) 推荐(0) 编辑
摘要: 从公平的角度来说,Java 中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别?孰优孰劣呢?在 Java 中的应用场景又有哪些呢?接下来我们一起来看。 正文 公平锁:每个线程获取锁的顺序是按照线程访问锁的先后顺序获取的,最前面的线程总是最先获取到锁。 非公平锁:每个线程获取锁的顺序 阅读全文
posted @ 2022-05-09 09:31 磊哥|www.javacn.site 阅读(3749) 评论(0) 推荐(2) 编辑
摘要: 读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的。总结来说,读写锁的特点是:读读不互斥、读写互斥、写写互斥。 1.读写锁使用 在 阅读全文
posted @ 2022-05-07 09:08 磊哥|www.javacn.site 阅读(2467) 评论(1) 推荐(0) 编辑
摘要: volatile 是 Java 并发编程的重要组成部分,也是常见的面试题之一,它的主要作用有两个:保证内存的可见性和禁止指令重排序。下面我们具体来看这两个功能。 内存可见性 说到内存可见性问题就不得不提 Java 内存模型,Java 内存模型(Java Memory Model)简称为 JMM,主要 阅读全文
posted @ 2022-05-05 11:22 磊哥|www.javacn.site 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 在 Lock 接口中,获取锁的方法有 4 个:lock()、tryLock()、tryLock(long,TimeUnit)、lockInterruptibly(),为什么需要这么多方法?这些方法都有什么区别?接下来我们一起来看。 lock 方法 lock 方法是 Lock 接口中最基础的获取锁的方 阅读全文
posted @ 2022-04-27 12:22 磊哥|www.javacn.site 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 早上收到阿里云小姐姐的消息,阿里云有搞事情了,这次是送一年的阿里云 ECS 服务器。有便宜不占王八蛋,二话不说,打开我 82 年的电脑,就是一顿操作。 没成想,这次的活动体验如此之好,也就 3 分钟的时间,就搞到了一年的阿里云服务器。 活动页面: 1.领取 ECS 服务器 打开活动页面: 选择最后一 阅读全文
posted @ 2022-04-26 08:59 磊哥|www.javacn.site 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊。 区别1:用法不同 synchronized 可用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用在代 阅读全文
posted @ 2022-04-24 15:27 磊哥|www.javacn.site 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人会认为 notify 是随机唤醒的,但它真的是随机唤醒的吗? 带着这个疑问,我们尝试休眠 100 个 阅读全文
posted @ 2022-04-20 08:44 磊哥|www.javacn.site 阅读(350) 评论(1) 推荐(1) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 30 下一页