《App架构师实践指南》:移动开发的进阶指南
文章主要内容:
什么是 app 架构师
这本书主要内容
读完感受
什么是 App 架构师
成为“架构师”是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设计某个大型系统时具备很大的话语权,可以说开发前的架构设计、开发时的技术选型、开发中的规范和性能等,他们都有权来决定。
那什么是架构师呢?根据维基百科对架构师的定义:
系统架构师(System Architect,简称SA或SAr),是在信息系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施的人。他们确立系统的主体架构和实现方向,并负责指导软件工程师等开发人员的编码开发工作。
可以看到,如果说普通程序员是搬砖工,那架构师就是工程设计师,他的责任就是解决软件系统复杂性带来的问题。
一般我们说的架构师主要是指后台架构,但由于移动互联网技术的发展,手机应用功能越来越多,项目越来越复杂,稍微知名些的 App 开发团队就有十几个人,在这种情况下,很多公司设置了 Android 架构师、iOS 架构师一职位(统称为 App 架构师)。
App 架构师的核心职责包括:
选型规划
架构设计
技术攻关
沟通协调
疑难攻略等
这些对架构师来说应该都是通用的。对效率、性能的追求,我认为是架构师最崇高的目标。
现在市面上针对 Android/iOS 开发的基础、进阶知识书有不少,但还几乎没有一本书探讨关于如何成为 APP 架构师的。因此看到这本书出版后我很兴奋,第一时间阅读了一下,读完后写下这篇记录总结。
这本书的主要内容
这本 《App架构师实践指南》是由前阿里资深软件工程师/图像算法工程师 SkySeraph 所著,通读全文后,可以读得出作者在 Android iOS 方面的技术功力以及在架构设计和管理方面的能力。
这本书主要分为四部分:
基础篇
核心篇
产品篇
拓展篇
基础篇
程序员如何成长为架构师?App 开发工程师需要具备什么基础知识?第一部分对这些进行了介绍。
基础篇主要介绍了架构师的职责以及成为架构的路线,然后对比 Android 和 iOS 给出了开发的基础知识和常用工具,Android 部分我比较熟悉,这部分读下来主要是了解了开发 iOS 需要具备的能力和工具如何选择,后面如果考虑写 iOS 应用时应该有帮助。
主要内容如下:
功能、安全、性能、稳定,架构是一种折中
资深开发需要技术的广度和深度,架构师需要技术和业务并重
这节介绍了 Android 开发的一些核心基础,包括:继承封装多态、内部类、进程线程、反射注解泛型等
iOS 对应的基础知识
开源库的选择和使用
核心篇
作为架构师,只完成产品需求是远远不够的,需要用方便拓展的模式设计项目,同时也要关心应用的稳定性,更要对 App 测试相关的知识有所了解,另外安全方面的问题也必须关注。
第二篇核心篇是整本书的精华部分,除了日常开发的知识以外,更是对我们经常忽略的架构模式、应用质量和稳定性监控处理、测试相关知识做了介绍,读完后对平时测试开发做的事有了个大概了解;此外还对 App 的性能优化进行了多方面介绍,其中几个部分除了工具还讲解了背后的原理,解答了我平时的几个疑惑;然后还介绍了安全逆向的一些知识;最后对一些热门知识进行了简单的介绍。
主要内容如下:
常用模块的设计思路
基础组件、必备的基础业务模块如何设计
App 架构的基本功
组件和模块
UML 基本功、设计模式概览
接口设计、常见架构模式等
App 质量和稳定
衡量指标、处理手段
测试相关知识点介绍
App 性能优化
硬件、UI、CPU、内存、网络、安装包体积、启动优化
App 安全逆向
逆向的基本介绍
混淆和加固的原理
Proguard 配置详细例子
产品篇
要进阶不能只是简单地写代码,我们要以做产品的心态去编码,常思考技术以外的东西。
第三部分产品篇对 App 的项目管理、产品思路、设计理念和推广运营给了基本介绍,然后还分享了作者如何维护团队的高效,包括编码规范、敏捷 Scrum 相关等知识。
拓展篇
最后这部分比较短,主要是分享了作者对架构师思维的理解。
架构思维:以产品和业务为驱动的顶层解决问题的思维,需要同时考虑产品、技术和人三重关系。
架构师经常做的是“分”和“合”,即所谓的系统拆分和重新组合,这要求他的综合能力要很高,需要同时具备思维的高度和深度:
具备技术思维的广度和深度,涉猎多领域时能够有足够的技术前瞻思维
具备沟通协调能力,更懂得平衡
读完感受
这本 App 架构师的学习指南书,不限于介绍具体技术层面的知识,更多是技术高度、技术视野以及技术人生的思考。
正如文中提到的“关键词学习法”一样,这本书给我最大的帮助是提供了成为架构师需要学习的一些基础知识点体系,虽然因为篇幅限制很多细节没有描述清楚,但经过阅读我算是有了基本认识,书中提供的“关键技术点”和参考学习资料方便我继续深入研究。
需要注意的是,这本书的知识点是成为 App 架构师必备的基础,但还有许多架构师需要掌握的技术知识点没有涉及到,比如各种第三方框架的介绍和对比、插件化和组件化的详细内容,安卓 framework 相关知识,JNI NDK 相关内容,这些知识据我所知也是成为架构师需要掌握的。
一句话描述下这本书:这本《App架构师实践指南》适合作为有意愿成为 App 架构师的程序员查漏补缺的参考书。整本书涉及的知识点还是不少的,读完可以确认下自己的基础能力有哪些不足,掌握了这些基础,再继续学习我刚才提到的内容会比较顺利。
《App架构师实践指南 》
SkySeraph 潘旭玲 著
点此链接购买纸书
一本讲解从程序员转变为架构师需要了解的技能和思想,明确地给程序员指引了移动架构师成长的路线,是想成为架构师的程序员实用指南。
全面介绍了在移动应用开发的架构设计和性能优化方面的知识,是架构师的必备书籍 。讲述了移动应用架构师需要了解的技能、思想等整体的发展方向,是移动架构师成长的路线图。
读者不仅可以学习到移动应用的开发技术,更能收获到在实战项目中会用到的各种工程化的知识,是架构师的学习宝典 。
推荐阅读
2018年5月新书书单(文末福利)
2018年4月新书书单
异步图书最全Python书单
一份程序员必备的算法书单
第一本Python神经网络编程图书
长按二维码,可以关注我们哟
每天与你分享IT好文。
在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步e读版图书一本。赶紧来参加哦!
本文转自 爱学习的张拭心 异步图书
点击阅读原文,查看更多内容
阅读原文
转载于:https://blog.51cto.com/13127751/2121599
相关文章:

