自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《简单了解并构建LangChain》

安装 OpenAI 包完整代码HumanMessage(content = '你是谁')#result 不是纯字符串,而是一个对象messages是一个对话列表(chat history)SystemMessage:表示系统角色消息(system role),用于在对话开始时对模型进行全局行为约束和上下文设定。HumanMessage:表示用户角色消息(user role),是从用户发送到模型的输入内容。content=‘你好!我是通义千问(Qwen),阿里巴巴集团旗下的超大规模语言模型。

2026-04-13 16:09:18 399

原创 《C#反射机制》

反射是.NET框架提供的一种机制,允许程序在**运行时(Runtime)**获取自身或外部程序集(Assembly)的元数据(Metadata),并能够动态地查看类型信息、创建对象实例、调用方法或访问属性,即使你在编写代码时完全不知道这些类型的存在。

2026-03-26 16:43:44 376

原创 《算法:生产车间》

再继续计算2节点能传递的节点值,注意,2和4值都属于6节点,不能相加,这里就涉及到分组问题。可以把叶子节点权重看作输出,而其他节点则是能接收多大的值,最后算出根节点能拿到的最大的值。先找到叶子节点并且把能传递的值和多个叶子节点叠加的值存到6节点中。最后算出根节点从左右节点中能拿到的最大值。

2026-03-20 19:10:24 257

原创 《Linux进阶命令》

先通过 ps -ef 查看所有进程,再用 grep 过滤出包含 “nginx” 的进程行。grep 常和其他命令通过 ** 管道(|)** 配合,过滤命令输出。简单来说,grep 就是帮你在大量文本中快速定位关键内容的工具~简单来说,tcpdump 就是 网络显微镜 ,分析通信细节。简单来说,ss 就是 网络雷达 ,扫描所有连入连出的连接。简单来说,tail -f 就是 日志直播。简单来说,jq 就是 JSON 整形师。

2026-03-07 10:51:21 407

原创 《微服务即时通讯中Etcd的作用》

在 MIMP 项目中, etcd 是动态的、实时的服务通讯录。代码中 Registry 类利用 Lease 机制实现了 自动注销。代码中 Discovery 类利用 Watch 机制实现了 实时感知。这保证了 Gateway 永远只把请求发给活着的服务节点,实现了系统的高可用。etcd 就是 MIMP 项目的**“活地图”**。它保证了 Gateway 能实时找到所有的后端服务,并且在某个服务宕机时,能立刻感知并停止向其转发请求,确保系统的高可用。

2026-03-05 22:42:11 447

原创 《LRU算法——C++》

LRU 就是一种**“喜新厌旧”**的策略:谁刚被宠幸过,谁就排前面;谁由于太久没被临幸而掉到了队尾,一旦没地方了,第一个干掉的就是他。

2026-02-12 17:49:45 653 1

原创 《对brpc信道的封装》

在 BRPC 中,信道(Channel) 是客户端与服务端通信的核心组件,负责管理网络连接、协议解析、请求发送 / 响应接收等底层逻辑,是隐藏网络细节、让开发者像调用本地函数一样发起远程调用的关键。简单说:信道封装了所有网络通信细节,客户端只需通过信道发起调用,无需关心 “数据如何发送到服务端”“如何处理网络异常” 等问题。

2026-02-10 22:55:41 681

原创 《字节面经类型整理——c++后端开发》

HTTP 是明文传输协议,安全性低;HTTPS 在 HTTP 之上通过 TLS/SSL 加密数据,并通过证书验证服务器身份,安全性更高。HTTPS 默认端口是 443。

2026-02-10 21:50:48 624

原创 《vector的动态扩容等问题》

为什么每次扩容不是“只增加 1 个位置”或者“增加固定 100 个位置”,而是按比例(1.5倍或2倍)增长?如果每次只加 1 :插入 N 个元素,需要搬家 N 次。每次搬家的成本是 O(N),总的时间复杂度会退化成 O(N^2)。如果是成倍增长 :虽然单次扩容很慢(O(N)),但扩容一次后,可以安稳很久。数学证明 :通过 摊还分析 (Amortized Analysis) 可以证明,将 N 个元素插入 vector 的总时间是 O(N),平均到每一次插入操作,时间复杂度依然是 O(1)。

