工具、力扣、中间件学习笔记

一、学到的命令和工具

查看堆栈信息

使用-g 编译打开调试信息,gdb ./main ./core 查看 core dump,bt,具体堆栈信息查看。

frame 是切换栈帧,info locals 查看局部变量,p 是查看某一个具体的。

查 cpu 使用率

top 查看全部进程的情况,top-H-p 进程号查看进程的线程 cpu 使用情况,perf 工具定位到函数

二、算法

主要是和链表相关的题目,包括链表的翻转的三个(直接翻转,从 left 到 right 和 k 个一组)

链表一般都是需要加一个 dummy 在头部记录开始位置,这是一个技巧,另外就是 k 个一组的解法可以使用 left right 这个扩展去写。

第二种是链表合并,两个链表合并就是直接循环就可以,是归并的思想,多个链表合并,可以两两合并,采取分治的思想,也可以逐个的两个两个结合,也可以用最常用的,优先队列。

拓展一下,因为我使用的是 cpp

priority_queue〈ListNode*,vector 〈ListNode*〉,decltype (cmp )〉pq(cmq );.这里的 cmp 我是写的 lamBda 表达式

auto cmp= \[\](ListNode*a,ListNode*b){return a-〉val〉b-〉val;};

通过这件事可以看出来,因为 pq 要求第三个参数是仿函数,所以 cmp 本质上是通过方函数类实现的。

这个在之前面试的时候被问过,是否知道 lambda 是怎么实现的,当时猜测就是通过仿函数实现的。

第三个是双指针类题,这种也是链表题常见的解法,常见于判断是否有环,删除倒数第 N 个节点。

三、中间件相关知识

因为之前面试有被问过是否了解 kafka,当时是听过但是具体是干嘛的不清楚,被问过两三次是否知道消息队列,后来知道消息队列可以处理高并发问题,可以作为进程间通信的方式。

kafka,是一种分布式流平台,主要作用包括异步处理、解耦、削峰,对于消费者来不及处理的可以暂存在队列,对于同步操作生产者处理,异步操作可以交给消费者来解耦,kafka 使用 topic 和 partition 去存储,然后消费者去消费。

写到这里就回顾一下进程间通信方式吧(主要是六个),套接字,共享内存,管道,消息队列,信号量和信号,其中共享内存是很高效的但是要自己去做同步,管道包括匿名管道和非匿名管道,匿名管道只能在有血缘关系的进程间通信,父子进程通信。

相关推荐
深圳老胡1 小时前
液面探测功能的硬件方案对比:原理、优缺点与选型建议
笔记·单片机
凉、介1 小时前
深入理解 ARMv7-M|处理器模式与寄存器
笔记·学习·嵌入式·arm
蒸蒸yyyyzwd1 小时前
三个场景题-秋招学习笔记 day86
笔记·八股
沉淀的.晴天3 小时前
ESP32S3笔记
笔记
ss2733 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 28 PostgreSQL MVCC机制介绍
数据库·笔记·postgresql
lll23526917797 小时前
2026行业语音转写工具专业术语转写功能横向分析
笔记·智能手机
解决小子16 小时前
【虚幻引擎】【C++】【GAS框架】构建角色基类、属性集、数值钳制
c++·笔记·游戏引擎·虚幻·gas·能力系统
破芽17 小时前
learn-claude-code-s05-s11-学习笔记
笔记·学习
程序猿乐锅19 小时前
【从0-1学习Python | 第七篇】Python 面向对象基础
开发语言·笔记·后端·python·学习·1024程序员节