后端
文章平均质量分 67
JohnGox
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ent 实现分表查询
本文介绍了使用Ent框架实现MySQL分表查询的方法。通过自定义拦截器动态修改表名,并设置表别名以兼容SQL语句。具体实现包括:1)定义Schema文件描述表结构;2)创建拦截器从context获取分表规则并动态修改表名;3)查询时通过context传递分表参数。示例以supplier_id=12的分表查询为案例,成功查询supplier_product_12_tbl表数据。该方法实现了基于Ent框架的透明分表查询功能,代码简洁且易于维护。原创 2025-08-26 11:50:54 · 334 阅读 · 0 评论 -
为什么array可以作为map key?而slice不可以
在golang中,什么类型才可以作为map key,在golang官方博客中找到以下说明:As mentioned earlier, map keys may be of any type that is comparable. The language spec defines this precisely, but in short, comparable types are boolean, numeric, string, pointer, channel, and interface type原创 2021-04-02 12:52:11 · 2184 阅读 · 0 评论 -
Golang中的达夫设备(Duff‘s device)
什么是Duff’s device设备达夫设备是串行复制的一种优化实现,主要是利用汇编语言编程的优化思路,该思路要求“在复制时最小化判断数和分支数”。1983年11月,当时在影视公司工作的Tom Duff,为了提高动画实时程序的速度发明这种实现。我们来看看达夫设备实现的示例代码:send(to, from, count)register short *to, *from;register count;{ register n=(count+7)/8; switch(count%8){原创 2020-10-26 21:03:32 · 705 阅读 · 0 评论 -
限流算法的golang实现
限流算法常见的限流算法有漏桶算法(Leaky Bucket),令牌桶算法(Token Bucket)漏桶算法(Leaky Bucket)原理类似于漏桶的进水和出水,流入漏桶的水流大于流出漏桶的水流时,漏桶就会慢慢变满,水满后就会溢出。请求访问服务,当突发请求大于服务承受数量时,服务器拒绝访问,服务器以一定的速度响应请求。令牌桶算法(Token Bucket)和漏桶算法不同的是,令...原创 2019-10-23 18:51:31 · 793 阅读 · 0 评论 -
访问控制模型(DAC,MAC,RBAC,ABAC)
访问控制模型项目中需要加入访问控制,对访问控制模型做了一些调研, 本文主要是介绍一些常用的访问控制模型。基本要素访问控制模型包括三个要素,即:主体(Subject) 指主动对其它实体施加动作的实体客体(Object) 是被动接受其他实体访问的实体控制策略(Policy)为主体对客体的操作行为和约束条件安全策略主体、客体,控制策略三者需要满足的基本安全策略:最小...原创 2019-09-12 19:22:29 · 36170 阅读 · 1 评论 -
Golang中panic和defer的字符串打印顺序
环境 Ubuntu 16.04 Goland 2018.1.1 go1.10.1 linux/amd64题目package mainimport ( "fmt")func main(){ defer_call()}func defer_call() { defer func() { fmt.Println(&quot原创 2018-04-28 18:20:41 · 3126 阅读 · 0 评论 -
golang json.Marshal 什么情况下会报错?
func Marshal(v interface{}) ([]byte, error)我们一般会这样使用 b, err := json.Marshal(data) ,也就是应该检查Marshal返回的错误,但很少遇到这个函数报错,那么什么情况下json.Marshal会返回错误。通过官方文档,找到了以下的说明:Channel, complex, and function values cannot be encoded in JSON. Attempting to encode such a va.原创 2021-04-01 15:08:01 · 7628 阅读 · 0 评论 -
golang避坑之设置http头和状态码
golang中设置http头用 w.Header().Set() ,设置状态码用 ***w.WriteHeader()***, 设置body用 ***w.Write()***。但他们的调用顺序是有要求的。正确的调用顺序如下:func HandleHello(w http.ResponseWriter, r *http.Request) { w.Header().Set("X-name","john") w.WriteHeader(http.StatusOK) w.Write([]byte("hell原创 2021-03-31 19:57:17 · 3974 阅读 · 0 评论
分享