随笔分类 -  go

1 2 3 4 5 ··· 7 下一页
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
摘要:前言 go项目运行报错: import cycle not allowed,导入循环(import cycle) 报错原因,在Go语言中,两个或更多的包之间形成了相互依赖的关系,即A包导入了B包,而B包又反过来导入了A包,形成一个循环。 这种循环会导致编译器无法确定每个包的完整依赖图,因为它们互相引 阅读全文
posted @ 2024-11-05 21:35 牛奔 阅读(423) 评论(0) 推荐(0) 编辑
摘要:乐观锁简介 乐观锁(又称乐观并发控制)是一种常见的数据库并发控制策略。 乐观并发控制多数用于数据竞争(data race)不大、冲突较少的环境中,这种环境中,偶尔回滚事务的成本会低于读取数据时锁定数据的成本,因此可以获得比其他并发控制方法更高的吞吐量。 它的作用是防止并发更新数据库中的数据,从而避免 阅读全文
posted @ 2024-07-28 19:25 牛奔 阅读(217) 评论(0) 推荐(0) 编辑
摘要:gin使用fvbock/endless gin 正常使用注册路由时: package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) 阅读全文
posted @ 2024-06-18 20:13 牛奔 阅读(155) 评论(0) 推荐(0) 编辑
摘要:在Go语言中,GOPATH 是一个环境变量,用于指定Go语言的工作空间路径。它是Go语言中一个重要的概念,用于管理和组织你的Go项目。 GOPATH 指定了Go语言的工作目录,它包含了三个重要的子目录:src、pkg 和 bin 。这些子目录分别用于存放源代码文件、编译后的包文件和可执行文件。 当你 阅读全文
posted @ 2024-03-20 15:52 牛奔 阅读(339) 评论(0) 推荐(0) 编辑
摘要:前言 使用 gorm 查询时,报错:stdErr = sql: Scan error on column index 0, name "total": converting NULL to float64 is unsupported 代码如下 var total float64 res := db 阅读全文
posted @ 2023-09-13 23:09 牛奔 阅读(352) 评论(0) 推荐(0) 编辑
摘要:# 前言 `protoc` 是 `protobuf` 文件(.proto)的编译器,可以借助这个工具把 `.proto` 文件转译成各种编程语言对应的源码,包含数据类型定义、调用接口等。 `protoc` 在设计上把 `protobuf` 和不同的语言解耦了,底层用 `c++` 来实现 `proto 阅读全文
posted @ 2023-08-30 22:43 牛奔 阅读(316) 评论(0) 推荐(0) 编辑
摘要:# 前言 `google.protobuf.Struct` 是 `Google Protocol Buffers` 中的一种特殊类型,用于表示动态的键值对数据。它可以存储任意类型的数据,并提供了方便的方法来访问和操作这些数据。 `Struct` 类型通常用于在不事先知道数据结构的情况下传递和处理配置 阅读全文
posted @ 2023-08-10 21:03 牛奔 阅读(579) 评论(0) 推荐(0) 编辑
摘要:# 前言 `kratos` 项目出现 `import` 标红,但是 `$GOPATH/src/google/api/annotations.proto` 已经存在了。 ![](https://img2023.cnblogs.com/blog/1303876/202303/1303876-202303 阅读全文
posted @ 2023-06-30 07:14 牛奔 阅读(549) 评论(0) 推荐(0) 编辑
摘要:导入依赖 go get gopkg.in/amz.v1/aws go get gopkg.in/amz.v1/s3 创建用户 在初始化连接之前,我们需要创建一个用户得到accessKey和secretKey,新增用户的指令如下: docker exec ceph-rgw radosgw-admin 阅读全文
posted @ 2023-05-24 22:18 牛奔 阅读(144) 评论(0) 推荐(0) 编辑
摘要:# 前言 `goframe` 默认使用了中间键 `ghttp.MiddlewareHandlerResponse`, `HTTP Server` 的数据返回通过 `ghttp.Response` 对象实现,`ghttp.Response` 对象实现了标准库的 `http.ResponseWriter 阅读全文
posted @ 2023-05-22 22:51 牛奔 阅读(796) 评论(0) 推荐(0) 编辑
摘要:前言 如果你使用的是 zsh 终端,可能会存在 gf 别名冲突( git fetch 快捷指令) 解决 终端运行 alias gf=gf,gf 工具会自动修改 .zshrc 中的别名设置,source .zshrc 或者重开终端,gf -v 就可以用了。 alias gf=gf source .zs 阅读全文
posted @ 2023-05-11 15:08 牛奔 阅读(235) 评论(0) 推荐(0) 编辑
摘要:# 前言 kratos protos 生成 `pb.go` 文件时,会出现引用其他 proto 文件报错 `was not found or had errors`,因找不到此文件而无法编译。 # 解决 首先我们先了解下 protoc 中 import 的两条规则: 1. import 不允许使用相 阅读全文
posted @ 2023-05-02 23:02 牛奔 阅读(404) 评论(0) 推荐(0) 编辑
摘要:前言 在真实环境中,我们可能需要为不同的编译环境编写不同的 Go 代码,所以需要做构建约束。 比如:syscall.NewLazyDLL("test.dll") 加载 dll 的程序在 Linux 平台中就没有,所以当你写程序时就需要指定包含这个 API 的文件只能在 Windows 下面编译,在其 阅读全文
posted @ 2023-03-04 09:57 牛奔 阅读(269) 评论(0) 推荐(0) 编辑
摘要:PGO的引入 Go 1.20 发布了配置文件引导优化(PGO)的预览版,使编译器能够根据运行时配置文件信息,执行应用程序和工作负载的特定性优化。提供要构建的配置文件,使编译器能够将应用程序的速度提高大约 3-4%,官方鼓励开发者尝试一下整个新特性,但可能存在一些未知的问题。 具体可参考:Profil 阅读全文
posted @ 2023-02-12 10:55 牛奔 阅读(371) 评论(0) 推荐(0) 编辑
摘要:Tips:本文以本文撰写时的 Go 语言最新版本,也就是 go.1.19.2 版本为例。 Linux 发行版本使用 Ubuntu 22.04.1 LTS 为例来做演示。 安装 C 工具 Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubunt 阅读全文
posted @ 2022-10-18 07:33 牛奔 阅读(6669) 评论(0) 推荐(0) 编辑
摘要:unsafe标准库包 func Alignof(variable ArbitraryType) uintptr。 此函数用来取得一个值在内存中的地址对齐保证(address alignment guarantee)。 注意,同一个类型的值做为结构体字段和非结构体字段时地址对齐保证可能是不同的。 当然 阅读全文
posted @ 2022-08-22 14:03 牛奔 阅读(46) 评论(0) 推荐(0) 编辑
摘要:nginx 配置 详细请看Nginx 极简教程 server { listen 80; server_name localhost; #charset koi8-r; # nginx访问活动日志 access_log logs/host.access.log main; # nginx访问错误日志 阅读全文
posted @ 2022-08-16 10:47 牛奔 阅读(214) 评论(0) 推荐(0) 编辑
摘要:goroutine goroutine 是 Go 的并发模型的核心概念。为了理解 goroutine,我们来定义几个术语。第一个是进程。进程是程序的实例,由计算机的操作系统运行。操作系统将一些资源(如内存)与进程相关联,并确保其他进程不能访问它们。进程由一个或多个线程组成。一个线程是一个执行单元,由 阅读全文
posted @ 2022-07-06 09:13 牛奔 阅读(459) 评论(0) 推荐(0) 编辑
摘要:数组转字符串 将 var slice = []int{1, 2, 3, 4},转为 [1,2,3,4] 可以使用 json.Marshal(),这是因为 json 包,会将数组和切片值编码为JSON数组 package main import ( "encoding/json" "fmt" ) fu 阅读全文
posted @ 2022-06-30 14:03 牛奔 阅读(1478) 评论(0) 推荐(0) 编辑
摘要:时间戳 10 位数的是以 秒 为单位; 13 位数的是以 毫秒 为单位; 19 位数的是以 纳秒 为单位; golang 中可以这样写: package main import ( "fmt" "time" ) func main() { fmt.Printf("时间戳(秒):%v\n", time 阅读全文
posted @ 2022-06-24 10:46 牛奔 阅读(342) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页
点击右上角即可分享
微信分享提示