<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>山風閣</title>
  <icon>https://blog.sunlan.me/icon.png</icon>
  <subtitle>Daniel Sun&#39;s Tech Vision</subtitle>
  <link href="https://blog.sunlan.me/atom.xml" rel="self"/>
  
  <link href="https://blog.sunlan.me/"/>
  <updated>2025-10-12T15:09:43.933Z</updated>
  <id>https://blog.sunlan.me/</id>
  
  <author>
    <name>孙岚</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>清除GitHub幽灵通知</title>
    <link href="https://blog.sunlan.me/2025/10/13/%E6%B8%85%E9%99%A4GitHub%E5%B9%BD%E7%81%B5%E9%80%9A%E7%9F%A5/"/>
    <id>https://blog.sunlan.me/2025/10/13/%E6%B8%85%E9%99%A4GitHub%E5%B9%BD%E7%81%B5%E9%80%9A%E7%9F%A5/</id>
    <published>2025-10-12T15:52:12.000Z</published>
    <updated>2025-10-12T15:09:43.933Z</updated>
    
    
    <summary type="html">&lt;p&gt;近日来，GitHub上出现了一些幽灵通知（Ghost Notifications），这些幽灵通知通常来自已经被删除或转移的仓库，导致用户无法通过常规方式清除，进而带来了不少困扰。由于GitHub官方未能及时处理，忍耐一段时间后，终于忍无可忍。经查阅GitHub上的资料，并做了诸多尝试后，发现以下步骤对Chrome用户行之有效：</summary>
    
    
    
    <category term="其他" scheme="https://blog.sunlan.me/categories/%E5%85%B6%E4%BB%96/"/>
    
    
    <category term="GitHub" scheme="https://blog.sunlan.me/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>漫谈现代架构原则</title>
    <link href="https://blog.sunlan.me/2025/06/08/%E6%BC%AB%E8%B0%88%E7%8E%B0%E4%BB%A3%E6%9E%B6%E6%9E%84%E5%8E%9F%E5%88%99/"/>
    <id>https://blog.sunlan.me/2025/06/08/%E6%BC%AB%E8%B0%88%E7%8E%B0%E4%BB%A3%E6%9E%B6%E6%9E%84%E5%8E%9F%E5%88%99/</id>
    <published>2025-06-08T14:30:24.000Z</published>
    <updated>2025-07-21T13:31:29.878Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;一、-引言：追求卓越架构&quot;&gt;&lt;a href=&quot;#一、-引言：追求卓越架构&quot; class=&quot;headerlink&quot; title=&quot;一、 引言：追求卓越架构&quot;&gt;&lt;/a&gt;&lt;strong&gt;一、 引言：追求卓越架构&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;软件架构在任何重要软件项目的成功中都扮演着至关重要的角色。它不仅仅是图表和文档的堆砌，更是决定系统可维护性、可扩展性、可测试性以及整体健康状况的基石。在软件开发的征途中，复杂性是与生俱来的挑战。精心设计的架构原则如同罗盘，指引团队穿越迷雾，构建出稳健可靠的系统。&lt;/p&gt;</summary>
    
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/categories/Architecture/"/>
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/tags/Architecture/"/>
    
  </entry>
  
  <entry>
    <title>揭秘JIT编译器</title>
    <link href="https://blog.sunlan.me/2025/05/04/%E6%8F%AD%E7%A7%98JIT%E7%BC%96%E8%AF%91%E5%99%A8/"/>
    <id>https://blog.sunlan.me/2025/05/04/%E6%8F%AD%E7%A7%98JIT%E7%BC%96%E8%AF%91%E5%99%A8/</id>
    <published>2025-05-03T17:52:20.000Z</published>
    <updated>2025-07-21T13:31:29.847Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;Java虚拟机（JVM）是Java生态系统的核心，它不仅提供了跨平台的兼容性，更是Java高性能运行的关键。JVM最初通过解释器执行字节码，这种方式启动快，但对于计算密集型或频繁执行的代码来说，性能并不理想。为了解决这个问题，JVM引入了即时编译（Just-In-Time, JIT）技术。&lt;/p&gt;</summary>
    
    
    
    <category term="Java" scheme="https://blog.sunlan.me/categories/Java/"/>
    
    <category term="JVM" scheme="https://blog.sunlan.me/categories/Java/JVM/"/>
    
    <category term="JIT" scheme="https://blog.sunlan.me/categories/Java/JVM/JIT/"/>
    
    
    <category term="JVM" scheme="https://blog.sunlan.me/tags/JVM/"/>
    
    <category term="Java" scheme="https://blog.sunlan.me/tags/Java/"/>
    
    <category term="JIT" scheme="https://blog.sunlan.me/tags/JIT/"/>
    
  </entry>
  
  <entry>
    <title>如何设计出目标系统架构</title>
    <link href="https://blog.sunlan.me/2025/02/22/%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E5%87%BA%E7%9B%AE%E6%A0%87%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/"/>
    <id>https://blog.sunlan.me/2025/02/22/%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E5%87%BA%E7%9B%AE%E6%A0%87%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/</id>
    <published>2025-02-22T10:31:28.000Z</published>
    <updated>2025-07-21T14:02:34.256Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;引言：架构师的思维模式——从“最好”到“最合适”&quot;&gt;&lt;a href=&quot;#引言：架构师的思维模式——从“最好”到“最合适”&quot; class=&quot;headerlink&quot; title=&quot;引言：架构师的思维模式——从“最好”到“最合适”&quot;&gt;&lt;/a&gt;&lt;strong&gt;引言：架构师的思维模式——从“最好”到“最合适”&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;在系统架构设计的世界里，一个普遍存在却极具误导性的观念是追寻所谓的“最好”架构。然而，经验丰富的架构师都深知一个基本事实：对于任何系统而言，没有最好的架构，只有更合适的架构。系统架构设计并非一项寻找唯一正确答案的纯粹技术活动，它更像一门艺术与科学的结合体，要求我们在性能、成本、可维护性、安全性、上线时间等一系列相互冲突的约束和目标之间，做出审慎的权衡与取舍。&lt;/p&gt;</summary>
    
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/categories/Architecture/"/>
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/tags/Architecture/"/>
    
  </entry>
  
  <entry>
    <title>分享WPS PDF在Ubuntu24.04下的使用要点</title>
    <link href="https://blog.sunlan.me/2024/08/03/%E5%88%86%E4%BA%ABWPS-PDF%E5%9C%A8Ubuntu24-04%E4%B8%8B%E7%9A%84%E4%BD%BF%E7%94%A8%E8%A6%81%E7%82%B9/"/>
    <id>https://blog.sunlan.me/2024/08/03/%E5%88%86%E4%BA%ABWPS-PDF%E5%9C%A8Ubuntu24-04%E4%B8%8B%E7%9A%84%E4%BD%BF%E7%94%A8%E8%A6%81%E7%82%B9/</id>
    <published>2024-08-03T14:51:09.000Z</published>
    <updated>2025-07-21T13:31:29.846Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;WPS是我国民族软件的骄傲，而我自己也是其忠实粉丝，尤其钟爱WPS PDF，可以完全替代Adobe Reader。最近将Ubuntu系统升级至Ubuntu 24.04，发现WPS PDF(2019)无法打开pdf文件，作为一名书虫的我，多少有些不适应。经过一番研究，发现缺失所需的&lt;code&gt;libtiff.so.5&lt;/code&gt;，该问题可以简单地通过以下步骤解决，与君分享。</summary>
    
    
    
    <category term="Linux" scheme="https://blog.sunlan.me/categories/Linux/"/>
    
    
    <category term="WPS" scheme="https://blog.sunlan.me/tags/WPS/"/>
    
    <category term="PDF" scheme="https://blog.sunlan.me/tags/PDF/"/>
    
    <category term="Ubuntu" scheme="https://blog.sunlan.me/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Java各大版本新特性及改进概览</title>
    <link href="https://blog.sunlan.me/2024/07/15/Java%E5%90%84%E5%A4%A7%E7%89%88%E6%9C%AC%E6%96%B0%E7%89%B9%E6%80%A7%E5%8F%8A%E6%94%B9%E8%BF%9B%E6%A6%82%E8%A7%88/"/>
    <id>https://blog.sunlan.me/2024/07/15/Java%E5%90%84%E5%A4%A7%E7%89%88%E6%9C%AC%E6%96%B0%E7%89%B9%E6%80%A7%E5%8F%8A%E6%94%B9%E8%BF%9B%E6%A6%82%E8%A7%88/</id>
    <published>2024-07-14T16:36:08.000Z</published>
    <updated>2025-07-21T14:13:47.657Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;在过去的几年中，Java通过不断的版本更新，持续引入了许多新的特性和改进，令Java语言屹立在编程语言之林。本文将介绍从Java 7到Java 23的主要新特性及改进，回顾Java语言演进的心路历程。</summary>
    
    
    
    <category term="Java" scheme="https://blog.sunlan.me/categories/Java/"/>
    
    
    <category term="Java新特性及改进" scheme="https://blog.sunlan.me/tags/Java%E6%96%B0%E7%89%B9%E6%80%A7%E5%8F%8A%E6%94%B9%E8%BF%9B/"/>
    
  </entry>
  
  <entry>
    <title>GINQ应用之Git统计</title>
    <link href="https://blog.sunlan.me/2024/05/30/GINQ%E5%BA%94%E7%94%A8%E4%B9%8BGit%E7%BB%9F%E8%AE%A1/"/>
    <id>https://blog.sunlan.me/2024/05/30/GINQ%E5%BA%94%E7%94%A8%E4%B9%8BGit%E7%BB%9F%E8%AE%A1/</id>
    <published>2024-05-29T20:45:32.000Z</published>
    <updated>2025-07-21T13:31:29.789Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;GINQ是Groovy 4主要新特性之一，在之前的《&lt;a href=&quot;/2021/05/03/Groovy-4%E4%B9%8B%E6%96%B0%E7%89%B9%E6%80%A7GINQ%E9%A2%84%E8%A7%88/&quot; title=&quot;Groovy 4之新特性GINQ预览&quot;&gt;Groovy 4之新特性GINQ预览&lt;/a&gt;》中已经介绍过其原理和用法。而本文将通过一个Groovy脚本来展示GINQ在实战中的应用。</summary>
    
    
    
    <category term="Groovy" scheme="https://blog.sunlan.me/categories/Groovy/"/>
    
    
    <category term="GINQ" scheme="https://blog.sunlan.me/tags/GINQ/"/>
    
    <category term="Git" scheme="https://blog.sunlan.me/tags/Git/"/>
    
    <category term="统计" scheme="https://blog.sunlan.me/tags/%E7%BB%9F%E8%AE%A1/"/>
    
  </entry>
  
  <entry>
    <title>2024年为何依然选择Groovy</title>
    <link href="https://blog.sunlan.me/2024/05/23/2024%E5%B9%B4%E4%B8%BA%E4%BD%95%E4%BE%9D%E7%84%B6%E9%80%89%E6%8B%A9Groovy/"/>
    <id>https://blog.sunlan.me/2024/05/23/2024%E5%B9%B4%E4%B8%BA%E4%BD%95%E4%BE%9D%E7%84%B6%E9%80%89%E6%8B%A9Groovy/</id>
    <published>2024-05-22T17:37:31.000Z</published>
    <updated>2025-07-21T13:31:29.777Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;Groovy语言在简洁性、灵活性和功能特性等方面具备独特优势，使其在2024年依然是开发者值得掌握的编程语言。</summary>
    
    
    
    <category term="Groovy" scheme="https://blog.sunlan.me/categories/Groovy/"/>
    
    
    <category term="Groovy优势" scheme="https://blog.sunlan.me/tags/Groovy%E4%BC%98%E5%8A%BF/"/>
    
    <category term="扩展方法" scheme="https://blog.sunlan.me/tags/%E6%89%A9%E5%B1%95%E6%96%B9%E6%B3%95/"/>
    
    <category term="操作符重载" scheme="https://blog.sunlan.me/tags/%E6%93%8D%E4%BD%9C%E7%AC%A6%E9%87%8D%E8%BD%BD/"/>
    
    <category term="AST转换" scheme="https://blog.sunlan.me/tags/AST%E8%BD%AC%E6%8D%A2/"/>
    
  </entry>
  
  <entry>
    <title>浅谈TCP三次握手和四次挥手</title>
    <link href="https://blog.sunlan.me/2024/05/18/%E6%B5%85%E8%B0%88TCP%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B/"/>
    <id>https://blog.sunlan.me/2024/05/18/%E6%B5%85%E8%B0%88TCP%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B/</id>
    <published>2024-05-17T17:42:18.000Z</published>
    <updated>2025-07-21T13:31:29.849Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;在计算机网络中，TCP是实现可靠数据传输的重要协议。TCP通过三次握手（Three-Way Handshake）来建立连接，通过四次挥手（Four-Way Termination）来终止连接，确保数据传输的可靠性和连接管理的完整性。三次握手确保双方在通信前建立同步连接，防止重复数据包的干扰，确保序列号的同步。四次挥手则确保双方在连接终止时都能完全释放资源，防止数据丢失，并确保网络中不存在旧的数据包，从而避免新的连接受到干扰。理解这些过程对于排查网络问题和设计可靠的网络应用至关重要。</summary>
    
    
    
    <category term="Network" scheme="https://blog.sunlan.me/categories/Network/"/>
    
    
    <category term="Network" scheme="https://blog.sunlan.me/tags/Network/"/>
    
    <category term="三次握手" scheme="https://blog.sunlan.me/tags/%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B/"/>
    
    <category term="四次挥手" scheme="https://blog.sunlan.me/tags/%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B/"/>
    
  </entry>
  
  <entry>
    <title>企业总体架构管控原则</title>
    <link href="https://blog.sunlan.me/2024/03/16/%E4%BC%81%E4%B8%9A%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84%E7%AE%A1%E6%8E%A7%E5%8E%9F%E5%88%99/"/>
    <id>https://blog.sunlan.me/2024/03/16/%E4%BC%81%E4%B8%9A%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84%E7%AE%A1%E6%8E%A7%E5%8E%9F%E5%88%99/</id>
    <published>2024-03-15T18:23:33.000Z</published>
    <updated>2025-07-21T13:31:29.846Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;总体架构管控原则是指导企业在架构规划、设计、实施和维护全过程中应遵循的基本规则，以确保架构的一致性、可靠性和有效性。这些原则有助于企业高效管理其信息技术资源，支持业务战略的实现，并提高组织的灵活性和响应速度。</summary>
    
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/categories/Architecture/"/>
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/tags/Architecture/"/>
    
    <category term="Governance" scheme="https://blog.sunlan.me/tags/Governance/"/>
    
  </entry>
  
  <entry>
    <title>浅谈网络架构分层设计</title>
    <link href="https://blog.sunlan.me/2023/12/18/%E6%B5%85%E8%B0%88%E7%BD%91%E7%BB%9C%E6%9E%B6%E6%9E%84%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1/"/>
    <id>https://blog.sunlan.me/2023/12/18/%E6%B5%85%E8%B0%88%E7%BD%91%E7%BB%9C%E6%9E%B6%E6%9E%84%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1/</id>
    <published>2023-12-17T17:41:45.000Z</published>
    <updated>2025-07-21T13:31:29.851Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;在现代银行系统中，网络架构的设计至关重要，尤其是在处理大量数据和维护安全性方面。这种架构通常分为三层：接入层、汇聚层和核心层。接入层主要负责将终端用户设备连接到网络，并注重安全性和服务质量。汇聚层作为桥梁，处理更复杂的路由和交换决策，确保数据的高效流动。核心层则是网络的中心，处理高速数据传输和大量网络流量，对银行的关键业务数据和交易处理至关重要。每一层都采用特定的交换机和技术来满足其功能需求，确保整个网络的高效和安全运行。</summary>
    
    
    
    <category term="Network" scheme="https://blog.sunlan.me/categories/Network/"/>
    
    
    <category term="Network" scheme="https://blog.sunlan.me/tags/Network/"/>
    
    <category term="Access Layer" scheme="https://blog.sunlan.me/tags/Access-Layer/"/>
    
    <category term="Distribution Layer" scheme="https://blog.sunlan.me/tags/Distribution-Layer/"/>
    
    <category term="Core Layer" scheme="https://blog.sunlan.me/tags/Core-Layer/"/>
    
  </entry>
  
  <entry>
    <title>浅谈Raft共识算法</title>
    <link href="https://blog.sunlan.me/2023/12/11/%E6%B5%85%E8%B0%88Raft%E5%85%B1%E8%AF%86%E7%AE%97%E6%B3%95/"/>
    <id>https://blog.sunlan.me/2023/12/11/%E6%B5%85%E8%B0%88Raft%E5%85%B1%E8%AF%86%E7%AE%97%E6%B3%95/</id>
    <published>2023-12-10T19:59:34.000Z</published>
    <updated>2025-07-21T13:31:29.849Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;Raft算法是一种分布式系统中用于实现一致性的共识算法，主要目标是确保在分布式环境中数据的一致性。在分布式系统中，多个节点需要协作处理操作和存储数据，而Raft算法提供了一种有效的方法来协调这些节点，确保整个系统的稳定性和可靠性。&lt;/p&gt;
