-
在Go(golang)中编写Ruby扩展
所属栏目:[大数据] 日期:2020-12-16 热度:158
有没有一些教程或实践经验教训如何编写一个扩展的Ruby在Go? Go 1.5增加了对构建可从C调用的共享库(从而通过FFI从Ruby调用)的支持。这使得该过程比在1.5之前的版本(当需要编写C粘合层时)更容易,并且Go运行时现在可用,使得这在实际中是有用的(goroutine和内[详细]
-
使用go写了一个简单ini解析器
所属栏目:[大数据] 日期:2020-12-16 热度:76
打算用golang练下手,做个几百行代码的小项目 项目前的准备 ini的基本格式 INI文件由节、键、值组成。 节 [section] 参数(键 = 值) name=value 注解 注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。 项目开发 项目目标 0 读取简单的[详细]
-
golang基础-服务端、客户端VS服务端、TCP请求数据
所属栏目:[大数据] 日期:2020-12-16 热度:165
服务端处理流程 服务端: a. 监听端口 b. 接收客户端的链接 c. 创建goroutine,处理该链接 package main import ( "fmt" "net" ) func main() { fmt.Println( "start server..." ) listen,err := net.Listen( "tcp" , "0.0.0.0:50000" ) if err != nil { fmt[详细]
-
golang基础-浏览器访问服务器、客户端访问服务器(延迟处理)、
所属栏目:[大数据] 日期:2020-12-16 热度:175
http初识-浏览器访问服务器 package mainimport ( "fmt" "net/http" )func Hello(w http .ResponseWriter ,r *http .Request ) { fmt .Println ( "handle hello" ) fmt .Fprintf (w, "hello " )}func login(w http .ResponseWriter ,r *http .Request ) { fm[详细]
-
Just for fun——go实现一下观察者模式
所属栏目:[大数据] 日期:2020-12-16 热度:65
代码 package mainimport ( "fmt")type Subject interface { RegisterObserver(o Observer) RemoveObserver(o Observer) NotifyAllObservers()}type Observer interface { // 温度,湿度,气压 Update(temp float32,humidity float32,pressure float32)}type W[详细]
-
golang基础-模板渲染(终端、浏览器)、渲染输出文件、自定义io.
所属栏目:[大数据] 日期:2020-12-16 热度:166
模板渲染终端 模板渲染浏览器输出 模板渲染存储文件 自定义ioWriter渲染 模板渲染终端 1)替换 {{.字段名}} demo.go package mainimport ( "fmt" "os" "text/template" )type Person struct { Name string age string }func main() { t, err := template.Par[详细]
-
golang基础-模板if判断、传(map_arr切片)数据渲染浏览器
所属栏目:[大数据] 日期:2020-12-16 热度:80
模板if判断 模板if常见操作符 传map数据渲染浏览器 传map数据渲染浏览器 模板if判断 index.html html head / head body {{ if gt .Age 18}} p hello,old man, {{ .Name }} / p {{ else }} p hello,young man, {{ .Name }} / p {{ end }} / body / html demo.[详细]
-
Go语言(golang)快速实现一个bootstrap风格的分页链接
所属栏目:[大数据] 日期:2020-12-16 热度:79
写的比较粗糙,直接写死链接样式,代码可以进一步封装,增加一些自定义的配置项 代码如下: package utilsimport ("fmt""math""net/http""net/url""strconv""strings")//Pagination 分页器type Pagination struct {Request *http.RequestTotal intPernum int[详细]
-
单元测试 – 在Golang中测试的正确包命名
所属栏目:[大数据] 日期:2020-12-16 热度:186
我已经看到Go中的几个不同的测试包命名策略,想知道每个的利弊,我应该使用哪个。 策略1: 文件名:github.com/user/myfunc.go package myfunc 测试文件名:github.com/user/myfunc_test.go package myfunc 参见bzip2为例。 策略2: 文件名:github.com/user[详细]
-
Golang依赖管理最佳实践
所属栏目:[大数据] 日期:2020-12-16 热度:200
在Golang,我们可以在GitHub上指定开源库作为依赖。例如: import "github.com/RichardKnop/somelibrary" 这将尝试寻找一个分支,基于您的Go版本和默认为master如果我理解正确。 所以没有办法导入一个特定版本的依赖,例如: import "github.com/RichardKnop[详细]
-
在Golang中初始化嵌套结构
所属栏目:[大数据] 日期:2020-12-16 热度:168
我不知道如何初始化一个嵌套的结构。在这里找到一个例子: http://play.golang.org/p/NL6VXdHrjh package maintype Configuration struct { Val string Proxy struct { Address string Port string }}func main() { c := Configuration{ Val: "test",Proxy:[详细]
-
语法 – 下划线和接口名称后的关键字var在golang是什么意思?
所属栏目:[大数据] 日期:2020-12-16 热度:176
http://golang.org/src/pkg/database/sql/driver/types.go30 type ValueConverter interface {31 // ConvertValue converts a value to a driver Value.32 ConvertValue(v interface{}) (Value,error)33 }54 var Bool boolType55 56 type boolType struct{}5[详细]
-
gRPC在golang中的应用
所属栏目:[大数据] 日期:2020-12-16 热度:69
GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x。 前面写过一篇golang标准库的rpc包的用法,这篇文章接着讲一下google的grpc。 介绍 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器[详细]
-
配置kubectl客户端通过token方式访问kube-apiserver
所属栏目:[大数据] 日期:2020-12-16 热度:131
帮助文档 使用的变量 本文档用到的变量定义如下: $ export MASTER_IP=XX.XX.XX.XX # 替换为 kubernetes master VIP$ export KUBE_APISERVER="https://${MASTER_IP}:6443"$ 创建 kubectl config 文件 $ # 设置集群参数$ kubectl config set-cluster kubernet[详细]
-
《Effective Go》--空白标识符
所属栏目:[大数据] 日期:2020-12-16 热度:131
未使用的导入和变量 ????如果你在程序中导入了一个包或声明了一个变量却没有使用的话,会引起编译错误。因为,导入未使用的包不仅会使程序变得臃肿,同时也降低了编译效率;初始化 一个变量却不使用,轻则造成对计算的浪费,重则可能会引起更加严重BUG。当一[详细]
-
golang知识点整理(持续更新)
所属栏目:[大数据] 日期:2020-12-16 热度:194
对golang的整体理解 Go是一种编译型语言,结合了解释型语言的优点(如调试效率,跨平台),动态类型语言的优点(如开发效率),以及静态类型的优点(如安全性);Go是静态类型语言,类型系统没有层级,因此无需在类型关系定义上耗费过多时间;Go是垃圾回收型的语言[详细]
-
golang基础-chan的select操作、定时器操作、超时控制、goroutine
所属栏目:[大数据] 日期:2020-12-16 热度:200
chan的只读和只写 a.只读chan的声明 Var 变量的名字 -chan int Var readChan - chan int b. 只写chan的声明 Var 变量的名字 chan- int Var writeChan chan- int chan的select操作 格式如下 Select { case u := - ch1: case e := - ch2: default : } 看实例代[详细]
-
golang中数组和slice作为参数的区别
所属栏目:[大数据] 日期:2020-12-16 热度:191
最近项目中有遇到类似问题,做个记录。 举个例子,[5]int为数组,[]int为slice(数组切片),数组是值类型,而slice为引用类型,值类型作为参数传入函数,只是拷贝了个副本,修改并不会作用到传入的那个参数,所以一般使用slice作为参数,免去了拷贝的消耗,但[详细]
-
Golang 实现简单的定时器
所属栏目:[大数据] 日期:2020-12-16 热度:175
问题 做项目的时候经常会有这样的需求,在某个时刻开始执行某个任务,然后每隔一段时间都会执行该任务。 windows下有计划任务,linux下有cron。如果用python可以使用apscheduler库。那么在Go中应该怎么实现呢? 间隔执行 time包中有个Ticker可以用来实现简单[详细]
-
golang中container/list包中的坑
所属栏目:[大数据] 日期:2020-12-16 热度:149
这是一个创建于 2015-09-21 15:00:06 的文章,其中的信息可能已经有所发展或是发生改变。 golang中list包用法可以参看http://www.jb51.cc/article/p-xumthjdj-bhd.html 但是list包中大部分对于e *Element进行操作的元素都可能会导致程序崩溃,其根本原因是e[详细]
-
golang中container/list包用法
所属栏目:[大数据] 日期:2020-12-16 热度:90
这是一个创建于 2015-06-23 02:03:13 的文章,其中的信息可能已经有所发展或是发生改变。 list是一个双向链表。该结构具有链表的所有功能。 type Element type Element struct { Value interface{} // 在元素中存储的值} func (e *Element) Next() *Element[详细]
-
golang map引发的 【fatal error: concurrent map read and map
所属栏目:[大数据] 日期:2020-12-16 热度:84
【问题】我们写的golang程序不定期会抛出fatal error: concurrent map read and map write 的异常 【原因】排查代码,发现是创建session的时候,用到map会引发这个异常,go1.9之前的版本 map都是线程不安全的,在1.9版本之后,引入了sync.Map这种线程安全的m[详细]
-
Go中分配原语:new
所属栏目:[大数据] 日期:2020-12-16 热度:164
????Go中的new,是一个用来分配内存的内建函数,但是不像在其它语言中,它并不初始化内存,只是将其置零。也就是说, new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值。 在Go的术语中,其返回一个指向新分配的类型为T,值为[详细]
-
关于golang.org/x包问题
所属栏目:[大数据] 日期:2020-12-16 热度:133
由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载 解决方法: git clone https://github .com /golang/net .git $GOPATH/src/github .com /golang/netgit clone https://github .com /golang/sys .git $GOPATH/src/github .com /golang/sysgit clone htt[详细]
-
golang基础-go对数据库的增删改查操作
所属栏目:[大数据] 日期:2020-12-16 热度:125
增加 首先看数据库的结构: mysql desc person; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | user _id[详细]
