一.C10K的問題
C10K的問題在上個世紀90年代就被提出來了。大概的意思是當用戶數超過1萬時,很多設計不良好的網絡服務程序性能都將急劇下降、甚至癱瘓。並且,這個問題並不能通過升級硬件設備解決,是操作系統固有的問題,也就是說,如果你的服務器最高能支撐1000個並發,儘管你升級了計算能力高一倍的 cpu,內存再翻一番,硬盤轉速在快一倍,也無法支撐2000個並發。
經典的網絡編程模型有4個:
1. Serve one client with each thread/process, and use blocking I/O。
即對每個客戶都使用不同的線程或進程進行服務,在每個線程或進程中使用阻塞I/O。這是小程序和java常用的策略,對於交互式的應用也是常見的選擇,這種策略很能難滿足高性能程序的需求,好處是實現極其簡單,容易實現複雜的交互邏輯。我們常用的Apache、ftpd等都是這種工作。
2. Serve many clients with single thread, and use nonblocking I/O and readiness notification。
即對所有的客戶使用單一一個線程或進程進行服務,在這個線程或進程裡,採用異步IO的策略。這是經典模型,優點在於實現較簡單,方便移植,也能提供足夠的性能;缺點在於無法充分利用多CPU的資源。
3. Serve many clients with each thread, and use nonblocking I/O and readiness notification
對經典模型2的簡單改進,仍然採用異步IO的策略,但對所有的客戶使用多個線程或進程進行服務。缺點是容易在多線程並發上出bug,甚至某些OS不支持多線程進行readiness notification
4. Serve many clients with each thread, and use asynchronous I/O
在有AI/O支持的OS上,能提供相當高的性能。不過AI/O編程模型和經典模型差別相當大,基本上很難寫出一個框架同時支持AI/O和經典模型。這個模型主要是用於window平台上。
在linux上開發高性能的網絡應用,只能選著第2、3種方式。考慮到複雜性,我們往往只採用第2種。下面就討論一下第二種模型。
Google Map一成不變的色彩是否讓你有些審美疲勞?如果你對顏色不太敏感,比如色弱……是否曾經覺得看Google Map有些吃力?如果以上假設成真,請到GoogleMapsBW來。在這裡您可以自己調整Google Map的顏色、調節對比度,調到你看得爽為止!
GoogleMapsBW是用Google Maps API 的Flash功能製作,可以調節顏色、對比度、亮度以及顏色飽和度的Google Map。在頁面Google Map下方設有4行調節按鈕,從上到下分別是:Brightness(亮度)、Contrast(對比度)、 Saturation(飽和度)和Hue offset(色彩調節)。
一般人往往沒注意 Y/C 伸張的問題,導致轉出來的純白 (235,235,235) 在電腦螢幕上看起來就不是純白,純黑 (16,16,16) 在電腦螢幕上看起來也不會是純黑。因此在電腦上看,會覺得顏色變淡,好像照上了一層白紗,所以會覺得對比不足(最亮和最暗的差距縮小),不如原始檔看起來漂亮。
通常轉 DVD 在 DVD2AVI 匯出 d2v 的時候都會做好 Y/C 伸張(YUV->RGB 設在 PC Scale),所以再交給 TMPEGnc 時壓縮設定中不能勾選進階設定-->量子化行列(Quantize matrix)底下的"Basic YCbCr ?出力"(Out YUV data as Basic YCbCrnot CCIR601),這樣 TMPGEnc 壓縮時便會做 Y/C 壓縮,壓出來的顏色、對比才會正確。
但 AVI 轉檔的時候就要相反,因為 AVI 本身資料壓縮為 16~235,如果沒有要對畫面做修改,則不必做 Y/C 伸張,但是壓縮的時候必需要勾選進階設定-->量子化行列(Quantize matrix)底下的 "Basic YCbCr ?出力"(Out YUV data as Basic YCbCr not CCIR601),這樣 TMPGEnc 壓縮時便不會做 Y/C 壓縮,壓出來的顏色、對比才會正確。若要對畫面做修改,必須使用 Descale CCIR601 這個濾鏡,把 Luminous, Chroma 兩個選項都推到 255(也就是做 Y/C 伸張),然後才做其他的編輯動作。Descale CCIR601 的順位要排第一位。然後壓縮時直接壓縮("Basic YCbCr ?出力"此時就不用勾了)便可以得到正確的結果。
1、古老的欺騙sql語句
在默認模式下,即使是你忘了把php.ini拷到/usr/local/lib/php.ini下,php還是打開magic_quotes_gpc=on。
這樣所有從get/post/cookie來的變量的單引號(')、雙引號(")、反斜槓backslash()以及空字元nul
(the null byte)都會被加上反斜槓,以使數據庫能夠正確查詢。
但是在php-4-rc2的時候引入了一個配置文件php.ini-optimized,這個優化的php.ini卻是
magic_quotes_gpc=off的。某些網管看到optimized字樣也許就會把php.ini-optimized拷到
/usr/local/lib/php.ini,這時就比較危險。像比較簡單的驗證,假設沒有過濾必要的字符:
select * from login where user='$http_post_vars[user]' and pass='$http_post_vars[pass]'
我們就可以在用戶框和密碼框輸入1『 or 1='1通過驗證了。這是非常古董的方法了,這個語句會
替換成這樣:
select * from login where user='1' or 1='1' and pass='1' or 1='1'
因為or 1='1'成立,所以通過了。
解決的辦法最好就是過濾所有不必要的字符,還有就是推薦對於從get/post/cookie來的並且用在sql
中的變量加一個自定義的函數:
主要是為了你的程序能安全移植在各種系統裡。
本文蒐集整理了16款Chrome擴展,如果你是一名Web開發者,這些擴展肯定會對你的工作有所幫助。你只需在瀏覽器中運行,不必再另外安裝或打開獨立的應用程序。
相信很多人都遇到過在設計中自定義滾動條樣式的情景,之前我都是努力說服設計師接受瀏覽器自帶的滾動條樣式,但是這樣只能規避還是解決不了問題,最近在項目中遇到了,正好來總結一下。當然,兼容所有瀏覽器的滾動條樣式目前是不存在的。
IE是最早提供滾動條的樣式支持,嗯,好多年了,但是其它瀏覽器一直沒有支持,IE獨孤求敗了。
這些樣式規則很簡單:
大概就這些,你也可以定義cursor來定義滾動條的鼠標手勢。
我一向認為,對話這項事情是必須建立在雙方有知識儲備交集的情況下發生的,當然前提是獨立思考得來的知識而不是谷歌或維基來的。基於《人性論》或《道德情操論》也許可以就“要加薪彈鋼琴”的道德問題進行一些交流,但是在這個事情的法律層次上交流可能就必須具備種花忍民《刑法》等知識。曾經在不同場合與很多安卓青探討過一些或淺或深的知識層面問題,如今想來具備真正獨立思考能力與當量知識儲備的,也只有一人而己;換言之,絕大部分時候只是對牛彈琴。
那麼我將從以下七點來說明iPhone 4比Android手機們好在哪裡:工業設計,操作系統,屏幕顯示,開發環境,生態環境,硬件配置,雜項。
關於英文字體的文章很少,因為資料有限我只參考一本《印刷字體》和紀元[MX]視覺的一篇文章。做完這個課程設計我瞭解了外文字體的一些知識,有一些也是我從各方面蒐集的一些資料:
英文字體品種主要有白正細體、白正粗體、白斜細體、白斜粗體黑正粗體、黑斜粗體、花體、標題黑斜體、標題黑正體、斜黑體、書版正體、書版斜體、書版狹身正體、細黑正體、名片正黑體、美術正體、美術廣告斜體、廣告裝飾體、廣告狹身正體等。
西文字體通常不同字形來分類,不同的造型特點,形成了各種各樣的字體,各種字體充分體現了設計者的個性,形成了各自的風格和特點。在以後的長期使用中,這些字體 又派生出許多變形字體,這些變形字體具有同樣的特徵和一致的傾向。一般把具有共同特徵的字體群稱為西文字體體系,西文字體多以活字設計者、雕刻者、活字鑄造者或偉人的名字命名。也有用字體的發源地地名作為西文字體體系的名稱。西文字體的種類極為豐富,繁多,美國有1800多種,全世界有5000~6000種,西文字體主要是拉丁字母的體式。
拉丁字母起源於圖畫,是由古埃及象形文字演變發展而來,希臘人在與腓基尼人在交往中,吸取了他們的文化,創造了希臘字母,成為現代拉丁文字母的雛形,到羅馬廢除初期王朝政體而實施共和時期,拉丁字母基本定型。羅馬帝國出現時,拉丁字母得到很大發展並成熟起來,拉丁字母的發展不僅是一種文化的發展,而且字體也向美觀實用的方向發展。