点击关注 异步图书,置顶公众号

每天与你分享 IT好书 技术干货 职场知识​

​参与文末话题讨论,每日赠送异步图书

——异步小编

架构师,软件技术领域一个高大上的名词,业界有言“人人都是产品经理”,却很少听到“人人都是架构师”。其本身涉及的复杂庞大的跨领域知识体系除外,对于架构一词,其实很难去完整地定义,我们也没必要过于纠结,就如我们为什么要登山,因为山在那里,执着前行,或许还未曾知晓路在何方,抑或你都不曾思考要去何方,但至少你已经在路上,while(!(succeed=try()))。成长为架构师是一个过程,而不是一个结束,现在,就让我们开启移动应用架构师之路吧。

什么是架构师? 

架构师是为满足某种架构设计的目标而从整体上构思把控的角色,在软件行业,又会细分很多,如系统架构师、企业架构师、应用架构师、业务架构师等,本书是针对App应用架构师进行阐述的。构建一个完美的架构,一般需要具备下述特征。

  • 具备客户要求的功能。
  • 能够在要求的工期内安全地构建。
  • 性能足够好。
  • 可靠。
  • 可用,且使用时不会造成伤害。
  • 安全。
  • 成本可接受。
  • 符合法规标准。
  • 将超越前任及其竞争者。

总结一下,架构的核心就是功能、安全、性能和稳定。其实,在具体架构实践中,我们很难完整系统地全部完成上述特征,架构是一种折中,“架构师玩的是折中的游戏,对于一组给定的功能需求和品质需求,没有唯一的正确架构和唯一的正确答案”。作为架构师的我们,需要考虑的是如何做得更好,如何避免负面影响。

App架构师的核心职责包括选型规划、架构设计、技术攻关、沟通协调、疑难攻略等,这些对架构师来说应该都是通用的。对美的追求,我认为是架构师最崇高的目标。

程序员发展路线

其实地上本没有路,走的人多了,也便成了路。——鲁迅

踏上架构师之路前,我们先来聊聊程序员的发展路线。先看看国内的大公司的程序员发展路线,笔者整理了大致的职级体系对比图,仅供参考,如图1-1所示。​

​图1-1 职级体系

结合自身发展,我觉得程序员的发展路线应该主要有两条——专家线和管理线,管理线上,不同公司策略不同,大多都是从中间的某个级别道路分叉为管理,如图 1-2 所示。不同级别对应的角色和承担的责任自然不一样,例如资深工程师,需要在技术的深度和广度两维度上都有所积累和沉淀,而架构师除了技术本身外,技术之外的其他领域知识也是必须沉淀的。当然,从长远一点说,若需要结合具体的事业路线,这两条路在东西南北4个方向的事业路可以分散,分散到四象限矩阵,分别对应了职员、创业、SOHO 和投资,如图1-3所示。​

​图1-2 程序员职业路线​

​图1-3 程序员事业路线

App架构师技能矩阵  

前面阐述了程序员发展路线,本节我们来聊聊作为架构师的你或者正在架构师路上的你,需要怎样的技能矩阵。

App架构师画布

在阐述技能图谱之前,我们先借鉴《精益创业实战》[3]一书中的精益画布商业模式,来创造一幅我们的App架构师画布,如图1-4所示。认识自己,这是开始做任何事情的基础。职业定位和事业定位,参考图1-2和图1-3所示,自己是不是真的打算踏入架构师这条路?目标和定位清晰后,该如何开始呢?毋庸置疑,就先从本书开始吧,图1-5为App架构师应该具备的基本技能,那么,开启你的疯狂成长之路吧。成长之路离不开学习,学习又必须有一定的方法,如何正确地学习,请参考本书“架构师那点事”章节内容。光学不练也不行,你需要一个平台或者一个项目去演练,去实践,走过的路才是你自己的路,让我们培养架构师思维,朝着架构师前行。最后,说到得与失?任何事情都存在一定的机会成本,要提前考虑清楚。​

​图1-4 App架构师画布

技能图谱

将技能图谱/技能矩阵用于自己的学习和成长,这是笔者尝试过的非常不错的一种方式,推荐给读者,值得大家体验。针对App架构师的技能图谱,笔者进行了完整梳理,如图1-5所示,本书后面内容基本会覆盖其中大部分知识点。诚然,任何单方面的思考和决策都是不全的、片面的,仅供参考,同时推荐大家参阅Programmer Competency Matrix[4]和七牛云的漫画电子书《架构师技能矩阵》[5]。

