自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 UEFI学习笔记(九):ACPI详解

DSDT (Differentiated System Description Table)是 ACPI 表中的核心之一,定义了系统中的硬件和设备。它包括设备对象、方法、操作和控制策略。DSDT 描述了系统的设备和其功能,提供了系统启动和运行时所需的基本设备信息。通常在系统固件中存储,并由操作系统在启动时加载和解释。

2024-09-14 09:57:16 762

原创 UEFI入门学习笔记(详细版,持续更新)

每个平台有其对应的 .dsc 文件(平台描述文件)和 .fdf 文件(固件描述文件),用来定义要构建的平台、所包含的模块、库、驱动程序,以及固件映像的布局。.dsc 文件是编译每个模块的主要参考,而 .fdf 文件是生成固件映像时的重要文件。模块是一个最小的可编译单元,Package是最小的对外发布的单元。模块放在包里面的。模块包括LibraryDriver等类型。每一个模块都有一个INF文件。HOB(Hand-Off Block)主要用于在不同的阶段共享数据。

2024-09-13 10:29:49 1222

原创 UEFI学习笔记(八):Memory Services

HOB(Hand-Off Block)主要用于在不同的阶段共享数据。由于Flash是只读的,直接修改全局变量是无效的。因此,在PEI(Pre-EFI Initialization)阶段,需要使用HOB来共享全局信息。HOB提供了一块临时内存,这块内存是CPU缓存的一部分,可以进行读写操作,从而在不同的阶段之间传递和共享信息。

2024-09-12 14:42:53 1010

原创 UEFI学习笔记(七):UEFI_Spec_2_10 Protocols整理

用于定位EFI MTFTPv4协议(Multicast Trivial FTP)驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI MTFTPv4协议子协议驱动程序的实例。它提供了一组函数,用于初始化、控制和操作显示设备的图形输出。用于定位由EFI UDPv4协议驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI UDPv4协议子协议驱动程序的实例。用于定位EFI IPv4协议驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI IPv4协议子协议驱动程序的实例。

2024-09-12 09:14:33 464

原创 UEFI学习笔记(六):EDK II 模块:Libraries,Drivers&Application

(os loader 是一种特殊的application,执行完成后不会return或者exit,相反会调用EFI boot service gBS->ExitBootServices()来将控制权从fireware 传递给os)Driver可以依赖Library,Driver可以生产protocols,主要用于支持硬件。里面的(Package是EDK II 最小的对外发布的单元)。App是被UEFI loader加载的,不会装protocols。每一个模块都有一个INF文件。对应的是一个模块(INF)

2024-09-11 17:21:38 461

原创 UEFI学习笔记(五):EDK II PCD的概念、类型、使用

如果在BIOS里面有一些模块是binary方式集成进来的而这些binary又需要用到PCD(用于Binary Release),那么这些Binary集成的要用到的PCD就必须要设置为。PCD的值存在memory里面,下次启动时,上次更改的值丢失了,每次启动都是从default值开始。是存在VPD空间的(在FLASH上,只读),一般是出厂配置。如果platform是从源码build出来的,没有binary在里面的时候,PCD用的都是。作用域在一个模块中(模块级的),可以在Binary Level进行修改。

2024-09-11 14:42:29 890

原创 UEFI学习笔记(四):inf、dec和dsc

INF DEC DSC

2024-09-10 15:51:37 1104

原创 UEFI学习笔记(三):FDF文件及FD、FV、FFS

FDF FD FFS

2024-09-10 14:48:32 880

原创 UEFI学习笔记(二):edk2构建编译流程

每个平台有其对应的 .dsc 文件(平台描述文件)和 .fdf 文件(固件描述文件),用来定义要构建的平台、所包含的模块、库、驱动程序,以及固件映像的布局。.dsc 文件是编译每个模块的主要参考,而 .fdf 文件是生成固件映像时的重要文件。

2024-09-10 11:10:36 673

原创 UEFI学习笔记(一):UEFI中的Protocol操作

UEFI入门

2024-08-07 18:04:44 229

原创 MakeFile快速入门

【代码】MakeFile快速入门。

2023-08-30 14:36:01 212

原创 Git配置 仓库构建 上传代码到github

Git配置 仓库构建 上传代码到github

2023-08-25 14:38:33 300

原创 cmake添加ffmpeg静态链接库 编译测试程序

报错,发现少了libz库,安装并遍历libz库。

2023-08-24 16:46:59 651

原创 Ubuntu18.04安装编译ffmpeg库

【代码】Ubuntu18.04安装编译ffmpeg库。

2023-08-23 16:01:31 1001

原创 动态链接库加到环境变量的方法 error while loading shared libraries问题的解决方案

