当前位置: 首页 > news >正文

可复用表格组件设计与实现:分页、排序、筛选全功能解析

文章目录

    • 一、组件设计思路
      • 1.1 功能需求分析
      • 1.2 技术选型
    • 二、组件架构设计
      • 2.1 组件结构
      • 2.2 数据流设计
    • 三、核心代码实现
      • 3.1 基础表格组件
      • 3.2 状态管理
    • 四、功能模块实现
      • 4.1 分页组件
      • 4.2 排序控制
      • 4.3 筛选控制
    • 五、性能优化方案
      • 5.1 虚拟滚动
      • 5.2 防抖筛选
    • 六、完整测试方案
      • 6.1 测试用例设计
      • 6.2 自动化测试示例

一、组件设计思路

1.1 功能需求分析

20% 25% 25% 20% 10% 表格功能需求 基础展示 分页功能 排序功能 筛选功能 性能优化

1.2 技术选型

功能模块技术方案说明
基础表格HTML5 Table语义化标签
状态管理Vue Composition API响应式数据管理
分页控制自定义分页组件灵活可控
排序算法数组排序支持多列排序
筛选功能组合式筛选器支持多条件筛选

二、组件架构设计

2.1 组件结构

TableComponent
TableHeader
TableBody
Pagination
SortControl
FilterControl
TableRow
TableCell

2.2 数据流设计

用户 表格组件 状态管理 服务端 点击排序 更新排序状态 触发重新渲染 请求排序数据 返回新数据 更新视图 修改筛选条件 更新筛选状态 触发重新渲染 请求筛选数据 返回新数据 更新视图 用户 表格组件 状态管理 服务端

三、核心代码实现

3.1 基础表格组件

<template><div class="table-container"><table><thead><tr><th v-for="col in columns" :key="col.key">{{ col.label }}<SortControl :column="col"@sort="handleSort"/></th></tr><tr><th v-for="col in columns" :key="col.key"><FilterControl v-if="col.filterable":column="col"@filter="handleFilter"/></th></tr></thead><tbody><tr v-for="row in paginatedData" :key="row.id"><td v-for="col in columns" :key="col.key">{{ row[col.key] }}</td></tr></tbody></table><Pagination :total="filteredData.length":current-page="currentPage":page-size="pageSize"@page-change="handlePageChange"/></div>
</template>

3.2 状态管理

import { ref, computed } from 'vue'export function useTable(data, columns) {const currentPage = ref(1)const pageSize = ref(10)const sortState = ref({})const filterState = ref({})const filteredData = computed(() => {return data.value.filter(row => {return Object.entries(filterState.value).every(([key, filter]) => {if (!filter) return truereturn filter(row[key])})})})const sortedData = computed(() => {const { key, order } = sortState.valueif (!key) return filteredData.valuereturn [...filteredData.value].sort((a, b) => {if (order === 'asc') {return a[key] > b[key] ? 1 : -1} else {return a[key] < b[key] ? 1 : -1}})})const paginatedData = computed(() => {const start = (currentPage.value - 1) * pageSize.valueconst end = start + pageSize.valuereturn sortedData.value.slice(start, end)})return {currentPage,pageSize,sortState,filterState,filteredData,sortedData,paginatedData}
}

四、功能模块实现

4.1 分页组件

<template><div class="pagination"><button v-for="page in pages":key="page":class="{ active: page === currentPage }"@click="handlePageChange(page)">{{ page }}</button></div>
</template><script setup>
const props = defineProps({total: Number,currentPage: Number,pageSize: Number
})const emit = defineEmits(['page-change'])const totalPages = computed(() => Math.ceil(props.total / props.pageSize))const pages = computed(() => {const range = []for (let i = 1; i <= totalPages.value; i++) {range.push(i)}return range
})function handlePageChange(page) {emit('page-change', page)
}
</script>

4.2 排序控制

<template><span class="sort-control" @click="toggleSort"><span v-if="sortState.key === column.key">{{ sortState.order === 'asc' ? '↑' : '↓' }}</span></span>
</template><script setup>
import { inject } from 'vue'const props = defineProps({column: Object
})const sortState = inject('sortState')function toggleSort() {if (sortState.value.key !== props.column.key) {sortState.value = { key: props.column.key, order: 'asc' }} else {sortState.value.order = sortState.value.order === 'asc' ? 'desc' : 'asc'}
}
</script>

4.3 筛选控制

