自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT面经(含相关知识)

第五个参数是连接类型(Qt::ConnectionType),用于指定信号与槽之间的连接方式,决定槽函数被调用的时机和线程环境。该参数主要用于控制信号发出后槽函数的执行方式,:表示立即在信号发送线程中执行槽函数;表示将槽函数调用延迟到事件循环中执行,常用于跨线程通信,确保线程安全;为默认值,程序会根据信号和槽所处线程自动选择上述两种方式之一。正确使用该参数对多线程应用的稳定性和性能至关重要。好的,我来帮你整理 Qt 信号和槽机制的优点,保持面试可用的简洁+分点形式:QSqlDatabase::transac

2025-09-04 16:24:20 921

原创 LINUX操作系统面经

Linux操作系统面经摘要 进程、线程、协程 进程是资源分配单位,线程是CPU调度单位,协程是用户态轻量级线程。 进程切换开销大,线程共享进程资源,协程切换完全由用户控制。 进程与线程模型 进程隔离性好,线程适合高并发但需同步。 多线程用于Web服务器,多进程用于浏览器等稳定性要求高的场景。 内存管理 内存池减少频繁分配/释放的开销,避免碎片。 虚拟内存扩展地址空间,但需注意堆/栈溢出问题。 进程通信 Linux下进程间通信方式包括管道、消息队列、共享内存、信号、信号量和套接字。 分段与分页 分段按逻辑划分

2025-09-04 16:23:17 1335

原创 2025 史上最全计算机网络面经

计算机网络核心知识点摘要 本文涵盖计算机网络面试高频考点,包括: 网络分层模型:详细解析OSI七层和TCP/IP五层模型,各层功能及典型协议 HTTP协议:完整请求过程、长短连接、缓存机制、请求方法差异、状态码分类 TCP/UDP对比:三次握手/四次挥手、流量控制、拥塞控制算法、粘包问题解决方案 安全机制:HTTPS工作流程、SSL/TLS加密原理、XSS/CSRF攻击防范措施 DNS解析:查询过程、负载均衡策略、UDP/TCP协议选择原因 会话管理:Cookie/Session工作原理及适用场景对比 性能

2025-08-29 12:24:18 1001

原创 509.斐波那契数

递归写法最直观,但会有大量重复计算,因此引入。用动态规划的思想,自底向上迭代计算,避免递归。记录结果,避免重复。

2025-08-21 18:22:09 268

原创 2025 C++ 面试高频考点精讲:史上最全八股文整理

2025年C++面试高频考点精讲摘要: 本文系统整理了C++面试核心知识点,涵盖八大核心模块: 面向对象特性:深入解析封装、继承、多态的实现原理及虚函数机制 内存管理:智能指针实现原理、malloc分配机制、内存泄漏防范 现代C++特性:右值引用、移动语义、完美转发等新特性的底层实现 并发编程:线程同步、死锁处理、原子操作等关键技术 STL容器:vector/list/map等容器实现原理及性能对比 类型系统:类型转换、内存对齐、空类大小等关键概念 编译链接:程序运行步骤、静态/动态链接区别 设计模式:回调

2025-08-21 18:06:11 1709

原创 543.二叉树的直径

如果递归返回直径而不是深度,父节点就无法正确计算自己的直径。父节点的直径需要通过。

2025-08-12 22:03:48 457

原创 144.二叉树的前序遍历

需要借助额外的成员变量(全局变量)保存状态,函数的“纯粹性”降低。这道题的核心思路就是利用递归遍历的性质来依次收集节点值。要求先访问根节点,再递归访问左子树,最后访问右子树。:逻辑直观,直接利用递归函数的返回值构建结果。:只维护一个数组,避免频繁拼接,效率更高。二叉树的遍历可以用递归法来实现,为节点数,所有节点访问一次。会有额外的时间和空间开销。定义一个全局(或成员变量)

2025-08-08 16:04:24 390

原创 104.二叉树的最大深度

【代码】104.二叉树的最大深度。

2025-08-08 11:57:41 272

原创 3.无重复字符的最长子串

