自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 Activity生命周期及启动模式详解

Activity生命周期及启动模式

2022-04-14 14:20:12 2299

原创 排序算法小结-左神

排序算法学习总结,对于归并排序,堆排序,及快排有深刻感悟!

2022-01-04 20:45:06 663

原创 安卓面试之自定义View流程及原理

自定义View原理学习博客整理

2021-12-06 20:47:33 3069

原创 安卓面试基础之JVM

1.哪些情况下的对象会被垃圾回收机制处理掉?如何判断对象已死?1.引用计数算法给对象添加一个引用计数器。但是难以解决循环引用问题。2.可达性分析算法通过一系列的 ‘GC Roots’ 的对象作为起始点,从这些节点出发所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连的时候说明对象不可用。GC ROOTS对象:虚拟机栈(栈帧中的本地变量表)中引用的对象本地方法栈中 JNI(即一般说的 Native 方法) 引用的对象方法区中类静态属性引用的对象方法区中常量

2021-12-03 20:38:44 2876

原创 Android中Crash原理及监控处理

什么是Crash?在应用启动及运行中,出现闪退(崩溃),屏幕提示当前程序停止运行的弹窗,类似于windows的应用程序崩溃。为什么会出现崩溃?概括来讲,就是程序运行中有未捕获的异常,未被 try-catch,导致进程被杀。线程中抛出异常后的处理逻辑?一旦线程出现异常,并且代码中为捕获的情况下,JVM 将调用 Thread的 dispatchUncaughtException 方法把异常传递给线程的未捕获异常处理器。默认情况下,线程是没有处理未捕获异常的能力的,线程组处理未捕获异常的逻辑

2021-12-01 14:03:05 2480 2

原创 安卓BroadcastReceiver基础

1.作用用于监听 / 接收 应用发出的广播消息,并做出响应应用场景a. 不同组件之间通信(包括应用内 / 不同应用之间)b. 与 Android 系统在特定情况下的通信​ 如当电话呼入时、网络可用时c. 多线程通信2.原理Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。因此,Android将广播的发送者 和 接收者 解耦,使得系统方便集成,更易扩展模型中有3个角色:消息订阅者(广播接收者)消息发布者(广播发布者)消息

2021-11-30 10:44:49 119

原创 Flutter开发学习实战之商城项目(后端+Flutter端)

Flutter_mall 商城项目引言:此Flutter工程项目是在学习 youxinLu 大佬写的一个商城项目:作者项目简介:Flutter_Mall是一款Flutter开源在线商城应用程序,是基于litemall基础上进行开发,litemall包含了Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端感兴趣的同学可以自行研究部署,Flutter_Mall基本上包含了litemall中小程序的功能。学习的最好方法就是动手实践:于是将 youxinL

2021-11-24 21:00:06 4835

原创 Flutter开发学习课程携程app开发(完)

1.Flutter 列表选择器插件1. 推荐插件:azlistviewFlutter 城市列表、联系人列表,索引&悬停。基于scrollable_positioned_list.AzListView, SuspensionView, IndexBar.Features轻松创建城市列表或联系人列表界面。列表项按A-Z分组。带有悬停效果Header。支持自定义Header。支持索引联动。IndexBar支持自定义样式。IndexBar支持本地图片。允许滚动到列表中的特定项目。

2021-11-24 11:50:35 2122

原创 移动开发搭建本地商城接口

Windows搭建Litemall后台接口1.安装 Mysql2.配置JDK环境。3.配置Maven1.window安装mysql安装Mysql方法:https://blog.csdn.net/qq_40067488/article/details/115416439mysql常用命令:https://www.jianshu.com/p/8f8d8161631f遇到的问题:Mysql启动问题:一定要以管理员身份打开cmd执行: net start mysqlmysql数据库启动

2021-11-23 17:24:02 2034

原创 Flutter开发学习课程携程app开发(三)

1.效果展示需要实现的功能:自定义一个 SearchBar, 它在主页和搜索页会呈现不同的状态显示。在搜索框中无输入的时候显示一个语音小图标,有输入的时候显示一个清除图标。在 HomePage 首页中,用一个 Stack 将 appBar 叠加在内容区的上方,通过监听 NotificationListener 的滚动来改变 appBar的背景色。在搜索界面中 SearchPage 中,实现了一个快搜的功能,并且高亮搜索的关键字,通过 ListView 来展示搜索的结果。学习到的知识点:

2021-11-10 21:27:41 1835

原创 Java中的反射基础及其应用场景

