随笔分类 - golang
初学者的探索
摘要:作者 | 阿里云售后技术专家 声东 导读:当我们尝试去理解 K8s 集群工作原理的时候,控制器(Controller)肯定是一个难点。这是因为控制器有很多,具体实现大相径庭;且控制器的实现用到了一些较为晦涩的机制,不易理解。但是,我们又不能绕过控制器,因为它是集群的“大脑”。今天这篇文章,作者通过分
阅读全文
摘要:问题发现 在生产环境下,微服务时不时直接panic,导致服务重启。而在k8s下服务重启5次后,会进入惩罚模式重启时长变5分钟(可以修改,但是治标不治本)。 最终要的降低程序的影响面。根因:微服务都是HTTP/grpc服务,在底层实现都是通过go协程来处理http请求,并且未进行panic的recov
阅读全文
摘要:bufio.NewReader和io.LimitedReader在Go语言中都是用于读取数据的,但它们的工作方式和使用场景有所不同。 bufio.NewReader函数会创建一个新的Reader,它实现了io.Reader接口,并在其上添加了缓冲功能12。这意味着它可以从输入流(如文件或网络连接)中
阅读全文
摘要:1. 读取文件 文件读取是所有编程语言中最常见的操作之一。本教程我们会学习如何使用 Go 读取文件。 本教程分为如下小节。 将整个文件读取到内存 使用绝对文件路径 使用命令行标记来传递文件路径 将文件绑定在二进制文件中 分块读取文件 逐行读取文件 将整个文件读取到内存 将整个文件读取到内存是最基本的
阅读全文
摘要:1. Panic和recover 什么是 panic? 在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。 但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 panic 来终止程序。当函数发生 panic 时,它会终止运行,
阅读全文
摘要:1. 自定义错误 在上一教程里,我们学习了 Go 中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。 在本教程中,我们会学习如何创建我们自己的自定义错误,并在我们创建的函数和包中使用它。我们会使用与标准库中相同的技术,来提供自定义错误的更多细节信息。
阅读全文
摘要:什么是 defer? defer 语句的用途是:含有 defer 语句的函数,会在该函数将要返回之前,调用另一个函数。这个定义可能看起来很复杂,我们通过一个示例就很容易明白了。 示例 package main import ( "fmt" ) func finished() { fmt.Printl
阅读全文
摘要:1. 合取代继承 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的典型例子就是博客帖子。每一个博客
阅读全文
摘要:Mutex vs 信道 通过使用 Mutex 和信道,我们已经解决了竞态条件的问题。那么我们该选择使用哪一个?答案取决于你想要解决的问题。如果你想要解决的问题更适用于 Mutex,那么就用 Mutex。如果需要使用 Mutex,无须犹豫。而如果该问题更适用于信道,那就使用信道。:) 由于信道是 Go
阅读全文
摘要:关闭信道和使用 for range 遍历信道 数据发送方可以关闭信道,通知接收方这个信道不再有数据发送过来。 当从信道接收数据时,接收方可以多用一个变量来检查信道是否已经关闭。 v, ok := <- ch 上面的语句里,如果成功接收信道所发送的数据,那么 ok 等于 true。而如果 ok 等于
阅读全文
摘要:从技术上看并发和并行 通过现实中的例子,我们已经明白了什么是并发,以及并发与并行的区别。作为一名极客,我们接下来从技术的角度来考察并发和并行。:) 假如我们正在编写一个 web 浏览器。这个 web 浏览器有各种组件。其中两个分别是 web 页面的渲染区和从网上下载文件的下载器。假设我们已经构建好了
阅读全文
摘要:结构体相等性(Structs Equality) 结构体是值类型。如果它的每一个字段都是可比较的,则该结构体也是可比较的。如果两个结构体变量的对应字段相等,则这两个变量也是相等的。 package main import ( "fmt" ) type name struct { firstName
阅读全文
摘要:1. 数组和切片 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(译者注:当然,如果是 interface{} 类型数组,可以包含任意类型) 数组的声明1 一个数组的表示形式为 [n]T。n 表示数组
阅读全文
摘要:Go 语言运算符 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有: l 算术运算符 l 关系运算符 l 逻辑运算符 l 位运算符 l 赋值运算符 l 其他运算符 算术运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加
阅读全文
摘要:这是我们 Golang 系列教程的第一个教程。 1. GO介绍与安装 Golang 是什么 Go 亦称为 Golang(译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展
阅读全文
摘要:1 题目(单选题) 如下Go语言程序的输出结果是() package main import "fmt" func f1(name string) string { fmt.Println("in f1", name) return name } func f2(name string) strin
阅读全文
摘要:原生的golang中,函数定义不支持默认参数。但是在实际开发过程中,经常会有些参数用户可以不关心或者可以根据实际情况去定制实现,这个时候需要使用到默认参数,在C++中,函数的定义和实现本来就支持默认参数,如果需要在golang中实现默认参数,可以参考一下做法: package main import
阅读全文
摘要:Example: mkdir $GOPATH/src/gotest/ touch go_test.go package gotest import "testing" var time string var version string func TestBuild(t *testing.T) {
阅读全文
摘要:内存泄漏 是一种即使当某块内存不再使用之后仍然没有被释放而产生的 bug。通常来说,它们是非常明显的,高度可见的,这使得它们成为学习程序调试的最佳选择。Go 是一门特别适合识别定位内存泄漏的语言,因为它有一套强大的工具链,这套工具链配备了非常强大的工具(pprof),它可以非常轻松地查明内存的使用情
阅读全文
摘要:1 属性 模式名 LDAP注入 模式ID 参考 关键词 注入,分级目录结构,数据查询 STRIDE 信息泄露,篡改,权限提升 分类 Web攻击方法 [ 回目录 ]2 概述 攻击模式介绍 LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种
阅读全文

浙公网安备 33010602011771号