Java Swagger memo

服务

pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

Swagger2.java:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;


@Configuration
@EnableSwagger2
public class Swagger2 {

    /**
     * 创建API应用
     * apiInfo() 增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     * 本例采用指定扫描的包路径来定义指定要建立API的目录。
     *
     * @return
     */
    @Bean
    public Docket createRestApi() {
        ParameterBuilder ticketPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();
        ticketPar.name("X-AUTH").description("token")
                .modelRef(new ModelRef("string"))
                .parameterType("header")
                .required(false)
                .build();
        pars.add(ticketPar.build());

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.user.controller"))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts());
    }


    private List<ApiKey> securitySchemes() {
        List<ApiKey> apiKeyList= new ArrayList();
        apiKeyList.add(new ApiKey("X-AUTH", "X-AUTH", "header"));
        return apiKeyList;
    }

    private List<SecurityContext> securityContexts() {
        List<SecurityContext> securityContexts=new ArrayList<>();
        securityContexts.add(
                SecurityContext.builder()
                        .securityReferences(defaultAuth())
                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
                        .build());
        return securityContexts;
    }

    List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        List<SecurityReference> securityReferences=new ArrayList<>();
        securityReferences.add(new SecurityReference("X-AUTH", authorizationScopes));
        return securityReferences;
    }


    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:/swagger-ui.html
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("用户相关接口").build();
    }
}

 

网关(Gateway)

pom.xml


<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-common</artifactId>
    <version>2.8.0</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>        
        

SwaggerHandler

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import springfox.documentation.swagger.web.*;

import java.util.Optional;

@RestController
public class SwaggerHandler {
    @Autowired(required = false)
    private SecurityConfiguration securityConfiguration;
    @Autowired(required = false)
    private UiConfiguration uiConfiguration;
    private final SwaggerResourcesProvider swaggerResources;

    @Autowired
    public SwaggerHandler(SwaggerResourcesProvider swaggerResources) {
        this.swaggerResources = swaggerResources;
    }


    @GetMapping("/swagger-resources/configuration/security")
    public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() {
        return Mono.just(new ResponseEntity<>(
                Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK));
    }

    @GetMapping("/swagger-resources/configuration/ui")
    public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() {
        return Mono.just(new ResponseEntity<>(
                Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));
    }

    @GetMapping("/swagger-resources")
    public Mono<ResponseEntity> swaggerResources() {
        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
    }

    @GetMapping("/")
    public Mono<ResponseEntity> swaggerResourcesN() {
        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
    }

    @GetMapping("/csrf")
    public Mono<ResponseEntity> swaggerResourcesCsrf() {
        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
    }

}

 

SwaggerProvider

import lombok.AllArgsConstructor;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.support.NameUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.ArrayList;
import java.util.List;

@Component
@Primary
@AllArgsConstructor
public class SwaggerProvider implements SwaggerResourcesProvider {
    public static final String API_URI = "/v2/api-docs";
    private final RouteLocator routeLocator;
    private final GatewayProperties gatewayProperties;

    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources = new ArrayList<>();
        List<String> routes = new ArrayList<>();
        //取出gateway的route
        routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
        //结合配置的route-路径(Path),和route过滤,只获取有效的route节点
        gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId()))
                .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
                        .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))
                        .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(),
                                predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")
                                        .replace("/**", API_URI)))));
        return resources;
    }

    private SwaggerResource swaggerResource(String name, String location) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion("2.0");
        return swaggerResource;
    }

}

 

 

.

 

发表在 java | Java Swagger memo已关闭评论

Spring Cloud Gateway 微服务网关

参考:

 

SpringCloud gateway (史上最全)

https://www.cnblogs.com/crazymakercircle/p/11704077.html

 

微服务网关 Spring Cloud Gateway

https://www.cnblogs.com/cjsblog/p/11099234.html

 

Gateway网关拦截器的ServerWebExchange

https://www.cnblogs.com/fdzang/p/11812348.html

 

.

 

发表在 java | Spring Cloud Gateway 微服务网关已关闭评论

Java AES 密钥生成 / Shiro 动态密钥生成

AES key 生成 / shiro 密钥生成

KeyGenerator keygen = KeyGenerator.getInstance("AES"); 
SecretKey deskey = keygen.generateKey(); 
String cipherKey = Base64.encodeToString(deskey.getEncoded());
System.out.println(cipherKey);

随机产生

byte[] keys = new byte[16];
new Random().nextBytes(keys);

.

发表在 java | Java AES 密钥生成 / Shiro 动态密钥生成已关闭评论

GIT 命令行指引

GIT 命令行指引

您还可以按照以下说明从计算机中上传现有文件。

Git 全局设置
git config --global user.name "xiaobo"
git config --global user.email "xb@mail.org"
创建一个新仓库
git clone https://git.my.org/abc/my.git
cd my
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
推送现有文件夹
cd existing_folder
git init
git remote add origin https://git.my.org/abc/my.git
git add .
git commit -m "Initial commit"
git push -u origin master
推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://git.my.org/abc/my.git
git push -u origin --all
git push -u origin --tags

 

注:加了参数-u后,以后即可直接用git push 代替git push origin master

git push -u origin master

.

发表在 technologys | GIT 命令行指引已关闭评论

Mysqldump参数大全(参数来源于mysql5.5.19源码)

参数

参数说明

--all-databases  , -A

导出全部数据库。

mysqldump  -uroot -p --all-databases

--all-tablespaces  , -Y

导出全部表空间。

mysqldump  -uroot -p --all-databases --all-tablespaces

--no-tablespaces  , -y

不导出任何表空间信息。

mysqldump  -uroot -p --all-databases --no-tablespaces

--add-drop-database

每个数据库创建之前添加drop数据库语句。

mysqldump  -uroot -p --all-databases --add-drop-database

--add-drop-table

每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)

mysqldump  -uroot -p --all-databases  (默认添加drop语句)

mysqldump  -uroot -p --all-databases –skip-add-drop-table  (取消drop语句)

--add-locks

在每个表导出之前增加LOCK TABLES并且之后UNLOCK  TABLE。(默认为打开状态,使用--skip-add-locks取消选项)

mysqldump  -uroot -p --all-databases  (默认添加LOCK语句)

