一:直播简介    在线教育,娱乐直播等近几年已是遍地开花,其中核心脱离不了低延时音视频技术。我们抛开互动技术不谈,来了解一下视频直播技术。   采集: Windows(dshow,dsound), ios,mac(AVFoundation,AVCaptureSesssion), android(Camera,AudioRecord),Linux(v4l2)&nbsp
GC全称Garbage Collection1、常见垃圾回收算法目前比较常见的垃圾回收算法有三种:引用计数:为每个对象维护一个引用计数,当引用该对象的对象销毁时,引用计数 -1,当对象引用计数为 0 时回收该对象。代表语言:Python、PHP、Swift 优点:对象回收快,不会出现内存耗尽或达到某个阈值时才回收。 缺点:不能很好的处理循环引用,而实时维护引用计数也是有损耗的。标记-清除:从根变量
一、建立工作区1、搭建好了环境,在编写代码之前,首先应该建立golang的工作区2、在Mac或Linux下,golang的工作区应该设置在$HOME/go,所以要在$HOME目录下创建go目录3、而在Windows下,工作区应该设置在 C:\Users\username\go,所以要在C:\Users\YourName目录下创建go目录4、也可以通过设置GOPATH环境变量,用其他目录来作为工作区
导读:在开发 golang 程序过程中,go pprof 可以对我们所写的算法甚至整个应用程序做性能分析,帮助我们快速定位效率低或者资源消耗多的地方。Go 提供了 pprof 以及 trace 工具,本文分别介绍这两个工具的简要用法,希望大家能够快速了解以及快速入门 Go 的性能调优。作者 | 谢久阳(昕希)先来一段演练在给大家介绍枯燥的基础知识之前,先来看看一个简单的例子,这个例子简单粗暴,可以
转载 2024-05-22 08:54:12
51阅读
Google 开发的 Golang 自 2009 年推出,已经日趋成为各大公司开发后端服务使用的语言,有名的基于 Golang 的开源项目有Docker、Kubernetes等。当使用 Golang 开发服务后端时,难免产生性能问题,如内存泄漏、Goroutine 卡死等,Golang 是一个对性能要求很高的语言,因此语言中自带的 PProf 工具成为我们检测 Golang
Golang GC的背景golang是基于garbage collection的语言,这是它的设计原则。作为一个有垃圾回收器的语言,gc与程序交互时候的效率会影响到整个程序的运行效率。通常程序本身的内存管理会影响gc和程序之间的效率,甚至造成性能瓶颈。常见的 GC 模式引用计数(reference counting)每个对象维护一个引用计数器,当引用该对象的对象被销毁或者更新的时候,被引用对象的引
转载 2024-09-29 07:23:18
41阅读
背景本文旨在记录解决问题的办法及思路。需求是识别视频中的话语转为文字,此服务是调用的百度的websocket服务,其要求是:发送一个text类型的帧,用于登录。后续发送binary类型的音频数据。开发语言:Golang websocket库:github.com/gorilla/websocketdemo核心流程就四步:连接服务器,发送text类型的登录消息,写音频数据,接收识别内容package
转载 2024-09-09 17:48:18
72阅读
参考来源: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
87阅读
概要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阅读
代码示例: 004.struct类型 004.struct类型 1 type声明新类型 1 type声明新类型 1.1 type testInt func(int) bool // 声明了一个函数类型 1.1 type testInt func(int) bool // 声明了一个函数类型 1.2
原创 2021-07-26 14:16:52
362阅读
    Go作为新兴语言,很容易上手,天生支持并发,为多核CPU而生;接近C的执行效率;静态语言;支持垃圾回收。 一. 安装下载go并设置环境变量set GOROOT=D:\go #sdk目录set GOPATH=D:\gowork #工作目录set PATH=%GOROOT%\bin;%PATH%二. Hello worldpa
原创 2022-12-15 14:09:53
88阅读
Golang是一种高效、快速的编程语言,拥有非常强大的并发和并行处理能力。这使得它成为了很多互联网公司、大型企业以及个人开发者的首选语言。其中,通信机制是Golang实现并发和并行的重要手段之一,也是实现共享内存的关键。传统上,共享内存意味着让多个线程或进程同时访问同一个区域的内存。这样做虽然能够提高程序运行效率,但同时也会导致数据不一致、竞态条件等问题。为了解决这些问题,Golang采用了“不要
1S = 1000ms 1ms = 1000us1us = 1000ns并行: 借助多核 cpu 实现。 (真 并行)并发: 宏观:用户体验上,程序在并行执行。 微观:多个计划任务,顺序执行。在飞快的切换。轮换使用 cpu 时间轮片。 【假 并行】进程并发: 程序:编译成功得到的二进制文件。 占用 磁盘空间。 死的 1 1 进程:运行起来程序。 占用系统资源。(内存) 活的 N 1进程状态: 初
转载 2023-08-22 15:18:48
104阅读
异构计算(Heterogeneous computing)异构计算(Heterogeneous computing)技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。本文主要介绍了CPU+GPU基础知识及其异构系统体系结构(CUDA)和基于OpenCL的异构系统,并且总结了两种结构的特点,从而对异
文章目录1. 关键字1.1. var:变量声明1.2. const / iota1.3. type:类型别名 / 类型定义1.4. fallthrough1.5. new / make1.6. Go语言strconv包:字符串 / 数值类型的相互转换1.7. 字符类型 byte / rune1.8. Golang之类型转换1.9. 类型断言 type assertion1.10. 常量与cons
转载 2024-05-14 20:35:17
49阅读
文章目录引言问题背景错误原因分析可能的解决方案实战举例报错背景验证方案小结结尾 引言随着深度学习在各领域的广泛应用,GPU计算已经成为了许多研究者和工程师的必备工具。特别是在使用诸如TensorFlow、PyTorch等深度学习框架时,我们经常需要指定特定的GPU设备来进行计算。然而,有时尽管已经设置了CUDA_VISIBLE_DEVICES环境变量,程序仍然会默认使用GPU设备“0”。本文将深
转载 2024-04-28 19:50:54
166阅读
前言本文讨论在Unity URP中,如何使用GPU Instancing,以及和Static Batching, SRPBatcher的关系。几种Batching方式的原理简述Static Batching将一组静态物体的模型batch成一个模型,并作为一个整体提交的GPU。绘制的时候这些物体可以正常的做culling,Unity会将通过Culling的物体使用索引偏移的方式绘制。SPR Batc
转载 2024-06-26 13:20:54
198阅读
文章目录一、单元测试框架介绍1、原生testing1.1 示例1.2 扩展:Table-Driven 设计思想1.3 并行测试2、goconvey2.1 示例2.2 双层嵌套2.3 跳过测试2.4 设置失败后的执行策略2.5 子 Convey 并发执行的原理简述3、testify(推荐)4、测试框架总结二、mock框架介绍1、gostub(不推荐)1.1 基本使用1.2 和 GoConvey 结
转载 2023-07-27 16:43:44
355阅读
方法Go 语言中同时有函数和方法。方法就是一个包含了接受者(receiver)的函数,receiver可以是内置类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。如下面的这个例子,定义了一个新类型Integer,它和int一样,只是为它内置的int类型增加了个新方法Less()type Integer int func (a Integer) Less(b Int
转载 2024-02-27 09:15:20
81阅读
  • 1
  • 2
  • 3
  • 4
  • 5