如何自己开发一个自己的网站/如何建立免费个人网站
liquIbase方式
1、添加依赖
<!-- Liquibase 依赖 -->
<dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId>
</dependency>
2、添加配置项
spring:# datasource 数据源配置内容,对应 DataSourceProperties 配置属性类datasource:url: jdbc:mysql://127.0.0.1:3306/lab-20-liquibase?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 数据库账号password: # 数据库密码# Liquibase 配置内容,对应 LiquibaseProperties 配置项liquibase:enabled: true # 开启 Liquibase 功能。默认为 true 。change-log: classpath:/db/changelog/db.changelog-master.yaml # Liquibase 配置文件地址url: jdbc:mysql://127.0.0.1:3306/lab-20-liquibase?useSSL=false&useUnicode=true&characterEncoding=UTF-8 # 数据库地址user: root # 数据库账号password: # 数据库密码
3、添加版本变更Log配置项
db目录下的db.changelog-master.yaml
databaseChangeLog:- changeSet: # 对应一个 ChangeSet 对象id: 0 # ChangeSet 编号author: yunai # 作者comments: 空 # 备注- changeSet: # 对应一个 ChangeSet 对象id: 1 # ChangeSet 编号author: yunai # 作者comments: 初始化 users 表 # 备注changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类- createTable: # 创建表,对应 CreateTableChange 对象。tableName: users # 表名remarkds: 用户表 # 表注释columns: # 对应 ColumnConfig 数组- column:name: id # 字段名type: int # 字段类型autoIncrement: true # 自增constraints: # 限制条件,对应一个 ConstraintsConfig 对象primaryKey: true # 主键nullable: false # 不允许空- column:name: usernametype: varchar(64)constraints:nullable: false- column:name: passwordtype: varchar(32)constraints:nullable: false- column:name: create_timetype: datetimeconstraints:nullable: false- insert: # 插入记录,对应 InsertDataChange 对象。tableName: users # 表名columns: # 对应 ColumnConfig 数组- column:name: username # 字段名value: yudaoyuanma # 值- column:name: passwordvalue: password- column:name: create_timevalue: now()- changeSet: # 对应一个 ChangeSet 对象id: 2 # ChangeSet 编号author: yunai # 作者comments: 初始化 users2 表 # 备注changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类- sqlFile: # 使用 SQL 文件,对应 SQLFileChange 对象encoding: utf8path: classpath:db/changelog/sqlfile/CHAGE_SET_2_INIT_DB.sql- changeSet: # 对应一个 ChangeSet 对象id: 3 # ChangeSet 编号author: yunai # 作者comments: 修复 `users` 的用户名 # 备注changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类- customChange: {class: cn.iocoder.springboot.lab20.databaseversioncontrol.migration.CHANGE_SET_3_FixUsername} # 对应 CustomTaskChange
4、SQL文件
-- 创建用户表
CREATE TABLE `users2` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',`username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号',`password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',`create_time` datetime DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`),UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;-- 插入一条数据
INSERT INTO `users2`(username, password, create_time) VALUES('yudaoyuanma', 'password', now());
5、版本控制测试
public class CHANGE_SET_3_FixUsername implements CustomTaskChange {private Logger logger = LoggerFactory.getLogger(getClass());@Overridepublic void execute(Database database) throws CustomChangeException {JdbcConnection connection = (JdbcConnection) database.getConnection();try (PreparedStatement psmt = connection.prepareStatement("SELECT id, username, password, create_time FROM users")) {try (ResultSet rs = psmt.executeQuery()) {while (rs.next()) {String username = rs.getString("username");if ("yudaoyuanma".equals(username)) {Integer id = rs.getInt("id");// 这里,再来一刀更新操作,偷懒不写了。logger.info("[migrate][更新 user({}) 的用户名({} => {})", id, username, "yutou");}}}} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic String getConfirmationMessage() {return null;}@Overridepublic void setUp() throws SetupException {}@Overridepublic void setFileOpener(ResourceAccessor resourceAccessor) {}@Overridepublic ValidationErrors validate(Database database) {return null;}}
相关文章:

Springboot整合liquIbase组件
liquIbase方式 1、添加依赖 <!-- Liquibase 依赖 --> <dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId> </dependency>2、添加配置项 spring:# datasource 数据源配置内容,对应…...

Apache Paimon 实时数据湖 Streaming Lakehouse 的存储底座
摘要:本文整理自阿里云开源大数据表存储团队负责人,阿里巴巴高级技术专家李劲松(之信),在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分: 流计算邂逅数据湖 Paimon CDC 实时入湖 Paimon 不止…...

计算机网络(10) --- 高级IO
计算机网络(9) --- 数据链路层与MAC帧_哈里沃克的博客-CSDN博客数据链路层与MAC帧https://blog.csdn.net/m0_63488627/article/details/132178583?spm1001.2014.3001.5501 1.IO介绍 1.IO本质 1.如果数据没有出现,那么读取文件其实会被阻塞住…...

学习中ChatGPT的17种用法
ChatGPT本质上是一个聊天工具,旧金山的人工智能企业OpenAI于2022年11月正式推出ChatGPT。那么,ChatGPT与其他人工智能产品相比有什么特殊呢? 它除了可以回答结构性的问题,例如语法修正、翻译和查找答案之外。最关键的是它能够去解…...

融合CDN 如何有效的抵抗DDoS攻击
绝大部分对外网站所有者都离不开CDN的支持,据统计,全球高达70%的互联网流量都是通过CDN来进行缓存和加速的,不论是国外知名的CDN厂商:如Cloudflare、AWS、Akamai等,还是国内主流的CDN厂商阿里云华为云腾讯云等…...

Git 原理与使用
1.版本控制器 所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是 Git 。Git 可以控制电脑…...

如何批量加密PDF文件并设置不同密码 - 批量PDF加密工具使用教程
如果你正在寻找一种方法来批量加密和保护你的PDF文件,批量PDF加密工具是一个不错的选择。 它是一个体积小巧但功能强大的Windows工具软件,能够批量给多个PDF文件加密和限制,包括设置打印限制、禁止文字复制,并增加独立的打开密码。…...

【Unity 工程化】unity一些资源路径用途
Resources Resources 目录用于存放可以通过 Unity 的 Resources.Load 函数进行加载的资源。这些资源会在构建时被打包为一个单独的资源包,因此它们必须满足一些 Unity 所要求的命名和文件夹结构规则。由于这些资源被打包在一起,因此在构建后的游戏中可以…...

使用Docker进行模型部署
一、常见的模型部署场景 实时的、小数据量的预测应用 部署方式:采用python-httpserve应用部署(如flask, fastApi, django),缺点是可能需要跨环境,从Java跨到Python环境实时的、大数据量的预测应用 部署方式࿱…...

第59步 深度学习图像识别:误判病例分析(TensorFlow)
基于WIN10的64位系统演示 一、写在前面 本期内容对等于机器学习二分类系列的误判病例分析(传送门)。既然前面的数据可以这么分析,那么图形识别自然也可以。 本期以mobilenet_v2模型为例,因为它建模速度快。 同样,基…...

【Vue框架】基本的login登录
前言 最近事情比较多,只能抽时间看了,放几天就把之前弄的都忘了,现在只挑着核心的部分看。现在铺垫了这么久,终于可以看前端最基本的登录了😂。 1、views\login\index.vue 由于代码比较长,这里将vue和js…...

Python21天打卡Day16-内置方法map()
在 Python 中,map() 方法是一个内置的函数,用于将函数应用于可迭代对象(如列表、元组等)中的每个元素,返回一个包含结果的迭代器。 map() 方法的语法如下: map(function, iterable)function:表…...

伦敦银和伦敦金的区别
伦敦银河伦敦金并称贵金属交易市场的双璧,一般投资贵金属的投资者其实不是交易伦敦金就是交易伦敦银。相信经过一段时间的学习和投资,不少投资者都能分辨二者的区别。下面我们就来谈谈伦敦银和伦敦金有什么异同,他们在投资上是否有差别。 交易…...

【从零学习python 】92.使用Python的requests库发送HTTP请求和处理响应
文章目录 URL参数传递方式一:使用字典传递参数URL参数传递方式二:直接在URL中拼接参数获取响应头信息获取响应体数据a. 获取二进制数据b. 获取字符数据c. 获取JSON数据 进阶案例 URL参数传递方式一:使用字典传递参数 url https://www.apiop…...

Python requests实现图片上传接口自动化测试
最近帮别人写个小需求,需要本地自动化截图,然后图片自动化上传到又拍云,实现自动截图非常简单,在这里就不详细介绍了,主要和大家写下,如何通过Pythonrequests实现上传本地图片到又拍云服务器。 话不多说&a…...

【LeetCode-面试经典150题-day13】
目录 141.环形链表 2.两数相加 21.合并两个有序链表 138.复制带随机指针的链表 92.反转链表Ⅱ 141.环形链表 题意: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,…...

taro.js和nutui实现商品选择页面
1. 首先安装 Taro.js 和 NutUI: npm install -g tarojs/cli npm install taro-ui 2. 创建 Taro 项目并进入项目目录: taro init myapp cd myapp 3. 选用 Taro 模板一并安装依赖: npm install 4. 在页面目录中创建商品选择页: taro cre…...

数据结构--算法的时间复杂度和空间复杂度
文章目录 算法效率时间复杂度时间复杂度的概念大O的渐进表示法计算实例 时间复杂度实例 常见复杂度对比例题 算法效率 算法效率是指算法在计算机上运行时所消耗的时间和资源。这是衡量算法执行速度和资源利用情况的重要指标。 例子: long long Fib(int N) {if(N …...

Vue中使用element-plus中的el-dialog定义弹窗-内部样式修改-v-model实现-demo
效果图 实现代码 <template><el-dialog class"no-code-dialog" v-model"isShow" title"没有收到验证码?"><div class"nocode-body"><div class"tips">请尝试一下操作</div><d…...

MySQL 主从配置
环境 centos6.7 虚拟机两台 主:192.168.23.160 从:192.168.23.163 准备 在两台机器上分别安装mysql5.6.23,安装完成后利用临时密码登录mysql数据修改root的密码;将my.cnf配置文件放至/etc/my.cnf,重启mysql服务进…...

上海亚商投顾:创业板指反弹大涨1.26% 核污染概念股午后全线走强
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日集体反弹,沪指午后冲高回落,创业板指盘中涨超2%,尾盘涨幅也有所收…...

Mysql数据库管理
一、数据库基本概念 数据 使用一些介质进行存储,例如文字存在文档中 数据库可以完成数据持久化保存快速提取 那么想要实现以上功能,需要编写一系列的规则--》SQL语句 SQL语句 按功能分类: 增删改查 数据库类型:关系型数据库、非关系型数据库…...

【java安全】FastJson反序列化漏洞浅析
文章目录 【java安全】FastJson反序列化漏洞浅析0x00.前言0x01.FastJson概述0x02.FastJson使用序列化与反序列化 0x03.反序列化漏洞0x04.漏洞触发条件0x05.漏洞攻击方式JdbcRowSetImpl利用链TemplatesImpl利用链**漏洞版本**POC漏洞分析 【java安全】FastJson反序列化漏洞浅析 …...

pytestx重新定义接口框架设计
概览 脚手架: 目录: 用例代码: """ 测试登录到下单流程,需要先启动后端服务 """test_data {"查询SKU": {"skuName": "电子书"},"添加购物车": {"sk…...

【文生图系列】Stable Diffusion原理篇
文章目录 Stable Diffusion的组成什么是扩散扩散是如何工作的去噪声绘制图像将文本信息添加到图像生成器中参考 “文生图”,或者AI绘画,最近异常火爆,输入一些描述性的语句,AI就能够生成相应的画作。甚至引发了一个问题࿱…...
ARM-汇编指令
一,map.lds文件 链接脚本文件 作用:给编译器进行使用,告诉编译器各个段,如何进行分布 /*输出格式:32位可执行程序,小端对齐*/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm",…...

Java相关知识对应leetcode
力扣账号:华为邮箱 类知识点力扣链接Integer转为String Character 判断字符是否是字母或者数字转为小写字母 不可修改 String 转为字符串数组 是否包含某个字符或者字符位置 可修改 StringBuffer 单个字符获取 string转为StringBufferStringBuffer转为String字符…...

js中?.、??、??=的用法及使用场景
上面这个错误,相信前端开发工程师应该经常遇到吧,要么是自己考虑不全造成的,要么是后端开发人员丢失数据或者传输错误数据类型造成的。因此对数据访问时的非空判断就变成了一件很繁琐且重要的事情,下面就介绍ES6一些新的语法来方便…...

每日一题:leetcode 1109 航班预订统计
这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座…...

C#__自定义类传输数据和前台线程和后台线程
// 前台线程和后台线程 // 默认情况下,用Thread类创建的线程是前台线程。线程池中的线程总是后台线程。 // 用Thread类创建线程的时候,可以设置IsBackground属性,表示一个后台线程。 // 前台线程在主函数运行结束后依旧执行,后台线…...