自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linyu_218的博客

平凡之路

  • 博客(24)
  • 资源 (3)
  • 收藏
  • 关注

原创 声明式UI和命令式UI

编程范式: 声明式 UI 侧重于“什么”(描述最终状态),而命令式 UI 侧重于“如何”(具体步骤)。开发效率和可维护性: 声明式 UI 通常提供了更高的开发效率和可维护性,特别是在复杂应用中。性能和控制: 命令式 UI 在某些情况下可能提供更好的性能和更精细的控制,但代价是增加了开发的复杂性。随着现代前端和移动框架的发展,声明式 UI 正变得越来越流行,它提供了一个更高级别的抽象,简化了开发过程,尤其是在构建复杂的用户界面时。

2024-02-07 16:13:59 1135

原创 Kotlin泛型

Kotlin中声明和使用泛型类及泛型函数的基本概念和Java类似。同时Kotlin引入了新的概念,比如室化类型参数和声明点变型。这些概念对于我们来说可能很新奇。实化类型参数: 允许你在运行时的内联函数调用引用作为类型实参的具体类型(对普通的类和函数来说,这样行不通,因为类型实参在运行时会被擦除)。声明点变型: 可以说明一个带类型参数的泛型类型,是否是另一个泛型类型的字类型或者超类型,它们的基础类型相同但类型参数不同。例如,它能调节是否可以把List<Int> 类型的参数传给期望List&

2021-08-15 14:57:05 442

转载 Kotlin协程

协程 Coroutines,指各任务协作运行;线程是操作系统层面的,由操作系统调度执行,我们可以开启一个线程,但无法知道线程什么时候执行,什么时候执行完,因此我们通常使用回调的形式在线程执行完之后接受执行的结果,线程的运行是抢占式的,后起的 B 线程可能抢占先起的 A 线程的资源,A 线程会被阻塞,从而造成资源的浪费。协程是应用层面的,它由虚拟机进行调度,我们可以随意开启和终止协程的运行,协程是非抢占氏的,如果当前协程在运行,除非当前运行的协程主动 退让,挂起,否则其他协程不会抢占运行机会,由于各任务写

2021-08-03 17:08:21 538

转载 LiveData的基本使用

我们在《ViewModel的基本使用》这篇文章中提到了,ViewModel的主要作用是存放页面所需要的各种数据,而当这些数据发生变化时,我们采用接口的方式实现对页面的通知。这样做是可行的,但如果要观察的数据很多,则需要定义大量的接口,代码显得冗余。为此,Android为我们提供了LiveData组件,帮助我们完成ViewModel与页面组件之间的通信。所以,LiveData通常是被放在ViewModel中使用。LiveData是一个可被观察的数据容器类。什么意思呢?我们可以将LiveData理解为一

2021-07-28 18:44:17 835 1

转载 ViewModel的基本使用

在页面(Activity/Fragment)很简单的情况下,通常我们会将UI交互,数据获取与处理等相关业务逻辑,全部写在页面中。但是在页面复杂的情况下,这样做是不合适的,它不符合“单一责任”原则。页面只应该负责接收用户的交互,以及将数据展示到屏幕上,相关数据应该单独存放和处理。为此,Android为我们提供了ViewModel类,专门用于存放应用程序页面所需的数据。它将页面所需的数据从页面中剥离出来,页面只需要处理用户交互,以及负责展示数据的工作。另外,如果我们的应用程序支持横竖屏切换,当用户旋

2021-07-28 18:29:43 1159

原创 Kotlin 进阶语法 (1)

Collections 集合主要集合: List, Set, Map需创建可变集合时,添加mutableval list1: MutableList<Int> = mutableListOf(1, 2, 3)val list2: List<Int> = ListOf(1, 2, 3) 集合函数 val numbers = listOf(1, -2, 3, -4, 5, -6) // filter 截取 val positives = number

2021-07-28 13:53:08 226

转载 Kotlin语法入门

Kotlin是什么Kotlin是Android开发的一级编程语言(Google官方认证)由JetBrains公司在2010年推出 & 开源,与Java语言互通 & 具备多种Java尚不支持的新特性Android Studio3.0后的版本支持Kotlin优点码更少、可读性更强 - 花更少的时间来编写代码与理解他人的代码成熟的语言与环境 - 自 2011 年创建以来,Kotlin 不仅通过语言而且通过强大的工具在整个生态系统中不断发展。 现在,它已无缝集成到 Android

