使用Vue3开发学生管理系统模板7 科目信息的实现

字段设计

  • ID
  • name:课程名称,字符串,最大36字符
  • start_time:开设时间,日期类型
  • teacher_total:该科目老师人数,数字类型
  • master_id:负责人ID,字符串,最大36字符
  • master_name:负责人名字,字符串,最大36字符
  • master_phone:负责人电话,字符串,最大20字符

封装JSON数据

[
  {
    "id": "1",
    "name": "语文",
    "start_time": "2012-09-09",
    "teacher_total": 8,
    "master_id": "1",
    "master_name": "张三的老师",
    "master_phone": "18811118888"
  },
  {
    "id": "2",
    "name": "数学",
    "start_time": "2012-09-09",
    "teacher_total": 8,
    "master_id": "1",
    "master_name": "张三的老师",
    "master_phone": "18811118888"
  },
  {
    "id": "3",
    "name": "英语",
    "start_time": "2012-09-09",
    "teacher_total": 8,
    "master_id": "1",
    "master_name": "张三的老师",
    "master_phone": "18811118888"
  }
]

渲染科目信息表格

完整代码:

<script setup>
import {FilterMatchMode} from 'primevue/api';
import {ref, onBeforeMount} from 'vue';
import {useToast} from 'primevue/usetoast';
import teachers from "@/assets/data/teachers.json"
import courses from "@/assets/data/courses.json"

// 老师
const teacher = ref({
  id: "1",
  name: "张三的老师",
  phone: "18811118888",
  age: 33,
  gender: "男",
  height: 177,
  weight: 128,
  course_id: "1",
  course_name: "数学",
  job: "教导处主任",
  job_age: 5,
  job_time: "2018-06-09",
  salary: 12000,
  detail: "{}"
})

const sClass = ref(null) // 选取的老师信息

const toast = useToast();

const isEdit = ref(false) // 是否为编辑
const teacherDialog = ref(false); // 老师弹窗是否显示
const deleteTeacherDialog = ref(false); // 确认删除老师弹窗是否显示
const deleteTeachersDialog = ref(false); // 批量删除老师弹窗是否显示
const selectedTeachers = ref(null);
const dt = ref(null);
const filters = ref({});
const submitted = ref(false);


onBeforeMount(() => {
  initFilters();
});

/**
 * 打开新增老师的弹窗
 */
function openNew() {
  teacher.value = {
    id: "1",
    name: "张三的老师",
    phone: "18811118888",
    age: 33,
    gender: "男",
    height: 177,
    weight: 128,
    course_id: "1",
    course_name: "数学",
    job: "教导处主任",
    job_age: 5,
    job_time: "2018-06-09",
    salary: 12000,
    detail: "{}"
  };
  isEdit.value = false
  submitted.value = false;
  teacherDialog.value = true;
}

/**
 * 新增老师
 */
function addStudentHome() {
  console.log("新增老师:", sClass.value)
  teacherDialog.value = false
}

const hideDialog = () => {
  teacherDialog.value = false;
  submitted.value = false;
};


/**
 * 编辑老师信息
 * @param data 要编辑的老师信息
 */
const editTeacher = (data) => {
  teacher.value = {...data};
  console.log(teacher);
  isEdit.value = true
  teacherDialog.value = true;
};

/**
 * 确认删除老师
 * @param data 要删除的老师信息
 */
const confirmDeleteTeacher = (data) => {
  teacher.value = data;
  deleteTeacherDialog.value = true;
};

/**
 * 删除老师
 */
const deleteTeacher = () => {
  sClasss = sClasss.filter((val) => val.id !== sClass.value.id);
  deleteTeacherDialog.value = false;
  sClass.value = {
    id: 1,
    name: "张三的家长",
    gender: "男",
    age: "41",
    phone: "18888887777",
    student_id: "1",
    student_sclass_id: "1",
    student_sclass: "初一(3)班",
    student_name: "张三",
    relation: "父子"
  };
  toast.add({severity: 'success', summary: '成功', detail: '删除老师', life: 3000});
};

const exportCSV = () => {
  dt.value.exportCSV();
};

const confirmDeleteSelected = () => {
  deleteTeachersDialog.value = true;
};

/**
 * 删除选中的老师
 */
const deleteSelectedTeachers = () => {
  users = users.filter((val) => !selectedTeachers.value.includes(val));
  deleteTeachersDialog.value = false;
  selectedTeachers.value = null;
  toast.add({severity: 'success', summary: '成功', detail: '删除老师', life: 3000});
};

