2011年12月14日 星期三

[Struts2] Simple UI Tags

文章轉貼自 here

 之前我們介紹了一些 tags,主要都是輔助 programmers 完成頁面上資料的存取,在這裡我將開始描述關於顯示在頁面上與使用者互動的表單 (form)。不過,我先簡介一些共同有的 attributes,因為這些 attributes 如果在介紹 tag 時重複敘述,感覺過於累贅!

共同 attributes

共 同的 attributes 就是所有的 tags 都會擁有的,為了之後將重點放在各個 tags 上,我們就將這些 attributes 分開來介紹,這裡要注意的是,如果某個 attribute 的 type 屬於 String,那就表示該 attribute 的 value 只能接受字串,如果想要將 OGNL expression language 寫入,就必須在 expression 加上 %{} 符號 - %{ expression } - 這樣 Struts2 framework 就可以正確解析 OGNL 了!如果該 type 屬於 Object,那你就可以大方的將 OGNL expression 置入,無須加上 %{} 符號了!

AttributeTypeDescription
nameString用來設定 form 元件,並且會依照 name 所設定的值,將其對應到 Action 中的 property
valueObject用來設定 form 元件中所包含的值
keyStringi18n 用
labelString設定某個 form 元件顯示的字串
labelpositionString設定 label 顯示的位置:left 或 top
requiredBoolean如果設定為 true,則該 form 元件的 label 會出現 * 符號
idString相同於 HTML 的 id 屬性,通常用於 java script 與 CSS
cssClassString相同於 HTML 的 css 屬性
cssStyleString相同於 HTML 的 style 屬性
disabledBoolean相同於 HTML 的 disabled 屬性
tabindexString相同於 HTML 的 tabindex 屬性

Simple UI tags


上面描述的是共同的 attribute,以下將介紹一些 UI 相關並基礎的 tags,對於共同的 attribute 就不會重複提及。

1) Head Tag
對 於任何的 HTML 或 JSP 來說,要產生一個網頁通常都是以 開頭,對於 Struts2 提供的 來說,卻不同於一般的 HTML head tag,如果你試過 Struts2 提供的 head tag,你應該會發現,tag 本身並不作任何事情,而是在網頁中默默的幫我們加入一些檔案連結,這些檔案的連結目的在於支援其他的 tag 完成設定。在使用 Struts2 提供的 head tag 時,一定要放置於 HTML 的 head tag 之下,否則自動產生的檔案連結會放到不正確的位置而導致無法使用某些功能!
Struts 的 head tag 本身並沒有其他的 attribute 需要設定,我們可以簡單的使用:



這樣的撰寫就會自動幫我們產生一些檔案的連結。

2) Form Tag
Form tag 對於 UI 來說是最重要的 tag,因為他是所有 UI tag 的上層元件,如果對於 HTML 熟悉的話,form tag 的使用應該不會陌生,而且我們之前就看過蠻多的範例了!下表是一些 form tag 的 attributes (除了共同 attributes 之外):

AttributeTypeDescription
actionString指定該 form 送出的目標 Action
namespaceString目標 Action 的 namespace,預設值是目前的 namespace
methodString相同於 HTML 的 method attribute,預設值是 POST
targetString相同於 HTML 的 target attribute
enctypeString若要使用檔案上傳,則填入 multipart/form-data
validateBoolean設定該 form 是否使用 javascript 驗證,當使用 Validation Framework 時,此 attribute 要設定為 true,驗證功能才能正常運作

在 上述眾多 attributes 中,最重要的莫過於 action 了!因為他主導整個 form 的目標 action,在這裡設定 action attribute 時要注意,我們無須填入 .action 的縮寫,因為 form 元件會幫我們完成,如果目標的 action 與現在是相同的 namespace,我們就無須填寫 namespace,否則我們就需要 namespace attribute 幫助我們找到 Action。每當 form 元件被執行時會有以下三種可能發生的狀況:
  1. 如果 action attribute 沒有被設定,則 form 的目標就會指向目前的 Action
  2. 如 果有指定 action attribute,form 就會根據 Action 的位置配合上 namespace 來設定目標。如果 namespace 沒有被指定,就會使用目前的 namespace。當我們在設定 action attribute 時,我們無須加上 .action 的延伸網址
  3. 如果 action attribute 所指定的值不屬於一個 Action,form 元件的目標就會直接將該值作為目標。這種情況下,我們就需要自己加上延伸網址 (如:.jsp, .html 等),並且我們的相對位址需要以 / 作為開頭,例如:/myApp/b.jsp。另外要注意的是,如果我們採用此種方法,即使我們指定 namespace attribute,form 元件也會自動忽略!
