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

kubernetes垃圾回收器GarbageCollector Controller源码分析(二)

kubernetes版本:1.13.2 接上一节:kubernetes垃圾回收器GarbageCollector Controller源码分析(一) 主要步骤 GarbageCollector Controller源码主要分为以下几部分: monitors作为生产者将变化的资源放入graphChanges队列;同时restMapper定期检测集群内资源类型,刷新monitors runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToDelete队列; runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToOrphan队列; runAttemptToD...阅读全文

博文 2019-10-12 15:02:42 小碗汤

Python之上下文管理器

1.引入 我们时常会看到网上很多人写文件读写的代码的时候,常常是这么写的: with open('test.txt', 'r') as f: print(f.read()) # 其它操作 这个with有什么用呢? 我们来看看不用这种写法我们怎么写。 假如我们直接这么写: f = open('test.txt', 'r') print(f.read()) # 其它操作 f.close() 这种写法有什么问题呢? 假如在做其它操作的时候,出错了,程序终止,f.close()不会执行,则f这个句柄会一直得不到释放,要是并发操作,这个就很严重了。 所以我们通常会这么写: try: f = open('test.txt', 'r') except Exception: pass finally: f....阅读全文

博文 2019-10-11 18:32:50 aside section ._1OhGeD

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-03 16:43:27 kxg3030

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-04 09:10:11 kxg3030

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-17 15:04:47 kxg3030

2020-03-20

答案:People show b People show a 这是Golang的组合模式,可以实现OOP的继承。 被组合的类型People所包含的方法虽然升级成了外部类型Teacher这个组合类型的方法(一定要是匿名字段),但它们的方法(ShowA())调用时接受者并没有发生变化。 此时People类型并不知道自己会被什么类型组合,当然也就无法调用方法时去使用未知的组合者Teacher类型的功能。 package main import "fmt" type People struct {} type Teacher struct{ People } func (p *People) ShowB() { fmt.Println("People show b") p.ShowA() } fun...阅读全文

博文 2020-03-20 13:32:51 anthonydan

Golang备忘 - 01 杂项:零值,接口,自定义包

