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

数据结构篇——串(String)

一、引入


        在计算机中的处理的数据内容大致可分为以整形、浮点型等的数值处理和字符、字符串等的非数值处理。

        今天我们主要学习的就是字符串数据。本章主要围绕“串的定义、串的类型、串的结构及其运算”来进行串介绍与学习。

二、串的定义


2.1、串的基本定义


        串(string)是由零个或多个字符组成的有限序列,也是一种内容受限的线性表。其特殊性体现在数据元素是一个字符。一般表示为:

S="abcdefg";

        其中,S是串的名,双引号内元素的个数为串的长度,0个元素的串被称为空串,其长度为0;

Tips:字符串中的“空格”也算是串的一个元素,当一个串的元素只有空格时,这个串称为“空格串”

2.2、子串以及串相等的条件


        在一个串中,任意几个连续字符所组成的序列称之为该串的子串,包含子串的串叫做主串。子串在主串中的位置通常用子串的第一个字符在主串中的位置表示。

        例如下图的四个串:

 

        它们的长度分别为3、4、7、8.且a、吧、都是c和d的子串。其中a在c、d中的位置都是1.而b在c中的位置为4,在d中的位置为5。

        那么,怎么判断两个串是否相等呢?一般来说,只有当两个串的长度相等且各个位置对应的字符都相等时才相等。像上图中的a、b、c、d彼此都不相等。

三、串的类型定义和储存结构


3.1、串的类型定义与基本操作


        串的逻辑结构与先信标相似,但其基本操作的对象却有较大的区别。串的操作主要集中在“子串”这样的一个部分整体而不是单个元素。

其常见的基本操作如下:

函数初始条件操作结果
StrAssign(&T,chars)chars是字符串常量生成一个其值等于chars的串T
StrCopy(&T,S)串S存在由串S复制得到串T
StrEmpty(S)串S存在判断串S是否为空串
StrCompare(S,T)串S、T存在比较S、T的大小。分别返回>0、=1、<0的值
StrLength串S存在返回串S的长度(元素个数)
ClearString串S存在将S清为空串
Concat(&T,s1,s2)串s1、s2存在将s1、s2拼接并由T返回
SubString(&Sub,S,pos,len)串S存在,1<=pos<=StrLength(S)且0<=len<=StrLength(S)-pos+1用sub返回串S的第pos个字符起长度为len的子串
Index(S,T,pos)串S、T存在,T非空串,1<=pos<=StrLength(S).若S、T中有相同的子串,则返回它在主串S中的第pos个字符后第一次出现的位置,否则返回0
Replace(&s,T,V)串S、T存在,T非空串用V替换主串S中出现的所有与T相等的不重叠子串
StrInsert(&S,pos,T)串S、T存在,1<=pos<=StrLength(S)+1.在串S的第pos个字符前插入串T
StrDelete(&S,pos,len)串S存在,1<=pos<=StrLength(S)-len+1从S中删除第pos个字符起长度为len的子串
DestoryString(&S)串S存在销毁串S

3.2、串的储存结构 


        同其他数据结构一样,串也是有着最为常见的两种储存结构——顺序和链式。但考虑到存储效率和算法方便性,串多采用链式存储。

3.2.1、顺序存储


1、定长顺序存储:

        类似于线性表,用一组地址连续的存储单元存储串值的字符序列,按照预定义的大小,为每个串变量分配一个固定长度的存储区。则可用定长数组如下表示:

#define MAXLEN 255    //定义串的最大长度
typedef struct{char ch[MAXLEN+1];    //存储串的一维数组int length;            //记录串的长度
} SSting;

        但这种存储方式如同它的名字一样,是存储长度是固定的。串的实际长度只能小于等于MAXLEN,超过预定义长度的串值会被舍去,称为截断。串长有两种表示方法: 一是如上述定义描述的那样,用一个额外的变量len来存放串的长度;二是在串值后面加一一个不计入串长的结束标记字符“\0”,此时的串长为隐含值。

        但是现实生活中所遇到的数据长度都是不固定的。这时候内存的动态分布就显得格外重要。这时候就印出了一个新的顺序存储结构——堆分配存储。

