03. go-zero简介及如何学go-zero
目录一、go-zero简介及如何学go-zero1.go-zero官方文档2.go-zero微服务框架入门教程3.go-zero最佳实践4.学习资料二、go-zero环境搭建1.GO环境和Gopath的配置1.需要安装以下环境和依赖2.goctl安装3.其它依赖安装三、go-zero杀手锏goctl详细使用1.官方文档:2.开发准备工作3.编写API代码4.编写RPC代码5.编写Model代码五、API服 ...
GO后端开发+VUE实列
因为我是从java转到go,代码结构跟我之前用java的很像
在这里只浅显的实战运用,没有过多理论讲解
工作环境:IDE:Goland , Go 1.17.7 框架 Gin+Gorm ,前端VUE
这里不过多讲前端,可以到我的github或者gitee拉取
Go的安装配置
在官网下载完,安装后需要配置两个环境变量
一个是GOROOT,也就是Go安装的文件夹,注意不要定 ...
[已解决] 含gorm、sqlite3包的go程序构建失败 C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
问题描述
gorm官方文档教程实例,构建出现错误。
C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
没有import这些包的其他代码能够正常构建
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
报错如下
PS L:\IT\Go\Codes\work\gorm> go run . &nbs ...
Go 1.18 系列篇(一):如何升级 Go 1.18 ?
在上周,Go 1.18 终于是发布了,在上一篇文章中,我在留言中说,接下来几天会把玩一下 Go 1.18 的新特性,并跟大家分享一下学习心得。
今天第一篇,先升级一下 Go 1.18 ,关于新特性,咱明天再开整~
Go 官方推荐的 Go 升级方法是先安装新版本的下载器,再使用下载器去安装新版本的 Go,总结一下就是如下三条命令
~ ➤ go i ...
构建 Go 应用 docker 镜像的十八种姿势
修炼背景
我夜以继日,加班加点开发了一个最简单的 Go Hello world 应用,虽然只是跑了打印一下就退出了,但是老板也要求我上线这个我能写出的唯一应用。
项目结构如下:
.
├── go.mod
└── hello.go
hello.go 代码如下:
package main
func main() {
println("hello world!")
}
并且,老板要求用 docker 部署 ...
🔥字节一面:go的协程相比线程,轻量在哪?
如题, 说到轻量级用户态线程,就要从操作系统的调度模型这个大背景 开始聊了。
1. 大背景:常规资源调度模型
调度说白了就是: 下马、换人、再上马跑, 资源就是马。
操作系统分为用户态和内核态(或者叫用户空间和内核空间), 内核态是一种特殊的调度程序,统筹有限的计算机硬件资源,例如协调CPU资源、分配内存资源、并且 ...
详解 Go 中的 rune 类型
Go语言中文网 2022-03-15 08:52
刚接触 Go 语言时,就听说有一个叫 rune 的数据类型,即使查阅过一些资料,对它的理解依旧比较模糊,加之对陌生事物的天然排斥,在之后很长一段时间的编程工作中,我都没有让它出现在我的代码里。
逃避虽然有用,但是似乎有些可耻,想要成为一名成熟、优秀的 Go 语言 ...
go smtp示例
书接上文邮件实现详解,这里我们及我们简单复习一下smtp的指令如下:
telnet smtp.163.com 25
[outpout]
ehlo dz45693
[outpout]
auth login
[outpout]
输入用户名base64
[outpout]
输入密码base64
mail from:<dz45693@163.com>
[outpout]
rcpt to:<dz45693@sina.com>
[outpout]
data
[outpout]
from:<dz45693@163.com>
...
Go语言从入门到精通
1-Go介绍和开发环境
1-开发环境-Go语言介绍
2-开发环境-Go环境搭建
3-开发环境-GOPATH和gomod
4-开发环境-编辑器选择和安装
5-开发环境-第一个HelloWorld
2-Go变量和基础数据类型
1-go基础-关键字和保留字
2-go基础-内置类型和内置函数
3-go基础-init函数和main函数
4-go基础-命令
5-go基础-运算符
6-go基础-变量和常量
7-g ...
惨,给Go提的代码被批麻了
hello大家好,我是小楼。
不知道大家还记不记得我上次找到了一个Go的Benchmark执行会超时的Bug?就是这篇文章《我好像发现了一个Go的Bug?》。
之后我就向Go提交了一个PR进行修复,本想等着代码被Merge进去,以后也可以吹牛说自己是个Go的Contributor,但事情并不顺利,今天就来分享一下这次失败的代码提交。
第一次提交
在 ...
go 中 sort 如何排序,源码解读
sort 包源码解读
前言
如何使用
基本数据类型切片的排序
自定义 Less 排序比较器
自定义数据结构的排序
分析下源码
不稳定排序
稳定排序
查找
Interface
总结
参考
sort 包源码解读
前言
我们的代码业务中很多地方需要我们自己进行排序操作,go 标准库中是提供了 sort 包是实现排序功能的,这里来看下生产级别 ...
go随机数
math/rand
crypto/rand
linux真随机数
参考资料
math/rand
math/rand实现了伪随机数算法,和其它的编程语言类似,操作逻辑都是先设置随机数种子,然后再获取随机数序列。这样每次生成的随机数序列都是不一样的。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano()) ...
Go语言之反射
一、反射的基本概念
(一)什么是反射
反射可以再运行时动态获取变量的各种信息,比如变量的类型、值等
如果时结构体变量,还可以获取到结构体本身的各种信息,比如结构体的字段、方法
通过反射,还可以修改变量的值、调用方法
不过使用反射,需要引入一个包:reflect
典型用法是用静态类型interface{}保存一个值,通过调 ...
.NET/JAVA/GO 固定时间窗口算法实现(无锁线程安全)
一.前言
最近有一个生成 APM TraceId 的需求,公司的APM系统的 TraceId 的格式为:APM AgentId+毫秒级时间戳+自增数字,根据此规则生成的 Id 可以保证全局唯一(有 NTP 时间同步),前两个字段好说,最后一个字段也不复杂,我的想法是按秒来进行自增。比如说1秒的时候,自增计数为100,在2秒的时候会重置为0,然后进行自增 ...
Go vs Java vs C# 语法对比
目录1. 说明2. 对比2.1 关键字(keywords)2.1.1 Go2.1.2 Java2.1.3 C#2.1.4 小结2.2 基本数据类型2.2.1 Go 基本数据类型2.2.2 Java 基本数据类型2.2.3 C# 基本数据类型2.2.4 小结2.3 值类型和引用类型2.3.1 Go 值类型和引用类型2.3.2 Java 值类型和引用类型2.3.3 C# 值类型和引用类型2.3.4 小结2.4 变量2.5 运算2.5.1 Go ...
Go 学习路线(2022)
原文链接: Go 学习路线(2022)
Go 语言的发展越来越好了,很多大厂使用 Go 作为主要开发语言,也有很多人开始学习 Go,准备转 Go 开发。
那么,怎么学呢?
我发现,在互联网时代,学习的困难不是说没有资料,而是资料太多,不知道应该看哪个,从哪开始看。
所以,我整理了一份 Go 学习路线,这份学习路线不以数量取胜,努 ...
kubernetes-client go基础实践
准备工作
1. 检查k8s的版本
[root@k8s-node1 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:10:45Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/a ...
带你十天轻松搞定 Go 微服务系列(一)
本文开始,我们会出一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:
环境搭建(本文)
服务拆分
用户服务
产品服务
订单服务
支付服务
RPC 服务 Auth 验证
服务监控
链路追踪
分布式事务
期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速 ...
go socket实现灵活发送接收消息
使用socket实现类似微信单聊自由发送或接收消息的功能.
server端:
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
log.Println("Listening... ...")
for {
conn, err := listener.Accept()
if err != nil {
panic(err)
}
log.Println("connect success")
...
go操作excel
第三方包准备:
go get -u github.com/xuri/excelize/v2
案例: 读取excel,去除空行,筛选第二列不为空的行并将最终结果存入新的excel中.
思路: 读取excel,使用GetRows()方法读取指定sheet中所有数据,如果excel数据量庞大,可以指定一个int类型的flag,通过GetCellValue()方法逐行读取,因为我只保存两列数据,所 ...