自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

willwaywang6

记录,总结,分享

  • 博客(130)
  • 资源 (1)
  • 收藏
  • 关注

原创 2023年年终总结

他醒后没有大哭大闹,还是挺皮实的,只是说妈妈我肚子疼,想看电视。虽然谈不上有多大的用处,但是至少写代码的时候多了一分的严谨和敬畏。一次是因为晚上睡觉半个小时后,他会去抓脸,去神经外科住院观察,还好省里面的这方面的权威医生说检查都是没有问题的。妈妈的怀抱是妹妹的了,他只能独自哄自己睡着了。最好是自己可以提炼出一个业务模型,这样就可以说对这方面的业务有比较好的掌握了。不得不说,还是挺快的。不得不说,这里的说明是比较清晰的,但是习题还是挺难的。遇到一个比较倒霉的事情,自己搬家的时候把酱油弄到公司的电脑里面了。

2024-01-07 16:24:08 439 1

原创 C筑基——深入理解内存对齐

11月份的时候,同事维护的项目出现了内存对齐问题:传递数据的一方使用了修改了结构体的对齐方式,而接收方数据的一方并没有对这个结构体使用同样的对齐方式,造成了获取数据时失败的问题。为什么要有内存对齐?内存对齐原则如何修改默认对齐方式?本文到这里就草草结束了,虽然有些啰嗦,但是还是希望可以帮助到大家。

2023-02-28 14:09:27 1158

原创 2022年年终总结

2022 年做了什么?2022 年的反思。2023 年的打算。

2023-01-02 11:40:50 1547 1

原创 Android实战——单元测试从吹水到实践

本文从到底要不要单元测试开始讨论,说明了单元测试的好处,并列举了自己进行单元测试的路程,希望可以帮助到大家。

2022-10-25 23:27:25 2337

原创 Android实战——一步一步实现流动的炫彩边框

本文一步一步地展示了流动炫彩边框的实现过程,用到了自定义 `Drawable`,画笔的着色器(扫描渐变,本地矩阵),属性动画,Drawable 与 View 的刷新回调等知识。

2022-09-05 09:47:57 3021

原创 Android实战——使用状态模式重构下载状态及行为

本文结合实际开发中的下载场景,对比了未使用状态模式的代码和使用状态模式的代码,展示了状态模式的实际应用。

2022-08-14 18:30:06 963 1

原创 Android筑基——自定义属性详解

本文从一个简单的自定义属性的例子开始,接着介绍了如何合理地声明和解析自定义属性,然后较为深入了探讨了 `AttributeSet`,`TypedArray`的作用,`declared-styleable` 的本质,最后简单地介绍了 ktx 对 `TypedArray` 的扩展支持。.........

2022-07-24 18:29:35 3577 3

原创 中科大郑烇、杨坚老师《计算机网络-自顶向下方法》课程 第2章 应用层笔记

网络应用是计算机网络存在的理由。本章学习定义关键的应用层概念,包括应用程序所需要的网络服务、客户和服务器、进程和传输层接口;学习几种网络应用程序,包括 Web、FTP、Email、DNS、P2P 和 CDN;开发运行在 TCP 和 UDP 上的网络应用程序。研发网络应用程序的核心写出能够运行在不同的端系统上的程序;程序可以通过网络彼此通信。网络核心中没有应用层软件网络核心是由分组交换机(包括三层设备路由器和两层设备链路交换机)和链路构成的网状网络,主要作用是数据交换。网络核心设备不在应用层上起作用,而只在网

2022-07-06 08:16:07 1538

原创 Android实战——腾讯课堂加载动画效果实现

通过本文,利用 Android 的自定义绘制知识:Path、空白 Bitmap 创建、贝塞尔曲线、混合模式,实现了腾讯课堂加载动画效果。

2022-06-13 09:34:03 1955 4

原创 中科大郑烇、杨坚老师《计算机网络-自顶向下方法》课程 第1章 计算机网络和因特网笔记

目录1 前言2 正文2.1 什么是因特网?2.2 网络边缘2.3 网络核心2.4 接入网和物理媒体2.5 Internet 结构和 ISP2.6 分组交换网中的时延、丢包和吞吐量2.7 协议层次及其服务模型2.8 计算机网络和因特网的历史3 最后1 前言本章包括很多概念和术语,一些框架性原理的介绍,以及互联网的历史。这是非常重要的一章。2 正文2.1 什么是因特网?具体构成描述因特网是把端系统通过通信链路和分组交换机按照一系列协议连接在一起构成的网络。其中,端系统,通信链路和分组交换机是硬件

2022-05-29 18:09:15 1893

