const go

Go协程Goroutines

1. 什么是 Go Goroutines? Goroutine是一个简单的模型:它是一个函数,与其他Goroutines并发执行且共享相同地址空间. Goroutines的通常用法是根据需要创建尽可能多的Groutines,成百上千甚至上万的. 创建这么多 goroutines势必要付出不菲的代价? ......
Goroutines

linux下go语言环境安装

# linux下go语言环境安装 ## 下载go包,选择合适的版本,(https://golang.google.cn/dl/) #### 方式一,https://golang.google.cn/dl/ ``` 选择合适的包,下载之后放到Linux下 ``` #### wget ``` wget ......
语言 环境 linux

在go语言中,为什么使用defer? defer 为何能实现延迟加载?

defer会在函数返回前执行,那么我把代码,例如资源释放等,写到函数末尾不就行了,为什么使用defer?什么情况下必须使用defer,它有什么好处呢? 在使用defer的场景中,主要有以下几个情况: 1. 关闭资源:使用defer可以确保在函数执行完毕后关闭打开的文件、网络连接、数据库连接等资源。如 ......
defer 语言

算法 in Go:Binary Search(二分查找)

# 算法 in Go:Binary Search(二分查找) ## Binary Search(二分查找) ### Binary Search(二分查找) - 猜数 - 1、2、3、4、5、6、7、8 - 排好序一个集合,先从中间开始猜,根据提示就可以排除一半,在剩余的一半里,再从中间开始猜,依此类 ......
算法 Binary Search in

go map gc的测试代码

**本文章由github copilot协助生成** 遇到一个离职同事写的代码,如下: ```go package mapGC func mapGc() { lock := sync.Mutex{} go func() { for { time.Sleep(12 * time.Hour) tmp : ......
代码 map go

windows安装go开发环境问题记录

## vscode安装go相关插件失败 Installing github.com/cweill/gotests/gotests@latest FAILED Installing github.com/fatih/gomodifytags@latest FAILED Installing githu ......
windows 环境 问题

go语言切片

特性 长度可变、 内容可变、 引用类型、 底层基于数组 定义 var s1 []int // 长度、容量为0的切片,零值 var s2 = []int{} // 长度、容量为0的切片,字面量定义 var s3 = []int{1, 3, 5} // 字面量定义,长度、容量都是3 var s4 = m ......
语言

go 实现ringbuffer以及ringbuffer使用场景介绍

> ringbuffer因为它能复用缓冲空间,通常用于网络通信连接的读写,虽然市面上已经有了go写的诸多版本的ringbuffer组件,虽然诸多版本,实现ringbuffer的核心逻辑却是不变的。但发现其内部提供的方法并不能满足我当下的需求,所以还是自己造一个吧。 源码已经上传到github ``` ......
ringbuffer 场景 go

go语言数组

线性数据结构 线性表 是一种抽象的数学概念,是一组元素的序列的抽象,它由有穷个元素组成(0 个或任意个)。包括顺序表和链接表。 顺序表:使用一大块连续的内存顺序存储表中的元素,这样实现的表称为顺序表,或称连续表 在顺序表中,元素的关系使用顺序表的存储顺序自然地表示; 链接表:在存储空间中将分散存储的 ......
数组 语言

const { t } = useI18n();不能在setup外执行

传递函数 ``` const chartOptions = ( t: Function, color: string = "warning", height: string = "auto" ): ApexOptions => { return { // Rest of your chart opt ......
const setup useI 18n 18

从源码分析 Go 语言使用 cgo 导致的线程增长

TDengine Go 连接器 使用 cgo 调用 taos.so 中的 API,使用过程中发现线程数不断增长,本文从一个 cgo 调用开始解析 Go 源码,分析造成线程增长的原因。 ## 转换 cgo 代码 对 driver-go/wrapper/taosc.go 进行转换 `go tool cg ......
线程 源码 语言 cgo Go

写给go开发者的gRPC教程-通信安全

使用 TLS 安全传输数据 什么是 SSL/TLS SSL 包含记录层(Record Layer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Session key[3])。这个 ......
开发者 教程 gRPC

使用Go语言中的Channel实现并发编程

## 引言: Go语言是一门开源的编程语言,以其高效、简洁和并发编程的能力而闻名。在Go语言中,Channel是一个重要的概念,它提供了一种安全、高效地在并发程序中进行通信的机制。本文将介绍Go语言中的Channel,以及如何使用Channel实现并发编程。 ## 一、什么是Channel? 在Go ......
Channel 语言

Js中var,let,const的区别总结

[toc] > `因为 let 和 const 是es6的新特性, let 和 const 的出现就是为了解决 var 的各种问题,因此在声明变量时能不用var就不用,强烈建议都用let和const声明变量和常量!` # 区别 1、var 声明的变量属于 `函数作用域`,而 let 和 const ......
const var let

极客时间--Go并发编程实践课--Mutex学习总结