2、堆分配存储:

        在c语言中存在一个称之为堆(Heap)的自由存储区,可以为每个新产生的串动态分配一块实际串长所需要的存储空间,若分配成功,则返回指向起始地址的指针作为串的基址,同时为了方便处理,约定串长也作为存储结构的一部分。定义如下:

typedef struct{char *ch;    //若是非空串,则按串长分配存储区,否则ch为NULLint length;
}HString;

 3.2.2、链式存储


        在顺序串中,我们发现,如果对其进行插入或者删除操作就显得十分麻烦。而链表结构在这方面就刚好能弥补这个弊端。但由于串的特殊性——结构中的每一个数据元素是一个字符,所以存在一个问题——每个结点中可以只存放一个字符,也可以存放多个字符。如图所示

 

        所以,当结点大小大于1时,由于串长不一定是结点大小的整数倍,所以链表中最后一个结点不一定全被串值占满。此时通常补上“#”或其他非串值字符。

        为了操作方便,当以链表存储串值的时候,除头指针外,还可附设一个尾指针指示链表中的最后一个结点,并给出当前串的长度。说明如下:

#define CHUNKSIZE 80        //定义块大小//定义结点结构
typedef struct Chunk{char ch[CHUNKSIZE];struct Chunk *next;
}Chunk;typedef struct{Chunk *head,*tail;    //串的头尾指针int length;        //串的长度
}LString

        串值的链式存储结构对某些串操作有一定的方便之处,但总体来说,不如顺序结构灵活。它占用存储量大且操作复杂。

四、小结 


        本文主要介绍了串的定义及其存储结构。涉及到的串的匹配算法相对比较重要,所以将单独发布来学习。

        如果我的内容对你有帮助,在下就厚着脸皮讨个点赞关注。如果你有更好的想法,还望留在评论区让我来参考学习。我将不胜感激并努力创作出更好的内容。         

 

 

相关文章:

数据结构篇——串(String)

一、引入 在计算机中的处理的数据内容大致可分为以整形、浮点型等的数值处理和字符、字符串等的非数值处理。 今天我们主要学习的就是字符串数据。本章主要围绕“串的定义、串的类型、串的结构及其运算”来进行串介绍与学习。 二、串的定义 2.1、串的基本定义 串&#xff08;s…...

Qwen架构与Llama架构的核心区别

我们在讨论Deepseek不同版本之间的区别时了解到,DeepSeek-R1的蒸馏模型分为Qwen和Llama两个系列,包括Qwen系列的0.5B、1.5B、3B、7B、14B、32B、72B和Llama系列的8B、70B。Qwen系列以阿里通义千问(Qwen)为基础模型架构(具体是Qwen-2.5),Llama系列以Meta的Llama为基础模型…...

uniapp或者vue 使用serialport

参考https://blog.csdn.net/ykee126/article/details/90440499 版本是第一位&#xff1a;否则容易编译失败 node 版本 18.14.0 npm 版本 9.3.1 electron 版本 30.0.8 electron-rebuild 版本 3.2.9 serialport 版本 10.0.0 需要python环境 main.js // Modules to control app…...

Linux和gcc/g++常用命令总结

目录 Linux命令总结 文件操作相关命令 ls cd pwd cp mv rm cat mkdir rmdir touch 文本处理操作命令 grep awk sed 进程管理操作相关命令 ps top htop kill pkill killall chmod chown 网络操作相关命令 ping ifconfig netstat ss lsof curl …...

Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式

路由组件和一般组件 路由组件 一般放到pages或view目录 一般组件 一般放到component目录 切换路由 切换路由时&#xff0c;组件和执行挂载和卸载 路由的工作模式 Hash模式 缺点 1.不美观&#xff0c;路径带#号 优点 1.兼容性好 一般适用于管理系统 History模式 缺点…...

MySQL如何给其他账号分配权限?

