玩玩Java已經有一陣子了,自己覺得還算是跟著標準走的﹝個人覺得呵呵﹞ ,這個星期五準備針對公司的一些主管介紹UML,實際上我也沒有粉充分了解他,不過在研究過Design Pattern後發現,UML確實可以帶來一些優勢,至少是圖形化的呈現方式,但是到現在還沒有起筆寫簡報,一方面是不知從何著手,另一方面又擔心就介紹的比較深入對於只了解大型主機程式的主管們或許是一個難度,大致上應該會介紹一下幾個圖形的應用及各種圖形的意義,還會提幾個案例來互動一下希望他們可以大致了解UML,因為我現在有看到的Java專案都沒有這些東西,對於從中切入說時再的看程式是最實際的不過從UML的圖形可以簡化我了解系統架構的時間,不是嗎?想說藉由這次的說明讓大家知道一個專案不是只有完成他就好了,而是要注意到日後的維護及更新等等東西,我個人認為一個專案的結束,對我們公司而言並不是上線就好了,而是要考慮專案的延續等等的問題。
最近有一個繳費單的專案,需要列印條碼,因為IReport本身就有提供列印條碼的功能,所以就用IReport設計繳費單然後再用Jasperreport API寫批次程式去產生PDF,資料量大概3000多筆(頁)拆成幾個檔案,可是就發生了一個問題居然發生部分繳費單的條碼有問題,看了一下程式研判是Race Condition因為程式採用的是多執行緒,若是依序個別產生是不會有問題,但是同時執行的時候就會亂掉,而且都錯在條碼,令我覺得很奇怪,後來我查了一下發現it.businesslogic.ireport.barcode.BcImage 類別我猜是這裡的問題,就先加上synchronized重新編譯在去執行,嘿嘿條碼就對了,做了一下壓測也正常,程式碼如下,不過這樣事不是對了可能還要仔細查查看。 public class BcImage { private static net.sourceforge.barbecue.Barcode bc = null; public synchronized static net.sourceforge.barbecue.Barcode getBarcode() { return bc; } public synchronized static BufferedImage getBarcodeImage(int type, Object aText, boolean showText, boolean checkSum) { return getBarcodeImage(type, aText, showText, checkSum,"",0,0); } public synchronized static BufferedImage getBarcodeImage(int type, Object aText, boolean showText, boolean checkSum, String applicationIdentifier, int width, int height) { // 2of7, 3of9, Bookland, Codabar, Code128,...
留言
張貼留言