golang

golang注册数据库提示“注册db'default',网络'localhost:3306'的默认地址未知 必须有一个名为'default'的注册数据库别名`”

房东的猫 提交于 2020-01-15 20:52:27
register db ` default ` , default addr for network 'localhost:3306' unknown must have one register DataBase alias named ` default ` 代码: orm . RegisterDataBase ( "default" , "mysql" , "root:113655@localhost:3306/chatapp_golang?charset=utf8" ) 改为: orm . RegisterDataBase ( "default" , "mysql" , "root:113655@tcp(localhost:3306)/chatapp_golang?charset=utf8" ) 在上面的示例中添加了网络类型tcp。 来源: CSDN 作者: microcosm1994 链接: https://blog.csdn.net/qq_39081974/article/details/103993677

mac下使用brew安装并使用golang

試著忘記壹切 提交于 2020-01-15 09:01:48
突然想进go坑,然后就尝试在公司新发的mac上折腾下 安装 通过执行命令 brew search go 看到可用最新版是1.7,就他了 brew install go@1.7 安装好了,按网上的教程 直接在终端里执行 go,结果提示命令不存在 Orz。好吧,自己加个别名吧。 打开 .bash_profile,添加: alias go=’/usr/local/Cellar/go\@1.7/1.7.6/bin/go’ 执行 source .bash_profile,然后再执行 go。一切正常~ 按照教程,然后继续在 .bash_profile 中设置几个环境变量: export GOROOT=/usr/local/opt/go\@1.7/bin/ export GOPATH=~/code/golang/ # 这是我的项目路径 export GOBIN=$GOPATH/bin export PATH= GOBIN 然后执行 go env GOARCH=”amd64” GOBIN=”/Users/atai/code/golang//bin” GOEXE=”” GOHOSTARCH=”amd64” GOHOSTOS=”darwin” GOOS=”darwin” GOPATH=”/Users/atai/code/golang/” GORACE=”” GOROOT=”/usr/local/opt

leetcode 200. 岛屿数量 golang实现

爱⌒轻易说出口 提交于 2020-01-15 01:05:40
描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 思路 深度优先遍历 每次遇到=1的地方 岛屿数+1 上下左右开始遍历 将遇到的1的位置全部置为0 遇到0的地方或者遍历返回 实现 func numIslands ( grid [ ] [ ] byte ) int { var count int if len ( grid ) == 0 { return count } rows := len ( grid ) cols := len ( grid [ 0 ] ) for i := 0 ; i < rows ; i ++ { for j := 0 ; j < cols ; j ++ { if grid [ i ] [ j ] == '1' { dfs ( grid , i , j , rows , cols ) count ++ } } } return count } func dfs ( grid [ ] [ ] byte , i , j , rows , cols int ) { if

【环境篇】搭建golang开发环境

人走茶凉 提交于 2020-01-14 11:08:52
学习一门语言,很多人都会是从搭建环境开始。有的语言的环境比较复杂,而有的语言环境很简单。对于go而言,说简单,的确不难,但有些概念需要先对其有所理解,才知道为什么这么用。网上对于怎么搭建一个golang开发环境已有了很多的教程,在这里我会简单介绍,不做过多描述。本篇文章仅对一些概念进行介绍,以及分享对一些我本人搭建开发环境的心得与技巧,如有错误,欢迎指正和交流。 搭建golang环境 1.到 golang下载地址 下载对应环境的安装包或者源码,若是Linux环境的话,将源码包下载解压之后,放至/usr/local/(实际上放至合适位置即可,只要把它添加进PATH就行),如: export PATH=$PATH:/usr/local/go/bin 2.配置GOPATH、GOROOT,这里可能需要解释一下,对于新手来说,肯定不熟悉这两个环境变量的意义。 GOROOT:golang的安装目录。 GOPATH:go的工作空间,在GOPATH下会有三个目录:src,bin,pkg。 src:存放源码(在不设置go mod的情况下,go get的包放至这里,你自己的项目源码也可以放在这里); bin:编译后的可执行文件放置的位置,如果在你项目go install,生成的可执行文件会放在此处; pkg:存放编译时产生的文件(.a文件)并根据平台进行归档,比如

VMware中国电话面试 - 面经

不羁的心 提交于 2020-01-14 06:16:47
以下题目按顺序被问到。 计算机网络 简要阐述TCP/IP的层次结构。 TCP/UDP的区别? TCP怎么做到可靠传输? 计算机网络每层对分组怎样打包封装? 猜协议,你说我猜:DNS协议。 MAC地址的作用?简要阐述ARP协议。 Golang 简要陈述Golang的多线程机制,goroutine是线程/进程?讲一下go channel怎么用。 Golang的接口,接收者带不带*有什么区别? Golang的函数传参时,哪些参数传指针,哪些传值? 讲一下Golang临时对象池。(他偷看我博客了吗。。。) 算法 讲一下常用排序算法。 Docker 对Docker了解多少? 吹了Docker三要素。 结语 可能因为本身是做虚拟机的,所以很看重计算机网络这一块。 之后就通知我店面过了,让我去Onsite. 期末之后第二天,急速赶到帝都,迎接生平第一场Onsite面试。 来源: CSDN 作者: VampireWeekend 链接: https://blog.csdn.net/sinat_35406909/article/details/103773355

golang 数据库

走远了吗. 提交于 2020-01-14 05:07:06
database/sql包 golang封装了 database/sql 标准库,它提供了用于处理sql相关的操作的接口。而接口的实现则交给了数据库驱动 写代码逻辑的时候,不用考虑后端的具体数据库,即使迁移数据库类型的时候,也只需要迁移相应的驱动即可,而不用修改代码 使用数据库时,除了 database/sql 包本身,还需要引入想使用的特定数据库驱 sql.Open() 不建立与数据库的任何连接,也不会验证驱动连接参数。相反,它只是准备数据库抽象以供以后使用 首次真正的连接底层数据存储区将在第一次需要时懒惰地建立。 如果你想立即 检查数据库是否可用 (例如,检查是否可以建立网络连接并登陆),请使用 db.Ping() 来执行此操作 sql.DB 对象被设计为长连接 不要经常 Open() 和 Close() 数据库对象 否则会遇到诸如重复使用和连接共享不足,耗尽可用的网络资源以及由于TIME_WAIT中剩余大量TCP连接而导致的零星故障的状态 应该在需要是把 sql.DB 对象作为参数,或在全局范围内使其可用 rows.Close() 是一种无害的操作,如果它已经关闭,所以你可以多次调用它 请注意首先检查错误,如果没有错误再调用 rows.Close() ,否则会导致运行时的panic 不要在循环中用defer推迟。延迟语句在函数退出之前不会执行,所以长时间运行的函数不应该使用它

golang go-sql-driver 数据库报错 bad connection

牧云@^-^@ 提交于 2020-01-13 22:32:34
开发Go项目中,有时候在有大量操作Mysql时,有时候会发生如下错误。 "driver: bad connection" 原因 这是因为Mysql服务器主动关闭了Mysql链接。 在项目中使用了一个mysql链接,同时使用了事务,处理多个表操作。处理时间长。 导致空闲链接超时,Mysql关闭了链接。而客户端保持了已经关闭的链接。 具体原因是: beego没有调用db.SetConnMaxLifetime 这个方法,导致客户端保持了已经关闭的链接。 解决 Beego调用 db.SetConnMaxLifetime(time.Second) ,设置数据库闲链接超时时间。 engine.SetConnMaxLifetime(time.Second * 30) 来源: CSDN 作者: whatday 链接: https://blog.csdn.net/whatday/article/details/103952962

golang第三方日志包seelog配置文件详解

假如想象 提交于 2020-01-13 21:09:36
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提。在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一、seelog主要功能 下面我们看看seelog有啥强大 设置不同级别的日志; 输出到终端或文件; 过滤指定级别日志; 定义多种不同的日志输出格式; 根据触发日志的文件名或者函数名来区别输出日志; 通过 SMTP 或 TCP 转发日志(网络转发日志); 滚动日志文件(过期日志自动清除)。 二、安装seelog $ go get github.com/cihub/seelog 三、使用seelog 我们先看看一个官方的demo package main import ( log "github.com/cihub/seelog" ) func main() { defer log.Flush() log.Info("Hello from Seelog!") } 很简单是吧,导入包,就直接可以用了,下面我们看看如何通过配置文件高度定制我们的日志。 import ( log "github.com/cihub/seelog" ) func SetupLogger() { logger, err := log.LoggerFromConfigAsFile("seelog.xml") if err != nil {

GoCenter助力Golang全速前进

≡放荡痞女 提交于 2020-01-13 19:09:41
一、背景 Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。为了方便搜索和识别,有时会将其称为Golang。自2009年11月Google正式宣布推出,成为开放源代码项目以来,Go语言已成为当今开发人员和DevOps领域最流行的语言之一, 它被用于设计和编写Kubernetes和Helm。但是,相比语言本身已经得到了广泛的普及和使用,Go语言的包管理方案却大大滞后了。 Go语言生态系统中缺少的是标准化——没有用于依赖关系管理的标准工具, 也没有标准的包格式或兼容的包仓库规范。这意味着开发人员无法使用Go语言创建可重现的构建, 这是一个相当大的问题。这些年来, 社区推出了诸如dep、godep、glide和govender等工具,试图用来处理Go语言的依赖管理, 但并未成功。2018年Google在Go1.11官方推出了Go modules,为Go语言提供了支持版本化的依赖管理方案。 Go modules现在已成为Go语言标准的依赖管理工具和包仓库规范。而GoCenter为Go modules的实现和推广提供了依赖包的公共仓库,使得Go语言的开发人员能够更为稳定和方便地开发可重复构建的Go应用程序。 二、Go语言的依赖管理 在介绍GoCenter之前,我们先简要地回顾一下Go语言依赖管理的发展历程。 Go语言在推出之初,并没有明确的依赖管理方案

Golang 热编译rizla 插件

我的梦境 提交于 2020-01-13 19:00:34
今天在写gin接口的时候,每次添加或修改个接口都需要重启项目才能测试,感觉很麻烦。 因为beego有bee工具,bee run启动项目fsnotify会监控文件变动,经查发现在iris项目中有个插件支持热重启。 使用方法如下: # 安装rizla包 $ go get -u github.com/kataras/rizla # 热重启方式启动iris项目 $ rizla main.go 用起来还是挺方便滴。极力推荐哈。 来源: https://www.cnblogs.com/phpper/p/12188529.html