• 2024-10-01[rCore学习笔记 028] Rust 中的动态内存分配
    引言想起我们之前在学习C的时候,总是提到malloc,总是提起,使用malloc现场申请的内存是属于堆,而直接定义的变量内存属于栈.还记得当初学习STM32的时候CubeIDE要设置stack和heap的大小.但是我们要记得,这么好用的功能,实际上是操作系统在负重前行.那么为了实现动态内存分配功
  • 2024-09-28Android CCodec Codec2 (十五)C2DmaBufAllocator
    Codec2框架采用了全新的Buffer分配机制C2Allocator,这一篇文章我们一起来瞧瞧C2DmaBufAllocator是如何工作的。1、C2AllocatorC2Allocator声明在C2Buffer.h中,它定义了如下接口:getName:返回Allocator独一无二的名称;getId:返回Allocator独一无二的id;getTraits:返回Allocator
  • 2024-09-27【数据结构】堆(Heap)详解
     在深入了解堆这一重要的数据结构之前,不妨先回顾一下我之前的作品——“二叉树详解”。上篇文章
  • 2024-09-26图解二叉堆(优先队列)TS实现
    结构性:用数组表示的完全二叉树堆序性:任意一个根节点比其所有子树节点大(小)我们以数组作为存储结构,这样直接就可以明白,二叉堆需要的是完全二叉树即除了最后一层其他层都需要填满且最后一层的节点需要满足从左往右。节点关系:对于给定的节点i(假设数组索引从0开始):父节点的
  • 2024-09-26【算法】贪心+堆排序实现大根堆及标准库容器类的融合使用
  • 2024-09-24数据结构:二叉树 (Heap堆篇) 手把手带你入门数据结构~ (简单易懂超详细~)
    文章目录前言一、树的概念1.树的概念与结构2.树的特性3.树的相关术语4.树的表示方法5.树形结构实际场景二、二叉树1.二叉树的概念2.二叉树的结构3.满二叉树3.完全二叉树1.完全二叉树的概念2.完全二叉树的性质3.完全二叉树的结构三、堆1.堆的概念2.堆的
  • 2024-09-23『Solution of Monster&划艇&烟火表演』
    ABC275FMonster其实就是对凸壳的处理办法显然建立\(B\)的笛卡尔树,设\(f[i,j]\)为树\(i\)操作后最大值\(\lej\)的最小代价。显然离开子树后子树都是整体操作的有\[f[i,j]=\min(f[i,j-1],f[lc,x]+f[rc,y]+\max(\max(x,y)-j,0)\timesB_i)\\\]显然可以优化为:\[\begi
  • 2024-09-22在 JavaScript 中使用最小和最大堆管理流数据:数字运动员健康技术视角
    数据管理在健康技术中至关重要。无论是跟踪运动员的表现指标还是监控运动员的恢复时间,有效地组织数据都可以对洞察的获取方式产生重大影响。在这种情况下管理数据的一种强大工具是堆,特别是最小堆和最大堆。在这篇文章中,我们将使用与运动员数据管理相关的实际示例,探索如何在javasc
  • 2024-09-20CSSE4630 Rust-Inspired Analyses
    CSSE4630AssignmentOne:Rust-InspiredAnalyses2024version1.01IntroductionThisassignmentisfocusedonseveralkindsofanalysisinspiredbytheRustprogramminglanguage.Rustisastronglytypedlanguagethatusesasophisticatedtypesystemtop
  • 2024-09-20Kubernetes-POD生成 java dump文件
    目录背景配置钩子函数验证背景在今天的线上业务中,某服务频繁重启。经过排查日志和事件信息,确认是由于OOM(OutofMemory)导致服务重启。为了方便研发团队定位OOM的具体原因,我们决定在OOM发生时自动生成内存快照(heapdump),供后续分析使用。关于OOM的详细介绍,可以参考这篇博
  • 2024-09-20扩点最短路
    扩点最短路不把实际位置看作图上的点,而是把实际位置和该位置的所有状态的组合看作是图上的点,BFS或者Dijkstra的过程不变,只是增加了一些点。864.获取所有钥匙的最短路径#include<iostream>#include<vector>#include<algorithm>#include<queue>usingnamespacestd;
  • 2024-09-19【算法】堆与优先级队列
    【ps】本篇有4道 leetcode OJ。目录一、算法简介二、相关例题1)最后一块石头的重量.1-题目解析.2-代码编写2)数据流中的第K大元素.1-题目解析.2-代码编写3)前K个高频单词.1-题目解析.2-代码编写4)数据流的中位数.1-题目解析.2-代码编写 一、算
  • 2024-09-19Leetcode 1492. n 的第 k 个因子
    1.题目基本信息1.1.题目描述给你两个正整数n和k。如果正整数i满足n%i==0,那么我们就说正整数i是整数n的因子。考虑整数n的所有因子,将它们升序排列。请你返回第k个因子。如果n的因子数少于k,请你返回-1。1.2.题目地址https://leetcode.cn/problems
  • 2024-09-18Dijkstra 算法
    普通堆实现的Dijkstra算法时间复杂度为O(m*logm),m为边数distance[i]表示从源点到i点的最短距离,visited[i]表示i节点是否从小根堆弹出过准备好小根堆,小根堆存放记录:(x点,源点到x的距离),小根堆根据距离排序令distance[源点]=0,(源点,0)入堆从小根堆弹出(u
  • 2024-09-18菜鸟笔记之PWN入门(1.1.1)汇编语言基础与堆栈入门
    啥是汇编语言?有啥用?深入了解计算机底层,我们会发现,计算机实际上只能执行一些非常基础的操作,但其速度却非常快。计算机的CPU只能执行机器码,即由一系列0和1组成的指令。不同的0和1组合会触发计算机中的不同电路,从而进行各种操作。由于这些0和1的组合很长,阅读起来不方便,因此通常以1
  • 2024-09-14最小生成树
    最小生成树最小生成树(英语:Minimumspanningtree,简称MST)是指在无向带权图中选择一些边,在保证连通性的情况下,边的总权值最小最小生成树不唯一如果无向带权图有n个点,最小生成树一定有n-1条边P3366【模板】最小生成树Kruskal算法把所有的边,根据权值从小到大排
  • 2024-09-13A*算法.
    A算法*保证一定有解,不然算法不如dfs;无解会很慢,只能先写写去试试179.八数码在一个3×3的网格中,1∼8这8个数字和一个x恰好不重不漏地分布在这3×3的网格中。例如:123x46758在游戏过程中,可以把x与其上、下、左、右四个方向之一的数字交换(如果存在)。我们
  • 2024-09-07LeetCode刷题 堆
    一:堆1、一种二叉树的结构(完全二叉树)2、完全二叉树:从上到下;从左到右;填满3、最大堆:根节点的权值大于孩子节点4、最小堆:根节点的权值依次小于孩子节点5、常用操作#创建堆(最大堆,最小堆)#添加元素#获取堆顶元素#删除堆顶元素#堆的长度#堆的遍历二:刷题215数组中的第K个最
  • 2024-09-05【转载】golang内存分配
     同时Go对于GC后回收的内存页,并不是马上归还给操作系统,而是会延迟归还,用于满足未来的内存需求.  在1.10以前go的堆地址空间是线性连续扩展的,比如在1.10(linuxamd64)中,最大可扩展到512GB.因为go在gc的时候会根据拿到的指针地址来判断是否位于
  • 2024-09-042024.07.30谷歌实习
    1.更衣室一个自动化的储物柜系统被引入更衣室,当客户访问时,系统的工作方式如下:如果客户没有被分配储物柜,系统分配给他们一个具有最小可用编号的储物柜。如果客户已经有分配的储物柜,系统打开并释放储物柜。之后,该储物柜可以重新分配给其他客户。锁柜从1开始编号。一天开始时,所有
  • 2024-09-03优先队列模板
    基础用法intmain(){ /* c++优先队列默认为大根堆 */ priority_queue<int,vector<int>>heap; heap.push(1); heap.push(2); heap.push(3); while(heap.size()){ cout<<heap.top()<<''; heap.pop(); } /*output:321*/ /* 优先队
  • 2024-09-02Java 堆的设计,如何用堆进行排序
    Java学习+面试指南:https://javaxiaobear.cn1、堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。1、堆的特性它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右
  • 2024-09-02(算法)数据流中的第K⼤元素————<堆>
    1.题⽬链接:703.数据流中的第K⼤元素2.题⽬描述:3.解法(优先级队列):算法思路:我相信,看到TopK问题的时候,兄弟们应该能⽴⻢想到「堆」,这应该是刻在⻣⼦⾥的记忆。 C++算法代码:classKthLargest{public://创建一个小根堆priority_queue<int,vector<int>,gre
  • 2024-09-02(算法)最后⼀块⽯头的重量————<堆>
    1.题⽬链接:1046.最后⼀块⽯头的重量2.题⽬描述:3.解法(利⽤堆):算法思路:其实就是⼀个模拟的过程:•每次从⽯堆中拿出最⼤的元素以及次⼤的元素,然后将它们粉碎;•如果还有剩余,就将剩余的⽯头继续放在原始的⽯堆⾥⾯重复上⾯的操作,直到⽯堆⾥⾯只剩下⼀个元素,或者没有元
  • 2024-08-27FreeRTOS不同内存管理策略的区别
    来源于正点原子《STM32F1FreeRTOS开发手册V1.1》第二十章内存管理20.7heap_5内存分配方法(P391):heap_1最简单,但是只能申请内存,不能释放。heap_2提供了内存释放函数,用户代码也可以直接调用函数pvPortMalloc()和vPortFree()来申请和释放内存,但是heap_2会导致内存碎片的