背景

问题从一杯咖啡开始。

今天我去楼下咖啡机买了一杯「粉黛拿铁」。制作过程中显示:

我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力。咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉得味道不亚于星爸爸。但是不可否认它确实给了我一杯假的拿铁。

现在很多技术专家好比品鉴咖啡的专家。他们并不需要知道咖啡豆和可可豆的区别,更不知道这两种植物长在树上是什么样子。没关系,这并不影响他们区别一杯咖啡是拿铁、摩卡还是卡布奇诺。就好像工作中遇到团队配合的情况,他们并不需要知道别人团队的产品是怎么实现的,只需要在他们出问题的时候让他们帮忙解决。所以,现在很多工作招高级别的人都要求良好的沟通和推动能力。技术能力反而考察的没有那么细致。

但是作为技术人员,了解底层是很重要的。因为我们不是买咖啡的,而是生产咖啡机的。有一天,咖啡机不工作了,经过分析监控报警和日志大数据,终于找到原因:一粒咖啡豆太小卡到了凹槽里。清理了这粒咖啡豆,咖啡机又正常工作了。这就结束了吗?

不,我们要复盘,用5Why分析法找到问题的根因。

Q:为什么咖啡机会不工作?

A:因为一粒咖啡豆卡在里凹槽里。

Q:为什么会卡在凹槽里?

A:因为这粒咖啡豆太小了,就掉下去了。

Q:为什么太小了就会掉下去?

A:因为咖啡豆基本都是圆形,咖啡豆之间有很大的空隙,彼此没有压力。只是受到重力影响,就掉下去了。

Q:为什么咖啡豆都是圆形,不能生产出方形,彼此紧密契合的咖啡豆吗?

这时候就是后悔不知道咖啡豆到底长在哪种树上的时间了。不了解所以没有办法做出合理的改变。

现在我们都喜欢用SpringBoot。平时工作的好好的,突然公司要求做一个基础组件的升级,咦咦咦,本地运行的好好的。发布到服务器上跑不起来。当初搭建开发基础框架的小哥早已离职,是看着那堆日志发愣呢?还是了解一下里面的基础概念顺藤摸瓜呢?废话到此为止。

概念

SpringBoot是什么?

SpringBoot是一个框架和编程规范。它化简了很多个框架和组件的使用,一站式简单的完成文件配置和应用部署。因为它内置服务器并装备启动类代码,可以快速开启一个Web容器。

Web容器是什么?

Web容器是一种可以处理从客户端发出请求的应用程序。在服务器中一个端口就对应一个提供相应服务的程序。在Java方面,web任凭器一般是指Servlet容器。

Servlet是什么?

Servlet只是一个接口。它声明了Servlet的生命周期的三个基本方法:init()、service()和destroy()。Web容器会在特定时间调用这些方法。Servlet是提供了一个标准,是J2EE的13个标准接口规范之一。

J2EE是什么?

J2EE(Java 2 Platfrom, Enterprise Edition)最初是一个为大企业主机级的计算类似而设计的Java平台。这个标准给提供可重用模块组件组件提供了土壤。就是定义一系列的接口,你们要实现什么功能都要在这些接口基础上。根据场景Java2平台主要包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。

Java2平台是什么?

Sun公司在1998年发表JDK1.2版本的时候,使用了新名字Java 2 Platform。修改后的JDK成为Java 2 Platfrom Software Developing Kit 即J2SDK。

Web容器和Netty的关系

Web容器(如tomcat、jetty)主要处理从客户端传过来的消息,将消息分给worker线程来处理。worker线程做的事情就是通过Servlet来做的。而接受消息线程和worker线程之间的协调沟通工作目前主流是Netty来做的。

一张图大体表示一下他们的关系:

总结

如果做一件事情很麻烦,那一定有一个好方法。

相关阅读

四象限分析法分析你是否适合做管理

复联4里用到的方法论

年纪大了,是否该往管理方向转型?

架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

转载于:https://www.cnblogs.com/xiexj/p/11057008.html

