自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 junit单元测试

单元测试单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。可以说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。为

2017-06-26 21:49:37 808

原创 java单元测试——JUnit4Hamcrest

Hamcrest一句话,如果你写单元测试,就应该用Hamcrest。如今不写单元测试,你都不好意思说自己在做工程项目了。但你一般这么写断言呢?如果你还写成下面这样,我只能说你落伍了:  assertEquals(a, b);请告诉我,哪个是执行结果,哪个是预期结果,不管你是怎样,反正大多数情况下,我是记不住的。所以,这个在只重功能不重可读性年代产生的AP

2017-06-26 20:59:42 772

原创 JDK中有关23种设计模式

下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()

2017-06-26 10:59:43 947 1

翻译 jQuery文件上传——blueimp.github.io/jquery-File-Upload中文

jQuery File Upload jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。地址http://blueimp.github.com/jQuery-File-Upload/特点Multiple file

2017-06-23 11:45:00 1907

原创 代理模式——动态代理(实例)

接口/** * * Filename: AbstractUserDAO.java * Description: 接口:定义代理类和真实类需要对外提供的服务 * Copyright: Copyright (c) 2016 All Rights Reserved. * Company: * * @author: Leesire * @version:

2017-06-19 16:53:54 561

原创 代理模式——动态代理(自己写一个)

思路难点:proxy类,它的作用就是帮我们产生代理类。将所有方法代码拼接成字符串。将生成代理类的代码拼接成字符串(包含所有方法拼接成的字符串)。将此字符串写入文件中、并使用JavaComplier对它进行编译。将编译好的文件load进内存供我们使用,并返回代理实例。Proxy代码:public class Proxy { pu

2017-06-19 16:48:58 984

原创 设计模式——静态代理

代理模式这里不过多解释:具体解释请看:设计模式——动态代理 代码接口:/** * * Filename: IDBQuery.java * Description: IDBQuery 是主题接口,定义代理类和真实类需要对外提供的服务,定义了实现数据库查询的公共方法 request() 函数 * Copyright: Copyrig

2017-06-19 16:23:21 479

原创 Spring AOP解析

前言强烈建议学习代理模式——动态代理(JDK代理模式实现)。推荐文章:代理模式——动态代理AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许

2017-06-19 15:53:04 410

转载 Maven学习 (六) 搭建多模块企业级项目

转载地址:http://www.cnblogs.com/quanyongan/archive/2013/05/28/3103243.html  首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目。好了,废话不多说,具体如下:首先新建一个maven项目,pom.xml的文件如下:搭建多

2017-06-13 13:39:34 530

转载 java事务异常——Spring事务异常回滚,捕获异常不抛出就不会回滚

最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了.......    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志。但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚。  例:     类似这样的方法不会回滚 (一个方法出错,另一个方法不会回滚) :  [html] view p

2017-06-07 22:52:01 33981 4

转载 Java事务(8)——分布式事务(Spring+JTA+Atomikos+Hibernate+JMS)

在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。   本地事务和分布式事务的区别在于:本地事务只用于处理单一数据源事务(比如单个数据库),分布式事务可以处理多种异构的数据源,比如某个业务操作中同时包含了JDBC和JMS或者某个操作需要访问多个不同的数据库。   Java通过JTA完成分布式事务,JTA本身只是一种规范

2017-06-07 17:16:37 703

转载 Java事务(7)——使用Transactional注解

在本系列的上一篇文章中,我们讲到了使用动态代理的方式完成事务处理,这种方式将service层的所有public方法都加入到事务中,这显然不是我们需要的,需要代理的只是那些需要操作数据库的方法。在本篇中,我们将讲到如何使用Java注解(Annotation)来标记需要事务处理的方法。   首先定义Transactional注解:package davenkin.ste

2017-06-07 17:15:31 1420

转载 Java事务(6)——使用动态代理(Dynamic Proxy)

在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在service层中声明一个TransactionTemplate。在本篇文章中,我们将使用Java提供的动态代理(Dynamic Proxy)功能来完成事务处理,你将看到无论是在service层还是DAO层

2017-06-07 17:14:44 728

转载 Java事务(5)——Template模式

在本系列的上一篇文章中,我们讲到了使用TransactionManger和ConnectionHolder完成线程安全的事务管理,在本篇中,我们将在此基础上引入Template模式进行事务管理。   Template模式大家应该都很熟悉,比如Spring就提供了许多Template,像JdbcTemplate和JmsTemplate等。Template模式的基本思想是:在超类里将完

2017-06-07 17:13:52 597

转载 Java事务(4)——成功的案例

在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的。在本篇文章中,我们将引入另外一种机制(ConnectionHolder)来完成事务管理。   ConnectionHolder的工作机制是:我们将Connection对象放在一个全局公用的地方,然后在不同的操作中

2017-06-07 17:12:29 888

转载 Java事务(3)——丑陋的案例

在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connection对象,所以不同DAO中的操作不在同一个事务里面,从而导致事务失败。从中我们得出了教训:要避免这种失败,我们可以使所有操作共享一个Connection对象,这样应该就没有问题了。

2017-06-07 17:11:27 494

转载 Java事务(2)——失败的案例

在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例。  BankService的功能为:某个用户有两个账户,分别为银行账户和保险账户,并且有各自的账户号,BankService的transfer方法从该用户的银行账户向保险账户转帐,两个DAO分别用于对两个账户表的存取

2017-06-07 15:08:53 486

原创 java事务(1)——Java事务处理的基本问题

Java中的事务处理有多简单?在使用EJB时,事务在我们几乎察觉不到的情况下发挥着作用;而在使用Spring时,也只需要配置一个TransactionManager,然后在需要事务的方法上加上Transactional注解就行了。Java的事务处理之所以这么简单是因为框架在背后为我们做了太多的工作。这样,我们虽然可以快速地完成开发工作,但是一旦程序出现问题,在一阵google和stackoverf

2017-06-07 14:59:11 860

转载 分布式事务不再适用于微服务架构

传统应用使用本地事务和分布式事务保证数据一致性,但是在微服务架构中数据都是服务私有的,需要通过服务提供的API来访问,所以分布式事务不再适用微服务架构。那么微服务架构又该如何保证数据一致性呢?本文就来谈谈这个话题。传统分布式事务不是微服务中数据一致性的最佳选择微服务架构中应满足数据最终一致性原则微服务架构实现最终一致性的三种模式对账是最后的终极防

2017-06-07 14:49:17 827

原创 架构名词解释

—分布式——微服务—分布式只是把东西分散部署,是一个比较笼统的概念。微服务一般都是分布式的,而微服务更强调敏捷和健壮,他的边界应该更加清晰,包括你部署的程序和数据都应该独立,这里可能借助docker。微服务要处理好服务的发布,发现。微服务真正做得好,还是难,数据分布还是制约了事务的强一致或者实时性。—一体式—目

2017-06-07 14:46:10 948

转载 jhipster微服务--简单demo

简介jhipster简单来说是一个基于nodejs+yeoman的java代码生成器。往大了说是基于java的一套微服务解决方案。请注意是一整套的微服务解决方案。jhipster在整个程序架构上都做好了整合,包括前端mvvm框架(angularjs),前端构建工具(gulp)到后端的微服务框架(spring cloud)和hibernate/mongodb,再到单元测试/ui测试。毫不客气

2017-06-07 14:32:19 2344

转载 多线程——详细总结

写在前面的话:此文只能说是Java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕。你将会对Java里头的高并发场景下的线程有更加深刻的理解。目录

2017-06-05 17:06:46 534

转载 前后端分离项目的技术与框架通用方案

摘要:本文是关于前后端分离项目的技术与框架选型通用方案,是一个比较成熟的方案。目前大部分公司也是采用这个体系。一、系统架构    整个系统会由三部分组成,如下二、细节1、前端前端这里是一个纯前端的项目,使用webpack打包后就只有一些js/css等静态文件。开发语言与框架vue+webpakc+axios部署

2017-06-05 16:55:18 16292 1

转载 微服务架构模式简介

在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书《Building Microservices》。该书描述了如何按照Microservice架构模式设计及搭建一个具有良好扩展性并可持续开发的系统。除此之外,该书还将基于该模式的系统演化流程与Continuous Delivery等当前甚为流行的开发流程结合在了一起,使得Micro

2017-06-05 14:30:23 1229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除