<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wu&#039;s Blog</title>
	<atom:link href="https://www.wublog.site/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.wublog.site</link>
	<description></description>
	<lastBuildDate>Sun, 18 Jan 2026 06:17:44 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.wublog.site/wp-content/uploads/2026/03/cropped-profile-32x32.jpg</url>
	<title>Wu&#039;s Blog</title>
	<link>https://www.wublog.site</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>HTTPS的加密原理</title>
		<link>https://www.wublog.site/2026/01/17/https%e7%9a%84%e5%8a%a0%e5%af%86%e5%8e%9f%e7%90%86/</link>
					<comments>https://www.wublog.site/2026/01/17/https%e7%9a%84%e5%8a%a0%e5%af%86%e5%8e%9f%e7%90%86/#comments</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 05:59:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=216</guid>

					<description><![CDATA[为什么需要加密？ 因为http的内容是明文传输的，明文数据会经过中间代理服务器、路由器、wifi热点、通信服务 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>为什么需要加密？</strong></h2>



<p class="wp-block-paragraph">因为http的内容是明文传输的，明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点，如果信息在传输过程中被劫持，传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉，这就是<code>中间人攻击</code>。所以我们才需要对信息进行加密。最容易理解的就是<code>对称加密</code>&nbsp;。</p>



<h2 class="wp-block-heading"><strong>什么是对称加密？</strong></h2>



<p class="wp-block-paragraph">简单说就是有一个密钥，它可以加密一段信息，也可以对加密后的信息进行解密，和我们日常生活中用的钥匙作用差不多。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="782" height="343" src="https://www.wublog.site/wp-content/uploads/2026/01/image.png" alt="" class="wp-image-301" srcset="https://www.wublog.site/wp-content/uploads/2026/01/image.png 782w, https://www.wublog.site/wp-content/uploads/2026/01/image-300x132.png 300w, https://www.wublog.site/wp-content/uploads/2026/01/image-768x337.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></figure>



<h2 class="wp-block-heading"><strong>用对称加密可行吗？</strong></h2>



<p class="wp-block-paragraph"><strong>如果通信双方都各自持有同一个密钥，且没有别人知道，这两方的通信安全当然是可以被保证的（除非密钥被破解）。</strong></p>



<p class="wp-block-paragraph">然而最大的问题就是<strong>这个密钥怎么让传输的双方知晓，同时不被别人知道</strong>。如果由服务器生成一个密钥并传输给浏览器，那在这个传输过程中密钥被别人劫持到手了怎么办？之后他就能用密钥解开双方传输的任何内容了，所以这么做当然不行。</p>



<p class="wp-block-paragraph">换种思路？试想一下，如果浏览器内部就预存了网站A的密钥，且可以确保除了浏览器和网站A，不会有任何外人知道该密钥，那理论上用对称加密是可以的，这样浏览器只要预存好世界上所有HTTPS网站的密钥就行了！这么做显然不现实。<br>怎么办？所以我们就需要<code>非对称加密</code>&nbsp;。</p>



<h2 class="wp-block-heading"><strong>什么是非对称加密？</strong></h2>



<p class="wp-block-paragraph">简单说就是有两把密钥，通常一把叫做公钥、一把叫私钥，用公钥加密的内容必须用私钥才能解开，同样，私钥加密的内容只有公钥能解开。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="782" height="343" src="https://www.wublog.site/wp-content/uploads/2026/01/image-1.png" alt="" class="wp-image-302" srcset="https://www.wublog.site/wp-content/uploads/2026/01/image-1.png 782w, https://www.wublog.site/wp-content/uploads/2026/01/image-1-300x132.png 300w, https://www.wublog.site/wp-content/uploads/2026/01/image-1-768x337.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></figure>



<h2 class="wp-block-heading">用非对称加密可行吗？</h2>



<p class="wp-block-paragraph">鉴于非对称加密的机制，我们可能会有这种思路：服务器先把公钥以明文方式传输给浏览器，之后浏览器向服务器传数据前都先用这个公钥加密好再传，这条数据的安全似乎可以保障了！<strong>因为只有服务器有相应的私钥能解开公钥加密的数据</strong>。</p>



<p class="wp-block-paragraph">然而反过来<strong>由服务器到浏览器的这条路怎么保障安全？</strong>如果服务器用它的私钥加密数据传给浏览器，那么浏览器用公钥可以解密它，而这个公钥是一开始通过明文传输给浏览器的，若这个公钥被中间人劫持到了，那他也能用该公钥解密服务器传来的信息了。所以<strong>目前似乎只能保证由浏览器向服务器传输数据的安全性</strong>（其实仍有漏洞，下文会说），那利用这点你能想到什么解决方案吗？</p>



<h2 class="wp-block-heading"><strong>改良的非对称加密方案，似乎可以？</strong></h2>



<p class="wp-block-paragraph">我们已经理解通过一组公钥私钥，可以保证单个方向传输的安全性，那用两组公钥私钥，是否就能保证双向传输都安全了？请看下面的过程：</p>



<ol class="wp-block-list">
<li>某网站服务器拥有公钥A与对应的私钥A’；浏览器拥有公钥B与对应的私钥B’。</li>



<li>浏览器把公钥B明文传输给服务器。</li>



<li>服务器把公钥A明文给传输浏览器。</li>



<li>之后浏览器向服务器传输的内容都用公钥A加密，服务器收到后用私钥A’解密。由于只有服务器拥有私钥A’，所以能保证这条数据的安全。</li>



<li>同理，服务器向浏览器传输的内容都用公钥B加密，浏览器收到后用私钥B’解密。同上也可以保证这条数据的安全。</li>
</ol>



<p class="wp-block-paragraph">的确可以！抛开这里面仍有的漏洞不谈（下文会讲），HTTPS的加密却没使用这种方案，为什么？很重要的原因是非对称加密算法非常耗时，而对称加密快很多。那我们能不能运用非对称加密的特性解决前面提到的对称加密的漏洞？</p>



<h2 class="wp-block-heading"><strong>非对称加密+对称加密？</strong></h2>



<p class="wp-block-paragraph">既然非对称加密耗时，那非对称加密+对称加密结合可以吗？而且得尽量减少非对称加密的次数。当然是可以的，且非对称加密、解密各只需用一次即可。<br>请看一下这个过程：</p>



<ol class="wp-block-list">
<li>某网站拥有用于非对称加密的公钥A、私钥A’。</li>



<li>浏览器向网站服务器请求，服务器把公钥A明文给传输浏览器。</li>



<li>浏览器随机生成一个用于对称加密的密钥X，用公钥A加密后传给服务器。</li>



<li>服务器拿到后用私钥A’解密得到密钥X。</li>



<li>这样双方就都拥有密钥X了，且别人无法知道它。之后双方所有数据都通过密钥X加密解密即可。</li>
</ol>



<p class="wp-block-paragraph">完美！HTTPS基本就是采用了这种方案。完美？还是有漏洞的。</p>



<h2 class="wp-block-heading"><strong>中间人攻击</strong></h2>



<figure class="wp-block-image size-full"><img decoding="async" width="763" height="251" src="https://www.wublog.site/wp-content/uploads/2026/01/image-2.jpg" alt="" class="wp-image-314" srcset="https://www.wublog.site/wp-content/uploads/2026/01/image-2.jpg 763w, https://www.wublog.site/wp-content/uploads/2026/01/image-2-300x99.jpg 300w" sizes="(max-width: 763px) 100vw, 763px" /></figure>



<p class="wp-block-paragraph">如果在数据传输过程中，中间人劫持到了数据，此时他的确无法得到浏览器生成的密钥X，这个密钥本身被公钥A加密了，只有服务器才有私钥A’解开它，然而中间人却完全不需要拿到私钥A’就能干坏事了。请看：</p>



<ol class="wp-block-list">
<li>某网站有用于非对称加密的公钥A、私钥A’。</li>



<li>浏览器向网站服务器请求，服务器把公钥A明文给传输浏览器。</li>



<li><strong>中间人劫持到公钥A，保存下来，把数据包中的公钥A替换成自己伪造的公钥B（它当然也拥有公钥B对应的私钥B’）</strong>。</li>



<li>浏览器生成一个用于对称加密的密钥X，用<strong>公钥B</strong>（浏览器无法得知公钥被替换了）加密后传给服务器。</li>



<li><strong>中间人劫持后用私钥B’解密得到密钥X，再用公钥A加密后传给服务器</strong>。</li>



<li>服务器拿到后用私钥A’解密得到密钥X。</li>
</ol>



<p class="wp-block-paragraph">这样在双方都不会发现异常的情况下，中间人通过一套“狸猫换太子”的操作，掉包了服务器传来的公钥，进而得到了密钥X。<strong>根本原因是浏览器无法确认收到的公钥是不是网站自己的，</strong>因为公钥本身是明文传输的，难道还得对公钥的传输进行加密？这似乎变成鸡生蛋、蛋生鸡的问题了。解法是什么？</p>



<h2 class="wp-block-heading"><strong>如何证明浏览器收到的公钥一定是该网站的公钥？</strong></h2>



<p class="wp-block-paragraph">其实所有证明的源头都是一条或多条不证自明的“公理”（可以回想一下数学上公理），由它推导出一切。比如现实生活中，若想证明某身份证号一定是小明的，可以看他身份证，而身份证是由政府作证的，这里的“公理”就是“政府机构可信”，这也是社会正常运作的前提。</p>



<p class="wp-block-paragraph">那能不能类似地有个机构充当互联网世界的“公理”呢？让它作为一切证明的源头，给网站颁发一个“身份证”？</p>



<p class="wp-block-paragraph">它就是<strong><a href="https://zhida.zhihu.com/search?content_id=8792770&amp;content_type=Article&amp;match_order=1&amp;q=CA%E6%9C%BA%E6%9E%84&amp;zhida_source=entity" target="_blank" rel="noreferrer noopener">CA机构</a></strong>，它是如今互联网世界正常运作的前提，而CA机构颁发的“身份证”就是<strong>数字证书</strong>。</p>



<h2 class="wp-block-heading"><strong>数字证书</strong></h2>



<p class="wp-block-paragraph">网站在使用HTTPS前，需要向<strong>CA机构</strong>申领一份<strong>数字证书</strong>，数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器，浏览器从证书里获取公钥就行了，证书就如身份证，证明“该公钥对应该网站”。而这里又有一个显而易见的问题，“<strong>证书本身的传输过程中，如何防止被篡改”</strong>？即如何证明证书本身的真实性？身份证运用了一些防伪技术，而数字证书怎么防伪呢？解决这个问题我们就接近胜利了！</p>



<h2 class="wp-block-heading"><strong>如何放防止数字证书被篡改？</strong></h2>



<p class="wp-block-paragraph">我们把证书原本的内容生成一份“签名”，比对证书内容和签名是否一致就能判别是否被篡改。这就是数字证书的“防伪技术”，这里的“签名”就叫<code>数字签名</code>：</p>



<h2 class="wp-block-heading"><strong>数字签名</strong></h2>



<p class="wp-block-paragraph">这部分内容建议看下图并结合后面的文字理解，图中左侧是数字签名的制作过程，右侧是验证过程：</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="730" height="547" src="https://www.wublog.site/wp-content/uploads/2026/01/image-3.png" alt="" class="wp-image-305" srcset="https://www.wublog.site/wp-content/uploads/2026/01/image-3.png 730w, https://www.wublog.site/wp-content/uploads/2026/01/image-3-300x225.png 300w" sizes="auto, (max-width: 730px) 100vw, 730px" /></figure>



<p class="wp-block-paragraph">数字签名的制作过程：</p>



<ol class="wp-block-list">
<li>CA机构拥有非对称加密的私钥和公钥。</li>



<li>CA机构对证书明文数据T进行hash。</li>



<li>对hash后的值用私钥加密，得到数字签名S。</li>
</ol>



<p class="wp-block-paragraph">明文和数字签名共同组成了数字证书，这样一份数字证书就可以颁发给网站了。<br>那浏览器拿到服务器传来的数字证书后，如何验证它是不是真的？（有没有被篡改、掉包）</p>



<p class="wp-block-paragraph">浏览器验证过程：</p>



<ol class="wp-block-list">
<li>拿到证书，得到明文T，签名S。</li>



<li>用CA机构的公钥对S解密（由于是浏览器信任的机构，所以浏览器保有它的公钥。详情见下文），得到S’。</li>



<li>用证书里指明的hash算法对明文T进行hash得到T’。</li>



<li>显然通过以上步骤，T’应当等于S‘，除非明文或签名被篡改。所以此时比较S’是否等于T’，等于则表明证书可信。</li>
</ol>



<p class="wp-block-paragraph">为何么这样可以保证证书可信呢？我们来仔细想一下。</p>



<h2 class="wp-block-heading"><strong>中间人有可能篡改该证书吗？</strong></h2>



<p class="wp-block-paragraph">假设中间人篡改了证书的原文，由于他没有CA机构的私钥，所以无法得到此时加密后签名，无法相应地篡改签名。浏览器收到该证书后会发现原文和签名解密后的值不一致，则说明证书已被篡改，证书不可信，从而终止向服务器传输信息，防止信息泄露给中间人。</p>



<p class="wp-block-paragraph">既然不可能篡改，那整个证书被掉包呢？</p>



<h2 class="wp-block-heading"><strong>中间人有可能把证书掉包吗？</strong></h2>



<p class="wp-block-paragraph">假设有另一个网站B也拿到了CA机构认证的证书，它想劫持网站A的信息。于是它成为中间人拦截到了A传给浏览器的证书，然后替换成自己的证书，传给浏览器，之后浏览器就会错误地拿到B的证书里的公钥了，这确实会导致上文“中间人攻击”那里提到的漏洞？</p>



<p class="wp-block-paragraph">其实这并不会发生，因为证书里包含了网站A的信息，包括域名，浏览器把证书里的域名与自己请求的域名比对一下就知道有没有被掉包了。</p>



<h2 class="wp-block-heading"><strong>为什么制作数字签名时需要hash一次？</strong></h2>



<p class="wp-block-paragraph">我初识HTTPS的时候就有这个疑问，因为似乎那里的hash有点多余，把hash过程去掉也能保证证书没有被篡改。</p>



<p class="wp-block-paragraph">最显然的是性能问题，前面我们已经说了非对称加密效率较差，证书信息一般较长，比较耗时。而hash后得到的是固定长度的信息（比如用md5算法hash后可以得到固定的128位的值），这样加解密就快很多。</p>



<p class="wp-block-paragraph">当然也有安全上的原因，这部分内容相对深一些，感兴趣的可以看这篇解答：<a href="https://crypto.stackexchange.com/questions/12768/why-hash-the-message-before-signing-it-with-rsa/12780#12780" target="_blank" rel="noreferrer noopener">crypto.stackexchange.com/a/12780</a></p>



<h2 class="wp-block-heading"><strong>怎么证明CA机构的公钥是可信的？</strong></h2>



<p class="wp-block-paragraph">你们可能会发现上文中说到CA机构的公钥，我几乎一笔带过，“浏览器保有它的公钥”，这是个什么保有法？怎么证明这个公钥是否可信？</p>



<p class="wp-block-paragraph">让我们回想一下数字证书到底是干啥的？没错，为了证明某公钥是可信的，即“该公钥是否对应该网站”，那CA机构的公钥是否也可以用数字证书来证明？没错，操作系统、浏览器本身会预装一些它们信任的根证书，如果其中会有CA机构的根证书，这样就可以拿到它对应的可信公钥了。</p>



<p class="wp-block-paragraph">实际上证书之间的认证也可以不止一层，可以A信任B，B信任C，以此类推，我们把它叫做<code>信任链</code>或<code>数字证书链</code>。也就是一连串的数字证书，由根证书为起点，透过层层信任，使终端实体证书的持有者可以获得转授的信任，以证明身份。</p>



<p class="wp-block-paragraph">另外，不知你们是否遇到过网站访问不了、提示需安装证书的情况？这里安装的就是根证书。说明浏览器不认给这个网站颁发证书的机构，那么你就得手动下载安装该机构的根证书（风险自己承担XD）。安装后，你就有了它的公钥，就可以用它验证服务器发来的证书是否可信了。</p>



<h2 class="wp-block-heading"><strong>每次进行HTTPS请求时都</strong>必须<strong>在SSL/TLS层进行握手传输密钥吗？</strong></h2>



<p class="wp-block-paragraph">这也是我当时的困惑之一，显然每次请求都经历一次密钥传输过程非常耗时，那怎么达到只传输一次呢？</p>



<p class="wp-block-paragraph">服务器会为每个浏览器（或客户端软件）维护一个session ID，在TLS握手阶段传给浏览器，浏览器生成好密钥传给服务器后，服务器会把该密钥存到相应的session ID下，之后浏览器每次请求都会携带session ID，服务器会根据session ID找到相应的密钥并进行解密加密操作，这样就不必要每次重新制作、传输密钥了！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2026/01/17/https%e7%9a%84%e5%8a%a0%e5%af%86%e5%8e%9f%e7%90%86/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Markdown 语法详解</title>
		<link>https://www.wublog.site/2026/01/02/markdown-%e8%af%ad%e6%b3%95%e8%af%a6%e8%a7%a3/</link>
					<comments>https://www.wublog.site/2026/01/02/markdown-%e8%af%ad%e6%b3%95%e8%af%a6%e8%a7%a3/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 12:11:45 +0000</pubDate>
				<category><![CDATA[其他]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=225</guid>

					<description><![CDATA[什么是 Markdown 语法 Markdown 语法是一种轻量级标记语言的格式化规则集合，由 John Gr [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%80%E4%B9%88%E6%98%AF-markdown-%E8%AF%AD%E6%B3%95">什么是 Markdown 语法</a></h2>



<p class="wp-block-paragraph">Markdown 语法是一种轻量级标记语言的格式化规则集合，由 John Gruber 在 2004 年创建[1]。它使用简单的文本符号来表示格式化元素，如标题、粗体、斜体、链接和列表等。Markdown 的核心理念是让文档在纯文本状态下就具有良好的可读性，同时能够轻松转换为 HTML 或其他格式。</p>



<p class="wp-block-paragraph">Markdown 语法的设计哲学体现在其创始人 John Gruber 的原始描述中：&#8221;Markdown 的语法完全由标点符号组成，这些标点符号经过精心选择，看起来就像它们所表示的意思&#8221;[2]。这种直观性使得 Markdown 成为了技术写作、文档编写和内容创作的首选工具。</p>



<p class="wp-block-paragraph">与传统的富文本编辑器不同，Markdown 采用纯文本格式，这意味着您可以使用任何文本编辑器来编写 Markdown 文档。这种简洁性带来了诸多优势：文件体积小、版本控制友好、跨平台兼容性强，以及学习成本低。无论您是程序员、技术写作者、博客作者还是学生，掌握 Markdown 语法都能显著提升您的文档编写效率。</p>



<p class="wp-block-paragraph">Markdown 语法的标准化经历了多个阶段的发展。最初的 Markdown 规范相对简单，但随着使用场景的扩展，出现了许多变体和扩展。CommonMark 项目致力于创建一个明确、无歧义的 Markdown 规范[3]，而 GitHub Flavored Markdown (GFM) 则在标准 Markdown 基础上增加了表格、任务列表等实用功能[4]。</p>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E6%8E%8C%E6%8F%A1-markdown-%E8%AF%AD%E6%B3%95">为什么要掌握 Markdown 语法</a></h2>



<p class="wp-block-paragraph">掌握 Markdown 语法在当今的数字化工作环境中具有重要意义。首先，Markdown 已经成为技术文档的事实标准。GitHub、GitLab、Stack Overflow、Reddit 等主流平台都支持 Markdown 格式，这意味着熟练使用 Markdown 语法能够让您在这些平台上更有效地交流和协作。</p>



<p class="wp-block-paragraph">从效率角度来看，Markdown 语法能够显著提升写作速度。传统的富文本编辑器需要频繁使用鼠标进行格式化操作，而 Markdown 允许您在不离开键盘的情况下完成所有格式化工作。研究表明，熟练的 Markdown 用户的写作速度比使用传统编辑器的用户快 30-50%[5]。</p>



<p class="wp-block-paragraph">Markdown 语法的另一个重要优势是其出色的可移植性。由于 Markdown 文档是纯文本格式，它们可以在任何设备、任何操作系统上打开和编辑。您不必担心软件兼容性问题，也不会遇到格式丢失的困扰。这种特性使得 Markdown 成为长期文档存储的理想选择。</p>



<p class="wp-block-paragraph">在版本控制方面，Markdown 语法展现出了独特的优势。Git 等版本控制系统能够精确跟踪 Markdown 文档的变化，显示具体的文本修改内容。这对于团队协作和文档维护来说是极其宝贵的功能。相比之下，二进制格式的文档（如 Word 文档）在版本控制中只能显示文件已更改，无法展示具体的修改内容。</p>



<p class="wp-block-paragraph">从学习投资回报率的角度来看，Markdown 语法具有学习成本低、应用范围广的特点。基础语法可以在几小时内掌握，而这些知识可以在多个平台和场景中重复使用。无论是编写技术文档、撰写博客文章、制作演示文稿，还是记录会议纪要，Markdown 都能提供一致的写作体验。</p>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95%E6%A0%B8%E5%BF%83">基础语法核心</a></h2>



<figure class="wp-block-image"><img decoding="async" src="https://www.tomarkdown.org/guides/markdown_syntax_comparison.png" alt="Markdown 语法对比图"/></figure>



<p class="wp-block-paragraph">基础语法是 Markdown 的核心组成部分，这些语法元素在几乎所有 Markdown 解析器中都得到支持。掌握这些基础语法能够满足大部分日常写作需求，是学习 Markdown 的重要基础。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%A0%87%E9%A2%98%E8%AF%AD%E6%B3%95">标题语法</a></h3>



<p class="wp-block-paragraph">标题是文档结构的骨架，Markdown 提供了两种创建标题的方法。主要方法是使用井号（#）符号，这种方法支持六个级别的标题，对应 HTML 中的 h1 到 h6 标签。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BA%95%E5%8F%B7%E6%A0%87%E9%A2%98%E8%AF%AD%E6%B3%95">井号标题语法</a></h4>



<p class="wp-block-paragraph">井号标题语法是最常用和推荐的标题创建方法。语法规则非常简单：在文本前添加一个或多个井号，井号的数量决定标题的级别。需要注意的是，井号和标题文本之间必须有一个空格，这是为了确保在不同 Markdown 解析器中的兼容性[6]。</p>



<pre class="wp-block-preformatted"><strong># 一级标题</strong><br>​<br><strong>## 二级标题</strong><br>​<br><strong>### 三级标题</strong><br>​<br><strong>#### 四级标题</strong><br>​<br><strong>##### 五级标题</strong><br>​<br><strong>###### 六级标题</strong></pre>



<p class="wp-block-paragraph">在实际使用中，标题的层次结构应该保持逻辑性和一致性。一级标题通常用于文档标题，二级标题用于主要章节，三级标题用于子章节，以此类推。避免跳级使用标题，例如从一级标题直接跳到三级标题，这会影响文档的可读性和 SEO 效果。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%9B%BF%E4%BB%A3%E6%A0%87%E9%A2%98%E8%AF%AD%E6%B3%95">替代标题语法</a></h4>



<p class="wp-block-paragraph">Markdown 还支持另一种标题语法，称为 Setext 风格，但仅支持一级和二级标题。这种语法在标题文本下方添加等号（=）或连字符（-）来表示标题级别。</p>



<pre class="wp-block-preformatted"><strong># 一级标题</strong><br>​<br><strong>## 二级标题</strong></pre>



<p class="wp-block-paragraph">虽然这种语法在视觉上更加突出，但由于只支持两个级别且不如井号语法简洁，在实际使用中较少采用。大多数现代 Markdown 编辑器和解析器都更好地支持井号语法。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%A0%87%E9%A2%98%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">标题最佳实践</a></h4>



<p class="wp-block-paragraph">在使用标题语法时，有几个重要的最佳实践需要遵循。首先，始终在井号和标题文本之间添加空格，这确保了跨平台的兼容性。其次，在标题前后添加空行，这有助于提高文档的可读性，特别是在纯文本状态下查看时。</p>



<pre class="wp-block-preformatted">这是一段普通文本。<br>​<br><strong># 这是正确的标题格式</strong><br>​<br>这是标题后的内容。</pre>



<p class="wp-block-paragraph">另一个重要的实践是保持标题的层次结构清晰。每个文档应该只有一个一级标题，通常作为文档的主标题。二级标题用于主要章节，三级标题用于子章节，依此类推。这种结构不仅有助于读者理解文档内容，也有利于搜索引擎优化和自动生成目录。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%96%87%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8C%96">文本格式化</a></h3>



<p class="wp-block-paragraph">文本格式化是 Markdown 中最常用的功能之一，包括粗体、斜体、删除线等基本格式。这些格式化选项使用简单的符号来实现，既直观又易于记忆。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E7%B2%97%E4%BD%93%E6%96%87%E6%9C%AC">粗体文本</a></h4>



<p class="wp-block-paragraph">粗体文本用于强调重要内容，在 Markdown 中有两种创建粗体的方法：使用双星号（**）或双下划线（__）。两种方法在功能上完全相同，但推荐使用双星号，因为它在各种 Markdown 解析器中的兼容性更好。</p>



<pre class="wp-block-preformatted"><strong>**这是粗体文本**</strong><br><strong>**这也是粗体文本**</strong></pre>



<p class="wp-block-paragraph">在单词中间添加粗体强调时，必须使用星号而不是下划线，因为下划线在单词中间可能不被正确解析[7]。</p>



<pre class="wp-block-preformatted">Love<strong>**is**</strong>bold # 正确<br>Love<strong>**is**</strong>bold # 可能不被正确解析</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%96%9C%E4%BD%93%E6%96%87%E6%9C%AC">斜体文本</a></h4>



<p class="wp-block-paragraph">斜体文本用于表示强调或引用，使用单星号（*）或单下划线（_）创建。与粗体类似，推荐使用星号以确保更好的兼容性。</p>



<pre class="wp-block-preformatted"><em>_这是斜体文本_</em><br><em>_这也是斜体文本_</em></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E7%B2%97%E4%BD%93%E5%92%8C%E6%96%9C%E4%BD%93%E7%BB%84%E5%90%88">粗体和斜体组合</a></h4>



<p class="wp-block-paragraph">当需要同时使用粗体和斜体时，可以组合使用三个星号或下划线。这种格式在技术文档中经常用于强调特别重要的概念或术语。</p>



<pre class="wp-block-preformatted"><strong>**</strong><strong><em>_这是粗体斜体文本_</em></strong><strong>**</strong><br><strong>**</strong><strong><em>_这也是粗体斜体文本_</em></strong><strong>**</strong><br><strong>**</strong><strong><em>_混合使用也可以_</em></strong><strong>**</strong><br><em>_</em><strong><em>**这样也行**</em></strong><em>_</em></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%A0%E9%99%A4%E7%BA%BF">删除线</a></h4>



<p class="wp-block-paragraph">删除线用于表示已删除或不再有效的内容，使用双波浪号（~~）创建。这个功能在 GitHub Flavored Markdown 中得到广泛支持，但在标准 Markdown 中可能不被支持。</p>



<pre class="wp-block-preformatted"><s>~~这是删除线文本~~</s></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%B8%8B%E5%88%92%E7%BA%BF">下划线</a></h4>



<p class="wp-block-paragraph">标准 Markdown 不直接支持下划线格式，但可以使用 HTML 标签来实现：</p>



<pre class="wp-block-preformatted">&lt;u&gt;这是下划线文本&lt;/u&gt;</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%96%87%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">文本格式化最佳实践</a></h4>



<p class="wp-block-paragraph">在使用文本格式化时，应该遵循一些重要的原则。首先，格式化应该有明确的目的，避免过度使用。粗体用于强调重要概念，斜体用于引用或轻微强调，删除线用于表示修订内容。</p>



<p class="wp-block-paragraph">其次，保持格式化的一致性。在同一文档中，应该使用相同的符号来创建相同的格式。例如，如果选择使用星号创建粗体，就应该在整个文档中都使用星号，而不是混合使用星号和下划线。</p>



<p class="wp-block-paragraph">最后，注意格式化符号周围的空格。格式化符号应该紧贴被格式化的文本，不应该有额外的空格。</p>



<pre class="wp-block-preformatted"><strong>**正确的粗体**</strong><br><strong>** 错误的粗体 **</strong></pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%AE%B5%E8%90%BD%E5%92%8C%E6%8D%A2%E8%A1%8C">段落和换行</a></h3>



<p class="wp-block-paragraph">段落和换行的处理是 Markdown 中一个容易被误解的概念。理解这些规则对于创建格式良好的文档至关重要。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%AE%B5%E8%90%BD%E5%88%9B%E5%BB%BA">段落创建</a></h4>



<p class="wp-block-paragraph">在 Markdown 中，段落是由一个或多个连续的文本行组成，段落之间用一个或多个空行分隔。这个规则看似简单，但在实际使用中经常被忽视，导致文档格式不符合预期。</p>



<pre class="wp-block-preformatted">这是第一个段落。这个段落包含多个句子，它们会被渲染在同一个段落中。<br>​<br>这是第二个段落。注意上面有一个空行将两个段落分开。</pre>



<p class="wp-block-paragraph">重要的是要理解，仅仅按回车键并不会创建新段落。如果两行文本之间没有空行，它们会被合并为同一个段落。</p>



<pre class="wp-block-preformatted">这是第一行<br>这是第二行<br>​<br><strong># 上面两行会被合并为一个段落</strong><br>​<br>这是第三行<br>​<br>这是第四行<br>​<br><strong># 上面两行是两个独立的段落</strong></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%8D%A2%E8%A1%8C%E5%88%9B%E5%BB%BA">换行创建</a></h4>



<p class="wp-block-paragraph">有时候我们需要在段落内创建换行，而不是新段落。Markdown 提供了几种方法来实现这一点，但最可靠的方法是在行末添加两个或更多空格，然后按回车键。</p>



<pre class="wp-block-preformatted">这是第一行 &nbsp;<br>这是第二行，注意上一行末尾有两个空格</pre>



<p class="wp-block-paragraph">另一种方法是使用 HTML 的 <code>&lt;br&gt;</code> 标签：</p>



<pre class="wp-block-preformatted">这是第一行&lt;br&gt;<br>这是第二行</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%AE%B5%E8%90%BD%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">段落格式化最佳实践</a></h4>



<p class="wp-block-paragraph">在处理段落和换行时，有几个重要的最佳实践。首先，不要在段落开头添加空格或制表符来缩进，这可能导致意外的格式化效果，特别是在代码块的处理上。</p>



<p class="wp-block-paragraph">其次，使用空行来分隔段落，这不仅符合 Markdown 规范，也提高了纯文本状态下的可读性。即使在 Markdown 编辑器中，清晰的段落分隔也有助于内容的组织和编辑。</p>



<p class="wp-block-paragraph">对于换行，虽然行末双空格是标准方法，但由于空格在编辑器中不可见，容易被意外删除。在需要精确控制换行的场景中，使用 HTML <code>&lt;br&gt;</code> 标签可能是更可靠的选择。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%97%E8%A1%A8%E8%AF%AD%E6%B3%95">列表语法</a></h3>



<p class="wp-block-paragraph">列表是组织信息的重要工具，Markdown 支持有序列表和无序列表两种类型。列表语法简单直观，但在嵌套和复杂结构的处理上需要注意一些细节。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%97%A0%E5%BA%8F%E5%88%97%E8%A1%A8">无序列表</a></h4>



<p class="wp-block-paragraph">无序列表使用星号（*）、加号（+）或连字符（-）作为列表标记。三种标记在功能上完全相同，但为了保持一致性，建议在同一文档中使用相同的标记。</p>



<pre class="wp-block-preformatted">- 第一项<br>- 第二项<br>- 第三项<br>​<br>* 第一项<br>* 第二项<br>* 第三项<br>​<br>- 第一项<br>- 第二项<br>- 第三项</pre>



<p class="wp-block-paragraph">列表标记后必须跟一个空格，然后是列表项的内容。这个空格是必需的，没有空格的话，文本不会被识别为列表项。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%9C%89%E5%BA%8F%E5%88%97%E8%A1%A8">有序列表</a></h4>



<p class="wp-block-paragraph">有序列表使用数字加点号的形式创建。有趣的是，实际的数字并不重要，Markdown 会自动生成正确的序号。这个特性使得在编辑过程中插入或删除列表项变得更加容易。</p>



<pre class="wp-block-preformatted">1. 第一项<br>2. 第二项<br>3. 第三项<br>​<br><strong># 下面的列表会产生相同的结果</strong><br>​<br>1. 第一项<br>1. 第二项<br>1. 第三项<br>​<br><strong># 甚至这样也可以</strong><br>​<br>3. 第一项<br>4. 第二项<br>5. 第三项</pre>



<p class="wp-block-paragraph">虽然数字可以不按顺序，但为了代码的可读性，建议使用正确的序号或者全部使用 1。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8">嵌套列表</a></h4>



<p class="wp-block-paragraph">列表可以嵌套，创建多层次的结构。嵌套通过缩进来实现，子列表项需要在父列表项下缩进四个空格或一个制表符。</p>



<pre class="wp-block-preformatted">1. 第一项<br> &nbsp; - 子项 1<br> &nbsp; - 子项 2<br>2. 第二项<br> &nbsp; 1. 有序子项 1<br> &nbsp; 2. 有序子项 2<br>3. 第三项</pre>



<p class="wp-block-paragraph">在嵌套列表中，可以混合使用有序和无序列表。缩进必须保持一致，否则可能导致列表结构混乱。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%E5%85%83%E7%B4%A0">列表中的其他元素</a></h4>



<p class="wp-block-paragraph">列表项可以包含多个段落、代码块、引用等其他 Markdown 元素。关键是保持正确的缩进，确保这些元素被识别为列表项的一部分。</p>



<pre class="wp-block-preformatted">1. 第一项<br>​<br> &nbsp; 这是第一项的第二段落。注意缩进。<br>​<br>2. 第二项<br>​<br> &nbsp; &gt; 这是第二项中的引用块。</pre>



<p class="wp-block-paragraph">这是第二项中的代码块</p>



<pre class="wp-block-preformatted">3. 第三项</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%97%E8%A1%A8%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">列表最佳实践</a></h4>



<p class="wp-block-paragraph">使用列表时，应该注意几个重要的实践原则。首先，保持列表标记的一致性。在同一个列表中，使用相同的标记符号。其次，注意缩进的准确性，特别是在嵌套列表和包含多个元素的列表项中。</p>



<p class="wp-block-paragraph">对于长列表，考虑使用有序列表，即使顺序不重要，因为有序列表在引用特定项目时更加方便。在列表项较长时，可以考虑在列表项之间添加空行来提高可读性。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%93%BE%E6%8E%A5%E8%AF%AD%E6%B3%95">链接语法</a></h3>



<p class="wp-block-paragraph">链接是连接网络内容的重要元素，Markdown 提供了多种创建链接的方法。掌握这些方法能够让您创建更加丰富和互联的文档。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%86%85%E8%81%94%E9%93%BE%E6%8E%A5">内联链接</a></h4>



<p class="wp-block-paragraph">内联链接是最常用的链接格式，语法为 <code>[链接文本](URL "可选标题")</code>。链接文本是显示给读者的文字，URL 是链接的目标地址，可选标题会在鼠标悬停时显示。</p>



<pre class="wp-block-preformatted">[ToMarkdown.org](https://tomarkdown.org/zh "最好的 Markdown 转换工具")<br>[GitHub](https://github.com)<br>[联系我们](mailto:contact@example.com)</pre>



<p class="wp-block-paragraph">内联链接的优势是所有信息都在一处，易于阅读和维护。但在链接较多的文档中，可能会影响文本的可读性。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%BC%95%E7%94%A8%E5%BC%8F%E9%93%BE%E6%8E%A5">引用式链接</a></h4>



<p class="wp-block-paragraph">引用式链接将链接定义与链接使用分离，提高了文档的可读性。这种方法特别适用于包含大量链接的长文档。</p>



<pre class="wp-block-preformatted">这是一个指向 [ToMarkdown.org][1] 的链接。<br>这是另一个指向 [GitHub]<div class='github-info-card github-info-card-full card shadow-sm' data-author='' data-project='' githubinfo-card-id='9963479310' data-getdata='frontend' data-description='' data-stars='' data-forks=''><div class='github-info-card-header'><a href='https://github.com/' ref='nofollow' target='_blank' title='Github' no-pjax><span><i class='fa fa-github'></i> GitHub</span></a></div><div class='github-info-card-body'>
			<div class='github-info-card-name-a'>
				<a href='https://github.com//' target='_blank' no-pjax>
					<span class='github-info-card-name'>/</span>
				</a>
				</div>
			<div class='github-info-card-description'></div>
		</div><div class='github-info-card-bottom'>
				<span class='github-info-card-meta github-info-card-meta-stars'>
					<i class='fa fa-star'></i> <span class='github-info-card-stars'></span>
				</span>
				<span class='github-info-card-meta github-info-card-meta-forks'>
					<i class='fa fa-code-fork'></i> <span class='github-info-card-forks'></span>
				</span>
			</div></div> 的链接。<br>​<br>[1]: https://tomarkdown.org "Markdown 转换工具"<br><div class='github-info-card github-info-card-full card shadow-sm' data-author='' data-project='' githubinfo-card-id='2845979477' data-getdata='frontend' data-description='' data-stars='' data-forks=''><div class='github-info-card-header'><a href='https://github.com/' ref='nofollow' target='_blank' title='Github' no-pjax><span><i class='fa fa-github'></i> GitHub</span></a></div><div class='github-info-card-body'>
			<div class='github-info-card-name-a'>
				<a href='https://github.com//' target='_blank' no-pjax>
					<span class='github-info-card-name'>/</span>
				</a>
				</div>
			<div class='github-info-card-description'></div>
		</div><div class='github-info-card-bottom'>
				<span class='github-info-card-meta github-info-card-meta-stars'>
					<i class='fa fa-star'></i> <span class='github-info-card-stars'></span>
				</span>
				<span class='github-info-card-meta github-info-card-meta-forks'>
					<i class='fa fa-code-fork'></i> <span class='github-info-card-forks'></span>
				</span>
			</div></div>: https://github.com "代码托管平台"</pre>



<p class="wp-block-paragraph">引用式链接的标识符可以是数字、字母或单词，不区分大小写。链接定义可以放在文档的任何位置，但通常放在段落末尾或文档末尾。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%87%AA%E5%8A%A8%E9%93%BE%E6%8E%A5">自动链接</a></h4>



<p class="wp-block-paragraph">对于简单的 URL 或邮箱地址，Markdown 支持自动链接功能。将 URL 或邮箱地址用尖括号包围，就会自动创建链接。</p>



<pre class="wp-block-preformatted">&lt;https://tomarkdown.org&gt;<br>&lt;contact@example.com&gt;</pre>



<p class="wp-block-paragraph">许多现代 Markdown 解析器还支持不使用尖括号的自动链接识别，但为了确保兼容性，建议使用尖括号。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%86%85%E9%83%A8%E9%93%BE%E6%8E%A5">内部链接</a></h4>



<p class="wp-block-paragraph">在长文档中，经常需要创建指向文档内部章节的链接。Markdown 支持使用标题作为锚点的内部链接。</p>



<pre class="wp-block-preformatted">[跳转到基础语法](#基础语法核心)<br>[查看常见问题](#常见问题解答)</pre>



<p class="wp-block-paragraph">标题锚点的生成规则是：将标题转换为小写，空格替换为连字符，移除特殊字符。不同的 Markdown 解析器可能有略微不同的规则，建议在使用前进行测试。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%93%BE%E6%8E%A5%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">链接最佳实践</a></h4>



<p class="wp-block-paragraph">创建链接时，应该遵循一些重要的最佳实践。首先，链接文本应该具有描述性，避免使用&#8221;点击这里&#8221;或&#8221;更多信息&#8221;等通用文本。好的链接文本应该让读者知道点击后会看到什么内容。</p>



<pre class="wp-block-preformatted"><strong># 好的链接文本</strong><br>​<br>[Markdown 官方语法文档](https://daringfireball.net/projects/markdown/syntax)<br>​<br><strong># 不好的链接文本</strong><br>​<br>[点击这里](https://daringfireball.net/projects/markdown/syntax) 查看 Markdown 语法</pre>



<p class="wp-block-paragraph">其次，对于外部链接，考虑添加标题属性来提供额外信息。这不仅改善了用户体验，也有助于搜索引擎优化。</p>



<p class="wp-block-paragraph">最后，在使用引用式链接时，保持引用标识符的一致性和可读性。使用有意义的标识符而不是随机数字，这有助于文档的维护。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%BE%E7%89%87%E8%AF%AD%E6%B3%95">图片语法</a></h3>



<p class="wp-block-paragraph">图片是现代文档中不可或缺的元素，Markdown 的图片语法与链接语法非常相似，只是在前面添加了感叹号。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%86%85%E8%81%94%E5%9B%BE%E7%89%87">内联图片</a></h4>



<p class="wp-block-paragraph">内联图片的语法为 <code>![替代文本](image-url "可选标题")</code>。替代文本在图片无法显示时显示，也用于屏幕阅读器的无障碍访问。</p>



<pre class="wp-block-preformatted">![Markdown Logo](https://markdown-here.com/img/icon256.png "Markdown 标志")<br>![本地图片](markdown_syntax_hero.png)</pre>



<p class="wp-block-paragraph">替代文本虽然是可选的，但强烈建议提供，这不仅有助于无障碍访问，也有利于搜索引擎优化。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%BC%95%E7%94%A8%E5%BC%8F%E5%9B%BE%E7%89%87">引用式图片</a></h4>



<p class="wp-block-paragraph">与链接类似，图片也支持引用式语法，这在需要多次使用同一图片或管理大量图片时特别有用。</p>



<pre class="wp-block-preformatted">![Markdown Logo][logo]<br>![另一个图片][pic2]<br>​<br>[logo]: https://markdown-here.com/img/icon256.png "Markdown 标志"<br>[pic2]: markdown_syntax_comparison.png "示例图片"</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%BE%E7%89%87%E5%B0%BA%E5%AF%B8%E6%8E%A7%E5%88%B6">图片尺寸控制</a></h4>



<p class="wp-block-paragraph">标准 Markdown 不支持直接控制图片尺寸，但可以使用 HTML 标签来实现：</p>



<pre class="wp-block-preformatted">&lt;img src="markdown_syntax_hero.png" alt="描述" width="300" height="200"&gt;<br>&lt;img src="markdown_syntax_hero.png" alt="描述" style="width: 50%;"&gt;</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%BE%E7%89%87%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">图片最佳实践</a></h4>



<p class="wp-block-paragraph">使用图片时，有几个重要的最佳实践需要遵循。首先，始终提供有意义的替代文本，描述图片的内容和作用。这对于视觉障碍用户和搜索引擎都很重要。</p>



<p class="wp-block-paragraph">其次，考虑图片的文件大小和加载速度。在网络文档中，过大的图片会影响页面加载速度。建议对图片进行适当的压缩和优化。</p>



<p class="wp-block-paragraph">最后，使用相对路径来引用本地图片，这使得文档更容易移植和分享。同时，确保图片文件与 Markdown 文档一起管理，避免链接失效。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%A3%E7%A0%81%E8%AF%AD%E6%B3%95">代码语法</a></h3>



<p class="wp-block-paragraph">代码语法是 Markdown 中最重要的功能之一，特别是在技术文档中。Markdown 提供了内联代码和代码块两种方式来显示代码。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%86%85%E8%81%94%E4%BB%A3%E7%A0%81">内联代码</a></h4>



<p class="wp-block-paragraph">内联代码用于在段落中插入简短的代码片段，使用反引号（`）包围代码文本。</p>



<pre class="wp-block-preformatted">使用 `console.log()` 函数来输出信息。<br>在 HTML 中，`&lt;div&gt;` 是一个常用的容器元素。</pre>



<p class="wp-block-paragraph">如果代码本身包含反引号，可以使用多个反引号来包围：</p>



<pre class="wp-block-preformatted">`` 这里有一个反引号 ` 在代码中 ``</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%A3%E7%A0%81%E5%9D%97">代码块</a></h4>



<p class="wp-block-paragraph">代码块用于显示多行代码，有两种创建方法：缩进式和围栏式。</p>



<h5 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E7%BC%A9%E8%BF%9B%E5%BC%8F%E4%BB%A3%E7%A0%81%E5%9D%97">缩进式代码块</a></h5>



<p class="wp-block-paragraph">通过在每行前添加四个空格或一个制表符来创建代码块：</p>



<pre class="wp-block-preformatted"> &nbsp; &nbsp;function hello() {<br> &nbsp; &nbsp; &nbsp; &nbsp;console.log("Hello, World!");<br> &nbsp; &nbsp;}</pre>



<h5 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%B4%E6%A0%8F%E5%BC%8F%E4%BB%A3%E7%A0%81%E5%9D%97">围栏式代码块</a></h5>



<p class="wp-block-paragraph">使用三个反引号（&#8220;`）或三个波浪号（~~~）来包围代码块，这种方法更加灵活和常用：</p>



<pre class="wp-block-preformatted">```<br>function hello() {<br> &nbsp; &nbsp;console.log("Hello, World!");<br>}<br>```</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%AF%AD%E6%B3%95%E9%AB%98%E4%BA%AE">语法高亮</a></h4>



<p class="wp-block-paragraph">围栏式代码块支持语法高亮，只需在开始的三个反引号后指定编程语言：</p>



<pre class="wp-block-preformatted">```javascript<br>function hello() {<br>  console.log("Hello, World!");<br>}<br>```<br>​<br>```python<br>def hello():<br> &nbsp; &nbsp;print("Hello, World!")<br>```<br>​<br>```css<br>.container {<br>  max-width: 1200px;<br>  margin: 0 auto;<br>}<br>```</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%A3%E7%A0%81%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">代码最佳实践</a></h4>



<p class="wp-block-paragraph">使用代码语法时，应该遵循一些重要的实践原则。首先，为代码块指定正确的编程语言，这不仅启用语法高亮，也有助于代码的理解和维护。</p>



<p class="wp-block-paragraph">其次，保持代码的格式化和缩进一致。虽然 Markdown 会保留代码块中的格式，但良好的代码格式有助于阅读和理解。</p>



<p class="wp-block-paragraph">对于长代码块，考虑添加注释来解释关键部分。在技术文档中，代码的可理解性与正确性同样重要。</p>



<p class="wp-block-paragraph">最后，在内联代码中，避免使用过长的代码片段。如果代码超过几个单词，考虑使用代码块来显示。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%BC%95%E7%94%A8%E8%AF%AD%E6%B3%95">引用语法</a></h3>



<p class="wp-block-paragraph">引用语法用于标识引用的文本、重要的说明或者创建视觉上的层次结构。Markdown 的引用语法简单而强大，支持多层嵌套和复杂结构。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9F%BA%E6%9C%AC%E5%BC%95%E7%94%A8">基本引用</a></h4>



<p class="wp-block-paragraph">使用大于号（&gt;）在行首创建引用块。引用块可以包含任何其他 Markdown 元素，包括标题、列表、代码块等。</p>



<pre class="wp-block-preformatted">&gt; 这是一个引用块。<br>&gt; 它可以包含多行文本。<br>&gt;<br>&gt; 引用块中也可以有段落。</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B5%8C%E5%A5%97%E5%BC%95%E7%94%A8">嵌套引用</a></h4>



<p class="wp-block-paragraph">引用块可以嵌套，通过使用多个大于号来实现不同的嵌套级别：</p>



<pre class="wp-block-preformatted">&gt; 这是第一级引用。<br>&gt;<br>&gt; &gt; 这是第二级引用。<br>&gt; &gt;<br>&gt; &gt; &gt; 这是第三级引用。<br>&gt;<br>&gt; 回到第一级引用。</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%BC%95%E7%94%A8%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%E5%85%83%E7%B4%A0">引用中的其他元素</a></h4>



<p class="wp-block-paragraph">引用块可以包含其他 Markdown 元素，如标题、列表、代码块等：</p>



<pre class="wp-block-preformatted">&gt; <strong>## 引用中的标题</strong><br>&gt;<br>&gt; 1. 引用中的列表项<br>&gt; 2. 另一个列表项<br>&gt;<br>&gt; ```<br>&gt; 引用中的代码块<br>&gt; ```<br>&gt;<br>&gt; 这是引用中的普通段落。</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%BC%95%E7%94%A8%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">引用最佳实践</a></h4>



<p class="wp-block-paragraph">使用引用语法时，应该注意几个重要的实践原则。首先，引用应该有明确的目的，如标识引用的文本、重要的警告信息或者创建视觉层次。</p>



<p class="wp-block-paragraph">其次，在长引用中，保持适当的段落分隔和格式化。这有助于提高引用内容的可读性。</p>



<p class="wp-block-paragraph">最后，避免过度嵌套引用。虽然 Markdown 支持多层嵌套，但过深的嵌套会影响可读性。一般建议不超过三层嵌套。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%86%E9%9A%94%E7%BA%BF">分隔线</a></h3>



<p class="wp-block-paragraph">分隔线用于在文档中创建视觉分隔，标识不同章节或主题的转换。Markdown 提供了三种创建分隔线的方法。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%86%E9%9A%94%E7%BA%BF%E8%AF%AD%E6%B3%95">分隔线语法</a></h4>



<p class="wp-block-paragraph">可以使用三个或更多的连字符（-）、星号（*）或下划线（_）来创建分隔线：</p>



<pre class="wp-block-preformatted">---<br>---<br>​<br>---</pre>



<p class="wp-block-paragraph">这三种方法产生相同的效果，选择哪种主要是个人偏好问题。为了保持一致性，建议在同一文档中使用相同的符号。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%86%E9%9A%94%E7%BA%BF%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">分隔线最佳实践</a></h4>



<p class="wp-block-paragraph">使用分隔线时，应该注意几个重要的原则。首先，分隔线前后应该有空行，这确保了分隔线被正确识别，也提高了文档的可读性。</p>



<p class="wp-block-paragraph">其次，不要过度使用分隔线。分隔线应该用于标识重要的内容转换，而不是简单的装饰。过多的分隔线会分散读者的注意力。</p>



<p class="wp-block-paragraph">最后，考虑使用标题来代替分隔线进行内容组织。在大多数情况下，适当的标题结构比分隔线更有效地组织内容。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6">转义字符</a></h3>



<p class="wp-block-paragraph">在 Markdown 中，某些字符具有特殊含义，如星号用于创建粗体或斜体。当需要显示这些字符的字面意思时，需要使用转义字符。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%9C%80%E8%A6%81%E8%BD%AC%E4%B9%89%E7%9A%84%E5%AD%97%E7%AC%A6">需要转义的字符</a></h4>



<p class="wp-block-paragraph">以下字符在 Markdown 中具有特殊含义，可能需要转义：</p>



<pre class="wp-block-preformatted">\ 反斜杠<br>` 反引号<br>​<br>- 星号<br>  \_ 下划线<br>  {} 大括号<br>  [] 方括号<br>  () 圆括号<br>​<br><strong># 井号</strong><br>​<br>- 加号<br>​<br>* 连字符<br>  . 点号<br>  ! 感叹号</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%BD%AC%E4%B9%89%E6%96%B9%E6%B3%95">转义方法</a></h4>



<p class="wp-block-paragraph">使用反斜杠（\）来转义特殊字符：</p>



<pre class="wp-block-preformatted">\*这不是斜体文本\*<br>\#这不是标题<br>\[这不是链接\]</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%BD%AC%E4%B9%89%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">转义最佳实践</a></h4>



<p class="wp-block-paragraph">在使用转义字符时，应该注意几个重要的原则。首先，只在必要时使用转义。如果字符在当前上下文中不会被误解为 Markdown 语法，通常不需要转义。</p>



<p class="wp-block-paragraph">其次，在代码块和内联代码中，大多数字符不需要转义，因为它们会被按字面意思处理。</p>



<p class="wp-block-paragraph">最后，了解不同 Markdown 解析器的差异。某些解析器可能对转义字符的处理略有不同，在跨平台使用时需要注意这些差异。</p>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%89%A9%E5%B1%95%E8%AF%AD%E6%B3%95%E8%BF%9B%E9%98%B6">扩展语法进阶</a></h2>



<figure class="wp-block-image"><img decoding="async" src="https://www.tomarkdown.org/guides/markdown_platforms.png" alt="Markdown 平台应用"/></figure>



<p class="wp-block-paragraph">扩展语法是在基础 Markdown 语法之上添加的功能，这些功能在不同的 Markdown 解析器中可能有不同的支持程度。了解这些扩展语法能够让您创建更加丰富和功能强大的文档。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A1%A8%E6%A0%BC%E8%AF%AD%E6%B3%95">表格语法</a></h3>



<p class="wp-block-paragraph">表格是组织数据的重要工具，虽然不在原始 Markdown 规范中，但现在几乎所有现代 Markdown 解析器都支持表格语法。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9F%BA%E7%A1%80%E8%A1%A8%E6%A0%BC">基础表格</a></h4>



<p class="wp-block-paragraph">表格使用管道符（|）来分隔列，第二行使用连字符（-）来定义表头：</p>



<pre class="wp-block-preformatted">| 姓名 | 年龄 | 职业 &nbsp; &nbsp; |<br>| ---- | ---- | -------- |<br>| 张三 | 25 &nbsp; | 工程师 &nbsp; |<br>| 李四 | 30 &nbsp; | 设计师 &nbsp; |<br>| 王五 | 28 &nbsp; | 产品经理 |</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A1%A8%E6%A0%BC%E5%AF%B9%E9%BD%90">表格对齐</a></h4>



<p class="wp-block-paragraph">可以在分隔行中使用冒号（:）来控制列的对齐方式：</p>



<pre class="wp-block-preformatted">| 左对齐 &nbsp; | 居中对齐 | &nbsp; 右对齐 |<br>| :------- | :------: | -------: |<br>| 内容 &nbsp; &nbsp; | &nbsp; 内容 &nbsp; | &nbsp; &nbsp; 内容 |<br>| 更多内容 | 更多内容 | 更多内容 |</pre>



<ul class="wp-block-list">
<li><code>:-------</code> 左对齐（默认）</li>



<li><code>:------:</code> 居中对齐</li>



<li><code>-------:</code> 右对齐</li>
</ul>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A1%A8%E6%A0%BC%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">表格最佳实践</a></h4>



<p class="wp-block-paragraph">创建表格时，应该注意几个重要的实践原则。首先，保持表格的简洁性。过于复杂的表格在移动设备上可能难以阅读，考虑将复杂表格拆分为多个简单表格。</p>



<p class="wp-block-paragraph">其次，为表格提供清晰的表头。表头应该准确描述列的内容，有助于读者理解数据。</p>



<p class="wp-block-paragraph">最后，在表格较大时，考虑使用对齐来提高可读性。数字通常右对齐，文本左对齐，标题居中对齐。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%BB%E5%8A%A1%E5%88%97%E8%A1%A8">任务列表</a></h3>



<p class="wp-block-paragraph">任务列表是 GitHub Flavored Markdown 引入的功能，现在被广泛支持。它们特别适用于项目管理和待办事项跟踪。</p>



<pre class="wp-block-preformatted">- [x] 完成的任务<br>- [ ] 未完成的任务<br>- [x] 另一个完成的任务<br>- [ ] 待办事项<br> &nbsp;- [ ] 子任务 1<br> &nbsp;- [x] 子任务 2</pre>



<p class="wp-block-paragraph">任务列表可以嵌套，也可以与其他列表元素混合使用。在支持交互的平台上，用户可以直接点击复选框来切换任务状态。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%84%9A%E6%B3%A8">脚注</a></h3>



<p class="wp-block-paragraph">脚注允许您在文档中添加额外的解释或引用，而不会打断主要内容的流畅性。</p>



<pre class="wp-block-preformatted">这是一个包含脚注的句子[^1]。<br>​<br>这是另一个脚注[^note]。<br>​<br>[^1]: 这是第一个脚注的内容。<br>[^note]: 这是命名脚注的内容，可以包含多个段落。<br>​<br> &nbsp; &nbsp;脚注可以包含多个段落，只需要保持适当的缩进。</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%AE%9A%E4%B9%89%E5%88%97%E8%A1%A8">定义列表</a></h3>



<p class="wp-block-paragraph">定义列表用于创建术语和定义的配对，在技术文档中特别有用：</p>



<pre class="wp-block-preformatted">术语 1<br>: 定义 1<br>​<br>术语 2<br>: 定义 2a<br>: 定义 2b</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F">数学公式</a></h3>



<p class="wp-block-paragraph">许多 Markdown 解析器支持 LaTeX 风格的数学公式，使用美元符号（$）来标识：</p>



<pre class="wp-block-preformatted">内联公式：$E = mc^2$<br>​<br>块级公式：<br>​<br>$$<br>\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n<br>$$</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%AB%98%E4%BA%AE%E6%96%87%E6%9C%AC">高亮文本</a></h3>



<p class="wp-block-paragraph">某些 Markdown 解析器支持高亮文本，使用双等号（==）：</p>



<pre class="wp-block-preformatted">==这是高亮文本==</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%B8%8B%E6%A0%87%E5%92%8C%E4%B8%8A%E6%A0%87">下标和上标</a></h3>



<p class="wp-block-paragraph">下标和上标在科学文档中经常使用：</p>



<pre class="wp-block-preformatted">H~2~O（下标）<br>X^2^（上标）</pre>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B9%B3%E5%8F%B0%E7%89%B9%E6%80%A7%E5%B7%AE%E5%BC%82">平台特性差异</a></h2>



<p class="wp-block-paragraph">不同的平台和应用程序对 Markdown 的支持程度和实现方式可能有所不同。了解这些差异有助于您在不同平台上创建兼容的内容。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#github-flavored-markdown-gfm">GitHub Flavored Markdown (GFM)</a></h3>



<p class="wp-block-paragraph">GitHub Flavored Markdown 是 GitHub 平台使用的 Markdown 变体，在标准 Markdown 基础上增加了许多实用功能[8]。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A1%A8%E6%A0%BC%E6%94%AF%E6%8C%81">表格支持</a></h4>



<p class="wp-block-paragraph">GFM 完全支持表格语法，包括对齐控制和复杂表格结构。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%BB%E5%8A%A1%E5%88%97%E8%A1%A8-1">任务列表</a></h4>



<p class="wp-block-paragraph">GFM 引入了交互式任务列表，用户可以直接在界面上勾选任务。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%A0%E9%99%A4%E7%BA%BF-1">删除线</a></h4>



<p class="wp-block-paragraph">GFM 支持使用双波浪号创建删除线文本：</p>



<pre class="wp-block-preformatted"><s>~~删除的文本~~</s></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%87%AA%E5%8A%A8%E9%93%BE%E6%8E%A5-1">自动链接</a></h4>



<p class="wp-block-paragraph">GFM 会自动将 URL 转换为链接，无需使用尖括号：</p>



<pre class="wp-block-preformatted">https://github.com 会自动变成链接</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E4%BB%A3%E7%A0%81%E8%AF%AD%E6%B3%95%E9%AB%98%E4%BA%AE">代码语法高亮</a></h4>



<p class="wp-block-paragraph">GFM 支持丰富的语法高亮，包括大多数主流编程语言。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A1%A8%E6%83%85%E7%AC%A6%E5%8F%B7">表情符号</a></h4>



<p class="wp-block-paragraph">GFM 支持使用冒号语法插入表情符号：</p>



<pre class="wp-block-preformatted">:smile: :heart: :thumbsup:</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#gitlab-markdown">GitLab Markdown</a></h3>



<p class="wp-block-paragraph">GitLab 的 Markdown 实现基本兼容 GFM，但增加了一些特有功能：</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%A2%9C%E8%89%B2%E6%A0%87%E8%AF%86">颜色标识</a></h4>



<p class="wp-block-paragraph">GitLab 支持颜色代码的可视化显示：</p>



<pre class="wp-block-preformatted">`#FF0000` 会显示红色块</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%BE%E8%A1%A8%E6%94%AF%E6%8C%81">图表支持</a></h4>



<p class="wp-block-paragraph">GitLab 支持 Mermaid 图表语法：</p>



<pre class="wp-block-preformatted">```mermaid<br>graph TD<br> &nbsp; &nbsp;A[开始] --&gt; B[处理]<br> &nbsp; &nbsp;B --&gt; C[结束]<br>```</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#reddit-markdown">Reddit Markdown</a></h3>



<p class="wp-block-paragraph">Reddit 使用简化的 Markdown 实现，支持基础语法但缺少一些高级功能：</p>



<ul class="wp-block-list">
<li>不支持表格</li>



<li>不支持脚注</li>



<li>支持上标：^上标文本^</li>



<li>支持删除线：<del>删除文本</del></li>
</ul>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#discord-markdown">Discord Markdown</a></h3>



<p class="wp-block-paragraph">Discord 支持有限的 Markdown 语法，主要用于文本格式化：</p>



<pre class="wp-block-preformatted"><strong>**粗体**</strong><br><em>_斜体_</em><br><strong>**下划线**</strong><br><s>~~删除线~~</s><br>`代码`</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#notion-markdown">Notion Markdown</a></h3>



<p class="wp-block-paragraph">Notion 支持大部分标准 Markdown 语法，并且可以与其块编辑器无缝集成：</p>



<ul class="wp-block-list">
<li>支持所有基础语法</li>



<li>支持表格</li>



<li>支持任务列表</li>



<li>支持数学公式</li>



<li>支持代码块语法高亮</li>
</ul>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#obsidian-markdown">Obsidian Markdown</a></h3>



<p class="wp-block-paragraph">Obsidian 是一个知识管理工具，支持扩展的 Markdown 语法：</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%8F%8C%E5%90%91%E9%93%BE%E6%8E%A5">双向链接</a></h4>



<pre class="wp-block-preformatted">[[链接到其他笔记]]<br>[[笔记名称|显示文本]]</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%A0%87%E7%AD%BE">标签</a></h4>



<pre class="wp-block-preformatted">#标签 #嵌套/标签</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F-1">数学公式</a></h4>



<p class="wp-block-paragraph">完全支持 LaTeX 数学公式，包括内联和块级公式。</p>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">高级技巧和最佳实践</a></h2>



<p class="wp-block-paragraph">掌握基础语法后，了解一些高级技巧和最佳实践能够让您更高效地使用 Markdown，创建更专业的文档。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#html-%E6%B7%B7%E5%90%88%E4%BD%BF%E7%94%A8">HTML 混合使用</a></h3>



<p class="wp-block-paragraph">Markdown 允许在文档中直接使用 HTML 标签，这为复杂格式化提供了灵活性。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B8%B8%E7%94%A8-html-%E6%A0%87%E7%AD%BE">常用 HTML 标签</a></h4>



<pre class="wp-block-preformatted">&lt;div align="center"&gt;<br> &nbsp;&lt;img src="markdown_syntax_hero.png" alt="居中图片" width="300"&gt;<br>&lt;/div&gt;<br>​<br>&lt;details&gt;<br>&lt;summary&gt;点击展开&lt;/summary&gt;<br>这里是隐藏的内容。<br>&lt;/details&gt;<br>​<br>&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;C&lt;/kbd&gt;<br>​<br>&lt;mark&gt;高亮文本&lt;/mark&gt;</pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#html-%E4%BD%BF%E7%94%A8%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">HTML 使用最佳实践</a></h4>



<p class="wp-block-paragraph">在使用 HTML 时，应该遵循几个重要原则。首先，只在 Markdown 无法实现所需格式时使用 HTML。过度使用 HTML 会降低文档的可读性和可移植性。</p>



<p class="wp-block-paragraph">其次，确保 HTML 标签正确闭合，避免影响文档的其他部分。</p>



<p class="wp-block-paragraph">最后，考虑兼容性。某些 Markdown 解析器可能不支持所有 HTML 标签，在跨平台使用时需要测试。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%96%87%E6%A1%A3%E7%BB%93%E6%9E%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5">文档结构最佳实践</a></h3>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%A0%87%E9%A2%98%E5%B1%82%E6%AC%A1">标题层次</a></h4>



<p class="wp-block-paragraph">建立清晰的标题层次结构是创建专业文档的关键：</p>



<pre class="wp-block-preformatted"><strong># 文档标题（H1）- 每个文档只有一个</strong><br>​<br><strong>## 主要章节（H2）</strong><br>​<br><strong>### 子章节（H3）</strong><br>​<br><strong>#### 小节（H4）</strong><br>​<br><strong>##### 子小节（H5）- 谨慎使用</strong><br>​<br><strong>###### 最小节（H6）- 很少使用</strong></pre>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E7%9B%AE%E5%BD%95%E5%88%9B%E5%BB%BA">目录创建</a></h4>



<p class="wp-block-paragraph">对于长文档，创建目录能够显著改善用户体验：</p>



<pre class="wp-block-preformatted"><strong>## 目录</strong><br>​<br>1. [介绍](#介绍)<br>2. [安装](#安装)<br> &nbsp; - [系统要求](#系统要求)<br> &nbsp; - [安装步骤](#安装步骤)<br>3. [使用指南](#使用指南)<br>4. [常见问题](#常见问题)</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%8F%AF%E8%AF%BB%E6%80%A7%E4%BC%98%E5%8C%96">可读性优化</a></h3>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%AE%B5%E8%90%BD%E9%95%BF%E5%BA%A6">段落长度</a></h4>



<p class="wp-block-paragraph">保持适当的段落长度，一般建议每段不超过 3-4 句话。长段落在屏幕上难以阅读，特别是在移动设备上。</p>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%88%97%E8%A1%A8%E4%BD%BF%E7%94%A8">列表使用</a></h4>



<p class="wp-block-paragraph">合理使用列表来组织信息：</p>



<ul class="wp-block-list">
<li>使用无序列表展示并列的项目</li>



<li>使用有序列表展示步骤或优先级</li>



<li>使用任务列表跟踪进度</li>
</ul>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%A7%86%E8%A7%89%E5%88%86%E9%9A%94">视觉分隔</a></h4>



<p class="wp-block-paragraph">使用空行、分隔线和标题来创建视觉分隔，帮助读者理解文档结构。</p>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%8D%8F%E4%BD%9C%E5%92%8C%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6">协作和版本控制</a></h3>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#git-%E5%8F%8B%E5%A5%BD%E7%9A%84%E6%A0%BC%E5%BC%8F">Git 友好的格式</a></h4>



<p class="wp-block-paragraph">在使用 Git 进行版本控制时，遵循一些格式化原则能够改善协作体验：</p>



<ul class="wp-block-list">
<li>每句话单独一行，便于跟踪修改</li>



<li>避免过长的行，建议每行不超过 80-100 字符</li>



<li>使用一致的缩进和格式</li>
</ul>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%B3%A8%E9%87%8A%E5%92%8C%E5%85%83%E6%95%B0%E6%8D%AE">注释和元数据</a></h4>



<p class="wp-block-paragraph">在文档中添加适当的注释和元数据：</p>



<pre class="wp-block-preformatted">&lt;!--<br>文档信息：<br>作者：张三<br>创建日期：2025-01-01<br>最后修改：2025-01-15<br>版本：1.2<br>--&gt;<br>​<br><strong># 文档标题</strong><br>​<br>&lt;!-- TODO: 添加更多示例 --&gt;</pre>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%80%A7%E8%83%BD%E5%92%8C%E4%BC%98%E5%8C%96">性能和优化</a></h3>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9B%BE%E7%89%87%E4%BC%98%E5%8C%96">图片优化</a></h4>



<ul class="wp-block-list">
<li>使用适当的图片格式（JPEG 用于照片，PNG 用于图标）</li>



<li>压缩图片以减少文件大小</li>



<li>使用相对路径引用本地图片</li>
</ul>



<h4 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E9%93%BE%E6%8E%A5%E7%AE%A1%E7%90%86">链接管理</a></h4>



<ul class="wp-block-list">
<li>定期检查外部链接的有效性</li>



<li>使用引用式链接管理重复的 URL</li>



<li>为重要链接提供备用方案</li>
</ul>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94">常见问题解答</a></h2>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#q-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84-markdown-%E5%9C%A8%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E4%B8%8A%E6%98%BE%E7%A4%BA%E4%B8%8D%E5%90%8C">Q: 为什么我的 Markdown 在不同平台上显示不同？</a></h3>



<p class="wp-block-paragraph">A: 不同的 Markdown 解析器可能对语法的解释略有不同，特别是在扩展语法方面。为了确保兼容性，建议：</p>



<ol class="wp-block-list">
<li>使用标准 Markdown 语法作为基础</li>



<li>在使用扩展语法前确认目标平台的支持情况</li>



<li>在多个平台上测试文档的显示效果</li>



<li>使用 CommonMark 规范作为参考标准</li>
</ol>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#q-%E5%A6%82%E4%BD%95%E5%9C%A8-markdown-%E4%B8%AD%E5%88%9B%E5%BB%BA%E5%A4%8D%E6%9D%82%E7%9A%84%E8%A1%A8%E6%A0%BC">Q: 如何在 Markdown 中创建复杂的表格？</a></h3>



<p class="wp-block-paragraph">A: 标准 Markdown 表格功能有限，对于复杂表格，可以考虑以下方案：</p>



<ol class="wp-block-list">
<li>将复杂表格拆分为多个简单表格</li>



<li>使用 HTML 表格标签获得更多控制</li>



<li>使用专门的表格生成工具</li>



<li>考虑使用图片来展示复杂的表格数据</li>
</ol>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#q-%E5%A6%82%E4%BD%95%E5%9C%A8-markdown-%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%A7%86%E9%A2%91">Q: 如何在 Markdown 中添加视频？</a></h3>



<p class="wp-block-paragraph">A: 标准 Markdown 不直接支持视频嵌入，但可以使用以下方法：</p>



<ol class="wp-block-list">
<li>使用 HTML <code>&lt;video></code> 标签</li>



<li>嵌入 YouTube 或其他平台的 iframe 代码</li>



<li>使用视频的缩略图作为链接到视频的图片</li>



<li>某些平台支持特定的视频嵌入语法</li>
</ol>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#q-%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86-markdown-%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6">Q: 如何处理 Markdown 中的特殊字符？</a></h3>



<p class="wp-block-paragraph">A: 当需要显示具有特殊含义的字符时：</p>



<ol class="wp-block-list">
<li>使用反斜杠（\）进行转义</li>



<li>在代码块或内联代码中，大多数字符会被按字面意思处理</li>



<li>使用 HTML 实体编码（如 <code>&amp;</code> 表示 &amp;）</li>



<li>了解目标平台的特殊字符处理规则</li>
</ol>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#q-%E5%A6%82%E4%BD%95%E4%BC%98%E5%8C%96-markdown-%E6%96%87%E6%A1%A3%E7%9A%84-seo">Q: 如何优化 Markdown 文档的 SEO？</a></h3>



<p class="wp-block-paragraph">A: 虽然 Markdown 本身是纯文本，但可以通过以下方式优化 SEO：</p>



<ol class="wp-block-list">
<li>使用清晰的标题层次结构</li>



<li>为图片提供有意义的替代文本</li>



<li>使用描述性的链接文本</li>



<li>在转换为 HTML 时添加适当的元数据</li>



<li>保持内容的高质量和相关性</li>
</ol>



<h2 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5%E8%A1%A8">语法速查表</a></h2>



<figure class="wp-block-image"><img decoding="async" src="https://www.tomarkdown.org/guides/markdown_syntax_cheatsheet.png" alt="Markdown 语法速查表"/></figure>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83">基础语法快速参考</a></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">元素</th><th class="has-text-align-left" data-align="left">Markdown 语法</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">标题</td><td class="has-text-align-left" data-align="left"><code># H1</code> <code>## H2</code> <code>### H3</code></td></tr><tr><td class="has-text-align-left" data-align="left">粗体</td><td class="has-text-align-left" data-align="left"><code>**粗体文本**</code></td></tr><tr><td class="has-text-align-left" data-align="left">斜体</td><td class="has-text-align-left" data-align="left"><code>*斜体文本*</code></td></tr><tr><td class="has-text-align-left" data-align="left">删除线</td><td class="has-text-align-left" data-align="left"><code>~~删除文本~~</code></td></tr><tr><td class="has-text-align-left" data-align="left">内联代码</td><td class="has-text-align-left" data-align="left"><code>代码</code></td></tr><tr><td class="has-text-align-left" data-align="left">代码块</td><td class="has-text-align-left" data-align="left"><code>代码块</code></td></tr><tr><td class="has-text-align-left" data-align="left">链接</td><td class="has-text-align-left" data-align="left"><code>[标题](https://www.example.com)</code></td></tr><tr><td class="has-text-align-left" data-align="left">图片</td><td class="has-text-align-left" data-align="left"><code>![alt text](markdown_syntax_hero.png)</code></td></tr><tr><td class="has-text-align-left" data-align="left">无序列表</td><td class="has-text-align-left" data-align="left"><code>- 项目</code></td></tr><tr><td class="has-text-align-left" data-align="left">有序列表</td><td class="has-text-align-left" data-align="left"><code>1. 项目</code></td></tr><tr><td class="has-text-align-left" data-align="left">引用</td><td class="has-text-align-left" data-align="left"><code>&gt; 引用文本</code></td></tr><tr><td class="has-text-align-left" data-align="left">分隔线</td><td class="has-text-align-left" data-align="left"><code>---</code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E6%89%A9%E5%B1%95%E8%AF%AD%E6%B3%95%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83">扩展语法快速参考</a></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">元素</th><th class="has-text-align-left" data-align="left">Markdown 语法</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">表格</td><td class="has-text-align-left" data-align="left"><code>| 标题 | 标题 |</code> <code>|---|---|</code> <code>| 内容 | 内容 |</code></td></tr><tr><td class="has-text-align-left" data-align="left">脚注</td><td class="has-text-align-left" data-align="left"><code>文本[^1]</code> 和 <code>[^1]: 脚注内容</code></td></tr><tr><td class="has-text-align-left" data-align="left">任务列表</td><td class="has-text-align-left" data-align="left"><code>- [x] 完成的任务</code> <code>- [ ] 未完成的任务</code></td></tr><tr><td class="has-text-align-left" data-align="left">高亮</td><td class="has-text-align-left" data-align="left"><code>==高亮文本==</code></td></tr><tr><td class="has-text-align-left" data-align="left">下标</td><td class="has-text-align-left" data-align="left"><code>H~2~O</code></td></tr><tr><td class="has-text-align-left" data-align="left">上标</td><td class="has-text-align-left" data-align="left"><code>X^2^</code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><a href="https://www.tomarkdown.org/zh/guides/markdown-syntax#%E5%B8%B8%E7%94%A8-html-%E6%A0%87%E7%AD%BE-1">常用 HTML 标签</a></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">功能</th><th class="has-text-align-left" data-align="left">HTML 语法</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">居中对齐</td><td class="has-text-align-left" data-align="left"><code>&lt;div align="center"&gt;内容&lt;/div&gt;</code></td></tr><tr><td class="has-text-align-left" data-align="left">图片尺寸</td><td class="has-text-align-left" data-align="left"><code>&lt;img src="markdown_syntax_hero.png" width="300"&gt;</code></td></tr><tr><td class="has-text-align-left" data-align="left">换行</td><td class="has-text-align-left" data-align="left"><code>&lt;br&gt;</code></td></tr><tr><td class="has-text-align-left" data-align="left">键盘按键</td><td class="has-text-align-left" data-align="left"><code>&lt;kbd&gt;Ctrl&lt;/kbd&gt;</code></td></tr><tr><td class="has-text-align-left" data-align="left">高亮文本</td><td class="has-text-align-left" data-align="left"><code>&lt;mark&gt;高亮&lt;/mark&gt;</code></td></tr><tr><td class="has-text-align-left" data-align="left">折叠内容</td><td class="has-text-align-left" data-align="left"><code>&lt;details&gt;&lt;summary&gt;标题&lt;/summary&gt;内容&lt;/details&gt;</code></td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2026/01/02/markdown-%e8%af%ad%e6%b3%95%e8%af%a6%e8%a7%a3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTTP 响应状态码</title>
		<link>https://www.wublog.site/2026/01/02/http-%e5%93%8d%e5%ba%94%e7%8a%b6%e6%80%81%e7%a0%81/</link>
					<comments>https://www.wublog.site/2026/01/02/http-%e5%93%8d%e5%ba%94%e7%8a%b6%e6%80%81%e7%a0%81/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 05:28:57 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=219</guid>

					<description><![CDATA[HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类： 以下状态码由 sect [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类：</p>



<ol class="wp-block-list">
<li>信息响应 (<code>100</code>–<code>199</code>)</li>



<li>成功响应 (<code>200</code>–<code>299</code>)</li>



<li>重定向消息 (<code>300</code>–<code>399</code>)</li>



<li>客户端错误响应 (<code>400</code>–<code>499</code>)</li>



<li>服务端错误响应 (<code>500</code>–<code>599</code>)</li>
</ol>



<p class="wp-block-paragraph">以下状态码由 section 10 of RFC 2616 定义。你可以在 RFC 7231 中找到更新后的规范。</p>



<p class="wp-block-paragraph"><strong>备注：</strong>如果你收到的响应不在 此列表 中，则它为非标准响应，可能是服务器软件的自定义响应。</p>



<h2 class="wp-block-heading">一、信息响应</h2>



<ul class="wp-block-list">
<li><code>100 Continue</code>这个临时响应表明，迄今为止的所有内容都是可行的，客户端应该继续请求，如果已经完成，则忽略它。</li>



<li><code>101 Switching Protocols</code>该代码是响应客户端的 <code>Upgrade</code> 请求头发送的，指明服务器即将切换的协议。</li>



<li><code>102 Processing</code> (WebDAV)此代码表示服务器已收到并正在处理该请求，但当前没有响应可用。</li>



<li><code>103 Early Hints</code>此状态代码主要用于与 <code>Link</code> 链接头一起使用，以允许用户代理在服务器准备响应阶段时开始预加载 preloading 资源。</li>
</ul>



<h2 class="wp-block-heading">二、成功响应</h2>



<ul class="wp-block-list">
<li><code>200 OK</code>请求成功。成功的含义取决于 HTTP 方法：<code>GET</code>: 资源已被提取并在消息正文中传输。<code>HEAD</code>: 实体标头位于消息正文中。<code>PUT</code> or <code>POST</code>: 描述动作结果的资源在消息体中传输。<code>TRACE</code>: 消息正文包含服务器收到的请求消息。</li>



<li><code>201 Created</code>该请求已成功，并因此创建了一个新的资源。这通常是在 POST 请求，或是某些 PUT 请求之后返回的响应。</li>



<li><code>202 Accepted</code>请求已经接收到，但还未响应，没有结果。意味着不会有一个异步的响应去表明当前请求的结果，预期另外的进程和服务去处理请求，或者批处理。</li>



<li><code>203 Non-Authoritative Information</code>服务器已成功处理了请求，但返回的实体头部元信息不是在原始服务器上有效的确定集合，而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如，包含资源的元数据可能导致原始服务器知道元信息的超集。使用此状态码不是必须的，而且只有在响应不使用此状态码便会返回<code>200 OK</code>的情况下才是合适的。</li>



<li><code>204 No Content</code>对于该请求没有的内容可发送，但头部字段可能有用。用户代理可能会用此时请求头部信息来更新原来资源的头部缓存字段。</li>



<li><code>205 Reset Content</code>告诉用户代理重置发送此请求的文档。</li>



<li><code>206 Partial Content</code>当从客户端发送<code>Range</code>范围标头以只请求资源的一部分时，将使用此响应代码。</li>



<li><code>207 Multi-Status</code> (WebDAV)对于多个状态代码都可能合适的情况，传输有关多个资源的信息。</li>



<li><code>208 Already Reported</code> (WebDAV)在 DAV 里面使用 <code>&lt;dav:propstat&gt;</code> 响应元素以避免重复枚举多个绑定的内部成员到同一个集合。</li>



<li><code>226 IM Used</code> (HTTP Delta encoding)服务器已经完成了对资源的<code>GET</code>请求，并且响应是对当前实例应用的一个或多个实例操作结果的表示。</li>
</ul>



<h2 class="wp-block-heading">三、重定向消息</h2>



<ul class="wp-block-list">
<li><code>300 Multiple Choice</code>请求拥有多个可能的响应。用户代理或者用户应当从中选择一个。（没有标准化的方法来选择其中一个响应，但是建议使用指向可能性的 HTML 链接，以便用户可以选择。）</li>



<li><code>301 Moved Permanently</code>请求资源的 URL 已永久更改。在响应中给出了新的 URL。</li>



<li><code>302 Found</code>此响应代码表示所请求资源的 URI 已 <em>暂时</em> 更改。未来可能会对 URI 进行进一步的改变。因此，客户机应该在将来的请求中使用这个相同的 URI。</li>



<li><code>303 See Other</code>服务器发送此响应，以指示客户端通过一个 GET 请求在另一个 URI 中获取所请求的资源。</li>



<li><code>304 Not Modified</code>这是用于缓存的目的。它告诉客户端响应还没有被修改，因此客户端可以继续使用相同的缓存版本的响应。</li>



<li><code>305 Use Proxy</code> 已弃用在 HTTP 规范中定义，以指示请求的响应必须被代理访问。由于对代理的带内配置的安全考虑，它已被弃用。</li>



<li><code>306 unused</code>此响应代码不再使用；它只是保留。它曾在 HTTP/1.1 规范的早期版本中使用过。</li>



<li><code>307 Temporary Redirect</code>服务器发送此响应，以指示客户端使用在前一个请求中使用的相同方法在另一个 URI 上获取所请求的资源。这与 <code>302 Found</code> HTTP 响应代码具有相同的语义，但用户代理 <em>不能</em> 更改所使用的 HTTP 方法：如果在第一个请求中使用了 <code>POST</code>，则在第二个请求中必须使用 <code>POST</code></li>



<li><code>308 Permanent Redirect</code>这意味着资源现在永久位于由<code>Location:</code> HTTP Response 标头指定的另一个 URI。这与 <code>301 Moved Permanently</code> HTTP 响应代码具有相同的语义，但用户代理不能更改所使用的 HTTP 方法：如果在第一个请求中使用 <code>POST</code>，则必须在第二个请求中使用 <code>POST</code>。</li>
</ul>



<h2 class="wp-block-heading">四、客户端错误响应</h2>



<ul class="wp-block-list">
<li><code>400 Bad Request</code>由于被认为是客户端错误（例如，错误的请求语法、无效的请求消息帧或欺骗性的请求路由），服务器无法或不会处理请求。</li>



<li><code>401 Unauthorized</code>虽然 HTTP 标准指定了&#8221;unauthorized&#8221;，但从语义上来说，这个响应意味着&#8221;unauthenticated&#8221;。也就是说，客户端必须对自身进行身份验证才能获得请求的响应。</li>



<li><code>402 Payment Required</code> 实验性此响应代码保留供将来使用。创建此代码的最初目的是将其用于数字支付系统，但是此状态代码很少使用，并且不存在标准约定。</li>



<li><code>403 Forbidden</code>客户端没有访问内容的权限；也就是说，它是未经授权的，因此服务器拒绝提供请求的资源。与 <code>401 Unauthorized</code> 不同，服务器知道客户端的身份。</li>



<li><code>404 Not Found</code>服务器找不到请求的资源。在浏览器中，这意味着无法识别 URL。在 API 中，这也可能意味着端点有效，但资源本身不存在。服务器也可以发送此响应，而不是 <code>403 Forbidden</code>，以向未经授权的客户端隐藏资源的存在。这个响应代码可能是最广为人知的，因为它经常出现在网络上。</li>



<li><code>405 Method Not Allowed</code>服务器知道请求方法，但目标资源不支持该方法。例如，API 可能不允许调用<code>DELETE</code>来删除资源。</li>



<li><code>406 Not Acceptable</code>当 web 服务器在执行服务端驱动型内容协商机制后，没有发现任何符合用户代理给定标准的内容时，就会发送此响应。</li>



<li><code>407 Proxy Authentication Required</code>类似于 <code>401 Unauthorized</code> 但是认证需要由代理完成。</li>



<li><code>408 Request Timeout</code>此响应由一些服务器在空闲连接上发送，即使客户端之前没有任何请求。这意味着服务器想关闭这个未使用的连接。由于一些浏览器，如 Chrome、Firefox 27+ 或 IE9，使用 HTTP 预连接机制来加速冲浪，所以这种响应被使用得更多。还要注意的是，有些服务器只是关闭了连接而没有发送此消息。</li>



<li><code>409 Conflict</code>当请求与服务器的当前状态冲突时，将发送此响应。</li>



<li><code>410 Gone</code>当请求的内容已从服务器中永久删除且没有转发地址时，将发送此响应。客户端需要删除缓存和指向资源的链接。HTTP 规范打算将此状态代码用于“有限时间的促销服务”。API 不应被迫指出已使用此状态代码删除的资源。</li>



<li><code>411 Length Required</code>服务端拒绝该请求因为 <code>Content-Length</code> 头部字段未定义但是服务端需要它。</li>



<li><code>412 Precondition Failed</code>客户端在其头文件中指出了服务器不满足的先决条件。</li>



<li><code>413 Payload Too Large</code>请求实体大于服务器定义的限制。服务器可能会关闭连接，或在标头字段后返回重试 <code>Retry-After</code>。</li>



<li><code>414 URI Too Long</code>客户端请求的 URI 比服务器愿意接收的长度长。</li>



<li><code>415 Unsupported Media Type</code>服务器不支持请求数据的媒体格式，因此服务器拒绝请求。</li>



<li><code>416 Range Not Satisfiable</code>无法满足请求中 <code>Range</code> 标头字段指定的范围。该范围可能超出了目标 URI 数据的大小。</li>



<li><code>417 Expectation Failed</code>此响应代码表示服务器无法满足 <code>Expect</code> 请求标头字段所指示的期望。</li>



<li><code>418 I'm a teapot</code>服务端拒绝用茶壶煮咖啡。笑话，典故来源茶壶冲泡咖啡</li>



<li><code>421 Misdirected Request</code>请求被定向到无法生成响应的服务器。这可以由未配置为针对请求 URI 中包含的方案和权限组合生成响应的服务器发送。</li>



<li><code>422 Unprocessable Entity</code> (WebDAV)请求格式正确，但由于语义错误而无法遵循。</li>



<li><code>423 Locked</code> (WebDAV)正在访问的资源已锁定。</li>



<li><code>424 Failed Dependency</code> (WebDAV)由于前一个请求失败，请求失败。</li>



<li><code>425 Too Early</code> 实验性表示服务器不愿意冒险处理可能被重播的请求。</li>



<li><code>426 Upgrade Required</code>服务器拒绝使用当前协议执行请求，但在客户端升级到其他协议后可能愿意这样做。 服务端发送带有<code>Upgrade</code> 字段的 426 响应 来表明它所需的协议（们）。</li>



<li><code>428 Precondition Required</code>源服务器要求请求是有条件的。此响应旨在防止&#8217;丢失更新&#8217;问题，即当第三方修改服务器上的状态时，客户端 <code>GET</code> 获取资源的状态，对其进行修改并将其 <code>PUT</code> 放回服务器，从而导致冲突。</li>



<li><code>429 Too Many Requests</code>用户在给定的时间内发送了太多请求（&#8221;限制请求速率&#8221;）</li>



<li><code>431 Request Header Fields Too Large</code>服务器不愿意处理请求，因为其头字段太大。在减小请求头字段的大小后，可以重新提交请求。</li>



<li><code>451 Unavailable For Legal Reasons</code>用户代理请求了无法合法提供的资源，例如政府审查的网页。</li>
</ul>



<h2 class="wp-block-heading">五、服务端错误响应</h2>



<ul class="wp-block-list">
<li><code>500 Internal Server Error</code>服务器遇到了不知道如何处理的情况。</li>



<li><code>501 Not Implemented</code>服务器不支持请求方法，因此无法处理。服务器需要支持的唯二方法（因此不能返回此代码）是 <code>GET</code> and <code>HEAD</code>.</li>



<li><code>502 Bad Gateway</code>此错误响应表明服务器作为网关需要得到一个处理这个请求的响应，但是得到一个错误的响应。</li>



<li><code>503 Service Unavailable</code>服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。请注意，与此响应一起，应发送解释问题的用户友好页面。这个响应应该用于临时条件和如果可能的话，HTTP 标头 <code>Retry-After</code> 字段应该包含恢复服务之前的估计时间。网站管理员还必须注意与此响应一起发送的与缓存相关的标头，因为这些临时条件响应通常不应被缓存。</li>



<li><code>504 Gateway Timeout</code>当服务器充当网关且无法及时获得响应时，会给出此错误响应。</li>



<li><code>505 HTTP Version Not Supported</code>服务器不支持请求中使用的 HTTP 版本。</li>



<li><code>506 Variant Also Negotiates</code>服务器存在内部配置错误：所选的变体资源被配置为参与透明内容协商本身，因此不是协商过程中的适当终点。</li>



<li><code>507 Insufficient Storage</code> (WebDAV)无法在资源上执行该方法，因为服务器无法存储成功完成请求所需的表示。</li>



<li><code>508 Loop Detected</code> (WebDAV)服务器在处理请求时检测到无限循环。</li>



<li><code>510 Not Extended</code>服务器需要对请求进行进一步扩展才能完成请求。</li>



<li><code>511 Network Authentication Required</code>指示客户端需要进行身份验证才能获得网络访问权限。</li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2026/01/02/http-%e5%93%8d%e5%ba%94%e7%8a%b6%e6%80%81%e7%a0%81/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>各种开源协议介绍</title>
		<link>https://www.wublog.site/2026/01/02/%e5%90%84%e7%a7%8d%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d/</link>
					<comments>https://www.wublog.site/2026/01/02/%e5%90%84%e7%a7%8d%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 03:09:32 +0000</pubDate>
				<category><![CDATA[其他]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=212</guid>

					<description><![CDATA[世界上的开源许可证（Open Source License）大概有上百种，今天我们来介绍下几种我们常见的开源协 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">世界上的开源许可证（Open Source License）大概有上百种，今天我们来介绍下几种我们常见的开源协议。大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.runoob.com/wp-content/uploads/2018/03/da68b98e404578126b87c5afd9ba9bc3.png" alt=""/></figure>



<h3 class="wp-block-heading">Apache License</h3>



<p class="wp-block-paragraph">Apache License（Apache许可证），是Apache软件基金会发布的一个自由软件许可证。</p>



<p class="wp-block-paragraph">Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似，同样鼓励代码共享和最终原作者的著作权，同样允许源代码修改和再发布。但是也需要遵循以下条件：</p>



<ul class="wp-block-list">
<li>需要给代码的用户一份Apache Licence。</li>



<li>如果修改了代码，需要再被修改的文件中说明。</li>



<li>在衍生的代码中（修改和有源代码衍生的代码中）需要带有原来代码中的协议，商标，专利声明和其他原来作者规定需要包含的说明。</li>



<li>如果再发布的产品中包含一个Notice文件，则在Notice文件中需要带有Apache Licence。你可以再Notice中增加自己的许可，但是不可以表现为对Apache Licence构成更改。</li>



<li>Apache Licence也是对商业应用友好的许可。使用者也可以再需要的时候修改代码来满足并作为开源或商业产品发布/销售。</li>
</ul>



<p class="wp-block-paragraph">使用这个协议的好处是:</p>



<ul class="wp-block-list">
<li>永久权利 一旦被授权，永久拥有。</li>



<li>全球范围的权利 在一个国家获得授权，适用于所有国家。假如你在美国，许可是从印度授权的，也没有问题。</li>



<li>授权免费 无版税， 前期、后期均无任何费用。</li>



<li>授权无排他性 任何人都可以获得授权</li>



<li>授权不可撤消 一旦获得授权，没有任何人可以取消。比如，你基于该产品代码开发了衍生产品，你不用担心会在某一天被禁止使用该代码</li>
</ul>



<h3 class="wp-block-heading">BSD</h3>



<p class="wp-block-paragraph">BSD是&#8221;Berkeley Software Distribution&#8221;的缩写，意思是&#8221;伯克利软件发行版&#8221;。</p>



<p class="wp-block-paragraph">BSD开源协议：是一个给于使用者很大自由的协议。可以自由的使用，修改源代码，也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码，或则以BSD协议代码为基础做二次开发自己的产品时，需要满足三个条件：</p>



<ul class="wp-block-list">
<li>1． 如果再发布的产品中包含源代码，则在源代码中必须带有原来代码中的BSD协议。</li>



<li>2． 如果再发布的只是二进制类库/软件，则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。</li>



<li>3． 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。</li>
</ul>



<p class="wp-block-paragraph">BSD代码鼓励代码共享，但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码，也允许使用或在BSD代码上开发商业软件发布和销售，因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议，因为可以完全控制这些第三方的代码，在必要的时候可以修改或者二次开发。</p>



<h3 class="wp-block-heading">GPL</h3>



<p class="wp-block-paragraph">GPL （GNU General Public License） ：GNU通用公共许可协议。</p>



<p class="wp-block-paragraph"><strong>Linux 采用了 GPL</strong>。</p>



<p class="wp-block-paragraph">GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用，但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux，包括商业公司的linux和linux上各种各样的由个人，组织，以及商业软件公司开发的免费软件了。</p>



<h3 class="wp-block-heading">LGPL</h3>



<p class="wp-block-paragraph">LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。</p>



<p class="wp-block-paragraph">但是如果修改LGPL协议的代码或者衍生，则所有修改的代码，涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用，但不适合希望以LGPL协议代码为基础，通过修改和衍生的方式做二次开发的商业软件采用。</p>



<p class="wp-block-paragraph">GPL/LGPL都保障原作者的知识产权，避免有人利用开源代码复制并开发类似的产品。</p>



<h3 class="wp-block-heading">MIT</h3>



<p class="wp-block-paragraph">MIT是和BSD一样宽范的许可协议,源自麻省理工学院（Massachusetts Institute of Technology, MIT），又称X11协议。作者只想保留版权,而无任何其他了限制。MIT与BSD类似，但是比BSD协议更加宽松，是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有：jquery、Node.js。</p>



<p class="wp-block-paragraph">MIT与BSD类似，但是比BSD协议更加宽松，是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有：jquery、Node.js。</p>



<h3 class="wp-block-heading">MPL (Mozilla Public License 1.1)</h3>



<p class="wp-block-paragraph">MPL协议允许免费重发布、免费修改，但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益，它要求基于这种软件的修改无偿贡献版权给该软件。这样，围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改，无偿使用得。MPL软件对链接没有要求。</p>



<h3 class="wp-block-heading">EPL (Eclipse Public License 1.0)</h3>



<p class="wp-block-paragraph">EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。</p>



<p class="wp-block-paragraph">使用EPL协议，需要遵守以下规则：</p>



<ul class="wp-block-list">
<li>当一个Contributors将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原&#8221;源码&#8221;Owner 的授权；</li>



<li>EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是Object Code的时候,你必须声明它的Source Code是可以获取的,而且要告知获取方法；</li>



<li>当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个Project发布的时候,你可以将整个Project/Product以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL；</li>



<li>4.独立的模块(Separate Module),不需要开源。</li>
</ul>



<h3 class="wp-block-heading">Creative Commons 知识共享协议</h3>



<p class="wp-block-paragraph">Creative Commons (CC) 许可协议并不能说是真正的开源协议，它们大多是被使用于设计类的工程上。 CC 协议种类繁多，每一种都授权特定的权利。 一个 CC 许可协议具有四个基本部分，这几个部分可以单独起作用，也可以组合起来。下面是这几部分的简介：</p>



<ul class="wp-block-list">
<li>1、署名 作品上必须附有作品的归属。如此之后，作品可以被修改，分发，复制和其它用途。</li>



<li>2、相同方式共享 作品可以被修改、分发或其它操作，但所有的衍生品都要置于CC许可协议下。</li>



<li>3、非商业用途 作品可以被修改、分发等等，但不能用于商业目的。但语言上对什么是&#8221;商业&#8221;的说明十分含糊不清 (没有提供精确的定义)，所以你可以在你的工程里对其进行说明。例如，有些人简单的解释&#8221;非商业&#8221;为不能出售这个作品。而另外一些人认为你甚至不能在有广告的网站上使用它们。 还有些人认为&#8221;商业&#8221;仅仅指你用它获取利益。</li>



<li>4、禁止衍生作品</li>
</ul>



<p class="wp-block-paragraph">CC 许可协议的这些条款可以自由组合使用。大多数的比较严格的CC协议会声明 &#8220;署名权，非商业用途，禁止衍生&#8221;条款，这意味着你可以自由的分享这个作品，但你不能改变它和对其收费，而且必须声明作品的归属。这个许可协议非常的有用，它可以让你的作品传播出去，但又可以对作品的使用保留部分或完全的控制。最少限制的CC协议类型当属 &#8220;署名&#8221;协议，这意味着只要人们能维护你的名誉，他们对你的作品怎么使用都行。</p>



<p class="wp-block-paragraph">CC 许可协议更多的是在设计类工程中使用，而不是开发类，但没有人或妨碍你将之使用与后者。只是你必须要清楚各部分条款能覆盖到的和不能覆盖到的权利。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">图解分析</h3>



<figure class="wp-block-image"><img decoding="async" src="https://www.runoob.com/wp-content/uploads/2018/03/bg2011050101.png" alt=""/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2026/01/02/%e5%90%84%e7%a7%8d%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DNS域名解析过程</title>
		<link>https://www.wublog.site/2026/01/01/dns%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90%e8%bf%87%e7%a8%8b/</link>
					<comments>https://www.wublog.site/2026/01/01/dns%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90%e8%bf%87%e7%a8%8b/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Thu, 01 Jan 2026 03:31:07 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=208</guid>

					<description><![CDATA[什么是DNS域名解析 我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址，通过IP地址 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>什么是DNS域名解析</strong></p>



<p class="wp-block-paragraph">我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址，通过IP地址实现不同计算机之间的相互通信，每台联网计算机都需要通过IP地址来互相联系和分别。</p>



<p class="wp-block-paragraph">但由于IP地址是由一串容易混淆的数字串构成，人们很难记忆所有计算机的IP地址，这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景，人们在IP地址的基础上又发展出了一种更易识别的符号化标识，这种标识由人们自行选择的字母和数字构成，相比IP地址更易被识别和记忆，逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。</p>



<p class="wp-block-paragraph">域名虽然更易被用户所接受和使用，但计算机只能识别纯数字构成的IP地址，不能直接读取域名。因此要想达到访问效果，就需要将域名翻译成IP地址。而DNS域名解析承担的就是这种翻译效果。</p>



<h2 class="wp-block-heading">DNS域名解析过程</h2>



<p class="wp-block-paragraph">当我们在浏览器地址栏中输入 <a href="https://www.wublog.site">https://www.wublog.site</a> 时，DNS解析将会有将近10个步骤，这个过程大体大体由一张图可以表示：</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="529" data-id="209" src="https://www.wublog.site/wp-content/uploads/2026/01/dns-1024x529.png" alt="" class="wp-image-209" srcset="https://www.wublog.site/wp-content/uploads/2026/01/dns-1024x529.png 1024w, https://www.wublog.site/wp-content/uploads/2026/01/dns-300x155.png 300w, https://www.wublog.site/wp-content/uploads/2026/01/dns-768x397.png 768w, https://www.wublog.site/wp-content/uploads/2026/01/dns-1536x794.png 1536w, https://www.wublog.site/wp-content/uploads/2026/01/dns-2048x1058.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p class="wp-block-paragraph">整个过程大体描述如下，其中前两个步骤是在本地电脑内完成的，后8个步骤涉及到真正的域名解析服务器：</p>



<p class="wp-block-paragraph"><strong>第一步</strong>、本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址，如果缓存中有，这个解析过程就结束。浏览器缓存域名也是有限制的，不仅浏览器缓存大小有限制，而且缓存的时间也有限制，通常情况下为几分钟到几小时不等，域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好，如果时间太长，一旦域名被解析到的IP有变化，会导致被客户端缓存的域名无法解析到变化后的IP地址，以致该域名不能正常解析，这段时间内有一部分用户无法访问网站。如果设置时间太短，会导致用户每次访问网站都要重新解析一次域名。</p>



<p class="wp-block-paragraph"><strong>第二步</strong>、如果浏览器缓存中没有数据，浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程，在Linux中可以通过/etc/hosts文件来设置，而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置，用户可以将任何域名解析到任何能够访问的IP地址。</p>



<p class="wp-block-paragraph"><strong>第三步</strong>、前两个过程无法解析时，就要用到我们网络配置中的&#8221;DNS服务器地址&#8221;了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器，例如用户是在学校或工作单位接入互联网，那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果，当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了，后续的DNS迭代和递归也是由本地DNS服务器负责。</p>



<p class="wp-block-paragraph"><strong>第四步</strong>、如果本地DNS服务器仍然没有命中，就直接到根DNS服务器请求解析。</p>



<p class="wp-block-paragraph"><strong>第五步</strong>、根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址，它是国际顶级域名服务器，如.com、.cn、.org等，全球只有13台左右。</p>



<p class="wp-block-paragraph"><strong>第六步</strong>、本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。</p>



<p class="wp-block-paragraph"><strong>第七步</strong>、接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址，这个Name Server服务器就是我要访问的网站域名提供商的服务器，其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问 <a href="https://www.wublog.site">https://www.wublog.site</a>，而这个域名是从A公司注册获得的，那么A公司上的服务器就会有 <a href="https://www.wublog.site">https://www.wublog.site</a> 的相关信息。</p>



<p class="wp-block-paragraph"><strong>第八步</strong>、Name Server服务器会查询存储的域名和IP的映射关系表，再把查询出来的域名和IP地址等等信息，连同一个TTL值返回给本地DNS服务器。</p>



<p class="wp-block-paragraph"><strong>第九步</strong>、返回该域名对应的IP和TTL值，本地DNS服务器会缓存这个域名和IP的对应关系，缓存时间由TTL值控制。</p>



<p class="wp-block-paragraph"><strong>第十步</strong>、把解析的结果返回给本地电脑，本地电脑根据TTL值缓存在本地系统缓存中，域名解析过程结束在实际的DNS解析过程中，可能还不止这10步，如Name Server可能有很多级，或者有一个GTM来负载均衡控制，这都有可能会影响域名解析过程。</p>



<h2 class="wp-block-heading"><strong>递归查询和迭代查询的区别</strong></h2>



<p class="wp-block-paragraph">DNS客户端和本地名称服务器是递归，而本地名称服务器和其他名称服务器之间是迭代。</p>



<p class="wp-block-paragraph">DNS递归名称解析： 在DNS递归名称解析中，当所配置的本地名称服务器解析不了时，后面的查询工作是由本地名称服务器替代DNS客户端进行的（以“本地名称服务器”为中心），只需要本地名称服务器向DNS客户端返回最终的查询结果即可。</p>



<p class="wp-block-paragraph">DNS迭代名称解析：（或者叫“迭代查询”）的所有查询工作全部是DNS客户端自己进行（以“DNS客户端”自己为中心）。在条件之一满足时就会采用迭代名称解析方式：</p>



<p class="wp-block-paragraph">在查询本地名称服务器时，如果客户端的请求报文中没有申请使用递归查询，即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询，我当然不会为你工作了”。</p>



<p class="wp-block-paragraph">客户端在DNS请求报文中申请使用的是递归查询（也就是RD字段置1了），但在所配置的本地名称服务器上是禁用递归查询（DNS服务器一般默认支持递归查询的），即在应答DNS报文头部的RA字段置0。</p>



<h2 class="wp-block-heading"><strong>域名解析记录</strong></h2>



<p class="wp-block-paragraph">主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录：</p>



<p class="wp-block-paragraph">1、A记录</p>



<p class="wp-block-paragraph">A代表Address，用来指定域名对应的IP地址，如将http://item.taobao.com指定到http://115.238.23.xxx，将http://switch.taobao.com指定到http://121.14.24.xxx。A记录可以将多个域名解析到一个IP地址，但是不能将一个域名解析到多个IP地址</p>



<p class="wp-block-paragraph">2、MX记录</p>



<p class="wp-block-paragraph">Mail Exchange，就是可以将某个域名下的邮件服务器指向自己的Mail Server，如http://taobao.com域名的A记录IP地址是http://115.238.25.xxx，如果将MX记录设置为http://115.238.25.xxx，即xxx@taobao.com的邮件路由，DNS会将邮件发送到http://115.238.25.xxx所在的服务器，而正常通过Web请求的话仍然解析到A记录的IP地址</p>



<p class="wp-block-paragraph">3、CNAME记录</p>



<p class="wp-block-paragraph">Canonical Name，即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名，如将http://aaa.com解析到http://bbb.net、将http://ccc.com也解析到http://bbb.net，其中http://bbb.net分别是http://aaa.com和http://ccc.com的别名</p>



<p class="wp-block-paragraph">4、NS记录</p>



<p class="wp-block-paragraph">为某个域名指定DNS解析服务器，也就是这个域名由指定的IP地址的DNS服务器取解析</p>



<p class="wp-block-paragraph">5、TXT记录</p>



<p class="wp-block-paragraph">为某个主机名或域名设置说明，如可以为http://ddd.net设置TXT记录为&#8221;这是XXX的知乎&#8221;这样的说明</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2026/01/01/dns%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90%e8%bf%87%e7%a8%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>正则表达式语法介绍</title>
		<link>https://www.wublog.site/2025/12/28/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e8%af%ad%e6%b3%95%e4%bb%8b%e7%bb%8d/</link>
					<comments>https://www.wublog.site/2025/12/28/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e8%af%ad%e6%b3%95%e4%bb%8b%e7%bb%8d/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Sun, 28 Dec 2025 03:16:55 +0000</pubDate>
				<category><![CDATA[其他]]></category>
		<guid isPermaLink="false">https://www.wublog.site/?p=201</guid>

					<description><![CDATA[正则表达式（Regular Expression，简称 Regex）是一种强大的文本处理工具，它使用一种简洁而 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">正则表达式（Regular Expression，简称 Regex）是一种强大的文本处理工具，它使用一种简洁而又复杂的语法来匹配、查找和替换文本中的特定模式。无论是进行数据验证、日志分析、文本清理还是复杂的字符串匹配，正则表达式都能提供高效的解决方案。本篇文章将深入探讨正则表达式的语法、常见误区以及常用示例，帮助你更好地掌握这一工具。</p>



<h3 class="wp-block-heading" id="cu2pb">一、正则表达式基本语法解析</h3>



<h4 class="wp-block-heading" id="1k9mq">1. 基础字符</h4>



<ul class="wp-block-list">
<li><strong><code>.</code></strong>：匹配除换行符之外的任何单个字符。
<ul class="wp-block-list">
<li>示例：<code>a.b</code> 匹配 <code>aab</code>、<code>acb</code>，但不匹配 <code>ab</code>。</li>
</ul>
</li>



<li><strong><code>\d</code></strong>：匹配一个数字字符，等同于 <code>[0-9]</code>。
<ul class="wp-block-list">
<li>示例：<code>\d{3}</code> 匹配 <code>123</code>。</li>
</ul>
</li>



<li><strong><code>\D</code></strong>：匹配一个非数字字符，等同于 <code>[^0-9]</code>。
<ul class="wp-block-list">
<li>示例：<code>\D{3}</code> 匹配 <code>abc</code>。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="bf2cs">2. 字符类</h4>



<ul class="wp-block-list">
<li><strong><code>[abc]</code></strong>：匹配 <code>a</code>、<code>b</code> 或 <code>c</code> 中的任意一个字符。
<ul class="wp-block-list">
<li>示例：<code>[aeiou]</code> 匹配任意元音字母。</li>
</ul>
</li>



<li><strong><code>[^abc]</code></strong>：匹配除 <code>a</code>、<code>b</code> 或 <code>c</code> 之外的任何字符。
<ul class="wp-block-list">
<li>示例：<code>[^0-9]</code> 匹配非数字字符。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="3k3j3">3. 特殊字符</h4>



<ul class="wp-block-list">
<li><strong><code>\</code></strong>：转义字符，用于匹配特殊字符本身，如 <code>\.</code>、<code>\*</code> 等。
<ul class="wp-block-list">
<li>示例：<code>\.</code> 匹配点号字符 <code>.</code>。</li>
</ul>
</li>



<li><strong><code>\b</code></strong>：单词边界，匹配单词的开始或结束位置。
<ul class="wp-block-list">
<li>示例：<code>\bword\b</code> 匹配以 <code>word</code> 为完整单词的地方。</li>
</ul>
</li>



<li><strong><code>\B</code></strong>：非单词边界，匹配不在单词边界上的位置。
<ul class="wp-block-list">
<li>示例：<code>a\Bb</code> 匹配 <code>ab</code>，但不匹配 <code>a b</code>。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="ec21s">4. 元字符与量词</h4>



<ul class="wp-block-list">
<li><strong><code>*</code></strong>：匹配前一个字符零次或多次。
<ul class="wp-block-list">
<li>示例：<code>a*</code> 匹配 <code>""</code>（空字符串）、<code>a</code>、<code>aa</code> 等。</li>
</ul>
</li>



<li><strong><code>+</code></strong>：匹配前一个字符一次或多次。
<ul class="wp-block-list">
<li>示例：<code>a+</code> 匹配 <code>a</code>、<code>aa</code>、<code>aaa</code> 等，但不匹配 <code>""</code>。</li>
</ul>
</li>



<li><strong><code>?</code></strong>：匹配前一个字符零次或一次。
<ul class="wp-block-list">
<li>示例：<code>a?</code> 匹配 <code>""</code> 或 <code>a</code>。</li>
</ul>
</li>



<li><strong><code>{n}</code></strong>：匹配前一个字符恰好 <code>n</code> 次。
<ul class="wp-block-list">
<li>示例：<code>a{3}</code> 匹配 <code>aaa</code>。</li>
</ul>
</li>



<li><strong><code>{n,}</code></strong>：匹配前一个字符至少 <code>n</code> 次。
<ul class="wp-block-list">
<li>示例：<code>a{2,}</code> 匹配 <code>aa</code>、<code>aaa</code> 等。</li>
</ul>
</li>



<li><strong><code>{n,m}</code></strong>：匹配前一个字符至少 <code>n</code> 次，但不超过 <code>m</code> 次。
<ul class="wp-block-list">
<li>示例：<code>a{2,4}</code> 匹配 <code>aa</code>、<code>aaa</code>、<code>aaaa</code>。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="7jujc">5. 分组与选择</h4>



<ul class="wp-block-list">
<li><strong><code>()</code></strong>：用于分组，匹配的内容可以通过反向引用 <code>\1</code>、<code>\2</code> 等进行使用。
<ul class="wp-block-list">
<li>示例：<code>(abc)</code> 匹配 <code>abc</code>，并且可以通过 <code>\1</code> 引用。</li>
</ul>
</li>



<li><strong><code>|</code></strong>：选择符，表示 “或” 的关系。
<ul class="wp-block-list">
<li>示例：<code>a|b</code> 匹配 <code>a</code> 或 <code>b</code>。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="ehual">6. 断言</h4>



<ul class="wp-block-list">
<li><strong><code>(?=...)</code></strong>：正向前瞻，匹配后面跟着特定模式的地方，但不消费字符。
<ul class="wp-block-list">
<li>示例：<code>a(?=b)</code> 匹配 <code>a</code>，但要求其后必须是 <code>b</code>。</li>
</ul>
</li>



<li><strong><code>(?!...)</code></strong>：负向前瞻，匹配后面不跟着特定模式的地方。
<ul class="wp-block-list">
<li>示例：<code>a(?!b)</code> 匹配 <code>a</code>，但要求其后不跟 <code>b</code>。</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading" id="avjuc">7. 贪婪与非贪婪</h4>



<p class="wp-block-paragraph">正则表达式的量词（如&nbsp;<code>*</code>、<code>+</code>&nbsp;等）默认是贪婪的，会尽可能多地匹配字符。但有时我们希望它们匹配最少的字符，可以使用非贪婪匹配。</p>



<ul class="wp-block-list">
<li><strong>贪婪</strong>：<code>*</code>、<code>+</code>、<code>{n,m}</code> 默认是贪婪的，尽可能多地匹配字符。
<ul class="wp-block-list">
<li>示例：<code>a.*b</code> 匹配 <code>a</code> 和 <code>b</code> 之间的所有字符。</li>
</ul>
</li>



<li><strong>非贪婪</strong>：在量词后加上 <code>?</code>，即变为非贪婪模式。
<ul class="wp-block-list">
<li>示例：<code>a.*?b</code> 匹配 <code>a</code> 和 <code>b</code> 之间的最少字符。</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading" id="2btm">二、正则表达式的常见误区与避坑指南</h3>



<ol class="wp-block-list">
<li><strong>字符类的误用</strong>：
<ul class="wp-block-list">
<li><code>.</code> 匹配任意字符，但不要混淆它与 <code>\.</code>。如果你想匹配点号，必须使用 <code>\.</code>。</li>



<li><code>\d</code> 和 <code>\D</code> 只能匹配数字和非数字字符，不能匹配空格或字母等。</li>
</ul>
</li>



<li><strong>量词的贪婪性</strong>：
<ul class="wp-block-list">
<li>很多初学者容易忽略贪婪匹配的行为，导致正则表达式匹配到比预期更多的内容。通过使用非贪婪量词（<code>*?</code>、<code>+?</code>）可以避免这个问题。</li>
</ul>
</li>



<li><strong>正则表达式的效率问题</strong>：
<ul class="wp-block-list">
<li>正则表达式的效率会随着匹配文本的复杂度增加而下降。避免使用过于复杂的正则模式，尤其是在大数据量的情况下，可能会导致性能瓶颈。</li>
</ul>
</li>



<li><strong>捕获组的使用</strong>：
<ul class="wp-block-list">
<li>捕获组会保存匹配的内容，如果不需要这些内容，可以使用非捕获组 <code>(?:...)</code> 来优化性能。</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading" id="36h45">三、常用正则表达式示例</h3>



<ol class="wp-block-list">
<li><strong>验证邮箱地址</strong>：
<ul class="wp-block-list">
<li>正则：<code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code></li>



<li>解析：匹配合法的邮箱格式。</li>
</ul>
</li>



<li><strong>验证手机号</strong>：
<ul class="wp-block-list">
<li>正则：<code>^1[3-9]\d{9}$</code></li>



<li>解析：匹配中国大陆的手机号，第一位是 <code>1</code>，第二位是 <code>3-9</code> 中的数字，后面跟着 9 个数字。</li>
</ul>
</li>



<li><strong>提取网页链接中的</strong><strong>域名</strong>：
<ul class="wp-block-list">
<li>正则：<code>https?://([^/]+)</code></li>



<li>解析：匹配 <code>http</code> 或 <code>https</code> 开头的链接并提取域名部分。</li>
</ul>
</li>



<li><strong>匹配日期格式（yyyy-mm-dd）</strong>：
<ul class="wp-block-list">
<li>正则：<code>^\d{4}-\d{2}-\d{2}$</code></li>



<li>解析：匹配一个符合 <code>yyyy-mm-dd</code> 格式的日期。</li>
</ul>
</li>



<li><strong>匹配时间格式（HH:mm:ss）</strong>：
<ul class="wp-block-list">
<li>正则：<code>^([01]?[0-9]|2[0-3]):([0-5]?[0-9]):([0-5]?[0-9])$</code></li>



<li>解析：匹配符合 <code>HH:mm:ss</code> 格式的时间。</li>
</ul>
</li>



<li><strong>匹配正整数</strong>：
<ul class="wp-block-list">
<li>正则：<code>^\d+$</code></li>



<li>解析：匹配一个正整数。</li>
</ul>
</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2025/12/28/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e8%af%ad%e6%b3%95%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux 常用命令</title>
		<link>https://www.wublog.site/2025/12/21/linux-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4/</link>
					<comments>https://www.wublog.site/2025/12/21/linux-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Sun, 21 Dec 2025 08:24:06 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://119.29.214.245/?p=56</guid>

					<description><![CDATA[一、文件目录命令 1. pwd：显示当前目录路径 语法：pwd显示当前所在目录的完整路径。 2. ls：查看文 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">一、文件目录命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. pwd：显示当前目录路径</h4>



<p class="wp-block-paragraph">语法：<code>pwd</code><br>显示当前所在目录的完整路径。</p>



<h4 class="wp-block-heading"><a></a><a></a>2. ls：查看文件和目录</h4>



<p class="wp-block-paragraph">语法：<code>ls [OPTION]... [FILE]...</code><br><code>ls</code>命令用于查看当前目录下的所有文件和目录。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-a</code>：显示当前目录所有的文件和目录，包括隐藏文件和目录。</li>



<li><code>-l</code>：使用列表的方式显示信息，等同于<code>ll</code>命令，能详细展示文件的权限、所有者、大小、修改时间等信息。</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">在<code>ls</code>后面直接跟目录或者文件，用于指定查看的目录或者文件。</p>
</blockquote>



<h4 class="wp-block-heading"><a></a><a></a>3. cd：切换目录</h4>



<p class="wp-block-paragraph">语法：<code>cd [-L|[-P [-e]]] [dir]</code><br><code>cd</code>命令用于切换目录，常见示例如下：</p>



<ul class="wp-block-list">
<li><code>cd 目录名</code>：切换到指定目录。</li>



<li><code>cd ..</code>：切换到上一级目录。</li>



<li><code>cd /</code>&nbsp;或&nbsp;<code>cd ~</code>：切换到home目录。</li>



<li><code>cd -</code>：切换到上次访问的目录。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>4. mkdir：创建目录</h4>



<p class="wp-block-paragraph">语法：<code>mkdir [OPTION]... DIRECTORY...</code><br><code>mkdir</code>用于创建目录。如果要创建多级目录，需要使用<code>-p</code>选项。</p>



<h4 class="wp-block-heading"><a></a><a></a>5. rmdir：删除空目录</h4>



<p class="wp-block-paragraph">语法：<code>rmdir [OPTION]... DIRECTORY...</code><br><code>rmdir</code>只能用于删除空目录。如果目录非空，使用该命令会提示错误。</p>



<h4 class="wp-block-heading"><a></a><a></a>6. touch：创建空文件</h4>



<p class="wp-block-paragraph">语法：<code>touch [OPTION]... FILE...</code><br><code>touch</code>命令用于创建一个或多个空文件。<br><code>touch test.txt</code>会在当前目录下创建一个名为<code>test.txt</code>的空文件。</p>



<h4 class="wp-block-heading"><a></a><a></a>7. rm：删除文件或目录</h4>



<p class="wp-block-paragraph">语法：<code>rm [OPTION]... FILE...</code><br><code>rm</code>命令可用于删除文件或目录，使用时需谨慎。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-r</code>：递归删除整个文件夹。</li>



<li><code>-f</code>：强制删除不提示。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>8. mv：重命名或移动文件/目录</h4>



<p class="wp-block-paragraph">语法：<code>mv [OPTION]... SOURCE... DIRECTORY</code><br><code>mv</code>命令有两个主要用途：一是重命名文件或目录，二是将文件或目录从一个位置移动到另一个位置。</p>



<h4 class="wp-block-heading"><a></a><a></a>9. cp：复制文件或目录</h4>



<p class="wp-block-paragraph">语法：<code>cp [OPTION]... SOURCE... DIRECTORY</code><br><code>cp</code>命令用于复制文件或目录。递归复制目录需要使用<code>-r</code>选项。</p>



<h4 class="wp-block-heading"><a></a><a></a>10. 文件查看命令</h4>



<h5 class="wp-block-heading"><a></a>（1）cat：显示文件内容</h5>



<p class="wp-block-paragraph">语法：<code>cat [OPTION]... [FILE]...</code><br><code>cat</code>用于查看文件内容，但只能显示最后一屏内容。使用<code>-n</code>选项可以显示行号。</p>



<h5 class="wp-block-heading"><a></a>（2）more：百分比查看文件内容</h5>



<p class="wp-block-paragraph">语法：<code>more [options] file...</code><br><code>more</code>命令以百分比的形式查看文件内容，回车可以向下一行，空格向下一页，按<code>q</code>退出查看。</p>



<h5 class="wp-block-heading"><a></a>（3）less：分屏查看文件内容</h5>



<p class="wp-block-paragraph">语法：<code>less [options] file...</code><br><code>less</code>功能与<code>more</code>相似，但更强大，适合查看大文件。常用快捷键如下：</p>



<ul class="wp-block-list">
<li>空格：向下一页。</li>



<li><code>q</code>：退出。</li>



<li><code>pagedown</code>：向下一页。</li>



<li><code>pageup</code>：向上一页。</li>



<li><code>/字符串</code>：向下搜索字符串，<code>n</code>向下查找，<code>N</code>向上查找。</li>



<li><code>?字符串</code>：向上搜索字符串，操作与<code>/字符串</code>类似。</li>
</ul>



<h5 class="wp-block-heading"><a></a>（4）head：从文件头开始查看内容</h5>



<p class="wp-block-paragraph">语法：<code>head [OPTION]... [FILE]...</code><br><code>head</code>命令从文件头开始查看内容，使用<code>-n 行数</code>可以指定查看的行数。</p>



<h5 class="wp-block-heading"><a></a>（5）tail：从文件尾部开始查看内容</h5>



<p class="wp-block-paragraph">语法：<code>tail [OPTION]... [FILE]...</code><br><code>tail</code>与<code>head</code>原理类似，但从文件尾部开始查看。<code>-n</code>用于指定行数，表示查看文件尾部的行数。</p>



<h4 class="wp-block-heading"><a></a><a></a>11. 重定向指令</h4>



<h5 class="wp-block-heading"><a></a>（1）&gt;：覆盖写入</h5>



<p class="wp-block-paragraph">语法：<code>命令 &gt; 目标文件</code><br>该指令将命令所产生的结果写入目标文件中，会覆盖原有内容。</p>



<h5 class="wp-block-heading"><a></a>（2）&gt;&gt;`：追加写入</h5>



<p class="wp-block-paragraph">语法：<code>命令 &gt;&gt; 目标文件</code><br><code>&gt;&gt;</code>也是将结果写入目标文件中，但采用追加的方式，不会覆盖原有内容。</p>



<h3 class="wp-block-heading">二、时间日期指令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. date：显示和设置时间</h4>



<p class="wp-block-paragraph">语法：<code>date [OPTION]... [+FORMAT]</code><br><code>date</code>命令用于显示当前时间。<code>[+FORMAT]</code>用于指定显示的格式，常用格式如下：</p>



<ul class="wp-block-list">
<li><code>date +%Y</code>：显示当前年份。</li>



<li><code>date +%m</code>：显示当前月份。</li>



<li><code>date +%d</code>：显示当前日。</li>



<li><code>date -s 时间字符串</code>：用于设置时间。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>2. cal：显示日历</h4>



<p class="wp-block-paragraph">语法：<code>cal [options] [[[day] month] year]</code><br><code>cal</code>命令用于显示日历。常用指令如下：</p>



<ul class="wp-block-list">
<li><code>cal</code>：显示当前月的日历。</li>



<li><code>cal 年份</code>：显示某年份的日历。</li>
</ul>



<h3 class="wp-block-heading">三、用户管理和组管理</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. 用户管理</h4>



<h5 class="wp-block-heading"><a></a>（1）新增用户</h5>



<p class="wp-block-paragraph">语法：<code>useradd</code>&nbsp;[选项] username<br>例如，<code>useradd test</code>会创建一个名为<code>test</code>的用户，并指定组为<code>test</code>，同时在<code>/home</code>目录下创建<code>test</code>目录作为用户的主目录。使用<code>passwd test</code>可以给新建的<code>test</code>用户设置密码。常见选项如<code>-d /home/test1</code>，用于手动指定主目录。</p>



<h5 class="wp-block-heading"><a></a>（2）删除用户</h5>



<p class="wp-block-paragraph">语法：<code>userdel</code>&nbsp;[选项] username<br><code>userdel test</code>用于删除用户<code>test</code>，但保留其主目录。使用<code>-r</code>选项（如<code>userdel -r test</code>）可以在删除用户时一起删除主目录。</p>



<h5 class="wp-block-heading"><a></a>（3）查看用户信息</h5>



<p class="wp-block-paragraph">语法：<code>id</code>&nbsp;username<br><code>id test</code>用于查看用户<code>test</code>的信息。</p>



<h5 class="wp-block-heading"><a></a>（4）切换用户</h5>



<p class="wp-block-paragraph">语法：<code>su</code>&nbsp;username<br><code>su root</code>用于切换到<code>root</code>用户。低权限用户切换到高权限用户需要输入密码，使用<code>exit</code>命令可以回到之前的用户。</p>



<h5 class="wp-block-heading"><a></a>（5）查看当前用户</h5>



<p class="wp-block-paragraph">语法：<code>whoami</code><br>输入该命令会显示当前用户名。</p>



<h4 class="wp-block-heading"><a></a><a></a>2. 组管理</h4>



<h5 class="wp-block-heading"><a></a>（1）新增组</h5>



<p class="wp-block-paragraph">语法：<code>groupadd</code>&nbsp;groupname<br><code>groupadd test</code>用于创建组<code>test</code>。</p>



<h5 class="wp-block-heading"><a></a>（2）删除组</h5>



<p class="wp-block-paragraph">语法：<code>groupdel</code>&nbsp;groupname<br><code>groupdel test</code>用于删除组<code>test</code>。</p>



<h5 class="wp-block-heading"><a></a>（3）指定组</h5>



<p class="wp-block-paragraph">有两种方式：</p>



<ul class="wp-block-list">
<li><code>useradd -g</code>&nbsp;groupname username：在新增用户时手动指定组，需要先创建组。</li>



<li><code>gpasswd -a&nbsp;</code>username groupname：将用户添加到组里面。</li>
</ul>



<h5 class="wp-block-heading"><a></a>（4）将用户从组中移除</h5>



<p class="wp-block-paragraph">语法：<code>gpasswd -d</code>&nbsp;username groupname<br>该命令用于将指定用户从指定组中移除。</p>



<h3 class="wp-block-heading">四、文件权限管理</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. 文件权限基础知识</h4>



<p class="wp-block-paragraph">在Linux中，每个文件和目录都有相关的权限，权限类型有三种：读取（Read）、写入（Write）和执行（Execute）。每一个文件或目录都有一个文件类型标识和9个权限位，权限位分为三组，分别代表文件所有者、同组用户和不同组用户的权限。具体对应关系如下：</p>



<ul class="wp-block-list">
<li><code>读取权限（Read）</code>：对应数字为 4，对应字符为 r，可以查看文件内容，列出目录中的内容。</li>



<li><code>写入权限（Write）</code>：对应数字为 2，对应字符为 w，可以修改文件内容，在目录中创建、删除文件。</li>



<li><code>执行权限（Execute）</code>：对应数字为 1，对应字符为 x，可以执行文件或者进入目录。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>2. 权限相关命令</h4>



<h5 class="wp-block-heading"><a></a>（1）chmod：更改文件权限</h5>



<p class="wp-block-paragraph">语法：<code>chmod [OPTION]... MODE[,MODE]... FILE...</code><br>有两种更改方式：</p>



<ul class="wp-block-list">
<li>通过<code>r、w、x</code>更改：例如，<code>chmod u=rwx,g=wx,o=r</code>&nbsp;文件名，<code>u、g、o、a</code>分别是文件所有者、文件所在组用户、其他组用户、所有用户的标识；<code>=、+、-</code>分别代表设置权限、增加权限、取消权限的含义。</li>



<li>通过数字更改：例如，<code>chmod 754 文件名</code>，其中<code>r=4</code>，<code>w=2</code>，<code>x=1</code>，<code>rwx=4+2+1=7</code>。</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><code>u、g、o、a</code>&nbsp;分别是文件所有者、文件所在组用户、其他组用户、所有用户的标识<br><code>=、+、-</code>分别代表设置权限、增加权限、取消权限的含义</p>
</blockquote>



<h5 class="wp-block-heading"><a></a>（2）chown：改变文件或目录的所有者</h5>



<p class="wp-block-paragraph">语法：<code>chown [OPTION]... [OWNER][:[GROUP]] FILE...</code></p>



<h5 class="wp-block-heading"><a></a>（3）chgrp：改变文件或目录的所属组</h5>



<p class="wp-block-paragraph">语法：<code>chgrp [OPTION]... GROUP FILE...</code><br>例如，<code>chgrp centos test.txt</code>将文件<code>test.txt</code>的所属组改为<code>centos</code>。</p>



<h5 class="wp-block-heading"><a></a>（4）umask：查看和修改新建时默认文件权限</h5>



<p class="wp-block-paragraph">语法：<code>umask [-p] [-S] [mode]</code><br>使用<code>umask</code>命令可以显示新建时默认文件权限。</p>



<h3 class="wp-block-heading">五、网络管理命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. ifconfig</h4>



<p class="wp-block-paragraph">语法：<code>ifconfig</code><br>作用：查看网卡信息。通过该命令可以获取网卡的IP地址、子网掩码、MAC地址等信息，帮助我们了解网络接口的配置情况。</p>



<h4 class="wp-block-heading"><a></a><a></a>2. ping</h4>



<p class="wp-block-paragraph">语法：<code>ping ip地址/域名</code><br>作用：测试与某台主机的连通性。例如，<code>ping www.baidu.com</code>&nbsp;可以测试当前主机与百度服务器之间的网络连接是否正常。</p>



<h4 class="wp-block-heading"><a></a><a></a>3. curl</h4>



<p class="wp-block-paragraph">语法：<code>curl [options...] &lt;url&gt;</code><br>作用：用来发送HTTP请求。可以用于获取网页内容、上传文件等操作。</p>



<h4 class="wp-block-heading"><a></a><a></a>4. host</h4>



<p class="wp-block-paragraph">语法：<code>host ip/域名</code><br>作用：做DNS查询，可以查询ip相关的域名，反之也可。比如，<code>host 8.8.8.8</code>&nbsp;可以查询该IP对应的域名信息。</p>



<h4 class="wp-block-heading"><a></a><a></a>5. netstat</h4>



<p class="wp-block-paragraph">语法：<code>netstat [options...]</code><br>作用：监测网络连接状态、查找端口占用情况、分析网络通信状况。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-a</code>：显示所有端口。</li>



<li><code>-n</code>：数字形式显示网络地址和端口号。</li>
</ul>



<h3 class="wp-block-heading">六、进程管理命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. 进程基本介绍</h4>



<ul class="wp-block-list">
<li>在Linux中，每一个正在执行的程序都称为一个进程，每个进程都有各自的pid（进程ID）。</li>



<li>进程分为后台与前台进程，前台进程是用户可以感知到的，后台进程则相反。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>2. 进程相关命令</h4>



<h5 class="wp-block-heading"><a></a>（1）ps</h5>



<p class="wp-block-paragraph">语法：<code>ps [options]</code><br>作用：查看进程相关信息。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-a</code>：显示当前终端下的所有进程信息。</li>



<li><code>-u</code>：以用户的格式显示进程信息。</li>



<li><code>-x</code>：显示后台进程运行的参数。</li>



<li><code>-f</code>：用全格式显示进程信息。</li>



<li><code>-e</code>：显示所有进程信息。</li>
</ul>



<p class="wp-block-paragraph">例如：<code>ps -aux</code>&nbsp;可以查看所有用户的所有进程信息。</p>



<h5 class="wp-block-heading"><a></a>（2）kill、killall</h5>



<p class="wp-block-paragraph">语法：<code>kill [options] pid / killall 进程名称</code><br>作用：停止进程。示例：<code>kill -9 进程号</code>，其中<code>-9</code>是一种信号，用于强制终止进程。</p>



<h5 class="wp-block-heading"><a></a>（3）top</h5>



<p class="wp-block-paragraph">语法：<code>top</code><br>作用：用于实时显示进程的信息。可以动态查看系统中各个进程的资源占用情况。</p>



<h5 class="wp-block-heading"><a></a>（4）pstree</h5>



<p class="wp-block-paragraph">语法：<code>pstree [options...]</code><br>作用：以树的形式直观的查看进程信息。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-p</code>：显示进程的pid。</li>



<li><code>-u</code>：显示进程所属的用户。</li>
</ul>



<h3 class="wp-block-heading">七、压缩和解压缩命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. zip</h4>



<p class="wp-block-paragraph">语法：<code>zip [-options] targetName 将要压缩的文件或目录</code><br>作用：将指定文件或者目录压缩。用于目录压缩需要指定选项<code>-r</code>进行递归压缩。</p>



<h4 class="wp-block-heading"><a></a><a></a>2. unzip</h4>



<p class="wp-block-paragraph">语法：<code>unzip [OPTION]... 被zip命令压缩的文件</code><br>作用：用于解压zip命令压缩生成的文件。默认解压后文件存放在当前文件夹，<code>-d</code>可以手工指定文件夹。</p>



<h4 class="wp-block-heading"><a></a><a></a>3. gzip</h4>



<p class="wp-block-paragraph">语法：<code>gzip file</code><br>作用：与zip相比，只能压缩单个文件，并会删除源文件，后缀格式为.gz。</p>



<h4 class="wp-block-heading"><a></a><a></a>4. gunzip</h4>



<p class="wp-block-paragraph">语法：<code>gunzip 压缩文件</code><br>作用：解压gzip压缩的文件，解压后会删除原压缩文件。</p>



<h4 class="wp-block-heading"><a></a><a></a>5. tar</h4>



<p class="wp-block-paragraph">语法：<code>tar [OPTION]... targetName 待打包文件或者目录</code><br>作用：tar只是一个简单的打包命令，压缩和解压缩都是由选项决定的。常用选项如下：</p>



<ul class="wp-block-list">
<li><code>-c</code>：生成.tar.gz文件。</li>



<li><code>-z</code>：打包的时候压缩。</li>



<li><code>-x</code>：解压文件。</li>



<li><code>-v</code>：显示详细信息。</li>



<li><code>-f</code>：指定压缩/解压后的文件名。</li>



<li><code>-C</code>：指定解压到哪个目标目录。</li>
</ul>



<p class="wp-block-paragraph">示例：</p>



<ul class="wp-block-list">
<li><code>tar -zcvf demo.tar.gz demo demo.txt</code>&nbsp;将文件<code>demo</code>和<code>demo.txt</code>打包成<code>demo.tar.gz</code>。</li>



<li><code>tar -zxvf demo.tar.gz -C test/</code>&nbsp;将<code>demo.tar.gz</code>解压到指定的目录<code>test/</code>中。</li>
</ul>



<h3 class="wp-block-heading">八、搜索查找指令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. find</h4>



<p class="wp-block-paragraph">find命令会从指定目录向下递归遍历各个子目录，从而找到满足条件的文件或目录。<br>语法：<code>find [指定查找目录]... [OPTION]</code><br><code>OPTION</code>常用可选值有以下几种，可以自由组合：</p>



<ul class="wp-block-list">
<li><code>-name</code>：按照名称查找，支持通配符。</li>



<li><code>-user</code>：使用用户名查找。</li>



<li><code>-size&nbsp;</code>：按照文件大小查找，<code>+</code>号表示大于，<code>-</code>号表示小于。</li>



<li><code>-perm</code>：指定文件的权限。</li>



<li><code>-type&nbsp;</code>：指定文件的类型，<code>d</code>为目录。</li>
</ul>



<p class="wp-block-paragraph">示例：</p>



<ul class="wp-block-list">
<li><code>find -name test.txt</code>：在当前目录下查找<code>test.txt</code>。</li>



<li><code>find / -name '*.txt'</code>：从根目录下递归查找以<code>.txt</code>结尾的文件。</li>



<li><code>find -type d</code>：查找当前目录下的所有目录。</li>



<li><code>find -size +100M/-100M</code>：查找当前目录下大于100M/小于100M的文件。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>2. locate</h4>



<p class="wp-block-paragraph">系统默认每天自动备份更新系统的文件路径数据，使用locate指令可以快速定位整个系统的文件路径。使用locate命令查不到最新变动过的文件，可以使用命令<code>updatedb</code>手动更新到最新。<br>语法：<code>locate [OPTION]... [PATTERN]...</code><br>示例：<code>locate test.txt</code>&nbsp;查找文件名含有<code>test.txt</code>的所有文件。</p>



<h4 class="wp-block-heading"><a></a><a></a>3.&nbsp;grep</h4>



<p class="wp-block-paragraph">grep命令是一种强大的文本搜索工具。<br>语法：<code>grep [OPTION]... PATTERN [FILE]...</code><br>常用选项示例：</p>



<ul class="wp-block-list">
<li><code>-n</code>：显示行号。</li>



<li><code>-i</code>：忽略大小写。</li>
</ul>



<p class="wp-block-paragraph">示例：<code>cat 文件 | grep ‘搜索的字符’</code>&nbsp;将文件中的内容使用grep进行搜索，<code>|</code>为管道符，可以将前一个命令的处理结果输出传递到后面的命令处理。</p>



<h4 class="wp-block-heading"><a></a><a></a>4. which</h4>



<p class="wp-block-paragraph">语法：<code>which 命令</code><br>作用：用于搜索某个系统命令在PATH变量指定的位置。示例：<code>which java</code></p>



<h4 class="wp-block-heading"><a></a><a></a>5. whereis</h4>



<p class="wp-block-paragraph">语法：<code>whereis file...</code><br>作用：用于搜索可执行文件、源代码文件、帮助文件在系统中的位置。示例：<code>whereis pwd</code></p>



<h3 class="wp-block-heading">九、软件包管理命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. yum list</h4>



<p class="wp-block-paragraph">语法：yum list<br>作用：查询系统已经安装的软件。此命令经常和<code>grep</code>一起使用。示例：<code>yum list | grep maven</code>&nbsp;查询maven相关的本地软件。</p>



<h4 class="wp-block-heading"><a></a><a></a>2. yum install</h4>



<p class="wp-block-paragraph">语法：<code>yum install 软件包名</code><br>作用：下载安装软件包。示例：<code>yum install ftp</code></p>



<h4 class="wp-block-heading"><a></a><a></a>3. yum remove</h4>



<p class="wp-block-paragraph">语法：<code>yum remove 软件包名</code><br>作用：卸载软件包。示例：<code>yum remove ftp</code></p>



<h3 class="wp-block-heading">十、关机重启、帮助命令</h3>



<h4 class="wp-block-heading"><a></a><a></a>1. 关机重启</h4>



<p class="wp-block-paragraph">语法：<code>shutdown</code>&nbsp;[OPTIONS…] [TIME] [WALL…]</p>



<p class="wp-block-paragraph">关机示例：</p>



<ul class="wp-block-list">
<li><code>shutdown -h now</code>：立刻关机。</li>



<li><code>shutdown -h 分钟数</code>：多少分钟后关机。</li>



<li><code>poweroff</code>：立刻关机。</li>
</ul>



<p class="wp-block-paragraph">重启示例：</p>



<ul class="wp-block-list">
<li><code>shutdown -r now</code>：立刻重启。</li>



<li><code>shutdown -r 分钟数</code>：多少分钟后重启。</li>



<li><code>reboot</code>：立刻重启。</li>
</ul>



<h4 class="wp-block-heading"><a></a><a></a>2. 帮助命令</h4>



<h5 class="wp-block-heading"><a></a>（1）help/–help</h5>



<p class="wp-block-paragraph">语法：<code>help</code>&nbsp;命令 或者 命令&nbsp;<code>--help</code><br>示例：</p>



<ul class="wp-block-list">
<li><code>help cd</code></li>



<li><code>cd --help</code></li>
</ul>



<p class="wp-block-paragraph">需要注意的是，<code>help</code>命令有时候会不生效，建议使用<code>--help</code>。</p>



<h5 class="wp-block-heading"><a></a>（2）man 命令</h5>



<p class="wp-block-paragraph">语法：&nbsp;<code>man</code>&nbsp;命令</p>



<p class="wp-block-paragraph"><code>man</code>命令会进入文档，按<code>q</code>键退出。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2025/12/21/linux-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux 用命令行搭建 WordPress 博客</title>
		<link>https://www.wublog.site/2025/12/21/linux-%e7%94%a8%e5%91%bd%e4%bb%a4%e8%a1%8c%e6%90%ad%e5%bb%ba-wordpress-%e5%8d%9a%e5%ae%a2/</link>
					<comments>https://www.wublog.site/2025/12/21/linux-%e7%94%a8%e5%91%bd%e4%bb%a4%e8%a1%8c%e6%90%ad%e5%bb%ba-wordpress-%e5%8d%9a%e5%ae%a2/#respond</comments>
		
		<dc:creator><![CDATA[Wu]]></dc:creator>
		<pubDate>Sun, 21 Dec 2025 02:46:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://119.29.214.245/?p=32</guid>

					<description><![CDATA[以下内容以Debian及其衍生发行版为例： 一、搭建 LNMP 环境 MySQL 和 PHP 需先去官网下载并 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">以下内容以Debian及其衍生发行版为例：</p>



<h2 class="wp-block-heading has-medium-font-size">一、搭建 LNMP 环境</h2>



<p class="wp-block-paragraph">MySQL 和 PHP 需先去官网下载并安装 .deb 文件</p>



<pre class="wp-block-preformatted"><code>sudo apt update &amp;&amp; sudo apt upgrade -y<br>sudo apt install -y nginx mysql-server php8.5 php8.5-fpm php8.5-gd php8.5-curl php8.5-dom php8.5-mbstring php8.5-zip php8.5-intl php8.5-imagick php8.5-mysql</code></pre>



<h2 class="wp-block-heading has-medium-font-size">二、配置 MySQL 数据库</h2>



<pre class="wp-block-preformatted has-medium-font-size"><code>sudo mysql -u root -p<br>CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;<br>CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_strong_password';<br>GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';<br>FLUSH PRIVILEGES;<br>EXIT;</code></pre>



<p class="has-medium-font-size wp-block-paragraph">请记住这些信息：数据库名: wordpress, 用户名: wpuser, 密码: your_strong_password</p>



<h2 class="wp-block-heading has-medium-font-size">三、下载 WordPress 并设置权限</h2>



<pre class="wp-block-preformatted has-medium-font-size"><code>cd /var/www/<br>sudo wget https://wordpress.org/latest.tar.gz<br>sudo tar -xzvf latest.tar.gz<br>sudo chown -R www-data:www-data wordpress<br>sudo chmod -R 755 wordpress</code></pre>



<h2 class="wp-block-heading has-medium-font-size">四、配置 Nginx 虚拟主机</h2>



<pre class="wp-block-preformatted has-medium-font-size"><code>sudo nano /etc/nginx/sites-available/wordpress</code></pre>



<p class="has-medium-font-size wp-block-paragraph">写入以下内容（需要修改<strong>网站域名</strong>和<strong>PHP版本</strong>）：</p>



<pre class="wp-block-preformatted has-medium-font-size"><code>server {<br>    listen 80;<br>    server_name your-domain.com www.your-domain.com;<br><br>    root /var/www/wordpress;<br>    index index.php index.html index.htm;<br><br>    location / {<br>        try_files $uri $uri/ /index.php?$args;<br>    }<br><br>    location ~ \.php$ {<br>        include snippets/fastcgi-php.conf;<br>        fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;<br>        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>        include fastcgi_params;<br>    }<br><br>    location ~ /\.ht {<br>        deny all;<br>    }<br>}</code></pre>



<p class="has-medium-font-size wp-block-paragraph">启动配置：</p>



<pre class="wp-block-preformatted"><code>sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/<br>sudo nginx -t<br>sudo systemctl reload nginx</code></pre>



<h2 class="wp-block-heading has-medium-font-size">五、完成 WordPress 安装</h2>



<p class="wp-block-paragraph">打开浏览器访问：</p>



<p class="wp-block-paragraph"><code>http://你的IP 或 http://你的域名</code></p>



<p class="wp-block-paragraph">你将看到 WordPress 安装页面：</p>



<ol class="wp-block-list">
<li>选择语言</li>



<li>填写数据库信息：
<ul class="wp-block-list">
<li>数据库名：wordpress</li>



<li>用户名：wpuser</li>



<li>密码：your_strong_password</li>



<li>数据库主机：localhost</li>



<li>表前缀：wp_</li>
</ul>
</li>



<li>填写站点标题、用户名、密码、邮箱</li>
</ol>



<p class="wp-block-paragraph">点击“安装”，完成！</p>



<h3 class="wp-block-heading">附一张 WordPress 预设的 5 种用户角色表格：</h3>



<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center"><strong>角色名称</strong></td><td class="has-text-align-center" data-align="center"><strong>核心权限范围</strong></td><td class="has-text-align-center" data-align="center"><strong>适合人群</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><strong>管理员</strong></td><td class="has-text-align-center" data-align="center">拥有网站所有权限（修改设置、安装插件、删除内容等）</td><td class="has-text-align-center" data-align="center">网站所有者、核心管理者</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>编辑</strong></td><td class="has-text-align-center" data-align="center">可发布和管理所有文章 / 页面，无法修改核心设置</td><td class="has-text-align-center" data-align="center">内容审核员、主编</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>作者</strong></td><td class="has-text-align-center" data-align="center">只能发布和管理自己的文章，无法编辑他人内容</td><td class="has-text-align-center" data-align="center">专栏作家、客座作者</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>贡献者</strong></td><td class="has-text-align-center" data-align="center">可写文章但需审核，无法直接发布</td><td class="has-text-align-center" data-align="center">新手作者、需要审核的投稿者</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>订阅者</strong></td><td class="has-text-align-center" data-align="center">只能管理个人资料，无内容发布权限</td><td class="has-text-align-center" data-align="center">网站会员、仅需登录的用户</td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wublog.site/2025/12/21/linux-%e7%94%a8%e5%91%bd%e4%bb%a4%e8%a1%8c%e6%90%ad%e5%bb%ba-wordpress-%e5%8d%9a%e5%ae%a2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
