搜尋此網誌

2011年12月24日 星期六

Html input tag usage(Html input標籤的使用方式)

input元件可以使用在form標籤裡面, 用來宣告允許使用者輸入資料的方法.

以下列出一些常用的input type的輔助attributes 的用法:

input type可以為
button,
checkbox,
hidden(一個隱藏的input 欄位),
password(密碼欄位,在此欄位的文字都會被mask起來.),
radio,
reset(所有表單欄位內的資料,會被設回預設值.),
submit(把欄位內的資料傳送到server),
text(一個可以給使用者輸入文字的欄位,預設可輸入20個字)




參考自W3C網站

Create JavaScript Object(創建JavaScript 物件)

建立一個Student class, 擁有name這個property,以及getName這個方法.


然後依據Student這個class,實體化出一個Student物件.


在這裡要注意到的地方是, 因為Student有預設的Constructor(建構子),需要丟入一個參數


做為name這個屬性的值,否則的話會列印出undefined.




下面是另一個創立物件,物件的屬性和方法的寫法:



第三個創立物件,物件的屬性和方法的寫法:

2011年12月7日 星期三

12月的第七天

最近忙著找工作,現在才寫月誌.這個月的重點還是放在要多寫一些有品質的技術文章, 網站瀏覽人數,

近幾個月都呈現很穩定的流量, 這是很值得高興的.

Spring 特點(feature)

Spring includes:

  • 最完整的輕量化容器(lightweight container), providing centralized, automated configuration and wiring of your application objects. 這一個容器是非侵入性的(non-invasive), 可以由一系列的(POJOs)組成一個複雜的system ,並且遵循著一致化和透明的設計概念. The container brings agility and leverage, and improves application testability and scalability by allowing software components to be first developed and tested in isolation, then scaled up for deployment in any environment (J2SE or J2EE).

  • 為transaction management提供一個共同的抽象層(abstraction layer),允許可抽換式的交易管理, 使得劃分交易變的很簡單而不需要去處理low-level issues. Generic strategies for JTA and a single JDBC DataSource are included. 不同於原有的 JTA(Java Transaction Interface) or EJB CMT, Spring所支援的交易管理並不僅僅限於J2EE下的環境.

  • JDBC的抽象層 提供了一個有意義的例外架構, (no more pulling vendor codes out of SQLException), 簡化了錯誤處理,並且大大降低了你所需要寫的程式碼. You'll never need to write another finally block to use JDBC again. The JDBC-oriented exceptions comply to Spring's generic DAO(Data Access Objects) exception hierarchy.

  • 整合了 Toplink, Hibernate, JDO, and iBATIS SQL Maps: in terms of resource holders, DAO implementation support, and transaction strategies. First-class Hibernate support with lots of IoC convenience features, addressing many typical Hibernate integration issues. All of these comply to Spring's generic transaction and DAO exception hierarchies.

  • AOP(Aspect-oriented programming) functionality, fully integrated into Spring configuration management. You can AOP-enable any object managed by Spring, adding aspects such as declarative transaction management. 假如你正在Tomcat使用單一的資料庫或是任何其他沒有JTA支援的web容器,有了Spring, 你可以宣告(declarative)交易管理而不必依靠EJB,甚至不必JTA.

  • 靈活的MVC網頁應用程式框架. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. Spring中介層可以輕易地結合任何Web MVC框架的Web層,好比Struts, WebWork, or Tapestry.

你可以在任何的J2EE環境使用Spring所有的功能. Spring是以商業邏輯和DAO可重複使用,並且不

受限於任何特定的J2ee服務為中心思想而設計的. 物件可以毫無障礙的跨越:J2ee的環境, 單機應

用程式, 以及測試環境重複使用.

Spring的階層架構給予你很多的彈性. 它所有的功能都是根據前一個lower level而來的. 比如說,你

可以使用JavaBeans的設定管理(configuration management)而不必使用到MVC framework or

AOP support. 但是假如你要使用MVC framework or AOP support,你會發現到它們都是建立在核

心的Spring設定裡,所以你在這方面的知識可以立刻派上用場.




節錄翻譯自http://www.springsource.org/spring-core#documentation

2011年11月7日 星期一

寫給一隻曾經陪伴我15年的老狗

每次看到別人跟寵物狗玩,我都會想起,我自己也養過一隻,15年的狗.牠從我國


小一年級,陪伴到我大學三年級,我的小時候,青少年,歲月,牠陪著我一起渡過.


記得在我國小四年級的時候,牠還陪我到學校上課, 可是在我大三出國留學的時


,因為牠已經很老了,我很怕牠在我離開台灣的時候,也離開了我.我就對牠說:


你一定要等我回來喔,牠當時立刻的反應是快速搖著牠那很漂亮很捲的白色尾


,用舌頭舔著我的腳,表示同意. 在留學期間,我每次打電話回家,都會要求要聽


牠的聲音,牠也很配合的汪汪叫了幾聲,彷彿真的在和我對話. 那一年,我本來想


趁放長假的時候,回台灣陪家人和看牠,我連出境日本在入境的簽證都辦好了.


是我忘了甚麼原因,531號的時候,我打了通電話回台灣,告訴家人說,沒有要


回去了.我只聽到電話那頭,母親的聲音很奇怪,很沉默,沒有特別的回應,這不像


是平常的對話,我心裡直覺一定有甚麼事情發生, 可是媽媽沒有特別說甚麼,


寒暄了幾句就掛電話了.後來我回台灣的時候,才知道我家的狗在當天早上就去


世了,這是我人生中第一次心理感受到這麼強烈的遺憾還有震撼. 如果當時我有


回去,我應該有機會見到牠最後一面,可是我並沒有.同時也讓我體會到很多事


,不是可以等待,和自己可以決定的.後來我們把牠埋在老家的農地上, 這樣每


次回老家的時候,都可以順道看牠,也記得有一個和人類這麼好的朋友,陪著我成


,分享著我青少年時期的喜怒哀樂.

2011年11月4日 星期五

布里斯本是這樣倒垃圾的




對於最近社會現象的一些感想.

2000後的2002年我剛大學畢業,也正值那斯達克科技泡沫化,當時很多一起畢業

的同學也是對未來很悲觀,認為我們的祖父母那一輩,適逢台灣經濟起飛,所以可

以存錢和到處都有工作機會.當時的我也是這麼認為,可是現在我想起來,這是錯

誤的想法,我還記得我父母在我很小很小的時候,幾乎都工作到晚上11點以後,印

象中就連我開始讀大學了,他們的工作時間還是到晚上10點. 台灣的經濟起飛和

奇蹟,就是我們的祖父母輩們,這麼孜孜不倦的努力所創造出來的.並不是憑空從

天而降,掉下來的機會. 相較之下,我們這個世代是在它們的呵護和保護傘之下

而成長,已經比他們好很多了.回到主題, 如果從2000年的科技泡沫化開始就一

直不求改變的話,10年過去了,生活還是一樣沒變或甚至更糟,可是這10年整個

大環境已經產生了很大的變化., ADSL ,Broadband Internet, Wireless Internet,

IPhone,Smart Phone.甚至於到未來的LTE, Cloud Computing. 這些都是以前所

沒有的機會,只是有沒有看到而已.我只知道IT的機會,可是我相信在別的工作領

域,一定也有類似的機會和場合, 別人有錢或有能力,絕對不是運氣好而已,背後

付出的努力和承擔的風險,這是外表所看不到的.

2011年11月1日 星期二

11月的第一天

這個月忙著準備期末考, 沒有發表新文章,可是沒想到,這個月的網站瀏覽人數,反而急遽上升到267人

次,遠高於前幾個月, 難道是我在yahoo的知識,很常獲得最佳解答的廣告效應嗎?考完期末考,要準備回

國的東西,也很忙.可是還是要儘量抽出時間來發表新的技術文章才行.

2011年10月16日 星期日

open office math 基礎用法

在底下的輸入框key入以下文字,然後按下工具列上方的"檢視"-->"文字模式",會列出對應的數學式子:

int from -1 to 1 X^n: 輸入含範圍的積分


------------------------------
X_{n+1}: 可以輸入下標字


2011年10月15日 星期六

"那些年 我們一起追的女孩"觀後感

看了那些年的小說之後, 起初是很替九把刀的失戀難過,可是仔細回想起來,

在認識的過程中,女主角其實都有給九把刀很多機會的,女主角應該是有打從

內心喜歡過九把刀,可惜的是九把刀,沒有好好把握住機會, 讓愛情之間的曖昧

轉化為平淡的友誼,九把刀讓我感覺到,有詩人的浪漫,卻沒有追求的勇氣,

似乎很會文藝創作的人,內心對於愛情常常會有一種過度的幻想,有點類似投射

作用,很容易把自己丟進去自己所創造的愛情空間裡面跟這種人談戀愛會處處

充滿驚喜和愉快,因為詩人性格很風趣又富有感情.,難怪那些會創

的人,感情的世界特別精采,等到真實的愛情要發生在自己身上時,反而會措手不

及,沒有準備,而錯失了緣分.實在可惜啊可惜. 我送他一首蘇永康的"舊愛還是最

美"當作句點.





QUT IT43 study experience!(QUT讀IT 的經驗)

維護舊有Java程式專案.

入學需求:
大學畢業成績要有4.5級分(大約是台灣的62~63分左右),2月和7月可以入學.

IELTS雅斯6.5(writing要6)可正式入學不用學語言課程,or IELTS6.0(writing 5.0)可讀

pathway.

所謂的pathway是說,因為一個學期要選四個unit,讀pathway的話,學校會預先好指定兩

門語言課程讓你修,修過了也是有算在畢業學分裡面. 如果雅斯成績只有5.5(writing 5.0)

的話還有一種
12~13週叫做eap的的語言課程可以上, 可是學費所費不貲,一週大概是

250~300澳幣之間,所以250*31(匯率)*12(週數)=93000元是這套語言課程大約的台幣

花費,因此我是建議還不如把這些錢,拿來台灣請外國人家教補習英文來的實際並且有

用,因為雅斯要考到6.0 OR 6.5真的不難.

QUT IT有兩種碩士課程Course work and Research可以選擇.


Course work有很多實際工作用的到的課程,就像QUT說的"A university for the real world." 而Research就要找指導教授,做專題研究.

Course work底下有

IT43(1.5 years)和IT44(Advanced,2 years)這兩個學位選項,差別在於讀IT44的話對於移民澳洲有用,好像可以拿來申請Temporary Resident.選擇好了要讀

