精华内容
下载资源
问答
  • 支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下...

    1、Flyway简介

    Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。

    2、为什么使用FlyWay

    通常在项目开始时会针对数据库进行全局设计,但在开发产品新特性过程中,难免会遇到需要更新数据库Schema的情况,比如:添加新表,添加新字段和约束等,这种情况在实际项目中也经常发生。那么,当开发人员完成了对数据库更的SQL脚本后,如何快速地在其他开发者机器上同步?并且如何在测试服务器上快速同步?以及如何保证集成测试能够顺利执行并通过呢?

    假设以Spring Boot技术栈项目为例,可能有人会说,本地使用Hibernate自动更新数据库Schema模式,然后让QA或DEV到测试服务器上手动执行SQL脚本,同时可以写一个Gradle任务自动执行更新。

    其实,以上问题可以通过Flyway工具来解决,Flyway可以实现自动化的数据库版本管理,并且能够记录数据库版本更新记录,Flyway官网对Why database migrations结合示例进行了详细的阐述,有兴趣可以参阅一下。

    3、支持的数据库

    目前Flyway支持的数据库还是挺多的,包括:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix。

    4、Flyway常用命令

    4.1 Migrate

    Migrate是指把数据库Schema迁移到最新版本,是Flyway工作流的核心功能,Flyway在Migrate时会检查Metadata(元数据)表,如果不存在会创建Metadata表,Metadata表主要用于记录版本变更历史以及Checksum之类的。

    4.2 Clean

    Clean相对比较容易理解,即清除掉对应数据库Schema中的所有对象,包括表结构,视图,存储过程,函数以及所有的数据等都会被清除(慎用)

    4.3 Info

    Info用于打印所有Migrations的详细和状态信息,其实也是通过Metadata表和Migrations完成的,Info能够帮助快速定位当前的数据库版本,以及查看执行成功和失败的Migrations。下图很好地示意了Info打印出来的信息。

    4.4 Validate

    Validate是指验证已经Apply的Migrations是否有变更,Flyway是默认是开启验证的。

    Validate原理是对比Metadata表与本地Migrations的Checksum值,如果值相同则验证通过,否则验证失败,从而可以防止对已经Apply到数据库的本地Migrations的无意修改。

    4.5 Baseline

    Baseline针对已经存在Schema结构的数据库的一种解决方案,即实现在非空数据库中新建Metadata表,并把Migrations应用到该数据库。

    Baseline可以应用到特定的版本,这样在已有表结构的数据库中也可以实现添加Metadata表,从而利用Flyway进行新Migrations的管理了。

    4.6 Repair

    Repair操作能够修复Metadata表,该操作在Metadata表出现错误时是非常有用的。

    Repair会修复Metadata表的错误,通常有两种用途:

    移除失败的Migration记录,该问题只是针对不支持DDL事务的数据库。

    重新调整已经应用的Migratons的Checksums值,比如:某个Migratinon已经被应用,但本地进行了修改,又期望重新应用并调整Checksum值,不过尽量不要这样操作,否则可能造成其它环境失败。

    5、与SpringBoot集成

    pom.xml依赖

    org.flywaydb

    flyway-core

    5.0.7

    org.springframework.boot

    spring-boot-starter-jdbc

    mysql

    mysql-connector-java

    application.properties配置文件信息

    #SpringBoot2.0以后使用spring开头(如果已经配置数据源可以不用配置sprin#g.flyway.url,spring.flyway.user,spring.flyway.password)

    spring.flyway.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

    spring.flyway.user=root

    spring.flyway.password=root

    spring.flyway.enabled=true

    spring.flyway.check-location=true

    spring.flyway.locations=classpath:db/migration

    spring.flyway.validate-on-migrate=true

    spring.flyway.clean-on-validation-error=true

    spring.flyway.baseline-on-migrate=true

    其他属性含义如下图所示:

    在db/migration目录下创建需要更新的SQL,命名规则为

    配置完毕启动项目,启动日志中会出现类似如下信息,数据库会增加版本记录表,

    6、注意事项

    6.1 数据脚本的命名规则:

    V+版本号++脚本名称+后缀

    例如:V1.1__create_table.sql

    其中flyway.sql-migration-prefix配置前缀,默认V

    flyway.sql-migration-separator配置分隔符,默认

    flyway.sql-migration-suffix配置脚本后缀,默认.sql

    特别注意:V1__***.sql == V1.0__***.sql

    V1.1__***.sql == V1.1.0__***.sql

    所以配置时,最好设置显示递增的版本号,否则会报错

    6.2 基线版本号和脚本文件版本号的关系

    文件的版本号必须 > 基线初始版本号,否则不会执行你的脚本

    比如基线默认版本号为1,所以你的脚本版本号必须大于1,例如V1.1****

    6.3 脚本文件的特殊性:

    A 如果项目已经执行了过了某个脚本,那么这个脚本不能删除,也不能修改,否则在项目启动时会报错,删除了则是找不到以前执行的文件,修改了则是在对比checksum时报不一致。所以如果在sql脚本有问题,第一次跑没有成功,重新跑时,要么重新定义脚本的版本号,要么删除表schema_version的当前版本记录

    B 两个脚本的版本号应该严格不同,不能出现1中的特别注意项

    6.4 地雷配置项:

    flyway.clean-on-validation-error:这个配置项一定要小心了,如果配置为true,当你的sql脚本执行失败时,就会执行删除库中所有表的操作,即之前的clean操作,所以一定要慎重,慎重,慎重!!!

    6.5 Druid 与 Flyway 的冲突

    Flyway通过 SQL 脚本来执行数据库的建立与更新。当同时集成了 Druid 和 Flyway 之后,Druid 的 wall 防火墙极可能直接干预 SQL 脚本的操作,继而导致 Flyway 执行中断。在项目开发的过程中,配置了以下防火墙属性以放行 Flyway 的 SQL 操作。

    spring:

    datasource:

    druid:

    wall:

    config:

    variantCheck: false

    noneBaseStatementAllow: true

    commentAllow: true

    multiStatementAllow: true

    到此Flyway已经集成完毕,希望能够帮助到大家!

    展开全文
  • 集成开发,版本控制构建工具:eclipse, svn, maven 等 脚本语言:Perl,PHP, Ruby, Python, Groovy等 Java开发 Java语言基础:异常处理,泛型,reflection,annotation; Java基本类库:io, util Jav.

    程序设计和开发

    1. 数据结构和算法:常用数据结构,排序,检索等
    2. 面向对象编程、设计模式,掌握建模语言和建模工具:UML、MVC编程思想
    3. 高质量编码能力:重用性,低耦合,可扩展性,高性能,可维护性,安全性高
    4. 集成开发,版本控制,构建等工具:eclipse, svn, maven 等
    5. 脚本语言:Perl,PHP, Ruby, Python, Groovy等

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    Java开发

    1. Java语言基础:异常处理,泛型,reflection,annotation; Java基本类库:io, util
    2. Java高级特性和类库:class loader,bytecode,nio, juc 等
    3. Java多线程编程
    4. Java网络与服务器编程, TCP/IP协议
    5. 开源产品和技术
    6. JVM原理和调优

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    Web开发

    1. DNS,HTTP, Cookie, Mail,FTP, Proxy等协议
    2. Java Servlet API, Velocity/JSP等模板引擎
    3. 主流Web开发框架:Spring Framework,WebX,Struts等
    4. Web服务器部署和配置:Apache,Tomcat,JBoss,Jetty等
    5. 客户端代码编写:HTML/CSS/JS
    6. Web开发调试工具:Firebug等

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    数据库开发

    1. 数据库设计原则
    2. 数据库SQL和NOSQL的选型
    3. 常见的:mysql和oracle的掌握
    4. 常用的nosql的掌握:Redis、Memchache、MongoDb。
    5. 常见的数据库性能优化方案等

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    java开发框架与工具

    1. 常用的开发系统:spring、redis、memcached、activeMQ等的掌握
    2. 常用的web服务器:tomcat 、jboss等
    3. 构建工具:maven等

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    分布式架构设计与经验

    1. 分层的应用框架设计思想:SOA,事件驱动等
    2. 分布式系统原理:CAP,最终一致性,幂等操作等
    3. 大型网络应用结构:消息中间件,缓存,负载均衡,集群技术,数据同步
    4. 高可用,可容灾分布式系统设计能力
    5. 大容量数据存储和检索系统设计能力:数据库分区,NoSQL,搜索引擎等

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

     

    以上就是阿里P8架构师的技能,以上技能的要求重点都是精通,除了技能,还有就是面试了,以下是总结出来最全架构师题目,包含:微服务、数据库、分布式架构等。

    最全BAT架构师面试130题目

    想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

    答案领取方法:

    点赞+关注,点此免费获取!!!

    展开全文
  • 健康,可版本控制和可配置的默认值 支援工具 该插件支持Java,Kotlin和Android项目的各种静态分析工具: 请注意,工具的可用性取决于应用插件的项目。 有关更多详细信息,请参阅页面。 考虑中的工具 CPD (Dupl
  • 健康,可版本控制和可配置的默认值 支持工具 该插件支持Java,Kotlin和Android项目的各种静态分析工具: [不建议使用] [在Gradle 6.0中删除] 请注意,工具的可用性取决于应用插件的项目。 有关更多详细信息,请...
  • 如果不能运行,将ch07文件夹下的swt.jar加入构建路径,然后在运行中的JVM参数中加入-Djava.library.path="dll所在目录的绝对路径"即可。 也可以在命令行下直接运行该程序,假设ch07文件夹放在D盘跟目录。则在cmd下...
  • 本阶段课程涵盖Java开发流行的自动化构建工具:Maven,版本控制系统:SVN和Git,容器虚拟化技术:Docker,权限模型:RBAC,集成测试:Jenkins,微服务架构:SpringCloud等核心内容。旨在应对各种实际开发情况下的的各种...

    立即学习:https://edu.csdn.net/course/play/10458/232435?utm_source=blogtoedu

    微服务是一个个具体的服务,狭义来说可以认为是工程里的不同的module

    微服务架构是一种架构形式,强调整体,在于怎么将各个微服务组合到一起。

    展开全文
  • 本阶段课程涵盖Java开发流行的自动化构建工具:Maven,版本控制系统:SVN和Git,容器虚拟化技术:Docker,权限模型:RBAC,集成测试:Jenkins,微服务架构:SpringCloud等核心内容。旨在应对各种实际开发情况下的的各种...

    立即学习:https://edu.csdn.net/course/play/10458/232154?utm_source=blogtoedu

    索引结构:

    • BTree索引:

    • Hash索引:
    • full-text全文索引:
    • R-Tree索引:
    展开全文
  • Java虚拟机

    2018-01-20 13:22:29
    常见虚拟机监控故障处理工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译代码的优化,阐述了泛型、自动装箱拆箱、...
  • 虚拟机堆转储快照分析工具 / 84 4.2.6 jstack:Java堆栈跟踪工具 / 85 4.3 JDK的可视化工具 / 87 4.3.1 JConsole:Java监视管理控制台 / 88 4.3.2 VisualVM:多合一故障处理工具 / 96 4.4 本章小结 / 105 第5...
  • JAVA_Thinking in Java

    2011-12-02 17:58:15
    10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似...
  • Eclipse包含了支持Java语言的编辑器、构建工具、调试器、版本控制系统等功能。安装Eclipse非常简单,到Eclipse官方网站下载Eclipse IDE for Java EE Developers,然后解压到本地即可。这个版本的Ecli...
  • eladmin : 项目基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue 的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典数据权限管理,支持一键生成前后端代码,...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • Java资源包01

    2016-08-31 09:16:25
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包101

    2016-07-13 10:11:08
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    github-java-api 是 Github 网站 API 的 Java 语言版本java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
  • Jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的)主要...通常版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java二进制IO类文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • java 编程入门思考

    2012-03-30 17:50:08
    10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似...
  • 一、jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)...通常版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。 二、CI/CD是什么?...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 269
精华内容 107
关键字:

java版本控制与构建工具

java 订阅