【Sail】第二篇热部署和代码生成

sail:Sail架构定义语言 Sail ISA规范语言 概述 Sail是一种用于描述处理器的指令集体系结构(ISA)语义的语言。 Sail的目标是提供一种工程师友好的,类似于供应商伪代码的语言来描述指令语义。 它本质上是一阶命令式语言,但具有轻量级依赖类型的数字类型和位向量长度的键入,可使用Z3自动检查它们。 它已用于几篇论文,可从。 给定Sail定义后,该工具将对其进行类型检查并生成C和OCaml中的可执行仿真器,Isabelle,HOL4和Coq的定理证明者定义,以及与我们的和工具集成的并发语义定义。 这一切都在进行中,某些定理证明者的定义还不适用于更复杂的模型。 有关当前状态的描述,请参见最新论文和ARMv8.5-A模型。 该存储库包含Sail的实现,以及一些Sail规范和相关工具。 带有源代码的手册 (在) Sail源代码(在) 某些ISA模型的已生成Isabelle快照,在 用于生成Isabelle 立即下载

热部署

  • 接下来我们简单配置一下,在配置之前我们要做一件事,以便于接下来的工作更加方便。把热部署加上,热部署:简单来说就是在程序运行期间,我们能及时看到代码改动效果,不必手动重启服务。这很符合敏捷开发!之前我们改动页面数据或者修改数据结构,为了看到效果只能重启服务,这样是比较麻烦,浪费时间。
  • springboot为我们提供了方便工具,我们只需在pom文件引入spring-boot-devtools模块

    如果你使用的是STS那么你已经完成了热部署配置,就是这么快捷。
    这里特别要说一下,如果你使用的和我一样的idea还需简单的设置一下,这和热部署原理有关,下面会提到。设置我就不贴图了,idea的朋友点这里设置https://www.cnblogs.com/sprinkle/p/7058630.html

  • 好了我们已经把热部署搞定了,看看原理吧。敲黑板 划重点

  • devtools能监听classpath下的文件变动(idea默认不是自动编译的,so不能被devtools监听,我们得开启自动编译),并且会立即重启应用,并且重启会比我们手动重启快,这是因为这个重启是devtools采用双类加载器机制两个类(classLoader )加载器同时来实现重启,一个加载不变的类,另一个restart ClassLoader加载变得类,这样重启速度当然快多了。

