<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>学习笔记 on 洛克里亚的五度 博客</title>
    <link>https://lv-blog.pages.dev/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</link>
    <description>Recent content in 学习笔记 on 洛克里亚的五度 博客</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Sat, 18 Jul 2026 16:01:26 +0800</lastBuildDate>
    <atom:link href="https://lv-blog.pages.dev/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Kafka 学习笔记</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/kafka-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Sat, 18 Jul 2026 16:01:26 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/kafka-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</guid>
      <description>&lt;h2 id=&#34;偏移量索引&#34;&gt;偏移量索引&lt;/h2&gt;
&lt;h2 id=&#34;高可用&#34;&gt;高可用&lt;/h2&gt;
&lt;h2 id=&#34;isr机制&#34;&gt;ISR机制&lt;/h2&gt;</description>
    </item>
    <item>
      <title>软考系统架构师 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/ruan-kao/</link>
      <pubDate>Tue, 18 Jun 2024 12:51:35 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/ruan-kao/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本笔记基于考纲核心知识点整理，配合代码示例和记忆口诀，适合冲刺复习。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一法律法规与标准化&#34;&gt;一、法律法规与标准化&lt;/h2&gt;
&lt;h3 id=&#34;11-著作权&#34;&gt;1.1 著作权&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类别&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;不受保护&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;政府公文、法律条例、时事新闻&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;受保护&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;演讲稿、编写的图书、软件代码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;归属时间&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;软件开发完成之日起自动产生&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;保护期限&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;50年（署名权、修改权、完整权永久保护）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;著作权归属规则：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁开发归谁&lt;/li&gt;
&lt;li&gt;员工利用公司资源开发 → 归&lt;strong&gt;公司&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;职务作品无合同 → 归&lt;strong&gt;企业法人&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;改编作品 → 著作权归&lt;strong&gt;改编人&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;处理过程（算法逻辑）不属于软件著作权保护对象&lt;/strong&gt;，只保护代码表达形式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;受时间限制的权利（50年）：&lt;/strong&gt; 发表权、发行权、展览权、复制权&lt;br&gt;
&lt;strong&gt;永久保护的权利：&lt;/strong&gt; 署名权、修改权、保护作品完整权&lt;/p&gt;
&lt;h3 id=&#34;12-其他知识产权&#34;&gt;1.2 其他知识产权&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;商标权&lt;/strong&gt;：注册完成后才享有；保护对象为软件注册商标&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专利权&lt;/strong&gt;：专利注册完成后才享有&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二软件工程&#34;&gt;二、软件工程&lt;/h2&gt;
&lt;h3 id=&#34;21-软件开发模型对比&#34;&gt;2.1 软件开发模型对比&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;模型&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
					&lt;th&gt;核心特征&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;瀑布模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;需求明确固定&lt;/td&gt;
					&lt;td&gt;阶段严格顺序，不可逆&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;增量模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;需求部分明确，需快速交付核心&lt;/td&gt;
					&lt;td&gt;分批次交付模块&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;原型模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;需求模糊，用户难以描述&lt;/td&gt;
					&lt;td&gt;先做原型再开发目标软件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;螺旋模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;大型复杂高风险项目&lt;/td&gt;
					&lt;td&gt;每轮增加&lt;strong&gt;风险评估&lt;/strong&gt;环节&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;喷泉模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;面向对象开发&lt;/td&gt;
					&lt;td&gt;无严格阶段划分，阶段可交叉迭代&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;V模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;可靠性要求高&lt;/td&gt;
					&lt;td&gt;开发与测试一一对应&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;W模型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;质量要求高&lt;/td&gt;
					&lt;td&gt;开发与测试&lt;strong&gt;同步进行&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;瀑布模型阶段：
需求分析 → 系统设计 → 详细设计 → 编码 → 测试 → 维护
（每个阶段完成后才进入下一阶段）