【代码】3.无重复字符的最长子串。

2025-07-30 16:59:16 299

原创 438.找到字符串中所有字母异位词

p.size()s。

2025-07-30 16:30:10 294

原创 567.字符串的排列

使用固定长度的滑动窗口,窗口大小为。,说明找到了一个合法的排列,返回。遍历完整个字符串都没有找到,返回。当窗口中满足字符数量与。

2025-07-30 16:27:31 208

原创 76.最小覆盖子串

每个字符最多进窗口一次、出窗口一次,因此整体为线性时间。这是滑动窗口的经典题型,我们的目标是在字符串。变量表示当前窗口中满足要求的字符种类数。在每次窗口满足条件时尝试更新最短子串长度。两个哈希表用于存储字符频率。的全部字符(包括数量)。

2025-07-29 21:37:56 381

原创 83.删除排序链表中的重复元素

避免保留多余的重复节点。最后确保链表的末尾指向。

2025-07-27 16:48:55 242

原创 26.删除有序数组中的重复项

使每个元素只出现一次,并返回去重后数组的长度。,这给我们用双指针法提供了便利。(即允许重复、但有序)的数组。

2025-07-27 16:22:53 474

原创 142.环形链表 II

【代码】142.环形链表 II。

2025-07-18 21:24:20 342

原创 876. 链表的中间节点

我们不能直接随机访问链表中间节点(不像数组可以通过下标定位),所以要使用遍历技巧。只使用了两个指针变量,空间非常节省。恰好指向链表的中间节点。

2025-07-17 20:41:43 261

原创 19.删除链表的倒数第 N 个结点

给定一个单链表,删除链表的n,并返回链表的头节点。

2025-07-17 16:02:39 270

原创 23.合并 K 个升序链表

priority_queue<类型, 容器类型, 比较函数>表示这是一个小顶堆,值小的节点优先出队。

2025-07-17 12:21:04 610

原创 86.分隔链表

遍历原链表,将节点按条件加入到两个新链表中,最后将这两个链表拼接起来,构成所需结果。

2025-07-11 12:12:10 328

原创 Shell的运行原理

Shell作为Linux系统的交互核心,通过进程隔离和命令解析保障了系统的稳定性与安全性。权限管理则通过用户角色、文件权限、默认掩码等机制,构建了灵活的多层级访问控制体系。从基础的su切换到精细化的sudo配置,再到目录粘滞位的应用,Linux权限体系在保障安全的同时兼顾了协作效率,体现了其在服务器领域的设计优势。

2025-07-04 13:13:02 971

原创 21.合并两个有序链表

创建一个值为 -1 的哨兵节点 l3,它不会出现在最终结果中,但能让我们避免特判空链表或头节点的问题。每次比较两个链表当前节点的值,将较小的那个接到新链表末尾,然后向前移动对应链表指针。当其中一个链表遍历完后,另一个链表中剩下的节点一定是升序的,直接接在新链表后即可。l3.next 即为合并后链表的实际头节点。

2025-07-01 20:58:54 214

原创 Reactor模式

Reactor(反应堆)模式,也称为分发者模式或通知者模式,是一种将就绪事件派发给对应服务处理程序的事件设计模式。该模式通过事件分发机制,将I/O事件的就绪状态通知到对应的业务处理程序,实现了事件监听与事件处理的高效解耦。在Linux系统中,Reactor模式通常与epoll事件驱动模型相结合,形成百万级并发处理能力的底层架构。

2025-07-01 09:30:58 975

原创 Linux常见的31种信号量

Linux系统中的信号(Signal)是一种进程间通信机制,用于通知进程发生了特定事件。信号可以由内核、其他进程或自身触发,其本质是向目标进程发送一个异步通知。在Linux信号机制中,

2025-07-01 08:54:17 1012

原创 Linux信号量

