const go
Go源码阅读——github.com/medcl/esm
esm(An Elasticsearch Migration Tool)—— main.go https://github.com/medcl/esm 阅读源码,我没啥好方法和好习惯,唯 "莽 "。 一、main.go func main(){} // 该方法用于基于源索引的刷新设置来还原目标索引的 ......
Go语言入门14(channel通道01)
channel(一) channel用于goroutines之间的通信,让它们之间可以进行数据交换。像管道一样,一个goroutine_A向channel_A中放数据,另一个goroutine_B从channel_A取数据 channel 基本语法 // 因为channel是指针类型的数据类型, ......
Go并发编程实战
概述 基础理论 Do not communicate by sharing memory; instead, share memory by communicating. 简单来说所谓并发编程是指在一个处理器上“同时”处理多个任务;宏观上并发是指在一段时间内,有多个程序在同时运行;在微观上 并发是指 ......
【GO】jeager
安装 docker docker pull jaegertracing/all-in-one:latest docker run \ --rm \ --name jaeger \ -d \ -p6831:6831/udp \ -p16686:16686 \ -p14268:14268 \ jaege ......
云原生时代崛起的编程语言Go并发编程实战
Go语言是天然并发利器,通过通信来实现内存共享而不是通过共享内存来通信,本篇从了解Go的并发哲学、理论及并发原语开始,之后用一个个Go代码示例认识Go的协程、通道、定时器、互斥锁、池化、原生操作等十几个并发编程示例,进一步加深对其并发编程使用场景理解和原理的初步认识。 ......
const_cast,static_cast,dynamic_cast,reinterpret_cast的区别(转)
原文:https://www.cnblogs.com/fancy-xt/p/5339177.html C++继承了C中的隐式和显式转换的方式。但这种转换并不是安全和严格的, 加上C++本身对象模型的复杂性,C++增加了四个显示转换的关键字。(C++是强类型语言) 经过编码测试,小结如下: const ......
2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。 答案2023-05-04: 这段代码实现了使用 libswscale 库进行视频缩放的功能。下面是程序的主要流程: 1.获取命令行参数,包括输出文件名和目标图像大小。 2. ......
从案例中详解go-errgroup-源码
一、背景 某次会议上发表了error group包,一个g失败,其他的g会同时失败的错误言论(看了一下源码中的一句话The first call to return a non-nil error cancels the group,没进一步看其他源码,片面理解了)。 // The first ca ......
go 语言 接口、并发与协程、信道,缓冲信道、mutex、异常处理
==接口== 1.实现多个接口 2.接口嵌套 3.接口零值 package main import "fmt" // 接口 //1 实现多个接口 具体类型可以赋值给多种接口类型 //type Animal interface { // run() //} // //type Dog interfac ......
[ubuntu]安装配置go
系统环境 ubuntu18.04 安装配置 安装Go语言 sudo apt-get update sudo apt-get -y upgrade wget https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz sudo tar ......
【访问者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 访问者模式(Visitor Pattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。 当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问者模式 ......
Go坑:time.After可能导致的内存泄露问题分析
Go 中 time.After 可能导致的内存泄露 一、Time 包中定时器函数 go v1.20.4 定时函数:NewTicker,NewTimer 和 time.After 介绍 time 包中有 3 个比较常用的定时函数:NewTicker,NewTimer 和 time.After: New ......
go krotos proto编译引用外部包 was not found or had errors
前言 kratos protos 生成 pb.go 文件时,会出现引用其他 proto 文件报错 was not found or had errors,因找不到此文件而无法编译。 解决 首先我们先了解下 protoc 中 import 的两条规则: import 不允许使用相对路径; import ......
Go语言 - 二进制数转十进制数
二进制转10进制的方法 最近在备考软考的软件设计师考试,在学习过程遇到很多于计算机基础计算相关的知识点,正好最近在学Go语言,所以就把计算的方式用Go语言实现一下 代码示例 /* 转换规则: 11001 从末尾到开头,以2为底数,从0开始递增为指数 * 二进制数,然后将这些二进制数相加即可得出10进 ......
Go并发编程:发生死锁、活锁的案例分析
什么是死锁、活锁 什么是死锁:就是在并发程序中,两个或多个线程彼此等待对方完成操作,从而导致它们都被阻塞,并无限期地等待对方完成。这种情况下,程序会卡死,无法继续执行。 什么是活锁:就是程序一直在运行,但是无法取得进展。例如,在某些情况下,多个线程会争夺同一个资源,然后每个线程都会释放资源,以便其他 ......
2、go程序接入prometheus
参考:https://prometheus.io/docs/guides/go-application/ go默认基础指标 package main import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhtt ......
Go 汇编详解
Go 汇编详解 https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247502457&idx=1&sn=9b754e6b17ade0d48694d089b6537092&chksm=e9d3019bdea4888df6dbde663632d ......
Go
macOS brew install go export GOPROXY=https://proxy.golang.com.cn,direct Linux brew install go export GOPROXY=https://proxy.golang.com.cn,direct Window ......
结构体内嵌比较函数bool operator < (const node &x) const {}
struct node { int l,r; bool operator <(const node &a)const{ return r < a.r; } }a[maxn]; 使用sort时,如果这么定义节点,说明节点要按照从小到大排序(sort中默认从小到大排序);但是同样的代码,如果使用优先队列 ......
Go-net源码解析
学习一门语言,那么我们必然要涉及到网络通信,而谈到网络通信却又离不开tcp,这里我们利用go标准库net来模拟一个服务端、客户端的流程,从而深入学习其中的代码流程(深入其中解析本质) func main() { server, err := net.Listen("tcp", "127.0.0.1: ......
go 数据类型
序号 类型和描述 1 布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2 数字类型整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 3 字符串类型:字符串就是一 ......
2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。
2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。 答案2023-04-30: resampling_audio.c 是 FFmpeg 中的一个源文件,其主要功能是实现音频重采样。 音频重采样是指将一段音频数据从一个采样率、声道数或 ......
let var const 的区别
首先要明确变量的初始化就是给变量赋一个初值 前言: 1.let 和 const 是es6 新出来的语法 2.由此可见,let 和var声明的变量值可以修改,而const不可以修改 3.由此可见,const声明的常量必须初始化,否则会报错(翻译过来就是:常量声明中缺少初始值设定项)。如果你要声明一个常 ......
go语言中的数据哈希
哈希算法 哈希函数的基本特征 输入可以是任意长度。 输出是固定长度。 根据输入很容易计算出输出。 根据输出很难计算出输入(几乎不可能)。 两个不同的输入几乎不可能得到相同的输出。 SHA SHA(Secure Hash Algorithm) 安全散列算法,是一系列密码散列函数,有多个不同安全等级的版 ......
为什么 Go for-range 的 value 值地址每次都一样?
原文链接: 为什么 Go for-range 的 value 值地址每次都一样? 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 for-range 循环迭代数组、切片、字符串、map 和 channel 这些数据类型。 但是在使用 ......
Go语言入门13(runtime包)
Runtime包 GOMAXPROCS() 用来设置可以并行计算的CPU核数最大值,并返回之前的值,具体使用方法上一篇有些,这里不再赘述 Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行 Goexi ......
【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 模板方法模式(Template Method Pattern)也叫模板模式,是一种行为型模式。它定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ......
c语言报错 [Error] invalid initialization of non-const reference of type 'LinkQueue*& {aka Link*&}' from an rvalue of type 'LinkQueue* {aka Link*}'
进行地址传递是出现报错 临时值不能作为非常量引用参数进行传递 所以需要在main函数中·重新定义指针传递 ......
go语言channel
go语言channel 设计原理 go语言中提倡:不要通过共享内存方式进行通信,而应该通过通信的方式共享内存。 在很多编程语言中,多个线程传递数据的方式一般是共享内存,为了解决线程竞争,我们需要限制同一时间能够读写这些变量的线程数量,然而这与go语言的设计并不相同。 虽然在go语言中也能使用共享内存 ......