go中类型转换的搜集
func StringToInt(a string) int {
d, _ := strconv.Atoi(a)
return d
}
package main
import (
"encoding/json"
"net/http"
)
func main() {
http.HandleFunc("/", ExampleHandler)
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
func ExampleHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
resp, _ := json.Marshal(map[string]string{
"ip": GetIP(r),
})
w.Write(resp)
}
func GetIP(r *http.Request) string {
forwarded := r.Header.Get("X-FORWARDED-FOR")
if forwarded != "" {
return forwarded
}
return r.RemoteAddr
}
限流器是后台服务中的非常重要的组件,可以用来限制请求速率,保护服务,以免服务过载。 限流器的实现方法有很多种,例如滑动窗口法、Token Bucket、Leaky Bucket等。
其实golang标准库中就自带了限流算法的实现,即golang.org/x/time/rate。 该限流器是基于Token Bucket(令牌桶)实现的。
简单来说,令牌桶就是想象有一个固定大小的桶,系统会以恒定速率向桶中放Token,桶满则暂时不放。 而用户则从桶中取Token,如果有剩余Token就可以一直取。如果没有剩余Token,则需要等到系统中被放置了Token才行。
go中我们往往要对变量分配内存,那么分配内存有两中方式分别是new和make。查了一些资料,顺便看我开发中用的几个地方。其实,很好理解。
new分配中内存,不做初始化,也就是不能直接赋值,必须初始化后才能赋值。
make分配好内存且已经
在go中往redis的hash写数据的时候遇到了结构体数组写入时无法写入,看了看写入数据要求是map[string]interface,而我的是struct。因此,无法写入的。
那么就是转格式呗
type order struct{
Id int64 `json:"id"`
orderSn int64 `json:"order_sn"`
}
orders:=order{
Id:2022032034566
OrderSn:20220320122444
}
jsonData,_:=json.Marshal(orders)
var redisData map[string]interface{}
json.Unmarshal([]byte(jsonData),&redisData)
log.Info(redisData)
以上就是转化过程。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true