-
记一次 golang 实现Twitter snowFlake算法 高效生成全局唯一ID
所属栏目:[大数据] 日期:2020-12-16 热度:148
最近在着手准备一个H5游戏 因为这是我第一次接触游戏这个类目 即使量不大也想好好的做它一番 在设计表结构的时候想到了表全局唯一id这个问题 既然是游戏 那么一定是多人在线点点点(运营理想状态 哈哈哈) 一开始想使用mongoDB的objectId来作为全局唯一id 但是[详细]
-
Go 第一部分:变量、常量和枚举类型
所属栏目:[大数据] 日期:2020-12-16 热度:112
Go 入门第一篇,我会提炼出经常使用的基础点,对于刚开始入门 Go ,基础还不扎实的童鞋可以参考此文快速查阅 Go 的基础用法。 系列整理: Go 第二部分:分支语句、函数 如果对 Go 语言本身感兴趣,可以阅读我的这篇译文 Go语言的优点,缺点和令人厌恶的设计[详细]
-
Go 第二部分:分支语句、函数
所属栏目:[大数据] 日期:2020-12-16 热度:181
这是 Go 系列的第二篇文章,主要介绍 if/else,switch 和函数的各种用法。 系列整理: Go 第一部分:变量、常量和枚举类型 如果对 Go 语言本身感兴趣,可以阅读我的这篇译文 Go语言的优点,缺点和令人厌恶的设计。 if/else // 声明可以先于条件,if 中的声明[详细]
-
golang 常见疑惑总结
所属栏目:[大数据] 日期:2020-12-16 热度:173
经常会有一些朋友问go语言的一些问题和疑惑,其实好多问题在官方文档和stackoverflow里都有详细的讲解,只要你肯花时间读一遍 官方文档 和 Effective Go 基本上都有找到答案。本文总结一下大家经常问到的一些问题,长期更新。 代码都在github上, 地址 https[详细]
-
Golang string和[]byte的对比
所属栏目:[大数据] 日期:2020-12-16 热度:179
转载网址:https://www.cnblogs.com/zhangboyu/p/7623712.html 为啥string和[]byte类型转换需要一定的代价? 为啥内置函数copy会有一种特殊情况copy(dst []byte,src string) int? string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高[详细]
-
Golang处理大数据时使用高效的Pipeline(流水线)执行模型
所属栏目:[大数据] 日期:2020-12-16 热度:115
Golang被证明非常适合并发编程,goroutine比异步编程更易读、优雅、高效。本文提出一个适合由Golang实现的Pipeline执行模型,适合批量处理大量数据(ETL)的情景。 想象这样的应用情景: (1)从数据库A(Cassandra)加载用户评论(量巨大,例如10亿条);[详细]
-
leetcode--两数之和(1)
所属栏目:[大数据] 日期:2020-12-16 热度:76
1.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2,7,11,15],target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0,1] go实现: package maini[详细]
-
以太坊本地开发环境搭建
所属栏目:[大数据] 日期:2020-12-16 热度:85
本文所搭建的环境是在 Mac 上的开发环境,其他操作系统上与此非常相似,依然有参考价值。 作为一枚区块链开发工程师,本地的开发环境是必不可少的。我们首先看看需要哪些工具: go-ethereum solc Ethereum Wallet 这些工具的安装在官方文档上都有非常详细的[详细]
-
Golang 连接MySql数据库使用方法
所属栏目:[大数据] 日期:2020-12-16 热度:52
https://blog.csdn.net/a19352226/article/details/50814900 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var ( dbhostsip = "127.0.0.1:3306"//IP地址 dbusername = "root"//用户名 dbpassword = "123456"//密码 dbn[详细]
-
golang context 源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:63
context 使用背景 一个request可能对应启动多个goroutine去执行任务,我们可以通过context,实现对这些goroutine的生命周期的控制。同时,对于这些goroutine通用的常量变量,context可以提供存储。 使用demo 不断产生数字,直到程序退出 package main import[详细]
-
gRPC 中 Client 与 Server 数据交互的 4 种模式
所属栏目:[大数据] 日期:2020-12-16 热度:173
项目地址:grpc-modes 最近使用 gRPC 入门微服务开发,特此总结了 gRPC 中 4 种运行模式 目录结构 $GOPATH└── grpc ├── simple // 简单模式 RPC │ ├── client │ │ └── client.go # 客户端代码 │ ├── proto │ │ ├── user.pb.go │ │[详细]
-
十条有用的 GoLang技术
所属栏目:[大数据] 日期:2020-12-16 热度:156
这里是我过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践。我相信它们具有弹性的。这里的弹性是指: 某个应用需要适配一个灵活的环境。你不希望每过 3 到 4 个月就不得不将它们全部重构一遍。添加新的特性应当很容易。许多人参与开发该应用,它[详细]
-
Golang中的public,private
所属栏目:[大数据] 日期:2020-12-16 热度:120
Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在 包内 使[详细]
-
golang 内存管理 + 垃圾回收
所属栏目:[大数据] 日期:2020-12-16 热度:110
tmcalloc 参考链接 分配内存策略:全局缓存堆 + 进程私有缓存 对于小容量的内存申请,优先尝试进程私有缓存,若私有缓存不足,则向全局缓存申请。 对于大容量的内存申请,直接向全局缓存申请。 进程私有缓存:单链表数组,默认分配86个大小不同的块,每个块[详细]
-
TLS1.3 协议的Golang 实现——ClientHello
所属栏目:[大数据] 日期:2020-12-16 热度:92
前言 撰写本文时 TLS1.3 RFC 已经发布到28版本。以前写过一点密码学及TLS 相关的文章,为了更深入理解TLS1.3协议,这次将尝试使用Go语言实现它。网络上已有部分站点支持TLS1.3,Chrome浏览器通过设置可支持TLS1.3 (draft23),利用这些条件可验证,我们实现的[详细]
-
k8s之CRD--为自定义资源生成代码
所属栏目:[大数据] 日期:2020-12-16 热度:185
CRD简介和使用姿势 CustomResourceDefinition(CRD)是 v1.7 + 新增的无需改变代码就可以扩展 Kubernetes API 的机制,用来管理自定义对象。它实际上是 ThirdPartyResources(TPR) 的升级版本,而 TPR 已经在 v1.8 中删除。 一些使用场景: 提供/管理外部数[详细]
-
golang 实现一个通用协程池
所属栏目:[大数据] 日期:2020-12-16 热度:170
golang 是一门很优秀的语言,语法简单,功能强大 ,支持的 channal、goroutine 等都是非常优秀的特性。由于之前用golang 重构一个项目,对golang不是太了解,栽了不少坑,其中主要问题为: 1. go 直接协程运行函数、方法,大并发的时候不太可控会导致协程数[详细]
-
golang map 源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:170
源码分析 // A header for a Go map.type hmap struct { // Note: the format of the Hmap is encoded in ../../cmd/internal/gc/reflect.go and // ../reflect/type.go. Don't change this structure without also changing that code! count int // # live[详细]
-
golang interface 和 reflect
所属栏目:[大数据] 日期:2020-12-16 热度:199
1.interface 作为参数 https://studygolang.com/articles/2752 2.interface http://www.iteye.com/news/32486 3.reflect https://mikespook.com/2011/09/%E5%8F%8D%E5%B0%84%E7%9A%84%E8%A7%84%E5%88%99/ https://studygolang.com/articles/1251 https://blo[详细]
-
推荐Golang的assert库
所属栏目:[大数据] 日期:2020-12-16 热度:80
推荐Golang的assert库 (金庆的专栏 2018.5) https://github.com/aurelien-rainone/assertgo Conditionally compiled assertions in Go 和C++中的assert()一样,这个是带条件编译的,必须使用 debug 才能启用。 如: $ go run -tags debug main.go 使用示例:[详细]
-
golang 问题解决
所属栏目:[大数据] 日期:2020-12-16 热度:106
三,window环境升级golang1.10后,原有项目找不到包路径 go env后发现GOPATH工作目录和之前的不一样。排查环境变量后,发现升级后GOPATH和GOROOT默认创建在“用户变量”下,当前环境并没有走"系统变量"下GOPATH,如果恢复成之前一样,删除掉用户变量下GOPATH[详细]
-
golang 并发原理
所属栏目:[大数据] 日期:2020-12-16 热度:139
参考文章1 参考文章2 总结: 1. 使用同步阻塞IO多路复用模型,以epoll为基础,当IO阻塞,fd加入epoll_wait,当IO可处理,将以回调的形式通知G(协程)。 2. goroutine,golang语言内部维护G(协程)、M(内核线程)、P(处理队列)和Seched (调度器),由调[详细]
-
Go语言RESTful JSON API创建
所属栏目:[大数据] 日期:2020-12-16 热度:61
Go语言开发RESTFul JSON API RESTful API在Web项目开发中广泛使用,本文针对Go语言如何一步步实现RESTful JSON API进行讲解, 另外也会涉及到RESTful设计方面的话题。 也许我们之前有使用过各种各样的API,当我们遇到设计很糟糕的API的时候,简直感觉崩溃至极[详细]
-
系统检测应用(一)
所属栏目:[大数据] 日期:2020-12-16 热度:148
系统检测应用(1) 测试环境: ubuntu16.04 golang: go1.8 内容 GetEnvFunc() :获取环境变量函数 GetEnvSvr() :当前只获取cpu核数 代码 package mainimport ( "bytes" "detect_sys/ming" "fmt" "os" "os/exec" /* "strconv" */ "strings")// OsEnv 系统环境[详细]
-
golang routine context chan select
所属栏目:[大数据] 日期:2020-12-16 热度:104
go routine 是轻量级的线程 参考:https://studygolang.com/articles/4071 go fun_name() go func () {fmt.Println( "test" )}() chan 在 routine间传递数据 http://www.jb51.cc/article/p-kshlvjoj-bqq.html ch:= make ( chan int ,1 )ch -1 fmt.Println(-c[详细]
