手撸golang GO与微服务 Saga模式之8 集成测试

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

Segmentfault 2021-03-23 15:32:33 ioly

常见排序算法总结和 Go 标准库排序源码分析

前言排序算法是数组相关算法的基础知识之一,它们的经典思想可以用于很多算法之中。这里详细介绍和总结 7 种最常见排序算法,并用 Go 做了实现,同时对比这几种算法的时间复杂度、空间复杂度和稳定性 。后一部分是对 Go 标准库排序实现的源码阅读和分析, 理解官方是如何通过将以上排序算法进行组合来提高排序性能,完成生产环境的排序实践。排序算法分类常见的这 7 种排序算法分别是:选择排序冒泡排序插入排序希尔排序归并排序快速排序堆排序我们可以根据算法特点像复杂度、是否比较元素、内外部排序等特点对它们做分类...阅读全文

Segmentfault 2021-03-23 09:32:33 lryong

知乎从Python转为Go,是不是代表Go比Python好?

众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言就说明 Go 语言比 Python 语言好”完全是一种片面理解。 “语言至上论”是解决不了业务问题的,选 Go 也不行,Java 也不行。 Go...阅读全文

51CTO博客 2021-03-18 21:38:01 mob604756f06ed8

级编程语言之对比:Rust VS Go

在竞争激烈的世界中发展,选择正确的编程语言非常重要,一旦开始。而编程语言,对于企业和开发人员,给人们提供良好的用户体验也非常重要。 现如今新编程语言层出不穷,从如此多的编程语言中选择一款最适合的变得相当困难。因此,我们在本文中将讨论两种最受开发者欢迎的编程语言:Rust和Go语言。除了介绍这语言外,还会比较两种语言之优缺点。 Rust语言Rust语言于2010年推出,其发明的主要目标在于全面提高安全性,出色模块化的设计,良好的并行性和语言性能。根据数据和研究,发现大约74.5%的开发人员喜欢和点...阅读全文

51CTO博客 2021-03-18 17:26:45 mob604756f09529

Go VS Java:一位资深程序员对两种语言的解读

导读:对于软件开发的编程语言,其实没有万能灵药。本文作者详细介绍了他使用Java和Go这两种编程语言,一个是传统语言,一个是新兴语言的工作方式。Go VS Java实话说,我很喜欢Java这门语言。近几年来,我在公司里积累了大量关于EJB2,DB2与Oracle等后端开发的专业知识。现在我转向到基于自然语言处理的开发方向,如Spring Boot、Redis、RabbitMQ、Open NLP还有UIMA等技术。因此说来,我选择的语言是Java,这个语言一直有旺盛的生命力,写起程序来也很有意思。...阅读全文

51CTO博客 2021-03-18 17:04:22 mob604756f09529

关于在C++中结构体与Json字符串互转的问题