2026-02-06 17:43:56 617

原创 《微服务即使通讯中RabbitMQ的作用》

RabbitMQ 是该即时通讯系统应对 高并发写入 的“减震器”。它用极小的延迟换取了系统极大的稳定性,是工业级 IM 架构中不可或缺的组件。整个过程的代码流向为:(用户请求)->(补全信息)->MQ Publish(RabbitMQ)->(异步消费)->(上传大文件)->(最终落盘)这种设计确保了高并发下的系统稳定性,即使 MySQL 暂时写入缓慢,MQ 也能堆积消息,不会阻塞用户的发送操作。

2026-01-29 17:55:38 664

原创 《微服务即使通讯中redis的作用》

Redis 在本项目中主要负责“快” (缓存鉴权/状态)和 “短”(验证码生命周期管理),是保障 IM 系统高并发、低延迟的核心组件。

2026-01-29 16:55:58 514

原创 《微服务即使通讯中ES的作用》

在注册环节写入 ES,是为了确保用户一旦注册成功,就能立即被其他用户通过搜索(昵称或手机号)找到。这是实现 IM 系统“找朋友”和“搜消息”功能的基石。

2026-01-29 16:48:59 391

原创 《堆 / 栈 / 静态区区别、内存泄漏原因及排查》

堆内存泄漏:程序员通过new/malloc在堆上分配了内存,后续既没有执行delete/free释放,又失去了所有指向该堆内存的指针,导致这块内存成为「不可访问的垃圾内存」—— 程序运行期间无法再使用,也无法释放,直到程序退出后由操作系统回收。//new 了不 delete} // 忘记 delete//指针被覆盖// 原内存丢失//️ new[] / delete 不匹配delete arr;// 应该 delete[]️//循环容器中持续 newfor (;;) {

2026-01-28 22:12:12 1118

原创 《析构函数导致的内存泄露等问题》

解决方法:手动实现析构函数,显式释放动态资源释放敏感数据的动态内存时,必须先擦除(memset 置 0)再释放,避免内存中的敏感数据被恶意恢复。

2026-01-28 21:50:46 915

原创 《ODB——C++与数据库之间的管家,从安装到实战》

ODB(Object-Relational Mapping)是一款专为 C++ 设计的对象关系映射工具,能让开发者用面向对象的方式操作数据库,无需手动编写复杂的 SQL 语句。本文将从环境搭建到实战案例,带你一步步掌握 ODB 的核心用法,即使是新手也能快速上手。

2025-10-31 16:48:00 464

原创 《AMQP-CPP——轻量级的 RabbitMQ C++ 客户端库》

RabbitMQ 本身是基于 Erlang 开发的消息队列服务端,可以通过 AMQP 协议 结合 C++ 客户端库来实现 C++ 程序与 RabbitMQ 的交互。目前主流的 C++ 客户端库是 AMQP-CPP,它提供了对 AMQP 协议的封装,让 C++ 程序能够像前面的示例那样,完成连接 RabbitMQ、声明交换机 / 队列、发布 / 消费消息等操作。

2025-10-31 16:47:38 1131

原创 《快速上手Brpc库——服务之间的高速快递系统》

在分布式系统中,RPC(远程过程调用)是服务间通信的核心技术。百度开源的 BRPC 框架以高性能、多协议支持、易用性著称,非常适合构建高并发场景下的分布式服务。本文将基于完整的代码示例,带你从 0 到 1 掌握 BRPC 的基本使用,包括协议定义、服务端实现、客户端调用全流程。

2025-10-15 16:45:17 1117

原创 《Redis库基础使用》

Redis(Remote Dictionary Server ,远程字典服务)是一个基于键值对的开源内存数据库,由 Salvatore Sanfilippo 开发,使用 ANSI C 语言编写。

2025-10-15 16:39:56 695

原创 《Protobuf 通讯录开发》

使用 Protocol Buffers(Protobuf)来构建通讯录,能够高效地进行结构化数据的存储与传输。下面从消息定义、代码生成、不同语言实现以及调试和优化方面,为你详细介绍如何实现一个基于 Protobuf 的通讯录:

