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

go get 代理设置

前提: 假设安装好git 我的FQ方式(也可以使用别的方式): 使用 ishadowsocks 方式FQ 临时设置Windows下代理: 在控制台执行如下命令,后面的的代理值根据你具体的代理进行设置 set http_proxy=http://127.0.0.1:1080/pac?t=201603231602138322 set https_proxy=https://127.0.0.1:1080/pac?t=201603231602138322 临时设置Linux下代理: 在控制台执行如下命令,后面的的代理值根据你具体的代理进行设置 http_proxy=http://127.0.0.1:1080/pac?t=201603231602138322 https_proxy=https://1...阅读全文

博文 2016-03-24 02:00:01 simplelovecs

Golang获取终端输入

package main import "fmt" //var a,b int = 10,20 func main() { //fmt.Println(a,b) // b,a = a,b // fmt.Println(a,b) //要求: 可以从控制台接受用户的信息 【姓名,年龄,薪水,是否通过考试】 //方式1 fmt.Scanln() var name string var age byte var sal float32 var ispass bool fmt.Println("请输入姓名:") //当程序只是到fmt.Scanln(&name)程序会停止执行等待用户输入 fmt.Scanln(&name) fmt.Println("请输入年龄:") //当程序只是到fmt.Scanl...阅读全文

博文 2019-02-26 00:35:44 tianya1993

优米支付平台 新增个人支付宝当面付接口

​优米支付平台 新增 个人支付宝当面付 接口,支付宝官方支付接口个人可申请,欢迎开发者使用注册地址:pay.umikm.com「 优米支付平台」 是个人可用的 支付宝/微信支付 接口,支持 当面付 / NATIVE / JSAPI / 收银台 / 小程序 / WAP / H5 等支付方式,资金由 支付宝/微信 官方 T+1 结算自动下发个人银行卡( 其中支付宝为即时到账,到你的支付宝账号)支持接口签名算法支付宝 - 单面付微信 - NATIVE 扫码支付微信 - 收银台支付微信 - 小程序支付微信 - JSAPI 网页支付微信 - 获取 OPENID订单状态查询回调通知退款链接优米支付官网API 文...阅读全文

博文 2019-09-02 01:15:58 46099261

个人支付宝、微信收款接口解决方案 xorpay

### [XorPay 支付平台介绍](https://xorpay.com) > [XorPay](https://xorpay.com) 定位为个人 / 独立开发者 / 个体户 / 小微企业提供安全、简单、稳定、正规的收款服务。目前支持 支付宝当面付 和 微信 NATIVE / JSAPI / 收银台 / 小程序 等支付方式,资金由支付宝或微信官方T+1结算自动下发个人银行卡。(支付宝为即时到账) ### 为什么开发 XorPay 支付平台 > 我们知道作为独立开发者产品需要收款是多么麻烦,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好。于是我们开发了[「XorPay 支付平台」](https://xorpay.com) 用来解决这个问题,希望可以帮助到...阅读全文

个人支付宝、微信收款接口解决方案 、优米支付

优米支付平台介绍 优米支付定位为个人 / 独立开发者 / 个体户 / 小微企业提供安全、简单、稳定、正规的收款服务。目前支持 支付宝当面付 和 微信 NATIVE / JSAPI / 收银台 / 小程序 等支付方式,资金由支付宝或微信官方T+1结算自动下发个人银行卡。(支付宝为即时到账) 为什么开发优米支付平台 我们知道作为独立开发者产品需要收款是多么麻烦,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好。于是我们开发了「优米支付平台」 用来解决这个问题,希望可以帮助到每个默默前行的独立开发者。 支持接口 签名算法 支付宝当面付 NATIVE 扫码支付 收银台支付 小程序支付 JSAPI 网页支付 订单状态查询 回调通知 获取 OPENID 链接 优米支付官网...阅读全文

博文 2019-09-02 01:08:13 46099261

