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浪费电还算的慢。
未来代码的样子是数据驱动的, 而不是代码规则。
未来的代码不再是逻辑规则生成的, 而是数据驱动的算法逻辑, 并且和领域强相关。 未来大部分代码和公司相关,和数据强相关, 会产生出来多少个程序员也写不出来的代码。
你是怎么看一个领域比另外一个领域解决问题要更难的?
一般来说服务器是比嵌入式好的。 因为计算机本身就在解决三种问题: 网络、存储、计算。例如嵌入式程序员基本不关心网络和存储,在计算上也是简