JVM相关及其拓展(四) -- 垃圾收集器与内存分配策略 垃圾收集器与内存分配策略垃圾收集器1.概述垃圾收集(Garbage Collection,GC):自动管理回收不再引用的内存数据需要完成的三件事情: 哪些内存需要回收 什么时候回收 如何回收 Java语言会自动管理和回收不再引用的内存数据,由垃圾回收机制来完成。Java自身提供了内存管理机制,应用程序不需要去关注内存如何释放,内存用完后,GC会去自动进行处理,不需要人为干预出现错误。 在 2018-05-04 #JVM
Android音频技术攻略-FFmpeg相关 FFmpeg 是一个开源跨平台多媒体框架,提供音视频的解封装、编解码、转码与流媒体处理能力。 一、FFmpeg 提供的核心能力 建议按“为什么选 FFmpeg -> 需要哪些能力 -> 如何落地 -> 代价与取舍”来梳理。 一句话结论:FFmpeg 的价值不只是“能解码”,而是“可控地稳定解码并统一输出 PCM”。 1.1 多媒体能力总览 解封装(Demux):从 MP3& 2026-02-16 #音视频
数据结构--ArrayList实现原理及简析 ArrayList定义ArrayList是基于List接口实现的大小可变的数组,元素允许为任意属性包括null。同时非有序,非同步(线程不安全)。主要用于装载数据。 ArrayList底层实现是数组。 因此它最擅长的是: 按索引随机访问 尾部追加元素 而对于中间位置频繁插入、删除这类需要搬移元素的场景,ArrayList通常就不是最优选择。 ArrayList的重要参数分析1234567 2019-01-15 #数据结构
CAS操作&Atomic原子操作类分析 CAS与原子操作乐观锁与悲观锁悲观锁认为每次访问共享资源时都会发生冲突,必须对每次对象操作进行上锁,以保证临界区的程序同时只能有一个线程执行。 乐观锁假设对共享资源的访问不会发生冲突,线程可以不停的执行,无需加锁。 一旦发生线程冲突,通常都会采用CAS操作保证线程执行的安全性 悲观锁适用于写多读少的环境,避免频繁失败和重试影响性能。 乐观锁适用于写少读多的环境,避免频繁加锁影响性能。 2018-12-18 #JVM #Java
BHook源码解析 BHook源码解析 基于 ByteHook 1.1.1(main 分支思路),只保留核心链路与高价值细节。 ByteHook 是什么ByteHook(BHook)是 Android Native 的 PLT Hook 框架。 核心动作:解析调用方 ELF 的重定位项 -> 找到 GOT/DATA 地址 -> 改写为代理函数地址。 相比“能改 GOT 就行”的实现,ByteH 2025-10-02 #源码解析
Android音频技术攻略-上层业务交互 一、AudioFocus:功能与关键参数1.1 AudioFocus 的核心功能 发声仲裁:当多个 App 同时需要播放音频时,系统通过 AudioFocus 决定“谁可以发声”。 中断分级:区分长期中断、短期中断、可降音中断,不同类型触发不同动作(暂停/降音/恢复)。 恢复控制:焦点恢复后不等于必须自动播放,仍需结合用户意图与业务状态判定。 体验兜底:减少“界面显示播放中但无 2026-02-15 #音视频
Bitmap分析 Bitmap简介位图文件(Bitmap),扩展名可以是.bmp或.dlb。它将图像定义为由像素组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。 在安卓系统中bitmap图片一般是以ARGB_8888来进行存储的。 颜色格式 每个像素占用内存(byte) 每个像素占用内存(bit) ARGB_8888(默认) 4 32 ALPHA_8 1 8 AR 2019-01-28 #Android
Fragment相关 Android中展示界面一般是通过Activity去实现的,当要实现类似商城类的首页时,就会拿出Fragment去实现对应的每个标签页,由Activity进行管理。 Fragment介绍Fragment存在必须依附于FragmentActivity使用,并且与FragmentActivity一样,拥有自己独立生命周期,同时可以处理用户的交互动作。并且可以在一个Activity中动态的添加、 2018-01-10 #Android
Git常用指令及作用(速查) loggit log //显示提交信息git log –oneline //简要日志输出git log –oneline -5 //输出最近5次提交日志 statusgit status //显示当前git状态git status -s //简要信息 git push origin HEAD:ref 2019-12-06 #Git
Android音频技术攻略-整体音频链路 导读:边界与阅读路线 本文聚焦 AudioTrack 拿到 PCM 之后,到系统最终出声的链路。 上游解码(FFmpeg)与上层业务控制(AudioFocus/路由策略)仅做衔接,不重复展开。 阅读建议:按优先级建议阅读顺序:全景链路 -> write 行为 -> AudioFlinger/Mixer -> 分支路径 -> Policy/HAL 2026-02-16 #音视频
Gradle学习笔记-Groovy基础 Groovy是基于JVM的一种动态语言,语法与Java相近,上手较快。**Groovy完全兼容Java。**又增加了很多动态类型和灵活的特性,是一门比较灵活的动态脚本语言。 变量Groovy中通过def定义变量,无需指定变量类型,自动判断。 数据类型1234567891011121314151617task printDef << {//字符串def str1 = &qu 2019-04-23 #Gradle
Gradle学习笔记-Task Gradle的两个重要的概念:Project和Task,一个Project由多个Task组成。 Task Gradle脚本中的最小执行单元,也是Gradle中的一个原子操作。 Task Result(任务结果)当Task执行时,最终控制台都会输出执行的结果,后面都会带有一个标签,这些标签表示了是否有Task需要执行,是否执行了Task等状态。 结果标签 结果描述 如何触发 没有标 2019-05-08 #Gradle
Gradle学习笔记-基础 Gradle是一种自动化构建语言,是一种DSL(Domain Specific Language 特点领域语言),目前是Android的默认构件构建工具,是一个编程框架。 作用 将Java/Kotlin(逻辑代码)、XML(界面代码)、NDK C/C++(JNI)、资源文件,*RenderScript(并行运算)*这些文件通过编译过程打包成一个Apk。 解决自己的问题 帮助其他人优化开发流 2019-04-22 #Gradle