/**
 * 初始化过滤器
 */
const initFilters = () => {
  filters.value = {
    global: {value: null, matchMode: FilterMatchMode.CONTAINS}
  };
};
</script>

<template>
  <div class="grid">
    <div class="col-12">
      <div class="card">
        <!--消息提示-->
        <Toast/>
        <!--顶部工具栏-->
        <Toolbar class="mb-4">
          <!--左侧-->
          <template v-slot:start>
            <div class="my-2">
              <Button label="新增" icon="pi pi-plus" class="p-button-success mr-2" @click="openNew"/>
              <Button label="删除" icon="pi pi-trash" class="p-button-danger" @click="confirmDeleteSelected"
                      :disabled="!selectedTeachers || !selectedTeachers.length"/>
            </div>
          </template>
          <!--右侧-->
          <template v-slot:end>
            <FileUpload mode="basic" accept="image/*" :maxFileSize="1000000" label="Import" chooseLabel="导入"
                        class="mr-2 inline-block"/>
            <Button label="导出" icon="pi pi-upload" class="p-button-help" @click="exportCSV($event)"/>
          </template>
        </Toolbar>

        <!--数据表格-->
        <DataTable
            ref="dt"
            :value="courses"
            v-model:selection="selectedTeachers"
            dataKey="id"
            :paginator="true"
            :rows="10"
            :filters="filters"
            paginatorTemplate="FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink CurrentPageReport RowsPerPageDropdown"
            :rowsPerPageOptions="[5, 10, 25]"
            currentPageReportTemplate="显示第 {first}-{last} 条数据,共 {totalRecords} 条"
            responsiveLayout="scroll"
        >
          <!--表头-->
          <template #header>
            <div class="flex flex-column md:flex-row md:justify-content-between md:align-items-center">
              <h5 class="m-0">科目管理</h5>
              <span class="block mt-2 md:mt-0 p-input-icon-left">
                  <i class="pi pi-search"/>
                  <InputText v-model="filters['global'].value" placeholder="搜索..."/>
              </span>
            </div>
          </template>

          <!--内容-->
          <Column selectionMode="multiple" headerStyle="width: 3rem"></Column>
          <Column field="name" header="名称" :sortable="true"></Column>
          <Column field="start_time" header="开设时间" :sortable="true"></Column>
          <Column field="teacher_total" header="教师人数" :sortable="true"></Column>
          <Column field="master_name" header="负责人" :sortable="true"></Column>
          <Column field="master_phone" header="负责人电话" :sortable="true"></Column>
          <Column>
            <template #body="slotProps">
              <Button icon="pi pi-pencil" class="p-button-rounded p-button-success mr-2"
                      @click="editTeacher(slotProps.data)"/>
              <Button icon="pi pi-trash" class="p-button-rounded p-button-warning mt-2"
                      @click="confirmDeleteTeacher(slotProps.data)"/>
            </template>
          </Column>
        </DataTable>

        <!--新增弹窗-->
        <Dialog v-model:visible="teacherDialog"
                :style="{ width: '450px' }"
                header="新增老师"
                :modal="true"
                class="p-fluid">
          <div class="field">
            <label for="name">姓名</label>
            <InputText id="name" v-model.trim="teacher.name"/>
          </div>
          <div class="field">
            <label for="age">年龄</label>
            <InputText id="age" v-model.trim="teacher.age"/>
          </div>
          <div class="field">
            <label for="gender">性别</label>
            <InputText id="gender" v-model.trim="teacher.gender"/>
          </div>
          <div class="field">
            <label for="phone">电话</label>
            <InputText id="phone" v-model.trim="teacher.phone"/>
          </div>
          <div class="field">
            <label for="height">身高</label>
            <InputText id="height" v-model.trim="teacher.height"/>
          </div>
          <div class="field">
            <label for="weight">体重</label>
            <InputText id="weight" v-model.trim="teacher.weight"/>
          </div>
          <div class="field">
            <label for="course">科目</label>
            <InputText id="course" v-model.trim="teacher.course_name"/>
          </div>
          <div class="field">
            <label for="job">职位</label>
            <InputText id="job" v-model.trim="teacher.job"/>
          </div>
          <div class="field">
            <label for="job_time">入职时间</label>
            <InputText id="job_time" v-model.trim="teacher.job_time"/>
          </div>
          <div class="field">
            <label for="salary">工资</label>
            <InputText id="salary" v-model.trim="teacher.salary"/>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="hideDialog"/>
            <Button label="保存" icon="pi pi-check" class="p-button-text" @click="addStudentHome"/>
          </template>
        </Dialog>

        <!--确认删除弹窗-->
        <Dialog v-model:visible="deleteTeacherDialog" :style="{ width: '450px' }" header="Confirm" :modal="true">
          <div class="flex align-items-center justify-content-center">
            <i class="pi pi-exclamation-triangle mr-3" style="font-size: 2rem"/>
            <span v-if="teacher">您确认要删除 <b>{{ teacher.name }}</b>吗?</span>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="deleteTeacherDialog = false"/>
            <Button label="确认" icon="pi pi-check" class="p-button-text" @click="deleteTeacher"/>
          </template>
        </Dialog>

        <!--批量删除确认弹窗-->
        <Dialog v-model:visible="deleteTeachersDialog" :style="{ width: '450px' }" header="请确认" :modal="true">
          <div class="flex align-items-center justify-content-center">
            <i class="pi pi-exclamation-triangle mr-3" style="font-size: 2rem"/>
            <span v-if="teacher">删除后无法撤销,您确定要删除吗?</span>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="deleteTeachersDialog = false"/>
            <Button label="确认" icon="pi pi-check" class="p-button-text" @click="deleteSelectedTeachers"/>
          </template>
        </Dialog>
      </div>
    </div>
  </div>