1.基础1、反射的定义:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。2、Java 反射机制的功能在运行时判断任意一个对象所属的类。在运行时构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象的方法。生成动态代理。3Java 反射机制的应用场景逆向代码 ,例如反编译.

2021-11-09 16:16:22 12315

原创 Flutter开发学习课程携程app开发(二)

1.旅拍界面展示2.界面布局顶部是 TabBar 配合 TabBarView 实现页面滑动翻页TabBarView 用 Flexible 包裹 Flexible 包裹充满整个页面内容区部分采用 StaggeredGridView 构建瀑布流式布局,引入插件 flutter_staggered_grid_view。自定义 LoadingContainer 在进入界面的时候弹出一个加载菊花。通过 RefreshIndicator 控件实现下拉刷新。通过 MediaQuery.removeP

2021-11-09 14:18:02 1534

原创 Flutter开发学习课程携程app开发(一)

1.页面数据1.数据展示接口地址: json 格式对应的数据界面展示效果:2.数据请求应用Dio进行数据请求:home_dao.dart在 配置文件 pubspec.yaml 中引入 Dio依赖插件:dio: ^4.0.0import 'dart:async';import 'package:dio/dio.dart';import 'package:flutter_trip2/model/home_model.dart';const HOME_URL = 'http

2021-11-08 16:41:13 354

原创 Flutter开发之顶部导航实现

引言学习Flutter的基础控件的使用。推荐学习的书籍:《Flutter实战-第二版》Flutter官方教程实现顶部导航主要控件:TabBar 顶部导航TabBarView 导航视图辅助控件:Scaffold: 实现了基本的 material 布局样式Flexible:Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平

2021-11-05 15:26:58 849

原创 Flutter底部导航路由实现

引言学习Flutter的基础控件的使用。推荐学习的书籍:《Flutter实战-第二版》Flutter官方教程咸鱼技术团队:1.底部导航实现要实现这样的效果,我们需要用到以下控件:ScaffoldPageViewBottomNavigationBarBottomNavigationBarItemPageController2. Widget属性说明1.Scaffold 控件一个完整的路由页可能会包含导航栏、抽屉菜单(Drawer) 以及底部.

2021-11-05 14:56:12 1119

原创 Android中的序列化与反序列化基础

高赞学习博客:https://juejin.cn/post/6844903848167866375#heading-61.含义,意义及场景序列化: 将对象写入到 IO 流中。反序列化: 将对象从 IO 流中恢复。意义: 序列化机制允许将实现了序列化接口的 Java 对象转换成字节序列,这些字节序列可以保存在磁盘中,或通过网络传输,以达到以后恢复成原来的java对象。序列化机制使得对象可以脱离程序的运行而独立存在。使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote .

2021-11-02 14:43:07 774 1

原创 安卓自定义注解基础(一)

学习博客:https://juejin.cn/post/68449034378349117571.概念篇什么是注解先来看看Java文档中的定义An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effec.

2021-11-01 19:04:06 311

原创 安卓Bitmap基础

参考博客:https://juejin.cn/post/6844903641032163336Bitmap加载1.Bitmap基础说明ARGB_8888:ARGB分别代表的是透明度,红色,绿色,蓝色,每个值分别用 8bit 来记录,也就是一个像素会占用4byte,共32bit.ARGB_4444:ARGB的是每个值分别用4bit来记录,一个像素会占用2byte,共16bit.RGB_565:R=5bit,G=6bit,B=5bit,不存在透明度,每个像素会占用2byte,共16bit.A.

2021-11-01 16:32:46 260

原创 Java中的代理模式

Java中的代理模式意图: 为其他对象提供一种代理以控制对这个对象的访问。何时使用: 想在访问一个类时做一些控制。关键代码: 实现与被代理类组合。应用实例: spring aop,retrofit,binder,。优点:1、职责清晰。2、高扩展性。3、智能化。缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。注意事项:1、和适配器模式的区别:适配器模式

2021-11-01 16:07:16 389

原创 Java集合框架基础

ArrayListpublic class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable内部以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。.

2021-10-26 17:24:13 80

原创 LeetCode刷题之回溯算法的基础框架

