Kubernates实战
1、Namespace资源创建方式
命令行
YAML
名称空间用来隔离资源
命令创建和删除
12kubectl create ns hellokubectl delete ns hello
yaml实现创建和删除
1234apiVersion: v1kind: Namespacemetadata: name: hello
2、Pod2.1单个容器Pod
运行中的一组容器,Pod是kubernetes中应用的最小单位.Pod中可以有多个容器
创建
命令
1kubectl run mynginx --image=nginx
集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod
yaml
1234567891011apiVersion: v1kind: Podmetadata: labels: run: mynginx name: mynginx# namespace: defaultspec: containers: - image: nginx name: mynginx
pod的一些命令非常重要的排错命令
1234# 查 ...
无题
1.简介用于大规模部署拟分布式应用的平台,管理服务容器和资源分配。
2.安装版本一定要对应这里是1.18
2.1命令行工具Kubectl去kubernetes官网下载Kubectl,然后将文件路径配置到环境变量中
2.2配置集群工具kind (k8s.io)
确保在coolcar/server目录下\
1go install sigs.k8s.io/kind@v0.11.1
在go安装目录下的bin就有了kind.exe
建立一个集群kind create cluster
通过设置配置文件来连接集群。
1export KUBECONFIG=~/
1set %KUBECONFIG%=~/
2.3容器
镜像:由docker制作,系统,配置,应用,脚本。就相当于数据
容器运行环境(CRI):
拉取镜像:去镜像仓库拉取。
分配资源
运行镜像
运行环境的实现:例如containerd,Docker,CRI-O。Docker已经弃用,由于需要维护dockershim和docker版本适配,花费太大。
1.创建coolcar/deployme ...
汽车服务设计
[toc]
1.总体架构图
2.carService2.1service层car.go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103package carimport ( "context" carpb "coolcar/car/api/gen/v1" "coolcar/car/dao" "coolcar/shared/id" "go.mongodb.org/mongo-driver/mongo" "go.uber.org/zap" "google.golang.org/grpc/codes" & ...
BFS,DFS的区别及应用场景
1.如果只是要找到某一个结果是否存在,那么DFS会更高效。因为DFS会首先把一种可能的情况尝试到底,才会回溯去尝试下一种情况,只要找到一种情况,就可以返回了。但是BFS必须所有可能的情况同时尝试,在找到一种满足条件的结果的同时,也尝试了很多不必要的路径;
2.如果是要找所有可能结果中最短的,那么BFS回更高效。因为DFS是一种一种的尝试,在把所有可能情况尝试完之前,无法确定哪个是最短,所以DFS必须把所有情况都找一遍,才能确定最终答案(DFS的优化就是剪枝,不剪枝很容易超时)。而BFS从一开始就是尝试所有情况,所以只要找到第一个达到的那个点,那就是最短的路径,可以直接返回了,其他情况都可以省略了,所以这种情况下,BFS更高效。
1091. 二进制矩阵中的最短路径1234567891011121314151617181920212223242526272829func shortestPathBinaryMatrix(grid [][]int) int { n := len(grid) dircts := [][]int{{-1,0}, ...
RabbitMQ简单上手
1.用Docker启动RabbitMQ
拉取镜像
1docker pull rabbitmq:management
运行
1docker run -d --name myrabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
端口映射:
15672:控制台端口号
5672:应用访问端口号
本地访问的网站http://127.0.0.1:15672/
账号:guest
密码:guest
2.RabbitMQ的使用模式2.1收发
2.2工作分配
2.3pub/subx表示exchange,只要绑定了这个exchange的队列,就都收到同样的信息。
2.4路由
2.5topicrouting_key = quick.orange.rabit发送到Q1和Q2
routing_key = lazy.black.dog发送到Q2
3.Go语言使用RabbitMQ拉客户端
1go get github.com/streadway/amqp
3.1收发12345678910111213141516171 ...
链表
322. 零钱兑换123456789101112131415161718192021222324252627282930313233func coinChange1(coins []int, amount int) int { dp := make([]int, amount+1) // 初始化dp[0] dp[0] = 0 // 初始化为math.MaxInt32 for j := 1; j <= amount; j++ { dp[j] = math.MaxInt32 } // 遍历物品 for i := 0; i < len(coins); i++ { // 遍历背包 for j := coins[i]; j <= amount; j++ { if dp[j-coins[i]] != math.MaxInt32 { // 推导公式 dp[j] = min(dp[j], dp[j-coins[i]]+1) //fmt.Println(dp,j,i) } } ...
链表
双向链表146. LRU 缓存1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677package maintype DLinkNode struct { key, val int pre, next *DLinkNode}type LRUCache struct { size, capacity int cache map[int]*DLinkNode head, tail *DLinkNode}func initDLinkNode(key, val int) *DLinkNode { return &DLinkNode{ key: key, val: val, }}func Constructor(capacity int) LRU ...
使用腾讯云对象存储,云存储驾照图片
安装腾讯云的对象存储
tencentyun/cos-go-sdk-v5: 腾讯云 COS GO SDK(XML API) (github.com)
对象存储 快速入门 - SDK 文档 - 文档中心 - 腾讯云 (tencent.com)
1go get -u github.com/tencentyun/cos-go-sdk-v5
永久密钥预签名请求示例下载请求示例1234567891011121314151617181920212223242526func main() { u, err := url.Parse("https://coolcar-1309863650.cos.ap-nanjing.myqcloud.com") if err != nil { panic(err) } // 用于Get Service 查询,默认全地域 service.cos.myqcloud.com su, _ := url.Parse("https://cos.ap-nanjing.myqcloud.com" ...
Go基础查漏
闭包的理解
变量是存在闭包当中,下一次调用的时候,还是会用这个变量的值
当函数func2()有变量值的时候,函数的调用时候的变量值是存在于调用的函数栈当中,也就是val值存在printFunc2()函数栈中,所以defer函数对于val是有影响的。
如果函数没有变量值,val仅限于func3()中。
1,2
101
100
Goroutine下面的代码会出现重复打印多次相同的元素。
出现的原因就是在goroutine栈中使用变量的时候,gorutine栈中的变量还没有刷新
123456789101112func main() { data := make(map[int]int, 10) for i := 1; i <= 10; i++ { data[i] = i } for key, value := range data { go func() { fmt.Println("k->", key, "v->", value) }() } ...