<template><input v-if="column.filterType === 'text'"type="text":value="filterValue"@input="handleInput"/><select v-else-if="column.filterType === 'select'":value="filterValue"@change="handleChange"><option value="">All</option><option v-for="option in column.filterOptions" :key="option">{{ option }}</option></select>
</template><script setup>
import { inject } from 'vue'const props = defineProps({column: Object
})const filterState = inject('filterState')const filterValue = computed({get: () => filterState.value[props.column.key] || '',set: value => {filterState.value[props.column.key] = value}
})function handleInput(e) {filterValue.value = e.target.value
}function handleChange(e) {filterValue.value = e.target.value
}
</script>

五、性能优化方案

5.1 虚拟滚动

function useVirtualScroll(items, itemHeight, containerHeight) {const scrollTop = ref(0)const visibleCount = Math.ceil(containerHeight / itemHeight)const startIndex = computed(() => {return Math.floor(scrollTop.value / itemHeight)})const endIndex = computed(() => {return startIndex.value + visibleCount})const visibleItems = computed(() => {return items.value.slice(startIndex.value, endIndex.value)})const paddingTop = computed(() => {return startIndex.value * itemHeight})const paddingBottom = computed(() => {return (items.value.length - endIndex.value) * itemHeight})return {scrollTop,visibleItems,paddingTop,paddingBottom}
}

5.2 防抖筛选

function useDebouncedFilter(filterState) {const debouncedFilter = ref({})watch(filterState, () => {clearTimeout(filterTimeout)filterTimeout = setTimeout(() => {debouncedFilter.value = { ...filterState.value }}, 300)}, { deep: true })return debouncedFilter
}

六、完整测试方案

6.1 测试用例设计

测试场景验证目标方法
基础渲染数据展示正确性验证渲染结果
分页功能分页逻辑正确性模拟分页操作
排序功能排序算法正确性验证排序结果
筛选功能筛选条件有效性测试不同筛选条件
性能测试大数据量渲染性能加载10万条数据

6.2 自动化测试示例

describe('TableComponent', () => {let wrapperconst columns = [{ key: 'name', label: 'Name' },{ key: 'age', label: 'Age', sortable: true }]const data = [{ id: 1, name: 'Alice', age: 25 },{ id: 2, name: 'Bob', age: 30 }]beforeEach(() => {wrapper = mount(TableComponent, {props: { columns, data }})})test('renders correct number of rows', () => {expect(wrapper.findAll('tbody tr').length).toBe(data.length)})test('sorts data correctly', async () => {const ageHeader = wrapper.find('th', { text: 'Age' })await ageHeader.trigger('click')const firstRow = wrapper.find('tbody tr:first-child')expect(firstRow.text()).toContain('Bob')})
})

总结:本文从设计到实现详细讲解了可复用表格组件的完整开发方案,包含分页、排序、筛选等核心功能,并提供了性能优化和测试方案。
在这里插入图片描述

相关文章:

可复用表格组件设计与实现:分页、排序、筛选全功能解析

文章目录 一、组件设计思路1.1 功能需求分析1.2 技术选型 二、组件架构设计2.1 组件结构2.2 数据流设计 三、核心代码实现3.1 基础表格组件3.2 状态管理 四、功能模块实现4.1 分页组件4.2 排序控制4.3 筛选控制 五、性能优化方案5.1 虚拟滚动5.2 防抖筛选 六、完整测试方案6.1 …...

SmartFormat:轻量级文本模板库,轻松替代 string.Format

推荐一个 C# 编写的轻量级文本模板库&#xff0c;可以作为 string.Format 的替代品。 01 项目简介 SmartFormat不仅继承了 string.Format 的功能&#xff0c;还扩展了更多高级特性&#xff0c;例如命名占位符、列表格式化、本地化支持、复数化等。SmartFormat 提供了高性能、…...

【贪心算法4】

力扣452.用最少数量的剪引爆气球 链接: link 思路 这道题的第一想法就是如果气球重叠得越多那么用箭越少&#xff0c;所以先将气球按照开始坐标从小到大排序&#xff0c;遇到有重叠的气球&#xff0c;在重叠区域右边界最小值之前的区域一定需要一支箭&#xff0c;这道题有两…...

ES 使用geo point 查询离目标地址最近的数据

需求描述&#xff1a;项目中需要通过经纬度坐标查询目标地所在的行政区。 解决思路大致有种&#xff0c;使用es和mysql分别查询。 1、使用es进行查询 将带有经纬度坐标的省市区数据存入es中&#xff0c;mappings字段使用geo point类型&#xff0c;索引及查询dsl如下。 geo p…...

