功能分析

Spring MVC源码分析(二):SpringMVC的DispatcherServlet的设计与实现

試著忘記壹切 提交于 2019-12-02 21:33:20
概述 DispatcherServlet是SpringMVC的一个前端控制器,是MVC架构中的C,即controller的实现,用于拦截这个web应用的所有请求,具体为在web.xml中配置这个servlet,对应的url-pattern设置为“/”,或者使用servlet3.0之后的WebApplicationInitializer来配置,在web容器启动这个应用时,会创建和初始化这个DispatcherServlet对象实例。 DispatcherServlet在接收到请求之后,会根据请求的uri信息,找到对应的某个controller的某个方法来处理这个请求。通常在controller对应的类中使用@Controller和@RequestMapping来唯一确定类的一个方法处理哪些uri请求,具体包括路径,http请求方法等信息。同时还需要处理主题theme,本地化locale,multipart请求,以及响应到View视图的映射。 基于以上需求背景,DispatcherServlet需要定义相关的子组件来完成这些功能。由于Spring的ApplicationContext体系结构设计当中是支持层次化的,即整个spring应用包含一个root WebApplicationContext,多个子WebApplicationContext

Spring基础系列-AOP源码分析

匿名 (未验证) 提交于 2019-12-02 20:41:15
原创作品,可以转载,但是请标注出处地址: https://www.cnblogs.com/V1haoge/p/9560803.html 一、概述   Spring的两大特性:IOC和AOP。   AOP是面向切面编程,Spring内置了自己实现的基于动态代理技术的AOP,同时还支持成熟的AspectJ框架,我们这里主要讲述的还是内置的基于动态代理的AOP实现。因为面对一些普通的需求,Spring内置的AOP已经绰绰有余。   AOP一般用于增强原来的代码的功能,这种增强体现在辅助方面,比如安全、日志、事务等。 二、术语 1、连接点(JoinPoint)   连接点就是具体的代码中的切入点,指的是 具体的一处 代码位置。 2、切点(PointCut)   切点是对一系列代表同种功能(目的)的切入点(连接点)的统称, 切点不是一个点,而是代表某一功能的一系列连接点的集合 。 3、通知(Advice)   通知就是我们要在切点执行的操作,就是我们要实现的目的,是要实现的功能的代码实现。一般通知又称为增强,所谓增强就是对原来功能的基础上添加新功能,进行功能增强。 4、切面(Aspect)    切面是通知和切点的综合体 ,定义好了一个切面,那么我们就知道,这个AOP要实现的功能是什么,需要切入到程序中的那些地方。抽象层次中, 切面是代码功能的横切面 ,这个横切面的位置就是切点

消息中间间选型分析

≯℡__Kan透↙ 提交于 2019-12-02 18:56:07
一、前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。 目前开源的消息中间件可谓是琳琅满目,能让大家耳熟能详的就有很多,比如 ActiveMQ、RabbitMQ、Kafka、RocketMQ、ZeroMQ 等。不管选择其中的哪一款,都会有用的不趁手的地方,毕竟不是为你量身定制的。有些大厂在长期的使用过程中积累了一定的经验,其消息队列的使用场景也相对稳定固化,或者目前市面上的消息中间件无法满足自身需求,并且也具备足够的精力和人力而选择自研来为自己量身打造一款消息中间件。但是绝大多数公司还是不会选择重复造轮子,那么选择一款合适自己的消息中间件显得尤为重要。就算是前者,那么在自研出稳定且可靠的相关产品之前还是会经历这样一个选型过程。 在整体架构中引入消息中间件,势必要考虑很多因素,比如成本及收益问题,怎么样才能达到最优的性价比?虽然消息中间件种类繁多,但是各自都有各自的侧重点,选择合适自己、扬长避短无疑是最好的方式。 二、各类消息队列简述 ActiveMQ 是 Apache 出品的、采用 Java 语言编写的完全基于 JMS1

面向对象方法与UML的历史与发展

