<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://blog.denglei.me/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/dotnet10-openapi-versioning/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/dotnet-result-deadlock-threadpool-starvation/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/dotnet-memory-optimization-span-arraypool-gc-loh/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/ai/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-memory-cache-guide/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-httpclientfactory-polly-resilience/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-jwt-policy-authorization/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/aspnet-core/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/best-practice/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/csharp-async-task-valuetask-threadpool-backpressure/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/caching/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/csharp/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/dotnet/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-transactions-savechanges-executionstrategy-outbox/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-write-pipeline-changetracker-sql-batch-optimization/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-raw-sql-fromsql-sqlquery-mapping/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-concurrency-rowversion-optimistic-lock/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-slow-query-tagwith-opentelemetry-execution-plan/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-interceptors-savechanges-command-audit/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/efcore-query-performance-include-projection-tracking/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/ef-core/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/microsoft-agent-framework-kimi-api-console/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/observability/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/performance/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/python/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/redis/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/redis-cache-pattern-delayed-double-delete/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/serilog-opentelemetry-trace-correlation/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/serilog-structured-logging-sink-enricher/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/tags/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-request-pipeline-performance-observability/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/pythonic-thinking-migration-guide/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-efcore-dynamic-pagination/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-efcore-multi-tenant-data-isolation/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url><url>
    <loc>https://blog.denglei.me/posts/aspnet-core-middleware-vs-filter/</loc>
    <lastmod>2026-06-25T23:06:22+08:00</lastmod>
  </url>
</urlset>
