- 博客(173)
- 收藏
- 关注
原创 队列-优先队列【Queue3】
优先队列是一种特殊队列,按照元素优先级而非插入顺序出队。文章通过机场登机比喻说明其原理,并列举了Dijkstra算法、任务调度等典型应用场景。对比无序数组(O(1)插入/O(n)提取)和有序数组(O(n)插入/O(1)提取)两种低效实现方案后,重点介绍了基于二叉堆的优化实现。二叉堆是完全二叉树,通过最大堆/最小堆结构保证父节点与子节点的有序关系,使用数组存储实现O(log n)时间复杂度的插入和提取操作,是优先队列的高效实现方式。
2026-02-18 21:29:46
911
原创 队列-双端队列【Queue2】
本文介绍了双端队列(Deque)的概念及其优势。Deque是一种允许在两端进行插入和删除操作的数据结构,兼具队列和栈的特性。与普通队列和栈相比,Deque具有更高的灵活性,两端操作的时间复杂度均为O(1)。文章还对比了Deque与其他数据结构的性能差异,并详细解析了Deque的底层实现原理——块状双向链表结构,这种结构通过数据块和指针连接保证了高效操作。
2026-02-18 21:20:53
1003
1
原创 队列-概念【Queue1】
队列是一种遵循先进先出(FIFO)原则的线性数据结构。它包含队首(front)和队尾(rear),分别用于删除和添加元素。队列支持入队(队尾添加)、出队(队首删除)等基本操作,时间复杂度均为O(1)。队列可分为有界和无界两种类型,前者有固定容量限制。Java中可通过数组或LinkedList实现队列,其中ArrayQueue需要维护head和tail指针,而LinkedList实现了Queue接口可直接使用。队列广泛用于需要按序处理的场景,如任务调度、消息传递等。
2025-10-28 23:06:15
1010
原创 数组-环形数组【arr2】
环形数组是一种逻辑上将数组首尾相连形成环状结构的数据结构,通过取模运算实现循环访问。其核心思想是使用公式下一个位置 = (当前位置 + 1) % 数组容量,当指针到达数组末尾时自动回到起点。这种结构特别适合实现高效队列,避免了普通数组实现队列时移动元素的开销,使入队和出队操作都能达到O(1)时间复杂度。环形数组由固定容量的数组、指向队首元素的head指针和指向下一个可插入位置的tail指针组成,通过指针移动而非数据移动来管理队列操作,显著提升了性能。
2025-10-28 22:57:20
1050
原创 数组-数组概述【arr1】
本文介绍了数组的基本概念和核心特性。数组是一种线性数据结构,由相同类型元素组成的有序集合,在内存中连续存储。其核心三要素包括:线性结构、相同类型元素和连续存储。文章详细解释了数组的内存布局和地址计算公式,说明为何数组索引从0开始更高效。重点分析了数组的两种主要操作:访问和更新,时间复杂度均为O(1),体现了数组随机访问的高效特性。文中通过Java代码示例和图示,直观展示了数组的存储结构和操作方式,帮助读者理解数组作为基础数据结构的设计原理和性能优势。
2025-10-27 20:28:13
656
原创 链表-跳表【node6】
跳表是一种随机化的高效数据结构,结合了有序链表和二分查找的优点。它通过维护多层链表结构,实现了O(log n)的平均查找、插入和删除时间复杂度。相比平衡树,跳表实现更简单且常数因子更小。跳表的基本结构包含多层有序链表,底层包含所有元素,上层作为快速通道。核心操作包括随机层数生成(类似抛硬币决定节点所在层数)和分层搜索(从高层大步跳跃到底层精确定位)。这种设计使得跳表在保持链表简单性的同时,提供了接近平衡树的查询性能。
2025-10-27 20:25:04
1186
原创 链表-哨兵节点链表【node5】
哨兵节点是链表中不存储数据的特殊节点,主要用于简化边界条件处理。它位于链表头部或尾部,使空链表和非空链表的操作逻辑统一,减少代码分支。在单链表中,头哨兵节点可以简化头插、尾插和删除操作,避免空链表判断。示例代码展示了带哨兵节点的单链表实现,包括插入、删除和遍历方法,通过哨兵节点统一处理逻辑,使代码更简洁高效。
2025-10-25 21:42:25
440
原创 链表-循环双向链表【node4】
本文介绍了循环双向链表的基本结构和操作实现。循环双向链表的每个节点包含数据域、前向和后向指针域,支持正向和反向遍历。正向遍历从头节点开始循环至尾节点,反向遍历则从尾节点开始。插入操作包括空链表插入、尾部插入和头部插入三种情况:空链表插入时节点自闭环;尾部插入通过修改尾节点和头节点的指针实现;头部插入则复用尾部插入逻辑后调整头指针。此外还提供了在指定数据节点后插入新节点的方法。这些操作都充分利用了循环双向链表的双向指针特性,实现了高效的数据访问和修改。
2025-10-25 21:41:22
272
原创 链表-双向链表【node3】
本文介绍了双向链表的基本结构和操作。双向链表的每个节点包含数据域、前驱指针和后继指针,相比单链表占用更多内存,但支持双向遍历和高效插入删除。文章详细讲解了三种插入操作(头部、尾部、指定位置)和删除操作的实现步骤,并提供了Java代码示例。重点分析了双向链表与单链表的区别,强调双向链表在任意位置插入节点的优势。
2025-10-24 09:02:17
1426
原创 链表-单链表【node2】
单链表是一种常见的数据结构,由节点组成,每个节点包含数据和指向下一个节点的引用。本文介绍了单链表的基础结构、插入和删除操作。插入操作分为头部插入、尾部插入和指定位置插入三种方式,分别通过调整节点引用来实现。删除操作则需要遍历链表找到目标节点,并调整前驱节点的引用。代码示例展示了Java实现的关键步骤,包括节点定义、链表初始化以及各类操作方法。这些基本操作是理解和应用更复杂链表算法的基础。
2025-10-24 08:59:28
599
原创 链表-概念【node1】
链表是一种线性数据结构,由节点组成,每个节点包含数据和指针。主要类型包括单向链表(单指针)、双向链表(双指针)和循环链表(尾节点指向头节点)。链表支持遍历、插入、删除、查找和更新等操作,其中单向链表头部操作高效但无法反向遍历,双向链表可双向遍历但内存消耗较大,循环链表便于循环处理数据。跳表通过多层结构实现O(log n)的高效操作。链表适合动态内存分配和频繁插入删除的场景,但随机访问效率较低。典型应用包括栈、队列、LRU缓存和数据库索引等。
2025-10-23 20:35:24
756
原创 算法时间复杂度
文章摘要: 时间复杂度是衡量算法效率的核心指标,描述算法运行时间与输入规模n的关系,关注增长趋势而非具体时间。大O记法表示渐进时间复杂度,忽略常数和低阶项,如O(n²)表示平方复杂度。常见时间复杂度包括:O(1)(常数)、O(logn)(对数)、O(n)(线性)、O(nlogn)(线性对数)、O(n²)(平方)、O(2ⁿ)(指数)和O(n!)(阶乘)。递归算法复杂度可通过主定理或递归树分析,如归并排序为O(nlogn),斐波那契递归为O(2ⁿ)。高效算法追求多项式复杂度,避免指数或阶乘级增长。
2025-10-23 11:42:05
1211
原创 微信小程序快速入门【02】
本文介绍了小程序开发中的下拉刷新、上拉触底功能配置及生命周期函数的使用。主要内容包括:1)全局和页面局部配置下拉刷新和上拉触底,设置阈值防止失效;2)通过colors页面案例演示数据加载和页面渲染;3)小程序和页面的生命周期函数(如onLaunch、onShow、onHide等)及其应用场景;4)本地缓存的使用方法,包括同步和异步操作。文章通过具体代码示例展示了各项功能的实现方式。
2025-10-16 10:13:42
494
原创 微信小程序快速入门【01】
本文介绍了微信小程序开发的基础流程和常用组件。主要内容包括:1)开发工具安装与配置;2)微信小程序账号注册步骤(邮箱绑定、个人信息填写);3)项目创建方法及目录结构解析;4)常用组件使用详解,包括view容器、scroll-view滚动视图、swiper轮播组件和text文本组件的具体应用及样式设置。文章通过图文结合的方式,详细展示了各组件的基础用法和实际效果,为小程序开发者提供了入门指导。
2025-10-16 10:12:54
353
原创 Echarts【图表生成】
ECharts是百度开发的JavaScript开源可视化库,提供丰富图表类型和强大交互功能。本文介绍了如何在Vue3项目中快速集成ECharts:首先通过npm安装echarts库,然后创建柱状图和折线图组件,分别配置图表选项并初始化渲染。示例代码展示了基础图表实现过程,包括数据绑定、样式设置和生命周期管理。最终效果展示了两种常用图表在网页中的实际呈现,为开发者提供了数据可视化的快速入门指南。ECharts支持多种图表类型和交互方式,适合构建响应式数据可视化应用。
2025-10-15 16:52:32
298
原创 ElementUi【饿了么ui】
Element Plus是饿了么推出的Vue 3 UI组件库,提供丰富的前端页面组件,可快速集成使用。安装方式为npm安装,支持全局或按需引入。全局引入需配置Vue实例并导入CSS样式,按需引入则只需导入特定组件。官网提供详细文档和代码示例,开发者可轻松复制组件代码直接使用。
2025-10-15 16:51:14
581
原创 Vue 通信组件传值【10】
本文介绍了Vue组件通信的三种方式:props传值、自定义事件传值和mitt传值。首先说明组件通信分为子父组件、祖孙组件和任意组件传值。然后详细讲解了三种实现方式:1.props通过父组件传递数据和函数给子组件实现双向通信;2.自定义事件通过emit触发父组件监听的事件实现子到父传值;3.mitt库可实现任意组件间的通信,包括订阅和发布事件。文中通过代码案例展示了每种方式的具体实现步骤和测试效果,并对实现原理进行了简要解析。最后特别指出mitt方式使用时需注意在组件销毁前解绑事件。
2025-10-15 16:43:55
602
原创 Vue的Axios介绍【9】
官方文档:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中向服务器发送请求;特性:从浏览器中创建从 node.js 创建http请求支持PromiseAPI拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御XSRF当一个请求的源与被请求资源的源不同时,就产生了跨域请求。例如,一个网页()中的 JavaScript 脚本向发送一个请求,因为协议和域名都不同,所以这是一个跨域请求。
2025-10-15 16:39:49
1147
原创 Vue3的Pinia状态管理库【8】
Pinia 是 Vue.js 的一个状态管理库,用于在 Vue 应用程序中集中管理应用的状态。它被设计为 Vuex 的替代品,提供了一个更简单、更直观的 API,同时保持了类型安全并且在支持 Vue 3 的同时也兼容 Vue 2。Store (如 Pinia) 是一个保存状态和业务逻辑的实体,它并不与你的组件树绑定。换句话说,它承载着全局状态。它有点像一个永远存在的组件,每个组件都可以读取和写入它。
2025-10-15 16:37:27
1159
原创 Vue3中的计算属性和监视属性【5】
在vue3中也有和vue2相同的计算属性,即可以通过已有的属性数据计算出没有的计算属性在vue3中的监视属性可以监视以下几种类型的数据:监视通过ref函数创建的基本类型数据;监视通过ref函数创建的对象类型数据;监视通过reative函数创建的对象类型数据(默认开启深度监视);监视通过ref或reative函数创建的对象类型数据中的某个属性;监视存在上述情况数据的数组(监视多个数据);虽然通过上述方式可以实现,但过程相对比较繁琐;
2025-10-15 16:23:56
745
原创 Vue3中的数据响应【4】
在vue3中,数据默认都是非响应式的(vue2默认为响应式),即修改数据后默认不会同步渲染到页面上;那么要如何将非响应式数据变成响应式呢,实际上在vue3中有两个函数ref和reative,可将默认的非响应式数据变成响应式;在vue3中可以通过ref将基本类型的数据变成响应式;在vue3中我们通过reative或ref将对象类型数据转变成响应式数据;在通过reative改变对象类型数据为响应式时,如果直接改变整个对象,而不是对象的某些属性,此时就会造成响应失效;toRef。
2025-09-05 15:36:48
1023
原创 setup函数相关【3】
setup 是Vue3中一个新的配置项,他是一个函数,是组合式API的舞台,组件中所用到的 数据 方法 计算属性 监视属性等都在setup函数中;setup 函数中返回的对象中的内容,可以在模板中直接使用;setup 函数中的this 是undefined,因此在setup函数中不使用this;setup 函数 会beforeCreate之前调用,领先所有的钩子执行的;
2025-09-05 15:35:01
556
原创 typescript语法介绍【2】
TypeScript(简称:TS)是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可以运行在任何浏览器,任何操作系统上。TypeScript是JavaScript的超集,JS有的内容TS中都有。
2025-09-04 08:56:44
990
原创 Vue3介绍及Vue项目创建【1】
Vue3项目创建与开发指南 Vue3相比Vue2在性能上有显著提升,包括打包时间减少41%、渲染速度提升55%-133%、内存减少54%。项目创建可通过原生Vue CLI或Vite工具实现。使用Vite创建时,需依次完成项目命名、选择Vue框架和TypeScript支持等步骤。开发过程中,组件应在src/components目录下创建,并通过App.vue汇总。项目启动使用npm run dev命令,不能直接打开index.html。Vue3支持TypeScript,采用了Proxy替代Object.def
2025-08-23 09:22:23
668
原创 Vue环境组件node.js安装
我们之前了解过vue是一个单页面框架,但在实际开发中,一个项目不可能只有一个页面,所以除了vue实例绑定的页面之外,其余的项目都要以组件的形式进行注册到主页面中,才可以进行展示渲染;Node.js 是一个强大的 JavaScript 运行时环境,具有高效的性能、丰富的应用场景和活跃的社区。无论是开发 Web 应用、实时应用、命令行工具还是微服务架构,Node.js 都是一个值得考虑的选择。
2025-08-23 09:19:13
720
原创 Vue中的数据渲染【4】
页面样式绑定在 Vue 中是一种将样式与数据动态关联起来的方式,使得页面的样式可以根据数据的变化而自动更新。在vue中通过v-if,v-else-if,v-else等语句进行条件判断当前内容是否执行渲染展示列表渲染主要是通过v-for指令对数组,对象,字符串等数据进行遍历;当数据发生改变时,VUE会根据【新的数据】生成【新的虚拟DOM】,随后与旧的虚拟DOM进行差异比对1.旧的虚拟DOM中找到了与新的虚拟DOM相同的 key如果虚拟DOM中的内容没有改变则使用之前的虚拟DOM。
2025-08-16 09:21:42
855
原创 Git踩坑
想不明白,为啥我提代码会把别人的代码覆盖掉呢?注意注意:仓库提交代码,必须通过测试之后,没问题之后再提交!!!记录: 提交前—>git选自己的分支—>checkout —>merge拉取—>然后有冲突解决冲突,合并代码,注意注意注意!!!要查看自己的提交和别人的代码,不要修改别人的代码 —>commit—>提交到local仓库 —>再次拉取新的远程仓库merge,以防commit之后,还有人提交 —>push—>提交到远程仓库。
2025-07-31 17:15:41
727
原创 Vue中的事件绑定【3】
本文介绍了Vue中鼠标和键盘事件的绑定方法。对于鼠标事件,可通过v-on:事件名或简写@事件名绑定,回调函数需定义在methods对象中,注意不能使用箭头函数以避免this指向问题。键盘事件绑定方式类似,支持使用.enter、.tab等修饰符指定按键。文中通过代码示例演示了如何获取事件对象及传递参数,并强调了$event占位符的作用。最后总结了事件绑定的关键要点,包括语法、回调函数定义位置和注意事项。
2025-05-24 13:13:15
518
原创 Vue语法【2】
Vue数据绑定主要有两种方式:插值表达式(用于文本内容)和指令语法(用于元素属性)。插值表达式使用{{变量名}}语法,而指令语法使用v-bind:属性名="变量名"(可简写为:属性名)。数据绑定分为单向绑定(v-bind)和双向绑定(v-model,仅适用于表单元素)。双向绑定的数据会在视图和模型间同步变化。Vue实例的el属性有两种定义方式:创建实例时直接定义或创建后通过$mount()方法绑定。data属性可以是对象形式或函数返回对象形式。
2025-05-24 13:12:17
905
原创 初识Vue【1】
Vue是一款渐进式前端框架,专注于视图层开发。其特点包括MVVM设计模式、体积小、高效运行,并能与其他库良好整合。使用步骤为:1)创建HTML基础文档;2)通过CDN或本地文件引入Vue环境;3)准备带id的容器div;4)创建Vue实例并绑定容器,定义data数据;5)在容器中使用插值语法{{}}获取数据。Vue实例与容器一一对应,数据变更会自动更新视图。底层通过Object.defineProperty()实现数据响应式,使data属性可直接通过实例访问修改。
2025-05-24 13:11:01
421
原创 Linux Docker下安装tomcat
本文介绍了如何使用Docker拉取并运行Tomcat 8镜像,并创建一个简单的静态网页。首先,通过docker pull tomcat:latest命令拉取最新版Tomcat镜像,接着使用docker run命令启动容器,并将端口映射到9090。随后,关闭防火墙以确保访问畅通。在容器内,通过docker exec进入Tomcat容器,创建并编辑一个HTML文件。由于容器内默认没有安装vim,需先更新软件源并安装vim。最后,通过浏览器访问创建的静态页面,验证部署成功。整个过程展示了Docker容器的基本操作
2025-05-22 22:41:12
612
原创 Linux Docker下挂载本地目录和数据卷容器实现文件共享
本文详细介绍了在Linux系统上安装Docker的完整步骤。首先,通过设置yum网络镜像源为阿里云,确保安装过程中的依赖包能够顺利下载。接着,检查服务器系统版本和内核版本,并安装必要的依赖包。随后,配置阿里云的Docker-ce镜像源,并通过yum命令安装Docker-ce。安装完成后,启动Docker并设置开机自启,同时配置阿里云镜像加速器以提升镜像拉取速度。最后,通过运行hello-world镜像测试Docker是否安装成功。文章还简要介绍了Docker的核心概念(仓库、镜像、容器)以及常用命令,帮助用
2025-05-22 22:40:25
1367
原创 Linux Docker安装【再探完美版教程】
本文详细介绍了在Linux系统上安装Docker的完整步骤。首先,通过设置阿里云的yum镜像源来优化安装环境,确保依赖包的顺利下载。接着,安装必要的依赖包,并配置阿里云的Docker CE镜像源。随后,通过yum命令安装Docker CE,并启动Docker服务,设置开机自启。为了加速镜像的拉取,配置了多个阿里云镜像源。最后,通过运行hello-world镜像来测试Docker的安装是否成功。文章还简要介绍了Docker的核心概念,如仓库、镜像和容器,并列出了一些常用的Docker命令,帮助用户快速上手使用
2025-05-22 22:38:57
1383
原创 Linux 玩转nfs
本文介绍了服务端和客户端的配置,并详细说明了NFS(网络文件系统)服务端的安装与配置过程。服务端为LVMLinux虚拟机,客户端为Centos7虚拟机。在服务端配置中,首先尝试通过yum安装nfs-utils,但由于网络镜像源未配置,导致安装失败。随后,通过备份原有yum源文件、下载阿里云镜像源配置文件,并使用curl命令成功配置镜像源。接着,清理并更新yum缓存后,成功安装了nfs-utils。之后,编辑了NFS的导出目录配置文件,并启动了rpcbind和nfs-server服务。客户端配置部分简要提及了
2025-05-22 22:37:47
1247
原创 Linux 搭建FTP服务器(vsftpd)
或者修改/etc/selinux/config文件,将SELINUX=enconfig改为SELINUX=disabled,然后重启系统。在Linux上查看,发现已经有了scptoserver.txt文件,说明文件复制到服务器成功!默认即可,如果有需要可以修改/etc/ssh/sshd_config文件。scp 本地文件 user@远程服务器IP:/远程目录/在win10使用git的bash窗口上传文件到Linux。scp root@远程服务器ip:/远程文件 本地目录/
2025-05-22 22:36:35
1527
华硕商城Servlet版
2024-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