原创 redis實現的分佈式鎖爲啥要設置過期時間?

Redis分佈式鎖利用setnx,如果進程中的線程成功設置了setnx,則證明獲取到了鎖,然後執行業務邏輯代碼,然後釋放鎖。 //試圖獲得鎖 1.if (redisClient.setnx(xx,xx)){ 2. do xxxxx

原创 開發中的小插曲1

今天中午接到一個小需求:一訂單系統的小夥伴需要訪問我產品中心的一個表,那鐵定不能直接讀我PC(產品中心)的表啊,於是乎我需要寫一個hessian接口給他。一頓神操作,不到十分鐘,接口完成,如下所示: //java bean pub

原创 網絡傳輸層總結

背景知識 一:目前業界網絡體系結構的實際標準是什麼?分爲幾層? 答:分爲5層,從低到高(以應用層爲最高)分別如下: 1. 物理層 2. 數據鏈路層 3. 網絡層 4. 傳輸層 5. 應用層 二:傳輸層的主要協議是什麼? 答:

原创 mysql的一條記錄究竟是怎麼存的?

數據頁 對於Innodb這個引擎來說,它是把數據固化的硬盤的。可以想象一下調用的場景,寫一條查詢SQL,然後點擊回車按鈕。這時候這條SQL首先會到達數據庫的服務層,在這一層會對這條SQL進行語法分析,語義分析,語句優化。然後會調用

原创 爲什麼不建議用select * ?

不論是自己寫還是看公司的祖傳代碼,是不是都會遇到這種SQL: select * from table; “經驗”豐富後,可能你看到了這樣的SQL後,大腦中本能的搜索出了網上的各種說使用*不好的文章,但具體是爲啥不好呢? 業務表象

原创 多線程獲取任務狀態的兩種方式

問題描述 比如現在有兩個線程:1,主線程 2,工作線程 那麼如何知道開啓的工作線程的執行狀態呢? 第一種方式如下: public static void main(String[] args){ TestThre

原创 OKhttp使用筆記

很多人一看本文的標題,可能就沒有看的慾望,因爲很多人認爲OKhttp現在已經沒有當年那麼輝煌了,在代碼中直接使用也不如以前那麼常見,因此,現在有很多人把它當作老的網絡請求庫,其實這真的是一個誤區,OKhttp現在用的其實非常的廣泛,只不過

原创 Handler源碼分析

對於Handler搞android的都熟悉,大概原理也知道,可能很多開發者也看過源碼,本人也看過源碼,但是一直沒有系統的分析過,總結過,今天來一波對Handler的源碼分析,本文需要讀者瞭解handler的基本原理,如果不瞭解請參考Han

原创 譯--ToolBar(一)

建立 App Bar 在大多數app佈局中,action bar在一邊展示了activity的title,並且在另一邊展示了一個(overflow) 溢出菜單。即使在非常簡單的app結構中,app bar(action 是app

原创 AsyncTask源碼解析

雖然關於AsyncTask的文章有很多,並且文章對AsyncTask褒貶不一,本文關注的是AsyncTask的實現原理,以及它的優缺點,至於它的好壞,請讀者自行辨別。 什麼是AsyncTask AsyncTask是android框架爲開發

原创 RecyclerView綜合解析

RecyclerView 什麼是RecyclerView? RecyclerView其實就是一個在5.0推出的控件,可以用它來代替ListView和GridView,從這一點也能看出來它的特性和ListView以及GridView類似,注

原创 官方側滑菜單

創建側滑菜單(navigation drawer) navigation drawer是顯示在屏幕左邊的一種導航選項菜單,大多數時間它是隱藏的,使用的時候從屏幕的邊緣劃出。 這篇文章主要介紹怎麼用support library中的Draw

原创 Glide優勢與特點

什麼是Glide? Glide是一個加載圖片的庫,作者是bumptech,它是在泰國舉行的google 開發者論壇上google爲我們介紹的,這個庫被廣泛的運用在google的開源項目中。 Glide解決什麼問題? Glide是一個非常成

原创 Gradle解析

使用android studio有很長一段時間了,記得當初使用android studio的時候,最不適應的部分就是gradle了,現在android開發還是比較火熱,越來越多的人進入這個領域,也發現有很多人對gradle很迷惑,今天就來

原创 自己實現Tab(一)

如上圖所示,一個tab下管理了三個頁面,tab可以左右滑動,可以點擊,tab下的橫線也可以隨着頁面的滑動而滑動。 這個功能的實現主要用到三個控件:fragment+viewpager+FragmentPagerAdapter 下面