Algorithm。主要是为了编程训练和学习。每周至少作一个 leetcode 的算法题(先从Easy开始,而后再Medium,最后才Hard)。进行编程训练,若是不训练你看再多的算法书,你依然不会作算法题,看完书后,你须要训练。关于作Leetcode的的优点,你能够看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell(一个小时之内);php
Review:主要是为了学习英文,若是你的英文不行,你基本上无缘技术高手。因此,须要你阅读并点评至少一篇英文技术文章,我我的最喜欢去的地方是 Medium(须要×××,其余的能够社区的官方文档以及论文学习)以及各个公司的技术blog,如Netflix的(30min);html
Tip:主要是为了总结和概括你在是常工做中所遇到的知识点。学习至少一个技术技巧。你在工做中遇到的问题,踩过的坑,学习的点滴知识(也能够学习【极客时间】上的实用课程);linux
Share:主要是为了创建你的影响力,可以输出价值观。分享一篇有观点和思考的技术文章,也能够是技术总结的文章。nginx
Algorithm :Go实现c++
package main import "fmt" func BinarySearch(arr *[6]int,leftIndex int,rightIndex int ,findVal int ){ if leftIndex > rightIndex{ fmt.Printf("%v中找不到\t元素%v\n",(*arr),findVal) return } //先找到中间下标 midddle := (leftIndex+rightIndex)/2 if (*arr)[midddle] >findVal { //说明要查找的数在左边 就应该向 leftIndex ---- (middle - 1)再次查找 BinarySearch(arr,leftIndex,midddle-1,findVal) }else if (*arr)[midddle] < findVal{ //若是 arr[middle] < findVal , 就应该向 middel+1---- rightIndex BinarySearch(arr,midddle+1,rightIndex,findVal) }else { //找到了 fmt.Printf("%v中找到元素%v,下标为%v\n",(*arr),findVal,midddle) } } func main() { ArraryNum := [6]int{1,8, 10, 89, 1000, 1234} ArraryNum2 := [6]int{8,200, 300, 889, 1000, 1234} BinarySearch(&ArraryNum,0,len(ArraryNum),1234) BinarySearch(&ArraryNum2,0,len(ArraryNum),300) BinarySearch(&ArraryNum,0,len(ArraryNum),-8) BinarySearch(&ArraryNum2,0,len(ArraryNum),30) } 结果: [1 8 10 89 1000 1234]中找到元素1234,下标为5 [8 200 300 889 1000 1234]中找到元素300,下标为2 [1 8 10 89 1000 1234]中找不到 元素-8 [8 200 300 889 1000 1234]中找不到 元素30
CentOS 7 资源管理 Cgroup算法
Tip: shell
一、zabbix-web 迁移编程
本身部署zabbix环境都是lamp,而公司中使用的一套LNMP,虚拟机须要下架,因此须要对其迁移,主要有如下步骤:bash
(1)部署lnmp环境
(2)安装zabbix-web的服务,为了更好的兼容。使用和原来版本一致的zabbix-web服务
(3)替换配置文件 将老的服务上的一些配置文件迁移到新的,对功能作测试,全部功能测试完毕,迁移完成
二、openresty安装脚本
#!/bin/bash NGX_PATH=$(cd `dirname $0`; pwd) BUILD_PATH=$NGX_PATH/build/openresty INSTALL_PATH=/usr/install OR_INSTALL_PATH=${INSTALL_PATH}/openresty NGX_INSTALL_PATH=${OR_INSTALL_PATH}/nginx PCRE="pcre-8.36" ZLIB="zlib-1.2.8" OPENSSL="openssl-1.1.0i" OPENRESTY="openresty-1.13.6.2" PCRE_PATH=${BUILD_PATH}/${PCRE} ZLIB_PATH=${BUILD_PATH}/${ZLIB} OPENSSL_PATH=${BUILD_PATH}/${OPENSSL} OPENRESTY_PATH=${BUILD_PATH}/${OPENRESTY} PCRE_TAR=${BUILD_PATH}/${PCRE}.tar.gz ZLIB_TAR=${BUILD_PATH}/${ZLIB}.tar.gz OPENSSL_TAR=${BUILD_PATH}/${OPENSSL}.tar.gz OPENRESTY_TAR=${BUILD_PATH}/${OPENRESTY}.tar.gz rm -rf ${BUILD_PATH} && mkdir -p ${BUILD_PATH} yum -y install automake autoconf libtool make gcc gcc-c++ unzip patch 1>/dev/null curl -L http://192.168.48.4/soft/nginx/openresty.tar.gz -o $NGX_PATH/openresty.tar.gz if [ -f "$NGX_PATH/openresty.tar.gz" ]; then tar -zxvf ${NGX_PATH}/openresty.tar.gz -C ${BUILD_PATH} 1>/dev/null else echo -e "$NGX_PATH/nginx.tar.gz does not exist" exit fi function configure_f { if [ "$?" != 0 ];then echo -e "\tCompile failed, please check" exit else echo -e "\tCompile successfully" fi } function make_f { if [ "$?" != 0 ];then echo -e "\tMake is failed, please check" exit else echo -e "\tMake successfully" fi } function make_install_f { if [ "$?" != 0 ];then echo -e "\tMake install is failed, please check" exit else echo -e "\tMake install successfully" fi } if [ -f "$PCRE_TAR" ]; then tar -zxvf ${PCRE_TAR} -C ${BUILD_PATH} 1>/dev/null echo -e "\t$PCRE_TAR is uncompress complete" else echo -e "\t$PCRE_TAR does not exist" exit fi if [ -f "$ZLIB_TAR" ];then tar -zxvf ${ZLIB_TAR} -C ${BUILD_PATH} 1>/dev/null echo -e "\t$ZLIB_TAR is uncompress complete" else echo -e "\t$ZLIB_TAR does not exist" exit fi if [ -f "$OPENSSL_TAR" ]; then tar -zxvf ${OPENSSL_TAR} -C ${BUILD_PATH} 1>/dev/null echo -e "\t$OPENSSL_TAR is uncompress complete" else echo -e "\t$OPENSSL_TAR does not exist" exit fi if [ -f "$OPENRESTY_TAR" ]; then tar -zxvf ${OPENRESTY_TAR} -C ${BUILD_PATH} 1>/dev/null echo -e "\tStart configure install $OPENRESTY_TAR" cd ${OPENRESTY_PATH} ./configure -j8 --user=admin --group=admin \ --prefix=${OR_INSTALL_PATH} \ --with-openssl=${OPENSSL_PATH} \ --with-pcre=${PCRE_PATH} \ --with-pcre-jit \ --with-zlib=${ZLIB_PATH} \ --with-stream \ --with-stream_ssl_module \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_realip_module configure_f make -C ${OPENRESTY_PATH} 1>/dev/null make_f make -C ${OPENRESTY_PATH} install 1>/dev/null make_install_f echo -e "\t$OPENRESTY_TAR is install complete" else echo -e "\t$OPENRESTY_TAR does not exist" exit fi chown -R admin:admin ${NGX_INSTALL_PATH} chown root:admin ${NGX_INSTALL_PATH}/sbin/nginx chmod 4755 ${NGX_INSTALL_PATH}/sbin/nginx ln -s ${NGX_INSTALL_PATH} ${INSTALL_PATH}/nginx echo -e "Nginx installation is complete : $NGX_INSTALL_PATH"
Share:
关于运维标准化的一些想法
由于这一周作了一个基建nginx的迁移,踩了不少的坑,先列一下踩到的坑,而后再分析总结一下,应该怎么作,
(1)光迁移nginx,防火墙NAT绑定新的VIP后发现zabbix不能访问,通过排查原先的nginx服务器还安装了zabbix-web,php-fpm等环境。
(2)部署zabbix和php等环境再次更改防火墙NAT信息,此次全部服务正常没发生意外,由于原来的机器要下架,因此不知道里面还有什么依赖,就将原来的服务中止了,而后诸多应用不可用,服务启动后又正常,事情有点妖,明明更改的是对外服务的nginx,可是内部的服务挂了一堆。。。。 心理难以接受,去排查最后发现DNS里以及若干机器的host文件中绑定了原来的ip和域名。。踩了若干的坑,花了好久,最后才让全部服务恢复正常。
想法“
一个简单的迁移,也是一次变动,要是核心业务在上面就是一次故障,一直提倡运维标准化,运维自动化,如何作到自动化呢,确定是先作到标准化,总不可能400台机器,3多台的的服务和配置都没标准和规律,这时候程序、脚本都机关用尽。如何作自动化?
另外一方面,部署环境和项目必定要有相关的技术文档,谁也不能保证本身不跑路,后期工做交接、带新人、查阅资料等都是须要文档的,虽然当时部署的时候说本身记在脑子里,可是时间长了就尴尬了。。你还记得吗? 其余人问你怎么作的时候,彻底能够给别人一份文档,既能减去你的工做量,同时别人还认为你作事完美