登录社区云,与社区用户共同成长
邀请您加入社区
摘要 本文介绍了双指针算法的两种常见形式:对撞指针和快慢指针,并详细讲解了它们在数组操作中的应用。对撞指针通过从两端向中间移动解决顺序结构问题,而快慢指针则通过不同速度的移动处理环形结构问题。文章以LeetCode题目为例,展示了双指针算法的实际应用: 移动零问题;复写零问题;快乐数问题;盛水最多的容器;有效三角形的个数问题;查找总价格为目标值的两个商品问题;三树之和问题;四数之和问题.通过解决这
摘要:本文介绍了Yupureki的个人专栏项目——高并发内存池的优化方案。针对PageCache锁竞争严重的性能问题,采用Google TCMalloc中的基数树(Radix Tree)数据结构进行优化,通过读写分离机制避免了线程竞争。文章详细展示了基数树的三种模板实现(单层、双层、三层数组),并提供了性能测试代码对比优化前后的malloc/free效率。项目完整代码已开源在GitHub,适用于3
当人工智能从实验室走向千行百业,深度学习已然成为驱动技术革新的核心引擎✨。从精准的人脸识别到流畅的机器翻译,从智能内容生成到电力系统精准预测,深度学习以强大的特征提取与数据建模能力,打破传统技术瓶颈,重塑着我们对科技的认知。本文将结合深度研讨成果,全面拆解深度学习的核心应用、技术原理与产业实践,带你一览技术前沿的无限可能。计算机视觉(Computer Vision,CV)是深度学习最成熟、应用最广
本文介绍了高并发内存池的内存回收机制,分为ThreadCache、CentralCache和PageCache三个层级。ThreadCache将多余内存块归还给CentralCache,CentralCache通过PageCache的哈希表查找对应Span进行回收。当Span所有内存块都回收后,CentralCache将其归还给PageCache。PageCache会对回收的Span进行前后合并以
想要学会ARP协议及ICMP协议和内网穿透?看这一篇文章就够了,万字硬核详解!
想要学会网络层?看这篇文章就够了!万字硬核解析网络层核心
本文介绍了C++ STL中的仿函数概念。仿函数是通过重载operator()实现的类对象,能够像函数一样被调用。文章阐述了仿函数的本质、基本用法及其在STL算法中的应用,展示了如何通过仿函数实现排序、遍历等操作。重点讲解了仿函数的优势:1)可以保存状态;2)支持泛型编程;3)与STL算法完美结合。文中还列举了STL内置的常用仿函数类型,如算术运算、比较和逻辑运算等,并通过具体代码示例说明了仿函数在
FastAPI是Python生态中新兴的高性能Web框架,专为构建API设计。它基于Starlette和Pydantic,结合Python类型提示系统,提供卓越的开发体验和运行时性能。测试显示其异步处理能力使性能比Flask等传统框架提升10倍以上。FastAPI支持自动数据验证、交互式API文档生成,已被Uber、Netflix等企业采用。典型案例显示迁移后订单处理能力从200/秒提升至2200
Linux系统权限管理摘要 Linux系统权限管理分为用户权限和文件权限两部分。用户权限区分超级用户(root)和普通用户,通过su/su-命令切换,root拥有全部权限。文件权限涉及三类访问者:所有者(u)、所属组(g)和其他用户(o),通过字符(rwx)或八进制(755)表示权限。常用命令包括: chmod修改权限:字符方式(u+w)或数字方式(755) chown修改所有者 chgrp修改所
2025年度报告以及我的思考
本文介绍栈的的概念和实现。
这周在对终端网络聊天室项目进行实现异步消息队列功能的时候,要利用到redis来实现消息持久化。针对实现消息对列功能redis提供的类型有列表List,发布订阅PubSub以及stream流, 其中List结构也可以作为一个消息队列来实现数据持久化,但是存在消息丢失,只支持单消费者模式等缺陷;而PubSub虽然采用发布订阅模式,支持多生产多消费模型,却不支持数据持久化,同时也无法避免消息丢失和队列溢
想要学会Linux的信号?看这一篇文章就够了!万字详解
客流统计算法trajectory_event_analyzerV4.py通过多级结构实现精准客流分析。系统采用分层统计(个体、区域、全局),结合多目标追踪和行人重识别技术,通过状态一致性检查确保数据准确。核心模块包括主控制器、个体状态机、区域状态和事件记录,分别管理轨迹跟踪、状态更新和客流统计。算法通过连续N帧区域判定更新confirmed_region,统计进出店人数,并计算重进店和过店人数。数
当Knewton平台用十亿级学习数据为全球150国学生定制知识图谱,当MATHia系统通过6000个数学概念节点精准捕捉认知偏差,一场静默的教育革命已突破实验室围墙。2025年的课堂正在经历三重颠覆:维果茨基理论被强化学习算法具象化为动态教学曲线,教师从知识传授者转型为AI系统指挥官,而学生的成长轨迹正被多模态情感计算重新定义。
Paimon内存管理核心组件解析 本文详细介绍了Paimon项目中的三个核心内存管理组件: MemorySegment:统一内存管理核心类,封装堆内/堆外内存操作,通过Unsafe API提供高性能访问,支持字节序控制和批量操作。MemorySize:内存大小表示工具类,提供类型安全的内存配置处理,支持字符串解析、单位转换和算术运算,确保内存计算的准确性。Buffer:轻量级内存容器,包装Memo
现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。首先,把10和28交换,交换之后,把堆顶元素10删除,把在0位置的28这个元素,向下调整成堆,具体就是找孩子中两个较小的一个跟父亲比较,进行交换,父亲走到头,循环结束,这是孩子已经越界,用孩子来写循环条件。*孩子节点或子节点
本文从快速排序的递归设计开始,带领大家一起体验快速排序的递归思路的设计过程、用递归实现排序的原理实质,接着详细介绍了快速排序中三个基准排序的原理与实现,最后从分析了快速排序的时间复杂度与空间复杂度,讲解了对其用三数取中取基准、底层换用插入排序来实现优化的原理与利与弊
在这篇博客中,我们将深入探讨链表环结构的检测方法:>Floyd算法的原理:如何通过快慢指针检测环?>环入口的定位:如何找到环的起点?> 通过这篇博客,我会对链表中的环结构进行相关证明解释,总结学习。
友友们快来学习哈希表了!
直接插入排序、希尔排序,直接选择排序、堆排序,冒泡排序、快速排序,归并排序。
“easy come easy go”
数据结构是计算机存储,组织数据的方式,指相互之间存在的一种或者多种特定关系数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以就有各式各样的数据结构,如:线性表,树,图,哈希等。
如有错误,欢迎指出~尽量多new节点。
在上一节的博客中,我们深入理解了类的四大默认成员函数。这些成员函数堪称编译器自动生成的 “基础设施”,它们在幕后默默发挥着关键作用,妥善处理对象的初始化、清理和拷贝等重要操作。具体来说构造函数负责完成对象的初始化工作;析构函数则承担着释放对象所占用资源的重任;拷贝构造函数的存在有效避免了浅拷贝可能带来的陷阱;而赋值运算符重载函数能够巧妙解决自赋值问题。我的个人主页,欢迎来阅读我的其他文章我的C++
分层架构,简单来说,是将软件系统依据功能的不同,划分为多个层次。每一个层次都承载着独特的职责,这些职责紧密围绕系统的整体目标,又彼此独立,共同协作实现系统的完整功能。从逻辑视角看,各层如同搭建的积木,层层堆叠,下层为上层提供支撑服务,上层基于下层的能力进行更高级别的业务逻辑处理。层与层之间有着清晰的边界和规范的交互方式,通常上层依赖下层提供的接口来获取所需功能,而下层并不依赖上层的具体实现,这种单
介绍了数据结构插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序,并对其介绍思想、特性、时间和空间复杂度,同时用c语言实现该算法的
Hello,大家好,当我们走到这里时,就说明我们关于C++的大部分知识就已经学的差不多了,接下来,我们来学习一下C++11这个补充知识,这部分知识相对来说其实也是比较重要的,因此,我在这里建议大家这部分内容需要我着重掌握。
十大排序算法(Java实现版)
向Carl老师学习,用最简单的话,讲述最复杂的知识。( •̀ ω •́ )✧哈希表就是数组的拓展。也就是说,若没有数组,自然也就没有哈希表!
手写一些常见的算法
💬 hello!各位铁子们大家好哇。今日更新了最短路径问题和拓扑排序的相关内容。
在这我们抛开传统的术语,从日常生活的角度重新解读面向对象编程(OOP)1. 角色扮演游戏:把代码变成「游戏角色」类(Class)角色模板比如「战士」「法师」的职业模板,定义了他们默认的血量、攻击方式。对象(Object)具体的游戏角色比如你创建了一个叫「亚瑟」的战士,他的等级、装备都是独特的。封装(Encapsulation)角色的隐私保护角色的背包里有什么装备,其他角色不能直接翻看,必须通过「交
2025-1-15-十大经典排序算法 C++与python
Hello,大家好,这一篇博客我们来讲解一下数据结构中的AVL树这一部分的内容,AVL树属于是数据结构的一部分,顾名思义,AVL树是一棵特殊的搜索二叉树,我们接下来要讲的这篇博客是建立在了解搜索二叉树这个知识点的基础之上的,因此,我在这里建议大家可以先去看看我之前写过的那片有关搜索二叉树内容的博客,为了方便大家寻找,链接就放到下面了:搜索二叉树,效率的进一步upgrate!-CSDN博客Hello
LinkedList是Java集合框架中的链表,LinkedList是基于双向链表实现的,由于链表中没有将元素存储在连续的空间内,元素存储在单独的节点中,然后通过引用将节点连接起来,因此在任意位置插入或者删除元素,不需要搬移元素,效率比较高。LinkedList中的节点结构:说明:1.LinkedList实现了List接口2.LinkedList的底层使用了双向链表3.LinkedList没有实现
今天zty带来的是C++小游戏能量的1.1.2正式版,zty放假了更新也是会增加的,大胆的要赞(做白日梦),我想要100个赞(癞蛤蟆想吃天鹅肉)先赞后看养成习惯众所周知一篇文章需要一个头图,但我家盛产头图先赞后看养成习惯,上面那行字怎么读呢,让大家来跟我一起读一遍吧,先~赞~后~看~养~成~习~惯~演示用编译器及其标准。
双向链表 (Doubly Linked List)、有序链表 (Sorted Linked List)、LRU链表 (Least Recently Used Linked List);LRU链表通常基于双向链表实现,结合哈希表来快速查找缓存中的数据。当缓存达到其容量上限时,最近最少使用的数据会被优先淘汰。LRU链表通常与哈希表结合使用。哈希表用于快速查找元素,而双向链表用于维护元素的使用顺序。每次
主要分享关于LinkedList的相关知识,希望能给你们带来帮助
冒泡排序是一种通过比较和交换相邻元素来实现排序的算法。它的名称来源于算法执行时较大的元素逐步“冒泡”到数组末尾的过程。每一轮排序中,算法会从头到尾比较相邻的元素,并根据它们的大小决定是否交换,直至所有元素按升序排列。冒泡排序虽然不是最优的排序算法,但它是学习编程逻辑和算法思想的一个重要起点。通过冒泡排序,初学者可以掌握排序的基本思路,并为进一步学习更复杂的排序算法(如快速排序、归并排序)打下坚实基
模板方法设计模式是一种行为型设计模式。它包含一个抽象类(在Java和C++中)或者一个抽象基类(在Python中可以通过ABC抽象基类实现类似功能,在Go中通过接口和结构体组合来体现),这个抽象类中定义了一个模板方法,这个模板方法包含了算法的骨架,它按照一定的顺序调用其他的抽象方法或具体方法。抽象方法由子类去实现,从而实现不同的行为。
“脱单”
插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序
元旦快乐
在起始i的时候,执行j循环的时候,确实j+1下标,但是在每次指向完一次j的循环,j的下标就向前移动,而在j移动的过程中i是不变的。
哈希表是计算机科学中一种非常重要的数据结构,它在解决大规模数据存储和查找问题上发挥着关键作用。哈希表是一种用于存储键值对的数据结构,它使用哈希函数将key映射到表中的一个位置来快速访问到记录value。哈希表旨在提供平均情况下的常数时间复杂度O(1)的查找、插入和删除操作。哈希表是通过数组+链表的方式实现的,主结构是数组,数组的每一个节点都是一张单独的链表。哈希表:Redis 使用哈希表作为其主要
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】LinkedList实现了List接口。LinkedList的底层使用了双向链表。LinkedList没有实现RandomAces
完成一个简易的家谱管理系统,主要包含了管理和查询两大功能。首先允许用户进行家谱的创建并能简易的输出整个家谱。其次,还要具有查询某结点祖先和孩子的功能,同时为保证用户可以随时修改家谱,添加了完善孩子、完善兄弟和删除结点的功能。其中删除结点规则定义为:若有孩子,则孩子一并删去;若有兄弟,则保留兄弟。最后考虑到现实中用户中输入错误的情况,还要包括健壮性的检查。