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

云原生社区活动---Kubernetes源码剖析第一期第三周作业, 也是最后一周作业.本文主要讲述下client-go中workqueue, 看一下client-go的一个整体数据走向.如下图:而workqueue主要是在listener这里引用,listener使用chan获取到数据之后将数据放入到工作队列进行处理。主要是由于chan过于简单,已经无法满足K8S的场景,所以衍生出了workqueue,特性有序去重并发延迟处理限速当前有三种workqueue基本队列延迟队列限速队列其中延迟队列是...阅读全文

Segmentfault 2021-01-25 11:32:33 .container .car 等

go那些事儿|defer必掌握知识

目录defer执行时机defer执行顺序defer与return谁先谁后函数包含多个Panic,defer中recover处理那个Panic函数返回值遇到deferdefer遇到Panicdefer遇到Panic,但是并不捕获异常的情况defer遇到Panic,并捕获异常练习:defer面试题闲聊欢迎加入我的公众号【迈莫coding】 一起pk大厂defer执行时机return 语句执行完之后,如果有 defer 语句,再执行 defer 语句发生 Panic ,也会触发 defer 执行def...阅读全文

51CTO博客 2021-01-22 22:12:44 mb6008e9b926b5d

GitHub 徽章制作

很早前写过一篇关于Golang持续集成服务之Travis教程, 今天再写写关于 github 上常见的徽章是如何制作的. 让你的开源项目更高大上, 让你的代码也更健壮.徽章的含意当你浏览一个开源项目时,看到各种徽章, 有些徽章是直接反应这个开源库的质量和完整性等等.如上图所示第一个徽章即 Github 自带的 workflow 提供的持续集成(CI)和持续部署(CD), 官方称之为 Actions, 图示显示为 CI, CD 是否通过第二个徽章即 Codecov 是一个测试结果分析工具, 图标显...阅读全文

Segmentfault 2021-01-25 08:32:42 .container .car 等

企业项目迁移go-zero全攻略(一)

企业项目迁移go-zero全攻略(一)作者:Mikael最近发现 golang 社区里出了一个新兴的微服务框架。看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务;同时 core 中的工具极大减少了开发成本。废话不多说,来看看这个微服务框架:go-zero起源聊聊与go-zero结缘最先接触go-zero是2020年10月国庆假期,说来也巧,看到有人在go-micro群中问go-zero情况,当时go-zero作者在群中就大概回答了一下,引起了我...阅读全文

51CTO博客 2021-01-22 18:32:34 mb6008e936aad4e

企业项目迁移go-zero全攻略(一)

最近发现 golang 社区里出了一个新兴的微服务框架。看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务;同时 core 中的工具极大减少了开发成本。废话不多说,来看看这个微服务框架:go-zero起源聊聊与go-zero结缘最先接触go-zero是2020年10月国庆假期,说来也巧,看到有人在go-micro群中问go-zero情况,当时go-zero作者在群中就大概回答了一下,引起了我的好奇,当时公司用的go-micro1.x,因为go-m...阅读全文

51CTO博客 2021-01-22 18:31:40 mb6008e936aad4e

还热乎的面经