&lt;p&gt;Raft算法的设计哲学强调了易理解性和可操作性。与其他分布式一致性算法（如Paxos）相比，Raft更易于理解和实现，这使得它成为学习和实践分布式系统的理想选择。Raft通过将共识问题分解为几个相对简单的子问题（如领导选举、日志复制等）来降低复杂性。&lt;/p&gt;
&lt;p&gt;Raft的核心在于将所有复杂的分布式一致性问题归结为一系列基本的操作和规则，这些操作和规则涵盖了领导选举、日志复制和安全性保证。通过这些机制，Raft确保即便在节点故障或网络问题的情况下，系统状态也能保持一致和完整。&lt;/p&gt;
&lt;p&gt;Raft算法广泛应用于各种分布式系统和服务中，特别是在需要高可用性和一致性保证的场景。例如，它被用于分布式数据库、分布式文件系统、云计算服务等多个领域。</summary>
    
    
    
    <category term="Distributed System" scheme="https://blog.sunlan.me/categories/Distributed-System/"/>
    
    
    <category term="Consensus" scheme="https://blog.sunlan.me/tags/Consensus/"/>
    
    <category term="Raft" scheme="https://blog.sunlan.me/tags/Raft/"/>
    
  </entry>
  
  <entry>
    <title>浅谈数据架构及实践</title>
    <link href="https://blog.sunlan.me/2023/12/03/%E6%B5%85%E8%B0%88%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84%E5%8F%8A%E5%AE%9E%E8%B7%B5/"/>
    <id>https://blog.sunlan.me/2023/12/03/%E6%B5%85%E8%B0%88%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84%E5%8F%8A%E5%AE%9E%E8%B7%B5/</id>
    <published>2023-12-03T14:57:27.000Z</published>
    <updated>2025-07-21T13:31:29.851Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;在当今的数字化时代，企业级数据架构对于各行各业来说都是至关重要的。它不仅涉及数据的有效管理和利用，还直接影响到业务决策、操作效率和合规性。本文旨在探讨数据标准化、数据分布、数据生命周期管理、数据模型构建、数据安全和数据治理等关键方面，强调它们对于实现数据资产最大化的重要性，并提供具体的应用示例。</summary>
    
    
    
    <category term="Architecture" scheme="https://blog.sunlan.me/categories/Architecture/"/>
    
    <category term="Data Architecture" scheme="https://blog.sunlan.me/categories/Architecture/Data-Architecture/"/>
    
    
    <category term="Data Architecture" scheme="https://blog.sunlan.me/tags/Data-Architecture/"/>
    
  </entry>
  
  <entry>
    <title>浅谈数据仓库的分层设计</title>
    <link href="https://blog.sunlan.me/2023/11/20/%E6%B5%85%E8%B0%88%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93%E7%9A%84%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1/"/>
    <id>https://blog.sunlan.me/2023/11/20/%E6%B5%85%E8%B0%88%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93%E7%9A%84%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1/</id>
    <published>2023-11-19T17:48:17.000Z</published>
    <updated>2025-07-21T13:31:29.851Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;在构建现代数据仓库(Data Warehouse)时，分层设计方法不仅提高了数据处理的效率和质量，还增加了系统的灵活性和可扩展性，对于各种类型的业务环境都至关重要。</summary>
    
    
    
    <category term="Data Warehouse" scheme="https://blog.sunlan.me/categories/Data-Warehouse/"/>
    
    
    <category term="Data Warehouse" scheme="https://blog.sunlan.me/tags/Data-Warehouse/"/>
    
    <category term="ODS" scheme="https://blog.sunlan.me/tags/ODS/"/>
    
    <category term="DWD" scheme="https://blog.sunlan.me/tags/DWD/"/>
    
    <category term="DWM" scheme="https://blog.sunlan.me/tags/DWM/"/>
    
    <category term="DWB" scheme="https://blog.sunlan.me/tags/DWB/"/>
    
    <category term="DWS" scheme="https://blog.sunlan.me/tags/DWS/"/>
    
    <category term="ADS" scheme="https://blog.sunlan.me/tags/ADS/"/>
    
  </entry>
  
  <entry>
    <title>浅谈Java字节码</title>
    <link href="https://blog.sunlan.me/2023/11/14/%E6%B5%85%E8%B0%88Java%E5%AD%97%E8%8A%82%E7%A0%81/"/>
    <id>https://blog.sunlan.me/2023/11/14/%E6%B5%85%E8%B0%88Java%E5%AD%97%E8%8A%82%E7%A0%81/</id>
    <published>2023-11-13T16:08:36.000Z</published>
    <updated>2025-07-21T13:31:29.848Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;Java字节码（bytecode）是一种低级的、类似于汇编语言的代码，用于指导JVM如何执行Java程序。每条字节码指令通常对应一项简单的操作，比如加载数据、运算、控制流转移等。字节码既不是机器代码，也不是高级语言代码，而是介于两者之间的中间表示。它是Java源代码在编译后的中间表示形式，使Java能够实现“一次编写，到处运行”的理念。&lt;/p&gt;</summary>
    
    
    
    <category term="Java" scheme="https://blog.sunlan.me/categories/Java/"/>
    
    <category term="JVM" scheme="https://blog.sunlan.me/categories/Java/JVM/"/>
    
    
    <category term="Java" scheme="https://blog.sunlan.me/tags/Java/"/>
    
    <category term="bytecode" scheme="https://blog.sunlan.me/tags/bytecode/"/>
    
  </entry>
  
  <entry>
    <title>浅谈Java锁机制</title>
    <link href="https://blog.sunlan.me/2023/11/13/%E6%B5%85%E8%B0%88Java%E9%94%81%E6%9C%BA%E5%88%B6/"/>
    <id>https://blog.sunlan.me/2023/11/13/%E6%B5%85%E8%B0%88Java%E9%94%81%E6%9C%BA%E5%88%B6/</id>
    <published>2023-11-12T20:24:07.000Z</published>
    <updated>2025-07-21T13:31:29.849Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;Java并发编程中的锁机制是保证多线程安全的关键。本文将探讨Java中的无锁、偏向锁、轻量级锁、重量级锁。同时，我们也会比较这些锁与 &lt;code&gt;java.util.concurrent&lt;/code&gt; 包中的 &lt;code&gt;Lock&lt;/code&gt; 类之间的差异。</summary>
    
    
    
    <category term="Java" scheme="https://blog.sunlan.me/categories/Java/"/>
    
    
    <category term="Java" scheme="https://blog.sunlan.me/tags/Java/"/>
    
    <category term="synchronized" scheme="https://blog.sunlan.me/tags/synchronized/"/>
    
    <category term="Lock" scheme="https://blog.sunlan.me/tags/Lock/"/>
    
  </entry>
  
  <entry>
    <title>探究Java Virtual Thread</title>
    <link href="https://blog.sunlan.me/2023/03/10/%E6%8E%A2%E7%A9%B6Java-Virtual-Thread/"/>
    <id>https://blog.sunlan.me/2023/03/10/%E6%8E%A2%E7%A9%B6Java-Virtual-Thread/</id>
    <published>2023-03-10T03:48:56.000Z</published>
    <updated>2025-07-21T13:31:29.846Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;虚拟线程（Virtual Thread）是一种用户态轻量级线程，它在Project Loom中孵化了很久，最早以预览特性的形式出现在Java 19中。它的实现基于协程（Coroutine）的概念，而协程是一种轻量级的线程模型，在一个传统的Java线程内可以运行多个虚拟线程，每个虚拟线程都有自己的执行上下文。虚拟线程的引入旨在解决传统线程的一些问题，比如：线程创建和上下文切换的成本过高等。</summary>
    
    
    
    <category term="Java" scheme="https://blog.sunlan.me/categories/Java/"/>
    
    
    <category term="Virtual Thread" scheme="https://blog.sunlan.me/tags/Virtual-Thread/"/>
    
    <category term="Platform Thread" scheme="https://blog.sunlan.me/tags/Platform-Thread/"/>
    
    <category term="Native Thread" scheme="https://blog.sunlan.me/tags/Native-Thread/"/>
    
    <category term="Concurrent Programming" scheme="https://blog.sunlan.me/tags/Concurrent-Programming/"/>
    
    <category term="Coroutine" scheme="https://blog.sunlan.me/tags/Coroutine/"/>
    
    <category term="Loom" scheme="https://blog.sunlan.me/tags/Loom/"/>
    
  </entry>
  
  <entry>
    <title>浅谈设计模式·驾驭变化之道（创建型模式篇）</title>
    <link href="https://blog.sunlan.me/2023/02/18/%E6%B5%85%E8%B0%88%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%C2%B7%E9%A9%BE%E9%A9%AD%E5%8F%98%E5%8C%96%E4%B9%8B%E9%81%93%EF%BC%88%E5%88%9B%E5%BB%BA%E5%9E%8B%E6%A8%A1%E5%BC%8F%E7%AF%87%EF%BC%89/"/>
    <id>https://blog.sunlan.me/2023/02/18/%E6%B5%85%E8%B0%88%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%C2%B7%E9%A9%BE%E9%A9%AD%E5%8F%98%E5%8C%96%E4%B9%8B%E9%81%93%EF%BC%88%E5%88%9B%E5%BB%BA%E5%9E%8B%E6%A8%A1%E5%BC%8F%E7%AF%87%EF%BC%89/</id>
    <published>2023-02-18T09:14:54.000Z</published>
    <updated>2025-07-21T13:31:29.852Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;创建型模式概述&quot;&gt;&lt;a href=&quot;#创建型模式概述&quot; class=&quot;headerlink&quot; title=&quot;创建型模式概述&quot;&gt;&lt;/a&gt;创建型模式概述&lt;/h2&gt;&lt;p&gt;创建型模式是处理对象创建的设计模式，试图根据实际情况使用合适的方式创建对象，因为基本的对象创建方式可能会导致设计上的问题，或增加设计的复杂度。创建型模式的关注点是如何创建对象，其核心思想是要把对象的创建和使用相分离。&lt;/p&gt;
