2015总结与思考

昨天晚上出去和几个朋友交流了一下。聊了很是多,思考了一下这一年学习技术的经历,趁着在宿舍养病,将本身的想法记录了下来。java

总结过去与思考

从開始决定当码农到现在将近两年零三个月,起初是因为本身专业的科研不是本身想象中的那样,加之对程序猿的羡慕和崇拜,因而就走上了码农的不归路。做为非科班出身的学生,和计算机院的学生比起来有先天的劣势,好比好多的基础课程未学习、周围的编程氛围太差等等,然而其实:正是因为不是科班学生。咱们比别人更努力,更愿意付出时间去学习。android

去年四月底開始学android,当时是由于实验室项目(不是作应用层),今年6月份開始学了一个多月iOS,移植了写在android上的功能。c++

今年作了三个商业性质的软件,1月份作了我第一个商业项目,4月份作了一个供路由器使用的app。八月份作了比較大的一个项目模块相似于茄子快传/QQ面对面传文件。800多万的用户。面试

站在今天的角度来审视这一年走过的路,用一句话来总结就是:认为何都没干呢,一年就过去了!算法

随着时间的发展,我对一些东西也有深的认识。就拿android开发来讲。编程

android开发学起来很是简单。上手很是easy,高中生也可能会作,但是作android难道不过拖几个控件,摆几个layout或者使用几个美丽的开源框架能作个还说得过去的手机app么?显然不是的。设计模式

使用工具,使用轮子来拼凑产品不过最主要的要求,深刻原理才是更重要的,不仅要知其然,更要知其因此然!api

好比android中的各类manager,进程间通讯Binder,view视图的绘制,触摸事件的分发,消息机制,view动画等等。假设不去研究。不去看原理,作一段时间就会遇到瓶颈期,因为会发现android开发就是接口api的调用,你可能会傻傻的以为手机屏幕上显示的一个界面就是activity,甚至都不知道传说中的Java程序的启动类main函数在哪。还有因为android自带的控件比較丑。作项目的时候会使用一些第三方的控件、效果,不能只会直接拿来用这些。在达到必定的水平以后,要试着本身来实现一些好的效果,不只提升本身的水平,可能还会造福他人。在一个就是使用第三方的开源框架工具,比方经常使用的ImageLoader,Volley,他们到底是怎么实现的呢?这些都是用来学习的最好的资料啊!固然我眼下还没研究这两个,不过接下来确定要看看。缓存

因此我体会最深入的就是。作一门技术,会用仅仅是最主要的要求。会使用很是easy,难的是要能深刻究竟层的原理。必定要研究的深刻。知其然,知其因此然,固然并不是让所有人去反复制造轮子。而是在制造轮子的过程当中,对本身技术的提高绝对是很是很是快的。事实上团队开发中也有更重要的好比编码规范、风格,模块的解耦合等等。这个另当别论。之后工做了就很是少有时间去研究了,跟着产品迭代的节奏会很是少有时间去学习。因此必定要珍惜现在的时间。安全

java是作android的基础,其实刚開始学android的时候。个人java基础并不是很好,好多都是依据c++的类比大体了解了一下。也是在今年。好好的把java的相关知识研究了一下,对语言的学习也不能只停留在知道怎么用的层次。照着教学视频能实现各xx系统没什么用,基础才最重要。有时间最好去研究其深层的缘由,这绝对是故意而无害的。比方java的集合详细是怎么实现的?固然这和学过的数据结构是同样的。不过jdk的开发人员封装的更好,代码更加严谨,研究这些源码不不过对数据结构的复习仍是对大牛的编程思想风格的学习。还有假设不看代码,怎么知道hashtable和vector为何是线程安全的,假设不懂原理。怎么知道hashmap是乱序的treemap是有序的?还有java中高级一点的主题NIO(这是我作相似于茄子快传/QQ面对面快传功能的基本技术)、并发编程。不要以为作android又不是作后台server,学这些用处不大,这就大错特错了。

其实这些知识都是颇有区分度的,也是很实用的。再深刻java要学的固然就是java虚拟机,这也是近期正在研究的内容,里面关于内存空间划分、垃圾回收、类载入的过程等等都是很很实用的东西。好比。能看懂字节码,对理解类、对象的初始化过程就有很大帮助。

展望将来

由于下一年就要找工做,因此接下来学习的东西会更偏向于基础知识。

android部分要在研究一些开源框架,图片缓存载入库ImageLoader。Volley通讯库和一些框架层的源代码。

java会依照java面试宝典上的内容再回回想一下java的小知识,继续看深刻理解java虚拟机。

tcp/ip:事实上做为学通讯的,这部分掌握较好,只是还要认真看看。

算法:以前已经将数据结构还有常见的排序算法写了一遍并且整理在了博客。因为我不想在基础知识还不熟悉的状况下就去刷题。接下来就要狂刷题,看剑指offer,编程之美。

尽管我很是反相应试教育。

操做系统:看一本操做系统的书/视频。

设计模式:事实上以前已经研究过一部分设计模式,android中最常用的观察者模式、工厂模式,java I/O的装饰者。集合中的迭代器等等。后面还要再学习几种。

另外,再深刻挖掘曾经所作项目中的相关问题。


干不论什么一件事情,都不可避免的会走一些“弯路”,可是这是弯路差点儿是非走不可的,因为不论什么事情。你不经历永远体会不到。更况且。所谓的弯路并不必定是弯路,不论什么走过的路,犯过的错,都会成为往后成功的垫脚石。记得前段时间看知乎上有个问题:你有什么道理懊悔没有早点知道?从这个角度来看,个人回答是:看书,看经典书。

经典书籍绝对是最好的知识宝库,曾经没意识到看书的重要性。

其实当真正研究了一本书,就可以对相关方面有一个全面的掌握,更基本的是还能对一些问题有更深入的看法。经常说的一句话:光阴似箭岁月如梭时光荏苒如白驹过隙通常。现在最大的感触就是时间过的真的好快,然而过去已经没法掌控。那么仅仅有把握好当下。时间过得很是快,必定要勤奋。


如下罗列一些我看过的java相关的很是不错的书。有些书不必定全然看了。

Thinking in Java

Java并发编程实战

Java Nio

深刻理解java虚拟机

深刻理解android内核设计思想

算法导论(前面部分)

TCP/IP 电子科大杨宁老师的视频

设计模式之禅

effective java

另外一些我没看过的,但是评价很不错的书

Java核心技术卷1/2

Java并发编程的艺术(已购买)

Android开发艺术探索(看了文件夹就感受至关棒,绝对是好书)

鸟哥的私房菜(学android仍是要掌握一些Linux的)

hotspot实战(翻过pdf,还不错)


* *以上仅仅是我我的的一些观点,假设有什么不妥之处还请谅解**

相关文章
相关标签/搜索