独立周刊2024/07/08
July 8, 2024
后端
- The new() vs make() Functions in Go
make() | new() | |
---|---|---|
used for | slice, map, chan | all types, usually struct |
return | an initialized (non-zeroed) value of a specified type | a pointer to a newly allocated zeroed value of a given type |
when to use | Use new() for Value Types | Use make() for Reference Types |
在这 6 个内存段中,堆和文件映射段的内存是动态分配的。比如说,使用 C 标准库的 malloc() 或者 mmap() ,就可以分别在堆和文件映射段动态分配内存。
brk | mmap | |
---|---|---|
阈值大小 | < 128k | > 128k |
内存来源 | 堆 | 文件映射区 |
归还方式 | 不会立即归还 | 归还给系统 |
为何不全部使用mmap?
- 每次归还给系统,用户态内核态切换开销大
- mmap空间非连续,会导致大量的缺页中断。CPU高。而堆上的空间是连续的,缺页概率小。
为何不全部使用brk
- 容易有内存碎片。
工具
命令行工具,用于快速生成数据库的说明文档。支持将db的中所有表的创建sql、字段定义等导出为markdown,并生成关系图。支持Mysql、Postgres等DB类型的导出。
输出的md内容参考:
Loading...
- 工具
- RPA工具:robotic process automation
See all postsSee all posts