<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技术文章 on 蒋大培的博客</title><link>https://ygwa.github.io/writings/</link><description>Recent content in 技术文章 on 蒋大培的博客</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 01 Dec 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://ygwa.github.io/writings/index.xml" rel="self" type="application/rss+xml"/><item><title>告别 Git 身份混乱，一个命令搞定多身份管理</title><link>https://ygwa.github.io/writings/gid-git-identity-manager/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0800</pubDate><guid>https://ygwa.github.io/writings/gid-git-identity-manager/</guid><description>&lt;p&gt;在日常开发中，我经常需要在工作项目和个人项目之间切换。每次切换项目时，都需要手动修改 Git 的用户名和邮箱配置，不仅繁琐，还容易出错。更糟糕的是，一旦忘记切换，错误的身份信息就会被永久记录在 Git 历史中，后续清理起来也很麻烦。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，我开发了 &lt;code&gt;gid&lt;/code&gt; (Git Identity Manager)，一个用 Rust 编写的命令行工具，用于管理多个 Git 身份。本文将介绍这个工具的使用方法，以及在实际使用中遇到的问题和思考。&lt;/p&gt;</description></item><item><title>SQL预编译技术与性能优化</title><link>https://ygwa.github.io/writings/performance-in-prepared-sql/</link><pubDate>Fri, 13 Dec 2024 09:46:34 +0000</pubDate><guid>https://ygwa.github.io/writings/performance-in-prepared-sql/</guid><description>&lt;p&gt;众所周知，预编译技术对于 SQL 查询具有显著的性能提升作用。具体而言，在执行 SQL 操作时，利用预编译技术可以省略编译步骤，仅需传递特定参数即可借助已准备好的执行计划快速完成查询，从而极大地提升了后端系统的查询效率。&lt;/p&gt;
&lt;p&gt;然而，预编译技术并非总是适用且无懈可击的。在实际应用中，可能会遇到一些问题和挑战。例如，在某个场景下，当系统需要处理超过1亿条记录的数据量时，即使采用了预编译技术，查询速度仍然会变得缓慢甚至导致超时现象的发生。尽管从接口层面进行了充分的优化，并建立了相应的索引以加速查询过程，但在实际运行环境中，由于数据规模的巨大差异，这些措施可能无法完全解决问题。&lt;/p&gt;</description></item><item><title>Git历史信息修正</title><link>https://ygwa.github.io/writings/git-history-update-by-filter-repo/</link><pubDate>Tue, 10 Dec 2024 18:16:58 +0800</pubDate><guid>https://ygwa.github.io/writings/git-history-update-by-filter-repo/</guid><description>&lt;p&gt;在日常的项目开发过程中，多人协作时难免会有开发同学因误操作，将敏感信息（如密钥、数据库密码等）提交到 Git 仓库中。如果还未推送到远端，通常可以使用 &lt;code&gt;git reset --soft&lt;/code&gt; 重新提交。但一旦推送到远端仓库，仅删除或修改文件已无法彻底擦除这些敏感信息。因为Git作为版本控制工具，会在历史纪录中保留所有的内容，不仅影响项目的安全性，还有可能会对客户的产品和终端用户产生影响。&lt;/p&gt;
&lt;p&gt;本文将从一个实际案例出发，介绍如何使用Git工具&lt;code&gt;git filter-repo&lt;/code&gt;来清理Git仓库中的敏感信息，并探讨其中的原理及其他适用场景。&lt;/p&gt;</description></item><item><title>使用 Docker 来配置 Redis 集群</title><link>https://ygwa.github.io/writings/setup-a-redis-cluster-use-docker/</link><pubDate>Mon, 09 Dec 2024 16:30:25 +0800</pubDate><guid>https://ygwa.github.io/writings/setup-a-redis-cluster-use-docker/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it --name&lt;span class="o"&gt;=&lt;/span&gt;linx_1 ubuntu sleep infinity
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href="https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/#create-a-redis-cluster" target="_blank" rel="noreferrer"&gt;create-a-redis-cluster&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Elasticsearch 架构探索</title><link>https://ygwa.github.io/writings/elasticsearch/</link><pubDate>Tue, 03 Dec 2024 15:49:51 +0800</pubDate><guid>https://ygwa.github.io/writings/elasticsearch/</guid><description>&lt;p&gt;ElasticSearch是一个高可用的搜索引擎，最近在项目中由于客户基础设施的成熟度不够，需要Ops来进行ElasticSearch的高可用部署，了解了其底层集群相关的知识，本文将对其进行总结，介绍ElasticSearch中集群的架构及数据的存储。&lt;/p&gt;</description></item><item><title>利用 Docker 分层，构建高效的 Spring Boot 镜像</title><link>https://ygwa.github.io/writings/spring-boot-docker-layer/</link><pubDate>Tue, 03 Dec 2024 15:49:51 +0800</pubDate><guid>https://ygwa.github.io/writings/spring-boot-docker-layer/</guid><description>&lt;p&gt;在实际项目中，我们偶尔会遇到由于客户部署环境的网络限制问题，导致 Docker 镜像的推送与拉取速度很慢，影响部署的效率。
最近接手的一个项目中，我就遇到了类似的情况，我们在客户的内网部署了 Docker 的私有仓库，Jenkins 打包完后需要推送到 Docker 仓库中。
由于客户基于安全要求对于内部网络之间的传输做了网速的限制，通过传统的 Spring Boot 的 FatJar 生成的 Docker 镜像过大，在每次推送镜像和拉取镜像都需要花不少时间。
我们在私有仓库部署的服务较多，对私有仓库的存储容量要求较高。&lt;/p&gt;</description></item></channel></rss>