阅读 409

技术知识体系构建

前几天,梳理了自己的知识体系,大部分围绕Android展开横向与纵向的学习(当然Android只是解决业务需求的其中一个平台,不能拘泥于Android),横向比如gradle、kotlin、flutter作为支撑工具,纵向向底层靠拢,NDK(C/C++)、音视频以计算机图形学为基础展开对webRtc、openGL、ffmepg的学习、围绕JVM展开对ASM字节码修改辅助性能优化等等,下面汇总学习书单:

C/C++

推荐原因:

  • Java GC机制的好处是不用关注垃圾的回收,坏处是对程序员来讲屏蔽了内存使用细节
  • 一些高性能的组件还是得通过C完成,比如mmap
  • 《C和指针》
  • 《C++ primer》

Java

重点掌握并发、反射、JVM等

  • 《Java编程思想》
  • 《Java核心技术》
  • 《深入理解 Java 虚拟机》
  • 《Effective Java》
  • 《Java并发编程的艺术》
  • 《Java并发编程实战》

操作系统-以Linux为例

Android基于Linux内核,所以掌握必不可少:

  • handler机制需要靠epoll机制深入理解
  • binder通信机制为什么不采用linux中的管道、信号量、消息等通信机制
  • 《Linux内核设计与实现》
  • 《Linux系统编程》
  • 《UNIX环境高级编程》

计算机

三个问题:

  • 从敲出一个“hello word”,计算机是如何显示到屏幕上的
  • 操作系统如何对内存进行管理的?
  • so文件如何产生,以及如何编译到apk中的

下面两本书中有答案:

  • 《深入理解计算机系统》 注:神书,程序员必读
  • 《程序员的自我修养-装载、链接与库》

网络

一切皆协议,掌握分层概念,以TCP/IP为重点,关注网络发起的整个请求过程,解决弱网优化问题

  • 《计算机网络:自顶向下方法》
  • 《TCP/IP详解 卷1:协议》

数据结构与算法

掌握常见数据结构比如链表、数组、堆、栈、树、图,以及常见算法分治、动态规划、回溯等等

  • 《数据结构与算法之美》
  • 《剑指offer》
  • 《大话数据结构》

Android

从framework入手串起对整个Android架构的理解,比如AMS、WMS、PMS、Binder等等

  • 《深入理解Android内核设计思想》
  • 《Android开发艺术探索》

附思维导图