Cron在前端的使用,vue与element ui的vue-cron插件的使用及将定时任务cron表达式解析成中文

news2024/12/26 11:36:31

文章目录

  • vue-cron插件的使用
    • 安装依赖
    • 引用
    • Vue页面
    • 去掉秒和年
    • 定时任务cron解析成中文
    • 该插件存在的一个缺陷

vue-cron插件的使用

安装依赖

执行下面npm命令:
npm install vue-cron --save

引用

在想使用cron的vue页面引入以下:

import VueCron from ‘vue-cron’
import Vue from ‘vue’
Vue.use(VueCron)

Vue页面

<el-col :span="12">
    <el-form-item label="同步时间" prop="execTime">
      <el-popover v-model="cronPopover">
        <vueCron @change="changeCron" @close="cronPopover=false" i18n="cn"/>
        <el-input
          slot="reference"
          v-model="ruleForm.execTime"
          placeholder="定时策略"
          @click="cronPopover=true"
        />
      </el-popover>
    </el-form-item>
  </el-col>
</el-row>

运行
在这里插入图片描述

去掉秒和年

在vue页面“style scoped”中通过控制样式去掉秒年

#changeContab /deep/ #tab-0 { display: none; }
#changeContab /deep/ #tab-5 { display: none; }

定时任务cron解析成中文

简易的工具类
可根据需要进行修改

import org.redisson.executor.CronExpression;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

//import  org.quartz.CronExpression;

