Java之无处不在的Node

  前言     

        生活依旧如此美好。不断的学习不断的总结,那么我的总结来了。

        从入行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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值