Go语言中文网 为您找到相关结果 3465

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 co...阅读全文

博文 2020-06-15 08:32:39 Python编程时光

DjanFey的基础库解读--bufio包(scan.go)

package my_bufio import ( "bytes" "errors" "io" "unicode/utf8" ) // Scanner为读取数据操作(例如文本用换行符分隔行的文件)提供了一个便利的接口 // 成功调用Scan方法会逐条扫描文件的'token',跳过'token'之间的字节 // token的规范是由SplitFunc类型的分割函数定义的 // 默认的分割函数是把输入按行终止符分割成多行, 去掉了行终止符 // 本包中定义了各种分割函数,用来按行、字节、UTF-8编码的字符以及空格来扫描一个文件 // 客户端也可以提供一个自定义的分割函数来代替 // // 当在EOF、第一个I/O错误、或者一个'token'大到超过缓冲区时,扫描动作就会不可逆转地停止 // 当...阅读全文

博文 2020-03-19 13:52:30 DjanFy

Golang标准库——index/suffixarray

suffixarray suffixarrayb包通过使用内存中的后缀树实现了对数级时间消耗的子字符串搜索。 用法举例: // 创建数据的索引 index := suffixarray.New(data) // 查找切片s offsets1 := index.Lookup(s, -1) // 返回data中所有s出现的位置 offsets2 := index.Lookup(s, 3) // 返回data中最多3个所有s出现的位置 type Index type Index struct { // 内含隐藏或非导出字段 } Index类型实现了用于快速子字符串搜索的后缀数组。 func New func New(data []byte) *Index 使用给出的[]byte数据生成一个Inde...阅读全文

博文 2020-10-13 23:32:38 DevilRoshan

彻底搞懂 etcd 系列文章(二):etcd 的多种安装姿势

0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件。 《彻底搞懂 etcd 系列文章》将会从 etcd 的基本功能实践、API 接口、实现原理、源码分析,以及实现中的踩坑经验等几方面具体展开介绍 etcd。预计会有 20 篇左右的文章,笔者将会每周持续更新,欢迎关注。 1 etcd 安装与使用 在上一篇主要介绍了 etcd 的相关概念和使用场景,本篇主要介绍 etcd 的多种安装使用方式。 1.1 etcd 概念词汇表 在开始 etcd 的安装使用之前,我们先了解下 etcd 的概念词汇表,以便于下文的理解。 Raft:etcd所采用的保证分布...阅读全文

博文 2020-05-27 22:32:44 aoho

Kubernetes+Dashboard安装部署

部署安装:1)原密码编译安装,golang编译环境2)二进制安装 文档 全程手动,ansible版,saltstak版3)kubeadm 安装 网络要求. 1.0~1.144)minikube 开发者学习5)yum 安装 1.5.2本文采用kubeadm 安装、一、(在 master 节点和 node 节点都要执行)Docker安装;1. 安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm22. 设置Docker源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3. 安装Docker卸载旧版本# ...阅读全文

博文 2020-09-22 19:33:04 SmallTeena_2d0f

Golang标准库——html

html html包提供了用于转义和解转义HTML文本的函数。 func EscapeString func EscapeString(s string) string EscapeString函数将特定的一些字符转为逸码后的字符实体,如"<"变成"<"。 它只会修改五个字符:<、>、&、'、"。 UnescapeString(EscapeString(s)) == s总是成立,但是两个函数顺序反过来则不一定成立。 func UnescapeString func UnescapeString(s string) string UnescapeString函数将逸码的字符实体如"<"修改为原字符"<"。它会解码一个很大范围内的字符实体,远比函数EscapeString转码范围大得多。例如"á...阅读全文

博文 2020-10-12 00:32:38 DevilRoshan

使用go/scanner库来查找golang标准库源码中最常用的标识符

