Flask boostrap实现图片视频上传下载展示

news2024/9/30 15:21:50

Flask boostrap实现图片视频上传下载展示

  • 1、展示效果
  • 2、前端代码
  • 3、后端代码

1、展示效果

在这里插入图片描述

在这里插入图片描述

项目目录结构
在这里插入图片描述

2、前端代码

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.min.css" crossorigin="anonymous">
     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" crossorigin="anonymous"></script>
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
    -->



         <!-- 国内的,预览有些按钮用不了 新 Bootstrap5 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css">
<!-- 最新的 Bootstrap5 核心 JavaScript 文件 -->
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" crossorigin="anonymous"></script>


    <link href="../static/fileinput/css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>
    <link href="../static/fileinput/themes/explorer-fa5/theme.css" media="all" rel="stylesheet" type="text/css"/>
    <script src="../static/fileinput/js/plugins/buffer.min.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/plugins/filetype.min.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/plugins/piexif.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/plugins/sortable.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/fileinput.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/locales/fr.js" type="text/javascript"></script>
    <script src="../static/fileinput/js/locales/es.js" type="text/javascript"></script>
    <script src="../static/fileinput/themes/fa5/theme.js" type="text/javascript"></script>
    <script src="../static/fileinput/themes/explorer-fa5/theme.js" type="text/javascript"></script>

   <script src="../static/js/imgEnlarge.js"></script>

    <style>
        /*统配设置整个文件为宋体,12号字*/
        *{
            font-family: '楷体';
            font-size:12px;
        }
        /*设置商品列表宽度占浏览器60%,居中*/
        #main {

            width:90%;
            height: 600px;
            margin: 0 auto;
            border:0px solid green;
        }

        #main2 {

            width:90%;
            height: 600px;
            margin: 0 auto;
            border:0px solid green;
        }

        /*设置图片宽高*/
        img {
            width: 140px;
            height: 200px;
            padding: 25px 25px 0px 25px;

        }

         /*设置图片宽高*/
        video {
            width: 300px;
            height: 220px;

            padding: 10px 10px 0px 10px;

        }


        .myvideobord {
            width:330px;
            height: 260px;
            border: 2px solid green;
            border-radius:10px;/*设置圆角矩形*/
            margin-left: 5px;
            margin-bottom: 20px;/*边框上下距离*/
            margin-right: 5px;
        }


        /*设置图片边框*/
        .sfz_01_34 {
            width:200px;
            height: 250px;
            border: 2px solid green;
            border-radius:10px;/*设置圆角矩形*/
            margin-left: 5px;
            margin-bottom: 20px;/*边框上下距离*/
            margin-right: 5px;
        }
        .sfz_02_34{
            color: red;
            text-align: center;
        }
        .sfz_03_34{
            height: 60px;
            color:black;
            text-indent: 2em;
        }
        /*设置加入购物单*/
        .sfz_04_34{
           margin-left:20px;
            padding-top:10px
            padding-bottom:10px;
            text-align: center;
            font-size: 10px;
            border-radius:0px;
            color: white;
            width: 30%;
           line-height: 20px;
            background: red;
            float: left;
        }
        .sfz_05_34{
           margin-right: 20px;/*靠边框距离*/
            color: white;
            font-size: 10px;
            width: 30%;
            height: 20px;
            line-height: 20px;/*字在中间*/
            text-align: center;
            background: greenyellow;
            float: right;

        }

        /*去掉列表序号去掉*/
        ul {
            list-style: none;
            overflow: hidden;
        }
        /*设置左浮动*/
        ul li {
            float: left;
        }

        /*设置默认状态是黑色字体*/
        a:link {
            color: black;
        }
        /*设置鼠标放上去后显示红色*/
        div:hover {
           border-color: #ff0000;
        }

        {#.qqq{#}
        {#    transition: all 0.2s linear;#}
        {#}#}
        {##}
        {#.qqq:hover{#}
        {#    transform: scale(1.8);#}
        {#    transition: all 0.2s linear;#}
        {#}#}

    </style>
<!--
     <script src="static/js/jquery-3.3.1.min.js"></script>
   -->


      <script>
         $(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>

</head>
<body class="container my-4">

<br> <br> <br>

 <div class="container"  style=" padding: 10px 3ex 2em 1cm; border: 2px solid blue;width: 70%;height: 100%">

      <hr>
    <p align="center"  style="color:sienna;font-size:30px"  >上传表单</p>
    <hr>

        <form  action="/" method="post" class="form-horizontal" role="form" enctype="multipart/form-data" >

            <div class="form-group">
                <label for="name" class="control-label col-md-4">用户名</label>
                <div class="col-md-4">
                    <input type="text" id="name" name="name" class="form-control" placeholder="请输入用户名">
                </div>
            </div>

            <div class="form-group">
                <label for="pwd" class="control-label col-md-4">密码</label>
                <div class="col-md-4">
                    <input type="text" class="form-control" id="pwd" name="password" placeholder="请输入密码">
                </div>
            </div>

            <div class="form-group">
                <label class="control-label col-md-4" >性别</label>
                <div class="col-md-4">
                    <label class="radio-inline" for="male"><input type="radio" name="sex" id="male" ></label>
                    <label class="radio-inline" for="female"><input type="radio" name="sex" id="female"
                            checked></label>
                </div>
            </div>

            <div class="form-group">
                <label for="" class="control-label col-md-4">兴趣爱好</label>
                <div class="col-md-4">
                    <label for="qin" class="checkbox-inline"><input type="checkbox" name="" id="qin"></label>
                    <label for="qi" class="checkbox-inline"><input type="checkbox" name="" id="qi"></label>
                    <label for="shu" class="checkbox-inline"><input type="checkbox" name="" id="shu"></label>
                    <label for="hua" class="checkbox-inline"><input type="checkbox" name="" id="hua" checked></label>
                </div>
            </div>

            <div class="form-group">
                <label for="" class="control-label col-md-4">所在地</label>
                <div class="col-md-4">
                    <select name="adree" id="" class="form-control">
                        <option value="">湖北</option>
                        <option value="">湖南</option>
                        <option value="">河北</option>
                        <option value="" selected>河南</option>
                    </select>
                </div>
            </div>


             <div class="form-group">

            <div class="file-loading">
                <input  id="file-1" name="video" type="file" multiple class="file" data-overwrite-initial="false" data-min-file-count="1" data-browse-on-zone-click="true">
            </div>
        </div>

            <div class="form-group">

            <div class="file-loading">
                <input  id="file-2" name="image" type="file" multiple class="file" data-overwrite-initial="false" data-min-file-count="2" data-browse-on-zone-click="true">
            </div>
        </div>




              <div class="form-group">
                  <button type="submit" class="btn btn-primary">Submit</button>
                  <button type="reset" class="btn btn-outline-secondary">Reset</button>

              </div>



        </form>

     <br> <br> <br> <br>
 </div>

<hr>
<br>
<hr>

<div  class="container">

<hr>
<p align="center"  style="color:sienna;font-size:30px"  >图像展示</p>
<hr>

    <ul>

     <!--   <li>
            <div class="sfz_01_34"><img src="p30.png">
            <p class="sfz_02_34">¥3998.00</p>
            <p class="sfz_03_34">p30 超感光麒麟980AL智能芯片全面屏屏内指纹版手机8G+128GB全网通4G手机</p>
            <p class="sfz_04_34">加入购物车</p>
            <p class="sfz_05_34">立即购买</p>
            </div>
        </li>

          <li>
            <div class="sfz_01_34"><img src="../static/hua.jpg">
              <a class="sfz_05_34" href="url">链接文本</a>

            </div>
        </li>


        -->

        {% for value in imglist %}

         <li>
            <div class="sfz_01_34"><img class="qqq" src="./static/myfile/img/{{ value }}">
                 <a class="sfz_04_34" href="/delete/img/{{ value }}/">删除</a>

              <a class="sfz_05_34" href="/down/img/{{ value }}/">下载</a>

            </div>
        </li>
        {% endfor %}

    </ul>
</div>
<hr>
<br>
<hr>
<div  class="container">
    <hr>
    <p align="center"  style="color:sienna;font-size:30px"  >视频展示</p>
    <hr>

    <ul>

     <!--   <li>
            <div class="sfz_01_34"><img src="p30.png">
            <p class="sfz_02_34">¥3998.00</p>
            <p class="sfz_03_34">p30 超感光麒麟980AL智能芯片全面屏屏内指纹版手机8G+128GB全网通4G手机</p>
            <p class="sfz_04_34">加入购物车</p>
            <p class="sfz_05_34">立即购买</p>
            </div>
        </li>

        <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="../static/myfile/video/12s.mp4" type="video/mp4">
                  <source src="../static/myfile/video/12s.ogg" type="video/ogg">
                  <source src="../static/myfile/video/12s.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>


        -->


{#   {% for value in imglist %}#}
{##}
{#         <li>#}
{#            <div class="sfz_01_34"><img class="qqq" src="./static/myfile/img/{{ value }}">#}
{#                 <a class="sfz_04_34" href="/delete/{{ value }}/">删除</a>#}
{##}
{#              <a class="sfz_05_34" href="/down/{{ value }}/">下载</a>#}
{##}
{#            </div>#}
{#        </li>#}
{#        {% endfor %}#}


         {% for value in videolist %}
             <li>
                <div class="myvideobord">

                   <video width="320" height="240" controls autoplay>
                      <source src="../static/myfile/video/{{ value }}" type="video/mp4">

                      您的浏览器不支持 video 属性。
                    </video>
                     <a class="sfz_04_34" href="/delete/video/{{ value }}">删除</a>
                     <a class="sfz_05_34" href="/down/video/{{ value }}/">下载</a>
                </div>
            </li>
         {% endfor %}



<!--
         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>



         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>




         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>



         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>



         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>


         <li>
            <div class="myvideobord">

               <video width="320" height="240" controls autoplay>
                  <source src="movie.mp4" type="video/mp4">
                  <source src="movie.ogg" type="video/ogg">
                  <source src="movie.webm" type="video/webm">
                  您的浏览器不支持 video 属性。
                </video>
                 <a class="sfz_04_34" href="#">删除</a>
                 <a class="sfz_05_34" href="#">下载</a>
            </div>
        </li>

        -->

    </ul>
</div>




<script>

    $("#file-0").fileinput({
        theme: 'fa5',
        uploadUrl: '#',
        overwriteInitial: false,
    }).on('filepreupload', function(event, data, previewId, index) {
        alert('The description entered is:\n\n' + ($('#description').val() || ' NULL'));
    });

      $("#file-1").fileinput({
          language: 'zh',     //设置语言
        dropZoneEnabled: true,      //是否显示拖拽区域
        dropZoneTitle: "视频拖放到这里",    //拖拽区域显示文字

        theme: 'fa5',
        uploadUrl: '#', // you must set a valid URL here else you will get an error
        allowedFileExtensions: ['mp4'],
        overwriteInitial: false,
          showUpload: false, //是否显示上传按钮
        maxFileSize: 9000,
        maxFilesNum: 100,
        //allowedFileTypes: ['image', 'video', 'flash'],

    });

       $("#file-2").fileinput({

           language: 'zh',     //设置语言
        dropZoneEnabled: true,      //是否显示拖拽区域
        dropZoneTitle: "图片拖放到这里",    //拖拽区域显示文字

        theme: 'fa5',
        uploadUrl: '#', // you must set a valid URL here else you will get an error
        allowedFileExtensions: ['jpg', 'png', 'gif'],
        overwriteInitial: false,
           showUpload: false, //是否显示上传按钮
        maxFileSize: 9000,
        maxFilesNum: 100,
         //  minFileCount: 1,
        //allowedFileTypes: ['image', 'video', 'flash'],
           /*
        slugCallback: function (filename) {
            return filename.replace('(', '_').replace(']', '_');
        } */
    });

/*
    $('#file').fileinput({
        language: 'zh',     //设置语言
        dropZoneEnabled: true,      //是否显示拖拽区域
        dropZoneTitle: "可以将图片拖放到这里",    //拖拽区域显示文字
        uploadUrl: 'file/imgSave',  //上传路径
        allowedFileExtensions: ['jpg', 'png', 'gif', 'jpeg'],   //指定上传文件类型
        maxFileSize: 0,
        maxFileSize: 2048,   //上传文件最大值,单位kb
        uploadAsync: true,  //异步上传
        maxFileCount: 2    //上传文件最大个数。
    }).on("fileuploaded", function(event,data) { //异步上传成功后回调
        console.log(data);		//data为返回的数据
    });
*/


</script>



</body>
</html>

js代码
fileinput插件下载地址:https://github.com/kartik-v/bootstrap-fileinput/

imgEnlarge.js如下

// 依赖jq 默认点击<img>标签就会放大,可根据自己情况修改

$(document).ready(function () {
    $("body").append("<!--放大图片-->\n" +
        "<div class=\"blackScreen\" style=\"display: none;display:none;    position:fixed;    top:0;    right:0;    bottom:0;    left:0;    background-color:#000000;    z-index:1000;\">\n" +
        "    <span class=\"fullScreenImg\" style='position:absolute;    top:0;    right:0;    bottom:60px;    left:0;    background:center center no-repeat;    background-size:contain;'></span>\n" +
        "</div>");
});

$(function () {

// 放大图片
    $('img').on('click', function () {
        // console.log("放大");
        if (this.getAttribute("src") != "url(\"null\") 0% 0% / 100% no-repeat") {
            $(".fullScreenImg").css("background-image", "url(\"" + this.getAttribute("src") + "\")");
            $(".blackScreen").fadeIn(100);
        }
    });

// 关闭放大图片
    $(".blackScreen").on("click", function () {
        // console.log("关闭");
        $(".blackScreen").fadeOut(100);
    });

});

3、后端代码


# from flask import Flask, render_template
# from flask import request, url_for, redirect, flash
import os
import uuid
from flask import  Flask, render_template,send_from_directory, url_for, request,jsonify,redirect

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def mulfileupload():
    path_imgs = 'static/myfile'
    imglist = os.listdir(path_imgs+'/img')
    videolist=os.listdir(path_imgs+'/video')

    # path_video=
    print(imglist)

    if request.method == 'POST':

        print(request.headers)
        # print(request.json)

        print(request.headers.get("content_type"))
        print("values:", request.values)
        print("files:", request.files)
        print('form:', request.form)
        print('data:', request.data)
        # 获取数据并转化成字典
        user_info = request.form.to_dict()
        print(user_info)


        # 使用request模块接收带对应标签的文件列表,这里对应图片和视频
        image_files = request.files.getlist('image')
        video_files = request.files.getlist('video')

        print(image_files,video_files)

        # 判断是否有空文件
        if not image_files and not video_files:
            print("文件上传为空")
            return jsonify({
                "code": -1,
                "message": "No upload images or videos."
            })

        if image_files[0].filename and video_files[0].filename:
            # 从文件列表依次取出并保存,文件名与上传时一致
            for image_file in image_files:
                print('./static/myfile/img/' + image_file.filename)
                image_file.save('./static/myfile/img/'+image_file.filename)

            # 同上
            for video_file in video_files:
                print('./static/myfile/video/'+video_file.filename)
                video_file.save('./static/myfile/video/'+video_file.filename)

        imglist = os.listdir(path_imgs+'/img')
        videolist = os.listdir(path_imgs + '/video')

        return render_template('boostrapfrom.html', msg='文件上传成功',imglist=imglist,videolist=videolist)
    else:
        return render_template('boostrapfrom.html',imglist=imglist,videolist=videolist)





@app.route('/down/<filetype>/<filename>/')
def down(filetype,filename):
    dir = os.getcwd() + os.sep + 'static/myfile/' + filetype + '/'
    # dir = os.getcwd() + os.sep + 'static/myfile/img/'
    print(dir + filename)
    # 下载图片设置
    return send_from_directory(dir, filename, as_attachment=True)

@app.route('/delete/<filetype>/<filename>/')
def delete(filetype,filename):
    dir = os.getcwd() + os.sep + 'static/myfile/' + filetype + '/'
    # dir = os.getcwd() + os.sep + 'static/myfile/img/'
    print(dir + filename)
    # file_name = "D:/Python_GJ/AAA/1 (1).png"  # '../' + list1[i]
    file_name=dir + filename
    if os.path.exists(file_name):
        os.remove(file_name)
        print('成功删除文件:', file_name)
    else:
        print('未找到此文件:', file_name)

    #                函数的名字
    return redirect(url_for('mulfileupload'))


@app.route('/test/<filetype>/<filename>')
def test(filetype,filename):
    dir = os.getcwd() + os.sep + 'static/'+filetype+'/'
    print('filetype:',filetype)
    print('filename',filename)
    print(dir + filename)
    # file_name = "D:/Python_GJ/AAA/1 (1).png"  # '../' + list1[i]
    file_name=dir + filename

    print(file_name)
    # if os.path.exists(file_name):
    #     os.remove(file_name)
    #     print('成功删除文件:', file_name)
    # else:
    #     print('未找到此文件:', file_name)

    #                函数的名字
    return redirect(url_for('mulfileupload'))



if __name__ == '__main__':
    # app.run(debug=True)
    # app.run(debug=True, host='127.0.0.1', port=5003)

    app.run(debug=True,host='0.0.0.0',port=8080)

代码下载链接:https://download.csdn.net/download/weixin_44986037/87986647

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

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

相关文章

Go 程序是怎样跑起来的

Go 程序是怎样跑起来的 引入 我们从一个 helloworld 的例子开始 package mainimport "fmt"func main() {fmt.Println("hello world") }用 vim 要打开&#xff0c;输入命令&#xff1a; :%!xxd下面是输出 00000000:7061 636b 6167 6520 6d61 696e 0a0a…

tomcat概述,优化,多实例部署

目录 一、概述 二、三个容器 1、Web 容器&#xff1a; 2、Servlet 容器&#xff1a; 3、JSP 容器&#xff1a; 三、Tomcat 功能组件结构 四、优化 1、启动速度优化 2、配置参数优化 五、多实例部署 一、概述 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一…

ubuntu下安装docker遇到的问题

如果你还没有安装虚拟机&#xff0c;推荐一篇关于安装Ubuntu的详细教程&#xff1a; VMware虚拟机安装Ubuntu20.04详细图文教程https://blog.csdn.net/weixin_41805734/article/details/120698714首先&#xff0c;安装docker的前提是虚拟机能够联网&#xff0c;如果能看到右上…

官方文档中docker安装php插件xdebug

docker安装php插件 直接上代码常见问题如果查看系统类型如何查看xdebug合适的版本安装异常提示Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.configure: error: in /tmp/pear/temp/pea…

Zookeeper 分布式锁

优质博文&#xff1a;IT-BLOG-CN 一、简介 随着公司业务的发展&#xff0c;单机应用已经无法支撑现有的用户量&#xff0c;之前采用synchronized和Lock锁已经无法满足分布式系统的要求。我们应用程序目前都会运行120台&#xff0c;节假日会扩容至240台&#xff0c;属于多JVM环…

领域事件驱动(二)聚合与聚合根的了解

上一章对值对象以及实体进行了一些简单的讲解&#xff1a; 聚合 聚合&#xff1a;我们把一些关联性极强、生命周期一致的实体、值对象放到一个聚合里。 聚合有一个聚合根和上下文边界&#xff0c;这个边界根据业务单一职责和高内聚原则&#xff0c;定义了聚合内部应该包含哪…

U-Boot移植 - 2_环境搭建和u-boot烧录启动

文章目录 1. 编译环境搭建1.1 交叉编译器下载1.2 交叉编译器安装 2. 编译原厂uboot3. 烧录开发板3.1 烧录到SD卡3.2 启动开发板 1. 编译环境搭建 1.1 交叉编译器下载 嵌入式Linux开发&#xff0c;程序编译通常在电脑端的Linux&#xff08;如虚拟机中的Ubuntu)下进行编译&…

阿里云ECS部署

nginx 安装nginx # 查看dnf版本 dnf --version# 查找是否是否安装 dnf search nginx# 安装nginx dnf install nginx# 启动nginx systemctl start nginx# 查看nginx运行状态 systemctl status nginx# 相当于开机自启&#xff08;重启服务器&#xff0c;nginx自动启动&#xff…

GoLand下载、安装

一、Goland下载 官方最新版本下载地址&#xff1a; Download GoLand: A Go IDE with extended support for JavaScript, TypeScript, and databases 其他版本下载&#xff1a; Other Versions - GoLand 二、安装过程 1.下载好goland-2021.1.1安装包后&#xff0c;双击运行安装包…

【ARIMA-WOA-CNN-LSTM】合差分自回归移动平均方法-鲸鱼优化-卷积神经网络-长短期记忆神经网络研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Redis主从复制模式4

哨兵模式 有个哨兵一直在巡逻&#xff0c;突然发现。老大挂了&#xff0c;小弟们会自动投票&#xff0c;从众小弟中选出新的老大。即自动版的谋权篡位。我们把这个过程称为哨兵模式 设置哨兵模式语法格式&#xff1a; sentinel monitor 被监控主机名/IP Redis服务端口 票数 关闭…

AutoCV第十一课:DL基础

目录 DL基础前言1. BP训练mnist2. 权重初始化理论分析总结 DL基础 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课程我们来了解下 BP 反向传播和学习权重初始化相关知识 课程大纲可看下面的思维导…

java新特性stream

stream Java 8 是一个非常成功的版本&#xff0c;这个版本新增的Stream&#xff0c;配合同版本出现的 Lambda &#xff0c;给我们操作集合&#xff08;Collection&#xff09;提供了极大的便利。 Stream将要处理的元素集合看作一种流&#xff0c;在流的过程中&#xff0c;借助…

PMP常用英文术语缩写总结(文字版+表格版+图片版)

PMP常用英文术语缩写总结&#xff08;文字版表格版图片版&#xff09; 文字版 PMBOK Project Management Body of Knowledge 项目管理知识体系 PMI Project Management Institute 项目管理协会 PMO Project Management Office 项目管理办公室 PMIS Project Management Inf…

Spring Boot 中的服务注册是什么,原理,如何使用

Spring Boot 中的服务注册是什么&#xff0c;原理&#xff0c;如何使用 Spring Boot 是一个非常流行的 Java 后端框架&#xff0c;它提供了许多便捷的功能和工具&#xff0c;使得开发者可以更加高效地开发微服务应用。其中&#xff0c;服务注册是 Spring Boot 微服务架构中非常…

代码源 线段树模板

线段树1 思路&#xff1a; 我们需要维护的东西是序列的最小值和最小值个数 这道题没有修改操作&#xff0c;因此不考虑修改 然后考虑Pushup 最小值很简单&#xff0c;直接取min 最小值个数怎么维护呢&#xff1f;考虑这个区间需要维护的值如何从左右两个区间获得 如果左右…

四.流程控制语句

1、条件语句 Go 编程语言中 if 条件语句的语法如下&#xff1a; 1、基本形式 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时&#xff0c;其后紧跟的语句块执行&#xff0c;如果false 则不执行。 package main import "fmt" fu…

Spring MVC是什么?详解它的组件、请求流程及注解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解Spring MVC是什么&#xff0c;它的优缺点与九大组件&#xff0c;以及它的请求流程与常用的注解。 目录 一、Spring MVC是什…

计算机网络 - http协议 与 https协议(2)

前言 本篇介绍了构造http请求的的五种方式&#xff0c;简单的使用postman构造http请求&#xff0c;进一步了解https, 学习https的加密过程&#xff0c;了解对称密钥与非对称密钥对于加密是如何进行的&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流…