Go微服务容错与韧性(Service Resilience)

Service Resilience是指当服务的的运行环境出现了问题,例如网络故障或服务过载或某些微服务宕机的情况下,程序仍能够提供部分或大部分服务,这时我们就说服务的韧性很强。它是微服务中很重要的一部分内容,并被广泛讨论。它是衡量服务质量的一个重要指标。Service Resilience从内容上 ...

golang知识精要(一)

一、第一章 1. 命令行参数可通过os.Args访问,os.Args是切片 切片遵循左闭右开原则,如sl[1:3]不包含下标为3的元素 2. for循环两种方式 方式一: for initial; condition; post { } 三部分中任一部分都可以省略 方式二: for idx, val ...

golang开始篇

一 First Golang 1.1 需求 第一个程序hello.go,可以输出"hello golang" 1.2 开发步骤 开发这个程序时,我们的目录结构怎么处理(让自己或者别人开起来更加清晰舒服) 结构如下 代码如下: 对上图的说明 (1)go文件的后缀是 .go (2)package mai ...

GoCN每日新闻(2019-09-23)

1. 查看 Go 的代码优化过程 http://xargin.com/go-compiler-opt 2. go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包 https://segmentfault.com/a/1190000020461487 3. 使用 pprof和go-torch排查gola ...

Go语言 指针

指针 本章围绕字符串、数字、数组、切片、map、channel、结构体与指针赋值及函数传参的应用剖析 字符串 字符串本身也是StringHeader的结构体,包含Data指针与字符串长度,如下 type StringHeader struct { Data uintptr Len int } Dat ...

GoLang中面向对象的三大特性

有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的;继承,就是指 class 之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只 ...

Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如... ...

Go Modules使用教程

Go Modules 不完全教程 文章转载自公众号 Golang 成神之路 , 作者 L Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,在此之前,社区也不乏多种包管理方案。在讨论 Go Modules 之前,我们先回顾一下 Golang 的包管理历史的发展。然后讨论 ...

Golang 调用 C/C++,例子式教程

大部分人学习或者使用某样东西,喜欢在直观上看到动手后的结果,才会有继续下去的兴趣。 前言: Golang 调用 C/C++ 的教程网上很多,就我目前所看到的,个人见解就是比较乱,坑也很多。希望本文能在一定程度上,做到更通俗明了。 下面 golang 简称 go , 一如既往,少说废话,我们现在开始。 ...

GO 全面解析 json tag 篇

在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有反引号括起来的内容。形如: struct成员变量标签(Tag)说明 要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用 ...

[系列] go-gin-api 路由中间件 - Jaeger 链路追踪(五)

[TOC] 概述 首先同步下项目概况: 上篇文章分享了,路由中间件 捕获异常,这篇文章咱们分享:路由中间件 Jaeger 链路追踪。 啥是链路追踪? 我理解链路追踪其实是为微服务架构提供服务的,当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追 ...

[译] Go语言测试进阶版建议与技巧

阅读本篇文章前,你最好已经知道如何写基本的单元测试。本篇文章共包含3个小建议,以及7个小技巧。 建议一,不要使用框架 <! more Go语言自身已经有一个非常棒的测试框架,它允许你使用Go编写测试代码,不需要再额外学习其它的库或测试引擎。关于断言方面的帮助函数,你可以看看这个 "testing" ...

Go语言 切片

切片 简介 简单地说,切片就是一种简化版的动态数组。Go 数组的长度不可改变,而切片长度是不固定,切片的长度自然也就不能是类型的组成部分了。数组虽然有适用它们的地方,但是数组的类型和操作都不够灵活,因此在Go代码中数组使用的并不多。而切片则使用得相当广泛,理解切片的原理和用法是一个Go程序员的必备技 ...

Golang读取并修改非主流配置文件

今天工作中碰到的问题,要求修改此配置文件,没看出来是什么格式,用了下面的思路: 用Go代码修改如上所示的配置文件,如 字段的值,步骤如下: 获取键 的值; 将`radius_db = "test13"`整体包装成字符串; 包装新字符串; 整体替换。 主要实现代码: Go // 根据路径获取文件 co ...

[系列] go-gin-api 路由中间件 - 捕获异常(四)

[TOC] 概述 首先同步下项目概况: 上篇文章分享了,路由中间件 日志记录,这篇文章咱们分享:路由中间件 捕获异常。当系统发生异常时,提示 “系统异常,请联系管理员!”,同时并发送 panic 告警邮件。 什么是异常? 在 Go 中异常就是 panic,它是在程序运行的时候抛出的,当 panic ...