mysqldump  -uroot -p --all-databases –skip-add-locks   (取消LOCK语句)

--allow-keywords

允许创建是关键词的列名字。这由表名前缀于每个列名做到。

mysqldump  -uroot -p --all-databases --allow-keywords

--apply-slave-statements

在'CHANGE MASTER'前添加'STOP SLAVE',并且在导出的最后添加'START SLAVE'。

mysqldump  -uroot -p --all-databases --apply-slave-statements

--character-sets-dir

字符集文件的目录

mysqldump  -uroot -p --all-databases  --character-sets-dir=/usr/local/mysql/share/mysql/charsets

--comments

附加注释信息。默认为打开,可以用--skip-comments取消

mysqldump  -uroot -p --all-databases  (默认记录注释)

mysqldump  -uroot -p --all-databases --skip-comments   (取消注释)

--compatible

导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,

要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。

mysqldump  -uroot -p --all-databases --compatible=ansi

--compact

导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys

mysqldump  -uroot -p --all-databases --compact

--complete-insert,  -c

使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

mysqldump  -uroot -p --all-databases --complete-insert

--compress, -C

在客户端和服务器之间启用压缩传递所有信息

mysqldump  -uroot -p --all-databases --compress

--create-options,  -a

在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)

mysqldump  -uroot -p --all-databases

--databases,  -B

导出几个数据库。参数后面所有名字参量都被看作数据库名。

mysqldump  -uroot -p --databases test mysql

--debug

输出debug信息,用于调试。默认值为:d:t:o,/tmp/mysqldump.trace

mysqldump  -uroot -p --all-databases --debug

mysqldump  -uroot -p --all-databases --debug=” d:t:o,/tmp/debug.trace”

--debug-check

检查内存和打开文件使用说明并退出。

mysqldump  -uroot -p --all-databases --debug-check

--debug-info

输出调试信息并退出

mysqldump  -uroot -p --all-databases --debug-info

--default-character-set

设置默认字符集,默认值为utf8

mysqldump  -uroot -p --all-databases --default-character-set=latin1

--delayed-insert

采用延时插入方式(INSERT DELAYED)导出数据

mysqldump  -uroot -p --all-databases --delayed-insert

--delete-master-logs

master备份后删除日志. 这个参数将自动激活--master-data。

mysqldump  -uroot -p --all-databases --delete-master-logs

--disable-keys

对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合MyISAM表,默认为打开状态。

mysqldump  -uroot -p --all-databases

--dump-slave

该选项将导致主的binlog位置和文件名追加到导出数据的文件中。设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,在命令前增加说明信息。该选项将会打开--lock-all-tables,除非--single-transaction被指定。该选项会自动关闭--lock-tables选项。默认值为0。

mysqldump  -uroot -p --all-databases --dump-slave=1

mysqldump  -uroot -p --all-databases --dump-slave=2

--events, -E

导出事件。

mysqldump  -uroot -p --all-databases --events

--extended-insert,  -e

使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。

mysqldump  -uroot -p --all-databases

mysqldump  -uroot -p --all-databases--skip-extended-insert   (取消选项)

--fields-terminated-by

导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项

mysqldump  -uroot -p test test --tab=”/home/mysql” --fields-terminated-by=”#”

--fields-enclosed-by

输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项

mysqldump  -uroot -p test test --tab=”/home/mysql” --fields-enclosed-by=”#”

--fields-optionally-enclosed-by

输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项

mysqldump  -uroot -p test test --tab=”/home/mysql”  --fields-enclosed-by=”#” --fields-optionally-enclosed-by  =”#”

--fields-escaped-by

输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项

mysqldump  -uroot -p mysql user --tab=”/home/mysql” --fields-escaped-by=”#”

--flush-logs

开始导出之前刷新日志。

请注意:假如一次导出多个数据库(使用选项--databases或者--all-databases),将会逐个数据库刷新日志。除使用--lock-all-tables或者--master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data 和--flush-logs。

mysqldump  -uroot -p --all-databases --flush-logs

--flush-privileges

在导出mysql数据库之后,发出一条FLUSH  PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。

mysqldump  -uroot -p --all-databases --flush-privileges

--force

在导出过程中忽略出现的SQL错误。

mysqldump  -uroot -p --all-databases --force

--help

显示帮助信息并退出。

mysqldump  --help

--hex-blob

使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。

mysqldump  -uroot -p --all-databases --hex-blob

--host, -h

需要导出的主机信息

mysqldump  -uroot -p --host=localhost --all-databases

--ignore-table

不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……

mysqldump  -uroot -p --host=localhost --all-databases --ignore-table=mysql.user

--include-master-host-port

在--dump-slave产生的'CHANGE  MASTER TO..'语句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>'

mysqldump  -uroot -p --host=localhost --all-databases --include-master-host-port

--insert-ignore

在插入行时使用INSERT IGNORE语句.

mysqldump  -uroot -p --host=localhost --all-databases --insert-ignore

--lines-terminated-by

输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。

mysqldump  -uroot -p --host=localhost test test --tab=”/tmp/mysql”  --lines-terminated-by=”##”

--lock-all-tables,  -x

提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。

mysqldump  -uroot -p --host=localhost --all-databases --lock-all-tables

--lock-tables,  -l

开始导出前,锁定所有表。用READ  LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。

请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。

mysqldump  -uroot -p --host=localhost --all-databases --lock-tables

--log-error

附加警告和错误信息到给定文件

mysqldump  -uroot -p --host=localhost --all-databases  --log-error=/tmp/mysqldump_error_log.err

--master-data

该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。

mysqldump  -uroot -p --host=localhost --all-databases --master-data=1;

mysqldump  -uroot -p --host=localhost --all-databases --master-data=2;

--max_allowed_packet

服务器发送和接受的最大包长度。

mysqldump  -uroot -p --host=localhost --all-databases --max_allowed_packet=10240

--net_buffer_length

TCP/IP和socket连接的缓存大小。

mysqldump  -uroot -p --host=localhost --all-databases --net_buffer_length=1024

--no-autocommit

使用autocommit/commit 语句包裹表。

mysqldump  -uroot -p --host=localhost --all-databases --no-autocommit

--no-create-db,  -n

只导出数据,而不添加CREATE DATABASE 语句。

mysqldump  -uroot -p --host=localhost --all-databases --no-create-db

