@Kotlin

Stories List
@renzhendezicai

Android面試題之Kotlin協程一文搞定

定義 協程基於線程,是輕量級的線程 作用 處理耗時任務,這種任務常常會阻塞主線程 保證主線程安全,即確保安全地從主線程調用任何suspend函數 特點 讓異步邏輯同步化 最核心的點就是,函數或者一段程序能夠被掛起,稍後再在掛起得位置恢復 掛起函數 使用suspend關鍵字修飾的函數 掛起函數只能在協程體內或其他掛起函數內調用 掛起和阻塞的區別 掛起不會阻塞主線程,主線程

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

為什麼建議大家加快擁抱Kotlin,説點不一樣的

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin自2017年起被Google正式宣佈為Android的編程語言之一,隨後在2019年進一步宣佈Kotlin為Android的首選語言,普及速度逐漸加快,越來越多的公司和項目在引入Kotlin。 那Kotlin有哪些特點,為何建議大家要加快擁抱Kotlin的速度呢? 方

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

Android面試題之Kotlin Jetpack組件LifecycleScope

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 在Kotlin中,LifecycleScope是Android Jetpack架構組件的一部分,主要用於簡化與生命週期相關的協程管理。 它屬於androidx.lifecycle:lifecycle-runtime-ktx庫的一部分,通過結合使用 LifecycleOwne

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

Kotlin協程的取消機制:深入理解和優雅實現

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin協程提供了一種高效的方式來處理併發和異步任務。在協程的生命週期管理中,取消協程是一項重要的操作。本文將深入探討Kotlin協程的取消機制,介紹除了直接使用Job的cancel方法之外的其他方式,並提供優雅的實現策略。 1. 協程取消的基本概念 在Kotlin協程中,取

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@xuexiangjys

DataBinding系列之基礎使用

1.前言 DataBinding, 又名數據綁定,是Android開發中非常重要的基礎技術,它可以將UI組件和數據模型連接起來,使得在數據模型發生變化時,UI組件自動更新,從而節省了大量的代碼和時間。 DataBinding的原理是通過編寫XML佈局文件,在其中使用特定的標籤和語法,將UI組件和數據模型連接起來。當佈局文件被加載時,DataBinding會自動生成綁定代碼,從而將UI組件和數據模型

xuexiangjys Avatar

@xuexiangjys

Nickname xuexiangjys

@renzhendezicai

Kotlin小技巧之用Transformations.map方法轉換LiveData

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 在Kotlin中,transformations.map是用於將一個 LiveData 的數據進行轉換的拓展函數,它屬於 Android Architecture Components 中的 LiveData 轉換部分。這個函數允許你在 LiveData 的數據發生變化時,自動地

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

Android Kotlin中使用 LiveData、ViewModel快速實現MVVM模式

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 使用 Kotlin 實現 MVVM(Model-View-ViewModel)模式是開發 Android 應用程序的一種常見架構方式。MVVM 模式將應用程序的 UI 邏輯和業務邏輯分離,使用 LiveData、ViewModel 和 DataBinding 可以使代碼更加模塊化

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@maenj_ba_lah

Android 架構之 MVC 架構模式

前言 由於 MVP、MVVM、組件化架構的興起,MVC 架構在 android 中的應用變得越來越少,但 MVC 是基礎,理解好 MVC 才能更好的理解 MVP,MVVM,因為後兩種都是基於 MVC 發展而來的。 有些人認為只要架構好 App 就做得好,這種認識其實是錯誤的,架構的本質一定是服務於業務的。每一種架構一定有它的優點和缺點,能適合自己的需求、提高開發效率的架構就是一個好的架構。 例如一

maenj_ba_lah Avatar

@maenj_ba_lah

Nickname Maenj_Ba_lah

@renzhendezicai

