go语言-面向并发的内存模型

Go语言是基于消息并发模型的集大成者,它将基于CSP(Communicating Sequential Processes)模型的并发变成内置到了语言中,通过一个go关键字就可以轻易地启动一个Goroutine,且Go语言的Goroutine之间是共享内存的。 1.Goroutine和系统线程 Goroutine是Go语言特有的并发体,是一种轻量级的线程,由go关键字启动。在真是的Go语言实现中,Goroutine和系统线程也不是等价的。尽管两者的区别实际上只是一个量的区别,但正是这个两边引发了...阅读全文

51CTO博客 2020-03-15 10:11:27 guoguocto

【Go语言踩坑系列(二)】字符串

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 要点 本文关注Go语言字符串相关的语言特性、以及相关的[]byte、[]rune数据类型。 从字符编码说起 ASCII 计算机是为人类服务的,我们自然有表示我们人类所有语言与符号的需求。由于计算机底层实现全部为二进制,为了用计算机表示并存储人类文明所有的符号,我们需要构造一个“符号” => “唯一编码”的映射表,且这个编码能够用二进制来表示。这样就实现了用计算机来表示人类的文字与符号。最早...阅读全文

Segmentfault 2020-03-19 16:32:35 NoSay

Golang下的ORM框架gorm的介绍和使用

前言:gorm是Golang语言中一款性能极好的ORM库,对开发人员相对是比较友好的。当然还有另外一个xorm库也是比较出名的,感兴趣的也可以看看这个库,接下来主要介绍下gorm库的一些基本使用。 GORM介绍和快速入门 功能概览 全功能ORM(无限接近)关联(Has One, Has Many, Belongs To, Many To Many, 多态)钩子函数Hook(在创建/保存/更新/删除/查找之前或之后)预加载事务复合主键SQL 生成器数据库自动迁移自定义日志可扩展性, 可基于 GOR...阅读全文

掘金 2020年03月14日 BGBiao

1. 一文搞定Go语言开发环境的搭建

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 1. 下载安装 Go语言 下载地址:golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,我习惯将软件安装在我的 E 盘下的 Program Files 目录下 后面就是一路点击 Next 即可,直到出现如下界面,安装完成。 2. 配置 Goland 环境 学习编程语言,使用一个称心的 I...阅读全文

掘金 2020年03月14日 王一白

go编程学习

1.go 项目目录结构2.go build生成二进制文件go build hello.gogo build -o hellotest hello.go #可以指定二进制文件名3.go run 以脚本形式运行go run hello.go 4.定义变量方法package mainimport "fmt"//全局声明var n1 = 100var n2 = 200var name = "xiaohuihui" //一次性声明var (n3 = 300n4 = 900name2 = "mary")fu...阅读全文

51CTO博客 2020-03-14 11:37:36 小白的希望

go语法

基本类型 bool 优先级:&& > || * > + 布尔型不可强制转为整型,也不可以转为其他类型 string int int8 int16 int32 int64 Int8(-128 - 127). uint8(0 - 255) 通常 int 类型的处理速度也是最快的 0x%x十六进制,%d十进制, uint8 16 32 64 uintptr uintptr无符号整数类型,没有指定具体的 bit 大小但是足以容纳指针,uintptr 类型只有在底层编程时才需要,特别是Go语言和C语言函数...阅读全文

简书 2020-03-15 09:32:45 拉粑粑拉不出来

Golang二分查找

