Latest

【C++从零实现Json-Rpc框架】第四弹——使用Muduo库实现英译汉

【C++从零实现Json-Rpc框架】第四弹——使用Muduo库实现英译汉

目录 一、前言 二、正文 1.Muduo库常见接口介绍 1.1 TcpServer类基础介绍 ● TcpConnectionPtr ● ConnectionCallback ● MessageCallback ● InetAddress  ● TcpServer 1.2 EventLoop类 1.3 TcpConnection类 1.4 TcpClient类基础介绍 ● TcpClient ●void connect() ●void disconnect()  ●void setConnectionCallback(ConnectionCallback cb)  ●void setMessageCallback(MessageCallback cb) 1.5 CountDownLatch 类  1.6 Buffer类基础介绍  2. Muduo库英译汉服务 2.1 英译汉TCP服务器 2.

By Ne0inhk
图形管线与渲染引擎中的C++架构设计:模块化、跨平台与资源驱动实践

图形管线与渲染引擎中的C++架构设计:模块化、跨平台与资源驱动实践

#王者杯·14天创作挑战营·第2期# 图形管线与渲染引擎中的C++架构设计:模块化、跨平台与资源驱动实践 一、引言 在游戏引擎的核心系统中,渲染引擎无疑是最复杂和最性能敏感的模块之一。它负责将游戏世界的所有图形元素最终呈现在屏幕上。 在现代游戏中,渲染系统通常需要具备: * 可扩展性强(支持多种材质与后处理管线) * 跨平台能力(OpenGL、Vulkan、DirectX、Metal) * 高性能(利用 GPU、异步管线、资源复用) * 数据驱动(基于 Render Graph 或 Frame Graph) 本篇博客将以 C++ 为基础,探讨如何构建现代化、模块化的渲染系统架构。 二、图形渲染系统结构概览 Game LogicRender QueueRender GraphDraw Call SubmissionGraphics API WrapperGPU Driver 各部分职责:

By Ne0inhk
【c++】STL容器——使用红黑树模拟实现map和set(由浅入深逐步完善3w字详解)

【c++】STL容器——使用红黑树模拟实现map和set(由浅入深逐步完善3w字详解)

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 c++系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 * 前言 * 一、了解STL库中的map/set的底层 * 二、红黑树的迭代器 * 三、红黑树的插入 * 四、map/set的封装 * set的封装 * map的封装 * 五、测试 * 测试一 * 测试二 * 六、学习STL库中的实现 * set如何保证key不被修改 * map如何保证key不被修改 * 八、set的改进 * 红黑树的const迭代器 * 改进set * 测试一 * 测试二 * 九、map的改进 * 测试一 * 测试二 * operator[] * Insert * 继续完善operaotr[] * 测试一 * 十、

By Ne0inhk
蓝香蕉代码 |【鸿蒙电脑开发编译C/C++】

蓝香蕉代码 |【鸿蒙电脑开发编译C/C++】

lycium_plusplus介绍 项目地址 lycium++支持鸿蒙电脑使用 上次我们介绍了lycium++框架的扩展,最近针对在鸿蒙电脑上使用框架也进行下介绍 如何使用 解决了什么问题 lycium++框架支持在win/mac/linux上进行交叉编译,支持一件打包hnp文件,通过这些hnp作为组件与应用一起安装到鸿蒙电脑上,在HarmonyOS上使用该框架也成为了可能。本次我们将框架在鸿蒙电脑上进行了适配,通过交叉编译解决了在鸿蒙电脑上执行编译的工具最小集,并伴随DevBox、Python安装器、DevNode-OH、GitNext几个核心应用的上架,解决了在鸿蒙电脑中,通过命令行编译C/C++代码的核心问题。 环境介绍 * 设备:我使用的MateBook Pro已经升级到6.0.0.115版本,建议升级到该版本以上 * 代码管理工具:GitNext,作为代码管理工具下载管理三方库等,下载后可在系统终端中使用(个人推荐),也可以使用界面管理 * 编译工具链:DevBox,包含了llvm、clang、autoconf、bash、cmake、make、nin

By Ne0inhk
通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)

通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)

目录 1、需求描述 2、选择URI Scheme实现 3、何为URI Scheme? 4、将自定义的URL Scheme信息写入注册表的C++源码实现 5、如何实现最开始的3种需求 6、后续需要考虑的细节问题        之前陆续收到一些从Web页面上启动我们C++客户端软件的需求,希望我们能提供一些技术上的支持与协助,支持从Web网页上将我们的C++客户端软件启动起来。于是我大概地研究了相关的实现方法,下面把研究的过程与结果在此做一个分享,希望能给大家提供一个借鉴或参考。 C++软件异常排查从入门到精通系列教程(核心精品专栏,订阅量已达10000多个,欢迎订阅,持续更新...)https://blog.ZEEKLOG.net/chenlycly/article/details/125529931C/C++实战专栏(重点专栏,专栏文章已更新500多篇,订阅量已达8000多个,欢迎订阅,持续更新中...)https://blog.ZEEKLOG.net/

By Ne0inhk

比Datasketch好两个数量级?用 Fast Similarity Sketch 优化大规模文本去重(附 C++ 源码)

