golang viper 使用记录: 读取不到配置文件json

本来是用yaml格式的配置文件, 配合viper使用很简单, 但是读取值得时候有点麻烦, 于是想读取json格式然后直接反序列化到定义好的结构体中 问题: 怎么都读取不到配置文件数据 解决: 很无语,看代码; 必须点读取,才能反序列化 package parsecfg import ( "fmt" "os" "github.com/spf13/viper" ) // GlobalConfig 全局配置 var GlobalConfig EnvCfg // EnvCfg app 基本设置 type...阅读全文

简书 2021-03-11 16:32:38 Casso_W

手撸golang GO与微服务 Saga模式之1

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之Saga模式saga模式将分布式长事务切分为一系列独立短事务每个短事务是可通过补偿动作进行撤销的事务动作和补偿动作都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是避免使用长期持...阅读全文

Segmentfault 2021-03-16 10:32:34 ioly

go中sync.Cond源码解读

什么是sync.CondGo语言标准库中的条件变量sync.Cond,它可以让一组的Goroutine都在满足特定条件时被唤醒。 每个Cond都会关联一个Lock(sync.Mutex or sync.RWMutex) var (locker = new(sync.Mutex)cond = sync.NewCond(locker)) func listen(x int) {// 获取锁cond.L.Lock()// 等待通知 暂时阻塞cond.Wait()fmt.Println(x)// 释放锁...阅读全文

51CTO博客 2021-03-11 10:26:59 小中01

Go的测试覆盖率

测试覆盖率是一个术语,用于统计通过运行程序包的测试多少代码得到执行。 如果执行测试套件导致80%的语句得到了运行,则测试覆盖率为80%。计算测试覆盖率的通常方法是埋点二进制可执行文件。 例如,GNU gcov 在二进制文件中设置执行分支断点。 当每个分支执行时,断点被清除,并且分支的目标语句被标记为“被覆盖”。这种方法是成功和广泛使用的。 Go的早期测试覆盖工具甚至以相同的方式工作。但它有问题。 由于分析二进制文件的执行是很困难的,所以很难实现。 它还需要将执行跟踪绑定回源代码的可靠方法,这也可...阅读全文

51CTO博客 2021-03-11 10:04:41 mob604756e39ef4

go中sync.Cond源码解读

go中sync.Cond源码解读sync.CondWaitSignalBroadcast前言什么是sync.Cond看下源码总结sync.Cond前言本次的代码是基于go version go1.13.15 darwin/amd64什么是sync.CondGo语言标准库中的条件变量sync.Cond,它可以让一组的Goroutine都在满足特定条件时被唤醒。每个Cond都会关联一个Lock(*sync.Mutex or *sync.RWMutex)var ( locker = new(sync....阅读全文

51CTO博客 2021-03-11 09:59:09 mob604756e39ef4

开课啦 dubbo-go 微服务升级实战

曾凡维 杭州开课啦教育科技有限公司高级开发工程师 来源 | 阿里巴巴云原生公众号杭州开课啦教育科技有限公司是一家致力于为中小学生提供学习辅导的在线教育公司,目前公司后端服务基础设施主要依托于阿里云原生,其中包含计算、网络、存储以及 Kubernetes 服务。技术选型背景2020 年是开课啦公司发展壮大的一年,整个公司团队由原来的几百人扩充至现在的几千人,在集中使用的时候基本上会有几千人同时在运营后台进行操作,公司原有的内部后台运营系统是用 PHP 搭建起来的,性能跟业务上已逐渐不能满足公司的需...阅读全文

51CTO博客 2021-03-11 09:19:13 mob604756e39ef4

[译] 使用 Go 语言编写一个简单的 SHELL

介绍在本文中,我们将使用 Go 语言,编写一个最小的 UNIX(-like)操作系统 SHELL,它只需要大概 60 行代码。你需要稍微了解一些 Go 语言(知道如何编译简单的项目),以及简单使用 UNIX Shell。UNIX 非常简单,简单到一个天才都能理解它的简单性 - Dennis Ritchie当然,我并非天才,我也不太确定 Dennis Ritchie 所说的,是否也包括运行于用户空间的工具。Shell 只是完整操作系统的一小部分(相较于内核,它真的是一个简单的部分),但我希望在本文...阅读全文

51CTO博客 2021-03-11 09:04:52 mob604756e39ef4

Jochen的golang小抄-进阶篇-并发编程(实战篇)

目录runtime包临界资源什么是临界资源临界资源安全问题如何解决临界资源安全问题同步(sync)包同步等待组(WaitGroup)互斥锁读写锁(RWMutex)通道(channel)使用通道(channel)小抄系列进阶篇涉及的概念较多,知识点重要,故每块知识点独立成篇,方便日后笔记的查询本篇的主题是:并发编程在前面我们介绍了go并发模型以及其实现原来,本章要介绍的是go语言中常用的并发编程操作以及要注意的问题runtime包runtime包下包含了go运行时系统交互的操作(如控制gorout...阅读全文

51CTO博客 2021-03-11 08:31:47 mob604756e39ef4

protoc go插件编写之二 (protoc-gen-go 命令行参数及关键路径)

protoc 自动生成go文件最重要,也比较容易混淆的问题时,是生成路径的参数,本文简要介绍编写protoc go插件的参数形式,以及影响go文件生成的路径 命令行参数 通常protoc-gen-go生成器不需要命令行参数。但是,在某些复杂的情况下,它们是完成任务的唯一方法,尤其是在设置要在生成的代码中使用的导入路径时。 传递参数 通过将参数值放在--go_out后,传递给go生成器。参数是由多个键值对(key=value)使用“,”连接起来的字符串, 如"a=111,b=222,c=333"。...阅读全文

简书 2021-03-11 00:32:43 癞痢头

基于web的局域网文件管理系统

系统产生背景 曾几何时我们是否碰到过这样的场景:新换了台电脑或手机,需要把另外一台设备上的文件传送到当前设备,由于新设备上还没有安装微信、qq等传输工具,即使也需要两台设备同时安装微信或qq,而且即使已经安装,但有时间我们需要传输.exe等敏感文件(这些敏感文件我们是知道的),传送过去后会自动加上后缀,如果在手机上再修改后缀操作就会比较麻烦;有时我们需要传输的文件比较大,大家也知道微信对文件的大小是有要求的;这些工具暂时也都不支持对其它设备上文件进行管理。 本系统所解决的痛点 不安装微信、qq等...阅读全文

简书 2021-03-11 00:32:42 tonnyzhang

2021-03-10 腾讯实习面试

腾讯csig后台开发 面试官自我介绍,他说他是csig的,平时做。。。用的是c++,Golang语言,在深圳。 我自己的自我介绍。 由于面试官不是Java的,而我自己准备的是Java方面的东西,所以面试体验有点差。 主要问的是网络和Linux方面的东西,如Java的socket编程,tcp三次握手,epoll,如何查看进程的内存使用情况,进程间通信方式和共享内存是什么,进程线程区别,其他的忘了,不过都是网络和linux方面的。一点Java也没问,我准备了好多Java呀😭。 感觉面试官自己也没准备...阅读全文

简书 2021-03-11 00:32:42 王珂_3714

golang 的Command启动的进程如何关闭

在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context exec.CommandContext方发实现了context,通过context可以对exec启动的进程结束。 隐藏程序自身黑窗口的方法:go build -ldflags="-H windows" 隐藏子进程黑窗口的方法: cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: tru...阅读全文

简书 2021-03-11 00:32:42 梅_苇名一心

Go-Zap

本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。 在Go语言项目中使用Uber-go的Zap Logger 介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。 支持不同的日志级别。例如INFO,DEBUG,ERROR等。 能够打印基本信息,如调用文件/函数名和行号...阅读全文

简书 2021-03-11 00:32:41 李小斌_2018

2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其...

2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其余的 N-2 个位置中选出一个点,并直接将这个点忽略掉,问从起点到终点至少走多少距离? 福哥答案2021-03-10: 数组[1,4,-1,3],忽略序号1,数组变成[1,-1,3],距离是abs(-2)+4=6;忽略序号2,数组变成[1,4,3],距离是3+1=4。 N-2 个坐标中选出一个点,并直接将...阅读全文

简书 2021-03-11 00:32:41 福大大架构师每日一题

2021-03-10 面试问题

一 k8s 相关 一个pod的创建过程 kube-proxy有几种方式 之间有什么区别 cni插件有几种实现方式 之间有什么区别 service 的nodeport访问原理 二 golang 有几种类型的channel gpm模型 有几种锁 三 tcp tcp 状态机(三次握手 四次挥手) tcp udp 的区别 http1.0 http2.0区别 拥塞控制阅读全文

简书 2021-03-11 00:32:40 simok

一、安装Go运行环境

上一篇:零、导学 0、体验 如果你只是想体验下Go语言建议直接使用如下地址,在线即可查看运行结果: https://goplay.space/ 1、下载 Go语言运行需下载安装包,地址如下: https://golang.google.cn/dl/ 2、安装 下载后双击进行安装: 3、验证 # 运行CMD或CMDER输入go -version进行验证 go -version 下一篇:二、运行第一个Go程序阅读全文

简书 2021-03-11 00:32:40 Kaldi

Go 字符串常用的系统函数

Go 字符串常用的系统函数 统计字符串的长度,按字节len(str) func main() { str := "hello呗" // golang的编码统一为utf-8 // ascii的字符(字母和数字)占一个字节,汉字占3个字节 fmt.Println("str len=", len(str)); // 8 } 字符串遍历,同时处理有中文的问题 r:[]rune(str) str2 := "hello小美" r := []rune(str2) for i:=0; i< len(r); i+...阅读全文

简书 2021-03-11 00:32:36 月圆星繁

Go 语言开发设计指北

友情提示:此篇文章大约需要阅读 20分钟33秒,不足之处请多指教,感谢你的阅读。 订阅本站此文章首发于 Debug客栈 |https://www.debuginn.cnGo 语言是一种强类型、编译型的语言,在开发过程中,代码规范是尤为重要的,一个小小的失误可能会带来严重的事故,拥有一个良好的 Go 语言开发习惯是尤为重要的,遵守开发规范便于维护、便于阅读理解和增加系统的健壮性。以下是我们项目组开发规范加上自己开发遇到的问题及补充,希望对你有所帮助:注:我们将以下约束分为三个等级,分别是:【强制】...阅读全文

Segmentfault 2021-03-16 08:32:32 Meng小羽

[译] 使用 Go 语言编写一个简单的 SHELL

翻译自:https://sj14.gitlab.io/post/2...介绍在本文中,我们将使用 Go 语言,编写一个最小的 UNIX(-like)操作系统 SHELL,它只需要大概 60 行代码。你需要稍微了解一些 Go 语言(知道如何编译简单的项目),以及简单使用 UNIX Shell。UNIX 非常简单,简单到一个天才都能理解它的简单性 - Dennis Ritchie当然,我并非天才,我也不太确定 Dennis Ritchie 所说的,是否也包括运行于用户空间的工具。Shell 只是完整...阅读全文

Segmentfault 2021-03-15 07:32:32 shiweifu