登录社区云,与社区用户共同成长
邀请您加入社区
数控系统一般是。
xipx=ipxipp∤ip\nmid ip∤ip∣ip\mid ip∣i两种情况。p∤ip\nmid ip∤i:加入一个全新的质因子;p∣ip\mid ip∣i:已有质因子的指数增加 1。因此很多积性函数都可以在线性筛中一起递推。
本文提出基于虚拟页表的PagedAttention与连续批处理机制,破解大模型推理中KV Cache导致的显存碎片与算力浪费难题。通过借鉴操作系统分页思想,将连续显存需求解耦为离散物理块,结合写时复制与动态调度,实现60%-80%显存利用率提升,支持高并发、低延迟推理。附纯Python开源实现,符合Apache-2.0协议,严守商业安全红线。
本题将单词链转化为有向图欧拉路径问题:每个单词为一条从首字母到尾字母的边。通过统计各字母出入度差,判断是否存在欧拉路径(至多一个出度比入度大1的起点,一个入度比出度大1的终点)。将单词按字典序排序,优先选择字典序小的边进行DFS搜索,确保找到字典序最小的完整词链。若无解则输出***。时间复杂度为$O(n \log n)$,适用于$n \leq 1000$。
欧拉筛不会重复筛拥有同样两个因子的数,(eg:i=a*b=b*a,(a<b&&a,b<sqrt(n)),埃氏筛先遍历到a时,会让b*a,再把结果i筛掉,遍历到b时,会让a*b,再把结果i筛掉,这样会重复筛掉同一个数,所以引出了欧拉筛)而如果 x被其他质因子q>p 标记,那么对应的 i′=x/q 一定含有质因子 p。对于所有 p′<p,因为 p′ 小于 p,而 i 的所有质因子都 ≥p,所以 p′
本文从数据结构、操作系统、汇编三个层面彻底解析“栈”与“堆”的本质区别:数据结构中的栈(LIFO)和堆(完全二叉树)是逻辑规则,而内存栈区(CPU寄存器管理,快速、无碎片)与堆区(OS分配,慢、有碎片)是物理实现。二者仅在“栈”上因LIFO逻辑同构而易混淆,堆则纯属英文翻译巧合,毫无关联。掌握此区分,告别面试困惑!
昨天的launcher创建了子进程,然后调用waitpid等它结束。等待期间,父进程没有事情可做。如果它一直占着 CPU,反复检查“结束了吗”,其他程序就白白少了一份运行机会。操作系统会让它暂时等待,把 CPU 交给别的任务。等子进程结束,父进程才重新获得运行资格。
LRU(最近最少使用)是一种高效缓存淘汰策略,核心思想是淘汰最久未被访问的元素。通过哈希表与双向链表结合,实现O(1)的查找、插入和删除操作。广泛应用于操作系统页面置换、数据库缓存、CDN及浏览器缓存等场景。相比FIFO和LFU,LRU更注重访问时间而非频率或顺序。软考常考点包括其原理、实现方式及应用场景。
int main 特点:运行完毕后要给操作系统返回一个整数(故以 return 0 结束,以return 非零 结束=程序出错)2、main argv:字符串数组,存命令行传入的参数。今天主要介绍主函数(main)以及小白注意事项。老式写法void main(不推荐)1、main argc:参数个数。2、一条结束语后要有分号。1、代码不能用中文字符。四、以及小白注意事项。四、以及小白注意事项。
这些问题的答案,都藏在 C 程序的内存分区里。本文用最直白的方式,把 C 程序的内存布局讲清楚。每次调用一个函数,系统就会在栈上压入一个「栈帧」,用来存放这个函数的局部变量、参数和返回地址。默认栈大小通常在 1MB 到 8MB 之间(取决于操作系统),所以递归过深或定义过大的局部数组,很容易导致栈溢出。修饰局部变量时,变量的作用域仍然是函数内部,但存储位置从栈区移到了全局区,所以它的值在多次函数调
大家好,我是小凉,大三物理专业学生,正跨考计算机研究生。博客将记录我的计算机学习历程,分享知识框架。我坚持费曼学习法,力求用通俗语言讲清核心概念,巩固自身理解。后续将更新C语言、数据结构、操作系统、计算机网络、机器学习与深度学习等考研及AI相关内容,欢迎一起进步!
循环链表是链表家族的最后一位成员,其特点是**首尾相接形成闭环**。单向循环链表中,尾节点的 `next` 指回头节点;双向循环链表则头尾互相指向。遍历循环链表需用 `do-while` 结构,以"回到起点"作为终止条件,而非 `NULL`。它广泛应用于**约瑟夫问题**、**操作系统进程调度**、轮流游戏等"周而复始"的场景。至此,单链表(一条路走到黑)、双向链表(双向通行)、循环链表(周而复始
计算机从埃尼阿克走向平民化,摩尔定律推动算力飞跃。1991年林纳斯·托瓦兹开源Linux,凭借透明与协作优势,现主宰服务器与安卓。企业青睐其可定制、无后门特性。学习推荐使用云服务器+Xshell,通过Ubuntu或CentOS搭建环境。核心操作包括:root用户掌控全局,adduser创建用户,userdel -r彻底删除,whoami与users查身份。一句话总结:算力普惠催生开源生态,用户管理
前面几节课的顺序表、链表、栈、队列,都是线性结构:每个元素最多一个前驱、一个后继,数据排成一条线。但现实不总是线性的。文件系统的目录、家谱、编译器的语法树、操作系统的进程树——它们都是一对多的关系,一条链装不下。有 C 语言基础的人会立刻撞上第一个疑问:结构体里放一个指向自己的指针,怎么写?答案是 C 完全支持()。真正难的不是语法,而是两件事:树是第一个必须用递归理解的数据结构。这不是风格问题,
我是一个大二上的学生,学 C 快一年了,学得很慢。说实话,到现在才把线性数据结构学完,正准备学树形结构。老实说挺迷茫的——因为和周围软工方向的同学比,我发现自己更适合走底层路线:数据结构与算法学完后,赶紧去了解操作系统及其内核的知识,以后的研究方向和大三大四的项目都准备向系统层面靠拢。我觉得自己不适合去卷应用层的软件工程,所以大一学得很慢,没有去快速地学习各种技术栈。这种路线确实挺折磨的。我习惯抛
现在学生求职,也不太注重算法题了, 不少 面试候选人, 网络,操作系统,Agent、工作流,RAG 如数家珍。面试官也相当满意,本以为想 出一道简单算法题,就让你过了,结果 简单题也没写出来。
前面实现的顺序表、链表,可以在任意位置插入和删除——很灵活,但调用者必须时刻想清楚"数据放到哪、从哪取"。(后进先出)。撤销上一步、函数调用一层层返回、括号匹配、表达式求值,本质都是"最近的最优先处理"。与其每次手写,不如把它抽象成一个容器。这个容器就是。💡 背景补充:操作系统与编译器也大量使用"栈":函数调用栈记录返回地址,递归靠它回溯。那是系统维护的栈,这一课我们实现的是用户态的栈,同名不同
<think>我们被问到:"根据以下内容,生成≤150字的文章摘要"。用户提供了一段关于题目 P11169 的信息,包括题目描述、伪代码、输入输出样例、数据范围、C++实现等。要求生成摘要,不超过150字。我们需要根据这些内容,写一个简洁的摘要。摘要应概括题目的核心:给定一个修改版的线性筛(欧拉筛)伪代码,其中break条件错误导致counter计数不同,求输出cntp和counter。输入n最大
在学习数据结构的的栈之前,我相信很多老铁都在学C语言的时候听过栈。C语言中我们学习的是操作系统中的栈,这里的栈是内存分区。内存中有栈区,堆区,全局(静态)区,常量区,代码区五大区。栈区:存放局部变量,形参,返回值。包括函数调用也会在栈区建立栈帧。堆区:存放动态分配的空间如malloc()和free()函数。全局(静态)区:存放全局变量和静态变量。常量区:存放字符串、数字、const修饰的全局变量等
操作系统内存管理进化,从固定分区到虚拟内存,解释大型游戏如何在有限内存运行。
数据结构是计算机专业非常核心的一门基础课程,同时也是程序竞赛、企业笔试面试、研究生考试当中高频考察的重点内容,它和程序设计基础、离散数学、线性代数等课程紧密关联,是后续学习操作系统、数据库、大数据、人工智能、Web开发等方向的底层基础。就好比做菜,光有食材调料(对应数据)还不够,还需要烹饪的组织方式(对应结构),二者结合才能完成完整的菜品。数据元素并不是孤立零散存在的,元素与元素之间具备特定的逻辑
定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。简单来说,就是“带结构”的数据元素的集合。重要性:数据结构是计算机类专业的核心基础课程之一,是算法分析与设计、操作系统、数据库、人工智能等课程的基础,也是企业笔试、面试和研究生入学考试的重要内容。著名公式程序 = 算法 + 数据结构。
注意: vector 内存连续,删除中间元素后,后面所有元素必须向前移动补齐空位,时间复杂度 O (n);编译不会报错,运行时不会抛出异常,直接访问非法内存 → 未定义行为 (UB),程序可能随机崩溃、乱改内存。注意:vector 内存连续,插入中间位置,后面所有元素向后移位,效率低 O (n)而string会缩容:重新分配更小的内存 + 拷贝数据 + 释放旧的大内存。(操作系统的堆内存管理规则是
第60课:全套AI数学体系总复盘,串联微积分、级数、线性代数SVD、傅里叶分析、泛函分析、变分法完整知识链,梳理各工具在大模型、AIGC的分工与配合逻辑。\dfrac{d}{dx}\left(\dfrac{\partial F}{\partial y’}\right):对上面的结果再做全微分;将泛函代入欧拉-拉格朗日方程,得到最优降噪图像满足的偏微分方程,迭代求解得到干净图像,是传统图像降噪、CV
线程是一个轻量级的进程,用来实现多任务并发。线程是操作系统任务调度的最小单位。线程由某个进程创建。
/对应公式ans*(1-1/i)//逆元的充要条件是am互质,如果m是质数,则可以用ksp求,否则只能用exgcd求。//不要index=0。//线性筛求欧拉函数,即求范围内每个数的欧拉函数值。//欧拉函数,即计算小于n有多少数和n互质。例题:求线性同余方程。
一笔是否能画一张图需要先确定是否为一个联通的图,再数奇数点是否为两个或全为偶数点。(扩展:每两个奇数点需要一笔,总奇数点必为偶数个,能画出总奇数点必为奇数个的图,找我领100RMB),所以暴力方法是不行的,而此时可能有人想到小学学的一笔画问题,但是依然不行,我先带大家回顾一下一笔画问题。给定一个无向图,包含 n 个顶点(编号 1∼n),m 条边,求最少用多少笔可以画出图中所有的边。接下来 m 行,
数据结构基本定义:数据结构,就是一种程序设计优化的方法论,研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,目的是加快程序的执行速度、减少内存占用的空间。数据结构的应用:算机的主要工作就是把数据(Data)经过某种运算处理转换为实用的信息(Information)。具体介绍一些数据结构的应用:1)树形结构树形结构是一种相当重要的非线性数据结构,广泛运用在人类社会的族谱、
国产机器人控制系统落地面临软硬件协同适配挑战。尽管国产处理器算力已能满足需求,但操作系统实时性调优、总线协议适配等底层问题制约整体性能。目前部分项目采用双内核架构,但开发维护成本高。望获实时Linux提出单系统解决方案,通过硬件级隔离实时域,在飞腾平台上实现31.25μs稳定控制周期,同时保留完整Linux生态。该方案提供开放测试镜像,助力降低国产机器人开发门槛。真正国产化需突破硬件替换层面,构建
标准IO是有缓存的IO,用户调用标准IO函数后,数据先进入缓存区,满足刷新条件时才将数据传递给内核。:一种特殊的二进制文件,文件中的每个字符都是能够显示在终端的ASCII码字符。:存放在磁盘空间中的一段数据的集合,是操作系统管理数据的基本单位。:文件中包含一些不能在终端直接显示的ASCII码字符。:打开pathname对应的文件,并与之建立一个流。:有方向性、具有连续性的数据通道。:编写程序统计某
本文详细讲解了操作系统中的读写公平法解决读者-写者问题。通过引入排队信号量w实现先来先服务,既保持读读并发,又避免写者饥饿。文章分析了读者优先算法的问题,阐述了读写公平法的设计思想,给出了完整代码实现,并逐条解释了每个PV操作的作用。重点比较了读写公平法与读者优先、写者优先的区别,强调写者等待时不释放w是实现公平的关键。最后总结了考试答题技巧和常见题型,帮助读者掌握这一经典同步问题的解决方案。核心
内存地址与基地址内存地址操作系统为每个字节分配一个唯一编号(12位16进制数表示),用于定位内存位置。基地址(首地址)单字节数据:如char,地址就是该字节的编号。多字节数据:如int占4个字节、double占8个字节:地址是所有字节编号中最小的那个,称为基地址或首地址。
本文介绍了质数与合数的数学定义及三种常见算法:质数判定、质因数分解和质数筛选。质数判定采用试除法(O(√n)),通过检查√n范围内的因子判断是否为质数。质因数分解基于算术基本定理,使用试除法分解为质因数乘积。质数筛选算法包括暴力法(O(nlogn))、埃式筛(O(nloglogn))和最优的欧拉筛(O(n)),其中欧拉筛通过最小质因数标记确保每个合数只被处理一次。三种算法各有特点,适用于不同场景的
只允许从一端进行插入和删除数据的线性存储结构,成为栈结构。数据的插入称为入栈/压栈, 数据的删除称为出栈/弹栈。递归本质就是操作系统栈,递归深度过大 → 栈溢出。数据插入和删除的这端成为栈顶,另一端成为栈底;入栈数据时,栈顶向内存高地址移动,称为增栈,入栈数据时,栈顶向内存低地址移动,称为减栈。队列:FIFO 先进先出,一端入、一端出。,不要用尾部,否则遍历找到尾部开销大。栈顶所在位置一直存有元素
智能体工程化与评估体系的演进 核心摘要: 2026年智能体技术发展呈现两大关键趋势:工程化体系成熟与评估标准革新。在工程化层面,通过MCP协议、SDK工具链、Skills模块化等构建出"智能体操作系统"雏形,显著提升开发效率;同时可观测性、调试工具等运维能力开始完善。在评估维度上,行业突破传统基准测试局限,转向"自主性""耐力""任务成功率"等真实场景指标,并涌现出编程、多模态等新型智能体基准测试
本文介绍了循环队列和栈两种数据结构。循环队列通过首尾相接的结构解决假溢出问题,使用(tail+1)%len==head判断队满,并提供创建、判空、入队等API。栈结构具有先进后出特点,分为顺序栈和链式栈,顺序栈根据栈顶位置和生长方向分为满栈/空栈、增栈/减栈。栈的API包括创建、入栈、判空等操作,应用于撤销功能、回文判断等场景。系统栈与数据结构中的栈不同,是由操作系统管理的内存空间。
前面学习了单链表、双向链表,链表可以在任意位置插入删除,使用十分灵活。而栈和队列属于操作位置受限的特殊线性表,拥有固定的出入规则,是后端开发、操作系统中高频使用的数据结构。
链表是一种动态数据结构,通过节点和指针实现非连续存储,解决了数组在插入/删除操作上的性能瓶颈。文章系统介绍了链表的三种主要类型:单链表(单向连接)、双链表(双向连接)和循环链表(首尾相连),并通过Java代码展示了基本实现。重点对比了链表与数组的核心差异,包括内存分配、访问时间和操作效率等方面。文章还深入讲解了反转链表等经典算法问题,以及链表在操作系统、数据库等领域的实际应用,为理解这一基础数据结
题目核心知识点易错点A二项式定理、组合数取模运算的顺序B数学公式、费马小定理模逆元的使用C容斥原理、质因数分解区间转换、子集枚举D欧拉筛、区间裁剪包含1、输出格式E快速幂、素性判断费马小定理不可逆用F组合数递推、卷积模运算下的逆元处理以上六题覆盖了算法竞赛中常见的数论与组合数学题型,建议掌握其核心思想以应对类似问题。
通常按从左到右的顺序获得闩锁,但删除或合并操作可能需要以另一个方向访问兄弟节点。如果每次操作都长时间持有根节点闩锁,即使下层访问的是不同分支,也会被串行化。(2)B+树从根节点开始操作,还可能沿父子关系传播分裂或者合并,所以更加困难。注:大多数插入不会引发分裂,但保守协议一路获取写闩锁,会阻塞大量只读操作。1.阻塞式互斥锁:线程无法获得闩锁时进入休眠,等待操作系统唤醒。线程移动时,短暂同时持有相邻
队列(Queue)是一种先进先出(First In First Out,FIFO)的线性数据结构。它只允许在表的一端(队尾)进行插入操作,在另一端(队头)进行删除操作。操作系统的进程调度打印任务队列消息队列系统广度优先搜索(BFS)算法网络数据包缓冲队列作为一种基础的数据结构,在计算机科学中有着广泛的应用。理解队列的原理和实现方式,对于学习算法和系统设计都至关重要。需要固定容量时选择数组实现需要动
A。在计算机内部,所有的数据存储、传送和加工处理都必须转化为二进制码的形式进行。C。计算机软件系统在结构上最经典的分类是划分为系统软件(如操作系统)和应用软件(如各类具体功能软件)。C。早期的5.25英寸(五寸)软盘边缘有一个读写保护孔(写保护口),当该孔被封住(覆盖)时,处于写保护状态,只能读取信息,不能写入或删除盘中文件。B。考察二叉树遍历,过程如下:B。
利用 DFS 序(欧拉序) 将子树映射为连续区间 [tin[u], tout[u]],再用 树状数组(Fenwick Tree) 维护区间异或更新和单点查询。// ---------- 迭代 DFS 计算 tin, tout, depth, parent[0], pref ----------// (节点, 父节点, 状态) 状态0=进入, 1=离开。// 第一层,后续扩展。// --------
使用完栈想要退出函数时,就应该将之前动态开辟的内存释放掉,还给操作系统,即销毁栈。因为top指向的是栈顶元素的下一个位置,因此top的大小正好是栈的长度,所以求栈长直接对ps断言后可以直接返回top.由于栈只能在栈顶出栈,所以不存在尾删头删任意位置的删除等操作,相比于顺序表代码更加简单。在入栈时,需要和顺序表的尾插头插等插入操作一样先判断一下栈内元素是否已满,如果满了则需要给栈扩容。只能在栈顶入栈
AI时代《数据结构》课程教学改革调研与行动方案——"学生不爱听、作业外包给AI"困境的调研报告与落地建议信息工程学院 · 2026年8月一、引言:课堂正在面临的真实困境数据结构是计算机类专业公认"难教又难学"的课程:它上承程序设计语言课,下接操作系统、数据库与算法设计,在培养体系中处于枢纽位置;同时又是"概念抽象"与"实现困难"两大顽疾的重灾区。传统上这门课靠"粉笔+幻灯片+课后作业"推进,学生则
我从校招面试到带实习项目,看了太多"Demo 能跑"的简历和项目。真正让企业买单的,从来不是模型调用得多丝滑,而是你能不能把权限、日志和可观测性做扎实。这篇文章不讲概念,只讲我踩过的坑和总结的判断标准。如果你正在准备就业,希望对你有用。大模型时代,技术迭代很快。但工程化的要求没变。我见过太多同学,花大量时间学新框架、新工具,但基础不牢,项目做得花里胡哨,企业根本不买单。我的建议是:1. 先把基础课
本文探讨了变声软件在跨平台开发中的核心挑战与解决方案,重点分析了三大桌面操作系统在音频架构和虚拟设备实现上的差异: 音频采集与播放的跨平台抽象 通过PortAudio等库封装底层API差异 采用分层设计(硬件音频层/DSP算法层/虚拟设备层)保持代码复用性 虚拟麦克风的多平台实现 Windows:WDM驱动或VAD框架 macOS:CoreAudio HAL插件 Linux:ALSA虚拟PCM或P
swap分区是操作系统内核会将内存中暂时不活跃的数据(如进程的堆、栈等匿名内存数据)移出至 Swap 空间,从而为当前运行的程序腾出内存;当内存调用时发现没到到对应的页(缺页),这时去加载磁盘中的数据到一块空的内存中,然后继续执行,把加载进来的地址通过总线发送给cpu。这就是换入的大体过程。其实操作系统采用的是段页结合的方式来管理内存的。使用换入换出来实现虚拟内存,如果有4G 内存,给用户的感觉就
本文系统讲解了C++程序内存管理的核心概念,主要内容包括: 进程虚拟地址空间布局:详细介绍了.text代码段、.rodata只读数据段、.data数据段、.bss段等内存区域的用途和存放内容,以及栈、堆、mmap区域的基本划分。 栈与函数调用机制: 解释栈存在的根本目的是支持函数调用 通过具体示例说明栈帧的结构和工作原理 展示函数调用时参数传递、返回地址保存等关键过程 动态内存管理: 对比new/
堆序性质操作系统进程调度避免频繁扩容__lt__heapq。