大家有没有在项目中遇到过,将一些预定义的本地结构体转换为Json字符串后,发送到网络中的情形。那我猜想下大家常规的做法:写一个函数,传入结构体的指针,然后在函数中对结构体的每一个成员根据其类型,使用Json类库的赋值方法,直接或间接创建Json子对象,组成一个内存树状结构,最后调用Json类库的方法生成字符串。这样的做法似乎比较完美,工作完成得很好,确实也挑不出什么毛病来,让我们先看看在golang中是怎么做的: type Person struct { Name string Age int ...阅读全文

简书 2021-03-18 18:32:36 大匡先生

rabbitMq 交换机介绍 系列五 Header [golang 版本]

4种不同的交换机类型直连交换机:Direct exchange扇形交换机:Fanout exchange主题交换机:Topic exchange首部交换机:Headers exchange交换机具体含义参考 https://www.jianshu.com/p/469...Header 交换机以下代码参数具体含义可以参考 https://segmentfault.com/a/11...Demo生产者示例 producer.gopackage main import ( "fmt" "github....阅读全文

Segmentfault 2021-03-23 09:32:33 forlife

100行代码实现一个高性能网络转发小工具

使用场景就不说了,可以支持任意TCP网络数据转发用 google 搜索,有很多这样的代码片段,但是作为一个小工具,都不完整,比如没有参数解析,打印都是print,而不是规范的日志,有些异常也没有处理下面通过104行代码,完成一个麻雀虽小,但是五脏六腑都齐全的小工具命令行解析对于一个命令行工具,参数解析是第一步, 也可能是用户使用你的工具交互的首选途径,不管其他参数如何,总的需要一个-v,打印下程序的版本吧golang的命令行有很多强大的第三方库, 比如cobra , kingpin 等,但是既然...阅读全文

Segmentfault 2021-03-22 23:32:33 JoeLei

Golang程序设计——函数

本文学习Go语言函数知识。函数是基本的代码块,用于执行一个任务。在Go语言中,函数可以接收数量不固定的参数,也可以返回多个结果。函数结构在编程领域,函数向编译器和开发者提供了有关的信息,这些信息指明了函数该接收什么样的输入以及会产生什么样的输出。这些信息是通过函数第一行提供的,第一行称为函数签名。Go语言声明函数语法如下:func 函数名称(参数名 参数类型) (返回值名称 返回值类型) { // 函数体 return语句 }参数名在参数类型前面,如a int,这一点和其他语言是不同的函数参数数...阅读全文

51CTO博客 2021-03-18 16:22:14 mob604756e4bbe8

在vscode中go编码发生的问题整理

使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。引言使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。前期准备,必看在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就跟着我的步骤操作一遍,可能操作后,...阅读全文

51CTO博客 2021-03-18 15:44:47 mob604756e49326

rabbitMq 交换机介绍 系列四 Topic [golang 版本]

4种不同的交换机类型直连交换机:Direct exchange扇形交换机:Fanout exchange主题交换机:Topic exchange首部交换机:Headers exchange交换机具体含义参考 https://www.jianshu.com/p/469...Topic 交换机以下代码参数具体含义可以参考 https://segmentfault.com/a/11...Demo生产者示例 producer.gopackage main import ( "fmt" "github.c...阅读全文

Segmentfault 2021-03-22 23:32:33 forlife

rabbitMq 交换机介绍 系列三 Direct [golang 版本]

4种不同的交换机类型直连交换机:Direct exchange扇形交换机:Fanout exchange主题交换机:Topic exchange首部交换机:Headers exchange交换机具体含义参考 https://www.jianshu.com/p/469...Direct 交换机以下代码参数具体含义可以参考 https://segmentfault.com/a/11...Demo生产者示例 producer.gopackage main import ( "fmt" "github....阅读全文

Segmentfault 2021-03-22 15:32:34 forlife

rabbitMq 交换机介绍 系列二 Fanout [golang 版本]

4种不同的交换机类型直连交换机:Direct exchange扇形交换机:Fanout exchange主题交换机:Topic exchange首部交换机:Headers exchange交换机具体含义参考 https://www.jianshu.com/p/469...Fanout 交换机以下代码参数具体含义可以参考 https://segmentfault.com/a/11...Demo生产者示例 producer.gopackage main import ( "fmt" "github....阅读全文

Segmentfault 2021-03-22 09:32:33 forlife

2021-03-18 golang 以太坊大额转账转换问题

构建以太坊普通交易结构的时候,有个 value参数,类型为 *Int,正常情况下直接 value := big.NewInt(100000000000000000000) 1ETH当想转更多时,比如100eth,1000eth 就会报 int64溢出出错正确的做法是 : 为方便入参,从上游接收一个string类型的value,然后 valuef, err := strconv.ParseFloat(value,64) //先转换为 float64if err != nil { log.Print...阅读全文

简书 2021-03-18 09:32:36 斜杠青年_728f

在vscode中go编码发生的问题整理

引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。 前期准备,必看 在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就跟着我的步骤操作一遍,可能操作后,你的问题就解决了。 1、配置golang的源。 go env -w GOPROXY=https://goproxy.cn,direct 然后我们进行golang工具的默认工...阅读全文

简书 2021-03-18 00:32:58 HapplyFox

2021-03-17:手写代码:单链表插入排序。

2021-03-17:手写代码:单链表插入排序。 福大大 答案2021-03-17: 从链表的第二个节点开始遍历。当前节点的左边所有节点一定是有序的。先比较当前节点和左邻节点,如果左邻节点小于等于当前节点,直接下个节点;如果左邻节点大于当前节点,从链表的有序部分的第一个节点开始遍历,找到当前节点小于有序部分的某个节点,然后插入进去。 代码用golang编写,代码如下: package main import "fmt" func main() { //head := &ListNode{Val:...阅读全文

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

钉钉 ChatOps demo

一直想搞ChatOps,就是你at一下机器人,机器人会回复你对应内容那种,aws提供的方案对接的是slack,slack国内可能用的不多 公司用钉钉,自己每过一段时间就去搜一下,got luck today,钉钉好像刚开放了可以做应答的机器人 看了下钉钉的文档,开搞 准备一个https有效的域名接收钉钉推过来消息(试过https验证不过,钉钉那边调不了哈) 拜托了一下企业钉钉的管理员加个机器人 撸demo,最近在学golang,就用go写了 Here's the code package mai...阅读全文

简书 2021-03-18 00:32:52 TedCat

prometheus实战---告警模板编写(四)

本篇文章主要介绍如何编写alertmanager的告警模板,使用这个告警模板,可以格式化我们的告警信息,让告警内容更加易读和美观 prometheus 告警规则详解: https://www.dogfei.cn/archives/alertmanager-rule prometheus 配置文件参考与介绍: https://www.dogfei.cn/archives/prometheus-config 告警模板 上篇文章介绍了关于告警规则的一些编写,在使用企业微信告警的时候,提到了告警模板,这...阅读全文

简书 2021-03-18 00:32:52 dogfei

leetcode 115. 不同的子序列 golang

不同的子序列 思路 动态规划 dp[i][j]表示S前i个字符 中 T前j个字符的个数。 则有如下递推公式 如果 s[i]==t[j] dp[i][j] = dp[i-1][j-1]+ dp[i-1][j], 否则 dp[i][j]=dp[i-1][j]. 另外还有quickpath: 如果s的长度比t小一定为0. 所以可以快速返回 代码 func numDistinct(s string, t string) int { if len(s) < len(t) { return 0 } s = ...阅读全文

简书 2021-03-18 00:32:52 lucasgao