3) Textfield Tag
這 個 tag 對於你來說也是無可避免的!因為沒有此 tag,你就無法取得使用者的資料,所以這個 tag 也算是最常使用的!不過要注意的是 textfield tag 的 name 與 value attribute,一般來說,我們無需要指定 value attribute,因為我們只需要指定 name attribute 讓 OGNL 幫我們去 ActionContext 中取得對應的值來填入,當然,我們也可以填寫 value attribute,但是要注意的是,如果我們自己有填寫 value attribute,那 name 指定的 OGNL 所取到的值就不會顯示在 textfield tag 上了,這點要注意喔!以下是一些 textfield tag 的 attributes:

AttributeTypeDescription
maxlengthString指定 textfield 的可輸入最大長度
readonlyBoolean如果設定為 true,則該 textfield 就無法輸入字串
sizeStringtextfield 的長度

4) Password Tag
這 個 tag 跟 textfield 幾乎是一樣的,不過當使用者輸入字串時,所有的文字都會被包裝成其他的符號,以防資料外洩!這個 tag 的使用其實跟 textfield 是相同的,所以我就不多說了!以下是 password tag 的 attributes:

AttributeTypeDescription
maxlengthString指定 textfield 的可輸入最大長度
readonlyBoolean如果設定為 true,則該 textfield 就無法輸入字串
sizeStringtextfield 的長度
showPasswordBololean使否將 OGNL 取到的值顯示在 value 中,預設 false

上 面列出的 attributes 中,幾乎跟 textfield 是一樣的,不過多了一個 showPassword attribute,這個 attribute 是讓我們設定是否要將 name attribute 中指定的 OGNL 取到的值顯示,在這裡我所謂的顯示不是大剌剌的用文字方式顯示,當然是有被遮蔽的顯示,不過從原始碼中還是可以看到原來的值,所以 showPassword attribute 預設值為 false,為的就是不要產生一些 security issues 來困擾 programmers,在這裡我也建議你不要將此 attribute 設定為 true!

5) Textarea Tag
同樣的,textarea 從開發角度上來說,與 textfield 並沒有太大的差別,主要就是提供使用者多行的輸入欄位!以下就是一些 textarea tag 的 attributes:

AttributeTypeDescription
colsInteger指定 textarea 的行數
rowsInteger指定 textarea 的列數
readonlyBoolean如果設定為 true,則該 textarea 就無法輸入字串
wrapString相同於 HTML 的 wrap attribute

6) Checkbox Tag
這 裡的 checkbox 元件如果你認為跟 HTML 的 checkbox 一樣的話,那你就錯了!因為在 Struts2 提供的 checkbox 元件是一個單一 HTML 的 checkbox,這是什麼意思呢?一般的 HTML checkbox 提供了多個選項讓使用者選擇零或多個,但是這裡的 checkbox 只提供使用者一個選項,也就是選或不選。所以這個 checkbox 不同於 HTML 的 checkbox。這個 checkbox 只提供 Boolean 的功能,也就是說其對應的 property 一定要是一個 boolean property,如果要像 HTML 提供的 checkbox 有相同功能的話,要改使用 checkboxlist tag,現在不會提到!
以下是 checkbox tag 的 attribute:

AttributeTypeDescription
fieldValueString這裡所填寫的 value 是真正會被傳送到 Action 中的值,主要是 true 或 false,預設值為 true
valueString這裡是用來判斷此 checkbox 是否會被勾選

