vue后台系统管理项目-商城轮播图管理功能

news2025/2/5 4:05:36

商城轮播图管理功能

功能介绍:

1.轮播图列表分页功能;

2.轮播图添加功能;

3.轮播图编辑功能;

4.轮播图删除功能;

5.轮播图启用禁用功能;

6.轮播图获取排序号功能;

7.轮播图查看详情功能;

8.轮播图图片预览功能;

1.接口引入

import {
    deleteFile, //删除图片
    baseUrl,
    getPcMallBannerPage,//列表
    addPcMallBanner,//添加
    delPcMallBanner,//删除
    enablePcMallOrDisable,//启用禁用

    getPcMallSortList,//排序

    resultsThePreviewClientBanner,//预览
    getPcMallBannerInfo,//查看详情
    editPcMallBanner,//编辑
    upload//图片上传
  } from "../../api/userMG"

2. 列表页面

  

<template>
  <div class="p20">
    <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumbTips">
      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>PC端轮播图</el-breadcrumb-item>
    </el-breadcrumb>
    <el-tabs v-model="activeName" style="margin-top:20px;">
      <el-tab-pane label="PC端轮播图" name="0"></el-tab-pane>
    </el-tabs>
    <div class="crew-tab">
      <div class="mt20 mb10">建议686*200px,图片大小小于1M,jpg/png/jpeg格式。有效期内发布0-5张,超过取前5顺位,创建上限为10个。</div>
      <div class="mt20">
        <el-button v-throttle size="small" type="primary" @click="handleAdd">新增</el-button>
        <el-button v-throttle size="small" type="success" @click="shotPreviewImg">效果预览</el-button>
        <el-button v-throttle size="small" type="success" @click="handleReload">刷新</el-button>
      </div>
    </div>
    <!--列表-->
    <el-table :data="LunboTableData" border highlight-current-row style="width: 100%;height:auto;margin-top:20px"
      :header-cell-style="{textAlign: 'center',background:'#fafafa'}" :cell-style="{ textAlign: 'center' }">
      <el-table-column prop="" label="序号" width="50" type="index" :index="getIndex" header-align="center">
      </el-table-column>
      <el-table-column prop="imgUrl" label="图片" width="250">
        <template slot-scope="scope">
          <el-image style="width: 200px; height: 100px" :src="$baseImgUrl+scope.row.imgUrl" fit="contain"></el-image>
        </template>
      </el-table-column>
      <el-table-column prop="" label="有效时间" width="250">
        <template slot-scope="scope">
          <div>开始时间:{{scope.row.startTime?scope.row.startTime:"暂无"}}</div>
          <div>结束时间:{{scope.row.endTime?scope.row.endTime:"暂无"}}</div>
        </template>
      </el-table-column>
      <el-table-column prop="remark" label="备注" width="150">
        <template slot-scope="scope">
          <div class="textHide">{{scope.row.remark}}</div>
        </template>
      </el-table-column>
      <el-table-column prop="jumpType" label="跳转类型" width="150">
        <template slot-scope="scope">
          <span>{{scope.row.jumpType==1?"内部跳转":scope.row.jumpType==2?"外部跳转":"无"}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="jumpPage" label="跳转页面" width="150">
        <template slot-scope="scope">
          <span>{{scope.row.jumpPage=="1"?"独立详情页":"/"}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="link" label="链接地址" width="150">
        <template slot-scope="scope">
          <span>{{scope.row.link?scope.row.link:"/"}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="sort" label="排序" sortable></el-table-column>
      <el-table-column prop="replaceUserName" label="是否启用" width="150">
        <template slot-scope="scope">
          <el-switch :disabled="scope.row.status=='0'||scope.row.status=='2'" @change="changeSwitch(scope.row)"
            v-model="scope.row.status" active-value="1" inactive-value="0" active-color="#13ce66"
            inactive-color="#ff4949" active-text="是" inactive-text="否">
          </el-switch>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="100" fixed="right">
        <template slot-scope="scope">
          <el-button @click="recordEdit(scope.row)" type="text" size="small">编辑</el-button>
          <el-button @click="recordDel(scope.row)" type="text" size="small">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页 -->
    <el-pagination class="mt20  text-right" background @size-change="handleSizeChange"
      @current-change="handleCurrentChange" :current-page="pagination.pageNum" :page-sizes="[3,5,10, 20, 30, 40,50]"
      :page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="pagination.total">
    </el-pagination>
    
  </div>
</template>

轮播图列表分页功能

获取数据列表 

    //获取数据列表
      getLunboTabledata() {
        let params = {
          pageNum: this.pagination.pageNum,
          pageSize: this.pagination.pageSize
        }
        getPcMallBannerPage(params)
          .then(res => {
            console.log(res, "列表")
            if (res.code == 200) {
              this.LunboTableData = res.data.records;
              this.current = res.data.current;
              this.pagination.pagesize = res.data.size;
              this.pagination.total = res.data.total;
            } else {
              this.$message.error(res.msg);
            }
          }).catch(err => {
            this.$message.error(res.msg);
          });
      },

列表自定义序号 

//自定义序号
getIndex(index) {
        return (index + 1) + (this.current - 1) * (this.pagination.pagesize)
},

3.轮播图添加功能

    // 新增
      handleAdd() {
        this.modelDialogTitle = "新建";
        this.isShowSkipWebpage = true;
        this.showCreateModel = true; //打开新建弹窗
        // 重置
        this.createModelForm.imgUrl = ""
        this.createModelForm.startTime = "";
        this.createModelForm.endTime = "";
        this.createModelForm.remark = ""; //备注
        this.createModelForm.jumpType = "1";
        this.createModelForm.skipWebpage = "独立详情页";
        this.createModelForm.content = "";
        this.createModelForm.title = "";
        this.createModelForm.link = "";
        this.createModelForm.sort = "";
        this.createModelForm.status = "1";
        
      },

4.添加、编辑功能

添加编辑弹窗

这里有使用富文本编辑器功能,后面更新这个功能

 

 

 

 

<!-- 新建轮播图弹窗 -->
    <el-dialog :title="modelDialogTitle" :visible.sync="showCreateModel" width="1000px" :close-on-click-modal="false"
      @close="closeCreateModel">
      <el-form :model="createModelForm" ref="createModelForm" label-width="140px" class="demo-createModelForm"
        size="35">
        <el-row>
          <el-col :span="24">
            <div class="modelPicPhoto">
              <el-form-item label="图片:" prop="imgUrl">
                <span class="start"></span>
                <el-upload ref="upload" :action="baseUrl + '/file/upload'" :on-preview="handleModelPicPreview"
                  :on-remove="handleModelPicRemove" list-type="picture-card" :multiple="false"
                  :headers="{ Authorization: token }" :on-success="handleModelPicSuccess" :limit="1"
                  :file-list="modelPicFilesList" :before-upload="beforeUpload" accept="image/jpeg,image/png,image/jpg"
                  :on-exceed="handleModelPicExceed">
                  <i class="el-icon-plus"></i>
                  <div slot="tip" class="el-upload__tip fontIntail">建议尺寸680*230px,只能上传jpg/png/jpeg文件,且不超过1M</div>
                </el-upload>
              </el-form-item>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="开始时间:" prop="startTime">
              <el-date-picker clearable style="width: 100%;" v-model="createModelForm.startTime" type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" :picker-options="pickerOptions"
                placeholder="请选择">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="结束时间:" prop="endTime">
              <el-date-picker clearable style="width: 100%;" v-model="createModelForm.endTime" type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" :picker-options="pickerOptions"
                placeholder="请选择">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="备注:" prop="remark">
              <el-input type="textarea" rows="4" maxlength="70" show-word-limit v-model="createModelForm.remark">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="跳转类型:" prop="jumpType">
              <el-radio-group v-model="createModelForm.jumpType" @input="handleJumpType">
                <el-radio label="1">内部跳转</el-radio>
                <el-radio label="2">外部跳转</el-radio>
                <el-radio label="3">无</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <!-- 外部跳转对应外部链接 -->
          <el-col :span="12" v-if="createModelForm.jumpType==2">
            <el-form-item label="外部链接:" prop="link">
              <el-input v-model="createModelForm.link" placeholder="请输入外部链接"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12" v-if="createModelForm.jumpType==1">
            <el-form-item label="跳转页面:" prop="jumpPage">
              <el-select v-model="createModelForm.jumpPage" placeholder="请选择" style="width:100%">
                <el-option label="独立详情页" value="1">
                </el-option>
              </el-select>
              
            </el-form-item>
          </el-col>
          <el-col :span="24" v-if="isShowSkipWebpage&&createModelForm.jumpType==1">
            <el-form-item label="编辑发送内容:">
              <el-col :span="24" class=" mb20">
                <el-form-item>
                  <el-input clearable type="text" placeholder="独立详情页页面标题" v-model="createModelForm.title"
                    maxlength="10" show-word-limit></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item style="height:600px;">
                  <quill-editor v-model="createModelForm.content" ref="myQuillEditor" style="height: 500px;"
                    :options="contentOption">
                  </quill-editor>
                  <!-- 自定义上传图片弹窗 -->
                  <!-- <el-upload
                      ref="ztphotoUrl"
                      class="upload-demo ivu-upload"
                      :action="baseUrl + '/file/upload'"
                      :headers="{ Authorization: token }"
                      :on-success="handleZtSuccess"
                      accept="image/jpeg,image/png,image/jpg"
                      list-type="picture">
                      <el-button v-throttle size="small" type="primary" class="ivu-btn">点击上传</el-button>
                    </el-upload> -->
                  <van-uploader :after-read="afterCard" :before-read="beforeRead" accept="image/*" class="uploadfile"
                    :max-size="10240 * 1024" @oversize="onOversize">
                    <img src="../../assets/upload.png">
                  </van-uploader>
                </el-form-item>
              </el-col>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="排序:" prop="sort" style="position:relative">
              <el-select clearable v-model="createModelForm.sort" placeholder="请选择" style="width:100%">
                <el-option v-for="(item,index) in sortOptions" :key="index" :label="item" :value="item">
                </el-option>
              </el-select>
              <span class="sortStart"></span>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="启用:" prop="status" :rules="{
                required: true, message: '请选择', trigger: 'change'
              }">
              <el-switch v-model="createModelForm.status" active-value="1" inactive-value="0" active-color="#13ce66"
                inactive-color="#ff4949" active-text="是" inactive-text="否" @change="changeDisable">
              </el-switch>
            </el-form-item>
          </el-col>
          <el-col :span="8" :offset="16">
            <el-form-item>
              <el-button v-throttle type="primary" @click="saveForm('createModelForm')">
                {{modelDialogTitle=='新建'?'保 存':'编 辑'}}</el-button>
              <el-button @click="cancelForm('createModelForm')">取 消</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </el-dialog>
    // 保存
      saveForm(createModelForm) {
        console.log(this.createModelForm)
        if (this.createModelForm.imgUrl == "") {
          this.$message.warning("请上传图片");
          return;
        } else if (this.createModelForm.sort == "") {
          this.$message.warning("请选择排序");
          return;
        }
        // 判断提交的数据
        if (this.createModelForm.jumpType == "1") {
          // 内部跳转  主题帖、外部链接为空
          this.createModelForm.link = "";
        } else if (this.createModelForm.jumpType == "2") {
          // 外部跳转
          this.createModelForm.jumpPage = "";
          this.createModelForm.title = "";
          this.createModelForm.content = "";
        } else if (this.createModelForm.jumpType == "3") {
          // 无
          this.createModelForm.jumpPage = "";
          this.createModelForm.title = "";
          this.createModelForm.content = "";
        }
        this.$refs[createModelForm].validate((valid) => {
          if (valid) {
            // 保存
            this.createModelForm.terminal = this.terminal; //承运端
            console.log(this.createModelForm, "保存内容");
            if (this.modelDialogTitle == "新建") {
              addPcMallBanner(this.createModelForm).then(res => {
                if (res.code == 200) {
                  this.pagination.pageNum = 1;
                  this.getLunboTabledata();
                  this.showCreateModel = false;
                  this.modelPicFilesList = [];
                  this.modelPicList = [];
                  this.createModelForm.content = "";
                  this.createModelForm.sort = "";
                  this.$refs.createModelForm.resetFields();
                  this.$message.success("保存成功");
                  // 更新排序
                  getPcMallSortList().then(res => {
                    console.log(res, "排序");
                    this.sortOptions = res.data;
                  });
                } else {
                  this.$message.error(res.msg);
                }
              })
            } else if (this.modelDialogTitle == "编辑") {
              editPcMallBanner(this.createModelForm).then(res => {
                if (res.code == 200) {
                  this.pagination.pageNum = 1;
                  this.getLunboTabledata();
                  this.showCreateModel = false;
                  this.modelPicFilesList = [];
                  this.modelPicList = [];
                  this.createModelForm.content = "";
                  this.createModelForm.sort = "";
                  this.$refs.createModelForm.resetFields();
                  this.$message.success("编辑成功");
                  // 更新排序
                  getPcMallSortList().then(res => {
                    console.log(res, "排序");
                    this.sortOptions = res.data;
                  });
                } else {
                  this.$message.error(res.msg);
                }
              })
            }

          } else {
            console.log("error")
            return false;
          }
        })
      },

5.删除功能

    // 删除
      recordDel(row) {
        this.$confirm('此操作将永久删除该行数据, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          delPcMallBanner({
            id: row.id
          }).then(res => {
            if (res.code == 200) {
              this.pagination.pageNum = 1;
              // 排序
              getPcMallSortList().then(res => {
                console.log(res, "排序");
                this.sortOptions = res.data;
              });
              this.getLunboTabledata();
              this.$message.success('删除成功');
            } else {
              this.$message.error("删除失败");
            }
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });
        });
      },

