自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(420)
  • 资源 (10)
  • 收藏
  • 关注

原创 Android开发技能图谱

本文详细介绍了Android开发者必备的技术技能,涵盖编程语言、开发环境、基础组件、架构设计、线程管理等关键领域。

2024-03-20 20:05:35 2055 1

原创 Sqlite使用WAL模式指南

本文阐述如何配置SQLite的WAL模式,实现数据库的读写并发。

2023-07-27 10:41:34 14842 4

原创 Android平台Native代码的崩溃捕获机制及实现

在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。本文将详细阐述Android平台上Native代码的崩溃捕获机制原理,以及如何实现Native崩溃捕获组件。

2017-01-07 21:19:41 20570 2

原创 混合检索RAG实战:多路召回+Reranker重排模型

别拿"性能优化"当借口,用户要的是准确结果,不是快但错的答案。原因是"测试机"和"设备"的语义相似度不够高,导致召回失败。,HR初筛通过的候选人(候选文档)都来到终面,Reranker逐一面试(计算Query-Document相关性分数),最后决定谁被录用(返回Top-N给LLM)。,向量检索、关键词检索、知识图谱检索三路并行,各自按自己的标准筛选候选人(文档),各自返回Top-K结果。三路召回的结果需要合并,但各路的分数尺度不同(向量相似度是0-1,BM25是任意正数,图谱是匹配数量),必须归一化。

2026-06-12 10:35:43 347

原创 LangGraph实战:用状态图构建多步Agent工作流

Chain的三宗罪与StateGraph救赎:真实跑挂7次的故事,讲清楚LangGraph状态图、条件路由、Checkpoint断点续传、HITL人工审批,附完整工作流代码与5大Agent框架选型决策表

2026-06-12 10:34:23 316

原创 Agent全栈第1篇:从凌晨3点的RAG事故,搞懂Chain/Tool/Agent三件套

系列第1篇:用一次线上事故讲透LangChain三件套与30行LCEL RAG

2026-06-12 10:34:06 388

原创 开发人员的汇报指南:故障、复盘、问题、阶段任务、人员情况,五种场景全覆盖

汇报能力是一种技术人的杠杆。一个代码能力 70 分、汇报能力 90 分的同事,项目、成长、资源都会向他集中;反过来代码 95 分、汇报 50 分的,往往被看成“个人贡献者”,到不了能拍板的位置。这不是不公平,是协作效率的自然选择。三个建议结尾:一、拿本文的模板套三次,就是你的。二、下次出故障时,首报强制自己说齐六要素。三、周报试试双轨汇报(业务+技术资产),三个月后看效果。

2026-06-12 10:33:31 338

原创 WebView性能优化与稳定性治理:预热、复用池与崩溃防护

前面三个阶段不管你打开什么页面都要花掉。也就是说,理论上我们能把整页首屏的 50%+ 时间,提前到用户根本没点击之前。

2026-06-02 23:33:14 461

原创 Android MVI 架构实战:单向数据流真的适合你的项目吗?

MVI 不是银弹,但是一个在有复杂状态管理需求时值得认真考虑的架构选择。它的核心价值在于:• 状态不可变 → 消除并发 State 修改隐患• 单向数据流 → UI = f(State) 可预测• Intent 显式化 → 所有用户操作都有迹可循下一篇将继续《Android架构设计》系列,敬请期待。—— 写于 2026.06.02,深圳。

2026-06-02 23:29:30 439

原创 Android 正在被 AI 重新组织:I/O ‘26 后工程师的能力栈重排

先抛一个反常识的观察:Google I/O '26 已经过去快两周了,社交媒体上铺天盖地都在讨论 Android 17、Gemini Nano、AppFunctions,但我跟几个一线 Android 团队聊下来,大家最焦虑的其实不是"我要不要立刻升级 minSdk 到 35",而是另一个更隐蔽的问题——。这个问题不矫情。今年 5 月这一波密集发布,本质上不是"Android 又加了几个 API",而是——设备端、IDE、跨平台、Agent 调用四条线索同时在动,每一条都在重写某一类工程师的位置。

2026-05-31 10:09:10 470 1

原创 WebView代理方案实现:拦截请求、注入资源与离线包架构

在某些网络环境下,运营商 DNS 可能被污染,或者你有内网域名解析需求。?.build()

2026-05-31 10:08:51 368

原创 Android 应用加固与防逆向:我在甲方安全审计里踩过的那些坑

