yoko blog

learn and live


  • 首页

  • lal文档

  • 关于我

  • 友链

  • 站内搜索

回收站 - rtmp handshake | rtmp握手简单模式和复杂模式

发表于 2019-06-06 | 分类于 回收站
| 热度:
| 字数统计: 50

本文移入开源流媒体项目lal的官方文档中: https://pengrl.com/lal

本文完,作者yoko,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/20027/

golang源码阅读之定时器以及避坑指南

发表于 2019-05-17 | 分类于 Go
| 热度:
| 字数统计: 2.9k

本文分为三部分:
第一部分为阅读源码后的总结。
第二部分为高性能场景使用定时器需要注意的地方。
第三部分为系统库源码以及我写的注释。

本文基于go version 1.11.4

先放总结

阅读全文 »

golang源码阅读(1) - sync.Mutex | 互斥锁

发表于 2019-05-10 | 分类于 Go
| 热度:
| 字数统计: 846

以下分析基于golang版本1.11.4,对应源码 https://github.com/golang/go/blob/go1.11.4/src/sync/mutex.go

阅读全文 »

linux性能分析优化之基础指标参数(3) - 进程优先级 cpu nice priority NI PR %ni %nice

发表于 2019-05-10 | 分类于 linux性能指标
| 热度:
| 字数统计: 928

查看方式

阅读全文 »

linux性能分析优化之基础指标参数(2) - system load average | 系统平均负载

发表于 2019-04-30 | 分类于 linux性能指标
| 热度:
| 字数统计: 654

查看方式

阅读全文 »

ubuntu16.04 下编译和运行 c++ proto-quic quic_server quic_client

发表于 2019-04-27 | 分类于 环境搭建|工具使用
| 热度:
| 字数统计: 1.4k

下载proto-quic源码

阅读全文 »

linux性能分析优化之基础指标参数(1) - Process Status | 进程状态

发表于 2019-04-26 | 分类于 linux性能指标
| 热度:
| 字数统计: 1k

查看方式

阅读全文 »

golang工具race - 检测非法竞态访问数据

发表于 2019-04-20 | 分类于 Go
| 热度:
| 字数统计: 511

简介

非法竞态访问数据的常见场景是无任何同步保护下并行读写同一份数据。读写指有写的同时还有其它读或者写,都是读不算。

golang官方提供了非法竞态访问数据的检测手段。使用起来非常简单,不需要额外安装工具。
方法为在编译时添加-race参数。
该方法是运行时检测,而非静态代码检测。跑test和跑程序时都可以添加该参数来检测。

如何使用

阅读全文 »

stress - 系统压力模拟工具

发表于 2019-04-18 | 分类于 环境搭建|工具使用
| 热度:
| 字数统计: 698

前言

stress是一个故意制造系统压力的工具。它提供了一系列的参数用于配置如何制造CPU,内存,IO操作,磁盘压力。

安装

阅读全文 »

golang 网络编程之如何正确关闭tcp连接以及管理它的生命周期

发表于 2019-04-17 | 分类于 网络编程
| 热度:
| 字数统计: 1.1k

本篇文章部分内容涉及到tcp协议以及socket编程的通用底层知识。讨论的tcp连接对象皆为golang的net.conn对象。如果存在错误,请一定指正,谢谢。

先上结论

  1. Read方法返回EOF错误,表示本端感知到对端已经关闭连接(本端已接收到对端发送的FIN)。此后如果本端不调用Close方法,只释放本端的连接对象,则连接处于非完全关闭状态(CLOSE_WAIT)。即文件描述符发生泄漏。
  2. Write方法返回broken pipe错误,表示本端感知到对端已经关闭连接(本端已接收到对端发送的RST)。此后本端可不调用Close方法。连接处于完全关闭状态。
  3. 由于golang里net.conn内部对文件描述符的所有io操作都有状态保护,所以即使在对端或本端关闭了连接之后,依然可以任意次数调用Read、Write、Close方法。

个人认为正确、简单、语义清晰、高效的做法:应该在Read或Write返回错误后调用Close。不论是主动关闭还是被动关闭,调用Close后,不应该再Read或Write,并尽快释放net.conn对象。

部分demo测试与分析

阅读全文 »
1…78910
yoko

93 日志
10 分类
36 标签
RSS
GitHub

开源项目
🍀 lal: Go 直播服务器.
🍀 naza: Go 基础库.
🍀 libchef: c++ 基础库.
© 2019 — 2021 yoko 京ICP备19024469号
0%