2021-07-27 20:40:18 143

转载 Flutter 动态化探索

一、前言Flutter 跨端技术一经推出便在业内赢得了不错的口碑,它在“多端一致”和“渲染性能”上的优势让其他跨端方案很难比拟。虽然 Flutter 的成长曲线和未来前景看起来都很好,但不可否认的是,目前 Flutter 仍处在发展阶段,很多大型互联网企业都无法毫无顾虑地让全线 App 接入,而其中最主要的顾虑是包大小与动态化。动态化代表着更短的需求上线路径,代表着大大压缩了原始包的大小,从而获得更高的用户下载意向,也代表着更健全的线上质量维护体系。当明白这些意义后,我们也就不难理解,在 Flutter

2021-07-04 00:47:48 593

原创 进阶技术 - 如何实现跨进程传递大图?(腾讯面试题)

跨进程传输大图片有哪些常见的方案:1. 文件传输将图片保存在指定路径区域,然后将储存位置信息跨进程发送给其它进程,其它进程通过查找路径读取图片文件。这种方案存在的缺点,在于进程首先需要进行写文件操作,然后再去读取文件,性能低下。2.IPC传输IPC传递图片的方式:Binder,Binder是Android提供的一种类型共享内存的方式,使用方便,性能较高,但传输的数据有大小限制。Socket、管道,Socket和管道传递数据会涉及到至少两次数据拷贝,当数据量大的时候性能低下,除此之外,Sock

2021-06-22 22:34:24 1847

转载 面试---基础性能篇

— 转载自极客时间《Android开发高手课 》,作者张绍文。应用崩溃了,你应该如何去分析?解决崩溃跟破案一样需要经验,我们分析的问题越多越熟练,定位问题就会越快越准。当然这里也有很多套路,比如对于“案发现场”我们应该留意哪些信息?怎样找到更多的“证人”和“线索”?“侦查案件”的一般流程是什么?对不同类型的“案件”分别应该使用什么样的调查方式?崩溃现场崩溃现场是我们的“第一案发现场”,它保留着很多有价值的线索。在这里我们挖掘到的信息越多,下一步分析的方向就越清晰,而不是去靠盲目猜测。操作系统是.

2021-06-08 15:15:42 631

转载 做一名有高度的移动开发工程师

专栏更新至今,不知不觉第二模块“高效开发”也已经更新完了。稳定性、内存、卡顿、I/O、网络,“高质量开发”模块打通了从应用层、Android 系统层、Linux 内核层再到硬件层的优化路径,帮助我们打通“任督二脉”,成为一名 Android 开发高手。所谓“高效开发”,可以给我们带来了什么呢?移动互联网发展到今天,所有人都说“提质增效”,但是团队效能不是靠我们封装一个工具类或者组件,给其他人低成本复用就够了。持续交付平台、测试平台、发布平台、数据平台、网络平台…我希望你可以跳出客户端的限制,去思考整个产品

2021-06-07 14:17:13 151

转载 优秀的架构都是演进而来的

— 转载自极客时间《Android开发高手课 》,作者张绍文。每个程序员心中都有一个成为架构师的梦想,那成为架构师这个目标是否“遥不可及”呢?从我的工作经历来看,我一共负责过搜狗输入法、微信等 4 款亿级产品的架构工作,可能有同学会好奇这些大型的 App 是如何做架构设计的。从我接手的这些应用的现实情况来看,看似光鲜的外表下都有一颗千疮百孔的心:各种日志随便输出、单例满天飞、生命周期混乱、线程乱创建、线程不安全这些问题随处可见。所以你可以看到每个大型应用都背负着沉重的历史技术债务,架构师很重要的一项.

2021-06-06 18:13:16 358

原创 算法面试笔记

剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路前序 [1] [2,4,7] [3,5,6,8]中序 [4,7,2] [1] [5,3,8,6]前序遍历可以确认

2021-06-06 16:40:53 95

原创 Android 自定义圆角、立体ImageView -- MaterialImageView