public class CornUtil {
    /**
     * 解析corn表达式,生成指定日期的时间序列
     *
     * @param cronExpression cron表达式
     * @param cronDate cron解析日期
     * @param result crom解析时间序列
     * @return 解析成功失败
     */
    public  static  boolean  parser(String cronExpression, String cronDate, List<String> result)
    {
        if  (cronExpression ==  null  || cronExpression.length() <  1  || cronDate ==  null  || cronDate.length() <  1 )
        {
            return  false ;
        }
        else
        {
            CronExpression exp =  null ;
            // 初始化cron表达式解析器
            try
            {
                exp =  new  CronExpression(cronExpression);
            }
            catch  (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return  false ;
            }

            // 定义生成时间范围
            // 定义开始时间,前一天的23点59分59秒
            Calendar c = Calendar.getInstance();
            String sStart = cronDate +  " 00:00:00" ;
            SimpleDateFormat sdf =  new  SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
            Date dStart =  null ;
            try
            {
                dStart = sdf.parse(sStart);
            }
            catch  (ParseException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            c.setTime(dStart);
            c.add(Calendar.SECOND, - 1 );
            dStart = c.getTime();

            // 定义结束时间,当天的23点59分59秒
            c.add(Calendar.DATE,  1 );
            Date dEnd = c.getTime();

            // 生成时间序列
            Date dd = dStart;
            dd = exp.getNextValidTimeAfter(dd);
            while  ((dd.getTime() >= dStart.getTime()) && (dd.getTime() <= dEnd.getTime()))
            {
                result.add(sdf.format(dd));
                dd = exp.getNextValidTimeAfter(dd);
            }
            exp =  null ;
        }
        return  true ;
    }

    public  static  String translateToChinese(String cronExp)
    {
        if  (cronExp ==  null  || cronExp.length() <  1 )
        {
            return  "cron表达式为空" ;
        }
        CronExpression exp =  null ;
        // 初始化cron表达式解析器
        try
        {
            exp =  new  CronExpression(cronExp);
        }
        catch  (Exception e)
        {
            return  "corn表达式不正确" ;
        }
        String[] tmpCorns = cronExp.split( " " );
        StringBuffer sBuffer =  new  StringBuffer();
        if (tmpCorns.length ==  6 )
        {
            //解析月
            if (tmpCorns[ 4 ].equals( "*" ))
            {
                sBuffer.append( "每月" );
            }
            else if (tmpCorns[ 4 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 4 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "月开始每隔" + last + "月");
            }
            else
            {
                sBuffer.append(tmpCorns[ 4 ]).append( "月" );
            }
            //解析周
            if (!tmpCorns[ 5 ].equals( "*" ) && !tmpCorns[ 5 ].equals( "?" ))
            {
                if (tmpCorns[ 5 ].contains("/")){
                    String[] str = StringUtils.split(tmpCorns[ 5 ],"/");
                    String first = str[0];
                    String last = str[1];
                    switch  (first)
                    {
                        case  "1" :
                            sBuffer.append( "从星期天开始每隔" + last + "周");
                            break ;
                        case  "2" :
                            sBuffer.append( "从星期一开始每隔" + last + "周");
                            break ;
                        case  "3" :
                            sBuffer.append( "从星期二开始每隔" + last + "周");
                            break ;
                        case  "4" :
                            sBuffer.append( "从星期三开始每隔" + last + "周");
                            break ;
                        case  "5" :
                            sBuffer.append( "从星期四开始每隔" + last + "周");
                            break ;
                        case  "6" :
                            sBuffer.append( "从星期五开始每隔" + last + "周");
                            break ;
                        case  "7" :
                            sBuffer.append( "从星期六开始每隔" + last + "周");
                            break ;
                    }
                }else if (tmpCorns[ 5 ].contains("#")){
                    String[] str = StringUtils.split(tmpCorns[ 5 ],"#");
                    String first = str[0];
                    String last = str[1];
                    switch  (first)
                    {
                        case  "1" :
                            sBuffer.append( "第" + last + "个" + "星期天");
                            break ;
                        case  "2" :
                            sBuffer.append( "第" + last + "个" + "星期一");
                            break ;
                        case  "3" :
                            sBuffer.append( "第" + last + "个" + "星期二");
                            break ;
                        case  "4" :
                            sBuffer.append( "第" + last + "个" + "星期三");
                            break ;
                        case  "5" :
                            sBuffer.append( "第" + last + "个" + "星期四");
                            break ;
                        case  "6" :
                            sBuffer.append( "第" + last + "个" + "星期五");
                            break ;
                        case  "7" :
                            sBuffer.append( "第" + last + "个" + "星期六");
                            break ;
                    }
                }
                else if (tmpCorns[ 5 ].contains("L") && !tmpCorns[ 5 ].contains("W") && tmpCorns[ 5 ].toCharArray().length == 2){
                    switch  (tmpCorns[ 5 ])
                    {
                        case  "1L" :
                            sBuffer.append( "最后一个星期天" );
                            break ;
                        case  "2L" :
                            sBuffer.append( "最后一个星期一" );
                            break ;
                        case  "3L" :
                            sBuffer.append( "最后一个星期二" );
                            break ;
                        case  "4L" :
                            sBuffer.append( "最后一个星期三" );
                            break ;
                        case  "5L" :
                            sBuffer.append( "最后一个星期四" );
                            break ;
                        case  "6L" :
                            sBuffer.append( "最后一个星期五" );
                            break ;
                        case  "7L" :
                            sBuffer.append( "最后一个星期六" );
                            break ;
                    }
                }
                else {
                    String [] tmpArray =  tmpCorns[ 5 ].split(",");
                    for ( String  tmp:tmpArray)
                    {
                        switch  (tmp)
                        {
                            case  "SUN" :
                                sBuffer.append( "星期天" );
                                break ;
                            case  "MON" :
                                sBuffer.append( "星期一" );
                                break ;
                            case  "TUE" :
                                sBuffer.append( "星期二" );
                                break ;
                            case  "WED" :
                                sBuffer.append( "星期三" );
                                break ;
                            case  "THU" :
                                sBuffer.append( "星期四" );
                                break ;
                            case  "FRI" :
                                sBuffer.append( "星期五" );
                                break ;
                            case  "SAT" :
                                sBuffer.append( "星期六" );
                                break ;
                            case  "-" :
                                sBuffer.append( "至" );
                                break ;
                            default :
                                sBuffer.append(tmp);
                                break ;
                        }
                    }
                }
            }

            //解析日
            if (!tmpCorns[ 3 ].equals( "?" ))
            {
                if (tmpCorns[ 3 ].equals( "*" ))
                {
                    sBuffer.append( "每日" );
                }
                else if (tmpCorns[ 3 ].contains("/")){
                    String[] str = StringUtils.split(tmpCorns[ 3 ],"/");
                    String first = str[0];
                    String last = str[1];
                    sBuffer.append( "第" + first + "天开始每隔" + last + "天");
                }
                else if (tmpCorns[ 3 ].contains("L") && tmpCorns[ 3 ].toCharArray().length == 1){
                    sBuffer.append("最后一天");
                }
                else if (tmpCorns[ 3 ].contains("LW") && tmpCorns[ 3 ].toCharArray().length == 2){
                    sBuffer.append("最后一个工作日");
                }
                else if (tmpCorns[ 3 ].contains("L-")){
                    switch  (tmpCorns[ 3 ])
                    {
                        case  "L-1" :
                            sBuffer.append( "月底前1日" );
                            break ;
                        case  "L-2" :
                            sBuffer.append( "月底前2日" );
                            break ;
                        case  "L-3" :
                            sBuffer.append( "月底前3日" );
                            break ;
                        case  "L-4" :
                            sBuffer.append( "月底前4日" );
                            break ;
                        case  "L-5" :
                            sBuffer.append( "月底前5日" );
                            break ;
                        case  "L-6" :
                            sBuffer.append( "月底前6日" );
                            break ;
                        case  "L-7" :
                            sBuffer.append( "月底前7日" );
                            break ;
                        case  "L-8" :
                            sBuffer.append( "月底前8日" );
                            break ;
                        case  "L-9" :
                            sBuffer.append( "月底前9日" );
                            break ;
                        case  "L-10" :
                            sBuffer.append( "月底前10日" );
                            break ;
                        case  "L-11" :
                            sBuffer.append( "月底前11日" );
                            break ;
                        case  "L-12" :
                            sBuffer.append( "月底前12日" );
                            break ;
                        case  "L-13" :
                            sBuffer.append( "月底前13日" );
                            break ;
                        case  "L-14" :
                            sBuffer.append( "月底前14日" );
                            break ;
                        case  "L-15" :
                            sBuffer.append( "月底前15日" );
                            break ;
                        case  "L-16" :
                            sBuffer.append( "月底前16日" );
                            break ;
                        case  "L-17" :
                            sBuffer.append( "月底前17日" );
                            break ;
                        case  "L-18" :
                            sBuffer.append( "月底前18日" );
                            break ;
                        case  "L-19" :
                            sBuffer.append( "月底前19日" );
                            break ;
                        case  "L-20" :
                            sBuffer.append( "月底前20日" );
                            break ;
                        case  "L-21" :
                            sBuffer.append( "月底前21日" );
                            break ;
                        case  "L-22" :
                            sBuffer.append( "月底前22日" );
                            break ;
                        case  "L-23" :
                            sBuffer.append( "月底前23日" );
                            break ;
                        case  "L-24" :
                            sBuffer.append( "月底前24日" );
                            break ;
                        case  "L-25" :
                            sBuffer.append( "月底前25日" );
                            break ;
                        case  "L-26" :
                            sBuffer.append( "月底前26日" );
                            break ;
                        case  "L-27" :
                            sBuffer.append( "月底前27日" );
                            break ;
                        case  "L-28" :
                            sBuffer.append( "月底前28日" );
                            break ;
                        case  "L-29" :
                            sBuffer.append( "月底前29日" );
                            break ;
                        case  "L-30" :
                            sBuffer.append( "月底前30日" );
                            break ;
                        case  "L-31" :
                            sBuffer.append( "月底前31日" );
                            break ;
                    }
                }
                else if (tmpCorns[ 3 ].contains("W") && !tmpCorns[ 3 ].contains("L")){
                    switch  (tmpCorns[ 3 ])
                    {
                        case  "1W" :
                            sBuffer.append( "最近的工作日至本月1日" );
                            break ;
                        case  "2W" :
                            sBuffer.append( "最近的工作日至本月2日" );
                            break ;
                        case  "3W" :
                            sBuffer.append( "最近的工作日至本月3日" );
                            break ;
                        case  "4W" :
                            sBuffer.append( "最近的工作日至本月4日" );
                            break ;
                        case  "5W" :
                            sBuffer.append( "最近的工作日至本月5日" );
                            break ;
                        case  "6W" :
                            sBuffer.append( "最近的工作日至本月6日" );
                            break ;
                        case  "7W" :
                            sBuffer.append( "最近的工作日至本月7日" );
                            break ;
                        case  "8W" :
                            sBuffer.append( "最近的工作日至本月8日" );
                            break ;
                        case  "9W" :
                            sBuffer.append( "最近的工作日至本月9日" );
                            break ;
                        case  "10W" :
                            sBuffer.append( "最近的工作日至本月10日" );
                            break ;
                        case  "11W" :
                            sBuffer.append( "最近的工作日至本月11日" );
                            break ;
                        case  "12W" :
                            sBuffer.append( "最近的工作日至本月12日" );
                            break ;
                        case  "13W" :
                            sBuffer.append( "最近的工作日至本月13日" );
                            break ;
                        case  "14W" :
                            sBuffer.append( "最近的工作日至本月14日" );
                            break ;
                        case  "15W" :
                            sBuffer.append( "最近的工作日至本月15日" );
                            break ;
                        case  "16W" :
                            sBuffer.append( "最近的工作日至本月16日" );
                            break ;
                        case  "17W" :
                            sBuffer.append( "最近的工作日至本月17日" );
                            break ;
                        case  "18W" :
                            sBuffer.append( "最近的工作日至本月18日" );
                            break ;
                        case  "19W" :
                            sBuffer.append( "最近的工作日至本月19日" );
                            break ;
                        case  "20W" :
                            sBuffer.append( "最近的工作日至本月20日" );
                            break ;
                        case  "21W" :
                            sBuffer.append( "最近的工作日至本月21日" );
                            break ;
                        case  "22W" :
                            sBuffer.append( "最近的工作日至本月22日" );
                            break ;
                        case  "23W" :
                            sBuffer.append( "最近的工作日至本月23日" );
                            break ;
                        case  "24W" :
                            sBuffer.append( "最近的工作日至本月24日" );
                            break ;
                        case  "25W" :
                            sBuffer.append( "最近的工作日至本月25日" );
                            break ;
                        case  "26W" :
                            sBuffer.append( "最近的工作日至本月26日" );
                            break ;
                        case  "27W" :
                            sBuffer.append( "最近的工作日至本月27日" );
                            break ;
                        case  "28W" :
                            sBuffer.append( "最近的工作日至本月28日" );
                            break ;
                        case  "29W" :
                            sBuffer.append( "最近的工作日至本月29日" );
                            break ;
                        case  "30W" :
                            sBuffer.append( "最近的工作日至本月30日" );
                            break ;
                        case  "31W" :
                            sBuffer.append( "最近的工作日至本月31日" );
                            break ;
                    }
                }
                else
                {
                    sBuffer.append(tmpCorns[ 3 ]).append( "日" );
                }
            }

            //解析时
            if (tmpCorns[ 2 ].equals( "*" ))
            {
                sBuffer.append( "每时" );
            }
            else if (tmpCorns[ 2 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 2 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "时开始每隔" + last + "时");
            }
            else
            {
                sBuffer.append(tmpCorns[ 2 ]).append( "时" );
            }

            //解析分
            if (tmpCorns[ 1 ].equals( "*" ))
            {
                sBuffer.append( "每分" );
            }
            else if (tmpCorns[ 1 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 1 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "分开始每隔" + last + "分");
            }
            else
            {
                sBuffer.append(tmpCorns[ 1 ]).append( "分" );
            }

            //解析秒
            /*if (!tmpCorns[ 0 ].equals( "*" ))
            {
                sBuffer.append(tmpCorns[ 0 ]).append( "秒" );
            }
            else
            {
                sBuffer.append( "每秒" );
            }*/
        }

        return  sBuffer.toString();

    }

    //测试方法
//    public  static  void  main(String[] args)
//    {
//        String CRON_EXPRESSION =  "01 * * 2L * ?" ;
//        // 生成指定日期的CRON时间序列
//        String CRON_DATE =  "2016-04-26" ;
//        System.out.println(CRON_EXPRESSION);
//        System.out.println(translateToChinese(CRON_EXPRESSION));
//
//        List<String> lTime =  new  ArrayList<String>();
//        if (!parser(CRON_EXPRESSION, CRON_DATE, lTime)){
//            System.out.println( "无法生成Cron表达式:日期," +CRON_DATE+ ";不符合规则cron表达式:" +CRON_EXPRESSION);
//        }
//        for ( int  i= 0 ;i<lTime.size();i++){
//            System.out.println(lTime.get(i));
//        }
//
//    }
}

该插件存在的一个缺陷

在这里插入图片描述
如图中生成的cron表达式 * * * 1L * ? * 是错误的表达式,应为 * * * ? * 1L *才对

参考:

