自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 树莓派4B 配置源,解决公钥问题

树莓派Raspberrypi-4B更换清华源,解决公钥问题

2024-04-08 20:31:41 511

原创 环境配置(自用)

notepad ,需要添加插件。安装包已经保存至自有网盘。

2023-11-17 21:55:42 103

原创 贪心-局部最优导致全局最优

胃口值:g[1,3,5,7,9]饼干大小:s[1,3,4,5,8]① 每颗饼干尽可能满足胃口最大的男孩(大饼干尽量满足大胃口)--遍历胃口值,每次循环中,无论是否能满足当前,都进入下次循环② 每个男孩尽可能有一个最小的饼干去满足(小饼干尽量满足小胃口)遍历小饼干,每次循环中,无论是否能使用当前小饼干,都进入下次循环。

2023-10-02 03:30:20 79

原创 卡尔曼滤波器学习

学习卡尔曼的主要目的是想做自己的毕设-跟踪图像中的直线目标。

2023-09-10 21:06:54 72

原创 动态规划学习笔记

2. 剪枝,用哈希表记录遍历过的结果,这样遇到遍历过的位置就不需要重复计算了,极大的减少了运算量。3. 重新思考计算逻辑,看是否可以用迭代的方法改写代码,这样减少了重复进入递归函数的开销。1. 用递归方法穷举所有可能性O(2^n),递归函数每次返回当前子序列的最长递增子序列。例子:找到数组nums = [1, 5, 2, 4, 3]的最长递增子序列。

2023-09-10 20:59:28 55

原创 南大操作系统课程笔记5 | 并发控制:互斥 (问题定义与假设;自旋锁;互斥锁)

当某学生 抢到了红卡时,该学生就得到了锁,并把自己的绿卡换回到桌上,而其他学生得不到红卡,就不停把手里的卡与桌上的卡进行交换;当某学生执行完临界区代码时,该学生把红卡换回桌上,归还锁,这样其他人可以获得这把锁。学生的卡是更低权限的绿卡,两位学生想要进入临界区的条件是获得这把锁;所以说,只要那个得到锁的学生没从临界区出来也就是没把红卡换回到桌上,其他人就得不到红色卡,他们就一直在交换交换交换——无效交换;根据下图可以看到,随着线程数增加1-16,效率明显减小,存在两个瓶颈,锁获取和sum的交换。

2023-05-05 13:02:14 113

原创 原子指令是什么

所有多核CPU都会提供实现原子操作的指令原子指令用于在之间维护同步关系。在一些科学计算问题中,通过并行算法把子问题分配到多个cpu上执行,但是各个子问题之间存在合作关系,因此需要硬件机制来实现多个cpu之间同步。例子:一个典型的同步例子是“原子加1”问题。一个CPU要对内存单元M中的数据加1,这个动作需要3条指令来完成:读M的值到寄存器R,对R执行加1运算,把R的值写回内存单元M。如果CPU有两个,则可能在一个CPU执行过程中,另一个CPU也执行这3条指令,最后M的结果不是增加2而是增加1。

2023-05-05 11:23:03 130

原创 字节对齐问题

在分析OculusSDK时再次遇到对齐问题,总结字节对齐问题的要点如下:1. 根据该编译系统的默认对齐字节、结构体内小元素字节数、编程人员添加的宏,来确定此结构体的对齐字节数。3. 每个元素存储位置是这个元素大小的整数倍位置4. 该结构体大小为对齐字节的整数倍5. 一字节对齐 #pragama pack(push,1)#pragama pack(pop)举例:对于下述结构体分析其占有字节数。

2023-05-05 10:33:48 55

原创 回溯算法 | 77. 组合、216. 组合总和 III

此外,我认为path,sum,是可以放在成员变量里的,不一定非要当做函数参数被一层层传递,因为我们每次其实也只是对sum,path的当前数值进行操作,并不会存在冲突问题。3,单层递归逻辑,在考虑单层时,把递归函数当成一个普通函数,思考它可以提供给我们什么结果,如何利用结果,不要一层一层把自己绕进去。2,任意一个时刻有,path.size(),我们的目标是让path.size()=k,1,首先明确,剪枝操作位于处理节点的时候,也就是for循环的位置,5,所以n-(i-1)>= k-path.size()

2023-04-23 00:49:13 54

原创 南大操作系统课程笔记4-理解并发程序执行 (Peterson算法、模型检验与软件自动化工具)

好难。。。但是状态机这个东西真的好厉害,可以很轻松的把我理不清的逻辑梳理出来;在以后的学习中多多尝试用这种思维方式从model-checker这里分析程序,就是只是一个概念上的理解了,以目前能力做肯定是做不出来的,但是或许以后能用到的时候再回看图是最易于人类理解的方式,掌握绘图技能很重要,掌握从不同种逻辑的角度绘图。

2023-04-19 12:42:38 122

原创 Visual Studio远程连接 linux 并调用pthread库进行开发

因为pthread_rwlock_t属于GNU extension,所以单独定义-std=cxx就会把GNU extension禁用,造成pthread_rwlock_t未定义的问题。因为pthread_rwlock_t属于GNU extension,所以单独定义-std=cxx就会把GNU extension禁用,造成pthread_rwlock_t未定义的问题。问题一: pthread_rwlock_t未定义。

2023-04-15 16:00:17 526

原创 全局、局部、静态变量,常量

思考当我们更换变量类型时,会发生什么变化?

