分类:技术

94 篇文章

【Redis】学习之路
《Redis学习之路》目录。 这是自己在学习Redis过程中的记录的笔记。 Redis初步认识 Redis介绍 Redis的高并发 Redis软件安装 Redis源码编译安装 Redis使用帮助 redis.conf详细解读及配置建议 Redis常用命令 通用命令 五种基本数据类型 更多Redis命令可参考:[2019中文翻译版]http://re…
【TCP】BBR拥塞控制算法
传统的拥塞控制算法是以丢包为驱动的拥塞控制算法,其实还有一种以带宽测量为驱动的谷歌(2016年提出的) BBR 拥塞控制算法。 我们先来看一个问题,大管道向小管道传输数据引发拥堵: 图中: 发送方的管道流量非常的大,但是瓶颈路由器向接收方发送的管道却是非常的窄。所以一定就会导致大量的报文积压等待在发送方的管道,实际上从很窄的瓶颈路由线路出来以后,虽…
【TCP】拥塞控制
由于 TCP 协议向应用层提供不定长的字节流发送方法,使得 TCP 协议先天性的就有意愿去占满网络中的整个带宽。但是当网络中许多 TCP 连接同时试图去占满整个带宽的时候,就有可能发送恶行拥塞事件。 TCP 的拥塞控制算法能够有效的降低网络中的拥塞,提升所有 TCP 连接的发送速度。 慢启动 拥塞窗口 cwnd (congestion window…
【Linux】进程、线程和协程
进程的定义 进程就是程序动态运行的实例,它是承担分配系统资源(CPU时间,内存)的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素: 标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。 状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几…
【Linux】网络编程 – 多路复用
为什么要学IO学多路复用 为了解决:C10K、C100K (TPS|QPS) 等性能问题。 在多连接的情况下,处理速度的快与慢就决定了技术怎么去选型。 服务端|客户端 既然多路复用就是为了解决多连接情况下的性能问题,那么我们先来看一下建立一个连接都要经过哪些过程。 strace 追踪 strace 是一个可以抓取程序与操作系统之间的交互信息及调用了…
【markdown】vscode为 markdown 设置快捷片段
code snippet(用户片段)用于方便代码编写人员快速输入常用代码片段或者模板。 但是据亲身实验,只是上面的设置并不能实现Markdown文件编写时代码片段的快捷使用,我们还需要针对markdown类型文件进行具体的设置,打开 settings.json 文件,添加如下配置: "[markdown]": { "e…
Go性能调优2 – 性能调优示例
性能调优过程 设定优化目标(如:qps达到多少,内存消耗低于多少) 分析系统瓶颈点 优化瓶颈点 ps: 而不是盲目的,无限制的优化我们的程序 常见分析指标 Wall Time 程序运行的绝对时间,其中可能会调用外部系统,可能会等待web响应,会影响绝对时间 CPU Time Block Time Memory allocation 内存分配 GC …
Go性能调优1 – 性能调优工具
准备工作 安装 graphviz brew install graphviz 将 $GOPATH/bin 加入 $PATH Mac.OS:在 .bash_profile中修改路径 安装 go-torch (火炬图) 下载并复制 flamegraph.pl (https://github.com/brendangregg/FlameGraph) 至 …
【Go】协程机制
Thread vs. Groutine 创建时默认的 stack 的大小 JDK5 以后 Java Thread stack 默认为1M Groutine 的 Stack 初始化大小为2K (创建起来更快) 和 KSE (Kernel Space Entity) (直接由 CPU 调度) Java Thread 是 1:1 Groutine 是 M…
【Go】学习笔记
数据类型分类 值类型:基本数据类型是Go语言实际的原子,复合数据类型是由不同的方式组合基本类型构造出来的数据类型,如:数组,slice,map,结构体 整型 int8,uint # 基础类型之数字类型 浮点型 float32,float64 # 基础类型之数字类型 复数 # 基础类型之数字类型 布尔型 bool # 基础类型,只能存true/fal…