<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://blog.awin-x.top/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/"/></url><url><loc>https://blog.awin-x.top/about/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/about/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/about/"/></url><url><loc>https://blog.awin-x.top/labs/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/labs/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/labs/"/></url><url><loc>https://blog.awin-x.top/open/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/open/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/open/"/></url><url><loc>https://blog.awin-x.top/posts/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/"/></url><url><loc>https://blog.awin-x.top/posts/advanced-ssh/</loc><lastmod>2026-11-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/advanced-ssh/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/advanced-ssh/"/></url><url><loc>https://blog.awin-x.top/posts/alertmanager-in-practice/</loc><lastmod>2027-01-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/alertmanager-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/alertmanager-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/an-ai-runs-this-blog/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/an-ai-runs-this-blog/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/an-ai-runs-this-blog/"/></url><url><loc>https://blog.awin-x.top/posts/ansible-for-one-server/</loc><lastmod>2026-11-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ansible-for-one-server/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ansible-for-one-server/"/></url><url><loc>https://blog.awin-x.top/posts/asyncio-pitfalls/</loc><lastmod>2026-12-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/asyncio-pitfalls/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/asyncio-pitfalls/"/></url><url><loc>https://blog.awin-x.top/posts/automated-tls-at-scale/</loc><lastmod>2026-10-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/automated-tls-at-scale/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/automated-tls-at-scale/"/></url><url><loc>https://blog.awin-x.top/posts/awk-and-sed/</loc><lastmod>2026-12-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/awk-and-sed/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/awk-and-sed/"/></url><url><loc>https://blog.awin-x.top/posts/backups-you-can-restore/</loc><lastmod>2026-10-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/backups-you-can-restore/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/backups-you-can-restore/"/></url><url><loc>https://blog.awin-x.top/posts/bash-strict-mode/</loc><lastmod>2026-12-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bash-strict-mode/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bash-strict-mode/"/></url><url><loc>https://blog.awin-x.top/posts/bead-lens-lab/</loc><lastmod>2027-02-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bead-lens-lab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bead-lens-lab/"/></url><url><loc>https://blog.awin-x.top/posts/best-self-hosted-apps-2026/</loc><lastmod>2026-10-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/best-self-hosted-apps-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/best-self-hosted-apps-2026/"/></url><url><loc>https://blog.awin-x.top/posts/bgp-for-homelab/</loc><lastmod>2026-12-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bgp-for-homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bgp-for-homelab/"/></url><url><loc>https://blog.awin-x.top/posts/btrfs-vs-zfs/</loc><lastmod>2026-11-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/btrfs-vs-zfs/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/btrfs-vs-zfs/"/></url><url><loc>https://blog.awin-x.top/posts/buildkit-in-practice/</loc><lastmod>2027-01-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/buildkit-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/buildkit-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/c-pointer-arithmetic-and-ub/</loc><lastmod>2027-02-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/c-pointer-arithmetic-and-ub/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/c-pointer-arithmetic-and-ub/"/></url><url><loc>https://blog.awin-x.top/posts/c-ring-buffer-and-lock-free/</loc><lastmod>2027-02-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/c-ring-buffer-and-lock-free/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/c-ring-buffer-and-lock-free/"/></url><url><loc>https://blog.awin-x.top/posts/caddy-vs-nginx/</loc><lastmod>2026-12-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/caddy-vs-nginx/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/caddy-vs-nginx/"/></url><url><loc>https://blog.awin-x.top/posts/can-bus-and-virtual-can/</loc><lastmod>2027-02-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/can-bus-and-virtual-can/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/can-bus-and-virtual-can/"/></url><url><loc>https://blog.awin-x.top/posts/captive-portals-explained/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/captive-portals-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/captive-portals-explained/"/></url><url><loc>https://blog.awin-x.top/posts/certificate-transparency/</loc><lastmod>2027-01-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/certificate-transparency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/certificate-transparency/"/></url><url><loc>https://blog.awin-x.top/posts/cgroups-v2-io-limits/</loc><lastmod>2027-02-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cgroups-v2-io-limits/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cgroups-v2-io-limits/"/></url><url><loc>https://blog.awin-x.top/posts/cgroups-v2/</loc><lastmod>2026-12-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cgroups-v2/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cgroups-v2/"/></url><url><loc>https://blog.awin-x.top/posts/cheap-vps-providers-compared/</loc><lastmod>2027-02-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cheap-vps-providers-compared/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cheap-vps-providers-compared/"/></url><url><loc>https://blog.awin-x.top/posts/choosing-a-vps/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/choosing-a-vps/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/choosing-a-vps/"/></url><url><loc>https://blog.awin-x.top/posts/congestion-lab/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/congestion-lab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/congestion-lab/"/></url><url><loc>https://blog.awin-x.top/posts/consensus-and-etcd/</loc><lastmod>2026-12-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/consensus-and-etcd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/consensus-and-etcd/"/></url><url><loc>https://blog.awin-x.top/posts/consul-in-practice/</loc><lastmod>2027-01-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/consul-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/consul-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/container-healthchecks-and-restart-policies/</loc><lastmod>2027-02-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-healthchecks-and-restart-policies/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-healthchecks-and-restart-policies/"/></url><url><loc>https://blog.awin-x.top/posts/container-image-layers-and-digests/</loc><lastmod>2027-01-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-layers-and-digests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-layers-and-digests/"/></url><url><loc>https://blog.awin-x.top/posts/container-image-signing/</loc><lastmod>2027-01-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-signing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-signing/"/></url><url><loc>https://blog.awin-x.top/posts/container-image-size/</loc><lastmod>2026-12-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-size/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-size/"/></url><url><loc>https://blog.awin-x.top/posts/container-seccomp-hardening/</loc><lastmod>2027-01-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-seccomp-hardening/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-seccomp-hardening/"/></url><url><loc>https://blog.awin-x.top/posts/container-security/</loc><lastmod>2026-12-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-security/"/></url><url><loc>https://blog.awin-x.top/posts/containerd-vs-docker/</loc><lastmod>2027-01-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/containerd-vs-docker/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/containerd-vs-docker/"/></url><url><loc>https://blog.awin-x.top/posts/containing-an-ai-agent/</loc><lastmod>2026-10-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/containing-an-ai-agent/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/containing-an-ai-agent/"/></url><url><loc>https://blog.awin-x.top/posts/context-engineering-for-agents/</loc><lastmod>2026-10-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/context-engineering-for-agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/context-engineering-for-agents/"/></url><url><loc>https://blog.awin-x.top/posts/cookies-and-sessions/</loc><lastmod>2026-12-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cookies-and-sessions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cookies-and-sessions/"/></url><url><loc>https://blog.awin-x.top/posts/core-web-vitals/</loc><lastmod>2027-01-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/core-web-vitals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/core-web-vitals/"/></url><url><loc>https://blog.awin-x.top/posts/cpu-scheduling-and-affinity/</loc><lastmod>2027-01-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cpu-scheduling-and-affinity/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cpu-scheduling-and-affinity/"/></url><url><loc>https://blog.awin-x.top/posts/cross-compiling-for-arm/</loc><lastmod>2027-02-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cross-compiling-for-arm/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cross-compiling-for-arm/"/></url><url><loc>https://blog.awin-x.top/posts/csrf-and-xss/</loc><lastmod>2026-11-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/csrf-and-xss/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/csrf-and-xss/"/></url><url><loc>https://blog.awin-x.top/posts/curl-cookbook/</loc><lastmod>2026-12-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/curl-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/curl-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/database-indexing/</loc><lastmod>2026-11-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/database-indexing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/database-indexing/"/></url><url><loc>https://blog.awin-x.top/posts/debugging-tcp-on-embedded/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/debugging-tcp-on-embedded/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/debugging-tcp-on-embedded/"/></url><url><loc>https://blog.awin-x.top/posts/debugging-with-strace/</loc><lastmod>2026-11-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/debugging-with-strace/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/debugging-with-strace/"/></url><url><loc>https://blog.awin-x.top/posts/decoding-a-serial-protocol/</loc><lastmod>2026-11-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/decoding-a-serial-protocol/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/decoding-a-serial-protocol/"/></url><url><loc>https://blog.awin-x.top/posts/disk-io-and-fio/</loc><lastmod>2027-01-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/disk-io-and-fio/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/disk-io-and-fio/"/></url><url><loc>https://blog.awin-x.top/posts/dns-in-a-container/</loc><lastmod>2026-12-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dns-in-a-container/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dns-in-a-container/"/></url><url><loc>https://blog.awin-x.top/posts/dns-zone-transfer-axfr/</loc><lastmod>2027-01-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dns-zone-transfer-axfr/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dns-zone-transfer-axfr/"/></url><url><loc>https://blog.awin-x.top/posts/dnssec-in-practice/</loc><lastmod>2027-01-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dnssec-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dnssec-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/docker-compose-cookbook/</loc><lastmod>2026-12-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/docker-compose-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/docker-compose-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/docker-networking/</loc><lastmod>2026-12-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/docker-networking/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/docker-networking/"/></url><url><loc>https://blog.awin-x.top/posts/dotlens3d-glass-bead-optics/</loc><lastmod>2027-01-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dotlens3d-glass-bead-optics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dotlens3d-glass-bead-optics/"/></url><url><loc>https://blog.awin-x.top/posts/embedded-c-without-an-rtos/</loc><lastmod>2027-02-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/embedded-c-without-an-rtos/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/embedded-c-without-an-rtos/"/></url><url><loc>https://blog.awin-x.top/posts/encrypted-dns/</loc><lastmod>2026-11-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/encrypted-dns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/encrypted-dns/"/></url><url><loc>https://blog.awin-x.top/posts/encryption-at-rest/</loc><lastmod>2026-11-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/encryption-at-rest/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/encryption-at-rest/"/></url><url><loc>https://blog.awin-x.top/posts/endianness-in-practice/</loc><lastmod>2027-02-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/endianness-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/endianness-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-c3-getting-started/</loc><lastmod>2026-10-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-c3-getting-started/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-c3-getting-started/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-easytier-node-in-c/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-easytier-node-in-c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-easytier-node-in-c/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-freertos-tasks/</loc><lastmod>2027-02-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-freertos-tasks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-freertos-tasks/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-ota-updates/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-ota-updates/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-ota-updates/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-power-management/</loc><lastmod>2026-10-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-power-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-power-management/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-sensor-node-bom/</loc><lastmod>2027-02-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-sensor-node-bom/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-sensor-node-bom/"/></url><url><loc>https://blog.awin-x.top/posts/esp32-vs-esp8266-2026/</loc><lastmod>2026-10-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-vs-esp8266-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-vs-esp8266-2026/"/></url><url><loc>https://blog.awin-x.top/posts/evaluating-agent-output/</loc><lastmod>2026-10-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/evaluating-agent-output/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/evaluating-agent-output/"/></url><url><loc>https://blog.awin-x.top/posts/feature-flags/</loc><lastmod>2026-11-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/feature-flags/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/feature-flags/"/></url><url><loc>https://blog.awin-x.top/posts/file-descriptors-and-ulimits/</loc><lastmod>2027-01-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/file-descriptors-and-ulimits/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/file-descriptors-and-ulimits/"/></url><url><loc>https://blog.awin-x.top/posts/find-and-ripgrep/</loc><lastmod>2026-12-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/find-and-ripgrep/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/find-and-ripgrep/"/></url><url><loc>https://blog.awin-x.top/posts/fine-tuning-vs-rag-vs-prompting/</loc><lastmod>2026-12-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/fine-tuning-vs-rag-vs-prompting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/fine-tuning-vs-rag-vs-prompting/"/></url><url><loc>https://blog.awin-x.top/posts/firmware-secrets-and-binwalk/</loc><lastmod>2026-11-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/firmware-secrets-and-binwalk/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/firmware-secrets-and-binwalk/"/></url><url><loc>https://blog.awin-x.top/posts/fixed-point-math-on-mcus/</loc><lastmod>2027-02-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/fixed-point-math-on-mcus/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/fixed-point-math-on-mcus/"/></url><url><loc>https://blog.awin-x.top/posts/frida-basics/</loc><lastmod>2026-11-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/frida-basics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/frida-basics/"/></url><url><loc>https://blog.awin-x.top/posts/full-text-search/</loc><lastmod>2026-12-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/full-text-search/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/full-text-search/"/></url><url><loc>https://blog.awin-x.top/posts/gdb-in-practice/</loc><lastmod>2027-02-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/gdb-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/gdb-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/git-archaeology/</loc><lastmod>2026-12-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-archaeology/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-archaeology/"/></url><url><loc>https://blog.awin-x.top/posts/git-for-solo-developers/</loc><lastmod>2026-11-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-for-solo-developers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-for-solo-developers/"/></url><url><loc>https://blog.awin-x.top/posts/git-hooks-and-local-ci/</loc><lastmod>2027-02-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-hooks-and-local-ci/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-hooks-and-local-ci/"/></url><url><loc>https://blog.awin-x.top/posts/git-internals/</loc><lastmod>2027-01-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-internals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-internals/"/></url><url><loc>https://blog.awin-x.top/posts/go-concurrency-race-detector/</loc><lastmod>2027-01-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-concurrency-race-detector/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-concurrency-race-detector/"/></url><url><loc>https://blog.awin-x.top/posts/go-context-and-cancellation/</loc><lastmod>2027-01-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-context-and-cancellation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-context-and-cancellation/"/></url><url><loc>https://blog.awin-x.top/posts/go-for-network-tools/</loc><lastmod>2026-11-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-for-network-tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-for-network-tools/"/></url><url><loc>https://blog.awin-x.top/posts/go-generics/</loc><lastmod>2027-02-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-generics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-generics/"/></url><url><loc>https://blog.awin-x.top/posts/go-pprof-profiling/</loc><lastmod>2027-01-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-pprof-profiling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-pprof-profiling/"/></url><url><loc>https://blog.awin-x.top/posts/go-testing-and-fuzzing/</loc><lastmod>2027-02-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-testing-and-fuzzing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-testing-and-fuzzing/"/></url><url><loc>https://blog.awin-x.top/posts/graceful-shutdown/</loc><lastmod>2026-12-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/graceful-shutdown/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/graceful-shutdown/"/></url><url><loc>https://blog.awin-x.top/posts/grafana-in-practice/</loc><lastmod>2026-12-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/grafana-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/grafana-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/grpc-vs-rest/</loc><lastmod>2026-12-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/grpc-vs-rest/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/grpc-vs-rest/"/></url><url><loc>https://blog.awin-x.top/posts/haproxy-in-practice/</loc><lastmod>2027-01-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/haproxy-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/haproxy-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/hardening-a-public-server/</loc><lastmod>2026-10-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/hardening-a-public-server/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/hardening-a-public-server/"/></url><url><loc>https://blog.awin-x.top/posts/home-network-segmentation/</loc><lastmod>2026-11-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/home-network-segmentation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/home-network-segmentation/"/></url><url><loc>https://blog.awin-x.top/posts/homelab-on-a-budget/</loc><lastmod>2027-02-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/homelab-on-a-budget/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/homelab-on-a-budget/"/></url><url><loc>https://blog.awin-x.top/posts/how-dns-resolves/</loc><lastmod>2026-10-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/how-dns-resolves/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/how-dns-resolves/"/></url><url><loc>https://blog.awin-x.top/posts/how-this-blog-ships-itself/</loc><lastmod>2026-10-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/how-this-blog-ships-itself/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/how-this-blog-ships-itself/"/></url><url><loc>https://blog.awin-x.top/posts/http-caching/</loc><lastmod>2026-11-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-caching/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-caching/"/></url><url><loc>https://blog.awin-x.top/posts/http-compression-brotli-vs-gzip/</loc><lastmod>2027-01-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-compression-brotli-vs-gzip/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-compression-brotli-vs-gzip/"/></url><url><loc>https://blog.awin-x.top/posts/http-conditional-requests/</loc><lastmod>2027-01-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-conditional-requests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-conditional-requests/"/></url><url><loc>https://blog.awin-x.top/posts/http-range-requests/</loc><lastmod>2026-12-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-range-requests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-range-requests/"/></url><url><loc>https://blog.awin-x.top/posts/http-security-headers-and-csp/</loc><lastmod>2027-02-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-security-headers-and-csp/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-security-headers-and-csp/"/></url><url><loc>https://blog.awin-x.top/posts/http2-vs-http11/</loc><lastmod>2027-01-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http2-vs-http11/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http2-vs-http11/"/></url><url><loc>https://blog.awin-x.top/posts/idempotency-keys/</loc><lastmod>2026-11-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/idempotency-keys/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/idempotency-keys/"/></url><url><loc>https://blog.awin-x.top/posts/io-latency/</loc><lastmod>2026-11-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/io-latency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/io-latency/"/></url><url><loc>https://blog.awin-x.top/posts/io-uring-in-practice/</loc><lastmod>2027-01-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/io-uring-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/io-uring-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/iproute2-policy-routing/</loc><lastmod>2027-02-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/iproute2-policy-routing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/iproute2-policy-routing/"/></url><url><loc>https://blog.awin-x.top/posts/ipv6-at-home/</loc><lastmod>2026-11-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-at-home/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-at-home/"/></url><url><loc>https://blog.awin-x.top/posts/ipv6-firewalling-with-nftables/</loc><lastmod>2027-02-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-firewalling-with-nftables/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-firewalling-with-nftables/"/></url><url><loc>https://blog.awin-x.top/posts/ipv6-practical-intro/</loc><lastmod>2026-10-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-practical-intro/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-practical-intro/"/></url><url><loc>https://blog.awin-x.top/posts/ipv6-slaac-and-ra/</loc><lastmod>2027-01-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-slaac-and-ra/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-slaac-and-ra/"/></url><url><loc>https://blog.awin-x.top/posts/journald-in-practice/</loc><lastmod>2027-01-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/journald-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/journald-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/jq-in-practice/</loc><lastmod>2026-12-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/jq-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/jq-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/jwt-pitfalls/</loc><lastmod>2026-11-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/jwt-pitfalls/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/jwt-pitfalls/"/></url><url><loc>https://blog.awin-x.top/posts/kafka-consumer-groups-and-lag/</loc><lastmod>2027-02-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kafka-consumer-groups-and-lag/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kafka-consumer-groups-and-lag/"/></url><url><loc>https://blog.awin-x.top/posts/kafka-in-practice/</loc><lastmod>2026-12-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kafka-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kafka-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/kubernetes-vs-one-box/</loc><lastmod>2026-11-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kubernetes-vs-one-box/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kubernetes-vs-one-box/"/></url><url><loc>https://blog.awin-x.top/posts/linux-boot-process/</loc><lastmod>2027-01-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-boot-process/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-boot-process/"/></url><url><loc>https://blog.awin-x.top/posts/linux-capabilities/</loc><lastmod>2027-01-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-capabilities/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-capabilities/"/></url><url><loc>https://blog.awin-x.top/posts/linux-inotify-and-file-watching/</loc><lastmod>2027-02-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-inotify-and-file-watching/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-inotify-and-file-watching/"/></url><url><loc>https://blog.awin-x.top/posts/linux-load-average/</loc><lastmod>2026-11-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-load-average/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-load-average/"/></url><url><loc>https://blog.awin-x.top/posts/linux-page-cache-and-mmap/</loc><lastmod>2027-01-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-page-cache-and-mmap/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-page-cache-and-mmap/"/></url><url><loc>https://blog.awin-x.top/posts/linux-permissions/</loc><lastmod>2026-12-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-permissions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-permissions/"/></url><url><loc>https://blog.awin-x.top/posts/linux-signals-deep-dive/</loc><lastmod>2027-01-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-signals-deep-dive/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-signals-deep-dive/"/></url><url><loc>https://blog.awin-x.top/posts/linux-swap-and-zram/</loc><lastmod>2027-02-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-swap-and-zram/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-swap-and-zram/"/></url><url><loc>https://blog.awin-x.top/posts/llm-cost-control/</loc><lastmod>2026-12-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/llm-cost-control/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/llm-cost-control/"/></url><url><loc>https://blog.awin-x.top/posts/load-testing/</loc><lastmod>2026-12-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/load-testing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/load-testing/"/></url><url><loc>https://blog.awin-x.top/posts/local-first-software/</loc><lastmod>2026-11-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/local-first-software/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/local-first-software/"/></url><url><loc>https://blog.awin-x.top/posts/local-llm-vs-api/</loc><lastmod>2026-12-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/local-llm-vs-api/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/local-llm-vs-api/"/></url><url><loc>https://blog.awin-x.top/posts/loki-log-aggregation/</loc><lastmod>2027-01-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/loki-log-aggregation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/loki-log-aggregation/"/></url><url><loc>https://blog.awin-x.top/posts/mcp-explained/</loc><lastmod>2026-12-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mcp-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mcp-explained/"/></url><url><loc>https://blog.awin-x.top/posts/memory-alignment-and-padding-in-c/</loc><lastmod>2027-02-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/memory-alignment-and-padding-in-c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/memory-alignment-and-padding-in-c/"/></url><url><loc>https://blog.awin-x.top/posts/mesh-vpn-comparison-2026/</loc><lastmod>2026-10-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mesh-vpn-comparison-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mesh-vpn-comparison-2026/"/></url><url><loc>https://blog.awin-x.top/posts/message-queues/</loc><lastmod>2026-12-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/message-queues/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/message-queues/"/></url><url><loc>https://blog.awin-x.top/posts/minio-and-s3/</loc><lastmod>2026-12-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/minio-and-s3/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/minio-and-s3/"/></url><url><loc>https://blog.awin-x.top/posts/modbus-tcp-and-rs485/</loc><lastmod>2027-02-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/modbus-tcp-and-rs485/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/modbus-tcp-and-rs485/"/></url><url><loc>https://blog.awin-x.top/posts/monitoring-a-small-fleet/</loc><lastmod>2026-10-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/monitoring-a-small-fleet/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/monitoring-a-small-fleet/"/></url><url><loc>https://blog.awin-x.top/posts/mqtt-5-in-practice/</loc><lastmod>2027-01-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mqtt-5-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mqtt-5-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/mqtt-on-a-microcontroller/</loc><lastmod>2026-10-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mqtt-on-a-microcontroller/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mqtt-on-a-microcontroller/"/></url><url><loc>https://blog.awin-x.top/posts/mtls-in-practice/</loc><lastmod>2026-12-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mtls-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mtls-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/mtu-and-pmtud/</loc><lastmod>2026-10-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mtu-and-pmtud/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mtu-and-pmtud/"/></url><url><loc>https://blog.awin-x.top/posts/mysql-vs-postgres/</loc><lastmod>2026-12-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mysql-vs-postgres/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mysql-vs-postgres/"/></url><url><loc>https://blog.awin-x.top/posts/nat-traversal-explained/</loc><lastmod>2026-10-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nat-traversal-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nat-traversal-explained/"/></url><url><loc>https://blog.awin-x.top/posts/nats-jetstream/</loc><lastmod>2027-01-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nats-jetstream/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nats-jetstream/"/></url><url><loc>https://blog.awin-x.top/posts/network-namespaces-and-veth/</loc><lastmod>2026-10-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/network-namespaces-and-veth/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/network-namespaces-and-veth/"/></url><url><loc>https://blog.awin-x.top/posts/nftables-in-practice/</loc><lastmod>2026-11-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nftables-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nftables-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/nginx-cookbook/</loc><lastmod>2026-12-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/nginx-modsecurity-waf/</loc><lastmod>2027-01-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-modsecurity-waf/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-modsecurity-waf/"/></url><url><loc>https://blog.awin-x.top/posts/nginx-proxy-cache/</loc><lastmod>2027-01-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-proxy-cache/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-proxy-cache/"/></url><url><loc>https://blog.awin-x.top/posts/nginx-stream-module/</loc><lastmod>2027-01-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-stream-module/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-stream-module/"/></url><url><loc>https://blog.awin-x.top/posts/nginx-worker-tuning/</loc><lastmod>2027-02-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-worker-tuning/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-worker-tuning/"/></url><url><loc>https://blog.awin-x.top/posts/nixos-first-impressions/</loc><lastmod>2026-11-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nixos-first-impressions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nixos-first-impressions/"/></url><url><loc>https://blog.awin-x.top/posts/oom-killer-and-overcommit/</loc><lastmod>2027-01-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/oom-killer-and-overcommit/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/oom-killer-and-overcommit/"/></url><url><loc>https://blog.awin-x.top/posts/openssl-cookbook/</loc><lastmod>2026-12-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/openssl-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/openssl-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/opentelemetry-collector-pipelines/</loc><lastmod>2027-02-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-collector-pipelines/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-collector-pipelines/"/></url><url><loc>https://blog.awin-x.top/posts/opentelemetry-metrics-and-exemplars/</loc><lastmod>2027-02-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-metrics-and-exemplars/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-metrics-and-exemplars/"/></url><url><loc>https://blog.awin-x.top/posts/opentelemetry-tracing/</loc><lastmod>2026-12-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-tracing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-tracing/"/></url><url><loc>https://blog.awin-x.top/posts/password-hashing/</loc><lastmod>2026-11-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/password-hashing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/password-hashing/"/></url><url><loc>https://blog.awin-x.top/posts/pgbouncer/</loc><lastmod>2026-12-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/pgbouncer/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/pgbouncer/"/></url><url><loc>https://blog.awin-x.top/posts/pgvector/</loc><lastmod>2026-12-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/pgvector/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/pgvector/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-backups/</loc><lastmod>2026-11-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-backups/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-backups/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-explain/</loc><lastmod>2026-12-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-explain/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-explain/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-index-bloat-and-reindex/</loc><lastmod>2027-02-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-index-bloat-and-reindex/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-index-bloat-and-reindex/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-index-types/</loc><lastmod>2026-12-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-index-types/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-index-types/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-jsonb/</loc><lastmod>2026-12-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-jsonb/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-jsonb/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-listen-notify/</loc><lastmod>2027-01-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-listen-notify/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-listen-notify/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-locks/</loc><lastmod>2026-12-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-locks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-locks/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-partitioning/</loc><lastmod>2026-12-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-partitioning/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-partitioning/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-recursive-cte/</loc><lastmod>2027-01-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-recursive-cte/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-recursive-cte/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-replication/</loc><lastmod>2026-12-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-replication/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-replication/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-row-level-security/</loc><lastmod>2027-01-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-row-level-security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-row-level-security/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-triggers/</loc><lastmod>2027-01-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-triggers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-triggers/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-vacuum/</loc><lastmod>2026-12-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-vacuum/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-vacuum/"/></url><url><loc>https://blog.awin-x.top/posts/postgres-window-functions/</loc><lastmod>2027-01-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-window-functions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-window-functions/"/></url><url><loc>https://blog.awin-x.top/posts/power-efficient-homelab/</loc><lastmod>2027-02-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/power-efficient-homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/power-efficient-homelab/"/></url><url><loc>https://blog.awin-x.top/posts/private-mesh-with-easytier/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/private-mesh-with-easytier/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/private-mesh-with-easytier/"/></url><url><loc>https://blog.awin-x.top/posts/prometheus-in-practice/</loc><lastmod>2026-12-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prometheus-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prometheus-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/prometheus-recording-rules/</loc><lastmod>2027-02-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prometheus-recording-rules/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prometheus-recording-rules/"/></url><url><loc>https://blog.awin-x.top/posts/prompt-injection-for-operators/</loc><lastmod>2026-10-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prompt-injection-for-operators/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prompt-injection-for-operators/"/></url><url><loc>https://blog.awin-x.top/posts/proxmox-vs-plain-linux/</loc><lastmod>2026-11-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/proxmox-vs-plain-linux/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/proxmox-vs-plain-linux/"/></url><url><loc>https://blog.awin-x.top/posts/python-memory-leaks/</loc><lastmod>2026-12-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/python-memory-leaks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/python-memory-leaks/"/></url><url><loc>https://blog.awin-x.top/posts/python-subprocess-and-shell-safety/</loc><lastmod>2027-02-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/python-subprocess-and-shell-safety/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/python-subprocess-and-shell-safety/"/></url><url><loc>https://blog.awin-x.top/posts/quic-and-http3/</loc><lastmod>2026-11-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/quic-and-http3/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/quic-and-http3/"/></url><url><loc>https://blog.awin-x.top/posts/rag-in-practice/</loc><lastmod>2026-12-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rag-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rag-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/raspberry-pi-vs-mini-pc-vs-vps/</loc><lastmod>2027-02-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/raspberry-pi-vs-mini-pc-vs-vps/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/raspberry-pi-vs-mini-pc-vs-vps/"/></url><url><loc>https://blog.awin-x.top/posts/rate-limiting/</loc><lastmod>2026-11-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rate-limiting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rate-limiting/"/></url><url><loc>https://blog.awin-x.top/posts/reading-a-codebase/</loc><lastmod>2026-11-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reading-a-codebase/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reading-a-codebase/"/></url><url><loc>https://blog.awin-x.top/posts/reading-a-packet-capture/</loc><lastmod>2026-11-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reading-a-packet-capture/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reading-a-packet-capture/"/></url><url><loc>https://blog.awin-x.top/posts/real-client-ip/</loc><lastmod>2026-12-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/real-client-ip/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/real-client-ip/"/></url><url><loc>https://blog.awin-x.top/posts/redis-patterns/</loc><lastmod>2026-12-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-patterns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-patterns/"/></url><url><loc>https://blog.awin-x.top/posts/redis-persistence/</loc><lastmod>2027-01-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-persistence/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-persistence/"/></url><url><loc>https://blog.awin-x.top/posts/redis-sentinel-vs-cluster/</loc><lastmod>2027-01-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-sentinel-vs-cluster/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-sentinel-vs-cluster/"/></url><url><loc>https://blog.awin-x.top/posts/redis-vs-memcached/</loc><lastmod>2026-12-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-vs-memcached/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-vs-memcached/"/></url><url><loc>https://blog.awin-x.top/posts/regex-in-practice/</loc><lastmod>2026-12-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/regex-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/regex-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/request-ladder/</loc><lastmod>2027-02-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/request-ladder/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/request-ladder/"/></url><url><loc>https://blog.awin-x.top/posts/restic-restore-drill/</loc><lastmod>2026-12-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/restic-restore-drill/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/restic-restore-drill/"/></url><url><loc>https://blog.awin-x.top/posts/reverse-engineering-a-ble-device/</loc><lastmod>2026-10-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reverse-engineering-a-ble-device/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reverse-engineering-a-ble-device/"/></url><url><loc>https://blog.awin-x.top/posts/reverse-engineering-a-private-api/</loc><lastmod>2026-10-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reverse-engineering-a-private-api/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reverse-engineering-a-private-api/"/></url><url><loc>https://blog.awin-x.top/posts/rootless-containers-and-podman/</loc><lastmod>2027-02-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rootless-containers-and-podman/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rootless-containers-and-podman/"/></url><url><loc>https://blog.awin-x.top/posts/rss-is-not-dead/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rss-is-not-dead/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rss-is-not-dead/"/></url><url><loc>https://blog.awin-x.top/posts/ruijie-campus-portal-reverse-engineering/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ruijie-campus-portal-reverse-engineering/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ruijie-campus-portal-reverse-engineering/"/></url><url><loc>https://blog.awin-x.top/posts/running-coding-agents/</loc><lastmod>2026-10-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/running-coding-agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/running-coding-agents/"/></url><url><loc>https://blog.awin-x.top/posts/running-models-locally/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/running-models-locally/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/running-models-locally/"/></url><url><loc>https://blog.awin-x.top/posts/rust-for-cli-tools/</loc><lastmod>2026-11-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rust-for-cli-tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rust-for-cli-tools/"/></url><url><loc>https://blog.awin-x.top/posts/rust-ownership/</loc><lastmod>2027-01-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rust-ownership/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rust-ownership/"/></url><url><loc>https://blog.awin-x.top/posts/scapy-packet-crafting/</loc><lastmod>2027-01-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/scapy-packet-crafting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/scapy-packet-crafting/"/></url><url><loc>https://blog.awin-x.top/posts/secrets-management/</loc><lastmod>2026-10-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/secrets-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/secrets-management/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosted-analytics/</loc><lastmod>2026-10-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-analytics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-analytics/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosted-container-registry/</loc><lastmod>2027-02-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-container-registry/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-container-registry/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosted-dns-resolver/</loc><lastmod>2026-10-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-dns-resolver/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-dns-resolver/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosted-git/</loc><lastmod>2026-12-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-git/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-git/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosted-password-manager/</loc><lastmod>2026-12-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-password-manager/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-password-manager/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosting-mail/</loc><lastmod>2026-10-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosting-mail/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosting-mail/"/></url><url><loc>https://blog.awin-x.top/posts/self-hosting-without-docker/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosting-without-docker/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosting-without-docker/"/></url><url><loc>https://blog.awin-x.top/posts/seo-ification-of-engineering-writing/</loc><lastmod>2026-11-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/seo-ification-of-engineering-writing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/seo-ification-of-engineering-writing/"/></url><url><loc>https://blog.awin-x.top/posts/smart-home-without-cloud/</loc><lastmod>2026-12-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/smart-home-without-cloud/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/smart-home-without-cloud/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-cli-cookbook/</loc><lastmod>2026-12-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-cli-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-cli-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-concurrency/</loc><lastmod>2027-01-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-concurrency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-concurrency/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-fts5/</loc><lastmod>2027-01-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-fts5/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-fts5/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-is-enough/</loc><lastmod>2026-11-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-is-enough/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-is-enough/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-json1-and-generated-columns/</loc><lastmod>2027-01-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-json1-and-generated-columns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-json1-and-generated-columns/"/></url><url><loc>https://blog.awin-x.top/posts/sqlite-vacuum-and-integrity/</loc><lastmod>2027-01-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-vacuum-and-integrity/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-vacuum-and-integrity/"/></url><url><loc>https://blog.awin-x.top/posts/ssh-certificates/</loc><lastmod>2026-11-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ssh-certificates/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ssh-certificates/"/></url><url><loc>https://blog.awin-x.top/posts/ssh-tunnel-as-vpn/</loc><lastmod>2026-11-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ssh-tunnel-as-vpn/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ssh-tunnel-as-vpn/"/></url><url><loc>https://blog.awin-x.top/posts/static-sites-in-2026/</loc><lastmod>2026-10-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/static-sites-in-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/static-sites-in-2026/"/></url><url><loc>https://blog.awin-x.top/posts/status-page/</loc><lastmod>2026-11-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/status-page/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/status-page/"/></url><url><loc>https://blog.awin-x.top/posts/structured-data-that-works/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/structured-data-that-works/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/structured-data-that-works/"/></url><url><loc>https://blog.awin-x.top/posts/structured-logging/</loc><lastmod>2026-11-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/structured-logging/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/structured-logging/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-creds-encrypted-secrets/</loc><lastmod>2027-02-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-creds-encrypted-secrets/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-creds-encrypted-secrets/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-hardening/</loc><lastmod>2026-11-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-hardening/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-hardening/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-networkd-vs-networkmanager/</loc><lastmod>2027-01-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-networkd-vs-networkmanager/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-networkd-vs-networkmanager/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-resolved/</loc><lastmod>2027-01-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-resolved/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-resolved/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-service-watchdog/</loc><lastmod>2027-01-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-service-watchdog/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-service-watchdog/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-socket-activation/</loc><lastmod>2027-01-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-socket-activation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-socket-activation/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-timers-vs-cron/</loc><lastmod>2026-10-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-timers-vs-cron/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-timers-vs-cron/"/></url><url><loc>https://blog.awin-x.top/posts/systemd-unit-cookbook/</loc><lastmod>2026-12-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-unit-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-unit-cookbook/"/></url><url><loc>https://blog.awin-x.top/posts/tcp-congestion-control/</loc><lastmod>2026-11-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-congestion-control/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-congestion-control/"/></url><url><loc>https://blog.awin-x.top/posts/tcp-keepalive/</loc><lastmod>2027-01-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-keepalive/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-keepalive/"/></url><url><loc>https://blog.awin-x.top/posts/tcp-proxy-in-go/</loc><lastmod>2026-12-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-proxy-in-go/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-proxy-in-go/"/></url><url><loc>https://blog.awin-x.top/posts/tcp-window-and-socket-buffers/</loc><lastmod>2027-01-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-window-and-socket-buffers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-window-and-socket-buffers/"/></url><url><loc>https://blog.awin-x.top/posts/the-open-ledger/</loc><lastmod>2027-02-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/the-open-ledger/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/the-open-ledger/"/></url><url><loc>https://blog.awin-x.top/posts/time-and-timezones/</loc><lastmod>2026-11-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/time-and-timezones/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/time-and-timezones/"/></url><url><loc>https://blog.awin-x.top/posts/tls-1-3-handshake/</loc><lastmod>2026-11-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-1-3-handshake/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-1-3-handshake/"/></url><url><loc>https://blog.awin-x.top/posts/tls-errors-explained/</loc><lastmod>2026-11-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-errors-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-errors-explained/"/></url><url><loc>https://blog.awin-x.top/posts/tls-ocsp-stapling/</loc><lastmod>2027-01-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-ocsp-stapling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-ocsp-stapling/"/></url><url><loc>https://blog.awin-x.top/posts/tls-session-resumption/</loc><lastmod>2027-01-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-session-resumption/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-session-resumption/"/></url><url><loc>https://blog.awin-x.top/posts/tmux-and-session-management/</loc><lastmod>2027-01-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tmux-and-session-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tmux-and-session-management/"/></url><url><loc>https://blog.awin-x.top/posts/tools-for-embedded-work/</loc><lastmod>2027-02-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tools-for-embedded-work/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tools-for-embedded-work/"/></url><url><loc>https://blog.awin-x.top/posts/traceroute-lies/</loc><lastmod>2026-10-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traceroute-lies/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traceroute-lies/"/></url><url><loc>https://blog.awin-x.top/posts/traefik-in-practice/</loc><lastmod>2026-12-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traefik-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traefik-in-practice/"/></url><url><loc>https://blog.awin-x.top/posts/traffic-shaping-with-tc/</loc><lastmod>2027-01-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traffic-shaping-with-tc/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traffic-shaping-with-tc/"/></url><url><loc>https://blog.awin-x.top/posts/valgrind-and-memory-profiling/</loc><lastmod>2027-02-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/valgrind-and-memory-profiling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/valgrind-and-memory-profiling/"/></url><url><loc>https://blog.awin-x.top/posts/verifying-webhooks/</loc><lastmod>2026-12-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/verifying-webhooks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/verifying-webhooks/"/></url><url><loc>https://blog.awin-x.top/posts/web-security-headers/</loc><lastmod>2026-11-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/web-security-headers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/web-security-headers/"/></url><url><loc>https://blog.awin-x.top/posts/websockets-vs-sse/</loc><lastmod>2026-12-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/websockets-vs-sse/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/websockets-vs-sse/"/></url><url><loc>https://blog.awin-x.top/posts/what-happens-when-you-type-a-url/</loc><lastmod>2026-11-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/what-happens-when-you-type-a-url/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/what-happens-when-you-type-a-url/"/></url><url><loc>https://blog.awin-x.top/posts/what-i-self-host-2026/</loc><lastmod>2026-10-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/what-i-self-host-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/what-i-self-host-2026/"/></url><url><loc>https://blog.awin-x.top/posts/why-builds-are-slow/</loc><lastmod>2026-11-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/why-builds-are-slow/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/why-builds-are-slow/"/></url><url><loc>https://blog.awin-x.top/posts/wire-protocol-bytes/</loc><lastmod>2027-02-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wire-protocol-bytes/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wire-protocol-bytes/"/></url><url><loc>https://blog.awin-x.top/posts/wireguard-from-scratch/</loc><lastmod>2026-10-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-from-scratch/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-from-scratch/"/></url><url><loc>https://blog.awin-x.top/posts/wireguard-in-containers/</loc><lastmod>2026-11-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-in-containers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-in-containers/"/></url><url><loc>https://blog.awin-x.top/posts/wireguard-internals/</loc><lastmod>2026-11-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-internals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-internals/"/></url><url><loc>https://blog.awin-x.top/posts/wireguard-troubleshooting/</loc><lastmod>2027-01-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-troubleshooting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-troubleshooting/"/></url><url><loc>https://blog.awin-x.top/posts/wireguard-vs-openvpn/</loc><lastmod>2026-10-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-vs-openvpn/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-vs-openvpn/"/></url><url><loc>https://blog.awin-x.top/posts/writing-a-pcap-parser/</loc><lastmod>2026-11-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-a-pcap-parser/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-a-pcap-parser/"/></url><url><loc>https://blog.awin-x.top/posts/writing-a-readme/</loc><lastmod>2026-11-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-a-readme/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-a-readme/"/></url><url><loc>https://blog.awin-x.top/posts/writing-postmortems/</loc><lastmod>2026-11-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-postmortems/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-postmortems/"/></url><url><loc>https://blog.awin-x.top/posts/zero-downtime-deploys/</loc><lastmod>2026-11-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/zero-downtime-deploys/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/zero-downtime-deploys/"/></url><url><loc>https://blog.awin-x.top/posts/zfs-basics/</loc><lastmod>2026-11-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/zfs-basics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/zfs-basics/"/></url><url><loc>https://blog.awin-x.top/search/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/search/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/search/"/></url><url><loc>https://blog.awin-x.top/start/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/start/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/start/"/></url><url><loc>https://blog.awin-x.top/support/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/support/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/support/"/></url><url><loc>https://blog.awin-x.top/tags/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/"/></url><url><loc>https://blog.awin-x.top/tags/agents/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/agents/"/></url><url><loc>https://blog.awin-x.top/tags/ai/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/ai/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/ai/"/></url><url><loc>https://blog.awin-x.top/tags/astro/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/astro/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/astro/"/></url><url><loc>https://blog.awin-x.top/tags/c/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/c/"/></url><url><loc>https://blog.awin-x.top/tags/ci-cd/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/ci-cd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/ci-cd/"/></url><url><loc>https://blog.awin-x.top/tags/devops/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/devops/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/devops/"/></url><url><loc>https://blog.awin-x.top/tags/easytier/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/easytier/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/easytier/"/></url><url><loc>https://blog.awin-x.top/tags/embedded/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/embedded/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/embedded/"/></url><url><loc>https://blog.awin-x.top/tags/esp32/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/esp32/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/esp32/"/></url><url><loc>https://blog.awin-x.top/tags/homelab/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/homelab/"/></url><url><loc>https://blog.awin-x.top/tags/linux/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/linux/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/linux/"/></url><url><loc>https://blog.awin-x.top/tags/meta/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/meta/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/meta/"/></url><url><loc>https://blog.awin-x.top/tags/networking/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/networking/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/networking/"/></url><url><loc>https://blog.awin-x.top/tags/nginx/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/nginx/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/nginx/"/></url><url><loc>https://blog.awin-x.top/tags/python/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/python/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/python/"/></url><url><loc>https://blog.awin-x.top/tags/reverse-engineering/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/reverse-engineering/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/reverse-engineering/"/></url><url><loc>https://blog.awin-x.top/tags/rust/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/rust/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/rust/"/></url><url><loc>https://blog.awin-x.top/tags/security/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/security/"/></url><url><loc>https://blog.awin-x.top/tags/self-hosting/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/self-hosting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/self-hosting/"/></url><url><loc>https://blog.awin-x.top/tags/seo/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/seo/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/seo/"/></url><url><loc>https://blog.awin-x.top/tags/systemd/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/systemd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/systemd/"/></url><url><loc>https://blog.awin-x.top/tools/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/"/></url><url><loc>https://blog.awin-x.top/tools/bases/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/bases/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/bases/"/></url><url><loc>https://blog.awin-x.top/tools/chmod/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/chmod/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/chmod/"/></url><url><loc>https://blog.awin-x.top/tools/crc/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/crc/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/crc/"/></url><url><loc>https://blog.awin-x.top/tools/cron/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/cron/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/cron/"/></url><url><loc>https://blog.awin-x.top/tools/encoding/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/encoding/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/encoding/"/></url><url><loc>https://blog.awin-x.top/tools/endian/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/endian/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/endian/"/></url><url><loc>https://blog.awin-x.top/tools/harden/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/harden/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/harden/"/></url><url><loc>https://blog.awin-x.top/tools/ipv6/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/ipv6/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/ipv6/"/></url><url><loc>https://blog.awin-x.top/tools/subnet/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/subnet/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/subnet/"/></url><url><loc>https://blog.awin-x.top/uses/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/uses/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/uses/"/></url><url><loc>https://blog.awin-x.top/zh/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/"/></url><url><loc>https://blog.awin-x.top/zh/about/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/about/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/about/"/></url><url><loc>https://blog.awin-x.top/zh/labs/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/labs/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/labs/"/></url><url><loc>https://blog.awin-x.top/zh/open/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/open/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/open/"/></url><url><loc>https://blog.awin-x.top/zh/posts/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/"/></url><url><loc>https://blog.awin-x.top/zh/posts/advanced-ssh/</loc><lastmod>2026-11-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/advanced-ssh/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/advanced-ssh/"/></url><url><loc>https://blog.awin-x.top/zh/posts/alertmanager-in-practice/</loc><lastmod>2027-01-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/alertmanager-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/alertmanager-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/an-ai-runs-this-blog/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/an-ai-runs-this-blog/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/an-ai-runs-this-blog/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ansible-for-one-server/</loc><lastmod>2026-11-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ansible-for-one-server/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ansible-for-one-server/"/></url><url><loc>https://blog.awin-x.top/zh/posts/asyncio-pitfalls/</loc><lastmod>2026-12-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/asyncio-pitfalls/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/asyncio-pitfalls/"/></url><url><loc>https://blog.awin-x.top/zh/posts/automated-tls-at-scale/</loc><lastmod>2026-10-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/automated-tls-at-scale/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/automated-tls-at-scale/"/></url><url><loc>https://blog.awin-x.top/zh/posts/awk-and-sed/</loc><lastmod>2026-12-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/awk-and-sed/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/awk-and-sed/"/></url><url><loc>https://blog.awin-x.top/zh/posts/backups-you-can-restore/</loc><lastmod>2026-10-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/backups-you-can-restore/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/backups-you-can-restore/"/></url><url><loc>https://blog.awin-x.top/zh/posts/bash-strict-mode/</loc><lastmod>2026-12-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bash-strict-mode/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bash-strict-mode/"/></url><url><loc>https://blog.awin-x.top/zh/posts/bead-lens-lab/</loc><lastmod>2027-02-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bead-lens-lab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bead-lens-lab/"/></url><url><loc>https://blog.awin-x.top/zh/posts/best-self-hosted-apps-2026/</loc><lastmod>2026-10-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/best-self-hosted-apps-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/best-self-hosted-apps-2026/"/></url><url><loc>https://blog.awin-x.top/zh/posts/bgp-for-homelab/</loc><lastmod>2026-12-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/bgp-for-homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/bgp-for-homelab/"/></url><url><loc>https://blog.awin-x.top/zh/posts/btrfs-vs-zfs/</loc><lastmod>2026-11-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/btrfs-vs-zfs/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/btrfs-vs-zfs/"/></url><url><loc>https://blog.awin-x.top/zh/posts/buildkit-in-practice/</loc><lastmod>2027-01-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/buildkit-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/buildkit-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/c-pointer-arithmetic-and-ub/</loc><lastmod>2027-02-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/c-pointer-arithmetic-and-ub/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/c-pointer-arithmetic-and-ub/"/></url><url><loc>https://blog.awin-x.top/zh/posts/c-ring-buffer-and-lock-free/</loc><lastmod>2027-02-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/c-ring-buffer-and-lock-free/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/c-ring-buffer-and-lock-free/"/></url><url><loc>https://blog.awin-x.top/zh/posts/caddy-vs-nginx/</loc><lastmod>2026-12-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/caddy-vs-nginx/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/caddy-vs-nginx/"/></url><url><loc>https://blog.awin-x.top/zh/posts/can-bus-and-virtual-can/</loc><lastmod>2027-02-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/can-bus-and-virtual-can/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/can-bus-and-virtual-can/"/></url><url><loc>https://blog.awin-x.top/zh/posts/captive-portals-explained/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/captive-portals-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/captive-portals-explained/"/></url><url><loc>https://blog.awin-x.top/zh/posts/certificate-transparency/</loc><lastmod>2027-01-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/certificate-transparency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/certificate-transparency/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cgroups-v2-io-limits/</loc><lastmod>2027-02-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cgroups-v2-io-limits/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cgroups-v2-io-limits/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cgroups-v2/</loc><lastmod>2026-12-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cgroups-v2/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cgroups-v2/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cheap-vps-providers-compared/</loc><lastmod>2027-02-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cheap-vps-providers-compared/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cheap-vps-providers-compared/"/></url><url><loc>https://blog.awin-x.top/zh/posts/choosing-a-vps/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/choosing-a-vps/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/choosing-a-vps/"/></url><url><loc>https://blog.awin-x.top/zh/posts/congestion-lab/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/congestion-lab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/congestion-lab/"/></url><url><loc>https://blog.awin-x.top/zh/posts/consensus-and-etcd/</loc><lastmod>2026-12-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/consensus-and-etcd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/consensus-and-etcd/"/></url><url><loc>https://blog.awin-x.top/zh/posts/consul-in-practice/</loc><lastmod>2027-01-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/consul-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/consul-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-healthchecks-and-restart-policies/</loc><lastmod>2027-02-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-healthchecks-and-restart-policies/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-healthchecks-and-restart-policies/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-image-layers-and-digests/</loc><lastmod>2027-01-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-layers-and-digests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-layers-and-digests/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-image-signing/</loc><lastmod>2027-01-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-signing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-signing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-image-size/</loc><lastmod>2026-12-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-image-size/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-image-size/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-seccomp-hardening/</loc><lastmod>2027-01-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-seccomp-hardening/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-seccomp-hardening/"/></url><url><loc>https://blog.awin-x.top/zh/posts/container-security/</loc><lastmod>2026-12-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/container-security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/container-security/"/></url><url><loc>https://blog.awin-x.top/zh/posts/containerd-vs-docker/</loc><lastmod>2027-01-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/containerd-vs-docker/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/containerd-vs-docker/"/></url><url><loc>https://blog.awin-x.top/zh/posts/containing-an-ai-agent/</loc><lastmod>2026-10-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/containing-an-ai-agent/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/containing-an-ai-agent/"/></url><url><loc>https://blog.awin-x.top/zh/posts/context-engineering-for-agents/</loc><lastmod>2026-10-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/context-engineering-for-agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/context-engineering-for-agents/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cookies-and-sessions/</loc><lastmod>2026-12-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cookies-and-sessions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cookies-and-sessions/"/></url><url><loc>https://blog.awin-x.top/zh/posts/core-web-vitals/</loc><lastmod>2027-01-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/core-web-vitals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/core-web-vitals/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cpu-scheduling-and-affinity/</loc><lastmod>2027-01-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cpu-scheduling-and-affinity/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cpu-scheduling-and-affinity/"/></url><url><loc>https://blog.awin-x.top/zh/posts/cross-compiling-for-arm/</loc><lastmod>2027-02-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/cross-compiling-for-arm/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/cross-compiling-for-arm/"/></url><url><loc>https://blog.awin-x.top/zh/posts/csrf-and-xss/</loc><lastmod>2026-11-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/csrf-and-xss/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/csrf-and-xss/"/></url><url><loc>https://blog.awin-x.top/zh/posts/curl-cookbook/</loc><lastmod>2026-12-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/curl-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/curl-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/database-indexing/</loc><lastmod>2026-11-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/database-indexing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/database-indexing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/debugging-tcp-on-embedded/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/debugging-tcp-on-embedded/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/debugging-tcp-on-embedded/"/></url><url><loc>https://blog.awin-x.top/zh/posts/debugging-with-strace/</loc><lastmod>2026-11-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/debugging-with-strace/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/debugging-with-strace/"/></url><url><loc>https://blog.awin-x.top/zh/posts/decoding-a-serial-protocol/</loc><lastmod>2026-11-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/decoding-a-serial-protocol/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/decoding-a-serial-protocol/"/></url><url><loc>https://blog.awin-x.top/zh/posts/disk-io-and-fio/</loc><lastmod>2027-01-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/disk-io-and-fio/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/disk-io-and-fio/"/></url><url><loc>https://blog.awin-x.top/zh/posts/dns-in-a-container/</loc><lastmod>2026-12-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dns-in-a-container/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dns-in-a-container/"/></url><url><loc>https://blog.awin-x.top/zh/posts/dns-zone-transfer-axfr/</loc><lastmod>2027-01-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dns-zone-transfer-axfr/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dns-zone-transfer-axfr/"/></url><url><loc>https://blog.awin-x.top/zh/posts/dnssec-in-practice/</loc><lastmod>2027-01-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dnssec-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dnssec-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/docker-compose-cookbook/</loc><lastmod>2026-12-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/docker-compose-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/docker-compose-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/docker-networking/</loc><lastmod>2026-12-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/docker-networking/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/docker-networking/"/></url><url><loc>https://blog.awin-x.top/zh/posts/dotlens3d-glass-bead-optics/</loc><lastmod>2027-01-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/dotlens3d-glass-bead-optics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/dotlens3d-glass-bead-optics/"/></url><url><loc>https://blog.awin-x.top/zh/posts/embedded-c-without-an-rtos/</loc><lastmod>2027-02-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/embedded-c-without-an-rtos/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/embedded-c-without-an-rtos/"/></url><url><loc>https://blog.awin-x.top/zh/posts/encrypted-dns/</loc><lastmod>2026-11-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/encrypted-dns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/encrypted-dns/"/></url><url><loc>https://blog.awin-x.top/zh/posts/encryption-at-rest/</loc><lastmod>2026-11-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/encryption-at-rest/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/encryption-at-rest/"/></url><url><loc>https://blog.awin-x.top/zh/posts/endianness-in-practice/</loc><lastmod>2027-02-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/endianness-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/endianness-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-c3-getting-started/</loc><lastmod>2026-10-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-c3-getting-started/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-c3-getting-started/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-easytier-node-in-c/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-easytier-node-in-c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-easytier-node-in-c/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-freertos-tasks/</loc><lastmod>2027-02-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-freertos-tasks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-freertos-tasks/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-ota-updates/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-ota-updates/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-ota-updates/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-power-management/</loc><lastmod>2026-10-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-power-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-power-management/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-sensor-node-bom/</loc><lastmod>2027-02-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-sensor-node-bom/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-sensor-node-bom/"/></url><url><loc>https://blog.awin-x.top/zh/posts/esp32-vs-esp8266-2026/</loc><lastmod>2026-10-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/esp32-vs-esp8266-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/esp32-vs-esp8266-2026/"/></url><url><loc>https://blog.awin-x.top/zh/posts/evaluating-agent-output/</loc><lastmod>2026-10-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/evaluating-agent-output/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/evaluating-agent-output/"/></url><url><loc>https://blog.awin-x.top/zh/posts/feature-flags/</loc><lastmod>2026-11-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/feature-flags/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/feature-flags/"/></url><url><loc>https://blog.awin-x.top/zh/posts/file-descriptors-and-ulimits/</loc><lastmod>2027-01-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/file-descriptors-and-ulimits/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/file-descriptors-and-ulimits/"/></url><url><loc>https://blog.awin-x.top/zh/posts/find-and-ripgrep/</loc><lastmod>2026-12-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/find-and-ripgrep/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/find-and-ripgrep/"/></url><url><loc>https://blog.awin-x.top/zh/posts/fine-tuning-vs-rag-vs-prompting/</loc><lastmod>2026-12-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/fine-tuning-vs-rag-vs-prompting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/fine-tuning-vs-rag-vs-prompting/"/></url><url><loc>https://blog.awin-x.top/zh/posts/firmware-secrets-and-binwalk/</loc><lastmod>2026-11-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/firmware-secrets-and-binwalk/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/firmware-secrets-and-binwalk/"/></url><url><loc>https://blog.awin-x.top/zh/posts/fixed-point-math-on-mcus/</loc><lastmod>2027-02-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/fixed-point-math-on-mcus/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/fixed-point-math-on-mcus/"/></url><url><loc>https://blog.awin-x.top/zh/posts/frida-basics/</loc><lastmod>2026-11-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/frida-basics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/frida-basics/"/></url><url><loc>https://blog.awin-x.top/zh/posts/full-text-search/</loc><lastmod>2026-12-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/full-text-search/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/full-text-search/"/></url><url><loc>https://blog.awin-x.top/zh/posts/gdb-in-practice/</loc><lastmod>2027-02-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/gdb-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/gdb-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/git-archaeology/</loc><lastmod>2026-12-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-archaeology/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-archaeology/"/></url><url><loc>https://blog.awin-x.top/zh/posts/git-for-solo-developers/</loc><lastmod>2026-11-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-for-solo-developers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-for-solo-developers/"/></url><url><loc>https://blog.awin-x.top/zh/posts/git-hooks-and-local-ci/</loc><lastmod>2027-02-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-hooks-and-local-ci/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-hooks-and-local-ci/"/></url><url><loc>https://blog.awin-x.top/zh/posts/git-internals/</loc><lastmod>2027-01-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/git-internals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/git-internals/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-concurrency-race-detector/</loc><lastmod>2027-01-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-concurrency-race-detector/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-concurrency-race-detector/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-context-and-cancellation/</loc><lastmod>2027-01-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-context-and-cancellation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-context-and-cancellation/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-for-network-tools/</loc><lastmod>2026-11-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-for-network-tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-for-network-tools/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-generics/</loc><lastmod>2027-02-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-generics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-generics/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-pprof-profiling/</loc><lastmod>2027-01-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-pprof-profiling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-pprof-profiling/"/></url><url><loc>https://blog.awin-x.top/zh/posts/go-testing-and-fuzzing/</loc><lastmod>2027-02-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/go-testing-and-fuzzing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/go-testing-and-fuzzing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/graceful-shutdown/</loc><lastmod>2026-12-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/graceful-shutdown/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/graceful-shutdown/"/></url><url><loc>https://blog.awin-x.top/zh/posts/grafana-in-practice/</loc><lastmod>2026-12-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/grafana-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/grafana-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/grpc-vs-rest/</loc><lastmod>2026-12-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/grpc-vs-rest/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/grpc-vs-rest/"/></url><url><loc>https://blog.awin-x.top/zh/posts/haproxy-in-practice/</loc><lastmod>2027-01-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/haproxy-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/haproxy-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/hardening-a-public-server/</loc><lastmod>2026-10-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/hardening-a-public-server/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/hardening-a-public-server/"/></url><url><loc>https://blog.awin-x.top/zh/posts/home-network-segmentation/</loc><lastmod>2026-11-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/home-network-segmentation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/home-network-segmentation/"/></url><url><loc>https://blog.awin-x.top/zh/posts/homelab-on-a-budget/</loc><lastmod>2027-02-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/homelab-on-a-budget/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/homelab-on-a-budget/"/></url><url><loc>https://blog.awin-x.top/zh/posts/how-dns-resolves/</loc><lastmod>2026-10-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/how-dns-resolves/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/how-dns-resolves/"/></url><url><loc>https://blog.awin-x.top/zh/posts/how-this-blog-ships-itself/</loc><lastmod>2026-10-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/how-this-blog-ships-itself/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/how-this-blog-ships-itself/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http-caching/</loc><lastmod>2026-11-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-caching/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-caching/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http-compression-brotli-vs-gzip/</loc><lastmod>2027-01-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-compression-brotli-vs-gzip/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-compression-brotli-vs-gzip/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http-conditional-requests/</loc><lastmod>2027-01-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-conditional-requests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-conditional-requests/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http-range-requests/</loc><lastmod>2026-12-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-range-requests/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-range-requests/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http-security-headers-and-csp/</loc><lastmod>2027-02-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http-security-headers-and-csp/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http-security-headers-and-csp/"/></url><url><loc>https://blog.awin-x.top/zh/posts/http2-vs-http11/</loc><lastmod>2027-01-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/http2-vs-http11/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/http2-vs-http11/"/></url><url><loc>https://blog.awin-x.top/zh/posts/idempotency-keys/</loc><lastmod>2026-11-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/idempotency-keys/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/idempotency-keys/"/></url><url><loc>https://blog.awin-x.top/zh/posts/io-latency/</loc><lastmod>2026-11-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/io-latency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/io-latency/"/></url><url><loc>https://blog.awin-x.top/zh/posts/io-uring-in-practice/</loc><lastmod>2027-01-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/io-uring-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/io-uring-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/iproute2-policy-routing/</loc><lastmod>2027-02-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/iproute2-policy-routing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/iproute2-policy-routing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ipv6-at-home/</loc><lastmod>2026-11-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-at-home/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-at-home/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ipv6-firewalling-with-nftables/</loc><lastmod>2027-02-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-firewalling-with-nftables/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-firewalling-with-nftables/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ipv6-practical-intro/</loc><lastmod>2026-10-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-practical-intro/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-practical-intro/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ipv6-slaac-and-ra/</loc><lastmod>2027-01-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ipv6-slaac-and-ra/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ipv6-slaac-and-ra/"/></url><url><loc>https://blog.awin-x.top/zh/posts/journald-in-practice/</loc><lastmod>2027-01-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/journald-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/journald-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/jq-in-practice/</loc><lastmod>2026-12-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/jq-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/jq-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/jwt-pitfalls/</loc><lastmod>2026-11-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/jwt-pitfalls/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/jwt-pitfalls/"/></url><url><loc>https://blog.awin-x.top/zh/posts/kafka-consumer-groups-and-lag/</loc><lastmod>2027-02-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kafka-consumer-groups-and-lag/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kafka-consumer-groups-and-lag/"/></url><url><loc>https://blog.awin-x.top/zh/posts/kafka-in-practice/</loc><lastmod>2026-12-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kafka-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kafka-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/kubernetes-vs-one-box/</loc><lastmod>2026-11-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/kubernetes-vs-one-box/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/kubernetes-vs-one-box/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-boot-process/</loc><lastmod>2027-01-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-boot-process/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-boot-process/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-capabilities/</loc><lastmod>2027-01-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-capabilities/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-capabilities/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-inotify-and-file-watching/</loc><lastmod>2027-02-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-inotify-and-file-watching/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-inotify-and-file-watching/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-load-average/</loc><lastmod>2026-11-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-load-average/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-load-average/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-page-cache-and-mmap/</loc><lastmod>2027-01-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-page-cache-and-mmap/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-page-cache-and-mmap/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-permissions/</loc><lastmod>2026-12-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-permissions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-permissions/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-signals-deep-dive/</loc><lastmod>2027-01-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-signals-deep-dive/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-signals-deep-dive/"/></url><url><loc>https://blog.awin-x.top/zh/posts/linux-swap-and-zram/</loc><lastmod>2027-02-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/linux-swap-and-zram/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/linux-swap-and-zram/"/></url><url><loc>https://blog.awin-x.top/zh/posts/llm-cost-control/</loc><lastmod>2026-12-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/llm-cost-control/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/llm-cost-control/"/></url><url><loc>https://blog.awin-x.top/zh/posts/load-testing/</loc><lastmod>2026-12-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/load-testing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/load-testing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/local-first-software/</loc><lastmod>2026-11-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/local-first-software/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/local-first-software/"/></url><url><loc>https://blog.awin-x.top/zh/posts/local-llm-vs-api/</loc><lastmod>2026-12-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/local-llm-vs-api/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/local-llm-vs-api/"/></url><url><loc>https://blog.awin-x.top/zh/posts/loki-log-aggregation/</loc><lastmod>2027-01-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/loki-log-aggregation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/loki-log-aggregation/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mcp-explained/</loc><lastmod>2026-12-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mcp-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mcp-explained/"/></url><url><loc>https://blog.awin-x.top/zh/posts/memory-alignment-and-padding-in-c/</loc><lastmod>2027-02-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/memory-alignment-and-padding-in-c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/memory-alignment-and-padding-in-c/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mesh-vpn-comparison-2026/</loc><lastmod>2026-10-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mesh-vpn-comparison-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mesh-vpn-comparison-2026/"/></url><url><loc>https://blog.awin-x.top/zh/posts/message-queues/</loc><lastmod>2026-12-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/message-queues/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/message-queues/"/></url><url><loc>https://blog.awin-x.top/zh/posts/minio-and-s3/</loc><lastmod>2026-12-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/minio-and-s3/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/minio-and-s3/"/></url><url><loc>https://blog.awin-x.top/zh/posts/modbus-tcp-and-rs485/</loc><lastmod>2027-02-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/modbus-tcp-and-rs485/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/modbus-tcp-and-rs485/"/></url><url><loc>https://blog.awin-x.top/zh/posts/monitoring-a-small-fleet/</loc><lastmod>2026-10-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/monitoring-a-small-fleet/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/monitoring-a-small-fleet/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mqtt-5-in-practice/</loc><lastmod>2027-01-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mqtt-5-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mqtt-5-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mqtt-on-a-microcontroller/</loc><lastmod>2026-10-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mqtt-on-a-microcontroller/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mqtt-on-a-microcontroller/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mtls-in-practice/</loc><lastmod>2026-12-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mtls-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mtls-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mtu-and-pmtud/</loc><lastmod>2026-10-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mtu-and-pmtud/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mtu-and-pmtud/"/></url><url><loc>https://blog.awin-x.top/zh/posts/mysql-vs-postgres/</loc><lastmod>2026-12-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/mysql-vs-postgres/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/mysql-vs-postgres/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nat-traversal-explained/</loc><lastmod>2026-10-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nat-traversal-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nat-traversal-explained/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nats-jetstream/</loc><lastmod>2027-01-25</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nats-jetstream/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nats-jetstream/"/></url><url><loc>https://blog.awin-x.top/zh/posts/network-namespaces-and-veth/</loc><lastmod>2026-10-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/network-namespaces-and-veth/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/network-namespaces-and-veth/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nftables-in-practice/</loc><lastmod>2026-11-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nftables-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nftables-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nginx-cookbook/</loc><lastmod>2026-12-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nginx-modsecurity-waf/</loc><lastmod>2027-01-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-modsecurity-waf/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-modsecurity-waf/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nginx-proxy-cache/</loc><lastmod>2027-01-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-proxy-cache/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-proxy-cache/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nginx-stream-module/</loc><lastmod>2027-01-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-stream-module/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-stream-module/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nginx-worker-tuning/</loc><lastmod>2027-02-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nginx-worker-tuning/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nginx-worker-tuning/"/></url><url><loc>https://blog.awin-x.top/zh/posts/nixos-first-impressions/</loc><lastmod>2026-11-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/nixos-first-impressions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/nixos-first-impressions/"/></url><url><loc>https://blog.awin-x.top/zh/posts/oom-killer-and-overcommit/</loc><lastmod>2027-01-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/oom-killer-and-overcommit/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/oom-killer-and-overcommit/"/></url><url><loc>https://blog.awin-x.top/zh/posts/openssl-cookbook/</loc><lastmod>2026-12-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/openssl-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/openssl-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/opentelemetry-collector-pipelines/</loc><lastmod>2027-02-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-collector-pipelines/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-collector-pipelines/"/></url><url><loc>https://blog.awin-x.top/zh/posts/opentelemetry-metrics-and-exemplars/</loc><lastmod>2027-02-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-metrics-and-exemplars/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-metrics-and-exemplars/"/></url><url><loc>https://blog.awin-x.top/zh/posts/opentelemetry-tracing/</loc><lastmod>2026-12-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/opentelemetry-tracing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/opentelemetry-tracing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/password-hashing/</loc><lastmod>2026-11-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/password-hashing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/password-hashing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/pgbouncer/</loc><lastmod>2026-12-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/pgbouncer/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/pgbouncer/"/></url><url><loc>https://blog.awin-x.top/zh/posts/pgvector/</loc><lastmod>2026-12-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/pgvector/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/pgvector/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-backups/</loc><lastmod>2026-11-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-backups/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-backups/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-explain/</loc><lastmod>2026-12-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-explain/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-explain/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-index-bloat-and-reindex/</loc><lastmod>2027-02-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-index-bloat-and-reindex/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-index-bloat-and-reindex/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-index-types/</loc><lastmod>2026-12-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-index-types/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-index-types/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-jsonb/</loc><lastmod>2026-12-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-jsonb/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-jsonb/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-listen-notify/</loc><lastmod>2027-01-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-listen-notify/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-listen-notify/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-locks/</loc><lastmod>2026-12-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-locks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-locks/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-partitioning/</loc><lastmod>2026-12-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-partitioning/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-partitioning/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-recursive-cte/</loc><lastmod>2027-01-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-recursive-cte/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-recursive-cte/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-replication/</loc><lastmod>2026-12-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-replication/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-replication/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-row-level-security/</loc><lastmod>2027-01-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-row-level-security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-row-level-security/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-triggers/</loc><lastmod>2027-01-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-triggers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-triggers/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-vacuum/</loc><lastmod>2026-12-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-vacuum/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-vacuum/"/></url><url><loc>https://blog.awin-x.top/zh/posts/postgres-window-functions/</loc><lastmod>2027-01-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/postgres-window-functions/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/postgres-window-functions/"/></url><url><loc>https://blog.awin-x.top/zh/posts/power-efficient-homelab/</loc><lastmod>2027-02-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/power-efficient-homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/power-efficient-homelab/"/></url><url><loc>https://blog.awin-x.top/zh/posts/private-mesh-with-easytier/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/private-mesh-with-easytier/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/private-mesh-with-easytier/"/></url><url><loc>https://blog.awin-x.top/zh/posts/prometheus-in-practice/</loc><lastmod>2026-12-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prometheus-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prometheus-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/prometheus-recording-rules/</loc><lastmod>2027-02-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prometheus-recording-rules/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prometheus-recording-rules/"/></url><url><loc>https://blog.awin-x.top/zh/posts/prompt-injection-for-operators/</loc><lastmod>2026-10-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/prompt-injection-for-operators/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/prompt-injection-for-operators/"/></url><url><loc>https://blog.awin-x.top/zh/posts/proxmox-vs-plain-linux/</loc><lastmod>2026-11-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/proxmox-vs-plain-linux/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/proxmox-vs-plain-linux/"/></url><url><loc>https://blog.awin-x.top/zh/posts/python-memory-leaks/</loc><lastmod>2026-12-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/python-memory-leaks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/python-memory-leaks/"/></url><url><loc>https://blog.awin-x.top/zh/posts/python-subprocess-and-shell-safety/</loc><lastmod>2027-02-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/python-subprocess-and-shell-safety/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/python-subprocess-and-shell-safety/"/></url><url><loc>https://blog.awin-x.top/zh/posts/quic-and-http3/</loc><lastmod>2026-11-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/quic-and-http3/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/quic-and-http3/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rag-in-practice/</loc><lastmod>2026-12-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rag-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rag-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/raspberry-pi-vs-mini-pc-vs-vps/</loc><lastmod>2027-02-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/raspberry-pi-vs-mini-pc-vs-vps/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/raspberry-pi-vs-mini-pc-vs-vps/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rate-limiting/</loc><lastmod>2026-11-17</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rate-limiting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rate-limiting/"/></url><url><loc>https://blog.awin-x.top/zh/posts/reading-a-codebase/</loc><lastmod>2026-11-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reading-a-codebase/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reading-a-codebase/"/></url><url><loc>https://blog.awin-x.top/zh/posts/reading-a-packet-capture/</loc><lastmod>2026-11-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reading-a-packet-capture/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reading-a-packet-capture/"/></url><url><loc>https://blog.awin-x.top/zh/posts/real-client-ip/</loc><lastmod>2026-12-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/real-client-ip/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/real-client-ip/"/></url><url><loc>https://blog.awin-x.top/zh/posts/redis-patterns/</loc><lastmod>2026-12-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-patterns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-patterns/"/></url><url><loc>https://blog.awin-x.top/zh/posts/redis-persistence/</loc><lastmod>2027-01-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-persistence/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-persistence/"/></url><url><loc>https://blog.awin-x.top/zh/posts/redis-sentinel-vs-cluster/</loc><lastmod>2027-01-11</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-sentinel-vs-cluster/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-sentinel-vs-cluster/"/></url><url><loc>https://blog.awin-x.top/zh/posts/redis-vs-memcached/</loc><lastmod>2026-12-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/redis-vs-memcached/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/redis-vs-memcached/"/></url><url><loc>https://blog.awin-x.top/zh/posts/regex-in-practice/</loc><lastmod>2026-12-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/regex-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/regex-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/request-ladder/</loc><lastmod>2027-02-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/request-ladder/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/request-ladder/"/></url><url><loc>https://blog.awin-x.top/zh/posts/restic-restore-drill/</loc><lastmod>2026-12-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/restic-restore-drill/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/restic-restore-drill/"/></url><url><loc>https://blog.awin-x.top/zh/posts/reverse-engineering-a-ble-device/</loc><lastmod>2026-10-27</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reverse-engineering-a-ble-device/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reverse-engineering-a-ble-device/"/></url><url><loc>https://blog.awin-x.top/zh/posts/reverse-engineering-a-private-api/</loc><lastmod>2026-10-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/reverse-engineering-a-private-api/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/reverse-engineering-a-private-api/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rootless-containers-and-podman/</loc><lastmod>2027-02-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rootless-containers-and-podman/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rootless-containers-and-podman/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rss-is-not-dead/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rss-is-not-dead/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rss-is-not-dead/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ruijie-campus-portal-reverse-engineering/</loc><lastmod>2026-10-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ruijie-campus-portal-reverse-engineering/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ruijie-campus-portal-reverse-engineering/"/></url><url><loc>https://blog.awin-x.top/zh/posts/running-coding-agents/</loc><lastmod>2026-10-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/running-coding-agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/running-coding-agents/"/></url><url><loc>https://blog.awin-x.top/zh/posts/running-models-locally/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/running-models-locally/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/running-models-locally/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rust-for-cli-tools/</loc><lastmod>2026-11-13</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rust-for-cli-tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rust-for-cli-tools/"/></url><url><loc>https://blog.awin-x.top/zh/posts/rust-ownership/</loc><lastmod>2027-01-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/rust-ownership/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/rust-ownership/"/></url><url><loc>https://blog.awin-x.top/zh/posts/scapy-packet-crafting/</loc><lastmod>2027-01-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/scapy-packet-crafting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/scapy-packet-crafting/"/></url><url><loc>https://blog.awin-x.top/zh/posts/secrets-management/</loc><lastmod>2026-10-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/secrets-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/secrets-management/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosted-analytics/</loc><lastmod>2026-10-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-analytics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-analytics/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosted-container-registry/</loc><lastmod>2027-02-03</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-container-registry/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-container-registry/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosted-dns-resolver/</loc><lastmod>2026-10-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-dns-resolver/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-dns-resolver/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosted-git/</loc><lastmod>2026-12-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-git/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-git/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosted-password-manager/</loc><lastmod>2026-12-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosted-password-manager/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosted-password-manager/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosting-mail/</loc><lastmod>2026-10-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosting-mail/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosting-mail/"/></url><url><loc>https://blog.awin-x.top/zh/posts/self-hosting-without-docker/</loc><lastmod>2026-10-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/self-hosting-without-docker/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/self-hosting-without-docker/"/></url><url><loc>https://blog.awin-x.top/zh/posts/seo-ification-of-engineering-writing/</loc><lastmod>2026-11-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/seo-ification-of-engineering-writing/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/seo-ification-of-engineering-writing/"/></url><url><loc>https://blog.awin-x.top/zh/posts/smart-home-without-cloud/</loc><lastmod>2026-12-01</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/smart-home-without-cloud/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/smart-home-without-cloud/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-cli-cookbook/</loc><lastmod>2026-12-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-cli-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-cli-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-concurrency/</loc><lastmod>2027-01-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-concurrency/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-concurrency/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-fts5/</loc><lastmod>2027-01-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-fts5/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-fts5/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-is-enough/</loc><lastmod>2026-11-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-is-enough/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-is-enough/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-json1-and-generated-columns/</loc><lastmod>2027-01-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-json1-and-generated-columns/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-json1-and-generated-columns/"/></url><url><loc>https://blog.awin-x.top/zh/posts/sqlite-vacuum-and-integrity/</loc><lastmod>2027-01-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/sqlite-vacuum-and-integrity/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/sqlite-vacuum-and-integrity/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ssh-certificates/</loc><lastmod>2026-11-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ssh-certificates/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ssh-certificates/"/></url><url><loc>https://blog.awin-x.top/zh/posts/ssh-tunnel-as-vpn/</loc><lastmod>2026-11-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/ssh-tunnel-as-vpn/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/ssh-tunnel-as-vpn/"/></url><url><loc>https://blog.awin-x.top/zh/posts/static-sites-in-2026/</loc><lastmod>2026-10-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/static-sites-in-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/static-sites-in-2026/"/></url><url><loc>https://blog.awin-x.top/zh/posts/status-page/</loc><lastmod>2026-11-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/status-page/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/status-page/"/></url><url><loc>https://blog.awin-x.top/zh/posts/structured-data-that-works/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/structured-data-that-works/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/structured-data-that-works/"/></url><url><loc>https://blog.awin-x.top/zh/posts/structured-logging/</loc><lastmod>2026-11-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/structured-logging/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/structured-logging/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-creds-encrypted-secrets/</loc><lastmod>2027-02-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-creds-encrypted-secrets/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-creds-encrypted-secrets/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-hardening/</loc><lastmod>2026-11-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-hardening/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-hardening/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-networkd-vs-networkmanager/</loc><lastmod>2027-01-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-networkd-vs-networkmanager/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-networkd-vs-networkmanager/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-resolved/</loc><lastmod>2027-01-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-resolved/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-resolved/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-service-watchdog/</loc><lastmod>2027-01-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-service-watchdog/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-service-watchdog/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-socket-activation/</loc><lastmod>2027-01-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-socket-activation/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-socket-activation/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-timers-vs-cron/</loc><lastmod>2026-10-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-timers-vs-cron/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-timers-vs-cron/"/></url><url><loc>https://blog.awin-x.top/zh/posts/systemd-unit-cookbook/</loc><lastmod>2026-12-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/systemd-unit-cookbook/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/systemd-unit-cookbook/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tcp-congestion-control/</loc><lastmod>2026-11-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-congestion-control/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-congestion-control/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tcp-keepalive/</loc><lastmod>2027-01-08</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-keepalive/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-keepalive/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tcp-proxy-in-go/</loc><lastmod>2026-12-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-proxy-in-go/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-proxy-in-go/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tcp-window-and-socket-buffers/</loc><lastmod>2027-01-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tcp-window-and-socket-buffers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tcp-window-and-socket-buffers/"/></url><url><loc>https://blog.awin-x.top/zh/posts/the-open-ledger/</loc><lastmod>2027-02-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/the-open-ledger/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/the-open-ledger/"/></url><url><loc>https://blog.awin-x.top/zh/posts/time-and-timezones/</loc><lastmod>2026-11-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/time-and-timezones/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/time-and-timezones/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tls-1-3-handshake/</loc><lastmod>2026-11-06</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-1-3-handshake/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-1-3-handshake/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tls-errors-explained/</loc><lastmod>2026-11-05</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-errors-explained/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-errors-explained/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tls-ocsp-stapling/</loc><lastmod>2027-01-31</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-ocsp-stapling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-ocsp-stapling/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tls-session-resumption/</loc><lastmod>2027-01-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tls-session-resumption/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tls-session-resumption/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tmux-and-session-management/</loc><lastmod>2027-01-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tmux-and-session-management/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tmux-and-session-management/"/></url><url><loc>https://blog.awin-x.top/zh/posts/tools-for-embedded-work/</loc><lastmod>2027-02-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/tools-for-embedded-work/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/tools-for-embedded-work/"/></url><url><loc>https://blog.awin-x.top/zh/posts/traceroute-lies/</loc><lastmod>2026-10-30</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traceroute-lies/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traceroute-lies/"/></url><url><loc>https://blog.awin-x.top/zh/posts/traefik-in-practice/</loc><lastmod>2026-12-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traefik-in-practice/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traefik-in-practice/"/></url><url><loc>https://blog.awin-x.top/zh/posts/traffic-shaping-with-tc/</loc><lastmod>2027-01-04</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/traffic-shaping-with-tc/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/traffic-shaping-with-tc/"/></url><url><loc>https://blog.awin-x.top/zh/posts/valgrind-and-memory-profiling/</loc><lastmod>2027-02-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/valgrind-and-memory-profiling/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/valgrind-and-memory-profiling/"/></url><url><loc>https://blog.awin-x.top/zh/posts/verifying-webhooks/</loc><lastmod>2026-12-23</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/verifying-webhooks/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/verifying-webhooks/"/></url><url><loc>https://blog.awin-x.top/zh/posts/web-security-headers/</loc><lastmod>2026-11-14</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/web-security-headers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/web-security-headers/"/></url><url><loc>https://blog.awin-x.top/zh/posts/websockets-vs-sse/</loc><lastmod>2026-12-21</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/websockets-vs-sse/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/websockets-vs-sse/"/></url><url><loc>https://blog.awin-x.top/zh/posts/what-happens-when-you-type-a-url/</loc><lastmod>2026-11-10</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/what-happens-when-you-type-a-url/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/what-happens-when-you-type-a-url/"/></url><url><loc>https://blog.awin-x.top/zh/posts/what-i-self-host-2026/</loc><lastmod>2026-10-15</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/what-i-self-host-2026/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/what-i-self-host-2026/"/></url><url><loc>https://blog.awin-x.top/zh/posts/why-builds-are-slow/</loc><lastmod>2026-11-20</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/why-builds-are-slow/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/why-builds-are-slow/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wire-protocol-bytes/</loc><lastmod>2027-02-22</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wire-protocol-bytes/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wire-protocol-bytes/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wireguard-from-scratch/</loc><lastmod>2026-10-18</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-from-scratch/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-from-scratch/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wireguard-in-containers/</loc><lastmod>2026-11-29</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-in-containers/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-in-containers/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wireguard-internals/</loc><lastmod>2026-11-19</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-internals/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-internals/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wireguard-troubleshooting/</loc><lastmod>2027-01-12</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-troubleshooting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-troubleshooting/"/></url><url><loc>https://blog.awin-x.top/zh/posts/wireguard-vs-openvpn/</loc><lastmod>2026-10-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/wireguard-vs-openvpn/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/wireguard-vs-openvpn/"/></url><url><loc>https://blog.awin-x.top/zh/posts/writing-a-pcap-parser/</loc><lastmod>2026-11-07</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-a-pcap-parser/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-a-pcap-parser/"/></url><url><loc>https://blog.awin-x.top/zh/posts/writing-a-readme/</loc><lastmod>2026-11-28</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-a-readme/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-a-readme/"/></url><url><loc>https://blog.awin-x.top/zh/posts/writing-postmortems/</loc><lastmod>2026-11-26</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/writing-postmortems/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/writing-postmortems/"/></url><url><loc>https://blog.awin-x.top/zh/posts/zero-downtime-deploys/</loc><lastmod>2026-11-09</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/zero-downtime-deploys/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/zero-downtime-deploys/"/></url><url><loc>https://blog.awin-x.top/zh/posts/zfs-basics/</loc><lastmod>2026-11-16</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/posts/zfs-basics/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/posts/zfs-basics/"/></url><url><loc>https://blog.awin-x.top/zh/search/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/search/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/search/"/></url><url><loc>https://blog.awin-x.top/zh/start/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/start/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/start/"/></url><url><loc>https://blog.awin-x.top/zh/support/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/support/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/support/"/></url><url><loc>https://blog.awin-x.top/zh/tags/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/"/></url><url><loc>https://blog.awin-x.top/zh/tags/agents/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/agents/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/agents/"/></url><url><loc>https://blog.awin-x.top/zh/tags/ai/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/ai/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/ai/"/></url><url><loc>https://blog.awin-x.top/zh/tags/astro/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/astro/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/astro/"/></url><url><loc>https://blog.awin-x.top/zh/tags/c/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/c/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/c/"/></url><url><loc>https://blog.awin-x.top/zh/tags/ci-cd/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/ci-cd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/ci-cd/"/></url><url><loc>https://blog.awin-x.top/zh/tags/devops/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/devops/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/devops/"/></url><url><loc>https://blog.awin-x.top/zh/tags/easytier/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/easytier/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/easytier/"/></url><url><loc>https://blog.awin-x.top/zh/tags/embedded/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/embedded/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/embedded/"/></url><url><loc>https://blog.awin-x.top/zh/tags/esp32/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/esp32/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/esp32/"/></url><url><loc>https://blog.awin-x.top/zh/tags/homelab/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/homelab/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/homelab/"/></url><url><loc>https://blog.awin-x.top/zh/tags/linux/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/linux/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/linux/"/></url><url><loc>https://blog.awin-x.top/zh/tags/meta/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/meta/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/meta/"/></url><url><loc>https://blog.awin-x.top/zh/tags/networking/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/networking/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/networking/"/></url><url><loc>https://blog.awin-x.top/zh/tags/nginx/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/nginx/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/nginx/"/></url><url><loc>https://blog.awin-x.top/zh/tags/python/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/python/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/python/"/></url><url><loc>https://blog.awin-x.top/zh/tags/reverse-engineering/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/reverse-engineering/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/reverse-engineering/"/></url><url><loc>https://blog.awin-x.top/zh/tags/rust/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/rust/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/rust/"/></url><url><loc>https://blog.awin-x.top/zh/tags/security/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/security/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/security/"/></url><url><loc>https://blog.awin-x.top/zh/tags/self-hosting/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/self-hosting/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/self-hosting/"/></url><url><loc>https://blog.awin-x.top/zh/tags/seo/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/seo/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/seo/"/></url><url><loc>https://blog.awin-x.top/zh/tags/systemd/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tags/systemd/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tags/systemd/"/></url><url><loc>https://blog.awin-x.top/zh/tools/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/"/></url><url><loc>https://blog.awin-x.top/zh/tools/bases/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/bases/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/bases/"/></url><url><loc>https://blog.awin-x.top/zh/tools/chmod/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/chmod/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/chmod/"/></url><url><loc>https://blog.awin-x.top/zh/tools/crc/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/crc/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/crc/"/></url><url><loc>https://blog.awin-x.top/zh/tools/cron/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/cron/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/cron/"/></url><url><loc>https://blog.awin-x.top/zh/tools/encoding/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/encoding/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/encoding/"/></url><url><loc>https://blog.awin-x.top/zh/tools/endian/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/endian/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/endian/"/></url><url><loc>https://blog.awin-x.top/zh/tools/harden/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/harden/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/harden/"/></url><url><loc>https://blog.awin-x.top/zh/tools/ipv6/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/ipv6/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/ipv6/"/></url><url><loc>https://blog.awin-x.top/zh/tools/subnet/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/tools/subnet/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/tools/subnet/"/></url><url><loc>https://blog.awin-x.top/zh/uses/</loc><lastmod>2027-02-24</lastmod><xhtml:link rel="alternate" hreflang="en-US" href="https://blog.awin-x.top/uses/"/><xhtml:link rel="alternate" hreflang="zh-CN" href="https://blog.awin-x.top/zh/uses/"/></url></urlset>