自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux namespace简单操作

linux namespace1. 创建网络命名空间[root@mgt01 netns]# ip netns add netns1[root@mgt01 netns]# ip netns lisnetns12. 在net namespace中执行命令[root@mgt01 netns]# ip netns exec netns1 ping 127.0.0.1ping: connect: 网络不可达3. 打开本地会还网卡[root@mgt01 netns]# ip netns exec

2021-10-26 17:09:21 1119

原创 linux bridge简单操作

linux bridge1. 创建一个bridge和veth pair并将veth pair一端连在bridge上ip link add name br0 type bridgeip link set br0 upip link add veth0 type veth peer name veth1ip addr add 172.31.1.139/20 dev veth0ip addr add 172.31.1.140/20 dev veth1ip link set veth0 upip

2021-10-26 17:08:51 322

原创 linux替换json某个key的值

1. 概述开发过程中我们经常会遇到需要更改json文件中某个key的值的问题。此处介绍使用jq来更改key的value,非常简洁强大。2. 首先创建一个json文件内容如下root@mgt01:~/csf# cat test.json | jq .{ "num1": "a", "num2": "b"}3.将num1的value改为Aroot@mgt01:~/csf# cat test.json | jq '.num1="A"'{ "num1": "A", "num2": "

2021-10-18 16:16:53 2421

原创 ppstgres数据库大小查询

1.查询单个表的大小select pg_size_pretty(pg_relation_size(‘表名’));2.列出所有表的大小SELECT table_schema || ‘.’ || table_name AS table_full_name, pg_size_pretty(pg_total_relation_size(’"’ || table_schema || ‘"."’ || table_name || ‘"’)) AS sizeFROM information_schema.tabl

2021-10-15 10:54:28 160

原创 解决删除statefullset的pod,卷detach不掉的问题

volume挂载卸载不掉1.现象sts重启后pod启动报错,volume in use问题:执行 kubectl get pv 看rdb的image//查看对应的节点2. rbd status pool/imageName: 查看Watchers,所在的节点3. 进入该节点执行: rbd showmapped | grep kubernetes-dynamic-pvc-534aa036-48e6-11eb-8d56-525400f6dbb98 k8s-data kubernetes-dy

2021-10-15 10:53:53 240

原创 k8s 自定义调度器-extender

自定义调度器(extender方式)1. 通过scheduler_extender的方式进行扩展在调度 Pod 时,扩展器允许外部进程过滤节点并确定其优先级。 向扩展程序发出两个单独的 http/https 调用,一个用于“过滤器”,另一个用于“优先”操作。 此外,扩展程序可以选择通过实现“绑定”操作将 pod 绑定到 apiserver。要使用扩展程序,您必须创建调度程序策略配置文件。 配置指定如何到达扩展器,是使用 http 还是 https 以及超时。即实现两个http接口,一个用于”预选“,

2021-08-03 11:14:44 1468 3

原创 golang sync.cond条件变量详解

