早晨起得太早,昨晚睡得太晚,一天都迷迷糊糊的。中午雖然睡了半個小時,可是依然沒有緩過來。整個下午都在混沌中....不過今天下載下傳了一款手遊——《劍俠情緣》,感覺不錯,喜歡這種類型的遊戲。
今天主要的工作還是做業務需求,不過下午狀态不好,看了下《Effective java》,正好重構了下代碼。
通過函數作為政策有兩個要注意的地方:
使用接口作為政策傳入
如果長期調用,應該設定為靜态内部類,避免頻繁建立過多的匿名對象
下面舉個簡單的例子,針對Engineer類提供不同的政策做排序,比如按照年齡或者按照員工級别:
在上面的例子中,采用靜态成員變量聲明,可以在多次使用的時候節省建立對象的成本。而且靜态成員在堆記憶體的配置設定上也更簡單,不會每次都建立新的對象。
在真實的場景中,是在某個請求方法裡面,傳回一個List對象,需要對它按照日期排序。如果是普通的<code>Collections.sort(list,new Comparator<xx>{})</code>這種方式,會在每次傳回結果的時候,都建立一個匿名類,很顯然會浪費不少記憶體空間,增加垃圾回收的壓力。使用靜态成員變量的方式,可以減少這種不必要的浪費。
由于在1.5之前的版本,java是沒有泛型概念的。是以在引入泛型後,需要考慮到以前代碼的移植。
沒有泛型的時候,如果使用List,可以往裡面插入任意類型的值。但是在取得時候,如果類型不對就有問題了:
為了避免這種問題,1.5引入泛型,這樣一套代碼可以适用于多種類型;還能在編譯器就檢查類型是否一緻。
除了這種<code>List<E> xxx</code>标準的泛型,java還提供了無限制性的泛型:
是以,盡量使用标準的格式,在某些情況下已知的一些通配限制,還可以使用<?>号加以限制。
記得最開始自己寫代碼的時候,滿滿的都是黃色标記,師兄就糾正我的做法,讓我把這些警告全都去掉。其實随時保證沒有警告的代碼,才是最負責的做法。不管是自己屏蔽掉,還是做相應的解決,都好過編譯的時候爆出一大堆警告好。
Java是一門編譯型的語言,需要經過編譯,變成class位元組碼才能執行。但是在編寫泛型相關的代碼時,總是會遇到一些警告。比如參數僅僅聲明為Map,沒有聲明具體内部的内容等等。
在Eclipse中可以通過加入<code>@SuppressWarning</code>注解來忽略警告,但是不推薦這種做法。除非你對自己的代碼非常自信,保證不會出現其他的類型,而導緻ClassCastException。是以盡量在寫代碼的時候不要産生警告,如果想要忽略,盡量考慮清楚入口出口是否不會出現意外。
常用的就是unckecked和rawtypes,一個是不檢查内部變量,一個是不檢查參數類型。
做業務需求,還是需要了解些業務知識才行。無論是電商環境,還是傳統企業,環比和同比是最常見的資料分析手段,可以通過對比明顯的看到目前業務的變化趨勢,有利于管理層即使做出調整,那麼什麼是環比,什麼是同比呢?
環比就是現在的統計周期和上一個統計周期比較。
同比是與曆史時期作比較。
舉個例子:
2016年4月和2016年的3月相比,就是環比
2016年的10月和2015年的10月相比,就是同比
太業務化的東西,就不說了,免得設計到什麼尴尬的資訊。
睡覺時間到,養好精神,才能專注...