获得徽章 0
- #挑战每日一条沸点#
day13
三、 性能修炼之道与企业实践
① 针对网络库的优化(buffer解析)
两种不同网络库的优势:
(1) go net:流式友好、小包性能高
(2) netpoll:中大包性能高、时延低
② 针对协议的优化(Headers解析、Header key规范化、热点资源池化)
追求性能、追求易用,减少误用、打通内部生态、文档建设、用户群建设展开评论1 - #挑战每日一条沸点#
day14
网络交互(刷抖音网络是怎么交互的?)
一、 网络接入
① 互联网
② 路由
(1) 路由并不一定是对称的
(2) 路由是在传输层协议中工作的
(3) 路由改的是Mac地址,而不是IP地址
③ ARP协议
(1) 只有逻辑同网段才能发送ARP
(2) ARP请求广播,ARP应答单播
(3) 免费ARP和ARP代理
④ IP协议
(1) 唯一标识,互联网通用,抖音客户端一个,抖音服务端一个
(2) 正常情况下,Mac地址不能代替IP地址
(3) IPv4不够用,解决方法:①IPv6 ②NAT
⑤ NAT展开评论1 - #挑战每日一条沸点#
day 06 (今日份再次摸鱼++)
Go语言进阶与依赖管理、
(1)并发编程
多线程并行,协程
(2)依赖管理
Go pass→Go Vender→Go Module
依赖管理三要素:
1.配置文件,描述依赖 go.mod
2.中心仓库,管理依赖库 Proxy
3.本地工具 go get/mod
(3)测试
回归测试、集成测试、单元测试(输入、测试单元、输出和期望等组成)、Mock测试、基准测试
(4)项目实践
需求设计、代码开发、测试运行展开评论1 - #挑战每日一条沸点#
day11
一、 走进HTTP协议
① HTTP协议的定义
HTTP:超文本传输协议(Hypertext Transfer Protocol)
② HTTP协议里有什么
③ 请求流程
业务层→服务治理层&中间件层→路由层→协议编(解)码层→传输层
④ 不足与展望
HTTP1:队头阻塞、传输效率低、明文传输不安全
HTTP2:多路复用、头部压缩、二进制协议
QUIC:基于UDP实现、解决队头阻塞、加密减少握手次数、支持快速启动展开评论1 - #挑战每日一条沸点#
day12
二、 HTTP框架的设计与实现
① 应用层设计(API设计):①可理解性 ②简单性 ③冗余性 ④兼容性 ⑤可测性 ⑥可见性
② 中间件设计(洋葱模型):适用场景:日志记录、性能统计、安全控制、事务处理、异常处理
③ 路由设计(前缀匹配树):框架路由实际上就是为URL匹配对应的处理函数(Handlers)
如何做设计:①明确需求 ②业界调研 ③方案权衡 ④方案评审 ⑤确定开发
④ 协议层设计:抽象出合适的接口
⑤ 网络层设计(网络模型)展开评论1 - #挑战每日一条沸点#
day 08
二、性能调优实战
① 简介(性能调优原则)
(1) 要依靠数据不是猜测
(2) 要定位最大瓶颈而不是细枝末节
(3) 不要过早优化
(4) 不要过度优化
② 性能分析工具pprof:
(1) 分析(Profile)
① 网页
② 可视化终端
(2) 工具(Tool)
① runtime/pprof
② net/http/pprof
(3) 展示(View)
(4) 采样(Sample)展开评论1 - #挑战每日一条沸点#
day 09
一、高质量编程简介及编码规范
① 简介
(1) 考虑到各种边界条件
(2) 稳定处理各种异常情况
(3) 易读易维护
② 编程原则:
(1) 简单性
(2) 可读性
(3) 生产力(团队整体工作效率)
③ 编码规范
(1) 代码格式
(2) 注释
(3) 命名规范
(4) 控制流程
(5) 错误和异常处理
④ 性能优化建议
(1) 性能优化的前提是满足正确可靠、简洁清晰等质量因素
(2) 性能优化是综合评估,有时候时间效率和空间效率可能对立
(3) 依据Go语言特性而生的相关的性能优化建议
二、性能调优实战
① 简介(性能调优原则)
(1) 要依靠数据不是猜测
(2) 要定位最大瓶颈而不是细枝末节
(3) 不要过早优化
(4) 不要过度优化
② 性能分析工具pprof:
(1) 分析(Profile)
① 网页
② 可视化终端
(2) 工具(Tool)
① runtime/pprof
② net/http/pprof
(3) 展示(View)
(4) 采样(Sample)展开评论1 - #挑战每日一条沸点#
day 07
高质量编程简介及编码规范
一、 高质量编程
① 简介
(1) 考虑到各种边界条件
(2) 稳定处理各种异常情况
(3) 易读易维护
编程原则:①简单性 ②可读性 ③生产力(团队整体工作效率)
② 编码规范
(1) 代码格式
(2) 注释
(3) 命名规范
(4) 控制流程
(5) 错误和异常处理
③ 性能优化建议
(1) 性能优化的前提是满足正确可靠、简洁清晰等质量因素
(2) 性能优化是综合评估,有时候时间效率和空间效率可能对立
(3) 依据Go语言特性而生的相关的性能优化建议展开评论1 - #挑战每日一条沸点#
day 05 (今日份再次摸鱼)
Go语言进阶与依赖管理
(1)并发编程
多线程并行,协程
(2)依赖管理
Go pass→Go Vender→Go Module
依赖管理三要素:
1.配置文件,描述依赖 go.mod
2.中心仓库,管理依赖库 Proxy
3.本地工具 go get/mod
(3)测试
回归测试、集成测试、单元测试(输入、测试单元、输出和期望等组成)、Mock测试、基准测试
(4)项目实践
需求设计、代码开发、测试运行展开评论1