 public static void main(String[] args){
        String execTime = "* * * 1L * ?";
        String resultString = "";
        String[] str = execTime.split(" ");
        if((str[3].equalsIgnoreCase("1L")  || str[3].equalsIgnoreCase("2L")  || str[3].equalsIgnoreCase("3L")  || str[3].equalsIgnoreCase("4L")  || str[3].equalsIgnoreCase("5L")  || str[3].equalsIgnoreCase("6L")|| str[3].equalsIgnoreCase("7L")) && str[5].equalsIgnoreCase("?")){
            str[5] = str[3];
            str[3] = "?";
            for (String s : str) {
                resultString += s+" ";
            }
            System.out.println(resultString.substring(0,execTime.length()));
        }
    }

输出:* * * ? * 1L

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node版本管理工具nvm安装和使用

公司的前端项目使用的node版本是10.11.1比较老的版本&#xff0c;但是新开发的项目需要使用vue3viteelectron,需要使用较新的node版本 。综上决定研究研究nvm对node进行切换管理。有相同需求的朋友希望下面的文章可以帮助到你们。借鉴了一些博主的文章&#xff0c;在文章里也总…

重磅!Cloud Ace 在班加罗尔和孟买成立新的据点

Cloud Ace Cooperation&#xff08;总部位于东京千代田区&#xff1b; Makoto Aoki&#xff0c;总裁&#xff09;很高兴地宣布&#xff0c;我们已经在班加罗尔建立了新的开发中心&#xff0c;并在孟买建立了新的销售办事处&#xff0c;作为 Cloud Ace 进一步扩大公司在印度业务…

docker-compose通过volume恢复mysql数据

概述 docker rm是docker删除容器的命令。 会清空容器内的所有数据和配置&#xff0c;即真正的将容器清空并删除。 但是之前通过volume挂载到宿主机上是不受影响的。 docker rm -v如果是-v的命令那么会同时删除通过volume映射到宿主机上的文件 通过volume恢复数据 使用docke…

第六十六天学习记录:《高质量C/C++编程指南》中附录的考试试卷(含答案)

该试卷转载自林锐《高质量C/C编程指南》&#xff0c;先贴下原作者的版权声明。 版权声明&#xff1a;本书的大部分内容取材于作者一年前的书籍手稿&#xff08;尚未出版&#xff09;&#xff0c;现整理汇编成为上海贝尔网络应用事业部的一个规范化文件&#xff0c;同时作为培训…

chatgpt赋能python:Python如何分配内存

Python如何分配内存 Python是一种动态解释型语言&#xff0c;它在运行时分配内存用于存储变量和对象。Python提供了一种内存管理机制&#xff0c;它能够动态地分配和管理内存。本文将介绍Python如何分配内存并讨论与之相关的一些最佳实践。 Python内存管理机制 Python中的所…

Vue.js 中的性能优化是什么?如何进行性能优化?

Vue.js 中的性能优化是什么&#xff1f;如何进行性能优化&#xff1f; Vue.js 是一款流行的前端框架&#xff0c;它具有响应式数据绑定、组件化开发、虚拟 DOM 等特性&#xff0c;使得开发者可以更加高效地构建交互式的用户界面。然而&#xff0c;在实际开发中&#xff0c;由于…

LeetCode 2352. 相等行列对:手动哈希

【LetMeFly】2352.相等行列对&#xff1a;手动哈希 力扣题目链接&#xff1a;https://leetcode.cn/problems/equal-row-and-column-pairs/ 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid &#xff0c;返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。 如果行和…

ArduPilot之H743遗留配置问题解决

ArduPilot之H743遗留配置问题解决 1. 源由2. 资源3 遗留问题汇总3.1 问题一&#xff1a;无法设置VTX 600m3.2 问题二&#xff1a;双向Dshot未显示RMP转速3.3 问题三&#xff1a;mavlink esp32 2.4G WiFi电传 4. 参考资料 1. 源由 在ArduPilot开源代码之H743BMI270x2ChibiOS配置…

步进电机相数、细分、步距角、接线方法

1、旋转步进电机 旋转步进电机就是电机是一步一步转动的&#xff0c;故叫旋转步进电动机。每输入一个脉冲冲信号&#xff0c;该电动机就转过一定的角度&#xff0c;因此旋转步进电机是一种把脉冲变为角度位移的执行元件。 可通过脉冲频率控制步进电机的旋转速度&#xff0c;通…

ChatGPT中文版提示词学习手册, 学完工作效率提升百倍!

既然你对ChatGPT及其功能有了⼀些了解&#xff0c;让我们更深入地了解⼀下ChatGPT是什么以及它是如何工作的。 那么ChatGPT是如何工作的呢&#xff1f;在高层次上&#xff0c;这个过程可以分解为以下步骤&#xff1a; 1. 用户将文本输入ChatGPT界面。这可能是一个问题&#xf…

Android AIDL的使用(配源码)

零、完整源代码 链接: https://github.com/jx0260/TestGradle 一、创建AIDL文件 // IShopAidlInterface.aidl package com.example.testgradle;// Declare any non-default types here with import statementsinterface IShopAidlInterface {String getProductInfo(int prod…

speedtest-cli 源码集成

speedtest-cli 是一个开源的测速sdk&#xff0c;可以下载源码集成到自己的项目中&#xff0c;源码是C代码&#xff0c;所以可以集成到linux终端程序中&#xff0c;如果在Android APP中需要通过NDK开发集成&#xff0c;下面是在linux设备中集成过程。 1、首先在github中下载源码…

代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机|122.买卖股票的最佳时机II

LeetCode121. 买卖股票的最佳时机 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][0] 表示第i天持有股票所得最多现金&#xff0c;其实一开始现金是0&#xff0c;那么加入第i天买入股票现金就是 -pric…