CentOS7 服务器安装 Hadoop 和 Hive

CentOS 服务器安装 Hadoop 和 Hive流程 请将以下的路径更换为自己的路径 1. 环境准备 1.1 安装 JDK Hadoop 和 Hive 需要 Java 运行环境&#xff0c;这里安装 OpenJDK 1.8&#xff1a; # 查看 Java 版本 java -version1.2 创建 Hadoop 用户&#xff08;可选&#xff09; …...

C语言零基础入门:嵌入式系统开发之旅

C语言零基础入门&#xff1a;嵌入式系统开发之旅 一、引言 嵌入式系统开发是当今科技领域中一个极具魅力和挑战性的方向。从智能家居设备到汽车电子系统&#xff0c;从智能穿戴设备到工业自动化控制&#xff0c;嵌入式系统无处不在。而C语言&#xff0c;作为嵌入式开发中最常…...

【数据分享】1999—2023年地级市地方一般公共预算收支状况数据(科学技术支出/教育支出等)

在之前的文章中&#xff0c;我们分享过基于2000-2024年《中国城市统计年鉴》整理的1999-2023年地级市的人口相关数据、染物排放和环境治理相关数据、房地产投资情况和商品房销售面积相关指标数据和社会消费品零售总额和年末金融机构存贷款余额&#xff08;均可查看之前的文章获…...

直方图(信息学奥赛一本通-1115)

【题目描述】 给定一个非负整数数组&#xff0c;统计里面每一个数的出现次数。我们只统计到数组里最大的数。假设 Fmax&#xff08;Fmax<10000&#xff09;是数组里最大的数&#xff0c;那么我们只统计{0,1,2.....Fmax}里每个数出现的次数。 【输入】 第一行n是数组的大小。…...

基于NXP+FPGA轨道交通人机交互(HMI)和健康管理单元(PHM)解决方案

人机接口 (HMI) 是交互式显示设备&#xff0c;可用于司机和乘务员的交互式信息显示。也可以用于CCTV监视。满足多种接口设备连接的同时&#xff0c;搭载的Linux系统&#xff0c;可以满足客户的定制化需求。 关键特性 触摸式按键位于显示区域周围&#xff0c;耐用性好&#xff0…...

宇树与智元的崛起:机器人“灵魂”注入的技术密码

目录 机器人运动的基石&#xff1a;大扭矩与平衡术 大扭矩&#xff1a;力量的源泉 平衡术&#xff1a;动态平衡的艺术 从运动到智能&#xff1a;AI学习的“灵魂”注入 强化学习&#xff1a;试错中的成长 模仿学习&#xff1a;站在巨人的肩膀上 数据与知识共享&#xff1…...

TCP 全连接队列 内核层理解socket

TCP 全连接队列 理解 listen 的第二个参数 int listen(int sockfd, int backlog);backlog 参数表示 全连接队列&#xff08;accept 队列&#xff09;的最大长度。 那什么是全连接队列呢&#xff1f; 三次握手 & accept() 处理流程 客户端发送 SYN&#xff0c;服务器收到并…...

成功破解加密机制,研究人员解锁LinuxESXi Akira勒索软件

一位网络安全研究人员成功破解了Akira勒索软件在Linux/ESXi系统中的加密机制&#xff0c;使得受害者无需支付赎金即可恢复数据。 这一突破利用了勒索软件加密方法中的关键漏洞。据研究人员介绍&#xff0c;该恶意软件使用纳秒级的时间戳作为加密过程中的种子&#xff0c;这使其…...

vue2:el-table列中文字前面加icon图标的两种方式

1、文字前面加icon <el-table-column label="姓名" align="left" prop="nickName"><template #default="{ row }"><i v-if="row.sync" class="el-icon-lock"></i><span>{{ row.nic…...

深入探索Android Bitmap:从原理到实战

一、Bitmap 是什么 在 Android 开发中&#xff0c;Bitmap 是极为重要的基石。简单来说&#xff0c;Bitmap 代表位图&#xff0c;是图片在内存里的具体呈现形式 &#xff0c;任何诸如 JPEG、PNG、WEBP 等格式的图片&#xff0c;一旦被加载到内存中&#xff0c;就会以 Bitmap 对…...

软考计算机知识-流水线

