自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

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