螺旋模型四象限：
① 制定计划  ② 风险分析
③ 实施工程  ④ 客户评估
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;22-敏捷开发方法对比&#34;&gt;2.2 敏捷开发方法对比&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方法&lt;/th&gt;
					&lt;th&gt;核心理念&lt;/th&gt;
					&lt;th&gt;关键特征&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;XP（极限编程）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;把传统开发做到极致精简&lt;/td&gt;
					&lt;td&gt;结对编程、测试先行、持续集成&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SCRUM&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;短周期冲刺&lt;/td&gt;
					&lt;td&gt;三会议（站会/计划/回顾），需求按&lt;strong&gt;商业价值&lt;/strong&gt;排序&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;水晶开发&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;以人为本&lt;/td&gt;
					&lt;td&gt;最轻量灵活，重团队协作，文档少&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;FDD&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;特性驱动&lt;/td&gt;
					&lt;td&gt;五步：建模→功能清单→规划→设计→实现&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ASD&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;适应性开发&lt;/td&gt;
					&lt;td&gt;猜测→协作→复盘，三个非线性阶段&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;DSDM&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;动态系统开发&lt;/td&gt;
					&lt;td&gt;八条原则，聚焦业务价值按时交付&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;开放源码&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;全球协作&lt;/td&gt;
					&lt;td&gt;高并行排障，代码公开&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;SCRUM 三大会议：&lt;/strong&gt; 每日站会、迭代计划会、复盘回顾会&lt;/p&gt;</description>
    </item>
    <item>
      <title>ElasticSearch 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/elasticsearch/</link>
      <pubDate>Sat, 18 May 2024 12:51:05 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/elasticsearch/</guid>
      <description>&lt;h2 id=&#34;1-基础篇&#34;&gt;1. 基础篇&lt;/h2&gt;
&lt;h3 id=&#34;11-起源lucene&#34;&gt;1.1 起源：Lucene&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lucene&lt;/strong&gt;：Apache 开源的 Java 全文搜索引擎类库。&lt;/li&gt;
&lt;li&gt;优势：易扩展、高性能（纯 Java，可嵌入）。&lt;/li&gt;
&lt;li&gt;缺点：使用复杂，需处理索引创建、查询解析等底层细节，无分布式支持。&lt;/li&gt;
&lt;li&gt;Elasticsearch 基于 Lucene 构建，提供分布式、易用的 RESTful API。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;12-技术栈elk&#34;&gt;1.2 技术栈（ELK）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Elasticsearch&lt;/strong&gt;：存储、搜索和分析引擎。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logstash&lt;/strong&gt;：服务器端数据处理管道，采集、转换数据后发送至 ES。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kibana&lt;/strong&gt;：可视化平台，制作图表、仪表板，管理 ES。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beats&lt;/strong&gt;：轻量型数据采集器，发送到 Logstash 或 ES。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;13-使用-docker-安装&#34;&gt;1.3 使用 Docker 安装&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Elasticsearch&lt;/strong&gt;（单节点）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d --name es &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ES_JAVA_OPTS=-Xms512m -Xmx512m&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;discovery.type=single-node&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -v es-data:/usr/share/elasticsearch/data &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -v es-plugins:/usr/share/elasticsearch/plugins &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --privileged &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --network testNet &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -p 9200:9200 -p 9300:9300 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  elasticsearch:7.12.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;9200：HTTP API 端口&lt;/li&gt;
&lt;li&gt;9300：内部节点通信端口&lt;/li&gt;
&lt;li&gt;&lt;code&gt;discovery.type=single-node&lt;/code&gt;：单节点模式（测试用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Kibana&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d --name kibana &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e ELASTICSEARCH_HOSTS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://es:9200 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --network&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;testNet &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -p 5601:5601 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  kibana:7.12.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;14-倒排索引inverted-index&#34;&gt;1.4 倒排索引（Inverted Index）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;正向索引&lt;/strong&gt;：文档 ID → 文档内容。适合根据 ID 精确查找，但做模糊搜索需遍历所有文档，效率低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;倒排索引&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文档（Document）&lt;/strong&gt;：ES 中存储的一条 JSON 数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;词条（Term）&lt;/strong&gt;：文档经过分词后的最小单元。&lt;/li&gt;
&lt;li&gt;结构：词条 → 文档 ID 列表（及位置、频率等）。&lt;/li&gt;
&lt;li&gt;优点：快速定位包含某个词条的所有文档，实现高效全文搜索。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;15-分词器analyzer&#34;&gt;1.5 分词器（Analyzer）&lt;/h3&gt;
&lt;p&gt;将文本拆分为词条（term）的组件，由三部分组成：&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/aws/</link>
      <pubDate>Thu, 18 Apr 2024 12:48:03 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/aws/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;面向系统架构师认证，结合 Java 后端视角整理。核心思路：&lt;strong&gt;每个服务解决什么痛点、何时选它、和类似服务怎么区分&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一存储-storage&#34;&gt;一、存储 Storage&lt;/h2&gt;
&lt;h3 id=&#34;11-三种存储类型对比&#34;&gt;1.1 三种存储类型对比&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;代表服务&lt;/th&gt;
					&lt;th&gt;访问单元&lt;/th&gt;
					&lt;th&gt;典型场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;块存储&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;EBS, EC2 Instance Store&lt;/td&gt;
					&lt;td&gt;数据块（Block）&lt;/td&gt;
					&lt;td&gt;数据库、OS 磁盘&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;文件存储&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;EFS, FSx&lt;/td&gt;
					&lt;td&gt;文件/目录树&lt;/td&gt;
					&lt;td&gt;多实例共享、NFS/SMB挂载&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;对象存储&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;S3&lt;/td&gt;
					&lt;td&gt;对象（Object + Key）&lt;/td&gt;
					&lt;td&gt;静态资源、备份、数据湖&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;块存储  → 像本地硬盘，OS看到的是裸设备，自己格式化挂载
