平安金融科技移动技术周报(第二十三期)
@author ASCE1885的 Github 微博 CSDN 知乎
本期导读:本期原创专题带来 APP 服务治理的实践,以及一篇 Java 多线程锁的介绍;Android 篇可关注 NDK Crash 的定位以及 HTTPS 在 Android 中的使用;iOS 篇重点关注其他团队的路由跳转实践;React Native 篇内容丰富,有总结也有实践,可重点关注 React Native Bundle 拆分的介绍;技术纵横篇带来团队和个人成长相关文章,多看看。
原创专题
1)app服务治理实战(一):异常快速发现 @何刘兴(产品服务组)
SOA(Service-Oriented Architecture,面向服务的体系结构)服务治理已经提出多年,但仅限于serve端,始终没有深度辐射到app端。借鉴SOA服务治理思想,我们设计和实现轻量级的app服务治理系统,旨在解决app中最紧要的治理问题。其中,异常快速发现是我们最先解决的问题,本文将重点介绍。
2)浅谈java多线程之锁 @田聪(产品服务组)
在多线程环境中,多个线程可能并发访问临界资源,为了达到对临界资源访问的同步互斥就必须在线程访问临界资源时为其加锁,Java语言中实现加锁有两种方式:synchronized关键字和java.util.concurrent.lock包中的Lock接口。
Android开发
1)Android NDK Tombstone/Crash 分析 @woshijpf
当 NDK 程序在发生 Crash 时,它会在路径 /data/tombstones/ 下产生导致程序 Crash 的文件 tombstone_xx。并且 Google 还在 NDK 包中为我们提供了一系列的调试工具,例如 addr2line、objdump、ndk-stack。
2)Android APP 架构心得 @Raye
从JavaEE转到Android开发也2年多了,开发的项目也有4,5个了(公司项目),其中有3个项目前期都是自己独立开发,从一开始的毫无架构到现在对如何架构也有一点心得,所以在此分享出来,大家一起交流。
3)HTTPS 理论基础及其在 Android 中的最佳实践 @iSpring
我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。
iOS开发
1)路由跳转的思考 @唯敬
本文是对 iOS 中页面间路由跳转的思考,有一定的借鉴意义。
2)iOS日志获取和实时浏览器显示日志 @yohunl
平时我们写代码的时候,为了调试方便,总是会在代码中写入很多的NSLog(也可能是其它的日志框架等,例如大名鼎鼎的CocoaLumberjack),但是我们对于NSLog到底了解多少?NSLog的信息为什么Xcode能够获取的到?我们能自己写个程序获取所有的NSlog么?NSLog写入的信息到底在哪里?
3)iOS底层-KVC使用实践以及实现原理 @Coder_CYX
KVC(Key-value coding)键值编码,顾名思义。额,简单来说,是可以通过对象属性名称(Key)直接给属性值(value)编码(coding)“编码”可以理解为“赋值”。这样可以免去我们调用getter和setter方法,从而简化我们的代码,也可以用来修改系统控件内部属性(这个黑魔法且用且珍惜)。
4)最全详解:App Store推出的搜索广告 @Ivy
6月9日凌晨1点,苹果官方正式宣布,将在iOS系统内在App Store尝试搜索广告模式,测试版即日起将在北美试水,并于秋季正式上线,但在中国地区何时上线,并未对外透露。
React Native
1)React Native 从入门到源码 @bestswifter
本文分为两个部分:上半部分用通俗的语言解释了相关的名词,重点介绍 React Native 出现的背景和试图解决的问题。适合新手对 React Native 形成初步了解。下半部分则通过源码(0.27 版本)分析 React Native 的工作原理,适合深入学习理解 React Native 的运行机制。最后则是我个人对 React Native 的分析与前景判断。
2)使用React Native一年后的感受 @玩儿音乐的程序猿
作为一名原生iOS开发者,基于先前使用PhoneGap的经验,我非常怀疑使用Web技术构建移动应用的这种方式。但是当我学习并使用React Native一段时间之后,我非常庆幸我们做了这个决定。
3)抽象语法树在 JavaScript 中的应用 @xcatliu
在计算机科学中,抽象语法树(abstract syntax tree 或者缩写为 AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。之所以说语法是「抽象」的,是因为这里的语法并不会表示出真实语法中出现的每个细节。
4)从被误解到最流行:聊聊 JavaScript 的那些闪光点 @王子亭
有人说「JavaScript 是花了 10 天时间匆忙被设计出来的语言」,也有人说「凡是能用 JavaScript 写出来的,最终都会用 JavaScript 写出来」。写这篇文并非要对 JavaScript 做一个全面的优劣分析,而是想与大家分享一些存在于 JavaScript 及其生态系统中的、在我看来比较有趣的闪光点。
5)大道至简——React Native 在直播应用中的实践 @卜赫
React Native 是近年来最值得花时间学习的移动开发新技术,随着 Facebook 持续不断的推进,社区同学的支持,更多大公司的加入,React Native 在不断的进化、成熟,性能也在持续提升。不久的将来,相信 React Native 会改变现有的开发工具链格局,成为大多数初创公司的首选。
6)React Native Package Manager包管理器介绍 @offbye
React Native Package Manager是为了简化React Native开发而生的包管理器。这个项目的想法来自CocoaPods, fastlane和react-native link。它的目标是让几乎全部可用的模块不需要额外配置就可以使用。
7)React Native Bundle 拆分的尝试 @GammaGos
React Native以其独到的特性,吸引着互联网公司纷纷为之投入或多或少的人力。在实际的开发过程中,开发者们也确实尝到了甜头,它的组件化思想、热更新机制以及jsx和es6等的引入,都给开发者们带来了很大的便利。也难怪在npm和github上,每天都会有很多react-native的新模块出现。这也充分表明了各大公司对其的看好。然而,从目前qq群、微信公众号、社区、论坛等各大信息交流平台中了解到,大家都是保持在研究和观望状态,顶多把某个不重要的页面交给React Native来练手。其中缘由纷繁复杂。今天我们这里主要是探讨-bundle文件太大。附:moles-packer:React Native 拆包工具。
技术纵横
1)链家网前端总架构师杨永林:我的8年架构师成长之路 @尾尾
杨永林,人称“教主”,8年前端开发经验,原新浪微博前端技术专家,现任链家网前端总架构师。长期研究Web访问性能优化和前端框架搭建。在8年的前端开发生涯中,教主是如何一步一步地成为知名前端架构师的呢?为何选择加入了链家网呢?带着这些疑问,让我们一同了解这位智慧而幽默的架构师。
2)浅谈技术领导力 ——领导与管理的差异 @余晟
关于技术领导力已经有很多的讨论,我自己也写过好几篇文章。今天我会避免“大而全”地讨论技术领导力,只希望根据自己的经验来谈谈技术领导力的几个主要侧面,希望各位技术领导者能在自己的工作中注意。
3)作为团队的中层,需要做好这四件事 @韩叙
中层的核心作用是承上启下、消化和传递,说是团队灵魂也不为过。一个优秀的中层,可以很快的落地执行老板的决策,保持团队健康有效的运转;也可以反馈给老板一线信息,提出接地气的建议。团队执行力和氛围的好坏,很大程度上取决于中层的管理,在正常情况下,老板最多只能起到影响的作用,并不会直接插手。毕竟,团队协作的本质是各司其职。
4)浅谈代码覆盖率 @wanwei
经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的”。Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。
5)程序员提高效率的一些建议 @米开
我是一个程序员、设计师和企业家,也是 Asana 的联合创始人。许多知名公司(如:Uber,Pinterest,Dropbox)都在使用这款提升团队生产力的软件。我在 Facebook 做开发经理时,设计过一个用于提升团队生产力的工具,Facebook 至今仍在使用该工具。
欢迎关注我们团队的技术公众号