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

负载均衡--golang实现一致性hash算法

有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢? 其实他们都是通过一致性hash算法实现节点调度的。 讲一致性hash算法前,先简述一下求余hash算法: hash(object)%N 一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(object)%(N+1) 。 1 和 2 的改变都会出现所有服务器需要进行数据迁移。 一致性HASH算法 一致性HASH算法的出现有效的解决了上面普通求余算法在节点变动后面临全部缓存失效的问题: type ...阅读全文

博文 2018-08-09 23:34:51 豆瓣奶茶

BoltDB 一个简单的纯 Go key/value 存储 [译]

boltDB Blot Bolt 是由 Howard Chu 的 LMDB 项目启发的一个纯粹的 Go key/value数据库。 该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速和可靠的数据库。 由于 Bolt 是用来作为这样一个低层次的功能,简单是关键。 该API将是小的,只专注于获取值和设置值而已。 项目状态 Blot 稳定,API固定,文件格式固定。 使用完整的单元测试覆盖率和随机黑箱测试来确保数据库一致性和线程安全性。 Blot 目前用于高达1TB的高负载生产环境。 Shopify 和 Heroku等许多公司每天都使用 Bolt 来支持服务。 A message from the author Bolt 最初的目标是提供一个简单的纯 ...阅读全文

基于Golang开发的开源微信小程序(页面高仿大众点评)

小程序基于Taro2.0 + React Hooks开发 测试数据采集自微信小程序--大众点评 服务端api基于 Golang 计划添加基于Reactjs的后台管理系统、PC版、Wap版 目前主要是已浏览页面为主,接下来会继续做其他业务. Github https://github.com/i-coder-robot/dp-min-program 服务端api 项目地址:https://github.com/i-coder-robot/mock-food 最后 喜欢别忘了Star 本项目长期更新完善,欢迎Watch,欢迎扫码,批评指正...阅读全文

博文 2020-02-11 10:32:42 欢喜哥

freetype-go学习

freetype-go的源码在这里https://code.google.com/p/freetype-go/ 它的作用是生成带文字的png图片 首先解决的几个概念: 什么是FreeType? FreeType是一个可移植的,高效的字体引擎。 字体在电脑上的显示有两种方式:点阵和矢量。对于一个字,点阵字体保存的是每个点的渲染信息。这个方式的劣势在于保存的数据量非常大,并且对放大缩小等操作支持不好。因此出现了矢量字体。对于一个字,矢量字体保存的是字的绘制公式。这个绘制公式包括了字体轮廓(outline)和字体精调(hint)。字体轮廓使用贝塞尔曲线来绘制出字的外部线条。在大分辨率的情况下就需要对字体进行精调了。这个绘制字的公式就叫做字体数据(glyph)。在字体文件中,每个字对应一个glyph...阅读全文

博文 2014-10-20 23:12:53 yjf512

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...阅读全文

golang -- TCP服务器(2)

tcp服务器 包括日志,定时处理,广播,超时 map写添加了锁(读不用锁) 添加了解码器 删除了addr-buf映射,添加删除锁 mark:今天听大神所要处理系统中断EINTR, 以后做简单处理EINTR--retry mark:用struct封装addr, net.Listener, exit(是否断开)等信息..最重要的是使用: br := bufio.NewReader(conn), bw := bufio.NewWriter(conn)来取代读循环,这样就可以需要的时候再读/写 https://github.com/zhangpeihao/gortmp/blob/master/server.go package main import ( "bytes" "encoding/bina...阅读全文

博文 2014-10-04 19:27:04 flyking

Erlang .vs. Golang

