go
文章平均质量分 71
向神明诉语、
这个作者很懒,什么都没留下…
展开
-
golang 切片面试题
需要注意的是,扩容操作不仅仅是涉及到容量的扩容,同时也需要考虑到数据的拷贝问题。:main函数中定义了一个10个长度的整型数组array,然后定义了一个切片slice,切取数组的第6个元素,最后打印slice的长度和容量,判断切片的第一个元素和数组的第6个元素地址是否相等。然后执行AddElement函数中执行的是浅拷贝,返回了一个扩容后长度为4,容量为6的切片并赋给newSlice,所以原slice和newSlice的地址是不一样的。1、当需要的容量超过原切片容量的两倍时,会使用需要的容量作为新容量。原创 2023-07-04 16:31:27 · 179 阅读 · 0 评论 -
Golang逃逸分析
栈上分配内存比在堆中分配内存有更高的效率栈上分配的内存不需要GC处理堆上分配的内存使用完毕会交给GC处理逃逸分析目的是决定内分配地址是栈还是堆逃逸分析在编译阶段完成。原创 2023-02-13 11:29:23 · 89 阅读 · 0 评论 -
垃圾回收原理
对每个对象维护一个引用计数,当引用该对象的对象被销毁时,引用计数减1,当引用计数器为0是回收该对象。:对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。:不能很好的处理循环引用,而且实时维护引用计数,有也一定的代价。:从根变量开始遍历所有引用的对象,引用的对象标记为”被引用”,没有被标记的进行回收。:解决了引用计数的缺点。:需要STW,即要暂时停掉程序运行。:Golang(其采用三色标记法)原创 2023-02-04 22:07:44 · 476 阅读 · 0 评论 -
内存分配原理
有了管理内存的基本单位span,还要有个数据结构来管理span,这个数据结构叫mcentral,各线程需要内存时从mcentral管理的span中申请内存,为了避免多线程申请内存时不断地加锁,Golang为每个线程分配了span的缓存,这个缓存即是cache。cache作为线程的私有资源为单个线程服务,而central则是全局资源,为多个线程服务,当某个线程内存不足时会向central申请,当某个线程释放内存时又会回收进central。3.从mcache的alloc[class]链表中查询可用的span。原创 2023-02-03 21:57:10 · 250 阅读 · 1 评论 -
GMP原理与调度
M 与 P 的数量没有绝对关系,一个 M 阻塞,P 就会去创建或者切换另一个 M,所以,即使 P 的默认数量是 1,也有可能会创建很多个 M 出来。原创 2023-02-02 22:03:25 · 357 阅读 · 0 评论 -
Go为什么没有三目运算符
什么是三目运算符这种问题对于编程老手来说简直是侮辱智商的问题,但为了篇幅的完整性,还是得要提一下。首先,看一下不支持三目表达式特性的 Go 语言的写法genderDesc = "男" } else {genderDesc = "女" } fmt . Println(genderDesc)再看一下支持三木表达式特性的 C++ 语言的写法"男" : "女");没错,这个?:就是三目运算符的典型语法。原创 2023-02-16 20:41:31 · 413 阅读 · 0 评论 -
GORM--CRUD(增删改查)
GORM中的增删改查基础操作原创 2022-03-25 21:53:06 · 275 阅读 · 0 评论 -
GORM框架基础学习
GORM框架的基础部分原创 2022-03-25 21:37:49 · 1076 阅读 · 0 评论 -
gin框架学习笔记
gin框架的学习笔记和一些案例练习原创 2022-03-23 09:37:29 · 1499 阅读 · 0 评论