自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构与算法:图论——拓扑排序

这里就是判断是否有环。

2025-06-02 22:30:28 507

原创 操作系统:文件系统笔记

的位置,并且每个数据块里面留出一个指针空间,用来存放下一个数据块的位置。正常的链表的思路。一个数据块指向下一个数据块。

2025-06-02 21:39:24 716

原创 数据结构与算法:回溯

中也分析过,主要是因为程序运行的时候对unordered_set 频繁的insert,unordered_set需要做哈希映射(也就是把key通过hash function映射为唯一的哈希值)相对费时间,而且insert的时候其底层的符号表也要做相应的扩充,也是费时的。中分析过,组合,子集,排列问题的空间复杂度都是O(n),但如果使用set去重,空间复杂度就变成了O(n^2),因为每一层递归都有一个set集合,系统栈空间是n,每一个空间都有set集合。,其中可能包含重复元素,请你返回该数组所有可能的。

2025-05-04 23:56:19 718

原创 qemu学习笔记:QOM补充

说明:小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。参考:《QEMU&KVM源码解析与应用》作者:李强。

2025-05-04 00:48:05 705

原创 数据结构与算法:图论——最短路径

先给出一些leetcode算法题,以后遇见了相关题目再往上增加最短路径的4个常用算法是Floyd、Bellman-Ford、SPFA、Dijkstra。

2025-05-02 23:51:02 1380

原创 qemu学习笔记:QOM

说明:小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。参考:《QEMU&KVM源码解析与应用》作者:李强Qemu - 百问网嵌入式Linux wikiQOM 定义:QEMU Object Model,是 QEMU 中对对象的抽象层,用于管理和抽象资源(如设备创建、配置、销毁)及后端组件(如 MemoryRegion、Machine 等)。面向对象思想:继承、封装、多态。

2025-05-02 00:02:05 1206

原创 数据结构与算法:图论——并查集

先给出并查集的模板,还有一些leetcode算法题,以后遇见了相关题目再往上增加。

2025-05-01 00:17:52 1077

原创 Linux0.11系统调用:预备知识

这些接口为了应用级的代码能够在不同的操作系统上都可以运行,就需要有标准去限制系统调用接口的标准。这些系统调用号对应于 include/linux/sys.h 中定义的系统调用处理程序指针数组表 sys_call_table[]中项的索引值。目标:了解系统调用的流程,在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试它们。指的是同一个东西:在 Linux 内核中,每个系统调用都具有唯一的一个系统调用功能号。的声明,下面得找到定义,Linux0.11的源码好像没有找到,但是在。

2025-04-29 22:17:38 1037

原创 Linux0.11引导启动程序:简略过程

Head.s 代码的主要作用是初步初始化中断描述符表中的 256 项门描述符,检查 A20 地址线是否已经打开,测试系统是否含有数学协处理器。那么最后,执行完head.s后,已经正式完成了内存页目录和页表的设置,并重新设置了内核实际使用的中断描述符表 idt 和全局描述符表 gdt。简而言之,A20 地址线控制着 80386 对 (1MB) 以上内存的访问方式,是实模式兼容旧架构与保护模式充分利用内存的关键控制项。进入保护模式,寻址方式发生改变,需要段选择符、段描述符,这里进行最初的设置,后面在。

2025-04-28 23:12:48 609

原创 makefile总结

通过make工具和Makefile去管理需要编译的文件:延迟赋值,执行到这个变量时才赋值Makefile_test1文件A = 123B = $(A)A = 456.PHONY:allall:Makefile_test1:7: *** 遗漏分隔符 (null)。停止。!!!!!!!这里是tap建被vscode换成4个空格了,需要设置!!!!!!!#这里是执行到$(B)时,B才执行B = $(A) 456echo "456"456:=:为立即赋值,与常规思路一样A = 123。

2025-04-27 22:42:07 965

原创 Linux0.11内存管理:相关代码

x86 架构规定:当向 CR3 写入数据时,无论值是否变化,CPU 都会。,迫使后续虚拟地址转换时重新查询页目录和页表,确保使用最新的地址映射关系。是可选关键字,用于禁止编译器优化该汇编指令(内核中常用)。这个是主要文件:分成一段一段的去看。的语法,在C语言中嵌入汇编指令。分隔,即使某部分无内容,对应的。GNU 内联汇编的基本格式。,不i管值变不变都会刷新。那么这个代码可以看成,把。,表示开始内联汇编。

2025-04-26 18:54:59 779

原创 Linux0.11内存管理:分页机制

主要参考:赵炯博士的《Linux内核完全注释(修正版v3.0)》。非常详细对应的是第十三章 第 13 章 内存管理(MM)

2025-04-25 18:28:46 588

原创 Linux0.11内存管理:分段机制

Linux0.11源码里面的分段机制

2025-04-25 12:07:18 942

原创 12051205