看 到上面的 attribute 你一定會感到很奇怪,value attribute 已經是共同的 attribute 了,為何在這裡還會在重新點出呢?原因就在於 checkbox 元件還有一個 fieldValue 這會與 value attribute 搞混!所以在這裡要特別點名。
fieldValue attribute 中的值代表當此 form 被送出後,fieldValue 中填寫的值會真正被送到 Action 中對應的 property,而 value attribute 只是用來判斷此 checkbox 是否需要被勾選。當 OGNL 取得 ValueStack 中的值,會將此值寫入 value attribute 中 (任何一個元件都是這樣),使用者可以看到此 checkbox 是否有被選起來。所以 fieldValue 與 value attribute 之間不要弄混了!
另外,checkbox 所指定的 name attribute,其對應到的 property 需要是一個 boolean 型態,否則會無法運作!

在這裡列出了六種簡單的 UI tag 給你參考,這裡列出的都是針對單一的 property,之後我將介紹關於 Collection-based 相關的 UI tags。

2011年5月24日 星期二

[轉貼]軟體推薦:Android 手機10大必備軟體

網頁連結於此 網頁

筆者的手機好久沒有愛惜它了,想說來查查看有啥必備軟體,不查不知道,一查嚇了一跳~哇,大家好賣力的在推薦,這一篇文章介紹的好詳細,讓人想來分享一下。

請點連結過觀看。

以上。

[轉貼]支援/相容 Firefox 4 的擴充套件推薦列表

轉貼於 此部落格,詳細的記錄了各種套件的功能唷!

升級 Firefox 後,啊哩~怎麼 pcman(看bbs的套件)被停用了!?怎麼 eazy to drag(使用滑鼠就可輕鬆拖曳連結並開啟)也被停用了!?

停用的原因則是與 升級的 4.0.1版不相容……

好吧!認命的google一下,好險還是有類似的套件可以用。

-----------以下正文開始-----------

相較於 Google Chrome 的快速更新版本編號, Firefox 4 的發表, 反而讓人有種期待的心情, 不過每一回改版, 就是或多或少會遇上常用的擴充套件並未隨之更新, 一者是等待做整更新, 要不就是期待有沒有熱心的網友釋出修正版本, 這回 Mozilla 讓擴充套件開發人員有不少的緩衝時間, 先前安裝 Firefox 4 RC2 時, 常用的套件都已經可以正常運作, 不需要透過安裝 Nightly Tester Tools 的方式來啟用相容模式。

雖然這次更新, 已經加入了 Sync, 不過最希望的同步擴充套件功能還是沒有出現, 雖然先前嘗試過 Siphon 這套擴充套件, 在某種程度上可以達到需求, 不過問題還是很多, 對中文擴充套件的相容度也頗為糟糕, 重點是開發似乎遇到瓶頸, 釋出到現在也沒有繼續更新, 自然也沒辦法在 Firefox 4 下正常運作, 同步這個部分, Google Chrome 內建的同步擴充功能倒是非常讓人激賞, 啟用同步功能, 就可以簡單在不同電腦中安裝並直接開始使用, 完全不需要一個個手動安裝, 在火狐出現類似功能之前, 還是整理個常用擴充套件列表, 方便記憶和管理。


推薦使用
套件名稱 : Adblock Plus 1.3.3
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/adblock-plus/
更新日期 : December 23, 2010
使用教學 : 點我開啟
套件介紹 : 誠如其名, Adblock 自然是針對網頁中的廣告連結或者是 Popup 進行攔阻, 提供乾淨的瀏覽頁面, 不過要達到最佳的效果, 針對自己經常瀏覽的網頁, 來挑選對相對應的過濾規則是很重要的, 以自己的使用經驗, 目前訂閱的 Filter 為 EasyList, EasyElement 以及 ChinaList, 至於訂閱的方式請參考使用教學

套件名稱 : BBSFox 1.0.75
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/bbsfox/
更新日期 : January 1, 2011
使用教學 : 點我開啟
套件介紹 : 直接使用 Firefox 來開啟 BBS, 使用者無需額外安裝像是 PCMan 或者 KKMan 這類軟體來瀏覽 Ptt 等 BBS Server

套件名稱 : Download Statusbar 0.9.8
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/download-statusbar/
更新日期 : March 11, 2011
套件介紹 : Download Statusbar 不僅能夠將原本跳出的下載視窗, 縮小到狀態列上方, 不僅僅用簡單明瞭的方式來顯示目前檔案下載狀況以及進度, 也提供使用者許多的自訂功能以及檔案續傳等功能, 更可以呼叫防毒軟體來檢查檔案是否有夾帶病毒