计算机流水线类似工业生产过程的流水线&#xff0c;在同一时间&#xff0c;m个部件进行不同的操作&#xff0c;完成对不同对象的处理。 理解重叠&#xff1a;让不同的指令在时间上重叠地解释。在解释第k条指令的操作完成之前&#xff0c;就可以开始解释第k1条指令。 题1&#…...

【Linux】从互斥原理到C++ RAII封装实践

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…...

【哈希表与字符串的算法之路:思路与实现】—— LeetCode

文章目录 两数之和面试题01.02.判定是否为字符重排存在重复元素存在重复元素||字母异位词分组最长公共前缀和最长回文子串二进制求和字符串相乘 两数之和 这题的思路很简单&#xff0c;在读完题目之后&#xff0c;便可以想到暴力枚举&#xff0c;直接遍历整个数组两遍即可&…...

rdiff-backup备份

目录 1. 服务器备份知识点 1.1 备份策略 1.2 备份步骤和宝塔面板简介 1.3 CentOS7重要目录 2. 备份工具 2.1 tar -g 备份演示 2. rsync 备份演示 3. rdiff-backup 备份演示 4. 差异和优缺点 3. rdiff-backup安装和使用 3.1 备份命令rdiff-backup 3.2 恢复命令--…...

Netty基础—4.NIO的使用简介一

大纲 1.Buffer缓冲区 2.Channel通道 3.BIO编程 4.伪异步IO编程 5.改造程序以支持长连接 6.NIO三大核心组件 7.NIO服务端的创建流程 8.NIO客户端的创建流程 9.NIO优点总结 10.NIO问题总结 1.Buffer缓冲区 (1)Buffer缓冲区的作用 (2)Buffer缓冲区的4个核心概念 (3)使…...

贪心算法简介(greed)

前言&#xff1a; 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每个决策阶段都选择当前最优解的算法策略&#xff0c;通过局部最优的累积来寻求全局最优解。其本质是"短视"策略&#xff0c;不回溯已做选择。 什么是贪心、如何来理解贪心(个人对贪心的…...

驻场运维服务方案书(Word文件)

目 录 第一章 背景分析 1.1. 项目背景 1.2. 项目目标 1.3. 系统现状 1.3.1. 网络系统 1.3.2. 设备清单梳理 1.3.3. 应用系统 第二章 需求分析及理解 2.1. 在重要日期能保障信息系统安全 2.2. 信息系统可长期安全、持续、稳定的运行 2.3. 提升发现安全问题、解决安全…...

嵌入式硬件--开发工具-AD使用常用操作

ad16.1.12 1.如何显示/隐藏其他图层 在pcb界面点击L--试图界面中找到“视图选项”--单层模式选择 not in single layer mode 在pcb界面点击L--试图界面中找到“视图选项”--单层模式选择 gray scale other layers 【Altium】AD如何只显示一层&#xff0c;隐藏其他层显示&…...

在 Ubuntu 上安装和配置 Docker 的完整指南

Docker 是一个开源的平台&#xff0c;旨在简化应用程序的开发、部署和运行。通过将应用程序及其依赖项打包到容器中&#xff0c;Docker 确保应用程序可以在任何环境中一致地运行。 目录 前言安装前的准备安装 Docker 步骤 1&#xff1a;更新包索引步骤 2&#xff1a;安装必要…...

微服务全局ID方案汇总

自增id 对于大多数系统来说&#xff0c;使用mysql的自增id当作主键再最合适不过了。在数据库层面就可以获取一个顺序的、唯一的、空间占用少的id。 自增id需要是 int、bigint这些整数类型&#xff0c;uint 支持 40 亿的数据量&#xff0c;bigint unsign&#xff08;0 &#x…...

实验5 逻辑回归

实验5 逻辑回归 【实验目的】掌握逻辑回归算法 【实验内容】处理样本&#xff0c;使用逻辑回归算法进行参数估计&#xff0c;并画出分类边界 【实验要求】写明实验步骤&#xff0c;必要时补充截图 1、参照“2.1梯度下降法实现线性逻辑回归.ipynb”和“2.2 sklearn实现线性逻辑…...

【原创】在高性能服务器上,使用受限用户运行Nginx,充当反向代理服务器[未完待续]

1 起因 在公共高性能服务器上运行OllamaDeepSeek&#xff0c;如果按照默认配置启动Ollama程序&#xff0c;则自己在远程无法连接你启动的Ollama服务。 如果修改掉默认的配置&#xff0c;则会遇到你的Ollama被他人完全控制的安全风险。 不过&#xff0c;我们可以使用一个方向…...

