写在Go语言招生之际 - 学相伴 - 狂神说
写在Go语言招生之际,谈谈这两年所见所想,希望能对你有启发。
前两天看视频看到一个评论,先生愿教我不愿学,时也!命也!
作为一名讲师深有感触。
1 那个时候有几十万的Java观众,很多朋友劝我开些Java课,还有很多机构找我合作,如果随便做点课招生,估计就是几百万的收入,但是我拒绝了,有人说我蠢,有钱不 ...
Go 每日一库之 go-cache 缓存
什么是 go-cache
go-cache 是一个轻量级的基于内存的 K-V 储存组件,内部实现了一个线程安全的 map[string]interface{},适用于单机应用。具备如下功能:
线程安全,多 goroutine 并发安全访问;
每个 item 可以设置过期时间(或无过期时间);
自动定期清理过期的 item;
可以自定义清理回调函数;
这里的 i ...
利用Kafka的Assign模式实现超大群组(10万+)消息推送
引言
IM即时通信场景下,最重要的一个能力就是推送:在线的直接通过长连接网关服务转发,离线的通过APNS或者极光等系统进行推送。
本文主要是针对在线用户推送场景来进行总结和探讨:如何利用Kafka的Assign模式,解决百万级长链接海量消息的路由广播问题?如何解决超大聊天室成员(超过10万)的消息推送问题?
问题 ...
我的Go gRPC之旅、01 初识gRPC,感受gRPC的强大魅力
微服务架构
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API 进行通信的小型独立服务组成。 这些服务由各个小型独立团队负责。 微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。
将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力 ...
go protoc-gen-go 安装详解
首先是安装官方的protoc工具,可以从其GitHub官方网站下载
https://github.com/protocolbuffers/protobuf/releases
我下载的win-64版本
下载完成后解压把bin下面的protoc.exe 拷贝到GOPATH下面
然后是安装针对Go语言的代码生成插件go get github.com/golang/protobuf/protoc-gen-go
报 ...
Go 语言图片处理简明教程
虽然 Go 语言主要用于 Web 后端以及各类中间件和基础设施开发,也难免遇到一些图像处理的需求。Go 语言提供的 image 标准库提供了基本的图片加载、裁剪、绘制等能力,可以帮助我们实现一些绘图需求。
加载图片
image.Decode(io.Reader) 会从 reader 获取数据,并根据文件开头的 Magic Number 来选择合适的解码器:
import ( ...
go-redis
golang redis快速入门教程
redis是目前流行的高性能key/value缓存,基本上在各种项目都经常出现,后续教程针对golang如何操作redis进行展开。
本教程是使用的是go-redis/redis包操作redis。 github: https://github.com/go-redis/redis
1.安装依赖包
go get -u github.com/go-redis/redis
2.golang连接redis
// 根据redis配 ...
[go-redis] go操作redis数据库
先上命令速查网站,菜鸟yyds
https://www.runoob.com/redis/redis-strings.html
操作redis的包是go-redis/redis
官方文档 https://redis.uptrace.dev/guide/
github https://github.com/go-redis/redis
创建项目
创建test文件夹
创建 Redis_test.go 文件
直接上代码,代码解释全写在注释里
package test
import (
"contex ...
go-zero微服务实战系列(十一、大结局)
本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看了可能也会觉得内容没有干货。我最近也在学习k8s的一些最佳实践以及阅读k8s的源码,等待时机成熟的时候可能会考虑 ...
go-zero实战demo(一)
前言
听说下一个项目 可能要用微服务开发,趁着项目的空档期,对于go微服务的框架进行了学习。目前go的微服务框架个人认为处于百家齐放的时代,可能这也是go的生态的一个特点吧,也曾简单用过go-miecro,gin+micro+gorm+mysql+redis 常见方案使用起来还是蛮顺手的,可惜该框架成了个人仓库,生成的依赖会出现引用错误,其他 ...
Go 语言实战(9):指针、引用和值
在经过编写 CLI 程序的尝试之后,我们继续回来聊 Go 语言的基础知识。
相信实际写过一些代码之后,会更容易理解。
原计划这期聊 数组和切片。考虑到聊切片时,无论如何绕不开指针和引用的话题,干脆提到前面来。
目录
[TOC]
指针
指针(Pointer)本质上是一个指向某块计算机内存的地址。就像日常的门牌地址一样。只不过内 ...
(六)Ubuntu20.04安装GO
Go(通常称为golang)是Google创建的一种现代开源编程语言,可让您构建可靠且高效的应用程序。Go是一种编译语言,这意味着您需要编译源代码以创建用于运行该软件的可执行文件。本教程说明了如何在Ubuntu 20.04上下载和安装Go。
如何因为网络问题可以参考这篇文章:https://github.com/golang/go/wiki/Ubuntu
Go编写了许多流 ...
Go微服务框架go-kratos实战学习05:分布式链路追踪 OpenTelemetry, jaeger 使用
一、分布式链路追踪发展简介
1.1 分布式链路追踪介绍
关于分布式链路追踪的介绍,可以查看我前面的文章 微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习(https://www.cnblogs.com/jiujuan/p/16097314.html) 。
这里的 OpenTelemetry 有一段发展历程。
APM(Application Performance Monitoring) 和 Distribute ...
GO GMP协程调度实现原理 5w字长文史上最全
1 Runtime简介
Go语言是互联网时代的C,因为其语法简洁易学,对高并发拥有语言级别的亲和性。而且不同于虚拟机的方案。Go通过在编译时嵌入平台相关的系统指令可直接编译为对应平台的机器码,同时嵌入Go Runtime,在运行时实现自身的调度算法和各种并发控制方案,避免进入操作系统级别的进程/线程上下文切换,以及通过原子操 ...
go-zero 微服务实战系列(一、开篇)
前言
在社区中经常看到有人问有没有基于 go-zero 的比较完整的项目参考,该类问题本质上是想知道基于 go-zero 的项目的最佳实践。完整的项目应该是一个完整的产品功能,包含产品需求、架构设计、关键流程的编码、表设计以及各种性能优化和数据一致性等,是一个真正贴近生产级的项目,是可以直接拿来在自己的生产项目中进行 ...
Go微服务框架go-kratos实战学习03:使用 gorm 实现增删改查操作
一、简介
在上一篇文章 go-kratos学习02 (https://www.cnblogs.com/jiujuan/p/16331967.html)中,详细介绍了用 kratos 编写项目代码的步骤。这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作。
首先假定你已经会使用 gorm 的基本操作。
安装 gorm:
$ go get -u gorm.io/gorm
go: do ...
Go微服务框架go-kratos实战学习02:proto 代码生成和项目代码编写步骤
在上一篇 kratos quickstart 文章(https://www.cnblogs.com/jiujuan/p/16322725.html)中,我们直接用 kratos new 命令生成了一个项目。
这一篇来看看 kratos API 的定义和使用。
一、kratos 中 API 简介
1.1 简介
API 全称是 Application Programming Interface,应用程序接口。
在 kratos 中,API 指的是 REST API 和 RPC ...
Go微服务框架go-kratos实战学习01:quickstart 快速创建项目
先来感受下用 kratos 快速创建项目
一、环境准备
1.1 安装依赖软件
protoc
protoc-gen-go
安装 protoc:
到 protobuf release 页面,选择适合自己操作系统的文件包。
或者文档
也可以看 grpc.io 官方安装文档: https://grpc.io/docs/protoc-installation/
安装 protoc-gen-go:
简单点可以直接用 go install 安装 :g ...
Go语言标准库操作Redis数据库 go-redis
Go语言标准库操作Redis数据库
快速了解 Redis 数据库
描述: Redis是一个开源的内存数据库, Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系 ...
简单易懂的 Go 泛型使用和实现原理介绍
原文:A gentle introduction to generics in Go by Dominik Braun
万俊峰Kevin:我看了觉得文章非常简单易懂,就征求了作者同意,翻译出来给大家分享一下。
本文是对泛型的基本思想及其在 Go 中的实现的一个比较容易理解的介绍,同时也是对围绕泛型的各种性能讨论的简单总结。首先,我们来看看泛型所解决的核心问题。
问 ...