--no-create-info,  -t

只导出数据,而不添加CREATE TABLE 语句。

mysqldump  -uroot -p --host=localhost --all-databases --no-create-info

--no-data, -d

不导出任何数据,只导出数据库表结构。

mysqldump  -uroot -p --host=localhost --all-databases --no-data

--no-set-names,  -N

等同于--skip-set-charset

mysqldump  -uroot -p --host=localhost --all-databases --no-set-names

--opt

等同于--add-drop-table,  --add-locks, --create-options, --quick, --extended-insert, --lock-tables,  --set-charset, --disable-keys 该选项默认开启,  可以用--skip-opt禁用.

mysqldump  -uroot -p --host=localhost --all-databases --opt

--order-by-primary

如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。

mysqldump  -uroot -p --host=localhost --all-databases --order-by-primary

--password, -p

连接数据库密码

--pipe(windows系统可用)

使用命名管道连接mysql

mysqldump  -uroot -p --host=localhost --all-databases --pipe

--port, -P

连接数据库端口号

--protocol

使用的连接协议,包括:tcp, socket, pipe, memory.

mysqldump  -uroot -p --host=localhost --all-databases --protocol=tcp

--quick, -q

不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。

mysqldump  -uroot -p --host=localhost --all-databases

mysqldump  -uroot -p --host=localhost --all-databases --skip-quick

--quote-names,-Q

使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。

mysqldump  -uroot -p --host=localhost --all-databases

mysqldump  -uroot -p --host=localhost --all-databases --skip-quote-names

--replace

使用REPLACE INTO 取代INSERT INTO.

mysqldump  -uroot -p --host=localhost --all-databases --replace

--result-file,  -r

直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。

mysqldump  -uroot -p --host=localhost --all-databases --result-file=/tmp/mysqldump_result_file.txt

--routines, -R

导出存储过程以及自定义函数。

mysqldump  -uroot -p --host=localhost --all-databases --routines

--set-charset

添加'SET NAMES  default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。

mysqldump  -uroot -p --host=localhost --all-databases

mysqldump  -uroot -p --host=localhost --all-databases --skip-set-charset

--single-transaction

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。

mysqldump  -uroot -p --host=localhost --all-databases --single-transaction

--dump-date

将导出时间添加到输出文件中。默认为打开状态,使用--skip-dump-date关闭选项。

mysqldump  -uroot -p --host=localhost --all-databases

mysqldump  -uroot -p --host=localhost --all-databases --skip-dump-date

--skip-opt

禁用–opt选项.

mysqldump  -uroot -p --host=localhost --all-databases --skip-opt

--socket,-S

指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock

mysqldump  -uroot -p --host=localhost --all-databases --socket=/tmp/mysqld.sock

--tab,-T

为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。

mysqldump  -uroot -p --host=localhost test test --tab="/home/mysql"

--tables

覆盖--databases (-B)参数,指定需要导出的表名。

mysqldump  -uroot -p --host=localhost --databases test --tables test

--triggers

导出触发器。该选项默认启用,用--skip-triggers禁用它。

mysqldump  -uroot -p --host=localhost --all-databases --triggers

--tz-utc

在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。

mysqldump  -uroot -p --host=localhost --all-databases --tz-utc

--user, -u

指定连接的用户名。

--verbose, --v

输出多种平台信息。

--version, -V

输出mysqldump版本信息并退出

--where, -w

只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。

mysqldump  -uroot -p --host=localhost --all-databases --where=” user=’root’”

--xml, -X

导出XML格式.

mysqldump  -uroot -p --host=localhost --all-databases --xml

--plugin_dir

客户端插件的目录,用于兼容不同的插件版本。

mysqldump  -uroot -p --host=localhost --all-databases --plugin_dir=”/usr/local/lib/plugin”

--default_auth

客户端插件默认使用权限。

mysqldump  -uroot -p --host=localhost --all-databases --default-auth=”/usr/local/lib/plugin/<PLUGIN>”

摘自:
https://www.cnblogs.com/qq78292959/p/3637135.html

 

发表在 db | Mysqldump参数大全(参数来源于mysql5.5.19源码)已关闭评论

MySQL Group Replication(MGR) 动态添加成员节点

相关信息

MGR单主模式搭建完成
原MGR节点
192.168.3.252:3306 192.168.222.171:3306 192.168.222.70:3306

新增节点 192.168.222.78:3306
需要保证新增节点IP 在group_replication_ip_whitelist
我的配置为 group_replication_ip_whitelist="192.168.3.252,192.168.222.0/24"
新增节点在此网段中,所以不需要修改此配置(修改需重启)

修改已有节点配置

分别登陆test-1、test-2、test-3
修改配置

# 修改
set global group_replication_group_seeds="192.168.3.252:13306,192.168.222.171:13306,192.168.222.70:13306,192.168.222.78:13306";
# 查看
show variables like '%group_replication_group_seeds%';

安装mysql

(test-4)
mysql 安装修改配置文件及初始化(省略)
详见其它安装流程

配置MGR

创建授权用户(test-4)

set sql_log_bin=0;
grant replication slave,replication client on *.* to repuser@'%' IDENTIFIED BY 'amT_2Kj19';
grant replication slave,replication client on *.* to repuser@'127.0.0.1' IDENTIFIED BY 'amT_2Kj19';
grant replication slave,replication client on *.* to repuser@'localhost' IDENTIFIED BY 'amT_2Kj19' ;
set sql_log_bin=1;

配置同步使用的用户

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';

安装mysql group replication插件

# 备注:如果在my.cnf里写写入plugin_load="group_replication=group_replication.so" 这步就可以不用操作
install plugin group_replication soname 'group_replication.so';
# 通过show plugins;查看是否安装成功

启动

开启兼容模式

set global group_replication_allow_local_disjoint_gtids_join=ON;
START GROUP_REPLICATION;

