摘要:
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保 阅读全文
摘要:
本节介绍Spring应用程序的集成测试。 一、概述 能够在不需要部署到应用程序服务器或连接到其他企业基础设施的情况下执行某些集成测试是很重要的。这样做可以测试以下内容: spring IoC容器上下文的正确连接。 使用JDBC或ORM工具进行数据访问。这可以包括SQL语句的正确性、Hibernate 阅读全文
摘要:
真正的单元测试通常运行得非常快,因为不需要设置运行时基础设施。然而,对于某些单元测试场景,Spring框架提供了模拟对象和测试支持类。 ♠ 单元测试的浅显理解 单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条 阅读全文
摘要:
Spring是基于事件驱动模型的,事件驱动模型也就是我们常说的观察者,或者发布-订阅模型。 Spring 的事件角色的类图如下: spring中的这些接口和抽象类: ApplicationEventPublisherAware:接口,用来发布事件 ApplicationEvent :抽象类,用来定义 阅读全文
摘要:
从3.1版开始,Spring框架透明地向现有Spring应用程序添加缓存的支持。与事务支持类似,缓存抽象允许一致地使用各种缓存解决方案,对代码的影响最小。 从spring4.1开始,通过JSR-107注解和更多定制选项的支持,缓存抽象得到了显著的扩展。 一、理解抽象缓存 缓存与缓存区 “缓冲区”和“ 阅读全文
摘要:
Spring中的JMX(Java管理扩展)支持提供了一些特性,使你能够轻松、透明地将Spring应用程序集成到JMX基础设施中。 具体来说,Spring的JMX支持提供了四个核心功能: 将任何Spring Bean自动注册为 JMX MBean。 控制bean管理接口的灵活机制。 通过远程JSR-1 阅读全文
摘要:
Spring提供了一个JMS集成框架,简化了JMS API的使用,其方式与Spring对JDBC API的集成基本相同。 JMS可以大致分为两个功能领域,即消息的生成和消费。JmsTemplate类用于消息生成和同步消息接收。 Spring提供了许多消息侦听器容器,你可以使用它们来创建消息驱动POJ 阅读全文
摘要:
一、Websocket介绍 WebSocket协议,RFC 6455,提供了一种标准化的方法,通过单个TCP连接在客户端和服务器之间建立一个全双工双向通信通道,它是一种不同于HTTP的TCP协议,但被设计用于HTTP之上,使用端口80和443并允许重用现有的防火墙规则。 WebSocket交互从HT 阅读全文
摘要:
一、Hibernate 从Spring Framework 5.0开始,Spring需要Hibernate ORM 4.3或更高版本来支持JPA,甚至需要Hibernate ORM5.0+来针对本机Hibernate会话API进行编程。请注意,Hibernate团队不再维护5.1之前的任何版本。 引 阅读全文
摘要:
前言 需要引入Spring JDBC模块 <!--Spring JDBC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.ver 阅读全文
摘要:
全面的事务支持是使用Spring框架的最有说服力的原因之一。Spring框架为事务管理提供了一致的抽象,它提供了以下好处: 跨不同事务API的一致编程模型,如Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API (JPA)。 支 阅读全文
摘要:
一、什么是AOP 面向切面编程(AOP) 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。 从该图可以很形象地看出,所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。 为什么需要AOP 想象下面的场 阅读全文
摘要:
一、Spring IoC简单介绍 IoC 概念 应用控制反转,对象在创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。 控制反转(Inversion of Cont 阅读全文
摘要:
Spring也有自己的EL,叫Spring Expression Language,简称SpEl。其可以在程序中单独使用,也可以在Spring应用中进行bean定义时使用。其核心是org.springframework.expression.Expression接口,Spring使用该接口来表示EL 阅读全文
摘要:
Java标准的java.net.URL主要用于各种URL前缀的类和标准处理程序,但是不足以满足对低级资源的所有访问。例如,没有标准化的URL实现可以用来访问类路径或相对于ServletContext的资源。虽然可以为专门的URL前缀注册新的处理程序(类似于http:)等前缀的现有处理程序,但这通常相 阅读全文
摘要:
前面已经讲过,如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对.js,*.jpg的访问也就被拦截了。下面就讲一讲在注解版中怎么解决这个问题呢? webapp的目录结构 index.jsp内容: <%@ page contentType="text/html;charse 阅读全文
摘要:
一、创建Maven项目 配置webapp(SpringMVC) 选中这个之后出现这个页面(设置web资源的目录,也就是我们属性的webapp所在的位置,它默认的位置并不正确,所有我们要修改一下),修改为 src\main\webapp(没有这个文件夹就新建) 因为我们现在搭建的注解版,所以就不需要w 阅读全文
摘要:
如果你的DispatcherServlet拦截 .do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对.js,*.jpg的访问也就被拦截了。 问题原因:罪魁祸首是web.xml下对spring的DispatcherServl 阅读全文
摘要:
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。与之 阅读全文
摘要:
一、Spring的事务管理方式 事务管理对于企业应用来说是至关重要的,当出现异常情况时,它也可以保证数据的一致性。 Spring事务有两种管理方式:编程式事务和声明式事务 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于 阅读全文
摘要:
一、JdbcTemplate Spring对数据库的操作在jdbc上面做了深层次的封装,提供了一个 Jdbc Template 类,我们可以直接使用。只需要把DataSource注册到JdbcTemplate之中,其全限定命名为org.springframework.jdbc.core.JdbcTe 阅读全文
摘要:
diamond operator java7 引入了diamond operator(钻石操作符) 用于简化泛型。 以前我们需要这么写: Map<String,List<String>> anagrams = new HashMap<String,List<String>>(); 现在可以这样写: 阅读全文
摘要:
一、传统的JDBC编程 JDBC 我们一定不陌生,刚开始学习的时候,我们写过很多很多重复的模板代码。 pom.xml <!-- mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artif 阅读全文
摘要:
如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用。 一、AOP介绍 AOP即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。 所谓的 阅读全文
摘要:
使用 XML 装配 Bean 需要定义对应的 XML,这里需要引入对应的 XML 模式(XSD)文件,这些文件会定义配置 Spring Bean 的一些元素,当我们在 IDEA 中创建 XML 文件时,会有友好的提示: 一个简单的 XML 配置文件如下: <?xml version="1.0" en 阅读全文
摘要:
一、Spring IoC介绍 IoC - Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。 若要使用某个对象,只需要从 Spring 容器中获取需要使用的对象,不关心对象的创建过程,也就是把 阅读全文
摘要:
一、类加载机制 类是在运行期间动态加载的。 1. 什么是类加载 类的加载指的是将类的.class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Cl 阅读全文
摘要:
一、PC端UI框架 EAdmin EAdmin是一款开箱即用的后台框架,提供丰富的组件和完全的异步加载机制,无需任何打包环境即可体验整个后台。 官网:http://www.eadmin.com.cn/ QucikUI QucikUI 4.0是一套完整的企业级web前端开发解决方案,由基础框架、UI组 阅读全文
摘要:
Html List sub item List sub item List sub item Css List sub item List sub item List sub item JavaScript List sub item List sub item List sub item jQue 阅读全文
摘要:
Java 之所以可以“一次编译,到处运行”,一是因为 JVM 针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class 文件)供 JVM 使用。 .class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项严格按照顺序紧凑地排列在 .clas 阅读全文
摘要:
一、内存简介 物理内存和虚拟内存 所谓物理内存就是通常所说的 RAM(随机存储器)。 虚拟内存使得多个进程在同时运行时可以共享物理内存,这里的共享只是空间上共享,在逻辑上彼此仍然是隔离的。 内核空间和用户空间 一个计算通常有固定大小的内存空间,但是程序并不能使用全部的空间。因为这些空间被划分为内核空 阅读全文
摘要:
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中提供了低层次的网络通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。 java.net 包中提供了两种常见的网络协议的支持: TCP - TCP 是传输控制协议的缩写,它保障 阅读全文
摘要:
新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的,弥补了原来的 I/O 的不足,提供了高速的、面向块的 I/O。 一、NIO简介 NIO 是一种同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO 框架,对应 java.nio 包,提供了 Channel 、Selector 阅读全文
摘要:
一、File类 File类是java.io包中唯一对文件本身进行操作的类。它可以进行创建、删除文件等操作。 1. 创建文件 可以使用 createNewFille() 创建一个新文件。 注意: Windows 中使用反斜杠表示目录的分隔符"\"。 Linux 中使用正斜杠表示目录的分隔符"/"。 最 阅读全文
摘要:
一、CountDownLatch 字面意思为 递减计数锁。用于控制一个或者多个线程等待多个线程。 CountDownLatch 维护一个计数器 count,表示需要等待的事件数量。countDown 方法递减计数器,表示有一个事件已经发生。调用 await 方法的线程会一直阻塞直到计数器为零,或者等 阅读全文
摘要:
不考虑多线程并发的情况下,容器类一般使用 ArrayList、HashMap 等线程不安全的类,效率更高。在并发场景下,常会用到 ConcurrentHashMap、ArrayBlockingQueue 等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。 上面提到的线程安全容器都在 java. 阅读全文
摘要:
一、并发锁简介 确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性的,线程安全的。 可重入锁 可重入锁又名递归锁,是指 同一个线程在外层方法获取了锁,在进入内层方法会自动获 阅读全文
摘要:
一、原子变量类简介 为何需要原子变量类 保证线程安全是 Java 并发编程必须要解决的重要问题。Java 从原子性、可见性、有序性这三大特性入手,确保多线程的数据一致性。 确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可 阅读全文
摘要:
一、J.U.C简介 Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具类,是 Java 并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中)。从功能上,大致可以分为: 原子类 - 如:AtomicInteger、AtomicIntege 阅读全文