热门 最新 精选 话题 上榜
概要go语言的特色之一就是goroutine。也就是go协程。由于协程这个东西在go语言之前,用到相对比较少
转载 2022-06-09 10:01:23
287阅读
golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。示例:ch1 := make (chan int, 1)ch2 := make (chan int, 1)...select {case <-ch1: fmt.Println("ch1 pop one elemen
转载 2022-06-09 10:00:49
202阅读
Go 接口嵌套组合的使用方法package rocketimport ( "code.byted.org/ecom/compass_data_index/driver" "code.byted.org/ec
问题描述:左下角synchronizing files 非常慢,导致很多包找不到,有红色波浪线 系统环境:Goland 2021 解决方案:升级到 Goland 2022
原创 2022-06-07 20:25:44
424阅读
windows下的 goland synchronizing files 非常慢
引子package counterimport ( "log" "sync")type Counter struct { mu *sync.Mutex Value int}func NewCounter(value int) *Counter { return &Counter{ new...
原创 2022-06-07 17:39:09
118阅读
Go 延迟调用 defer 用法详解
使用 sync.Mutex 与 sync.WaitGroup线程不安全的用法:{ var wg sync.WaitGroup count := 0 for i := 0; i < 10; i++ { // wg add 1 goroutine
原创 2022-06-07 17:38:43
174阅读
值类型与指针类型1.值类型定义:变量直接指向存在内存中的值,我们称之为值类型。值类型的变量的值存储在栈中。值类型,将一个变量赋值给另一个变量
本地缓存实现var cache = struct { // 声明 struct 字面量 cahce (匿名结构体) sync.Mutex // 互斥锁, 内嵌 Struct caches
原创 2022-06-07 17:38:23
190阅读
gomock 是 Google 开源的 Golang 测试框架。GoMock is a mocking framework for the Go programming language.https://github.com/golan
Quick StartPROJECTNAME=$(shell basename "$(PWD)")all: format testformat: find . -name '*.go' | xargs goimports -wtest: go test -v ./.
代码实例func (rcvr *CQL) Compile(ctx context.Context) string { defer func() { if err := recover(); err != nil { //打印调用栈信息
Issuemockgen -source=./driver/rocket_driver.go -destination ./driver/rocket_driver_mock.go -package driver2022/06/01 21:39:44 Loading input failed: .
原创 2022-06-07 17:34:22
778阅读
1点赞
使用Go自带的net/http库可以发送各种HTTP请求。 然而各种类型请求发送方式有点不太一致,这里参考Python requests库的使用方式,简单封装了一下。 代码如下: 文件requests.go内容 package main import ( "encoding/json" "io" "
原创 2022-06-06 01:59:20
1309阅读
对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也非常低,我们应该使用更简单的技术架构来加速业务价值的交付,此时单体的优势就体现出来了。
原创 2022-06-06 01:31:46
119阅读
Go单体服务开发最佳实践
何时使用单体 RESTful 服务 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,而单体服务具有架构简单,部署简单,开发成本低等优点,可以帮助我们快速实现产品需求。
原创 2022-06-06 01:26:25
207阅读
用 Go 快速开发一个 RESTful API 服务
我们在写应用时,基本都会用到配置文件,从各种 shell 到 nginx 等,都有自己的配置文件。虽然这没有太多难度,但是配置项一般相对比较繁杂,解析、校验也会比较麻烦。
原创 2022-06-06 01:25:45
849阅读
对 Gopher 来说,虽然我们基本都是在写代码让别人来请求,但是有时候,我们也需要去请求第三方提供的 RESTful 接口
原创 2022-06-06 01:10:00
112阅读
在了解Golang的内存管理之前,需要了解下基本申请内存模式,即TCMalloc(Thread Cache malloc)。golang的内存管理就是基于TCMalloc的核心思想来构建的。1.TCMalloc1.1TCMalloc介绍TCMalloc最大优势就是每个线程都会维护自己的独立内存池。下面分别介绍下相关内存池。1.1.1ThreadCache(小对象内存快的申请):ThreadCach
转载 2022-06-05 17:09:21
2758阅读
Golang内存管理
指针:pointer 数组:array 切片:slice 字典:map 结构体:struct1.指针基本概念package mainimport "fmt"func main() { var a int = 10 fmt.Println("内存
原创 2022-06-05 01:59:26
63阅读
GO 学习笔记——第三天 / 复合类型
1.常量和变量变量概念:变量就是程序运行期间可以改变的量声明: var a int注意:局部变量声明后一定要使用,不然报declared and not used赋值: a =
原创 2022-06-05 01:56:40
77阅读
GO 学习笔记——第一天 / 类型,流程控制
语言简介GO语言全称Golang,发布时间:2009/11/10GO语言的优势:可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
原创 2022-06-05 01:56:31
93阅读
GO 学习笔记——基础概括
1.自定义函数package mainimport "fmt"//伪代码func main() { TestFun(1, 2, 3, 4, 5, 6)}//无参无返回值func TestFun() { fmt.Println("TestFun
原创 2022-06-05 01:56:22
120阅读
用GO语言来写一个逻辑稍微复杂一些的猜字游戏,我们可以先来看下代码package mainimport "fmt"import "math/rand"import "time"/*猜字游戏
原创 2022-06-05 01:55:39
87阅读
GO语言项目(一)——猜字游戏
1.匿名组合package mainimport "fmt"//自定义类型type XX stringtype Person struct { name string sex bool age int}type Student struct { //匿名字段
原创 2022-06-05 01:55:28
63阅读
GO 学习笔记——第四天 / 面向对象
1.error接口,panic,recovererror:输出错误信息package mainimport "fmt"import "errors"func main() { err1 := fmt.Errorf("ERROR") ("THIS IS ERROR") fmt.Println(err...
原创 2022-06-05 01:55:17
109阅读
go 环境配置
原创 2022-06-05 00:36:48
2623阅读
本文用示例介绍globs的匹配规则。
原创 2022-06-05 00:19:17
222阅读
Go语言三个最常用且最重要的数据结构:string、slice、map
原创 2022-06-05 00:09:14
89阅读
这一次,带你深入浅出Go语言切片和数组
垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储资源。GO语言的GC过程中不需要程序员手动执行1.Go V1.3之前的标记-清除(mark and sweep)算法golang 1.3之前主要使用标记-清除算法,此算法主要有两个步骤:标记(mark phase)清除(sweep phase)1.1标记清除算法的具体步
转载 2022-06-04 22:57:57
853阅读
Golang三色标记与混合写屏障
1.goRoutine和线程的区别1.1内存占用 goroutine:创建一个goroutine的栈内存消耗为2kb,运行过程中,栈空间不足可自动扩容。线程:创建一个线程默认分配1-8M内存,创建后栈空间大小不能改变,某些情况下可能存在栈溢出风险。1.2创建和销毁goroutine:是用户态线程,创建和销毁消耗很小。线程:是内核态的,线程创建和销毁有巨大的消耗。1.3调度切换goroutine:g
原创 2022-06-03 21:11:10
389阅读
go GMP