Android 自定义圆角、立体ImageView – MaterialImageView public class MaterialImageView extends ImageView { private GradientDrawable mMaskDrawable; private Paint mMaskedPaint; private boolean mCacheV

2019-11-29 11:03:24 570

原创 通过Drawable获取ImageView的Image真实宽高的两种方法

getDrawable().getBounds().height()与getDrawable().getIntrinsicHeight()获得图片宽高 ImageView在不同的分辨率的屏幕中获取的宽高值是不准确的,需要根据density缩放 // 通过getBounds() 获得ImageView中Image的真实宽高,

2019-11-29 11:03:18 1887

原创 属性动画详解之ObjectAnimator、ValueAnimator、PropertyValuesHolder、Keyframe 之间关系

ObjectAnimator ObjectAnimator.ofFloat(example, "rotationX", 0, 360).setDuration(3000).start(); ObjectAnimator.ofFloat(example, "rotationY", 0, 360).setDuration(3000).start();ValueAnimator Valu

2019-11-29 11:03:08 703

原创 爬楼梯算法的五种解决办法-简单演示

下面贴出五种解法: 首先简单递推可知 一级 1 种 二级 2 种 三级 3 种 四级 5 种 五级 8 种 N级 (N-1)的走法数+(N-2)的走法和/** * 递归算法 一行 时间复制度O(2^(N/2))~O(2^N) 空间复杂度O(N) */public int fib02(int n){ return n==1||n==2?n:fi

2019-11-29 11:02:57 887

原创 Android EditText 不显示光标 以及自定义光标

Android EditText 不显示光标解决方案1. EditText使用的是图片背景 如果是EditText使用的是图片背景会遮住光标 通过对EditText设置属性 android:textCursorDrawable=”@null” 一般可以解决这个问题。 ===>这个是安卓属性源码对这条属性的解释 <!-- Reference to

2019-11-29 11:02:49 1870

原创 Android 拍照以及从相册获取图片的两种方式

Android 拍照以及从相册获取图片的两种方式项目开发常用工具类public class ImageUtils { public static final int GET_IMAGE_BY_CAMERA = 5001; public static final int GET_IMAGE_FROM_PHONE = 5002; public static final int C

2019-11-29 11:01:52 577

原创 常见问题总结初稿

常见问题总结在广告机和开发版Android项目开发过程中的个人经验总结,分为以下几个栏目(需要结合工作以来的问题解决案例):广告机屏幕适配图片展示模糊、图片占用内存过高问题动画抖动问题白屏问题优化常见OOM解决方案ANR问题解决方案大量图片帧动画实现动画流畅度经验总结APP开机启动方案Crash 日志收集、重启Rxjava背压使用软键盘遮挡的问题架构技术栈制作内...

2018-08-06 18:40:52 760

原创 LeetCode Maximum Depth of Binary Tree 解法

https://leetcode.com/problems/maximum-depth-of-binary-tree/description/原题链接原文: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path

2018-01-24 21:47:23 223

原创 LeetCode Search in Rotated Sorted Array 解法

https://leetcode.com/problems/search-in-rotated-sorted-array/description/原题链接 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4

2018-01-23 20:10:27 221

原创 LeetCode Subsets 解法

https://leetcode.com/problems/subsets/description/原题链接给定一个含不同整数的集合,返回其所有的子集 注意 子集中的元素排列必须是非降序的,解集必须不包含重复的子集如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2],

2018-01-22 21:48:34 285

原创 微信支付DEMO完整版

看到很多小伙伴在找微信支付Demo,我在这里发一下,这个Demo可以直接运行并能在线支付1分钱。因为是Demo,多次调用支付可能会失败。 微信支付DEMO完整版微信开放平台

2016-01-19 10:01:06 1800

Git版本控制管理 高清完整PDF版

Git是一款免费、开源的分布式版本控制系统,最早由LinilusTorvalds创建,用于管理Linux内核开发,现已成为分布式版本控制的主流工具。 《Git版本控制管理(第2版)》是学习掌握Git的最佳教程,总共分为21章,其内容涵盖了如何在多种真实开发环境中使用Git;洞察Git的常用案例、初始任务和基本功能;如何在集中和分布式版本控制中使用Git;使用Git管理合并、冲突、补丁和差异;获得诸如重新定义变基(rebasing)、钩子(hook)以及处理子模块(子项目)等的高级技巧;Git如何与SVN版本库交互(包括SVN向Git的转换);通过GitHub导航、使用开源项目,并对开源项目做贡献。 《Git版本控制管理(第2版)》适合需要进行版本控制的开发团队成员阅读,对Git感兴趣的开发人员也可以从中获益。

2018-11-26

电商商品分类大全与尺码关联表

商品分类大全与尺码关联表

2016-08-26

微信支付DEMO完整版

微信支付DEMO完整版,可以在线支付1分钱

2016-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除