- 博客(423)
- 资源 (4)
- 收藏
- 关注
原创 【频域分析及处理】4. FFT 采样频率和采样点数的选取
5、为了保证频率和幅度的准确性(博主理解为在该段采样时间内获取的原信号周期为整数倍,频谱尽可能不泄露),需满足。4、基2-FFT要求点数N为2的指数倍(不考虑补零或截断,采样点数直接等于FFT运算点数),因此可得到大于。1、根据奈奎斯特采样定理保证不混叠且能还原出原信号信息,确定最小采样频率。2、频率分辨率为100Hz,最小采样总时间。的N的可取值序列。......
2022-07-15 18:11:13
15896
7
原创 【C++类型转换】static_cast、dynamic_cast、const_cast、reinterpret_cast
中,并在后续标准(C++11/14/17/20)中保持稳定。这四大类型是 C++ 对 C 风格强制转换的现代化、安全化替代方案。在 C 语言中,类型转换通常使用。enum 与整型之间。
2026-02-20 23:07:31
438
原创 FreeRTOS 学习笔记
是FreeRTOS中的一种中间件,是一种先进先出(FIFO)的数据结构,一个队列可以被多个任务写入或者读取,它允许。创建队列时要制定队列长度、每个数据大小(以字节为单位)。多任务读取/写入队列时,策略:优先级最高>等待时间最久。
2026-02-19 13:51:17
462
原创 CN 计算机网络 学习笔记
TCP 是全双⼯通信,可以双向传输数据,任何⼀⽅都可以在数据传送结束后独立发出连接释放的通知,待对⽅确认后进⼊半关闭状态。两次握⼿可以释放⼀端到另⼀端的 TCP 连接,完全释放连接⼀共需要四次握⼿,确保双方都完全关闭了 TCP 连接。丢包:丢包是指 **数据包在传输过程中丢失,导致接收方未能收到**数据。延迟:延迟是指数据从发送方到接收方的时间延迟。(1) 丢包处理**增加带宽:**通过升级网络设备和服务增加带宽,减少丢包率。
2026-02-19 13:48:57
611
原创 OS 操作系统 学习笔记
只需要破坏上⾯⼀个条件就可以破坏死锁。多个进程同时访问共享内存,存在冲突。传输效率限制,不适合频繁交换数据。每个进程有独立的内存空间和资源。CPU调度的最小单位。共享进程的内存和资源。不适合传输复杂数据流。不适合较大数据的传输。
2026-02-19 13:44:53
537
原创 【C++11并发编程】condition_variable 条件变量
头文件命名空间⚠️条件变量必须也只能与配合使用,以保证线程安全。条件变量本身不存储“条件”状态,它只是一个通知/等待机制。它不会记住你是否调用了 notify_one(),也不会自动检查 ready == true 这样的逻辑。它只负责:释放锁让线程挂起,并在收到通知(或虚假唤醒)时上锁恢复执行。因此,⚠️条件的状态 必须由程序员自己维护和检查。
2026-02-19 00:01:56
570
原创 【C++11并发编程】内存序
配对使用release(写方)必须与(读方)配对才能建立同步默认选择:无特殊性能需求时,直接用seq_cst(默认值)—— 安全且易理解避免consume:因实现复杂且编译器支持弱,实践中用acquire替代性能权衡relaxed:高性能,仅用于无依赖计数器:中等开销,适用于锁、发布-消费seq_cst:开销最大(需全局 fence),但逻辑最清晰。
2026-02-01 23:05:54
590
原创 【C++11并发编程】mutex 锁
作用最基本的锁,用于保护临界区,确保同一时间只有一个线程能进入。特性不可递归:⚠️同一线程重复调用 lock() 会导致未定义行为(通常死锁)。⚠️mutex 对象不可拷贝、赋值、移动。非公平锁:⚠️当多个线程在等待同一个 mutex 时,先等的线程不一定先拿到锁。这是因为:当一个线程释放 mutex 时,操作系统或底层实现可能直接把锁交给刚刚被唤醒的线程,或者正在运行的线程,而不是从等待队列头部取。这样做的好处是:减少上下文切换、提高吞吐量(性能更好)。
2026-01-21 00:07:49
941
原创 【C++11并发编程】thread 多线程
作用: 创建一个不表示任何线程执行流的 thread 对象,根本就没有启动线程 。这里的 noexcept 表示不抛出任何异常。用途:常用于声明后延迟初始化,或作为容器元素(如 vector<thread>)。状态:由默认构造函数创建的 thread对象在未关联线程前,其调用 joinable() 返回 false。▶ 模板构造函数(核心)作用: 启动一个新线程,执行可调用对象 f,并传入参数 args… 。异常:⚠️ 关键点:所有参数都会被复制或移动到新线程中,若需传引用,必须用 std
2026-01-19 00:30:31
650
原创 【C++ STL 模板类】tuple 元组
在 C++11 引入,用于将不同类型的数据组合成一个单一的对象。,但可以包含任意数量的元素(包括零个)。
2025-09-06 16:16:49
920
原创 【C++ 11】完美转发
C++11 标准为 C++ 引入右值引用语法的同时,还解决了一个 C++ 98/03 标准长期存在的短板,即使用简单的方式即可在函数模板中实现参数的完美转发。完美转发:指的是函数模板可以将自己的参数 “完美” 地转发给内部调用的其它函数,不仅能准确地转发参数的值,还能保证被转发参数的左、右值属性不变。
2024-10-21 21:15:21
1376
原创 【C++ 11】移动构造函数
通过执行结果我们不难得知,当为 demo 类添加移动构造函数之后,使用临时对象初始化 a 对象过程中产生的 2 次拷贝操作,都转由移动构造函数完成。将之前拷贝得到的临时对象复制给 a。复制一份之前生成的匿名对象。
2024-10-21 16:30:59
1787
1
原创 【C++ 11】shared_ptr、unique_ptr、weak_ptr 智能指针
问题背景在实际的 C++开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。针对以上这些情况,很多程序员认为 C++ 语言应该提供更友好的内存管理机制,这样就可以将精力集中于开发项目的各个功能上。事实上,显示内存管理的替代方案很早就有了,早在 1959 年前后,就有人提出了 “垃圾自动回收” 机制。所谓垃圾,指的是那些不再使用或者没有任何指针指向的内存空间,而“回收”则指的是将这些“垃圾”收集起来以便再次利用。
2024-10-21 15:06:44
1307
原创 20240904 华为笔试 好友推荐系统
3.如果推荐的好友个效不足L个,则推荐与用户K无无共同好友关系的用户(陌生人)作为可能好友,如果推荐仍不满足L个用户,剩余推荐用户编码使用0来占位。尝试推荐与编号3用户无共同好友的其他用户,由于除编号为6的用户之外,其他用户和编号3用户都是好友,所以找不到陌生人作为推荐的第二个用户;相似度定义:两个用户非好友,两个用户的相似度为拥有的共同好友数(例如用户A和用户B,只有共同好友C和D,相似度=2)。输入包含了6个用户,7条好友记录,给用户ID编号为3的用户推荐2个好友。
2024-10-09 16:06:36
814
原创 【C++ 11】auto 自动类型推导
auto 的一个典型应用场景是用来定义 STL 的迭代器。问题背景我们在使用 stl 容器的时候,需要使用迭代器来遍历容器里面的元素;不同容器的迭代器有不同的类型,在定义迭代器时必须指明,而迭代器的类型有时候比较复杂,书写起来很麻烦,如下所示:定义迭代器 i 的时候,类型书写比较冗长,容易出错。return 0;然而有了 auto 类型推导,我们大可不必这样,只写一个 auto 即可。
2024-10-08 21:36:18
1792
1
原创 【C++ STL算法】二分查找 lower_bound、upper_bound、equal_range、binary_search
第 1 个迭代器指向的是 [first, last) 区域中。第 2 个迭代器指向的是 [first, last) 区域中。成功找到和 val 相等的元素,则返回 true。:这 2 个迭代器要么。
2024-10-06 22:43:48
1368
原创 双指针:滑动窗口
PS:为什么左指针只需要从左到右 右移一次即可,不需要在每次 右指针r 遍历的情况下将左指针从左到右重新右移一遍?在 r+1 时,若想要遍历到更小的窗口,则滑动窗口的左指针只能继续往后移,因为前面已经确定最小的滑动窗口。答:在 r 时,遍历到的最小滑窗窗口比如说 [l,p] ,长度是 p-l+1,r≥p。
2024-10-05 22:42:34
721
原创 【C++ STL哈希容器】unordered_map 无序映射
【C++ STL有序关联容器】map 映射,除了和排序规则相关的一些定义。查看已定义 umap 容器存储元素的个数,并通过正向迭代器输出各元素。int main()//创建空 umap 容器//向 umap 容器添加新键值对umap.emplace("Python教程", "http://c.biancheng.net/python/");umap.emplace("Java教程", "http://c.biancheng.net/java/");
2024-08-28 21:46:27
1541
原创 【C++ STL哈希容器】unordered_set 无序集合
【C++ STL有序关联容器】set 集合。查看已定义 uset 容器存储元素的个数,并通过正向迭代器输出各元素。int main()//创建一个空的unordered_set容器//给 uset 容器添加数据//查看当前 uset 容器存储元素的个数//遍历输出 uset 容器存储的所有元素iter!
2024-08-28 21:31:28
1419
1
原创 12. MySQL 日志
例如,当用户 root 登录到 MySQL 服务器后,就会在日志文件里记录该用户的登录事件、执行操作等信息。当 MySQL 服务器运行时出错,出错信息就会被记录到日志文件里。如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。例如,一个查询操作比较频繁的 MySQL 中,记录通用查询日志和慢查询日志要花费很多的时间。二进制日志中记录着大量的信息,如果很长时间。
2024-06-06 21:30:31
1232
1
原创 11. MySQL 备份、恢复
mysqldump 命令备份的文件并非一定要求后缀名为.sql,备份成其他格式的文件也是可以的。例如,后缀名为.txt的文件。通常情况下,建议备份成后缀名为.sql 的文件,这是因为后缀名为.sql的文件给人第一感觉就是与数据库有关的文件。如果使用备份了所有的数据库,那么恢复时不需要指定数据库。因为,其对应的 sql 文件中含有 CREATE DATABASE 语句,可以通过该语句创建数据库。如 MyISAM 不支持热备,支持温备和冷备;MySQL 中进行不同方式的备份还要考虑存储引擎是否支持,
2024-06-06 11:52:02
1476
原创 10. MySQL 用户
通常标准的发行版不支持 ssl,读者可以使用 SHOW VARIABLES LIKE “have_openssl” 语句来查看是否具有 ssl 功能。如果 have_openssl 的值为 DISABLED,那么则不支持 ssl 加密功能。即使 password_expired 为“Y”即用户密码过期,用户也可以使用密码登录 MySQL,但是不允许做任何操作。例如,如果数据库管理员觉得某个用户不应该拥有 DELETE 权限,那么就可以删除 DELETE 权限。user 表中的安全列。
2024-06-05 17:12:50
1151
原创 9. MySQL事务、字符集
以银行转账事务事务为例。在事务开始之前,所有账户余额的总额处于一致状态。在事务进行的过程中,一个账户余额减少了,而另一个账户余额尚未修改,此时,所有账户余额的总额处于不一致状态。当转账成功后,即另一个账户余额增加后,即事务完成以后,账户余额的总额再次恢复到一致状态。以银行转账事务为例,如果该事务提交了,则这两个账户的数据将会更新。如果由于某种原因,事务在成功更新这两个账户之前终止了,则不会更新这两个账户的余额,并且会撤销对任何账户余额的修改,事务不能部分提交。
2024-06-04 22:52:14
953
原创 8. MySQL 存储过程、存储函数、触发器
SHOW CREATE 语句能查询存储过程的集体定义。基本语法SHOW CREATE PROCEDURE 存储过程名;实例使用 SHOW CREATE 查询名为 showstuscore 的存储过程的状态。查询结果显示了存储过程的定义和字符集信息等。基本语法DECLARE 关键字是用来声明变量的;var_name参数是变量的名称,这里可以同时定义多个变量;type参数用来指定变量的类型;
2024-06-04 11:48:58
2052
原创 7. MySQL 视图、索引
如果在表中查询的列有一个索引,MySQL 能快速到达索引列的位置去搜寻数据,而不必查看所有数据;否则,数据库系统将读取每条记录的所有信息进行匹配。因此,使用索引可以很大程度上提高数据库的查询速度,有效的提高数据库系统的性能。可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。是一种特殊的数据库结构,由数据表中的一列或多列组合而成(view 的视图,通过视图 product。
2024-06-02 21:32:29
1291
原创 6. MySQL 查询、去重、别名
例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。在实际应用中经常需要对查询结果进行排序,比如,在网上购物时,可以将商品按照价格进行排序;这个子查询语句产生语法错误的原因在于主查询语句的 FROM 子句是一个子查询语句,因此应该为子查询结果集指定别名。,因为笛卡尔积中容易存在大量的不合理数据,简单来说就是容易导致查询结果重复、混乱。字段定义别名之后,会返回给客户端显示,显示的字段为字段的别名。多表查询遵循的算法就是以上提到的笛卡尔积,
2024-06-01 21:56:35
1561
原创 5. MySQL 运算符和函数
例如,学生表中存在一个 birth 字段,这个字段表示学生的出生年份。如果想得到这个学生的实际年龄,可以使用 MySQL 中的算术运算符用当前的年份减学生出生的年份,求出的结果就是这个学生的实际年龄了。
2024-05-31 19:26:07
1900
《数字信号处理1》学习笔记-思维导图
2023-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