![](https://img-blog.csdnimg.cn/ffef377600494076b7968b9aaa96dc06.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go
Go
Lumos`
努力努力再努力
展开
-
sync.Map低层工作原理详解
sync.Map低层工作原理详解目录为什么需要sync.Map?适合什么场景?sync.Map内部实现基本原理及结构体分析sync.Map低层工作原理1. 为什么需要sync.Map?适合什么场景?map在并发读写的情况下是不安全,会触发panic。Go 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,目的是为了改善多核高读取低写入时候的性能,即适合写特别少而并发读特别多的场景。2. sync.Map内部实现基本原理及结构体分析sync.Map通过内部存储的两原创 2021-07-23 20:10:19 · 1085 阅读 · 0 评论 -
concurrent map使用
concurrent map使用目录概述例子1. 概述Go语言原生的map类型并不支持并发读写。concurrent-map提供了一种高性能的解决方案:通过对内部map进行分片,降低锁粒度,从而达到最少的锁等待时间(锁冲突)在Go 1.9之前,go语言标准库中并没有实现并发map。在Go 1.9中,引入了sync.Map。新的sync.Map与此concurrent-map有几个关键区别。标准库中的sync.Map是专为append-only场景设计的。因此,如果想将Map用于一个原创 2021-07-07 18:18:04 · 1585 阅读 · 0 评论 -
go interface{}类型转换
go interface{}类型转换目录查看interface{}类型还原interface{}的原类型1. 查看interface{}类型func checkType(i interface{}) { reflect.TypeOf(i)}2. 还原interface{}的原类型通过switch判断interface{}类型,然后通过 xxx.(类型) 强转type Person struct { name string age int}func checkTy原创 2020-12-21 20:50:20 · 3498 阅读 · 0 评论 -
6.方法(go语言学习笔记)
6.方法(go语言学习笔记)目录定义匿名字段方法集表达式1. 定义方法是与对象实例绑定的特殊函数。方法是面向对象编程的基本概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例对象都有各自不同的独立特征,以属性和方法来暴露对外通信接口。普通函数则专注于算法流程,通过接收参数来完成特定逻辑运算,并返回最终结果。换句话说,方法是有关联状态的,而函数通常没有。方法和函数定义的语法区别在于前者有前置实例接收参数,编译器以此确定方法所属类型。在某些语言中,尽管没有显示定义,但会在调原创 2020-12-18 18:03:35 · 94 阅读 · 0 评论 -
Go Time常用语法
Go Time常用语法目录获取当前时间戳和string类型的格式化时间构造指定时间时间戳和格式化时间相互转换1. 获取当前时间戳和string类型的格式化时间1. 获取当前时间戳func GetCurTimestamp() int64 { return time.Now().Unix()}2. 获取格式化时间func GetCurTimeFormat() string { return time.Now().Format("2006-01-02 15:04:05") /原创 2020-11-09 14:56:58 · 443 阅读 · 0 评论 -
Go常用语法
Go常用语法目录类型转换(如 int 转 string)float类型保留小数分割字符串判断字符串中是否包含需要的字符串记录一下自己经常用到,但老是忘记的go语法,以后会继续补充,别再忘记了!!1. 类型转换1. string转intnum, err := strconv.Atoi("100")num, err := strconv.ParseInt("100", 10, 64)上面两种方式都可以。方式二的第二个参数表示进制,如10的时候代表十进制,100就表示十进制的原创 2020-08-22 01:13:55 · 185 阅读 · 0 评论 -
Go语言中*和&的区别
Go语言中*和&的区别总结示例老是分不清*和&的区别,今天特意总结了一下。1. 总结&是取地址符。*可以表示一个变量是指针类型,也可以表示指针类型变量所指向的存储单元,也就是这个地址所指向的值。2. 示例代码type Person struct { name string age int}func main() { // & 是取地址符,取到Person类型对象的地址 // 声明一个Person类型的结构体 Bob := P原创 2020-08-10 17:27:02 · 7319 阅读 · 3 评论 -
Go操作etcd
Go操作etcd目录etcd介绍etcd应用场景为什么用etcd而不用Zookeeperetcd集群Go语言操作etcd1. etcd介绍etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。类似项目有zookeeper和consul。etcd具有以下特点:完全复制:集群中的每个节点都可以使用完整的存档高可用性:Etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入原创 2020-06-15 16:06:51 · 933 阅读 · 0 评论 -
Go操作tail
Go操作tail目录Go操作tail1. Go操作tail1. tailHP团队出的tail库,常用于日志收集2. 下载及安装go get github.com/hpcloud/tail3. Go操作tailpackage mainimport ( "fmt" "time" "github.com/hpcloud/tail")// tailf的用法示例func main() { fileName := "./my.log" config := tai原创 2020-06-15 16:05:47 · 431 阅读 · 0 评论 -
Go操作Kafka
Go操作Kafka目录sarama连接kafka发送消息连接kafka消费消息Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收kafka消息。1. saramaGo语言中连接kafka使用第三方库:github.com/Shopify/sarama。1. 下载及安装go get github.com/Shopify/sarama2. 注意原创 2020-06-15 15:44:30 · 380 阅读 · 0 评论 -
Go标准库Context
Go标准库Context目录为什么需要ContextContext初始Context接口With系列函数1. 为什么需要Context在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,原创 2020-06-05 10:14:33 · 181 阅读 · 0 评论 -
go module
go module目录为什么需要依赖管理go module在项目中使用go module1. 为什么需要依赖管理最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?2. go modulego module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。2.1 GO111MODU原创 2020-06-03 20:54:33 · 209 阅读 · 0 评论 -
Go语言操作Redis
Go语言操作Redis目录Redis介绍go-redis库1. Redis介绍Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。1.1 Redis支持的数据结构Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查原创 2020-06-03 13:17:35 · 1706 阅读 · 0 评论 -
Go操作NSQ
Go操作NSQ目录NSQ介绍NSQ应用场景安装NSQ组件NSQ架构NSQ特性Go操作NSQNSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。1. NSQ介绍NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ的优势有以下优势:NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证NSQ支持横向扩展,没有任何集中式代理。NSQ易于配置和部署,并且内置了管理界面。原创 2020-05-31 00:02:14 · 305 阅读 · 0 评论 -
Go连接及操作MySQL
Go连接及操作MySQL目录连接MySQLCRUDMySQL预处理Go实现MySQL事务sqlx使用注意事项1. 连接MySQLGo语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动1. 下载依赖go get -u github.com/go-sql-driver/mysql2. 使用MySQ原创 2020-05-30 14:16:42 · 449 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第十一章 测试
《Go语言圣经》学习笔记 第十一章 测试目录go test测试函数测试覆盖率基准测试剖析示例函数注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。Maurice Wilkes, 第一个存储程序计算机EDSAC的设计者, 1949年他在实验室爬楼梯时有一个顿悟。 在《计算机先驱回忆录》 ( Memoirs of a Computer Pioneer) 里, 他回忆到: “忽然间有一种醍醐灌原创 2020-05-29 15:57:56 · 228 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第十章 包和工具
《Go语言圣经》学习笔记 第十章 包和工具目录包简介导入路径包声明导入声明包的匿名导入包和命名工具注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。现在随便一个小程序的实现都可能包含超过10000个函数。 然而作者一般只需要考虑其中很小的一部分和做很少的设计, 因为绝大部分代码都是由他人编写的, 它们通过类似包或模块的方式被重用。Go语言有超过100个的标准包( 译注: 可以用 go原创 2020-05-28 11:04:10 · 256 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第九章 基于共享变量的并发
《Go语言圣经》学习笔记 第九章 基于共享变量的并发目录竞争条件sync.Mutex互斥锁syn.RWMutex读写锁内存同步syn.Once初始化竞争条件检测示例:并发的非阻塞缓存Gorountines和线程注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。前一章我们介绍了一些使用goroutine和channel这样直接而自然的方式来实现并发的方法。 然而这样做我们实际上屏蔽掉了原创 2020-05-26 23:15:26 · 445 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第八章 Groroutines和Channels
《Go语言圣经》学习笔记 第八章 Groroutines和Channels目录Goroutines实例:并发的Clock服务实例:并发的Echo服务Channels并发的循环示例:并发Web爬虫基于select的多路复用示例:并发的字典遍历并发的退出示例:聊天服务注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。并发程序指同时进行多个任务的程序, 随着硬件的发展, 并发程序变得越原创 2020-05-26 08:33:46 · 466 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第七章 接口
《Go语言圣经》学习笔记 第七章 接口目录接口是合约接口类型实现接口的条件flag.Value接口接口值sort.Interface接口http.Handle接口error接口示例:表达式求值类型断言基于类型断言识别错误类型通过类型断言查询接口类型分支示例:基于标记的XML解码补充几点注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。接口类型是对其它类型行为的抽象和概括原创 2020-05-22 21:00:41 · 381 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第六章 方法
《Go语言圣经》学习笔记 第六章 方法目录方法声明基于指针对象的方法通过嵌入结构体来扩展类型方法值和方法表达式示例:Bit数组封装注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。从90年代早期开始, 面向对象编程(OOP)就成为了称霸工程界和教育界的编程范式, 所以之后几乎所有大规模被应用的语言都包含了对OOP的支持, go语言也不例外。尽管没有被大众所接受的明确的OOP的定义, 从原创 2020-05-17 21:12:14 · 226 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第五章函数
《Go语言圣经》学习笔记 第五章 函数目录函数声明递归多返回值匿名函数可变参数Deferred函数Panic异常Recover捕获异常注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。函数可以让我们将一个语句序列打包为一个单元, 然后可以从程序中其它地方多次调用。 函数的机制可以让我们将一个大的工作分解为小的任务, 这样的小任务可以让不同程序员在不同时间、 不同地方独立完成。 一个函原创 2020-05-16 20:49:55 · 405 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第四章 复合数据类型
Go语言圣经学习笔记 第四章 基础数据类型目录整型浮点数复数布尔型字符串常量注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。...原创 2020-05-07 10:03:20 · 549 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第三章 基础数据类型
Go语言圣经学习笔记 第三章 基础数据类型目录整型浮点数复数布尔型字符串常量注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。1. 整型Go语言的数值类型包括几种不同大小的整形数、 浮点数和复数。 每种数值类型都决定了对应的大小范围和是否支持正负符号。 让我们先从整形数类型开...原创 2020-04-26 19:35:46 · 585 阅读 · 0 评论 -
《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构目录命名声明变量赋值类型包和文件作用域注:学习《Go语言圣经》笔记,PDF点击下载,建议看书。Go语言小白学习笔记,几乎是书上的内容照搬,大佬看了勿喷,以后熟悉了会总结成自己的读书笔记。1. 命名Go语言中的函数名、 变量名、 常量名、 类型名、 语句标号和包名等所有的命名, 都遵循一个简单的命名规则: 一个名字必须以一个字母...原创 2020-04-22 19:49:29 · 351 阅读 · 1 评论 -
《Go语言圣经》学习笔记 第一章 Go语言入门
Go圣经学习笔记 第一章 Go语言入门目录Hello, World命令行参数查找重复的行GIF动画获取URL并发获取多个URLWeb服务本章要点注:学习《Go语言圣经》笔记,PDF点击下载,建议看书,我的笔记是给自己看的哈哈哈,大佬看完怕是会忍不住骂人1. Hello, Worldgopl.io/ch1/helloworldpackage mainimport...原创 2020-04-19 15:02:33 · 701 阅读 · 0 评论