IT技术博客大学习 共学习 共进步
首页 / 苹果核
IT 2020-02-05 10:44:35 / 累计浏览 2,260

淘宝用户增长的5+1个策略

这篇讲的是淘宝如何拆解和制定用户增长策略。作者没有陷入实现细节,而是从平台视角出发,首先构建了一个清晰的用户增长公式:MAU由上月留存、未流失用户以及本月新增(MNU)构成。增长抓手的核心,就聚焦在MNU的引入上。 围绕MNU引入,文章分享了淘宝的流量引入体系——一个“三纵两横”的架构。具体策略上,智能投放的核心是“对人”和“对素材”的深刻理解。通过建立离在线人群服务为渠道提供精准流量筛选,再结合海量素材库与个性化推荐算法,能将广告曝光点击率从行业普遍的2%以下提升至10%以上。另一个重点策略“拉承一体”,则巧妙解决了用户引入后在登录环节大量流失的痛点。通过封装链接SDK统一入口,并借助“用户信息总线服务”跨域传递用户行为数据,让运营得以在用户激活的瞬间进行个性化承接,填补了引流与用户成长之间的空白。 整体而言,文章的价值不在于具体的技术实现,而在于其展现的系统化思考框架:如何用公式量化增长目标,如何构建体系化的流量引入路径,以及如何通过技术手段将运营抓手前置和深化。这对所有从事用户增长工作的人都有很强的借鉴意义。

IT 2016-04-02 13:08:32 / 累计浏览 2,880

菜鸟不要怕,看一眼,你就会用GCD,带你装逼带你飞

这篇讲的是iOS开发中GCD多线程技术的入门实战指南,作者没有堆砌理论,而是从最常用的队列概念切入,手把手教初学者正确使用。文章核心对比了串行队列与并发队列:前者任务按顺序执行,后者则能同时处理多个任务互不阻塞——通过简单的代码和清晰的线程日志输出,直观展示了两者的关键差异。接着介绍了系统预置的Global Queue(并发)与Main Queue(串行主线程)的协作模式,这是日常开发中最常见的“异步操作后回调主线程”范式。此外,作者还详细演示了如何通过dispatch_set_target_queue为自定义队列设置优先级,以及用dispatch_after实现主线程延迟操作,并解释了这些方法与RunLoop的关系。全文通过可运行的代码片段和真实的输出结果,让读者能迅速理解GCD各组件的工作机制与适用场景。

IT 2016-03-22 22:46:00 / 累计浏览 1,260

快速决策方案 —— Airtrack

这篇讲的是原生应用如何找回“唯快不破”的决策节奏。在Native App上,动态化能力弱导致产品决策验证周期长,团队容易陷入追求“不出错”而忽略“有意义”的困境。为此,天猫团队打造了名为AirTrack的试错平台。 平台的核心是一套以A/B测试为基础、可在端上实时运行的SDK。它通过一个可动态配置的“实验条件树”来决定分桶逻辑,并支持数据埋点与分析。这种设计绕过了依赖后端数据API的传统模式,实现了代码级的、灵活的端上实验。 文章分享了三个实际应用:用于配置安全发布的灰度策略,将原本跨版本的首页坑位优化决策缩短到一周内完成的对比测试,以及实现个性化弹窗的创新玩法。这套体系帮助团队能够快速验证想法并及时修正,让应用开发重新灵动起来。

IT 2016-03-21 23:22:03 / 累计浏览 1,100

一种动态为apk写入信息的方案

这篇讲的是如何动态、高效地给Android APK写入信息,以解决用户从H5页面或二维码下载APP后无法直接返回原页面的体验割裂问题。 作者发现APK文件本质是ZIP格式,而ZIP结构的中央目录文件头中有一个未被Android系统使用的“Comment”区域。利用这一特性,可以在不破坏APK完整性、不重新打包的前提下,直接向该区域追加自定义数据,从而实现信息的动态写入。 具体实现上,文章展示了如何通过Java API在APK末尾写入结构化的Comment数据,并在APP启动后读取这些数据。关键点在于自定义了数据长度的存储方式,以兼容早期Android版本。经过测试,被修改的APK可以正常安装,数据读取也准确无误。 这个方案的优势在于服务端操作仅为文件写入,效率极高,特别适合动态生成APK的场景。它能够无缝地将H5流量引回客户端,保持了用户体验的连贯性。

IT 2016-03-21 23:02:52 / 累计浏览 2,880

iOS 高性能异构滚动视图构建方案 —— LazyScrollView

这篇文章讲的是如何解决iOS开发中一个棘手的性能问题:当滚动视图需要展示大量异构(非统一Cell)的视图内容时,传统的UITableView或UICollectionView方案会显得不够灵活或性能不足。作者从天猫客户端首页的实际需求出发,详细介绍了他们自研的LazyScrollView方案。 LazyScrollView继承自UIScrollView,其核心设计思想是在初始状态就通过一个DataSource协议,预先获知所有子视图在滚动视图内的绝对布局坐标(Rect)。这使得框架能在滚动过程中精准计算哪些视图应该被加载或回收,实现了跨不同视图层级的复用,效果类似于TableView的复用机制,但适配性更广。 文章不仅阐述了背景和原理,还提供了清晰的使用指南,包括实现特定的数据源协议以及调用关键API。通过实际Demo演示,直观展示了视图在滚动时被复用标记的变化。内部实现的核心在于根据预先计算好的布局信息进行视图管理,这种思路为处理复杂、动态布局的滚动视图提供了一个高效的解决路径。

IT 2016-03-21 22:53:39 / 累计浏览 1,960

浅析 JavaScript 中的 “闭包”

这篇讲的是JavaScript中一个既重要又容易让人困惑的概念——闭包。作者没有直接抛出定义,而是从维基百科和百度百科两种不同的解释视角切入,对比了其理论抽象与编码实体的侧重点,巧妙地引出了核心问题:闭包在JS中究竟是什么? 要理解闭包,必须先理解JS独特的“函数级作用域”。文章通过清晰的代码示例,指出JS没有块级作用域,这意味着if、for等花括号并不能创建独立的变量空间,与Java、C++等语言行为迥异。在解释了函数作用域后,文章指出,当内部函数引用了外部函数的变量时,闭包便自然产生。最经典的莫过于for循环与setTimeout结合的案例:由于异步执行,回调函数共享同一个最终的循环变量i。文章解析了用立即执行函数(IIFE)为每次循环创建独立作用域的经典解决方案,正是通过闭包“捕获”并保存了当时的变量值。 最终让读者明白,闭包不是刻意为之的“黑魔法”,而是理解JS作用域链和执行上下文后,解决特定作用域问题的自然工具。