简介 Gorm是Go语言开发用的比较多的一个ORM。它的功能比较全: 增删改查 关联(包含一个,包含多个,属于,多对多,多种包含) CallBacks(创建、保存、更新、删除、查询找)之前 之后都可以有callback函…
分类:Go
图解Go语言内存分配
Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样,不会每次内存分配都需要进行系统调用。 Golang运行时的内存分配算法…
深入Go的底层,带你走近一群有追求的人
上周六晚上,我参加了“Go夜读”活动,这期主要讲Go汇编语言,由滴滴大佬曹春晖大神主讲。活动结束后,我感觉打通了任督二脉。活动从晚上9点到深夜11点多,全程深度参与,大呼过瘾,以至于活动结束之后,久久不能平静。 可以说理…
go学习笔记-1
变量的定义 只定义,不赋值 //会有初值 var a int var s string 定义和赋值 var a int = 3 var s string = "abs" #一次定义多个同类型的变量 var a, b in…
RustCon Asia 实录 | Rust 在国内某视频网站的应用
作者介绍: hawkingrei(王维真),中间件高级开发工程师,开源爱好者,TiDB & TiKV Contributor。 WaySLOG(雪松),Rust 铁粉一枚,专注中间件,bug creator。 本…
深度解密Go语言之Slice
Go 语言的 slice 很好用,不过也有一些坑。slice 是 Go 语言一个很重要的数据结构。网上已经有很多文章写过了,似乎没必要再写。但是每个人看问题的视角不同,写出来的东西自然也不一样。我这篇会从更底层的汇编语言…
LeetCode Practice(一)
第一题:计算二进制数两个1之间的间距 题目: 我的思路 英文翻译过来就是把数字化成二进制,计算两个1之间的最大间距。1000,1100,1010的最大间距分别是0,1,2.以此类推 我的第一反应是大学数字逻辑课上的一个知…
database package
清除无效连接 在database库下清除过期连接时,使用了如下的代码逻辑。其中freeConn是空闲连接池,d是连接可被重复使用的最长时间,nowFunc返回的是当前时间。最新生成的连接在freeConn的末尾,而清除的…
深度解密Go语言之关于 interface 的10个问题
这次文章依然很长,基本上涵盖了 interface 的方方面面,有例子,有源码分析,有汇编分析,前前后后写了 20 多天。洋洋洒洒,长篇大论,依然有些东西没有涉及到,比如文章里没有写到反射,当然,后面会单独写一篇关于反射…
深度解密Go语言之反射
反射和 Interface 息息相关,而 Interface 是我们上一篇文章的内容。在开始正文前,和大家说点题外话。 上一篇关于 Interface 的文章发出后,获得了很多的关注和阅读。比如,登上了 GoCN 的每日…
深度解密Go语言之 map
这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门…
深度解密Go语言之unsafe
上一篇文章我们详细分析了 map 的底层实现,如果你也跟着阅读了源码,那一定对 unsafe.Pointer 不陌生,map 对 key 进行定位的时候,大量使用。 unsafe.Pointer 位于 unsafe 包,…