注意: 二分查找只适用于有序序列 package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { arr := []int{3, 4, 7, 9, 13, 45, 67, 89, 100, 180} // 排序前的数值 fmt.Println("数组中的数据: ") fmt.Println(arr) fmt.Print("输入查找的值: ") reader := bufio.NewReader(os.Std...阅读全文

简书 2020-03-15 09:32:44 时光少年春

ORM框架gorm的介绍和使用

前言:gorm是Golang语言中一款性能极好的ORM库,对开发人员相对是比较友好的。当然还有另外一个xorm库也是比较出名的,感兴趣的也可以看看这个库,接下来主要介绍下gorm库的一些基本使用。 GORM介绍和快速入门 功能概览 全功能ORM(无限接近) 关联(Has One, Has Many, Belongs To, Many To Many, 多态) 钩子函数Hook(在创建/保存/更新/删除/查找之前或之后) 预加载 事务 复合主键 SQL 生成器 数据库自动迁移 自定义日志 可扩展性...阅读全文

简书 2020-03-15 09:32:44 BGbiao

Golang处理JSON(二) 反序列化

在Go语言中,encoding/json标准包处理json数据的序列化与反序列化问题。如果想了解序列化可以看这一篇Golang处理JSON(一) 序列化。与编码json的Marshal类似,解析json也提供了Unmarshal方法。对于解析json,也大致分两步,首先定义结构,然后调用Unmarshal方法序列化。 反序列化 Unmarshal() 反序列化源码放在: Unmarshal // Unmarshal parses the JSON-encoded data and stores ...阅读全文

简书 2020-03-15 09:32:43 程序猿编码

关于fasthttp + K8S service负载均衡的一些心得

最近在做一个项目,项目中用golang 写了一个网关gateway,gateway接受来自外部的请求,并转发到后端的容器中。gateway和应用的容器都部署在同一个K8S集群当中。流程如下图 gateway到pod的请求,是通过K8S的dns机制来访问service,使用的是service的endpoint的负载均衡机制。当gateway得到一个请求之后,通过解析对应的参数,然后可以判断需要转发到哪个host,例如:请求转发到service.namespace.svc.cluster.local...阅读全文

博客园 2019-11-08 10:26 xavier-yang

一次golang fasthttp踩坑经验

一个简单的系统,结构如下: 我们的服务A接受外部的http请求,然后通过golang的fasthttp将请求转发给服务B,流程非常简单。线上运行一段时间之后,发现服务B完全不再接收任何请求,查看服务A的日志,发现大量的如下错误 从错误原因看是因为连接被占满导致的。进入服务A的容器中(服务A和服务B都是通过docker启动的),通过netstat -anlp查看,发现有大量的tpc连接,处于ESTABLISH。我们采用的是长连接的方式,此时心里非常疑惑:1. fasthttp是能够复用连接的,为什...阅读全文

博客园 2019-11-03 19:10 xavier-yang

Go语言入门(三)数组和切片

数组和切片 数组 定义:同一类型的元素集合 var a[3]int //定义一个数组,数组的下标是从0开始,长度为n的数组下标的有效范围是0到n-1 func arraySet() { var a[6] int a[0] = 1 a[1] = 2 fmt.Printf("array is %v\n",a) var b[3]int = [3]int{1,2,3} fmt.Println(b) c := [...]int{1,3,4} fmt.Println(c) d := [3]int{10} f...阅读全文

51CTO博客 2020-03-14 19:22:08 wx5b285b48ed74e

一文搞定Go语言开发环境的搭建

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 1. 下载安装 Go语言 下载地址:https://golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,我习惯将软件安装在我的 E 盘下的 Program Files 目录下 后面就是一路点击 Next 即可,直到出现如下界面,安装完成。 2. 配置 Goland 环境 学习编程语言,使...阅读全文

51CTO博客 2020-03-14 21:54:42 PythonTime

基于Gin + Vue + Element UI的前后端分离权限管理系统

go-admin 基于Gin + Vue + Element UI的前后端分离权限管理系统 项目地址 ✨ 特性 遵循 RESTful API 设计规范 基于 GIN WEB API 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、追踪ID等) 基于Casbin的 RBAC 访问控制模型 JWT 认证 支持 Swagger 文档(基于swaggo) 基于 GORM 的数据库存储,可扩展多种类型数据库 配置文件简单的模型映射,快速能够得到想要的配置 TODO: 单元测试 ???? 内置 用户...阅读全文

掘金 2020年03月13日 Nikko

Go 每日一库之 copier

简介 上一篇文章介绍了mergo库的使用,mergo是用来给结构体或map赋值的。mergo有一个明显的不足——它只能处理相同类型的结构!如果类型不同,即使字段名和类型完全相同,mergo也无能为力。今天我们要介绍的copier库就能处理不同类型之间的赋值。除此之外,copier还能: 调用同名方法为字段赋值; 以源对象字段为参数调用目标对象的方法,从而为目标对象赋值(当然也可以做其它的任何事情); 将切片赋值给切片(可以是不同类型哦); 将结构体追加到切片中。 感谢@thinkgos推荐。 顺...阅读全文

掘金 2020年03月13日 darjun

Go 每日一库之 jennifer

简介 今天我们介绍一个 Go 代码生成库jennifer。jennifer支持所有的 Go 语法和特性,可以用它来生成任何 Go 语言代码。 感谢kiyonlin的推荐! 快速使用 先安装: $ go get github.com/dave/jennifer 今天我们换个思路来介绍jennifer这个库。既然,它是用来生成 Go 语言代码的。我们就先写出想要生成的程序,然后看看如何使用jennifer来生成。先从第一个程序Hello World开始: package main import "f...阅读全文

Segmentfault 2020-03-19 09:32:34 darjun

Micro In Action(三):调用服务

![](https://s1.ax1x.com/2020/03/14/8l7qSA.png) > 本文作者:Che Dan > > 原文链接:<https://medium.com/@dche423/micro-in-action-call-service-cn-5ac679194636> 本文是[Micro](https://micro.mu/)系列文章的第三篇。我们将以实际开发微服务为主线,顺带解析相关功能。从最基本的话题开始,逐步转到高级特性。 今天将讨论如何调用服务...阅读全文

Go语言中文网 2020-03-14 23:01:22 polaris

leetcode_1338

Golang: 思路:贪心,首先,我们需要知道每个数字在数组中出现的数目,然后将这些数目做个排序,每次都删去出现最多次数的数目,直到这些删除的数目之和超过了数组长度的一半。 代码如下: func minSetSize(arr []int) int { mp:=make(map[int]int) for _,v:=range arr{ mp[v]++ } var val []int for _,v:=range mp{ val=append(val,v) } sort.Ints(val) temp...阅读全文

简书 2020-03-14 21:32:47 淳属虚构

Go并发编程

常见并发模型 进程 & 线程(Apache)C10K 异步非阻塞(Nginx,Libevent,NodeJS) 复杂度高 协程 (Golang,Erlang,Lua) 并发与并行 并发:指同一时刻,系统通过调度,来回切换交替的运行多个任务,"看起来"是同时进行 并行:指同一时刻,两个任务"真正的"同时进行 图一.png Golang并发实现 程序并发执行(goroutine) 多个goroutine间的数据同步和通信(channels) 多个channel选择数据读取或写入(select) Go...阅读全文

简书 2020-03-14 21:32:46 zww007