1. 怎么去通知阻塞协程继续运行如果一个协程走到某个逻辑后,需要在某种条件达成后才能继续往下走,这怎么实现呢。对于单个协程,golang中的channel完全可以实现协程的通信。如下,是使用channel,通知阻塞的协程继续运行func main() { s := &signal{ reRUn: make(chan struct{}, 1), } go func() { time.Sleep(2 * time.Second) s.signalReRun() }()

2021-07-30 16:19:28 282

原创 golang实现链表反转,迭代法、递归法

链表反转golang实现leetcode链接剑指offer解法一:迭代(执行用时0s,内存消耗2.5MB(81.56%))1、 直接贴代码,看完注释还不懂你打死我!!!func reverseList(head *ListNode) *ListNode { //判断head是否为nil若为nil则直接返回 if head == nil { return head } //使用head保存当前元素 //使用next保存下一个需要反转的元素,初始的时候为nil //定义pre保存当前元

2021-05-30 21:14:09 364

原创 k8s集群v1.21.1安装

安装k8s集群v1.21.11. 安装脚本#!/bin/bash# 关闭防火墙systemctl stop firewalld.servicesystemctl status firewalld.servicesystemctl disable firewalld#关闭swapswapoff -ased -ri 's/.*swap.*/#&/' /etc/fstabecho "vm.swappiness = 0" >> /etc/sysctl.confsysct

2021-05-16 16:44:28 1996

原创 kubectl命令自动补全

kubectl命令自动补全1. Linuxyum install -y bash-completionsource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc2. mac$ brew install bash-completion$ source $(br

2021-05-16 16:35:08 75

原创 centos7 设置静态ip 一看就会

centos7 设置静态ip1. vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"#设置为staticBOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-pr

2021-05-16 14:52:18 78

原创 golang 锁

锁一、未加锁场景1. 直接而上代码:package mainimport "sync"func main() { for j := 0; j < 3; j++ { var wg sync.WaitGroup // 变量 var counter int for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() counter++ }() } wg.

2021-04-22 09:42:36 403 2

原创 golang context包

golang context包一、概念及作用context用于并发控制,一方面用于当请求超时获取小时,goroutine马上退出并释放资源,另一方面context本身含义就是上下文,可以用在多个goroutine间传递共享信息。二、Context使用示例1. 超时控制//使用context.WithTimeout定义超时时间package mainimport ( "context" "time" "fmt")func main() { now := time.Now().U

2021-04-22 09:41:31 73

原创 golang实现队列

队列概念:有序列表,可用数组或链表实现,先入先出数组实现:需要环形队列,否则不能重复利用数组实现环形队列实现(golang实现)type MyCircularQueue struct { arr []int maxsize int front int rear int}/*Initialize your data structure here. Set the size of the queue to be k. */func Constructor(k i

2021-04-22 09:32:40 383

原创 goalng实现栈及八皇后问题

栈特点:先进后出,后进先出应用场景:子程序的调用:在跳往子程序前,先将下个指令的地址存储到堆栈中,直到子程序执行完成后再将地址取出,以回到原来的程序中;递归调用:和子程序调用类似,存储下个指令的地址、参数、区域变量等表达式转换(中缀表达式转后缀表达式)与求值(实际解决)二叉树遍历图形的深度优先搜索算法1. 迷宫问题1.1 问题描述在一个n*m的迷宫里,每一bai个坐标点有两种可能:0或1,0表示du该位置允许通过,1表示该位置不zhi允许通过1.2 解法:package ma

2021-04-22 09:31:48 118

原创 Redis面试题锦

Redis面试题锦概述常见问题一、概述最近领导让我来面试一些候选人,我挑了一些高频知识点总结,以免到时候忽悠不了候选人(哈哈),此为Redis篇。二、常见问题2.1 Redis概念(参考百度百科)1. Redis全称:REmote DIctionary Server(Redis) ,即远程字典服务,是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。2. 支持的数据类型:String: 字符串、Ha

2021-04-22 09:30:51 110

原创 client-go组件详解

client类型informer机制client类型1.RestClient:最基础的,相当于底层数据结构,可以通过RestClient提供的RestFul方法,如Get(),Put(),Post(),Delete(),进行交互同时支持json和protobuf支持所有的原生资源和CRDs但是一般而言,为了更为优雅的处理,需要进一步封装RestCLient为ClientSet,然后对外提供接口和服务2.CleintSet:是调用kubernetes资源对象最常用的client,可以操作.

2021-04-22 09:27:28 1337

原创 golang数组与切片

数组切片数组固定长度的特定类型元素组成的序列,与c语言区别,golang中的数组是值类型的.func main () { arr := [2]int{1, 2} passArr(arr) fmt.Println(arr[0], " ", arr[1])}func passArr(arr [2]int) { arr[0] = 10 fmt.Println(arr[0], " ", arr[1])}值传递,在子方法中修改数组,不会影响原数组的数据。copy副本的..

2021-04-22 09:21:03 151

原创 coba包使用详解

coba包使用详解1. 概述cobra是用于创建应用程序命令行的库,大名鼎鼎的k8s,docker,hugo等均采用cobra来构建自己的命令行。cobra提供了简单的接口,用于创建功能强大的现代CLI界面,类似于git和go。使用cobra可以快速的生成命令框架2. 概念cobra用于生成包含commands、arguments、flags的CLIcommands代表动作,如create、update、path(kubectl),arguments 就是命令行参数(或者称为位置参数), Fl

2021-04-22 09:19:34 742

原创 docker网络详解

docker网络详解1.docker网络类别root:~# docker network lsNETWORK ID NAME DRIVER SCOPEb3c345a17e86 bridge bridge local3deaa31920b0 host host local31ef7847

2021-04-22 09:16:47 153

原创 openstack概念及其组件

简介openstack是一套资源管理平台主要基于KVM之上开源、免费、python编写openstack与云计算云计算需要openstackopenstack是一个管理平台openstack管理的是计算、网络、存储等资源计算、网络、存储需要云计算技术虚拟化技术需要底层硬件支持openstack架构介绍KeyStone:负责认证,keystone API和Keystone DBNova:负责计算,核心模块,创建虚拟机,虚拟机调度等。控制节点,计算节点(Nova compute

2020-09-14 22:36:39 244

原创 golang-最长公共前缀

最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回""示例1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释:思路:循环遍历字符串数组,假设第一个字符串为最长前缀,判断该字符串是否为其他字串的前缀,若不是则除去最后一个字符继续判断。代码:package mainimport ( "strings" "fmt")func mai

2020-09-14 22:34:09 340 2

原创 KVM简介

KVM概念KVM(kernel-based Virtual Machine):开源免费,架构简单,性能卓越,社区活跃基于硬件辅助的开源虚拟化解决方案基于Linux内核的虚拟化技术, 可以直接将Linux内核转换为Hypervisor,)从而使得Linux内核能够直接管理虚拟机,直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机架构两大方面:KVM模块以及QEMU-KVMkvm-ko(主要模块),kvm_intel.ko,kvm_amd.koQEMU-KVM通过修改qemu代

2020-09-09 23:34:36 611

原创 UnicodeDecodeError: ‘ascii‘ codec can‘t decode...

问题描述将str类型的keyvalue,执行keyvalue.decode()UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 5587: ordinal not in range(128)原因:python的str默认是ascii编码,和unicode编码冲突。解决方法:# 导入sys模块import sys# 重新加载sys模块reload(sys)# 设置编码格式为utf-8sys.set

2020-09-03 23:34:52 504

原创 虚拟化基础

虚拟化CPU虚拟化目标是GuestOS(vm中的os)里的指令能够正常执行,然后要保证性能和效率,尽可能的接近物理机。方式:全虚拟化、半虚拟化、硬件辅助虚拟化1. CPU全虚拟化定义:全虚拟化是指虚拟机模拟了完整的底层硬件,使得为原始硬件设计的操作系统或其他软件完全不用做任何修改就可以在虚拟机上运行。实现:特权级压缩和二进制翻译(BT)技术 :正常情况下Ring0是特权敏感指令, 操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。虚拟

2020-09-03 23:32:30 1658

原创 多进程与多线程的区别与联系

一、进程与线程 进程是被执行的应用程序,同时也是系统资源分配的最小单位(虚拟地址空间等资源,见下图),一个进程中可以包含多个线程。操作系统会为每个进程分配一定的虚拟地址空间,该虚拟地址空间由进程独享 线程则是CPU进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位。一个进程中可以包含多个线程,这些线程可以同时执行不同的任务(例如一个线程监听用户输入...

2019-04-01 20:44:28 3340

原创 c++构造函数与析构函数

1.构造函数:构造函数,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做只要写了一个其他的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来。一般构造函...

2019-03-20 20:33:00 96

原创 完美世界c++面试总结

1.谈一谈自己的做过的项目,遇到的难题怎样解决。答:略。2.数组和链表的区别。答:C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的...

2019-01-17 17:00:09 1408

原创 数据结构 链表详解

1.什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。2.链表和数组的区别?线性表包括数组和链表两种,数组是采用连续的存储空间,数组具有随机存储的特性,什么是随机存储特性,也就是说num[i] 的时间复杂度是O(1),数组的缺点在于:在头部插入时 ...

2019-01-17 16:01:05 305

空空如也

空空如也

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

TA关注的人

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