java 父子级json组装不用递归_初级Java程序员如何进阶

主要内容:

  • 疑问的无限递归
  • 递归的结束条件

疑问的无限递归

去年我刚入行时,用SSM写了大概5个月的增删改查,并且在实际工作中从未自己搭建过SSM环境。倒不是不会,毕竟网上已经有很多博客直接贴出了配置,拷贝黏贴就行了。

那么,我的烦恼是什么?

我想,每一个热爱进步的程序员都会有过这样的体会:

自己好像什么都懂了,但又似乎什么都不懂。

就像发痒时怎么都挠不到确切部位,让人抓狂且无奈。你自己也知道,即使把这行配置背下来了,又能怎样呢?为什么它就起作用了?

你发出的这些疑问就像掉进了一个无限递归,迟迟没有一个答案。

08d6d1a4ec981fbf614b7ec5e659da82.png
当前不懂的知识点,是由另一个你不了解的知识点实现的...无限递归,最终你觉得自己什么都不懂

这个递归的结束条件是什么呢?并不是说非要往下深挖,直到汇编语言或者晶体管,而是挖到某一处时你能和当前已学知识联系起来即可。

就好比我现在要推导一个新的数学公式,当我得证的条件最终只差证明另一个公式,而这个公式已经是公认定理时,这个新的公式就算推导成功了。

很长一段时间,我深陷SSM的配置地狱:

  • 为什么要配这个?
  • 为什么要配那个?
  • 为什么我没写xx却能xxx?
  • 这个注解什么意思,怎么起作用的?

有些人可能觉得:管这么多干嘛,用就好了啊。

这种人,一般做不到举一反三,只能有一学一。即使能熟练使用,等他遇到SpringBoot时,又会把它当做新的框架来学。而在我看来:

SpringBoot = Spring注解 + 自动配置

SpringBoot就是一个花架子,如果你已经熟练掌握Spring,SpringBoot上手是非常容易的。


递归的结束条件

重新回到问题上来。

关于SSM配置以及原理,以上种种疑问递归的结束条件是什么?

其实归根到底,我们之所以学不明白SSM,觉得隔靴搔痒,个人认为是因为“配置式开发”和我们之前“编码式开发”差别太大了。不论是xml还是注解,和我们平时写的业务代码相去甚远。作为一个开发人员,当你看到一个切实的功能被实现了,而自己却完全看不到for循环和if判断的身影,心里是不踏实的。对于一个“手艺人”,唯一能让我们感到踏实的,是if else for这样的编码,而不是@Aspect、@Controller这样的配置!

我很幸运,去年来到杭州后,接手了一个金融借贷项目。那个项目虽然仅仅用SSM,但是代码质量还是很高的,各种封装和抽象,与之相比我之前写的项目代码都显得十分“扁平”。

环境真的很重要,如果我还待在原先的公司做SSM增删改查,还真的觉得自己挺厉害...典型的井底之蛙。

正是杭州这段经历,驱使着我硬着头皮回炉再造,重新去看JavaSE和JavaWeb。我最大的感触就是,其实当前很多觉得难的知识,都已经在基础讲过了。如果真的掌握了,SSM是非常容易理解的。

比如:

  • 注解(有多少人完全不知道它怎么工作的?)
  • 反射(很多人会用,但是理解不是很深刻)
  • 动态代理(大部分人干脆是懵逼的)
  • JDBC(估计已经忘光了)
  • Servlet/Listener/Filter更不用说,稀里糊涂

就这样,还有很多人和我说,自己基础已经很好了,问我有没有好的SpringBoot视频推荐...我每次都会耐心地劝导说:把基础先打扎实。

520c191a5061f94d0fa250d22d229af7.png

以我自己的体会,要想后面对Spring/SpringBoot有较深的理解和掌握,必须把专栏下面几篇吃透:

  • 对象与this
  • 浅谈反射机制
  • 注解(上)
  • 注解(下)
  • 浅谈JDK动态代理(上)
  • Java 动态代理作用是什么?
  • 浅谈JDK动态代理(下)
  • 泛型概述(上):泛化与特定
  • JDBC(上)
  • JDBC(中)
  • 自定义DataSource
  • JDBC(下)
  • 浅谈ThreadLocal
  • Listener(倾听者)
  • ContextLoaderListener解析
  • Spring AOP的实现原理 ?
  • Filter实现全站编码
  • servlet的本质是什么,它是如何工作的?
  • Servlet(下)

这两个月,是专栏更新的巅峰期,基本上每个月写5、6篇,我不知道有没有全部看完的朋友。如果一篇不差全部看完、消化,并且自己动手试过,那么恭喜你,这两个月的进步等于我过去一年了...

其他专栏,我不知道是出于什么目的,可能是公众号引流,而我写博客目的很纯粹,就是觉得自己当时被欺负了,现在懂了于是拿出来,让后面的人别再被欺负了。

有时就是如此,前人挣扎彷徨所付出的努力得到的成果,后人只需垫垫脚就能收入囊中。

最后,要说一下我自己对初级程序员的定义:

  • 理解面向对象
  • 了解抽象类和接口的使用场景
  • 熟练掌握反射、注解、动态代理
  • 会设计泛型类
  • 熟练掌握IO、集合、常用API(String等)
  • 熟练Servlet、Listener、Filter、Cookie、Session、AJAX、JSON
  • 理解部分常用设计模式
  • 熟练使用SSM,大致了解Spring运行原理,能基于Spring提供的扩展接口DIY一些功能

这些都无法掌握,整天满口高并发、轮询、微服务...如果让我来面试,我不会问这些高大上的问题,只会和你聊基础,看你有没有自己的见解。

架构师遍地跑的浮躁时代,还是希望大家静下心来,好好重视基础吧。

f292fc57c8baafbd57b6d7a90178219c.png

学完本篇初级路线,如果感兴趣也可以了解下中级路线:

bravo1988:中级Java程序员如何进阶​zhuanlan.zhihu.com

Good luck!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值