的碩士學位,要選擇主修科目.底下我稍微介紹幾個比較多人選的主修的科目:

  • Digital Environments:數位環境,主要是在介紹web2.0以及一些網路bloger或新興社群網站

  • Enterprise Systems:企業系統, 重心放在SAP和ERP的學習,這算是滿熱門的一科

  • Games Design:遊戲設計,偏向實務上設計出遊戲,不過數理背景要強,才不會讀得很累

  • Games Production:遊戲產品,偏向商業模式的行銷

  • Network Management:網路管理,是一門學習cisco的課程,由ccna到ccnp,我有朋友正在準備ccie,也是選這門當作主修

  • Security:這門科目數理也要很好,因為要寫report和學習各式各樣的加解密演算法,從software到hardware的人員的權限控管都有教,這門主修很有潛力.

  • Software Architecture:軟體架構,偏向台灣的資工課程.
總共要修12各units.滿144學分(credits)才可以畢業,

在這裡要注意的地方是,每個主修(Major)都有固定要修的科目,一定要修,

在畢業證書上才會寫你是哪個Major畢業的,你也可以選擇沒有主修,

可是也是要符合12 units ,144 credits的規定,只是你可以上的課程比較多元

化,不會有主修的限制.

如果你想選讀research的課程,可是又不認識教授的話怎麼辦?

你可以先報course work的課程,然後在第一學期的時候,選有興趣的

科目去修,這樣的話你間接就可以知道,該找哪位教授指導,然後下學期就可

以一邊做研究,一邊修一門專門的論文寫作課. 不過雅斯要6.5較好,否則

的話,第一學期那兩門英文課,會佔據掉你原本可以選課的空間.

另一方面, 在12units裡面,你可以選4各屬於系外的units來修.

可是一定要屬於post graduate的課程才行,不可以選 under graduate的課程

    延伸閱讀:

Go to QUT study Mater of Information Technology Part I (去QUT(昆士蘭科技大學)讀IT Master 第一話)


行程安排應用程式

2011年10月14日 星期五

金融損失的看法

每次看到新聞在說某某事件,導致多少損失.我一直很不了解,一億美元,這種數字是怎

麼算出來的, 商品還沒有賣出去,怎麼就可以估說有賺一億的可能?或許賣不好賠更多

呢?真正的損失,應該是指自己銀行的戶頭,真的少了這筆錢,才是損失吧. 每次股市下

跌,都在喊市值少多少,那漲的時候為何不說,自己市值膨脹了多少.上漲的那些價值只

是虛幻的金融數字,只是一種迷思. 那些不是實際的金錢, 只是在玩數字遊戲罷了.只

有買在高點的人,有資格說自己賠錢,那些上市公司對於市值的減少,接受就對了,因為

那些本來就不是你的.

2011年10月10日 星期一

2011年10月3日 星期一

2012總統大選民調

很好奇地問,你會投誰?
沒有藍綠的謾罵和口水,單純表示會投誰即可,

2011年10月2日 星期日

Java this的用法

維護舊有Java程式專案

FB粉絲專頁
1. this可以用來存取物件的field(翻譯為 成員or欄位)

2.this搭配建構子(Constructor),可用於建構子之間的互相呼叫.




相關連結
http://goodideascome.blogspot.com/2011/10/java.html

寶寶命名網

Java初學者指引

1.先到官網讀教學文件,免錢的,而且要走coding這條路,多少都要碰英文.

http://download.oracle.com/javase/tutorial/

2.自己練習寫題目, 真的寫不出來,才去看答案或問人,從無到有寫出一個程式,

並且順利執行,才代表真的學會了

3.比較答案和自己的寫法,哪裡不同,這樣可以培養看懂別人程式碼的能力

4.Practice, Practice ,Practice.


5.如果想要鍛鍊自己的能力的話,可以找某一個open source project的原始碼來看.

6.然後考驗自己到底有沒有看懂, 可以去看此project的bug list,試著找出問題的解答.

或是看別人已經解好的討論串,裡面有很多寶貴的對話內容可以學習.

7. FB粉絲專業

常見的Java面試問題與答案1-10

常見的Java面試問題與答案11-20


2011年10月1日 星期六

十月第一天

我9月份雖然只發了10篇左右的文章,可是效果卻出奇的好,因為9月份的文章幾乎都有貢獻到,當月的

瀏覽次數,恩,要持續發有品質的好文,這個月我偶而會到Yahoo奇摩回答問題,然後把部落格的網址當

成參考連結,也達到了一點的廣告效果,因為有些流量是從yahoo來的,這部分也可以持續進行,7,8,9這

三個月的總瀏覽人數都有破100,這是好現象,尤其這些流量有很高的比例是從google搜尋到我的部落

格的,意味著我的搜尋排名有漸漸往前移動的趨勢.看了很多知名部落客的說法,大部分要到半年或一

年才會有明顯的流量成長,恩那我就繼續實驗下去

2011年9月22日 星期四

大盤盤整太久了

又大跌200點..這一個半月來,每天這樣多空雙殺,也玩夠了吧!!該走出一個行情來才對

2011年9月18日 星期日

程式語言排名

http://www.tiobe.com/index.php/paperinfo/tpci/Java.html

Java和C果然還是大幅領先的兩個主流程式語言.

可能是因為Android可以用Java開發圖形介面的關係,再加上Java的documnet很詳細內容很豐富,再加

上完整的物件導向特性,在網路應用領域佔有很大的地位.

至於C也能迎領風騷並不意外,因為C對於底層的溝通很強大(快速),這是無庸置疑的.

最令我驚訝的是VB,還排在前10名裡面,真是不容易, 這麼骨董的程式語言,還有為數不少的開發人員

在使用,可見很多公司都還有使用VB開發出來的程式才對.

2011年9月10日 星期六

c語言二維加法

先把10進位整數轉換為2進位,然後做2進位的加法運算;
2進為加法運算的概念是.
ie.11
101
+ 11
========
1000
1+1=2=1*2+0,,,c=1,, s=0;s代表相加後最右邊的位元,而c代表進位值
0+1+c=0+1+1=2=1*2+0;同理c1=1,s1=0;
1+1=2=1*2+0, c2=1, s=0
以下是運算的程式碼

進位轉換程式-C語言

利用除法求餘數的概念來寫的

行程安排應用程式

2011年9月9日 星期五

next permutation

next permutation的問題是說,假設有一組數字,希望找出大於這組數字的最小數字的排列組合.

2011年9月7日 星期三

大盤分析20110907

很明顯大盤企圖在7200~7500的範圍內打底

2011年9月5日 星期一

大盤分析(20110905)

有很多之前題材炒得沸沸揚揚的個股,融資餘額還是非常高,

有些都被追繳保證金了,還不賣出股票,

難道要等追繳第二或第三次後才是買點嗎?

保留銀彈,現在還不是進場買股票的時候.

觀察重點:
1.大盤是否能在7100~7200之間再打一次底

2011年9月1日 星期四

9月第一天

上個月訂的當月流覽人數200人,並未達成,分析原因後認為文章的質比量重要. 下個月的主軸便是加強文章的質.

2011年8月26日 星期五

C 雙重指標

雙重指標:a pointer to a pointer,意思就是存了一個記憶體位址的指標.

i.e




#include <stdlib.h>
#include <stdio.h>
void doublePointerPractice();

struct people{
    char name;
    int id;
};

typedef struct people * PeoplePtr;

int main(void){

    doublePointerPractice();
    return 0;

}

void doublePointerPractice(){

    PeoplePtr peoplePtr = (PeoplePtr)malloc(sizeof(PeoplePtr));
    peoplePtr->id = 12345;
    PeoplePtr * ptrPtr = &peoplePtr;
    printf("%d" , (*ptrPtr)->id );

}





c malloc,動態記憶體配置

malloc函式,要以需求的記憶體空間大小為參數,然後會回傳一個 void * (void 指

標:一種generic type),programmer要自己轉型為所要的指標型態.
在使用完之後

要用free函式釋放記憶體空間,避免 memory leak的發生.


i.e.

2011年8月24日 星期三

c string

C語言沒有字串型別,因此要用字元陣列,或者是字元指標來作為string type. 因為陣列的第一元素名稱可以當成address,所以也可傳入以指標為參數的函式.下面列出兩者的使用方式

2011年8月22日 星期一

外資只賣超2億?!!

外資只賣超2億,加上今天政府稍微有護盤,指數竟然還會下跌30點,並且有高達100點以上的長上影

線?那我很好奇到底是誰賣的?

2011年8月21日 星期日

投資股票要會判斷媒體訊息

之前大盤還在9200附近的時候,那一陣子媒體不是天天在喊多宏達電,一直喊到1300左右,

可是現在宏達電的股價呢?剩700多元而已,短短一個月左右的時間就賠掉一半的資金了.

在當時媒體營造出多頭大好的氣勢,大立光,辰鴻,宏達電的股王股后比價效應.在在讓投資大眾

失去戒心,逢高買股票,然後套牢的錢都被大戶及外資賺走了,一個月前還言猶在耳的利多呢?

現在紛紛調價目標價又是怎麼一回事?不過這同時也給了我們思考的空間,是否可以反媒體操作呢?

現在有媒體說會下跌,又有媒體說底部進了,要相信谁呢?媒體可以當做一種可信賴的反指標,

再搭配上自己的投資判斷,是比較合理可行的投資模式.

2011年8月18日 星期四

股市新聞聽聽就好

以本人自身的經驗來說, 於2011/6/21~6/27之間買進某檔股價很低的太陽能類股

只因為新聞報導有某電子公司老闆要收購這家公司的股份,並且很看好它的未來

確實,他有連拉三根漲停板,可是呢,他現在的股價遠低於當初新聞放出這則消息時的股價.

難怪有人說新聞都是落後指標,都是被拿來讓法人大戶脫手持股的工具.

唯有自己判斷量價結構才是真的, 股票要漲的話,新聞自然找得到漲的理由

股票要跌的話,還是有它的理由,

2011年8月17日 星期三

Java comparable

一般我們可以對數字做排序的動作,但對於物件呢?Java Collections這個類別有提供對於存放在

List的物件排序的方法. 我們只要另這個object實作Comparable 這個interface即可.


i.e.

2011年8月14日 星期日

Java copy file

Java Properties