比datasketch好两个数量级? 用 Fast Similarity Sketch 优化大规模文本去重(附 C++ 源码) 项目地址:https://github.com/pzcddm/FastSketchLSH 论文背景:Fast Similarity Sketching(arXiv:1704.04370v4,FOCS’17 扩展版) 最近在优化大规模去重流水线,基于之前的知识, 我们team做了一个基于Fast Similarity Sketching 的Python 去重包fastsketchlsh, 并且我们先后对比了 datasketch、rensa 和我们自己做的 fastsketchlsh。 这篇blog就把过程里的关键问题讲透:传统 k-mins 为什么慢、FastSketch 为啥快、以及它和 LSH 搭配时为什么在工程上可用。 先说结论 * 经典 k-mins / MinHash

By Ne0inhk
智能指针:告别内存泄漏的利器----《Hello C++ Wrold!》(27)--(C/C++)

智能指针:告别内存泄漏的利器----《Hello C++ Wrold!》(27)--(C/C++)

文章目录 * 前言 * 智能指针的作用 * 智能指针的实现和原理 * 库里面的智能指针 * std::auto_ptr * auto_ptr的模拟实现 * std::unique_ptr * unique_ptr的模拟实现 * std::shared_ptr * shared_ptr的模拟实现 * shared_ptr的一个弊端 * std::weak_ptr * weak_ptr的模拟实现 * 删除定制器 * 作业部分 前言 在 C++ 编程中,动态内存管理始终是开发者面临的核心挑战之一。手动使用new分配内存、delete释放内存的模式,不仅需要开发者时刻关注内存生命周期,更可能因疏忽导致内存泄漏(忘记调用delete)、二次释放(重复调用delete),或是在异常抛出时因执行流跳转跳过delete语句等问题 —— 这些隐患轻则导致程序性能退化,重则引发崩溃或不可预期的运行错误,成为项目中难以排查的 “隐形 bug”。 为解决这一痛点,C++ 标准库引入了智能指针这一核心工具。

By Ne0inhk
今天你学C++了吗?——map

今天你学C++了吗?——map

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥✨✨✨✨✨✨ 个人主页✨✨✨✨✨✨ 前面我们已经学习了set容器的使用,接下来我们来看看map容器有什么奇妙之处?准备好了吗~我们发车去探索C++的奥秘啦~🚗🚗🚗🚗🚗🚗 目录 什么是map? pair 什么是pair? pair的组成 pair的构造与初始化 pair的成员函数 pair的比较 编辑 pair的用途 map的构造 map的插入 编辑 operator[ ] at multimap equal_range equal_range、lower_bound和upper_bound简单对比 1. equal_range 2. lower_bound 3. upper_bound 对比与联系 C++中map和set容器的简单对比 什么是map?

By Ne0inhk
【C++】C++异常

【C++】C++异常

🎬 个人主页:MSTcheng · ZEEKLOG 🌱 代码仓库 :MSTcheng · Gitee 🔥 精选专栏: 《C语言》 《数据结构》 《算法学习》 《C++由浅入深》 💬座右铭:路虽远行则将至,事虽难做则必成! 在前面的文章中,我们已经介绍了C++11的一些新特性。本文将和下一篇一起为大家讲解C++的最后两个重要主题:异常处理和智能指针。 文章目录 * 一、异常的概念及使用 * 1.1异常的概念 * 1.2异常的分类 * 1.3异常的抛出与捕获 * 1.4栈展开 * 1.5 查找匹配的处理代码 * 1.6异常重新抛出 * 1.7异常的安全问题 * 1.8异常规范 * 二、总结 一、异常的概念及使用 1.1异常的概念 异常(Exception)是指在程序执行过程中发生的意外或错误情况,

By Ne0inhk
【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发

【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发

C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriority Queue与仿函数模板进阶-模板特化面向对象三大特性-继承机制面向对象三大特性-多态机制STL 树形结构容器二叉搜索树AVL树红黑树红黑树封装map/set哈希-开篇闭散列-模拟实现哈希哈希桶-模拟实现哈希哈希表封装 unordered_map 和 unordered_setC++11 新特性:序章 大家好,我是店小二。本篇文章将深入讲解C++11的新增特性,重点围绕右值引用与移动语义展开,并详细讨论如何利用万能引用实现完美转发。如果在阅读过程中有疑问或不同的见解,欢迎随时私信我进行进一步交流 🌈个人主页:是店小二呀 🌈C语言专栏:C语言 🌈C++专栏: C++ 🌈初阶数据结构专栏: 初阶数据结构 🌈高阶数据结构专栏: 高阶数据结构 🌈Linux

By Ne0inhk
使用现代C++构建高效日志系统的分步指南

使用现代C++构建高效日志系统的分步指南

使用现代C++构建高效日志系统的分步指南 * 1. 确定日志系统的需求和目标 * 2. 设计日志系统的架构 * 3. 实现阶段 * 3.1 实现日志管理器(LogManager) * 3.2 实现日志记录器(Logger) * 3.3 实现日志格式化器(Formatter) * 3.4 实现日志输出器(Outputter) * 3.5 实现日志文件轮转 * 3.6 实现异常处理 * 3.7 实现性能优化 * 4. 测试和验证 * 5. 文档编写 * 6. 总结 在软件开发中,日志系统扮演着关键角色,帮助开发者记录程序运行状态、调试问题以及监控系统性能。使用现代C++构建一个高效且灵活的日志系统,不仅可以提升开发效率,还能增强程序的可维护性和可靠性。以下是构建这样一个日志系统的详细分步指南: 1. 确定日志系统的需求和目标

By Ne0inhk