35. Go 语言中关于接口的三个"潜规则"

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 对方法的调用限制 接口是一组固定的方法集,由于静态类型的限制,接口变量有时仅...阅读全文

Segmentfault 2020-06-18 17:32:37 Python编程时光

Golang实战 XORM搭配OpenTracing+Jaeger链路监控让SQL执行一览无遗

# Golang XORM搭配OpenTracing+Jaeger链路监控让SQL执行一览无遗(附源码) > - [xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。](https://gitea.com/xorm/xorm) > - [OpenTracing API 分布式追踪,也称为分布式请求追踪,是一种用于分析和监视应用程序的方法,特别是那些使用微服务体系结构构建的应用程序,IT和DevOps团队可以使用分布式追踪来监视应用程序](https:...阅读全文

Go语言中文网 2020-06-16 00:22:39 avtion

涂鸦智能 dubbo-go 亿级流量的实践与探索

作者 | 潘天颖,Github ID @pantianying,开源爱好者,就职于涂鸦智能 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力。而 dubbo-go 在 java 与 golang 之间提供统一的服务化能力与标准,是涂鸦智能目前最需要解决的主要问题。本文分为实践和快速接入两部分,分享在涂鸦智能的 dubbo-go 实战经验,意在帮助用户快速接入 dubbo-go RPC 框架,希望能让大家少走些弯路。另外,文...阅读全文

51CTO博客 2020-06-15 14:10:52 阿里系统软件技术

10 万字 Go 并发编程心得笔记:配 B 站实战讲解视频