FoveaBox:目标检测新纪元,无Anchor时代来临 | 技术头条
作者 | CV君转载自我爱计算机视觉(ID:aicvml)目标检测的任务是“分类”并从图像中“定位”出物体,但长久以来,该领域的工作大多是这样:生成可能包含目标的区域,然后在该区域提取特征并分类。显然࿰…

【Ubuntu】安装中文输入法、终端不支持中文的解决方法
一、中文输入法安装 1、安装汉语语言包 sudo apt install fcitx sudo apt install language-pack-zh-hans2、安装google拼音输入法 sudo apt install fcitx-googlepinyin安装完毕后,重启或者退出登陆 3、安装sun-pinyin输入法 sudo apt install fcitx-sunpinyi…

CCNA 第一章 网际互联
第一章 网际互联 路由器知识点: 1、默认时,路由器不转发任何广播包和组播包。 2、路由器使用逻辑地址,逻辑地址在网络层的包头中,用来决定将包转发到的下一跳路由器。 3、路由器可以使用管理员创建的访问表来控制被允许进入或流出…

【Cmake】执行cmake命令时报错:No XSLT processor found
一、问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二、原因查找 google该错误信息,原因是确实ubuntu中没有安装 xsltproc 三、解决方法 安装 xsltproc sudo apt install xsltproc四…

