创建namespace Kubernetes namespace 是用来构建虚拟的资源池;使用 kubernetes namespace,管理员可以将 kubernetes 划分成多个虚拟的区域,不同的项目或者团队可以使用不同的 namespace,达到了共享 kubernetes 集群资源的目的。此外, namespace 也被用来划分命名空间,即不同 namespace 里的资源可以取相同的名字,相同 namespace 内的资源不能重名。 Namespaces 通过 kubectl create -f,我们可以轻松地创建一个 namespace: ns.yaml文件如下
LRU 算法,全称是Least Recently Used。 翻译过来就是最近最少使用算法。 这个算法的思想就是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。所以,当指定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。 实现LRU算法 如果我们想要查询和插入的时间复杂度都是 O(1),那么我们需要一个满足下面三个条件的数据结构: 首先这个数据结构必须是有时序
一、体系结构 计算机网络的各层及其协议的集合被称为网络的体系结构,按照不同的维度,其常被分为七层、五层、四层网络结构: 应用层 (application layer):直接为应用进程提供服务。应用层协议定义的是应用进程间通讯和交互的规则,不同的应用有着不同的应用层协议,如 HTTP协议(万维网服务)、FTP协议(文件传输)、SMTP协议(电子邮件)、DNS(域名查询)等。 传输层 (transport layer
匿名函数 参考博客: https://www.calhoun.io/what-is-a-closure/ https://blog.cloudflare.com/a-go-gotcha-when-closures-and-goroutines-collide/ 在说闭包之前,先说一下匿名函数,匿名函数就是没有名字的函数,可以将它理解为一个变量。看下面的例子: package main import "fmt" var DoStuff func() = func() { // Do stuff } func main() { DoStuff() DoStuff = func() { fmt.Println("Doing stuff!") } DoStuff() DoStuff = func() { fmt.Println("Doing other stuff.") } DoStuff() } //Doing stuff! //Doing other stuff. 可以在这里查看:https://play.golang.org/p/WPHkRpCzH4f 闭包 闭包是匿名函数与匿名函数所引用环境的组合。匿名函数有动态创建的特
前言 设计模式 Golang实现-《研磨设计模式》读书笔记 https://github.com/senghoo/golang-design-pattern 创建型模式 简单工厂模式(Simple Factory) go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。 NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。 在这个simplefactory包中只有API 接口和NewAPI函数为包外可见,封装了实现细节。 package simplefactory import "fmt" //API is interface type API
一. 切片和数组 关于切片和数组怎么选择?接下来好好讨论讨论这个问题。 在 Go 中,与 C 数组变量隐式作为指针使用不同,Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据。 func main() { arrayA := [2]int{100, 200} var arrayB [2]int arrayB = arrayA fmt.Printf("arrayA : %p , %v\n", &arrayA, arrayA) fmt.Printf("arrayB : %p , %v\n", &arrayB, arrayB) testArray(arrayA) } func testArray(x [2]int) { fmt.Printf("func Array : %p , %v\n", &x, x) } 打印结果: arrayA : 0xc4200bebf0 , [100 200] arrayB : 0xc4200bec00 , [100 200] func Array : 0xc4200bec30 , [100 200] 可以看到,三个内存地址都不同,这也就验证了 Go 中数组赋值和函数传
context详解 1.1 产生背景 在go的1.7之前,context还是非编制的(包golang.org/x/net/context中),golang团队发现context这个东西还挺好用的,很多地方也都用到了,就把它收编了,1.7版本正式进入标准库。 context常用的使用姿势: 1.web编程中,一个请求对应多个goroutine之间的数据交互 2.超时控制 3.上
分布式事务的产生 我们先看看百度上对于分布式事务的定义:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 当系统的体量很小时,单体架构完全可以满足现有业务需求,所有的业务共用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时做到所有操作要么全部提交 或 要么全部回滚很容易。 可随着
前提 安装docker和go环境 配置wsl2 这个可以看之前的文章win10安装docker 安装kubectl 安装kubectl有几种方法,具体可以看install-kubectl-windows/ 直接使用curl curl -LO https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe 如果提示curl命令不存在,可以先安装一下curl,不过这里建议直接用github的curl(如果你安装了github的话),目录在github
安装 主要是安装docker和wsl,先去docker官网 下载安装包,注意查看系统要求,虚拟化和安装WSL(Windows Subsystem for Linux) 。 具体可以看这个中文的:wsl官方文档 。 主要的坑在Bios启用虚拟化:3700x启用虚拟化: 看virtualisation:enabled状态 配置镜像加速 具体看这里镜像加速器 ,对于使用 Windows 10 的用户,在任务栏托盘 Docker 图标内右键菜单