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

A Tour of Go: Basics 3

Struct 用指针和用变量名引用struct里的值,用法是一样的。Struct初始化语法: type Vertex struct { X, Y int } var ( v1 = Vertex{1, 2} // has type Vertex v2 = Vertex{X: 1} // Y:0 is implicit v3 = Vertex{} // X:0 and Y:0 p = &Vertex{1, 2} // has type *Vertex ) Array 数据长度是固定的,在定义时指定。 Slices Slices的概念与Python中的概念类似,是Array的子集。slice只是数组的引用,因此修改slice值就是修改数组里的值。[]int{1,2,3}语法含义是先定义一个数组,再...阅读全文

博文 2018-10-07 23:35:14 zxdevops

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() ...阅读全文

Go基础学习记录之如何解析并生成XML

XML XML是Web服务中常用的数据通信格式。今天,它在Web开发中扮演着越来越重要的角色。本次分享将介绍如何通过Go的标准库使用XML。我不会尝试教授XML的语法或约定。你可以去阅读有关XML本身的更多文档。我只关注如何在Go中编码和解码XML文件。假设您在IT中工作,并且您必须处理以下XML配置文件: Shanghai_VPN 127.0.0.1 Beijing_VPN ...阅读全文

博文 2018-11-07 10:34:42 DurbanZhang

基于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 语言编写,拥有良好的性能和扩...阅读全文

写给大忙人看的Go语言(一)

Tips 写给大忙人看的Golang教程(一)阅读本文之前,我认为你已经掌握其他语言基础并写出一个简单的项目。 (1)Golang编程注意事项 源文件必须以.go为扩展名. Go应用程序d额执行入口是main()方法. Go代码严格区分大小写. Go代码不需要分号. Go代码不允许多条语句在同一行出现. Go语言重定义的变量和导入的包如果没有被使用不会编译通过. Go语言大括号是成对出现的. (2)Golang中的常用转义字符 \t 制表符 \n 换行符 \\ 一个斜杠 \" 一个引号 \r 一个回车 (3)注释方式 // 注释内容行注释 /* 注释内容 */多行注释 多行注释不可以嵌套多行注释 (4)Golang的代码规范 尽量使用行注释注释整个方法或语句 使用Tab缩进 使用gofmt ...阅读全文

博文 2018-10-04 11:35:16 棋帅小七

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 文振熙

golang-类型变量

![golang-类型变量](https://static.studygolang.com/190820/593a97d2108c973efd4dacffd65f633f.jpg) ## 类型 #### 变量 - 用var 定义变量,类型在前,变量名在后 ``` var a uint32 var b bool var c,d int ``` - 直接使用简介模式 ``` x := 10 y,z := "a", 123 ``` #### 常量 - const关键字声明 ``` const( x = 1 y = "SUCCESS" ) ``` #### 枚举 - 枚举在golang中借助iota可以自增来处理,默认从0开始 - 中断iota需要显示恢复,并且后面继续按行自增 - 每个const出...阅读全文

博文 2019-08-20 22:11:23 sooseiy

兄弟连区块链教程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架构的前世今生,网上比较流行一张描述人类形态发展史的网图。从爬行猿人到蹲着的类猿人,再到直立人类,最后到使用工具的新兴人类。从四只...阅读全文

Go 环境与变量数据类型

环境 Go 下载安装 推荐去 Golang 中文社区下载 Go 编译器 官方下载 傻瓜式安装即可 安装完成之后打开 cmd ,输入go version 成功输出版本号则代表安装成功 Go 环境变量 关于 Go 的环境变量的问题 seaconch 就在刚才突然想到了比较贴切的形容方式 1. GOROOT GOROOT 常被描述为 Go 编译器的路径 GOROOT 不需要我们去配,一般安装 GO 编译器时选择的路径就是 GOROOT 路径 seaconch 补充一点:import 包时,原生 pkg 也是根据 GOROOT 来引用的 所以说使用过 npm 的同学可以理解为:全局包路径 2. GOPATH GOPATH 常被描述为 Go 源码(工程)路径 GOPATH 需要我们去手动配置,当然如果...阅读全文

博文 2018-09-05 01:34:42 SeaConch

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

好程序员web前端培训之JavaScript数组去重方法

好程序员web前端培训之JavaScript数组去重方法,一周学习结束,老师布置我们要写一篇技术文章,脑袋里面的第一个想法就是数组去重,在网上也百度了一下,很多公司面试的时候有很大的几率会问数组去重的问题。所以今天我就给大家分享我所用过的四种数组去重的方法。 1、第一种办法主要是用两个循环来遍历整个数组,从第一个开始跟后面的比较,找到一样的就删除后面重复的值。数组去重无非就是找到两个以上重复的值,保留其中一个就可以了,这种办法很好理解,但是效率不高。代码如下:​ 2、第二种办法是利用对象属性名不能重复的原理来去重的,这个也是我写的这几种方法里面,去重效率最高的一种,代码如下:​ 备注:js对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都...阅读全文

博文 2019-03-29 11:47:24 hcxy

05-GoLang常量

常量 1.在C语言中可以通过const来定义常量 2.在Go语言中一样 3.格式: const 变量名称 数据类型 = 值; 注意点 数据类型可以省略, 但是const不能省略 定义常量不能使用 := , := 是专门用于定义局部变量的 定义局部变量没有使用, 编译会报错, 定义全局变量和常量没有使用, 不会报错 在Go语言中可以连续定义多个变量, 所以也可以连续定义多个常量 格式: const 变量名称1, 变量名称2 数据类型 = 值1, 值2; const( 变量名称1 数据类型 = 值1 变量名称2 数据类型 = 值2 ) 定义单个常量 const num int = 666 //方式一 //const num = 666 //方式二 //const num := 666 报错,:=...阅读全文

博文 2018-10-08 09:34:40 箩篼

【代码篇】从零开始一步步搭建自己的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 云南厨子

Go语言学习历程——Go语言基础语法入门

GO语言特性开发者使用编程语言的三大分类(执行速度,简易程度,开发难度)1.执行速度快、编译速度慢(编译型):C,C++2.执行速度较慢,编译速度快(解释型):JAVA,.NET3.执行速度慢,开发难度小(动态脚本):Python,PHPGO语言在三个条件做了平衡:易于开发,快速编译,高效执行1.helloworldpackage mainimport "fmt"func main { fmt.Println("hello world")}注意: 1.如果需要将程序编译成二进制程序,要将包名写成main包第一个Go程序解读: 1.package Go源文件开头必须使用package声明代码所属包,包是Go代码分发的最基本单位。若程序需要运行,则包名必须为main。 2.import impo...阅读全文

博文 2020-05-17 01:33:14 wujunqi1996

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

Golang学习笔记-1.3 变量

**本文系第三篇Golang语言学习教程** var声明语句可以创建一个特定类型的变量,然后给变量附加一个名字,并且设置变量的初始值。 ***变量声明语法如下***: >**var 变量名 类型 = 表达式** 例: ```go var age int = 19 ``` ----------------- 其中**“类型”**或**“=表达式”**两个不分可以省略其中一个。 >如果省略**类型**,那么将根据初始表达式来确定类型信息。 如果省略**=表达式**,那么将用零值初始化该变量。 例1: ```go package main import "fmt" func main() { var age = 19 //省略类型,根据自动表达式确定age类型 fmt.Println("Hello...阅读全文

博文 2018-07-06 10:19:01 xunk1900

闭包的思想

思考一个问题: 如何能够在运行的时候控制或者改变一个函数对于输入的行为? 比如在一个函数外部修改一个变量就能改变这个函数的行为? 于是一个称之为闭包的东西出现了。 闭包:函数和引用的外部变量一起构成一个闭包。 ✳注意:如果没有上述目的,不要引用函数外部的变量。把它作为参数传入你的函数。否则你很有可能因此引入意想不到的bug。 如何实现闭包? 下面是golang的实现 以下引自https://hitzhangjie.github.io/jekyll/update/2018/05/19/golang-function-closure%E5%AE%9E%E7%8E%B0%E6%9C%BA%E5%88%B6.html 假如闭包定义后立即被调用 因为只会被使用一次,所以应该力图避免闭包对象的内存分配操...阅读全文

博文 2019-07-12 18:32:40 doob_9117

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 反射

反射机制是指在程序运行的时候动态地获取对象的属性后者调用对象方法的功能。golang 支持反射,原生的 json 库就是用反射机制实现。 golang 的反射有两个主要的概念: `reflect.Type` 和 `reflect.Value` 从字面上理解就是类型和值 ## `reflect.Type` `reflect.Type` 指的就是一个类型,可以是基本类型 int,string,也可以是自定义的结构体类型,可以通过 `reflect.TypeOf()` 获取对象的类型 ``` go TypeOf(i interface{}) Type // 获取任意一个对象的 Type 对象 (t *Type) NumField() int // 字段数量 (t *Type) NumMethod(...阅读全文

博文 2019-11-27 21:02:24 hatlonely

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——变量和常量

关键字(25个) break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 保留字(37个) append bool byte cap close complex complex64 complex128 uint16 copy false float32 float64 imag int int8 int16 uint32 int32 int64 iota len make new nil panic uint64 print println ...阅读全文

博文 2020-05-10 19:33:10 Cici冬雪

【代码篇】从零开始一步步搭建自己的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 兄弟连区块链培训

reflect笔记

reflect使用和源码阅读的心得笔记。 TypeOf使用 package main import ( "fmt" "reflect" ) type S struct { A float64 `usage:"a"` B float64 `usage:"b"` c float64 `usage:"c"` } func (s *S) Add() float64{ return s.A + s.B } func (s *S) Del()float64{ return s.A - s.B } func main() { s := S{1.43,2.15,3.24} t := reflect.TypeOf(s)//利用unsafe.Pointer的特性将S类型反射为emptyInterface类型,e...阅读全文

博文 2019-02-01 15:34:43 Cedrus

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

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

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

在emacs中使用go

在emacs中,只加载基础配置。项目配置用脚本加载。go语言使用go-langserver和lsp-mode,其他的yasnippet,补全,都是基础功能。 bash <(curl -L -s https://install.direct/go.sh) ;; ;; if you clipboard don't use well, close numbers, then you can copy and paste (global-linum-mode 1) ; always show line numbers (setq linum-format "%4d| ") (setq-default fill-column 80) ;; ;;阅读全文

博文 2019-12-10 17:32:46 蓝色科学史

GoLang 学习笔记 - 变量

GoLang变量名由字母、数字、下划线组成,其中首个字符不能为数字,其命名规则参考标识符。声明变量的一般形式是使用 var 关键字。 变量声明方式为: var [变量名] [变量类型] // 例 var num int32 可以一次声明多个变量: var num1, num2, num3 int 变量声明   GoLang中有多声明变量的方式。   第一种,只指定变量类型。如果没有初始化,则变量默认为零值(缺省值、默认值)。 var num int32 fmt.Println(num) // 取零值,输出 0 零值 GoLang 中变量的默认值、缺省值叫做零值 数值型(包括complex64/128)零值为 0 。 布尔型零值为 false 。 字符串零值为 ""(空字符串)   第二种,根...阅读全文

博文 2019-07-21 04:32:38 凉丶心园

Go-变量的定义

println()打印变量 printf() 打印格式 变量类型写在变量名之后 编译器可推测变量类型 没有char,只有rune(32位) 原生支持复数类型 一、变量的定义 代码 package main ​ import "fmt" ​ //var aa = 3 //var ss = "kk" //bb := true ​ var ( aa \= 3 ss \= "kk" bb \= true ) ​ func variable() { var a int var s string fmt.Printf("%d %q\\n",a, s) } ​ func variableInitialValue() { var a, b int \= 3, 4 var s string \= "abc" ...阅读全文

博文 2020-01-21 10:32:40 双子城

【Go】使用压缩文件优化io (一)

文连接:https://blog.thinkeridea.com/... 最近遇到一个日志备份 io 过高的问题,业务日志每十分钟备份一次,本来是用 Python 写一个根据规则扫描备份日志问题不大,但是随着业务越来越多,单机上的日志文件越来越大,文件数量也越来越多,导致每每备份的瞬间 io 阻塞严重, CPU 和 load 异常的高,好在备份速度很快,对业务影响不是很大,这个问题会随着业务增长,越来越明显,这段时间抽空对备份方式做了优化,效果十分显著,整理篇文章记录一下。 背景说明 服务器配置:4 核 8G; 磁盘:500G每十分钟需要上传:18 个文件,高峰时期约 10 G 左右 业务日志为了保证可靠性,会先写入磁盘文件,每10分钟切分日志文件,然后在下十分钟第一分时备份日志到 OSS,...阅读全文

博文 2019-06-30 22:32:43 thinkeridea

golang-类型变量

类型 变量 用var 定义变量,类型在前,变量名在后 var a uint32 var b bool var c,d int 直接使用简介模式 x := 10 y,z := "a", 123 常量 const关键字声明 const( x = 1 y = "SUCCESS" ) 枚举 枚举在golang中借助iota可以自增来处理,默认从0开始 中断iota需要显示恢复,并且后面继续按行自增 每个const出现时被重置为0,没出现一次iota,代表数字会自动+1 const( a = iota // 0 ) const ( xx = iota // 0 yy = 5 // 5 zz = iota // 2 ) 类型 布尔类型:bool 整形 int8 int16 int32 浮点类型 floa...阅读全文

博文 2019-08-20 22:02:39 码农苏羡的成长记