如果要面试一个 Go 语言高级程序员,应该问什么,我的答案是并发,并发是 Go 语言设计的灵魂,同时也是高级和初级程序员很好的区分标准。下面这份笔记从 Go 并发概念开始,介绍了 Go 并发模型的理论基础 (Communicating Sequential Processes),以及 Go 标准库 “sync” 包下所有并发原语的使用注意事项和实例代码,并且提供给你很多编写 Go 并发程序的编程模式建议。最后我们将会讨论大规模并发程序编写中应该注意的事项,同时我们将深入的 Golang 运行时(...阅读全文

Go语言中文网 2020-06-15 21:28:37 LLiuJJ

涂鸦智能 dubbo-go 亿级流量的实践与探索

作者 | 潘天颖,Github ID @pantianying,开源爱好者,就职于涂鸦智能 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力。而 dubbo-go 在 java 与 golang 之间提供统一的服务化能力与标准,是涂鸦智能目前最需要解决的主要问题。本文分为实践和快速接入两部分,分享在涂鸦智能的 dubbo-go 实战经验,意在帮助用户快速接入 dubbo-go RPC 框架,希望能让大家少走些弯路。另外,文...阅读全文

掘金 2020年06月15日 阿里巴巴云原生

涂鸦智能 dubbo-go 亿级流量的实践与探索

作者 | 潘天颖,Github ID @pantianying,开源爱好者,就职于涂鸦智能 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力。而 dubbo-go 在 java 与 golang 之间提供统一的服务化能力与标准,是涂鸦智能目前最需要解决的主要问题。本文分为实践和快速接入两部分,分享在涂鸦智能的 dubbo-go 实战经验,意在帮助用户快速接入 dubbo-go RPC 框架,希望能让大家少走些弯路。另外,文...阅读全文

Segmentfault 2020-06-18 15:32:38 阿里巴巴云原生

从零学习 Go 语言(15):学习 Go 语言的结构体与继承

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## 0. 什么是结构体? 在之前学过的数据类型中,数组与切片,只能存储同一类型的变量。若要存储多个类型的变量,就需要用到结构体,它是将多个容易类型的命令变量组合在一起的聚合数据类型。 每个变量都...阅读全文

Go语言中文网 2020-06-15 12:29:39 hello_wbm

从零学习 Go 语言(14):Go 语言中的类型断言是什么?

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## Type Assertion Type Assertion(中文名叫:类型断言),通过它可以做到以下几件事情 1. 检查 `i` 是否为 nil 2. 检查 `i` 存储的值是否为某个类型 具...阅读全文

Go语言中文网 2020-06-15 12:24:28 hello_wbm

Golang简单入门教程——函数进阶篇

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第八篇,我们来聊聊golang当中的函数。 我们在之前的时候已经介绍过了函数的基本用法,知道了怎么样设计或者是定义一个函数,以及怎么样调用一个函数,还了解了defer的用法。今天这篇文章我们来继续深入这个话题,来看看golang当中关于函数的一些进阶的用法。 返回error 前文当中我们曾经提到过,在golang当中并没有try catch捕获异常的机制。在其他语言当中异常只有一种,可以通过try catch语句...阅读全文

掘金 2020年06月15日 承志

golang面试题:reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

问题 json包里使用的时候,会结构体里的字段边上加tag,有没有什么办法可以获取到这个tag的内容呢? 举例 tag信息可以通过反射(reflect包)内的方法获取,通过一个例子加深理解。 package main import ( "fmt" "reflect" ) type J struct { a string //小写无tag b string `json:"B"` //小写+tag C string //大写无tag D string `json:"DD" otherTag:"goo...阅读全文

掘金 2020年06月15日 9號同学

Go 每日一库之 casbin

简介 权限管理在几乎每个系统中都是必备的模块。如果项目开发每次都要实现一次权限管理,无疑会浪费开发时间,增加开发成本。因此,casbin库出现了。casbin是一个强大、高效的访问控制库。支持常用的多种访问控制模型,如ACL/RBAC/ABAC等。可以实现灵活的访问权限控制。同时,casbin支持多种编程语言,Go/Java/Node/PHP/Python/.NET/Rust。我们只需要一次学习,多处运用。 快速使用 我们依然使用 Go Module 编写代码,先初始化: $ mkdir cas...阅读全文

掘金 2020年06月15日 darjun

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 va...阅读全文

掘金 2020年06月15日 王一白

Gin浅析

关键结构 Context.png Context贯穿整个HTTP业务当中,为相关业务提供上下文服务 WriteResponse是Gin自己定义HTTPResponseWriter接口,除了包含http.ResponseWriter外,额外增加了一些常用的接口。 handles包含了使用者自定义的业务和一些中间件(Gin默认会使用日志中间件和崩溃恢复中间件) Cache包含着QueryCaChe和FormCache,一个是读url的param参数,一个是读form表单参数 Param是使用者定义的...阅读全文

简书 2020-06-15 10:33:59 YoJn

N皇后

是典型的回溯问题,不过做这个题目,花了周日一天的时间,这一天时间,大部分时间都在思考出现问题的原因。这里也通过leetcode的提交记录,来回顾下做这题的心路历程,顺别加深对此类问题的求解。 在第一次解答,没有沿用之前的思路,只想到了递归,对于递归之外的问题模糊不清,就提笔了,结果可想而知,前后碰壁,在leetcode上甚至没有通过第一个测试用例。主要问题是对递归的思想还是不清晰,对参数的了解还是理解的不够透彻。客观评价,甚至是没有递归的影子。 很明显的,对于这类需要输出每个解的题目,都需要递归...阅读全文

简书 2020-06-15 10:33:58 7赢月

通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布

前提 前段时间顺利地把整个服务集群和中间件全部从UCloud迁移到阿里云,笔者担任了架构和半个运维的角色。这里详细记录一下通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布的核心知识点和操作步骤,整个体系已经在生产环境中平稳运行。编写本文使用的虚拟机系统为CentOS7.x,虚拟机的内网IP为192.168.56.200。 image.png 动态负载均衡的基本原理 一般会通过upstream配置Nginx的反向代理池: http { upstream upstream_s...阅读全文

简书 2020-06-15 10:33:57 java菲

Golang 监控全局变量

前言 你是否曾经遇到过这样的情况,在开发环境排查问题,因为一些数据保存在了一些全局变量中,这些变量往往是一个 map 或者是一个数组,想看看在运行过程中,这里面究竟存放了什么数据,有时不得不在运行的时候将它输出到日志中,那么如果我想实时看到这些数据的情况又怎么办呢? 其实 golang 中已经存在这样的库,就是来做这个事情的 expvar 使用案例 废话不多数,直接上案例 package main import ( "expvar" "net/http" ) var ( s map[string...阅读全文

简书 2020-06-15 10:33:06 LinkinStar

浅析context

为什么会有这个包 我们其实知道goroutine是没有父子关系,也没有先后顺序的,所以也就没有了我们常说的子进程退出后的通知机制。那么成百上千的goroutine如何协同工作:通信,同步,退出,通知 1.通信:goroutine 的通知就是依靠chan 2.同步:goroutine如何同步其实我们可以通过无缓冲的channel和sync包下的waitgroup机制来进行同步 3.通知:goroutine间如何通知呢,其实通知不同于通信,通知更多的是管理和控制流数据。这个可以用两个chan来进行管...阅读全文

简书 2020-06-15 10:32:54 Stevennnmmm

golang面试题:reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

image 问题 json包里使用的时候,会结构体里的字段边上加tag,有没有什么办法可以获取到这个tag的内容呢? 举例 tag信息可以通过反射(reflect包)内的方法获取,通过一个例子加深理解。 package main import ( "fmt" "reflect" ) type J struct { a string //小写无tag b string `json:"B"` //小写+tag C string //大写无tag D string `json:"DD" otherTa...阅读全文

简书 2020-06-15 10:32:54 9號

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候...阅读全文

简书 2020-06-15 10:32:53 王炳明