自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker:解决docker-compose网段路由冲突,docker-compose自定义网络

Docker,网桥,Linux,路由,网关。

2023-01-04 22:26:53 5068 1

原创 十月两面经分享(Android岗位):痛失字节跳动Offer,侥幸进入小米

15年从学校毕业直到现在一直从事的是Android开发工作,回头一看在这条路上走了6年。在这6年时光里,我见证了移动换联网的“盛衰交替”,身边的同事有转换换业的,也有自己创业当老板的,所见市场行情也是一片萧瑟。如今 Android 已不是前几年那么风光,但它的市场还在,“它”还是那个Android,还是那个我赖以生存、夜以继日陪伴着我的朋友。所以,我永远不会抛弃它。好了,情感已经抒发的差不多了,我们进入正题;

2022-12-29 17:46:33 328

原创 Android性能优化 -- 内存优化

内存,是Android应用的生命线,一旦在内存上出现问题,轻者内存泄漏,重者直接crash,因此一个应用保持健壮,内存这块的工作是持久战,而且从写代码这块就需要注意合理性,所以想要了解内存优化如何去做,要先从基础知识开始。

2022-12-13 20:51:30 381 1

原创 Flutter使用Canvas实现微信红包领取效果

很自然的想到了使用 Dialog 来实现,最终也确实使用 Dialog 实现了对应的效果,但是在最后展示结果页的时候出现问题了,因为红包开启与结果展示是同时进行的,结果页在红包下面,使用 Dialog 的话会存在结果页在 Dialog 上面遮住红包的效果,最后使用了。那么怎么让它动起来呢?效果已经有了,但是发现在旋转到最小的时候中间是空的,这不符合我们的预期,那怎么办呢?如图所示,绘制两个相同的圆,开始时将两个圆重叠在一起,然后同时压缩圆的宽度并将下层的圆向左偏移一定单位,就形成了旋转的立体效果。

2023-02-21 20:13:47 441 1

原创 【Android】自定义View为什么要处理wrap_content

我们在xml中分别设置和分别对应:可以看到,CustomView的宽度设置和结果相同,这是为什么呢,接下来让我们从源码中寻找答案如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记。

2023-02-20 14:54:13 650

原创 【面试必备】2023最全Android面试宝典免费分享~

马上就到了2023金三银四了,Android又即将迎来一场“腥风血雨”。今年是疫情管控放开的一年,全球经济缓慢复苏,各大公司都在往好的方面发展,当然Android岗位也会逐渐增多,程序员们的选择也会多几分。所以大家一定要努力提高自己,为自己争取一席之地。下面给大家分享一些面试建议吧。

2023-02-15 16:48:30 318

原创 字节内部超全Kotlin学习笔记,快速上手 Kotlin 开发,基础 + 实战 + 源码,手把手带你吃透 Kotlin 语法与协程。

目前市面上主流的 App 和库,大都是使用 Kotlin 语言开发的,在 Play Store 的前 1000 个应用程序中有 80% 以上使用 Kotlin。这也意味着,, 你还应该学习 Kotlin,才能追上技术发展趋势,在工作中更加游刃有余。Kotlin 是门典型的的语言:语法简洁,极容易入门,但又拥有许多的新特性,不容易掌;即使掌握了 Kotlin 的语法,想要写出优雅的代码,也不容易,更别提 Kotlin 特性的应用场景、底层实现原理了。大部分的学习路径可能是这样的👇。

2023-02-14 17:17:50 264

原创 【Android】flutter如何创建单选按钮解析

尽管它很实用,但根据您正在构建的应用程序类型,默认单选按钮可能对您的需求来说太简单了。现在我们知道如何使用默认的 Flutter 单选小部件构建单选按钮,让我们为更高级的用例构建我们自己的自定义单选按钮。首先,让我们创建自己的小部件,名为});},text,),),在上面的代码中,我们使用 构建我们的单选按钮,类似于我们ListStyle在上一节中的使用方式。该部件有两个参数,text和index。text是收音机的名称,而index包含当前选择的收音机的索引号。

2023-02-13 21:30:10 473

原创 探索 Java & Kotlin 泛型

