自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang strings包使用

分析strings标准库包主要涉及字符串的基本操作。常见字符串的操作有:字符串求长度求子串是否存在某个字符或者子串子串出现的次数(字符串匹配)字符串分割(切分)成[]string字符串是否存在某个前缀或后缀字符或者子串在字符串中首次出现的位置或最后一次出现的位置通过某个字符串将[]string进行拼接字符串重复次数字符串中子串替换大小写转换等等。由于string类型可以看成是一种特殊的slice类型,因此获取长度可以用内置的函数len;同时支持 ****切片 操作****,

2021-07-11 15:16:54 1473

原创 记一次mac设置export环境变量之后,重启失效的解决方式

最近在研究kubebuilder和cobra,但是安装文件之后,命令一直找不到,当时是记得已经export二进制文件地址了下面是解决办法:首先在 /Users/HOME/.bash_profile 中声明,export xxxx,和命令行中声明一致然后找到下面文件 /Users/HOME/.zshrc 中文件中关联 .bash_profile在 .zshrc 文件中添加一句source ~/.bash_profile做一个.bash_profile关联保存关闭之后 source .zshr

2021-07-03 10:14:02 3251

原创 golang pflag包源码和用法解析

pflag 简介之前我们讲过golang flag包的源码和基本用法,其实对于命令行参数解析,golang有一个更好用的包,叫做pflagpflag是Go的flag包的直接替代,实现了POSIX / GNU样式的–flags。pflag是Go的本机标志包的直接替代。如果您在名称“ flag”下导入pflag,则所有代码应继续运行且无需更改。flag和pflag都是源自于Google,工作原理甚至代码实现基本上都是一样的。 flag虽然是Golang官方的命令行参数解析库,但是pflag却得到更加广泛的

2021-07-02 20:05:40 2799

原创 golang flag包源码解析

在写命令行程序(工具、server)时,对命令行参数进行解析,是一种常见的需求。各种语言一般都会提供相应的方法或库,以方便开发者使用。在go标准库中提供了一个包:flag,方便进行命令行解析。也就是说,Go的flag包用来解析命令行参数。flag 用法命令行flag的语法有如下三种形式:-flag // 只支持bool类型-flag=x-flag x // 只支持非bool类型第三种形式只能用于非bool类型的原因是:对于这样的命令 cmd -x *,如果有一个文件名字是:0或false等,则

2021-07-01 23:30:59 1948 1

原创 Golang包管理,go module模式、go mod和go sum等文件介绍

Go 包管理详解理解 vendor 特性先来理解一下 vendor随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案。在Go 1.6之前,你需要手动的设置环境变量GO15VENDOREXPERIMENT=1才可以使Go找到Vendor目录,然而在Go 1.6之后,这个功能已经不需要配置环境变量就可以实现了。即使使用vendor,也必须在GOPATH中,无论是通过IDE设置项目目录的GOPATH还是通过go环境变量设置GOPA

2021-06-27 21:09:47 16765 2

原创 golang交叉编译总结

Golang 在 Mac、Linux、Windows 下如何交叉编译Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 Mac 和 Windo

2021-06-26 21:44:57 2212 1

原创 Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用

工作中用到了 Elasticsearch 对接 fluent-bit,这里查些资料,做些摘录和总结ES 快速开始Elasticsearch安装简介Elastic Stack 是应对多种搜索场景的一站式解决方案。主要产品包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。其中Beats 平台集合了多种单一用途数据采集器。它们可以从成百上千或成千上万台机器和系统

2021-06-26 21:28:43 2113 2

原创 kubernetes cronjob 时区问题

看文档Caution:All CronJob schedule: times are based on the timezone of the kube-controller-manager.If your control plane runs the kube-controller-manager in Pods or bare containers, the timezone set for the kube-controller-manager container determines the

2021-06-25 12:27:03 1188

转载 Alertmanager使用介绍以及源码剖析