​图1-5 App架构师技能图谱

该读什么书?

目前,市面关于App开发的书籍,较多以片面的技术开发为切入点,未能对移动应用开发进行系统性的讲解,尽管可以令读者在短时间内掌握App开发方法,但是随着App使用越来越多,App架构越来越复杂,从长远来看,我们需要的不只是普通的App开发人员,更需要一个能从架构体系上对App开发有全面了解并能全程掌控的技术人员。这里推荐一本书《App架构师实践指南》

本书第一篇从App系统架构师的成长路线轻松切入,一目了然地让读者明白App架构师到底是做什么的,然后通过App基础语法、开发工具等基础知识,阐述了App开发的基本功。第二篇正式展开描述了架构师必备的关于App开发过程中所需的综合技巧,其中涵盖了App常用模块设计、App架构和重构、质量和稳定性、性能优化、安全逆向及热门技术等内容,深入浅出地将一个合格架构师应该掌握的内容娓娓道来。第三篇从团队合作的角度描述了App架构师如何高效地开发和管理一个App项目,并使该项目具有可持续发展的可能。第四篇则以轻松的口吻向所有希望通过本书完成App“码农”向“架构师”升华的程序员们介绍了一些心得体会。

移动互联网是未来物联网世界和大数据世界的基础设施,App开发是移动互联网目前产生价值最核心的技术。我们有理由相信,随着App开发需求的日益强盛,App架构师也会越来越得到重视,并成为App开发产业的中坚力量,那么这本书就能给予这些人希望和助力。

​《App架构师实践指南 》

SkySeraph 潘旭玲 著

点击封面购买纸书

一本讲解从程序员转变为架构师需要了解的技能和思想,明确地给程序员指引了移动架构师成长的路线,是想成为架构师的程序员实用指南。

全面介绍了在移动应用开发的架构设计和性能优化方面的知识,是架构师的必备书籍 。讲述了移动应用架构师需要了解的技能、思想等整体的发展方向,是移动架构师成长的路线图。

读者不仅可以学习到移动应用的开发技术,更能收获到在实战项目中会用到的各种工程化的知识,是架构师的学习宝典 。

本书目录:

第一篇 基 础 篇

第1章 App架构师成长路线 2

1.1 架构师定义 2

1.2 程序员发展路线 3

1.3 App架构师技能矩阵 5

1.3.1 App架构师画布 5

1.3.2 技能图谱 5

1.4 本章小结 6

1.5 推荐资料 7

第2章 App基础语法系列 8

2.1 编程语言 8

2.1.1 那些年,那些语言 9

2.1.2 聊聊Swift 11

2.1.3 Swift 3和Java 8新特性 13

2.2 面向对象思想 14

2.2.1 编程范式 14

2.2.2 封装、继承与多态 15

2.2.3 内部类的使用和思考 17

2.3 线程与进程 19

2.4 反射、注解与泛型 21

2.4.1 反射与注解 21

2.4.2 泛型 23

2.5 本章小结 24

2.6 推荐资料 25

第3章 App开发工具系列 26

3.1 IDE 26

3.1.1 Android Studio 27

3.1.2 Xcode 29

3.2 编译调试 29

3.3 版本管理 31

3.3.1 代码管理 31

3.3.2 Git分支管理 32

3.4 产品设计 34

3.5 程序员珍藏 35

3.5.1 抓包工具 36

3.5.2 ADB 36

3.5.3 Chrome开发插件 37

3.6 本章小结 38

3.7 推荐资料 38

第4章 App SDK使用系列 39

4.1 从Lifecycle说起 39

4.2 大话UI 41

4.2.1 关于布局 41

4.2.2 常用控件 41

4.2.3 自定义View 42

4.3 存储和网络 43

4.4 本章小结 43

4.5 推荐资料 44

第5章 开源库的选择和使用 45

5.1 关于开源 46

5.2 开源库的选择 46

5.2.1 开源项目选择 46

5.2.2 关于License 47

5.3 开源库的使用 48

5.4 本章小结 49

5.5 推荐资料 49

第二篇 核 心 篇

