-
golang 内存
所属栏目:[大数据] 日期:2020-12-16 热度:179
1.内存模型之并发 https://golang.org/ref/mem 下面三篇是这篇官方文档的不同翻译 http://hugozhu.myalert.info/2013/04/20/31-golang-memory-model.html http://www.jb51.cc/article/p-ehcywgbs-d.html https://studygolang.com/articles/1597 2.gc https:/[详细]
-
GRPC
所属栏目:[大数据] 日期:2020-12-16 热度:150
ProtoBuf 是一套接口描述语言(IDL)和相关工具集(主要是 protoc,基于 C++ 实现),类似 Apache 的 Thrift)。用户写好 .proto 描述文件,之后使用 protoc 可以很容易编译成众多计算机语言(C++、Java、Python、C#、Golang 等)的接口代码。这些代码可以支[详细]
-
Golang gRPC实践 连载四 gRPC认证
所属栏目:[大数据] 日期:2020-12-16 热度:189
gRPC 默认提供了两种认证方式: 基于SSL/TLS认证方式 远程调用认证方式 两种方式可以混合使用 TLS认证示例 这里直接扩展hello项目,实现TLS认证机制 首先需要准备证书,在hello目录新建keys目录用于存放证书文件。 证书制作 制作私钥 (.key) # Key considera[详细]
-
Golang gRPC实践 连载三 Protobuf语法
所属栏目:[大数据] 日期:2020-12-16 热度:177
Protobuf语法 gRPC推荐使用proto3,本节只介绍常用语法,更多高级使用姿势请参考官方文档 Message定义 一个message类型定义描述了一个请求或相应的消息格式,可以包含多种类型字段。例如定义一个搜索请求的消息格式,每个请求包含查询字符串、页码、每页数目[详细]
-
Golang gRPC实践 连载二 Hello gRPC
所属栏目:[大数据] 日期:2020-12-16 热度:119
Hello gRPC 按照惯例,这里从一个Hello项目开始,本项目定义了一个Hello Service,客户端发送包含字符串名字的请求,服务端返回Hello消息。 流程: 编写 .proto 描述文件 编译生成 .pb.go 文件 服务端实现约定的接口并提供服务 客户端按照约定调用方法请求服[详细]
-
Golang 在 Mac、Linux、Windows 下如何交叉编译
所属栏目:[大数据] 日期:2020-12-16 热度:160
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED =0 GOOS=linux GOARCH=amd64 go build main. go CGO_ENABLED =0 GOOS=windows GOARCH=am[详细]
-
Golang开发支持平滑升级(优雅重启)的HTTP服务
所属栏目:[大数据] 日期:2020-12-16 热度:66
前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包[详细]
-
golang sync.WaitGroup解决goroutine同步
所属栏目:[大数据] 日期:2020-12-16 热度:88
go提供了sync包和channel来解决协程同步和通讯 。新手对channel通道操作起来更容易产生 死锁 ,如果时缓冲的channel还要考虑channel放入和取出数据的速率问题。 从字面就可以理解,sync.WaitGroup是等待一组协程结束。它实现了一个类似任务队列的结构,你可[详细]
-
TODO:Golang指针使用注意事项
所属栏目:[大数据] 日期:2020-12-16 热度:116
TODO:Golang指针使用注意事项 650) this.width=650;" class="alignnone size-full wp-image-1066" src="http://img.jb51.cc/vcimg/static/loading.png" width="300" height="217" style="border:0px;vertical-align:middle;margin:0px auto;height:auto;" a[详细]
-
Golang- import 导入包的语法
所属栏目:[大数据] 日期:2020-12-16 热度:186
Golang- import 导入包的语法 原文 http://blog.csdn.net/zhangzhebjut/article/details/25564457 主题 数据库 import ( "fmt" ) 然后在代码里面可以通过如下的方式调用 fmt .Println ( "hello world" ) 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去[详细]
-
TODO:字节的那点事Go篇
所属栏目:[大数据] 日期:2020-12-16 热度:169
TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64) 在Golang中string底层是由byte数组组成的。 fmt.Println(len(“dsd好”)) 输出的长度是6 fmt.Println(len(string(rune(‘好’)))) 输出的长度是3 fmt.Println(len([]rune(“好的2s”))) 输[详细]
-
golang
所属栏目:[大数据] 日期:2020-12-16 热度:165
如果tcp.cond在2个go程里面同时read数据,会发生什么情况? package mainimport( "net" "fmt")func main(){ l,_ := net.Listen("tcp",":8888") for { conn,_ := l.Accept() go func(c net.Conn) { for{ b := make([]byte,128) n,err := c.Read(b) if err !=[详细]
-
TODO:Golang语言TCP/UDP协议重用地址端口
所属栏目:[大数据] 日期:2020-12-16 热度:140
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题。 go net包(据我所知)不允许设置套接字选项。 这在尝试进行TCP NAT时尤其成问题,其需要在同一TCP端口上进行侦听和拨号的过程。 这个包使我有可能实现这个功能。 这是一个[详细]
-
Golang学习 - strconv 包
所属栏目:[大数据] 日期:2020-12-16 热度:188
// 将布尔值转换为字符串 true 或 falsefunc FormatBool(b bool) string// 将字符串转换为布尔值// 它接受真值:1,t,T,TRUE,true,True// 它接受假值:0,f,F,FALSE,false,False// 其它任何值都返回一个错误。func ParseBool(str string) (bool,error)--------[详细]
-
golang 函数证明数组为 值类型 数据
所属栏目:[大数据] 日期:2020-12-16 热度:177
packagemainimport"fmt"funcmodify(arr[5]int){arr[0]=10//试图修改数组的第一元素fmt.Println("Inmodify()arrvalues:",arr)}funcmain(){arrmain:=[5]int{1,2,3,4,5}//定义并初始化一个数组modify(arrmain)//传递给一个函数,并试图在函数体内修改这个数组的[详细]
-
TODO:一不顺眼就换字体Go之代码篇
所属栏目:[大数据] 日期:2020-12-16 热度:153
TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述;新增字体font,进行字体编辑。早在几年前Go image包出来的时候就有人实现了图片式水印处理,处理起来很[详细]
-
golang加载css和js
所属栏目:[大数据] 日期:2020-12-16 热度:98
├── main.go├── static│ ├── css│ │ └── main.css│ └── js│ └── main.js└── view └── index.html 若有如上目录结构 // main.gofunc main() { http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("s[详细]
-
golang封装结果集
所属栏目:[大数据] 日期:2020-12-16 热度:92
之前找过很多结果集封装都不是很好,所以自己封装了下。 strFirstToUpper 字符串首字母转化为大写 NewBeeMap 并发存取map /** * 封装结果集 */ func RowResult(rows *sql.Rows) [] interface {} { //字典类型 //构造scanArgs、values两个数组,scanArgs的每[详细]
-
golang截取字符串
所属栏目:[大数据] 日期:2020-12-16 热度:160
截取字符串 //截取字符串 start 起点下标 end 终点下标(不包括) func substr(str string ,start int, end int ) string { rs := []rune(str) length := len (rs) if start 0 || start length { return "" } if end 0 || end length { return "" } return str[详细]
-
golang字符串首字母转化为大写
所属栏目:[大数据] 日期:2020-12-16 热度:50
字符串首字母转化为大写 /** * 字符串首字母转化为大写 ios_bbbbbbbb - iosBbbbbbbbb */ func strFirstToUpper(str string) string { temp := strings.Split(str, "_" ) var upperStr string for y := 0 ; y len(temp); y++ { vv := []rune(temp[y]) if y !=[详细]
-
golang随机数
所属栏目:[大数据] 日期:2020-12-16 热度:136
随机生成验证码 /** * size 随机码的位数 * kind 0 // 纯数字 1 // 小写字母 2 // 大写字母 3 // 数字、大小写字母 */ func krand(size int ,kind int ) [] byte { ikind,kinds,result := kind,[][] int {[] int { 10 , 48 },[] int { 26 , 97 }, 65 }},make[详细]
-
golang文件下载
所属栏目:[大数据] 日期:2020-12-16 热度:169
golang文件下载 func downloadFile(fileFullPath string,res *restful.Response) {file,err := os.Open(fileFullPath)if err != nil {res.WriteEntity(_dto.ErrorDto{Err: err})return}defer file.Close()fileName := path.Base(fileFullPath)fileName = url[详细]
-
golang实现http的get和post
所属栏目:[大数据] 日期:2020-12-16 热度:127
golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。 get请求 get请求可以直接http.Get方法,非常简单。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func httpGet() { resp,err :[详细]
-
Golang 文件读取
所属栏目:[大数据] 日期:2020-12-16 热度:84
转载自:http://david-je.iteye.com/blog/1988940 GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。 那他们的效率如何呢?用一个简单的程序来评测一下: package mainimport( "fmt" "os" "flag" "io" "io[详细]
-
Golang的Interface是个什么鬼
所属栏目:[大数据] 日期:2020-12-16 热度:156
Golang的Interface是个什么鬼 问题概述 Golang的interface,和别的语言是不同的。它不需要显式的implements,只要某个struct实现了interface里的所有函数,编译器会自动认为它实现了这个interface。第一次看到这种设计的时候,我的第一反应是:What the fuck[详细]
