自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ape's IT Blog

C/C++/Data Structure/Linux/OS/Internet/MySQL/Docker/Algorithm

  • 博客(413)
  • 收藏
  • 关注

原创 【HTTP/HTTPS】从浏览器输入url到你看到网页发生了什么?

服务器生成HTTP响应报文:服务器收到请求后会根据请求内容准备浏览器需要的数据,如果是普通请求,直接根据url发送对应的资源,如果是cgi请求,则会处理后台程序后将结果返回,并生成对应的HTTP响应报文。发送HTTP请求报文:tcp握手成功后,通过tcp/ip通信协议将客户端生成的HTTP报文,发送至服务器。浏览器查找缓存:如果查找到缓存中有我们URL对应的网页信息,并且没有过期,如果有则会直接读取缓存内容,此时不会发送HTTP请求,如果没有则发送HTTP请求。https特有阶段:SSL/TLS握手。

2025-04-02 15:40:00 403

原创 【Linux】常见信号 + 进程和作业

信号是 Linux 系统中一种异步通知机制,用于通知进程某个事件的发生。每个信号都有一个唯一的编号(如SIGKILL是9)和默认行为(如终止进程、忽略或暂停进程)。信号编号默认行为常见用途SIGHUP1终止终端断开时通知进程SIGINT2终止Ctrl+C中断进程SIGQUIT3终止+core dumpCtrl+\强制终止并调试SIGKILL9终止强制杀死进程SIGTERM15终止请求进程正常退出SIGSTOP19暂停暂停进程(不可捕获)SIGCONT18继续恢复被暂停的进程。

2025-03-29 20:17:35 997 1

原创 【CPP】协程

协程是一种特殊的函数,它可以在执行过程中暂停,并且能够在之后的某个时刻继续执行。与线程不同,协程并不会真正地“脱离”当前的线程,它只是让控制流从一个函数流转到另一个地方,然后再回来。这个过程是。

2025-03-12 19:37:23 725

原创 【C语言】字符串模拟实现函数

【代码】【C语言】字符串模拟实现函数。

2025-03-11 20:30:19 144

原创 【CPP】STL容器模拟实现篇之string

【代码】【CPP】STL容器模拟实现篇之string。

2025-03-07 21:25:56 459

原创 【CVTE】嵌入式软件开发-Linux方向{一面}