最近研究了一阵子 Erlang , 他有20岁,而 Golang 才 5岁。 Erlang 是纯解释性的,动态的,没有数据类型的, 属于 lisp 语言家族。 而 Golang 是纯编译的, 静态的,严格数据类型的,属于 C语言家族。 Erlang 最早祭起“并发编程”的大旗,是 “并发导向”(Current Orient )的语言,强调并发运行的成员; 而 Golang 对“并发” 强调的 成员之间的通道 chan 。各有所长吧。
不过, 我 还真的不喜欢 lisp 风格, 非常不适应; 而 Golang 的 C风格则让人人通体舒泰。
Golang 的门槛相对很低, 学习曲线也极平滑。 相对比而言, Golang 的优越不是一星半点 ...阅读全文

GoLang实现TCP协议客户端和服务端

TCP客户端: // TCP Client端设计 // 使用命令行启动 *.exe 127.0.0.1:5000 package main import ( "fmt" "net" "os" "time" ) func main() { var buf [512]byte if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "Usage: %s host:port", os.Args[0]) } service := os.Args[1] // 绑定 tcpAddr, err := net.ResolveTCPAddr("tcp", service) checkError(err) // 连接 conn, err := net.DialTCP("tcp...阅读全文

博文 2019-11-04 18:33:25 aside section._1OhGeD

go学习笔记_Routine和Channel下

go语言并发编程下 上文从基础层面讲解了goroutine 和 channel ,关于如何使用都停留下嘴皮子上,因此下篇选用几个最简单的例子来巩固下。另外推荐下自己的个人博客,你可以先点进行看下内容是否对您有帮助,在选择收藏或者直接x掉。 个人博客地址:Colourful Code 正文 首先,上文说到channel 有两种情况: 未分配缓存 分配一定缓存 例子从这两点入手给出。 未分配缓存 package main import "fmt" //求和函数sum func sum(a []int,c chan int){ sum :=0 for _,v := range a{ sum += v } c<-sum //向通道c 写入数据值 sum } //主程序入口 func main(){ ...阅读全文

博文 2015-04-25 22:00:05 colouful987

聚合支付公司独立研发的聚合支付服务平台

第四方支付是相对第三方而言的,作为对第三方支付平台服务的拓展。第三方支付介于银行和商户之间,而第四方支付是介于第三方支付和商户之间,没有支付许可牌照的限制。 第四方支付集中了各种三方支付平台的接口,也就是说集合了各个第三方支付的优势,能够根据商户的需求进行个性化定制,形成支付通道资源互补优势,满足商户需求,提供适合商户的支付解决方案。 总体来讲,第四方支付属于支付服务集成商,具有第三方支付无可比拟的灵活性,便捷性和支付服务互补性。而且第四方支付比第三方支付更具中立性优势,可以一定程度上调和目前第三方支付恶意竞争的状况,保证支付行业健康发展。 现在市面上的支付系统太多了,价钱不一、开发语言多种多样,什么JAVA、.NET、PHP、GOLANG等等。每个公司都打着自己的支付系统才是真正好的系统,...阅读全文

博文 2019-03-23 12:34:41 qq3201809208

golang select 小结

