单向golang grpc

golang panic和log.Fatal

## log.Fatal 相当于 `Print` 后调用 `os.Exit(1)` ```go import "log" func main() { defer func() { log.Println("main exit") }() log.Println("main run") log.Fat ......
golang Fatal panic log

golang操作mysql

在Go语言中,你可以使用第三方库来进行MySQL数据库的操作。其中,比较常用的库有database/sql和github.com/go-sql-driver/mysql ......
golang mysql

golang泛型引子

1. 举个例子,有如下代码: ```go package main import "sync" // generics first example type Lockable [T any] struct { mut sync.Mutex Data T } func main(){ var n Lo ......
引子 golang

windows vs使用grpc-cpp的坑

1.通过vcpkg安装protoc和grpc-cpp 2.生成proto协议代码: protoc -I .. -I . --cpp_out=. test.proto 3.生成grpc服务代码: protoc -I .. -I . --grpc_out=. --plugin=protoc-gen-gr ......
grpc-cpp windows grpc cpp

 一个循环测试grpc接口脚本

```java //这行根据需求发挥 ExecutorService cachedPool = new ThreadPoolExecutor(6, 1000, 60L, TimeUnit.SECONDS, new SynchronousQueue(true)); ConcurrentLinkedQu ......
脚本 接口 grpc 160

golang单元测试

# golang单元测试 Go语言提供了内置的单元测试框架,让你能够方便地编写和运行测试用例。Go的单元测试侧重于函数和方法的测试,确保它们按预期工作。下面是关于Go语言单元测试的一些重要概念和示例: - 当我们需要测试一个`strFunc.go`中的`ss`函数,他会将作为参数输入的字符串返回 ` ......
单元 golang

浅析Golang的层级时间轮实现方案

文章目录 时间轮介绍 简单时间轮 层级时间轮 kafka中的实现细节 基于go语言的层级时间轮实现 一、时间轮介绍 工作中,我们经常遇到到延时任务这类需求(例如用户开始一个任务,15分钟后给他发送一个通知奖励;用户下单未付款,三分钟后发送一条提醒消息...)。一般情况下,我们使用time.Timer ......
层级 时间 方案 Golang

golang之循环导包

作为一个 Golang 开发,你可能在项目中遇到过包的循环依赖问题。Golang 不允许循环依赖,如果检测到代码中存在这种情况,在编译时就会抛出异常。 循环依赖 假设我们有两个包:p1和p2。当包p1依赖包p2,包p2依赖包p1时,就会产生循环依赖。真实情况可能会更复杂一些。例如,包p2不直接依赖包 ......
golang

golang锁浅谈

在 Go 语言中,有以下几种常用的锁类型: 互斥锁(Mutex) 互斥锁是最常用的一种锁机制,用于保护共享资源在并发访问时的互斥操作。常见的用法如下: var mutex sync.Mutex​// 通过 Lock() 和 Unlock() 方法保护共享资源的临界区mutex.Lock()// 执行 ......
golang

Golang匿名函数浅谈

Go匿名函数(闭包) 在 Go 中,匿名函数(也称为闭包)可以捕获外部变量。Go 的闭包是指一个函数值(函数变量)包含了对其外部作用域中变量的引用。 匿名函数可以访问和修改其外部作用域中的变量。它可以捕获外部变量的值,并在函数体中使用这些变量。 下面是一个示例,展示了如何在匿名函数中捕获外部变量: ......
函数 Golang

golang接口用法浅谈

类型接口 Go不是面向对象的语言,在go里通过不同的结构体实现同一组公共接口这种组合的形式实现多态,类似C++的类和虚函数 定义类型接口(Interface Definition): 使用 type 关键字定义接口,指定接口的方法签名。 方法签名由方法的名称、参数列表和返回值组成,但不包含方法体。 ......
接口 golang

golang 和java对比

Java的优点: 跨平台性:Java程序可以在不同的操作系统上运行,只需安装相应的Java虚拟机即可。面向对象:Java是一种面向对象的语言,具有封装、继承和多态等特性,使得代码更加易于维护和扩展。大量的第三方库和框架:Java拥有丰富的第三方库和框架,可以加速开发速度。高性能:Java虚拟机的优化 ......
golang java

golang sync.Map 在函数传参时默认是值传递

## 概要 今天改了一段代码,调用函数时把一个 sync.Map 类型的变量作为传参,在函数内部修改 sync.Map 变量的值,发现函数处理完成后,外部的变量没有修改,后来发现 sync.Map 是一个普通的结构体,跟所有的结构体一样,golang 在把结构体类型作为函数传参时,都是值传递,即创建 ......
函数 golang sync Map

golang编译go build -ldflags "-s -w"的 解释

go build -ldflags "-s -w" 是一个 Go 语言的构建命令,其中使用了 -ldflags 参数来传递一些额外的链接器标志。 这个命令中,-ldflags "-s -w" 传递了两个标志: -s:该标志会禁止生成可执行文件中的符号表信息,这样在执行文件时就不会暴露源代码中的函数名 ......
quot ldflags golang build

Nacos源码 (5) Grpc服务端和客户端

Nacos 2.x在服务端与客户端直接增加了GRPC通信方式,本文通过2.0.2版本源码,简单分析GRPC通信方式: - 服务器启动 - 客户端连接 - 客户端心跳 - 服务器监控检查 # 服务器 ## proto文件 api/src/main/proto/nacos_grpc_service.pr ......
源码 客户端 客户 Nacos Grpc