将一个 Array 对象的数据复制到另一个 Array 对象中,在方法参数中将 Array 的参数类型标注为 out,可使得 form 中的元素不会被修改,以保证原数组对象中数据的安全。Java 和 Kotlin 的泛型都是伪泛型,泛型所进行的类型安全检查仅在编译器进行,在进入 JVM 时这些类型参数都会被移除,运行时不会保留和类型参数相关的信息,我们称这种机制为。我们可以在声明了类型参数的类中,声明一个泛型方法,但如果内部方法所声明的类型参数名称和类上所声明的相同,那么会覆盖类上所声明的类型参数。

2023-02-09 16:57:59 162

原创 在Flutter中使用Dart的介绍

Dart是一种多功能和客户端优化的语言,用于在任何网络或移动平台上快速开发应用程序,并可用于桌面和嵌入式设备。Dart语言的核心目标是为您提供一套工具和编程语言,使您的工作效率提高,并随着开发人员的要求和需要的增加而不断发展。Dart是一种全面的语言,提供优秀的语言能力,如等。Dart的设计对大多数具有不同编程背景的开发者来说都是熟悉的。因此,无论你是否有JavaScript和TypeScript的背景,或者你一直是一个面向对象的程序员,你都会发现使用Dart很熟悉。

2023-02-08 15:15:05 418

原创 Kotlin Anko库的异步解决方案 doAsync与uiThread的实现理解

