02 | 实现一个最简单的内核
大致流程 引导 汇编代码分四个部分: GRUB的多引导协议头 关掉中断,设定CPU的工作方式 初始化CPU的寄存器和C语言的运行环境 GDT_START main代码: 操作显存,实现printf 编译 sudo apt-get install nasm make all 安装 df /boot/ df /boot的结果在哪个sda?,set ro…
01 | 程序运行的过程
编译过程 先加入头文件、替代宏 => 生成汇编文件 => 二进制文件 => 链接,形成可执行文件 装载执行 五大基本组成部件: 输入设备 存储器 运算器 控制器(控制程序执行) 输出设备
记录一次qt的开发
源码在这里 https://github.com/wushuming666/changeFileName 核心只有100行左右,bfs板子。只写bfs没啥问题,这里牵引出来一些Qt相关。 ui界面可以一个布局一个控件,整体再栅格布局。能够让文字在转换分辨率时也能正常显示。 其实我一开始想分文件开发的。但是qDebug怎么也用不出来。可能是和QObj…
索引和慢查询日志
怎么切入SQL和索引的优化问题?慢查询日志找出耗时的sql语句。 将阈值设置为0.5秒,进行俩次超出日志阈值的查询。 mysql> set global long_query_time = 0.5; Query OK, 0 rows affected (0.00 sec) mysql> select * from t_user wher…
InnoDB自适应哈希索引
InnoDB存储引擎监测到同样的二级索引不断被使用,那么它会根据这个二级索引,在内存上根据二级索引树(B+树)上的二级索引值,在内存上构建一个哈希索引,来加速搜索。 不过哈希索引是消耗资源的,它需要维护自自身的数据,并不是说自适应哈希在任何情况下都会提升二级索引的查询性能 使用SHOW ENGINE INNODB STATUS\G可以看到两个比较重…
哈希索引
思考这么一个问题:我们都认同哈希的查询是O(1),比B+树的O(log(n))要高效,那为什么现在的数据库几乎不用到哈希索引? 即使是在创表时加上hash字段,实际也不是哈希索引。 mysql> create index nameidx on student(name) using hash; Query OK, 0 rows affecte…
聚集索引和非聚集索引
MyISAM存储引擎data放的数据的地址。就是非聚集索引结构。不涉及回表操作。 索引和数据都在主键索引树上放着就是聚集索引。 MyISAM的辅助索引和主索引在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。 InnoDB的辅助索引叶子节点上存放的是索引关键字和对应的主键,涉及回表操作。
InnoDB 的主键和二级索引树
InnoDB 是数据和索引存储在一块的 辅助索引树/二级索引树 key是辅助索引的值,data是所在记录行的主键值。要搜索的如果在辅助树上没有,将回表。 假如现在要执行这句话 select * from student where age=20 ORDER BY name;。可以采用多列索引,需要注意的是索引顺序要和筛选顺序对得上。 mysql&g…
B+树索引
B-树 由AVL引入B树。内存上都是O(logn),主要是优化了磁盘IO。 拿2000W的数据来说事儿。AVL在最坏的情况下需要log(2000W)/log(2) = 25,25次磁盘I/O是一个很糟糕的速度;磁盘的读取是按块来的,把B树节点设置成块大小将对磁盘I/O非常友好,假设一个节点存500个,只需要log(2000W)/log(500) =…
MySQL 索引
这篇漫画还8错 物理上(聚集索引&非聚集索引)/逻辑上 优点:提高查询效率 缺点:CPU负荷太重。磁盘I/O 普通索引/二级索引:数量不限。一张表的一次查询只能用一个索引 唯一性索引:UNIQUE,主键索引隶属于唯一性索引 主键索引:Primary Key自动创建索引(InnoDB如果用户没有设置索引,会自动添加。因为它数据和索引两个一起)…