select 介绍 从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通道发送数值。 select { // 接收数据 case u:= <- ch1: ... // 发送数据 case v:= <- ch2: ... ... default: // no value ready to be received ... } select 基本用法 1、如果多个通道都阻塞了,会等待知道其中一个通道可以处理。 2、如果多个通道都可以处理,随机选取一个处理。 3、如果没有通道操作可以操作并且写了default语句,会执行:default(永远是可以运行的) 4、如果防止select堵塞,可以写default来确保发送不被堵塞,没有case的select就会...阅读全文

GO 语言开发实例:TCP端口共用服务器

GO 语言开发实例:TCP端口共用服务器 应用提出:”串口服务器“ 是 一种配置硬件。基本工作原理是 反向telnet,将一个console口映射为一个 TCP端口。 现在需要 “多用户同时共用”的功能。即:同一个TCP端口,允许多个用户同时登录,每个用户的输出都被输出到这个TCP端口,而这个TCP端口的输出数据,重复输出给所有的用户。 用GO语言实现这个应用,简直太容易了, 从网上找到 web_agent 的示范代码, 用一个map[int]Net.Conn 来记录所有的登录用户,从目标端口读数据的goroutine单独go,main 过程中,每个Accept单独go一个独立用户,定向到目标端口即可。 全部代码不超过200行。太给力了...阅读全文

Golang轻量级-高并发socket框架

使用chitchatchitchat得以支持高并发连接的关键在于其能够快速响应客户端发起的链接并及时开启goroutine确保一对一的通信。对于使用者而言,只需负责向框架注册正确的IP socket(ipAddr:ipPort)(注:除非特别说明,否则后续提到的地址Addr均指addr:port)并正确编写用于处理接收数据和异常处理函数即可正常运行。开启一个Server仅需创建一个Server实例并调用其Listen()方法即可使一个Server开始正常工作。一个Server通常只用于监听一个端口,负责一类事物的调度处理。我们看一下具体调度的API:更多go语言内容请关注:http://www.fastgolang.co...阅读全文

Go 解析XML

今天看了看XML的解析,挺别致的和C++,Java之类的解析很是不同。 GO中将XMl的结构解析成一个数据结构,类似于一个结构体。 package main import ( "encoding/xml" "fmt" "os" ) type Address struct { City, State string } type Person struct { XMLName xml.Name `xml:"person"` Id int `xml:"id,attr"` FirstName string `xml:"name>first"` LastName string `xml:"name>last"` Age int `xml:"age"` Height float32 `xml:"heig...阅读全文

博文 2016-01-15 17:00:03 king1076

基于Golang的IP地址信息查询服务

文链接:http://tabalt.net/blog/ipquer... 工作中经常会有通过IP匹配用户信息的需求,如确定用户所在的地区(国家/省份/城市)、运营商、时区、经纬度等等。前一阵有个Golang开发的项目也有这样的需求,于是简单实现了一个包,最近忙里偷闲又包了一个支持HTTP和GRPC方式调用的服务,并开源在GitHub上了。本文主要介绍IP地址信息查询的实现细节和使用方式。 首先交代一下GitHub地址: IpQuery Golang Package:https://github.com/tabalt/ipquery IP地址信息查询服务:https://github.com/tabalt/ipqueryd 欢迎大家在项目中使用(已通过N亿日PV服务的考验),有任何问题或建议,...阅读全文

博文 2017-02-10 02:39:36 tabalt

golang实现类似Scan或者Scanf功能

fmt.Scan或者fmt.Scanf可以从标准输入中读取数据,也可以自己实现一个类似的功能 package main import ( _"errors" "fmt" "io" "os" "syscall" "time" "bytes" _"os/exec" "github.com/docker/docker/pkg/term" ) func main() { Stdin() } func Stdin() { var in io.Reader in = os.NewFile(uintptr(syscall.Stdin), "/dev/stdin") _,ok:= term.GetFdInfo(in) if ok { fmt.Println("Is terminal \n") } reade...阅读全文

博文 2015-10-28 17:00:13 webyh

基于Go的D-Bus框架(三)

开源夏令营第二个月的实习期已经过去一半了,这一段时间因为总有小朋友到家里来玩,耽误了一些时间。最近几天主要研究了一下枚举类型的问题,这个问题的需求比较明确,即让go-dbus能够像处理其他数据类型(比如struct)一样处理枚举类型,解决的思路也比较清晰。 D-Bus核心并没有定义枚举类型,为了让go-dbus支持枚举类型,一个可行的做法就是在D-Bus底层用整数来表示枚举类型变量,并且限制它的有效取值。涉及的问题的主要有: 1,marshaling,把Go语言里的数据转化为D-Bus的wire format数据; 2,unmarshaling,把D-Bus的wire format数据转化为Go语言里的数据; 3,相应地处理introspection data。 暂时想到的就是这些,先按照这...阅读全文

博文 2015-06-17 23:08:14 mathmonkey

Golang -- Gorm框架不定条件查询

在现实的项目中,后端接收的参数一般都不是单一的,在查询数据库时,一般参数也是不固定的,所以以下就是解决方式之一,仅供参考。其实我还有一种自己封装的方式,只是现在还没有怎么实际应用,所以就先不发出来了,等我自己实际应用,验证没有问题了之后再做补充。当然,我之后再看看有没有其他更好的方式,也是之后再做补充。 func QueryGorm(c *gin.Context) { fmt.Println("Start...") var peoex mode.PersonEx //此结构体为 people 的扩展结构体,用于接收参数 var peo []mode.Person c.Bind(&peoex) //用结构体接收参数,特别注意,参数的命名要和结构体中字段的命名相同。 db := mode.Db ...阅读全文

博文 2019-08-09 14:39:04 LLL_小浪

golang常见面试题

1. 切片与数组对比 (1). 数组 数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。 数组的长度是数组类型的一部分,所以[3]int 和 [4]int 是两种不同的数组类型。 (2). 切片 切片表示一个拥有相同类型元素的可变长度的序列。 切片是一种轻量级的数据结构,它有三个属性:指针、长度和容量。 切块结构如下: type Slice struct { ptr unsafe.Pointer len int cap int } (3). 关系 一个底层数组可以对应多个slice,这些slice可以引用数组的任何位置,彼此之间的元素还可以重叠。 viso1.jpg 2. 结构体 3. interfac...阅读全文

博文 2018-06-28 21:34:44 百味纯净水

Golang集合操作 - gset

文章来源:https://goframe.org/container/garray/index gset 集合,即不可重复的一组元素,元素项可以为任意类型。 同时,gset支持可选的并发安全参数选项,支持并发安全的场景。 使用场景: 集合操作。 使用方式: import "github.com/gogf/gf/g/container/gset" 接口文档: https://godoc.org/github.com/gogf/gf/g/container/gset func New(unsafe ...bool) *Set func NewSet(unsafe ...bool) *Set func NewFrom(items interface{}, unsafe...bool) *Set f...阅读全文

博文 2019-04-25 00:34:40 极粉

招聘【数据采集后台开发工程师】Go

#####**岗位职责: ** 参与腾讯游戏运维数据平台的建设; 参与数据平台数据管道建设; 负责高性能大数据采集系统的设计与研发。 #####**岗位要求:** 大学本科及以上学历,3年以上工作经验,2年以上 C++/Go开发经验; 熟悉大数据量、高并发环境下的Linux服务端程序开发; 熟悉常用的服务端IO设计模型,深入理解TCP/IP等网络协议; 有高性能数据采集系统设计经验者优先; 熟悉Beats、Fluentd、Logstash等开源数据采集方案,有二次开发经验优先; 具有良好的沟通能力、学习能力、分析解决问题能力; 具有高度的责任心和团队合作精神。 **简历投递信箱: terrencehan@tencen...阅读全文

RedMonk的语言排名:JavaScript,Java保持领先;Go未进前20

avaScript在基于Github和Stack Overflow的排名统计中,均排名第一。 在RedMonk的这个月编程语言指数中:JavaScript,Java和PHP排名前三。这个指数基于Github 的语言代码行数和Stack Overflow上的语言标签数量。 “在狭隘的比较中,Java总是在排名中超过JavaScript,但二者的差异总是如此之远,以至于并不显著”,RedMonk首席分析师Stephen O'Grady这样说。“最显著的特点是该语言经常被描述为将死,有时又被吹捧地上升几位” RedMonk的指数中 Python, C#, C++, Ruby, CSS, C, 和 Objective-C也进入前十。排名11~20的语言为:Perl 和 Shell (并列11), R...阅读全文

Go并发编程——channel

以前从未接触过并发编程,所以,且写且学吧 引入channel package main import ( "fmt" "sync" "runtime" ) var counter int = 0 func Count(lock *sync.Mutex){ lock.Lock() counter++ fmt.Println(counter) lock.Unlock() } func main(){ lock := &sync.Mutex{} for i:=0;i<100;i++{ go Count(lock) } for{ lock.Lock() c:=counter lock.Unlock() runtime.Gosched() if c>=100{ break } } } 将counter...阅读全文

博文 2014-10-11 16:00:02 luan_tianjiao

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 ...阅读全文

如何用ZeroMQ实现UDP组播Pub-Sub(基于Golang)

如何用ZeroMQ实现UDP组播Pub-Sub(基于Golang) 2015-01-19 ZeroMQ有一对Pub/Sub socket 类型,但是网上的教程一般侧重于使用TCP版本的…… 虽然TCP版本的也能组网,但是略显麻烦,今天我来给大家介绍一下基于PGM协议的ZeroMQ Pub/Sub模型 首先要编译安装OpenPGM brew install libpgm 接着是zmq brew install zmq --with-pgm 这样就准备好了环境了, 这里需要了解一下PGM网络的原理,很简单,如下图 绿色的就是发送方,向目的组播地址239.192.0.1 端口3055(黑色粗线)发送数据,然后所有监听此端口的接收者(Receiver)都收到了。 就这么简单。 然后就是写代码咯: s...阅读全文

博文 2017-02-11 16:28:11 蒙卓

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击 3月29日, 阿里云正式对外发布《2015下半年云盾互联网DDoS状态和趋势报告》。报告披露,去年11月,阿里云安全团队成功防御了黑客对阿里云平台上某互联网金融用户发起的超大规模HTTPS/SSL CC流量攻击,此次攻击也是迄今为止全球有统计数据最大的HTTPS SSL/CC攻击。 作为国内最大的公共云计算服务提供商,大量网站选择阿里云的安全防护,也因此为国内客户防御了当前互联网上主要的攻击行为。 攻击者从11月5日下午14点开始针对网站开始发起攻击,出现两次波峰分别在14点10和晚上7点30左右,总攻击量达到了5亿次请求。 ![1攻击请求QPS变化.jpg](http://stu...阅读全文

【golang】rune数据类型

在学习golang基础的时候,发现有个叫rune的的数据类型,当时不理解这个类型的意义。这样可能还是对rune的作用与意义比较懵逼,我们通过一个简单的来看下rune的作用。先来看下下面这块代码执行结果是什么?```package mainimport "fmt"func main() {var str = "hello 你好"fmt.Println("len(str):", len(str))}```我们猜测结果应该是:8:5个字符1个空格2个汉字。那么正确答案是多少呢? len(str)咦...结果居然是12,这是为什么呢!?golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。那...阅读全文

博文 2019-01-08 23:34:46 wangcc_sd

七牛云智能日志管理平台正式发布

七牛云智能日志管理平台实现了数据的全生命周期智能管理。 适用于数据中心监控、应用质量管理、统一日志管理、物联网数据监控等典型应用场景,并提供一系列行业解决方案。 致力于让用户以最低的心智负担,最佳的体验,最快的速度获得最大的价值。 推荐阅读: 陈超:七牛云智能日志管理平台的应用与设计 扫码立即了解智能日志管理平...阅读全文

beego ORM建表

开发http后台时用了beego这个框架,牵涉到数据库,就用了ORM模块。 目前的用法是在init里面建表,但是来的数据量很大,所以过一阵表格就会有很多记录。这样就希望过一段固定时间就生成新的表格,后续的数据写在新表格内(表格字段不变,但名字有细微变化),旧表格仅作统计查询使用。 这个功能不知道怎么实现,有了解的大大给指点一下啊,多谢多...阅读全文

[Golang]妙用channel(2)

在 Go 编程语言中,channel 是一个闪耀的特性。它提供了一种强大的、在不使用锁或临界区的情况下,从某个 goroutine 向其他 goroutine 发送数据流的方法。今天我想讨论关于 channel 的两个重要的特性,这些特性不但使其在控制数据流方面极为有用,而且用在流程控制方面也十分有效。 一个已经被关闭的 channel 永远都不会阻塞第一个特性,我想谈一谈已经被关闭的 channel。当一个 channel 一旦被关闭,就不能再向这个 channel 发送数据,不过你仍然可以尝试从 channel 中获取值。package main import"fmt" func main() { ch := make(chan bool, 2) ch <- true ch <- tru...阅读全文

博文 2015-06-17 20:03:50 abv123456789

Go 切片的 append 操作总结

预备 切片是对其底层数组的某一段的引用。 切片有 len 和 cap 两个属性,代表切片的引用长度和切片的容量(从切片的引用起点位置到其底层数组最末端的长度。因为其底层数组的长度是固定的,这也就是意味着容量是指切片可引用的最大宽度)。 append 函数 slice2 := append(slice1, 23, 15) 以上对切片 slice1 进行 append 操作。该操作遵循以下原则: append 函数对一个切片 slice1 进行追加操作,并返回另一个长度为 len(slice1) + 追加个数 的切片,原切片不被改动,两个切片所指向的底层数组可能是同一个也可能不是,取决于第二条: slice1 是对其底层数组的一段引用,若 append 追加完之后没有突破 slice1 的容量,...阅读全文

博文 2019-08-24 00:02:40 Xavier

整理了一份全国行政区划数据表,省市区县各级已经用 golang 做了关联,三级联动

代码如下:```package mainimport ( "database/sql" "encoding/json" "fmt" "io/ioutil" "log" "net/http" "strconv" "strings" _ "github.com/go-sql-driver/mysql")type tude struct { Lat float32 `json:lat` Lng float32 `json:lng`}type region struct { Id string `json:id` Name string `json:name,omitempty` Fullname string `json:fullname` Location tude `json:location...阅读全文

博文 2017-07-02 10:57:32 April

Golang协程与通道整理

协程goroutine 不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换。Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之,不通过OS进行切换,自行切换,系统运行开支大大降低 通道channel 并发编程的关键在于执行体之间的通信,go通过通过channel进行通信 channel可以认为类似其他OS体系中的消息队列,只不过在go中原生支持,因而易用 消息队列有哪些值得关注的地方?常见问题包括创建、关闭或删除、阻塞、超时、优先级等,golang中也不例外。罗列如下: 可否探测队列是满或空?或者说是否可以不阻塞地尝试读写? 读阻塞和写阻塞时关闭会怎样? 关闭后未读取的消息会被抛弃? 往关闭的channel发送数据或读取数据会怎样? 怎样探测channel的...阅读全文

技术分享 《分布式一致性raft算法实现原理》

这段时间跟同事聊了不少分布式系统中的常用算法协议,中间有聊到分布式一致性的话题,当然我们对一致性理解都是那种介绍的层次。 哈哈 , 后来用了心思去学习分布式一致性协议 raft, 现在有些心得,就拿出来给同事分享下。 先简单聊下什么是raft协议. 他用来做什么的? 分布式存储系统通常会维护多个副本,这样不仅能提高系统的可用性,因为有多个副本所以性能也有提高。但是多副本带来的代价就是分布式存储系统的核心问题之一: 需要维护多个副本的数据一致性。 Raft一致性协议就是用来干这事的,即使在部分副本宕机的情况下,只要符合raft的原则,照样可以对外提供服务。 Raft是一种较容易理解的一致性协议。 我曾经也写过工夫去学习paxos, 结果…. 我想大家都懂的,没搞明白。 学习paxos的过程是有...阅读全文

博文 2017-04-04 19:32:07 rfyiamcool

[位置北京]找golang能力者合伙人

寻找北京地区golang语言能力者合伙人,让我们一起用golang改变在线教育 慧知学院帮助学员持续成长的在线教育平台,在这里帮助百万名学员在合适自己的职业方向不断成长,有能力,跟我们一起来做有意的的事情吧。 基础要求: 1、精通golang、PHP语言,熟悉python语言 2、有排序算法、推荐算法、自然语言处理、数据挖掘等的实践经验 ------ 工作年限不限,如果你满足上面两个基础条件,并拥有超强的学习能力,那么欢迎加入我们,不需要给我简历,有兴趣的加微信:eyhetia...阅读全文

基于 go 语言的 API 网关Goku-API-Gateway

![image](https://data.eolinker.com/course/JUpFBDr53cedd94ca0dd72b318b08930cd6bd37c8fb933a) GoKu API Gateway,中文名:悟空API网关,是eoLinker旗下、国内首个开源go语言API网关,帮助企业进行API服务治理与API性能安全维护,为企业数字化赋能。 GoKu支持OpenAPI与微服务管理,支持私有云部署,实现API转发、请求参数转换、数据校验等功能,提供图形化界面管理,能够快速管理多个API网关,提高API业务安全性。 **免费且开源**:GoKu API Gateway秉承开源精神,是国内第一个企业级开源的API接口网关,为广大的开...阅读全文

golang 通过 smtp 发送邮件

package main import( "fmt" "net/smtp" "encoding/base64") //html,plainfunc SendMail( title,user,pswd,smtpserver,port,from,to,subject,body,format string ) error { bs64 := base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") header := make(map[string]string) header["From"] = title+"<"+from+">" header["To"] = to header...阅读全文

博文 2016-03-26 22:00:00 deepdata

golang碎片整理之 fmt.Scan

本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法。 Scan系列 go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。 fmt.Scan 语法 func Scan(a ...interface{}) (n int, err error) Scan 从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。 本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。 代码示例 package main import ...阅读全文

博文 2019-05-05 23:36:11 霍帅兵

PCDN服务接入实操手册

摘要: 本文为阿里云P2P内容分发网络(PCDN)实操手册,可根据本文内容接入与操作。参考来源官网文档。 一、 PCDN是定义? P2P 内容分发网络(英文名:P2P CDN,以下简称PCDN)是以P2P技术为基础,通过挖掘利用电信边缘网络海量碎片化闲置资源而构建的低成本高品质内容分发网络服务。客户通过集成PCDN SDK(以下简称SDK)接入该服务后能获得等同(或略高于)CDN的分发质量,同时显著降低分发成本。适用于视频点播、直播、大文件下载等业务场景。 二、 如何申请免费试用? Step 1 登录PCDN控制台(url: pcdn.console.aliyun.com),申请开通PCDN服务 Step 2 工作人员联系用户,了解用户业务现状和需求 St...阅读全文

go中指针传递与值传递

> 吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。 >-- 荀况 《劝学》 *** 1.指针传递传递的是一个地址,而非地址中的数据,传递数据较少,效率较值传递高,一般情况能用指针传递不用值传递。 2.指针传递时,调用函数中对指针所指向空间数据的修改会影响到调用者,因为他们指向的是同一块区域,指传递就不会影响到调用者的数据...阅读全文

海量数据实时在线分析Quick BI入门

课程介绍 Quick BI 专为云上用户量身打造的新一代智能BI服务平台,本课程主要介绍Quick BI的基础用法。 产品优势如下: 无缝集成云上数据:支持多种数据源:RDS、ADS、MaxCompute;ECS自建Mysql、SqlServer;本地文件等。 快速搭建数据门户:拖拽式操作、强大的数据建模、丰富的可视化图表、快速搭建数据门户。 灵活嵌入第三方系统:仪表板可嵌入到自有系统,直接在自有系统访问报表, 并实现免登。 安全管控数据权限:内置组织成员管理,支持行级数据权限,满足同一份报表,不同人看不同的数据。 学习入口:[请点击这里](http://click.aliyun.com/m/27918/) 课程目标 学习阿里云Qui...阅读全文

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2015-11-26 17:22:53 Coldstar