- 博客(35)
- 收藏
- 关注
原创 Claude Code 源码分析
非阻塞优先。Memory 预取、Skill 发现、工具执行总结都是异步启动、按需消费的。主流程绝不为可能没结果的后台操作等。97% 的 skill 搜索命中率意味着阻塞式搜索几乎总是浪费时间,所以干脆做成异步。精打细算。从 tool result 的三类分区,到 memory 文件 4KB 截断和已读过滤,到 60KB 累计熔断,再到 fork 子 Agent 的字节级 cache 对齐,每个环节都在算 token 和 cache 怎么省。渐进式恢复。413 有两层(折叠释放 → 反应式压缩),
2026-06-12 16:38:03
583
原创 体验专题——Android 应用瘦身实战
远程化(也称插件化),就是将 App 拆分成一个宿主(base)和多个插件(feature),每个模块都是一个独立的 APK。上传到应用商店的只有 base APK,插件 APK 在运行时按需从云端下载并加载。这个过程分为编译期和运行时编译期:不需要远程化的模块打包成主 APK(base.apk);各个远程化模块(地图、推流等)分别打包成独立的 feature.apk 并上传到 CDN;上传的元信息(模块名、下载地址、MD5 等)内嵌在宿主 APK 中运行时。
2026-06-12 14:15:16
429
3
原创 客户端AI研发提效方法及实践
客户端 R2C (Requirement to Code) Agent 是一个基于SDD理念的端到端开发框架。它采用流水线式Agent工作流,深度集成于IDE环境,打通了从"需求"到"可运行代码"的全链路。
2026-06-06 12:46:58
571
原创 消息跨端架构演进:基于 C++ 的多端一致性研发框架实践
跨端不是追求 100% 代码复用。核心是在"一致性"与"平台最优体验"之间找到平衡点。对于强交互场景(如键盘区域),保留 Native 实现往往是更好的选择。容器框架的抽象层级要足够精简。过度设计会导致理解成本反增。我们的 BizLogicProtocol 只有 7 个核心方法,足以覆盖所有业务场景。全链路质量监控是成功落地的关键保障。跨端方案最怕的不是技术问题,而是出了问题找不到原因。架构合理性决定 AI Coding 的上限。当项目架构抽象得足够合理时,AI 辅助的成本直线下降。
2026-05-31 23:35:45
901
原创 AutoGLM vs 豆包手机:拆解两条 GUI Agent 的技术路线
AutoGLM 给行业打了个样:只要你有 ADB 连接 + 一个能看懂屏幕的大模型,就能在任何安卓手机上做出一个"能用"的 GUI Agent。它的"规划-接地"双模块设计让系统可解释性很强,开源后社区很快就复现出了各种玩法。2.0 版本更进一步搬到云手机上(无影 AgentBay),本地设备完全不侵入。工程门槛不高,验证速度快,是 2024 年这波 Agent 热潮里的"快速可达解"。
2026-05-30 09:40:35
842
原创 来自 Android14 的“酷炫惊喜动画”——记录一次安卓动画缓存问题的排查过程
本文从一个线上动画异常的用户反馈出发,通过系统化的特征分析定位到 Android 14 的→systemui架构迁移中缓存管理的逻辑缺失。架构迁移的副作用:Android 14 将 Activity Transition 处理从迁移至systemui,但未同步迁移缓存失效逻辑,导致广播无法清理systemui进程中的资源缓存。资源 ID 动态分配的脆弱性aapt2默认按资源条目顺序分配 Entry ID,任何资源文件的增删都会导致后续资源 ID 位移,在缓存未被正确清理的场景下触发冲突。
2026-05-30 00:23:39
411
原创 Wolverine:杀不死的 Android 进程保活方案
Wolverine 方案的核心优势可以归纳为三点:一是利用 Linux 内核 flock 语义实现零延迟的进程死亡感知,二是通过参数预计算将拉起耗时压缩到仅一次 Binder IPC 通信,三是多进程冗余互保形成的高可靠性网络。但该方案也存在明确的局限:一是需要额外 3 个保活进程,对系统资源有一定消耗;二是若系统能够原子化地同时杀死所有相关进程(如先 SIGSTOP 后 SIGKILL),则保活失效;
2026-05-30 00:05:46
278
原创 体验专题—如何解决困扰用户的白屏问题
从舆情反馈的现场和对客户端实现的理解将白屏的定义为:在一定时间内,页面元素得不到及时的展现,导致页面布局出不来,或者出现错误的打底页面,或者部分的图片出不来的页面,定义为白屏。根据该定义,我们可以制定一套白屏的检测算法来统计白屏的数据。白屏治理是一项长期性的工作,随着时间的推移,原有的一些治理好页面很可能会出现腐化。因此,在白屏治理的过程中,我们需要沉淀出一套体系化的治理方式,结合已有平台并完善相关能力,从采集观测、问题分析、治理优化三个步骤来解决端侧的白屏问题,如下图所示。
2026-05-29 11:48:27
603
原创 大模型初探落地——1688严选智能客服
1688严选智能客服是基于1688消息开放能力并结合大语言模型构建的AI采购助理。此项目以严选大店客服的定位来回答用户关于商品、商家服务履约能力、平台规则等问题,通过升级前台用户咨询接待策略让AI往前站,以此来降低上架接待成本,提升接待响应率。同时以打造智能助理的心智,提升买家对严选服务、品质的认知,深化平台背书体感。本文将整体阐述项目的背景、设计流程及成果,并将从算法侧、服务端、客户端等多角度介绍产品的设计思路。首先整体介绍一下1688的严选项目。
2026-05-29 11:43:04
298
原创 探究LayoutInflater.Factory使用原理
LayoutInflater.Factory 是提供给你的一个加载布局使用的回调接口(Hook),可以使用 LayoutInflater.Factory 来自定义布局文件,实际上就是可以在 LayoutInflater.Factory 的回调中可以根据对应的 Tag 来修改某个 View,然后返回该View。首先新建一个LayoutInflater.Factory2,在onCreateView实现中获取name的值,当name为自己想替换的组件名称时,可以自己新建一个想替换的组件并返回其值。
2026-05-29 11:28:08
219
原创 AndroidX迁移总结
经过几个月的迁移以及灰度流程后,目前迁移已全量稳定上线。总的来说,迁移的过程可能并不轻松,1688主客代码所包含的第三方库非常多且杂乱,自己的一方库中也有很多早已不再维护,这都给迁移过程带来了很大的困难。所幸谷歌官方以及其他开发人员各个提供了很好的迁移工具,极大地简化了迁移成本。同时,本身androidx升级后就存在许多兼容性问题,1688迁移后遇到的问题可能只是冰山一角,想要趟平所有坑还需要大家共同的努力。
2026-05-29 11:22:34
465
原创 安卓插件化原理
一、发展历史插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件化,主要是解决下面三个问题:插件中代码的加载和与主工程的互相调用插件中资源的加载和与主工程的互相访问四大组件生命周期的管理二、插件...
2019-09-25 11:14:47
1001
原创 如何实现一个IM通信应用
长连接运作方式客户端在与服务器建立了TCP连接之后,客户端定时向服务器发送心跳包确认,有消息的时候,服务器直接通过这个已经建立好的TCP连接通知客户端。而正所谓长连接,就是大家建立连接之后不主动断开,双方互相发送数据,发完了也不主动断开连接,之后有需要发送的数据就继续通过这个连接发送。...
2019-09-03 18:13:36
1039
原创 详细解析websocket
现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服务器返回数据给浏览器。由于HTTP协议是惰性的,只有客户端发起请求,服务器才会返回数据。轮询技术实现的前提条件同样是基于这种机制。而WebSocket属于服务端推送技术,本质是一种应用层协议,可以实现持久连接的全双工双向通信。在介绍WebSocket之前,先了解下传...
2019-09-03 17:51:17
954
原创 Android图片压缩
常用的压缩方法质量压缩质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度,来达到压缩图片的目的,图片的长,宽,像素都不会改变,那么bitmap所占内存大小是不会变的。 我们可以看到有个参数:quality,可以调节你压缩的比例,但是还要注意一点就是,质量压缩对png格式这种图片没有作用,因为png是无损压缩。采样率压缩采样率压缩其原理是缩放bitamp的尺寸,通...
2019-08-20 01:30:15
489
原创 Android系统中的进程管理
进程优先级的设置对于每一个运行中的进程,Linux内核都通过proc文件系统暴露这样一个文件来允许其他程序修改指定进程的优先级:/proc/[pid]/oom_score_adj。(修改这个文件需要root权限)这个文件允许的值的范围是:-1000 ~ +1000之间。值越小,表示进程越重要。当内存非常紧张时,系统便会遍历所有进程,以确定哪个进程需要被杀死以回收内存,此时便会读取oom_sc...
2019-08-17 01:23:30
858
原创 http 与 https 协议
一次完整的 http 协议请求过程Http协议的主要特点支持客户/服务器模式简单快速:客户向服务端请求服务时,只需传送请求方式和路径。灵活:允许传输任意类型的数据对象。由Content-Type加以标记。无连接:每次响应一个请求,响应完成以后就断开连接。无状态:服务器不保存浏览器的任何信息。每次提交的请求之间没有关联。作者:stormjun94(微信公众号同号)链接:https:...
2019-08-04 12:28:42
246
原创 操作系统基础 进程通信方法
进程对白: 管道一个线性字节数组,可以使用文件读写的方式进行访问,却不是文件。管道可以设在内存中,操作系统赋予其中一个进程写的权限,另一个进程读的权限。使用管道的两个进程必须存在某种关系,父子进程等。记名管道如果要在两个不相关的进程之间通信,就要使用记名管道。记名管道有名字。命名管道支持多个客户端连接一个服务器端。命名管道客户端不但可以与本机上的服务器通信,也可以同其他主机上的服务器通信。...
2019-08-03 22:46:47
312
原创 探究移动混合开发中的 JSBridge
#深入探究移动混合开发中的 JSBridge现在移动端应用盛行,而不管是 Hybrid 应用,还是 React-Native应用都离不开 JSBridge的帮助,当然也包括在国内举足轻重的微信小程序。那么,JSBridge 到底是什么?它的出现是为了什么?它究竟是怎么实现的?在这篇文章中,会在移动混合开发的范畴内,将给大家带来 JSBridge 的深入剖析。JSBridge 的用途JSBr...
2019-07-18 00:42:28
395
原创 微信小程序底层原理剖析
微信小程序底层原理剖析随着前端技术的不断演进,目前市面上的移动端产品有像大前端转换的趋势。开发一个产品主流上大致有5种开发模式,包括 Native APP 原生应用、WebAPP 网页应用、Hybrid App 混合式开发、ReactNative、轻应用小程序。开发一款 APP,如果注重性能,不需要过多的动态内容,可以选择原生应用来开发。如果性能要求不高,只是需要点开即用,那么 WebAPP ...
2019-06-30 01:44:26
2224
原创 利用Truffle实现一个区块链捐款系统
选题背景慈善捐款越来越普遍,但该行业仍然存在着多年运作累积的很多问题。最令人诟病的就是善款去向不明、信息不公开,而且公益项目,每一笔善款都代表着公众对需要帮助的人的爱心和善意,一旦曝出贪污等不法行为,打击几乎是毁灭性的。在某些特定的情况下,这些问题也阻碍了人们奉献爱心。而区块链的出现正好为慈善捐款的公平公正提供了基础。依据区块链技术具有数据不可篡改和可追溯性,可以用来构建监管部门所需要的,...
2019-02-23 00:11:31
3174
2
原创 使用vue-cli(vue脚手架)及其他组件搭建一个Vue项目
使用vue-cli(vue脚手架)及其他组件搭建一个Vue项目vue是对新手很友好的MVVM框架,具有组件化和数据驱动。组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用;数据驱动是前端的未来发展方向,释放了对DOM的操作,让DOM随着数据的变化自然而然的变化(尤神原话),不必过多的关注DOM,只需要将数据组织好即可。vue-cli提供一个官方命令行工具,可用于快速搭建大型单页...
2019-02-23 00:09:35
322
原创 用golang实现linux下命令selpg
用golang实现linux下命令selpg标签(空格分隔): 服务计算 linux selpg golang##内容简介这次博客的主要内容为使用 golang 开发 Linux 命令行实用程序 中的 selpg。主要的思路就是将c语言中的selpg的写法翻译成go。大部分内容参照了开发 Linux 命令行实用程序##功能说明selpg是一个unix系统下命令。该命令本质上就是将一...
2019-02-23 00:08:52
270
原创 CLI 命令行实用程序开发实战 - Agenda
CLI 命令行实用程序开发实战 - Agenda此次作业使用Cobra实现了终端的Agenda系统主要功能注册账户登录账户登出账户删除账户查询账户创建会议查询会议取消会议退出会议清空所有会议增加会议参与者删除会议参与者构架设计主要可以分为三层构架表示层 cmd负责与用户的交互操作和指令提示。接收用户输入的指令与参数,并将数据传输给业务逻辑层。负责输出语...
2018-12-13 21:53:27
342
原创 安卓Intent、Bundle的使用以及RecyclerView、ListView的应用
#安卓Intent、Bundle的使用以及RecyclerView、ListView的应用一、实验题目Intent、Bundle的使用以及RecyclerView、ListView的应用二、实现内容本次实验模拟实现一个健康食品列表,有两个界面,第一个界面用于呈现食品列表 如下所示数据在"manual/素材"目录下给出。点击右下方的悬浮按钮可以切换到收藏夹上面两个列表点击任意一项后...
2018-10-19 10:35:56
504
原创 用golang实现linux下命令selpg
用golang实现linux下命令selpg标签(空格分隔): 服务计算 linux selpg golang##内容简介这次博客的主要内容为使用 golang 开发 Linux 命令行实用程序 中的 selpg。主要的思路就是将c语言中的selpg的写法翻译成go。大部分内容参照了开发 Linux 命令行实用程序##功能说明selpg是一个unix系统下命令。该命令本质上就是将一...
2018-10-19 10:34:29
387
原创 在Ubuntu上使用golang
在Ubuntu上使用golangGo语言是一门强类型的通用编程语言。它的基础语法与C语言很类似,但对于变量的声明有所不同,也对其他的一些优秀编程语言有所借鉴。另外,Go语言支持垃圾回收。与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了 Slice 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go语言对并发编程的支持是天生的、自然...
2018-09-27 23:44:15
1453
原创 git常用命令及使用方法
git常用命令及使用方法作为一名计算机相关的人士,如果不知道git为何物,那就有些不应该了。Git是目前世界上最先进的分布式版本控制系统(没有之一)。它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本其他系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些...
2018-09-16 22:36:53
313
原创 搭建自己的私有云
使用 VirtualBox 让 PC 提供云桌面服务最近在学习一门新的课程服务计算,因为要统一用到一个linux的环境,所以第一次作业就布置了让我们利用virtualbox去搭建一个私有云。同时课程也给了我们一个简易的教程——私有云。从教程上来看,似乎搭建的过程并不复杂,只需几十分钟或几小时即可搞定了。但从实际的操作上来看,这个私有云的坑还是挺大的,遇上的问题也是千奇百怪。一开始根据教程,...
2018-09-14 15:03:31
17210
原创 实训总结
实训总结总述为期一个月的实训算是告一段落了,在这一个月的时间里,我们可以说完成了许多之前没有接触过的任务,也学到了许多未曾学习过的知识。这次实训主要分为三个阶段,总的来说是呈现一种层次递增状态。具体可以见下图 接下来想要具体述说一下每个阶段的收获和感想。阶段一阶段一主要算是对项目的一个初步了解和一些准备学习工作。首先我们要学会使用Vi, JAVA, Ant 和 Jun...
2018-05-06 17:55:45
7368
原创 Jumper设计文档
设计文档设计思路a. What will a jumper do if the location in front of it is empty, but the location two cells in front contains a flower or a rock?当前方一格为空时,若两格前为花,jumper会直接“吃掉”花并且落到原来花的位置;若两格前是岩石,则先执...
2018-04-22 18:56:03
414
原创 Jumper测试报告
测试报告测试目的测试我们所写的Jumper函数是否符合预期,以及是否会出现一些意外错误。测试思路1、首先测试 Jumper 在面对墙的时候的行为 2、然后测试 Jumper 在面对岩石时的行为 3、再测试 Jumper 面对花的行为 4、最后测试两个 Jumper 互相面对时的行为 测试过程测试面对墙时行为测试与墙相隔两个空格 测试代码为:...
2018-04-22 16:05:24
665
原创 数据库小实验
数据库小实验总述这次数据库实验我选择了实验一,并且计划通过一个学生选课系统的建立来展现实验内容。实验过程实验0:准备实验环境与条件因为想测试不同sql软件的性能,这里我分别下载了mysql和sqlserver两种不同的sql语言软件。不过在做此实验时主要采用mysql进行操作,本文也以mysql作为范例。安装mysql的过程较为简单,只需一路按照缺省值确认便...
2018-04-19 20:12:15
910
原创 阶段一自学报告
阶段一自学报告第一部分:VimVIM是一个非常强大的文本编辑器,这点毋庸置疑,之前也经常有所耳闻。这次借实训之机有机会对其有了进一步的了解。 在 Ubuntu 中可以使用如下命令来安装 Vim: sudo apt-get install vim 然后再命令行中输入vim便可以打开vim了。vim和别的文本编辑器有很多不同。默认打开vim时为查看模式,想要进入编辑模式,...
2018-04-19 20:09:12
401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