数组(Array)和链表(Linked List)是 C/C++ 中两种最基本的数据结构,各有特点和适用场景。顺序存储,O(1)随机访问。数组的大小在创建时确定,不能动态调整(除非使用 插入或删除元素时可能需要移动大量元素使用:随机访问:缓冲区;顺序遍历但不频繁增删:静态列表;定长存储的数据结构:堆,栈适用于 数据量固定且频繁访问 的情况,例如:插入/删除高效,访问低效,额外空间开销。使用:内存池:链表管理空闲内存块;动态集合:OS各种调度队列、图的邻接表;动态改变大小的:堆栈适用于 数据量不固定且需要频繁

2025-03-06 20:57:42 832

原创 【CPP面经】科大讯飞 &&腾讯后端开发面经分享

示例:我是某公司开发,参与过高并发服务器项目,遇到内存泄漏问题。用valgrind定位,优化资源释放逻辑解决。

2025-03-04 21:13:48 1807

原创 【面经】CPP经典面试手撕{LRUCache、字典树、布隆过滤器}

【代码】【面经】CPP经典面试手撕{LRUCache、字典树、布隆过滤器}

2025-03-01 20:40:05 249

原创 【CPP面经】CPP后台开发面试经历

指针本身是常量,不可修改指向的地址,但可修改指向的值。

2025-02-25 21:18:59 906

原创 【Docker】Docker中卷的类型、区别及应用

Docker卷是Docker中用于持久化数据的重要机制,提供了多种类型的卷以满足不同的应用场景。匿名卷和命名卷适用于需要持久化数据的场景,绑定挂载适用于开发环境,临时文件系统适用于存储临时数据。理解这些卷的类型、区别及应用场景,有助于开发者更好地管理和使用Docker容器。在实际应用中,开发者应根据具体需求选择合适的卷类型,以确保数据的安全性和性能。通过合理使用Docker卷,可以大大提高容器化应用的可靠性和可维护性。

2025-02-15 09:19:51 1277

原创 【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 2099

原创 【Docker 】虚悬镜像:深入理解与清理实践

虚悬镜像是指那些没有标签(Tag)且没有被任何容器引用的镜像。镜像重建:当你重新构建一个镜像时,Docker 会为新的镜像分配一个新的镜像 ID,而旧的镜像 ID 就会变成虚悬镜像。删除标签:如果你手动删除了一个镜像的标签,而这个镜像没有被其他标签引用,那么它也会变成虚悬镜像。镜像分层:Docker 镜像是由多个分层组成的,当某个分层不再被任何镜像引用时,它也会变成虚悬镜像。虚悬镜像的名称通常显示为,表示它们没有标签和版本信息。

2025-02-14 15:58:08 715

原创 在AI迭代如此之快的时代下,如何做好一个C++程序员

在 AI 迭代如此之快的时代下,C++ 程序员需要不断提升自身能力,适应技术变革。通过深入掌握 C++ 语言特性、学习 AI 相关知识、关注行业动态、提升软技能以及积累项目经验,C++ 程序员可以在 AI 时代中保持竞争力,并在职业生涯中持续成长。无论是技术专家、全栈工程师还是技术管理者,持续学习和实践都是成功的关键。希望本文能为 C++ 程序员在 AI 时代的发展提供有价值的参考和指导。

2025-02-13 10:15:35 572

原创 【面试】面试常见的智力题

智力题是一种通过逻辑推理、数学计算或创造性思维来解决的问题。它们通常没有固定的解题模式,需要候选人灵活运用知识和技巧。问题描述为什么井盖通常是圆形的?解题思路从几何、物理和实用性角度分析。答案安全性:圆形井盖不会掉入井口,因为直径相等。易于搬运:圆形井盖可以滚动,便于搬运。均匀受力:圆形结构受力均匀,不易损坏。智力题是面试中常见的考察方式,旨在测试候选人的逻辑思维能力、创造性思维和应变能力。通过掌握常见的智力题类型和解题技巧,候选人可以在面试中更加自信地应对这类问题。多练习。

2025-02-11 11:54:36 1590 4

原创 【Linux】一文带你读懂Linux文件系统

什么是文件系统?答案:文件系统是操作系统用于管理存储设备上数据的一种机制。它定义了数据的存储方式、组织结构以及访问方法。文件系统的主要功能包括:管理文件和目录。控制文件的访问权限。提供数据的持久化存储。Linux 文件系统是 Linux 操作系统的核心组成部分,理解其工作原理和管理方法对于系统管理员、开发者和运维工程师来说至关重要。本文涵盖了 Linux 文件系统的各个方面,包括其结构、类型、管理工具以及性能优化等内容,希望能够帮助读者全面掌握 Linux 文件系统的知识。

2025-02-10 19:34:18 1844 8

原创 【Docker】从技术架构到容器实战{空间隔离/资源控制/LXC容器/mount}

空间隔离通过 NameSpace 机制实现了系统资源的逻辑隔离,确保不同的进程或应用运行在独立的环境中,互不干扰。通过unshare命令,可以创建新的 NameSpace,并运行进程在该 NameSpace 中。操作系统在底层通过创建新的 NameSpace、隔离资源、挂载文件系统等操作,实现了资源的隔离和管理。空间隔离是容器技术(如 Docker)的基础,它使得容器可以在独立的运行环境中运行,确保容器的安全性和资源管理的灵活性。

2025-02-10 12:39:28 1311

原创 【CPP】迭代器失效问题 static和inline

指的是在容器进行某些操作后,原先获取的迭代器不再指向有效的元素或位置。迭代器失效可能会导致未定义行为(如访问无效内存、程序崩溃等)。不同的容器在特定操作下会有不同的迭代器失效行为。理解迭代器失效的场景和规则,可以帮助你编写更安全、更健壮的C++代码。

2025-02-04 18:41:27 743

原创 【CPP】异步操作的底层原理与应用举例

非阻塞 I/O:允许程序在等待 I/O 操作完成时继续执行其他任务。事件循环:监听和分发事件,调用相应的回调函数。回调机制:处理异步操作完成后的结果。多线程与线程池:通过多线程实现并发执行。操作系统支持:提供高效的异步 I/O 机制。异步操作在网络服务器、文件读写、定时任务等场景中都有广泛的应用。通过理解异步操作的底层原理,我们可以编写出高效、并发的程序。希望这篇文章能帮助你更好地理解异步操作的工作机制!如果你有任何问题或想法,欢迎在评论区讨论!

2025-02-04 17:33:46 437 1

原创 【操作系统】同步与异步,同步与互斥

同步是任务按照顺序依次执行,通常是阻塞的。异步是任务在后台执行,不会阻塞主线程,通常通过回调、Future/Promise、事件循环或协程来实现。互斥用于保护共享资源,防止多个线程同时访问,常用的机制有互斥锁、条件变量和信号量。理解这些概念并正确使用它们,是写出高效、安全并发代码的关键。希望这篇文章能帮助你更好地理解同步、异步和互斥的概念。如果你有任何问题或想法,欢迎在评论区讨论!

2025-02-04 16:12:36 830

原创 【分布式】服务端高并发分布式结构演进

服务端高并发分布式结构的演进是一个循序渐进的过程,每个阶段都有其特定的技术挑战和解决方案。从单机架构到微服务架构,系统的复杂度逐渐增加,但系统的性能、可扩展性和可用性也得到了显著提升。在实际应用中,技术团队需要根据业务需求和用户量的变化,灵活选择适合的架构方案,并在系统演进过程中不断优化和调整。总的来说,服务端架构的演进不仅仅是技术的升级,更是对业务需求和技术团队能力的不断挑战。只有通过不断的实践和优化,才能构建出真正高可用、高并发、高性能的分布式系统。

2025-02-04 10:00:01 1624 3

原创 【C++面试题】malloc和new delete和delete[]

malloc是 C 标准库中的函数,底层依赖于操作系统的内存管理机制(如brksbrk或mmap),主要用于分配原始内存块。new是 C++ 中的操作符,底层通常调用malloc来分配内存,并自动调用对象的构造函数来初始化对象。两者在内存分配和管理上有相似之处,但new提供了更高层次的功能,特别是在对象构造和异常处理方面。在 C++ 中,delete和delete[]是用于释放动态分配内存的操作符,但它们的行为和用途有所不同。

2025-02-02 11:32:54 994

原创 【计算机网络】设备更换地区后无法访问云服务器问题

更换地区后无法访问云服务器

2025-01-30 18:11:05 1228

原创 【力扣系列题目】最后一块石头的重量 分割回文串 验证回文串 等差数列划分{最大堆 背包 动态规划}

【力扣系列题目】最后一块石头的重量 分割回文串 验证回文串 等差数列划分{最大堆 背包 动态规划}

2025-01-29 13:10:07 892

原创 【Docker】Docker入门了解

Docker 是一个开源的应用容器引擎,允许你把应用和所有依赖打包到一个标准化的容器里,这样就可以在任何环境中运行。它主要解决了“在我的机器上能运行”的问题,确保你的应用在不同的环境中有一致的表现。简单来说,Docker 就是通过容器化技术,让开发、测试、部署的过程更加高效、轻松。容器是一种轻量级、可移植的虚拟化方式,可以让你在同一台机器上运行多个应用,而不会互相干扰。如果有具体的问题或者需要进一步讲解某部分,随时告诉我!假设你有一个简单的 C++ 应用,并想要将它放进 Docker 容器里运行。

2025-01-27 21:46:20 1663 1

原创 【ProtoBuf 安装】ProtoBuf在window/Linux下的安装 创建/删除swap分区

如果你的系统在没有足够物理内存的情况下运行某些内存密集型程序,可能会遇到性能下降,或者在内存不足时发生程序崩溃,但不会直接导致数据丢失。test的模块⾥⾯有⾮常多的测试⽤例,这些⽤例对服务器环境要求特别严格,需要增⼤下swap分区,具体操作可参考:https://blog.youkuaiyun.com/AlexWang30/article/details/90341172。如果你计划长期不使用 swap,可以考虑重新评估系统的内存配置,或者增加物理内存来减少对 swap 的依赖。文件,删除你之前添加的那一行关于。

2025-01-26 15:24:21 938

原创 【Linux线程总结】VMA ELF 地址转换 同步和互斥 条件变量 PC模型 循环队列 POSIX信号量 线程池

【Linux线程总结】VMA ELF 地址转换 同步和互斥 条件变量 PC模型 循环队列 POSIX信号量 线程池

2025-01-26 12:30:08 821

原创 【Linux指令/信号总结】粘滞位 重定向 系统调用 信号产生 信号处理

因为信号处理函数是用户提供的,如果以内核态执行用户代码的话,由于内核态具有完全的访问权限,用户代码可能会修改系统的重要数据,从而导致系统资源和硬件设备遭到破坏。如果信号的处理方法是自定义捕捉,则切换到用户态执行信号处理程序,完成后再次陷入内核,清除对应信号的pending标志,最后返回用户态继续执行用户程序。(即所有者可以读写,所属组可以读,其他人可以读)。如果信号的处理方法是默认或忽略,则直接在内核态完成相应的处理动作(终止进程、暂停进程、清除pending标志),不需要切换到用户态。

2025-01-25 15:24:58 988

原创 【Linux进程总结】PCB 进程创建 进程等待 进程替换 进程通信 前台后台进程

程序映像:【进程地址空间/PCB/页表不二次创建 但是数据会换成新的程序对应的数据】打开的文件描述符:fd默认未设置为FD_CLOEXEC, 默认状态下会保持打开状态。如果设置了FD_CLOEXEC,则会关闭相应的文件描述符。新进程对于fd的值 【假定旧进程打开了fd=3 和fd=4 两个文件】进程替换会替换掉代码和数据,虽然fd没关,但是进程替换后,新进程已经无法知道旧进程打开的fd是多少了。如果要操作旧进程打开的文件,那么新进程就得需要知道旧进程打开的文件fd,如何知道?

2025-01-25 15:14:37 690

原创 【Linux网络总结】字节序转换 收发信息 TCP握手挥手 多路转接

/ 点分十进制转二进制===主机转网络// 二进制转点分十进制===网络转主机//二进制转点分十进制存到静态缓冲区 存在线程安全问题// 成功返回strptr 失败返回NULL并设置errnoipv6 -- 16byte -- 128位// 对于 IPv4 地址,strptr缓冲区大小至少应为 INET_ADDRSTRLEN(通常为 16 字节);// 对于 IPv6 地址,缓冲区大小至少应为 INET6_ADDRSTRLEN(通常为 46 字节)。

2025-01-23 19:34:39 867 2

原创 【Redis】在ubuntu上安装Redis

redis安装

2025-01-23 15:31:23 591

原创 【Redis】Redis入门以及什么是分布式系统{Redis引入+分布式系统介绍}

Redis入门第一篇

2025-01-23 15:09:57 757

原创 【2024寒假实习面经】——CPP方向{篇Ⅲ}

iterator和 const_iterator:用于普通遍历和只读遍历。和 const_reverse_iterator:用于反向遍历和只读反向遍历。和 output_iterator:主要用于流操作。:支持双向遍历。:支持随机访问,可以进行指针偏移操作。普通/只读;正向/反向;单向/双向/随机;类模板用于定义类,其中可以包含数据成员和成员函数,可以通过指定类型来实例化。函数模板用于定义函数,可以接受任意类型的参数,通过参数类型来生成不同类型的函数实例。

2025-01-22 19:53:43 1847

原创 【力扣系列题目】粉刷房子 买卖股票的最佳时机

逆向思维:我在第i天卖掉,要想获得最大利润,需要在之前的最低点买入。正向思维:我今天买了,遍历之后的每天找到最大值卖出即可。

2025-01-22 14:58:05 914

原创 【力扣系列题目】不同路径 组合总和 最大连续1个数 打家劫舍{持续更新中...}

【代码】【力扣系列题目】不同路径 组合总和 最大连续1个数 打家劫舍{持续更新中...}

2025-01-21 19:33:57 868

原创 【面试题/牛客周赛】衣橱整理/机器人的运动范围 串串香 小红的gcd 奇偶调整 幂次进近 快速幂

求出一个字符串的所有子串问题。

2025-01-20 10:45:01 271

原创 【力扣周赛】跳过交替单元格的之字形遍历 机器人可以获得的最大金币数 使每一列严格递增的最少操作次数 变长子数组求和 最多 K 个元素的子序列的最值之和{题解分享}

不卡时间限制时 下述方法应该是正确的。

2025-01-20 09:50:32 446

原创 【力扣-递归/搜索/回溯/动态规划】不同路径+组合总和{题解分享}

代码思路清晰,适合小白。

2025-01-19 10:05:20 482

原创 【牛客/力扣竞赛】小红的正整数计数 小红的双生排列 万年沉睡的宝藏 完美主义追求者 最长乘积等价子数组{简单题 题解}

在区间 [1, x]内,能够被y整除的数字是:y,2y,3y,·…,ny,其中 n = x/y向下取整。当n大于等于M,n的阶乘一定有一位是M,M%M==0,导致最后n!区间 [1,x] 内有多少是 y 的倍数:x/y向下取整 个。

2025-01-11 16:57:06 282

原创 【编程/竞赛常识】代码初始化模板{ACM赛制}

竞赛代码模板

2025-01-06 11:57:12 795

原创 【编程/竞赛常识】C语言中数组能开多大?

2M~8M;5e5 ~ 2e6

2025-01-06 11:13:25 304

空空如也

空空如也

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

TA关注的人

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