2010年12月10日 #
摘要: 最近接手項目從cocos2dx 2.0 升級為 3.0 ,至于為什么要升級我也弄不清楚,只感覺3.0是要擺脫cocos2d-iphone的身影,這是要作死的態度嗎,沒時間去了解3.0的核心發生了神馬變化,只為了從cocos2dx2.0經常適應到3.0做了一些紀錄,以便查閱和方便正在從2.0到3.0的朋友。 閱讀全文
摘要: 其實為什么javascript的定時器會出現所謂的不可靠或偏差的情況,這是可以理解的,最主要的問題是它們并不是所謂的線程,其實
javascript是運行于單線程的環境中,而定時器只是計劃代碼在未來某個執行的時間,執行的時間點是不能被保證的,因為在頁面的生命周期中,不同時間可能存在其他代碼,或各個瀏覽器的內核控制住javascript進程。 閱讀全文
javascript是運行于單線程的環境中,而定時器只是計劃代碼在未來某個執行的時間,執行的時間點是不能被保證的,因為在頁面的生命周期中,不同時間可能存在其他代碼,或各個瀏覽器的內核控制住javascript進程。 閱讀全文
摘要: objectid是一種輕量型的,不同的機器都能用全局唯一的同種方法輕量的生成它,而不是采用傳統的自增的主鍵策略,因為在多臺服務器上同步自動增加主鍵既費力又費時,不得不佩服,mongodb從開始設計就被定義為分布式數據庫。
下面深入一點來翻翻這個Objectid的底細,在mongodb集合中的每個document中都必須有一個"_id"建,這個鍵的值可以是任何類型的,在默認的情況下是個Objectid對象。
當我們讓一個collection中插入一條不帶_id的記錄,系統會自動地生成一個_id的key 閱讀全文
下面深入一點來翻翻這個Objectid的底細,在mongodb集合中的每個document中都必須有一個"_id"建,這個鍵的值可以是任何類型的,在默認的情況下是個Objectid對象。
當我們讓一個collection中插入一條不帶_id的記錄,系統會自動地生成一個_id的key 閱讀全文
摘要: google map測距的實現和分析
不斷有傳聞google map在今年的7月1號之后在大陸停止運營,具體原因是因為天朝的牌照問題,這個就不多講了,可以發現現在搜房網的地圖,和安居客等的地圖紛紛都撤下 google map,而重新選擇了mapabc或baidu,當然網易房產地圖也不例外,現在也在使用mapabc作為網易房產地圖的開發,預計將在6月底前上線,到 時再跟大家分享一下mapabc的一些開發實踐。
還是說回google map的開發,自從上次建了個qq群就有不少人在問測距怎么實現,當然很多人想的是拿來主義的,當時是拿http://xf.house.163.com /gz/map/000B.html的例子出來,但確實頁面上進行了封裝也寫得比較亂,所以還是比較難以抽離,先給個簡單實現的例子: 閱讀全文
不斷有傳聞google map在今年的7月1號之后在大陸停止運營,具體原因是因為天朝的牌照問題,這個就不多講了,可以發現現在搜房網的地圖,和安居客等的地圖紛紛都撤下 google map,而重新選擇了mapabc或baidu,當然網易房產地圖也不例外,現在也在使用mapabc作為網易房產地圖的開發,預計將在6月底前上線,到 時再跟大家分享一下mapabc的一些開發實踐。
還是說回google map的開發,自從上次建了個qq群就有不少人在問測距怎么實現,當然很多人想的是拿來主義的,當時是拿http://xf.house.163.com /gz/map/000B.html的例子出來,但確實頁面上進行了封裝也寫得比較亂,所以還是比較難以抽離,先給個簡單實現的例子: 閱讀全文
摘要: 有朋友去一家大型的互聯網公司參加了java程序員的筆試,抄下了一些筆試題,可能有的抄的并不全,試了解答一下,有些還真的答不出來
1.cookie和session的作用以及他們的應用場合
2.怎樣讓jvm加載一個Class的同時執行一段代碼
3.post和get區別
4.事務的屬性有哪些?寫出spring或jdbc管理事務的例子
5.實現一個高并發、高性能的hashmap。寫出偽代碼
6.解析一段xml,拼接成一個url。 閱讀全文
1.cookie和session的作用以及他們的應用場合
2.怎樣讓jvm加載一個Class的同時執行一段代碼
3.post和get區別
4.事務的屬性有哪些?寫出spring或jdbc管理事務的例子
5.實現一個高并發、高性能的hashmap。寫出偽代碼
6.解析一段xml,拼接成一個url。 閱讀全文
摘要: 好吧,這個錯誤浪費了我今天幾個小時的時間,必須把它記錄下來。
問題是這樣的,在啟動更新了portmap,exportfs,一些沒問題后,在做/etc/init.d/nfs-kernel-server restart 出現
/etc/init.d/nfs-kernel-server start
Exporting directories for NFS kernel daemonexportfs: /etc/exports [1]:
Neither 'subtree_check' or 'no_subtree_check' specified for export
"foobar".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
.
Starting NFS kernel daemon: nfsd
Not st 閱讀全文
問題是這樣的,在啟動更新了portmap,exportfs,一些沒問題后,在做/etc/init.d/nfs-kernel-server restart 出現
/etc/init.d/nfs-kernel-server start
Exporting directories for NFS kernel daemonexportfs: /etc/exports [1]:
Neither 'subtree_check' or 'no_subtree_check' specified for export
"foobar".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
.
Starting NFS kernel daemon: nfsd
Not st 閱讀全文
摘要: NFS服務器端
apt-get install nfs-kernel-server nfs-common portmap
vi /etc/hosts.allow
portmap: 192.168.0.
lockd: 192.168.0.
rquotad: 192.168.0.
mountd: 192.168.0.
statd: 192.168.0.
vi /etc/hosts.deny
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
vi /etc/default/portmap
將 -i 127.0.0.1 注釋掉 閱讀全文
apt-get install nfs-kernel-server nfs-common portmap
vi /etc/hosts.allow
portmap: 192.168.0.
lockd: 192.168.0.
rquotad: 192.168.0.
mountd: 192.168.0.
statd: 192.168.0.
vi /etc/hosts.deny
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
vi /etc/default/portmap
將 -i 127.0.0.1 注釋掉 閱讀全文
摘要: google Map的交互基本都是事件驅動的,這表示js是通過生成時間來響應交互的,并且處于監聽我們設定的事件,每個 Google Maps API 對象都可導出大量已命名的事件。如果程序想要實現某些事件,則會為這些事件注冊 Javascript 事件偵聽器,并會在通過在 google.maps.event 命名空間中注冊 addListener() 事件處理程序接收這些事件時執行相應的代碼。
初步的事件響應
google map中的所有對象都可以對用戶事件監聽并作出響應,用戶的事件可以包括鼠標或鍵盤,對象可以監聽以下這幾種事件:
'click','dblclick','mouseup','mousedown','mouseover','mouseout'
這些事件看上去很像標準的DOM事件,但這些時間可以在不同的瀏覽器實現不同的DOM事件模型。 閱讀全文
初步的事件響應
google map中的所有對象都可以對用戶事件監聽并作出響應,用戶的事件可以包括鼠標或鍵盤,對象可以監聽以下這幾種事件:
'click','dblclick','mouseup','mousedown','mouseover','mouseout'
這些事件看上去很像標準的DOM事件,但這些時間可以在不同的瀏覽器實現不同的DOM事件模型。 閱讀全文
摘要: 在微博看到介紹的一款linux系統信息神器,dstat,收藏一下
dstat可以直接可直接替換vmstat, iostat, netstat ,nfsstat, ifstat等系統工具,監控cpu、disk 、mem、load、interrupt、net、proc、CS....
安裝
wget http://rpmforge.sw.be/redhat/7.3/en/i386/rpmforge/RPMS/dstat-0.6.9-1.rh7.rf.noarch.rpm
rpm -ivh dstat-0.6.9-1.rh7.rf.noarch.rpm
or
apt-get install dstat
yum install dstat 閱讀全文
dstat可以直接可直接替換vmstat, iostat, netstat ,nfsstat, ifstat等系統工具,監控cpu、disk 、mem、load、interrupt、net、proc、CS....
安裝
wget http://rpmforge.sw.be/redhat/7.3/en/i386/rpmforge/RPMS/dstat-0.6.9-1.rh7.rf.noarch.rpm
rpm -ivh dstat-0.6.9-1.rh7.rf.noarch.rpm
or
apt-get install dstat
yum install dstat 閱讀全文
摘要: 本來是想將房產地圖google map的應用記錄一個系列,但繼1)記錄完之后總找不到時間繼續記錄下去,1)中主要解決了Google Maps JavaScript API V3 與 Google Local Search API兩者由于版本問題帶來的一系列麻煩,思路是使用一個iframe作為兼容的跳板,子頁面應用Local Search API獲得查詢的result后返回給父頁面,下面再記錄一些地圖坐標的定位和一些UI的組成。
可參考 http://xf.house.163.com/gz/map/00Xa.html 閱讀全文
可參考 http://xf.house.163.com/gz/map/00Xa.html 閱讀全文
摘要: 一直以來似乎都有一個錯覺,認為map跟其他的集合類一樣繼承自Collection,其實不然,Map和Collection在結構層次上是沒有任何關系的,通過查看源碼可以發現map所有操作都是基于key-value對,而不是單獨的元素。
下面以HashMap為例子,深入對Map的實現機制進行了解,在這個過程中,請打開jdk源碼。
Hash算法
HashMap使用Hash算法,所以在解剖HashMap之間,需要先簡單的了解Hash算法,Hash算法一般也成為散列算法,通過散列算法將任意的值轉化成固定的長度輸出,該輸出就是散列值,這是一種壓縮映射,也就是,散列值的空間遠遠小于輸入的值空間。
簡單的說,hash算法的意義在于提供了一種快速存取數據的方法,它用一種算法建立鍵值與真實值之間的對應關系,(每一個真實值只能有一個鍵值,但是一個鍵值可以對應多個真實值),這樣可以快速在數組等里面存取數據。
下面我們建立一個HashMap,然后往里面放入12對key-value,這個HashMap的默認數組長度為16,我們的key 閱讀全文
下面以HashMap為例子,深入對Map的實現機制進行了解,在這個過程中,請打開jdk源碼。
Hash算法
HashMap使用Hash算法,所以在解剖HashMap之間,需要先簡單的了解Hash算法,Hash算法一般也成為散列算法,通過散列算法將任意的值轉化成固定的長度輸出,該輸出就是散列值,這是一種壓縮映射,也就是,散列值的空間遠遠小于輸入的值空間。
簡單的說,hash算法的意義在于提供了一種快速存取數據的方法,它用一種算法建立鍵值與真實值之間的對應關系,(每一個真實值只能有一個鍵值,但是一個鍵值可以對應多個真實值),這樣可以快速在數組等里面存取數據。
下面我們建立一個HashMap,然后往里面放入12對key-value,這個HashMap的默認數組長度為16,我們的key 閱讀全文
摘要: 以前的房產地圖一直都是使用有道地圖,雖然有道地圖是很好,但是為了更好,還是決定使用google地圖來重新開發^_^,下面是一個開發完畢的簡單應用http://xf.house.163.com/gz/map/000B.html
1)整合Google Maps JavaScript API V3 與 Google Local Search API
Google Maps JavaScript API V3
地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/
Google Maps JavaScript API V3 文檔讀起來真的是很清晰,各種demo也很齊全,并且論壇的擁有巨大的論壇支持,對比了一下Google Maps JavaScript API V3 和 V2 的版本,雖然第3版的 Google Maps API 看上去跟第2版挺相識,但在內在機制上有了較大的變化,尤其在對移動瀏覽器的支持上,專門針對iphone和android 閱讀全文
1)整合Google Maps JavaScript API V3 與 Google Local Search API
Google Maps JavaScript API V3
地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/
Google Maps JavaScript API V3 文檔讀起來真的是很清晰,各種demo也很齊全,并且論壇的擁有巨大的論壇支持,對比了一下Google Maps JavaScript API V3 和 V2 的版本,雖然第3版的 Google Maps API 看上去跟第2版挺相識,但在內在機制上有了較大的變化,尤其在對移動瀏覽器的支持上,專門針對iphone和android 閱讀全文
摘要: 對于進程管理工具平時大多用的是ps,kill,top,sleep等等這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,也把進程管理的命令做一點系統性的記錄,參考資料基本是鳥哥還有網上的一些文章。
ps
ps命令主要是查看系統進程的狀態,平時最常用的命令是ps aux,然后再使用管道導向到grep查找特定的進程,然后進此特定進程進行操作。
要對進程進行操作必須先了解到當前進程的情況,ps命令體現了現實當前運行進程的快照,ps和top和相似,但ps提供了更多的信息,可以確定哪些進程正在運行,哪些進程被掛起,運行了多長時間,以及進行使用的資源和進程的優先級,這些信息對我們都有很重要的作用,當我們使用ps aux可以獲得終端所有用戶的有關進程信息。 閱讀全文
ps
ps命令主要是查看系統進程的狀態,平時最常用的命令是ps aux,然后再使用管道導向到grep查找特定的進程,然后進此特定進程進行操作。
要對進程進行操作必須先了解到當前進程的情況,ps命令體現了現實當前運行進程的快照,ps和top和相似,但ps提供了更多的信息,可以確定哪些進程正在運行,哪些進程被掛起,運行了多長時間,以及進行使用的資源和進程的優先級,這些信息對我們都有很重要的作用,當我們使用ps aux可以獲得終端所有用戶的有關進程信息。 閱讀全文
摘要: 問題是這樣的,有個腳本需要10秒鐘執行一次,腳本具體功能就不細說,定時任務自然選用crontab,但是crontab最小的執行時間為分鐘,最后決定選用死循環進行實現。
腳本
vi hello.sh
#!/bin/sh
while :
do
echo `date` >> /home/chenyz/1 //這里是任務的實現
sleep 10
done
這里的程序運行時間間隔是10s,小心咯,如果沒有加sleep 10,你的機器很快就會耗盡資源,負載會狂飆。
接著需要把腳本用后臺守護進程來運行,避免用戶退出而導致腳本失效 閱讀全文
腳本
vi hello.sh
#!/bin/sh
while :
do
echo `date` >> /home/chenyz/1 //這里是任務的實現
sleep 10
done
這里的程序運行時間間隔是10s,小心咯,如果沒有加sleep 10,你的機器很快就會耗盡資源,負載會狂飆。
接著需要把腳本用后臺守護進程來運行,避免用戶退出而導致腳本失效 閱讀全文
摘要: 對于用戶管理工具平時大多用的是groupadd,useradd,usermod等等這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,也把用戶管理的命令做一點系統性的記錄,參考資料基本是鳥哥還有網上的一些文章。
用戶組的管理
linux可以對一個用戶組中的所有用戶進行集中的管理,用戶組的管理包括用戶組添加,刪除修改,實際上這些操作就是對/etc/group文件作出修改。
groupadd 新增一個用戶組
groupadd [-g gid [-o]] [-r] [-f] group
-g 其中gid是指定新用戶組的標識號,除非配合使用-o參數,不然該值必須是唯一的
-o 標識新用戶組gid可以和系統中原有的用戶組的gid值相同
實例:
groupadd chenyuzhe1
groupadd -g 789 chenyuzhe2
groupdel 刪除用戶組
實例:
groupdel chenyuzhe1 閱讀全文
用戶組的管理
linux可以對一個用戶組中的所有用戶進行集中的管理,用戶組的管理包括用戶組添加,刪除修改,實際上這些操作就是對/etc/group文件作出修改。
groupadd 新增一個用戶組
groupadd [-g gid [-o]] [-r] [-f] group
-g 其中gid是指定新用戶組的標識號,除非配合使用-o參數,不然該值必須是唯一的
-o 標識新用戶組gid可以和系統中原有的用戶組的gid值相同
實例:
groupadd chenyuzhe1
groupadd -g 789 chenyuzhe2
groupdel 刪除用戶組
實例:
groupdel chenyuzhe1 閱讀全文
摘要: 對于磁盤管理工具平時大多用的是df,du這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,先把磁盤管理的命令做一點系統性的記錄。
du
du的英文為:disk usage,含義是磁盤空間使用情況,功能是逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統數據塊的情況,如果沒有指定目錄,則對當前的目錄進行統計。
du的命令各個選項含義如下:
a:顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
s:只顯示各檔案大小的總合
b:大小用bytes來表示
x:跳過在不同文件系統上的目錄不予統計
a:遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數據塊數 閱讀全文
du
du的英文為:disk usage,含義是磁盤空間使用情況,功能是逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統數據塊的情況,如果沒有指定目錄,則對當前的目錄進行統計。
du的命令各個選項含義如下:
a:顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
s:只顯示各檔案大小的總合
b:大小用bytes來表示
x:跳過在不同文件系統上的目錄不予統計
a:遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數據塊數 閱讀全文
摘要: List在數據結構中表現為是線性表的方式,其元素以線性方式存儲,集合中允許存放重復的對象,List接口主要的實現類有
ArrayList
ArrayList 其實就是一組長度可變的數組,當實例化了一個ArrayList,該數據也被實例化了,當向集合中添加對象時,數組的大小也隨著改變,這樣它所帶來的有優點是快速的隨機訪問,即使訪問每個元素所帶來的性能問題也是很小的,但缺點就是想其中添加或刪除對象速度慢,當你創建的數組是不確定其容量,所以當我們改變這個數組時就必須在內存中做很多的處理,如你想要數組中任意兩個元素中間添加對象,那么在內存中數組要移動所有后面的對象。
LinkedList
LinkedList 是通過節點的連接實現鏈表的數據結構,向linkedList中插入或刪除元素的速度是特別快,而隨機訪問的速度相對較慢,這個是由于鏈表本身的性質造成的,在鏈表中,每個節點都包含了前一個節點的引用,后一個節點的引用和節點存儲值,當一個新節點插入式,只需要修改其中相關的前后關系節點引用即可,刪除節點也是一樣。操作對象只需要改變節點的鏈接,新節點可以存放在 閱讀全文
ArrayList
ArrayList 其實就是一組長度可變的數組,當實例化了一個ArrayList,該數據也被實例化了,當向集合中添加對象時,數組的大小也隨著改變,這樣它所帶來的有優點是快速的隨機訪問,即使訪問每個元素所帶來的性能問題也是很小的,但缺點就是想其中添加或刪除對象速度慢,當你創建的數組是不確定其容量,所以當我們改變這個數組時就必須在內存中做很多的處理,如你想要數組中任意兩個元素中間添加對象,那么在內存中數組要移動所有后面的對象。
LinkedList
LinkedList 是通過節點的連接實現鏈表的數據結構,向linkedList中插入或刪除元素的速度是特別快,而隨機訪問的速度相對較慢,這個是由于鏈表本身的性質造成的,在鏈表中,每個節點都包含了前一個節點的引用,后一個節點的引用和節點存儲值,當一個新節點插入式,只需要修改其中相關的前后關系節點引用即可,刪除節點也是一樣。操作對象只需要改變節點的鏈接,新節點可以存放在 閱讀全文
摘要: 我們都知道Set是一種最簡單的集合,對象的排序無特定的規則,集合里面存放的是對象的引用,所以沒有重復的對象,在上面的代碼中,程序創建了a、b、 c、d、e五個變量,其中a和c,b和e所引用的字符串是一致的,然后向set添加了這5個變量。打印出來的size()只有3個,實際上向集合加入的只有3個對象,在執行Set的add()方法時已經進行了判斷這個對象是否存在于集合,如果對象已經存在則不繼續執行。
Set的接口有兩個實現類,HashSet和TreeSet,HashSet是按照哈希算法來進行存取集合中的對象,存取速度比較快,TreeSet類顯示了SortedSet接口,具有排序功能
HashSet
HashSet是按照哈希算法來存取集合中的對象,具有很好的存取和查找性能,當向集合中加入一個對象時,HashSet會調用對象的hashCode()方法來獲取哈希碼,然后根據這個哈希嗎來計算對象在集合中的存放位置。
在Object類中定義了hashCode()和equal(),equal()是按照內存地址比較對象是否相同,如果 object1.equal( 閱讀全文
Set的接口有兩個實現類,HashSet和TreeSet,HashSet是按照哈希算法來進行存取集合中的對象,存取速度比較快,TreeSet類顯示了SortedSet接口,具有排序功能
HashSet
HashSet是按照哈希算法來存取集合中的對象,具有很好的存取和查找性能,當向集合中加入一個對象時,HashSet會調用對象的hashCode()方法來獲取哈希碼,然后根據這個哈希嗎來計算對象在集合中的存放位置。
在Object類中定義了hashCode()和equal(),equal()是按照內存地址比較對象是否相同,如果 object1.equal( 閱讀全文
摘要: The minimum requirement for a POM are the following:
project root
modelVersion - should be set to 4.0.0
groupId - the id of the project's group.
artifactId - the id of the artifact (project)
version - the version of the artifact under the specified group
Here's an example: 閱讀全文
project root
modelVersion - should be set to 4.0.0
groupId - the id of the project's group.
artifactId - the id of the artifact (project)
version - the version of the artifact under the specified group
Here's an example: 閱讀全文
摘要: 由于歷史原因,幾個項目都選用hessian作為web service的實現方式,hessian的確是非常輕量級,基于http協議進行傳輸,通過自定義的串行化機制將請求信息進行序列化,以二進制傳輸節省了不少的開銷,速度跟socket差不多.客戶端和服務器發起和接收請求都是通過spring提供的hessian api進行請求和接收,但是在服務端中并沒有記錄和控制遠端ip地址和主機的信息,所以需要對源碼進行一些重寫
對org.springframework.remoting.caucho.HessianServiceExporter進行重寫
/**
* 重寫HessianServiceExporter.handleRequest(),攔截獲取遠端調用信息
* @author chenyz
*
*/
public class HouseHessianServiceExporter extends HessianServiceExporter {
private static S 閱讀全文
對org.springframework.remoting.caucho.HessianServiceExporter進行重寫
/**
* 重寫HessianServiceExporter.handleRequest(),攔截獲取遠端調用信息
* @author chenyz
*
*/
public class HouseHessianServiceExporter extends HessianServiceExporter {
private static S 閱讀全文
摘要: 目前幾套系統中主要使用的hessian進行遠程調用webservice服務的有hessian的 HessianProxyFactory(com.caucho.hessian.client.HessianProxyFactory)和 spring的 HessianProxyFactoryBean(org.springframework.remoting.caucho.HessianProxyFactoryBean).
1.HessianProxyFactory
查看HessianProxyFactory源碼后發現,hessian在創建http請求連接webservice服務并沒有對連接超時進行相關的參數設置,所以當網絡出現問題就會造成整個hessian處理的阻塞,進而阻塞整個線程后續的處理
以下是HessianProxyFactory對連接處理的源碼
protected URLConnection openConnection(URL url)
throws IOException
{
URL 閱讀全文
1.HessianProxyFactory
查看HessianProxyFactory源碼后發現,hessian在創建http請求連接webservice服務并沒有對連接超時進行相關的參數設置,所以當網絡出現問題就會造成整個hessian處理的阻塞,進而阻塞整個線程后續的處理
以下是HessianProxyFactory對連接處理的源碼
protected URLConnection openConnection(URL url)
throws IOException
{
URL 閱讀全文
摘要: 對很久以前的一個bug進行分析和總結
function parsePost(data, action) {
try {
var postData = eval("(" + data + ")");
// TO DO1
} catch (e) {
// TO DO2
}
}
這是一段頁面的老代碼,data是數據庫body字段,既是用戶錄入并取出的數據,由于業務的關系,data是以json格式保存的,為了使數據能實現兼容,這里使用try...catch...方式處理,如果變量data能被轉換成對象,則執行TO DO1,否則執行TO DO2.
我們知道eval的作用很簡單,就是把一段字符串傳遞給js解析器,由javascript解析器將這段字符串解釋成為 閱讀全文
function parsePost(data, action) {
try {
var postData = eval("(" + data + ")");
// TO DO1
} catch (e) {
// TO DO2
}
}
這是一段頁面的老代碼,data是數據庫body字段,既是用戶錄入并取出的數據,由于業務的關系,data是以json格式保存的,為了使數據能實現兼容,這里使用try...catch...方式處理,如果變量data能被轉換成對象,則執行TO DO1,否則執行TO DO2.
我們知道eval的作用很簡單,就是把一段字符串傳遞給js解析器,由javascript解析器將這段字符串解釋成為 閱讀全文
摘要: 上次因工作的需求對一臺apache的log做了一次整體的分析,所以順便也對apache的日志分析做下簡單的介紹,主要參考apache官網的Log Files,手冊參照 http://httpd.apache.org/docs/2.2/logs.html
一.日志分析
如果apache的安裝時采用默認的配置,那么在/logs目錄下就會生成兩個文件,分別是access_log和error_log
1.access_log
access_log為訪問日志,記錄所有對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令可以用來簡化該日志的內容和格式
例如,我的其中一臺服務器配置如下
CustomLog "| /usr/sbin/rotatelogs /var/log/apache2/%Y_%m_%d_other_vhosts_access.log 86400 480" vhost_combined
-rw-r--r-- 1 root root 22310750 閱讀全文
一.日志分析
如果apache的安裝時采用默認的配置,那么在/logs目錄下就會生成兩個文件,分別是access_log和error_log
1.access_log
access_log為訪問日志,記錄所有對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令可以用來簡化該日志的內容和格式
例如,我的其中一臺服務器配置如下
CustomLog "| /usr/sbin/rotatelogs /var/log/apache2/%Y_%m_%d_other_vhosts_access.log 86400 480" vhost_combined
-rw-r--r-- 1 root root 22310750 閱讀全文
摘要: 下載地址 http://awstats.sourceforge.net
下載最新版本
安裝
cd /home/download
wget http://awstats.sourceforge.net/files/awstats-7.0.tar.gz
tar zxf awstats-7.0.tar.gz
mv awstats-7.0 awstats
perl awstats_configure.pl
在[y/n]選擇時,輸入y
接著輸入你要分析的域名,輸入tech163
一路Enter
配置
vi /etc/awstats/awstats.tech163.com 閱讀全文
下載最新版本
安裝
cd /home/download
wget http://awstats.sourceforge.net/files/awstats-7.0.tar.gz
tar zxf awstats-7.0.tar.gz
mv awstats-7.0 awstats
perl awstats_configure.pl
在[y/n]選擇時,輸入y
接著輸入你要分析的域名,輸入tech163
一路Enter
配置
vi /etc/awstats/awstats.tech163.com 閱讀全文