標簽‘java’

在 Spring(Spring Boot) 中應用 Kotlin

Kotlin 已悄然成為 Spring 繼支持 Groovy 后的第二個 JVM 語言。持續關注 Java 的同時,也順手在 Spring 上體驗了一把。

本例簡單記錄 Kotlin 的初始化以及配置文件的輸出,建立在熟悉 Spring、Spring Boot 及 Kotlin 的基礎上,如對 Spring 框架或 Kotlin 語言比較陌生,建議先行了解。

1、創建項目

springboot-1
查看更多...

Java命令行信息國際化輸出造成的困擾及解決

最近使用一個第三方開源程序,maven的項目,啟動前會跑一遍測試用例,以保障程序正確性,可在本地啟動的時候發現一直通不過,重復clean install多次無果。

本地-X打開maven日志,發現某個用例是根據java底層拋出的錯誤信息做比較,但由于是國外框架,用例都采用英文,而本地由于國際化原因,錯誤信息是中文,故此類直接拿java底層錯誤信息做對比的用例都會失敗。

解決方法 查看更多...

Spring Boot熱部署配置方案

最近朋友吐槽新公司使用Spring boot,不會熱更新,改個js都會重啟,嘗試及搜索后,總結下有三種方案:

1、使用springloaded

配置pom.xml文件新增如下:

maven

<!-- spring boot熱部署 -->
<!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
<dependency>
    <groupid>org.springframework</groupid>
    <artifactid>springloaded</artifactid>
    <version>1.2.8.RELEASE</version>
</dependency>

gradle

// https://mvnrepository.com/artifact/org.springframework/springloaded
compile group: 'org.springframework', name: 'springloaded', version: '1.2.8.RELEASE'

查看更多...

Kotlin Android擴展使用及流行框架支持

接上篇,整理一下Kotlin在Android平臺上應用的一些實例及方法。

Kotlin Android Extensions

Kotlin針對Android提供了Kotlin Android Extensions,可以很大程度上增強Android的開發體驗。
背景
相信每個Android開發人員都很清楚findViewById()函數,并且備受摧殘,毫無疑問,大量的findViewById()會造成代碼閱讀上的干擾和錯誤定位的難度,雖然有類似Butterknife之類的庫可以通過注解實現綁定,但在實際使用過程中還是要為每個變量增加注解,倘若出現大量注解,維護難度應該不亞于直接編碼,而其優點無非是代碼看起來簡潔了,但整體看似乎并不是特別優雅,且需要增加額外的運行庫。

現在,Kotlin Android Extensions插件給我們提供了更優雅的方法,且不需要額外引入運行庫,比如,我們的代碼可以像下面這樣寫: 查看更多...

IDEA系列64bit啟動時Failed to create JVM…問題解決

大概2015年的時候,寫過一篇名為《合理使用Intellij Idea,提高開發效率,避免內存溢出》的博文,簡單介紹了自己在使用idea過程中解決操作界面卡頓等性能問題的方法。意外的是,近一年來百度來路每天都有二三十個搜idea內存優化找到上面提到的文章,可能國內最近使用idea的用戶越來越多了吧。

個人猜測,可能是因為當時版本的idea系列安裝時并不會提示用戶該軟件有64bit的入口,而且安裝后的快捷方式默認都是32bit,所以大部分用戶都是直接使用32bit做開發,而且很多用戶怨聲載道。而近一年的版本已經做了改進,如果系統是64bit,默認有復選框提示生成32bit、64bit的快捷方式,這樣一來,稍微有點計算機基礎的用戶,可能都會選擇使用64bit作為入口了。

隨之而來的,可能是對于內存的調優,但稍有不慎,可能出現Failed to create JVM:error code -1。

網上大部分介紹是說沒有配置JAVA_HOME,當然如果是非idea用戶,真有可能忽略了此步驟,但如果本身就是Java開發人員,基本可以忽略這個可能性(當然是在自己確認無誤的情況下)。接下來遇到這樣的問題,就不能看錯誤提示表象了,可能是改了配置,配置參數不對或者內存不夠,因為初始化最大內存750,作為開發人員,基本也可以忽略這個了。所以,只有一種情況,配置不對。

最新版的配置參數有所縮減,移除了-XX:MaxPermSize等配置項,基本如下(64bit) 查看更多...

