音视频---WebRTC由浅入深

WebRTC通话最典型的应用场景应该是一对一视频通话,如微信视频,QQ视频等。我们回想一下日常生活中是怎么进行“实时音视频”交流的,假设A与B要进行面对面说话,通常A会说:B,xxx,向B发出“问候”声明,表明我要和你开始对话了,你方便嘛。这时候,如果B正在和C说话,可能就会说:稍等,我和C聊完再和你说。如果B带了降噪耳机,可能只是收到了A的信号,还没听清楚具体的意思,那么可能就会说:再说一遍,刚刚没听清楚。也有可能B心情不好,没有理睬A的话语。情况很多,甚至B是外国人,可能会回复:dsl#%¥...阅读全文

简书 2021-01-14 23:32:46 Linux技术栈

apisix集群搭建

apisix官方文档:https://github.com/apache/apisix服务器信息:10.199.250.72,10.199.250.44,以下操作,两台服务器都要执行。一:安装依赖# 安装 epel, `luarocks` 需要它wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmsudo rpm -ivh epel-release-latest-7.noarch.rpm# 添加 Op...阅读全文

简书 2021-01-14 23:32:45 困困困困困困小凯

史上最轻量​!阿里新型单元测试Mock工具开源了(深度好文)

最简单舒适的Mock测试应该是怎样的? 指着源文件调用了外部依赖的那行代码说: “你,在测试的时候,换成这个假的调用!” 结束。 甭管他是私有方法、静态方法,还是别的类的方法,直接换掉,不要有任何多余动作。 一 Mock测试八股文 Java的Mock工具伴随着单元测试技术不断迭代发展,可谓前仆后继、历久弥新,虽然原理各不相同,但核心的使用模式却几乎没发生过多少变化。不论是当下流行的Mockito和PowerMock,或是曾经著名的JMockit、EasyMock、MockRunner等等,基本使...阅读全文

简书 2021-01-14 23:32:42 67fa6226de05

go实现插入排序

go实现插入排序,插入排序(j=i;j>0;j--),是将未排序的区间中选择一个元素,然后在到已排序的区间中进行二次的比较和排序,和选择排序不一样,因为选择排序是每次都要将剩下的的元素进行比较,然后在排序到数组左边(temp = array[i])。selectSort.gopackage main import "fmt" func main() { array := []int{5,3,2,1} res := insertSort(array) fmt.Println(res) } func...阅读全文

Segmentfault 2021-01-18 10:32:33 .container .car 等

windows下如何玩转火热的go-zero

作者:阿啄debugIT 前言 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。 这么牛,怎么不想去试一下?! go语言环境搭建 配置GO语言环境 新增go的代理 GOPROXY=h...阅读全文

简书 2021-01-14 13:32:50 kevwan

go语言实现选择排序

