- 博客(427)
- 收藏
- 关注
原创 【面经】实习经历
本文系统梳理了技术岗位求职全流程要点。技术准备应聚焦算法(拆解问题能力)、核心技能(C++/网络协议/数据库)和项目经验,强调笔记整理与定期复习的学习方法。简历制作需个性化设计,突出技术亮点。实习选择建议优先大厂,通过参与需求开发熟悉工程流程。面试环节需注重八股文理解转化、项目深度复盘及算法题的系统训练。作者结合亲身实习经历指出:算法思维在实际工作中的迁移价值远超预期,而持续的技术沉淀与结构化学习能力才是应对职场挑战的核心竞争力。
2025-07-21 20:57:35
723
原创 【CPP】unique_ptr将删除器作为类型一部分实现高效性 共享指针为什么不这样做?
同一类型的智能指针对象可能需要不同的删除器,主要适用于以下场景:1)资源来源不同导致释放方式不同(如堆内存与静态内存);2)第三方库资源管理差异;3)生命周期需要特殊控制(如GUI线程安全销毁);4)资源池复用场景;5)条件性删除需求(如调试模式下记录释放)。这些场景下,shared_ptr通过将删除器存储在控制块中而非类型本身,实现了运行时灵活性和内存布局一致性,同时支持共享所有权机制。与unique_ptr不同,shared_ptr的设计允许同类型对象使用不同删除器,并保持接口统一,这是其核心优势所在。
2025-07-18 12:01:57
626
原创 【深入C++】std::move 空基类优化智能指针 vector<bool>
C++ 中,std::move并非移动资源,而是将左值转为右值引用,实现资源所有权高效转移,避免冗余拷贝,但需注意被移对象状态。空基类优化可将空基类作为基类时内存占用优化为 0,节省空间,需满足无虚函数等条件。unique_ptr借移动语义实现独占所有权,其删除器编译期绑定;shared_ptr删除器运行期绑定,各有适用场景。引用可与智能指针结合,临时访问资源不影响生命周期。vector<bool>是偏特化实现,以位存储省空间,但返回代理对象,不属真正标准容器,有兼容性和性能问题,可替换为vecto
2025-07-17 16:12:51
654
原创 【高并发服务器】多路复用的总结 eventfd timerfd
本文对比了三种I/O多路复用技术:select、poll和epoll。select通过fd_set监听文件描述符,但存在拷贝开销和数量限制;poll使用结构体数组改进,但仍需遍历所有fd。epoll采用红黑树和就绪队列实现高效事件管理,通过回调机制避免遍历,性能最优。实际应用中,epoll适合高并发场景,select/poll适用于简单需求。每种技术各有优缺点,选择需根据具体场景权衡。
2025-07-15 16:03:51
1154
原创 【经典面经】C++新特性 TCP完整收发数据 TLS1.2 TLS1.3
本文包含三部分内容:1) C++新特性总结,列举了C++11到20的主要新增功能;2) TCP协议保证数据完整性的7大机制,包括连接管理、序号确认、校验重传等;3) 判断点是否在扇形内的数学推导,重点解析了距离检测和角度检测的代数化方法,并对比了极坐标法的局限性。文章通过公式推导和逻辑分析,系统性阐述了各技术要点的实现原理。
2025-07-11 17:34:30
693
原创 【计算机网络】HTTP1.0 HTTP1.1 HTTP2.0 QUIC HTTP3 究极总结
HTTP协议演进与QUIC技术解析 HTTP协议从1.0到2.0经历了显著改进:1.0版本存在无状态、短连接和队头阻塞等问题;1.1版本引入长连接和管道传输,但响应阻塞仍未解决;2.0采用二进制分帧、多路复用和头部压缩,但基于TCP仍存在传输层阻塞。QUIC协议基于UDP实现突破性创新:通过独立递增的Packet Number和Stream机制解决队头阻塞,支持0-RTT快速连接,提供流级流量控制,并整合TLS 1.3加密。测试表明QUIC在移动网络和高延迟环境中性能提升显著,成为下一代互联网传输协议的核心
2025-07-10 18:22:03
1163
原创 【HTTP服务端】Cookie?Session?Token?
摘要:Cookie与Session、Token机制对比 Cookie通过键值对存储数据,包含域名、路径、有效期和安全属性(如HttpOnly、SameSite)。Session机制改进安全性,服务器生成唯一SessionID存储用户信息,客户端携带该ID进行验证,但服务器需存储大量Session数据。Token(如JWT)采用无状态验证,由Header、Payload和签名组成,通过算法验证合法性,避免服务器存储负担,适合分布式系统。JWT包含用户信息但不存储敏感数据,需配合HTTPS和安全措施使用。三种机
2025-07-10 17:48:19
766
原创 【OS与NET】常见面经的思考
本文主要探讨TCP三次握手的设计原理与必要性。三次握手能确保双方收发能力、防止历史连接初始化、同步序列号并避免资源浪费。相比之下,二次握手可能导致服务端资源浪费。文章还分析了半连接/全连接队列满时的处理机制,以及SYN攻击的防御策略。此外,比较了协程与线程的适用场景,协程适合I/O密集型任务而线程适合计算密集型。最后讨论了TCP可靠性的范围、引入服务端的必要性,以及TCP分段与IP分片的互补关系。这些机制共同构成了可靠网络通信的基础。
2025-07-10 15:10:31
567
原创 [C++]C++20协程的原理
每个协程都有一个与之关联的 Promise 对象,它负责管理协程的生命周期和结果。Promise 对象定义了协程的一些关键行为,例如协程开始时是否挂起、协程结束时如何处理返回值等。当协程函数被调用时,它并不会马上执行函数体里的代码,而是创建一个协程帧(Coroutine Frame)。协程帧是一个数据结构,用于保存协程的状态,其中包含局部变量、函数参数以及当前执行的位置等信息。通过这种方式,C++ 协程提供了一种高效、简洁的异步编程方式,使得异步代码可以以同步的方式编写,提高了代码的可读性和可维护性。
2025-04-29 17:20:02
691
原创 【面经】兼顾频繁插入/删除和查询访问 非阻塞网络I/O模型 connect的阻塞性 `unique_ptr`的使用场景和析构机制
T value;private:public:// 实现插入、删除、查找等方法对于现代高性能网络应用,在Linux平台上epoll几乎是必然选择,特别是当需要处理成千上万的并发连接时。而select因其跨平台特性,在简单应用或需要支持多种Unix系统的场景下仍有使用价值。模型阻塞点是否需要轮询典型实现非阻塞I/O无需要I/O多路复用在select/epoll调用不需要(内核通知)信号驱动I/O无不需要异步I/O无不需要在实际开发中,
2025-04-10 18:04:43
1138
原创 【面试】封装、继承、多态的具象示例 模板编程的理解与应用场景 链表适用的场景
C++中模板编程最常见的应用场景包括STL容器和算法、通用数据结构和算法实现、类型安全接口设计、策略模式实现、编译期计算、静态多态以及类型萃取等。模板编程是C++强大表达能力的核心之一,也是现代C++编程不可或缺的部分。
2025-04-09 14:40:09
989
原创 【QT】QPixmap QImage QBitmap QPicture
都是用于处理图像数据的类,但它们有不同的特性和适用场景。根据需求选择最合适的类,可以兼顾性能和功能!
2025-04-07 17:37:16
984
原创 【HTTP/HTTPS】从浏览器输入url到你看到网页发生了什么?
服务器生成HTTP响应报文:服务器收到请求后会根据请求内容准备浏览器需要的数据,如果是普通请求,直接根据url发送对应的资源,如果是cgi请求,则会处理后台程序后将结果返回,并生成对应的HTTP响应报文。发送HTTP请求报文:tcp握手成功后,通过tcp/ip通信协议将客户端生成的HTTP报文,发送至服务器。浏览器查找缓存:如果查找到缓存中有我们URL对应的网页信息,并且没有过期,如果有则会直接读取缓存内容,此时不会发送HTTP请求,如果没有则发送HTTP请求。https特有阶段:SSL/TLS握手。
2025-04-02 15:40:00
463
原创 【Linux】常见信号 + 进程和作业
信号是 Linux 系统中一种异步通知机制,用于通知进程某个事件的发生。每个信号都有一个唯一的编号(如SIGKILL是9)和默认行为(如终止进程、忽略或暂停进程)。信号编号默认行为常见用途SIGHUP1终止终端断开时通知进程SIGINT2终止Ctrl+C中断进程SIGQUIT3终止+core dumpCtrl+\强制终止并调试SIGKILL9终止强制杀死进程SIGTERM15终止请求进程正常退出SIGSTOP19暂停暂停进程(不可捕获)SIGCONT18继续恢复被暂停的进程。
2025-03-29 20:17:35
1090
1
原创 【CPP】协程
协程是一种特殊的函数,它可以在执行过程中暂停,并且能够在之后的某个时刻继续执行。与线程不同,协程并不会真正地“脱离”当前的线程,它只是让控制流从一个函数流转到另一个地方,然后再回来。这个过程是。
2025-03-12 19:37:23
802
原创 【CVTE】嵌入式软件开发-Linux方向{一面}
数组(Array)和链表(Linked List)是 C/C++ 中两种最基本的数据结构,各有特点和适用场景。顺序存储,O(1)随机访问。数组的大小在创建时确定,不能动态调整(除非使用 插入或删除元素时可能需要移动大量元素使用:随机访问:缓冲区;顺序遍历但不频繁增删:静态列表;定长存储的数据结构:堆,栈适用于 数据量固定且频繁访问 的情况,例如:插入/删除高效,访问低效,额外空间开销。使用:内存池:链表管理空闲内存块;动态集合:OS各种调度队列、图的邻接表;动态改变大小的:堆栈适用于 数据量不固定且需要频繁
2025-03-06 20:57:42
924
原创 【CPP面经】科大讯飞 &&腾讯后端开发面经分享
示例:我是某公司开发,参与过高并发服务器项目,遇到内存泄漏问题。用valgrind定位,优化资源释放逻辑解决。
2025-03-04 21:13:48
1878
原创 【Docker】Docker中卷的类型、区别及应用
Docker卷是Docker中用于持久化数据的重要机制,提供了多种类型的卷以满足不同的应用场景。匿名卷和命名卷适用于需要持久化数据的场景,绑定挂载适用于开发环境,临时文件系统适用于存储临时数据。理解这些卷的类型、区别及应用场景,有助于开发者更好地管理和使用Docker容器。在实际应用中,开发者应根据具体需求选择合适的卷类型,以确保数据的安全性和性能。通过合理使用Docker卷,可以大大提高容器化应用的可靠性和可维护性。
2025-02-15 09:19:51
1380
原创 【Docker】容器被停止/删除的方式及命令:全面解析与实践指南
容器的停止和删除是 Docker 日常操作中的重要环节。通过合理使用docker rm等命令,我们可以高效地管理容器的生命周期,确保资源的合理利用和环境的整洁。希望本文能为 C++ 程序员在 Docker 容器管理方面提供实用的指导和帮助。参考文献Docker 官方文档: https://docs.docker.com/Docker 容器管理最佳实践: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
2025-02-14 19:49:39
4471
原创 【Docker 】虚悬镜像:深入理解与清理实践
虚悬镜像是指那些没有标签(Tag)且没有被任何容器引用的镜像。镜像重建:当你重新构建一个镜像时,Docker 会为新的镜像分配一个新的镜像 ID,而旧的镜像 ID 就会变成虚悬镜像。删除标签:如果你手动删除了一个镜像的标签,而这个镜像没有被其他标签引用,那么它也会变成虚悬镜像。镜像分层:Docker 镜像是由多个分层组成的,当某个分层不再被任何镜像引用时,它也会变成虚悬镜像。虚悬镜像的名称通常显示为,表示它们没有标签和版本信息。
2025-02-14 15:58:08
805
原创 在AI迭代如此之快的时代下,如何做好一个C++程序员
在 AI 迭代如此之快的时代下,C++ 程序员需要不断提升自身能力,适应技术变革。通过深入掌握 C++ 语言特性、学习 AI 相关知识、关注行业动态、提升软技能以及积累项目经验,C++ 程序员可以在 AI 时代中保持竞争力,并在职业生涯中持续成长。无论是技术专家、全栈工程师还是技术管理者,持续学习和实践都是成功的关键。希望本文能为 C++ 程序员在 AI 时代的发展提供有价值的参考和指导。
2025-02-13 10:15:35
651
原创 【面试】面试常见的智力题
智力题是一种通过逻辑推理、数学计算或创造性思维来解决的问题。它们通常没有固定的解题模式,需要候选人灵活运用知识和技巧。问题描述为什么井盖通常是圆形的?解题思路从几何、物理和实用性角度分析。答案安全性:圆形井盖不会掉入井口,因为直径相等。易于搬运:圆形井盖可以滚动,便于搬运。均匀受力:圆形结构受力均匀,不易损坏。智力题是面试中常见的考察方式,旨在测试候选人的逻辑思维能力、创造性思维和应变能力。通过掌握常见的智力题类型和解题技巧,候选人可以在面试中更加自信地应对这类问题。多练习。
2025-02-11 11:54:36
1738
4
原创 【Linux】一文带你读懂Linux文件系统
什么是文件系统?答案:文件系统是操作系统用于管理存储设备上数据的一种机制。它定义了数据的存储方式、组织结构以及访问方法。文件系统的主要功能包括:管理文件和目录。控制文件的访问权限。提供数据的持久化存储。Linux 文件系统是 Linux 操作系统的核心组成部分,理解其工作原理和管理方法对于系统管理员、开发者和运维工程师来说至关重要。本文涵盖了 Linux 文件系统的各个方面,包括其结构、类型、管理工具以及性能优化等内容,希望能够帮助读者全面掌握 Linux 文件系统的知识。
2025-02-10 19:34:18
1922
8
原创 【Docker】从技术架构到容器实战{空间隔离/资源控制/LXC容器/mount}
空间隔离通过 NameSpace 机制实现了系统资源的逻辑隔离,确保不同的进程或应用运行在独立的环境中,互不干扰。通过unshare命令,可以创建新的 NameSpace,并运行进程在该 NameSpace 中。操作系统在底层通过创建新的 NameSpace、隔离资源、挂载文件系统等操作,实现了资源的隔离和管理。空间隔离是容器技术(如 Docker)的基础,它使得容器可以在独立的运行环境中运行,确保容器的安全性和资源管理的灵活性。
2025-02-10 12:39:28
1367
原创 【CPP】迭代器失效问题 static和inline
指的是在容器进行某些操作后,原先获取的迭代器不再指向有效的元素或位置。迭代器失效可能会导致未定义行为(如访问无效内存、程序崩溃等)。不同的容器在特定操作下会有不同的迭代器失效行为。理解迭代器失效的场景和规则,可以帮助你编写更安全、更健壮的C++代码。
2025-02-04 18:41:27
807
原创 【CPP】异步操作的底层原理与应用举例
非阻塞 I/O:允许程序在等待 I/O 操作完成时继续执行其他任务。事件循环:监听和分发事件,调用相应的回调函数。回调机制:处理异步操作完成后的结果。多线程与线程池:通过多线程实现并发执行。操作系统支持:提供高效的异步 I/O 机制。异步操作在网络服务器、文件读写、定时任务等场景中都有广泛的应用。通过理解异步操作的底层原理,我们可以编写出高效、并发的程序。希望这篇文章能帮助你更好地理解异步操作的工作机制!如果你有任何问题或想法,欢迎在评论区讨论!
2025-02-04 17:33:46
500
1
原创 【操作系统】同步与异步,同步与互斥
同步是任务按照顺序依次执行,通常是阻塞的。异步是任务在后台执行,不会阻塞主线程,通常通过回调、Future/Promise、事件循环或协程来实现。互斥用于保护共享资源,防止多个线程同时访问,常用的机制有互斥锁、条件变量和信号量。理解这些概念并正确使用它们,是写出高效、安全并发代码的关键。希望这篇文章能帮助你更好地理解同步、异步和互斥的概念。如果你有任何问题或想法,欢迎在评论区讨论!
2025-02-04 16:12:36
941
原创 【分布式】服务端高并发分布式结构演进
服务端高并发分布式结构的演进是一个循序渐进的过程,每个阶段都有其特定的技术挑战和解决方案。从单机架构到微服务架构,系统的复杂度逐渐增加,但系统的性能、可扩展性和可用性也得到了显著提升。在实际应用中,技术团队需要根据业务需求和用户量的变化,灵活选择适合的架构方案,并在系统演进过程中不断优化和调整。总的来说,服务端架构的演进不仅仅是技术的升级,更是对业务需求和技术团队能力的不断挑战。只有通过不断的实践和优化,才能构建出真正高可用、高并发、高性能的分布式系统。
2025-02-04 10:00:01
1682
3
原创 【C++面试题】malloc和new delete和delete[]
malloc是 C 标准库中的函数,底层依赖于操作系统的内存管理机制(如brksbrk或mmap),主要用于分配原始内存块。new是 C++ 中的操作符,底层通常调用malloc来分配内存,并自动调用对象的构造函数来初始化对象。两者在内存分配和管理上有相似之处,但new提供了更高层次的功能,特别是在对象构造和异常处理方面。在 C++ 中,delete和delete[]是用于释放动态分配内存的操作符,但它们的行为和用途有所不同。
2025-02-02 11:32:54
1044
原创 【力扣系列题目】最后一块石头的重量 分割回文串 验证回文串 等差数列划分{最大堆 背包 动态规划}
【力扣系列题目】最后一块石头的重量 分割回文串 验证回文串 等差数列划分{最大堆 背包 动态规划}
2025-01-29 13:10:07
946
原创 【Docker】Docker入门了解
Docker 是一个开源的应用容器引擎,允许你把应用和所有依赖打包到一个标准化的容器里,这样就可以在任何环境中运行。它主要解决了“在我的机器上能运行”的问题,确保你的应用在不同的环境中有一致的表现。简单来说,Docker 就是通过容器化技术,让开发、测试、部署的过程更加高效、轻松。容器是一种轻量级、可移植的虚拟化方式,可以让你在同一台机器上运行多个应用,而不会互相干扰。如果有具体的问题或者需要进一步讲解某部分,随时告诉我!假设你有一个简单的 C++ 应用,并想要将它放进 Docker 容器里运行。
2025-01-27 21:46:20
1737
1
原创 【ProtoBuf 安装】ProtoBuf在window/Linux下的安装 创建/删除swap分区
如果你的系统在没有足够物理内存的情况下运行某些内存密集型程序,可能会遇到性能下降,或者在内存不足时发生程序崩溃,但不会直接导致数据丢失。test的模块⾥⾯有⾮常多的测试⽤例,这些⽤例对服务器环境要求特别严格,需要增⼤下swap分区,具体操作可参考:https://blog.csdn.net/AlexWang30/article/details/90341172。如果你计划长期不使用 swap,可以考虑重新评估系统的内存配置,或者增加物理内存来减少对 swap 的依赖。文件,删除你之前添加的那一行关于。
2025-01-26 15:24:21
1041
原创 【Linux线程总结】VMA ELF 地址转换 同步和互斥 条件变量 PC模型 循环队列 POSIX信号量 线程池
【Linux线程总结】VMA ELF 地址转换 同步和互斥 条件变量 PC模型 循环队列 POSIX信号量 线程池
2025-01-26 12:30:08
859
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人