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

Godep的基本使用

关于Godep 发现好多golang项目都使用到godep作为包管理的工具,像比较大型的项目,比如kubernetes这种,都是使用的是godep来进行依赖管理操作的了,看了一下有点像maven的感觉,这里记录一下基本的操作。 首先是安装 由于网络的问题,goget的时候有一个包会找不到,网上有好多替代的解决方案,比如说这个 基本的使用 go save 比如说建立了一个基本的项目,就拿beego的示例项目来说。这里又一点要注意,没有使用版本控制的时候,go save是不成功的,会报类似如下的错误: godep: error while inspecting "/Users/Hessen/goworkspace/src/testBee/bapi": directory "/Users/Hess...阅读全文

go get 代理设置

前提: 假设安装好git 我的FQ方式(也可以使用别的方式): 使用 ishadowsocks 方式FQ 临时设置Windows下代理: 在控制台执行如下命令,后面的的代理值根据你具体的代理进行设置 set http_proxy=http://127.0.0.1:1080/pac?t=201603231602138322 set https_proxy=https://127.0.0.1:1080/pac?t=201603231602138322 临时设置Linux下代理: 在控制台执行如下命令,后面的的代理值根据你具体的代理进行设置 http_proxy=http://127.0.0.1:1080/pac?t=201603231602138322 https_proxy=https://1...阅读全文

博文 2016-03-24 02:00:01 simplelovecs

[golang] Glide 包管理

一、概述 golang的包管理工具有很多,本篇幅主要介绍glide进行包管理。 二、安装及命令介绍 go get github.com/Masterminds/glide glide create|init 初始化项目并创建glide.yaml文件. glide get 获取单个包 --all-dependencies 会下载所有关联的依赖包 -s 删除所有版本控制,如.git -v 删除嵌套的vendor glide install 安装包 glide update|up 更新包 三、案例测试 准备:本次测试的包是 github.com/mattn/go-adodb ,这个包其中有一个依赖包是 github.com/go-ole/go-ole 3.1 下载单个包 command: glid...阅读全文

博文 2016-05-19 15:00:00 loveyx

Go 语言的 Modules 系统介绍

