Golang
独一无二的小个性
独一无二,自强不息
展开
-
Golang 时间转换
一、时间字符串转时间对象一般在获取到时间字符串,需要将时间字符串格式化为 Golang 的 time.Time 对象的时候,通常有 2 个函数,分别是:time.Parse(layout, value string) (Time, error)time.ParseInLocation(layout, value string, loc *Location) (Time, error)原创 2018-02-01 14:08:15 · 963 阅读 · 0 评论 -
Goland 快捷键整理
Mac 键盘符号说明⌫ Delete, ⎋ Escape (Esc)⇥ 右制表符(Tab键)Home Fn + ←⇞ Page Up(Fn+↑)⌦ 向前删除键(Fn+Delete)⇤ 左制表符(Shift+Tab)End Fn + →⇟ Page Down(Fn+↓)Shortcuts 捷径快捷键说明快捷键说明快捷键说明⌃⇧Spa...原创 2018-11-23 16:52:36 · 19405 阅读 · 1 评论 -
Golang GC 垃圾回收机制详解
摘要在实际使用 go 语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。什么是垃圾回收?曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困...转载 2018-06-05 15:33:18 · 56161 阅读 · 2 评论 -
golang 包依赖管理 - govendor
Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。下面简要介绍一个我在项目中用到的 – govendor。 该工具将项目依赖的外部包拷贝到项目下的 vendor 目录下,并通过 vendor.js...原创 2018-05-15 18:05:20 · 4996 阅读 · 0 评论 -
Gin 框架搭建一个 HTTP 网络服务简洁代码
GinGin 是一个 golang 的微框架,封装比较优雅,API 友好,源码注释比较明确,已经发布了 1.0 版本。具有快速灵活,容错方便等特点。其实对于 golang 而言,web 框架的依赖要远比 Python,Java之类的要小。自身的 net/http 足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编...原创 2018-05-15 15:43:29 · 2287 阅读 · 0 评论 -
Golang mgo 剖析之 Session
golang 操作 mongodb 使用的包是 “gopkg.in/mgo.v2”,coding 过程中需要并发读写 mongodb 数据库,简单观摩了下源码,记录下自己的一些理解,如有错误,敬请斧正。 一般来说,我们直接这样创建一个 Session:Session, err = mgo.Dial(URL) if err != nil { log.Printl...原创 2018-04-04 15:37:57 · 1355 阅读 · 0 评论 -
Golang 的 mgo 连接池
mgo 的 Session 与连接池简介mgo 是由 Golang 编写的开源 mongodb 驱动。由于 mongodb 官方并没有开发 Golang 驱动,因此这款驱动被广泛使用。mongodb 官网也推荐了这款开源驱动,并且作者在 github 也表示受到了 mongodb 官方的赞助。但由于作者的个人安排原因,该驱动的更新、bug 修复、issue 维护略微受到诟病。mgo...原创 2018-04-04 15:03:13 · 5780 阅读 · 2 评论 -
Golang mgo 连接池设置(必须手动加上 maxPoolSize)
原文连接:https://studygolang.com/articles/6514golang 的 mongodb 库 mgo,中间踩了一些坑,总结下避免大家再踩坑golang 的 mgo 库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用其实仅在当前操作 (session.Close 之前 )生效,最终还是需要程序员自行去限制连接才行。废话不多说,...转载 2018-04-04 14:41:59 · 1690 阅读 · 0 评论 -
Golang mgo (长连接/重连)
原文连接:https://blog.csdn.net/pkueecser/article/details/50528218最佳使用方法:http://denis.papathanasiou.org/posts/2012.10.14.post.html可稍微参考: https://github.com/goinggo/beego-mgo/blob/a78190c1e061ffa5fcc0...转载 2018-04-04 14:15:06 · 2343 阅读 · 0 评论 -
Golang 中针对 int64 类型优化 abs()
前言Go 语言没有内置 abs() 标准函数来计算整数的绝对值,这里的绝对值是指负数、正数的非负表示。我最近为了解决 Advent of Code 2017 上边的 Day 20 难题,自己实现了一个 abs() 函数。如果你想学点新东西或试试身手,可以去一探究竟。Go 实际上已经在 math 包中实现了 abs() : math.Abs ,但对我的问题并不适用,因为它的输入输出的值...转载 2018-04-04 12:27:08 · 8156 阅读 · 0 评论 -
Golang redis 入门操作
Golang redis 入门操作安装我使用的是 https://github.com/go-redis/redis 这个 golang 客户端, 因此安装方式如下:go get gopkg.in/redis.v4接着在代码中导入此包即可:import "gopkg.in/redis.v4"基本操作创建客户端通过 redis.NewClient ...原创 2018-03-20 12:41:11 · 5401 阅读 · 0 评论 -
Golang 实现 SSH 执行远端命令
本篇文章会介绍使用 Golang 执行远端命令,并获取香瓜你执行结果的两种方法,SSH 客户端连接,和执行系统命令,最大的区别是,前者会建立 SSH 连接,之后执行相应的命令;后者是执行系统 ssh 命令, 把想要执行的操作当做 ssh 的参数。在执行远端命令相关的文章我在我的另一篇文章已经介绍了 Python, Shell, Perl 这三种方法,详见:http://blog.csdn.ne...原创 2018-03-14 11:29:16 · 23323 阅读 · 0 评论 -
Golang 编译应用程序动态版本号
Golang 编译应用程序动态版本号为了使我本地的代码每次编译都有一个特殊的标记,所以我我这里结合网上的几篇帖子,整理了结合 git 提交码,编译时间,编译程序名称,和编译版本等信息的相关介绍。使用方法首先创建一个小项目来做简单验证:mkdir -p gotest/src version/version.go main/main.go Makefile使用...原创 2018-03-06 15:30:42 · 5270 阅读 · 0 评论 -
Golang 和 MongoDB 中的 ISODate 时间交互问题
MongoDB 中有一种时间格式数据 ISODate,参考如下: 如果在 Golang 中查询这条记录,Golang用什么类型的变量来保存呢?查找 ISODate 时间字段在 Golang 中可以使用 time.Time 数据类型来保存 MongoDB 中的 ISODate 时间。type Model struct { Id bson.ObjectId `bson:"...原创 2018-02-27 11:28:43 · 14032 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main...转载 2018-02-26 11:35:46 · 350 阅读 · 0 评论 -
Golang seelog 使用入门简介
1 首先安装Seelog库go get github.com/cihub/seelog2 简单的日志输出参考官方文档,些一个快速开始的 hello world 程序:package main import log "github.com/cihub/seelog" func main() { defer log.Flush() log.Inf原创 2018-02-05 16:05:13 · 4783 阅读 · 0 评论 -
Go 并发读写锁测试
使用 Golang 实现并发写文件的读写锁import ( "fmt" "sync" "time")var mutex sync.RWMutexfunc Write(i int) { println(i, "write ------->>>>>>>>>>>>") mutex.Lock() println(i, "./././././原创 2018-01-26 17:09:38 · 1323 阅读 · 0 评论 -
Golang math 包 Floor 缺失函数体
偶然间,想测测 math 包下的一些函数,发现 math 包中的导出函数没有函数体,我照着这个代码,在我自己的 .go 文件中报错missing function body.代码长这样:// Trunc returns the integer value of x.//// Special cases are:// Trunc(±0) = ±0// Trunc(±Inf) ...原创 2019-05-17 20:33:13 · 1835 阅读 · 0 评论