6.启用禁用功能

      // 启用变禁用
      changeSwitch(row) {
        console.log(row, "启动")
        enablePcMallOrDisable({
          id: row.id,
          status:row.status
        }).then(res => {
          if (res.code == 200) {
            // 排序
            getPcMallSortList().then(res => {
              console.log(res, "排序");
              this.sortOptions = res.data;
            });
            this.$message.success("操作成功");
          } else {
            this.$message.error("操作失败");
          }
        })
      },

7.获取排序号功能

轮播图根据选择的排序决定哪一个轮播图在前面

// 排序
      getPcMallSortList().then(res => {
        console.log(res, "排序");
        this.sortOptions = res.data;
      });

这里在添加、编辑、删除的时候都要调用这个接口,更新轮播图排序。

8.查看详情功能

点击列表编辑时候调用查看详情接口获取数据

recordEdit(row) {
        this.modelDialogTitle = "编辑";
        // 详情接口
        this.modelPicFilesList = [];
        getPcMallBannerInfo({
          id: row.id
        }).then(res => {
          if (res.code == 200) {
            this.showCreateModel = true;
            this.createModelForm = res.data;
           
            console.log(this.createModelForm, "编辑板块")
            if(this.createModelForm.jumpType=="1"){
              this.createModelForm.jumpPage = "1";
            }
            if (this.createModelForm.jumpPage == '1') {
              this.isShowSkipWebpage = true;
            } else {
              this.isShowSkipWebpage = false;
            }
            let modelPicimageUrl = res.data.imgUrl ? this.$baseImgUrl + res.data.imgUrl : "";
            if (modelPicimageUrl == "") {
              this.createModelForm.imgUrl = "";
            } else {
              this.modelPicFilesList.push({
                "url": modelPicimageUrl
              })
            }
          } else {
            this.$message.error("获取数据失败")
          }
        })

      },