工作五年第一次,我失業了

公司也算是一個神奇的存在了,每次都悄無聲息,第二天突然說要裁員。

我所經歷的第一次是去年11月初,加班到晚上11點多發布版本后,第二天一早,研發團隊砍掉一半。倒是把我留下了,當時心灰意冷,已不想再待下去,但因為一時沒找到合適的坑,還是繼續留下來,做著時有時無的新需求,半年后的今天,我們都要走人了,研發部剩下兩個兄弟維護,其余的都撤了。

至此,我失業了!

謹以此文警示那些想去創業公司、已經去了創業公司的朋友們,互聯網泡沫已破滅,且行且珍惜!

順帶提一句,有需要人的可以聯系我哦,坐標深圳,五年經驗,三年Java前后端,兩年前端,聯系方式見關于頁。

Android優化之SparseArray替代HashMap

Java開發過程中,一般免不了使用HashMap來存儲鍵值對以方便各種需求的實現,但是對于Android這種對內存非常敏感的移動平臺,很多時候使用一些Java的API并不能達到更好的性能,相反反而更消耗內存,所以針對Android這種移動平臺,也推出了更符合自己的API,比如SparseArray、ArrayMap用來代替HashMap在有些情況下能帶來更好的性能提升。

對于SparseArray,比HashMap更省內存,在某些條件下性能更好,主要是因為它避免了對key的自動裝箱(int轉為Integer類型等),它內部則是通過兩個數組來進行數據存儲的,一個存儲key,另外一個存儲value,為了優化性能,它內部對數據還采取了壓縮的方式來表示稀疏數組的數據,同時,還實現了SparseIntArray、SparseLongArray、SparseBooleanArray。 查看更多...

Java方法究竟是值傳遞還是引用傳遞?

一直以來,Java地址引用概念的影響,認為Java傳參分為值傳遞和引用傳遞,最近因為追究JavaScript的傳遞方式,遂翻出Java相關資料看了一下,發現原來這么久一直理解錯了。Java中只有按值傳遞,沒有按引用傳遞!

這里同樣涉及到堆與棧的概念,至于區別,這里就不再贅述了,和JavaScript的說法類似,可以參考前面的《JavaScript函數究竟是值傳遞還是引用傳遞?》。

對于這個問題,網上說法各異,《Core Java》的作者,以及JAVA的創造者James Gosling都認為當一個對象或引用類型變量被當作參數傳遞時,也是值傳遞,這個值就是對象的引用,因此JAVA中只有值傳遞,沒有引用傳遞。還有一種說法是引用可以看作是對象的別名,當對象被當作參數傳遞時,傳遞的是對象的引用,因此是引用傳遞。當然,也有《Thinking in Java》作者Bruce Eckel站在了中立的立場上。 查看更多...

Jersey2 模擬登陸網站及登陸后301重定向識別

周末群里有人希望幫他搞個程序采集某個網站數據,雖然說沒什么技術難點又不缺那點錢,但是好奇心還是比較重,沒事看了看,最基本的基于SESSION的認證,POST個用戶名密碼即可,用java寫的話我通常采用HttpClient,很強大,很通用,但是最近時不時有看過Jersey2的一些東西,貌似和我之前熟知的1.x差異挺大,就剛好拿來試試(不是接單幫搞數據,單純的玩技術,采集別人數據的事我可不做)。

實踐下來,發現Jersey2的API寫起來更清爽了,因為是用來采集,這里只用了Jersey-client相關功能,期間遇到一些小問題,就是登陸成功后目標網站是301重定向到新頁面的,而Jersey2的API調用后還保留在原始頁面,最終導致SESSION無效,不能進行下一步操作,Stackoverflow上搜了下,最終解決了,很簡單,如下 查看更多...

初識Kotlin

Kotlin 是一個基于 JVM 的新的編程語言,由 JetBrains 開發。作為目前廣受歡迎的 Java IDE IntelliJ 的提供商,在 Apache 許可下已經開源其Kotlin 編程語言。

Kotlin設計目標是

1、創建一種兼容Java的語言

2、讓它比Java更安全,能夠靜態檢測常見的陷阱。如:引用空指針

3、讓它比Java更簡潔,通過支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等實現。

4、讓它比最成熟的競爭對手Scala語言更加簡單。 查看更多...

黑龙江22选5开奖