closure go

golang pprof 监控系列(1) —— go trace 统计原理与使用

golang pprof 监控系列(1) —— go trace 统计原理与使用 服务监控系列文章 服务监控系列视频 关于go tool trace的使用,网上有相当多的资料,但拿我之前初学golang的经验来讲,很多资料都没有把go tool trace中的相关指标究竟是统计的哪些方法,统计了哪段 ......
原理 golang pprof trace go

go

1、深拷贝(Deep Copy) 拷贝的是数据本身,创造一个样的新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。既然内存地址不同,释放内存地址时,可分别释放。 值类型的数据,默认全部都是深复制,Array、Int、String、Str ......
go

GO实现Redis:GO实现内存数据库(3)

实现Redis的database层(核心层:处理命令并返回) https://github.com/csgopher/go-redis datastruct/dict/dict.go type Consumer func(key string, val interface{}) bool type ......
内存 数据库 数据 Redis

json go

package mainimport ( "encoding/json" "fmt")type b struct { Params []interface{} `json:"params,omitempty"`}func main() { v := []interface{}(nil) v = ap ......
json go

【入门】Go语言切片详解

一、Go语言切片介绍 1.1 什么是切片? 切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。 1.2 数组和切片的区别是什么? 切片和数组密不可分,如果将数组理解 ......
语言

【go】go多种uuid生产方式

package main import ( "fmt" "github.com/chilts/sid" "github.com/kjk/betterguid" "github.com/oklog/ulid" "github.com/rs/xid" "github.com/satori/go.uuid ......
多种 方式 uuid

【go】uuid简介

通用唯一识别码(英语:universally unique identifier,简称uuid)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。uuid的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以 ......
简介 uuid

【go】snowflake和snoyflake雪花算法学习与go实现

预备知识: Monotonic Clocks,即单调时间,所谓单调,就是只会不停的往前增长,不受校时操作的影响,这个时间是自进程启动以来的秒数 参考文章:https://www.simpleapples.com/2018/10/26/understand-time-struct-in-go/ 雪花算 ......
算法 雪花 snowflake snoyflake

[Go]string、int、int64相互转换

import "strconv" //先导入strconv包 // string到int int, err := strconv.Atoi(string) // string到int64 int64, err := strconv.ParseInt(string, 10, 64) // int到st ......
int string Go 64

开心档之Go 错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error类型是一个接口类型,这是它的定义: type error interface { Error() string } 我们可以在编码中通过实现 error 接口类型来生成错误信息。 函数通常在最后的返回值中返回错误信息。使用erro ......
错误

开心档之Go 语言数据类型

在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 Go 语言按类别有以下几种数据类型: 序号类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单 ......
语言 类型 数据

开心档之Go 语言条件语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。 下图展示了程序语言中条件语句的结构: Go 语言提供了以下几种条件判断语句: 语句描述 if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成 ......
语句 条件 语言

开心档之Go 语言环境安装

Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://golang.org/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/。 各个系统对应的包名: 操作系统包名 ......
语言 环境

GO实现Redis:GO实现Redis协议解析器(2)

本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行 echo database用来测试协议层的代码 https://github.com/csgopher/go-redis RESP协议 RESP是客户端与服务端通信的协议,格式有五种:正常回复:以“+”开头,以“ ......
Redis

使用go语言实现并发网络爬虫

go语言做爬虫也是很少尝试,首先我的思路是看一下爬虫的串行实现,然后通过两个并发实现:一个使用锁,另一个使用通道 这里不涉及从页面中提取URL的逻辑(请查看Go框架colly的内容)。网络抓取只是作为一个例子来考察Go的并发性。 我们想从我们的起始页中提取所有的URL,将这些URL保存到一个列表中, ......
爬虫 语言 网络

GO实现Redis:GO实现TCP服务器(1)

本文实现一个Echo TCP Server interface/tcp/Handler.go type Handler interface { Handle(ctx context.Context, conn net.Conn) Close() error } Handler:业务逻辑的处理接口 H ......
服务器 Redis TCP

Go语言并发编程(2):channel 通道介绍和使用

一、简介 channel 不仅可以用于 goroutine 间进行安全通信,还可以用于同步内存访问。 而且 Go 社区强烈推荐使用 channel 通道实现 goroutine 之间的通信, 不要通过共享内存来通信,而应该通过通信来共享内存。 Go 从语言层面保证了同一时间只有一个 goroutin ......
通道 channel 语言

Go语言并发编程(4):sync包介绍和使用(下)-Once,Pool,Cond

sync包下:Once,Pool,Cond 一、sync.Once 执行一次 Once 简介 sync.Once 是 Go 提供的让函数只执行一次的一种实现。 如果 once.Do(f) 被调用多次,只有第一次调用会调用 f。 常用场景: 用于单例模式,比如初始化数据库配置 Once 提供的方法: ......
语言 sync Once Cond Pool

Go语言并发编程(3):sync包介绍和使用(上)-Mutex,RWMutex,WaitGroup,sync.Map

一、sync 包简介 在并发编程中,为了解决竞争条件问题,Go 语言提供了 sync 标准包,它提供了基本的同步原语,例如互斥锁、读写锁等。 sync 包使用建议: 除了 Once 和 WaitGroup 类型之外,大多数类型旨在供低级库程序使用。更高级别的同步最好用 channel 通道和通信来完 ......
sync WaitGroup RWMutex 语言 Mutex

go各框架的log日志

1.kratosLog: type Logger interface { Log(level Level, keyvals ...interface{}) error } type logger struct { logger Logger prefix []interface{} hasValue ......
框架 日志 log

Go语言学习——gin的使用1

gin作为Go语言中非常受欢迎的一个web后端框架有着十分好的性能表现和易用性。下面记录一下学习使用gin完成一个最简单的服务器程序: package main //声明所属的包 import "github.com/gin-gonic/gin" //导入gin框架的包 func sayHello( ......
语言学习 语言 gin

Go语言 是如何调用 chatGpt openai api 接口的 ?

Go语言 是如何调用 chatGpt openai api 接口的 ? 学习与分享 Go语言圈 2023-03-23 08:30 发表于广东 收录于合集#学Go语言哪些事儿161个 用编码工具,建议用最新版Goland,因为这里有正式版激活账号 https://web.52shizhan.cn/ac ......
接口 chatGpt 语言 openai api

Go语言:利用 TDD 逐步为一个字典应用创建完整的 CRUD API

前言 在数组这一章节中,我们学会了如何按顺序存储值。现在,我们再来看看如何通过键存储值,并快速查找它们。 Maps 允许你以类似于字典的方式存储值。你可以将键视为单词,将值视为定义。 所以,难道还有比构建我们自己的字典更好的学习 map 的方式吗? 正文 首先编写测试 在 dictionary_te ......
字典 语言 CRUD TDD API

go 标准包flag的基本用法

相关用法见代码 flag.Type() # 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 package main import ( "flag" "fmt" "time" ) func main() { // 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 ......
标准 flag go

Go web 一种常用的脚手架模板

Go web 使用Gin框架一个比较通用的脚手架模板。 代码地址:https://github.com/KpiHang/Go-Web-Learn-2/tree/master/web_app CLD分层 分层设计模式,如MVC为了能够对GUI类型的应用进行方便扩展,将程序划分为: 控制器(Contro ......
脚手架 模板 常用 web Go

Go HTTP编程

Go 语言标准库内建提供了 net/http 包,涵盖了 HTTP 客户端和服务端的具体实现,使得我们可以很方便地编写 HTTP 客户端或服务端的程序。 HTTP 服务端 示例: package main import ( "fmt" "net/http" ) //服务端编写的业务逻辑处理程序 —— ......
HTTP Go

go sort.Sort排序

package main import ( "fmt" "sort" ) type IntSlice []int func main() { int1 := IntSlice{3, 4, 1, 2, 9, 0, 8, 2, 6} sort.Sort(int1) fmt.Println(int1) } ......
Sort sort go

version "go1.16.4" does not match go tool version "go1.20.2"

1、访问golang中国官网,下载适用于Linux的Go1.20.2安装包。 2、打开终端并导航到下载的安装包所在的目录。 3、解压缩安装包,例如:tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz。 4、将Go二进制文件的路径添加到PATH环境变量 ......
quot version go1 go match

go 网络编程

1.网络编程基本介绍 Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是至关重要的一部分 网络编程有两种: 1)TCP socket编程,是网络编程的主流。底层是基于TCP/IP协议的,例如QQ等客户端。 2)b/s结构(Browser/Server,浏览 ......
网络编程 网络 go

Go语言:利用 TDD 驱动开发测试 学习结构体、方法和接口

环境安装: (新手向)在Linux中使用VScode编写 "Hello,world"程序,并编写测试-Ubuntu20.4 上一篇相关随笔: Go语言:利用 TDD 测试驱动开发帮助理解数组与动态数组(切片)的区别 正文👇 先来点简单的: 假设我们需要编程计算一个给定高和宽的长方形的周长。我们可以 ......
接口 语言 结构 方法 TDD