-
golang list slice 删除其中一项比对
所属栏目:[大数据] 日期:2020-12-16 热度:102
golang list slice 删除其中一项比对 转自:http://studygolang.com/articles/3221 slice可以动态添加项(使用append()函数),但是没有删除项的函数。变通方法,可以使用slice重新组合的方式删除一个或多个项,slice是引用类型,存的是指针,性能上不会有太[详细]
-
Golang unsafe包使用笔记
所属栏目:[大数据] 日期:2020-12-16 热度:169
Golang unsafe包使用笔记 unsafe包简介 unsafe包提供了访问底层内存的方法。使用unsafe函数可以提高访问对象的速度。 应用场景 通常用于对大数组的遍历。 访问数组 package mainimport ( "fmt" "unsafe")func main() { array := []int{1,2,3} base := uintpt[详细]
-
wechat_pusher - 基于Golang开发的微信消息定时推送框架
所属栏目:[大数据] 日期:2020-12-16 热度:79
wechat_pusher Github https://github.com/hundredlee... 欢迎star fork 功能列表 消息推送 模板消息推送 model - message.go task - template_task.go 图片推送(TODO) 文字推送(TODO) 图文推送(TODO) 日志存储 计划任务 如何开始? 第一步:当然是go get go[详细]
-
Golang逃逸分析
所属栏目:[大数据] 日期:2020-12-16 热度:177
Golang逃逸分析 介绍逃逸分析的概念,go怎么开启逃逸分析的log。 以下资料来自互联网,有错误之处,请一定告之。 sheepbao 2017.06.10 什么是逃逸分析 wiki上的定义 In compiler optimization,escape analysis is a method for determining the dynamic scop[详细]
-
Golang逃逸分析
所属栏目:[大数据] 日期:2020-12-16 热度:88
Golang逃逸分析 介绍逃逸分析的概念,go怎么开启逃逸分析的log。 以下资料来自互联网,有错误之处,请一定告之。 sheepbao 2017.06.10 什么是逃逸分析 wiki上的定义 In compiler optimization,escape analysis is a method for determining the dynamic scop[详细]
-
GOLANG最容易做测试MOCK
所属栏目:[大数据] 日期:2020-12-16 热度:144
原文:https://gocn.io/article/353 测试时,一些底层的库非常难以MOCK,比如HASH摘要算法,怎么MOCK?假设有个函数,是用MD5做摘要: func digest(data [] byte ,h hash.Hash) ([] byte ,error) { if _,err = h.Write(data); err != nil { return nil ,erro[详细]
-
GOLANG空指针崩溃时堆栈消失和解决方案
所属栏目:[大数据] 日期:2020-12-16 热度:63
原文:https://gocn.io/article/351 在错误处理这个文章中,tkk提出了空指针时堆栈消失的问题,看下面的例子: package main func main() { run() // line 4 } func run() { causedPanic()} func causedPanic() { //defer func() {}() // line 10 //panic("P[详细]
-
GOLANG错误处理最佳方案
所属栏目:[大数据] 日期:2020-12-16 热度:63
原文:https://gocn.io/article/348 GOLANG的错误很简单的,用error接口,参考golang error handling: if f,err := os .Open( "test.txt" ); err != nil { return err} 实际上如果习惯于C返回错误码,也是可以的,定义一个整形的error: type errorCode int[详细]
-
golang通道中传递slice数据的入坑经验
所属栏目:[大数据] 日期:2020-12-16 热度:140
背景 错误代码 原因分析 修改方案1 修改方案2 背景 假设我们要开发生产者-消费者模型的代码,一个routine负责生产数据,一个routine负责消费数据,具体代码如下: 错误代码 type MsgStru struct { msg [] int } var msgChan chan MsgStru func sendMsg() { b[详细]
-
聊一聊,Golang “相对”路径问题
所属栏目:[大数据] 日期:2020-12-16 热度:103
前言 Golang 中存在各种运行方式,如何 正确的引用文件路径 成为一个值得商议的问题 以 gin-blog 为例,当我们在项目根目录下,执行 go run main.go 时能够正常运行( go build 也是正常的) [$ gin-blog]# go run main.go[GIN-debug] [WARNING] Running in[详细]
-
也许 Go 开发可以更简单!Go += Package Versioning
所属栏目:[大数据] 日期:2020-12-16 热度:76
简评:对于Go来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在Go的下个版本中看到官方的包版本控制了,去除了GOPATH依赖,同时还引入了module 的概念,真正意义上[详细]
-
golang解析IP到城市jsonRPC服务教程
所属栏目:[大数据] 日期:2020-12-16 热度:111
RESTful接口 请求URL: https://api.xxx.com/Tbsapi/v1/ip2addr?ip=219.140.227.235 请求方式: GET 参数: 参数名 类型 说明 ip url-qurey-string 可选 要查询的ip地址,如果不传这表示当前的ip 返回示例 { "code": 1,"data": { "Country": "中国","Province[详细]
-
consul服务注册与服务发现的巨坑
所属栏目:[大数据] 日期:2020-12-16 热度:77
最近使用 consul 作为项目的服务注册与服务发现的基础功能。在塔建集群使用中遇到一些坑,下面一个个的记录下来。 consul集群多node consul集群的node也就是我们所说的consul实例。集群由多个node组成,为了集群的可用性,需要超过半数的node启用server。如5[详细]
-
Golang 新手可能会踩的 50 个坑
所属栏目:[大数据] 日期:2020-12-16 热度:152
译文:Golang 新手可能会踩的 50 个坑 原文:50 Shades of Go: Traps,Gotchas,and Common Mistakes 翻译已获作者授权,转载请注明来源。 不久前发现在知乎这篇质量很高的文章,打算加上自己的理解翻译一遍。文章分为三部分:初级篇 1-34,中级篇 35-50,高级[详细]
-
在Golang中使用长数字的JSON封送,提供浮点数
所属栏目:[大数据] 日期:2020-12-16 热度:59
我正在使用golang来封送一个解密的JSONs,而当我想用数字字段进行编码时,golang以浮点数字转换,而不是使用长数字。 我有以下Json: {"id": 12423434,"Name": "Fernando"} 在将它组织到一个地图上,然后再将其解组成一个json字符串,我得到: {"id":1.24234[详细]
-
golang按请求中的不同标识处理不同的业务逻辑
所属栏目:[大数据] 日期:2020-12-16 热度:130
目录结构: I:workspace_golandhellotree /F 卷 新加卷 的文件夹 PATH 列表 卷序列号为 F04C-09C0 I:. ├─bin ├─pkg └─src │ main.go │ system.json │ └─com ├─bo │ adsl.go │ lan.go │ └─conf system.go main.go package main import ([详细]
-
k8s :源代码导入
所属栏目:[大数据] 日期:2020-12-16 热度:168
前言 最近在调研 Google kubernetes 开源的容器编排平台,刚好也在学习 Go 语言,所以想看看 Google 这样的大厂是怎么撸 Go 语言的,本文简单介绍如何下载 k8s 源代码,导入 Idea GoLand(对,我是搞 Java的~),对于这么庞大的项目,没有 IDE 看起来还是很[详细]
-
k8s :部署
所属栏目:[大数据] 日期:2020-12-16 热度:105
前言 k8s 集群部署是个老生常谈的问题,网上资料一大把,各路大神祭出了各种方案: 使用 linux 发行版提供的包管理器(比如 centos yum) 使用 第三方工具包(脚本) 使用 第三方二次开发包 本文介绍在 浏览 k8s 源代码过程中发现的 k8s 的一种半手工的部署方[详细]
-
Gin实践 连载七 Golang优雅重启HTTP服务
所属栏目:[大数据] 日期:2020-12-16 热度:137
优雅的重启服务 在前面编写案例代码时,我相信你会想到 每次更新完代码,更新完配置文件后 就直接这么 ctrl+c 真的没问题吗, ctrl+c 到底做了些什么事情呢? 在这一节中我们简单讲述 ctrl+c 背后的 信号 以及如何在 Gin 中 优雅的重启服务 ,也就是对 HTTP[详细]
-
golang c10k问题
所属栏目:[大数据] 日期:2020-12-16 热度:194
不好意思,英文原文地址找不到了 go 内置 network poller 2002那年,Dan Kegel 提出了c10k问题。简单来说,就是在当今硬件水平下如何写出一个支持上万并发的tcp server。这个问题提出之后,出现了 多线程 和 事件循环 来提高服务器性能。 多线程 对调度和内[详细]
-
模板 – golang html/template:如何索引一个slice元素?
所属栏目:[大数据] 日期:2020-12-16 热度:163
我有一个切片:Keys [] * datastore.Key 如何在模板文件中索引其中一个?我猜{{.Keys [3]}},但这不行,我搜索了很多,但没有线索。 谢谢任何建议。 使用 index 命令,如下所示: {{index .Keys 3}}[详细]
-
golang 字节对齐
所属栏目:[大数据] 日期:2020-12-16 热度:83
最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之[详细]
-
k8s :构建系统
所属栏目:[大数据] 日期:2020-12-16 热度:67
前言 大型软件(linux,android .etc)一般都有自己的构建系统,k8s 也不例外,本文简要介绍 k8s 构建系统 构建流程 release 以 quick-release 为例,在命令行执行以下命令 # make quick-release make 在源代码根目录 Makefile 文件中定位到 quick-release[详细]
-
golang slice 和 string 重用
所属栏目:[大数据] 日期:2020-12-16 热度:113
相比于 c/c++,golang 的一个很大的改进就是引入了 gc 机制,不再需要用户自己管理内存,大大减少了程序由于内存泄露而引入的 bug,但是同时 gc 也带来了额外的性能开销,有时甚至会因为使用不当,导致 gc 成为性能瓶颈,所以 golang 程序设计的时候,应特别[详细]
-
golang 1.8 并发安全Map简单实现
所属栏目:[大数据] 日期:2020-12-16 热度:192
type SafeMap struct { sync.RWMutex Map map [ int64 ] string } func NewSafeMap(size int ) *SafeMap { sm := new (SafeMap) sm.Map = make ( map [ int64 ] string ,size) return sm} func (sm *SafeMap) ReadMap(key int64 ) string { sm.RLock() value[详细]