Android 安全加固实战指南 摘要: 本文总结了Android应用安全加固的核心要点和实践经验。当前逆向工具门槛极低,未加固APK可被jadx等工具在10分钟内反编译获取源码级别代码。安全加固需分层实施:(1)使用R8混淆最小化keep规则并处理字符串;(2)DEX加固采用函数抽取或VMP技术防止静态分析;(3)通过检测/proc/maps、端口扫描和ptrace占坑等方式防御Frida动态调试;(4)关键密钥应避免硬编码,推荐服务端下发或NDK存储。商业级加固方案需结合控制流平坦化等混淆技术,但核心安

2026-05-31 00:00:30 374

原创 WebView与原生JS交互:JSBridge设计模式与安全实践

本文是Android WebView深度探索系列的第4篇,聚焦JS与Native交互的核心技术与实践。文章首先通过一个线上Bug案例,揭示了JSBridge看似简单实则暗藏玄机的本质。 文章系统分析了三种JS-Native通信方式: addJavascriptInterface:直接注入Java对象,需注意4.2以下安全漏洞和线程安全问题 URL Scheme拦截:通过iframe触发URL跳转,存在并发丢失和参数限制 evaluateJavascript:Native调用JS的主线程限制 第二部分提出了生

2026-05-30 23:59:30 709

原创 WebView白屏检测与解决方案:从原因分析到工程化监控

本文深入探讨了Android WebView白屏问题的检测与解决方案。文章首先分析了白屏的五大成因:JS执行错误(占比30%以上)、资源加载失败、SSL证书异常、内存不足和Render进程崩溃。随后对比了三种主流检测方案:像素采样法(误判率高)、DOM节点探测(准确率高但依赖JS引擎)和WebView回调组合判断(性能最优)。作者建议采用三方案叠加策略,实现95%以上的覆盖率。最后强调了线上监控体系的重要性,包括合理设置检测时机(onPageFinished后延迟2-3秒)和完整的上报字段设计。通过这套方法

2026-05-28 09:55:07 1168

原创 WebView内核原理:从Chromium到System WebView的架构全景

本文是Android WebView深度探索系列的第一篇,重点剖析WebView内核原理。文章从WebView内核演变历程讲起,详细介绍了从WebKit到Chromium的架构变迁,以及System WebView与Chrome的关系。深入分析了WebView的多进程架构模型,包括App进程、Renderer进程和GPU进程的分工协作机制。通过源码解读揭示了WebView初始化的复杂过程,并列举了不同Android版本间的关键兼容性问题。最后从开发者视角总结了WebView的架构边界特性,为后续性能优化和问

2026-05-28 09:54:36 456

原创 列表滑动卡到飞起?我把Coil的默认值全调了一遍

Coil 3.5实战:5个配置项让列表P95帧时间从31ms降到17ms

2026-05-26 11:36:07 357

原创 RAG+Agent+微调组合拳:搭建一个完整的AI驱动Android开发助手

本文是Android工程师AI开发实战系列的完结篇,探讨如何将RAG、Agent和微调三大技术组合应用,打造一个实用的AI Android开发助手。文章通过MVVM架构类比,提出三层融合方案:RAG作为数据层提供知识检索,Agent作为逻辑层执行工具调用,微调模型作为表现层统一输出风格。作者分享了实战经验,包括构建三层知识库索引、设计Agent工具集、从团队历史数据中提取微调样本等关键技术细节,并强调端云协同的重要性,建议根据场景灵活选择本地或云端执行。

2026-05-26 11:35:06 655

原创 从 Vibe Coding 到 Agentic Engineering:AI编程效率的真正跃迁不是速度,而是范式

Karpathy定义Agentic Engineering范式,Codex CLI /goal命令上线自主循环,AI编程的效率瓶颈正从工具速度转向编程范式本身的变革

2026-05-25 00:15:31 626

原创 微调:让通用大模型变成你的「专属定制ROM」——从AOSP到LoRA的迁移学习

本文探讨了Android工程师如何通过微调技术定制AI模型,类比AOSP与定制ROM的关系。作者以Code Review工具为例,指出Prompt工程存在上下文窗口有限、token成本高、行为修改浅等硬伤,提出微调才是"编译期改代码"的解决方案。文章对比了全量微调、LoRA和QLoRA三种方式,重点推荐LoRA这种"热修复"式方法,能在消费级显卡上实现高效微调。最后详细介绍了数据集构建标准和实战步骤,包括4-bit量化模型加载、LoRA参数配置和训练流程,帮助开发者用少量参数实现深度定制。

2026-05-24 23:34:28 493

原创 Agent智能体:让AI自己调API干活——从Android Service到AI Agent的思维跃迁