套件名稱 : Easy DragToGo+ 1.1.3
套件網頁 : https://addons.mozilla.org/zh-TW/firefox/addon/easy-dragtogo-1/
更新日期 : March 14, 2011
使用教學 : 點我開啟
套件介紹 : 過拖拉的滑鼠手勢, 輕易地在新分頁開啟連結, 搜尋選取的文字以及快速的儲存圖片, 尤其是經常習慣閱讀大量論壇文章的使用者更是不能錯過, 快速的將所有文章開啟在背景分頁中, 然後一口氣閱讀所有開啟的討論串

套件名稱 : FireGestures 1.6.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/firegestures/
更新日期 : January 2, 2011
使用教學 : 點我開啟
套件介紹 : 滑鼠手勢一直都是瀏覽網頁時最重要的輔助功能之一, FireGestures 不管是在功能上或者是對於手勢的辨識度, 在同質性套件中, 可以說是一時之選

套件名稱 : Greasemonkey 0.9.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/greasemonkey/
更新日期 : January 25, 2011
套件介紹 : 安裝油猴之後, 可以讓火狐套用使用者腳本中的 JavaScript 來調整顯示介面以及強化網頁應用功能

套件名稱 : IE Tab 2 (FF 3.6+) 2.12.21.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/ie-tab-2-ff-36/
更新日期 : December 21, 2010
使用教學 : 點我開啟
套件介紹 : 在火狐瀏覽網頁時, 呼叫 IE 核心來開啟網頁內容, 不需要再額外打開 IE 來瀏覽 IE Only 的網頁, 同時也可以自訂清單, 開啟某些網頁自動使用 IE 核心來瀏覽內容

套件名稱 : Xmarks 書籤同步套件 3.9.5
套件網頁 : https://addons.mozilla.org/zh-TW/firefox/addon/xmarks-sync/
更新日期 : February 14, 2011
使用教學 : 點我開啟
套件介紹 : 在不同電腦以及不同瀏覽器之間同步書間、密碼、歷史資訊等訊息


調整使用者介面
套件名稱 : Barlesque 1.15
套件網頁 : https://addons.mozilla.org/zh-TW/firefox/addon/barlesque/
更新日期 : December 30, 2010
使用教學 : 點我開啟
套件介紹 : 擴充套件讓火狐的附加元件列顯示更為精簡而快速的操作顯示介面

套件名稱 : Easy App Tabs 3
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/easy-app-tabs/
更新日期 : February 13, 2011
使用教學 : 點我開啟
套件介紹 : 在目標分頁按下右鍵選擇"釘選成應用程式分頁"是這回 Firefox 4 新加入的功能之一, 擴充套件允許使用滑鼠雙擊目前瀏覽分頁切換成 App Tab

套件名稱 : Locationbar² 1.0.6
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/locationbar%C2%B2/
更新日期 : February 28, 2011
使用教學 : 點我開啟
套件介紹 : 除了自訂網址列的顯示格式, 擴充套件本身也提供快速的子網域切換方式

套件名稱 : Movable Firefox Button 1.2
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/movable-firefox-button/
更新日期 : March 9, 2011
使用教學 : 點我開啟
套件介紹 : 當使用者將 Firefox 4 開啟全螢幕時, 擴充套件允許使用者可以自訂功能選單按鈕的位置

套件名稱 : Personal Menu 5.0.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/personal-menu/
更新日期 : March 16, 2011
使用教學 : 點我開啟
套件介紹 : 讓使用者可以自訂打造屬於自己專用的 Firefox 4 下拉功能選單輔助工具

套件名稱 : Quick Search Bar 2.1.11
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/quick-search-bar/
更新日期 : February 16, 2011
使用教學 : 點我開啟
套件介紹 : 讓使用者在使用 Firefox 4 的同時, 可以更快速的在搜尋列中針對不同資訊來套用對應的搜尋引擎來尋找資料

