本文由 JavaGuide 翻译并完善,原文地址:https://medium.com/@AlexanderObregon/maven-best-practices-tips-and-tricks-for-java-developers-438eca03f72b 。
这篇文章会从下面从以下几个问题展开对 IoC & AOP 的解释
- 什么是 IoC?
- IoC 解决了什么问题?
- IoC 和 DI 的区别?
- 什么是 AOP?
- AOP 解决了什么问题?
- AOP 的应用场景有哪些?
- AOP 为什么叫做切面编程?
- AOP 实现方式有哪些?
首先声明:IoC & AOP 不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这两个思想进行了很好的实现。
Spring Boot核心源码解读 为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 必读源码系列》中。
题目来源于:牛客题霸 - SQL 进阶挑战
增删改操作
SQL 插入记录的方式汇总:
- 普通插入(全字段) :
INSERT INTO table_name VALUES (value1, value2, ...)
- 普通插入(限定字段) :
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
- 多条一次性插入 :
INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
- 从另一个表导入 :
INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
- 带更新的插入 :
REPLACE INTO table_name VALUES (value1, value2, ...)
(注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)
题目来源于:牛客题霸 - SQL 进阶挑战
较难或者困难的题目可以根据自身实际情况和面试需要来决定是否要跳过。
聚合函数
SQL 类别高难度试卷得分的截断平均值(较难)
描述: 牛客的运营同学想要查看大家在 SQL 类别中高难度试卷的得分情况。
题目来源于:牛客题霸 - SQL 进阶挑战
较难或者困难的题目可以根据自身实际情况和面试需要来决定是否要跳过。
专用窗口函数
MySQL 8.0 版本引入了窗口函数的支持,下面是 MySQL 中常见的窗口函数及其用法:
LinkedHashMap 简介
LinkedHashMap
是 Java 提供的一个集合类,它继承自 HashMap
,并在 HashMap
基础上维护一条双向链表,使得具备如下特性:
- 支持遍历时会按照插入顺序有序进行迭代。
- 支持按照元素访问顺序排序,适用于封装 LRU 缓存工具。
- 因为内部使用双向链表维护各个节点,所以遍历时的效率和元素个数成正比,相较于和容量成正比的 HashMap 来说,迭代效率会高很多。
DelayQueue 简介
DelayQueue
是 JUC 包(java.util.concurrent)
为我们提供的延迟队列,用于实现延时任务比如订单下单 15 分钟未支付直接取消。它是 BlockingQueue
的一种,底层是一个基于 PriorityQueue
实现的一个无界队列,是线程安全的。关于PriorityQueue
可以参考笔者编写的这篇文章:PriorityQueue 源码分析 。
PriorityQueue 源码分析 为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 必读源码系列》中。