用静态链接库会把库直接编译进去,用静态链接库需要把库添加到环境变量,不然会出现:error while loading shared libraries1. 把它们复制到系统环境变量已有的路径下,如 /usr/lib /usr/local/lib 这些2. 另外放到一个专有目录,将路径export 到环境变量或者修改 ~/.bashrc ,在.bashrc文件中添加如下内容:

2023-07-25 14:03:25 584

原创 Ubuntu 交叉编译openssl + pahomqtt

修改CMakeLists.txt,加入下面四行。

2023-07-24 17:08:47 772

原创 安装交叉编译工具链aarch64-linux-gnu-g++ 以及cmake测试

【代码】安装交叉编译工具链aarch64-linux-gnu-g++ 以及cmake测试。

2023-07-24 11:07:06 9936 3

原创 6.28 内存分配/管理 学习总结

在应用程序中,内存中连续的8个字节看似是连续的,但是在物理上并不是连续的,这是由于8个bank实际上是可以并行工作的。内存对其的情况下,工作一次,把得到的数据拼起来,就能得到内存中地址连续的8个字节,从而提高了IO效率。通过上述实验结果可以得出,在64位系统下,我们申请的内存实际占用的大小会是16x + 8,分配的内存大小在每个区间内会对应相同的一个实际占用内存大小。内存对齐就是把各种类型数据按照一定的规则在空间上排列,而不是按照顺序一个接一个的排放,这种就称为内存对齐,内存对齐是指首地址对齐。

2023-06-28 10:32:13 298

原创 C++ ACM模式:输入输出几组带逗号字符串排序练习

题目:对输入的字符串进行排序后输出。

2023-05-11 10:37:29 205

原创 Leetcode C++: 剑指 Offer 07. 重建二叉树 (根据前序遍历和中序遍历的结果)

根据该位置以及中序遍历的右边界计算出root的左边的节点个数, 然后new一个root,通过递归给root->left和root->right赋值。输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。我们需要根据前序遍历的根节点的值去定位到中序遍历中root的位置,假设输入的前序遍历和中序遍历的结果中都不含重复的数字。递归结束条件: 左边界 > 有边界。前序遍历:[根,[根的左],[根的右]]中序遍历:[[根的左],根,[根的右]]

2023-04-10 16:30:11 99

原创 3.17 Leetcode: 2389. Longest Subsequence With Limited Sum 和有限的最长子序列

对nums进行从小到大排序 (因为从小的数开始取 才会最长)然后求前缀和 遍历queries数组 找前缀和中第一个大于q的数的地址(利用upper_bound函数), 该地址减去 前缀和的初始地址 就是最大长度。

2023-03-17 21:28:35 92

原创 3.15 Leetcode: 1615. Maximal Network Rank

网络秩 = i节点相连的道路 + j节点相连的道路 - nb[i][j] (遍历更新)定义一个邻接矩阵nb 表示 两个节点是否相连 相连为1 不相连为0。最大网络秩是与两个城市直接相连的道路总数的最大值。

2023-03-16 20:04:43 140

原创 Leetcode: 2488. Count Subarrays With Median K 统计中位数为 K 的子数组

3、遍历剩下的数 计算前缀和 等于k为0 大于k为1 小于k为-1 如果在map中找到presum 或者 presum - 1 说明存在map[presum] / map[presum - 1]个满足条件的数组 用cnt进行计数。1、用哈希表存放前缀和对应出现的次数 由于 为偶数时中位数是左边那个 说明 左边可以少一个比k大的数。2、先遍历统计 k前面的数的前缀和出现的次数 大于k为1 小于k为-1。

2023-03-16 16:56:47 120

原创 Leetcode:1605. Find Valid Matrix Given Row and Column Sums 给定行和列的和求可行矩阵

每个的值必须要小于 当前行的和and当前列的和 所以为 min(rs[i], cs[j])并且对每行的和 and 每列的和进行更新 (-val)

2023-03-14 21:15:01 108

原创 Leetcode: 2383. Minimum Hours of Training to Win a Competition 赢得比赛需要的最少训练时长

2、再考虑经验, 遍历 ex:experience, 如果当前initialEnergy > ex,则不需要额外训练,且initialEnergy += ex;如果当前initialEnergy > ex, 则需要额外训练ex - initialExperience + 1小时,且initialEnergy = initialEnergy + (额外训练的) (ex - initialExperience + 1) + (比赛赢获得的)ex = ex * 2 + 1。

2023-03-13 10:52:11 83

原创 Leetcode : 1590. Make Sum Divisible by P

移除subarray 只需要固定两个端点 (subsequence 移除不一定连续的子序列)1、前缀和 + 暴力解法 (超过时间了 没通过 但逻辑应该是没问题的)2、前缀和 + 哈希表。

2023-03-13 10:06:25 247

原创 Leetcode DAY 60:柱状图中最大的矩形Largest Rectangle in Histogram

【代码】Leetcode DAY 60:柱状图中最大的矩形Largest Rectangle in Histogram。

