JavaGuide
JavaGuide copied to clipboard
「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
🏠 [MySQL高性能优化规范建议总结](https://javaguide.cn/database/mysql/mysql-high-performance-optimization-specification-recommendations.html#常见索引列建议) 原文: >建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少。 > >- 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数) >- 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO 性能也就越好) >- 使用最频繁的列放到联合索引的左侧(这样可以比较少的建立一些索引) 关于第二点,尽量把字段长度小的列放在联合索引的最左侧。 文中给出的理由是因为字段长度越小,一页能存储的数据量越大,IO 性能也就越好。 但在 MySQL InnoDB 存储引擎的 B+ 索引树数据结构中,非叶子节点存储的每个索引条目中包含了这块索引搜索树的所有的索引字段值,以及指向下一级的指针。 因此,对于已经确定的联合索引中的这些索引,无论怎么调换位置应该也改变不了存储的索引条目的大小,一页能存储的数据量还是那么多。 所以我觉得这个第二条并不能作为选择索引顺序的参考条件,更像是作为选择什么字段充当索引的建议。 即: - 对于索引建立的原则,建议使用数据类型小的字段作为索引。当然,这个建议更适合于主键的选择,因为在 Innodb 存储引擎中,主键字段不仅存储在聚簇索引中的每个节点,还存在于非聚簇索引的叶子节点。参考这条建议的主键可以节省更多的内存与磁盘空间。
原文:“JSR(Java Specification Requests) 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,这样就可以在需要校验的时候进行校验了,非常方便!”,出处是“Spring&SpringBoot常用注解总结” 错误:JSR并不是JavaBean参数校验的标准,建议改成“JSR 380(Bean Validation 2.0) 是一套用于 JavaBean 参数校验的标准”或类似的描述。
🏠 [SQL语句在MySQL中的执行过程](https://javaguide.cn/database/mysql/how-sql-executed-in-mysql.html#_2-1-查询语句) 原文内容: >说了以上这么多,那么究竟一条 SQL 语句是如何执行的呢?其实我们的 SQL 可以分为两种,一种是查询,一种是更新(增加,修改,删除)。我们先分析下查询语句,语句如下: > >```sql >select * from tb_student A where A.age='18' and A.name=' 张三 '; >``` > >结合上面的说明,我们分析下这个语句的执行流程: > >- 先检查该语句是否有权限,如果没有权限,直接返回错误信息,如果有权限,在 MySQL8.0 版本以前,会先查询缓存,以这条 SQL...
下面的几个方法都使用的 BigDecimal(double),是否会造成精度问题。  
`private volatile int a; public static void main(String[] args){ CasTest casTest=new CasTest(); new Thread(()->{ for (int i = 1; i < 5; i++) { casTest.increment(i); System.out.print(casTest.a+" "); } }).start(); new...
// 线程 A map.putIfAbsent(key, value); // 线程 B map.putIfAbsent(key, anotherValue); eg: ```java public static void main(String[] args) { Map map = new ConcurrentHashMap(); // 初始时 map 为空 // 计算键 "key1"...
Hi, i just found out yesterday about this amazing project and went throught the project issues, I came across the an issue where many people were requesting for an English...
1. 文章的标题为Spring&SpringBoot常用注解,文章中也包含了SpringMVC的注解(RequestMapping、RequestBody、ResponseBody),可以考虑换文章的标题为:spring&springMVC&SpringBoot常用的注解。 2. 文章对绝大多数常用的注解都讲的很详细,但最后没有总结一下,希望文章末尾加一个表格,来总结这些注解属于哪一类。
示例代码无法正常运行,会报错[: 90: unary operator expected,但是底部的截图是正确的,可能是少打了? 原因是变量可能为空,于是产生中括号与另一个变量相比从而缺少中括号的情况,应改为[[ ]] 示例代码如下 `#!/bin/bash score=90 maxsscore=100 if [[ $score -eq $maxscore ]] then echo "A" else echo "B" fi` 运行结果 