原创 Git新手教程-向倉庫中添加commit

前言 在該篇文章中,我們終於要來學習如何創建自己的提交(commit),在前面的文章中,我們已經學會使用 git init 命令來創建新倉庫,使用 git clone 命令來複制現有倉庫,使用 git log 命令來查看現有的提交。以及使

原创 1024程序員節:致敬最可愛的人和有溫度的代碼

今天是1024程序員節。這個節日誕生後的短短几年,程序員已經變成了網絡上段子最多的羣體之一。但是我卻越來越深刻地感覺到,如果要問誰是這個時代最可愛的人,那一定是我們的程序員。 也許有人覺得不以爲然:你說的就是那些“碼農”嗎? 他們看起來

原创 Android開發四年面試相關知識整理

Android 在 Android 9(Pie)[android:targetSdkVersion = 28]之後將網絡通信默認配置爲禁止了明文傳輸。所謂明文傳輸就是Http請求,所以如果我們開發版本高於 28 ,打包之後我們 app 中

原创 Android Binder原理:學習Binder前必須要瞭解的知識點!

前言 Binder原理是掌握系統底層原理的基石,也是進階高級工程師的必備知識點,這篇文章不會過多介紹Binder原理,而是講解學習Binder前需要的掌握的知識點。 1.Linux和Android的IPC機制種類 IPC全名爲inter-

原创 Android音視頻開發;鬥魚直播實現

一、直播的本質 實時推送/拉取音視頻數據   二、視頻直播流程 視頻直播的流程可以分爲如下幾步: (1)採集 (2)處理 (3)編碼和封裝 (4)推流到服務器 (5)服務器流分發 (6)播放器流播放   1、採集 視頻的採集涉及兩方面

原创 AspectJ AOP教程:實現Android基於註解無侵入埋點、性能監控

AOP(Aspect-Oriented Programming),即是面向切面編程,AspectJ是實現AOP的一個重要的框架,它是使用AspectJ編譯器(ajc),在編譯時期,在關鍵的的地方插入部分代碼,處理相關邏輯,比如可以用於打印

原创 騰訊Android社招面試源碼相關,對不起還是問到三次握手.四次握手了

一、如何優化自定義View 在要在onDraw或是onLayout()中去創建對象,因爲onDraw()方法可能會被頻繁調用,可以在view的構造函數中進行創建對象; 降低view的刷新頻率,儘可能減少不必要的調用invalidate(

原创 圖解算法:單鏈表兩兩反轉 | 眼睛會了手就會系列

一. 序 鏈表作爲一種基本的數據結構,本身理解起來,很簡單。它通過指針或者叫引用,將一組零散的內存空間(結點),串聯起來組成一個數據存儲結構。   鏈表根據其指針的指向和豐富程度,可以分爲單鏈表、雙向鏈表、循環鏈表、雙向循環鏈表。其差別

原创 屏幕適配:修改屏幕像素密度,隨便設dp

前提 平時xml中view的寬高單位都是dp居多,我們的設計師一般會選擇一款機型的屏幕尺寸作爲設計的目標尺寸。 那麼,如何根據目標尺寸的屏幕密度,適配我們種類繁多的機型? 實現目標 將以dp作爲單位,以目標尺寸標註的寬高,和當前機型的比例

原创 Flutter 混合棧複用原理

本文將以 Android 視角,來扒一扒 Flutter 混合棧的前世今生。其實也就是從 1.0 正式發佈到現在 1.9 版本的一些變更。 本文將會從以下幾個方面來分析: 什麼是 Flutter 混合棧 爲什麼會產生問題 處理混合棧的相關

原创 Android | 代碼混淆到底做了什麼?

前言 代碼混淆對於每個入門的 Android 工程師來說都不會太陌生,因爲在編譯正式版本時,這是一個必不可少的過程。而且使用代碼混淆也相當簡單,簡單到只需要配置一句minifyEnabled true。但是你是否理解混淆的原理,如果問你代

原创 互聯網首發 | 閒魚程序員公開多年 Flutter 實踐經驗

簡介 flutter-boot核心解決了混合開發模式下的兩個問題:flutter混合開發的工程化設計和混合棧。那flutter-boot是如何解決的呢? 首先在工程化設計的問題上,flutter-boot建立了一套標準的工程創建流程和友好

原创 Android項目組件化/模塊化,用LiveData打造屬於你組件通信框架EventBus

預備知識 Android 基礎知識 LiveData的基本定義和用法 開源消息框架EventBus的基本瞭解 看完本文能夠學到什麼 Android項目組件化/模塊化 組件通信框架Router/EventBus的探究 用LiveData來實

原创 Android-kotlin-coroutine協程的概念

一. 進程,線程,協程 概念 進程與線程 進程是資源分配的最小單位,線程是程序執行的最小單位。 進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,這種操作非常昂貴。而線程是共享進程

原创 Android入門知識:各種佈局管理器的常見參數

先說一下一些可能通用的參數 android:layout_width & android:layout_height:佈局的寬和高,一般不用改,參數選 match_parent 就行 android:background:佈局的背景 an