运维平台架构设计及开发(持续更新中...)

开发环境: Python 2.x GoLang 1.6 Django 1.6 Bootstrap 3.0 JQuery1.8 架构: 模块介绍: Agent:使用GoLang开发,主要收集主机信息、执行下发任务、主机状态上报、服务检测等 Master:使用GoLang开发,接收Agent上报的信息,存储到MySQL Dashboard:使用Python Django开发,前台展示及管理。前端使用B......
Python 2019年01月26日 17:15:58

Go代码性能小技巧

1、字符串+号拼接 +号在拼接字符串上很方便,但性能上确实很慢(+string扩充容量慢),当数量级比较大的时候,性能比Python脚本还慢 package test import ( testing ) func TestAdd(t *testing.T) { str := for i := 0; i 100000; i++ { str += add } } # 测试 go test -v -r......
GoLang 2019年05月06日 12:24:03

MongoDB模糊查询

MongoDB和MySQL对比查询 查询userName包含A的数据 MySQL: SELECT * FROM UserInfo WHERE userName LIKE %A% ; MongoDB: db.UserInfo.find({userName :/A/}) 查询以字母A开头的数据 MySQL: SELECT * FROM UserInfo WHERE userName LIKE A% ;......
其他 2019年05月06日 11:08:22

Python sys.argv的用法

sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,因此要从第二个即sys.argv[1]开始取参数。 注意:参数是以空格分开的 创建一个名为argvs.py的文件,内容如下: import sys print( the first argv: ,sys.argv[0], \n ) # 显示第一个参数 print( the second argv: ,sys.a......
Python 2019年05月05日 18:15:51

Python线程互斥锁同步线程

由于每个线程互相独立,相互之间没有关系,如果要几个线程同时干一件事,因互相不关联,如果一个线程已经做过,另一个线程再去做,就重复了,很容易就混乱了。 问题产生的原因是因为没有控制多个线程对同一资源的访问,对数据造成破坏,使得线程运行的结果不可预期。这种现象称为“线程不安全”。而我们希望的是你拍一,我拍二,你拍三,我拍四,大家按一次拍下去,最后得出计算结果。 数据共享。当多个线程都修改某一个共享数据......
Python 2019年05月05日 15:03:24

Linux OOM-killer

OOM_killer是Linux自我保护的一种机制,当内存不足时不至于出现太严重问题,如果内存不足将唤醒oom_killer,选出/proc/ pid /oom_score最大的并将之kill掉。 为了保护重要进程不被oom-killer掉,可以禁用OOM echo -17 /proc/ pid /oom_adj # -17表示禁用OOM 禁用整个系统的OOM: sysctl -w vm.pani......
Linux服务 2019年05月05日 14:29:33

Linux shell中set指令

用于脚本调试。 set是把它下面的命令打印到屏幕 set -x 是开启 set +x是关闭 set -o是查看 (xtrace)。 set指令能设置所使用shell的执行方式,可依照不同的需求来做设置 -a 标示已修改的变量,以供输出至环境变量。 -b 使被中止的后台程序立刻回报执行状态。 -C 转向所产生的文件无法覆盖已存在的文件。 -d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执......
Linux命令 2019年05月05日 14:11:28

git tag操作

git tag标签可以针对某一时间点的版本做标记,常用于版本发布。 列出标签 $ git tag # 列出当前仓库的所有标签 $ git tag -l ‘v0.2.*’ # 搜索符合模式的标签 打标签 git标签分为两种类型:轻量标签和附注标签。 轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象(比较常用的的附注标签)。 $ git tag v0.2.2-light # 轻量标签 $......
Linux服务 2019年05月05日 14:05:21

Python中*args 和**kwargs(可变长参数)

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。 def func(argc, *args): print argc: , argc for x in args: print args: , x func(1, two , 3) # *args可以当作可容纳多个变量组成的list # argc: 1 # args: two # a......
Python 2019年04月29日 11:05:04

Python str与repr的区别

在Python中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或 repr() 。 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常), 适合开发和调试阶段使用。 也就是说 repr() 输出对 Python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这......
Python 2019年04月29日 10:36:44

Linux日志管理logrotate

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。 对于繁忙的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。 logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。如:可以设置logrotate,让/var/log/tt.log日......
Linux命令 2019年04月28日 18:35:19