Android面試題之Kotlin協程併發問題和互斥鎖

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin 語言提供了多種機制來處理併發和同步,其中包括高層次和低層次的工具。對於常規的併發任務,可以利用 Kotlin 協程提供的結構化併發方式。而對於需要更低層次的鎖定機制,可以使用 Mutex 來實現對共享資源的線程安全訪問。 Kotlin 協程與併發(Coroutine

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

一個Android App最少有幾個線程?實現多線程的方式有哪些?

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 多線程編程是Android應用開發中非常重要的一個環節,可以有效地提升應用的性能和用户體驗。下面是對Android中多線程相關內容的詳細介紹,包括app最少有幾個線程。 1. 基本概念 主線程(UI線程): Android應用啓動時,操作系統會啓動一個主線程,主線程負責更新U

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@renzhendezicai

Android經典面試題之組件化原理、優缺點、實現方法?

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 組件化的原理 組件化是一種軟件架構設計方法,它將複雜的應用程序分解為更小、更易於管理的模塊或組件。在Android開發中,組件化允許開發者將應用分割成獨立的、可複用的模塊,每個模塊封裝特定的功能。 組件化的優點 提高開發效率:團隊成員可以並行開發不同的組件,減少等待時間。

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@lanyiyun666

Nacos改為MySQL數據源報錯:No DataSource set

Nacos 更改數據源為 MySQL 時解決 "No DataSource set" 錯誤的指南 在使用 Nacos 作為配置中心時,通常會希望將其默認嵌入式數據源更改為MySQL數據庫。然而,在嘗試進行這種配置更改的過程中,許多開發者可能會遇到 "No DataSource set" 這樣的錯誤。這通常是由於配置錯誤或數據源初始化不完整導致的。以下是詳細的步驟,幫助您解決此問題,確保 Nacos

lanyiyun666 Avatar

@lanyiyun666

Nickname 藍易雲

@lanyiyun666

Ubuntu中設置代理的方式

Ubuntu 設置代理的三種主要方式 在 Ubuntu 系統中,設置代理可以通過以下三種主要方式進行:使用環境變量、修改APT配置以及通過系統設置。本文將為您詳細介紹這三種方法,幫助您在不同需求場景下配置合適的代理方式。 1. 使用環境變量設置代理 這種方法適用於臨時代理設置,適合對某些特定任務或者會話使用代理。使用這種方法設置的代理在關閉終端或重啓系統後會失效。具體步驟如下: 在終端中輸入以下命

lanyiyun666 Avatar

@lanyiyun666

Nickname 藍易雲

@lanyiyun666

Centos7安裝chrome+chromedriver以便實現selenium自動化詳細教程

在CentOS 7上安裝Chrome、Chromedriver和Selenium的步驟詳解 在CentOS 7系統上配置Selenium進行自動化測試需要安裝Google Chrome瀏覽器、Chromedriver以及Selenium庫。這個過程涉及到多個步驟,每一步都需要謹慎操作,以確保系統和工具能夠順利協作。以下是分步驟的詳細講解,包括每個命令的解釋和作用。 步驟 1:安裝Google Ch

lanyiyun666 Avatar

@lanyiyun666

Nickname 藍易雲

@guiyanakuang

使用 Compose Multiplatform 來創建 macOS 系統托盤

打造完美的 macOS 系統托盤 引言 在現代桌面應用程序中,系統托盤已經成為不可或缺的一部分。它為用户提供了一種快捷、高效的方式來與應用程序進行交互,而無需打開主窗口。系統托盤的優勢主要體現在以下幾個方面: 便捷訪問:用户可以快速查看應用狀態、執行常用操作。 減少視覺干擾:不會佔用寶貴的屏幕空間。 後台運行:對於需要在後台持續運行的應用來説,系統托盤是理想的界面選擇。 本文將以 ma

guiyanakuang Avatar

@guiyanakuang

Nickname GeekCat

@guiyanakuang

Kotlin Multiplatform 入門:構建你的第一個跨平台應用

這是關於 Kotlin Multiplatform 開發博客系列的第二篇文章,我計劃每週更新一篇文章,文章主題可能會以基礎與進階內容交替進行。 引言 本文面向對 Kotlin Multiplatform (KMP) 感興趣的開發者,特別是那些希望探索如何使用單一代碼庫開發跨平台應用的程序員。無論您是移動開發者、前端工程師還是全棧開發者,只要您對提高開發效率和跨平台開發感興趣,瞭解一下並體驗一下 K

guiyanakuang Avatar

@guiyanakuang

Nickname GeekCat

@lanyiyun666

CompletableFuture總結和實踐

CompletableFuture詳解與實踐 🌟 CompletableFuture是Java 8中引入的一種全新的異步編程工具,它是對Future的增強,提供了更加強大的異步處理能力。本文將對CompletableFuture進行深入解析,幫助您更好地理解和應用它。 1. 為什麼選擇CompletableFuture?🤔 在多線程編程中,我們經常需要等待某個任務完成後再執行下一步操作。傳統的

lanyiyun666 Avatar

@lanyiyun666

Nickname 藍易雲

@koogua

如何在 Ubuntu 上配置 Kotlin 應用環境 ?

Kotlin 是一種運行在 Java 虛擬機 (JVM) 上的現代編程語言,它同時支持函數式和麪向對象編程。它可與 Java 互操作,並以其簡潔的語法而聞名。在本指南中,我們將介紹在 Ubuntu 系統上準備好 Kotlin 開發環境的要點,包括 Java、Kotlin 和合適的集成開發環境 (IDE) 的安裝。 Step 1: Update Your System 按 Ctrl + Alt +

koogua Avatar

@koogua

Nickname 鳩摩智首席音效師

@guiyanakuang

別再説 Kotlin Serialization 難用了!

我不止一次見到有開發者吐槽 Kotlin Serialization 難用。尤其是 Java 開發者將它與 Jackson \ Gson 來對比。這種印象主要源於對其工作原理的誤解,Kotlin Serialization 並不依賴運行時反射機制來完成序列化/反序列化操作。 這個設計選擇是經過深思熟慮的:Kotlin 是一個多平台語言,意味着同一份代碼可以編譯到 JVM、Android、Nativ

guiyanakuang Avatar

@guiyanakuang

Nickname GeekCat

@guiyanakuang

KMP 桌面應用開機啓動完全指南

在開發跨平台桌面應用時,開機自啓動是一個常見且重要的功能需求。本文將詳細介紹如何使用 Kotlin Multiplatform (KMP) 實現 Windows、macOS 和 Linux 三大平台的開機自啓動功能,包括接口設計、平台特性和具體實現。 所有源代碼基於我開源項目 crosspaste-desktop,如果對你有幫助歡迎點個 star ❤️ 1.設計 1.1 統一接口 為了實現跨平台的

guiyanakuang Avatar

@guiyanakuang

Nickname GeekCat

@guiyanakuang

還沒用過 Okio? 一個 KMP 庫幫你統一多平台文件操作

在使用 Kotlin Compose Multiplatform 開發跨平台應用時,處理文件操作是一個常見但棘手的問題。不同平台(如 Android、iOS、Mac、Windows 和 Linux)的文件系統存在顯著差異,如果為每個平台單獨編寫文件操作代碼,不僅會導致代碼重複,還容易引入平台特定的 bug。本文將介紹如何使用 Okio 庫來統一處理跨平台的文件操作。 平台差異帶來的挑戰 在不

guiyanakuang Avatar

@guiyanakuang

Nickname GeekCat

@lanyiyun666

MySQL之show profile相關總結

MySQL中的 SHOW PROFILE 性能分析詳解 在數據庫優化過程中,SHOW PROFILE 是MySQL提供的一個強大工具,用於分析查詢的執行性能。通過展示查詢在不同階段的執行時間和資源消耗,開發人員可以精準定位性能瓶頸,從而進行有效優化。本文將詳細介紹如何使用 SHOW PROFILE 進行性能分析,並結合實例解釋其應用方法。📊 1. SHOW PROFILE 概述 🌟 SHOW

lanyiyun666 Avatar

@lanyiyun666

Nickname 藍易雲

@da_miao_zi

從負數絕對值的計算來看Ruby的一個“奇葩”行為

計算一個數的絕對值是非常基礎的操作,幾乎所有主流的編程語言都內置了相應的函數或方法。 在 PHP、Python、SQL 等語言中,直接調用 abs() 函數即可,例如 abs(-1)。到了 Java、C# 這類面向對象的語言中,abs() 通常是 Math 類的靜態方法,調用時要加上前綴 Math.,即 Math.abs(-1)。 Go 語言就要稍微麻煩一點了,因為 math 包中的 Abs()

da_miao_zi Avatar

@da_miao_zi

Nickname da_miao_zi