文件存储 → 像 NAS，多台机器可以同时 mount 同一个目录
对象存储 → 像 HTTP PUT/GET 的 Key-Value，无目录概念，靠前缀模拟
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id=&#34;12-amazon-s3&#34;&gt;1.2 Amazon S3&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心功能速查：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;功能&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
					&lt;th&gt;常见考点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Versioning&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;同一 Key 保留多个历史版本&lt;/td&gt;
					&lt;td&gt;开启后才能用 CRR / MFA Delete&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CRR（跨区域复制）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;异步复制到另一 Region&lt;/td&gt;
					&lt;td&gt;灾备 DR、降低延迟&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Transfer Acceleration&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;通过 CloudFront 边缘节点加速上传&lt;/td&gt;
					&lt;td&gt;上传到遥远 Region 时使用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Lifecycle Policy&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;对象按年龄自动迁移存储类&lt;/td&gt;
					&lt;td&gt;节省成本核心手段&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;S3 File Gateway&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;本地 SMB/NFS 映射到 S3&lt;/td&gt;
					&lt;td&gt;混合云文件迁移&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Intelligent-Tiering&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;自动在 Standard ↔ IA 间切换&lt;/td&gt;
					&lt;td&gt;访问模式不可预测时使用&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;S3 存储类选择决策树：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring Cloud 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/spring-cloud/</link>
      <pubDate>Mon, 18 Mar 2024 12:46:51 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/spring-cloud/</guid>
      <description>&lt;h2 id=&#34;1-服务拆分与远程调用&#34;&gt;1. 服务拆分与远程调用&lt;/h2&gt;
&lt;h3 id=&#34;11-为什么要拆分服务&#34;&gt;1.1 为什么要拆分服务？&lt;/h3&gt;
&lt;p&gt;单体应用随业务增长面临：部署慢、扩展性差、技术栈固化等问题。微服务将其拆分为&lt;strong&gt;独立部署、独立扩缩容&lt;/strong&gt;的小服务，每个服务只负责一个业务域。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;拆分原则：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单一职责：每个服务只做一件事&lt;/li&gt;
&lt;li&gt;高内聚低耦合：服务内部紧密，服务之间松散&lt;/li&gt;
&lt;li&gt;数据独立：每个服务拥有独立数据库&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;12-用户登录流程微服务视角&#34;&gt;1.2 用户登录流程（微服务视角）&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Client → Gateway（鉴权） → 业务微服务A → 微服务B（OpenFeign）
                ↓
           Nacos（服务发现）
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;13-resttemplate--微服务间原始调用&#34;&gt;1.3 RestTemplate — 微服务间原始调用&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;RestTemplate&lt;/code&gt; 是 Spring 提供的 HTTP 客户端，可用于微服务间调用，但&lt;strong&gt;代码繁琐、不支持负载均衡&lt;/strong&gt;，是 OpenFeign 出现前的过渡方案。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 注册为 Bean，并开启负载均衡&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Bean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@LoadBalanced&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; RestTemplate &lt;span style=&#34;color:#a6e22e&#34;&gt;restTemplate&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; RestTemplate();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 调用方式（服务名替代 IP:Port）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;String url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://user-service/api/users/&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; userId;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;User user &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; restTemplate.&lt;span style=&#34;color:#a6e22e&#34;&gt;getForObject&lt;/span&gt;(url, User.&lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ RestTemplate 已逐渐被 OpenFeign 取代，生产中优先选择 OpenFeign。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-服务治理--nacos-注册中心&#34;&gt;2. 服务治理 — Nacos 注册中心&lt;/h2&gt;
&lt;h3 id=&#34;21-解决的问题&#34;&gt;2.1 解决的问题&lt;/h3&gt;
&lt;p&gt;微服务实例 IP / 端口动态变化，调用方无法硬编码地址。注册中心提供：&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSM框架 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/ssm/</link>
      <pubDate>Sun, 18 Feb 2024 12:40:44 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/ssm/</guid>
      <description>&lt;h2 id=&#34;一spring-ioc-容器&#34;&gt;一、Spring IoC 容器&lt;/h2&gt;
