<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Neat Guy Coding</title><link>https://neatguycoding.com/zh-cn/</link><description>Recent content on Neat Guy Coding</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>© 2026 NeatGuyCoding</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://neatguycoding.com/zh-cn/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 年重回 Java：一条面向有经验工程师的现代化路径</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/</guid><description>2026 年重回 Java：一条面向有经验工程师的现代化路径</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/cover.png"/></item><item><title>Agent 监督栈：从静态评测到轨迹级可观测性</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-patronus-ai-with-anand-kannappan-weaviate-podcast-122/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-patronus-ai-with-anand-kannappan-weaviate-podcast-122/</guid><description>Agent 监督栈：从静态评测到轨迹级可观测性</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-patronus-ai-with-anand-kannappan-weaviate-podcast-122/cover.png"/></item><item><title>Agentic RAG：当检索管线长出「规划与工具环」</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-agentic-rag-with-erika-cardenas-weaviate-podcast-109/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-agentic-rag-with-erika-cardenas-weaviate-podcast-109/</guid><description>Agentic RAG：当检索管线长出「规划与工具环」</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-agentic-rag-with-erika-cardenas-weaviate-podcast-109/cover.png"/></item><item><title>Agentic 主题建模：嵌入管线、LLM 与人在环内的工程权衡</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-agentic-topic-modeling-with-maarten-grootendorst-weaviate-podcast-126/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-agentic-topic-modeling-with-maarten-grootendorst-weaviate-podcast-126/</guid><description>Agentic 主题建模：嵌入管线、LLM 与人在环内的工程权衡</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-agentic-topic-modeling-with-maarten-grootendorst-weaviate-podcast-126/cover.png"/></item><item><title>AI 驱动搜索：当 RAG、Agent 与经典 IR 重新接线</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-doug-turnbull-and-trey-grainger-on-ai-powered-search-weaviate-podcast-13/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-doug-turnbull-and-trey-grainger-on-ai-powered-search-weaviate-podcast-13/</guid><description>AI 驱动搜索：当 RAG、Agent 与经典 IR 重新接线</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-doug-turnbull-and-trey-grainger-on-ai-powered-search-weaviate-podcast-13/cover.png"/></item><item><title>Cilium 1.19：升级前该核对什么</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-202-exploring-new-features-in-cilium-1-19/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-202-exploring-new-features-in-cilium-1-19/</guid><description>Cilium 1.19：升级前该核对什么</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-202-exploring-new-features-in-cilium-1-19/cover.png"/></item><item><title>Cilium 十年：社区规模、调研信号与 1.19 技术脉络</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-200-celebrating-a-decade-of-cilium/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-200-celebrating-a-decade-of-cilium/</guid><description>Cilium 十年：社区规模、调研信号与 1.19 技术脉络</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-200-celebrating-a-decade-of-cilium/cover.png"/></item><item><title>Compound AI：当「一次 LLM 调用」不够用时</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-compound-ai-systems-with-philip-kiely-weaviate-podcast-105/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-compound-ai-systems-with-philip-kiely-weaviate-podcast-105/</guid><description>Compound AI：当「一次 LLM 调用」不够用时</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-compound-ai-systems-with-philip-kiely-weaviate-podcast-105/cover.png"/></item><item><title>Data Agent：当「会写代码的模型」撞上真实数据栈</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-data-agents-with-shreya-shankar-weaviate-podcast-135/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-data-agents-with-shreya-shankar-weaviate-podcast-135/</guid><description>Data Agent：当「会写代码的模型」撞上真实数据栈</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-data-agents-with-shreya-shankar-weaviate-podcast-135/cover.png"/></item><item><title>eCHO 201：2026 网络、eBPF 与安全预测——技术笔记</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-201-2026-networking-security-and-ebpf-predictions/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-201-2026-networking-security-and-ebpf-predictions/</guid><description>eCHO 201：2026 网络、eBPF 与安全预测——技术笔记</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-echo-ebpf-cilium-office-hours-echo-episode-201-2026-networking-security-and-ebpf-predictions/cover.png"/></item><item><title>Infosec 简报：CA 支持台沦陷、内核提权与 ATT&amp;CK 战术重组</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-04/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-04/</guid><description>Infosec 简报：CA 支持台沦陷、内核提权与 ATT&amp;amp;CK 战术重组</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-04/cover.png"/></item><item><title>Infosec 简报：社工归案、Teams 钓鱼链与前沿 AI 防御信号</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-04-27/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-04-27/</guid><description>Infosec 简报：社工归案、Teams 钓鱼链与前沿 AI 防御信号</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-04-27/cover.png"/></item><item><title>Java 平台横切面问答：模块、构建工具、Lombok 与兼容纪律</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/</guid><description>Java 平台横切面问答：模块、构建工具、Lombok 与兼容纪律</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/cover.png"/></item><item><title>Java 平台与后量子密码：从威胁模型到 JDK 交付路径</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/</guid><description>Java 平台与后量子密码：从威胁模型到 JDK 交付路径</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/cover.png"/></item><item><title>Java 生态里的 Agentic AI：三套框架如何用同一业务讲清编排差异</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-comparing-agentic-ai-frameworks-for-java-by-timo-salm-sandra-ahlgrimm-sp/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-comparing-agentic-ai-frameworks-for-java-by-timo-salm-sandra-ahlgrimm-sp/</guid><description>Java 生态里的 Agentic AI：三套框架如何用同一业务讲清编排差异</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-spring-io-2026-comparing-agentic-ai-frameworks-for-java-by-timo-salm-sandra-ahlgrimm-sp/cover.png"/></item><item><title>JavaFX 26：桌面 UI 的工程基线与选型边界</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-javafx-26-today/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-javafx-26-today/</guid><description>JavaFX 26：桌面 UI 的工程基线与选型边界</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-javafx-26-today/cover.png"/></item><item><title>JDK 26 如何改善 G1 吞吐：写屏障同步与默认收集器路线</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/</guid><description>JDK 26 如何改善 G1 吞吐：写屏障同步与默认收集器路线</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/cover.png"/></item><item><title>JDK 桌面客户端在 2026：三十年栈上的维护、现代化与交付转型</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/</guid><description>JDK 桌面客户端在 2026：三十年栈上的维护、现代化与交付转型</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/cover.png"/></item><item><title>Judge-Time Compute：当 LLM 评测从「单次打分」变成可组合管线</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-haize-labs-with-leonard-tang-weaviate-podcast-121/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-haize-labs-with-leonard-tang-weaviate-podcast-121/</guid><description>Judge-Time Compute：当 LLM 评测从「单次打分」变成可组合管线</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-haize-labs-with-leonard-tang-weaviate-podcast-121/cover.png"/></item><item><title>JVM 与 Spring Boot 可观测性：三信号如何真正串起来</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-i-can-see-clearly-now-observability-of-jvm-spring-boot-2-3-4-apps-spring/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-i-can-see-clearly-now-observability-of-jvm-spring-boot-2-3-4-apps-spring/</guid><description>JVM 与 Spring Boot 可观测性：三信号如何真正串起来</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-spring-io-2026-i-can-see-clearly-now-observability-of-jvm-spring-boot-2-3-4-apps-spring/cover.png"/></item><item><title>REFRAG：把 RAG 上下文从「token 串」变成可压缩表示</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-refrag-with-xiaoqiang-lin-weaviate-podcast-130/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-refrag-with-xiaoqiang-lin-weaviate-podcast-130/</guid><description>REFRAG：把 RAG 上下文从「token 串」变成可压缩表示</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-refrag-with-xiaoqiang-lin-weaviate-podcast-130/cover.png"/></item><item><title>Spring for Apache Kafka 4：迁移、Share Group 与新 Consumer 协议</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-what-s-new-in-spring-for-apache-kafka-4-by-tim-van-baarsen-spring-io-202/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-what-s-new-in-spring-for-apache-kafka-4-by-tim-van-baarsen-spring-io-202/</guid><description>Spring for Apache Kafka 4：迁移、Share Group 与新 Consumer 协议</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-spring-io-2026-what-s-new-in-spring-for-apache-kafka-4-by-tim-van-baarsen-spring-io-202/cover.png"/></item><item><title>把 Copilot 嵌进 Java 工具链：从终端 CLI 到 SDK 与插件</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/</guid><description>把 Copilot 嵌进 Java 工具链：从终端 CLI 到 SDK 与插件</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/cover.png"/></item><item><title>摆脱多栈陷阱：用 Java 现代化桌面 UI，而不必拥抱全量 React 重写</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/</guid><description>摆脱多栈陷阱：用 Java 现代化桌面 UI，而不必拥抱全量 React 重写</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/cover.png"/></item><item><title>半结构化检索上的 Agent：STaRK 基准与 AvaTaR 优化</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-optimizing-retrieval-agents-with-shirley-wu-weaviate-podcast-115/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-optimizing-retrieval-agents-with-shirley-wu-weaviate-podcast-115/</guid><description>半结构化检索上的 Agent：STaRK 基准与 AvaTaR 优化</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-optimizing-retrieval-agents-with-shirley-wu-weaviate-podcast-115/cover.png"/></item><item><title>超大规模 Java 平台：从联邦 GraphQL 到 JVM 默认项</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/</guid><description>超大规模 Java 平台：从联邦 GraphQL 到 JVM 默认项</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/cover.png"/></item><item><title>充分上下文：RAG 该测「够不够答」，而不只是「像不像相关」</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-sufficient-context-with-hailey-joren-weaviate-podcast-125/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-sufficient-context-with-hailey-joren-weaviate-podcast-125/</guid><description>充分上下文：RAG 该测「够不够答」，而不只是「像不像相关」</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-sufficient-context-with-hailey-joren-weaviate-podcast-125/cover.png"/></item><item><title>从 JDK 8 到 25：把跨 seventeen 个版本的升级当成平台工程</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/</guid><description>从 JDK 8 到 25：把跨 seventeen 个版本的升级当成平台工程</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/cover.png"/></item><item><title>从 RAG 到 Search Agent：检索、合成数据与评测的三条张力</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-search-agents-with-nandan-thakur-weaviate-podcast-137/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-search-agents-with-nandan-thakur-weaviate-podcast-137/</guid><description>从 RAG 到 Search Agent：检索、合成数据与评测的三条张力</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-search-agents-with-nandan-thakur-weaviate-podcast-137/cover.png"/></item><item><title>从 Record 到可解构类型：Amber 的解构—重建路线与语法治理</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/</guid><description>当 &lt;a
href="https://openjdk.org/jeps/395"
target="_blank"
>JEP 395&lt;/a> 把不可变载体、名义元组与 &lt;a
href="https://openjdk.org/jeps/440"
target="_blank"
>record pattern&lt;/a> 绑在一起时，任何超出其约束的演进都会同时失去紧凑语法与模式匹配侧的表达能力。&lt;a
href="https://openjdk.org/projects/amber/"
target="_blank"
>Project Amber&lt;/a> 正把「可按固定组件形状解构」提升为类型的顶层性质，</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/cover.png"/></item><item><title>从 REST 到 GraphQL：Spring 栈上的契约、解析器与实时推送</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-spring-time-from-rest-to-graphql-by-frederieke-scheper-peter-eijgermans/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-spring-io-2026-spring-time-from-rest-to-graphql-by-frederieke-scheper-peter-eijgermans/</guid><description>从 REST 到 GraphQL：Spring 栈上的契约、解析器与实时推送</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-spring-io-2026-spring-time-from-rest-to-graphql-by-frederieke-scheper-peter-eijgermans/cover.png"/></item><item><title>当标量 reward 不够用时：GEPA 与 compound AI 的反思式文本进化</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-gepa-with-lakshya-a-agrawal-weaviate-podcast-127/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-gepa-with-lakshya-a-agrawal-weaviate-podcast-127/</guid><description>当标量 reward 不够用时：GEPA 与 compound AI 的反思式文本进化</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-gepa-with-lakshya-a-agrawal-weaviate-podcast-127/cover.png"/></item><item><title>当查询变成整段代码：RAG 评测与搜索型 Benchmark 的分裂</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-rag-benchmarks-with-nandan-thakur-weaviate-podcast-124/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-rag-benchmarks-with-nandan-thakur-weaviate-podcast-124/</guid><description>当查询变成整段代码：RAG 评测与搜索型 Benchmark 的分裂</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-rag-benchmarks-with-nandan-thakur-weaviate-podcast-124/cover.png"/></item><item><title>多阶段语言程序与自动 Prompt 优化：从 DSPy 到 MIPRO</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-mipro-and-dspy-with-krista-opsahl-ong-weaviate-podcast-103/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-mipro-and-dspy-with-krista-opsahl-ong-weaviate-podcast-103/</guid><description>多阶段语言程序与自动 Prompt 优化：从 DSPy 到 MIPRO</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-mipro-and-dspy-with-krista-opsahl-ong-weaviate-podcast-103/cover.png"/></item><item><title>多向量检索：在单向量、late interaction 与级联重排之间选型</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-multi-vector-search-with-ame-lie-chatelain-and-antoine-chaffin-weaviate/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-multi-vector-search-with-ame-lie-chatelain-and-antoine-chaffin-weaviate/</guid><description>多向量检索：在单向量、late interaction 与级联重排之间选型</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-multi-vector-search-with-ame-lie-chatelain-and-antoine-chaffin-weaviate/cover.png"/></item><item><title>多向量检索的索引悖论：MUVERA 如何用单向量 ANN 逼近 Chamfer</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-muvera-with-rajesh-jayaram-and-roberto-esposito-weaviate-podcast-123/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-muvera-with-rajesh-jayaram-and-roberto-esposito-weaviate-podcast-123/</guid><description>多向量检索的索引悖论：MUVERA 如何用单向量 ANN 逼近 Chamfer</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-muvera-with-rajesh-jayaram-and-roberto-esposito-weaviate-podcast-123/cover.png"/></item><item><title>泛型代码在 JVM 上如何变快：擦除、剖析与「坠崖」之后的攀爬</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/</guid><description>泛型代码在 JVM 上如何变快：擦除、剖析与「坠崖」之后的攀爬</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/cover.png"/></item><item><title>格式约束何时伤害 LLM：从 Agent 流水线到基准评测的分叉</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-let-me-speak-freely-with-zhi-rui-tam-weaviate-podcast-108/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-let-me-speak-freely-with-zhi-rui-tam-weaviate-podcast-108/</guid><description>格式约束何时伤害 LLM：从 Agent 流水线到基准评测的分叉</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-let-me-speak-freely-with-zhi-rui-tam-weaviate-podcast-108/cover.png"/></item><item><title>规模化 DataFrame：当 notebook 习惯撞上分布式执行</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-scaling-pandas-with-devin-petersohn-weaviate-podcast-101/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-scaling-pandas-with-devin-petersohn-weaviate-podcast-101/</guid><description>规模化 DataFrame：当 notebook 习惯撞上分布式执行</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-scaling-pandas-with-devin-petersohn-weaviate-podcast-101/cover.png"/></item><item><title>合成数据：RAG、Agent 与评测里的「造数」边界</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-synthetic-data-with-david-berenstein-and-ben-burtenshaw-weaviate-podcast/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-synthetic-data-with-david-berenstein-and-ben-burtenshaw-weaviate-podcast/</guid><description>合成数据：RAG、Agent 与评测里的「造数」边界</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-synthetic-data-with-david-berenstein-and-ben-burtenshaw-weaviate-podcast/cover.png"/></item><item><title>检索列表多样化：几何后处理、评测裂缝与 RAG 上下文预算</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-pyversity-with-thomas-van-dongen-weaviate-podcast-132/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-pyversity-with-thomas-van-dongen-weaviate-podcast-132/</guid><description>检索列表多样化：几何后处理、评测裂缝与 RAG 上下文预算</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-pyversity-with-thomas-van-dongen-weaviate-podcast-132/cover.png"/></item><item><title>检索嵌入的工程取舍：从 Arctic Embed 看榜单、训练与生产约束</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-arctic-embed-with-luke-merrick-puxuan-yu-and-charles-pierse-weaviate-pod/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-arctic-embed-with-luke-merrick-puxuan-yu-and-charles-pierse-weaviate-pod/</guid><description>检索嵌入的工程取舍：从 Arctic Embed 看榜单、训练与生产约束</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-arctic-embed-with-luke-merrick-puxuan-yu-and-charles-pierse-weaviate-pod/cover.png"/></item><item><title>结构化输出：从「能解析的 JSON」到 logit 级约束生成</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-structured-outputs-with-will-kurt-and-cameron-pfiffer-weaviate-podcast-1/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-structured-outputs-with-will-kurt-and-cameron-pfiffer-weaviate-podcast-1/</guid><description>结构化输出：从「能解析的 JSON」到 logit 级约束生成</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-structured-outputs-with-will-kurt-and-cameron-pfiffer-weaviate-podcast-1/cover.png"/></item><item><title>金融研究语料上的企业 RAG：向量库、Agent 与 eval 的工程取舍</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-morningstar-intelligence-engine-with-aravind-kesiraju-weaviate-podcast-1/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-morningstar-intelligence-engine-with-aravind-kesiraju-weaviate-podcast-1/</guid><description>金融研究语料上的企业 RAG：向量库、Agent 与 eval 的工程取舍</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-morningstar-intelligence-engine-with-aravind-kesiraju-weaviate-podcast-1/cover.png"/></item><item><title>开放模型上生产：Java 团队的 LangChain4j 集成路径</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/</guid><description>开放模型上生产：Java 团队的 LangChain4j 集成路径</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/cover.png"/></item><item><title>企业 RAG 的边界：托管流水线、向量库与「可写回」检索</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-vertex-ai-rag-engine-with-lewis-liu-and-bob-van-luijt-weaviate-podcast-1/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-vertex-ai-rag-engine-with-lewis-liu-and-bob-van-luijt-weaviate-podcast-1/</guid><description>企业 RAG 的边界：托管流水线、向量库与「可写回」检索</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-vertex-ai-rag-engine-with-lewis-liu-and-bob-van-luijt-weaviate-podcast-1/cover.png"/></item><item><title>企业 RAG 与 Agent：当向量库遇上四十年分析软件</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-saurabh-mishra-and-bob-van-luijt-on-weaviate-and-sas-weaviate-podcast-12/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-saurabh-mishra-and-bob-van-luijt-on-weaviate-and-sas-weaviate-podcast-12/</guid><description>企业 RAG 与 Agent：当向量库遇上四十年分析软件</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-saurabh-mishra-and-bob-van-luijt-on-weaviate-and-sas-weaviate-podcast-12/cover.png"/></item><item><title>企业级 RAG 与 Agent：从拼接管线到可优化的整机</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-contextual-ai-with-amanpreet-singh-weaviate-podcast-114/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-contextual-ai-with-amanpreet-singh-weaviate-podcast-114/</guid><description>企业级 RAG 与 Agent：从拼接管线到可优化的整机</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-contextual-ai-with-amanpreet-singh-weaviate-podcast-114/cover.png"/></item><item><title>死后 JVM 崩溃分析：用 jcmd 读 core，而不是重学一套工具</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/</guid><description>死后 JVM 崩溃分析：用 jcmd 读 core，而不是重学一套工具</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/cover.png"/></item><item><title>向量库上的 Query Agent：可审计检索与两种「问数据」模式</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-weaviate-s-query-agent-with-charles-pierse-weaviate-podcast-128/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-weaviate-s-query-agent-with-charles-pierse-weaviate-podcast-128/</guid><description>向量库上的 Query Agent：可审计检索与两种「问数据」模式</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-weaviate-s-query-agent-with-charles-pierse-weaviate-podcast-128/cover.png"/></item><item><title>信息安全简报：教育 SaaS 二次打击、集群 RCE 与浏览器静默 AI</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-11/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-11/</guid><description>信息安全简报：教育 SaaS 二次打击、集群 RCE 与浏览器静默 AI</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-bhis-2026-bhis-talkin-bout-infosec-news-2026-05-11/cover.png"/></item><item><title>用 Spring Debugger 拆穿 Spring Boot「魔法」：属性、Bean 与事务的真实链路</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/</guid><description>用 Spring Debugger 拆穿 Spring Boot「魔法」：属性、Bean 与事务的真实链路</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/cover.png"/></item><item><title>用代码反射把 Java 内核送到 GPU：HAT 与 Project Babylon 的工程切面</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/</guid><description>用代码反射把 Java 内核送到 GPU：HAT 与 Project Babylon 的工程切面</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/cover.png"/></item><item><title>用领域建模把 Java AI Agent 从「能跑」做到「可控」</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/</guid><description>用领域建模把 Java AI Agent 从「能跑」做到「可控」</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/cover.png"/></item><item><title>有状态 Agent 与上下文编译：从 MemGPT 到 Letta 的工程分野</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-letta-ai-with-sarah-wooders-weaviate-podcast-117/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-letta-ai-with-sarah-wooders-weaviate-podcast-117/</guid><description>有状态 Agent 与上下文编译：从 MemGPT 到 Letta 的工程分野</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-letta-ai-with-sarah-wooders-weaviate-podcast-117/cover.png"/></item><item><title>与 Agent 无关的 Java 质量护栏：用 AGENTS.md 与静态分析把标准写进仓库</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/</guid><description>与 Agent 无关的 Java 质量护栏：用 AGENTS.md 与静态分析把标准写进仓库</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/cover.png"/></item><item><title>语义查询引擎：当 LLM 算子进入查询优化器</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-semantic-query-engines-with-matthew-russo-weaviate-podcast-131/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-semantic-query-engines-with-matthew-russo-weaviate-podcast-131/</guid><description>语义查询引擎：当 LLM 算子进入查询优化器</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-semantic-query-engines-with-matthew-russo-weaviate-podcast-131/cover.png"/></item><item><title>语音智能体时代的架构张力：SSM、低延迟 TTS 与「端到端」是否吃掉编排链</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-cartesia-ai-with-karan-goel-weaviate-podcast-113/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-cartesia-ai-with-karan-goel-weaviate-podcast-113/</guid><description>语音智能体时代的架构张力：SSM、低延迟 TTS 与「端到端」是否吃掉编排链</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-cartesia-ai-with-karan-goel-weaviate-podcast-113/cover.png"/></item><item><title>在 exabyte 级非结构化内容上做企业 AI：权限、检索分层与 Agent 边界</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-box-ai-with-ben-kus-and-bob-van-luijt-weaviate-podcast-120/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-box-ai-with-ben-kus-and-bob-van-luijt-weaviate-podcast-120/</guid><description>在 exabyte 级非结构化内容上做企业 AI：权限、检索分层与 Agent 边界</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-box-ai-with-ben-kus-and-bob-van-luijt-weaviate-podcast-120/cover.png"/></item><item><title>真实仓库上的软件工程智能体：SWE-Bench 与评测脚手架之争</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-swe-bench-with-john-yang-and-carlos-e-jimenez-weaviate-podcast-107/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-weaviate-podcast-swe-bench-with-john-yang-and-carlos-e-jimenez-weaviate-podcast-107/</guid><description>真实仓库上的软件工程智能体：SWE-Bench 与评测脚手架之争</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-weaviate-podcast-swe-bench-with-john-yang-and-carlos-e-jimenez-weaviate-podcast-107/cover.png"/></item><item><title>Spring Boot 4 技术栈纵览：Starter 粒度、MVC 版本协商与安全演进</title><link>https://neatguycoding.com/zh-cn/posts/bootiful-spring-boot-4-by-josh-long-spring-io-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/bootiful-spring-boot-4-by-josh-long-spring-io-2026/</guid><description>Spring Boot 4 与 Spring Framework 7 组合下，依赖可按能力拆成更细的 Starter，Web 出站客户端可与服务端 MVC 依赖分离；同一代码库可在 Spring MVC 中启用内置 API 版本解析，并与 Spring Data JDBC、&lt;code>RestClient&lt;/code> / 声明式 &lt;code>@HttpExchange&lt;/code> 客户端协同。Spring Security 7 侧重可叠加的 &lt;code>Customizer&amp;lt;HttpSecurity&amp;gt;&lt;/code>、一次性令牌登录、WebAuthn 与注解式多因子模型；</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/bootiful-spring-boot-4-by-josh-long-spring-io-2026/cover.png"/></item><item><title>Spring 工程上的 AI 编码代理：实时链路、可验证闭环与上下文治理</title><link>https://neatguycoding.com/zh-cn/posts/claude-code-for-spring-developers-by-thomas-schilling-spring-io-2026/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/claude-code-for-spring-developers-by-thomas-schilling-spring-io-2026/</guid><description>面向已在 JVM/Web 栈上交付服务的工程师，本文从一类典型 Spring Boot + Kotlin 实时互动应用出发，梳理「数据库信号 → 响应式 SSE → 浏览器」的数据路径，并把人机协作拆成可核对的三层：&lt;strong>编译与测试闭合&lt;/strong>、&lt;strong>可版本化的项目记忆（CLAUDE.md / 规则 / Skills）&lt;/strong>、&lt;strong>工具调用路径上的 Hooks 与 MCP&lt;/strong>。后半部分讨论无规格迭代导致的测试与状态机缺口、结构化澄清（Interview）如何把导航与安全决策写进规格，以及长对话中跨切面步骤被静默丢弃的现象与分段执行思路。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/claude-code-for-spring-developers-by-thomas-schilling-spring-io-2026/cover.png"/></item><item><title>WebAssembly 作为 JVM 生态的嵌入层：模型、运行时与工程抓手</title><link>https://neatguycoding.com/zh-cn/posts/webassembly-and-the-future-of-the-jvm-ecosystem-by-andrea-peruffo-spring-io-20/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/webassembly-and-the-future-of-the-jvm-ecosystem-by-andrea-peruffo-spring-io-20/</guid><description>WebAssembly 作为 JVM 生态的嵌入层：模型、运行时与工程抓手</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/webassembly-and-the-future-of-the-jvm-ecosystem-by-andrea-peruffo-spring-io-20/cover.png"/></item><item><title>遗留 Servlet 应用渐进接入 Spring Boot：构建、自动配置与 WAR 双模式</title><link>https://neatguycoding.com/zh-cn/posts/how-to-migrate-the-legacy-project-to-spring-boot-by-sergei-chernov-spring-io-2/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/how-to-migrate-the-legacy-project-to-spring-boot-by-sergei-chernov-spring-io-2/</guid><description>大规模迁移 Spring Boot 前，应先有可重复的集成验证与可控的依赖基线；随后按「Starter → 自动配置排障 → 外置容器内的 Spring 上下文 → 过渡期 Holder → Bean 化 → Servlet 注解化 → 可执行 WAR」分层推进。下文按依赖与运行时层次组织，并对照官方参考手册区分「演示型」引导路径与手册主推路径；个别行为（例如仅启动非 Web 上下文时的进程生命周期）若官方未逐句界定，则保留工程层面的不确定性说明。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/how-to-migrate-the-legacy-project-to-spring-boot-by-sergei-chernov-spring-io-2/cover.png"/></item><item><title>用 Kotlin 表达力加固 Spring Boot 测试：断言、夹具与响应式边界</title><link>https://neatguycoding.com/zh-cn/posts/supercharge-spring-boot-tests-with-kotlin-dsl-power-by-urs-peter-spring-io-202/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/supercharge-spring-boot-tests-with-kotlin-dsl-power-by-urs-peter-spring-io-202/</guid><description>Spring Boot 与 Kotlin 在 JVM 上互操作成熟，团队常先在 &lt;code>src/test&lt;/code> 引入 Kotlin，把扩展函数、默认参数、类型安全 DSL 与 Kotest 等断言风格用在集成测试与 &lt;code>MockMvc&lt;/code> 场景中，以降低样板代码并收紧失败信息。与此同时，Java Builder、静态工具重载与 Project Reactor 的 &lt;code>StepVerifier&lt;/code> 仍有各自的认知成本；文中按依赖层次归纳常见动机、可对齐的公开 API，以及需注意的语义边界（例如 JVM 泛型擦除、响应式校验是否真正订阅完成）。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/supercharge-spring-boot-tests-with-kotlin-dsl-power-by-urs-peter-spring-io-202/cover.png"/></item><item><title>全网最硬核 JDK 解析 - 7. JFR 事件采集原理与演进</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-7-jfr-conf-usage/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-7-jfr-conf-usage/</guid><description>全面解析 JFR（Java Flight Recorder）的配置体系、使用方式和事件采集机制。涵盖 JFR 配置体系（全局配置、记录级别配置、JFC 配置文件）、多种使用方式（JVM 参数、jcmd 命令、JDK API、JMX）、jfr 工具分析、事件类型分类与配置适用性，以及从 JDK 11 到 JDK 25 的核心变化和最佳实践。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-7-jfr-conf-usage/featured.jpg"/></item><item><title>全网最硬核 JDK 解析 - 6. 通过 JFR 快速定位 Java 堆 OOM 实战与底层原理</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-6-jfr-track-oom/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-6-jfr-track-oom/</guid><description>深入讲解如何通过 JFR（JDK Flight Recorder）快速定位 Java 堆 OOM 的实战方法与底层原理，涵盖三种典型 OOM 场景的 JFR 事件分析，包括 Allocation Requiring GC、ZAllocationStall、ObjectAllocationOutsideTLAB 等关键事件的采集与分析技巧。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-6-jfr-track-oom/featured.jpg"/></item><item><title>全网最硬核 JDK 解析 - 5. Heap dump 与错误处理诊断相关演进与最佳实践解析</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-5-heap-dump-diagnostics/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-5-heap-dump-diagnostics/</guid><description>深入分析 JVM 错误处理和诊断相关参数的设计原理、实现机制和版本演进，涵盖 Heap Dump、Java 对象堆 OOM 处理、错误日志等关键参数的源码解析和最佳实践。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-5-heap-dump-diagnostics/featured.jpg"/></item><item><title>浅尝辄止 JEP - JEP-502：Stable Value（预览）</title><link>https://neatguycoding.com/zh-cn/posts/brief-look-jep-502/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/brief-look-jep-502/</guid><description>探索 JEP 502 的 StableValue API，它解决了 Java 开发中不变性与初始化灵活性之间的根本权衡。本文涵盖 API 设计、核心实现细节（包括双重检查锁定模式、内存语义）以及使用 @Stable 注解的 JIT 优化策略。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/brief-look-jep-502/featured.jpg"/></item><item><title>API 安全和反机器人保护综合指南</title><link>https://neatguycoding.com/zh-cn/posts/safe-and-anti-bot/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/safe-and-anti-bot/</guid><description>深入探讨现代 API 安全实践，涵盖 Web 和移动客户端密钥交换机制、基本安全标头实现以及有效的反机器人保护策略，以保护你的应用同时保持出色的用户体验。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/safe-and-anti-bot/featured.jpg"/></item><item><title>为什么应该避免在生产环境中启用 HeapDumpOnOutOfMemoryError</title><link>https://neatguycoding.com/zh-cn/posts/java-oom/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/java-oom/</guid><description>全面指南，探讨为什么启用 HeapDumpOnOutOfMemoryError 会在生产环境中导致严重的性能问题，哪些 OutOfMemoryError 类型实际触发堆转储，以及使用 JFR 进行内存泄漏检测和自动服务重启策略等更好的替代方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/java-oom/featured.jpg"/></item><item><title>PostgreSQL vs MySQL：为你的 OLTP 工作负载找到合适的选择</title><link>https://neatguycoding.com/zh-cn/posts/pgsql-mysql/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/pgsql-mysql/</guid><description>PostgreSQL 和 MySQL 在 OLTP 场景下的全面比较，探讨它们在二级索引处理和 MVCC 实现方面的根本架构差异，以及何时选择每个数据库的实用见解。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/pgsql-mysql/featured.jpg"/></item><item><title>GraalVM Native Image 进程能否被 jps 检测到？以及我们的生产策略</title><link>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</guid><description>了解 GraalVM Native Image 进程何时会在 jps 中显示，并学习我们在生产环境中在 GraalVM Native Image 和 JVM 之间选择的经过实战验证的方法。我们详细介绍了针对 Lambda 风格任务与长期运行的微服务的策略。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/graalvm-jvm/featured.jpg"/></item><item><title>最大化第三方 API 请求吞吐量：实用测试方法</title><link>https://neatguycoding.com/zh-cn/posts/http-client/</link><pubDate>Thu, 18 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/http-client/</guid><description>学习如何使用 WebClient、TestContainers 和 toxicproxy 开发和测试高性能 API 客户端。本综合指南涵盖异步请求处理、隔离测试环境和真实故障模拟，用于构建健壮的微服务。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/http-client/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 4. OpenJDK JVM 内存结构实现</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-4-jvm-memory/</link><pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-4-jvm-memory/</guid><description>一次全面深入的 JVM 内存架构剖析，涵盖堆内存、元空间、线程栈以及压缩对象指针。本文从内存分配流程、Native Memory Tracking 出发，并通过 jol、jhsdb、JFR 等工具示例，帮助理解 JVM 内存管理内部机制。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-4-jvm-memory/featured.jpg"/></item><item><title>解决神秘的 JVM Safepoint 问题：从问题到解决方案的探索之旅</title><link>https://neatguycoding.com/zh-cn/posts/log-copy-issue/</link><pubDate>Sun, 19 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-copy-issue/</guid><description>深入探讨诊断和解决生产 JVM 问题，其中应用在每小时日志同步任务期间会冻结。我们探索 safepoint 分析、JVM 日志输出阻塞、异步日志实现和 WebFlux 优化以实现完整解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-copy-issue/featured.jpg"/></item><item><title>解决 JVM Safepoint 延迟：从 EFS 集成到异步日志的探索之旅</title><link>https://neatguycoding.com/zh-cn/posts/async-log-issue/</link><pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/async-log-issue/</guid><description>深入调查升级到 Java 17 并实施 AWS EFS 集中式日志收集后出现的神秘 JVM safepoint 延迟问题。我们发现日志输出期间的文件 I/O 阻塞如何冻结整个 JVM 进程，并通过异步日志和正确的 WebFlux 实现解决了这个问题。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/async-log-issue/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 2. Java 随机数演进</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-2-java-random/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-2-java-random/</guid><description>全面探索 Java 中的伪随机数生成器，涵盖从基本线性同余算法到 Java 17 中高级 LXM 实现的所有内容。了解算法性能、安全考虑以及如何为你的特定用例选择合适的随机数生成器。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-2-java-random/featured.jpg"/></item><item><title>解决分片 MySQL 表的性能下降：理解根本原因和解决方案</title><link>https://neatguycoding.com/zh-cn/posts/recreate_table/</link><pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/recreate_table/</guid><description>全面指南，了解为什么 MySQL 查询在分片环境中随时间变慢，探讨存储碎片和 MVCC 相关问题的根本原因，并提供使用 OPTIMIZE TABLE 表重建技术维护最佳数据库性能的实用解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/recreate_table/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 3. Java 新内存模型解析与实验</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-3-jmm/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-3-jmm/</guid><description>从规范到实现深入探讨 Java 内存模型（JMM），涵盖内存屏障、CPU 重排序和 Java 9+ VarHandle API。了解一致性、因果性、共识性，以及 volatile、final 和其他同步机制在底层的工作原理，并提供实用的 jcstress 示例。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-3-jmm/featured.jpg"/></item><item><title>隐藏的性能杀手：为什么日志中的代码位置会摧毁你的微服务性能</title><link>https://neatguycoding.com/zh-cn/posts/log-with-position/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-with-position/</guid><description>了解在日志中启用代码位置如何导致微服务中的严重 CPU 性能问题，特别是响应式应用。这个深入分析揭示了 Log4j2 中堆栈遍历的隐藏成本，并为高吞吐量系统提供了可行的解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-with-position/featured.jpg"/></item><item><title>Spring Boot 升级后内存问题排查：深入探讨 ResolvableType 对象创建</title><link>https://neatguycoding.com/zh-cn/posts/spring-5-regression/</link><pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-5-regression/</guid><description>调查升级到 Spring Boot 2.4.6 + Spring Cloud 2020.0.x 后过度内存分配和 YoungGC 频率增加的问题，揭示 BeanUtils.copyProperties 如何在 Spring 5.3.x 版本中创建大量 ResolvableType 对象而不进行缓存。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-5-regression/featured.jpg"/></item><item><title>MySQL 优化器统计：为什么你的查询选择了错误的索引</title><link>https://neatguycoding.com/zh-cn/posts/sql-index/</link><pubDate>Thu, 24 Feb 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/sql-index/</guid><description>深入探讨 MySQL 的 InnoDB 优化器统计以及采样不准确如何导致索引选择不当，造成相似查询之间的显著性能差异。学习防止由优化器误判导致的慢 SQL 查询的实用解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/sql-index/featured.jpg"/></item><item><title>配置 Spring Data Redis 与 Lettuce 以实现有效的 Pipeline 操作</title><link>https://neatguycoding.com/zh-cn/posts/spring-data-redis-pipeline/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-data-redis-pipeline/</guid><description>关于如何正确配置 Spring Data Redis 与 Lettuce 以启用 pipeline 功能的综合指南。了解连接共享、AutoFlushCommands 和 PipeliningFlushPolicy 配置，以优化你的 Redis 批量操作并减少网络往返时间。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-data-redis-pipeline/featured.jpg"/></item><item><title>Spring Data Redis 连接泄漏之谜：当你的微服务失控时</title><link>https://neatguycoding.com/zh-cn/posts/spring-data-redis-connection-leak/</link><pubDate>Thu, 14 Oct 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-data-redis-connection-leak/</guid><description>生产事件调查，揭示 Spring Data Redis + Lettuce 在混合使用 SessionCallback 和 executeWithStickyConnection 操作时如何泄漏连接。深入探讨连接管理机制、JFR 分析技术和实用解决方案，防止你的 Redis 连接池成为黑洞。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-data-redis-connection-leak/featured.jpg"/></item><item><title>网关雪崩危机：同步 Redis 调用如何几乎摧毁我们的系统</title><link>https://neatguycoding.com/zh-cn/posts/spring-cloud-gateway-avalanche/</link><pubDate>Wed, 01 Sep 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-cloud-gateway-avalanche/</guid><description>深入探讨生产事件，其中我们的 Spring Cloud Gateway 由于阻塞的 Redis 操作而经历了级联故障。了解响应式环境中的同步 API 调用如何导致线程饥饿，导致健康检查失败和系统范围的雪崩，以及使用异步模式的完整解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-cloud-gateway-avalanche/featured.jpg"/></item><item><title>一个奇怪的 Bug 追踪：当异常失去声音时</title><link>https://neatguycoding.com/zh-cn/posts/log-exception/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-exception/</guid><description>深入探讨一个神秘的生产问题，其中异常日志神秘消失，引导我们通过 Arthas 调试、Log4j2 内部机制，以及发现异常的 getMessage() 方法本身由于 Guava-Guice 版本不兼容而抛出异常。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-exception/featured.jpg"/></item><item><title>通过 SQL 优化发现的隐藏生产问题</title><link>https://neatguycoding.com/zh-cn/posts/big-table-index-invalid/</link><pubDate>Sat, 07 Aug 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/big-table-index-invalid/</guid><description>当我们的运维团队带来一个执行时间极长的复杂 SQL 查询时，我们以为这只是一个性能问题。我们不知道，这次调查会发现一个深深隐藏的字符编码不匹配问题，它一直在我们的生产数据库中默默地导致全表扫描。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/big-table-index-invalid/featured.jpg"/></item><item><title>使用 JFR 排查 SSL 性能瓶颈</title><link>https://neatguycoding.com/zh-cn/posts/jfr-ssl/</link><pubDate>Sat, 27 Mar 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/jfr-ssl/</guid><description>深入分析微服务性能问题，包括 CPU 峰值和数据库连接异常。通过 JFR 分析，我们发现根本原因是 Java SecureRandom 在 /dev/random 上阻塞，并提供使用 /dev/urandom 的解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jfr-ssl/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 1. TLAB 全面解析</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-1-tlab/</link><pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-1-tlab/</guid><description>深入探讨 JVM 的线程本地分配缓冲区（TLAB）机制，涵盖设计原理、实现细节、性能优化和源代码分析。了解 TLAB 如何提高多线程环境中的内存分配效率，并掌握 TLAB 调优技术。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-1-tlab/featured.jpg"/></item><item><title>OpenJDK 11 JVM 日志：新统一配置完整指南</title><link>https://neatguycoding.com/zh-cn/posts/jvm-log/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/jvm-log/</guid><description>了解 OpenJDK 11 如何通过其统一配置系统彻底改变 JVM 日志记录。学习用于 GC 分析、类加载和运行时编译的基本日志标签，以及使用 jcmd 进行实时性能调优的动态日志配置。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jvm-log/featured.jpg"/></item><item><title/><link>https://neatguycoding.com/zh-cn/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/about/</guid><description>&lt;h1 class="relative group">👋 你好世界！NeatGuy 正在编程~
&lt;div id="-你好世界neatguy-正在编程" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e4%bd%a0%e5%a5%bd%e4%b8%96%e7%95%8cneatguy-%e6%ad%a3%e5%9c%a8%e7%bc%96%e7%a8%8b" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;div align="center">
&lt;img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&amp;pause=1000&amp;color=36BCF7&amp;center=true&amp;vCenter=true&amp;width=635&amp;lines=Passionate+Technology+Leader+and+Developer;Always+Learning+and+Challenging" alt="Typing SVG" />
&lt;/div>
&lt;h2 class="relative group">💫 关于我
&lt;div id="-关于我" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e5%85%b3%e4%ba%8e%e6%88%91" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ul>
&lt;li>🔭 作为技术领导者推动创新项目向前发展&lt;/li>
&lt;li>🌱 通过新兴技术不断扩展专业知识，拥抱新挑战&lt;/li>
&lt;li>💬 欢迎讨论所有技术相关话题——随时联系&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">🛠️ 技术栈
&lt;div id="-技术栈" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e6%8a%80%e6%9c%af%e6%a0%88" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;table class="tech-table">
&lt;thead>
&lt;tr>
&lt;th>类别&lt;/th>
&lt;th>技术&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td class="category-column">编程语言&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Java-007396?style=flat-square&amp;logo=java&amp;logoColor=white" alt="Java">
&lt;img src="https://img.shields.io/badge/-C++-00599C?style=flat-square&amp;logo=cplusplus&amp;logoColor=white" alt="C++">
&lt;img src="https://img.shields.io/badge/-Python-3776AB?style=flat-square&amp;logo=python&amp;logoColor=white" alt="Python">
&lt;img src="https://img.shields.io/badge/-Go-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Go">
&lt;img src="https://img.shields.io/badge/-Rust-000000?style=flat-square&amp;logo=rust&amp;logoColor=white" alt="Rust">
&lt;img src="https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat-square&amp;logo=javascript&amp;logoColor=black" alt="JavaScript">
&lt;img src="https://img.shields.io/badge/-TypeScript-3178C6?style=flat-square&amp;logo=typescript&amp;logoColor=white" alt="TypeScript">
&lt;img src="https://img.shields.io/badge/-Ruby-CC342D?style=flat-square&amp;logo=ruby&amp;logoColor=white" alt="Ruby">
&lt;img src="https://img.shields.io/badge/-PHP-777BB4?style=flat-square&amp;logo=php&amp;logoColor=white" alt="PHP">
&lt;img src="https://img.shields.io/badge/-Kotlin-0095D5?style=flat-square&amp;logo=kotlin&amp;logoColor=white" alt="Kotlin">
&lt;img src="https://img.shields.io/badge/-Swift-FA7343?style=flat-square&amp;logo=swift&amp;logoColor=white" alt="Swift">
&lt;img src="https://img.shields.io/badge/-Scala-DC322F?style=flat-square&amp;logo=scala&amp;logoColor=white" alt="Scala">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">行式数据库&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-MySQL-4479A1?style=flat-square&amp;logo=mysql&amp;logoColor=white" alt="MySQL">
&lt;img src="https://img.shields.io/badge/-Oracle-F80000?style=flat-square&amp;logo=oracle&amp;logoColor=white" alt="Oracle">
&lt;img src="https://img.shields.io/badge/-PostgreSQL-336791?style=flat-square&amp;logo=postgresql&amp;logoColor=white" alt="PostgreSQL">
&lt;img src="https://img.shields.io/badge/-DynamoDB-4053D6?style=flat-square&amp;logo=amazon-dynamodb&amp;logoColor=white" alt="DynamoDB">
&lt;img src="https://img.shields.io/badge/-MariaDB-003545?style=flat-square&amp;logo=mariadb&amp;logoColor=white" alt="MariaDB">
&lt;img src="https://img.shields.io/badge/-SQLite-003B57?style=flat-square&amp;logo=sqlite&amp;logoColor=white" alt="SQLite">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">列式数据库&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-HBase-D22128?style=flat-square&amp;logo=apache&amp;logoColor=white" alt="HBase">
&lt;img src="https://img.shields.io/badge/-ClickHouse-FFCC01?style=flat-square&amp;logo=clickhouse&amp;logoColor=black" alt="ClickHouse">
&lt;img src="https://img.shields.io/badge/-Bigtable-4285F4?style=flat-square&amp;logo=google-cloud&amp;logoColor=white" alt="Bigtable">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">图数据库&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Neo4J-008CC1?style=flat-square&amp;logo=neo4j&amp;logoColor=white" alt="Neo4J">
&lt;img src="https://img.shields.io/badge/-ArangoDB-DDE072?style=flat-square&amp;logo=arangodb&amp;logoColor=black" alt="ArangoDB">
&lt;img src="https://img.shields.io/badge/-JanusGraph-2F4F4F?style=flat-square&amp;logo=apache&amp;logoColor=white" alt="JanusGraph">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">搜索引擎&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-ElasticSearch-005571?style=flat-square&amp;logo=elasticsearch&amp;logoColor=white" alt="ElasticSearch">
&lt;img src="https://img.shields.io/badge/-Solr-D9411E?style=flat-square&amp;logo=apache-solr&amp;logoColor=white" alt="Solr">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">缓存 &amp; NoSQL&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Redis-DC382D?style=flat-square&amp;logo=redis&amp;logoColor=white" alt="Redis">
&lt;img src="https://img.shields.io/badge/-Cassandra-1287B1?style=flat-square&amp;logo=apache-cassandra&amp;logoColor=white" alt="Cassandra">
&lt;img src="https://img.shields.io/badge/-Memcached-005571?style=flat-square&amp;logo=memcached&amp;logoColor=white" alt="Memcached">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">数据湖 &amp; 数据仓库&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Hive-FDEE21?style=flat-square&amp;logo=apache-hive&amp;logoColor=black" alt="Hive">
&lt;img src="https://img.shields.io/badge/-Doris-00BFFF?style=flat-square&amp;logo=apache&amp;logoColor=white" alt="Doris">
&lt;img src="https://img.shields.io/badge/-Starrocks-0078D4?style=flat-square&amp;logo=starrocks&amp;logoColor=white" alt="Starrocks">
&lt;img src="https://img.shields.io/badge/-Druid-29F1FB?style=flat-square&amp;logo=apache-druid&amp;logoColor=black" alt="Druid">
&lt;img src="https://img.shields.io/badge/-Pinot-E95420?style=flat-square&amp;logo=apache&amp;logoColor=white" alt="Pinot">
&lt;img src="https://img.shields.io/badge/-Snowflake-29B5E8?style=flat-square&amp;logo=snowflake&amp;logoColor=white" alt="Snowflake">
&lt;img src="https://img.shields.io/badge/-BigQuery-4285F4?style=flat-square&amp;logo=google-cloud&amp;logoColor=white" alt="BigQuery">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">向量数据库&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Pinecone-000000?style=flat-square&amp;logo=pinecone&amp;logoColor=white" alt="Pinecone">
&lt;img src="https://img.shields.io/badge/-Qdrant-5A29E4?style=flat-square&amp;logo=qdrant&amp;logoColor=white" alt="Qdrant">
&lt;img src="https://img.shields.io/badge/-Weaviate-3F51B5?style=flat-square&amp;logo=weaviate&amp;logoColor=white" alt="Weaviate">
&lt;img src="https://img.shields.io/badge/-Milvus-45B8AC?style=flat-square&amp;logo=milvus&amp;logoColor=white" alt="Milvus">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">消息队列&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-RocketMQ-D77310?style=flat-square&amp;logo=apache-rocketmq&amp;logoColor=white" alt="RocketMQ">
&lt;img src="https://img.shields.io/badge/-Kafka-231F20?style=flat-square&amp;logo=apache-kafka&amp;logoColor=white" alt="Kafka">
&lt;img src="https://img.shields.io/badge/-Pulsar-188FFF?style=flat-square&amp;logo=apache-pulsar&amp;logoColor=white" alt="Pulsar">
&lt;img src="https://img.shields.io/badge/-RabbitMQ-FF6600?style=flat-square&amp;logo=rabbitmq&amp;logoColor=white" alt="RabbitMQ">
&lt;img src="https://img.shields.io/badge/-ActiveMQ-EF2D56?style=flat-square&amp;logo=apache&amp;logoColor=white" alt="ActiveMQ">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">DevOps&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Kubernetes-326CE5?style=flat-square&amp;logo=kubernetes&amp;logoColor=white" alt="Kubernetes">
&lt;img src="https://img.shields.io/badge/-Helm-0F1689?style=flat-square&amp;logo=helm&amp;logoColor=white" alt="Helm">
&lt;img src="https://img.shields.io/badge/-ArgoCD-EF7B4D?style=flat-square&amp;logo=argo&amp;logoColor=white" alt="ArgoCD">
&lt;img src="https://img.shields.io/badge/-Jenkins-D24939?style=flat-square&amp;logo=jenkins&amp;logoColor=white" alt="Jenkins">
&lt;img src="https://img.shields.io/badge/-GitLab-FCA121?style=flat-square&amp;logo=gitlab&amp;logoColor=white" alt="GitLab">
&lt;img src="https://img.shields.io/badge/-GitHub-181717?style=flat-square&amp;logo=github&amp;logoColor=white" alt="GitHub">
&lt;img src="https://img.shields.io/badge/-Terraform-623CE4?style=flat-square&amp;logo=terraform&amp;logoColor=white" alt="Terraform">
&lt;img src="https://img.shields.io/badge/-Ansible-EE0000?style=flat-square&amp;logo=ansible&amp;logoColor=white" alt="Ansible">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">云服务&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-AWS-232F3E?style=flat-square&amp;logo=amazon-aws&amp;logoColor=white" alt="AWS">
&lt;img src="https://img.shields.io/badge/-Route53-8C4FFF?style=flat-square&amp;logo=amazon-aws&amp;logoColor=white" alt="Route53">
&lt;img src="https://img.shields.io/badge/-ALB/ELB-FF9900?style=flat-square&amp;logo=amazon-aws&amp;logoColor=white" alt="ALB/ELB">
&lt;img src="https://img.shields.io/badge/-S3-569A31?style=flat-square&amp;logo=amazon-s3&amp;logoColor=white" alt="S3">
&lt;img src="https://img.shields.io/badge/-EC2-FF9900?style=flat-square&amp;logo=amazon-ec2&amp;logoColor=white" alt="EC2">
&lt;img src="https://img.shields.io/badge/-RDS-527FFF?style=flat-square&amp;logo=amazon-aws&amp;logoColor=white" alt="RDS">
&lt;img src="https://img.shields.io/badge/-SageMaker-FF9900?style=flat-square&amp;logo=amazon-aws&amp;logoColor=white" alt="SageMaker">
&lt;img src="https://img.shields.io/badge/-GCP-4285F4?style=flat-square&amp;logo=google-cloud&amp;logoColor=white" alt="GCP">
&lt;img src="https://img.shields.io/badge/-Azure-0078D4?style=flat-square&amp;logo=microsoft-azure&amp;logoColor=white" alt="Azure">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">Java 框架&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Spring-6DB33F?style=flat-square&amp;logo=spring&amp;logoColor=white" alt="Spring">
&lt;img src="https://img.shields.io/badge/-Spring%20Boot-6DB33F?style=flat-square&amp;logo=spring-boot&amp;logoColor=white" alt="Spring Boot">
&lt;img src="https://img.shields.io/badge/-Spring%20Cloud-6DB33F?style=flat-square&amp;logo=spring&amp;logoColor=white" alt="Spring Cloud">
&lt;img src="https://img.shields.io/badge/-Quarkus-4695EB?style=flat-square&amp;logo=quarkus&amp;logoColor=white" alt="Quarkus">
&lt;img src="https://img.shields.io/badge/-MyBatis-000000?style=flat-square&amp;logo=mybatis&amp;logoColor=white" alt="MyBatis">
&lt;img src="https://img.shields.io/badge/-Netty-2C2D72?style=flat-square&amp;logo=netty&amp;logoColor=white" alt="Netty">
&lt;img src="https://img.shields.io/badge/-Hibernate-59666C?style=flat-square&amp;logo=hibernate&amp;logoColor=white" alt="Hibernate">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">Python 框架&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Celery-37814A?style=flat-square&amp;logo=celery&amp;logoColor=white" alt="Celery">
&lt;img src="https://img.shields.io/badge/-SQLAlchemy-D71F00?style=flat-square&amp;logo=sqlalchemy&amp;logoColor=white" alt="SQLAlchemy">
&lt;img src="https://img.shields.io/badge/-Pydantic-E92063?style=flat-square&amp;logo=pydantic&amp;logoColor=white" alt="Pydantic">
&lt;img src="https://img.shields.io/badge/-NumPy-013243?style=flat-square&amp;logo=numpy&amp;logoColor=white" alt="NumPy">
&lt;img src="https://img.shields.io/badge/-SciPy-8CAAE6?style=flat-square&amp;logo=scipy&amp;logoColor=white" alt="SciPy">
&lt;img src="https://img.shields.io/badge/-Keras-D00000?style=flat-square&amp;logo=keras&amp;logoColor=white" alt="Keras">
&lt;img src="https://img.shields.io/badge/-Flask-F12345?style=flat-square&amp;logo=flask&amp;logoColor=white" alt="Flask">
&lt;img src="https://img.shields.io/badge/-Django-AC1289?style=flat-square&amp;logo=django&amp;logoColor=white" alt="Django">
&lt;img src="https://img.shields.io/badge/-FastAPI-009688?style=flat-square&amp;logo=fastapi&amp;logoColor=white" alt="FastAPI">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">Go 框架&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Gin-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Gin">
&lt;img src="https://img.shields.io/badge/-Kratos-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Kratos">
&lt;img src="https://img.shields.io/badge/-SQLX-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="SQLX">
&lt;img src="https://img.shields.io/badge/-Cobra-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Cobra">
&lt;img src="https://img.shields.io/badge/-Testify-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Testify">
&lt;img src="https://img.shields.io/badge/-Echo-00ADD8?style=flat-square&amp;logo=go&amp;logoColor=white" alt="Echo">
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="category-column">前端框架&lt;/td>
&lt;td class="technologies-column">
&lt;img src="https://img.shields.io/badge/-Next.js-000000?style=flat-square&amp;logo=next.js&amp;logoColor=white" alt="Next.js">
&lt;img src="https://img.shields.io/badge/-React-61DAFB?style=flat-square&amp;logo=react&amp;logoColor=black" alt="React">
&lt;img src="https://img.shields.io/badge/-TailwindCSS-38B2AC?style=flat-square&amp;logo=tailwind-css&amp;logoColor=white" alt="TailwindCSS">
&lt;img src="https://img.shields.io/badge/-HeadlessUI-66E3FF?style=flat-square&amp;logo=headlessui&amp;logoColor=black" alt="HeadlessUI">
&lt;img src="https://img.shields.io/badge/-Lexical-61DAFB?style=flat-square&amp;logo=react&amp;logoColor=black" alt="Lexical">
&lt;img src="https://img.shields.io/badge/-Vue.js-4FC08D?style=flat-square&amp;logo=vue.js&amp;logoColor=white" alt="Vue.js">
&lt;img src="https://img.shields.io/badge/-Angular-DD0031?style=flat-square&amp;logo=angular&amp;logoColor=white" alt="Angular">
&lt;img src="https://img.shields.io/badge/-Svelte-FF3E00?style=flat-square&amp;logo=svelte&amp;logoColor=white" alt="Svelte">
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 class="relative group">👨‍💻 仓库贡献
&lt;div id="-仓库贡献" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e4%bb%93%e5%ba%93%e8%b4%a1%e7%8c%ae" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>项目&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>技术&lt;/th>
&lt;th>Stars&lt;/th>
&lt;th>Forks&lt;/th>
&lt;th>我的贡献&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/langgenius/dify"
target="_blank"
>Dify&lt;/a>&lt;/td>
&lt;td>Dify 是一个开源 LLM 应用开发平台。Dify 的直观界面结合了 AI 工作流、RAG 管道、代理能力、模型管理、可观测性功能等，让你快速从原型到生产。&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Python"
src="https://img.shields.io/badge/-Python-3776AB?style=flat-square&amp;amp;logo=python&amp;amp;logoColor=white"
>&lt;/figure>
&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="JavaScript"
src="https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat-square&amp;amp;logo=javascript&amp;amp;logoColor=black"
>&lt;/figure>
&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="TypeScript"
src="https://img.shields.io/badge/-TypeScript-3178C6?style=flat-square&amp;amp;logo=typescript&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/langgenius/dify?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/langgenius/dify?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/langgenius/dify/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/langgenius/dify-plugin-daemon"
target="_blank"
>Dify-plugin-daemon&lt;/a>&lt;/td>
&lt;td>Dify Plugin Daemon 是一个管理插件生命周期的服务。&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Go"
src="https://img.shields.io/badge/-Go-00ADD8?style=flat-square&amp;amp;logo=go&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/langgenius/dify-plugin-daemon?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/langgenius/dify-plugin-daemon?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/langgenius/dify-plugin-daemon/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/MyCATApache/Mycat-Server"
target="_blank"
>Mycat-Server&lt;/a>&lt;/td>
&lt;td>分片数据库数据的综合解决方案&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/MyCATApache/Mycat-Server?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/MyCATApache/Mycat-Server?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/MyCATApache/Mycat-Server/issues?q=author%3ANeatGuyCoding&amp;#43;"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/moditect/jfrunit"
target="_blank"
>JFR-Unit&lt;/a>&lt;/td>
&lt;td>用于断言 JDK Flight Recorder 事件的 JUnit 扩展&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/moditect/jfrunit?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/moditect/jfrunit?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/moditect/jfrunit/commits/main/?author=NeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/openjdk/jdk"
target="_blank"
>OpenJDK&lt;/a>&lt;/td>
&lt;td>JDK 主线开发 &lt;a
href="https://openjdk.org/projects/jdk"
target="_blank"
>https://openjdk.org/projects/jdk&lt;/a>&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="C&amp;#43;&amp;#43;"
src="https://img.shields.io/badge/-C&amp;#43;&amp;#43;-00599C?style=flat-square&amp;amp;logo=cplusplus&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/openjdk/jdk?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/openjdk/jdk?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/openjdk/jdk/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/apache/bookkeeper"
target="_blank"
>bookkeeper&lt;/a>&lt;/td>
&lt;td>Apache BookKeeper - 一个可扩展、容错且低延迟的存储服务，针对仅追加工作负载进行了优化&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/apache/bookkeeper?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/apache/bookkeeper?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/apache/bookkeeper/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/apache/rocketmq"
target="_blank"
>RocketMQ&lt;/a>&lt;/td>
&lt;td>Apache RocketMQ 是一个云原生消息和流平台，使构建事件驱动应用程序变得简单。&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/apache/rocketmq?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/apache/rocketmq?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/apache/rocketmq/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/spring-cloud/spring-cloud-gateway"
target="_blank"
>Spring Cloud Gateway&lt;/a>&lt;/td>
&lt;td>基于 Spring Framework 和 Spring Boot 构建的 API 网关，提供路由等功能。&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/spring-cloud/spring-cloud-gateway?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/spring-cloud/spring-cloud-gateway?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/spring-cloud/spring-cloud-gateway/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/redis/lettuce"
target="_blank"
>Lettuce&lt;/a>&lt;/td>
&lt;td>用于线程安全同步、异步和响应式使用的高级 Java Redis 客户端。支持集群、哨兵、管道和编解码器。&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/redis/lettuce?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/redis/lettuce?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/redis/lettuce/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/spring-projects/spring-framework"
target="_blank"
>Spring Framework&lt;/a>&lt;/td>
&lt;td>&lt;a
href="https://spring.io/projects/spring-framework"
target="_blank"
>https://spring.io/projects/spring-framework&lt;/a>&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/spring-projects/spring-framework?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/spring-projects/spring-framework?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/spring-projects/spring-framework/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/spring-cloud/spring-cloud-commons"
target="_blank"
>Spring Cloud Commons&lt;/a>&lt;/td>
&lt;td>在不同 Spring Cloud 实现中使用的通用类&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/spring-cloud/spring-cloud-commons?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/spring-cloud/spring-cloud-commons?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/spring-cloud/spring-cloud-commons/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/mrniko/netty-socketio"
target="_blank"
>Netty Socketio&lt;/a>&lt;/td>
&lt;td>在 Java 上实现的 Socket.IO 服务器。实时 Java 框架&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/mrniko/netty-socketio?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/mrniko/netty-socketio?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/mrniko/netty-socketio/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a
href="https://github.com/langchain4j/langchain4j"
target="_blank"
>langchain4j&lt;/a>&lt;/td>
&lt;td>LangChain 的 Java 版本&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Java"
src="https://img.shields.io/badge/-Java-ED8B00?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Stars"
src="https://img.shields.io/github/stars/langchain4j/langchain4j?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;figure>&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="Forks"
src="https://img.shields.io/github/forks/langchain4j/langchain4j?style=flat-square&amp;amp;labelColor=343b41"
>&lt;/figure>
&lt;/td>
&lt;td>&lt;a
href="https://github.com/langchain4j/langchain4j/issues?q=author%3ANeatGuyCoding"
target="_blank"
>我的贡献&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 class="relative group">📊 GitHub 统计
&lt;div id="-github-统计" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-github-%e7%bb%9f%e8%ae%a1" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;div align="center">
&lt;img src="https://github-readme-stats.vercel.app/api/top-langs/?username=NeatGuyCoding&amp;layout=compact&amp;theme=tokyonight&amp;hide_border=true" alt="Top Languages" height="170"/>
&lt;img src="https://github-readme-streak-stats.herokuapp.com/?user=NeatGuyCoding&amp;theme=tokyonight&amp;hide_border=true" alt="GitHub Streak" />
&lt;/div>
&lt;h2 class="relative group">🏆 GitHub 奖杯
&lt;div id="-github-奖杯" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-github-%e5%a5%96%e6%9d%af" aria-label="锚点">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;div align="center">
&lt;img src="https://github-profile-trophy.vercel.app/?username=NeatGuyCoding&amp;theme=nord&amp;column=7&amp;no-frame=true" alt="GitHub Trophies" />
&lt;/div>
&lt;hr>
&lt;div align="center">
&lt;i>编程快乐！&lt;/i> 😊
&lt;/div></description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/about/cover.png"/></item></channel></rss>