数据结构和算法|青训营笔记

107 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第7篇笔记

数据结构和算法

image.png 完全随机的情况
有序/逆序的情况
元素重复度较高的情况

时间复杂度

随机/有序/重复元素排序 长度短序列 中序列 长序列 在随机元素下,短序列插入较优。中长序列快速排序最优。 在有序元素下,插入排序最优。 堆排序在所有情况性能较稳定,和最快的相差不大

pdqsort-v1

  1. 短序列定义为12-32,使用插入排序
  2. 如何得知快速排序不佳? 一次快排结束的返回值距离两端太近,即为表现不佳,次数达到limit,切换堆排序,是的最坏仍为O(nlogn)

pdqsort-v2

改进pivot(尽量选中位数) 寻找中位数/寻找首元素->寻找近似中位数 短序列 选固定元素 中序列<=50 采样3个元素 长序列>50 采样9个元素

采样元素逆序->序列可能逆序->翻转 采样都是顺序->序列可能有序->使用插入排序(有限制次数)

pdqsort-v3

优化-多次partition生成的pivot相同,使用partitionEqual把重复的排到一起,减少pivot选择(partitionEqual重复的挪到一起) 优化-pivot选择不佳就随机交换

超时 熔断 限流

长尾请求

log metric tracing

高性能

服务治理保证稳定性

ketex

  1. 原生库无法感知连接状态
  2. 原生库goroutine 连接利用效率低下(I/O),存在大量开销 没有多路复用!一个协程一个连接? epoll主动监听

image.png JIT即时编译? 微服务过微?

合并部署

RPC--IPC本地调用 thrift

http框架

BIO和NIO

image.png SIMD快速解析