Go

手撸golang spring ioc/aop 之2

121 0

手撸golang spring ioc/aop 之2 缘起 最近阅读 [Offer来了:Java面试核心知识点精讲(框架篇)] (王磊 , 2020.6) 本系列笔记拟采用golang练习之 Talk is cheap, show me the code. Spring Spring基于J2EE技术实现了一套轻量级的 Java Web Service系统应用框架。 它有很多优秀的特性,很多公司都选择把 Spring作为产品或项目的基础开发架构。Spring的特性包括轻量、控制反转 (Inversion o

Go

模块二 GO语言进阶技术-错误处理(上)

42 0

提到 Go 语言中的错误处理,我们其实已经在前面接触过几次了。比如,我们声明过error类型的变量err,也调用过errors包中的New函数。今天,我会用这篇文章为你梳理 Go 语言错误处理的相关知识,同时提出一些关键问题并与你一起探讨。我们说过error类型其实是一个接口类型,也是一个 Go 语言的内建类型。在这个接口类型的声明中只包含了一个方法Error。Error方法不接受任何参数,但是会返回一个string类型的结果。它的作用是返回错误信息的字符串表示形式。我们使用error类型的方式通常是,在

Go

模块二 GO语言进阶技术-错误处理(下)

41 0

在上一篇文章中,我们主要讨论的是从使用者的角度看“怎样处理好错误值”。那么,接下来我们需要关注的,就是站在建造者的角度,去关心“怎样才能给予使用者恰当的错误值”的问题了。知识扩展问题:怎样根据实际情况给予恰当的错误值?我们已经知道,构建错误值体系的基本方式有两种,即:创建立体的错误类型体系和创建扁平的错误值列表。先说错误类型体系。由于在 Go 语言中实现接口是非侵入式的,所以我们可以做得很灵活。比如,在标准库的net代码包中,有一个名为Error的接口类型。它算是内建接口类型error的一个扩展接口,因为

Go

模块二 GO语言进阶技术-PANIC函数、RECOVER函数以及DEFER语句(下)

64 0

我在前一篇文章提到过这样一个说法,panic 之中可以包含一个值,用于简要解释引发此 panic 的原因。如果一个 panic 是我们在无意间引发的,那么其中的值只能由 Go 语言运行时系统给定。但是,当我们使用panic函数有意地引发一个 panic 的时候,却可以自行指定其包含的值。我们今天的第一个问题就是针对后一种情况提出的。知识扩展问题 1:怎样让 panic 包含一个值,以及应该让它包含什么样的值?这其实很简单,在调用panic函数时,把某个值作为参数传给该函数就可以了。由于panic函数的唯一

Go

模块三 GO语言实战与应用-测试的基本规则和流程(上)

36 0

在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试、程序监测,以及 Go 语言标准库中各种常用代码包的正确用法。从上个世纪到今日今时,程序员们,尤其是国内的程序员们,都对编写程序乐此不疲,甚至废寝忘食(比如我自己就是一个例子)。因为这是我们普通人训练自我、改变生活、甚至改变世界的一种特有的途径。不过,同样是程序,我们却往往对编写用于测试的程序敬而远之。这是为什么呢?我个人感觉,从人的本性来讲,我们都或多或少会否定“对自我的否定”。我们不愿意看到我们编写

Go

手撸golang spring ioc/aop 之1

56 0

手撸golang spring ioc/aop 之1 缘起 最近阅读 [Offer来了:Java面试核心知识点精讲(框架篇)] (王磊 , 2020.6) 本系列笔记拟采用golang练习之 Spring Spring基于J2EE技术实现了一套轻量级的Java Web Service系统应用框架。 它有很多优秀的特性,很多公司都选择把Spring作为产品或项目的基础开发架构。Spring的特性包括轻量、控制反转(Inversion of Control, IoC)、面向容器、 面向切面(AspectOri

Go

leetcode154 寻找旋转排序数组中的最小值 II golang

39 0

154. 寻找旋转排序数组中的最小值 II 题目 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7] 注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[

Go

使用 Go 1.16 的 signal.NotifyContext 让你的服务重启更优雅

76 0

在 Go 1.16 的更新中,signal包增加了一个函数 NotifyContext, 这让我们优雅的重启服务(Graceful Restart)可以写的更加优雅。 一个服务想要优雅的重启主要包含两个方面:退出的旧服务需要 Graceful Shutdown,不强制杀进程,不泄漏系统资源。 在一个集群内轮流重启服务实例,保证服务不中断。第二个问题跟部署方式相关,改天专门写一篇讨论,今天我们主要谈怎么样优雅的退出。 首先在代码里,用了外部资源,一定要使用defer去调用Close()方法关闭。 然后我们就