2023-03-10 11:19:50 118

原创 Leetcode DAY 59: 下一个更大元素 and 接雨水

循环遍历height[i] 当height[i] 比栈顶元素大 说明找到凹槽 当前栈顶元素为mid 栈顶元素的下一个元素为左边最大 当前i为右边最大。相较于I, 主要是数组变成了环状的, 需要循环数组两边 将 i下标 替换为 i % nums.size()用 Lh[i] = max(Lh[i - 1], height[i]) 对左边最大元素进行更新。第i列的储水量为 min(Lh[i], Rh[i]) - height[i]用两个数组记录每个元素左边最大的元素和右边最大的元素。

2023-03-10 10:20:59 92

原创 Leetcode DAY 58: 每日温度 and 下一个更大元素 I

把第0个元素(的下标)放入栈中 从第一个元素开始遍历 比较第一个元素和栈顶元素的大小 如果小于等于栈顶元素 放入栈中 循环判断如果大于栈顶元素 则得到当前res[st.top()]为当前元素和栈顶元素下标的差值 再把当前元素放入栈中。本题相当于找nums2中第i个元素右边比他大的第一个数 并且把第i个元素与nums1中的元素进行匹配 把右边第一个比他大的数放进res[index]中。两个for循环 遍历并判断(超出时间限制了)496.下一个更大元素 I。

2023-03-08 21:23:21 60

原创 Leetcode: 剑指 Offer II 077. 链表排序

2、需要把链表分为前后两个部分 分别进行归并排序后 合并链表。3、需要实现的函数:split链表, Merge两个链表。时间复杂度和常数级空间复杂度下,对链表进行排序吗?1、由于时间复杂度的要求,选择。

2023-03-08 15:37:51 78

原创 Leetcode DAY 57: 回文子串 and 最长回文子序列

动态规划之 回文子串 and 最长回文子序列 的思路及C++代码

2023-03-07 16:39:45 292

原创 Leetcode DAY 56: 两个字符串的删除操作 and 编辑距离

如果不考虑word1[i - 1] 那么dp[i][j] = dp[i - 1][j] + 1;如果不考虑word2[j - 1] 那么dp[i][j] = dp[i][j - 1] + 1;(1)word1[i - 1] == word2[j - 1] 相当于不考虑word1[i]和word2[j] 只考虑前面的 所以dp[i][j] = dp[i - 1][j - 1]2、 word1[i - 1] & word2[j - 1]相等 ->不操作 dp = dp[i -1][j - 1]

2023-03-06 16:26:02 326

原创 Leetcode DAY 55: 判断子序列 and 不同的子序列

如果 s[i - 1] == t[j - 1] dp[i][j] = 使用s[i - 1]的dp + 不使用s[i - 1]的dp。dp[i][j] 表示以s[i - 1]为结尾的字符串 和 以t[j - 1]为结尾的字符串 的公共字符串长度。dp[i][j] 以s[i - 1]为结尾的字符串 包含以t[j - 1]为结尾的字符串 的个数。dp[i][j] 需要分析 s[i - 1] 与 t[j - 1]相不相等?如果不等于 dp[i][j] = dp[i - 1][j]

2023-03-05 15:09:54 169 1

原创 Leetcode: 剑指 Offer II 025. 链表中的两数相加

给定两个 非空链表 l1和 l2 来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。由于是从链表末尾开始计算的 所以选择用栈实现 把结果存到第三个栈中 然后第三个栈中的节点再连成链表。可以假设除了数字 0 之外,这两个数字都不会以零开头。

2023-03-03 21:19:31 52

原创 Leetcode DAY 53: 最长公共子序列 and 不相交的线 and 最大子序和

最长公共子序列 and 不相交的线 and 最大子序和

2023-03-03 16:12:47 52

原创 Leetcode DAY 52: 最长递增子序列 and 最长连续递增序列 and 最长重复子数组

最长递增子序列 and 最长连续递增序列 and 最长重复子数组

2023-03-03 12:51:41 58

原创 Leetcode DAY 51: 最佳买卖股票时机含冷冻期 and 买卖股票的最佳时机含手续费

最佳买卖股票时机含冷冻期 and 买卖股票的最佳时机含手续费

2023-03-02 15:44:00 66

原创 Leetcode DAY 48:打家劫舍 1 2 3

打家劫舍 1 2 3 C++

2023-03-01 15:49:44 83

原创 Leetcode DAY 49~50:买卖股票的最佳时机 1 2 3 4

买卖股票的最佳时机 1 2 3 4思路及代码

2023-03-01 15:42:34 342

原创 Leetcode: 1144.递减元素使数组呈锯齿状 C++

或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < ...每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > ...给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。返回将数组 nums 转换为锯齿数组所需的最小操作次数。

2023-02-28 12:00:01 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除