初级程序员如何进阶

news2024/11/19 8:35:51
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

疑问的无限递归

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

那么,我的烦恼是什么呢?

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

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

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

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

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

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

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

很长一段时间,我深陷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视频推荐...我每次都会耐心地劝导说:把基础先打扎实。

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

  • 对象与this
  • 反射机制
  • 注解
  • 泛型
  • 动态代理
  • JDBC
  • 适当了解数据源、线程池
  • ThreadLocal
  • Servlet/Listener/Filter

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

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

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

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

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

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

后面的内容正是为了帮大家解决这些迷茫而写,预祝大家阅读愉快~

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

进群,大家一起学习,一起进步,一起对抗互联网寒冬

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GMEL:基于地理上下文嵌入的OD流预测

1 文章信息 文章题为“Learning Geo-Contextual Embeddings for Commuting Flow Prediction”,是一篇发表于The Thirty-Seventh AAAI Conference on Artificial Intelligence (AAAI-20)的一篇论文。该论文主要针对交通中OD流预测任务,从地理上下文信息中…

聊聊近些年 CPU 在微架构、IO 速率上的演进过程

大家好,我是飞哥! 在上一篇《深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则,以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。 不少同学开始问我其它型号的 CPU…

2023年【金属非金属矿山安全检查(地下矿山)】考试报名及金属非金属矿山安全检查(地下矿山)最新解析

题库来源:安全生产模拟考试一点通公众号小程序 金属非金属矿山安全检查(地下矿山)考试报名参考答案及金属非金属矿山安全检查(地下矿山)考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山安全检查&#…

常见树种(贵州省):002杉类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、杉木 …

超详细vue3选项式父子组件传值

一、问题背景 最近遇到了一个情景: 子组件干完事情,需要对父组件的变量进行更新,因为父组件将该变量传递给子组件,但是不会双向绑定,这时候我们就需要传值或者触发回调去解决这个问题 我们将分为两个部分 1.父组件传…

小美的排列构造

美团2024届秋招笔试第一场编程真题 贪心问题,得到所有n全排列中相邻两数的和,这些和差距要尽可能小。 显然如果1和2排一起,或者让n和n-1相邻都是错误的。最好的方式是让相邻两数的和接近(n1)/2。 比如:n 1 n-1 2...…

在excel中设置图表的标题

已经在excel做好了一个图,默认是没有标题的: 现在来设置一个标题。 双击图表,进入编辑状态: 右键,选择“插入标题”: 输入标题:

golang学习笔记——接口interfaces

文章目录 Go 语言接口例子空接口空接口的定义空接口的应用空接口作为函数的参数空接口作为map的值 类型断言接口值 类型断言例子001类型断言例子002类型断言例子003巩固练习 Go 语言接口 接口(interface)定义了一个对象的行为规范,只定义规范…

对象与this

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 最近想再聊聊Java的对象…

vscode pandas无法使用

一、代码内容 import csv csv_reader csv.reader(open("data.csv")) for row in csv_reader:print(row) print(row[2]) 二、错误提示 ModuleNotFoundError: No module named pandas 三、安装pandas 然后我安装pandas,因为我的python的版本是python …

C++类与对象(1)—初步认识

目录 一、面向过程和面向对象 二、类 1、定义 2、类的两种定义方式 3、访问限定符 4、命名规范化 5、类的实例化 6、计算类对象的大小 7、存储方式 三、this指针 1、定义 2、存储位置 3、辨析 四、封装好处 一、面向过程和面向对象 C语言是面向过程的&#xf…

新版mmdetection3d将3D bbox绘制到图像

环境信息 使用 python mmdet3d/utils/collect_env.py收集环境信息 sys.platform: linux Python: 3.7.12 | packaged by conda-forge | (default, Oct 26 2021, 06:08:21) [GCC 9.4.0] CUDA available: True numpy_random_seed: 2147483648 GPU 0,1: NVIDIA GeForce RTX 3090 …

11月19日

一、选择题1.一般认为,世界上第1台电子数字计算机诞生于()年。 A. 1946 B. 1952 C. 1959 D. 1962 1946 记:4 5 6 7 8 平均十年一代 一、计算机发展五代1946年, 世界上第一台数字电子计算机ENIAC 1.1946年开始,第一代电子管计算机…

<Linux>权限管理|权限分类|权限设置|权限掩码|粘滞位

文章目录 Linux权限的概念Linux权限管理a. 文件访问者的分类b. 文件类型和访问权限c. 文件权限表示方法d. 文件权限的设置权限掩码file指令粘滞位 权限总结权限作业 Linux权限的概念 Linux下有两种用户:超级用户(root)和普通用户。 超级用户:可以在Lin…

Python操作Excel常用方法汇总

目录 引言 一、使用pandas库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 二、使用openpyxl库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 三、高级功能 总结 引言 Python是一种功能强大的编程语言,它可以用来处理…

MongoDB相关基础操作(库、集合、文档)

文章目录 一、库的相关操作1、查看数据库2、查看当前库3、创建数据库4、删除数据库 二、集合的相关操作1、查看库中所有集合2、创建集合2.1、显示创建2.2、隐式创建 3、删除集合 三、文档的相关操作1、插入文档1.1、插入单条文档1.2、插入多条文档1.3、脚本方式 2、查询文档3、…

电商平台革新:食派士小程序的无代码开发与广告推广集成

食派士小程序:无代码开发的连接神器 食派士小程序,作为上海食派士商贸发展有限公司的专利产品,是一种凭借无代码开发,就能实现与各种系统的连接和集成的电商解决方案。它采用无代码开发的方式,避免了API开发的复杂过程…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列8

文章目录 前言一、原始代码二、对每一行代码的解释:总结 前言 这是该系列原型网络的最后一段代码及其详细解释,感谢各位的阅读! 一、原始代码 if __name__ __main__:##载入数据labels_trainData, labels_testData load_data() # labels_…

常见树种(贵州省):001松类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、华山松…

麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下载

麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下 棋牌室电脑灯控系统,需要安装一个灯控器,软件发出开灯和关灯的指令,相应的灯就打开或关闭。在点击开始计时的时候,开灯&#xff…