9.轮播图预览功能

 

<!-- 效果预览 -->
    <el-dialog :visible.sync="isShotPreviewImg" title="效果预览" v-if="clientBanner.length>0"
      class="lunboModelDialog carrierLB" width="686px">
      <el-carousel :interval="3000" arrow="always">
        <el-carousel-item v-for="(item,index) in clientBanner" :key="index">
          <img :src="$baseImgUrl+item.imgUrl" width="100%">
        </el-carousel-item>
      </el-carousel>
    </el-dialog>
    // 效果预览
      shotPreviewImg() {
        getPcMallPreviewList().then(res => {
          if (res.code == 200) {
            console.log(res, "效果预览");
            if (res.data.length > 0) {
              this.clientBanner = res.data;
              this.isShotPreviewImg = true;
            } else {
              this.isShotPreviewImg = false;
              this.$message.warning("未找到预览的轮播图");
            }
          } else {
            this.isShotPreviewImg = false;
            this.$message.error(res.msg);
          }
        })
      },

⭐️⭐️⭐️  作者:船长在船上
🚩🚩🚩  主页:来访地址船长在船上的博客
🔨🔨🔨  简介:CSDN前端领域博客专家,CSDN前端领域优质创作者,资深前端开发工程师,专注web前端领域开发,在CSDN分享工作中遇到的问题以及问题解决方法和对项目开发的实际案例总结以及新技术的认识。

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

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