</template>


渲染效果:
在这里插入图片描述

实现科目的增删改查

完整代码:

<script setup>
import {FilterMatchMode} from 'primevue/api';
import {ref, onBeforeMount} from 'vue';
import {useToast} from 'primevue/usetoast';
import teachers from "@/assets/data/teachers.json"
import courses from "@/assets/data/courses.json"

// 科目
const course = ref({
  id: "1",
  name: "语文",
  start_time: "2012-09-09",
  teacher_total: 8,
  master_id: "1",
  master_name: "张三的老师",
  master_phone: "18811118888"
})
// 老师
const teacher = ref({
  id: "1",
  name: "张三的老师",
  phone: "18811118888",
  age: 33,
  gender: "男",
  height: 177,
  weight: 128,
  course_id: "1",
  course_name: "数学",
  job: "教导处主任",
  job_age: 5,
  job_time: "2018-06-09",
  salary: 12000,
  detail: "{}"
})

const sClass = ref(null) // 选取的老师信息

const toast = useToast();

const isEdit = ref(false) // 是否为编辑
const teacherDialog = ref(false); // 老师弹窗是否显示
const onDeleteDialog = ref(false); // 确认删除老师弹窗是否显示
const onDeletesDialog = ref(false); // 批量删除老师弹窗是否显示
const selectedTeachers = ref(null);
const dt = ref(null);
const filters = ref({});
const submitted = ref(false);


onBeforeMount(() => {
  initFilters();
});

/**
 * 打开新增的弹窗
 */
function openNew() {
  teacher.value = {
    id: "1",
    name: "张三的老师",
    phone: "18811118888",
    age: 33,
    gender: "男",
    height: 177,
    weight: 128,
    course_id: "1",
    course_name: "数学",
    job: "教导处主任",
    job_age: 5,
    job_time: "2018-06-09",
    salary: 12000,
    detail: "{}"
  };
  isEdit.value = false
  submitted.value = false;
  teacherDialog.value = true;
}

/**
 * 新增
 */
function add() {
  console.log("新增:", sClass.value)
  teacherDialog.value = false
}

const hideDialog = () => {
  teacherDialog.value = false;
  submitted.value = false;
};


/**
 * 编辑老师信息
 * @param data 要编辑的老师信息
 */
const editTeacher = (data) => {
  teacher.value = {...data};
  console.log(teacher);
  isEdit.value = true
  teacherDialog.value = true;
};

/**
 * 确认删除老师
 * @param data 要删除的老师信息
 */
const confirmDelete = (data) => {
  teacher.value = data;
  onDeleteDialog.value = true;
};

/**
 * 删除老师
 */
const onDelete = () => {
  sClasss = sClasss.filter((val) => val.id !== sClass.value.id);
  onDeleteDialog.value = false;
  sClass.value = {
    id: 1,
    name: "张三的家长",
    gender: "男",
    age: "41",
    phone: "18888887777",
    student_id: "1",
    student_sclass_id: "1",
    student_sclass: "初一(3)班",
    student_name: "张三",
    relation: "父子"
  };
  toast.add({severity: 'success', summary: '成功', detail: '删除老师', life: 3000});
};