套件名稱 : Roomy Bookmarks Toolbar 1.1.6
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/roomy-bookmarks-toolbar/
更新日期 : March 24, 2011
使用教學 : 點我開啟
套件介紹 : 精簡書籤工具列的圖示訊息顯示, 在有限空間內透過顯示 Favicon (網址圖示) 來呈現更多網站連結

套件名稱 : Status-4-Evar 2011.04.06.18
套件網頁 : https://addons.mozilla.org/zh-TW/firefox/addon/status-4-evar/
更新日期 : April 8, 2011
使用教學 : 點我開啟
套件介紹 : 將瀏覽狀態列和附加元件列作結合, 使用者可以自訂顯示網頁瀏覽狀態, 並且避免顯示資訊和其他訊息出現重疊而造成混淆, 例如 Barlesque


最佳化設定
套件名稱 : FasterFox Lite 3.9.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/fasterfox-9148/
更新日期 : February 25, 2011
使用教學 : 點我開啟
套件介紹 : 提供使用者調整瀏覽器的網路效能設定

套件名稱 : PlacesCleaner 收藏庫清潔工 0.40
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/placescleaner/
更新日期 : December 15, 2010
使用教學 : 點我開啟
套件介紹 : 定期清理 places.sqlite 裡頭的無效歷史瀏覽資訊, 保持 Firefox 收藏庫運作的更快更有效率


個人偏好
套件名稱 : CheckPlaces 2.4.5
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/checkplaces/
更新日期 : March 18, 2011
使用教學 : 點我開啟
套件介紹 : 檢查書籤中無效連結或者重複標記的網頁

套件名稱 : Cutyfox URL Shortener (bit.ly, is.gd, goo.gl) 1.4.0
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/cutyfox-url-shortener-googl-is/
更新日期 : January 7, 2011
使用教學 : 點我開啟
套件介紹 : 方便易用的 goo.gl 短網址套用工具

套件名稱 : F.B. Purity- Clean Up Your Facebook Homepage
套件網頁 : https://addons.mozilla.org/en-US/firefox/addon/fb-purity-cleans-up-facebook/
更新日期 : March 18, 2011
使用教學 : 點我開啟
套件介紹 : 輔助使用者管理臉書過多無用的動態訊息

套件名稱 : Flagfox 4.1.1
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/flagfox/
更新日期 : March 9, 2011
使用教學 : 點我開啟
套件介紹 : 除了提供瀏覽網頁的基本資訊之外, 擴充套件本身同時提供為數眾多的網域查詢工具

套件名稱 : Locale Switcher 3
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/locale-switcher/
更新日期 : January 11, 2011
使用教學 : 點我開啟
套件介紹 : 使用社群火狐社群版本必備的語系切換輔助工具

套件名稱 : Google Reader Watcher 1.3.6
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/google-reader-watcher/
更新日期 : January 8, 2011
使用教學 : 點我開啟
套件介紹 : 定期幫使用者檢查 Google Reader 是否有新聞章, 並在狀態列顯示目前尚未閱讀文章數目

套件名稱 : Google Redesigned 0.6
套件網頁 : https://addons.mozilla.org/zh-tw/firefox/addon/google-redesigned/
更新日期 : January 11, 2011
使用教學 : 點我開啟 套件介紹 : 美化 Google Reader、Gmail、Gdoc 以及 Gcal 的使用者介面

套件名稱 : Yet Another Smooth Scrolling 3.0.16
套件網頁 : https://addons.mozilla.org/zh-TW/firefox/addon/yet-another-smooth-scrolling/
更新日期 : January 13, 2011
使用教學 : 點我開啟
套件介紹 : 透過適當的演算法, 讓使用者在捲動網頁內容時, 能夠更順暢更適合閱讀

POI 感想序

筆者最近一直在玩POI套件,學著把讀檔、寫檔…

POI是一個強大的套件啊!

不過,目前看來對 word的支援還沒有太好,

excel的支援則是比word多還不錯,但excel 的 chart除外。

改天,來分享一下 POI的使用。

我還把它包起來,可以更容易的讀取 excel,但是對於製定表格value object 就沒辦法了。

格式太多,太雜,很難一一定下來,只好作罷。

倒是有寫對 excel table title parse 的方法。

希望對於讀excel 檔案時,可以更易於使用。

寫於 2011/5/24

