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

1.Go语言开发环境搭建

打开https://golang.google.cn/dl/这个网站,选择对应系统的安装包 Mac系统: 1、首先复制/private/etc/hosts这个文件到桌面 2、打开命令行 执行如下命令cd ~、open .bash_profile 3、添加export GOROOT=/usr/local/go到export PATH=$PATH前面 4、然后将:$GOROOT/bin添加至export PATH=$PATH的末尾,完成如下图 5、在命令行执行go env命令,如果安装成功会出现下图 使用IntelliJ IDEA开发Go 1、下载并安装IntelliJ IDEA 2、打开Preferences,选择Plugins,点击Install JetBrains plugin...,在搜...阅读全文

window10安装mongodb

# window10安装mongodb ## 下载mongodb [mongoDB官网](http://www.mongodb.org/) [直接下载zip包](http://dl.mongodb.org/dl/win32/x86_64) ## 安装mongodb 1. 创建文件路径:D:\mongodb 2. 将刚刚下载的zip解压在mongodb,修改文件夹名为bin 3. 然后在D:\mongodb下新建文件夹data 4. 在data下建立文件夹db,log 5. 在log文件夹下创建日志文件MongoDB.log 6. 至此mongodb有一下文件: * D:\mongodb\bin * D:\mongodb\data * D:\mongodb\data\db * D:\mongo...阅读全文

GoFrame v1.11发布, Go基础开发框架

GF(Go Frame) goframe.org 是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设,包括常用的核心开发组件, 如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、 定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、并发安全容器等等。 并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等, 支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。 GF有着丰富的基础模块、完善的工具链、详尽的开发文档。开源近两年以来,GF得到越来越多小伙伴的肯定...阅读全文

博文 2020-01-14 15:34:18 johng

windows 下 goprotobuf 的安装与使用

