• 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浪费电还算的慢。

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

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

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

    • 一般来说服务器是比嵌入式好的。 因为计算机本身就在解决三种问题: 网络、存储、计算。例如嵌入式程序员基本不关心网络和存储,在计算上也是简
  • 相关阅读:
    电脑打开图片比例太大怎么调?这个方法又快又好用
    几何建模Brep边界表达法
    threehit二次注入案例
    使用构建缓存优化 Docker 镜像构建
    棋盘格测距-单目相机(OpenCV/C++)
    【第十六篇】- Maven 自动化部署
    如何用Java+SpringBoot+Vue构建一个靓车汽车销售网站?
    Toronto Research Chemicals altronojirimycin 盐酸盐研究工具
    [蓝桥杯 2021 省 AB] 砝码称重
    【LeetCode】双指针求解和为s的两个数字
  • 原文地址:https://blog.csdn.net/liupeng19970119/article/details/127876832