2011年1月26日 星期三

[轉貼]SVN 使用安裝教學文章

svn是寫專案的人必備。

詳細安裝教學:
-----------
SVN (Subversion 、TortoiseSVN)設定大全
點我前往

2010年8月10日 星期二

[轉貼]鋰電池和鎳電池的差異

在手機中,無論是從技術角度評估還是從價格方面的考慮,電池都佔有十分重要的地位。時值今日,市場上正在銷售的手機中,所使用的電池已經基本完成了從鎳電池
到鋰電池的過渡。也許是由於手機電池剛剛完成了一次鎳電池到鋰電池的革命,所以人們對鋰電池的認識並不統一,在許多情況下不正確的說法和做法頗為流行。因 此,懂得一點鋰電池的知識,掌握鋰電池的正確使用方法是非常有必要的。

  一、鋰電池的種類:

   目前市面上所使用的二次電池主要有鎳氫(Ni-MH)與鋰離子(Li-ion)兩種類型。鋰離子電池中已經量產的有液體鋰離子電池(LiB)和聚合物鋰
離子電池(LiP)兩種。所以在許多情況下,電池上標注了Li-ion的,一定是鋰離子電池。但不一定就是液體鋰離子電池,也有可能是聚合物鋰離子電池。

   鋰離子電池是鋰電池的改進型產品。鋰電池很早以前就有了,但鋰是一種高度活躍(還記得它在元素週期表中的位置嗎?)的金屬,它使用時不太安全,經常會在
充電時出現燃燒、爆裂的情況,後來就有了改進型的鋰離子電池,加入了能抑制鋰元素活躍的成份(比如鈷、錳等等)從而使鋰電真正達到了安全、高效、方便,而 老的鋰電池也隨之基本上淘汰了。至於如何區分它們,從電池的標識上就能識別,鋰電池為Li、鋰離子電池為Li-ion。現在,筆記本和手機使用的所謂“鋰 電池”,其實都是鋰離子電池。

   現代電池的基本構造包括正極、負極與電解質三項要素。作為電池的一種,鋰離子電池同樣具有這三個要素。一般鋰離子技術使用液體或無機膠體電解液,因此需
要堅固的外殼來容納可燃的活性成分,這就增加了電池的重量和成本,也限制了尺寸大小和造型的靈活性。一般而言,液體鋰離子二次電池的最小厚度是6mm,再
減少就比較困難。

  而所謂聚合物鋰離子電池是在這三種主要構造中至少有一項或一項以上使用高分子材料作為其主要的電池系統。

  新一代的聚合物鋰離子電池在聚合物化的程度上已經很高,所以形狀上可做到薄形化(最薄0.5毫米)、任意面積化和任意形狀化,大大提高了電池造型設計的
靈活性,從而可以配合產品需求,做成任何形狀與容量的電池。同時,聚合物鋰離子電池的單位能量比目前的一般鋰離子電池提高了50%,其容量、充放電特性、
安全性、工作溫度範圍、迴圈壽命與環保性能等方面都較鋰離子電池有大幅度的提高。

   目前市面上所銷售的液體鋰離子(LiB)電池在過度充電的情形下,容易造成安全閥破裂因而起火的情形,這是非常危險的,所以必需加裝保護IC線路以確保 電池不會發生過度充電的情形。而高分子聚合物鋰離子電池方面,這種類型的電池相對液體鋰離子電池而言具有較好的耐充放電特性,因此對外加保護IC線路方面 的要求可以適當放寬。此外在充電方面,聚合物鋰離子電池可以利用IC定電流充電,與鋰離子二次電池所採用的CCCV(Constant Currert-Constant Voltage)充電方式所需的時間比較起來,可以縮短許多的等待時間。 

  二、手機製造商對鋰電池的應用情況

  雖然近幾年來幾乎所有廠家都已經傾向於採用鋰離子電池,但世界各大手機製造商對電池的選擇還是有自己的特點和習慣,例如曾經在相同的一段歷史時期?:

  諾基亞:採用Ni-MH(鎳氫)電池、LiB(液體鋰離子)電池,未採用LiP(聚合物鋰離子)電池。

  愛立信:採用Ni-MH電池、LiB電池、LiP電池。

  摩托羅拉:採用Ni-MH電池、LiB電池,未採用LiP電池。

  不難發現,從為手機最早選用LiP聚合物鋰離子電池這件事情上,愛立信體現出自己手機技術先驅的本色。根據我查找到的資料表明,目前聚合物鋰離子電池主要製造廠為日本SONY、 松下、GS等幾家公司,2000年的生產量達到2100萬隻,其中50%為愛立信手機配套。進入2002年的今天,鋰離子電池在其他手機廠商的手機上也已 廣泛的應用與普及。但在聚合物鋰離子電池的使用上,還遠沒有達到在所有手機廠家的產品中得到普及的程度,廣泛應用還有待時日。

   另一方面,雖然鋰離子電池優點多多,但也有缺陷,如價格高和充放電次數少等等。鋰電池的充放電次數只有400-600次,經過特殊改進的產品也不過 800多次。而鎳氫電池的充電次數能夠達到700次以上,某些品質好的產品充放電可達1200次,這樣一比較,鎳氫電池要比鋰電池長壽。此外鎳氫電池的價
