导读:在开发 golang 程序过程中,go pprof 可以对我们所写的算法甚至整个应用程序做性能分析,帮助我们快速定位效率低或者资源消耗多的地方。Go 提供了 pprof 以及 trace 工具,本文分别介绍这两个工具的简要用法,希望大家能够快速了解以及快速入门 Go 的性能调优。作者 | 谢久阳(昕希)先来一段演练在给大家介绍枯燥的基础知识之前,先来看看一个简单的例子,这个例子简单粗暴,可以
转载
2024-05-22 08:54:12
51阅读
背景本文旨在记录解决问题的办法及思路。需求是识别视频中的话语转为文字,此服务是调用的百度的websocket服务,其要求是:发送一个text类型的帧,用于登录。后续发送binary类型的音频数据。开发语言:Golang
websocket库:github.com/gorilla/websocketdemo核心流程就四步:连接服务器,发送text类型的登录消息,写音频数据,接收识别内容package
转载
2024-09-09 17:48:18
78阅读
Golang GC的背景golang是基于garbage collection的语言,这是它的设计原则。作为一个有垃圾回收器的语言,gc与程序交互时候的效率会影响到整个程序的运行效率。通常程序本身的内存管理会影响gc和程序之间的效率,甚至造成性能瓶颈。常见的 GC 模式引用计数(reference counting)每个对象维护一个引用计数器,当引用该对象的对象被销毁或者更新的时候,被引用对象的引
转载
2024-09-29 07:23:18
41阅读
Google 开发的 Golang 自 2009 年推出,已经日趋成为各大公司开发后端服务使用的语言,有名的基于 Golang 的开源项目有Docker、Kubernetes等。当使用 Golang 开发服务后端时,难免产生性能问题,如内存泄漏、Goroutine 卡死等,Golang 是一个对性能要求很高的语言,因此语言中自带的 PProf 工具成为我们检测 Golang 开
参考来源:30+张图讲解:Golang调度器GMP原理与调度全分析 (qq.com)0. 前提知识对比分析进程、线程与协程 (htmonster.xyz)a.协程的M:N关系为什么是M:N,而不是1:1或者N:1?N:1关系(一个内核线程thread 管理着多个用户协程co-routine)
优点:切换开销小缺点:一个挂了就全挂了,一锅端1:1 关系 (一个内核线程thread 管理着一个用
转载
2024-07-10 15:51:38
91阅读
一:直播简介 在线教育,娱乐直播等近几年已是遍地开花,其中核心脱离不了低延时音视频技术。我们抛开互动技术不谈,来了解一下视频直播技术。 采集: Windows(dshow,dsound), ios,mac(AVFoundation,AVCaptureSesssion), android(Camera,AudioRecord),Linux(v4l2) 
现今即便是个人开发的一般程序,其包含的函数,这些函数代码一般都有他人编写并打包为包或者模块的形式,并通过相关社区并发,最后有软件通过调用这些包或者模块的函数来更高效的完成开发。通过包或者模块的形式重用代码使得编程开发变得轻松go语言包,fmt os等这样具有常用功能的内置包在go语言中一百多个,我们称为标准库,这些标准包大部分都内置到go语言本身 大部分编程语言
转载
2024-03-19 13:45:16
38阅读
概要flag包属于golang的标准库。本文主要分为两个方面进行介绍,一是使用方法;二是源码解析。使用方法命令行启动服务时,命令行分为三个部分,不同部分不能相互混淆[cmd] [flags] [args]cmd – 进程名称flags – 定义的参数命令行的传参格式形式解释-f (只有布尔类型可以使用该格式,等同于 -f=true)-f=x(一个 - 符号,使用
转载
2024-10-20 18:33:46
35阅读
搭建gdb调试go程序前言gdb安装更新brew查看是否存在gdb镜像安装gdbgo build编译gdb执行gdb命令gdb调试问题整理参考前言学会使用gdb进行golang的调试,通过一个简单的go程序进行简单入口程序的源码调用顺序的查看。gdb安装开发环境是Mac,可以使用brew来进行gdb安装更新brewbrew update查看是否存在gdb镜像brew search gdb安装gdb
转载
2024-07-15 15:47:00
119阅读
GC全称Garbage Collection1、常见垃圾回收算法目前比较常见的垃圾回收算法有三种:引用计数:为每个对象维护一个引用计数,当引用该对象的对象销毁时,引用计数 -1,当对象引用计数为 0 时回收该对象。代表语言:Python、PHP、Swift 优点:对象回收快,不会出现内存耗尽或达到某个阈值时才回收。 缺点:不能很好的处理循环引用,而实时维护引用计数也是有损耗的。标记-清除:从根变量
转载
2024-07-16 07:37:48
64阅读
3.8、Golang包packageGolang包的定义和导入通常,文件夹名称和包名称相同,并且,同一个文件夹下面只有一个包定义包service/user_service.gogopackageservice导入包main.gogopackagemainimport"service"golang包管理工具gomodulegomodule是golang1.11版本新加的特性,用来管理模块中包的依赖关
原创
精选
2022-10-23 15:19:41
487阅读
定义 函数可以嵌套定义(嵌套的函数一般为匿名函数),即在一个函数内部可以定义另一个函数。Go语言通过匿名函数支持闭包,C不支持匿名函数,在C11中通过Lambda表达式支持闭包。 闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。 引用环境的定义: 在函数式语言中,当内嵌函数体 ...
转载
2021-08-08 16:03:00
190阅读
2评论
server端 package mainimport ( "net" "fmt" "os" "time")func main() { server := ":7373"
原创
2023-02-09 08:05:59
563阅读
flag, flagSet
原创
2023-06-20 11:03:42
168阅读
fmt fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。 向外输出 标准库fmt提供了以下几种输出相关函数。 Print Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符 ...
转载
2021-08-19 14:36:00
298阅读
2评论
go context标准库 context包在Go1.7版本时加入到标准库中。其设计目标是给Golang提供一个标准接口来给其他任务发送取消信号和传递数据。其具体作用为: 可以通过context发送取消信号。 可以指定截止时间(Deadline),context在截止时间到期后自动发送取消信号。 可 ...
转载
2021-08-19 16:54:00
751阅读
2评论
1.什么是闭包闭包就是能够读取其他函数内部变量的函数,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。2.实例1package mainimport ( "fmt")//函数片段func add(base int) func(int) int { fmt.Printf("%p\n", &base) //打印变量地址
原创
2022-04-08 09:18:13
535阅读
点赞
闭包:一个函数和与其相关的引用环境组合而成的实体先看下面的这个例子:package main
import "fmt"
func adder() func(int) int {
sum := 0
&n
原创
2017-11-30 16:50:06
837阅读
一个回文判断练习, 使用了 unicode 包中的两个方法, 记录一下
原创
2023-06-20 11:07:59
80阅读
golang自带了testing测试包,使用该包可以进行自动化的单元测试,输出结果验证,并且可以测试性能。
建议安装gotests插件自动生成测试代码:
go get -u -v github.com/cweill/gotests/...
测试文件及目录
使用testing测试包的测试文件名称需要以_test.go结尾,并且该测试文件需要与待测试的文件置于同一目录下。比如如下目录:
转载
2019-08-24 09:54:00
251阅读
2评论