Liquibase的使用
liquibase- 引自官网 LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。 它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下: 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等; 支持多开发者的协作维护; 日志文件支持多种格式,如XML, YAML, JSON, SQL等; 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。 在多数据源项目中,sql显然不如yml.xml等自如 版本号由开发人员来维护,使用 author + id 12345678910111213141516171819202122232425262728293031<dependencies> <dependency> <groupId>org.liquibase</groupId>...
lua语法入门
Lua语法入门Nginx编程需要用到Lua语言,因此我们必须先入门Lua的基本语法。 初识LuaLua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/ Lua经常嵌入到C语言开发的程序中,例如游戏开发、游戏插件等。 Nginx本身也是C语言开发,因此也允许基于Lua做拓展。 HelloWorldCentOS7默认已经安装了Lua语言环境,所以可以直接运行Lua代码。 1)在Linux虚拟机的任意目录下,新建一个hello.lua文件 2)添加下面的内容 1print("Hello World!") 3)运行 变量和循环学习任何语言必然离不开变量,而变量的声明必须先知道数据的类型。 Lua的数据类型Lua中支持的常见数据类型包括: 另外,Lua提供了type()函数来判断一个变量的数据类型: 声明变量Lua声明变量的时候无需指定数据类型,而是用local来声明变量为局部变量: 1234567...
将maven包发布到Maven中央仓库
注意点1: 测试gpg和javadoc插件不适用于jdk11,jdk8测试没问题 注意点2: 同一个版本号不可以重复发布 注意点3: 无法删除已发布的包 注册Sonatype的账户地址 点击界面上方 Create 按钮即可创建Issue。 12345678Project: Community Support - Open Source Project Repository Hosting (OSSRH)Issue TypeRequired: New ProjectSummary: Jar包的名称# 注意这里,group id需要证实当前域是你本人所有的,我就在这里配错了,找了好半天,详细的过程可以看这里https://issues.sonatype.org/browse/OSSRH-79407Group Id:io.github.wang-xiaowu Project URL:项目站点,如:https://gitee.com/snowheart/dingtalk-robotSCM url:项目源码仓库,如:https://gitee.com/snowheart/dingta...
配置maven第三方仓库地址的两种方式
Mirror mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。 repositories 步骤一:优先查询本地仓库地址是否存在,不存在,继续; 步骤二:从配置的center repository 下载,没找到,继续; 步骤三,依次从配置的下配置的一个或者多个远程仓库下载,如果均请求不到,就会报错了; 所以maven最佳配置: 配置mirror, 避免中央镜像墙内网络问题 配置远程仓库地址, 避免有些资源从单一仓库无法下载下来 方式一:全局配置可以添加阿里云的镜像到maven的setting.xml配置中,这样就不需要每次在pom中,添加镜像仓库的配置,在mirrors节点下面添加子节点: 配置镜像注:Maven默认中央仓库的id 为 central。id是唯一的。因此可以使用< id>central< /id>覆盖默认的中央仓库。 默认情况下配置多个mirror, 只有第一个生效 那么假如在公司使用内网, ...
Mongo知识小结
文档型存储的中间件 使用B+树来索引,存储BSON数据(二进制格式的JSON) 支持对文档数据的增删改查,即CRUD操作。 使用了分片和复制技术,支持处理超大规模数据。 基于C++编写 分片模式除了Hash模式,还有Range模式。 集群的配置方式需要手工配置。 全文检索: MongoDB仅支持有限的字段检索,且需人工索引。 MongoDB适用于数据大批量存储, 以及需要被约束的主营业务数据
SpringBoot集成mongodb
Spring boot集成mongodb1、集成简介spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。 2、搭建开发环境2.1 初始化工程使用 Spring Initializr 快速初始化一个 Spring Boot 工程 2.2 引入依赖修改pom.xml 12345678910111213141516171819202122232425262728293031323334<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-...
关于Mybatis的foreach标签
foreach元素的属性主要有collection,item,index,open,separator,close。 123456789101112131415161718- collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象"array"代替作为键,Map对象没有默认的键。在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List ids。入参是User对象,那么这个collection = "ids".如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"- item:集合中元素迭代时的别名,该参数为必选。- index:在list和数组中,index是元素的序号,在m...
Docker搭建RabbitMQ双节点集群
服务器A的IP 服务器B的IP 192.168.56.110 192.168.56.111 创建持久化文件夹 1234#在192.168.56.110上执行命令mkdir -p /home/rabbitmq/cluster/rabbitmq01#在192.168.56.111上执行命令mkdir -p /home/rabbitmq/cluster/rabbitmq02 启动RabbitMQ 1234#在192.168.56.110上执行docker run -d --hostname rabbitmq01 --name rabbitmq01 --add-host=rabbitmq01:192.168.56.110 --add-host=rabbitmq02:192.168.56.111 -v /home/rabbitmq/cluster/rabbitmq01:/var/lib/rabbitmq --privileged=true -p 15672:15672 -p 5672:5672 -p 5671:5671 -p 4369:4369 -p 25672:2...
rabbitmq消息可靠性
消息队列在使用过程中,面临着很多实际问题需要思考: 消息可靠性消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收到消息后未消费就宕机 针对这些问题,RabbitMQ分别给出了解决方案: 生产者确认机制 mq持久化 消费者确认机制 失败重试机制 1.生产者消息确认RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。 返回结果有两种方式: publisher-confirm,发送者确认 消息成功投递到交换机,返回ack 消息未投递到交换机,返回nack publisher-return,发送者回执 消息投递到交换机了,但是没有路由到队列。返回ACK,及路由失败原因。 注意: 1.1.修改...
rabbitmq的安装(单机,集群)
单机部署我们在Centos7虚拟机中使用Docker来安装。 下载镜像1docker pull rabbitmq:3-management 安装MQ执行下面的命令来运行MQ容器: 123456789docker run \ -e RABBITMQ_DEFAULT_USER=itcast \ -e RABBITMQ_DEFAULT_PASS=123321 \ --name mq \ --hostname mq1 \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:3-management MQ集群集群分类RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。RabbitMQ的集群有两种模式: •普通集群:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。 •镜像集群:是一种主从集群,普通集群的基础上,添加了主从备份功能,提高集群的数据可用性。 镜像集群虽然支持主从,但主从同步并不是强一致的,某些情况下可能有数据丢失的风险。因此在RabbitMQ的3.8版本...
