DZone.com Feed 中文 关注 DZone是一个全面的在线平台,专注于技术和编程的多个方面。该网站提供了关于不同编程语言、技术、框架和工具的大量信息。该网站的一些主要特点和资源包括:关于技术领域最新趋势和更新的新闻和文章、学习不同编程技能的多种资源和教程、一个社区让用户可以与他人互动、分享经验和知识。此外,DZone还提供了技术专业人士的招聘信息,为对技术和编程感兴趣的人们提供了有用的资源。 DZone.com Feed dzone.com RSS feeds.dzone.com DZone.com Feed 中文 RSS thenote.app
2026 年数据集成格局:智能体 AI 时代的事件流、API 与批处理 数据集成过去常被视为后台“管道”工作:困难,当然,且始终对运营至关重要,但很少被视为战略要务。这一局面已发生转变。《2026 年数据集成格局》描绘了这一转变,涵盖三大通信范式及所有主要厂商。全球最大的软件公司已斥巨资掌控集成层:IBM 以 110 亿美元收购 Confluent,Salesforce 以 80 亿美元收购 Informatica,Qlik 收购 Talend,TIBCO 并入 Cloud Software Group,Fivetran 与 dbt Labs 合并。当集成厂商能以此类价格被收购时,集成层已成为战略资产,而非可理所当然视为理所当然的基础设施。推动这一变革的压力早已积聚。数据量持续爆炸式增长,数字化转型不断将更多业务推上实时轨道,对新鲜数据的需求多年来持续上升。人工智能是最新且最为紧迫的驱动力。模型与自主智能体需要当前、受管且持续流动的数据。仅靠夜间批处理作业和返回昨日状态的 API,无法支持即时决策系统。基于过时数据运行的智能体不会发出刺耳的失败警报;它会自信地做出错误决策。这将一个企业已挣扎十年的问题的 stakes 推向了新的高度。 Data Integration Landscape 2026: Event Streaming, API, and Batch in the Era of Agentic AI dzone.com +1
在生产环境中运行自托管 WAF:来自 SafeLine 的实践经验 为何在应用前部署 WAF?Web 应用防火墙常被列举为一组安全功能:SQL 注入防护、跨站脚本检测、机器人流量缓解、速率限制以及访问控制。这些能力固然重要,但仅解决了部分运营层面的问题。更具挑战性的问题往往出现在部署之后: Running a Self-Hosted WAF in Production: Practical Lessons From SafeLine dzone.com +1
Claude Code 超能力:终结限制与上下文遗忘的五件套组合” Claude Code 已改变了许多人的软件开发方式。你在终端中输入,提出修改需求,该工具便会读取文件、编辑代码、执行命令并反馈结果。对于大量日常工作而言,它感觉既快速又实用。然而,两个问题反复出现。首先,你会遇到使用限制。一次长时间的编码会话可能在任务中途被中断。你不得不等待、切换账户,或打断工作流。其次,每次新会话均以空白状态开始。该工具不会记住你昨天修复的 bug、你偏好的库版本,或你关注的代码风格规范。你不得不花费一天中的前半段时间,再次解释同一个项目。 Claude Code Superpowers: The 5-Tool Stack That Ends Limits and Context Amnesia dzone.com +1
双引擎,一次查询:Neo4j 中的 DuckDB 如果您最近关注数据库领域,可能会注意到 DuckDB 出现在一些意想不到的地方。其中一个有趣的例子是 pg_duckdb,这是一个将 DuckDB 直接嵌入 Postgres 进程的 Postgres 扩展,使得分析查询无需离开数据库即可通过 DuckDB 引擎执行。这是一个巧妙的想法:数据保持原位,但引入更高效的分析引擎。这让我们不禁思考:我们能否对 Neo4j 做类似的事情? Two Engines, One Query: DuckDB Inside Neo4j dzone.com +1
iOS 上的 PWA,第一部分:iPhone 上的 PWA 比看起来更悠久 这是关于 Web 应用如何在 iOS 上运行的八篇文章中的第一篇,其代码量少于其余文章。在此,我探讨这些怪癖的由来——每一位将 PWA 发布到 iPhone 的开发者最终都不得不与之共存。打开几乎任何在 2026 年构建的 PWA,在 manifest 链接旁边,你很可能会找到 apple-mobile-web-app-capable meta 标签。Safari 的旧版参考文档明确写道:“适用于 iOS 2.1 及更高版本。”iOS 2.1 于 2008 年 9 月 12 日发布,当时 App Store 已经运行了两个月。因此,全屏 Web 应用在 iPhone 上的出现,发生在苹果转向原生 SDK 之后,尽管这一故事通常被叙述为相反的顺序。iPhone 上的 PWA 行为充满了此类细微之处。你主屏幕图标背后,是二十五年来将网页转变为应用程序的种种尝试,而其中许多沿途做出的决策至今仍存在于你的代码之中。 PWA on iOS, Part 1: PWAs on the iPhone Are Older Than They Look dzone.com +1
OpenCode:配置开源 AI 编程助手 OpenCode 是一款基于终端的开源 AI 编程助手,支持包括 GitHub Copilot 在内的多种提供商。对于寻求独立于特定供应商的 AI 编程助手的开发者而言,OpenCode 提供了一种将 AI 灵活集成到其编程工作流中的方式。 OpenCode: Setting Up an Open-Source AI Coding Assistant dzone.com +1
Genkit Go 与 ADK Go 2.0:深入剖析样板代码与底层控制” Genkit 和 ADK(Agent Development Kit)都是 Google 支持的生成式 AI 框架,均提供一等公民的 Go SDK。我不断收到同一个问题:当你坐下来编写代码时,它们究竟有何不同?这不是一篇“哪一个更好”的文章。它们针对不同的问题:ADK 是一个智能体编排框架(涵盖智能体、会话、多智能体转移,以及自 2.0 版本以来的基于图的工作流引擎),而 Genkit 是一个生成式 AI 应用框架(涵盖模型调用、流程、结构化输出、中间件)。然而,它们在每位 Go 开发者日常执行的任务上存在重叠(调用模型、获取类型化输出、流式传输、添加工具、拦截请求),在这些任务上,开发者体验存在显著差异。 Genkit Go vs ADK Go 2.0: A Hands-On Look at Boilerplate and Low-Level Control dzone.com +1
OwlVigil 开源其面向企业 AI 的 Go SDK 自 OwlVigil 发布以来,我一直在思考一个核心目标:充分释放其能力以赋能开发者,实现 AI 管理功能的无缝集成,并推动基于这些能力构建创新产品。我们已为多种编程语言开发了一套全面的 API 和 SDK,使 OwlVigil 的几乎所有核心能力均可用。开发者可通过 SDK 使用部分功能,也可基于我们的 API 构建完整的 AI 网关与管理平台。 OwlVigil Open-Sources Its Go SDK for Enterprise AI dzone.com +1
使用 Kotlin 测试 Java 和 Spring 应用程序:降低采用风险 考虑或已承诺采用 Kotlin 的团队通常计划将迁移作为一系列重写进行,逐个微服务地将 Java 服务替换为 Kotlin 对应版本。然而,在实践中,此类计划往往在产出任何可发布的代码之前便停滞不前。Kotlin 在 JVM 生态系统中的作用正在扩展,因为它不需要那种程度的承诺。Netflix、Adobe 和 DoorDash 等公司采取的是渐进式采用策略,将其与现有的 JVM 系统并行使用,而非通过全面重写来实现。风险最低的起点是测试。测试能让团队获得 Kotlin 的语言优势,包括空安全、数据类和表达式的 lambda,而无需触碰任何在生产环境中运行的代码。 Testing Java and Spring Applications With Kotlin: Low-Risk to Adoption dzone.com +1
MCP 即将登陆您的桌面应用程序” 当开发者听到“模型上下文协议”(MCP)时,脑海中浮现的通常是一台服务器。MCP 服务器会暴露工具或资源。AI 代理连接至该服务器后,便能突然获得对数据库、代码仓库、文档系统、浏览器或某些企业服务的访问权限。 MCP Is Coming to Your Desktop Applications dzone.com +1
Java 虚拟线程在高负载下的三个生产限制 虚拟线程让我们可以在保留普通阻塞代码的同时,让大量请求并发等待。然而,在高负载下,这会凸显三个关键问题:我们应接纳多少工作?廉价的线程仍可能构建昂贵的队列。 锁内应包含什么?处于睡眠状态的锁持有者仍会让其他所有人等待。 谁应停止被放弃的工作?调用方的超时机制无法取消其任务。以下示例通过独立的“之前”与“之后”程序来隔离这些问题。每个程序都是完整的:请将代码块保存至所示文件名,并运行配套命令(无需参数)。您只需 JDK 25 即可。它们使用其紧凑的源文件语法,因此无需类声明、构建工具、外部库或预览标志。 Java Virtual Threads Under Load: Three Production Limits dzone.com +1
事务应在何处结束?设计分布式 Java 系统的一致性边界 微服务并未消除事务,而是迫使架构师决定事务的边界应在何处。这一决策看似简单,实则困难重重。原本由单个数据库事务处理的业务操作,在解耦后可能跨越多个服务。例如,一个订单可能涉及库存、支付、定价、客户限额、审计历史以及通知。架构或许能将这些职责清晰地划分,但业务层面仍将其视为单一操作:下单。 Where Should a Transaction End? Designing Consistency Boundaries in Distributed Java Systems dzone.com +1
面向监管报告的工程就绪型数据管道 有一种特定的沉默,常出现在监管问询中:当监管者问“能否详细说明这个数字是如何计算的?”时,电话另一端的人只能回答“我稍后回复您”。我曾身处这样的通话中。那并非愉快的处境,而且通常并非因为有人做错了什么,而是因为生成该数字的数据管道从一开始就没被设计用来回答这个问题。监管报告,无论是流动性申报、资本计算,还是更为细分的领域,与大多数数据工程工作相比,具有一种奇特的属性。团队之外的人并不真正关心支撑该报告的数据看板长什么样。他们真正关心的是,数月甚至数年后,能否确切追溯每一个数值的来源、谁对其进行过修改,以及为何在两个报告期间之间发生了变化。这是一个与“让报告快速运行”截然不同的设计目标。诚然,许多数据管道首先是为了速度和便利而构建,可审计性则作为事后补充被附加其上。其后果便是显而易见的。 Engineering Audit-Ready Data Pipelines for Regulatory Reporting dzone.com +1
为什么 200 OK 是企业集成中最危险的谎言 客户于周五下午在移动应用中更改了电子邮件地址。应用显示了一条绿色确认消息: Why 200 OK Is the Most Dangerous Lie in Enterprise Integration dzone.com +1
5 身份模式:AI 代理在投入生产前必须具备 这是一个比任何人都愿意承认的发生频率更高的场景。一个团队将内部代理(agent)发布到生产环境。这是一个精巧的小工具:它读取工单,调用几个内部 API,发送 Slack 通知,并将工单标记为已解决。出于尽快上线的考虑,部署该代理的工程师将自己的 API 令牌(token)副本授予了该代理。该令牌拥有高级工程师的权限,也就是说,它可以执行几乎任何操作。 5 Identity Patterns Your AI Agents Need Before They Touch Production dzone.com +1
受限人工智能辅助设计的参考架构 有界生成:让 AI 在一个由确定性引擎保证有效性的空间内进行选择。大多数将 AI 引入设计工具的努力都采用了“先生成后修复”的流程:模型生成一个工件,下游步骤再尝试将其修复为有效形式。对于任何需要制造或协调的事物,这种流程都是本末倒置的。 A Reference Architecture for Constrained AI-Assisted Design dzone.com +1
生成式人工智能安全网关:端到端架构 大语言模型(LLMs)是强大的应用组件,但不应直接暴露给不可信用户或未经验证的文档。请求可能包含指令覆盖、隐藏的秘密,或试图让检索内容充当系统提示。生成式 AI 安全网关提供了这一边界。它标准化输入,运行互补的检测器,计算有界的风险评分,保护检索到的文档,并在响应到达客户端之前对其进行清理。 GenAI Security Gateway: An End-to-End Architecture dzone.com +1
一个数据库,两种模型:利用 MySQL JSON 双视图构建面向 AI 的 Java 应用 MySQL 现在可以将完整的 JSON 文档(例如包含客户和明细项的订单)直接提供给您的应用程序,而数据仍保留在标准的关系型表中。您甚至可以将该文档发回,MySQL 便会更新相应的行。我构建了一个小型 Java 应用程序以探索其能力边界。读取操作已大幅简化。写入操作同样可行,但在使用前,您需要了解其中一些较为尖锐的局限性。四张表,一个界面设想一个小型在线商店的支持界面。当客户致电时,客服人员需要在同一界面中查看该订单的客户信息、商品明细、价格及状态。 One Database, Two Models: Building AI-Friendly Java Applications With MySQL JSON Duality Views dzone.com +1
使用 mamori 在 Go 中实现 Kubernetes Secrets 和 ConfigMaps 的热重载(无需重启 Pod) 如果您在 Kubernetes 上运行 Go 服务,您一定熟悉这一流程。更新一个 Secret 或 ConfigMap 后,您通常会采取以下三种做法之一:执行 kubectl rollout restart deployment/my-app 并承担由此引发的中断。 安装 Reloader,以便在 Secret 变更时自动重启您的 Pod。 将 Secret 挂载为卷,并祈祷您的应用能够重新读取该文件(剧透:大多数应用仅在启动时读取一次)。这三种做法存在相同的缺陷:您“获取”配置变更的方式是丢弃当前进程并启动一个新进程。对于轮转数据库密码而言,这意味着所有正在进行的请求将被中断、连接池变冷以及延迟激增——仅仅为了更改一个字符串。 Hot-Reloading Kubernetes Secrets and ConfigMaps in Go With mamori (No Pod Restarts) dzone.com +1
GCP秘密经理,Live-Reloaded,和守一起去 Google Cloud Secret Manager 采用清晰且具明确导向的模型:一个 Secret 是一个容器,其中包含不可变且带编号的版本。您永远不直接修改某个版本,而是添加一个新版本(1、2、3……),待其就绪后,将流量切换至该版本,通常通过解析最新别名(或禁用旧版本)来实现。这是一种真正优秀的设计。但它与大多数 Go 服务消费 Secret 的方式相冲突:您在启动时仅调用一次 AccessSecretVersion("latest") 并缓存结果。从那一刻起,您的进程便固定于启动时"latest"所指代的版本。若此时添加版本 4 并禁用版本 3,您的服务仍会 happily 继续使用版本 3,直到有人重启它——这至多是一次计划内的重新部署,最坏则是在禁用版本不再可解析时引发事故。 GCP Secret Manager, Live-Reloaded in Go With mamori dzone.com +1
为何 Kotlin 或 Java 并非企业界的关键问题 如果你参加过不止一次架构评审,很可能都经历过一场旷日持久的 Kotlin 与 Java 之争,却毫无进展。团队花费数周时间对比 Kotlin 的简洁语法与 Java 的成熟度,发起开发者偏好投票,并产出一份无人完全信任的决策矩阵。随后会议结束,一切照旧,因为无人真正明确要解决的核心问题。在基础设施工具(如 Kotlin 与 Java)之间做出选择,本质上是一项投资决策;如同任何投资决策一样,它需要明确的论点。讨论应由四项业务压力驱动:上市时间、运营风险、人才经济成本以及跨平台一致性。 Why Kotlin or Java Is the Wrong Question For Enterprises dzone.com +1
在 Gemini 企业代理平台中动手实践监控 AI 代理和模型 模型或代理的部署仅仅是第一步。一旦开始处理请求,就需要一种方式来追踪模型的调用频率、请求耗时、使用的 token 数量以及是否存在错误。对于代理,我们还需要了解每个步骤的具体情况。Gemini 企业级代理平台提供了多种方法以获得此类可见性。Cloud Monitoring 负责与模型和代理相关的运营指标,Cloud Logging 使您能够探索执行详情和错误,而 Cloud Trace 将帮助您更深入地了解代理的执行情况。 Getting Hands-On With Monitoring AI Agents and Models in Gemini Enterprise Agent Platform dzone.com +1
面向云 API 和微服务的后量子 TLS 为何每一次 TLS 终止都是一个独立的迁移边界云应用程序很少仅存在一个 TLS 连接。单个 API 请求可能在 CDN、Web 应用防火墙、API 网关、负载均衡器、服务网格代理、应用运行时以及托管云端点处被解密并重新加密。每一次终止都会协商一个新的会话。仅升级公共边缘,会使所有下游跳点仍受经典密钥交换机制的保护。这一架构事实改变了团队应对后量子 TLS 的方式。正确的迁移单元并非主机名、服务、集群或应用程序,而是两个相邻终止点之间的定向 TLS 链路,该链路包含所有者、策略、协商组以及运行时证据。 Post-Quantum TLS for Cloud APIs and Microservices dzone.com +1
复杂事件处理(CEP)与 Apache Flink:它是什么以及何时(不)使用它 https://dzone.com/articles/apache-flink-1 大多数与 Apache Flink 合作的团队都在思考流处理:过滤事件、聚合值、丰富记录、连接流。这涵盖了绝大多数实时数据问题。然而,有一类特定问题,流处理对其处理效果不佳:跨时间检测有意义的事件序列。是否在这一时间窗口内,按此顺序发生了这一特定事件链?复杂事件处理(CEP)正是为此设计的工具,其工作原理与流处理有根本性差异。CEP 是 Apache Flink 的内置能力,以开源形式提供,可部署至旧有专有平台无法企及的规模。然而,它仍被低估且被误解。本文是一份实用指南,介绍 CEP 是什么、何时使用它、Flink 如何实现它,以及它在现代数据架构中的定位,包括在代理式 AI(agentic AI)中的应用,相关内容将在配套文章中深入探讨。 Complex Event Processing (CEP) With Apache Flink: What It Is and When (Not) to Use It dzone.com +1
如何在分布式系统中处理部分故障 分布式系统很少以单一整体发生故障。更常见的情况是:某个依赖项变慢、某个分片不可用、某个区域容量丢失,或某个资源池饱和,而邻近组件仍保持健康。工程挑战不仅在于可用性,更在于防止局部缺陷演变为系统级事件。Google 的 SRE 指南将级联故障描述为正反馈过程:丢失的容量将负载转移至幸存容量,直至更多组件发生故障。韧性设计必须尽早、以低成本、在足够窄的边界处打断这一循环,从而在其他地方保留有用工作。 How to Contain Partial Failures in Distributed Systems dzone.com +1
面向长时任务的 AI 设计:超越更多上下文 模型能力正朝着该方向快速演进。在 2026 年 2 月至 3 月发布的《前沿风险报告》中,METR 估算了软件任务在前沿模型成功完成概率降至 50% 之前可能持续的时间。Claude Opus 4.6 在较清洁的任务上可达约 17.8 小时,但在涉及动态环境、资源受限、反馈成本高昂或错误难以回退等复杂因素的任务中,仅能维持约 6.4 小时。这一差异表明,任务时长本身并非主要挑战。长周期工作同样要求系统能够保存进度、适应条件变化,并在早期假设不再成立时恢复运行。 Designing AI for Long-Running Tasks: Looking Beyond More Context dzone.com +1
在不安排停机周末的情况下迁移 900+ GB 的 Prometheus 数据 我负责管理的 Prometheus 实例时间序列数据量已增长至 900 GB 以上,到了这个规模,它便患上了所有随之而来的“疾病”。查询除非限定在一小时内,否则都会超时。基数持续增长,因为各团队会添加标签“用于调试”,随后有时又忘记移除。此外,我们还将部分指标数据的副本发送至外部 SaaS 供应商,以备不时之需,而该账单每个季度都在增加。在此之下运行的整个舰队承载着对延迟敏感的交易平台服务,因此监控系统本身绝不允许在错误时刻额外占用一个 CPU 核心。 Moving 900+ GB of Prometheus Without a Cutover Weekend dzone.com +1
真正提升模型准确率的特征工程技术 在监督学习项目中,大多数性能提升并非源于切换算法,而是源于输入算法的数据。特征工程是将原始数据转换为更易被模型学习的表示形式的过程。若做得得当,特征工程通常能比超参数调优或尝试更复杂的模型带来更大的准确率提升。本文将介绍那些在实际项目中 consistently 产生显著效果的特征工程技术,并提供可运行的 Python 代码(pandas + scikit-learn),同时通过可视化展示这些增益究竟来自何处。 Feature Engineering Techniques That Actually Improve Model Accuracy dzone.com +1
当重试成为故障放大器:大规模恢复的隐性成本 城市交通类比想象一下城市在高峰时段的交通系统。一起轻微事故导致一条主干道的一个车道受阻。交通流速减缓,但道路仍部分通行。 When Retries Become Failure Amplifiers: The Hidden Cost of Recovery at Scale dzone.com +1
节点与容量溢出:当 Kubernetes 资源耗尽时会发生什么 “处于 Pending 状态的 Pod 是 Kubernetes 中最具误导性的状态之一。一切看起来都没问题:没有错误横幅,也没有红色文字向你尖叫。调度器只是安静地放弃了为其寻找宿主机,并等待环境发生变化。我盯着那个状态的时间比愿意承认的更多,通常是在最糟糕的时刻,通常是在有人通过聊天窗口询问为何流量无法通行时。有一次,在一个集群中 CPU 空闲率接近 40% 的情况下,这种情况持续了大约 11 分钟。这篇文章真正探讨的,正是“某处存在容量”与"Pod 实际被调度”之间的那段差距。 Node and Capacity Spillover: What Happens When Kubernetes Runs Out of Room dzone.com +1
在用户察觉之前捕获查询回归 所有数据库管理员在某个阶段都遇到过类似情况:原本运行良好的查询突然开始引发问题。仪表板上没有显示任何错误、失败或警告,唯一可察觉的迹象是用户抱怨应用程序今天运行缓慢。此时,DBA 必须从海量的查询中确定是哪一条导致了问题。在此场景下,最佳解决方案是使用查询存储(Query Store)工具。自 2016 年引入以来,这一专用功能一直存储有关 SQL 查询文本、执行计划和统计信息的数据。此外,与计划缓存不同,它在服务器重启后仍保留这些信息。然而,关键在于以用户友好的格式获取这些数据。 Catching Query Regressions Before Your Users Do dzone.com +1
9 种在生产环境中修复 Laravel 性能问题的实用方法 Laravel 应用在开发者的本地笔记本上可能运行得飞快,但在生产环境中运行数月后却变得异常缓慢。框架本身很少是真正的罪魁祸首。更常见的是,数据库已膨胀,循环中加载了关联关系,报表拉取了远超预期的行数,或者某个第三方 API 已悄然成为请求关键路径的一部分。如果您正试图学习如何在生产环境中修复 Laravel 性能问题,请克制住立即引入 Redis、Octane 或更大服务器的冲动。首先,找出请求本不该执行的工作。消除浪费性的工作通常比在其周围增加基础设施能带来更大且更安全的提升。 9 Practical Ways to Fix Laravel Performance Issues in Production dzone.com +1
《AI 采纳的五个阶段:软件团队的实用成熟度模型》 过去一年,我参与过足够多的领导力对话,注意到一个模式。一位 CTO 告诉我,他们的组织已经“采用了 AI",因为大多数工程团队现在都能使用 Copilot 或 ChatGPT,并且所有人都参加了一次关于提示词(prompting)的午餐学习会。几个月后,这种兴奋通常会沉淀为一种更为平静的状态:少数工程师每天使用 AI,一两个试点项目从未走出沙盒环境,而对于实际在运营层面发生了什么变化,却没有任何清晰的答案。问题不在于这些工具不起作用。而在于我们衡量采用率的方式是错误的。统计有多少人能够访问 AI 聊天机器人,几乎无法告诉我们 AI 在如何开展工作的流程中被深度整合到了何种程度。一个十人团队,如果 AI 能够可靠地运行一个集成的生产工作流,其进展可能远胜于一个百人公司,其中每个人都偶尔将文本粘贴到聊天机器人中。 The Five Stages of AI Adoption: A Practical Maturity Model for Software Teams dzone.com +1
事件仪表板中信号差分隐私的损耗程度 有人在事件存储前部署了差分隐私层,却将仪表板直接构建在其之上。查询依然返回,汇总数据看起来仍是汇总数据,工单随即被关闭。团队中无人计算过检测下限。每个私有聚合都携带噪声,且该噪声未被标记。它出现在周一早晨某人读取的同一单元格中,用于判断某个细分群体是否发生变动;在视觉上,它看起来像是一次微小的真实变化。在我从事的广告账户工作中,转向聚合与私有报表是出于监管要求而非架构设计,因此相关讨论从未真正展开,模式始终如一:epsilon 在会议中被协商确定,而将其转化为检测限所需的算术推导却从未出现在任何文档中。 How Much Signal Differential Privacy Takes From Your Dashboards, in Events dzone.com +1
您无需二选一:企业数据刷新的混合方法 如果您是一名数据工程师,您很可能遇到过这样的场景:需要在两种企业数据刷新方案之间做出抉择。一种方案更侧重于速度,而较少关注计算资源;另一种方案则更侧重于可靠性与数据准确性。通常,当我们讨论数据刷新时,脑海中浮现的两个选项是增量加载和全量加载,而问题便转化为应该选择哪一种。在我看来,这并不一定是一个必须在两者中择其一的抉择。两种方案各有优劣,与其依赖单一方案,我认为我们可以将二者结合,并在各自最适用的场景中使用它们。 You Don't Have to Pick One: A Hybrid Approach to Enterprise Data Refresh dzone.com +1
Playwright TypeScript 中的全局设置用于 API 测试 如果您需要在执行测试套件之前生成前置测试数据(例如通过 API 添加虚拟记录),使用 Playwright 的全局设置(Global Setup)是一种整洁、可维护且可扩展的方法。它确保所有必需的数据在测试开始前准备就绪,从而保持测试执行的有序性和可靠性。什么是全局设置?Playwright 的全局设置会在整个测试套件开始执行之前运行一次。它通常用于创建测试数据、向数据库注入数据、生成认证令牌、准备测试环境或清理旧数据。由于它仅在运行开始时执行一次,因此有助于确保整个测试套件中测试初始化的高效性和一致性。 Global Setup in Playwright TypeScript for API Testing dzone.com +1
AI 时代网络安全(二):构建系统上下文、治理与代理身份 本系列第一部分阐述了人工智能如何将漏洞披露到被利用的时间间隔从数月压缩至数小时,梳理了漏洞全生命周期,并将 Project Glasswing、OpenAI Daybreak、Project Lightwell、Big Sleep 和 CodeMender 映射到该生命周期中。简而言之:漏洞发现速度已大幅提升,但甄别关键问题、安全修复以及治理执行工作的自动化系统尚未跟上。本第二部分涵盖该生命周期的后半段,这也是大多数厂商公告中往往忽略的部分。 AI-Era Cybersecurity, Part 2: Building the System Context, Governance and Agent Identity dzone.com +1
Meta 的新缪斯 Wonder 模型向 OpenAI 发起挑战,但访问权限附带限制 Meta 正再次向前沿人工智能竞赛发起冲击,推出两款旨在与 OpenAI 和 Anthropic 在编程、复杂推理及自主任务方面展开竞争的新模型。该公司于周一宣布,Muse Wonder 和 Muse Wonder Full 是其迄今为止能力最强的 AI 模型。这两款模型专为个人和专业 AI 代理打造,旨在处理从软件开发到文档分析及金融研究等广泛任务。 Meta's New Muse Wonder Models Challenge OpenAI, but Access Comes With Limits dzone.com +1
DeepSeek 向机器人 AI 初创公司注资 4 亿美元,开启新一轮融资攻势 DeepSeek 正将目光从聊天机器人转向机器人领域,计划牵头对一家据报估值达 4 亿美元的年轻中国 AI 初创公司进行融资轮次。据彭博社报道,这家中国 AI 实验室已同意牵头对 Winverse AI 进行种子轮投资,该公司正在开发机器人技术。该轮融资预计将筹集数千万美元,投资后 Winverse 的估值约为 4 亿美元。 DeepSeek Eyes $400M Robotics AI Startup in New Funding Push dzone.com +1
数据治理是一项安全控制措施,而非合规检查项。 作为 AWS 支持工程师,我多年来一直在修复损坏的 Glue 作业和 Lake Formation 权限,随后转向银行数据平台的售前架构工作。在几乎每一次迁移中,都会出现一个共同模式:团队将 IAM 策略和数据目录构建为两个独立的工作流,由两个不同的团队分别负责,彼此之间从未进行有效协同。而在上线六个月后,有人提出“谁有权查看金层中的 SSN 列?”,却无人能在不耗费一周时间进行人工审计的情况下给出答案。这一差距并非流程问题,而是架构问题。本文将阐述为何分类与访问控制必须作为同一系统来设计,介绍在 AWS 上实现该架构所需的实际策略构建要素,并指出团队在此方面常见的误区。 Data Governance Is a Security Control, Not a Compliance Checkbox dzone.com +1
All In on JVM 25 虚拟线程” AngularAndSpring 项目已从基于 Spring Reactor 的架构重构为使用 JDK 25 和虚拟线程的 Spring 阻塞式 API 架构。旧架构AngularAndSpring 最初采用 Spring Reactor 架构,主要目的是在高负载下高效利用操作系统线程和内存。Spring Reactor 拥有有限的线程池(通常为可用 CPU 核心数),仅在 CPU 有工作时才使用操作系统线程,且不会让操作系统线程进入睡眠状态。这种设计能更充分地利用 CPU 资源,同时所需的操作系统线程数量远少于传统方式,而每个操作系统线程大约需要一兆字节的内存。 Going All In On the JVM 25 Virtual Threads dzone.com +1
“棕色纸袋项目:babbler" 首先坦白:过去几个月,我一直在构建需要真正思考的项目。Turicum 是一门编程语言。Perag 是一个个人 RAG 系统,用于读取你的文档,从而让 AI 无需自行处理。mdship 以严肃的态度操作 Markdown 文件,因为它深知人们会基于它构建 CI 流水线。这一切都行之有效、真实可靠,是严肃的工作,期望有人能使用它们并创造价值。有时,你只想做一个“棕色包”项目——那种能在午餐三明治变湿之前就能启动、完成并发布的项目。于是,我打造了 babbler。 A Brown-Bag Project: babbler dzone.com +1
使用 mamori 在 Go 中实现自我协调的 Azure Key Vault 密钥 Azure Key Vault 是 Azure 密钥世界中的模范公民:每个密钥均支持版本控制;提供软删除和清理保护;访问权限由 RBAC 或访问策略管理;DefaultAzureCredential 使得您的应用程序在本地(az login)和生产环境(AKS 上的托管身份/工作负载身份)中采用完全相同的认证方式,且无需任何代码修改。然而,同样的老问题依然存在。您的 Go 服务在启动时调用一次 GetSecret,将值解码为结构体,并在整个进程生命周期中将其视为不可变数据。当有人在 Key Vault 中轮换密钥时(生成新版本并禁用旧版本),您的服务对此一无所知。它会继续使用启动时读取的值,直到下一次部署或 Pod 重启。这种轮换在 Azure 侧是无缝的,但对应用程序而言却完全不可见——这正是最糟糕的组合。 Azure Key Vault Secrets That Reconcile Themselves in Go, With mamori dzone.com +1
使用 Playwright TypeScript 测试 PUT、PATCH 和 DELETE API 请求 API 测试是验证 API 是否按预期运行的实践。在敏捷环境中,团队通常在软件开发生命周期(SDLC)早期将其作为“测试左移”的一部分执行,从而实现更快的反馈,并帮助尽早发现并修复缺陷。Playwright 是一个现代化的测试自动化框架,深受测试人员和开发人员的喜爱。由微软构建,它使得在单一工具中跨多种编程语言自动化 Web 和 API 测试变得轻而易举。 How to Test PUT, PATCH, and DELETE API Requests Using Playwright TypeScript dzone.com +1
使用 mamori 在不重启 Go 服务的情况下轮换 AWS Secrets Manager 密钥 AWS Secrets Manager 有一个非常出色的功能:自动轮换。您只需附加一个轮换 Lambda 函数并设置调度,每 30 天即可自动为您轮换 RDS 密码。默认即安全,无需人工干预。但这里存在一个唯一的问题,也是演示中无人提及的一点:您的应用程序对此一无所知。 Rotate AWS Secrets Manager Secrets Without Restarting Your Go Service, With mamori dzone.com +1
AI 时代网络安全(一):绘制 Glasswing、Daybreak、Lightwell 等竞相发现并修复漏洞的工具图谱 每隔几周,安全新闻中就会出现一个新名字:Project Glasswing、Daybreak、Lightwell、CodeMender、Big Sleep。每一个都被宣传为应对 AI 驱动网络攻击的下一个解决方案。人们很容易将这一现象解读为 AI 实验室、云服务商和安全厂商之间的竞赛,并追问究竟谁能胜出。 AI-Era Cybersecurity, Part 1: Mapping Glasswing, Daybreak, Lightwell and the Tools Racing to Find and Fix Bugs dzone.com +1
介绍 mamori:为 Go 语言提供的可类型化、可观测的配置与密钥管理方案 我交付过的每一个 Go 服务最终都会长出同一个器官。它起初很小:只是几个 os.Getenv 调用。接着需要从 AWS Secrets Manager 获取密钥,于是你添加了 SDK。随后有人希望在不部署的情况下轮换该密钥,于是你添加了 time.Ticker。接着该 ticker 需要加锁,因为两个 goroutine 在替换配置的同时正在读取配置。然后一个错误值溜了进来导致生产环境宕机,于是你添加了验证。接着在一次事件中,密钥出现在日志行中,现在你又得添加一个脱敏包装器。到了最后,每个仓库里都出现了一个量身定制的 ConfigManager:一个加载器、一个获取器、一个刷新循环、一个互斥锁,还有一份祈祷。它从未两次完全相同,很少得到良好的测试,也恰恰是没人愿意接手的那类代码。 Introducing mamori: Typed, Watchable Config and Secrets for Go dzone.com +1
“在我机器上能运行”是一个架构问题 软件在开发者机器上运行正常却在其他环境失败,这通常意味着架构层面的问题。其根本原因在于系统行为的关键部分未被纳入版本控制,使得开发者的工作站成为一种隐式且未文档化的依赖项。运行时版本、CPU 架构、文件系统、区域设置、时区、原生库、证书、环境变量、依赖解析或构建工具等方面的差异,均可能导致此类失败。这些差异表明,系统缺乏对其构建和运行条件的完整、可复现的定义。可复现构建实践旨在通过确保声明的源码和输入能够生成可验证的产物来解决这一问题。目前,仓库通常仅包含源代码和配置,却排除了运行假设。例如,不同的 Java 开发工具包(JDK)可能改变服务的行为;依赖主机时区的代码,可能因 Java 虚拟机(JVM)运行时环境的差异而产生不同的结果。同样,影响区域敏感操作的默认区域设置可能从环境中继承,从而导致结果不一致。 "Works on My Machine" Is an Architecture Problem dzone.com +1
LLM 评估分数有所提升,但生产质量并未改善。 LLM 应用可能获得更高的评估分数,但在生产环境中却变得效用降低。这种矛盾仅是表象。评估分数并非质量本身,而是由特定数据集、指标、评判者、采样策略及聚合规则所生成的估计值。若上述任一要素与生产环境存在差异,优化过程便可能在提升分数的同时,使系统实际行为朝错误方向偏离。当前的评估指南明确指出,应推荐针对具体任务的测试,以反映真实世界的数据分布、生产数据、持续评估,并相对于人类判断进行校准,而非将单一数值分数视为充分依据。 The LLM Evaluation Score Improved. Production Quality Didn't. dzone.com +1
使用 Playwright 与 TypeScript 在 API 测试自动化中结合 Builder 模式与 Faker 是否曾因测试数据混乱或硬编码而感到 Playwright 测试难以推进?起初问题看似简单,但随着测试规模扩大——例如在电商或金融类应用中——管理逼真的测试数据往往会变得混乱且重复。修复测试数据所花费的时间,往往多于实际执行测试的时间。此时,结合 Builder 模式与 Faker,便能提供显著帮助。它让我们能够轻松生成整洁、灵活且逼真的测试数据。 Builder Pattern + Faker in API Test Automation Using Playwright With TypeScript dzone.com +1