Tag: Golang

Golang map 读写加锁

Jackey Golang 304 次浏览
在 Go 中,map 本身并不是线程安全的。如果在并发环境中对 map 进行读写操作,必须采取适当的同步措施来确保线程安全。 使用 sync.RWMutex sync.RWMutex 提供了读写锁的功能,允许多个读取操作同时进行,但写入操作会独占锁。这种方...

Golang 配合 rsyslog 写入远程日志

Jackey Golang 1,359 次浏览 ,
syslog 安装 sudo apt-get install syslog 开放远程写入 修改配置文件:/etc/rsyslog.conf,放开对外提供服务的注释    # provides UDP syslog reception    module(load="imudp")    input(type="imudp" port="514") ...

golang ent 建立 MySQL 连接池

Jackey Golang 1,092 次浏览 , ,
安装 ent 包 go install entgo.io/ent/cmd/ent@latest 生成初始化代码 在项目根目录创建目录:ent/schema 在schema目录创建空表代码文件 DrData.go: type DrData struct { ent.Schema } // Fields of the Data. fun...

Golang logrus 自定义日志格式

Jackey Golang 1,831 次浏览 , ,
logrus 仓库地址:https://github.com/sirupsen/logrus 实现代码: func init() { // 配置日志格式 logrus.SetReportCaller(true) logrus.SetFormatter(&MyFormatter{}) logrus.SetLevel(logrus.DebugLev...

Golang websocket 客户端

Jackey Golang 1,586 次浏览 ,
基于:github.com/gorilla/websocket 实现 func main() { interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt) ws := "ws://127.0.0.1:8080/ws" c, _, err := websocket.DefaultDia...

Golang etcd ClientV3 的使用

Jackey Golang 1,518 次浏览 ,
etcdctl基本使用 增加一条数据 etcdctl put "/school/class/name" "helios" 获取一条数据 etcdctl get "/school/class/name" 得到一组数据 etcdctl get "/school/class/" --prefix 得到所有的key etcdctl --keys-on...

HTTP 报文解析

Jackey Golang 1,704 次浏览 ,
获取请求报文 请求报文格式说明 HTTP请求报文由请求行、请求头、空行、请求体四个部分组成,如下图:   请求行 请求行由方法字段和HTTP协议版本字段3个部分组成,他们呢之间使用空格隔开。 HTTP请求方法由GET...

Golang 网络传输

Jackey Golang 1,684 次浏览 , , ,
网络分层架构 典型协议 传输层:常见协议有TCP/UDP协议 应用层:常见的协议有HTTP协议,FTP协议 网络层:常见协议有IP协议,ICMP协议,IGMP协议 网络接口层:常见协议有ARP协议,RARP协议 TCP传输协议(Transmission ...

Golang 条件变量

Jackey Golang 1,581 次浏览 ,
条件变量的作用并不保证同一时刻仅有一个协程(线程)访问某个共享的数据资源,而是在对应的共享数据的状态发生变化时,通知阻塞在某个条件上的协程(线程)。条件变量不是锁,在兵法中不能达到同步的目的,因此条件变量总是与锁一起...

Golang 手撸 json 序列化

Jackey Golang 1,267 次浏览 ,
注意:仅作为学习参考,并没有完整实现所有类型 type User struct { Name string Age int Sex byte `json:"sex"` } type Book struct { ISBN string `json:"isbn"` Name string Price ...

Golang 定时器

Jackey Golang 1,423 次浏览 ,
time.Timer Timer 是一个定时器。代表未来的一个单一事件,你可以告诉timer你要等待多长时间。 type Timer struct { C <-chan Time r runtimeTimer } 它提供一个channel,在定时时间到达之前,没有数据写入timer.C ...
Go