Go Transaction

数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务由事务开始和事务结束之间执行的全部数据库操作组成。 比如:MySQL存储引擎分为MyISAM、InnoDB、Memory、Merge等,其中支持事务的引擎为InnoDB. ACID 通常事务必须满足4个条件: 原子性(Atomicity):不可分割性 一个事务中的所有操作,要么全部完成,要么完全不完成,不会结束在中间某个环节。事务在执行过程中发...阅读全文

简书 2021-04-07 19:32:35 JunChow520

手撸golang 学etcd 手写raft协议之12 单元测试

手撸golang 学etcd 手写raft协议之12 单元测试 缘起 最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1) 本系列笔记拟采用golang练习之 raft分布式一致性算法 分布式存储系统通常会通过维护多个副本来进行容错, 以提高系统的可用性。 这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性? Raft算法把问题分解成了四个子问题: 1. 领袖选举(leader election)、 2. 日志复制(log replication)、 3....阅读全文

简书 2021-04-07 19:32:32 老罗话编程

什么是量化交易|量化交易平台

什么是量化交易? 量化交易,是成熟交易市场的标志之一,其最显著的优势在于,买/入卖/出股/票,由量化模型来决定,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策,从而进行理智投资,这也是交易所量化交易平台所具备的一大特点,此外,还具备智能提醒,策略推送等特点。 量化交易系统主要部分有哪些? 主要包括四个主要部分: 1.策略识别:搜索策略、挖掘优势、确定交易频率。 2.回溯测试:获取数据、分析策略性能、剔除偏差。 3.交割系统:连接经纪...阅读全文

Go语言中文网 2021-04-07 18:09:21 153o56o1oo3

用go编写prometheus自研exporter——CPU及内存的指标