讀取設定檔(好比JDBC的連線設定)的時候可以使用,
properties.txt是設定檔的名稱
設定檔的內容是 txt=hello
記得把設定檔放在根目錄,才找得到檔案

以下是source code




2011年8月13日 星期六

Graph Traversal --Java

基本作法要先把圖的資料存放成adjacent list
然後把每一筆list排序
把sample input排序後的資料要長成這樣
0:1 4 5
1:0 2 4
2:1 3
3:2 4
4:0 1 3
5:0
接著用queue來儲存breadth first
寬度優先所以要先把最前面列所有的資料存起來,只要不是root,也還沒visit過就可以存
然後逐次往後面的列重複去做.


用stack來儲存depth first的資料
因為是深度優先,所以要把每一列非root的第一筆資料存起來.只要不是root,也還沒visit過就可以存


input data:
1
6 7
0 1
0 5
4 3
2 3
0 4
1 4
2 1

source code:


2011年8月12日 星期五

Java IO -Java輸出入(console, file)

ie. from console ,使用者可從concole輸入,要顯示的文字.




ie. from file, 使用者讀取文字檔案,記得讀取檔案的地方要用絕對路徑







字串搜尋演算法-String Matching Horspool

這個演算法在長字串搜尋的時候,特別有效率.

在容器之間移動珠子

問題是這樣的假設有三個容器分別裝了1,2,3個珠子, 每次要從一個容器移動珠子到另一個容器,
移動規則是目的容器內的(珠子數量*2)-目前數量
i.e

default :1,2,3
step1 : 2 2 2 --> 1*2=2 , then 2-1=1,我們可以從2,or第三個容器拿出珠子放進
第一個容器.,在這個例子我選擇從第3個容器來取出珠子.

step2: 4,0,2-->移動規則同上,只要有其中一個容器內沒有珠子,動作就停止
所以我總共花了2步來達成目的.

當然預設值不會這麼簡單或這麼少,這只是舉例.

我目前有找出三個規則

s:small number
m:medium number
l:large number

1. s*2 <---- M : from medium to small
2. m*2 <----L: from large to medium
3. s*2 <----L : from large to small.

可是我找不到甚麼規則來決定我每一次
要用哪個規則拿珠子.

2011年8月11日 星期四

C++ STL vector

vector可以拿來代替陣列的使用,因為vector可以擴充size,而不必像陣列一樣要預先指定好陣列大小才可使用.

i.e.

2011年8月10日 星期三

學習程式設計

沒學過程式設計的新手,我建議要從Java開始學起,因為如果一

開始就學c or c++的話,會被指標和動態記憶體配置嚇到,然後

產生了程式設計好難學的想法,因為指標和動態記憶體配置這

兩個比較抽象偏難的主題,指標在Java已不存在(除非要使用

JNI,這又是另一個話題了),動態記憶體方面,JVM已經幫你做

好了,你只要專注在邏輯實現即可.另一方面,寫程式難免要用

到資料結構,這又是另一個會讓初學程式設計的人會產生恐懼

的主題,而Java已經幫你實現了許多常用到的資料結構,諸如

List , Set, Map.Queue ....等. 在實際應用方面,在104以Java為

關鍵字去尋找工作項目,有很多選擇.這會讓人有動力,不會覺

得學了程式語言,我以後能幹嘛的困惑.另一個實用面在

Android上面,因為現在Android的使用者介面是用Java寫的,

如果專注在這個領域,也很有發展潛力.以上是個人接觸程

式語言到目前為止的心得分享

c++ 優點

最近發現c++真是好物,不輸c的efficient以及直接和​hard ware溝通的便利性,又有物件導向的功能,我用一模一樣的程式​架構去解同一題acm的題目,Java要花0.227秒,c++​只要0.15秒左右就好了,

C++ STL List

list也可以當成stack來使用,因為他的輸出值也是先進後出的一種structure,我的例子是使用了list 內建的sort algorithm,使他照數字由小到大,排列輸出.

i.e.

C++ STL queue

Queue是先進先出的結構,和Stack,先進後出的結構不同,這兩個是很實用的資料結構!

i.e:

2011年8月9日 星期二

C++ stl stack

c++的stack用法,stack是 FILO(First In Last Out)

2011年8月8日 星期一

大學錄取率新低!!

看到90.44%是錄取率新低整個無言,莊孝維那以前我們的錄取​率只有50%
或甚至更少的時候,不是低到不行了!!大學生太多了,每個人均貧​薪水一定拉不起來的嘛


放空勝華

因為:
1:融資水位很高
2:跌破長天期均線
3.觸控題材回歸基本面,
基本上面板就是容易跌價的商品,
看看友達奇美便可略知一二.

西藏歷史

很好奇西藏和中國政府的關係,在google搜尋到這篇分析很精闢的文章,貼上來分享.

台股大盤

今天台指期高低差有500點,這算還好,還看過台指期漲停收盤的​哩!因為本人正是

受害者,兩口小台空單當場被抬出去!!!!馬先生上台後的高點,從上任到現在

都還沒回去過,真是@#@%$@!
美國和歐洲又陷入財務危機,逢低還是先觀望好了.

等稍微有小盤整一段時間才決定要不要進場,
現在殺聲震天,隨便逢低買進都有風

險. 個股的友達就是明顯例子,明明已經跌到歷史低點了,沒想到現在還連破好幾

次低點,就知道在勢頭不好的時候低點總是越低,勢頭好的時候,再這麼貴都有人買!!

c string(c 字串)

C語言採用字元陣列的方法來表示字串.

C structure

structure這個reserved word可以被用來使用者自訂義的資料型態,可是struct只有property(屬性),並沒有物件的方法. struct定義的型態也是使用'.'運算子來存取資料成員.

i.e:

C type size (型態大小)

我們可以用sizeof來求得某個型態的大小,也就是使用多少記憶體空間來儲存資料

i.e.



由此可知指標都是4 bytes空間,結構則為8 bytes.

C io(C語言 輸出與輸入)

讀取單一字元和印出單一字元用getchar() and putchar() as following sample



讀取字串和印出字串用scanf ,printf ,如下例子:



getchar為讀取字元,特別的地方在於,讀入的字元若為數字,也可以拿來作為logic 的comparison(比較)

i.e:

2011年8月7日 星期日

澳洲旅遊推薦

點標題列的連結.
這個blog有圖片和精彩的文字介紹,如何在澳洲旅遊,還有哪些必去的景點喔

賣掉教科書的罪惡感

前幾天把一本上學期的必修教科書賣掉,原本很高興有人要買二手書,可是等到正式和買

方一手交錢,一手交書的時候,心裡忽然聽到書在吶喊:"你為什麼不要我了",心頭一陣酸,

可是總不能反悔不賣吧.,之前賣電腦書的時候,並沒有這麼罪惡感阿.可能是因為這本書,

好歹也陪我一學期,每次上課都要帶著他,雖然平心而論,我真的沒有翻過這本書幾次,因

為這是一本教專案管理的書,本來管理學就不是很有趣的課程了,再加上我是讀英文版

的,那種感覺是一拿起書本,不到10分就會睡著了.沒想到這樣一本書竟然會引起我內心

這麼大的漣漪,真是始料未及阿.不過後來我想想,我當初也是跟人家二手買來的,現在只

不過用同樣的方式,幫這本書找到了另一個主人,和另一個家這樣而已,或許這樣想會讓

我的罪惡感降低一些.

英文字根和字首


在學習英文的過程中,常常會發現某些英文字首會代表一個意義,好比:abnormal(不標準),

amoral(不道德),或是字尾也有代表的意思,好比suspect(懷疑), expect(期待), 都有一種預測的意涵在,

只是意涵是正面或負面,在網路上找資料的過程中,發現了一個很不錯的網站,有詳細的提供這些資訊,

我列出網址,讓大家參考English Grammar


繁體字與簡體字

本文轉貼自angeltsai


對何懷碩教授『繁體與簡體』一文的回應
作者..何為

何懷碩教授的藝術家風骨與見識,素為筆者所敬仰,頃讀中國時報九五年四月十七日副刊 『繁體與簡體』一文,雖對繁、簡之爭具有某些釐清作用,但筆者覺得有三部份值得商討:(一)忽略中共簡體字的動機與歷史。(二)過度美化中共簡體字。(三)過度期待簡體字。

簡體字來源最多的就是錯別字,一個人寫錯是錯字,但很多人都這樣錯、約定成俗,雖不滿意也接受了,就保留下來了。所以簡體自古已有之,但中共卻一口氣造了許多簡體字,以致有人以為中共發明簡體字。但中共這些簡體字和傳統的簡體字有許多不同。

(一)中共簡體字的動機與歷史
1.中共的簡體字來自自卑與仇恨。
漢字自倉頡以來,受中國人所尊崇。倉頡在南北朝入祀孔廟,民間對寫有漢字的紙片都不敢隨意丟棄,必須集中到『敬字亭』燒毀,燒成灰還不能當成垃圾,必須集中保存,再擇日誦經祭祀後才放水流。台灣保存傳統文化較多的客家聚落,今日仍保有此風。

鴉片戰爭慘敗,民族自信崩解,知識份子起而改革腐敗的政治,有些則選擇改革文化、文字。政治改革的屢屢受挫,鬱憤之心,轉而仇視文化、文字。清末民初,更加激烈。

錢玄同:『欲袪除三綱五倫之奴隸道德,當以廢孔學為唯一的辦法。』『廢記載孔門學說及道教妖言的漢文,尤為根本解決之解決。』

共產黨承襲這股自卑仇恨的思潮,共黨總書記、文字專家瞿秋白說:『漢字真正是世界上最齷齪、最惡劣、最混蛋的中世紀茅坑。』瞿秋白在毛澤東的指示下,對漢字的拉丁化、簡化,做了不少工作(拉丁化是指用字母代替漢字)。

共黨文化旗手魯迅:『漢字是勞苦大眾的結核。』『倘不除去,只有自己死。』可是等來等去,漢字沒有死,魯迅只好『自己死』。

這些充滿憤激、自卑、仇視的思潮,正是中共推行簡化的動力。


2.中共簡字意在消滅漢字進而消滅傳統文化
中國的歷史,多災多難,遺忘是痛苦中最好的選擇,中國有最久遠的歷史,也有最會遺忘歷史的子民。回頭看一看,歷史不遠,簡體字不是中共的最愛。正體字、簡 體字都是中共要消滅的對象,只是時程的先後而已。1936年毛澤東在延安說:『如果我們要創立一種新社會文化(共產文化),我們非廢除中國方塊字不可。』