说到信号量,可能有些同学会联想到红绿灯系统——这其实是个绝妙的类比!POSIX信号量就像操作系统里的交通警察,专门管理并发执行流对共享资源的访问。它不仅能解决互斥问题,还能实现更细粒度的资源调度。和传统的System V信号量相比,POSIX信号量更轻量级,特别适合线程间的同步。比如我们常见的抢票系统、生产者消费者模型,都离不开它的身影。不过要注意,虽然名字里带着"POSIX"这个前缀,但它的底层实现不是简单的计数器操作,而是涉及到原子操作和等待队列的复杂机制。扩展思考。

2025-06-30 22:09:40 1155

原创 Linux线程池

任务类型的设计是线程池实现中的重要环节。通过模板化设计,线程池可以支持多种任务类型,而通过统一的Run()接口,所有任务都可以被线程池正确执行。无论是计算任务、网络任务还是日志任务,都可以通过实现Run()方法来适配线程池。这种设计模式不仅提高了线程池的灵活性,还使得任务的管理和执行更加统一和高效。线程池作为多线程编程中的重要工具,极大地提升了任务处理的效率和资源利用率。通过预先创建并维护一组线程,线程池避免了频繁创建和销毁线程带来的开销,使得任务能够快速响应并高效执行。

2025-06-21 15:37:34 796

原创 线程安全基础

可重入和线程安全是多线程编程中的两个重要概念。可重入函数关注的是函数在重入调用时的行为,而线程安全关注的是多个线程并发执行时的行为。虽然可重入函数通常是线程安全的,但线程安全函数不一定意味着可重入。理解它们的联系和区别,有助于开发者编写更加健壮的并发程序。

2025-06-10 09:47:32 1267

原创 生产者消费者模型

生产者消费者模型是一种经典的多线程设计模式,通过共享容器解耦生产者和消费者的直接联系。该模型具有三个核心特点:生产者和生产者、消费者和消费者之间的互斥关系,以及生产者和消费者之间的同步关系。其优势体现在解耦能力、支持并发处理以及平衡忙闲不均的能力。基于阻塞队列的实现尤为常见,阻塞队列通过互斥锁和条件变量确保线程安全,当队列满或空时会自动阻塞相应线程。文章还详细介绍了如何模拟实现基于阻塞队列的生产消费模型,包括队列实现、生产者和消费者线程的逻辑设计。该模型为多线程编程提供了高效可靠的解决方案,广泛应用于各类并

2025-06-10 09:33:57 743

原创 12.找到字符串中所有字母异位词

解法原理时间复杂度空间复杂度特点解法一滑动窗口 + 频次比较O(n)O(1)简洁直观解法二差值滑动窗口O(n)O(1)更快的收缩。

2025-06-09 22:13:26 770

原创 Linux进程控制详解02

进程创建1.1 fork函数初识1.2 fork函数返回值1.3 写时拷贝1.4 fork常规用法1.5 fork调用失败的原因进程终止2.1 进程退出场景2.2 进程退出码2.3 进程正常退出2.3.1 return退出2.3.2 exit函数2.3.3 _exit函数2.3.4 return、exit和_exit之间的区别与联系2.4 进程异常退出进程等待3.1 进程等待的必要性3.2 获取子进程status3.3 进程等待的方法3.3.1 wait方法3.3.2 w

2025-06-09 10:44:14 1030

原创 进程间通信

管道是 Unix 系统中最古老的进程间通信方式之一,它的核心思想是通过一个数据流连接两个进程,使得一个进程的输出可以直接作为另一个进程的输入。在 Linux 系统中,管道被广泛用于进程间的数据传输,尤其是在命令行环境中,管道经常被用来组合多个命令,实现数据的连续处理。例如,考虑一个简单的场景:统计当前登录到系统的用户数量。我们可以使用who命令列出所有登录用户,然后通过管道将输出传递给wc -l命令来统计行数。在这个例子中,who命令的输出并不会直接显示在终端上,而是通过管道传递给wc -l命令进行处理。

2025-06-09 10:12:52 927

原创 11.无重复字符的最长子串

