摘要:
为什么: mysql执行一条query语句,按步骤来就是建立连接-》词法分析-》语法分析-》优化器-》执行器-》innodb引擎。这里的问题出在优化器这里,优化器的其中一个作用就是执行计划的生成以及索引的选择。我们知道优化器选择索引有几个指标:扫描的行数,是否使用临时表,是否排序。我遇到的情况因为没 阅读全文
摘要:
一,mysql因为WAL机制,在更新时,首先会更新内存,再写redo log。一般情况下是在空闲时,将redo log刷新到磁盘中。 二,什么是脏页。当内存中与磁盘中的数据不一致时,内存中的数据页就称为脏页。(也可以理解为redo log还没更新到磁盘中) 三,什么时候会触发数据库flush(刷脏页 阅读全文
摘要:
登录流程: 一:登录成功后: 1,根据userId生成token,放入redis中 key为token,value为用户信息进行存储。 2,response token到前端的cookie中 3,threadlocal中存储user 信息 二:拦截器: 1,通过request获取前端的cookie, 阅读全文
摘要:
1,不同的引擎有不同的实现方式。myisam直接存在磁盘上,可以直接读取。innodb需要一行行读,再进行累计。 2,innodb因为mvcc(多版本并发控制)的原因,同一时刻不同回话查询的数据可能不一致, 3,show table status可以显示表行数,但是不准确。 4,所以如何计数呢:一是 阅读全文
摘要:
一,直接创建完整索引,但是会占用大量空间 select * from t where a = "xxx"; 这条sql,如果创建完整索引的话,他的流程是:先去a索引树查询,获取到一条记录的主键id;到主键上根据该主键id查询行,判断a是否正确,加入结果集;取a索引树下一个位置数据,发现不满足循环结束 阅读全文
摘要:
一,一条SQL查询语句是如何执行的 mysql大体分为server层与存储引擎;server层又分为:连接器、查询缓存、分析器、优化器、执行器;存储引擎层负责数据的存储和提取,支持InnoDB、MyISAM、Memory等多个存储引擎。 查询缓存一般不建议使用。 二,一条SQL更新语句是如何执行的 阅读全文
摘要:
1,秒杀场景核心是要保证三点:稳,准,快;对应的技术落地便是高可用,一致性,高性能; 2,架构设计五原则 2.1 数据要尽量少:网络传输耗时,服务器压缩以及字符编码,序列化与反序列化消耗cpu 2.2 请求数要尽量少:页面依赖的 CSS/JavaScript、图片,以及 Ajax,建立连接要做三次握 阅读全文
摘要:
概念不多说,网上随便百度下就可以找到一堆。直接看代码,注意关注下运行结果中日志记录的时间。 一,Future: 运行结果: 二,FutureTask 运行结果: 阅读全文
摘要:
背景:有10个同学进行吃瓜大赛,分为两组进行。要求每组内的同学都必须分到瓜以后,裁判喊开始才能进行比赛。 代码如下: 结果如下: 注意两个工具类的区别: CountDownLatch: 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。 CyclicBrrier: N个线程相互等待, 阅读全文
摘要:
一,什么是OOM,原因有哪些 OOM也叫内存溢出,导致OutOfMemoryError异常的常见原因有以下几种: 二,通过一个案例定位排查 首先,看一下产生OOM的代码,它的语义是无限往集合中添加元素 首先介绍下用到的日志的概念以及工具: Heap Dump是什么?Heap Dump也叫堆转储文件, 阅读全文