相关文章

2.创建自己的Cesiunm地球隐藏控件

目录​​​​​​​ 一、创建地球 引入Cesium.JS和初始页面 修改初始页面 将项目通过tomcat发布 二、去除不需要的控件 一、创建地球 引入Cesium.JS和初始页面 创建一个名为my-cesium的文件夹&#xff0c;将下载好的Cesium中的Build文件夹和Apps中的HelloWorld.html复制到…

基于Android的地铁查询系统app-计算机毕业设计

项目介绍 本软件研究了一个Android平台的地铁查询软件实现方案,从数据库数据保存到地铁数据的提取&#xff0c;再到界面的友好展示,最后到一个成型软件的生成这样一个过程,研究了SQLite数据库在Android平台的应用以及在手机平台的展示等等。 系统提供了地铁线路、站点和换乘的…

3.Entity和CZML添加图形

目录 Entity创建盒子 创建view容器 配置Entity ​编辑CZML数据添加图形 CZML是什么 怎么加载CZML Entity创建盒子 创建view容器 <!DOCTYPE html> <html lang"en"><head><!-- Use correct character set. --><meta charset"ut…

精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)

Sentinel是什么&#xff1f;不要概念混淆啊&#xff01; 注意&#xff1a;本Sentinel与Redis服务Sentinel是两回事&#xff0c;压根不是一个概念&#xff0c;请大家不要混肴。 Alibaba的Sentinel Sentinel是由阿里巴巴中间件团队开发的开源项目&#xff0c;是一种面向分布式微…