一张“黑洞”需要拍两年?有了它或许就不会让大家等那么久了
只闻其名,不见其形,从小听到大的”黑洞“,终于让我们在有生之年见到了它的真容,只能说幽暗的宇宙美丽也调皮,长久以来人类关于黑洞的探索,在这一刻终于得到影像印证。相信很多人心中都有一个疑惑࿰…

如何在一场面试中展现你对Python的coding能力?| 技术头条
点击上方↑↑↑蓝字关注我们~作者 | wLsq 来源 | Python数据科学(ID:PyDataScience)如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了。无论是练习,作业,还是现场白板面试,这都是…

Django web : CSRF verification failed. Request aborted.
错误标题:CSRF verification failed. Request aborted. 错误描述: HelpReason given for failure:CSRF cookie not set.In general, this can occur when there is a genuine Cross Site Request Forgery, or when Djangos CSRF mechanism has not been …

分享一个PC端六格密码输入框写法
如图。我们一般做商城类的项目不免会用到支付密码输入框,我研究了下并决定发上来,也当作是自己成长路上的一点小小的记录。本次介绍的是基于vue的项目 html: <template><div classam_payPwd :id"ids_${id}"><input …

【数据库】sqlite中PRAGMA命令说明
关于sqlite中PRAGMA的说明网上已经有很多了,这里不再复制粘贴,只把内容最全的网址连接记录一下: 官网说明(英文):https://sqlite.org/pragma.html 中文翻译,参见博客:https://www.i…

