<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
<atom:link href="https://jupiter-smile.cn/feed" rel="self" type="application/rss+xml"/>
<title>风之乐章</title>
<link>https://jupiter-smile.cn</link>
<description>一个自由的小世界</description>
<language>zh-CN</language>
<copyright>© Jupiter </copyright>
<pubDate>Fri, 17 Apr 2026 05:53:29 GMT</pubDate>
<generator>Mix Space CMS (https://github.com/mx-space)</generator>
<docs>https://mx-space.js.org</docs>
<image>
    <url>https://jupiter-1304905571.cos.ap-shanghai.myqcloud.com/xiaohei.png</url>
    <title>风之乐章</title>
    <link>https://jupiter-smile.cn</link>
</image>
<item>
    <title>Linux复杂脚本案例</title>
    <link>https://jupiter-smile.cn/posts/manager/Linux</link>
    <pubDate>Mon, 17 Mar 2025 13:34:34 GMT</pubDate>
    <description>在企业运营中，Linux 脚本通常用于自动化复杂任务、监控系统、处理数据、部署服务等。以下是一些常见</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/manager/Linux'>https://jupiter-smile.cn/posts/manager/Linux</a></blockquote>
      <p>在企业运营中，Linux 脚本通常用于自动化复杂任务、监控系统、处理数据、部署服务等。以下是一些常见的复杂场景和相关的 Linux 脚本命令或技术，通常结合多种工具和编程逻辑实现：</p>
<hr>
<h3><strong>1. 日志分析与处理</strong></h3>
<ul>
<li><p><strong>复杂命令组合</strong>：</p>
<pre><code class="language-bash"># 分析 Nginx 日志，统计每小时请求量最多的前 10 个 IP

awk -F'[: ]' '{print $1,$5}' /var/log/nginx/access.log | \

awk '{count[$2" "$3]++} END {for (ip in count) print count[ip], ip}' | \

sort -nr | head -n 10

# 使用 sed 和 awk 提取特定时间段的错误日志

sed -n '/2023-10-01 00:00:00/,/2023-10-01 23:59:59/p' /var/log/app/error.log | \

awk '/ERROR/ {print $5}' | sort | uniq -c
</code></pre><ul>
<li><strong>工具</strong>：<code>grep</code>, <code>awk</code>, <code>sed</code>, <code>cut</code>, <code>sort</code>, <code>uniq</code>  </li>
<li><strong>场景</strong>：日志清洗、异常检测、流量统计。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>2. 自动化备份与恢复</strong></h3>
<ul>
<li><p><strong>复杂脚本片段</strong>：</p>
<pre><code class="language-bash"># 增量备份数据库并上传到远程服务器，保留 7 天历史

BACKUP_DIR="/backup/mysql"

DATE=$(date +%Y%m%d)

mysqldump -u root -pPASSWORD dbname | gzip &gt; $BACKUP_DIR/dbname_$DATE.sql.gz

find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -exec rm {} \;

rsync -avz --delete $BACKUP_DIR/ user@remote:/backup/mysql/
</code></pre><ul>
<li><strong>工具</strong>：<code>cron</code>（定时任务）、<code>tar</code>、<code>rsync</code>、<code>scp</code>、<code>mysqldump</code>  </li>
<li><strong>场景</strong>：数据库备份、文件同步、版本回滚。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>3. 系统监控与告警</strong></h3>
<ul>
<li><p><strong>脚本示例</strong>：</p>
<pre><code class="language-bash"># 监控 CPU 使用率并发送邮件告警

CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')

if (( $(echo "$CPU_USAGE &gt; 90" | bc -l) )); then

  echo "CPU 使用率过高: $CPU_USAGE%" | mail -s "服务器告警" admin@example.com
  
fi

# 使用 Prometheus + Grafana 的脚本化集成（通过 API）

curl -X POST http://prometheus:9090/api/v1/query --data-urlencode 'query=up{job="web-server"}' 
</code></pre><ul>
<li><strong>工具</strong>：<code>top</code>, <code>vmstat</code>, <code>iostat</code>, <code>mail</code>, <code>curl</code>  </li>
<li><strong>场景</strong>：资源监控、服务健康检查、自动化告警。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>4. 批量文件操作</strong></h3>
<ul>
<li><p><strong>复杂命令</strong>：</p>
<pre><code class="language-bash"># 批量重命名文件（将 .txt 后缀改为 .md）

find /path/to/files -name "*.txt" -exec sh -c 'mv "$1" "${1%.txt}.md"' _ {} \;


# 批量压缩并删除原始文件

find /data/logs -name "*.log" -size +100M -exec gzip {} \;
</code></pre><ul>
<li><strong>工具</strong>：<code>find</code>, <code>xargs</code>, <code>rename</code>, <code>sed</code>（结合正则表达式）。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>5. 网络管理与 API 调用</strong></h3>
<ul>
<li><p><strong>脚本示例</strong>：</p>
<pre><code class="language-bash"># 自动封禁频繁访问的 IP（结合 iptables）

tail -f /var/log/nginx/access.log | \

awk '{print $1}' | \

sort | uniq -c | \

awk '{if ($1 &gt; 100) print "iptables -A INPUT -s " $2 " -j DROP"}'


# 调用 REST API 并解析 JSON 响应

response=$(curl -s https://api.example.com/data)

echo $response | jq '.status'
</code></pre><ul>
<li><strong>工具</strong>：<code>iptables</code>, <code>curl</code>, <code>jq</code>, <code>nmap</code>（端口扫描）。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>6. 数据库自动化操作</strong></h3>
<ul>
<li><p><strong>脚本示例</strong>：</p>
<pre><code class="language-bash"># 自动清理过期数据库记录
mysql -u user -pPASSWORD -e "DELETE FROM logs WHERE created_at &lt; NOW() - INTERVAL 30 DAY;"

# 导出 CSV 并发送邮件
mysql -u user -pPASSWORD -e "SELECT * FROM sales" | sed 's/\t/,/g' &gt; sales.csv

echo "月度销售数据" | mail -a sales.csv -s "报表" finance@example.com
</code></pre></li>
</ul>
<hr>
<h3><strong>7. 自动化部署与 CI/CD</strong></h3>
<ul>
<li><p><strong>脚本示例</strong>：</p>
<pre><code class="language-bash"># 使用 Ansible 或 Shell 脚本部署代码

git pull origin master

docker-compose down

docker-compose up -d --build</code></pre></li>
</ul>
<hr>
<h3><strong>8. 安全审计与漏洞扫描</strong></h3>
<ul>
<li><p><strong>复杂命令</strong>：</p>
<pre><code class="language-bash"># 扫描系统中 SUID/SGID 权限异常的文件

find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

# 检查 SSH 登录失败记录

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c</code></pre></li>
</ul>
<hr>
<h3><strong>9. 数据处理与报告生成</strong></h3>
<ul>
<li><p><strong>复杂命令</strong>：</p>
<pre><code class="language-bash"># 从 CSV 中提取数据并生成汇总报告

awk -F',' '{sum+=$3} END {print "总销售额: " sum}' sales.csv

# 使用 Python 脚本 + Shell 定时生成报表

python3 generate_report.py && mv report.pdf /var/www/html/</code></pre></li>
</ul>
<hr>
<h3><strong>10. 资源清理与维护</strong></h3>
<ul>
<li><p><strong>脚本示例</strong>：</p>
<pre><code class="language-bash"># 清理 /tmp 中超过 7 天未使用的文件

find /tmp -type f -atime +7 -exec rm -f {} \;

# 自动扩展磁盘分区（结合 LVM）

lvextend -l +100%FREE /dev/vg01/lv01

resize2fs /dev/vg01/lv01</code></pre></li>
</ul>
<hr>
<h3><strong>复杂脚本的核心特点</strong></h3>
<ol>
<li><strong>组合性</strong>：通过管道符 <code>|</code> 和重定向 <code>&gt;</code> 串联多个命令。</li>
<li><strong>条件判断</strong>：使用 <code>if</code>、<code>case</code>、<code>&amp;&amp;</code>/<code>||</code> 控制流程。</li>
<li><strong>循环处理</strong>：<code>for</code>、<code>while</code> 循环遍历文件或数据。</li>
<li><strong>函数封装</strong>：将重复逻辑封装为函数。</li>
<li><strong>外部工具集成</strong>：结合 <code>jq</code>（JSON 处理）、<code>awk</code>（文本分析）、<code>curl</code>（API 调用）等。</li>
</ol>
<hr>
<h3><strong>学习建议</strong></h3>
<ul>
<li>掌握 <code>awk</code> 和 <code>sed</code>：它们是文本处理的瑞士军刀。</li>
<li>学习正则表达式：用于高效匹配和替换文本。</li>
<li>熟悉 <code>cron</code>：实现定时任务自动化。</li>
<li>使用版本控制（如 Git）：管理复杂脚本的迭代。</li>
</ul>
<p>企业中的复杂脚本通常是为特定场景定制的，核心目标是 <strong>提升效率、减少人为错误</strong>。</p>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/manager/Linux#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d824eaa3c0193bceb15b35</guid>
  <category>Post</category>
<category>管理</category>
 </item>
  <item>
    <title>数据模型开发实践要点</title>
    <link>https://jupiter-smile.cn/posts/bigdata/datamodel</link>
    <pubDate>Mon, 17 Mar 2025 13:30:07 GMT</pubDate>
    <description>数据模型开发是数据管理和系统设计的核心环节，其目标是通过结构化方式定义数据实体、属性、关系及约束，为</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/bigdata/datamodel'>https://jupiter-smile.cn/posts/bigdata/datamodel</a></blockquote>
      <p>数据模型开发是数据管理和系统设计的核心环节，其目标是通过结构化方式定义数据实体、属性、关系及约束，为业务需求和技术实现搭建桥梁。以下是数据模型开发的关键方法、步骤和最佳实践：</p>
<hr>
<h3><strong>一、数据模型分层</strong></h3>
<ol>
<li><p><strong>概念模型（Conceptual Model）</strong>  </p>
<ul>
<li><strong>目标</strong>：抽象描述业务需求，聚焦核心实体与关系，忽略技术细节。</li>
<li><strong>工具</strong>：实体关系图（ERD）、UML类图。</li>
<li><strong>输出</strong>：业务术语表、实体定义及高层关系。</li>
</ul>
</li>
<li><p><strong>逻辑模型（Logical Model）</strong>  </p>
<ul>
<li><strong>目标</strong>：细化数据结构，定义属性、主键、外键、数据类型和规范化。</li>
<li><strong>方法</strong>：规范化（3NF）、属性粒度分析。</li>
<li><strong>输出</strong>：详细的数据表结构、关系及约束规则。</li>
</ul>
</li>
<li><p><strong>物理模型（Physical Model）</strong>  </p>
<ul>
<li><strong>目标</strong>：技术落地，适配具体数据库系统（如MySQL、Oracle、Hadoop）。</li>
<li><strong>优化</strong>：索引设计、分区策略、存储引擎选择。</li>
<li><strong>输出</strong>：DDL脚本、性能优化方案。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>二、开发方法与步骤</strong></h3>
<h4><strong>1. 需求分析</strong></h4>
<ul>
<li><strong>业务调研</strong>：与利益相关者沟通，明确数据范围（如订单、用户、产品）。</li>
<li><strong>数据源识别</strong>：确定来自业务系统、API、日志文件的数据。</li>
<li><strong>约束条件</strong>：合规性（GDPR）、性能（响应时间）、数据量级（TB级）。</li>
</ul>
<h4><strong>2. 概念建模</strong></h4>
<ul>
<li><strong>实体识别</strong>：识别核心业务对象（如Customer, Order）。</li>
<li><strong>关系定义</strong>：确定一对多、多对多关系（如客户-订单）。</li>
<li><strong>工具示例</strong>：使用Lucidchart或Draw.io绘制ER图。</li>
</ul>
<h4><strong>3. 逻辑建模</strong></h4>
<ul>
<li><strong>规范化设计</strong>：消除冗余，拆分至第三范式（3NF）。</li>
<li><strong>属性细化</strong>：定义字段类型（如VARCHAR(50)、TIMESTAMP）。</li>
<li><strong>约束规则</strong>：唯一性约束、非空约束、默认值。</li>
</ul>
<h4><strong>4. 物理建模</strong></h4>
<ul>
<li><strong>数据库适配</strong>：根据技术栈选择存储引擎（如InnoDB vs MyISAM）。</li>
<li><strong>性能优化</strong>：创建组合索引、分区表（按时间范围）。</li>
<li><strong>脚本生成</strong>：通过工具（如SQLAlchemy、Flyway）生成DDL。</li>
</ul>
<h4><strong>5. 验证与迭代</strong></h4>
<ul>
<li><strong>模型评审</strong>：与业务和技术团队验证模型准确性。</li>
<li><strong>原型测试</strong>：通过样例数据验证查询性能。</li>
<li><strong>敏捷迭代</strong>：根据反馈调整模型（如增加缓存表）。</li>
</ul>
<hr>
<h3><strong>三、主流建模方法论</strong></h3>
<ol>
<li><p><strong>实体关系模型（ER Model）</strong>  </p>
<ul>
<li><strong>适用场景</strong>：传统OLTP系统（如银行交易系统）。</li>
<li><strong>特点</strong>：强一致性、高度规范化。</li>
</ul>
</li>
<li><p><strong>维度建模（Dimensional Modeling）</strong>  </p>
<ul>
<li><strong>适用场景</strong>：数据仓库与BI分析（如销售分析看板）。</li>
<li><strong>结构</strong>：星型/雪花模型，事实表与维度表分离。</li>
<li><strong>工具</strong>：Kimball方法论、dbt。</li>
</ul>
</li>
<li><p><strong>Data Vault 2.0</strong>  </p>
<ul>
<li><strong>适用场景</strong>：企业级数据湖，适应变化频繁的需求。</li>
<li><strong>核心组件</strong>：Hub（业务实体）、Link（关系）、Satellite（属性历史）。</li>
</ul>
</li>
<li><p><strong>NoSQL建模</strong>  </p>
<ul>
<li><strong>适用场景</strong>：文档数据库（MongoDB）、图数据库（Neo4j）。</li>
<li><strong>设计原则</strong>：反规范化、以查询驱动设计（如社交网络关系）。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>四、工具与技术栈</strong></h3>
<ul>
<li><strong>建模工具</strong>：Erwin, ER/Studio, PowerDesigner, SQLDBM。</li>
<li><strong>协作平台</strong>：dbdiagram.io（在线ERD工具）、Confluence文档。</li>
<li><strong>代码化建模</strong>：dbt（数据构建工具）、版本控制（Git）。</li>
</ul>
<hr>
<h3><strong>五、最佳实践与挑战</strong></h3>
<ol>
<li><p><strong>平衡灵活性与性能</strong>  </p>
<ul>
<li>规范化过高可能导致多表连接性能下降，需在查询效率与数据冗余间权衡。</li>
</ul>
</li>
<li><p><strong>数据治理</strong>  </p>
<ul>
<li>元数据管理（如数据字典）、数据血缘追踪（Apache Atlas）。</li>
</ul>
</li>
<li><p><strong>应对变化</strong>  </p>
<ul>
<li>使用版本控制管理模型变更（如Schema Migrations）。</li>
</ul>
</li>
<li><p><strong>跨团队协作</strong>  </p>
<ul>
<li>业务团队（需求方）、数据工程师（实现）、分析师（使用方）需紧密协作。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>六、案例场景</strong></h3>
<ul>
<li><p><strong>电商平台</strong>：  </p>
<ul>
<li>概念模型：用户、商品、订单、支付。  </li>
<li>逻辑模型：订单表（OrderID, UserID, TotalAmount）。  </li>
<li>物理模型：分库分表（按UserID哈希分区）。</li>
</ul>
</li>
<li><p><strong>金融风控</strong>：  </p>
<ul>
<li>使用Data Vault存储历史数据变化，支持实时欺诈检测。</li>
</ul>
</li>
</ul>
<hr>
<h3><strong>七、未来趋势</strong></h3>
<ul>
<li><strong>自动化建模</strong>：AI辅助生成模型（如通过自然语言描述生成ER图）。</li>
<li><strong>Data Mesh</strong>：去中心化数据架构，领域驱动设计（DDD）。</li>
<li><strong>实时数据建模</strong>：流处理场景下的动态Schema（如Apache Kafka + Avro）。</li>
</ul>
<hr>
<p>通过结合业务需求、技术约束和行业方法论，数据模型开发能够为系统提供高效、可扩展的数据架构基础。</p>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/bigdata/datamodel#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d823dfa3c0193bceb15aaf</guid>
  <category>Post</category>
<category>大数据</category>
 </item>
  <item>
    <title>Hadoop生态系统CDH</title>
    <link>https://jupiter-smile.cn/posts/bigdata/cdh</link>
    <pubDate>Fri, 14 Mar 2025 14:37:38 GMT</pubDate>
    <description>CDH（Cloudera Distribution including Apache Hadoop）</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/bigdata/cdh'>https://jupiter-smile.cn/posts/bigdata/cdh</a></blockquote>
      <p>CDH（Cloudera Distribution including Apache Hadoop）是Cloudera公司推出的一个C发行版，集成了Apache Hadoop及其生态系统的核心组件。虽然CDH本身并非专为数据仓库设计，但其提供的工具和组件能够支持构建高效、可扩展的企业级数据仓库解决方案。以下是关于CDH与数据仓库的关键点解析：</p>
<hr>
<h3><strong>1. CDH的核心组成</strong></h3>
<p>CDH整合了Hadoop生态系统的多种工具，其中与数据仓库密切相关的组件包括：</p>
<ul>
<li><strong>HDFS（Hadoop分布式文件系统）</strong>：提供高容错性、低成本的大规模数据存储。</li>
<li><strong>Apache Hive</strong>：基于Hadoop的数据仓库工具，支持类SQL（HiveQL）查询，适合离线批处理分析。</li>
<li><strong>Apache Impala</strong>：MPP（大规模并行处理）引擎，支持低延迟的交互式SQL查询（与Hive共享元数据）。</li>
<li><strong>Apache HBase</strong>：面向列的NoSQL数据库，适用于实时读写场景。</li>
<li><strong>Cloudera Manager</strong>：集群管理和监控工具，简化运维。</li>
<li><strong>Kudu</strong>：支持快速分析的列式存储引擎，填补HDFS和HBase在实时更新和查询的空白。</li>
<li><strong>Spark</strong>：用于批处理、流处理和机器学习的高性能计算引擎。</li>
</ul>
<hr>
<h3><strong>2. CDH在数据仓库中的应用</strong></h3>
<p>通过整合上述组件，CDH能够实现以下数据仓库功能：</p>
<ul>
<li><strong>数据存储</strong>：HDFS存储原始数据，支持结构化、半结构化和非结构化数据。</li>
<li><strong>ETL（数据抽取、转换、加载）</strong>：使用Spark、MapReduce或Hive进行数据清洗和转换。</li>
<li><strong>查询与分析</strong>：<ul>
<li><strong>离线分析</strong>：Hive处理TB/PB级数据的复杂批处理任务。</li>
<li><strong>交互式查询</strong>：Impala或Kudu实现亚秒级响应的SQL查询。</li>
<li><strong>实时处理</strong>：Spark Streaming或Flink处理流数据。</li>
</ul>
</li>
<li><strong>元数据管理</strong>：通过Hive Metastore统一管理表结构和数据位置。</li>
<li><strong>与BI工具集成</strong>：支持Tableau、Power BI等工具直接连接Impala或Hive进行可视化分析。</li>
</ul>
<hr>
<h3><strong>3. CDH vs 传统数据仓库</strong></h3>
<table>
<thead>
<tr>
<th><strong>特性</strong></th>
<th><strong>传统数据仓库（如Teradata）</strong></th>
<th><strong>基于CDH的数据仓库</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>扩展性</strong></td>
<td>垂直扩展，成本高且上限明显</td>
<td>水平扩展，通过增加节点线性扩展</td>
</tr>
<tr>
<td><strong>数据类型支持</strong></td>
<td>主要支持结构化数据</td>
<td>结构化、半结构化（JSON/XML）、非结构化（日志/图像）</td>
</tr>
<tr>
<td><strong>成本</strong></td>
<td>商业授权费用高昂</td>
<td>开源架构，硬件成本为主</td>
</tr>
<tr>
<td><strong>实时性</strong></td>
<td>批量加载为主</td>
<td>支持实时流处理（Kudu/Spark Streaming）</td>
</tr>
<tr>
<td><strong>灵活性</strong></td>
<td>预定义Schema，修改复杂</td>
<td>Schema-on-Read（如Hive），灵活适应变化</td>
</tr>
</tbody></table>
<hr>
<h3><strong>4. 典型应用场景</strong></h3>
<ul>
<li><strong>企业级数据湖</strong>：集中存储多源数据，为BI、机器学习提供统一数据源。</li>
<li><strong>日志分析</strong>：处理服务器、应用日志（如通过Flume收集 + Hive分析）。</li>
<li><strong>用户行为分析</strong>：结合Spark MLlib进行实时推荐或用户分群。</li>
<li><strong>金融风控</strong>：使用Impala快速查询交易记录，结合Spark进行实时反欺诈计算。</li>
</ul>
<hr>
<h3><strong>5. CDH的演进与替代方案</strong></h3>
<ul>
<li><strong>CDH 6及之前版本</strong>：以Hadoop为核心，适合本地部署。</li>
<li><strong>Cloudera Data Platform (CDP)</strong>：Cloudera推出的混合云平台，整合CDH和HDP（Hortonworks），支持公有云、私有云和多云环境。</li>
<li><strong>云原生替代方案</strong>：如AWS EMR + Redshift、Snowflake、Databricks Lakehouse等，提供更托管的服务。</li>
</ul>
<hr>
<h3><strong>总结</strong></h3>
<p>CDH是一个基于Hadoop生态构建的大数据平台，通过整合Hive、Impala等工具，能够扩展传统数据仓库的能力，支持海量多类型数据的存储、处理和分析。其核心优势在于<strong>高扩展性、成本效益和对复杂数据类型的支持</strong>，适合需要处理大规模数据且对实时性有较高要求的企业场景。然而，随着云计算的普及，CDH的本地部署模式逐渐向云原生架构（如CDP）迁移，用户需根据实际需求选择合适方案。</p>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/bigdata/cdh#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d43f32cbfe0497990a1b84</guid>
  <category>Post</category>
<category>大数据</category>
 </item>
  <item>
    <title>Oracle的包(Package)</title>
    <link>https://jupiter-smile.cn/posts/database/package</link>
    <pubDate>Thu, 13 Mar 2025 14:15:36 GMT</pubDate>
    <description>以下是Oracle包的案例说明，结合了PL/SQL的实际应用场景：

示例：员工管理包（EMPLOY</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/database/package'>https://jupiter-smile.cn/posts/database/package</a></blockquote>
      <p>以下是Oracle包的案例说明，结合了PL/SQL的实际应用场景：</p>
<h3>示例：员工管理包（EMPLOYEE_MGMT）</h3>
<pre><code class="language-sql">-- 包规范（声明接口）
CREATE OR REPLACE PACKAGE employee_mgmt AS
  PROCEDURE add_employee(
    p_empno NUMBER,
    p_ename VARCHAR2,
    p_sal NUMBER
  );
  
  FUNCTION get_salary(
    p_empno NUMBER
  ) RETURN NUMBER;
  
  -- 声明记录类型
  TYPE emp_rec IS RECORD (
    empno emp.empno%TYPE,
    ename emp.ename%TYPE,
    sal emp.sal%TYPE
  );
  
  -- 声明游标
  CURSOR emp_cursor RETURN emp_rec;
END employee_mgmt;

-- 包主体（实现逻辑）
CREATE OR REPLACE PACKAGE BODY employee_mgmt AS
  PROCEDURE add_employee(
    p_empno NUMBER,
    p_ename VARCHAR2,
    p_sal NUMBER
  ) IS
  BEGIN
    INSERT INTO emp(empno, ename, sal)
    VALUES (p_empno, p_ename, p_sal);
    COMMIT;
  END add_employee;

  FUNCTION get_salary(
    p_empno NUMBER
  ) RETURN NUMBER IS
    v_sal emp.sal%TYPE;
  BEGIN
    SELECT sal INTO v_sal
    FROM emp
    WHERE empno = p_empno;
    RETURN v_sal;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      RETURN NULL;
  END get_salary;

  CURSOR emp_cursor RETURN emp_rec IS
    SELECT empno, ename, sal
    FROM emp
    WHERE sal &gt; 3000;
END employee_mgmt;</code></pre><h3>包的核心特点：</h3>
<ol>
<li><p><strong>模块化组织</strong><br>将员工管理相关的程序单元（存储过程、函数）和数据结构（类型、游标）封装在单个逻辑单元中，提升代码复用性。</p>
</li>
<li><p><strong>接口与实现分离</strong></p>
</li>
</ol>
<ul>
<li>规范部分声明公共元素（类似接口）</li>
<li>主体部分包含具体实现细节
（支持独立编译和版本管理）</li>
</ul>
<ol start="3">
<li><strong>状态持久性</strong><br>包级变量和游标在会话期间保持状态，适用于需要跨多次调用的场景（如分页查询）</li>
</ol>
<h3>典型应用场景：</h3>
<pre><code class="language-sql">-- 调用包中的存储过程
BEGIN
  employee_mgmt.add_employee(7788, 'SCOTT', 4500);
END;

-- 调用包中的函数
DECLARE
  v_salary NUMBER;
BEGIN
  v_salary := employee_mgmt.get_salary(7788);
  DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;</code></pre><h3>包的优势总结：</h3>
<ul>
<li>通过封装实现信息隐藏（私有过程/函数不暴露给外部）</li>
<li>减少数据库对象间的依赖关系</li>
<li>支持重载（同名不同参数的子程序）</li>
<li>提升整体性能（包首次调用时整体加载到内存）</li>
</ul>
<blockquote>
<p>实际开发中常见包类型：  </p>
<ol>
<li>数据校验包（包含各种校验规则）  </li>
<li>报表生成包（封装复杂业务逻辑）  </li>
<li>系统工具包（通用日志记录、异常处理）</li>
</ol>
</blockquote>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/database/package#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d2e888cbfe0497990a00b8</guid>
  <category>Post</category>
<category>数据库</category>
 </item>
  <item>
    <title>Oracle常用正则表达式</title>
    <link>https://jupiter-smile.cn/posts/database/regexp</link>
    <pubDate>Thu, 13 Mar 2025 13:51:58 GMT</pubDate>
    <description>正则表达式(regular expression)：用于处理特殊的数据，特殊字符，字段分割，判断
正</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/database/regexp'>https://jupiter-smile.cn/posts/database/regexp</a></blockquote>
      <p>正则表达式(regular expression)：用于处理特殊的数据，特殊字符，字段分割，判断<BR>
正则表达式的4个关键字 <BR>
REGEXP_LIKE(字符串/字段,查找内容) ; --模糊匹配<BR>
REGEXP_INSTR(字符串/字段,查找内容,什么位置开始查找,第几次出现); --查找位置<BR>
REGEXP_SUBSTR(字符串/字段,截取内容,起始位置,第几次出现);  --截取<BR>
REGEXP_REPLACE(字符串/字段,被替换的内容,替换内容);--替换<BR></p>
<p>--查找名字包含S的员工<BR>
SELECT ENAME FROM EMP<BR>
WHERE ENAME LIKE &#39;%S%&#39;;<BR>
--用正则表达式实现：<BR>
SELECT ENAME FROM EMP<BR>
WHERE REGEXP_LIKE(ENAME,&#39;S&#39;);<BR>
--或者<BR>
SELECT ENAME FROM EMP<BR>
WHERE REGEXP_LIKE(ENAME,&#39;[S]&#39;);<BR></p>
<p>[]  --范围<BR>
[0-9] --查询字段里面是否有数字<BR>
[A-Z] --查询里面是否有字母，区分大小写的,为字符串，需要引号引起来[a-zA-Z]<BR></p>
<ul>
<li>--表示一位或者多位前面的匹配项<BR>
{} --紧挨着范围表示定义一个长度<BR>
[0-9]{11}  --表示有11位数字<BR>
^   --没有紧挨范围代表含有什么<BR>
^[]  --写在[]外面表示开头 --匹配字符串的开始  <BR>
[^]   --写在[]里面表示非<BR>
$ --表示结尾  --匹配字符串的结束<BR></li>
</ul>
<pre><code class="language-sql">CREATE TABLE MOD_1 (VAU VARCHAR2(1000) );

INSERT INTO MOD_1 VALUES ('AHJDJI792N');
INSERT INTO MOD_1 VALUES ('17399487');
INSERT INTO MOD_1 VALUES ('AHshifhJI792N');
INSERT INTO MOD_1 VALUES ('AH281edifY98IH');
INSERT INTO MOD_1 VALUES ('AHedifYIH');
COMMIT;
SELECT * FROM MOD_1;


1)REGEXP_LIKE(字符串/字段,查找内容) 
--查找MOD_1表中包含字母的记录
SELECT * FROM MOD_1
WHERE REGEXP_LIKE(VAU,'[a-zA-Z]');

--查找MOD_1中只有字母的记录
SELECT * FROM MOD_1
WHERE REGEXP_LIKE(VAU,'^[a-zA-Z]+$');

--查找EMP表中名字为纯字母且长度为5的员工名字
SELECT ENAME FROM  EMP 
WHERE REGEXP_LIKE(ENAME,'^[a-zA-Z]{5}+$');

--查找MOD_1表中纯数字的记录
SELECT * FROM MOD_1
WHERE REGEXP_LIKE(VAU,'^[0-9]+$');

--查找MOD_1表中，第一位为A第二位为字母，第3位为数字的记录
SELECT * FROM MOD_1
WHERE REGEXP_LIKE(VAU,'^[A][a-zA-Z][0-9]');

--输入一个手机号，验证手机号的合法性
第一位为1，第二位为3579中的任意一位，纯11位数字为合法
CREATE OR REPLACE PROCEDURE SP_21(P_NUM NUMBER)
IS
BEGIN
  IF  REGEXP_LIKE(P_NUM,'^[1][3579][0-9]{9}+$')
    THEN DBMS_OUTPUT.PUT_LINE(P_NUM);
    ELSE DBMS_OUTPUT.PUT_LINE('不合法');
    END IF;
END;

BEGIN
  SP_21(11523457890);
END;</code></pre><p>--2)查找位置
REGEXP_INSTR(字符串/字段,查找内容,什么位置开始查找,第几次出现);<BR></p>
<p>--示例 查找字符&#39;ASGAJIDHIDEAAJDIE&#39;从第一位开始找，第二次出现A的位置<BR>
SELECT INSTR(&#39;ASGAJIDHIDEAAJDIE&#39;,&#39;A&#39;,1,2) FROM DUAL;<BR>
SELECT REGEXP_INSTR(&#39;ASGAJIDHIDEAAJDIE&#39;,&#39;A&#39;,1,2) FROM DUAL;<BR></p>
<p>--示例查找字符串&#39;ASGAJIDHIDEAAJDIE&#39;中，第一次出现GA的位置<BR>
SELECT INSTR(&#39;ASGAJIDHIDEAAJDIE&#39;,&#39;GA&#39;) FROM DUAL; --3<BR>
SELECT REGEXP_INSTR(&#39;ASGAJIDHIDEAAJDIE&#39;,&#39;GA&#39;,1,1) FROM DUAL;<BR>
SELECT REGEXP_INSTR(&#39;ASGAJIDHIDEAAJDIE&#39;,&#39;GA&#39;) FROM DUAL;--3 后面两个参数省略，默认从一个位置开始找，找第一次出现的位置</p>
<p>--示例查找字符串&#39;134ASGAJIDHIDEAAJDIE&#39;中，第一次出现字母的位置,第二次出现数字的位置
SELECT REGEXP_INSTR(&#39;134ASGAJIDHIDEAAJDIE&#39;,&#39;[a-zA-Z]&#39;,1,1) FROM DUAL;--第一次出现字母的位置
SELECT REGEXP_INSTR(&#39;134ASGAJIDHIDEAAJDIE&#39;,&#39;[0-9]&#39;,1,2) FROM DUAL;--第二次出现数字的位置</p>
<p>--3)截取 --返回要截取的内容  截取的内容当做一个整体 一位进行处理
REGEXP_SUBSTR(字符串/字段,截取内容,起始位置,第几次出现);
--示例 截取字符串&#39;DHJAHDAH328DA&#39;中AH出现的位置
substr(字符串,1,3)</p>
<pre><code class="language-sql">SELECT SUBSTR('DHJAHDA328DA',4,2) FROM DUAL;
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH') FROM DUAL; --AH
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH',4) FROM DUAL; --AH
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH',4,2) FROM DUAL; --返回空
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH',4,3) FROM DUAL; --返回空
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH',4,1) FROM DUAL; --返回AH
SELECT REGEXP_SUBSTR('DHJAHDA328DA','AH',5) FROM DUAL;  --返回空

--示例字符串 张三-李四-王五 截取出李四
SELECT REGEXP_SUBSTR('张三-李四-王五','[^-]',1,2) FROM DUAL; --返回三
SELECT REGEXP_SUBSTR('张三-李四-王五','[^-]',1,3) FROM DUAL; --返回李
SELECT REGEXP_SUBSTR('张三-李四-王五','[^-]+',1,2) FROM DUAL;--返回李四

按照 - 进行分割
SELECT REGEXP_SUBSTR('张三-李四-王五','[^-]') FROM DUAL;--张
SELECT REGEXP_SUBSTR('张三-李四-王五','[^-]+',1,2) FROM DUAL;--张三 --不是-的多个字符串，所以把名字当做了整体

--替换 REGEXP_REPLACE()
--将dgeywo157fy中的数字替换成空格
SELECT REGEXP_REPLACE('dgeywo157fy','[0-9]') FROM DUAL;</code></pre>
      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/database/regexp#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d2e2fecbfe04979909fefd</guid>
  <category>Post</category>
<category>数据库</category>
 </item>
  <item>
    <title>需求、软件和项目管理过程解析</title>
    <link>https://jupiter-smile.cn/posts/bigdata/manage</link>
    <pubDate>Thu, 13 Mar 2025 13:43:05 GMT</pubDate>
    <description>以下是关于 需求管理过程、软件管理过程 和 项目管理过程 的详细解析，涵盖定义、关键步骤、工具及三者</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/bigdata/manage'>https://jupiter-smile.cn/posts/bigdata/manage</a></blockquote>
      <p>以下是关于 <strong>需求管理过程</strong>、<strong>软件管理过程</strong> 和 <strong>项目管理过程</strong> 的详细解析，涵盖定义、关键步骤、工具及三者间的协同关系：</p>
<hr>
<h3><strong>1. 需求管理过程</strong></h3>
<p><strong>定义</strong>：<br>围绕需求的识别、分析、验证、跟踪和变更控制，确保最终交付的软件满足用户和业务目标。  </p>
<h4><strong>关键步骤</strong></h4>
<ol>
<li><p><strong>需求收集</strong>  </p>
<ul>
<li><strong>方法</strong>：用户访谈、问卷调查、原型演示、头脑风暴。  </li>
<li><strong>输出</strong>：原始需求清单（用户故事、用例文档）。</li>
</ul>
</li>
<li><p><strong>需求分析与优先级排序</strong>  </p>
<ul>
<li><strong>方法</strong>：MoSCoW（Must/Should/Could/Won’t Have）、Kano 模型。  </li>
<li><strong>输出</strong>：需求规格说明书（SRS）、优先级矩阵。</li>
</ul>
</li>
<li><p><strong>需求验证与确认</strong>  </p>
<ul>
<li><strong>方法</strong>：需求评审会、原型验证、用户签字确认。  </li>
<li><strong>输出</strong>：基线化的需求文档。</li>
</ul>
</li>
<li><p><strong>需求跟踪与变更控制</strong>  </p>
<ul>
<li><strong>方法</strong>：需求跟踪矩阵（RTM）、变更控制委员会（CCB）。  </li>
<li><strong>工具</strong>：JIRA、Confluence、DOORS。</li>
</ul>
</li>
<li><p><strong>需求交付与验收</strong>  </p>
<ul>
<li><strong>方法</strong>：用户验收测试（UAT）、验收标准核对表。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>2. 软件管理过程</strong></h3>
<p><strong>定义</strong>：<br>针对软件开发全生命周期的技术性管理，包括开发、测试、部署和维护，确保软件质量和交付效率。  </p>
<h4><strong>关键步骤</strong></h4>
<ol>
<li><p><strong>开发过程管理</strong>  </p>
<ul>
<li><strong>模型</strong>：瀑布、敏捷（Scrum/Kanban）、DevOps。  </li>
<li><strong>工具</strong>：Git（版本控制）、Jenkins（CI/CD）、SonarQube（代码质量）。</li>
</ul>
</li>
<li><p><strong>配置管理</strong>  </p>
<ul>
<li><strong>内容</strong>：代码分支策略、版本控制、依赖管理。  </li>
<li><strong>工具</strong>：GitHub/GitLab、Artifactory（包管理）。</li>
</ul>
</li>
<li><p><strong>质量管理</strong>  </p>
<ul>
<li><strong>方法</strong>：单元测试、自动化测试、代码审查。  </li>
<li><strong>工具</strong>：Selenium、JUnit、Postman。</li>
</ul>
</li>
<li><p><strong>部署与运维管理</strong>  </p>
<ul>
<li><strong>方法</strong>：蓝绿部署、金丝雀发布、监控告警。  </li>
<li><strong>工具</strong>：Docker、Kubernetes、Prometheus。</li>
</ul>
</li>
<li><p><strong>维护与迭代</strong>  </p>
<ul>
<li><strong>内容</strong>：Bug 修复、功能增强、技术债务管理。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>3. 项目管理过程</strong></h3>
<p><strong>定义</strong>：<br>通过系统化的方法规划、执行和监控项目，确保在约束条件（时间、成本、范围）内达成目标。  </p>
<h4><strong>关键步骤（基于 PMBOK 五大过程组）</strong></h4>
<ol>
<li><p><strong>启动</strong>  </p>
<ul>
<li><strong>活动</strong>：制定项目章程、识别干系人。  </li>
<li><strong>工具</strong>：干系人分析矩阵、项目章程模板。</li>
</ul>
</li>
<li><p><strong>规划</strong>  </p>
<ul>
<li><strong>内容</strong>：范围说明书、WBS（工作分解结构）、进度计划（甘特图）、风险管理计划。  </li>
<li><strong>工具</strong>：Microsoft Project、Smartsheet、风险登记册。</li>
</ul>
</li>
<li><p><strong>执行</strong>  </p>
<ul>
<li><strong>活动</strong>：资源分配、团队协作、任务执行。  </li>
<li><strong>工具</strong>：Trello、Asana、Slack。</li>
</ul>
</li>
<li><p><strong>监控</strong>  </p>
<ul>
<li><strong>内容</strong>：进度跟踪（EVM 挣值分析）、风险应对、变更管理。  </li>
<li><strong>工具</strong>：Power BI（仪表盘）、JIRA 看板。</li>
</ul>
</li>
<li><p><strong>收尾</strong>  </p>
<ul>
<li><strong>活动</strong>：项目验收、文档归档、经验教训总结。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>4. 三者的协同关系</strong></h3>
<ol>
<li><p><strong>需求管理为项目管理和软件管理提供输入</strong>  </p>
<ul>
<li>需求是项目范围的基础，驱动软件开发的功能设计。  </li>
<li>需求变更需同步更新项目计划和开发任务。</li>
</ul>
</li>
<li><p><strong>项目管理统筹全局</strong>  </p>
<ul>
<li>协调需求优先级与开发资源分配（如：敏捷中的 Sprint 计划）。  </li>
<li>管理风险（如：需求蔓延导致进度延迟）。</li>
</ul>
</li>
<li><p><strong>软件管理支撑项目交付</strong>  </p>
<ul>
<li>开发流程（如 DevOps）直接影响项目迭代速度。  </li>
<li>软件质量（如测试覆盖率）决定项目验收结果。</li>
</ul>
</li>
</ol>
<hr>
<h3><strong>5. 工具与方法的整合示例</strong></h3>
<ul>
<li><strong>场景</strong>：某团队使用 <strong>Scrum</strong> 开发一个电商系统。  <ol>
<li><strong>需求管理</strong>：  <ul>
<li>用户故事写在 JIRA 中，优先级由 Product Owner 排序。</li>
</ul>
</li>
<li><strong>项目管理</strong>：  <ul>
<li>Sprint 计划会分配任务，燃尽图跟踪进度。</li>
</ul>
</li>
<li><strong>软件管理</strong>：  <ul>
<li>代码提交到 GitLab，CI/CD 流水线自动部署到测试环境。</li>
</ul>
</li>
<li><strong>协同</strong>：  <ul>
<li>需求变更通过 JIRA 流转，触发项目计划调整和开发任务更新。</li>
</ul>
</li>
</ol>
</li>
</ul>
<hr>
<h3><strong>6. 常见挑战与应对</strong></h3>
<table>
<thead>
<tr>
<th><strong>过程</strong></th>
<th><strong>挑战</strong></th>
<th><strong>应对策略</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>需求管理</strong></td>
<td>需求频繁变更</td>
<td>建立变更控制流程（CCB）、迭代开发。</td>
</tr>
<tr>
<td><strong>软件管理</strong></td>
<td>技术债务累积</td>
<td>定期代码审查、技术债列入 Sprint 计划。</td>
</tr>
<tr>
<td><strong>项目管理</strong></td>
<td>资源冲突与进度延迟</td>
<td>关键路径法（CPM）、资源平衡策略。</td>
</tr>
</tbody></table>
<hr>
<h3><strong>总结</strong></h3>
<ul>
<li><strong>需求管理</strong> 是项目成功的起点，确保“做正确的事”。  </li>
<li><strong>软件管理</strong> 是技术落地的保障，确保“正确地做事”。  </li>
<li><strong>项目管理</strong> 是全局协调的核心，确保“高效地完成事”。  </li>
<li><strong>三者协同</strong>：通过工具链整合（如 JIRA + GitLab + Jenkins）、流程标准化（如敏捷框架），实现从需求到交付的端到端管理。</li>
</ul>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/bigdata/manage#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67d2e0e9cbfe04979909fe48</guid>
  <category>Post</category>
<category>大数据</category>
 </item>
  <item>
    <title>场贩专辑《竹夜阑歌》试听</title>
    <link>https://jupiter-smile.cn/posts/2ciyuan/zhuyelange</link>
    <pubDate>Mon, 24 Feb 2025 13:27:04 GMT</pubDate>
    <description>
cp30场贩专辑《竹夜阑歌》试听</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/2ciyuan/zhuyelange'>https://jupiter-smile.cn/posts/2ciyuan/zhuyelange</a></blockquote>
      <iframe src="//player.bilibili.com/player.html?isOutside=true&aid=113208559929428&bvid=BV1jLsZeLEBB&cid=26027886025&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" flex-direction="row" align-items="center" display="flex" allowfullscreen="true"></iframe>
cp30场贩专辑《竹夜阑歌》试听
      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/2ciyuan/zhuyelange#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67bc73a88cf9a32be983c973</guid>
  <category>Post</category>
<category>二次元</category>
 </item>
  <item>
    <title>明日方舟，祝大家新年快乐</title>
    <link>https://jupiter-smile.cn/posts/2ciyuan/music</link>
    <pubDate>Mon, 24 Feb 2025 13:21:35 GMT</pubDate>
    <description>
感谢明日方舟，祝大家新年快乐哈~</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/2ciyuan/music'>https://jupiter-smile.cn/posts/2ciyuan/music</a></blockquote>
      <iframe src="//player.bilibili.com/player.html?isOutside=true&aid=113875420775735&bvid=BV1EAfiY9ESn&cid=28026800699&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" width="800" height="600" allowfullscreen="true"></iframe>
感谢明日方舟，祝大家新年快乐哈~
      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/2ciyuan/music#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67bc68b08cf9a32be983c42d</guid>
  <category>Post</category>
<category>二次元</category>
 </item>
  <item>
    <title>CP30战利品</title>
    <link>https://jupiter-smile.cn/posts/CP30/CP30</link>
    <pubDate>Sun, 20 Oct 2024 12:51:29 GMT</pubDate>
    <description>CP30战利品：
全景图
串串乐
迷宫饭
竹夜阑歌CD
散猫猫流麻
小卡明信片
Fate吧唧
其他小</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/CP30/CP30'>https://jupiter-smile.cn/posts/CP30/CP30</a></blockquote>
      <p>CP30战利品： 
<img src="https://jupiter-smile.cn/api/v2/objects/icon/21yeodzqw3mjz9hidk.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/rb4azmfsdo98lhkekh.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/nx9i9ic6v9wbdx1b34.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/ai6vdn4dnypfemxym6.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/vobdykg92fah8x2v1u.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/eflphb52cy5ptblbiu.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/ie3kx4rdagox7a442v.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/2v7l3j8n82kcxu9r0g.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/n2hwlkh40dwu4g33r9.png"/></p>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/CP30/CP30#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">6714fcd13d47d119895c0a9a</guid>
  <category>Post</category>
<category>CP30</category>
 </item>
  <item>
    <title>桌面二次元</title>
    <link>https://jupiter-smile.cn/posts/2ciyuan/zhuomian</link>
    <pubDate>Sun, 20 Oct 2024 12:26:42 GMT</pubDate>
    <description>我的桌面：
各种谷子
各种挂件
各种吧唧</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://jupiter-smile.cn/posts/2ciyuan/zhuomian'>https://jupiter-smile.cn/posts/2ciyuan/zhuomian</a></blockquote>
      <p>我的桌面： 
<img src="https://jupiter-smile.cn/api/v2/objects/icon/oh8fvdbvp0i3yrmxv3.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/kdld0qyhkwd5vsv2tv.png"/>
<img src="https://jupiter-smile.cn/api/v2/objects/icon/5h8mu4v2zlkwk6ibvp.png"/></p>

      <p style='text-align: right'>
      <a href='https://jupiter-smile.cn/posts/2ciyuan/zhuomian#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">6714f7023d47d119895c094e</guid>
  <category>Post</category>
<category>二次元</category>
 </item>
  
</channel>
</rss>