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多臺的的服務和配置都沒標準和規律,這時候程序、腳本都機關用盡。如何作自動化?
另外一方面,部署環境和項目必定要有相關的技術文檔,誰也不能保證本身不跑路,後期工做交接、帶新人、查閱資料等都是須要文檔的,雖然當時部署的時候說本身記在腦子裏,可是時間長了就尷尬了。。你還記得嗎? 其餘人問你怎麼作的時候,徹底能夠給別人一份文檔,既能減去你的工做量,同時別人還認爲你作事完美