当前位置 > 主页 > 万和大讲堂 >


南京Java培训关于Java Web前端到后台常用框架的介绍(二)

2016-05-06 10:32

  近年来随着Web应用交互复杂度的提升,前端开发也迎来了一个高速发展的时期。除了一些老牌框架纷纷推出改动较大的升级之外,还涌现出一批新生代的开源库和框架,推动着Web应用开发理念向越来越强调前端架构的方向发展——前端工程师。先前南京万和Java培训有讲解部分关于Java Web前端到后台常用框架的介绍,今天我们继续介绍,希望能为大家在选择前端的技术架构时提供一些有益的参考。


  相关阅读:南京Java培训关于Java Web前端到后台常用框架的介绍(一)


  五、Maven


  Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包。但是对于我们程序员来说,我们最关心的是它的项目构建功能。


  六、RabbitMQ


  消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。


  RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。


  Erlang是一门动态类型的函数式编程语言。对应到Erlang里,每个Actor对应着一个Erlang进程,进程之间通过消息传递进行通信。相比共享内存,进程间通过消息传递来通信带来的直接好处就是消除了直接的锁开销(不考虑Erlang虚拟机底层实现中的锁应用)。


  AMQP(Advanced Message Queue Protocol)定义了一种消息系统规范。南京万和Java培训提醒大家需要注意的是,这个规范描述了在一个分布式的系统中各个子系统如何通过消息交互。


  七、Log4j


  日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。


  八、Ehcache


  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。但是南京万和Java培训提醒大家需要注意的是,这对于Cache数据需要保存的时候可能不利。当然,Cache只是简单的加速,而不能保证数据的安全。如果想保证数据的存储安全,可以使用Bekeley DB Java Edition版本。这是个嵌入式数据库。可以确保存储安全和空间的利用率。


  九、Redis


  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)耗内存


  十、Shiro


  Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。Shiro的具体功能点如下:


  (1)身份认证/登录,验证用户是不是拥有相应的身份;


  (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;


  (3)会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;


  (4)加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;


  (5)Web支持,可以非常容易的集成到Web环境;


  Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;


  (6)shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;


  (7)提供测试支持;


  (8)允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;


  (9)记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。


  文字描述可能并不能让大家完全理解具体功能的意思。下面南京万和Java培训以登录验证为例,向大家介绍Shiro的使用。至于其他功能点,猿友们用到的时候再去深究其用法也不迟。


  十一、设计模式


  这个算不上框架,可自行忽略,不过南京万和Java培训认为设计模式的思想很有必要了解一下。


  思想:


  开闭原则:开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码。


  针对接口编程,真对接口编程,依赖于抽象而不依赖于具体。


  尽量使用合成/聚合的方式,而不是使用继承。


  一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。


  使用多个隔离的接口,比使用单个接口要好。


  里氏代换原则:(1)子类的能力必须大于等于父类,即父类可以使用的方法,子类都可以使用。(2)返回值也是同样的道理。假设一个父类方法返回一个List,子类返回一个ArrayList,这当然可以。如果父类方法返回一个ArrayList,子类返回一个List,就说不通了。这里子类返回值的能力是比父类小的。(3)还有抛出异常的情况。南京万和Java培训提醒大家需要注意的是,任何子类方法可以声明抛出父类方法声明异常的子类,而不能声明抛出父类没有声明的异常。


  前端技术正处在一个新老并存、百家争鸣的时代。一方面我们需要等待HTML5以及其他W3C标准的普及,另一方面更新的标准,如Web Components和ECMAScript 6又已在起草之中。这两个标准普及时,前端架构恐怕又会迎来一次洗牌。但南京万和Java培训提醒大家,不管怎样,做好足够的功课,然后根据自己的实际需求出发来进行选择总是没错的。

最近开班 more>
  • Python基础班
  • Java全栈开发
  • 前端基础班
  • 软件测试
  • 云原生精英班
  • 云网预科班
  • CISP
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCM 12C
  • OCP 19C
  • RHCE 9.0
  • 随时开课
  • 12月26日
  • 随时开课
  • 12月4日
  • 12月16日
  • 12月9日
  • 12月21日
  • 1月6日
  • 12月30日
  • 12月16日
  • 12月21日
  • 12月7日
  • 12月7日
  • ——
  • 随时开课
  • 12月16日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入