Vuex的相关知识

「Vuex的相关知识」 ​ vuex是一种对vue 应用中多个组件的共享状态进行集中式的管理(读/写)&#xff1b; vuex的工作原理&#xff1a; https://segmentfault.com/a/1190000021717329 ​ vuex 核心概念和API&#xff1a;state、mutations、actions、getters、modules、向外暴…

green power 设备入网过程

目录 Green Power设备入网流程 单项green power commissioning过程 抓包实例 1. SINK发送Green Power:GP Proxy Commissioning Mode命令​编辑​编辑 2. GPD发送入网命令 3. Proxy和Sink发送Green Power:GP Commissioning Notification 4. …

通过 Request 请求获取真实 IP 地址以及对应省份城市

title: 通过 Request 请求获取真实 IP 地址以及对应省份城市和系统浏览器信息 date: 2022-12-16 16:20:26 tags: GeoIP2UserAgentUtils categories:开发技术及框架 cover: https://cover.png feature: false 1. 获取真实 IP 地址 1.1 代码 代码如下&#xff0c;这里的 Commo…

set、map使用及其细节

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、两个概念①关联式容器与序列式容器②键值对二、set、map①setset的两种遍历方式set的升降序排序set的eraseset的count②mapSGI-STL中键值…

ISCSLP论文介绍|利用BERT提高语种识别性能

本文介绍清华大学语音与音频技术实验室&#xff08;SATLab&#xff09;ISCSLP 2022录用论文。BERT-LID: Leveraging BERT to Improve Spoken Language Identification。这篇文章将BERT模型引入到语种识别领域。利用BERT模型的优越性&#xff0c;再结合下游不同的神经网络模型&a…

OFDM系统中基于dmrs导频的时间跟踪、频率跟踪算法

目录发射端模型假设接收端模型假设时延估计&#xff08;时间跟踪&#xff09;频偏估计&#xff08;频率跟踪&#xff09;在OFDM系统中&#xff0c;为了估计出信号传输遇到的时间偏移和频率偏移&#xff0c;可以采用导频进行估计。 发射端模型假设 我们假设如下模型&#xff1…

