gitbook/Spring编程常见错误50例/docs/385746.md
2022-09-03 22:05:03 +08:00

56 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 结束语|问题总比解决办法多
你好,我是傅健,这是专栏的最后一讲。行百里路,我们终于来到了这里,很感谢你的支持和坚持,让你没有在枯燥的源码学习中半路放弃。
本专栏虽然只有20多讲但是覆盖的知识面还是比较广泛的不仅有Spring最基础的应用也涉及Spring Data等层次高一点的应用。通过学习你会发现遇到的问题肯定远远超过我列举的50多个。而通过解决一个又一个的问题你还会发现**Spring原理的重要性**。
谈及学习Spring的感受可以说当你初学Spring时你会觉得它是一个好用的“黑盒”而当你稍微深入应用Spring时你又会觉得它像一团“迷雾”看起来很美但却很容易让人迷失不知所措。那么通过系统的学习之后虽然我们还是无法解决所有的问题但是已经算有了件衬手的兵器通关进阶咫尺之遥。通过剖析各种问题所涉及的源码你能**从量到质**有一个转化式的提升!
但话说回来,有个问题我不知道你有没有思考过,我们为什么会遇到那么多的问题?是基本功不扎实吗?还是实践经验不够?
举个例子,在日常开发中,我们经常会发现,新手能很快地完成一个任务,而且完成的功能貌似也能运行良好。但是随着时间的推移,很多问题会慢慢暴露出来。
我记得之前我的某位新手同事会随手在产品代码中使用"System.out.println"去输出日志。当我发现这个问题时这个程序已经上线一个月了并且很稳定。我也仔细查看过系统这样输出的Console日志最终也会被设置的归档系统按天归档到其他挂载的NFS磁盘上貌似也不需要太担心它会一直变大。但是有一天本地磁盘还是报警容量不足了苦逼的是我使用了很多的Linux命令都无法确定哪个文件很大明明看到的所有文件都是很小的磁盘怎么会满呢
最后还是比较幸运的我用lsof命令去查询了“删除”的文件果然占用空间很大根源就在于同事当初的"System.out.println"导致了一个文件不断变大,而因为存在归档(删除),所以我们很难立马找到它。
仔细复盘这个问题,你会发现,新手有个特点,对于每行代码背后的原理是什么,怎么写最合适,并没有太深入的研究。遇到问题时,也习惯于通过各种搜索引擎去解决,在尝试一个方案失败后,往往会继续迭加使用其他的方案,最终勉强可以工作了,但等再次出现问题时你会发现,他的代码是真心复杂啊,很难避免更多问题的产生。
**见微知著,基本功非一日之功,实践也非一蹴而就。**我的建议就是:当你去书写代码时,多问自己几句,我使用的代码书写方式是正确的么?我的解决方案是正规的套路么?我解决问题的方式会不会有其他的负面影响?等等。
从另外一个角度看如果你去翻阅StackOverflow上的各式各样的问题你会发现很多问题都描述的“天花乱坠”很复杂但是问题的根源往往是极其简单的。你还可以尝试去除问题复杂的无关的部分把它简化成一个“迷你”版本这样更容易定位“根源”这才是最重要的。
你看,这不就是我们这门课程的设计思路吗?用一些简化的案例,让你了解问题的核心,从而避免踩坑。这是一种很好的学习方式!
所以,我们也不妨总结下,面对无穷无尽的问题,我们到底该如何应对?
我认为,**问题总比解决办法多**。换句话说,问题是可归类的,所以导致问题出现的根源是有限的,那么对应的解决办法自然也是可总结的。
当你遇到一个问题时你可以先思考这样3点
1. 这个问题是不是别人也还没有解决过?
2. 是不是问题本身就很难?
3. 是不是自己当前的知识储备不够?
千万不要一上来就给自己贴一个“能力不够”的标签因为等你工作个10来年以后或许曾经那些让你泪奔的问题你仍然解决不了。因为一些问题就是很难呀我们无法在指定的时间内解决也是很正常的一件事说白了你要**先对自己有信心**。
其次,我们可以尝试一些方式方法,毕竟老板掏钱养员工可不是让我们来培养自信的,对吧!
1. **将问题化繁为简**
很多问题很难搞定,在于有很多无关的东西掩盖了真相。但是你要相信,不管表象多复杂,出错的根源可能都不会太复杂。就像前苏联的一次火箭发射失败,也只是因为一个小数点错误而已。所以,当你碰到一个棘手的问题时,你一定要不断地把这个问题做“简化”,直到简化成一个最简单的问题模型,你就能很容易地定位到问题根源了。
2. **耐心积累知识**
当你已经定位到问题的大概范围但仍然解决不了时往往是因为欠缺相关的知识和技能。就像让你去写一个Eclipse/IDEA插件但是你都没有使用过它们你觉得可能么这个时候你一定要学会查缺补漏把自己的知识网络构建起来。当然这样做可能无法立竿见影但长期来看对你的个人发展是大有裨益的。
3. **寻求帮助**
如果靠自己实在解决不了,寻求他人帮助也是可以的。但我建议你先努力尝试一下再去求助,学习就像打游戏,每解决一个问题都像升级一次,他人帮助就像开了外挂,治标不治本。另外就是求助也是有技巧的,切忌扬汤止沸,去寻求一个定位和解决问题的思路是更好的方式。
最后的最后,非常感谢各位同学的信任,这门课程我为你提供了很多的问题场景以及解决问题的思路,希望能帮助你在技术之路上越走越远!在学习的过程中,如果你有什么意见或者建议,也欢迎通过下方的**结课问卷**告知我,我会正视大家的声音。
我是傅健,我们江湖再见!
[![](https://static001.geekbang.org/resource/image/8b/88/8bf0275a5a6220bf2a44ef2a479b1e88.jpg?wh=1142x801)](https://jinshuju.net/f/KKizl7)