Jaeger Client Go 链路追踪|入门详解
目录从何说起Jaeger部署 Jaeger从示例了解 Jaeger Client Go了解 trace、spantracer 配置Sampler 配置Reporter 配置分布式系统与span怎么调、怎么传HTTP,跨进程追踪客户端Web 服务端Tag 、 Log 和 Ref
从何说起
之前参加柠檬大佬的训练营(免费白嫖),在大佬的指导下我们技术蒸蒸日上,然后作业我们需要实现一个 Jaeger 后 ...
go 单元测试 gomonkey
目录1.安装2.使用方法2.1 mock一个函数2.2 mock 一个方法2.3 mock 一个全局变量2.4 mock 一个函数序列3.参考
单元测试中,经常需要mock。
例如,一个函数中,需要调用网络连接函数建立连接。做单元测试时,这个建立连接的函数就可以mock一下,而不真正去尝试建立连接。
mock 有时也称为“打桩”。
例如,mock一个函数,可以 ...
当红开发语言Go,真的是未来的技术主流吗?
摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语言。
本文分享自华为云社区《大红大紫的 Golang 真的是后端开发中的万能药吗?》,原文作者:Marvin Zhang 。
前言
城外的人想进 ...
ubuntu下安装go环境,包括GOROOT和GOPATH配置
虽然之前安装过,但是还不够熟练,这次做个记录,方便以后翻看。
环境:在一台全新的Ubuntu机器上安装go。
2022.6.14
需求:用root安装go环境,全局配置,所以用户都能用。
wget -c https://go.dev/dl/go1.17.11.linux-amd64.tar.gz # 下载amd64,可通过 $ cat /proc/version 查看
tar xfz go1.17 ...
go kafka group
在以前的文章kafka初探go和C#的实现里面我们用了sarama来消费kafka的消息,但是很遗憾它没有group的概念。没办法 我们只能用sarama-cluster来实现, 注意sarama版本不要太新否则有错误panic: non-positive interval for NewTicker 问题处理,建议大家可以修改go.mod文件如下:
require (
github.com/Shopify/sarama v1 ...
Go ORM框架 - GORM 踩坑指南
今天聊聊目前业界使用比较多的 ORM 框架:GORM。GORM 相关的文档原作者已经写得非常的详细,具体可以看这里,这一篇主要做一些 GORM 使用过程中关键功能的介绍,GORM 约定的一些配置信息说明,防止大家在使用过程中踩坑。
以下示例代码都可以在 Github : gorm-demo 中找到。
GORM 官方支持的数据库类型有: MySQL, Post ...
golang操作redis/go-redis库
目录Redis介绍Redis支持的数据结构Redis应用场景准备Redis环境go-redis库安装连接普通连接V8新版本相关连接Redis哨兵模式连接Redis集群基本使用HValsset/get示例zset示例根据前缀获取Key执行自定义命令按通配符删除keyPipeline事务Watch
Redis介绍
Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业 ...
重磅!七国首脑会议决定制裁Go语言!
2021年2月, 编程语言的七国集团峰会在风景优美的Linux庄园如期召开。
C, Java, Python, JavaScript , C++ , C#,  HP 相继入座。
C语言作为主持人,在大屏幕上用一幅图总结了一下近二十年各国的沉浮。
各国代表对C语言的工作纷纷表示赞赏。
C语言说道:我们七国集团已经统治IT ...
go sync.map的使用
前言
数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。
Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。
如果map由多协程同时读和写就会出现 fatal error:concurrent map read and map write的错误。这是因为map在Go语 ...
go context详解
Context通常被称为上下文,在go中,理解为goroutine的运行状态、现场,存在上下层goroutine context的传递,上层goroutine会把context传递给下层goroutine。
每个goroutine在运行前,都要事先知道程序当前的执行状态,通常将这些状态封装在一个 context变量,传递给要执行的goroutine中。
在网络编程中,当接收到一个网络请 ...
两年Java,去字节跳动写Python和Go
前言
2019年5月,在收到offer邮件的那一刻,我仍然不敢相信自己这一番际遇。经历了七场面试,终于得偿所望,拿到了字节跳动的offer。
做加入大厂的决定并不是巧合。在多年的职业生涯里,我曾多次对接一线互联网公司的服务,与一线公司的员工有不少接触,再加上各种技术博客的耳濡目染,愈发让我对大厂心向往之。另外,二线 ...
GO学习-(26) Go语言操作mongoDB
Go语言操作mongoDB
package main
import (
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func ConnectToDB(uri, name string, timeout time.Duration, num uint64) (*mon ...
go免杀初探
0x01 go免杀
由于各种av的限制,我们在后门上线或者权限持久化时很容易被杀软查杀,容易引起目标的警觉同时暴露了自己的ip。尤其是对于windows目标,一个免杀的后门极为关键,如果后门文件落不了地,还怎么能进一步执行呢?关于后门免杀,网上的介绍已经很多了,原理其实大同小异。看了很多网上的案例,发现网上比较多都是 ...
go walk 初识
go walk是go的windows gui库,但是网上资料较少,浪费了点时间,因此进行记录
go walk折腾了小半天,终于在win10下成功运行了,下面是步骤
写main.go:
func main() {
var inTE, outTE *walk.TextEdit
if _, err := (MainWindow{
Title: "SCREAMO",
MinSize: Size{600, 400},
Layout: VBox{},
Children: [] ...
Go - httpclient 常用操作
httpclient
模块介绍
httpclient 是基于 net/http 封装的 Go HTTP 客户端请求包,支持常用的请求方式、常用设置,比如:
支持设置 Mock 信息
支持设置失败时告警
支持设置失败时重试
支持设置项目内部的 Trace
支持设置超时时间、Header 等
请求说明
方法名
描述
httpclient.Get()
GET 请求
httpclient.Po ...
QUIC协议分析-基于quic-go
quic协议分析
QUIC是由谷歌设计的一种基于UDP的传输层网络协议,并且已经成为IETF草案。HTTP/3就是基于QUIC协议的。QUIC只是一个协议,可以通过多种方法来实现,目前常见的实现有Google的quiche,微软的msquic,mozilla的neqo,以及基于go语言的quic-go等。
由于go语言的简洁性以及编译的便捷性,本文将选用quic-go进行quic ...
linux部署go项目
直接部署:
1、将程序所需要的文件如配置文件和生成的可执行文件拷贝到linux中
2、直接执行./main命令,启动程序 (main是go编译生成的可执行文件)
如果报Permission denied错误,将可执行文件赋予可执行权限
chmod -R 755 main
在后台启动程序
./main这种启动方法在控制台退出时程序会停止,我们可以用nohup ./main &命令 ...
Java微服务 vs Go微服务,究竟谁更强!?
前言
Java微服务能像Go微服务一样快吗?
这是我最近一直在思索地一个问题。
去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。
在程序员圈子里,普遍的看法是Java老、慢、无聊 ,而Go是快、新、酷
为了尽可能的进行一个 ...
深入理解Go Context
目录emptyCtx类型cancelCtx类型timerCtx类型valueCtx类型
在Go语言并发编程中,用一个goroutine来处理一个任务,而它又会创建多个goroutine来负责不同子任务的场景非常常见。如下图
这些场景中,往往会需要在API边界之间以及过程之间传递截止时间、取消信号或与其它请求相关的数据
谁是性能卡点呢?得通知它们任务取消了 ...
Go-连接Redis-学习go-redis包
Redis介绍
Redis是一个开源的内存数据结构存储,常用作数据库、缓存和消息代理。目前它支持的数据结构有诸如string、hash、list、set、zset、bitmap、hyperloglog、geospatial index和stream。Redis内置了复制、Lua脚本、LRU清除、事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性,通过Redis Cluster自动分 ...