Go

go strings.Builder

字符串拼接和strings.Buffer缺点 Go里面的字符串是常量,对字符串的修改会重新申请内存地址。虽然bytes.Buffer避免了字符串修改过程中的内存申请,但是最后从[]byte转成字符串时会重新内存申请。从Go 1.10开始,提供了性能更好的方法strings.Builder,与byte ......
Builder strings go

go map

map内存模型 // A header for a Go map. type hmap struct { // 元素个数,调用 len(map) 时,直接返回此值 count int flags uint8 // buckets 的对数 log_2 B uint8 // overflow 的 buc ......
map go

学的java,工作用的go?

学的java,找的java开发,进了公司却在使用go。 第一天让拉代码,我以为我拉的是java代码,没想到却是go。当时慌死了,我只听说过go,连hello world都没有go写过。既来之,则安之,我接下来就是装goland,配环境变量,好在代码跑起来了,这个项目使用go+Gin来进行开发,甚至连 ......
java go

go context

使用场景 在协程之间传递上下文 context接口 type Context interface { // 返回绑定当前context的任务取消的截止时间 // 如果没有设定期限,将返回ok == false Deadline() (deadline time.Time, ok bool) // 绑 ......
context go

go目录结构和交叉编译

环境变量 GOROOT:GO语言的安装路径GOPATH:项目目录GOBIN:执行go install go文件时,生成可执行文件的路径,通常设置为GOPATH/bin。 GOPATH目录结构 GOPATH/src目录下放源代码文件。GOPATH/pkg目录下放执行go install 目录名后生成的 ......
结构 目录

go单元测试显示测试用例代码覆盖率

执行单个目录所有测试用例并生成覆盖率 go test -gcflags=all=-l -coverprofile=$GOPATH/bin/c.out . go tool cover -html=$GOPATH/bin/c.out -o=$GOPATH/bin/tag.html 执行单个测试用例并生成 ......
覆盖率 单元 代码

go垃圾回收

三色标记法 三色标记法配合写屏障和辅助GC。1.初始状态所有对象都是白色。2.从根出发扫描,将引用的对象标记为灰色。3.分析灰色对象是否引用了其他对象,自身标记为黑色,将它引用的其他对象标为灰色4.重复步骤3,直到灰色对象队列为空。此时白色对象即为垃圾,进行回收。 写屏障:每一轮GC开始时会初始化屏 ......
垃圾

GO协程

goroutine 协程本意是coroutine,go协程是goroutine。线程分为内核态线程(内核线程)和用户态线程(协程)。线程由CPU调度是抢占式的,协程由用户态调度是协作式的(主动让出才执行下一个)。 N:1(N个用户线程绑定1个内核线程) 例子:python的gevent优点:协程切换 ......

Go并发编程实战 第三章 并发编程综述

> 经过前两章的基本认识,终于开始并发编程了。 # 并发编程基础 ## 基本概念 1. 串行和并行程序:串行程序特指只能被顺序执行的指令列表,并发程序则是可以被并发执行的两个及以上的串行程序的综合体。 2. `并发和并行`: 并行是指两个或者多个事件在**同一时刻**发生;而并发是指两个或多个事件在 ......
实战 第三章

说说 Go 语言的坑(二)

上一篇文章 [说说 Go 语言 for-range 的坑](https://imlht.com/archives/187/) 说的是 for-range 的,工作中,其实还是遇到蛮多奇奇怪怪的问题,这里也顺便整理了一下,就当作是续集:) 先继续看 for-range 的另一个坑: #### 下面代码 ......
语言 Go

go text模板

package installimport ( "bytes" "fmt" "strings" "text/template" "github.com/fanux/sealos/pkg/logger" "sigs.k8s.io/yaml")var ConfigType stringfunc setK ......
模板 text go

go学习笔记

# 包 go 由包组织(即一个文件夹,文件夹的名字对应包的名字,文件夹可以包含一个多个 go 源文件),每个源文件用`packge 包名`在开头声明 main 包:定义一个独立可执行程序,总是程序开始的地方 **包的导入** 通过`import 包名`或`import (多个包名)`来导入包 包名重 ......
笔记

go 服务端分层框架设计

框架分为四层。models,controllers,repositories,services 以User为例 1、controller示例 ``` package controllers import ( "appserver/services" "github.com/gin-gonic/gin ......
框架 go

go 给一个切片,将其写入到一个单链表中

package main import "fmt" // 功能:实现一个单链表(给一个切片,将其写入到一个单链表中) type Node struct { Value int Next *Node } func create(slice []int) *Node { if len(slice) == ......
go

kafka-consumer.go

package consumer import ( "fmt" "sync" "github.com/Shopify/sarama" ) type CRead func() string func Run() { var wg sync.WaitGroup consumer, err := sara ......
kafka-consumer consumer kafka go

kafka-producer.go

package producer import ( "fmt" "github.com/Shopify/sarama" ) type CRead func() string func Run(cRead CRead) { config := sarama.NewConfig() config.Pro ......
kafka-producer producer kafka go

kafka-main.go

package main import ( "bufio" "kafka/consumer" "kafka/producer" "os" "strings" ) var inputReader *bufio.Reader func init() { inputReader = bufio.NewRe ......
kafka-main kafka main go

【Go】基础

## 关于项目新建 ### 使用path新建 * 新建项目位置必须在go目录下 > 先查找gopath/src这个目录之下,在查找goroot/src这个目录之下,如果都没有则报错 ![image](https://img2023.cnblogs.com/blog/1282163/202307/12 ......
基础

Go特殊的语言特性

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 本文主要通过值传递和指针、字符串、数组、切片、集合、面向对象(封装、继承、抽象)和 ......
特性 语言

Go并发编程实战 第一章 初识Go语言

第一章基本上就是讲解Go的历史、如何安装GO、Go的基本概念和一些常用的命令。由于学习Go也有一段时间了,可以看出书中有一些概念其实不完全正确的,特别是gopath部分。 大概知识点如下: 1. 工作区的概念:早期Go确实建议把所有的工程代码放在`GOPATH`环境变量下,这个目录是你自己设置的,可 ......
实战 语言

Go 语言的 nil 能比较自己吗

## nil 是什么? 可以看看官方的描述,在 buildin/buildin.go 里: ```go // nil is a predeclared identifier representing the zero value for a // pointer, channel, func, in ......
语言 nil Go

Go并发编程学习

> 想起来还不是很熟悉Go的并发编程,趁现在有空学一下。找了一些资料,感觉也不是很好,最终选择看这本书(看到一些大佬推荐的) > 本章作为这个书的目录部分索引,会一直更新到这本书看完,算是立个flag吧。 > 2023-7-12: 更新第一章初识Go语言 # Go并发编程实战 ![](https:/ ......

GoLand没有go mod模式选项的问题

代理需要命令行进行全局设置 使用阿里云代理: go env -w GO111MODULE=on go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ ......
模式 GoLand 问题 mod

Go--统计数组中重复的元素及重复次数

代码: package main import ( "fmt" ) func main() { //创建有重复数值的数组 a1 := []int{1, 2, 3, 1, 4, 5, 2} a2 := []string{"t1", "t2", "t1", "t3", "t5", "t3"} //创建m ......
数组 元素 次数 Go

Go语言中的性能测试

# 单元测试 测试单元的结果是否符合预期 ```Go //go_test.go import ( "fmt" "testing" ) func Add() int { fmt.Println("AAAAAAAAAAAAAA") return 5 } func Sub() int { fmt.Prin ......
性能 语言

go编写zabbix企业微信媒介脚本

```go package main import ( "bytes" "fmt" "io" "net/http" "os" "time" "github.com/bytedance/sonic" ) var ( subject, message, webHook, is_all, user_pho ......
媒介 脚本 zabbix 企业

go项目的打包部署

1.go项目在window下编译简易打包1).在windows下直接编译生成main.exe文件在项目main.go同级目录下执行以下命令go build main.go 2).将当前目录下的main.go打包成gotest.exe文件(在windows下可以直接执行)在项目main.go同级目录下 ......
项目

go语言-不同类型转换为JSON格式数据

1.将结构体转换为JSON: package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Email string } func main() { person := Person{Na ......
语言 类型 格式 数据 JSON

go generate命令简介

最近在研究[kratos](https://github.com/go-kratos/kratos)的使用,发现在`kratos run`之前会先运行`go generate ./...`命令。 这个命令之前没怎么用过,所以决定学习下该命令的用法。 `go generate`是Go语言中的一个命令, ......
generate 命令 简介 go

go语言时间相关

在Go语言中,时间定义为Time结构体。 var t = time.Now() fmt.Printf("%T\n", t) // time.Time fmt.Printf("%v %+[1]v\n", t) // 2022-10-06 19:35:00.1963422 +0800 CST m=+0. ......
语言 时间