检查

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 07a96b05-9bd1-11e9-bd95-000c29ceaa09 | test-3      |        3306 | ONLINE       |
| group_replication_applier | 9739c60d-9bda-11e9-9af3-000c29a21c95 | test-1      |        3306 | ONLINE       |
| group_replication_applier | cdbd0ca5-9e37-11e9-aa52-000c29daa6b3 | test-4      |        3306 | RECOVERING   |
| group_replication_applier | ec96355f-9bd0-11e9-8437-000c29fdc162 | test-2      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
# 刚加入是状态是 RECOVERING
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 07a96b05-9bd1-11e9-bd95-000c29ceaa09 | test-3      |        3306 | ONLINE       |
| group_replication_applier | 9739c60d-9bda-11e9-9af3-000c29a21c95 | test-1      |        3306 | ONLINE       |
| group_replication_applier | cdbd0ca5-9e37-11e9-aa52-000c29daa6b3 | test-4      |        3306 | ONLINE       |
| group_replication_applier | ec96355f-9bd0-11e9-8437-000c29fdc162 | test-2      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
# 数据同步完成是 就是ONLINE

 

.

文章源:https://yangxx.net/?p=3672

 

发表在 db | MySQL Group Replication(MGR) 动态添加成员节点已关闭评论

SpringMVC路径匹配/Ant PATH路径匹配

在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径的。例如:
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.i360r.platform.webapp.runtime.view.interceptor.GenericInterceptor" />
</mvc:interceptor>
</mvc:interceptor>
根据以上配置,此拦截器会拦截所有的请求。
Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)
这些可以组合出很多种灵活的路径模式
Table Ant Wildcard Characters

Wildcard Description
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录

Table Example Ant-Style Path Patterns

Path Description
/app/*.x 匹配(Matches)所有在app路径下的.x文件
/app/p?ttern 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern
/**/example 匹配(Matches) /app/example, /app/foo/example, 和 /example
/app/**/dir/file. 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java
/**/*.jsp 匹配(Matches)任何的.jsp 文件

 

 HandlerMapping

