Go语言中文网 为您找到相关结果 970

???? 装饰模式-Decorator

???? 装饰模式-Decorator https://github.com/mumushuiding/golang-design-pattern/tree/master/03_Decorator❓ 问题???? 装饰模式应该可以在运行时 动态 地给一个已有的对象 添加 功能 (类似装饰圣诞树)✔️ 解决方法????通过装饰类 聚集 需要装饰和扩展的对象.????同时提供给顾客或客户与 装饰 相同的接口.⚡️类图 ????参与者装饰模式的参与者:???? IAuto (组件接口).IAuto 基类,基类的对象希望扩展自己的功能,但是自身不做任何修改.???? Decorator (装饰类). 装饰 类是基类IAuto的派生类, 类 Decorator 聚集 了类 IAuto 接口,通过这个对...阅读全文

博文 2019-08-26 15:33:15 mumushuiding

Go 语言入门资料

Go 语言,自2012年发布 1.0,至今 1.7 ,历经5年。Go 的相关工具和生态已经逐渐完善,这里综述一下 Go 语言学习开发可以找到的入门资料。 入门教程 官方文档 第一步,学习基本语法和命令操作。Go 的官方文档是第一选择。但因为众所周知的原因,官网无法访问。可以访问 godoc.golangtc.com 镜像网站查看。或者下载安装好 Go 语言后执行 godoc 命令: godoc -http=:6060 访问 http://localhost:6060 浏览内置的官网镜像站点。另外,godoc 会自动分析 GOPATH 中的源码生成文档,可以在网站访问 /pkg 直接查看。 视频教程 推荐 无闻 的 《Go 编程基础》。无闻的视频教程简单直接的介绍 Go 的基本语法的命令操作,...阅读全文

博文 2017-02-10 16:25:02 傅小黑

golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err error) { if err == nil { return } if uerr, ok := err.(*url.Error); ok { if noerr, ok := uerr.Err.(*net.OpError); ok { if scerr, ok := noerr.Err.(*os.SyscallError); ok { if scerr.Err == syscall.ECONNREFUSED { fmt.Printf("gurl...阅读全文

博文 2019-10-14 13:02:38 aside section ._1OhGeD

Go圣经-学习笔记入门

Hello,world Go语言不需要在语句或者声明的末尾加上分号,除非上一上有多条语句。实际上,编译器会主动把特定符号后的换行符转换为分号,因此换行符添加的位置会影响Go代码的正确解析。 下面这个例子,行尾的,使得编译器不会添加分号,则这个fmt.Printf是一个完整的行,这样写也比较美观。你不能把,放在下一行。 fmt.Prinf("hello, %s。Welcome to %s", name, country) 如果你想要一个Linux VIM编辑器下集成一个IDE,你需要安装一个vim-go的插件。如果安装ok,则会像我的环境一样,截图如下: 声明一个变量有几种方式: temp:="" var temp string = "" var temp = "" var temp stri...阅读全文

博文 2017-10-22 00:30:37 cdh0805010

golang 读取SQL时间与数据库差1秒,求解?????

请教一个问题,SQLSERVER中时间和GOLANG查的时间差1秒,如何处理。。。 ![TIM图片20180506121557.png](https://static.studygolang.com/180506/b29f1a7c42a314151bac1ee60888b3c2.png) ![TIM图片20180506121604.png](https://static.studygolang.com/180506/94004957331736431b7121ee676cc33b.png) 语句如下 srcData, _ := app.PLADB.DB.Query("SELECT top 1 StartTime FROM HN_NCMS.dbo.History WHERE ID...阅读全文

Golang 源码剖析:log 标准库

Golang 源码剖析:log 标准库 原文地址:Golang 源码剖析:log 标准库 日志 输出 2018/09/28 20:03:08 EDDYCJY Blog... 构成 [日期]<空格>[时分秒]<空格>[内容] 源码剖析 Logger type Logger struct { mu sync.Mutex prefix string flag int out io.Writer buf []byte } (1) mu:互斥锁,用于确保原子的写入(2) prefix:每行需写入的日志前缀内容(3) flag:设置日志辅助信息(时间、文件名、行号)的写入。可选如下标识位: const ( Ldate = 1 << iota // value: 1 Ltime // value: ...阅读全文

博文 2018-09-28 22:34:38 煎鱼

Excelize - Go 语言 (golang) Excel 文档基础库

前言 Excelize 是 Go 语言 (golang) 编写的用于操作 Office Excel 电子表格的文档基础库,基于 ECMA-376 Office Open XML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX / XLSM / XLTM 等格式文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统、云计算和边缘计算系统中。入选 2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。 开源代码 GitHub:...阅读全文

博文 2020-04-09 05:33:11 阿泽Aze

以Go的map是否并发安全为例,介绍最权威的Go语言资料的使用方法

公众号原文地址:https://mp.weixin.qq.com/s/KmT-Mu4YQDeaQY_95waj-Q 本篇目录 本篇目录 说明 正确使用正确的资料 最权威的 Go 语言资料是? Go 语言的 map 是否是并发安全的? 扩大搜索范围 找到答案不等于结束 为什么要执着于一手资料? 参考 说明 相比于细节,更在意知识框架的构建和完善,因此有时候对一些技术细节不是很清楚,只是知道如何找答案。最近要认真编码,需要仔细考虑、敲定细节,趁此机会将 Go 语言的知识整理一下。 正确使用正确的资料 找到正确的资料、能够正确的使用、正确的理解,是最关键的一步。除非是初学者,否则不要使用二手、三手和倒了无数手的资料,长期来看使用非一手资料,就是在浪费时间和引入错误。第一手的资料常常晦涩难懂,需要经...阅读全文

博文 2019-07-12 23:32:41 李佶澳

Go 标准库 http.FileServer 实现静态文件服务

http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。 http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path"))) 访问 http://127.0.0.1:8080,即可看到类似 Nginx 中 autoindex 目录浏览功能。 源码解析 我们现在开始将上述的那仅有的一行代码进行剖析,看看到底是如何实现的。源码中英文注释也比较详细,可以参考。 我们先看 http.Dir(),再看 http.FileServer(),而 http.ListenAndServe() 监听 TCP 端...阅读全文

博文 2018-08-21 10:35:12 舆图易稿

Go 每日一库之 carbon

简介 一线开发人员每天都要使用日期和时间相关的功能,各种定时器,活动时间处理等。标准库time使用起来不太灵活,特别是日期时间的创建和运算。carbon库是一个时间扩展库,基于 PHP 的carbon库编写。提供易于使用的接口。本文就来介绍一下这个库。 快速使用 第三方库需要先安装: $ go get github.com/uniplaces/carbon 复制代码后使用: package main import ( "fmt" "time" "github.com/uniplaces/carbon" ) func main() { fmt.Printf("Right now is %s\n", carbon.Now().DateTimeString()) today, _ := carbo...阅读全文

博文 2020-02-16 10:34:15 darjun

go语言基本类型

这篇文章主要介绍了GO语言基本类型,较为详细的分析了整形、浮点型、字符串、指针等类型的具体用法,是深入学习GO语言所必须掌握的重要基础,需要的朋友可以参考下 本文实例分析了GO语言基本类型。分享给大家供大家参考。具体如下: 一、整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有11种整形。如下: (1)int :依赖不同平台下的实现,可以是int32或int64 (2)int8 : (-128->127) (3)int16: (-32768->32767) (4)int32: (-2 147 483 648->2 147 483 647) (5)int64 :(-9 223 372 036 854 775 808->9 223 372 036 854 7...阅读全文

博文 2016-09-08 08:01:18 qibanxuehua

深入理解 Go 语言中的 Testable Examples

隐藏的 `ast` 和 `parser` 包的介绍 2016 年 10 月 10 日 Golang 的工具链实现了名为 `Testable Examples` 的功能。如果对该功能没有什么印象的话,我强烈建议首先阅读[“ Testable Examples in Go ”](https://blog.golang.org/examples) 博文进行了解。通过这篇文章我们将了解到该功能的整个解决方案以及如何构建其简化版本。 让我们看看 `Testable Examples` 的工作原理: upper_test.go: ```go package main import ( "fmt" "strings" ) func ExampleToUpperOK() { fmt.Println(stri...阅读全文

博文 2019-03-10 18:11:34 lovechuck

go语言基本类型

这篇文章主要介绍了GO语言基本类型,较为详细的分析了整形、浮点型、字符串、指针等类型的具体用法,是深入学习GO语言所必须掌握的重要基础,需要的朋友可以参考下 本文实例分析了GO语言基本类型。分享给大家供大家参考。具体如下: 一、整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有11种整形。如下: (1)int :依赖不同平台下的实现,可以是int32或int64 (2)int8 : (-128->127) (3)int16: (-32768->32767) (4)int32: (-2 147 483 648->2 147 483 647) (5)int64 :(-9 223 372 036 854 775 808->9 223 372 036 854 7...阅读全文

博文 2016-09-08 06:01:00 qibanxuehua

理解Golang包导入

Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。 Golang中包的定义和使用看起来十分简单: 通过package关键字定义包: package xxx 使用import关键字,导入要使用的标准库包或第三方依赖包。 import "a/b/c" import "fmt" c.Func1() fmt.Println("Hello, World") 很多Golang初学者看到上面代码,都会想当然的将import后面的"c"、"fmt"当成包名,将其与c.Func1()和 fmt.Println()中的c和fmt认作为同一个语法元...阅读全文

博文 2018-04-07 22:33:05 易野

Go:关于 Cobra 的想法

!["Golang之旅"插图,来自 Go Gopher 的 Renee French 创作](https://raw.githubusercontent.com/studygolang/gctt-images2/master/go-thoughts-about-cobra/A%20Journey%20With%20Go.png) Cobra 是 Golang 生态系统中最着名的项目之一。它简单,高效,并得到 Go 社区的大力支持。让我们来深入探索一下。 ## 设计 Cobra 中的 `Command` 是一个具有名称,使用描述和运行逻辑函数的结构体: ```go cmd := &cobra.Command{ Run: runGreet, Use: `greet`, Short: "Greet...阅读全文

博文 2019-09-16 08:24:46 TomatoAres

Go 中 io 包的使用方法

前言 在 Go 中,输入和输出操作是使用原语实现的,这些原语将数据模拟成可读的或可写的字节流。为此,Go 的 io 包提供了 io.Reader 和 io.Writer 接口,分别用于数据的输入和输出,如图: Go 官方提供了一些 API,支持对内存结构,文件,网络连接等资源进行操作本文重点介绍如何实现标准库中 io.Reader 和 io.Writer 两个接口,来完成流式传输数据。 io.Reader io.Reader 表示一个读取器,它将数据从某个资源读取到传输缓冲区。在缓冲区中,数据可以被流式传输和使用。如图: 对于要用作读取器的类型,它必须实现 io.Reader 接口的唯一一个方法 Read(p []byte)。换句话说,只要实现了 Read(p []byte) ,那它就是一个...阅读全文

博文 2018-07-11 11:34:44 simon

Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)

作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 Go 开发关键技术指南文章目录: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 开发指南大图 Engineering 我觉得 Go 在工程上良好的支持,是 Go 能够在服务器领域有一席之地的重要原因。这里说的工程友好包括: gofmt 保证代码的基本一致,增加可读性,避免在争论不清楚的地方争论; 原生支持的 profiling,为性能调优和死锁问题提供了强大的工具支持; utest 和 coverage,持续集成,为项目的质量提供了良好的支撑; example 和注释,让接口定义更友好合理,让库的质量更高。 GOFMT 规范编码 之前有段时间,朋友圈霸屏的新闻是码农因为代码不规范问题枪...阅读全文

博文 2020-01-10 11:32:43 阿里巴巴云原生

谁说c语言和c+太难?没前途?谬论!

​因为有些对C++并不了解,所以就简要介绍一下。很多人对C++语言都存在误解,以为C++就是C语言的扩展,包括我自己,最开始学习C++时也是这么认为的,一是因为名字太像了,然后C++面向过程部分,基本上如出一辙,各种思想基本一致,也难怪初学者会这么想。然后后面多了面向对象部分以及一些其他高级的内容,所以就理所当然的认为是C语言的扩充,直到深入学习后,也看到了大师们的看法,结合自己的思考,才真的体会到这种误解了。​C语言的灵魂是指针,掌握指针,C语言你可以说是学会了。但是,C++中,指针只不过是其中很小的一部分,我们不能否认指针在C++的重要性,但是,指针已经不是C++的核心了,而只是基础的部件而已。从这来看,C++确实不是C语言的扩展了。C++是借鉴了C语言,从C语言发展而来,但是C++走的...阅读全文

博文 2019-01-17 16:49:08 gaohuan123

01.golang学习常用地址

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lynnyq/article/details/79375029 golang学习常用地址 1.golang常用地址: 1.golang官方项目地址:https://golang.org/ 2.golang官方博客:https://blog.golang.org/ 3.golang官方情报: http://talks.golang.org/ 4.在线运行golang程序:https://play.golang.org/ 5.golang在线运行的互动小程序:https://tour.golang.org 6.golang标准库:https://golang.org/pkg/ 2.学习地址: 1.T...阅读全文

博文 2019-03-20 21:31:35 lynnyq

GO 语言五步让你成为高手

这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得...阅读全文

博文 2016-09-03 05:00:02 yueguanyun

GO 语言五步让你成为高手

这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得...阅读全文

博文 2016-09-03 09:00:11 yueguanyun

【golang-GUI开发】struct tags系统(一)

我们已经介绍了qt的signal和slot,现在该讲讲它的struct tags系统了。qt拥有多种的struct tags,我们会去一一了解它们。 什么是struct tags? struct tag又叫做结构体标签,顾名思义,它就是用来给结构体字段做标记的。比如我们熟悉的JSON就使用了tags: type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } tags由反引号包裹,name在:之前,value在:之后由双引号包裹。 有了这些tags,我们的代码就可以很轻松的使用reflect来取得tags的name和na...阅读全文

博文 2018-07-30 21:30:00 apocelipes

ishell:创建交互式cli应用程序库

ishell是一个用于创建交互式cli应用程序的交互式shell库。 最近在研究supervisor的源码,参考supervisor的架构,做公司的项目。我后面会给出supervisor的开源学习的总结。github上有一个gopher写了一个golang版的supervisor,源码,原理和python版的都类似,但是 ctl是执行命令的方式,不是很优雅。 今天这篇文章介绍一个go的包,实现交互式的CLI工具的包。 常见的cli包有:flag、cli、os...都可以实现 但是上面有一个问题,就是执行完以后,就会给出结果,并退出,不是进入一个shell中,执行所有结果都是不同的。 交互式的cli如下: 今天要介绍的库是 ishell 类似上面的gif图中效果,很容易实现 代码示例 impo...阅读全文

博文 2019-01-30 04:34:45 若与

Go 1.13中的错误处理

介绍 在过去的十年中, Go的errors are values的理念在编码实践中运行得也很良好。尽管标准库对错误处理的的支持很少(只有errors.New和fmt.Errorf函数可以用来构造仅包含字符串消息的错误),但是内置的error接口使Go程序员可以添加所需的任何信息。它所需要的只是一个实现Error方法的类型: type QueryError struct { Query string Err error } func (e *QueryError) Error() string { return e.Query + ": " + e.Err.Error() } 像这样的错误类型无处不在,它们存储的信息变化很大,从时间戳到文件名再到服务器地址。通常,该信息包括另一个较低级别的错误...阅读全文

博文 2019-10-19 19:58:47 bigwhite

golang通过mattn/go-sqlite3访问BDB

golang通过mattn/go-sqlite3访问BDB 依赖包 BDB运行环境 $ tree -L 1 bdb bdb |-- bin |-- docs |-- include |-- lib `-- share mattn/go-sqlite3库 $ export GOPATH=$(pwd) $ go get mattn/go-sqlite3 $ ls -l src/github.com/mattn/go-sqlite3 主程序 package main import ( "fmt" "log" "database/sql" "github.com/mattn/go-sqlite3" ) func main() { sqlDriver := "sqlite3_with_extensio...阅读全文

博文 2019-05-31 17:34:40 CodingCode

视频笔记:Go 的构建模式 - David Crawshaw

视频信息 什么是 Build Mode? Go 的八种 Build Mode exe (静态编译) exe (用 libc) exe (动态链接 libc 和非 Go 代码) pie - Position Independent Executables c-archive C 的静态链接库 c-shared C 的动态链接库 为什么会需要动态链接? shared Go 的动态链接库 plugin Go 的插件 优缺点 未来 视频信息 #Go Build Modesby David Crawshaw, Googleat GopherCon 2017 https://www.youtube.com/watch?v=x-LhC-J2Vbk 什么是 Build Mode? #build mode 用...阅读全文

博文 2017-10-05 06:44:14 大桥下的蜗牛

二、Service Mesh 演进历程

第二个部分和大家追溯一下 Service Mesh 的演进历程。要注意,虽然 Service Mesh 这个词汇直到 2016 年 9 才有,但是它表述的东西很早以前就出现了。首先看“远古时代”,第一代网络计算机系统,最早的时候开发人员需要在自己的代码里处理网络通讯的细节问题,比如说数据包顺序、流量控制等等,导致网络逻辑和业务逻辑混杂在一起,这样是不行的。接下来出现了 TCP/IP 技术,解决了流量控制问题,从右边的图上可以看到,功能其实没发生变化:所有的功能都在,代码还是要写。但是,最重要的事情,流程控制,已经从应用程序里面抽出来了。对比左右两边的图,抽出来之后被做成了操作系统网络层的一部分,这就是 TCP/IP,这样的话应用的结构就简单了。现在写应有,就不用考虑网卡到底怎么发。在 TCP...阅读全文

博文 2018-12-14 14:34:46 蒲熠星F1

Excelize 发布 2.0.2 版本, Go 语言最受欢迎的 Excel 基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office Open XML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。入选 2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。 开源代码 GitHub: github.com/xuri/excelizeGitee: gitee.com/xurim...阅读全文

博文 2019-10-09 23:02:38 续日

使用golang的标准库搭建网站--5.处理COOKIE

合理的使用cookie可以极大的提高网站的用户体验,这一篇文章主要来讨论一下,go中是如何处理cookie的。 声明 Go语言中通过net/http包中的SetCookie来设置: //设置cookie的方法声明 http.SetCookie(w ResponseWriter, cookie *Cookie) //Cookie的声明 type Cookie struct { Name string Value string Path string Domain string Expires time.Time RawExpires string // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means dele...阅读全文

博文 2017-01-07 07:00:40 这里好像没有人

[开源] gev (????支持 websocket 啦): Go 实现基于 Reactor 模式的非阻塞网络库

https://github.com/Allenxuxu/gev [gev](https://github.com/Allenxuxu/gev) 是一个轻量、快速、高性能的基于 Reactor 模式的非阻塞网络库,底层并不使用 golang net 库,而是使用 epoll 和 kqueue。 现在它支持 WebSocket 啦! 支持定时任务,延时任务! ⬇️⬇️⬇️ ## 特点 - 基于 epoll 和 kqueue 实现的高性能事件循环 - 支持多核多线程 - 动态扩容 Ring Buffer 实现的读写缓冲区 - 异步读写 - SO_REUSEPORT 端口重用支持 - 支持 WebSocket - 支持定时任务,延时任务 ## 性能测试 > 测试环境 Ubuntu18.04 - g...阅读全文

博文 2019-10-24 11:12:27 Allenxuxu

Golang的垂直组合思维——type embedding

什么是Golang的正交组合-垂直组合思维:Tony Bai的博客 - Coding in GO way - Orthogonal Composition Go语言通过type embedding实现垂直组合。组合方式莫过于以下这么几种: a):construct interface by embedding interface b):construct struct by embedding interface c):construct struct by embedding struct Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。这里从一个实际的案例出发。 问题描述: 网游服务器中的一个例子。假设每个实体...阅读全文

博文 2019-03-07 19:34:42 Ovenvan

【GoLang那点事】Go安装后的目录结构和环境变量介绍

#### 需要安装的软件 * golang1.12 安装包(到2019-06-09为止最新版本) 下载地址 **https://studygolang.com/dl** * Go的开发工具 JetBrains GoLand 2019.1.3 下载地址 **http://www.jetbrains.com/go/whatsnew/** 进入后点击DOWNLOAD后面的下拉箭头选择自己对应的操作系统 * 安装过程这里就不说了,度娘一下都可以安装成功的 #### Go安装后的目录介绍 * api文件夹 >go1.1.txt,go.1.2.txt.....go1.12.txt存放go的所有版版(go1.1到go.1.12)的api信息 except.txt 存放了在不破坏兼容性的前提下可能消失的一些...阅读全文

博文 2019-07-24 09:29:17 SunPengWei

[Golang]golang使用mysql实例和第三方库Gendry

导入对应的包 // 安装 $ go get github.com/go-sql-driver/mysql // 导入 import ( "database/sql" _ "thirdpkg/go-sql-driver/mysql" ) 初始化mysql客户端 // 打开数据库,格式是⽤户名:密码@协议/数据库名称?编码⽅式 db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8" if err != nil { fmt.Println(err) } // 确保db正常关闭 defer db.Close() // 使用前Ping, 确保db连接正常 err = db.Ping() if er...阅读全文

博文 2020-05-13 08:32:42 番茄猫

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2017-02-09 08:09:20 Coldstar

golang 标准库之FLAG

评论有人提到没有例子,不知道讲的是什么。因此,为了大家能够更好地理解,特意加了一个示例。其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了。建议阅读 《Go语言标准库》一书的对应章节:flag – 命令行参数解析。 在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在go标准库中提供了一个包:flag,方便进行命令行解析。 注:区分几个概念 1)命令行参数(或参数):是指运行程序提供的参数 2)已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数 3)非flag(non-flag)命令行参数(或保...阅读全文

博文 2018-06-04 23:33:03 易野

使用 Go 实现快速排序

快速排序(quick sort)号称是二十世纪最伟大的十大算法之一(The Best of the 20th Century: Editors Name Top 10 Algorithms), 但是快速排序也是最不容易实现的排序算法之一 ()。虽然它的原理非常的简单,但实现起来很容易出错。 也曾因为快排导致腥风血雨甚至网站攻击事件。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 分治法:将问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这...阅读全文

博文 2018-09-01 16:48:39 smallnest

golang中的文件读写

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012314976/article/details/79838084 正文 读取文件全部内容 package main import ( "fmt" "os" "io/ioutil" ) func main() { f, err := os.Open("input.txt") if err != nil { fmt.Println("os Open error: ", err) return } defer f.Close() //读取文件全部内容 b, err := ioutil.ReadAll(f) if err != nil { fmt.Println("ioutil ReadAll e...阅读全文

博文 2019-04-22 18:31:37 u012314976

谈谈Go语言字符串

字符串是一种特别重要的类型, 可以说整个世界都是建立在字符串处理基础之上的, 甚至有很多专门针对字符串处理设计的编程语言(比如perl). 因为字符串处理非常重要, Go语言将字符串作为值以简化使用, 同时标准库提供了strings/fmt/strconv/regexp/template等诸多包用于协助处理字符串.1. 基本用法Go语言中字符串是一个不可修改的字节序列, 如果要做类比的话可以看作是一个只读的byte数组类型. 字符串有两种方式构建: 第一种是在代码中通过双引号包括起来的字符串字面值, 这是编译前就知道了字符串的内容; 另一种是在运行时通过代码运行动态产生的字符串.因为Go语言源代码要求是UTF8编码, 因此字符串面值的内容也是UTF8编码的. 为了方便面值字符串的遍历, Go...阅读全文

博文 2019-05-18 11:36:30 光谷码农

????桥梁模式-Bridge

源码地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/02_Bridge????桥梁模式-Bridge????桥梁模式的目的就是要实现抽象定义和它的实现部分可以互不依赖,单独开发✂️抽象定义和实现的部分相互分隔,各自只在自己的类的层次结构中.⚡️类图抽象定义和它的实现之间的关系称作 ????桥梁,它在二者之间建立连接​ ????参与者桥梁模式的参与者如下:???? Client (客户).???? AbstractDef (抽象定义). 类 AbstractDef 定义了客户可以使用的 ????接口,含有指向由自己规定的接口的IImplementer的引用.SpecAbstractDef (细分的抽象定义...阅读全文

博文 2019-08-23 17:33:01 mumushuiding

for-loop 与 json.Unmarshal 性能分析概要

文地址:for-loop 与 json.Unmarshal 性能分析概要 前言 在项目中,常常会遇到循环交换赋值的数据处理场景,尤其是 RPC,数据交互格式要转为 Protobuf,赋值是无法避免的。一般会有如下几种做法: for for range json.Marshal/Unmarshal 这时候又面临 “选择困难症”,用哪个好?又想代码量少,又担心性能有没有影响啊... 为了弄清楚这个疑惑,接下来将分别编写三种使用场景。来简单看看它们的性能情况,看看谁更 “好” 功能代码 ... type Person struct { Name string `json:"name"` Age int `json:"age"` Avatar string `json:"avatar"` Type ...阅读全文

博文 2019-02-17 21:34:41 煎鱼

golang标准库中的encoding/gob包

1、golang中的gob包是什么? 2、go标准库中的gob编码规则 3、gob包给开发者提供了什么内容?以及怎么使用? 4、gob的目的是什么?以及应用场景有哪些? 一、golang中的gob包是什么? gob是golang包自带的一个数据结构序列化的编码/解码工具。 二、go标准库中的gob编码规则 image.png 当发生方传递的是struct{A,B int}结构的值,接收方可以允许前9种结构,但是后4四种结构却是不允许的。 允许模拟相似,但是不允许矛盾 各个类型的编码规则 1、结构体内只有导出字段并且导出字段才能被编码和解码 2、编码至少存在一个可编码字段,解码也至少需要一个能被解码字段,不然会报错。 3、解码方的导出字段必须存在与编码后的同名字段,类型一致,或者接收方为同类型...阅读全文

博文 2018-12-12 14:34:48 laijh

Effective Go

简介 Go 是一门新语言。尽管它借鉴了现有语言的设计思想,但它拥有一些与众不同的特性,导致高效的 Go 程序的特点和用其相关语言编写的程序是不同的。直接将 C++ 或 Java 程序转换成 Go 不太可能产生令人满意的结果,因为 Java 程序是用 Java 写的,而不是用 Go。另一方面,从 Go 的角度思考问题可以得出有效但截然不同的程序。换句话说,要想写好 Go 程序,理解其性质和习惯用法是很重要的。知道 Go 编程的既定惯例也很重要,比如命名、格式化、程序构造等等,这样你编写的程序就会很容易被其他 Go 程序员理解。 本文档提供了编写清晰、惯用的 Go 代码的技巧。它是 language specification, Tour of Go, 和 How to Write Go Cod...阅读全文

博文 2019-10-24 16:32:45 aside section._1OhGeD

求分享一些 go 中简洁,优雅的包

感觉 go 的包真的非常少,当然主要也是因为标准库已经很齐全。大家都用过哪些包呢?想找一些写的好的包阅读源码 方向例如: 1. 命令行工具 2. http/https代理,家里有个raspyberry,一直想拿来代理youtube,node写过国内能访问youtube但是看不了视频 3. web框架 4. 高并发爬虫 5. markdown渲染 6. 项目小工具,例如提取项目配置文件... 7. 进度条 8. websocket 9. tcp/udp 传文件 10. 模板引擎 11. 日志记录 12. 静态文件服务器 13. 文件压缩,解压缩 zip, tar.gz 14. 邮件发送/接收,smtp/pop3|imap4 .....阅读全文

golang 文件操作之三

1.打包文件 // This example uses zip but standard library // also supports tar archives package main import ( "archive/zip" "log" "os" ) func main() { // 创建一个打包文件 outFile, err := os.Create("test.zip") if err != nil { log.Fatal(err) } defer outFile.Close() // 创建zip writer zipWriter := zip.NewWriter(outFile) // 往打包文件中写文件。 // 这里我们使用硬编码的内容,你可以遍历一个文件夹,把文件夹下的...阅读全文

博文 2018-02-07 15:34:39 soledad

Golang learning 结构体 struct 与面向对象

Go 语言并不是传统意义上的面向对象语言,但是实现很小的面向对象的机制。 匿名嵌入并不是继承,无法实现多态处理,虽然配合方法集,可用接口来实现一些类似操作,但是其本质是完全不同的。 type Animal struct { 声明Animal name string age int } type Cat struct { Animal 匿名字段 teeth string "牙" "牙" 不是注释,字段标签(tag)不是注释,是用来描述字段的元数据,是struct的一部分 leg int } type Animal struct { 声明Animal类 name string age int } type AnimalAction interface { 声明AnimalAction 接口类 e...阅读全文

博文 2019-05-14 18:34:53 wangyongyue

怎样才能运营好社区O2O系统?_夏日葵电商

怎样才能运营好社区O2O系统?_夏日葵电商 现在正是社区O2O火爆的时候,很多企业看到了商机就一头扎进去,结果都黯然退场,社区O2O真有那么难做么?难是肯定的,但是如果选择了正确的运营方式,那么就会从难变容易很多。今天夏日葵电商小编,就要来给大家挖一挖社区O2O系统运营的干货。 在做运营计划之前,要有明确的目标,也就是希望通过社区O2O运营达到什么样的效果,应该从哪些方面入手。没有目标就去做运营,会像无头苍蝇一样,做再多也是无用功。 1.确定用户群体不同的产品会有不同的消费群体,所以社区O2O要通过产品的定位来确定用户的定位,再针对用户来做运营。用户的消费习惯会因为年龄、消费能力、个人喜欢等等原因而出现差异,有针对性的运营内容很关键。 2.做更优质的内容虽然UGC类产品的内容是用户创造的,但...阅读全文

博文 2017-05-27 09:00:44 夏小葵