Go语言中文网 为您找到相关结果 105

golang test测试使用

1.创建测试文件夹mysql,文件夹下的go文件的package必须与文件夹名一致(不然会识别不到) 2.创建需要测试的文件mysql.go(使用github.com/go-sql-driver/mysql包) package mysql import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func findByPk(pk int) int { var num int = 0 db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/plugin_master?charset=utf8") if err != nil { panic(err.Error()) } def...阅读全文

博文 2015-03-06 03:00:16 benlightning

go语言的chan

chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。 chan的数据结构: struct Hchan { uintgo qcount; // total data in the q uintgo dataqsiz; // size of the circular q uint16 elemsize; uint16 pad; // ensures proper alignment of the buffer that follows Hchan in mem...阅读全文

博文 2015-05-18 03:00:01 richmonkey

分布式事务一致性方案

http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。而大型互联网平台往往是由一系列分...阅读全文

博文 2017-03-09 05:02:33 jey恒

ECUG Con 邀您共议服务端开发最深度实践

![](http://ww4.sinaimg.cn/mw1024/7bb2bde1gw1f061fokhgpj20o00dd40x.jpg ) ECUG 全称为 Effective Cloud User Group (实效云计算用户组),由七牛云 CEO 许式伟于 2007 年发起,集结了一批具有高端视角并仍醉心于技术本身的同仁,共同关注云计算前沿技术的最新成果和分布式开发、运维的最佳实践。在过去的八年中, ECUG 社区每年都会组织一场全国性的 ECUG Con 大会,期间众多技术大神纷纷参与,他们或许在大众技术会议已经鲜少露面,但会在 ECUG Con 畅谈心得,共同奉献一场半公开的高规格技术分享盛会。 ECUG Con 发展历程 ![](http://cdn.huo...阅读全文

ECUG Con 邀您共议服务端开发最深度实践

ECUG 全称为 Effective Cloud User Group (实效云计算用户组),由七牛云 CEO 许式伟于 2007 年发起,集结了一批具有高端视角并仍醉心于技术本身的同仁,共同关注云计算前沿技术的最新成果和分布式开发、运维的最佳实践。在过去的八年中, ECUG 社区每年都会组织一场全国性的 ECUG Con 大会,期间众多技术大神纷纷参与,他们或许在大众技术会议已经鲜少露面,但会在 ECUG Con 畅谈心得,共同奉献一场半公开的高规格技术分享盛会。 ECUG Con 发展历程 ECUG Con 2015 将于 2016 年 1 月 22 ~ 23 日在新疆大厦举行,作为具有重要意义的第十期聚会,我们落地北京,同时首次面向所有技术人群公开报名。本届大会仍然以交流云计算产业的最...阅读全文

博文 2017-02-09 08:10:45 七牛云

中间件xxl-job-executor的gin中间件

# xxl-job-executor的gin中间件 ## 背景 xxl-job-executor-go是xxl-job的golang执行器,可以独立运行,有时候我们要与项目或者框架(如:gin框架)集成起来合并为一个服务,本项目因此而生。 ## 执行器项目地址 https://github.com/xxl-job/xxl-job-executor-go ## 与gin集成示例 ```go package main import ( "github.com/gin-gonic/gin" "github.com/gin-middleware/xxl-job-executor" "github.com/xxl-job/xxl-job-executor-go" "...阅读全文

开源项目 2020-12-23 19:48:35

go-lexer-词法分析

词法分析一般是编译器的第一部分,而且词法分析很简单,就是一个有限状态机.开始词法分析的过程就是把源文件转换成一组预先定义好的token的过程.这一组被统一表现的token之后会被送入语法分析器进行语法解析,这里我们主要关注如何进行词法分析. 做词法分析就几种方法: 直接使用工具比如lex. 使用更低一层的正则表达式. 使用状态动作,构造一个状态机. 而真正实现一个语言的话,使用工具没有什么错,但是问题是,很难获得正确的错误提示.工具生成的错误处理很弱.而且需要学习另一门规则或特定的语法.生成的代码可能性能不好,难以优化,但是用工具可以非常简单实现词法分析.早期编译器的设计阶段都会使用lex来做词法分析器,比如gcc和Go都是这么做的,但是到了后期一个真正生产化的语言可能不能依赖生成的代码,而...阅读全文

博文 2016-04-12 10:32:31 yueyue.gao

[翻译] Go(#golang) 实现的状态机

春节前,粗略研究了一下微信的公共帐号。用 Golang 实现了一个简单的 package wechat,用于接入微信公共帐号。当时就在思考,微信的文字交互过程如果要实现有一定逻辑的复杂过程,可能需要使用到状态机。然后,就看到了这篇文章:《State machines in Go (#golang)》。非常合时宜啊!翻译于此,以飨读者! ——–翻译分隔线——– Go(#golang) 实现的状态机 我已经用 Go 代替 Python 重写了一个关键的服务组件。由于 Python 的解释器不是线程安全的,所以在解析的时候使用了全局锁。Go 与 Python 不同,它内建了并发支持,并且是静态编译的。 首先要实现一个状态机。Python 的版本是基于 David Mertz 的这篇文章。 Mert...阅读全文

博文 2014-10-09 16:18:31 mikespook

Golang: 有限状态自动机

有限状态机 又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。 FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概念以及实现。 现实生活中,状态是随处可见的,并且通过不同的状态来做不同的事。比如冷了加衣服;饿了吃饭;困了睡觉等。这里的冷了、饿了、困了是三种不同的状态,并且根据这三个状态的转变驱动了不同行为的产生(加衣服、吃饭和睡觉)。 FSM是什么 所谓有限状态机,就是由有限个状态组成的机器。再看上面举到的例子:人...阅读全文

Mirai源码解析

Mirai概述 mirai,2016年一个备受关注的DDoS攻击程序,与传统的僵尸网络不同的是,mirai的控制的僵尸主要是摄像头等嵌入式设备,mirai的出现将一大波安全研究者引入了IoT安全领域。 mirai的事迹主要有: 2016.9.20 ,攻击Brian Krebs个人网站,攻击流量达到665Gbps,据称有150万僵尸发起攻击。 2016.9.21, 攻击法国网络服务商OVH,攻击流量达到1Tbps 2016.9.30,mirai开源 2016.10.21, 攻击Dyn DNS,导致Github、Twitter等美国大半个互联网下线 2016.11.28, 攻击德国电信,mirai出现新变种 mirai已经成为IoT DDOS攻击的母体。 mirai能够控制如此大规模的僵尸网络,...阅读全文

博文 2017-07-12 09:07:07 zengfan

golang信号signal的处理

在实际项目中我们修改了配置文件后,希望在不重启进程的情况下重新加载配置文件,这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。下面给一个些示例。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 package main import ( "fmt" "os" "os/signal" //"syscall" ) func main() { c := make(chan os.Sig...阅读全文

博文 2015-10-14 14:27:22 陈杰斌

Go 语言的 CMS 工具库 Qor

Qor 是基于 Golang 开发的的CMS 一系列工具库,基于 Qor可以快速搭建网站的后台管理系统。 Qor 的工作库包含: 1,后台管理:可以对数据库进去 CURD 管理,支持一对一,一对多,多对多关联关系维护等等 2,支持上传图片到云以及 filesystem,resize、crop 图片等等 3,Publish 发布系统,可以修改数据,并且经过检查后,再发布到正式环境中 4,状态机,可以用于开发工作流的系统 5,I18n,翻译,可以通过在 WEB 界面翻译,并将翻译保存到数据库中 6,L10n,本地化,不同于翻译,他可以针对某个地区来对内容,或者数据结构进行本地化。 7,Roles,权限管理 8,Exchange,通过 Excel,CSV 导入导出数据 9,Wo...阅读全文

蚂蚁金服中间件团队校招 — Java 研发工程师/Golang 研发工程师

蚂蚁金服中间件 2019 年的校招已经开始了,2019 年毕业的同学可以看过来了。 团队介绍 我们来自于蚂蚁金服的中间件团队,是蚂蚁金服最为核心的基础部门之一,开源蚂蚁金服的金融级分布式中间件 SOFA 为蚂蚁金服所有的应用研发以及生态伙伴提供服务。支持每年双十一、双十二、新春红包等促销活动。 招聘岗位 Java 研发工程师 Golang 研发工程师 Base 地 杭州,北京 岗位描述 加入我们,你将参与 SOFA 开源的研发,打造金融级分布式架构的体系。 加入我们,你将接受到每年双十一,双十二带来的高并发的,高性能的极致性能挑战。 加入我们,你将在实际生产环境中应用世界前面的技术方向,引领未来。 岗位要求 酷爱着计算机以及互联网技术,热衷于解决挑战性的问题,追求极致的用户体验; 痴迷于数据...阅读全文

博文 2018-07-03 12:34:40 khotyn

channel数据结构

channel是go语言的一大特色,使用原子函数还是使用互斥锁都不如使用channel来的简单,go语言中的channel可以作为函数参数传递和返回值返回,通过发送和接受数据在goroutine之间同步(在学习和使用go语言的时候,我们应该牢记,go语言中所有的结构都是值拷贝的) 本文不对channel使用作讲解,直接上 *酸(dai)菜(ma)* : type hchan struct { qcount uint //队列数据总的数据数量 dataqsiz uint //环形队列的数据大小 buf unsafe.Pointer //指向dataqsiz元素类型大小的数组 elemsize uint16 closed uint32 elemtype *_type // 元素类型 sendx ...阅读全文

Go 1.6将进一步改进垃圾收集器

尽管Go 1.5刚刚发布,仍然相对较新,但是Go团队已经在致力于改进其新的低延迟并发垃圾收集器,希望Go更适合新的应用领域。Google工程师Austin Clements和Rick Hudson如是说。 Go 1.5用新的垃圾收集器代替了原来的STW(stop-the-world) GC,解决了延迟问题。当负载较重时,每50ms,新的GC的活动时间可以控制在10ms以下,从而使Go程序在一般情况下能运行得更快些。在更极端的情况下,停顿可以从300ms降到4ms。 Go 1.6的目标是进一步稳定GC,并在以下几个方面做出改进: 状态协调(State coordination):Go 1.5 GC有个主要瓶颈是从Go 1.4继承来的,源自其集中式的GC协调器(coordinator),这是一个...阅读全文

博文 2015-09-13 14:40:00 臧秀涛

Nsq从入门到实践

当nsq跑起来之后, 我们可能会遇到以下问题 分布式部署 处理错误(何时requeue) 如何使用golang lib 抱着不应该只停留在入门的态度, 笔者粗浅的研究了一下这几个问题, 希望也对有同样疑问的人有帮助. 部署 由于NSQ的分布式网络结构, NSQD必须广播(到lookup)自己的地址并让消费者连接, 那么多个NSQD无法做透明负载均衡. 就必须为每一个NSQD分配单独的IP(或host)以保证消费者(在lookup找到NSQ节点)能够正确的连接. 这样部署起来可能会麻烦一些 但问题不大, 注意一下就好. ps: 如果有更好的方法请告诉我, 小弟感激不尽. NSQ Requeue And Backoff 建议结合官方文档来看 requeue(重试) 用于当错误发生, 需要重试时....阅读全文

急招武汉GO语言开发工程师15-25K

急聘武汉地区golang服务器开发工程师15-25K 职位描述: 1、负责后端GO语言TCP协议开发工作 2、与基础架构工程师、运维工程师一起实现稳定、可扩展的后台服务 3、数据驱动,不断通过产品和技术数据进行改进,并完成快速迭代 任职资格: 1、熟悉GO语言,熟悉C++更好 2、熟悉TCP/UDP协议,IM单聊群聊架构,游戏状态机、定时器等 3、熟悉常见的游戏开发算法,网络同步策略等 有意者加QQ:1948977976详聊或直接发简历到1948977976@qq.co...阅读全文

为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是直接编译成机器码?

为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是直接编译成机器码? 之所以问这个问题是因为知乎上有问题“为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 + 静态?”,其中大多数答案都是在说动态语言存在的问题 那么按照这个逻辑,这三门语言都不是像JAVA、C#那样先编译成中间代码(JAVA字节码和CIL)、在运行时再JIT成机器码,那是不是说明中间码这种思路也有问题呢? 1 条评论 分享 按投票排序按时间排序 2 个回答 什么是答案总结? 答案总结 4赞同 反对,不会显示你的姓名 匿名用户 沈世军、Colliot、卿培 等人赞同 你忘记scala和clojure等jvm上的语言了。所以提问的前提就不对 你忘记sca...阅读全文

博文 2016-04-20 10:00:01 autumn20080101

sync.Once的实现分析

sync.once可以控制函数只能被调用一次,不能多次重复调用。 我们可以用下面的代码实现一个线程安全的单例模式 ``` package singleton import ( "fmt" "sync" ) type object struct { name string } var once sync.Once var obj *object //单例指针 //公开方法 外包调用 func Instance() *object { once.Do(getObj) return obj } func getObj() { if obj == nil { obj = new(object) //可以做其他初始化事件 } } //单例测试 func (obj *object) Test() { f...阅读全文

博文 2016-06-11 20:17:31 shanks

Golang单例模式

单例模式,是一种常用的软件设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 1. 懒汉模式(Lazy Loading) 懒汉模式是开源项目中使用最多的一种,最大的缺点是非线程安全的 type singleton struct { } // private var instance *singleton // public func GetInstance() *singleton { if instance == nil { instance = &singleton{} // not thread safe } return instance } 2. 带锁的单例模式 type...阅读全文

博文 2017-10-13 10:04:48 iCaptain

老司机带你用 Go 语言实现 Raft 分布式一致性协议

老司机带你用 Go 语言实现 Raft 分布式一致性协议   随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。   为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。任何一个分布式系统都无法同时满足 Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)这三个基本需求,最多只能满足其中两项。 但是,一个分布式系统无论在 CAP 三者之间如何权衡,都无法彻底放弃一致性(Consistency),如果真的放弃一致性,那么就说明这个系统中的数据根本不可信,数据也就没有意义,那么这个系统也就没有任何价值可言。...阅读全文

博文 2017-02-09 06:00:24 chauncy

行为树 behavior3go

参考 游戏AI - 行为树Part1:简介 游戏AI - 行为树Part2:框架 https://github.com/f15gdsy/BT-Framework http://www.u77.com/game/3067 一、有限状态机 游戏中的AI,大多数都是按照规则设定好的,没有太多花哨的技术。原因有几个: 一是出于风险成本的考虑,用一个新技术,需要程序员开发相应的算法和框架,游戏设计师重新上手设计方法和摸索算法的适用范围,小团队承受不起这样的开销,大团队又怕做坏名声; 二是“高级”的AI算法并不直观,难以设计。举一个例子,怎么利用神经网络来训练一个士兵AI?我见过的一个例子是设计师用几个按键来操作士兵移动攻击,然后程序自动记录敌我双方的数据和设计师的操作,最后利用这些信息作为input构...阅读全文

博文 2019-07-02 18:32:41 合肥懒皮

用GO实现的erlang的genfsm.

关于erlang的有限状态机,参考erlang四大behaviour之二-gen_fsm这篇文章。 有限状态机可以用下面这个公式来表达 State(S) x Event(E) -> Actions(A), State(S') 这两天正好空闲,就用golang实现了一下,话不多说,直接上代码 package util import ( "errors" "reflect" "sync" "time" "unicode" "unicode/utf8" "util/log" ) var typeOfError = reflect.TypeOf((*error)(nil)).Elem() type FSM struct { sync.Mutex StopReason string rcvr refl...阅读全文

博文 2015-01-13 12:09:56 sll1983

一个有特色的有限状态机

gofsm是一个简单、小巧而又特色的有限状态机(FSM)。 github已经有了很几个状态机的实现,比如下面的几个,还为什么要再发明轮子呢? 原因在于这些状态机有一个特点,就是一个状态机维护一个对象的状态,这样一个状态机就和一个具体的图像实例关联在一起,在有些情况下,这没有什么问题,而且是很好的设计,而且比较符合状态机的定义。但是在有些情况下,当我们需要维护成千上百个对象的时候,需要创建成千上百个状态机对象,这其实是很大的浪费,因为在大部分情况下,对象本身自己会维护/保持自己当前的状态,我们只需把对象当前的状态传递给一个共用的状态机就可以了,也就是gofsm本身是“stateless”,本身它包维护一个或者多个对象的状态,所有需要的输入由调用者输入,它只负责状态的转换的逻辑,所以它的实现非常...阅读全文

博文 2017-02-08 12:53:45 smallnest

TCP self-connection

Go 语言的 net 库里有下面这样的一段代码,这段代码是用来发起一个 tcp 连接的,仔细阅读这段代码可以发现代码里处理了一种很不常见的特殊情形,也就是 tcp self-connection。代码中的注释解释得很详细了。 func dialTCP(net string, laddr, raddr *TCPAddr, deadline time.Time) (*TCPConn, error) { fd, err := internetSocket(net, laddr, raddr, deadline, syscall.SOCK_STREAM, 0, "dial", sockaddrToTCP) // TCP has a rarely used mechanism called a 'si...阅读全文

博文 2014-12-21 14:54:33 skoo

Go语言Web框架Tango中的中间件应用级别

Tango在创建之初就支持了全局中间件的支持,经过最近的改进,同时支持了Group级别和Route级别的中间件。下面我们就一起来看下这三种级别的中间件: 比如我们自定义了一个新的中间件: ```Go func MyMiddleware() tango.HandlerFunc { return func(ctx *tango.Context) { ctx.Info("I'm a middleware") ctx.Next() } } ``` # 全局中间件 全局中间件在任何一个请求调用时均会进行调用。用法如下: ```Go t := tango.Classic() t.Use(MyMiddleware()) t.Get(...阅读全文

深入浅出 Raft - 基本概念

引子 因为一直在跟 Raft 打交道,虽然对 Raft 很熟悉了,但如果你要我去给一个完全不知道什么是 Raft 的人讲 Raft,我觉得难度还是非常大的。所以我决定使用我一贯罗里吧嗦,用比喻和讲故事的方式,来尝试说说 Raft。 如果你跟你孩子一起看过小猪佩奇,你大概就能知道我为啥用了这么怪的取名。如果没看过的,强烈推荐你去看看,这真的是一部很不错的儿童动画。 日志和状态机 兔小姐准备在泥坑小镇成立一家银行(就叫泥坑银行吧)。对于银行储蓄系统的设计,兔小姐找来了猪爸爸。 兔小姐:『猪爸爸,我们要保证,无论怎样用户的金钱不能有错误。假如客户存了 100 块钱,那么他的账户就会多出来 100 块钱,不会是 101,也不会是 99。』 猪爸爸:『好的,兔小姐,我觉得我们可以这样。如果一个客户来存...阅读全文

博文 2017-10-16 02:43:35 siddontang

蚂蚁中间件面试指南

写过代码的技术同学都知道,中间件在整个技术体系里的重要性。在过去的十多年里,蚂蚁金服自主研发出了金融级的分布式中间件 —— SOFAStack,并多次在极为复杂的场景下得到验证,比如每年的双 11。在蚂蚁金服,中间件团队是一个带着“光环”的队伍,CTO 程立、副 CTO 胡喜都出自这个组织……文/图 无暮配置千万条,集群第一条,环境不匹配,战友两行泪。——《流浪程序猿》为什么选择蚂蚁中间件2 年前的这个时候,作为南哪大学(南京大学)实习求职大潮的一名小白,一开学各种互联网大小厂学长学姐的内推邮件就塞满了邮箱,特别是阿里系的内推邮件各种部门玲琅满目。要说为什么在众多内推中对蚂蚁中间件情有独钟,说起来有表里两个原因:先说里原因,一直觉得程序员的核心是用抽象和自动化来低成本和快速地实现更多的价值,...阅读全文

博文 2019-04-11 19:34:41 蚂蚁金服科技

go 有限状态机

用Go语言写了一个有限状态机,放在github上,有兴趣的同学可以看看:https://github.com/sharplog/hackberry $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.a...阅读全文

博文 2016-01-31 10:00:02 logsharp

老司机带你用 Go 语言实现 Paxos 算法

老司机带你用 Go 语言实现 Paxos 算法  在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistence),等同于所有节点访问同一份最新的数据副本; 可用性(Availability),每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据; 分区容错性(Network partitioning),以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。 上车  今天说说一致性,分布式系统中的节点通信存在两种模型:共享内存(Shared mem...阅读全文

博文 2017-03-23 08:36:43 chauncy

消息服务中间件WQS

WQS 是微博开源的消息服务中间件。 多租户支持; 多 IDC 支持; 多协议支持 memcached、http 1/2、motan 轻客户端。(去 zk 依赖、无 partition 感知) 支持 pub/sub、long polling、pipeline; 支持 TTL; 支持 filter。 WQS 目前支持多 IDC 部署,创建队列时选取响应的配置表明该队列是否需要多 IDC 功能支持,当 WQS 集群跨 IDC 部署时: Producer 通过 WQS 实例写消息会时写到与自身实例部署在同一 IDC 内的 Kafka 集群上。 Consumer 通过 WQS 实例读消息时,该实例会根据 Queue 的配置来执行响应的行为。 当 Queue 未配置多 IDC 同...阅读全文

开源项目 2017-12-05 07:00:03 网友

golang test测试实例

本文的目的是对mymysql进行单元测试和性能测试 准备工作: 1 go get github.com/ziutek/mymysql/thrsafe 2 在mysql建表和初始化数据(db是test) 1 2 3 4 5 6 7 8 9 10 11 12 drop table if exists admin; CREATE TABLE `admin` ( `adminid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL DEFAULT '' COMMENT '后台用户名', `password` char(32) NOT NULL DEFAULT '' COMMENT '密码,md5存', ...阅读全文

博文 2015-06-17 20:17:43 kjfcpua

分布式事务管理器dtm

DTM是首款golang的开源分布式事务管理器,优雅的解决了幂等、空补偿、悬挂等分布式事务难题。提供了简单易用、高性能、易水平扩展的分布式事务解决方案。 受邀参加中国数据库大会分享[多语言环境下分布式事务实践](http://dtcc.it168.com/yicheng.html#b9) ## 亮点 * 极易接入 - 支持HTTP,提供非常简单的接口,极大降低上手分布式事务的难度,新手也能快速接入 * 使用简单 - 开发者不再担心悬挂、空补偿、幂等各类问题,框架层代为处理 * 跨语言 - 可适合多语言栈的公司使用。方便go、python、php、nodejs、ruby各类语言使用。 * 易部署、易扩展 - 仅依赖mysql,部署简单,易集群化,...阅读全文

【go共识算法】-PBFT

实用拜占庭容错系统介绍 由来 原始的拜占庭容错系统由于需要展示理论上的可行性而缺乏实用性。另外,算法的复杂度也是随节点的增加而呈指数级增加。实用拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应用成为可能。 什么是实用拜占庭容错系统 实用拜占庭容错系统是一类“状态机”拜占庭系统(这里的状态机可以理解为“系统状态”,以区块链记账为例,系统每新增一个区块,账本就更新到一个新的状态。前面讲过,拜占庭容错系统是一个强一致性协议,每次记账后系统都会达成新的状态。),要求系统所有节点共同维护一个状态,所有节点采取的行动一致。 实用拜占庭容错系统需要运行三类基本协议: 一...阅读全文

博文 2018-10-10 17:34:44 jincheng828

异相双生 —对“天才病”的亲历感受(一)

双相情感障碍,这是我今天夏天才从医生那里听到的名词。 在这段时间里,我从网上查阅了不少资料。双相情感障碍,又名躁郁症,biapolar disorder ,情绪在高峰和低谷这两极之间像钟摆一样摇摆,波动不定,同抑郁一样,是一种心境/情感障碍…… 好了,其他医学部分的内容请自行 Google,作为双相 II 型患者的我对于双相的看法、感受: 首先,我们要明确双相分为 I 型和 II 型。如果我们简单以“激越”、“平静”、“抑郁”的概念曲线来形容人的情绪变化。那么 I 型比较典型的(但不是绝对)就可以表示为:“平静”-“激越”-“平静”,II 型比较典型(但也不是绝对)就是“平静”-“抑郁”-“平静”。更简洁地说就是, I 型更偏“激越”,II 型更偏抑郁。我自己就是 II 型。 至于这种疾病的...阅读全文

博文 2019-10-17 16:33:03 aside section ._1OhGeD

实现公链双花攻击的多种方法

——区块链兄弟,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:Zhiniang Peng来源:360区块链实验室原文链接:http://t.cn/E2WMkV9本文约10000字+,阅读(观看)需要60分钟著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对 EOS、NEO 等大公链平台的多个双花攻击漏洞的案例,360 区块链实验室总结出了多种造成数字货币双花攻击的多种原因,并提出了一种通用的安全减缓措施。各种大公链项目实际上都产生过能够产生双花攻击之类的严重安全问题,盗取加密货币对黑客来讲不是难事。而在几个月的区块链安全研究中,360 区块链实验室收到了来自各个项目方价值超过 30 万美金的数字货币漏洞报告奖励。2008 年,中本聪提出了一种完全通过点对点...阅读全文

博文 2018-11-20 17:34:44 区块链兄弟

golang esl api

通过ESL 调取FS的状态,比如show calls : 用golang eventsocket 实现 conn, err := eventsocket.Dial("192.168.5.32:8021","ClueCon") if err != nil { this.emitError(so, 413) return "" } ev, _ := conn.Send(fmt.Sprintf("api show calls")) calls := strings.Split(ev.Body, "\n") for i := 1; i < len(calls)-3; i++ { //处理每一条记录 ...阅读全文

博文 2016-01-12 03:00:00 logo-fox

go语言协程认识-1

//关于go语言协程通道的使用 //1.通道可以带缓存,也可以不带 //2.不带缓存的,不管是读还是写都会阻塞 //3.带缓存的,如果缓存溢出,就会阻塞 //4.make(chan int,1)和make(chan int)是不一样的,第一种通道内写入两个数据会阻塞,第二种写入就会阻塞 //5.如果协程在阻塞,但是主程已经退出执行,则认为程序死锁 //6.如果程序除了主程之外(没有一个协程),处于阻塞状态,则认为程序死锁 //7.一句话:只有一个协程(可以是主程),在阻塞,认为程序处于死锁 //8.子程序是协程的一种特例,阻塞到子程序执行完毕返回,而协程可能等不到执行完毕就返回,然后条件满足再回来执行 package main import ( "fmt" ) func main() { /...阅读全文

以太坊源码分析—账户的管理

前言 以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中 World State),其中账户状态便是其中的一部分,这部分功能由主要由state包提供 基本概念 账户地址 在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过Keccak Hash算法截取而来。 外部账户和合约账户的区别 账户内容 以太坊中,账户用 Account 表示 type Account struct { Nonce uint64 Balance *big.Int Root common.Hash CodeHash []byte } Nonce:账户发起交易的次数 Balance...阅读全文

博文 2018-11-13 19:34:40 187J3X1

Go的单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 1.Go实现非线程安全的单例模式(懒汉 就是很懒的单例 哈哈): package singleton type singleton struct { } var instance *singleton func GetInstance() *singleton { if instance == nil { instance = &singleton{} // <--- NOT THREAD SAFE } return instance ...阅读全文

博文 2017-02-10 12:24:07 谢权

从Go谈到socket API的一些思考

本文翻译自:https://idea.popcount.org/2017-02-23-socket-api-thoughts/前一段时间,我写了篇关于select()系统调用发展历史的文章。 该文章引发了一些有趣的讨论。文章和讨论花了我不少心思,但我最终明白了什么是核心问题:Unix进程是否是CSP风格的进程? 文件描述符是CSP派生的“通道”吗? “select()”相当于ALT语句吗?直接的答案是“不”。 CSP比Unix更年轻。 正如Tony Garnock-Jones指出的,关于CSP的第一篇文章发表于1978年,文件描述符自从Unix的早期就已经出现。文件描述符不是通道,他们应该是什么? CSP channel通常是可组合的,而我认为Unix的select不是。 这是第二点:使用“...阅读全文

博文 2017-02-28 03:38:17 方圆

go-raft实现

说明 -- goraft是Raft协议的Golang版本的实现,项目地址为: goraft/raft ( http://link.zhihu.com/?target=https%3A//github.com/goraft/raft ) 。整个代码质量较高,值得仔细品味。因此,整理了该博文探究下其内部实现。 数据结构 goraft主要抽象了server、peer和log三个结构,分别代表服务节点、Follower节点和日志。 *server* Raft作为一种多节点状态一致性维护协议,运行过程中必然涉及到多个物理节点,server就是用来抽象其中的每个节点,维护节点的状态信息。其结构如下: type server struct { *eventDispatcher name string pa...阅读全文

博文 2017-09-09 14:19:26 丁凯

Golang语法探索-声明结构体

1 匿名声明。 tests := []struct { key, val string ok bool }{ {"имя", "v", false}, // key must be ascii {"name", "валю", true}, // value may be non-ascii {"", "v", false}, // key must be non-empty {"k", "", true}, // value may be empty } 这种模式常用。定义一张常量表,表的格式就这个地方用一下就可以。 2 集体声明: type ( // Echo is the top-level framework instance. Echo struct { server engine...阅读全文

博文 2017-01-08 06:00:13 shengjuntu

etcd 非关系数据库 简介

1.什么是etcd服务etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。用于共享配置和服务发现的分布式,一致性的KV存储系统.其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。ETCD该项目目前最新稳定版本为3.3.9 具体信息请参考[项目首页]和[Github]。ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache.提供配置共享和服务发现的系统比较多,其中最为大家熟知的是Zookeeper,而ETCD可以算得上是后起之秀了。在项目实现,一致性协议易理解性,运维,安全等多个维度上,ETCD相比Zookeeper都占据优势2.Zookeeper和etcd的区别:1)一致性协议: ETCD...阅读全文

博文 2018-08-21 15:35:16 宇晨棒棒的