学之广在于不倦,不倦在于固志。 ——晋·葛洪
(学问的渊博在于学习时不知道厌倦,而学习不知厌倦在于有坚定的目标)
001.作为一枚跨专业、大龄、非本科的Android菜鸟,在西安这个二线城市摸爬滚打2年,一向主攻技术两耳不闻窗外事的我,而今看到动荡的“Android帝国”,迷茫又一次袭来。。。。。。
2年期间从最开始的参与研发到核心开发,也曾暗自窃喜过自己的成长,不过是井底之蛙罢了!目前一些常规的开发基本都有接触也能独立完成(CV大法的功劳),一些常规开发需注意的细节也都有注意,基本归功于大神们的《第一行代码》(1和2版本)、《Android开发艺术探索》、《JAVA编程思想第四版》。
从踏入Android大门就得益于优快云,故在优快云浩瀚的大海中寻求各位大佬或者有同样迷茫的同仁的指点以及建议:
a. 是否继续坚持Android之路,精通之后再求“全栈”(梦想吧,哈哈)?
b. 接下来的学习路径是怎样的那?看那些书籍?遵循怎样的学习路线?
c. 是否把基础在搞扎实一些,其实一直迫于进度都是实现功能并未知其所以然!!!
d. 对于Android的一些变化是做如何取舍?是立即学习并使用到项目还是观望亦或等待同事搭好框架再去用?如Kotlin、MVP、MVVM(mvp+rxjava2+retrofit2一套框架的学习现在还是基本会用)。
e. 对于第三方的取舍是?
再次感谢各位大佬、各位同仁给予指点!
002.其实个人感觉写博客真的可以加深对知识的理解,也建议大家去写技术类型的博客,对自己的成长很有帮助。
003.突然想到了一些东西,记录下(来源于Java编程思想):
栈:位于通用RAM(随机访问储存器)中,但通过堆栈指针可以从处理器那里获得直接支持,堆栈指针若向下移动则分配新的内存,若向上移动则释放那些内存。
创建程序时,Java系统必须知道存储在栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java的数据存储于栈中,特别是对象的引用,但是Java对象并不存储于其中。
堆:一种通用的内存池(也位于RAM区),用于存放所有的Java对象。
堆不同于栈的好处是,编译器不需要知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性,当需要一个对象时,只需要new一行简单的代码即可,当执行这行代码时,会自动在堆里进行存储分配。但是这种灵活性也需要付出相应的代价:用堆进行存储分配和清理可能比用栈进行存储分配需要更多的时间。
常量存储:常量值通常直接存放在程序代码内部即ROM(只读存储器)中,这样做是安全的,因为它们永远不会被改变
ROM:这种存储区的一个例子是字符串常量池,所有字面常量字符串和具有字符串值的常量表达式都自动是内存限定的,并且会至于特殊的静态存储区中
注意:
a. 对于基本类型,创建一个并非引用的“自动”变量,这个变量直接存储“值”并置于栈中,比堆更加高效。
b. 对每个类来说,一个static修饰的字段都只有一份存储空间,而非static字段则是对每个对象有一个存储空间。但是,static作用一个方法时,却没有那么大区别,只是在不创建任何对象的前提下就可以调用它。
c. == 和 != 比较的是对象的引用地址,equals用于比较对象的实际内容是否相同(此equals必须是重写过的,默认的equals也是比较引用)。基本类型直接用“==”和“!=”比较实际内容的!