你看不懂的spring原理是因为不知道这几个概念相关推荐

  1. 人人都能看懂的Spring底层原理,看完绝对不会懵逼

    人人都能看懂的Spring原理,绝对不会懵逼 为什么要使用Spring? Spring的核心组件 Spring是如何实现IOC和DI的? 定义了BeanDefinition 扫描加载BeanDefin ...

  2. 看不懂Kotlin源码?从Contracts 函数说起~

    前言 最近有朋友反馈说因为源码是Kotlin,所以看不懂.其实,很多时候看不懂Kotlin的源码很有可能是因为你不知道某些特定语法.正如你看不懂源码其实是因为不了解设计模式一样~ 举个例子 以Kotl ...

  3. 只会用框架,看不懂源码,不了解其底层机制与实现原理,成了一名只会搬运源码库的开发。说白了,就是真正牛逼的技术不属于你。

    对于开发来说,我们在工作中普遍都会用到各个开源框架,比如最基础的 Spring,使开发网络编程变得特别简单的 Netty 框架,还有成为目前微服务框架首选的 Spring Cloud 等.在多个框架之 ...

  4. Spring原理只要看这篇文章就够了

    Spring 的骨骼架构 Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图: 图 1 .Spring 框架的总体架构图 从上图中可以看出 Spring ...

  5. 神经网络的传播原理——看不懂你来打我

    神经网络的传播原理 本文介绍的是指深度神经网络 DNN 和 BP算法. 读 N 遍,推导一遍,用代码实现一遍 .还不懂,再来打我. 前不久换了一份工作,使得我能够真正的在工作中使用到机器学习中的神经网 ...

  6. 跟vczh看实例学编译原理——一:Tinymoe的设计哲学

    自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...

  7. 人人都能看懂的Spring源码解析,Spring如何解决循环依赖

    人人都能看懂的Spring源码解析,Spring如何解决循环依赖 原理解析 什么是循环依赖 循环依赖会有什么问题? 如何解决循环依赖 问题的根本原因 如何解决 为什么需要三级缓存? Spring的三级 ...

  8. 前端面试题(带文字+代码解析),我不相信你看不懂(2022.11.04)

    HTML部分(包括h5) 1. 行内元素有哪些?块级,行内块元素有那些?空元素有那些? 此题较为简单,这里我们不需要把所有的都写出来,只要大概写出比较有代表性的就可以了 行内元素(display:in ...

  9. 如何写出同事看不懂的Java代码?

    壹.瞒天过海 我打赌你肯定想不到,有人居然会在注释里下了毒.看看下面的代码,简单到main方法中只有一行注释. public static void main(String[] args) {// \ ...

最新文章

  1. 云计算之路-阿里云上-幸福总是很突然:“黑色1秒”问题解决啦
  2. python默认参数 可变对象_当心Python函数可变默认参数(list,set,dict…)的陷阱
  3. php代码上线,实现版本切换
  4. 杨森翔的书法【斗方】
  5. HDU 1476 Sudoku Killer
  6. Does Oracle Goldengate support Parallel DML?
  7. 通话时自动中断音乐播放_您知道用户在何处以及为何中断通话吗?
  8. 关于Jquery ajax调用一般处理程序Handler报500 错误(Internal Server Error)解决办法
  9. 分享一个学习充电的电子书下载网站(目前可以免费下载电子书)
  10. 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
  11. vivado中fifo ipcore的empty和dout输出特征
  12. 初探MyBatis框架
  13. 网站SEO其实很简单,新手必看!!!
  14. sublime text 编译时提示[WinError 2] 系统找不到指定的文件。
  15. Win10系统修改用户名以及C盘下Users用户名实操手册(实测有效)
  16. jquery遍历对象,数组,集合
  17. 用Java实现杨辉三角
  18. 超级记忆力训练法简介
  19. 2007热点技术职位排行及点析
  20. VC版本号与VS对应关系

热门文章

  1. inurllay old.php id,搜索技巧
  2. 按值传递时 php必须复制值,PHP笔试题汇总
  3. 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
  4. HTML5 file api读取文件的MD5码工具
  5. Ext 遍历树的所有节点
  6. c#中将HTML文件转换成PDF文件
  7. MFC消息详解 (WindowProc|OnCommand|OnNotify)
  8. windows应用程序的开发一个键盘记录器
  9. 清理临时目录mysql,把MySQL的临时目录迁移到内存上-临时文件夹
  10. django 怎么加权限 静态资源目录_Django1.7如何配置静态资源访问