相关文章

如何慢慢地快速成长起来?

成长的故事之Spring Core系列

你是如何看待Spring容器的,是这样子吗?
Spring的启动过程,你有认真思考过吗?(待写)
面向切面编程,你指的是Spring AOP吗?(待写)
Spring的声明式事务,这次你彻底明白了吧?(待写)

§如何提问,如何回答?

记得大学时,思想道德修养课的老师说过,现在的大学生都不太会表达自己的观点。她举了这么个例子,如果你在食堂,随机采访几个学生,就问:“你觉得食堂的饭菜怎么样啊?”

你得到最多的答案大概是像这样的,“不错,挺好吃的”;“不行,太难吃了”;“凑合,感觉还可以吧”。

原因有两方面,一是学生不知道该如何对一个事物发表自己的观点,也就是自我表达能力有点差。二是提问的问题本身存在问题,太宽泛了,学生不知道该怎么接。诸如此类的“你是如何看待XXX的?”这样的问题,感觉是最难回答的。

但我要说的是,如果你能把这类问题回答的很好,那你真的已经相当厉害了。

§从面试别人说起

说起来我也面试过几十个人了,不过说实话,我并没有一个很好的套路或方法去面试别人。我一般不会特别在意应聘者截至到现在拥有多少知识,或会多少技术。注意我说的是一般情况下不会。

原因有二,一来我们不是造航母,招的就是拧螺丝的。二来我更在意一个人对他已有知识,或已经会用的技术的看法。

因为一个问题的结果无非就是一些答案。但是一个看法的结果却是一些观点。一个人能够当众发表一些很有看法的观点,说明的他的业务/技术素质和心理素质都很不错。

所以对于应聘者,我都会问,你如何看待Spring?大都回答Spring是一个IoC容器,然后就没有了。其实我真正想知道的是你眼中的Spring是什么样子的。

然后我继续问,什么是IoC?大都答道控制反转或依赖注入。我再问,你如何理解控制反转呢?几乎没有人能很好的回答。

既然是一个IoC容器,那你怎么理解“容器”二字?几乎也没有人能回答的很好。

§C语言中的全局变量

计算机专业一般都会学C语言,倒不是为了做项目,只是作为入门语言。C语言是面向过程的,没有类、字段等这些概念,只有函数和变量。

刚开始接触程序和语言时,大都水平不高。用的最多的就是全局变量,而且觉得特别好用。

原因有二,一是只要在一个全局位置定义好,后面程序中的任何地方都能够访问到它二是因为全局可访问,所以不用去考虑或规划,如何定义变量,怎么在函数间传递或返回。关键作为初学者,不一定能够做好这“简单”的事情。

全局变量非常简单好用,和goto语句一样。但逐渐都不推荐再使用或被淘汰了,因为它们太灵活了,不太好控制,特别是后期代码量越来越多的时候。

如果发明一种东西,像全局变量一样简单好用(继承优点),但同时又能够很好地控制住(改进缺点),它能不火起来吗?很显然,Spring就具有这种特性(虽然现在的Spring已经足够复杂了)。

§Spring很好用,真的

BAT之所以牛逼,就是因为它们都在各自的领域,彻底改变了人们的方式。Spring也彻底改变了人们的编程方式。

类似的还有Struts/SpringMVC彻底改变了开发web应用的方式,Hibernate/Mybatis彻底改变了访问数据库相关代码的方式。

Spring的全局性
人类抬头,看到的是天。代码抬头,看到的是Spring。在任何地方,代码都可以和Spring交互。可以这么说,代码几乎是在Spring的管控下运行的(虽然这样讲不是很精确)。

Spring的解耦性
这里指的更多是开发方式上的解耦性。例如,从类A把B传给类C,原来的做法是直接传,这样A和C就耦合了,其实它们本没有关系。

现在只需在类A里把B放入Spring中就完事了。然后在类C里再从Spring中取出B就可以了。A和C就解耦了,因为Spring充当了中间人。

Spring的易用性
Spring就像你的秘书/管家,需要什么服务,告诉它,它给你提供。需要发号施令,告诉它,它帮你执行。

就把Spring想象成你头顶的容器,需要从里取东西,伸开胳膊拽下来的就行了。需要往里存东西,胳膊用力推上去就行了。整个过程你甚至都不用抬头。

PS:Spring仅仅是个容器吗?请持续关注后续文章!

经典文章推荐

小学生都能看懂的表达式计算(图解)

五分钟轻松了解Hbase列式存储

List家族遗产继承PK赛(一)

List家族遗产继承PK赛(二)

Map家族前来踢馆(一)

Map家族前来踢馆(二)

(完)

编程新说


用独特的视角说技术

最新文章

  1. [转]iOS代码块Block
  2. apk添加系统签名
  3. 如何选择 H5 游戏引擎
  4. android ndk开发(二)实现一个官方demo
  5. DLL放在指定目录 以及设置dll调用路径
  6. VS链接过程中与MSVCRT.lib冲突
  7. 三部曲一(数据结构)-1011-Sorting It All Out
  8. Makefile技术和应用总结
  9. java中Map,List与Set的区别
  10. Javaweb实现的优优图书商城(含源码)
  11. 封装兼容性添加、删除事件的函数 addEventListener与removeEventListener
  12. Android 轮询之 Service + AlarmManager+Thread (转)
  13. java设计模式之四建造者模式(Builder)
  14. Ubuntu下安装Node.js
  15. python3 第三章 - 程序的基本结构
  16. 运行C++程序是出现错误:cannot open Debug/1.exe for writing
  17. 关于WCF服务 http://XXXXXX/XXX/xxx.svc不支持内容类型 application/sop+xml;charset=utf-8 错误解决方法
  18. 修改Linux主机名
  19. 使用 Docker 镜像构建 GO 语言环境
  20. [转]HEX文件格式解析

热门文章

  1. webpack 4+ vue-loader 配置 (完善中...)
  2. Spiring系列__03IOC补充
  3. 关于 Mybatis 设置懒加载无效的问题
  4. 算法第四版中 while (!StdIn.isEmpty()) 循环无法跳出问题
  5. LDAP & Implementation
  6. sortable的基本属性
  7. 问题解决:Spyder不支持OpenCV模块代码提示
  8. vue的风格指南(必要的)
  9. Shell 脚本处理用户输入
  10. python面向对象的知识梳理