如何熟练掌握运用Delft3D建模、水动力模拟方法及在地表水环境影响评价中的实践技术

Delft3D是由荷兰Delft大学WL Delft Hydraulics开发的一套功能强大的软件包&#xff0c;主要应用于自由地表水环境。该软件具有灵活的框架&#xff0c;能够模拟二维和三维的水流、波浪、水质、生态、泥沙输移及床底地貌&#xff0c;以及各个过程之间的相互作用。它是国际上最为先…

使用 C# Graphics 绘图来绘制一个足球

背景 2022卡塔尔世界杯是足球爱好者的狂欢&#xff0c;这与我毫无关系&#xff0c;作为一个缺乏运动的人&#xff0c;还是不要去看人家玩命的运动了。虽然不看球&#xff0c;不过这波热度的持续冲击&#xff0c;还是让我在朋友圈刷到了结局 ———— 球王梅西如愿以偿捧得金杯…

Bootstrap5 下拉菜单

下拉菜单可以是单选下拉菜单&#xff0c;也可以是多选的下拉菜单。 单选下拉菜单&#xff1a; 多选下拉菜单&#xff1a; 在 Bootstrap5 中下拉菜单 <select> 元素可以使用 .form-select 类来渲染 : 实例 <select class"form-select"> <option>…

内核启动过程分析

目录 一、内核源码获取查看 1.1、Source Insight使用 二、查看链接脚本 三、分析head.S 3.1、到入口前代码 3.2、内核启动的汇编阶段 四、main.c内核启动的c语言阶段 4.1、内核打印函数printk 4.2、启动信息 五、rest_init函数 5.1、进程0、进程1、进程2​编辑 5.2、…

详细复习云开发~小程序【搜索功能、登陆注册功能、点赞收藏评论功能、评论功能、CMS网页版管理后台】

文章目录一&#xff0c;搜索功能1-1&#xff0c;需求1-2&#xff0c;实现原理1-3&#xff0c;模糊搜索的代码实现1-3-1&#xff0c;模糊搜索单个字段1-3-2&#xff0c;模糊搜索多个字段&#xff08;满足一个即可&#xff09;1-3-3&#xff0c;模糊搜索多个字段&#xff08;要同…

python获取redis memory使用情况

项目研发过程中&#xff0c;用到Python操作Redis场景&#xff0c;记录学习过程中的心得体会。 一、环境搭建 Windows Anaconda3安装redis第3方包&#xff0c;pip install -u redis pip install -u # 升级安装 linux下查看redis配置信息bind 127.0.0.1 # 表示只允许本地访问,…

AssetBundle依赖打包有哪些注意点

1&#xff09;AssetBundle依赖打包有哪些注意点 ​2&#xff09;子程序集如何引用Assembly-CSharp.dll 3&#xff09;Unity的线性空间下自定义贴图在PS中修改问题 4&#xff09;如何关闭视锥体剔除 这是第318篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化…

CSS3之2D转换

文章目录2D转换一、transform1-1.2D转换之移动translate1-2.translate&#xff08;百分比&#xff09;盒子居中二、rotate2-1.旋转效果2-2.transform-origin设置旋转中心点三、2D转换之缩放scale四、2D转换综合写法总结2D转换 转换&#xff08;trabsform&#xff09;是CSS3中具…

SPDK块设备bdev简介

介绍 SPDK Bdev架构 SPDK块设备层&#xff08;通常简称为bdev&#xff09;是一个C库&#xff0c;旨在等同于操作系统块存储层&#xff0c;该层通常位于传统内核存储堆栈中设备驱动程序的正上方。具体来说&#xff0c;此库提供以下功能&#xff1a; 一种可插拔模块API&#xf…

Effective C++(二):构造/析构/赋值运算

个人读书记录&#xff0c;不适用教学内容。 目录 条款05&#xff1a;了解C默默编写并调用了哪些函数 条款06&#xff1a;若不想使用编译器自动生成的函数&#xff0c;就该明确拒绝 条款07&#xff1a;为多态基类声明virtual析构函数 条款08&#xff1a;别让异常逃离析构函数…