前言 我们知道Golang处理异常是用error返回的方式,然后调用方根据error的值走不同的处理逻辑。但是,如果程序触发其他的严重异常,比如说数组越界,程序就要直接崩溃。Golang有没有一种异常捕获和恢复机制呢?这个就是本文要讲的panic和recover。其中recover要配合defer使 ...
分类:
其他好文 时间:
2020-07-09 11:57:33
阅读次数:
63
https://studygolang.com/articles/11796 package main import ( "log" "net" ) func handleConnection(conn net.Conn) error { defer conn.Close() var request ...
分类:
Web程序 时间:
2020-07-08 21:28:55
阅读次数:
80
背景 因与工作相关,所以本文中的数据都进行了更改,但逻辑是一样的。 笔者的服务ServerA会请求服务ServerH获取一些数据,但ServerH的接口有个N秒内只能请求M次的限制,并返回false。而笔者的服务瞬时请求量远超M次,所以采用了协程池在收到103错误时,停止worker的运行N秒,然后 ...
分类:
其他好文 时间:
2020-07-03 23:19:20
阅读次数:
113
defer 用在函数中 把它后面的语句延迟到函数即将返回的时候执行如果有多个defer语句,函数结束时会先执行后面放进去的用于关闭文件操作,关闭数据库连接,断开socket等 defer执行时间的图 1.返回值赋值 2.真正的RET返回 如果有defer,会在第1、2步之间执行 无聊的笔试题 fun ...
分类:
其他好文 时间:
2020-07-01 23:50:25
阅读次数:
68
前段时间优化一个公司历史老项目的Web性能,却引出了一系列的问题,让我反思良多。 我通过Chrome的Lighthouse工具可以看出一些性能参数和问题反馈,我逐一对其进行优化。 根据资源请求的不同,大致可以分为前端资源性能和后端程序性能两个方面。 先分析一下前端资源吧: Defer offscre ...
分类:
Web程序 时间:
2020-06-21 00:25:06
阅读次数:
69
在计算机性能调试领域里,profiling 是指对应用程序的画像,画像就是应用程序使用 CPU 和内存的情况。 Go语言是一个对性能特别看重的语言,因此语言中自带了 profiling 的库,这篇文章就要讲解怎么在 golang 中做 profiling。 Go性能优化 Go语言项目中的性能优化主要 ...
分类:
编程语言 时间:
2020-06-15 21:11:17
阅读次数:
61
写过swift的同学应该都知道defer这个关键字,可以让我们在函数return之前执行指定的代码,这对于有多个提前return而忘记释放资源的函数来说,简直不要太方便了,然而对于swift的前辈Objective-C或C++来说,苹果并没有帮我们定义,因此本文总结一下如何在C++和Objectiv... ...
分类:
编程语言 时间:
2020-06-14 18:54:28
阅读次数:
63
package mainimport ( "fmt" "sync")func say(i int ,wg *sync.WaitGroup) { defer wg.Done() fmt.Println(i)}func main() { var wg sync.WaitGroup for i:=0;i< ...
分类:
其他好文 时间:
2020-06-12 14:17:51
阅读次数:
43
panic 抛出异常 通过recover捕获 类似 php python等语言的try catch package mainimport ( "fmt" "errors")func main() { testPanic()}func testPanic() { defer coverPanic() ...
分类:
其他好文 时间:
2020-06-06 21:58:46
阅读次数:
84
今日内容概要 聚合查询(聚合函数的使用)aggregate max、min、sum、count、avg 分组查询(group by的使用)annotate F与Q查询 django中如何开启事务 orm中常用字段及参数 数据库查询优化(only与defer、select_related与prefet ...
分类:
其他好文 时间:
2020-06-01 23:47:51
阅读次数:
74