2025-09-24 11:19:21 1070

原创 《proto3 语法详解》

Protocol Buffers(简称 Protobuf)是 Google 开发的一种语言无关、平台无关的序列化结构数据格式。Proto3 是其第三个主要版本,相比 Proto2 简化了语法并增强了跨语言支持,成为当前主流的使用版本。

2025-09-24 11:17:48 1190

原创 《Protobuf库——序列化工具》

在日常开发中,你是否经常被 “数据传输格式” 的问题困扰?JSON 虽灵活但体积大、性能一般,XML 冗余度高且解析复杂,尤其是在高性能场景(如后端服务通信、物联网设备数据交互)中,这些文本格式的短板愈发明显。今天要介绍的 Protocol Buffers(简称 Protobuf),正是 Google 为解决这些问题而生的高效数据序列化协议,它凭借 “小体积、快速度、强兼容” 的特性,成为跨语言、跨平台数据交互的首选方案之一。

2025-09-22 15:57:16 1271

原创 《etcd库——键值存储系统》

etcd 是开源分布式键值存储系统,具备高可用、强一致性、简单易用、支持事件监听等核心特点。典型应用于服务发现(助力分布式系统服务实例的动态发现)、配置管理(集中存储并实时更新应用配置)、分布式锁(保障分布式环境下操作互斥性)等场景。工作时依托 Raft 算法,区分 Leader 和 Follower 节点实现数据同步与一致性,与传统关系型数据库相比更适合高并发、轻量数据场景,和分布式缓存系统相比更侧重数据可靠性。

2025-09-22 14:30:32 848

原创 《C++ 常见概念知识整理》

常见C++概念整理

2025-09-18 00:13:19 984

原创 《C++11——array》

在 C++ 编程中,数组是很基础的数据结构,但原始数组用起来总有些 “不痛快”—— 没有便捷的方法获取长度、越界访问没检查、和 STL 算法结合也不顺畅。而 std::array 的出现,完美解决了这些问题,它既保留了原始数组固定大小、内存连续的优点,又融入了 STL 容器的便捷特性。今天,咱们就来轻松上手 std::array~

2025-09-17 23:56:37 1142

原创 《spdlog——高性能日志库快速上手》

在 C++ 开发过程中,日志系统是调试程序、监控运行状态和排查问题的重要工具。而 spdlog 作为一款现代 C++ 日志库,凭借其高性能、易用性和丰富功能,成为了众多开发者的首选。本文将带你一步步掌握 spdlog 的使用方法,让你在项目中轻松集成专业级日志功能。

2025-09-16 21:52:32 1069 2

原创 《gflags——命令行参数》

在 Linux C++ 开发中,命令行参数解析是几乎每个程序都绕不开的需求。从简单的 ./app --help 查看帮助,到复杂的服务配置(如端口、日志级别、超时时间),一个高效的参数解析库能极大提升开发效率。今天要介绍的 gflags(由 Google 开源),正是这样一款轻量、易用且功能强大的工具,它彻底告别了传统 getopt 繁琐的手动解析逻辑,让参数处理变得优雅而高效。

2025-09-15 00:07:05 952

原创 《Linux线程——从概念到实践》

在计算机世界里,程序的运行效率始终是开发者追求的核心目标之一。传统的单进程模型如同 “单线程工人”,一次只能处理一项任务,在面对复杂业务或高并发场景时显得力不从心。而 线程(Thread) 的出现,如同为程序配备了 “多线程工人团队”—— 它们共享资源却又能独立执行,让程序在效率与灵活性上实现了质的飞跃。

2025-09-13 16:19:30 1069

原创 《Linux——轻松上手vim编辑器》

为了让刚接触 vim 的人快速上手,这篇博客会从 vim 的基础认知讲起,涵盖启动与退出、核心操作模式切换,再到实用编辑技巧和配置优化,用清晰步骤和示例帮助读者掌握 vim。

2025-09-13 15:58:10 1442

原创 《Linux常见命令》

介绍了Linux常用命令及其功能

2025-09-12 02:03:26 1189

原创 《C++ 常见关键字知识整理》

