Muxx的快乐笔记


  • 首页

  • 归档

  • 标签

  • 关于

  • 搜索

计算机组成原理笔记

发表于 2021-05-24

脑图

阅读全文 »

使用expect构建命令行自动化交互程序

发表于 2021-02-08

背景介绍

expect 是由Don Libes基于Tcl( Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率

阅读全文 »

Go构建文件系统监控

发表于 2020-11-18

在很多场景下我们需要用到文件系统监控,比如构建配置的热加载,词典的触发备份等,之前我写过一个基于轮训实现的文件系统监控 kwatcher,现在再看的话发现有很多地方不足

  • 效率低。对于不经常变动的文件,每隔几秒的检查是多余的
  • 时效性低。时延最大达轮训间隔时间。
阅读全文 »

Goroutine泄露问题

发表于 2020-10-28

背景介绍

某次上线后服务goroutine数量激增,怀疑是goroutine泄露导致,监控如下

阅读全文 »

Go语言学习之反射

发表于 2020-10-10

简介

Go反射提供了一种可以在运行时(runtime)操作任意类型对象的能力。

在Go的反射定义中,任何接口都会由两部分组成的,一个是接口的具体类型(Type),一个是具体类型对应的值(Value)。
更精确的描述是,value指的是实现接口的底层具体数据,type指的是数据的完整类型

1
2
3
4
5
获取反射类型
reflect.TypeOf()
获取反射值
reflect.ValueOf()
阅读全文 »

如何写好项目文档

发表于 2020-09-21

引子

  • 太多程序员(包括很多资深程序员)不会写文档
  • 太多项目没有(完整)文档
  • 即使有文档,这些文档达标了吗
  • 你对文档有正确的认识吗
  • 你会写文档吗
  • 软件项目的文档,可有可无吗
阅读全文 »

go语言错误处理

发表于 2020-09-11

简介

目前没有go官方的错误处理规范,通常每个人会有自己的实现,本次梳理几种可行的错误处理实现

方案一: 利用嵌套错误

什么是嵌套错误

Go1.13在errors和fmt标准库包中新增了功能以简化处理包含其他错误的错误。其中最重要的是一个约定: 包含一个错误e2的错误e1可以实现Unwarp方法来返回所包含的底层错误,简单来说,如果e1包装了e2,你可以Unwrap e1来得到e2。

Unwrap 得到的底层错误本身可能也具有Unwrap方法,我们将这种通过重复Unwrap得到的错误序列称为错误链

阅读全文 »

解析sync.Pool

发表于 2020-08-25

介绍

特定场景下某对象需要频繁地创建,这种操作可能会影响程序性能,大致原因是2个:
1.创建对象需要申请内存
2.频繁创建对象,会对GC造成较大压力

为解决这个问题sync.Pool诞生了,sync.Pool简单理解就是对象池,其官方说明如下

  • 对象池是一批可被独立存放获取的临时文件的集合
  • 对象池中的对象会在任意时间被移除(无通知)
  • 对象池是并发安全的

通俗的讲对象池其主要做了几个事情

1.复用之前对象,不用每次新建
2.预创建对象,不用临时创建
3.采用性能更高的存储做缓存,提高响应速度

A Pool is a set of temprary objects that may be individually saved and retrieved

Any item stored in the Pool may be removed automatically at any time without notification. If the Pool holds the only reference when this happens,the item might be deallocated

A Pool is safe for use by multiple goroutines simultaneously.

阅读全文 »
12…29
Mu

Mu

230 日志
53 标签
© 2021 Mu
由 Hexo 强力驱动
主题 - NexT.Pisces
京ICP备2023009489号

京公网安备 11010802041710号