golang
文章平均质量分 63
uxff
这个作者很懒,什么都没留下…
展开
-
golang泛型介绍
go开发团队与2021.12.15将泛型发布在go1.18beta1版本中。本文将介绍如何在golang中使用泛型,以及golang泛型与其他语言(c++,java,c#)比较。golang泛型正式发布将于2022年2月的1.18版本与大家见面。原创 2022-01-11 22:12:43 · 5510 阅读 · 0 评论 -
go mod私有仓库拉取问题
用go mod的时候应该会遇到无法拉取私有仓库的问题从你gitlab平台生成一个token,在~/.gitcoinfig中[http]下增加extraheader = PRIVATE-TOKEN: 你的token[url]下增加 insteadOf = https://gitlab.你的gitlab服务器.com如果还不生效则增加环境变量后尝试:export GOPRIVATE=git...原创 2019-12-29 13:59:10 · 6385 阅读 · 0 评论 -
Go strings.Builder 字符串拼接操作优化
Go 1.10 strings.Builder 字符串拼接优化在某些需求中,遇到如下字符串拼接操作:package mainimport "log"func main() { ss := []string{ "aa", "bb", "cc", } var str string for _, s := ran...原创 2019-12-26 10:42:32 · 1392 阅读 · 0 评论 -
golang通过thrift链接hiveserver2
golang链接hivehive提供以下几种交互方式:1、cli:是Command Line Interface 的缩写,是Hive的命令行界面,用的比较多,是默认服务,直接可以在命令行里使用2、hiveserver/hiveserver2:这个可以让Hive以提供Thrift服务的服务器形式来运行,可以允许许多个不同语言编写的客户端进行通信,使用需要启动HiveServer服务以和客户端联系,我们原创 2017-11-07 19:28:31 · 2441 阅读 · 1 评论 -
golang使用odbc链接hive
golang使用odbc链接hive安装odbcyum install unixODBCyum install unixODBC-devel## mysql driver requireyum install mysql-connector-odbc## hive driver require## https://cwiki.apache.org/confluence/display/Hi原创 2017-11-17 15:08:34 · 3528 阅读 · 0 评论 -
Golang 实现WebSocket服务端,客户端和html5调用
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46882777 转载请必须注明出处!1,关于websocketHTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。 在JavaEE7中也实现了WebSocket协议。 在 WebSocket API,浏览器和服务器只需要要做一转载 2017-12-21 21:25:23 · 10275 阅读 · 3 评论 -
Golang原理之goroutine与channel
常见并发编程模型分类并发编程模型,顾名思义就是为了解决高并发充分利用多核特性减少CPU等待提高吞吐量而提出的相关的编程范式。目前为止,我觉得比较常见的并发编程模型大致可以分为两类:基于消息(事件)的活动对象基于CSP模型的协程的实现其中基于消息(事件)的活动对象的并发模型,最典型的代表就是Akka的actor。actor的并发模型是把一个个计算序列按抽象为一个一个Actor对象,每一个Acto原创 2017-12-06 16:00:15 · 5649 阅读 · 0 评论 -
Golang常量计数器iota使用方法
iota是golang语言的常量计数器,只能在常量的表达式中使用。iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。使用iota能简化定义,在定义枚举时很有用。举例如下:1、iota只能在常量的表达式中使用。fmt.Println(iota) 编译错误: undefined:原创 2017-11-28 13:07:39 · 5020 阅读 · 0 评论 -
Golang反向代理
Golang反向代理 go的net/http/httputil包自带一个反向代理type ReverseProxy。 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 NewSingleHostReve原创 2017-12-31 19:27:31 · 1741 阅读 · 0 评论 -
Golang调用windows下的dll动态库中的函数
Golang调用windows下的dll动态库中的函数 使用syscall调用。package mainimport ( "fmt" "syscall" "time" "unsafe")const ( MB_OK = 0x00000000 MB_OKCANCEL = 0x00000001 MB原创 2017-12-31 21:29:07 · 8033 阅读 · 0 评论 -
JetBrains Goland配置代码自动同步到linux服务器
Goland配置自动同步使用scp原理描述同步文件和目录到服务器的原型是scp localfile user@servername:/serverfilescp -r localdir user@servername:/serverdir从服务器下载文件和目录到本地的原型是scp user@servername:/serverfile localfilescp -r user@...原创 2019-01-06 20:10:33 · 6040 阅读 · 0 评论 -
Golang使用QConf教程
Golang使用QConf教程QConf 是一个分布式配置管理工具。 用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。关于QConf的详细介绍可以看这里github.com/Qihoo360/QConf。特点一处修改,所有机器实时同步更新高效读原创 2017-09-27 21:32:33 · 3285 阅读 · 0 评论 -
grpc简易教程 go server+php client
GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,支持多种开发语言。 对于开发者而言: 1)需要使用protobuf定义接口,即.proto文件 2)然后使用compile工具生成特定语言的执行代码,比如JAVA、C/C++、Python等。类似于thrift,为了解决跨语言问题。 3)启动一个Serve...原创 2017-08-30 22:25:23 · 12298 阅读 · 4 评论 -
golang中的init函数和main函数
golang里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。 虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。 go程序会自动调用init()和main转载 2017-08-04 14:44:00 · 4036 阅读 · 3 评论 -
golang限制协程数量
虽然golang中协程开销很低,但是在一些情况下还是有必要限制一下协程的开启数,比如爬虫中的下载协程,因为受到带宽限制,开的多了也没有效果。本来想在网上找找有没协程池,类似其它语言线程池这样的东西,可以限制最大开启数。找了一番,这方面的资料非常少,难道golang不需要协程池这种东东?自己动手写一个吧。要限制协程最大数量,就是考虑开启一个协程的时候记录一下,然后超过最大数就不再开启。可以考虑用一个变转载 2016-12-27 18:59:38 · 20928 阅读 · 3 评论 -
go语言中fallthrough用法
switch sExpr {case expr1: some instructionscase expr2: some other instructionscase expr3: some other instructionsdefault: other code}sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达原创 2016-12-28 18:17:43 · 30911 阅读 · 0 评论 -
什么是goroutine leak?
goroutine leak,是go协程泄漏,什么是go协程泄漏,通俗来说,开启了一个goroutine,用完后,我们要正确让其结束。如果它没用了,还没结束,那就是goroutine leak。泄漏的goroutine占用一部分cpu,还可能占着一些其他资源,从而影响主协程效率,有时甚至产生异常。我们看下面的一个例子。例子中我们的主协程需要通过某远程服务查询到一个结果。使用一个multiQuery的原创 2016-12-31 15:50:30 · 2575 阅读 · 0 评论 -
golang中的websocket实现
websocket分为握手和数据传输阶段,即进行了HTTP握手 + 双工的TCP连接RFC协议文档在:http://tools.ietf.org/html/rfc6455握手阶段握手阶段就是普通的HTTP客户端发送消息:1234567GET /chat HTTP/转载 2017-07-31 19:30:02 · 13150 阅读 · 1 评论 -
goroutine背后的系统知识
Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。1. 操作系统与运行库2. 并发与并行 (Concurrency and原创 2017-07-31 19:39:25 · 336 阅读 · 0 评论 -
golang channel 学习
Go Channel1. 概述“网络,并发”是Go语言的两大feature。Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单。写一个Server除了网络,另外就是并发,相对python等其它语言,Go对并发支持使得它有更好的性能。Goroutine和channel是Go在“并发”方面两个核心feature。Channel是goroutine之间进行原创 2017-07-31 22:44:31 · 301 阅读 · 0 评论 -
golang new与make
Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。1. new这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零。也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且原创 2017-07-31 22:46:43 · 395 阅读 · 0 评论 -
golang 接口
接口概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键。在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。 Go语言中的接口是一些方法的集合(method set),它指定了对象的行为:如果它(任何数据类型)可以做这些事情,那么它就可以在这里使用。type Reader interface {原创 2017-07-31 22:52:42 · 331 阅读 · 0 评论 -
golang 数组(array)与切片(slice)
数据(array)与切片(slice)数组声明:ArrayType = "[" ArrayLength "]" ElementType .例如:var a [32] intvar b [3][5] int在Go和C中,数组的工作方式有几个重要的差别。在Go中,(1)数组是值类型。将一个数组赋值给另一个,会拷贝所有的元素。(2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针。(原创 2017-07-31 23:05:14 · 901 阅读 · 0 评论 -
golang博客系统beego-blog编译及运行笔记
golang博客系统beego-blog的编译笔记-初学go入门篇原创 2016-12-14 23:06:22 · 5344 阅读 · 1 评论