广州做鞋的网站/网站运营策划书范文
1.dot net core跟dot net比较有哪些更好的地方?
第一是跨平台,它可以运行在三大操作系统上面,windows, Linux和MAC。
第二是对架构本身安装没有依赖,因为所有的依赖都跟程序本身在一起。
第三是dot net core处理请求的效率更高,能够处理更多的请求。
第四是dot net core有更多的安装配置方法。
2.什么是依赖注入?什么是控制反转?什么是发射,发射的应用场景?
依赖注入(DI)是控制反转(IOC)的一种实现方式,用于减少组件之间的耦合度,通过将依赖的创建和管理权交给外部容器,实现了控制反转。
反射是.NET框架提供的一种机制,允许运行时查询类型的信息,并创建对象实例、调用方法等。这
在某些情况下非常有用,比如在没有编译时类型信息的情况下动态地处理代码。反射可以用于实现诸如依赖注入这样的功能,因为它可以用来创建对象实例而不必直接指定其构造函数。
发射的应用场景:
1.动态创建对象:当不知道要创建的具体类型时,可以使用反射来根据字符串类型的名称创建对象。
2.动态调用方法:反射可以用来在运行时确定并调用方法,这对于插件化编程模型很有用。
3.框架和库开发:许多框架(如ORM框架、MVC框架等)内部都会使用反射来实现其功能。
4.单元测试:反射可以用来访问私有成员,这对于某些单元测试场景可能是必要的。
3.描述一下依赖注入后的服务生命周期?
1. 瞬时(Transient)
每次请求该服务时,都会创建一个新的实例。这意味着每次依赖注入框架请求一个瞬时服务时,都会返回一个新的对象实例。这种方式非常适合那些轻量级、无状态的服务。
2. 作用域(Scoped)
作用域生命周期的服务在每个请求周期内只创建一次。在Web应用中,一个作用域通常对应于一个HTTP请求。在整个请求期间,无论何时请求同一个作用域内的服务,都会返回相同的实例。这种方式适合那些在整个请求过程中需要保持一定状态的服务。
3. 单例(Singleton)
单例生命周期的服务在整个应用程序运行期间只创建一次。无论何时请求同一个单例服务,都会返回最开始创建的那个实例。这种方式适合那些初始化开销较大或者在整个应用中只需要一个共享实例的服务。
4.简要说明一下EF的三种开发模式,您一般会采用哪种模式?说明理由。
常用的三种模式包括Code First、Database First和Model First。
个人选择取决于项目的具体需求和环境。如果是在一个新项目中,尤其是在敏捷开发环境中,我倾向于使用Code First模式,因为它的灵活性更高,能够更好地适应快速迭代的需求,
并且与测试驱动开发结合得更好。此外,Code First模式也更容易与其他现代开发实践(如持续集成/持续部署CI/CD)相结合。
然而,如果项目需要与现有的复杂数据库集成,或者团队对现有的数据库设计已经非常熟悉,那么使用Database First模式可能是更合适的选择
。在这种情况下,选择Database First可以节省前期的设计工作,并确保与现有系统的兼容性。
5.为什么Nginx 性能这么高? 简单说明下
多进程架构和抢占机制:通过操作系统的抢占式调度和独立的工作进程,减少锁争用和上下文切换,保证高并发处理和高可用性。
事件驱动的异步非阻塞通信模式:通过非阻塞I/O和高效的事件通知机制,实现了高并发连接的高效处理和低延迟响应。
这种设计使Nginx在处理大量并发连接时表现优异,是其在Web服务器和反向代理领域广受欢迎的主要原因。
6.Nginx怎么处理请求的?
Nginx 的请求处理流程可以概括如下:
1.客户端发送请求到 Nginx 服务器。
2.Nginx 接收到请求并根据配置的监听端口进行处理。
3.根据请求的域名匹配相应的服务器块。
4.如果配置了负载均衡和反向代理,Nginx 将根据算法将请求转发到相应的上游服务器。
5.如果请求匹配了静态文件路径,Nginx 直接返回静态文件。
6.如果请求不匹配静态文件路径,Nginx 将请求转发给后端应用程序服务器进行处理。
7.后端应用程序服务器处理请求并生成响应。
8.Nginx 将后端服务器返回的响应返回给客户端。
7.MySQL事务的四大特性,MySQL如何优化?
MySQL 事务的四大特性通常指的是ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性。
1.优化查询语句:避免使用SELECT *,只选择需要的字段;使用索引来加快查询速度;避免使用慢查询。
2.优化表结构:使用适当的数据类型,避免使用过大的数据类型;合理使用索引,但不过度索引;避免使用太多的关联查询。
3.设置适当的缓存:启用查询缓存,可以缓存查询结果,提高查询性能;设置适当的缓冲区大小,如查询缓冲区、排序缓冲区和连接缓冲区。
4.定期维护数据:删除不需要的数据,优化表碎片;定期进行数据备份和优化。
5.调整MySQL配置:适当增加缓冲区大小,如innodb_buffer_pool_size;调整并发连接数,如max_connections;合理分配CPU和内存资源。
6.使用MySQL性能分析工具:如Explain命令分析查询的执行计划,找出慢查询;使用MySQL的性能监控工具如Performance Schema来监控数据库性能。
7.使用主从复制:将读写操作分离,从库用于读操作,主库用于写操作,提高数据库的读写性能。
8.使用分区表:将大表分成多个小表,提高查询速度和管理效率。
9.使用连接池:使用连接池来管理数据库连接,减少创建和关闭连接的开销。
8.MySQL在某些情况下不使用索引?
1.数据量太小:当表中的数据量非常少时,全表扫描可能比使用索引查找更快,因为索引的额外维护和查找成本可能超过直接扫描表的成本。
2.索引选择性低:如果索引列的值重复度很高(比如性别列,只有“男”和“女”两个值),索引的选择性就很低,这意味着使用索引可能并不会明显减少需要检查的行数,这时MySQL查询优化器可能会决定放弃使用索引而选择全表扫描。
3.类型转换:在查询条件中,如果索引列与比较值之间存在类型不匹配,需要进行类型转换,这可能导致索引失效。特别是当字符串类型的索引列被数字类型值比较时,索引通常无法使用。
4.函数或表达式使用:在WHERE子句中,如果对索引列使用了函数或复杂的表达式,索引可能无法被有效利用,因为索引是基于列的原始值建立的。
5.全表扫描更优:在一些情况下,MySQL的查询优化器会判断全表扫描比使用索引更高效,比如当查询预计返回的行数超过表中数据行的大约25%时。
6.OR条件:当查询条件中使用了OR操作符,即使其中部分条件有索引,MySQL也可能因为OR逻辑的复杂性而放弃使用索引。
7.最左前缀原则:对于复合索引(多列索引),如果查询条件没有从索引的第一列开始,那么后续的列索引将无法被利用。
8.LIKE操作符:当LIKE操作符以通配符(%)开头时,索引无法被有效利用,因为这要求对索引进行全扫描。
9.索引维护成本:在高并发写入的场景下,频繁的索引更新可能会导致性能瓶颈,MySQL可能会选择牺牲查询性能以减少索引维护开销。
9.数据库建立索引的优缺点?
优点
1.提高查询速度:索引可以加快检索数据的速度,尤其是在大型数据库中。通过索引,数据库管理系统可以迅速定位到所需的数据行,而不需要全表扫描。
2.加速排序和分组操作:对于涉及排序(ORDER BY)和分组(GROUP BY)的查询,如果相应的列上有索引,那么数据库可以更快地完成这些操作。
3.支持唯一性和完整性:索引可以用来强制实施唯一性约束,例如唯一索引可以防止插入重复记录,确保数据的完整性和一致性。
4.减少I/O操作:通过使用索引,数据库可以减少磁盘I/O操作的数量,因为在索引树中查找数据通常比在实际数据页中查找要快得多。
缺点
1.增加存储空间:索引本身需要存储空间,尤其是在大型数据库中,索引可能会占用相当大的磁盘空间。
2.降低写操作性能:创建、更新和删除索引会影响写操作的性能。当插入、更新或删除数据行时,相关的索引也需要进行相应的更新,这增加了操作的时间。
3.索引维护成本:每当数据发生变化时(如INSERT、UPDATE、DELETE),索引也需要被更新,这增加了维护成本。
4.可能不总是被使用:在某些情况下,数据库优化器可能会选择不使用索引,尤其是当索引选择性不高或统计信息过时时。这可能会导致索引并未发挥预期的作用。
10.Redis的基本数据结构类型有哪些?
String(字符串)
字符串是最简单的数据类型,可以存储二进制安全字符串或整数,常用于简单的键值对存储。
示例命令:SET key “Hello”
Hash(哈希)
哈希允许你将一个键关联多个字段-值对,非常适合存储对象。
示例命令:HSET user:1 name “John” age 30
List(列表)
列表是链表类型的结构,可以用来存储一系列元素,非常适合用作队列。
示例命令:LPUSH list:1 “item1” “item2”
Set(集合)
集合存储唯一的元素集合,可以用来做去重操作。
示例命令:SADD set:1 “item1” “item2”
Sorted Set(有序集合)
有序集合和集合类似,但是每个元素都有一个分数(score)与之关联,这使得有序集合可以按分数进行排序。
示例命令:ZADD sortedset:1 1 “item1” 2 “item2”
除了这些基本的数据类型之外,Redis 还支持一些高级数据类型和特性,如:
BitMap(位图)
位图是一种特殊的字符串数据类型,用于存储位数组,非常适合用于如统计日志、用户活跃度等场景。
示例命令:SETBIT bitmap:1 0 1
HyperLogLog
HyperLogLog 是一种用于估算大量数据中不同元素的数量的数据结构,非常适合用于统计不重复的元素数量。
示例命令:PFADD hllkey element1 element2
Stream(流)
流是Redis 5.0引入的新数据类型,类似于列表,但主要用于构建消息队列和实时分析系统。
示例命令:XADD streamkey * field value
11.Redis的常用应用场景有哪些?请具体描述2个实际业务案例。
Redis的常见应用场景包括会话缓存、全页缓存、队列系统、排行榜、发布/订阅、计数器等。
会话缓存
在Web应用中,可以将用户的会话数据存储在Redis中,而不是将数据存储在服务器的内存中。
全页缓存
可以将页面的HTML或其他内容保存到Redis中,以便快速检索和显示。
队列系统
Redis提供了列表和发布/订阅等数据类型,可以作为消息队列使用。
排行榜
可以使用Redis的有序集合(sorted set)来存储排行榜数据,用户可以轻松地查询最高的用户或项目。
计数器
Redis的INCR命令可以创建计数器,用于记录页面访问量、事件发生次数等。
分布式锁
Redis可以使用SETNX命令来实现分布式锁,确保同一时间只有一个客户端可以执行特定操作。
其他应用
除了上述应用场景,Redis还有很多其他的应用,例如:缓存数据库查询结果、作为缓存服务器使用、实现PV/UV统计等。
12.什么是跨域,为什么会出现跨域问题?怎么解决?
答:因为同源策略;跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据)等
第一种,服务器执行请求过来以后,允许你跨域;其实服务器设置响应头:response.setHeader(“Access-Control-Allow-Origin”, “*”)
第二种,jsonp,jsonp的方式,注意这种方式只能发送get请求,就算指定为post,最后发送的还是get,且跟上面方式一样,也需要服务器的配合支持。jsonp发送的并不是ajax请求;利用动态创建一个script标签,因为script标签是没有同源策略限制的,是可以跨域的; 把这个script标签的src指向我们请求的服务端地址,这个地址会携带一个参数:callback ,一个回调函数,服务端会把数据通过这个回调函数返回给客户端,但是客户端没有这个函数怎么接收呢?所以在发送请求之前,要在全局(window)注册这样一个方法,利用这个方法,来获得数据; 这个回调函数名需要跟服务端约定好,是一致的。
13.如果页面中图片太多,从性能上来说,如何提高性能?
答:
1.方案一:将图片服务和应用服务分离(从架构师的角度思考)
-
图片懒加载:像淘宝或者京东这样的APP页面上有很多图片,当我们滑到下一屏时下一屏的图片才会加载,这就采用了图片懒加载的方式.
-
css Sprites:当网站或者APP有大量小icon,如果上传到图片服务器比如CDN, 要加载所有这些小icon将增加大量请求,而CDN是按流量收费的,这无疑将增加很多成本.
CSS Sprites 技术早已不新鲜,就是将这些小icon合并成一张图片,只需要加载一次,每次通过background-position来控制显示icon,这样就可以节约大量请求,节约成本.
14.什么是死锁?如何保证你实现的锁结果不发生死锁?
死锁是指在多任务环境中,由于资源分配不当或进程运行顺序不合理,导致一组进程都在等待其他进程释放资源而无法继续执行的一种状态。
死锁的发生通常满足四个必要条件:互斥条件、请求和保持条件、不剥夺条件、环路等待条件。这些条件共同作用,使得进程之间形成了一种僵持局面,导致系统无法继续向前推进。
为了保证实现的锁结果不发生死锁,可以采取以下策略:
预防死锁:通过破坏死锁产生的四个条件,将死锁的发生概率降低。这包括确保资源有足够的供应、采用资源分配图和安全状态理论来避免进入不安全状态、实施银行家算法来预分配资源、以及设计操作系统以避免死锁的发生1。
避免死锁:通过安全序列算法分析资源分配状态,确保系统处于可安全执行状态,从而避免死锁的发生2。
检测死锁:通过资源分配图等方法判断系统是否处于死锁状态,如处于死锁状态则进行相应的处理,如进程终止、资源抢占等2。
解除死锁:当系统检测到死锁发生时,采取一定的策略对死锁进行解除,如资源重新分配或进程终止等2。
15.Vue的生命周期,各个生命周期的作用?
创建阶段
beforeCreate: 在实例被创建之后立即调用,此时还未初始化数据(data),也无法访问到 this 属性。
created: 实例创建完成后被调用,此时数据已经被初始化,可以访问 this 属性,但 $el 还未被渲染。
挂载阶段
beforeMount: 实例将要被挂载到 DOM 上时调用,此时 Vue 实例已经完成了数据观测、属性计算、watcher 设置等,但还没有渲染到 DOM 上。
mounted: 实例被挂载到 DOM 上后调用,此时可以访问到真实的 DOM 节点。
更新阶段
beforeUpdate: 数据更新时调用,此时可以访问到新的数据,但 $el 尚未更新。
updated: 数据更新并且 $el 也重新渲染后调用。
销毁阶段
beforeDestroy: 实例销毁之前调用,此时仍然可以访问到所有的实例属性。
destroyed: 实例销毁之后调用,此时 Vue 实例已经完全被销毁,不能再访问到任何实例属性。
16.v-show 与 v-if 的区别
渲染方式的不同
v-show: 当表达式结果为 false 时,元素仍然保留在 DOM 中,只是通过 CSS 的 display: none; 属性隐藏。
v-if: 当表达式结果为 false 时,DOM 元素将被移除,即条件渲染。
性能的影响
v-show: 切换速度快,因为元素始终存在于 DOM 中,只是显示状态改变。
v-if: 初次渲染较慢,但切换速度更快,尤其是在频繁切换时,因为每次切换都需要重新渲染 DOM。
适用场景
v-show: 适合频繁切换显示状态的情况。
v-if: 适合条件不经常改变的情况,特别是用于条件渲染较大的模板结构时。
17.Class 与 Style 的动态绑定
在 Vue 中,可以使用 v-bind:class 和 v-bind:style(通常简写为 :class 和 :style)来动态绑定类名和样式。
18.父子组件传值
在 Vue 中,父组件向子组件传值主要通过 props 属性来实现,而子组件向父组件传值则通过自定义事件**($emit)**来实现。
相关文章:

