分享一些收集到的好用工具、学习网站、社区等。
框架
- Google diff-match-patch 比对框架
- dumi 为组件研发而生的静态站点框架
- mdit-plugins markdown-it插件
开启事务->SQL解析、查询计划生成->查询要修改的数据->校验锁和加锁->修改数据和生成日志->本地提交->主备复制->返回提交成功->脏页刷入磁盘
开启事务
start transaction; update user set name = 'zzz' where id = 1; commit;
第一次执行增删改SQL时分配一个事务号
SQL解析、查询计划生成
查询缓存再MySQL5.7版本默认禁用,在MySQ8.0版本被删除
https://www.bilibili.com/video/BV1VbEMz3EBs/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=5b66fdaa6de7c1c724f35083d1ce217f
性能分析工具: Performance
Compiler explorer
排序
排序算法
- 快速排序:MySQL 5.7.8 之前,默认的排序算法是快速排序。
- 归并排序:MySQL 5.7.8 之后,默认的排序算法是归并排序。
排序原理
MySQL 在处理排序时有两种主要方式:
通过explain可以进行分析
- Using Index:如果排序字段有索引,MySQL 会直接利用索引完成排序。
- Using Filesort:如果没有合适的索引,MySQL 会将数据加载到内存或磁盘中进行排序。
Buffer_Pool
https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html
缓冲池是主内存中的一个区域, InnoDB 在访问表和索引数据时将其缓存起来。缓冲池允许从内存直接访问常用数据,从而加快处理速度。在专用服务器上,通常会将多达 80% 的物理内存分配给缓冲池。
页作为最小读取单位,默认16kb。
InnoDB存储引擎通过维护Buffer_Pool来缓存数据,从而提高读取效率。Buffer_Pool中缓存的数据页类型包括数据页、索引页等,其通过改造版LRU进行淘汰策略。
HyperLogLog 是一种用于统计基数(cardinality)的算法,它使用一个固定大小的数组来表示一个集合,并使用一个哈希函数来确定元素的位置。HyperLogLog 的核心思想是通过估计数组中 0 的数量来估计集合的大小。
HyperLogLog 的优点是它使用固定大小的数组,因此它的空间复杂度是 O(log n),其中 n 是集合的大小。这使得 HyperLogLog 非常适合处理大规模数据集。
在了解Java交易撮合引擎时看到了Disruptor,印象中美团好像写过相关的文章,所以赶紧来学习一下,顺便重温一下计算机缓存相关的知识。
学习笔记
✔️浏览器同源策略
浏览器同源策略(Same-origin policy)是浏览器提供的一个安全机制,它限制了不同源的文档、脚本、图像等资源被加载、执行等操作。所谓同源,指的是两个URL的协议、域名和端口都相同。
❓跨域会收到哪些限制
- 限制Document访问
- 限制Cookie访问
- 限制Ajax获取数据
❗限制Ajax获取数据
跨域限制仅存在于浏览器端,服务端不存在跨域限制。