随笔分类 -  Golang

摘要:一、channel使用存在的不方便地方 1、在不改变channel自身状态的情况下,无法获知一个channnel是否关闭。 2、关闭一个已经关闭的channel,会导致panic。因此,如果关闭channel的一方在不知道channel是否关闭状态时就去贸然关闭channel是件很危险的事。 3、向 阅读全文
posted @ 2022-12-02 14:37 李大鹅 阅读(513) 评论(0) 推荐(0) 编辑
摘要:介绍 在上一篇code-generator简单介绍中重点介绍了如何使用code-generator来自动生成代码,通过自动生成的代码可以帮助我们像访问k8s内置资源那样来操作我们的CRD,其实就是帮助我们生成ClientSet、Informer、Lister等工具包。 但是我们需要自己定义types 阅读全文
posted @ 2022-05-12 11:11 李大鹅 阅读(1241) 评论(0) 推荐(1) 编辑
摘要:Informer架构以及简单使用 介绍 我们知道可以使用 Clientset 来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断执行 List() 操作?这显然是不合理的,实际上除了常用的 CRUD 操作之外,我们还可以进行 Watch 操作,可以监 阅读全文
posted @ 2022-05-05 21:16 李大鹅 阅读(1172) 评论(0) 推荐(0) 编辑
摘要:一、前言 go1.18版本已经发布有几天了, 随着1.18的发布,大家呼吁已久的泛型也与大家正式见面了。趁着这节假日之际,学习整理范型的用法。 在我们以往中,如果要声明一个带参数的函数,这个函数的参数类型可以是任意类型,我们要怎么做呢?我们肯定想到的是interface{}。 在go中,any表示泛 阅读全文
posted @ 2022-04-04 22:36 李大鹅 阅读(41) 评论(0) 推荐(0) 编辑
摘要:原文出处:《Go 语言编程之旅》第四章4.1节 基于TCP的聊天室 1、服务端 新用户到来,生成一个User的实例,代表该用户。 type User struct{ ID int // 用户的唯一标识,通过GenUserID 函数生成 Addr string // 用户的IP地址和端口 EnterA 阅读全文
posted @ 2021-04-16 13:46 李大鹅 阅读(591) 评论(2) 推荐(0) 编辑
摘要:递归 1、递归的概念 简单说,递归就是函数/方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 2、简单案例 2.1、分析下面代码的输出 func test(n int){ if n > 2{ n-- test(n) } fmt.println(n) 阅读全文
posted @ 2021-04-06 14:20 李大鹅 阅读(110) 评论(0) 推荐(0) 编辑
摘要:栈 栈是一个先入后出的有序列表,栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表,允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。 最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 阅读全文
posted @ 2021-04-06 09:41 李大鹅 阅读(86) 评论(0) 推荐(0) 编辑
摘要:Go标准库的Cond Go 标准库提供 Cond 原语的目的是,为等待 / 通知场景下的并发问题提供支持。Cond 通常应用于等待某个条件的一组 goroutine,等条件变为 true 的时候,其中一个 goroutine 或者所有的 goroutine 都会被唤醒执行。 Cond 是和某个条件相 阅读全文
posted @ 2021-03-01 15:23 李大鹅 阅读(653) 评论(0) 推荐(0) 编辑
摘要:排序 冒泡排序 func BubbleSort(s []int)[]int{ for i := 0; i < len(s); i ++ { for j := i + 1; j < len(s); j ++{ if s[i] > s[j]{ s[i],s[j] = s[j],s[i] } } } re 阅读全文
posted @ 2021-03-01 13:56 李大鹅 阅读(76) 评论(0) 推荐(0) 编辑
摘要:链表 单向链表 定义一个HeroNode // 定义一个HeroNode type HeroNode1 struct{ no int name string nickname string next *HeroNode } 给链表添加一个节点 方式一:直接在链表最后加入 func InsertHer 阅读全文
posted @ 2021-03-01 10:40 李大鹅 阅读(66) 评论(0) 推荐(0) 编辑
摘要:队列 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则,即先存入队列的数据,要先取出,后存入的要后取出。 数组模拟队列 队列本身是有序列表,因为队列的输出,输入是分别从前后端来处理的,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而 阅读全文
posted @ 2021-02-26 15:41 李大鹅 阅读(62) 评论(0) 推荐(0) 编辑
摘要:##RPC 一、简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 ; 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额 外地为这个交互作用编程 ; 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方 法调用 ; 阅读全文
posted @ 2021-02-16 23:34 李大鹅 阅读(520) 评论(0) 推荐(0) 编辑
摘要:###FastDFS ####1、介绍 FastDFS是基于http协议的分布式文件系统,其设计理念是一切从简。主要解决了海量数据存储的问题,特别适合系统中的中小文件的存储和在线服务。中小文件的范围大致为4KB-500MB之间。 ####2、 FastDFS的组件以及工作原理 在FastDFS分布式 阅读全文
posted @ 2020-12-07 12:04 李大鹅 阅读(906) 评论(0) 推荐(0) 编辑
摘要:GoWeb服务器的创建 1、Web工作原理 2、GoWeb服务器的创建 Go提供了一系列用于创建Web服务器的标准库,而且通过Go创建一个服务器的步骤非常简单,只要通过net/http包调用ListenAndServer函数并传入网络地址以及负责处理请求的处理器(handler)作为参数就可以,如果 阅读全文
posted @ 2020-10-11 19:52 李大鹅 阅读(617) 评论(0) 推荐(0) 编辑
摘要:基本的序列化 首先我们来看看Go语言中json.Marshal()(序列化)与json.Unmarshal(反序列化)的基本用法。 package main import ( "encoding/json" "fmt" ) type Person struct{ Name string Age in 阅读全文
posted @ 2020-10-11 15:52 李大鹅 阅读(176) 评论(0) 推荐(0) 编辑
摘要:单元测试 Go语言中的测试依赖go test命令,编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法,规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序,在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go bui 阅读全文
posted @ 2020-10-09 21:46 李大鹅 阅读(384) 评论(1) 推荐(1) 编辑
摘要:文件操作 读取文件的内容并显示在终端(带缓冲区的方式),使用os.Open,file.Close,bufio.NewReader(),reader.ReadString函数和方法。 package main import ( "bufio" "fmt" "io" "os" ) func main() 阅读全文
posted @ 2020-10-09 21:43 李大鹅 阅读(230) 评论(0) 推荐(0) 编辑
摘要:稀疏数组 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法: 记录数组一共有几行几列,有多少个不同的数值; 把具有不同值的元素的行数列数及值记录在一个小规模的数组中,从而缩小程序规模。 实际问题 如下面的二维数组,我们可以假设成是一个棋 阅读全文
posted @ 2020-10-09 20:31 李大鹅 阅读(279) 评论(0) 推荐(0) 编辑
摘要:并发与并行 并发:同一时间段内,执行多个任务(你在用微信和两个女朋友聊天) 并行:同一时刻,执行多个任务(你和你朋友都在用微信和女朋友聊天) Go语言中的并发通过goroutine实现。goroutine类似于线程,属于用户态线程,我们可以根据需要创建成千上万个goroutine并发工作。gorou 阅读全文
posted @ 2020-05-14 16:06 李大鹅 阅读(292) 评论(0) 推荐(0) 编辑
摘要:接口 接口(interface)定义了一个对象的行为规范,之定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就 阅读全文
posted @ 2020-04-29 11:15 李大鹅 阅读(138) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示