随笔分类 - go
学习了解quic go
摘要:目前写了这样一份代码 func Handler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain") w.WriteHeader(http.StatusOK) fmt.Fprint
阅读全文
摘要:HttpHeader之User-Agent UA 串的发展史 1990 年,Tim Berners-Lee 编写了第一个浏览器 WorldWideWeb,后来改名为 Nexus。但是,Nexus 只支持文字展示。 1993 年,美国 NCSA 组织开发了 Mosaic 浏览器,能支持图片的展示使其成
阅读全文
摘要:转载: When writing an HTTP server or client in Go, timeouts are amongst the easiest and most subtle things to get wrong: there’s many to choose from, an
阅读全文
摘要:日志报错: can't connect to remote host (123.125.14.188): Address not avaibal 根据日志查看对应代码 tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVe
阅读全文
该文被密码保护。
摘要:WithChain Job 包装器可以在执行实际的Job前后添加一些逻辑: 捕获panic; 如果Job上次运行还未结束,推迟本次执行; 如果Job上次运行还未介绍,跳过本次执行; 记录每个Job的执行情况。 可以将Chain类比为 Web 处理器的中间件。实际上就是在Job的执行逻辑外在封装一层逻
阅读全文
摘要:使用nginx reload的时候,nginx会close 掉listen fd,然后启动新的worker,老的worker继续工作直到当前的fd完全关闭后worker退出。 目前使用gin框架的时候也需要频繁的在http:9000 监听和htttps:9000之间切换。所以也涉及到上述逻辑 看下g
阅读全文
摘要:之前写到net/http 客户端发送http请求时, 会开启 HTTP 事务发送 HTTP 请求并等待远程的响应,经过下面一连串的调用,我们最终来到了标准库实现底层 HTTP 协议的结构体 — net/http.Transport: net/http.Client.Do net/http.Clien
阅读全文
摘要:Timer的创建 Timer是一次性的时间触发事件,这点与Ticker不同,后者则是按一定时间间隔持续触发时间事件。Timer常见的使用场景如下: 场景1: t := time.AfterFunc(d, f) 场景2: select { case m := <-c: handle(m) case <
阅读全文
摘要:通道并非用来取代锁,各有不同使用场景。通道解决高级别逻辑层次并发架构,锁则用来保护低级别局部代码安全。●竟态条件:多线程同时读写共享资源(竟态资源)。●临界区:读写竟态资源的代码片段。●互斥锁:同一时刻,只有一个线程能进入临界区。●读写锁:写独占(其他读写均被阻塞),读共享。●信号量:允许指定数量线
阅读全文
摘要:对于closed或nil通道,规则如下: 无论收发,nil通道都会阻塞。 不能关闭nil通道。 重复关闭通道,引发panic ! 向已关闭通道发送数据,引发 panic! 从已关闭通道接收数据,返回缓冲数据或零值。 nil通道是指没有make的变量。鉴于通道关闭后,所有基于此的阻塞都被解除,可用作通
阅读全文
摘要:转自:https://studygolang.com/articles/5515 1. 前言 http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 2. 本文分析内容安排 函数 结构 3. 函数 3.1 服务端函数 fun
阅读全文
摘要:bytes strings的基本操作与bytes的基本操作基本类似 #基本操作 #比较 和比较相关的方法有: func Equal(a, b []byte) bool func EqualFold(s, t []byte) bool func Compare(a, b []byte) int 其中E
阅读全文
摘要:之前也有博客记录之 goio包 bufio bufio.Reader类型的值(以下简称Reader值)内的缓冲区,其实就是一个数据存储中介,它介于底层读取器与读取方法及其调用方之间。所谓的底层读取器,就是在初始化此类值的时候传入的io.Reader类型的参数值。 Reader值的读取方法一般都会先从
阅读全文
摘要:不要通过共享内存来通信,而应该通过通信来共享内存 这个是golang社区的经典语 说的是什么意思呢? 之前使用C代码进行性能优化的时候,遇到了很多高性能的架构,但是其只依赖于高性能的MPSC队列(queue普遍使用的原子锁,offset,count都使用CAS操作),而从来不在事务逻辑里用锁 那应该
阅读全文
摘要:net/http 中同时包好了 HTTP 客户端和服务端的实现,为了支持更好的扩展性,它引入了 net/http.RoundTripper 和 net/http.Handler 两个接口。net/http.RoundTripper 是用来表示执行 HTTP 请求的接口,调用方将请求作为参数可以获取请
阅读全文
摘要:目前知道gin是基于net/http进一步封装,来看下net/http是怎样写web的 package main import ( "fmt" "net/http" ) func index(w http.ResponseWriter, r *http.Request) { fmt.Fprintln
阅读全文
摘要:package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.String(200, "Hello!
阅读全文
摘要:切换了一下go env -w GOPROXY="https://goproxy.cn,direct" proxy go mod tidy 就好了 可能是aliyun代理上缺少什么东西把 !!!!!!!!!!!!
阅读全文
摘要:客户端: 接收配置的conn 也就是客户端监听8888端口收集config_client配置,重新封装送到隧道里面去 服务端: 将客户端8888 配置转发到server端8877 解封装。然后对比每个配置文件版本号。 如果版本不一样。server 重新封装配置。下发到客户端的8888.,客户端888
阅读全文

浙公网安备 33010602011771号