《App架构师实践指南》---笔记

大纲

《App架构师实践指南》---笔记_第1张图片

第1章 App架构师成长路线

架构师是为满足某种架构设计目标而整体上构思把控的角色,在软件行业,又会细分很多,如:
系统架构师、企业架构师、应用架构师、业务架构师等
本书针对App应用架构师

一般需要一下特征:

  • 具备客户要求的功能
  • 能够在工期内完成
  • 性能好
  • 可靠
  • 安全
  • 成本可接收
  • 符合法规标准
  • 将超越前任极其竞争者
    也就是:功能、安全、性能、稳定

资深工程师,需要在技术的深度广度两个维度上都有所积累和沉淀

第2章 App基础语法系列

如果你只会一门编程语言,无论多么精通,仍然显得不够优秀

要努力学习一门新语言了,拓展知识的宽度
Swift用过,但不够精通,还需要学习
Java也要继续学习

语言语法基础:抓核心、看本质、看思想

进程与线程

进程(Process)和线程(Thread)都是操作系统的基本概念
如果把计算机比作是一个工厂的话
进程就好比工厂的车间,代表了CPU所能处理的单个任务;
线程就好比车间里面的工人

一个车间包含多个工人,车间内每个工人都可以使用车间里的生产资料
一个进程包含多个线程,进程内每个线程都可以使用这些共享内容

由于共享,容易出现同时抢夺资源的问题,可以使用同步加锁的办法避免

加锁,防止多个线程同时读写某一块内存区域
通过“信号量”来保证多个线程最多执行几个

线程是操作系统进行运算调度的最小单位,
有时候,为了更好地利用CPU资源,我们需要使用多线程

多线程是一种利用CPU同时处理多个任务从而提高软件工作效率和资源利用率的方法,当然,过多的线程会消耗大量的CPU资源,且每开一条线程本身都是有开销的。
多线程又涉及到线程管理

第3章 App开发工具系列

编译调试有两种:
第一种,就是我们使用Xcode编译调试
第二种,使用非Xcode的命令行方式,比如Jenkins+Git仓库

iOS通过命令构建,自动化编译打包,需要使用xcodebuild和xcrun等工具
可参考xcode_shell

要学习了解下脚本打包

讲的太泛,只能泛泛而读

第4章 App SDK使用系列

iOS中应用程序状态包括:
Not running(未运行)、Inactive(激活)、Active(激活)、Backgroud(后台)、Suspended(挂起)

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

对待开源库有以下建议:

  • 使用前,如果是产品类项目,一定要深入研究基本原理、API使用等
  • 使用中,一定要自行封装一层。可以实现入口统一,适应业务变换或者开源项目本身的替换,灵活快速替换

第6章 App常用模块设计

第7章 App架构和重构


组件化是将一个App分为若干模块,每个模块都是一个子组件。开发过程中,有些组件间可以相互依赖,每个组件可以单独调试。

  • 熟悉UML图

  • 常用设计模式:

常用软件架构

  1. 分层架构
    组件被划分为不同层,每个层代表一个模块或功能,一般可划分为4层结构或5层或多层
    4层结构一般是:(从上往下)表现层、业务层、持久层、数据库层

  2. 事件驱动架构

  3. 微内核架构

  4. 微服务架构

  5. 基于空间的架构

MVC、MVVM架构,其实只是表现层的架构,而不是整体的系统架构

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

在iOS中,Crash最重要的信息,都保存在.dSYM文件中
需要上架时的app文件,与.dSYM,才能解出崩溃信息

没有.ipa文件,也就不知道错误在哪一行了

测试:UI测试、功能测试、单元测试、性能测试、接口测试、中断测试、兼容测试、安全测试

云测:开发者上次App后,在云测服务端完成部署和自动化测试,可以选择网络、机型等相关参数,完成在线测试并获取测试报告,主要针对App的兼容性测试、性能测试和功能测试等,大部分是基于自动化脚本的测试。

屏幕分辨率适配
点(Point),简写pt。是IOS的单位,虚拟单位,开发过程中基于坐标系的绘制都是以点作为单位。
像素(Pixel),也称物理像素,简写px,是设备屏幕实际像素
渲染像素(Rendered Pixel),像素分辨率,即@1x、@2x、@3x
屏幕尺寸,手机屏幕的物理长度,单位是英寸。

第9章 App性能优化系列

性能优化,具体包括:
性能分析、硬件性能优化、UI性能优化、CPU性能优化、内存性能优化、网络性能优化、App瘦身、启动速度优化、代码优化等

手机中的主要耗电场景:
手机屏幕、CPU一直做复杂运行、网络一直在做大数据传输、GPS定位、Camera

iOS中,App是以镜像(image)为单位进行加载的,镜像类型包括executable(可执行文件)、然后加载dylib,dylib从executable的依赖开始执行,地柜加载所有的动态链接库。

第10章 App安全逆向系列

可参考《iOS应用逆向工程》
可将iOS逆向工具分为四大类:监测工具、反汇编工具、调试工具和开发工具

Hook和注入,是一种动态篡改程序的方法,属于动态分析范畴。
Hook是一种将自身代码注入到目标程序进程中,其本质是挟持函数的调用。

其他

UI主要是视觉设计与交互设计
UX主要是体验规划设计

推荐书籍:
《程序员的职业素养》
《架构之美》
《软技能:代码之外的生存指南》

这本书粗略了读了一下,花了大概一天半时间
书,说实话跟架构师没啥大的关系,可以作为刚入门的小白看看

你可能感兴趣的:(iOS,ios,objective-c,学习)