&lt;p&gt;创建型模式旨在将系统与它的对象创建、结合、表示的方式分离。这些设计模式在对象创建的类型、主体、方式、时间等方面提高了系统的灵活性。&lt;/p&gt;
&lt;p&gt;创建型模式由两个主导思想构成：一是将系统使用的具体类封装起来，二是隐藏这些具体类的实例创建的方式。创建型模式又分为对象创建型模式和类创建型模式。对象创建型模式处理对象的创建，类创建型模式处理类的创建。详细地说，对象创建型模式把对象创建的一部分推迟到另一个对象中，而类创建型模式将它对象的创建推迟到子类中。&lt;/p&gt;</summary>
    
    
    
    <category term="Design Pattern" scheme="https://blog.sunlan.me/categories/Design-Pattern/"/>
    
    
    <category term="Design Pattern" scheme="https://blog.sunlan.me/tags/Design-Pattern/"/>
    
    <category term="Creational Pattern" scheme="https://blog.sunlan.me/tags/Creational-Pattern/"/>
    
    <category term="Factory Method Pattern" scheme="https://blog.sunlan.me/tags/Factory-Method-Pattern/"/>
    
    <category term="Abstract Factory Pattern" scheme="https://blog.sunlan.me/tags/Abstract-Factory-Pattern/"/>
    
    <category term="Builder Pattern" scheme="https://blog.sunlan.me/tags/Builder-Pattern/"/>
    
    <category term="Prototype Pattern" scheme="https://blog.sunlan.me/tags/Prototype-Pattern/"/>
    
    <category term="Singleton Pattern" scheme="https://blog.sunlan.me/tags/Singleton-Pattern/"/>
    
  </entry>
  
  <entry>
    <title>浅谈设计模式·驾驭变化之道（概览篇）</title>
    <link href="https://blog.sunlan.me/2023/02/12/%E6%B5%85%E8%B0%88%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%C2%B7%E9%A9%BE%E9%A9%AD%E5%8F%98%E5%8C%96%E4%B9%8B%E9%81%93%EF%BC%88%E6%A6%82%E8%A7%88%E7%AF%87%EF%BC%89/"/>
    <id>https://blog.sunlan.me/2023/02/12/%E6%B5%85%E8%B0%88%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%C2%B7%E9%A9%BE%E9%A9%AD%E5%8F%98%E5%8C%96%E4%B9%8B%E9%81%93%EF%BC%88%E6%A6%82%E8%A7%88%E7%AF%87%EF%BC%89/</id>
    <published>2023-02-12T12:56:35.000Z</published>
    <updated>2025-07-21T13:31:29.854Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;设计模式概述&quot;&gt;&lt;a href=&quot;#设计模式概述&quot; class=&quot;headerlink&quot; title=&quot;设计模式概述&quot;&gt;&lt;/a&gt;设计模式概述&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;设计模式（Design Pattern）是针对软件设计中普遍存在（反复出现）的各种问题所提出的解决方案；&lt;/li&gt;