在YouTube上又看了Francesc Campoy大神的视频。这一期他主要讲了go/scanner库的用法。那么什么是go/scanner呢? 官方的定义是: Package scanner implements a scanner for Go source text. It takes a []byte as source which can then be tokenized through repeated calls to the Scan method. 翻译过来就是: scanner包实现了一个对于go源码文本的扫描器,它把[]byte作为一个源,通过重复的调用Scan方法来进行标记 以下是官方给的例子: package main import ( "fmt" "go/sc...阅读全文

博文 2020-03-20 05:32:43 zooeymoon

golang环境准备

安装 下载golang安装包 # windows https://studygolang.com/dl/golang/go1.15.1.windows-amd64.msi # linux https://studygolang.com/dl/golang/go1.15.1.linux-amd64.tar.gz 设置环境变量 echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile && source ~/.profile 检测安装结果 go version 代理设置 使用 go env 设置代理 go env -w GO111MODULE="on" go env -w GOPROXY="http://192.168.1.200:80,d...阅读全文

博文 2020-09-10 13:32:40 信仰草

Golang标准库——compress/gzip

gzip gzip包实现了gzip格式压缩文件的读写,参见RFC 1952。 Constants const ( NoCompression = flate.NoCompression BestSpeed = flate.BestSpeed BestCompression = flate.BestCompression DefaultCompression = flate.DefaultCompression ) 这些常量都是拷贝自flate包,因此导入"compress/gzip"后,就不必再导入"compress/flate"了。 Variables var ( // 当读取的gzip数据的校验和错误时,会返回ErrChecksum ErrChecksum = errors.New("g...阅读全文

博文 2020-09-19 00:32:39 DevilRoshan

Golang标准库——crypto(1)

aes cipher des dsa ecdsa elliptic crypto crypto包搜集了常用的密码(算法)常量。 type PublicKey type PublicKey interface{} 代表一个使用未指定算法的公钥。 type PrivateKey type PrivateKey interface{} 代表一个使用未指定算法的私钥。 type Hash type Hash uint Hash用来识别/标识另一个包里实现的加密函数。 const ( MD4 Hash = 1 + iota // 导入code.google.com/p/go.crypto/md4 MD5 // 导入crypto/md5 SHA1 // 导入crypto/sha1 SHA224 // 导...阅读全文

博文 2020-09-21 21:32:41 DevilRoshan

Is anyone trying Upspin?

<p>Rob Pike talked about Upspin at Gopherfest recently. I was wondering if anyone (besides him) has actually tried it. I wanted to share some personal data with a friend and I was thinking of setting this up. <a href="https://upspin.io/">https://upspin.io/</a></p> <hr/>**评论:**<br/><br/>smcquay: <...阅读全文

资源 2017-05-21 00:00:03 polaris

go——字节

内容 1 byte/rune 2 bit基本操作 3 字节序 4 一个bit使用例子——bitmap 一 byte/rune 编码: 编码就是人类语言字符和存储中计算机中的字节的一种映射表,最开始是用ascii编码表就可以表示完所有的英文字符,但是没法表示其他语言字符,所以诞生了unicode、utf-8等不同的编码表;go中用byte和rune类型来代表ascii字符和unicode字符; byte和uint8是等价的,通常处理ascii字符,因为只用8位来存储,实际只可以存储256个字符,所以有了unicode、utf-8等编码来处理其他复杂字符 go中的rune是int32的一个别名,占用4个字节存储,一个rune就是一个unicode字符,当代码中要处理中文、日文等字符时,通常使用r...阅读全文

博文 2020-10-05 10:32:40 酷酷码农

Golang标准库——compress/bzip2

bzip2 bzip2包实现bzip2的解压缩。提供了一个对bzip2压缩包进行读取的操作,但是并没有提供进行bzip2压缩操作。 type StructuralError type StructuralError string 当bzip2数据的语法不合法时,会返回本类型错误。 func (StructuralError) Error func (s StructuralError) Error() string func NewReader func NewReader(r io.Reader) io.Reader NewReader返回一个从r读取bzip2压缩数据并解压缩后返回给调用者的io.Reader。 func main() { fz, err := os.Open("test...阅读全文

博文 2020-09-17 22:32:39 DevilRoshan

go shell执行优化版+ 输出结果为table格式

go shell执行优化版+ 输出结果为table格式 package main import ( "fmt" "github.com/modood/table" "golang.org/x/crypto/ssh" "io/ioutil" "net" "time" ) func connect(user, password, host, key string, port int, cipherList []string) (*ssh.Session, error) { var ( auth []ssh.AuthMethod addr string clientConfig *ssh.ClientConfig client *ssh.Client config ssh.Config sessi...阅读全文

博文 2020-08-19 23:33:19 295631788

Golang文件操作

目录相关 //目录创建 Package os func Mkdir(namestring, permFileMode)error { //仅创建一层目录 // Mkdir creates a new directory with the specified name and permission // bits (before umask). // If there is an error, it will be of type *PathError. func MkdirAll(pathstring, permFileMode)error { //创建多级目录 // Fast path: if we can tell whether path is a directory or file,...阅读全文

博文 2020-04-06 21:32:54 标准宅腐基全能选手

001_Go windows 环境搭建

Go windows 环境搭建 1、下载安装Golang Go 官网下载地址:https://golang.org/dl/ Go 官方镜像站(推荐):https://golang.google.cn/dl/ 2、验证安装成功 go version go version go1.13.8 windows/amd64 3、查看 go 环境 go env set GO111MODULE=on set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\Flj\AppData\Local\go-build set GOENV=C:\Users\Flj\AppData\Roaming\go\env set GOEXE=.exe set GOFLAGS= set G...阅读全文

博文 2020-07-27 11:32:44 付少_Flj

假期笔记

不能盲目优化 一是在追求速度的时候抓不住重点。比如在没有一个完善的测量系统不知道瓶颈在哪就开始优化,花了一个多月软件提高了半个毫秒结果发现别人一个网络改动一下省10毫秒。小公司在进行大优化之前不估算投入产出比,耗费大量软硬件开发资源做对策略影响不大的改进。比如没弄清楚情况自己策略情况就强行上FPGA团队的。 虚拟语气 couldn't agree more,表示十分同意。 can't agree anymore表示十分同意是错误的,字面意思是,不能再继续同意下去了。 并发编程模型 共享数据,加锁 如c和java的并发编程。使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争(data race)。处理各种锁的问题是让人十分头痛的一件事。 消息传递 消息传递机制最大的优点就是不会产生...阅读全文

博文 2020-02-27 07:32:41 sunboximeng

图解kubernetes命令执行核心实现

K8s中的命令执行由apiserver、kubelet、cri、docker等组件共同完成, 其中最复杂的就是协议切换以及各种流拷贝相关,让我们一起来看下关键实现,虽然代码比较多,但是不会开发应该也能看懂,祝你好运 1. 基础概念 K8s中的命令执行中有很多协议相关的处理, 我们先一起看下这些协议处理相关的基础概念 1.1 Http协议中的Connection与Upgrade HTTP/1.1中允许在同一个链接上通过Header头中的Connection配合Upgrade来实现协议的转换,简单来说就是允许在通过HTTP建立的链接之上使用其他的协议来进行通信,这也是k8s中命令中实现协议升级的关键 1.2 Http协议中的101状态码 在HTTP协议中除了我们常见的HTTP1.1,还支持web...阅读全文

博文 2020-04-08 14:33:17 仔仔

golang httpserver 源码分析

1 http server端package main import ( "log" "net/http" "time" ) func sayHello(w http.ResponseWriter,r *http.Request){ w.Write([]byte("hello world")) } var addr = "0.0.0.0:9090" func main() { // 创建路由器 mux := http.NewServeMux() // 注册路由 mux.HandleFunc("/test",sayHello) server := &http.Server{ Addr: addr, WriteTimeout: time.Second * 3, Handler: mux, } lo...阅读全文

博文 2020-06-15 01:33:50 筑梦攻城狮

GoLang-Scheduling In Go : Part I - OS Scheduler

Scheduling In Go系列文章 本文主要针对Go语言中的调度。 目录 Part I - OS Scheduler Part II - Go Scheduler Part III - Concurrency Part I - OS Scheduler 第一部分,将提供对Go中调度器背后的机制和语义的理解。 Introduction Go调度的设计与实现提供了高效率和高性能的多线程,然而如果你的Go程序多线程设计不支持Go调度的工作,那这也将无济于事。本文主要集中于调度程序的高级机制和语义,展现出多线程工作的一些细节,从而帮助你更好的做出工程决策。 OS Scheduler 操作系统调度器是软件非常重要的部分。我们的程序在运行运行的时候只是一串需要被顺序执行的指令,为了执行这些指令,操...阅读全文

博文 2020-03-16 09:32:57 帘外五更风

Golang标准库——compress/flate

flate flate包实现了deflate压缩数据格式,参见RFC 1951。gzip包和zlib包实现了对基于deflate的文件格式的访问。 Constants const ( NoCompression = 0 BestSpeed = 1 BestCompression = 9 DefaultCompression = -1 ) type CorruptInputError type CorruptInputError int64 CorruptInputError表示在输入的指定偏移量位置存在损坏。 func (CorruptInputError) Error func (e CorruptInputError) Error() string type InternalError ...阅读全文

博文 2020-09-19 00:32:39 DevilRoshan

Golang bytes.buffer详解

Buffer 介绍 Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建缓冲器 func main() { buf1 := bytes.NewBufferString("hello") buf2...阅读全文

博文 2020-06-24 17:34:33 Gundy

golang post模拟客户端多文件上传以及处理

为了模拟客户端和服务器端,我这儿开了两个进程,进程A(监听地址:http://192.168.50.250:8080 路由/objects)进程B(监听地址:http://192.168.50.250:8081 路由:/objetcs)方法都是post。进程A是监听客户上传的文件,然后模拟http clien上传给进程B。在B中将文件存储或者将内容打印。 进程A post /ojects: func PostFile(c *gin.Context){ var b bytes.Buffer w := multipart.NewWriter(&b) c.Request.ParseMultipartForm(100000) multiPartform ,_:= c.MultipartForm() ...阅读全文

博文 2019-08-15 18:57:23 我的饭卡呢

web3.js支持SimpleChain跨链调用

SimpleChain的跨链协议已经对外开放很久了,很多应用也已经慢慢支持Simplechain的跨链。最近社区开发者web3.js中集成了Simplechain的跨链接口,开发者只需用`npm`安装包文件。参考原生 [RPC接口](https://simplechainfans.github.io/document/en/23_crossChainApi.html)的参数,就可以快速上手接入Simplechain跨链。下面是详细流程; ### 查看RPC接口 首先我们需要熟悉Simplechain的跨链 [接口](https://simplechainfans.github.io/document/en/23_crossChainApi.html),熟悉了接口以后我们就可以直接上手操作。 ...阅读全文

博文 2020-07-06 17:40:45 SimpleChain

[Golang实现JVM第六篇]实现Native方法

首先需要明确几个问题。 没有Native方法JVM什么也做不了 可能很多人认为native方法是Java里的禁区,使用本地方法会牺牲可移植性,而且还会有额外开销,貌似几乎没有程序员会在实际项目中写本地方法,这玩意就是个很冷门的东西。其实这种看法是错误的,哪怕一个Hello Word程序都是要严重依赖于本地方法的。在JDK中,你会发现任何涉及到I/O、线程操作的类,层层追踪源码后最终都能找到一个对应的native调用,真正把Hello World打印到控制台的正是这些native方法。而用于启动线程的Thread.start()方法,最终也是调用了一个叫native void start0()的本地方法。因为任何对硬件的操作都必须通过操作系统提供的系统调用(system call)来实现,JV...阅读全文

博文 2020-08-24 17:32:41 司青玄

在开启go module情况下,go.etcd.io/etcd/clientv3 报错的解决方法

本人在编译rpcx库里的client例子时,发生了如下etcd版本不兼容的问题:经过研究发现,google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的,也就是说要把这个改成 1.26 版本的就可以了。具体操作方法是在 go.mod 里加上如下内容:replace google.golang.org/grpc => google.golang.org/grpc v1.26.0然后,重新go build,问题解决了...阅读全文

博文 2020-10-19 01:32:37 simamengde

Golang标准库——regexp

regexp regexp包实现了正则表达式搜索。 正则表达式采用RE2语法(除了\c、\C),和Perl、Python等语言的正则基本一致。 参见http://code.google.com/p/re2/wiki/Syntax。 Syntax 本包采用的正则表达式语法,默认采用perl标志。某些语法可以通过切换解析时的标志来关闭。 单字符: . 任意字符(标志s==true时还包括换行符) [xyz] 字符族 [^xyz] 反向字符族 \d Perl预定义字符族 \D 反向Perl预定义字符族 [:alpha:] ASCII字符族 [:^alpha:] 反向ASCII字符族 \pN Unicode字符族(单字符名),参见unicode包 \PN 反向Unicode字符族(单字符名) \p{...阅读全文

博文 2020-10-19 23:32:41 DevilRoshan

GeoHash

对9个base32进行排序 [wt3mf9qe, wt3mf9qg, wt3mf9qs, wt3mf9qt, wt3mf9qu, wt3mf9qv, wt3mf9r5, wt3mf9rh, wt3mf9rj] geohash base32图 image.png 对9个二进制编码进行排序 1110011001000111001101110010011011001101, 1110011001000111001101110010011011001111, 1110011001000111001101110010011011011000, 1110011001000111001101110010011011011001, 11100110010001110011011100100110110110...阅读全文

博文 2020-10-07 19:32:41 golang才是未来

Go package(2) strings 用法

go version go1.10.3Go中的字符串用法,可以在 godoc.org 上查看语法和用法。最简单的语法就是获取字符串中的子串s := "hello world" fmt.Println(s[1:3], s[0:])一:查找1、查找返回索引godoc.org上索引的方法Indexfunc Index(s, substr string) intIndex returns the index of the first instance of substr in s, or -1 if substr is not present in s.说明:返回子串substr在字符串s中第一次出现的位置如果找不到则返回-1;如果substr为空,则返回0例子1:package main impo...阅读全文

博文 2020-10-14 19:32:39 九卷

分页对齐写入文件——golang实现

将内存中的数据写入文件时,往往是有多少,就直接写入多少。当频繁的写入小批量数据,因反复系统调用导致性能较差;此外,有时要求按照一定字节对齐的方式写入文件。为了解决以上两个问题,本文实现了分页写入的方案。 1. 数据结构设计 //以页为单元写入文件,或者通过flush写入 type PageWriter struct { w io.Writer // pageOffset为当前已写入页的偏移量(相对于buff的起始地址),因有可能非完整的页已写入文件(flush方式),所以新的写入应该先补齐这非完整的部分 pageOffset int // 每页的字节数 pageBytes int // buff中等待写入的字节数,bufferedBytes = len(buf) bufferedBytes ...阅读全文

博文 2020-10-03 00:32:38 卜是

重复

工具由来 为什么要写这样的一个工具呢?这是因为我司有多个 kubernetes 集群(8+),且都是云托管服务无法接触到Apiserver配置,这就给我们带来一个痛点,开发、sre需要登录k8s dashbaord且不同部门和角色间需要不同的授权,原先都是通过 sa token 进行登录dashboard,但随着k8s集群的增长,每增加一个集群,就需要告知使用方对应dashboard访问地址以及对应的token,这不管是提供方还是使用方都让人感觉非常的痛苦。那是否有一款工具能提供统一地址统一登录多集群dashboard的方案呢?经过一番搜索后,发现并没有,市面上大多数是单集群集成 LDAP 的方案,主要是以 DEX 为主,但光单集群的统一登录授权方案就让人感觉非常的困难。难道就没有简单方便的...阅读全文

博文 2020-06-12 10:32:53 icyboy

利用Kubernetes中的leaderelection实现组件高可用

在Kubernetes中,通常kube-schduler和kube-controller-manager都是多副本进行部署的来保证高可用,而真正在工作的实例其实只有一个。这里就利用到 leaderelection 的选主机制,保证leader是处于工作状态,并且在leader挂掉之后,从其他节点选取新的leader保证组件正常工作。 不单单只是k8s中的这两个组件用到,在其他服务中也可以看到这个包的使用,比如cluster-autoscaler等都能看得到这个包的,今天就来看看这个包的使用以及它内部是如何实现的。 使用 以下是一个简单使用的例子,编译完成之后同时启动多个进程,但是只有一个进程在工作,当把leader进程kill掉之后,会重新选举出一个leader进行工作,即执行其中的 run...阅读全文

博文 2020-02-16 21:32:38 silenceper

centos安装golang

下载golang包 golang1.14 https://studygolang.com/dl cd /usr/local/src wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz tar -zxvf go1.14.1.linux-amd64.tar.gz -C /usr/local/ 设置环境变量 vim /etc/profile # 设置golang的环境变量 # 设置GO安装目录 export GOROOT=/usr/local/go # 设置gopath export GOPATH=/home/gopath # 设置gobin export GOBIN=/home/gopath/bin # 设置代理,...阅读全文

博文 2020-03-26 17:40:41 百里江山

DjanFey的基础库解读--bufio包(bufio.go)

package my_bufio import ( "bytes" "errors" "io" "unicode/utf8" ) const ( defaultBufSize = 4096 ) var ( // 非法使用UnreadByte ErrInvalidUnreadByte=errors.New("bufio: invalid use of UnreadByte") // 非法使用UnreadRune ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune") // buffer已满 ErrBufferFull = errors.New("bufio: buffer full") // count为负 E...阅读全文

博文 2020-03-14 23:41:34 DjanFy

github-webhook工具实现github自动构建

# 原理 当本地`git push origin master`向Github远程仓库提交代码时,可以通过配置github自带webhook向服务器发送请求,利用github-webhook工具在服务器端接到请求后,调用自定义shell脚本来实现自动构建 ![github-webhook](https://upload-images.jianshu.io/upload_images/13827699-49011566250e8250.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # github-webhook 文档 - 更多详情文档 [https://github.com/yezihack/github-webhook](h...阅读全文

博文 2020-04-24 15:26:39 sgfoot

http.get 解析豆瓣为空

现在豆瓣爬不了了吗? package main import ( "fmt" "io/ioutil" "net/http" ) func main() { res, err := http.Get("https://douban.com/") if nil != err { fmt.Print(err) } body, err := ioutil.ReadAll(res.Body) if nil != err { fmt.Print(err) } fmt.Print(body) fmt.Print(string(body)) } ![image.png](https://static.studygolang.com/200724/091a65d42f456951ee380ae2ff3de7e...阅读全文

博文 2020-07-24 15:27:30 jenosn

在MAC下安装pip,并关联到相应的python版本

在MAC下安装pip,并关联到相应的python版本 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 不多说了,说就是电脑重装了,全部重新来了 下载pip 首先检查一下是否有pip pip --version 确定我没有,上面的命令少了一个-,不过肯定的是我没有 下载 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 安装 sudo python3 get-pip.py 如果是要在python2上安装的话 sudo python get-pip.py 检查 安装成功 切换到国内的源 这个我贴一个地址,我之前写过 https://blog.csdn.net...阅读全文

博文 2020-04-23 22:32:44 归子莫

kubernetes源码剖析之client-go(二) Informer机制

kubernetes源码剖析之client-go(一) Informer机制   Kubernetes通过informer机制,实现在不依赖任何中间件的情况下保证消息的实时性、可靠性、顺序性。其他Kubernetes组件通过client-go的informer机制与Api Server进行通信。Informer的核心组件包括: Reflector 用于监控(Watch)指定Kubernetes资源 DeltaFIFO  Delta的先进先出队列,Reflector为生产者,Controller为消费者 Indexer 自带索引功能的本地存储,用于存储资源对象 Infermers 运行原理 代码示例 package main import ( "log" "time" v1 "k8s.io/a...阅读全文

博文 2020-08-24 00:33:18 cy_lyh

Golang标准库——go(3)

format importer parser printer scanner format format包实现Go源码的标准格式。 func Node func Node(dst io.Writer, fset *token.FileSet, node interface{}) error 节点以标准gofmt格式格式化节点,并将结果写入dst。 节点类型必须为* ast.File,* printer.CommentedNode,[] ast.Decl,[] ast.Stmt,或与ast.Expr,ast.Decl,ast.Spec或ast.Stmt兼容的分配。 节点不修改节点。 不会对表示部分源文件的节点的导入进行排序(即,如果该节点不是* ast.File或* printer.Comme...阅读全文

博文 2020-10-11 01:32:39 DevilRoshan

go基础——buffer

内容 1 bytes.Buffer 2 strings.Builder 3 bufio包 前言 bytes.Buffer strings.Builder和bufio都是golang中经常使用的提供了缓冲池的数据结构,他们内部都是封装了一个[]byte, 可以用来高效的操作字节切片、字符串和io操作 一 byte.Buffer byte.Buffer是一个简单字节缓冲池,内部包了一个字节数组,在某些频繁io的操作中,可以使用buffer来做一个读取或是写入的缓冲池,来提高效率 // A Buffer is a variable-sized buffer of bytes with Read and Write methods. // The zero value for Buffer is a...阅读全文

博文 2020-10-05 20:32:39 酷酷码农

解读进程、线程与协程

前言在了解go(golang)语言之前,需要先复习(预习)下计算机的基础.这个在大学期间,计算机操作系统里面应该学过. 操作系统课程里面应该只是了解到了进程和线程的相关知识.对于实际场景中,并发需求经常出现, 对于java语言来说, 可以通过多线程并发来实现, 对于php来说,可以通过Swoole扩展来实现. 而go语言则从语言层面支持了协程实现, 并发编程这部分在最后再简单描述下.一、进程我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立...阅读全文

博文 2020-10-06 18:32:44 woodsMaple

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 c...阅读全文

博文 2020-06-15 10:32:53 王炳明

合理的timeout设置,让系统的SLA大幅提升

如何更好的设置timeout 为什么会有timeout 百度了一下timeout的字面意思,就是简单的“超时”,那么timeout为什么跟我们编程息息相关,我没有找到timeout的最初的出处,但是我自己想了一下,这个应该是跟tcp/ip协议一起出现的,timeout应该是伴随着io出现的,io又分为网络io和磁盘io,当时我们不太关注磁盘io,主要关注的是网络io,所以我感觉是跟tcp/ip协议一起出现的,这个具体还要在查一下。如果网络交互没有timeout会出现一个什么情况?我不知道对端是否存活,那么有人说了我可以通过heartbeat来保持长连接,那么问题又来了,心跳间隔要设置多长?心跳间隔设置了我怎么来确定是否有心跳过来,那么就设计到了read心跳包,read心跳包有回到了最初的问题...阅读全文

博文 2020-08-21 08:32:41 小石桥胡同

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型复制代码 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 conc...阅读全文

博文 2020-06-15 10:35:49 王一白

导入和导出kafka based channel的数据

golang实现从kafka导入导出一个channel的内容: 导出一个channel package main import ( "flag" "fmt" "log" "time" "os" "strings" "encoding/binary" "github.com/Shopify/sarama" "github.com/golang/protobuf/proto" ab "github.com/hyperledger/fabric/protos/orderer" ) var ( brokers string topic string partition int ) func main() { flag.StringVar(&brokers, "brokers", "localhost...阅读全文

博文 2020-06-01 11:32:51 CodingCode