原创 Android筑基——Kotlin 扩展函数详解

目录1 前言2 正文2.1 (顶层)扩展函数2.1.1 声明(顶层)扩展函数2.1.2 对扩展函数的深入理解接收者类型就只是类或者接口吗?扩展函数能访问类私有的或者受保护的成员吗?从 Java 中如何调用扩展函数?扩展函数可以重写吗?类的扩展函数和成员函数签名相同,谁会被优先使用?扩展函数的接收者的本质是什么吗?如何引用一个扩展函数?2.2 成员扩展函数2.2.1 声明成员扩展函数2.2.2 对成员扩展函数的深入理解当分发接收者和扩展接收者的成员之间出现命名冲突时,会优先使用哪个成员?当分发接收者和扩展接收

2022-05-02 07:49:55 2428 2

原创 Android 开源库-深入理解 EventBus 的创建

目录1. 前言2. 正文2.1 `EventBus` 的创建真的是单例吗?2.2 `EventBus` 使用建造者模式的好处是什么?2.3 `EventBus` 是如何建造者模式和 `getDefault` 方法结合起来的?3. 最后参考1. 前言大约在 2016 年接触了 EventBus,在项目中也有用到过。但是,说到 EventBus 的原理,我只能这样了:如果一点一点地去学习,大概可以理解 EventBus 的原理。理解了原理之后,对于自己的开发技能提升也是有帮助的。本文不涉及 Event

2022-04-10 10:22:25 3259

原创 《Android开发艺术探索》第12章- Bitmap 的加载和 Cache 读书笔记

目录1. 前言2. 正文2.1 Bitmap 的高效加载2.1.1 说一下对于Android 中的 Bitmap 的理解2.1.2 内存中存储的 Bitmap 对象和本地图片有什么区别?2.1.3 一张图片加载到内存中究竟需要占多少空间?2.1.4 BitmapFactory 类提供了哪些加载 Bitmap 的方法?2.1.5 为什么要高效地加载 Bitmap?2.1.6 如何高效地加载 Bitmap?2.2 Android 中的缓存策略2.2.1 缓存策略的作用是什么?2.2.2 缓存算法的作用是什么?2

2022-03-31 21:41:49 3695

原创 《漫画算法-小灰的算法之旅》第1章-算法概述读书笔记

目录1. 前言2. 正文2.1 算法和数据结构2.1.1 什么是算法?2.1.2 衡量算法好坏最重要的标准有哪两个?2.1.3 什么是数据结构?2.1.4 算法和数据结构有什么关系呢?2.1.5 数据结构有哪些组成方式?2.2 时间复杂度2.2.1 如何评估算法时间上的优劣?2.2.2 什么是基本操作或者说常数操作?2.2.3 如何计算程序的基本操作次数?2.2.4 什么是时间复杂度?2.2.5 推导出时间复杂度的原则有哪些?2.3 空间复杂度2.3.1 什么是空间复杂度?2.3.2 如何计算空间复杂度?3

2022-03-21 10:52:14 1605

原创 《Android开发艺术探索》第11章-Android 的线程和线程池读书笔记

目录1. 前言2. 正文2.1 主线程和子线程2.1.1 在 Android 中,可以扮演线程角色的类有哪些?2.1.2 线程池的好处是什么?2.1.3 Android 中主线程和子线程的职责分别是什么?2.2 Android 中的线程形态2.2.1 AsyncTask 实际开发中如何使用?2.2.2 AsyncTask 的两个操作方法,三个泛型参数和五个核心方法分别是什么?2.2.3 AsyncTask 在使用过程中有哪些限制?2.2.4 AsyncTask 的类加载是在哪里完成的?会完成哪些工作?2..

2022-02-20 09:34:09 2685 2

原创 Android实战——正确配置 XXX_HOME 环境变量

目录1 前言2 正文2.1 JAVA_HOME2.2 ANDROID_HOME2.2 ANDROID_SDK_HOME2.3 GRADLE_USER_HOME2.4 GRADLE_HOME3 最后参考1 前言做 Android 开发的你,在开发中都用到了哪些 XXX_HOME 环境变量?这些环境的变量的作用是什么?本文总结 Android 开发中用到的 XXX_HOME 环境变量并介绍它们的作用。2 正文2.1 JAVA_HOME这个是用于配置 Java JDK 的环境变量。它的作用自不必说

2022-02-19 14:30:18 12156 3

原创 《Android开发艺术探索》第10章-Android 的消息机制读书笔记

