前言
生活依旧如此美好。不断的学习不断的总结,那么我的总结来了。
从入行Android开发以来,刚开始的Google,百度,Ctrl+C,Ctrl+V的懵懵懂懂,未曾进一步学习为什么要这样写,只知道能解决问题。后来才意识到,解决疑惑,需要阅读和理解源码,才能知其然,知其所以然,做到举一反三。半道出家的人啊,需要补充Java基础,计算机基础知识,于是请教同龄先行者,敦子,猛锅子一行人,买了一些书籍,先后有Java编程思想,Java语言描述数据结构,Java并发编程,后来买了Android开发艺术探索,FFmpeg从入门到精通,OpenGL ES2.0,音视频开发进阶指南等等
买了书之后,问题就暴露出来了。开始呢,兴致勃勃的看呀看,发现稍微深入一点,这看不懂,那也看不懂,于是想要打好基础的决心,松动了。为什么把文章的标题定义为“Java之无处不在Node”呢?明明开始和文章的开头,所描述的不符。当然了,这肯定是在水(这不仅仅是一篇自我总结,或者知识点分享的文章)。现在,我看到了更加广阔的天地,感觉到了一个阶段性的终点,即将开始新的征程,可能就如同大家遇到的,称之为瓶颈吧。
当下,Android很多应用都使用了Kotlin,或者Flutter,Vue等。我始终坚信,学到极致的时候,语言都是相通的,不管是什么语言,都有抽象思想存在,不管是C/C++,还是Java,Kotlin。一个人的精力始终是有限的,开发前几年,尽可能的去扩展知识面,后面就是专注某一个方向,深入的去学习和总结,同样,我也以这段话来激励自己。我也浪费了几年黄金时期,浑浑噩噩的度过了几年,在时间充裕的时候,把学习给落下了,现在已是27-8的年纪,已婚已育,更加应该明确方向,脚踏实地。幸好当初的毅力和兴致依旧还在那里,拾起来便是,就像某个名人大概这么说的:种一棵树最好的时机是十年前,其次是现在。我敦子也说过。
我的学习计划是,还是从0开始。
1.打好Java编程基础知识:比如:泛型,反射,,动态代理,线程,线程并发编程(同步与通信,synchronized,volatile等),重排序之volatile,final,显示锁ReentrantLock(AQS),CAS等等,基础尤为重要
2.常用框架的学习:比如Okhttp,Retrofit,RxJava,Jetpack等,也曾去看过源码,但是我看不懂,在学完Java基础后,发现学习框架,必须要熟悉泛型,动态代理,反射,不然很容易卡壳,这个地方是什么意思,怎么这样就可以了,瞬间一万个为什么,不能及时得到解决,直接OOM了。
3.Java高级基础:JVM运行时内存模型,JVM对synchronized做出的优化,类加载的顺序,初始化,类的生命周期等
4.Java常用设计模式,比如单例(懒汉,饿汉,类加载延迟),工厂,建造者,观察者模式,模板方法模式,装饰模式(Java IO,Android的Context),还需持续学习
5.Android应用层,View的滑动(动画),View测量模式(RecyclerView嵌套那种),事件分发(事件冲突),内存泄漏分析,性能优化等
6.Android主流框架学习,OKHttp,Retrofit,RxJava,Jetpack等
.......
我的第一个Node,单链表
package com.redrose.decorator;
public class MyNodeList<T> {
private Node<T> top = new Node<>();
static class Node<T> {
private T t;
private final Node<T> next;
public Node() {
next = null;
}
public Node(T t, Node<T> node) {
this.t = t;
this.next = node;
}
}
public boolean isEnd() {
return top.next == null;
}
public T pop() {
Node<T> current = top;
top = current.next;
return current.t;
}
public void add(T t) {
// Node<T> node = new Node<>(t, top);
// top = node;
top = new Node<>(t, top);
}
public static void main(String[] args) {
MyNodeList<String> list = new MyNodeList<>();
list.add("Only");
list.add("send");
list.add("you");
list.add("RedRose");
while (!list.isEnd()) {
String str = list.pop();
System.out.println(str);
}
}
}
打印结果:
RedRose
you
send
Only
Process finished with exit code 0