第6章 App常用模块设计 52

6.1 基础组件库 52

6.1.1 构建你的基础组件库 53

6.1.2 不得不说的图片库 54

6.1.3 浅谈网络库和加密 61

6.2 常用业务模块 65

6.2.1 启动引导模块 65

6.2.2 注册登录模块 66

6.2.3 运营统计模块 67

6.3 编译打包 68

6.3.1 打包方式和流程 68

6.3.2 Gradle实用技巧 71

6.4 版本适配 75

6.4.1 iOS App适配 76

6.4.2 Android App适配 77

6.5 本章小结 78

第7章 App架构和重构 79

7.1 从组件和模块说起 80

7.2 组件化、模块化和插件化 80

7.2.1 三个概念 80

7.2.2 App插件化 82

7.2.3 App组件化 83

7.3 UML基本功 86

7.3.1 UML工具 86

7.3.2 常见UML图 87

7.3.3 UML实例 88

7.4 大话设计模式 88

7.4.1 六大原则 89

7.4.2 设计模式总览 89

7.4.3 设计模式实践 90

7.5 接口设计 91

7.5.1 API,What and Why 92

7.5.2 How API 92

7.6 常见架构模式 95

7.6.1 MVX模式 95

7.6.2 常见软件架构 97

7.6.3 从组件化角度看App架构 100

7.7 重构未眠夜 102

7.7.1 重构概览 102

7.7.2 架构重构 103

7.7.3 代码重构 104

7.8 架构设计够了么 106

7.9 本章小结 106

7.10 推荐资料 106

第8章 App质量和稳定性系列 108

8.1 质量标准和稳定性指标 109

8.1.1 应用的核心质量 109

8.1.2 稳定性衡量指标 109

8.2 质量和稳定性手段 112

8.2.1 质量监控 112

8.2.2 问题处理原则 115

8.2.3 App持续集成 115

8.2.4 代码质量监测 125

8.3 笑谈Crash 138

8.3.1 Crash基础和原理 138

8.3.2 Crash收集和统计 142

8.3.3 Crash分析 150

8.4 测试专场 160

8.4.1 测试综述 161

8.4.2 兼容性测试 165

8.4.3 性能和安全性测试 174

8.4.4 自动化测试 174

8.4.5 A/B Testing 180

8.4.6 代码覆盖率 182

8.4.7 线上演练 183

8.5 本章小结 183

8.6 推荐资料 183

第9章 App性能优化系列 185

9.1 性能分析 186

9.1.1 性能维度 186

9.1.2 性能优化 186

9.1.3 性能测试平台 187

9.2 硬件性能优化 187

9.2.1 电量信息获取 188

9.2.2 耗电分析 190

9.2.3 电量优化 191

9.3 UI和CPU性能优化 194

9.3.1 基础原理 194

9.3.2 流畅度度量 196

9.3.3 卡顿分析和优化 201

9.4 内存性能优化 206

9.4.1 内存机制和原理 206

9.4.2 内存分析工具 210

9.4.3 泄露和溢出 210

9.4.4 内存性能优化 212

9.5 网络性能优化 215

9.5.1 网络性能概述 216

9.5.2 网络性能测试和流量度量 218

9.5.3 网络性能优化 220

9.6 App包Size优化 223

9.6.1 App包Size优化概述 223

9.6.2 App包Size分析 224

9.6.3 App包Size优化 227

9.7 App启动速度优化 230

9.7.1 App启动方式和流程 230

9.7.2 App启动时间度量 232

9.7.3 App启动速度优化 234

9.8 App代码优化 235

9.9 本章小结 240

9.10 推荐资料 240

第10章 App安全逆向系列 242

10.1 逆向概述 242

10.1.1 App包组成 243

10.1.2 逆向工具 245

10.1.3 Root和越狱 247

10.1.4 二次打包 247

10.2 逆向分析 248

10.2.1 静态分析 248

10.2.2 动态分析 249

10.2.3 Hook和注入 249

10.3 安全测试 251

10.4 安全建议 252

10.4.1 混淆和签名 253

10.4.2 加固加壳 262

10.4.3 安全编码和隐私 263

10.5 本章小结 265

10.6 推荐资料 265

第11章 App热门技术 267

11.1 进程保活 267

11.1.1 基础知识 268

