go-gprc gprc go

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

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

极客时间--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

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

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

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 ......
常规

Go Web

# Go Web 主要介绍Go的net/http包,Gin框架,gRPC。 (多复习,多回顾,多输出) 参考:[Go http 包详解 - 简书 (jianshu.com)](https://www.jianshu.com/p/2cd0dad669ca?u_atoken=2f9399e1-a3e3- ......
Web Go

Go数据结构

# Go-数据结构 参考整理:[1. 链表: 深入理解container/list&LRU缓存的实现 - Mohuishou (lailin.xyz)](https://lailin.xyz/post/list.html) (提醒:马上要离校,最近在整理本地电脑的笔记,很多东西可能写的有些久,忘记参 ......
数据结构 结构 数据

Go设计模式

# Go-设计模式 整理参考: [Go设计模式24-总结(更新完毕) - Mohuishou (lailin.xyz)](https://lailin.xyz/post/go-design-pattern.html) [go 设计模式实现,包含 23 种常见的设计模式实现](https://gith ......
设计模式 模式

Go排序算法小总结

# Go-排序算法 参考整理:[1.0 十大经典排序算法 | 菜鸟教程 (runoob.com)](https://www.runoob.com/w3cnote/ten-sorting-algorithm.html) [shell排序 - Mohuishou (lailin.xyz)](https: ......
算法

Go后端入门学习路径

## 1. Go语言基础 入门看这个: 《Head First Go》、《Go语言编程》以及图片额外书籍任选一本都可以,跟着书籍多敲敲代码,go语言相对C++,java来说,简单很多 ![img](https://article-images.zsxq.com/Fnitum5NJ6CckkXAMGd ......
路径

go语言的defer

## go语言的defer机制可以避免其他语言时处理错误,要在每个分支执行关闭、回收资源的繁杂问题。 #### 百闻不如一见,看的教程再多,也不如自己实际编程,调试来得方便。 ### 以下为根据测试代码段进行总结的过程。 #### 1. ```go package main import "fmt" ......
语言 defer

go中的并发学习

### 代码源自于https://github.com/lotusirous/go-concurrency-patterns #### 自此对各个示例代码进行调试。 #### [1-boring](https://github.com/lotusirous/go-concurrency-patter ......

go gmp

M G P M:machine 系统线程,执行实体,通过系统调用clone来创建 G:groutine 任务和上下文 P: 虚拟处理器,M需要获得P才能执行否则休眠 go的调度本质上是一个生产消费的流程 生产端 M负责调度循环消费task 队列分runnext+本地队列+全局队列来区分优先级,也避免 ......
gmp go

如何使用Go中的Weighted实现资源管理

# 1. 简介 本文将介绍 Go 语言中的 `Weighted` 并发原语,包括 `Weighted` 的基本使用方法、实现原理、使用注意事项等内容。能够更好地理解和应用 `Weighted` 来实现资源的管理,从而提高程序的稳定性。 # 2. 问题引入 在微服务架构中,我们的服务节点负责接收其他节 ......
资源管理 Weighted 资源

go语言select

# go语言select ## 使用 ```go func main() { ch1 := make(chan int, 1) ch2 := make(chan int, 1) go func() { time.Sleep(1 * time.Second) ch1 <- 1 }() go func( ......
语言 select

Go-Map相关

Go中map默认不安全的,也实现了并发安全的对象: // 创建一个 sync.Map 对象 var m sync.Map // 存储数据 m.Store("key1", "value1") m.Store("key2", "value1") // 加载数据 //if value, ok := m.L ......
Go-Map Map Go

go关于并发编程的操作

1. 多线程程序在一个核的CPU运行 ![image.png](https://cdn.nlark.com/yuque/0/2023/png/35902537/1685453577663-714d9c16-e8a3-4828-bb86-86dfa10c8e52.png#averageHue=%23f ......

go-RabbitMQ

# erlang 安装 编译依赖:yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel 解压:tar -zxvf ......
go-RabbitMQ RabbitMQ go

Golang扫盲式学习——GO并发 | (一)

## 并发与并行😣 ### 并发与并行的概念和区别 并行:同一个时间段内多个任务同时在不同的CPU核心上执行。强调同一时刻多个任务之间的”**同时执行**“。 并发:同一个时间段内多个任务都在进展。强调多个任务间的”**交替执行**“。 ![](https://img2023.cnblogs.co ......
Golang

go 执行ssh 报错ssh: handshake failed: read tcp xxx:->xxx:22: read: connection reset by peer

需求: 解决报错 go 执行ssh 报错ssh: handshake failed: read tcp xxx:->xxx:22: read: connection reset by peer 10个以内,没有问题。10以上就报错 解决: 我的远程(192.168.49.171)服务器ssh默认最大 ......
read connection ssh handshake xxx

go exec.Command windows 参数引号转义问题

Go在windows上调用本地进程传参时的一个天坑 #Golang go在windows上exec.Command调用本地进程在传参的时候有一个天坑,举个栗子来说正常来说一般代码会这么写 ```go cmdLine := "notepad.exe " + `"D:\Program Files\Not ......
转义 引号 参数 Command windows