计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

41|内功心法(二):内核和后端通用的设计思想有哪些?

你好,我是 LMOS。
上节课,我们学习了并行化、异步化、调度思想这三种内功心法,无论是内核设计还是后端场景里,你总能找到这些“心法”的影子。看完以后是不是感觉有点意犹未尽?
这节课,我再给你分享三种设计思想,分别是池化、分层和缓存。无论是操作系统内核,还是后端当中,这三种设计思想也是通用的。这两节课属于偏抽象的架构思想,因此建议你学完之后结合自己的具体工作实践进一步理解、消化。好,让我们进入正题。

内功心法之池化

如果你是一家水果店的店长,肯定要走批发采购、平时贩卖零售的路线。要是有顾客来选购一种水果的时候,我们才去采购、运输过来实在是费事费力,太过低效。但如果我们提前采购好一批水果,顾客来购买的时候我们直接拿给顾客,这样就可以有效节约时间和运输成本。
这种降低开销的思路,在工程中也是类似的。为了提升资源(计算、存储、网络)的复用性、避免重复创建的开销,我们通常会提前统一创建一批资源,放入资源池,在使用时直接向资源池申请,使用完毕之后再归还给资源池,这样的思路我们称为池化思想
之前讲内存管理的时候,我们提到过,为了减少内存分配或销毁时的时间开销,避免内存碎片的产生,我们会维护一个内存链表。
当编程语言申请内存的时候,OS 内核就会根据内存分配算法,在链表中查找一段可以分配的内存分配出去。等到内存需要释放的时候,不但需要进行查找、释放操作,还需要整理,这些操作都比较耗时。怎么解决这个问题呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

池化、分层和缓存是计算机科学中常见的设计思想,它们在操作系统内核和后端领域中有着广泛的应用。池化思想通过提前创建一批资源,放入资源池,在需要时直接获取,使用完毕后再归还给资源池,以提高资源的复用性和避免重复创建的开销。分层设计可以有效控制系统的复杂性、简化系统设计,让不同的人专注做某一层次的事情,提高工程效率和易维护性。缓存思想则可以通过将常用数据放入读取速度更快的存储空间,提高数据读取性能,但也需要注意缓存一致性的风险。这些设计思想在工程应用中有着重要的意义,能够提升系统的性能和效率。在实际工作中,读者可以思考在自己的项目中是否有应用到这些设计思想,并权衡其利弊。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 苏流郁宓
    说到底二八定律无处不在呀,总有一些代码的利用频率远高于其它代码! 把那些利用率高的代码,做成分层的接口,供其它代码调度使用!

    作者回复: 对的

    2022-11-06归属地:湖北
    2
  • 青玉白露
    多谢lmos老师,关于后端这两节课,收获颇多

    作者回复: 加油

    2022-11-05归属地:湖北
    2
  • peter
    请教老师两个问题: Q1:MySQL认证环节服务端是通过私有协议发送密码的吗? 文中池化部分,以MySQL为例讲解,其中一步是“服务端向客户端发送密钥”。 发送密码应该不是在TCP连接阶段。TCP连接建立以后,MySQL服务端主动发送给MySQL客户端,属于服务端和客户端之间的私有协议,开发人员感觉不到(估计也不能干预此步骤),是这样吗? Q2:Java J.U.C 中 ThreadPoolExecutor 线程池为什么不建议使用? 看到有这样的面试题“为什么阿里不建议使用Java J.U.C 中 ThreadPoolExecutor 线程池”, (没有研究,这里问一下)。请问为什么?

    作者回复: Q1 是的 Q2 JUC 实现的并不是太优 可能太过通用了 不适应具体场景

    2022-11-04归属地:湖北
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部