11.1.2 保活方法 271

11.2 MultiDex 271

11.3 RxJava 273

11.3.1 RxJava基础 273

11.3.2 RxJava应用实例 276

11.4 Hybrid 281

11.5 HotFix 282

11.6 AOP 283

11.6.1 OOP与AOP 283

11.6.2 AOP应用实例 283

11.7 本章小结 286

11.8 推荐资料 286

第三篇 产 品 篇

第12章 App是如何练成的 290

12.1 App练成 290

12.2 开发流程 291

12.3 也谈版本号 292

12.4 本章小结 293

第13章 项、产、设、运“四天王” 294

13.1 项目管理 294

13.1.1 敏捷Scrum 295

13.1.2 班车模式 298

13.2 产品思想 298

13.2.1 产品经理 299

13.2.2 产品思维 299

13.3 设计理念 302

13.3.1 UI与UX 302

13.3.2 设计理念 304

13.4 推广运营 306

13.4.1 运营指标 306

13.4.2 大话推广 309

13.4.3 运营之道 310

13.5 本章小结 310

13.6 推荐资料 310

第14章 我的高效团队 312

14.1 从代码规范开始 312

14.2 不得不说的Code Review 313

14.3 晨会,高效一天的开始 315

14.4 沟通和团建 315

14.5 别忘了技术分享 316

14.6 面试,面试,再面试 317

14.7 自管理,扁平化 318

14.8 最后,聊聊加班 319

14.9 本章小结 319

14.10 推荐资料 319

第四篇 拓 展 篇

第15章 架构师那点事 322

15.1 大话全栈工程师 322

15.2 架构师思维 323

15.3 学而时习之 324

15.4 软技能 325

15.5 本章小结 326

15.6 推荐资料 326

​《深入理解Spring Cloud与微服务构建》

方志朋 著

点击封面购买纸书

谈到微服务,大家众说纷纭,但却很难有一个清晰的概念来描述。微服务不是“银弹”,我理解的微服务是一种文化,而我们要做的就是将微服务的理念运用到实际开发中。经过一系列的技术选型,最终Spring Cloud凭借其成熟的组件、完善的一站式解决方案,最终成为了我们落地微服务的选择。

此时的Spring Cloud相关资料在国内还是凤毛麟角,没有完整的中文书籍和教程可以参考,只有官方的英文文档以及网上零零散散的教程可以阅读。就是在这种情况下,本书的作者方志朋在公司技术选型以及后续的微服务落地过程中,逐渐有了自己的积累和理解,同时在博客中连载了“史上最简单的Spring Cloud教程”。此教程一出,就受到广大程序员的欢迎,因此最终整理为此书。

纵览全书,文字清晰明了,通过理论结合实践的方式介绍了Spring Cloud的每一个组件的实践,并解读了部分源代码。图文并茂,语言朴实,不愧为“简单”之名。本书融合了作者实施微服务的一线经验和心得,具体指导了Spring Cloud在落地方面的实践,非常值得参考。

​《微服务分布式架构开发实战》

龚鹏rico 著

点击封面购买纸书

本书并没有过多的探讨理论性的东西,基于现有成熟框架,围绕实际项目中遇见的具体需求,以微服务分布式架构的角度去逐一分解并且实现这些需求。掌握这些知识的读者,完全有能力快速搭建出可靠、高效、灵活的微服务分布式架构。

​​点击图片报名

今日话题

说说你对架构师的认识?截止时间4月15日17时,留言+转发本活动到朋友圈,小编将选出3名读者赠送异步新书一本。

延伸推荐

2018年2月新书

2018年1月重磅新书

小学生开始学Python,最接近AI的编程语言:安利一波Python书单

政策升温:大家都在学大数据,一大波好书推荐

8本新书,送出一本你喜欢的

AI经典书单| 入门人工智能该读哪些书?​​​

​长按二维码,可以关注我们哟

每天与你分享IT好文。

在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步图书一本。赶紧来参加哦!

扫一扫上方二维码,回复“关注”参与活动!

点击阅读原文,购买《App架构师实践指南》

阅读原文

