- 博客(423)
- 资源 (2)
- 收藏
- 关注
原创 最全的 MCP协议的 Stdio 机制代码实战
本文介绍了如何结合 MCP 协议和智谱 AI 平台实现一个简单的工具调用系统。通过注册智谱 AI 平台获取 API Key,并编写 MCP Server 和 Client 代码,实现了工具函数的注册、调用以及与智谱 AI 的交互功能。代码示例包括了工具函数的定义、服务器的启动、客户端的连接以及查询处理逻辑。
2025-06-13 16:34:42
217
原创 一文搞懂 TCP TCP/IP 和 TCP/IP网络分层之间的联系和区别
本文介绍了TCP、TCP/IP协议族和TCP/IP模型的概念、联系与区别。TCP是传输层协议,提供可靠、面向连接的传输服务;TCP/IP协议族是互联网通信的基础协议集合,包含多种协议;TCP/IP模型是分层架构,定义各层功能和协作方式。三者共同实现网络互联和数据通信
2025-06-11 19:31:14
854
原创 一文搞懂 python 的 Uvicorn、Starlette以及 FastAPI 联系和区别
Uvicorn、Starlette和FastAPI构成Python异步Web开发技术栈:Uvicorn作为ASGI服务器提供高性能网络层;Starlette是轻量级框架,负责路由和中间件等基础功能;FastAPI基于Starlette构建,通过Pydantic实现数据验证并自动生成API文档。三者协作时,Uvicorn处理协议解析,Starlette管理请求路由,FastAPI完成业务逻辑。FastAPI+Uvicorn组合兼顾开发效率与性能(接近Go语言水平),适合快速构建标准化API,而Starlett
2025-06-11 17:12:02
950
原创 多智能体大语言模型系统频频翻车?三大失败根源与解决方案全解析
本文深入剖析了多智能体系统(MAS)在实际应用中失败的底层逻辑,并提出了实用的诊断与优化方案。通过对7个主流MAS框架和200多个任务的分析,构建了MAS失败分类学(MAST),揭示了规格设计问题、智能体协作失调和任务验证缺陷三大类问题。研究指出,系统性缺陷是主要问题,而非LLM本身。基于MAST分类学,论文提出了详细的优化方案,包括架构级重构、效率优化和工具链集成等,旨在帮助开发者构建更可靠的多智能体系统
2025-06-11 15:00:00
931
原创 MCP协议三种传输机制全解析
本文介绍了MCP(Model Context Protocol)协议的三种主要传输机制:Stdio、SSE和Streamable HTTP。每种机制针对不同场景设计,具有各自的优势和局限。Stdio适用于本地进程间通信,简单易实现;SSE支持服务器向客户端的单向实时数据推送,但即将被废弃;Streamable HTTP基于HTTP/2实现双向流式传输,适用于高并发分布式系统。文章还提供了选择建议,并分析了这些传输机制的技术来源及MCP协议的贡献。
2025-06-06 15:41:46
969
原创 一文搞懂 python __init__.py 文件
本文系统讲解了Python中__init__.py文件的四大核心作用:1)标识目录为Python包;2)初始化包级代码;3)控制模块导入(包括批量导入和定义__all__);4)共享包级变量/函数。通过一个完整案例,展示了如何构建包含子包的Python项目,包括:使用__init__.py简化导入路径、控制暴露接口、隐藏内部实现、共享配置信息等。文中详细说明了__all__的作用和执行顺序规则,并提供了典型应用场景下的代码示例,帮助开发者掌握Pyth
2025-06-05 17:22:05
752
原创 FastMCP vs MCP:协议标准与实现框架的协同
本文探讨FastMCP与MCP的关系及差异。MCP是Anthropic提出的LLM通信开放协议标准,而FastMCP是其Python实现框架。两者在协议规范上保持一致,但FastMCP通过装饰器语法、自动Schema生成等特性大幅提升开发效率。关键差异在于:MCP定义通用规范,FastMCP专注Python生态并提供服务组合、多协议传输等企业级功能。FastMCP的核心价值在于对MCP协议进行高度封装,开发者无需深入底层即可快速构建合规服务。文章指出,FastMCP
2025-06-03 20:24:32
848
原创 为什么MCP可以适配不同LLM
本文探讨了MCP(Model Context Protocol)如何兼容各种LLM(大型语言模型),即使这些模型不支持Function Call。MCP通过协议分层解耦、执行层统一接管以及动态协商与扩展能力,实现了对不同LLM的兼容性支持。文章详细介绍了MCP的工具调用机制、执行流程以及实际案例,同时分析了MCP的优势与挑战
2025-05-27 19:14:22
678
原创 解锁 MCP 中的 JSON-RPC:跨平台通信的奥秘
本文深入探讨了RPC(远程过程调用)与HTTP在网络通信中的差异及其适用场景,并重点介绍了JSON-RPC协议。RPC通过封装底层通信细节,使开发者能像调用本地方法一样调用远程服务,具有透明性、标准化和跨语言支持等特征。JSON-RPC作为一种基于JSON的轻量级RPC协议,具备轻量高效、跨平台、灵活扩展和安全性等优势,特别适用于MCP(Model Context Protocol)等需要标准化通信框架和复杂交互场景的AI协议。文章还通过示例代码展示了JSON-RPC的服务器端和客户端实现,并对比了不同JS
2025-05-26 17:21:56
1317
原创 Web架构全解析:8种类型优缺点及场景
shengjk1,一位拥有多年大厂经验的开发者,致力于创建通俗易懂且有趣的编程语言教程。他最近在总结Web领域常见的架构类型,以便更好地选择适合的架构模式。文章详细介绍了九种主要架构,包括分层架构、微服务架构、事件驱动架构、无服务器架构、服务导向架构、容器化架构、单体架构、分布式架构和云架构。每种架构都描述了其特点、优缺点及适用场景,帮助读者根据业务需求、团队能力和运维成本做出明智选择。文章强调,实际应用中常结合多种架构模式,选择时需综合考虑各方面因素。
2025-05-16 10:59:56
837
原创 序列化和反序列化:从理论到实践的全方位指南
本文详细介绍了序列化和反序列化的概念、重要性以及与普通字符编码转换的区别。重点探讨了序列化在网络传输、数据持久化和跨平台兼容性中的核心价值,并通过对比分析了不同序列化协议(如JSON、Protobuf、Thrift等)的优缺点及适用场景。同时,提供了序列化方案选择指南、协议扩展性设计原则和典型错误规避建议,帮助读者更好地理解和应用序列化技术
2025-05-14 17:26:51
678
原创 一文搞定 Python 装饰器
本文介绍了Python装饰器的多种使用方式及其在实际开发中的应用。装饰器是一种动态增强函数或类功能的高阶编程工具,通过包装函数或类实现代码复用。文章详细讲解了基础装饰器、带参数的装饰器、类装饰器、装饰器堆叠、保留元信息的装饰器以及内置装饰器的实现原理和代码示例。此外,还探讨了装饰器在性能测试、权限校验和缓存优化等实际场景中的应用。装饰器的核心优势在于代码复用与模块化、非侵入式代码增强,能够显著提升代码的可维护性和扩展性。通过灵活组合装饰器,开发者可以更高效地处理横切关注点,保持业务逻辑的纯净性。
2025-05-12 16:15:33
899
原创 python 的 uv、pip 和 conda 对比和技术选型
本文对比了 Python 包管理工具 uv、pip 和 conda,从工具定义与核心功能、关键维度、核心特性、适用场景、技术选型建议、未来趋势与风险提示等方面进行了详细分析,为后续选择打下基础。
2025-05-12 14:57:10
902
原创 没有写一行代码,上线了一个网站
本文介绍了作者利用 AI 编程实现一个个性化工作倒计时网页的过程。作者希望创建一个能设定下班时间、显示倒计时并定时提醒和鼓励的网页,通过与 AI 的多次交互,不断优化网页布局和功能,最终借助 GitHub Pages 成功部署网站。
2025-05-09 15:49:48
327
原创 一文读懂计算机网络两大模型:OSI与TCP/IP
本文介绍了计算机网络中ISO/OSI参考模型和TCP/IP模型的联系与差异,分析了两者的诞生背景及实际应用情况。ISO/OSI模型采用七层架构,理论性强但实现复杂;TCP/IP模型基于四层架构,简洁高效且广泛应用于互联网。TCP/IP模型是实际网络工程的主流选择,而OSI模型主要用于教学和理论研究
2025-05-07 15:33:02
431
原创 SparkSQL Join的源码分析
本报告详细介绍了SparkSQL中Join的实现方式,包括Broadcast Join、Hash Join(包括Shuffle Hash Join)和Sort Merge Join。通过分析它们的实现原理、工作流程和适用场景,我们可以更好地理解SparkSQL中Join操作的内部机制。在实际应用中,选择合适的Join策略对于提高SparkSQL查询性能至关重要。根据表的大小、数据分布和内存资源选择合适的Join策略,可以显著提高Join操作的性能。
2025-04-15 19:33:07
571
原创 SparkSQL Join深度解析:三种实现方式全揭秘
本文全面剖析了SparkSQL中Join操作的三种主要实现方式:Broadcast Join、Hash Join(包括Shuffle Hash Join)和Sort Merge Join。详细阐述了每种Join的实现原理、适用场景、优缺点以及实现细节。同时,结合表大小、数据分布和内存资源等因素,给出了Join策略选择的建议,并提出了性能优化措施,包括选择合适的Join策略、使用Join提示、调整配置参数、优化数据分区、合理管理内存以及处理数据倾斜等。
2025-04-15 17:15:41
1195
原创 一文搞懂 Iceberg 的 branch 和 tags
本文介绍了 Apache Iceberg 的分支(Branch)和标签(Tag)功能,通过类 Git 的机制解决大数据场景下的数据版本管理和数据隔离问题,实现 ACID 事务、隔离实验和精准回溯。同时提到 Nessie 作为多表事务管理的解决方案。
2025-04-10 14:53:55
987
原创 快速搞懂湖仓一体的发展历程:错过它,你将失去下一个大数据风口!
本文介绍了数据湖仓一体架构的发展历程和优势。从OLAP数据库及其限制出发,阐述了第一代数据仓库、基于Hive的数据仓库、MPP架构和其他计算引擎、数据湖、数据湖表格式以及数据湖仓的出现和发展。最后总结了数据湖仓在云环境中的优势,如存储和计算资源的解耦,提高了灵活性和成本效益。
2025-04-08 18:40:47
944
原创 JuiceFS vs HDFS,最简单的 JuiceFS 入门
本文详细对比了 JuiceFS 和 HDFS 两种分布式文件系统。JuiceFS 是一种新型的云原生存储解决方案,具有 POSIX 兼容、HDFS 兼容、S3 网关支持、强一致性、高性能、数据安全等核心特性,适用于云原生环境、AI 训练和海量小文件管理等场景。其架构基于存算分离,元数据存储在独立数据库中,数据存储在对象存储中,支持弹性扩展和分布式事务。JuiceFS 在元数据操作、数据读写性能、缓存机制等方面均优于 HDFS,同时通过纠删码和加密技术降低了存储成本并提升了数据安全性。相比之下,HDFS 是传
2025-04-02 17:11:14
923
原创 一文搞懂Flink 的 Materialized Table:简化数据管道的利器
Flink 的 Materialized Table 为简化数据管道的开发和管理提供了一种强大的解决方案。它通过统一流批处理、降低开发成本、提高数据处理灵活性等方式,帮助用户更高效地应对复杂的数据处理需求。虽然目前还存在一些限制,但随着技术的不断进步和社区的努力,这些问题有望得到解决。对于需要构建高效、灵活数据管道的开发者来说,Materialized Table 是一个值得深入探索和应用的技术。
2025-03-25 13:48:44
1153
原创 掌握 Apache Iceberg 的关键:Equality Delete 和 Position Delete 的原理与应用
Equality Delete 是一种基于字段值的删除方式。它通过指定某些字段的值来标记需要删除的行。简单来说,就是告诉系统:“所有满足这个条件的记录都要被删除。” 例如,如果你想删除所有id=3的数据,Equality Delete 就会在删除文件中记录id=3这个条件。Position Delete 是一种基于数据文件位置的删除方式。它通过指定数据文件的路径和行号来标记需要删除的行。简单来说,就是告诉系统:“在某个文件的第几行,这个记录要被删除。
2025-03-24 19:18:43
919
原创 JVM如何处理Java中的精度转换: 从源码到字节码
Java中的类型转换机制是其类型系统的重要组成部分。理解自动类型提升和显式类型转换的规则,以及JVM如何处理这些转换操作,对于编写高效、正确的Java代码至关重要。了解类型精度等级,避免不必要的精度损失在需要高精度值的地方使用高精度类型在进行显式类型转换时,注意可能的数据丢失和溢出问题避免在性能敏感代码中进行频繁的类型转换和装箱/拆箱操作理解不同上下文(赋值、运算、方法调用等)中的类型转换规则掌握这些知识将帮助你写出更加健壮和高效的Java代码。
2025-03-23 09:39:15
843
原创 Flink 水位线全解析:从原理到实战,彻底掌握事件时间处理!
本文深入探讨了 Apache Flink 中的水位线(Watermark)机制,特别是 WATERMARK FOR event_time AS event_time 的语法及其在实际应用中的重要性
2025-03-17 14:48:08
652
原创 只会写代码的程序员,注定没有出路!
只会写代码的程序员正在面临职业危机。随着 AI 技术的快速发展,重复性编码工作逐渐被自动化工具取代,程序员的竞争力不再局限于代码能力,而是转向解决问题的能力。此外,程序员群体普遍存在的沟通短板也限制了职业发展。未来,程序员需要跳出“技术至上”的思维,提升业务理解力、用户洞察力和跨领域沟通能力,才能适应行业变化,抓住更多机会(如专利创新等),实现职业突破。只会写代码的程序员没有出路,技术与业务、沟通并重的复合型人才才是未来的赢家。
2025-03-13 19:50:20
225
原创 Flink 中RocksDB 为什么将每个键和值的限制为 2^31 字节
RocksDB 的 JNI 桥接 API 对键值大小限制为 2³¹ 字节(约 2GB),其根本原因是 **JNI 接口设计中的 `jint` 类型限制**。JNI 在传递键值数据长度时使用 `jint`(32 位有符号整数),最大值为 2³¹−1,导致无法支持更大的数据。尽管 RocksDB 的 C++ 原生 API 支持更大的键值,但 JNI 桥接层出于稳定性和兼容性考虑,显式约束了键值大小。Java 数组的最大长度(`Integer.MAX_VALUE`)与此限制一致,但并非直接原因
2025-03-13 19:43:02
362
原创 数据湖出现的背景、现状与未来
本文介绍了数据湖(Data Lake)的概念、功能、架构、优势、挑战以及与数据湖仓(Data Lakehouse)的融合。数据湖是一种用于存储海量原始数据的架构,支持结构化、半结构化和非结构化数据的直接存储和访问,具有可扩展性强、灵活性高、成本效益好以及促进数据民主化的特点。其架构包括数据摄取层、存储层、处理层和访问层,能够支持大数据分析、机器学习等多种应用场景。然而,数据湖也面临数据治理、技能缺口和数据沼泽等挑战。文章还探讨了数据湖与数据湖仓的结合,指出数据湖仓融合了数据湖和数据仓库的优势,能够提供更好的
2025-03-12 11:19:04
767
原创 AI编程:吞噬者还是进化之翼?
AI编程工具的普及正在深刻重构程序员的认知生态。研究表明,过度依赖AI可能导致算法思维退化、代码记忆丧失及技术深度理解弱化,催生出依赖提示词却疏于底层原理的“工具化开发者”。然而,技术进化并非零和博弈——通过“原始编程”训练、人机协同工作法的创新及认知防火墙的建立,程序员可在保留核心思维能力的同时,将AI转化为增强创造力的“外接大脑”。未来的关键在于平衡效率与深度,既善用AI突破生产力边界,又通过持续的基础认知训练守护技术主权,最终实现人类开发者与智能工具的共生进化。
2025-03-03 19:34:09
756
原创 AI编程来了,程序员要失业了?
AI 编程被炒的火热,很多人都在鼓吹,甚至行业内的大厂,吹的最牛逼的就是某阿里 ,其他的公司就不一一列举了。在大模型领域,我不认为阿里会强过 Claude,所以我基于 Claude-3.5-Sonnet,完全沉浸式编码完成一个任务 我通过AI编程完成了第一个实用程序
2025-02-28 19:40:14
409
原创 我通过AI编程完成了第一个实用程序
我一直想要开发一些程序,来解决工作生活中的一些困点,但一直没有实施出来,主要是因为GUI不太熟悉,但也不想花费大量的时间来学习这个。其实之前也试图学过 pyQT但后来因为工作的原因,不了了之了。但最近 AI 编程被吹嘘的太厉害了,所以我也想借助AI 的力量来实现我想要的功能,于是乎一款对 word 和 pdf 内容搜索的工具就诞生了。
2025-02-28 19:25:14
435
原创 Spark Drive 端的 List 无法获取 Executor 中的数据吗?
文章探讨了在 Apache Spark 中,Driver 端 和 Executor 端 内存隔离的问题,特别是当在 Executor 端 修改 Driver 端 创建的 List 时,修改不会生效的原因。文章详细解释了 Spark 的分布式架构、数据传递机制,并提供了解决方案,如使用 collect、累加器、广播变量等方法来实现 Driver 端 和 Executor 端 之间的数据同步。
2025-02-14 19:19:26
738
原创 在Java中,equals()和contains()谁更快
在大多数情况下,equals()方法比contains()更快,主要得益于其快速失败机制(如长度差异或早期字符不匹配)。但需注意:场景适配:如果目标是判断子串存在性(而非完全相等),只能使用contains()。内容复杂度:若比较的字符串完全相等且较长,两者的耗时差异较小。综上,从性能角度优先选择equals()(当满足功能需求时),而contains()适用于子串匹配的特定场景。
2025-02-13 13:24:23
327
原创 公司绩效的本质跟大学申请社团是一致的
在经过N年的绩效生活之后,豁然开朗了,绩效的本质就是看你成绩被炫耀出来了多少加上可以决定你绩效的人对你的看法。这不由的让我进行了时间穿梭,回到了 X 年前的大三时刻。
2025-01-23 11:25:30
652
原创 从零开发操作系统-聊一聊C语言中的头文件
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:1. 了解大厂经验1. 拥有和大厂相匹配的技术等希望看什么,评论或者私信告诉我!@[TOC](文章目录)# 一、背景其实也没有啥背景。最主要的原因就像 《30天自制操作系统》一书作者说的那样,写一个操作系统,仅仅想想就是一件特别有趣的事情呢。一两年前曾经入手开始写过,但慢慢的就不了了之了。现在又有这个想法了,准备一直干下去,最终写一个操作系统出来,算是程序员生涯的一份
2024-11-28 14:38:19
842
原创 从零开发操作系统-聊一下GDT 和 IDT
文章重点解释了在操作系统开发中,GDT(全局描述符表)和IDT(中断描述符表)的作用,特别是它们如何支持鼠标移动等中断处理。作者通过具体实例,阐述了GDT和IDT在内存管理、中断处理及系统稳定性方面的
2024-11-25 17:21:19
671
原创 从零开发操作系统-CPU的实模式和保护模式以及长模式
x86 架构的 CPU 有实模式、保护模式和长模式。实模式主要用于系统启动和早期操作系统,保护模式提供了更复杂的内存管理和更大的寻址空间,而长模式则支持 64 位的地址空间和更大的内存寻址能力。现代操作系统通常在保护模式或长模式下运行。另外如果以16位模式启动的话,用AX和CX等16位寄存器会非常方便,但反过来,像EAX和ECX等32位的寄存器,使用起来就很麻烦。另外,16位模式和32位模式中,机器语言的命令代码不一样。
2024-11-14 16:22:43
706
原创 从零开发操作系统-关于 0x7c00 地址
文章深入探讨了计算机启动过程中CPU和BIOS的相互作用,以及引导扇区在启动过程中的关键作用。作者通过解释硬件复位、CPU初始化、BIOS执行、硬件检测、引导过程以及执行引导扇区代码等步骤,为读者提供了对操作系统启动过程以及 0x7c00 的全面理解。
2024-11-12 16:27:38
699
原创 从零开发操作系统-第二天汇编语言、BIOS以及Makefile介绍
详细介绍了汇编语言基础,包括操作系统引导程序Bootloader Code的编写和BIOS的作用。同时,文章还解释了Makefile的构成和重要性,以及BIOS的历史和发展。
2024-11-07 14:35:17
873
原创 从零开发操作系统-为什么磁盘的扇区为 512 byte
本文通过讲解机械硬盘中扇区、簇等底层概念,以及Windows和Linux系统中对扇区的不同管理方式,探讨了硬盘存储的原理和操作系统如何管理硬盘空间。通过了解这些知识,可以更好地理解电脑的存储机制,以及如何高效地管理和利用硬盘空间。同时,对于喜欢探究计算机底层原理的人来说,这些内容也有一定的启发和帮助。
2024-11-04 19:44:59
1640
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人