笔记-04-Golang Runner
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374package commonimport ( "errors" "os" "os/signal" "time")var ErrTimeOut = errors.New("执行者执行超时")var ErrInterrupt = errors.New("执行者被中断")//一个执行者,可以执行任何任务,但是这些任务是限制完成的,//该执行者可以通过发送终止信号终止它type Runner struct { tasks []func(int) //要执行的任务 complete chan error //用于通知任务全部完成 timeout <-ch ...
笔记-03-Golang接口型函数
1234567891011121314151617181920212223242526272829303132333435363738394041package mainimport ( "fmt")type Handler interface { Do(k, v interface{})}type HandlerFunc func(k, v interface{})func (f HandlerFunc) Do(k, v interface{}) { f(k, v)}func Each(m map[interface{}]interface{}, h Handler) { if m != nil && len(m) > 0 { for k, v := range m { h.Do(k, v) } }}func EachFunc(m map ...
笔记-02-Golang注意点
指针陷阱12345678910111213141516package mainimport "fmt"type user struct { name string}func main() { tom := &user{ name: "tom", } jack := tom jack.name = "jack" fmt.Println(tom.name) // jack}
tom是指向user的指针,name=tom
tom赋值给jack
jack修改name=jack
tom.name也变为jack
struct赋值顺序123456789101112131415161718package mainimport ( "fmt")type user struct { name string age int}func main() { tom := &user{ name: fmt.Spr ...
笔记-01-如何编写可靠的shell脚本
开头指定bash指定bash的方式有很多,不过建议使用下面两种中的一种:
12#!/usr/bin/env bash#!/bin/bash
1、运行./a.sh时,当没有指定shebang时,就会默认用$SHELL指定的解释器,否则就会用shebang指定的解释器
2、#!/bin/bash 的方式限制了代码注入的可能,在某些情况下更安全
3、#!/usr/bin/env bash 的方式通过添加env中间层,使得可以在$PATH中搜索bash,提供灵活性、适应性
用双引号包围变量如以下片段
12345#!/bin/bashfilename="hah hah"if [$filename = "test"];then echo "test"fi
运行会报错,因为等号前后字符串个数不一致。正确的做法是如下代码
12345#!/bin/bashfilename="hah hah"if ["$filename" = "test"];then echo "test&q ...
Vue 2.x笔记
Vue 引言
渐进式 JavaScript 框架 –摘自官网
12345678910111213141516171819202122# 渐进式 1. 易用 html css javascript 2. 高效 开发前端页面 非常高效 3. 灵活 开发灵活 多样性# 总结 Vue 是一个javascript 框架 js 简化页面js操作 bootstrap 是一个css框架 封装css# 后端服务端开发人员: 页面标签 dom jquery js document.getElementById("xxx") Vue 渐进式javascript框架: 让我们通过操作很少的DOM,甚至不需要操作页面中任何DOM元素,就很容易的完成数据和视图绑定 ====> 双向绑定 MVVM 注意: 日后在使用Vue过程中页面中不要在引入Jquery框架 html css--->javascript(document.getElementById()...) -----> jquery($("#xx&q ...
实用Python脚本
企业微信告警此脚本通过企业微信应用,进行微信告警,可用于 Zabbix 监控。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172# -*- coding: utf-8 -*-import requestsimport jsonclass DLF: def __init__(self, corpid, corpsecret): self.url = "https://qyapi.weixin.qq.com/cgi-bin" self.corpid = corpid self.corpsecret = corpsecret self._token = self._get_token() def _get_token(self): ''' ...
实用Shell脚本
检测两台服务器指定目录下的文件一致性12345678910111213141516171819202122232425#!/bin/bash######################################检测两台服务器指定目录下的文件一致性######################################通过对比两台服务器上文件的md5值,达到检测一致性的目的dir=/data/webb_ip=192.168.88.10#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中find $dir -type f | xargs md5sum >/tmp/md5_a.txtssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt"scp $b_ip:/tmp/md5_b.txt /tmp#将文件名作为遍历对象进行一一比对for f in $(awk '{print 2} /tmp/md5_a.tx ...
技巧-03-Linux科学上网
安装v2ray执行以下脚本
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 ...
技巧-02-下载gcr镜像
国内借助阿里云快速获取gcr.io上的镜像
创建镜像仓库,点击下一步
设置代码源,一定要勾选海外机器构建
创建完之后点击管理
设置对应的规则,点击立即构建
稍等片刻,等待构建成功
在基本信息中可以查看docker pull的命令
综合架构-Prometheus-PromQL
理解时间序列123456# HELP node_cpu Seconds the cpus spent in each mode.# TYPE node_cpu counternode_cpu{cpu="cpu0",mode="idle"} 362812.7890625# HELP node_load1 1m load average.# TYPE node_load1 gaugenode_load1 3.0703125
其中非#开头的每一行表示当前Node Exporter采集到的一个监控样本:node_cpu和node_load1表明了当前指标的名称、大括号中的标签则反映了当前样本的一些特征和维度、浮点数则是该监控样本的具体值。
样本Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics n ...