Golang
枫叶千言
这个作者很懒,什么都没留下…
展开
-
Go实战--golang中使用redis(redigo和go-redis/redis)
何为redis官网: https://redis.io/Redis is an in-memory database open-source software project implementing a networked, in-memory key-value store with optional durability. Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存...转载 2018-04-11 14:47:26 · 2737 阅读 · 0 评论 -
go语言的模板,text/template包
定义模板就是将一组文本嵌入另一组文本里传入string–最简单的替换package main import ( "os" "text/template") func main() { name := "waynehu" tmpl, err := template.New("test").Parse("hello, {{.}}") //建立一个...转载 2018-09-09 22:43:42 · 698 阅读 · 0 评论 -
Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动 Go
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:https://github.com/go-sql-driver/m...转载 2018-09-09 22:47:15 · 2244 阅读 · 0 评论 -
对于golang的goroutine并发处理任务时的理解
原文:http://rfyiamcool.blog.51cto.com/1030776/1381686以前用golang做并发处理的时候,很是粗暴,就是利用golang的高级性能,直接fork一个任务,来处理请求,最典型的就是直接 go func,当时是因为用http和socket没觉得什么,今天再次看golang的goroutine的时候,发现这几天写的程序有些问题。比如用goroutine...转载 2018-09-09 22:49:58 · 159 阅读 · 0 评论 -
golang 理解goroutine 和线程
进程、线程和协程要理解什么是goroutine,我们先来看看进程、线程以及协程它们之间的区别,这能帮助我们更好的理解goroutine。进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。 线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准线程是的)。 协...转载 2018-09-09 22:51:41 · 6299 阅读 · 0 评论 -
Go语言中普通函数与方法的区别
1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。以下为简单示例:package structTest //普通函数与方法的区别(在接收者分别为值类型和指针类型的时候) //Date:2014-4-3 10:00:07 impo...转载 2018-09-09 22:52:42 · 851 阅读 · 0 评论 -
golang -- 时间日期总结
golang时间处理相关包 "time"1.时间戳 当前时间戳fmt.Println(time.Now().Unix())# 13890583322.str格式化时间当前格式化时间fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3...转载 2018-09-09 22:55:20 · 4091 阅读 · 0 评论 -
golang 实现Twitter snowFlake算法 高效生成全局唯一ID
最近在着手准备一个H5游戏 因为这是我第一次接触游戏这个类目 即使量不大也想好好的做它一番 在设计表结构的时候想到了表全局唯一id这个问题 既然是游戏 那么一定是多人在线点点点(运营理想状态 哈哈哈) 一开始想使用mongoDB的objectId来作为全局唯一id 但是字符串作为索引的效率肯定不如整型来得实在两者的主要差别就在于,字符类型有字符集的概念,每次从存储端到展现端之间都...转载 2018-09-12 10:48:53 · 1387 阅读 · 0 评论 -
go语言实现快速排序
快速排序作为分治法的经典算法,原理自不必多说,我只是用go语言直接实现了,当然可以不用中间切片,但是这种写法最能体现快速排序的分治思想。 package main import "fmt" // 快速排序(直接)实现 func quickSort(s []int) []int { if len(s) &...转载 2018-09-12 11:15:58 · 974 阅读 · 0 评论 -
Goroutine陷阱
Go在语言层面通过Goroutine与channel来支持并发编程,使并发编程看似变得异常简单,但通过最近一段时间的编码,越来越觉得简单的东西,很容易会被滥用。Java的标准库也让多线程编程变得简单,但想当初在公司定位Java的问题,发现很多的同学由于没有深入了解Java Thread的机制,Thread直接New从不管理复用,那Goroutine肯定也要面临这类的问题。1 Goroutine...转载 2018-09-10 09:43:25 · 235 阅读 · 0 评论 -
Golang HTTP 消息中间件 简单实现
1. 需求消息中间件可以将业务功能代码和非业务功能代码的解耦 支持能够动态地增删中间件2. HTTP路由相关函数定义http.HandleFunc(pattern string, handler func(ResponseWriter, *Request)) http.Handle(pattern string, handler Handler) http.Handle 第二个参数...原创 2019-07-14 19:45:58 · 1115 阅读 · 0 评论 -
学习go语言碰到的问题:main redeclared in this block
E:\goapp是我的GOPATH目录分别建立了2个文件:hello.go// hellopackage main import "fmt" func main() { fmt.Println("Hello World! 你好,世界!")}sandbox.go// sandboxpackage main import ( "fmt" "time"...转载 2018-09-09 22:31:39 · 10673 阅读 · 1 评论 -
匿名函数
1.声明一个匿名函数 func(参数列表) 返回值列表 { 函数体... }2.匿名函数的调用package main import ( "fmt" ) func main() { //无参数直接加括号 func() int { var i int =5 fmt.Printf("func 1\n") ...原创 2018-05-09 09:18:10 · 139 阅读 · 0 评论 -
字符串
1.字符串表示在Go语言中不倾向于使用单引号来表示字符串,请根据需要使用双引号或反引号。Go语言中的字符串字面量使用 双引号 或 反引号 来创建:双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行); fmt.Println("How are you?") fmt.Println("Fine, thank you.And you?") fmt...原创 2018-05-09 09:21:34 · 154 阅读 · 0 评论 -
slice切片
1.概念“动态数组”slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。// 和声明array一样,只是少了长度var fslice []int//接下来我们可以声明一个slice,并初始化数据slice := []byte {'a', 'b', 'c', 'd'}2.声明普通声明// 和...原创 2018-05-09 09:33:20 · 426 阅读 · 0 评论 -
map
1.map创建map也就是Python中字典的概念,它的格式为map[keyType]valueTypemap的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是`int`类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型。创建前必须进行变量声明//声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使...原创 2018-05-11 13:15:04 · 158 阅读 · 0 评论 -
【golang 源码分析】内存分配与管理
转载:https://blog.csdn.net/zhonglinzhang/article/details/746264121. Memory AllocatorGo 内存分配器基于 tcmalloc 模型,这在 malloc.go 头部注释中有明确说明。based on tcmalloc http://goog-perftools.sourceforge.net/doc/tcmall...转载 2018-09-03 17:07:26 · 818 阅读 · 0 评论 -
gRPC 优秀博客
优秀博客地址:https://blog.csdn.net/xuduorui/article/details/78278808原创 2018-09-03 22:41:47 · 191 阅读 · 0 评论 -
beego框架的环境搭建
beego框架的环境搭建搭建此环境,必须有Go语言环境。若没有,请先搭建go语言环境。go语言的环境搭建1.下载beego包并安装若你已经安装了Git的,直接执行下面命令。打开cmd,输入下面命令。[plain] view plain copygo get github.com/astaxie/beego 当然,你没安装git也没关系,就是会麻烦点,得先去https://git...转载 2018-09-09 22:28:09 · 523 阅读 · 0 评论 -
go在windows上环境搭建
1、首先下载对应系统位数版本http://www.golangtc.com/download 我的电脑是64位windows系统,所以下载go1.6rc2.windows-amd64.zip2、解压到D:\Go3、设置环境变量新建GOARCH=amd64 新建GOBIN=D:\go\bin (你Go安装目录) 新建GOOS=windows 新建GOROOT=D:\go...转载 2018-09-09 22:29:40 · 260 阅读 · 0 评论 -
Golang百万级高并发实践
转自:https://blog.csdn.net/Jeanphorn/article/details/79018205写在前面Go语言作为新兴的语言,最近发展势头很是迅猛,其最大的特点就是原生支持并发。它使用的是“协程(goroutine)模型”,和传统基于 OS 线程和进程实现不同,Go语言的并发是基于用户态的并发,这种并发方式就变得非常轻量,能够轻松运行几万并发逻辑。Go 的并发...转载 2019-06-30 22:50:11 · 3696 阅读 · 0 评论