当前位置:首页 > 文章列表 >golang

golang
golang专题下共有 1607 篇文章
  • 手把手教你优化Golang程序,让超大二进制文件变小
    手把手教你优化Golang程序,让超大二进制文件变小
    Golang二进制文件体积大的主要原因在于默认包含运行时和依赖库,解决方法包括:1.使用strip命令和-gobuild-ldflags="-s-w"移除调试信息;2.使用UPX压缩,但会增加启动时间和可能被误报;3.通过gomodtidy清理未用依赖;4.禁用CGO以减少体积;5.使用TinyGo生成更小文件但功能受限;6.使用DockerMulti-Stage构建精简镜像。此外,还可通过PGO优化执行效率,使用gotoolobjdump和nm分析文件结构,压缩后可能影响启动性能,需根据实际需求权衡选择
    Golang· Go教程   |  2个月  |   golang 优化 压缩 二进制文件 DockerMulti-Stage 247浏览 收藏
  • Golangchannel并发与同步技巧全解析
    Golangchannel并发与同步技巧全解析
    Golang的channel通过通信和同步机制实现goroutine间安全高效的数据传递与协调。使用channel可在不同goroutine之间传递数据,例如一个goroutine发送网络请求结果到channel,另一个从channel接收并处理数据;使用bufferedchannel可避免发送方因接收方未就绪而阻塞;关闭channel可通知接收方数据发送完毕。Channel也可用于同步goroutine,例如结合sync.WaitGroup等待所有任务完成。避免死锁的方法包括使用bufferedchan
    Golang· Go教程   |  2个月  |   golang 并发 247浏览 收藏
  • Golang中new和make区别详解
    Golang中new和make区别详解
    new用于分配任何类型的内存并返回指向零值的指针,适用于基本类型或结构体;make用于初始化slice、map和channel,返回可直接使用的数据结构。例如new(int)返回指向0的指针,make([]int,5)创建长度和容量均为5的切片。两者区别在于new仅分配内存并置零,而make会初始化内部结构。选择上,基本类型或结构体用new,slice、map、channel用make。底层实现上new调用mallocgc分配内存,make则根据类型调用特定函数进行初始化。理解两者的差异有助于编写高效Go
    Golang· Go教程   |  2个月  |   golang 指针 内存分配 new make 247浏览 收藏
  • Golang指针逃逸优化技巧详解
    Golang指针逃逸优化技巧详解
    在Go语言中,减少指针逃逸的核心方法包括:①明确变量作用域,将变量定义在函数内部;②优先使用值传递而非指针传递(尤其小型结构体);③利用sync.Pool重用频繁创建的对象;④避免闭包捕获指针变量;⑤不将局部变量赋值给全局变量;⑥使用strings.Builder优化字符串拼接;⑦预分配切片容量以减少扩容;⑧通过gobuild-gcflags'-m'分析逃逸情况。这些做法可有效降低堆内存分配频率,减轻GC压力,从而提升程序性能。
    Golang· Go教程   |  1个月  |   golang 性能优化 GC压力 栈分配 指针逃逸 247浏览 收藏
  • Golang正则优化:预编译提升效率
    Golang正则优化:预编译提升效率
    答案:Golang中优化正则性能的核心是避免重复编译。通过regexp.MustCompile或regexp.Compile预编译正则表达式,可显著提升性能,尤其在循环或高并发场景下;预编译后的*regexp.Regexp对象是线程安全的,可被多个Goroutine复用;此外,应避免不必要的捕获组、合理使用非贪婪匹配,并优先用strings包处理简单字符串操作,以进一步优化性能。
    Golang· Go教程   |  3星期  |   golang 正则表达式 性能优化 预编译 regexp包 247浏览 收藏
  • 手把手教你Golang中context.Context超时控制优化技巧
    手把手教你Golang中context.Context超时控制优化技巧
    优化Golang中context.Context的超时控制机制的核心方法包括:1.明确不同操作的合理超时时间,避免统一使用过长超时;2.根据需求选择context.WithTimeout或context.WithDeadline创建上下文;3.将带超时的context显式传递给耗时操作函数;4.在长时间运行的操作中定期检查context.Done()通道以及时退出;5.使用select语句同时监听context.Done()和操作完成通道;6.通过context.CancelFunc提前取消不必要的操作;
    Golang· Go教程   |  2个月  |   golang Http请求 数据库操作 超时控制 context.Context 246浏览 收藏
查看更多
课程推荐
  • Golang深入理解GPM模型
    Golang深入理解GPM模型
    Golang深入理解GPM调度器模型及全场景分析,希望您看完这套视频有所收获;包括调度器的由来和分析、GMP模型简介、以及11个场景总结。
    474次学习
  • Go语言课程Gin框架实战
    Go语言课程Gin框架实战
    Gin是一个用Go(Golang)编写的HTTPweb框架。它是一个类似于 martini 但拥有更好性能的API框架,由于 httprouter,速度提高了近40倍。如果你需要极好的性能,使用Gin吧。
    338次学习
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
    204次学习
  • Go编程基础视频教程
    Go编程基础视频教程
    Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。我们收集了这套《Go编程基础视频教程》,希望能够帮助大家更好的学习go语言。
    167次学习
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
    129次学习
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码