目录 基础权限分配流程 权限级别对照表 安全事项 MySQL数据库使用root账号为test账号分配权限的标准操作流程及注意事项&#xff1a; 基础权限分配 ‌1、root用户登录, 输入root密码后进入MySQL命令行环境‌ mysql -u root -p2、用户存在性校验 SELECT user,host FROM …...

记录一些面试遇到的问题

重载和重写的区别 重载是overload&#xff0c;覆盖是override 重载属于编译时多态&#xff0c;覆盖属于运行时多态 运行时多态和编译时多态 运行时多态指的是在运行的时候才知道要调用哪一个函数&#xff0c;编译时多态是指在编译的时候就知道调用哪一个函数。 运行时多态…...

Windows 系统 Docker Desktop 入门教程:从零开始掌握容器化技术

文章目录 前言一、Docker 简介二、Docker Desktop 安装2.1 系统要求2.2 安装步骤 三、Docker 基本概念四、Docker 常用命令五、实战&#xff1a;运行你的第一个容器5.1 拉取并运行 Nginx 容器5.2 查看容器日志5.3 停止并删除容器 六、总结 前言 随着云计算和微服务架构的普及&…...

量子计算测试挑战:软件测试将如何迎接新纪元?

引言 在计算机技术的飞速发展中&#xff0c;量子计算(Quantum Computing)正成为下一个颠覆性的科技热点。随着谷歌、IBM、微软等科技巨头纷纷投入巨资研究量子计算&#xff0c;其应用场景正逐步扩展&#xff0c;从优化计算到密码安全&#xff0c;再到人工智能和材料科学。然而…...

Matlab实现车牌识别

车牌识别技术作为现代智能交通系统、安防监控以及诸多车辆管理应用场景中的关键环节&#xff0c;正发挥着日益重要的作用&#xff0c;它能够自动、快速且精准地从车辆图像或视频流中提取车牌信息&#xff0c;实现车辆身份的智能化识别。 技术原理 车牌识别主要依托于图像处理、…...

Autosar 诊断开发-CAN到CANFD的更改-基于ETAS软件

文章目录 前言CanIf配置CanTp配置EcuC配置生成代码差异总结 前言 从CAN切换到CANFD&#xff0c;如果不想重新进行cfggen的话&#xff0c;手动更改配置或许会更快一些&#xff0c;本文介绍诊断报文从CAN变为CANFD后&#xff0c;BSW模块中的更改。 注&#xff1a;本文不介绍MCAL…...

八、排序算法

一些简单的排序算法 8.1 冒泡排序 void Bubble_sort(int a[] , int len){int i,j,flag,tmp;for(i=0 ; i < len-1 ; i++){flag = 1;for(j=0 ; j < len-1-i ; j++){if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;flag = 0;}}if(flag == 1){break;}}…...

TON基金会确认冠名赞助2025香港Web3嘉年华,并将于4月8日重磅呈现“TON生态日”

近日&#xff0c;由万向区块链实验室与HashKey Group联合推出的Web3年度盛典——2025香港Web3嘉年华正式宣布&#xff0c;TON基金会确认成为本届嘉年华的冠名赞助商&#xff0c;并将于4月8日在主会场特别举办“TON生态日”专题Side Event&#xff0c;集中展现TON生态的最新技术…...

《A++ 敏捷开发》- 18 软件需求

需求并不是关于需求 (Requirements are not really about requirements) 大家去公共图书馆寄存物品&#xff0c;以前都是扫二维码开箱&#xff0c;有些图书馆升级了使用指纹识别。 “是否新方法比以前好&#xff1f;”我问年轻的开发人员。 “当然用指纹识别好。新技术&#x…...

RAG技术深度解析:从基础Agent到复杂推理Deep Search的架构实践

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

智谱AI-FunctionCall

智谱AI-FunctionCall 编写FuncationCall大模型的函数调用&#xff0c;先直观的感受一下的感受下FunctionCall的魅力 文章目录 智谱AI-FunctionCall[toc]1-参考网址2-思路整理3-代码拆件1-[非核心]两个业务函数2-[非核心]业务函数的JsonSchema定义3-[核心]FunctionCall的调用1-打…...

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署