目录1. Android 的消息机制概述1.1 Android 的消息机制是什么?1.2 Handler 就是专门用来更新 UI 的,这种说法对吗?为什么?1.3 在子线程真的不能更新 UI 吗?1.4 Android 系统为什么使用单线程模型来访问 UI?1.5 为什么说 Handler 类是 Android 消息机制的上层接口?1.6 Android 消息机制的整体流程是什么?2. Android 的消息机制分析2.1 ThreadLocal 的使用场景有哪些?2.2 为什么 ThreadLocal 可

2022-01-10 07:26:28 2814 2

原创 《Android开发艺术探索》第9章-四大组件的工作过程读书笔记

目录1 四大组件的运行状态2 Activity 的工作过程2.1 Activity 的启动过程3 Service 的工作过程3.1 Service 有哪两种工作状态?这两种状态可以共存吗?3.2 Service 的启动过程3.3 Service 的绑定过程3.4 Service 和 Thread 的关系是什么?4 BroadcastReceiver 的工作过程4.1 BroadcastReceiver的动态注册,发送和接收过程4.2 静态注册的广播接收者和动态注册的广播接收者在接收广播时,实例会不会重新创建

2022-01-03 17:02:25 2696 2

原创 Android筑基——ContentProvider 的跨进程启动过程和数据操作方法调用过程(基于api21)

目录1.前言2.正文2.1 小例子2.2 代码分析2.2.1 ContextWrapper.getContentResolver() 方法2.2.2 ContextImpl.getContentResolver() 方法2.2.3 ContentResolver.query() 方法2.2.4 ContentResolver.acquireUnstableProvider() 方法2.2.5 ApplicationContentResolver.acquireUnstableProvider() 方法2.2

2022-01-01 14:59:29 3414

原创 2021年年终总结

目录2021年做了什么?生活方面工作方面学习方面2021年的反思2022年的打算2021年做了什么?生活方面我们家的宝宝 7 月 1 日出生了,不过我一个人仍是在上海这边,只能每天看老婆发的孩子的视频或者照片。他不是一个省心的宝宝,但是自己家的孩子怎么看都是最可爱的。6 月 30 日早上,老婆打来微信电话要我回家,孩子要发动了。我赶紧订高铁票从住的地方往上海站赶,为了能保准赶上火车,我想着等到了 1 号线再支付订单,谁知道低于半个小时高铁票就不售了。无奈之下,订了飞机票回去,也是第一次坐飞机。到郑州

2022-01-01 11:22:38 705

原创 Android筑基——BroadcastReceiver 的动态注册、发送和接收过程(基于api21)

目录1. 前言2. 正文2.1 广播接收者的动态注册2.1.1 ContextWrapper.registerReceiver() 方法2.1.2 ContextImpl.registerReceiver() 方法2.1.3 ContextImpl.registerReceiverInternal() 方法2.1.3.1 LoadedApk.getReceiverDispatcher() 方法2.1.3.2 new LoadedApk.ReceiverDispatcher() 方法2.1.3.3 Activ

2021-12-24 09:52:48 4505

原创 Android筑基——Service的绑定过程之跨进程绑定(基于api21)

目录1.前言2.正文2.1 ContextWrapper.bindService() 方法2.2 ContextImpl.bindService() 方法2.3 ContextImpl.bindServiceCommon() 方法2.3.1 LoadedApk.getServiceDispatcher() 方法2.3.2 LoadedApk.ServiceDispatcher 类2.4 ActivityManagerProxy.bindService() 方法2.5 ActivityManagerNativ

2021-12-15 20:10:54 3108 2

原创 Android筑基——Service的启动过程之同进程启动(基于api21)

目录1. 前言2. 正文2.1 ContextWrapper.startService() 方法2.2 ContextImpl.startService() 方法2.3 ContextImpl.startServiceCommon() 方法2.3.1 ActivityManagerNative.getDefault() 方法2.4 ActivityManagerProxy.startService() 方法2.5 ActivityManagerNative.onTransact() 方法2.6 Activi

2021-12-11 19:59:54 3002

原创 Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)

目录1.Activity类的startActivity()方法2.Instrumentation类的execStartActivity()方法3. ActivityManagerService类的startActivity()方法4.ActivityStackSupervisor类的startActivityMayWait()方法5.ActivityStackSupervisor类的startActivityLocked()方法6.ActivityStackSupervisor类的startActivity

2021-12-05 15:38:58 2587

原创 《Android开发艺术探索》第7章- Android 动画深入分析读书笔记

