您的位置:首页Golang
  • 深入Golang中的sync.Pool详解
    我们通常用golang来构建高并发场景下的应用,但是由于golang内建的GC机制会影响应用的性能,为了减少GC,golang提供了对象重用的机制,也就是sync.Pool对象池。 sync.Pool是可伸缩的,并发安全的。其大小仅受限于内存的大小,可以被看作是一个存放可重用对象的值的容器。 设计的...
    日期:2023-10-29浏览:9
  • golang 的string与[]byte转换方式
    相对于C语言,golang是类型安全的语言。但是安全的代价就是性能的妥协。下面我们看看Golang不想让我们看到的“秘密”——string的底层数据。通过reflect包,我们可以知道,在Golang底层,string和slice其实都是struct:type SliceHeader struct ...
    日期:2023-10-26浏览:358
  • golang 接口嵌套实现复用的操作
    大家还是直接看代码吧~package mainimport ( 'fmt')func main() { start(NewB(C{})) start(NewB(D{}))}type A interface { what()}type B struct { A}type ...
    日期:2023-10-25浏览:121
  • golang 如何获取map所有key的方式
    最佳方式:根据map的长度,新建一个数组,遍历map逐个压入方法1(效率很高):func getKeys1(m map[int]int) []int { // 数组默认长度为map长度,后面append时,不需要重新申请内存和拷贝,效率很高 j := 0 keys := make([]int, le...
    日期:2023-09-29浏览:118
  • Golang 之协程的用法讲解
    一、Golang 线程和协程的区别备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。进程、线程 和 协程 之间概念的区别对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)对于 协程(用户级线程),这是对内核透明的,也就是系统并不知道有...
    日期:2023-10-27浏览:108
  • Golang 删除文件并递归删除空目录的操作
    目的:删除文件之后,如果目录为空,递归删除为空的目录。svr.dataDir指目录的最外层,递归删除目录的时候判断到这一层即可。eg:/Users/danny/datafunc deleteFileOnDisk(localPath string) { log.Debugf('remove fi...
    日期:2023-10-24浏览:8
  • 基于HLS创建Golang视频流服务器的优缺点
    HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议, 并于 2009 年. HLS 流媒体已经成为应用最广泛的实时视频协议。它是一种将流分解成基于文件小段的格式, 可以通过 HTTP 下载,HLS 可以通过标准的 HTTP 或代理...
    日期:2023-11-01浏览:66
  • golang 并发编程之生产者消费者详解
    golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势学习一个语言的并发特性,我喜欢实现一个生产者消费者模型,这个模型非常经典,适用于很多的并发场景,下面我通过这个模型,来简单介绍一下 golang 的并发编程go 并发语法协程 go协程是 gola...
    日期:2023-10-14浏览:65
  • 解决Golang小数float64在实际工程中加减乘除的精度问题
    GO语言的float64类型在做加减乘除时会出现一些问题比如乘法运算,实例,将小数的元转换成整数的分:发现将小数的元乘以100后强制转换为整数分,少了1分解决办法:var (a, b float64c int64)a = 2.55b = 0.0c = int64((a + b) * 100.0)fm...
    日期:2023-09-30浏览:43