本文总结了C++中常用的关键字及其作用

2025-09-10 22:21:42 847

原创 《C++——多态》

对C++多态的知识进行归纳总结

2025-09-10 01:24:06 1050

原创 《C++——继承》

C++关于继承相关知识整理

2025-09-10 00:54:57 1035 1

原创 《MySQL基础——C 语言链接》

在后端开发中,C 语言凭借高效的性能,常被用于开发对响应速度和资源占用敏感的数据库交互程序。而 MySQL 作为主流关系型数据库,提供了专用的 C 语言接口库,支持开发者通过代码直接操作数据库。本文基于 14-MySQL 使用C语言链接.pdf 内容,从环境准备、库文件解析到核心接口调用,完整拆解 MySQL 与 C 语言的联动流程。

2025-09-07 17:56:21 1183

原创 《MySQL基础——用户管理》

在 MySQL 数据库运维中,“一刀切” 使用 root 用户存在巨大安全隐患 ——root 拥有所有数据库的最高权限,一旦账号泄露或误操作,可能导致数据丢失、篡改等严重问题。合理的用户管理能实现 “最小权限原则”,让不同用户仅能操作自己负责的数据库,既保障安全又便于协作。本文基于13-MySQL用户管理.pdf,详解用户创建、密码修改、权限分配等核心操作。

2025-09-07 17:36:57 1021

原创 《MySQL基础——视图》

视图是SQL中的虚拟表,由查询语句定义但不存储数据,查询时动态生成结果。核心特性是视图与基表的双向数据联动:修改视图数据会影响基表,修改基表数据也会在视图中同步显示。基本使用包括创建视图(CREATE VIEW)、查询视图、修改视图数据(自动更新基表)和删除视图(DROP VIEW)。视图需遵循唯一命名、不能添加索引等限制,但能提升数据安全性,可与真实表联用。实战案例展示了如何创建查询员工和部门信息的视图,并验证视图与基表的双向数据同步特性。

2025-09-07 10:25:10 433

原创 《MySQL基础——索引特性》

在数据库性能优化中,索引无疑是 “性价比之王”—— 无需增加硬件、修改业务代码或调整 SQL 语句,只需合理创建索引,查询速度就能提升成百上千倍。但索引并非 “银弹”,它以牺牲写入性能(插入、更新、删除)为代价。本文将从底层原理出发,带你全面理解 MySQL 索引的特性、实现机制及实战技巧。

2025-09-07 10:08:03 596

原创 《C++——Lambda表达式》

为了帮助刚接触 C++ Lambda 的开发者快速上手,这篇博客会从基础概念讲起,结合实用场景和代码示例,逐步讲解 Lambda 的用法,让读者能轻松理解并运用这一特性。

2025-09-06 00:17:40 1593

原创 《C++——单例模式》

本文将以 C++ 为主要实现语言,从单例模式的核心定义出发,详解多种经典实现方式的优劣,结合实战场景分析其应用价值,最后梳理避坑要点,帮你真正吃透这一高频设计模式。

2025-09-05 23:28:30 850

原创 《MySQL基础——内外连接》

在 MySQL 多表查询中,“表连接” 是核心技术之一,它解决了数据分散在不同表中的关联查询问题。根据数据匹配规则的不同,表连接可分为内连接和外连接(含左外连接、右外连接),不同连接方式适用于不同业务场景。本文将从概念、语法、案例三个维度,带你彻底掌握 MySQL 表连接的用法,尤其聚焦实际开发中高频使用的外连接场景。

2025-09-04 10:10:05 972

原创 《MySQL基础——复合查询》

在实际开发中,仅靠单表查询往往无法满足复杂业务需求 —— 比如要同时展示员工信息、所属部门名称及工资等级,数据可能分散在EMP、DEPT、SALGRADE多张表中。MySQL 的复合查询正是解决这类问题的核心技术,它涵盖多表联合查询、自连接、子查询、结果合并等多种能力。本文将从基础回顾出发,系统拆解复合查询的核心用法,并结合实战案例演示如何灵活运用。

2025-09-04 06:14:23 889

空空如也

空空如也

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

TA关注的人

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