目录1. View 动画1.1 Android 动画的分类有哪些?1.2 Android 动画的特点是什么?1.3 Tween Animation 补间动画中的轴点是什么作用?1.4 自定义 View 动画的步骤是什么?2. View 动画的特殊使用场景2.1 如何控制 ViewGroup 中子元素的出场效果?2.2 如何自定义 Activity 的切换效果?2.3 如何自定义 Fragment 的切换效果?3. 属性动画3.1 插值器和估值器的作用分别是什么?3.2 如何使用属性动画对任意属性做动画?4.

2021-11-07 12:22:51 1757

原创 Android筑基——Kotlin by 关键字详解

1.前言Kotlin 中的 by 关键字在 Java 中是没有的,这使我对它感到非常陌生。Kotlin 中为什么要新增 by 关键字呢?by 关键字在 Kotlin 中是如何使用的?本文会介绍 by 关键字的使用分类,具体的示例,Kotlin 内置的 by 使用,希望能够帮助到大家。2.正文by 关键字的使用分为两种:类委托和委托属性。2.1 类委托现在有一个需求,统计向一个 HashSet 尝试添加元素的尝试次数,该怎么实现?2.1.1 使用继承方式实现简单,继承一个 HashSet,创

2021-10-31 16:05:14 9531 8

原创 《Android开发艺术探索》第6章- Android 的 Drawable 读书笔记

目录1. Drawable 简介1.1 Drawable 和 View 的区别和联系是什么?1.2 如何获取 Drawable 的内部宽/高?2. Drawable 的分类2.1 BitmapDrawable2.2 ShapeDrawable2.3 LayerDrawable2.4 StateListDrawable2.5 LevelListDrawable2.6 TransitionDrawable2.7 InsetDrawable2.8 ScaleDrawable2.9 ClipDrawable3. 自

2021-10-24 16:53:12 3611

原创 Android实战——一步一步使用自定义 ViewGroup 实现流式布局

目录1. 前言2. 正文2.1 创建直接继承于 ViewGroup 的子类 FlowLayout2.2 测量过程2.3 布局过程2.4 测试一波儿2.5 解决子元素显示不出来的问题2.6 解决子元素行数显示不对的问题2.7 解决流式布局不支持 padding 的问题2.8 解决流式布局不支持子元素的 layout_margin 的问题2.9 解决动态添加子元素时发生类型转换异常的问题2.10 自定义流式布局的自定义属性之行内垂直靠顶部,居中,靠底部2.11 自定义流式布局的自定义属性之限制行数2.12 自定

2021-10-24 05:49:09 1187 4

原创 《Android开发艺术探索》第5章- 理解 RemoteViews 读书笔记

