-
Golang官方如何支持加载动态库
所属栏目:[大数据] 日期:2020-12-16 热度:92
Golang1.8官方支持加载动态库了,而且看起来功能很强大。 文档上面描述Plugin功能是协程并发安全的,而且支持高级数据类型(包括chan),同时不需要写任何C代码(以前或多或少需要写一些)。 下面我们通过一些demo来看看如何使用golang plugin功能 入门 下面是一[详细]
-
Golang语言学习之占位符“_”(下划线)
所属栏目:[大数据] 日期:2020-12-16 热度:159
不同 最近开始学习Golang,发现一个和其他语言很大不同的东西---占位符“_”(下划线) 之前学习C语言、python、java,都没用见过有占位符一说的 用处 占位符可以作为一个变量被赋值 那么它和普通变量的区别是什么呢? 举个例子,有些函数返回值不止一个,像[详细]
-
golang工具的坑
所属栏目:[大数据] 日期:2020-12-16 热度:179
用 vscode导入代码,结果vscode利用goimports自动引包,引用了其他包,这样导致编译不通过,半天找不到原因。[详细]
-
Golang中make与new的区别
所属栏目:[大数据] 日期:2020-12-16 热度:84
golang 中有两个内存分配机制 :new和make,二者有明显区别. new:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。其自身是一个指针.可用于初始化任何类型。 make: 返回一个有初始值(非零)的T类型,而不是*T,其只能用来初始[详细]
-
golang 连接 mongodb dial 报错 server returned error on SASL
所属栏目:[大数据] 日期:2020-12-16 热度:191
问题:server returned error on SASL authentication step: Authencication failed. 思路:解决这个问题,要看go语言的文档https://godoc.org/gopkg.in/mgo.v2#Dial The username and password provided in the URL will be used to authenticate into the[详细]
-
golang:闲谈数据库操作
所属栏目:[大数据] 日期:2020-12-16 热度:114
今天简单看了下database/sql包,稍微总结下关于golang的数据库操作的一些东西,如有错误的地方,欢迎指出。 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 首先在使用的时候要把这个包引入,同时还需要引入一个 github.com/go-sql-driver/m[详细]
-
golang:闲谈并发
所属栏目:[大数据] 日期:2020-12-16 热度:79
对于并发这个概念,我想大家都对它不会陌生,今天就从简单的火车站卖票问题出发,来谈谈并发。 首先声明本文的代码是golang(因为最近开始用的就是golang),对于其他的语言其实也是相通的,那么正式开始正题吧,首先我们来看看,卖一张票,总票数就减一,一[详细]
-
Go语言跨平台交叉编译
所属栏目:[大数据] 日期:2020-12-16 热度:160
Windows 平台下编译Linux下运行程序 set GOOS=linuxset GOARCH=amd64go build app_name.go 然后就能获得Linux下可以运行的程序了[详细]
-
[译] 现代垃圾回收
所属栏目:[大数据] 日期:2020-12-16 热度:135
关于 Go 语言最新的垃圾回收器(garbage collector),我最近阅读了许多篇赞扬它的文章,但是它们都让我将信将疑,其中的不少来自 Go 语言的官方团队博客。他们像是暗示着在垃圾回收领域已经发生了一个巨大的突破。 以下是这个垃圾回收器在 2015 年 8 月第一[详细]
-
golang限制协程数量
所属栏目:[大数据] 日期:2020-12-16 热度:90
虽然golang中协程开销很低,但是在一些情况下还是有必要限制一下协程的开启数,比如爬虫中的下载协程,因为受到带宽限制,开的多了也没有效果。本来想在网上找找有没协程池,类似其它语言线程池这样的东西,可以限制最大开启数。找了一番,这方面的资料非常[详细]
-
深入学习golang(4)—new与make
所属栏目:[大数据] 日期:2020-12-16 热度:187
http://www.cnblogs.com/hustcat/p/4004889.html Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new[详细]
-
golang vim 语法高亮、保存时fmt与guru安装
所属栏目:[大数据] 日期:2020-12-16 热度:106
原文链接:golang vim 插件设置 多数情况使用vim编写golang代码,需要有语法高亮显示以及自动format。为此需要给vim编辑器增加支持golang语法的插件,插件配置的方法如下: 1、下载vim插件管理工具,如果有git的话可以直接用git clone https://github.com/tp[详细]
-
golang thrift 源码分析,服务器和客户端究竟是如何工作的
所属栏目:[大数据] 日期:2020-12-16 热度:95
首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码 namespace go rpcservice RpcService { string SayHi( 1 : string name); void SayHello( string name);} 搭建一个以二进制为传输协议的服务器如下: type rpcServic[详细]
-
golang thrift 总结一下网络上的一些坑
所属栏目:[大数据] 日期:2020-12-16 热度:52
我们以hello world来大概分析一下golang中的thrift包,并且扒一扒网络上有关thrift的一些坑 查看源码,服务器定义如下:(详见simple_server.go文件) type TSimpleServer struct { quit chan struct {} stopped int64 processorFactory TProcessorFactory //[详细]
-
Go语言单元测试
所属栏目:[大数据] 日期:2020-12-16 热度:51
简介 Go 语言在设计之初就考虑到了代码的可测试性。一方面 Go 本身提供了 testing 库,使用方法很简单; 另一方面 go 的 package 提供了很多编译选项,代码和业务逻辑代码很容易解耦,可读性比较强(不妨对比一下C++测试框架)。 本文中,我们讨论的重点是 Go[详细]
-
Go语言TCP Socket编程
所属栏目:[大数据] 日期:2020-12-16 热度:151
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使[详细]
-
一些Golang小技巧
所属栏目:[大数据] 日期:2020-12-16 热度:144
今天给大家介绍3个我觉得比较有启发的 Golang 小技巧,分别是以下几个代码片段 nsq里的select写文件和socket io模块里的sendfile fasthttp里对header的处理 nsq里的select读 在nsq中,需要读取之前磁盘上的,或者是从内存中直接读取,一般人都是先判断内存中[详细]
-
golang编译arm平台程序
所属栏目:[大数据] 日期:2020-12-16 热度:109
1、export GOARCH=arm 2、使用go build编译的程序即可在arm平台运行 3、切换回linux平台 4、export GOARCH=amd64 5、再使用go build编译程序即可在linux平台运行 备注:在开发环境 ubuntu 14.04 64位机器上测试通过[详细]
-
Golang必备技巧:接口型函数
所属栏目:[大数据] 日期:2020-12-16 热度:85
接口型函数,指的是用函数实现接口,这样在调用的时候就会非常简便,我称这种函数,为接口型函数,这种方式适用于只有一个函数的接口。 我们以迭代一个map为例,演示这一技巧,这种方式有点类似于groovy中Map的each方法一样,也是Gradle里each闭包。 原始接[详细]
-
【原创】golang 中的 nil 问题
所属栏目:[大数据] 日期:2020-12-16 热度:80
问题代码 如下代码在函数 checkError 中实现了针对 err 是否为 nil 的判定,但是此处判定代码的编写是否正确呢?如果不正确,这样编写存在什么问题? func checkError (err error) { if err != nil { // 问题点 2panic(err) }}type Error struct { errCode u[详细]
-
golang 异常管理机制
所属栏目:[大数据] 日期:2020-12-16 热度:193
panic 引发运行时恐慌 defer 收尾工作 recorver 在defer中捕获pannic[详细]
-
Hello World
所属栏目:[大数据] 日期:2020-12-16 热度:182
packagemainimport("fmt")funcmain(){fmt.Println("helloworld")}[详细]
-
golang 里面指针符号的*和&
所属栏目:[大数据] 日期:2020-12-16 热度:90
先看一段代码 先放一段代码,人工运行一下,看看自己能做对几题? packagemainimport"fmt"funcmain(){varaint=1varb*int=avarc**int=bvarxint=*bfmt.Println("a=",a)fmt.Println("a=",a)fmt.Println("*a=",*a)fmt.Println("b=",b)fmt.Println("b=",b)fmt.Pri[详细]
-
SublimeText golang snippets
所属栏目:[大数据] 日期:2020-12-16 热度:73
form: https://github.com/Microsoft/vscode-go "snippets": [], "default_snippets": [{"match": {"global": false,"pkgname": ""},"snippets": [{"text": "package ${default_pkgname}","title": "","value": "package ${default_pkgname}nn$1n"}]},{"m[详细]
-
TiKV 源码解析系列——multi-raft 设计与实现
所属栏目:[大数据] 日期:2020-12-16 热度:91
本系列文章主要面向 TiKV 社区开发者,重点介绍 TiKV 的系统架构,源码结构,流程解析。目的是使得开发者阅读之后,能对 TiKV 项目有一个初步了解,更好的参与进入 TiKV 的开发中。 需要注意,TiKV 使用 Rust 语言编写,用户需要对 Rust 语言有一个大概的了[详细]
