自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 調用docker sdk的ImageBuild方法構建docker鏡像

package mainimport ( "archive/tar" "bytes" "context" "fmt" "io" "io/ioutil" "os" "strings" "github.com/docker/docker/api/types" "github.com/docker/docker/client")func createDockerTarFile(dockerfile string) (io.Reader, error) { var buf by

2021-08-07 13:48:36 916

原创 启动管理vm虚拟机

# /usr/bin/python3'''#命令管理虚拟机 list, running list, start,stophttps://askubuntu.com/questions/445284/how-to-start-a-virtualbox-machine-via-command-line-without-guivboxmanage list vmsvboxmanage startvm "k8s-node1" --type headlessvboxmanage controlvm "k8

2021-06-05 12:27:32 579

原创 vm啓動虛擬機管理

#命令管理虚拟机https://askubuntu.com/questions/445284/how-to-start-a-virtualbox-machine-via-command-line-without-guivboxmanage list vmsvboxmanage startvm "k8s-node1" --type headlessvboxmanage controlvm "k8s-node1" poweroffpackage mainimport ( "flag" "fm

2021-04-10 09:52:10 229

原创 k8s的rbac授权操作

只说操作不来理论哈rbac是以插件形式串运行Role ---> RoleBinding //作用于用户空间ClusterRole ---> ClusterRoleBinding //使用于集群级别--创建私钥及证书--openssl genrsa -out kuber1.key 2048openssl req -new -key kube-user1.key -out kube-user1.csr -subj "/CN=kube-user1/O=kubern

2021-01-13 21:08:26 456

原创 go微服务初探--基于go-micro框架构建一个简单的微服务接口以etcd为注册中心

etcd版本:etcd-v3.3.25etcd节点:192.168.0.50:2379192.168.0.51:2379192.168.0.52:2379etcd启动配置文件: config.yaml name: consul01data-dir: /usr/local/etcd-v3.3.25/datalisten-client-urls: http://192.168.0.50:2379,http://127.0.0.1:2379advertise-client-urls: ht

2020-12-15 12:48:56 543

原创 go微服务初探--基于GoMicro框架构建一个简单的微服务接口

软件版本信息:go versiongo version go1.14.12 darwin/amd64/**bogon:helloworldweb JackMeng$ micromicro microv113 microv160 microv180 microv29 microv30bogon:helloworldweb JackMeng$ micromicro -versionmicro version v2.8.0-dc57add-1590923188*/c

2020-12-15 10:08:11 533 1

原创 2静态代理模式-golang

代理模式(Proxy pattern)-核心作用: 通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法方法做后置处理。 AOP(Aspect Oriented Promarmming面向切片编程)的核心实现机制。 - 核心角色: a.抽象角色 -定义代理角色和真实角色的公共对外的方法 b.真实角色 - 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 - 关.

2020-11-09 21:34:33 270

原创 1静态代理模式-java

1代理模式(Proxy pattern)-核心作用: 通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法方法做后置处理。 AOP(Aspect Oriented Promarmming面向切片编程)的核心实现机制。 - 核心角色: a.抽象角色 -定义代理角色和真实角色的公共对外的方法 b.真实角色 - 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 - 关

2020-11-09 21:33:56 84

原创 2适配者模式-golang

/** 实现了PS/2 转换成USB目标接口(适配)*//*什么是适配器模式? - 将一个类接口转换成客户希望的另一个接口。Adapter模式使用原本由接口不兼容而不能一起工作的 那些类可以在一起工作。模式中的角色 - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可是接口。 - 需要适配的类(Adaptee):需要适配的类或适配者类 - 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。*/package ad.

2020-11-09 20:33:58 108

原创 1适配者模式-java

什么是适配器模式? - 将一个类接口转换成客户希望的另一个接口。Adapter模式使用原本由接口不兼容而不能一起工作的 那些类可以在一起工作。模式中的角色 - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可是接口。 - 需要适配的类(Adaptee):需要适配的类或适配者类 - 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。package com.mfz.adpapter;//被适配者public class.

2020-11-09 20:33:17 143

原创 2原型模式-golang

package prototypeimport "time"type Lemon struct { Name string Address string CreateTime time.Time}func New(name string, address string, time time.Time) *Lemon{ return &Lemon{ Name: name, Address: address, CreateTime: time, }

2020-11-07 12:40:48 118

原创 1原型模式-java

package com.mfz.prototype;import java.io.Serializable;import java.util.Date;public class Sheep implements Cloneable, Serializable { private String sname; private Date birthday; public Sheep(String sname, Date birthday) { this.sna

2020-11-07 11:42:06 85

原创 原型模式

原型模式(prototype)场景: - 思考一下:克隆技术是怎么样的过程?克隆羊多利大家还记得吗? - javascripte语言中,继承是怎么实现?那里面也有prototype,家还记得吗?原型模式: - 通过new产生一个对象需要非常繁琐的数据准备和权限访问,则可以使用原型模式。 - 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点 - 优势有:效率高(直接克隆,避免了重新执行构造过程步骤) - 克隆类似于new,但是不同于new。

2020-11-07 11:39:52 114

原创 2建造模式-golang

package builderimport "fmt"//引擎type Engine struct { Name string}//逃逸塔type EscapeTower struct{ Name string}//轨道仓type OrbitalModule struct { Name string}type AirShip struct{ Engine *Engine EscapeTower *EscapeTower OrbitalModule *Orbital

2020-11-06 00:26:57 164

原创 1建造模式-java

//产品对象类package com.mfz.builder;public class AirShip { private OrbitalModule orbitalModule; //轨道仓 private Engine engine; //发动机 private EscapeTower escapeTower; //逃逸塔 public AirShip() { } public AirShip(OrbitalModule orbitalModu.

2020-11-06 00:26:15 90

原创 建造者模式

场景: 我们需要建造一个复杂的产品。比如,神州飞船,iphone。这个复杂的产品的创建。有这样的 一个问题需要处理: .装配这些组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,非常复杂,有很多步骤需要处理。 建造者模式的本质: - 分离了对象子组件的单独构造(由builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。 这个模式适用于:某个对象的构建过程复杂的情况下使用。 - 由于实现了构建和装配的解藕。不同的构建

2020-11-06 00:24:51 95

原创 2抽象工厂模式-golang

package abstractFactoryimport "fmt"type Engine interface { Run() Start()}type LuxuryEngine struct{}type LowEngine struct{}func (this *LuxuryEngine) Run(){ fmt.Println("百米加速秒级")}func (this *LuxuryEngine) Start(){ fmt.Println("启动fast")}f

2020-11-04 23:43:27 116

原创 1抽象工厂模式-java

//产品1package com.mfz.abstractFactory;public interface Engine { void run(); void start();}class LuxuryEngine implements Engine{ @Override public void run() { System.out.println("跑的快,降噪"); } @Override public void st

2020-11-04 23:42:26 89

原创 2工厂方法模式-golang

package factoryMethodimport "fmt"type Car interface { Run()}type AudiCar struct {}type BydCar struct {}func (this *AudiCar) Run(){ fmt.Println("Audi is Running")}func (this *BydCar) Run(){ fmt.Println("Byd is Running")}//工厂方法接口type

2020-11-04 23:41:39 90

原创 1工厂方法模式-java

1.工厂方法模式:- 为了避免简单工厂模式的缺点,不完全满足OCP.- 工厂方法模式和简单工厂模式最大的不同在于,简单工厂模式只有一个(对于一个项目或者一个独立的模块而言),而工厂方法模式有一组实现了相同接口的工厂类。package com.mfz.facotryMethod;public interface Car { void run();}package com.mfz.facotryMethod;public class Audi implements Car

2020-11-04 23:40:43 65

原创 2简单工厂实现(静态工厂)-java

package com.mfz.factory;//接口设计public interface Car { void run();}//接口实现者package com.mfz.factory;public class Audi implements Car { @Override public void run() { System.out.println("奥迪再跑"); }}//接收实现者package com.mfz.fact

2020-11-04 23:39:50 93

原创 2-1简单工厂实现(静态工厂)-golang

package simpleFactoryimport "fmt"//接口设计type Car interface { Run();}//产品结构1type Audi struct {}//产品结构2type Byd struct{}//接口实现func (this *Audi) Run(){ fmt.Println("奥迪再奔跑")}//接口实现func (this *Byd) Run(){ fmt.Println("比亚迪再奔跑")}func

2020-11-04 23:38:56 128

原创 工厂模式介绍

工厂模式: - 实现了创建者和调用者的分离。 - 详细分类: a.简单工厂模式 用来生生同一等级的结构中的任意产品(对于新增的产品,需要修改已有的代码) b.工厂方法模式 用来生产同一等级中的固定的产品(支持增加任意产品) c.抽象工厂模式 用来生产不同的产品族的全部产品。(对于新增产品,无能为力,支持增加产品族) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。

2020-11-04 23:37:08 147

原创 ssh批量远程工具(开箱即用)

下载地址:链接:https://pan.baidu.com/s/1FFORgHdmrE-sFGpz6hC6kQ 密码:kwvc使用案列:./ssh_tool_mac -use 场景1(用户+密码组合->单任务): #对单台主机远程执行pwd命令 -r cmd -u root -h 192.168.0.200 -P 22 -p abc-123 -c "pwd" #对0.200,0.201,0.202远程主机发起执行pwd命令 -r cmd -u root -h 192.16

2020-11-04 11:51:20 1389

原创 队列基于顺序存储结构和链式存储结构的代码实现(golang)

队列(Queue):First In Fist Out(FIFO)即先进先出队列的概念:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。package mainimport( "fmt")//===================队列(基于顺序存储结构实现的)===========/** 队列(基于顺序存储结构实现的)*

2020-10-23 11:29:27 121

原创 栈的链式存储结构及实现

对于链表来说,基本不存在栈满的情况,除非内存已经没有可使用的空间。package mainimport( "fmt")type StackNode struct{ Element interface{} Next *StackNode}type LinkStack struct{ LinkStackTop *StackNode Size int}func NewStack()*LinkStack{ return &LinkStack{}}fu..

2020-10-19 22:38:52 147

原创 栈(golang)

栈的定义栈(stack)是限定在仅在表尾插入和删除的操作的线性表。我们允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称空栈。栈又称为后进先出(Last in First out)的线性表,简称LIFO结构。理解栈的定义需要注意: 它是一个特殊的线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表。定义中说在线性表尾进行插入的和删除操作,这里的表尾是指栈顶,而不是栈底。栈的插入,叫作进栈,也称压栈、入栈。栈有删.

2020-10-19 21:45:48 549

原创 双向链表(golang)

package mainimport ( "errors" "fmt")type LinkNode struct { Value interface{} Last *LinkNode //上一个节点地址 Next *LinkNode //下一个节点地址}type LinkList struct { Head *LinkNode Size int //链表的中的元素个数 Num int //链表最大度}func NewLinkList(num int) *LinkL

2020-10-18 10:33:18 87

原创 单链表(golang版本)

package mainimport( "fmt" "errors")type Node struct{ Value interface{} Next *Node}type LinkList struct{ head *Node size int //统计链表中元素的个数 num int //限制链表的最大长度}func NewLinkList(num int) *LinkList{ if num <=0{ num = 100 } re...

2020-10-17 13:50:32 110

原创 使用golang操作redis-curd

package mainimport( "fmt" "github.com/garyburd/redigo/redis" "time")type Redis struct{ pool *redis.Pool Server string Port int Password string DB int}func (r *Redis) InitRedisConn(){ r.pool = &redis.Pool{ Dial:func() (redis.Conn,er

2020-10-11 12:36:44 216 1

原创 使用反射实现序列化与反序列化

conf.iniconfig.ini ;test#test[server]ip=192.168.0.100port = 8080[ mysql]username=rootpassword = abc-123database=testhost=192.168.0.1.1port=3306ini_config.go //实现代码package configimport ("errors""fmt""io/ioutil""os""reflect""strconv"

2020-09-10 17:03:57 302

原创 go文件断点续传(简易版本)

package mainimport ( "fmt" "io" "os" "strconv" "time")type MyCopy struct{}func NewMyCopy() *MyCopy { return new(MyCopy)}var last string = "/tmp/last.txt"/*** 功能:文件复制(支持断点续传)* Seek(offset int64, whence int) (ret int64, err error) 表示设置当前光

2020-09-01 23:01:01 404

原创 链表的实现

package mainimport "fmt"type Node struct { Data interface{} Next *Node}type LinkedList struct { first *Node size int}var linkedList *LinkedList = &LinkedList{} //初始化链表func NewLinkedList() *LinkedList { return &LinkedList{}}/**

2020-06-12 06:59:28 123

原创 线性表的单链式存储

package mainimport ( "fmt")type Node struct { value interface{} next *Node}type LinkedList struct { Size int First *Node}var linkedList *LinkedList = &LinkedList{}/** 在头部添加元素*/func Add(value interface{}) { node := &Node{}

2020-06-03 19:41:04 231

原创 golang实现一个简易的缓存系统

项目结构:├── README.md├── cache│ ├── cache.go│ ├── cache_store.go│ ├── iCache.go│ ├── mcache.go│ └── mcache_test.go├── cache_server│ ├── cacheServer.go│ └── cacheServer_test.go├── constant│ └── constant.go├── cuserror│ └── error

2020-05-19 17:53:13 1106 3

原创 go 的slice

slice初始化的表达式和初始化数组的表大式的区别:slice字面上看去和数组字面量很像,都是用逗号分隔并用花括号括起来的一个元素序列,但是slice没有指定长度。这种隐式区别的结果分别是创建具有固定的长度的数组和创建指定数组的slice。和数组一样,slice也按照顺序指定元素,也可以通过索引来指定元素,或者两者结合。和数组不同的是,slice无法做比较,因此不能用==来测试两个slice是否拥有相同的元素。标准库里提供了bytes.Equal来做比较两个字节slice([]byte)。但是对其

2020-05-19 16:06:28 232 1

原创 golang字符串取反

package mainimport "fmt"func reverse(s string)string{ dt := []rune(s) for i:=0; i < len(dt)/2;i++{ dt[i],dt[len(dt)-i-1] = dt[len(dt)-i-1],dt[i] } return string(dt)}func main(){ s := "1234567" fmt.Println(reverse(s)) s = "hello world"

2020-05-19 15:01:09 780

原创 获取文件基本名

package mainimport "fmt"import "strings"/** 获取文件基本名 */func basename(s string) string{ for i:= len(s)-1; i>=0;i--{ if s[i] == '/' { s = s[i+1:] break } } //保留最后一个'.'之前的的内容 for i:= len(s)-1; i>=0; i--{ if s[i] == '.' { s = s

2020-05-19 14:31:07 185

原创 go io.Copy使用

package mainimport( "os" "fmt" "net/http" "io" "bufio")func main(){ url := "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2134092665,3141066907&fm=26&gp=0.jpg" resp,err := http.Get(url) if err != nil { fmt.Fprintf(os.Std

2020-05-18 22:41:22 1282

原创 go程序在各平台下的打包方式

go build 不同系统下的可执行文件Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。1、Mac下编译Linux, Windows平台的64位可执行程序:$ CGO_ENABLED=0GOOS=linuxGOARCH=amd64go build test.go$ CGO_ENABLED=0GOOS=windowsGOARCH=amd64go build test.go2、Linux下编译Mac, Windows平台的64位可执行程序:

2020-05-18 22:39:40 650

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除