看透springmvc的源码的笔记

一.传输协议

1.网络传输模型

①OSI参考模型

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

②Tcp/ip协议

应用层—http协议(收到货物打开使用)

传输层—tcp协议(快递送货)

网际互联层—ip协议(告诉卖家地址,地址相当于网络互联层)

网络接入层—没有协议(相当于快递站点)

      

二.海量数据的解决方案

1.缓存和页面静态化

①通过程序缓存,主要通过map实现

②通过框架实现,如Ehcache,Memcache,Redis等

(缓存创建:①.程序启动时②.缓存失效后

缓存的失效:①.定期失效②.数据变化时失效:⑴粗粒度失效(2)细粒度失效)

③页面静态化(类似缓存)技术如:freemarker,velocity和squid,nginx

 

 

2.数据库优化

①表结构优化

②Sql语句优化

(1)索引缓存等配合使用

(2)通用的做法:将大数据量的sql的执行时间记录下来,分析日志(不同的条件,执行时间可能不同)

③分区分表

④索引优化

(1)索引的大致原理是在数据发生变化的时候,按指定字段的顺序排列后保存到一个类似表的结构中,一索引字段为条件时很快找到对应记录指针获得记录,优缺点:查询很快,增删改慢,数据变化要更新索引

⑤存储过程

存储过程只需要编译一次

3.分离活跃数据:

经常登录网站的用户放在一个数据表中

4.批量读取和延迟修改:

①批量读取:N次查询可以变成一次,例如查询工号是否已经在数据库中存在,可以把n次查询的工号变成一次查询,用in

②延迟修改:将部分要修改的数据先放入缓存中

5.读写分离(数据库集群):

对数据库服务器进行集群,增删改在主服务器,将数据同步到从服务器,读数据从从服务器上读取,解决多个请求分配到不同的服务器

6.分布式数据库:

       将不同的表放到不同的库中然后放到不同的服务器中,处理请求时,需要调用多个表,可以让多台服务器同时处理,解决单个请求本来就很复杂的问题,每个节点还可以使用数据库集群

7.Nosql

8.hadoop

三.高并发的解决方案

1.应用和静态资源分离

①静态资源:如图片,视屏,js,css等存放到相应的服务器,用专门的域名访问,如sinaimg.cn

2.页面缓存

①将应用生成的页面缓存起来,放到内存中更快,一般用Nginx服务器自带的缓存功能,也可以用Squid服务器

②对于经常变化的页面缓存,例如文章的页面的“顶”和“踩”的数量,把静态页面缓存起来,然后对变化的数量使用ajax来读取并修改相应的数据

3.集群与分布式中的session问题

①Session同步有两种处理方式:一种是在session发生变化后自动同步到其他服务器

另一种方式是用一个程序同意管理session,所有集群的服务器都使用同一个session,tomcat默认使用的是第一种方式,第二种方式使用专门的服务器安装Memcached

等高校的缓存程序来同意管理session,然后在应用程序中通过重写Request并覆盖getSession方法来获取指定服务器中的Session,集群的负载均衡可以通过软件处理或硬件处理

②另一种思路,服务器负载均衡的条件下,将同一用户(按IP)分配到同一台服务器进行处理就不需要Session同步了

4.使用反向代理获得请求结果

①反向代理服务器和代理服务器的区别

代理服务器:直接访问代理服务器来获取资源,不需要有自己的域名

反向代理服务器:服务器调用其它服务器的资源得到结果,有自己的域名和访问网址没有任何区别

14.cdn是一种特殊的集群页面缓存服务器,和普通的集群的多台页面缓存服务器的区别是,它的服务器是分布在全国各地,将请求分配到最合适的cdn服务器节点获取数据,通过cdn域名解析服务器来寻找负责的服务器节点达到负责均衡

 

5.TCP的三次握手和四次挥手

两个序号和三个标志位:

Seq:sequence number,每个字节的序号

ack:确认号,下个字节的序号

ACK:确认位

SYN:同步位

FIN:终止位

6.HTTP协议

http协议负责对传输的数据进行编码和解码

http中的报文分为请求报文和响应报文,包括三部分:首行、头部、主体

请求报文中的方法指GET、HEAD、POST PUT DELETE等类型,响应报文中的状态码是Response中的status,一共5类:

1XX:信息性状态码

2XX:成功状态码,如200表示成功

3XX:重定向状态吗,如301表示重定向

4XX:客户端错误状态码,如404表示没找到请求的资源

5XX:服务器错误状态码,如500表示内部错误

7.springmvc搭建环境步骤:

①在web.xml中配置Servlet

②创建springmvc的xml配置文件

③创建controller和view

8.XXXAware在spring里表示对XXX可以感知

通俗点解释就是:如果扎起某个类里面想要使用spring的一些东西,就可以通过实现XXXAware接口告诉spring,spring看到后就会给你送过来,而接收的方式是通过实现接口唯一的方法setXXX。比如,有一个类想要使用当前的ApplicationContext,那么我们只需要让它实现ApplicationContextAware接口,然后实现接口中唯一的方法void setApplicationContext(ApplicationContext applicationContext)就可以了,spring会自动调用这个方法将applicationContext传给我们,我们只需要接收就可以了

9

.

10.HttpServletBean的应用

 

11.FrameworkServlet的分析

 

 

12.dodisopacher方法处理流程

猜你喜欢

转载自blog.csdn.net/yuwenlanleng/article/details/84629810