Linux 下 MySQL 8 搭建教程

一、下载 你可以从 MySQL 官方下载地址 下载所需的 MySQL 安装包。 二、环境准备 1. 查看 MySQL 是否存在 使用以下命令查看系统中是否已经安装了 MySQL&#xff1a; rpm -qa|grep -i mysql2. 清空 /etc/ 目录下的 my.cnf 执行以下命令删除 my.cnf 文件&#xff1a; [roo…...

vue 仿deepseek前端开发一个对话界面

后端&#xff1a;调用deepseek的api&#xff0c;所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…...

MinIO问题总结(持续更新)

目录 Q: 之前使用正常&#xff0c;突然使用空间为0B&#xff0c;上传文件也是0B&#xff08;部署在k8s中&#xff09;Q: 无法上传大文件参考yaml Q: 之前使用正常&#xff0c;突然使用空间为0B&#xff0c;上传文件也是0B&#xff08;部署在k8s中&#xff09; A: 1、检查pod状态…...

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…...

深入理解Linux网络随笔(七):容器网络虚拟化--Veth设备对

深入理解Linux网络随笔&#xff08;七&#xff09;&#xff1a;容器网络虚拟化 微服务架构中服务被拆分成多个独立的容器&#xff0c;docker网络虚拟化的核心技术为&#xff1a;Veth设备对、Network Namespace、Bridg。 Veth设备对 veth设备是一种 成对 出现的虚拟网络接口&…...

实战指南:鸿蒙ArkTS中实现列表下拉刷新与触底加载的完整解析

前言&#xff1a; 在移动应用开发中&#xff0c;下拉刷新和触底加载更多是提升用户体验的核心功能。鸿蒙ArkUI框架通过Refresh组件和List组件的onReachEnd事件&#xff0c;为开发者提供了简洁高效的实现方案。本文将通过代码示例&#xff0c;详解如何利用ArkTS实现这两个功能。…...

【栈数据结构应用解析:常见算法题详细解答】—— Leetcode

文章目录 栈的模拟实现删除字符串中的所有相邻重复项比较含退格的字符串基本计算器||字符串解码验证栈序列 栈的模拟实现 #include <iostream>using namespace std;const int N 1e5 10;// 创建栈 int stk[N], n;// 进栈 - 本质就是顺序表里面的尾插 void push(int x) …...

Git常用操作之GitLab

Git常用操作之GitLab 小薛博客官网&#xff1a;小薛博客Git常用操作之GitLab官方地址 1、GitLab安装 https://gitlab.cn/install/ 1、Docker安装GitLab https://docs.gitlab.cn/jh/install/docker.html 1、设置卷位置 在设置其他所有内容之前&#xff0c;请配置一个新的…...

2025探索短剧行业新可能报告40+份汇总解读|附PDF下载

原文链接&#xff1a;https://tecdat.cn/?p41043 近年来&#xff0c;短剧以其紧凑的剧情、碎片化的观看体验&#xff0c;迅速吸引了大量用户。百度作为互联网巨头&#xff0c;在短剧领域积极布局。从早期建立行业专属模型冷启动&#xff0c;到如今构建完整的商业生态&#xf…...

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动&#xff0c;经过多年建设&#xff0c;基本都已经形成了稳定的通讯要求&#xff1b;河北瑾航科技 遥测终端机&#xff0c;兼容了大部分省市的通讯协议&#xff0c;如果需要&#xff0c;可以咨询和互相学习&…...

C#+EF+SqlServer性能优化笔记

文章目录 前言一、C#EF 代码优化1.接口代码改异步2.查询异步&#xff0c;只查询需要的数据3.查询数据判断时4.直接使用sql查询 二、数据库优化1.减少关联表&#xff0c;一些基础数据&#xff0c;字典表可以考虑放到redis中&#xff0c;在代码中映射2.增加索引&#xff0c;删除无…...

列表动态列处理

1、在initialize()方法里&#xff0c;获取列表控件&#xff0c;添加CreateListColumnsListener监听 public void initialize(){ BillList billlist(BillList)this.getControl("billlistap"); billlist.addCreateListColumnsListener(this::beforeCreateListColumns)…...

电机控制常见面试问题(十二)

文章目录 一.电机锁相环1.理解锁相环2.电机控制中的锁相环应用3.数字锁相环&#xff08;DPLL&#xff09; vs 模拟锁相环&#xff08;APLL&#xff09;4.锁相环设计的关键技术挑战5.总结 二、磁链观测1.什么是磁链&#xff1f;2.为什么要观测磁链&#xff1f;3.怎么观测磁链&am…...