长沙某公司.Net高级开发面试题
1.dot net core跟dot net比较有哪些更好的地方? 第一是跨平台,它可以运行在三大操作系统上面,windows, Linux和MAC。 第二是对架构本身安装没有依赖,因为所有的依赖都跟程序本身在一起。 第三是dot net core处理请求…...

物联网系统中声音拾取音频方案_咪头
01 物联网系统中为什么要使用咪头 物联网系统中使用咪头(麦克风或传声器)的原因主要可以归结为以下几个方面: 声音信号的拾取与转换 基本功能:咪头是一种将声音转换为电信号的装置。在物联网系统中,咪头负责捕捉周围…...

【题解】Codeforces Round 975 (Div. 2) A~E
A. Max Plus Size 分别假设答案为取第偶数位的最大值和取第奇数位的最大值两种情况, 取更优解. 取偶数位的最大值时, 把所有其他都偶数位都取上. 奇数同理. code: int solve(int _) {int n;cin >> n;vector<int>a(n 1);int Maxj 0, Maxo 0;for (int i 1; i …...

如何搞定视频裁剪?新手小白零基础剪辑,分享5个实用工具!
现在是一个短视频盛行的时代,几乎每个人都掌握了视频剪辑技能。 不管是因为工作也好,生活也罢,只要有视频,那么就一定会用到视频剪辑软件。视频裁剪已经难不倒普通人了,借助专业的视频裁剪工具,任何人都可…...

HttpClientHandler 详解及使用
在现代网络编程中,HttpClientHandler 是一个至关重要的组件,它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler? HttpClientHandle…...

基于两分支卷积和 Transformer 的轻量级多尺度特征融合超分辨率网络 !
当前的单图像超分辨率(SISR)算法有两种主要的深度学习模型,一种是基于卷积神经网络(CNN)的模型,另一种是基于Transformer的模型。前者利用不同卷积核大小的卷积层堆叠来设计模型,使得模型能够更…...

Font Awesome 手势图标
Font Awesome 手势图标 Font Awesome 是一个广泛使用的图标库,它为网页设计师和开发者提供了一系列高质量的图标。这些图标涵盖了从基本的网页元素到复杂的符号和手势,可以轻松地集成到各种网页和应用中。在本文中,我们将重点介绍 Font Awesome 中的手势图标,探讨它们的应…...

基于Hive和Hadoop的哔哩哔哩网站分析系统
本项目是一个基于大数据技术的哔哩哔哩平台分析系统,旨在为用户提供全面的哔哩哔哩视频数据和深入的用户行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出…...

Augular 学习步骤建议
Angular 是一个由 Google 维护的开源 Web 应用框架,用于开发单页面客户端应用程序。以下是学习 Angular 的建议步骤: 1. 了解基础: 熟悉 HTML、CSS 和 JavaScript 的基础知识。 了解 TypeScript,因为 Angular 应用程序主要使用…...

突破自闭症治疗进展报道:改变孩子和家庭的未来
在这个充满挑战与希望的时代,自闭症这一复杂的神经发育障碍,长久以来一直是无数家庭心中的痛。然而,在星贝育园这片充满爱与科学的土地上,一场关于自闭症治疗的深刻变革正在悄然发生,它不仅为孩子们点亮了未来的希望之…...

我想注册一批账号做矩阵,需要每次注册都切换一个ip吗
在注册一批账号以建立矩阵时,切换IP地址是一个重要的考虑因素,尤其是为了避免被平台识别为同一用户或多重账户,从而减少账号被封的风险。以下是一些建议,帮助你有效管理IP地址和账号注册过程: 1. 切换IP地址的必要性 …...

linux系统的常用命令
微服务Linux解析部署使用全流程 Linux安装vim超详细教程 Linux安装JDK及配置环境变量超详细教程 Linux安装tomcat及配置环境变量超详细教程 目录 1、ls:列出目录内容。 2、cd:改变当前目录。 3、pwd:打印当前工作目录的路径 4、mkdir…...

无锡卓瓷X哲讯智能科技,SAP项目正式启动!
在数字化浪潮的推动下,高精密陶瓷行业的领军企业—无锡卓瓷科技有限公司,携手哲讯智能科技有限公司近期启动SAP&BI项目,以打造行业领先的数字化管理平台。这一战略举措标志着无锡卓瓷在数字化转型的道路上迈出了坚实的一步。 无锡卓瓷—…...

Python从入门到精通-基础篇
1.Python的起源 1989年,为了打发圣诞节假期,Gudio van Rossum(吉多范罗苏姆(龟叔))决心开发一个新的解释程序(Python雏形) 1991年,第一个Python解释器诞生 Python这个…...

系统架构设计师-知识产权与标准化
目录 一、保护范围与对象 二、保护期限 三、知识产权人确定 四、侵权判断 五、标准化 一、保护范围与对象 知识产权是权利人依法就下列课题享有的专有权利: (一)作品(著作) (二)发明、实用…...

Python安装流程(Windows + MAC)
目录 Windows 版 1.下载Python 2.开始安装 3.配置环境变量 4.测试python是否成功安装 MAC版 1.下载Python 2.开始安装 Windows 版 1.下载Python 进入Python官网下载:(Python更新频繁,下载最新版即可,安装流程一致&#x…...

在 Qt 项目中使用 spdlog 的全攻略
目录 1. 准备工作:安装 spdlog 方法一:使用 CMake 的 FetchContent(推荐) 方法二:手动下载并添加到项目中 2. 在 Qt 项目中集成 spdlog a. 初始化 spdlog b. 在 Qt 的各个部分使用 spdlog 3. 基本使用示例 4. …...

vue的el-button防止重复点击
这样效果仅生效在按钮上...

消息中间件 Kafka 快速入门与实战
1、概述 最近感觉上班实在是太无聊,打算给大家分享一下Kafka的使用,本篇文章首先给大家分享三种方式搭建Kafka环境,接着给大家介绍kafka核心的基础概念以及Java API的使用,最后分享一个SpringBoot的集成案例,希望对大…...

【Unity服务】如何使用Unity Version Control
Unity上的线上服务有很多,我们接触到的第一个一般就是Version Control,用于对项目资源的版本管理。 本文介绍如何为项目添加Version Control,并如何使用,以及如何将项目与Version Control断开链接。 其实如果仅仅是对项目资源进…...

C++ --- 静态多态和动态多态
静态多态和动态多态 静态多态动态多态总结 静态多态和动态多态是面向对象编程中多态性的两种主要形式,它们在实现方式、绑定时机以及应用场景上存在一些显著的区别。 静态多态 静态多态,也被称为编译时多态,是指在编译阶段就已经确定了对象调…...

华为vxlan
VXLAN是什么?VXLAN与VLAN之间有何不同? - 华为...

队列及笔试题
队列 先进先出 使用单链表进行队尾插入 队头删除 其中带头结点直接尾插,不带头结点第一次操作要判断一下 但是带头结点需要malloc和free 函数传需要修改的参数方法 1、二级指针 2、带哨兵位的头结点 3、返回值 4、如果有多个值,用结构体封装起来…...

JAVA TCP协议初体验
文章目录 一、需求概述二、设计选择三、代码结构四、代码放送五、本地调试1. 服务端日志2. 客户端日志3. 断线重连日志 六、服务器部署运行1. 源码下载2. 打包镜像3. 运行容器 一、需求概述 最近开发某数据采集系统,系统整体的数据流程图如下: #mermaid…...

sqlserver迁移数据库文件存储位置
业务背景:由于C盘爆满,需要将数据库文件迁移到别处比如D盘 下面以某一个数据库转移为示例:(可以用SSMS工具,新建查询配合使用) 1.查询数据库文件存储路径 sql语句: -- 查询路径 USE QiangTes…...

配置项取值给静态类用
在 Java 中,如果要从 application.yml 文件中取值并供静态类使用,可以考虑以下几种方法: 一、使用 Spring 的 Environment 类 1. 首先确保你的项目是一个 Spring 项目,并且配置文件被正确加载。 2. 在需要获取配置值的类中注入…...

【vs code(cursor) ssh连不上服务器】但是 Terminal 可以连上,问题解决 ✅
问题描述 通过 vs code 的 ssh 原本方式无法连接,但是通过 Terminal 使用相同的 bash 却可以连接上服务器。 ssh -p 4xx username14.xxx.3 问题解决方法 在 vs code 的 config 里,将该服务器(14.xxx.3)的相关配置全部清空或注释…...

Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring
基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置,使得数据只能单向遍历。 示意图如下: 双向链表中的每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后…...

多层时间轮原理以及使用
文章目录 背景常用定时器实现 任务队列时间轮介绍基本结构指针移动定时任务插入循环任务插入代码示例 多层时间轮使用流程 代码 背景 在软件开发中,定时器是一个极为常用的组件,它发挥着至关重要的作用。通过定时器,开发者能够精确地控制程序…...

鸿蒙HarmonyOS开发生态
1、官网 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态 2、开发工具IDE下载及使用 https://developer.huawei.com/consumer/cn/ 3、使用帮助文档 4、发布到华为应用商店 文档中心...