使用Prometheus和Grafana搭建MariaDB性能监控系统
又多叒是那台跑着开源平台的测试机,不知为何性能一直上不去,没找到原因在哪里,所以想着搭一个监控系统,综合各种指标看一下,分析下问题出在哪里。搜索了一下,Prometheus和Grafana目前是比较流行的,那就开工吧。
又多叒是那台跑着开源平台的测试机,不知为何性能一直上不去,没找到原因在哪里,所以想着搭一个监控系统,综合各种指标看一下,分析下问题出在哪里。搜索了一下,Prometheus和Grafana目前是比较流行的,那就开工吧。
其实想写这个主要是因为工作时遇到一台部门自用测试机中MariaDB的root密码丢失的情况,同事的备份文件中也没有找到,这很尬尴,看了一下用的还是SCL中的版本,与自带的安装源版本不大一样,就记录一下该种方式的安装和怎么在密码丢失的情况下重置密码。
正则引擎是基于回溯的NFA实现的时候,那么就有可能出现灾难性回溯(Catastrophic Backtracking),即正则在匹配的时候回溯过多,造成CPU 100%,正常服务被阻塞。
看到这句话的时候,我是懵圈的,平时写正则表达式的时候都是能用就行了😰,没注意过这种事啊,又多叒遇到知识盲区了…
String Compression
思路: 指针i指向修改内容的位置,指针j遍历整个数组chars,当下一个字符与当前字符不相同时,直接将该字符赋值到i处,然后i++,j++;若相同,k指向j所在位置,j继续向前出发遍历所有与k处相同的字符,则相同的个数为j-k,将j-k转化为字符串s,将s的每一个字符都赋值在i所在位置开始的chars中。
Find All Anagrams in a String
思路: 用哈希表分别记录p的字符个数和s中前p个字符串长度的字符个数,再进行比较,如果两者相同,则将0加入结果res中,之后开始遍历s中剩余的字符,右边加入一个新字符,左边就删除一个旧字符,再比较两个哈希表是否相同。
Third Maximum Number
思路: 使用set存放遍历得到的数,并保持set中的个数不超过3个,最后判断set大小是否等于3,若等于3,则返回set的第一个数,反之返回最后一个数,即最大的数。
1 | $ resty -e "ngx.say('hello world')" |