你的代码可能是这样的: 在有尾递归优化的情况下,最后一条语句不用压栈,不占用栈空间,因此空间复杂度为S(n)=S(left)+1 在平衡的时候,left=n/2,S(n)=S(n/2)+1,得S(n)=O(logn) 在树严重向左偏,left=n-1,S(n)=S(n-1)+1,得S(n)=O(n) 当树严重向右偏,left=1,S(n)=S(1)+1,得S(n)=O(1)从我前面的例子、图,以及还有代码来看,不管操作是插入、删除还是查找,时间复杂度其实都跟树的高度成正比,也就是 O(height)。

2025-03-21 21:02:23 620

原创 卡码网总结刷题

cincin是C++中, 标准的输入流对象,下面列出cin的两个用法,单独读入,和批量读入 cin的原理,简单来讲,是有一个缓冲区,我们键盘输入的数据,会先存到缓冲区中,用cin可以从缓冲区中读取数据。 注意1:cin可以连续从键盘读入数据 注意2:cin以空格、tab、换行符作为分隔符 注意3:cin从第一个非空格字符开始读取,直到遇到分隔符结束读取注意:这题错的同学请注意题目的提示“注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b”,只有一次cin>&

2024-03-16 12:33:52 253

原创 leetcode刷题总结

1.sort()函数,默认的是对二维数组按照第一列的大小对每行的数组进行排序。所以可以加上cmp函数用按照任意列对数组进行排序。将区间[first,last)的元素赋值到当前的vector容器中,这个容器会清除掉vector容器中以前的内容。或者赋n个值为x的元素到vector容器中,这个nums.end()是取不到的,所以。从begin()开始有几个数就加上几。

2024-03-15 17:49:39 398

原创 FPGA刷题总结

35.下列说法错误的是()【A】为了避免wire信号出现X态,最好在声明时赋初始值0【B】一个模块例化多次,可以使用generate for循环减少代码量【C】模块例化时,需要将端口显式列出,即使某个端口未连接信号【D】循环表达式的循环次数必须为常数所以D错误。A选项,为了避免wire信号出现X态,最好在声明时赋初始值0,没有见过这种说法(但也没有找到证明它错误的权威的解析),但是wire型信号是可以在声明时赋初始值0的,例如:wire a=1’b0;B选项和C选项正确。正确答案:D。

2024-03-06 14:47:04 1196

原创 【无标题】stft-fsst

fsst

2023-03-02 20:26:12 335

原创 golang的继承inherit

1)继承的优点:复用性、维护、扩展 2)结构体可以使用 镶嵌匿名结构体 的所有字

2022-09-11 16:03:35 257

原创 golang 切片

slice

2022-09-04 19:17:37 174

原创 各种傅里叶变换