&lt;li&gt;该术语由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides等人在1990年代从建筑设计领域引入到计算机科学，而该4人被称为Gang of Four（简称GoF）。</summary>
    
    
    
    <category term="Design Pattern" scheme="https://blog.sunlan.me/categories/Design-Pattern/"/>
    
    
    <category term="Design Pattern" scheme="https://blog.sunlan.me/tags/Design-Pattern/"/>
    
    <category term="Creational Pattern" scheme="https://blog.sunlan.me/tags/Creational-Pattern/"/>
    
    <category term="Structural Pattern" scheme="https://blog.sunlan.me/tags/Structural-Pattern/"/>
    
    <category term="Behavioral Pattern" scheme="https://blog.sunlan.me/tags/Behavioral-Pattern/"/>
    
    <category term="GoF" scheme="https://blog.sunlan.me/tags/GoF/"/>
    
  </entry>
  
  <entry>
    <title>GroovyHelp之怀旧归档篇</title>
    <link href="https://blog.sunlan.me/2023/01/27/GroovyHelp%E4%B9%8B%E6%80%80%E6%97%A7%E5%BD%92%E6%A1%A3%E7%AF%87/"/>
    <id>https://blog.sunlan.me/2023/01/27/GroovyHelp%E4%B9%8B%E6%80%80%E6%97%A7%E5%BD%92%E6%A1%A3%E7%AF%87/</id>
    <published>2023-01-26T16:16:08.000Z</published>
    <updated>2025-07-21T13:31:29.790Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;GroovyHelp简介&quot;&gt;&lt;a href=&quot;#GroovyHelp简介&quot; class=&quot;headerlink&quot; title=&quot;GroovyHelp简介&quot;&gt;&lt;/a&gt;GroovyHelp简介&lt;/h2&gt;&lt;p&gt;&amp;emsp;&amp;emsp;GroovyHelp是一款针对&lt;strong&gt;Javadoc&lt;/strong&gt;及&lt;strong&gt;Groovydoc&lt;/strong&gt;研发的多功能API文档管理软件，它能够帮助&lt;strong&gt;Java开发人员&lt;/strong&gt;、&lt;strong&gt;Groovy开发人员&lt;/strong&gt;以及&lt;strong&gt;Android开发人员&lt;/strong&gt;方便快速地&lt;strong&gt;搜索&lt;/strong&gt;、&lt;strong&gt;查阅&lt;/strong&gt;、&lt;strong&gt;比较&lt;/strong&gt;API文档并对其进行高效管理，从此无需苦苦寻觅chm格式的帮助文档了。可访问&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbnN1bi9ncm9vdnloZWxw&quot;&gt;GroovyHelp项目首页&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;，获悉GroovyHelp最新信息。</summary>
    
    
    
    <category term="Tool" scheme="https://blog.sunlan.me/categories/Tool/"/>
    
    
    <category term="GroovyHelp" scheme="https://blog.sunlan.me/tags/GroovyHelp/"/>
    
    <category term="Javadoc" scheme="https://blog.sunlan.me/tags/Javadoc/"/>
    
    <category term="Groovydoc" scheme="https://blog.sunlan.me/tags/Groovydoc/"/>
    
  </entry>
  
</feed>