需求:利用go语言获取linux主机的cpu利用率及内存使用量和剩余量,并将其制作成exporter 编写go代码及注解如下: package main import ( "bufio" "io/ioutil" "net/http" "os" "fmt" "strconv" "strings" "time" ) func getCPUSample() (idle, total uint64) { //读取/proc/stat内容 contents, err := ioutil.ReadFile(...阅读全文

51CTO博客 2021-04-07 15:53:00 上古杰作

22 Golang中的接口(二)

空接口 空接口表示没有任何约束,因此任何类型变量都可以实现空接口 用空接口可以表示任何数据类型 demo package main import "fmt" //空接口 type A interface { } func main () { var a A var str = "你好Golang" a = str // 让字符串实现A接口 fmt.Printf("值:%v 类型:%T\n", a, a) // 值:你好Golang 类型:string var num = 20 a = num /...阅读全文

简书 2021-04-07 15:39:52 learninginto

23 Golang中的接口(三)

结构体值接收者和指针接收者实现接口的区别 值接收者 如果结构体中的方法是值接收者,那么实例化后的结构体值类型和指针类型都可以赋值给接口变量 指针接收者 如果结构体中的方法是指针接收者,那么只有实例化后的指针类型可以赋值给接口变量,结构体值类型不能赋值给接口变量 demo 定义一个Animal接口,Animal中有两个方法,分别是SetName和GetName,分别让Gog结构体和Cat结构体实现接口中的方法 type Animaler interface { SetName(string) Ge...阅读全文

简书 2021-04-07 15:39:52 learninginto

Go ast

AST是抽象语法树(Abstract Syntax Tree)的简称,AST以树状形式表现编程语言的语法结构,树上每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。 ast包声明了用于表示Go包的语法树的类型 ast.Node Golang会将所有可以识别的token抽象成为ast.Node,通过接口方式组织在一起。 AST节点实现了ast.Node接口,返回AST中的一个位置。 type Node interface { Pos(...阅读全文

简书 2021-04-07 15:38:47 JunChow520

如何规范使用Design Pattern With Go设计模式-工厂模式

简单工厂 考虑一个加密程序的应用场景,一个加密程序可能提供了AES,DES等加密方法,这些加密方式都实现了同一个接口ICipher,它有两个方法分别是 Encript 和 Decript。我们使用加密程序的时候会希望简单的指定加密方式,然后传入原始数据以及必要参数,然后就能得到想要的加密数据。这个功能用简单工厂如何实现呢? 模式结构 简单工厂模式包含一下几个角色: Factory(工厂角色),负责创建所有实例。 Product(抽象产品角色),指工厂所创建的实例的基类,在 golang 中通常为...阅读全文

简书 2021-04-07 15:38:10 码农Kkio

Go入门(7)——切片

切片与数组的关系Go入门(7)——切片Go语言中切片是对数组的抽象。Go数组的长度不可改变,在特定场景中可能显得比较笨重。Go提供了一种灵活的、功能强悍的内置类型切片,可理解为动态数组,其长度不固定且可以追加元素。追加元素可能导致切片容量增大。切片是对数组中一个连续片段的引用(这里所谓的数组被称为“相关数组”,通常是匿名的),所以切片是一个引用类型(类似于C/C++的数组类型、Python的list类型)。这个切片可以是整个数组,或者是由起始和终止索引标识的一些项形成的子集(终止索引标识的项并不...阅读全文

51CTO博客 2021-04-07 13:45:40 mb6066e165689bf

5分钟学Go 基础01:初识 Go

最近几年,随着云计算、区块链等技术的发展,有一门语言逐渐成为大家热衷讨论的对象,成为了继 Python 之后的另一块香饽饽,那就是 Go 语言。其实如果要追溯历史的话,Go 语言诞生于 Google,从 2007 年便开始设计,并于 2009 年 11 月 10 日正式发布第一版,此后便开始在 Google 内部使用。正如 Python 借助 AI 的东风大火一样,Go 语言大范围的使用和普及也是借助了云计算、区块链等技术的东风,特别是云计算,以 Google 开源的 Kubernetes 为代...阅读全文

51CTO博客 2021-04-07 13:02:42 mb6066e165689bf

极速精简 Go 版 Logstash

前言今天来介绍 go-zero 生态的另一个组件 go-stash。这是一个 logstash 的 Go 语言替代版,我们用 go-stash 相比原先的 logstash 节省了2/3的服务器资源。如果你在用 logstash,不妨试试,也可以看看基于 go-zero 实现这样的工具是多么的容易,这个工具作者仅用了两天时间。整体架构先从它的配置中,我们来看看设计架构。Clusters: - Input: Kafka: # Kafka 配置 --> 联动 go-queue Filters: # ...阅读全文

51CTO博客 2021-04-07 11:39:46 mb6063e426e828c

[Go] golang的GMP调度模型

GMP是三个缩写G : groutineM : Machine 系统线程P : Processor 处理器 GMP调度就是循环在与P(处理器)绑定的M(系统线程)上寻找可执行的G(协程) 在当前P(处理器)上创建G(groutine)后 , 会把G放入P的本地队列或者全局队列 , 本地队列限制256个 , 满了就放全局队列 在当前P(处理器)创建或者唤醒M(系统线程) , 去事件循环执行G(groutine) 在当前P(处理器)上如果全局/本地队列为空 , 会去从别的处理器上窃取一半的G拿来执行...阅读全文

51CTO博客 2021-04-07 10:43:57 mb6063e426e828c

你才不是只会理论的女同学-seata实践篇

image 本文主要内容为seata的实践篇,理论知识不懂的请参考前文: 我还不懂什么是分布式事务 主要介绍两种最常用的TCC和AT模式。 环境信息: mysql:5.7.32 seata-server:1.4.1 SpringCloud:Hoxton.SR10 SpringBoot:2.3.8.RELEASE 注册中心:Eureka 涉及服务: image Seata-server 1、在file.conf中修改 mode = "db" 然后配置DB信息: ## database store ...阅读全文

简书 2021-04-07 01:32:38 你呀不牛

2021-04-06:假设有一个源源吐出不同球的机器,只有装下10个球的袋子,每一个吐出的球,要么放入袋子,要么永远扔掉。如何做到机器吐出每一个球之后,所有吐出的球都等概率被放进袋子里。

2021-04-06:假设有一个源源吐出不同球的机器,只有装下10个球的袋子,每一个吐出的球,要么放入袋子,要么永远扔掉。如何做到机器吐出每一个球之后,所有吐出的球都等概率被放进袋子里。 福大大 答案2021-04-06: i为球的序号。i从1开始,小于等于10的时候直接进袋子。i大于10的时候,10/i的几率进袋子;在袋子中的球,1/10的几率淘汰。 代码用golang编写。代码如下: package main import ( "fmt" "math/rand" "time" ) func ...阅读全文

简书 2021-04-07 01:32:32 福大大架构师每日一题

golang json格式化自定义日期格式

go 的time.Time,在json序列化是默认 2006-01-02T15:04:05Z07:00 的格式,十分不便, encoding/json包在序列化和反序列化的时候分别调用encode.go 下的Marshaler接口的MarshalJSON方法和decode.go下的Unmarshaler接口的UnmarshalJSON方法,只要类型分别实现这两个接口即可 这里我需要序列化的时候转为日期格式,反序列化显示为时间戳格式 package utils import ( "errors" ...阅读全文

简书 2021-04-07 01:32:31 linqining

Go开发工程师:迎接上升风口,踏入蓝海行业!

点击下载:百度网盘适合零基础小白学习吗小同学,当你问出这句话的时候,就说明你已经不是小白了,你是个很有主见的“大人”了,要是你问零基础适合学习么?我肯定的告诉你:非常适合,而且要相信自己不是小白,而是小牛~祝你更进一步,加油~课程中的项目是真的企业级/商业级项目么?同学这个问题是我见过问得最有水平的问题了~ 确实网络上充斥了很多美其名曰“企业级/商业项目”,然而当你咨询想要体验一下项目效果,这么最低的标准都达不到,也就是网络充斥很多打着“企业级”名号的耍流氓项目,他们连最低的企业级标准--可部署...阅读全文

Go语言中文网 2021-04-07 00:12:57 taitannikehao1

golang令牌桶实现 [go-rate] 速率限制器

go-rate是速率限制器库,基于 Token Bucket(令牌桶)算法实现。 go-rate被用在LangTrend的生产中 用于遵守GitHub API速率限制。 速率限制可以完成一些特殊的功能需求,包括但不限于服务器端垃圾邮件保护、防止api调用饱和等。 库使用说明 构造限流器 我们首先构造一个限流器对象: limiter := NewLimiter(10, 1); 这里有两个参数: 第一个参数是 r Limit。代表每秒可以向 Token 桶中产生多少 token。Limit 实际上是...阅读全文

51CTO博客 2021-04-06 13:38:31 qq5c5012ac9b084