2016年9月6日
#
Java 8之前,同一注解不能在相同的目標元素上多次使用,例如,如下的注解在Java 8之前是不允許的:
public class SampleClass {
@Quality("Security")
@Quality("Performance")
@Quality("Readability")
public void foo(){
//
}
}
Java 8引入了Repeatable注解(@Repeatable)可以解決這一問題,但光有可重復的注解定義還不夠,還需要它的容器注解,兩者一起來實現可重復注解的使用。實例如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
@Repeatable (Qualities.class)
public @interface Quality {
String value();
}
@Target(ElementType.METHOD)
public @interface Qualities {
Quality[] value();
}
其中,Quality是可重復注解,由@Repeatable注解標明,它的容器注解是Qualities,用于存放所有可重復的Quality(存貯在Quality[]中);同時還要注意可重復注解和它的容器注解的目標元素必須是一樣的(這也不言自明)。如此這般,我們最開始的
SampleClass 在Java 8環境下就可以安全使用了。
2016年9月3日
#
以下單例實現思想來自《Java Design Patterns: A Programmer's Approach》.
該方法利用了Java缺省的Lazy類實例化機制克服了傳統單例模式實現中Lazy實例化方式的不足。
public class Singleton {
private Singleton(){}
public static Singleton getInstance(){
return Helper.instance;
}
static class Helper {
private static Singleton instance = new Singleton();
}
}
2016年9月2日
#
以下轉自StackOverflow(
http://stackoverflow.com/questions/5074063/maven-error-failure-to-transfer),親測可用。
This worked for me in Windows as well.
- Locate the {user}/.m2/repository (Using Juno /Win7 here)
- In the Search field in upper right of window, type ".lastupdated". Windows will look through all subfolders for these files in the directory. (I did not look through cache.)
- Remove them by Right-click > Delete (I kept all of the lastupdated.properties).
- Then go back into Eclipse, Right-click on the project and select Maven > Update Project. I selected to "Force Update of Snapshots/Releases". Click Ok and the dependencies finally resolved correctly.
2016年8月31日
#
當我們寫Groovy腳本代碼的時候,有時會發生編譯錯誤,如下:
- Groovy:Invalid duplicate class definition of class XXX : The source XXXX\XXX.groovy contains at least two
definitions of the class XXX.
- The type XXX is already defined
原因在于Groovy會把.groovy代碼文件作為腳本或類定義來處理,例如如下代碼:
class Order {
def security
def value
private buy_sell(su, closure) {
security = su[0]
quantity = su[1]
closure()
}
def getTo() {
this
}
}
def methodMissing(String name, args) {
order.metaClass.getMetaProperty(name).setProperty(order, args)
}
def getNewOrder() {
order = new Order()
}
Integer.metaClass.getShares = { -> delegate }
Groovy會把上述代碼作為腳本處理,同時缺省用文件名來作為一個外圍類類包括整個腳本程序,此時,如果該文件名恰好也是Order的話,那么就會出現重復的類定義錯誤提示。
解決辦法是將腳本文件名取另外一個不同的名字。
2016年8月30日
#
已經申請OCUP中級考試的學員可以在一年內(截止到17年9月份)免費申請OCUP2中級考試的資格(原有考試仍可以參加)。此外,2014年3月份之后參加了原有OCUP中級認證考試的學員可以免費申請OCUP2中級認證考試。詳見OMG網站聲明(http://www.omg.org/ocup-2/exam-info.htm)。
2011年2月23日
#
搬家總是難免的,但舊家的東西不能帶走難免會留下些許遺憾,希望它們能永遠留下來.......
歡迎光臨我的新家:
http://blog.sciencenet.cn/?53016 (科學網)
2011年1月5日
#
轉自網絡。
3歲,他去上幼兒園了,看著他小小的堅強的背影,心中又喜悅又有點小小的心酸。離別了一整天,孩子看到你高興得奔跑過來,撲在你的懷里。跟你說:媽媽,我想你了。那一刻,抱著孩子就像抱著了整個世界。
6歲,他上小學了,孩子終于走進校門,這是多么值得紀念的事情,孩子的人生從此翻開了新的篇章,卻沒想到,這也是孩子離開我們的第一步。他已經對與你分開一天習以為常了,而且他喜歡每天去學校,這是他更喜歡的生活。甚至,他有時還會說:媽媽,在家好無聊,沒有小朋友和我玩。
12歲,他上初中了,甚至有的開始上寄宿學校,一個月或者幾個月回一次家,見上一次面。他們開始不再依賴你,甚至,他們喜歡和你對著干。你想幫他們做點事情,他們說:媽媽,我自己來吧。突然覺得這句話讓我們覺得好失落,孩子是不是不再需要我們了?
18歲,他離開你去上大學,一年回來兩次。回來的好幾天前,家里的冰箱就裝不下了,為他準備了各種各樣他喜歡吃的東西。可是一回來打個照面,他就忙著和同學朋友聚會去了。從此,你最怕聽到的一句話是:媽媽,我不回家吃飯了,你們自己吃吧。
大學畢業后,孩子留在了遠方工作,一年也難的回來一次了。好不容易回來一趟,幾天就走了。你最盼望的就是孩子的電話,希望,孩子對你說一聲:媽媽,我很好,你保重身體。這樣就足夠了。
孩子結婚了,回家的時間有一半勻給了你的親家,孩子回來的更少了。你已經習慣就老兩口在家了,但是,你最希望聽到孩子對你說:媽媽,今年過年我回家過啊!
當孩子又有了他們自己的孩子,你已經不再是他們的家庭成員了,他們的一家三口(或一家n口)里,已經不包括你們了。
而我們也慢慢的習慣了這樣的日子。只是習慣在閑來無事的時候,經常翻翻相冊,看看我們自己的一家三口,無論孩子身在何方,他卻永遠是我們家庭中無可取代的一員。
是啊,其實當孩子在身邊的日子,我們是多么幸福。可是有時我們卻還會抱怨。抱怨因為他,你做了太多的犧牲。抱怨他晚上老醒來,讓你睡不好,抱怨他無理取鬧,抱怨他愛撒嬌長不大,抱怨他生病,讓你操碎了心,抱怨為了培養他,花費了太多的精力與金錢...可是,如果你想想,10多年后,就算你想要,也沒有機會了。孩子會不停的長大,過了這個時期他就再沒有這個時期的習性。你是不是常常在他斷奶后懷念喂他吃奶的日子,可是那時你卻覺得好累好辛苦好厭倦。是不是常常看他以前吃手的照片覺得好可愛,可是你曾經卻為要不停的給他洗手而煩惱透了。是不是在他褪去童聲后,特別想念他曾經奶聲奶氣的聲音,可是他以前撒嬌的時候你卻很不受用。是不是當孩子去上學后你特別懷念他黏在你身邊的日子,可是以前你卻總在想他要什么時候才能去上學啊。。。
時間無法倒流,過去了就只能永遠過去了。孩子能呆在身邊的日子是多么難得與寶貴。因為這一點,我更加的珍惜與孩子相處的每一刻,也讓我無論遇到什么,都心存感恩。謝謝上天給我這么一個孩子,讓我分享與見證他成長的每一刻。無論帶給我多少困難,煩惱,甚至挫敗,無論讓我失去多少睡眠,時間,金錢,精力,我仍然豁達,因為,這都是上天的恩賜。
當他在身邊的每一天,我都會讓他覺得幸福,也是讓我們都有一個美好的回憶。我不會給他太多壓力,束縛,更不會給他牽絆,阻擾,但是我會適時管教,也會做量力而行的投資,因為我有責任與義務教會他生活的本領,好讓他來日自由快樂的飛翔。同時,我也會告訴他,就算所有的路都行不通時,還有一條路你可以暢行,那就是回家的路。。。。。。。。
2010年12月8日
#
今日編輯一PDF文件(用的是Adobe Acrobat Pressional 7.0),刪除了幾頁,然后保存,結果文件大小反而增加了;而刪除幾頁后另存,則文件大小減少。
你也試試看。
2010年12月5日
#
Robert L. Glass在《Negative Productivity and What to Do about It》(詳見IEEE Software, September/October 2008, p. 96)闡述了自己對那些影響項目進度的人的親身感受和對此應采取的解決方案。
作者以個體差異開頭(作者指出,在軟件工程文獻中提到過非常大的個體差異:28:1 (for error identification) to 25:1 (for coding ability) to 11:1 (for timing efficiency) to 6:1 (for sizing efficiency)。但不幸的是,這些差異并沒有得到我們足夠的認識,作為實踐者,我們不知道如何鑒別出那些是別人28倍生產力的人,他們對于按時交付高質量的軟件非常重要;作為研究者,在案例研究中也沒有對個人進行足夠的區分,這將導致對結果的誤讀。),然后引出對項目進展帶來負作用(影響項目進度)的人''(someone who has negative productivity—that is, someone whose inclusion on a project actually makes the project less efficient.)'',接著以自己的親身經歷的三個例子做了闡述:
1. Disfunctional labor relations. 項目(與軟件無關)組被抽走一人,卻發現生產力提高了;這個案例讓作者意識到項目中存在讓人不易覺察的對項目生產力產生負影響的人;
2. Moral rebellion. 作者所帶領的項目組中存在一個對公司存在性不認同的人,導致項目進度滯后,使作者受到了軟件職業中最差的評價;
3. Overly high standards. 作者所在的項目組由于一個對質量要求非常嚴的QA,總是對提交的產品不滿意,結果導致產品遲遲不能交付。
對待這些人,作者給出了自己的解決方案:解雇他們。''(If someone on your project is deliberately delaying its progress, there’s probably only one reasonable solution. Fire them! If you don’t, your team will be sorry, your company will be sorry, and, quite likely, you’ll be sorry as well!)''
2010年11月7日
#
第九屆全國軟件與應用學術會議(NASAC 2010)如期(11.4~11.7)在蘇州大學舉行,對于本次會議,有以下幾點感受:
1. 學術水平有待提高(投稿主體還是以碩士生為主,尚不能吸引國內高水平文章);
2. 學術交流有待提高(本次會議的很多短文都未準備Poster,演示和茶歇的環境很有限);
3. 會議招待有待提高(除了歡迎宴以外,就都是自助了,很單一,應該多樣化一些);歡迎晚宴很一般,由于專委沒有參加,所以缺少了很多交互,沒有節目,沒有致辭,就是一味的吃
本次會議的收獲是認識了一些同行,并與北大和復旦的相關研究人員就軟件復用和產品線相關實踐以及企業應用實踐的相關問題進行了討論。還有就是吃到了正宗的陽澄湖大閘蟹(一公一母)。
蘇州風光很好,游覽了一些古街,小橋流水,無限柔美,但環境保護還有待加強,經常可以看到吸煙的把煙頭從湖水中扔,還有吐痰的......,要是蘇州在國外,一定會更美。