GO
Asimov__
变秃了但没变强
展开
-
minio
登陆minio后台创建存储桶。创建匿名用户的访问权限规则。创建access key。原创 2023-03-14 22:05:50 · 610 阅读 · 0 评论 -
Golang服务开启跨域
Golang服务开启跨域。原创 2022-08-15 14:58:28 · 788 阅读 · 0 评论 -
aws s3上传文件
aws。s3原创 2022-07-28 17:52:54 · 1401 阅读 · 0 评论 -
IPFS部署及文件上传(golang)
IPFS部署及文件上传(golang)原创 2022-07-27 18:25:08 · 1279 阅读 · 0 评论 -
golang连接数据库
configvar DnsDevConfInstance *DnsDevConfvar DnsDevConfInstanceOnceDo sync.Once// func SingleNewDnsDevConf() *DnsDevConf { if DnsDevConfInstance == nil { DnsDevConfInstanceOnceDo.Do(func() { DnsDevConfInstance = NewDnsDevConf() }) } return Dn原创 2022-05-10 17:30:18 · 1390 阅读 · 0 评论 -
查看ens域名是否可注册
package testimport ( "encoding/json" "fmt" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" "io/ioutil" "log" "net/http" "strings" "testing")func TestNameHash(t *testing.T) { res, err := PostEns("wangbin.eth"原创 2022-05-06 15:11:19 · 735 阅读 · 0 评论 -
golang grpc服务
.proto协议文件// 版本syntax = "proto3";// 指定包名package protoser;// 文件生成位置option go_package = "./protoser";//service ListenService { rpc ListenServerEth (Req) returns (Res) {}}message Req { string addr =1;}message Res { string msg = 1;}mak原创 2022-05-05 15:30:22 · 193 阅读 · 0 评论 -
golang 单例
package serverimport "sync"type ListenServer struct {}func NewListenServer() *ListenServer { return &ListenServer{}}//var listenServerInstance *ListenServer//var listenServerMutex sync.Mutexvar listenServerInstanceOnceDo sync.Once// 单例原创 2022-04-27 15:42:14 · 178 阅读 · 0 评论 -
RSA 加密解密签名验签
apipackage v1// get请求import "github.com/gogf/gf/v2/frame/g"type GetKeyReq struct { g.Meta `path:"/get_key" method:"get" summary:"获取公钥" tags:"RSA"` Name string `json:"name" v:"required#账号" dc:"账号"`}type GetKeyRes struct { //g.Meta `mime:"text原创 2022-04-22 18:35:49 · 1331 阅读 · 0 评论 -
ECDSA签名算法
package mainimport ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/sha256" "crypto/x509" "encoding/base64" "encoding/hex" "fmt" "math/big" "strings")// 生成公私钥func GenKeyPair() (privateKey string, publicKey string, e error) { // Gen原创 2022-04-22 15:23:29 · 922 阅读 · 0 评论 -
goframe框架jwt
service代码package service// gf-jwtimport ( "context" "firstproject/internal/model" jwt "github.com/gogf/gf-jwt/v2" "github.com/gogf/gf/v2/frame/g" "time")var authService *jwt.GfJWTMiddleware// 权限包管理func Auth() *jwt.GfJWTMiddleware { return a原创 2022-04-19 14:14:00 · 739 阅读 · 0 评论 -
以太坊合约部署
合约在线编辑部署新建合约编译合约部署(injected web 连接插件的,测试网,会消耗gas)部署成功后会有个地址(测试链的部署地址)将测试链部署地址添加到 at address 重新部署会生成合约地址将合约abi文件用abigen转成go代码,开始调用:package serviceimport ( "context" "firstproject/tools" "fmt" "github.com/ethereum/go-ethereum/common" "gi原创 2022-04-19 12:13:09 · 5200 阅读 · 0 评论 -
安装abigen,合约转go代码及调用合约
go get github.com/ethereum/go-ethereum用go mod的话 安装包位置:$GOPATH/pkg/mod/.cd $GOPATH/pkg/mod/github.com/ethereum/go-ethereum@v1.10.17sudo make && make devtoolsappledeMac-mini:~ apple$ abigen --helpabigen [global options] command [command optio原创 2022-04-15 15:31:21 · 5985 阅读 · 0 评论 -
goframe框架CLI dao命令
goframe2.0+文档数据库创建mysql用户(% 可远程登录)CREATE USER 'test'@'%' IDENTIFIED BY 'test';给用户加权限grant all privileges on *.* to test@'%' identified by 'test';flush privileges;修改密码SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test');创建数据库create database `gof原创 2022-04-13 14:54:11 · 1608 阅读 · 0 评论 -
go实现用户授权中间件(token+redis)
login中生成token:使用用户授权中间件用户授权中间件func UserAuthMiddleware(skipper ...SkipperFunc) gin.HandlerFunc { return func(c *gin.Context) { // skipper 参数:无需进行登录校验的请求列表 if len(skipper) > 0 && skipper[0](c) { c.Next() return } // 获取请求头的X-To原创 2020-12-24 18:00:49 · 2086 阅读 · 1 评论 -
go快排
func Quicksort(data []int) []int { if len(data)<=1 { return data } var max,min []int middle:=data[0] // 等待goroutine都运行完毕 var WG sync.WaitGroup for index,value:=range data{ if index==0 { continue } if value>middle{ max=append(ma原创 2020-11-13 16:41:49 · 398 阅读 · 0 评论 -
go_struct实现继承
package mainimport ( "fmt")type info struct { name string age int}// 继承 infotype binfo struct { info sex string}func (info *info)Like(like_list ...string) string { likes:="" for _ ,like := range like_list{ likes+=like+"," } return l原创 2020-11-11 17:18:13 · 546 阅读 · 0 评论 -
go实现零停机重启和代码升级endless
endless.ListenAndServe(":"+conf.Conf.Port, r)fork一个进程运行新编译的应用 ,复用socket, 同时父进程关闭socket,后台执行未完成请求 , 实现0切换时间差需要保证新编译的程序的路径和程序名和旧程序的一致。...原创 2020-11-11 11:50:49 · 737 阅读 · 0 评论 -
golang中的runtime.Caller()
package mainimport ( "fmt" "path" "runtime")func main(){ // 函数名指针(runtime.FuncForPC(caller_name).Name()获取函数名),文件路径,代码行号,是否可以获取到信息 // caller_name, file, line, status := runtime.Caller(1) // skip: 要提升的堆栈帧数 0:当前执行caller的文件位置(GOPATH),1:源码上层的函数(GOR原创 2020-10-28 17:50:28 · 855 阅读 · 0 评论 -
k8s文档
https://jimmysong.io/kubernetes-handbook/原创 2020-10-10 16:18:01 · 178 阅读 · 0 评论 -
Go词频统计
package mainimport ( "bufio" "fmt" "io" "log" "os" "path/filepath" "runtime" "sort" "strings" "unicode" "unicode/utf8")func main() { //自定义help命令行 if len(os.Args)==1||os.Args[1]=="-...原创 2019-11-29 13:53:04 · 243 阅读 · 0 评论 -
Go中的for循环
package mainimport "fmt"//Go语言中的循环只支持for,不支持while和do-while//Go的for循环同样支持continue和break来控制循环,break可以选择中断特定标记的循环func main() { sum:=0 //无限循环 fmt.Println("---------break----------") fmt.Printl...原创 2019-11-25 16:36:58 · 769 阅读 · 0 评论 -
Go中make和new
package mainimport "fmt"//make和new都可以用来初始化,两者却有完全不同的作用//make关键字的主要作用是初始化内置的数据结构,也就是数组,切片和Channel//new,当我们想要获取指向某个类型的指针时可以使用new关键字func main() { //make在Go中只能用来初始化基本类型 //slice是一个包含data,cap和le...原创 2019-11-25 11:06:34 · 123 阅读 · 0 评论 -
Go中的nil(零值)
package mainimport ( "fmt" "unsafe")//Go语言中 nil 是一个预先定义好的标识符,它是许多类型的零值表示,//有过其他编程语言开发经验的开发者也许会把 nil 看作其他语言中的 null(NULL),//其实这并不是完全正确的,因为Go语言中的 nil 和其他语言中的 null 有很多不同点。func main() { //1.ni...原创 2019-11-22 15:48:22 · 744 阅读 · 0 评论 -
Go中list用法
package mainimport ( "container/list" "fmt")//列表是一种非连续的存储容器,由多个节点组成,节点通过一些变量记录彼此之间的关系,列表有多种实现方法,如单链表、双链表等。//列表使用 container/list 包来实现,内部的实现原理是双链表,列表能够高效地进行任意位置的元素插入和删除操作。//初始化列表//list的初...原创 2019-11-22 14:45:14 · 3187 阅读 · 0 评论 -
Go中的map详解
package mainimport ( "fmt" "sort" "sync")/*map是一种特殊的数据结构 一种元素对(pair)的无序集合,pair对应一个key(索引)和你一个value(值)所以这个结构也称为关联数组或字典,可以通过key找value,像python中的字典 *///map是引用类型// map 是可以动态增长的,未初始化的 map 的值是...原创 2019-11-22 14:42:37 · 903 阅读 · 0 评论 -
Go中切片复制及从切片中删除元素
切片复制package mainimport "fmt"//copy(dst, src []Type)int//dst为复制目标,src为被复制目标,即数据来源切片,dst必须有分配的地址,且要能容纳下src的元素个数,两个类型必须一致//如果加入的两个数组切片不一样大,就会按照其中较小的那个数组切片的元素个数进行复制//两个切片 可以共享同一个底层数组func main() ...原创 2019-11-20 14:54:23 · 1419 阅读 · 0 评论 -
Go中=和:=的区别
func main() { //1.用=不用var 声明 //var a []int //给切片添加值 a = append(a, 1,2,3) fmt.Println(a) //undefined: a //2.用=号的话必须先var声明 var a [] int a=[]int{4,5,6} fmt.Println(a) //[4 5 6] //3...原创 2019-11-20 11:01:53 · 718 阅读 · 0 评论 -
Go的切片及用append()给切片添加元素
Go的切片:package mainimport "fmt"//切片slice,是对数组的一个连续片段的引用,所以切片是一个引用类型,像python中list类型//Go语言中切片的内部结构包含地址,大小和容量,切片一般用于快速地操作一块数据集合//从数组或切片生成新的切片//格式:slice[开始位置:结束位置]//slice:表示目标切片对象;开始位置:对应目标的切...原创 2019-11-19 16:52:36 · 8381 阅读 · 1 评论 -
Go的数组
package mainimport ( "fmt")//var 数组变量名 [元素数量]Typefunc main() { //声明数组并初始化 //var arr=[10]int{1,2,3,4,5,6,7,8,9,10} //"...":数组的长度是根据初始化值的个数来计算 var arr=[...]int{1,2,3,4,5,6,7,8,9,10} //打...原创 2019-11-19 14:31:41 · 155 阅读 · 0 评论 -
Go中实现接口的条件
package mainimport "fmt"//1。接口的方法与实现接口的类型方法格式一致//2。接口中所有方法均被实现,若只有接口中的方法而没有实现实现该方法就会报错//当一个接口中有多个方法时,只有这些方法都被实现了,接口才能被正确编译并使用。/*(1)方法名不一致的话:会报出:cannot use f (type *file) as type DataWrit...原创 2019-11-18 16:41:15 · 273 阅读 · 0 评论 -
Go指针操作
package mainimport ( "fmt")//Go提供了控制数据结构指针的能力,但不能进行指针运算//Go允许控制特定集合的数据结构,分配的数量以及内存访问模式//指针://类型指针,允许对这个指针类型的数据进行修改,传递数据可以直接使用指针。而无需拷贝数据,类指针不能进行偏移和运算//切片,由指向起始元素的指针,元素数量和容量组成//切片比原始指针具备更强...原创 2019-11-15 16:46:40 · 381 阅读 · 1 评论 -
Go中的字符串
一个字符串是一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。字符串是一种值类型,且值不可变,即创建某个文本后将无法再次修改这个文本的内容,更深入地讲,字符串是字节的定长数组。package mainimport "fmt"...原创 2019-11-15 15:15:01 · 120 阅读 · 0 评论 -
Go语言中的bool类型
package mainimport "fmt"//一个布尔类型的值只有两种:true 或 false。if 和 for 语句的条件部分都是布尔类型的值,并且==和<等比较操作也会产生布尔型的值。//Go语言对于值之间的比较有非常严格的限制,只有两个相同类型的值才可以进行比较//&&的优先级比||高(&& 对应逻辑乘法,|| 对应逻辑加法,...原创 2019-11-15 14:14:40 · 1386 阅读 · 0 评论 -
Go语言输出正弦函数
package mainimport ( "image" "image/color" "image/png" "log" "math" "os")func main() { //图片大小 const size = 300 //声明size常量 //根据给定大小创建灰度图片对象 pic:=image.NewGray(image.Rect(0,0,size,siz...原创 2019-11-15 13:42:15 · 501 阅读 · 0 评论 -
Go中的多重赋值及冒泡排序
Go中的多重赋值//多变量同时赋值 var r int =100 var t int=200 r,t=t,r i:=600//将list声明为[]int类型type list []int//Len()方法,提供切片的长度func (p list)Len()int { return len(p)}//根据提供的i,j元素索引,获取元素比较返回结果func (p li...原创 2019-11-14 17:28:35 · 186 阅读 · 2 评论 -
解决golang被墙(go get golang.org/x/失败)
1.手动git一般在 GitHub 上都有官方的镜像仓库的对应,我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下($GOPATH//src/golang.org/x/)。例子:cd $GOPATH//src/golang.org/x/git clone https://github.com/golang/crypto.git安装这个包下的所有依赖go insta...原创 2019-11-14 15:49:50 · 2136 阅读 · 0 评论 -
使用Go语言实现一个简单的 HTTP文件服务器
//使用Go语言实现一个简单的 HTTP文件服务器package mainimport "net/http" //这个包的作用是 HTTP 的基础封装和访问func main() { //使用http.FileServer文件服务器将当前目录作为根目录(既访问根目录就会进入当前目录) http.Handle("/",http.FileServer(http.Dir(".")))...原创 2019-11-14 15:29:04 · 791 阅读 · 0 评论 -
Go语言的并发
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用 CPU 性能。多个 goroutine 中,Go语言使用通道(channel)进行通信,通道是一种内置的数据结构,可以让用户在不同的 goro...原创 2019-11-14 14:17:34 · 121 阅读 · 0 评论 -
编写第一个 Go 程序 hello.go
编写第一个 Go 程序 hello.goappledeMac-mini-3:GoProjects apple$ cat hello.gopackage mainimport "fmt"func main() fmt.Println("Hello,World_asimov")要执行 Go 语言代码可以使用 go run 命令。appledeMac-mini-3:GoProj...原创 2019-10-14 14:55:58 · 229 阅读 · 0 评论