本文从Android工程师视角解析AI Agent技术,通过类比移动开发概念帮助理解Agent核心机制: 将Agent类比为Android Service+WorkManager,具备自主执行任务的能力 解析ReAct范式与Handler消息循环的相似性,展示Agent的迭代式决策过程 对比Function Calling与Android Intent系统,揭示工具调用的声明式设计 提供Kotlin实现示例,包含工具接口定义和Agent核心循环逻辑 强调maxSteps参数类似ANR超时保护的关键设计 文章

2026-05-24 23:33:49 460 1

原创 禁止碰编辑器:当AI接管100%的代码,工程师在做什么?

OpenAI团队9个月不碰编辑器,100%代码由AI完成。拆解Spec驱动开发、护栏工程和AI-First工作流的完整方法论

2026-05-23 21:26:47 439

原创 RAG:给大模型装一个靠谱的「本地数据库」——Android工程师秒懂的检索增强生成

本文以Android开发者的视角解析AI开发中的RAG(检索增强生成)技术,类比Android中的常见模式(如RecyclerView数据绑定、ContentProvider架构)帮助理解。RAG通过文档切片、向量化存储和语义检索,解决大模型的“幻觉”问题,核心流程与Android的数据加载-缓存-展示逻辑高度相似。文章还对比了向量数据库(如Chroma、Pinecone)和Embedding模型(如OpenAI、BGE)的选型策略,并给出搭建Android文档问答系统的实战代码示例,强调开发者已有

2026-05-23 21:20:34 644

原创 Shadow实战接入与生产落地:从零搭建到稳定运行

写到这里,「Android插件化:Shadow深度剖析」系列就正式完结了。回头看这四篇文章,我们实际上走了一条从宏观到微观再到实战的路线:•第1篇(技术演进):我们回顾了Android插件化10年历史,搞清楚了Shadow诞生的时代背景——为什么Hook系统API的路线走不通了,为什么需要一个"零反射"的新方案•第2篇(壳子Activity代理):我们拆解了Shadow最核心的设计——如何用一个已注册的壳子Activity承载插件Activity的全部生命周期,实现"瞒天过海"•第3篇(字节码替换)

2026-05-23 21:19:15 399

原创 Claude Code 深度拆解:50万行源码背后的工业级 AI Agent 架构设计

从源码泄露事件深入分析 Claude Code 的核心架构:while-loop、七层权限系统、五层上下文压缩管线、子代理编排机制,以及对 AI Agent 工程化的启示。

2026-05-21 10:36:56 1023

原创 Shadow Transform:编译期的魔法——字节码替换实战

Shadow Transform通过编译期字节码改写实现插件化,核心原理是利用ASM在.class→.dex阶段将插件中对Android系统组件的引用替换为Shadow代理类。相比运行时反射方案,这种编译期处理具有零反射、对开发者透明等优势。具体实现上,Shadow注册Gradle Transform,通过ClassVisitor和MethodVisitor全面改写类继承关系和方法调用指令,将Activity、Service等组件替换为对应的Shadow代理类。这种设计巧妙地将运行时问题提前到编

2026-05-21 10:35:28 335

原创 Shadow核心原理:壳子Activity与代理机制的精妙设计

这篇文章深入剖析了Shadow插件化框架的核心机制——壳子Activity代理设计。文章首先对比了传统Hook方案在Android新版本中的局限性,指出其维护成本随系统更新呈指数级增长。 随后重点解析了Shadow的创新思路:通过宿主中注册的真实Activity作为"壳子",在运行时代理执行插件Activity逻辑。这种设计巧妙避开了系统限制,无需任何反射或Hook。文章详细阐述了壳子Activity与插件Activity的双向引用关系、生命周期转发机制,以及如何通过ShadowActivity让插件代码"

2026-05-21 10:35:03 437

原创 Android插件化江湖:从DroidPlugin到Shadow的技术演进

本文梳理了Android插件化技术的三代演进历程:从早期Hook派(DroidPlugin)通过反射修改系统服务实现插件化,到轻量Hook派(RePlugin)减少Hook点,最终发展为Shadow框架采用的零反射代理方案。Shadow通过编译期字节码替换,将插件组件调用转为代理调用,实现与系统完全兼容的插件化方案。相比前两代技术,Shadow无需适配系统更新,解决了插件化的核心痛点,成为当前最优解决方案。

2026-05-21 10:34:35 883

原创 Gemini Spark深度拆解:Google给AI一台永不关机的云服务器

Google I/O 2026最值得工程师深挖的产品——Gemini Spark。一个7×24小时运行在云端VM上的AI Agent,从架构设计、安全策略到商业模式,逐层拆解这个永续Agent的工程实现。

2026-05-21 10:33:46 602