目录1. RemoteViews 的应用1.1 说一说对 RemoteViews 的理解1.2 如何创建 RemoteViews?1.3 如何更新 RemoteViews 的视图层级里的 View?1.4 开发桌面小部件的步骤是什么?1.5 AppWidgetProvider 的回调方法有哪些?作用分别是什么?1.6 PendingIntent 和 Intent 的区别是什么?1.7 PendingIntent 支持哪三种待定意图?1.8 PendingIntent 的匹配规则是什么?1.9 `FLAG_O

2021-10-20 05:55:19 1097 7

原创 Java筑基——I/O系统学习笔记

之前工作中接触 I/O 较少,只是用一些工具类处理问题。以为这样就可以了。后来在工作中用到多文件传输,文件合并,感到I/O流知识的欠缺。现在有时间把它们总结一下,写成本文。

2021-08-26 23:26:36 792

原创 Android筑基——RxJava框架学习笔记

从 2016 年开始接触 RxJava 也有几年的时间了,但是并没有去研究过源码。再过几年,会不会还是这样?最近从公司内部调用到新的工作岗位,工作上的事情比较烦。写下文章总结一下 RxJava,算是让自己静下来的方式吧。会从几个方面进行分享:- RxJava 里的观察者模式和普通的观察者模式有什么区别?- RxJava 里的观察者模式源码流程- RxJava 的 map 操作符的流程是什么样子的?- RxJava 是如何进行线程切换的?

2021-06-29 09:13:54 1447

原创 Android筑基——Gson 框架学习笔记

目录1 前言2 正文3 最后参考1 前言构建一个小明学习 Gson 解析的例子。感谢后端大佬。哈哈。2 正文3 最后参考Gson 解析服务端返回的多种类型的 JSON你真的会用Gson吗?Gson使用指南

2021-05-31 06:56:14 1662 4

原创 Android Studio 下对资源进行更好地分包方案

我们知道,Android Studio 默认是要我们把资源放在 `res` 目录下面的。如果资源较少,那么把资源放在 `res` 下面是没有问题的。但是,假如我们的资源非常多,还会没有问题吗?每个分辨率的 drawable 目录下都有 300 张图片,如何快速地找到对应功能页面的图片吗?如何快速地把一个功能的代码及其资源迁移到一个新的项目中呢?相信大家开发中也遇到过类似的困惑,请接着看这篇文章吧。

2021-05-16 20:01:59 1447 4

原创 Flutter筑基——学好 Dart,才能玩转 Flutter

目录前言正文Dart 开发环境的搭建最后参考前言我们知道 Flutter 这个 UI 框架是使用 Dart 语言开发的,这说明要玩转 Flutter,就要先学好 Dart。那么,怎么学好 Dart 呢?有的同学抱着“不就是一门语言嘛”的心态,直接开始写 Flutter,然后遇到问题了,再去查看 Dart 的文档。这也是一种学习 Dart 的方式,但这种方式可能不适合大多数同学。庆幸地是,可以去查看 Dart 官网上的示例,比如Language-tour,就讲解了 Dart 的语法。但是,官网上的

2021-02-28 16:24:34 2013 2

原创 2020年年终总结

目录2020年做了什么?生活方面工作方面学习方面2020年的反思2021年的打算2020年做了什么?生活方面生活方面仍是一个人在上海打工,估计将来的时间大多数还是一个人在这边了。工作方面1月份-3月份:开发一个诗歌的项目,使用 Kotlin 语言,MVVM 模式开发,功能包括:日夜间模式切换,字体大小调节,诗歌显示拼音,分享模板的诗歌纵排。这个项目出了国内和海外两个版本,可惜由于留存不好,成了僵尸项目。3月份下旬:开发一个漫画内容类的项目,使用了和诗歌项目一样的结构,只是数据不同而已。这

2020-12-31 21:00:24 215

原创 Android筑基——深入理解注解的使用场景及实战

目录1 前言2 正文2.1 注解的作用**编译器可以使用注解做编译期检查**使用注解可以减少重复且易出错的样板代码使用注解可以生成帮助文档2.2 注解的语法定义注解3 最后1 前言注解是在 Java SE5 引入进来的。注解在一定程度上是在把元数据与源代码结合在一起,而不是保存在外部文档中这一大的趋势之下所催生的。因为笔者是作 Android 开发的,因此下面的介绍是偏于 Android 的实际应用。本文会从以下几个方面来展开注解有什么作用?主要是从实际开发中的使用入手来进行说明。注解如何定义

2020-12-31 20:17:51 1305 2

原创 Android 筑基——使用 recyclerview 库的 ListAdapter 需要注意的地方

目录1 前言2 正文2.1 基本使用2.2 问题解决3 最后1 前言在查看 google 的开源项目 sunflower 时看到使用到了 ListAdapter,开始以为是之前对应 ListView 的那个 ListAdapter,实际上是 recyclerview 库里提供的。自己也就跟着使用到了项目中。当然,经历了一些问题后,才比较好地掌握了 ListAdapter 的正确使用方法。本文主要会回答如下的问题:为什么提供同样引用的集合给 ListAdapter后,没有任何反映?为什么使用 Li

2020-10-24 19:50:16 6127 9

原创 《Android开发艺术探索》第2章- IPC 机制读书笔记

目录1 Android IPC 简介1 Android IPC 简介IPC 是 Inter-Process Communication 的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程。IPC 并不是 Android 所独有的,任何一个操作系统都需要有相应的 IPC 机制。在 Android 中,最有特色的进程间通信方式就是 Binder 了。...

2020-09-20 02:06:08 1157

原创 Android筑基——可视化方式理解 Handler 的同步屏障机制

网上有不少文章深入源码讲解 `Handler` 的同步屏障机制;也有一些作者贴心地举出了实际生活中的例子来帮助理解 `Handler` 的同步屏障机制。这都有助于大家理解 `Handler` 的同步屏障机制。本文打算以**可视化的方式**展示 `Handler` 的同步屏障机制,更加直观地帮助大家理解 `Handler` 的同步屏障机制。

2020-08-31 23:07:19 3704 1

原创 《Android开发艺术探索》第8章-理解 Window 和 WindowManager 读书笔记

`Window` 表示一个窗口的概念。`Window` 是一个抽象类,它的具体实现是 `PhoneWindow`,同时也是唯一的实现。通过 `WindowManager` 可以创建一个 `Window`。外界访问 `Window` 要通过 `WindowManager`,`Window` 的具体实现位于 `WindowManagerService` 中,`WindowManager` 和 `WindowManagerService` 的交互是一个 IPC 过程。

2020-08-29 21:32:28 1276

空空如也

空空如也

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

TA关注的人

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