<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>博客 on Liuqichun&#39;s Blog</title>
    <link>https://liuqichun.cn/blog/</link>
    <description>Recent content in 博客 on Liuqichun&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <copyright>Copyright © 2026, 刘启春.</copyright>
    <lastBuildDate>Fri, 02 May 2025 18:25:29 +0800</lastBuildDate>
    <atom:link href="https://liuqichun.cn/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>流媒体技术方案</title>
      <link>https://liuqichun.cn/blog/livestream-tech/</link>
      <pubDate>Fri, 02 May 2025 18:25:29 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/livestream-tech/</guid>
      <description>&lt;p&gt;本文主要介绍流媒体的概念、协议与编码技术，并对点播与直播场景的差异以及 Web 端支持与限制展开分析，为满足实时互动与低延迟需求提供参考。&lt;/p&gt;&#xA;&lt;p&gt;TIP：「流媒体方案」为重点章节。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基础概念&#34;&gt;基础概念&lt;/h2&gt;&#xA;&lt;p&gt;什么是流媒体？&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;流媒体是一种通过互联网实时传输音频、视频或其他多媒体内容的技术。与传统的下载模式不同，流媒体允许用户在内容未完全下载的情况下，即时播放或观看内容。它的核心特点是数据会以连续的流形式传输到用户的设备上，而不是一次性下载整个文件。&lt;/p&gt;&#xA;&lt;p&gt;常见的流媒体应用包括视频流媒体（如 Netflix、YouTube）、音频流媒体（如 Spotify、Apple Music）以及实时直播（如 Twitch、抖音直播）。流媒体技术的优势在于节省存储空间、减少等待时间，并能够支持实时互动和广播。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Elasticsearch Mapping</title>
      <link>https://liuqichun.cn/blog/es-mapping/</link>
      <pubDate>Mon, 04 Nov 2024 21:16:42 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/es-mapping/</guid>
      <description>&lt;p&gt;Elasticsearch Mapping 类似关系数据库的 schema（模式），Mapping 记录了索引的字段、字段数据类型，以及 Lucene 是怎样索引数据的。&lt;/p&gt;&#xA;&lt;p&gt;在给新业务数据建索引时，需要进行的第一步就是 Mapping 设计。许多人不重视这个环节，数据量增大后就暴露出了问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elasticsearch 创建索引</title>
      <link>https://liuqichun.cn/blog/create-index/</link>
      <pubDate>Sat, 02 Nov 2024 23:59:00 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/create-index/</guid>
      <description>&lt;p&gt;创建索引通常需要指定三部分内容：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;settings：索引配置，如索引分片数、副本数、索引刷新时长等&lt;/li&gt;&#xA;&lt;li&gt;mappings：索引字段的映射（mapping）&lt;/li&gt;&#xA;&lt;li&gt;aliases：索引的别名&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#062873;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#062873;font-weight:bold&#34;&gt;&amp;#34;mappings&amp;#34;&lt;/span&gt;: {},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#062873;font-weight:bold&#34;&gt;&amp;#34;aliases&amp;#34;&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>简明 Elasticsearch 8x 安装教程</title>
      <link>https://liuqichun.cn/blog/install-es-kibana-guide/</link>
      <pubDate>Fri, 01 Nov 2024 16:50:54 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/install-es-kibana-guide/</guid>
      <description>&lt;p&gt;Elasticsearch 8.x 默认开启了安全功能，在远程服务器配置多实例时很容易安装失败。官方的教程只适合本地单实例启动，对于那些想探索 Elasticsearch 高级特性的人需要折腾好一阵，不知折戟沉沙了多少人。&lt;/p&gt;&#xA;&lt;p&gt;本文主要介绍多实例 Elasticsearch 集群搭建，最后安装 Kibana 实现查询管理。&lt;/p&gt;&#xA;&lt;p&gt;注意本教程的软件版本，后期的版本可能不适用。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Elasticsearch &amp;amp; Kibana：8.15.3&lt;/li&gt;&#xA;&lt;li&gt;OS：CentOS 7&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Redis 实现发布订阅</title>
      <link>https://liuqichun.cn/blog/redis-pub-sub/</link>
      <pubDate>Wed, 07 Aug 2024 22:48:13 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/redis-pub-sub/</guid>
      <description>&lt;p&gt;发布订阅（pub/sub）是一种&lt;strong&gt;消息通信模式&lt;/strong&gt;，本质是实现队列（先进先出）的远程操作功能。&lt;/p&gt;&#xA;&lt;p&gt;使用 redis 实现发布订阅有 3 种方式：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;使用列表（list）数据结构，通过 lpush、rpop（brpop）实现队列先进先出&lt;/li&gt;&#xA;&lt;li&gt;使用 redis 发布/订阅功能&lt;/li&gt;&#xA;&lt;li&gt;使用 redis 5.0 stream 数据结构（功能）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;结论：虽然 redis 可以作为消息队列，但是严谨的生产环境还是应该选择专业的 MQ，因为可靠性是软件的基石。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis 缓存淘汰策略</title>
      <link>https://liuqichun.cn/blog/redis-elimination/</link>
      <pubDate>Sun, 04 Aug 2024 22:36:05 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/redis-elimination/</guid>
      <description>&lt;p&gt;Redis 有三种缓存淘汰策略，分别是 noeviction、volatile、allkeys。&lt;/p&gt;</description>
    </item>
    <item>
      <title>QPS、TPS、吞吐量的思考</title>
      <link>https://liuqichun.cn/blog/tps-qps-thrpt/</link>
      <pubDate>Sat, 03 Aug 2024 21:38:12 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/tps-qps-thrpt/</guid>
      <description>&lt;p&gt;无论前后端，大家在提到性能时总爱用 QPS，这样表达性能合理吗？&lt;/p&gt;&#xA;&lt;p&gt;QPS 与 TPS，它们的区别是什么？&lt;/p&gt;&#xA;&lt;p&gt;本文围绕这些问题展开。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 协程</title>
      <link>https://liuqichun.cn/blog/20240714-java-coroutine/</link>
      <pubDate>Sun, 14 Jul 2024 18:55:49 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/20240714-java-coroutine/</guid>
      <description>&lt;p&gt;协程本质上和线程是一类概念，是编程过程中对并发计算任务的一种抽象，只不过协程在调度层面上更轻量。&lt;/p&gt;&#xA;&lt;p&gt;线程的调度由于是操作系统实施的，有时间片/中断等较为复杂的机制，因此调度点对用户是透明的，可以认为调度理论上可以在任何地方触发。而协程的调度点往往由用户代码显式触发（发生在用户态），需要用户代码自己相互“协作”来完成任务的调度和执行，这也是协程中「协」的来源。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kafka Rebalance</title>
      <link>https://liuqichun.cn/blog/kafka-rebalance/</link>
      <pubDate>Thu, 13 Jun 2024 17:57:55 +0000</pubDate>
      <guid>https://liuqichun.cn/blog/kafka-rebalance/</guid>
      <description>&lt;p&gt;Rebalance 是指，将一个 Topic 下的&lt;strong&gt;多个队列&lt;/strong&gt;，在同一个&lt;strong&gt;消费组的多个成员&lt;/strong&gt;之间进行重新分配。&lt;/p&gt;&#xA;&lt;p&gt;比如，一个 Topic 下 8 个队列，只有一个消费者时，一个消费者将处理 8 个队列的消息。如果在组内增加一个消费者，在不重启服务的情况下，将 8 个队列分配给两个消费者，从而支持动态并行处理消息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>摘｜具有适应性的复杂系统</title>
      <link>https://liuqichun.cn/blog/ref-1-continuous-api-management/</link>
      <pubDate>Sat, 29 Apr 2023 22:32:06 +0800</pubDate>
      <guid>https://liuqichun.cn/blog/ref-1-continuous-api-management/</guid>
      <description>&lt;p&gt;当我们说一个组织是一个具有适应性的复杂系统时，我们指的是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;它包含许多相互&lt;strong&gt;依赖&lt;/strong&gt;的部分（比如人员、技术、流程、文化等）。&lt;/li&gt;&#xA;&lt;li&gt;各个部分可以&lt;strong&gt;自行&lt;/strong&gt;改变自己的行为，并适应系统的变化。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;宇宙中充满了这类系统，而且关于复杂性的研究已成为一门成熟的科学学科。&#xA;&lt;strong&gt;就连你自己也是一个具有适应性的复杂系统&lt;/strong&gt;。你可能认为自己是一个单元（即一个自我），但是“自我”只是一种抽象。实际上，你是有机细胞的集合，尽管这个细胞集合拥有许多惊人的能力：思考、移动、感知，并作为一个全新的整体对外部做出反应。从细胞的角度来说，你的每个细胞都有专门的作用，细胞会进行新陈代谢，细胞群通过协同工作对你的身体产生巨大的影响。你体内生物系统的复杂性使得你的身体具有高度的弹性和适应性。虽然你不能长生不老，但由于体内复杂的生物系统，你仍然可以承受巨大的环境变化，甚至是人身伤害。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