我们再回过头看调用doAsync的全过程doAsync {doAsync()方法首先将当前运行的Context进行弱引用存储起来,用于以后感知这个Context还是否存在。随后,他检查内部Executor单例类,来查看ExecutorService线程池是否被建立,如果没被建立,那就创建一个newScheduledExecutorThreadPool,线程数量为当前可用processors的两倍。如果线程池创建完毕,或是已创建,那么他就将task()提交给线程池运行。

2023-02-07 17:13:44 319

原创 【Android 性能优化】Android布局优化解读

在自定义View时需要注意,避免犯以下的性能错误:在非必要时,对View进行重绘。绘制一些不被用户所看到的的位置,也就是过度绘制(被覆盖的地方)。在绘制期间做了一些非必要的操作,导致内存资源的消耗。

2023-02-06 16:46:41 111

原创 Activity - 管理任务(3) 启动任务

让用户可以启动 Activity 并在启动后随时返回到 该 Activity 创建的任务。这种 intent 过滤器可在 应用启动器中 显示 Activity 的图标和标签,intent 会启动 “singleTask” Activity,随之启动新任务,并将 “android.intent.action.MAIN” 作为指定操作,用户必须能够离开任务,之后再使用此 Activity 启动器返回到该任务。方法是为该 Activity 提供一个 intent 过滤器,此时,该任务会转到后台,不再可见。

2023-02-03 16:37:35 100

原创 Activity - 管理任务(2) 清除返回堆栈

它还可导致任何 Activity 消失,包括根 Activity。如果将该属性设为 “true”,则 Activity 仅在当前会话中归属于任务。如果在任务的根 Activity 中将该属性设为 “true”,那么只要用户离开任务再返回,如果在任务的根 Activity 中将该属性设为 “true”,则不会发生上述默认行为。当用户再次返回到该任务时,只有根 Activity 会恢复。如果用户离开任务较长时间,系统会清除任务中除。如果用户离开任务再返回,则该任务将不再存在。Activity 而非整个任务。

2023-02-02 13:57:44 144

原创 Activity - 管理任务(一) 处理亲和性 (taskAffinity)

将 FLAG_ACTIVITY_NEW_TASK 添加到传递给 startActivity() 的 intent 中。默认情况下,新 Activity 会启动到调用 startActivity() 的 Activity 的。Activity 时,该天气预报 Activity 最初会和您的 Activity。该 Activity 与同一应用中的其他 Activity 具有相同的亲和性(因此,在默认情况下,同一应用中的所有 Activity 都倾向于位于。默认情况下,同一应用中的所有 Activity。

2023-02-01 21:58:57 147

原创 Android面试回忆录(腾讯/阿里/滴滴/美团...)

对基础性、原理性的东西比较重视具体问题的解决能力、项目的架构能力公司不同、产品业务线不同,所以涉及的技术重点和方向不同有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西原文地址:www.jianshu.com/p/4e839adcd…这里附上上述的技术体系图相关的《2023最新Android大厂高频面试题解析大全》,把技术点整理成了视频和。

2023-01-30 16:54:56 95

原创 关于java中注解的一些理解

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。若需要文中资料,直接扫码二维码免费领取↓↓↓如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

2023-01-29 20:13:57 215

原创 使用 Flutter SystemChrome

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。若需要文中资料,直接扫码二维码免费领取↓↓↓如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

2023-01-28 20:12:17 837

原创 Android 获取 应用列表 方法记录

有时,我们需要获取设备上的 应用列表,例如获取 所有已安装的 或者 能够显示在 桌面上的APK.基于这些列表,我们可以做一些管理功能, 例如权限展示等的.

2023-01-17 16:25:22 605

原创 Android 热修复入门- Tinker Demo

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》(扫码免费领取~),帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

2023-01-16 15:18:48 232

原创 解读Dart虚拟机的参数列表

Product标记:可以在任何部署模式中设置,包括Product模式Release标志:通常可用的标志,除Product模式以外Precompile标志:通常可用的标志,除Product模式或已预编译的运行时以外Debug标志:只能在启用C++断言的VM调试模式中设置Product、Release、Precompile、Debug这四类可控参数,可使用的范围逐次递减,比如Product flags可用于所有模式,Debug flags只能用于调试模式。

2023-01-14 21:38:39 158

原创 Android-Compose 切换Lottie-Compose动画资源

类,对的,使用该类能实现我们要的结果,配合使用。

2023-01-13 15:54:53 246

原创 介绍gdb调试工具

本文介绍Native异常的调试工具gdb的环境准备与常见命令。

2023-01-12 15:00:03 249

原创 Git常用命令

先用一幅图,从总体上描述主要git命令的工作流程workspace: 本地的工作目录。(记作A)index:缓存区域,临时保存本地改动。(记作B): 本地仓库,只想最后一次提交HEAD。(记作C):远程仓库。(记作D)

2023-01-11 15:28:51 31

原创 kotlin基础详解

kotlin 中的函数,需要通过关键字fun来定义. 通过一个简单的函数来学习fun: 函数的命名关键字method: 函数的名字(a: Int, b: Int): 表示的是两个参数,其中分号前边是参数名称,后边是参数类型,多个参数之间用逗号分开Int: 大括号前边的这个 Int 表示的是当前函数的返回值类型.val sum = a + b: 函数体return sum: 表示的是函数的返回值.如果一个函数不返回任何类型,那么实际是返回的Unit类似 java 中的void。

2023-01-10 17:43:02 1327

原创 侥幸拿到了阿里offer,面经分享~

这次是来源大学室友的面试经历分享,三年经验渣本,现在在杭州,做过外包(那是真的苦), 由于疫情在家宅了4个月,其实在家苦修,4月拿到朋友给的阿里内推,说实话心里还是有点慌,但不能辜负这4个月的幸苦学习,最终还是侥幸拿到Offer。运气在面试过程中是非常重要的,刷题的目的很简单,除了巩固我们所掌握的,另一个就是为了能提高在面试中我们的运气,如果能够问到一样的题是再好不过了,当然这个办法是适用于职级中低岗位。5:是否熟悉Lopper架构,如果熟悉说下其原理,如果你自己实现,你会怎么实现。

2023-01-09 17:33:22 176

原创 Framework开发 - Framework中实现OC和Swift的混编

iOS工程中实现的OC和Swift混编的方案和实现步骤已经很多了,在此不做赘述,本篇文章需要描述的是实现在Framework下的混编。

2023-01-07 21:30:00 297

原创 Android Launcher源码

launcher主要的activity,是launcher桌面第一次启动的activity.抽象的桌面。由N个cellLayout组成,从cellLayout更高一级的层面上对事件的处理。是workspace的父类,用来桌面的左右滑屏组成workspace的view,继承自viewgroup,既是一个dragSource,又是一个dropTarget,可以将它里面的item拖出去,也可以容纳拖动过来的item。在workspace_screen里面定了一些它的view参数。辅助的文件。

2023-01-06 17:08:26 615

原创 Android compose入门学习

Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API,可以帮助您简化并加快 Android 界面开发。由于 Compose 基于 Kotlin 构建,因此可以与 Java 编程语言完全互操作,并且可以直接访问所有 Android 和 Jetpack API。它与现有的 UI 工具包也是完全兼容的,因此你可以混合原来的 View 和现在新的View。

2023-01-05 21:36:04 1017

原创 2022面试经-腾讯QQ社群Android开发

通过降低系统资源消耗和重复使用现有线程,从而降低线程创建和丢弃的消耗,提高系统的响应速度,在任务到达时,通过复用现有线程,无需等待新线程的创建因为如果没有限制地创建线程,则会占用过多的内存,从而导致OOM,从而导致cpu切换过度。【1】 publish时超过CONTENT_PROVIDER_PUBLISH_TIMEOUT 10s的时间,触发timeout publishing content providers,会直接kill,这一类的启动超时,有service,process,同样会触发.

2023-01-03 20:58:05 135

原创 疫情被裁3个月,看我如何拿下腾讯offer(面经+面试心得)

先说一下个人基本情况,湖南渣渣二本毕业,计算机科学与技术专业。主要学的Android开发,从事Android开发工作也有三年了,但是今年因为疫情原因,在3月份被裁了。由于我有3年的开发经验,基础也还可以,觉得找工作应该比较容易,但是现实却不是这样的,陆陆续续投了一些简历,要不没动静,要不面试挂。面试挂了几次后我总结了一下原因。

2022-12-31 20:00:06 290

原创 源码解读epoll内核机制

通过select方式单个进程能够监控的文件描述符不得超过 进程可打开的文件个数上限,默认为1024, 即便强行修改了这个上限,还会遇到性能问题;select轮询效率随着监控个数的增加而性能变差select从内核空间返回到用户空间的是整个文件描述符数组,应用程序还需要额外再遍历整个数组才知道哪些文件描述符触发了相应事件。本文要介绍epoll机制,有不少人可能都知道相比select/poll之下,epoll有着明显优势,这些优势的底层实现原理又是什么呢?

2022-12-30 20:18:31 191

原创 Compose + Fragment是一个不错的选择

Compose很好用,但是在真正应用到项目时,我们还需要解决一些问题。我要开发一个这样的页面,外层用Bottom Navigation Activity,每个tab对应的一个fragment,页面内容我用Compose来填充,不使用xml来布局,因为Compose太好用了,如果不是页面缓存的原因,我可能会选择全部使用Compose来写。我曾尝试使用。

2022-12-28 21:41:13 758

原创 Linux内存管理

关于Linux的内存管理,本文分别从内核空间和用户空间两个视角来阐述。

2022-12-27 19:50:22 176

原创 两年 android 经验面经分享

去年跳槽不成功,在同花顺又呆了一年。一年来收获蛮大,就公司项目来说,已经是非常熟悉了,很多入职不久的,都是不断抱怨,框架太老,技术太旧。这个是实话,但是细看里面的思想和设计还是能学到不少东西的,一年来也顺手优化了许多东西,根据业务也思考了很多更合理的方案。不过还是打算跳槽了,薪资和无法推动项目是个大问题,总不能鱼渔都不得吧。我是抱着找不到好的,就北上的心态找的。

2022-12-26 19:58:30 143 1

原创 源码解读poll/select内核机制

在前面的文章select/poll/epoll对比分析,从使用者的角度讲述了三者之间的关系。select/poll/epoll都是IO多路监控机制,通过监控文件描述符读写状态来通知相应程序执行操作的一个机制。再往深处问一个他们底层又是如何实现,可以做得监控文件状态的功能呢?本文先回顾select/poll机制的使用与源码,下一篇文章再来单独能实现高并发的epoll机制。等待队列:当事件满足要求,则唤醒所有的等待队列项。一个进程可以等待多个不同等待队列,以及指定相应的唤醒时回调函数。

2022-12-14 21:16:22 185

空空如也

空空如也

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

TA关注的人

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