自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 ClassNotFoundException 和 NoClassDefFoundError 的区别

ClassNotFoundException 和 NoClassDefFoundError 的区别

2022-10-02 10:14:55 972 1

原创 安卓系统启动流程

安卓系统主要启动流程如下:启动电源以及系统启动引导程序 BootLoaderLinux 内核启动init 进程启动Zygote 进程启动SystemServer 进程启动Launcher 启动一、init 进程启动过程init 过程启动过程中主要做了以下三件事:创建和挂在启动所需的目录文件初始化和启动属性服务:属性服务采用键值对的形式记录用户、软件的一些使用信息,使得系统或者软件重启之后可以根据注册表中的记录进行相应的初始化工作。解析 init.rc 配置文件并启动 Zygot

2022-03-29 21:16:58 1680

原创 单例模式的几种实现方式

文章目录一、懒汉式单例模式线程安全的懒汉式单例模式二、双重检测锁实现单例模式三、饿汉式单例模式四、静态内部类实现单例模式五、枚举实现单例模式一、懒汉式单例模式懒汉式单例模式,即是在需要用到该对象的时候才去进行初始化,代码如下:public class Singleton { private static final Singleton instance; private Singleton () {} public static Singleton getInstance(

2022-03-12 17:47:33 4754 2

原创 从源码读懂 Handler 的原理

文章目录一、Handler 的工作原理二、Handler 中 postDelay 方法的原理为什么不采用延时发送消息的方式实现 postDelay 方法三、在线程中新建 Handler 之前为什么要先调用 Looper.prepare()四、为什么在主线程新建 Handler 不需要先调用 Looper.prepare()五、主线程的 loop 是一个死循环,为什么不会发生 anr六、两个 Handler 共用一个 messagequeue 的时候其中一个 Handler 调用 removeCallback

2022-03-12 15:53:30 860

转载 进程与线程的区别

线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别: 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销: 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,

2022-02-21 22:22:13 87

原创 Java 的内存回收算法

文章目录一、判断对象状态1.1 引用计数法1.2 可达性算法二、垃圾回收算法2.1 标记-清除算法2.2 标记-复制算法2.3 标记-整理算法2.4 混合型一、判断对象状态Java 的垃圾回收是指回收内存中已经“死亡”的对象所使用的内存空间,此处的死亡时是指该对象再也不会被使用,因此在进行垃圾回收之前需要先判断内存中对象的状态。虚拟机中用于判断对象状态的算法有两种:引用计数法和可达性算法。1.1 引用计数法引用计数法是一种比较简单直接的算法,即在虚拟机中保存每个对象的被引用次数,例如对象 A 被对象

2022-02-13 16:00:24 1220

原创 HTTPS如何建立安全连接

文章目录一、加密方式二、用非对称加密传递对称加密的秘钥三、中间人攻击四、CA校正一、加密方式HTTPS用到的加密方式有对称加密和非对称加密两种:对称加密:只需要一个秘钥,加密和解密都是用该秘钥。非对称加密:需要两把钥匙,一把公钥一把私钥,公钥对外暴露,私钥自己保存,公钥加密的信息只能用私钥解密,私钥加密的信息可以用公钥解密。二、用非对称加密传递对称加密的秘钥假设客服端向服务端请求连接:客户端向服务端发送信息请求连接;服务端向客服端发送自己的公钥;客服端收到公钥,然后生成用于对称加密的

2021-11-26 01:32:36 3508

原创 算法的复杂度分析

文章目录一、大 O 复杂度表示法1.1 时间复杂度1.2 空间复杂度一、大 O 复杂度表示法1.1 时间复杂度假设每行代码运行的时间为 unit_time ,那么所有代码的总执行时间 T(n)与每行代码的执行次数 f(n) 成正比,那么可得:T(n) = O(f(n)),此处大 O 表示的不是代码的具体执行时间,而是代码的执行时间虽数据规模增长的变化趋势。加法法则:算法的总时间复杂度等于算法中量级最大的复杂度,通常情况下公式中的低阶、常量和系数都可以忽略,例如:O(n2 + n + 2) = O(

2021-07-30 01:43:19 521

原创 Jetpack组件——ViewModel

文章目录ViewModel 简介ViewModel 的生命周期ViewModel 简介ViewModel 即是 MVVM 架构中的 VM 部分。ViewModel 专门用于存放应用程序页面所需的数据,它是连接 View 和 Model 的桥梁,使得数据和视图既能够互相分离又能互相通信。ViewModel 的生命周期ViewModel 的生命周期如下图所示:在...

2020-12-28 19:13:55 243 1

原创 Kotlin知识——类

文章目录基础语法构造函数主构造方法从构造方法数据类类委托创建实例类中的访问修饰符可见性修饰符内部类枚举类抽象类单例类基础语法构建一个简单的 Person 类,示例如下:calss Person(val name: String, var isMarried: Boolean)此时 Person 类有一个可读属性 name 和一个可写属性 isMarried,在声明属性的时候会自动为其创建访问器(只读属性有一个 getter,可写属性有 getter 和 setter)当然也可以自定义访问器,示例

2020-12-24 18:58:07 170

原创 Kotlin知识——函数

文章目录基础语法普通函数表达式函数体“静态函数”进阶使用命名参数默认参数值顶层函数修改文件类名扩展函数导入扩展函数在 Java 中调用扩展函数基础语法普通函数Kotlin 中声明一个函数的基本语法如下:fun max(a: Int, b: Int): Int{ return if (a > b) a else b;}说明:max 为参数名称a 和 b 为参数列表花括号前的 Int 为函数返回类型,用 Unit 或者直接省略时表示函数返回类型为空表达式函数体当函数的函数体

2020-12-24 14:35:14 361

原创 Kotlin知识——接口

文章目录1、基础语法2、高级使用此博客主要讲解 Kotlin 语法,关于接口的更多内容可以查看:Java基础知识总结——接口1、基础语法Kotlin 中使用 interface 关键字声明接口:interface Temp{ fun test()}接口的实现:class Realize: Temp{ override fun test() = printIn("succeed")}注:在 Kotlin 中,在重写时使用 override 修饰符是强制要求的。2、高级使

2020-12-15 17:42:03 263

原创 TDD介绍

文章目录一、概念二、步骤三、原则一、概念TDD是测试驱动开发(Test-Driven Development)的简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。其主要确保以下两件事:确保所有的需求都能被照顾到。在代码不断增加和重构的过程中,可以检查所有的功能是否正确。TDD具有以下优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能和能够发布的产品。保障代码的正确性,能够迅速发现、定位bug。针对关键代码的测试集,以及不断完善的测试用例,为迅速发现、定位b

2020-12-15 16:44:08 6913

原创 Jetpack组件——LifeCycle

文章目录LifeCycle 简介LifeCycle 介绍LifeCycleOwner(被监听者)LifeCycleObserve(监听者)LifeCycle 简介在许多情况下我们需要感知页面的声明周期变化,例如 MVVM 架构中有时候 ViewModel 层需要感知 View 层的生命周期,以往的方式是在 View 层的各个生命周期回调函数中调用 ViewModel 中定义的各个方法。因此,Google 推出了 LifeCycle 组件,用于 Activity 等组件的生命周期,例如在上述情景下,Vie

2020-11-27 17:56:43 138

原创 Java基础知识总结——对象的引用方式

Java 对象有以下四种引用方式:1、强引用(StrongReference)Java 中最常见的引用方式,当一个对象 A 被其它对象强引用时,该对象 A 处于可达状态,不会被垃圾回收机制回收。2、软引用(SoftReference)对于只有软引用的对象,当系统内存空间足够时,它不会被系统回收,程序也可以使用该对象;当系统内存空间不足时,系统可能会回收它。3、弱引用(WeakReference)对于只有弱引用的对象,无论系统内存空间是否足够,当系统进行垃圾回收时,系统就会回收该对象所占用的内存空

2020-11-26 16:36:22 1138

原创 Android Handler 知识总结

文章目录一、Handler 使用实例二、Handler 原理三、Handler 类中用于处理消息的方法四、Handler 使用细节4.1 创建消息4.2 避免内存泄漏安卓的 UI 操作是线程不安全的,为了避免多线程操作 UI 组件时出现线程安全问题,安卓只允许在 UI 线程中对 UI 组件进行操作。但是在安卓实际开发中,许多时候我们需要根据其它线程的值或者事件对 UI 组件进行操作,此时就可以借助 Handler 来实现消息传递。一、Handler 使用实例先看一下 Handler 的使用实例:cl

2020-11-13 16:12:30 174

原创 Android 动画 Animator 的 end() 方法和 cancel() 方法的区别

end() 方法会直接跳到动画的最后一帧并停止cancel() 方法直接停止在当前帧

2020-11-11 21:02:12 4205

原创 Android 属性动画和自定义View的使用

使用自定义 View 绘制一个小球,进入应用时小球从屏幕中间的最高点落下,动画模拟重力作用下的落地效果,手指按住小球可以拖动小球进行移动,松开手指时小球从该位置落下,最终效果如下:一、实现简单的动画在开始实现这个小球之前先来实现一个最简单的动画:一个数字从 0 递增到 20000,增长速度逐渐变慢,代码如下所示(布局文件中只有一个用于展示数字的 TextView):// 设置动画内容是一个数字从 0 变到 20000val anim = ValueAnimator.ofInt(0, 20000)

2020-11-11 20:54:44 201

原创 Android 四大组件之BroadCastReceiver(广播)知识总结

文章目录一、广播的概念二、广播的分类2.1 无序广播2.2 有序广播2.3 粘性广播2.4 系统广播2.5 本地广播一、广播的概念广播(BroadCastReceiver)是安卓四大组件之一,用于安卓组件之间的通信,信息由广播发送者流向广播接收者。广播的使用一般有以下场景;同一 app 内部的不同组件之间的消息通信不同 app 之间的组件之间消息通信Android 系统在特定情况下与App之间的消息通信广播使用观察者模式,广播发布者和广播接收者分别为消息发布者和消息订阅者,其大致流程如下:

2020-11-10 19:39:21 314

原创 Kotlin 判断 lateinit 变量是否已经被初始化

在 Kotlin 中使用 lateinit 修饰符可以实现对象的延迟初始化,当我们需要使用这个对象又无法确定该对象是否已经被初始化时,可以使用 isInitialized 进行判断。示例如下:class MyService{ fun performAction(): String = "foo"}class Test{ private lateinit var myService: MyService fun checkInit(){ // 如果 myService 对象还未初始化,则进

2020-11-10 10:39:00 4459

原创 Android 四大组件之Service知识总结

文章目录Service 的生命周期Service 的生命周期

2020-11-05 17:36:34 160

原创 Android 四大组件之Activity知识总结

文章目录一、Activity 生命周期二、配置 Activity三、Activity的 4 种加载模式3.1 standard 模式3.2 singleTop 模式3.3 singleTask 模式3.4 singleInstance 模式四、启动和关闭 Activity4.1 startActivity(Intent intent)4.2 startActivityForResult(Intent intent, int requestCode)一、Activity 生命周期Activity 是安卓应

2020-11-02 17:31:20 296

原创 Android中的尺寸单位以及使用TypedValue.applyDimension()将尺寸转换为标准尺寸

一、Android中的尺寸单位1.1 in设备相关单位。inch 表示英寸,是屏幕的物理尺寸,是屏幕的对角线长度。每英寸等于 2.54 厘米。1.2 mm设备相关单位。表示毫米,也是屏幕的物理尺寸。1.3 px设备相关单位。pixel 表示屏幕的实际像素。1.4 pt设备相关单位。表示一个点,大小为 1/72 英寸(in),是屏幕的物理尺寸。1.5 dp设备无关单位。dp 即 dip,Device Independent Pixel(设备无关像素)。一个 dp 相当于 160dpi 屏幕

2020-10-30 11:12:14 1142

原创 Android 敏感权限列表

敏感权限需要动态申请,具体的敏感权限如下:CALENDAR(日历)READ_CALENDARWRITE_CALENDARCAMERA(相机)CAMERACONTACTS(联系人)READ_CONTACTSWRITE_CONTACTSGET_ACCOUNTSLOCATION(位置)ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONMICROPHONE(麦克风)RECORD_AUDIOPHONE(手机)READ_

2020-10-26 19:34:25 4836 1

原创 Java基础知识总结——final关键字

final 关键字可用于修饰类、变量和方法,用于表示它修饰的类、方法和变量不可改变。final 成员变量final 修饰的成员变量必须由程序员显示地指定初始值。类变量:必须在静态初始化块中指定初始值,或声明该类变量时指定初始值。实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值。final 局部变量系统不会对局部变量进行初始化,局部变量必须由程序员显式初始化。因此使用 final 修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。如果 final 修饰的局部变量

2020-10-26 14:17:00 136

原创 Java基础知识总结——泛型

文章目录一、基本概念二、泛型的使用1、泛型接口2、泛型类2.1 从泛型类派生子类附:泛型类并不存在3、泛型方法三、类型通配符3.1 设定类型通配符的上限3.2 设定类型通配符的下限一、基本概念所谓泛型,就是允许在定义类、接口、方法时使用类型形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可称为类型实参)。在没有泛型的时候,一旦把一个元素放进容器中,容器就会忘记该对象的类型,把所有的元素都当成 Object 类型处理。当程序从容器中取出对象时,就需要进行强制类型转

2020-10-26 11:14:31 231

原创 Java基础知识总结——注解(Annotation)

文章目录基本概念注解的定义和使用元注解1、@Retention2、@Target3、@Documented4、@Inherited5、@RepeatableJava提供的五个现成注解1、@Override2、@Deprecated基本概念官方文档对注解(Annotation)的解释为:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。实际上,可以简单的将注解理解为给

2020-10-22 15:17:46 388

原创 Java基础知识总结——线程及线程相关操作

文章目录一、基本概念1、进程与线程2、并发与并行二、线程的生命周期新建→就绪:就绪→运行:运行→就绪:运行→阻塞:阻塞→就绪:运行→死亡:三、创建线程1、继承 Thread 类创建线程类2、实现 Runnable 接口创建线程类3、使用 Callable 和 Future 创建线程附:创建线程的方式比较四、线程调度线程的强制运行后台线程线程睡眠线程让步改变线程优先级五、线程同步1、同步代码块2、同步方法附:关于释放同步监视块的锁定3、同步锁4、死锁六、线程通信1、传统的线程通信2、使用 Condition

2020-10-20 20:30:11 542

原创 Java基础知识总结——IO

文章目录基本概念一、流式部分1、输入流基类:InputStream 类和 Reader 类2、输出流基类:OutputStream 类和 Writer 类3、处理流转换流推回输入流二、非流式部分1、File 类2、RandomAccessFile 类3、Serializable 接口基本概念Java IO 即 Java 的输入/输出系统,其主要包含以下三个部分:流式部分:IO 的主体部分。非流式部分:主要包含一些辅助流式部分的类,如:File 类、SerializablePermission 类

2020-10-19 20:18:12 513

原创 Java基础知识总结——接口

文章目录Java接口知识总结接口的定义接口定义的实例接口的特性接口与抽象类的异同接口与抽象类的相似点:接口与抽象类的区别:接口的实现实现接口的实例接口的应用——简单工厂模式Java接口知识总结接口通常定义一组公用方法,它们是多个类共同的公共行为规范,是与外部交流的通道。接口的定义接口使用关键字 interface 定义,接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象实例方法、类方法或默认方法)、内部类(包括内部接口、枚举),其基本语法如下:[修饰符] interface 接口名 [ex

2020-10-19 14:22:23 198

原创 Java基础知识总结——多态

文章目录Java多态知识总结一、运行时多态运行时多态出现的三个必要条件重写的条件(两同两小一大)运行时多态实例二、编译时多态① 通过函数重载实现多态重载的条件(“两同一不同”)函数重载实现多态的实例② 通过泛型实现多态泛型实现多态的实例运行时多态与编译时多态的区别Java多态知识总结同一个行为具有多个不同的表现能力或形态的能力即为多态。根据何时确定执行多态方法中的哪一个,可以将多态分为编译时多态和运行时多态。一、运行时多态Java的引用变量有两种类型:编译时类型和运行时类型。编译时类型由声明该变量时

2020-10-19 14:20:21 202

原创 Java基础知识总结——容器

基本概念在编程时,可以用数组来保存多个对象,但数组的长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可改变的;除此之外,数组无法保存具有映射关系的对象。为了保存数量不确定的数据,以及保存具有映射关系的数据(也称关联数组),Java提供了容器类。Java容器类的用途是保存对象(实际上只是保存对象的引用变量,但通常习惯上认为容器里保存的是对象),其主要由以下两个接口派生而出:Collection 和 Map 。Collection一个独立元素的序列,这些元素都服从一条或者多条规则。其继

2020-10-19 00:38:28 380 1

原创 一些有意思的题目

链表https://leetcode-cn.com/problems/sort-list/

2019-09-05 17:28:20 152

原创 相交链表

今天写到一道比较有意思的链表题,在这里记录一下题目编写一个程序,找到两个单链表相交的起始节点。描述如下面的两个链表,在节点 c1 开始相交,程序返回c1到c3段的链表。例如下图返回从 2 节点开始的链表:对于没有交点的两条链表则返回NULL:解答方法一:暴力解答对链表A中的每一个结点 ai,遍历整个链表 B 并检查链表 B 中是否存在结点和 ai 相同。方法二: 哈希表法...

2019-09-05 15:49:01 77

原创 关于VUE实现页面的局部刷新

首先

2019-06-30 21:42:22 5941 2

原创 16340094-qingyunhuohuo Final Report

1.简短的课程学习自我总结在这次的小组项目中,我属于前端小组,主要负责的是个人主页部分的界面设计和代码实现。在平时认真参加每周的小组会议,并且积极参与讨论,在讨论需求分析,模块设计时都有提出自己的看法。在进行设计时积极与小组成员沟通以明确页面需求,在代码实现时积极与后端的成员沟通从而获得合适的数据接口来完善界面。2.PSP2.1表格Personal Software Process ...

2019-06-30 21:22:41 163

原创 系统分析与设计(6)

1、使用类图,分别对 Asg_RH 文档中 Make Reservation 用例以及 Payment 用例开展领域建模。然后,根据上述模型,给出建议的数据表以及主要字段,特别是主键和外键注意事项:对象必须是名词、特别是技术名词、报表、描述类的处理;关联必须有多重性、部分有名称与导航方向属性要注意计算字段数据建模,为了简化描述仅需要给出表清单,例如:Hotel(ID/Key,...

2019-05-05 18:39:24 275

原创 系统分析与设计(5)

1、根据订旅馆建模文档,Asg-RH.pdf:绘制用例图模型(到子用例)给出 make reservation 用例的活动图2、根据课程练习“投递员使用投递箱给收件人快递包裹”的业务场景分别用多泳道图建模三个场景的业务过程x科技公司发明了投递柜,它们自建了投递柜以及远程控制系统。注册的投递员在推广期免费使用投递柜。由于缺乏资源,仅能使用y移动平台向客户发送短信通知。随着产...

2019-05-05 16:59:06 150

原创 系统分析与设计(4)

简答题1、 用例的概念:用例是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。是一组描述参与者使用系统实现目标的相关成功和失败场景的集合。2、用例和场景的关系?什么是主场景或 happy path?一个用例是许多场景的集合,包含主场景和一些可选场景。主场景也称happy path,对应系统的主要的交互,通常是成功的场景。主场景是最常用的,能直接...

2019-04-13 23:35:37 438

原创 系统分析与设计(3)

一、简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)瀑布模型优点当前一阶段完成后,您只需要去关注后续阶段提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导通过项目阶段评审和文档控制,指导开发过程,保证正确衔接阶段,及时发现并修改bug,从而保证质量。缺点各个阶段的划分完全固定...

2019-04-13 14:08:21 128

空空如也

空空如也

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

TA关注的人

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