11 2020 档案
摘要:学习了linux的 namespace之后,知道了docker是如何将机器的资源进行隔离的,那么docker中的镜像分层技术的原理是什么呢? 答案是联合文件系统 对,就是aufs, device mapper, btrfs, overlay, overlay2 当然我今天就演示一下overlay怎么
阅读全文
摘要:tx对象 tx, err := db.Begin() tx.Exec(query1) tx.Exec(query2) tx.commit() 一般查询使用的是db对象的方法,事务则是使用另外一个对象。 使用db的Begin方法可以创建tx对象。tx对象也有数据库交互的Query,Exec和Prepa
阅读全文
摘要:kubernetes Pod创建 的 工作流: 第一步: kubectl 向api server 发起一个create pod 请求 第二步: api server接收到pod创建请求后,不会去直接创建pod,而是生成一个包含创建信息的yaml。 第三步: apiserver 将刚才的yaml信息写
阅读全文
摘要:Gin封装的最好的地方就是context和对response的处理。本篇文章主要解释context的使用方法, 以及其设计原理 将Request的处理封装到Context中优点 在阅读gin的源码时, 请求的处理是使用type HandlerFunc func(*Context)来处理的. 也就是
阅读全文
摘要:Gin的是路由算法其实就是一个Trie树(也就是前缀树)。 注册路由预处理 我们在使用gin时通过下面的代码注册路由 普通注册 router.POST("/somePost", func(context *gin.Context) { context.String(http.StatusOK, "s
阅读全文
摘要:一、容器与容器之间的通信 同一个pod中的容器,共用同一个网络命名空间,直接使用localhost或127.0.0.1加上端口访问就好了。可以看到这两个容器的ip地址,路由表,以及暴露的端口号等都是一样的,因为他们使用的是同一个网络命名空间,同一个网络栈。 【注意】:他们只是共用网络命名空间(net
阅读全文
摘要:Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态; apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler负责资源
阅读全文
摘要:变量间的赋值(值拷贝) a:=1 b:=a fmt.Println(b,&a,&b) 方法调用 值拷贝: 1 array golang中以array作为参数的方法调用,方法接收的是整个array的值拷贝,所以方法中对array的item重新赋值不起作用。 如以下代码所示,输出为[1, 2, 3]。
阅读全文
摘要:2.slice底层数据结构与使用注意事项 3.map底层数据结构与注意事项 5.锁的底层实现
阅读全文
摘要:反射机制是现代编程语言中一个比较高级的特性 在编译时不知道类型的情况下,通过反射机制可以获取对象的类型、值、方法甚至动态改变对象的成员,这就是反射机制 反射的意思是在运行时,能够动态知道给定数据对象的类型和结构,并有机会修改它! 现在一个数据对象,如何判断它是什么结构?数据interface中保存有
阅读全文
摘要:1.单例模式 package singleton import "sync" //Singleton 是单例模式类 type Singleton struct{} var singleton *Singleton var once sync.Once //GetInstance 用于获取单例模式对象
阅读全文
摘要:在Gin的整个实现中,中间件可谓是Gin的精髓。一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且中间件之间相互不用感知到,每个中间件只需要处理自己需要处理的事情即可。 Gin中常用的中间件是: Logger 日志 Recovery panic 处
阅读全文
摘要:Golang中如何避免死锁:加锁 读写锁中的可读锁(sync.RWMutex 的 RLock())可以嵌套使用的。 互斥锁(sync.Mutex 和 sync.RWMutex 的 Lock())是不可以互相嵌套的,且不可以与可读锁嵌套。 之前我在读写锁和互斥锁上理解有偏差,认为读写锁与互斥锁是完全独
阅读全文
摘要:微服务模块划分原则: 原则1:传统的一个大业务系统划分微服务模块的时候,尽量是划分到6到8个模块比较合适,当你本身的IT成熟度达到一定水平后你可以划分的更加细点。同时在微服务模块划分的时候一定要考虑数据库本身的划分,即底层的数据库也是划分开的。 原则2:要分析单个业务系统内部的流程,然后分解到具体的
阅读全文
摘要:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序
阅读全文
摘要:遍历定义 指按某条搜索路线遍访每个结点且不重复(又称周游)。 遍历用途 它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。 遍历方法 牢记一种约定,对每个结点的查看都是“先左后右” 。 限定先左后右,树的遍历有三种实现方案: DLR LDR LRD 先 (根)序遍历 中
阅读全文
摘要:日常如果我们想在一本书中找一句存在的句子,这句话你不知道它在哪个章节,那么你只能一章一章的翻看,这个映射关系是从文档到关键词,因为我们是翻阅不同的章节文档来检索哪里出现了这么一句话。而倒排索引是建立关键词到文档的映射关系,给你几个关键词,找出包含关键词的文档。 倒排索引源于实际应用中需要根据属性值(
阅读全文
摘要:传统web服务落地kubernetes流程,这里以java web为例。 1.准备好一个测试过的运行正常的项目,以tomcat作为基础镜像,docker pull 拉取tomcat镜像,docker tag 后docker push到自己的镜像仓库(harbor) 2.mvn package打包项目
阅读全文
摘要:2 容器管理 docker容器技术指Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs) containers的中文解释是集装箱。 Docker则实现了一种应用程序级别的隔离,它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换 到操作程序运
阅读全文
摘要:1 docker镜像管理 1.1 镜像简介 Docker镜像是什么? 镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。 通过镜像可以创建一个或多个容器。 1.2 搜索、查看、获取 搜索镜像 #作用 搜索Docker Hub(镜像仓库)上的镜像
阅读全文
摘要:docker是什么 docker是什么? docker的中文解释是码头工人。 官方解释: Docker是一个开源的容器引擎,它基于LCX容器技术,使用Go语言开发。 源代码托管在Github上,并遵从Apache2.0协议。 Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植
阅读全文
摘要:Beego的安装 go get github.com/astaxie/beego bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。 go get github.com/beego/bee 当我们安
阅读全文
摘要:一、安装依赖 安装gin和golang mysql driver,如下: go get "github.com/go-sql-driver/mysql" go get "github.com/gin-gonic/gin" 二、创建测试用的数据库 安装完mysql-server包后,启动并配置用户名密
阅读全文
摘要:1.Golang 2.golang适合做什么 3.golang的缺点有哪些? 4.golang的优势有哪些? 5.Golang Gin(上) 6.Golang Gin(中) 7.Golang Gin(下) 8.golang中channel的用法 9.golang cpu性能分析 10.golang
阅读全文
摘要:defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 defer的用途 ? 在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在
阅读全文
摘要:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态
阅读全文
摘要:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 介绍 意图:动态地给一个对象添加一些
阅读全文
摘要:代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 组成 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方
阅读全文
摘要:单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该
阅读全文
摘要:空(nil)读写阻塞,写关闭异常,读关闭空零 给⼀个 nil channel 发送数据,造成永远阻塞 ▪ 从⼀个 nil channel 接收数据,造成永远阻塞 给⼀个已经关闭的 channel 发送数据,引起 panic ▪ 从⼀个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回⼀个
阅读全文
摘要:设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 工厂模式(Factory Pattern)是 Java 中
阅读全文
摘要:TCP client Go语言中通过net包中的DialTCP函数来建立一个TCP连接,并返回一个TCPConn类型的对象,当连接建立时服务器端也创建一个同类型的对象,此时客户端和服务器端通过各自拥有的TCPConn对象来进行数据交换。一般而言,客户端通过TCPConn对象将请求信息发送到服务器端,
阅读全文
摘要:1.osi(Open System Interconnect) 开放式系统互联 7层模型 2.TCP/IP五层协议和OSI的七层协议对应关系如下。 3.tcp/ip与http的差别 http协议的报文要通过tcp/ip来传输 4.什么是 socket? socket 的原意是“插座”,在计算机通信领
阅读全文
摘要:在golang中channel用于goroutine之间的通信。 1. channel的定义 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) make对于channel接收两个参数,第一个是通道的类型,第二个是个可选参数代表通
阅读全文