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

一、学到的命令和工具

查看堆栈信息

使用-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 去存储,然后消费者去消费。

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

相关推荐
3095566661 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
蒸蒸yyyyzwd1 小时前
从邓明学习的后端笔记
笔记·学习
岑梓铭1 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
Rabitebla14 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖18 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
YLCHUP1 天前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
旖旎夜光1 天前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_969694852 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea2 天前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统