1、TCP/IP、HTTP
TCP/IP是一个总称,其中包含了TCP、IP、HTTP、TELNET...等等很多互联网协议。
TCP/IP的分层:应用层(HTTP)、传输层(TCP)、网络层(IP)、网络接口层。
装包:由应用层->网络接口层装包,每一层都有自己的报头,并作为下一层的数据被包装进去,解包的时候则反过来。
TCP:建立连接需要的三次握手:1、请求方发送syn包,并进入SYN_SEND状态;2、接收方收到syn包,并返回syn+ack包,同时进入SYN_RECV状态;3、请求方收到syn+ack包后,给接收方发送确认ack包,然后开始发送数据。(四次挥手差不多同理)
TCP连接建立后,传输过程会将数据拆分成多个数据包,并加上编号,以此来保证数据的完整性。
HTTP是基于TCP的一种应用,属于短连接。
Socket是一种实现长连接的方法,可以基于TCP,也可以基于UDP(非响应式),通常我们说的socket是基于TCP链接的。
2、Servlet
Servlet是Java定的一种Web规范,所谓规范,目的就是为了统一和约束,对于Java程序员来说,只需要关心如何去实现Servlet接口就可以,而不需要去关系底下用的是Tomcat还是Jetty,或者是Jboss,这些不同的Web容器,在接收用户请求后,中间做了不同的事情,但是最后,总是按照Servlet定下的规范,将用户访问信息封装成Servlet的request对象,发送到对应的Servlet的实现类,并接收返回的response对象返回给前端。
3、EJB
跟Spring一样是一种Web容器,属于重量级Web开发容器。核心思想是:将不同的业务模块分解成一个个EJB模块,并通过RMI实现远程调用,达到解决单体服务面临的压力问题。
由于本人没有使用过EJB,这里只是做一下简单的了解,有不合理之处请指出。
4、Spring
Spring的核心是控制反转(Ioc)和面向切面(AOP)。
Ioc使程序可以不用在编写代码时就通过new的方式创建对象,而是让容器在运行时根据配置文件,利用Java的反射来动态的创建对象,有利于程序的解耦合。核心:BeanFactory
AOP可以对某一类对象进行监控和控制,例如记录日志,不需要在每个对象里编写代码,可以通过配置文件在调用某些方法的前后统一调用指定的模块,达到功能扩充的目的。
SpringMVC,是Spring在Web层的MVC框架。
Springboot,习惯大于约定的思想,简化了Spring项目的创建、依赖、配置工作,可以很方便的集成Spring的各个模块(SpringData、SpringMVC等)。
Spring的东西实在太多,后续另起一篇单独的来记录。
5、分布式
分布式系统,是指一组通过网络通信,一起完成某一共同任务的服务群组成的系统;分布式的出现是为了解决单机系统的处理能力已经无法满足业务需求的问题。
分布式系统的知识面太广,目前我也还没开始整理学习,后续有机会会另开系类来记录。
6、中间件
简单的概括:中间件是位于应用程序之下,操作系统、网络、数据库之上,起到连接作用的一类软件;目前中间件的概念一般是指分布式系统中,连接上下(应用层和底层)、左右(分布式服务直接的通信等协作)的一类软件。
写得很详细的一篇文章,在这里做下记录:
https://blog.csdn.net/singit/article/details/71156863?locationNum=7&fps=1
7、