标题&#xff1a;[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释&#xff1a;重要思想&#xff1a;使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁…...

【玩转MySQL数据字典】MySQL数据字典与常用操作指令

MySQL数据字典简介与常用操作指令 一、数据字典简介 数据字典是MySQL 5.7中用于存储数据库对象元数据的系统表。在MySQL的早期版本中&#xff0c;元数据存储在.frm文件及其他文件里。这种存储方式存在诸多弊端&#xff0c;例如元数据不一致问题&#xff0c;不同文件间元数据的…...

C语言 —— 愿此世如黄金般辉煌 - 进制转换与操作符详解

目录 1. 操作符的分类 2. ⼆进制和进制转换 2.1 2进制转10进制 2.2 10进制转2进制 2.3 2进制转8进制 2.4 2进制转16进制 3. 原码、反码、补码 4. 移位操作符 4.1 左移操作符 4.2 右移操作符 5. 位操作符&#xff1a;&、|、^、~ 5.1 & 按位与 5.2 | 按位或 …...

基于粒子群算法的配电网重构

一、配电网重构原理 定义&#xff1a; 配电网重构是指在满足运行约束的前提下&#xff0c;通过改变开关状态优化配电网性能&#xff0c;提高系统的经济效益和运行效率。 拓扑约束&#xff1a; 配电网必须保持径向拓扑&#xff0c;避免环网或孤岛。采用算法控制开关状态的选择&…...

【云岚到家】-实战问题(上)

【云岚到家】-实战问题&#xff08;上&#xff09; 基础架构项目涉及那些角色云岚的业务流程&#xff1f;云岚家政包括那些模块项目采用什么架构如何开发一个接口&#xff1f;RESTful风格的去定义一个接口如何开发一个接口的service方法接口的异常处理怎么实现的&#xff1f;Sp…...

005-获取内存占用率

获取内存占用率 windows平台 在Windows环境下使用C获取内存占用率&#xff0c;可以通过以下两种方式实现&#xff0c;分别针对系统整体和特定进程的内存监控&#xff1a; 一、获取系统整体内存占用率 核心函数&#xff1a;GlobalMemoryStatusEx 步骤&#xff1a; 定义MEMOR…...

python从入门到精通(二十二):python文件操作之Excel全攻略(基于pandas)

Python处理表格数据 1.表格的基础知识1.1 xls与xlsx格式详解1.2 表格内部结构的认识 2.表格的基础操作2.1 认识表格的基本库2.1.1 csv内置的标准库2.1.2 xlrd 和 xlwt2.1.3 openpyxl2.1.4 pandas 2.2 安装和环境配置2.3 xlrd 和 xlwt2.3.1 库的说明2.3.2 安装xlrd库2.3.3 导入模…...

html常用标签

文章说明 本文旨在总结 HTML 中常见的标签&#xff0c;并提供简洁的解释&#xff0c;方便大家快速查找和复习。我们假设读者已经具备一定的 HTML 基础知识。本文将持续更新和完善&#xff0c;欢迎大家参与续写和补充 一、 HTML 标签 整个网页从 <html> 开始到 </html…...

ROS分布式部署通信

目录 一、概念 二、设置 ROS 分布式网络 1. 环境要求 2. 主机&#xff08;Master&#xff09;设置 3. 从机&#xff08;节点设备&#xff09;设置 4. 测试是否正常通信 三、进阶启动多从机节点&#xff08;launch&#xff09;。 一、概念 ROS 分布式通信用于在多台计算机…...

.Net 6 上传文件接口 文件大小报错整体配置

/// <summary>/// 上传文件/// </summary>/// <param name"file"></param>/// <returns></returns>[HttpPost("UploadifyFile")][RequestSizeLimit(2000 * 1024 * 1024)] // 设置最大请求体大小为 100MBpublic async …...

12.【线性代数】——图和网络

十二 图和网络&#xff08;线性代数的应用&#xff09; 图 g r a p h { n o d e s , e d g e s } graph\{nodes, edges\} graph{nodes,edges}1.关联矩阵2. A A A矩阵的零空间&#xff0c;求解 A x 0 Ax0 Ax0 电势3. A T A^T AT矩阵的零空间&#xff0c;电流总结电流图结论 …...