即将发布的 Go 语言 1.11 版本将会给我们带来对 *modules*(模块)的实验性支持,这是 Go 语言新的一套依赖管理系统。 (译注:很多编程语言中,把 modules 译作「模块」,但由于目前该机制在 Go 语言还没正式发布,因此尚未有非常普及的译法。而类似的 vendor 一词的翻译,大多中文文章都是采取保留英文原文的方式处理,因此本文对 modules 的翻译参考 vendor 的处理:保留英文原文) 前些日子,[我简单地写了一编关于它的文章](https://roberto.selbach.ca/playing-with-go-modules/),自从那篇文章写完后,Go 的 modules 机制又发生了一些小改动。因为现在快到正式版发布了,我想现在刚好是时候用”边做边学“...阅读全文

博文 2018-08-23 18:37:30 Alex-liutao

Golang语法总结(三):可见性规则(公有与私有,访问权限)

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头) 例如: visibility/test.go package visibility import "fmt" const PI = 3.145const pi = 3.14const _PI = 3.14 var P int = 1var p int = 1 func private_function() { fmt.Println("only used in this pa...阅读全文

博文 2016-02-29 07:00:00 QQ245671051

GO-log日志封装

Go封装日志: 支持归档输出,一个小时压缩归档一份 最多保留三天的日志 支持日志级别自定义 如果没有指定输出文件默认输出到控制台。 支持输出文件名行号,以及时间、日志界别 如: info 10:08:40.826836 handler.go:81 package logger import ( "fmt" "log" "os" "os/exec" "strings" "time" ) const ( PanicLevel int = iota FatalLevel ErrorLevel WarnLevel InfoLevel DebugLevel ) type LogFile struct { level int logTime int64 fileName string fileFd *o...阅读全文

博文 2016-09-17 09:00:01 gdutliuyun827

让vscode完美支持go vendor的代码跳转(使用vscode必看)

Vscode是世界上最好的Go IDE!! 所以使用vscode作为Go的IDE是一件非常爽的事情。 可是事情总有不完美。现在有很多项目都是用vendor来做第三方包的版本控制,可是godef竟然不支持vendor的代码跳转!!我们想跳转到vendor中的代码,目前是无法做到的。 现在特分享一个自修改的版本,完美支持vendor特性,只要go install后,就可以爽爽的用vscode了。 欢迎大家加入Golang隐修会,群号894864,在群文件中就可下载,而且群内大神很多哦...阅读全文

博文 2016-04-19 15:00:02 abv123456789

默默前行的livego--基于go语言的rtmp直播服务器

为什么go语言,原因太多了! 轻量级协程,随时goroutine方便的channel方便的interface强大的服务器性能 简单点GO语言---为服务器而生! 我们来看看: livego--基于go语言的rtmp直播服务器 github地址: https://github.com/runner365/livego 什么是livego livego是基于golang开发的rtmp服务器 为什么基于golang golang在语言基本支持多核CPU均衡使用,支持海量轻量级线程,提高其并发量 当前开源的缺陷: srs只能运行在一个单核下,如果需要多核运行,只能启动多个srs监听不同的端口来提高并发量; ngx-rtmp启动多进程后,报文在多个进程内转发,需要二次开发,否则静态推送到多个子进程,效...阅读全文

博文 2017-08-25 01:32:12 sweibd

golang Unmarshal 小问题

正常情况: func main() { str := `{"expires_in":2592000,"refresh_token":"22.84564433384c3dffdf8c2b123b6da8de.315360000.1756090115.2605827041-6701125","access_token":"21.060aaae1049e2604d0fa71d992aea516.2592000.1443322115.2605827041-6701125","session_secret":"6ce3910403a953006916f1fafef433c5","session_key":"9mnRdL3CfpvaeMqn4g2A4f1b+olbN4iD079GhsDIumsoSy9A...阅读全文

博文 2015-08-28 12:00:02 北京_

一个基于Golang的分布式存储开源项目

项目地址:https://code.google.com/p/weed-fs/ weed-fs是一个简单且高性能的分布式存储系统, 它有两个目标: 1、存储海量文件 2、快速访问所存的文件 weed-fs选择了 key~file 映射的方式实现文件寻址, 而不是POSIX文件系统已有的机制, 这有点类似于nosql系统, 你可以称之为“NoFS” weed-fs的实现机制是管理volumes服务器, 而不是在一个中心阶段管理所有的元文件, volumes服务器可以管理文件及其元文件, 这种机制可以大大的缓解了中心节点的压力, 并且可以将元文件保存在volumes服务器的内存中, 而且文件自动采用Gzip 压缩 , 从而保证了文件的访问速度 weed-fs的理论模型可参考 Weed-FS mo...阅读全文

博文 2015-06-17 20:17:42 love_se

Log4Go 笔记

一、概念 在java、.net平台有非常有名的日志类,golang 也有对应的版本 安装: go get github.com/alecthomas/log4go 二、日志级别 type Level int const ( FINEST Level = iota FINE DEBUG TRACE INFO WARNING ERROR CRITICAL ) 可以看到作者定义了一个 Level 类型来定义日志级别,使用的时候注意。 三、LogWriter 1. ConsoleLogWriter :控制台输出日志 logger1 := log4go.Logger{} logger1.AddFilter("logger1", log4go.INFO, log4go.NewConsoleLogWrit...阅读全文

博文 2016-02-03 03:00:02 loveyx

使用golang搭建新博客系统

原文链接:[https://ashan.org/archives/931](https://ashan.org/archives/931) 前一段时间想对博客系统进行一次大面积更新,因为原有Nodejs后台很多地方做的不好,无论从设计上还是编码结构上都没有达到我想要的效果。所以国庆节前就开始着手对新系统进行设计,经过几天的重构修改,前台部分第一版已经完成,后续还会继续优化。 ### 预计目标 我对我自己博客系统的构想一直没有过变化,而且就这个设想我还专门撰写过一篇名为[《我想要一个怎样的Blog系统》](http://www.ashan.org/archives/893)。我对这次系统更新做了如下几个优化点。 - 打开速度要更快 - 依然不需要花哨功能 - 路...阅读全文

Go += 包版本

本文译自 Go += Package Versioning, Go & Versioning 的第 1 部分, 版权@归原文所有. 我们需要将包版本控制添加到 Go. 更确切地说, 我们需要将软件包版本的概念添加到 Go 开发人员和我们的工具的工作词汇表中, 以便在彼此交谈时准确地确定应该构建, 运行或分析哪个程序. go 命令需要能够告诉开发人员具体哪些版本的软件包在特定构建中, 反之亦然. 版本控制可以让我们启用可重复构建, 所以如果我告诉你试用我的程序的最新版本, 我知道你将不仅获得我的代码的最新版本, 而且还包括我的代码所依赖包的精确的同一版本, 所以你和我将构建完全等价的二进制. 版本控制还可以让我们确保明天程序的构建方式与今天的完全相同. 即使有更新版本的依赖, go 命令也不应...阅读全文

博文 2018-02-22 22:49:23 lingchao

javascript + golang处理时间问题

javascript + golang处理时间问题 今天一个同事问js和golang处理时间问题上总是有误差,于是想到了去年做的一个项目中也出现了这样的问题,发个博客记录一下: 直接上代码: javascript片段: var sa = $('#sa').datetimebox('getValue'); var ea = $('#ea').datetimebox('getValue'); //此时sa和ea输出为yyyy-MM-dd HH:mm:ss这种标准格式的字符串 ----------------------------------------- var sa1 = new Date(sa).toISOString(); var ea1 = new Date(ea).toISOStri...阅读全文

博文 2016-02-16 12:00:02 u013701108

使用Homebrew安装配置golang环境

安装Homebrew 在Homebrew复制安装命令,在控制台运行完成安装 安装golnag $ brew update && brew upgrade $ brew install go PATH配置 创建一个目录作为gopath,在目录创建三个目录bin、src、pkg $ cd ~ $ vim .bash_profile 编辑.bash_profile文件并保存,文件内容如下 export GOROOT=/usr/local/opt/go/libexec # GOPAT为上面创建的目录路径 export GOPATH=/Users/deweixu/coding/Go/go_path export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 运行source ....阅读全文

博文 2017-02-11 09:00:42 Simeone_xu

Golang可见性规则(公有与私有,访问权限)

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头) 例如: visibility/test.go package visibility import "fmt" const PI = 3.145 const pi = 3.14 const _PI = 3.14 var P int = 1 var p int = 1 func private_function() { fmt.Println("only used in this...阅读全文

博文 2017-09-05 16:30:01 ganchuanpu

Go的角色访问控制 goRBAC

goRBAC 为 Go 语言应用提供了轻量级的基于角色的访问控制。 该包适用于:

* 实体具有一个或多个角色
* 角色需要分配权限
* 权限需要分配给角色
因此,RBAC 具有以下模型:
* 在实体和角色之间具有多对多关系
* 在角色和权限之间具有多对多关系
* 角色可以具有父角色(权限继承)
示例代码:
import github.com/mikespook/gorbac

rbac := gorbac.New()

rbac := gorbac.NewWithFactory(YourOwnFactory)

rbac....阅读全文

轻量级访问控制框架casbin

casbin 是一个用 Go 语言打造的轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。 支持自定义请求的格式,默认的请求格式为{subject, object, action}; 具有访问控制模型 model 和策略 policy 两个核心概念; 支持 RBAC 中的多层角色继承,不止主体可以有角色,资源也可以具有角色; 支持超级用户,如 root 或 Administrator,超级用户可以不受授权策略的约束访问任意资源; 支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar 可以映射到 /foo*; 身份认证 authentication(即...阅读全文

高并发除了java还可以用什么-clojure,go,rust

java的锁和CAS都是开销惊人的(锁会调用本地系统进行线程阻塞和唤醒开销巨大). Actor的消息队列也会有自己的严重问题(使用Actor又会使得编程复杂度大大提高). 所以分布式开发其实是按照业务特性,妥协出最优方案. 在写少读多的并发场景下:clojure的STM,通过多版本控制以空间换时间,提供了类似MVCC的内存事务回滚, ,简单高效到了极致. 大量写的情况下go/rust在CAS上抽象出的task机制也可以让CAS开发变得相当简单 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-11-17 01:00:00 larrylgq

golang包管理解决之道——go modules初探

golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案。 不过现在go modules随着golang1.11的发布而和我们见面了,这是官方提倡的新的包管理,乃至项目管理机制,可以不再需要GOPATH的存在。 go modules的初始化 现在modules机制仍在早期阶段,所以golang提供了一个环境变量“GO111MODULE”,默认值为auto,如果当前目录里有go.mod文件,就使用go modules,否则使用旧的GOPATH和vendor机制,因为在modules机制下go get只会下载go modules,这一行为会在以后版本中成为默认值,这里我们保持auto即可,如果你想直接使用module...阅读全文

博文 2018-08-28 06:30:01 apocelipes

大型网站的 HTTPS 实践(三)——基于协议和配置的优化

1 前言 上文讲到HTTPS对用户访问速度的影响。 本文就为大家介绍HTTPS在访问速度,计算性能,安全等方面基于协议和配置的优化。 本文最早发表于百度运维部官方博客 2 HTTPS访问速度优化 2.1 Tcp fast open HTTPS和HTTP使用TCP协议进行传输,也就意味着必须通过三次握手建立TCP连接,但一个RTT的时间内只传输一个syn包是不是太浪费?能不能在syn包发出的同时捎上应用层的数据?其实是可以的,这也是tcp fast open的思路,简称TFO。具体原理可以参考rfc7413。 遗憾的是TFO需要高版本内核的支持,linux从3.7以后支持TFO,但是目前的windows系统还不支持TFO,所以只能在公司内部服务器之间发挥作用。 2.2 HSTS 前面提到过将用...阅读全文

博文 2015-05-04 11:27:17 luocn99

无需代理即可访问谷歌,需要的朋友进。

每次访问谷歌都需要开个vpn,但同时访问国内网站速度就慢了,非常不方便,所以就想到了做个代理网站www.wesou.org,实时抓取谷歌的搜索结果来展示,这样再用谷歌搜索时就方便多了,分享出来,有同样需求的朋友使用下。 ![](http://77fkk5.com1.z0.glb.clouddn.com/upload/image/13e97d9f448a11e59bb5525400020562.png) ![](http://77fkk5.com1.z0.glb.clouddn.com/upload/image/1d2ea216448a11e59bb5525400020562.png...阅读全文

Go-数组

示例 Go的数组要求只能是单一数据类型,这和脚本语言有些差别,而与传统编译型语言一致。 package main import "fmt" func main() { var a [5]int var size = len(a) for i := 0; i < size; i++ { a[i] = i + 1 fmt.Println("a[%d]=%d", i, a[i]) } total := 0 for i := 0; i < len(5); i++ { total += a[i] } average := total / len(5) fmt.Println("average:", average) } range 数组的另一种遍历方式,用range:——In each iterat ...阅读全文

博文 2016-10-20 04:00:03 u013344915

golang 错误处理与异常

[原文地址](http://litang.me/post/golang-error-and-panic/) golang 中的错误处理的哲学和 C 语言一样,函数通过返回错误类型(error)或者 bool 类型(不需要区分多种错误状态时)表明函数的执行结果,调用检查返回的错误类型值是否是 nil 来判断调用结果。 ### error golang 中内置的错误类型 error 是一个接口类型,自定义的错误类型也必须实现为 error 接口,这样调用总是可以通过 Error() 获取到具体的错误信息而不用关心错误的具体类型。标准库的 `fmt.Errorf` 和 `errors.New` 可以方便的创建 error 类型的变量。 ```go type error interface { Er...阅读全文

博文 2018-11-05 19:01:31 darlingtangli

golang 调用cmd下程序隐藏黑窗口-方法1

通过go的标准库exec调用cmd命令时会闪弹黑窗口,为解决此问题在windows下可以用win32 API 的 WinExec。 此问题主要出现在带UI或无控制台的程序调用cmd时。 编译go时加入参数: go build -ldflags="-H windowsgui" package main import ( "errors" "log" ) import ( "github.com/CodyGuo/win" ) var ( winExecError = map[uint32]string{ 0: "The system is out of memory or resources.", 2: "The .exe file is invalid.", 3: "The specified...阅读全文

博文 2016-11-10 03:00:03 CodyGuo

Go 边看边练 -《Go 学习笔记》系列(十四)(已完结)

相信大家在看编程语言学习教程的时候都会难免觉得有点枯燥: * 自己看书,遇到问题不方便求助 * 书上的代码片段、示例是静态的 * 虽然有时书上会给出运行输出,但是不够直观 * 自己拷贝代码到 IDE 里运行是也比较麻烦 * 即使运行了也要来回在 IDE 和书之间切换,还是麻烦 * 总之,[程序员都是懒人](https://www.baidu.com/s?wd=%E7%A8%8B%E5%BA%8F%E5%91%98%20%E6%87%92%E4%BA%BA&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=14&rsv_sug1=5&rsv_sug2=0&i...阅读全文

学习Golang语言(2): 变量

# 学习Golang语言(2): 变量 跟着“码术”一起学习Golang语言。学习一门新的语言,我们首先了解的是新语言的变量声明,基本类型,关键字以及控制流。本章主要讲解变量声明。 学习一门新的语言,我们首先了解的是新语言的变量声明,基本类型,关键字以及控制流。 Go语言在语法上类似于C语言。但是不同于C语言,Go虽然也是用分号进行语句分割,但是程序员不需要在每行程序结尾添加分号。Go语言的编译器会自动在每行末尾添加分号。 但是,如果你需要将两行(或者更多行)语句放在同一行内,那么需要使用分号(;)进行分隔。 **变量声明** Go语言不同于其他语言的地方在于:变量的类型在变量名之后。例如: C中: int a;而在Go中:var a i...阅读全文

学习Golang语言(2): 变量

跟着“码术”一起学习Golang语言。学习一门新的语言,我们首先了解的是新语言的变量声明,基本类型,关键字以及控制流。本章主要讲解变量声明. 学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Golang语言(5):类型--数组 学习一门新的语言,我们首先了解的是新语言的变量声明,基本类型,关键字以及控制流。 Go语言在语法上类似于C语言。但是不同于C语言,Go虽然也是用分号进行语句分割,但是程序员不需要在每行程序结尾添加分号。Go语言的编译器会自动在每行末尾添加分号。 但是,如果你需要将两行(或者更多行)语句放在同一行内,那么需要使用分号(;)进行分...阅读全文

博文 2014-10-09 16:00:04 codemanship

golang recover panic 流程控制的可达与不可达

--------------------------流程控制可达----------------------------- package main import "fmt" func explode() { // Cause a panic. panic("WRONG") } func throwPanic(f func()) { defer func() { if err := recover(); err != nil { // Handle our error. fmt.Println("FIX") fmt.Println("ERR", err) } }() f() fmt.Println(" finish") } func main() { throwPanic(explode) ...阅读全文

博文 2015-05-04 09:00:02 rojas

go学习笔记-控制流

控制语句 条件语句 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,否则会编译失败: func example(x int) int{ var result int if x == 0 { result = 5 } else { result = x } return result } 选择语句 switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough c...阅读全文

博文 2014-10-04 19:26:15 Bluven

定义 Go 模块(vgo)

本文译自 Defining Go Modules, Go & Versioning 的第 6 部分, 版权@归原文所有. 正如在概述文章中介绍的, Go 模块是作为一个版本化的软件包集合单元, 连同列出其他所需模块的 go.mod 文件. 转向模块是我们重新审视和修正 go 命令如何管理源代码的许多细节的机会. 在我们打算使用模块弃用当前的 go get 模型时, 10 年已经过去了. 我们需要确保模块设计将在未来十年为我们提供良好的服务. 尤其是: 我们希望鼓励更多的开发人员为他们的软件包打标签(tag), 而不是期望用户只会选择一个对他们来说看起来很好的提交哈希. 标记显式发布清楚地表明了对别人有用的以及正在开发的东西. 同时, 它仍然可以 - 尽管可能不方便 - 请求特定的提交. 我们...阅读全文

Defer, Panic, and Recover[翻译]

文: http://golang.org/doc/articles/defer_panic_recover.html (被墙) 中文: http://zh-golang.appsp0t.com/doc/articles/defer_panic_recover.html Go语言提供一般的流程控制语句: if, for, switch, goto. 同时它还提供go语句来执行一个 goroutine. 这里我们将介绍几个不太常见的语句: defer, panic, 和 recover. 一个 defer 调用的函数将被暂时保存到调用列表中. 保存的调用列表在当前环境返回的时候被执行. Defer 一般可以用于简化代码, 执行各种清理操作. 让我们演示一个文件复制的例子: 函数需要打开两个文件,...阅读全文

博文 2015-05-03 22:20:00 chai2010

ubuntu10.04下安装配置GO语言环境

GO语言初探 简介:一直想去研究一下Google牛人们搞出来的GO语言,终于在看了《Go语言之父谈Go:大道至简》这篇文章之后,安耐不住好奇,来体验一下GO语言是什么东西! 1.安装环境ubuntu10.04 2.安装Go的版本控制工具----这是为了下载Go语言的安装源码 ~$:sudo apt-get install mercurial ~$ hg 分布式软件配置管理工具 - 水银 基本命令: add add the specified files on the next commit annotate show changeset information by line for each file clone make a copy of an existing repository ...阅读全文

博文 2014-12-11 15:00:01 mr_mistletoe

Docker 核心技术与实现原理

Home Menu Docker 核心技术与实现原理 30 Nov 2017 docker namespaces cgroups unionfs aufs server Namespaces 进程 网络 libnetwork 挂载点 chroot
 CGroups UnionFS 存储驱动 AUFS 其他存储驱动 总结 Reference 提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了。作为在生产环境中广泛应用的产品,Docker 有着非常成熟的社区以及大量的使用者,代码库中的内容也变得非常庞大。 同样,由于项目的发展、功能的拆分以及各种奇怪的改名 PR,让我们再次理解 Docker 的的...阅读全文

博文 2017-12-02 11:31:02 draveness.me