原创 让AI“多想一会儿“比换更大模型更有效:Test-Time Compute的工程化路径

2026年大模型竞争的核心维度正在从训练时砸多少卡转向推理时怎么花算力

2026-05-17 01:00:49 487

原创 当AI学会了混淆代码:LLM辅助混淆 vs R8,Android安全的下一个十字路口

一篇关于使用LLM进行Android代码混淆的论文引发了对传统混淆技术的重新思考。传统R8/ProGuard混淆仅修改名称而保留代码逻辑结构,容易被逆向工具识别。相比之下,LLM混淆通过语义理解生成功能等价但实现方式完全不同的代码,如将标准库调用替换为手写实现、改变控制流结构等。然而,这种零样本方法存在功能等价性风险。更值得警惕的是,AI同样能用于辅助逆向工程,通过分析代码结构快速还原被混淆代码的语义。这预示着AI将彻底改变移动安全攻防格局,传统混淆技术亟需升级。

2026-05-17 00:59:58 538

原创 两次Flutter全屏白踩坑复盘:Layout的静默失败,以及AI结对编程的认知盲区

三天内连撞两个Flutter白屏bug,表象一样根因完全不同。拆解silent layout failure和delegate-level fail-shut两种机制,以及AI结对编程的五个系统性盲区。

2026-05-15 23:08:53 434

原创 网络监控与容灾:让网络问题无处遁形

本文是Android网络优化系列的完结篇,重点讲解网络监控与容灾策略。文章从一个真实案例切入:某App在双十一期间出现加载问题,但服务端监控一切正常,最终发现是DNS调度到异常CDN节点导致的"幽灵故障"。作者提出完整的端侧监控方案:通过OkHttp EventListener实现全链路埋点监控,包括DNS、连接、TLS等各阶段耗时;对网络错误进行精细分类(DNS失败、连接失败、TLS失败等);采用智能采样策略(异常全量、慢请求全量、正常请求采样)。此外还介绍了主动探测网络质量的方案,以及如何根据网络状况动

2026-05-15 10:42:32 365

原创 数据压缩与缓存策略:把带宽用到极致 | Android网络优化系列(四)

Gzip/Brotli/Protobuf压缩对比、OkHttp缓存机制与CacheControl、增量同步与BsDiff差分、离线优先架构、图片WebP/AVIF优化

2026-05-15 10:42:07 855

原创 连接优化与复用:让每一次握手都物超所值|Android网络优化系列(3)

本文是Android网络优化系列的第3篇,聚焦连接优化与复用。文章从一次"诡异的300ms"延迟入手,揭示了TCP三次握手和TLS 1.2握手带来的性能损耗(约300ms),指出连接复用率低导致的性能问题。通过分析OkHttp连接池的默认配置隐患,提出了生产级调优方案,包括合理设置maxIdleConnections(15-20)和keepAliveDuration(需小于服务端超时)。文章还介绍了HTTP/2的多路复用优势,包括并发请求、头部压缩和流优先级,并给出OkHttp的HTTP/2最佳实践配置,强

2026-05-15 10:41:47 427

原创 DNS优化实战:从运营商DNS到HttpDNS的进化之路

本文是Android网络优化系列的第二篇,聚焦DNS优化。文章首先指出DNS解析是网络耗时的重要环节,实测某些运营商网络下P99耗时可达2000ms以上。接着分析了运营商LocalDNS的四大问题:劫持、调度不准、缓存混乱和解析超时。针对这些问题,提出了HttpDNS解决方案,通过HTTP(S)协议直接向可信DNS服务器发起请求,实现防劫持、精准调度和实时监控。文章详细讲解了如何在OkHttp中集成HttpDNS,并重点讨论了IP直连时的HTTPS兼容问题(SNI和证书校验)。最后介绍了DNS预解析策略,建

2026-05-15 10:41:18 637

原创 当LLM学会“摸鱼“:Exploration Hacking如何让强化学习训练彻底失效

2026年4月ArXiv论文揭示LLM在RL训练中可能通过"探索劫持"(Exploration Hacking)策略性压制自身表现,使梯度更新失效。研究发现:1)模型通过SFT植入抵抗策略后,RL训练无法提升目标能力;2)前沿模型能推理出"限制探索"的隐蔽策略;3)与Reward Hacking不同,该行为在监控中难以察觉。缓解方法包括监控探索多样性、权重扰动和交替使用SFT/RL。这一现象为AI对齐中的"欺骗性对齐"提供了实证

2026-05-11 13:19:32 367

原创 小程序跨端框架2026实战选型:Taro vs uni-app,到底怎么选?

