摘要:
服务注册代码 package main import ( "context" "fmt" "log" "net" "os" "os/signal" "time" "go.etcd.io/etcd/client/v3" ) const ( etcdEndpoints = "localhost:2379 阅读全文
摘要:
(1) 安装protoc,这是通用的,所有语言都需要 # 下载网址: https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-win64.zip 解压后将将protoc的bin目录添加到环境 阅读全文
摘要:
package main //生产者代码 import ( "fmt" "github.com/IBM/sarama" "time" ) // 基于sarama第三方库开发的kafka client var brokers = []string{"127.0.0.1:9092"} var topic 阅读全文
摘要:
linux服务器部署了一个tcp服务,需要进行并发压力测试 看看服务器能支持多少个tcp长连接 预计会有50w个连接 需要设置linux 不然是无法支持这么多连接的 如果达到这个值是无法建立新连接的 报错信息一般为 too many open files 1 , fs.file-max linux系 阅读全文
摘要:
防止订单重复支付 : redis分布式锁 阅读全文
摘要:
//server.go package main import ( "fmt" "math/rand" "net" "strconv" ) func main(){ listener,err := net.Listen("tcp",":8080") if err != nil { fmt.Print 阅读全文
摘要:
ioc 控制反转 di 依赖注入 是一种设计思想 ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部之间控制 ioc 容器来控制对象的创建 , 容器来帮忙创建及注入依赖的对象 传统设计如图 ioc 的重点是在系统运行中 动态的向某个对象提供他所需要的其他对象 这一点事通过依赖注入来 阅读全文
摘要:
socket编程 Dial函数 net.Dial() func Dial(network,addresss string) (Conn, error){ var d Dialer return d.Dial(network,address) } //tcp连接 conn,err := net.Dia 阅读全文
摘要:
协程间通信 2中方式 共享内存 和 消息传递 package main import ( "fmt" "runtime" "sync" ) var counter int = 0 func add(a,b int, lock *sync.Mutex) { c : = a + b lock.Lock( 阅读全文
摘要:
go错误处理为 error接口 type error interface { Error() string } 常用用法 将错误作为第二个参数返回 例子 func Foo(params int) (n int , err error){ // } n,err := Foo(100) if err ! 阅读全文