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

03-数据结构(一)

链接:C# 数据结构_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1a541147Nk/?spm_id_from=333.337.search-card.all.click&vd_source=6eb7d966aa03ff5cb02b63725f651e68

链接:使用 C#.Net 学习掌握数据结构 (更新中)_哔哩哔哩_bilibili

一个:

C#编程-第五季-数据结构和算法-宇宙最简单教程_哔哩哔哩_bilibili

C#编程-第六季-编程内功修炼-算法-宇宙最简单教程_哔哩哔哩_bilibili

一、数据结构

基础语法、  数据结构与算法、网络编程与多线程、网络通信、队列、WPF基础、Winform基础、数据库基础、容器、docker、prism框架。  WebApi。

RemoveAt:根据索引移除

1、列表

1.1、线性表

顺序表的存储:顺序表中的每个元素占w个存储单元,设第i个数据元素的存储地址为Local(ai)则有:Local(ai)=Local(a1)+(i-1)*w。也是顺序表的起始地址,顺序表的基地址,顺序表任意存取的特点,占用的是一组连续的存储空间,具有任意存取的特点,数组具有天生表示顺序表的数据存储区域的特性。

在这个例子中,索引器允许你通过索引来读取(get)和写入(setSeqList<T>中的元素。如果SeqList<T>没有索引器,并且你试图像数组一样使用它(即mySeqList[index]),编译器会报错,因为它不知道如何处理这样的语法。

因此,如果你在使用自定义集合类(如SeqList<T>)时遇到索引相关的错误,很可能是因为该类没有实现索引器,或者你尝试访问的索引超出了集合的有效范围。确保你的类正确实现了索引器,并在使用索引器时始终检查索引的有效性,以避免IndexOutOfRangeException异常。

代码:

  interface IList1<T>{int GetLength();void Clear();bool IsEmpty();void Add(T item);void Insert(T item, int index);T Delete(int index);//T this[int index] { get; }T GetEle(int index);int Locate(T value);}
 internal class SeqList<T> : IList1<T>{///  顺序表实现方式public T[] data;  //  存储数据public int count = 0;  //  表示存了多少个数据public SeqList(int size)   //  size最大容量{data = new T[size];}public SeqList() : this(10)  //  默认构造函数容量是10{}public T this[int index]{get { return GetEle(index); }}public void Add(T item){if (count == data.Length){Console.WriteLine("当前数组已存满,不允许再存");}else{data[count] = item;count++;}}public void Clear(){throw new NotImplementedException();}public T Delete(int index){T item = data[index];for(int i = index - 1; i < count - 1; i++){data[i] = data[i + 1];}count--;return item;}public T GetEle(int index){if (index >= 0 && index <= count - 1){return data[index];}else{Console.WriteLine("索引不存在");return default(T);  }}//  取得数据的长度public int GetLength(){return data.Length;}public void Insert(T item, int index){for(int i=count-1; i>=index; i--){data[i] = data[i-1];}}public bool IsEmpty(){throw new NotImplementedException();}public int Locate(T value){for (int i = 0; i < count-1; i++){if (data[i].Equals(value)){return i;}}return -1;  /// 表示值不存在;}}

2、链表

单链表和双链表:

2.1、单链表

单链表使用地址连续的存储单元顺序存储线性表中的各个数据元素,链式存储,链表不要求逻辑上相邻的数据元素在物理存储位置上页相邻,因此,在对链表进行插入和删除时不需要移动数据元素,但是同时页失去了顺序表可随机存储的有带你。

表头  数据  下一个数据的地址

    internal class Node1<T>{private T data;  //  存储元素private Node1<T> next;   // 用来指向下一个元素public Node1(T value){data = value;next = null;}public Node1(T value, Node1<T> next){this.data = value;this.next = next;}public Node1(){data=default(T);next= null;}public  Node1(Node1<T> next){this.next = next;}public T Data{get { return data; }set {  data = value; }}public Node1<T> Next{get { return next; }set { next = value; }}}

代码:

   interface IList1<T>{int GetLength();void Clear();bool IsEmpty();void Add(T item);void Insert(T item, int index);T Delete(int index);//T this[int index] { get; }T GetEle(int index);int Locate(T value);}
  internal class linkList<T> : IList1<T>{public Node1<T> head;   // 第一个节点public linkList() {head = null;}public void Add(T item){Node1<T> newNode = new Node1<T>(item);  //  根据新的数据创建新的节点if (head == null){head = newNode;}else{Node1<T> temp = head;while (true){if (temp.Next != null){temp = temp.Next;}else{break;}}temp.Next = newNode;}}public void Clear(){throw new NotImplementedException();}public T Delete(int index){T data;if (index == 0){data = head.Data;head = head.Next;return data;}else{Node1<T> temp = head;for (int i = 0; i < index; i++){temp = temp.Next;}data = temp.Next.Data;temp.Next = temp.Next.Next;return data;}}public T GetEle(int index){throw new NotImplementedException();}public int GetLength(){if(head==null) return 0;Node1<T> temp = head;int count = 1;while(temp != null){if(temp.Next != null){count++;temp= temp.Next;}else{break;}}return count;}public void Insert(T item, int index){Node1<T> newNode=new Node1<T>(item);if(index==0){newNode.Next = head;head= newNode;}else{Node1<T> temp=head;for (int i=0; i<index; i++){temp = temp.Next;}newNode.Next = temp.Next;temp.Next = newNode;}}public bool IsEmpty(){throw new NotImplementedException();}public int Locate(T value){Node1<T> temp = head;if (temp == null){return -1;}else{int index = 0;while (true){if (temp.Data.Equals(value)){return index;}else{if(temp.Next!= null){index++;temp = temp.Next;}else{break;}}}return -1;}}}

2.2、双链表

指向前一个节点,先进后除,,没有计数,

3、栈

3.1、顺序栈(Stack)

是操作元素限定在表的尾端进行的线性表,表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶(Top)另一端固定,叫做栈底,当为空,脚空栈。

栈通常记为:S=(a1, a2, ...,an) a1为栈底元素,an为栈顶元素。a1到an依次入栈,出栈则次序相反,an第一个出栈,a1最后出栈。栈的操作是按照后进先出或现金后出的原则进行

 SeqList<string> strList = new SeqList<string>();strList.Add("123");strList.Add("456");strList.Add("789");Console.WriteLine("123456789");Console.WriteLine(strList[0]);Console.ReadLine();Console.WriteLine(strList);Console.WriteLine(strList.GetLength());for (int i = 0; i < strList.GetLength(); i++){Console.WriteLine(strList[i]);}Console.ReadLine();Stack<string> stack = new Stack<string>();stack.Push("a");stack.Push("b");stack.Push("c");Console.WriteLine(stack.Pop());Console.ReadLine();

代码:  类似于数组,用数组构造栈的先进后出

    interface IsStackDS<T>{int Count { get; }int GetLength();bool IsEmpty();void Clear();void Push(T item);T Pop();T Peek();}
    internal class seqStack<T> : IsStackDS<T>{private T[] data;private int top;public seqStack(int size){data = new T[size];top = -1;}public int Count { get { return top+1; } }public void Clear(){top=-1;}public int GetLength(){return Count;}public bool IsEmpty(){return Count==0;}public T Peek(){throw new NotImplementedException();}public T Pop(){T temp = data[top];top--;return temp;}public void Push(T item){data[top+1]=item;top++;}}

3.2、链栈

栈顶Top   为Node1 类  出栈时候指向下一个Node1

其他和单链表类似:

代码: 但是用链表的形式描述栈的先进后出,需要用到类节点   Node

    internal class linkStack<T> : IsStackDS<T>{private T data;private Node1<T> top;private int count;//public seqStack(int size)//{//    data = ;//    top = null;//}public int Count { get { return count; } }public void Clear(){top = null;count = 0;}public int GetLength(){return Count;}public bool IsEmpty(){return Count == 0;}public T Peek(){throw new NotImplementedException();}public T Pop(){data = top.Data;top=top.Next;count--;return data;}public void Push(T item){Node1<T> newNode = new Node1<T>(item);newNode = new Node1<T>(item);top.Next = top;top = newNode;count++;}

4、队列

代码:队头  队尾  ,先进先出,front 先出,有计数:count。

4.1、顺序队列

用以连片的存储空间老存储队列中的数据元素,这样的队列称为顺序队列(Sequence   Queue)。类似于顺序栈,

代码:需要设置数组的大小

    interface IsQueueDS<T>{int Count {  get; }int GetLength();bool IsEmpty();void Clear();void Enqueue(T item);T Dequeue();T Peek();}
  internal class seqQueue<T> : IsQueueDS<T>{private T[] data;private int count;private int front;  //  队首,从  -1 开始private int rear;  //  队尾public seqQueue(int size){data=new T[size];count = 0;front = -1;rear = -1;}public int Count { get { return count; } }public void Clear(){count=0;}public T Dequeue(){if (count >0){T temp = data[front + 1];front++;count--;return temp;}else{Console.WriteLine("无法取得,队列为空");return default(T);}}public void Enqueue(T item){if (count == data.Length){Console.WriteLine("队列已经满了");}else{if(rear==data.Length-1)  //  判断是否在末尾,从头开始{data[0]=item;rear = 0;}else{data[rear + 1] = item;rear++;}}}public int GetLength(){return count;}public bool IsEmpty(){return count == 0 ;}public T Peek(){T temp=data[front+1];return temp;}}

4.2、链队列

表与链,  栈与队列,不需要设置数组的大小

 internal class Node1<T>{private T data;  //  存储元素private Node1<T> next;   // 用来指向下一个元素public Node1(T value){data = value;next = null;}public Node1(T value, Node1<T> next){this.data = value;this.next = next;}public Node1(){data=default(T);next= null;}public  Node1(Node1<T> next){this.next = next;}public T Data{get { return data; }set {  data = value; }}public Node1<T> Next{get { return next; }set { next = value; }}}

代码:

    interface IsQueueDS<T>{int Count {  get; }int GetLength();bool IsEmpty();void Clear();void Enqueue(T item);T Dequeue();T Peek();}
    internal class linkQueue<T> : IsQueueDS<T>{private Node1<T> front;private Node1<T> rear;private T data;private int count;public linkQueue(){front = null;rear = null;count = 0;}public int Count {  get { return count; } }public void Clear(){front = null;rear = null ;count = 0;}public T Dequeue(){if (count == 0){Console.WriteLine("为空无法出队列");return default(T);}else if(count == 1){T temp = front.Data;front = null;rear = null;count = 0;return temp;}else{T temp = front.Data;temp=front.Data;front=front.Next;count--;return temp;}}public void Enqueue(T item){Node1<T> newNode = new Node1<T>(item);if (count == 0){front = newNode;count = 1;rear= newNode;}else{rear.Next = newNode;rear = newNode;count++;}}public int GetLength(){return count;}public bool IsEmpty(){return count == 0 ;}public T Peek(){return front.Data;}}

5、字符串

字符串类的创建

6、数组

数组的创建:



7、算法

算法:

7.1、快速排序

作为排序依据的数据项称为  ”排序项“,也成为记录的  ”关键码“,关键码分为主关键码和次关键码。一般地,若关键码是主关键码,则对于任意排序的序列,经排序后得到的结果是唯一的;弱为次关键码,排序结果不唯一,这是因为待排序的序列中可能存在具有相同关键码的记录。此时,这些记录在排序结果中,他们之间的位置关系与排序前不一定保持一致。如果使用某个排序方法对任意的记录序列关键码进行排序,形同关键码值得记录之间得位置关系与排序前一致,则称此排序方法是稳定的,如果不一致,则称此排序方法是不稳定的。

由于待排序得记录得数量不同,使得排序过程中设计得存储器不同,可将排序方法分为内部排序和外部排序两大类。

内部排序值得是在排序过程中,记录全部存放在计算机得内存中,并在内存中调整记录之间得相对位置,在此期间没有进行内、外存的数据交换。外部排序指的是在排序过程中,记录得主要部分存放在外存中,借助于内存逐步调整记录之间得相对位置。在这个过程中,需要不断地在内外存之间交换数据。

排序:排序项,

快速排序:

7.1.1、直接插入排序

双重循环,逐个比较排序,直接拿后一个与前边所有去比较

7.1.2、冒泡排序

将相邻得记录得关键码进行比较,若前边记录的关键码大于后边记录的关键码,则将它们交换,否则不交换。需要操作N-1次,,N为元素个数。

7.1.3、简单选择排序

先将第一个作为比较直,与后边得所有元素中得最小值比较,然后交换位置。

7.1.4、快速排序

先取得一个基数,即0位置,,然后从后索引找到比它小的,再从前往后找比它小的。

直到基数放在某个位置使得将数组分为两个部分。前边都比基数小,后边都比基数大。

internal class Program
{static void QuickSort(int[] dataArray,int left,int right){if(left<right){int x = dataArray[left];int i = left;int j = right;while(true&&i<j){while (true && i < j){if (dataArray[j] <= x){dataArray[i] = dataArray[j];break;}else{j--;}}while (true && i < j){if ((dataArray[i] >x)){dataArray[j] = dataArray[i];break;}else{i++;}}}//  此时i==j找到中间位置dataArray[i] = x;QuickSort(dataArray,left,i-1);QuickSort(dataArray,i+1,right);}}static void Main(string[] args){int[] data = new int[] { 42, 20, 17, 27, 13, 8, 17, 48 };QuickSort(data,0,data.Length-1);foreach(var temp in data){Console.WriteLine(temp);}}

7.1、二叉树

算法、重点

相关文章:

03-数据结构(一)

链接&#xff1a;C# 数据结构_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1a541147Nk/?spm_id_from333.337.search-card.all.click&vd_source6eb7d966aa03ff5cb02b63725f651e68 链接&#xff1a;使用 C#.Net 学习掌握数据结构 (更新中)_哔哩哔哩_bilibili 一…...

MySQL问题记录-主机被锁问题

主机被锁问题 描述&#xff1a;"Host ‘113.109.111.217’ is blocked because of many connection errors 原因&#xff1a;同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞&#xff1b; 超过mysql数据库max_connection_errors的最大值&#xff1b; 解决方法…...

用好 explain 妈妈再也不用担心我的 SQL 慢了

大家好&#xff0c;我是聪&#xff0c;一个乐于分享的小小程序员。在不久之前我写了一个慢 SQL 分析工具&#xff0c;可以用来分析 Java Mybatis 项目的 SQL 执行情况&#xff0c;其中刚好涉及到了 explain 的使用。感兴趣的可以了解一下。 Github 地址⭐&#xff1a;https://…...

【漏洞复现】泛微OA E-Cology SignatureDownLoad SQL注入漏洞

漏洞描述&#xff1a; 泛微OA E-Cology是一款面向中大型组织的数字化办公产品&#xff0c;它基于全新的设计理念和管理思想&#xff0c;旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology SignatureDownLoad存在SQL注入漏洞&#xff0c;允许攻击者非法访问和操…...

前端工程化,前端监控,工作流,部署,性能

开发规范 创建项目的时候&#xff0c;配置下 ESlint&#xff0c;stylelint&#xff0c; prettier&#xff0c; commitlint 等; ESLint 主要功能&#xff1a; ESLint 是一个静态代码检查工具&#xff0c;用于在 JavaScript 代码中识别和报告模式。它的目标是提供一个插件化的 …...

浅析Java贪心算法

浅析Java贪心算法 在计算机科学中&#xff0c;贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法并不总是能够得到全…...

vue3.0(五) reactive全家桶

文章目录 1 reactive1.1 reactive的应用1.2 reactive的特点1.3 reactive的注意1.4 reactive的局限性 2 toRefs3 isReactive4 shallowReactive5 readonly5.1 readonly 详细信息5.2 readonly函数创建一个只读的响应式对象5.3 如何修改嵌套在只读响应式对象中的对象? 6 isReadonl…...

Selenium 自动化 —— 四种等待(wait)机制

更多关于Selenium的知识请访问CSND论坛“兰亭序咖啡”的专栏&#xff1a;专栏《Selenium 从入门到精通》 ​ 目录 目录 需要等待的场景 自己实现等待逻辑 Selenium 提供的三种等待机制 隐式等待&#xff08;Implicit Waits&#xff09; 隐式等待的优点 隐式等待的缺点 …...

每日两题 / 437. 路径总和 III 105. 从前序与中序遍历序列构造二叉树(LeetCode热题100)

437. 路径总和 III - 力扣&#xff08;LeetCode&#xff09; 前序遍历时&#xff0c;维护当前路径&#xff08;根节点开始&#xff09;的路径和&#xff0c;同时记录路径上每个节点的路径和 假设当前路径和为cur&#xff0c;那么ans 路径和(cur - target)的出现次数 /*** D…...

matlab使用2-基础绘图

matlab使用2-基础绘图 文章目录 matlab使用2-基础绘图1. 二维平面绘图2. 三维立体绘图3. 图形窗口的分割 1. 二维平面绘图 % 创建一些二维数据 x 0:0.01:10; % x轴的数据点&#xff0c;从0到10&#xff0c;间隔为0.01 y sin(x); % y轴的数据点&#xff0c;是x的正弦…...

嵌入式开发四大平台介绍

MCU&#xff08;Micro Control Unit&#xff09;四大平台介绍&#xff09; 单片机优点&#xff1a;缺点&#xff1a;总结&#xff1a; DSP digital signal processingARM优点&#xff1a;缺点&#xff1a;总结 FPGA什么事FPGA&#xff08;集成元件库&#xff09;FPGA开发方法—…...

《Python编程从入门到实践》day28

# 昨日知识点回顾 安装Matplotlib 绘制简单的折线图 # 今日知识点学习 15.2.1 修改标签文字和线条粗细 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解决办法&#xff1a;matplotlib切换图形界面显示终端TkAgg。 #…...

STC8增强型单片机开发【定时器Timer⭐】

目录 一、引言 二、定时器基础知识 三、STC8定时器配置 四、代码示例 五、总结 一、引言 在单片机开发中&#xff0c;定时器&#xff08;Timer&#xff09;是一个极其重要的组件&#xff0c;它允许开发者基于时间触发各种事件或任务。STC8增强型单片机作为一款功能丰富的…...

C语言实训项目源码-02餐厅饭卡管理系统-C语言实训C语言大作业小项目

C语言餐厅饭卡管理系统 一、主要功能 主要功能模块 页面名称 实现功能 负责人 进入页面 进入程序 主函数 系统主要功能 修改密码函数 修改密码 充值&#xff0c;显示函数 饭卡充值与信息显示 购买饭菜…...

Linux第四节--常见的指令介绍集合(持续更新中)

点赞关注不迷路&#xff01;本节涉及初识Linux第四节&#xff0c;主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1f44d;&#x1f3fb; 收藏 ✨ 加关注&#x1f440; 期待与你共同进步! 1. more指令 语法&#xff1a;more [选项][文件]…...

Apache Sqoop:高效数据传输工具搭建与使用教程

目录 引言一、环境准备二、安装sqoop下载sqoop包解压文件 三、配置Sqoop下载mysql驱动拷贝hive的归档文件配置环境变量修改sqoop-env.sh配置文件替换版本的commons-lang的jar包 验证Sqoop安装查看Sqoop版本测试Sqoop连接MySQL数据库是否成功查看数据库查看数据表去除警告信息 四…...

【C++初阶】第十一站:list的介绍及使用

目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…...

【devops】Linux 日常磁盘清理 ubuntu 清理大文件 docker 镜像清理

日常磁盘清理 1、查找大文件 find / -type f -size 1G2、清理docker无用镜像&#xff08;drone产生的残余镜像文件&#xff09; docker system prune -a一、清理服务器磁盘 1、查找大文件 在Ubuntu系统中&#xff0c;你可以使用find命令来查找大文件。find命令是一个强大的…...

2024年资阳市企业技术中心申报条件、流程要求及支持政策须知

第一章 总则 第一条 为深入贯彻中央、省、市大力实施创新驱动发展战略的部署要求&#xff0c;进一步强化企业技术创新主体地位&#xff0c;引导和支持企业增强技术创新能力&#xff0c;健全技术创新市场导向机制&#xff0c;规范我市企业技术中心&#xff08;下称“市企业技术…...

社交媒体数据恢复:如流

如流&#xff0c;原名百度Hi&#xff0c;是百度公司开发的一款即时通讯软体。百度Hi具备文字消息、视讯、通话、文件传输等功能。 查找备份&#xff1a;如果您之前有备份如流中的数据&#xff0c;您可以尝试从备份中恢复。如流支持备份至云端&#xff0c;如百度网盘等。 联系客…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...