利用哈希表直接记录每个字符“上一次出现的位置”,当发现重复时,快速跳过整个区间,无需一个个删除。)内的字符,当遇到重复时不断收缩左边界。:用一个集合维护当前窗口(

2025-06-07 20:03:58 258

原创 10.接雨水

解法时间复杂度空间复杂度是否推荐特点双指针O(n)O(1)✅ 最推荐思路直观、代码简洁动态规划O(n)O(n)✅ 推荐易理解、适合初学单调栈O(n)O(n)✅ 拓展适合强化数据结构理解。

2025-06-07 15:08:23 523

原创 14.MySQL使用C语言连接

在与MySQL数据库交互时,假设我们有一个名为的数据库,其中包含一个user表。表中有三条记录,分别是用户的信息。

2025-06-07 13:33:50 753

原创 09.三数之和

解法方法是否排序是否推荐时间复杂度空间复杂度重复处理解法一排序 + 双指针是✅推荐O(n²)O(1)精准跳过重复解法二枚举 + 哈希表是补充理解用O(n²)O(n)set自动去重。

2025-06-06 20:01:54 408

原创 13.MySQL用户管理

需要注意的是,授予权限时应遵循最小权限原则,即只授予用户完成任务所需的最低权限,以降低潜在的安全风险。同时,授予权限后,建议定期检查用户的权限设置,确保其仍然符合业务需求。当用户的权限不再需要时,及时回收权限可以有效降低安全风险,防止未经授权的操作发生。需要注意的是,修改密码时应确保新密码符合MySQL的密码策略要求,以避免因密码过于简单而导致的错误。因此,在创建用户后,必须为其授予相应的权限,以便用户能够执行所需的操作。此外,MySQL中允许存在同名的用户,只要这些用户的登录主机不同即可。

2025-06-06 14:56:30 1143

原创 08.盛最多水的容器

解法时间复杂度是否超时适用场景暴力枚举法O(n^2)❌ 有可能超时理解基本逻辑、打基础双指针法O(n)✅ 高效推荐用于提交。

2025-06-06 14:47:47 465

原创 07.移动零

方法时间复杂度空间复杂度是否推荐说明快慢指针法O(n)O(1)✅ 推荐简洁高效,原地操作erase法O(n²)O(1)❌ 不推荐写法直观但效率差。

2025-06-06 13:21:44 388

原创 06.最长连续序列

用存储所有数字,查找某个数是否存在的时间是 O(1)。遍历每个数字x只从 x 是“连续序列起点”时才开始向右找也就是说,只有当x - 1不在集合中时,才从x开始数连续的。从x开始,不断检查是否存在,一直到找不到为止。每次记录最长的连续长度。优点说明✅ 高效时间复杂度 O(n),比排序更快✅ 简洁逻辑清晰,代码结构简单✅ 无重复计算通过“只从起点开始”的策略避免重复统计把所有数字丢进集合,只从那些“没有左邻居”的数出发,一路数右边的连续数,记录最长的长度!

2025-06-05 17:00:58 641

原创 12.MySQL视图特性

这时候,视图就能派上用场了。这是因为在视图中,我们实际上是通过员工表和部门表的连接来获取部门名称的,而部门名称来自部门表。换句话说,视图就像是一个预先定义好的查询结果集,它看起来像一张表,但背后的数据来源其实是其他真实的表,这些表我们称之为“基表”。这个时候,如果你的视图是基于员工表和部门表的连接查询,那么这名新员工可能就不会出现在视图中,因为他所在的部门不存在于部门表中。另外,如果你有多个视图,而且它们之间存在依赖关系(比如一个视图是基于另一个视图创建的),那么在删除父视图时,子视图可能会受到影响。

2025-06-05 15:17:44 1081

原创 11.MySQL事务管理详解

隔离级别性能安全性适用场景读未提交高低无需准确性,如统计分析读已提交中高中一般业务,如订单查询可重复读中高核心业务,如银行交易串行化低最高极端场景,如库存扣减选择时需权衡性能与安全性,大多数场景推荐使用可重复读。

2025-06-05 15:12:57 608

网络计算器源码,包含多个文件

网络计算器源码,包含多个文件

2025-03-11

tcpserver代码

tcpserver代码

2025-03-07

空空如也

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

TA关注的人

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