-
https原理以及golang基本实现
所属栏目:[大数据] 日期:2020-12-16 热度:104
关于https 背景知识 密码学的一些基本知识 大致上分为两类,基于key的加密算法与不基于key的加密算法。现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使用。 基于key的加密算法又分为两类,对称加密和不对称加密,比如DE[详细]
-
golang截取字符串
所属栏目:[大数据] 日期:2020-12-16 热度:119
golang截取字符串 转自:http://blog.csdn.net/u012210379/article/details/44749743 package utilsfunc Substr(str string,start int,length int) string {rs := []rune(str)rl := len(rs)end := 0if start 0 {start = rl - 1 + start}end = start + length[详细]
-
golang中方法的receiver为指针和不为指针的区别
所属栏目:[大数据] 日期:2020-12-16 热度:163
前言 最近看网站有同学提问golang中方法的receiver为指针和不为指针有什么区别,在这里我以简单易懂的方法进行说明,帮助刚刚学习golang的同学. 方法是什么 其实只要明白这个原理,基本就能理解上面提到的问题. 方法其实就是一种特殊的函数,receiver就是隐式传[详细]
-
用gomock进行mock测试
所属栏目:[大数据] 日期:2020-12-16 热度:182
在开发过程中往往需要配合单元测试,但是很多时候,单元测试需要依赖一些比较复杂的准备工作,比如需要依赖数据库环境,需要依赖网络环境,单元测试就变成了一件非常麻烦的事情。举例来说,比如我们需要请求一个网页,并将请求回来的数据进行处理。在刚开始[详细]
-
Golang 获得文件名最快的代码实现方式比较
所属栏目:[大数据] 日期:2020-12-16 热度:147
package main import ( "fmt" "os" "path/filepath" "strings" "time" ) //获得文件名最快的代码实现方式比较 func main() { filename := "/root/Desktop/模特唐嘉灵2.jpg" //方案一 startTime1 := time.Now() for i := 0; i 1000000; i++ { _ = filepath.Bas[详细]
-
Go实战--实现一个并发时钟服务器(The way to go)
所属栏目:[大数据] 日期:2020-12-16 热度:92
生命不止,继续 go go go !!! golang就是为高并发而生的,为我们提供了goroutines和channel。虽然前面博客的代码片段中也有用到这两个关键字,但是一直没有组织好语言,也没有能力把goroutines和channel写好,那么估计我们先用,然后再看看的理解。 goroutin[详细]
-
GOLANG测试必须用带堆栈的errors
所属栏目:[大数据] 日期:2020-12-16 热度:128
原文:https://gocn.io/article/366 GOLANG测试时,可以用匿名对象填充测试序列,但是如果没有带堆栈的errors,那么会造成出现错误时无法排查。 先看测试序列的填充,参考tricks-2015这个文章,怕你翻不了墙,我把内容粘贴过来就是: Anonymous structs: tes[详细]
-
Golang 上传文件
所属栏目:[大数据] 日期:2020-12-16 热度:115
模拟HTML客户端(不使用浏览器上传文件) src/contoso.org/client/client.go : package main import ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os" ) func postFile(filename string,targetUrl string) error { bodyBuf := bytes.Buff[详细]
-
import – 如何在golang中使用自定义包?
所属栏目:[大数据] 日期:2020-12-16 热度:95
我试图在Go中创建和使用自定义包。这可能是非常明显的,但我找不到这方面的很多信息。基本上,我有这两个文件在同一个文件夹: mylib.go package mylibtype SomeType struct {} main.go package mainimport ( "mylib")func main() {} 当我尝试去运行main.go[详细]
-
golang 使用unixsocket交换数据 socket
所属栏目:[大数据] 日期:2020-12-16 热度:170
// author songaimin@outlook.com 20170623 // golang 使用unixsocket交换数据 // 单元测试示例: // package utils // import ( // "fmt" // u "lpaiche.com/utils" // // "os" // "testing" // "time" // ) // func TestServer(t *testing.T) { // //声明u[详细]
-
Golang通过Thrift框架完美实现跨语言调用
所属栏目:[大数据] 日期:2020-12-16 热度:53
每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。 做为服务器端程序,需要考虑性能同时也要考虑与各种语言之间方便的通讯。采用 http 协议简单,但性能不高。采用 TCP 通讯,则需要考虑封包、解包、粘包等等很多因素,而且想写个高效的[详细]
-
GOLANG宽泛接口在测试中的大用处
所属栏目:[大数据] 日期:2020-12-16 热度:63
原文:https://gocn.io/publish/article/368 考虑测试一个函数: func request(ctx context.Context,hc *http.Client,api string ) (err error) { var hreq *http.Request if hreq,err = http.NewRequest( "GET" ,api, nil ); err != nil { return nil ,erro[详细]
-
Golang 父子对象与JSON互相转换以及struct结构体内部的反引号该
所属栏目:[大数据] 日期:2020-12-16 热度:127
package main import ( "encoding/json" "fmt" ) //父对象 type Human struct { Name string `json:"english_name"` //把struct编码成json字符串时,Name字段的key是english_name,而不是Name Age int `json:"-"` //把struct编码成json字符串时,会忽略Age这[详细]
-
Golang简单的memcache实现
所属栏目:[大数据] 日期:2020-12-16 热度:181
这两天在做项目的过程中遇到了一个访问全局变量的问题场景:编写一个方法,获取id对应的token值,token需要缓存起来(全局变量内存缓存),如果获取不到或者token的时间过期,那么发送http请求到其他端去取,然后缓存起来,然后再返回,那么代码如下: code.[详细]
-
Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate
所属栏目:[大数据] 日期:2020-12-16 热度:170
本篇在项目中实用性极强,推荐珍藏 package main import ( "encoding/json" "fmt" "time" ) type JsonDate time.Time type JsonTime time.Time func (p *JsonDate) UnmarshalJSON(data []byte) error { local,err := time.ParseInLocation(`"2006-01-02"`,st[详细]
-
Golang 客户端对服务器端的证书进行校验(单向证书校验)
所属栏目:[大数据] 日期:2020-12-16 热度:157
[root@contoso ~]# echo "192.168.10.100 zigoo.com" /etc/hosts [root@contoso ~]# more /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdoma[详细]
-
有关golang package中init方法的多处定义及运行顺序问题
所属栏目:[大数据] 日期:2020-12-16 热度:110
在不了解这个问题之前,在网上搜索一下竟然搜出了两个完全相反的结果,所以打算自己测试下这个问题。 首先给出结论: 在同一个package中,可以多个文件中定义init方法 在同一个go文件中,可以重复定义init方法 在同一个package中,不同文件中的init方法的执[详细]
-
Golang 服务器端对客户端的证书进行校验(双向证书校验)
所属栏目:[大数据] 日期:2020-12-16 热度:183
服务器端对客户端的证书进行校验(双向证书校验),客户端访问服务器端,必须校验,如果跳过验证,客户端无法成功地建立与服务器之间的连接,也就是您在浏览器地址访问服务器api接口时,会同样象单向校验那样出现“Your connection is not secure”,即使您[详细]
-
初窥dep
所属栏目:[大数据] 日期:2020-12-16 热度:123
Go语言程序组织和构建的基本单元是Package,但Go语言官方却没有提供一款“像样的”Package Management Tool(包管理工具)。随着Go语言在全球范围内应用的愈加广泛,缺少官方包管理工具这一问题变得日益突出。 2016年GopherCon大会后,在Go官方的组织下,一个[详细]
-
Glide--Golang包版本管理工具
所属栏目:[大数据] 日期:2020-12-16 热度:121
Golang挺好用的,但是目前比较受到诟病的是其没有自带包管理工具(golang社区已经发起了一个dep的项目,不过要正式被golang接受还需要一段时间)。官方没有咋办,那就自己造轮子呗。所以 go的包管理工具就五花八门、层出不穷了。目前有Glide,gopm,godep,gpm,g[详细]
-
在导入语句前面的下划线是什么意思在Golang?
所属栏目:[大数据] 日期:2020-12-16 热度:185
我看到了 this example from sqlite3 on GitHub : 06000 并且似乎找不到下划线前面的import语句意味着什么。 简短答案: 它是用于导入一个包只是为了副作用。 从the Go Specification: To import a package solely for its side-effects (initialization),[详细]
-
golang:什么是字符串的零?
所属栏目:[大数据] 日期:2020-12-16 热度:65
func NewKey(c appengine.Context,kind,stringID string,intID int64,parent *Key) *Key 文档说: NewKey creates a new key. kind cannot be empty. Either one or both of stringID and intID must be zero . If both are zero,the key returned is incomp[详细]
-
Golang 网站访问计数器
所属栏目:[大数据] 日期:2020-12-16 热度:124
List of HTTP header fields https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 注意:Google浏览器,每次请求访问Web服务器都会发送第2个请求,读取favicon.ico,这样对于统计函数count会每次多计数1次,count函数的路由因为设置成了 “/”,路由地[详细]
-
设置Golang的GOPATH
所属栏目:[大数据] 日期:2020-12-16 热度:90
设置Golang的GOPATH chenjh213 · 2016-05-31 21:00:01 · 2417 次点击 · 预计阅读时间 2 分钟 · 大约1分钟之前 开始浏览 这是一个创建于 2016-05-31 21:00:01 的文章,其中的信息可能已经有所发展或是发生改变。 Go是一门全新的静态类型开发语言,具有 自[详细]
-
几款Golang IDE对比
所属栏目:[大数据] 日期:2020-12-16 热度:90
Go语言目前已经在开发者中越发的流行,自然很多人都在寻找合适的IDE来实现代码语法高亮、自动补全以及其他编辑特性。 下面就几种常用的IDE进行对比介绍: 1. Sublime text 这个文本编辑器在开发者中较为普及,应该说sublime并非一个完全成熟的IDE,但是它具[详细]