格也要比鋰電池低很多。而且嚴格說來,鋰電池同樣會有記憶效應,只是它的記憶效應非常低,基本上可以忽略不計。

  由此看來,目前還沒有十全十美電池。 

  三、鋰離子電池的使用

  這部分是本文的重點,我們分三點來談。

  1、如何為新電池充電

   在使用鋰電池中應注意的是,電池放置一段時間後則進入休眠狀態,此時容量低於正常值,使用時間亦隨之縮短。但鋰電池很容易啟動,只要經過3—5次正常的 充放電迴圈就可啟動電池,恢復正常容量。由於鋰電池本身的特性,決定了它幾乎沒有記憶效應。因此用戶手機中的新鋰電池在啟動過程中,是不需要特別的方法和
設備的。不僅理論上是如此,從我自己的實踐來看,從一開始就採用標準方法充電這種“自然啟動”方式是最好的。

   對於鋰電池的“啟動”問題,眾多的說法是:充電時間一定要超過12小時,反復做三次,以便啟動電池。這種“前三次充電要充12小時以上”的說法,明顯是 從鎳電池(如鎳鎘和鎳氫)延續下來的說法。所以這種說法,可以說一開始就是誤傳。鋰電池和鎳電池的充放電特性有非常大的區別,而且可以非常明確的告訴大
家,我所查閱過的所有嚴肅的正式技術資料都強調過充和過放電會對鋰電池、特別是液體鋰離子電池造成巨大的傷害。因而充電最好按照標準時間和標準方法充電, 特別是不要進行超過12個小時的超長充電。通常,手機說明書上介紹的充電方法,就是適合該手機的標準充電方法。

   此外,鋰電池的手機或充電器在電池充滿後都會自動停充,並不存在鎳電充電器所謂的持續10幾小時的“涓流”充電。也就是說,如果你的鋰電池在充滿後,放 在充電器上也是白充。而我們誰都無法保證電池的充放電保護電路的特性永不變化和品質的萬無一失,所以你的電池將長期處在危險的邊緣徘徊。這也是我們反對長
充電的另一個理由。

   此外在對某些手機上,充電超過一定的時間後,如果不去取下充電器,這時系統不僅不停止充電,還將開始放電-充電迴圈。也許這種做法的廠商自有其目的,但
顯然對電池和手機/充電器的壽命而言是不利的。同時,長充電需要很長的時間,往往需要在夜間進行,而以我國電網的情況看,許多地方夜間的電壓都比較高,而
且波動較大。前面已經說過,鋰電池是很嬌貴的,它比鎳電在充放電方面耐波動的能力差得多,於是這又帶來附加的危險。

  此外,不可忽視的另外一個方面就是鋰電池同樣也不適合過放電,過放電對鋰電池同樣也很不利。這就引出下面的問題。

  2、正常使用中應該何時開始充電

  在我們的論壇上,經常可以見到這種說法,因為充放電的次數是有限的,所以應該將手機電池的電盡可能用光再充電。但是我找到一個關於鋰離子電池充放電迴圈的實驗表,關於迴圈壽命的資料列出如下:

  迴圈壽命 (10%DOD):>1000次

  迴圈壽命 (100%DOD):>200次

  其中DOD是放電深度的英文縮寫。

