架构师是为满足某种架构设计目标而整体上构思把控的角色,在软件行业,又会细分很多,如:
系统架构师、企业架构师、应用架构师、业务架构师等
本书针对App应用架构师
一般需要一下特征:
资深工程师,需要在技术的深度和广度两个维度上都有所积累和沉淀
如果你只会一门编程语言,无论多么精通,仍然显得不够优秀
要努力学习一门新语言了,拓展知识的宽度
Swift用过,但不够精通,还需要学习
Java也要继续学习
语言语法基础:抓核心、看本质、看思想
进程(Process)和线程(Thread)都是操作系统的基本概念
如果把计算机比作是一个工厂的话
进程就好比工厂的车间,代表了CPU所能处理的单个任务;
线程就好比车间里面的工人
一个车间包含多个工人,车间内每个工人都可以使用车间里的生产资料
一个进程包含多个线程,进程内每个线程都可以使用这些共享内容
由于共享,容易出现同时抢夺资源的问题,可以使用同步加锁的办法避免
加锁,防止多个线程同时读写某一块内存区域
通过“信号量”来保证多个线程最多执行几个
线程是操作系统进行运算调度的最小单位,
有时候,为了更好地利用CPU资源,我们需要使用多线程
多线程是一种利用CPU同时处理多个任务从而提高软件工作效率和资源利用率的方法,当然,过多的线程会消耗大量的CPU资源,且每开一条线程本身都是有开销的。
多线程又涉及到线程管理
编译调试有两种:
第一种,就是我们使用Xcode编译调试
第二种,使用非Xcode的命令行方式,比如Jenkins+Git仓库
iOS通过命令构建,自动化编译打包,需要使用xcodebuild和xcrun等工具
可参考xcode_shell
要学习了解下脚本打包
讲的太泛,只能泛泛而读
iOS中应用程序状态包括:
Not running(未运行)、Inactive(激活)、Active(激活)、Backgroud(后台)、Suspended(挂起)
对待开源库有以下建议:
组件化是将一个App分为若干模块,每个模块都是一个子组件。开发过程中,有些组件间可以相互依赖,每个组件可以单独调试。
熟悉UML图
常用设计模式:
分层架构
组件被划分为不同层,每个层代表一个模块或功能,一般可划分为4层结构或5层或多层
4层结构一般是:(从上往下)表现层、业务层、持久层、数据库层
事件驱动架构
微内核架构
微服务架构
基于空间的架构
MVC、MVVM架构,其实只是表现层的架构,而不是整体的系统架构
在iOS中,Crash最重要的信息,都保存在.dSYM文件中
需要上架时的app文件,与.dSYM,才能解出崩溃信息
没有.ipa文件,也就不知道错误在哪一行了
测试:UI测试、功能测试、单元测试、性能测试、接口测试、中断测试、兼容测试、安全测试
云测:开发者上次App后,在云测服务端完成部署和自动化测试,可以选择网络、机型等相关参数,完成在线测试并获取测试报告,主要针对App的兼容性测试、性能测试和功能测试等,大部分是基于自动化脚本的测试。
屏幕分辨率适配
点(Point),简写pt。是IOS的单位,虚拟单位,开发过程中基于坐标系的绘制都是以点作为单位。
像素(Pixel),也称物理像素,简写px,是设备屏幕实际像素
渲染像素(Rendered Pixel),像素分辨率,即@1x、@2x、@3x
屏幕尺寸,手机屏幕的物理长度,单位是英寸。
性能优化,具体包括:
性能分析、硬件性能优化、UI性能优化、CPU性能优化、内存性能优化、网络性能优化、App瘦身、启动速度优化、代码优化等
手机中的主要耗电场景:
手机屏幕、CPU一直做复杂运行、网络一直在做大数据传输、GPS定位、Camera
iOS中,App是以镜像(image)为单位进行加载的,镜像类型包括executable(可执行文件)、然后加载dylib,dylib从executable的依赖开始执行,地柜加载所有的动态链接库。
可参考《iOS应用逆向工程》
可将iOS逆向工具分为四大类:监测工具、反汇编工具、调试工具和开发工具
Hook和注入,是一种动态篡改程序的方法,属于动态分析范畴。
Hook是一种将自身代码注入到目标程序进程中,其本质是挟持函数的调用。
UI主要是视觉设计与交互设计
UX主要是体验规划设计
推荐书籍:
《程序员的职业素养》
《架构之美》
《软技能:代码之外的生存指南》
这本书粗略了读了一下,花了大概一天半时间
书,说实话跟架构师没啥大的关系,可以作为刚入门的小白看看