平安金融科技移动技术周报(第三十期)

平安金融科技移动技术周报(第三十期)

@author ASCE1885的 Github 微博 CSDN 知乎

平安金融科技移动技术周报(第三十期)_第1张图片
139-160P41I158.jpg-337.5kB

本期导读:本期原创专题为大家带来《后台小白前端入门》系列第二篇:RequireJS;Android 篇带来内存优化和热补丁相关文章;iOS 篇可重点关注循环引用和Swift;React Native 篇主要关注 Javascript 相关技巧;技术纵横篇带来缓存更新,数据埋点和持续交付等发散文章。

原创专题

1)后台小白前端入门--RequireJS @伍琼珂(产品服务组)

之前一直有听说RequireJS,但是一直都没机会去了解,只知道它是一个给js做模块化的API。最近在做React,其组件化的思想和js模块化的思想不谋而合。就想在项目中应用React的同时,也把RequireJS加进来,看看会不会对页面加载或者开发有很好的效果。

Android开发

1)Andoird 优化(二) 内存优化 @影响身边的人

应用的生存期绝大部分时间都用于处理内存中的数据,虽然我们大多数人都意识到在手机上要尽可能少使用内存,但并非所有人都认识到了内存使用对性能的影响。所以,下面我们来讨论一下。

2)如何在 Android 中避免创建不必要的对象 @技术小黑屋

在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用。这其中避免创建不必要的对象是一项重要的方面。Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的。所以避免创建不必要的对象对于Android开发尤为重要。

3)用了超级补丁包技术,再也不用担心上线后不能修Bug了 @俞尚

QQ 空间团队在去年实现 class 替换热补丁包技术的基础上,更进一步在业内首创超级补丁包技术,实现了 App 上 Dex 和资源替换覆盖,在开发人员和用户都完全透明无感知的情况下,可把任意 App 直接升级到最新版本。

4)Realm Java 原理介绍以及常见问题 @陈牧龙

Realm 是一个 MVCC 数据库 ,底层用 C++ 编写。MVCC 指的是多版本并发控制。MVCC 解决了一个重要的并发问题:在所有的数据库中都有这样的时候,当有人正在写数据库的时候有人又想读取数据库了(例如,不同的线程可以同时读取或者写入同一个数据库)。这会导致数据的不一致性 - 可能当你读取记录的时候一个写操作才部分结束。如果数据库允许这种事情发生,你就会得到和最终数据库里的数据不一致的数据。

5)Android N混合编译与对热补丁影响解析 @shwenzhang

大约在六月底,Tinker在微信全量上线了一个补丁版本,随即华为反馈在Android N上微信无法启动。冷汗冒一地,Android N又搞了什么东东?为什么与instant run保持一致的补丁方式也跪了?

6)Android Patch 方案与持续交付 @mason

Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度,每次发布一个版本对于开发同学来讲都是一种漫长的煎熬。相比于 iOS 两三天就能达到 80% 的覆盖速度而言,Android 应用版本升级至少需要两周才能达到 80% 的升级率,严重阻碍了版本迭代速度。也导致市场上 App 版本分散,处理 bug 和投诉等也越来越麻烦。

iOS开发

1)【Android&iOS】QDaily基于WebP的流量优化实践 @chaisong

流量优化对于一个app来讲意义非常重大,能节约用户的流量,节约用户的存储空间,而且能有提高网络请求的回包速度,提高app的速度。因此流量优化历来都是app的优化重点,而且是一个持续优化的点。

2)如何在 iOS 中解决循环引用的问题 @draveness

稍有常识的人都知道在 iOS 开发时,我们经常会遇到循环引用的问题,比如两个强指针相互引用,但是这种简单的情况作为稍有经验的开发者都会轻松地查找出来。

3)检测 NSObject 对象持有的强指针 @draveness

在上一篇文章中介绍了 FBRetainCycleDetector 的基本工作原理,这一篇文章中我们开始分析它是如何从每一个对象中获得它持有的强指针的。

4)【译】回顾Swift 3, 展望Swift @Chris Lattner

Swift 3的正式版已经接近完成状态了, 是时候来回顾一下发布之前的事情, 从中汲取经验, 并且用来整理一下我们(Swift社区)在今年做的事情了. 总的来说, Swift 3无疑将会是一个Amazing的版本, 我们做到的很了不起, 谢谢每一个为这件事情贡献力量的人. 比起马上推进那一堆新计划, 更重要的是让我们每个人从整个大局来看, 了解自己做到的这些了不起的事情。

5)主线程中也不绝对安全的 UI 操作 @bestswifter

从最初开始学习 iOS 的时候,我们就被告知 UI 操作一定要放在主线程进行。这是因为 UIKit 的方法不是线程安全的,保证线程安全需要极大的开销。那么问题来了,在主线程中进行 UI 操作一定是安全的么?

React Native

1)React Native 调试技巧与心得 @CrazyCodeBoy

在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。本文将向大家分享React Native程序调试的一些技巧和心得。

2)Mixins是一种祸害 @camiler

“如何在不同的组件中分享代码?”是大家学习React的时候常问的问题之一。我们的回答一直是:使用组件组合的方式实现代码复用。你可以定义一个组件然后在其他组件中使用它。

3)JavaScript 异步进化史 @穿越过来的键盘手

JS 中最基础的异步调用方式是 callback,它将回调函数 callback 传给异步 API,由浏览器或 Node 在异步完成后,通知 JS 引擎调用 callback。对于简单的异步操作,用 callback 实现,是够用的。但随着负责交互页面和 Node 出现,callback 方案的弊端开始浮现出来。 Promise 规范孕育而生,并被纳入 ES6 的规范中。后来 ES7 又在 Promise 的基础上将 async 函数纳入标准。此为 JavaScript 异步进化史。

4)React设计模式:深入理解React&Redux原理套路 @王下邀月熊_Chevalier

React组件一个很大的特性在于其拥有自己完整的生命周期,因此我们可以将React组件视作可自运行的小型系统,它拥有自己的内部状态、输入与输出。

5)如何让异步接口同时支持 callback 和 promise @老雷

要使得很好地同时支持 callback 和 promise,关键是要处理好这两个问题:

  • 避免unhandledRejection事件(一定要使用promise.catch()捕捉错误)
  • 避免多次执行callback

技术纵横

1)谈谈持续集成,持续交付,持续部署之间的区别 @Meng

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?

2)缓存更新的套路 @陈皓

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。

3)数据无埋点适合你的业务类型吗? @billy

社交网络,让我们越来越多地从数据中观察到人类社会的复杂行为模式,为大数据提供了信息汇集、分析的第一手资料。大数据,从庞杂的数据背后挖掘、分析用户的行为习惯和喜好,找出更符合用户“口味”的产品和服务,并结合用户需求有针对性地调整和优化自身,正是大数据的价值。而这信息的汇集、分析就绕不开‘埋点’。

欢迎关注我们团队的技术公众号

平安金融科技移动技术周报(第三十期)_第2张图片

你可能感兴趣的:(平安金融科技移动技术周报(第三十期))