成神之路
文章平均质量分 92
_蓝橙
日拱一卒无有尽,功不唐捐终入海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android Binder 驱动 - Media 服务启动流程
本人能力有限,关于具体函数的介绍只能停留在表面上,分析不到之处还请不吝赐教,啊,头皮发麻…原创 2025-09-02 16:48:46 · 1091 阅读 · 0 评论 -
Android FrameWork - 开机启动 SystemServer 进程
还有一个重要的地方,就是 binder 线程池的启动,启动binder 线程池后SystemServer进程就可以与其他进程进行通信了,在之前的安卓源码中,binder 线程池的启动都是放在启动 SystemServer 时创建的,而安卓 12 是在。在前面分析 AndroidRuntime::start 代码时,我们知道 startReg 就是注册 JNI 方法 的。,记住这里的 所有参数就是上面的 构造启动 system_server 的参数,包括写死的。在安卓 10 之前,启动系统服务是通过。原创 2025-08-30 17:03:25 · 771 阅读 · 0 评论 -
Android FrameWork - Zygote 启动流程分析
一个为 null 一个不为 null,神不神奇,其实 forkSystemServer 仍只会返回一个值,开机的时候 系统服务一定会被创建,Zygote 更会被创建,代表着 forkSystemServer 之上的代码仍会被执行一次,forkSystemServer 及以下的代码会被执行两次。虚拟机已经被启动,通过 JNI 调用 Java 代码,Java 代码就可以在虚拟机跑起来了,接下来完全进入 Java 代码内容,呜呜呜~,终于到能看懂的代码了。事件发生时,这些代码就会被执行,神奇之处就在与 多进程,原创 2025-08-25 17:59:15 · 983 阅读 · 0 评论 -
Android SurfaceView & TextureView
继承自 View,它包含两个部分——一个普通的View组件,用于在屏幕上占据位置,以及一个独立的Surface。这个 Surface 拥有自己的绘图缓冲区,它不是在主 UI 线程上绘制的。因此,可以在一个单独的后台线程上向这个 Surface 渲染内容,而不会阻塞或影响主 UI 线程的流畅性。一般的 Activity 包含的多个 View 会组成 View hierachy 的树形结构,只有最顶层的 DecorView,也即跟节点视图,才是对 WMS 可见。原创 2025-08-13 13:27:40 · 1312 阅读 · 0 评论 -
SparseArray & ArrayMap
SparseArray 系列:Key 是原始数值类型(int、long),替代,避免装箱节省内存。ArrayMap:Key 可以是任意对象,替代,小数据量节省内存。共同点数据量少时比 HashMap 更省内存查找是二分法 + 数组结构插入删除需要移动数据,性能不适合超大数据集。原创 2025-08-13 13:24:06 · 833 阅读 · 0 评论 -
Java Lock
最近的几篇文章都是关于 Java 的,其实为是干安卓的,但是 Java 也是安卓的基础,这些概念知识也是通往高级开发的必经之路,可能你看完文章会发现对自己的开发帮助也不大,都是一些概念类的,但是这些东西对你理解和学习更深层次的知识是有帮助的,最后要看你怎么去理解消化了。Java 相关的文章就先写这么多,后续再查漏补缺安卓知识,了解-学习-消化-理解-输出。原创 2025-08-13 13:22:20 · 1002 阅读 · 0 评论 -
HashMap 底层原理 (JDK 1.8 源码分析)
数组 + 链表 + 红黑树:有效解决了哈希冲突严重时链表过长导致查询效率下降的问题,将最坏情况下的时间复杂度从 O(n) 降低到 O(logn)。改进的哈希算法方法通过高位异或低位,使得哈希值的高位也能参与到索引计算中,降低了哈希冲突的概率,使得元素分布更均匀。扩容优化:在resize()过程中,链表元素的重新定位变得更加高效,避免了每个元素的重新哈希计算。懒初始化table数组在第一次put操作时才进行初始化,节省了内存空间。原创 2025-08-08 17:47:01 · 1199 阅读 · 0 评论 -
Java垃圾回收(GC)探析
GC Root(垃圾回收根)是 Java 垃圾回收(GC)算法中用于判断对象是否“存活”的起始点。栈中的引用(局部变量)静态变量常量引用JNI 全局引用线程、ClassLoader 等特殊引用从 GC Roots 出发。沿着对象引用关系搜索。标记所有可达对象为存活。未被标记的对象即为垃圾。GC Roots 是一组 JVM 默认认为“永远存活”的对象引用,即使两个对象互相引用,但如果从 GC Roots 无法到达它们,它们依然会被回收。算法名称关键步骤核心特点。原创 2025-08-07 16:07:04 · 973 阅读 · 0 评论 -
Java-JVM探析
JVM 是 Java 虚拟机(Java Virtual Machine)的缩写,它是 Java 程序运行的执行引擎。它屏蔽了底层操作系统的差异,让 Java 字节码可以在不同平台上运行。更重要的是在虚拟机自动内存管理机制的帮助下,不再需要手动释放内存,不容易出现内存泄露和内存溢出问题。Java 编译器(javac)把.java文件编译成.class字节码,而 JVM 负责执行这些字节码。了解虚拟机的运行机制有助于在我们开发中,更容易发现问题,找到内存泄漏原因…JVM 是规范(接口标准)原创 2025-08-07 16:04:06 · 1213 阅读 · 0 评论 -
在安卓中使用 FFmpegKit 剪切视频并添加文字水印
这个库很强大,支持很多平台,每个平台都有各自的分支代码,用了一段时间,稳定性挺好的,每个平台下,又分为多个库,每个库包含不同的功能,因为功能越丰富,导入到项目中编译的包体积越大,尽量选择适合自己功能的库进行使用。原创 2025-08-04 17:50:17 · 1849 阅读 · 0 评论 -
NDK-参数加密和签名校验
一种方式做解析,不传明文,只传密文MD5一种方式做解析,即传递明文(参数),也传递密文(md5),后台先去校验比对成功返回数据,不成功返回错误RSA(非对称加密)密钥:一对公钥(public key)和私钥(private key)常用于:登录认证、公钥加密敏感信息、服务器通信中传输对称密钥等优点:公私钥分离,安全性高缺点:运算速度慢,适合加密小数据量AES(对称加密-高级加密标准)多用于:对称加密敏感数据,如缓存、Token、本地数据库等优点:加密速度快,安全性强缺点。原创 2025-08-04 17:49:22 · 1033 阅读 · 0 评论 -
安卓触摸事件分发机制分析
🎯 一句话总结:触摸事件(TouchEvent)会从Activity层开始,按从外到内的方式传递给每一个 ViewGroup/View,直到某个 View消费(consume)它,事件传递就会停止。📌 事件分发三个关键方法方法名所在类作用说明所有 View/ViewGroup事件分发入口,决定是否继续向下传递仅 ViewGroup是否拦截事件,阻止传递给子 View所有 View/ViewGroup事件的最终处理者(消费者)DecorView是一个应用窗口的根容器,它本质上是一个。原创 2025-04-27 16:44:35 · 895 阅读 · 0 评论 -
深入理解 Android Handler
Handler是 Android 消息机制的基础组成部分。通过对 Handler、Looper、MessageQueue 之间关系的理解,我们可以更深入掌握 Android 的线程模型与 UI 更新流程。由于本人能力有限,并没有对Handler进行过度深入全面了解,比如同步屏障等,如果文章内容解读有误,还望不吝赐教。原创 2025-04-18 15:02:06 · 1132 阅读 · 0 评论 -
安卓性能调优之-掉帧测试
掉帧指的是某一帧没有在规定时间内完成渲染,导致 UI 画面不流畅,产生视觉上的卡顿、跳帧现象。原创 2025-04-14 13:46:57 · 1086 阅读 · 0 评论 -
Android JNI 技术入门指南
JNI是 Java 与其他编程语言(通常是 C 或 C++)之间的接口,允许 Java 代码与底层的本地代码进行交互。通过 JNI,我们可以在 Java 代码中调用本地(native)方法,或者让本地代码调用 Java 方法。之前一直对JNI望而却步,真正学过后回头看看,也不是那么的难,难的是你不主动去学。所有伟大,都源于一个勇敢的开始!共勉!原创 2024-11-09 16:47:04 · 1900 阅读 · 0 评论 -
技术成神之路:二十三种设计模式(导航页)
设计原则/模式链接面向对象的六大设计原则技术成神之路:面向对象的六大设计原则创建型模式单例模式建造者模式原型模式工厂方法模式抽象工厂模式行为型模式策略模式状态模式责任链模式观察者模式备忘录模式迭代器模式模板方法模式访问者模式结构型模式享元模式中介者模式代理模式组合模式适配器模式桥接模式装饰模式外观原创 2024-10-24 11:23:38 · 558 阅读 · 0 评论 -
技术成神之路:设计模式(二十三)解释器模式
解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达式的场景。解释器模式定义了一种语言的文法表示,并定义一个解释器用来解释语言中的句子。解释器模式适用于简单的语法解析和解释场景,但不适合复杂的语法结构。它通过类和对象的组合,灵活定义和扩展语法结构。至此,23种设计模式告一段落。原创 2024-10-24 11:09:52 · 920 阅读 · 0 评论 -
技术成神之路:设计模式(二十二)命令模式
命令模式(Command Pattern)是一种行为设计模式,允许将请求(命令)封装为对象,从而使您可以使用不同的请求、队列或记录请求日志,以及支持可撤销操作。命令模式将一个请求封装为一个对象,从而能够参数化其他对象以便于请求的发起、排队或日志记录。命令模式通过将请求封装为对象,提供了灵活的请求处理方式。它有助于实现请求的解耦、可撤销操作和请求日志。尽管它增加了类的数量,但在需要复杂请求处理的系统中,它的优势是显而易见的。原创 2024-10-23 18:39:55 · 1157 阅读 · 0 评论 -
技术成神之路:设计模式(二十一)外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,使得子系统更容易使用。外观模式通过引入一个外观类,来简化与复杂系统的交互。这个外观类对外提供一个简单接口,而系统内部的复杂性被封装在外观类后面。外观模式在简化复杂系统的使用和降低系统耦合度方面发挥了重要作用。通过提供一个高层接口,外观模式隐藏了复杂的实现细节,使得系统更加易于理解和使用。原创 2024-10-22 11:14:35 · 986 阅读 · 0 评论 -
技术成神之路:设计模式(二十)装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变对象自身的情况下,动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。装饰模式通过创建一个装饰类,将功能动态地添加到被装饰类的实例中。装饰类与被装饰类实现相同的接口或继承相同的父类,这样装饰对象就可以取代被装饰对象。装饰模式是一种强大的设计模式,通过组合对象和装饰器的方式实现功能的动态扩展。它在实际开发中非常有用,能够有效地提高代码的灵活性和可维护性。原创 2024-10-10 16:17:23 · 1450 阅读 · 0 评论 -
技术成神之路:设计模式(十九)桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,通过将抽象部分与它的实现部分分离,使它们都能够独立地变化。它的核心思想是将接口与实现解耦,从而使得两者可以独立地变化。桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一个强大且灵活的设计模式,通过将抽象与实现分离,降低了系统的耦合度和复杂性。虽然引入了额外的抽象层,但在需要高度灵活性和可扩展性的场景中,它提供了一种优雅的解决方案。在实际开发中,合理使用桥接模式能够有效提升系统的可维护性和可扩展性。原创 2024-09-30 11:46:06 · 1353 阅读 · 1 评论 -
技术成神之路:设计模式(十八)适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类可以协同工作,通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容而无法一起工作的类可以一起工作。适配器模式是一种结构型设计模式,通过将一个类的接口转换为客户端期望的接口,使得原本不兼容的类可以一起工作。它主要解决接口不兼容的问题,提高代码的复用性和灵活性。原创 2024-09-29 15:23:16 · 953 阅读 · 0 评论 -
技术成神之路:设计模式(十七)组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它使你能够将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式允许将叶子对象和组合对象(容器对象)统一处理。组合模式是一种强大的设计模式,适用于处理树形结构中的对象关系。通过将对象组合成树形结构,组合模式使得客户端可以统一地处理单个对象和组合对象,从而简化了代码逻辑和结构。然而,组合模式也增加了类的复杂性,需要在设计时权衡其优缺点。原创 2024-09-27 16:11:22 · 1209 阅读 · 0 评论 -
技术成神之路:设计模式(十六)代理模式
代理模式(Proxy Pattern)是一种结构性设计模式,它通过代理对象来控制对另一个对象的访问。代理对象在功能上与真实对象相似,但可以在访问真实对象前后添加一些额外的处理。代理模式常用于控制对某个对象的访问、延迟实例化、权限控制等场景。通过引入一个代理对象(Proxy)来控制对真实对象(RealSubject)的访问。代理对象与真实对象实现相同的接口,通过代理对象的接口调用,客户端可以间接地与真实对象进行交互。代理模式通过引入代理对象,为访问真实对象提供了一种灵活的控制手段。原创 2024-09-26 22:48:37 · 1042 阅读 · 0 评论 -
技术成神之路:设计模式(十五)中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的复杂通信和依赖。它通过引入一个中介者对象来封装对象之间的交互,从而使得对象之间不直接相互依赖,而是通过中介者进行通信。中介者模式将对象之间的通信封装到一个中介者对象中,使各对象不再直接引用彼此,从而减少对象之间的耦合度。中介者模式通过引入一个中介者对象,将对象之间的复杂通信逻辑封装起来,从而降低对象之间的耦合度,提高系统的可维护性和可扩展性。原创 2024-09-25 21:49:15 · 1243 阅读 · 0 评论 -
C语言基础
使用预处理器: #define 可以在程序中定义一个常量,它在编译时会被替换为其对应的值。使用**const**关键字:const 关键字用于声明一个只读变量,即该变量的值不能在程序运行时修改。#define 预处理器#define 常量名 常量值在程序中使用该常量时,编译器会将所有的PI替换为 3.14159。return 0;const 关键字const 数据类型 常量名 = 常量值;相对于Java 就算前面加了个const。原创 2024-09-20 19:03:39 · 2007 阅读 · 0 评论 -
技术成神之路:设计模式(十四)享元模式
享元模式(Flyweight Pattern)是一种结构性设计模式,旨在通过共享对象来有效地支持大量细粒度的对象。享元模式通过将对象状态分为内部状态(可以共享)和外部状态(不可共享),来减少内存使用和提高性能。享元模式通过共享对象来优化内存使用和性能,适合于需要创建大量相似对象的场景,但设计复杂性和状态管理需要谨慎处理。原创 2024-09-20 14:43:30 · 1025 阅读 · 0 评论 -
技术成神之路:设计模式(十三)访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。访问者模式定义了一个访问者接口,它包含了访问不同元素的操作方法。具体的元素类接受访问者并调用相应的访问方法。通过这种分离,新增的操作可以直接通过访问者来实现,而不需要修改元素类。访问者模式是一种强大的设计模式,可以方便地向对象结构中添加新的操作,而无需修改对象结构本身。原创 2024-09-11 22:44:46 · 1353 阅读 · 0 评论 -
技术成神之路:设计模式(十二)模板方法模式
模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是指在一个方法中定义一个算法的骨架,并将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。模板方法模式通过在抽象类中定义一个操作的模板,而将具体步骤的实现留给子类,从而实现代码复用和灵活扩展。原创 2024-08-27 17:12:38 · 1259 阅读 · 0 评论 -
技术成神之路:设计模式(十一)迭代器模式
迭代器这个词听到并不陌生吧,我们再开发中遍历HashMap和HashSet的时候 用到的迭代器和这里的迭代器是一个概念,当然,这个模式不是教你如何去实现的,而是以了解为主。迭代器模式(Iterator Pattern)是一种行为型设计模式,它帮助我们在不暴露集合内部结构的情况下,可以顺序访问集合中的元素。它将集合对象的遍历行为抽象出来,放到一个迭代器对象中,这样可以使得遍历行为和集合对象的实现分离。提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。原创 2024-07-31 14:28:09 · 974 阅读 · 0 评论 -
技术成神之路:设计模式(十)备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。通过备忘录模式,可以在程序运行过程中保存和恢复对象的某个状态,从而实现“撤销”等功能。备忘录模式在《设计模式》一书中的定义是:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式是一种非常实用的设计模式,它允许在不破坏对象封装性的前提下捕获和恢复对象的内部状态。原创 2024-07-26 11:50:12 · 1207 阅读 · 0 评论 -
技术成神之路:设计模式(九)观察者模式
观察者模式(Observer Pattern)是一种行为设计模式。它允许一个对象(称为主题或可观察者)来监视并通知一组依赖于这个对象的其他对象(称为观察者),以便在主题状态发生变化时自动更新观察者的对象。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有注册过的观察者对象,使它们能够自动更新自己。观察者模式通过定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,实现了对象之间的解耦和通信。原创 2024-07-24 22:46:17 · 1370 阅读 · 0 评论 -
技术成神之路:设计模式(八)责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象依次处理请求,避免请求的发送者和接收者之间的显式耦合。该模式通过将多个可能处理请求的对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式为请求创建一个接收者对象的链。这种模式给予多个对象处理请求的机会,从而解耦发送者和接收者。原创 2024-07-19 11:54:33 · 1435 阅读 · 0 评论 -
技术成神之路:设计模式(七)状态模式
状态模式(State Pattern)是一种行为设计模式,它允许一个对象在其内部状态改变时改变其行为。这个模式将状态的相关行为封装在独立的状态类中,并将不同状态之间的转换逻辑分离开来。关注点不同:状态模式关注对象在不同状态下的行为差异,封装了不同状态的行为。策略模式关注的是算法的不同实现方式,允许算法在不影响客户端的情况下独立变化。使用场景不同:状态模式适用于对象的行为在状态改变时发生改变的情况,状态之间有明显的转换关系。策略模式适用于客户端需要在多个算法中选择一种时,并且允许在运行时切换算法。原创 2024-07-15 10:54:33 · 1372 阅读 · 0 评论 -
技术成神之路:设计模式(六)策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。策略模式通过将算法封装为独立的策略类,提供了一种灵活的方式来选择和使用算法。它提高了代码的可维护性和扩展性,符合面向对象设计的基本原则。在需要动态选择算法和减少条件判断时,策略模式是一种非常有效的解决方案。原创 2024-07-14 13:46:05 · 889 阅读 · 0 评论 -
技术成神之路:设计模式(五)抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定其具体类。这种模式属于工厂模式的一种扩展,它通过引入抽象层来实现工厂方法的组合,从而使得客户端能够使用抽象的接口创建一组相关的产品对象。抽象工厂模式定义了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式是一种创建型设计模式,它允许客户端创建一系列相关或相互依赖的对象,而无需指定它们具体的类。原创 2024-07-11 11:19:02 · 1066 阅读 · 0 评论 -
技术成神之路:设计模式(四)工厂方法模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂方法模式的主要作用是让子类决定实例化哪一个类,从而实现对象创建的延迟到具体子类中进行。工厂模式解决了简单工厂模式中集中创建逻辑和不符合开闭原则的问题,但同时自身也有一些弊端,但通过合理应用工厂方法模式,在特定的场景可以有效地提高系统的可维护性和扩展性。设计模式没有最好的,只有最适合的,大家在选用时,要权衡利弊,避免过度设计!原创 2024-07-10 11:18:59 · 1036 阅读 · 0 评论 -
技术成神之路:设计模式(三)原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,旨在通过复制现有对象来创建新对象,而不是通过实例化类的方式。这个模式可以提高对象创建的效率,尤其是在创建对象的过程非常复杂或代价高昂时。原创 2024-07-03 16:28:11 · 1495 阅读 · 1 评论 -
技术成神之路:设计模式(二)建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象,而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。原创 2024-07-02 18:40:21 · 855 阅读 · 0 评论 -
技术成神之路:设计模式(一)单例模式
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。其主要思想是将类的构造函数私有化,并通过一个静态方法来控制实例的创建和访问。五种创建单例的方式,大家按需选择,核心思想都是确保一个类只有一个实例,并提供全局访问点,没有最好的,只有最适合的,理解不同实现方式的优缺点,可以帮助我们在实际开发中选择最合适的方案。原创 2024-07-01 11:08:12 · 950 阅读 · 0 评论
分享