2023-09-24周末总结

2023-09-23  本文已影响0人  朱宗宁_2022公益强化班

又是一个周末

这周学习总结是

1复习了mysql的基础命令,主要是在写mysql的简单算法中用到了when、then、union等的应用

2了解了协程的原理,协程和线程的区别,线程就是把进程分成一小块一小块的,然后线程之间可以共享资源,而协程的出现就是因为,线程与线程之间的调换花费资源过多,想要解决这个问题,所以就在线程中使用协程调度器可以保定多个协程的具体执行代为,这样如果某一个协程出现了阻塞,那么直接使用协程调度器就可以转换执行单位,为不是切换线程。而且协程是代码层次的并发控制机制,与线程甚至可以相互独立,同时又能够共享线程或进程的资源,协程的切换可以由程序员控制,可以在代码中显示的切换,代价低

3了解mysql的查询底层实现:就像一个工场一样,从接收mysql语句开始,一步一步的往下分任务加工,最后把结果提交出来

第一步是如果是查询语句,那么如果在缓存中有这些记录便可以直接返回值,不需要后续的工程,第二步是用一个解析器,把给予的mysql语句逐步分析,把对应的关键字放置到对应的位置,把这些位置理解为一棵解析树,关键字放完后,在把中间的变量名放进去,看有没有语法错误,如果没有,就尝试把这棵树的代码尽量优化使时间复杂度降低,然后开始从解析树的最上面开始向下执行,用执行的引擎去查询mysql中的数据给返回到客户端,返回的同时会把返回的结果也放置到缓存中,方便下一次使用查找

4了解mysql的数据结构组成:底层查询的数据结构也是为了让时间复杂度降低,一步步的从线性表到二叉树到AVL树到红黑树到b-树最后到达b+树,b+树就是每一个节点都放置多个数据,同时保持在插入数据的时候都是从左到右逐步增加的原则,树是有层级关系的,前面的树大多是因为层级关系过多,所以每次从一层到另外一层花费的资源太多所以被代替,而b+树是前n-1层都是每个节点内放置多个id值,然后顺着id值向下走只有叶子节中放置data数据,这样每个节点中可以放置的id值会比较都,也就是分叉多,分叉多自然树的高度也就低了。

5了解管道的底层原理:管道就是为了让两个进程之间可以交换数据用,两个进程都可以接触到内核,所以在内核中开辟缓冲区,两个进程通过这个缓冲区交换数据,就是管道

6了解锁的底层原理:为了了保证临界区代码的安全,两个线程或者协程可能会同时对一个数据进行操作,锁就是让a线程操作数据的时候,把资源路径锁住,不让b去操作数,就不会造成信息错乱了

上一篇下一篇

猜你喜欢

热点阅读