互斥锁的实现机制 互斥锁是并发控制的一个手段,是为了避免竞争而建立的一种并发控制机制。在并发编程中,如果程序中的一部分会被并发访问或修改,那么,为了避免并发访问导致的意想不到的结果,这部分程序需要被保护起来,这部分被保护起来的程序,就叫做临界区。可以说,临界区就是一个被共享的资源,或者说是一个整体的 ......
时间 Mutex Go

protobuf 中go_package的意思

一个简单的 protobuf 文件定义如下: response.proto syntax = "proto3"; option go_package = "github.com/TripleCGame/apis/api;api"; import "google/protobuf/struct.pro ......
go_package protobuf 意思 package go

运算符重载&const修饰符

## 运算符重载 运算符重载一般作为类的成员函数实现,用于实现自定义类的运算操作。 ``` [返回值] operator[运算符](参数...){...}; ``` ### 参数 - 参数个数必须与运算符原意需要的参数相同,比如重载+,就需要两个参数(左参数和右参数) - 对于单目运算符,不需要传入 ......
运算符 const amp

Go语言如何判断两个对象是否相等

# 1. 引言 在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 1. **单元测试**:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 2. **数据结构操作**:在使用`map`等数据结构时,可能需要判断两个对象是 ......
对象 两个 语言

golang 学习之 etcd protobuffer grpc 服务注册发现 go-micro

#1.etcd使用步骤 ####1)下载:https://github.com/etcd-io/etcd/releases/ ####2)配置环境变量 ####3)编辑local-cluster-profile文件:(利用goreman 启动方式,生产环境参考官方文档) ``` etcd1: etc ......
protobuffer go-micro golang micro etcd

go语言中protobuf以及grpc的使用

#### 首先定义数据结构,保存为.proto文件 ```protobuf syntax = "proto3"; package tutorial; // The protocol compiler generates a class from the following .proto file w ......
protobuf 语言 grpc

为什么说 Go 语言字符串是不可变的?

**原文链接:** [为什么说 Go 语言字符串是不可变的?](https://mp.weixin.qq.com/s/AOb6AjKwyTwLeAUou0AU-Q) 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并 ......
字符串 字符 语言 Go

【ES6】--浅析let、const和var

在ea6中添加了let和const命令,在这之前都是用的 var命令来变量声明。曾经面试被问为什么es6为增加let和 const这两命令,但当时的自己只停留在知道这两个命令和怎么去用这两个命令的阶段,至于原因是什么,确实是没关注过。 一、ES6中为什么会添加let和const? 首先,我们要知道只 ......
const ES6 let var ES

go-shadowsw问题小记

Golang shadows是指在Go语言中,一个变量在内部作用域中被另一个同名同类型的变量声明而隐藏的情况。这种情况可能导致一些意想不到的结果,比如返回错误的值或者引用错误的变量。 func BadRead(f *os.File, buf []byte) err error { for { n, ......
小记 go-shadowsw shadowsw 问题 go

Go 开源库运行时依赖注入框架 Dependency injection

# Dependency injection 一个Go编程语言的运行依赖注入库。依赖注入是更广泛的控制反转技术的一种形式。它用于增加程序的模块化并使其具有可扩展性。 ## 实例展示(High API): ```golang type A struct { Name string } func New ......
Dependency injection 框架 Go

go helloworld 部署到k8s

打包容器shutdown_Dockerfile同级目录执行sudo docker build -t hello:v0.01 -f shutdown_Dockerfile . 导出docker 容器AAA:8.2,8.2表示镜像版本号docker save -o tar名称.tar AAA:8.2 B ......
helloworld k8s go 8s k8

Go 限制goroutine

限制单位时间内的 goroutine 执行大小 ``` package main import ( "fmt" "time" ) // 限制单位时间内执行次数 func main() { limitChan := make(chan struct{}) recoverChan := make(cha ......
goroutine Go

二级指针与const

## 二维数组分配: ```cpp #include int main() { int rows = 3; int cols = 4; // 使用二级指针创建一个动态分配的二维数组 int **array = new int*[rows]; for (int i = 0; i #include in ......
指针 const

Go 常见问题

# Go常见问题 ### 问题: go.mod file not found #### 现象 ```log go.mod file not found in current directory or any parent directory. ``` #### 原因 Go1.16之后引入GoMod, ......
常见问题 常见 问题 Go

Go 单元测试

# 单元测试 > 在执行单元测试的过程中, 如果被测试的函数中, 引用了较为复杂的函数. > 要确保该引用包中在引用时已被初始化, 避免空出现内存/指针错误等问题~ ## 单元测试编写 ### 测试示例 逻辑代码: `string_handler.go` ```go func stringBuild ......
单元 Go

Go协程常规参考

# Go协程 协程对性能的提升: 程序性能由三者决定: 计算时长, 磁盘IO, 网络IO 协程能有效解决IO问题. 对于计算密集型程序则用处较小. # 1. 最佳协程使用实践 ```go // 子协程 func CoroutineSubFunc(wg *sync.WaitGroup, resultC ......
常规