优秀文章的搬运工: http://just4fun.im/2018/05/25/study_alertmanager/alertmanager功能介绍我们先从应用的角度来看详细的介绍一下alertmanager以下简称am,以下是官方文档介绍。The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, groupin

2021-06-15 19:03:09 1217

原创 prometheus 指标抓取分析

scrape模块在prometheus中负责着采集具体指标,并记录到后端存储中的功能,可以说是prometheus最为核心的一个功能模块篇幅较长,需要耐心指标采集简介为了从服务发现(serviceDiscover)实时获取监控服务(targets),指标采集(scrapeManager)通过协程把管道(chan)获取来的服务(targets)存进一个map类型:map[string][]*targetgroup.Group.其中,map的key是job_name,map的value是结构体targe

2021-06-15 13:39:34 2940

原创 prometheus 服务发现分析

服务发现简介云原生、容器场景下按需的资源使用方式对于监控系统而言就意味着没有了一个固定的监控目标,所有的监控对象(基础设施、应用、服务)都在动态的变化,这对基于Push模式传统监控软件带来挑战。对于Prometheus这一类基于Pull模式的监控系统,显然也无法继续使用的static_configs的方式静态的定义监控目标。而对于Prometheus而言其解决方案就是引入一个中间的代理人(服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus只需要向这个代理人询问有哪些监

2021-06-15 13:36:43 574

原创 prometheus 源码分析-总览

以下包括链接中的分析皆是平时网上学习以及自己用到的一些知识,简单做个总结,基于版本2.27架构总览Prometheus server 的核心功能模块是 HTTP server、TSDB 、服务发现和指标抓取Prometheus 整个工作流程大概是这样的:通过 Service discovery 知道要抓取什么指标抓取指标数据存入 TSDB客户通过 HTTP server 使用 PromQL 查询结果主要工作流程(main.go)设置命令行参数及其默认值和描述信息解析启动命令的命令行

2021-06-15 13:34:39 2688

原创 Alertmanager 配置文件分析、原理和源码分析

相关prometheus组件的基本知识总结,以下分析仅代表个人观点,如有错误还请指出,不胜感谢!基本概述我们先从应用的角度来看详细的介绍一下alertmanager以下简称am,以下是官方文档介绍。The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to

2021-06-04 16:26:18 1900

原创 记一次gmail邮件发送失败问题,smtplib.SMTPServerDisconnected: Connection unexpectedly closed

# 通过 smtp.gmail.com:587 发送import smtplibsmtp = smtplib.SMTP()(code, resp) = smtp.connect("smtp.gmail.com:587")smtp.ehlo()smtp.starttls()smtp.ehlo()(code, resp) = smtp.login("sender@gmail.com", "password")smtp.sendmail("sender@gmail.com", ["receive

2021-04-23 14:36:02 1788

原创 纯干货整理,一文看懂 kubebuilder 安装,部署以及源码controller-runtime等库分析

快速开始构建go环境curl -o /tmp/go1.13.14.linux-amd64.tar.gz https://dl.google.com/go/go1.13.14.linux-amd64.tar.gzrm -rf /usr/local/go/ && tar -C /usr/local/ -zxf /tmp/go1.13.14.linux-amd64.tar.gzcat <<"EOF" | tee -a ~/.bashrc# add by chengql st

2021-04-20 19:06:10 2678

原创 使用python发送个人邮箱和企业邮箱区别以及如何使用exchange server 发送邮件

对于邮箱协议和常用的服务器配置,请见 here使用个人邮箱和企业邮箱的代码有点差别使用个人邮箱,QQ为例密码使用qq的授权码,进入网页版qq邮箱->账号下smtp服务部分可看见#发送邮件通知成绩for stu in student: smtpObj = smtplib.SMTP('smtp.qq.com', 587) #smtpObj.set_debuglevel(1) # 方便debug smtpObj.ehlo() smtpObj.starttls()

2021-02-07 11:27:20 1143

原创 邮件协议POP3/IMAP/SMTP学习总结 SSL/TLS介绍 常用邮箱服务器设置

邮箱协议介绍首先,SMTP、POP和IMAP都是与邮件有关的协议。SMTP主要是负责传送邮件,而POP和IMAP是负责接收邮件。SMTPSMTP (Simple Mail Transfer Protocol),即简单邮件传输协议,默认端口是25,通过SSL协议加密之后的默认端口是465。正如名字所暗示的那样,它其实是一个非常简单的传输协议,无需身份认证,而且发件人的邮箱地址是可以由发信方任意声明的,利用这个特性可以伪造任意发件人。它是用于从源地址到目的地址传输邮件的协议,通过它来控制邮件的中转方式。S

2021-02-07 10:49:57 18813

转载 kuberbetes client-go的使用及源码剖析

1. client-go简介1.1 client-go说明client-go是一个调用kubernetes集群资源对象API的客户端,即通过client-go实现对kubernetes集群中资源对象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增删改查等操作。大部分对kubernetes进行前置API封装的二次开发都通过client-go这个第三方包来实现。client-go官方文档:https://github.com/k

2021-02-04 13:34:21 689

转载 python socket 原理及底层实现

python socket 三部曲

2020-11-27 10:15:52 326

原创 kubernetes 强制删除资源

一般强制删除 kubernetes 的资源:kubectl delete <resource> <resourename> --grace-period=0 --force --wait=false强制删除不掉的话,可以使用:kubectl patch <resource> <resourename> -p '{"metadata":{"finalizers":null}}'...

2020-09-16 13:16:06 2369

原创 记一次修改 macos 路由笔记

mac osx虽然是类unix的系统,默认也是bash shell,但是修改mac地址及管理路由表跟linux还是不一样。修改mac地址,重启后失效sudo ifconfig en0 lladdr d0:67:e5:2e:07:f1查看路由表(命令用得都与linux不一样)netstat -nr添加到指定网络的路由route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.100.1route add 10.0.1.0/24 10

2020-09-11 10:03:33 1921

原创 MongoDB自动删除过期数据--TTL索引

TTL索引TTL索引是一些特殊的索引,MongoDB可以在一段时间后使用它自动从集合中删除文档。这对于某些类型的信息比如机器生成的事件数据,日志和会话信息是合适的,因为这些信息只需要在有限的时间内保留在数据库中。官方文档:https://docs.mongodb.com/manual/tutorial/expire-data/目前TTL索引只能在单字段上建立,并且字段类型必须是date类型或者包含有date类型的数组(如果数组中包含多个date类型字段,则取最早时间为过期时间)机制当你在集合中某一

2020-09-08 19:39:37 938

转载 openstack: Ceilometer Alarm API 参数详解

Ceilometer Alarm是H版新添加的功能,监控报警是云平台不可缺少的部分,Ceilometer已经实现了比较完善的监控体系,报警怎么能缺少呢?用过AWS CloudWatch Alarm的人应该不会对Ceilometer的Alarm感到陌生,Ceilometer实现的Alarm和CloudWatch的Alarm很像,概念基本上都一样,Alarm的逻辑也基本上一样,可以说是一个开源版的CloudWatch Alarm,但是它进行了一些“微创新”,实现了一些比较有意思的小功能,而且代码写的也非常不错,

2020-09-07 22:43:58 397

原创 Python 时间函数总结

import time, datetimeimport pytzfrom dateutil import parser'''时间函数分析''''''1. from dateutil import parser # 解析时间为 <type 'datetime.datetime'>'''# 输入美式日期print parser.parse('22nd,July,2009') # 2009-07-22 00:00:00 # <type 'datetime.datetime'&

2020-09-07 11:01:07 203

原创 Python 之安装第三方库

正常安装ubuntu 使用 sudo apt-get xxxcentos 使用 yum install xxx为了下载速度,可以将相关源都配置下下载包安装.whl文件安装方法python2.x系列环境下用: pip install whl文件名python3.x系列环境下用: pip3 install whl文件名.tar.gz安装方法先解压文件,然后进入到该文件目录下,执行python setup.py install或者不解压直接执行命令pip install ***.tar.

2020-09-06 13:12:50 125 1

原创 Python 之函数指针

下面是python 中函数指针的一个用法:def cal(a, b): return a + b def compute(a, b , fun): result = fun(a , b) print(result) if __name__ == "__main__": fun = cal compute(1, 1 , fun)在fun=cal 的时候,此时 cal 并没有执行,只是拿到了该函数的引用,可以把这个操作当做变量赋值,实际执行是在执行 comp

2020-09-06 10:23:22 3270

转载 Mistral fails to start with - password authentication failed for user

Describe the problemThe mistral-api and mistral-server services fail to start in the stackstorm container. TheVersionsHost OS: CentOS 7.4docker: Docker version 18.03.1-ce, build 9ee9f40docker-compose: docker-compose version 1.21.2, build a133471sta

2020-08-26 15:16:15 194

原创 PostgreSql: 个人学习总结记录

PostgreSQL的默认密码,如何修改密码?首次连接Linux上的PostgreSQL时,许多管理员都会有疑问,尤其是那些管理员来自MySQL世界。默认情况下,当安装PostgreSQL时,会添加postgres用户。如果你运行以下命令:cat /etc/passwd你会看到一个名为postgres的用户。postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash第一个问题是,用户"postgres"的默认密码是什么? 回答很容易

2020-08-26 15:14:49 440

转载 OpenStack之:python-ceilometerclient 源码 学习记录

此篇文章介绍关于在命令行输入相关命令之后,这个命令是如何调用并且执行的代码结构首先介绍一下代码目录的结构--ceilometerclient --common/ --openstack/ --tests/ --v1/ --v2/ --client.py --shell.py --exc.py其中commonopenstack提供utils帮助类,tests是测试用例目录,v1v2分别对应ceilometer的v1和v2版本。client.py提供获

2020-08-23 18:08:45 285

原创 openstack之:keystone 学习总结记录

在了解 keystone 之前,我们来简单介绍下用户身份校验大概有几种方式广义认证方式简介广义上讲,用户身份认证并不仅限于领域。广义上的身份识别技术有如下几种:静态密码、动态密码(短信密码、动态口令牌)、令牌、USB KEY、数字证书、生物识别技术。在以上几种认证方式中,我们IT人员在数据中心通常能够遇到的是:静态密码、动态口令牌、数字证书、令牌认证(token)。静态密码在四种认证方式中,最常见的就是静态密码。如果要加强动态密码的安全性,通常是通过增加密码的复杂度,设置密码过期时间的方法。大多数

2020-08-23 16:23:16 2981

原创 Python 小白学习之:tuple 和 dict

元组 tuple 元组是不可变的序列,同list一样,元组可以储存任意类型的数据的容器 元组的表达方法: 用小括号()括起来,单个元素括起来后加逗号(,)区分单个对象还是元组 创建空元组的字面值方式: t = () # 创建一个空元组用t绑定 创建非空元组的字面值 t = 200, # 创建一个只有数字200的元组用t绑定 t = (20,) # 为了区别于(20),(20)是一个表达式 t = (1,2,3) t = 100,200,300 创建元组的错误

2020-08-23 14:27:08 428

原创 Python 小白学习之:list

列表的比较运算: 运算符: < <= > >= == != 说明: 列表的比较规则与字符的比较规则相同 列表要求每两个元素能依次进行比较,否则就会出现类型错误 示例: [1,2,3] < [1,2,4] # True [1,2,3] != [1,2,4] #True ["One","Two"] < ["1","2"] # False [1,'Two'] > ['Two'.

2020-08-23 14:25:34 141

原创 Python 小白学习之:循环语句和 list基础

中文的ord>=128 英文的ord<128 while语句的注意事项: 1.要控制循环的真值表达式的值来防止死循环 2.通常用真值表达式内的循环变量来控制循环条件 3.通常在语句内部改变循环变量 while语句的嵌套: while语句本身就是语句,和其他语句一样,可以嵌套到任何的复合 语句中 示意: while 真值表达式: .... while 真值表达式2: ..

2020-08-23 14:24:17 145

原创 Python 小白学习之:字符串和循环语句

字符串的基本操作 索引 index Python字符串是不可以改变的字符序列 索引取值语法: 字符串[整数表达式] s = 'ABC' s[0] # A s[1] # B s[2] 或 s[1+1] # B 说明: Python的序列都可以用索引来访问序列中的对象 Python序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1 Python序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个, 以此类推。第

2020-08-23 14:22:36 394

原创 Python 小白学习之:if语句和字符串

if语句 if语句的作用: 让程序根据条件选择性的执行某条语句或者某些语句 语法: if 真值表达式1: 语句块1...(语句块前面需要4个字符缩近) elif 真值表达式2: 语句块2... elif 真值表达式3: 语句块3 ... else: 语句块4 说明:elif 子句可以有0个,1个或多个 else 子句可以有0个或1个,且只能放在if语句的最后 示例见:if.py 练习: 任意输入一

2020-08-23 14:21:11 1925

原创 Python 小白学习之:基本语句

编辑器 :vscode(Visual Studio Code / Microsoft) 字体缩放 :ctrl+shift+“+” ctrl+“-” 注释:ctrl+/ 保存:ctrl+s(保存) 启动vscode的命令 :code <回车> code 文件名<回车> code 文件夹名<回车> 多行光标:alt+鼠标左键

2020-08-23 14:19:19 187

原创 pip 简单命令总结

➜ pip --helpUsage: pip <command> [options]Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output install

2020-08-22 20:29:18 144

原创 消息队列之:oslo_messaging

上一篇我们介绍了 RabbitMq 的相关知识今天介绍一下 openstack 中关于 RabbitMq 和 oslo_messaging 库之间的前生今世一定要弄清楚的一个问题就是:直接使用rabbitmq和使用oslo_messaging这个库间接的使用有什么区别。olso_messaging实际上是在rabbitmq的基础上通过一些列的调用,最终暴露给用户一个简单的使用接口,用户不必关心内部的实现,只用配置好配置文件,进行简单的函数调用即可。并且由于这个库是openstack的标准库,里面的一

2020-08-13 18:45:08 1777

原创 Python 小白学习之:linux 基础和 python 入门

Day01回顾 1、测试环境的安装 1、下载材料 :VMware、Ubuntu16.04 2、组装电脑 :文件--新建虚拟机 3、插入光盘 :CD/DVD-- Ubuntu16.04.IOS 4、通电开机 :开启此虚拟机 5、安装软件 :搜狗输入法、Chrome浏览器 ... 2、Linux 1、路径 1、绝对路径 :/ 开始 2、相对路径 :. .. ~ 目录名/..... 2、pwd :显示当前路径 3、ls -la :查看目录下内容 4、cd :切换目

2020-08-11 18:58:06 360

原创 Python小白学习之: linux 入门

1、三大操作系统 1、Unix Mac OS 、 Solaris 2、Linux(由Unix衍生) RedHat、CentOS、Ubuntu 16.04(教学环境版本) 3、Windows win7、win8、win102、VMware Workstation(测试、学习) 1、功能强大的桌面虚拟计算机软件 2、开发、测试、部署应用程序的利器 3、教学(开发、测试部署)环境安装 1、下载VMware Workstion安装包并

2020-08-11 18:47:25 172

空空如也

空空如也

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

TA关注的人

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