2021年1月12日
第九篇文章我们学习了Go解决并发编程问题的三种方式。归根结底都是采用加锁,让并发变成同步访问。那么这些处理方式性能如何呢? 先介绍一个Linux下面统计时间的命令time,具体可以参考:https://www.runoob.com/linux/linux-comm-time.html 这里做一个测试,启动两个协程,一个对数执行++操作,一 ………
阅读全文
2021年1月7日
Go语言SDK内置了很多实用的工具,默认自带了单元测试、基准测试命令;今天我们来看看如何做好单元测试。 什么是单元测试 百度百科:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软 ………
阅读全文
2021年1月6日
Go语言SDK内置了很多实用的工具,默认自带了单元测试、基准测试命令;我们先看看基准测试如何使用。 什么是基准测试 百度百科:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。例如,对计算机CPU进行浮点运算、数据访问的带宽和延迟等指标的基准测试,可以使用户清楚地了解每一 ………
阅读全文
2020年12月29日
Go学习第四篇文章已经学习了类型的方法集,分值接收者和指针接收者,而且值和指针变量都可以自由调用这些方法。但接口的变量却不能随意调用实现者的方法集,这里有文章。 接口的认识 Go语言中接口(interface)非常重要,他被用来约定一组行为,凡是具备这一组行为的类型,都可以看做是该接口的派生类型。利用这种特性,我们就能抽象出一类行为,将来 ………
阅读全文
2020年12月29日
Go语言中的unsafe包非常简单,但是威力强大,用不少就出问题。整个包就这些代码: 1 2 3 4 5 6 7 package unsafe type ArbitraryType int type Pointer *ArbitraryType func Sizeof(x ArbitraryType) uintptr func ………
阅读全文
2020年12月28日
goroutine 在Go里,每一个并发执行的活动成为goroutine。 当一个程序启动时, 只有一个goroutine来调用main函数,称它为主goroutine。新的goroutine通过go语句进行创建。语法上,一个go语句是在普通的函数或者方法调用前加上go关键字前缀。main函数返回时,main函数中其他所有 ………
阅读全文
2020年12月27日
Go语言最大的特色就是其并发编程模型,多处理器的时候还可以自动实现真正的并行计算。这些复杂的调度算法被打包在了Go语言运行时当中。 分时调度 先回顾一下操作系统。 操作系统本身就是对硬件资源的一个大调度器;如果没有多任务的需求,我们都不需要这么复杂的调度,不需要分时操作系统;一直算个不停,一条路走到黑反而是利用率最高的;事实上最早期的操作 ………
阅读全文
2020年12月27日
格式化参数非常多,这里列出一些常用的: verb 描述 %b,%o,%d,%x 二进制、八进制、十进制、十六进制整数 %X 十六进制整数、字母大写 %f,%g,%e 浮点数:如3.141593,3.141592653589793,3.141593e+00 %v 按值的本来值输出 %+v 在 %v 基础上,对结构体字段名和值进行展开 %#v ………
阅读全文
2020年12月22日
Go语言正则表达式稍微有些复杂;下面做整理记录。 https://blog.csdn.net/chinabestchina/article/details/104764849 https://blog.csdn.net/u013870094/article/details/70142492?utm_source=blogxgwz4 (未完 ………
阅读全文
2020年11月28日
Go语言模板引擎的使用可以分为三部分:定义模板文件、解析模板文件和模板渲染。 定义模板 按照相应的语法编写模板文件。 1 2 3 4 5 6 7 8 <html> <head> <title>模板文件</title> </head> <body> hello {{ . ………
阅读全文