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自动分 ...
Go语言基础
一、Go的基本介绍
Go(Golang)语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。
当前有两个Go编译器分支,分别为官方编译器gc和gccgo。官方编译器在初期使用C写成,后用Go重写从而实现自举。Gccgo是一个使用标准GCC ...
Go操作Redis实战
目录安装Redis客户端连接redis基本指令Keys():根据正则获取keysType():获取key对应值得类型Del():删除缓存项Exists():检测缓存项是否存在Expire(),ExpireAt():设置有效期TTL(),PTTL():获取有效期DBSize():查看当前数据库key的数量FlushDB():清空当前数据FlushAll():清空所有数据库字符串(string)类型Set():设置SetEX():设置 ...
ubuntu安装Go环境
1.下载Go语言安装包
官网:下载地址
2. 获取安装包
# 或者通过wget下载go语言安装包,这里以go1.15.6.linux-amd64.tar.gz为例
wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz
# 将安装包下载到/usr/local 目录下
Download the archive and extract it into /usr/local # 翻译过来就是下载到/usr/l ...