執政後1951年毛澤東指示:『文字改革要走世界文字的共同方向--拼音化。』『在實現拼音化以前,應先簡化漢字。』『文字改革』,不是『文字改進』,革 就是革命,革掉你的命、革掉他的命、革掉漢字的命。那到今天為何沒有革掉漢字的命呢?甚至到全世界設立孔子學院呢?因為發現這種虛假的漢字--簡字,(簡 體字的虛假,請看拙文:簡體字簡掉了什麼)拿來作為愚民的工具,已經綽綽有餘。現在中共的文字專家說簡體字多美、多好,似乎太健忘了,也沒有遵照毛主席的 路線。照見歷史,才能照見自己。


3.來自政治高壓
過去的簡體字都是歷經久遠的年代,經過無數人的選擇淘汰,而留存下來,也許不合六書,但至少約定成俗了。秦始皇『書同文』推行小篆,禁絕與小篆不合的文 字,但秦始皇並沒有自己造字、改字,少數政治人物,配合一些御用專家來製造簡體字,違反文字自然之理,最後必遭自然力的反撲。

4.反客為主
過去也好、現在也好、喜歡也好、討厭也好、簡體字一直生存在我們周遭,但我們清楚,簡體字是正字的輔助,補漢字的不足--難寫,但不能代替,因簡字缺乏秩 序和內涵,用多了會亂。如今正體字成為違禁品,顛倒是非、反客為主。你可以不喜歡好人,但你總不能禁止別人去做好人吧!


(二)過度美化簡體字
中共的簡體字和何教授心中的簡體字是有很大的差距,不知是出於藝術家的天真?還是被所謂文字專家所迷惑?何教授文中對簡體字過度美化的有:
1.『大陸簡體字是動員許多專家學者研擬製定的』,依此看來,簡體字好像是這些專家嘔心瀝血的結晶,學術性無庸置疑。這裏頭有許多陷阱,首先再偉大的帝 王、總統、專家都沒有資格去造字,除非所有使用該文字的人絕大多人同意。其次專制高壓下的學者專家,必然是政策的工具而已,談不上獨立思考。

何教授文中說:『­漢字是簡體對呢?還是繁體對呢?我的回答是兩者都有偏失。』既然簡、繁各有偏失,簡體不過是以偏代偏而已,簡體既非十全十美,當年推行 時上百上千的文字專家,有哪一個提出異議。倒是古文字學家唐蘭,在文革後,來到香港中文大學,嘆了一口氣說:『有句話,過去不敢說,現在要講,漢字是不應 該簡化的。』


2.『簡體字即使新創,也有文字學的某些依據』
這些話,出自大師之口,真叫我駭異無名,連中共御用專家聽到都會承擔不起,說:『不敢當、不敢當。』

廠→厂, 衛→卫, 從→从, 幣→币, 葉→叶。

這種隨心所欲,我喜歡就好的新創字,和火星文有何兩樣呢?居然也有『文字學的某些依據。』照這樣推下去,國中生那些火星文,也是學術作品了。葉在甲骨文上 是一棵樹上有三片美麗的葉子,到了楷書已失去原貌,但至少保留草字頭和木字和葉有關的部份,叶,有誰家的樹葉是這樣的呢?50年來,十幾億中國人,有誰敢 向政府嗆聲,這個字要改,它不像漢字,用這種漢字,真是丟祖先的臉。


3.『事實上簡體字對中國傳統文化的繼承與傳揚毫無影響』
這種完全是『主觀的期待』而已,既天真又危險。使用不同的工具,會產生不同的觀點。走路和開車的人,對交通問題,會有不同的觀點。看看歷史,日據時代,日 本對漢字百般壓迫,漢字老師由公立學校退守私塾,最後退守到廟宇,孔子不語怪力亂神。如今要靠神明保佑,其中的艱辛,難道只為了固執?日文也是由漢字簡化 的啊!日文中也有漢字也有四書五經啊!現在的『啟明堂』就是當年留下漢字香火的見證。

繁簡的筆畫不同,承載的內涵也隨之而異。以義字來說中國人重義,交朋友講義氣、做人守信義、為官要主持正義。桃園三結義、關公義薄雲天,千古美談。義之所 在,不問利害,不計成敗,赴湯蹈火、在所不辭。中國人為什麼能這樣做呢?倉頡造字時,已把這些內涵灌注在筆畫當中。義上面是羊,羊肉美味滋補、羊性溫馴, 是美好吉祥的象徵,正好用來當供品。下面是我,為了美好的事物,把我自己當成供品,無私的奉獻,在用字的潛移默化中,義成為中國人生命深處的一部份。

簡體的义,一個大叉叉,加上斜斜的一點,三畫都是斜斜又邪邪的。國共二次和談,國民黨二次都吃悶虧,因國民黨不了解中共的信義只是斜斜的三畫而已。義和义不一樣,肖万长也不等於蕭萬長。


4.(簡體字)『其中多數古已有之的寫法』
這是事實,古已有之,有錯錯在古人不在中共。很迷惑人的理由。有些簡體字出現了幾百年了,為何不扶正成為正體呢?古人知道,簡體好寫但會亂。簡字缺乏秩序 理路,用多會亂。宋以來畫的簡字有  、 、 、 、 ,5種。歸有  、 、、 、 、 ,6種。寫有 、 、 、 、 、 、 、 ,8種。多一點少一點,誰是誰非?標準何在?誰來做決定?如果毛澤東可以做決定?那蔣介石也可以改吧?改來改去,不亂都不行。

聖在甲骨文是一個人,有個大耳朵、大嘴巴,大耳要聽得清、大口要說得明,神聖的字簡成怪裏怪氣的〔圣〕,從元朝開始,低文化的蒙古人痛恨儒家讀書人,人的 階級是『一官、二吏....八娼、九儒、十丐。』還好,此乞丐高一級,中共給讀書人的綽號『臭老九』就是從這兒來的。理所當然這怪怪的〔圣〕,就登上主角 了。



(三)、過度期待簡體字
『我敢預測:未來無關統獨....最後漢字,必完全簡化了』,何教授在最後已經聲明,這只是『帶著主觀的期待。』一個人有各式各樣的期待、願望,都是好 事。就像花了50元,對著彩券,我們可以有無窮的期待,但以何教授的德高望重,一向不輕易評論事物,如此樂觀的期待,必有他的理由。但對這樣一個文化上如 此重要的課題,如果只是純粹是主觀的願望,我想是有虧長者的風範。我願提出一些事實,供大家思考。

漢字一直在簡化,這是事實,因為人有貪小便宜的天性。但人也有求秩序穩定的天性,所以漢字也一直在繁化。甲骨文約有4500字,到了漢代的說文解字有 9340字,宋代廣韻有26194字。到康熙字典有47043字。簡化是主觀的願望,繁化是文化進步的必須。牛津英文字典早已超過三十萬字,英文還是每天 大約要增加二個生字,為何英文文字專家不規定每一個英文字的字母不能超過五個呢?這樣不是更有學習效率嗎?漢字減少筆畫,對書寫是有節省時間的效果。但漢 字減少筆畫,使漢字失去理路,提高相似度,容易混淆,增加辨認時間,並不能提高學習的效率,對消滅文盲也沒有多少幫助,文盲多少和政治經濟文化有關,和文 字難易無關。非洲文盲多是因為漢字難嗎?消除文盲是中共推行簡字的最大藉口。

簡體字的後遺症--亂,在大陸已逐漸浮現,加上經濟的開放,一些大膽的文字學家開始對簡體字提出質疑,繁體字在大陸經歷50年的高壓打擊,並沒有消聲匿 跡,中共對異己的排除是極為徹底的。法定的簡體字--『規範漢字』,歷經50年的高壓灌輸,並沒有約定成俗,繁體字有如雨後春筍,中共政府須要不時的三令 五申,來打擊不規範字--主角是繁體字。御用的文字專家也不時呼籲珍惜漢字。
事實的情況呢?簡體字在官文書、報紙、雜誌、書籍是相當統一的。但比較能表達個人好惡的私文書方面,廣告、招牌、信函則規範簡體字,不規範簡體字,地區通 用簡體字,個人自創的簡體字、繁體字...什麼都有。廈門街市招牌繁體字氾濫,驚動中央,派出委員到廈門檢查用字,廈門大學許長安教授描述:『廣告招牌是 用幾萬、幾十萬元精製而成,但出乎我的意外,短短幾個月,全市百分之百得到整改。』『舉報不規範用字的電話每天不斷..』,令人想起『檢舉匪諜,人人有 責』的年代,商家為什麼要冒著幾萬、幾十萬泡湯的危險,一定要用繁體字呢?不會是台商思念台灣的正體漢字吧?何況『濫用繁體字』是普遍的現象。如果簡體真 的那麼好,50年的高壓,為何還不能習慣成自然呢?

「冥冥之中,自有天數」,很多事物,不是人力所能決定的。當年如果不是潘重規教授的一篇文章,台灣早就簡體化了,也沒有今天所謂繁、簡之爭,天下定於一 尊。在1954年,曾任北大校長,時任考試院副院長兼黨史編委會主任羅家倫寫了一篇三萬多字的長文,『簡體字之提倡甚為必要』,在全台各大報同時刊登,文 中提出『中國字要簡化,才能保存、才能適合現時代中國民族生存的需要』,以羅的學術地位、官位之高,當然風起雲湧,反對者亦復不少,但難以撼動。黨史編委 官不大,但必須是當權者的心腹,才有機會當的。師大教授潘重規以學術立場,揭發羅文中有關古文字的論證,其中有多處造假,論證造假,這是非常嚴重的瑕疵, 從此羅無法理直氣壯,提倡簡字也漸趨沉寂。正體漢字本已危在旦夕,幸賴潘公大筆一揮,漢字香火得以綿綿不絕。
如今大陸比較有知識良知的學者,相繼提出自己的看法,2004年在北京召開第三屆文史資料研討會,文史專家許逸民在會中提出『繁體字是創造文史資料庫的基 本學術要求。』真正的學術--至少文史方面,須要純正的漢字來做載體。大陸著名經濟學家茅于軾語重心長地提出:『建議在小學選讀繁體字,因為簡體字使中國 偉大的古文化和廣大的人民相隔離。』經濟學家的呼籲,是否隱含失去傳統文化的個人,他的品質下降,連帶他的產品品質也跟著下降呢?