芯驿电子 ALINX 亮相德国纽伦堡,Embedded World 2025 精彩回顾

2025年3月13日&#xff0c;全球规模最大的嵌入式行业盛会——德国纽伦堡国际嵌入式展&#xff08;embedded world 2025&#xff09;圆满落幕。 在这场汇聚全球 950 家展商、3 万余专业观众的科技盛宴中&#xff0c;芯驿电子 ALINX 展位人头攒动&#xff0c;多款尖端产品吸引客户…...

西门子S7-1200 PLC远程上下载程序方案

西门子S7-1200 PLC远程上下载程序方案&#xff08;巨控GRM552YW-C模块&#xff09; 三步完成配置 | 全球适用 | 稳定高效 三步快速完成远程配置 硬件部署 准备巨控GRM552YW-CHE模块1台&#xff0c;通过网口连接西门子S7-1200 PLC以太网口。 模块支持4G/5G/Wi-Fi/网线接入外网…...

MFC窗口的创建/消息映射机制

mfc.h #include<afxwin.h>//mfc头文件//应用程序类 class MyApp:public CWinApp //继承于应用程序类 { public://程序入口virtual BOOL InitInstance(); };//框架类 class MyFrame:public CFrameWnd { public:MyFrame();//声明宏 提供消息映射机制DECLARE_MESSAGE_MAP()…...

【每日学点HarmonyOS Next知识】tab对齐、相对布局、自定义弹窗全屏、动画集合、回到桌面

1、HarmonyOS Tabs 是否能支持 tabbar 居左对齐&#xff1f; 当前方案为自定义tabbar实现&#xff0c;示例demo&#xff1a; Entry Component struct TabsExample {State tabArray: Array<number> [0, 1,2]State focusIndex: number 0State pre: number 0State inde…...

如何在TikTok网页版切换地区设置

今天我们来聊聊如何在TikTok网页版上更改地区设置。TikTok作为全球知名的短视频社交应用&#xff0c;不仅仅局限于某个国家或地区。修改地区设置可以让你探索来自不同地方的内容&#xff0c;享受更为丰富的社交互动体验。那么&#xff0c;具体该如何操作呢&#xff1f;让我一步…...

redis工具类

前言 Redis 是一个高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列、实时分析等场景。为了更高效地操作 Redis&#xff0c;许多开发者会选择使用 Redisson 客户端库。 依赖配置 首先确保您的项目中已经包含了 Redisson 的最新版本&#xff08;如 3.44.0&#xff…...

【Python办公】Excel通用匹配工具(双表互匹)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...

安徽省青少年信息学奥林匹克竞赛初中组第1题LuoguP762

先放题目: 【题目背景】.你 .可 .以 .选 .择 .跳 .过 .背 .景 .部 .分。初春的一天&#xff0c;正是乍暖还寒时候&#xff0c;狂风乍起。小可可裹紧了单薄的外衣&#xff0c;往小雪家中赶去。“今天真不是个出门的时候啊&#xff01;”小可可感叹道。“但是我还有东西要买………...

AVL树的平衡算法的简化问题

AVL树是一种紧凑的二叉查找树。它的每个结点&#xff0c;都有左右子树高度相等&#xff0c;或者只相差1这样的特性。文章https://blog.csdn.net/aaasssdddd96/article/details/106291144给出了一个例子。 为了便于讨论&#xff0c;这里对AVL树的结点平衡情况定义2个名称&#…...

NFS实验配置笔记

NFS NFS服务 nfs&#xff0c;最早是Sun这家公司所发展出来的&#xff0c;它最大的功能就是可以透过网络&#xff0c;让不同的机器&#xff0c;不同的操作系统&#xff0c;进行实现文档的共享。所以你可以简单的将他看做是文件服务器。 实验准备 ①先准备一个服务器端的操作…...

C盘清理技巧分享:释放空间,提升电脑性能

目录 1. 引言 2. C盘空间不足的影响 3. C盘清理的必要性 4. C盘清理的具体技巧 4.1 删除临时文件 4.2 清理系统还原点 4.3 卸载不必要的程序 4.4 清理下载文件夹 4.5 移动大文件到其他盘 4.6 清理系统缓存 4.7 使用磁盘清理工具 4.8 清理Windows更新文件 4.9 禁用…...