1. 安装 在网上看了很多教程,都提到要安装 protoc 与 protoc-gen-go,但通过尝试之后并不能正确安装 protoc,一下记录能够顺利安装 protoc 与 protoc-gen-go 的方法。前提是已经默认安装好了 go。 安装 protoc 在该链接下下载protoc-3.3.0-win32.zip的包 将文件解压到某一文件夹 将解压出来的文件夹下的 /bin/protoc.exe 二进制的路径添加到环境变量中 安装 protoc-gen-go 在终端直接执行go get -u github.com/golang/protobuf/protoc-gen-go,可以在你的%GOPATH/bin路径下找到一个 protoc-gen-go.exe(这一步不能完成的话,考虑开个...阅读全文

博文 2017-09-27 07:34:45 胆大的大鼎

go学习笔记1-语言环境安装

mac开发机下go语言环境安装 homebrew安装 brew update && brew upgrade brew install mercurial brew install go 环境变量配置 为了让自己的程序编译之后在命令行任何地方能直接执行,再加入GOPATH下的bin $vim ~/.bash_profile #GOPATH export GOPATH=$HOME/Documents/go_workspace #GOPATH bin export PATH=$PATH:$GOPATH/bin $source .bash_profil...阅读全文

【升级版】cmdp 命令行和单文件快速提示、上传、下载、执行工具(远程同步)

## cmdp 命令行和单文件快捷提示、下载、执行工具(远程同步) ![demo](http://cloud.yurencloud.com/index.php/s/pCYZvM1AFJGtdeW/download) #### 功能 ##### 单行文本 (command,code,path,content...) - 上传记录命令,代码,路径,文本等,并可添加关键词,注释。 - 搜索自己或他人添加的命令,代码,路径,文本等。(支持全局模糊搜索,包括内容,关键词,注释) - 快速执行自己或他人添加的命令。 ##### 单个文件(.yaml.md,.txt,.sh,.js,.java,.py,.php,Vagrantfile,Dockerfile...) - 上传单个文件,并可添加关键词,注释。...阅读全文

博文 2018-10-10 17:27:49 mackwang

Jenkins 喊你参加 Hacktoberfest

本文首发于:Jenkins 中文社区 作者:Zhao Xiaojie Jenkins 喊你参加 Hacktoberfest 第六届黑客十月庆典 hacktoberfest 2019 Hacktoberfest 是一场为期一个月的开源软件庆祝活动,该活动由 DigitalOcean 和 DEV 共同组织。 Hacktoberfest 面向全球社区的每一位贡献者 至少须要向公开的 GitHub 仓库提交四个正式的 Pull Request 你可以在十月一日到三十日之前的任意时间注册 如何开始? 在 https://hacktoberfest.digitalocean.com/ 注册账号,并提交 PR 到 GitHub 的公共仓库。推荐提交高质量的 PR。 而作为 Jenkins 的用户,我们的首...阅读全文

博文 2019-11-01 09:33:42 aside section._1OhGeD

Golang学习笔记-flag

使用flag包可以用来解析命令行参数,flag.TypeVar()用于定义参数并绑定到指定变量,flag.Type()用于定义参数并绑定到返回的指针,定义时可以指定参数名称,默认值,使用说明。定义完参数后调用flag.Parse()进行解析,flag.PrintDefaults()用于打印所有已定义参数的默认值和使用说明。 命令行参数的语法有如下三种形式,其中前面的减号可以是两个,整数类型可以是十进制,十六进制,八进制,负数,bool类型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。如果bool类型的参数在命令行中使用了-flag xxx这种形式,其后的参数都会被当做non-flag参数。 -flag //只支持bool类型,例如-...阅读全文

博文 2019-12-15 01:32:44 土豆吞噬者

go语言学习初探(一)

go语言安装省略 首先创建一个hello.go 文件 package main import ( "fmt" ) func main() { fmt.Println('hello world!') }   package 表明go程序所属的包,同时每一个可执行的go程序,都必须有一个main的主入口包,同时必须有一个main的主函数;go语言的main函数不能带参数,也不可以定义返回值;  import 用来导入依赖的包;PS:导入的包如果未使用,编译器会报错;  func 定义函数;一个常规的函数包括以下部分:func 函数名(参数列表)(返回值列表){ 函数体 } GO语言命令行及参数 import ( "os" // 获取命令行参数需要的包 ) func main() { arg1 :...阅读全文

博文 2018-10-26 15:34:39 夜丿未央

Go语言简介及开发环境配置

一、Go语言简介及开发环境配置 1.Go Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。 Go 语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。 Go 代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。 它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。 特性: 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 2.搭建Go开发环境 在https://golang.google.cn/doc/install?download=go1.11.1.darwin-...阅读全文

Docker架构

Docker三大核心部件 Docker Image (镜像) 用来创建容器的模版,类似于OOP的类,镜像是只读的。 Docker Container (容器) 容器是独立运行的一个或一组应用,类似于OOP的对象; 完全使用沙箱机制,相互之间无任何接口,性能开销低; 容器在启动的时候创建一层可写层作为最上层。 Docker Repository (仓库) 仓库是集中存放镜像文件的场所,类似于git,包含多个镜像;分为公开仓库和私有仓库,最大的公开仓库是Docker Hub,国内仓库有Docker Pool等; 仓库注册服务器存放多个仓库,类似于GitHub这样的托管服务器。 Docker整体架构 Docker使用C/S架构模式,非常松耦合的架构。 Docker整体架构 一般运行流程为:用户在D...阅读全文

博文 2019-07-15 16:35:06 一揽疯华

golang 命令行参数解析 hflag

简介 hflag 是被设计用来替代标准的 flag 库,提供更强大更灵活的命令行解析功能,相比标准库,hflag 有如下特点 支持可选参数和必选参数 支持参数缩写 支持位置参数,位置参数可以出现在任意位置 支持 bool 参数简写 (-aux 和 -a -u -x 等效) 支持值参数缩写 (-p123456 和 -p 123456 等效) 更多类型的支持,支持 net.IP,time.Time,time.Duration,[]int, []string 的解析 更友好的用法帮助 提供一套更简洁的 api 完全兼容 flag 接口 用法 hflag 提供两套 api,一套完全兼容标准库的 flag 接口,另一套类似 python 的 argparse 先定义 flag,在使用时从 flag 中...阅读全文

Go 命令行解析 flag 包之快速上手

本篇文章是 Go 标准库 flag 包的快速上手篇。 概述 开发一个命令行工具,视复杂程度,一般要选择一个合适的命令行解析库,简单的需求用 Go 标准库 flag 就够了,flag 的使用非常简单。 当然,除了标准库 flag 外,也有不少的第三方库。比如,为了替代 flag 而生的 pflag,它支持 POSIX 风格的命令行解析。关于 POSIX 风格,本文末尾有个简单的介绍。 更多与命令行处理相关的库,可以打开 awesome-go#command-line 命令行一节查看,star 最多的是 spf13/cobra 和 urfave/cli ,与 flag / pflag 相比,它们更加复杂,是一个完全的全功能的框架。 有兴趣都可以了解下。 目标案例 回归主题,继续介绍 flag 吧...阅读全文

博文 2019-11-23 21:34:14 波罗学

紧急求问 udp问题

请教一个问题:我多个硬件设备通过udp跟服务器连接,他会隔1小时给服务器去上报数据 每个设备是有唯一的标识码IMEI 现在想通过服务器把数据发给指定设备 该怎么操作 之前的做法是 当设备连接服务器时就把UDPAddr的对象存到一个map里 key值为imei号 但是设备连着 第二次发报文后 ip是不会变的 端口变了 我想用WriteToUDP 就找不到接受对象...阅读全文

Golang | 使用 Cobra 构建命令行工具

文章首发于个人公众号:阿拉平平 最近折腾了下命令行库 Cobra,和大家分享下。本文演示环境为 CentOS 7.5,Golang 1.11。 文章目录: Cobra 介绍 1.1 概念 1.2 安装 1.3 初始化 1.4 代码分析 Cobra 实践 2.1 子命令 2.2 子命令嵌套 2.3 参数 2.4 标志 2.5 读取配置 2.6 编译运行 1. Cobra 介绍 Cobra 是一个用来创建命令行的 golang 库,同时也是一个用于生成应用和命令行文件的程序。 1.1 概念 Cobra 结构由三部分组成:命令 (commands)、参数 (arguments)、标志 (flags)。基本模型如下: APPNAME VERB NOUN --ADJECTIVE 或者 APPNAME ...阅读全文

博文 2019-08-19 02:32:45 Xpitz

Go 每日一库之 cobra

简介 cobra是一个命令行程序库,可以用来编写命令行程序。同时,它也提供了一个脚手架,用于生成基于 cobra 的应用程序框架。非常多知名的开源项目使用了 cobra 库构建命令行,如Kubernetes、Hugo、etcd等等等等。本文介绍 cobra 库的基本使用和一些有趣的特性。 关于作者spf13,这里多说两句。spf13 开源不少项目,而且他的开源项目质量都比较高。相信使用过 vim 的都知道spf13-vim,号称 vim 终极配置。可以一键配置,对于我这样的懒人来说绝对是福音。他的viper是一个完整的配置解决方案。完美支持 JSON/TOML/YAML/HCL/envfile/Java properties 配置文件等格式,还有一些比较实用的特性,如配置热更新、多查找目录、...阅读全文

博文 2020-01-18 17:32:42 darjun

Librarian: 帮你快速一键启动一个markdown站点

有时候我们写的文档,想要发布到公网或局域网上,分享给他人。当你不想花时间在纠结怎么搭建网站,下载各种依赖等等。那么 Librarian 也许可以帮到你。Librarian 可以一键启动一个 markdown 站点,你只需要写好 markdown 文档,以及设置目录yml。 github地址:https://github.com/GoAdminGroup/librarian 使用 下载Librarian 文件名 系统 系统架构 大小 librarian_darwin_x86_64_v0.0.2.zip macOS x86-64 11.1 MB librarian_linux_x86_64_v0.0.2.zip Linux x86-64 14.6 MB librarian_linux_armel...阅读全文

博文 2020-05-07 12:32:41 cg33

2.通过hello,world程序展示go的入门基础知识

一, 需求 开发一个hello.go程序,输出"hello, world" 二, go语言的注释 1. 注释的意义 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性;注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现. 编译器编译时会忽略注释文字.因为注释是给人看的. 2. 注释的分类 行注释: 在要注释的文字前边加上//, 此行内// 之后的文字都是注释文字. 块注释, 也叫多行注释 语法: /* 注释的 内容 */ 建议使用行注释,尽量不用块注释. 三, 代码以及详细注释展示 在项目根目录下新建hello.go文件,然后输入如下代码: // 每个go程序文件必须以.go结尾 package main // 表示本文件所在的包是main,go...阅读全文

博文 2020-01-22 13:32:42 瓦灯_c6f0

golang-区块链学习03永久存储

前言 前面两篇简单的实现了区块链的创建和工作量证明,但是都是在内存中进行的。实际的区块链应该是可以永久存储的,这样才有意义。下面开始做永久性区块链存储。 知识点 1、github项目引用 2、github.com/boltdb/bolt项目的简单使用 3、命令行使用 4、go常用的数据转换 golang-区块链永久性存储 1、创建区块链 方法:func NewBlockChain() *BlockChain // 创建区块链 // 返回一个区块链实例 func NewBlockChain() *BlockChain { var tip []byte // 打开存储区块链的文件blockchian.db、不存在则创建 db, err := bolt.Open(dbFile, 0600, nil...阅读全文

博文 2018-08-15 01:34:56 embedsky

mysql数据导出golang实现

mysql数据导出为excel文件,golang实现: 首先下载依赖到的三方库: Simple install the package to your $GOPATH with the go tool from shell: $ go get -u github.com/go-sql-driver/mysql 具体说明请看: 库地址 wiki说明 代码示例如下,用到了go的flag包的能力,传入命令行参数。具体看helpInfo: Usage of mysqldataexport: -port int the port for mysql,default:32085 -addr string the address for mysql,default:10.146.145.67 -user ...阅读全文

博文 2018-09-03 16:35:52 我的小碗汤

19年第36周:Go语言 包管理和Go工具

一、Go包管理简介 当你工作目录不在 $GOPATH/src 里面,并且工作目录或者工作目录的任意级父目录中含有 go.mod 文件,go 命令行工具会启用模块机制; Go mod能够,①将当前目录设置为模块。②在代码中导入不存在的包时,go命令行工具会帮你自动安装第三方包。 二、如何更好更方便的使用Go包 创建(增): go mod init 创建了一个新的模块,初始化 go.mod 文件并且生成相应的描述 go get xxx添加一个新的依赖项 go get xxx@v1.3.1显式地指定了 @v1.3.1,表示获取这个版本。没有则等价于@latest go build, go test, go run 和其它构建代码包的命令,会在需要的时候在 go.mod 文件中添加新的依赖项 删除(...阅读全文

博文 2019-10-07 19:32:43 aside section ._1OhGeD

Centos bash文件

关于$@,"$@",$*,"$*"区别 测试代码 #!/bin/bash for key in "$@" do echo '"$@"' $key done for key in $@ do echo '$@' $key done for key in "$*" do echo '"$*"' $key done for key in $* do echo '$*' $key done 测试用例一 ./test.sh java c python "golang c++" 测试用例一 测试用例二 ./test.sh java c python golang c++ 测试用例二 总结: $@会忽略传入参数里面的",并且会以以IFS(默认为空格)来划分字段 "$@"会把引号内容当成一个字段,忽略引号内...阅读全文

博文 2019-03-25 15:34:51 YuWenHaiBo

windows下protobuf for go环境搭建

先下载最新版的golang安装程序;设置好GOPATH,把%GOPATH%/bin 添加到环境变量;打开 https://github.com/protocolbuffers/protobuf/releases/下载如下的工具,解压,把protoc.exe路径添加到环境变量 下载对应系统版本 命令行执行go get github.com/golang/protobuf在%GOPATH%/src/github.com/golang/protobuf 目录下, go build go install 会在%GOPATH%/bin下生成protoc-gen-go.exe测试 编写 person.protosyntax = "proto2"; message Person { required in...阅读全文

博文 2019-05-08 19:35:07 loki528

Go语言 命令行解析(一)

命令行启动服务的方式,在后端使用非常广泛,如果有写过C语言的同学相信不难理解这一点!在C语言中,我们可以根据argc和argv来获取和解析命令行的参数,从而通过不同的参数调取不同的方法,同时也可以用Usage来打印帮助信息了。 那么开始今天的话题之前,我们回顾一下在C语言中是如何解析传递的参数的。 示例代码: #include #include // argc 为int型 // argv 为char指针数组,元素个数是argc,存放的是指向每一个参数的指针 int main(int argc, char *argv[]) { printf("命令行参数个数: %d\n", argc); printf("执行程序的名称:%s\n", argv[0]);...阅读全文

博文 2020-04-17 07:32:47 桂成林

cmdr 02 - 复刻一个 wget

cmdr 02 - Covered for wget 基于 cmdr v0.2.11 继 Getting Start 之后,我们来介绍如何用 cmdr 复刻一个 wget 的命令行界面,并具体介绍 Command 和 Flag 的各个细节以及 cmdr 能够做到哪些别人做不到的事。 此外,我们也声明一下,Getting Start ('另一个go命令行参数处理器 - cmdr') 的内容有了一些轻微的变化,因为这两周来,我们已经不停地增加了很多特性来完善 cmdr 的能力,期间有一些不恰当的策略、衍生的命名、采用的算法都有所调整,虽然尽力避免变化,但它是不可免的。我们是期望给你的编程界面越来越完美,让整个编写的流程流畅化,自然化。 wget 的参数 wget 本身是一个 GNU 应用程序。它...阅读全文

博文 2019-05-30 21:34:38 hedzr

golang 中获取字符串个数

golang 中获取字符串个数 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 // string is the set of all strings of 8-bit bytes, conventionally but not // necessarily representing UTF-8-encoded text. A string may be empty, but // not nil. Values of string type are immutable. 举个例子,”Hello, 世界“(因为,对比所以用了中文) s := "Hello, 世界" fmt.Pr...阅读全文

博文 2019-08-14 10:32:46 zrds2e

如何在Mac搭建golang环境

最近学一下go语言,需要在Mac上搭建go的开发环境。 我比较喜欢用zsh命令行工具,我就从装zsh说起吧 $ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 启用zsh: $zsh 安装go的话,去官网看就行了,很详细。https://studygolang.com/dl 安装完成后,添加go的PATH环境变量 指定开发文件,设置GOPATH 编辑.zshrc vim ~/.zshrc 主要内容是这样的 export GOPATH=~/desktop/gopath export PATH=/usr/local/sbin:/usr/local/bin:/us...阅读全文

博文 2018-11-10 18:34:44 Eternal丶星空

LollipopGo开源游戏服务器框架--数据库错误问题

游戏服务器运行了几天,报错: can't create more than max_prepared_stmt_count statements (current value: 163 mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (current value: 16382) 。 给出的回复如下: max_prepared_stmt_count参数限制了同一时间在mysqld上所有session中prepared 语句的上限。 它的取值范围为“0 - 1048576”,默认为16382。 mysql对于超出max_prepared_stmt_cou...阅读全文

博文 2019-01-18 15:34:48 Golang语言社区

cmdr 04 - 简单微服务 (daemon)

cmdr 04 - simple micro-service based on cmdr v0.2.21 My ado is too much. 所以这次直入主题,谢绝吐槽。不知道 cmdr 干嘛用的,无妨看看前文 另一个go命令行参数处理器 - cmdr cmdr 02 - 复刻一个 wget cmdr 03 - 用流式接口定义命令行参数处理选项 那么,golang适合做后端开发,无论是 gRPC 还是 RESTful 都是它的强项。 一旦我们想要开发一个微服务时,抛开核心逻辑不谈,也不论 DevOps 方面究竟是 K8s,还是 Docker,还是裸机,总要面对一个启动、调试、测试的日常问题。 cmdr 除了提供命令行参数的解释能力之外,也额外提供了一个daemon插件,它可以帮助你简化日...阅读全文

k3log基于uber zap实现开箱即可,还融合go-spew调度利器

### k3log 开箱即用 ``` //默认采用key-value, json形式,命令行输出 k3log.Info("name", "k3log") //2019-02-18T15:11:23.370+0800 INFO main.go:7 {"name": "k3log"} //开箱即用的NewDevelopment, 日志输入到文件,并实现异步刷新文件 k3log.NewDevelopment("开发模式", "dev.log") defer k3log.Sync() k3log.Dump("name", "k3log日志") //手动配置 k3log.SetLogger(conf.WithLogType("json"), //打印json格式 conf.WithProjectNam...阅读全文

兄弟连区块链培训之Go语言学习获取命令行参数

“区块链+时代无疑会是下一个风口,然而现在的区块链行业专业型人才正在遭遇瓶颈”兄弟连教育区块链学院院长尹成表示,“希望能通过兄弟连教育区块链培训学院为社会为企业培养并输送更多优质的区块链高精尖型技术人才。 部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用flag库和os库。 1.flag库的使用 Go语言标准库提供了用于快迅解析命令行参数的flag包,大致的使用步骤如下: a.通过flag.String(),flag.Bool(),flag.Int()等方式来定义命令行中需要使用的参数。 b.在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。 c.获取flag.String(),flag.Bool(),fla...阅读全文

博文 2018-08-15 14:35:23 兄弟连区块链培训

【Go】go get 自动代理

文链接:https://blog.thinkeridea.com/201903/go/go_get_proxy.html 最近发现技术交流群里很多人在询问 go get 墙外包失败的问题,大家给了很多解决方案: 从 Github 的代码库 clone 设置 GOPROXY 环境变量配置代理, 例如:GOPROXY=https://goproxy.io 配置命令行代理,https_proxy 环境变量 使用 go mod replace 使用 Gopm 类似的工具 …… Go 的社区很活跃,国内 gopher 对 Go 的热情不会因为墙的存在而减少,从社区想到这么多翻墙方案就能看出来了。 上面的方法都是可行的,但是总有一些不尽人意,社区也一直在找更好的方法,我一直使用自动代理的方式获取墙外的包...阅读全文

博文 2019-03-22 08:34:38 thinkeridea

[Geth源码]好用到失眠的命令行应用框架cli

Tag: 以太坊源码 Geth cli Go Golang command line source code 近期开始看以太坊源码,然后发现了这个神奇的,好用到失眠的命令行应用框架cli,因此推荐给大家。 Geth源码 Geth源码地址是 https://github.com/ethereum/go-ethereum.git,下载编译后,产出的geth等位于build/bin下 下载 mkdir -p $GOPATH/src/github.com/ethereum/ cd $GOPATH/src/github.com/ethereum/ git clone https://github.com/ethereum/go-ethereum.git 或者 go get github.com/eth...阅读全文

博文 2018-12-20 13:34:45 ytxing

最简单的教程:在Ubuntu操作系统里安装Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 今天这篇文章咱们就来将Docker安装到Ubuntu上。 1. 由于Ubuntu里apt官方库里的docker版本可能比较低,因此先用下面的命令行卸载旧版本(如果有的话) sudo apt-get remove docker docker-engine docker-ce docker.io 2. 更新apt包索引: sudo apt-get update 3. 执行下列命令行,使apt可以通过HTTPS协议去使用存储库: sudo apt-get install -y apt-tran...阅读全文

博文 2018-10-27 14:34:38 JerryWangSAP

DockOne技术分享(四):AppC和Docker的对比

【编者的话】 现在一说到“容器”,几乎所有人首先想到的就是Docker。Docker作为目前最主流的容器标准,掩盖了许多前辈和后续者的光辉。事实上,Docker既不是第一个容器类产品(OpenVZ、Lxc等都远远早于它),也不会是最后一个。今天我们来聊一个最近有点火的新容器标准:AppC。 AppC是 CoreOS 公司在2014年12月发起的社区项目,旨在设计一种新式的跨平台容器在镜像格式、运行方式和服务发现机制等方面的标准。 从官方的表态说,这个项目最初诞生的原因是,主流容器工具 Docker 正在从一个单纯的容器工具成为自成一体的生态圈。而 Docker 的中心式管理方式(由每个主机上的 Docker -d 后台进程统一控制)对于 Systemd 以及第三方的任务编排工具并不友好(具体...阅读全文

# golang JWT的简单使用

golang JWT的简单使用 JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 JWT和session有所不同,session需要在服务器端生成,服务器保存session,只返回给客户端sessionid,客户端下次请求时带上sessionid即可。因为session是储存在服务器中,有多台服务器时会出现一些麻烦,需要同步多台主机的信息,不然会出现在请求A服务器时能获取信息,但是请求B服务器身份信息无法通过。JWT能很好的解决这个问题,服务器端不用保存jwt,只需要保存加密用的secret,在用户登录时将jwt加密生成并发送给客户端,由客户端存储,以后客户端的请求带上,由...阅读全文

博文 2019-02-05 17:34:41 w85278161

golang快速入门[3]-go语言helloworld

golang快速入门[3]-go语言helloworld在之前,我们介绍了如何在windows、macos以及linux平台构建go语言的开发环境[golang快速入门[2.1]-go语言开发环境配置-windows]()[golang快速入门[2.2]-go语言开发环境配置-macOS]()[golang快速入门[2.3]-go语言开发环境配置-linux]()本文将介绍如何书写、编译、并运行第一个go语言程序同时详细介绍其内部机制书写第一个go语言程序首先我们可以在任意位置新建一个文件,命名为main.gogo源文件以.go作为后缀,命名时建议统一为小写英文字母用任意的文本编辑器(vim,notepade,emacs…)编辑文件,书写如下代码package main import "fm...阅读全文

博文 2020-02-09 00:33:10 jonson_jackson

DockOne微信分享( 一零二):基于容器的日志管理实践

【编者的话】业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集、存储以及告警等方面的实践经验。 2013年以来Docker迅速火了起来,它的理念带来了非常大的便利性,不过实际应用中会发现还有监控、日志、网络等问题尚待解决,本文会结合实例分享数人云做容器日志系统的经验。 基于ELK的日志管理系统架构日志收集是大数据的基础,业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行分析处理;高可用性,高可靠性以及可扩展性是日志收集系统的必备要素。 ELK是目前较流行的日志一体化解决方案,提供日志收集、处理、存储、搜索、展示等功能。容器标...阅读全文

博文 2017-06-25 16:25:28 Dataman数人科技

Speedle 简介二:策略即改即生效, 无需重启

Speedle 简介二:策略即改即生效, 无需重启 # Speedle 策略库的存储 目前, Speedle支持两种存储方式,用户也可扩展以支持其他存储方式 * 文件 * ETCD # 策略的修改 * 命令行/spctl * RestFul API # 如何使修改的策略生效 无论文件还是ETCD, Speedle运行时(ADS)都会Watch其更改,依据更改自动更新运行时策略库,更改几乎是即刻生效, 无需额外操作...阅读全文

博文 2019-04-15 16:19:55 speedle_fan

Golang 命令行 os.Args 和 flag包

参考Go语言-命令行参数(os.Args, flag包) 大部分Go程序都是没有UI的,运行在纯命令行的模式下,该干什么全靠运行参数。 这里介绍下Go语言命令行程序和他们的参数。 一、os.args 程序获取运行他时给出的参数,可以通过os包来实现。先看代码: package main import ( "fmt" "os" "strconv" ) func main () { for idx, args := range os.Args { fmt.Println("参数" + strconv.Itoa(idx) + ":", args) } } 运行起来得到的如下: $go run main.go 1 3 -X ? 参数0: /tmp/go-build116558042/command-...阅读全文

博文 2019-03-22 14:34:52 懒皮

go语言20小时从入门到精通(六、工程管理)

在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。 Go命令行工具的革命性之处在于彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。针对只有一个源文件的情况讨论工程管理看起来会比较多余,因为这可以直接用go run和go build搞定。下面我们将用一个更接近现实的虚拟项目来展示Go语言的基本工程管理方法。 6.1 工作区 6.1.1 工作区介绍 Go代码必须放在工作区中。工作区其实就...阅读全文

博文 2019-09-18 01:34:43 后端小黑胖

go-源码阅读-准备

golang语言写起来很方便,但是如果想把代码写的更好,例如规避gc潜在的问题,节约内存,提升运行性能,都需要对虚拟机做一些了解。这一系列的文章是我再阅读雨痕的《GO语言学习笔记》,记录一些信息。环境go 1.5.1 amd64 ubuntu14.04.3 LTS gdb 7.7.1引导程序启动不是使用main.main函数,之前有命令行处理,运行时初始化工作之后,才会进入用户逻辑。编写一个最简单的helloworld的文件。使用gdb来调试。作者建议平时多使用编译命令行来处理,减少对于IDE的依赖,有利于自己记住这些编译选项。编译的时候使用-gcflags "-N-1" -o test 。使用gdb加载test使用(gdb)info files检查本地可执行文件入口点,直接对这个地址加断点...阅读全文

博文 2020-01-18 15:32:42 阿彪2020

golang 标准命令行解析库 flag

flag 库实现了对命令行参数的解析 基本用法 package main import ( "fmt" "flag" ) func main() { b := flag.Bool("b", false, "bool flag") s := flag.String("s", "hello golang", "string flag") flag.Parse() fmt.Println("b is", *b) fmt.Println("s is", *s) } 上面代码指定了两个选项: bool 类型的 b 选项,默认值为 false,帮助信息 bool flag string 类型的 s 选项,默认值为 hello golang,帮助信息 string flag 执行 go run main....阅读全文

06-Go语言命令行参数

GO命令行操作指令 标准go语言项目文件目录格式 项目文件夹就是GOPATH指向的文件夹 src文件夹是专门用于存放源码文件的 main文件夹是专门用于存储package main包相关源码文件的 其它文件夹是专门用于存储除package main包以外源码文件的 bin文件夹是专门用于存储编译之后的可执行程序的 pkg文件夹是专门用于存储编译之后的.a文件的 |---项目文件夹 -----------|--------src文件夹 -----------------------------|--------main文件夹 -----------------------------|--------其它文件夹 -----------|--------bin文件夹 -----------|--...阅读全文

博文 2018-10-15 19:34:39 月色下的阳光

【低门槛Golang教学】一、断言

一、前言 由于掌握的开发技能多种多样(Node、Lua、Golang、PHP、C#、Python),导致公司基础平台项目一直难以开展。 终于再三取舍之下选择了 'Golang' 这个新秀语种,因为 'Golang' 非常契合本人的简洁风格,所以日后除了'Laravel' 相关的教程以外,'Golang' 的教学将会成为最主要输出。 二、说明 本文的主题是 接口类型断言 (assert),阅读后文的必要前提是你已经对 'Golang' 有了一定了解。 后文同样假设你已经搭建好了 'Golang' 的开发环境。 二、开始 接口类型断言 (assert) 的基本语法如下: # x:任意一个interface # y:断言结果类型名称 # z:用y类型断言x接口后结果 z := x.(y) 显然,上...阅读全文

博文 2019-03-16 18:34:41 我爱余倩

使用Visual Studio Code调试Golang工程

准备VSCode 在官网下载最新版的VSCode: Visual Studio Code - Code Editing. Redefined 安装Golang插件 打开扩展面板 VSCode->查看->扩展 找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go language support for Visual Studio Code的插件, 点击安装 重启编辑器 配置启动项 打开调试面板 VSCode->查看->调试 添加调试目标 在"没有调试"的下拉框中点击"添加配置.." 添加目标调试配置 { "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "la...阅读全文

博文 2019-10-18 01:32:48 aside section ._1OhGeD

golang快速入门[3]-go语言helloworld

golang快速入门[3]-go语言helloworld在之前,我们介绍了如何在windows、macos以及linux平台构建go语言的开发环境[golang快速入门[2.1]-go语言开发环境配置-windows]()[golang快速入门[2.2]-go语言开发环境配置-macOS]()[golang快速入门[2.3]-go语言开发环境配置-linux]()本文将介绍如何书写、编译、并运行第一个go语言程序同时详细介绍其内部机制书写第一个go语言程序首先我们可以在任意位置新建一个文件,命名为main.gogo源文件以.go作为后缀,命名时建议统一为小写英文字母用任意的文本编辑器(vim,notepade,emacs…)编辑文件,书写如下代码package main import "fm...阅读全文

博文 2020-02-09 00:33:10 jonson_jackson

Go语言库系列之flag

背景 终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗? $ flag girl -h Usage of girl: -height int 身高 (default 140) $ flag girl --height 170 恭喜你获得了身高 170 的女朋友 极速上手 整个实现非常简单,只需要5个步骤 第一步,引库 import "flag" 第二步,定义变量 定义该变量的作用是存储命令行参数传来的值 var height int 第三步,配置命令信息 在main函数或init函数中加入 flag.IntVar(&height, "height", 140, "身高") 第一个参数是定义的变量引用 第二个参数:命令的名称 第三个参数:命令参数的默认值 第...阅读全文

博文 2020-04-02 00:32:44 平也

golang flag 命令行参数解析

基础例子 // 注册参数 port := flag.Int("p", 8080, "server Port") // 解析参数, 模块方法将使用 os.Args[1:] 做参数解析 flag.Parse() fmt.Printf("server port:%d", port) 基础类型 Flag 单条flag信息 type Flag struct { Name string // flag在命令行中的名字 Usage string // 帮助信息 Value Value // 要设置的值 DefValue string // 默认值(文本格式),用于使用信息 } FlagSet flag 设置对象 type FlagSet struct { // Usage函数在解析flag出现错误时会被调...阅读全文

博文 2019-07-30 03:32:40 直立猿