|
2010年10月29日
有人在Stack Overflow上 發問,動手開發網站之前,需要知道哪些事情? 不出意料地,他得到了一大堆回答。通常情況下,你需要把所有人的發言從頭到尾讀一遍。但是,Stack Overflow有一個很貼心的設計,它允許在問題下方開設一個wiki區,讓所有人共同編輯一個最佳答案。于是,就有了下面這篇文章,一共總結出六個方 面共計62條"網站開發須知"。 我發現,這種概述性的問題,最適合這種集合群智、頭腦風暴式的回答方式了。這也是我第一次覺得,Stack Overflow做到了Wikipedia做不到的事。(難怪它最近擠進了全美前400大網站。) 在我的印象中,關于網站開發,這樣全面的概述性文章非常少見,因此也就非常有用。大家不妨看看,62件事情中你做到了多少? 一、界面和用戶體驗(Interface and User Experience) 1.1 知道各大瀏覽器執行Web標準的情況,保證你的站點在主要瀏覽器上都能正常運行。你至少要測試以下引擎:Gecko(用于Firefox)、Webkit(用于Safari、Chrome和一些手機瀏覽器)、IE(你可以利用微軟發布的Application Compatibility VPC Images進行測試)和Opera。同時,不同的操作系統,可能也會影響瀏覽器如何呈現你的網站。 1.2 除了瀏覽器,網站還有其他使用方式:手機、屏幕朗讀器、搜索引擎等等。你應該知道在這些情況下,你的網站的運行狀況。MobiForge提供了手機網站開發的一些相關知識。 1.3 知道如何在基本不影響用戶使用的情況下升級網站。通常來說,你必須有版本控制系統(CVS、Subversion、Git等等)和數據備份機制(backup)。 1.4 不要讓用戶看到那些不友好的出錯提示。 1.5 不要直接顯示用戶的Email地址,至少不要用純文本顯示。 1.6 為你的網站設置一些合理的使用限制,一旦超過門檻值,就自動停止服務。(這也與網站安全相關。) 1.7 知道如何實現網頁的漸進式增強(progressive enhancement)。 1.8 用戶發出POST請求后,總是將其重導向(redirect)至另外一個網頁。 1.9 不要忘記網站的可訪問性(accessibility,即殘疾人如何使用網站)。對于美國網站來說,有時這是法定要求。WAI-ARIA有一些這方面很好的參考資料。 二、安全性(Security) 2.1 閱讀《OWASP開發指南》,它提供了全面的網站安全指導。 2.2 了解SQL注入(SQL injection)及其預防方法。 2.3 永遠不要信任用戶提交的數據(cookie也是用戶端提交的?。?。 2.4 不要明文(plain-text)儲存用戶的密碼,要hash處理后再儲存。 2.5 不要對你的用戶認證系統太自信,它可能很容易就被攻破,而你事先根本沒意識到存在相關漏洞。 2.6 了解如何處理信用卡。 2.7 在登錄頁面及其他處理敏感信息的頁面,使用SSL/HTTPS。 2.8 知道如何對付session劫持(session hijacking)。 2.9 避免" 2.10 避免" 2.11 及時打上補丁,讓你的系統始終跟上最新版本。 2.12 確認你的數據庫連接信息的安全性。 2.13 跟蹤攻擊技術的最新發展,以及你使用的平臺的最新安全漏洞。 2.14 閱讀Google的《瀏覽器安全手冊》(Browser Security Handbook)。 2.15 閱讀《網絡軟件的黑客手冊》(The Web Application Hackers Handbook)。 三、性能(Performance) 3.1 只要有可能,就使用緩存(caching)。正確理解和使用HTTP caching與HTML5離線儲存。 3.2 優化圖片。不要把一個20KB的圖片文件,作為重復出現的網頁背景圖案。 3.3 學習如何用gzip/deflate壓縮內容(deflate方式更可取)。 3.4 將多個樣式表文件或腳本文件,合為一個文件,這樣可以減少瀏覽器的http請求數,以及減小gzip壓縮后的文件總體積。 3.5 瀏覽Yahoo的Exceptional Performance網站,里面有大量提升前端性能的優秀建議,還有他們的YSlow工具。Google的page speed則是另一個用來分析網頁性能的工具。兩者都要求安裝Firebug。 3.6 如果你的網頁用到大量的小體積圖片(比如工具欄),就應該使用CSS Image Sprite,目的是減少http請求數。 3.7 大流量的網站應該考慮將網頁對象分散在多個域名(split components across domains)。 3.8 靜態內容(比如圖片、CSS、JavaScript、以及其他cookie無關的網頁內容)都應該放在一個 3.9 將瀏覽器完成網頁渲染所需要的http請求數最小化。 3.10 使用Google的Closure Compiler壓縮JavaScript文件,YUI Compressor亦可。 3.11 確保網站根目錄下有favicon.ico文件,因為即使網頁中根本不包括這個文件,瀏覽器也會自動發出對它的請求。所以如果這個文件不存在,就會產生大量的404錯誤,消耗光你的服務器的帶寬。 四、搜索引擎優化(Search Engine Optimization,SEO) 4.1 使用"搜索引擎友好"的URL形式,比如example.com/pages/45-article-title,而不是example.com/index.php?page=45。 4.2 不要使用"點擊這里"之類的超級鏈接,因為這樣等于浪費了一個SEO機會,而且降低了"屏幕朗讀器"(screen reader)的使用效果。 4.3 創建一個XML sitemap文件,它的缺省位置一般是/sitemap.xml(即放在網站根目錄下)。 4.4 當你有多個URL指向同一個內容時,在網頁代碼中使用<link rel="canonical" ... />。 4.5 使用Google的Webmaster Tools和Yahoo的Site Explorer。 4.6 從一開始就使用Google Analytics(或者開源的訪問量分析工具Piwik)。 4.7 知道robots.txt的作用,以及搜索引擎蜘蛛的工作原理。 4.8 將www.example.com的訪問請求導向example.com(使用301 Moved Permanently重定向),或者采用相反的做法,目的是防止Google把它們當做兩個網站,分開計算排名。 4.9 知道存在著惡意或行為不正當的網絡蜘蛛。 4.10 如果你的網站有非文本的內容(比如視頻、音頻等等),你應該參考Google的sitemap擴展協議。 五、技術(Technology) 5.1 理解 5.2 確保你的XHTML/HTML和CSS符合W3C標準,使得它們能夠通過 5.3 理解瀏覽器如何處理JavaScript腳本。 5.4 理解網頁上的JavaScript文件、樣式表文件和其他資源是如何裝載及運行的,考慮它們對頁面性能有何影響。在某些情況下,可能應該將腳本文件放置在網頁的尾部。 5.5 理解JavaScript沙箱(Javascript sandbox)的工作原理,尤其是如果你打算使用iframe。 5.6 知道JavaScript可能無法使用或被禁用,以及Ajax并不是一定會運行。記住,"不允許腳本運行"(NoScript)正在某些用戶中變得流行,手機瀏覽器對腳本的支持千差萬別,而Google索引網頁時不運行大部分的腳本文件。 5.7 了解301重定向和302重定向之間的區別(這也是一個SEO相關問題)。 5.8 盡可能多得了解你的部署平臺(deployment platform)。 5.9 考慮使用樣式表重置(Reset Style Sheet)。 5.10 考慮使用JavaScript框架(比如jQuery、MooTools、Prototype),它們可以使你不用考慮瀏覽器之間的差異。 六、解決bug 6.1 理解程序員20%的時間用于編碼,80%的時間用于維護,根據這一點相應安排時間。 6.2 建立一個有效的錯誤報告機制。 6.3 建立某些途徑或系統,讓用戶可以與你接觸,向你提出建議和批評。 6.4 為將來的維護和客服人員撰寫文檔,解釋清楚系統是怎么運行的。 6.5 經常備份?。ú⑶掖_保這些備份是有效的。)除了備份機制,你還必須有一個恢復機制。 6.6 使用某種版本控制系統儲存你的文件,比如Subversion或Git。 6.7 不要忘記做單元測試(Unit Testing),Selenium之類的框架會對你有用。
iBatis解決sql注入
(1) ibatis xml配置:下面的寫法只是簡單的轉義 name like '%$name$%'
(2) 這時會導致sql注入問題,比如參數name傳進一個單引號“'”,生成的sql語句會是:name like '%'%'
(3) 解決方法是利用字符串連接的方式來構成sql語句 name like '%'||'#name#'||'%'
(4) 這樣參數都會經過預編譯,就不會發生sql注入問題了。
(5) #與$區別:
#xxx# 代表xxx是屬性值,map里面的key或者是你的pojo對象里面的屬性, ibatis會自動在它的外面加上引號,表現在sql語句是這樣的 where xxx = 'xxx' ;
$xxx$ 則是把xxx作為字符串拼接到你的sql語句中, 比如 order by topicId , 語句這樣寫 ... order by #xxx# ibatis 就會把他翻譯成 order by 'topicId' (這樣就會報錯) 語句這樣寫 ... order by $xxx$ ibatis 就會把他翻譯成 order by topicId
一、關于滾動顯屏加載
常常會有這樣子的頁面,內容很豐富,頁面很長,圖片較多。比如說光棍節很瘋狂的淘寶商城頁面。 或者是前段時間寫血本買了個高檔耳機的京東商城頁面,或者是新浪微博之類。
這些頁面圖片數量多,而且比較大,少說百來K,多則上兆。要是頁面載入就一次性加載完畢。乖乖,估計黃花都變成黃花菜了。所以,我們得做點什么,避 免這種糟糕的狀況發生。目前很流行的做法就是滾動動態加載,顯示屏幕之外的圖片默認是不加載的,隨著頁面的滾動,這個要顯示圖片的區域進入了瀏覽器可是窗 口范圍,則觸發圖片的加載顯示。這種做法的好處是,一是頁面加載速度快(瀏覽器轉啊轉的圈圈或是進度條很快就玩完了),二是節約了流量,因為不可能每個用 戶瀏覽頁面時從頭滾到尾的。
貌似我上面提到的幾個站點就是采用的這種做法,例如,我以迅雷不及掩耳的速度從淘寶商城首頁截下來的已觸發滾動加載但是未加載完畢的圖片: 
這是提高前端性能,優化頁面加載速度很實用的做法??瓷先ミ@種技巧有些技術門檻,其實很簡單的。我們需要一個滾動事件,然后判斷元素是否在瀏覽器窗 口,然后,顯示圖片(或是其他元素)就可以啦。我在jQuery庫下寫了個實現此效果的插件,下面就將簡單展示講解此插件的使用以及滾動動態加載的實現。
二、jQuery滾動加載插件scrollLoading
雖然只有幾十行代碼,但是為了方便使用,我還是將其插件化了。插件名為jquery.scrollLoading.js,您可以狠狠地點擊這里下載(右鍵 – [目標|鏈接]另存為),或是點擊這里下載mini壓縮版的。
demo 您可以狠狠地點擊這里:jQuery滾動加載圖片等demo,如果您的網速是在貧困線上掙扎,可以慢慢拖動滾動條,就可以很清楚的看到滾動加載的效果了;如果您的網速讓你引以為豪,哥,你需要很快的拖動滾動條才能瞥見效果。效果類似下面: 
demo頁面中似乎有段破壞和諧的HTML片段,那是動態加載HTML后的效果,也就是說,此scrollLoading不僅可以用來滾動加載圖片,Ajax load頁面什么的也是可以的。
三、scrollLoading使用
不管怎樣,首先調用jQuery庫文件,還有jquery.scrollLoading.js,您可以直接在頁面的某處添上如下的代碼:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <script type="text/javascript" src="http://www.zhangxinxu.com/study/js/mini/jquery.scrollLoading-min.js"></script>
此插件的方法名就是scrollLoading,所以,直接:包裝器.scrollLoading(); 就可以實現滾動加載效果了,簡單的吧。如下:
$(".scrollLoading").scrollLoading();
表示所有class為scrollLoading的元素綁定了滾動加載的方法。 當然,不可能真的就如此簡單,我們還需要做點小動作的。元素默認是不加載的,那么真正的加載地址顯然要預先在元素上放置的,例如新浪微博默認把頭像地址綁在了一個自定義的”dynamic-src”屬性上,見下圖: 
在HTML5中,以data-開頭的自定義屬性都是合法的,且地址可以是圖片,頁面等。所以,我設定了綁定地址的自定義屬性為”data-url”,此屬性值設為真實的圖片(或頁面)地址就可以了。例如下面:
<div class="scrollLoading" data-url="loaded.html">加載中...</div>
會在滾動時加載名為loaded.html的頁面,并自動替換里面的內容。
對于常用的圖片,還有一點小問題,就是其默認的src圖片地址。其src地址不能是真實的圖片地址(否則會直接一次性全部加載),也不能是空地址或是壞地址,否則IE瀏覽器下會出現很驚悚的紅叉叉。 。我的做法是默認鏈接的是一個1px * 1px的gif透明圖片(大小很小),同時可以透出后面加載中gif動畫圖片,當滾動加載的時候直接把此gif圖片替換掉。于是,對于圖片,可能就有類似下面的代碼:
<img class="scrollLoading" data-url="http://image.zhangxinxu.com/image/study/head/s180/1.jpeg" src="http://www.zhangxinxu.com/study/image/pixel.gif" width="180" height="180" style="background:url(http://www.zhangxinxu.com/study/image/loading.gif) no-repeat center;" />
四、scrollLoading可選參數
scrollLoading是個很簡單很小的插件(無注釋YUI compressor min版僅508B),所以參數也很少,就一個,見下表:
參數 | 默認 | 釋義 |
attr |
data-url |
獲取元素加載地址的屬性名 |
就這些了。此插件只適用于頁面默認滾動條的動態加載。對于內部div之類的滾動加載不支持。
五、周五,結語
要下班了,nice! 明天周末,我要去釣魚。 我感冒了,鼻涕流個不停,難受。 空間近日升級了,20G的月流量已經挺不住了。 最近經??磩勇?br /> 我決定在RSS里面加點廣告,評論鏈接什么的。
//zxx:主人,這是你有屎以來最齷齪的結語了。
恩,對此我舉雙腳表示贊同。
原創文章,轉載請注明來自張鑫旭-鑫空間-鑫生活[http://www.zhangxinxu.com] 本文地址:http://www.zhangxinxu.com/wordpress/?p=1259
一、相關demo
本文地址: http://www.zhangxinxu.com/wordpress/?p=616
本文作者為:張鑫旭 來源于:張鑫旭-鑫空間-鑫生活 歡迎訪問原出處
二、簡介與說明
- 此jQuery插件為Ajax分頁插件,一次性加載,故分頁切換時無刷新與延遲,如果數據量較大不建議用此方法,因為加載會比較慢。
- 原插件CSS不太合理,使用浮動,故無法方便實現左右方向的定位,且未清除浮動,在中文修改版中我對其進行了優化,使其支持text-align的定位。
- 對原js文件注釋進行了中文翻譯,demo頁面也是漢化了的,demo頁面的js與原demo有一些出入,但核心不變。
本文地址: http://www.zhangxinxu.com/wordpress/?p=616
本文作者為:張鑫旭 來源于:張鑫旭-鑫空間-鑫生活 歡迎訪問原出處
三、使用方法
跟一般的jQuery插件一樣,此插件使用也很簡單便捷。方法是pagination ,例如$("#page").pagination(100); ,這里的100參數是必須的,表示顯示項目的總個數,這是最簡單的使用,得到的顯示如下: 
還有一點值得一提的是分頁列表需要放在class類為pagination的標簽內,您可以使用text-align屬性控制分頁居中顯示還是居右顯示。
回調函數一般用來裝載對應分頁顯示的內容,具體參見demo源文件。
本文地址: http://www.zhangxinxu.com/wordpress/?p=616
本文作者為:張鑫旭 來源于:張鑫旭-鑫空間-鑫生活 歡迎訪問原出處
四、參數
參數名 | 描述 | 參數值 |
maxentries |
總條目數 |
必選參數,整數 |
items_per_page |
每頁顯示的條目數 |
可選參數,默認是10 |
num_display_entries |
連續分頁主體部分顯示的分頁條目數 |
可選參數,默認是10 |
current_page |
當前選中的頁面 |
可選參數,默認是0,表示第1頁 |
num_edge_entries |
兩側顯示的首尾分頁的條目數 |
可選參數,默認是0 |
link_to |
分頁的鏈接 |
字符串,可選參數,默認是"#" |
prev_text |
“前一頁”分頁按鈕上顯示的文字 |
字符串參數,可選,默認是"Prev" |
next_text |
“下一頁”分頁按鈕上顯示的文字 |
字符串參數,可選,默認是"Next" |
ellipse_text |
省略的頁數用什么文字表示 |
可選字符串參數,默認是"…" |
prev_show_always |
是否顯示“前一頁”分頁按鈕 |
布爾型,可選參數,默認為true,即顯示“前一頁”按鈕 |
next_show_always |
是否顯示“下一頁”分頁按鈕 |
布爾型,可選參數,默認為true,即顯示“下一頁”按鈕 |
callback |
回調函數 |
默認無執行效果 |
本文地址: http://www.zhangxinxu.com/wordpress/?p=616
本文作者為:張鑫旭 來源于:張鑫旭-鑫空間-鑫生活 歡迎訪問原出處
五、使用舉例
例如下面的使用代碼:
$("#Pagination").pagination(56, { num_edge_entries: 2, num_display_entries: 4, callback: pageselectCallback, items_per_page:1 });
這段代碼表示的含義是:總共有56(maxentries)個列表項,首尾兩側分頁顯示2(num_edge_entries)個,連續分頁主體數 目顯示4(num_display_entries)個,回調函數為pageselectCallback(callback),每頁顯示的列表項為 1(items_per_page)。您可以對照參數表修改配置這里的參數。
本文地址: http://www.zhangxinxu.com/wordpress/?p=616
本文作者為:張鑫旭 來源于:張鑫旭-鑫空間-鑫生活 歡迎訪問
六、關于demo的一些說明
總共有三個demo,第一個demo就是個靜態的數據,直接寫在HTML上;第二個使用Ajax加載HTML數據,然后進行分頁顯示;第三個demo可以動態修改一些參數觀察對應的分頁效果。
所有demo頁面的js注釋我都改為了中文標注,難點在于回調函數,demo中回調函數有兩個參數,一個是page_index,另一個是jq,前 一個表示您當前點擊的那個分頁的頁數索引值,后一個參數表示裝載容器。這里的頁數索引值是關鍵,我們要根據這個索引值找到對應的(例如)HTML元素,然 后再指定的容器中顯示出來,demo中提供了裝載單元素以及多元素的方法,相信不會有太大問題。 
http://www.zhangxinxu.com/wordpress/
這小子個人空間里前端特效不錯,還帶有用例,源碼,效果圖,以及demo
Amateras Eclipse HTML Editor
Amateras Eclipse HTML Editor |
Homepage |
http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor |
Download |
https://sourceforge.jp/projects/amateras/files/ |
Dependencies |
GEF: http://www.eclipse.org/gef |
Description |
Eclipse HTML Editor is an Eclipse plugin for HTML/JSP/XML Editing. It works on Eclipse 3.0 (or higher), JDT and GEF. It has following features.
- HTML/JSP/XML/CSS Hilighting
- HTML/JSP Preview
- JSP/XML Validation
- Contents Assist (HTML Tags/Attributes, XML based on DTD and JSP taglib and more)
- Wizards for creating HTML/JSP/XML files
- Outline View
- Editor Preferences
- Editor Folding
- Web Browser (It works as an Eclipse's editor)
- Image Viewer
- Tag Palette
- CSS code completion and outline
|
Usage |
http://amateras.sourceforge.jp/docs/FacesIDE/HtmlEditor.html
|
XMLBuddy
XMLBuddy |
Homepage |
http://www.xmlbuddy.com/ |
Download |
http://xmlbuddy.com/2.0/licensed.html |
Dependencies |
|
Description |
http://xmlbuddy.com/2.0/features.html |
Usage |
|
Freemarker IDE
Freemarker IDE |
Homepage |
http://www.freemarker.org/editors.html |
Download |
http://sourceforge.net/project/showfiles.php?group_id=794 |
Dependencies |
|
Description |
|
Usage |
|
JSEclipse
JSEclipse |
Homepage |
http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor |
Download |
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Try-Download/ |
Dependencies |
The Eclipse SDK version 3.1 or higher The Java Runtime Environment version 5.0 or higher |
Description |
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview |
Usage |
|
SQLExplorer
SQLExplorer |
Homepage |
http://eclipsesql.sourceforge.net/ |
Download |
http://sourceforge.net/project/showfiles.php?group_id=132863 |
Dependencies |
|
Description |
Eclipse IDE plugin for database query/schema viewer for nearly any kind of JDBC database. It supports plugins for specialized functionality for individual databases and data tools ( like Hibernate, Oracle or Sybase ) |
Usage |
|
Properties Editor
Properties Editor |
Homepage |
http://propedit.sourceforge.jp/index_en.html |
Download |
http://sourceforge.jp/projects/propedit/ |
Dependencies |
|
Description |
|
Usage |
|
SpringIDE
Spring IDE |
Homepage |
http://www.springframework.org/download |
Download |
Updatesite: http://springide.org/updatesite/ Download: http://springide.org/updatesite/ |
Dependencies |
|
Description |
|
Usage |
|
JettyLauncher
Jetty Launcher |
Homepage |
http://jettylauncher.sourceforge.net/ |
Download |
Updatesite: http://jettylauncher.sourceforge.net/updates |
Dependencies |
|
Description |
|
Usage |
|
方式一:
Java轉exe篇: 實現方式:Eclipse搭配JSmooth(免費)。 1.先由Eclipse制作包含Manifest的JAR。制作教學 2.使用JSmooth將做好的JAR包裝成EXE。 JSmooth下載頁面: http://jsmooth.sourceforge.net/index.php ; 3.制作完成的exe文件,可在有裝置JRE的Windows上執行。
方式二:
exe4j
方式三
NSIS(這個最好用)
方法四:
Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executables. The executable can be configured to search for a certain JRE version or use a bundled one, and it's possible to set runtime options, like the initial/max heap size. The wrapper also provides better user experience through an application icon, a native pre-JRE splash screen, a custom process name, and a Java download page in case the appropriate JRE cannot be found.
EasyTomcat支持您使用的Apache Tomcat和MySQL的。您可以輕松的啟動,停止和配置Tomcat和MySQL,尤其是你不需要任何特殊的知識來使用它。您可以監控服務器和查看統計信息的重要屬性。


經典語錄:
哈佛有一個著名的理論:人的差別在于業余時間,而一個人的命運決定于晚上8點到10點之間。每晚抽出2個小時的時間用來閱讀、進修、思考或參加有意的演講、討論,你會發現,你的人生正在發生改變,堅持數年之后,成功會向你招手。

經典語錄:
無論你的收入是多少,記得分成五份進行規劃投資:增加對身體的投資,讓身體始終好用;增加對社交的投資,擴大你的人脈;增加對學習的投資,加強你的自信;增加對旅游的投資,擴大你的見聞;增加對未來的投資,增加你的收益。好好規劃落實,你會發現你的人生逐步會有大量盈余。

經典語錄:
過去的一頁,能不翻就不要翻,翻落了灰塵會迷了雙眼。有些人說不出哪里好,但就是誰都替代不了! 那些以前說著永不分離的人,早已經散落在天涯了。收拾起心情,繼續走吧,錯過花,你將收獲雨,錯過這一個,你才會遇到下一個。

經典語錄:
被人誤解的時候能微微的一笑,這是一種素養;受委屈的時候能坦然的 一笑,這是一種大度;吃虧的時候能開心的一笑,這是一種豁達;無奈的時候能達觀的一笑,這是一種境界;危難的時候能泰然一笑,這是一種大氣;被輕蔑的時候 能平靜的一笑,這是一種自信;失戀的時候能輕輕的一笑,這是一種灑脫。
 經典語錄:
人生途中,有些是無法逃避的,比如命運;有些是無法更改的,比如情 緣;有些是難以磨滅的,比如記憶;有些是難以擱置的,比如愛戀……與其被動地承受,不如勇敢地面對;與其鳥宿檐下,不如擊翅風雨;與其在沉默中孤寂,不如 在抗爭中爆發……路越艱,阻越大,險越多,只要走過去了,人生就會更精彩。

經典語錄:
你改變不了環境,但你可以改變自己;你改變不了事實,但你可以改變態度;你改變不了過去,但你可以改變現在;你不能控制他人,但你可以掌握自己;你不能預知明天,但你可以把握今天;你不可以樣樣順利,但你可以事事盡心;你不能延伸生命的長度,但你可以決定生命的寬度。

經典語錄:
魅力女人:1、善于發現生活里的美。2、養成看書的習慣。3、擁有 品位。4、跟有思想的人交朋友。5、遠離泡沫偶像劇。6、學會忍耐與寬容。7、培養健康的心態,重視自己的身體。8、離開任何一個男人,都會活得很好。 9、有著理財的動機,學習投資經營。10、尊重感情,珍惜緣分。

經典語錄:
愚人向遠方尋找快樂,智者則在自己身旁培養快樂。生活里的每一個細節都蘊藏著快樂,只是在于你是否感受到了而已??鞓分娜耍恳患拢恳粋€人身上,他都能發現能令自己歡悅的因素來,并讓快樂擴張,鼓舞和影響了周圍的人。
 經典語錄:
【給自己安慰的10句溫馨話】1、最重要的是今天的心;2、別總是 自己跟自己過不去;3、用心做自己該做的事;4、不要過于計較別人評價;5、每個人都有自己的活法;6、喜歡自己才會擁抱生活;7、不必一味討好別 人;8、木已成舟便要順其自然;9、不妨暫時丟開煩心事;10、自己感覺幸福就是幸福。

經典語錄:
沒有永遠的緣份,沒有永遠的生命,我們所能擁有的,可能只是平凡的一生。然而因為有你,生命便全然不同,不用誓言,不必承諾,我們只需依了愛緣,以目光為媒,印證三生石上的約定,便牽了手,不必緊握,卻永不放松,以自己設計的愛的程式,去演繹一種精典的永恒。

經典語錄:
我們之所以會心累,就是常常徘徊在堅持和放棄之間,舉棋不定。我們之所以會煩惱,就是記性太好,該記的,不該記的都會留在記憶里。我們之所以會痛苦,就是追求的太多。我們之所以不快樂,就是計較的太多,不是我們擁有的太少,而是我們計較的太多。

經典語錄:
男人吸引女人的10個特質:1.真實 2.深刻 3.胸懷 4.敢為 5.風度 6.機靈 7.幽默 8.進取 9.浪漫 10.冒險.女人吸引男人的10個特點:1.溫柔 2.知性 3.直性 4.涵養 5.朦朧 6.小動作 7.勤于家事 8.膚白 9.性感著裝 10.香氛

經典語錄:
真正的愛,是接受,不是忍受;是支持,不是支配;是慰問,不是質問;真正的愛,要道謝也要道歉。要體貼,也要體諒。要認錯,也好改錯;真正的愛,不是彼此凝視,而是共同沿著同一方向望去。其實,愛不是尋找一個完美的人。而是,要學會用完美的眼光,欣賞一個并不完美的人。

經典語錄:
身 邊總有些人,你看見他整天都開心,率真得像個小孩,人人都羨慕他;其實,你哪里知道:前一秒人后還傷心地流著淚的他,后一秒人前即刻洋溢燦爛笑容。他們其 實沒有能力獨處,夜深人靜時,總坐在窗前對著夜空冥想失意的苦楚。他們就像向日葵,向著太陽的正面永遠明媚鮮亮,在照不到的背面卻將悲傷深藏。
 經典語錄:
生命中,有些人來了又去,有些人去而復返,有些人近在咫尺,有些人 遠在天涯,有些人擦身而過,有些人一路同行?;蛟S在某兩條路的盡頭相遇,結伴同行了一段路程,又在下一個分岔路口道別。無論如何,終免不了曲終人散的傷 感。遠在天涯的朋友:或許已是遙遠得無法問候,但還是謝謝您曾經的結伴同行。

經典語錄:
愛情很簡單,因為每個人都會說:“我愛你,會為你付出一切!”,愛情很難,因為沒有多少人做到了他的承諾。 如果真心愛一個人,不承諾也會去愛;如果不愛一個人,曾經承諾也會背叛。

經典語錄:
【你最后悔什么】 某雜志對全國60歲以上的老人抽樣調查:第一名:75%的人后悔年輕時努力不夠,導致一事無成。第二名:70%的人后悔在年輕的時候選錯了職業。第三 名:62%的人后悔對子女教育不當。第四名:57%的人后悔沒有好好珍惜自己的伴侶。第五名:49%的人后悔沒有善待自己的身體。

經典語錄:
【做人十心機】 ⒈做人不能太單純 適度偽裝自己 ⒉凡事留余地 要留退路 ⒊話不說絕 口無遮攔難成大事 ⒋成熟而不世故 ⒌心態好 想得開活得不累 ⒍懂方圓之道:沒事不惹事,來事不怕事 ⒎不可少二禮:禮儀與禮物 ⒏人在江湖飄 防挨朋友刀 ⒐偶爾"勢利眼" 尋可靠伙伴 ⒑放下面子來做人。

經典語錄:
人生旅途中,總有人不斷地走來,有人不斷地離去。當新的名字變成老 的名字,當老的名字漸漸模糊,又是一個故事的結束和另一個故事的開始。在不斷的相遇和錯開中,終于明白:身邊的人只能陪著自己走過或近或遠的一程,而不能 伴自己一生;陪伴一生的是自己的名字和那些或清晰或模糊的名字所帶來的感動。

經典語錄:
從現在開始,聰明一點,不要問別人想不想你,愛不愛你?若是要想你或者愛你自然會對你說,但是從你的嘴里說出來,別人會很驕傲和不在乎你。再也不要太在意一些人,太在乎一些事,順其自然以最佳心態面對,因為這個世界就是這樣:往往在最在乎的事物面前,我們最沒有價值。

經典語錄:
一個人的成就,不是以金錢衡量,而是一生中,你善待過多少人,有多少人懷念你。生意人的賬簿,記錄收入與支出,兩數相減,便是盈利。人生的賬簿,記錄愛與被愛,兩數相加,就是成就。

第一課 一個男人在他妻子洗完澡后準備進浴室洗澡。這時,門鈴響了。 妻子迅速用浴巾裹住自己沖到門口。 當她打開門時,鄰居鮑勃站在那兒。 在她開口前,鮑勃說,“你如果把浴巾拿掉,我給你800美元。” 想了一會兒,這個女人拿掉浴巾赤裸地站在鮑勃面前。幾秒鐘后,鮑勃遞給她800美元然后離開了。 女人重新裹好浴巾回到屋里。 當她踏進浴室時,丈夫問她,“是誰呀?” “是鄰居鮑勃。”她回答。 “哦,”丈夫說,“他有沒有提到還欠我800美元?” 故事寓意: 及時與同舟共濟的人們分享重要信息,將會避免不必要的曝光。
第二課 一個銷售員、一個辦事員和他們的經理步行去午餐時發現了一盞古代油燈。 他們摩擦油燈,一個精靈跳了出來。 精靈說:“我能滿足你們每人一個愿望。” “我先!我先!”辦事員說,“我想去巴哈馬群島,開著快艇,與世隔絕。” 倏!她飛走了。 “該我了!該我了!”銷售員說,“我想去夏威夷,躺在沙灘上,有私人女按摩師,免費續杯的冰鎮果汁朗姆酒,還有一生中的最愛。” 倏!他飛走了。 “OK, 該你了。”精靈對經理說。 經理回答:“我要那兩個蠢貨午飯后馬上回來工作!” 故事寓意: 永遠讓你的老板開口先。
第三課 一只鷹坐在高高的樹上休息,無所事事。 一只小兔子看見鷹并且問它,“我能象你一樣坐著什么都不干嗎?” 鷹回答:“行啊,為啥不行。” 于是,兔子坐在鷹下面的地上休息。突然,一只狐貍出現了,它撲到兔子身上把它吃掉了。 故事寓意: 要想坐著無所事事,你必須坐在非常、非常高的位置。
第四課 一只小鳥飛去南方過冬。天實在太冷了。它凍僵了,掉在一片田野上。 它躺在那兒時,一頭母牛走過來在它身上拉了一堆屎。 凍僵的小鳥躺在糞堆里,開始感覺到了溫暖。 牛糞確實使它暖和過來了。 它躺在溫暖的牛糞中,異常高興,并開始唱起歌來。 一只過路的貓聽到鳥叫趕過來看個究竟。 順著聲音,它發現了牛糞下的小鳥,并迅速把它拖出來吃掉了。 故事寓意: (1) 并不是每個在你身上拉屎的都是你的敵人。 (2) 并不是每個把你拖出糞堆的都是你的朋友。 (3) 當你深陷糞堆中的時候,最好閉上你的鳥嘴 1)學會 沉默
有 時候,你被人誤解,你不想爭辯,所以選擇沉默。本來就不是所有的人都得了解你,因此你認為不必對全世界喊話。卻也有時候,你被最愛的人誤解,你難過到不想 爭辯,也只有選擇沉默。全世界都可以不懂你,但他應該懂,若他竟然不能懂,還有什么話可說?生命中往往有連舒伯特都無言以對的時刻,畢竟不是所有的是非都 能條列清楚,甚至可能根本沒有真正的是與非。那么,不想說話,就不說吧,在多說無益的時候,也許沉默就是最好的解釋。
(2)至少 平靜
在 你跌入人生谷底的時候,你身旁所有的人都告訴你:要堅強,而且要快樂。堅強是絕對需要的,但是快樂?在這種情形下,恐怕是太為難你了。畢竟,誰能在跌得頭 破血流的時候還覺得高興?但是至少可以做到平靜。平靜地看待這件事,平靜地把其他該處理的事處理好。平靜,沒有快樂,也沒有不快樂。
(3)學會彎腰 這會是我意外的收獲
和 別人發生意見上的紛歧,甚造成言語上的沖突,所以你悶悶不樂,因為你覺得都是別人惡意。別再耿耿于懷了,回家去擦地板吧。拎一塊抹布,彎下腰,雙膝著地, 把你面前這張地板的每個角落來回擦拭干凈。然后重新省思自己在那場沖突,所說過的每一句話。現在,你發現自己其實也有不對的地方了,是不是?你漸漸心平氣 和了,是不是?有時候你必須學習彎腰,因為這個動作可以讓你謙卑。勞動身體的同時,你也擦亮了自己的心緒。而且,你還擁有了一張光潔的地板呢。這是你的第 二個收獲。 (4)不要想 如果 當初
你說,人生是一條有無限多岔口的長路, 永遠在不停地做選擇。如果只是選擇吃炒面或炒飯,影響似乎不大,但選擇讀什么科系、做什么工作、結婚或不結婚、要不要有孩子,每一個選擇都影響深遠,而不 同的選擇也必定造就完全不一樣的人生。你又說,生命中不可承受之情,就在于人生沒有重來的機會啊。如果當初如何如何,現在就不會怎樣怎樣...這種充滿悵 然的喃喃自語,還是別再多說了吧。每一個岔口的選擇其實沒有真正的好與壞,只要把人生看成是自己。獨一無二的創作,就不會頻頻回首如果當初做了不一樣的選 擇。
(5)努力吧 不管成功與否 至少曾經美麗
漫步林間,你看見一株藤蔓附著樹干,柔軟與堅實相互 交纏,你感動于這靜美的一幕。讓幸福與歸屬就此駐足吧。你想。不知未來會有怎樣一番風雨摧折?也許藤將斷、樹會倒,也許天會荒,地將老。你又想。那么,請 時光停格在此刻吧。停格即是永恒。永恒里若有這靜美的一刻,未來可能遭遇的種種劫難,便已得到了安慰與報償。
(6)保持單純
因 為思慮過多,所以你常常把你的人生復雜化了。明明是活在現在,你卻總是念念不忘著過去,又憂心忡忡著未來;堅持攜帶著過去、未來與現在同行,你的人生當然 只有一片拖泥帶水。而單純是一種恩寵狀態。單純地以皮膚感受天氣的變化,單純地以鼻腔品嘗雨后的青草香,單純地以眼睛統攝遠山近景如一幅畫。單純地活在當 下。而當下其實無所謂是非真假。既然沒有是非,就不必思慮;沒有真假,就無須念念不忘又憂心忡忡。無是非真假,不就像在做夢一樣了嗎?是呀,就單純地把你 的人生當成夢境去執行吧。
(7)偶爾'俗氣'...
吃多了健康食品,偶爾你也想啃一啃鴨舌頭和鹽酥 雞。看多了大師名劇,偶爾你也想瞄一瞄耳光摔不完眼淚掉不完的連續劇。聽多了古典音樂,偶爾你也想唱一唱愛他一百年又恨他一萬年的流行歌曲。你知道健康食 品對健胃整腸有意義,大師名劇對培養氣質有意義,古典音樂對提升性靈有意義,可是,偶爾你其實并不想讓自己時時刻刻活得那么有意。人生不需要把自己綁得那 么緊。偶爾的小小放縱,是道德的。靈氣充滿或許接近大人,但偶爾的俗氣會更平易近人。
(8)控制情緒 別浪費了~
今 天的你,是不開心的你,因為有人在言語間刺傷了你。你不喜歡吵架,所以你離開;可是你只是離開了那,卻沒有離開被那人傷害的情境,因此你愈想愈生氣。愈有 氣,你就愈沒有力氣去理會別的事情,許多更該用心去做去想去處理的事件,就在你漫天漫地的心煩意亂之中,被輕忽被漠視被省略了。因為,你只是一心一意地在 生氣。在情緒上做文章,這是對自己的浪費,而且是很壞的浪費。畢竟,生氣也是要花力氣的,而且生氣一定傷元氣。所以,聰明如你,別讓情緒控制了你,當你又 要生氣之前,不妨輕聲地提醒自己一句:“別浪費了。”
(9)抓住最好的時機 絕不錯過
你曾經買了一 件很喜歡的衣裳卻舍不得穿,鄭重地供奉在衣柜里;許久之后,當你再看見它的時候,卻發現它已經過時了。所以,你就這樣與它錯過了。你也曾經買了一塊漂亮的 蛋糕卻舍不得吃,鄭重地供奉在冰箱里;許久之后,當你再看見它的時候,卻發現它已經過期了。所以,你也這樣與它錯過了。沒有在最喜歡的時候上身的衣裳,沒 有在最可口的時候品嘗的蛋糕,就像沒有在最想做的時候去做的事情,都是遺憾。生命也有保存期限,想做的事該趁早去做。如果你只是把你的心愿鄭重地供奉在心 里,卻未曾去實行,那么唯一的結果,就是與它錯過,一如那件過時的衣裳,一如那塊過期的蛋糕。
(10)偶爾的出離軌道
某 次你搭火車打算到A地去,中途卻忽然臨時起意在B地下了車。也許是別致的地名吸引了你,也許是偶然一瞥的風景觸動了你,總之,你就這樣改變了本來預定的行 程,然后經歷了一場充滿驚奇的意外旅行。A地是你原先的目標,B地卻讓你體會了小小的冒險?;貞浧饋?,你說,那是一次令你難忘的出軌經驗。生命中的許多時 候不也如此?心無旁騖地奔赴唯一的目的,不過是履行了原本的行程而已;離開預設的軌道,你才有機會發現其他的風景。
(11)悄悄 悄悄地 回歸平靜..
曾 經有一段時間,你心情低落,甚至懶得拉開窗簾,看著窗外的陽光。因此你當然也忘了去看看,窗臺上那一盆每天都需要喝水的瑪格麗特。如此不知過了多久,總算 有一天,你度過了心情的低潮,同時也想起了你的瑪格麗特。天啊,可憐的花,她還活著嗎?你戰戰兢兢地拉開窗簾,卻見她迎風招搖,花顏可掬。原來在過去的這 段日子里,你雖然忘了喂她喝水,老天卻沒忘了以雨露眷顧她呢。許多事物悄悄地在你的視線之外進行,而且悄悄地安排好了它們自己。天生萬物,天養萬物,一切 其實無須擔心......你只要做的就是做好自己,不留任何遺憾...足矣。

1不管是鞋子的哪個地方磨到了你的腳,你就在鞋子磨腳的地方涂一點點白酒,保證就不磨; 2 皮包上有了污漬或者是臟了的話,可以用棉花蘸風油精擦拭; 3 在洗完臉后,用手指沾些細鹽在鼻頭兩側輕輕摩擦,然后再用清水沖凈,黑頭粉刺就會清除 干凈,毛細孔也會變?。?br />4 出門是隨時在包包里面帶一節小的干電池,如果你的裙子帶靜電的話把電池的正極在裙子上 面擦幾下就可以去掉靜電了;
5 若有小面積皮膚損傷或燒傷、燙傷,抹上少許牙膏,可立即止血止痛,也可防止感染; 6 牛仔褲穿時間長了就會褪色??梢园研沦I來的牛仔褲放入濃鹽水中浸泡12小時后,再用清水洗凈,以后再洗滌時就不會褪色了; 7 豆腐可用來美容。每天早晨起床后,用豆腐一塊,放在掌心,用以摩擦面部幾分鐘,堅持一個月,面部肌膚就會變得白嫩滋潤。 8 拉鏈的保養:拉鏈不能拉得太急、太猛;不能崩得太緊;保持干燥,防止和酸、堿東西接觸;拉鏈發澀,可涂點蠟,輕輕拉幾下,即可; 9 白背心穿久了會出現黑斑,可取鮮姜2兩搗爛放鍋內加1斤水煮沸,稍涼后倒入洗衣盆,浸泡白背心十分鐘,再反復揉搓幾遍,黑斑即可消除; 10 巧除領帶上的皺紋。打皺了的領帶,不用熨斗燙也能變得既平整又漂亮,只要把領帶卷在啤酒瓶上,第二天再用時,原來的皺紋就消除了; 11 當你非常口渴而家中又無涼開水時,可把裝有熱水的杯子放入冷水中浸泡,然后在冷水中撒上一把鹽,這樣能加速開水的冷卻; 12 旅途中遭遇雷雨時,千萬不要在巨石、懸崖下和山洞口躲避,電流從這些地方通過時會產生電弧,擊傷避雨者。若山洞很深,可躲在里面;
13 吃羊肉有助于保持健美體形,羊肉是理想的肉堿來源,這種和氨基酸類似的物質能幫助細胞 “燒”掉人體多余的脂肪; 14 皮膚粗糙者可將醋與甘油以5:1比例調和涂抹面部,每日堅持,會使皮膚變細嫩。在洗臉水中加一湯匙醋洗臉,也有美容功效; 15 晾曬衣服要訣:衣服最好不要在陽光下曝曬,應在陰涼通風處晾至半干時,再放到較弱的太陽光下曬干,以保護衣服的色澤和穿著壽命; 16 晾曬衣服要訣晾曬衣服不可擰得太干,應帶水晾曬,并用手將衣服的襟、領、袖等處拉平,這樣晾曬干的衣服會保持平整,不起皺褶;
17 防衣物褪色二法:洗滌深色棉織物時加適量醋,可防止其褪色,且光澤如新;新買的有色花布第一次下水時,加鹽浸泡十分鐘可防止布料褪色; 18 身上有傷口流血時,可立即在傷口上撒些白糖,因為白糖能減少傷口局部的水分,抑制細菌 的繁殖,有助于傷口收斂愈合; 19 化妝時,先把微濕的化妝綿放到冰箱里,幾分鐘后把冰涼海綿拍在抹好粉底的肌膚上,你會覺得肌膚格外清爽,彩妝也顯得特別清新; 20 畫眼線的小技巧:要畫好一雙細致的眼線,可以先把手肘固定在桌上,然后平放一塊小鏡子,讓雙眼朝下望向鏡子,就可以放心描畫眼線了;
21 專家建議冬天多吃紅辣椒、胡蘿卜、西紅柿、洋蔥、山楂等紅顏色食品,可預防感冒;每天喝一杯酸奶、一碗雞湯也有預防感冒的作用; 22 毛巾科學消毒法:將毛巾先用開水煮沸10分鐘左右,再用肥皂洗滌,然后用清水充分洗凈,最后將毛巾折疊好放入微波爐中,加熱5分鐘; 23 9種讓你笑容綻放的食物:芹菜、乳酪、綠茶、洋蔥、香菇、芥末、無糖口香糖、薄荷、水;常食這些食物可消除口臭、防止蛀牙; 24 頭皮屑過多可通過飲食改善。多吃堿性食物如水果、蔬菜、蜂蜜等;多吃含維生素B2、B6食物,如動物肝、腎、心、奶類、蛋黃、麥胚等; 25 枕頭應有一定彈性,但過強也不好,頭部不斷受到外加的彈力作用,易產生肌肉疲勞和損傷。如彈簧枕、氣枕等,都不能算是有利健康的枕頭; 26 冬季當心“低熱燙傷”。熱水袋內水溫不要太熱,熱力表面不要直接貼近皮膚。糖尿病人或末梢感覺神經遲鈍者及嬰幼兒最好不用熱水袋取暖; 27 減少電腦傷害策略:連續工作1小時后應休息十分鐘左右。室內光線要適宜,且保持通風干爽。注意正確的操作姿勢。保持皮膚清潔; 28 白色毛衣穿舊了會逐漸發黑,將毛衣清洗后放入冰箱冷凍1小時,再取出晾干,即可潔白如新; 29 鉆石保養:不要將鉆飾堆放在一起,以免鑲托間相互摩擦刮花;做粗重、劇烈活動時,先將鉆飾脫下;每隔半年送珠寶店作一次專業性清洗; 30 被子曬法:以化纖面料為被里、被面的棉被不宜在陽光下曝曬,以防溫度過高烤壞化學纖維,曬時可在被子上蓋一層布,防止陽光直接曬到; 31 不要因為兔毛衫掉毛就不再穿它了,可把它裝進一個塑料袋中放入冰箱內冷藏3-4天,就可 以防止它掉毛了; 32 絲巾的妙用。在美容院做好發型,一覺醒來就變形了。不必煩惱,睡前在枕頭上鋪一條質地光滑的絲巾,就不會弄亂頭發,美麗發型得以保持; 33 天熱更要防感冒。天熱流汗使人們消耗大量的能量,人體抵抗力下降,易患感冒,應注意多喝白開水,少量多次,以每次三百至五百毫升為宜; 34 天熱了,許多人有腳臭,以下兩法不妨一試:穿鞋時將少許茶葉放鞋里;盆里放溫水,放入少許茶葉,把雙腳放進去浸泡十分鐘,可除臭味!
米醋能抑制皮膚細菌孳生 醋本身就能改變皮膚的酸堿度,軟化皮膚的角質層,此外,還能抑制細菌孳生,使毛孔通暢,減少感染性皮膚病的發生。在洗臉水里加點醋是不錯的保健方法,醋的 種類以天然的米醋最好,其他食用醋也可以,在一盆洗臉水里滴上7~10滴就可以了。長期使用可增加皮膚細胞的水分和營養,恢復皮膚的光澤和彈性。 綠 茶能收斂肌膚、抗輻射 茶葉中含有茶多酚,有抗氧化作用,可防止肌膚衰老。茶葉還能抗輻射,尤其適合長期用電腦的女性,可抑制皮膚色素沉著,減少過敏反應 的發生。此外,茶葉的鞣酸作用可以緩解皮膚干燥,對于患濕疹的兒童也非常適用。在茶葉中,綠茶的茶多酚含量最豐富。因此,不防經常用綠茶水洗洗臉。 蜂蜜可以抗衰老、防干燥 蜂蜜含有大量能被人體吸收的氨基酸、酶、激素、維生素及糖類成分,不僅能促進皮膚創面的愈合,還能抗衰老,防止皮膚干燥。中干 性肌膚的人,平時可以將2~3滴蜂蜜加到洗臉水中,洗臉時沾濕整個面部再輕輕拍打、按摩面部幾分鐘,可使皮膚光潔、細嫩。油性皮膚的人則不太適合用蜂蜜水 洗臉。 食鹽能去除角質和油脂 用食鹽水洗臉有去除角質、收劍肌膚、安撫潮紅肌膚的作用,此外還能清除皮膚的油脂,比較適合油性皮膚。一般經過一星期左右的食鹽美容,面部皮膚就能呈現一種鮮嫩、透明感。在一盆洗臉水里加兩小勺食鹽就可以了。

電腦MM護膚的飲食策略 因為電腦有一定的輻射源,會直接影響到我們身體的內分泌系統的穩亂。從而使皮膚代謝不規律等。加上電腦有磁性,會聚積一些灰塵、和不潔的空氣,這些都會影響到我們皮膚自身的質量,和加聚皮膚的老化程度。 針對每一種不同類型的皮膚,表現就不同: 油性膚質:就會出油情況嚴重,或者是出油的同時面部開始發干,也就是缺乏水份,起痘痘,毛孔粗大等; 干性膚質:則表現為皮膚干燥,出現細紋,沒有光澤,有黑斑; 混合性膚:這樣的膚質,通常具備干性和油性兩種膚質的特征,一般是T區油,兩頰干。面對電腦的話,兩種膚質的特點就越發明顯了。 再有就是眼部皮膚的加具老化,和眼部視神經的模糊化。 對策 內調方面不妨試試綠茶和菊花茶這兩種弱堿性的茶飲: 綠茶不僅有抗癌的效果,可以清除體內的自由基,還可以有抗輻射的功效;菊花茶是一種清香茶飲,它的妙處在于當眼睛很累時,用菊花茶的熱氣薰眼部1分鐘,眼睛馬上感覺到很舒服,大家不妨試一試。 還要多吃一些幫助抗氧化的食物,比如含有維它命A、維它命C和維它命E的食物。 從各種蔬菜和水果中尤其是水果,都可以攝取到豐富的維它命C,因為它是水溶性的; A和E都是脂溶性的,尤其是維它命A,在各種黃顏色的蔬菜中都有,建議用油炒來吃。尤其胡蘿卜,胡蘿卜素也叫貝塔胡蘿卜素,只有用油炒來吃才能真正釋放。 再來說說維它命E吧,它又叫生育醇,有非常多的用途,針對于電腦皮膚的人士來講,時常吃一些天然維它命E的東西,比如動物內臟啊,各種豆類等等,對保護細胞壁非常有效果,從而加強皮膚抗氧化。 最后,平時還要注意多飲水。 每天最好是2500亳升,打個比方,1瓶礦泉水的量是550ML,大約要喝4瓶左右。保持每天1000亳升的排尿量。多吃蔬菜和水果這些弱堿性的食物,保持身體弱堿性狀態,少吃酸性食物,這樣皮膚就會慢慢改善過來。 面部美容 1. 將香蕉搗碎,加入牛奶,涂在臉上。20分鐘后洗凈,可以使你的皮膚細膩光滑。 2. 把雞蛋清和蜂蜜攪拌均勻后涂在臉上可以使皮膚光滑并減少皺紋。 3. 把姜黃粉末和牛奶混合后涂在臉上可以去除曬斑和減少臉上的汗毛。 4.麥片,乳酪和西紅柿汁攪拌均勻涂在臉上,20分鐘之后再用涼水洗干凈,可以幫助恢復曬黑的皮膚,使皮膚有光澤。 5.把生土豆片貼在臉上可以減輕雀斑顏色和疤痕?!? 6.黃瓜汁是很棒的緊膚水。把黃瓜汁均勻涂在臉上可以收緊毛孔。15分鐘后用清水洗干凈。 7.黃粉和酸橙汁也可以幫助恢復曬黑的皮膚。酸橙汁是天然的漂白劑。 8.蜂蜜可以使皮膚細膩光滑有光澤,并減少皺紋。 9.桔類水果汁是對付油性皮膚的好選擇。 10.用冰塊摩擦皮膚可以收緊毛孔并促進血液循環。 除面部皺紋: 鮮黃瓜汁二調羹,加入等量雞蛋清(約一只蛋)攪勻,每晚睡前先洗臉,再涂抹面部皺紋處,次日晨用溫水洗凈,連用半至一月,能使皮膚逐漸收縮,消除皺紋有特效. 皮膚粗黑: 靠化妝品增白皮膚,只能一時掩飾,治表不治本,現向你介紹一種治表治本能使皮膚增白而真白的妙方,既簡單又有特效:用白醋甘油按5:1混合,常擦皮膚(一 日二三次)能使皮膚濕潤,減少黑色素沉積,一月后皮膚即細膩白嫩,潔凈光滑富有彈性,充滿美感。(此方對遺傳黑皮膚均有效). 除雀斑: 杏仁*5錢,研成細粉,用雞蛋清調勻,每晚睡前涂面部,次日清晨用溫水洗去,一日一次,10-15日顯效,以后不發. 黃褐班蝴蝶斑: 冬瓜汁白醋等量,調勻涂面部,一日2-3次,涂后過10分鐘洗去.連用半月即可除凈. 除面部色素斑: 鮮西紅柿汁蜂蜜,按5:1混合,涂面部,過10分鐘后洗凈,連用10-15日,能使黑色素分解,皮膚變白紅潤. 除粉刺(酒刺青春豆座瘡): 鮮黃瓜汁白醋等量調勻,先用熱水洗臉后再涂臉,一日三次,涂后過10分鐘用溫水洗去,連用半月可愈,以后不 除黑痣: 花生仁燒焦搗碎,用酒精調勻,涂痣上,每晚睡前涂上并包好,次日晨洗去,連用半月可除,(大痣需涂一月). 純中藥美容面膜DIY送給愛美的...  1、 單 方白芷面膜:用白芷加上水或蜂蜜,敷于長痘痘處可以消炎。 2、 祛痘面膜:白芨、白茯苓、丹參??梢灾ъ疃弧⒌挥 ? 3、 四白面膜:白芨、白茯苓、白芷、白苻子。加水或蜂蜜可以美白、祛斑、對黃褐斑很有效果。 4、 人參增白面膜:人參5克、珍珠5克、白芷2克、白芍3克、白術4克、杏仁4克、當歸2克、薏仁4克,具有增白營養、滋潤肌膚、防曬等作用。對黑黃 皮膚引起的干燥、膚色無光澤等有護理作用。 5、 杏仁按摩膏,杏仁粉加蜂蜜,是天然的按摩膏對死皮和角質很有作用,適合于干性到中性皮膚。 6、 百合按摩膏,百合粉加蜂蜜,是天然的按摩膏對死皮和角質很有作用,適合于中性到油性皮膚。 7、 薏仁粉面膜,薏仁粉加上白芨,是曬后修復美白皮膚的好東西,適合于各種皮膚。 8、 單方綠豆粉面膜,控油佳品排毒美白面膜:綠豆粉加茯苓粉加蜂蜜,排毒養顏,經常化妝和痘痘肌妹妹的好東西 9、補水美白肌膚的北芪薏米面膜 材 料:北芪25克薏米1兩、云苓1兩 北芪具有補揚的功效,所謂“氣能生津”,透過補氣能加強面部血液循環,同時能促進津液自行生化,令內臟得到滋養,皮膚亦自然潤華起來。薏米和去苓能減少皮 膚內的濕毒,幫有美白和去濕之效,便集保濕、美白和防皺于一身。想再滋潤一點,還可加入蜜糖,令皮膚更具有彈性。 功效:行氣保濕、收緊肌膚及美白除斑。 10、洗顏粉蒿本散材料;蒿本、黑牽牛、黑豆、皂角全是等分 用法:每次洗澡前,先取水將蒿本散調成糊狀涂在臉上,洗完澡后再洗掉,很簡單。臉不但變白了,青春痘也少了很多,很有效果,既有效又如此簡單。平時可以作為洗臉粉的作用 11、 抑脂爽膚澤明面膜 材料;澤瀉10克、草決明5克、山楂5克、珍珠粉5克、白芷5克。 功效:具有祛脂爽膚、消散脂結、疏導阻塞、軟膚潔膚、清涼抑菌的作用。 適應癥:對油性皮膚及黑頭皮膚以及毛孔堵塞、皮膚粗糙和油膩等渥脂分泌過度癥狀有護理作用. 細鹽美容4個實用妙方~很好用的哦。  一、鹽亮膚 洗臉后,把一小勺細鹽放在手掌心加水3-5滴,再用手指仔細將鹽和水攪拌均勻,然后沾著鹽水從額部自上而下的搽抹,邊搽邊做環開按摩。幾分鐘后,待臉上的鹽水干透呈白粉時狀時,用溫水將臉洗凈,涂上保濕乳液或繼續正常的護膚步驟。持續進行,每天早晚洗臉后各一次。 這樣有很好的清潔和去污效果,對于毛孔中積聚的油脂、粉刺、甚至是“黑頭”都可以去掉。不過按摩時應該避開眼部周圍的皮膚,而且敏感性皮膚謹慎些。千萬不要把鹽水弄到眼睛里去,以免造成眼結膜損傷。 二、鹽明目 做完正常的清潔后,打半盆溫清水,撒上少量鹽讓它融化,將臉部浸泡在淡鹽水中,在水中睜開眼睛,上下左右活動眼球達到用淡水洗眼的效果。 不出二個星期,你會發現你的眼睛變得明亮且炯炯有神起來,這才是名副其實的“電眼美女”。 三、鹽戰痘 其實對于背部長有青春痘的“頑疾”,鹽一樣也有用。入浴后讓身體充分溫熱,待毛孔張開后多抹些鹽在后背,各個角落都要抹到。用浴刷按摩1分鐘,不要太用力,只要讓皮膚及刷子間的鹽分移動即可,然后用海綿蘸上淡鹽水,貼在背上10分鐘,用清水洗干凈。 洗幾次再看看,背上的痘痘慢慢地被攻克了。 四、鹽控油 對于分泌油脂旺盛的T字部位,即使到了秋天,很多油性皮膚的“產油量”還是源源不斷的。對于局部區域,可以用細鹽抹在事先潤濕的皮膚上,輕輕按摩后休息3分鐘,然后在鼻翼兩側毛孔張開的部位用中指指腹由下向上做擠壓式按摩。 
美容美發  一,除去面部皺紋:鮮黃瓜汁加等量的雞蛋清,每晚睡前洗臉,在涂于面部皺紋處,次日清洗,一個月皮膚收緊,消除皺紋有特效. 二,皮膚粗黑:用白醋加甘油,5:1的混合,常擦皮膚,使皮膚濕潤,減少黑色素沉積,一個月后皮膚細膩白嫩,潔凈光滑有彈性. 三,除雀斑:杏仁5錢,研成細粉,用蛋清調勻,每晚睡前涂臉部,次日用溫水洗去,10到15日顯效,以后不復發. 四,黃褐斑,蝴蝶斑:冬瓜汁加白醋,調勻涂面部,一日3次,10分鐘后洗去,連續半個月可除去. 五,除面部色素斑:鮮西紅柿汁加蜂蜜,5:1的混合,涂面部,10分鐘洗去,連用半個月,能使黑色素分解,皮膚變白. 六,除粉刺(酒刺,青春豆,痤瘡)鮮黃瓜汁加白醋等量混合,先用熱水洗臉,一日三次,涂后10分鐘用溫水洗去,半個月可愈合. 七,除脫發,頭屑,頭癢:每次用桑樹根皮4錢,水2斤,燒開洗頭,一日一次,洗后勿用清水過頭,連用5天,能促進頭皮血液循環,有固發作用,并治頭屑,頭癢,可在生發. 八,牙變白:用食鹽加小蘇打等量,調成牙膏狀,每日刷牙一次,3_5天可除牙齒所有色斑,使牙齒潔白. 九,除汗毛,胡須:用舊電池加堿粉,用醫用酒精調勻,過5分鐘洗去一日一次,5_7天胡須,汗毛即可自動脫落,不在復發,對皮膚無過敏.  每天用淘米水洗臉淘米水中所含的成分可洗去臉上的污垢,其中的維生素B、E也可幫助保持肌膚的滋潤。 方法是:用潔面乳洗臉后,用淘米水按摩肌膚3分鐘,再用溫水清洗。每天堅持可預防雀斑的生長。 蜂蜜的美容功效一直是被公認的,但是怎樣才能最大化利用,怎么做才最有效呢? 第一類功效:使皮膚光潔、細嫩 秘方1(蜂蜜+水) 蜂蜜含有的大量能被人體吸收的氨基酸、酶、激素、維生素及糖類,有滋補皮膚的美容作用。用蜂蜜加2—3倍水稀釋后,每日敷面,可使皮膚光潔、細嫩。 秘方2(蜂蜜+醋) 蜂蜜和醋各1-2湯匙,溫開水沖服,每日2-3次,按時服用。長期堅持,能使粗糙的皮膚變的細嫩潤澤。 秘方3(蜂蜜+雞蛋+橄欖油) 蜂蜜100克,雞蛋一個攪和,慢慢加入少許橄欖油或麻油,再放2-3滴香水,徹底拌勻后放在冰箱中保存。使用時,將此混合劑涂在面部(眼睛、鼻子、嘴除外),10分鐘后用溫水洗去,每月做兩次(多做效果更佳),能使顏面細嫩,青春煥發。 第二類功效:減少皺紋,緊縮面部皮膚 秘方4(蜂蜜+蘋果+乳脂) 將蘋果煮沸,搗碎,加入蜂蜜與乳脂,制成潤膚膜膏,敷面令你膚潔如玉。 秘方5(蜂蜜+雞蛋清) 蜂蜜50克,雞蛋清一個,兩者攪拌均勻,睡前用干的軟刷子刷在面部,慢慢進行按摩,約30分鐘自然風干后,用清水洗去,每周2次。 第三類功效:去斑 秘方6(蜂蜜+甘油+水+面粉) 蜂蜜1份、甘油1份、水3份、面粉1份,混合均勻制成敷面膏,敷于面上20分鐘后,用清水洗去,此法適用于普通干燥性衰萎皮膚??墒蛊つw嫩滑細膩,除去皺紋及黃褐斑,并能治療暗瘡。 秘方7(蜂蜜+鮮蜂王漿+雞蛋清+花粉+水) 蜂蜜1匙、鮮蜂王漿1匙、雞蛋清1個,加入適量花粉和水調成糊狀,涂于面部,30分鐘后用溫水洗去,再用鮮蜂王漿1克加少許甘油調勻涂于面部,每周一次。對清除臉部黑斑及暗瘡特別有效。 第四類功效:保濕 秘方8(蜂蜜+奶粉+雞蛋清) 蜂蜜1匙、奶粉1份、雞蛋清1個, 混合均勻制成面膜,用棉簽將其在臉上涂上薄薄一層,20分鐘后用溫水洗去。連續使用一個月。對皮膚干燥有明顯效果。 去除黑眼圈:*~* 1、把雞蛋用水煮熟去殼,拿手帕將雞蛋包著,然后在黑眼圈位置來回熱敷,熱力加按摩令皮下血液循環。每天一次。 2、切開柿子。用匙羹挖出柿肉并攪爛,敷在眼上10分鐘然后用濕毛巾抹掉。早晚一次。柿子以熟透為佳。作用:柿子含豐富維他命C,增強皮膚的更新能力。 3、泡茶后的茶包對黑眼圈也有幫助作用。 去除黑眼圈可多吃以下食物: 1、雞蛋:由于雞蛋中富含優質蛋白質,而蛋白質又能促進細胞再生,因此經常食用雞蛋,增加蛋白質的攝入,對于緩解黑眼圈的形成是有一定功效的。但因人體每日最多只能吸收兩個雞蛋所含的營養,因此食用雞蛋不宜超過兩個。 2、芝麻:富含對眼球和眼肌具有滋養作用的維生素E,從而能緩解黑眼圈的形成。既能使秀發烏黑靚麗,又能消除黑眼圈,一舉兩得。除了芝麻,富含維生素E的其他食物還有花生、核桃、葵花子等。 3、胡蘿卜:除了維生素E能對眼球和眼肌有滋養作用外,維生素A也有此般功效。胡蘿卜就是增加維生素A攝入量的最佳選擇,它能維持上皮組織正常機能,改善黑眼圈。此外,胡蘿卜中所含的維生素A還有助于增進視力,尤其是黑暗中的視力。 4、海帶:富含鐵質,經常食用能緩解黑眼圈的困擾。 5、綠茶:經常用電腦者可多飲用綠茶,補充特異性植物營養素,消除因電腦輻射引起的黑眼圈。多喝低咖啡因的綠茶不僅能消除黑眼圈,其含有的兒茶素,既能幫助身體脂肪代謝,而且對睡眠也有幫助,不僅可以安定睡眠質量,也讓人比較不容易有疲勞感覺。 清除黑眼圈最好的方法: 1.血管性靜脈循環不良所引起的黑眼圈,在睡眠不足、過度疲勞時會更為明顯。保持充足的睡眠、呼吸新鮮空氣,多攝入氧氣均可改善,而局部的眼圈按摩對促進靜脈循環回流也會有幫助?! ?br />2. 如果是黑色素沉淀和過敏導致的黑眼圈,須先尋找出病源以治病著手,再配合一些祛斑用品及相應的眼霜、眼膠予以護理。這種后天性的色素沉淀在經過一段正確的 治療后是會淡化的。而若是有家族遺傳性黑眼圈的人,在處理上較為棘手,而實際獲得的改善也極其有限,最終還是需要化妝的幫助。 3.對于疲勞性的黑眼圈患者則需要從日常生活做起逐步清除黑眼圈?! ?br />a.安排好生活,保證充足的睡眠,絕不可熬夜。同時睡覺時仰睡而不是俯睡,并盡量使用柔軟的枕頭?! ?br />b.應盡量避免過度地搓揉眼部。 c.喜歡化彩妝的人,眼部卸妝要徹底,最好用專業眼部卸妝液卸妝?! ?br />d.當您起床時黑眼圈太過嚴重時,有一招急救法:用熱毛巾覆蓋眼睛四周,來回重復多次,再用冰茶袋敷幾分鐘,最后涂上眼霜即可。此外多汁的蘋果片、未長芽的土豆片和煮熟的雞蛋都是暫時消除黑眼圈的好幫手?!?br />e.一些耗氧運動,使血液保持充足的氧分。亦可在早上或晚飯后出外散步,呼吸新鮮空氣

web項目腳手架¶
rapid- framework是一個以spring為核心的項目腳手架(或者稱為膠水框架),框架將各個零散的框架 (struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并內置一個代碼生 成器,輔助項目開發,可以生成java的hibernat model,dao,manager,struts+struts2 action類,可以生成jsp的增刪改查及列表頁面
在線文檔
請加入google-group參與討論
rapid-framework官方網站
項目定位¶
本 框架是類似appfuse,springside的框架,但定位與springside及appfuse不同,它們更像是一些代碼的最佳實踐,而 rapid-framework則是應用于實際項目開發的腳手架, 并且代碼也將優化至極致.使用腳手架3分鐘即可以搭建出一個實際項目.
框架概覽¶
- Dao: spring_jdbc, hibernate, ibatis2, ibatis3, 可以切換dao組件
- Dao Helper: 基于dialect的分頁(ibatis2, ibatis3, jdbc),動態sql構造工具rapid-xsqlbuilder
- Web MVC: struts1, struts2, springmvc, springmvc_rest, 可以切換web組件
- Template: (velocity, freemarker, jsp)的模板可以相互繼承, velocity及freemarker可以實現模板之間的管道操作
- 分頁組件: extremeTable, rapid-simpletable
- UI: rapid-validation表單驗證, My97DatePicker日期控件
- 單元測試: spring test+DBunit
- 底層支撐: 插件體系及代碼生成器(rapid-generator)
項目質量¶
代碼生成器生成的增刪改查截圖
后續請查看v2.x路線圖: roadmap
http://code.google.com/p/rapid-framework/
運用Lightbox和Modal Dialog可以很方便地在瀏覽器中展示內容,而無需重載整個頁面,有了Lightbox就不必再使用瀏覽器彈窗了。Lightbox正愈來愈廣泛地應用于媒體、網頁、郵件、表格等元素的展示。 本文將為你介紹15款優秀的Lightbox和Modal Dialog特效,供網站開發者參考。 1. Facebox facebox是一個jquery為基礎的Lightbox,可顯示圖像,divs,或者遠程頁面。它的使用很簡單。 下載地址:http://chriswanstrath.com/facebox
2. Colorbox ColorBox是一個輕量級,可定制的Lightbox插件,可以在jQuery 1.3 和1.4中使用,ColorBox支持 照片,照片組,幻燈片,ajax,內聯 和 iframe 框架。 下載地址:http://colorpowered.com/colorbox/
3. jQuery Lightbox Plugin jQuery LightBox plugin是一個簡潔優雅的插件,不需額外擴展代碼就可以把當前頁面上的圖片通過一個遮罩顯示出來,這主要是通過jQuery強大靈活的選擇器來實現的。 下載地址:http://leandrovieira.com/projects/jquery/lightbox/
4. prettyPhoto prettyPhoto是jQuery Lightbox的一個“克隆”。實際上它不僅能顯示圖片,還能顯示許多的類型,比如在可能彈出的層窗口中加載視頻、Flash動畫、一個已布局好的網頁、一個框架頁等等。 下載地址:http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/
5. jQuery Dialog 這是一個 jQuery 的對話框插件,可以根據你的喜好很方便地自行定制對話框。 下載地址:http://jqueryui.com/demos/dialog/
6. Prototype Window 你可以把它用到ASP.NET,Ajax,Java等等所有網頁上,可以實現改變窗口大小、最小化、最大化窗口、模型對話框、漸入漸出的漸變效 果,支持皮膚等功能?,F有的實例包括:模仿MAC OS的對話框,在對話框中打開一個網頁,警告框,確認對話框,信息對話框,登錄對話框,Ajax對話框等等。 它的原型基于對話框插件。 下載地址:http://prototype-window.xilinus.com/samples.html
7. MochaUI MochaUI 是一個用于開發Web應用的用戶界面庫,基于Mootools的JavaScript框架。 下載地址:http://mochaui.com/
8. Boxy Boxy是一個可靈活實現類似Facebook風格對話框的jQuery插件,支持對對話框進行拖拉和改變大小等操作。 下載地址:http://onehackoranother.com/projects/jquery/boxy/
9. ModalBox Modalbox可用來增強Web應用中的用戶交互,開發它的靈感來自Mac OS X的模塊動態對話。 下載地址:http://www.wildbit.com/labs/modalbox/
10. Shadowbox Shadowbox是一個在線媒體展示應用,支持絕大多數的網絡媒體常用格式。Shadowbox完全是基于JavaScript和CSS編寫的,高度可定制化。 下載地址:http://www.shadowbox-js.com/
11. jqModal jqModal是jQuery的一個插件,用來在瀏覽器中顯示通知,對話框和模型窗口。它簡直如瑞士軍刀一般靈活和小巧,而且它為通用目的窗口框架奠定了基礎。 下載地址:http://dev.iceburg.net/jquery/jqModal/#examples
12. Highslide Highslide是一個用Javascript寫的圖片影像特效瀏覽器,外觀簡潔優雅。 下載地址:http://highslide.com/
13. PiroBox 風格時尚且現代的Lightbox控件,采用jQuery開發。能夠根據瀏覽器窗體大小自動調整展示圖片大小。提供向前/向后控制鏈接。動態加載圖片效果。易于定制。 下載地址:http://www.pirolab.it/pirobox/#howto
14. imgBox imgBox是一個可以實現圖片平滑放大效果的jQuery插件。 下載地址:http://jqueryglobe.com/labs/imgbox/
15. jQuery Tools jQuery Tools是一個當前網站開發中最常用的UI組件集合。 下載地址:http://flowplayer.org/tools/overlay/index.html

如果我不再是過去的我,
你還會回到我身邊嗎?
Thriller
謹以此
獻給流行之王
Michael Jackson
Zion架構下載支持
很小,很強大 736KB
- 不到1MB小身材,綠色軟件免安裝
- 原生讀取壓縮文件(RAR/ZIP)
- 原生無縫播放支持(壓縮狀態有效)
- Pure Music純音還原技術,還原純凈好聲音
- 自主開發Zion架構圖形及音頻引擎
- 歌詞支持,及專輯圖片顯示,支持預覽
- 多種格式,無損音頻全兼容(支持內嵌CUE)
- 支持多種列表格式,目錄列表及智能列表
- 全局快捷鍵及多媒體鍵盤支持
02222cf46fe0ee1c5b1b4316403c30f7
下載地址:http://dl.podez.com/zion/AIRPLAY.exe
詳情 http://www.podez.com/zion.php
"你不必嚴格遵守這些原則,違背它們也不會被處以宗教刑罰. 但你應當把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會響起."
1.SRP單一職責原則[適用于類功能] (就一個類而言,應該僅有一個引起它變化的原因.) 詳細說明: 如果一個類承擔的職責過多,就等于把這些職責耦合在一起. 一個職責的變化可能會削弱或者抑制這個類完成其它職責的能力. 這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞. 結論: 它是所有類設計原則最簡單的,也是最難正確使用的. 我們會自然的把職責結合在一起,軟件設計真正要做的內容就是發現職責并把那些職責相互分離. 2.OCP開放-封閉原則[適用于類抽象] (軟件實體(類,模塊,函數...)應該是可以擴展的,但是不可以修改.) 詳細說明: OCP=對于擴展是開放的,對于修改是封閉的. 如果程序中的一處改動就會產生連鎖反應,導致一系列相關模塊的改動,那么設計就有臭味. OCP建議我們如果要對系統進行重構,就只需要添加新的代碼,而不必改動已經正常運行的代碼. 結論: 在許多方面,OCP都是面向對象設計的核心. 尊循它可以帶來巨大的好處(程序的靈活性,可重用性,可維護性). 在代碼中肆意使用OCP也不是一個好主意. 正確的做法是:開發人員僅僅對程序中呈現頻繁變化的部分做出抽象!拒絕不成熟的抽象和抽象本身一樣重要! 3.LSP Liskov替換原則[適用于類層次] (子類型必須能夠替換掉它們的基類型.) 詳細說明: Barbara Liskov在1988年說道: Liskov替換性質:若對每個類型S的對象O1,都存在一個類型T的對象O2, 在所有針對類型T編寫的程序P中,用O1代換O2后,程序P行為功能不變,則類型S是類型T的子對象. 結論: LSP是使用OCP開放-封閉原則成為可能的主要原則之一, 正是子類型的可替換性才能用基類類型(基類引用或者指針)的模塊在無需修改的情況下就可以擴展. 這種可替換性是開發人員可以隱式依賴的東西. 因此,如果沒有顯示的強制基類類型的契約,那么代碼就必須良好并明顯的表達出這一點. 術語"IS-A"不能作為子類型的定義, 子類型的正確定義是"可替換性","可替換性"可以通過顯式或者隱式的(動態綁定必須用基類類型)契約. 4.DIP依賴倒置原則[適用于類層次] (抽象不應該依賴細節.細節應該依賴抽象.) 詳細說明: a.高層模塊不應該依賴于低層模塊,二者都應該依賴抽象(使用接口或者虛類來連接). b.抽象不應該依賴于細節,細節應該依賴于抽象. 結論: 使用傳統的過程化程序設計方法所創建出來的依賴關系結構和策略是依賴于細節. DIP使得細節和策略都依賴于抽象,并且常常為客戶定制服務接口. 事實上,這種依賴關系的倒置是好的面向對象的程序設計的標記. DIP正確應用對于可重用框架是必須的,對于構建在變化面前富有彈性的代碼也是非常重要的. 由于抽象和細節被DIP彼此隔離,所以代碼也非常容易維護. 5.ISP接口隔離原則[適用于類的接口] 不應該強迫客戶程序依賴于它們不用的方法. 接口屬于客戶,不屬于它所在的類層次結構. 詳細說明: 分離客戶就是分離接口.分離接口有2種方法:委托和多重繼承 接口隔離原則是用來處理胖接口所具有的缺點. 如果類接口不是內聚的,就表示該類的接口是胖的,需要減肥. 減肥的原則是接口分成多組方法,每一組方法都服務于一組不同的客戶程序! 客戶程序面對的就是多個具有內聚接口的抽象基類. 結論: 胖類會導致它們的客戶程序之間產生不正常的有害的耦合關系. 當客戶程序要求胖類進行一個改動時,會影響到所有其它戶程序. 因此,程序應該僅僅依賴于它們實際調用的方法. 通過把胖類的接口分解為多個特定的客戶程序的接口,可以實現這個目標. 每個特定于客戶程序的接口僅僅聲明它自己調用的函數. 解除了類的客戶程序之間依賴關系,使它們互不依賴. 6.REP重用發布等價原則[適用于包] (重用的粒度就是發布的粒度) 詳細說明: 當你重用別人一個類庫時,你的期望是什么? 當然是好的文檔,可以工作的代碼,規格清晰的接口! 你希望作者會一直維護類庫代碼,當作者都把類庫的接口和功能進行任何改變時,你希望得到通知. 代碼的作者把它們的軟件組織到一個包中(dll,jar,...),所以我們重用的粒度就是包的發布粒度. 結論: 一個包的重用粒度和和發布粒度一樣大,由于重用性是基于包的,所以可重用的包必須包含可重用的類. 7.CCP共同封閉原則[適用于包] (包中的所有類對于同一類性質的變化應該是共同封閉的. 一個變化若對一個包產生影響,則將對該包中的所有類產生影響,而對于其它包不造成任何影響.) 詳細說明: 這是SRP單一職責原則對包的重新規定.這規定了一個包不應該包含多個引用包變化的原因. 在大多數應用中,可維護性超過可重用性. 代碼更改:如果代碼要更改,原意更改都集中在一個包中,而不是分布于多個包中. 代碼發布:我們也只發布更改中的包! 結論: CCP鼓勵我們把可以由于同樣的原因而更改的所有類共同聚集在同一個包中. 8.CRP共同重用原則[適用于包] (一個包中的所有類應該是共同重用的. 如果重用了包中的一個類,那么就要重用包中的所有類.) 詳細說明: 一個包中的所有類應該是共同重用的. 結論: 如果重用了包中的一個類,那么就要重用包中的所有類. 這個原則可以幫助我們決定哪些類應該放進同一個包中. 9.ADP無環依賴原則[適用于包] (在包的依賴關系圖中不允許存在環.) 詳細說明: 如果開發環境中有許多開發人員都在更改相同的源代碼文件集合的情況, 因為有人比你走的晚,且改了你所依賴一些東西(類或者方法),第二天來上班, 你昨天完成的功能,今天不能正常工作,那么就會發生"晨后綜合癥"! 針對此問題有兩個解決方案:"每周構建"和"消除依賴環" 每周構建:應用于中等規模的項目中,它的工作方式為:每周1-4,開發人員各自工作在私人的代碼空間,周5-6聯合調試! 消除依賴環:通過把開發環境劃分成可發布的包,可以解決依賴環. 結論: 解決包之間的依賴環有兩個主要方法: 1.使用依賴倒置原則,在類和依賴類之前添加一個依賴的接口或者抽象類,解除依賴環. 2.添加新類,把類和依賴類之間的依賴移到一個新的類,解除依賴環. 10.SDP穩定依賴原則[適用于包] (朝著穩定的方向進行依賴.) 詳細說明: 設計不是完全固定的,要使設計可維護,某種程序的易變性是必要的. 使用這個原則,我們可以創建對某些變化類型敏感的包.
其它的包不要依賴這個要變的包. 軟件包就可以分為穩定包和可變包! 如何識別穩定包和可變包?如果許多其它的包都依賴此包,那么它就是穩定包,否則就是可變包! 把包放在不同的位置,它的穩定性是不同的. 如何計算一個包的不穩定性?(輸入耦合度Ca,輸出耦合度Ce) 不穩定值=Ce/(Ca+ce),此值越低越穩定! 結論: 把可變包不穩定值降低的方法是:為它加上一個抽象外衣(interface/抽象類),其它包調用抽象外衣! 可變包為抽象外衣的實現! 11.SAP穩定抽象原則[適用于包] (包的抽象程序應該和其它穩定程序一致.) 詳細說明: 此原則把包的穩定性和抽象性聯系到一起. 一個穩定的包應該是抽象的,這樣它的穩定性就不會使其無法擴展; 一個不穩定的包應該具體的, 這樣它的不穩定性使代碼易于修改. 結論: 它指出一個包有時候應該達到部分是可抽象的,部分是不穩定的原則
該聊天程序包括服務器和客戶端兩部分,使用是MFC的CSOCKET類。它可以使多個人聊天,其工作方式類似于網上聊天室??蛻舳丝梢赃x擇談話對 象,有32種動作,可以設置字體顏色,也可以悄悄地對某人說,對信息進行過濾。服務器端可以“踢“人,并可以防止用戶名稱的重復 chatsource.rar (3.09 MB)
解壓密碼:www.topnetsecurity.com
該消息原文來自于:http://www.topnetsecurity.com/viewthread.php?tid=279&extra=page
http://code.google.com/p/excelreport/
ExcelReport是一款基于Excel的輕量級地報表生成工具,它通過用戶定義報表模板文件,定義數據源,并配置相應的配置文件,就可以通過頁面向 指定Servlet請求輸出報表,其生成的報表是一個excel文件。通過模板文件的方式來生成Excel文件,可以讓程序員從對生成特定格式的 Excel文件輸出格式的控制以及Excel文件讀寫等紛繁復雜而又容易出錯的細節中解放出來,使得程序員只需組裝自己的數據源,而根本不需要關心如何去 生成Excel文件,如何用程序去控制最終的文件輸出效果,從而大大增強了程序的可維護性,因為很多的報表輸出格式的修改只需通過模板文件的修改就可以實 現,而無需改動程序。同時該報表工具又提供一些靈活的特性來使得用戶可以自由控制報表的輸出過程。 ExcelReport的靈活性 數據源的自定義: 用戶可以自己定義數據源以替代默認實現,例如,我們可以編寫一個自己的數據庫數據源,通過定義該數據源我們可以利用現有系統的數據庫連接及數據檢索框架等。 嵌入報表數據處理類: 用戶可以嵌入自己報表數據處理類(通過配置文件配置),通過嵌入用戶自己的報表數據處理類,報表工具給用戶提供了一個入口讓用戶參與報表的生成過程。比 如,用戶可以在生成報表前來組合自己的數據源,在這里用戶完全可以充分利用現有系統的相關業務類來生成自己的數據源。 插入查詢監聽器: 用戶可以插入自己的查詢監聽器,通過監聽數據源的查詢請求來做相關數據的檢索及處理等工作(該功能在主從報表中尤其有用)。 插入字段監聽器: 通過插入字段監聽器,使得用戶可以參與報表的輸出過程,控制報表的具體輸出的數據。 目前它具有那些功能? 1. 卡片式報表的支持。 2. 列表式報表的支持。 3. 主從式報表的支持。 4. 分組式報表的支持。(注:主從式和分組式之間可以任意嵌套,即一個主從式報表中我們可以嵌套一個分組從而實現對主記錄或從記錄進行分組的功能,反之也如此。) 5. 格式化的數據輸出,該報表工具支持所有Excel的格式化輸出控制。 6. 支持所有Excel的函數。 它與普通報表工具的區別: 1. ExcelReport是一個完全基于excel的報表工具,其最大的特點是完全依賴于excel。這是其于其他任何報表工具的最大區別。 2. 通過依賴于Excel它具備了以下優點: a. 省略了專門的報表模板定義工具,應為該工具就是Excel本身,相信Excel的強大功能可以勝過任何其他報表工具模板定義工具。 b. 可以充分利用Excel的強大功能,如Excel函數庫及其相關的腳本技術,Excel的圖表(暫未提供支持)以及其對打印功能的強大控制能力。
編者按:原文作者喬納森·丹尼可(Jonathan Danylko)是一位自由職業的web架構師和程序員,編程經驗已超過20年,涉足領域有電子商務、生物技術、房地產、醫療、保險和公用事業。正如喬納 森在文中所言,本文適合剛畢業的大學生和剛入門的程序員。如果你已是高級開發人員,或許你在本文中看到自己的身影。
從11歲時,我就一直在編程,并且一直都很喜歡技術和編程。這些年來,我積累了一些艱難又容易的經驗。作為一名程序員,你或許還沒這些經驗,但我會把它們獻給那些想從中學到更多的朋友。
我會持續更新這些經驗,我可能還會有更多的感想,但就我這20年來看,我想下面這個列表中基本不需要增添額外的東西了。下面就是我至今最難忘的經驗。
1. 估算解決問題所需要的時間。不要怕,承認吧!我曾見過一些程序員為了解決一個特殊問題而坐在顯示器前面8小時。為自己定一個時間限制吧,1小時、30分鐘或甚至15分鐘。如果在這期間你不能解決問題,那就去尋求幫助,或到網上找答案,而不是嘗試去做“超級堆碼員”。
2. 編程語言是一種語言,只是一種語言。隨著時光推移,只要你理解了一種語言的原理,你會發現各種語言之間的相似之處 。你所選擇的語言,你應該覺得“舒服”,并且能夠寫出有效(而且簡潔)的代碼。最重要的,讓語言去適應項目,反之亦然。
3. 不要過于注重程序的“設計模式”。 有時候,寫一個簡單的算法,要比引入某種模式更容易。在多數情況下,程序代碼應是簡單易懂,甚至清潔工也能看懂。
4. 經常備份代碼。在我年輕時,我就有過因硬盤故障而丟了大量代碼的經歷,這經歷很恐怖的。只要你一次沒有備份,就應當像有著嚴格的期限,客戶明天就需要。此時就該源碼/版本控制軟件大顯身手了。
5. 承認自己并不是最頂尖的程序員 - 知不足。我常想,我對編程了解已足夠多,但是總有其他人比你優秀。正所謂,“一山總比一山高”。所以,向他們看齊吧!
6、學習再學習。正如第5點所說,我經常會在手里拿一本計算機或編程相關的雜志或書(不信,可以問我的朋友)。誠然,總有很多你不知道的技術,你可以從中學習以保持不落后。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習。
7. 永恒的變化。你 對待技術/編程知識,就應像你對待股票一樣:多樣化。不要在某一特定技術上自我感覺良好。如果那種技術或語言已經沒有足夠支持,那你還不如現在就開始更新 你的簡歷,并啟動培訓新計劃。我能保持前行的主要原則是什么呢?至少了解兩到三種語言,所以,如果某種語言過時了,你在學習新技術的時候還可以依靠另一種 語言。
8. 提攜新人。協助并且培養初級/入門的開發人員學習優秀的編程方法和技巧。也許你還不知道,在幫助他們向更高一層前進時,你自己也在向更高一層提升,你會更加自信。
9. 簡化算法。代碼如惡魔,在你完成編碼后,應回頭并且優化它。從長遠來看,這里或那里一些的改進,會讓后來的支持人員更加輕松。
10. 編寫文檔。無 論是Web服務的API,還是一個簡單的類,你盡量編寫相應文檔。我曾經引以為豪的代碼注釋,因過度注釋而有人指責。給三行代碼加一行注釋,只需要你幾秒 時間。如果那是一個比較難以理解的技術,千萬別擔心過多注釋。如果你能很好做好自己的工作,大多數架構師、后備程序員、支持組都會感激你。
11. 測試、測試再測試。我是一名黑盒測試粉絲。當你完成編碼后,你“被認可”的時候就開始了。如果你們公司有QA部門,如果你的代碼中有錯誤,那你得到的評論,會比項目經理還多。如果你不徹底測試自己的代碼,那恐怕你開發的就不只是代碼,可能還會聲名狼藉。
12. 慶祝每一次成功。我見過很多程序員在解決編程技術難題后,會和同伴握手、擊掌或甚至手舞足蹈。每個人在生命中都會碰到“頓悟”。如果一個程序員高興地跑來叫你去看他的非凡代碼,也許你已經看過這樣的代碼100遍了,但你也應該為了這個家伙而慶祝第101次。(編者注:《慶祝成功的九種方式》。)
13. 經常檢查代碼。 在公司,你的代碼要經常檢查(包括自查和其他同事檢查)。不要把別人的檢查,看成是對代碼風格的苛求。應該把它們看作是有建設性的批評。對個人來說,經常檢查你的代碼并且自問,“我怎樣才能寫得更好呢?” 這會讓你加速你的成長,讓你成為一個更優秀的程序員。
14. 回顧你的代碼。在 看到自己以前的代碼時,通常會有兩種方式:“難以至信,這代碼是我寫的”和“難以至信,這代碼是我寫的”。第一種往往是厭惡的語氣,并在想如何改進它。你 也許會驚嘆,舊代碼也能復活成為一種更好的程序,甚至是一個完整的產品。第二種通常帶著驚奇和成就感。開發人員應該一到兩個自己完成的項目成果,能讓眾人 不禁而立并注目而觀的項目。同樣,基于你優越的編程能力,你可以把過去的程序或項目拿出來,把它們更新為更加優秀的產品或想法。
15. 幽默是不可缺的。在我20年的開發生涯中,我還沒有碰到哪位程序員是沒有幽默感的。實際上,干我們這行,幽默是一項必備品。
16. 謹防那些無所不知的程序員,不愿分享的程序員,還有經驗不足的程序員。當你遇到這幾種程序員時,你自己要謙虛。無所不知的程序員,更想當一個英雄而不是團隊成員;保守的程序員則是在編寫著他們獨享的代碼;而經驗不足的程序員則會每十分鐘就來問你一下,當代碼完成后,代碼已經是你的,而不是他們。
17. 任何項目都不會那么簡單。朋 友、家人和同事曾請求我倉促做一些事情,倉促做一個程序或者網站。對于這樣的事,應該從雙方做計劃,才能做出令兩方都會滿意的東西。如果某人起初只是需要 一個使用Microsoft Access的、只有有3個頁面的網站,但來就很可能變成一個有15個頁面的網站,并使用SQL Server,有一個論壇,還有一個定制的CMS(內容管理系統)。
18. 任何時候不要想當然。假如你承接一個簡單的項目,你可能會認為某個部分可以輕松完成。千萬別這樣想!除非你有一個類、組件、或者一段已經寫好的代碼,并且在現有的項目已經測試通過。不要認為這將是很容易的。
19. 沒有已經完成的軟件。曾經有一位程序員告訴我,沒有軟件是已經完成的,它只是“暫時完成了”。這是明智的忠告。如果客戶還在使用你寫的程序,并經受了時間的考驗。如果有機會,你仍在更新它,這并不是什么壞事,這讓你不斷地前行。
20. 耐心是一種美德。當 客戶、朋友或家庭成員用電腦的時候,他們也許會受挫,進而想砸電腦,或氣沖沖地離開。我一直在告訴他們,“是你掌控電腦,不是電腦掌控你。”對于用作編程 的電腦,你要有一定的耐心。一旦程序員知道問題所在后,他們就會站在電腦的角度看問題,并且說 “哦,這就是為什么它是這樣做。”
編者后話
對本文深有感觸!雖然本文沒有華麗的辭藻,其中樸實的道理,其實并非只適用程序員,同樣可以擴展到其他行業。記得以前練字時,總感覺當時寫得很好,但后來回頭再看時,也會想“這居然是我寫的字!”
在閱讀本文的朋友,不知你是否也有看到了自己的身影呢?歡迎你在微博或評論中和大家一起分享感觸。
A java based workflow suite,include engine、designer...
一個java工作流套件,包含引擎、設計器等等。歡迎大家積極報告錯誤,同時也歡迎大家加入Fireflow。
QQ群號是:200人高級群 80347522(已滿)
500人超級群 32897788
官方論壇:www.fireflow.org
Fire Workflow的開發計劃¶
- 流程模型+引擎:已于2009年2月2日發布預覽版本
- netbeans設計器-模擬器插件:已經發布預覽版本。
- eclipse設計器-模擬器插件:已于2009年2月2日發布預覽版本。
- 圖形化流程實例跟蹤:即在瀏覽器中顯示流程執行的進度情況,使用SVG技術。尚無明確時間表。
- 基于Web的流程自定義程序:嚴格說是對系統已經存在的流程作局部調整,而不是完全的自定義。這個東東是否有必要,怎么實現,正在考慮中。
A java based workflow suite,include engine、designer...
一個java工作流套件,包含引擎、設計器等等。歡迎大家積極報告錯誤,同時也歡迎大家加入Fireflow。
QQ群號是:200人高級群 80347522(已滿)
500人超級群 32897788
官方論壇:www.fireflow.org
Fire Workflow的開發計劃¶
- 流程模型+引擎:已于2009年2月2日發布預覽版本
- netbeans設計器-模擬器插件:已經發布預覽版本。
- eclipse設計器-模擬器插件:已于2009年2月2日發布預覽版本。
- 圖形化流程實例跟蹤:即在瀏覽器中顯示流程執行的進度情況,使用SVG技術。尚無明確時間表。
- 基于Web的流程自定義程序:嚴格說是對系統已經存在的流程作局部調整,而不是完全的自定義。這個東東是否有必要,怎么實現,正在考慮中。
A java based workflow suite,include engine、designer...
一個java工作流套件,包含引擎、設計器等等。歡迎大家積極報告錯誤,同時也歡迎大家加入Fireflow。
QQ群號是:200人高級群 80347522(已滿)
500人超級群 32897788
官方論壇:www.fireflow.org
Fire Workflow的開發計劃¶
- 流程模型+引擎:已于2009年2月2日發布預覽版本
- netbeans設計器-模擬器插件:已經發布預覽版本。
- eclipse設計器-模擬器插件:已于2009年2月2日發布預覽版本。
- 圖形化流程實例跟蹤:即在瀏覽器中顯示流程執行的進度情況,使用SVG技術。尚無明確時間表。
- 基于Web的流程自定義程序:嚴格說是對系統已經存在的流程作局部調整,而不是完全的自定義。這個東東是否有必要,怎么實現,正在考慮中。
為Google app engine開發JAVA Hello Word
After hearing the buzz about java support in Google App Engine I decided to write a hello, world application and run it on Google App Engine.
在聽說GAP 支持java以后,我決定寫一個在gap 上運行的java hello world程序。我使用的開發工具是eclipse 3.4,google推出了gap的Eclipse插件,以方便開發者。
添加Eclipse的Google app engine plugin
第一步: 打開eclipse,選擇 幫助>軟件更新>添加站點。站點的url 是:
1. http://dl.google.com/eclipse/plugin/3.4

勾選sdk,plugin,toolkit 可選,點擊安裝,重啟Eclipse等更新完成。
創建工程
創建一個新的web application ,點擊file >New >project,在對話框中選擇google下面的google web application。

指定web應用的名稱和包的名稱。為了保持應用的簡單,不要勾選‘use GWT’ and check ‘,勾選‘Use app engine’,之后點擊完成。

這樣就生產了應用文件,工程結構如下:

本地運行web應用
Right click on your application and click on Run as… > Web Application.
右鍵點擊helloword工程,選擇Run as… > Web Application.

Eclipse將啟動web app服務器在端口8080,你可以通過這個url訪問應用:
1. http://localhost:8080/helloworld
Create a Google App Engine account
創建gap 帳號
Before you can deploy you hello world application to google app engine, you need to create an account on google app engine.
在你把web應用部署在gap以前,你必須創建一個gap帳號??梢缘卿?a >http://appengine.google.com/按照步驟創建app帳號。
首先通過已有的google帳號登錄,當你第一次創建app帳號的時間必須通過短消息驗證。我們選擇 其他國家和地區,手機號碼輸入:+086 13888886666 (13888886666是你的手機號碼,可以接受短信),之后在下一步的驗證中輸入你的手機收到的驗證碼。

選擇一個唯一的application ID
Application id, 就像登錄名字一樣必須是唯一的。在操作之前你必須選擇一個唯一的id。在你選擇application id后,http://<你的 application id>.appspot.com 就是你的應用的地址。

配置eclipse application的application id
右鍵點擊 helloworld工程,google >app engine settings。
輸入你的application id。也可修改appengine-web.xml中的application標簽。
<application>wjjapp</application>

部署你的app到Google app engine
右擊 你的應用> Google > Deploy to app engine.輸入google帳號名,和密碼,點擊部署即可。

完成上面的步驟后,你的web應用就部署到了Google app engine.如果部署失敗,收到這樣的消息:
java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/...
1. 400 Bad Request
2. Invalid runtime specified.
3.
4. Unable to upload app: Error posting to URL: http://appengine.google.com/api/appversion/...
5. 400 Bad Request
6. Invalid runtime specified.
這是由于你沒有訪問java version的權限,你可以點擊 here申請。
申請成功的話,你將會收到google的mail通知,這個過程一般需要1到2天的時間。Email如下:

再次嘗試部署web應用,這次將會成功,你將看到下面的控制臺輸出:
1. Creating staging directory
2. Scanning for jsp files.
3. Scanning files on local disk.
4. Initiating update.
5. Cloning 1 static files.
6. Cloning 13 application files.
7. Uploading 5 files.
8. Uploaded 1 files.
9. Uploaded 2 files.
10. Uploaded 3 files.
11. Uploaded 4 files.
12. Uploaded 5 files.
13. Deploying new version.
14. Will check again in 1 seconds
15. Closing update: new version is ready to start serving.
16. Uploading index definitions.
17. Deployment completed successfully
在線訪問你的應用
登錄 google app engine,你將看到你的application頁面。
你將看到你的版本號為1的web應用,點擊鏈接,打開應用。鏈接如下的格式:http://<applicationid>.appspot.com, 例http://wjjapp.appspot.com/.
對于 Java 程序員來說,除 SSH 之外,的另一個選擇:
Nutz
當然,它是開源的,并且是完全免費的,同時也是商業友好的(Licensed under the Apache License, Version 2.0)。
同傳統的 SSH 相比,它具備如下特點:¶
- 輕 -- 當前最新版,整個 jar 文件共 820k
- 薄 -- 針對 JDBC 的薄封裝,無緩存
- 全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能
- 活 -- 各個部分可以獨立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等
- 整 -- 它所有功能均不依賴第三方 jar 文件。
這就意味著:如果一個 Web 應用,你在 WEB-INF/lib 下只 需要放置一個 nutz.jar 就夠了
當然你要使用其它的連接池,數據庫驅動,打印PDF支持等功能,還需要自行添置 jar 包。
Nutz 為誰而設計?¶
- 如果你覺得 Hibernate 控制比較繁瑣,iBatis 編寫SQL又比較麻煩,Nutz.Dao 專為你設計。
- 如果你覺得在多個服務器部署或者修改 Spring 配置文件很麻煩,Nutz.Ioc 專為你設計
- 如果你覺得直接寫 XML 配置文件很麻煩,可視化編輯器又沒控制感,Nutz.Mvc 專為你設計
- 如果你覺得 JSON 轉換很麻煩(要寫超過一行以上的代碼),Nutz.Json 專為你設計
- 如果你覺得 Java 語法不如 Ruby 便捷, Nutz.Castor 以及 Nutz.Lang 專為你設計
- 如果你以前根本沒接觸過 SSH ,只使用 JDBC 編程, 整個 Nutz 專門為你設計
- 你只要在你的 classpath 下部署這個 800多K 的小 jar 包,你會得到上述所有好處
我要使用 Nutz,該從那里入手呢?¶
- 下載 Nutz -- 包括文檔和源碼都包含在下載包中
- 閱讀文檔 -- Wiki 頁面 有充分的介紹,每個部分都有 Hello World
- 運行 Demo -- Demo 在不斷的添加中 ... 現在已有 7 個可用 Demo
- 編譯 -- 請看詳細介紹
- 運行測試 -- 請看詳細介紹
另外:
- Amosleaf 寫了一個 Nutz.Dao 入門的例子
- Peter Tung 寫的 Nutz Json Book 幾分鐘可以讓你對 Json 解析入門
Nutz 的質量¶
托社區的福,截至到現在為止,Nutz 一共通過了超過 500 個JUnit測試。其中有 152 個用例針對數據庫,并在如下數據庫中工作良好:
截止到 1.a.31 為止,大約有 66% 的代碼被 JUnit 測試用例覆蓋:

更多詳情,請請 查看最新emma測試報告
在一個功能告一段落以后,我通常會花1-2個晚上在一邊咂著廉價的紅酒一邊頗有成就感的書寫JUnit測試。 通常我會用 JUnit 把我自己擊潰,緊接著的那幾天我都努力讓那個該死紅條變綠,之后,又想方設法寫出 新的Junit測試試圖讓它再度變紅。并且我還要保證所做的修改不能讓代碼膨脹,這的確讓我死掉了不少腦 細胞。這些測試中,不僅涵蓋各種功能上的測試,也涵蓋了一些跨越線程的測試。在以后,我會針對代碼執 行的效率加入一些新的測試。
我能保證的就是Nutz的代碼是小巧的,以及通過盡可能多的 JUnit 測試。但是所有我能做的也就只是 這些了,找出剩下的那些代碼上的缺陷,就應該交給 Nutz 第一批“小白”們了。“小白”們,加油!我 支持你們...
小白: 是小白鼠的簡稱。小白鼠是實驗室的最愛,實驗室是產生新東西的地方。
注: 從 09年9月開始,隨著“小白”們的不斷增多,項目的 Issue 列表越來越長,不斷的有人發現缺陷,也不斷的有人 提交修復,現在,基本上是整個社區在決定 Nutz 的品質。
Nutz 的未來¶
Nutz 是一個新興的開源項目
它沒有過去,只有未來
我可以保證,在未來,Nutz 的代碼 絕對不會膨脹。 所有的功能設計的出發點就是最大限度給予程序員實惠。
- 下面一些計劃會被執行,但是不一定按照我給出的順序:
* 為 Nutz 的 Ioc 和 Mvc 開發一個代碼生成器 * 讓 Nutz.mvc 支持自動生成縮略圖 * 為 Nutz 建立一個官方網站,提供討論區和 Wiki * 提供英文文檔
1. 我寫它不花錢 2. 我喜歡寫代碼 3. 我不擔心自己的生計 4. 社區很活躍,越來越多的人在貢獻代碼,測試,提交問題
http://www.zentao.net/
禪道項目管理軟件(ZenTaoPMS)是一款國產的,基于LGPL協議,開源免費的項目管理軟件,它集產品管理、項目管理、測試管理于一體,同時還包含了事務管理、組織管理等諸多功能,是中小型企業項目管理的首選。 禪道項目管理軟件主要理念基于scrum,因此它也是一款好用的scrum管理工具。 禪道項目管理軟件使用PHP + MySQL開發,基于自主的PHP開發框架──ZenTaoPHP而成。第三方開發者或者企業可以非常方便的開發插件或者進行定制。
http://www.playframework.org/documentation/1.1/firstapp 本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
http://code.google.com/p/javabloger-mini-books/ 本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
mongodb由C++寫就,其名字來自humongous這個單詞的中間部分,從名字可見其野心所在就是海量 數據的處理。關于它的一個最簡潔描述為:scalable, high-performance, open source, schema-free, document-oriented database。我對于文檔型數據庫有一些個人的偏好,這種偏好是從半年前研究couchdb而來的,因為我覺得用它來描述一個具有個性化特征的實體對 象正合適,比如網站上的用戶或商品書籍之類的條目。
一些概念:
跟mysqld一樣,一個mongod服務可以有建立多個數據庫,每個數據庫可以有多張表,這里的表名叫collection,每個 collection可以存放多個文檔(document),每個文檔都以BSON(binary json)的形式存放于硬盤中。跟關系型數據庫不一樣的地方是,它是的以單文檔為單位存儲的,你可以任意給一個或一批文檔新增或刪除字段,而不會對其它文 檔造成影響,這就是所謂的schema-free,這也是文檔型數據庫最主要的優點。跟一般的key-value數據庫不一樣的是,它的value中存儲 了結構信息,所以你又可以像關系型數據庫那樣對某些域進行讀寫、統計等操作。可以說是兼備了key-value數據庫的方便高效與關系型數據庫的強大功 能。
索引
跟關系型數據庫類似,mongodb可以對某個字段建立索引,可以建立組合索引、唯一索引,也可以刪除索引。當然建立索引就意味著增加空間開銷,我 的建議是,如果你能把一個文檔作為一個對象的來考慮,在線上應用中,你通常只要對對象ID建立一個索引即可,根據ID取出對象某些數據放在 memcache即可。如果是后臺的分析需要,響應要求不高,查詢非索引的字段即便直接掃表也費不了太多時間。如果還受不了,就再建一個索引得了。
默認情況下每個表都會有一個唯一索引:_id,如果插入數據時沒有指定_id,服務會自動生成一個_id,為了充分利用已有索引,減少空間開銷,最好是自己指定一個unique的key為_id,通常用對象的ID比較合適,比如商品的ID。
capped collection
capped collection是一種特殊的表,它的建表命令為:
db.createCollection("mycoll", {capped:true, size:100000})
允許在建表之初就指定一定的空間大小,接下來的插入操作會不斷地按順序APPEND數據在這個預分配好空間的文件中,如果已經超出空間大小,則回到 文件頭覆蓋原來的數據繼續插入。這種結構保證了插入和查詢的高效性,它不允許刪除單個記錄,更新的也有限制:不能超過原有記錄的大小。這種表效率很高,它 適用于一些暫時保存數據的場合,比如網站中登錄用戶的session信息,又比如一些程序的監控日志,都是屬于過了一定的時間就可以被覆蓋的數據。
復制與分片
mongodb的復制架構跟mysql也很類似,除了包括master-slave構型和master-master構型之外,還有一個 Replica pairs構型,這種構型在平常可以像master-slave那樣工作,一但master出現問題,應用會自動了連接slave。要做復制也很簡單,我 自己使用過master-slave構型,只要在某一個服務啟動時加上–master參數,而另一個服務加上–slave與–source參數,即可實現 同步。
分片是個很頭疼的問題,數據量大了肯定要分片,mysql下的分片正是成為無數DBA的噩夢。在mongodb下,文檔數據庫類似key- value數據庫那樣的易分布特性就顯現出來了,無論構造分片服務,新增節點還是刪除節點都非常容易實現。但mongodb在這方面做還不足夠成熟,現在 分片的工作還只做到alpha2版本(mongodb v1.1),估計還有很多問題要解決,所以只能期待,就不多說了。
性能
在我的使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出。 mysql實際無法勝任大數據量下任意字段的查詢,而mongodb的查詢性能實在讓我驚訝。寫入性能同樣很令人滿意,同樣寫入百萬級別的數 據,mongodb比我以前試用過的couchdb要快得多,基本10分鐘以下可以解決。補上一句,觀察過程中mongodb都遠算不上是CPU殺手。
GridFS
gridfs是mongodb一個很有趣的類似文件系統的東西,它可以用一大塊文件空間來存放大量的小文件,這個對于存儲web2.0網站中常見的大量小文件(如大量的用戶頭像)特別有效。使用起來也很方便,基本上跟一般的文件系統類似。
用合適的數據庫做適合的事情
mongodb的文檔里提到的user case包括實時分析、logging、全文搜索,國內也有人使用mongodb來存儲分析網站日志,但我認為mongodb用來處理有一定規模的網站日 志其實并不合適,最主要的就是它占空間過于虛高,原來1G的日志數據它可以存成幾個G,如此下去,一個硬盤也存不了幾天的日志。另一方面,數據量大了肯定 要考慮sharding,而mongodb的sharding到現在為止仍不太成熟。由于日志的不可更新性的,往往只需APPEND即可,又因為對日志的 操作往往只集中于一兩列,所以最合適作為日志分析的還是列存儲型的數據庫,特別是像infobright那樣的為數據倉庫而設計的列存儲數據庫。
由于mongodb不支持事務操作,所以事務要求嚴格的系統(如果銀行系統)肯定不能用它。
mongodb占用空間過大的原因,在官方的FAQ中,提到有如下幾個方面:
1、空間的預分配:為避免形成過多的硬盤碎片,mongodb每次空間不足時都會申請生成一大塊的硬盤空間,而且申請的量從64M、128M、 256M那樣的指數遞增,直到2G為單個文件的最大體積。隨著數據量的增加,你可以在其數據目錄里看到這些整塊生成容量不斷遞增的文件。
2、字段名所占用的空間:為了保持每個記錄內的結構信息用于查詢,mongodb需要把每個字段的key-value都以BSON的形式存儲,如果 value域相對于key域并不大,比如存放數值型的數據,則數據的overhead是最大的。一種減少空間占用的方法是把字段名盡量取短一些,這樣占用 空間就小了,但這就要求在易讀性與空間占用上作為權衡了。我曾建議作者把字段名作個index,每個字段名用一個字節表示,這樣就不用擔心字段名取多長 了。但作者的擔憂也不無道理,這種索引方式需要每次查詢得到結果后把索引值跟原值作一個替換,再發送到客戶端,這個替換也是挺耗費時間的?,F在的實現算是 拿空間來換取時間吧。
3、刪除記錄不釋放空間:這很容易理解,為避免記錄刪除后的數據的大規模挪動,原記錄空間不刪除,只標記“已刪除”即可,以后還可以重復利用。
4、可以定期運行db.repairDatabase()來整理記錄,但這個過程會比較緩慢。
因為官方文檔中對各方面的內容已經有很詳細的敘述,所以我并沒有再過多的引用原文與代碼,只是結合自己的使用歸納一些心得,有興趣的朋友不妨直接去翻文檔中自己感興趣的問題,超群的博客上有一個很好的入門介紹。
最后總結一句,文檔型數據庫有點像波粒二象性,總能在適當的時候表現出它作為關系型數據庫或key-value數據庫的優勢來。
實戰案例:
昨天我訪問mongodb的python程序開始出錯,經常拋出AssertionError異常,經查證只是master查詢異常,slave正常,可判斷為master的數據出了問題。
修復過程:
1、在master做db.repairDatabase(),不起作用;
2、停止slave的同步;
3、對slave作mongodump,備份數據;
4、對master作mongostore,把備份數據恢復,使用–drop參數可以先把原表刪除。
5、恢復slave的同步。 本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
http://fm.mp3.baidu.com/ 本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
前一陣收到一封網友的來信,信中提到了他在提高個人收入和未來發展中的一些困惑,這也是我們許多學員和網友經常找我咨詢的一件事情,頗具普遍性,故寫此博與大家探討和分享一下。
原信內容如下:
-------------------------
張老師,你好!
我今年23歲,明年12月軟件工程碩士畢業,學Java一直都是深受張老師的感染,是跟著張老師走進IT這個行業,現在又對這行有一定的疑惑,希望老師能夠給予解答!
為什么JavaEE搞太久之后,會覺得Java搞起來沒意思了,想去搞 Linux C了呢? 我在一家中國最大BSS/OSS的電信運營商工作兩年了,工資在xx(二線城市)這個地方還算可以(一年可能8萬-9萬左右),但是最近一直覺得很失落, 覺得搞JavaEE甚至搞java都覺得沒好大意思了,有點想轉行去搞Linux c這些東西去了,因為在xxxx這個地方大公司(比如:Moto,諾西,阿爾卡特,愛立信等)都很少招搞Java的人,而且一般招搞Java的人,工資都 給得不是特別的高,去小公司我覺得沒有好多意思(大部分都給不了好多錢),所以一直很迷茫!
我 想在碩士畢業之后,薪資待遇方面能夠更上一層樓,我覺得人生有三個境界:一是滿足物質生活需要,二是有自己的事業 ,三是做一定奉獻(不求回報)。我現在還處于人生的第一個階段,最近張老師一直在說Android很火,但是我在成都的招聘網站上搜索了一下,職位還是相 當的少! 我真的有點迷茫了,是繼續搞Java還是轉行去做C/C++,請張老師給點意見吧!謝謝!
致
禮!
---------------------------
我回復的郵件如下:
----------------------------------
你好!
我實在實在是太忙了,連給你回信的時間都很難抽出來,但你的來信我一直都掛在心上。眼看一個多月過去了,這封回信我也實在拖得太久了,今天索性先把別的事情擱置一下來處理你的來信,但也只能對你簡單回復一下了。 對程序員來說,要想賺大錢,賺月薪超過12k、甚至更多的錢,不是學什么技術,搞什么技術的工作能解決的!單說打工,你現在的薪水已經夠可以的了,想單純 地通過學習其他技術來提高薪水,是不會有多大的收獲的,還不如靠現有的技術混年頭,月薪也能自然增長到5位數。
要想大幅度地提升薪水,靠的是技術之外的許多其他因素,我簡單列舉一二:
(1)找到一個未來有發展潛力的公司,你在技術上站得住腳,且努力額外做一些力所能及的與技術無關的事情,把公司的事情當作自己的事情來對待,以得到老板 和上司賞識,被委以重任。一旦公司以后發展起來了,或者公司上市了,你作為元老,在物質回報上自然少不了你的好處?。╬s:像傳智播客這樣的公司就是一支 極具潛力的績優股,要找到這樣的公司,需要有眼光和機遇,呵呵)
(2)潛心修煉技術和專業技能,能獨當一面地開發出幾款小產品 (如cms,oa,crm等),然后自己多辛苦點,通過網絡等各種途徑接點類似的項目回家干,也算是額外賺點外快,比拿死工資要多點。如果通過接項目,結 識到了一些有市場攬活關系或能力的人物,彼此互補性強,又合得來,雙方可以合作,多接點賺關系錢的肥項目,一年下來也能賺個幾十萬。
(3)自己開公司,當老板。走這條路的成功者寥寥無幾,百分之九十以上的都會夭折,但也說不準你就是那百分之幾的幸運者和成功者。即使走這條路,也不能操 之過急,最好是在一個感興趣的行業里摸爬滾打數載,對行業的門道都很熟悉了,手頭的資源也很豐富了,一切似乎都差不多了,再加上你有強烈的創業欲望,不試 一試終生遺憾,還有那么幾個死黨支持你,這時候你就可以破繭而出了,這樣的風險就會小得多,成功的概率也就大些。
(4)如果上面這些中的任何一條都無法做到,那就老老實實拿著現有的工資,有工作可干,有班上就不錯了,好好享受生活的快樂,知足常樂吧,畢竟生活比你困難的人還多得是!
最后要提醒那些試圖通過跳槽漲薪的朋友,對那些剛入行一兩年、且學習能力強的程序員來說,每次工作幾月后跳槽幾乎都能帶來薪資上的一定增長,但薪水達到一 萬以后,就會遭遇發展瓶頸,薪水就很難再有更大突破,并且由于反復跳槽,對所在公司并沒有做出沉淀性的歷史貢獻,所以薪水到了12k后,就差不多到頭了, 那些薪水能突破2w,甚至3w的人,大多是與公司同甘共苦過多年的元老。如果你遇到了好的有發展潛力的公司,請不要計較一時之得失,一定要好好珍惜這樣的 一份工作機會。
本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
10 個最酷的 Linux 單行命令,希望對你有用。
-
sudo !!
以 root 帳戶執行上一條命令。
-
python -m SimpleHTTPServer
利用 Python 搭建一個簡單的 Web 服務器,可通過 http://$HOSTNAME:8000 訪問。
-
:w !sudo tee %
在 Vim 中無需權限保存編輯的文件。
-
cd -
更改到上一次訪問的目錄。
-
^foo^bar
將上一條命令中的 foo 替換為 bar,并執行。
-
cp filename{,.bak}
快速備份或復制文件。
-
mtr google.com
traceroute + ping。
-
!whatever:p
搜索命令歷史,但不執行。
-
$ssh-copy-id user@host
將 ssh keys 復制到 user@host 以啟用無密碼 SSH 登錄。
-
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
把 Linux 桌面錄制為視頻。
本文是使用 B3log Solo 從 Solo 示例 進行同步發布的。
|