1. 为什么要有内存模型? 要想回答这个问题,需要先弄懂传统计算机硬件内存架构,如下图所示: 1.1. 硬件内存架构 (1)CPU 去过机房的同学都知道,一般在大型服务器上会配置多个CPU,每个CPU还会有多个核,这就意味着多个CPU或者多个核可以同时(并发)工作。如果使用Java 起了一个多线程的任务,很有可能每个 CPU…
在当前的AI时代,API(应用程序编程接口)已经成为连接AI能力与传统程序的利器,帮助开发者快速集成AI功能。随着人工智能技术的飞速发展,各种AI模型和服务应运而生,包括自然语言处理、图像识别、语音合成等。API作为桥梁,使得这些强大的AI功能能够被轻松调用,极大地降低了技术门槛,助力开发者在短时间内实现复杂功能。…
前言 线程池是非常重要的工具,如果要成为一个好的工程师,还是得比较好地掌握这个知识,很多线上问题都是因为没有用好线程池导致的。 总览 下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) 接口方法定义。 ExecutorService…
BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现。 首先,最基本的来说, BlockingQueue 是一个 先进先出 的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue…
什么是MySQL的页? 页是指存储引擎使用的最小的数据存储单位。 当 MySQL 执行读取或写入操作时,是以页为基本单位来进行操作的。即使读写一条数据,MySQL 也会按页操作。 MySQL 的存储引擎会将数据分成多个页,并根据需要将这些页加载到内存中进行处理。 通过使用页来组织数据,MySQL 能够更高效地管理存储空间,减少读取数据时的硬盘 I/O…
索引相关 类型隐式转换 大坑 **字段filed1是varchar类型,且加了索引,如果 where filed1 = 123; type 可能是all,因为123是数字类型,mysql内部会用函数做隐式转换,用了函数,索引就失效了。** 大数据深度分页,用主键 select field1,field2 from table limit…
简介 用于记录执行时间超过指定值的 SQL 语句的详细信息,多用于调试和监控。 配置 因为开启会略微影响性能,所以默认没有开启,所以需要配置。 查看是否开启 show variables like '%slow%'; + | Variable_name | Value | + | slow_launch_time | 2 | |…
简介 mysql explain(或desc)用于分析SQL语句的执行计划,多用于测试查询性能。语法:explain sql… 注意 explain执行DML语句,数据不发生变化。 explain执行的结果可以有多条数据,一条数据对应一个表,如果涉及union,MySQL内部会产生一个临时表,就会导致结果多一行数据。 union…
LinkedList 概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。…