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

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

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言语实现

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

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

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

通用链式栈代码

```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

兄弟连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

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

小白求教,获取中国天气网天气的一个节点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 基础】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 爱写作的程序猿

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实现单链表

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 清晨的麦田

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