界面组件DevExpress Reporting v22.2亮点 - 添加更多自定义支持

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v22.2已正式发布一…

CDN如何帮助我们的网站实现安全?

各类网络攻击正在变得越来越复杂&#xff0c;它们有可能导致服务可用性的严重中断和企业的财务损失。根据Gartner的数据&#xff0c;IT行业平均停机每分钟就将为企业带来超过3万元的损失。 对于每个具有在线相关业务的企业&#xff0c;如何能以安全、可靠和快速的方式服务于用…

MySQL(进阶篇2.0)

SQL优化 插入数据 insert 如果需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化 1、优化方案一 批量插入数据 insert into tb_test values(1, Tom),(2,Cat),(3,Jerry);2、优化方案二 手动控制事务 start transaction; insert into tb_test v…

ShardingSphere 荣获一等奖!2022 年中国开源创新大赛成绩单公布

&#x1f3c6; 参赛回顾 “2022年中国开源创新大赛”在国家中央网信办信息化发展局的指导下&#xff0c;由中国互联网发展基金会、中国网络空间研究院、中国互联网投资基金联合主办&#xff0c;大赛以“开源创新&#xff0c;共建生态”为主题&#xff0c;围绕国家在开源人才培养…

uniApp页面通讯大汇总,如何页面之间传值

文章目录 往期回顾页面通讯出现场景通讯方案通讯方案小结 如何父传子页面跳转时序图 uni.\$on和eventChannel.on使用推荐 往期回顾 uniapp 踩坑记录 uni.$on为什么不能修改data里面的数据 页面通讯 出现场景 我们在一个页面往另一个页面跳转的时候&#xff0c;希望跳转的页…

golang实现webgis后端开发

目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 &#xff08;5&#xff09;数据返回 2.前端传入的geojson储存到数据库 3、其他功能实现 总结 前言 停更了…

从java直接上手SpringBoot【CTGU启明星】

本文适合刚刚学完java包括面向对象的同学&#xff0c;直接上手SpringBoot教程。 一、写在前面 先说说为什么这样做&#xff0c;现在主流的java后端学习是 面向对象->ssm框架->SpringBoot 其间还穿插数据库的学习&#xff0c;例如MyBatis等。 但是我们认为从项目入手…