冷暖自知 提交于 2019-12-02 17:21:01
一、 不同的分析与设计方法 1.功能分解法( function decomposition ) 以系统需要提供的功能为中心来组织系统。 首先定义各种功能,然后把功能分解为子功能,对较大的子功能进一步分解,直到可给出明确的定义 设计功能 / 子功能所需要的数据结构 定义功能 / 子功能之间的接口。 (作为一种早期的建模方法,没有明确地区分分析与设计) 建模过程:层层进行功能分解 功能分解法得到的系统模型(由模块及其接口构成) 优点与缺点: 直接地反映用户的需求,所以工作很容易开始; 不能直接地映射问题域,很难检验结果的正确性; 对需求变化的适应能力很差; 局部的错误和修改很容易产生全局性的影响。 2.结构化方法: 结构化分析( structured analysis , SA ) 结构化设计( structured design 。 SD ) 结构化分析又称数据流法,其基本策略是跟踪数据流,即研究问题域中数据如何流动,以及在各个环节上进行何种处理,从而发现数据流和加工。得到的分析模型是数据流图( DFD ),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。 数据流图 结构化设计与功能分解法基本相同,基于模块的概念建立设计模型,分为概要设计和详细设计。 概要设计:确定系统中包含哪些模块以及模块之间的调用关系,得到模块结构图( MSD )。 详细设计

团队项目-需求分析报告

别等时光非礼了梦想. 提交于 2019-12-02 13:29:30
团队项目-需求分析报告 一、博客链接 组长博客链接 二、组队后的团队项目的整体计划安排 编写需求说明书。 确定各功能模块分工。 完成UI设计,完成基础功能算法,制定测试计划。 完成Alpha版本,编码+测试+项目管理同步推进。 收集用户的试用反馈 完成Beta版本,以反馈为基础进行改良。 编写用户手册。 正式版本发布,进行后续维护和支持。 三、团队分工 姓名 分工 陈明磊 任务分配,撰写需求分析说明书引言部分,PPT 陈思涵 博客 林镕炜 需求说明书非功能需求和验收验证标准部分 实体关系图 韩洪威 原型设计,需求分析说明书原型部分, 状态图 杨润秋 需求分析说明书项目总体描述部分, 状态图 李欣凯 logo设计,需求说明书非功能需求和验收验证标准部分,活动图 陈舒洋 答辩,实体关系图 陈锦杰 需求说明书非功能需求和验收验证标准部分,类图,思维导图,评审表,小组评分,实体关系图 陈振旺 需求说明书非功能需求和验收验证标准部分,用例图 钟伟颀 需求分析说明书项目总体描述部分, 用例图 陈锦鸿 需求分析说明书项目总体描述部分, 用例图 胡浩楠 需求说明书非功能需求和验收验证标准部分, 活动图 四、思维导图 五、评估团队中每个人对本次作业的贡献比例 姓名 贡献度 陈明磊 9% 陈思涵 7% 林镕炜 8% 韩洪威 9% 杨润秋 8% 李欣凯 8% 陈舒洋 8% 陈锦杰 11% 陈振旺 8%

Burp Suite使用介绍