17. 电话号码的字母组合class Solution { private Map<Integer,String> map = new HashMap<>(); List<String> list = new ArrayList<>(); //1.回溯算法 public List<String> letterCombinations(String digits) { if(digits =.

2021-10-20 14:20:42 116

原创 安卓中ThreadLocal基础

1.ThreadLocal 概念ThrealLocal 提供线程据局部变量。通过 get 和 set 方法的方法的访问都是线程私有的,独立初始化的变量副本。通俗来讲:它可以以线程为界限来存储数据,该数据存储后,只有在指定的线程中才能获取到存储的数据,对于其它线程而言该变量为默认初始值(null)。使用场景:当某些数据以线程为作用域,并且不同的线程数据互相独立的时候,就可以考虑使用 ThreaLocal2.关键类及方法ThreadLocal 是一个泛型类,ThreadLocal#get()

2021-10-18 16:46:33 249 1

原创 安卓并发编程基础

1.线程1.线程与进程的区别。进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。同一进程中的多个线程之间可以并发执行。2.创建线程的几种方式1.通过 new Thread的方式创建,可复写 Thread#run方法,Thread.start()方式启动。2.实现Runnable.

2021-10-15 10:31:46 274

原创 RecyclerView与ListView区别及缓存原理

1.RecyclerView 家族类图2.RecyclerView 和 ListView的区别1.从使用上ListView:继承重写 BaseAdapter,自定义 ViewHolder 与 converView优化。RecyclerView: 继承重写 RecyclerView.Adapter 与 RecyclerView.ViewHolder。设置 LayoutManager 来展示不同的布局样式区别:ViewHolder的编写规范化,ListView是需要自己定义的,而Recycl.

2021-10-14 16:10:40 906

原创 Android 消息分发 Handler 面试必须知道的

1.Handler消息模型图主要包含的关键类:MessageQueue,Handler 和 Looper 这三大部分,以及 MessageMessage:需要传递的消息,可以传递数据;MessageQueue:消息队列,但是它的内部实现并不是用的队列,实际上是通过一个单链表的数据结构来维护消息列表,因为单链表在插入和删除上比较有优势。主要功能向消息池投递消息(MessageQueue.enqueueMessage)和取走消息池的消息(MessageQueue.next);Handler:.

2021-10-11 19:22:34 386

原创 安卓串口通讯工具库封装及使用

串口通讯引言对于安卓开发的小伙伴来说,很少用到串口通信开发。主要用来外接一些硬件设备,例如扫码器,读卡器,体温枪等一些硬件设备。这些设备与安卓之间通过串口来交换数据。如果有安卓串口开发这方面的需求,本文将会对你有所帮助。1.基本概念串口的概念: 用串行通信方式的扩展接口,指数据一位一位地顺序传送。串口操作相关参数:1.设备名(串口地址):安卓是基于Linux系统,所以通常的串口地址为:/dev/ttyS0,/dev/ttyS1… 等。可通过linux命令查看对应的串口状态。2.波特.

2021-10-11 15:15:29 1569 1

原创 自定义控件之下拉刷新RefreshLayout实现

1.案例演示2.涉及到的知识点1.自定义控件通用接口封装2.安卓手势分发 GestureDetector 拦截处理3.自定义控件之onLayout布局4.借助Scroller实现视图的自动滚动3.整个控件基础类图结构4.主要代码1.首先定义 HiRefreshLayout 的 通用接口下拉刷新控件:1.可设置是否下拉刷新时禁止滚动2.刷新完成时状态更新,及派发相应的监听事件3.提供给使用者设置监听器以获取控件的不同状态回调4.使用者可自行设置 刷新要显示的视图,只要继承自

2021-10-11 14:46:20 479

原创 LeetCode刷题之剑指offer

剑指 offer 题目目录剑指 Offer 03. 数组中重复的数字方法一:借助HashSet去重class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> set = new HashSet<>(); for(int a : nums){ if(set.contains(a)){ re.

2021-10-09 14:57:47 543

原创 安卓 Service 基础知识

1.Service种类按运行地点分类:按运行类型分类:按使用方式分类:2.生命周期OnCreate()系统在service第一次创建时执行此方法,来执行只运行一次的初始化工作。如果service已经运行,这个方法不会被调用。onStartCommand()每次客户端调用startService()方法启动该Service都会回调该方法(多次调用)。一旦这个方法执行,service就启动并且在后台长期运行。通过调用stopSelf()或stopService()来停止服务。O

2021-10-09 11:23:10 110

原创 安卓 BroadCastReceiver基础知识点

1.作用用于监听 / 接收 应用发出的广播消息,并做出响应应用场景a. 不同组件之间通信(包括应用内 / 不同应用之间)b. 与 Android 系统在特定情况下的通信, 如当电话呼入时、网络可用时c. 多线程通信2.原理Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。因此,Android将广播的发送者 和 接收者 解耦,使得系统方便集成,更易扩展模型中有3个角色:消息订阅者(广播接收者)消息发布者(广播发布者)消息中心(A

2021-10-09 11:04:23 586

原创 安卓网络基础面试问题大全

安卓面试中必知的网络基础

2021-09-23 16:45:10 666

原创 自定义View之HiSliderView商品分类展示

1.案例演示2.问题分析1.采用网格布局。2.不同的组别它的条目数量不一定能填满网格布局,这就需要最后剩余的 item 把剩下的控件占满。解决办法:​ 1、通过假数据填充,使得多余的部分用空白数据填充,这样就能满足每一行都能占满,正常摆放。(不采用该方案)​ 2、通过调整每个Group 的最后一个 item 所占用的 SpanSize 来让其占满当前行,使得下一组数据能另起一行。3.关键代码需要根据具体数据来设置不同的位置的 item 所占用的 spanSize。需要设置 Grid

2021-09-23 16:11:53 216

原创 自定义 View 之 InputItemLayout

1.基本样式展示2.场景分析1.分析该 View 的通用性,在哪些场景下可以使用?1.在登陆,注册等界面比较常用。2.左侧为文本,右侧也为文本的控件也可以复用。2.根据通用性,需要为这个控件定义哪些属性?1.通过分析 ==> 左侧需要显示 Title,右侧可以输入文字,支持提示等。2.该布局适合用线性布局,方向为水平方向。3.左侧 文本 跟 右侧 文本显示的文字样式 不一样,应该支持配置 text 属性 style。4.右侧为输入框,支持文本及密码等输入,应该支持: 输入类.

2021-09-22 21:16:19 143

原创 Android进程间通信总结

IPC​ IPC为 (Inter-Process Communication) 缩写,称为进程间通信或跨进程通信,指两个进程间进行数据交换的过程。安卓中主要采用 Binder 进行进程间通信,当然也支持其他 IPC 方式,如:管道,Socket,文件共享,信号量等Binder简介1.为什么使用Binder?性能方面:​ 在移动设备上(性能受限制的设备,比如要省电),广泛地使用跨进程通信对通信机制的性能有严格的要求,Binder相对于传统的Socket方式,更加高效。Binder数据拷贝只需要一

2021-09-08 18:46:02 6438

原创 Kotlin中协程的使用及挂起恢复原理分析

kotlin中协程的使用及原理分析1.协程与普通方法任务调度对比1.执行串行任务1.普通方式执行在子线程中执行耗时操作后,通过接口回调来回调结果,当多个任务串行依赖的时候,就会出现 “回调地狱”object Normal{ private const val TAG = "Normal" fun startSerialTask(){ request1 { result1 -> request2(result1,callback

2021-09-07 20:23:29 698

原创 LeetCode刷题之链表基础

19. 删除链表的倒数第 N 个结点class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(-1); dummy.next = head; ListNode slow = dummy,fast = dummy.next; while(n > 0){ .

2021-09-01 20:28:42 162

原创 LeetCode刷题之二叉树总结

二叉树的遍历​ 1​ / ​ 2 3​ / \ 4 5 6层次遍历顺序:[1 2 3 4 5 6]前序遍历顺序:[1 2 4 5 3 6] 根左右中序遍历顺序:[4 2 5 1 3 6] 左根右后序遍历顺序:[4 5 2 6 3 1] 左右根层次遍历使⽤ BFS 实现,利⽤的就是 BFS ⼀层⼀层遍历的特性;⽽前序、中序、后序遍历利⽤了 DFS 实现。前序

2021-08-30 21:59:59 293

原创 Mac外接2k屏幕如何开启Hidpi解决字体模糊等问题

Mac外接显示器字体发虚mbp外接2k显示器,字体会特别小且有点模糊,选择其他分辨率就会变得特别模糊,搜索一大圈说是要开启hidpi可以解决。于是各种搜教程尝试了一晚上总算OK了,下面把成功解决等方法详细步骤总结一下,万一有人也碰到这样的问题呢?直接选择2k分辨率会觉得字体很小,选择其他分辨率候直接模糊掉了,可以通过开启hidpi来使得1080等分辨率显示更细腻!这样就可以像mbp自带的那样选择不同缩放分辨率了。1.首先关闭苹果电脑的安全模式。重启Mac;在OS X启动之前,按住 Comm

2020-06-20 10:19:48 24009 17

原创 java刷题-动态规划

1.word-break原题链接:www.nowcoder.com题目描述:Given a stringsand a dictionary of wordsdict, determine ifscan be segmented into a space-separated sequence ofone or more dictionary words.For exa...

2019-06-28 22:39:08 236

力扣剑指offer.pdf

力扣剑指offer.pdf

2021-10-09

空空如也

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

TA关注的人

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