App架构师成长路线相关推荐

  1. JAVA资深架构师成长路线

    文章目录 JAVA资深架构师成长路线 架构师筑基必备技能 并发编程进阶 JVM性能深度调优 网络编程与高效IO 深入Tomcat底层 MySql深度优化 架构基础必备Linux 设计思想 六大原则 种 ...

  2. JAVA资深架构师成长路线-架构师筑基必备技能-深入Tomcat底层

    文章目录 JAVA资深架构师成长路线大纲 深入Tomcat底层 Tomcat体系架构 Tomcat容器及运行机制 Tomcat类加载机制 Tomcat核心组件 Tomcat优化 Tomcat面试题集 ...

  3. Java 元婴期-架构师成长路线

    Java 元婴期-架构师成长路线 练气期 - 入门,助理 掌握的能力 能力 类别 时间 内容 计算机课程基础 1~2个月 计算机操作系统.数据结构和算法 Java的编程基础 2~4个月 面向对象编程: ...

  4. 字节跳动+京东+360+网易面试题整理,移动架构师成长路线

    去年无疑是 Flutter 技术如火如荼发展的一年. 每一个移动开发者都在为 Flutter 带来的"快速开发.富有表现力和灵活的 UI.原生性能"的特色和理念而痴狂,从超级 Ap ...

  5. Android面试总结,终于有人把安卓程序员必学知识点全整理出来了,移动架构师成长路线

    前言 这篇文章主要是分享今年面试心得,现已就职于某大厂有三个月了,近期有很多公司均已启动秋招,也祝大家面试顺利,获得理想的offer! 之前找工作的那段时间感想颇多,总结一点面试经验和人生思考分享给大 ...

  6. 资深架构师成长路线 -- 架构师筑基必备技能

    1.并发编程进阶 线程共享和写作文 CPU核心数,线程数,时间片轮转机制解读 synchronized,volatile,ThreadLocal 如何实现线程共享 wait,notify/nofity ...

  7. 死磕原理!目前最全的Android架构师成长路线,技术详细介绍

    开头 眼看着金九银十就快来了,各大厂也开始了新一轮的招聘计划,尤其是腾讯前一段时间爆出了一个大消息: 将正式启动2021届秋季招聘,加大对数字经济和产业互联网人才的挖掘培养. 在本次招聘中,特别面向2 ...

  8. java程序员推荐轻薄笔记本,移动架构师成长路线

    正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线. Tip: ...

  9. flutter面试,20道Android工程师面试必问题,移动架构师成长路线

    前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司.谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿 ...

最新文章

  1. “12306” 是如何支撑百万 QPS 的?
  2. 祝51CTO 生日快乐
  3. 用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]处
  4. Linux vsftp服务
  5. 《Java8实战》-第六章读书笔记(用流收集数据-01)
  6. ASP.NET MVC 源代码 剖析
  7. Github Pages + Jekyll 独立博客一小时快速搭建上线指南
  8. linux数据泵导入command not found_MySQL:数据库结构优化、高可用架构设计、数据库索引优化...
  9. 集合的get方法中参数从多少开始_源码分析CopyOnWriteArrayList 中的隐藏知识,你Get了吗?...
  10. 软件架构设计——软件架构风格
  11. 【付费毕设】php mysql社团报名管理系统
  12. 如何注册和删除系统服务文件
  13. Apache Flink 进阶(五):数据类型和序列化
  14. 提高COOKIE的安全性--相关解决方案
  15. 药企常用计算机化系统,基于GAMP5的我国制药企业计算机化系统验证的应用研究.pdf...
  16. 上海大华条码称代码_上海大华条码秤使用说明书
  17. matlab做挖掘机仿真,基于Proe_Adams_Matlab挖掘机的机电液一体化仿真
  18. 打地鼠java的实验报告_java实验报告18-“打地鼠”游戏程序设计.doc
  19. java实习两个月总结
  20. mysql字符串索引与数字索引_×××数字和字符串数字的索引使用情况

热门文章

  1. powershehll删除并重装打印机
  2. 基于PHP的中华诗歌网的设计与实现
  3. MBA案例分析(行销与营销之营销七)
  4. 读取windows电脑上共享目录的操作
  5. 什么是软件和软件架构
  6. 《信号与系统》示例1.单位阶跃信号的matlab实现
  7. 【Maths】等比数列
  8. 计算机的工作原理论文摘要,计算机的组成原理论文
  9. 什么是网络?什么是园区网?
  10. js封装数组反转的方法--冯浩的博客