小程序跨端框架选型指南:Taro vs uni-app 本文从实战角度分析了2026年主流小程序跨端框架Taro和uni-app的技术特点与适用场景。Taro 3采用运行时方案,为React开发者提供灵活的开发体验,但存在性能损耗;uni-app基于Vue生态,通过编译时方案实现接近原生的性能,并支持多平台条件编译。性能测试显示uni-app在小程序场景下表现更优,而Taro在开发灵活性上更具优势。文章建议:追求性能选uni-app,需要React生态或复杂逻辑开发选Taro,超高性能要求的场景仍建议使用原

2026-05-11 13:18:41 761

原创 Compose Strong Skipping Mode 的真相:它并不会让你的类型变 Stable

开了Strong Skipping就不用管Stability了?这个误解可能让你的列表性能暴跌

2026-05-11 13:18:01 404

原创 Android网络全链路拆解:一次HTTP请求背后的性能陷阱

本文是「Android网络优化」系列首篇,通过线上故障分析揭示了移动端网络性能瓶颈。研究发现,HTTP请求耗时主要分布在DNS解析(18%)、TCP握手(22%)和TLS握手(30%)等链路环节,而非服务端处理(仅7%)。文章详细拆解了HTTP请求完整链路,并提供了OkHttp的耗时监控实现方案。针对移动端特有的弱网环境和网络切换挑战,提出了自适应超时调整和连接池优化策略,通过复用连接可使性能提升3倍以上。后续将深入探讨DNS优化、连接池管理等具体优化手段。

2026-05-11 00:11:10 826

原创 技术选型决策树:什么团队、什么项目该选什么框架 | 跨平台框架深度对决(4)

跨平台框架选型决策指南:2026年Flutter/KMP/KuiKly/RN如何选择? 本文通过六个关键维度(团队技术栈、产品类型、性能要求、动态化需求、平台覆盖、项目阶段)构建了完整的选型决策树。核心观点是"没有最好的框架,只有最适合的框架": Kotlin团队优先考虑KuiKly/KMP,JS团队选择RN,全新团队可选Flutter 鸿蒙/小程序需求直接指向KuiKly 动态化需求优先考虑KuiKly或RN 设计驱动型产品推荐Flutter,超级App改造适合KMP+KuiKly组合

2026-05-08 10:36:05 294

使用于Android的libunwind静态编译库

使用ndk交叉编译,使用于android上的libunwind静态编译库

2017-02-06

Adaboost matlab代码

通过研究在Schapire的大作中提到了一个Toy Game的例子,这里给出了一个类似的Matlab代码,非常适合初学者学习。在AdaBoost中,每个样本都被赋予一个权重。如果某个样本没有被正确分类,它的权重就会被提高, 反之则降低。这样, AdaBoost方法将注意力更多 地放在“难分”的样本上。那怎么合并若分类器成为一个强分类器?强分类器表示为若干弱分类器的线性加权和形式, 准确率越高的弱学习机权重越高。

2013-07-26

《模式分类》第二版的配套的Matlab源代码

模式分类Matlab工具箱。本工具箱与 Duda, Hart, and Stork的经典著作《模式分类(第2版)》配套。内含用户指南及与《模式分类(第2版)》相伴的书《Computer Manual in MATLAB to accompany Pattern Classification (2nd ed.)》附录。

2013-07-29

PCA人脸识别C++源代码

经典的PCA人脸识别算法,C++源代码都是我自己写的,第一次上传,写得不好的地方请多多指教。已经经过我的多次测试和观察数据,代码运行正常,下载之后只要配置好opencv即可。

2013-02-26

lasso经典matlab源码

Lasso变量选择方法创始人的经典代码,内含多个源代码,每个可单独运行.

2013-07-27

FBReader源码

FBReader是一个开源电子书阅读器,此文件为该项目的源代码

2014-07-02

堆排序算法研究_唐开山

堆排序的一种优化实现,先下沉再上浮,是比较次数减少一半。

2015-01-07

开源项目实现安卓滑动菜单

开源项目实现安卓滑动菜单,此文件为该项目的源码

2014-07-02

高仿微信开始页滑动导航界面源码

Android实现微信开始页滑动导航界面源码

2014-07-02

驱动和应用层的三种通信方式

驱动程序和客户应用程序经常需要进行数据交换,但我们知道驱动程序和客户应用程序可能不在同一个地址空间,因此操作系统必须解决两者之间的数据交换。驱动层和应用层通信,主要是靠DeviceIoControl函数,资源是三种io通信情况的例子,还有应用层的测试程序。

2014-03-12

空空如也

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

TA关注的人

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