游戏引擎学习第145天

仓库:https://gitee.com/mrxiao_com/2d_game_3 今天的计划 目前&#xff0c;我们正在完成遗留的工作。当时我们已经将声音混合器&#xff08;sound mixer&#xff09;集成到了 SIMD 中&#xff0c;但由于一个小插曲&#xff0c;没有及时完成循环内部的部分。这个小插曲主要是…...

Linux(Centos 7.6)命令详解:zip

1.命令作用 打包和压缩(存档)文件(package and compress (archive) files)&#xff1b;该程序用于打包一组文件进行分发&#xff1b;存档文件&#xff1b;通过临时压缩未使用的文件或目录来节省磁盘空间&#xff1b;且压缩文件可以在Linux、Windows 和 macOS中轻松提取。 2.命…...

23年以后版本pycharm找不到conda可执行文件解决办法

这个问题很痛苦&#xff0c;折磨了我半天。 就是链接远程服务器的时候 就一直以为这三个都要配置 就这个conda环境这里怎么都找不到服务器的虚拟环境的python可执行文件&#xff0c;非常痛苦。 后面查找了资料&#xff0c;找了好久&#xff0c;才发现&#xff0c;原来只需要配…...

AGI(Artificial General Intelligence,通用人工智能)技术介绍

文章目录 **AGI的关键特点**1. **泛化能力**&#xff1a;2. **自主性和适应性**&#xff1a;3. **自我意识与推理**&#xff1a; **与当前AI的区别****AGI的挑战**1. **技术难点**&#xff1a;2. **伦理与安全**&#xff1a;3. **资源与算力**&#xff1a; **AGI的实现路径**- …...

createrepo centos通过nginx搭建本地源

yum update 先安装一个nginx。 安装Nginx yum install gcc gcc-c pcre pcre-devel openssl openssl-devel libtool zlib zlib-devel -y cd /usr/local/src wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz cd nginx-1.22.0 ./configu…...

279.完全平方数

279.完全平方数 力扣题目链接(opens new window) 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, ...&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n &#xff0c;返回和为 n 的完全平方数的 最少数…...

Dify部署踩坑指南(Windows+Mac)

组件说明 Dify踩坑及解决方案 ⚠️ 除了修改镜像版本&#xff0c;nginx端口不要直接修改docker-compose.yaml &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 1、更换镜像版本 这个文件是由.env自动生成的&#xff0c;在.env配置 …...

备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

深入解析ECDSA与RSA公钥算法:原理、对比及AWS最佳实践

一、公钥加密算法概述 在HTTPS通信和数字证书领域,ECDSA(椭圆曲线数字签名算法)和RSA(Rivest-Shamir-Adleman)是最主流的两种非对称加密算法。它们共同构成了现代网络安全的基础,但设计理念和技术实现存在显著差异。 © ivwdcwso (ID: u012172506) 二、RSA算法详解…...

单例设计模式---懒汉式--线程安全和不安全、枚举类

单例设计模式—懒汉式–线程安全和不安全 优点 资源利用率高&#xff1a;只有在真正需要使用单例实例时才进行创建&#xff0c;避免了在应用启动时就占用不必要的资源。 缺点 线程安全问题&#xff1a;在多线程环境下&#xff0c;如果多个线程同时调用获取实例的方法&#xff…...

c++: 容器vector

文章目录 介绍initializer_list与string的不同底层总代码 介绍 C 中的 vector 是一种序列容器&#xff0c;它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构&#xff0c;但它可以自动管理内存&#xff0c;这意味着你不需要手动分配和释放内存。 与 C 数组相…...

肖恩的n次根

1.肖恩的n次根 - 蓝桥云课 问题描述 喜欢研究数学问题的肖恩注意到&#xff0c;在编程语言中通常内置函数只有开平方根和开立方根&#xff0c;但是肖思想知道开高次方根&#xff08;大于3次方称为高次方&#xff09;&#xff0c;应该怎么做。请你设计一个程序来帮帮肖恩。 输…...

