1.spring的程序程图生命周期 Spring作为当前Java最流行、最强大的员必轻量级容器框架,了解熟悉spring的须熟生命周期非常有必要; 2.TCP三次握手,四次挥手 tcp的三次握手四次挥手是每个程序员都应该熟悉的源码库。 三次握手: 四次挥手: 3.线程池执行流程图 线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与销毁线程的代价。线程池执行流程是每个开发必备的。 执行流程 JDK提供了四种拒绝策略处理类 4.JVM内存结构 JVM内存结构是Java程序员必须掌握的基础。 程序计数器(PC 寄存器) 程序计数器是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。在虚拟机的模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都需要依赖计数器完成。 Java虚拟机栈 本地方法栈 与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务。 Java堆 方法区 5.Java内存模型 6.springMVC执行流程图 7.JDBC执行流程 JDBC执行流程: 8.spring cloud组件架构 Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 9.dubbo 调用 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的远程服务调用方案,这容易和负载均衡弄混,负载均衡是对外提供一个公共地址,请求过来时通过轮询、随机等,路由到不同server。首先容器启动后,对bean进行初始化 按照bean的记流定义,注入属性 检测该对象是程序程图否实现了xxxAware接口,并将相关的员必xxxAware实例注入给bean,如BeanNameAware等 以上步骤,须熟bean对象已正确构造,记流通过实现BeanPostProcessor接口,程序程图可以再进行一些自定义方法处理。员必如:postProcessBeforeInitialzation。须熟 BeanPostProcessor的记流前置处理完成后,可以实现postConstruct,程序程图afterPropertiesSet,员必init-method等方法, 增加我们自定义的须熟逻辑, 通过实现BeanPostProcessor接口,进行postProcessAfterInitialzation后置处理 接着Bean准备好被使用啦。 容器关闭后,如果Bean实现了DisposableBean接口,则会回调该接口的destroy()方法 通过给destroy-method指定函数,就可以在bean销毁前执行指定的逻
Java的多线程之间是通过共享内存进行通信的,在通信过程中会存在一系列如可见性、原子性、顺序性等问题,而JMM就是围绕着多线程通信以及与其相关的一系列特性而建立的模型。JMM定义了一些语法集,这些语法集映射到Java语言中就是volatile、synchronized等关键字。有兴趣可以看看我的另外一篇笔记:https://www.jianshu.com/p/3c1691aed1a5 Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行。
User向服务器发送request,前端控制Servelt DispatcherServlet捕获; DispatcherServlet对请求URL进行解析,调用HandlerMapping获得该Handler配置的所有相关的对象,最后以HandlerExecutionChain对象的形式返回. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller) Handler执行完成后,返回一个ModelAndView对象到DispatcherServlet 根据返回的ModelAndView,选择一个适合的ViewResolver ViewResolver 结合Model和View,来渲染视图 将渲染结果返回给客户端。
Eureka 负责服务的注册与发现。 Hystrix 负责监控服务之间的调用情况,起到熔断,降级作用。 Spring Cloud Config 提供了统一的配置中心服务。 所有对外的请求和服务,我们都通过Zuul来进行转发,起到 API 网关的作用 最后我们使用 Sleuth+Zipkin 将所有的请求数据记录下来,方便我们进行后续分析。 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。 Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。
Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: 服务运行容器。