建表和生成实体

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for sys_permission_init
-- ----------------------------
DROP TABLE IF EXISTS `sys_permission_init`;
CREATE TABLE `sys_permission_init` (
  `id` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL COMMENT '链接地址',
  `permission_init` varchar(255) DEFAULT NULL COMMENT '需要具备的权限',
  `sort` int(50) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for u_permission
-- ----------------------------
DROP TABLE IF EXISTS `u_permission`;
CREATE TABLE `u_permission` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `url` varchar(256) NOT NULL COMMENT 'url地址',
  `name` varchar(64) NOT NULL COMMENT '权限',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='权限表';

-- ----------------------------
-- Table structure for u_role
-- ----------------------------
DROP TABLE IF EXISTS `u_role`;
CREATE TABLE `u_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL COMMENT '角色名称',
  `type` varchar(10) DEFAULT NULL COMMENT '角色类型',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='角色表';

-- ----------------------------
-- Table structure for u_role_permission
-- ----------------------------
DROP TABLE IF EXISTS `u_role_permission`;
CREATE TABLE `u_role_permission` (
  `rid` bigint(20) DEFAULT NULL COMMENT '角色ID',
  `pid` bigint(20) DEFAULT NULL COMMENT '权限ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for u_user
-- ----------------------------
DROP TABLE IF EXISTS `u_user`;
CREATE TABLE `u_user` (
  `id` varchar(32) NOT NULL,
  `nickname` varchar(20) DEFAULT NULL COMMENT '用户昵称',
  `account` varchar(32) DEFAULT NULL COMMENT '登录帐号',
  `pswd` varchar(32) DEFAULT NULL COMMENT '密码',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
  `status` bigint(1) DEFAULT '1' COMMENT '1:有效,0:禁止登录',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

-- ----------------------------
-- Table structure for u_user_role
-- ----------------------------
DROP TABLE IF EXISTS `u_user_role`;
CREATE TABLE `u_user_role` (
  `uid` bigint(20) DEFAULT NULL COMMENT '用户ID',
  `rid` bigint(20) DEFAULT NULL COMMENT '角色ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

只做基础建表,后期在扩展。因为后期要用到shiro把用户和权限相关表建好。
六张表

  • user 用户基本信息表
  • role 角色表
  • permission 权限表
  • user_role 用户-角色中间表
  • role_permission 角色-权限中间表

表建好后,我们利用mybatisPlus代码生成器把单表的实体、services、dao和mapper生成。
大家可以去这官方文档看看http://baomidou.oschina.io/mybatis-plus-doc

使用方法
首先还是在pom文件中引入模块

<!-- mybatisPlus和代码生成模板引擎 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.0</version>
    </dependency>

然后我们可以copy官方的生成器类文件,把我们的数据库基本信息填好

package com.bubble.utils;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * <p>
 * 代码生成器演示
 * </p>
 */
public class MpGenerator {

    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("C://");
        gc.setFileOverride(true);
        gc.setActiveRecord(true);
        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
        gc.setBaseColumnList(false);// XML columList
        gc.setAuthor("bubble");
        mpg.setGlobalConfig(gc);
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setUrl("jdbc:mysql://localhost:3306/bubble?characterEncoding=utf8");
        mpg.setDataSource(dsc);
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setTablePrefix(new String[]{"u_", "sys_"});// 此处可以修改为您的表前缀
        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
        strategy.setInclude(new String[]{"sys_permission_init", "u_permission", "u_role", "u_role_permission", "u_user", "u_user_role"}); // 需要生成的表
        mpg.setStrategy(strategy);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com");
        pc.setModuleName("bubble");
        pc.setXml("dao");
        mpg.setPackageInfo(pc);
        // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                this.setMap(map);
            }
        };
        mpg.setCfg(cfg);
        // 执行生成
        mpg.execute();
        // 打印注入设置
        System.err.println(mpg.getCfg().getMap().get("abc"));
    }
}
  • 这个插件生成的代码很是方便带有通用 CRUD,不用我们去实现,我们可以看看

特别的是还带有批量插入以及条件查询和条件构造器,这个以后用到时候在介绍吧。有兴趣的朋友可以去官网看看文档介绍。

完成后的架构图如下

html页面绘制热区工具 可以在html绘制矩形、圆形、图片等形状,形成热区坐标。 立即下载

相关推荐

使用dcevm实现热部署

NULL 博文链接:https://lzw0286.iteye.com/blog/1700486

SpringBoot devtools热部署

一、pom.xml添加依赖 二、修改idea默认配置 三、测试是否生效 一、pom.xml添加依赖 &lt;dependencies&gt; &lt;!-- 基础组件--&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId...

zouk‘s blogs 1301

Java 热部署操作笔记。Spring Tool Suite

Java 热部署操作笔记。Spring Tool Suite.网上能看到的资源多事mvn 的,再这个文档里面,很详细的介绍了.yml元素的写法。和注意事项。

设置图片热区文字_如何做阿里巴巴国际站里的万能热区,产品详情里做外链

已阿里巴巴国际站为例:一、应用到的网站:1. 千图工具-淘宝工具-万能热区2. 阿里巴巴国际站-图片管理-产品管理-图文普通编辑二、操作步骤1.打开千图网-淘宝工具-万能热区:http://tool.58pic.com/hotpoint/2. 登录 微信/QQ账号3. 进入主页面4. 万能热区模块分析4.1 图片背景1)输入图片背景地址:2)打开阿里巴巴后台-产品管理-管理图片银行-搜索需要的图片...

weixin_39912580的博客 2724

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【Python 实战基础】如何绘制热力图来模拟绘制北京景区热度图

Python如何绘制热力图来模拟绘制北京景区热度图 文件读写 基础语法 字符串处理 文件生成 数据构建

菜鸟实战的博客 3401

spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载一、springboot devtools热加载1、引入配置2、idea配置3、运行项目二、MybatisPlus配置三、kisso一、惯例先引包二、生成token 一、springboot devtools热加载 最近感觉开发每次都需要重启真的太麻烦了,还是把这个开起来吧,至于同事说的这个吃内存,吃就吃吧,效率赛高!!! (热加载:实时编译修改代码,虽然我感觉这是在轮询的,有事没事就会自己加载一个=。

叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽 677

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 608

Sail

DescriptionThe polar bears are going fishing. They plan to sail from (sx,?sy) to (ex,?ey). However, the boat can only sail by wind. At each second, the wind blows in one of these directions: east...

weixin_30869099的博客 150

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 227

第五节 Amesim《直动型溢流阀HCD建模》HCD5 学习资料

利用HCD原则创建直动型溢流阀的界面。这可能包括图形化表示直动型溢流阀的工作原理、操作方式和调节方法。这样的界面应当直观且易于理解,使用户能够轻松了解阀门的功能和使用方法。

m0_58052642的博客 1330

oracle cdr是什么,CDRD TALK|全栈架构Sails.js简介

原标题:CDRD TALK|全栈架构Sails.js简介Sails.js是一个可伸缩的、数据驱动的、面向服务的现代App架构。它致力于构建基于Node.js服务的定制化企业级应用。在Sails.js之前,构建一个实用的产品级Node.js应用的时间成本通常以月为单位计算。但是使用Sails.js后,只需要数周,便可以完成这一切。下面我们一步一步的建立一个基于Sails.js的示例App环境搭建打开...

weixin_33973572的博客 178

FANUC机器人PROFINET通讯方式组态

6 然后对模块进行命名及更改IP地址,点击“Network Detection”,进行扫描,会生成下图,双击商科模块会生成下边的对话框,对模块进行命名及更改IP地址,在“Permanent Name”处点对勾,完成后点击“Apply Name及Apply”进行命名。此处注意,上图左上在线在不了,网络扫描处上面也灰色的,扫描不了。5双击abcc-prt-2-port RT(FW1.13),生成下面图标,在右边点击1、2把原来内容删掉,从新在左侧加载 ,使1、2是输出,3、4为输入,完成后点击OK。

dxs93的博客 8429

手写一个代码热部署

最近发现javassist中一个十分好玩的类,HotSwapper,可以动态更改运行中的类,于是便想写一个代码热更新的小工具 热更新效果(不仅热更修改部分还保留了原来的变量值) Test1逻辑 编写过程我又突发奇想与原来的MakeR结合自动更新资源文件 自动更新资源文件效果 对指定资源目录的文件进行增删会自动更新R类 更新后的R类 HotSwapper使用起来也非常简单 // 必须指定虚拟机参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=

weixin_44598449的博客 683

FM20S用户手册-PL端案例开发手册

为便于演示,本次操作直接将led_flash案例中的 "led_flash_fm20s\constraints\constrs_1Ved_flash_fm20s.fdc"文件全部代码拷贝至编辑 界面,并点击保存按钮。引脚约束请查看案例工程"led_flash\project\led_flash_fm20s\constraints\constrs_1\"目 录下的led_flash_fm20sfdc。(4)弹出如下界面,在界面配置Select device forthe project"内容,如下图。

创龙,嵌入式一体化解决方案商 401

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 436

如何快速掌握Sail架构定义语言:面向初学者的完整指南

Sail(架构定义语言)是一个强大的形式化规范工具,专门用于描述和验证计算机指令集架构(ISA)。无论你是硬件工程师、形式化验证专家,还是对计算机体系结构感兴趣的开发者,这份指南都将帮助你快速上手Sail语言。🚀 ## 什么是Sail架构定义语言? Sail是一个专门为指令集架构设计的形式化规范语言,它能够精确描述CPU的指令行为、内存模型和并发特性。通过Sail,开发者可以为不同的处理器架

gitblog_00650的博客 908

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5335

AAAI 2025论文分享┆一种接近全监督的无训练文档信息抽取方法:SAIL(文中附代码链接)

本推文详细介绍了一篇AAAI 2025的最新论文,论文提出了一种无需训练的基于上下文学习的文档信息抽取方法SAIL。该方法可以非常便捷和高效地从收据、表格、发票等复杂文档中提取出有用的结构化信息。

audyxiao001的博客 3015

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

热部署系统实现

是指在不关闭或重启服务的情况下,更新Java类文件或配置文件,实现修改内容生效;通过热部署,可提高开发效率,节省程序打包重启的时间,同时,可实现生产环境中需要不停机或重启的服务的升级......

yangyanping20108的博客 4680

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)...

热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。 而热部署正是利用了这个特点,它监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系...

weixin_33816611的博客 1074

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JAVA代码热部署,在线不停服动态更新

本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署。 另 :spring-loaded spring-boot-devtools JRebel 三种方式也可以, JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须在命令行指定代理jar,并且代理类必须在main方法前启动,它要求开发者在应用启动前就...

moonpure的专栏 5749

c语言可以热编译吗,【请问】关于热部署

当前位置:我的异常网» C++»【请问】关于热部署【请问】关于热部署www.myexceptions.net网友分享于:2014-02-25浏览:0次【请教】关于热部署两个问题1.热部署的实现机制是什么?2.C语言能实现热部署吗?------解决方案--------------------OpenProcessTheOpenProcessfunctionreturnsah...

weixin_29504817的博客 295

如何自己手写一个热加载

如何自己手写一个热加载 热加载:在不停止程序运行的情况下,对类(对象)的动态替换 Java ClassLoader 简述 Java中的类从被加载到内存中到卸载出内存为止,一共经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。 接下来我们重点讲解加载和初始化这两步 加载 在加载的...

chiyun5349的博客 245

Java服务器热部署的实现原理——java类的加载方式

在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署。热部署的目的很简单,就是为了节省应用开发和发布的时间。比如,我们在使用Tomcat或者Jboss等应用服务器开发应用时,我们经常会开启热部署功能。热部署,简单点来说,就是我们将打包好的应用直接替换掉原有的应用,不用关闭或者重启服务器,一切就是这么简单。那么,热部署到底是如何实现的呢?在本文中,我将写一个实例,这个实例就是一个容

zhangzc的博客 7989

Intellij热部署插件JRebel(转)

Intellij热部署插件JRebel 安装JRebel 激活JRebel 相关设置 Intellij热部署插件JRebel 项目需求,一直用eclipse的我,也要改用IDEA了,一开始,很不习惯。经过几天的慢慢摸索和习惯之后,发现IDEA确实很好用。dark的界面是我喜欢的,智能的提示也让写代码不再枯燥。 遗憾的是IDEA本身没有集成热部署工具,一开始改动代码之后,都需要重新run或者deb...

taking_wang的专栏 425
上一篇: 【Sail】项目第一篇简介和环境搭建
下一篇: 【sail】第三篇MybatisPlus的配置以及FreeMarker的配置
bubble21
博客等级 码龄9年 33粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值