簡體字,只有漢字的外形,缺乏漢字的內涵,是一種虛假的漢字,長久使用這種虛假的工具,潛移默化中造成虛偽的文化。就像使用假鈔,最後不但破壞經濟,也傷 害人與人的誠信。華僑回國,外國人踏入中國,第一個強烈的感受就是〝假〞,什麼都假、假話、假藥、假奶粉...假來假去,虛情假意。中國已成世界最大的假 國。2005年美國貿易代表署的年度報告中,特別指出:美國對外貿易中,最感頭痛的問題,就是中國大陸的盜版、仿冒品的猖獗。在網路上打出『誠信危機』會 讓人看得心驚肉跳,政治誠信危機、經濟誠信危機、學術誠信危機、婚姻誠信危機...真是危機四伏,北京航空大學招生,該校教授龐宏冰拿著七份錄取通知單, 千里迢迢到廣西,向考取的家長索賄十萬元,否則拿不到錄取通知...無論是繁體、是簡體,事件的主角絕大部份是中國大陸出產的。一個自古以「禮義之邦」著 稱的社會,不出幾十年,轉變成一個造假王國,沒有內涵的文字是有深沉的影響的。

(四)、結語
在一個正常的社會,一間百年老屋,即使斑駁老舊,人們也會珍惜;一千多年的正體漢字,有何罪過,竟被蹧蹋成「非法」,成為打擊的對象,天理何在?炎黃子 孫,難道鐵石心腸?當年凌遲漢字,宣揚孔孟為「政治騙子」的文字專家,如今在孔子學院,夸夸高談發揚傳統優良文化,如果世人也信以為真,那真叫人有不知 「今世何世」之嘆。當年漢字拉丁化如火如荼,瑞典漢學家高本漢勸阻說:『中國人必毀棄此種文字,此乃自願摧毀中國文化基礎而降服於他人。』
二千多萬人面對十幾億人的簡體字,壓力是夠大的。為了現實、為了流行,我們可以學、可以用--事實上這也不難。但如果因此就要說簡體字多好、多妙,就未免 太自卑了。流行自有它的道理,但不一定是美的、也不一定是對的。秦始皇強行統一小篆,秦短命、小篆也短命,武則天聰明絕頂,花了15年創造了18個新字, 人亡字亡,現只存一個『曌』字,靠著是武則天的名字而保留下來。古今中外,無論民主或獨裁,沒有一個政黨能永遠執政,屆時新人新政...。何況大陸呼籲漢 字回歸正統的呼聲,此起彼落。為了減少壓力,他們起了一個嶄新的名詞--漢字的優化避開了敏感的繁、簡之爭,但大家想一想,對簡體字而言,優化是向簡化靠 近,還是向繁化靠近呢?
順水推舟,隨波逐流,有事半功倍的暢快。逆水行舟,中流砥柱,也才能體會捨我其誰的氣概。
星星之火,亦可燎原,何況天命在我而不在彼,在此正體漢字艱難的時刻,如何豐富正體字的作品,願大家思之,勉之。 

完註一..中時副刊推出..繁體正字之美..系列文章.主菜尚未上桌..先來何懷碩教的麻辣前菜.宣告繁體正字的死刑 中時的用心.殊為詭異..乃以此文就教於何教授.惟中時未刊

程式作業Q&A

如果你有Java的程式作業,想要討論的話,可以在這個討論串回文.

2011年8月6日 星期六

JSP pagecontext

page scope:只可在同一個page頁面內存取,一旦page把資料處理完return回browser之後,資料就不在可用.


request scope:處理同一個request的各個頁面都可以存取,一旦container(Tomcat or other application server)處理完這筆請求,資料才會被release

session scope:同一個session的頁面都可以存取,session的範圍是從1.user打開browser到關掉browser為止, 或2.user連到別的網站, 或3.系統設計者在user log out時自動銷毀.

application:同一個應用程式內的jsp pages都看的到,使用上要小心, 別任意改動application scope的變數值,因為很可能別的jsp page需要用到,一般來說這個範圍適用於read only的變數

jsp servletcontext application

application是一個可以存取servlet context的隱含物件,而jsp本身便是一個servlet,,因此 getServletContext().getAttribute("name") 和application.getAttribute("name")意思一樣,不過要避免在jsp使用此作法,最好是在後台的servlet便用 request設好值,jsp只要負責讀取

Java if 用法

維護舊有的Java程式專案

FB粉絲專頁
以下示範Java的邏輯判斷使用方式, 當要判斷的項目有1項,2項,或3項,時要如何寫:



行程安排應用程式

寶寶命名網

Java private final int


private final int--->因為final關鍵字的關係,int的值不可更改.
private int---->沒有final,所以可以指派int的值.
兩者宣告為private之後,只可在宣告的類別內使用.
加上final的用法,通常為PI等常數值的時候會使用.

