2017年感觉那么瞬间就过去了,感觉像龙卷风一样就没了,请问哪里有充值余额的,,我要充值。。。
回头这么一年,仔细一想,好像还是做了很多事情的,技术感觉是提升最快的一年,业务能力也是,为了详细点,一一分开总结的比较好
技术方面
java基础
java基础这一年又着重复习了复习,毕竟当初自学的时候只是会用,用的熟,并没有对更深层次进行研究,这就导致了基础虚浮,不利于以后发展;今年主要复习的有:
- Conllection 系列的源码阅读 和Map系列的源码阅读;主要的有ArrayList LinkedList ,HashMap,LinkedHashMap 等
- 线程安全方面:主要是参考了《java并发编程实战》《Java并发编程的艺术》《图解java多线程设计模式》等,在自己比较薄弱的多线程上面有了很多深入的了解, 看了ThreadLocal、和一些阻塞队列、锁的源码,收获感觉也是很大,意识到了自己以前编码方面可能存在的潜在的线程安全问题。
- 设计模式:主要是阅读了《设计模式之禅》在github上传了好多设计模式的代码,对每个模式自己都进行了总结, xmind上的,感觉设计模式主要目的是为了更简洁的框架设计,对性能上面可能会存在一些问题,不过也理解,在一些大型项目上,“规范”,“可理解性”,“简洁性”,“可扩展性”都是比较重要的,不然一个人用一些奇技淫巧实现的,后来人进行维护、扩展将会异常困难。
- JVM:主要参考《深入理解java虚拟机》,补充了对jvm方面的知识,对jvm的历史,gc的原理, jvm内存的分配,工作机制方面有了比较详细的了解,包括书上写了很多jvm调优上面的东西,对目前从事Android方面的我来说暂时用不到,所以就只大概看了一遍,不过按照书上所说,我感觉任何一个sdk,包括java,android的 里面都存在很多工具,值得我们去探索,学习。
网络基础
em…感觉当时在学校学的不是特别好,当时学的时候太空洞,自己重新学习的时候理解了很多当时存在疑问,与没有理解的问题,对于这方面的技术书籍,我经过对比发现,果然大学教材才是最适合的,重新购买了我们亲爱的谢希仁老师的书,从头到尾的看了好几遍,现在加入问我一个网络请求的过程,我能从应用层扯到物理层。。。
读完之后的产出有:
- 自己对网络方面的框架总结,以XMIND方式总结记录下来了,不过没有放出来。
- 自己简单的用socket实现了比较简单的http协议(对于head没有进行过多的处理)
本来还想着看《TCP/IP 卷一》 的,不过发现上面都是各种网络协议,,对目前来说不是特别需要,所以暂缓
Android方面
android方面今年感觉是成长最大的一年
源码阅读
去年编译好的源码,今年阅读了主流的一些流程 包括
- Zygote初始化流程
- ActivityManagerService
- Activity(launcher)的启动流程
- View的绘制流程
- Binder机制(对binder方面,我感觉就是一个远程方法调用的实现,没有多复杂,不懂的童鞋可以看操作系统方面的书)
- Handler源码
- JNI 加载动态库的流程
- 一些系统控件的源码
非系统方面的源码
- okhttp (很多思想值得学习,出了个视频教程,,结果被,,, 看知乎)
- glide (看的主要流程,其他一些细节没去看,很庞大)
- retrofit (自己也简单实现了一下retrofit)
- volley (em…就一个队列。。。)
- ButterKnife (主要是注解和apt)
还有一些在用的时候看过一些源码,现在一下也想不起来。。
在性能上面今年更加注意了,总结为一句话 一切的一切都源于内存和cpu(gpu) ,对于自定义View和JNI方面,今年又系统的整理了一下,过了一遍, 目前jni还在搞,, (mmp 的ffmpeg,,,opencv。。。。webRTC)
还有好多好多,一下想也想不起来,,也不想了, 毕竟连上周吃的是啥都不一定记得起来,,
其他
像Python 。。。 主要学习了学习。。产出有
- 打包脚本
- 网络爬虫
- 一个简单的后台(flask django)
前端的话React Vue都学了学,,但是不太理解他们的Router。 产出。。。。好像就用ReactNative写了一个demo。。。(逃)
SprintBoot 对于这个框架 感觉挺爽的, 免去了很多糟心的配置 没错 我说的就是ssm ,写了一些接口,用的很爽,,非常爽。。。强烈推荐。。
还看了很多本关于重构,软工的书。
(kotlin 就不算了吧。。。)
其他的 。。。。 忘掉了。。。。
2018年的计划
先把前端的框架学一下,主要是为了快速开发客户端的,让一些简单的功能节省更多的时间 。 然后就准备深耕一些比较底层方面的事情,Android 虚拟机 ,插件化、热修复的源码阅读与简单实现。把C/C++的基础深一步的打造好,Linux系统的基础打牢(毕竟Android 基于linux内核,,想搞一些骚操作。。还是离不开) 阅读一些知名的开源框架 Redis Nginx Libev Memcached 等。搞这些的话需要再次把基础打牢,像操作系统,编译原理,算法等。想想还是有很多挑战的,加油(๑•̀ㅂ•́)و✧