golang base64解码

解码过程 1.使用标准库的base64.StdEncoding.DecodeString 最开始是印象标准库有一个base64.StdEncoding.DecodeString方法可以解码,就直接使用了这个方法 package main import( "encoding/base64" "fmt" ......
golang base 64

jetbrains GoLang设置编写proto文件的实时模板

### 具体步骤 ### 1. 首先,先创建一个模板组,我这里创建为"proto"。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0f650e87ac1d4ffe86b1283975d5a254.png) ### 2.下面这张图是我的模板组中的内容 ![在这里插 ......
实时 jetbrains 模板 文件 GoLang

golang 新环境下运行项目

## 下载源代码 ``` git clone .. ``` ## 安装依赖 ``` go mod tidy ``` ### 下载慢报错 切换 proxy ``` # 启用 Go Modules 功能 go env -w GO111MODULE=on # 配置 GOPROXY 环境变量,以下三选一 # ......
环境 项目 golang

golang之函数工具库lancet

lancet(柳叶刀)是一个全面、高效、可复用的go语言工具函数库。 lancet受到了java apache common包和lodash.js的启发。 简体中文 | English 特性 👏 全面、高效、可复用。 💪 600+常用 go 工具函数,支持 string、slice、dateti ......
函数 工具 golang lancet

[Go] VsCode 的 Golang 环境设置与代码跳转支持

一般在终端中使用时的配置: export GO111MODULE=on export GOPROXY=https://goproxy.io,direct 在 vscode 中使用的配置: 1. 安装 Go 扩展。 2. Preferences -> Settings -> Extensions -> ......
代码 环境 VsCode Golang Go

golang 爬坑记

太坑了,必须要写个笔记发泄一下! 结构体的坑 首先,我们来看看通常教程会怎么写,此处引用菜鸟教程 1 package main 2 3 import "fmt" 4 5 type Books struct { 6 title string 7 author string 8 subject stri ......
golang

golang 协程、延迟函数调用、以及恐慌和恢复

此篇文章将介绍协程和延迟函数调用。协程和延迟函数调用是Go中比较独特的两个特性。 恐慌和恢复也将在此篇文章中得到简单介绍。本文并非全面地对这些特性进行介绍,后面的其它文章会陆续补全本文的未介绍的内容。 协程(goroutine) 现代CPU一般含有多个核,并且一个核可能支持多线程。换句话说,现代CP ......
函数 golang

golang 配置断点调试

golang 1.8 以下版本安装dlv go install github.com/go-delve/delve/cmd/dlv@v1.7.3 配置如图 配置 gobuild 使用自己的启动语句调试 ......
断点 golang

golang官方包管理vendor模式无法引用非go文件

## 主页 - 微信公众号:密码应用技术实战 - 博客园首页:https://www.cnblogs.com/informatics/ ## 背景&问题 golang作为高级计算机语言之一,在云原生以及web网站建设中发挥了重要作用,但在实际应用中我们可能会碰到以下场景,在该场景下: - 部署机无法 ......
模式 文件 官方 golang vendor

gRPC with JWT

在 gRPC 中使用 JWT(JSON Web Tokens)进行身份验证是一种常见的做法,它可以帮助你确保请求方的身份和权限。下面是一种使用 gRPC 和 JWT 进行身份验证的步骤: 1. **生成和签发 JWT:** 在用户登录成功后,你需要生成一个 JWT 并将其签发给用户。JWT 中可以包 ......
gRPC with JWT

golang中 go get 加 -u 和不加 -u 参数的区别

-u 会更新本地已有的代码包 加上它可以利用网络来更新已有的代码包及其依赖包。如果已经下载过一个代码包,但是这个代码包又有更新了,那么这时候可以直接用 -u 标记来更新本地的对应的代码包。如果不加这个 -u 标记,执行 go get 一个已有的代码包,会发现命令什么都不执行。只有加了 -u 标记,命 ......
参数 golang get go

golang之增加版本信息功能

在实际开发中,当开发完一个 apiserver 特性后,会编译 apiserver 二进制文件并发布到生产环境,很多时候为了定位问题和出于安全目的(不能发错版本),我们需要知道当前 apiserver 的版本,以及一些编译时候的信息,如编译时 Go 的版本、Git 目录是否 clean,以及基于哪个 ......
版本 功能 golang 信息

golang init函数、defer函数、匿名函数、错误处理

1. init 每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用,当有全局变量跟main函数 init 函数 同时出现的时候 执行的顺序是 全局函数==》init函数==》main函数 package main imp ......
函数 错误 golang defer init

golang常用函数

1.文件读写 package main import ( "fmt" "os" ) func main(){ yaml_str,err:=os.ReadFile("poc/1.yml") if err!=nil{ panic(err) } poc_old:=string(yaml_str) os.W ......
函数 常用 golang

Golang 需要注意的知识点

云笔记链接地址 go的协程轻量级体现在哪 (1) goroutine 是轻量级的用户态线程,上下文切换代价小 go 将 goroutine 的调度维持在用户态 常规线程切换会导致用户态程序代码和内核态操作系统调度程序的切换 只涉及PC(程序计数器,标记当前执行的代码的位置) SP(当前执行的函数堆栈 ......
知识点 知识 Golang