首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏jerryteng的专栏

    学习Go语言-组织源码文件

    go命令文件 命令代码文件,这是程序的运行入口,是每个可独立运行的程序必须拥有的。 如果一个源码文件声明属于 main 包,并且包含一个无参数声明且无结果声明的 main 函数,那么就是命令源码文件 go的命令行功能一般都会结合flag包作为参数输入,flag包可以解析多种类型的数据, 测试代码文件 测试代码分为 单元测试和 性能测试, 含有单元测试代码的go文件必须以_test.go结尾,_test.go前面的部分最好是被测试的方法所在go文件文件名,比如文件是xxx.go,那么测试文件是 第一条规则,同目录下的源码文件的代码包声明语句要一致。 如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于main包。 第二条规则,源码文件声明的代码包的名称可以与其所在的目录的名称不同。

    1.1K90发布于 2018-09-29
  • 来自专栏个人开发

    go语言学习(三):源码文件

    go语言的源码文件包括命令源码文件、库源码文件和测试源码文件。 测试源码文件主要存放测试相关的源码文件,包括功能测试、性能测试、程序运行示例等。 如上代码,我们在IDE中执行run操作,或者在命令行执行go run Demo1.go ? 2)命令源码文件怎么接受参数呢? \n", name)} 2.库源码文件源码文件是不能直接运行的文件,只能被其他程序使用。go语言中,如果当前文件要使用某个文件中声明的函数,需要跟这个文件在同一个包下面。 要依赖Demo6.go文件,需要先安装一下lib包,go install demo2\lib 这时候就会生成一个归档文件,接着编译和运行 ?

    63620发布于 2020-08-20
  • 来自专栏四颗咖啡豆

    k8s-client-go源码剖析(三)

    云原生社区活动---Kubernetes源码剖析第一期第三周作业, 也是最后一周作业. 本文主要讲述下client-go中workqueue, 看一下client-go的一个整体数据走向.如下图: [v2-4bf49a913751912a8d8fc6f0a5779ec5_b.jpeg] 而 --- 基本队列 延迟队列 限速队列 其中延迟队列是基于基本队列实现的,而限流队列基于延迟队列实现 基本队列 -------- 看一下基本队列的接口 // client-go源码路径util/workqueue (limiters ...RateLimiter) RateLimiter { return &MaxOfRateLimiter{limiters: limiters} } 总结 ------ 在k8s-client-go源码中可以看到,大量的接口组合运用,将各种功能拆分成各个细小的库,是一种非常值得学习的代码风格以及思路。

    84620发布于 2021-02-03
  • 来自专栏四颗咖啡豆

    k8s-client-go源码剖析(一)

    首发于2020年8月份,这里重新做一次发布 ----- 简介:云原生社区活动---Kubernetes源码剖析第一期 有幸参与云原生社区举办的Kubernetes源码剖析活动,活动主要以书籍《Kubernetes ,课题有两个: Client-go源码结构 几种Client客户端对象学习 Client-go源码目录结构 ------------------- root@normal11 k8s-client-go 代码库已经集成到了Kubernetes源码中,所以书本中展示的内容是在Kubernetes源码源码结构,而这里展示的是Client-go代码库中原始的内容,所以多了一些源码之外的内容,例如README /v1" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" /v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) func main() { config, err :=

    1.1K00发布于 2021-01-30
  • 来自专栏四颗咖啡豆

    k8s-client-go源码剖析(二)

    简介:云原生社区活动---Kubernetes源码剖析第一期第二周 本周是K8S源码研习社第一期第二周,学习内容是学习Informer机制,本文以这个课题进行展开。 源码位置是 tools/cache/reflector.go // Ruvn starts a watch and handles watch events. /api/apps/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/informers" "k8s.io/client-go /kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools 前置阅读: ---- k8s-client-go源码剖析(一) 始发于 四颗咖啡豆,转载请声明出处. 关注公粽号->[四颗咖啡豆] 获取最新内容

    63530发布于 2021-02-02
  • 来自专栏想法独特的Dev+Ops

    k8s client-go 的 DeltaFIFO 源码分析

    本文阅读代码链接:https://github.com/kubernetes/client-go/tree/release-1.30下面代码全部在 tools/cache/delta_fifo.go 文件中 DeltaFIFO 的基本概念DeltaFIFO 是 client-go 中的核心队列组件,作为 Reflector 和后续消费者之间的桥梁,负责存储资源对象的变更事件并确保这些事件按顺序被处理。

    40900编辑于 2025-03-11
  • 来自专栏想法独特的Dev+Ops

    k8s client-go 的 Reflector 源码分析

    Reflector 是 Kubernetes client-go 中的一个核心组件,负责从 API Server 获取资源对象并将其同步到本地缓存中。 本文将解析 Reflector 的实现原理及源码细节。本文阅读代码链接:https://github.com/kubernetes/client-go/tree/release-1.30一. 、更新和删除的文件持续监听资源的创建、更新和删除事件二. Reflector 的结构Reflector 的核心结构定义在 tools/cache/reflector.go 文件中:type Reflector struct { // 反射器名称,默认为 文件 internal store with the collected items and// reuses the current watch requests for getting further events.源码注释描述了两种使用场景

    41600编辑于 2025-03-10
  • 来自专栏想法独特的Dev+Ops

    k8s client-go 的 workqueue 源码分析

    本文阅读代码链接:https://github.com/kubernetes/client-go/tree/release-1.30下面代码全部在 util/workqueue 文件中:一. workqueue 基本概念在 client-go 的 util/workqueue 包中,主要有三个队列:普通队列、延时队列和限速队列。 q.rateLimiter.NumRequeues(item)}5.3 限速器实现Kubernetes 提供了多种限速器实现,以适应不同的场景限速器在util/workqueue/default_rate_limiters.go

    32900编辑于 2025-03-18
  • 来自专栏后端云

    client-go 源码分析(8) - workerqueue之延时队列DelayingQueue

    struct{}), waitingForAddCh: make(chan *waitFor, 1000), metrics: newRetryMetrics(name), } go

    65320编辑于 2023-02-10
  • 来自专栏TA码字

    K8s源码分析(22)-client go组件之clientset

    资源操作对象工厂的工厂 clientset 就是资源操作对象工厂的工厂,其图解和相关源码如下: // staging/src/k8s.io/client-go/kubernetes/clientset.go Clientset对象的实例化 clientset 对象的创建相关源码如下: // staging/src/k8s.io/client-go/kubernetes/clientset.go func NewForConfig 目前我们先写到这里,在下一篇文章中我们继续介绍 client go 中的相关存储组件。

    75020编辑于 2022-10-30
  • 来自专栏TA码字

    K8s源码分析(19)-client go组件之RESTClient

    接口定义 staging/src/k8s.io/client-go/rest/client.go 源码文件中 Interface 定义了接口, 其相关的图解和源码如下: // staging/src/ k8s.io/client-go/rest/client.go type Interface interface { GetRateLimiter() flowcontrol.RateLimiter ClientNegotiator 结构体 该结构体主要封装了资源的序列化和反序列化的功能,其图解和相关源码如下: // k8s.io/apimachinery/pkg/runtime/negotiate.go 图解和源码如下: // staging/src/k8s.io/client-go/rest/client.go type ClientContentConfig struct { AcceptContentTypes RESTClient 结构体 该结构体主要实现了开头介绍的接口,用来生成 Request 对象,图解和源码如下: // staging/src/k8s.io/client-go/rest/client.go

    1.1K10编辑于 2022-05-30
  • 来自专栏Golang语言社区

    Go源码编译

    Go is compiled with … Go! ? using /usr/local/Cellar/go/1.10.3/libexec. 5 Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1 . 6 Building Go toolchain2 using go_bootstrap and Go toolchain1. 7 Building Go toolchain3 using go_bootstrap and Go toolchain2. 8 Building packages and commands for darwin/amd64. 9 --- 10 Installed Go for darwin 4 │ ├── download 5 │ │ └── github.com 6 │ │ └── pkg 7 │ │ └── errors 8

    90510发布于 2018-07-26
  • 来自专栏John Wong's Blog

    k8s使用的web框架:go-restful 源码分析

    k8s最核心的组件kube-apiserver使用到了该框架,该框架的代码比较精简,这里做个简单的功能介绍,然后分析相关源码go-restful基于golang官方的net/http实现,在深入学习之前,建议先看一下本人之前整理的关于官方http源码分析的文章 go-restful定义了三个重要的数据结构: Router:表示一条路由 想要揭开答案,让我们一起分析下源码吧。在这之前,还是建议先看下本人之前整理的关于官方http源码分析的文章,因为go-restful会基于官方提供的http包去实现功能 下图是整理的源码核心逻辑图。 即http.ListenAndServe(":8080", nil) 总结 go-restful并不是一个热度很高的golang web框架,但是k8s中用到了它,本篇文章通过源码分析对go-restful 内部更深入的功能我们没有继续研究了,只要达到能看懂k8s kube-apiserver组件源码的目的就行。

    67740编辑于 2021-12-23
  • 来自专栏kinnylee钻研技术

    k8s使用的web框架:go-restful 源码分析

    k8s最核心的组件kube-apiserver使用到了该框架,该框架的代码比较精简,这里做个简单的功能介绍,然后分析相关源码go-restful基于golang官方的net/http实现,在深入学习之前,建议先看一下本人之前整理的关于官方http源码分析的文章 go-restful定义了三个重要的数据结构: Router:表示一条路由 想要揭开答案,让我们一起分析下源码吧。在这之前,还是建议先看下本人之前整理的关于官方http源码分析的文章,因为go-restful会基于官方提供的http包去实现功能 下图是整理的源码核心逻辑图。 即http.ListenAndServe(":8080", nil) 总结 go-restful并不是一个热度很高的golang web框架,但是k8s中用到了它,本篇文章通过源码分析对go-restful 内部更深入的功能我们没有继续研究了,只要达到能看懂k8s kube-apiserver组件源码的目的就行。

    2.3K30编辑于 2022-03-07
  • 来自专栏kinnylee钻研技术

    k8s使用的web框架:go-restful 源码分析

    k8s最核心的组件kube-apiserver使用到了该框架,该框架的代码比较精简,这里做个简单的功能介绍,然后分析相关源码go-restful基于golang官方的net/http实现,在深入学习之前,建议先看一下本人之前整理的关于官方http源码分析的文章 go-restful定义了三个重要的数据结构: Router:表示一条路由 想要揭开答案,让我们一起分析下源码吧。在这之前,还是建议先看下本人之前整理的关于官方http源码分析的文章,因为go-restful会基于官方提供的http包去实现功能 下图是整理的源码核心逻辑图。 即http.ListenAndServe(":8080", nil) 总结 go-restful并不是一个热度很高的golang web框架,但是k8s中用到了它,本篇文章通过源码分析对go-restful 内部更深入的功能我们没有继续研究了,只要达到能看懂k8s kube-apiserver组件源码的目的就行。

    1.9K72发布于 2020-10-15
  • 来自专栏码神路漫漫

    Go 回答之如何阅读 Go 源码

    我的知乎回答,问题是关于如何阅读 Go 源码。地址。胡扯了些自己的想法。 Go源码在安装包的 src/ 目录下。怎么看它的源码呢?直接看吧!没人教的情况下,只能自己撸了。 补充: 2019年88日 凌晨 01:13, 大概花了两个多星期的零碎时间,简单撸完了一版。总的感觉,还是有很多地方理解不够,希望后面可以按前面说的思路,按包逐步进行源码解剖。 要阅读这段源码,同样需要先了解什么是 Mach-O,它是 Mach object 文件格式的缩写,用于可执行文件、目标代码、内核转储的文件格式。 另外两个包 unicode/utf8 和 unicode/utf16 可用于 unicode (rune) 与 utf8 (byte)、unicode (rune) 与 utf16 (int16) 之间的转化 相关阅读: go package 之 unicode Unicode 码点、UTF-8/16编码 unsafe Go 语言限制了一些可能导致程序运行出错的用法,通过编译器就可以检查出这些问题。

    2.7K41发布于 2019-08-29
  • 来自专栏sktj

    Go文件

    image.png os.Open os.Stderr err!=nil image.png

    1.6K20发布于 2019-07-17
  • 来自专栏用户7873631的专栏

    go上传文件

    helloworld/index.go: package main import ( "fmt" "io" "net/http" "os" ) //写入响应.读取请求 func uploadFile 文件信息 可能发生的错误 if err! DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-<em>8</em>"> <meta name="viewport" content="width=device-width submit"> </form> </body> </html> 目录结构: 运行: http://localhost:8080/ cmd: F:\gorun\src\HelloWorld>go run index.go 就行了

    28410编辑于 2024-03-14
  • 来自专栏Golang语言社区

    go rpc 源码分析

    1.概述 go 源码中带了rpc框架,以相对精简的当时方式实现了rpc功能,目前源码中的rpc官方已经宣布不再添加新功能,并推荐使用grpc. 作为go标准库中rpc框架,还是有很多地方值得借鉴及学习,这里将从源码角度分析go原生rpc框架,以及分享一些在使用过程中遇到的坑. 2.server端 server端主要分为两个步骤,首先进行方法注册 = nil { ... } //调用 go service.call(server, sending, mtype, req, argv 异步调用超时后会内存泄漏 基于异步调用加channel实现超时功能也会存在泄漏问题,原因是client的请求会存在map结构中,Go函数退出并不会清理map的内容,因此如果server端不返回的话,map 总结 总的来说,go原生rpc算是个基础版本的rpc,代码精简,可扩展性高,但是只是实现了rpc最基本的网络通讯,像超时熔断,链接管理(保活与重连),服务注册发现,还是欠缺的,因此还是达不到生产环境开箱即用

    1.1K40发布于 2018-07-26
  • 来自专栏BPM云

    源码方式安装go

    参考官方文档: https://golang.org/doc/install/source#environment 1) 下载 go1.4-bootstrap-20171003.tar.gz (注,其他版本 1.4编译可能会有问题) 2) 编译1.4 $ cd /path/to/go1.4/src $ GOOS=darwin GOARCH=amd64 GOROOT_BOOTSTRAP=/path/to/go1.4 /make.bash 3) 编译指定版本go 下载: $ git clone https://go.googlesource.com/go $ cd go $ git checkout go1.11.4 编译: $ cd /path/to/go1.11.4 $ .

    85820发布于 2019-03-13
领券