本博客因为部署在netlify, 所以可能会出现部分图片加载不出来的情况。如有必要请科学上网!
GO语言SingleFlight包的使用
SingleFlight singleflight 包主要是用来做并发控制,常见的比如防止缓存击穿。 singleflight 包提供了一种“重复函数调用抑制机制”。 换句话说,当多个 goroutine 同时尝试调用同一个函数(基于某个给定的 ke...GO语言sync包的使用
sync.Mutex 互斥锁。sync.Mutex在使用的时候要注意:对一个未锁定的互斥锁解锁将会产生运行时错误。 使用示例: 1234567891011121314151617181920212223242526272829303132333435...缓存雪崩、缓存击穿和缓存穿透
缓存 缓存用于存储那些频繁访问的数据,以减少重复计算或数据获取的时间。因为直接访问数据库需要读取磁盘,而磁盘的访问速度是很慢的。 应用程序处理一个请求时,都会先去缓存中获取数据,如果缓存中没有,再去数据库中获取。因此也就产生了缓存雪崩、击穿和穿透。 ...GO-优雅等待所有子协程结束
为什么要等待子协程结束 可能是因为cpp写多了(bushi。众所周知,在cpp中,有thread.join()可以等待线程结束。但是GO中的协程没有这类API,所以就有了这个问题。主要平时写demo程序时,总是需要等待子协程结束才能完成看出来协程的调...给flatpak安装的应用设置代理
给flatpak安装的应用设置代理 进入目标应用的沙箱环境: 1flatpak run --command=sh 包名 包名查找: 1flatpak list 在沙箱环境内设置代理: 12345678910gsettings set org.gnom...GO基础语法
GPM模型 更高详细的GO的并发细节参照GO程序员笔试面试宝典 并非引流,只是因为写这篇文章时对细节还不了解,也没看源码。感觉脑瓜子还是一团乱麻。等后面有机会再梳理一下。 G:Goroutine GO协程。拥有自己的栈空间,指令指针和其他用于...goroutine的回收机制
goroutine的回收机制 goroutine的回收是自动进行的,但是有前提条件: 自然退出:goroutine运行的函数return之后,goroutine状态变为dead。 释放资源: 栈内存归还runtime内存管理器 对应的G对象可能被...GO语言反射
GO语言反射 所谓反射,即:允许程序在运行时检查和操作变量的类型和值。反射的核心是reflect包,它提供了丰富的API来处理变量的元信息。通过反射,可以动态获取变量的类型、值、结构体字段、方法等信息。 需要注意的是:反射会带来额外的性能开销,在需要...GO基础语法
GO语言并发 基本并发知识 并发和并行 并发:并发主要由切换时间片来实现宏观上的"同时"运行 并行:并行是直接利用多核实现多线程的运行,go可以设置使用核数,以发挥多核计算机的能力 进程和线程 资源分配和调度: 进程是程序...Ubuntu配置Aria2
安装aria2 Ubuntu/Debian: 1sudo apt install CentOS/Fedora: 1sudo yum install aria2 Arch/Manjaro: 1sudo pacman -S aria2 ...