golang源码学习之sync.pool

源码目录 ///sync.pool.go (1.1.4.1) 前言 sync.pool对象池是个好东西,避免对象的反复创建和回收。对于一些需要频繁创建的对象我们可以使用它来避免内存的频繁申请、回收。但应避免用于连接池,因为sync.pool存储的对象仅存活在三次STW之间。 数据结构 //sync.pool.go type Pool struct { noCopy noCopy // 不可复制标准 local unsafe.Pointer // 指向poolLocal数组 localSize u...阅读全文

简书 2020-04-06 21:32:56 ihornet

Gin框架系列01:极速上手

Gin是什么? Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。 准备工作 本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。 https://github.com/pingyeaa/golang-examples/tree/master/gin 没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin。 mkdir gin && cd gin 然后用go mod命令初始化项目,go mod...阅读全文

简书 2020-04-06 21:32:55 平也

【go】指针的风骚操作(结合unsafe.point与uintptr)

指针是具有类型的 总所周知,声明的变量都是有具体类型的,而对于存储指针的变量是否有类型,有时是一头雾水,在此做一个小总结,指针是具有类型的。 就如: var c int fmt.Println(reflect.TypeOf(c)) d := &c fmt.Println(reflect.TypeOf(d)) 结果: int *int 那可能一些人就会有疑问,指针既然具有类型,那指针之间可以进行类型转换吗。就如下面一样操作 #(*Type)ptr a := (*int)(&xx) 在Go 的指针是...阅读全文

简书 2020-04-06 21:32:54 dongzaidong

2020-04-06

image.png 毕业后,一直后悔的一件事情就是以前为啥不多拍一些照片,没有多写一些日记。现在回顾那些年,越来越模糊,记忆终究是会淡忘。偶尔看到别人翻一翻高中,大学的相册,还是挺羡慕的。 回顾工作这些年,历经了几家公司,地域从深圳到成都,工作技能虽然稍有长进,但在个人对外建设方面没有什么沉淀,有点恍惚的感觉(旁白:是不是有种锦衣夜行的赶脚?哈哈,那倒没有,是想开放兼容,迭代前进,收获朋友,收获认同)。 之后慢慢的把脑子里的稍许心得沉淀下来,之前也零星的记录了一些笔记,这些脱敏整理后分享出来,慢...阅读全文

简书 2020-04-06 21:32:53 奇伢云存储

supervisor 的使用和进阶 (fastcgi 的管理)

请关注公众号: 搬砖程序员带你飞,学习更多内容。 本文主要介绍 supervisor 对 fastcgi 进程的管理 fastcgi 进程的管理 在php 中,php-fpm 有主进程来管理和维护子进程的数量。但是并不是所有的服务都有类似的主进程来做子进程的维护。在很多其他语言中,有很多比较有名的fastcgi 服务,例如py 的flup, c++ 实现的 FastCgi++等。如果这些服务在单机中启动多个进程(极有可能),那如何管理这些进程是个比较头疼的问题。 supervisor 的fast...阅读全文

Segmentfault 2020-04-07 15:32:38 _____

Gin框架系列01:极速上手

Gin是什么? Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。 准备工作 本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。 https://github.com/pingyeaa/golang-examples/tree/master/gin 没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin。 mkdir gin && cd gin 然后用go mod命令初始化项目,go mod...阅读全文

Segmentfault 2020-04-07 15:32:38 平也

图解kubernetes控制器HPA横向伸缩的关键实现

HPA是k8s中横向伸缩的实现,里面有很多可以借鉴的思想,比如延迟队列、时间序列窗口、变更事件机制、稳定性考量等关键机制, 让我们一起来学习下大佬们的关键实现 1. 基础概念 HorizontalPodAutoscaler(后面简称HPA)作为通用横向扩容的实现,有很多关键的机制,这里我们先来看下这些关键的的机制的目标 1.1 横向扩容实现机制 HPA控制器实现机制主要是通过informer获取当前的HPA对象,然后通过metrics服务获取对应Pod集合的监控数据, 接着根据当前目标对象的sc...阅读全文