一 个WEB应用程序基本上都要依赖于URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(译者:灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间的关系,并且在实际上,允许你自己创建映射规则和实现,而不仅仅依赖URL映射。
Spring提供了URL的映射处理, 并且处理路径模式的顺序和方法并没有限定到任何的接口上。Spring MVC的默认实现org.springframework.web.servlet.handler. AbstractUrlHandlerMapping, 会以最长符合路径模式来匹配一个路径。
例如:给定一个请求是 /app/dir/file.jsp 并且现在存在两个路径匹配模式/**/*.jsp 和/app/dir/*.jsp, 那么,URL会匹配那个模式呢?最后的那个模式/app/dir/*.jsp,会因为最长(has more characters)的原则被匹配,它比/**/*.jsp拥有更多的字符.注意的是,这个原则并没有在任何高级别的接口中指定,但却是一种实现细节。
!!下面看一下默认的两个HandlerMapping
BeanNameUrlHandlerMapping
默 认的映射策略实现是org.springframework.web. servlet.handler.BeanNameUrlHandlerMapping类. 这个类要求任何有可能处理请求的Bean都要起一个以反斜杠(/)字符开头的名称或者别名,这个名称或者别名可以是符合URL Path匹配原则中的任何名字。

Listing A Controller Mapped by a Bean Name

xml 代码
<bean name="/home"  class="com.apress.expertspringmvc.flight.web.HomeController">  
<property name="flightService" ref="flightService" /> 
</bean>

■注意:你不能使用id这个属性来指定任何的URL路径,因为在XML规格定中禁止(/)字符来指定XML的id,不过你可以在一个Bean定义中同时拥有id和name属性
BeanNameUrlHandlerMapping 的缺点
它 非常便于使用的同时,也拥有一些缺点。它不能影射一个Prototype的Bean.换句话说,当使用 BeanNameUrlHandlerMapping时, 所有的请求处理类只能是单例的(singletons) . 一般来说,Controllers 都是按照单例建立的,所以这个并不是一个很严重的问题.还有,我会在后面的章节中介绍Controller,只会有很少类型的Controller需要是 prototypes.

■注释: Prototype bean 是一种非单例(non-singleton)的bean. 任何一次调用ApplicationContext的getBean()方法时都会返回一个新的Bean实例.

BeanNameUrlHandlerMapping的另外一个问题存在于在你的应用程序中 应用拦截(interceptor). 因为请求的映射(handler mapping )和Bean(beans imapping)的映射给绑定在一起了,没有分开,这样就不可能在Controller和拦截之间创建复杂的关系。如果有复杂的请求映射需求,你可以用 SimpleUrlHandlerMapping 来代替BeanNameUrlHandlerMapping. SimpleUrlHandlerMapping作为BeanNameUrlHandlerMapping的另外一种选择, SimpleUrlHandlerMapping直指BeanNameUrlHandlerMapping的两大软肋.它可以映射 prototype类型的请求处理器,并且它允许你为处理器(handlers)和拦截器(interceptors)之间创建复杂灵活的映射路径的映射算法与BeanNameUrlHandlerMapping是 使用相同的基础组件,所以这个模式依然是映射URL到请求处理器的(request handler) ,你简单的在ApplicationContext中声明一下,就可以使用SimpleUrlHandlerMapping了. DispatcherServlet会根据类型找到的,并且不会创建默认的映射器了(BeanNameUrlHandlerMapping).意思就是, 如果你想两个都用,那么就要全部声明一下在ApplicationContext里.
■提示 DispatcherServlet会链式处理请求的(译者:依次处理请求,可以参照过滤器和GOF中的责任链模式),这样允许按照你的要求处理映射,映射处理器(Handler mappings )实现了Orderedr接口.

 

同时存在路径变量和通配符匹配时的优先级关系

当一个请求路径可以匹配多个处理器方法时,SpringMVC将优先匹配路径映射更精确的那个。

拥有更少的路径变量和通配符的路径映射更精确。比如/hotels/{hotel}/*拥有一个路径变量和一个通配符,那么它会比/hotels/{hotel}/**更精确,会优先匹配,因为后者拥有一个路径变量和两个通配符。
如果两个路径映射的通配符数量是一样的,则指定的信息更多那个路径会更精确,比如/hotels/abc*比/hotels/*更精确。
路径变量比通配符更精确。比如/hotels/{hotel}比/hotels/*更精确。
默认映射/**比其它所有的路径映射的优先级都低,比如/{a}/{b}就比它更精确。
拥有两个通配符的路径映射比其它没有两个通配符的路径映射的优先级都低,比如/abc/**的优先级低于/abc/{a}。

发表在 java | SpringMVC路径匹配/Ant PATH路径匹配已关闭评论

时间格式/dateformat

日期的表示形式:

  1. 1980-01-01 或 19800101
  2. 可以加入时区:1980-01-01+08:00

时间的表示:

  1. 21:08:33 或 210833 表示当前时区
  2. 21:08:33Z 或 210833Z 表示UTC时区

日期时间表示

  1. 1980-01-01 21:08:33 当前时区
  2. 1980-01-01 21:08:33+08:00 设定时区
  3. 1980-01-01 21:08:33Z UTC时区
  4. 1980-01-01T21:08:33Z
  5. 19800101T210833Z

时间偏移表示

P1Y3M5DT6H7M30S 表示:1年3月...

PHP

//可以运用所有时间格式
$date=new DateTime('19800101T210833Z');
//偏移时间(注意中间的T)
$date->sub(new DateInterval('P1Y2MT3H2M'));
echo $date->format('Y-m-d H:i:sP');

RFC1123

Tue, 30 Oct 2018 15:33:48 GMT

.

发表在 technologys | 时间格式/dateformat已关闭评论

nfs

NFS服务器配置

1.安装NFS服务

首先使用yum安装nfs服务:

yum -y install rpcbind nfs-utils

2.创建共享目录

在服务器上创建共享目录,并设置权限。

mkdir /data/share/
chmod 755 -R /data/share/

3.配置NFS

nfs的配置文件是 /etc/exports ,在配置文件中加入一行:

/data/share1/ 192.168.11.34(rw,no_root_squash,no_all_squash,sync)
/data/share2/ *(rw,no_root_squash,no_all_squash,sync)

rw 表示设置目录可读写。

sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。

no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。

no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。

如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:

exportfs -r

4.设置防火墙

如果你的系统没有开启防火墙,那么该步骤可以省略。

NFS的防火墙特别难搞,因为除了固定的port111、2049外,还有其他服务如rpc.mounted等开启的不固定的端口,这样对防火墙来说就比较麻烦了。为了解决这个问题,我们可以设置NFS服务的端口配置文件。

修改/etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30002
MOUNTD_PORT=1002

保存好后,将端口加入到防火墙允许策略中。

执行:

firewall-cmd --zone=public --add-port=111/tcp
firewall-cmd --add-port=111/udp --permanent 
firewall-cmd --add-port=2049/tcp --permanent 
firewall-cmd --zone=public --add-port=2049/udp --permanent 
firewall-cmd --add-port=1001/tcp --permanent 
firewall-cmd --add-port=1001/udp --permanent 
firewall-cmd --zone=public --add-port=1002/tcp --permanent 
firewall-cmd --add-port=1002/udp --permanent 
firewall-cmd --add-port=30001/tcp --permanent 
firewall-cmd --zone=public --add-port=30002/udp --permanent
firewall-cmd --reload

 

5.启动服务

按顺序启动rpcbind和nfs服务:

systemctl start rpcbind
systemctl start nfs

加入开机启动:

systemctl enable rpcbind 
systemctl enable nfs

nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。

服务器的后,我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

[root@localhost ~]# showmount -e localhost
Export list for localhost:
/data/share1 192.168.11.34
/data/share2 192.168.11.34

出现上面结果表明NFS服务端配置正常。

客户端配置

1.安装rpcbind服务

客户端只需要安装rpcbind服务即可,无需安装nfs或开启nfs服务。

yum -y install rpcbind

2.挂载远程nfs文件系统

查看服务端已共享的目录:

[root@localhost ~]# showmount -e 192.168.11.31
Export list for 192.168.11.31:
/data/share 192.168.11.34

建立挂载目录,执行挂载命令:

mkdir -p /mnt/share
mount -t nfs 192.168.11.34:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。

如果要解除挂载,可执行命令:

umount /mnt/share

3.开机自动挂载

如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。

[root@localhost ~]# vim /etc/rc.d/rc.local
#在文件最后添加一行:
mount -t nfs 192.168.11.34:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

或者

mount -t nfs 192.168.11.34:/share /mnt/share

 

保存并重启机器看看。

测试验证

查看挂载结果,在客户端输入 df -h

文件系统    容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root   18G 5.0G 13G 29% /
devtmpfs      904M  0 904M 0% /dev
tmpfs       916M  0 916M 0% /dev/shm
tmpfs       916M 9.3M 906M 2% /run
tmpfs       916M  0 916M 0% /sys/fs/cgroup
/dev/sda1      497M 164M 334M 33% /boot
tmpfs       184M  0 184M 0% /run/user/0
192.168.11.31:/data/share  18G 1.7G 16G 10% /mnt/share

看到最后一行了没,说明已经挂载成功了。

 

 

.

发表在 linux | nfs已关闭评论

JS Librarys

中国:

.

发表在 javascript | 标签为 | JS Librarys已关闭评论

Markdown 高亮支持列表

Markdown 高亮支持列表

language key
1C 1c
ActionScript actionscript
Apache apache
AppleScript applescript
AsciiDoc asciidoc
AspectJ asciidoc
AutoHotkey autohotkey
AVR Assembler avrasm
Axapta axapta
Bash bash
BrainFuck brainfuck
Cap’n Proto capnproto
Clojure REPL clojure
Clojure clojure
CMake cmake
CoffeeScript coffeescript
C++ cpp
C# cs
CSS css
D d
Dart d
Delphi delphi
Diff diff
Django django
DOS.bat dos
Dust dust
Elixir elixir
ERB(Embedded Ruby) erb
Erlang REPL erlang-repl
Erlang erlang
FIX fix
F# fsharp
G-code(ISO 6983) gcode
Gherkin gherkin
GLSL glsl
Go go
Gradle gradle
Groovy groovy
Haml haml
Handlebars handlebars
Haskell haskell
Haxe haxe
HTML html
HTTP http
Ini file ini
Java java
JavaScript javascript
JSON json
Lasso lasso
Less less
Lisp lisp
LiveCode livecodeserver
LiveScript livescript
Lua lua
Makefile makefile
Markdown markdown
Mathematica mathematica
Matlab matlab
MEL (Maya Embedded Language) mel
Mercury mercury
Mizar mizar
Monkey monkey
Nginx nginx
Nimrod nimrod
Nix nix
NSIS nsis
Objective C objectivec
OCaml ocaml
Oxygene oxygene
Parser 3 parser3
Perl perl
PHP php
PowerShell powershell
Processing processing
Python’s profiler output profile
Protocol Buffers protobuf
Puppet puppet
Python python
Q q
R r
RenderMan RIB rib
Roboconf roboconf
RenderMan RSL rsl
Ruby ruby
Oracle Rules Language ruleslanguage
Rust rust
Scala scala
Scheme scheme
Scilab scilab
SCSS scss
Smali smali
SmallTalk smalltalk
SML sml
SQL sql
Stata stata
STEP Part21(ISO 10303-21) step21
Stylus stylus
Swift swift
Tcl tcl
Tex tex
text text/plain
Thrift thrift
Twig twig
TypeScript typescript
Vala vala
VB.NET vbnet
VBScript in HTML vbscript-html
VBScript vbscript
Verilog verilog
VHDL vhdl
Vim Script vim
Intel x86 Assembly x86asm
XL xl
XML xml
YAML yml

 

.

发表在 technologys | Markdown 高亮支持列表已关闭评论

四大国产数据库

1:南大通用

公司简介

天津南大通用数据技术有限公司(以下简称南大通用)是专注于数据库领域,国内领先的新型数据库产品和解决方案供应商,为数据分析、数据挖掘、商业智能、海量数据管理。

数据安全等细分市场提供具有国际先进技术水平的数据库产品。南大通用已经形成了在大规模、高性能、分布式、高安全的数据存储、管理和应用方面的技术储备,同时对于数据整合、应用系统集成、PKI安全等方面具有丰富的应用开发经验。南大通用将以数据管理为核心竞争力,依据自主研发和引进先进技术相结合的方针,不断研发科技含量高、附加值较大、市场急需的具有自主知识产权的软件产品,实践技术最为先进,产品最为实用,市场份额最大的国产数据管理软件和数据服务的第一品牌。

 

2:武汉达梦

    公司简介

武汉达梦数据库有限公司成立于2000年,为国有控股的基础软件企业,专业从事数据库管理系统研发、销售和服务。其前身是华中科技大学数据库与多媒体研究所,是国内最早从事数据库管理系统研发的科研机构。达梦数据库为中国数据库标准委员会组长单位,得到了国家各级政府的强力支持。

      公司是国家规划布局内重点软件企业,首批获得国家“双软”认证的高新技术企业,“AAA”资信企业,并通过ISO9001:2000版国际质量管理体系认证CMMI3级认证、武器装备科研生产单位二级保密资格认证、国家保密局“涉及国家秘密的计算机信息系统集成资质”认证、工业和信息化部“计算机信息系统集成企业资质” 二级认证。
      公司先后完成了近60项国家级、省部级的科研开发项目,取得了50多项研究成果,皆为国际先进、国内领先水平,其中30多项获国家、省部级科技进步奖,在国内同行中处于领先地位。2005年,达梦数据库被评为“国家高技术产业化示范工程”,连续多次荣获“中国国际软件博览会金奖”。2010年,达梦数据库被评为2009-2010年度中国软件信息服务业最具潜力企业,并荣获“中国软件明星奖”。达梦数据库管理系统多次被评为中国优秀软件产品。

3:人大金仓

公司简介

北京人大金仓信息技术股份有限公司(简称:人大金仓)是中国自主研发数据库产品和数据管理解决方案的领导企业,由中国人民大学及一批最早在国内开展数据库教学、研究与开发的专家于1999年发起创立,至今已成功获得中国电子科技集团(CETC)旗下的普华基础软件股份有限公司和太极计算机股份有限公司的战略注资,被纳入CETC集团的整体发展战略。目前,公司研发人员超过60%,员工中90%以上具有大学本科以上学历,博士、硕士比例超过30%。

人大金仓长期致力于研发和推广具有自主知识产权的国产数据库管理系统。自成立以来,依托中国人民大学数据与知识工程研究所在数据库技术领域长期教学科研的深厚积累,人大金仓先后被认定为北京软件产业基地人大金仓数据库产业化中心、教育部数据库与商务智能工程研究中心和中关村科技园区百家创新试点企业。在数据库信息安全领域,人大金仓成功通过二级军工保密资格认证。在内部研发体系方面,人大金仓全面推行ISO9001质量管理体系,并通过了软件能力成熟度CMM2级评估,为公司开发高水平高质量的大型系统软件产品、向用户提供优质满意的服务,提供了制度和能力上的保证。
人大金仓成功承担了国家十五“863”数据库重大专项课题“通用数据库管理系统KingbaseES研发及其应用”和北京市科技计划重大项目“大型通用数据库管理系统研制”等重大数据库项目研发任务。金仓数据库KingbaseES是入选国家自主创新产品目录的唯一数据库产品,同时还入选了北京市和中关村科技园区自主创新产品目录,曾获得北京市科技进步一等奖。目前,金仓数据库KingbaseES在政府、军队、电力、农业、水利、质检、教育、金融、能源、制造业信息化等领域拥有一大批成功应用案例。在中共中央组织部的全国组织系统信息化、国家电网、新华保险信息化建设和北京市及下属30多个委办局和区县的电子政务应用中,金仓数据库KingbaseES都发挥了重要支撑作用。在质监行业中,人大金仓是唯一入选国家“金质”工程的国产数据库厂商,在审计行业,人大金仓的数据库产品成功应用于国家“金审”工程二期。
人大金仓是国家“核高基”重大专项数据库方向课题的牵头承担单位,在国产数据库领域,人大金仓市场份额始终保持领先。

 

4:神舟通用

  公司简介

       天津神舟通用数据技术有限公司(简称:神舟通用公司)致力于神通国产数据库产业化,隶属中国航天科技集团公司,是国内最具影响力的基础软件企业之一,获得国家核高基科技重大专项重点支持。神舟通用公司提供神通数据库系列产品与服务,产品技术领先,先后获得30项数据库技术发明专利,在国产数据库行业处于领先位置。公司拥有北京研发中心、天津研发中心、杭州研发中心三家产品研发基地,与浙江大学、北航、北京大学、中科院软件所等高校和科研院所开展了深度合作,具有一大批五年以上的数据库核心研发人才。

神舟通用公司主营业务主要包括神通关系型通用数据库、神通KStore海量数据管理系统、神通xCluster集群件、神通商业智能套件等系列产品研发和市场销售。基于产品组合,可形成支持交易处理、MPP数据库集群、数据分析与处理等解决方案。公司拥有40余名实战经验丰富的中高级数据库技术服务人员,可提供数据库系统调优和运维服务。公司客户主要覆盖政府、电信、能源、交通、网安、国防和军工等领域,率先实现国产数据库在电信行业的大规模商用。

.
5.其它

参考:

https://www.modb.pro/dbRank

TiDB  分布式
OceanBase  分布式
PolarDB  云原生
达梦  关系型
GBase  关系型
GaussDB  云原生
TDSQL  分布式
openGauss  关系型
AnalyticDB  云原生
GoldenDB  分布式
Kingbase  关系型
SequoiaDB  分布式
神舟通用  关系型
EsgynDB  关系型
GreatDB  分布式
Alibaba GDB  图形
TcaplusDB  键值
AliSQL  关系型
KunDB  关系型
CloudTable  关系型
Tdengine  关系型
CirroData  关系型
CTSDB  时序
K-DB  关系型
HotDB  分布式
Alibaba TSDB  时序
Goldilocks  关系型
TroyDB  关系型
AntDB  关系型
思极有容  关系型
UXDB  关系型
Palo  关系型
H3C DataEngine  关系型
Galaxybase  图形
虚谷数据库  关系型
ArgoDB  关系型
云数Shard  关系型
Baidu TSDB  时序
openPlant  关系型
TuGraph  图形
KingDB  关系型
OpenBASE  关系型
X-DB  关系型
TafDB  关系型
HybridDB  关系型
TaurusDB  关系型
HighGoDB  关系型
GaiaDB  关系型
DolphinDB  关系型
ArkDB  关系型
GeminiDB  宽列存储
SeaSQL  分布式
HUABASE  关系型
RapidsDB  关系型
GraphDB  图形
TeleDB  关系型
Vastbase  关系型
ShinDB  分布式
Claims  关系型
ChronusDB  关系型
QuantumDB  关系型
HStreamDB  时序
PhxSQL  关系型
Pegasus  关系型
ESP-iSYS  关系型
HugeGraph  图形
DorisDB  关系型
Qcubic  关系型
JD DRDS  关系型
PolonDB  关系型
SinoDB  关系型
ArteryBase  关系型
Haisql_memcache  键值
Nebula Graph​  图形
KingHistorian  关系型
MogDB  关系型
HeroDB  关系型
TrendDB  关系型
ToprowDB  关系型
LinkoopDB  关系型
MegaWise  关系型
华易数据库  关系型
GeaBase  图形
Hubble  分布式
HHADB  关系型
SkyTSDB  时序
AtlasDB  关系型
DThink ADB  关系型
ZNBase  关系型
OushuDB  关系型
QianBase  关系型
信仓归  分布式
xigemaDB  关系型
pSpace  关系型
AbutionGraph  图形
极星数据库  时序
GDM  图形
Tendis  键值
iBASE  宽列存储
Agilor  关系型
恒河数据库  关系型
HHDB  关系型
HashData  关系型
Ceder  关系型
DBOne  关系型
HungHuDB  关系型
红象数据库  关系型
gStore  图形
SG-RDB  关系型
MemFireDB  分布式
AISWare MDB  分布式
CASICloud DBCP  分布式
LSQL  分布式
UPDB  关系型
BGraph  图形
Intcube OLAP  关系型
BeyonDB  关系型
TXDB  关系型
StellarDB  图形
DragonBase  关系型
Kingwow  关系型
RadonDB  关系型
RealDB  关系型
LongDB  关系型
Gridsum ZETA PDW  关系型
HashGo DB  关系型
UPData  分布式

.

发表在 db | 四大国产数据库已关闭评论

springboot starter

参考:
Name Description
spring-boot-starter 核心starter, 包括auto-configuration支持, logging和YAML 支持
spring-boot-starter-activemq 基于Apache ActiveMQ的JSM消息系统
spring-boot-starter-amqp 基于Rabbit MQ的AMQP消息系统
spring-boot-starter-aop 使用Spring AOP 和 AspectJ
spring-boot-starter-artemis 基于Artemis的JSM消息系统
spring-boot-starter-batch 使用Spring Batch
spring-boot-starter-cache 使用Spring caching缓存
spring-boot-starter-cloud-connectors 云计算,例如Cloud Foundry、Heroku
spring-boot-starter-data-cassandra 使用Cassandra数据库
spring-boot-starter-data-cassandra-reactive 使用Cassandra数据库
spring-boot-starter-data-couchbase 使用Couchbase数据库
spring-boot-starter-data-couchbase-reactive 使用Couchbase数据库
spring-boot-starter-data-elasticsearch 使用Elasticsearch
spring-boot-starter-data-jdbc 使用JDBC
spring-boot-starter-data-jpa 使用Hibernate
spring-boot-starter-data-ldap 使用LDAP
spring-boot-starter-data-mongodb 使用MongoDB
spring-boot-starter-data-mongodb-reactive 使用MongoDB
spring-boot-starter-data-neo4j 使用Neo4j
spring-boot-starter-data-redis 使用Redis
spring-boot-starter-data-redis-reactive 使用Redis
spring-boot-starter-data-rest Starter for exposing Spring Data repositories over REST using Spring Data REST
spring-boot-starter-data-solr Starter for using the Apache Solr search platform with Spring Data Solr
spring-boot-starter-freemarker Starter for building MVC web applications using FreeMarker views
spring-boot-starter-groovy-templates Starter for building MVC web applications using Groovy Templates views
spring-boot-starter-hateoas Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS
spring-boot-starter-integration Starter for using Spring Integration
spring-boot-starter-jdbc 使用jdbc,包含JdbcTemplate系列工具
spring-boot-starter-jersey Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web
spring-boot-starter-jooq Starter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc
spring-boot-starter-json 使用json
spring-boot-starter-jta-atomikos Starter for JTA transactions using Atomikos
spring-boot-starter-jta-bitronix Starter for JTA transactions using Bitronix
spring-boot-starter-mail 邮件功能
spring-boot-starter-mustache Starter for building web applications using Mustache views
spring-boot-starter-oauth2-client 使用OAuth2客户端
spring-boot-starter-oauth2-resource-server 创建OAuth2服务器
spring-boot-starter-quartz 使用Quartz定时任务
spring-boot-starter-security 使用spring安全框架
spring-boot-starter-test 使用springBoot单元测试
spring-boot-starter-thymeleaf 使用Thymeleaf
spring-boot-starter-validation 使用Hibernate Validator
spring-boot-starter-web 使用springWeb框架,包括RESTful,Spring MVC.默认使用Tomcat容器
spring-boot-starter-web-services 使用Web Services
spring-boot-starter-webflux Starter for building WebFlux applications using Spring Framework’s Reactive Web support
spring-boot-starter-websocket 使用websocket
spring-boot-starter-actuator 提供针对SpringBoot应用程序的监控和管理
spring-boot-starter-jetty 使用jetty容器
spring-boot-starter-log4j2 使用log4j
spring-boot-starter-logging 使用logback
spring-boot-starter-reactor-netty
spring-boot-starter-tomcat 使用tomcat容器
spring-boot-starter-undertow 使用undertow容器
.
发表在 java | springboot starter已关闭评论

Java学习路线一

Java路线参考:

Spring Boot

  1. SpringBoot介绍
  2. SpringBoot的核心功能
  3. SpringBoot的优势
  4. SpringBoot入门程序
  5. 起步依赖原理分析
  6. 自动配置原理解析
  7. 自定义起步依赖并实现自动配置
  8. SpringBoot配置文件类型
  9. 配置文件与配置类的属性映射方式
  10. SpringBoot整合Mybatis
  11. SpringBoot整合Junit
  12. SpringBoot整合HikariCP
  13. SpringBoot整合Redis

Spring Cloud

  1. 架构的演进过程介绍
  2. SpringCloud介绍和Dubbo对比
  3. 服务注册中心Eureka介绍
  4. Eureka服务端开发
  5. 微服务开发并注册到Eureka服务注册中心
  6. Eureka保护模式介绍
  7. 客户端负载和服务端负载的介绍
  8. Ribbon实现客户端负载均衡
  9. Feign的介绍和实现
  10. Feign工作原理和注意事项
  11. 雪崩效应与熔断器介绍
  12. 熔断器Hystrix使用
  13. 网关介绍
  14. 基于Gateway构建网关服务
  15. 通过Gateway网关访问微服务
  16. Spring Cloud Config介绍
  17. 使用Git存储的方式实现配置管理
  18. 微服务改造从配置中心获取配置信息
  19. 服务总线Spring Cloud Bus介绍和应用

Elasticsearch

  1. ElasticSearch简介
  2. ElasticSearch安装与启动
  3. Elasticsearch核心概念、操作入门
  4. ElasticSearch集成IK分词器
  5. ElasticSearch常用编程操作
  6. ElasticSearch中的DSL搜索
  7. ElasticSearch集群环境搭建和介绍
  8. 8.ElasticSearch关键字搜索
  9. ElasticSearch多条件过滤
  10. Spring Data ElasticSearch使用

RabbitMQ

  1. RabbitMQ的介绍
  2. AMQP和JMS介绍
  3. RabbitMQ的工作原理
  4. RabbitMQ入门案例
  5. Work Queues 工作队列模式
  6. Publish/Subscribe 发布订阅模式
  7. Routing 路由模式
  8. Topics 通配符模式
  9. Spring-AMPQ的搭建
  10. Spring-AMPQ生产者创建
  11. Spring-AMPQ消费者创建

Node.js&ES

  1. Node.js的作用
  2. Node.js下载和安装
  3. Node.js快速入门
  4. 创建前端工程
  5. 前端工程中函数的使用
  6. 模块化编程
  7. 创建前端Web服务器
  8. NPM的作用和说明
  9. NPM的本地安装与全局安装
  10. NPM镜像切换
  11. Webpack的介绍和作用
  12. Webpack前端资源打包
  13. ECMAScript介绍和发展历程
  14. ES6变量声明let和const
  15. ES6模板字符串和对象声明简化
  16. ES6对象和数字的使用
  17. Promise对象的使用
  18. Export和Import的使用

Docker

  1. Docker简介
  2. 容器与虚拟机比较
  3. Docker的安装和启动
  4. Docker镜像命令介绍和应用
  5. Docker容器命令介绍和应用
  6. Docker部署Mysql
  7. Docker部署Tomcat
  8. Docker部署Nginx
  9. Docker部署Redis
  10. 容器保存转为镜像
  11. 镜像备份
  12. 镜像恢复和迁移
  13. Dockerfile介绍和常用指令
  14. Docker Compose 常用命令
  15. Docker私有仓库使用.
发表在 java | Java学习路线一已关闭评论

RabbitMQ 命令备忘

rabbitmqctl list_queues:查看所有队列信息

rabbitmqctl stop_app:关闭应用(关闭当前启动的节点)

rabbitmqctl start_app:启动应用,和上述关闭命令配合使用,达到清空队列的目的

rabbitmqctl reset:从管理数据库中移除所有数据,例如配置过的用户和虚拟宿主, 删除所有持久化的消息(这个命令要在rabbitmqctl stop_app之后使用)

rabbitmqctl force_reset:作用和rabbitmqctl reset一样,区别是无条件重置节点,不管当前管理数据库状态以及集群的配置。如果数据库或者集群配置发生错误才使用这个最后的手段

rabbitmqctl status:节点状态

rabbitmqctl add_user username password:添加用户

rabbitmqctl list_users:列出所有用户

rabbitmqctl list_user_permissions username:列出用户权限

rabbitmqctl change_password username newpassword:修改密码

rabbitmqctl add_vhost vhostpath:创建虚拟主机

rabbitmqctl list_vhosts:列出所有虚拟主机

rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*":设置用户权限

rabbitmqctl list_permissions -p vhostpath:列出虚拟主机上的所有权限

rabbitmqctl clear_permissions -p vhostpath username:清除用户权限

rabbitmqctl -p vhostpath purge_queue blue:清除队列里的消息

rabbitmqctl delete_user username:删除用户

rabbitmqctl delete_vhost vhostpath:删除虚拟主机

 

.

发表在 mq | RabbitMQ 命令备忘已关闭评论