原创 算法練習:int數組,將其中正數負數各移到一邊

刷題看到這樣一道題,以前都會上網找別人的思路,現在嘗試自己思考分析。 解決思路: 從左遍歷數組,找到第一個爲負數的元素,從右向左找到第一個爲正數的元素,交換。其中需要維護一個end變量記錄右邊位置,需要注意的是,end必須大於i。代碼如下

原创 Android GreenDao數據庫升級數據遷移

概述之前數據庫升級,做法是刪除舊錶新建新表,這樣所有的數據均被刪除,那麼一些私有數據,例如用戶登錄信息也被刪除。這樣的用戶體驗很不好,用戶更新APP後,需要重新登錄。爲改進用戶體驗,我們將用戶私有數據做遷移。這樣用戶不需要重新登錄。設計方

原创 Java不可重入鎖和可重入鎖理解

最近正在閱讀Java ReentrantLock源碼,始終對可重入和不可重入概念理解不透徹,進行學習後記錄在這裏。基礎知識Java多線程的wait()方法和notify()方法這兩個方法是成對出現和使用的,要執行這兩個方法,有一個前提就是

原创 Android開發抽象狀態機

前言            在Android APP開發過程中,有時可以採用狀態機來解決某些複雜業務,例如下拉刷新功能,我們可以更加行爲將其劃分爲Normal狀態、Pull狀態、Loading狀態,根據不同的狀態我們實現該狀態下行爲。例如

原创 Java虛擬機類加載機制

本篇文章爲閱讀《深入理解java虛擬機》第二步筆記類加載階段    類從被加載到虛擬機內存中開始,到卸載出內存爲止,整個生命週期包括加載(Loading)、驗證(Verification)、準備(Preparation)、解析(Resol

原创 百度Android面試經歷之串行執行三個線程

接着上一篇內容,這次面試主要圍繞多線程進行提問。接下來讓我編程:串行執行三個線程,任務是每一個線程將i加1。我當時使用的是join()方法,但是由於對join()方法理解的不透徹。對自己的代碼信心不大。我在這再寫一遍:public cla