- 博客(140)
- 收藏
- 关注
原创 【C++项目】微服务即时通讯系统:服务端
本文介绍了聊天室项目的服务器功能设计、微服务拆分、通信接口设计及实现,以及后台服务器的部署。项目采用微服务架构,将功能拆分为网关、用户管理、好友管理、文件管理、消息管理、转发管理和语音转换等子服务,通过 HTTP 和 Websocket 与客户端通信,使用多种框架和库实现服务功能。微服务通信接口详细定义了各子服务的请求响应格式和流程。部署时,利用 Docker 和 docker-compose 实现一键式部署,通过编写 Dockerfile、entrypoint.sh 和 docker-compose.ym
2025-09-20 13:32:15
4274
2
原创 【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
本文介绍了一个基于Reactor模型的高性能HTTP服务器组件实现方案。该项目分为SERVER模块和协议模块两大模块,采用主从Reactor多线程架构,主Reactor负责监听新连接,从Reactor处理IO事件。SERVER模块包含Buffer缓冲、Socket操作、Channel事件管理、Connection连接管理、Acceptor监听管理等子模块,通过Connection实现完整的套接字生命周期管理。项目采用One Thread One Loop思想,每个线程独立处理事件循环,同时支持自定义协议模块
2025-05-29 23:50:20
11399
69
原创 【C++项目】从零实现RPC框架「二」:项⽬设计
本文概述了RPC分布式系统的设计,涵盖基本概念、服务注册发现机制及负载均衡,并详细介绍了服务端与客户端的功能模块,最后展示了系统的三层架构设计。
2025-03-14 00:15:49
5946
93
原创 LangChain与LangGraph介绍
LangChain把提示词、模型、工具串成链,快速搭AI应用;LangGraph用状态图代替单链,支持循环、分支、长期记忆和人机协同,补LangChain短板,适合复杂流程。
2025-11-22 11:02:59
560
原创 LangChain-大模型介绍
模型是“数据炼成的规律工厂”。大语言模型借千亿参数、自监督“完形填空”习得通用语言,聊天写代码样样通。嵌入模型把文字转语义向量,支撑搜索推荐RAG。API、本地、SDK三法接入,敏感数据选本地,快速原型用API。
2025-11-18 20:17:25
3552
原创 CANN多核编程终局:同步、规约与全局结果的诞生
先到的人不能先走,必须在集合点等待,直到最后一个人也到达。这样的**规约类(Reduction)**算子,情况发生了根本性的变化。每个核心都像一个高效的独立王国,处理着自己的“一亩三分地”。这标志着一名CANN开发者,从能够实现“组件”,成长为了能够构建“系统”的真正专家。在上一篇中,我们学会了如何将一个大任务分发给所有AICore,实现了宏伟的数据并行。这意味着,所有核心必须以某种方式进行“沟通”和“协作”,将它们各自计算的局部结果,汇总成一个全局结果。它们唯一的“共同广场”,就是速度较慢的。
2025-11-18 12:31:36
409
原创 最后一公里:我的CANN算子“部署”记,从C++代码到PyTorch函数
对于昇腾NPU,这个桥梁就是**torch_npu**插件。我们的任务,就是把我们用C++写的CANN算子,包装成一个符合torch_npu规范的“插件”,让PyTorch能够认识并调用它。
2025-11-18 12:30:47
247
原创 榨干硬件性能:在CANN算子中实现Double Buffering来隐藏数据搬运延迟
这次,我们直奔主题,讲解一个CANN算子开发中,能显著提升性能的高级优化技巧——**Double Buffering(双缓冲)**。这篇文章将全是技术细节、代码逻辑和原理解析。
2025-11-18 12:30:04
577
原创 我的CANN算子开发“炼成记”:从一行代码都不懂到“手撕”Tiling
幸运的是,对于简单的Add算子,训练营提供了模板化的实现,我依葫芦画瓢,修改了一下数据类型和计算逻辑,然后紧张地按下了编译按钮。“算子”,这个词我听过无数次,知道它是构成神经网络的“原子”,是真正执行计算的单元。大厨每需要一个土豆,就亲自跑到遥远的冰库里,拿一个,再跑回来,在菜板上切好,再跑回去放好。我暂停了视频,在网上查阅了大量资料,又结合昇腾的文档,终于,我构建了一个自认为比较贴切的比喻,才算把这个概念彻底搞明白。跟着老师的引导,我创建了我的第一个算子工程——一个最简单的向量加法(Add)算子。
2025-11-18 12:10:44
376
原创 从“算子工匠”到“系统架构师”:我的CANN开发之旅终极复盘
它让我们从一个API的“使用者”,变成了技术的“驾驭者”。这篇文章将不再引入新的技术点,而是站在更高的维度,审视我们整个学习旅程,探讨从一个应用开发者,转变为一个底层系统工程师,所必须经历的思维蜕变。这些工作,与算子核心的计算逻辑无关,但它们决定了一个算子是“代码片段”,还是一个健壮、易用、可维护的“软件产品”。它为我构建的,不仅仅是一个关于CANN的知识图谱,更是一个如何学习和掌握任何一门复杂底层技术的通用“心法”。从“点”到“面”,从“知其然”到“知其所以然”,从“实现”到“交付”。
2025-11-18 12:09:54
447
原创 【C++17】特性解析
C++17 带来 20 余项重大改进:结构化绑定、inline 变量、if/switch 初始化让代码更简洁;optional、variant、any 统一“可能有值”语义;string_view 零拷贝视图;filesystem 跨平台文件系统;并行算法提速;强制省略拷贝、折叠表达式、模板参数推导、嵌套命名空间等全面提升开发效率与运行性能。
2025-11-15 10:28:08
1353
原创 CANN深度实践:从理论到代码的全面解析
CANN是华为AI计算架构,提供ACL接口、ACLNN算子库和自定义算子开发框架。通过资源调度优化、算子融合和内存管理等技术,显著提升AI应用性能,简化开发流程。
2025-11-12 00:11:51
5546
原创 CANN在智能视频分析场景中的实践应用
CANN实践:城市交通监控,车辆识别。ACL+DVPP,推理提速8倍,功耗降60%,开发周期缩40%。
2025-11-10 21:40:37
14476
1
原创 【C++14】特性解析
C++14是C++11后的次要版本,2014年发布,包含改进和修复。主要特性包括变量模板、泛型lambda表达式、函数返回类型推导、二进制字面量、数字分隔符、聚合类默认成员初始化器、标准库新增功能等。
2025-11-05 10:16:59
1227
原创 【C++11】扩展学习
本文介绍了C++11至C++20的新特性,包括constexpr、auto、decltype、强类型枚举、static_assert、std::tuple、模板元编程等,分析了模板元编程的优缺点,并分享了学习心得。
2025-10-31 11:10:48
1525
原创 【C++组件】RabbitMq 安装与使用
本文介绍了 RabbitMQ 的安装与使用,包括其工作原理、安装步骤、客户端库安装及 AMQP-CPP 的使用方法。还提供了基于 C++ 的简单封装示例,方便项目中使用。
2025-08-27 16:47:36
1721
2
原创 【C++组件】ODB 安装与使用
文章介绍了如何在 Linux 系统中安装和使用 ODB(Open Database),一个 C++ 的 ORM 框架。安装步骤包括使用 build2 工具链,安装 ODB 编译器和运行时库,以及配置 MySQL 数据库。文章还提供了 ODB 的基本使用示例,包括定义持久化类、生成数据库支持代码、执行数据库操作等。最后,提供了 ODB 的官网链接供进一步学习。
2025-08-24 17:05:04
1707
原创 【C++库】cpp-httplib与 websocketpp 安装及使用
本文介绍了 C++ 的两个网络库:cpp-httplib 和 WebSocketpp。cpp-httplib 是一个轻量级的 HTTP/HTTPS 客户端和服务器库,支持同步和异步操作,易于使用。WebSocketpp 是一个实现 WebSocket 协议的 C++ 库,支持 HTTP/HTTPS 和 WS/WSS,适用于实时通信场景。
2025-08-23 16:19:54
1970
原创 【C++组件】Elasticsearch 安装及使用
本文介绍了 Elasticsearch(ES)的安装、使用及客户端 API 的二次封装。通过 Kibana 测试 ES,实现索引创建、数据增删查等功能,并提供 C++ 客户端示例代码。希望对读者有帮助。
2025-08-22 19:56:54
1656
原创 【C++组件】brpc 安装及使用
文章介绍了 brpc,一个用 C++ 编写的工业级 RPC 框架,适用于搜索、存储、机器学习等高性能系统。它支持多种协议,包括 HTTP、Redis、Memcached 等,并提供了同步、异步和半同步的客户端调用方式。文章还提供了安装指南、示例代码和封装思想的介绍。
2025-08-20 19:03:08
1353
原创 Redis应⽤-缓存与分布式锁
本文深入探讨了缓存概念、使用Redis作为缓存的优势、缓存更新策略,以及缓存预热、穿透、雪崩和击穿问题。同时,介绍了分布式锁的实现和Redlock算法,旨在优化数据库性能,提高系统并发处理能力。
2025-08-11 20:36:46
1765
1
原创 Redis:集群(Cluster)
文介绍了Redis集群的搭建、使用和维护。包括集群的基本概念、数据分片算法(哈希求余、一致性哈希、哈希槽分区)、基于Docker的集群搭建步骤、主节点宕机处理、集群扩容与缩容操作,以及代码连接集群的方法。通过详细的操作流程和示例,帮助读者理解和实践Redis集群的管理和优化。
2025-08-08 20:52:36
1296
1
原创 【C++组件】Etcd 安装及使用
Etcd 是一个分布式键值存储系统,使用 Raft 算法保持数据一致性,支持服务注册与发现。本文介绍了 Etcd 的安装、配置及使用方法,包括 C++ 客户端 etcd-cpp-apiv3 的安装和使用样例,以及如何封装服务发现与注册功能。
2025-07-31 10:09:54
1353
原创 【C++组件】Spdlog 日志组件的安装及使用
本文介绍了 spdlog,一个高性能、零配置的 C++ 日志库,支持异步日志记录、多种输出目标和丰富的日志格式化选项。相比 glog,spdlog 在同步和异步场景下性能更优,适合对日志性能要求较高的项目。其简单易用的 API 和强大的功能使其成为开发和生产环境中理想的日志解决方案。
2025-07-24 16:03:30
1314
原创 【C++框架】gflags 和 gtest 安装使用
gflags 是 Google 开发的 C++ 命令行参数解析库,支持多种数据类型,提供自动帮助文档和类型安全,支持多平台。安装简单,使用方便,可通过宏定义参数并在程序中访问。
2025-07-18 20:53:39
1304
原创 Redis:哨兵(Sentinel)
本文介绍了Redis Sentinel的概念、部署、命令、客户端和实现原理。Redis Sentinel通过哨兵节点实现高可用性,自动完成故障发现和故障转移。
2025-07-17 21:27:29
2230
1
原创 Redis:主从复制
本文介绍了Redis主从复制的配置、拓扑结构及原理。配置通过`slaveof`命令或配置文件实现。拓扑包括一主一从、一主多从和树形结构。原理涵盖全量复制、部分复制和实时复制。全量复制在首次连接时同步所有数据,部分复制用于网络中断后的数据补发,实时复制通过TCP长连接保持数据一致性。主从复制可解决单点问题,但存在从节点无法自动升级为主节点的缺点。
2025-07-05 19:03:00
1021
4
原创 Redis:事物
Redis事务类似MySQL事务,但无回滚机制,不保证一致性、隔离性和持久性。其通过“事务队列”批量执行操作。主要命令有MULTI开启事务、EXEC执行事务、DISCARD放弃事务、WATCH监控key防冲突、UNWATCH取消监控。
2025-06-26 10:37:01
1062
3
原创 Redis:持久化
Redis有两种持久化方式:RDB和AOF。RDB是内存快照,文件紧凑恢复快,但不适合实时持久化;AOF记录修改命令,有重写机制压缩文件,可实时持久化但恢复慢。两者都用fork创建子进程进行持久化,减少对主进程影响。
2025-06-25 15:09:05
1026
2
原创 ProtoBuf:通讯录4.0实现 & 序列化能⼒对⽐验证
本文介绍了使用ProtoBuf实现网络通讯录的客户端和服务端交互,通过cpp-httplib库搭建HTTP服务。客户端可新增、删除、查询联系人,服务端提供相应功能并持久化数据。同时,对比ProtoBuf和JSON的序列化性能,ProtoBuf在编码解码速度和内存占用上表现更优。
2025-06-22 16:38:54
1876
1
原创 ProtoBuf:proto3 语法详解
本文详细介绍了ProtoBuf的proto3语法,包括字段规则、消息类型定义与使用、枚举类型、Any类型、oneof类型、map类型等。通过通讯录示例,展示了如何逐步升级版本,实现序列化、反序列化、新增字段等功能。同时探讨了ProtoBuf的默认值、更新消息规则、保留字段、未知字段、前后兼容性以及常用选项等重要概念。
2025-06-21 17:25:24
1152
4
原创 Redis:渐进式遍历
本文介绍了 Redis 的渐进式遍历命令 SCAN,解决了直接使用 keys 命令可能导致的阻塞问题。通过游标分批次遍历键,支持模式匹配和类型筛选。同时,文中提到在遍历过程中避免对数据进行增删改操作,以防出现遗漏。
2025-06-12 20:56:17
1066
6
原创 Redis:set类型和zset类型
本文介绍了 Redis 的 Set 和 Zset 类型,包括命令、内部编码及使用场景。Set 是无序集合,支持交并差集操作;Zset 是有序集合,支持按分数排序和范围查询,适用于排行榜等场景。
2025-06-11 20:26:45
1037
2
原创 ProtoBuf:快速上⼿
文章介绍了ProtoBuf的基本概念、使用流程及在C++中的应用,包括创建.proto文件、编译生成C++代码、序列化与反序列化操作。
2025-06-10 19:18:49
684
3
原创 初识 ProtoBuf 与安装
文章介绍了序列化和反序列化的概念,ProtoBuf的特点、使用方法及在Windows和Linux下的安装步骤。
2025-06-08 15:30:38
1748
67
原创 Redis:List类型
文章介绍了Redis的List数据类型及其命令(如LPUSH、RPUSH、LRANGE等),内部编码方式(ziplist和linkedlist),以及使用场景(如消息队列、分频道消息队列、微博Timeline)。
2025-06-07 17:16:28
1385
10
原创 Redis:Hash数据类型
文章介绍了Redis的哈希数据类型及其命令(如HSET、HGET、HDEL等),内部编码方式(ziplist和hashtable),以及使用场景(如缓存用户信息)。
2025-06-07 10:45:24
922
5
原创 Redis:string数据类型
文章介绍了Redis字符串类型及其命令(SET、GET、MGET、MSET等),内部编码(int、embstr、raw),以及使用场景(缓存、计数、共享会话、手机验证码)。
2025-06-05 09:24:20
1148
1
原创 Redis:常用数据结构 & 单线程模型
文章介绍了Redis的常用数据结构(如string、hash、list、set、zset)及其内部编码方式(如raw、int、embstr、hashtable、ziplist等),并分析了Redis单线程模型的工作原理及其优缺点。
2025-06-03 19:31:32
1106
7
原创 Redis:安装与常用命令
文章介绍了Redis的安装、配置、启动、常用命令(如`set`、`get`、`keys`、`exists`、`del`、`expire`、`ttl`、`type`)及删除策略,强调了`keys *`的潜在风险和Redis作为缓存的重要性。
2025-06-01 15:35:30
1078
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