摘要:
前言 本文主要介绍在Go中内置的包如何使用 time 时间相关的包 package main import ( "fmt" "time" ) func main() { //格式化时间 now := time.Now() fmt.Println(now) fmt.Println(now.Year() 阅读全文
摘要:
前言 消息队列的主要有3大作用 进程通信(IPC):Interprocess Communication 程序解耦:程序由异步变为了异步,提升程序并发(规避IO等待时间)能力。 数据流量削峰:把消息暂时缓冲在消息队列里面。 NSQ传递的消息通常是无序的,当然你也可以保留下信息去check时间戳,因此 阅读全文
摘要:
前言 我们可以将原本耦合、同步执行的程序 解耦成 生产端+ 消息队列+消费端模型的异步程序,加上分布式的生产者和消费者架构就可以在一定程度上支撑大并发。 NSQ是go语言开发的消息队列,所以对nsqd进行水平扩展时它的部署、配置也会相对简单。 如果熟悉golang的话在遇到了十分棘手的问题时,看一下 阅读全文
摘要:
前言 TDD(Test Driven Development),那么我们如何做到可反复、无遗漏、高效地测试我们自己写的的代码?实现敏捷开发呢? 这就需要我们自己给自己写的代码写测试用例! 参考 本文主要介绍下在Go语言中如何做单元测试、基准测试、非功能测试。 go test介绍 想要测试Go代码需要 阅读全文
摘要:
前言 在Golang中main函数是程序执行的入口和主线,无论怎样,main函数早于它开启的Goroutines结束执行都不属于正常的程序执行流程! 使用以下3种方式,可以控制Goroutines的执行顺序 1.sync.WaitGroup main函数等待,开启的子Goroutines正常执行完毕 阅读全文
摘要:
前言 Golang本身实现了线程调度,对于并行来说需要程序运行环境物理设备多核处理器的加持 ,单核只能实现并发。 Goroutine是Go语言中的协程(Coroutine),称为Goroutine。 GPM是Golang的Goroutine调度框架,可以把M个Goroutine映射到N个系统线程中, 阅读全文
摘要:
前言 本文主要介绍了Go语言中文件读写的相关操作。 文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。 Go中所有跟文件相关操作都使用OS这个模块来实现。 打开关闭文件 os.Open(path)函数能够打开一个文件返回1个文件句柄,从而实现文件读 阅读全文
摘要:
前言 无论什么Python还是Golang当你的代码量达到一定程度时,就需要使用package来分类、组织我们的代码文件。 一、Package概念 包在项目开发过程中组织代码的1种方式。 包是多个Go文件的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。 在目 阅读全文
摘要:
前言: 接口是一种以type关键字声明的动态的值和动态数据类型,是一种抽象出来的数据类型,接口定义了一堆方法(规范),只要结构体实现了接口中定义的方法(规范),该结构体就属于这种接口类型。 例如某大神想要开发1款新的操作系统,这个操作系统需要支持各种厂商各种型号的网卡驱动、硬盘驱动、显卡驱动.... 阅读全文
摘要:
前言 编程就是要通过编程语言表达给计算机,让计算机帮助我们达到解决现实生活问题的目的! 不管是Python还是Golang...这些编程语言,由于历史原因、遇到的痛点、解决的问题不同,导致语法追求、本身特性不同。但是遇到的问题、解决问题的思想是一致的。 面向对象编程 :就是按照自己的理解 尽量把程序 阅读全文