随笔分类 - 《Go》
摘要:
简介 中文文档 Fiber 是一个受到 Express 启发的 Web 框架,基于使用 Go 语言编写的最快的 HTTP 引擎 Fasthttp 构建。旨在通过零内存分配和高性能服务,使快速开发更加简便。 安装 go get -u github.com/gofiber/fiber/v2 packag
阅读全文

摘要:
报错 解决 修改 go20\src\syscall\types_windows.go 加入一下代码 /** 找到此位置添加如下 */ 16: "SIGUSR1", 17: "SIGUSR2", 18: "SIGTSTP", } /** 兼容windows start */ func Kill(...
阅读全文

摘要:介绍 在 Go 语言中,`context` 是一个用于在不同 Goroutine 之间传递请求范围数据、控制请求生命周期和处理取消信号的工具。它提供了一种机制来管理 Goroutine 之间的上下文信息,并允许在请求处理链中传递和取消上下文。 `context` 的主要优点和用途包括 1. 请求范围
阅读全文
摘要:特性 一个还未初始化的通道会被预置为nil(编译和运行时不会报错) channel在使用时,需要使用make操作符,make会初始化通道,在内存中分配通道的空间。 引发panic的原因 关闭一个 nil 值 channel 会引发 panic。 package main func main()
阅读全文
摘要:
并发 Go中map默认不安全的,也实现了并发安全的对象:sync.Map 和Java的HashMap一样,并发安全的是:ConcurrentHashMap 并发不安全 不安全是因为源码中没有实现读写分离。进行了判断异常: 在哈希表写操作时,会将哈希表的标志位 hashWriting 设置为 1,以表
阅读全文

摘要:
介绍 Trie(字典树)是一种用于高效存储和查找字符串的数据结构。 Go语言标准库中没有提供Trie树的实现,但是可以使用第三方包来实现Trie树。 下面是Trie的使用方法: 创建Trie树:首先需要创建一个Trie树的根节点,根节点不存储任何字符,只是作为一个起始点。 插入字符串:将字符串中的每
阅读全文

摘要:
查看Go的不同版本:https://go.googlesource.com/go/+refs 源码位置src/runtime/slice.go :func growslice(xxx) 1.18之前 如果原Slice容量小于1024,则新Slice容量将扩大为原来的2倍; 如果原Slice容量大于等
阅读全文

摘要:
用户态线程 GMP 在1.2版本之前是没有p的概念的 只有 MG Go 语言基于 GMP 模型实现用户态线程(协程) G:表示 goroutine,每个 goroutine 都有自己的栈空间,定时器初始化的栈空间在 2k 左右,空间会随着需求增长。 M:表示 Machine,抽象化代表内核线程,记录
阅读全文

摘要:Go中提供了网络编程接口支持HTTP、TCP、UDP协议等,下面演示下TCP通信Server、Client Server package main import ( "fmt" "net" ) func main() { // 创建一个 TCP 监听器 listener, err := net.Li
阅读全文
摘要:
在 Golang 中接口(interface)是一种类型,一种抽象的类型。接口(interface)是一组函数 method (方法)的集合,Golang 中的接口不能包含任何变量。 在 Golang 中接口中的所有方法都没有方法体,接口定义了一个对象的行为规范,只定义规范不实现。接口体现了程序设计
阅读全文

摘要:
互斥锁是并发程序中对共享资源进行访问控制的主要手段,Go提供了Mutex(互斥锁)结构体类型 并且使用简单:对外暴露两个方法 Lock() 和 Unlock() 分别用于加锁和解锁 使用 开启10个Goroutine来计算count的结果 package main import ( "fmt" "s
阅读全文

摘要:
Go中分为2种接收器:指针类型、非指针类型 指针类型接收器 package main import "fmt" type Property struct { value int } func (p *Property) SetValue(v int) { p.value = v } func (p
阅读全文

摘要:内联函数(Inline Function)是一种编译器优化技术,它将函数调用处直接替换为函数体,以减少函数调用的开销和提高程序的执行效率。下面是一个简单的示例来说明内联函数的概念: package main import "fmt" // 定义一个简单的加法函数 func add(a, b int)
阅读全文
摘要:在 Go 中,可以使用操作系统的信号来实现优雅的启动和停止。具体来说,可以在程序中监听 SIGINT 和 SIGTERM 信号,在接收到这两个信号时,优雅地关闭程序。 下面是一个简单的示例: package main import ( "fmt" "os" "os/signal" "syscall"
阅读全文
摘要:
goroutine(协程) package main import ( "fmt" "sync" "time" ) // 声明goroutine 计数器 var wg sync.WaitGroup func test() { defer wg.Done() //// goroutine 结束就登记-
阅读全文

摘要:
开启go mod 设置代理 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 安装Gin mkdir gin cd gin go mod init HelloGin go get -u github.com/gi
阅读全文
