利用jQuery 实现多选标签下拉框,提升表单交互体验
在 Web 开发中,表单设计常常需要支持用户选择多个选项的场景。传统的多选框或下拉菜单在处理大量选项时,可能会影响界面美观和操作便捷性。这时,多选标签下拉框就成为了一种优雅的解决方案。本文将详细介绍如何通过 HTML、CSS 和 jQuery 实现一个功能丰富的多选标签下拉框。
一、实现效果与应用场景
最终实现的多选标签下拉框效果如下:点击下拉按钮后,会弹出包含多个选项的下拉菜单,每个选项带有复选框,用户可以自由勾选。已选的选项会以标签形式展示在下拉按钮中,并且每个标签都带有删除按钮,方便用户随时取消选择。这种设计适用于项目标签筛选、兴趣爱好选择、权限配置等多种需要多选操作的业务场景。
效果图:
二、HTML 结构搭建
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="js/jquery-3.7.1.min.js"></script><title>多选标签下拉框</title><style>/* 样式代码将在下文CSS部分详细说明 */</style>
</head><body><div class="multiselect-dropdown"><!-- 下拉按钮 - 已选标签将显示在这里 --><button class="dropdown-button" id="dropdownButton"><span class="placeholder" id="placeholder">选择标签...</span><span class="arrow">▼</span></button><!-- 标签选项容器 --><div class="dropdown-content" id="dropdownContent"><!-- 标签选项将通过JS动态生成 --></div></div><script>// JavaScript实现代码将在下文JavaScript部分详细说明</script>
</body></html>
上述代码构建了多选标签下拉框的基础结构:
- 外层
div
(类名为multiselect-dropdown
)作为下拉框的整体容器。 button
(类名为dropdown-button
,id
为dropdownButton
)是下拉按钮,用于触发下拉菜单的显示与隐藏,并展示已选标签。- 内部
div
(类名为dropdown-content
,id
为dropdownContent
)用于存放具体的选项内容,选项将通过 JavaScript 动态生成。
三、CSS 样式设计
/* 基础样式 */
body {font-family: 'Arial', sans-serif;padding: 20px;
}/* 下拉框容器 */
.multiselect-dropdown {position: relative;width: 300px;
}/* 下拉按钮 */
.dropdown-button {width: 100%;min-height: 40px;padding: 5px 15px;border: 1px solid #ddd;border-radius: 4px;background-color: white;text-align: left;cursor: pointer;display: flex;flex-wrap: wrap;align-items: center;gap: 5px;
}/* 下拉箭头图标 */
.arrow {transition: transform 0.3s;margin-left: auto;
}.arrow.open {transform: rotate(180deg);
}/* 标签选项容器 */
.dropdown-content {display: none;position: absolute;width: 100%;max-height: 200px;overflow-y: auto;border: 1px solid #ddd;border-radius: 4px;background-color: white;z-index: 1000;margin-top: 5px;
}/* 标签选项 */
.tag-option {padding: 8px 15px;cursor: pointer;display: flex;align-items: center;
}.tag-option:hover {background-color: #f5f5f5;
}/* 复选框样式 */
.tag-checkbox {margin-right: 10px;
}/* 已选标签样式 - 在下拉按钮中显示 */
.selected-tag {background-color: #e0e0e0;padding: 2px 8px;border-radius: 12px;font-size: 12px;display: flex;align-items: center;
}/* 删除标签按钮 */
.remove-tag {margin-left: 5px;cursor: pointer;color: #666;
}.remove-tag:hover {color: #333;
}/* 占位文本 */
.placeholder {color: #999;
}
这段 CSS 代码对多选标签下拉框进行了细致的样式定义:
- 整体布局:为
body
设置基础字体和内边距,multiselect-dropdown
容器设置相对定位和固定宽度。 - 下拉按钮:定义了按钮的尺寸、边框、背景、布局方式,以及箭头图标的旋转动画效果。
- 下拉菜单:
dropdown-content
设置为绝对定位,初始隐藏,添加滚动条和边框样式,确保选项过多时可滚动查看。 - 选项与标签:分别设计了选项的悬停效果、复选框样式,已选标签的背景、圆角,以及删除按钮的颜色和交互效果。
四、jQuery 功能实现
$(document).ready(function () {// 标签数据const tags = [{ id: 1, name: '前端开发' },{ id: 2, name: '后端开发' },{ id: 3, name: '移动开发' },{ id: 4, name: 'UI设计' },{ id: 5, name: '产品经理' },{ id: 6, name: '测试工程师' },{ id: 7, name: 'DevOps' },{ id: 8, name: '数据分析' }];// 已选标签let selectedTags = [];// 初始化下拉框function initDropdown() {$('#dropdownContent').empty();$.each(tags, function (index, tag) {const isSelected = $.grep(selectedTags, function (t) {return t.id === tag.id;}).length > 0;const option = $('<div>').addClass('tag-option');const checkbox = $('<input>', {type: 'checkbox',class: 'tag-checkbox',checked: isSelected,value: tag.id}).on('change', function () {toggleTag(tag);});const label = $('<label>').text(tag.name);option.append(checkbox, label);option.on('click', function (e) {if (e.target!== checkbox[0]) {checkbox.trigger('click');}});$('#dropdownContent').append(option);});}// 切换标签选择状态function toggleTag(tag) {const existingIndex = $.map(selectedTags, function (t, index) {return t.id === tag.id? index : null;})[0];if (existingIndex === undefined) {selectedTags.push(tag);} else {selectedTags.splice(existingIndex, 1);}updateButtonDisplay();}// 更新下拉按钮中显示的已选标签function updateButtonDisplay() {const button = $('#dropdownButton');const placeholder = $('#placeholder');button.contents().filter(function () {return!$(this).hasClass('placeholder') &&!$(this).hasClass('arrow');}).remove();if (selectedTags.length === 0) {placeholder.show();} else {placeholder.hide();$.each(selectedTags, function (index, tag) {const tagElement = $('<span>').addClass('selected-tag').text(tag.name);const removeButton = $('<span>').addClass('remove-tag').text('×').data('tag-id', tag.id);tagElement.append(removeButton);tagElement.insertBefore($('.arrow'));});}}// 使用事件委托处理删除按钮点击$(document).on('click', '.remove-tag', function (e) {e.stopPropagation();const tagId = $(this).data('tag-id');selectedTags = $.grep(selectedTags, function (tag) {return tag.id!== tagId;});updateButtonDisplay();initDropdown();});// 切换下拉框显示/隐藏$('#dropdownButton').on('click', function () {const isOpen = $('#dropdownContent').is(':visible');$('#dropdownContent').toggle(!isOpen);$('.arrow').toggleClass('open',!isOpen);});// 点击页面其他区域关闭下拉框$(document).on('click', function (event) {if (!$(event.target).closest('.multiselect-dropdown').length) {$('#dropdownContent').hide();$('.arrow').removeClass('open');}});// 初始化initDropdown();
});
上述 JavaScript 代码通过 jQuery 实现了多选标签下拉框的核心功能:
- 数据与状态初始化:定义了
tags
数组存储所有可选标签数据,selectedTags
数组记录已选标签。 - 初始化下拉框:
initDropdown
函数负责清空下拉菜单内容,循环遍历tags
数据,根据选项是否已选动态生成带有复选框的选项,并绑定点击事件。 - 标签选择切换:
toggleTag
函数处理复选框的选中与取消逻辑,更新selectedTags
数组,并调用updateButtonDisplay
函数刷新下拉按钮中的已选标签显示。 - 已选标签更新:
updateButtonDisplay
函数负责清空下拉按钮中的现有标签,根据selectedTags
数组重新渲染已选标签,并添加删除按钮。 - 删除标签处理:通过事件委托监听
.remove-tag
的点击事件,移除对应的已选标签,更新显示并重新初始化下拉菜单选项。 - 下拉框显示控制:为下拉按钮绑定点击事件,实现下拉菜单的显示与隐藏切换,同时控制箭头图标的旋转;监听页面点击事件,当点击区域不在下拉框范围内时,自动关闭下拉菜单。
五、总结
通过 HTML、CSS 和 jQuery 的结合,我们成功实现了一个功能完备、交互友好的多选标签下拉框。这种设计不仅提升了表单的美观性和操作便捷性,还能适应多种业务场景的多选需求。开发者可以根据实际项目需要,对标签数据、样式和功能进行进一步的扩展与优化,为用户带来更好的使用体验。
相关文章:
利用jQuery 实现多选标签下拉框,提升表单交互体验
在 Web 开发中,表单设计常常需要支持用户选择多个选项的场景。传统的多选框或下拉菜单在处理大量选项时,可能会影响界面美观和操作便捷性。这时,多选标签下拉框就成为了一种优雅的解决方案。本文将详细介绍如何通过 HTML、CSS 和 jQuery 实现…...
基于 HTML 和 CSS 实现的 3D 翻转卡片效果
一、引言 在网页设计中,为了增加用户的交互体验和视觉吸引力,常常会运用一些独特的效果。本文将详细介绍一个基于 HTML 和 CSS 实现的 3D 翻转卡片效果,通过对代码的剖析,让你了解如何创建一个具有立体感的卡片,在鼠标…...
【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (下篇)
特别说明:由于这一章节是2025年3月官方重点更新的部分,新增内容非常多,因此我不得不整理成上、下两篇,方便大家参考。 学习目标 备考阿里云大模型高级工程师ACP认证的这部分内容,旨在深入理解大模型应用在安全合规方面的要求,掌握模型部署相关要点,提升实际操作和应对复…...
MVC、MVP、MVVM三大架构区别
1、MVC架构 M(Model):主要处理数据的存储、获取、解析。 V(View):即Fragement、Activity、View等XML文件 C(Controller):主要功能为控制View层数据的显示,…...
期末代码Python
以下是 学生信息管理系统 的简化版代码示例(控制台版本,使用文件存储数据),包含核心功能: 1. 定义学生类 class Student: def __init__(self, sid, name, score): self.sid sid # 学号 self.name name # 姓名 self.s…...
ecat总线6000段定义
1ecat总线 不适合新手学习,我复习用的。 can和ecat是一家的,就跟C和C的关系。 参考CIA402定义 2 PDOr⬇️ 主站发送到终端伺服。 有4组,0x1600 3 PDOt⬆️ 伺服驱动器发送到主站。 我记得有4组,但这款伺服只有2组。 4 速度模…...
数据管理能力成熟度评估模型(DCMM)全面解析:标准深度剖析与实践创新
文章目录 一、DCMM模型的战略价值与理论基础1.1 DCMM的本质与战略定位1.2 DCMM的理论基础与创新点 二、DCMM模型的系统解构与逻辑分析2.1 八大能力域的有机关联与系统架构2.2 五级成熟度模型的内在逻辑与演进规律 三、DCMM八大能力域的深度解析与实践创新3.1 数据战略ÿ…...
Python精进系列:random.uniform 函数的用法详解
目录 🔍 一、引言📌 二、函数定义与参数说明✅ 函数定义⚙️ 参数说明 🧪 三、使用示例1️⃣ 生成单个随机数2️⃣ 生成多个随机数3️⃣ 生成二维坐标 🎯 四、应用场景🧪 模拟实验📊 数据采样🎮…...
观察者模式(Observer Pattern)
🧠 观察者模式(Observer Pattern) 观察者模式是一种行为型设计模式。它定义了一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。通常用于事件驱动的编程场景中。 &am…...
【论文阅读】Joint Deep Modeling of Users and Items Using Reviews for Recommendation
Joint Deep Modeling of Users and Items Using Reviews for Recommendation 题目翻译:利用评论对用户和项目进行联合深度建模进行推荐 原文地址:点这里 关键词: DeepCoNN、推荐系统、卷积神经网络、评论建模、协同建模、评分预测、联合建模…...
webpack 的工作流程
Webpack 的工作流程可以分为以下几个核心步骤,我将结合代码示例详细说明每个阶段的工作原理: 1. 初始化配置 Webpack 首先会读取配置文件(默认 webpack.config.js),合并命令行参数和默认配置。 // webpack.config.js…...
Linux 常用指令详解
Linux 操作系统中有大量强大的命令行工具,下面我将分类介绍一些最常用的指令及其用法。 ## 文件与目录操作 ### 1. ls - 列出目录内容 ls [选项] [目录名] 常用选项: - -l:长格式显示(详细信息) - -a:显…...
DXFViewer进行中 : ->封装OpenGL -> 解析DXF直线
DXFViewer进行中,目标造一个dxf看图工具。. 目标1:封装OpenGL,实现正交相机及平移缩放功能 Application.h #pragma once #include <string> #include <glad/glad.h> #include <GLFW/glfw3.h> #include "../Core/TimeStamp.h" #includ…...
多序列比对软件MAFFT介绍
MAFFT(Multiple Alignment using Fast Fourier Transform)是一款广泛使用且高效的多序列比对软件,由日本京都大学的Katoh Kazutaka等人开发,最早发布于2002年,并持续迭代优化至今。 它支持从几十条到上万条核酸或蛋白质序列的快速比对,同时在准确率和计算效率之间提供灵…...
基于 HTML5 Canvas 实现图片旋转与下载功能
一、引言 在 Web 开发中,经常会遇到需要对图片进行处理并提供下载功能的需求。本文将深入剖析一段基于 HTML5 Canvas 的代码,该代码实现了图片的旋转(90 度和 180 度)以及旋转后图片的下载功能。通过对代码的解读,我们…...
学习路线(机器人系统)
机器人软件/系统学习路线(从初级到专家) 初级阶段(6-12个月)基础数学编程基础机器人基础概念推荐资源 中级阶段(1-2年)机器人运动学机器人动力学控制系统感知系统推荐资源 高级阶段(2-3年&#…...
基于EFISH-SCB-RK3576工控机/SAIL-RK3576核心板的网络安全防火墙技术方案(国产化替代J1900的全栈技术解析)
基于EFISH-SCB-RK3576/SAIL-RK3576的网络安全防火墙技术方案 (国产化替代J1900的全栈技术解析) 一、硬件架构设计 流量处理核心模块 多核异构架构: 四核Cortex-A72(2.3GHz):处理深度…...
基于 jQuery 实现复选框全选与选中项查询功能
在 Web 开发中,复选框是常见的交互元素,尤其是在涉及批量操作、数据筛选等场景时,全选功能和选中项查询功能显得尤为重要。本文将介绍如何使用 HTML、CSS 和 jQuery 实现一个具备全选、反选以及选中项查询功能的复选框组,帮助开发…...
Python中的JSON库,详细介绍与代码示例
目录 1. 前言 2. json 库基本概念 3. json 的适应场景 4. json 库的基本用法 4.1 导 json入 模块 4.2 将 Python 对象转换为 JSON 字符串 4.3 将 JSON 字符串转换为 Python 对象 4.4 将 Python 对象写入 JSON 文件 4.5 从 JSON 文件读取数据 4.6 json 的其他方法 5.…...
tensorflow 调试
tensorflow 调试 tf.config.experimental_run_functions_eagerly(True) 是 TensorFlow 中的一个配置函数,它的作用是: 让 tf.function 装饰的函数以 Eager 模式(即时执行)运行,而不是被编译成图(Graph&…...
iptables的基本选项及概念
目录 1.按保护范围划分: 2.iptables 的基础概念 4个规则表: 5个规则链: 3.iptables的基础选项 4.实验 1.按保护范围划分: 主机防火墙:服务范围为当前一台主机 input output 网络防火墙:服务范围为防…...
使用AI 将文本转成视频 工具 介绍
🎬 文字生成视频工具 一款为自媒体创作者设计的 全自动视频生成工具,输入文本即可输出高质量视频,大幅提升内容创作效率。视频演示:https://leeseean.github.io/Text2Video/?t23 ✨ 功能亮点 功能模块说明📝 智能分…...
Python生活手册-NumPy数组创建:从快递分拣到智能家居的数据容器
一、快递分拣系统(列表/元组转换) 1. 快递单号录入(np.array()) import numpy as np快递单号入库系统 快递单列表 ["SF123", "JD456", "EMS789"] 快递数组 np.array(快递单列表) print(f"…...
Cmake编译wxWidgets3.2.8
一、下载库源代码 去wxWidgets - Browse /v3.2.8 at SourceForge.net下载wxWidgets-3.2.8.7z 二、建立目录结构 1、在d:\codeblocks目录里新建wxWidgets_Src目录 2、把文件解压到该目录 3、建立 CB目录,并在该目录下分别建立 Debug 和 Release目录 三、使用Cmake…...
2.在Openharmony写hello world
原文链接:https://kashima19960.github.io/2025/03/21/openharmony/2.在Openharmony写hello%20world/ 前言 Openharmony 的第一个官方例程的是教你在Hi3861上编写hello world程序,这个例程相当简单编写 Hello World”程序,而且步骤也很省略&…...
「OC」源码学习——对象的底层探索
「OC」源码学习——对象的底层探索 前言 上次我们说到了源码里面的调用顺序,现在我们继续了解我们上一篇文章没有讲完的关于对象的内容函数,完整了解对象的产生对于isa赋值以及内存申请的内容 函数内容 先把_objc_rootAllocWithZone函数的内容先贴上…...
从0开始学习大模型--Day01--大模型是什么
初识大模型 在平时遇到问题时,我们总是习惯性地去运用各种搜索引擎如百度、知乎、CSDN等平台去搜索答案,但由于搜索到的内容质量参差不齐,检索到的内容只是单纯地根据关键字给出内容,往往看了几个网页都找不到答案;而…...
202533 | SpringBoot集成RocketMQ
SpringBoot集成RocketMQ极简入门 一、基础配置(3步完成) 添加依赖 <!-- pom.xml --> <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version&g…...
大模型学习专栏-导航页
概要 本专栏是小编系统性调研大模型过程中沉淀的知识结晶,涵盖技术原理、实践应用、前沿动态等多维度内容。为助力读者高效学习,特整理此导航页,以清晰脉络串联核心知识点,搭建起系统的大模型学习框架,助您循序渐进掌握…...
互联网大厂Java面试:从Java SE到微服务的全栈挑战
场景概述 在这场面试中,谢飞机,一个搞笑但有些水的程序员,面对的是一位严肃的大厂面试官李严。面试官的目的是考察谢飞机在Java全栈开发,特别是微服务架构中的技术能力。面试场景设定在内容社区与UGC领域,模拟一个社交…...
2024年408真题及答案
2024年计算机408真题 2024年计算机408答案 2024 408真题下载链接 2024 408答案下载链接...
【datawhaleAI春训营】楼道图像分类
目录 图像分类任务的一般处理流程为什么使用深度学习迁移学习 加载实操环境的库加载数据集,默认data文件夹存储数据将图像类别进行编码自定义数据读取加载预训练模型模型训练,验证和预测划分验证集并训练模型 修改baseline处理输入数据选择合适的模型Ale…...
Unity:输入系统(Input System)与持续检测键盘按键(Input.GetKey)
目录 Unity 的两套输入系统: 🔍 Input.GetKey 详解 🎯 对比:常用的输入检测方法 技术底层原理(简化版) 示例:角色移动 为什么会被“新输入系统”替代? Unity 的两套输入系统&…...
day04_计算机常识丶基本数据类型转换
计算机常识 计算机如何存储数据 计算机底层只能识别二进制。计算机底层只识别二进制是因为计算机内部的电子元件只能识别两种状态,即开和关,或者高电平和低电平。二进制正好可以用两种状态来表示数字和字符,因此成为了计算机最基本的表示方…...
rvalue引用()
一、先确定基础:左值(Lvalue)和右值(Rvalue) 理解Rvalue引用,首先得搞清楚左值和右值的概念。 左值(Lvalue):有明确内存地址的表达式,可以取地址。比如变量名、引用等。 复制代码 int a = 10; // a是左值 int& ref = a; // ref也是左值右值(Rval…...
【Web3】上市公司利用RWA模式融资和促进业务发展案例
香港典型案例 朗新科技(充电桩RWA融资) 案例概述:2024年8月,朗新科技与蚂蚁数科合作,通过香港金管局“Ensemble沙盒”完成首单新能源充电桩资产代币化融资,募资1亿元人民币。技术实现:蚂蚁链提供…...
什么是IIC通信
IIC(Inter-Integrated Circuit),即IC,是一种串行通信总线,由飞利浦公司在1980年代开发,主要用于连接主板、嵌入式系统或手机中的低速外围设备1。IIC协议采用多主从架构,允许多个主设备和从设备连接在同一总线上进行通信。 IIC协议的工作原理: IIC协议使用两根信号线进…...
网络原理 TCP/IP
1.应用层 1.1自定义协议 客户端和服务器之间往往进行交互的是“结构化”数据,网络传输的数据是“字符串”“二进制bit流”,约定协议的过程就是把结构化”数据转成“字符串”或“二进制bit流”的过程. 序列化:把结构化”数据转成“字符串”…...
掌纹图像识别:解锁人类掌纹/生物识别的未来——技术解析与前沿数据集探索
概述 掌纹识别是一种利用手掌表面独特的线条、纹理和褶皱模式进行身份认证的生物识别技术。它具有非侵入性、高准确性和难以伪造的特点,被广泛应用于安全认证领域。以下将结合提供的链接,详细介绍掌纹识别的技术背景、数据集和研究进展。 提供的链接分析 香港理工大学掌纹数…...
【FPGA开发】Xilinx DSP48E2 slice 一个周期能做几次int8乘法或者加法?如何计算FPGA芯片的GOPS性能?
Xilinx DSP48E2 slice 在一个时钟周期内处理 INT8(8 位整数)运算的能力。 核心能力概述 一个 DSP48E2 slice 包含几个关键计算单元: 预加器 (Pre-Adder): 可以执行 A D 或 A - D 操作,其中 A 是 30 位,D 是 27 位。…...
APP 设计中的色彩心理学:如何用色彩提升用户体验
在数字化时代,APP 已成为人们日常生活中不可或缺的一部分。用户在打开一个 APP 的瞬间,首先映入眼帘的便是其色彩搭配,而这些色彩并非只是视觉上的装饰,它们蕴含着强大的心理暗示力量,能够潜移默化地影响用户的情绪、行…...
残差网络实战:基于MNIST数据集的手写数字识别
残差网络实战:基于MNIST数据集的手写数字识别 在深度学习的广阔领域中,卷积神经网络(CNN)一直是处理图像任务的主力军。随着研究的深入,网络层数的增加虽然理论上能提升模型的表达能力,但却面临梯度消失、…...
科学养生,开启健康生活新篇章
在快节奏的现代生活中,健康养生成为人们关注的焦点。科学合理的养生方式,能帮助我们远离疾病,提升生活质量,无需依赖传统中医理念,也能找到适合自己的养生之道。 饮食是养生的基础。遵循均衡饮食原则,每…...
如何扫描系统漏洞?漏洞扫描的原理是什么?
如何扫描系统漏洞?漏洞扫描的原理是什么? 漏洞扫描是网络安全中识别系统潜在风险的关键步骤,其核心原理是通过主动探测和自动化分析发现系统的安全弱点。以下是详细解答: 一、漏洞扫描的核心原理 主动探测技术 通过模拟攻击者的行为…...
Scrapy分布式爬虫实战:高效抓取的进阶之旅
引言 在2025年的数据狂潮中,单机爬虫如孤舟难敌巨浪,Scrapy分布式爬虫宛若战舰编队,扬帆远航,掠夺信息珍宝!继“动态网页”“登录网站”“经验总结”后,本篇献上Scrapy-Redis分布式爬虫实战,基于Quotes to Scrape,从单机到多机协同,代码简洁可运行,适合新手到老兵。…...
开元类双端互动组件部署实战全流程教程(第1部分:环境与搭建)
作者:一个曾在“组件卡死”里悟道的搬砖程序员 在面对一个看似华丽的开元类互动组件时,很多人以为“套个皮、配个资源”就能跑通。实际上,光是搞定环境配置、组件解析、控制端响应、前后端互联这些流程,已经足够让新手懵3天、老鸟…...
【实验笔记】Kylin-Desktop-V10-SP1麒麟系统知识 —— 开机自启Ollama
提示: 分享麒麟Kylin-Desktop-V10-SP1系统 离线部署Deepseek后,实现开机自动启动 Ollama 工具 的详细操作步骤 说明:离线安装ollama后,每次开机都需要手动启动,并且需要保持命令终端不能关闭;通过文档操作方法能实现开机自动后台启动 Ollama 工具 一、前期准备 1、离…...
Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡
Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡 一、Redis的本质与核心价值 1.1 Redis的技术定位 Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,由Salvatore Sanfilippo于2009年创建。它不同于传…...
认识并理解什么是链路层Frame-Relay(帧中继)协议以及它的作用和影响
帧中继(Frame Relay)是一种高效的数据链路层协议,主要用于广域网(WAN)中实现多节点之间的数据通信。它通过**虚电路(Virtual Circuit)**和统计复用技术,优化了传统分组交换网络(如X.25)的性能,特别适合带宽需求高、时延敏感的场景。 一、帧中继的核心设计目标 简化协…...
Python基本语法(类和实例)
类和实例 类和对象是面向对象编程的两个主要方面。类创建一个新类型,而对象是这个 类的实例,类使用class关键字创建。类的域和方法被列在一个缩进块中,一般函数 也可以被叫作方法。 (1)类的变量:甴一个类…...