后端学习 | 青训营笔记

57 阅读2分钟

这是我参与「第五届青训营 」伴学笔记活动十天。

查缺补漏 三件套

环境搭建

Docker

POSTMAN

Git

Golang

框架体验

Hertz:字节开发的GOlang微服务框架

RPC(Remote Procedure Call):RPC协议的主要目的是做到不同服务间调用方法像同一服务间调用本地方法一样 框架:kitex

GORM

其他知识

IDL:接口描述语言 link.juejin.cn/?target=htt…

etcd:分布式键值对存储框架 opentracing:分布式监控追踪日志框架


高质量编程与性能调优 代码是最好的注释 注释应该提供代码未表达出的上下文信息

pprof:可视化性能分析工具,产看CPU memory的消耗。


GO内存管理

自动内存管理

  • Auto memory mamnagement 自动内存管理
  • Garbage collection 垃圾回收
  • Mutator 业务线程:要么是创建新对象、要么修改对象指向
  • collector GC线程:必须感知对象指向关系的改变
  • serial GC 只有一个GC线程
  • concurrent GC 并发GC:mutator和collection可以同时执行
  • Parrllel GC 并行GC:有多个GC线程
  • tracing garbage collection 追踪垃圾回收:回收不可达对象
    • Copying GC 复制对象GC
    • Mark-sweep GC 标记-清理GC free list指向可分配
    • Mark-compact GC 标记-压缩GC 存活对象放到内存开头
  • reference counting 引用计数:对象与之相关的引用数目,大于零时存活。
  • G饿呢rational GC 分代GC
    • young generation 年轻代
    • old generation 老年代

内存管理及优化

  • 参考TCmalloc thread caching
  • 提前将内存分块
  • nmap()系统调用,向OS申请一大块内存,如4MB
  • mspan、mcache、mentral
  • 指针碰撞风格的对象分配

编译器和静态分析

  • 词法、语法、语义
  • intermediate representation (IR)中间表示
  • 代码优化、代码生成
  • 控制流、数据流
  • 过程内分析、过程间分析

编译器优化

  • 函数内联
  • 逃逸分析