- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 C++17和C++20引入的新特性
总的来说,C++17是扩充了语言的灵活度,长得越来越像python了。C++20更为革命性的特征是协程、概念、模块等,出于性能和安全做了优化。
2025-03-23 15:55:21
501
原创 详解智能指针(附伪代码分析)
智能指针是C++11引入用于解决内存泄漏的情况,因为经常使用裸指针常在河边走,必然要湿鞋。但是需要注意的是智能指针和线程安全完全是两个事情。
2025-03-22 17:40:44
307
原创 brpc中的doublyBufferedData解析
双buffer是一个工程中常见的解决读写问题的结构。指的是读只读buff,写操作发生在写buff上。当写buff写完之后switch两个buff,然后写进程擦除原来的读数据,更新为最新的数据。
2025-03-14 17:16:20
699
1
原创 嵌套类(nested class)的使用和避坑
嵌套类的定义一般长这样public:class Wrapper{ //类内定义嵌套类public:int a = 1;Wrapper w;// 创建 Wrapper 实例w.func1();当然也支持类内声明,类外定义class MyData { // 避免与 std::data 冲突public:// 嵌套类声明// 在类外定义 MyData::funcWrapper w;// 创建 Wrapper 实例w.func1();// 现在 func1() 是 public,能够访问。
2025-03-14 15:30:59
216
原创 记录一些面试遇到的问题
那如果有一个需求,首先满足Derived类继承了Base,同时有自己的show函数(参数列表和Base不一样,因此单纯的override是不行的),可以在Derived类里添加一句。运行时多态指的是在运行的时候才知道要调用哪一个函数,编译时多态是指在编译的时候就知道调用哪一个函数。因为在C++ 规定,如果子类定义了与基类同名的函数,则基类中的所有同名函数都会被隐藏(代码是不会通过检查的,因为父类指针可以调用子类的函数,但前提是。可以使得父类指针调用子类函数,当然子类指针也可以调用父类函数。
2025-03-06 19:40:43
884
原创 c++里左值和右值
首先,左值 ≠ 等式左边的值,右值 ≠ 等式右边的值,更为贴切的是,左值在内存中有属于自己的地址,可以被修改,而右值并没有。int a = 5;//在这里a是左值,5是右值//s1 + s2是右值,s1 s2 s3都是左值因此看起来,移动构造主要是实现了一个浅拷贝,然后将原来的对象给置为nullptr。当然这并不仅仅如此,还能体现所有权。
2025-03-05 21:53:21
647
原创 cpp重写堆的比较函数
在小根堆重写>时,要注意到x>y会导致y先出堆。在大根堆重写<时,x<y时会让y先出堆。总的来说,只需要严格地按照优先级书写<或者>,大根堆或者小根堆的性质已经由greater和less界定好了。
2025-02-28 18:43:02
317
原创 系统性能优化——绑核
绑核正如其名,将线程/进程绑定在一个或多个CPU核心。该技术可以使进程或线程在特定的处理器上运行,而被操作系统调度到其他处理器上。这里有两层含义。
2024-10-22 16:26:52
1095
原创 C++ vector迭代器失效
参考博文: https://blog.youkuaiyun.com/m0_61982936/article/details/132548446此前一直没有注意到vector的失效情景,但仔细思考下发现有很多失效的坑。首先需要明确的是vector的扩容:有两个参数size:指的是vector当前元素多少capacity:指的是vector的容量,也即max_size。如果size >= capacity时就会发生扩容,拷贝元素并且释放旧空间。通常采用1.5倍扩容或者2倍扩容。
2024-10-15 23:41:46
342
原创 Oneapi应用——卷积实践
One API 是 Intel 推出的一个软件开发工具套件,旨在简化和加速跨多个硬件加速器的高性能计算和数据处理应用程序的开发。该套件支持包括 CPU、GPU、FPGA 等多种硬件平台。One API 提供了支持 Intel 处理器、图形处理器(GPU)和可编程逻辑器件(FPGA)的 API,使开发者能够更轻松地利用各种硬件加速器的性能。One API 的目标是提供一个统一的编程模型,使开发人员能够以相似的方式开发和优化应用程序,而无需为不同的硬件平台编写不同的代码。
2023-12-02 00:09:03
378
原创 Oneapi应用——矩阵相乘实践
One API 是 Intel 推出的一个软件开发工具套件,旨在简化和加速跨多个硬件加速器的高性能计算和数据处理应用程序的开发。该套件支持包括 CPU、GPU、FPGA 等多种硬件平台。One API 提供了支持 Intel 处理器、图形处理器(GPU)和可编程逻辑器件(FPGA)的 API,使开发者能够更轻松地利用各种硬件加速器的性能。One API 的目标是提供一个统一的编程模型,使开发人员能够以相似的方式开发和优化应用程序,而无需为不同的硬件平台编写不同的代码。
2023-12-01 23:54:35
169
原创 Oneapi应用——并行排序实践
One API 是 Intel 推出的一个软件开发工具套件,旨在简化和加速跨多个硬件加速器的高性能计算和数据处理应用程序的开发。该套件支持包括 CPU、GPU、FPGA 等多种硬件平台。One API 提供了支持 Intel 处理器、图形处理器(GPU)和可编程逻辑器件(FPGA)的 API,使开发者能够更轻松地利用各种硬件加速器的性能。One API 的目标是提供一个统一的编程模型,使开发人员能够以相似的方式开发和优化应用程序,而无需为不同的硬件平台编写不同的代码。
2023-12-01 23:45:38
278
原创 解决头文件互相包含的情况
尽量少在.h文件中进行include,除非是实在避免不了(有一些继承等关系在)。我们如果只是使用它的一些方法就只需要在.cpp文件中include即可。比如说A需要include B,B需要include C,C还需要include A,这样形成环状必然会导致编译器报错。在这里声明我们要用A,而A的头文件我们反正在其他地方已经include了。这样的话是可以通过编译的。这是用来解决重复包含的问题,和上文提到的循环包含有所不同。在环的最后一处进行声明而不是include。在头文件开始时可以使用。
2023-08-15 14:49:36
1027
原创 c++在头文件中定义变量引起的重复定义
以前有很多博客讲过,大家可以把全局变量定义在某个头文件中,使用的时候直接include就好。但是我此前并未实践过,如今第一次实践就发现不对劲。
2023-08-15 14:47:09
1537
原创 Cmakelist写法
这里的可执行文件名称同本节“生成可执行文件”中的设置,存储库路径的变量则是在find_library中的var。,这样cmake运行生成的文件就只会呆在build目录下(这其实是默认在哪执行cmake就将所运行生成的文件放在哪里,好像是可以自己重新定义生成位置,不过我懒得找了)不过在我们平时写代码时似乎没有太大的影响,观察了很多代码,大家习惯将自己写的头文件使用带引号形式,在使用标准库时使用尖括号形式。name指定待查找的库名称,可以使用全称如libxxx.a,也可以不带前缀和后缀,直接是xxx。
2023-07-21 15:39:16
558
原创 本地上传文件至远程仓库的指定文件夹下
参考了众多博文,还是没有发现比较靠谱的,统一给出的解决方法都是先git clone整个仓库,然后进仓库里面修改,最后提交整个仓库。如果采用强行推送,只能推到仓库顶层,自己要进行merge。感觉不太方便。...
2022-05-15 15:20:30
256
原创 图像处理与压缩
先挖个坑,记录一些知识,最后再抽空整理一下图像高频信号与低频根据研究表明,人眼对高频信号更加敏感,这个地方的高频指的是变化抖动大,比如说明暗分界线,而不是指亮度高。因此我们在对图像进行处理时要注意对高频信号的处理,尽可能保护细节。但是图片的格式是以RGB(为例)的像素块组成,要想转换成频率相关,只能使用傅里叶变换或者拉普拉斯变换。(傅里叶变换是轻量级的拉普拉斯变换)图像的压缩方法JPEG的压缩方法...
2022-01-26 11:42:01
2546
原创 浅谈NP、P、NPC、NP-hard问题
首先强烈推荐阅读此篇文章,例子恰如其分,思路清晰明了。http://www.matrix67.com/blog/archives/105 http://blog.youkuaiyun.com/dongwq/article/details/4305435P问题:可以在多项式时间内解决的问题。但是需要注意此处的多项式时间是针对输入规模而言,对比例子如下:例子1: n个数字的排序,此时输入是n个数字,时间复杂度是O(nlogn),可以在多项式时间内解决例子2:0-1背包问题,输入是n个物品的价值和重量、背包最大承受
2021-12-27 23:49:11
1746
原创 操作系统算法总结(作业分配和页面替换)
OS算法总结1. 分区分配操作(为作业分配寻找空白块)文章目录OS算法总结1. 分区分配操作(为作业分配寻找空白块)1.1 首次适应算法1.2 下次适应算法1.3 最佳适应算法1.4 最坏适应算法1.5 快速适应算法1.6 伙伴系统2. 页面置换策略2.1 最优置换2.2 先进先出2.3 改进版先进先出 second chance2.4 改进版second chance- clock(NRU)2.5 最近最少使用(LRU)2.6 老化算法(AGING)1.1 首次适应算法首次适应算法(First
2021-05-05 17:19:27
499
原创 PV操作详解(附详细例题解析和总结)
PV操作详解写在前面:本文主要讲解PV操作与信息量结合,实现进程的同步与互斥文章目录PV操作详解1. PV操作定义2. 信号量的应用3. 经典问题分析3.1 课上例题3.2 课下习题分析4. 补充1. PV操作定义信号量是一类特殊的变量,程序对其访问都是原子 操作,且只允许对它进行P(信号变量)和V(信号变量) 操作。• 二元信号量:取值仅为“0”或“1”,主要用作实现互斥;• 一般信号量:初值为可用物理资源的总数,用于进程间的协作同步问题一个信号量可能被初始化为一个非负整数.semWa
2021-05-04 17:06:01
83278
17
原创 页目录项自映射分析与解题
自映射分析与解题自映射的分析原理图 (未产生自映射的版本) (产生了自映射的版本)注意: 自映射的基本条件为:页表项的数目(页表块/页表项大小)== 物理块个数(物理内存/物理块大小)。同时还得保证页表连续存储,如果采用非自映射的多级页表机制,那么不必要求页表存储连续,在一定程度上比自映射更具有灵活性。自映射的解题解析:页表基址: 4M对齐这要求很合理
2021-05-04 10:45:56
1296
BUAA-P3课下(实现课下要求6条指令+J指令)
2020-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人