2023-04-15 15:55:10 49

原创 记一次malloc失败的经历

分析认为,函数时在编译的时候存储在代码区的,所以可以顺利执行;而运行过程中在堆区动态分配空间就做不到了,因为这个OsBufferEntry都没有实例化,它的成员又如何分配空间呢?后来发现很离谱,是这个类OsBufferEntry没有实例化,采用指针的方式调用processraw函数时,函数是可以顺利执行的,但是其内部的成员变量就没办法分配了。在类OsBufferEntry的成员函数中,为其成员变量m_SimplePingResult分配空间,结果报错了,百思不得其解。掌握操作系统基础很重要。

2023-04-15 15:46:49 163

原创 手写一个线程池(C语言)

学习消费者和生产者模型- 体验锁、条件变量在线程同步中的作用线程池是什么?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件), 则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。

2023-04-12 13:15:46 94

原创 Qt中的UI文件是如何与用户创建的窗口对象联结的?

那么,当我们在mymainwindow.cpp中实例化这个界面类ui指针,ui = new Ui::MyMainWindow,再执行setupUi(this)之后,this是当前窗口对象,就可以建立起ui文件和我们创建的窗口对象的联系了。我创建了一个名为HelloQt的界面应用程序,其中qt帮我生成了三个最重要的基础的文件,mymainwindow.h, mymainwindow.c, mymainwindow.ui;ui文件的本质是xml文件,qtcreator内含工具可以把ui文件翻译成xml文件;

2023-04-12 13:07:25 328

原创 二叉树(三) | 104. 二叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数

可以采用后序递归遍历的方法。后序遍历可以持续的把左右孩子的信息返回给父节点,但求最小深度这题需要进行一些特殊情况的判断,这样可以规避掉左节点或者右节点为空的情况,因为本题题意是求最近的叶子节点。可以用朴实的层序遍历:一层一层的去读节点,当队列为空时说明是最底层了,也就找到了最大深度;而最小深度是要在读入左右子节点的时候判断一下,如果左右节点都是空,就说明找到了最小深度。注意二叉树某节点的高度和深度的定义,上面两道题本质是在求根节点的高度。方法一 当成普通二叉树去处理,遍历所有的节点,用层序和后序迭代可以。

2023-01-28 19:46:22 61

原创 二叉树 | 层序遍历、翻转二叉树、对称二叉树判断

102. 二叉树的层序遍历用一个队列去一层一层的存入数据,每pop一个节点的时候都把这个节点下面的孩子读到队列里,由此实现一层一层的存入数据。用size去记录每层的个数,以区分哪几个元素是一层的,便于读入二维的result数组中类似的题目代码随想录中给出了十道,详见提交记录多加练习,很有趣226. 翻转二叉树递归和迭代(用栈模拟)都能实现注意一定要是前序遍历或者后序遍历101. 对称二叉树用递归实现的,对递归有一点感觉了,

2023-01-25 23:14:16 55

原创 栈和队列(三)| 239. 滑动窗口最大值、347. 前 K 个高频元素

高频元素,所以没必要对所有的map成员进行排序,只需要维护前k个成员即可,这时候用小顶堆很好,而优先级队列priority_queue就是基于小顶堆实现的,小顶堆也是一种二叉树。卡哥采用了自己定义单调栈的方法,实现在滑动窗口移动的pop和push过程中就对栈内元素进行维护,使得栈首永远保存窗口最大值。该栈的实现基于deque,因为它也是queue的底层,而且可以方便地对首端尾端进行删除和填入的操作,便于DIY。pop时,栈首若等于value,就被pop掉,否则不需要操作,因为已经在push时被卷走了。

2023-01-17 04:48:02 90

原创 栈和队列(二)| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

所以先判断是数字还是运算符,如果是运算符,就存下栈顶的两个数,再判断是哪种运算符进行运算。本题巧妙解法在于,读到左括号时,存右括号。1047. 删除字符串中的所有相邻重复项。记得把栈里的字符取出来,而且要翻转一下。两类数据:运算符和数字,运算符分四种。字符串未遍历完,而栈已经空。150. 逆波兰表达式求值。注意除法和减法是谁减谁。字符串遍历完,栈还有。当前字符与栈顶不匹配。

2023-01-15 23:40:17 60

原创 栈和队列(一) | 232. 用栈实现队列、225. 用队列实现栈

232. 用栈实现队列、225. 用队列实现栈

2023-01-15 21:57:37 59

原创 字符串(二) | 28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串

字符串2 | 28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串

2023-01-15 01:09:53 73

原创 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词

剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词

2023-01-11 14:05:10 65

原创 求和系列 | 1. 两数之和、454. 四数相加 II、15. 三数之和、18. 四数之和

1. 两数之和、454. 四数相加 II、15. 三数之和、18. 四数之和

2023-01-09 17:54:00 72

原创 day 6 | 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

2023-01-05 23:26:04 62

原创 day4 | 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II

24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II

2023-01-05 19:46:09 54

原创 day3 | 203. 移除链表元素、707. 设计链表、206. 反转链表

day3 | 203. 移除链表元素、707. 设计链表、206. 反转链表

2023-01-04 17:54:34 151

原创 day2 | 977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵 II

977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵 II

2022-12-29 18:58:48 1127

原创 day1 | 704. 二分查找、27. 移除元素。

704. 二分查找、27. 移除元素。

2022-12-29 11:09:11 78 1

空空如也

空空如也

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

TA关注的人

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