工做經驗 2014.2.25更新

------------------------------------------------------------------------------------------------------------------------------------------------2013.6.4
一、必定要用本身的工具,這樣確保工具可用性,避免浪費時間。
二、不要視圖破解某些軟件,直接尋找免激活版。
三、設備遇到問題,及時打客服電話,尋求專業人士的幫助。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.5
一、開發機由於盜版因此須要重裝系統,但光盤下週才能到,能夠臨時搭建些簡單東西先用着,好比jdk、tomcat,等光盤來了再花一天時間裝系統,而不是等一週以後才能用。 【該條刪掉,請看2013.6.20第一項】
二、數據物價,買刻錄光盤必定要買正版的,去年買的盜版10張只有4張刻錄成功,今天正版的索尼DVD,刻錄速度快,噪音小,一次成功。
三、The processing instruction target matching "[xX][mM][lL]" is not allowed. web.xml的xml編碼、版本標籤未在首行首列。
四、由於靜態頁是非實時數據,能夠在某種狀況下頂替實時數據的錯誤。——王碩,於2013年6月5日下班路上。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.6
一、員工內部交流工具若是是飛信或微信,這種手機終端,能夠在員工外出時收到最新信息。但要確保下班時間不打擾員工。
二、飯要一口一口吃,保證目前系統不受影響的狀況下,快速實現產品,合理規劃將來。快速實現產品不是盲目實現產品,也要有充分思考時間,只是不陷入將來的細節。
三、非業務的隔離出來,業務代理能夠由頁面人員來作,這樣業務和頁面不分家,方便快速開發,往後再隔離。必要狀況下,前端業務,也要有本身的數據庫和底層,但僅僅是爲了支撐本身獨立的業務。——王碩,於2013年6月6日中午。
四、squid,可作反向代理,相似於CDN緩存靜態頁面,但不能像CDN那樣分擔帶寬。
五、「集羣」和「羣集」的區別,集羣是多態物理機一個邏輯系統 透明性,羣集是多物理多邏輯 獨立性。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.7
一、對於未知的嘗試,先嚐試不破壞數據的方法(即使破壞數據的方法成功可能性很高),這樣總體效率可能會更高,試驗採樣也會更多。
二、堅持天天備份。重要文件多方備份,有條理,不要形成版本不一致。
三、天天只工做6小時,餘下的時間專門查資料或休息。
四、用筆記本記錄重要的東西,一來加深印象,二來解決存放在電腦中忘記哪一個目錄的問題。固然計算機中也要記錄。
五、pageEncoding 與 charset,第一階段jsp編譯成.java,根據pageEncoding讀取jsp,第二階段javac的java源碼至字節碼.class用utf-8,第三階段載入第二階段的執行結果採用charset編碼並返回給客戶端。
六、chmod u+x filename.sh,將文本改成可執行文件,無需sh直接執行。u文件全部者,+x添加可執行權限。
七、>標準輸出重定向,>>標準輸出重定向追加,2>標準錯誤輸出重定向。>&標準輸出與標準錯誤的重定向簡寫。
八、find /目錄 -name filename 按文件名查找
find 目錄 -name filename 2>/dev/null 按文件名查找 屏蔽錯誤信息(將錯誤信息轉移到/dev/null這個特殊地方)
find 目錄 -size 1500c,c表示單位bytes。大於 +1500c,小於 -1500c
find 目錄 -amin -10 # 查找在系統中最後10分鐘訪問的文件
find 目錄 -atime -2 # 查找在系統中最後48小時訪問的文件
find 目錄 -empty # 查找在系統中爲空的文件或者文件夾
find 目錄 -group cat # 查找在系統中屬於 groupcat的文件
find 目錄 -mmin -5 # 查找在系統中最後5分鐘裏修改過的文件
find 目錄 -mtime -1 #查找在系統中最後24小時裏修改過的文件
find 目錄 -nouser #查找在系統中屬於做廢用戶的文件
find 目錄 -user fred #查找在系統中屬於FRED這個用戶的文件
九、mysql不支持非localhost的地址鏈接,修改mysql數據庫user表中的host選項爲%
十、底層ip常常變,用反向連接域名的方式固定邏輯地址。這有點像分層開發中的代理層,隔離業務與技術的變化。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.8
一、關注官網發行的軟件,一旦有新產品上線,要把它全部系統的全部版本都儘量下載下來存檔,由於開源領域的官網並不靠譜,說不定兩週以後就不提供了。
二、官網下載以後,用rar壓縮並設置密碼,以避免病毒感染。
三、若是版本比較老,官網已經沒有了,能夠去鏡像站點試試。——李蘇,於2013年6月8日下午。
四、BASH腳本的賦值=等號兩邊不能有空格(網上不少代碼有空格的,直接複製不能運行)。
五、ubuntu裏面sh腳本常常執行出錯,今天終於找到緣由了,ubuntu默認是dash 不是bash,因此執行時要顯式引用 bash 取代 sh。
六、對於ubuntu默認使用dash問題,能夠修改系統自帶的軟鏈接解決:sudo ln -sf /bin/bash /bin/sh
參數 s 是軟鏈接,f是強制創建目錄和文件,不管是否已經存在。
七、硬鏈接:物理文件,至關於熱備系統,一改全改,但刪除操做互不影響。
八、物化視圖:用於預先計算並保存錶鏈接或彙集等耗時較多的操做結果,和索引很類似,須要佔用存儲空間。——王碩,於2013年6月8日下午。
九、評判一個企業是否已經具有了完善的制度,關鍵要看這個企業的領導者是否已經制定出合理的薪酬待遇。
十、團隊的凝聚力,源於每一個人的歸屬感,外在的一切都不重要。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.9
一、Windows 2008 Server 配置IE安全選項:管理首頁,安全信息,右邊「配置 IE ESC」,禁用。
二、nexus安裝好後,遠程索引默認是關閉的。須要把Configuration的Download Remote Indexes開啓,並右擊Repair Index。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.13
一、能夠用live CD體驗一下要安裝該系統的服務器是否能找到兼容驅動。
二、ntpdate us.pool.ntp.org,更新系統時間。 crontab -e */5 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP 注意時間格式,若是格式錯誤,沒法保存並提示沒有安裝crontab
若是沒有ntpdate,yum install ntp
三、重啓網卡:/etc/init.d/network restart
四、pwd察看當前所在目錄。
五、root在/root下,其他用戶若是有本身的目錄就在/home/name下。一個軟件多個實例的安裝,實例要安裝在本身name目錄下。還有一些只用來登陸的用戶沒有本身的目錄。
六、建立用戶時,只給登陸權限,而後根據具體業務另外賦予目錄權限。——王碩,於2013年6月13日下午。
七、安裝完操做系統,先看看防火牆是否開啓並容許遠程登陸,ssh是否開啓並可使用。——王碩,於2013年6月13日下午。
八、iptables啓動 service iptables status service iptables restart service iptables stop
iptables開機自啓動 chkconfig iptables off chkconfig iptables on chkconfig iptables --list,3是命令行模式,7是有界面的。
/etc/sysconfig/iptables iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
容許源地址爲x.x.x.x/x的主機經過22(ssh)端口. iptables -A INPUT -p tcp -s x.x.x.x/x --dport 22 -j ACCEPT 容許80(http)端口的數據包進入 iptables -A INPUT -p tcp --dport 80 -j ACCEPT 禁止與211.101.46.253的全部鏈接 iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP 禁用FTP(21)端口 iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP 只禁用211.101.46.253地址的FTP鏈接 iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP
九、察看進程:ps -ef | grep name
十、運行級別
0 - 停機(千萬不要把initdefault設置爲0) 1 - 單用戶模式(像Windows9x下的安全模式) 2 - 多用戶模式,但沒有NFS支持 3 - 徹底多用戶模式,標準運行級 4 - 沒有用到 5 - X11,即X Window 6 - 重啓(千萬不要把initdefault設置爲6),運行init 6機器會重啓。 修改級別:/etc/inittab
十、Bash Shell中,function functionName { #注意括號前面必定要有空格。
十一、期待一元表達式,多是比較運算符兩邊的變量沒有賦值。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.14
一、未來作自動化部署用expect,抽空調研一下。——王碩,於2013年6月14日早上。
二、while : 至關於其餘語言中的while(true),注意while後面有空格,不然會對指令識別錯誤。
三、: ${HOSTNAME?} {USER?} {MAIL?},取環境變量的值。
四、bash -x bashScript 察看每行執行狀態。
五、方法返回值 functionName para0 para1 result=$?
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.17
一、rest方法重載能夠爲null值的不一樣類型參數,可能會衝突,好比getObj(Integer)與getObj(String)。——憶王碩曾經說。
二、rest發佈json,會遇到整形、長整型根據數據實際長度自動識別問題,致使數據類型出錯。因此咱們儘可能用xml方式傳輸。——憶鳳凰手機端接口出現過的問題。 xml是w3c標準,而json只是某老外我的小發明,日訪問量過億的大型互聯網產品都在用xml,也沒見人家xml會由於傳輸數據量大而影響網站響應速度,真正影響響應速度是創建和斷開鏈接。
三、 大麥CSON壓縮算法,只適合在線選座這一類業務。
四、cxf 2.5.0發佈rest,若是list中包含一個對象,它會自動把list改成單個對象,形成客戶端接收數據沒法解析。——憶鳳凰手機端接口出現過的問題。
五、只有負載均衡才能將壓力負載,熱備只能增長壓力和維護成本,爲啥 大麥網用熱備方式負載數據庫?熱備只用來處理不可抗拒的物理損傷,與負載無關。
六、曾經遇到頁面訪問慢的問題,查了半天是數據庫返回慢,開發人員鏈接遠程數據庫調試,速度很快,最終查到緣由是另外一個放熱備的機架掛了,但前端接口調用的有時是S有時是M。——王碩,於2013年6月16日下午。
七、分佈式與集羣區別:分佈式是將業務切割成多個處理節點,一個集羣只處理一個業務。
八、集羣主要分三大類:高可用集羣、負載均衡集羣、科學計算集羣。
九、分佈式的公共資源用單臺是最容易掛的,還不如直接用單臺可靠性高,故障恢復快。因此要引出分佈式集羣的概念。
十、前端能夠按頻道業務區分,故障影響面小,負載更靈活,不過市面上所謂的中大型公司都用不上。——憶王碩曾經說。
十二、spawn是進入expect環境後才能夠執行的expect內部命令,用來啓動和命令的會話。
1三、expect "password:" 這裏的expect也是expect的內部命令判斷上次輸出結果是否包含了"password:"字符串。有則當即返回,不然等待超時後返回。
1四、send "ispass/r"執行交互動做,與手動輸入密碼等效。末尾加上/r表示回車。
1五、interact,執行完保持交互狀態,把控制權交給控制檯,這時就能夠手工操做了。若是沒有這一句,登陸完成後會自動退出。
1六、若是分公司與分公司之間調配辦公設備,必定要把型號、配置、性能,統一盤點清楚,而後再根據須要調配。
1七、公司開業第一天,應該把工具都備齊,好比備用網線、螺絲刀、備用電話、三通、膠帶、剪刀、軟件安裝盤等各類工具,不必定值錢,但很重要。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.18
一、服務器更換硬件,可能須要鑰匙才能開啓,因此從外地調服務器過來,必定也要把說明書、電源線、鑰匙(若是有)、保修單、驅動光盤等等,都一塊兒發過來。
二、選擇時區:tzselect
有時時間雖然同步了,時區也對,可是顯示不正確,可使用硬件、系統時間同步來調整。 /sbin/hwclock --systohc #設置硬件時間和系統時間一致。 /sbin/hwclock --hctosys #設置系統時間和硬件時間一致。
hwclock -w #將當前時間寫入CMOS。
三、關閉不經常使用服務。 cd ~ chkconfig --list > chkconfig.txt for oldboy in `chkconfig --list | grep 3:on | awk '{print $1}'`;do chkconfig --level 3 $oldboy off; done for oldboy in ntpd crond network syslog sshd;do chkconfig --level 3 $oldboy on; done chkconfig --list | grep 3:on
四、開啓8080到80映射。 iptables-save > iptables.save.bak iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 iptables-save /etc/rc.d/init.d/iptables restart
iptables-restore iptables.save.bak # 恢復
五、實際部署中,全部操做系統的防火牆應該是關閉的,使用硬件防火牆轉發全部機器,統一一個節點配置。——王碩,2013年6月18日下午。
線上部署安全性問題的防火牆策略中,有內牆、外牆之分。絕大多數系統入侵來源於局域網內部,因此每臺服務器都配置本身的防火牆策略。 可是這樣引起一個問題,若是服務器數量很大,維護將很是麻煩,並且容易出錯。再引起一個問題,若是防火牆策略須要大批更換,挨個每臺進行替換將很是麻煩。
王碩就此觀點提出全部服務器都接硬件防火牆,由硬件防火牆按邏輯業務劃分子網,而後每一個子網之間的通訊再設定規則。 也就是全部服務器之間的通訊也都通過硬防,修改和替換時,只需改一個硬防節點,配置好的規則備份也方便,若是遇到入侵,能夠快速關掉存在漏洞的通訊閥門。
六、全部服務器都通過Nginx,Nginx在線上配置時若是出錯,是否會將咱們的SSH也斷開了,只能跑到機房本地操做。——王碩,2013年6月18日下午 Nginx只是攜帶端口轉發功能的Web容器,也是最近才支持TCP管理的,SSH是直接鏈接服務器的,不會走Nginx服務,因此不會影響。
我後來的理解(王碩並不一樣意這種表達方式,你們不要輕易效仿): 傳輸介質由Internet接入防火牆,再接入Nginx,再接入具體服務器,這是一個樹形拓撲結構,但這是邏輯拓撲結構。(邏輯拓撲結構是軟件上的,也是咱們作架構分析時直接面對的) 而真正的拓撲結構是什麼樣子的呢?是星型或總線型結構,即全部服務器都【直接】接防火牆/路由器,真正控制走哪一個邏輯鏈路的是防火牆/路由器。 也就在Nginx上層存在一個邏輯十字路口,到底走Nginx代理仍是直接進入服務器,是靠IP地址決定的。若是web服務走Nginx就將域名綁定NginxIp,若是SSH進入服務器,那確定是鏈接服務器具體IP,因此互不影響。
由此發生爭論,大約持續20分鐘後,王碩完全無語了,問:「若是在本身單臺PC上安裝Nginx、tomcat、SSH,沒有防火牆/路由器,誰來控制走哪條鏈路?因此這個問題不是防火牆策略問題,而是Nginx與SSH針對不一樣應用本質的問題。」 我沉思一會回答:「計算機的網卡是數據鏈路層中的媒體介質訪問層,不存在路由,可是,咱們的操做系統是支持TCP/IP協議的,也就說軟件上至少在網絡層以上,應該是應用層,操做系統本身就是網關,因此具備防火牆/路由器功能。」 而後王碩很累。。很無奈。。。。。。
漸漸地轉過頭問我:「咱們最初討論的問題是啥?懂了嗎?你最初的問題是爲啥服務器經過Nginx代理後SSH鏈接不受Nginx配置的影響」 我說:「你別操心,別難過,其實我真的懂了,這個問題的核心是Nginx和具體服務器的IP地址不一樣」 王碩:「嗯」 我:「因此這是防火牆/路由器 的鏈路選擇問題。」 王碩奔淚中。。。 T_T~~~ 回過頭來:「你不要扯到網絡硬件設備上去,你這麼表達是有問題的,怪不得嶽學理面試你的時候你倆扯不到一塊兒去」 而後又爭論了好久。。。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.19
一、互聯網開發,外鍵這個東西,是邏輯外鍵,上層不一樣的業務,外鍵所對應的實體類型不同,其餘字段的意思也不同。——王碩,與2013年6月19日中午。 好比通用組件計數器,計數字段在土豆網「點擊數」和「贊」,應該設計成一個存儲單元。 hibernate只用於核心項目的開發,不要用作有變化業務的項目開發。由於核心項目的表結構都有明確的目的,不存在這種通用性字段設計,外鍵也就明確了。 若是hibernate開發有變化的業務,查詢時不該該使用hibernate級聯查詢方式,而是手寫sql語句,此時也就失去了他自身優點。
二、groupadd wuyue # 添加組帳戶 cat /etc/group # 組帳戶列表
三、useradd -g wuyue co_memcached # 添加用戶帳戶 passwd -f co_memcached # 設置密碼 cat /etc/passwd # 用戶帳戶列表 cat /etc/passwd | grep -v /sbin/nologin | cut -d: -f 1 # 察看能夠登陸的系統用戶
四、/opt/目錄安裝的軟件附屬生成文件只能在/opt/中,因此專門提供測試安裝軟件。——王碩,2013年6月19日 正常安裝軟件要裝在/usr/local/中,而後將實例生成文件再分別放到其餘用戶目錄。至關於Windows裏面的Program Files安裝office後,還要在用戶目錄中建立用戶數據文件同樣。 若是遇到系統遷移,目標服務器安裝好這些軟件後,直接遷移實例就能夠。
五、centos上安裝memcached yum install gcc -y yum install libevent libevent-devel -y # libevent是跨平臺的事件觸發網絡庫
cd ~/download/ wget http://memcached.googlecode.com/files/memcached-1.4.7.tar.gz tar -xzvf ./memcached-1.4.7.tar.gz # 解壓 rm -rf ./memcached-1.4.7.tar.gz # 刪除安裝包,以避免未來有人重複安裝。
mv ./memcached-1.4.7 /tmp/ cd /tmp/ chown co_memcached:wuyue /tmp/memcached-1.4.7 -f -R # 賦予所屬用戶
mkdir /usr/local/memcached chown co_memcached:wuyue /usr/local/memcached -f -R # 賦予所屬用戶 ll /usr/local/memcached/
su - co_memcached cd /tmp/memcached-1.4.7/ ./configure --prefix=/usr/local/memcached # 指定安裝目錄 make # 編譯 make install # 編譯安裝 rm -rf ./memcached-1.4.7/ # 刪除安裝包,以避免未來有人重複安裝。
vi /etc/profile # 配置環境變量 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/ #添加/usr/local/lib/到LD_LIBRARY_PATH。
su - co_memcached /usr/local/memcached/bin/memcached -d -u co_memcached -m 2048 -p 11211 ps -ef | grep memcached # 確認啓動成功
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.20
一、不要交付半成品。 理論上,能夠迭代交付,實際不少狀況下,形成緊急迭代交付的緣由是資源匱乏。 若是資源匱乏,咱們先部署第一步讓人家使用,在部署第二步的時候由於資源匱乏須要拆除第一步,此時此刻又沒有充足的資源接管第一步的工做,反而影響已經使用第一步的人。 因此,即使是迭代交付,也必定要交付徹底獨立可用的東西,避免後期資源須要借用前期資源形成的拆除。 在沒有部署第一步的時候,使用老的方式解決問題,避免折騰,反而更好。
二、who 察看當前登陸用戶 lsof(list open files),列出當前系統打開文件的工具,能夠看到哪一個用戶在訪問哪一個文件。
三、公司的路由器必定要用企業級,其實企業級的價格只至關於兩臺家用路由器的價格,可是支持多WAN,算下來價格相同支持的節點數也相同,但便於管理和組建複雜環境。 今天我遇到一個比較複雜的網絡問題,兩個家用無線路由器,分別接入單獨的ADSL,可是要讓兩臺路由下的計算機處在同一個局域網中,若是企業路由多WAN口,就不存在這個問題。
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.21
一、linux文件目錄權限 2.3.4,屬於user 5.6.7,屬於group 8.9.10,屬於others r讀 4 w寫 2 x執行 1
二、jdk 安裝 java -version # 察看已經安裝的版本號,或者是否已安裝須要卸載。yum remove softwareName chmod 555 /tmp/jdk-6u45-linux-x64.bin cd /tmp/ /tmp/jdk-6u45-linux-x64.bin rm -rf /tmp/jdk-6u45-linux-x64.bin mv /tmp/jdk1.6.0_45 /usr/local/jdk1.6.0_45
vi /etc/profile #set java JAVA_HOME=/usr/local/jdk1.6.0_45 PATH=$PATH:/$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib JRE_HOME=$JAVA_HOME/jre export JAVA_HOME PATH CLASSPATH JRE_HOME
cd /usr/bin
ln -s -f /usr/local/jdk1.6.0_45/bin/java ln -s -f /usr/local/jdk1.6.0_45/bin/javac ln -s -f /usr/local/jdk1.6.0_45/bin/jar ln -s -f /usr/local/jdk1.6.0_45/bin/javadoc ln -s -f /usr/local/jdk1.6.0_45/bin/jcontrol
java -version # 檢查是否安裝正確
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.24
一、Tomcat 安裝
cp -rf ~/install/apache-tomcat-7.0.32.tar.gz /tmp/ chmod 555 /tmp/apache-tomcat-7.0.32.tar.gz cd /tmp/ tar -xzvf /tmp/apache-tomcat-7.0.32.tar.gz rm -rf /tmp/apache-tomcat-7.0.32.tar.gz mv /tmp/apache-tomcat-7.0.32/ /usr/local/ chmod 775 /usr/local/apache-tomcat-7.0.32/ -f -R
mkdir /data/java/tomcat/webTomcat # 注意linux須要逐層建立文件夾,建立以前先檢查上級目錄是否須要建立。 cp -rfv /usr/local/apache-tomcat-7.0.32/* /data/java/tomcat/webTomcat/ useradd -g wuyue co_webtomcat passwd -f co_webtomcat ll /home/ # 察看是否建立成功 chown co_webtomcat:wuyue /data/java/tomcat/webTomcat/ -f -R rm -rf /data/java/tomcat/webTomcat/bin/
vi /home/co_webtomcat/.bash_profile # tomcat CATALINA_HOME=/usr/local/apache-tomcat-7.0.32 CATALINA_BASE=/data/java/tomcat/webTomcat CATALINA_OPTS='-server -Xms256m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m -Dfile.encoding=UTF8 -Djava.awt.headless=true' export CATALINA_HOME CATALINA_BASE CATALINA_OPTS
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.25
一、ActiveMQ 安裝
cp -rf ~/install/apache-activemq-5.6.0-bin.tar.gz /tmp/ chmod 555 /tmp/apache-activemq-5.6.0-bin.tar.gz tar -xzvf /tmp/apache-activemq-5.6.0-bin.tar.gz rm -rf /tmp/apache-activemq-5.6.0-bin.tar.gz
vi /tmp/apache-activemq-5.6.0/conf/activemq.xml         <transportConnectors>             <transportConnector name="openwire" uri="tcp://localhost:61616"/>         </transportConnectors>
mv /tmp/apache-activemq-5.6.0/ /data/java/
mkdir /data/java/apache-activemq-5.6.0/logs vi /data/java/apache-activemq-5.6.0/bin/start-activemq.sh $ACTIVEMQ_BASE/bin/linux-x86-64/activemq > $ACTIVEMQ_BASE/logs/console.log 2>&1 & chmod 775 /data/java/apache-activemq-5.6.0/bin/start-activemq.sh
useradd -g wuyue co_activemq passwd co_activemq chown co_activemq:wuyue /data/java/apache-activemq-5.6.0/ -f -R
vi /home/co_activemq/.bash_profile # activemq ACTIVEMQ_BASE=/data/java/apache-activemq-5.6.0 SUNJMX="-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access" ACTIVEMQ_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=128m -Dorg.apache.activemq.UseDedicatedTaskRunner=true" export ACTIVEMQ_BASE SUNJMX ACTIVEMQ_OPTS
二、檢查rpm包是否支持安裝目錄重定位(relocatable)
rpm -qpi ./MySQL-server-5.5.32-1.linux2.6.x86_64.rpm | head -1
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.26
一、安裝MySql
rpm -q mysql # 檢查是否已經安裝過
cp -rf /root/install/MySQL-server-5.5.32-1.linux2.6.x86_64.rpm /tmp/ chmod 555 /tmp/MySQL-server-5.5.32-1.linux2.6.x86_64.rpm rpm -ivh /tmp/MySQL-server-5.5.32-1.linux2.6.x86_64.rpm # --install --verbose 詳細信息 --hash 安裝進度
service mysql start netstat -an # 3306
cp -rf /root/install/MySQL-client-5.5.32-1.linux2.6.x86_64.rpm /tmp/ chmod 555 /tmp/MySQL-client-5.5.32-1.linux2.6.x86_64.rpm rpm -ivh /tmp/MySQL-client-5.5.32-1.linux2.6.x86_64.rpm
/usr/bin/mysql_secure_installation Enter current password for root (enter for none): 回車 Set root password? [Y/n] y 回車 Remove anonymous users? [Y/n] y 回車 Disallow root login remotely? [Y/n] n 回車,注意這裏是n,不然不容許遠程訪問 Remove test database and access to it? [Y/n] y 回車 Reload privilege tables now? [Y/n] y 回車
mysql -u root -p mysql> show databases; mysql> use mysql mysql> show tables; mysql> select * from user; mysql> update user set Host='%' where ( Host = '::1' );
service mysql restart
rm -rf /tmp/MySQL-* # 安裝、拷貝、設置權限,也均可以用這個通配符方式,當心操做即可。
二、安裝amoeba
mkdir /tmp/amoeba-mysql-binary-2.2.0 cp -rfv /root/install/amoeba-mysql-binary-2.2.0.tar.gz /tmp/amoeba-mysql-binary-2.2.0/ chmod 555 /tmp/amoeba-mysql-binary-2.2.0/amoeba-mysql-binary-2.2.0.tar.gz tar -xzvf /tmp/amoeba-mysql-binary-2.2.0/amoeba-mysql-binary-2.2.0.tar.gz rm -rf /tmp/amoeba-mysql-binary-2.2.0/amoeba-mysql-binary-2.2.0.tar.gz mv /tmp/amoeba-mysql-binary-2.2.0/ /usr/local/
------------------------------------------------------------------------------------------------------------------------------------------------2013.6.27
一、nginx安裝
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel useradd -g wuyue -M -s /sbin/nologin co_nginx
cp -rfv /root/install/nginx-1.4.1.tar.gz /tmp/ chmod 555 /tmp/nginx-1.4.1.tar.gz tar -xzvf /tmp/nginx-1.4.1.tar.gz rm -rf /tmp/nginx-1.4.1.tar.gz
cd /tmp/nginx-1.4.1/ ./configure --user=co_nginx --group=wuyue --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --prefix=/usr/local/nginx
可能有錯誤: ./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option. 下載相應的src,而後指定--with-pcre=/data/develop/core/pcre-8.12 --with-openssl=/data/develop/core/openssl-1.0.0d --with-zlib=/data/develop/core/zlib-1.2.5
./configure --user=co_nginx --group=wuyue --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --prefix=/usr/local/nginx --with-openssl=~/install/src/openssl-1.0.1d make && make install rm -rf /tmp/nginx-1.4.1/
vi /usr/local/nginx/conf/nginx.conf #user  co_nginx;
/usr/local/nginx/sbin/nginx -t # 測試啓動 /usr/local/nginx/sbin/nginx ps -ef | grep nginx
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.1【總結王碩最近說】
一、配置管理
svn目錄要簡單,這樣權限分配也簡單,方便你們共享資源。svn即使出現誤刪除等操做,也能夠經過日誌回滾。
配置管理作版本控制,應該作成熟模塊的版本控制,而不是開發過程當中的版本控制。一個模塊調用另外一個模塊時,應該調用成熟版,而不是快照版,這樣經過nexus能夠避免svn拉分支的現象。
配置管理員也應該是白盒,作版本控制、打包、部署等操做。
二、SQA
因地制宜,在細心觀察的基礎上幫別人簡化流程,而不是用本身制定的流程規範別人。
因此SQA須要一個總監以上級的人,要有充足的開發、管理經驗,找到問題關鍵點,只作必要性的修正,避免任何形式主義。
三、配置文件與標註區別(舉例)
配置文件能夠本身注入想要實例化的類,標註沒法作到。spring本質原理的發揮。
配置文件作變量初始化。
四、測試環境和線上環境應該保持軟件上的一致,但線下測試環境沒有必要使用線上服務器相同的硬件配置,使用淘汰下來的服務器或客戶機就能夠。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.2
一、測試人員都應該是白盒,黑盒測試的目的是驗證需求,由產品部門指派。
二、非關係型數據庫關注業務自己,字段設計與查詢方式必須簡單、直接。
三、若是安裝ADSL時,有多條線路,應該找個電話接上試試號碼,以避免填錯。
四、log4j
log4j中有三個主要的組件,它們分別是 Logger、Appender 和 Layout,log4j容許開發人員定義多個Logger,每一個Logger擁有本身的名字,Logger之間經過名字來代表隸屬關係。
有一個Logger稱爲Root,它永遠存在,且不能經過名字檢索或引用,能夠經過Logger.getRootLogger()方法得到,其餘Logger經過Logger.getLogger(String name)方法。
Appender則是用來指明將全部的log信息存放到什麼地方,log4j支持多種Appender,如 console、files、GUI components、NT Event Logger等,一個Logger能夠擁有多個Appender,也就是你能夠將Log信息輸出到屏幕的同時存儲到一個文件中。
Layout的做用是控制Log信息的輸出方式,也就是格式化輸出的信息。
log4j中,將要輸出的Log信息定義了5種級別,依次爲DEBUG、INFO、WARN、ERROR、FATAL,當輸出時,只有級別高過配置中規定的級別信息才能真正輸出。
log4j支持兩種配置文件:XML、java的property。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.4
一、若是前端頁面沒有展現錯誤的必要,咱們的異常都不拋出,直接記錄日誌就能夠了。這樣先後臺開發,才能真正的並行展開。——王碩,2013年7月4日上午。
好比discuz、phpWind等論壇模板,底層數據庫鏈接出異常了,報給頁面展現conn.php錯誤,或者乾脆把數據庫路徑報出來,對用戶來講沒任何用途,反而下降系統安全性。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.8
一、認真地寫測試用例的過程當中,每每就能發現隱含業務bug。因此開發人員要本身寫測試用例,極可能會測試到測試人員不容易發現的bug。
二、註釋除了 初始化、賦值 以外 都應該單獨一行,對 方法、文件、類 的長度限制要算註釋行數的,由於必要的註釋多了就證實複雜度比較高。
三、不少成功的產品,都是在未開發時就打廣告的,在客戶的期盼中上市。不少失敗的產品,都是打算在開發完成後再推廣的,結果永遠都沒開發完。2013年7月8日晚,與王碩在地鐵上討論。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.9
一、若是DHCP獲取IP地址有問題,以管理員身份運行cmd,執行 netsh winsock reset,而後重啓計算機。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.11
一、局域網傳輸文件 tar -czvf sessionTomcat.gz /data/java/tomcat/sessionTomcat/ scp ./sessionTomcat.gz root@192.168.0.253:/tmp/
二、Tomcat Connector配置
<Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" /> 能夠更改成: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxHttpHeaderSize="8192" maxThreads="250" enableLookups="false" acceptCount="100" compression="true" URIEncoding="UTF-8"/>
maxHttpHeaderSize="8192":最大HttpHeader,缺省爲4096。 maxThreads="250":最大線程數,能夠設置250-300,缺省爲40。 enableLookups="false":當執行request.getRemoteHost()時候,是否執行DNS搜索獲得實際客戶端主機名,缺省是true。 acceptCount="100":當全部的請求處理線程都在使用的時候,請求等待隊列的大小,缺省是10。 compression="true":使用壓縮,能夠節省帶寬 URIEncoding="UTF-8":URI的編碼,使用UTF-8能夠確保URL按照UTF8編碼後的參數能夠正確獲得。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.12
一、UML這種東西就像瑞士軍刀,看起來工具不少頗有用,其實啥用都沒有。
二、樹立品牌,要有個性,靠出個洋相炒做一下,活不長久。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.17
王碩codeReview
一、相同的做用的常量、方法,都放在同一個位置。
二、能配置的常量參數,都走配置文件。
三、配置文件單位與實際使用單位不一樣,能夠非final,不必定要用final約束程序員修改常量。
四、底層不拋狀態碼的,返回null須要在接口註釋中說明。
五、xx-業務名-service.xml
六、參數判斷都在最外層,由於最外層有業務。結合上文減小沒必要要的參數判斷。
七、有的緩存客戶端是不拋異常的,不用catch。
八、兩字符串比較時,不要用 contains 代替 equals。
九、若是底層程序因爲沒有必要操做而直接跳過操做,要返回正常,讓上層透明,由於沒有錯誤出現。這樣上層能夠覺得徹底執行ok,而且用這個成功狀態執行其餘操做。
十、全部無業務的底層操做,都應該拆分紅private,而後有業務的(那怕就是判斷參數是否合法)定義成public再調用這個private。
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.23
一、mybatis 儘可能用#{}不用${},在sqlserver中的top須要${}不然性能很慢。——憶王碩曾經說 使用${}須要注意字符串過濾,不然有注入漏洞。
二、PowerDesigner導出sql語句。 Database → Datebase Generation...
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.27
一、mongodb 安裝 cp -rf ~/install/mongodb-linux-x86_64-2.4.6.tgz /tmp/ chmod 555 /tmp/mongodb-linux-x86_64-2.4.6.tgz cd /tmp/ tar -xzvf /tmp/mongodb-linux-x86_64-2.4.6.tgz rm -rf /tmp/mongodb-linux-x86_64-2.4.6.tgz mv /tmp/mongodb-linux-x86_64-2.4.6/ /usr/local/mongodb-2.4.6/
mkdir /data/java/mongodb-2.4.6/ mkdir /data/java/mongodb-2.4.6/log mkdir /data/java/mongodb-2.4.6/data mkdir /data/java/mongodb-2.4.6/data/db
useradd -g wuyue co_mongodb passwd co_mongodb
chown co_mongodb:wuyue /usr/local/mongodb-2.4.6/ -f -R chown co_mongodb:wuyue /data/java/mongodb-2.4.6/ -f -R
su - co_mongodb
/usr/local/mongodb-2.4.6/bin/mongod --logpath=/data/java/mongodb-2.4.6/log/mongodb.log --logappend --dbpath=/data/java/mongodb-2.4.6/data/db --nojournal --port=20000 --maxConns 500 --fork
ps -ef | grep mongod /usr/local/mongodb-2.4.6/bin/mongo localhost:20000 > show dbs
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.28
一、Replica Sets
mkdir -p /data/java/mongodb-2.0.9/data/r0 mkdir -p /data/java/mongodb-2.0.9/data/r1 mkdir -p /data/java/mongodb-2.0.9/data/r2
mkdir -p /data/java/mongodb-2.0.9/data/key echo "this is rs1 super secret key">/data/java/mongodb-2.0.9/data/key/r0 echo "this is rs1 super secret key">/data/java/mongodb-2.0.9/data/key/r1 echo "this is rs1 super secret key">/data/java/mongodb-2.0.9/data/key/r2 chmod 600 /data/java/mongodb-2.0.9/key/r*
/usr/local/mongodb-2.0.9/bin/mongod --replSet rs1 --fork --port=10000 --dbpath=/data/java/mongodb-2.0.9/data/r0 --logpath=/data/java/mongodb-2.0.9/log/r0.log --logappend --nojournal --maxConns 100 --oplogSize 10 /usr/local/mongodb-2.0.9/bin/mongod --replSet rs1 --fork --port=10001 --dbpath=/data/java/mongodb-2.0.9/data/r1 --logpath=/data/java/mongodb-2.0.9/log/r1.log --logappend --nojournal --maxConns 100 --oplogSize 10 /usr/local/mongodb-2.0.9/bin/mongod --replSet rs1 --fork --port=10002 --dbpath=/data/java/mongodb-2.0.9/data/r2 --logpath=/data/java/mongodb-2.0.9/log/r2.log --logappend --nojournal --maxConns 100 --oplogSize 10
/usr/local/mongodb-2.0.9/bin/mongo -port 10000
> config_rs1={_id:'rs1',members:[{_id:0,host:'localhost:10000'},{_id:1,host:'localhost:10001'},{_id:2,host:'localhost:10002'}]} {         "_id" : "rs1",         "members" : [                 {                         "_id" : 0,                         "host" : "localhost:10000",                         "priority" : 1                 },                 {                         "_id" : 1,                         "host" : "localhost:10001"                 },                 {                         "_id" : 2,                         "host" : "localhost:10002"                 }         ] }
> rs.initiate(config_rs1); {         "info" : "Config now saved locally.  Should come online in about a minute.",         "ok" : 1 }
> rs.status()
------------------------------------------------------------------------------------------------------------------------------------------------2013.7.29
一、CentOS 釋放內存
echo 1 > /proc/sys/vm/drop_caches
free -m
total 內存總數 used 已經使用的內存數 free 空閒的內存數 shared 多個進程共享的內存總額 buffers buffer Cache和cached Page Cache 磁盤緩存的大小 -buffers/cache (已用)的內存數:used - buffers - cached +buffers/cache(可用)的內存數:free + buffers + cached 可用的memory=free memory+buffers+cached
二、察看主板上的內存條
dmidecode |grep -A16 "Memory Device$"
三、公司內部的接口,底層和代理的interface能夠放在統一的jar包中,只要在javadoc中說明就能夠了。——王碩,2013.7.29晨。
四、儘可能不要IService,這個代碼量雖然少,但開發具體業務會有難度,好比PO與DTO的轉化、具體業務的參數判斷等。——王碩,2013.7.29晨。
------------------------------------------------------------------------------------------------------------------------------------------------2013.8.1
下班路上與王碩討論
一、wap只是現有產品的衍生物,不是營銷手段。若是說作了wap就能帶來多大流量,那基本上是不可能的。
二、作wap產品要有特點,由於手機屏幕小,流量少,網速慢,因此內容不能和pc同樣,要解決在沒有電腦條件下的緊急事務。
------------------------------------------------------------------------------------------------------------------------------------------------2013.8.17
一、使用mongodb時,不要用count方法,查詢idList的時間也比count的時間短。——憶王碩曾經說 因此咱們在mongodb中用count翻頁時,須要查詢idList而後求size()。每次多查詢一個id,判斷當前頁是否是最後一頁。
二、使用mongodb時,getByIdList查詢出來的數據可能和idList順序不一致,須要從新根據idList排序。——憶王碩曾經說
三、關聯表dto每每要攜帶主業務表的字段,由於不少時候單純查詢關聯表沒有意義。——王碩,2013.8.13 CodeReview 此時咱們須要提供兩個查詢,一是返回主業務的idList,二是關聯表dto含主表字段的數據,在基層代理裏面作。
------------------------------------------------------------------------------------------------------------------------------------------------2013.8.19
yum install sysstat
[root@COS ~]# iostat Linux 2.6.18-308.el5 (COS.D.IBM.251)    2013年08月19日
avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.00    0.00    0.00    0.09    0.00   99.90
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn sda               0.33         0.60         6.03    1610042   16218670 sda1              0.00         0.16         0.00     419476         30 sda2              0.33         0.44         6.03    1190180   16218640 dm-0              0.76         0.19         6.03     504474   16218640 dm-1              0.00         0.00         0.00        912          0
%idle值高,表示CPU較空閒,若是%idle值高但系統響應慢時,有多是CPU等待分配內存,此時應加大內存容量。%idle值若是持續低於10,那麼系統的CPU處理能力相對較低,代表系統中最須要解決的資源是CPU。
------------------------------------------------------------------------------------------------------------------------------------------------2013.8.28
一、eclipse和jdk的字長必須一致,不然eclipse啓動報錯。
二、系統字段,好比刪除標誌,dao的update不該該更新。建立時間等字段,底層能夠放開,但對前面的代理層不該該提供,與此同時底層必須寫上註釋:啥時候可能會用,上層禁止放開等警告。
------------------------------------------------------------------------------------------------------------------------------------------------2013.8.30
一、Eclipse 沒法建立 Tomcat Server Cannot create a server using the selected type D:\workspace_3.7_2013\.metadata\.plugins\org.eclipse.core.runtime\.settings 把org.eclipse.wst.server.core.prefs和org.eclipse.jst.server.tomcat.core.prefs 這兩個文件刪掉,重啓Eclipse
------------------------------------------------------------------------------------------------------------------------------------------------2013.9.6
一、MySql熱備,熱備服務器配置與在線服務器配置同樣,資源浪費。 讓統計類的業務訪問熱備服務器,這樣統計計算時不佔用在線服務器資源。——王碩,2013.9.4 晚上 將Mongodb安裝在熱備服務器上,避免熱備服務器資源浪費。——王碩,2013.9.5 上午 熱備服務器的資源過剩主要體如今CPU與內存,若是爲了不熱備服務器資源浪費而安裝其餘服務,應該將其餘服務單獨用一塊硬盤,以解決熱備的IO瓶頸,甚至支持服務、數據、日誌 的熱插拔。——柳晛,2013.9.5 上午
二、爲何要用基礎Service封裝Dao? 其實基礎Service就是封裝了一下Dao和參數轉換,目的是爲了分佈式部署,由於Dao沒法發佈服務而基礎Service能夠。 若是不用分佈式,咱們徹底能夠用Dao當基礎Service,用Service當代理Service,把全部業務寫在基礎Service中。
三、圖片使用 獨立二級域名,方便未來作統一路徑管理。——王碩,2013.9.5 晚上
四、wap使用獨立的nginx。——王碩,2013.9.5 晚上
------------------------------------------------------------------------------------------------------------------------------------------------2013.9.16
一、察看那些進程佔用了 80端口
netstat -lnp | grep 80 tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      2953/nginx: worker 
二、察看linux內核版本 uname -a Linux cn.27rc.hasee 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
三、察看linux版本 lsb_release -a
四、察看cpu信息 cat /proc/cpuinfo
五、察看內存信息 cat /proc/meminfo
六、top察看各核心佔用狀況 按鍵盤數字鍵:1
------------------------------------------------------------------------------------------------------------------------------------------------2013.9.22
一、安裝Nexus
cd ~/download/ wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
mv ~/download/nexus-2.6.3-01-bundle.tar.gz ~/install cp -rfv ~/install/nexus-2.6.3-01-bundle.tar.gz /tmp/ cd /tmp/
tar -xzvf ./nexus-2.6.3-01-bundle.tar.gz rm -rf ./nexus-2.6.3-01-bundle.tar.gz
useradd -g wuyue co_nexus passwd co_nexus
mv /tmp/nexus-2.6.3-01/ /data/java/ chown co_nexus:wuyue /data/java/nexus-2.6.3-01/ -f -R
/data/java/nexus-2.6.3-01/bin/jsw/linux-x86-64/nexus start ps -ef | grep nexus
二、安裝svn,subversion
yum install subversion -y
mkdir /data/svn mkdir /data/svn/repos svnadmin create /data/svn/repos # 建立svn庫
------------------------------------------------------------------------------------------------------------------------------------------------2013.10.07
一、Nginx日誌格式改成:     log_format  main  '$remote_addr - [$time_local] "$request" '                       '$status $body_bytes_sent "$http_referer" ';
二、目錄配置,若是在Window下,應該注意\寫成\\,不然就將後面的字符轉義了。
三、tomcat日誌格式改成:         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"                prefix="access_log." suffix=".log"                pattern="%h %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; %c %D" resolveHosts="false" />
------------------------------------------------------------------------------------------------------------------------------------------------2013.11.15
一、若是分佈式開發任務量較重,能夠先用private方法代替分佈式,以拆分規範控制代碼質量。
二、mysql建立測試數據庫 SET character_set_database='utf8'; SET character_set_server='utf8'; create database grant all on test.* to 'test' Identified by "test";
三、底層通用系統,可能別人只須要一部分,因此開發時要注意每一個細小模塊均可以單獨使用,而且提供給別人調用時,必定要千方百計減小調用者工做量。
四、對於通用性方法,在上層提供代理時,可適當封裝固定參數,以減小參數數量,提升易用性。
五、Window Nginx 啓動 關閉 重啓 start nginx.exe 啓動 nginx -s stop 強制關閉 nginx -s quit 安全關閉 nginx -s reload 改變配置文件的時候,重啓nginx工做進程,來時配置文件生效 nginx -s reopen 打開日誌文件
六、外地開發。 Session、權限系統、用戶中心,這些能夠單獨部署的系統能夠在外網服務器上部署,並暫時對外開放。 JMS、Memcached、Mongodb,等底層數據庫或中間件,由開發機本身安裝,不要對外開放。 ——王碩
七、XSS攻擊能夠用修改DOM的方式修改from標籤,從而使數據提交到其餘系統中。——王碩 2013.11.14 晚上
------------------------------------------------------------------------------------------------------------------------------------------------2013.11.27
一、url重寫不方便調試 在分佈式環境中,咱們可能須要前端負載均衡服務器作代理,對url進行重寫,可是這種狀況阻礙了開發環境的調試,須要在開發環境也部署負載均衡或者重寫攔截器。
二、僞靜態的做用 在網上大多都說僞靜態可以提升安全性,其實我以爲這個理論就比如POST比GET更安全同樣,其實除了能安慰本身以外還真起不到安全效果。 我認爲僞靜態的做用,僅僅是爲之後真正的靜態頁面提早搭建目錄,使得未來不用修改整個站點的url路徑。 後來據王碩所說,即使未來用靜態化,爲保證目錄兼容性,也沒必要如今用僞靜態的方式提早搭好,由於運維人員能夠經過反向代理將錯誤的路徑指正確。
三、struts2漏洞由前端代理能夠過濾 今年暴出struts2的重大漏洞,實際這種漏洞在負載均衡環境中,反向代理能夠將敏感字符過濾。 固然,咱們的安全機制不能只侷限於網絡,還要在程序中分層把控。
------------------------------------------------------------------------------------------------------------------------------------------------2013.12.17
一、我最近總結出一點來、、當咱們看到咱們身上有一點比別人強的時候、應該爲本身高興、可是不要看輕別人。——鄢華健 於 2013.12.9下午在 大麥辭職羣中所說。
二、jQuery 使用 CSS 選擇器來選取 HTML 元素。 $("p") 選取 <p> 元素。 $("p.intro") 選取全部 class="intro" 的 <p> 元素。 $("p#demo") 選取全部 id="demo" 的 <p> 元素。
三、jQuery 屬性選擇器 $("[href]") 選取全部帶有 href 屬性的元素。 $("[href='#']") 選取全部帶有 href 值等於 "#" 的元素。 $("[href!='#']") 選取全部帶有 href 值不等於 "#" 的元素。 $("[href$='.jpg']") 選取全部 href 值以 ".jpg" 結尾的元素。
四、把全部 p 元素的背景顏色更改成紅色: $("p").css("background-color","red");
五、更多的選擇器實例: $(this)  當前 HTML 元素 $("p")  全部 <p> 元素 $("p.intro")  全部 class="intro" 的 <p> 元素 $(".intro")  全部 class="intro" 的元素 $("#intro")  id="intro" 的元素 $("ul li:first")  每一個 <ul> 的第一個 <li> 元素 $("[href$='.jpg']")  全部帶有以 ".jpg" 結尾的屬性值的 href 屬性 $("div#intro .head")  id="intro" 的 <div> 元素中的全部 class="head" 的元素
六、獲取是否包含某個樣式:var f = $("#check_status").attr('class').indexOf('checked');
七、js正則判斷輸入格式 if (!(/(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)|(1[358]{1}[0-9]{9})/.test(account)) || password.length < 6) {  showError("帳號或密碼輸入的格式不正確");  return; }
八、Ajax jQuery.ajax({  type : "POST",  timeout : 20000,  url : "${tp}/act/member/login_submit.jsp",  data :"f="+ encodeURIComponent(f) + "&account=" + encodeURIComponent(account) + "&password=" + encodeURIComponent(password) + "&random=" + Math.random(),  dataType : "text",  success : function(data) {   if(data=="true"){    location.href="${tp}";   }else{    location.href="${backUrl}";   }   return;  },  error : function() {   showError("網絡請求出錯,請稍後重試");   return;  } });
九、文檔加載完畢後,給符合條件的一個元素增長樣式: $(document).ready(function() {  var hotelId = $.cookie('hotelId');  $('#s_' + hotelId).addClass("icon"); });
十、js跳轉到其餘頁面:location.href = "url";
------------------------------------------------------------------------------------------------------------------------------------------------2013.12.26
一、本地緩存的做用,和靜態頁的區別 本地緩存能夠理解爲靜態頁,可是與靜態頁有所區別。 靜態頁是純靜態,沒有動態效果,而使用本地緩存的動態頁面則能夠在局部動態,其餘地方都從本地緩存取。——2013.12.18 王碩,辦暫住證路上。
二、url重寫的做用 網上說了url重寫有N多好處,但沒一個靠譜。 好比SEO優化,其實在SEO這個名詞誕生以前早就有URL重寫技術。 好比安全性,其實這和有人說POST比GET安全同樣,沒什麼意義,真正安全仍是用數字簽名更好一些,和安全是兩碼事。 真正的用途,是將對外url統一管理,內部地址改變,或者作成了分佈式,外部url不變,也就不用修改大量的url,至關於地址層的代理。——上午與王碩討論
------------------------------------------------------------------------------------------------------------------------------------------------2014.02.25
一、汽車行駛越快,方向盤浮動越小,果斷併線,錯過路口不可倒車。. 此次換工做,技術提高是沒戲了,只能摸索管理經驗了。
相關文章
相關標籤/搜索