<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://tuanhnet.hashnode.dev</loc>
    <lastmod>2026-11-12T10:11:10.352Z</lastmod>
    <changefreq>always</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-ttl-alone-is-a-weak-cache-strategy-for-frequently-updated-business-data</loc>
    <lastmod>2026-05-11T09:00:13.809Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/techniques-how-to-design-versioned-commands-so-retries-stay-safe-under-concurrent-modification</loc>
    <lastmod>2026-05-08T09:00:18.632Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/techniques-to-partition-data-for-growth-without-breaking-query-simplicity</loc>
    <lastmod>2026-05-06T09:00:37.401Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-move-cross-cutting-logic-out-of-controllers-without-building-a-mystery-box</loc>
    <lastmod>2026-05-05T09:00:18.583Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-java-services-get-slower-after-a-few-hours-how-to-find-thread-pool-saturation</loc>
    <lastmod>2026-05-04T09:00:50.738Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-analytics-events-pollute-core-transactions-when-teams-mix-business-and-telemetry-pipelines</loc>
    <lastmod>2026-05-03T09:00:53.448Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/ways-to-invalidate-derived-caches-without-creating-a-distributed-guessing-game</loc>
    <lastmod>2026-05-02T09:00:34.151Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/ways-to-roll-back-a-bad-release-when-database-state-has-already-crossed-the-line</loc>
    <lastmod>2026-05-01T09:00:57.372Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-tune-jvm-container-awareness-for-real-kubernetes-resource-constraints</loc>
    <lastmod>2026-04-25T09:00:49.952Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-handle-time-drift-issues-in-distributed-systems</loc>
    <lastmod>2026-04-24T09:00:20.425Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/techniques-to-make-database-integration-tests-fast-enough-for-developers-to-actually-run-them</loc>
    <lastmod>2026-04-23T09:00:37.367Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-prevent-duplicate-cron-execution-across-multiple-spring-boot-instances</loc>
    <lastmod>2026-04-21T09:00:13.064Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-handle-zombie-requests-after-the-user-already-closed-the-browser</loc>
    <lastmod>2026-04-18T09:00:39.283Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/ways-to-handle-schema-evolution-safely-in-production-systems</loc>
    <lastmod>2026-04-17T09:00:28.038Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-thread-pool-misconfiguration-creates-fake-throughput-in-java-backends</loc>
    <lastmod>2026-04-16T09:00:36.361Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-circuit-breakers-fail-in-real-systems-when-timeouts-retries-and-bulkheads-fight-each-other</loc>
    <lastmod>2026-04-08T09:00:29.499Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-your-unique-constraint-is-not-a-complete-concurrency-strategy</loc>
    <lastmod>2026-04-05T09:00:35.406Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/when-not-in-becomes-slow-and-why-not-exists-is-often-the-better-sql-rewrite</loc>
    <lastmod>2026-03-26T09:00:29.610Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/when-to-use-partitioning</loc>
    <lastmod>2026-03-25T09:00:14.767Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-design-massive-log-tables-10100gbday-best-practices-that-actually-scale</loc>
    <lastmod>2026-03-24T09:00:50.477Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-know-exactly-when-to-use-strategy-factory-and-builder-in-java</loc>
    <lastmod>2026-03-23T09:00:49.689Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/techniques-for-writing-thread-safe-code-without-using-synchronized-locks</loc>
    <lastmod>2026-03-22T09:00:27.263Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/understanding-what-a-covering-index-really-is</loc>
    <lastmod>2026-03-21T09:00:23.488Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-uuid-as-a-primary-key-is-often-slow-in-real-databases</loc>
    <lastmod>2026-03-20T09:00:35.324Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-stored-procedures-can-help-and-hurt-in-microservices-architecture</loc>
    <lastmod>2026-03-19T09:00:16.073Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/database-triggers-can-hurt-performance-and-when-theyre-actually-worth-it</loc>
    <lastmod>2026-03-18T09:00:52.195Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/when-database-deadlocks-happen-and-how-i-recognize-them-fast</loc>
    <lastmod>2026-03-17T09:00:18.547Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-use-text-indexes-with-subdocuments-in-mongodb-and-spring-boot-without-missing-matches</loc>
    <lastmod>2026-03-16T09:00:52.294Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/techniques-to-debug-memory-leaks-in-spring-boot-scheduled-apps-on-docker-without-guessing</loc>
    <lastmod>2026-03-14T09:00:45.116Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/spring-boot-starters-vs-maven-archetypes-simplify-project-setup-and-when-each-one-wins</loc>
    <lastmod>2026-03-13T09:00:34.589Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/methods-to-integrate-a-spring-boot-backend-with-an-angular-frontend-in-one-unified-deployment</loc>
    <lastmod>2026-03-12T09:00:43.186Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-to-decrypt-outlook-365-smime-emails-in-java-using-microsoft-graph-api</loc>
    <lastmod>2026-03-10T09:00:40.213Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-to-add-custom-properties-to-a-spring-boot-app-during-initialization-without-losing-your-mind</loc>
    <lastmod>2026-03-09T09:00:31.589Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-do-you-implement-multi-factor-authentication-mfa-in-spring-security-without-getting-stuck-in-redirect-loops-broken-sessions-and-invalid-code-nightmares</loc>
    <lastmod>2026-03-08T09:00:21.209Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/strategies-how-to-migrate-legacy-java-systems-to-spring-and-get-transactions-right</loc>
    <lastmod>2026-03-07T09:00:56.851Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/design-a-video-upload-system-that-handles-1tb-per-day-without-melting-your-backend</loc>
    <lastmod>2026-02-26T09:00:45.355Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-does-consistent-hashing-actually-work-and-why-does-it-save-your-cluster-from-rehashing-hell</loc>
    <lastmod>2026-02-25T09:00:32.016Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/event-sourcing-fits-when-should-you-use-it-and-when-you-shouldnt</loc>
    <lastmod>2026-02-22T09:00:49.097Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/design-an-elasticsearch-style-search-engine-how-does-it-actually-work</loc>
    <lastmod>2026-02-21T09:00:59.534Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-to-build-a-3-tier-caching-stack-with-cdn-redis-local-cache-without-lying-to-users</loc>
    <lastmod>2026-02-20T09:00:27.415Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/ways-to-design-a-real-time-chat-system-that-can-hold-1000000-concurrent-connections</loc>
    <lastmod>2026-02-18T09:01:00.146Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/token-bucket-or-leaky-bucket-rate-limiter-is-the-difference-between-scales-and-falls-over</loc>
    <lastmod>2026-02-17T09:00:24.882Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/when-should-you-use-normalization-vs-denormalization-in-real-systems</loc>
    <lastmod>2026-02-16T09:00:15.129Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/how-to-optimize-slow-queries-the-index-first-way-without-guessing</loc>
    <lastmod>2026-02-15T09:00:52.664Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-too-many-indexes-make-writes-slower-and-how-to-fix-it</loc>
    <lastmod>2026-02-14T09:00:19.610Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/clustered-index-vs-non-clustered-index-whats-really-different-and-why-it-changes-query-speed</loc>
    <lastmod>2026-02-13T09:00:41.784Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/reasons-order-by-limit-can-be-shockingly-slow-and-how-to-fix-it</loc>
    <lastmod>2026-02-12T09:00:12.843Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/series-of-backend-developer-interview-questions-part-10</loc>
    <lastmod>2026-02-11T09:00:30.949Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/series-of-backend-developer-interview-questions-part-8</loc>
    <lastmod>2026-02-09T09:00:56.224Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/series-of-backend-developer-interview-questions-part-7</loc>
    <lastmod>2026-02-08T09:00:51.409Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tuanhnet.hashnode.dev/archive</loc>
    <lastmod>2026-11-12T10:11:10.352Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>