const exportCSV = () => {
  dt.value.exportCSV();
};

const confirmDeleteSelected = () => {
  onDeletesDialog.value = true;
};

/**
 * 删除选中的老师
 */
const deleteSelected = () => {
  users = users.filter((val) => !selectedTeachers.value.includes(val));
  onDeletesDialog.value = false;
  selectedTeachers.value = null;
  toast.add({severity: 'success', summary: '成功', detail: '删除老师', life: 3000});
};

/**
 * 初始化过滤器
 */
const initFilters = () => {
  filters.value = {
    global: {value: null, matchMode: FilterMatchMode.CONTAINS}
  };
};
</script>

<template>
  <div class="grid">
    <div class="col-12">
      <div class="card">
        <!--消息提示-->
        <Toast/>
        <!--顶部工具栏-->
        <Toolbar class="mb-4">
          <!--左侧-->
          <template v-slot:start>
            <div class="my-2">
              <Button label="新增" icon="pi pi-plus" class="p-button-success mr-2" @click="openNew"/>
              <Button label="删除" icon="pi pi-trash" class="p-button-danger" @click="confirmDeleteSelected"
                      :disabled="!selectedTeachers || !selectedTeachers.length"/>
            </div>
          </template>
          <!--右侧-->
          <template v-slot:end>
            <FileUpload mode="basic" accept="image/*" :maxFileSize="1000000" label="Import" chooseLabel="导入"
                        class="mr-2 inline-block"/>
            <Button label="导出" icon="pi pi-upload" class="p-button-help" @click="exportCSV($event)"/>
          </template>
        </Toolbar>

        <!--数据表格-->
        <DataTable
            ref="dt"
            :value="courses"
            v-model:selection="selectedTeachers"
            dataKey="id"
            :paginator="true"
            :rows="10"
            :filters="filters"
            paginatorTemplate="FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink CurrentPageReport RowsPerPageDropdown"
            :rowsPerPageOptions="[5, 10, 25]"
            currentPageReportTemplate="显示第 {first}-{last} 条数据,共 {totalRecords} 条"
            responsiveLayout="scroll"
        >
          <!--表头-->
          <template #header>
            <div class="flex flex-column md:flex-row md:justify-content-between md:align-items-center">
              <h5 class="m-0">科目管理</h5>
              <span class="block mt-2 md:mt-0 p-input-icon-left">
                  <i class="pi pi-search"/>
                  <InputText v-model="filters['global'].value" placeholder="搜索..."/>
              </span>
            </div>
          </template>

          <!--内容-->
          <Column selectionMode="multiple" headerStyle="width: 3rem"></Column>
          <Column field="name" header="名称" :sortable="true"></Column>
          <Column field="start_time" header="开设时间" :sortable="true"></Column>
          <Column field="teacher_total" header="教师人数" :sortable="true"></Column>
          <Column field="master_name" header="负责人" :sortable="true"></Column>
          <Column field="master_phone" header="负责人电话" :sortable="true"></Column>
          <Column>
            <template #body="slotProps">
              <Button icon="pi pi-pencil" class="p-button-rounded p-button-success mr-2"
                      @click="editTeacher(slotProps.data)"/>
              <Button icon="pi pi-trash" class="p-button-rounded p-button-warning mt-2"
                      @click="confirmDelete(slotProps.data)"/>
            </template>
          </Column>
        </DataTable>

        <!--新增弹窗-->
        <Dialog v-model:visible="teacherDialog"
                :style="{ width: '450px' }"
                header="新增科目"
                :modal="true"
                class="p-fluid">
          <div class="field">
            <label for="name">名称</label>
            <InputText id="name" v-model.trim="course.name"/>
          </div>
          <div class="field">
            <label for="start_time">开设时间</label>
            <InputText id="start_time" v-model.trim="course.start_time"/>
          </div>
          <div class="field">
            <label for="teacher_total">老师人数</label>
            <InputText id="teacher_total" v-model.trim="course.teacher_total"/>
          </div>
          <div class="field">
            <label for="master">科目负责人</label>
            <Dropdown id="master"  v-model="teacher" :options="teachers" optionLabel="name" placeholder="请选择"/>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="hideDialog"/>
            <Button label="保存" icon="pi pi-check" class="p-button-text" @click="add"/>
          </template>
        </Dialog>

        <!--确认删除弹窗-->
        <Dialog v-model:visible="onDeleteDialog" :style="{ width: '450px' }" header="Confirm" :modal="true">
          <div class="flex align-items-center justify-content-center">
            <i class="pi pi-exclamation-triangle mr-3" style="font-size: 2rem"/>
            <span v-if="teacher">您确认要删除 <b>{{ teacher.name }}</b>吗?</span>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="onDeleteDialog = false"/>
            <Button label="确认" icon="pi pi-check" class="p-button-text" @click="onDelete"/>
          </template>
        </Dialog>

        <!--批量删除确认弹窗-->
        <Dialog v-model:visible="onDeletesDialog" :style="{ width: '450px' }" header="请确认" :modal="true">
          <div class="flex align-items-center justify-content-center">
            <i class="pi pi-exclamation-triangle mr-3" style="font-size: 2rem"/>
            <span v-if="teacher">删除后无法撤销,您确定要删除吗?</span>
          </div>
          <template #footer>
            <Button label="取消" icon="pi pi-times" class="p-button-text" @click="onDeletesDialog = false"/>
            <Button label="确认" icon="pi pi-check" class="p-button-text" @click="deleteSelected"/>
          </template>
        </Dialog>
      </div>
    </div>
  </div>
