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

golang file 操作笔记

1、文件拷贝: package main import ( "fmt" "io" "os" "strings" ) func main() { list := os.Args if len(list) != 3 { fmt.Println("输入给谁错误,格式为:xxx.go 源文件名 目标文件名") return } fmt.Println("源文件路径:", list[1], " ", "目标文件路径为:", list[2]) fmt.Println("请确认按Yy继续:") str := "" fmt.Scanln(&str) if strings.ToLower(str) == "y" { w, err := CopyFile(list[1], list[2]) if err != ...阅读全文

博文 2019-07-25 17:10:06 xingzhehxiang

Caddy 源码全解析

Caddy 源码全解析 Preface Caddy 是 Go 语言构建的轻量配置化服务器。同时代码结构由于 Go 语言的轻便简洁,比较易读,推荐学弟学妹学习 Go 的时候也去查看追一下它的源码。不用怕相信这篇文章能给你很大的信心。 可能会有点多,建议多看几遍。 Overview-CaddyMain 当然,建议看这篇文章的时候,查看上手一下 Caddy 的实际配置操作应用,对理解源码会有好处,如果没有操作过也没有关系。 Package 这是 caddy 包的结构 首先我们从一切的开始讲起,即平时我们程序运行的 main.go 函数。这是 上图 caddy 文件夹下的目录结构。在 caddy 文件夹中的 main 函数启动 caddy 服务器。实际运行的是 run.go 中的文件,这是方便测试使...阅读全文

博文 2019-08-05 00:02:38 yhyddr

golang 小问题

1. package main import ( "fmt" "reflect" ) const ( cmask = 127 ) func main() { var u uint8 u = 22 r1 := u + cmask fmt.Println(r1) fmt.Println(reflect.TypeOf(cmask)) // int //------------------ mask := 0x7f //r2 := u + mask //fmt.Println(r2) fmt.Println(reflect.TypeOf(mask)) // int } cmask 和 mask 反射出来的类型都是 int。为什么 cmask 可以和u进行操作,而 mask 不行 ??? 换人话来说就...阅读全文

博文 2017-09-26 16:30:01 jay--zhang

Delayer 基于 Redis 的延迟消息队列中间件

Delayer 基于 Redis 的延迟消息队列中间件,采用 Golang 开发。 参考 有赞延迟队列设计 中的部分设计,优化后实现。 项目链接:https://github.com/mixstart/d... ,有需要的朋友加 Star 哦。 应用场景 订单超过30分钟未支付,自动关闭订单。 订单完成后, 如果用户一直未评价, 5天后自动好评。 会员到期前3天,短信通知续费。 其他针对某个任务,延迟执行功能的需求。 实现原理 客户端:push 任务时,任务数据存入 hash 中,jobID 存入 zset 中,pop 时从指定的 list 中取准备好的数据。 服务器端:定时使用连接池并行将 zset 中到期的 jobID 放入对应的 list 中,供客户端 pop 取出。 核心特征 使用 ...阅读全文

博文 2018-10-23 20:34:57 細変

关于docker自动化部署的总结与反思

这次线上部署躺了一些坑,于是记录一下。 内容涉及: python自动化部署(fabric) docker基本命令 docker构建镜像 docker运行容器 golang打包编译 rabbitmq&redis安装和配置 Makefile命令编写 1. 使用Makefile打包golang项目 .PHONY: build CUR_ROOT = `pwd` build: @echo "remove old output..." @rm -rf bin @echo "build..." @GOPATH=${CUR_ROOT}:$$GOPATH; \ GOOS=linux GOARCH=amd64 \ go build -a -o bin/ @echo "buil...阅读全文

博文 2019-07-20 08:32:43 陨石坠灭

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# btcpool矿池-核心机制总结及优化思考## 核心机制总结### ①gbtmaker* 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt* 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka* Gbt消息大小约2M,含交易列表### ②jobmaker* 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_...阅读全文

博文 2018-10-16 18:34:41 兄弟连区块链培训

造轮子-golang日志系统

介绍 golang的log包已经提供了比较完善的功能,我们只是做了一些简单的封装 主要就是构造了Writer,这个writer每次调用Write()的时候,执行了两步 第一步就是在终端输出,其实就是写到终端里 第二部就是写入到我们的日志文件。写入到日志文件的时候,有个大小判断,超过预定的大小后,就会进行分割和压缩 golang原生日志系统 log包简单实用 func main() { log.Println("this is my first log") } 进入到log包中,看Println()函数 // Println calls Output to print to the standard logger. // Arguments are handled in the manner ...阅读全文

博文 2019-01-10 16:34:41 豆瓣奶茶

2.go命令源文件分析

回顾 上一节我们成功安装了golang,并设置好了环境变量,能使用go run来测试源码 这里我们介绍下go语言的源码: 以.go结尾的文件认为是go语言的源文件,go语言的源文件可以分为三类: 命令源文件: package声明为main 有且只有一个main函数,会编译成可执行文件 库源文件: package不能声明为main且不能包含main函数,会编译成库文件 测试源文件:以_test.go结尾的文件,主要用来对其他源码的测试。 每个源文件以包的声明语句开始,说明该源文件是属于哪个包。 import 导入依赖的包,少导入或者多导入都会导致报错。 这里我们导入一个标准库:fmt 实现了格式化的IO操作,我们可以用它输出我们想要的东西到命令行 go语言中文网有一个标准库的中文文档:http...阅读全文

使用 Go 记录日志

简介 定义配置 读取日志相关的配置 总结 当前部分的代码 简介 在上一节内容中, 我们使用 viper 读取了配置文件. 本节将使用 logrus 记录日志. logrus 是一个结构化的日志记录器, 和标准库中的 logger 具有完全兼容的 API. 定义配置 首先, 更新一下配置文件, 加入以下参数: log: use_json: true logger_level: debug logger_file: log/server.log gin_file: log/gin.log gin_console: true logrus 支持使用 JSON 格式记录日志: logrus.SetFormatter(&log.JSONFormatter{}) 第二三参数设置了日志的记录级别和日志保存...阅读全文

博文 2019-09-16 20:02:37 帅气猫咪

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考

btcpool矿池-核心机制总结及优化思考 核心机制总结 ①gbtmaker 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka Gbt消息大小约2M,含交易列表 ②jobmaker 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_TOPIC_NMC_AUXBLOCK,以支持混合挖矿 接收的Gbt消息,如果与本地时间延迟超过60秒将丢弃,如果延迟超过3秒将打印log 可用的Gbt消息,将以gbtTime+isEmptyBlock+height来构造key写入本地Map,另gbtHash也会写入本地队列...阅读全文

博文 2018-10-16 15:34:50 兄弟连区块链培训

几种部署Goku API Gateway的方式,最快一分钟可使用上网关

本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文。 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的运行在企业系统服务边界上的微服务网关。当您构建网站、App、IOT甚至是开放API交易时,Goku API Gateway 能够帮你将内部系统中重复的组件抽取出来并放置在Goku上运行,如进行用户授权、访问控制、防火墙、数据转换等;并且Goku 提供服务编排的功能,让企业可以快速从各类服务上获取需要的数据,对业务实现快速响应。 Goku API Gateway 的社区版本(CE)拥有完善的使用指南和二次开发指南,代码使用纯 Go 语言编写,拥有良好的性能和扩...阅读全文

go log自定义日志记录

golang 自定义日志记录 var ( logFileName = flag.String("log", "server.log", "Log file name") ) func logcc() { runtime.GOMAXPROCS(runtime.NumCPU() * 2) flag.Parse() //set logfile Stdout logFile, logErr := os.OpenFile(*logFileName, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666) if logErr != nil { fmt.Println("Fail to find", *logFile, "cServer start Failed") os.Exi...阅读全文

博文 2020-06-02 17:32:56 hw_owen

go 格式化

1. 对已有代码format for file infind -L *.go .; ``do gofmt -w $file; done 2. 添加hook,在提交代码之前,提醒代码格式化问题 将https://golang.org/misc/git/pre-commit保存成文件, 文件名pre-commit, 放置目录 .git/hooks, 并是的文件pre-common文件具有可执行权限即可。 3. 添加hook到全局的git hook里面 此方法会覆盖项目的hook目录,所以设置去请清晰设置原理,详情见:https://git-scm.com/docs/git-config.html#git-config-corehooksPath git config --global core....阅读全文

博文 2019-07-23 15:35:18 阳丶小光

求教:关于 Package 的定义与引用

我用 GoLand 写了个小的 [web app 的 demo (点击查看代码)](https://gitee.com/g8up/go-uploader/tree/2b579f5457b4abb1644c9d0ab355636404ce8af0/) 只含有 main.go 和 router.go,都写了 `package main` main 中引用 router 里定义的 handler 函数(函数名保持大写)。 在 GoLand 中运行时,提示那些 handler 函数找不到。 ``` # command-line-arguments .\main.go:32:37: undefined: Upload .\main.go:33:35: undefined: Show ...阅读全文

【请教】源码编译安装golang问题,Solaris5.10和HPUXB.11.31运行./all.bash后报错“function 'xworkdir':implicit declaration of function 'mkdtemp'

如题,请大神们帮忙看看能不能通过修改编译脚本(Makefile)或者添加头文件或者修改少量代码通过编译 在HPUX下: hp4640 35: ./all.bash # Building C bootstrap tool. cmd/dist cc1: warnings being treated as errors cmd/dist/unix.c: In function 'xworkdir': cmd/dist/unix.c:474: warning: implicit declaration of function 'mkdtemp' cmd/dist/unix.c:474: warning: comparison between pointer an...阅读全文

Visual Code+Golang手工安装必要依赖

微软发布的visual code studio是款简单易用的轻量级IDE,支持众多语言,包括Go语言。通过extensions:install extensions安装了Go语言支持插件后,还需要安装gopls、gocode等依赖,因为golang.org无法直接访问,所以有时需要通过GitHub下载后手工安装依赖。简单如下:#安装guru和gorename git clone https://github.com/golang/tools.git "%GOPATH%\src\golang.org\x\tools" go install golang.org/x/tools/cmd/guru go install golang.org/x/tools/cmd/gorename #安装goli...阅读全文

博文 2020-02-07 07:32:41 ponder4

关于文本读取的问题

func readMaze(fileName string) [][]int{ file, err := os.Open(fileName) if err != nil{ panic(err) } var row, col int fmt.Fscanf(file, "%d %d", &row, &col) maze := make([][]int, row) for i := range maze { maze[i] = make([]int, col) for j := range maze[i] { fmt.Fscanf(file, "%d", &maze[i][j]) } } return maze } func main() { maze := readMaze("src/maze/...阅读全文

博文 2018-09-17 17:34:59 Mosan

开发完成的golang项目如何上线部署到Linu服务器上?

方法二:本地编译 cmd控制台到main.go文件目录下 set GOARCH=amd64 set GOOS=linux go build main.go 会生成一个没有后缀的二进制文件 main 将该文件放入linux系统某个文件夹下 赋予权限 chmod 777 main 最后执行 ./main 就行了。 windows服务器 先本地编译 go build main.go 编译后会在同级目录生成可执行文件 main.exe linux服务器 方法一:服务器上去编译 安装go,配置GOPATH 1,把服务器上配置成本地一样的环境 2,包括项目里面所依赖的包 3,项目源码拷贝到与服务器,服务器上编译 go build main.go 编译后会在同级目录生成可执行文件 main 最后执行 ./...阅读全文

博文 2019-10-15 11:32:58 aside section ._1OhGeD

Golang系列之os 相关操作

记录相关os的操作函数 1. golang之os 判断文件夹是否存在 // 判断所给路径文件/文件夹是否存在 func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } 2. golang之os 判断路径是否为文件夹 // 判断所给路径是否为文件夹 func IsDir(path string) bool { s, err := os.Stat(path) if err != nil { return false } return s.IsDir() ...阅读全文

基于Jenkins的项目持续交付实践分享

摘要部门项目由于需要管理多个服务,同时服务依赖的基础环境较为复杂,导致项目工程管理起来比较负责。所以采用devops的方式进行工程项目管理,包括代码构建、自动化测试、镜像打包、部署等功能,实现自动化运维管理。持续部署实践主要涉及以下几个部分:项目管理:分为代码管理(包含分支管理),镜像管理(含版本管理),配置管理(包含部署服务器、参数等管理)DevOps:主要通过工具实现从集成、测试、构建到部署的流程,其工作流程如下:1、持续集成,基于gitlab实现代码管理,包括代码分支开发管理、代码审计管理、代码构建等功能;2、持续测试,基于jenkins、junit实现自动化测试;3、持续构建,基于docker、harbor实现docker镜像的封装和docker镜像的管理;4、持续部署,基于配置管理...阅读全文

博文 2019-10-29 10:32:50 aside section._1OhGeD

几种部署Goku API Gateway的方式,最快一分钟可使用上网关

本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文。 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的运行在企业系统服务边界上的微服务网关。当您构建网站、App、IOT甚至是开放API交易时,Goku API Gateway 能够帮你将内部系统中重复的组件抽取出来并放置在Goku上运行,如进行用户授权、访问控制、防火墙、数据转换等;并且Goku 提供服务编排的功能,让企业可以快速从各类服务上获取需要的数据,对业务实现快速响应。 Goku API Gateway 的社区版本(CE)拥有完善的使用指南和二次开发指南,代码使用纯 Go 语言编写,拥有良好的性能和扩...阅读全文

Bytom 储蓄分红 DAPP 开发指南

储蓄分红DAPP 储蓄分红合约简介 储蓄分红合约指的是项目方发起了一个锁仓计划(即储蓄合约和取现合约),用户可以在准备期自由选择锁仓金额参与该计划,等到锁仓到期之后还可以自动获取锁仓的利润。用户可以在准备期内(dueBlockHeight)参与储蓄,按照合约规定可以 1:1 获取同等数量的储蓄票据资产,同时用户锁仓的资产(deposit)将放到取现合约中,并且项目方是无法动用的,等到锁仓期限(expireBlockHeight)一到,用户便可以调用取现合约将自己储蓄的资产连本待息一同取出来。其示意图如下: 从上图中可以看出,项目方发布了一个利润为20%的锁仓项目,其中储蓄合约FixedLimitCollect锁定了1000个票据资产(bill),同时项目方将200个储蓄资产(deposit)...阅读全文

博文 2019-07-18 10:32:44 比原链Bytom

Go 每日一库之 go-ini

简介 ini 是 Windows 上常用的配置文件格式。MySQL 的 Windows 版就是使用 ini 格式存储配置的。go-ini是 Go 语言中用于操作 ini 文件的第三方库。 本文介绍go-ini库的使用。 快速使用 go-ini 是第三方库,使用前需要安装: $ go get gopkg.in/ini.v1 也可以使用 GitHub 上的仓库: $ go get github.com/go-ini/ini 首先,创建一个my.ini配置文件: app_name = awesome web # possible values: DEBUG, INFO, WARNING, ERROR, FATAL log_level = DEBUG [mysql] ip = 127.0.0.1 p...阅读全文

博文 2020-01-16 07:32:38 darjun

redis配置下详解

redis配置下详解 ``` # 如果想要使用到配置文件,Redis服务必须以配置文件的路径作为第一个参数启动。如: ./redis-server /path/to/redis.conf # 单位说明:当需要指定内存大小时,可能会用到不同的单位,如1k、5GB、4M等,这里给出其单位含义: # 指定单位是大小写不敏感。如1GB、1gB、1Gb是一样的 # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes ##############################...阅读全文

博文 2019-12-25 09:40:46 bytemode

问个游览器缓存问题

~~~ 用户中心URL都是验证session存在不 ,不存在返回登录页面 如果此时程序重启了,当再次访问URL,URL就会自动退出【此时游览器也记录了缓存】,当重新登录 这个页面始终无法访问,必须清理本地缓存才行,, 这个如何解决不让进游览器缓存? 是不是要设置头文件之类的 ~~...阅读全文

[喵咪Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定#

前言## 哈喽大家好啊,好久不见啊(都快一个月了),要问为什么没有更新博客呢只应为最近在录制PhalApi的视频教程时间比较少,作为弥补那么为大家带来一点干货Supervisor,话不多说那么就开始今天的分享把 附上: 喵了个咪的博客:w-blog.cn Supervisor官网地址:https://pypi.python.org/pypi/supervisor PhalApi官网地址:http://www.phalapi.net/ 开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release 1. 我们遇到了什么问题## 了解python的童鞋应该听说过Supervisor,Supervisor是通过python实现的一个进程管...阅读全文

博文 2020-01-29 19:32:38 文振熙

兄弟连区块链教程btcpool矿池源码分析BlockMaker模块解析

btcpool矿池-BlockMaker模块解析 核心机制总结 blkmaker可以连多个bitcoind节点 blkmaker监听和接收4类消息:RAWGBT、STRATUM_JOB、SOLVED_SHARE和NMC_SOLVED_SHARE 监听RAWGBT目的为获取gbtHash/交易列表,用于构建Block,gbtHash和vtxs写入rawGbtMap_ * rawGbtMap_保存最近100条gbtHash/vtxs对 监听STRATUM_JOB目的为获取jobId_/gbtHash,jobId_和gbtHash写入jobId2GbtHash_ * jobId2GbtHash_保存最近120条jobId_/gbtHash对 监听SOLVED_SHARE目的为获取BlockHead...阅读全文

博文 2018-10-16 17:34:39 兄弟连区块链培训

golang构建web服务入门教程-配置管理(三)

上一节我们通过几行简单的代码生成了快速创建了一个web服务,今天我们就来使用配置文件来进一步学习与使用 Orange 框架; 接着上一节的代码继续往下修改: 在 $GOPATH/src目录下创建一个demo文件夹,并在文件夹内创建 main.go 文件,然后再创建一个 config.toml 文件; ***config.toml文件内容*** ```php [app] name = "orange" key = "be5356716b937d94eae948f102a2074f" httpAddr = "0.0.0.0" httpPort = 8088 ``` ***main.go文件内容*** ```php package main import ( "gitee.com/zhucheer...阅读全文

博文 2020-05-06 23:25:15 zhucheer

基于阿里云Serverless架构下函数计算的最新应用场景详解(一)

摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些指导意义。 **点此查看原文:http://click.aliyun.com/m/40926/** Serverless概念是近年来特别火的一个技术概念。基于这种架构能构建出很多应用场景,适用于各行各业。只要是对轻计算、高弹性、无状态等场景有诉求,您都可以通过本文来熟悉一些基础概念,并从相关场景中获得启发。 关于Serverless架构的前世今生,网上比较流行一张描述人类形态发展史的网图。从爬行猿人到蹲着的类猿人,再到直立人类,最后到使用工具的新兴人类。从四只...阅读全文

golang常用代码片段--定制化config组件

使用ini.v1配合fsnotify实现: 1 解析ini配置文件 2 监听配置文件的变化热更新配置 import ( "github.com/fsnotify/fsnotify" "github.com/sirupsen/logrus" "gopkg.in/ini.v1" "io/ioutil" ) var iniConf *ini.File const confPath = "main.ini" func init() { var err error iniConf, err = ini.Load(confPath) if err != nil { logrus.Panicf("load conf error: [%s]", err) } iniConf.BlockMode = fals...阅读全文

Go实现海量日志收集系统(二)

51Reboot 将在 2020.1.16日 21:00 为您带来分享主题《大佬教你如何从 ES 初学者到 ES专家》 直播链接(提前报名):https://ke.qq.com/course/482014?taid=4309905192737502&tuin=31589b0e 第一篇文章主要是关于整体架构以及用到的软件的一些介绍,这一篇文章是对各个软件的使用介绍,当然这里主要是关于架构中我们 agent 的实现用到的内容 关于 zookeeper+kafka 我们需要先把两者启动,先启动 zookeeper,再启动 kafka启动 ZooKeeper:./bin/zkServer.sh start启动 kafka:./bin/kafka-server-start.sh ./config/se...阅读全文

博文 2020-01-16 07:33:11 xjtuhit

【代码篇】从零开始一步步搭建自己的golang框架(三)

上一篇文章里,我们定了项目基本目录结构。现在来回顾一下我的思路: 创建入口文件; 指定配置、日志目录; 指定数据库、队列、缓存组件目录; 创建数据处理的controller目录; 指定公共函数等杂项。 接下来,我们还是按照这个顺序填充代码。 入口文件 func main() { config.InitConfig() logger.InitLogger() } 暂且忽略一些实现细节,我们需要先初始化配置和日志,先来看看日志,我选用Uber的zap日志库。来看看日志模块怎么写? 日志 package logger import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) v...阅读全文

博文 2020-01-21 01:33:42 wx5e1abbbb0a5e5

06-Go语言命令行参数

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

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

golang 通过fsnotify监控文件,并通过文件变化重启程序

一、下载我们需要的包 go get github.com/fsnotify/fsnotify 二、使用fsnotify监控文件 package main; import ( "github.com/fsnotify/fsnotify" "log" "fmt" ) func main() { //创建一个监控对象 watch, err := fsnotify.NewWatcher(); if err != nil { log.Fatal(err); } defer watch.Close(); //添加要监控的对象,文件或文件夹 err = watch.Add("./tmp"); if err != nil { log.Fatal(err); } //我们另启一个goroutine来处理监控对...阅读全文

博文 2019-07-25 02:32:40 云南厨子

golang条件编译

开篇 golang中没有类似C语言中条件编译的写法,比如在C代码中可以使用如下语法做一些条件编译,结合宏定义来使用可以实现诸如按需编译release和debug版本代码的需求 #ifndef #define ... #end 但是golang支持两种条件编译方式 编译标签( build tag) 文件后缀 编译标签( build tag) 在源代码里添加标注,通常称之为编译标签( build tag),编译标签是在尽量靠近源代码文件顶部的地方用注释的方式添加 go build在构建一个包的时候会读取这个包里的每个源文件并且分析编译便签,这些标签决定了这个源文件是否参与本次编译 编译标签添加的规则(附上原文): a build tag is evaluated as the OR of spa...阅读全文

博文 2019-01-10 19:34:43 左手java右手go

5.1.1Golang开发环境搭建

目录:https://www.jianshu.com/p/e406a9bc93a9 搭建go开发环境 安装go开发包 Go官方镜像站(推荐):https://golang.google.cn/dl/ 根据系统下载相应的安装包。Windows直接是msi文件,直接安装即可。 安装完成 配置GOPATH 因为go是一个编译性语言,所以他需要一个自己的工作空间来存储代码文件(src),中间文件(pkg),编译文件(bin)。 示意图 同时配置环境变量: 示意图 安装vscode 官方文档:https://code.visualstudio.com/docs/?dv=win 中文插件 go插件 第一个go语言程序 目录树 package main import "fmt" func main() {...阅读全文

Go 笔记之详解 Go 的编译执行流程

上篇文章介绍了Golang在不同系统下的安装,并完成了经典的Hello World案例。在这个过程中,我们用到了go run命令,它完成源码从编译到执行的整个过程。 今天来详细介绍下这个过程。简单理解,go run 可等价于 go build + 执行。 build命令简述 在Golang中,build过程主要由go build执行。它完成了源码的编译与可执行文件的生成。 go build接收参数为.go文件或目录,默认情况下编译当前目录下所有.go文件。在main包下执行会生成相应的可执行文件,在非main包下,它会做一些检查,生成的库文件放在缓存目录下,在工作目录下并无新文件生成。 新建hello案例 在正式介绍编译流程前,再重新演示下Hello World案例,新建hello.go文件...阅读全文

兄弟连区块链教程btcpool矿池源码分析slparser

btcpool矿池-slparser(share log parser)模块解析 核心机制总结 支持三种功能: 指定Date和UID,将打印指定日期指定用户的share信息到stdout UID=0时,将打印指定日期所有用户的share信息 指定Date但未指定UID,读取指定日期sharelog,统计数据并写入数据库 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d 数据库仅保留最近3个月统计数据 如果Date和UID均未指定,将监听文件变化,读取share并统计数据,每15秒写入数据库 同时启动Httpd服务,开放ServerStatus和WorkerStatus slparser命令使...阅读全文

博文 2018-10-26 15:34:41 兄弟连区块链培训

golang package init 可以多处定义

在 golang 中 import 包 A 的时候,会自动隐式的调用该包A的 init() 函数。 调用顺序:如果该包A又import了别的包B,会优先调用包B的 init() 函数,最后才调用 main 包的 init() 函数。 一个包的 init() 函数可以定义多个,每个都会被调用,调用的顺序按文件名排序。 不光一个包可以定义多个init函数,同一个文件都可以定义多个init函数。调用顺序为代码顺序...阅读全文

博文 2019-06-14 18:02:39 风亡小窝

golang在编译时用ldflags设置变量的值

The Go linker (go tool link) has an option to set the value of an uninitialised string variable: -X importpath.name=value Set the value of the string variable in importpath named name to value. Note that before Go 1.5 this option took two separate arguments. Now it takes one argument split on the first = sign. As part of your build process, you cou...阅读全文

博文 2019-09-09 16:32:49 seamounts

golang构建web服务入门教程-快速创建web服务(二)

接着上一篇,我们今天来利用 orange 框架快速构建一个 web 服务,实现一个简单的接口开发; **第一步:** 在 $GOPATH/src目录下创建一个文件夹,并在文件夹内创建 main.go 文件 文件内容 ```golang package main import "gitee.com/zhucheer/orange/app" func main(){ router := &Route{} app.AppStart(router) } type Route struct { } func (s *Route) ServeMux() { app.NewRouter("").GET("/", func(ctx *app.Context) error { return ctx.ToStr...阅读全文

博文 2020-04-30 22:40:10 zhucheer

golang应用快速搭建框架jotnar

jotnar 是一个golang项目快速搭建的框架,它本身是集成其它常用的框架,以达到快速开发的目的 Github项目地址 安装 go get -u github.com/paulyung541/jotnar 初始化 项目里经常会使用命令行来初始化,或者是使用配置文件。我们每新开一些项目,都会用到这些基础的功能,但是每次都去写,难免会枯燥,也不利于项目集成。使用jotnar则将这些烦琐的操作集成进来,能够非常快速地搭建一个项目 配置初始化 将命令行传参或者配置文件的设置加载到内存中,并在任何地方随心所欲地使用它们。 这里提供了2种选择: 命令行传参 使用viper这个优秀的配置文件读取框架 命令行传参方式进行初始化 ./application --ip 192.168.0.1 —port 1...阅读全文

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引二

Start方法。 这个方法在eth协议启动的时候被调用,这个方法接收两个参数,一个是当前的区块头,一个是事件订阅器,通过这个订阅器可以获取区块链的改变信息。 eth.bloomIndexer.Start(eth.blockchain.CurrentHeader(), eth.blockchain.SubscribeChainEvent) // Start creates a goroutine to feed chain head events into the indexer for // cascading background processing. Children do not need to be started, they // are notified about new e...阅读全文

博文 2018-10-19 11:34:46 兄弟连区块链培训

面试知识点|Dockerfile 中的 COPY 与 ADD 命令

Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。 Build 上下文的概念 在使用 docker build 命令通过 Dockerfile 创建镜像时,会产生一个 build 上下文(context)。所谓的 build 上下文就是 docker build 命令的 PATH 或 URL 指定的路径中的文件的集合。在镜像 build 过程中可以引用上下文中的任何文件,比如我们要介绍的 COPY 和 ADD 命令,就可以引用上下文中的文件。 默认情况下 docker build -t testx . 命令中的 . 表示 build 上下文为当前目录。当然我们可以指定一个目录作为上下文,比如下...阅读全文

博文 2019-03-21 14:34:46 51reboot

Golang笔记之 从helloworld.go来观察go的工具链(简单向)

我并不打算在这个时间点来把所有的go语言的工具链讲的一清二楚。而是通过我们的Hello World案例来讲解这个程序是如何编译并运行的。 package main import "fmt" func main(){ fmt.Println("Hello World") } 两个命令: go run ****.go 2.go build ****.go 当我们执行第一个命令的时候,他的作用仅仅会输出我们所期望的结果。但是不会产生一个可以复用的程序。当运行go build的时候,会产生一个二进制文件,可以直接执行。 命令 catdeMBP:go cat$ go build catdeMBP:go cat$ ls go main.go catdeMBP:go cat$ ./go Hello Wor...阅读全文

博文 2019-06-14 23:32:43 我加入简书的路程

【代码篇】从零开始一步步搭建自己的golang框架(三)

上一篇文章里,我们定了项目基本目录结构。现在来回顾一下我的思路: 创建入口文件; 指定配置、日志目录; 指定数据库、队列、缓存组件目录; 创建数据处理的controller目录; 指定公共函数等杂项。 接下来,我们还是按照这个顺序填充代码。 入口文件 func main() { config.InitConfig() logger.InitLogger() } 暂且忽略一些实现细节,我们需要先初始化配置和日志,先来看看日志,我选用Uber的zap日志库。来看看日志模块怎么写? 日志 package logger import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) v...阅读全文

博文 2020-01-20 12:32:42 onepunchgo

兄弟连区块链培训分享Go语言压缩与解压

2018年第一季度,区块链相关人才的招聘需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。 兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。压缩文件package mainimport ( "fmt" "os" "io" "archive/tar" "compress/gzip")func main() { // file write fw, err := os.Create("tar/lin_golang_src.tar.gz") if err != nil { panic(err) } defer fw.Close() // gzip write gw := gzip.NewWriter(fw) defe...阅读全文

博文 2018-08-29 16:35:06 兄弟连区块链培训

想小步快跑吗?来一份持续集成流水线套餐吧

前言 随着云计算的不断成熟,人们已经意识到计算机自动化带来的优势,因此传统工业中越来越多的工作逐渐交由软件控制。软件研发组织更应该转变生产方式,将重复的低成本的人工处理转变为软件自动处理。 《Google软件测试之道》中说道:“每天,Google都要测试和发布数百万个源文件,亿万行代码。数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行。面对这些看似不可能完成的任务,谷歌是如何测试的呢?” 我们在平时的工作中,总有一部分工作是相对机械化的,易出错的,例如一次又一次的打包部署应用。如果可以把这部分工作交给机器来做,我们仅需要轻轻地点一下鼠标,再泡杯咖啡就能让自己轻松地完成工作,岂不是美滋滋? 此时,我们就可以考虑引入自动化持续集成工具。一套连贯的工作流程和流水线可以大...阅读全文

博文 2019-06-17 10:02:46 Iris女战士