- 博客(431)
- 资源 (2)
- 收藏
- 关注
原创 Java序列化漏洞-反射
Java反射机制放大序列化漏洞风险,攻击者通过构建可序列化的调用链(Gadget Chain),利用反射实现远程代码执行(RCE)。文章通过代码示例演示如何利用动态代理和BadAttributeValueExpException漏洞触发计算器程序,详细解析了漏洞触发过程:从readObject方法调用到动态代理转发至恶意InvocationHandler,最终执行任意命令。同时指出Proxy.newProxyInstance只能拦截接口中的普通实例方法,静态方法/default方法/final方法无法被代理
2025-11-20 15:17:15
390
原创 Java序列化漏洞:RCE 远程执行代码-Serializable
这篇文章主要对比了Java中Serializable和Externalizable两种序列化机制的差异,并介绍了JDK原生序列化的安全漏洞。主要内容包括: 两种序列化接口的核心区别:Serializable是自动序列化的标记接口,而Externalizable需要手动实现读写方法,提供更细粒度的控制 详细对比了两种方式在序列化控制、性能、体积、灵活性等方面的差异 通过代码示例展示了两种接口的具体用法 特别强调了Serializable在反序列化时存在的安全风险,示例中展示了如何利用readObject方法执
2025-11-20 13:55:32
201
原创 做架构设计必看!主从 + HA 和去中心化,到底哪种更适合你的业务?
本文对比分析了大数据领域三种架构模式:Master-Slave主从架构、HA高可用性方案和去中心化设计。Master-Slave采用中心化分工,需配合HA方案解决单点故障问题;去中心化设计通过节点平等和共识机制,天生具备高可用性;HA则是保障服务连续性的共同目标。文章从架构本质、节点关系、故障风险等维度详细比较了三者的区别,指出Master-Slave适合简单部署场景,去中心化更适合要求高容错的业务。最终强调HA是架构设计的核心目标,可通过不同技术路径实现。
2025-10-22 10:00:00
775
原创 一文搞懂 java 中 POJO 和 bean 区别
本文介绍了Java中POJO和JavaBean的区别与联系。POJO是普通Java类,没有严格规范,可以自由定义字段和方法;而JavaBean是遵循特定规范的POJO,必须有无参构造、私有字段和公共getter/setter方法,通常实现Serializable接口。所有JavaBean都是POJO,但反之不成立。POJO更适合通用场景,JavaBean则多用于需要规范化的框架操作和序列化场景。简言之,JavaBean是"规矩更多"的POJO,便于框架处理。
2025-10-11 16:00:00
620
原创 一文搞懂 Servlet、Servlet容器和Web服务器
本文系统梳理了Web服务器与Servlet容器的工作原理及协作关系。文章首先区分了两种常见部署场景:1)Nginx+Tomcat分离架构,Nginx处理静态资源并反向代理动态请求至Tomcat;2)独立Tomcat同时承担Web服务器和Servlet容器功能。通过对比分析,明确了Web服务器(处理静态资源)与Servlet容器(运行动态逻辑)的核心差异,并指出Tomcat作为"Servlet容器+轻量级Web服务器"的特殊定位。最后总结出生产环境最佳实践:专业Web服务器(如Nginx)
2025-09-30 11:00:00
1716
原创 Java vs Python Web 服务器深度对比:从传统到现代的演进之路
本文详细对比了Java和Python在Web服务器设计上的不同实现。Java服务器以Tomcat、Undertow为代表,强调标准化和稳定性;Python服务器如Gunicorn、Uvicorn则更灵活多样。文章通过架构模型对比、协议支持矩阵、性能基准测试等维度,深入分析了两种语言服务器的性能特征、资源消耗和适用场景,并提供了具体配置优化方案。测试数据显示,Java服务器在稳定性和企业级支持上占优,而Python的异步服务器在高并发场景表现突出。
2025-09-15 17:27:16
174
原创 Java vs Python Web 开发深度对比:从传统同步到现代异步的全面演进
系统对比了Java与Python的Web开发技术差异。 核心差异点: 技术哲学:Java强调稳定性(Spring Boot),Python注重开发效率(FastAPI) 性能表现:Java在数据库/模板渲染占优,Python在JSON序列化更快 开发体验:Java类型严谨但配置复杂,Python动态灵活且启动快 企业支持:Java生态更成熟(事务/安全),Python云原生部署更
2025-09-15 17:23:44
939
原创 一文搞懂 Flink2.x 分离式状态管理
本文介绍了Flink分离式状态管理如何解决传统状态模式的瓶颈问题。传统本地磁盘存储面临容量限制、checkpoint资源波动大和弹性伸缩困难等挑战。分离式状态管理通过将状态存储移至分布式文件系统,实现了无限扩展、轻量级checkpoint和快速恢复等优势。文章详细解析了其核心组件ForSt State Backend和State V2 API的工作原理,并提供了SQL和DataStream作业的配置指南。这种新型状态管理模式显著提升了大规模流处理任务的性能和稳
2025-09-15 11:07:03
1081
原创 最全的 MCP协议的 Stdio 机制代码实战
本文介绍了如何结合 MCP 协议和智谱 AI 平台实现一个简单的工具调用系统。通过注册智谱 AI 平台获取 API Key,并编写 MCP Server 和 Client 代码,实现了工具函数的注册、调用以及与智谱 AI 的交互功能。代码示例包括了工具函数的定义、服务器的启动、客户端的连接以及查询处理逻辑。
2025-06-13 16:34:42
1233
原创 一文搞懂 TCP TCP/IP 和 TCP/IP网络分层之间的联系和区别
本文介绍了TCP、TCP/IP协议族和TCP/IP模型的概念、联系与区别。TCP是传输层协议,提供可靠、面向连接的传输服务;TCP/IP协议族是互联网通信的基础协议集合,包含多种协议;TCP/IP模型是分层架构,定义各层功能和协作方式。三者共同实现网络互联和数据通信
2025-06-11 19:31:14
1239
原创 一文搞懂 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
1687
2
原创 多智能体大语言模型系统频频翻车?三大失败根源与解决方案全解析
本文深入剖析了多智能体系统(MAS)在实际应用中失败的底层逻辑,并提出了实用的诊断与优化方案。通过对7个主流MAS框架和200多个任务的分析,构建了MAS失败分类学(MAST),揭示了规格设计问题、智能体协作失调和任务验证缺陷三大类问题。研究指出,系统性缺陷是主要问题,而非LLM本身。基于MAST分类学,论文提出了详细的优化方案,包括架构级重构、效率优化和工具链集成等,旨在帮助开发者构建更可靠的多智能体系统
2025-06-11 15:00:00
1333
原创 MCP协议三种传输机制全解析
本文介绍了MCP(Model Context Protocol)协议的三种主要传输机制:Stdio、SSE和Streamable HTTP。每种机制针对不同场景设计,具有各自的优势和局限。Stdio适用于本地进程间通信,简单易实现;SSE支持服务器向客户端的单向实时数据推送,但即将被废弃;Streamable HTTP基于HTTP/2实现双向流式传输,适用于高并发分布式系统。文章还提供了选择建议,并分析了这些传输机制的技术来源及MCP协议的贡献。
2025-06-06 15:41:46
2113
原创 一文搞懂 python __init__.py 文件
本文系统讲解了Python中__init__.py文件的四大核心作用:1)标识目录为Python包;2)初始化包级代码;3)控制模块导入(包括批量导入和定义__all__);4)共享包级变量/函数。通过一个完整案例,展示了如何构建包含子包的Python项目,包括:使用__init__.py简化导入路径、控制暴露接口、隐藏内部实现、共享配置信息等。文中详细说明了__all__的作用和执行顺序规则,并提供了典型应用场景下的代码示例,帮助开发者掌握Pyth
2025-06-05 17:22:05
1916
原创 FastMCP vs MCP:协议标准与实现框架的协同
本文探讨FastMCP与MCP的关系及差异。MCP是Anthropic提出的LLM通信开放协议标准,而FastMCP是其Python实现框架。两者在协议规范上保持一致,但FastMCP通过装饰器语法、自动Schema生成等特性大幅提升开发效率。关键差异在于:MCP定义通用规范,FastMCP专注Python生态并提供服务组合、多协议传输等企业级功能。FastMCP的核心价值在于对MCP协议进行高度封装,开发者无需深入底层即可快速构建合规服务。文章指出,FastMCP
2025-06-03 20:24:32
1725
原创 为什么MCP可以适配不同LLM
本文探讨了MCP(Model Context Protocol)如何兼容各种LLM(大型语言模型),即使这些模型不支持Function Call。MCP通过协议分层解耦、执行层统一接管以及动态协商与扩展能力,实现了对不同LLM的兼容性支持。文章详细介绍了MCP的工具调用机制、执行流程以及实际案例,同时分析了MCP的优势与挑战
2025-05-27 19:14:22
963
原创 解锁 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
1798
原创 Web架构全解析:8种类型优缺点及场景
shengjk1,一位拥有多年大厂经验的开发者,致力于创建通俗易懂且有趣的编程语言教程。他最近在总结Web领域常见的架构类型,以便更好地选择适合的架构模式。文章详细介绍了九种主要架构,包括分层架构、微服务架构、事件驱动架构、无服务器架构、服务导向架构、容器化架构、单体架构、分布式架构和云架构。每种架构都描述了其特点、优缺点及适用场景,帮助读者根据业务需求、团队能力和运维成本做出明智选择。文章强调,实际应用中常结合多种架构模式,选择时需综合考虑各方面因素。
2025-05-16 10:59:56
1096
原创 序列化和反序列化:从理论到实践的全方位指南
本文详细介绍了序列化和反序列化的概念、重要性以及与普通字符编码转换的区别。重点探讨了序列化在网络传输、数据持久化和跨平台兼容性中的核心价值,并通过对比分析了不同序列化协议(如JSON、Protobuf、Thrift等)的优缺点及适用场景。同时,提供了序列化方案选择指南、协议扩展性设计原则和典型错误规避建议,帮助读者更好地理解和应用序列化技术
2025-05-14 17:26:51
753
原创 一文搞定 Python 装饰器
本文介绍了Python装饰器的多种使用方式及其在实际开发中的应用。装饰器是一种动态增强函数或类功能的高阶编程工具,通过包装函数或类实现代码复用。文章详细讲解了基础装饰器、带参数的装饰器、类装饰器、装饰器堆叠、保留元信息的装饰器以及内置装饰器的实现原理和代码示例。此外,还探讨了装饰器在性能测试、权限校验和缓存优化等实际场景中的应用。装饰器的核心优势在于代码复用与模块化、非侵入式代码增强,能够显著提升代码的可维护性和扩展性。通过灵活组合装饰器,开发者可以更高效地处理横切关注点,保持业务逻辑的纯净性。
2025-05-12 16:15:33
1127
原创 python 的 uv、pip 和 conda 对比和技术选型
本文对比了 Python 包管理工具 uv、pip 和 conda,从工具定义与核心功能、关键维度、核心特性、适用场景、技术选型建议、未来趋势与风险提示等方面进行了详细分析,为后续选择打下基础。
2025-05-12 14:57:10
1870
原创 没有写一行代码,上线了一个网站
本文介绍了作者利用 AI 编程实现一个个性化工作倒计时网页的过程。作者希望创建一个能设定下班时间、显示倒计时并定时提醒和鼓励的网页,通过与 AI 的多次交互,不断优化网页布局和功能,最终借助 GitHub Pages 成功部署网站。
2025-05-09 15:49:48
434
原创 一文读懂计算机网络两大模型:OSI与TCP/IP
本文介绍了计算机网络中ISO/OSI参考模型和TCP/IP模型的联系与差异,分析了两者的诞生背景及实际应用情况。ISO/OSI模型采用七层架构,理论性强但实现复杂;TCP/IP模型基于四层架构,简洁高效且广泛应用于互联网。TCP/IP模型是实际网络工程的主流选择,而OSI模型主要用于教学和理论研究
2025-05-07 15:33:02
573
原创 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
660
原创 SparkSQL Join深度解析:三种实现方式全揭秘
本文全面剖析了SparkSQL中Join操作的三种主要实现方式:Broadcast Join、Hash Join(包括Shuffle Hash Join)和Sort Merge Join。详细阐述了每种Join的实现原理、适用场景、优缺点以及实现细节。同时,结合表大小、数据分布和内存资源等因素,给出了Join策略选择的建议,并提出了性能优化措施,包括选择合适的Join策略、使用Join提示、调整配置参数、优化数据分区、合理管理内存以及处理数据倾斜等。
2025-04-15 17:15:41
1427
原创 一文搞懂 Iceberg 的 branch 和 tags
本文介绍了 Apache Iceberg 的分支(Branch)和标签(Tag)功能,通过类 Git 的机制解决大数据场景下的数据版本管理和数据隔离问题,实现 ACID 事务、隔离实验和精准回溯。同时提到 Nessie 作为多表事务管理的解决方案。
2025-04-10 14:53:55
1170
原创 快速搞懂湖仓一体的发展历程:错过它,你将失去下一个大数据风口!
本文介绍了数据湖仓一体架构的发展历程和优势。从OLAP数据库及其限制出发,阐述了第一代数据仓库、基于Hive的数据仓库、MPP架构和其他计算引擎、数据湖、数据湖表格式以及数据湖仓的出现和发展。最后总结了数据湖仓在云环境中的优势,如存储和计算资源的解耦,提高了灵活性和成本效益。
2025-04-08 18:40:47
1084
原创 JuiceFS vs HDFS,最简单的 JuiceFS 入门
本文详细对比了 JuiceFS 和 HDFS 两种分布式文件系统。JuiceFS 是一种新型的云原生存储解决方案,具有 POSIX 兼容、HDFS 兼容、S3 网关支持、强一致性、高性能、数据安全等核心特性,适用于云原生环境、AI 训练和海量小文件管理等场景。其架构基于存算分离,元数据存储在独立数据库中,数据存储在对象存储中,支持弹性扩展和分布式事务。JuiceFS 在元数据操作、数据读写性能、缓存机制等方面均优于 HDFS,同时通过纠删码和加密技术降低了存储成本并提升了数据安全性。相比之下,HDFS 是传
2025-04-02 17:11:14
1216
原创 一文搞懂Flink 的 Materialized Table:简化数据管道的利器
Flink 的 Materialized Table 为简化数据管道的开发和管理提供了一种强大的解决方案。它通过统一流批处理、降低开发成本、提高数据处理灵活性等方式,帮助用户更高效地应对复杂的数据处理需求。虽然目前还存在一些限制,但随着技术的不断进步和社区的努力,这些问题有望得到解决。对于需要构建高效、灵活数据管道的开发者来说,Materialized Table 是一个值得深入探索和应用的技术。
2025-03-25 13:48:44
1366
原创 掌握 Apache Iceberg 的关键:Equality Delete 和 Position Delete 的原理与应用
Equality Delete 是一种基于字段值的删除方式。它通过指定某些字段的值来标记需要删除的行。简单来说,就是告诉系统:“所有满足这个条件的记录都要被删除。” 例如,如果你想删除所有id=3的数据,Equality Delete 就会在删除文件中记录id=3这个条件。Position Delete 是一种基于数据文件位置的删除方式。它通过指定数据文件的路径和行号来标记需要删除的行。简单来说,就是告诉系统:“在某个文件的第几行,这个记录要被删除。
2025-03-24 19:18:43
1194
原创 JVM如何处理Java中的精度转换: 从源码到字节码
Java中的类型转换机制是其类型系统的重要组成部分。理解自动类型提升和显式类型转换的规则,以及JVM如何处理这些转换操作,对于编写高效、正确的Java代码至关重要。了解类型精度等级,避免不必要的精度损失在需要高精度值的地方使用高精度类型在进行显式类型转换时,注意可能的数据丢失和溢出问题避免在性能敏感代码中进行频繁的类型转换和装箱/拆箱操作理解不同上下文(赋值、运算、方法调用等)中的类型转换规则掌握这些知识将帮助你写出更加健壮和高效的Java代码。
2025-03-23 09:39:15
920
原创 Flink 水位线全解析:从原理到实战,彻底掌握事件时间处理!
本文深入探讨了 Apache Flink 中的水位线(Watermark)机制,特别是 WATERMARK FOR event_time AS event_time 的语法及其在实际应用中的重要性
2025-03-17 14:48:08
994
原创 只会写代码的程序员,注定没有出路!
只会写代码的程序员正在面临职业危机。随着 AI 技术的快速发展,重复性编码工作逐渐被自动化工具取代,程序员的竞争力不再局限于代码能力,而是转向解决问题的能力。此外,程序员群体普遍存在的沟通短板也限制了职业发展。未来,程序员需要跳出“技术至上”的思维,提升业务理解力、用户洞察力和跨领域沟通能力,才能适应行业变化,抓住更多机会(如专利创新等),实现职业突破。只会写代码的程序员没有出路,技术与业务、沟通并重的复合型人才才是未来的赢家。
2025-03-13 19:50:20
332
原创 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
439
原创 数据湖出现的背景、现状与未来
本文介绍了数据湖(Data Lake)的概念、功能、架构、优势、挑战以及与数据湖仓(Data Lakehouse)的融合。数据湖是一种用于存储海量原始数据的架构,支持结构化、半结构化和非结构化数据的直接存储和访问,具有可扩展性强、灵活性高、成本效益好以及促进数据民主化的特点。其架构包括数据摄取层、存储层、处理层和访问层,能够支持大数据分析、机器学习等多种应用场景。然而,数据湖也面临数据治理、技能缺口和数据沼泽等挑战。文章还探讨了数据湖与数据湖仓的结合,指出数据湖仓融合了数据湖和数据仓库的优势,能够提供更好的
2025-03-12 11:19:04
876
原创 AI编程:吞噬者还是进化之翼?
AI编程工具的普及正在深刻重构程序员的认知生态。研究表明,过度依赖AI可能导致算法思维退化、代码记忆丧失及技术深度理解弱化,催生出依赖提示词却疏于底层原理的“工具化开发者”。然而,技术进化并非零和博弈——通过“原始编程”训练、人机协同工作法的创新及认知防火墙的建立,程序员可在保留核心思维能力的同时,将AI转化为增强创造力的“外接大脑”。未来的关键在于平衡效率与深度,既善用AI突破生产力边界,又通过持续的基础认知训练守护技术主权,最终实现人类开发者与智能工具的共生进化。
2025-03-03 19:34:09
819
原创 AI编程来了,程序员要失业了?
AI 编程被炒的火热,很多人都在鼓吹,甚至行业内的大厂,吹的最牛逼的就是某阿里 ,其他的公司就不一一列举了。在大模型领域,我不认为阿里会强过 Claude,所以我基于 Claude-3.5-Sonnet,完全沉浸式编码完成一个任务 我通过AI编程完成了第一个实用程序
2025-02-28 19:40:14
461
原创 我通过AI编程完成了第一个实用程序
我一直想要开发一些程序,来解决工作生活中的一些困点,但一直没有实施出来,主要是因为GUI不太熟悉,但也不想花费大量的时间来学习这个。其实之前也试图学过 pyQT但后来因为工作的原因,不了了之了。但最近 AI 编程被吹嘘的太厉害了,所以我也想借助AI 的力量来实现我想要的功能,于是乎一款对 word 和 pdf 内容搜索的工具就诞生了。
2025-02-28 19:25:14
521
原创 Spark Drive 端的 List 无法获取 Executor 中的数据吗?
文章探讨了在 Apache Spark 中,Driver 端 和 Executor 端 内存隔离的问题,特别是当在 Executor 端 修改 Driver 端 创建的 List 时,修改不会生效的原因。文章详细解释了 Spark 的分布式架构、数据传递机制,并提供了解决方案,如使用 collect、累加器、广播变量等方法来实现 Driver 端 和 Executor 端 之间的数据同步。
2025-02-14 19:19:26
873
原创 在Java中,equals()和contains()谁更快
在大多数情况下,equals()方法比contains()更快,主要得益于其快速失败机制(如长度差异或早期字符不匹配)。但需注意:场景适配:如果目标是判断子串存在性(而非完全相等),只能使用contains()。内容复杂度:若比较的字符串完全相等且较长,两者的耗时差异较小。综上,从性能角度优先选择equals()(当满足功能需求时),而contains()适用于子串匹配的特定场景。
2025-02-13 13:24:23
374
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