</template>


渲染效果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二、UI文件设计与运行机制

一、UI文件设计与运行机制 1、创建工程 2、添加控件&#xff0c;实现按钮点击 &#xff08;1&#xff09;添加控件 &#xff08;2&#xff09;添加信号和槽 2、分析项目结构 test_02test_02.pro Qt工程文件Headerswidget.h 设计的窗体类的头文件Sourcesmain.cpp 主程序入…

印象笔记03 衍生软件使用

印象笔记03 衍生软件使用 Verse 以下内容来源于官方介绍 VERSE是一款面向未来的智能化生产力工具&#xff0c;由印象笔记团队诚意推出。 你可以用VERSE&#xff1a; 管理数字内容&#xff0c;让信息有序高效运转&#xff1b;搭建知识体系&#xff0c;构建你的强大知识库&am…

高防ip适合防御网站和游戏类的攻击吗?

​  作为站长&#xff0c;要学会并承受得住网站外来攻击的压力&#xff0c;尤其是所属为 DDoS 攻击高发行业的网站类业务及游戏行业&#xff0c;是很容易被竞争对手或者一些伪黑客爱好者盯上的。 加上&#xff0c;有些站长并没有提前了解&#xff0c;就盲目进军了这两个行业&…

看板表格样式,去掉element表格背景

<div class"ml-20"><el-input v-model.trim"queryParams.wipOrderNo" size"small" clearable style"width:150px" placeholder"请输入工单号" /><el-select class"ml-20" v-model"queryParam…

[数据结构 C++] AVL树的模拟实现

文章目录 1、AVL树1.1 AVL树的概念 2、AVL树节点的定义3、AVL树的插入和旋转3.1 左单旋左旋代码实现 3.2 右单旋右旋代码实现 3.3 右左双旋右左双旋的代码实现 3.4 左右双旋左右双旋的代码实现 3.5 insert接口实现 4、判断是否为AVL树判断AVL树的代码实现 5、AVL树的性能 问题引…

金和OA c6 uploadfileeditorsave接口存在任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和-c6 uploadfileeditorsave 任意文件上传&#xff0c;攻击者…

计算机网络(9):无线网络

无线局域网 WLAN 无线局域网常简写为 WLAN (Wireless Local Area Network)。 无线局域网的组成 无线局域网可分为两大类。第一类是有固定基础设施的&#xff0c;第二类是无固定基础设施的。所谓“固定基础设施”是指预先建立起来的、能够覆盖一定地理范围的一批固定基站。 …

6个关键词,回顾网络安全行业的 2023!

话不多说&#xff0c;直接上 01 生成式人工智能 AIGC 热度&#xff1a;⭐️⭐️⭐️⭐️⭐️ AIGC 的发展不仅降低了内容创作的门槛&#xff0c;还为聊天机器人、数字人、元宇宙等领域提供了新的发展机遇。2023 年 8 月&#xff0c;首届人工智能生成内容国际会议在上海落地&…

Paddle3D 2 雷达点云CenterPoint模型训练

