自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c加加聊天室项目

开发阶段:在编写代码,运行构建阶段:执行next build→ 生成部署阶段(使用目录)配置 Nginx 反向代理(nginx.conf):静态资源 → 直接返回文件动态页面 → 代理到API → 代理到所有 API 调用统一通过发起,路径为/api/xxx。响应分两类处理:成功(HTTP 2xx)→ 返回失败(HTTP 非 2xx)→ 解析 JSON 中的id字段,映射为预定义的业务错误类型。错误类型由泛型保证类型安全,仅允许调用方声明的错误码通过。

2025-11-11 23:14:01 614

原创 c++服务器笔试面经

1.cach,cpu,主存2.c++编译多态性和运行多态性3.linux命令sar,free。

2025-11-09 00:00:04 602

原创 深圳小公司面试汇总(有的公司怎么问两个问题就挂了,我也是无语了)

端口扫描的核心是向目标主机的特定端口发送数据包,并根据返回的响应来判断端口的状态(开放、关闭、过滤)。渗透测试是一个系统化的过程,从信息收集开始,通过漏洞利用获得初始访问,再进行权限提升,最后维持访问并清除痕迹。:Redis凭借其丰富的数据结构、高速的内存访问和灵活的持久化策略,在缓存、会话管理、实时排行榜、消息队列等场景中得到了广泛应用。它速度快(因为数据主要在内存中)、功能丰富(支持多种数据结构)、用途广泛(缓存、会话存储、消息队列等)。好的,我们来介绍一些常用的端口扫描类型、它们的原理和示例。

2025-11-05 17:08:07 791

原创 深圳的游戏公司后端开发面经

本文摘要涵盖计算机科学核心知识点,包括:网络协议(TCP三次握手、拥塞控制、HTTP/HTTPS、OSI模型)、操作系统(内核态/用户态、调度算法、死锁、协程)、数据库(事务隔离、锁机制)、C++特性(虚函数、构造函数、拷贝构造、引用类型、内存泄漏)、数据结构(红黑树遍历)等关键技术原理和实践应用。重点解析TCP可靠传输机制、数据库并发控制、C++对象模型等核心概念,并提供代码示例说明关键技术的实现原理和典型应用场景,如虚函数动态绑定、智能指针循环引用等问题。

2025-11-04 20:49:25 1110

原创 c++字节跳动客户端开发一面面经

想象一下,编程语言就像不同的工具。Python就像一把设计精良、使用方便的瑞士军刀,它语法简洁,上手快,让你能快速实现想法,比如写个小脚本处理数据。而C++则像一把精密的多功能工具,功能强大,性能卓越,但需要更多专业知识才能熟练使用,适合构建大型、高性能的软件系统(如游戏引擎、操作系统)。为什么机器学习领域偏爱Python?主要有几个原因:在C++中,内存就像一个巨大的仓库,你需要自己决定在哪里存放物品(数据)以及何时清理它们。除了 / 和 /( 是C语言的函数),C++标准库还提供了其他内存管理工具,如栈

2025-11-01 21:39:16 1099 1

原创 高性能键值存储系统(KVS):从零开始构建与核心功能实现(2)

这个头文件是整个项目的“蓝图”,它定义了系统的配置、数据结构和所有引擎的统一接口声明。系统配置 (#define: 宏定义了可用的网络模型编号,指定了编译时默认启用的模型(在您的代码中,默认为这体现了系统的可配置性。面试官可以看这里,它展示了如何通过宏定义来编译时选择不同组件,这是一种常见的设计模式。: 类似地,定义了内存分配器选项,指定默认分配器(在您的代码中,默认为这与上文提到的内存池管理设计一致。面试重点:这个宏定义是内存池管理。

2025-10-29 10:33:45 995

原创 高性能键值存储系统(KVS):从零开始构建与核心功能实现(1)

本项目是一个基于 C 语言开发的高性能、轻量级键值存储(KVS)系统。它采用模块化分层架构设计,支持多种底层数据结构(如 Array、Hash、RBTree、SkipTable)和网络 I/O 模型(Reactor、Proactor、协程),提供类似 Redis 的简单协议接口。该系统核心目标是实现低内存占用、高并发处理能力和高可扩展性,适用于嵌入式系统、中间件以及需要处理大量并发网络请求的场景。系统集成了完善的数据持久化机制,支持 RDB、AOF 和混合模式,确保数据可靠性。

2025-10-28 22:40:18 1153

原创 [特殊字符] 用银行柜员的故事,彻底搞懂协程服务器代码

本文通过银行柜员的生动比喻,深入解析了一个基于协程的高性能TCP服务器代码。文章将服务器架构划分为三个角色:银行经理(ntyco_start函数)负责初始化、大堂经理(server函数)监听连接、柜员(server_reader函数)处理具体请求,清晰展现了协程服务器的运行机制。重点分析了代码中的关键函数调用关系、参数传递方式、潜在问题(如局部变量地址传递风险)以及面试常见问题,并提供了优化建议。这种将复杂技术概念与生活场景相结合的讲解方式,特别适合C/C++初学者、网络编程入门者和准备后端/系统岗面试的读

2025-10-09 08:19:37 635

原创 从银行柜员视角彻底理解io_uring异步编程

本文通过银行柜员比喻详细解析了基于io_uring的高性能服务器编程。主要内容包括:1)服务器初始化(银行开业准备);2)io_uring任务设置(接待、读取、回复);3)主事件循环(银行运营系统);4)Reactor与Proactor模式对比。重点阐述了异步编程的核心思想:通过io_uring实现真正的异步I/O,将I/O操作交给内核处理,减少系统调用和上下文切换,提高并发性能。文中详细对比了传统同步和现代异步模式的区别,并提供了完整的流程图和面试要点,帮助开发者深入理解底层网络编程原理。

