原创 Java併發系列之八Semaphore

前面我已經講解過了CountDownLatch和CyclicBarrier。本篇我們來講解下Semaphore。 Semaphore是指信號量,在計算機的世界裏信號量可以使用在數據競爭的場景中。在生活中交通信號燈可以比作現實世界中

原创 Java併發系列之三 ReadWriteLock源碼解析

1. ReadWriteLock接口 ReadWriteLock是一個java接口,它並沒有繼承Lock接口。提供了readLock()和writeLock(),分別返回一個讀鎖和寫鎖。 public interface Read

原创 Java併發系列之一 Lock源碼解析

1. Lock接口簡介 Lock接口是Java concurrent包中比較重要的接口。Lock的實現類有ReentrantLock、WriteLock、ReadLock。Lock類中定義了六個方法 void lock();

原创 Java併發系列之二 一道好玩有趣的多線程面試題

1. 一道好玩有趣的面試題 Java求職中往往會碰到這樣的面試題。請實現多線程交替打印0和1的程序。 看到這道題目,憑着程序員的第六感,我們很容易聯想到消費者和生產者模式。他們之間有很大的相似之處啊。生產者線程負責往倉庫生產物資,

原创 Java函數式編程隨想

java函數式編程的類主要定義在java.util.function包下。快速瀏覽了下該包下的一些類和接口。讀者要想看懂function相關的源碼,也需要對lambda表達式和泛型有一定的瞭解。本文只講function包下的一些源

原创 如何打開小米,oppo,華爲等手機的系統應用的指定頁面

如題,拿Oppo 手機做個示例,小米 華爲也是如此。 在編寫Android應用的時候,我們經常會有這樣的需求,我們想直接打開系統應用的某個頁面。比如在Oppo R9 手機上我們想打開某個應用的通知管理界面如下圖 點擊QQ圖標,跳

原创 Flutter Widget更新機制

衆所周知,Flutter中的UI都是通過Widget來呈現給用戶看的。Android中的UI我們都很瞭解,主要是通過View和ViewGroup來呈現給用戶看的。Android view或ViewGroup的屬性,子View的添加

原创 Rxjava和lambda語法

本文大部分代碼基於lambdaexpressions 寫在前面的話 本文只講Lambda語法,不會涉及到API講解,也不會涉及到RxJava原理介紹。個人感覺Lambda表達式是RxJava的基礎,只有明白Lambda表達式才能理

原创 Nexus 6p 解鎖 root 和安裝Xposed

Nexus 6P Unlock、Root & Xposed 在Mac上Root Nexus 6p 前提條件:必須安裝Android SDK Tools 一、 如何解鎖Bootloader 一般手機出廠的時候Bootloader

原创 爲什麼要用Kotlin代替Java

我想告訴你一個名爲Kotlin的新編程語言,以及爲什麼你應該爲你的下一個項目考慮它。我曾經更喜歡Java,但去年我發現自己只要能夠編寫Kotlin,在這一點上我真的想不出Java會是一個更好的選擇。 它是由JetBrains開發的

原创 Java併發系列之7 深入理解線程池ThreadPoolExecutor

1. 初識線程池 線程池解決了如下兩個問題 當執行大量的異步任務時,線程池可以減少每個任務的調用切換開銷從而提高應用性能 對執行的線程,和要被執行的任務,提供了管理的方法 此外每個線程池還維護了一些基本統計信息,比如已完成任務

原创 ThreadLocal實現原理分析

大概有一年多的時間沒有更新過文章了,要想輸出一篇優質的文章需要耗費很多精力。可能是之前太過於懶惰了吧,經過一段精力的消耗,漸漸地失去了一些動力。但是寫文章雖然耗時,但是有個好處就是在複習一些知識點的時候,只需要查看之前寫的博客,在

原创 Kotlin標準函數run with let also apply的區別

Kotlin的Standard.kt中的一些函數很相像,很多時候我們不確定使用哪個。這篇文章我將教大家如何區分他們的不同,以及如何在正確的場景下使用正確的函數 Standard.kt中有 run,T.run,with,T.apply

原创 手把手教你使用Android Paging Library

當我們用RecyclerView來展示服務器返回的大量數據時,通常我們都需要實現分頁的效果。以前我們都是通過監聽RecyclerView的滾動事件,當RecyclerView滑動到底部的時候再次請求網絡,把數據展示到RecyclerV

原创 Android Studio 開啓Annotation Processor斷點調試

往gradle.properties文件中添加如下兩行(本教程中是在~/.gradle/gradle.properties文件中添加) org.gradle.jvmargs=-agentlib:jdwp=transport=dt_