获得徽章 0
- #每天一个知识点#
TCMalloc 的全称是 Thread-Caching Malloc (线程缓存分配器),是 Google 公司推出的一个内存分配器,在不少项目中都有使用,go 语言就是使用类似的算法实现内存分配的。评论点赞 - #挑战每日一条沸点#
Go 中,还可以使用 new 类型(包括结构体、 型、 浮点数 字符串等)进行实例化,结构体在实例化后会形成指针类型的结构体。评论点赞 - #每天一个知识点#
TCMalloc 内存管理体系分为三个层次: ThreadCache、Central Cache和PageHeap 。分配内存和释放内存的时候都是在各个层次中逐级尝试的,整体的思路是当最小的 ThreadCache 层分配内存失败,则从下层的 CentralCache 中分配一批补充上来,还不够就再从 PageHeap 那里要,再不够向操作系统要。在释放内存时,ThreadCache释放了过多的内存,则回收一批到 Central Cache 层,以此类推逐级回收到 PageHeap 并最终还给操作系统。展开评论点赞 - #每天一个知识点#
反射是指计算机程序在运行时( Run time) 可以访问、检测和修改本身状态或行为的一种能力。通俗地讲,反射就是程序能够在运行时动态地查看自己的状态,并且允许修改自身的行为。评论点赞 - GOPATH Go 中使用的 个环境变 ,它使用绝对路径提供项目的工作目录,工作目录是工程开发的相对参考目录。
GOPATH 适合处理大量Go源码、多个包组合而成的复杂工程。评论点赞 - #每天一个知识点#
Go 内存理器是基于 TCMalloc 实现的,底层直接调用 rnrnap 函数,
并使用 bestfit 进行动态分配,但 Go 的内存 理器也做了 些优化,所以和 TCMalloc
并不完全 Go 语言中,内存分为两部分, 部分作为堆,供内存分配;另 部分
作为 bitmap ,用来管理堆 这两部分的内存都是从同 个地址开始申请的,向高地址的方
向增长的就是内存池,向低地址方向增长的就是 bitmap展开评论点赞 - #每天一个知识点#
Go 语言通过编译器运行时( run ime 从语言上支持了并发的特性。 Go 的并发goroutine 性完成。 goroutine 于线程,但是可以根据需要 建多 goroutine发工 goroutine 是由 Go 语言的运行时调度完成 而线程是由操作系统调度完成。评论点赞 - #挑战每日一条沸点#
Go 语言的垃圾回收是基于标记清理算法的。由于引用计数不能处理循环引用 ,为了避免引用计 的缺陷, 后来出现了各种垃圾回收机制,包括标记清理、节点复制、分代收集等垃圾回收算法。评论点赞 - #每天一个知识点#
Go 语言中的 time 包提供了计时器的封装。由于 Go 语言中的通道和 goroutine 的设计,
定时任务可以在 goroutine 中通过同步的方式完成,也可以通过在 goroutine 中异步回调完
成。评论点赞 - #挑战每日一条沸点#
采用单密钥的加密算法,我们称为对称加密。整个系统由如下几部分构成:需要加密的明文、
加密算法和密钥。在加密和解密中,使用的密钥只有一个。常见的单密钥加密算法有DES、AES、
RC4等。
采用双密钥的加密算法,我们称为非对称加密。整个系统由如下几个部分构成:需要加密的
明文、加密算法、私钥和公钥。在该系统中,私钥和公钥都可以被用作加密或者解密,但是用私
钥加密的明文,必须要用对应的公钥解密,用公钥加密的明文,必须用对应的私钥解密。常见的
双密钥加密算法有RSA等。展开评论点赞