原创 JXNU團體程序設計天梯賽訓練賽(一)題解

1001 數翻轉 思路:這題其實並不難,就是要把後面的0全部去掉,然後計算還剩下來多少個字符,直接模擬就好了,唯一可能的坑點就是:0要特殊判斷,因爲0也是1位數字,所以最後的一個0是不能去掉的,只需要對中國特判一下就好了。 #i

原创 Android使用Retrofit報錯java.net.UnknownServiceException

由於Retrofit底層使用是基於OkHttp3的,但是OkHttp3會默認使用密文傳輸,代碼中使用Http協議,也就是使用明文傳輸,所以OkHttp3會主動的報錯,然後阻止線程的運行。所以會直接報錯,但是這個報錯並不是在所有型號

原创 Android 引導頁實現

背景 如果我們的 APP 中需要加載一些資源,或者需要一個過渡的界面讓主界面顯示的不是那麼的突兀,這時候我們就需要使用到引導頁這麼一個概念了,通過在引導頁的期間去加載一些資源,讓用戶不至於乾等,導致給予用戶一個不好的體驗。 And

原创 Android 事件分發

概念 在移動設備上,我們去做一些操作,無論是 Android 還是 IOS 其實在系統中是根據事件驅動的,用戶通過屏幕與手機交互的時候,每一次的點擊,長按,移動等都是一個事件。 而事件分發機制呢?他其實是因爲 Android 每一

原创 Android-異常集

對於我們編寫程序來說,現如今有很多的手機系統都是基於安卓系統開發的,所以就會造成安裝Android系統的手機版本和設備有着很多差異,於是乎就會有在模擬器上運行良好的程序安裝到某款手機上出現崩潰的現象,但是我們沒有那個精力去把所有的

原创 Android 框架

背景 我們有一個需求:我們需要查詢用戶賬號信息,用戶輸入賬號,點擊按鈕可進行查詢賬號信息,如果查詢數據成功,則將數據展示在界面上;如果查詢數據失敗,則在界面上提升獲取數據失敗。 假如說我們不去使用框架來實現這個需求會是什麼樣子的呢

原创 Android Data Binding

前提 之前講過 Android 中的框架:傳送門,裏面有一個 MVVM 框架,在 MVVM 框架中就用到了 Data Binding,在這裏我們詳細說一下,Data Binding 的優勢有什麼呢?有下面幾點: 去掉了 Acti

原创 Android進程間的通信

Android系統中的應用程序之間是不能共享內存的,每一個應用程序都有自己獨有的虛擬機,這樣就保證了數據的安全性,但是這樣就給兩個應用程序之間進行通信帶來了不便,所以我們就知道了兩點: 兩個進程是無法直接進行通信的 跨進程通信是通過

原创 Java設計模式--代理模式

概述 我們平常買火車票的時候是不是就只有三種方式:火車站售票廳,火車票代售處,網上購票,但是在很多年前的話就是前兩種方式。其實火車票代售處就是火車站售票廳的代理,並且火車票代售處可以提供額外的服務,比如電話預約,並且我們知道火

原创 Java設計模式--觀察者模式

概述 是不是你平時安裝程序的時候都會讓你選擇是否訂閱通知,或者我們在網上買東西的物流過程中,每到一個新的進度點都會進行更新,以及通知。其實這裏就用到了我們的觀察者模式。 概念 觀察者模式:定義對象間的一種一對多的依賴關係。當一個對象的

原创 Java設計模式--責任鏈模式

概述 在人類社會中,責任鏈模式是天然存在的,比如在購置房產的社會,購房者會想要一定的折扣,但是根據買的量級的不同,享受的折扣也是不一樣的。其實有時候我們會發現假如你認得這個房產公司的經理的話,你享受的折扣可能會比較大,這是爲什麼呢?因

原创 Java設計模式--適配器模式

概述 在生活中如果兩個不同語言的人怎麼溝通呢?翻譯器。電源有二相插座,但是你是三相插頭,那你怎麼充電呢?插座適配器。電腦要在不同的國家使用,但是每個國家的電壓標準不一樣,那你怎麼使用呢?電源適配器。這些物品就是我們適配器模式中的適配器

原创 Java設計模式--模板方法模式

概述 在現實生活中,很多事情都是有一定的規章制度的,有一定的流程,比如去外面吃飯都是要經過這個流程:排隊,點單,吃飯,買單。一般來說都是這些流程,其實每個吃飯流程不同的就是,點單你點了什麼不同的東西。 但是對於排隊,吃飯,買單基本不同

原创 Java設計模式--工廠方法模式&模擬工廠模式

概念 工廠模式就是實例化對象,用工廠方法來代替new操作,工廠模式包括工廠方法模式和抽象工廠模式,抽象工廠模式是工廠方法模式的拓展。 意圖 工廠模式的意圖就是定義一個接口來創建對象,但是讓子類來決定哪些類需要被實例化,也就是說工廠方法

原创 設計模式--策略模式

策略模式主要是抽象出不變的部分代碼,然後定義算法簇將不同的算法分別封裝起來,這就可以使得客戶端不會受到算法改變的影響。這樣對新增的需求就會由彈性支持,並不需要重構代碼,只需要將該算法封裝好就好了。其實官方的定義是策略模式將可變的部分從