总结

作者: PinenutPan | 来源:发表于2018-06-08 17:51 被阅读0次

1.spring IOC/AOP/MVC

  spring是一个轻量级框架,IOC控制反转降低耦合度,AOP可以把应用业务和系统服务分开,MVC是一个非常常用的WEB框架。

  IOC:

控制反转是一种在软件工程中解耦合的思想,调用类只依赖接口,而不依赖具体的实现类,减少了耦合。

控制权交给了容器,在运行的时候才由容器决定将具体的实现动态的“注入”到调用类的对象中。

原先我们要使用一个类的方法,需要new一个对象,然后再用这个对象去调方法,但是项目中类太多了,每个都去new很麻烦。

    用IOC的话,把我们自己需要实例化的对象交给spring处理,这个时候实例化对象的权利就被spring所拥有,这个过程就是控制反转。

IOC是目的,DI是手段,DI可以作为IOC的一种实现方式。

  AOP:

面向切面编程,实现一些与业务无关的功能,例如:异常处理、日志记录。

AOP代理就是AOP框架通过代理模式创建的对象,Spring使用JDK动态代理或CGLIB代理来实现,Spring缺省使用JDK动态代理来实现,

从而任何接口都可别代理,如果被代理的对象实现不是接口将默认使用CGLIB代理,不过CGLIB代理当然也可应用到接口。

AOP代理的目的就是将切面织入到目标对象

  MVC:DispatcherServlet-->HandlerMapping-->HandlerAdapter-->ModelAndView-->ViewResolver

  用到的设计模式:

1.工厂模式:Spring中的FactoryBean就是典型的工厂方法模式

2.策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化(SimpleInstantiationStrategy)

3.模板模式:JdbcTemplate执行execute方法

4.单例模式:spring的BeanFactory

5.适配器模式:Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。

  基本上都是动态地给一个对象添加一些额外的职责

6.代理模式:Spring的Proxy模式在aop中有体现,比如JdkDynamicAopProxy和Cglib2AopProxy

7.观察者模式:Spring中Observer模式常用的地方是listener的实现。如ApplicationListener;

2.内存模型/JVM/GC

  计算机的内存模型是: cup通过寄存器访问高速缓存然后再访问内存

  Java的内存模型JMM:

JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,

每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。

本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

  JVM:

主要包括:虚拟机栈、方法区、堆、本地方法栈、程序计数器

1、程序计数器:可以看成是当前线程执行的字节码的行号指示器。字节码解释器工作时,就是通过改变这个计数器的值来选取下一步要执行的字节码指令,分支、循环、跳转、异常

  等都要依赖这个计数器。

2、Java虚拟机栈:是线程私有的,他的生命周期和线程相同。

  它是Java方法执行的内存模型:每个方法执行的同时都会创建一个栈帧用于存储局部变量、操作数栈、动态链接、方法出口等信息。

3、本地方法栈则为虚拟机栈使用到的Native方法服务

4、堆:

  是所有线程共享的内存区域,在虚拟机创建时创建。可以分为新生代、老年代、永久代,。

  新生代:大多数对象在新生代中被创建,其中很多对象的生命周期很短.又可以分为Eden空间,survivor from/to 占比为8:1:1

  Java8中去掉了老年代、增加了元空间。

5、方法区:

  也是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量,即时编译器编译的代码等数据。

Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。

Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。

Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。

  GC

新生代:对象生命周期很短,用的复制算法

老年代:对象存活率高使用“标记-清理”或“标记-整理”算法。

3.集合

4.多线程/锁

5.单点登录

6.数据库

7.设计模式

8.Redis

9.分布式/dubbo/mq

相关文章

网友评论

      本文标题:总结

      本文链接:https://www.haomeiwen.com/subject/cyjasftx.html