0%

分布式全局序列

由于Mycat进行分表操作,为了保证整个表的不同分片中的id要全局唯一,所以不可以使用mysql的自增id,那么如何进行全局序列的生成

Mycat提供了三种生成全局序列的方式,本地文件、数据库方式、时间戳方式

在server.xml中配置sequnceHandlerType

1
2
<!-- 指定使用Mycat全局序列的类型。0为本地文件方式,1为数据库方式,2为时间戳序列方式 -->
<property name="sequnceHandlerType">1</property>

本地文件

Mycat将序列号配置到文件中,当使用序列号中的配置后,Mycat会更新classpath中sequence_conf.properties文件中sequence当前的值

阅读全文 »

maven资源管理

配置文件

在maven中可以将配置文件中引用的maven中的属性值进行属性过滤,替换属性值
<build>中添加<resources>进行属性文件过滤,替换属性值
resources中定义那些目录下的文件会被配置文件中定义的变量替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<resources>
<resource>
<!-- 编译之后文件移动到的位置 -->
<targetPath></targetPath>
<!-- 属性文件所在目录,表示src/main/resources下的所有properties文件中的变量都会替换 -->
<directory>
src/main/resources
</directory>
<!-- 如果filtering是false表示不会进行替换 -->
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
<resources>
阅读全文 »

maven属性

maven的六类属性

内置属性

${basedir}表示根目录(含有pom.xml的文件目录)

${version} 项目版本

POM属性

${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java
${project.build.testSourceDirectory}:项目的测试源码目录,默认为src/test/java
${project.build.directory}:项目构建输出目录,默认为target/
${project.outputDirectory}:项目主代码编译输出目录,默认为target/classes/
${project.testOutputDirectory}:项目测试代码编译输出目录,默认为target/test-classes/
${project.groupId}:项目的groupid
${project.artifactId}:项目的artifactid
${project.version}:项目的version,等价于${version}
${project.build.finalName} 项目打包的名称,默认为${project.artifactId}-${project.version}

阅读全文 »

maven依赖版本管理

可以在父项目中使用来进行版本管理,这样各个子模块在添加依赖时就不需要添加版本了,保证了各个子模块的依赖版本一致,减少版本冲突

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- 引入spring cloud的依赖,主要用来管理Spring Cloud生态各组件的版本 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 引入spring boot的依赖,主要用来管理Spring boot组件的版本 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.24</version>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

maven私服

可以使用Nexus仓库管理器搭建maven私服,该页面默认用户和密码为admin/admin123

Nexus内置仓库

Nexus有四种类型的仓库:group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟)。

Nexus仓库类型

其流程为,Maven可以直接从宿主仓库下载构件;Maven也可以从代理仓库下载构件,而代理仓库会间接从远程仓库下载并缓存构件;为了方便,Maven可以从仓库组下载构件,而仓库组没有实际内容,会转向其包含的宿主仓库或者代理仓库获得实际构件的内容

其内置仓库为

  • Maven Central:该仓库代理maven中央仓库,策略为Release,只会下载和缓存中央仓库中的发布版本构件
  • Releases:策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件
  • Snapshots:策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件
  • 3rd party:策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件
  • Apache Snapshots:策略为Snapshot的代理仓库,用来代理Apache Maven仓库的快照版本构件
  • Codehaus Snapshots:策略为Snapshot的代理仓库,用来代理Codehaus Maven仓库的快照版本构件
  • Google Code:策略为Release的代理仓库,用来代理Google Code Maven仓库的发布版本构件
  • java.net:策略为Release的代理仓库,用来代理jave net Maven仓库的发布版本构件
  • Public Repositories:该仓库将上述所有策略为Release的仓库聚合合并通过一致的地址提供服务
  • Public Snapshot Repositories:该仓库将上述所有策略为Snapshot的仓库聚合合并通过一致的地址提供服务

配置

download remote indexes 改为true

group组仓库 仓库的合集 按照配置的顺序找jar包
- proxy代理仓库1 ——url1 type为proxy
- proxy代理仓库2 ——url2
- hosted宿主仓库 mvn deploy会提交到hosted仓库中
- snapshot部署仓库
- release部署仓库
- 第三方jar包仓库 third party/3rd party

Virtual虚拟仓库,用于适配其他类型的仓库,比如maven要兼容maven1、maven2等

阅读全文 »