2 Paddle3D 雷达点云CenterPoint模型训练–包含KITTI格式数据地址 2.0 数据集 百度DAIR-V2X开源路侧数据转kitti格式。 2.0.1 DAIR-V2X-I\velodyne中pcd格式的数据转为bin格式 参考源码&#xff1a;雷达点云数据.pcd格式转.bin格式 def pcd2bin():import numpy as npimport…

C++面向对象语法总结(三)

目录 《C面向对象语法总结(一&#xff09;》《C面向对象语法总结(二&#xff09;》 二十一、多继承 C允许一个类可以有多个父类&#xff08;不建议使用&#xff0c;会增加程序设计复杂度&#xff09;在多继承中&#xff0c;会按照继承顺序将父类的成员变量放到子类成员变量的…

踩坑Vant组件 Dialog的组件调用

今天踩了一个非常蠢的坑&#xff0c;自己给自己蠢死的坑 在使用组件调用时自己没引入Dialog组件导致一直报错 不知道为什么全局引入不好使&#xff0c;后来使用了局部引用 现在没问题了 就这样局部引入一个Dialog.Component就可以了

CEEMDAN +组合预测模型(Transformer - BiLSTM+ ARIMA)

目录 往期精彩内容&#xff1a; 前言 1 风速数据CEEMDAN分解与可视化 1.1 导入数据 1.2 CEEMDAN分解 2 数据集制作与预处理 3 基于CEEMADN的 Transformer - BiLSTM 模型预测 3.1 定义CEEMDAN-Transformer - BiLSTM预测模型 3.2 设置参数&#xff0c;训练模型 4 基于A…

【日积月累】Java Lambda 表达式

目录 【日积月累】Java Lambda 表达式 1.前言2.语法3.应用场景3.1简化匿名内部类的编写3.1简化匿名内部类的编写3.2简化集合类中的操作3.3实现函数式接口3.4简化多个方法的调用3.5简化异步编程 4.总结5.参考 文章所属专区 日积月累 1.前言 Lambda表达式是一个匿名函数&#…

数据库索引、三范式、事务

索引 索引&#xff08;Index&#xff09;是帮助 MySQL 高效获取数据的数据结构。常见的查询算法,顺序查找,二分查找,二叉排序树查找,哈希散列法,分块查找,平衡多路搜索树 B 树&#xff08;B-tree&#xff09;。 常见索引原则有 选择唯一性索引&#xff1a;唯一性索引的值是唯…

爬虫入门与urllibrequests

前情摘要 一、web请求全过程剖析 我们浏览器在输入完网址到我们看到网页的整体内容, 这个过程中究竟发生了些什么? 我们看一下一个浏览器请求的全过程 接下来就是一个比较重要的事情了. 所有的数据都在页面源代码里么? 非也~ 这里要介绍一个新的概念 那就是页面渲染数据的…

[C#]使用onnxruntime部署Detic检测2万1千种类别的物体

【源码地址】 github地址&#xff1a;https://github.com/facebookresearch/Detic/tree/main 【算法介绍】 Detic论文&#xff1a;https://arxiv.org/abs/2201.02605v3 项目源码&#xff1a;https://github.com/facebookresearch/Detic 在Detic论文中&#xff0c;Detic提到…

基于Java SSM框架实现中国古诗词学习平台项目【项目源码】

基于java的SSM框架实现中国古诗词学习平台系统演示 JSP技术介绍 JSP技术本身是一种脚本语言&#xff0c;但它的功能是十分强大的&#xff0c;因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时&#xff0c;它可以使显示逻辑和内容分开&#xff0c;这就极大的方便了用…

Docker中的核心概念

1.镜像 Image 一个镜像就代表一个软件。mysql镜像、redis镜像、mq镜像 2.容器 Container 一个镜像运行一次就会生成一个容器&#xff0c;容器就是一个运行的软件服务。 3.远程仓库 Repository 远程仓库用来存储所有软件的镜像&#xff0c;Docker Hub 4.本地仓库 用来存储…

谷歌推出了一种名为提示扩展(Prompt Expansion)的创新框架,旨在帮助用户更轻松地创造出既高质量又多样化的图像。

谷歌推出了一种名为提示扩展&#xff08;Prompt Expansion&#xff09;的创新框架&#xff0c;旨在帮助用户更轻松地创造出既高质量又多样化的图像。 论文标题: Prompt Expansion for Adaptive Text-to-Image Generation 论文链接: https://arxiv.org/pdf/2312.16720.pdf 问…

如何删除K8S中的Pod

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…
最新文章