go语言实现选择排序,为什么叫选择排序呢?从数组元素中第一个元素开始array[0],和其他元素相比,然后找出第一次元素最小的那个索引,将最小的元素排序到元素第一个位置package main; import "fmt"; func main() { array := []int{5,4,3,21} res := selectSort(array) fmt.Println(res) } func selectSort(array []int) []int { n := len(array) fo...阅读全文

Segmentfault 2021-01-17 23:32:32 .container .car 等

go实现冒泡排序

GO实现冒泡排序,每次比较都将数组中最大的数,一致数组最后一位,然后第二次排序的时候,就不用在比较最后一位。BubleSort.gopackage main; import "fmt" func main() { array := []int{5,4,3,4,2} res := bubleSort(array) fmt.Println(res) } func bubleSort(array []int) []int { length :=len(array) //isChange :=false...阅读全文

Segmentfault 2021-01-17 20:32:32 .container .car 等

镜像批量迁移利器:image-transfer

概述 用户业务在上云或者云迁移过程中,需要对镜像进行批量迁移。基于此背景,腾讯云容器专家团队开发了镜像批量迁移工具:image-transfer。该工具支持多种云厂商镜像仓库之间的批量迁移,同时支持腾讯云镜像仓库 TCR 个人版 CCR 一键全量迁移至腾讯云镜像仓库企业版 TCR。 本文首先介绍业务上云/迁移过程中镜像迁移的痛点。随后详细介绍镜像批量迁移工具 image-transfer 的设计思想,功能模块以及最佳实践。 工具已正式开源,项目地址:https://github.com/tkes...阅读全文

简书 2021-01-13 22:32:49 腾讯云原生

[译]如果对齐内存的写入是原子性的,为什么我们还需要sync/atomic包

原文地址:https://dave.cheney.net/2018/01/06/if-aligned-memory-writes-are-atomic-why-do-we-need-the-sync-atomic-package 这是受到在Go论坛上一篇帖子的启发想到的问题。问题的大意是:“如果处理器保证正确对齐的写入是原子的,那么为什么还需要数据竞态检测器?” 答案是,原子这个词在这里有两种用法。第一个是OP引用的,是大多数微处理器的属性,只要写入的地址自然对齐即可,例如,如果它是32位,则始...阅读全文

简书 2021-01-13 22:32:43 豆腐匠

详解Go逃逸分析

Go是一门带有垃圾回收的现代语言,它抛弃了传统C/C++的开发者需要手动管理内存的方式,实现了内存的主动申请和释放的管理。Go的垃圾回收,让堆和栈的概念对程序员保持透明,它增加的逃逸分析与GC,使得程序员的双手真正地得到了解放,给了开发者更多的精力去关注软件设计本身。 就像《CPU缓存体系对Go程序的影响》文章中说过的一样,“你不一定需要成为一名硬件工程师,但是你确实需要了解硬件的工作原理”。Go虽然帮我们实现了内存的自动管理,我们仍然需要知道其内在原理。内存管理主要包括两个动作:分配与释放。逃...阅读全文

简书 2021-01-13 22:32:43 机器铃砍菜刀s

详解Go逃逸分析

Go是一门带有垃圾回收的现代语言,它抛弃了传统C/C++的开发者需要手动管理内存的方式,实现了内存的主动申请和释放的管理。Go的垃圾回收,让堆和栈的概念对程序员保持透明,它增加的逃逸分析与GC,使得程序员的双手真正地得到了解放,给了开发者更多的精力去关注软件设计本身。就像《CPU缓存体系对Go程序的影响》文章中说过的一样,“你不一定需要成为一名硬件工程师,但是你确实需要了解硬件的工作原理”。Go虽然帮我们实现了内存的自动管理,我们仍然需要知道其内在原理。内存管理主要包括两个动作:分配与释放。逃逸...阅读全文

Segmentfault 2021-01-17 19:32:34 .container .car 等

LogAgent的工作流程

项目架构设计LogAgent的工作流程:读日志 --tailf第三方库func main() {fileName := "./my.log" config := tail.Config{ ReOpen: true, // 重新打开 Follow: true, // 是否跟随 Location: &tail.SeekInfo{Offset: 0, Whence: 2}, // 从文件的哪个地方开始读 MustExist: false, // 文件不存在不报错 Poll: true, } tails...阅读全文

Segmentfault 2021-01-17 18:32:32 .container .car 等

浅谈 go-zero 中批处理的设计 | 七日打卡

前言创建这个库的目的是,Go的现有库没有诸如灵活定义作业运行、批量提交任务减少小任务提交等特性。过去,可能会基于Worker池的思想创建代码,但是使用时的麻烦,从来没有一般化地创建一个完整的库。go-zero 就创建了 executors。介绍在 go-zero 中,executors 充当任务池,做多任务缓冲,使用做批量处理的任务。如:clickhouse 大批量 insert,sql batch insert。同时也可以在 go-queue 也可以看到 executors 【在 queue ...阅读全文

51CTO博客 2021-01-13 14:15:46 mb5ffbc7cecbf87