开发十年,就只剩下这套Java开发体系了 >>> 零值 当一个变量被声明后,系统自动赋予它该类型的零值: int为0,float为0.0,bool为false,string为空字符串,指针为nil 注意:所有内存在Go中都是经过初始化的 接口 1. 在接口上调用方法时: 指针方法可以通过指针调用 值方法可以通过值调用 接收者是值的方法可以通过指针调用,因为指针会首先被解引用 接收者是指针的方法不可以通过值调用,因为存储在接口中的值没有地址 2. 接口方法集调用的规则: 类型*T的可调用方法集包含接收者为*T或T的所有方法集 类型T的可调用方法集包含接收者为T的所有方法 类型T的可调用方法集不包含接收者为*T的方法 3. 内存占用 每个interface{}变量在内存中占据两个字长(32位机的...阅读全文

博文 2018-09-23 01:33:04 nnealguo

初学Python需要安装那些软件?

初学Python需要安装的软件 Python解释器 IDE pip代理 虚拟环境 Python解释器的安装 1.首先我们移步官网,下载最新版本的python-3.6 Python官网:https://www.python.org/ 在这里插入图片描述 选择要下载的文件: 在这里插入图片描述 可以根据你自己本身的Windows电脑位数选择下载。 下载好安装包之后,就和你平常安装QQ一样点击下一步就可以了! 在这里插入图片描述 也是有需要特别注意的!! 记得勾选 Add Python 3.6 to PATH。 1、 按 Win+R 键,输入 cmd 调出命令提示符,输入 python: 在这里插入图片描述 也可以在开始菜单中搜索 IDLE: 在这里插入图片描述 对于初学者而言用Windows系统...阅读全文

博文 2019-09-27 13:32:51 aside section ._1OhGeD

golang 包依赖管理 godep 使用

介绍:godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理。 1.安装:go get github.com/tools/godep 2.编译和运行项目用godep管理后,要编译和运行项目的时候再用 go run 和 go build 显然就不行了,因为go命令是直接到GOPATH目录下去找第三方库。而使用godep下载的依赖库放到Godeps/workspace目录下的; `godep go run main.gogodep go buildgodep go installgodep go test` godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOP...阅读全文

博文 2019-11-04 10:33:53 风云

Go语言接口内部布局和方法集详解

1. 接口值内部布局   如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型的值。赋值完成后得到的值称为接口值。接口值是一个两个字长度的数据结构,第一个字包含一个指向内部表的指针。这个内部表叫作iTable,包含了所存储的值的类型信息和与这个值相关联的一组方法(也就是方法集)。第二个字是一个指向所存储值的指针。下图展示实体值赋值后接口值的内部布局:                            实体值赋值后接口值的内部布局图 如果是一个指针赋值给接口的情况,类型信息会存储一个指向保存的类型的指针,而接口值第二个字依旧保存指向实体值的指针。如下图:                     ...阅读全文

您需要了解的有关Kubernetes服务质量(QoS)

服务质量(QoS)类是Kubernetes的概念,它确定Pod的调度和驱逐优先级。 Kubernetes调度程序使用QoS类来做出有关将Pod调度到节点上的决策。 Kubelet使用它来管理驱逐pod的顺序,以及使用高级CPU管理策略允许更复杂的pod调度决策。 QoS类由Kubernetes本身分配给Pod。但是,DevOps可以通过处理Pod内各个容器的资源请求和限制来控制分配给容器的QoS类。 在kubernetes 中存在三种QoS类: Guaranteed Burstable BestEffort 让我们看一下不同的QoS类,看看它们如何与Kubernetes Scheduler和Kubelet一起工作。 Guaranteed 如何分配Pod的QoS Guaranteed 等级? ...阅读全文

[系列] - 使用 go modules 包管理工具(一)

概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。 为什么是开箱即用,它会集成哪些功能? 以上功能点,都是常用的,后期可能还会增加。 废话不多说,咱们开始吧。 创建一个项目,咱们首先要考虑一个依赖包的管理工具。 常见的包管理有,dep、go vendor、glide、go modules 等。 最开始,使用过 dep,当时被朋友 diss 了,推荐我使用 go modules 。 现在来说一下 go modules ,这个是随着 Go 1.11 的发布和我们见面的,这是官方提倡的新的包管理。 说一个环境变量:GO111MODULE,默认值为 auto 。 当项目中有 go.mod 时,使用 go modules 管理,反之使用 旧的 GOPATH 和 v...阅读全文

博文 2019-08-26 19:32:46 新亮

go modules 的一些细节

前言 在一些Java的项目中,有 Maven等这些版本管理工具,可以很好的管理各种版本依赖关系,但是在 Golang 的项目中,之前官方并没有提供版本管理工具,以前都是用 go get 进行安装, 随着项目的变大, 就处理这种依赖关系就变得很麻烦, 原文 如果你对Go感兴趣, 可以关注我的公众号: GoGuider vendor 机制 为了解决版本依赖问题, 官方出了一个 vendor 机制,将项目依赖的包都放在该目录中,但这也并没有很好地管理依赖的版本。 因为vendor 机制有几个大的问题: 1、需要将外部库放到项目中, 导致项目体积变得很大 2、项目版本很难指定和控制 go dep 和 go modules 之后官方出了一个准官方版本管理工具 go dep,这也算是 go module...阅读全文

以太坊挖矿源码:clique算法

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 clique以太坊的官方共识算法是ethash算法,这在前文已经有了详细的分析: 它是基于POW的共识机制的,矿工需要通过计算nonce值,会消耗大量算力来匹配target值。 如果在联盟链或者私链的方案里,继续使用ethash就会浪费算力,POW也没有存在的意义。所以以太坊有了另一种共识方案:基于POA的clique。 POA, Proof of Authority。权力证明,不同于POW的工作量证明,POA是能够直接确定几个节点具备出块的权力,这几个节点出的块会被全网其他节点验证为有效块。 建立私链 通过这篇文章的操作可以建立一个私有链,观察这个流程可以看到,通过puppeth工具建立创世块时,会提示你选择哪...阅读全文

博文 2019-09-27 17:02:47 链客

你的Helm安全吗?

一、背景Kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。在Kubernetes当中,用户通过使用API对象,如Pod、Service、Deployment等,来描述应用的程序规则,而这些资源对象的定义一般需要写入一系列的YAML文件中,然后通过 Kubernetes 命令行工具Kubectl进行部署。由于通常应用程序都涉及到多个Kubernetes API对象,而要描述这些API对象就可能要同时维护多个YAML文件,从而在进行 Kubernetes 软件部署时,通常会面临下述几个问题:如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件如何把一套相关的配置文件作为一个应用进行管理如...阅读全文

Golang MSC 约定

分层结构 Model (模型) 可以包含少量方法; 不引用外部资源; 功能: 数据传输; 持久话; 校验信息; json、xml转换格式定义; 如无必要,转换json、xml格式时无需改变字段大小写,减少无谓的工作量; Service (服务) 提供被多方使用的公共方法; 名称以Service结尾; 会被多个Ctrl或Service调用; 可创建、输入、输出Model; 可调用其他Service; 不可调用Ctrl; 主要的单元测试对象,覆盖率要足够高; 提供一个New方法创建服务,方法的参数是需要引用的其他服务; Ctrl (控制器) 对外提供交互服务; 名称以Ctrl结尾; 包含一个路由方法(Party),说明RESTful调用名称、路径、模式参数等; Ctrl不能被Model和Serv...阅读全文

博文 2019-08-29 11:32:53 安德徐

Mac 神兵利器(二) 极简软件清单

摘要: 作为一个非常爱好折腾的Mac重度用户,在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后,决定分享一下自己的软件清单。 选择app的三个原则: 尽量使用系统原生软件,比如日历,提醒事项,备忘录,Pages,Keynote等 同类软件只保留一款 能不装的软件就不装 时间管理 关... 作为一个非常爱好折腾的Mac重度用户,在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后,决定分享一下自己的软件清单。 **选择app的三个原则:** - 尽量使用系统原生软件,比如日历,提醒事项,备忘录,Pages,Keynote等 - 同类软件只保留一款 - 能不装的软件就不装 **时间管理** ![图片描述](http:...阅读全文

govendor包管理工具的使用

1.govendor简介golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor ,会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep,govendor等,在Golang1.5之后,Go提供了GO15VENDOREXPERIMENT 环境变量(Go 1.6版本默认开启该环境变量),用于将go build时的应用路径搜索调整成为 当前项目目录/vendor 目录方式。通过这种形式,我们可以实现类似于 godep 方式的项目依赖管理。2.安装与使用2.1. 安装go get -u -v github.com/kardianos/govendor2.2. 使用进入到项目目录cd /home/gopat...阅读全文

Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)

文章有点长,亲,要慢慢看! 1. 概述 1.1 注册中心作用 在Dubbo中,注册中心为核心模块,Dubbo通过注册中心实现各个服务之间的注册与发现等功能,而本次源码的分析为registry模块的api和zookeeper的实现。 服务的提供者和消费者都需要把自己注册到注册中心,提供者让消费者感知到服务存在,从而消费者发起远程调用,也让服务治理中心感知到有服务提供者上线;消费者则是让服务治理中心可以发现自己。 1.2 Zookeeper Zookeeper是一个提供分布式协调服务的开源软件,常用于解决分布式应用中经常遇到的一些数据管理问题。Zookeeper功能非常强大,可以实现如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。关于Zookeeper,大家如果想了解可以关注一...阅读全文

博文 2020-01-11 21:32:47 苡仁ilss

[10月12日][全国在线]让it更精简,让项目更敏捷-如何成功运用敏捷方法进行项目管理与实施

项目管理在中国10多年的发展历程中,越来越体现它的价值与作用,随着社会在不断进步,IT技术和管理的发展也逐渐从单纯的引入过渡到创新的阶段,更多的组织或团队会发现: 客户的需求在不停的变化,如何应对; 小型团队用项目管理的流程会力不从心; 上线时间越来越短,如何能快速了解市场推出的新产品; 团队文化构建难,庞大研发团队的协作管理问题; 交付客户满意度低; 技术快速发展,流程停滞不前版本迭代质量低; 针对上述问题,敏捷思想可以很好的加以应对,光环国际结合软件开发与互联网企业特点,通过分析当前企业所存在的普遍问题,详细阐述如何成功运用敏捷方法进行项目管理与实施,加强团队有效沟通,准确捕获客户需求,高质量进行产品交付。逐一阐述敏捷思维与原则、特征、过程与角...阅读全文

利用阿里云容器服务实现自定义节点伸缩

摘要: 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的需求. 本文将向您介绍完成这一能力的步骤。 简介 阿里云容器服务很早就提供了基于集群CPU/内存的平均使用量触发节点自动伸缩功能,帮助许多客户自如应对业务压力的弹性变化。其原理是利用阿里云的云监控能力,在资源使用(cpu和memory)达到阈值时,触发节点伸缩。 同时还有一些企业级用户希望根据自身的监控数据和逻辑判断是否进行扩容和缩容操作,甚至可以按照固定时间进行节点扩容和缩容,针对这种场景,就需要调用的是扩容或者缩容触发器。 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的...阅读全文

Go学习笔记-接口(interface)的实现

对于go的接口,我们先来看看官方的解释 接口是用来定义行为的类型。这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型的值 也就是说接口定义的方法,需要由具体的类型去实现它。 下面我们来看看接口的实现 在go语言中,接口的实现与struct的继承一样,不需要通过某个关键字php:implements来声明。在go中一个类只要实现了某个接口要求的所有方法,我们就说这个类实现了该接口。下面来看一个例子 type NoticeInterface interface { seedEmail() seedSMS() } type Stude...阅读全文

博文 2020-01-02 22:32:38 旧梦发癫

go项目结构怎样?学习go语言怎么样?

都说go语言比较火,都开始学习go语言编程,那么go语言项目结构是怎样的?我们在学go语言时应该注意什么呢? 在进行Go语言开发的时候,我们的代码总是会保存在$GOPATH/src目录下。在工程经过go build、go install或go get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src目录下,产生的二进制可执行文件放在$GOPATH/bin目录下,生成的中间缓存文件会被保存在$GOPATH/pkg 下。 如果我们使用版本管理工具(Version Control System,VCS,常用如Git)来管理我们的项目代码时,我们只需要添加$GOPATH/src目录的源代码即可。bin 和pkg 目录的内容无需版本控制。 Go语言中也是通过包来组织代码文件,我们可以引用...阅读全文

博文 2019-11-12 17:31:42 zhouzhou2018

Supervisor 的使用和进阶 (4) - supervisor Event 的使用

本文主要介绍 supervisor Event 的功能。 supervisor 作为一个进程管理工具,在 3.0 版本之后,新增了 Event 的高级特性, 主要用于做(进程启动、退出、失败等)事件告警服务。 Event 特性是将监听的服务(listener)注册到supervisord中,当supervisord监听到相应事件时,将事件信息推送给监听对应事件的listener。 事件类型 Event 可以设置 27 种事件类型,可以分为如下几类: 1. 监控进程状态转移事件; 2. 监控进程状态日志变更事件; 3. 进程组中进程添加删除事件; 4. supervisord 进程本身日志变更事件; 5. supervisord 进程本身状态变更的事件; 6. 定时触发事件。 事件可以被单独监...阅读全文

kubernetes垃圾回收器GarbageCollector Controller源码分析(二)

kubernetes版本:1.13.2 接上一节:kubernetes垃圾回收器GarbageCollector Controller源码分析(一) 主要步骤 GarbageCollector Controller源码主要分为以下几部分: monitors作为生产者将变化的资源放入graphChanges队列;同时restMapper定期检测集群内资源类型,刷新monitors runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToDelete队列; runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToOrphan队列; runAttemptToD...阅读全文

博文 2019-10-13 23:04:28 Liabio

24.依赖管理及go module

Go语言的依赖管理随着版本的更迭正逐渐完善起来。 windows开启go module:set GO111MODULE=on Linux开启go module:export GO111MODULE=on 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? godep Go语言从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等。 godep是一个通过vender模式实现的Go语言的第三方依赖管理工具,类似的还有由社区维护准官方包管理工具dep。 安装 执行以下命令...阅读全文

博文 2020-05-05 13:32:44 雪上霜

golang 结构体

构造函数,可以使用普通方法来构建 值接受者和指针接收者 1、要改变内容必须使用指针接收者 2、结构过大也要考虑使用指针接收者 3、一致性;如有指针接收者,最好都是指针接收者 值接收者是go语言特有 值/指针接收者均可接收值/指针 nil指针也可以调用方法(.) 封装 对包而言的 每个目录只能一个包,main包包含程序入口 为结构定义的方法必须放在同一个包内,可以在不同文件...阅读全文

博文 2020-06-08 01:33:14 我真是刚的不像话