Golang通脉之接口

接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组函数或方法的集合,是duck-type programming的一种体现。接口做的事情就像是定义 ... »

drunkery Go

Golang通脉之方法

方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self。 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一 ... »

drunkery Go

Golang通脉之结构体

Go语言中的基础数据类型可以表示一些事物的基本属性,但是要表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct。 也就是可以通过struct来定义自己的类型了。 Go语 ... »

drunkery Go

GoLang设计模式11 - 备忘录模式

备忘录模式是一种行为型设计模式。这种模式允许我们保存对象在某些关键节点时的必要信息,以便于在适当的时候可以将之恢复到之前的状态。通常它可以用来帮助设计撤销/恢复操作。 下面是备忘录设计模式的主要角色: Originator(发起者):Originator是当前的基础对象,它会将自己的状态保存进备忘录 ... »

GoLang设计模式10 - 中介者模式

中介者模式是一种行为型设计模式。在中介者模式中创建了一个中介对象来负责不同类间的通信。因为这些类不需要直接交互,所以也就能避免它们之间的直接依赖,实现解耦的效果。 中介者模式的一个典型案例是老式小火车站。为保证铁路系统稳定运行,两列火车一般不会直接通信,而是听从车站管理员的调度。这里车站管理员就是一 ... »

golang []byte和string的高性能转换

golang []byte和string的高性能转换 在fasthttp的最佳实践中有这么一句话: Avoid conversion between []byte and string, since this may result in memory allocation+copy. Fasthtt ... »

charlieroro golang

scheduler源码分析——preempt抢占

前言 之前探讨scheduler的调度流程时,提及过preempt抢占机制,它发生在预选调度失败的时候,当时由于篇幅限制就没有展开细说。 回顾一下抢占流程的主要逻辑在DefaultPreemption.preempt方法,步骤包括: 拿最新版本的pod,刷新lister的缓存 确保抢占者有资格抢占其 ... »

nsq topic

与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 cha ... »

Windows下Golang安装Iris框架

Windows下Golang安装Iris框架 - it610.com https://www.it610.com/article/1289791680454664192.htm Iris 框架安装步骤 »

pangchunyu

golang web实战之二(iris) - pu369com

之前写了一篇为:golang web实战之一(beego,mvc postgresql) 听说iris更好: 1. iris hello world 2.路由 2.1用正则检查url路径是否符合要求 »

pu369

golang 代码安全审计

前言 Go语言主要用作服务器端开发语言,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。Go语言是强类型语言,它融合了传统编译型语言... »

apiserver源码分析——处理请求

前言 上一篇说道k8s-apiserver如何启动,本篇则介绍apiserver启动后,接收到客户端请求的处理流程。如下图所示 认证与授权一般系统都会使用到,认证是鉴别访问apiserver的请求方是谁,一般情况下服务端是需要知晓客户端是谁方可接受请求,除了允许匿名访问这种场景,同时认证也为后续的授 ... »

一个故事,一段代码告诉你如何使用不同语言(Golang&C#)提供相同的能力基于Consul做服务注册与发现

引言 趁着最近休息写一篇关于微服务架构中特别重要一环服务注册与发现示例来互相探讨学习。 什么是微服务 传统服务 举个栗子: 传统服务就类似于你们家附近的商店,这个商店可以提供你基本日常所需。你可以在里面买牙膏、零食、饮料、袜子、充电器等。 优点: 产品固定的情况下方便打理 (开发/维护效率高) 。 ... »

insipid

使用Golang搭建gRPC服务提供给.NetCore客户端调用

gRPC概述 RPC 说到gRPC就不得不提RPC,所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,简单点来说就是我A机器上写的函数可以在B机器上通过RPC协议直接调用。 它与http不同的是: RPC是基于TCP实现的, ... »

insipid

apiserver源码分析——启动流程

前言 apiserver是k8s控制面的一个组件,在众多组件中唯一一个对接etcd,对外暴露http服务的形式为k8s中各种资源提供增删改查等服务。它是RESTful风格,每个资源的URI都会形如 /apis/{apiGroup}/{version}/namsspaces/{ns-name}/{re ... »

golang实现一个简单的websocket聊天室

基本原理: 1.引入了 golang.org/x/net/websocket 包。 2.监听端口。 3.客户端连接时,发送结构体: {"type":"login","uid":"我是用户名","msg":"登陆成功"}' .服务端根据login信息,维护一个map,用来存放不同用户的连接体。 4.有 ... »