末鹿安然 提交于 2019-12-02 03:13:20
Getting Started Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。本文主要介绍它的以下特点: 1.Target(目标)——显示目标目录结构的的一个功能 2.Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。 3.Spider(蜘蛛)——应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。 4.Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。 5.Intruder(入侵)——一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。 6.Repeater(中继器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。 7.Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。 8.Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。 9.Comparer(对比)—

性能测试模型

╄→гoц情女王★ 提交于 2019-12-01 12:32:25
1.性能评估模型概述 我们的系统性能到底能不能够支撑线上真实大量的订单交易? 我想,这是我们每一个互联网交易或者负责大并发项目的同学都很关心的问题,也是性能评估模型篇需要解答的最终问题。所以我们就带着这个问题来一步步深入性能测试。本问题的难度不在于一个简单的结果,而在于答案背后的一系列性能测试的评估数据和算法,以及如何建立一个良好可持续的“性能评估模型”。 通常来讲,性能测试是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 而要回答“能否支撑线上真实 大量的订单交易 ”这样带有预测性的问题,实际上还需要用上另一种手段,即“ 性能预测 ”,而“在线性能评估模型”就是用来做性能预测的。 在预测之前,我们先来做一个数据分析,通过这个分析我们可以大概了解线上与线下的推算过程。 2013年11月11日,支付宝实现了当天交易总金额 350 亿元 ,订单总数 1.8 亿笔 (其中手机支付占24%),活跃用户 1.2 亿 。(来源:支付宝官方微博 http://weibo.com/1627897870/AiiAjEwHO ) 显然这是一个非常震惊的数字,它见证着电商的今天也预示着电商的未来。针对这个数字,下面我们就一起来剖析数字背后的性能情况。 双11当天,支付宝的订单数是1.8亿笔,意味着每小时订单数达到1.8亿 / 24 = 750万笔

软件工程自学笔记

独自空忆成欢 提交于 2019-12-01 10:18:33
软件工程自学 emmm我们专业不学习软件工程,自学一点,权当休闲。 1.概述 应对不断变化的需求 开发占比比测试和维护小得多。 1.2 软件开发的三个阶段 私人化的软件环境中,软件的水平与个人的关系很大。 专家系统:提供专业知识与服务 网格计算:云计算 软件开发的初期,一定要先花时间把需求搞清楚 可读性、可理解性越好,可维护性越好 软件开发追求一致性和标准性 技术先进,需求不清楚是中国的现状。没有技术解决不了的,但是主要问题是把需求提清楚 好的需求本身就是一种资源 维护对一个公司的信誉很重要,要考虑到开发公司的流动性 维护费:技术支持(电话、邮件)、上门解决,这是一个长期的盈利(对客户就是花费) 软件的维护是一件很困难的问题。 软件!=程序,软件是由一个完整的配置组成的,还包括文档和数据。 在软件开发的不同阶段进行修改,需要付出的代价是很不相同的。 一旦发生错误应该马上修改 开发费与维护费是两回事。签合同的时候要说好 1.3 软件工程概述 好的项目管理要尽量准时。 一种策略:快速迭代、抢占市场、尽早上架 开发目的的折中、最优化 易于维护的软件,可靠性一般也比较高 可靠性和性能是互斥的,一个是求稳,一个是性能导向的 软件工程的原则: 例如类,就是对一组有共同特性的对象的抽象 局部化:资源的声明、使用和释放应该放在同一个模块中并且应该尽量靠近 一致性:要培训员工使用公司统一的命名

Qt架构图及模块分析介绍

与世无争的帅哥 提交于 2019-12-01 09:55:27
1、Qt框架图: 2、Qt模块组成 通用软件开发模块 QtCore 核心非图形接口类,为其他模块所调用 QtGui GUI(图形用户接口)功能模块 QtMultimedia 提供低级多媒体功能支持的类 QtNetwork 提供对网络编程支持的功能类 QtOpenGL 提供对OpenGL支持的功能类 QtOpenVG 提供对OpenVG支持的功能类 QtScript 提供使应用程序脚本化的工具类 QtScriptTools 为使用Qt Scripts的应用程序提供附加功能的类 QtSql 提供使用SQL语言操作 数据库 表的功能类 QtSvg 提供显示SVG文件内容的功能类 QtWebKit 提供编辑和显示Web内容的功能类 QtXml 提供操纵XML语言的功能类 QtXmlPatterns 提供XPath, XQuery, XSLT和XML语言规范的类 Phonon 提供创建多媒体功能的类 Qt3Support 提供从Qt 3平滑过渡到Qt 4的功能类 常用辅助工具模块 QtDesigner 提供扩展Qt Designer功能的类 QtUiTools 提供处理使用Qt Designer创建的窗体的工具类 QtHelp 提供在线帮助功能的类 QtTest 提供单元 测试 功能的工具类 Windows 平台上开发者专属模块 QAxContainer

UAVStack JVM监控分析工具:图形化展示采集及分析监控数据

拈花ヽ惹草 提交于 2019-12-01 09:55:24
摘要:UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为AllInOne的智能化服务技术栈,UAVStack提供了非常全面的监控数据采样功能,同时支持数据监控与预警。近期,我们整合了原有的数据采集展示功能,新增JVM分析功能,推出了更易用的JVM监控分析工具。 熟悉JDK的开发者都知道,JDK本身提供了一套JVM分析工具,包括jinfo、jmap、jstack等。用户可以通过命令行轻松获取JVM内存堆栈信息、内存对象分配以及JVM启动基本参数信息。但这些工具需要在命令行环境中执行,且生产环境下则需要通过堡垒机转发。 开源社区一些不错的JVM分析工具也可以提供获取JVM基本信息、追踪堆栈、获取内存信息等功能,但同样需要命令行CLI的支持。 UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 一、架构 JVM监控分析工具基于UAVStack既有架构,整体分为前端、后台及中间件增强框架(MOF)。其中: 前端负责展示数据、向后台发送用户执行指令; 后台负责下发指令、响应用户查询、处理采集到的数据;