
Go语言
文章平均质量分 90
Golang服务端工程师
服务端工程师
展开
-
【GO面试精要】GC内存管理机制
GC内存管理机制Go的GC目前使用的是无分代(对象没有代际之分)、不整理(回收过程中不对对象进行移动和整理)、并发(与用户代码并发执行)的三色标记清扫算法。原因:不整理,对象整理是解决内存碎片问题,但GO运行时的分配算法是基于tcmalloc,对对象整理没有实质性能提升。无分代,Go的编译器通过逃逸分析将大部分新生对象存储在栈上,只有需要长期存在的对象才会被分配到需要进行垃圾回收的堆中。也就是说存活时间短的对象在Go中是直接被分配到栈上,当goroutine死亡后栈也会被直接回收,不参GC过程原创 2021-05-16 16:16:04 · 550 阅读 · 0 评论 -
【GO面试精要】GMP并发模型、Goroutine
GMP并发模型进程与线程与协程多个线程属于同一个进程并共享内存空间,线程之间的通讯基于共享的内存进行。Go语言的调度器使用与CPU数量相等的线程来调度多个Goroutine。”为什么用Go语言?“进程、线程存在问题:CPU高消耗切换线程上下文需要申请、销毁资源消耗时间高内存高占用线程占用1M以上的内存空间协程(Goroutine)的优点:占用的内存更小(几kb)初始为2kb,如果栈空间不足则自动扩容调度更灵活(runtime调度)Go自己实现的调度器,创原创 2021-04-11 15:23:13 · 674 阅读 · 0 评论 -
【Golang】三色标记、混合写屏障GC模式图文全分析
Golang 三色标记、混合写屏障GC模式图文全分析垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world),STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次的迭代优化来解决这个问题,本文将逐步推进Golang中G原创 2020-07-01 10:13:53 · 38531 阅读 · 8 评论 -
【Go】高性能的简繁体转换
Github链接地址高性能的简繁体转换入口sat.go// 实现该接口,以提供字体转换type Dicter interface { Init(opts ...Option) error //执行初始化操作 Read(string) string //繁体转简体 ReadReverse(string) string //简体转繁体}options.go// 自定义初始化参数内容type Option func(*Options)type Options struct { Pa原创 2020-06-22 13:46:04 · 16481 阅读 · 2 评论 -
【Golang】interface接口设计原则
interface接口interface 是GO语言的基础特性之一。可以理解为一种类型的规范或者约定。它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“implements”关键字,只是通过约定的形式,隐式的实现interface 中的方法即可。因此,Golang 中的 interface 让编码更灵活、易扩展。如何理解go 语言中的interface ?只需记住以下三点即可。interface是方法声明的集合任何类型的对象实现了在interface接口中声明的全部方原创 2020-06-15 12:22:19 · 28521 阅读 · 2 评论 -
Golang调度器GMP原理与调度全分析
Golang调度器GMP原理与调度全分析该文章主要详细具体的介绍Goroutine调度器过程及原理,可以对Go调度器的详细调度过程有一个清晰的理解,花费4天时间作了30+张图(推荐收藏),包括如下几个章节。Golang调度器的由来单进程时代不需要调度器我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是“单进程时代”我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统原创 2020-06-15 00:04:04 · 37619 阅读 · 4 评论 -
【0基础入门数据结构与算法】—— 归并排序
目录1. 说明2. 归并排序2.1. 实现过程2.2. 代码片段 - 自顶向下2.2.1.代码片段2.2.2. 代码解释2.3. 代码片段 - 自底向上2.3.1. 代码片段2.3.2. 代码解释1. 说明归并排序(MERGE-SORT) 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列...原创 2020-01-26 12:41:57 · 456 阅读 · 0 评论 -
【0基础入门数据结构与算法】—— 选择排序、插入排序、冒泡排序
Bubble Sort _ GeeksforGeeks原创 2020-01-26 11:11:16 · 189 阅读 · 0 评论 -
【Go语言实战】—— 时间戳转标准输出格式,标准输出转时间戳,gorm查询标准化时间
Go语言邮件发送 QQ邮箱发送 QQ企业邮箱 163邮箱等...请务必下载代码包时间戳转换配置邮件发送基础信息发送邮件的内容完整代码请务必下载代码包查看源码地址命令行安装:go get github.com/Gre-Z/common邮箱发送的功能模块位于 github.com/Gre-Z/common/jtime时间戳转换支持将时间戳转成标准输出格式,标准输出时间转时间戳。typ...原创 2019-05-28 17:22:14 · 7068 阅读 · 0 评论 -
【Go语言实战】—— 邮件发送 QQ邮箱发送 QQ企业邮箱 163邮箱等
Go语言邮件发送 QQ邮箱发送 QQ企业邮箱 163邮箱等...请务必下载代码包创建一个发件箱实例配置邮件发送基础信息发送邮件的内容完整代码请务必下载代码包查看源码地址命令行安装:go get github.com/Gre-Z/common邮箱发送的功能模块位于 github.com/Gre-Z/common/email创建一个发件箱实例本包支持任意邮箱发送,同时对QQ邮箱,QQ企...原创 2019-05-28 16:31:30 · 2010 阅读 · 0 评论