思科交换机各类型中字母的意思?
24TC-L中各字母的意思分别指? 24TT-L中第二个T的意思? 2960和2960G的区别?基中G是什麽意思? F0/1和G0/1区别? 24代表是24个网络接口 第一个T表示TX,也就是所谓RJ-45的类型(指这个24个接口都是RJ-45,若是P的话&#…

医生还未失业,IBM Watson已跌入深渊 | 极客头条
点击上方↑↑↑蓝字关注我们~作者 | Eliza Strickland译者 | Major编辑 | 琥珀出品 | AI 科技大本营(公众号ID:rgznai100)导语:2011 年,Jeopardy! 挑战赛的成功,让外界看到 IBM 的人工智能给医学带来的革命…

【Qt】Qt容器总结
目录 一、容器类1、顺序容器2、关联容器二、Qt容器特点三、迭代器1、Jave样式的迭代器(效率略低)2、SLT样式的迭代器注意: 由于Qt的容器是写时复制的,因此非const访问器从本质上讲更加昂贵, 因为它们必须首先检查是否需要复制基础数据(并在必要时进行复制)。 因此,在Qt…

Java5线程并发库之保障变量的原子性操作
为什么80%的码农都做不了架构师?>>> java.util.concurrent.atomic 首先我们看java.util.concurrent.atomic包,它主要是提供一些为各种数据类型变量提供原子性操作的类。 AtomicInteger 比如我们来看AtomicInteger类,大家在写程序…

EIGRP OSFP 利用NULL0接口防止路由环路 Loopback Null0接口揭秘
在EIGRP中,只要发生总结就会在路由表中自动产生一条指向NULL0的路由条目,这条路由的直接意思是:匹配这条路由的数据包会被路由器丢掉。它的目的是为了避免在某些情况下产生路由环路。 以第三四学期的中文书P86中的图4-15为例做个说明…

【C++】C++11 STL算法(一):非修改序列操作(Non-modifying sequence operations)
目录一、all_of、any_of、none_of:1、官方说明2、谓词3、STL算法对谓词的说明4、谓词的五种模式5、all_of (C 11)6、any_of (C 11)7、none_of(C 11)8、官方demo:二、for_each1、原型…

Python openpyxl 之 Excel 文档简单操作
背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习文档,后获知这…

售价910元!周志华等人英文新书《演化学习》出炉!
点击上方↑↑↑蓝字关注我们~整理 | 琥珀出品 | AI 科技大本营(公众号ID:rgznai100)关于人工智能教育,从学生培养方案,到课程设置、教材,甚至是授课老师,全国各大高校正探索一条新道路。先是从去…

linux 查看 文档 不显示注释 命令
原文:http://www.weiruoyu.cn/?p661 最近发现一个很好的命令,就是linux 查看 文档 不显示注释 的命令[rootlocalhost ha.d]# cat ha.cf |grep -v ^# logfile /var/log/ha-log 转载于:https://blog.51cto.com/weiruoyu/705840

【C++】C++11 STL算法(二):修改序列的操作(Modifying sequence operations)
目录一、copy、copy_if1、原型:2、说明:3、官方demo二、copy_n1、原型:2、说明:3、官方demo三、copy_backward1、原型:1、说明:1、官方demo四、move1、原型:2、说明:3、官方demo五、…

ECharts测量图,功率图
/*** 测量图,功率图1,仪表盘*/ mainpage.prototype.initEcharsGLT1 function(oneJZ){ //if(myChartGLT1 null && myChartGLT1 ! "" && myChartGLT1 ! undefined) {myChartGLT1.dispose(); //每次加载之前清除之前的echar…
北京智源人工智能研究院启动“智源学者计划”,与旷视发布首个智源联合实验室
4月16日,北京智源人工智能研究院与中国人工智能领军企业旷视召开“智源学者计划暨联合实验室发布会”。北京市科委副主任张光连,海淀区委常委、副区长李俊杰,以及来自科技部、北京市科委、海淀区人民政府、朝阳区人民政府、中关村管委会&…

配置隧道模式的IPSec.×××
一、拓扑及IP配置 二、配置清单 R1#show run Building configuration... Current configuration : 1449 bytes ! upgrade fpd auto version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 …

【C++】C++11 STL算法(三):分隔操作(Partitioning operations)、排序操作(Sorting operations)
目录分隔操作(Partitioning operations)一、is_partitioned1、原型:2、说明:3、官网demo二、partition1、原型:2、说明:3、官方demo三、partition_copy1、原型:2、说明:3、官方demo四…

浪潮发布重磅产品“元脑”,专注AI全栈能力输出
整理 | 一一出品 | AI科技大本营(ID:rgznai100)4月16日,以“智慧凝聚”为题的IPF2019浪潮云数据中心合作伙伴大会在上海举办。大会重点聚焦浪潮“智慧计算”战略,以AI计算力和创新力,联接、承载、赋能合作伙伴。为了布…

React+Redux+中间件
MVVM是Model-View-ViewModel的缩写。mvvm是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。在…

ピエタ~幸せの青い鳥~相关
先打全所有升级补丁 不然没有end4 补丁下载页 4个end出现方法 只看律视角 选项任意→end1 只看愛视角 选项任意→end2 检查一下 这两个流程的CG是否收全了 开启唯视角以后有些CG是找不回的 只看唯视角 选项任意→end3 只看唯视角 最后一个选项选“唯” 此后只要律或愛的视角开…

【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作
目录一、lower_bound1、原型:2、说明:3、官方demo二、upper_bound1、原型:2、说明:3、官方demo三、binary_search1、原型:2、说明:3、官方demo四、equal_range1、原型:2、说明:3、官…

腾讯开源分布式NoSQL存储系统DCache | 技术头条
作者 | 山宝银,腾讯后台高级工程师,专注于分布式 NoSQL 存储领域的技术研发工作,参与腾讯多个自研存储系统的开发,在分布式系统、高可用与高性能服务等领域有较丰富的经验。来源 | 腾讯技术博客当你在电商平台秒杀商品或者在社交网…
老司机带你学爬虫——Python爬虫技术分享
什么是“爬虫”? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫; 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据。但实际操作,老麻烦了~ 用Python写“爬虫”有哪…
[转载]分享WCF聊天程序--WCFChat
http://www.cnblogs.com/gaoweipeng/archive/2009/09/04/1560260.html 无意中在一个国外的站点下到了一个利用WCF实现聊天的程序,作者是:Nikola Paljetak。研究了一下,自己做了测试和部分修改,感觉还不错,分享给大家。…