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

Golang实现snowflake算法(分布式唯一id生成器)

package main import ( "errors" "fmt" "sync" "time" ) const ( twepoch = int64(1417937700000) // 默认起始的时间戳 1449473700000 。计算时,减去这个值 DistrictIdBits = uint(5) //区域 所占用位置 NodeIdBits = uint(9) //节点 所占位置 sequenceBits = uint(10) //自增ID 所占用位置 /* * 1 符号位 | 39 时间戳 | 5 区域 | 9 节点 | 10 (毫秒内)自增ID * 0 | 0000000 00000000 00000000 00000000 00000000 | 00000 | 000000 0...阅读全文

博文 2017-04-25 07:00:25 路人甲777

通用链式栈代码

```go import "errors" var ( // ErrEmpty 栈为空 ErrEmpty = errors.New("stack is empty") ) // StackNode 栈节点 type StackNode struct { el interface{} next *StackNode } // LinkStack 栈空间 type LinkStack struct { top *StackNode count int } // Push 入栈 func (l *LinkStack) Push(el interface{}) (err error) { s := StackNode{el: el, next: l.top} l.top = &s l.count++...阅读全文

博文 2019-07-16 10:09:59 daymenu

golang xml marshal对应的struct两种表示方法

1.xml的节点名字就是struct成员的名字,如:Project.ItemGroup,成员的类型名不影响 //vcxproj.filters type Project struct { ToolsVersion string `xml:"ToolsVersion,attr"` Xmlns string `xml:"xmlns,attr"` ItemGroup []FilterGroup //`xml:"ItemGroup"` } type FilterGroup struct { Filter []Filter //`xml:"Filter"` } type Filter struct { Include string `xml:"Include,attr"` UniqueIdentifi...阅读全文

博文 2015-06-18 19:00:32 varding

go 语言学习笔计之结构体

go 语言中的结构体方法 结构体名称的大小写有着不同的意义: 小写表示不能被别的包访问 package main import "fmt" type Rect struct { width,height int } func (r *Rect) area() int { return r.width*r.height; } func main() { r:=Rect{width:10,height:10} fmt.Println(r.area()); rp:=&r; fmt.Println(rp.area()); } 使用结构体来解析xml 首先我们看xml的格式,对于属性(attr)和节点使用是不一样的, 具体的使用方式如下 阅读全文

博文 2015-07-11 03:00:02 witwave

二叉搜索树实现 in Go语言

用Go实现了下二叉搜索树,还是花了不少时间,在实现中使用的是单向链表,这才算是体会到了双向链表在实现中的优势 package datastructure import ( "container/list" "fmt" ) type BSTree struct { root *Node } type Node struct { left *Node right *Node value int } // NewBSTree 创建树 func NewBSTree() *BSTree { return &BSTree{} } func (t *BSTree) Insert(value int) { var parent *Node z := &Node{value: value} x := t.ro...阅读全文

博文 2016-04-19 10:00:05 u013564276

go beego模板嵌套list

{{range $k,$v :=.Names}} {{end}} 节点 名称 执行体 描述 状态 操作 {{.Name}} {{range $k1,$v1 :=$.List}}{{if eq $v.Name $v1.Node}} {{end}}{{end}} {{.Name}} {{.Exe}} {{.Desc}} {{.State}} 运行|停止 {{range .Categoryjieduan}} {{.Id}} {{.Title}} {{.Views}} {{range $.Categoryzhuanye}} {{.Title}} {{range $.Categorychengguo}} {{.Title}} {{end}} {{end}} {{end}...阅读全文

博文 2016-10-28 14:00:02 MR1269427885

数据结构之栈go言语实现

package main import ( "fmt" "os" ) type Node struct { val int pNode *Node } type Stack struct { pTop,pBottom *Node } func initStack(pStack *Stack){ pNew:=new(Node) pNew.pNode=nil pStack.pTop=pNew pStack.pBottom=pNew if pStack.pTop==nil || pStack.pBottom==nil { fmt.Println("分配头节点内存失败,程序退出") os.Exit(-1) } } func push(pStack *Stack,val int) { pNew:=ne...阅读全文

博文 2016-11-10 04:00:01 tangguangqiang

golang实现二叉查找树

为简单起见,键值均为整型。 定义接口(tree.go): type Tree interface { Put(k, v int) //新增或修改 Get(k int) int //查询 Delete(k int) //删除 Size() int //树的大小 Min() int //最小键 DeleteMin() //删除最小键 } 二叉查找树(binary_tree.go): //二叉查找树 type BinaryTree struct { root *node n int } //创建节点 func newNode(k, v int) *node { return &node{k: k, v: v, sz: 1} } //创建二叉查找树 func NewBinaryTree() *Bin...阅读全文

博文 2017-09-03 07:05:00 imroc

Union-Find(golang实现)

quick-find、quick-union、加权quick-union(附带路径压缩优化) 本算法主要解决动态连通性一类问题,这里尽量用精炼简洁的话来阐述。 数据结构描述: 有N个节点(索引0~N-1),可以查询节点数量 可以连接两个节点 可以查询两个节点是否连通 算法大致设计思路: 每个节点初始化为不同的整数标记 通过一个辅助函数查询某个节点的标记值 如果两节点标记相同,说明两节点是连通的 用一个包专门处理union-find算法(unionfind) 定义接口和基类(union_find.go): package unionfind //union-find的quick-find实现版 type QuickFind struct { BaseUnionFind } func (qf *...阅读全文

博文 2017-09-03 06:34:50 imroc

兄弟连Go语言培训区块链共识算法(1)分布式一致性算法Raft

兄弟连Go语言培训培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 # 分布式一致性算法Raft Paxos自1990年提出以后,相当长时间内几乎已成为分布式一致性算法的代名词。 但因其难以理解和实现,目前知名实现仅有Chubby、Zookeeper、libpaxos几种,其中Zookeeper使用的ZAB对Paxos做了大量改进。 为此,2013年斯坦福的Diego Ongaro、John Ousterhout,提出了新的更易理解和实现的一致性算法,即Raft。 Raft和Paxos均只要保证n/2+1节点正常,即可服务。相比Pa...阅读全文

博文 2018-07-31 08:40:55 XDLGo

Golang mgo驱动指定Mongo服务器读取

Replica Sets搭建 服务器采用Replica Sets搭建,可参考Deploy a Replica Set 读模式 Mongod的读模式共有五种: primary. 在主节点上进行所有的读操作 primaryPreferred. 优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。 secondary.所有的读操作在从节点上进行。 secondaryPreferred.优先在从节点进行读操作,如果所有从节点都不可用,再从主节点操作。 nearest. 根据网络延迟时间 ,就近进行读操作,不考虑节点类型。 配置节点Tags Sets Tag sets 允许指定一个replica set进行读操作,其中Mongod的读模式必须是以下四种之一:primaryPreferred、s...阅读全文

博文 2017-02-09 13:31:22 icattlecoder

小白求教,获取中国天气网天气的一个节点gojquery

package main import ( "fmt" "github.com/PuerkitoBio/goquery" ) func ExampleScrape() { doc, err := goquery.NewDocument("http://www.weather.com.cn/weather1d/101180101.shtml") if err != nil { fmt.Errorf("when create from reader error %s ", err.Error()) } // Find the review items dic := doc.Selection.Find("div.t").Html() f...阅读全文

golang 无限级树状结构

package main import( //"encoding/json" "encoding/json" "fmt" ) type Datanode struct { Id int `json:"id"` PId int `json:"pid"` Name string `json:"name"` Child []*Datanode `json:"child"` } var Jsondata []byte //存储json数据 func main(){ Data := make([]Datanode, 0) //存储所有初始化struct var a Datanode a.Id = 0 a.PId = -1 a.Name = "目录" Data = append(Data,a) a.Id...阅读全文

博文 2019-07-05 19:32:39 努力的夏目_1bbc

【Golang 基础】Go 语言 面向对象

Go 语言的面向对象   Go 语言的面向对象非常简单,仅支持封装,不支持继承和多态。继承和多态是在接口中实现的。   因此 Go 语言中没有 class,而是通过 struct(结构体) 对相同类型或不同类型的数据进行封装。 通过 type struct {} 格式定义结构体; type User struct { Name string Age int IsActive bool } 定义后的结构体就可以作为类型使用; hvkcoder := User{Name: "hvkcoder", Age: 18, IsActive: true} fmt.Println(hvkcoder) // {hvkcoder 18 true} 或 hvkcoder := User{...阅读全文

博文 2019-03-30 02:34:40 爱写作的程序猿

[leetcode in golang]21、合并两个有序链表

链表分为带哨兵节点和不带哨兵节点。 加入哨兵节点有四个使用场景: 1、创建链表,需要考虑链表为空的情况。 2、遍历链表。 3、特定位置删除/插入节点,判断链表是否为空并且进行操作的节点的前一个节点的状态。 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { if l1==nil{ return l2 } if l2==nil{ return l1 } if l1.Val<=l2.Val{ l1.Next=mergeTwoLists...阅读全文

博文 2019-08-28 11:32:54 反骨奇兵

聊聊区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在聊区块链(Blockchain)之前,我先推荐两本书,《区块链 从数字货币到信用社会》、《区块链 技术驱动金融》。 前一本是属于概念普及型,适合概览的去了解区块链,从区块链的基础到智能合约、以及应用都全面的进行了介绍,通俗易懂。后面一本就稍微深入一些,讲解了基本技术原理、算法、生态,但读起来也没有什么门槛。建议两本结合起来读,会对区块链理解的更为深刻一些。这两本书我都读过,所以这篇文章也算是一个读书心得。 区块链技术的产生和发展是离不开比特币的。因为比特币的诞生,区块链才得以公布于众,而且到目前为止,比特币还是区块链技术最成功的应用。但需要注意的一点是,比特币里的区块链是为比特币体系所定制的,所以比特币的区块链...阅读全文

博文 2019-09-23 16:32:49 链客

golang中用链表实现栈

node通过prev字段进行关联,stack维护栈顶节点 stack.go package stack type Stack struct { top *node length int } type node struct { value interface{} prev *node } // 创建一个栈 func New() *Stack { return &Stack{nil, 0} } // 取栈长度 func (s *Stack) Len() int { return s.length } // 查看栈顶元素 func (s *Stack) Peek() interface{} { if s.length == 0 { return nil } return s.top.value ...阅读全文

博文 2019-07-12 20:33:39 ustb80

golang实现单链表

package main import ( "sync" "fmt" ) func main() { node := Instance() node.Name = "张三" node1 := &Node{Name: "李四"} node2 := &Node{Name: "赵武"} node3 := &Node{Name: "李刘"} InsertNode(node, node1) InsertNode(node, node2) InsertNode(node, node3) ListNode(node) } type Node struct { Name string NodePtr *Node } var node *Node var once sync.Once func Instanc...阅读全文

博文 2019-07-11 11:32:42 清晨的麦田

usdt跨境入金支付通道系统开发,区块链支付系统开发

usdt跨境入金支付通道系统开发,区块链支付系统开发 区块链支付的基础是去中心化技术,即交易双方不再需要依赖一个中.央系统来负责资.金.清.算并存储所有的交易信息,而是基于一个不需要进行信任协调的共识机.制.直接进行价值转移。 源中瑞区块链支付系统开发 由于建立一个可靠的、中心化的第三方机构需要庞.大的服.务.器成本和维护成本等,并且一旦受到攻.击就可能会影响整个系.统的安.危。去中心化方式在省却了这些成本的同时,其系统的每个节点均存储有一套完整的数据副本,即便某些节点受到攻.击,也很难影响整体系统的安全。因此对去中心化模式而言,其本身的价值转移成本及安全维护成本都相对较低。区块链支付的发展为跨.境支付提供了较传统方式更好的解决方案。 区块链支付区块链优势: 1...阅读全文

币支付系统开发,usdt跨境承兑商转账支付系统开发

币支付系统开发,usdt跨境承兑商转账支付系统开发 基于区块链的转账支付系统具有高效率性、高安全性、高可用性以及高扩展性等特点。区块链技术在各个维度都和支付相契合,在某种程度上来说,区块链技术被创造出来,就是用来做支付的。 源中瑞区块链支付系统开发 区块链支付与传统支付的区别: 区块链支付的基础是去中心化技术,即交易双方不再需要依赖一个中.央系统来负责资.金.清.算并存储所有的交易信息,而是基于一个不需要进行信任协调的共识机.制.直接进行价值转移。 由于建立一个可靠的、中心化的第三方机构需要庞.大的服.务.器成本和维护成本等,并且一旦受到攻.击就可能会影响整个系.统的安.危。去中心化方式在省却了这些成本的同时,其系统的每个节点均存储有一套完整的数据副本,即便某些节点受...阅读全文