&lt;h3 id=&#34;11-容器体系结构&#34;&gt;1.1 容器体系结构&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;BeanFactory（顶层接口）
    └── ApplicationContext（常用接口，扩展了BF）
            ├── ClassPathXmlApplicationContext（XML配置）
            ├── FileSystemXmlApplicationContext（文件路径XML）
            └── AnnotationConfigApplicationContext（注解配置）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;BeanFactory vs ApplicationContext 核心区别：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;特性&lt;/th&gt;
					&lt;th&gt;BeanFactory&lt;/th&gt;
					&lt;th&gt;ApplicationContext&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Bean 初始化时机&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;懒加载&lt;/strong&gt;（第一次 getBean 时）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;饿加载&lt;/strong&gt;（容器启动时）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;功能&lt;/td&gt;
					&lt;td&gt;基础 IoC&lt;/td&gt;
					&lt;td&gt;IoC + 事件发布 + 国际化 + AOP等&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;使用场景&lt;/td&gt;
					&lt;td&gt;资源极度受限的嵌入式&lt;/td&gt;
					&lt;td&gt;99% 的业务场景&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ApplicationContext 为什么没有 close()？&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;ApplicationContext&lt;/code&gt; 接口本身不定义 &lt;code&gt;close()&lt;/code&gt;，是为了保持接口的通用性（不是所有容器都能/需要被关闭，如 Web 容器）。但其实现类 &lt;code&gt;AbstractApplicationContext&lt;/code&gt; 实现了 &lt;code&gt;Closeable&lt;/code&gt;，可以强转后调用，或用 &lt;code&gt;ConfigurableApplicationContext&lt;/code&gt; 接口接收。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&#34;12-延迟加载lazy-loading&#34;&gt;1.2 延迟加载（Lazy Loading）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 注解方式：@Lazy 让 Bean 在第一次被使用时才初始化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Bean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Lazy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; HeavyService &lt;span style=&#34;color:#a6e22e&#34;&gt;heavyService&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; HeavyService();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// XML方式：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// &amp;lt;bean id=&amp;#34;heavyService&amp;#34; class=&amp;#34;...&amp;#34; lazy-init=&amp;#34;true&amp;#34;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：初始化代价高、启动时不一定用到的 Bean（如某些连接池、第三方SDK客户端）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MyBatis-Plus 学习</title>
      <link>https://lv-blog.pages.dev/posts/programming/backend/mybatisplus/</link>
      <pubDate>Tue, 16 Jan 2024 15:38:37 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/backend/mybatisplus/</guid>
      <description>&lt;h2 id=&#34;1-简介&#34;&gt;1. 简介&lt;/h2&gt;
&lt;p&gt;MyBatis-Plus（简称 MP）是一个 MyBatis 的增强工具，在 MyBatis 的基础上只做增强不做改变，为简化开发、提高效率而生。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无侵入&lt;/strong&gt;：引入 MP 不会对现有 MyBatis 工程产生影响，犹如丝般顺滑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;损耗小&lt;/strong&gt;：启动即会自动注入基本 CRUD，性能基本无损耗。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;强大的 CRUD 操作&lt;/strong&gt;：内置通用 Mapper、通用 Service，仅通过少量配置即可实现单表大部分 CRUD 操作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持 Lambda 形式调用&lt;/strong&gt;：通过 Lambda 表达式，安全高效的编写查询条件，防止字段名误写。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内置代码生成器&lt;/strong&gt;：通过少量配置即可生成 Mapper、Service、Controller 等代码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内置分页插件&lt;/strong&gt;：基于 MyBatis 物理分页，开发者无需关心具体操作，配置后即可使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;官网&lt;/strong&gt;：&lt;a href=&#34;https://baomidou.com/&#34;&gt;https://baomidou.com/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-基本用法&#34;&gt;2. 基本用法&lt;/h2&gt;
&lt;h3 id=&#34;21-引入依赖&#34;&gt;2.1 引入依赖&lt;/h3&gt;
&lt;p&gt;在 Maven 项目 &lt;code&gt;pom.xml&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.baomidou&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mybatis-plus-boot-starter&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.5.3.1&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- 请按最新版本 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果是传统 Spring 项目，可引入 &lt;code&gt;mybatis-plus&lt;/code&gt; 核心依赖并自行配置。通常 Spring Boot 项目直接使用 starter。&lt;/p&gt;
&lt;h3 id=&#34;22-定义实体类&#34;&gt;2.2 定义实体类&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;User&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt; Long id;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt; String name;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt; Integer age;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt; String email;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;23-编写-mapper-接口&#34;&gt;2.3 编写 Mapper 接口&lt;/h3&gt;
&lt;p&gt;继承 &lt;code&gt;BaseMapper&amp;lt;T&amp;gt;&lt;/code&gt; 即可获得 CRUD 能力：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