從表中可見,可充電次數和放電深度有關,10%DOD時的迴圈壽命要比100%DOD的要長很多。當然如果折合到實際充電的相對總容
量:10%*1000=100,100%*200=200,後者的完全充放電還是要比較好一些,但前面網友的那個說法要做一些修正:在正常情況下,你應該
有保留地按照電池剩餘電量用完再充的原則充電,但假如你的電池在你預計第2天不可能堅持整個白天的時候,就應該及時開始充電,當然你如果願意背著充電器到
辦公室又當別論。

  而你需要充電以應付預計即將到來的會導致通訊繁忙的重要事件的時候,即使在電池尚有很多餘電時,那麼你也只管提前充電,因為你並沒有真正損失“1”次充電迴圈壽命,也就是“0.x”次而已,而且往往這個x會很小。

   電池剩餘電量用完再充的原則並不是要你走向極端。和長充電一樣流傳甚廣的一個說法,就是“儘量把手機電池的電量用完,最好用到自動關機”。這種做法其實 只是鎳電池上的做法,目的是避免記憶效應發生,不幸的是它也在鋰電池上流傳之今。曾經有人因為手機電池電量過低的警告出現後,仍然不充電繼續使用一直用到
自動關機的例子。結果這個例子中的手機在後來的充電及開機中均無反應,不得不送客服檢修。這其實就是由於電池因過度放電而導致電壓過低,以至於不具備正常 的充電和開機條件造成的。

  3、對鋰電池手機的正確做法

  歸結起來,我對鋰電池手機在使用中的充放電問題最重要的提示是:

  1、按照標準的時間和程式充電,即使是前三次也要如此進行;

  2、當出現手機電量過低提示時,應該儘量及時開始充電;

  3、鋰電池的啟動並不需要特別的方法,在手機正常使用中鋰電池會自然啟動。如果你執意要用流傳的“前三次12小時長充電啟動”方法,實際上也不會有效果。

  因此,所有追求12小時超長充電和把鋰電池手機用到自動關機的做法,都是錯誤的。如果你以前是按照錯誤的說法做的,請你及時改正,也許為時還不晚。

   當然,在手機及充電器自身保護和控制電路品質良好的情況下,對鋰電池的保護還是有相當保證的。所以對充電規則的理解才是重點,在某些情況下也是可以做出
某種讓步的。比如你發現手機在你夜晚睡覺前必須充電的話,你也可以在睡前開始充電。問題的關鍵在於,你應該知道正確的做法是什麼,並且不要刻意按照錯誤的 說法去做。

when the type of table's column is DATETIME

當資料庫欄位是 DATETIME 時,該怎麼辦呢?

在遇到此問題前,筆者都是直接對該欄位下SQL,直接把日期時間以String型態寫入DB,

但是,因為EJB CMP的關係,必須以DATE型態直接寫入,不能再使用String的方式。

果真讓筆者傷腦筋啊~

---
方法一:把String 轉成DATE
參考網址

String date = "2003-10-04 18:30:25";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition pp = new ParsePosition(0);
try {
Date date = df.parse(date);
System.out.println (date.toString());
} catch (Exception e) {
e.printStackTrace();
}
//RESULT: Sat Oct 04 18:30:25 CST 2003


p.s. 但我要的格式並沒有成功,雖然有成功轉成date物件 Q_Q
------------------------------------
方法二:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date() ;
System.out.println(dateFormat.format(date));

//RESULT: 2010-08-10 00:22:42


p.s. 但使用dateFormat.format() 的結果是把日期轉成String,結果還是無法把日期時間寫入資料庫。
------------------------------------
方法三:


java.util.Date ud = java.util.Date ud = java.util.Calendar.getInstance().getTime();
java.sql.Timestamp time = new java.sql.Timestamp(ud.getTime());
System.out.println(time.toString());
//RESULT: 2010-08-10 22:18:37.643


使用TIMESTAMP物件,轉換時間成功,這時,就可以成功寫入物件。

結論,java的世界真是博大精深啊!!!

以上。