clc,clear,close all;N=1024;sig1=fmlin(N,0.15,0.25);%%暂态信号2sig2=fmlin(N,0.1,0.2);sig=sig1+sig2;%这个是估算瞬时频率figure(3);[f,t]=instfreq(sig1);plot(t,f);%短时傅里叶变换%就是这个tfrstftstft=MZJ_stft( sig );figure(1);imagesc( abs(s...

2022-05-09 18:47:30 1318 1

原创 python爬图片

import requestsimport osfrom bs4 import BeautifulSoupurl = input("输入网站:")#字典dic={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39"}resp = re.

2022-04-14 20:50:30 472

原创 二分查找 2022/3/28

//二分查找//二分查找1.最左边的第一位//二分查找2.最右边的第一位#include <iostream>#include <vector>using namespace std;//最基本的二分查找无法确定找到的是哪一个最先找到的输出int FristBinarySearch(vector<int> nums,int target){ int left=0,right=nums.size()-1; int mid=0; while(left..

2022-03-28 23:58:37 314

原创 stringstream比较数字大小,string转int

165. 比较版本号 - 力扣(LeetCode) (leetcode-cn.com)#include<iostream>#include<string>#include<algorithm>#include<vector> #include<sstream>using namespace std;string fort_zero(string& s){ bool flag=0; int left=0,right=

2022-03-24 17:00:55 802

原创 stringstream分割任意字符

在 C++ 中,可以使用 istringstream 配合 getline 根据分隔符来分割字符串。istringstream, ostringstream, stringstream区别#这 3 个 stream 都可以通过头文件 #include <sstream> 引入。三者的区别如下: ostringstream : 用于执行 C 风格字符串的输出操作。 istringstream : 用于执行 C 风格字符串的输入操作。 stringstream : 同时.

2022-03-24 14:51:14 1207

原创 C++比较器

bool custom_compare(int a, int b) { int binary_count_a =0,binary_count_b=0,a_mid=a,b_mid=b; while(a) {binary_count_a ++;a &=a-1;} while(b) {binary_count_b ++;b &=b-1;} if(binary_count_a<binary_count_b) return true; el...

2022-03-24 14:07:46 1894

原创 二进制1的个数

方法1int bitcount (unsigned int n){ int count=0 ; while (n) { count++ ; n &= (n - 1) ; } return count ;}这个代码中核心的代码只有一行,就是 n &= (n - 1) ,我们分开看一下:n-1:一个二进制的数减1,就是将这个二进制最右边的那个1变成0,然后它后边的所有位置都变成1~ 举例:0011 0100,减1.

2022-03-24 14:05:28 299

原创 迭代器常用操作

1.通用操作1.1迭代器运算符1 *it返回迭代器it所指元素的引用、即解引用指回去2 反向迭代器坐标轴都是反的中心对称3 迭代器类型 容器类型::iterator 反向迭代器类型 容器类型::reverse_iterator#include <string>using namespace std;int main() { string tar="abcdefg"; // 迭代器类型是 容器类型::iterator for(strin...

2022-03-16 19:47:47 294

原创 2022/1/25

基本语法1.string之间的比较大小原则:找第一个不同的比较得结果,对大小写敏感,A<a大写变小写'A'+32='a'#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int main(){ vector<string> words={"a","Aee", "b", "app", "app.

2022-01-25 21:52:03 289

原创 string类C++笔记

#include<string>头文件1.定义初始化赋值输入输出对象#include <iostream> #include <string> //getline(cin,str1) 用于string类 using namespace std;int main(){ //定义string对象 string str1; //初始化string对象 string str2="c++"; //复制初始化..

2022-01-25 21:48:23 505

原创 getline()、cin.get()和cin.getline()

1.<istream>中的cin.getline(m,5) 用于char数组cin>>cin默认使用空白(空格、制表符、换行符)来确定字符串的结束位置:在<istream>中的getline()函数有两种重载形式:cin.getline()istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, char delim );用法:接收一

2022-01-25 20:08:17 481

原创 2022/1/24

基本语法1.sort与比较器使用:#include <algorithm>   using namespace std;时间复杂度:n*lg(n)形式:sort(first_pointer,first_pointer+n,cmp)第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。第二个参数相对较好理解,即首地址加上数组的长度n(代表尾地址的下一地址)。最后一个参数是比较函数的名称(自定义函数cmp),即第三个参数可以缺省,这样sort会默认.

2022-01-24 20:41:17 5139

原创 2022/1/23笔记

基本语法1.输入输出1.<istream>中的getline()函数cin.getline(m,5)cin>>cin默认使用空白(空格、制表符、换行符)来确定字符串的结束位置:在<istream>中的getline()函数有两种重载形式:cin.getline()istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, cha.

2022-01-23 23:03:00 297

原创 2022/1/22笔记

基本语法1.sort对vector排序C++ vector用法详解 分为升序和降序两排序方式: vector<int>v; sort(v.begin(), v.end(),less<int>());//升序 sort(v.begin(), v.end(),greater<int>());//降序 sort(obj.begin(),obj.end());//从小到大 reverse(obj.begin().

2022-01-22 23:08:45 304

原创 2022/1/22笔记背包问题

首先是背包分类的模板:1、0/1背包:外循环nums,内循环target,target倒序且target>=nums[i];2、完全背包:外循环nums,内循环target,target正序且target>=nums[i];3、组合背包:外循环target,内循环nums,target正序且target>=nums[i];4、分组背包:这个比较特殊,需要三重循环:外循环背包bags,内部两层循环根据题目的要求转化为1,2,3三种背包类型的模板1、最值问题: dp[i] = m

2022-01-22 14:26:24 552

原创 2022/1/21笔记

01背包问题class Solution {public: bool canPartition(vector<int>& nums) { int len=nums.size(); int mid=0,tar=0; for (int a:nums) mid+=a; if(mid%2!=0) return false; tar=mid/2; bool pd[len+1][tar+1

2022-01-21 23:55:23 4531

原创 2022/1/20笔记

1.unordered_map用法C++ STL unordered_map容器用法详解 (biancheng.net)C++中的unordered_map用法详解#include<string> #include<iostream> #include<unordered_map>using namespace std; int main(){ unordered_map<string, int> dict; //.

2022-01-21 09:39:56 199

原创 2022/1/19

1.知识点break continueclass Solution {public: string modifyString(string s) { int len=s.size(); for(int i=0;i<len;i++) { if(s[i]=='?') { for(char res='a';res<='z';res++) .

2022-01-20 10:53:44 85

原创 简单排序记忆

1.冒泡排序void Bubble(vector<int>& arr){ for(int i=0;i<arr.size()-1;i++){ 0 len-1 for(int j=0;j<arr.size()-i-1;j++){ 0 len-1-i if(arr[j]>arr[j+1]) swap(arr[j],arr[j+1]); .

2022-01-18 19:37:40 182

原创 2022/1/18

1.除二操作/2与>>1而>> 1和/ 2在n为负奇数时截断的反向不一样。-5 / 2 = -(int)2.5 = -2,这里是把绝对值变小了,加个负号,结果就变大了。-5 >> 1 = (1011) >> 1 = (1101) = -3,假设用4-bit表示一个整数,补码表示。发现结果变小了。-5 / 2 = -2 5 / 2 = 2。这表明除二是向零取整-5 >> 1 = -3 5 >> 1 = .

2022-01-18 18:43:11 299

分数阶傅里叶幅度值与理想曲线f

分数阶傅里叶幅度值与理想曲线f

2023-12-28

经典傅里叶变换系列代码包

经典傅里叶变换系列代码包

2022-05-16

空空如也

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

TA关注的人

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