原创 Kotlin 協程由淺入深

任何UI框架都有自己的主線程來進行渲染界面和觀察觸摸事件,這個線程絕對是你應該關注的最重要的線程,用戶永遠不知道你是否使用了AsyncTask或者Coroutine來編寫你的代碼,但是用戶卻可以感受到你的應用的響應速度,因此要如何組織應用所

原创 Kotlin之Flow由淺入深,對比Rxjava

原文鏈接sequencesequence又被稱爲惰性集合操作,下面舉例說明funmain(){valsequence=sequenceOf(1,2,3,4)valresult:Sequence<Int>=sequence.map{i->pr

原创 Spannale的flags的真正含義,有圖有真相

當你第一眼看到Spannable標誌的EXCLUSIVE和INCLUSIVE時,我以爲他們只是代表着各種樣式span是否包含SpannableString中指定的開始和結束的索引位置,但事實證明這種想法是錯誤的,我們可以用下面的例子證明它v

原创 Android佈局優化,沒有理論,只有實踐

Android佈局優化是一個課題,本文僅從實際中的使用介紹一些優化的技巧。平常的項目中使用的一些佈局,第一眼看上去像是多個空間搭建出來的,但其實只需要一個原生控件就可以。個人中心的設置佈局優化之前的佈局可以使用一個LinearLayout或

原创 Kettle數據庫遷移實戰(四)--使用SQL腳本

系列文章:Kettle數據庫遷移實戰(一)Kettle數據庫遷移實戰(二)–批量導入Kettle數據庫遷移實戰(三)–表輸入使用上一個步驟的變量作爲參數Kettle實戰(五)–使用java代碼腳本使使用kettle,可以說是幾乎不用謝任何S

原创 Kettle實戰(五)--使用java代碼腳本

在使用kettle遷移數據時,有時候可能需要使用JAVA代碼來處理一些數據,這個時候需要腳本->java代碼

原创 Android Studio中調試Java代碼

在寫Android項目的時候,經常需要驗證一些Java功能,但是直接在項目裏寫,還得重啓項目,非常不方便。其實Android Studio提供了在項目之外調試代碼的功能。

原创 AndroidStudio配置bebug和release密鑰文件,生成簽名

開發中我們經常需要在測試版本和正式版本之間來回切換,而測試版本和發佈版本默認情況下是不能同時安裝的(根本原因是簽名不同),使用AndroidStudio運行的時候,AndroidStudio會自動幫我們生成簽名。不管是debug運行的時候還

原创 android百度地圖自定義marker,使用網絡圖片

由於提供的基礎marker只提供icon,所以如果marker需要顯示更多信息,就需要自定義View使用網絡圖片標記marker,需要等圖片加載完畢再添加markerfor(GridPoint gridPoint:pointList){//

原创 Kettle數據庫遷移實戰(三)--表輸入使用上一個步驟的變量作爲參數

使用kettle,有時候會遇到這種需求。使用表輸入控件,會使用上一個步驟的變量作爲查詢參數,而在輸入控件裏使用上一個步驟的變量作爲參數,要求輸入流裏必須只有一個變量,但是一般輸入流會有多個變量,這個時候就要用字段選擇控件處理一下

原创 Kettle數據庫遷移實戰

數據庫遷移不是一件簡單的事情,特別是需要從Oracle遷移到MySQL或者sqlserver遷移到MySQL等等,而數據處理中還會遇到很多問題,譬如表結構不一樣,字段需要特殊處理等,而Kettle使用起來則非常方便,不需要連接太多的SQL知

原创 View的繪製流程

View的繪製流程主要包括measure,layout,draw三大流程,measure用來確定view的測量寬/高,layout用來確定view的最終寬/高和四個頂點的位置,而draw則將View繪製到屏幕上Measure如果只是一個原始

原创 MeasureSpec

文章大部分內容引自Android開發藝術探索MeasureSpec系統內部是通過MeasureSpec來進行view的測量,但是正常情況下我們無法使用它,但是我們可以使用LayoutParams,在view測量的時候,系統會將LayoutP

原创 google官方權限申請庫EasyPermissions使用方法

去github上引入最新的庫地址重寫onRequestPermissionsResult,將請求結果轉發到EasyPermisson庫@OverridepublicvoidonRequestPermissionsResult(intrequ

原创 js數組中基本數據類型去重和根據對象對屬性去重合並

//這裏是我用的方法,關於數組去重的其它方法還可以參考下方鏈接數組去重以及數組對象中多屬性判斷去重letdata=[{name:"a",age:20,count:5},{name:"b",age:21,count:8},{name:"a",