【云+社区年度征文】JAVA的两年半学习

背景

18年毕业于双非学校的计算机专业,随同班同学一起,从安徽来到了杭州搬起了砖,开始做起JAVA后端!!

2020年是不容易的一年,由于疫情影响,使得不少的小伙伴因为公司原因而不得不重新开始寻找工作。面对日益增加的计算机学生而言,这届应届生想必找工作更是难上加难。

就我而言,今年参与了几场线下的技术沙龙,聆听了大佬们对于技术的落地,规划等。在日常的写业务代码中也逐渐有了设计模式中的原型以及java中的多态概念等等。日常学习中也是不断的进行中。

工作

相信写JAVA的人数还是很多的!!!

目前从事的是业务开发(对于专门的中间件开发的小伙伴工作内容还是很好奇的?),大部分的时间都是围绕的业务开展,而非很多时间围绕在开发上。只要需求等等确定好之后,写代码还是很快的。顺便上下前两个月改造的一个task任务(之前所有的task都是并发的,但是现在有部分的task有数据依赖)。

  • 将有部分task数据依赖的接口实现ApplicationListener接口以及定义同一个ApplicationEvent事件实体。 eg:
代码语言:txt
复制
@Component
public class BRunner implements IRunner, ApplicationListener<NoticeEvent> {
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;
@Override
public void run() {
    System.out.println(&#34;this is BRunner&#34;+new SimpleDateFormat(&#34;yyyy-MM-dd HH:mm:ss&#34;).format(new Date()));
    try {
        Thread.sleep(10_000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    NoticeEvent noticeEvent = new NoticeEvent(this,&#34;C&#34;);
    applicationEventPublisher.publishEvent(noticeEvent);
}

@Override
@Async
public void onApplicationEvent(NoticeEvent noticeEvent) {
    if (&#34;B&#34;.equalsIgnoreCase(noticeEvent.getMessage())){
        this.run();
    }
}

}

代码语言:txt
复制
public class NoticeEvent extends ApplicationEvent {

private String message;

public NoticeEvent(Object source, String message) {
    super(source);
    this.message = message;
}

public NoticeEvent(Object source) {
    super(source);
}

public String getMessage() {
    return message;
}

}

  • 作为数据来源主体进行发布消息改造。
    eg:
代码语言:txt
复制
@Component
public class ARunner implements IRunner {

@Autowired
private ApplicationEventPublisher applicationEventPublisher;


@Override
public void run() {
    System.out.println(&#34;this is ARunner&#34;+new SimpleDateFormat(&#34;yyyy-MM-dd HH:mm:ss&#34;).format(new Date()));
    try {
        Thread.sleep(10_000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    NoticeEvent noticeEvent = new NoticeEvent(this,&#34;B&#34;);
    applicationEventPublisher.publishEvent(noticeEvent);
}

}

  • 因为项目启动的时候是利用schedule进行执行多个task任务的,我们需要将"消费者"部分从启动的时候剔除(这里剔除的方法有好几种了,我这里简单说下最简单的)。
代码语言:txt
复制
1. 维护一个静态集合存储需要剔除的task名称,容器初始化的时候加载进去,在执行时候判断是否在此集合中。
2. 利用instanceof去判断当前task是否属于ApplicationListener,属于就剔除执行计划。

生活

目前一个人在飘~

生活中就很多有趣的东西了,让我们自己去尝试其中。例如骑行,打球,泡温泉等等(上一张图)。

20201214143318.jpg

也没想着很急找个女票什么的,这个还是随缘吧,这么一看我好像还是很佛系的,目前想着让自己的生活变得更加充实起来。

学习

学习不能停!!!!

入了这行,就知道这行需要学习的东西很多很多很多,尤其一些新的技术推广开来的时候,我们就要投入其中去学习。

分享下我近期再看的书籍,目前除了技术的书籍之外,我还在看着一些能够增长文化学识的书籍,算是陶冶情操吧。

同时我们也是需要多往云上发展(Serverless是趋势),我们要学会使用一些云产品(云服务器,云数据库,消息队列 CKafka等等),以便于我们更好的接触云服务的界限。

WechatIMG12.jpeg

总结

相信每个小伙伴都会对着未来的自己进行合理的规划,该如何去做,如何去学习等等。其实我想表达:这些东西都不难去想,都不难去规划,最难的是贵在坚持!

让我们去始终如一的去坚持枯燥的日子是很难的,但是唯有这样,我们才会更有希望变成我们想象中的那样,我们才可以变得更好,让我们一起加油吧!!!!!