在学习技术时,总会有一个简单程序 Demo
带着我们入门,所以参考着官网例子,带大家快速熟悉 Flink
的 Hello World
~
说明一下,项目运行的环境如下:
OS : Mac
Flink Version : 1.9
IDE : IDEA
Java Version : 1.8
下面来讲下关于环境准备,如果是 Windows
的用户,请参照每个步骤,找到适应自己的安装 or
启动方法。
在学习技术时,总会有一个简单程序 Demo
带着我们入门,所以参考着官网例子,带大家快速熟悉 Flink
的 Hello World
~
说明一下,项目运行的环境如下:
OS : Mac
Flink Version : 1.9
IDE : IDEA
Java Version : 1.8
下面来讲下关于环境准备,如果是 Windows
的用户,请参照每个步骤,找到适应自己的安装 or
启动方法。
在 18 年时,就听说过 Flink
流式计算引擎,是阿里调研选型选择的新一代大数据框计算架,当时就记住了这个新框架。
由于工作中,常写的还是业务开发,没有系统的去学习它,恰好在今年,我们的数据增长越来越快,架构师提出可以根据数据进行加工,通过数据分析得到更多指标性的计算结果,提供更多有价值的业务给用户。
于是规划了基于以下的系统架构:
可以看到,业务数据库与数据分析进行了剥离,避免了对核心业务的影响,基于数据分析的结果存储到线下备份库,查询大量的分析结果也不会影响核心业务。
同时,在数据处理上,选择了 Flink
这个分布式处理引擎。随着深入的调研和了解,从它的描述、性能、接口编程和容错恢复上进行了学习,觉得它十分适合我们的场景,所以接下来我分享一下调研的结果~
结束了前面的《Spring 源码深度学习》,八月给自己放松了一下,看了几本小说和电视剧,还有写一个工作中用到的小工具,周报数据渲染的前端界面(前端是真的难)。
当然技术上的学习也要注意,所以看了松哥写的《Spring Boot + Vue 全栈开发》,来系统学习 SpringBoot
,下面是简单的速记,根据使用场景可以快速定位到知识点:
Demo
脚手架项目地址:
经过前面的 AOP
(面向切面编程) 和 Transaction
(事务管理),这次来到了 MVC
(Web 应用,进行请求分发和处理)
Spring MVC 定义:
分离了控制器(Controller)、模型(Model)、分配器(Adapter)、视图(View)和处理程序对象(Handler,实际上调用的是 Controller 中定义的逻辑)。
基于 Servlet 功能实现,通过实现了 Servlet 接口的 DispatcherServlet 来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上传文件支持。
同样老套路,本篇按照以下思路展开:
(1) 介绍如何使用
(2) 辅助工具类 ContextLoaderContext
(3) DispatcherServlet
初始化
(4) DispatcherServlet
处理请求
我们在业务开发中,使用得最多的是面向对象编程(OOP),因为它的代码逻辑直观,从上往下就能查看完整的执行链路。
在这个基础上延伸,出现了面向切面编程(AOP),将可以重复性的横切逻辑抽取到统一的模块中。
例如日志打印、安全监测,如果按照 OOP
的思想,在每个方法的前后都要加上重复的代码,之后要修改的话,更改的地方就会太多,导致不好维护。所以出现了 AOP
编程, AOP
所关注的方向是横向的,不同于 OOP
的纵向。
所以接下来一起来学习 AOP
是如何使用以及 Spring
容器里面的处理逻辑~
在上一篇文章中,深入分析和学习了 BeanFactoryPostProcessor
,主体是 BeanFactory
的后处理器,这次来学习主体是 Bean
的后处理器:BeanPostProcessor
。
定义:它也是 Spring
对外提供的接口,用来给用户扩展自定义的功能。执行的时机在 bean
实例化阶段前后
本篇思路:
BeanPostProcessor
定义