並非萬能的xml
左直拳
xml是個炙手可熱的東西,出來很多年了,好象還聽說將取代html(不過直到今天html1.1還健在,其實我認為兩者很大程度上並無可比性)。有一次我去面試,人家問我熟不熟悉xml,答曰不會,結果被「人來落閘放狗」地趕了出來。
不過看起來,xml比較適合少量的資料,記錄一多,弊端就出來了。之前做的乙個**,需要不定期上傳本地系統的資料。採取的辦法是本地系統(pb作品)先將資料匯出為xml,然後上傳此xml檔案到**,讀取分析,儲存到**資料庫。
剛開始還未發覺有什麼不妥,只是速度慢了一點。直到有一天,客戶上傳了乙個包含3萬多條記錄的檔案,不管重複了多少遍,網頁最終還是顯示「連線已超時」。其實在網頁的伺服器端**裡,我已經標上
server.scripttimeout = 900;
iis也已經將**的連線超時值由120秒設成900秒。
那個檔案並不大,只有2m多一點,不過由於記錄短,所以數目比較多,有3萬多條。我除錯了一下,發覺時間既不是耗在上傳上,也不是在更新資料庫上,而是在檔案讀取上。
這說明,xml的讀取效率不高,也許是因為它採取了明文訪問的原因吧。
後來的解決辦法是拋棄xml,改用dbf格式,將資料導成dbf檔案,然後上傳,讀取,儲存,檔案也小,整個過程只須幾十秒。
讀入dbf主要是靠sql server。語句如下:
string sql = "insert into " + table_name + " select * from openrowset('microsoft.jet.oledb.4.0','dbase iv;hdr=no;imex=2;database=" + dbf檔案所在目錄 + "','select * from [" + dbf檔名 + "]')";
要執行這條語句,資料庫的登入名要具有system.administrators伺服器角色。
Code coverage並非萬能的
前面單元測試中提到 覆蓋率,簡單來說 被執行過,就是 覆蓋過 如果一段程式執行了一組測試用例之後,100 的 被執行了,那麼是否就說明再也不用寫新的測試用例了呢?答案是否定的。1 不同 是否執行,有很多組合,一行 被執行過,沒有問題,並不表明這一行程式在所有可能條件的組合下都能正確無誤地執行。2 覆...
遞迴並非萬能
遞迴的確簡潔,但效能很差,因為它進行了大量重複的計算,如果用遞迴運算做乘法,5 4 5 4 3 2 1 4 3 2 1顯然4 完全可以算一遍,而遞迴結結實實的算了兩遍 如果我們把每一步運算的結果都用字典存起來,那就能減少大量的運算 給出1,2,3,4,5,n 一共n個數,求用它們能夠構成多少種形狀不...
萬能密碼 php,PHP萬能密碼
說實話如果乙個 的前台都是注入漏洞,那麼憑經驗,萬能密碼進後台的機率基本上是百分之百。可是有的人說對php的站如果是gpc魔術轉換開啟,就會對特殊符號轉義,就徹底杜絕了php注入。其實說這話的人沒有好好想過,更沒有嘗試過用萬能密碼進php的後台。其實gpc魔術轉換是否開啟對用萬能密碼進後台一點影響也...