2的補數(two's complement)

電腦儲存資料是用二進位的方式, 也就是binary. 最左邊的bit若為

0則代表+,若為1代表-
但是正負符號的要如何儲存在記憶體呢?

我們可
以使用2的補數系統來儲存.以下列出如何把一個負整

數轉化為2的補數的表示法.


我們以數字-36為例:

首先+36的二進位表示法為: 00100100

然後把每一個bit的0-->1,1--->0,變成11011011

然後從右端加入1個bit,變成 11011100

<2的補數轉回負整數>

也是一樣先轉化0為1,1為0
. 然後加1.

ex:
1111 1111
--->0000 0000
--->0000 0001
---> -1

<2的補數運算>
1.兩個正整數相加: 3+8=11

0000 0011 3
+0000 1000 8
-------------
0000 1011 11

2.兩個正整數相減: 8-3=8+(-3)=5

-3

0000 0000 0000 0011
-->1111 1111 1111 1100
-->1111 1111 1111
1101
so
0000 0000 0000 1000 (8)
+ 1111 1111 1111 1101 (-3)
----------------------------
0000 0000 0000 0101

3.小正整數減大正整數: 3-8=3+(-8)=-5

-8

-->000 1000
-->1111 0111
-->1111 1000

so
0000 0011
+ 1111 1000
---------------
1111 1011
由以下逆推得知1111 1011為-5
-->0000 0100
-->0000 0101= 5

2011年8月5日 星期五

Java字串(Java String)-->空格和空行的不同

如下例,以下三者是代表不同意思喔:

梁靜茹大手牽小手的日文版歌詞ー 風になる

忘れていた目を閉じて 取り戻せ恋のうた
青空に隠れている 手を伸ばしてもう一度


忘れないですぐそばに 僕がいるいつの日も
星空を眺めている 一人きりの夜明けも

たった一つの心 悲しみに暮れないで
君のためいきなんて 春風に変えてやる

陽のあたる坂道を 自転車で駆けのぼる
君と失くした 想い出乗せて行くよ

ララララ 口ずさむ くちびるを染めて行く
君と見つけた しあわせ 花のように
-----------------------------------------

忘れていた窓開けて 走り出せ恋のうた
青空に託している 手をかざしてもう一度

忘れないよすぐそばに 君がいるいつの日も
星空に輝いてる 涙揺れる明日も

たった一つの言葉 この胸に抱きしめて
君のため僕は今 春風に吹かれてる

陽のあたる坂道を 自転車で駆けのぼる
君と誓った約束 乗せて行くよ

ララララ 口ずさむ くちびるを染めて行く
君と出会えた しあわせ 祈るように
-----------------------------------------

陽のあたる坂道を 自転車で駆けのぼる
君と誓った約束 乗せて行くよ

ララララ 口ずさむ くちびるを染めて行く
君と出会えた しあわせ 祈るように
君と出会えた しあわせ 祈るように

2011年8月1日 星期一

如何選網球拍

根據自己目前的程度來買球拍.



初學: 若為成年人或是女性,要買球拍重量輕(可以打比較久,手也不會酸),拍面很大

(比較容易打得到)
, 拍子稍長(有些球來不及跑到定位,拍子長一點可以彌補)
.以下列出一

些符合以上範圍的參考數字,這些資料在你選購球拍的時候都可以在球拍資料的貼紙上

找到.

重量 : 8-9.5 ounces
拍面: 107-135 square inches
長度: 27-29 inches

中級: 適合找靈敏或操控性較高的球拍.這類球拍比起初學者在使用的球拍,來的稍為重

一點,牌面小一點,拍子長一點.以下列出一些符合以上範圍的參考數字

重量 : 9.5-11 ounces
拍面: 95-102 square inches
長度 27.5- 28 inches.

進階: 專注在球拍操控性.較細的球拍骨架

重量 : 11.5-13+ ounces
拍面:85-98 inches

一些球拍性質的介紹

  • 球拍重量: 太重的球拍拿久了手會痠,太輕的球拍打起來沒有power. 但是輕的球拍比較容易控制. 整體而言,重的球拍有力,穩定, 擊球時會比較不會傳導太多震動到手.相反的輕的球拍很容易揮空拍.
  • 球拍面寬:大面寬的球拍有power,而且可以擊球的甜點相對多.
  • 球拍長度:在球快落地的時候好救球,但太長的話也會失去控制度.
  • 球拍線的張力:張力低的話可以減少擊球的震動,張力高的話,球速會較快,也比較好控制球的方向.

  • 球拍握柄:手小的人適合 1/8-3/8的size, 大一點的適合1/2 size, 在更大的話可以選3/8的size

8月的第一天

新月份的第一天,網頁瀏覽數也重新開始歸0計算.自己上網到Google用關鍵字查我自己

發表的文章,竟然在第一頁第一條就出現了,呵,,還挺興奮的.我遠本還以為會被排到很後

面去呢.我的blog沒有加入其他blog的連結,google也找得到, 證明了google的搜尋技術確實

很踏實,不會因為我沒有加入連結,就忽視我這個小blog的存在,這個月希望當月份的瀏覽人

數能夠提升到200人,恩有目標就有方向,GO GO GO!!

什麼是64位元處理器.

所謂的64位元架構,指的是記憶體的位址,或是說其他的資料單元最大的儲存單位是64個

bits.就是說有2的64次方種可能性 因此作業系統也要能夠處理64位元的資料量,並且採用

模擬的方式來向下相容32位元的資料格式.

數字系統

Natural NOs,自然數: 也就是正整數如1,2,3,4 ......
Integer NOs,整數: -3,-2,-1,1,2,3等,不包含0.
Rational NOs,有理數: p/q, q!=0, 要注意的地方是p/q的小數點部分為有限或是循環才是有理數.
Irrational NOs,無理數:等小數部分為無限且不循環.

2011年7月31日 星期日

賽德克巴萊(Seediq Bale)曾經被改成大陸拍的!!!

請看下列Link:
威尼斯演展官網

並比較下圖

電腦數字系統轉換







我是台灣人!!

目前住在台灣這片土地上的人,不能否認身上或多或少有帶著中國的​傳統和悠久歷史文化的血液,但也不能否認,你現在住的這塊土地是​台灣,不是中國!!!更不是中華民國.就像美國人的祖先大部分是​從英國來的,美國人也不會說自己是英國人,這就是所謂的落地生根​, 我文化上認同我所知所學的傳統中國文化,可是我在政治立場上,一​定要堅持我是台灣人,不是中國人,這兩點要分開來看,不能混為一​談.現在就是太多人搞不清楚這之間的分別,才一直誤以為自己是中​國人!!

2011年7月30日 星期六

BBS鄉民小劇場短片收集

現在鄉民小劇場太熱門了,不免俗的也來收集這些小劇場,一次可以看全部.















2011年7月29日 星期五

ACM-3n+1 Problem

It is a Java solution.
You should focus on the green part and fix input part for your use.


package acm;

import java.io.*;
import java.util.*;

public class ThreeNPlusOne {
public static void main(String[] args) throws IOException {
ArrayList<String> userInput = new ArrayList<String>();
int intCases = 0;
System.out.println("How many test cases to run?");
BufferedReader bs = new BufferedReader(new InputStreamReader(System.in));
String cases = bs.readLine();
intCases = Integer.parseInt(cases);
while (intCases != userInput.size()) {
System.out
.println("Please enter 2 numbers m and n,separate them by dot.");
userInput.add(bs.readLine());
}
Iterator it = userInput.iterator();
while (it.hasNext()) {
String numbers = (String) (it.next());
int[] ns = getInts(numbers);
int first = ns[0];
int second = ns[1];
System.out.println(first + " " + second + " "+ threeN(first, second));
}

}

public static int threeN(int a, int b) {
int max= 0;
for (int i = a; i <= b; ) {
int tmp=i;
int count = 0;
while (true) {
count++;
if (i == 1) {
break;
} else {
if (i % 2 != 0) {
i = 3 * i + 1;
} else {
i /= 2;
}
}
}
if (count > max) {
max = count;
}
i=++tmp;
}
return max;
}

public static int[] getInts(String str) {
int totalNumbers = str.split(",").length;
int[] ints = new int[totalNumbers];
for (int i = 0; i < totalNumbers; i++) {
ints[i] = Integer.parseInt(str.split(",")[i].trim());
}
return ints;
}

}

CPU 規格解釋

Processor Number:用來區別同一公司的不同產品的編號.

#cores:有多少個核心在一顆cpu上.

#threads:一個核心有一個process,一個process有一個thread.

clock speed:時脈,也就是頻率.
i.e:
2 MHz (2 million cycles/second):每秒執行2百萬次運算.
3 GHz (3 billion cycles/second):每秒執行30億次運算.
cpu執行的速度越快,價格當然越高.

L2 cache:cpu每次會從ram,也就是記憶體裡面拿資料出來做運算,但因為cpu速度太快了,因此處理器製造商,便在cpu和記憶體之間加了諸如L1, L2的cache(快取記憶體)來當作橋樑,也就是
cpu-L2 cache(Store data)-physical memory

FSB Speed: Front side bus又稱為north bridge or 北橋, 負責處理cpu和記憶體的溝通,
通常L2 cache包含在FSB裡面.速度當然是越快越好.

Lithography:製程. 每個製成會使用到不同的化學方法或物理方法來製造這各chip,數字越小代表需要越先進的技術來開發,想當然爾會越貴

Max TDP(Thermal design power):cpu運算會產生熱,這個數字代表冷卻系統需要耗費多少瓦特的電力來散熱,所以越快的cpu比起低階的cpu,會更快產生更多的熱,因此也就耗電.

部落格經營記事--當月瀏覽人次首度超過100

賀,我的部落格這個月竟然瀏覽人次超過100哩,超乎我預期,之前有一搭沒一搭的寫,所以來逛的人也

是稀稀疏疏的,因此我下定決心每天至少要發2~3篇文章才可以,我把部落格當成小花圃一般來照料,

果然有付出,月底就看到收穫了.很高興,要再接再厲的發文才行.

2011年7月28日 星期四

ACM-light, more light problem

According to the "Mathematical Induction", we found out that when the serial are 1,4,9,16 ...the final bulb is on ,which means that number has a square root . On the other hand, besides those numbers, the bulb is off. Therefore , following is my Java solution:

ACM-Greatest Common Denominator

It is a Java based solution. The operation is dividing the two numbers mutually until one of them equals zero. The green part is the main mechanism .


package acm;

import java.io.*;
import java.util.*;

public class GCD {
public static void main(String[] args) throws IOException {
ArrayList<String> userInput = new ArrayList<String>();
while (true) {
int intCases = 0;
System.out.println("How many test cases to run?(from 1 to 1000)?");
BufferedReader bs = new BufferedReader(new InputStreamReader(
System.in));
String cases = bs.readLine();
intCases = Integer.parseInt(cases);
if (intCases < 1 || intCases > 1000) {
System.out.println("Please enter a valid number!!");
} else {
System.out.println("Please enter 2 numbers m and n,separate them by dot.");
System.out.println("ex: 12,60");
while (intCases != userInput.size()) {
userInput.add(bs.readLine());
}
break;
}
}
Iterator it=userInput.iterator();
while(it.hasNext()){
String numbers=(String)(it.next());
int[] ns=getInts(numbers);
System.out.println(gcd(ns[0],ns[1]));
}

}

public static int gcd(int a, int b) {
while (a != 0 && b != 0) {
if (a > b)
a %= b;
else
b %= a;
}
if (a == 0)
return b;
else
return a;
}


public static int[] getInts(String str){
int totalNumbers=str.split(",").length;
int[] ints=new int[totalNumbers];
for(int i=0;i<totalNumbers;i++){
ints[i]=Integer.parseInt(str.split(",")[i]);
}
return ints;
}

}

2011年7月27日 星期三

數學相關單字的英翻中

radical sign:根號
exponential equation:指數方程式.
quadratic :二次方程式.
asymptotes:漸進線
instantaneous:瞬間
substitution:代換
conjugate : 共軛的
slope: 斜率
quotient:商,除的意思
tangent: 切線
secant:割線
steeper:陡峭的
workbook練習本
power:次方
hypotenuse:斜邊
adjacent:鄰邊
products:乘積
concavity: 凹度
time span:時間寬度
rectangle:矩形
Integration: Backwards Differentiation
QUADRATIC:二次
denominator:分母
perpendicular:垂直
composition:構成,成分,組成
symmetry:對稱
vertex: 頂點
polynomial: 多項式
sketch:畫輪廓
conic:錐
parabola :拋物線
intercept:截取
ellipses:橢圓

2011年7月25日 星期一

OpenMP-shared for loop



#include <omp.h>
#include <iostream>
using namespace std;
int main() {
int n=10;
#pragma omp parallel shared(n)
{
#pragma omp for
for (int i=0; i<n; i++)
cout <<"Thread "<<omp_get_thread_num()<<" executes loop iteration "<< i<<endl;
}
return 0;
}



references:
OpenMP Official Web sites
Using OpenMP: Portable Shared Memory Parallel Programming

OpenMP-Parallel Constructor

Parallel constructor(平行結構):可以告訴compile,以下的程式碼要用parallel 的方式執行,
並且程式設計師也可以運用此結構,來個別定義thread的行為.
i.e.

#include <omp.h>
#include <iostream>
using namespace std;
int main() {
#pragma omp parallel
{
cout <<"The parallel region is executed by thread "<<omp_get_thread_num();
if (omp_get_thread_num() == 1) {
cout <<" Thread "<<omp_get_thread_num()<<" does things differently\n";
}
}
return 0;
}


附帶一提parallel region有兩種狀態:active以及inactive.
所謂的active是指有多個thread在執行運算,若只有一個thread在做運算的話就是inactive的狀態.


references:
OpenMP Official Web sites
Using OpenMP: Portable Shared Memory Parallel Programming

OpenMP conditional compilation

Conditional compilation is used to prevent unwanted results created from a non openmp compliant compiler .

Following is its format:

#ifdef _OPENMP
#include <omp.h>
#else
#define omp_get_thread_num() 0
#endif
//some code here
int TID = omp_get_thread_num();


references:
OpenMP Official Web sites
Using OpenMP: Portable Shared Memory Parallel Programming

2011年7月23日 星期六

面板股

面板雙虎當中,有一隻融資餘額太高,可是另一隻是正常水位,可以逢低進一點點,畢竟還沒有真的賺錢,買太多也不適很明智,單純只是融資餘額清的差不多到可以進場的價位.

好聽的日文歌曲介紹

1.真夏の果実 (PV) SOUTHERN ALL STARS:這首歌張學友有翻唱過,好聽喔



2.貓的報恩主題曲-梁靜茹翻唱為小手拉大手



3.很愛很愛你原曲 KIRORO-長い間



4.ホワイトベリー - 夏祭り / Whiteberry-->放煙火的時候可以聽



5.ボーイフレンド aiko (歌:ラズベリー) --aiko boyfriend



6.B'z 今夜月の見える丘に (木村拓哉主演的日劇主題曲)



7.Do As Infinity / 深い森



8.hitomi - LOVE 2000

9.I WISH - Asu e No Tobira 明日への扉 --另一歌版本為---旅立ちの日に



10.Time goes by/ELT



11.Dragon Ash - Life goes on



12.花×花 あ~よかった



13.Da Pump - if



14.PV Hysteric Blue - 春~spring

15. それが大事

2011年7月22日 星期五

Circular Queue Array



#include <iostream>
#define capacity 5
using namespace std;

class ArrayQueue {
public:
int size;
int myFrontPos, myBackPos;
int array[capacity];
ArrayQueue(){
size=0;
myFrontPos=0;
myBackPos=0;
}

void enqueue(int number) {
int newBack=(myBackPos+1)%capacity;
if (size==capacity) {
cout<<"queue is full!!"<<endl;
} else {
array[myBackPos]=number;
myBackPos=newBack;
size++;
}
}

void dequeue() {
if (size==0) {
cout<<"queue is empty!!"<<endl;
} else {
myFrontPos=(myFrontPos+1)%capacity;
size--;;
}

}

void display() {
for(int i=0;i<size;i++){
cout <<array[i]<<endl;
}

}

};

int main() {
ArrayQueue aq;
aq.enqueue(1);
aq.enqueue(2);
aq.enqueue(3);
aq.enqueue(4);
aq.enqueue(5);
aq.dequeue();
aq.enqueue(6);
aq.display();
return 0;
}

2011年7月21日 星期四

C++ array (陣列)

C++有兩種陣列:靜態(Static)和動態(Dynamic)陣列.在c++ array的使用上要注意的地方是無論靜態或動態陣列,都必須要固定一個常數變數當作array的size;以下先列出靜態陣列的例子:

const int n=100;是用來指定陣列的size;然後第一個for loop是塞值進入陣列,第二個for迴圈是把目前的陣列值印出來.


沒有塞值進入陣列的話,印出來的陣列值是殘存在那個記憶體位置裡的值,如下列例子:




我們也可用pointer(指標)的方式來對陣列存取,
陣列的第一個元素的位址(address)就是陣列的名稱,
因此我們可以把此名稱指定給poiner然後循序遞增或遞減pointer來存取陣列,
如下範例:



int* ptr =a;:把此名稱指定給poiner
ptr++;:循序遞增或遞減pointer來存取陣列

Subsequently, let's introduce the Dynamic Array.
The differences between static and dynamic are the declaration and memory handling.
For declaration, a "new" reserved word needs to be along with the variable.And we also need to delete the pointer variable to release the reserved memory block. It is a very important thing to prevent from a memory leak.
Following is the example code, you can focus on the colored words.


OpenMP Introduction(OpenMP 介紹)

1.OpenMP
  • 採取 fork-join(?分叉-結合?)的方式來做平行運算.

  • 因為對於c/c++/fortan語言的擴充性, openmp可以用來發展平行化的應用程式(Parallel Application Development)

  • It is a programming interface

  • shared-memory parallel programs
  • 2011年7月20日 星期三

    OpenMp 環境配置 for eclipse

    我是使用eclipse for c++ developer,一開始一直會出現1各undefined GOMP_parallel_end 的錯誤後來我發現只要到專案的property裡去設定就解決了.以下是圖檔,因為每個版本的eclipse不盡相同,請各位根據圖找到對應的欄位去改
    要改的兩個項目是GCC c++ compiler 還有MingGW c++ linker



    OpenMP-HelloWorld

    open mp是可以把程式平行化執行的c/c++ library.open mp很常被用在遊戲的動畫處理方面.另一方面因為現在的電腦都是雙核心的cpu,如果應用程式沒有寫成平行化的方式,無法完全發揮雙核心cpu的威力,不免俗的我的第一個open mp 程式當然是c++版本的hello world.網路上很多例子都是用c的方式來呈現,因為我不熟悉c,所以小改成c++的方式來實作.若compile顯示ignore #pragma的警告訊息, 那麼要在complie command line加上"-fopenmp"參數


    #include <omp.h>
    #include <iostream>
    using namespace std;
    int main() {
    #pragma omp parallel
    cout<<"Hello from thread "<<omp_get_thread_num()<<", nthreads"
    << omp_get_num_threads()<<endl;
    return 0;
    }



    #pragma omp parallel:是openmp的directives(指示字?),會產生threads來執行,此段程式碼.
    omp_get_thread_num():此函式用來回傳thread編號
    omp_get_num_threads():用來回傳thread總數



    如果只需要一個thread執行程式的話可以用#pragma omp single


    #include <omp.h>
    #include <iostream>
    using namespace std;
    int main() {
    #pragma omp single
    cout<<"Hello from thread "<<omp_get_thread_num()<<", nthreads"
    << omp_get_num_threads()<<endl;
    return 0;
    }

    2011-07-20-大盤加權指數看法

    前一陣子很不好做,多空雙巴,做短單真的不適合.
    目前上檔反壓在8820點左右,下檔支撐在8000~8200這個區間.
    最好的走法還是慢慢整理,然後慢慢向高點邁進.

    2011年7月19日 星期二

    Binary Search Tree C++

    Java程式開發和維護

    以下是Binary Search Tree的實作,綠色字的部分是用preOrder遞迴的方式列出這棵樹所有的元素.所謂的 preOrder的意思是說先找root,然後找Left node, then Right node.另外還有,inOrder 和postOrder,分別把root放在中間找亦或是把root最後找
    
    
    

    Java binary search

    BST with Java 行程安排應用程式

    2011年7月18日 星期一

    Queue Implemented by a Linked List

    Queue:是一種先進先出的資料結構(First In First Out).
    下面的範例程式使用C++ 的Linked List來實現Queue.




    #include <iostream>
    using namespace std;

    class Node {

    public:
    int data;
    Node* nxtNode;
    Node(int _data) {
    data=_data;//Data
    nxtNode=NULL;//pointer to next one
    }
    };

    class LinkedList {
    Node* previous;
    Node* next;
    public:
    LinkedList() {
    previous=NULL;
    next=NULL;
    }

    void insert(Node * _node) {
    if (previous==NULL) {
    previous= next= _node;//first node
    } else {
    (*next).nxtNode=_node;
    next=_node;
    }
    }

    void displayAll() {
    Node* tmp=previous;
    while(tmp!=NULL){
    cout<<(*tmp).data <<endl;
    tmp=(*tmp).nxtNode;
    }
    }
    };

    int main() {
    Node* firstNode=new Node(1);
    Node* secondNode=new Node(2);
    Node* thirdNode=new Node(3);
    LinkedList ll;
    ll.insert(firstNode);
    ll.insert(secondNode);
    ll.insert(thirdNode);
    ll.displayAll();
    return 0;
    }

    Stack implementation linked list

    以下所有的資料結構都是用C++實作,
      linked list
    • 用指標(pointer)實作的list可以無限制的擴充大小,但無法像陣列一樣可以直接(Direct)或是隨機存取(Random Access)儲存的資料.

    • 基本的linkeded list(鏈結串列),包含一個data的欄位,和一個next pointer欄位用來指向下一個資料


    以下是以一個LinkedList實作Stack(First In Last Out)的例子

    2011年7月17日 星期日

    C++ Const的用法

  • const int* ptr :固定value,但可改變address

  • int* const ptr :固定address,但可改變value
  • 2011年7月16日 星期六

    C++ Reference Variables Usage(C++參考變數的使用)

    可以把參考變數(Reference Variable)想像成一個變數的別名或替代名稱.而且此變數和原來的變數存在於共同的記憶體位置,並且擁有相同的值.

    #include <iostream>
    using namespace std;

    int main() {
    int a=1;
    int & a1=a;//a1 is a reference variable
    cout << a1 <<endl;
    return 0;
    }



    之前有提過c++和Java的基本型別變數(int ,double等)都是call by value的
    call by reference or value若是想要call by reference,在c++可以用reference帶替pointer(指標)當作傳入函式的參數.如下例:

    #include <iostream>
    using namespace std;
    void sum4(int &);

    int main() {
    int a=1;
    sum4(a);
    cout << a <<endl;
    return 0;
    }

    void sum4(int & a) {
    a=2;
    }



    在這個例子中,雖然並沒有建立一個reference變數,但當基本變數a傳入此function sum4()的時候,會自動被當成reference變數來對待,也就是call by reference,因此在函式內改變a的值之後,
    原本變數a的值也會一起被改變.

  • Reference變數也可以當作函式的回傳值.


  • #include <iostream>
    using namespace std;
    int & sum5(int &);

    int main() {
    int a=1;
    sum5(a)=3;
    cout << a << endl;
    return 0;
    }

    int & sum5(int &a){
    return a;
    }



    因為sum5回傳的是(reference),也就是記憶體位置,因此改變a的值為3,也會同時改變原本的變數值.若在sum5的前方加上關鍵字const,那麼我們便不能直接使用sum5所return回來的reference來改變變數值,如下例子:

    #include <iostream>
    using namespace std;
    const int & sum5(int &);

    int main() {
    int a=1;
    sum5(a)=3;
    cout << a << endl;
    return 0;
    }

    const int & sum5(int &a){
    return a;
    }

    "那些年,我們一起追的女孩,觀後感"

    C++ 變數的生存範圍和種類

    C++的變數範圍(Scope)有三種

    • 區域變數(Local Variables):在函式內宣告的變數,當跳離或函式結束執行的時候,此變數的記憶體空間會自動被回收

    • 靜態變數(Static Variables):在程式主體和函式之間的變數.程式結束執行的時候記憶體會自動被作業系統回收

    • 動態變數(Dynamic Variables):實際執行時期用到的變數.要用delete手動把存在記憶體的變數值刪掉,或是程式結束執行的時候會被作業系統自動回收.



    #include <iostream>
    using namespace std;

    void sum3(int);
    int main() {
    int a=1;//Static Variable
    sum3(a);
    int * ptr=new int;//Dynamic Variable
    *ptr=2;
    cout << "before delete: "<<endl;
    cout << *ptr<<endl;
    delete ptr;
    cout << "after delete:" <<endl;
    cout << *ptr<<endl;
    return 0;
    }

    void sum3(int a) {
    int b=a;//Local Variable
    cout << b<<"\n";
    }

    C++ Namespace(命名空間)用法

    c++的namespace和Java的package有異曲同工之妙,也就是說宣告在不同namespace的function.即便擁有同樣的名字也不會衝突到,可獨立使用.
    以下是範例程式:
    #include <iostream>
    using namespace std;

    namespace MyException {
    class Exception {
    public:
    void mesg() {
    cout << "Exception Occurred !!"<<endl;
    }
    };
    }


    void sum2(int, int) throw (MyException::Exception);
    int main() {
    int a=1;
    int b=1;
    try {
    sum2(a, b);
    } catch (MyException::Exception & ex) {// start of exception handler
    ex.mesg();
    }
    return 0;
    }

    void sum2(int a, int b) throw (MyException::Exception) {
    if (a==b) {
    throw MyException::Exception();
    }
    cout << a+b<<"\n";
    }




    解說:
    先命名一個namespace為MyException的block,然後在block內定義一個Exception類別,接下來使用"命名空間::類別名稱"來使用此類別


    也可以使用兩個namespace的方式來更進一步減少name collision,不過在使用的時候要記得存取每一層namespace的名字,compile才有辦法正確找到要使用的類別.


    namespace MyException {
    namespace SecondLevel {
    class Exception {
    public:
    void mesg() {
    cout << "Exception Occurred !!"<<endl;
    }
    };
    }
    }

    2011年7月15日 星期五

    C++ 例外處理(Exception Handler)

    當函式(Function),throw(丟)出例外的時候,要用一個try..catch的block把這個問題處理掉或顯示出來給使用者知道.範例程式如下:紅色字的部分是exception的運用,
    #include <iostream>
    using namespace std;
    void sum(int, int);

    int main() {
    int a=1;
    int b=1;

    try {
    sum(a, b);
    } catch (const char * s) {// start of exception handler
    cout << s <<endl;
    }

    return 0;
    }
    void sum(int a, int b) {
    if (a==b) {

    throw "This Combination is unacceptable!!";

    }
    cout << a+b<<"\n";
    }






    紅色字的部分是表示當function sum(int,int)在try block拋出string的錯誤訊息時,catch block(區塊)要把此錯誤訊息印出來.


    Exception class(例外類別)



    前一個範例是拋出字串,這一個範例是拋出例外類別.使用這一個方法的好處是我們可以為exception分類出不同類別,以方便辨識.另外一方面,也提升了重用性(re-usability).


    #include <iostream>
    using namespace std;

    class Exception {
    public:
    void mesg() {
    cout << "Exception Occurred !!"<<endl;
    }
    };
    void sum1(int, int) throw (Exception);

    int main() {
    int a=1;
    int b=1;
    try {
    sum1(a, b);
    } catch (Exception & ex) {// start of exception handler
    ex.mesg();
    }

    return 0;
    }

    void sum1(int a, int b) throw (Exception) {
    if (a==b) {
    throw Exception();
    }
    cout << a+b<<"\n";
    }



    解說:
    第一部分是宣告一個Exception class(例外類別)
    第二部分部分只是把拋出字串,改為拋出此例外類別.
    第三部分部分是函式的實做.要記得在定義define(定義)以及declaration(宣告)的時候加上throw關鍵字指定要丟出何種類外類別.

    宏達電也不適合買進

    宏達電從高點跌下來後,融資餘額屢創新高,這不是好現象
    況且電子產品的價格,以及利潤會隨著競爭者的加入
    和產品的普及化而降低,所以最賺錢的時候已漸漸遠離
    用這麼高的價錢來看待這檔股票,似乎要審慎考慮一番.

    C++ Function Templates (函式模板)

    如果寫了一個function ,ex:兩個整數相加


    void sum(int , int);


    這樣寫的話可以將整數相加,若是同樣的用法要將兩個double(也就是浮點數)相加的時候,還要再寫一個版本給浮點數使用,這種情況可以運用function template來解決


    先宣告function template: 大寫 T可代表任意型態的變數


    template <class T> void sum(T , T);


    在程式碼實作的部分


    void sum(T a, T b) {
    cout << a+b;
    }


    下列是完整的程式:


    #include <iostream>
    using namespace std;
    template <class T> void sum(T, T);

    int main() {
    int a=1, b=2;
    double c=1.1, d=2.2;
    sum(a, b) ;
    sum(c, d) ;
    return 0;
    }
    template <class T> void sum(T a, T b) {
    cout << a+b<<"\n";
    }


    接下來要介紹(Overloaded Templates)多載化的模板


    如果sum()這個函式的名字不變,但傳入的參數改為三個,
    那麼這種情形便稱作多載,多載化的版本也是要先宣告template,然後在實做出來.
    請注意紅色字的部分是新增出來的多載化的程式碼.





    #include <iostream>
    using namespace std;
    template <class T> void sum(T, T);
    template <class T> void sum(T, T, T);

    int main() {
    int a=1, b=2;
    double c=1.1, d=2.2 ,e=3.3;
    sum(a, b) ;//3
    sum(c, d) ;//3.3
    sum(c, d, e)//6.6 ;
    return 0;
    }
    template <class T> void sum(T a, T b) {
    cout << a+b<<"\n";
    }

    template <class T> void sum(T a, T b, T c){
    cout << a+b+c<<"\n";
    }



    2011年7月14日 星期四

    演算法分析(Algorithm Analysis)


    如何判別一個程式寫得好不好,可以用這個程式需要花費的記憶體,或是說要花多少時間才能解出答案,來判斷.因為現在硬體的價格很大眾化.所以我們可以專注在,時間上的討論. 有一個叫做Big-O的概念: 因為會影響時間的因素很多,因此這個概念主要是以討論程式執行的次數多寡來決定要花多少時間.一般我們都是採取比較嚴格的標準檢視程式,所以主要都是討論,在最差的情形下,這程式要花多少時間找出答案.


    比如說

    for (int i=0; i<n; i++) {

    }


    假如答案在最後一項,迴圈要跑到n-1,也就是最後一個才找到答案,我們用O(n),來表示這個迴圈要花線性時間來找出答案.
    又如


    answer=n*2;


    因為答案只需要一次就找出來了,我們用O(1)來表示程式只需要常數時間就會找到答案
    又若我們可以把數字排序後再來找答案,那麼所需要的時間只有一半而已.
    假設1,2,3,4,用Binary Search只需要1~2次即可找出答案,所以可以用O(logN)
    來表示只要對數的時間即可找出答案. 我們可以這麼去想, 4=2^2 ,以2為基底的log: log4=2;
    所以把線性時間乘以2為基底的log,即為log N.

    2011年7月11日 星期一

    軼代和遞迴Iterative and Recursive

    遞迴的整體概念是把同樣類似重複的工作,分拆到最小的單位來做,然後慢慢把小單位的結果集合成大單位的結果,然後成為答案.
    遞迴要有兩個要素:1.基本元素,也可說是終止條件 2.遞迴判斷條件,
    例如:2^0 =1; 2^1=2*2^0; 2^2=2*2^1, 2^3=2*2^2,到最後我們可以歸納為
    x^0=1,這個就是基本條件, 又若n>0的話, x^n=x*x^n-1;這個就是遞迴條件.
    以下是以n的幾次方分別用用遞迴和軼代的方式來實作的程式碼:


    #include <iostream>
    using namespace std;

    int recursive(int, int);

    int main() {
    cout << recursive(2,3);
    return 0;

    }

    int recursive(int x, int n){
    if(n==0){
    return 1;
    }else{
    return x*recursive(x, n-1);
    }
    }






    所有的遞迴和Iterative都可以互換,跑出同樣的結果,把上列程式用Iterative來寫變成:


    #include <iostream>
    using namespace std;

    int recursive(int, int);

    int main() {
    cout << recursive(2, 3);
    return 0;

    }

    int recursive(int x, int n) {
    int answer=1;
    if (n==0) {
    return answer;
    } else {
    for (int i=0; i<n; i++) {
    answer *=x;
    }
    }
    return answer;
    }




    但遞迴較佔記憶體空間.

    divide and conquer with recursive


    遞迴常被使用在分割-處理的使用上,很多二分(Binary)相關的演算法都是用recursive實作

    c++ Typedef的用法


    typedef可以用來為常用的變數型態設定方便自己識別的名稱.



    #include <iostream>
    using namespace std;

    typedef int Integer;

    int main() {
    Integer a=1;
    Integer * number= &a;
    Integer * number2= number;
    (*number2)=3;
    cout << *(number) << "\n";
    return 0;
    }


    C++指標(Pointer)介紹


    1. 指標可以用來指定一個記憶體位址儲存變數資料,用"&"符號可以取出變數的記憶體位址,"*"符號則是取出實際所儲存的值



    #include <iostream>
    using namespace std;

    int main() {
    int a=1;
    int * number= &a;
    cout << *(number) << "\n";
    return 0;
    }





    2. 指標也可以互相指定到同一個記憶體位址,但要很小心,萬一任何一個指標更動到實際所儲存值,那麼另一個也會受影響到



    #include <iostream>
    using namespace std;

    int main() {
    int a=1;
    int * number= &a;
    int * number2= number;
    (*number2)=3;
    cout << *(number) << "\n";
    return 0;
    }

    2011年7月9日 星期六

    Constructor in C++

    為類別建立constructor(建構子)是一個好習慣,建構子是用來初始化實體物件的狀態,http://www.blogger.com/img/blank.gif
    若是使用者沒有自己定義的constructor,系統預設會建立一個空白的建構子給每一個物件.



    你或許也會有興趣的主題:
    c++繼承

    Inheritance C++ : C++ 繼承範例

    C++ 和Java在繼承方面很不一樣,C++允許多重繼承,但Java不允許
    Following, I will start to describe how to write a inherited class in C++
    以下列出C++繼承的寫法

    2011年7月8日 星期五

    運用C++的指標(Pointer)來做動態記憶體(Dynamic Memory Allocation)配置






    在執行時期對於未知的輸入值,要採用動態記憶體的方式,來處理變數,也就是用指標來指向
    某個記憶體位置來儲存變數.
    若在compile時期已知道變數值的話,用靜態的方式宣告和儲存變數即可.
    在下列的例子,因為我們不知道,使用者會輸入甚麼值,所以用動態記憶體的方式來做.
    當程式結束前,一定要記得把記憶體用delete釋放掉,才不會導致日後有memory overflow的風險.


    Linear Search in C++(C++實作線性搜尋)

    使用Recursion來實作C++快速排序法(Quick Sort)




    其他排序法Other sort algorithm.
    Selection Sort

    Selection Sort in C++

    來過請留下痕跡,無論是留言,給建議或是點閱有興趣的廣告
    都是支持繼續寫網誌的動力.



    The complexity of selection sort is O(n^2)
    selection sort(選擇排序)的基本概念是,找出最大或最小的數字,放在最左邊,然後再從剩下的數字中,找出最大或最小的值,依次由左到右放,直到所有的數字都檢查過為止.





    other sort algorithms:
    Quick Sort

    2011年7月7日 星期四

    C++和Java的傳值和傳址(pass by reference in java and c++)



    Java和C++對於陣列型態變數的存取都是直接在記憶體上做(call by reference),所以會改變變數值,同樣的對於

    基本型態如int,皆為複製一份拷貝來做,並不會影響到原來的值,(call by value)

    Java sample:



    C++ sample:



    對於傳入函式的使用者自訂物件,Java也是call by value,但在c++很特別的地方是,除非programmer指定要傳入的是address,若傳入的是value,是會被函式內的區域變數(Local Variable)覆蓋掉,無法使用,看下例便知: