golang平台
我承包的鱼塘
奋斗的少年
展开
-
golang 中 sync WaitGroup使用
今天写一些关于sync.WaitGroup的内容。在golang中有两种方法可以实现同步机制 1. 无缓存的channel 2. WaitGroup WaitGroup 有3个方法: Add(), Done(), Wait()Add() 增加计算器Done() 计算器减1Wait() 计算器非0 一直阻塞...原创 2018-06-27 22:57:52 · 4015 阅读 · 1 评论 -
grpc环境介绍
grpc是一种远程调用它的底层依靠: 1. Protocolbuffer协议传输信息的. 优点: 可以使用不同的语言通讯。 2. 采用HTTP/2 协议 . 优点: 多路复用,头信息压缩, 支持服务器主动推送, 可以划分优先级Golang环境下,安装grpc环境: 1. 安装protocolbuffer 版本3以上...原创 2019-04-05 14:04:37 · 410 阅读 · 0 评论 -
一致性散列库consistent
一致性散列库:go get stathat.com/c/consistent创建:cons := consistent.New() cons.Add("CacheA") cons.Add("CacheB") cons.Add("CacheC") cons.Add("cacheX")测试1:server, err := cons.Get("user_8913823...原创 2019-03-24 12:41:09 · 309 阅读 · 0 评论 -
gossip协议
gossip协议用于分布式中consul就是使用gossip协议,gossip协议是流行病协议,流行病: 一 传十, 十传百,就这样所有人都感染了。gossip也是这样 1. 网络中某个节点随机选择k个节点 (k个节点都是没传染的节点) 散播消息 2. k个节点接着传下去最终消息传遍了整个集群,这里只是简单的介绍,其实gossip...原创 2019-03-24 12:24:37 · 663 阅读 · 0 评论 -
golang中的并发竞争态
golang程序中并发会引起并发竞争,一起没理解,为什么说两个goroutine访问共享资源会引发竞争态,我的理解如果只使用一个逻辑处理器本质上不就是同一时间只有一个goroutine在跑吗,为什么会引发竞争态呢,做了如下实验,确实存在竞争态package mainimport ( "fmt" "runtime" "sync" // "sync/atomic")var (...原创 2019-03-10 23:02:24 · 416 阅读 · 0 评论 -
golang 中的并发和并行
并发与并行: 并发是 指同时管理很多事情,很多事物同时对同一数据进行操作。 并行是 同时做很多事情,让不同的代码片段同时在不同的处理器上执行.goroutine运行过程: 1. golang运行时默认会为每个可用的物理处理器分配一个逻辑处理器,每个逻辑处理器都会绑定单个操作系统线程。 创建一个goroutine -------> 加入到全局...原创 2019-03-10 21:22:38 · 458 阅读 · 0 评论 -
golang中的select和switch
golang中的switch 与select结构上有些相似。下面是switch 对类型的判断,输出不同的值,我觉得它安顺序执行的var b interface{}b = "string"switch b.(type) { case string: fmt.Println("get string") case int: fmt.Println("get int") def...原创 2019-03-14 23:30:30 · 1599 阅读 · 0 评论 -
etcd集群搭建
etcd是一种以key-value形式的分布式存储。etcd配置: name etcd1 名称各个节点都是唯一的 client 配置: listen-client-urls http://127.0.0.1:2379 监听client advertise-client-urls http://127.0....原创 2019-03-04 07:26:26 · 252 阅读 · 1 评论 -
分布式Raft算法
Raft算法是强一致性的一种算法,算法分大体分为 Leader选举 和 log ReplicationRaft算法中节点有3中状态: Follower Candidate LeaderRaft中的超时时间是在150ms ~ 300ms的随机数Leader选举(3个节点为例,): 1. 开始所有的node都是Follwer状态 ...原创 2019-03-04 06:58:49 · 260 阅读 · 0 评论 -
git上传大文件到github
git上传大文件,是借助lfs,但是这个大文件也不是无限大的,lfs的上线: 单个文件2G一下1. install git-lfs :curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bashyum install -y git-lfs2. 上传大文...原创 2019-02-26 14:47:56 · 603 阅读 · 0 评论 -
Golang连接Ldap
今天在这里写一些Golang怎么连接ldapgolang的ldap包有一些,我使用的是go get -u "gopkg.in/ldap.v2"我的ldap环境: rootdn: uid=admin,dc=wjq,dc=com password: openldapdn: dc=wjq,dc=comdc: wjqobjectClass: topobjectC...原创 2019-02-20 18:22:15 · 9871 阅读 · 0 评论 -
golang Beego 学习
官方网站: https://beego.me/docs/advantage/docs.md安装: go get github.com/astaxie/beegogo get github.com/beego/bee 使用工具bee构建项目bee new myproductbeego是一个MVC架构, M ...原创 2019-02-25 22:23:11 · 414 阅读 · 0 评论 -
golang命令行执行多个道管命令如ls -l|wc -l
使用的exec包函数: exec.Command执行单个命令 ls -l ,exec.Command很容易执行,但是需要执行ls -l|wc -l 这样的命令要怎么编写golang中,需要执行两个命令ls -l 和 wc -l 但是这两个命令是有关系的,只要定义好两个命令的输入输出,就可以完成.1. 定义两个命令行:var commands []*exec.Cmd...原创 2019-02-25 21:39:32 · 4710 阅读 · 0 评论 -
redis基本操作
redis针对key值的一下操作:1. 删除key --- DEL 'mykey' 2. 序列化给定的key ---- DUMP 'ke'3. 判断给定的key是否存在 --- EXISTS 'key'4. 给一个key设定过期时间 --- EXPIR...原创 2019-02-25 17:36:05 · 4333 阅读 · 0 评论 -
hprose 介绍
hprose 是 High-Performance Remote Object Service Engine 的简称(高性能远程对象服务引擎库)。 它是以RPC的方式对外提供服务的,hprose可以做到跨语言:场景(可以实现): 1. 使用python 编写hprose server端 2. 使用golang编写hprose client端hp...原创 2019-02-15 10:37:43 · 5191 阅读 · 1 评论 -
golang变量存储的问题
package maindef main(){ a := []int{1,2,3} for _, data := range a { data = 4 } }这里为什么data赋值无效,golang变量存储类似于C,data是变量地址,遍历a每个元素 data存放的a中元素的副本 ...原创 2019-02-02 18:06:57 · 884 阅读 · 0 评论 -
golang 库
github.com/gohouse/gorose 关系数据库gororse不错,性能据说也还不错.github.com/mongodb/mongo-go-driver/mongo #mongodb数据库 gopkg.in/ldap.v2 #这是一个ldap库gol...原创 2018-12-29 16:01:23 · 334 阅读 · 0 评论 -
gorose使用时,出现的一些问题.
1. where叠加的问题: 场景: db := connection.NewDB()Job := db.Table("job")data,_ := Job.Fields("id,name").Where("id",1).Get()#然后data,_ = Job.Fields("id,name").Where("id",2).Get()#发现返回的data是空的,但是其实数...原创 2018-09-15 22:12:22 · 1014 阅读 · 0 评论 -
BadgerDb 快速存储的,固化的数据库
BadgerDB是以key value形式存放在硬盘上,官网拿自己跟facebook的Rocksdb 做对比,说自己支持SSD,Rocksdb不支持。对于存储固然少不了 Add,delete, update , Search从BadgerDB编程来说 1. 打开数据库, 需要设在数据存放路径 2. 操作 -- Add, De...原创 2019-04-02 06:33:02 · 4577 阅读 · 0 评论