Segmentfault 2020-04-07 15:32:37 仔仔

【Go语言踩坑系列(八)】Goroutine(下)

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 引入 还记得我们在上一篇文章中提到的例子吗: func main() { for i := 0; i < 10; i++ { go func() { fmt.Println(i) }() } } 现在我们分析一下这段代码,循环十次,每次使用go语句创建一个协程,并在每个协程中打印i值,注意这个i值是这条打印语句真正得到执行的时候,从外部for语句代码块中取的的当前的i值。那么为什么在上一篇...阅读全文

Segmentfault 2020-04-07 15:32:36 NoSay

go web 框架-day1

用go 来实现一个极简的web框架,框架虽然简单,但是里面也包括了核心内容,对需要学习web框架的人开说是一个不错的学习路径。简单的web框架主要包括端口监听,获取请求和路由响应。go里面本身带有http库来实现这些功能。第一天的代码主要分为两部分,1是main函数入口,2是框架部分。我们先看看main函数 func main() { r := gee.New() r.Get("/",func(w http.ResponseWriter,r* http.Request){ fmt.Fprintf...阅读全文

简书 2020-04-06 11:32:44 对方正在输入_7c4d

leetcode_72

Golang: 思路:编辑问题算是DP中很经典的问题了 代码如下: func minDistance(word1 string, word2 string) int { if len(word1)==0||len(word2)==0{ return max(len(word1),len(word2)) } arr:=make([][]int,len(word1)+1) for k,_:=range arr{ arr[k]=make([]int,len(word2)+1) } for i:=0;i...阅读全文

简书 2020-04-06 11:32:44 淳属虚构

Go语言库系列之email

导读 大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。 极速上手 准备工作 初始化项目 go get github.com/jordan-wright/email 本示例项目结构 . ├── go.mod ├── go.sum └── main.go 开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。 file file 代码示例 首先配置好邮件内容 e :...阅读全文

简书 2020-04-06 11:32:43 平也

Go语言库系列之email

导读 大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。 极速上手 准备工作 初始化项目 go get github.com/jordan-wright/email 本示例项目结构 . ├── go.mod ├── go.sum └── main.go 开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。 代码示例 首先配置好邮件内容 e := email.Ne...阅读全文

Segmentfault 2020-04-07 15:32:35 平也

10.map

Go语言基础之map | Golang Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map的定义语法如下: map[KeyType]ValueType 其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为: make(map...阅读全文

简书 2020-04-06 10:32:42 雪上霜

go go mod 依赖管理

1 go mod Go.mod是Golang1.11版本新引入的官方包管理工具,用于解决记录依赖包具体版本的问题,方便依赖管理,类似于(composer.json 和composer.lock文件) 使用go mod //linux vim /etc/profile export GO111MODULE=on source /etc/profile //windows 建议用cmd管理员身份修改,即时生效 set GO111MODULE=on GO111MODULE有三个值:off, on和au...阅读全文

简书 2020-04-06 10:32:42 十号火星人

Golang中interface内部构造与面试真题分析

原创声明作者:刘丹冰Aceld, 微信公众号同名 (1) interface的赋值问题 以下代码能编译过去吗?为什么? package main import ( "fmt" ) type People interface { Speak(string) string } type Stduent struct{} func (stu *Stduent) Speak(think string) (talk string) { if think == "love" { talk = "You ar...阅读全文

Segmentfault 2020-04-07 15:32:34 aceld

golang validator参数校验 中文

今天在改后台页面,参数校验错误时输出全是英文,使用着很难看懂到底时什么错了 故而决定去做i18n前端国际化. 改的时候踩了很多坑,故而记录一下,顺便记录以下查问题的方式。 效果 从原来的Title is required变为标题为必填字段 完成后的代码: 这里主要定义了初始化了一个中文的trans和Validate的变量,并对其做初始化 初始化主要做了以下事情: 注册了TagName函数 // RegisterTagNameFunc registers a function to get alt...阅读全文

简书 2020-04-06 04:32:42 darcyaf