一、SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 spring Web MVC是一种基于Java的实现了Web MVC设想形式的请求驱动范例的轻量级Web框架,即利用了MVC架构形式的思惟,将web层停止职责解耦,基于请求驱动指的就是利用请求-响应模子,框架的目标就是帮助我们简化开辟,Spring Web MVC也是要简化我们平常Web开辟的。 模子(Model )封装了利用法式的数据和一般他们会组成的POJO。 视图(View)是负责显现模子数据和一般它天生的HTML输出,客户真个阅读器可以诠释。 控制器(Controller )负责处置用户的请求,并建立适当的模子,并把它传递给视图衬着。 Spring的web模子 - 视图 - 控制器(MVC)框架是围绕着处置一切的HTTP请求和响应的DispatcherServlet的设想。 Spring Web MVC处置请求的流程 ![]() 具体履行步调以下: 1、 首先用户发送请求————>前端控制器,前端控制器按照请求信息(如URL)来决议挑选哪一个页面控制器停止处置并把请求拜托给它,即之前的控制器的控制逻辑部分;图2-1中的1、2步调; 2、 页面控制器接收到请求后,停止功用处置,首先需要收集和绑定请求参数到一个工具,这个工具在Spring Web MVC中叫号令工具,并停止考证,然后将号令工具拜托给营业工具停止处置;处置终了后返回一个ModelAndView(模子数据和逻辑视图名);图2-1中的3、4、5步调; 3、 前端控制器发出控制权,然后按照返回的逻辑视图名,挑选响应的视图停止衬着,并把模子数据传入以便视图衬着;图2-1中的步调6、7; 4、 前端控制器再次发出控制权,将响应返回给用户,图2-1中的步调8;至此全部竣事。 二、Spring http://blog.csdn.net/cainiaowys/article/details/7107925 2.1、IOC容器:http://www.cnblogs.com/linjiqin/archive/2013/11/04/3407126.html IOC容器就是具有依靠注入功用的容器,IOC容器负责实例化、定位、设置利用法式中的工具及建立这些工具间的依靠。利用法式无需间接在代码中new相关的工具,利用法式由IOC容器停止组装。在Spring中BeanFactory是IOC容器的现实代表者。 2.2、AOP:http://blog.csdn.net/moreevan/article/details/11977115 简单地说,就是将那些与营业无关,却为营业模块所配合挪用的逻辑或义务封装起来,便于削减系统的反复代码,下降模块间的耦合度,并有益于未来的可操纵性和可保护性。AOP代表的是一个横向的关系 AOP用来封装横切关注点,具体可以鄙人面的场景中利用: Authentication 权限 Caching 缓存 Context passing 内容传递 Error handling 毛病处置 Lazy loading 懒加载 Debugging 调试 logging, tracing, profiling and monitoring 记录跟踪 优化 校准 Performance optimization 性能优化 Persistence 持久化 Resource pooling 资本池 Synchronization 同步 Transactions 事务 三、Mybatis http://blog.csdn.net/u013142781/article/details/50388204 MyBatis 是支持普通 SQL查询,存储进程和高级映照的优异持久层框架。MyBatis 消除了几近一切的JDBC代码和参数的手工设备以及成果集的检索。MyBatis 利用简单的 XML或注解用于设置和原始映照,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java工具)映照成数据库中的记录。 整体流程: (1)加载设置并初始化 触发条件:加载设置文件 将SQL的设置信息加载成为一个个MappedStatement工具(包括了传入参数映照设置、履行的SQL语句、成果映照设置),存储在内存中。 (2)接收挪用请求 触发条件:挪用Mybatis供给的API 传入参数:为SQL的ID和传入参数工具 处置进程:将请求传递给下层的请求处置层停止处置。 (3)处置操纵请求 触发条件:API接口层传递请求过来 传入参数:为SQL的ID和传入参数工具 处置进程: (A)按照SQL的ID查找对应的MappedStatement工具。 (B)按照传入参数工具剖析MappedStatement工具,获得终极要履行的SQL和履行传入参数。 (C)获得数据库毗连,按照获得的终极SQL语句和履行传入参数到数据库履行,并获得履行成果。 (D)按照MappedStatement工具中的成果映照设置对获得的履行成果停止转换处置,并获得终极的处置成果。 (E)开释毗连资本。 (4)返回处置成果将终极的处置成果返回。 MyBatis 最强大的特征之一就是它的静态语句功用。假如您之前有益用JDBC大概类似框架的履历,您就会大白把SQL语句条件毗连在一路是何等的疾苦,要确保不能忘记空格大概不要在columns列前面省略一个逗号等。静态语句可以完全处理掉这些疾苦。 四、Dubbo http://blog.csdn.net/u013142781/article/details/50387583 Dubbo是一个散布式办事框架,努力于供给高性能和通明化的RPC(远程进程挪用协议)远程办事挪用计划,以及SOA办事治理计划。简单的说,dubbo就是个办事框架,假如没有散布式的需求,实在是不需要用的,只要在散布式的时辰,才有dubbo这样的散布式办事框架的需求,而且本质上是个办事挪用的东东,说白了就是个远程办事挪用的散布式框架。 1、通明化的远程方式挪用,就像挪用当地方式一样挪用远程方式,只需简单设置,没有任何API侵入。 2、软负载平衡及容错机制,可在内网替换F5等硬件负载平衡器,下降本钱,削减单点。 3、 办事自动注册与发现,不再需要写死办事供给方地址,注册中心基于接口名查询办事供给者的IP地址,而且可以平滑增加或删除办事供给者。 节点脚色说明: Provider: 表露办事的办事供给方。 Consumer: 挪用远程办事的办事消耗方。 Registry: 办事注册与发现的注册中心。 Monitor: 统计办事的挪用次和谐挪用时候的监控中心。 Container: 办事运转容器。 五、Maven http://blog.csdn.net/u013142781/article/details/50316383 Maven这个个项目治理和构建自动化工具,越来越多的开辟职员利用它来治理项目中的jar包。可是对于我们法式员来说,我们最关心的是它的项目构立功用。 六、RabbitMQ http://blog.csdn.net/u013142781/article/category/6061896 消息行列通常为在项目中,将一些无需立即返回且耗时的操纵提取出来,停止了异步处置,而这类异步处置的方式大大的节省了办事器的请求响应时候,从而进步了系统的吞吐量。 RabbitMQ是用Erlang实现的一个高并发高牢靠AMQP消息行列办事器。 Erlang是一门静态范例的函数式编程说话。对应到Erlang里,每个Actor对应着一个Erlang进程,进程之间经过消息传递停止通讯。相比同享内存,进程间经过消息传递来通讯带来的间接益处就是消除了间接的锁开销(不斟酌Erlang虚拟机底层实现中的锁利用)。 AMQP(Advanced Message Queue Protocol)界说了一种消息系统标准。这个标准描写了在一个散布式的系统中各个子系统若何经过消息交互。 七、Log4j http://blog.csdn.net/u013142781/article/category/6045728 日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL大概您界说的级别。 八、Ehcache http://blog.csdn.net/u013142781/article/category/6066337 EhCache 是一个纯Java的进程内缓存框架,具有快速、精壮等特点,是hibernate中默许的CacheProvider。Ehcache是一种普遍利用的开源Java散布式缓存。首要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩大,缓存异常处置法式,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。 优点: 1、 快速 2、 简单 3、 多种缓存战略 4、缓存数占有两级:内存和磁盘,是以无需担忧容量题目 5、 缓存数据会在虚拟机重启的进程中写入磁盘 6、可以经过RMI、可插入API等方式停止散布式缓存 7、 具有缓存缓和存治理器的侦听接口 8、支持多缓存治理器实例,以及一个实例的多个缓存地区 9、供给Hibernate的缓存实现 弱点: 1、利用磁盘Cache的时辰很是占用磁盘空间:这是由于DiskCache的算法简单,该算法简单也致使Cache的效力很是高。它只是对元素间接追加存储。是以搜索元素的时辰很是的快。假如利用DiskCache的,在很频仍的利用中,很快磁盘会满。 2、 不能保证数据的平安:当忽然kill掉java的时辰,能够会发生抵触,EhCache的处理方式是假如文件抵触了,则重建cache。这对于Cache数据需要保存的时辰能够晦气。固然,Cache只是简单的加速,而不能保证数据的平安。假如想保证数据的存储平安,可以利用Bekeley DB Java Edition版本。这是个嵌入式数据库。可以确保存储平安和空间的操纵率。 九、Redis http://blog.csdn.net/u013142781/article/category/6067864 redis是一个key-value存储系统。和Memcached类似,它支持存储的value范例相对更多,包括string(字符串)、list(链表)、set(调集)、zset(sorted set –有序调集)和hash(哈希范例)。这些数据范例都支持push/pop、add/remove及取交集并集和差集及更丰富的操纵,而且这些操纵都是原子性的。在此根本上,redis支持各类分歧方式的排序。与memcached一样,为了保证效力,数据都是缓存在内存中。区此外是redis会周期性的把更新的数据写入磁盘大概把点窜操纵写入追加的记录文件,而且在此根本上实现了master-slave(主从)同步。 Redis数据库完全在内存中,利用磁盘仅用于持久性。相比很多键值数据存储,Redis具有一套较为丰富的数据范例。Redis可以将数据复制到肆意数目的从办事器。 1.2、Redis优点: (1)异常快速:Redis的速度很是快,每秒能履行约11万调集,每秒约81000+笔记录。 (2)支持丰富的数据范例:Redis支持最大大都开辟职员已经晓得像列表,调集,有序调集,散列数据范例。这使得它很是轻易处理各类百般的题目,由于我们晓得哪些题目是可以处置经过它的数据范例更好。 (3)操纵都是原子性:一切Redis操纵是原子的,这保证了假如两个客户端同时拜候的Redis办事器将获得更新后的值。 (4)多功用适用工具:Redis是一个多适用的工具,可以在多个用例如缓存,消息,行列利用(Redis原生支持公布/定阅),任何长久的数据,利用法式,如Web利用法式会话,网页射入彀数等。 1.3、Redis弱点: (1)单线程 (2)耗内存 10、Shiro http://blog.csdn.net/u013142781/article/details/50629708 Apache Shiro是Java的一个平安框架,旨在简化身份考证和授权。Shiro在JavaSE和JavaEE项目中都可以利用。它首要用来处置身份认证,授权,企业会话治理和加密等。Shiro的具体功用点以下: (1)身份认证/登录,考证用户能否是具有响应的身份; (2)授权,即权限考证,考证某个已认证的用户能否具有某个权限;即判定用户能否能做工作,常见的如:考证某个用户能否具有某个脚色。大概细粒度的考证某个用户对某个资本能否具有某个权限; (3)会话治理,即用户登录后就是一次会话,在没有退出之前,它的一切信息都在会话中;会话可所以普通JavaSE情况的,也可以是如Web情况的; (4)加密,庇护数据的平安性,如密码加密存储到数据库,而不是明文存储; (5)Web支持,可以很是轻易的集成到Web情况; Caching:缓存,比如用户登录后,其用户信息、具有的脚色/权限不必每次去查,这样可以进步效力; (6)shiro支持多线程利用的并发考证,即如在一个线程中开启另一个线程,能把权限自动传布曩昔; (7)供给测试支持; (8)答应一个用户伪装为另一个用户(假如他们答应)的身份停止拜候; (9)记着我,这个是非经常见的功用,即一次登录后,下次再来的话不用登录了。 笔墨描写能够并不能让猿友们完全了解具体功用的意义。下面我们以登录考证为例,向猿友们先容Shiro的利用。至于其他功用点,猿友们用到的时辰再去深究其用法也不迟。 十一、设想形式 这个算不上框架,可自行疏忽,不外博主以为设想形式的思惟很有需方法会一下。 http://blog.csdn.net/u013142781/article/details/50816245 http://blog.csdn.net/u013142781/article/details/50821155 http://blog.csdn.net/u013142781/article/details/50825301 思惟: 开闭原则:开闭原则就是说对扩大开放,对点窜封闭。在法式需要停止拓展的时辰,不能去点窜原本的代码。 针对接口编程,真对接口编程,依靠于笼统而不依靠于具体。 只管利用分解/聚合的方式,而不是利用继续。 一个实体该当只管少的与其他实体之间发生相互感化,使得系统功用模块相对自力。 利用多个隔离的接口,比利用单个接口要好。 里氏代换原则:(1)子类的才能必须大于即是父类,即父类可以利用的方式,子类都可以利用。(2)返回值也是一样的事理。假定一个父类方式返回一个List,子类返回一个ArrayList,这固然可以。假如父类方式返回一个ArrayList,子类返回一个List,就说欠亨了。这里子类返回值的才能是比父类小的。(3)还有抛出异常的情况。任何子类方式可以声明抛出父类方式声明异常的子类。 而不能声明抛出父类没有声明的异常。 |
欢迎光临 IT视频教程资源网 (https://zhilexue.tech/) | Powered by Discuz! X3.2 |