非常普通的二本菜鸟一枚(去年毕业),也一直有个大厂梦回看2020,自己也确实比较结结实实的补了一波基础,虽然枯燥,但是过程中带来的成就感还是满满的。组内的几次分享,也让我对这些基础理解的较深刻这也让我有了底气,在参加完好未来的PHP技术技术大会之后,决定尝试去面试大厂,检测一下自己的成果吧从12.10~12.27,一共面了大概5家(包含好未来和百度),很幸运的都通过了所有技术面试,简直不敢相信(没见过世面的样子!-_-)好了,下边才是本文主题,好未来和百度的面经(脑子容量有限,大概就记住下边这些...阅读全文

Segmentfault 2021-01-24 23:32:32 .container .car 等

golang中的联合体

昨天使用protobuf中的oneof发现编译出来的代码挺奇怪的,详细看看发现golang中使用联合体是这样用的定义一个接口类型,这个接口类型就一个方法,实现了这个方法就可以赋值了。type msgPayload interface { msgPayload() }要使用联合体的地方使用接口代替type Message struct { Payload msgPayload }然后就可以分别定义各个结构了,只需要添加定义的空接口就行了type MsgA struct { A uint32 } f...阅读全文

Segmentfault 2021-01-24 22:32:32 .container .car 等

Go Channel 详解

0. 引言 channel 是 Go 语言中的一个非常重要的特性,这篇文章来深入了解一下 channel。 1. CSP 要想理解 channel 要先知道 CSP 模型。CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,由 Tony Hoare 于 1977 年提出。简单来说,CSP 模型由并发执行的实体(线程或者进程)所组成,实体之间通过发送消息进行通信,这里发送消息时使用的就是通道,或者叫 channel。C...阅读全文

简书 2021-01-22 14:32:43 陈Sir的知识库

golang 写个希尔排序

希尔排序非常的牛,听说是第一个打破时间复杂度我 n² 的算法,通过一个区间不断缩小,由远及近,最终达到有序状态,也可以称为加强版的分组插入排序。 算法描述 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 按增量序列个数k,对序列进行k 趟排序; 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的 长度。 先回顾一下插入排序 func insertionSort(a...阅读全文

简书 2021-01-22 14:32:39 追风骚年

使用 google/wire 对 Go 项目进行依赖注入

google/wire 是 Go 语言的编译时依赖注入框架,与 Spring IoC 一样,wire 的目的也是让开发者从对项目中大量依赖的创建和管理中解脱出来,但两者在实现方式上有着很大的不同。Go 中的依赖注入在 Go 中,我们通常采取在构造函数中传入依赖的方式创建对象:func main() { NewUserStore(conf.Load(),db.InitMySQL()) } func NewUserStore(cfg *Config, db *mysql.DB) (*UserStor...阅读全文

Segmentfault 2021-01-24 22:32:32 .container .car 等

仿今日头条 Gfast CMS 前端

平台简介基于GF(Go Frame)的后台管理系统前端采用ruoyi-ui 、Vue、Element UI。后端采用GO语言 框架 GF(Go Frame)。本项目由奇讯科技团队开发。内置功能用户管理:用户是系统操作者,该功能主要完成系统用户配置。部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。岗位管理:配置系统用户所属担任职务。菜单管理:配置系统菜单,操作权限,按钮权限标识等。角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。字典管理:对系统中经常使用的一...阅读全文

Go语言中文网 2021-01-22 10:54:05 kocie

LeetCode 858-镜面反射

题目:镜面反射题目:镜面反射有一个特殊的正方形房间,每面墙上都有一面镜子。除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2。正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接收器 0 的距离为 q 。返回光线最先遇到的接收器的编号(保证光线最终会遇到一个接收器)示例输入: p = 2, q = 1 输出: 2 解释: 这条光线在第一次被反射回左边的墙时就遇到了接收器 2题解我们假设光不会反射,直接直行,如下图所示,由此我们可以得到以下结论如果 q %...阅读全文

Segmentfault 2021-01-24 10:32:32 .container .car 等

channel 实战应用,这篇就够了!

有一说一,这篇文章有点标题党了,但是绝对是干货。已经有很多关于 channel 的文章,为什么我还要写呢?任何知识点,只要你想,就可以从不同的角度切入!那就写点 channel 应用相关的东西。通过不同场景使用 channel 特性加深理解!所以在看这篇文章之前,首先得先去了解 channel。由 channel 引发的血案上面那篇文章漏了一个我觉得很关键的知识点,并且我们还经常在上面犯错误。即使是那些牛逼的开源项目,也有过类似 bug。我的问题是:channel 的哪些操作会引发 panic?...阅读全文

Segmentfault 2021-01-23 22:32:33 .container .car 等

Goland IDE 安装终解

本来打算使用 VSCode 进行 go 开发、学习的 但各种插件需要翻墙安装 翻墙了,但部分插件来自 go 官网依然死活下载失败 为了避免不必要的后期更新等麻烦 老实使用 Goland 开发吧 不秀了 Goland是 go 开发的 IDE 由 JetBrains 公司开发 Goland 是商业版 需要 money 本着白嫖的想法 以下以 mac OS 为例 在此之前务必下载安装好 Go 语言 在配置 GOROOT 环境变量时用到 下载 Goland dmg 安装包 如果你能顺利打开 go 官网 ...阅读全文

简书 2021-01-22 02:32:39 山书山海

[国产]Golang实现的定时任务管理系统:gocron

image.png 使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 查看文档 原有的延时任务拆分为独立项目延迟队列 功能特性 Web界面管理定时任务 crontab时间表达式, 精确到秒 任务执行失败可重试 任务执行超时, 强制结束 任务依赖配置, A任务完成后再执行B任务 账户权限控制 任务类型 shell任务 在任务节点上执行shell命令, 支持任务同时在多个节点上运行 * HTTP任务 > 访问指定的URL地址, 由调度器直接执行, 不依赖任务节...阅读全文

简书 2021-01-22 02:32:38 翟志军

Go中的方法与接收器

作用:为了将函数与结构体绑定,类似于OOP中的对象与方法。格式func (接收器变量 接收器类型) 方法名(参数列表) (返回参数){ //函数体 }接收器类型指针接收器:指针类型的接收器由一个结构体的指针组成,更接近于面向对象中的this,由于指针的特性,调用方法时,修改接收器指针的任意成员变量,在方法结束后,修改都是有效的。非指针接收器:Go语言会在代码运行时将接收器的值复制一份。在非指针接收器的方法中可以获取接收器的成员值,但修改后无效。如何选择在计算机中,小对象由于值复制时的速度比较快,...阅读全文

51CTO博客 2021-01-21 21:37:05 mb6008e936aad4e