- 博客(50)
- 收藏
- 关注
原创 SSE的python实现
使用 Flask 实现 SSE 接口,主要利用生成器函数和 Response对象的流式传输能力。定义一个生成器函数,用于逐步产生数据。在生成器函数中,按照data: <消息内容>\n\n的格式返回数据。将响应的 MIME 类型设置为。处理好连接超时、错误处理和资源管理。SSE 非常适合需要从服务器向客户端实时推送数据的场景,例如通知、任务进度更新、实时日志等。希望这个简单的教程能帮助你快速上手 SSE 的后端实现。编程学习一站式分享。
2025-09-07 01:24:18
1139
原创 构建高效任务队列系统:原理与Python实现
任务队列是一种将工作单元(任务)从生产者传递到消费者的机制,允许应用异步处理耗时的操作。这种模式将立即执行的任务转换为"稍后处理"的任务,从而提升系统响应能力和可扩展性。fill:#333;color:#333;color:#333;fill:none;生产者任务队列工作者进程/线程结果存储任务队列是构建可扩展、响应式应用的关键组件。通过将耗时操作异步化,可以显著提升用户体验和系统吞吐量。Python生态系统提供了从简单实现到成熟框架的多种选择,可以根据项目需求选择合适的方案。
2025-09-07 00:54:06
653
原创 Flask多进程数据库访问问题详解
Flask的应用上下文(Application Context)是Flask框架的核心概念之一。数据库连接配置应用配置信息扩展实例请求级别的数据# 在应用上下文中,可以访问current_appprint(current_app.name) # 正常工作Flask设计理念:单进程单线程的Web框架进程隔离:子进程无法访问父进程的应用上下文架构不匹配:多进程架构与Flask的设计理念冲突项目规模:小项目用简单方案,大项目用复杂方案性能要求:考虑并发量、响应时间维护成本。
2025-08-10 23:32:59
833
1
原创 C++安全异常设计
(Resource Acquisition Is Initialization)是解决此问题的黄金法则。异常发生时,必须确保已申请的资源(内存、文件句柄等)被释放。
2025-08-09 22:09:36
292
原创 C++中std::chrono的核心应用
这篇博客约500字,聚焦std::chrono的核心特性和实际应用,突出了其相对于传统方法的优势。是现代C++时间处理的标准方案,提供类型安全、高精度和跨平台兼容性。虽然在某些特定场景下。,它更安全、更灵活,是现代C++项目的首选。仍有其价值,但对于大多数现代C++项目,是C++11引入的现代时间库,提供。
2025-08-07 15:00:48
363
原创 gettimeofday()函数
在C++中的核心应用是性能测量、时间戳生成和网络超时控制。,它更轻量,特别适合性能测量和网络编程。,但在需要微秒精度或系统集成的场景下,在C++中的主要优势是。
2025-08-07 14:57:48
239
原创 C++ 数组名退化
在C/C++中,数组名会自动转换为指向其首元素的指针,这个过程称为"退化"。// 退化发生!ptr类型是int*而不是int[3]新项目优先使用std::array:避免退化问题的根本解决方案函数参数处理原生数组时// 方法1:引用方式(保持数组类型)// 方法2:显式传递指针和长度auto使用注意// 错误用法!退化// 正确:保持类型// 获取元素数量调试技巧// 输出数组类型// 输出指针类型C++学习一站式分享。
2025-07-27 18:36:19
406
原创 C++ string_view
当使用发生了什么?:1次堆分配 + 1次内存复制 + 1次堆释放:仅传递两个寄存器大小的值(通常8+8=16字节)👉!只存储原始数据的指针和长度,绝不复制内容:避免为每个key创建临时string零拷贝的代价:必须保证底层数据存活。
2025-07-25 01:49:33
381
原创 C++中的UDP通信
是一种无连接、不可靠但高效的网络传输协议,适用于实时性要求高的场景。本文将通过C++示例代码演示UDP的基本使用方法,并分析其特点。
2025-07-25 01:34:27
491
原创 C++模板
优先使用标准库模板// 替代手写容器模板元编程三原则除非必要,不使用保持简单直观大量添加注释调试技巧g++ -E source.cpp > preprocessed.cpp # 查看模板展开IDE工具链Clion:实时模板展开分析Visual Studio:模板实例化查看器减少50%以上的重复代码在数值计算等场景获得5-10倍性能提升构建更灵活可扩展的架构开发出高性能的领域特定语言(DSL)C++学习一站式分享。
2025-07-13 20:45:26
466
原创 C++中顶层const与底层const
顶层const:保护容器(指针/对象本身),编译器直接校验。底层const:保护内容(指向的数据),影响类型系统和函数交互。设计原则优先使用底层const保护函数参数(避免意外修改)const成员函数应严格遵循只读约定使用const_cast谨慎突破底层const(通常表示设计问题)透彻理解顶层/底层const的区别,是写出健壮、安全的C++代码的基石。常量性的正确应用能显著提升代码的可维护性和安全性。C++学习一站式分享。
2025-07-13 20:21:55
764
原创 c++虚拟内存
虚拟内存不是抽象概念,而是每位C++开发者必须掌握的性能杠杆知识领域开发者获益实际应用地址转换机制理解指针真实成本优化数据结构布局缺页中断原理识别内存访问瓶颈设计缓存友好型算法页面置换算法预测程序内存行为优化大数据集处理策略内存映射技术零拷贝高效IO百GB级文件处理虚拟内存系统如同程序的内存"操作系统"掌握其规则者能写出跨越物理限制的稳健代码忽略其原理者将困在随机崩溃和性能陷阱中优秀开发者不只需让代码运行——更要清楚每字节在虚拟和物理世界的旅程!
2025-06-28 01:25:38
392
原创 无锁队列简易入门
无锁队列将彻底改变你处理多线程编程的方式。虽然它比传统队列更复杂,但带来的性能提升是革命性的!尝试添加多生产者支持研究Boost.lockfree源码探索无锁内存回收机制了解ABA问题与解决方案“如果你能理解无锁队列,就能理解现代高性能系统的核心秘密。” - 来自某位匿名系统架构师无锁编程是通向高级系统开发的必经之路,从这里开始你的高效并发之旅吧!C++学习一站式分享。
2025-06-25 23:18:35
818
原创 理解epoll:水平触发与边沿触发
实际选择应权衡开发效率与性能需求。对经验丰富的网络开发者,掌握ET模式可解锁epoll的全部性能潜力;对新开发者和一般应用,LT模式提供更简单安全的选择。无论选择何种模式,理解其底层机制都是实现高性能网络服务的关键所在。在Linux高并发网络编程领域,epoll是极其重要的I/O多路复用机制。其高效的处理能力使其成为构建高性能服务器的基石。本文将深入探讨这两种模式的工作原理、差异对比、性能表现及适用场景。epoll的高效之处在于其避免遍历所有fd的O(1)事件检测能力,特别适合处理大量并发连接。
2025-06-25 23:11:14
857
原创 C++面试必备:网络性能问题排查实战指南
在C++后端开发面试中,"如何排查网络性能差"是高频开放性问题。本文将聚焦核心排查路径,用最少工具解决最常见问题!
2025-06-25 23:07:47
631
原创 HTTP协议简易入门
浏览器构建完整HTTP请求(自动添加必要请求头):默认关闭连接(HTTP/1.1可复用连接):客户端与服务器通过三次握手建立TCP连接。:服务器解析请求→执行业务逻辑→生成响应。:服务器返回状态码+响应头+响应体。
2025-06-15 18:15:16
942
原创 C++面向对象编程:简洁入门
是一种将数据和操作封装为“对象”的范式。C++作为OOP的核心语言,通过。实现代码复用、模块化设计。掌握OOP,你就能用C++构建更健壮、可扩展的系统!将数据和函数绑定在类中,通过访问控制隐藏内部细节。子类复用父类的属性和方法,实现代码扩展。同一接口在不同对象上表现不同行为。
2025-06-15 18:11:13
284
原创 TCP 四次挥手
可靠性:通过四次交互确保双方都完成数据发送有序性:状态机管理确保关闭过程有序进行安全性:TIME_WAIT防止报文混淆和丢失灵活性:支持半关闭(shutdown)等高级用法最佳实践服务端使用连接池减少握手/挥手开销客户端使用优雅关闭(shutdown)避免数据丢失监控关键状态(CLOSE_WAIT/TIME_WAIT)预防资源泄漏理解四次挥手不仅有助于解决网络问题,更能帮助开发者设计高性能、高可靠的网络应用。当你下次看到TIME_WAIT时,请记得这是TCP为保障可靠性所做的最后努力。
2025-05-31 03:23:11
1379
原创 TCP 三次握手
状态转换关键函数connect()触发握手listen()准备连接,accept()获取连接设计目的:可靠地同步序列号,防止无效连接理解这些核心概念,就能掌握TCP连接的建立机制,为网络编程和故障排查打下坚实基础。
2025-05-31 03:16:18
1036
原创 抖音电商客户端一面面经
简要介绍个人背景、技术栈和与岗位相关的项目经验。面试官重点询问了项目中体现个人技术能力和解决问题能力的部分。需要准备1-2个具体案例,清晰阐述遇到的挑战、采取的行动以及最终达成的效果(最好有量化指标)。面试官后续追问了项目代码量以及对代码复用的思考和具体实践案例。需要结合项目实例说明如何应用DRY原则、设计模式或抽象封装来提高代码复用性。字节跳动抖音电商客户端的面试一面非常注重基础知识的深度(尤其是操作系统、网络、C++)、项目实践中的思考与能力(亮点、难点、代码设计)、算法能力(经典题目)以及。
2025-05-31 02:47:55
895
原创 浮点数运算中的结合律与交换律
交换律在浮点数运算中成立,但结合律不成立。在涉及浮点数的关键运算(如金融计算)时,需特别注意运算顺序的影响。必要时可采用更高精度的数据类型(如double)或调整运算顺序来减少误差。理解浮点数运算的局限性,有助于避免在实际开发中因精度问题导致的隐蔽错误。
2025-05-28 00:49:15
605
原创 科曼c++面试
面试重点考察C++底层知识、多线程调试经验及代码设计能力,需熟练掌握GDB、内存管理、设计模式等核心技能。:如何用GDB调试?如果程序突然卡一下,如何定位问题?:C++类型转换中,向上转型和向下转型的具体含义?:实现线程池的思路?任务队列为空时如何唤醒线程?:函数传递指针但未使用引用,内部。:数组退化为指针是什么?:类声明时需要注意什么?导致崩溃,如何解决?,如何优化头文件依赖?
2025-05-17 11:02:01
870
原创 C++核心知识点解析:多态、内存管理与智能指针
多态:虚函数表实现动态绑定,vptr 位于对象内存头部。内存管理:栈自动高效,堆灵活但需手动管理;深拷贝避免指针共享问题。智能指针unique_ptr用于独占资源,shared_ptr共享资源,weak_ptr解决循环引用。
2025-05-15 00:37:55
696
原创 c++ 面试总结(1)
以上问题覆盖C++核心概念及底层原理,面试时需结合代码示例和实际场景解释,展现对技术的深入理解。注释在预处理阶段被删除,编译器处理的代码中不包含注释。
2025-05-14 23:51:43
850
原创 顺时针旋转矩阵
辅助数组法:适合快速验证思路,但需额外空间。转置+翻转法:平衡了代码简洁性和空间效率,是面试中的推荐写法。原地旋转法:适合对内存敏感的场景,但需注意循环边界和坐标映射的逻辑。通过这三种方法的递进分析,我们可以深入理解矩阵旋转的本质,并根据实际需求选择最合适的实现方案。
2025-05-04 00:32:06
987
原创 C++四种类型转换详解:从入门到掌握
转换方式典型场景检查时机安全性数值转换、向上转型编译期高多态类型向下转型运行时中const_cast去除const属性编译期低底层内存操作编译期极低。
2025-05-03 12:05:39
456
原创 STL 之vector 核心用法与基础实现详解
vector动态扩容:自动调整内存空间快速随机访问:通过下标直接访问元素(时间复杂度O(1)尾部高效操作push_backpop_back时间复杂度O(1)随机访问高效:连续内存布局对 CPU 缓存友好尾部操作极致优化:适合实现栈结构(先进后出)自动内存管理:避免手动new/delete的复杂性。
2025-05-02 02:03:18
640
原创 802. 区间和
在无限长的数轴上,每个点的初始值都是0。首先进行n次操作,每次操作在位置x加上一个值c。然后进行m次询问,每次询问求区间[l, r]内所有数的和。由于数轴坐标范围很大(-10。9),直接存储每个点的值不现实,需要使用离散化技术进行处理。
2025-05-02 01:47:37
339
原创 为什么连接池能显著降低系统资源消耗?
5.1 强烈推荐场景高频短请求(如API服务、微服务)。跨高延迟网络访问数据库(如云服务跨可用区)。容器化环境(资源限制严格)。5.2 收益量化公式资源节省比 ≈ (1 - 池最大连接数 / 峰值并发请求数) × 100%(假设非连接池场景为每个请求分配独立连接)5.3 配置建议初始值:按(核心数 * 2) + 磁盘数设置基础连接数。动态调整:根据连接等待时间QPS数据库CPU等指标实时优化。通过连接池,开发者实际上是在用空间换时间,通过预先支付资源占用的成本,换取整体系统的高效与稳定。
2025-04-19 16:15:28
869
原创 快速排序算法详解:从原理到应用
数据库排序优化机器学习中的特征选择大数据处理中的Top K问题理解快排的关键在于掌握其分治策略和边界处理,实际应用中需要根据数据特征选择合适的优化策略。读者可以通过可视化工具(如visualgo.net)观察排序过程,加深对算法运行机制的理解。
2025-04-18 01:35:38
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