• 5_system_design_experience


    init

    background

    Today, I will introduce how to use Git. Git is a tool that we can use it record project logs. When we build a big project, there have many questions in development. Using Git can do a better job f in a team. We need to control source quality with Git in the pearl life project.

    Content

    怎么设计一个解耦的后端系统

    一个大型的后端应该怎么设计

    怎么处理一写多读的多线程场景

    ref [1]的双buff机制。

    怎么保证代码级别的稳定性和高可用

    编程感悟

    一些编程的感悟

    大部分都是业务的面向对象编程

    • 除了面向对象是基础,如果是开发直接面对用户的普通应用(Application),那么你可以再研究一下“泛型”和“函数式”,就基本可以解决 90% 的开发问题了;如果是开发面向程序员的库(Library),那么你就有必要深入了解“泛型”和“模板元”,优化库的接口和运行效率。

    代码相关的理解

    • 代码其实可以从程序的生命周期来理解、一个 C++ 程序,但里面的代码可能会运行在不同的阶段,分别由预处理器、编译器和 CPU 执行;一般我们写出好的代码需要从编码、预处理、编译这几个阶段去考虑问题, 这几部分的习惯和认知弄好, 在运行时候通过调试等手段检查问题就少, 回去修改的次数就少。
    • 不同编译器实现的结果可能不一样, 不像java是统一的。
    • 如果对性能要求不高, 不要用C++自己找麻烦。python非常香。定位就是需要1s内相应采用。

    要注重性能和标准。 (性能优化主要要硬件加速, 任务下放, 不要靠单个cpu来做)

    • 目前cpu单核已经到达峰值, 只是在增加cpu 内核, 但是网速还在涨, 也就是说网速增长太快, 但是语句级的运行速度已经很难提升了, 也就是语句优化基本快不了多少, 硬件加速才是王道。 最早加速是80年代, 将网络的校验和计算下放到网卡中。 之后cpu开始加一些指令去将耗时的cpu计算直接以指令生效, 速度大大提升, 因此没有必要花太多语言级别的优化, 很多intel都会增加指令去做硬件优化, 不是你软件的优化。 之后还有一些用内核态sendfile操作, 将任务下方到内核态。 很多应用层计算内容耗时的会放到网卡, 因此就是说如果网络性能优化, 最好就是买网卡就行 ,没必要去调整网络部分。 此外现在很多数据运算, 例如深度学习等等, 一般都是下放到gpu或者tpu算, 用cpu浪费电还算的慢。

    未来代码的样子是数据驱动的, 而不是代码规则。

    • 未来的代码不再是逻辑规则生成的, 而是数据驱动的算法逻辑, 并且和领域强相关。 未来大部分代码和公司相关,和数据强相关, 会产生出来多少个程序员也写不出来的代码。

    你是怎么看一个领域比另外一个领域解决问题要更难的?

    • 一般来说服务器是比嵌入式好的。 因为计算机本身就在解决三种问题: 网络、存储、计算。例如嵌入式程序员基本不关心网络和存储,在计算上也是简
  • 相关阅读:
    算法刷题打卡第32天:预测赢家---动态规划
    ARP欺骗
    Windows安装Elasticsearch8.x保姆级教程
    Python:基于dlib,numpy进行换脸实践
    在Pytorch中调用RNN模型的小细节
    【ReactRouter5】路由的模糊匹配,重定向以及嵌套路由
    【云原生 · Kubernetes】Kubernetes Node的隔离与恢复
    港联证券:股票浮筹比例的指标怎么用?
    C++ 单向链表手动实现(课后作业版)
    个人设计web前端大作业 基于html5制作美食菜谱网页设计作业代码
  • 原文地址:https://blog.csdn.net/liupeng19970119/article/details/127876832