Java直通车系列15【Spring MVC】(ModelAndView 使用)

目录 1. ModelAndView 概述 2. ModelAndView 的主要属性和方法 主要属性 主要方法 3. 场景示例 示例 1&#xff1a;简单的 ModelAndView 使用 示例 2&#xff1a;使用 ModelAndView 处理列表数据 示例 3&#xff1a;使用 ModelAndView 处理异常情况 1. ModelAndView 概…...

LeetCode和为k的字数组(560题)

题目展示 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums …...

消息队列为什么会有消费组的概念,什么作用,以订单系统为例说明

消息队列中的消费组&#xff08;Consumer Group&#xff09;概念是为了实现消息的并行处理和负载均衡。在分布式系统中&#xff0c;消费组允许多个消费者实例共同消费同一个主题&#xff08;Topic&#xff09;中的消息&#xff0c;从而提高消息处理的速度和系统的吞吐量。 消费…...

数据结构--AVL树

一、二叉搜索树&#xff08;Binary Search Tree, BST&#xff09; 基本性质 对于树中的每个节点&#xff0c;其左子树中的所有节点值均小于该节点值。其右子树中的所有节点值均大于该节点值。左右子树也分别是二叉搜索树。 极端场景 在极端情况下&#xff0c;如插入节点顺序…...

OpenManus 的提示词

OpenManus 的提示词 引言英文提示词的详细内容工具集的详细说明中文翻译的详细内容GitHub 仓库信息背景分析总结 引言 OpenManus 是一个全能 AI 助手&#xff0c;旨在通过多种工具高效地完成用户提出的各种任务&#xff0c;包括编程、信息检索、文件处理和网页浏览等。其系统提…...

达梦数据库在Linux,信创云 安装,备份,还原

&#xff08;一&#xff09;系统环境检查 1操作系统&#xff1a;确认使用的是国产麒麟操作系统&#xff0c;检查系统版本是否兼容达梦数据库 V8。可以通过以下命令查看系统版本&#xff1a; cat /etc/os-release 2硬件资源&#xff1a;确保服务器具备足够的硬件资源&#xff0…...

怎么使用Sam Helper修改手机屏幕分辨率,使得游戏视野变广?

1.准备Shizuku 和Sam Helper软件 2.打开设置&#xff0c;找到关于本机&#xff0c;连续点击版本号五次打开开发者选项 3.找到开发者选项&#xff0c;打开USB调试和无线调试 4.返回桌面&#xff0c;我们接着打开shizuku,点击配对&#xff0c;这里打开开发者选项&#xff0c;找…...

Unity DOTS 从入门到精通之 创建实体

文章目录 前言安装 DOTS 包创建实体1.手动创建空实体&#xff08;适用于运行时动态创建&#xff09;2.克隆 预制体&#xff08;主线程同步操作&#xff09;3.克隆 预制体&#xff08;兼容Job System&#xff09;4.通过 GameObject 转换&#xff08;Baker方式&#xff09; 其他E…...

【OA角色数据权限】自定数据权限(自定义部门)、本部门数据权限、本部门及以下数据权限、仅本人数据权限

文章目录 引言I 表设计部门表设计角色表设计II 数据过滤处理注解参数说明数据权限使用数据过滤处理切面 DataScopeAspectQuery 基类知识扩展引言 I 表设计 部门表设计 部门表采用部门路径反应祖先层级关系(包含自己部门的ID) 查询用户所在的本部门及其对应的下级部门:采用…...

记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序&#xff08;一&#xff09;&#xff1a;注册账号及下载工具&#xff08;250308&#xff09;一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序&#xff08…...

STM32旋转编码器驱动详解:方向判断、卡死处理与代码分析 | 零基础入门STM32第四十八步

主题内容教学目的/扩展视频旋转编码器电路原理&#xff0c;跳线设置&#xff0c;结构分析。驱动程序与调用。熟悉电路和驱动程序。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、旋转编码器原理与驱动结构1.1 旋转编码器工作原理1.2 驱动程序结构 二、方向判断…...