2025-09-23 20:55:44 1033

原创 深入理解 Key-Value 存储:架构设计与实际应用

本文系统介绍了Key-Value存储的核心概念与应用。Key-Value存储作为一种高性能的NoSQL数据模型,通过键值对实现快速数据存取,相比关系型数据库具有模型简单、扩展性强等优势。文章详细分析了KV存储的特点、适用场景(如缓存、会话管理等)及主流产品(Redis、Memcached等),并通过银行系统实例演示了KV存储的实际应用。同时,文章深入探讨了网络编程框架(io_uring、ntyco、reactor)的性能特点及选择建议,并基于OSI七层模型解析了Web服务器与网络框架的协同工作机制,为开发者

2025-09-13 00:00:05 1697

原创 socket编程(5)

在网络编程中,事务处理是指将一系列相关的网络操作作为一个原子单元来处理。它确保这些操作要么全部成功执行,要么全部失败回滚,保持系统状态的一致性。任务的定义:在我们这个网络服务器中,"任务"指的是一个已经接收到数据、需要被业务处理的连接。具体来说,当一个客户端连接上有数据到达时:Reactor主线程的recv_cb函数会将数据读取到该连接的readbuffer中此时这个连接就变成了一个"待处理任务"主线程将这个任务提交到线程池,然后立即返回继续处理其他IO事件线程执行的具体工作解析协议。

2025-09-11 23:59:11 890

原创 socket编程(4)参数讲解

本文详解了webserver.c、reactor.c和server.h中的核心变量。全局变量作为程序基石,包括:连接池conn_list(预分配大数组以空间换时间)、epoll实例描述符epfd(事件驱动核心)和基准时间戳begin(性能测量)。局部变量作为功能执行者,包括:文件描述符fd(连接索引和内核标识)、epoll事件结构体ev(临时配置载体)、客户端描述符clientfd等。这些变量各司其职,共同构成了高性能服务器的核心机制,通过精心设计实现了高效并发处理。

2025-09-11 00:05:12 891

原创 Socket编程(3)Webserver

本文以银行柜员为类比,生动解析了webserver.c与reactor.c协作实现高性能Web服务的工作原理。通过四种服务模式(静态响应、内存读取、分阶段传输、专业处理)展示不同场景下的请求处理方式,重点讲解了事件驱动架构和状态机机制。文章详细阐述了sendfile零拷贝技术的优势,以及epoll多路复用实现高并发的原理。最后通过实际测试数据验证了该架构的性能表现,并提供了面试常见问题的解答思路。这种将复杂网络编程概念与日常场景类比的方法,使读者能够更直观地理解事件驱动编程的核心思想。

2025-09-10 16:44:14 1486

原创 Socket编程(2)

本文通过银行服务场景生动类比网络服务器模型,将技术组件转化为银行角色:epoll实例对应大堂经理,文件描述符对应服务窗口,回调函数对应接待员/倾听员/办理员。文章详细解析了从服务器初始化(银行开业)到请求处理(客户业务办理)的全流程,包括端口监听(窗口开设)、连接接收(客户接待)、请求处理(业务办理)和响应返回(业务交付)。通过对比简单模式和复杂模式的状态管理,展示了不同业务场景下的服务器设计思路。这种形象化的解释方式有助于理解epoll事件驱动模型的核心机制及其在实际网络编程中的应用。

2025-09-08 17:15:08 730

原创 水平触发 vs 边缘触发:深入理解非阻塞IO

ET模式和非阻塞IO是一个完整的技术栈选择,而不是可以随意混合的独立选项。选择ET模式意味着你承诺:✅ 正确实现非阻塞IO✅ 循环读取直到EAGAIN✅ 处理所有的边缘情况和错误状态✅ 实现完善的消息解析和状态管理而LT模式提供了更温和的学习曲线和更宽容的运行环境,适合大多数应用场景。没有最好的模式,只有最适合的模式。选择的基础是对业务需求、团队能力和运维环境的全面考量。希望这篇深度分析能帮助你在实际项目中做出明智而自信的技术决策!本内容作者还在学习,如有错误和疑问,欢迎指出。

2025-09-07 20:52:32 544

原创 Socket编程(1)

本文通过银行服务类比,阐述了服务器处理HTTP和WebSocket请求的系统架构。核心结构体struct conn作为"柜员工作台",包含客户标识(fd)、请求/响应缓冲区(rbuffer/wbuffer)及状态管理(status)。HTTP服务提供三种处理方式:基础响应、文件读取和高效sendfile传输。WebSocket服务则通过动态分配的payload和mask机制实现实时双向通信,如同VIP贵宾室的加密保险箱业务。整个系统采用事件驱动模型,通过回调函数统一处理流程。

2025-09-06 23:56:35 1237

原创 Socket编程全景指南:从银行服务模型到千万级并发架构

非阻塞IO(Non-blocking IO)是指当对文件描述符(如socket)进行读写操作时,如果数据没有准备好或者缓冲区已满,调用会立即返回一个错误(EAGAIN或EWOULDBLOCK)而不是阻塞等待。为什么在Epoll中需要非阻塞IO?

2025-08-08 23:39:52 932

空空如也

空空如也

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

TA关注的人

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