摘要:git 记住用户名和密码 在使用 git 时,如果用的是 HTTPS 的方式,则每次提交,都会让输入用户名和密码,久而久之,就会感觉非常麻烦,那么该如何解决呢? 1. 使用 SSH,添加 ssh key。 2. 在全局中存储用户的账号密码,方式如下 第一步:在 %HOME% 目录中,创建 .git
阅读全文
摘要:Maven 编写插件 Maven 的任何行为都是由插件完成的,包括项目的清理、绵编译、测试以及打包等操作都有其对应的 Maven 插件。每个插件拥有一个或者多个目标,用户可以直接从命令行运行这些插件目标,或者选择将目标绑定到 Maven 的生命周期。 大量的 Maven 插件可以从 Aapche 获
阅读全文
摘要:Maven 灵活的构建 一个优秀的构建系统必须足够灵活,它应该能够让项目在不同的环境下都能成功地构建。例如,典型的项目都会有开发环境、测试环境和产品环境,这些环境的数据库配置不尽相同,那么项目构建的时侯就需要能够识别所在的环境并使用正确的配置。还有一种常见的情况是,项目目开发了大量的集成测试,这些测
阅读全文
摘要:Maven 版本管理 Maven 版本(alpha,beta等)的解释 一个健康的项目通常有一个长期、合理的版本演变过程。例如 Maven 本身的版本也比较多,如最早的 Maven1;Maven2 有 2.0.9、2.0.10、2.1.0、2.2.0、2.2.1 等各种版本;而最新的 Maven3
阅读全文
摘要:7. Maven 使用Nexus创建私服 私服不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的 Maven 仓库。通过建立自己的私服,就可以降低中央仓库负荷、节省外网带宽、加速 Maven 构建、自己部署构件等,从而高效地使用 Maven。 有三种专门的 Maven 仓库管理软件可以用来帮
阅读全文
摘要:Maven 聚合和继承 1. 聚合 2. 继承 正确设置 relativepath 非常重要。考虑这样一个情况,开发团队的新成员从源码库签出一个包含父子模块关系的 Maven 项目。由于只关心其中的某一个子模块,它就直接到该模块的目录下执行构建,这个时候,父模块是没有被安装到本地仓库的,因此如果子模
阅读全文
摘要:Maven 生命周期和插件 除了坐标、依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件。在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package 就表示执行默认生命周期阶段 package。 Maven 的生命周期是抽象的,其实际行为都由插件来完
阅读全文
摘要:Maven 仓库 在 "Maven 坐标与依赖" 中详细介绍了 Maven 坐标和依赖,坐标和依赖是任何一个构件在 Maven 世界中的逻辑表示方式;而构件的物理表示方式是文件, Maven 通过仓库来统一管理这些文件。本章将详细介绍 Maven 仓库,在了解了 Maven 如何使用仓库之后,将能够
阅读全文
摘要:Maven 坐标与依赖 Maven 的一大功能是管理项目依赖。为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标。本章将详细分析 Maven 坐标的作用,解释其每一个元素;在此基础上,再介绍如何配置 Maven,以及相关的经验和技巧,以
阅读全文
摘要:Maven 入门使用 1. Maven 项目工程目录约定 2. 常用的 Maven 命令 (1) compile compile 是 Maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。 (2) test test 是 Ma
阅读全文
摘要:Maven 安装与配置 1. Maven 介绍 Maven 翻译为 “专家”,“内行”。Maven 是 Apache 下的一个纯 Java 开发的开源项目,它是一个项目管理工具,使用 Maven 对 Java 项目进行构建、依赖管理。 1.1 什么是项目构建 项目构建是一个项目从编写源代码到编译、测
阅读全文
摘要:OSGi karaf scheduler karaf 中提供了定时任务管理,只需安装 即可,然后在 karaf 容器中发布 org.apache.karaf.scheduler.Job 服务,具体见 "4.19. Scheduler" 1. 环境准备 2. 编写定时任务 在 OSGI INF/blu
阅读全文
摘要:karaf maven plugin 1. 配制 karaf 启动时加载 bundle 项目中需要在 karaf 中集成 cxf dosgi discovery distributed 特性,所以需要在 karaf 开启时启动 cxf dosgi discovery distributed 的 fe
阅读全文
摘要:Maven 发布自己的项目到 Maven 中央仓库 可能很多人都在用 Maven 仓库,但是如果要问怎么发布项目到中央仓库,估计很多人都不知道了,下面本篇文章带大家往中央仓库发布一个自己的 Maven 项目。 大致步骤 在 Sonatype 提出 Issue 申请 注册 Sonatype 的账户。地
阅读全文
摘要:Maven系列(二)exec maven plugin 1. mvn 命令行运行 2. exec:java exec 主要由两个 goal 组成:exec:exec 和 exec:java。你应该如何选择呢? 首先,你需要记住,exec:exec 总是比 exec:java 强大而灵活 此外,两者的
阅读全文
摘要:Maven系列(一)plugin maven compiler plugin 使用 命令,出现错误: 编码 GBK 的不可映射字符而不能编译。这是因为代码或注释中存在中文引起的,一般在 IDE 中会自动处理编译时的字符集,就不会碰到这个错误。这个错误是在生成代码后,其中自动加上了中文注释,手动删除中
阅读全文
摘要:OSGi 系列(十八)之 基于注解的 Blueprint 1. 注解实现 blueprint 第一步:bundle 添加 Bundle Blueprint Annotation 第二步:karaf 要安装以下 4 个 bundle: 注意 karaf 4.1.5 上要重启 aries bluepri
阅读全文
摘要:Java 8 可重复注解与类型注解 Java 8 对注解处理提供了两点改进:可重复的注解及可用于类型的注解。 注解具体使用如下: Java 8 新特性 1. "Java 8 Lambda 表达式" 2. "Java 8 Stream API" 3. "Java 8 Optional 类深度解析" 4
阅读全文
摘要:Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称“默认方法”,默认方法使用用 default 关键字修饰。 接口默认方法的 "类优先" 原则 若一个接口中定义了一个默认方法,而另外一个父类或接口又定义了一个同名的方法时: 1. 选择父类中的
阅读全文
摘要:Java 8 新日期时间 API 1. LocalDate、LocalTime、LocalDateTime LocalDate、LocalTime、LocalDateTime 实例是不可变的对象,分别表示使用 ISO 8601 日历系统的日期、时间、日期时间。它们提供简单的日期或时间,并不包含当前的
阅读全文
摘要:Java 8 Stream API JDK8 中有两大最为重要的改变。第一个是 Lambda 式;另外 Stream API(java.util.stream. ) Stream 是 JDK8 中处理集合的关键抽象概念,可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。简
阅读全文
摘要:Java 8 Lambda 表达式 1. Lambda 表达式的基础语法 jdk8 中引入了一个新的操作符 " " 该操作符称为箭头操作符或 Lambda 操作符 箭头操作符将 Lambda 表达式拆分成两部分: 左侧:Lambda 表达式的参数列表 右侧:Lambda 表达式中所需执行的功能, 即
阅读全文
摘要:OSGi 系列(十二)之 Http Service 1. 原始的 HttpService (1) 新建 web osgi 工程,目录结构如下: (2) HomeServlet (3) Activator (4) karaf 测试: 先测试 http.registerServlet() 注册方式 注意
阅读全文
摘要:OSGi 系列(十三)之 Configuration Admin Service OSGi 的 CM 就是 Configuration Admin Service,是用于管理 Bundle 属性、并在属性发生变更时通知相应的 Service,这是保持 OSGi 动态性的很关键的一个服务。 1. Co
阅读全文
摘要:OSGi 系列(十四)之 Event Admin Service OSGi 的 Event Admin 服务规范提供了开发者基于发布/订阅模型,通过事件机制实现 Bundle 间协作的标准通讯方式。 事件发布者使用 Event Admin 服务发送基于主题 (Topic) 的事件,任何对某一主题感兴
阅读全文
摘要:OSGi 系列(十六)之 JDBC Service compendium 规范提供了 org.osgi.service.jdbc.DataSourceFactory 服务 1. 快速入门 1.1 环境准备 1.2 获取连接 1.3 OSGI INF/blueprint 下配制 blueprint.x
阅读全文
摘要:OSGi 系列(十)之 "Blueprint" "blueprint" 是 OSGi 的一个规范,类似于 spring 的 IOC,用来处理 OSGi 的动态特性,可以大大简化服务的使用。 blueprint 是以 xml 文档来构建应用,但它也有采用 Annotation 的方式,我们在此只介绍
阅读全文
摘要:OSGi 系列(七)之服务的监听、跟踪、声明等 1. OSGi 服务的事件监听 和 bundle 的事件监听类似,服务的事件监听是在服务注册、注销,属性被修改的时候,OSGi 框架会发出各种不同的事件供事先注册好的事件监听器处理。 1.1 服务的事件监听简介 服务的事件类型: 事件名称 | 描述 |
阅读全文
摘要:OSGi 系列(六)之服务的使用 1. 为什么使用服务 降低服务提供者和服务使用者直接的耦合,这样更容易重用组件 隐藏了服务的实现细节 支持多个服务的实现、这样你可以互换这实现 2. 服务的使用 2.1 服务的注册 bundle 通过在框架的服务注册中心注册一个服务对象来发布一个服务。安装在 OSG
阅读全文
摘要:OSGi 系列(三)之 bundle 事件监听 bundle 的事件监听是在 bundle 生命周期的不同状态相互转换时,OSGi 框架会发出各种不同的事件供事先注册好的事件监听器处理。 1. 事件监听器 事件名称 | 描述 | 事件值 | | INSTALLED | Bundle 被成功安装 |
阅读全文
摘要:OSGi 系列(三)之 bundle 详解 1. 什么是 bundle bundle 是以 jar 包形式存在的一个模块化物理单元,里面包含了代码,资源文件和元数据(metadata),并且 jar 包的物理边界也同时是运行时逻辑模块的封装边界。 2. MANIFEST.MF 规范 位置:META
阅读全文
摘要:OSGi 系列(二)之 Hello World 之前曾介绍过 "OSGi 是什么" ,下面将继续上篇介绍的内容,讲述一个简单的 OSGi Bundle:Hello World 是如何开发的。 在 OSGi 中,软件是以 Bundle 的形式发布的。一个 Bundle 由 Java 类和其它资源构成,
阅读全文
摘要:OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统 OSGi 的核心:模块化、动态。基于 OSGi 就可以模块化的开发 java 应用,模块化的部署 java 应用,还可以动态管理模块。 OSGi(Open Service Gateway Initiative) 技术是 Java
阅读全文
摘要:Mina 系列(四)之KeepAliveFilter 心跳检测 摘要: 心跳协议,对基于CS模式的系统开发来说是一种比较常见与有效的连接检测方式,最近在用MINA框架,原本自己写了一个心跳协议实现,后来突然发现MINA本身带有这样一个心跳实现,感于对框架的小小崇拜,在实践的同时研究了一下! MINA
阅读全文
摘要:Mina 系列(二)之基础 Mina 使用起来多么简洁方便呀,就是不具备 Java NIO 的基础,只要了解 Mina 常用的 API,就可以灵活使用并完成应用开发。 1. Mina 概述 首先,看 Mina 在项目中所处的位置,如下图: Mina 处于中间层,它不关心底层网络数据如何传输,只负责接
阅读全文
摘要:Mina 快速入门 引言 最近使用 Mina 开发一个 Java 的 NIO 服务端程序,因此也特意学习了 Apache 的这个 Mina 框架。 首先,Mina 是个什么东西?看下官方网站 (http://mina.apache.org/) 对它的解释: Apache 的 Mina(Multipu
阅读全文
摘要:Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些
阅读全文