golang同时输出到控制台和文件

golang同时输出到控制台和文件 package main import ( "fmt" "io" "log" "os" ) func main() { fmt.Println("---------------") log.Println("------ log printl ----") func_log2file() func_log2fileAndStdout() } func func_log2file() { //创建日志文件 f, err := os.OpenFile("test.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) if err != nil { log.Fatal(err) } //完成后,延迟关闭 defer f...阅读全文

博文 2019-07-25 02:32:38 笑吧小鸟

Web产品实现个人收款的几种方式

##### 接入前准备 - 通过 [Payjq](https://payjq.cn) 注册个人收款接口,原理是帮助你签约微信和支付宝(不需要营业执照),大概几分钟可以开通,开通后即可永久使用。 ###### [NATIVE 扫码支付](https://help.payjq.cn/api-lie-biao/sao-ma-zhi-fu-ff08-zhu-sao-ff09.html) - 效果:用户点击支付后,前端网络请求你的后台,你后台再请求 Payjq支付接口返回支付二维码到前台,页面展示微信或者支付宝二维码,用户用手机微信或支付宝扫码支付 - 扫码请求步骤: - 构建请求参数 - POST 参数到请求地址 - 根据返回内容展示二维码 - 用户支付成功后接收异步通知 - 适用场景:PC网站、P...阅读全文

博文 2019-07-17 22:31:41 zilin9980

golang Unmarshal 小问题

正常情况: func main() { str := `{"expires_in":2592000,"refresh_token":"22.84564433384c3dffdf8c2b123b6da8de.315360000.1756090115.2605827041-6701125","access_token":"21.060aaae1049e2604d0fa71d992aea516.2592000.1443322115.2605827041-6701125","session_secret":"6ce3910403a953006916f1fafef433c5","session_key":"9mnRdL3CfpvaeMqn4g2A4f1b+olbN4iD079GhsDIumsoSy9A...阅读全文

博文 2015-08-28 12:00:02 北京_

GO-log日志封装

Go封装日志: 支持归档输出,一个小时压缩归档一份 最多保留三天的日志 支持日志级别自定义 如果没有指定输出文件默认输出到控制台。 支持输出文件名行号,以及时间、日志界别 如: info 10:08:40.826836 handler.go:81 package logger import ( "fmt" "log" "os" "os/exec" "strings" "time" ) const ( PanicLevel int = iota FatalLevel ErrorLevel WarnLevel InfoLevel DebugLevel ) type LogFile struct { level int logTime int64 fileName string fileFd *o...阅读全文

博文 2016-09-17 09:00:01 gdutliuyun827

golang 控制台UI库vfmt

# vfmt Golang控制台UI库(基于 https://github.com/i582/cfmt 做的修改,主要修复了结构体输出样式失效、并行输出样式失效问题) ### USAGE ``` import "github.com/vua/vfmt" ``` ``` //有内容有样式 output := "Console Output" style := "red" vfmt.Printf("[vfmt] @[%s::%s]\n", output, style) vfmt.Println("[vfmt] @[Console Output::red]") //有内容无样式 (四者等价) vfmt.Println("[vfmt] @[Cons...阅读全文

开源项目 2021-04-09 16:03:24

Log4Go 笔记

一、概念 在java、.net平台有非常有名的日志类,golang 也有对应的版本 安装: go get github.com/alecthomas/log4go 二、日志级别 type Level int const ( FINEST Level = iota FINE DEBUG TRACE INFO WARNING ERROR CRITICAL ) 可以看到作者定义了一个 Level 类型来定义日志级别,使用的时候注意。 三、LogWriter 1. ConsoleLogWriter :控制台输出日志 logger1 := log4go.Logger{} logger1.AddFilter("logger1", log4go.INFO, log4go.NewConsoleLogWrit...阅读全文

博文 2016-02-03 03:00:02 loveyx

软银将与IBM Tech合作开发跨运营商区块链支付

软银正在与IBM合作开发跨运营商的区块链解决方案,重点是使智能手机用户在出国旅行和漫游时可以进行本地付款的技术。根据10月22日的 公告,软银表示将与IBM以及开发跨运营商区块链网络的区块链初创公司TBCASoft合作,以执行运营商区块链研究集团财团的应用程序。TBCASoft成立于2016年,并获得了软银的资助。2017年,它与软银,Sprint和台湾的FarEasTone共同成立了运营商区块链研究小组(CBSG),该组织现已由18名成员组成,致力于为电话公司开发区块链解决方案。​软银补充说,CBSG正在进行的第一个项目是跨运营商支付系统(CCPS),该系统旨在使移动电话客户在出国旅行时可以使用其设备在本地进行支付。该财团的其他成员包括韩国的LG U +和KT,马来西亚的Axiata,印度...阅读全文

博文 2019-10-24 17:55:26 yanfaruiec

使用Homebrew安装配置golang环境

安装Homebrew 在Homebrew复制安装命令,在控制台运行完成安装 安装golnag $ brew update && brew upgrade $ brew install go PATH配置 创建一个目录作为gopath,在目录创建三个目录bin、src、pkg $ cd ~ $ vim .bash_profile 编辑.bash_profile文件并保存,文件内容如下 export GOROOT=/usr/local/opt/go/libexec # GOPAT为上面创建的目录路径 export GOPATH=/Users/deweixu/coding/Go/go_path export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 运行source ....阅读全文

博文 2017-02-11 09:00:42 Simeone_xu

javascript + golang处理时间问题

javascript + golang处理时间问题 今天一个同事问js和golang处理时间问题上总是有误差,于是想到了去年做的一个项目中也出现了这样的问题,发个博客记录一下: 直接上代码: javascript片段: var sa = $('#sa').datetimebox('getValue'); var ea = $('#ea').datetimebox('getValue'); //此时sa和ea输出为yyyy-MM-dd HH:mm:ss这种标准格式的字符串 ----------------------------------------- var sa1 = new Date(sa).toISOString(); var ea1 = new Date(ea).toISOStri...阅读全文

博文 2016-02-16 12:00:02 u013701108

golang 调用cmd下程序隐藏黑窗口-方法1

通过go的标准库exec调用cmd命令时会闪弹黑窗口,为解决此问题在windows下可以用win32 API 的 WinExec。 此问题主要出现在带UI或无控制台的程序调用cmd时。 编译go时加入参数: go build -ldflags="-H windowsgui" package main import ( "errors" "log" ) import ( "github.com/CodyGuo/win" ) var ( winExecError = map[uint32]string{ 0: "The system is out of memory or resources.", 2: "The .exe file is invalid.", 3: "The specified...阅读全文

博文 2016-11-10 03:00:03 CodyGuo

MySQL表结构同步工具 mysql-schema-sync

mysql-schema-sync 是一款使用go开发的、**跨平台的**、绿色**无依赖**的 MySQL 表结构自动同步工具。 用于将线上(其他环境)数据库结构**变化**同步到测试(本地)环境! 可以解决多人开发,每人都使用独立数据库导致结构不一样的问题! 支持功能: 1.  同步新表 2.  同步字段 变动:新增、修改 3.  同步索引 变动:新增、修改 4.  同步字段、索引 屏蔽变动更新 5.  支持预览(只对比不同步变动) 6.  邮件通知变动结果 ### 配置 参考 默认配置文件  config.json 配置同步源、目的地址。 修改邮件接收人  当运行失败或者有表结构变化的时候你可以收到邮件通知。 默认情况不会对多出的_表...阅读全文

开源项目 2015-10-09 16:00:00 网友

快速对接payjs的个人支付接口(收银台模式)

近期在了解个人支付接口,希望能解决我在微信上支付的问题。找了很多平台对比再三,感觉payjs比较专业,其它多是模仿payjs的东西。同时支持支付宝和微信,由于本人支付宝还没开通(需要有一定流量才给开通),本文重点讲一下微信收银台模式的对接。记录一下。 收银台模式对接其实非常简单,官方有开发包可以直接使用,或者自己开发也比较简单。 ##### 一、个人通过代码实现的办法 - 配置商户号和通信密钥 ``` $mchid = '**************'; // PAYJS 商户号 $key = '**************'; // 通信密钥 ``` - 构造订单 ``` // 构造订单参数 $data = [ 'mchid' => $mchid, 'body' => '我是一个测试订单标...阅读全文

博文 2019-06-26 13:03:20 zilin9980

快速对接payjx的个人支付接口(收银台模式)

近期在了解个人支付接口,希望能解决我在微信上支付的问题。找了很多平台对比再三,感觉PAYJX比较专业。同时支持支付宝和微信,本文重点讲一下微信收银台模式的对接。记录一下。收银台模式对接其实非常简单,官方有开发包可以直接使用,或者自己开发也比较简单。一、个人通过代码实现的办法配置商户号和通信密钥$mchid = '**************'; // PAYJX 商户号 $key = '**************'; // 通信密钥`构造订单 // 构造订单参数 $data = [ 'mchid' => $mchid, 'body' => '我是一个测试订单标题', 'total_fee' => 1, 'out_trade_no' => 'payjx_jspay_demo_' . time...阅读全文

博文 2019-07-24 16:03:46 schack

Go语言小例子--实现控制台输入

package main import ( "bufio" "fmt" "os" ) func main() { counts := make(map[string]int) input := bufio.NewScanner(os.Stdin) for input.Scan() { counts[input.Text()]++ } for line, n := range counts { if n > 1 { fmt.Println(n, line) } } } 运行结果 社区交流群:221273219 Golang语言社区论坛 : www.Golang.Ltd LollipopGo游戏服务器地址: https://github.com/Golangltd/LollipopGo 社区视频...阅读全文

博文 2019-01-02 07:34:43 Golang语言社区

golang获取硬盘挂载的目录

package main import ( "fmt" gofstab "github.com/deniswernert/go-fstab" ) func main(){ mounts ,_ :=gofstab.ParseSystem() for _,val := range mounts{ fmt.Printf("%v\n",val.File) } } 在运维时,如果你要用到批量执行命令,你用perl写程序时会发现,把代码上传到远程服务器后,发现你的程序缺一大堆包而不能执行,而在一个干净的系统里,你会发现,每台机都装一个perl的依赖包是一件多么痛苦的事情,当然所有脚本语言都一样,现在慢慢从perl向go语言转换,发现go真的非常不错,有接近c的速度,有脚本语言的方便,go可能唯一不够好的...阅读全文

博文 2017-09-09 12:49:10 YiYou.Org

[GOLANG]获取远程POST来的XML数据(微信公众平台)

今天测试用GO语言链接微信公众平台,一切都很顺利,但是发来的XML数据一直收不到。 将所有有可能的函数和值都测试过了,例如Request.Form,Request.PostForm,Request.MultiPartForm等都没有…… 最后发现它竟然藏在Request.Body里面,包的解释不完善害死人。 Request.Body里的数据是io数据,用ioutil.ReadAll方法可以将数据读出来。 读出来后用string方法转换一下,再用相应的解析函数解析成XML类就可以了。 记录下来留念一下...阅读全文

博文 2017-02-09 16:48:38 葱烧烙饼

go编译github.com/pebbe/zmq4失败

github.com/pebbe/zmq4是对zeromq 4.x的go语言封装,在go中使用了cgo混合编译。 我安装完zeromq4.1.3后,编译时控制台输出如下,麻烦大神看看是什么问题。 [ `go build` | done: 478.984962ms ] # github.com/pebbe/zmq4 gcc did not produce error at completed:1 on input: #line 3 "/Users/besthaos/work/study/go/workspace/src/github.com/pebbe/zmq4/zmq4.go" #include #include 阅读全文

Golang 执行 Console 命令

网上目前有比较多的方案来实现golang执行控制台命令, 但是能做交互, 并且可以持续获取控制台返回结果的,还是比较少的,刚好有个开源项目 filebrowser 当中有相关的功能,顺手把相关源码拿了出来,今天拿出来贡献一波~ 废话不多说,上代码 import ( "bufio" "fmt" "io" "os/exec" ) func main() { execCmd("ps", []string{"-a"}) } func execCmd(shell string, raw []string) (int, error) { cmd := exec.Command(shell, raw...) stdout, err := cmd.StdoutPipe() if err != nil { f...阅读全文

博文 2019-10-04 15:32:47 aside section ._1OhGeD

Golang log日志

golang控制台输出log和两种将log输出到文件的方法 func Logs() { /* O_RDWR 读写模式打开文件 O_APPEND 写操作时将数据附加到文件尾部 O_CREATE 如果不存在将创建一个新文件 */ logFile, err := os.OpenFile("./golang.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0766) if err != nil { panic(err.Error()) } else { // 控制台打印log log.Println([]string{"你好", "golang日志"}) // 方法一,将文件设置为log输出的文件 log.SetOutput(logFile) // 输出前缀...阅读全文

博文 2020-03-27 01:32:47 是个懒人

golang控制台字体的不同显示

编码含义 前景 背景 颜色 30 40 黑色 31 41 红色 32 42 绿色 33 43 黄色 34 44 蓝色 35 45 紫红色 36 46 青蓝色 37 47 白色 编码 含义 0 终端默认设置 1 高亮显示 4 使用下划线 5 闪烁 7 反白显示 8 不可见 举例 fmt.Printf("\x1b[42m%s\x1b[0m>\n", "aaa") // 使用分号组合 fmt.Printf("\x1b[4;42m%s\x1b[0m>\n", "aaa"...阅读全文

博文 2018-12-26 12:34:42 __simple

golang 自定义log日志

golang 自定义log日志 func TLog(){ dir, _ := filepath.Abs(filepath.Dir("")) logFileNmae := time.Now().Format("20060102")+".log" logFileAllPath := dir+"/log/"+logFileNmae _,err :=os.Stat(logFileAllPath) var f *os.File if err!=nil{ f, _=os.Create(logFileAllPath) }else{ //如果存在文件则 追加log f ,_= os.OpenFile(logFileAllPath,os.O_WRONLY|os.O_CREATE|os.O_APPEND, 06...阅读全文

博文 2019-09-29 14:32:55 aside section ._1OhGeD

使用文件对象读目录出错了。。。

```go package main import ( "os" "fmt" ) func main(){ f,_ := os.OpenFile("hello.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777) names,err := f.Readdirnames(2) fmt.Println(err.Error()) for name := range names{ fmt.Println(name) } } ``` 控制台的错误信息说The system cannot find the path specified.(找不到指定的路径) 是不是Readdirnames方法的使用有问...阅读全文

go编程输入函数

1.fmt.Scanln()package main import ("fmt") func main(){//fmt.Scanln 从控制台输入var name stringvar age bytevar sal float32var isPass boolfmt.Println("请输入姓名")fmt.Scanln(&name) fmt.Println("请输入年龄") fmt.Scanln(&age) fmt.Println("请输入薪水") fmt.Scanln(&sal) fmt.Println("请输入通过") fmt.Scanln(&isPass) fmt.Printf("名字是: %v \n 年龄: %v \n 薪水: %v \n 是否通过: %v ",name,age,sa...阅读全文

博文 2020-03-17 18:33:16 小白的希望

Kafka有哪些可靠性保障?

**一、AR** 在Kafka中维护了一个AR列表,包括所有的分区的副本。AR又分为ISR和OSR。 AR = ISR + OSR。 AR、ISR、OSR、LEO、HW这些信息都被保存在Zookeeper中。 **1.ISR** ISR中的副本都要同步leader中的数据,只有都同步完成了数据才认为是成功提交了,成功提交之后才能供外界访问。 在这个同步的过程中,数据即使已经写入也不能被外界访问,这个过程是通过LEO-HW机制来实现的。 **2.OSR** OSR内的副本是否同步了leader的数据,不影响数据的提交,OSR内的follower尽力的去同步leader,可能数据版本会落后。 最开始所有的副本都在ISR中,在kafka工作的过...阅读全文

linux-crontab

最近,需要在linux中使用定时任务。cron就是计划任务的意思。crontab是类unix系统中的一种操作定时任务的指令。也就是说cron是系统的定时任务,crontab是cron的命令。 使用命令查看是否有crontabs安装包(前提是rpm已经安装): rpm -qa|grep crontabs 启动、停止等cron服务: cd /usr/sbin cron start cd /usr/sbin cron stop cd /usr/sbin cron restart cd /usr/sbin cron reload 查看当前是否有定时任务: crontab -l 新增一个定时任务: crontab -e 列如: */1 * * * * /mnt/go/src/douyin-demo/s...阅读全文

博文 2018-09-05 20:34:41 卡萨布兰卡ginger

使用Homebrew安装配置golang环境

安装Homebrew 在Homebrew复制安装命令,在控制台运行完成安装 安装golnag $ brew update && brew upgrade $ brew install go PATH配置 创建一个目录作为gopath,在目录创建三个目录bin、src、pkg $ cd ~ $ vim .bash_profile 编辑.bash_profile文件并保存,文件内容如下 export GOROOT=/usr/local/opt/go/libexec # GOPAT为上面创建的目录路径 export GOPATH=/Users/deweixu/coding/Go/go_path export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 运行source ....阅读全文

博文 2017-06-10 17:06:45 Simeone_xu

以太坊事件框架

过去在学Actor模型的时候,就认为异步消息是相当的重要,在华为的时候,也深扒了一下当时产品用的消息模型,简单实用,支撑起了很多模块和业务,但也有一个缺点是和其他的框架有耦合,最近看到以太坊的事件框架,同样简单简洁,理念很适合初步接触事件框架的同学,写文介绍一下。 以太坊的事件框架是一个单独的基础模块,存在于目录go-ethereum/event中,它有2中独立的事件框架实现,老点的叫TypeMux,已经基本弃用,新的叫Feed,当前正在广泛使用。 TypeMux和Feed还只是简单的事件框架,与Kafka、RocketMQ等消息系统相比,是非常的传统和简单,但是TypeMux和Feed的简单简洁,已经很好的支撑以太坊的上层模块,这是当下最好的选择。 TypeMux和Feed各有优劣,最优秀...阅读全文

博文 2018-11-17 20:34:40 大彬

以太坊事件框架

过去在学Actor模型的时候,就认为异步消息是相当的重要,在华为的时候,也深扒了一下当时产品用的消息模型,简单实用,支撑起了很多模块和业务,但也有一个缺点是和其他的框架有耦合,最近看到以太坊的事件框架,同样简单简洁,理念很适合初步接触事件框架的同学,写文介绍一下。 以太坊的事件框架是一个单独的基础模块,存在于目录go-ethereum/event中,它有2中独立的事件框架实现,老点的叫TypeMux,已经基本弃用,新的叫Feed,当前正在广泛使用。 TypeMux和Feed还只是简单的事件框架,与Kafka、RocketMQ等消息系统相比,是非常的传统和简单,但是TypeMux和Feed的简单简洁,已经很好的支撑以太坊的上层模块,这是当下最好的选择。 TypeMux和Feed各有优劣,最优秀...阅读全文

博文 2018-10-18 11:34:42 shitaibin

简谈GO语言I/O操作

1.格式化输出 fmt.Printf() 输出到控制台.fmt.PrintLn()输出到控制台并换行。str := fmt.Sprintf("%f", 3.1415926)格式化后返回格式化后的字符串。fmt.FprintLn(os.Stdout, "hello world")格式化输出到输出ioWrite上(控制台、文件、网络请求等)更多操作请见https://studygolang.com/stati... 2.基本IO 读取器函数 func ReadFrom(reader io.Reader, num int )([]byte, error){ p := make([]byte, num) n, err := reader.Read(p) if n>0 { return p[:n], ...阅读全文

博文 2020-02-18 17:32:41 威客巴拉

02、go环境的搭建

1.go的下载地址 https://golang.google.cn/dl/ 然后选择对应的下载链接 go对应的版本 2.直接双击安装文件即可 默认情况下.msi文件会安装在 c:\Go 目录下。 你可以将 c:\Go\bin 目录添加到 PATH 环境变量中。 添加后你需要重启命令窗口才能生效。 3.安装成功后,查看一下 查看go的版本 4.第一个HelloWorld package main import "fmt" func main(){ fmt.Println("Hello World!") } 5.控制台运行 先找到文件目录 然后再是go run 文件名 第一个HelloWorl...阅读全文

博文 2018-12-17 11:34:50 程序员bobo

一本正经地聊聊raft

笔者很久以前就了解过raft了,它相比paxos实现跟逻辑简单了许多,因此市场上有很多的分布式系统都是使用raft协议来保证数据的一致性的。不过第一个实际接触到的raft应用倒是mongo的副本集了。所以今天就从mongo的副本集说起。通常有多少个副本集,就保存有多少份数据。多份数据,就需要通过复制的手段来实现。这里复制的目的并不是为了读写分离,而是提高了数据的高可用。多份数据为了保证最终一致性,mongo底层是用一种变型的raft来实现的。一、raft的介绍1.1 问题所在如果是单节点,客户端修改某个值,成功的话整个系统都变为某个值: ok!一个节点,我自己跟自己达成共识即可。如果像mongo副本集,有多个节点存储同份数据,那就麻烦了: 同一个客户端同时向两个节点发送更新数据的命令,结果节...阅读全文

实现Golang和Erlang的连接(Port)

title: 实现Golang和Erlang的连接(Port) categories: Golang 在Erlang中,有很多种方式去实现与其他语言的交互,常见的几种方式有 使用TCP协议交互 使用Port 使用Erl_Interface方式去实现 CNode NIF 后面几种难度都是有的,也使用了比较复杂的C/C++,而且比较容易出现问题。TCP的方式是通过网络协议,个人也不是很喜欢,那就剩下Port方式去连接Erlang服务器。 Erlang的官方文档中对Port的介绍 在Erlang中使用Port非常简单,实际上就是通过标准输入输出流与外部程序就行交互。 现在我还是沿用官方文档中代码,仅做部分修改,实现Erlang与Golang的交互。 %% complex1.erl -module(...阅读全文

实现Golang和Erlang的连接(Port)

--- title: 实现Golang和Erlang的连接(Port) categories: Golang --- 在Erlang中,有很多种方式去实现与其他语言的交互,常见的几种方式有 1. 使用TCP协议交互 2. 使用Port 3. 使用Erl_Interface方式去实现 4. CNode 5. NIF 后面几种难度都是有的,也使用了比较复杂的C/C++,而且比较容易出现问题。TCP的方式是通过网络协议,个人也不是很喜欢,那就剩下Port方式去连接Erlang服务器。 [Erlang的官方文档中对Port的介绍](http://erlang.org/doc/tutorial/c_port.html) 在Erlang中使用Port非常简单,实际上就是通过标准输入输出流与外部程序就行交...阅读全文