Iterator 迭代器模式

Iterator 迭代器模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示。
把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。

1.2. 自我理解

面向Iterator接口编程,无论底层的数据结构和迭代算法如何变化,调用者都不用修改代码

1.3. 迭代器的组成

迭代器(Iterator):迭代器定义访问和遍历元素的接口。
具体迭代器(Conc[……]

Read more

Adapter 适配器模式

Adapter 适配器模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。

1.2. 自我理解

由于现在技术选型越来越多,比如说数据存储方面:传统的MySQL、Oracle及现在的大数据框架HBase、ElasticSearch、Redis等。
各个框架的增删改查的API是各不一样。 然后开发人员或许对大数据框架不熟悉,操作起来极不方便,这时可以用适配器来封装。
开发人员无需知道底层的具体增删改查操作,只需调用对应封装的方法即可。
例如下面的MySQL、HB[……]

Read more

Mybatis generator

概述

简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。

支持基本的增删改查,以及QBC风格的条件查询。

但是表连接、存储过程等这些复杂sql的定义需要我们手工编写

• 官方文档地址 http://www.mybatis.org/generator/

• 官方工程地址 https://github.com/mybatis/generator/releases

pom.xml 配置

generatorConfig.xml 配置

配置 gen[......]

Read more

Maven profiles + 资源过滤,多环境自动适配

概述

在项目开发时,会有各种开发环境,mac、linux、windows,然后开发环境、测试环境、预发布环境、生产环境,各个数据库等都不一样。
那么不可能每次发布时都要去修改对应的数据库配置,等其他相关配置。
可以用 maven 的 profiles 来实现不同环境的相关配置。

使用

1、在项目中创建下面几个文件,并在中填写自己的配置 key=value

src/main/filters/filter-dev.properties
src/main/filters/filter-test.properties
src/main/filters/filter-production.pro[……]

Read more

Maven 插件说明

Surefire 自动化运行单元测试

功能

1、能够指定通配符过滤需要测试的类和排除的类,非常友好的结合Junit;
2、能够生成测试报告,包含测试覆盖率、分支覆盖率(if else)
单元测试覆盖率是什么意思?
比如说,你总共写了100行代码,然后你写了3个单元测试方法,结果这3个单元测试的方法会执行你的100行代码中的80行,另外有20行代码是无论运行哪个单元测试都不会执行的。此时单元测试覆盖率就是80 / 100,80%

一般单元测试覆盖率,要求的是,两种,方法覆盖率,行覆盖率。比如你一共写了10个方法,100行代码
方法覆盖率要达到90%,那么要求就是至少对10个方法中的9个方法[……]

Read more

Maven 多模块工程开发配置

1. 多模块工程搭建步骤

1、创建一个 maven-web-parent 父工程,在其 pom.xml 中修改以下内容:

2、创建一个 maven-web-admin 子工程,在其 pom.xml 中修改以下内容:

3、直接把 maven-web-admin 移动到 maven-web-parent 文件夹下,并在 maven-web-parent 下运行 mvn clean install 来构建多模块工程。

2. 多模块工程 jar 包管理[……]

Read more

Maven 配置私服仓库或者私服镜像

1. 概述

在默认的情况下,maven 下载任何jar包默认都是走国外的的中央仓库地址 https://mvnrepository.com,那么限于网速非常慢,需要配置中央仓库或者私服地址。

2. 私服仓库配置

如果自己搭建了Nexus私服,那么可以在 $M2_HOME/conf/settings.xml 中配置。

2.1. profiles

<profiles></profiles> 中加入以下配置,记得 url 改成公司自己的私服地址,或者是阿里云 http://maven.aliyun.com/nexus/content/groups/[......]

Read more

Maven发布项目打包至私服

概述

在多模块开发中,如果使用的IDE是Eclipse,并且模块中需要相互依赖,那么就需要借助私服来打包发布。

1、 发布仓库配置

修改pom.xml

2、 部署专用账号的配置

但是nexus仓库对于普通的匿名用户是只读的,也就是说,只能下载依赖,不能部署发布包,因此如果要能够部署发布包,还需要在 settings.xml 文件里通过 <servers> 元素配置使用专用的部署用户,来通过认证,进行发布包的部署。

需要在 $M2_HOME/conf/settings.xml 中配置:

[cra[……]

Read more

Maven pom.xml配置

Maven安装

Maven内存调整

Linux环境

vi $M2_HOME/bin/mvn
MAVEN_OPTS 后面加上 -Xms128m -Xmx512m
调整后如下:
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS -Xms128m -Xmx512m"

测试调整结果 mvn help:system
如下图

私服修改

pom.xml 参数说明

pom.xml文件是一个项目最核心的maven配置文件,包含了大量的信息,maven正是基于这里的配置信息来对工程[……]

Read more

Nexus 私服仓库

说明

Nexus 安装完成之后自带4个Maven仓库

maven-central

maven-central:这是maven中央仓库的代理仓库

maven-releases

maven-releases:该仓库是个宿主仓库,用于部署公司内部的release版本的发布包(类似于1.0.0,,release的意思就是你的工程已经经过了完善的测试,单元测试,集成测试,QA测试,上生产环境使用了)到这个仓库里面,供其他同事在生产环境依赖和使用

maven-snapshots

maven-snapshots:该仓库是个宿主仓库,用于部署公司内部的snapshot版本的发布包到这个仓库里([……]

Read more