<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>码上生长 - 探索个人成长的无限可能</title>
    <link>https://dstweihao.cn/</link>
    <description>Recent content on 码上生长 - 探索个人成长的无限可能</description>
    <generator>Hugo -- 0.144.2</generator>
    <language>zh</language>
    <lastBuildDate>Thu, 11 Sep 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://dstweihao.cn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>旧闹钟怕被智能音箱取代，竟偷偷调快时间</title>
      <link>https://dstweihao.cn/posts/ai%E7%A6%BB%E8%B0%B1%E5%B0%8F%E5%89%A7%E5%9C%BA/%E6%97%A7%E9%97%B9%E9%92%9F%E6%80%95%E8%A2%AB%E6%99%BA%E8%83%BD%E9%9F%B3%E7%AE%B1%E5%8F%96%E4%BB%A3%E7%AB%9F%E5%81%B7%E5%81%B7%E8%B0%83%E5%BF%AB%E6%97%B6%E9%97%B4/</link>
      <pubDate>Thu, 11 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/ai%E7%A6%BB%E8%B0%B1%E5%B0%8F%E5%89%A7%E5%9C%BA/%E6%97%A7%E9%97%B9%E9%92%9F%E6%80%95%E8%A2%AB%E6%99%BA%E8%83%BD%E9%9F%B3%E7%AE%B1%E5%8F%96%E4%BB%A3%E7%AB%9F%E5%81%B7%E5%81%B7%E8%B0%83%E5%BF%AB%E6%97%B6%E9%97%B4/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509111810417.png&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;一故事内容&#34;&gt;一、故事内容&lt;/h4&gt;
&lt;p&gt;床头的旧闹钟最近总在 “耍小心机”—— 每天凌晨趁主人没醒，它就悄悄把指针往前拨 5 分钟。&lt;/p&gt;
&lt;p&gt;看着主人提前穿好衣服、还能多喝半杯热豆浆，它就躲在床头偷偷得意：“这样主人就不会觉得我没用，智能音箱也抢不走我的工作啦！”&lt;/p&gt;
&lt;p&gt;可这小把戏没藏多久，就被旁边的智能音箱戳穿了：“你都累计走快半小时了，昨天主人赶地铁时一路跑，差点把早餐撒了！” 旧闹钟的指针顿了顿，有点慌 —— 它只是怕被装进收纳盒，再也见不到主人睡前摸它外壳的温度。&lt;/p&gt;
&lt;p&gt;今早主人整理床头时，指尖碰到松动的闹钟后盖，“咔嗒” 一声拧紧了电池。她对着慢下来的指针笑：“难怪最近总早醒，原来是你在提醒我该换电池啦。” 旧闹钟的玻璃罩上凝了层薄雾，突然觉得：被看穿 “小心思” 也没关系，主人的手温比任何智能提醒都暖。&lt;/p&gt;
&lt;h4 id=&#34;二互动时刻&#34;&gt;二、互动时刻&lt;/h4&gt;
&lt;p&gt;你家有没有过 “怕被淘汰” 的老物件呀？比如总在充电的旧手机、掉了漆的保温杯，你猜它会有什么小 “小心思”？评论区跟大家分享～&lt;/p&gt;
&lt;h4 id=&#34;三明日预告&#34;&gt;三、明日预告&lt;/h4&gt;
&lt;p&gt;明天 18:00 要讲窗台多肉的趣事啦！最胖的玉露总抢着要主人先浇水，却没发现角落里的小多肉，每天都悄悄把自己的水珠蹭给发蔫的伙伴 —— 记得来蹲它们的 “互助小秘密”～&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509111810417.png"></p>
<h4 id="一故事内容">一、故事内容</h4>
<p>床头的旧闹钟最近总在 “耍小心机”—— 每天凌晨趁主人没醒，它就悄悄把指针往前拨 5 分钟。</p>
<p>看着主人提前穿好衣服、还能多喝半杯热豆浆，它就躲在床头偷偷得意：“这样主人就不会觉得我没用，智能音箱也抢不走我的工作啦！”</p>
<p>可这小把戏没藏多久，就被旁边的智能音箱戳穿了：“你都累计走快半小时了，昨天主人赶地铁时一路跑，差点把早餐撒了！” 旧闹钟的指针顿了顿，有点慌 —— 它只是怕被装进收纳盒，再也见不到主人睡前摸它外壳的温度。</p>
<p>今早主人整理床头时，指尖碰到松动的闹钟后盖，“咔嗒” 一声拧紧了电池。她对着慢下来的指针笑：“难怪最近总早醒，原来是你在提醒我该换电池啦。” 旧闹钟的玻璃罩上凝了层薄雾，突然觉得：被看穿 “小心思” 也没关系，主人的手温比任何智能提醒都暖。</p>
<h4 id="二互动时刻">二、互动时刻</h4>
<p>你家有没有过 “怕被淘汰” 的老物件呀？比如总在充电的旧手机、掉了漆的保温杯，你猜它会有什么小 “小心思”？评论区跟大家分享～</p>
<h4 id="三明日预告">三、明日预告</h4>
<p>明天 18:00 要讲窗台多肉的趣事啦！最胖的玉露总抢着要主人先浇水，却没发现角落里的小多肉，每天都悄悄把自己的水珠蹭给发蔫的伙伴 —— 记得来蹲它们的 “互助小秘密”～</p>
]]></content:encoded>
    </item>
    <item>
      <title>SEO 优化工具介绍与实操说明</title>
      <link>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/seo-%E4%BC%98%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D%E4%B8%8E%E5%AE%9E%E6%93%8D%E8%AF%B4%E6%98%8E/</link>
      <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/seo-%E4%BC%98%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D%E4%B8%8E%E5%AE%9E%E6%93%8D%E8%AF%B4%E6%98%8E/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101320607.jpeg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;在之前的文章《ToB 官网 SEO 工作总结：认知转变、工具实操与排名/收录优化思路》中，曾提及部分 SEO 优化检测工具，但未展开说明。&lt;/p&gt;
&lt;p&gt;本次将结合个人使用经验，以本人博客网站（https://dstweihao.cn）为例，简单介绍常用 SEO 工具的核心用法。&lt;/p&gt;
&lt;h1 id=&#34;2-百度统计&#34;&gt;2. 百度统计&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;官网地址：https://tongji.baidu.com/web5/welcome/login&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;对我而言，百度统计的核心作用是统计网站访问量、受访页面排行、搜索词排行等基础数据。其余功能比如转化分析、地区分布更适合 ToC 场景，现阶段使用需求较低。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091748125.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;这里补充一个使用小插曲：&lt;/p&gt;
&lt;p&gt;曾遇到登录百度统计后，主页持续报错且刷新无效的问题。&lt;/p&gt;
&lt;p&gt;排查后发现是电脑安装的 AdGuard 广告拦截工具对该网站进行了拦截，其他网站无此问题。&lt;/p&gt;
&lt;p&gt;最快捷的解决方式是暂时关闭 AdGuard 即可正常使用。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091754292.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3-百度搜索资源平台&#34;&gt;3. 百度搜索资源平台&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;官网地址：https://ziyuan.baidu.com/keywords/index&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;百度搜索资源平台不仅有丰富的 SEO 学习资料，从工具层面看，其核心价值在于帮我解决了“官网关键词排名未知”的痛点。&lt;/p&gt;
&lt;p&gt;比如想知道博客网站在百度搜索“项目管理”时的具体排名，也就是第几页、第几行。&lt;/p&gt;
&lt;p&gt;以“项目管理”关键词为例，百度搜索结果中，除百度百科的专有名词解释页外，排名靠前的是知乎文章《什么是项目管理？五大流程是什么》。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091800113.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;实际上，SEO 优化的核心目标之一，就是让含目标关键词的页面（网站首页、文章页或产品说明页)排名靠前。&lt;/p&gt;
&lt;p&gt;通过平台内的“流量与关键词”页面，可直接查看特定关键词下网站的实时排名。&lt;/p&gt;
&lt;p&gt;例如关键词“toolbarstate_v5.11 意思 -广告 -推广”在百度搜索中排名第九，实际检索也能确认其处于第一页第九位。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100854932.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100855746.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-站长之家&#34;&gt;4. 站长之家&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;官网地址：https://seo.chinaz.com&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;站长之家的 SEO 工具功能丰富，目前我主要用它两个核心功能。&lt;/p&gt;
&lt;p&gt;第一是快速查询网站在各搜索引擎的收录量，直观了解网站内容被检索的范围。&lt;/p&gt;
&lt;p&gt;第二是利用“TDK 改写”功能优化网站标题、关键词与描述，帮助百度爬虫更精准识别页面核心信息，提升排名潜力。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100901457.png&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100902171.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;5-ubersuggest网站-seo-问题检测&#34;&gt;5. Ubersuggest：网站 SEO 问题检测&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;官网地址：https://neilpatel.com/cn/ubersuggest&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;以我的博客网站（dstweihao.cn）为例，Ubersuggest 支持全网站审核。它会抓取所有页面进行深度分析，定位 SEO 问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508291630605.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101320607.jpeg"></p>
<h1 id="1-前言">1. 前言</h1>
<p>在之前的文章《ToB 官网 SEO 工作总结：认知转变、工具实操与排名/收录优化思路》中，曾提及部分 SEO 优化检测工具，但未展开说明。</p>
<p>本次将结合个人使用经验，以本人博客网站（https://dstweihao.cn）为例，简单介绍常用 SEO 工具的核心用法。</p>
<h1 id="2-百度统计">2. 百度统计</h1>
<blockquote>
<p>官网地址：https://tongji.baidu.com/web5/welcome/login</p></blockquote>
<p>对我而言，百度统计的核心作用是统计网站访问量、受访页面排行、搜索词排行等基础数据。其余功能比如转化分析、地区分布更适合 ToC 场景，现阶段使用需求较低。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091748125.png"></p>
<p>这里补充一个使用小插曲：</p>
<p>曾遇到登录百度统计后，主页持续报错且刷新无效的问题。</p>
<p>排查后发现是电脑安装的 AdGuard 广告拦截工具对该网站进行了拦截，其他网站无此问题。</p>
<p>最快捷的解决方式是暂时关闭 AdGuard 即可正常使用。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091754292.png"></p>
<h1 id="3-百度搜索资源平台">3. 百度搜索资源平台</h1>
<blockquote>
<p>官网地址：https://ziyuan.baidu.com/keywords/index</p></blockquote>
<p>百度搜索资源平台不仅有丰富的 SEO 学习资料，从工具层面看，其核心价值在于帮我解决了“官网关键词排名未知”的痛点。</p>
<p>比如想知道博客网站在百度搜索“项目管理”时的具体排名，也就是第几页、第几行。</p>
<p>以“项目管理”关键词为例，百度搜索结果中，除百度百科的专有名词解释页外，排名靠前的是知乎文章《什么是项目管理？五大流程是什么》。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509091800113.png"></p>
<p>实际上，SEO 优化的核心目标之一，就是让含目标关键词的页面（网站首页、文章页或产品说明页)排名靠前。</p>
<p>通过平台内的“流量与关键词”页面，可直接查看特定关键词下网站的实时排名。</p>
<p>例如关键词“toolbarstate_v5.11 意思 -广告 -推广”在百度搜索中排名第九，实际检索也能确认其处于第一页第九位。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100854932.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100855746.png"></p>
<h1 id="4-站长之家">4. 站长之家</h1>
<blockquote>
<p>官网地址：https://seo.chinaz.com</p></blockquote>
<p>站长之家的 SEO 工具功能丰富，目前我主要用它两个核心功能。</p>
<p>第一是快速查询网站在各搜索引擎的收录量，直观了解网站内容被检索的范围。</p>
<p>第二是利用“TDK 改写”功能优化网站标题、关键词与描述，帮助百度爬虫更精准识别页面核心信息，提升排名潜力。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100901457.png"> <img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100902171.png"></p>
<h1 id="5-ubersuggest网站-seo-问题检测">5. Ubersuggest：网站 SEO 问题检测</h1>
<blockquote>
<p>官网地址：https://neilpatel.com/cn/ubersuggest</p></blockquote>
<p>以我的博客网站（dstweihao.cn）为例，Ubersuggest 支持全网站审核。它会抓取所有页面进行深度分析，定位 SEO 问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508291630605.png"></p>
<p>某次检测共抓取 627 个页面，发现 1492 个 SEO 问题，涵盖“内容字数不足”“元描述重复”“缺少 H1 标签”等常见问题。</p>
<p>工具会按问题类型归类，标注涉事页面数量，同时同步提供问题解释与具体修复方案，实操性较强。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508291650455.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508291642628.png"></p>
<h1 id="6-seoquake-插件实时-seo-问题检测">6. SEOquake 插件：实时 SEO 问题检测</h1>
<blockquote>
<p>官网地址：https://www.seoquake.com</p></blockquote>
<p>SEOquake 是免费浏览器插件，支持 Chrome、Firefox、Edge 等主流浏览器，使用便捷。</p>
<p>它能实时检测当前页面的 SEO 问题，包括页面基础分析、移动兼容性、站点合规性等。</p>
<p>只需根据反馈的问题提示逐一修正即可，适合日常页面优化自查。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100932929.png"></p>
<h1 id="7-url-提取器批量获取网站页面链接">7. URL 提取器：批量获取网站页面链接</h1>
<blockquote>
<p>官网地址：https://www.urltoany.com/zh/url-extractor</p></blockquote>
<p>当怀疑百度爬虫未及时抓取网站新增页面、部分页面未被收录，或担心爬虫遗漏页面时，可手动将链接提交至搜索引擎平台。</p>
<p>而批量获取网站所有页面链接，就需要用到 URL 提取器。</p>
<p>以我的博客为例，通过该工具可快速获取 <a href="https://dstweihao.cn">https://dstweihao.cn</a> 的全部 URL，本次检测共提取 417 个页面链接。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100949376.png"></p>
<h1 id="8-网址批量提交收录工具">8. 网址批量提交收录工具</h1>
<blockquote>
<p>官网地址：https://www.openurl.cn/urlsubmission.html</p></blockquote>
<p>用 URL 提取器获取 417 个页面链接后，可通过该批量提交工具将链接快速提交至百度。相比手动逐个提交更高效，大幅节省操作时间。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509100955553.png"></p>
<h1 id="9-ahrefs-失效链接检查死链检测与处理">9. Ahrefs 失效链接检查：死链检测与处理</h1>
<blockquote>
<p>官网地址：https://ahrefs.com/zh/broken-link-checker</p></blockquote>
<p>百度搜索资源平台提供“死链提交”功能。</p>
<p>死链即网站内无效的 URL，如果不及时处理，会影响百度爬虫对网页数据的抓取。</p>
<p>爬虫如果频繁发现死链，可能判定网站维护不足、质量较低，进而减少抓取频次，最终影响收录与排名。</p>
<p>通过 Ahrefs 失效链接检查工具，可快速检测网站内是否存在死链。</p>
<p>如果发现死链，只需将对应的 URL 提交至百度搜索资源平台即可完成处理。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101005132.png"></p>
<h1 id="10-browseo网页快照获取工具">10. Browseo：网页快照获取工具</h1>
<blockquote>
<p>官网地址：https://www.browseo.net</p></blockquote>
<p>有时需要对比“页面实际呈现内容”与“百度爬虫抓取内容”是否一致，以此判断页面是否存在抓取问题，这就需要获取网页快照。</p>
<p>百度搜索资源平台的“抓取诊断”功能可实现此需求，但每周仅提供 70 次使用机会。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101009903.png"></p>
<p>通常 70 次足够日常使用，如果需求超出限额，可借助 Browseo 补充获取网页快照，操作逻辑与“抓取诊断”类似。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101011040.png"></p>
<h1 id="11-总结">11. 总结</h1>
<p>以上是我现阶段使用过的 SEO 优化工具，由于仍处于 SEO 学习初期，内容可能存在不够全面的地方，仅作为阶段性学习经验分享。</p>
<p>后续随着实操深入，会持续补充更多工具用法与优化思路。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509101320871.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《南海十三郎》观后感：心声泪影女儿香，燕归何处觅残塘</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%8D%97%E6%B5%B7%E5%8D%81%E4%B8%89%E9%83%8E%E7%94%B5%E5%BD%B1%E8%A7%82%E5%90%8E%E6%84%9F%E4%B8%80%E4%B8%80%E5%8F%8C%E8%A2%AB%E5%81%B7%E7%9A%84%E9%9E%8B%E8%97%8F%E7%9D%80%E4%BB%96%E4%B8%80%E7%94%9F%E7%9A%84%E5%BA%95%E8%89%B2/</link>
      <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%8D%97%E6%B5%B7%E5%8D%81%E4%B8%89%E9%83%8E%E7%94%B5%E5%BD%B1%E8%A7%82%E5%90%8E%E6%84%9F%E4%B8%80%E4%B8%80%E5%8F%8C%E8%A2%AB%E5%81%B7%E7%9A%84%E9%9E%8B%E8%97%8F%E7%9D%80%E4%BB%96%E4%B8%80%E7%94%9F%E7%9A%84%E5%BA%95%E8%89%B2/</guid>
      <description>&lt;p&gt;为让读者更清晰地触摸南海十三郎的人生轨迹、精神内核与时代意义，现将原文拆分为 &lt;strong&gt;7 篇主题明确、逻辑递进的系列内容&lt;/strong&gt;，每篇聚焦一个核心维度，既保留原文细节与思考，又强化单篇的深度与独立性，同时通过 “系列引言 + 篇末预告” 形成连贯性。&lt;/p&gt;
&lt;h2 id=&#34;系列总引言&#34;&gt;系列总引言&lt;/h2&gt;
&lt;p&gt;1997 年，《南海十三郎》横空出世，谢君豪凭 “疯癫却赤诚” 的表演击败张国荣，斩获金马奖影帝；20 余年后，这部改编自粤剧编剧江誉镠生平的电影，仍被奉为 “华语传记片天花板”。它不只讲一个人的起落，更藏着艺术与时代的碰撞、傲骨与世俗的交锋、真实与虚构的纠缠。&lt;/p&gt;
&lt;p&gt;本系列将从 “银幕故事→人物羁绊→历史真相→精神内核→创作思考→演员塑造→人生追问”7 个维度，一步步拆解南海十三郎的传奇 —— 他的鞋被 “偷光” 的隐喻、与薛觉先的知己之遇、比电影更动人的真实爱情、“雪山白凤凰” 里的赤子心，以及他留给当下创作者的启示。&lt;/p&gt;
&lt;h3 id=&#34;核心主题电影初印象与人物基调&#34;&gt;核心主题：电影初印象与人物基调&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;暴击式开场&lt;/strong&gt;：还原原文中 “偷我左脚鞋的是英国人，偷我右脚鞋的是日本人” 的经典台词，解析这句疯话如何成为南海十三郎 “家国情怀 + 走投无路” 的人生注脚 —— 他的疯，从不是无厘头的癫狂，而是时代碾过文人的痛。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;剧情骨架搭建&lt;/strong&gt;：简要介绍电影的创作背景（高志森执导、杜国威编剧，先有舞台剧后有电影）、核心叙事方式（说书人在警局讲述十三郎一生），以及影片的奖项分量（金马奖最佳男主、金像奖最佳编剧），让未看过电影的读者快速建立认知。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初读十三郎&lt;/strong&gt;：通过 “房梁上报警”“当众挑薛觉先错漏” 等初登场细节，勾勒他 “狂傲却赤诚” 的初始形象 —— 他不是传统意义上的 “完人”，却从一开始就带着 “不向世俗低头” 的棱角。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;篇末预告&#34;&gt;篇末预告&lt;/h3&gt;
&lt;p&gt;下一篇，我们将聚焦南海十三郎人生的 “第一个转折点”—— 他与粤剧宗师薛觉先的相遇。一句 “我唱大仁大义之戏，我作有情有义之词”，如何开启他的黄金创作期？“士为知己者死” 的信念，又让他拒绝了怎样的诱惑？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>为让读者更清晰地触摸南海十三郎的人生轨迹、精神内核与时代意义，现将原文拆分为 <strong>7 篇主题明确、逻辑递进的系列内容</strong>，每篇聚焦一个核心维度，既保留原文细节与思考，又强化单篇的深度与独立性，同时通过 “系列引言 + 篇末预告” 形成连贯性。</p>
<h2 id="系列总引言">系列总引言</h2>
<p>1997 年，《南海十三郎》横空出世，谢君豪凭 “疯癫却赤诚” 的表演击败张国荣，斩获金马奖影帝；20 余年后，这部改编自粤剧编剧江誉镠生平的电影，仍被奉为 “华语传记片天花板”。它不只讲一个人的起落，更藏着艺术与时代的碰撞、傲骨与世俗的交锋、真实与虚构的纠缠。</p>
<p>本系列将从 “银幕故事→人物羁绊→历史真相→精神内核→创作思考→演员塑造→人生追问”7 个维度，一步步拆解南海十三郎的传奇 —— 他的鞋被 “偷光” 的隐喻、与薛觉先的知己之遇、比电影更动人的真实爱情、“雪山白凤凰” 里的赤子心，以及他留给当下创作者的启示。</p>
<h3 id="核心主题电影初印象与人物基调">核心主题：电影初印象与人物基调</h3>
<ul>
<li><strong>暴击式开场</strong>：还原原文中 “偷我左脚鞋的是英国人，偷我右脚鞋的是日本人” 的经典台词，解析这句疯话如何成为南海十三郎 “家国情怀 + 走投无路” 的人生注脚 —— 他的疯，从不是无厘头的癫狂，而是时代碾过文人的痛。</li>
<li><strong>剧情骨架搭建</strong>：简要介绍电影的创作背景（高志森执导、杜国威编剧，先有舞台剧后有电影）、核心叙事方式（说书人在警局讲述十三郎一生），以及影片的奖项分量（金马奖最佳男主、金像奖最佳编剧），让未看过电影的读者快速建立认知。</li>
<li><strong>初读十三郎</strong>：通过 “房梁上报警”“当众挑薛觉先错漏” 等初登场细节，勾勒他 “狂傲却赤诚” 的初始形象 —— 他不是传统意义上的 “完人”，却从一开始就带着 “不向世俗低头” 的棱角。</li>
</ul>
<h3 id="篇末预告">篇末预告</h3>
<p>下一篇，我们将聚焦南海十三郎人生的 “第一个转折点”—— 他与粤剧宗师薛觉先的相遇。一句 “我唱大仁大义之戏，我作有情有义之词”，如何开启他的黄金创作期？“士为知己者死” 的信念，又让他拒绝了怎样的诱惑？</p>
]]></content:encoded>
    </item>
    <item>
      <title>《南海十三郎》观后感：心声泪影女儿香，燕归何处觅残塘</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%8D%97%E6%B5%B7%E5%8D%81%E4%B8%89%E9%83%8E%E8%A7%82%E5%90%8E%E6%84%9F%E5%BF%83%E5%A3%B0%E6%B3%AA%E5%BD%B1%E5%A5%B3%E5%84%BF%E9%A6%99%E7%87%95%E5%BD%92%E4%BD%95%E5%A4%84%E8%A7%85%E6%AE%8B%E5%A1%98/</link>
      <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%8D%97%E6%B5%B7%E5%8D%81%E4%B8%89%E9%83%8E%E8%A7%82%E5%90%8E%E6%84%9F%E5%BF%83%E5%A3%B0%E6%B3%AA%E5%BD%B1%E5%A5%B3%E5%84%BF%E9%A6%99%E7%87%95%E5%BD%92%E4%BD%95%E5%A4%84%E8%A7%85%E6%AE%8B%E5%A1%98/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072228272.jpeg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;开篇&#34;&gt;开篇&lt;/h2&gt;
&lt;p&gt;“偷我左脚鞋的是英国人，偷我右脚鞋的是日本人，中国人的鞋都叫他们偷光了。无路可走，哪也去不了，走投无路行不得也！”&lt;/p&gt;
&lt;p&gt;影片开头就是暴击，南海十三郎疯疯癫癫地坐在房梁上，报警说鞋子不见了。&lt;/p&gt;
&lt;p&gt;这段话就是他人生底色最好的注脚，家国情怀贯穿了南海十三郎的一生。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072226579.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;剧情概述&#34;&gt;剧情概述&lt;/h2&gt;
&lt;p&gt;《南海十三郎》是由高志森执导，杜国威编剧，谢君豪主演的传记类型电影，并于 1997 年上映。&lt;/p&gt;
&lt;p&gt;影片取材于著名粤剧编剧江誉镠的真人事迹，先是推出舞台剧，然后才拍摄电影，主演都是谢君豪。&lt;/p&gt;
&lt;p&gt;江誉镠因生于广东南海，在家中排行十三，所以给自己取了艺名 —— 南海十三郎。&lt;/p&gt;
&lt;p&gt;通过一个说书人因聚众滋事被带到警局问话的情节，借由这位说书人之口，讲述了粤剧金牌编剧南海十三郎在艺术生涯中的起伏和沉浮，展现了他极富正义感与傲骨雄心的一生。&lt;/p&gt;
&lt;p&gt;1997 年，谢君豪凭借该片获得第 34 届台湾电影金马奖最佳男演员奖。&lt;/p&gt;
&lt;p&gt;1998 年，杜国威凭借该片获得第 17 届香港电影金像奖最佳编剧。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072231271.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;士为知己者死&#34;&gt;士为知己者死&lt;/h2&gt;
&lt;p&gt;据史料记载，南海十三郎从小就对粤剧产生浓厚的兴趣，甚至平时讲话都不免来一两句唱腔。&lt;/p&gt;
&lt;p&gt;影片中，南海十三郎常去听戏，又因坐在前排，立马就发现了薛觉先演出时出现的失误。&lt;/p&gt;
&lt;p&gt;演出结束之后，南海十三郎直奔后台，想要见薛觉先，一来指出刚才台上出现的失误问题，二来是毛遂自荐，向薛觉先推荐自己编写的剧本《寒江钓雪》。&lt;/p&gt;
&lt;p&gt;这个举动在薛觉先剧团人员看来，分明就是来找麻烦的。&lt;/p&gt;
&lt;p&gt;薛觉先何许人也？他是粤剧史上的一代宗师，与梅兰芳并称 “南薛北梅”，资历摆在那里。&lt;/p&gt;
&lt;p&gt;被一个不知从哪里冒出来的无名小辈当众挑刺，在众人看来真是不知抬举，南海十三郎一下子就被推了出去，连薛觉先都拦不住。&lt;/p&gt;
&lt;p&gt;后来，薛觉先看过剧本之后，大喜过望，感叹此乃上乘之作。&lt;/p&gt;
&lt;p&gt;又听闻此人是太史公家的十三公子，忙不迭要登门拜访，邀请南海十三郎加入他的 “觉先声” 剧团。&lt;/p&gt;
&lt;p&gt;从这一点可以看出，薛觉先的格局很大。&lt;/p&gt;
&lt;p&gt;被一个不知名的毛头小子当众指出问题，不仅没有恼羞成怒，还极力劝阻手下不要乱来，实属难得。&lt;/p&gt;
&lt;p&gt;之后还真的去看了别人给的剧本，只能说物以类聚，什么样的人就会吸引什么样的人。&lt;/p&gt;
&lt;p&gt;而在影片中，江父听闻薛觉先要来，特意大开中门，这是很高的待遇了。&lt;/p&gt;
&lt;p&gt;2021 年，苏炳添在东京奥运会上打入男子 100 米决赛，“亚洲第一飞人” 实至名归。&lt;/p&gt;
&lt;p&gt;他回到中山祭祖、在祠堂上香时，也是大开中门 —— 通常只有很重要的事情，才可以开这个中门，平时大家都是从侧门进入。&lt;/p&gt;
&lt;p&gt;薛五爷与南海十三郎可谓一见如故，立马邀请南海十三郎来自己剧团当编剧，并说道：“我唱的都是大仁大义之戏。”&lt;/p&gt;
&lt;p&gt;南海十三郎大喜，回应道：“我作的都是有情有义之词。”&lt;/p&gt;
&lt;p&gt;此后，两人合作推出了很多佳作，引得满堂喝彩，南海十三郎名声大振，“南海十三郎” 之名也开始为世人所知。&lt;/p&gt;
&lt;p&gt;影片中，当时的广东戏剧界，有 “觉先声” 剧团的薛觉先、“和平剧团” 的马老大和千里驹三分天下的说法。&lt;/p&gt;
&lt;p&gt;“和平剧团” 的马老大想过来挖南海十三郎，说可以给更多的报酬。&lt;/p&gt;
&lt;p&gt;当时听到这句话，我就觉得好笑，这个用 “给更多钱” 挖人的手段也太笨了吧？&lt;/p&gt;
&lt;p&gt;南海十三郎本就是公子哥，本来就不缺钱，拿这个作为突破口，实在有点没脑子。&lt;/p&gt;
&lt;p&gt;南海十三郎回应道：&lt;/p&gt;
&lt;p&gt;“现在薛马打对台，势不两立，如果我过去了，现在这帮兄弟怎么看我呢？”&lt;/p&gt;
&lt;p&gt;“薛五爷对我有知遇之恩，不管你出多少钱，我都不会去的。”&lt;/p&gt;
&lt;p&gt;这便是士为知己者死。&lt;/p&gt;
&lt;p&gt;南海十三郎的这些作为，让我想起了《柯南剧场版：独眼的残像》中提到的 “漆面吞炭” 典故。&lt;/p&gt;
&lt;p&gt;想起了 “伯牙绝弦” 里俞伯牙和钟子期知音难觅的故事。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072228272.jpeg"></p>
<h2 id="开篇">开篇</h2>
<p>“偷我左脚鞋的是英国人，偷我右脚鞋的是日本人，中国人的鞋都叫他们偷光了。无路可走，哪也去不了，走投无路行不得也！”</p>
<p>影片开头就是暴击，南海十三郎疯疯癫癫地坐在房梁上，报警说鞋子不见了。</p>
<p>这段话就是他人生底色最好的注脚，家国情怀贯穿了南海十三郎的一生。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072226579.jpg"></p>
<h2 id="剧情概述">剧情概述</h2>
<p>《南海十三郎》是由高志森执导，杜国威编剧，谢君豪主演的传记类型电影，并于 1997 年上映。</p>
<p>影片取材于著名粤剧编剧江誉镠的真人事迹，先是推出舞台剧，然后才拍摄电影，主演都是谢君豪。</p>
<p>江誉镠因生于广东南海，在家中排行十三，所以给自己取了艺名 —— 南海十三郎。</p>
<p>通过一个说书人因聚众滋事被带到警局问话的情节，借由这位说书人之口，讲述了粤剧金牌编剧南海十三郎在艺术生涯中的起伏和沉浮，展现了他极富正义感与傲骨雄心的一生。</p>
<p>1997 年，谢君豪凭借该片获得第 34 届台湾电影金马奖最佳男演员奖。</p>
<p>1998 年，杜国威凭借该片获得第 17 届香港电影金像奖最佳编剧。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072231271.jpg"></p>
<h2 id="士为知己者死">士为知己者死</h2>
<p>据史料记载，南海十三郎从小就对粤剧产生浓厚的兴趣，甚至平时讲话都不免来一两句唱腔。</p>
<p>影片中，南海十三郎常去听戏，又因坐在前排，立马就发现了薛觉先演出时出现的失误。</p>
<p>演出结束之后，南海十三郎直奔后台，想要见薛觉先，一来指出刚才台上出现的失误问题，二来是毛遂自荐，向薛觉先推荐自己编写的剧本《寒江钓雪》。</p>
<p>这个举动在薛觉先剧团人员看来，分明就是来找麻烦的。</p>
<p>薛觉先何许人也？他是粤剧史上的一代宗师，与梅兰芳并称 “南薛北梅”，资历摆在那里。</p>
<p>被一个不知从哪里冒出来的无名小辈当众挑刺，在众人看来真是不知抬举，南海十三郎一下子就被推了出去，连薛觉先都拦不住。</p>
<p>后来，薛觉先看过剧本之后，大喜过望，感叹此乃上乘之作。</p>
<p>又听闻此人是太史公家的十三公子，忙不迭要登门拜访，邀请南海十三郎加入他的 “觉先声” 剧团。</p>
<p>从这一点可以看出，薛觉先的格局很大。</p>
<p>被一个不知名的毛头小子当众指出问题，不仅没有恼羞成怒，还极力劝阻手下不要乱来，实属难得。</p>
<p>之后还真的去看了别人给的剧本，只能说物以类聚，什么样的人就会吸引什么样的人。</p>
<p>而在影片中，江父听闻薛觉先要来，特意大开中门，这是很高的待遇了。</p>
<p>2021 年，苏炳添在东京奥运会上打入男子 100 米决赛，“亚洲第一飞人” 实至名归。</p>
<p>他回到中山祭祖、在祠堂上香时，也是大开中门 —— 通常只有很重要的事情，才可以开这个中门，平时大家都是从侧门进入。</p>
<p>薛五爷与南海十三郎可谓一见如故，立马邀请南海十三郎来自己剧团当编剧，并说道：“我唱的都是大仁大义之戏。”</p>
<p>南海十三郎大喜，回应道：“我作的都是有情有义之词。”</p>
<p>此后，两人合作推出了很多佳作，引得满堂喝彩，南海十三郎名声大振，“南海十三郎” 之名也开始为世人所知。</p>
<p>影片中，当时的广东戏剧界，有 “觉先声” 剧团的薛觉先、“和平剧团” 的马老大和千里驹三分天下的说法。</p>
<p>“和平剧团” 的马老大想过来挖南海十三郎，说可以给更多的报酬。</p>
<p>当时听到这句话，我就觉得好笑，这个用 “给更多钱” 挖人的手段也太笨了吧？</p>
<p>南海十三郎本就是公子哥，本来就不缺钱，拿这个作为突破口，实在有点没脑子。</p>
<p>南海十三郎回应道：</p>
<p>“现在薛马打对台，势不两立，如果我过去了，现在这帮兄弟怎么看我呢？”</p>
<p>“薛五爷对我有知遇之恩，不管你出多少钱，我都不会去的。”</p>
<p>这便是士为知己者死。</p>
<p>南海十三郎的这些作为，让我想起了《柯南剧场版：独眼的残像》中提到的 “漆面吞炭” 典故。</p>
<p>想起了 “伯牙绝弦” 里俞伯牙和钟子期知音难觅的故事。</p>
<p>也想起了 “不食周粟” 中伯夷和叔齐宁愿饿死也不吃周朝粮食、最终饿死在首阳山上的故事。</p>
<p>能用这些典故来形容南海十三郎，在我心中，对他是十分肯定的了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072220988.jpg"></p>
<h2 id="我们君子之交就凭这一杯茶">我们君子之交，就凭这一杯茶</h2>
<p>随着南海十三郎在粤剧界的名气越来越大，他恃才傲物的特性也开始显露出来，为人处世多了几分狂放不羁，很容易得罪人。</p>
<p>但他毫不在乎，或许他一向如此，并非成名之后才变成这样，有话直说，不留情面。</p>
<p>有个叫唐涤生的小伙子，毕业于上海美专，慕名前来想要拜南海十三郎为师，可南海十三郎并不同意，说自己从来不收徒弟。</p>
<p>但唐涤生再三坚持，表明自己对他仰慕已久，南海十三郎拗不过，让他倒杯茶过来。</p>
<p>唐涤生以为南海十三郎是答应收徒了，没想到南海十三郎拿起茶杯，吐了口水进去，举到唐涤生面前说：</p>
<p>“只要你喝下这杯茶，我就收你为徒。”</p>
<p>当时看到这个场景，我就觉得南海十三郎太过分了，真是飘了，对人太苛刻，竟然这样践踏别人的尊严。</p>
<p>可唐涤生犹豫片刻后，咬牙切齿地准备喝下去，不料南海十三郎突然抢过茶杯，讥笑说：</p>
<p>“要我收你为徒？别做梦了。”</p>
<p>唐涤生怒火中烧，痛骂了南海十三郎一顿，并发誓有生之年一定会超越南海十三郎，名气也一定比他还响。</p>
<p>没想到，南海十三郎反而称赞他敢爱敢恨、敢作敢为，让唐涤生再倒一杯茶来。</p>
<p>这一次，南海十三郎答应收唐涤生为徒，但只有一个要求：</p>
<p>在人前不能叫他 “师傅”，只能叫 “大哥”。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509052054750.png"></p>
<h2 id="学我者生像我者死">学我者生，像我者死</h2>
<p>“我可不一样，我的时代跟你的时代不同。看我戏的人，十个有九个是文盲，唱词深一点也听不明白。”</p>
<p>“眼光放远一点，观众的水平会越来越高，写得像我那样有个屁用呀？”</p>
<p>“学我者生，像我者死。”</p>
<p>唐涤生拜南海十三郎为师后，跟随他学习了很长一段时间。</p>
<p>期间，因为唐涤生写的剧本一直在模仿南海十三郎，南海十三郎便说了上面那两句话。</p>
<p>从这里可以看出，南海十三郎是真的有点东西，格局不是一般的大。</p>
<p>这让我想到了周杰伦的《红模仿》，这首歌就是在讲模仿他人这件事：</p>
<blockquote>
<p>我常常在想宇宙只有一颗太阳</p>
<p>为什么我的影子这么多 这么像</p>
<p>战胜幻象 和我一样</p>
<p>喜欢模仿的朋友们</p>
<p>崇拜是件好事 欣赏是种美德</p>
<p>但走在我后面 我很担心</p>
<p>别人会看不见你</p></blockquote>
<p>正如歌词所言，模仿他人会让人丢掉自我，活在别人的阴影之下，当然是不好的。</p>
<p>但关键要看怎么用，模仿他人是目的，还是手段？</p>
<p>如果模仿他人是目的，甘心失去本性，只贪图成功的捷径，那当然该被指责；可如果模仿他人只是一种学习的手段，那就不一样了。</p>
<p>这种模仿，只是因为不知道该如何下手，先借此入门。</p>
<p>就好像学习游泳，你不可能先把游泳理论知识学得很透彻、倒背如流之后才下水吧？</p>
<p>最有效的学习方式，当然是先下到泳池，看到别人做什么动作，自己也跟着做一样的动作。</p>
<p>等做得多了，自然能摸出些门道；即便动作不够规范，这时再通过观看游泳理论知识加以纠正，自然就能学好了。</p>
<p>说着说着，又要说到实践论了。</p>
<p>在《实践论摘要》中有我整理的摘要，实践与理论不断交叉纠正，最终才能完善真理，掌握真理，这里就不过多赘述了。</p>
<p>譬如古龙，一开始也是模仿金庸的小说，只是后来终于走出了自己的风格。</p>
<p>所以，还是那句话，<strong>模仿他人是对是错，要看模仿是目的，还是手段。</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072217669.jpg"></p>
<h2 id="抗日战争劳军期间">抗日战争劳军期间</h2>
<p>1938 年 8 月 23 日，日本鬼子轰炸上海市区，广州也危在旦夕，所有戏班都解散了。</p>
<p>南海十三郎到了大后方，加入了第七战区，前往曲江写剧本劳军。</p>
<p>他写的剧本，全是大谈男儿自强、民族自强、保家卫国的内容。</p>
<p>可偏偏有个叫任惜花的人，在旁边搭台写剧本，要么是让一个女人穿古装在台上搔首弄姿，大唱靡靡之音；要么是让三个女人穿超短裙、高抬腿，引得台下士兵大喊 “露大腿了，真白呀！真要命啊，快去看啊！”。</p>
<p>看到这一幕，不知道为啥就想起了季羡林大师的日记，他说自己看女大学生打篮球，实际上是来看大腿的，还说 “大腿真黑”。</p>
<p>整个画风，差不多就是《三毛从军记》中上海名媛劳军演出的调调。</p>
<p>这彻底惹毛了南海十三郎，他直接上台大骂任惜花 “扰乱军心、荼毒生灵”。</p>
<p>任惜花也不甘示弱，回嘴对南海十三郎说：“观众没我多，就来这里撒野？”</p>
<p>南海十三郎一拳打了上去，大骂 “狗汉奸”。</p>
<p>最后，将军出面，给南海十三郎面子，说只要他对任惜花赔礼道歉就行。</p>
<p>南海十三郎耐着性子，本来都想道歉了，却还是没忍住，一杯热茶直接泼到了任惜花脸上。</p>
<p>“做戏也做人，戏要启示人生一条正确的路。我的戏全都是导人向善，教人有始有终、顶天立地！”</p>
<p>“任惜花，你编的什么剧本？中国有你这样的人，还有什么希望？还有什么前途？”</p>
<p>从这里可以看出，南海十三郎一身傲骨，无论身处何等艰难境地，都不曾改变半分志向。</p>
<p>只是战争结束后，戏班重新组场开场，可南海十三郎因为打人事件，再加上恃才傲物、脾气实在不讨人喜欢，很多人都不找他写剧本了。</p>
<p>即便真有人找他写剧本，他也坚持己见，不管什么题材，最后都写成主张奋起抗日、宣传爱国精神的内容，很多老板觉得这样的剧本不会卖座，便不接受。</p>
<p>可南海十三郎偏不吃那一套。</p>
<p>后来，他的侄女梅仙邀请他写战争爱情片剧本，可因为导演篡改剧本，南海十三郎怒不可遏，直接翻脸，痛骂导演不懂装懂，还说 “这场戏不准上映”。</p>
<p>就这样不欢而散后，从此再没有人找他写剧本了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072218282.jpg"></p>
<h2 id="雪山白凤凰">雪山白凤凰</h2>
<p>电影最后，已经疯疯癫癫的南海十三郎，始终把一幅画带在身上 —— 那就是《雪山白凤凰》。</p>
<p>他还把画挂在墙上，向小乞丐炫耀，说这幅画多好多好。</p>
<p>可小乞丐看到画上面只是一片空白，什么都没有。</p>
<p>南海十三郎却说说小乞丐不会欣赏画作，还说 “明明是多么美的画作，可惜世人没人识得”。</p>
<p>其实，这里不是编剧刻意暗喻，而是明明白白地表达：</p>
<p>从前的南海十三郎，英俊潇洒、风光无限，身体里装着一颗赤子之心。</p>
<p>现在的南海十三郎，疯疯癫癫、穷困潦倒，身体里装着的，同样还是那颗赤子之心。</p>
<p>从始至终，变的不是他，而是这个世界，是你们。</p>
<p>这让我想到了《天下贰》游戏里的那句经典台词：</p>
<p>“大荒还是那个大荒，只是你们的心变了。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072211811.jpg"></p>
<h2 id="南海十三郎与李叔同">南海十三郎与李叔同</h2>
<p>南海十三郎对戏剧的认真，已经到了较真的地步，这让我想到了李叔同。</p>
<p>李叔同的认真是出了名的。</p>
<p>他当时在浙江当老师时，有个学生偷了东西，学校老师没有办法，实在没有任何头绪，不知道到底是哪个 “兔崽子” 干的这件事。</p>
<p>李叔同见状，就说：“这个事情我来处理。”</p>
<p>随后，他在学校宣传栏贴了告示，让偷东西的学生归还偷盗的物品，并立马投案自首；否则，他就 “求死以殉监管不力之职责”。</p>
<p>这话吓得那个学生立马去投案自首了。</p>
<p>因为他是李叔同 —— 大家都知道，李叔同是真的会做出这种事的。</p>
<p>之所以会这样认为，和李叔同平时的行事作风分不开：大家都觉得他是个较真的人，而且言出必行。</p>
<p>那个学生也没想到事情会闹这么大，不想让局面变得无法收拾。</p>
<p>说起来，南海十三郎和李叔同这两个人，还真有不少相似点：</p>
<p>他们都出身富贵之家，才华横溢、少年得志，性格孤傲；为抗日献身时，都义不容辞；两人形体消瘦，看似弱不禁风，实则铮铮傲骨。</p>
<p>从人生辉煌到最后退场，他们都选择坚守自己的人生信仰，拒绝向世俗妥协。</p>
<p>只是在行事风格上，南海十三郎更外向，不爽就开骂；李叔同则更内敛一些，不会那么直白。</p>
<p><strong>一个是外热内也热，一个是外冷内热。但不管如何，那份 “认真”，却是相同的。</strong></p>
<p><img alt="img" loading="lazy" src="https://nenya.doubanio.com/view/photo/xl/public/p2629497957.jpg?sa_cv=cf04e38a5f762464fc386270a25ff30a&sa_ct=68bd97c9"></p>
<h2 id="南海十三郎与程蝶衣">南海十三郎与程蝶衣</h2>
<p>恰巧，《霸王别姬》也是讲戏剧相关的故事，里面的程蝶衣是京剧名伶，也是个认真的人。</p>
<p>“不疯魔，不成活。”</p>
<p>“说好的一辈子，少一分钟、一秒钟，都不是一辈子。”</p>
<p>现在想起这些电影台词，还是挺让人感动的。</p>
<p>后来，程蝶衣终于梦醒了 —— 他发现自己不是虞姬，不是程蝶衣，不是小六子，也不是妓女的儿子，什么都不是了。</p>
<p>他就像刚出生、呱呱落地的婴儿，从一开始就是干净的，没有在这尘世中牵扯到一花一草。</p>
<p>既然如此，那就到此为止吧 —— 他在舞台上横剑自刎，结束了一生。</p>
<p>时代的车轮滚滚向前，浪潮铺天盖地、席卷而来，个人真的能逆浪而行吗？</p>
<p>我不知道南海十三郎是否也有过这样的心路历程。</p>
<p><strong>只能感叹岁月的无情 —— 不管多美好的事物，都会有凋零的那一刻；同时，也感恩岁月的怜悯 —— 无论多么糟糕的境地，都会有结束的那一天。</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072235095.jpg"></p>
<h2 id="遵守规则才能改变规则">遵守规则才能改变规则</h2>
<p>劳军期间，南海十三郎坚持主张爱国奋战、反对靡靡之音，这没有问题。</p>
<p>可战争结束后，在戏班写剧本时，他却不能容忍别人对自己的剧本有半分质疑 —— 这既是他对自己才华极为自负的表现，也可以理解为对艺术性的追求。</p>
<p>但戏班老板要赚钱，这就出现了艺术性和盈利之间的冲突。</p>
<p>那个 “猩猩剧本” 多次被改编时，南海十三郎和戏班老板的冲突，本质上就是这个问题。</p>
<p>我在之前写的《对用户体验的一些思考》一文中也提到过：</p>
<p><strong>追求艺术性和盈利，本身就很难兼容，大多数情况下只能取其一 —— 进一步会曲高和寡，退一步又俗不可耐，“雅俗共赏” 本身就是可遇而不可求的。</strong></p>
<blockquote>
<p>比如我要写小说，想要赚很多钱，那么我一定会去研究现在的人喜欢看什么类型的小说，喜欢什么样的故事，喜欢什么样的题材，是武侠还是言情小说？哪怕我内心不喜欢写言情小说，但如果现在的人都喜欢，那么我也会选择写言情类型的小说。因为我知道，如果我要写武侠，虽然是我个人喜欢的，但对于盈利来说，写言情小说风险更小，这个选择显然更明智。另一种情况是追求艺术性，宁愿不赚钱，只是想写出自己满意的作品，这当然可以，但仅限于个人。对于公司来说，这种行为特别危险。</p></blockquote>
<p>不过，南海十三郎不屑于做这种妥协，我觉得并没有什么问题。</p>
<p>南海十三郎这个人物的所有行为都有迹可循，不是凭空出现的 —— 每一个选择都符合他的性格，让人一看就知道 “这是他会做出来的事情”，不会显得突兀。</p>
<p>他这种 “宁为玉碎，不为瓦全” 的做法，很容易 “杀身成仁”。</p>
<p>原则性的问题，当然不能妥协；但如果不是原则性的问题，稍微灵活应对也未尝不可。</p>
<p>当然，对 “原则性” 的定义因人而异，但大体上有一些共性 —— 不卖国求荣、不作奸犯科。</p>
<p>追求艺术性，本身就是一个人的志向。如果你的目标是达成最终目的，那么 “曲线救国” 的路子也不是不行 —— 那就是 “<strong>要改变规则，先遵守规则</strong>”。</p>
<p>我们经常听到这句话：“大型公司制定规则，中型公司完善规则，小型公司遵守规则。”</p>
<p>那么，我们要怎么做呢？当然是先让自己成为 “制定规则的人”—— 先做到自己能主导规则，规则自然就由我们制定。</p>
<p>我没记错的话，大概是 2020 年，在 “艾斯吧” 发生过一件很离谱的事情。</p>
<p>事情的起因是这样的：</p>
<p>“艾斯吧” 一开始是 “奥特曼艾斯” 的贴吧，可后来《海贼王》爆火，里面的角色 “艾斯” 人气暴涨，贴吧的吧主也换了人。</p>
<p>有一个《海贼王》艾斯的忠实粉丝当上了吧主，结果把艾斯奥特曼的相关帖子都删了，也不准在吧里发布任何艾斯奥特曼的消息，使得众人苦不堪言，但是又无可奈何。</p>
<p>有一个兄弟实在看不下去了，所以制定了一个周详的计划，并立马执行。</p>
<p>他先是在艾斯吧狂刷存在感，然后和现任吧主搞好关系，在吧里十分活跃且支持吧主的主张。</p>
<p>后来，因为他 “功绩非凡”，在艾斯吧吧主选举中胜出。</p>
<p>没想到，才刚拿到吧主特权，下一秒他就说：“我不装了！我摊牌了！我是艾斯奥特曼铁杆粉丝！”</p>
<p>新上位的吧主，要求吧内不能讨论与艾斯奥特曼无关的话题，并且清空了所有与《海贼王》艾斯有关的帖子，宣称 “重回艾斯奥特曼的荣光”。</p>
<p>当时看完这个新闻，我是真的相信 “光” 了。</p>
<p>所以，我想说的是，改变世界的方式有很多种：可以坚定不移、针尖对麦芒，大不了鱼死网破、两败俱伤；也可以以柔克刚、四两拨千斤。</p>
<p>目的是一样的，只是选择的方式不同，最终要看个人的选择。</p>
<p>第一种：保持内心的坚守，也保持外在的棱角，去改变世界。</p>
<p>第二种：保持内心的坚守，调整外在的方式，去改变世界。</p>
<p>但是，“改变世界” 这种话，有时我会觉得不过是过过嘴瘾 —— 因为这是向外求的事，你无法控制外界的变化；到最后会发现，自己能不被世界改变，就已经很不错了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072237546.jpg"></p>
<h2 id="ai-对创作的全方面作用">AI 对创作的全方面作用</h2>
<p>在电影里，南海十三郎在创作的时候，是直接口述，然后有三个助手手抄。</p>
<p>抄的过程中，如果觉得有问题，那就反馈，南海十三郎再斟酌并调整。</p>
<p>我当时看到这个画面，就想到现在各种文艺创作，比如文学创作、音乐创作、电影创作，都可以基于 AI 来完成。</p>
<p>自己则只需要根据自己的审美，去决定最后的成品即可，所以 “一个人完成一个公司的工作” 真的不是痴人说梦。</p>
<p>这个作品的好坏，不全是 AI 决定的，而是由你的能力来决定的。</p>
<p>就拿电影来说，以后真的不需要什么编剧、导演、演员了 —— 一个人就能做完所有工作。</p>
<p><strong>竞争力不再来自于执行层，因为执行层已经被 AI 完全替代；竞争力来自于创意和审美，来自于一个人自身的综合能力。</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072237690.jpg"></p>
<h2 id="导演与编剧的权力平衡">导演与编剧的权力平衡</h2>
<p>导演的权力是否应该比编剧大？</p>
<p>如果是以前，我一定会认为编剧的权力应该要比导演大。</p>
<p>为什么会有这样的想法？可能是源于陈凯歌 —— 他拍出了《霸王别姬》《黄土地》和《荆轲刺秦王》等佳作，但后来的作品却良莠不齐，很多人说这是因为他喜欢瞎改剧本。</p>
<p>再加上，很久以前我听说韩国和美国那边的编剧权力很大，很多作品都是边写边拍的，编剧压力巨大，经常要根据上一集的反馈数据，来调整后续的剧情走向，一切都是为了收视率。</p>
<p>可现在呢？我还是觉得，导演的权力是要比编剧大的。</p>
<p>因为导演是掌控全局的人，电影的全部信息都集中在他这里，他是整部电影拍摄过程中最具决策权的角色。</p>
<p>所以，他的规划和调整，一定是基于最实际的情况出发 —— 剧本写完就是 “死” 的，人是 “活” 的，拍摄过程中会出现各种各样的情况，都要灵活调整。</p>
<p>有时可能是演员超常发挥，灵光一闪间有了新的设计，这种机会极为难得，这个时候，你还要特别死板地按照原有的剧本去拍吗？</p>
<p>所以说，电影的好坏，导演就是第一负责人，不要让编剧去背锅。</p>
<p>这和项目负责人的角色是一样的：项目负责人要对整个项目负责，编剧只是项目中的一个成员，最终的决定权在项目负责人手里。</p>
<p>说回上面的陈凯歌，有没有可能，本来那部剧本就很烂，他不瞎改会更烂呢（bushi）。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072238807.jpg"></p>
<h2 id="谢君豪的表演">谢君豪的表演</h2>
<p>凭借在《南海十三郎》中的出色发挥，谢君豪击败出演《春光乍泄》的张国荣，夺得第 34 届台湾电影金马奖最佳男演员奖。</p>
<p>作为新人，这是他的第一部电影，起点就这么高，可谓一鸣惊人。</p>
<p>在我比较久远的记忆里，第一次知道谢君豪，是因为他出演了《仙剑奇侠传》里的酒剑仙。</p>
<p>作为李逍遥的师傅，酒剑仙武艺高强，却陷入年轻时的感情漩涡，终日借酒消愁，是个颓废又邋遢的角色 —— 加上他双眼无神，说实话，这个人物不算讨喜。</p>
<p>但当时看弹幕，都在说 “这是最年轻的金马奖影帝，打败了张国荣”，我便多了几分兴趣。</p>
<p>查看相关资料时，《南海十三郎》这个片名才第一次映入我的眼帘。</p>
<p>在这之后的几年里，我也看了一些影片切片，隐约觉得他能拿金马奖不是没有道理 —— 他在《南海十三郎》里的扮相，和酒剑仙简直是云泥之别。</p>
<p>或许是当时年轻？后来演《仙剑奇侠传》时到了中年？好像也不是，可能是胖了，再加上满脸胡渣，真的很难相信是同一个人。</p>
<p>在《南海十三郎》里，谢君豪的扮相很儒雅，第一眼看上去就很像斯文败类，我第一反应是 “这不是徐志摩吗？”</p>
<p>估计他要是去饰演徐志摩，不会逊色于黄磊。</p>
<p>黄磊年轻时是帅，但脸颊线条太圆；谢君豪则显得更消瘦，多了几分清俊。</p>
<p>可就在这俊朗清秀的外表之下，藏着一颗赤子之心 —— 为人放浪不羁，行事率性而为，傲骨似雪。</p>
<p>这是我一开始完全没有料到的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072239835.jpg"></p>
<h2 id="历史上的南海十三郎">历史上的南海十三郎</h2>
<p>历史上的南海十三郎和电影中的形象，是有一些出入的。</p>
<p>因为想了解他的生平，我在网上搜了些资料，百度百科里有一些叙述，但不够详尽，也不敢确定真假。</p>
<p>有张图片里的介绍倒挺多，可也就五六百字，查了它标注的出处《人物卷》，却没找到这本书。</p>
<p>正当我不知如何是好时，意外在广东政协网上看到了一篇<a href="https://www.gdszx.gov.cn/zxkw/tzgj/2022/04/content/post_29652.html">《“红绡夜盗寒江雪，痴人正是十三郎”——江誉镠的传奇人生》</a>。</p>
<p>想到这是政府部门官网的内容，真实性应该没问题，我便认真研读了一番。</p>
<p>看完之后，不由得感叹：现实中发生的事情，比电影里的情节更让人动容。</p>
<p>南海十三郎的生母杜氏本是江孔殷的外室，她十七岁在广州黄沙生下南海十三郎后，便不治身亡。</p>
<p>按说这样的出身，南海十三郎在江家本该是个 “小透明”，可有可无。</p>
<p>可赶巧了，广州起义失败后，有多位爱国反抗清廷的革命人士被杀害，江孔殷参与了 “筹葬七十二烈士于黄花岗” 的事，被清廷知道后抓去问罪，罪名是 “通盗之罪”。</p>
<p>江孔殷却辩称：“‘盗’‘杜’两字是同音误传，实际上是我与妓者杜氏有染。”</p>
<p>清廷没有真凭实据，最后只责备江孔殷 “行为不检”，罚了他五千两白银。</p>
<p>从 “生死悬一线” 到 “只罚钱”，江孔殷捡回一条命，对杜氏满是感激。</p>
<p>便让南海十三郎认祖归宗，还对他疼爱有加 —— 南海十三郎一下子成了 “集万千宠爱于一身” 的孩子，人生就此改写。</p>
<p>我看有些资料说，江孔殷有十二房妻妾，其他家人见南海十三郎受宠，心存嫉妒，暗地里给他使坏。</p>
<p>但我觉得这应该是假的：结合南海十三郎从小飞扬跋扈、敢作敢为的个性，他就不是会吃亏的人 —— 当年他还因为仗义执言，敢去烧校长的蚊帐。</p>
<p>再加上他的十二姐其实很有才华，只是当时女子不便抛头露面，有些作品是署名在南海十三郎名下的。</p>
<p>连他父亲江孔殷估计都拿他没办法，真实情况应该和电影里一样，一大家子相处得还算融洽。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072223799.jpg"></p>
<p>电影里的 “莉莉”，在历史上名叫陈马莉。</p>
<p>两人的感情，并非电影里演的南海十三郎苦苦追求，像个痴汉。</p>
<p>事实是，陈马莉的弟弟陈让是南海十三郎的小学同学，这位同学不幸去世后，南海十三郎感念两人的情义，每每想起都很难过，便时常去同学家探望，就这样和陈马莉相识了。</p>
<p>每次谈起去世的同学，两人都满是悲伤，也算 “抱团取暖、共诉哀肠”，久而久之，便互相看对了眼。</p>
<p>后来，南海十三郎去香港上学，两人靠书信往来，感情愈发深厚。</p>
<p>可陈马莉的父亲是个学者，觉得南海十三郎 “学业未成，又是世家子弟，不知稼穑艰难”，担心两人相恋会荒废学业，便让陈马莉返回北京。</p>
<p>文中的 “不知稼穑艰难”，说白了就是 “不当家不知柴米油盐贵”，觉得南海十三郎不是能好好过日子的人。</p>
<p>陈马莉返回北京后，虽然两人相隔南北，却依然书信不断，情义未变。</p>
<p>可没过多久，陈马莉染上了肺病，病情越来越重。</p>
<p>为了不耽误南海十三郎，她主动提出分手，不再和他联系。</p>
<p>南海十三郎看到信后自然不同意，还打算假期去北京见她。</p>
<p>可陈马莉又来信说，自己已经病入膏肓、形容枯槁，不想以这样的模样见他，只想给南海十三郎留下最好的印象。</p>
<p>第二年，南海十三郎从香港大学退学，打算转去北京的医学院继续学习 —— 他途经上海，准备再北上时，却接到了陈马莉的死讯。</p>
<p>他一下子心灰意冷，既没北上，也没回广州，就一直待在上海。</p>
<p>在上海这一年，南海十三郎一事无成。</p>
<p>也是在这一年，他恰巧碰到了陈马莉的同学张慧梅。</p>
<p>张慧梅是粤籍上海商人的女儿，毕业于广州光华医学院。</p>
<p>她见南海十三郎因陈马莉的死而意志消沉，便对他说：</p>
<p>“陈马莉生前有个夙愿，希望有个痴心男子能以她的生平为蓝本，写一部文艺作品，不管是小说还是剧本都好。”</p>
<p>南海十三郎听后，便为陈马莉创作了《梨香院》（上下卷），以此表达自己的心意，至死不渝。</p>
<p>在我看来，张慧梅说的 “陈马莉的夙愿” 不知是真是假：</p>
<p>如果是真的，对南海十三郎而言是莫大的动力；</p>
<p>如果是假的，这个善意的谎言能把南海十三郎从泥潭里拉出来，也足见她的心肠之好。</p>
<p>说回电影，如果把这段真实的感情故事搬上银幕，替换掉电影里 “莉莉” 的情节，我觉得会更感人。</p>
<p>电影里的莉莉，其实没什么错，可观众看电影时容易 “上头”，会觉得 “这个女人不知好歹，在玩弄南海十三郎的感情”。</p>
<p>可实际上，是南海十三郎苦苦追求，莉莉本就不喜欢他，怎么能怪到人家头上呢？</p>
<p>说真的，要是按现实中的故事来拍就好了 —— 估计能赚一波观众的眼泪，也能让后来南海十三郎的 “消沉疯癫” 更有说服力。</p>
<p>因为在没看到这段真实故事之前，我还觉得 “大丈夫何患无妻”，觉得他 “苦苦追求别人，从广州追到上海，人家都嫁作他人妇了，还在那悲春伤秋，困在无谓的情爱里，格局太小，把自己搞得人不人鬼不鬼，至于吗？”</p>
<p>可没想到，现实中的故事竟如此催人肠断。</p>
<p>我现在光是回想这段故事、敲这些文字，心里都突然觉得很难过。</p>
<p>两人情深意切、重情重义，心里都只有对方，凡事都为对方着想，可为什么会是这样的结局呢？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072223769.jpg"></p>
<p>再说说南海十三郎的从戎生涯。</p>
<p>他在部队里主要负责爱国宣传和戏剧劳军，文中提到他 “谨守父训‘未临战地者，非儿子’”，从这句话就能看出江家的教育有多硬核。</p>
<p>这让我想到了 “死字旗” 上的两段话：</p>
<p>“我不愿你在我近前尽孝，只愿你在民族份上尽忠”</p>
<p>“国难当头，日寇狰狞，国家兴亡，匹夫有分，本欲服役，奈过年龄，幸吾有子，自觉请缨，赐旗一面，时刻随身，伤时拭血，死后裹身，勇往直前，勿忘本分。”</p>
<p>江家有三个男子都参军了，南海十三郎是其中之一。</p>
<p>本来作为抗战戏剧工作者，大多待在后方即可，可只有南海十三郎主动去了前线。</p>
<p>而且，军旅生活虽然艰苦，他作为 “公子哥”，却从没觉得自己高人一等 —— 别人吃什么，他就吃什么；不管身处什么险境，都能苦中作乐。</p>
<p>南海十三郎在前线时，还多次和日本鬼子险些交锋，最近的一次距离只有几百米，处境可谓凶险。</p>
<p>可他从未退缩过，真是 “大丈夫死则死矣”，毫无惧色。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072241097.jpg"></p>
<p>这些是这篇传记里让我印象最深的几件事。</p>
<p>其实还有很多细节，可碍于篇幅，我就不一一细说了。</p>
<p>要是写得太多，反倒像在抄那篇传记。</p>
<p>感兴趣的话，大家可以去看看那篇原文，写得很详尽，不会让你失望。</p>
<p>至于百度百科里那张图片的介绍，也可以看看，只是没传记那么详细。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509062240103.png"></p>
<h2 id="历史上的江孔殷">历史上的江孔殷</h2>
<p>历史上的江孔殷和电影中的形象，给我的感觉落差极大。</p>
<p>电影里的他像个病恹恹的老人，可现实中的江孔殷，比他儿子南海十三郎还要传奇。</p>
<p>单从前面提到的 “筹葬七十二烈士于黄花岗”“训子‘未临战地者，非儿子’” 这两件事，就能看出他绝非等闲之辈。</p>
<p>事实上，江孔殷是清朝的京官，也是个美食家。</p>
<p>他师从康有为，1895 年参与过 “公车上书”，1904 年赴京参加会试，考中恩科二甲第 27 名进士，还曾奉旨出使日本、朝鲜及中国台湾地区。</p>
<p>慈禧太后曾赏赐他一百二十盆兰花，他回到广东后，因镇压盗匪有功，声名远扬，是当时广东政坛的实力派人物。</p>
<p>江孔殷为人慷慨，广交天下名士，连 “三教九流” 的人都能和他打交道，可谓 “黑白两道通吃”。</p>
<p>他还同情革命党人。</p>
<p>救过汪精卫、陈景华，还协助潘达微将七十二烈士安葬在黄花岗。</p>
<p>这一义举被广为称赞，孙中山、宋庆龄都曾专门登门拜谢。</p>
<p>辛亥革命起义后，他还极力促成广东和平独立，避免了更多战乱。</p>
<p>所以说，南海十三郎的出身本就不简单。</p>
<p>他上小学时，江孔殷就为他安排了 “一对一” 教学。</p>
<p>教他的老师，要么是进士出身，要么是当时有名的学者。</p>
<p>南海十三郎一开始中文没学好，江孔殷就先让他学德语，再请专人辅导中文，之后又安排他学英语，教学资源直接拉满。</p>
<p>而且，南海十三郎和冼星海还是同班同学。</p>
<p>1938 年日军轰炸广州，广州沦陷后，宋庆龄、何香凝、廖承志等人南下香港，南海十三郎还经常去探望他们。</p>
<p>想想看，南海十三郎从小到大认识的全是大佬，都是在史书上会留下名字的人物，我小叮当还能说什么呢。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072243336.jpg"></p>
<h2 id="经典台词">经典台词</h2>
<ol>
<li>心声泪影女儿香，燕归何处觅残塘，红绡夜盗寒江雪，痴人正是十三郎。</li>
<li>偷我左脚鞋的是英国人，偷我右脚鞋的是日本人，中国人的鞋都叫他们偷光了。无路可走，哪也去不了，走投无路行不得也！</li>
<li>一身子女债，半世老婆奴。</li>
<li>我唱的都是大仁大义之戏。我写的都是有情有义之词。</li>
<li>我们君子之交，就凭这一杯茶。</li>
<li>学我者生，像我者死。</li>
<li>黄金股票、世界大事都是过眼烟云，可是一个好剧本，五十年一百年依然有人欣赏，就算我死了，我的名字我的戏，没有人会忘记。</li>
<li>做戏也做人，戏要启示人生一条正确的路。我的戏全都是导人向善，教人有始有终顶天立地！</li>
<li>相见若似梦，自从别去匆匆，此刻再重逢，咫尺隔万重。</li>
<li>你既知我未放松，几番觅你难自控，你不要自弃遗恨痛，今再遇见也是奇逢。</li>
<li>错就错在我太像你了，你随随便便就娶了十二个老婆，我弱水三千只钟情一个也无福消受。</li>
<li>千万别以为自己是天才，真正的天才只有两种结局：一是早死，就像唐涤生，二是疯了，悲剧收场。</li>
<li>其实做人用不着看得太清楚，什么都看得那么清楚，那是很痛苦的。</li>
<li>我不洗澡，我经常洗心。做人最重要的心干净就行啦。</li>
<li>我家老爷，一辈子吃尽山珍海味，怎么会想到最后要绝食饿死呢？</li>
<li>雪山白凤凰。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072246534.jpg"></p>
<h2 id="结语">结语</h2>
<p>这次电影观后感，不知不觉就写了上万个字，连我自己都觉得意外。</p>
<p>反复翻看那篇南海十三郎的传记和百度百科里的生平图片，不过三四页纸，可我心里却感慨万千。</p>
<p>我忍不住想，人这一辈子，到底值不值得来这世上走一遭？</p>
<p>我不清楚此刻自己该是什么心情，是云淡风轻，是庄严肃穆，还是凄凄惨惨、悲悲戚戚？</p>
<p>直到想起好多年前，当时明月在采访里说的一段话，突然觉得这些情绪都不重要了。</p>
<p>“我只要翻开那本书，我就是在看大海。它记述了无数人的一辈子 —— 他们不断地挣扎，想出头，想出名；有的为了正义而奋斗，有的为了私利而奔波。可这些人，不管怎么折腾，最后都只在这本书里。<strong>你一页纸翻过去，就能翻过无数人的一辈子。</strong>”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509072245562.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-09-03 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：2个煮鸡蛋、瘦肉粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：招牌花甲粉丝、烤冷面、卤鸭腿、卤鸭头、卤猪皮、橘子、无糖可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;坐下抬起，30kg，5组，一组10个&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509041713560.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;不管多晚，不管当天计划是什么，先解决运动这个问题。只要坚持一件事情，其他有关联的会到一定阶段，自己也跟着完善的，急不来的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：2个煮鸡蛋、瘦肉粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：招牌花甲粉丝、烤冷面、卤鸭腿、卤鸭头、卤猪皮、橘子、无糖可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>坐下抬起，30kg，5组，一组10个</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509041713560.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>不管多晚，不管当天计划是什么，先解决运动这个问题。只要坚持一件事情，其他有关联的会到一定阶段，自己也跟着完善的，急不来的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-09-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：茶叶蛋、蜜汁叉烧包、白粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：2个塔斯汀鸡腿堡、薯条、2个炸小鸡腿&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509031600452.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;这是第二天，虽然经常因为跑步机，不能爬坡的问题，搞得有点烦，但是问题出现了，就要想办法解决，那就是跑起来就好了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：茶叶蛋、蜜汁叉烧包、白粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：2个塔斯汀鸡腿堡、薯条、2个炸小鸡腿</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509031600452.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>这是第二天，虽然经常因为跑步机，不能爬坡的问题，搞得有点烦，但是问题出现了，就要想办法解决，那就是跑起来就好了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-09-01 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-09-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒白菜、白粥、面包&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：华莱士汉堡、半炸鸡、4鸡架、4鸡块、豌豆杂拌面&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;举起手，30kg，5组，一组10个&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509020915839.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;只有运动起来，才是真正的活着。&lt;/li&gt;
&lt;li&gt;先坚持再说，其他的说破天也就那样了，只有量变才能引起质变。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒白菜、白粥、面包</li>
<li>午餐：公司食堂</li>
<li>晚餐：华莱士汉堡、半炸鸡、4鸡架、4鸡块、豌豆杂拌面</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>举起手，30kg，5组，一组10个</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509020915839.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>只有运动起来，才是真正的活着。</li>
<li>先坚持再说，其他的说破天也就那样了，只有量变才能引起质变。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《百度 SEO 优化指南》大纲</title>
      <link>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/%E7%99%BE%E5%BA%A6-seo-%E4%BC%98%E5%8C%96%E6%8C%87%E5%8D%97%E5%A4%A7%E7%BA%B2/</link>
      <pubDate>Sat, 30 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/%E7%99%BE%E5%BA%A6-seo-%E4%BC%98%E5%8C%96%E6%8C%87%E5%8D%97%E5%A4%A7%E7%BA%B2/</guid>
      <description>&lt;p&gt;百度SEO优化指南&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;百度搜索引擎工作原理（抓取、索引、排名逻辑）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网站开发技术选型分析&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hugo 个人博客搭建&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基于 Nuxt3 开发 SaaS 平台官网&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网站嵌入百度统计代码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;百度统计基本使用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;百度站长工具（百度搜索资源平台）的基本使用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;死链以及已收录快照的解决方案&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网站嵌入百度站长工具统计代码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ubersuggest 工具的基本使用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SEOquake插件的基本使用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已反馈的SEO问题分析&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如何提高收录量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为什么收录量不高，但是排名很靠前&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;收入量为什么骤降&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GEO（AI SEO）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;百度-seo-优化指南优化大纲升级版&#34;&gt;《百度 SEO 优化指南》优化大纲（升级版）&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;核心优化逻辑&lt;/strong&gt;：从 “理论框架” 转向 “问题解决型框架”，每章明确 “解决什么痛点”，补充 “案例 + 避坑 + 工具 / 模板”，让不同阶段学习者都能精准对标。&lt;/p&gt;
&lt;h2 id=&#34;第一部分-基础准备seo-认知与技术选型解决-入门怕走偏选技术瞎猜-痛点&#34;&gt;第一部分 基础准备：SEO 认知与技术选型（解决 “入门怕走偏、选技术瞎猜” 痛点）&lt;/h2&gt;
&lt;h3 id=&#34;第-1-章-百度-seo-核心认知新手入门不踩坑&#34;&gt;第 1 章 百度 SEO 核心认知（新手入门不踩坑）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本章痛点&lt;/strong&gt;：搞不懂搜索引擎逻辑，优化全靠 “凭感觉”，新站常因基础认知错走弯路&lt;/p&gt;
&lt;p&gt;1.1 百度搜索引擎工作原理（抓取、索引、排名逻辑）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;具象化拆解：以 “新博客文章” 为例，还原从 “百度蜘蛛发现→抓取→索引→首页排名” 的 3 个关键节点（附流程图）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;避坑指南：3 种常见抓取失败场景（robots 误拦截、服务器响应＞3 秒、内容重复度＞80%）及 1 步解决方法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新手必知：百度 “移动端优先索引” 规则对收录的影响（避免只做 PC 端优化）&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>百度SEO优化指南</p>
<ol>
<li>
<p>百度搜索引擎工作原理（抓取、索引、排名逻辑）</p>
</li>
<li>
<p>网站开发技术选型分析</p>
</li>
<li>
<p>Hugo 个人博客搭建</p>
</li>
<li>
<p>基于 Nuxt3 开发 SaaS 平台官网</p>
</li>
<li>
<p>网站嵌入百度统计代码</p>
</li>
<li>
<p>百度统计基本使用</p>
</li>
<li>
<p>百度站长工具（百度搜索资源平台）的基本使用</p>
</li>
<li>
<p>死链以及已收录快照的解决方案</p>
</li>
<li>
<p>网站嵌入百度站长工具统计代码</p>
</li>
<li>
<p>Ubersuggest 工具的基本使用</p>
</li>
<li>
<p>SEOquake插件的基本使用</p>
</li>
<li>
<p>已反馈的SEO问题分析</p>
</li>
<li>
<p>如何提高收录量</p>
</li>
<li>
<p>为什么收录量不高，但是排名很靠前</p>
</li>
<li>
<p>收入量为什么骤降</p>
</li>
<li>
<p>GEO（AI SEO）</p>
</li>
</ol>
<h1 id="百度-seo-优化指南优化大纲升级版">《百度 SEO 优化指南》优化大纲（升级版）</h1>
<p><strong>核心优化逻辑</strong>：从 “理论框架” 转向 “问题解决型框架”，每章明确 “解决什么痛点”，补充 “案例 + 避坑 + 工具 / 模板”，让不同阶段学习者都能精准对标。</p>
<h2 id="第一部分-基础准备seo-认知与技术选型解决-入门怕走偏选技术瞎猜-痛点">第一部分 基础准备：SEO 认知与技术选型（解决 “入门怕走偏、选技术瞎猜” 痛点）</h2>
<h3 id="第-1-章-百度-seo-核心认知新手入门不踩坑">第 1 章 百度 SEO 核心认知（新手入门不踩坑）</h3>
<p><strong>本章痛点</strong>：搞不懂搜索引擎逻辑，优化全靠 “凭感觉”，新站常因基础认知错走弯路</p>
<p>1.1 百度搜索引擎工作原理（抓取、索引、排名逻辑）</p>
<ul>
<li>
<p>具象化拆解：以 “新博客文章” 为例，还原从 “百度蜘蛛发现→抓取→索引→首页排名” 的 3 个关键节点（附流程图）</p>
</li>
<li>
<p>避坑指南：3 种常见抓取失败场景（robots 误拦截、服务器响应＞3 秒、内容重复度＞80%）及 1 步解决方法</p>
</li>
<li>
<p>新手必知：百度 “移动端优先索引” 规则对收录的影响（避免只做 PC 端优化）</p>
</li>
</ul>
<p>1.2 SEO 与网站技术的关联（技术选错，后期优化白费）</p>
<ul>
<li>
<p>真实案例：某 SaaS 官网用纯前端（CSR）开发，6 个月未被百度收录的整改过程（附前后收录数据对比）</p>
</li>
<li>
<p>关键结论：技术选型前必问的 3 个问题（是否支持 SSR/SSG？能否自定义 URL 结构？是否易生成站点地图？）</p>
</li>
</ul>
<h3 id="第-2-章-seo-友好型技术选型分析选对技术省一半力">第 2 章 SEO 友好型技术选型分析（选对技术省一半力）</h3>
<p><strong>本章痛点</strong>：不知道 “个人博客 / 企业官网” 该用什么技术，担心 “技术不匹配导致优化难”</p>
<p>2.1 网站开发技术对比（静态 / 动态技术对 SEO 的优劣势）</p>
<ul>
<li>
<p>可视化对比表：静态技术（Hugo/Gatsby）vs 动态技术（WordPress/ThinkPHP）的 “SEO 友好度、维护成本、加载速度、适配场景” 对比（附数据：如 Hugo 页面加载速度比 WordPress 快 60%）</p>
</li>
<li>
<p>适配建议：流量低、内容固定（如个人博客 / 资讯站）选静态；需频繁更新、有交互功能（如电商 / 会员站）选动态</p>
</li>
</ul>
<p>2.2 不同场景的技术适配（个人博客 vs SaaS 官网的技术需求差异）</p>
<ul>
<li>
<p>个人博客场景：推荐 Hugo 的 4 个核心原因（加载快 = 收录快、自带站点地图、支持 Markdown 易做内容优化、无需复杂服务器）</p>
</li>
<li>
<p>SaaS 官网场景：选 Nuxt3 的关键理由（SSR 解决纯前端抓取难题、支持多端适配、产品页易做差异化 SEO 布局）</p>
</li>
<li>
<p>配套资源：各技术栈的 “SEO 基础配置模板”（如 Hugo 的 URL 规则模板、Nuxt3 的 meta 标签配置模板）</p>
</li>
</ul>
<h2 id="第二部分-实践搭建seo-友好型网站开发解决-会搭站但不会优化搭好站没收录-痛点">第二部分 实践搭建：SEO 友好型网站开发（解决 “会搭站但不会优化、搭好站没收录” 痛点）</h2>
<h3 id="第-3-章-hugo-个人博客搭建seo-优化版新手-1-小时落地">第 3 章 Hugo 个人博客搭建（SEO 优化版）（新手 1 小时落地）</h3>
<p><strong>本章痛点</strong>：搭好博客却 “百度搜不到”，不知道 URL、标签等细节没优化</p>
<p>3.1 Hugo 搭建核心步骤（含 URL 结构、站点地图配置）</p>
<ul>
<li>
<p>step-by-step 实操：从 “安装 Hugo→创建站点→配置主题→部署上线” 的 5 步截图指引（推荐免费主题：PaperMod，自带 SEO 基础配置）</p>
</li>
<li>
<p>SEO 关键配置：URL 结构优化（推荐 “域名 / 分类 / 文章标题”，避免 “数字 ID / 随机字符串”，附配置代码）、站点地图自动生成与百度提交方法</p>
</li>
</ul>
<p>3.2 博客搭建中的 SEO 细节（这些细节决定收录速度）</p>
<ul>
<li>
<p>必做优化点：</p>
</li>
<li>
<p>标题标签：H1 仅用在文章标题，分类页用 H2，避免一篇内容多个 H1（附错误 / 正确案例）</p>
</li>
<li>
<p>锚文本：内链锚文本不重复（如 “SEO 工具” vs “好用的百度 SEO 工具”），指向高相关页面（如文章中提 “关键词挖掘”，链接到关键词工具文章）</p>
</li>
<li>
<p>图片 ALT 属性：含 “关键词 + 场景”（如 “北京 SEO 优化流程图” 而非 “图片 1”）</p>
</li>
<li>
<p>实操作业：搭建后自查 3 个核心点（URL 结构、H 标签层级、图片 ALT），附自查表</p>
</li>
</ul>
<h3 id="第-4-章-基于-nuxt3-开发-saas-平台官网企业级优化">第 4 章 基于 Nuxt3 开发 SaaS 平台官网（企业级优化）</h3>
<p><strong>本章痛点</strong>：SaaS 官网产品页多、内容相似，易被判定 “重复内容”，收录率低</p>
<p>4.1 Nuxt3 的 SEO 优势（服务端渲染对抓取的支持）</p>
<ul>
<li>
<p>对比数据：同内容下，Nuxt3（SSR）vs Vue3（CSR）的百度收录速度差异（15 天监测：SSR 页面收录率 85%，CSR 仅 12%）</p>
</li>
<li>
<p>关键配置：Nuxt3 中 “动态 meta 标签” 设置（不同产品页自动生成差异化标题 / 描述，附代码示例）、“预渲染” 功能开启步骤（提升抓取效率）</p>
</li>
</ul>
<p>4.2 SaaS 官网关键页面优化（聚焦高转化页面）</p>
<ul>
<li>
<p>核心页面清单：首页（承载品牌词）、产品详情页（核心功能关键词）、解决方案页（行业场景关键词）、博客页（长尾词引流）</p>
</li>
<li>
<p>优化模板：</p>
</li>
<li>
<p>产品详情页标题：“产品名 + 核心功能 + 行业”（如 “XXCRM 系统_客户管理自动化_中小企业专用”）</p>
</li>
<li>
<p>内容布局：前 300 字含 2 个核心词 + 1 个客户痛点（如 “XXCRM 解决中小企业‘客户跟进乱、成交率低’问题，支持自动同步客户数据”）</p>
</li>
<li>
<p>避坑提示：避免不同产品页 “仅换图片 / 参数，核心描述重复”，附内容差异化判断标准（重复度＜50%）</p>
</li>
</ul>
<h2 id="第三部分-数据追踪百度官方工具配置与使用解决-优化后不知道效果数据不会用-痛点">第三部分 数据追踪：百度官方工具配置与使用（解决 “优化后不知道效果、数据不会用” 痛点）</h2>
<h3 id="第-5-章-百度统计工具应用数据驱动优化不做-无用功">第 5 章 百度统计工具应用（数据驱动优化，不做 “无用功”）</h3>
<p><strong>本章痛点</strong>：只会看 “访问量”，不会用数据找优化方向，转化低却不知道原因</p>
<p>5.1 网站嵌入百度统计代码（不同技术栈的嵌入方法）</p>
<ul>
<li>
<p>分场景教程：</p>
</li>
<li>
<p>Hugo：修改主题配置文件（config.toml）嵌入代码（附完整代码片段）</p>
</li>
<li>
<p>Nuxt3：通过 “plugins” 集成，实现全页面追踪（含路由切换追踪配置）</p>
</li>
<li>
<p>WordPress：用 “百度统计” 插件一键安装（避免手动改代码出错）</p>
</li>
<li>
<p>验证技巧：嵌入后 10 分钟，通过 “百度统计 - 实时访客” 确认是否生效（附截图指引）</p>
</li>
</ul>
<p>5.2 百度统计核心功能（重点看这 3 个数据，其余可忽略）</p>
<ul>
<li>
<p>流量来源分析：区分 “搜索流量（SEO 效果）”“直接流量（品牌认知）”“referral 流量（外链效果）”，找出核心流量渠道（如搜索流量占比低，需加强关键词优化）</p>
</li>
<li>
<p>页面热力分析：通过 “点击热力图” 优化按钮位置 / 颜色（案例：某 SaaS 官网将 “免费试用” 按钮从右侧移到中部，点击量提升 40%）</p>
</li>
<li>
<p>转化追踪：以 “表单提交（如申请试用）” 为例，配置转化目标（附步骤截图），计算 “SEO 流量转化率”（转化率＜2% 需优化落地页）</p>
</li>
</ul>
<h3 id="第-6-章-百度搜索资源平台站长工具操作收录--排名急救站">第 6 章 百度搜索资源平台（站长工具）操作（收录 / 排名急救站）</h3>
<p><strong>本章痛点</strong>：收录慢、索引量骤降，不知道怎么 “主动干预”</p>
<p>6.1 网站验证与百度统计代码关联（一次操作，双工具互通）</p>
<ul>
<li>
<p>3 种验证方式对比：</p>
</li>
<li>
<p>HTML 标签验证：最快（复制标签到网站首页头部，10 分钟生效），适合新手</p>
</li>
<li>
<p>文件验证：需上传文件到服务器，适合有技术基础的用户</p>
</li>
<li>
<p>DNS 验证：长期有效，适合域名解析在自己手上的用户</p>
</li>
<li>
<p>关联价值：搜索资源平台可直接查看 “百度统计的流量数据”，无需切换工具，快速定位 “收录降 vs 流量降” 的关系</p>
</li>
</ul>
<p>6.2 核心功能使用（4 个高频操作，解决 80% 收录问题）</p>
<ul>
<li>
<p>索引量查询：区分 “总索引量” vs “有效索引量”（有效索引量低 = 内容质量 / 相关性差，附优化方向）</p>
</li>
<li>
<p>手动提交：新页面用 “实时提交”（24 小时内收录概率提升 60%），批量页面用 “站点地图提交”（每周更新 1 次）</p>
</li>
<li>
<p>robots 配置：用 “可视化工具” 生成 robots 文件（避免手动写代码出错），禁止抓取 “后台页面、登录页、重复内容页”（附 robots 模板）</p>
</li>
<li>
<p>异常提醒：开启 “索引量骤降、抓取异常、违规提醒” 的邮件 / 短信通知（第一时间发现问题，避免延误整改）</p>
</li>
</ul>
<h2 id="第四部分-辅助工具第三方-seo-工具实战解决-关键词找不准竞品看不懂-痛点">第四部分 辅助工具：第三方 SEO 工具实战（解决 “关键词找不准、竞品看不懂” 痛点）</h2>
<h3 id="第-7-章-ubersuggest-工具深度应用高效挖词--抄竞品">第 7 章 Ubersuggest 工具深度应用（高效挖词 + 抄竞品）</h3>
<p><strong>本章痛点</strong>：关键词没思路，不知道竞品靠什么词引流，盲目做词导致排名上不去</p>
<p>7.1 关键词挖掘与竞争度分析（找 “低竞争高转化” 词）</p>
<ul>
<li>实操步骤：</li>
</ul>
<ol>
<li>
<p>输入核心词（如 “北京 SEO 优化”），选择 “中国 - 百度” 地域</p>
</li>
<li>
<p>筛选维度：搜索量 100-500（中小流量，竞争低）、竞争度＜0.5（Ubersuggest 内置评分，越低越好）、CPC＞1 元（转化意向高）</p>
</li>
<li>
<p>组合技巧：用 “地域 + 行业 + 需求” 组合长尾词（如 “北京朝阳 SaaS 官网 SEO 优化”“北京中小企业 SEO 关键词挖掘”）</p>
</li>
</ol>
<ul>
<li>工具替代：若 Ubersuggest 付费，可用 “5118 免费版”“爱站网关键词工具” 替代（附操作差异点）</li>
</ul>
<p>7.2 竞品 SEO 策略拆解（抄作业但不违规）</p>
<ul>
<li>
<p>关键数据：</p>
</li>
<li>
<p>竞品 “top 流量词”：看对方靠什么词排名（如竞品 “XXSEO 公司” 的 top 词是 “北京 SEO 公司排名”，可跟进布局）</p>
</li>
<li>
<p>竞品 “外链来源”：筛选 “域名权重≥3、与行业相关” 的外链（如竞品从 “SEO 论坛” 获链，可去同平台发原创内容换链）</p>
</li>
<li>
<p>竞品 “页面优化”：分析其标题结构（如是否含 “地域 + 服务”）、内容长度（优质竞品内容多在 1500 字以上，含案例 / 数据）</p>
</li>
</ul>
<h3 id="第-8-章-seoquake-插件实战发布前自查避免低级错误">第 8 章 SEOquake 插件实战（发布前自查，避免低级错误）</h3>
<p><strong>本章痛点</strong>：内容发布后才发现 “关键词堆砌、外链低质”，改后影响收录</p>
<p>8.1 浏览器插件安装与基础设置（1 分钟搞定）</p>
<ul>
<li>
<p>安装步骤：Chrome/Firefox 浏览器→应用商店搜索 “SEOquake”→安装后启用，在 “设置 - 搜索引擎” 勾选 “百度”（默认是谷歌，需调整）</p>
</li>
<li>
<p>必开功能：关键词密度、内链数、外链数（区分 “nofollow/dofollow”）、百度权重（参考值，避免过度依赖）</p>
</li>
</ul>
<p>8.2 实时 SEO 数据查看（发布前必查 3 项）</p>
<ul>
<li>
<p>关键词密度：核心词密度 2%-5%（过高易被判定堆砌，如 “北京 SEO” 在 500 字内容中出现＞25 次即危险），用插件实时调整</p>
</li>
<li>
<p>内链配置：单页面内链 3-5 个，指向 “高权重页面（如首页）” 或 “相关内容页（如提‘死链处理’，链接到死链章节）”</p>
</li>
<li>
<p>外链检查：避免链接到 “域名权重＜2、有违规记录” 的网站（插件可显示外链域名权重）</p>
</li>
<li>
<p>配套工具：《页面 SEO 发布前自查表》（含密度、内链、标题长度等 8 项指标，可打印复用）</p>
</li>
</ul>
<h2 id="第五部分-问题诊断seo-常见问题解决方案解决-遇到问题不会修反馈没回音-痛点">第五部分 问题诊断：SEO 常见问题解决方案（解决 “遇到问题不会修、反馈没回音” 痛点）</h2>
<h3 id="第-9-章-收录与排名问题破解急救指南72-小时出结果">第 9 章 收录与排名问题破解（急救指南，72 小时出结果）</h3>
<p><strong>本章痛点</strong>：收录量上不去、排名忽高忽低、突然骤降，不知道从哪下手解决</p>
<p>9.1 如何提升百度收录量（主动 + 被动双管齐下）</p>
<ul>
<li>
<p>主动方法：百度搜索资源平台 “实时提交”（新页面 24 小时内提交）+“站点地图每周更新”，附提交后收录率提升的案例（某博客从 “提交后 3 天收录” 到 “1 天收录”）</p>
</li>
<li>
<p>被动方法：提升内容 “稀缺性”（如 “行业数据 + 实操案例” 组合，如 “2025 年北京 SEO 行业报告 + 3 个中小企业优化案例”）、增加 “内链推荐”（从首页 / 分类页给新页面加链接）</p>
</li>
</ul>
<p>9.2 收录量低但排名靠前的原因分析（不用盲目追求 “高收录”，精准更重要）</p>
<ul>
<li>
<p>核心逻辑：关键词 “精准度”＞收录量，如 “深圳南山亲子摄影工作室”（搜索量 50，竞争低，转化高）比 “摄影工作室”（搜索量 5000，竞争高，转化低）更易排名</p>
</li>
<li>
<p>优化方向：聚焦 “长尾精准词”（含地域 / 场景 / 需求），减少 “泛词” 内容，附 “长尾词布局模板”</p>
</li>
</ul>
<p>9.3 收录量骤降的应急处理（72 小时步骤）</p>
<ul>
<li>
<p>第一步：排查违规（用 “百度搜索资源平台 - 违规查询” 查是否有 “内容违规 / 外链违规”，附排查截图）</p>
</li>
<li>
<p>第二步：提交反馈（若未违规，通过 “反馈中心 - 索引量问题” 提交申诉，附 “索引量变化截图 + 整改说明” 模板）</p>
</li>
<li>
<p>第三步：补充优质内容（72 小时内发布 2-3 篇高价值文，如 “行业干货 + 用户案例”，提升站点活跃度）</p>
</li>
</ul>
<h3 id="第-10-章-网站异常问题解决小问题不拖成大麻烦">第 10 章 网站异常问题解决（小问题不拖成大麻烦）</h3>
<p>10.1 死链检测与处理（不处理会拉低整体权重）</p>
<ul>
<li>
<p>工具推荐：</p>
</li>
<li>
<p>免费工具：百度搜索资源平台 “死链检测”（适合查站内死链）、Xenu Link Sleuth（批量检测，支持导出死链列表）</p>
</li>
<li>
<p>付费工具：Ahrefs（适合查外链中的死链）</p>
</li>
<li>
<p>处理步骤：检测死链→生成死链文件（格式要求：TXT，每行 1 个死链 URL）→提交百度死链平台→3-7 天后查看处理结果（附提交截图）</p>
</li>
<li>
<p>避坑提示：删除页面前先做 “301 重定向”（如旧文章删除，重定向到相关新文章），避免直接删页导致死链</p>
</li>
</ul>
<p>10.2 已反馈 SEO 问题的跟进技巧（提高反馈成功率）</p>
<ul>
<li>
<p>证据准备：反馈时需附 3 类材料（问题截图：标注 “时间 + 数据变化”，如 “2025.8.1-8.3 索引量从 500→100”；操作记录：如近期是否改 URL / 删内容；行业参考：如竞品同期索引量是否正常）</p>
</li>
<li>
<p>沟通话术：避免 “我的收录怎么降了？”，改用 “我的网站 XX 日期后索引量从 XX 降至 XX，已排查 robots / 违规 / 服务器，未发现问题，附截图，麻烦帮忙分析原因，谢谢！”</p>
</li>
<li>
<p>跟进周期：反馈后 3-5 天查看 “反馈进度”，未回复可补充 “新证据”（如新增优质内容后的收录变化）</p>
</li>
</ul>
<h2 id="第六部分-进阶趋势ai-驱动的-seo-新方向解决-跟不上-ai-趋势geo-优化没思路-痛点">第六部分 进阶趋势：AI 驱动的 SEO 新方向（解决 “跟不上 AI 趋势、GEO 优化没思路” 痛点）</h2>
<h3 id="第-11-章-geoai-seo实践抓住地域化--ai-红利">第 11 章 GEO（AI SEO）实践（抓住地域化 + AI 红利）</h3>
<p><strong>本章痛点</strong>：不知道 AI 怎么落地 SEO，本地业务（如餐饮 / 家政）不知道怎么靠 GEO 拿精准流量</p>
<p>11.1 GEO SEO 概念与应用场景（地域化是 “精准流量密码”）</p>
<ul>
<li>
<p>核心逻辑：通过 “地域词 + 需求词” 锁定本地用户，如 “杭州西湖附近观景酒店”“成都宽窄巷子必吃小吃”</p>
</li>
<li>
<p>行业案例：</p>
</li>
<li>
<p>餐饮行业：某火锅店通过 “XX 区火锅外卖配送”“XX 路 24 小时火锅” 等词，本地搜索流量提升 50%</p>
</li>
<li>
<p>SaaS 行业：某 CRM 厂商针对 “北京中小企业 CRM”“上海 SaaS 客户管理系统” 做 GEO 优化，转化率比 “全国 CRM” 高 3 倍</p>
</li>
<li>
<p>实操步骤：GEO 优化 3 步走（布局地域关键词→完善地图 POI 信息→发布本地场景内容），附 “百度地图商家标注” 步骤</p>
</li>
</ul>
<p>11.2 AI 在 SEO 中的落地（高效不违规）</p>
<ul>
<li>
<p>AI 生成内容优化：用 AI（如 ChatGPT / 文心一言）生成 “行业问答 / 教程” 初稿，人工补充 “真实案例 + 数据”（修改率≥30%，避免纯 AI 内容被判定低质），附 “AI 内容优化前后对比案例”</p>
</li>
<li>
<p>智能关键词规划：用 “百度 AI 关键词规划师”+“ChatGPT” 生成 “地域 + 行业 + 需求” 三维关键词表（如 “北京 + SEO + 中小企业”“上海 + SaaS + 客户管理”）</p>
</li>
<li>
<p>合规要点：AI 内容需满足 “原创性”（用 “百度原创保护平台” 检测）、“准确性”（数据 / 案例真实，避免 AI 生成虚假信息），附 “AI 内容合规检测工具清单”</p>
</li>
</ul>
<h2 id="附录配套资源包让优化更高效">附录：配套资源包（让优化更高效）</h2>
<ol>
<li>
<p>工具清单：百度 SEO 必备工具（官方工具 / 第三方工具 / AI 工具），标注 “免费 / 付费”“适用场景”“操作链接”</p>
</li>
<li>
<p>代码模板：Hugo URL 配置模板、Nuxt3 meta 标签模板、robots 文件模板、Schema 结构化数据模板（如 FAQ 类型）</p>
</li>
<li>
<p>检查表：《页面 SEO 发布前自查表》《收录问题排查表》《GEO 优化检查表》</p>
</li>
<li>
<p>案例库：10 个不同场景（个人博客 / SaaS 官网 / 本地餐饮）的 SEO 成功案例（含优化前数据、操作步骤、优化后效果）</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ToB 官网 SEO 工作总结：认知转变、工具实操与排名 / 收录优化思路</title>
      <link>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/tob-%E5%AE%98%E7%BD%91-seo-%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93%E8%AE%A4%E7%9F%A5%E8%BD%AC%E5%8F%98%E5%B7%A5%E5%85%B7%E5%AE%9E%E6%93%8D%E4%B8%8E%E6%8E%92%E5%90%8D--%E6%94%B6%E5%BD%95%E4%BC%98%E5%8C%96%E6%80%9D%E8%B7%AF/</link>
      <pubDate>Sat, 30 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/tob-%E5%AE%98%E7%BD%91-seo-%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93%E8%AE%A4%E7%9F%A5%E8%BD%AC%E5%8F%98%E5%B7%A5%E5%85%B7%E5%AE%9E%E6%93%8D%E4%B8%8E%E6%8E%92%E5%90%8D--%E6%94%B6%E5%BD%95%E4%BC%98%E5%8C%96%E6%80%9D%E8%B7%AF/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301515762.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;这段时间，在 SEO 优化上投入了一些时间，重点完成了几项工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;明确 SEO 优化的重要性&lt;/li&gt;
&lt;li&gt;使用 Ubersuggest 工具和 SEOquake 插件检测官网 SEO 存在的问题&lt;/li&gt;
&lt;li&gt;分析部分公司官网百度收录量高的原因&lt;/li&gt;
&lt;li&gt;研究关键词下公司官网排名的查询方法&lt;/li&gt;
&lt;li&gt;总结 SEO 优化工作的收获&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;1--重新认识-seo-优化的重要性&#34;&gt;1 . 重新认识 SEO 优化的重要性&lt;/h1&gt;
&lt;p&gt;最开始我并不重视官网 SEO 优化，因为负责的是 ToB 产品。&lt;/p&gt;
&lt;p&gt;ToB 产品的特性，在之前的《ToB 华为销售法观后感》等文章中提到过：它面向企业 / 公司，不像 ToC 产品面向普通消费者 —— ToC 产品可通过营销手段，对个人精准投放、施加情绪影响，进而促成交易。&lt;/p&gt;
&lt;p&gt;但 ToB 产品面向的是团队而非个人，这类营销手段的影响微乎其微，所以我曾认为，就算把官网 SEO 优化做得再好，也不会有特别大的收获。&lt;/p&gt;
&lt;p&gt;可现在时代节奏快、市场竞争激烈，&lt;strong&gt;“酒香也怕巷子深”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;甚至有些质量欠佳的产品，仅凭出色的营销就能赚得盆满钵满 —— 但这本质是 “杀鸡取卵”，属于一次性交易。&lt;/p&gt;
&lt;p&gt;即便最终消费者醒悟、商家 “塌房”，但已经赚了一波，对他们而言显然不亏。&lt;/p&gt;
&lt;p&gt;互联网本就没有记忆，大不了等风头过去，再提升产品质量，树立 “改邪归正” 的形象，仿佛 “放下屠刀，立地成佛”。&lt;/p&gt;
&lt;p&gt;但如果产品质量过硬，再配上优质营销，就是 “超级放大器”，竞争力会非常强。在我看来，产品质量与营销密不可分，用树苗比喻再合适不过：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;产品质量是树根，营销是化肥。树根长势好，才能支撑树木开枝散叶；如果树根品质过差，化肥只会加速它的枯萎。即便树根优质，如果不施化肥，生长就全看天意 —— 能否下雨、是否出太阳都是变数，长成大树只能靠时间慢慢熬。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;只有树根健壮，再配上到位的施肥浇水，树木才能快速生长，直到长成参天大树，届时用不用化肥反而不那么重要了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以，产品营销就从最基础的官网优化做起。&lt;/p&gt;
&lt;p&gt;没人会拒绝 “投入少、收益大” 的事，官网 SEO 优化正是如此。&lt;/p&gt;
&lt;p&gt;虽然它无法像 ToC 产品那样获取大量流量，但只要做好了，官网就能 24 小时挂在网上，且排名靠前 —— 这相当于免费广告，何乐而不为？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301515762.jpeg"></p>
<p>这段时间，在 SEO 优化上投入了一些时间，重点完成了几项工作：</p>
<ol>
<li>明确 SEO 优化的重要性</li>
<li>使用 Ubersuggest 工具和 SEOquake 插件检测官网 SEO 存在的问题</li>
<li>分析部分公司官网百度收录量高的原因</li>
<li>研究关键词下公司官网排名的查询方法</li>
<li>总结 SEO 优化工作的收获</li>
</ol>
<h1 id="1--重新认识-seo-优化的重要性">1 . 重新认识 SEO 优化的重要性</h1>
<p>最开始我并不重视官网 SEO 优化，因为负责的是 ToB 产品。</p>
<p>ToB 产品的特性，在之前的《ToB 华为销售法观后感》等文章中提到过：它面向企业 / 公司，不像 ToC 产品面向普通消费者 —— ToC 产品可通过营销手段，对个人精准投放、施加情绪影响，进而促成交易。</p>
<p>但 ToB 产品面向的是团队而非个人，这类营销手段的影响微乎其微，所以我曾认为，就算把官网 SEO 优化做得再好，也不会有特别大的收获。</p>
<p>可现在时代节奏快、市场竞争激烈，<strong>“酒香也怕巷子深”。</strong></p>
<p>甚至有些质量欠佳的产品，仅凭出色的营销就能赚得盆满钵满 —— 但这本质是 “杀鸡取卵”，属于一次性交易。</p>
<p>即便最终消费者醒悟、商家 “塌房”，但已经赚了一波，对他们而言显然不亏。</p>
<p>互联网本就没有记忆，大不了等风头过去，再提升产品质量，树立 “改邪归正” 的形象，仿佛 “放下屠刀，立地成佛”。</p>
<p>但如果产品质量过硬，再配上优质营销，就是 “超级放大器”，竞争力会非常强。在我看来，产品质量与营销密不可分，用树苗比喻再合适不过：</p>
<p><strong>产品质量是树根，营销是化肥。树根长势好，才能支撑树木开枝散叶；如果树根品质过差，化肥只会加速它的枯萎。即便树根优质，如果不施化肥，生长就全看天意 —— 能否下雨、是否出太阳都是变数，长成大树只能靠时间慢慢熬。</strong></p>
<p><strong>只有树根健壮，再配上到位的施肥浇水，树木才能快速生长，直到长成参天大树，届时用不用化肥反而不那么重要了。</strong></p>
<p>所以，产品营销就从最基础的官网优化做起。</p>
<p>没人会拒绝 “投入少、收益大” 的事，官网 SEO 优化正是如此。</p>
<p>虽然它无法像 ToC 产品那样获取大量流量，但只要做好了，官网就能 24 小时挂在网上，且排名靠前 —— 这相当于免费广告，何乐而不为？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301515947.jpeg"></p>
<h1 id="2-用工具检测官网-seo-问题">2. 用工具检测官网 SEO 问题</h1>
<p>因此，我开始着手官网 SEO 优化，但一开始完全不清楚切入点，也不知道该做什么，只知道核心目标是 <strong>“让官网在百度搜索中排名靠前”</strong>，只要能达成这个目标就行。</p>
<p>刚接触 SEO 优化时，我心里很没底，完全不知道该怎么做。</p>
<p>下班回家看了几个教学视频，感觉作用不大。</p>
<p>后来突然觉得，或许官网该频繁更新文章（比如按一周一篇的频率），吸引百度爬虫频繁抓取数据 —— 这样收录量上去了，访问量自然也会提升。</p>
<p>不过这个想法比较主观，暂时没验证。</p>
<p>但文章要挂在官网上，就得言之有物，不能瞎编乱造。所以我暂时没深入研究 “发文章” 的问题，而是优先找工具检测官网现存问题 —— 先解决这个更紧迫的需求，应该更合适。</p>
<p>最直接的办法就是找市面上的 SEO 检测工具，通过工具找出官网的 SEO 问题。</p>
<p>我在网上找了很久，却没发现百度相关的 SEO 检测工具，这真的有点无奈。</p>
<p>虽然百度有 “百度统计”“百度搜索资源平台”，能分析和展示官网的访问量、关键词排名、百度爬虫情况，但始终觉得没满足我的需求。</p>
<p><strong>我想要的是一款能全面检测、分析官网的 SEO 工具，把所有问题都暴露出来，这样就能针对性解决问题，做好 SEO 优化。</strong></p>
<p>无奈之下，只能大海捞针般在网上反复查找和验证。</p>
<p>网上多数 SEO 工具源自国外，基于谷歌爬虫规则设计，与百度爬虫机制并不完全一致。</p>
<p>但我只能 “死马当活马医”—— 即便爬虫机制不同，SEO 优化的底层逻辑应该相通，至少能有个参考方向。</p>
<p>就这样，我用了 Ubersuggest 工具。</p>
<p>它能全面检测网站，比如识别页面字数不足、元描述重复、页面加载速度过慢等问题，对现阶段还是 SEO 小白的我来说，已经足够用了。</p>
<p>不过这个工具需要买月卡，一个月 12 美元，好在我不用天天用 —— 修复完问题后基本就闲置了。</p>
<p>但麻烦的是，购买需要 VISA 信用卡，我之前没办理过，一下就卡住了。</p>
<p>本来就不知道 SEO 优化下一步该做什么，现在眼看 “胜利的曙光” 就在眼前，却被 VISA 信用卡难住了。</p>
<p>我不甘心放弃，转念一想：“机智如我，不如去某宝看看？” 没想到还真有卖 Ubersuggest 共享账号的，立刻买了一个月，确实方便不少。</p>
<p>但 Ubersuggest 毕竟基于谷歌爬虫设计，为了确保检测全面性，我打算再找其他工具，后来发现了免费的 SEOquake 插件。</p>
<p>看了它的检测报告，发现同样基于谷歌爬虫设计，但分析得很有道理，比如 “描述内容不能过短”“图片要补充 ALT 说明” 等 —— 它相当于对 Ubersuggest 的检测结果做了补充。</p>
<p>我的想法是 “多一个工具，就能尽可能覆盖所有问题”。</p>
<p>至此，我终于明确了工作方向：修复 Ubersuggest 和 SEOquake 检测出的官网问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301522512.jpeg"></p>
<h1 id="3-分析高收录量官网的共性">3. 分析高收录量官网的共性</h1>
<p>接着，我开始分析排名靠前的公司官网，想看看它们有什么共同点、为什么能排名靠前，并和自家产品官网做对比。</p>
<p>我发现有些公司官网有大量产品说明文档，百度收录量能达到上万个链接，这真的让我很惊讶 —— 再看自家官网，收录量才 30 个，对比之下差距实在太大。</p>
<p>深入分析后才明白，关键在于产品帮助手册：这些公司的帮助手册内容丰富，且基于 Vitepress 这类文档框架搭建。</p>
<p>这类框架的特点是，用 Markdown 编写内容后，能生成可轻松部署的静态 HTML 页面 —— 这对 SEO 优化非常有利，因为爬虫本就重点抓取 HTML 页面的数据。</p>
<p>但我部门产品官网的文档都是通过后端接口获取的，对爬虫来说，这类页面相当于空白，没有可抓取的内容，自然不利于收录。</p>
<p>于是我想到：可以基于 Vitepress 框架，把各平台的帮助文档整合起来，挂到官网域名下，方便百度爬虫抓取页面。</p>
<p>这算是我的第二个核心任务。</p>
<p>需要说明的是，<strong>收录量不等于访问量，但能提高曝光度。</strong></p>
<p>用户可能不会点击，但随着时间推移，看到该官网的概率会越来越大。</p>
<p>久而久之，用户或许会疑惑 “怎么总看到这家公司”，进而默认其产品不会太差。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301518473.jpeg"></p>
<h1 id="4-关键词排名的查询方法">4. 关键词排名的查询方法</h1>
<p>为什么要知道 “关键词下公司官网排第几”？这其实涉及工作量化的问题 ——SEO 优化如何体现成效？</p>
<p>如果领导问 “你做了什么工作，达成了什么目的”，总不能只说 “我做了 SEO 优化，排名靠前了”。</p>
<p>要是领导追问 “具体排第几？提升了多少？”，答不上来就很被动。</p>
<p>所以，在动手做 SEO 优化前，需要先明确 “现状”：目标关键词下，官网当前排名是多少？</p>
<p>我之前找了很多工具、查了不少资料，一直不知道怎么获取准确排名。</p>
<p>自己手动在百度搜索，翻了几十页都没找到官网，特别疑惑。</p>
<p>后来重新尝试百度搜索资源平台（原百度站长工具），才算摸清了门路 —— 平台里就有关键词排名数据。</p>
<p>只是之前试过一次，发现数据和实际排名有出入就没再信任，其实排名本就会动态变化，工具数据大体上是准确的，现在总算解决了这个问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301518525.png"></p>
<h1 id="5-seo-优化工作的收获">5. SEO 优化工作的收获</h1>
<p>从最初觉得 SEO 优化不重要，到后来意识到其重要性却无从下手，再到现在发现 SEO 优化其实并不简单：它看似没什么技术含量，实则有很多 “不摆在台面上” 的知识要学，想做好真的不容易。</p>
<p>我只能告诉自己：先做起来再说。不会、不懂都没关系，先结合自己的想法和仅有的知识去实践，遇到问题就分析问题、解决问题，再逐步深入。<strong>如果总想一步到位，觉得不够完美就不行动，那永远只能原地踏步。</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508301516111.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>SEO 术语通俗易懂版本</title>
      <link>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/seo-%E6%9C%AF%E8%AF%AD%E9%80%9A%E4%BF%97%E6%98%93%E6%87%82%E7%89%88%E6%9C%AC/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/seo%E4%BC%98%E5%8C%96/seo-%E6%9C%AF%E8%AF%AD%E9%80%9A%E4%BF%97%E6%98%93%E6%87%82%E7%89%88%E6%9C%AC/</guid>
      <description>&lt;h1 id=&#34;收入量&#34;&gt;收入量&lt;/h1&gt;
&lt;p&gt;收录量不是等于访问量，但是可以提高曝光度，从而带来访问量增多的可能性。&lt;/p&gt;
&lt;h1 id=&#34;网站tdk&#34;&gt;网站TDK&lt;/h1&gt;
&lt;p&gt;在SEO中，网站的TDK指的是标题、描述和关键词的缩写，这三个元素对于网站来说至关重要。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;标题：就是浏览器窗口，鼠标悬浮显示的文本，当然是表示网站的主题了。&lt;/li&gt;
&lt;li&gt;描述：就是百度搜索结果页面，网站标题下面的那一段描述文本内容，对网站详细的介绍。&lt;/li&gt;
&lt;li&gt;关键词：就是网站主要的内容有哪些？可以概括为哪些词？可以理解为标签。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果要用生活中常见的例子来说明，打个比方就是，有一家湘菜快餐店，分解成TDK格式的话：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;标题：湘菜小炒&lt;/li&gt;
&lt;li&gt;描述：湘菜小炒传承优良湘菜风格，用料新鲜，现做现炒，吃饱吃好，卫生符合国家食品安全标准，是打工人的不二选择。&lt;/li&gt;
&lt;li&gt;关键词：湘菜、现炒、吃得饱。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;标题、关键词、描述，这三个部分要做好，但是做好这三部分之前，是要想清楚，自己的网站定位是什么，关键词是哪个？&lt;/p&gt;
&lt;p&gt;比如你是云计算解决方案商，那关键词可能是“云平台”、比如你是工商业储能行业解决方案提供商，那么关键词可能是“工商业储能”等等。&lt;/p&gt;
&lt;h1 id=&#34;长尾关键词&#34;&gt;长尾关键词&lt;/h1&gt;
&lt;h1 id=&#34;关键词排名&#34;&gt;关键词排名&lt;/h1&gt;
&lt;p&gt;怎么知道这个网站在这个关键词下排名是多少？&lt;/p&gt;
&lt;h1 id=&#34;死链&#34;&gt;死链&lt;/h1&gt;</description>
      <content:encoded><![CDATA[<h1 id="收入量">收入量</h1>
<p>收录量不是等于访问量，但是可以提高曝光度，从而带来访问量增多的可能性。</p>
<h1 id="网站tdk">网站TDK</h1>
<p>在SEO中，网站的TDK指的是标题、描述和关键词的缩写，这三个元素对于网站来说至关重要。</p>
<ol>
<li>标题：就是浏览器窗口，鼠标悬浮显示的文本，当然是表示网站的主题了。</li>
<li>描述：就是百度搜索结果页面，网站标题下面的那一段描述文本内容，对网站详细的介绍。</li>
<li>关键词：就是网站主要的内容有哪些？可以概括为哪些词？可以理解为标签。</li>
</ol>
<p>如果要用生活中常见的例子来说明，打个比方就是，有一家湘菜快餐店，分解成TDK格式的话：</p>
<ol>
<li>标题：湘菜小炒</li>
<li>描述：湘菜小炒传承优良湘菜风格，用料新鲜，现做现炒，吃饱吃好，卫生符合国家食品安全标准，是打工人的不二选择。</li>
<li>关键词：湘菜、现炒、吃得饱。</li>
</ol>
<p>标题、关键词、描述，这三个部分要做好，但是做好这三部分之前，是要想清楚，自己的网站定位是什么，关键词是哪个？</p>
<p>比如你是云计算解决方案商，那关键词可能是“云平台”、比如你是工商业储能行业解决方案提供商，那么关键词可能是“工商业储能”等等。</p>
<h1 id="长尾关键词">长尾关键词</h1>
<h1 id="关键词排名">关键词排名</h1>
<p>怎么知道这个网站在这个关键词下排名是多少？</p>
<h1 id="死链">死链</h1>
]]></content:encoded>
    </item>
    <item>
      <title>2025-08-27 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-08-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-08-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：半根玉米、煮鸡蛋、瘦肉粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：新疆羊肉串&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;举起手，30kg，5组，一组10个&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509020918195.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;暴饮暴食的习惯什么时候开始的？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：半根玉米、煮鸡蛋、瘦肉粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：新疆羊肉串</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>举起手，30kg，5组，一组10个</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202509020918195.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>暴饮暴食的习惯什么时候开始的？</p>
]]></content:encoded>
    </item>
    <item>
      <title>《徒手攀岩》观后感：非生即死间，当机会只有一次</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%BE%92%E6%89%8B%E6%94%80%E5%B2%A9%E8%A7%82%E5%90%8E%E6%84%9F%E9%9D%9E%E7%94%9F%E5%8D%B3%E6%AD%BB%E9%97%B4%E5%BD%93%E6%9C%BA%E4%BC%9A%E5%8F%AA%E6%9C%89%E4%B8%80%E6%AC%A1/</link>
      <pubDate>Sun, 24 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%BE%92%E6%89%8B%E6%94%80%E5%B2%A9%E8%A7%82%E5%90%8E%E6%84%9F%E9%9D%9E%E7%94%9F%E5%8D%B3%E6%AD%BB%E9%97%B4%E5%BD%93%E6%9C%BA%E4%BC%9A%E5%8F%AA%E6%9C%89%E4%B8%80%E6%AC%A1/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;“任何人都可以过得快乐而舒适，可如此世界就不会有所进步，没有人过着快乐而舒适的生活还能取得伟大的成就。”&lt;/p&gt;
&lt;p&gt;看完纪录片，我就在想，有时我们做不好一件事情，是不是因为没有破釜沉舟，给自己留了太多后路的缘故，总觉得这次不行，那就下一次。&lt;/p&gt;
&lt;p&gt;可是，如果面对的是生死，并且只有一次选择的机会，你会怎么做？&lt;/p&gt;
&lt;p&gt;《徒手攀岩》于 2019 年 9 月在中国上映，是第 91 届奥斯卡最佳纪录片。&lt;/p&gt;
&lt;p&gt;该片讲述的是美国攀岩大师亚历克斯于 2017 年 6 月 3 日无保护徒手攀上美国约塞米蒂国家公园 916 米的酋长岩的全过程，共用时 3 小时 56 分钟。&lt;/p&gt;
&lt;p&gt;2021 年 6 月底，我在 B 站上看的时候，是别人上传的资源，这一次看发现 B 站已经上架，当然这对于我而言，并没有什么不同，这些年也有重温，这次是第三次。&lt;/p&gt;
&lt;p&gt;想到，现在开始整理电影观后感，就写一写这个纪录片带给我的一些感受。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252128678.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;专注的力量&#34;&gt;专注的力量&lt;/h2&gt;
&lt;p&gt;亚历克斯决定挑战徒手攀岩酋长岩，不是拍着脑袋就决定的。&lt;/p&gt;
&lt;p&gt;他认准这个目标之后，用了 8 年的时间做准备，四十多次有安全绳的攀岩，一直都在练习。&lt;/p&gt;
&lt;p&gt;一次又一次的练习，每一个细节都要做到无可挑剔，每一个指头触摸到的地方，每一个脚尖所碰到的岩石勾缝，都记得一清二楚。&lt;/p&gt;
&lt;p&gt;每次爬完，都要做笔记，哪里做对了，哪里没做对。&lt;/p&gt;
&lt;p&gt;努力不能是盲目的，不是说我练习跑步，那就去跑步，每天都不懂脑子，跑完就完了。&lt;/p&gt;
&lt;p&gt;努力是全方面的努力，而且要用对方法，练习跑步，不仅仅只是在跑道上奔驰就行，穿什么鞋，每天跑多远，怎么摆动手臂，每日三餐吃什么，晚上几点睡觉这些都要学习。&lt;/p&gt;
&lt;p&gt;而且，亚历克斯的生活真的太简单了，吃喝住行全在房车上，土豆、菠菜什么的大乱炖就是晚饭了，对他来说，只有攀岩是最重要的。其他的，可有可无。&lt;/p&gt;
&lt;p&gt;这让我想到科比说的一段话：&lt;/p&gt;
&lt;p&gt;“我知道没什么能阻止我，对于 18 岁的我来说，篮球就是生命，你不可能强过我，因为你没我那么花时间在篮球上，即便你想，你也做不到，因为你还有其他牵绊，其他分散你精力的责任，所以我已经赢了。”&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252134460.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;不是一开始就成功的&#34;&gt;不是一开始就成功的&lt;/h2&gt;
&lt;p&gt;亚历克斯不是一次就成功的，他也放弃过，那一次为了到达抱石绳段，刚好太阳光线不影响到自己，他早上 4 点出发，可才爬了一小段距离，就因为左脚状态不好，对要用自己的右脚来决定一切失去信心，加上被众人注视之下，心理压力很大，外加女友和他说 “能不能为了我放弃这次挑战”，心理压力变得过大，就放弃了。&lt;/p&gt;
&lt;p&gt;一个人没有可以在乎的人，也就没有任何弱点，但是，从另一个角度来说，正是因为有保护的人，才会变得异常强大，这个在很多作品中诠释过这一观点，但对于此时的亚历克斯，显然是前者，他的心态发生了变化。&lt;/p&gt;
&lt;p&gt;按理说，他应该沮丧的，但是他没有，三个月之后，他重新出发了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252135753.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;我赢是理所当然的&#34;&gt;我赢是理所当然的&lt;/h2&gt;
&lt;p&gt;这些年，我看到运动员在奥运会上获得了金牌，有的热泪盈眶，有的开心至极，有的人则面无表情。&lt;/p&gt;
&lt;p&gt;我就在想，为什么会出现这种面无表情的情况？你都已经是世界第一了。&lt;/p&gt;
&lt;p&gt;面无表情，难道是觉得我夺得金牌是理所当然的事情吗？&lt;/p&gt;
&lt;p&gt;在我看来，真的很有可能是这种心理，我付出了全部的努力，吃过了那么多的苦，就是为了这一刻，这些都是我应得的，甚至与我所吃过的苦相比，不值一提。&lt;/p&gt;
&lt;p&gt;亚历克斯也是这种人，虽然他攀岩登顶之后，大笑不止很是开心，甚至有点想哭，但是上午刚完成这个伟大的创举，下午就开始继续训练了，换做其他人，不得放纵几天，但是他没有。&lt;/p&gt;
&lt;p&gt;可能对于他而言，他只是完成了一个想要的目标而已，他是很高兴，但是他付出的也足够多，当然运气也是不能完全忽视的因素，只是在这个降临之前，你是真的倾尽了全力。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252136587.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;要不要破釜沉舟&#34;&gt;要不要破釜沉舟&lt;/h2&gt;
&lt;p&gt;回到文章开头那个问题，我们在做选择的时候，要不要抱着破釜沉舟的心态？&lt;/p&gt;
&lt;p&gt;我只能说，这个很容易陷入正反两说的境地，有的人适用，有的人不适用，反正在我们中国的文化里，面对任何事情，都是可以灵活应对，而不是固执。&lt;/p&gt;
&lt;p&gt;比如古人说 “己所不欲，勿施于人”，反手又说 “顺我者昌，逆我者亡”，这些话对错都要看当下的情况，不是绝对的，合理就好。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>“任何人都可以过得快乐而舒适，可如此世界就不会有所进步，没有人过着快乐而舒适的生活还能取得伟大的成就。”</p>
<p>看完纪录片，我就在想，有时我们做不好一件事情，是不是因为没有破釜沉舟，给自己留了太多后路的缘故，总觉得这次不行，那就下一次。</p>
<p>可是，如果面对的是生死，并且只有一次选择的机会，你会怎么做？</p>
<p>《徒手攀岩》于 2019 年 9 月在中国上映，是第 91 届奥斯卡最佳纪录片。</p>
<p>该片讲述的是美国攀岩大师亚历克斯于 2017 年 6 月 3 日无保护徒手攀上美国约塞米蒂国家公园 916 米的酋长岩的全过程，共用时 3 小时 56 分钟。</p>
<p>2021 年 6 月底，我在 B 站上看的时候，是别人上传的资源，这一次看发现 B 站已经上架，当然这对于我而言，并没有什么不同，这些年也有重温，这次是第三次。</p>
<p>想到，现在开始整理电影观后感，就写一写这个纪录片带给我的一些感受。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252128678.jpg"></p>
<h2 id="专注的力量">专注的力量</h2>
<p>亚历克斯决定挑战徒手攀岩酋长岩，不是拍着脑袋就决定的。</p>
<p>他认准这个目标之后，用了 8 年的时间做准备，四十多次有安全绳的攀岩，一直都在练习。</p>
<p>一次又一次的练习，每一个细节都要做到无可挑剔，每一个指头触摸到的地方，每一个脚尖所碰到的岩石勾缝，都记得一清二楚。</p>
<p>每次爬完，都要做笔记，哪里做对了，哪里没做对。</p>
<p>努力不能是盲目的，不是说我练习跑步，那就去跑步，每天都不懂脑子，跑完就完了。</p>
<p>努力是全方面的努力，而且要用对方法，练习跑步，不仅仅只是在跑道上奔驰就行，穿什么鞋，每天跑多远，怎么摆动手臂，每日三餐吃什么，晚上几点睡觉这些都要学习。</p>
<p>而且，亚历克斯的生活真的太简单了，吃喝住行全在房车上，土豆、菠菜什么的大乱炖就是晚饭了，对他来说，只有攀岩是最重要的。其他的，可有可无。</p>
<p>这让我想到科比说的一段话：</p>
<p>“我知道没什么能阻止我，对于 18 岁的我来说，篮球就是生命，你不可能强过我，因为你没我那么花时间在篮球上，即便你想，你也做不到，因为你还有其他牵绊，其他分散你精力的责任，所以我已经赢了。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252134460.jpg"></p>
<h2 id="不是一开始就成功的">不是一开始就成功的</h2>
<p>亚历克斯不是一次就成功的，他也放弃过，那一次为了到达抱石绳段，刚好太阳光线不影响到自己，他早上 4 点出发，可才爬了一小段距离，就因为左脚状态不好，对要用自己的右脚来决定一切失去信心，加上被众人注视之下，心理压力很大，外加女友和他说 “能不能为了我放弃这次挑战”，心理压力变得过大，就放弃了。</p>
<p>一个人没有可以在乎的人，也就没有任何弱点，但是，从另一个角度来说，正是因为有保护的人，才会变得异常强大，这个在很多作品中诠释过这一观点，但对于此时的亚历克斯，显然是前者，他的心态发生了变化。</p>
<p>按理说，他应该沮丧的，但是他没有，三个月之后，他重新出发了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252135753.jpg"></p>
<h2 id="我赢是理所当然的">我赢是理所当然的</h2>
<p>这些年，我看到运动员在奥运会上获得了金牌，有的热泪盈眶，有的开心至极，有的人则面无表情。</p>
<p>我就在想，为什么会出现这种面无表情的情况？你都已经是世界第一了。</p>
<p>面无表情，难道是觉得我夺得金牌是理所当然的事情吗？</p>
<p>在我看来，真的很有可能是这种心理，我付出了全部的努力，吃过了那么多的苦，就是为了这一刻，这些都是我应得的，甚至与我所吃过的苦相比，不值一提。</p>
<p>亚历克斯也是这种人，虽然他攀岩登顶之后，大笑不止很是开心，甚至有点想哭，但是上午刚完成这个伟大的创举，下午就开始继续训练了，换做其他人，不得放纵几天，但是他没有。</p>
<p>可能对于他而言，他只是完成了一个想要的目标而已，他是很高兴，但是他付出的也足够多，当然运气也是不能完全忽视的因素，只是在这个降临之前，你是真的倾尽了全力。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252136587.jpg"></p>
<h2 id="要不要破釜沉舟">要不要破釜沉舟</h2>
<p>回到文章开头那个问题，我们在做选择的时候，要不要抱着破釜沉舟的心态？</p>
<p>我只能说，这个很容易陷入正反两说的境地，有的人适用，有的人不适用，反正在我们中国的文化里，面对任何事情，都是可以灵活应对，而不是固执。</p>
<p>比如古人说 “己所不欲，勿施于人”，反手又说 “顺我者昌，逆我者亡”，这些话对错都要看当下的情况，不是绝对的，合理就好。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252136833.jpg"></p>
<h2 id="成功的客观分析">成功的客观分析</h2>
<p>整个徒手攀岩都是有计划的，不管是客观条件、个人的练习情况、个人的心态、团队的配合，以终为始，目标是徒手攀岩酋长岩，然后一步一步分解，达成这个目标。</p>
<p>遇到哪些困难，这些困难怎么解决，都要能找到应对的方案，并解决它们。</p>
<p>加上亚历克斯杏仁体和常人不同，阈值很高，我们大多数人觉得很刺激的事物，于他而言，没有什么感觉。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252137896.jpg"></p>
<h2 id="片中的搞笑点">片中的搞笑点</h2>
<p>亚历克斯 7 年间从来没有受伤过，但是交了女朋友一个月内摔伤了 2 次，真的笑死了。</p>
<p>而且这个直男还直言不讳地说出来，要不分手好了，真应了那句 “女人只会影响我拔剑的速度”。</p>
<p>在酋长岩上面睡觉的攀岩者，穿的独角兽睡衣太搞笑了，让这个纪录片紧张的气氛稍微缓解了一些。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252138768.jpg"></p>
<h2 id="旁观者压力巨大">旁观者压力巨大</h2>
<p>抱石绳段、然后是横切段，真的不是人啊，亚历克斯一整个人都悬在半空。这个看得让人手心出汗。</p>
<p>在攀岩过程中，特富龙角、抱石绳段这两个位置，摄像兄弟都不敢看了。</p>
<p>不管是亚历克斯的摄像团队、女友、朋友和家人，试着代入其中，作为旁观者真的无法承受，如果真的出事了，眼睁睁的看着一个活生生的人，就死在自己眼前，而自己无能为力，没有比这个更让人觉得残忍的事情了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252140245.jpg"></p>
<h2 id="对极限运动的看法爱看但不玩">对极限运动的看法，爱看但不玩</h2>
<p>我一直对这种极限运动，抱有一种看客的心态，但是不会去做这种事情。</p>
<p>我觉得很傻，为什么要把自己置于危险的境地之中？以致什么过山车、跳楼机、大摆锤和蹦极，我是不会去的，君子不立于危墙之下。</p>
<p>说到这里，我想起平时在路上看到的，有些人马路看手机、骑车看手机的，不知道他们是怎么想的，真的信任其他开车的人，不会出错吗？把自己生命交给别人，我至今无法理解。</p>
<p>你不伤害别人，不代表别人不会伤害到你。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252140881.jpg"></p>
<h2 id="片中不错的一些话">片中不错的一些话</h2>
<p>纪录片中有一些话说的很不错，我反复看了还是能有很大收获的，所以就去整理了一下，记录在文章中，以后可以随时重温，不失为一种乐趣。</p>
<ol>
<li>我认为任何人，都有可能在某一天死去，而徒手攀岩给人的感觉更直接、更真实。</li>
<li>我喜欢把风险和后果区分开，在我进行这些高难度的徒手攀岩时，我喜欢把风险，即我会摔下去的几率看得很低，哪怕几率十分之高，这也正是徒手攀岩吸引人的一个地方，把一件看似既困难又危险的事，做到让人有安全感。</li>
<li>有些人说要抑制你的恐惧，我不这么认为，我通过一遍又一遍地练习动作来扩大自己的舒适区，我一遍又一遍地经历着恐惧，直到不再恐惧。</li>
<li>我觉得当他在无保护攀岩的时候，是最能感受自己存在的时刻，是感受一切最美好的时刻，感受最强的时刻，你又怎么能从他身边夺走这么珍贵的东西呢。</li>
<li>进行高难度的徒手攀岩，你必须要将内心披上铠甲，而有了浪漫的感情会使内心变得脆弱，你必须保持专注，而一份如胶似漆的爱情却会卸下内心的铠甲，鱼和熊掌不可兼得。</li>
<li>任何人都可以过得快乐而舒适，可如此世界就不会有所进步，没有人过着快乐而舒适的生活还能取得伟大的成就。</li>
<li>我没有向那些对我而言非常重要的东西妥协。</li>
<li>重要的是要成为一名战士，至于为什么而战不重要，这是你要走的路，你要力求做到极致。为了实现目标，你得直面恐惧，这就是勇士精神。我觉得徒手攀岩时的心态，就很接近武士文化，两者都要求绝对的专注，这关乎你的性命。</li>
<li>徒手攀登正是这样一项运动，失误的代价是丧命，只有完美才能活命。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252141964.jpg"></p>
<h2 id="结语">结语</h2>
<p>这个纪录片值得一切赞美，挑战不可能，其实是挑战自己的内心。片尾曲《Gravity》很好听，旋律动人，歌词励志贴切，回想起刚刚那一场徒手攀岩，就好像自己也身处其中，恍惚间，仿佛经历了生死，劫后重生一般，热爱生活，努力奋斗。</p>
<p>回看你征服过的峭壁断岩</p>
<p>感叹这常人无法企及的高度</p>
<p>那些你挤压心底的质疑</p>
<p>还有那将你吞噬的恐惧</p>
<p>每当他们说这绝不可能的时候</p>
<p>你的意志会摇摆</p>
<p>你的决心会动摇</p>
<p>你的双手会颤抖</p>
<p>重力就变得不堪一击</p>
<p>那些你还未说出口的话语</p>
<p>那些你不曾探索的梦境</p>
<p>此刻你终于如愿以偿</p>
<p>它们在终点为你喝彩</p>
<p>只因你</p>
<p>坚持到底</p>
<p>重力就变得不堪一击</p>
<p>谁也无法将你定义</p>
<p>重力会恫吓你威肋你</p>
<p>告诉所有人不登顶峰你誓不罢休</p>
<p>一览无遗那美不胜收的山谷</p>
<p>当你执着于追寻心底的梦</p>
<p>一切障碍都不堪一击</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508252207390.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>41-多项目管理中的人员调配思考</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/41-%E5%A4%9A%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E4%B8%AD%E7%9A%84%E4%BA%BA%E5%91%98%E8%B0%83%E9%85%8D%E6%80%9D%E8%80%83/</link>
      <pubDate>Mon, 18 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/41-%E5%A4%9A%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E4%B8%AD%E7%9A%84%E4%BA%BA%E5%91%98%E8%B0%83%E9%85%8D%E6%80%9D%E8%80%83/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181719035.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在多项目管理过程中，会遇到这样一个问题：有的项目人比较多，有的项目人比较少。&lt;/p&gt;
&lt;p&gt;比如 A 项目有张三、李四、王五等 4 个人，B 项目则只有赵六、王七 2 个人。&lt;/p&gt;
&lt;p&gt;这种情况下，通常会考虑从 A 项目调一个人去支持 B 项目。&lt;/p&gt;
&lt;p&gt;不过在做这个事情之前，得先想明白几个问题：我们为什么要调一个人去支持 B 项目？调谁合适？为什么是他？做这个事情的根本目的又是什么？&lt;/p&gt;
&lt;p&gt;如果不加深究，很容易得出答案：因为 A 项目人多，B 项目人少，适当匀一下，显得更为合理。&lt;/p&gt;
&lt;p&gt;但实际上，人员调配的真正目的是&lt;strong&gt;优化资源结构，把钱花在刀刃上，实现利益最大化。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从这个角度出发，你会发现事实可能和之前预想的不一样：&lt;/p&gt;
&lt;p&gt;A 项目有 4 个人，B 项目有 2 个人，虽然 B 项目的事情好像更多更杂，表面看更应该加人。&lt;/p&gt;
&lt;p&gt;但&lt;strong&gt;结合项目对部门业绩发展的重要性来评估资源投入&lt;/strong&gt;就会清楚，A 项目是行业项目，B 项目只是对内的、满足公司自身需求的项目。&lt;/p&gt;
&lt;p&gt;显然，这两个项目对部门发展的重要性是不一样的，A 项目很明显更重要。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181726836.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;所以，即便 A 项目人多，B 项目人少又事情多，也不应该从 A 项目调离人员。&lt;/p&gt;
&lt;p&gt;正确的做法是&lt;strong&gt;加快 A 项目的功能迭代&lt;/strong&gt;，同时对 B 项目的功能进行筛选，先做高优先级的，低优先级的就推迟开发。&lt;/p&gt;
&lt;p&gt;除此之外，是否调离人员，还需要评估人员的重要性。&lt;/p&gt;
&lt;p&gt;结合实际情况，&lt;strong&gt;核心成员就该投入到重要性高的项目&lt;/strong&gt;，再结合对他的发展期望，调整到利于他发展的项目中。这样一来，他的能力能得到提升，也容易做出更好的业绩，从而激励到自身。&lt;/p&gt;
&lt;p&gt;还有一点，要尽量不过多变动当前人员负责的业务，不让他们掺杂过多业务，一来精力太分散，容易变得低效；二来人员掺杂过多业务，会加大管理难度，影响多项目推进。&lt;/p&gt;
&lt;p&gt;所以在我看来，多项目管理中的人员调配，可以通过这几个来判断：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;根据&lt;strong&gt;项目对部门业务发展的重要性&lt;/strong&gt;，评估投入资源。重要性高的项目人多，重要性低的项目人少。重要性低的项目事情多，就适当慢下来，按优先级处理。&lt;/li&gt;
&lt;li&gt;依据&lt;strong&gt;成员的重要性&lt;/strong&gt;进行调配，核心成员投入到重要性高的项目，利于其发展、做出业绩，实现自我激励。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免人员参与过多业务&lt;/strong&gt;，以最小力度调整人员，保持业务的稳定性。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181722214.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181719035.jpeg"></p>
<p>在多项目管理过程中，会遇到这样一个问题：有的项目人比较多，有的项目人比较少。</p>
<p>比如 A 项目有张三、李四、王五等 4 个人，B 项目则只有赵六、王七 2 个人。</p>
<p>这种情况下，通常会考虑从 A 项目调一个人去支持 B 项目。</p>
<p>不过在做这个事情之前，得先想明白几个问题：我们为什么要调一个人去支持 B 项目？调谁合适？为什么是他？做这个事情的根本目的又是什么？</p>
<p>如果不加深究，很容易得出答案：因为 A 项目人多，B 项目人少，适当匀一下，显得更为合理。</p>
<p>但实际上，人员调配的真正目的是<strong>优化资源结构，把钱花在刀刃上，实现利益最大化。</strong></p>
<p>从这个角度出发，你会发现事实可能和之前预想的不一样：</p>
<p>A 项目有 4 个人，B 项目有 2 个人，虽然 B 项目的事情好像更多更杂，表面看更应该加人。</p>
<p>但<strong>结合项目对部门业绩发展的重要性来评估资源投入</strong>就会清楚，A 项目是行业项目，B 项目只是对内的、满足公司自身需求的项目。</p>
<p>显然，这两个项目对部门发展的重要性是不一样的，A 项目很明显更重要。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181726836.jpeg"></p>
<p>所以，即便 A 项目人多，B 项目人少又事情多，也不应该从 A 项目调离人员。</p>
<p>正确的做法是<strong>加快 A 项目的功能迭代</strong>，同时对 B 项目的功能进行筛选，先做高优先级的，低优先级的就推迟开发。</p>
<p>除此之外，是否调离人员，还需要评估人员的重要性。</p>
<p>结合实际情况，<strong>核心成员就该投入到重要性高的项目</strong>，再结合对他的发展期望，调整到利于他发展的项目中。这样一来，他的能力能得到提升，也容易做出更好的业绩，从而激励到自身。</p>
<p>还有一点，要尽量不过多变动当前人员负责的业务，不让他们掺杂过多业务，一来精力太分散，容易变得低效；二来人员掺杂过多业务，会加大管理难度，影响多项目推进。</p>
<p>所以在我看来，多项目管理中的人员调配，可以通过这几个来判断：</p>
<ol>
<li>根据<strong>项目对部门业务发展的重要性</strong>，评估投入资源。重要性高的项目人多，重要性低的项目人少。重要性低的项目事情多，就适当慢下来，按优先级处理。</li>
<li>依据<strong>成员的重要性</strong>进行调配，核心成员投入到重要性高的项目，利于其发展、做出业绩，实现自我激励。</li>
<li><strong>避免人员参与过多业务</strong>，以最小力度调整人员，保持业务的稳定性。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508181722214.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>40-AI代码评审出现幻觉问题应该怎么处理</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/40-ai%E4%BB%A3%E7%A0%81%E8%AF%84%E5%AE%A1%E5%87%BA%E7%8E%B0%E5%B9%BB%E8%A7%89%E9%97%AE%E9%A2%98%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86/</link>
      <pubDate>Wed, 13 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/40-ai%E4%BB%A3%E7%A0%81%E8%AF%84%E5%AE%A1%E5%87%BA%E7%8E%B0%E5%B9%BB%E8%A7%89%E9%97%AE%E9%A2%98%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508142154693.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在之前的文章《37-AI 时代，代码评审方式究竟怎样优化？关键要点有哪些？》中已经提到，AI 代码评审基于 &lt;a href=&#34;https://github.com/mimo-x/Code-Review-GPT-Gitlab&#34;&gt;Code-Review-GPT-Gitlab&lt;/a&gt; 进行使用，因为这个开源库包含评分机制、问题反馈、修改建议和修正后的代码等部分，比较符合我的预期。&lt;/p&gt;
&lt;p&gt;在使用了一段时间之后，考虑到要基于流程规范来操作，项目成员提交代码后，最好能看到 AI 代码评审报告，然后根据反馈的问题修改后再提交代码。&lt;/p&gt;
&lt;p&gt;但怎样才算修改好了呢？这就需要制定一个标准，比如将 90 分作为评分标准，每个分支提交到仓库时，都需要达到 90 分以上，代码才能入库。&lt;/p&gt;
&lt;p&gt;然而，以 90 分作为标准执行一段时间后，有同事反馈这个标准可能不太合理。因为通过 AI 代码评审，出现了一些幻觉问题，这会导致评分不准确，使得 90 分的要求难以达成。&lt;/p&gt;
&lt;p&gt;幻觉问题一直是当下 AI 面临的较大难题，在我看来，这并非完全是由于私有化部署时使用的模型小、性能不够强大所致，很多市面上很强大的 AI 工具，同样存在这个问题。&lt;/p&gt;
&lt;p&gt;加上，其实提交的代码只是变更部分，AI 代码评审时，只会对 diff 部分进行检查，这就会存在对业务认知不完整的问题，因为&lt;strong&gt;项目中一个完整的业务功能，并不一定就在一个文件里完整呈现的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因此，流程调整为采用 “AI 预评审 + 人工复核” 的方式，依旧按照 90 分的评分要求，具体问题具体分析。如果出现幻觉问题，则灵活处理，而非因噎废食。&lt;/p&gt;
&lt;p&gt;关于幻觉问题，一方面可以考虑升级配置，比如购买性能更好的显卡；另一方面只能等待行业发展，以有效解决 AI 幻觉问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508142154200.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在《当 99% 可靠性是及格线，我们如何为大模型装上工程 “安全带”？》这篇文章中，提到了对幻觉问题的探索和解决，后续发展情况仍需持续关注：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 2025 世界人工智能大会（WAIC）上，蚂蚁集团旗下蚂蚁密算宣布对外开源高阶程序（High-Order Program）大模型可信应用技术框架，通过外部化控制与核验，为构建可信、可控、可维护的大模型应用提供了务实的参考标准。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;除此之外，项目成员在提交代码之前，需要在 VSCode 中使用豆包 AI 插件，对所有改动的文件进行检查。&lt;/p&gt;
&lt;p&gt;这样至少能在提交代码、进行分支合并之前，在本地提前暴露问题，无需等到提交代码后再用 AI 进行代码评审，从而简化大量工作。&lt;/p&gt;
&lt;p&gt;不过，在本地使用豆包 AI 插件检查改动的代码时，无需过度检查。因为我发现，每次提问都会得到问题反馈，即便复制它建议的代码去询问，仍然会收到很多建议，这会让人感觉没完没了。&lt;/p&gt;
&lt;p&gt;毕竟代码的写法、规范并非只有一套，功能的实现细节也千差万别，并非绝对统一。所以，只需检查一次，把特别明显的问题改掉即可，若是吹毛求疵，只会陷入无尽的循环。&lt;/p&gt;
&lt;p&gt;至此，我之前认为代码评审完全可以由 AI 来完成并让整个流程顺畅运转的想法，显然有些激进了。&lt;/p&gt;
&lt;p&gt;以当前情况来看，无论 AI 代码评审能达到何种程度，即便幻觉问题能得到有效解决，也不应该完全由 AI 来承担这项工作。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508142154693.jpeg"></p>
<p>在之前的文章《37-AI 时代，代码评审方式究竟怎样优化？关键要点有哪些？》中已经提到，AI 代码评审基于 <a href="https://github.com/mimo-x/Code-Review-GPT-Gitlab">Code-Review-GPT-Gitlab</a> 进行使用，因为这个开源库包含评分机制、问题反馈、修改建议和修正后的代码等部分，比较符合我的预期。</p>
<p>在使用了一段时间之后，考虑到要基于流程规范来操作，项目成员提交代码后，最好能看到 AI 代码评审报告，然后根据反馈的问题修改后再提交代码。</p>
<p>但怎样才算修改好了呢？这就需要制定一个标准，比如将 90 分作为评分标准，每个分支提交到仓库时，都需要达到 90 分以上，代码才能入库。</p>
<p>然而，以 90 分作为标准执行一段时间后，有同事反馈这个标准可能不太合理。因为通过 AI 代码评审，出现了一些幻觉问题，这会导致评分不准确，使得 90 分的要求难以达成。</p>
<p>幻觉问题一直是当下 AI 面临的较大难题，在我看来，这并非完全是由于私有化部署时使用的模型小、性能不够强大所致，很多市面上很强大的 AI 工具，同样存在这个问题。</p>
<p>加上，其实提交的代码只是变更部分，AI 代码评审时，只会对 diff 部分进行检查，这就会存在对业务认知不完整的问题，因为<strong>项目中一个完整的业务功能，并不一定就在一个文件里完整呈现的。</strong></p>
<p>因此，流程调整为采用 “AI 预评审 + 人工复核” 的方式，依旧按照 90 分的评分要求，具体问题具体分析。如果出现幻觉问题，则灵活处理，而非因噎废食。</p>
<p>关于幻觉问题，一方面可以考虑升级配置，比如购买性能更好的显卡；另一方面只能等待行业发展，以有效解决 AI 幻觉问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508142154200.jpeg"></p>
<p>在《当 99% 可靠性是及格线，我们如何为大模型装上工程 “安全带”？》这篇文章中，提到了对幻觉问题的探索和解决，后续发展情况仍需持续关注：</p>
<blockquote>
<p>在 2025 世界人工智能大会（WAIC）上，蚂蚁集团旗下蚂蚁密算宣布对外开源高阶程序（High-Order Program）大模型可信应用技术框架，通过外部化控制与核验，为构建可信、可控、可维护的大模型应用提供了务实的参考标准。</p></blockquote>
<p>除此之外，项目成员在提交代码之前，需要在 VSCode 中使用豆包 AI 插件，对所有改动的文件进行检查。</p>
<p>这样至少能在提交代码、进行分支合并之前，在本地提前暴露问题，无需等到提交代码后再用 AI 进行代码评审，从而简化大量工作。</p>
<p>不过，在本地使用豆包 AI 插件检查改动的代码时，无需过度检查。因为我发现，每次提问都会得到问题反馈，即便复制它建议的代码去询问，仍然会收到很多建议，这会让人感觉没完没了。</p>
<p>毕竟代码的写法、规范并非只有一套，功能的实现细节也千差万别，并非绝对统一。所以，只需检查一次，把特别明显的问题改掉即可，若是吹毛求疵，只会陷入无尽的循环。</p>
<p>至此，我之前认为代码评审完全可以由 AI 来完成并让整个流程顺畅运转的想法，显然有些激进了。</p>
<p>以当前情况来看，无论 AI 代码评审能达到何种程度，即便幻觉问题能得到有效解决，也不应该完全由 AI 来承担这项工作。</p>
<p>采用 <strong>“本地 AI 插件检查 + AI 预评审 + 人工复核”</strong> 这三个步骤，或许更为合理。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508142154641.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>搞定 “找客户” 与 “被找到”，To B 商机工作就成功了一半</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%90%9E%E5%AE%9A-%E6%89%BE%E5%AE%A2%E6%88%B7-%E4%B8%8E-%E8%A2%AB%E6%89%BE%E5%88%B0to-b-%E5%95%86%E6%9C%BA%E5%B7%A5%E4%BD%9C%E5%B0%B1%E6%88%90%E5%8A%9F%E4%BA%86%E4%B8%80%E5%8D%8A/</link>
      <pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%90%9E%E5%AE%9A-%E6%89%BE%E5%AE%A2%E6%88%B7-%E4%B8%8E-%E8%A2%AB%E6%89%BE%E5%88%B0to-b-%E5%95%86%E6%9C%BA%E5%B7%A5%E4%BD%9C%E5%B0%B1%E6%88%90%E5%8A%9F%E4%BA%86%E4%B8%80%E5%8D%8A/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111627453.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;继续《To B 市场品牌实战课》课程第 5 个场景练习：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;选择一个你熟悉的 To B 产品，按照我们的模版，做一个商机分析，并请你周围的一个朋友（作为销售）看看能不能通过你的模版，挖掘到关键的销售信息？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;“To B 的商机工作，是市场工作最艰巨的事，也是最有价值的事。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本节内容中，这句话我是深度认同的。&lt;/p&gt;
&lt;p&gt;因为对于公司而言，能够有好的业绩，就是因为有需求的客户购买了你的产品或者服务。&lt;/p&gt;
&lt;p&gt;那怎么知道哪些客户有这个需求呢？这个过程就是商机。&lt;/p&gt;
&lt;p&gt;说得通俗易懂一点，商机就是&lt;strong&gt;你能找到客户，或者让客户能找到你&lt;/strong&gt;，不管是哪个途径吧，只要能让你们碰头就行。&lt;/p&gt;
&lt;p&gt;为了让你们能碰头，就要使出浑身解数，从 “你找客户”、“让客户找你” 这两个方面入手。&lt;/p&gt;
&lt;p&gt;你找客户，就涉及到网上信息收集、各个企业进行深入分析、整理行业大会相关信息等等。&lt;/p&gt;
&lt;p&gt;让客户找你，就涉及到营销，最基本的就是官网 SEO 优化要做好，让官网在各大搜索引擎中排名靠前，客户搜索相关关键词，能出现在搜索结果页面最前面的位置。至于什么短视频、打广告这些都是后话了。&lt;/p&gt;
&lt;p&gt;这一段时间，我深入参与了整理企业分析报告和官网 SEO 优化，有一些心得体会。&lt;/p&gt;
&lt;p&gt;我对于企业分析报告的看法是，要&lt;strong&gt;知己知彼，才能百战百胜。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不应只是关注客户与我们相关的部分&lt;/strong&gt;，比如我是云服务解决方案商，那么，就不应只是关注企业对于上云这块的需求，而是整个企业都要进行分析，从基本信息、企业规模、发家历程、业绩情况等方面进行全面分析。&lt;/p&gt;
&lt;p&gt;这一点在之前的文章《和 ToB 目标客户接触前，要做哪些准备工作？我的一点看法》中，已经以永辉超市为例，做了一份简易的企业分析报告，并加以说明，所以，本次场景练习要求的商机分析模板，实际上已经完成了，这里就不再赘述了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111626230.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在做了好几个企业的分析报告之后，结合产品会议上多人沟通和讨论的结果，发现有些企业的实际情况，与分析报告中的结论有出入。&lt;/p&gt;
&lt;p&gt;有一些客户在自己官网的产品介绍页，或者一些新闻稿件上，把产品夸得天花乱坠，但是，实际情况却并非如此。&lt;/p&gt;
&lt;p&gt;有些大公司，某一款产品可能就一两人在开发和维护，与预想中几十几百个人的团队规模，相差很大。&lt;/p&gt;
&lt;p&gt;在这里给我的启发是，通过企业分析报告，分析出来的商机，具有一定的欺骗性。&lt;/p&gt;
&lt;p&gt;所以，是否有机会，不应该完全从对方是否已经有方案满足自己需求了入手，而是&lt;strong&gt;从对方的业绩上入手&lt;/strong&gt;，只要对方业绩不错，发展有很大的潜力，都应该深入去了解。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;因为企业发展好，才更有机会，如果企业都半死不活了，你拿下这笔生意，也不能赚多少钱。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;至于官网 SEO 优化，一开始我是不太上心的，因为我觉得 To B 产品在官网进行宣传，流量太少了，收益可能不大。通过百度统计，查看官网每日浏览量那么少，都没有多少动力去搞 SEO 优化了。&lt;/p&gt;
&lt;p&gt;但是，后来我想了一下，发现我的思路有问题，因为官网 SEO 优化，你如果做好了，&lt;strong&gt;它一天 24 小时都挂在那里宣传你的产品&lt;/strong&gt;，就有可能有客户会看到，不需要你实时跟进，甚至可能是一劳永逸的，所以，官网 SEO 优化这个事情的优先级反而应该是最高的。&lt;/p&gt;
&lt;p&gt;总之，怎么做好商机这个工作，就是做好你去找客户，或者让客户找到你，这两个方面，至于后面你们碰头之后，是否达成交易，那是下一步的工作了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111625851.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111627453.jpeg"></p>
<p>继续《To B 市场品牌实战课》课程第 5 个场景练习：</p>
<blockquote>
<p>选择一个你熟悉的 To B 产品，按照我们的模版，做一个商机分析，并请你周围的一个朋友（作为销售）看看能不能通过你的模版，挖掘到关键的销售信息？</p></blockquote>
<p><strong>“To B 的商机工作，是市场工作最艰巨的事，也是最有价值的事。”</strong></p>
<p>本节内容中，这句话我是深度认同的。</p>
<p>因为对于公司而言，能够有好的业绩，就是因为有需求的客户购买了你的产品或者服务。</p>
<p>那怎么知道哪些客户有这个需求呢？这个过程就是商机。</p>
<p>说得通俗易懂一点，商机就是<strong>你能找到客户，或者让客户能找到你</strong>，不管是哪个途径吧，只要能让你们碰头就行。</p>
<p>为了让你们能碰头，就要使出浑身解数，从 “你找客户”、“让客户找你” 这两个方面入手。</p>
<p>你找客户，就涉及到网上信息收集、各个企业进行深入分析、整理行业大会相关信息等等。</p>
<p>让客户找你，就涉及到营销，最基本的就是官网 SEO 优化要做好，让官网在各大搜索引擎中排名靠前，客户搜索相关关键词，能出现在搜索结果页面最前面的位置。至于什么短视频、打广告这些都是后话了。</p>
<p>这一段时间，我深入参与了整理企业分析报告和官网 SEO 优化，有一些心得体会。</p>
<p>我对于企业分析报告的看法是，要<strong>知己知彼，才能百战百胜。</strong></p>
<p><strong>不应只是关注客户与我们相关的部分</strong>，比如我是云服务解决方案商，那么，就不应只是关注企业对于上云这块的需求，而是整个企业都要进行分析，从基本信息、企业规模、发家历程、业绩情况等方面进行全面分析。</p>
<p>这一点在之前的文章《和 ToB 目标客户接触前，要做哪些准备工作？我的一点看法》中，已经以永辉超市为例，做了一份简易的企业分析报告，并加以说明，所以，本次场景练习要求的商机分析模板，实际上已经完成了，这里就不再赘述了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111626230.png"></p>
<p>在做了好几个企业的分析报告之后，结合产品会议上多人沟通和讨论的结果，发现有些企业的实际情况，与分析报告中的结论有出入。</p>
<p>有一些客户在自己官网的产品介绍页，或者一些新闻稿件上，把产品夸得天花乱坠，但是，实际情况却并非如此。</p>
<p>有些大公司，某一款产品可能就一两人在开发和维护，与预想中几十几百个人的团队规模，相差很大。</p>
<p>在这里给我的启发是，通过企业分析报告，分析出来的商机，具有一定的欺骗性。</p>
<p>所以，是否有机会，不应该完全从对方是否已经有方案满足自己需求了入手，而是<strong>从对方的业绩上入手</strong>，只要对方业绩不错，发展有很大的潜力，都应该深入去了解。</p>
<p><strong>因为企业发展好，才更有机会，如果企业都半死不活了，你拿下这笔生意，也不能赚多少钱。</strong></p>
<p>至于官网 SEO 优化，一开始我是不太上心的，因为我觉得 To B 产品在官网进行宣传，流量太少了，收益可能不大。通过百度统计，查看官网每日浏览量那么少，都没有多少动力去搞 SEO 优化了。</p>
<p>但是，后来我想了一下，发现我的思路有问题，因为官网 SEO 优化，你如果做好了，<strong>它一天 24 小时都挂在那里宣传你的产品</strong>，就有可能有客户会看到，不需要你实时跟进，甚至可能是一劳永逸的，所以，官网 SEO 优化这个事情的优先级反而应该是最高的。</p>
<p>总之，怎么做好商机这个工作，就是做好你去找客户，或者让客户找到你，这两个方面，至于后面你们碰头之后，是否达成交易，那是下一步的工作了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508111625851.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>39-项目负责人怎么安排不同技术栈成员的任务</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/39-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E6%80%8E%E4%B9%88%E5%AE%89%E6%8E%92%E4%B8%8D%E5%90%8C%E6%8A%80%E6%9C%AF%E6%A0%88%E6%88%90%E5%91%98%E7%9A%84%E4%BB%BB%E5%8A%A1/</link>
      <pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/39-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E6%80%8E%E4%B9%88%E5%AE%89%E6%8E%92%E4%B8%8D%E5%90%8C%E6%8A%80%E6%9C%AF%E6%A0%88%E6%88%90%E5%91%98%E7%9A%84%E4%BB%BB%E5%8A%A1/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102123383.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;一般而言，项目的任务计划都是由项目负责人制定的，其中需要明确每一条任务的优先级、开发周期和开发负责人。&lt;/p&gt;
&lt;p&gt;但是，有些项目负责人的技术背景是前端，有的是后端，还有的是终端。&lt;/p&gt;
&lt;p&gt;这就会遇到一个问题：&lt;strong&gt;他们怎么去制定其他技术栈成员的任务并进行验收？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在此之前，我们默认都是由项目负责人完成这些工作的。比如，项目负责人张三是前端出身，现在他要给后端的李四制定开发任务。&lt;/p&gt;
&lt;p&gt;通常的做法是，张三会和李四沟通要开发的功能，然后由李四给出功能开发所需的时间，接着张三填写任务时间，任务安排便完成了。&lt;/p&gt;
&lt;p&gt;这里就存在可操作的空间，因为李四给出的时间没有第二人进行审核。而张三是前端出身，并不具备审核后端任务时间的能力。如此一来，任务安排就完全取决于李四是否厚道了。&lt;/p&gt;
&lt;p&gt;我们一直反复强调人性，可依赖人性做事情，迟早会出问题。&lt;/p&gt;
&lt;p&gt;今天李四心情好，可能就凭良心给出合理时间；哪天他心情不好，或许就会把任务时间拉长，好趁机摸鱼。&lt;/p&gt;
&lt;p&gt;写到这里，我想起 2020 年的几场培训，培训老师说过的一句话让我印象深刻：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“如果你不想吃亏的话，要以最坏的情况去判断你的员工。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102125324.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;即便李四为人厚道、兢兢业业，不会偷奸耍滑，那你能保证王五、赵六也不会这样吗？&lt;/p&gt;
&lt;p&gt;你真的有时间和精力去仔细分析每个人，或者持续观察他们的一言一行吗？&lt;/p&gt;
&lt;p&gt;那样的话，你自己就不用干活了。&lt;/p&gt;
&lt;p&gt;所以，还是要回归到流程规范上来，不回避任何问题，把它暴露在阳光下，通过望闻问切，仔细分析原因和我们的诉求。&lt;/p&gt;
&lt;p&gt;接着就是大家沟通&lt;strong&gt;达成共识&lt;/strong&gt;，用规定来约束，用流程从源头解决问题。&lt;/p&gt;
&lt;p&gt;那接下来，如何从流程规范入手解决这个问题呢？&lt;/p&gt;
&lt;p&gt;这要从我们的目的出发，我们的目的是&lt;strong&gt;对任务进行有效制定、跟进和验收，而不是流于形式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;既然要 &lt;strong&gt;“有效”&lt;/strong&gt;，就要实事求是，杜绝虚假。而规避虚假的办法，就是&lt;strong&gt;专业的事情交给专业的人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现实情况是，项目负责人并非全能全知，所以可以把这部分工作交给对应的同事来执行，引入&lt;strong&gt;技术端负责人&lt;/strong&gt;的角色。&lt;/p&gt;
&lt;p&gt;各项目可根据实际情况，设立前端负责人、后端负责人和终端负责人。他们的职责是协助项目负责人明确对应技术端任务的开发所需时间，跟进任务进展，并负责验收。&lt;/p&gt;
&lt;p&gt;整个项目的人员架构就变成：&lt;strong&gt;项目成员 - 技术端负责人 - 项目负责人&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;那么，项目成员的任务申请时间变更，由谁来审核呢？&lt;/p&gt;
&lt;p&gt;本来我觉得，项目的全部任务本应由项目负责人审核，而技术端负责人已经对开发周期（即天数）进行了把关，项目负责人依据这一点判断即可。&lt;/p&gt;
&lt;p&gt;但技术端负责人需要覆盖三个关键环节：制定、跟进和验收。变更属于跟进部分，如果这一环节改由项目负责人执行，整个任务的生命周期就无法形成闭环了。&lt;/p&gt;
&lt;p&gt;在项目管理系统中，曾经的设计思路是：&lt;strong&gt;项目成员的任务时间变更，审核人都是项目负责人。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果现在引入端负责人的角色，那么&lt;strong&gt;技术端成员的任务时间变更就应由对应的技术端负责人审核，而技术端负责人的任务变更则由项目负责人审核。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;至此，我认为可以解决项目负责人如何制定、跟进和验收不同技术栈成员任务的问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102125244.jpg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102123383.jpg"></p>
<p>一般而言，项目的任务计划都是由项目负责人制定的，其中需要明确每一条任务的优先级、开发周期和开发负责人。</p>
<p>但是，有些项目负责人的技术背景是前端，有的是后端，还有的是终端。</p>
<p>这就会遇到一个问题：<strong>他们怎么去制定其他技术栈成员的任务并进行验收？</strong></p>
<p>在此之前，我们默认都是由项目负责人完成这些工作的。比如，项目负责人张三是前端出身，现在他要给后端的李四制定开发任务。</p>
<p>通常的做法是，张三会和李四沟通要开发的功能，然后由李四给出功能开发所需的时间，接着张三填写任务时间，任务安排便完成了。</p>
<p>这里就存在可操作的空间，因为李四给出的时间没有第二人进行审核。而张三是前端出身，并不具备审核后端任务时间的能力。如此一来，任务安排就完全取决于李四是否厚道了。</p>
<p>我们一直反复强调人性，可依赖人性做事情，迟早会出问题。</p>
<p>今天李四心情好，可能就凭良心给出合理时间；哪天他心情不好，或许就会把任务时间拉长，好趁机摸鱼。</p>
<p>写到这里，我想起 2020 年的几场培训，培训老师说过的一句话让我印象深刻：</p>
<p><strong>“如果你不想吃亏的话，要以最坏的情况去判断你的员工。”</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102125324.jpg"></p>
<p>即便李四为人厚道、兢兢业业，不会偷奸耍滑，那你能保证王五、赵六也不会这样吗？</p>
<p>你真的有时间和精力去仔细分析每个人，或者持续观察他们的一言一行吗？</p>
<p>那样的话，你自己就不用干活了。</p>
<p>所以，还是要回归到流程规范上来，不回避任何问题，把它暴露在阳光下，通过望闻问切，仔细分析原因和我们的诉求。</p>
<p>接着就是大家沟通<strong>达成共识</strong>，用规定来约束，用流程从源头解决问题。</p>
<p>那接下来，如何从流程规范入手解决这个问题呢？</p>
<p>这要从我们的目的出发，我们的目的是<strong>对任务进行有效制定、跟进和验收，而不是流于形式。</strong></p>
<p>既然要 <strong>“有效”</strong>，就要实事求是，杜绝虚假。而规避虚假的办法，就是<strong>专业的事情交给专业的人。</strong></p>
<p>现实情况是，项目负责人并非全能全知，所以可以把这部分工作交给对应的同事来执行，引入<strong>技术端负责人</strong>的角色。</p>
<p>各项目可根据实际情况，设立前端负责人、后端负责人和终端负责人。他们的职责是协助项目负责人明确对应技术端任务的开发所需时间，跟进任务进展，并负责验收。</p>
<p>整个项目的人员架构就变成：<strong>项目成员 - 技术端负责人 - 项目负责人</strong>。</p>
<p>那么，项目成员的任务申请时间变更，由谁来审核呢？</p>
<p>本来我觉得，项目的全部任务本应由项目负责人审核，而技术端负责人已经对开发周期（即天数）进行了把关，项目负责人依据这一点判断即可。</p>
<p>但技术端负责人需要覆盖三个关键环节：制定、跟进和验收。变更属于跟进部分，如果这一环节改由项目负责人执行，整个任务的生命周期就无法形成闭环了。</p>
<p>在项目管理系统中，曾经的设计思路是：<strong>项目成员的任务时间变更，审核人都是项目负责人。</strong></p>
<p>如果现在引入端负责人的角色，那么<strong>技术端成员的任务时间变更就应由对应的技术端负责人审核，而技术端负责人的任务变更则由项目负责人审核。</strong></p>
<p>至此，我认为可以解决项目负责人如何制定、跟进和验收不同技术栈成员任务的问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508102125244.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>To B 产品发布会流程，用大白话记下来</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/to-b-%E4%BA%A7%E5%93%81%E5%8F%91%E5%B8%83%E4%BC%9A%E6%B5%81%E7%A8%8B%E7%94%A8%E5%A4%A7%E7%99%BD%E8%AF%9D%E8%AE%B0%E4%B8%8B%E6%9D%A5/</link>
      <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/to-b-%E4%BA%A7%E5%93%81%E5%8F%91%E5%B8%83%E4%BC%9A%E6%B5%81%E7%A8%8B%E7%94%A8%E5%A4%A7%E7%99%BD%E8%AF%9D%E8%AE%B0%E4%B8%8B%E6%9D%A5/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508081051506.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;继续《To B 市场品牌实战课》课程第 4 个场景练习：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在今天的场景练习环节，我想请找出你身边或者你公司一个即将发布的产品，按照咱们上面的流程，写出、提炼核心发布要点，并形成一个虚拟的发布会工作笔记。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;产品发布会流程的核心要点记录，本来我是打算以 “极客云” 或者储能系统为例，把这些内容一一补充的。&lt;/p&gt;
&lt;p&gt;但是，我发现直接用 AI 生成不是更快？但是这样子做，又违背了我的初衷。&lt;/p&gt;
&lt;p&gt;如果都是这样 AI 生成了，那我还写这个场景练习有个什么意义，没有任何收获。&lt;/p&gt;
&lt;p&gt;思来想去，还是做一个折中，就是把产品发布会的流程核心要点，以大白话的解释来代替，这样，很方便记忆。&lt;/p&gt;
&lt;p&gt;等后面真的有机会参与到产品发布会，再以这些流程进行实践，并输出更为真实的体会。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;产品立项（&lt;strong&gt;做什么&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;产品的卖点（&lt;strong&gt;三个卖点&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;预热、关注、好奇（&lt;strong&gt;刷存在感&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;产品发布会（&lt;strong&gt;在哪摆摊&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;邀请嘉宾（&lt;strong&gt;可信度&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;产品发布（&lt;strong&gt;卖东西&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;典型客户案例分析（&lt;strong&gt;可信度&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;现场产品互动（&lt;strong&gt;问题解惑&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;媒体专访（&lt;strong&gt;宣传资料&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;影响力持续（&lt;strong&gt;到处贴宣传单&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;查缺补漏（&lt;strong&gt;检查任务清单&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把上面的流程，整理成一段话就是：&lt;/p&gt;
&lt;p&gt;做什么，并提炼三个卖点，然后去各大网站或论坛狂刷存在感，然后定好在哪里摆摊，并请专业人士过来试用，接着吆喝起来开始卖东西，并找一个已购用户分享使用感受，接着就是回答在场围观群众的问题，然后，安排一个媒体进行访谈，最后，就是把访谈的内容形成广告，到处张贴，最后，把上面的流程捋一遍，看下有没有什么出入的问题，结束。&lt;/p&gt;
&lt;p&gt;除此之外，对于自身产品，要有一个深刻以及到位的理解。要对以下的问题，都能够回答得上来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;客户遇到了什么？（&lt;strong&gt;有问题&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;客户需要什么帮助？（&lt;strong&gt;要什么&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;我们可以提供什么？（&lt;strong&gt;有什么&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;我们又要以什么成本提供？（&lt;strong&gt;多少钱&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;能够解决客户的问题吗？（&lt;strong&gt;能行不&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;还有同类方案吗？（&lt;strong&gt;其他呢&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;为什么是我们来解决？（&lt;strong&gt;为啥找我&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;我们解决的优势是什么？（&lt;strong&gt;我好在哪&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我觉得，如果对上面产品流程清单、产品问题清单，都能回答得上来，那么这个产品发布会，应该是没有问题的了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508081052048.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508081051506.jpeg"></p>
<p>继续《To B 市场品牌实战课》课程第 4 个场景练习：</p>
<blockquote>
<p>在今天的场景练习环节，我想请找出你身边或者你公司一个即将发布的产品，按照咱们上面的流程，写出、提炼核心发布要点，并形成一个虚拟的发布会工作笔记。</p></blockquote>
<p>产品发布会流程的核心要点记录，本来我是打算以 “极客云” 或者储能系统为例，把这些内容一一补充的。</p>
<p>但是，我发现直接用 AI 生成不是更快？但是这样子做，又违背了我的初衷。</p>
<p>如果都是这样 AI 生成了，那我还写这个场景练习有个什么意义，没有任何收获。</p>
<p>思来想去，还是做一个折中，就是把产品发布会的流程核心要点，以大白话的解释来代替，这样，很方便记忆。</p>
<p>等后面真的有机会参与到产品发布会，再以这些流程进行实践，并输出更为真实的体会。</p>
<ol>
<li>产品立项（<strong>做什么</strong>）</li>
<li>产品的卖点（<strong>三个卖点</strong>）</li>
<li>预热、关注、好奇（<strong>刷存在感</strong>）</li>
<li>产品发布会（<strong>在哪摆摊</strong>）</li>
<li>邀请嘉宾（<strong>可信度</strong>）</li>
<li>产品发布（<strong>卖东西</strong>）</li>
<li>典型客户案例分析（<strong>可信度</strong>）</li>
<li>现场产品互动（<strong>问题解惑</strong>）</li>
<li>媒体专访（<strong>宣传资料</strong>）</li>
<li>影响力持续（<strong>到处贴宣传单</strong>）</li>
<li>查缺补漏（<strong>检查任务清单</strong>）</li>
</ol>
<p>把上面的流程，整理成一段话就是：</p>
<p>做什么，并提炼三个卖点，然后去各大网站或论坛狂刷存在感，然后定好在哪里摆摊，并请专业人士过来试用，接着吆喝起来开始卖东西，并找一个已购用户分享使用感受，接着就是回答在场围观群众的问题，然后，安排一个媒体进行访谈，最后，就是把访谈的内容形成广告，到处张贴，最后，把上面的流程捋一遍，看下有没有什么出入的问题，结束。</p>
<p>除此之外，对于自身产品，要有一个深刻以及到位的理解。要对以下的问题，都能够回答得上来：</p>
<ol>
<li>客户遇到了什么？（<strong>有问题</strong>）</li>
<li>客户需要什么帮助？（<strong>要什么</strong>）</li>
<li>我们可以提供什么？（<strong>有什么</strong>）</li>
<li>我们又要以什么成本提供？（<strong>多少钱</strong>）</li>
<li>能够解决客户的问题吗？（<strong>能行不</strong>）</li>
<li>还有同类方案吗？（<strong>其他呢</strong>）</li>
<li>为什么是我们来解决？（<strong>为啥找我</strong>）</li>
<li>我们解决的优势是什么？（<strong>我好在哪</strong>）</li>
</ol>
<p>我觉得，如果对上面产品流程清单、产品问题清单，都能回答得上来，那么这个产品发布会，应该是没有问题的了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508081052048.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>打造有效产品发布：同理心、共识与场景植入</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%89%93%E9%80%A0%E6%9C%89%E6%95%88%E4%BA%A7%E5%93%81%E5%8F%91%E5%B8%83%E5%90%8C%E7%90%86%E5%BF%83%E5%85%B1%E8%AF%86%E4%B8%8E%E5%9C%BA%E6%99%AF%E6%A4%8D%E5%85%A5/</link>
      <pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%89%93%E9%80%A0%E6%9C%89%E6%95%88%E4%BA%A7%E5%93%81%E5%8F%91%E5%B8%83%E5%90%8C%E7%90%86%E5%BF%83%E5%85%B1%E8%AF%86%E4%B8%8E%E5%9C%BA%E6%99%AF%E6%A4%8D%E5%85%A5/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508061602139.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;继续 《To B 市场品牌实战课》 课程第 3 个场景练习：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;请你针对一个你熟悉的产品，提炼出产品的核心发布 PPT，并向你的朋友做一次一对一的产品发布。&lt;/li&gt;
&lt;li&gt;你可以请他在听完你的发布以后，复述一些刚才你讲的内容，check 一下自己说的信息是不是有效地传递了？&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;产品发布会，代表着世界对产品的第一印象，所以至关重要。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;细数历年经典产品发布会，乔布斯在 2010 年发布的 iPhone 4，至今仍让人津津乐道。&lt;/p&gt;
&lt;p&gt;在发布会上，乔布斯从口袋中拿出 iPhone 4，向现场观众展示了这款产品的创新之处。&lt;/p&gt;
&lt;p&gt;他演示了其无物理键盘的设计，通过手势滑动实现各种操作，还现场演示了用手机播放视频以及拨打给披萨店订餐的场景。&lt;/p&gt;
&lt;p&gt;说是一场跨世纪的产品发布会，并不为过，后面引得众人争相模仿。&lt;/p&gt;
&lt;p&gt;另外两个让我印象深刻的发布会：&lt;/p&gt;
&lt;p&gt;一个是 2019 年百度 AI 开发者大会上，李彦宏正在进行演讲时，突然有一名男子冲上台向其头部倒了一瓶水。&lt;/p&gt;
&lt;p&gt;李彦宏先是一愣，然后用英语问道：“What&amp;rsquo;s your problem？” 接着，他迅速调整状态，淡定地继续演讲，并幽默地调侃道：“发展 AI 的路上就是会遇到这种挫折。”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不过，对于AI，百度是起个大早，赶个晚集。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;另一个是雷军 2023 年度演讲，内容质量颇高，关于 “成长”“几次创业”，以及小米后续的发展规划，都有涉及。&lt;/p&gt;
&lt;p&gt;其中，让我印象最为深刻的，是雷军分享自己为调研为什么产品销量不佳，去到柜台站了一天，着手推销产品的经历，那一天给他很大的收获，销售并非易事，要聆听客户的声音，从客户视角考虑问题。&lt;/p&gt;
&lt;p&gt;这里还是那句说了好几次的话：&lt;strong&gt;“让听到炮声的人指挥军队”&lt;/strong&gt;。反过来说，也是一样的，&lt;strong&gt;指挥军队的人，要听到炮声。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在筹备产品发布会之前，至少要做好以下环节的工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;极为熟悉自己的产品，知道优势与劣势；&lt;/li&gt;
&lt;li&gt;寻找产品核心的卖点，相比其他产品，最突出的一个优势是什么？&lt;/li&gt;
&lt;li&gt;对产品卖点进行翻译，就是说 “人” 话，以用户听得懂、可理解的话术。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在做好这些工作之后，就可以按照课程里提到的四个环节，以 “极客云” 为例，构建产品的核心发布 PPT：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;建立同理心&lt;/strong&gt;：本地服务器基建设备费用大、维护难、拓展难、存在老化的问题；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建立共识&lt;/strong&gt;：上云对于企业的作用，都有哪些？解决高性能、高可用、高并发等等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;产品亮相&lt;/strong&gt;：功能的介绍，这种一般都是以数值进行对比，比如效率提升了多少，降低了多少成本，让用户感受更为强烈；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;植入场景&lt;/strong&gt;：产品在企业中的共性场景，以真实案例，让用户感受更为真实。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;产品发布会就是要有&lt;strong&gt;记忆锚点&lt;/strong&gt;，不管是好是坏，如果是好的当然更好，如果是黑的，&lt;strong&gt;黑红也是红&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508061603196.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508061602139.jpeg"></p>
<p>继续 《To B 市场品牌实战课》 课程第 3 个场景练习：</p>
<blockquote>
<ol>
<li>请你针对一个你熟悉的产品，提炼出产品的核心发布 PPT，并向你的朋友做一次一对一的产品发布。</li>
<li>你可以请他在听完你的发布以后，复述一些刚才你讲的内容，check 一下自己说的信息是不是有效地传递了？</li>
</ol></blockquote>
<p><strong>产品发布会，代表着世界对产品的第一印象，所以至关重要。</strong></p>
<p>细数历年经典产品发布会，乔布斯在 2010 年发布的 iPhone 4，至今仍让人津津乐道。</p>
<p>在发布会上，乔布斯从口袋中拿出 iPhone 4，向现场观众展示了这款产品的创新之处。</p>
<p>他演示了其无物理键盘的设计，通过手势滑动实现各种操作，还现场演示了用手机播放视频以及拨打给披萨店订餐的场景。</p>
<p>说是一场跨世纪的产品发布会，并不为过，后面引得众人争相模仿。</p>
<p>另外两个让我印象深刻的发布会：</p>
<p>一个是 2019 年百度 AI 开发者大会上，李彦宏正在进行演讲时，突然有一名男子冲上台向其头部倒了一瓶水。</p>
<p>李彦宏先是一愣，然后用英语问道：“What&rsquo;s your problem？” 接着，他迅速调整状态，淡定地继续演讲，并幽默地调侃道：“发展 AI 的路上就是会遇到这种挫折。”</p>
<blockquote>
<p>不过，对于AI，百度是起个大早，赶个晚集。</p></blockquote>
<p>另一个是雷军 2023 年度演讲，内容质量颇高，关于 “成长”“几次创业”，以及小米后续的发展规划，都有涉及。</p>
<p>其中，让我印象最为深刻的，是雷军分享自己为调研为什么产品销量不佳，去到柜台站了一天，着手推销产品的经历，那一天给他很大的收获，销售并非易事，要聆听客户的声音，从客户视角考虑问题。</p>
<p>这里还是那句说了好几次的话：<strong>“让听到炮声的人指挥军队”</strong>。反过来说，也是一样的，<strong>指挥军队的人，要听到炮声。</strong></p>
<p>在筹备产品发布会之前，至少要做好以下环节的工作：</p>
<ol>
<li>极为熟悉自己的产品，知道优势与劣势；</li>
<li>寻找产品核心的卖点，相比其他产品，最突出的一个优势是什么？</li>
<li>对产品卖点进行翻译，就是说 “人” 话，以用户听得懂、可理解的话术。</li>
</ol>
<p>在做好这些工作之后，就可以按照课程里提到的四个环节，以 “极客云” 为例，构建产品的核心发布 PPT：</p>
<ol>
<li><strong>建立同理心</strong>：本地服务器基建设备费用大、维护难、拓展难、存在老化的问题；</li>
<li><strong>建立共识</strong>：上云对于企业的作用，都有哪些？解决高性能、高可用、高并发等等；</li>
<li><strong>产品亮相</strong>：功能的介绍，这种一般都是以数值进行对比，比如效率提升了多少，降低了多少成本，让用户感受更为强烈；</li>
<li><strong>植入场景</strong>：产品在企业中的共性场景，以真实案例，让用户感受更为真实。</li>
</ol>
<p>产品发布会就是要有<strong>记忆锚点</strong>，不管是好是坏，如果是好的当然更好，如果是黑的，<strong>黑红也是红</strong>。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508061603196.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>和 ToB 目标客户接触前，要做哪些准备工作？我的一点看法</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E5%92%8C-tob-%E7%9B%AE%E6%A0%87%E5%AE%A2%E6%88%B7%E6%8E%A5%E8%A7%A6%E5%89%8D%E8%A6%81%E5%81%9A%E5%93%AA%E4%BA%9B%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C%E6%88%91%E7%9A%84%E4%B8%80%E7%82%B9%E7%9C%8B%E6%B3%95/</link>
      <pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E5%92%8C-tob-%E7%9B%AE%E6%A0%87%E5%AE%A2%E6%88%B7%E6%8E%A5%E8%A7%A6%E5%89%8D%E8%A6%81%E5%81%9A%E5%93%AA%E4%BA%9B%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C%E6%88%91%E7%9A%84%E4%B8%80%E7%82%B9%E7%9C%8B%E6%B3%95/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507301010187.jpeg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;继续 《To B 市场品牌实战课》 课程第 2 个场景练习：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我们的目标客户是一个传统的零售企业，自建了 100 台规模的机房，目前处于只有 CRM 系统的阶段。你会如何通过上面的理论，邀请他成为我们极客云的客户？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;首先，要对传统的零售行业有一定的认知，清楚这个行业的当前情况，以及这个行业的企业，是怎么赚钱的？&lt;/p&gt;
&lt;p&gt;在这个的前提之下，需要对目标客户进行多个维度的分析，比如目标客户的&lt;strong&gt;基本信息、发家历程、门店分布情况、业绩情况、目标客户遇到的问题、我们能帮助目标客户解决哪些问题&lt;/strong&gt;等。&lt;/p&gt;
&lt;p&gt;做完上面的准备工作，拿到目标客户的分析报告，然后才能进行下一步，怎么和客户接触？&lt;/p&gt;
&lt;p&gt;至此，我们可以先把要做的事情，以任务的形式一一列出，并且，知道应该怎么做好这个事情。&lt;/p&gt;
&lt;h1 id=&#34;当前零售行业的市场情况以及趋势分析&#34;&gt;当前零售行业的市场情况以及趋势分析&lt;/h1&gt;
&lt;p&gt;要了解一个行业的市场情况以及趋势分析，通常，可以通过查看行业报告来快速了解，比如艾瑞咨询，就有一份《2025 年中国食品零售行业数字化研究报告》。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291740500.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;除此之外，还可以通过上市公司的年报（以 永辉超市 为例，下同）来查看，一般年报中会附带对当前行业的情况和趋势进行分析，所以，可以两种方式结合起来使用。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291757388.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;目标客户的基本信息&#34;&gt;目标客户的基本信息&lt;/h1&gt;
&lt;p&gt;通常来说，目标客户的官网都会有这个信息，比如关于我们、公司简介等等，如果没有，可以通过爱企查、天眼查、百度百科等途径了解到。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291742777.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;目标客户的发家历程&#34;&gt;目标客户的发家历程&lt;/h1&gt;
&lt;p&gt;了解发家历程，主要目的是了解目标客户发展的关键节点，以及文化、行事风格，可以通过这些内容，大概判断一下目标客户的核心思想，推崇什么，排斥什么。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291743135.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;目标客户的门店分布情况&#34;&gt;目标客户的门店分布情况&lt;/h1&gt;
&lt;p&gt;了解到目标客户的店面主要是开在哪些地区的，以及哪些城市的？为什么选择这些地方？是出于什么目的？&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291749456.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;目标客户的业绩情况&#34;&gt;目标客户的业绩情况&lt;/h1&gt;
&lt;p&gt;如果目标客户是上市公司，这个可以通过巨潮资讯网了解到，永辉超市的股票代码是 601933.SH，可以搜索定位，并下载年报，比如《永辉超市股份有限公司 2024 年年度报告》，一般年报内容很多，重点关注业绩部分即可。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291752376.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;还有，可以使用豆包 AI 的 “AI 阅读” 功能，快速总结年报的内容。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507300912920.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;目标客户遇到的问题&#34;&gt;目标客户遇到的问题&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;目标客户遇到的问题？这个是整个事情中最重要也是最难的部分。为什么这么说呢？因为商机往往就出现在这里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你只有知道了目标客户遇到了什么问题，你才能找到切入点，进行有效的分析和判断。&lt;/p&gt;
&lt;p&gt;如果你都不知道目标客户遇到了什么问题，而重点在于你自身能提供什么帮助，这无异于拿着锤子找钉子，最后有可能一无所获。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你只有先找到钉子，才能判断要生产什么样的锤子。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;怎么知道目标客户遇到的问题？&lt;/p&gt;
&lt;p&gt;在我看来，有三个途径，一个是&lt;strong&gt;结合零售行业当前情况和趋势报告，总结出共性的问题&lt;/strong&gt;；第二个就是&lt;strong&gt;深入目标客户的年报，找到年报中提到的存在的问题&lt;/strong&gt;；第三就是&lt;strong&gt;通过 AI、或者搜索引擎、资讯等收集信息并进行分析&lt;/strong&gt;。&lt;/p&gt;
&lt;h1 id=&#34;我们能帮助目标客户解决哪些问题&#34;&gt;我们能帮助目标客户解决哪些问题&lt;/h1&gt;
&lt;p&gt;还是那一句话，知道目标客户遇到了什么问题，你才能做这个工作。&lt;/p&gt;
&lt;p&gt;但如果以场景练习题目中的，我们是一家云计算厂商 “极客云” 为例，对于传统零售行业的企业，无外乎就是整个商业模式智能化。&lt;/p&gt;
&lt;p&gt;最基本的就是，以往业绩收入就是每家门店，本地记录好之后，再进行汇总到公司财务部门。&lt;/p&gt;
&lt;p&gt;还有就是零售的产品采购，都是人工进行处理。&lt;/p&gt;
&lt;p&gt;现在如果全都依托智能化模式，有一个云平台，能够看到全国每个门店的收入，销售的产品分布情况。&lt;/p&gt;
&lt;p&gt;哪些卖的最好，哪些卖的很少，都有多少。&lt;/p&gt;
&lt;p&gt;拿到这些数据，可以有效进行决策，门店怎么优化盈利？产品怎么采购？&lt;/p&gt;
&lt;h1 id=&#34;怎么说服目标客户购买我们的服务&#34;&gt;怎么说服目标客户购买我们的服务&lt;/h1&gt;
&lt;p&gt;在这个章节的课程内容中，提到的是要从四个方面进行沟通，分别是经营资源投入、业务发展灵活度、财务可持续发展和业务增长。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;经营资源投入&lt;/strong&gt;：目标客户自建了 100 台规模的机房，这些设备不是买了就可以了，不用继续资源投入，还需要招程序员来开发业务平台的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务发展灵活度&lt;/strong&gt;：这个点在上面也提到过，就是通过对数据进行分析，优化整个门店的盈利模式，开多少门店？门店开在哪里？产品采购怎么进行？全方面最大利益化。除此之外，还方便拓展业务，比如可能要涉及其他行业，做一些业务的探索，这个如果都是自己购买机器，可能只用了一次就不用了，会造成浪费，但是，如果你购买的极客云的服务，可以按需购买。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;财务可持续发展&lt;/strong&gt;：IT 基础设施投入是很烧钱的，经过 4 年左右的时间周期，那些机子就会开始老化，这个时候就需要二次投入。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务增长&lt;/strong&gt;：通过数字化解决目标客户生存难的问题，降本增效。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上面说的其实是技巧层面的，实际上，和目标客户接触，&lt;strong&gt;第一印象非常重要&lt;/strong&gt;。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507301010187.jpeg"></p>
<h1 id="前言">前言</h1>
<p>继续 《To B 市场品牌实战课》 课程第 2 个场景练习：</p>
<blockquote>
<p>我们的目标客户是一个传统的零售企业，自建了 100 台规模的机房，目前处于只有 CRM 系统的阶段。你会如何通过上面的理论，邀请他成为我们极客云的客户？</p></blockquote>
<p>首先，要对传统的零售行业有一定的认知，清楚这个行业的当前情况，以及这个行业的企业，是怎么赚钱的？</p>
<p>在这个的前提之下，需要对目标客户进行多个维度的分析，比如目标客户的<strong>基本信息、发家历程、门店分布情况、业绩情况、目标客户遇到的问题、我们能帮助目标客户解决哪些问题</strong>等。</p>
<p>做完上面的准备工作，拿到目标客户的分析报告，然后才能进行下一步，怎么和客户接触？</p>
<p>至此，我们可以先把要做的事情，以任务的形式一一列出，并且，知道应该怎么做好这个事情。</p>
<h1 id="当前零售行业的市场情况以及趋势分析">当前零售行业的市场情况以及趋势分析</h1>
<p>要了解一个行业的市场情况以及趋势分析，通常，可以通过查看行业报告来快速了解，比如艾瑞咨询，就有一份《2025 年中国食品零售行业数字化研究报告》。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291740500.jpeg"></p>
<p>除此之外，还可以通过上市公司的年报（以 永辉超市 为例，下同）来查看，一般年报中会附带对当前行业的情况和趋势进行分析，所以，可以两种方式结合起来使用。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291757388.png"></p>
<h1 id="目标客户的基本信息">目标客户的基本信息</h1>
<p>通常来说，目标客户的官网都会有这个信息，比如关于我们、公司简介等等，如果没有，可以通过爱企查、天眼查、百度百科等途径了解到。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291742777.png"></p>
<h1 id="目标客户的发家历程">目标客户的发家历程</h1>
<p>了解发家历程，主要目的是了解目标客户发展的关键节点，以及文化、行事风格，可以通过这些内容，大概判断一下目标客户的核心思想，推崇什么，排斥什么。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291743135.png"></p>
<h1 id="目标客户的门店分布情况">目标客户的门店分布情况</h1>
<p>了解到目标客户的店面主要是开在哪些地区的，以及哪些城市的？为什么选择这些地方？是出于什么目的？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291749456.png"></p>
<h1 id="目标客户的业绩情况">目标客户的业绩情况</h1>
<p>如果目标客户是上市公司，这个可以通过巨潮资讯网了解到，永辉超市的股票代码是 601933.SH，可以搜索定位，并下载年报，比如《永辉超市股份有限公司 2024 年年度报告》，一般年报内容很多，重点关注业绩部分即可。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507291752376.png"></p>
<p>还有，可以使用豆包 AI 的 “AI 阅读” 功能，快速总结年报的内容。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507300912920.png"></p>
<h1 id="目标客户遇到的问题">目标客户遇到的问题</h1>
<p><strong>目标客户遇到的问题？这个是整个事情中最重要也是最难的部分。为什么这么说呢？因为商机往往就出现在这里。</strong></p>
<p>你只有知道了目标客户遇到了什么问题，你才能找到切入点，进行有效的分析和判断。</p>
<p>如果你都不知道目标客户遇到了什么问题，而重点在于你自身能提供什么帮助，这无异于拿着锤子找钉子，最后有可能一无所获。</p>
<p><strong>你只有先找到钉子，才能判断要生产什么样的锤子。</strong></p>
<p>怎么知道目标客户遇到的问题？</p>
<p>在我看来，有三个途径，一个是<strong>结合零售行业当前情况和趋势报告，总结出共性的问题</strong>；第二个就是<strong>深入目标客户的年报，找到年报中提到的存在的问题</strong>；第三就是<strong>通过 AI、或者搜索引擎、资讯等收集信息并进行分析</strong>。</p>
<h1 id="我们能帮助目标客户解决哪些问题">我们能帮助目标客户解决哪些问题</h1>
<p>还是那一句话，知道目标客户遇到了什么问题，你才能做这个工作。</p>
<p>但如果以场景练习题目中的，我们是一家云计算厂商 “极客云” 为例，对于传统零售行业的企业，无外乎就是整个商业模式智能化。</p>
<p>最基本的就是，以往业绩收入就是每家门店，本地记录好之后，再进行汇总到公司财务部门。</p>
<p>还有就是零售的产品采购，都是人工进行处理。</p>
<p>现在如果全都依托智能化模式，有一个云平台，能够看到全国每个门店的收入，销售的产品分布情况。</p>
<p>哪些卖的最好，哪些卖的很少，都有多少。</p>
<p>拿到这些数据，可以有效进行决策，门店怎么优化盈利？产品怎么采购？</p>
<h1 id="怎么说服目标客户购买我们的服务">怎么说服目标客户购买我们的服务</h1>
<p>在这个章节的课程内容中，提到的是要从四个方面进行沟通，分别是经营资源投入、业务发展灵活度、财务可持续发展和业务增长。</p>
<ol>
<li><strong>经营资源投入</strong>：目标客户自建了 100 台规模的机房，这些设备不是买了就可以了，不用继续资源投入，还需要招程序员来开发业务平台的。</li>
<li><strong>业务发展灵活度</strong>：这个点在上面也提到过，就是通过对数据进行分析，优化整个门店的盈利模式，开多少门店？门店开在哪里？产品采购怎么进行？全方面最大利益化。除此之外，还方便拓展业务，比如可能要涉及其他行业，做一些业务的探索，这个如果都是自己购买机器，可能只用了一次就不用了，会造成浪费，但是，如果你购买的极客云的服务，可以按需购买。</li>
<li><strong>财务可持续发展</strong>：IT 基础设施投入是很烧钱的，经过 4 年左右的时间周期，那些机子就会开始老化，这个时候就需要二次投入。</li>
<li><strong>业务增长</strong>：通过数字化解决目标客户生存难的问题，降本增效。</li>
</ol>
<p>上面说的其实是技巧层面的，实际上，和目标客户接触，<strong>第一印象非常重要</strong>。</p>
<p>所以，如果没有做好准备工作，是不能着急和目标客户接触的。</p>
<p>这世上那么多人，什么样的人都有，你无法知道会面对什么情况，所以谨慎一点无可厚非。</p>
<p>如果第一次见面，给客户留下了不好的印象，那基本就凉凉了。</p>
<p>除此之外，还要<strong>想办法让对方回答是</strong>，我想这一点就可以说明，我们是充分站在目标客户的角度来考虑问题的了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507301010141.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-07-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-07-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-07-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、排骨粥、炒油麦菜&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：风干鸡肉条、燕麦坚果蛋白棒、脱脂牛奶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;举起手，30kg，5组，一组10个&lt;/li&gt;
&lt;li&gt;大腿抬起，75kg，一组10个，2组&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507292205768.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;应该是2023年9月份、10月份坚持的天数是最长，还是捡起来了吧。&lt;/li&gt;
&lt;li&gt;站在更高的维度，来看待当前存在的问题，就会找到答案，你有更重要更重要的事情要做。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、排骨粥、炒油麦菜</li>
<li>午餐：公司食堂</li>
<li>晚餐：风干鸡肉条、燕麦坚果蛋白棒、脱脂牛奶</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>举起手，30kg，5组，一组10个</li>
<li>大腿抬起，75kg，一组10个，2组</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507292205768.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>应该是2023年9月份、10月份坚持的天数是最长，还是捡起来了吧。</li>
<li>站在更高的维度，来看待当前存在的问题，就会找到答案，你有更重要更重要的事情要做。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>新品牌起步：公众号栏目这么划，线下获客这么做</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%96%B0%E5%93%81%E7%89%8C%E8%B5%B7%E6%AD%A5%E5%85%AC%E4%BC%97%E5%8F%B7%E6%A0%8F%E7%9B%AE%E8%BF%99%E4%B9%88%E5%88%92%E7%BA%BF%E4%B8%8B%E8%8E%B7%E5%AE%A2%E8%BF%99%E4%B9%88%E5%81%9A/</link>
      <pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/%E6%96%B0%E5%93%81%E7%89%8C%E8%B5%B7%E6%AD%A5%E5%85%AC%E4%BC%97%E5%8F%B7%E6%A0%8F%E7%9B%AE%E8%BF%99%E4%B9%88%E5%88%92%E7%BA%BF%E4%B8%8B%E8%8E%B7%E5%AE%A2%E8%BF%99%E4%B9%88%E5%81%9A/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251605809.jpeg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;《To B 市场品牌实战课》已经学习完了，也写了学习总结，整理了课程中划线的部分，但是每一讲后面都是有场景练习的，我想了一下，如果只是简单动了下脑就完事儿了，那好像起不到什么作用，还是要输出，把想法都有条理的整理出来，这可能才有效果。&lt;/p&gt;
&lt;h1 id=&#34;微信公众号栏目划分&#34;&gt;微信公众号栏目划分&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;假设，我们的极客云刚刚成立，现在需要规划一个极客云的微信公众号，你觉得这个产品应该有哪些栏目，你又会如何划分？（提示：产品体系可以参考国内的几家大型云计算厂商的微信公众号）&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在做极客云微信公众号栏目划分之前，就需要先调研阿里云、腾讯云和华为云。&lt;/p&gt;
&lt;h2 id=&#34;阿里云&#34;&gt;阿里云&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251516626.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;ol&gt;
&lt;li&gt;免费试用&lt;/li&gt;
&lt;li&gt;更多优惠：企业服务&lt;/li&gt;
&lt;li&gt;Global&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;腾讯云助手&#34;&gt;腾讯云助手&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251517474.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;ol&gt;
&lt;li&gt;我的服务：我的账号、资源管理、我的工单、消息订阅&lt;/li&gt;
&lt;li&gt;账户安全：虚拟MFA、忘记账号、找回密码&lt;/li&gt;
&lt;li&gt;了解更多：热门产品、解决方案、文档中心、应用市场、开发者社区&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;华为云&#34;&gt;华为云&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251516034.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;ol&gt;
&lt;li&gt;最新资讯：官方小程序、云上有为、盘古大模型、云+杂志&lt;/li&gt;
&lt;li&gt;Flexus&lt;/li&gt;
&lt;li&gt;注册试用：免费试用、下载App、推荐有礼、注册、盘古Doer&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;极客云&#34;&gt;极客云&lt;/h2&gt;
&lt;p&gt;从阿里云、腾讯云助手、华为云微信公众号可以看到栏目设计，有的很简单，有的则很复杂。&lt;/p&gt;
&lt;p&gt;基于实际情况，极客云刚刚起步，&lt;strong&gt;最好是遵循最小可行性产品 MVP 的策略，支持最基础的，非必要的全都砍掉。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以，我的理解是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;免费试用：用来吸引用户去功能试用&lt;/li&gt;
&lt;li&gt;热门产品：给用户推荐热门的、与其他厂商相比之下，存在&lt;strong&gt;优势的产品&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;我的账号：
&lt;ol&gt;
&lt;li&gt;个人信息：用来看到自己账号信息&lt;/li&gt;
&lt;li&gt;在线客服：不管是售前还是售后，&lt;strong&gt;快速响应用户&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;相信这四个模块，作为最小可执行产品，应该是能起到作用和满足当下需求的。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251539404.png&#34; style=&#34;zoom: 50%;&#34; /&gt;
&lt;h1 id=&#34;线下活动获取用户信息链路设计&#34;&gt;线下活动获取用户信息链路设计&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;极客云要参加一场大型的线下活动，你会如何设计整个用户的获取链路，最终把商机交到销售同学手中？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在回答这个问题之前，需要明确：云计算厂商参与这类线下活动的目的是什么？简单来说，主要包括实力展示、寻找合作方、获取客户、扩大行业影响力，以及增强客户对其产品的信心。&lt;/p&gt;
&lt;p&gt;所以，在我看来，可以有以下途径，拿到潜在客户的信息。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;关注极客云公众号&lt;/strong&gt;，赠送小奖品（如云服务代金券、云资源包和周边等）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;面向开发者设置小型竞赛&lt;/strong&gt;，获胜可得小奖品。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;问卷调查&lt;/strong&gt;，可以在展区，设计一些核心信息问题，最好都是选择题，并且，不宜过多，然后有小奖品，通过微信扫码填写。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一对一咨询&lt;/strong&gt;，安排技术顾问和客户经理在展会，现场解决用户遇到的问题，同时，了解到用户的信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;演讲评价&lt;/strong&gt;，可以与活动举办方一道，出一个会后评价，关注极客云演讲部分用户的关注度、满意度，一方面能拿到用户信息，另一方面大体上可以评估具体的情况。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过上面这些方式收集到用户信息后，做一下筛选整理，把有潜在商机的用户信息交给销售就行。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251606490.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251605809.jpeg"></p>
<h1 id="前言">前言</h1>
<p>《To B 市场品牌实战课》已经学习完了，也写了学习总结，整理了课程中划线的部分，但是每一讲后面都是有场景练习的，我想了一下，如果只是简单动了下脑就完事儿了，那好像起不到什么作用，还是要输出，把想法都有条理的整理出来，这可能才有效果。</p>
<h1 id="微信公众号栏目划分">微信公众号栏目划分</h1>
<blockquote>
<p>假设，我们的极客云刚刚成立，现在需要规划一个极客云的微信公众号，你觉得这个产品应该有哪些栏目，你又会如何划分？（提示：产品体系可以参考国内的几家大型云计算厂商的微信公众号）</p></blockquote>
<p>在做极客云微信公众号栏目划分之前，就需要先调研阿里云、腾讯云和华为云。</p>
<h2 id="阿里云">阿里云</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251516626.png" style="zoom:33%;" />
<ol>
<li>免费试用</li>
<li>更多优惠：企业服务</li>
<li>Global</li>
</ol>
<h2 id="腾讯云助手">腾讯云助手</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251517474.png" style="zoom:33%;" />
<ol>
<li>我的服务：我的账号、资源管理、我的工单、消息订阅</li>
<li>账户安全：虚拟MFA、忘记账号、找回密码</li>
<li>了解更多：热门产品、解决方案、文档中心、应用市场、开发者社区</li>
</ol>
<h2 id="华为云">华为云</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251516034.png" style="zoom:33%;" />
<ol>
<li>最新资讯：官方小程序、云上有为、盘古大模型、云+杂志</li>
<li>Flexus</li>
<li>注册试用：免费试用、下载App、推荐有礼、注册、盘古Doer</li>
</ol>
<h2 id="极客云">极客云</h2>
<p>从阿里云、腾讯云助手、华为云微信公众号可以看到栏目设计，有的很简单，有的则很复杂。</p>
<p>基于实际情况，极客云刚刚起步，<strong>最好是遵循最小可行性产品 MVP 的策略，支持最基础的，非必要的全都砍掉。</strong></p>
<p>所以，我的理解是：</p>
<ol>
<li>免费试用：用来吸引用户去功能试用</li>
<li>热门产品：给用户推荐热门的、与其他厂商相比之下，存在<strong>优势的产品</strong></li>
<li>我的账号：
<ol>
<li>个人信息：用来看到自己账号信息</li>
<li>在线客服：不管是售前还是售后，<strong>快速响应用户</strong></li>
</ol>
</li>
</ol>
<p>相信这四个模块，作为最小可执行产品，应该是能起到作用和满足当下需求的。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251539404.png" style="zoom: 50%;" />
<h1 id="线下活动获取用户信息链路设计">线下活动获取用户信息链路设计</h1>
<blockquote>
<p>极客云要参加一场大型的线下活动，你会如何设计整个用户的获取链路，最终把商机交到销售同学手中？</p></blockquote>
<p>在回答这个问题之前，需要明确：云计算厂商参与这类线下活动的目的是什么？简单来说，主要包括实力展示、寻找合作方、获取客户、扩大行业影响力，以及增强客户对其产品的信心。</p>
<p>所以，在我看来，可以有以下途径，拿到潜在客户的信息。</p>
<ol>
<li><strong>关注极客云公众号</strong>，赠送小奖品（如云服务代金券、云资源包和周边等）。</li>
<li><strong>面向开发者设置小型竞赛</strong>，获胜可得小奖品。</li>
<li><strong>问卷调查</strong>，可以在展区，设计一些核心信息问题，最好都是选择题，并且，不宜过多，然后有小奖品，通过微信扫码填写。</li>
<li><strong>一对一咨询</strong>，安排技术顾问和客户经理在展会，现场解决用户遇到的问题，同时，了解到用户的信息。</li>
<li><strong>演讲评价</strong>，可以与活动举办方一道，出一个会后评价，关注极客云演讲部分用户的关注度、满意度，一方面能拿到用户信息，另一方面大体上可以评估具体的情况。</li>
</ol>
<p>通过上面这些方式收集到用户信息后，做一下筛选整理，把有潜在商机的用户信息交给销售就行。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507251606490.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《名侦探柯南：独眼的残像》观后感：推理与大场面之外，那些中国典故最难忘</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%90%8D%E4%BE%A6%E6%8E%A2%E6%9F%AF%E5%8D%97%E7%8B%AC%E7%9C%BC%E7%9A%84%E6%AE%8B%E5%83%8F%E8%A7%82%E5%90%8E%E6%84%9F%E6%8E%A8%E7%90%86%E4%B8%8E%E5%A4%A7%E5%9C%BA%E9%9D%A2%E4%B9%8B%E5%A4%96%E9%82%A3%E4%BA%9B%E4%B8%AD%E5%9B%BD%E5%85%B8%E6%95%85%E6%9C%80%E9%9A%BE%E5%BF%98/</link>
      <pubDate>Tue, 22 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%90%8D%E4%BE%A6%E6%8E%A2%E6%9F%AF%E5%8D%97%E7%8B%AC%E7%9C%BC%E7%9A%84%E6%AE%8B%E5%83%8F%E8%A7%82%E5%90%8E%E6%84%9F%E6%8E%A8%E7%90%86%E4%B8%8E%E5%A4%A7%E5%9C%BA%E9%9D%A2%E4%B9%8B%E5%A4%96%E9%82%A3%E4%BA%9B%E4%B8%AD%E5%9B%BD%E5%85%B8%E6%95%85%E6%9C%80%E9%9A%BE%E5%BF%98/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222030660.jpeg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h2&gt;
&lt;p&gt;《名侦探柯南：独眼的残像》是今年 6 月 27 日上映的作品，也是《名侦探柯南》系列的第 28 部剧场版电影。&lt;/p&gt;
&lt;p&gt;故事始于毛利小五郎在警视厅时期的同事，外号 “鳄鱼” 的鲛谷浩二遇害。&lt;/p&gt;
&lt;p&gt;柯南一行人顺着线索追踪到长野县的雪山，而凶手是否与十个月前的雪崩事件有关？故事就此展开。&lt;/p&gt;
&lt;p&gt;最终，事件的转机出现在大和敢助从失忆中苏醒，他记起了雪崩发生时自己看到的那个人是谁。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507221945914.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-大场面&#34;&gt;2. 大场面&lt;/h2&gt;
&lt;p&gt;我从 2012 年开始看柯南剧场版，当时一口气看完了已有的 16 部。&lt;/p&gt;
&lt;p&gt;没想到现在已经出到第 28 部了，在我看来，剧场版这些年有了不少变化。&lt;/p&gt;
&lt;p&gt;早期作品特别突出推理叙事，那些构思设计和情节反转，都曾让人惊叹不已。&lt;/p&gt;
&lt;p&gt;现在这些元素虽然还在，但感觉力度弱了不少，更多是在追求大场面。&lt;/p&gt;
&lt;p&gt;印象里《名侦探柯南：第 11 位前锋》的场面还算小，其他作品不是要毁灭国家，就是要毁掉城市，爆炸场景接连不断，一片轰隆隆的声响。&lt;/p&gt;
&lt;p&gt;再加上出现的夸张、反科学操作，电影都快变成科幻片或灾难片了，推理反倒成了次要部分。&lt;/p&gt;
&lt;p&gt;说实话，已经有点审美疲劳了。&lt;/p&gt;
&lt;p&gt;可能是看久了产生了惯性，也可能是心境发生了变化，但不管怎样，每次出新作还是会期待。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222019737.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-套路&#34;&gt;3. 套路&lt;/h2&gt;
&lt;p&gt;看推理电影，最吸引人的就是最后揭晓凶手的时刻，所以千万不能开弹幕。&lt;/p&gt;
&lt;p&gt;好在去电影院观影，不存在这个问题。&lt;/p&gt;
&lt;p&gt;这些年看了很多电影，对套路也基本摸透了。&lt;/p&gt;
&lt;p&gt;比如摆在明面上的嫌疑人，通常都不是真正的凶手；要是关键人物声称在事故中身亡，其他人为此哀悼、回忆往事时，这个人基本不可能真的死去。&lt;/p&gt;
&lt;p&gt;写到这里，想起韩寒很久以前在新浪博客写的杂文，有调侃一些香港电影，但凡出现 “你真是我的好兄弟！” 这句话，下一秒这位好兄弟必领盒饭。&lt;/p&gt;
&lt;p&gt;这和动漫里常说的 “有烟无伤”“自古对波左边输” 其实是一个道理。&lt;/p&gt;
&lt;h2 id=&#34;4-猜凶手&#34;&gt;4. 猜凶手&lt;/h2&gt;
&lt;p&gt;猜测最终凶手也是一种乐趣，但不管猜中还是没猜中，我发现心里多少都有点不痛快。&lt;/p&gt;
&lt;p&gt;就像之前看的《名侦探柯南：万圣节的新娘》，开场不到几分钟我就猜到了凶手，并且笃定就是这个人，一路看到最后，居然真的猜中了。&lt;/p&gt;
&lt;p&gt;那种感觉很难形容，是该高兴，还是该失望？居然这么容易就猜中了，心里突然就有点索然无味。&lt;/p&gt;
&lt;p&gt;看《名侦探柯南：独眼的残像》时也是这种心态，每次出现新的人物，就会猜测是不是最后的凶手。把可能的人选都猜一遍，就不信没有猜中的时候。&lt;/p&gt;
&lt;p&gt;当然，如果猜了五六个人，猜中不算难；但要是只选一个，我就没猜中。&lt;/p&gt;
&lt;p&gt;到最后，我一直以为凶手是阿笠博士的那个朋友。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222025702.jpeg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;5-有点刻意&#34;&gt;5. 有点刻意&lt;/h2&gt;
&lt;p&gt;在这部电影里，有个地方让我一直觉得奇怪，毛利小五郎不管和谁提起死者鲛谷浩二，都不叫名字，而是 “鳄鱼” 这个外号。&lt;/p&gt;
&lt;p&gt;要都是熟人还好，可面对第一次见面的人，他还是叫外号，对方就会问 “鳄鱼是谁？”，接着他又得解释 “鳄鱼就是死者鲛谷浩二”。&lt;/p&gt;
&lt;p&gt;我没记错的话，这种情况出现了四五次。因为追查凶手的过程中，他们见到了好几拨人。&lt;/p&gt;
&lt;p&gt;在我看来，这显得不够庄重。“死者为大”，总叫外号不太合适，而且还是陌生人。&lt;/p&gt;
&lt;p&gt;虽然毛利小五郎平时一副混不吝的样子，但真遇到大事、进入状态后，就完全不一样了。这从他救自己老婆，以及解决同学聚会杀人事件、自己学生杀人事件时的表现就能看出来。&lt;/p&gt;
&lt;p&gt;带着这个疑惑看到最后，才知道这个外号是推理的证据之一。&lt;/p&gt;
&lt;p&gt;之前的不和谐感也就说得通了，原来是为了铺垫这个点，有点玩文字游戏的意思。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222004175.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222030660.jpeg"></p>
<h2 id="1-前言">1. 前言</h2>
<p>《名侦探柯南：独眼的残像》是今年 6 月 27 日上映的作品，也是《名侦探柯南》系列的第 28 部剧场版电影。</p>
<p>故事始于毛利小五郎在警视厅时期的同事，外号 “鳄鱼” 的鲛谷浩二遇害。</p>
<p>柯南一行人顺着线索追踪到长野县的雪山，而凶手是否与十个月前的雪崩事件有关？故事就此展开。</p>
<p>最终，事件的转机出现在大和敢助从失忆中苏醒，他记起了雪崩发生时自己看到的那个人是谁。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507221945914.png"></p>
<h2 id="2-大场面">2. 大场面</h2>
<p>我从 2012 年开始看柯南剧场版，当时一口气看完了已有的 16 部。</p>
<p>没想到现在已经出到第 28 部了，在我看来，剧场版这些年有了不少变化。</p>
<p>早期作品特别突出推理叙事，那些构思设计和情节反转，都曾让人惊叹不已。</p>
<p>现在这些元素虽然还在，但感觉力度弱了不少，更多是在追求大场面。</p>
<p>印象里《名侦探柯南：第 11 位前锋》的场面还算小，其他作品不是要毁灭国家，就是要毁掉城市，爆炸场景接连不断，一片轰隆隆的声响。</p>
<p>再加上出现的夸张、反科学操作，电影都快变成科幻片或灾难片了，推理反倒成了次要部分。</p>
<p>说实话，已经有点审美疲劳了。</p>
<p>可能是看久了产生了惯性，也可能是心境发生了变化，但不管怎样，每次出新作还是会期待。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222019737.jpg"></p>
<h2 id="3-套路">3. 套路</h2>
<p>看推理电影，最吸引人的就是最后揭晓凶手的时刻，所以千万不能开弹幕。</p>
<p>好在去电影院观影，不存在这个问题。</p>
<p>这些年看了很多电影，对套路也基本摸透了。</p>
<p>比如摆在明面上的嫌疑人，通常都不是真正的凶手；要是关键人物声称在事故中身亡，其他人为此哀悼、回忆往事时，这个人基本不可能真的死去。</p>
<p>写到这里，想起韩寒很久以前在新浪博客写的杂文，有调侃一些香港电影，但凡出现 “你真是我的好兄弟！” 这句话，下一秒这位好兄弟必领盒饭。</p>
<p>这和动漫里常说的 “有烟无伤”“自古对波左边输” 其实是一个道理。</p>
<h2 id="4-猜凶手">4. 猜凶手</h2>
<p>猜测最终凶手也是一种乐趣，但不管猜中还是没猜中，我发现心里多少都有点不痛快。</p>
<p>就像之前看的《名侦探柯南：万圣节的新娘》，开场不到几分钟我就猜到了凶手，并且笃定就是这个人，一路看到最后，居然真的猜中了。</p>
<p>那种感觉很难形容，是该高兴，还是该失望？居然这么容易就猜中了，心里突然就有点索然无味。</p>
<p>看《名侦探柯南：独眼的残像》时也是这种心态，每次出现新的人物，就会猜测是不是最后的凶手。把可能的人选都猜一遍，就不信没有猜中的时候。</p>
<p>当然，如果猜了五六个人，猜中不算难；但要是只选一个，我就没猜中。</p>
<p>到最后，我一直以为凶手是阿笠博士的那个朋友。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222025702.jpeg"></p>
<h2 id="5-有点刻意">5. 有点刻意</h2>
<p>在这部电影里，有个地方让我一直觉得奇怪，毛利小五郎不管和谁提起死者鲛谷浩二，都不叫名字，而是 “鳄鱼” 这个外号。</p>
<p>要都是熟人还好，可面对第一次见面的人，他还是叫外号，对方就会问 “鳄鱼是谁？”，接着他又得解释 “鳄鱼就是死者鲛谷浩二”。</p>
<p>我没记错的话，这种情况出现了四五次。因为追查凶手的过程中，他们见到了好几拨人。</p>
<p>在我看来，这显得不够庄重。“死者为大”，总叫外号不太合适，而且还是陌生人。</p>
<p>虽然毛利小五郎平时一副混不吝的样子，但真遇到大事、进入状态后，就完全不一样了。这从他救自己老婆，以及解决同学聚会杀人事件、自己学生杀人事件时的表现就能看出来。</p>
<p>带着这个疑惑看到最后，才知道这个外号是推理的证据之一。</p>
<p>之前的不和谐感也就说得通了，原来是为了铺垫这个点，有点玩文字游戏的意思。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507222004175.png"></p>
<p>这个手法，和我最近看的英语语法视频里举的例子有点像。</p>
<p>“有一个小女孩失踪了，警方一直找不到凶手。</p>
<p>最后，突破口来自小女孩继父说的一句话‘She was a good kid’。</p>
<p>警方因此锁定他为凶手，因为他用了过去式‘was’。</p>
<p>在英语里，过去式表明说话人潜意识里知道女孩已经死亡，而当时大众只知道女孩失踪了。”</p>
<blockquote>
<p>注：因为记不清具体例子，我曾用 AI 来查一下真实的案件，结果定位到 1992 年美国宾夕法尼亚州的 “万圣节谋杀案”（又称 “肖娜案”）。看内容时还以为找到了，可仔细看原文才发现完全不相关，该案并非因过去式用词而得以告破。无奈之下，只能凭记忆简单整理一下，能表达意思就行。</p></blockquote>
<h2 id="6-人物塑造">6. 人物塑造</h2>
<p>电影里对独眼的大和敢助、“小胡子” 诸伏高明的塑造很成功，两人有情有义，很有男子气概。</p>
<p>尤其是小胡子替大和敢助挡下枪击，不幸坠入结冰的湖底，之后在水里拔枪向天空射击的场景，画面感特别强。</p>
<p>诸伏高明引用了不少中国古代典籍的名言。查资料后才发现，这个人物的设计参考了诸葛亮。</p>
<p>其中 “漆身吞炭” 让我印象深刻，像 “知己知彼，百战不殆” 这类耳熟能详的句子就没什么特别的了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507221936230.png"></p>
<p>后来了解了 “漆身吞炭” 的典故，发现是个很感人的“士为知己者死”的故事。</p>
<p>“春秋时期，刺客豫让为给智伯报仇，不惜用漆涂满全身、吞炭弄哑声音以改变声貌，以便接近仇人赵襄子。</p>
<p>赵襄子很有格局，敬佩他的忠义，起初并未杀他。但豫让没有放弃，仍潜伏在桥下伺机暗杀，可惜还是没成功。</p>
<p>赵襄子表示这次不能再放过他，豫让临死前恳求他脱下长袍，让自己刺三剑以告慰智伯，随后便自刎身亡。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507221433671.png"></p>
<h2 id="7-动机">7. 动机</h2>
<p>凶手的动机，从个人感情上升到对日本政府不公平政策的抗议，最终因心理扭曲而泄露国家机密。这个理由勉强能说得过去，只是有点落入俗套了。</p>
<p>凶手一开始憨憨的，真相揭露后露出邪恶嘴脸，这种反差感很强，让人觉得人性真的很复杂。</p>
<h2 id="8-结语">8. 结语</h2>
<p>这么炎热的夏天，外面像个蒸笼，在电影院里看到大雪纷飞的场景，心里生出一丝凉意。</p>
<p>因为我本来就喜欢雪，所以虽然对这部电影颇有微词，但总体觉得还不错。</p>
<p>不过，让我收获最多的，其实是 <strong>“漆身吞炭”</strong> 这个成语。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507221951004.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>38-别让进度汇报成流水账，拆解任务加明确要求就管用</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/38-%E5%88%AB%E8%AE%A9%E8%BF%9B%E5%BA%A6%E6%B1%87%E6%8A%A5%E6%88%90%E6%B5%81%E6%B0%B4%E8%B4%A6%E6%8B%86%E8%A7%A3%E4%BB%BB%E5%8A%A1%E5%8A%A0%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E5%B0%B1%E7%AE%A1%E7%94%A8/</link>
      <pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/38-%E5%88%AB%E8%AE%A9%E8%BF%9B%E5%BA%A6%E6%B1%87%E6%8A%A5%E6%88%90%E6%B5%81%E6%B0%B4%E8%B4%A6%E6%8B%86%E8%A7%A3%E4%BB%BB%E5%8A%A1%E5%8A%A0%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E5%B0%B1%E7%AE%A1%E7%94%A8/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211814509.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在这篇文章《19 - 过进度方式二：项目成员依次说明和演示任务完成情况》中，已经讲明了当前项目过进度的方式：要求各项目成员到前面的座位来，把上两周以及下两周要做的工作情况汇报一下。&lt;/p&gt;
&lt;p&gt;但是，在执行大半年的时间里，发现有的项目成员在会议上汇报自己任务情况时，只是简单说明内容，两三句话就说完了。&lt;/p&gt;
&lt;p&gt;怎么引导项目成员更多地反馈工作中的情况，而不是让会议变成形式化、流水账式的无意义会议呢？&lt;/p&gt;
&lt;p&gt;我反复思考了一下，项目成员为什么不想说那么多呢？这个点其实在《19 - 过进度方式二：项目成员依次说明和演示任务完成情况》中也有过分析，这里就不再过多赘述了，无外乎就是多一事不如少一事 —— &lt;strong&gt;只要我说得越少，问题也就越少。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不过，我也能想到其他的可能，比如 “就是线上修复了几个 Bug，没有什么可说的”“就是正常的功能开发，没什么可说的”“我做的是其他项目的，跟其他人关系不大，没什么可说的”。&lt;/p&gt;
&lt;p&gt;关键点就在于 &lt;strong&gt;“没有什么可说的”&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;为什么没有什么可说的呢？&lt;/p&gt;
&lt;p&gt;难道每个人在开发的过程中，真的一点问题都没有吗？&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211815841.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;每一条任务的制定，都包含需求、方案、研发、技术笔记和验收等多个环节。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这几个环节中，总该有可以说的点吧？&lt;/p&gt;
&lt;p&gt;但是，为什么没有什么可说的呢？原因就是没有做好相关的工作。&lt;/p&gt;
&lt;p&gt;很多需求只是一句话，或者口头说一下；很多方案也只是当面沟通一下，沟通好就完事了，没有整理成方案文档记录下来。&lt;/p&gt;
&lt;p&gt;至于研发过程中遇到的问题，&lt;strong&gt;有些 Bug 在没解决之前是 Bug，解决之后恍然大悟，就会觉得问题不值一提&lt;/strong&gt; “原来如此，我居然会犯这个低级错误？” 所以，也就觉得没有什么值得总结和记录的了。&lt;/p&gt;
&lt;p&gt;还有技术笔记，写这个是要花时间的，完全看每个人是否自觉去做，那真的太难了，大多数人的想法是，还不如省下这些时间去做下一条任务。&lt;/p&gt;
&lt;p&gt;甚至，有些人会觉得，这种知识点还要写技术笔记，会不会让人觉得自己技术很菜、水平很低，还不如不写。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211816234.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;任何问题都要透过表象抓住本质，一般这种问题，只是从人身上入手，效果不会很理想的，你可以口头要求对方一次两次，过段时间，只要你稍微疏忽了，对方也就松懈了，所以，还是要从源头去解决，也就是&lt;strong&gt;要从流程入手、从规章制度入手&lt;/strong&gt;，经过沟通讨论，定下一些规定，让大家一起遵守就好。&lt;/p&gt;
&lt;p&gt;比如，&lt;strong&gt;项目负责人在制定任务的时候，需要把任务要求写清楚，任务要先整理详细的需求文档、解决方案和技术笔记。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;之前可能只是 1 条 “支持 10 万台设备接入”的开发任务，里面涵盖着想让成员写各种文档的期望，现在这个事情直接挑明了，拆分成 3 条任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;支持 10 万台设备接入需求文档&lt;/li&gt;
&lt;li&gt;支持 10 万台设备接入解决方案&lt;/li&gt;
&lt;li&gt;XXX 框架基本使用、疑难问题解决等技术笔记&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样，就把之前依赖项目成员自觉的工作，变成硬性要求，以任务形式下达，让工作从无序变成有序，从无条理变为有章法。&lt;/p&gt;
&lt;p&gt;在这个基础上，项目进度会议中项目成员汇报进度时，就可以把这些资料都过一遍，然后再进行验收，应该能有效解决会议流水账的问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211817317.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211814509.jpeg"></p>
<p>在这篇文章《19 - 过进度方式二：项目成员依次说明和演示任务完成情况》中，已经讲明了当前项目过进度的方式：要求各项目成员到前面的座位来，把上两周以及下两周要做的工作情况汇报一下。</p>
<p>但是，在执行大半年的时间里，发现有的项目成员在会议上汇报自己任务情况时，只是简单说明内容，两三句话就说完了。</p>
<p>怎么引导项目成员更多地反馈工作中的情况，而不是让会议变成形式化、流水账式的无意义会议呢？</p>
<p>我反复思考了一下，项目成员为什么不想说那么多呢？这个点其实在《19 - 过进度方式二：项目成员依次说明和演示任务完成情况》中也有过分析，这里就不再过多赘述了，无外乎就是多一事不如少一事 —— <strong>只要我说得越少，问题也就越少。</strong></p>
<p>不过，我也能想到其他的可能，比如 “就是线上修复了几个 Bug，没有什么可说的”“就是正常的功能开发，没什么可说的”“我做的是其他项目的，跟其他人关系不大，没什么可说的”。</p>
<p>关键点就在于 <strong>“没有什么可说的”</strong>。</p>
<p>为什么没有什么可说的呢？</p>
<p>难道每个人在开发的过程中，真的一点问题都没有吗？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211815841.jpeg"></p>
<p><strong>每一条任务的制定，都包含需求、方案、研发、技术笔记和验收等多个环节。</strong></p>
<p>这几个环节中，总该有可以说的点吧？</p>
<p>但是，为什么没有什么可说的呢？原因就是没有做好相关的工作。</p>
<p>很多需求只是一句话，或者口头说一下；很多方案也只是当面沟通一下，沟通好就完事了，没有整理成方案文档记录下来。</p>
<p>至于研发过程中遇到的问题，<strong>有些 Bug 在没解决之前是 Bug，解决之后恍然大悟，就会觉得问题不值一提</strong> “原来如此，我居然会犯这个低级错误？” 所以，也就觉得没有什么值得总结和记录的了。</p>
<p>还有技术笔记，写这个是要花时间的，完全看每个人是否自觉去做，那真的太难了，大多数人的想法是，还不如省下这些时间去做下一条任务。</p>
<p>甚至，有些人会觉得，这种知识点还要写技术笔记，会不会让人觉得自己技术很菜、水平很低，还不如不写。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211816234.jpeg"></p>
<p>任何问题都要透过表象抓住本质，一般这种问题，只是从人身上入手，效果不会很理想的，你可以口头要求对方一次两次，过段时间，只要你稍微疏忽了，对方也就松懈了，所以，还是要从源头去解决，也就是<strong>要从流程入手、从规章制度入手</strong>，经过沟通讨论，定下一些规定，让大家一起遵守就好。</p>
<p>比如，<strong>项目负责人在制定任务的时候，需要把任务要求写清楚，任务要先整理详细的需求文档、解决方案和技术笔记。</strong></p>
<p>之前可能只是 1 条 “支持 10 万台设备接入”的开发任务，里面涵盖着想让成员写各种文档的期望，现在这个事情直接挑明了，拆分成 3 条任务：</p>
<ol>
<li>支持 10 万台设备接入需求文档</li>
<li>支持 10 万台设备接入解决方案</li>
<li>XXX 框架基本使用、疑难问题解决等技术笔记</li>
</ol>
<p>这样，就把之前依赖项目成员自觉的工作，变成硬性要求，以任务形式下达，让工作从无序变成有序，从无条理变为有章法。</p>
<p>在这个基础上，项目进度会议中项目成员汇报进度时，就可以把这些资料都过一遍，然后再进行验收，应该能有效解决会议流水账的问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507211817317.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《To B 市场品牌实战课》学习笔记：降本增效、产品表达与客户思维的实战启发</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/to-b%E5%B8%82%E5%9C%BA%E5%93%81%E7%89%8C%E5%AE%9E%E6%88%98%E8%AF%BE%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Fri, 18 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E6%8E%A8%E5%B9%BF/to-b%E5%B8%82%E5%9C%BA%E5%93%81%E7%89%8C%E5%AE%9E%E6%88%98%E8%AF%BE%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182120293.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;学习总结&#34;&gt;学习总结&lt;/h1&gt;
&lt;p&gt;这七八年里，我在极客时间陆续购买了 130 个课程，外加四五个训练营。说起来有些惭愧，这么多课程里，我只完整看完了十个左右，剩下的大多还没来得及学习。算下来，这些课程大概花了万把块钱，现在想想确实有点浪费。毕竟，&lt;strong&gt;买了不等于学了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;后来我换了个思路，不贪多，每天学一讲，先把这个微小的习惯坚持下来。没想到这个办法效果不错，最近刚看完《To B 市场品牌实战课》，现在正接着学下一个课程《商业思维案例笔记》。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182022021.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;刚开始看《To B 市场品牌实战课》时，我总觉得内容离自己很远，不太清楚课程要讲什么。但跟着学了几讲后，结合自己当前的工作内容，慢慢就有了一些感悟。&lt;/p&gt;
&lt;h2 id=&#34;降本增效&#34;&gt;降本增效&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;工业 1.0 是蒸汽机时代，工业 2.0 是电气化时代，工业 3.0 是信息化时代，工业 4.0 则是智能化时代。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;“降本增效” 现在已经成了老生常谈的话题。做任何事都讲究性价比，只要投入和产出没达到预期，就会立刻砍掉这块业务，转而去投入更有潜力的领域。&lt;/p&gt;
&lt;p&gt;课程里提到一个观点，传统行业更倾向于 “降本”，数字化行业更倾向于 “提效”。&lt;/p&gt;
&lt;p&gt;比如传统工厂，现在大多在考虑转向 “智慧工厂”。工业 4.0 的概念提出已有一段时间，工厂为了减少成本、提高产出，会从生产流程上做优化。&lt;/p&gt;
&lt;p&gt;以前需要人工操作的机器，现在都改成了自动化运行，这就是典型的 “降本” 实践。&lt;/p&gt;
&lt;h2 id=&#34;产品翻译&#34;&gt;产品翻译&lt;/h2&gt;
&lt;p&gt;我理解的 “产品翻译能力”，是指把一个专业知识点用通俗易懂的例子讲清楚。最难的是找到大家生活中熟悉的场景，用简单的方式让对方一听就懂。比如解释下计算机知识点 “队列” 和 “栈”是什么意思：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;队列是“先进先出”，就像动车排队上车，排在前面的先上，后面的后上；&lt;/li&gt;
&lt;li&gt;栈是“后进先出”，就像坐地铁，后上车的人先下车，先上车的人后下车。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182112592.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182113411.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;课程里有个例子也很受启发。同样的产品卖点，只调整宣传话术，效果就可能天差地别。这背后其实就是 “产品翻译” 的逻辑，用用户听得懂的话沟通。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原版：华为手机的摄像头特别好，拥有 1 英寸的传感器。
优化：华为手机居然能拍到清晰的月亮，效果跟望远镜一模一样。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;官网优化&#34;&gt;官网优化&lt;/h2&gt;
&lt;p&gt;官网要做好推广，绕不开 SEO 优化，这块知识我之后打算系统学一下。&lt;/p&gt;
&lt;p&gt;SEO 优化的核心是提升网站在搜索结果中的排名。如果有过搭建个人博客的经历，应该对它不陌生。&lt;/p&gt;
&lt;p&gt;我最早用 WordPress 搭博客时，每次发布文章都会收到 SEO 优化提示。比如标题怎么取更合适、内容里哪些关键词需要重点出现。这些细节能让用户搜索相关内容时，更容易看到我的博客，从而带来更多流量。&lt;/p&gt;
&lt;p&gt;这一点和微信公众号很像。同样的内容，标题不同，传播效果可能大不相同。这里就不细说了。&lt;/p&gt;
&lt;p&gt;不过现在确实是 “短、痛、快” 的时代，没人有耐心听长篇大论。&lt;/p&gt;
&lt;p&gt;所以产品介绍页都会想办法快速吸引用户。用动画效果、“震惊体” 标题、强烈的数值对比图等等。先抓住眼球，才有后续的转化可能。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182120293.png"></p>
<h1 id="学习总结">学习总结</h1>
<p>这七八年里，我在极客时间陆续购买了 130 个课程，外加四五个训练营。说起来有些惭愧，这么多课程里，我只完整看完了十个左右，剩下的大多还没来得及学习。算下来，这些课程大概花了万把块钱，现在想想确实有点浪费。毕竟，<strong>买了不等于学了</strong>。</p>
<p>后来我换了个思路，不贪多，每天学一讲，先把这个微小的习惯坚持下来。没想到这个办法效果不错，最近刚看完《To B 市场品牌实战课》，现在正接着学下一个课程《商业思维案例笔记》。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182022021.png"></p>
<p>刚开始看《To B 市场品牌实战课》时，我总觉得内容离自己很远，不太清楚课程要讲什么。但跟着学了几讲后，结合自己当前的工作内容，慢慢就有了一些感悟。</p>
<h2 id="降本增效">降本增效</h2>
<blockquote>
<p>工业 1.0 是蒸汽机时代，工业 2.0 是电气化时代，工业 3.0 是信息化时代，工业 4.0 则是智能化时代。</p></blockquote>
<p>“降本增效” 现在已经成了老生常谈的话题。做任何事都讲究性价比，只要投入和产出没达到预期，就会立刻砍掉这块业务，转而去投入更有潜力的领域。</p>
<p>课程里提到一个观点，传统行业更倾向于 “降本”，数字化行业更倾向于 “提效”。</p>
<p>比如传统工厂，现在大多在考虑转向 “智慧工厂”。工业 4.0 的概念提出已有一段时间，工厂为了减少成本、提高产出，会从生产流程上做优化。</p>
<p>以前需要人工操作的机器，现在都改成了自动化运行，这就是典型的 “降本” 实践。</p>
<h2 id="产品翻译">产品翻译</h2>
<p>我理解的 “产品翻译能力”，是指把一个专业知识点用通俗易懂的例子讲清楚。最难的是找到大家生活中熟悉的场景，用简单的方式让对方一听就懂。比如解释下计算机知识点 “队列” 和 “栈”是什么意思：</p>
<ul>
<li>队列是“先进先出”，就像动车排队上车，排在前面的先上，后面的后上；</li>
<li>栈是“后进先出”，就像坐地铁，后上车的人先下车，先上车的人后下车。</li>
</ul>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182112592.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182113411.png"></p>
<p>课程里有个例子也很受启发。同样的产品卖点，只调整宣传话术，效果就可能天差地别。这背后其实就是 “产品翻译” 的逻辑，用用户听得懂的话沟通。</p>
<blockquote>
<p>原版：华为手机的摄像头特别好，拥有 1 英寸的传感器。
优化：华为手机居然能拍到清晰的月亮，效果跟望远镜一模一样。</p></blockquote>
<h2 id="官网优化">官网优化</h2>
<p>官网要做好推广，绕不开 SEO 优化，这块知识我之后打算系统学一下。</p>
<p>SEO 优化的核心是提升网站在搜索结果中的排名。如果有过搭建个人博客的经历，应该对它不陌生。</p>
<p>我最早用 WordPress 搭博客时，每次发布文章都会收到 SEO 优化提示。比如标题怎么取更合适、内容里哪些关键词需要重点出现。这些细节能让用户搜索相关内容时，更容易看到我的博客，从而带来更多流量。</p>
<p>这一点和微信公众号很像。同样的内容，标题不同，传播效果可能大不相同。这里就不细说了。</p>
<p>不过现在确实是 “短、痛、快” 的时代，没人有耐心听长篇大论。</p>
<p>所以产品介绍页都会想办法快速吸引用户。用动画效果、“震惊体” 标题、强烈的数值对比图等等。先抓住眼球，才有后续的转化可能。</p>
<h2 id="回归自身">回归自身</h2>
<p>要做好产品推广，前提是要懂自己的产品。核心竞争力是什么？优势和短板在哪里？只有把这些搞清楚，才能真正把推广做好。</p>
<p>而且产品不能只靠营销。<strong>只有自身质量够硬，营销才能成为 “扩大器”</strong>。否则，可能因为信任问题，得不偿失。</p>
<p>课程里，提到著名摄影师罗伯特・卡帕的名言，“你没有拍到好照片，是因为你还不够近！” 这让我想到，做产品也是如此，必须近距离接触用户，了解他们真实的使用场景和遇到的问题，不能空谈理论。这和《华为销售法》里 “让听到炮声的人指挥军队” 的道理是相通的。</p>
<p>在我看来，商机的获取一直是最难的工作部分，但再难也有方向。<strong>以客户为中心，帮助客户成功，这是唯一的正确道路</strong>。</p>
<p>课程里有段话让我很受启发。遇到客户或分析潜在客户时，按这个流程梳理一遍，我觉得，很容易就可以找到答案：</p>
<blockquote>
<ol>
<li>客户遇到了什么问题？</li>
<li>客户需要什么帮助？</li>
<li>我们可以提供什么方案？</li>
<li>我们提供方案的成本是多少？</li>
<li>这个方案能解决客户的问题吗？</li>
<li>市场上还有同类方案吗？</li>
<li>为什么客户要选择我们的方案？</li>
<li>我们的方案优势在哪里？</li>
</ol></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182133870.jpg"></p>
<h1 id="摘要">摘要</h1>
<ol>
<li>
<p>那么整个 To B 市场的核心购买驱动力到底是什么呢？我总结了四个字，并会在后面的课程内容中不断地提到，那就是——降本提效。</p>
</li>
<li>
<p>在 To B 的市场品牌领域中，品牌心智的影响力构成可能和 To C 完全不同。我举个例子，To C 的品牌心智的常规手段往往是找一个当红小生成为代言人，通过各种广告来反复包装塑造。而 To B 的品牌心智更可能是由技术领先性构成的，也可能是由某一项功能点，例如安全特性、合规特性以及开发者关系，甚至还有开源社区贡献度构成的。因为 To B 的市场品牌影响的目标主体是企业，而企业的运行本身就是极其理性的。</p>
</li>
<li>
<p>带你深入了解 ToB 市场营销的核心方法：围绕客户需求和产品不断地生产内容，通过内容影响企业心智。</p>
</li>
<li>
<p>一个好的发布会的核心，就是让所有人记得，这个产品比其他产品更好、更适合我。</p>
</li>
<li>
<p>如何把术语翻译成客户想要的？ 市场人之所以能够在公司这个大组织中产生价值，一个最核心的能力就是翻译能力。这里的翻译指的不是普通的语言翻译，而是把产品语言翻译成市场语言。当然，做到这一点的基础就是你要吃透“产品的核心能力”。</p>
</li>
<li>
<p>可以说，用“降本”“提效”来分解产品语言，是我们翻译所有 To B 类产品或市场时，能够 99% 通用的方法。</p>
</li>
<li>
<p>产品语言翻译这根核心线才是你一定要把握住的。</p>
</li>
<li>
<p>我有一个基本原则，叫做作“发布会 333 原则”，可以解决“输出卖点”这个问题。 只打 3 个核心功能点，整场发布会围绕这三个核心功能点讲穿讲透，其余功能点，带过即可。30 秒原则，我们所有的功能点描述，都必须可以在 30 秒内被理解、倾听、复述。选的这三个功能至少能够覆盖到我们超过 30% 营收的客户。如果你能让自己的卖点符合这三个原则，那就代表着你做到了三点：清楚地知道自己产品的核心功能和能力；遵循传播学的经典议程设置理论（议程设置理论：公众对周围世界的“大事”及其轻重缓急的判断，主要来自大众传媒对事件的报道和版面安排）；产品功能具有普适性。</p>
</li>
<li>
<p>我认为，“产品体系的故事”本质上就是公司层面的产品世界观，它代表了作为一家企业，你如何用你的商业形态、技术，解决客户现在的问题、未来的问题。</p>
</li>
<li>
<p>当我们面对用户去讲产品体系的故事的时候，本质上是告诉客户——因为我们锚定了未来的行业方向，我们的产品能够解决行业、社会的问题，所以我们的产品体系决定了这么干。</p>
</li>
<li>
<p>对于 To B 的企业来说，业务与服务的永续性是极其重要的。因为 To B 的选型一旦确定，几乎很难更改。就比如在航空界，20 世纪 60 年代的飞机，今天还是有源源不断的零件可以供应，这就是 To B 类产品的不同。</p>
</li>
<li>
<p>企业对于开源软件的永续性是有信心的。所以，今天我们在向企业推荐自己产品的时候，一定要讲对未来的判断，讲引领行业的领先性，讲我们的服务永续性，这样企业才愿意了解你、用你，并且把你不断集成和融入到他的 IT 体系中去。</p>
</li>
<li>
<p>对于绝大多数公司来说，在整个大市场团队里，产品市场这个模块往往是整个市场团队的重中之重，因为产品市场直接关系到产品销售和公司业绩。所以，这也是市场团队最核心的职能之一，同时，也是整个 To B 市场营销最为核心且通用的模块。</p>
</li>
<li>
<p>“如何上手”是很多公司的产品市场同学面临的困惑，那么就从我们的第一个模块开始吧。前面我说过，第一个模块我称为市场工作的 1.0，这里主要包括 4 类工作内容：<strong>宣传</strong>、<strong>洞察</strong>、<strong>制造</strong>和<strong>支持</strong>。</p>
</li>
<li>
<p>我把要做的产品市场工作分为 1.0、2.0、3.0 这三个阶段，我为什么要这样划分呢？本质上来看，这是一个产品市场团队从无到有的过程中“应该做哪些事情”的优先级问题。</p>
<ol>
<li>1.0 阶段：解决与客户沟通、信息互通的问题；</li>
<li>2.0 阶段：跑通收割商机的流程，证明团队价值；</li>
<li>3.0 阶段：成为公司战略和价值的推动者、传播者。</li>
</ol>
</li>
<li>
<p>要做好这个渠道，首先第一步是要换位思考，因为这些渠道最大的关注者一定是我们的客户或者潜在客户，那么他们需要的信息是什么？我觉得最重要的有三件事儿：产品动态：有没有新的产品发布？新的功能、版本发布？这个是和客户息息相关的。服务：服务能力、服务渠道有无更新，变更？在哪里可以找到这些服务？ 公司品牌宣传物料：理念海报、情怀故事等。但在 1.0 阶段，我认为这样的物料不需要占比太高。</p>
</li>
<li>
<p>对于 To B 行业来说，最好的竞争力是把产品做好，最好的宣传就是讲好产品的事儿。</p>
</li>
<li>
<p>我们的日常第一个工作，是要扎扎实实地通过前端渠道与客户互动，与他们沟通最最重要的东西：产品能力、服务能力。</p>
</li>
<li>
<p>例如，极客时间要搞一个视频云产品，把编码、解码、传输、边缘计算都打了个包。这个时候，我们的产品同学介绍了性能、价格等各个优势，还介绍了一个特殊能力——我们在同等带宽消耗下，清晰度是竞争对手的两倍。如果你具备足够的市场洞察力，你就会把这句话重新捋一遍：我们是不是在一半的带宽消耗下，能够维持和竞争对手同等的画质？这个洞察怎么来的？就是换位思考来的，如果你站在客户的角度，一定是希望自己购买的产品是能够给自己降本增效的。那么“在同等带宽消耗下，清晰度是竞争对手的两倍”和“花一半的钱，就能得到和过去一样的清晰度”，这两点哪一个更让客户心动？以“降本提效”为标准，我们得到的答案是第二个，因为它让我们的洞察变成了一个实实在在，且无法拒绝的商业机会：在一半的带宽消耗下，能够维持和竞争对手同等的画质，换句话来说就是帮助视频网站降低 50% 的带宽成本。这就是产品洞察的力量，要获得这样的力量，我个人有一个小经验：走访 30 个产品用户，就能够很好地获得这样的体感。</p>
</li>
<li>
<p>一般来说，一个基础的产品市场物料包括以下 7 个方面的内容：</p>
<ol>
<li>产品介绍（PPT、手册、视频）三件套；</li>
<li>一个标准的产品话术（包括核心卖点、核心卖点的 FAQ、用户场景，安全性等）；</li>
<li>产品衍生的纪念品（公仔、台历、T 恤、笔记本等销售可以随手赠送的物料）；</li>
<li>产品上线的官网页面（解决“让客户找得到我们”的问题）；</li>
<li>产品的 Roadmap 成长路径图，重大功能更新历史（解决“你从哪里来”“到哪里去”，以及业务延续性的问题）；</li>
<li>产品的生态体系介绍（你兼容谁？可以和什么样第三方产品适配？）；</li>
<li>金牌案例介绍。</li>
</ol>
</li>
<li>
<p>产品市场的销售支持包括两块内容：一块是结合销售所在的区域、行业，以及市场情况，发起营销战役，帮助销售拿到订单；另一块就是我刚刚讲的“下行通路的输出”</p>
</li>
<li>
<p>什么叫市场中“下行通路的输出”呢？简单来说，就是我们要在前端的流量以及市场品牌建设活动中收到各种各样的商机（Leads），并通过销售团队完成商机的落地。</p>
</li>
<li>
<p>新零售里很重要的概念就是“人、货、场”，假如心智是一种商品，我们怎么把心智卖出去呢？</p>
</li>
<li>
<p>打心智，最难的切入是人，但最容易的切入也是人。</p>
</li>
<li>
<p>在创业型公司，市场团队的核心价值就是支撑销售，用尽全力帮助销售把产品卖出去。而在快速发展期的公司，市场团队的核心价值就是扩大公司 / 产品的在行业里的影响力，帮助公司拓展在客户中的无形资产认知，并收获优质的商机。在巨型公司中，市场团队的核心价值是不断地塑造企业行业领导者的形象，通过引领和带动行业，收获大批忠实的粉丝，实现商机的转化。</p>
</li>
<li>
<p>针对 To B 的市场营销（以产品市场为例），我总结了一句 Slogan，我们要“上接天（品牌塑造），下承地（销售支持），中间还要接空气（氛围 / 行业认知）”。</p>
</li>
<li>
<p>如果说 To C 市场心智的核心打法是人性，那么 To B 市场的核心打法就是利益。在商言商，情怀不等于买单，企业用户“佩服你”和企业用户“购买你”，真的是两码事。所以，了解你的客户，和你的客户对话，明确利益点，应该是你和客户对话的核心。任何一次对话，都是一次换位思考，To B 的市场营销也不例外。</p>
</li>
<li>
<p>总结来看，这四个问题其实反映了企业关注的四个方面，那就是经营资源投入、业务发展灵活度、财务可持续发展以及业务增长。因此，无论是在活动中，还是媒体物料中，只要你时刻记得这 4 个灵魂拷问点，就很容易能推开“和 CEO 对话”这扇窗户。</p>
</li>
<li>
<p>技术人的思路，可能会去强调云计算无需自建机房、弹性、高性价比的优势。但看完这样的 Video，CEO 会想，我们现在的基础设施也很好啊，业务也可以得到更好的支撑，我为什么要购买你这个产品呢？</p>
</li>
<li>
<p>当我们在制定一个营销计划的时候，我们一定要俯瞰一下全盘，看看我们在讨论产品、公司优势的时候，到底有没有探讨企业经营资源的投入问题。</p>
</li>
<li>
<p>我们需要对 CEO 谈的一定不是敏捷，而是要把敏捷转化成企业业务发展灵活度的问题，对方才能接受。</p>
</li>
<li>
<p>目前的后疫情时代为例，各种“在线”已经成为共识，5G、短视频、直播带货，新的业务层不出穷。CEO 们纷纷希望进行尝试，这个时候问题就来了。</p>
</li>
<li>
<p>要尝试新业务，就需要投入 IT 设施的资源。 要找到一个专业的团队来帮你构建你的业务系统。 你需要组建一个运维团队来维持业务系统的运作。</p>
</li>
<li>
<p>很多企业都是依靠快速、敏捷成功的。“云”不是一个技术问题，是一个商业方法论的问题。</p>
</li>
<li>
<p>如果你把自己的产品和客户企业的财务报表和利润率挂钩，一定效果奇佳。</p>
</li>
<li>
<p>对于很多互联网公司来说，IT 基础设施投入其实一个吞金怪兽，IT 基础设施通常的生命周期在 4 年左右。4 年以后这些 IT 基础设施就会逐渐过保、老化，需要进行二次投入。</p>
</li>
<li>
<p>在中国，如果你跑到人家企业里说，我是来给你挣钱的，却不说能解决当下的什么问题，那你有 99% 的几率会被当成骗子。但是，如果你解决了具体的问题，再说我能帮你挣钱，那么你就会有 99% 的几率被企业客户当成神仙。</p>
</li>
<li>
<p>以我们的云计算产品为例，我会以企业的核心资产是什么、核心资产在哪里作为分类依据，把云的企业客户分成三类：非互联网企业、古典互联网企业和新互联网企业。</p>
</li>
<li>
<p>如果在产品市场营销中要侧重这类客户，我们的核心策略应该是：多讲混合云的解决方案，帮助现有的 IT 基础设施查缺补漏、慢慢渗透。</p>
</li>
<li>
<p>记一下今天这节课的重点——把握 CEO 心理的四个方法论。要谈企业经营资源的投入问题；要谈企业业务发展灵活度的问题；要谈企业财务可持续发展的问题；要谈企业在数字化时代优胜劣汰的问题。</p>
</li>
<li>
<p>正如著名摄影师罗伯特·卡帕（Robert Capa）的名言，你没有拍到好照片，是因为你还不够近！</p>
</li>
<li>
<p>很多市场同学在做一个产品发布的时候，会有三不懂：不懂产品、不懂市场态势、不懂用户。所以，就只能把发布会变成一场不痛不痒的活动。但事实上，办好一场发布会需要对产品极深的理解，对市场极其丰富的了解，还有对竞争对手极熟悉的嗅觉。</p>
</li>
<li>
<p>要想做到话题有共鸣，我们就需要保持和用户一致的痛感。</p>
</li>
<li>
<p>我们的第一个仰望的发布会——苹果 iPhone 的第一次亮相：30 秒内可以传唱的对象：滑动解锁。一个看得见摸得着的 Demo：通过地理位置系统给披萨店打电话。 三句广为流传的金句：乔布斯金句还少吗？热议：看看第二天在苹果店门口排队的人。</p>
</li>
<li>
<p>在我们日常当中常见的商机收集中，经常遇到下面的问题： 通过各个渠道收集来的商机转化率不高，商机质量很低，以至于销售部门怨声载道；大量的商机是长尾客户，头部客户稀少，商机的价值难以见到；通过商机收集过来的目标客户，对产品意向度很低，难以被我们的产品打动。</p>
</li>
<li>
<p>这些常见问题的本质，是我们对商机背后的企业决策链路缺乏理解造成的。如果你简单地看商机，那它就是一个购买需求。然而，站在企业的角度看，商机其实是一个组织采购的决策。</p>
</li>
<li>
<p>Leads 从哪里获取？ 一个市场部的工作人员的日常，就是帮助公司去寻找客户、寻找商机。与销售不同的是，市场部工作人员会用更广泛的方式，寻找不那么定向和精准的客户。</p>
</li>
<li>
<p>而线下用户聚集最多的地方，就是各类的会议。一般来说，有四类会议通常比较容易收获商机的：</p>
<ol>
<li>财经类会议（吸引 CEO，CCO 群体）；</li>
<li>技术大会（吸引 CTO 群体）；</li>
<li>行业会议（例如餐饮业大会，吸引的主要是垂直类目的从业者）；</li>
<li>地方性的科技大会（往往能够遇见本土龙头企业）。</li>
</ol>
<p>在这四类活动中，要高效地获得商机，对于内容的设置，也至关重要。好的内容能够触发用户主动寻找与你的触点。这一点，我们的每一次会议营销的内容设置跟后面我们的讲到的产品发布其实是类似的。</p>
</li>
<li>
<p>一个 To B 的企业，最传统的线上阵地就是我们自己的官网。这里就分成了两个问题了：我们的官网如何被看到？我们的官网如何吸引用户留下自己的痕迹？</p>
</li>
<li>
<p>第一个问题，<strong>我们的官网如何被看到？</strong> 通常情况下，我们首先会去百度等搜索引擎进行 SEM/SEO 优化，确保用户在查询相关问题时，我们能够占据前排。其次，广告流量采买是必不可少的，我们经常在一些论坛、游戏下方看到的“×××云，解决您×××问题”就是广告流量采买的效果。此外，还有一个比较省钱的奇招，就是刷存在感：在论坛或知乎里去回答各种各样的相关问题，最后导流到产品上。这是目前比较主流的一些方法。不过随着短视频类的产品崛起，很多 SaaS 产品，也可以尝试通过短视频进行营销活动，但是目前没有发现效果特别好的案例。通过这些手段，我们的官网会被展示在用户能够看到的地方。</p>
</li>
<li>
<p>第二个问题，则是我们把用户导流到了官网后，如何让用户在这里留下痕迹和联系方式。一般来讲，要让用户留下痕迹，一定要有吸引他的“利益点”，从我多年的工作经验来看，有三种东西特别容易吸引客户：</p>
<ol>
<li>第一个是行业类的相关资料。我们经常会看到云厂商的主页会放一些联合各个机构生成的报告，例如《中国农产品企业数字化报告》《未来十年的数字化趋势》。当客户要下载这些报告时，就会被要求填写一张联系人表单，客户获得免费报告的同时，你也能够拿到客户的痕迹。</li>
<li>第二个是免费试用。对于顾客来说，很多时候他是非常好奇的，你的产品是做什么用的？我用你的和用别人的有什么区别？这些很难用文字来描述。所以，你可以请顾客来填写一张表单，让客户以此交换试用的时间、容量，让用户快速体验产品。这也是一类很好的吸引手段。</li>
<li>第三个则是帮助企业解决问题。企业用户大多数是带着问题来我们的官网的，所以在官网上提供一个或者多个在线的解决方案架构师免费“问诊”，也是一条获得商机的路径。</li>
</ol>
</li>
<li>
<p>一般在企业里，我们把购买过程中的参与者分为六类：发起者、使用者、影响者、决定者、购买者、审计者。如果我们能够通过商机，寻找到这条链路里的每一个参与者的需求，那么成功的几率就高了很多。</p>
<ol>
<li>发起者：一般是业务变革的推动者，往往是一个企业的中高层管理人员，核心利益是推动业务发展。</li>
<li>使用者：是使用产品和服务的人，核心利益是高效产出。</li>
<li>影响者：是能够对决策选型提供干预的人，通常是以“技术顾问”的形象出现的，影响者的情况不同，核心利益不同。</li>
<li>决定者：一般来说是老板，核心利益，四个字老话请跟我念，降本提效。</li>
<li>购买者：有权制定采购条款，并具体执行采购的人。核心利益是采购成本。</li>
<li>审计者：负责对于最后的整个采购过程进行评估的人。核心利益是采购安全。</li>
</ol>
</li>
<li>
<p>如果我们在商机的调研和回访中发现，客户往往会只有一个方向性的趋势，那么就基本上可以判定客户是有意愿，但是需求不明确。</p>
</li>
<li>
<p>在绝大多数企业里，一个典型的采购流程分为八个环节，我们要判断我们的商机处于哪个阶段。</p>
<ol>
<li>识别企业的内部问题：决定是通过组织 / 人员 / 业务调整来解决问题，还是通过采购来解决问题。（以业务持续增长，需要采购云服务器为例）</li>
<li>需求总体分析：确定要购买了，那么需求是怎样的？（我们接下来要面对×××万人，需要采购×××台机器）</li>
<li>产品规格的大致确定：我们需要采购的具体是什么产品？（我们需要采购 500 台，分别位于北京和广州的高主频云服务器）</li>
<li>供应商的寻找：符合我们要求的供应商在市场上有吗？（有，分别是华为云、腾讯云、阿里云）</li>
<li>提案征集：请云服务商来报一报自己的方案、价格。（各个云服务商开始针对企业出方案报价）</li>
<li>供应商选择：确定一家，进行采购。 订购的具体规则及细节：合同签订、项目实施、项目交付。</li>
<li>后续的评估：这次采购是否帮企业达成了目标？（降本提效，或者是支撑业务的目标有没有完成？）</li>
</ol>
<p>在这八步里，对于商机线索来说，1~5 步是商机线索存在的阶段。</p>
</li>
<li>
<p>有效判断商机属于哪个阶段，就能够更好的对症下药，把商机转化成销售。</p>
</li>
<li>
<p>商机如何交付？商机如何衡量？ 今天我们任何一个商机，都会交到销售的手里。当商机交到销售的手里的时候，不能简单的只是一个线索，事实上我们是要对线索根据上面的分层，并补充资料的。商机的关键联系人的基本情况、公司职位、公开简历、权责范围。商机是从什么议题中获得的（例如大数据论坛，或者是官网物联网的页面），能够判断初步感兴趣的业务方向。商机的 IT 需求概况：企业近三年公开的 IT 招投标信息，初步判断规模及需求。我们有无同行业的解决方案？同类 / 竞品企业的初步案例。有了这四个材料，原始商机才可以作为一个完整的商机信息，提供到销售团队。那么，当销售团队接到这个商机的时候，如何衡量呢？</p>
</li>
<li>
<p>事实上，在具体的商机获取过程中，其实是会比我们今天探讨的更加复杂。但是 **To B 的商机工作，是市场工作最艰巨的事，也是最有价值的事。**商机的获取，商机的转化到最终交到销售的手里，这个过程中，需要我们具备商机的获取能力，商机的识别能力，以及信息归纳总结的“情报”能力。商机的正向循环，能够帮助市场团队从“成本中心”向“价值中心”转变。</p>
</li>
<li>
<p>投入产出比永远是市场团队非常头疼的事情，但是今天我要跟你讲一个观点：极少的预算 + 合理的路径，也是能够出爆款的。</p>
</li>
<li>
<p>一定要记住一句话：内容，是最好的广告，没有之一。</p>
</li>
<li>
<p>当你找到了种子用户，下一步就是要找到这群人关注什么话题？这个时候不要急着说话，你可以在社区里蹲两天，看看用户关心什么话题？在讨论什么话题？用什么样的话题去吸引他们，这一点非常重要。那么当时我们是怎么去做的切入呢？</p>
</li>
<li>
<p>只需要再轻轻植入一些我们的产品，作为未来趋势进行探讨，就实现了我们的目的。</p>
</li>
<li>
<p>产品的发布本身什么样，在极低预算的战场上并不那么重要。</p>
</li>
<li>
<p>在产品发布这个环节呢，我们要思考的有三件事情：流量从哪来？影响力从哪来？谁是第一个用户?</p>
</li>
<li>
<p>一定要碰大佬，在没有法务风险的情况下碰瓷大佬，是一个捷径的做法。</p>
</li>
<li>
<p>当时，在云数据库这个领域里，做的最好的是 AWS 的 Aurora。在技术同学的努力下，我们的性能事实上是超越了 Aurora 的。那个时候我们很纠结，要不要去直接对标。有人觉得这种做法挺 low 的，但是我们认为，在极低成本的超限战下，能够赢才是关键。最后我们决定，在产品发布的时候，直接“碰瓷”Aurora。</p>
</li>
<li>
<p>在小会上持续发声，强刷存在感。</p>
</li>
<li>
<p>回归行业聚类，回归内容这一营销本质，回归讲好一个产品故事，也许是另外的一条通途。</p>
</li>
<li>
<p>**客户遇到了什么？ 客户需要什么帮助？ 我们可以提供什么？ 我们又要以什么成本提供？ 能够解决客户的问题吗？ 还有同类方案吗？ 为什么是我们来解决？ 我们解决的优势是什么？ **每次当我问自己很多问题，就会发现很多困惑会清晰起来。在慢慢解答这些问题的过程中，我们就会形成自己的一套有效的解题思路，而这套思路本身的价值，远远大于我们今天探讨的过程。这才是我希望用发布会这个案例讲的知识和理解。</p>
</li>
<li>
<p>想要讲清楚自己的产品体系故事，你需要先了解自己公司的产品体系。一个公司的产品体系一般是基于两条路径延伸出来的。</p>
</li>
<li>
<p>“断言”的方法就是从一个现象开始，下一个断言；然后再讲到“本质”；接着回归到我们的解法——产品；最后再以一个新的预言性断言结束。</p>
</li>
<li>
<p>其实，产品体系的故事，本质上就是一个解决问题的图景。</p>
<ol>
<li>
<p>正面角度：讲我的主张、观点、路径。</p>
</li>
<li>
<p>客户角度：今天你用了我的这些产品组合产品，有什么好处？</p>
</li>
<li>
<p>客户的客户角度：会让客户产品的使用有更好的体验吗？</p>
</li>
<li>
<p>行业竞争维度：获得了什么竞争优势。</p>
</li>
</ol>
<p>不断地重复，不断站在各个角色去讲，就很容易形成最终的行业共识。</p>
</li>
<li>
<p>一个很精彩的产品市场手段就是通过制造技术 / 产品事件，来向大众宣告新产品，新技术的不一样的能力，我们通常称为做一个 Demo 展示。</p>
</li>
<li>
<p>一般来说，我们的 Demo 如果是为公众而做，为了追求社会效应层面的轰动，那就要“尽量先进，极致简单”。</p>
<ol>
<li>“尽量先进”：有足够的噱头，能够引发热议。</li>
<li>“极致简单”：小孩都能明白这里讲了什么。</li>
</ol>
</li>
<li>
<p>为什么特斯拉今天能够创造这样的声量？就是因为它不断地在 Demo 里，通过自动驾驶技术的迭代，让公众看到了一个领先的形象。</p>
</li>
<li>
<p>故事可视化的要点有三个：第一，要解决的矛盾明确；第二，平时不易见到，有奇观性；第三，是胜负明确。</p>
</li>
<li>
<p>今天在 To B 的行业里，很多人的公司做的业务，其实都是非常非常底层的（服务器、数据库、网络），很难将其可视化，但这正是我们这样的市场团队的价值所在。</p>
</li>
<li>
<p>看出来了吗？在碎片化的时间里，用户感兴趣的内容形式，总结起来就三个字：短、痛、快。</p>
<ol>
<li>短：今天短视频平台已经改变了人们获得信息的方式，所以我们的做 To B 的内容也一样，要简单直接，快速直击观点。</li>
<li>痛：短还不够，在用户停留的前 5 秒内，你有没有抓住用户的痛点？让用户马上停下来浏览我们的线上内容？</li>
<li>快：迭代速度快，产出量大，能够不断出现在用户视野中，养成用户的浏览习惯。</li>
</ol>
</li>
<li>
<p>要在 To B 的企业线上活动创造仪式感，其实最重要的是三点：</p>
<ol>
<li>主题趋势化：线上活动的主题、内容，一定是在不断地定义未来（例如，跨年演讲）。</li>
<li>节奏化：把企业最重要的事儿（最重要的产品、活动），固定到一个时间点，养成用户习惯（例如，苹果年度发布，是年度盛事）。</li>
<li>KOL 化：你能邀请到最大的 KOL 是谁？他能给你带来多少行业流量，这个我在不同的文章里已经讲过了，就不再赘述了。</li>
</ol>
</li>
<li>
<p>如何让线上活动内容生动起来？ 形式的准绳已经确立，那么，还有什么技巧可以让线上内容更加生动呢？我总结了三点：IP 化、即时满足化、聚焦化。</p>
</li>
<li>
<p>IP 的建设，有三个要点：形象、人设、立场。</p>
</li>
<li>
<p>怎么理解呢？我们还是回到教学案例极客云上来进行讲解。假设今天我们极客云打算建设一个 IP 叫做“极客妹”，专门用来和用户互动，那么，我们首先要设定极客妹的形象。经过讨论调研发现，技术用户都喜欢初音未来这种日系萌妹子。所以，我们决定把极客妹的虚拟形象设定成一个日系萌妹。形象设定好后，我们就要确立人设了，极客妹的人设决定了后期的内容输出，我们可以给极客妹赋予一个好奇、爱问、搞笑的人设。最后一项，立场，极客妹是专门用来与用户互动的，所以她的立场一定是代表用户来发问、来好奇，以便与用户共情的。当我们有了这个 IP 以后，同样的内容，就可以用不同的形式和大家沟通了。例如，还是刚刚那个制造业数字化转型的场子，我们就可以变成《极客妹带你看数字化工厂，有几招？》。</p>
</li>
<li>
<p>To B 的直播最常见的形式就是产品介绍、解决方案介绍等内容。很多同学会发现，就算是做了很多投放工作，但是用户进来之后，停留时间实际上都是非常堪忧的。</p>
</li>
<li>
<p>针对这个情况，我们提出了三个有关即时满足化的改进措施。</p>
<ol>
<li>建立动手实验室（workshop）：在直播间页面里搭建一个动手实验室，用户可以跟着直播，一起来进行简单的动手实验。</li>
<li>答题领奖：在直播过程中，我们的主播会不定期投放问题，并且请观众答题领奖，这样既获得了用户的信息，也增加了互动性。</li>
<li>直播徽章：完整连续地观看完直播的用户，就可以获得一张精美的直播徽章（线上）。</li>
</ol>
<p>举一个例子，假设我们极客云有一个数据大屏的产品，我们的直播内容是告诉大家我们的产品好用——能够快速简单的搭建起一个数据大屏，同时接入数据也非常简便。</p>
</li>
<li>
<p>什么是聚焦化呢？ 如果说线下会议的命题要大、要泛，能够启发多数人的思考，那么线上的问题就要聚焦，解决一个不算大的问题。任何一个用户来看我们的线上内容，一定是带着问题来的，这个问题就是我们的切口。</p>
</li>
<li>
<p>我想说的是，知识点要短，要聚焦，一次解决一个问题。</p>
</li>
<li>
<p>我们做任何活动都希望能够收获商机，实现部门价值。但是在线上活动中，我们首先要正视大量的客户是长尾客户这一现状。头部客户有完整的技术团队和力量，对通过线上活动获得支持并不那么迫切，长尾客户需要获得最新的信息、支持等。所以，长尾客户对获得最新的技术资讯、行业方向的热情，远远大于头部客户，这也是客户们所在的发展阶段和技术阶段决定了的。</p>
</li>
<li>
<p>如果你希望线上活动能够涌入头部客户，是必须要销售团队出力气去定向邀约的，同时我们的内容也要过硬（还需要反复检查）。</p>
</li>
<li>
<p>一方面，我们可以通过“短、痛、快”的持续输出形式，让观众感受到节奏，能够在开车、刷牙，甚至上厕所的时候，获得一个知识点。另一方面，我们还应该以年度 / 季度的有仪式感的大型沟通 / 发布，打通从点到面的心智节奏。</p>
</li>
<li>
<p>务必要聚焦收敛话题，直击用户痛点，让用户得到真正有价值的内容，形成口碑和正向推荐。</p>
</li>
<li>
<p>一个优质客户的案例，要包括四场仗，打完了才能形成一个完整的闭环：案例的选型、案例的内容体系搭建、案例的 PR、营销战役。</p>
</li>
<li>
<p>我们要明白一个道理，选案例就像选女朋友，最漂亮的人人都喜欢，但是未必适合你，合适才是最重要的。</p>
</li>
<li>
<p>头部企业代表了行业里最先进的生产力；代表了对行业未来的判断；代表了在行业里最严苛的要求。</p>
</li>
<li>
<p>To B 的企业，也是由一个个鲜活的人构成的。而人天生有个习惯，就是好奇。一个平淡无奇的案例摆在面前，相信绝大多数人会将其视为一种宣传，最终视而不见。但是如果你有一个好的奇观，让案例变得出奇、少见，一切就不同了。</p>
</li>
<li>
<p>我举一个不恰当的例子，华为手机的摄像头特别好，拥有 1 英寸的传感器，可大家对这样的数据是无感的。但稍作修改之后，表述就变成了这样：华为手机居然可以拍到清晰的月亮，效果跟望远镜一模一样。你是不是很想看华为手机如何做到的？这就是奇观的力量。</p>
</li>
<li>
<p>那怎么做 FAQ 呢？我通常会围绕“业务、组织、人”三条线来。为什么要这么分呢？简单地说，在经典管理理论中，这三条线代表了一个完整的组织，这是一个完全的企业经营者视角。业务是企业的生命活动，组织是企业的骨骼与脏器，人是企业的灵魂，所以围绕这三个剖面，基本上能够打穿一个企业从当下业务到未来战略背后的技术 / 产品选型链路。</p>
</li>
<li>
<p>FAQ 这个方法既实用又简单，因为当客户和你接触的时候，一定是带着问题来的，你用问题的方法沉淀思路，本身就是一个“真情景”——你能够感受到客户的所思所想，感受到客户要什么。</p>
</li>
<li>
<p>什么叫“心智战役”？其实就是打造一场现象级的 PR，输出我们的案例。</p>
</li>
<li>
<p>PR 战役的核心目的是要发起现象级的讨论。而从我的经验来看，一个完整的现象级讨论一定是从行业现象、业务现象、技术现象往下落的。这样由大到小，层层剥茧抽丝，有利于大家从现象产生好奇，向业务、技术进行探索。</p>
</li>
<li>
<p>一般情况下，整个现象讨论的周期，大概在 1 个月左右，这也是我们通常进行 To B 的市场活动的一个周期。如果你的节奏太长，很容易出现各个合作部门看不到结果，导致项目难以推进的情况。</p>
</li>
<li>
<p>最成功的还是成功效应，通过塑造客户成功，来证明我们产品的成功。</p>
</li>
<li>
<p>看出来了吗？这些话题是要把技术的讨论上升到业务讨论，再从业务讨论上升到社会现象、社会趋势讨论，同时又把业务的讨论下沉到技术红利的讨论。</p>
</li>
<li>
<p>通常在这个阶段，我们可以围绕社会、行业、泛科技这三条线来做物料。</p>
</li>
<li>
<p>一个主流行业现象的讨论周期不宜太长，两周左右即可。在两周的时间里，我们要打出去的物料很多，但是声音一定是围绕前面我们讨论的话题进行的。这里会用到的典型物料包括：一篇主流媒体的趋势稿、2～3 篇观点类稿件、3～4 篇泛科技类讨论稿件、1～2 次联合发声。</p>
</li>
<li>
<p>主流媒体趋势稿的核心是带动整个风向，观点要“新、奇、特”，要有数据论证，要有趋势分析和对未来的洞察，以及专家观点。这篇稿子代表了你接下来要打的整个观点，我们也称之为定调稿。套到教学案例中，我们可以推《这届公司，已经没有会议室了》，把“没有会议室”“不在线下开会”这样简单的洞察，变成一个事件、一个趋势。</p>
</li>
<li>
<p>观点类稿件的目的是以现象带动讨论，会面向财经、产经媒体投放行业趋势，大胆预测，建立推论。它的目的是佐证和辅助前面趋势稿的关键信息。例如，我们可以推《“不开会”背后的云经济学》，通过分析极客时间视频会议版的客户、商业模式、营收构成、在短时间内突然爆发的情况和用户暴涨等现象，得出结论：云技术给他们带来的低成本、高弹性的 IT 能力，是帮助视频会议行业快速发展的重要动力之一。</p>
</li>
<li>
<p>推泛科技类讨论稿件的目的是大众心中建立简单的“业务→技术”初步印象，我们还可以在这一步围绕“企业神话”打造一系列简单的印象认知类短视频。例如，《极客时间视频会议版，百亿美金企业背后不是男人和女人，而是这朵云》《极客时间视频会议版，还有什么黑科技？》，通过刚刚我上面提到的选题方向，快速博眼球、带动认知。</p>
</li>
<li>
<p>通过社会、行业、泛科技三条媒体线进行物料投放，很快就会产生出热度讨论。社会类一般可以选择央媒、地方媒体造势；行业类可以选择一些企业家爱看的渠道，例如财经、财新、中国新闻周刊、正和岛等类的；泛科技类可选的包括虎嗅、36 氪、钛媒体等。</p>
</li>
<li>
<p>营造这样的讨论，是为了围猎 CEO 的关注，启发他们思考。一个好的 CEO 就像鲨鱼，一旦闻到机会的味道，他了解内容的欲望绝对比你想的要更强。</p>
</li>
<li>
<p>在行业现象发生以后，CEO 们的好奇心一定会从“成功的现象”，转到“为什么成功，有什么值得我学习的地方”。所以这个时候，你要牵引舆论进入业务讨论的阶段，趁热打铁，把案例企业迅速成功的方法论收敛到我们要讨论的核心业务上去。这个时间周期通常和行业现象有一周左右的投放重叠，一般来说以两周为一个周期比较好。</p>
</li>
<li>
<p>客户的成功，一定是自身业务的成功，在这里我们一定要克制收敛，只谈技术助力，千万不要越界到我们推动客户成功。</p>
</li>
<li>
<p>对客户终端客户的访谈内容就要围绕着“对方的终端客户获得了什么好处”。</p>
</li>
<li>
<p>准备业内学者、专家的访谈主要是为了通过学者的断言充分肯定业务方向。</p>
</li>
<li>
<p>在技术现象阶段，我们就要不断地从个案的选择，走向行业中的典型场景。</p>
</li>
<li>
<p>那我们想要追求的最优方案，就是在 To B 的行业引发共鸣，在 To T（技术圈）里获得共情，在 TO C（公众圈）里获得共振。只有这样的方案才意味着，我们的整个市场投资，在传播这个板块是比较成功的。 一句话，在 To B 的传播中，我们心里的“内容底料”一定要清晰，然后在面对不同的群体时加以不同的沟通手段。即重复同一个观点，并用不同的材料证明它。当这句话重复 1000 遍的时候，这就是这个行业的真理了。</p>
</li>
<li>
<p>什么叫“营销战役”？其实就是通过一个主题活动（包括但不限于活动、促销、会议等组合拳），聚拢消费人群，把现象变成商机，最终促成销售。</p>
</li>
<li>
<p>如何准备营销战役？ 做任何事情都要先组队，营销战役也一样。由于营销战役要横跨各个部门，组队的过程其实是非常重要的。一个典型的营销战役队形包括：产品团队、PR 传播团队、市场团队、销售团队。</p>
<ol>
<li>产品团队：负责配置产品组合，确定选品，并在产品端建立目标客户画像，与销售部门联动制定销售激励策略，并和市场团队一起出品物料的基础底料。</li>
<li>PR 传播团队：负责不断对外输出声音，制造影响力。</li>
<li>市场团队：负责统筹全局，策划战役（线上、线下）组织区域作战大图，梳理活动内容。</li>
<li>销售团队：负责制定激励策略，客户优惠策略，摸排邀约客户，跟进商机。</li>
</ol>
<p>一场营销战役通常是由市场团队牵头，再由销售团队与市场团队共背 KPI 的模式进行的。</p>
</li>
<li>
<p>在营销战役发起前，我们还是要用我们的 FAQ 大法与销售、产品对个焦，画一张图，建立用户画像和战役的形态、规模、成果等方向性内容。这张大图有十个必备的要素：</p>
<ol>
<li>目标客户所属的行业；</li>
<li>目标客户典型的业务场景；</li>
<li>目标客户的关键人群；</li>
<li>目标客户的痛点；</li>
<li>我们的卖点；</li>
<li>清晰的产品组合；</li>
<li>目标市场的规模、增速、地域；</li>
<li>竞品的策略；</li>
<li>我们在市场中的阶段性里程碑；</li>
<li>战役的资源投入。</li>
</ol>
</li>
<li>
<p>销售团队每天都面临生死，所以他们的惯性很大，会习惯性地去卖自己认为好卖的产品，而对新产品“不感冒”。</p>
</li>
<li>
<p>行业相关的会议，是营销战役极其重要的抓手。</p>
</li>
<li>
<p>我们做一个企业案例的包装重点，并非是选择一个大客户，而是要以“如何构建以这个企业为案例的核心行业影响力”作为我们出发点。我们要实现的其实是通过一个案例，在行业的 CEO 心里留下一粒种子，告诉他们这个产品是最适合该行业的，是不二的选择，是高性价比的选择，是领先的选择，从而形成综合的市场决断力。最后，则是通过营销战役，实现我们“产品→案例→宣传→促销→购买”的闭环。</p>
</li>
<li>
<p>一切与客户接触的东西，都是品牌的一部分。</p>
</li>
<li>
<p>帮助你了解该如何与设计师团队一起，共同让我们的客户一眼从茫茫人海中，认出你所在的公司是一家“不一样的公司”。</p>
</li>
<li>
<p>一个让人印象深刻的品牌设计语言，一定是有代表性的。再加上今天 To B 的品牌设计语言不宜太复杂的需求，在构建品牌设计语言时，我们有必要注意一下它有没有符合简单、对称、有规律感这三个原则。</p>
</li>
<li>
<p>如果你有兴趣，可以自学一套摄影课程**《美国纽约摄影学院教材》**，这是我至今为止看到的最好的摄影类书籍，从最基础的摄影原理到高阶的拍摄技巧，这本书里都有答案。</p>
</li>
<li>
<p>对于很多 To B 企业来说，设计美学的价值往往还没有被正确的认知。事实上，一个好的品牌美学设计，能够帮助用户快速识别产品，同时提升产品本身的品质感。希望你能够在自己的工作场景中，多多注意常见的几种设计语言的构建，以及设计语言通常要规范的范围，最终提升公司与产品的颜值，让产品变得更有质感。</p>
</li>
<li>
<p>企业会不会为情怀感动、影响，进而对产品品牌产生好感？会的，但这绝不是重点。这也是很多市场同学困惑的地方，因为广告投了很多，但是客户企业就是无动于衷。</p>
</li>
<li>
<p><strong>一般来说，传统企业更在乎“降本”，数字化的企业更在乎“提效”。</strong></p>
</li>
<li>
<p>传统企业理解的降本增效，就是 IT 成本的降低。这个 IT 成本包括了：机房的折旧成本、运维成本、网络带宽成本、人员成本、应用开发成本、部署成本等传统成本。对于非互联网公司类型的目标客户来说，讲好一个降本的故事，是我们工作的第一步。在过去，你很难想象一个制造业企业会去重视 IT 提效，所以对于传统企业来说，“降本”是一个很好的切入口。</p>
</li>
<li>
<p>作为一个市场人，我们应该清晰地记得，每一个行业里的每一个企业的数字化转型路径都是不同的。在这个不同的转型过程中，我们应该意识到，大部分人的数字化转型首先是业务需求驱动的，技术变革型的数字化转型客户是可遇不可求的。</p>
</li>
<li>
<p>对于数字化初期的企业，我们讲增效故事得围绕三件事来做：数字化转型往往会出现在新业务的诞生阶段，而非旧业务的成熟期，然而新业务的爆炸速度往往又非常之快，IT 规划的速度往往是滞后的。企业要数字化转型首先要有端，即智能手表、app、小程序等实际产品。企业 IT 部门越是提前做准备，越能支撑海量数字化交付，越能够成为数字化时代的主力军。</p>
</li>
<li>
<p>我们面向市场的故事，可以抓住三个痛点：第一个痛点是海量的存储规模，第二个痛点是各种数据源的混合接入，第三个点是计算力需要更强，这几乎是每一个数字化企业在向大数据迁移中遇到的痛点。</p>
</li>
<li>
<p>数字化转型的本质，事实上在历史上曾经多次发生过，就像电力取代蒸汽机，蒸汽机取代人力和畜力一样，技术的爆炸给商业模式带来了完全意义上的更新。</p>
</li>
<li>
<p>这其实是因为 To B 的市场是一个更为注重商誉的生意。在商业市场上，信任是极其重要的，但是信任也是极其脆弱的。很多市场的同学们会无意识地就碰到了这根线，最后却导致活儿干了很多，产品本身、公司本身却因此受到了损失的情况，这真的是得不偿失了。</p>
</li>
<li>
<p>我要讲的第一个禁忌点，是不能触动商业活动的基石——信任，也就是说一切有关产品能力的宣传，不能是盲目地夸大。首先，我们要明白，<strong>To B 的生意本质上是一门信任的生意</strong>，这句话我今天会多次重复到，也希望你能够真的记在心中。 宣传上的缺陷，与产品能力上的缺陷和工程交付上的缺陷本质上是一样的。市场上的激进宣传，对于能力还不足的产品来说，无疑是灭顶之灾。 我们的市场手段一定是帮助产品、技术更好地被人理解、被人看见，而不是盲目的夸大。我们要有一分，说一分，我们真正的本事体现在如何把这“一分”讲出花来，这才是我们的功底。</p>
</li>
<li>
<p><strong>谁是我们的敌人，谁是我们的朋友？</strong></p>
</li>
<li>
<p>在很多时候，这些利益生态的无形阻力，会导致我们失去潜在客户，而且这种“失去”是“不可见的”。</p>
</li>
<li>
<p>因为 To B 领域有一个和其他领域不同的显著特征，那就是 To B 领域中，围绕一个产品 / 技术，是有一个完整的利益体系的。例如 Oracle，就是通过培训和认证体系，在中国的企业里有一大批的使用者，这些用户最终又成长为了决策者。 所以，如果你今天说你要“替代 Oracle”，显然是让他们自我革命，这显然是不可能的。</p>
</li>
<li>
<p>第五个禁忌点，就是在 To B 的市场内容传播中，没有观点。这里的观点，是指的我（厂商）认为什么样的方法，一定能解决什么样的问题。在我们的很多传播中，往往有论述，没有观点。论述是指的这个产品好，就是说好这件事情本身，而观点是你除了说好，还要告诉大家背后的那个“why”。没有观点，就意味着我们很难引发关注；没有关注，事实上就意味着我们的传播是失败的。</p>
</li>
<li>
<p>最后，我再补充一些无论是 To B 还是 To C 都需要注意的常规操作，比如：拒绝写繁体字；遇到地图的时候，要反复确认南海诸岛九段线；遇到港澳台的时候，一定要有地区二字等。</p>
</li>
<li>
<p>我们一定要清楚自己的渠道打的是技术圈、企业家圈、泛科技圈，还是大众猎奇圈，不一样的圈子对应着我们应该提供什么样的技术和产品的“弹药”。只有人群、渠道、内容三者合一，才能最终实现增量效应，保证我们的市场内容得到精准有力的传播。</p>
</li>
<li>
<p>漂亮的业务营收背后，优秀的产品和服务是功不可没的——高质量的市场宣传是强助攻，而强悍的销售团队更是值得被尊重。能成为销售的人往往目标感极强，他们所做的一切都是为了能在尽可能短的时间内拿下客户，收到回款。</p>
</li>
<li>
<p>市场和销售之间，最容易出现分歧的一种情况就是争执某个线索到底算有效还是无效的？一个企业注册用户，有完整的联系方式和企业名称，外呼后可接通，但对方希望得到免费的产品服务，显然和公司只提供有偿的产品是相悖的。那么这个到底算不算有效线索？</p>
</li>
<li>
<p>都是为了吸引匹配公司产品业务的潜在客户，并通过销售的商务谈判，最终把我们的产品或者服务以合适的价格售卖给客户。</p>
</li>
<li>
<p>和销售用同一套语言对话。</p>
</li>
<li>
<p>我们要站在客户和公司业务目标的角度去分析和解决问题。 各个部门之间达成共识，有着很好的合作和协同。 利用新技术和新方法解决流程和数据上的问题。</p>
</li>
<li>
<p>我作为一个团队的领导，宁可牺牲内部对市场营销部门的业绩考核，转而鼓励团队更多地站在客户的角度思考问题，真正地从**“如何给客户带来价值”**的角度去规划和跟进。</p>
</li>
<li>
<p>整体营销的四个组成部分是整合营销、内部营销、关系营销和社会责任营销。整体营销是一种营销方法，它把企业视为一个整体，与所有人相关，为企业内部每个活动提供共同的目标和目的。</p>
</li>
<li>
<p>首先要以**“帮助客户成功”**为核心原则，其他的尽可能地去调整。</p>
</li>
<li>
<p>市场营销绝不仅仅只是利益的谋取手段，它还是价值的表达方式。市场营销既需要我们在艺术层面上不断吸收新的知识，也需要在科学方法上持续学习。</p>
</li>
<li>
<p>在 To B 市场营销里，有一个很重要的内容，是参加、组织各种各样的会议。在 To B 市场营销者的桌子上，一定要有一张“会议月历”，行业里的会、区域里的会、各类垂直的会。占领这些渠道本身，可以让心智更有效地透传出去。这就是“场”上我们要去做的事情。当然会议的主题、会议的邀约也有很多的技巧，这个我们要在后续的课程中具体讲解了。</p>
</li>
<li>
<p><strong>一个公司中，任何一个部门存在，都可以用四个字总结价值——解决问题。To B 的市场团队也不例外，我们要解决的核心价值在不同的阶段是不同的。</strong></p>
</li>
<li>
<p>在这个世界上，任何的事情都是因“人”成事的。找到合适的人，做合适的事情，是任何一个行业不变的公理。</p>
</li>
<li>
<p>创造更有价值和意义的未来。</p>
</li>
<li>
<p>你能够具备技术感，能够熟练地将市场和技术相结合。</p>
</li>
<li>
<p>你能保有一颗好奇心，像初生的婴儿眺望第一眼世界，一切都充满了光芒。</p>
</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507182135129.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-07-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-07-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 17 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-07-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、脱脂牛奶&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：大碗厨房：豆豉鳗鱼炒油麦菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507181659878.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;没什么好说的，只有坚持才是唯一正确的道路。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、脱脂牛奶</li>
<li>午餐：公司食堂</li>
<li>晚餐：大碗厨房：豆豉鳗鱼炒油麦菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507181659878.png"></p>
<h2 id="总结">总结</h2>
<p>没什么好说的，只有坚持才是唯一正确的道路。</p>
]]></content:encoded>
    </item>
    <item>
      <title>AI真的可以取代程序员吗？</title>
      <link>https://dstweihao.cn/posts/ai/ai%E7%9C%9F%E7%9A%84%E5%8F%AF%E4%BB%A5%E5%8F%96%E4%BB%A3%E7%A8%8B%E5%BA%8F%E5%91%98%E5%90%97/</link>
      <pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/ai/ai%E7%9C%9F%E7%9A%84%E5%8F%AF%E4%BB%A5%E5%8F%96%E4%BB%A3%E7%A8%8B%E5%BA%8F%E5%91%98%E5%90%97/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950721.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;说到 AI 是否会取代程序员，我的答案是会，但又不完全会。&lt;/p&gt;
&lt;p&gt;在我看来，所谓的取代，其实是要求程序员提升自身能力，向更高层次发展，将比如某个通用函数的封装、代码漏洞检查这类已熟练掌握的工作交给 AI，自己则转变为发布和验收的角色，也就是按照自己的想法下达任务，然后验收任务，形成一个闭环。&lt;/p&gt;
&lt;p&gt;AI 在实际应用中确实面临一些问题，以下是我想到的几点：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;怎样确保 AI 能完全依照你的想法，实现你想要的效果？&lt;/li&gt;
&lt;li&gt;如何判断 AI 生成的内容是否正确？&lt;/li&gt;
&lt;li&gt;何时该使用 AI，何时不该用？&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;就第一个问题而言，未来很可能会演变成面向 AI 编程。你看，现在都已经有 “Prompt 工程师” 这个职位了，他们的职责就是做好与 AI 的沟通工作，思考如何用精准的描述告诉 AI 该做什么。&lt;/p&gt;
&lt;p&gt;回顾人与计算器的交互历史，从最初使用 0 和 1 二进制进行沟通，到后来发展出 C/C++/Java 等高级语言，这些都是对 0 和 1 的上层封装。如今与 AI 交互也是同理，只不过现在我们是用现实中的自然语言与它交流。&lt;/p&gt;
&lt;p&gt;至于第二个问题，关键在于你自己得懂，也就是说不可能完全依赖 AI 而不学习新知识。不然，你怎么判断 AI 生成的内容是否正确呢？&lt;/p&gt;
&lt;p&gt;对于第三个问题，何时使用 AI 就需要进行评估判断了。有些事情看似用 AI 能很快完成，但实际使用时，因输入指令不够具体准确，产出结果可能天差地别，常需多次调整才能满意，自己动手做或许更快，还免得在与 AI 的磨合中浪费时间、徒增郁闷。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950372.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;除此之外，很多人都提到，既然 AI 能生成一整个项目的代码，那还要程序员干什么呢？&lt;/p&gt;
&lt;p&gt;其实，AI 生成的只是项目第一版需求的代码，可项目又不是一锤子买卖，后续还需要不断迭代和更新。这时候该怎么办？全都交给 AI 处理吗？&lt;/p&gt;
&lt;p&gt;理论上似乎是可行的，但就我使用 dev0、豆包和阿里云 AI 等工具开发网页的体验来看，效率实在不高。每次修改一点点内容，AI 都要重新生成全部代码，这个过程极其漫长，项目越大，等待的时间就越久。而且，如果输入的指令不够详细具体，得到的结果相差甚远，还得不断调整到满意为止。有这时间，我自己早就把代码改好了。所以在这种情况下，除非你的 prompt 能力特别强，否则真的是对 AI 又爱又恨。不过话说回来，人与人之间沟通都可能出现信息失真，更何况是与机器沟通呢？面对全是 AI 生成的代码，你真的有足够的信心直接部署到生产环境吗？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950721.png"></p>
<p>说到 AI 是否会取代程序员，我的答案是会，但又不完全会。</p>
<p>在我看来，所谓的取代，其实是要求程序员提升自身能力，向更高层次发展，将比如某个通用函数的封装、代码漏洞检查这类已熟练掌握的工作交给 AI，自己则转变为发布和验收的角色，也就是按照自己的想法下达任务，然后验收任务，形成一个闭环。</p>
<p>AI 在实际应用中确实面临一些问题，以下是我想到的几点：</p>
<blockquote>
<ol>
<li>怎样确保 AI 能完全依照你的想法，实现你想要的效果？</li>
<li>如何判断 AI 生成的内容是否正确？</li>
<li>何时该使用 AI，何时不该用？</li>
</ol></blockquote>
<p>就第一个问题而言，未来很可能会演变成面向 AI 编程。你看，现在都已经有 “Prompt 工程师” 这个职位了，他们的职责就是做好与 AI 的沟通工作，思考如何用精准的描述告诉 AI 该做什么。</p>
<p>回顾人与计算器的交互历史，从最初使用 0 和 1 二进制进行沟通，到后来发展出 C/C++/Java 等高级语言，这些都是对 0 和 1 的上层封装。如今与 AI 交互也是同理，只不过现在我们是用现实中的自然语言与它交流。</p>
<p>至于第二个问题，关键在于你自己得懂，也就是说不可能完全依赖 AI 而不学习新知识。不然，你怎么判断 AI 生成的内容是否正确呢？</p>
<p>对于第三个问题，何时使用 AI 就需要进行评估判断了。有些事情看似用 AI 能很快完成，但实际使用时，因输入指令不够具体准确，产出结果可能天差地别，常需多次调整才能满意，自己动手做或许更快，还免得在与 AI 的磨合中浪费时间、徒增郁闷。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950372.png"></p>
<p>除此之外，很多人都提到，既然 AI 能生成一整个项目的代码，那还要程序员干什么呢？</p>
<p>其实，AI 生成的只是项目第一版需求的代码，可项目又不是一锤子买卖，后续还需要不断迭代和更新。这时候该怎么办？全都交给 AI 处理吗？</p>
<p>理论上似乎是可行的，但就我使用 dev0、豆包和阿里云 AI 等工具开发网页的体验来看，效率实在不高。每次修改一点点内容，AI 都要重新生成全部代码，这个过程极其漫长，项目越大，等待的时间就越久。而且，如果输入的指令不够详细具体，得到的结果相差甚远，还得不断调整到满意为止。有这时间，我自己早就把代码改好了。所以在这种情况下，除非你的 prompt 能力特别强，否则真的是对 AI 又爱又恨。不过话说回来，人与人之间沟通都可能出现信息失真，更何况是与机器沟通呢？面对全是 AI 生成的代码，你真的有足够的信心直接部署到生产环境吗？</p>
<p>要是让 AI 生成第一版需求代码，后续的迭代和维护交给程序员呢？</p>
<p>这同样存在问题，因为 AI 生成的代码大概率不符合团队的代码规范，程序员得花时间去熟悉。而且团队可能已经有封装好的组件库，AI 生成的代码却无法复用这些组件，而是自行实现相同功能，这在迭代和维护时反而重复造轮子了。只是一个项目还好，要是所有项目都是如此，那组件库就形同虚设了。就像 A、B、C 三个由 AI 生成的项目，在迭代过程中又得抽取复用的组件和工具类，绕了一圈又回到组件库这里，仿佛回到了原点。</p>
<p>所以现阶段，无论是想完全依靠 AI 生成项目代码并直接发布到生产环境，还是仅让 AI 生成第一版代码，后续由程序员接手迭代和维护，都不太现实。</p>
<p>不过，现阶段 AI 在演示项目、UI 原型设计方面的表现还是不错的。比如我要实现一个大屏，把需求整理好后让 AI 生成效果图，虽仍需调整，但可作为参考，提高了工作效率。</p>
<blockquote>
<p>智慧工厂大屏需求：</p>
<ol>
<li>实时数据可视化：设备状态、产能、良率、能耗等核心指标实时展示，10 秒刷新</li>
<li>异常预警：设备故障、指标超标等异常即时报警</li>
<li>灵活查看：支持按车间 / 产线切换视图，适配大屏显示</li>
</ol></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162001847.png"></p>
<p>而且，AI 还降低了学习某种技术的门槛。以前学习知识点遇到问题，在网上搜了又搜，到处请教，都不一定能得到有效的解释。现在不同了，虽说不能保证 AI 给出的答案一定准确，但你可以要求它提供答案的依据，比如它是从哪篇文章总结出这个答案的，这样你只需进一步甄别就行。在这种情况下，只要你想学，学习任何技术都不是难事。</p>
<p>除了在项目开发和学习方面，AI 还有一些有趣的设想。在 AI 智能体出现之前，我就琢磨过，以后能不能有个 AI 智能体当我的 “替身”。把我所有的信息都喂给它，让它替我完成一些工作，比如写文章。我自己写文章时，对话题的看法、行文风格是怎样的，就希望 AI 智能体写出来的文章也符合这个风格。等把这个 AI 智能体训练到一定程度，说不定都能替我去公司上班。</p>
<p>但这个想法存在不少问题，目前能想到的就有两个。一个是责任承担的问题，这和当下的自动驾驶类似，如果出了事，责任该由谁承担呢？这个责任归属不明确，就阻碍了这种设想的推进；二是温度的问题，人是有温度的，可 AI 有吗？现实中的很多事，对错并非像 1 + 1 = 2 那么绝对，对不一定全对，错也不一定全错，遇到这种情况，AI 真的能解决吗？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162019293.png"></p>
<p>所以，综合 AI 在实际应用中的各种表现，AI 真的可以取代程序员吗？有这种想法固然很好，但<strong>想法需要生长的土壤，任何激进的想法，没有因地制宜，只能是失败的。</strong></p>
<p>事实上，并不是 AI 取代了程序员，而是掌握了 AI 技能或者更有能力的人，淘汰了其他能力差的程序员。因此，在当前形势下，我们该如何增强自己的核心竞争力呢？</p>
<p>我认为，一方面，要做到知己知彼，既然想用好 AI，就得学习 AI 相关知识。另一方面，借助 AI 快速掌握更多技能，最重要的是<strong>提升解决问题的能力。</strong></p>
<p>这里我说的是技能，而非单纯的技术。因为**技术好固然重要，但如果不能为业务增长提供帮助，那技术再好也没太大价值，现实就是如此，现在都在说降本增效，公司只想看到盈利。**所以追求技术无可厚非，但最好是在清楚认识到这一点的前提下进行。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162019261.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《神话》观后感：9 分的惊艳，半分的缺憾</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E7%A5%9E%E8%AF%9D%E8%A7%82%E5%90%8E%E6%84%9F9-%E5%88%86%E7%9A%84%E6%83%8A%E8%89%B3%E5%8D%8A%E5%88%86%E7%9A%84%E7%BC%BA%E6%86%BE/</link>
      <pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E7%A5%9E%E8%AF%9D%E8%A7%82%E5%90%8E%E6%84%9F9-%E5%88%86%E7%9A%84%E6%83%8A%E8%89%B3%E5%8D%8A%E5%88%86%E7%9A%84%E7%BC%BA%E6%86%BE/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;别人的东西就是别人的，不要把别人的东西拿回来放在自己的博物馆。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;影片中，成龙说的这句话让人不由得为之一振。&lt;/p&gt;
&lt;p&gt;在 2005 年，有两首歌让我印象深刻，一首是周杰伦的《夜曲》，另一首就是成龙和金喜善演唱的《美丽的神话》。&lt;/p&gt;
&lt;p&gt;我知道《神话》这部电影，但是，一直都没有看过。&lt;/p&gt;
&lt;p&gt;有些电影确实要讲缘分，有的是你忘记了，有的是你当时实在看不下去，等过了好久，突然有一天又看得下去了。&lt;/p&gt;
&lt;p&gt;遇到这种情况，如果是优秀的电影作品，我通常会感叹，当时应该再坚持一下，好电影的开场不一定就引人入胜，有的甚至会很无聊，只有看到最后，才知道电影是好是坏。&lt;/p&gt;
&lt;p&gt;《神话》这部电影纯粹是我忘记了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030133899.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;剧情概要&#34;&gt;剧情概要&lt;/h2&gt;
&lt;p&gt;影片一开场，成龙饰演的秦国大将蒙毅，护送金喜善饰演的朝鲜公主玉漱入秦为妃。&lt;/p&gt;
&lt;p&gt;途中遭遇从朝鲜追来的崔将军拦亲，因为他对玉漱倾心已久，表示不同意这门亲事，但是玉漱为了国家以及百姓，只能选择大义。&lt;/p&gt;
&lt;p&gt;在后面的打斗中，崔将军被蒙毅误杀，蒙毅为救玉漱，没有迟疑片刻，和玉漱一起坠崖，在深水中、山洞中、长城边上，两人都有了很多交集。&lt;/p&gt;
&lt;p&gt;经历了这么多生死瞬间，两人之间也产生了很微妙的感情。&lt;/p&gt;
&lt;p&gt;期间，镜头穿梭到现代，蒙毅的转世（姑且这样称呼吧）杰克是一名考古学家（不管成龙饰演的是什么角色，你只要默认带上“会功夫的”前缀即可）。&lt;/p&gt;
&lt;p&gt;最近一直在做梦，梦到自己是秦国的大将，然后遇到一个非常美丽的女子。&lt;/p&gt;
&lt;p&gt;与此同时，杰克的好友，由梁家辉饰演的威廉，是一名热心钻研超自然能量的科学家。&lt;/p&gt;
&lt;p&gt;因为怀疑陨石与悬浮现象和杰克的梦有关，两人便从帝沙一路追寻至瀑布下的悬浮天宫。&lt;/p&gt;
&lt;p&gt;古代和现代的画面不断交织，谜底开始慢慢浮出水面，原来这竟是一场跨越几千年的爱恋。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030123413.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;那一幅画&#34;&gt;那一幅画&lt;/h2&gt;
&lt;p&gt;在帝沙的圣殿中，悬于半空的石棺，因为威廉撬下了墙上的陨石，石棺失去平衡摔落下来。&lt;/p&gt;
&lt;p&gt;杰克恰好躲过，随即看到石棺盖下的东西，瞳孔顿时放大。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508031148749.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;顺着镜头转动，出现在眼前的就是玉漱公主的画像，那一瞬间，我真的是惊到了。&lt;/p&gt;
&lt;p&gt;第一次深刻领略到了金喜善的美。&lt;/p&gt;
&lt;p&gt;一直以来，我虽然知道金喜善号称“韩国第一美女”，但是，并不觉得有多特别。电影一出场，出嫁的扮相虽然很美，但也就这样了吧。&lt;/p&gt;
&lt;p&gt;遥想十多年前，在胡歌、白冰主演的电视剧《神话》中，白冰饰演的玉漱公主，号称长的和金喜善一模一样，在当年觉得白冰很漂亮，那金喜善也很漂亮，仅此而已。&lt;/p&gt;
&lt;p&gt;在看这部电影之前，我也看过很多《美丽的神话》这首歌的 MV，多少都有电影中的画面。&lt;/p&gt;
&lt;p&gt;但是，不知道为什么，就是那一瞬间，get 到了金喜善的美，可能是出现的方式太出其不意了。&lt;/p&gt;
&lt;p&gt;眼眸含情，温婉动人。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508020004365.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;历史上的蒙毅&#34;&gt;历史上的蒙毅&lt;/h2&gt;
&lt;p&gt;为了研究历史上的蒙毅到底是什么样子的，我硬是先把史记中的《蒙恬列传》看了一遍。&lt;/p&gt;
&lt;p&gt;蒙氏祖孙三代，都是秦国大将，祖父蒙骜，父亲蒙武，孙子蒙恬，南征北战，为秦始皇统一六国，立下了汗马功劳。&lt;/p&gt;
&lt;p&gt;蒙毅是蒙恬的弟弟，秦始皇感念蒙氏三代人的忠义，爱屋及乌，于是招他在朝中做事，平时同行同止，出谋划策，被誉为忠信大臣。&lt;/p&gt;
&lt;p&gt;从这里可以看出来，历史上的蒙毅是文臣谋士，而影片中的蒙毅是一名大将，人物原型反而更像是蒙恬。&lt;/p&gt;
&lt;p&gt;在看《蒙恬列传》的过程中，书中有一个地方让我挺有感触的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;高有大罪，秦王令蒙毅法治之。毅不敢阿法，当高罪死，除其宦籍。帝以高之敦于事也，赦之，复其官爵。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;赵高犯了大罪，秦始皇让蒙毅依法处置，蒙毅不敢徇私枉法，给赵高定了死罪，除去官籍，但是，秦始皇突然又觉得赵高办事能干，死了怪可惜的，就又特赦了赵高，还恢复了他的官职。&lt;/p&gt;
&lt;p&gt;这不扯淡嘛，朝令夕改，这就害了蒙毅了，让赵高这个心胸狭窄之辈怀恨在心。后面一直针对蒙氏家族，赶尽杀绝。&lt;/p&gt;
&lt;p&gt;这个事情，我就感觉有猫腻。&lt;/p&gt;
&lt;p&gt;因为赵高是胡亥的人，蒙氏家族站队公子扶苏，秦始皇是不是故意挑拨这两拨势力，借机打压一下蒙氏家族，毕竟，蒙氏家族权倾朝野，功高震主，不可不防啊。&lt;/p&gt;
&lt;p&gt;最后，秦始皇在第五次东巡途中患病，行至沙丘时病逝，赵高联合李斯，伪造遗诏，立胡亥为太子，并继承皇位，赐死公子扶苏、蒙恬、蒙毅等人。&lt;/p&gt;
&lt;p&gt;蒙恬不忍有辱祖上贤名和先帝厚爱，即便率领三十万大军，也没有反叛之心，于是吞毒药自杀了。&lt;/p&gt;
&lt;p&gt;蒙毅在临死之前，对着胡亥，慷慨陈词了一番：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;昔者秦穆公杀三良而死，罪百里奚而非其罪也，故立号曰‘缪’。昭襄王杀武安君白起。楚平王杀伍奢。吴王夫差杀伍子胥。此四君者，皆为大失，而天下非之，以其君为不明，以是籍于诸侯。故曰：‘用道治者不杀无罪，而罚不加于无辜。’唯大夫留心！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这段话的意思是，秦穆公、秦昭襄王、楚平王和吴王夫差因乱杀能臣，在诸侯国中声名狼藉，所以应该要用道义治国，而不是乱杀无辜。&lt;/p&gt;
&lt;p&gt;胡亥当然没听，再后面的事情，大家都知道了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022222904.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;电影实拍&#34;&gt;电影实拍&lt;/h2&gt;
&lt;p&gt;电影实拍一直以来都是值得肯定的，在成龙的电影中，好像都默认是实拍了。&lt;/p&gt;
&lt;p&gt;在这部电影中，有几个场景，虽然对比成龙以往的电影作品（比如《我是谁》中，从21层高的鹿特丹大楼跳下），显得很微不足道。&lt;/p&gt;
&lt;p&gt;但看到的时候，还是很让人惊喜的。可能是因为现在 2025 年了，电影实拍越来越少了的缘故。&lt;/p&gt;
&lt;p&gt;第一个场景，是悬崖上着火的马车，金喜善是真的在上面，整个马车都吊着威亚，大太阳、高温、浓烟扑面，那感觉一定很不好受，这个实拍说实话挺不容易的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022210492.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;第二个场景，蒙毅抱着玉漱坠崖那一场戏，也是实拍，更搞的是，为了拍摄真实的坠崖效果，导演吊着威亚，也跟着一起坠下崖去。&lt;/p&gt;
&lt;p&gt;成龙对此是司空见惯了，可对于金喜善、导演唐季礼那是很敬业了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：不过我才发现唐季礼是武行出身，那变成只有金喜善一个人受伤的世界了哈哈哈。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022207608.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<blockquote>
<p>别人的东西就是别人的，不要把别人的东西拿回来放在自己的博物馆。</p></blockquote>
<p>影片中，成龙说的这句话让人不由得为之一振。</p>
<p>在 2005 年，有两首歌让我印象深刻，一首是周杰伦的《夜曲》，另一首就是成龙和金喜善演唱的《美丽的神话》。</p>
<p>我知道《神话》这部电影，但是，一直都没有看过。</p>
<p>有些电影确实要讲缘分，有的是你忘记了，有的是你当时实在看不下去，等过了好久，突然有一天又看得下去了。</p>
<p>遇到这种情况，如果是优秀的电影作品，我通常会感叹，当时应该再坚持一下，好电影的开场不一定就引人入胜，有的甚至会很无聊，只有看到最后，才知道电影是好是坏。</p>
<p>《神话》这部电影纯粹是我忘记了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030133899.png"></p>
<h2 id="剧情概要">剧情概要</h2>
<p>影片一开场，成龙饰演的秦国大将蒙毅，护送金喜善饰演的朝鲜公主玉漱入秦为妃。</p>
<p>途中遭遇从朝鲜追来的崔将军拦亲，因为他对玉漱倾心已久，表示不同意这门亲事，但是玉漱为了国家以及百姓，只能选择大义。</p>
<p>在后面的打斗中，崔将军被蒙毅误杀，蒙毅为救玉漱，没有迟疑片刻，和玉漱一起坠崖，在深水中、山洞中、长城边上，两人都有了很多交集。</p>
<p>经历了这么多生死瞬间，两人之间也产生了很微妙的感情。</p>
<p>期间，镜头穿梭到现代，蒙毅的转世（姑且这样称呼吧）杰克是一名考古学家（不管成龙饰演的是什么角色，你只要默认带上“会功夫的”前缀即可）。</p>
<p>最近一直在做梦，梦到自己是秦国的大将，然后遇到一个非常美丽的女子。</p>
<p>与此同时，杰克的好友，由梁家辉饰演的威廉，是一名热心钻研超自然能量的科学家。</p>
<p>因为怀疑陨石与悬浮现象和杰克的梦有关，两人便从帝沙一路追寻至瀑布下的悬浮天宫。</p>
<p>古代和现代的画面不断交织，谜底开始慢慢浮出水面，原来这竟是一场跨越几千年的爱恋。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030123413.png"></p>
<h2 id="那一幅画">那一幅画</h2>
<p>在帝沙的圣殿中，悬于半空的石棺，因为威廉撬下了墙上的陨石，石棺失去平衡摔落下来。</p>
<p>杰克恰好躲过，随即看到石棺盖下的东西，瞳孔顿时放大。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508031148749.png"></p>
<p>顺着镜头转动，出现在眼前的就是玉漱公主的画像，那一瞬间，我真的是惊到了。</p>
<p>第一次深刻领略到了金喜善的美。</p>
<p>一直以来，我虽然知道金喜善号称“韩国第一美女”，但是，并不觉得有多特别。电影一出场，出嫁的扮相虽然很美，但也就这样了吧。</p>
<p>遥想十多年前，在胡歌、白冰主演的电视剧《神话》中，白冰饰演的玉漱公主，号称长的和金喜善一模一样，在当年觉得白冰很漂亮，那金喜善也很漂亮，仅此而已。</p>
<p>在看这部电影之前，我也看过很多《美丽的神话》这首歌的 MV，多少都有电影中的画面。</p>
<p>但是，不知道为什么，就是那一瞬间，get 到了金喜善的美，可能是出现的方式太出其不意了。</p>
<p>眼眸含情，温婉动人。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508020004365.png"></p>
<h2 id="历史上的蒙毅">历史上的蒙毅</h2>
<p>为了研究历史上的蒙毅到底是什么样子的，我硬是先把史记中的《蒙恬列传》看了一遍。</p>
<p>蒙氏祖孙三代，都是秦国大将，祖父蒙骜，父亲蒙武，孙子蒙恬，南征北战，为秦始皇统一六国，立下了汗马功劳。</p>
<p>蒙毅是蒙恬的弟弟，秦始皇感念蒙氏三代人的忠义，爱屋及乌，于是招他在朝中做事，平时同行同止，出谋划策，被誉为忠信大臣。</p>
<p>从这里可以看出来，历史上的蒙毅是文臣谋士，而影片中的蒙毅是一名大将，人物原型反而更像是蒙恬。</p>
<p>在看《蒙恬列传》的过程中，书中有一个地方让我挺有感触的。</p>
<blockquote>
<p>高有大罪，秦王令蒙毅法治之。毅不敢阿法，当高罪死，除其宦籍。帝以高之敦于事也，赦之，复其官爵。</p></blockquote>
<p>赵高犯了大罪，秦始皇让蒙毅依法处置，蒙毅不敢徇私枉法，给赵高定了死罪，除去官籍，但是，秦始皇突然又觉得赵高办事能干，死了怪可惜的，就又特赦了赵高，还恢复了他的官职。</p>
<p>这不扯淡嘛，朝令夕改，这就害了蒙毅了，让赵高这个心胸狭窄之辈怀恨在心。后面一直针对蒙氏家族，赶尽杀绝。</p>
<p>这个事情，我就感觉有猫腻。</p>
<p>因为赵高是胡亥的人，蒙氏家族站队公子扶苏，秦始皇是不是故意挑拨这两拨势力，借机打压一下蒙氏家族，毕竟，蒙氏家族权倾朝野，功高震主，不可不防啊。</p>
<p>最后，秦始皇在第五次东巡途中患病，行至沙丘时病逝，赵高联合李斯，伪造遗诏，立胡亥为太子，并继承皇位，赐死公子扶苏、蒙恬、蒙毅等人。</p>
<p>蒙恬不忍有辱祖上贤名和先帝厚爱，即便率领三十万大军，也没有反叛之心，于是吞毒药自杀了。</p>
<p>蒙毅在临死之前，对着胡亥，慷慨陈词了一番：</p>
<blockquote>
<p>昔者秦穆公杀三良而死，罪百里奚而非其罪也，故立号曰‘缪’。昭襄王杀武安君白起。楚平王杀伍奢。吴王夫差杀伍子胥。此四君者，皆为大失，而天下非之，以其君为不明，以是籍于诸侯。故曰：‘用道治者不杀无罪，而罚不加于无辜。’唯大夫留心！</p></blockquote>
<p>这段话的意思是，秦穆公、秦昭襄王、楚平王和吴王夫差因乱杀能臣，在诸侯国中声名狼藉，所以应该要用道义治国，而不是乱杀无辜。</p>
<p>胡亥当然没听，再后面的事情，大家都知道了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022222904.png"></p>
<h2 id="电影实拍">电影实拍</h2>
<p>电影实拍一直以来都是值得肯定的，在成龙的电影中，好像都默认是实拍了。</p>
<p>在这部电影中，有几个场景，虽然对比成龙以往的电影作品（比如《我是谁》中，从21层高的鹿特丹大楼跳下），显得很微不足道。</p>
<p>但看到的时候，还是很让人惊喜的。可能是因为现在 2025 年了，电影实拍越来越少了的缘故。</p>
<p>第一个场景，是悬崖上着火的马车，金喜善是真的在上面，整个马车都吊着威亚，大太阳、高温、浓烟扑面，那感觉一定很不好受，这个实拍说实话挺不容易的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022210492.png"></p>
<p>第二个场景，蒙毅抱着玉漱坠崖那一场戏，也是实拍，更搞的是，为了拍摄真实的坠崖效果，导演吊着威亚，也跟着一起坠下崖去。</p>
<p>成龙对此是司空见惯了，可对于金喜善、导演唐季礼那是很敬业了。</p>
<blockquote>
<p>注：不过我才发现唐季礼是武行出身，那变成只有金喜善一个人受伤的世界了哈哈哈。</p></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022207608.png"></p>
<p>第三个场景，是山洞里的那一场戏，为了达到真实的效果，真的是在零下20度的环境里拍摄的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022214889.png"></p>
<h2 id="音乐方面">音乐方面</h2>
<p>《美丽的神话》这首歌给这部电影增色太多了，给我的感觉不亚于《My Heart Will Go On》对于《泰坦尼克号》的作用。</p>
<p>《美丽的神话》有两个版本，一个是成龙和金喜善合唱的，另一个是孙楠和韩红演唱的。</p>
<p>很久以前，就听到有人评价，虽然孙楠和韩红演唱的更具情感的饱满感和富有技巧性，但是，这一切都是演绎出来的，相比成龙和金喜善合唱的版本，少了真情实意，也就不够感人，我对此无比认同。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508031400340.png"></p>
<h2 id="不合理之处一玉漱的笑很危险">不合理之处一：玉漱的笑很危险</h2>
<p>秦始皇本来答应给帝沙王子，任选一样物品，没想到帝沙王子想要秦始皇最爱的妃子玉漱。</p>
<p>秦始皇当然不同意了，只答应给一幅画像。</p>
<p>画师很苦恼，因为玉漱入宫以来，一直都没有笑过，玉漱不笑他不知道怎么下笔。</p>
<p>这时，蒙毅走进来了，玉漱终于笑了。</p>
<p>在我看来这一段很不符合常理，首先，正如上文所言，玉漱是秦始皇最爱的妃子，那么“自从入宫以来都没有笑过”这个事情他不可能不知道。</p>
<p>而且，蒙毅你一走进来，她就笑了，不知道有多少耳目，多少闲言碎语，传到秦始皇的耳中。</p>
<p>难道不会问一下为什么这幅画玉漱公主笑得那么开心吗？</p>
<p>然后怎么回答，回答是因为蒙毅将军来了是吗？</p>
<p>再者，你蒙毅将军是外将，有什么资格独自去见玉漱？</p>
<p>这不是找死吗？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030038165.png"></p>
<h2 id="不合理之处二玉漱人设前后不一">不合理之处二：玉漱人设前后不一</h2>
<p>玉漱在电影开场，对着前来拦亲的崔将军，振振有词地说，自己要为了大义，而不是为了儿女私情。</p>
<p>到了蒙毅这里，却变成为了蒙毅而活，至于什么家国大事，早就抛到九霄云外。</p>
<p>这尼玛人设前后不一，导演你坑我美美的玉漱公主啊。</p>
<p>我猜测导演这样处理，是为了结局几千年的等待作铺垫。</p>
<p>因为等待几千年本来就是一个让人觉得不可思议的事情，所以，要把这种感情宣泄得更为直接和具体“我要为你而活”。</p>
<p>电影中也是反复说了两三回这句话，而不是玩那种“犹抱琵琶半遮面”的表达方式。</p>
<p>但还有另一种解释，玉漱鬼门关都走了几回了，劫后重生，人的思想发生变化，也属人之常情。</p>
<p>只是，这样一处理，玉漱的人格魅力一下子就落了下乘。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030040259.png"></p>
<h2 id="不合理之处三杰克到底是不是蒙毅转世">不合理之处三：杰克到底是不是蒙毅转世</h2>
<p>从电影一开始杰克就不断在做梦，梦到自己是古代的大将军，然后遇到一位美丽的女子。</p>
<p>加上在帝沙，化身成蒙毅和帝沙王子比武，一套剑法使得行云流水，如同记忆复苏。</p>
<p>之后，在天宫中和玉漱相遇，镜头给到杰克手臂上有一个伤疤和蒙毅当年受伤的位置一模一样。</p>
<p>这些无不表示杰克就是蒙毅转世，当然，你也可以说，人都长一模一样就是最直接的证据啊。</p>
<p>但是，电影看完之后，给我的感觉又不像，为什么这么说呢？</p>
<p>因为，如果导演想要往杰克是蒙毅转世的方向靠。为什么杰克和玉漱相见，虽然解释了蒙毅是怎么死的，但是杰克表现出来的样子，又没到那种“突然想起来了我就是蒙毅”的程度。</p>
<p>杰克只是很好奇的心态，就好像是来听故事的。</p>
<p>如果说不往蒙毅转世的方向靠，只是一个替身、载体来讲好这个电影。</p>
<p>那就没必要整那么多有的没的了吧，人是可以长的像，又记得秦国大将蒙毅剑法也行，但是手臂伤疤都一样这个就有点说不过去了，而且也没有去解释一下。</p>
<p>这就显得杰克这个人的设定很混乱，有点不伦不类的。</p>
<p>还有就是，最后玉漱觉得杰克不是蒙毅，仅仅是因为威廉叫了一声“杰克”？就因为名字不是蒙毅，他就不是蒙毅？那上面的那么多“巧合”有什么用？</p>
<p>电影的最后，处理得很唯美，玉漱后退飘向开始坍塌的悬浮天宫，当然香消玉殒了。进入天宫的人，除了杰克一人，其他人都死了。</p>
<p>杰克出来之后，写了《神话》这本书，不知道他是怎么边看边笑的，自己好朋友死了，梦中的女子玉漱死了，反派虽然有点活该，但也是死了好多人，不知道要表达什么意思。</p>
<p>好像还很满意，很看得开？积极面对美好的生活？</p>
<p>我觉得如果狠一点，还不如这样设计，到最后杰克出来之后，回忆才真正全部复苏，他想起来了几千年前的一切，他就是蒙毅，而不是什么杰克。</p>
<p>但是，玉漱已经死了。</p>
<p>我觉得结局还不如我这个呢。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030117182.png"></p>
<h2 id="穿越的题材">穿越的题材</h2>
<p>2005年，我看过一本穿越小说，好像是讲唐朝的？女主在唐朝是一位侠客？然后，现代又是白领？两条线交叉叙述。</p>
<p>那本书有一个挺有意思的点，在现代时，字体是宋体，穿插到古代，字体是楷体。</p>
<p>不知道是不是网文，只记得当时是借的同学，在晚自习前抽个把小时看的。</p>
<p>我一直想要找一下，到底是哪一本小说，可惜，一直没有找到。</p>
<p>在我很小的时候，每次侧身睡觉，闭上眼睛，眼睑之下，好像总是有兵马俑的身影，一排一排的。</p>
<p>不知道是眼睛这个器官的生理现象，还是因为当时看了古天乐主演的《寻秦记》留下太深刻的印象，反正就是经常会出现这样的画面。</p>
<p>当时我一直在想，如果生在乱世，也应是一个大将军，领兵上阵杀敌。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508022257877.png"></p>
<h2 id="结语">结语</h2>
<p>这部电影有爱情、古代/现代武打、奇幻、喜剧、冒险、异国风情、爱国等元素，只是一部 120 分钟的电影就包含了那么多元素，还要啥自行车。</p>
<p>可以说是很优质的一部电影作品，可是，正如前文所列举的三个不合理之处所言。</p>
<p>剧本在很多细节上都没有好好打磨，人物设定和发展脉络没有梳理清楚，有的人物设定不一，有的事件没有交代清楚。</p>
<p>比如玉漱和南宫彦被抓去试药，秦始皇究竟是没吃上死了，还是吃了之后死了，没有具体交代。</p>
<p>玉漱和南宫彦都活了下来，但他们如何活下来的也没有说清楚。</p>
<p>这几千年来，肚子饿了咋办？哪怕稍微提一嘴都行的，可惜没有。</p>
<p>所以，我觉得很可惜，如果能把剧本各方面都完善一下，逻辑没有太多漏洞的话该多好。</p>
<p>最后，虽然疯狂吐槽了很多点，但不管怎么说，在我心中，这部电影还是可以 9 分以上的。</p>
<p>只是如果剧本好好打磨，细节再好好雕琢，同样质量的电影，分个上下部，绝对是神作，可以 9.5 分以上。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508030136387.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>37-AI 时代，代码评审方式究竟怎样优化？关键要点有哪些？</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/37-ai-%E6%97%B6%E4%BB%A3%E4%BB%A3%E7%A0%81%E8%AF%84%E5%AE%A1%E6%96%B9%E5%BC%8F%E7%A9%B6%E7%AB%9F%E6%80%8E%E6%A0%B7%E4%BC%98%E5%8C%96%E5%85%B3%E9%94%AE%E8%A6%81%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B/</link>
      <pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/37-ai-%E6%97%B6%E4%BB%A3%E4%BB%A3%E7%A0%81%E8%AF%84%E5%AE%A1%E6%96%B9%E5%BC%8F%E7%A9%B6%E7%AB%9F%E6%80%8E%E6%A0%B7%E4%BC%98%E5%8C%96%E5%85%B3%E9%94%AE%E8%A6%81%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021608296.jpeg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;在项目开发过程中，代码评审还是很重要的，主要是为了解决代码规范、功能开发方式、相互学习等问题，代码是否符合规范，关系到项目成员协作的问题。&lt;/p&gt;
&lt;p&gt;如果写出来的代码风格五花八门，那么，在沟通交流上面，就额外增加了难度，而这是完全没有必要的。&lt;/p&gt;
&lt;p&gt;除此之外，上面说到的功能开发方式问题，意思就是，每个人都有可能是孤岛，一个人的想法可能会有缺陷，如果多个人沟通以及探讨，相互学习，有可能会从不同视角发现潜在的问题。&lt;/p&gt;
&lt;h1 id=&#34;人工代码评审&#34;&gt;人工代码评审&lt;/h1&gt;
&lt;p&gt;一直以来，我们要做项目代码评审，通常都是有这几种方式，比如项目组成员交叉验收各自的功能代码，然后把问题整理到文档，再一起组织代码评审会议，把问题都过一遍，然后安排任务去调整。一方面解决了代码存在的问题，另一方面通过深入交流，大家相互学习。&lt;/p&gt;
&lt;p&gt;还有，就是在 GitLab 代码合并阶段，项目成员发起功能分支合并至主分支，由项目负责人去审查项目成员提交的代码分支。&lt;/p&gt;
&lt;p&gt;如果没有问题，则合并到主分支；如果有问题，则反馈给项目成员。待项目成员修复完成再次发起分支代码合并，然后，项目负责人确认之后，合并到主分支。这个应该就是常规的代码评审流程。&lt;/p&gt;
&lt;p&gt;但是，随着团队的发展以及对降本增效的要求，开始着手去研究，团队中哪些工作是有可优化的空间？&lt;/p&gt;
&lt;p&gt;项目负责人承担的工作事务越来越多，怎么去有效简化无意义的工作，成为了当前亟需解决的问题。&lt;/p&gt;
&lt;h1 id=&#34;sonarqube&#34;&gt;SonarQube&lt;/h1&gt;
&lt;p&gt;基于上面降本增效的目的，我之前调研了 SonarQube 代码检测工具。&lt;/p&gt;
&lt;p&gt;它基本支持了市面上的 Java、Go、JavaScript、TypeScript 等十多种语言，并提供几千条代码规则，用于代码规范检查、代码优化提示等代码质量问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507011753711.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;支持结合 GitLab 的 CI/CD 做流水线事件中断，方便代码提交人员，自行去查看反馈的问题。&lt;/p&gt;
&lt;p&gt;并且，提供 SonarLint 这个 IDE 插件，在代码编写时，就反馈存在的问题，并给出修改建议。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021344526.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;后来为了减少项目负责人的代码评审工作，整个部门的项目，就都接入了 SonarQube 来实现代码问题检查工作。&lt;/p&gt;
&lt;p&gt;在使用 SonarQube 的过程中，给我印象深刻的主要有以下几点：&lt;/p&gt;
&lt;p&gt;如果一个历史项目要接入使用 SonarQube 工具去检查代码，这个时候，势必会有很多问题反馈，比如可能 2000 个问题，这个时候，是否要立马安排时间去解决呢？&lt;/p&gt;
&lt;p&gt;立马安排的话，就需要比较多的时间了，如果不立马安排解决的话，这些问题应该什么时候去解决呢？&lt;/p&gt;
&lt;p&gt;SonarQube 提出了一个 “新代码” 的概念了，意思就是，可以不立即就把这 2000 个问题修复掉，而是在项目功能迭代的过程中，逐步把有问题的代码修复掉。&lt;/p&gt;
&lt;p&gt;因为项目功能有迭代，意味着，这部分代码就需要去改动，趁此机会，刚好同步解决掉遗留的代码问题，慢慢地，遗留的 2000 个问题就会以这种方式解决掉。&lt;/p&gt;
&lt;p&gt;至于哪些没有迭代的，说明功能已经很稳定了，或者功能不重要，那优先级也相对更低了。&lt;/p&gt;
&lt;p&gt;SonarQube 官网文档的这篇说明 &lt;a href=&#34;https://docs.sonarsource.com/sonarqube-server/10.6/user-guide/clean-as-you-code/#developer-ownership&#34;&gt;《Clean as You Code》&lt;/a&gt; 提出的这个方法论，我觉得理念还是很不错的：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021402873.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;SonarQube 旨在通过帮助您（开发人员）确保您提交到项目中的每个代码更改都没有问题，从而确保高代码质量和安全性。通过始终提交干净的代码，您可以逐步提高项目的整体质量。我们称这种方法为“Clean as You Code”。&lt;/p&gt;
&lt;p&gt;Clean as You Code 的核心思想是将注意力和精力集中在新代码上。在您进行功能和改进时，SonarQube 会在每次新提交时分析您的代码，并在任何代码质量问题和安全问题上提醒您。然后，您可以立即解决这些问题，并确保添加到项目中的所有新代码始终是干净的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021608296.jpeg"></p>
<h1 id="背景">背景</h1>
<p>在项目开发过程中，代码评审还是很重要的，主要是为了解决代码规范、功能开发方式、相互学习等问题，代码是否符合规范，关系到项目成员协作的问题。</p>
<p>如果写出来的代码风格五花八门，那么，在沟通交流上面，就额外增加了难度，而这是完全没有必要的。</p>
<p>除此之外，上面说到的功能开发方式问题，意思就是，每个人都有可能是孤岛，一个人的想法可能会有缺陷，如果多个人沟通以及探讨，相互学习，有可能会从不同视角发现潜在的问题。</p>
<h1 id="人工代码评审">人工代码评审</h1>
<p>一直以来，我们要做项目代码评审，通常都是有这几种方式，比如项目组成员交叉验收各自的功能代码，然后把问题整理到文档，再一起组织代码评审会议，把问题都过一遍，然后安排任务去调整。一方面解决了代码存在的问题，另一方面通过深入交流，大家相互学习。</p>
<p>还有，就是在 GitLab 代码合并阶段，项目成员发起功能分支合并至主分支，由项目负责人去审查项目成员提交的代码分支。</p>
<p>如果没有问题，则合并到主分支；如果有问题，则反馈给项目成员。待项目成员修复完成再次发起分支代码合并，然后，项目负责人确认之后，合并到主分支。这个应该就是常规的代码评审流程。</p>
<p>但是，随着团队的发展以及对降本增效的要求，开始着手去研究，团队中哪些工作是有可优化的空间？</p>
<p>项目负责人承担的工作事务越来越多，怎么去有效简化无意义的工作，成为了当前亟需解决的问题。</p>
<h1 id="sonarqube">SonarQube</h1>
<p>基于上面降本增效的目的，我之前调研了 SonarQube 代码检测工具。</p>
<p>它基本支持了市面上的 Java、Go、JavaScript、TypeScript 等十多种语言，并提供几千条代码规则，用于代码规范检查、代码优化提示等代码质量问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507011753711.png"></p>
<p>支持结合 GitLab 的 CI/CD 做流水线事件中断，方便代码提交人员，自行去查看反馈的问题。</p>
<p>并且，提供 SonarLint 这个 IDE 插件，在代码编写时，就反馈存在的问题，并给出修改建议。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021344526.png"></p>
<p>后来为了减少项目负责人的代码评审工作，整个部门的项目，就都接入了 SonarQube 来实现代码问题检查工作。</p>
<p>在使用 SonarQube 的过程中，给我印象深刻的主要有以下几点：</p>
<p>如果一个历史项目要接入使用 SonarQube 工具去检查代码，这个时候，势必会有很多问题反馈，比如可能 2000 个问题，这个时候，是否要立马安排时间去解决呢？</p>
<p>立马安排的话，就需要比较多的时间了，如果不立马安排解决的话，这些问题应该什么时候去解决呢？</p>
<p>SonarQube 提出了一个 “新代码” 的概念了，意思就是，可以不立即就把这 2000 个问题修复掉，而是在项目功能迭代的过程中，逐步把有问题的代码修复掉。</p>
<p>因为项目功能有迭代，意味着，这部分代码就需要去改动，趁此机会，刚好同步解决掉遗留的代码问题，慢慢地，遗留的 2000 个问题就会以这种方式解决掉。</p>
<p>至于哪些没有迭代的，说明功能已经很稳定了，或者功能不重要，那优先级也相对更低了。</p>
<p>SonarQube 官网文档的这篇说明 <a href="https://docs.sonarsource.com/sonarqube-server/10.6/user-guide/clean-as-you-code/#developer-ownership">《Clean as You Code》</a> 提出的这个方法论，我觉得理念还是很不错的：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021402873.png"></p>
<p>SonarQube 旨在通过帮助您（开发人员）确保您提交到项目中的每个代码更改都没有问题，从而确保高代码质量和安全性。通过始终提交干净的代码，您可以逐步提高项目的整体质量。我们称这种方法为“Clean as You Code”。</p>
<p>Clean as You Code 的核心思想是将注意力和精力集中在新代码上。在您进行功能和改进时，SonarQube 会在每次新提交时分析您的代码，并在任何代码质量问题和安全问题上提醒您。然后，您可以立即解决这些问题，并确保添加到项目中的所有新代码始终是干净的。</p>
<p>传统的代码质量方法通常强调在每个开发周期结束时有一个单独的审查阶段，在这个阶段发现并解决质量问题。在这个过程中有一个单独的阶段，通常由不同的团队进行，可能会导致问题，因为积累的技术债务量可能变得难以管理，而责任的划分意味着质量问题可能会从裂缝中消失。</p>
<p>Clean as You Code 避免了这些陷阱。它阐明了代码质量和代码安全性是您作为开发人员的责任。它还通过使其成为日常工作节奏的一部分，使代码质量的维护保持可控。</p>
<p>另一个让我印象深刻的是 SonarQube 代码检测结合 CI/CD 阻断流水线事件的功能，真正去应用了，才真正感受到这个功能的好处在哪里，比如前端项目，要合并分支并自动化发布到线上，这个时候，如果 SonarQube 检测到代码问题，就会中断发布流程，需要解决掉反馈的代码问题，才可以正常发布到线上，从而简化了项目负责人的代码评审工作。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507011757046.png"></p>
<p>但是，SonarQube 只是静态的代码检查，固定好规则，然后它就去检查，只是一个相对 “死板” 的检查方式，无法结合代码上下文，去提出更为深层次的问题，比如功能的实现方式，代码性能优化的写法建议等等，还是要人工去做这部分的工作。</p>
<h1 id="ai-代码评审">AI 代码评审</h1>
<p>随着 AI 大模型的爆发，我之前设想的通过 AI 去做代码评审的事情，开始可以去落实。</p>
<p>早在选定 SonarQube 作为代码评审检查工具，从而减少项目负责人的工作之时，我就设想能否通过 ChatGPT 来完成这个事情，这个是之前写的结论。</p>
<blockquote>
<p>借助 ChatGPT，利用 GitLab 获取到合并请求内容并发送到 ChatGPT 完成代码审查, 并将审查结果提交评论至修改行。当前环境下，该做法可能有点激进，存在法律和安全方面的风险。时机未成熟。</p></blockquote>
<p>当时是没想明白，怎么解决掉代码安全的问题，因为我们项目的代码，总不能接入公网吧，而且，GhatGPT 还是外网，还要翻墙，还要购买服务等等问题，就此作罢了。</p>
<p>可现在完全不同了，AI 大模型发展迅速，日新月变，全面开花。在这样的背景下，我知道时机应该成熟了。</p>
<p>我的想法是，能够通过 AI 把项目成员自己提交的代码分支，做一次代码评审，然后将代码中存在的问题反馈给项目成员，项目成员自行根据建议修复之后，再次推送分支，这一个过程完全不需要项目负责人参与。</p>
<p>项目负责人只需要在最后一步，合并分支代码的时候，看下 AI 代码评审报告，确定各方面评价满足预期，则合并分支代码，从而简化项目负责人的工作。</p>
<p>后来通过多次调研，发现 <strong><a href="https://github.com/mimo-x/Code-Review-GPT-Gitlab">Code-Review-GPT-Gitlab</a></strong> 这个项目比较符合预期，有评分、代码亮点、代码问题、修改建议、修改后的版本等等，就开始着手验证和执行。</p>
<p>不过，当前还有一个点要解决，因为这个评论是需要合并分支代码之后，才可以检查 diff 部分的代码，然后结合上下文，给出代码检查报告的，那么就没有做到阻断事件的效果了。</p>
<p>之前，总认为把这个约束放到人身上，大家自行去看合并后的分支报告就行了，不做强制要求。</p>
<p>但是，这种事情，是没办法去考验人性的，要大家自觉去做，可能一开始还行，时间久了，有什么突发事情、工作进度受阻、准备下班了等等原因，就开始趋利避害了。这个是正常的，所以，只能从源头去解决，那就是完善这个阻断事件的功能。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021424609.png"></p>
<h1 id="总结">总结</h1>
<p>上面就是代码评审的方式以及演变过程，不过，在实际应用中，AI 代码评审也不是万能的，除非你能把它喂到覆盖你需求的程度，但是，现阶段还是比较难的。</p>
<p>所以，最好还是结合代码评审会议去完善代码评审这个事情，比如一个季度开一次，都看看项目的代码，兴许可以发现一些 AI 代码评审覆盖不到的、团队特有的代码规范、功能实现方式可优化等问题。</p>
<p>在当下降本增效的浪潮之下，强调团队的产出，基于这个目的，各个工作环节，都要深入去分析，是否存在可以优化的要点，通过结合实际情况的分析与论证，比如，先以一个项目作为试点，看看大家的反馈如何，没有什么问题，再全面推进，再加以实施，更能做成一件事情，避免弄得载声怨道，事与愿违。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507021615626.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《阴阳师1、2》观后感：看日本妖怪文化引发的影视创作思考</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E9%98%B4%E9%98%B3%E5%B8%8812%E8%A7%82%E5%90%8E%E6%84%9F%E7%9C%8B%E6%97%A5%E6%9C%AC%E5%A6%96%E6%80%AA%E6%96%87%E5%8C%96%E5%BC%95%E5%8F%91%E7%9A%84%E5%BD%B1%E8%A7%86%E5%88%9B%E4%BD%9C%E6%80%9D%E8%80%83/</link>
      <pubDate>Sun, 29 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E9%98%B4%E9%98%B3%E5%B8%8812%E8%A7%82%E5%90%8E%E6%84%9F%E7%9C%8B%E6%97%A5%E6%9C%AC%E5%A6%96%E6%80%AA%E6%96%87%E5%8C%96%E5%BC%95%E5%8F%91%E7%9A%84%E5%BD%B1%E8%A7%86%E5%88%9B%E4%BD%9C%E6%80%9D%E8%80%83/</guid>
      <description>&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;p&gt;2023 年 5 月，看完了《阴阳师》电影，因为电影上映年份久远，我就在想会不会有第二部，本身对这个题材很感兴趣，就去找了一下，结果发现没有，就此作罢了。&lt;/p&gt;
&lt;p&gt;没想到最近在 B 站重温了相关剪辑视频，发现有一些画面我都没有见过，怎么还有第二部？惊奇之余，很是期待，就把第二部也看了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291317768.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;剧情概述&#34;&gt;剧情概述&lt;/h2&gt;
&lt;p&gt;《阴阳师》是泷田洋二郎执导，并由野村万斋主演的奇幻题材电影，影片讲述了日本平安时代，妖怪横行，接连发生各种怪事，给人间带来了很多祸乱，法术高超的阴阳师安倍晴明，虽与世无争，但心怀天下苍生，一一解决了这些问题，还人间安宁的故事。&lt;/p&gt;
&lt;p&gt;第一部于 2001 年上映，日本平安京时期，皇室深陷鬼怪之乱。左大臣之女诞下的小皇子遭人诅咒，厄运缠身。暗处的符咒暗藏杀机，似要取天皇性命。原来，阴阳头道尊妄图解封 150 年前早良亲王的恶魂，借其对皇室的怨念，将平安京推入地狱深渊。安倍晴明、源博雅与青音携手追查，过程中危机四伏。最终，青音献祭自己，晴明以精妙布局擒获道尊，平息了这场危及天下的灾难 。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291636467.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;第二部于 2003 年上映，京城接连发生鬼魅夜袭朝臣的骇人事件。受害者身体部位相继离奇消失，有人肩膀被噬，有人眼鼻不翼而飞，有人嘴唇残缺，恐怖气息笼罩全城。安倍晴明在追查中发现，城内供奉的天丛云剑不时发出鸣响、绽放光芒，似在传递某种预兆。随着调查深入，背后真相逐渐浮出水面，原来这一切竟是一场因剿灭出云国引发的国恨家仇所致，最终晴明抽丝剥茧，揪出元凶，平息了这场腥风血雨。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291522581.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;对日本妖怪文化产生兴趣&#34;&gt;对日本妖怪文化产生兴趣&lt;/h2&gt;
&lt;p&gt;其实，早在 2016 年，我就已经知道《阴阳师》这部电影，当时，看了一个百鬼夜行的剪辑视频，里面混剪了很多日本奇幻电影的影视形象，用来当作 UP 主对日本妖怪的具象化理解，其中，就有来自《阴阳师》这部电影的安倍晴明。&lt;/p&gt;
&lt;p&gt;因为，这个剪辑视频里面使用的配乐《Sakitama～幸魂～》我很喜欢，所以，就去了解了一下。&lt;/p&gt;
&lt;p&gt;这首曲子是 Rin&amp;rsquo;（凛）这个日本传统乐器演奏团体创作的，先是尺八、然后是古筝、琵琶，然后是三味弦，空灵苍茫又不失温婉流转。&lt;/p&gt;
&lt;p&gt;不管是纯乐版还是演唱版，都很好听，演唱版的歌词，百度百科上不知道是谁翻译的，还挺好的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;念之彷徨（何所求）、行之往往（即遇之）&lt;/p&gt;
&lt;p&gt;苍穹如风（心之所向、澄空万里）&lt;/p&gt;
&lt;p&gt;不觉入深山、扰林破寂静&lt;/p&gt;
&lt;p&gt;朦胧兮、引余雾桥深处&lt;/p&gt;
&lt;p&gt;清露生辉、雏鸟啁啾&lt;/p&gt;
&lt;p&gt;守灯之明灭、其名为生命&lt;/p&gt;
&lt;p&gt;思久之心、鼓动于胸、喷涌而出（幽然萌生、千古流传）&lt;/p&gt;
&lt;p&gt;圣地之息（清流满溢）、喷薄震荡（染尽铅华）&lt;/p&gt;
&lt;p&gt;闻竹间之细语（簌簌作响）、叹魂灵之所幸（映照其间）&lt;/p&gt;
&lt;p&gt;清辉一缕终破缚（流光一束与梦萦）&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而 Rin&amp;rsquo;（凛）这个乐团，我最喜欢的还有一首，那就是《Eternal》，是一首纯音乐的曲子，曲调悲凉，低鸣涕泣，闻之有肝肠寸断之感。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282019703.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;所以，2018 年我经常听，加上看了一部忍者电影《甲贺忍法帖》，这部电影也很不错，片尾曲是滨崎步为其创作的《Heaven》。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我的天啊，我很喜欢的一首歌，都不知道原来是这部电影的片尾曲，现在查了资料，才知道，可能 2018 年看完也喜欢过这首歌，但是，一定早就忘了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;当时，很为这部电影的结局感到难过，可能感触比较多，就填写了《七绝・宿命》。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;江村晚照渔灯瘦，烟柳依依月满楼。&lt;/p&gt;
&lt;p&gt;往昔伊人舟戏水，今朝何处水行舟。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282027670.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;说回 Rin&amp;rsquo;（凛）这个乐团，其实，使用的都是中国的传统乐器，尺八从唐代传入日本，听闻在中国已经失传了，但近年来，随着日本尺八艺术家的寻根活动，这一乐器重新回到了中国。&lt;/p&gt;
&lt;p&gt;三味弦其实就是中国的三弦琴，于 1560 年经冲绳传到了日本。而三弦琴最近这两年好像很火，至少我觉得是这样，有褚琪桂梓使用三弦琴和现代乐结合起来，并在楼台栅栏边上演出，虽然很离经叛道，但我觉得还挺有创意的，也算是一种传承的方式了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282052823.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;至此，才有了我后续对日本妖怪文化的一系列的关注和了解，不管是阴阳师、百鬼夜行、玉前藻、酒吞童子、天狗、河童等都基本知道是什么意思，而我也更是记住了安倍晴明这个人。&lt;/p&gt;
&lt;p&gt;不久之后，看到网易推出了手游《阴阳师》，是一个回合制游戏，里面最主要的玩法，就是抽式神，还有就是氪金皮肤。这个游戏画面很精美，诡谲的画风，人物造型也独具一格，音乐也很贴切，各方面都很出彩。但我也没玩多久，就一两个月吧，后来就不了了之了。现在印象深刻的，只剩下主界面清冽的风铃声，叮叮铃铃的。&lt;/p&gt;
&lt;p&gt;后来，我也看了很多日本奇幻类型的电影和动漫，比如电影《妖怪大战争》，还有动漫《夏目友人帐》和《虫师》。其中，《夏目友人帐》一共有 6 季我全都看完了，《虫师》就只拍了一季，至今我还不断重温，算是近几年在我心里评价最高的动漫作品。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291423068.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;对日本神话故事深入了解&#34;&gt;对日本神话故事深入了解&lt;/h2&gt;
&lt;p&gt;《阴阳师》第二部是基于日本神话为蓝本而创作的，里面出现了很多和日本神话一一对应的人物和设定，比如须佐之男、八岐大蛇、伊邪那美和伊邪那岐等人物，虽然很久以前就对日本神话人物有一些了解，但都是碎片化的、不够深入和系统的，这一次又出现了与之关联的作品，刚好就对日本神话做一次全面的了解吧。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="引言">引言</h2>
<p>2023 年 5 月，看完了《阴阳师》电影，因为电影上映年份久远，我就在想会不会有第二部，本身对这个题材很感兴趣，就去找了一下，结果发现没有，就此作罢了。</p>
<p>没想到最近在 B 站重温了相关剪辑视频，发现有一些画面我都没有见过，怎么还有第二部？惊奇之余，很是期待，就把第二部也看了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291317768.jpg"></p>
<h2 id="剧情概述">剧情概述</h2>
<p>《阴阳师》是泷田洋二郎执导，并由野村万斋主演的奇幻题材电影，影片讲述了日本平安时代，妖怪横行，接连发生各种怪事，给人间带来了很多祸乱，法术高超的阴阳师安倍晴明，虽与世无争，但心怀天下苍生，一一解决了这些问题，还人间安宁的故事。</p>
<p>第一部于 2001 年上映，日本平安京时期，皇室深陷鬼怪之乱。左大臣之女诞下的小皇子遭人诅咒，厄运缠身。暗处的符咒暗藏杀机，似要取天皇性命。原来，阴阳头道尊妄图解封 150 年前早良亲王的恶魂，借其对皇室的怨念，将平安京推入地狱深渊。安倍晴明、源博雅与青音携手追查，过程中危机四伏。最终，青音献祭自己，晴明以精妙布局擒获道尊，平息了这场危及天下的灾难 。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291636467.jpg"></p>
<p>第二部于 2003 年上映，京城接连发生鬼魅夜袭朝臣的骇人事件。受害者身体部位相继离奇消失，有人肩膀被噬，有人眼鼻不翼而飞，有人嘴唇残缺，恐怖气息笼罩全城。安倍晴明在追查中发现，城内供奉的天丛云剑不时发出鸣响、绽放光芒，似在传递某种预兆。随着调查深入，背后真相逐渐浮出水面，原来这一切竟是一场因剿灭出云国引发的国恨家仇所致，最终晴明抽丝剥茧，揪出元凶，平息了这场腥风血雨。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291522581.jpg"></p>
<h2 id="对日本妖怪文化产生兴趣">对日本妖怪文化产生兴趣</h2>
<p>其实，早在 2016 年，我就已经知道《阴阳师》这部电影，当时，看了一个百鬼夜行的剪辑视频，里面混剪了很多日本奇幻电影的影视形象，用来当作 UP 主对日本妖怪的具象化理解，其中，就有来自《阴阳师》这部电影的安倍晴明。</p>
<p>因为，这个剪辑视频里面使用的配乐《Sakitama～幸魂～》我很喜欢，所以，就去了解了一下。</p>
<p>这首曲子是 Rin&rsquo;（凛）这个日本传统乐器演奏团体创作的，先是尺八、然后是古筝、琵琶，然后是三味弦，空灵苍茫又不失温婉流转。</p>
<p>不管是纯乐版还是演唱版，都很好听，演唱版的歌词，百度百科上不知道是谁翻译的，还挺好的。</p>
<blockquote>
<p>念之彷徨（何所求）、行之往往（即遇之）</p>
<p>苍穹如风（心之所向、澄空万里）</p>
<p>不觉入深山、扰林破寂静</p>
<p>朦胧兮、引余雾桥深处</p>
<p>清露生辉、雏鸟啁啾</p>
<p>守灯之明灭、其名为生命</p>
<p>思久之心、鼓动于胸、喷涌而出（幽然萌生、千古流传）</p>
<p>圣地之息（清流满溢）、喷薄震荡（染尽铅华）</p>
<p>闻竹间之细语（簌簌作响）、叹魂灵之所幸（映照其间）</p>
<p>清辉一缕终破缚（流光一束与梦萦）</p></blockquote>
<p>而 Rin&rsquo;（凛）这个乐团，我最喜欢的还有一首，那就是《Eternal》，是一首纯音乐的曲子，曲调悲凉，低鸣涕泣，闻之有肝肠寸断之感。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282019703.png"></p>
<p>所以，2018 年我经常听，加上看了一部忍者电影《甲贺忍法帖》，这部电影也很不错，片尾曲是滨崎步为其创作的《Heaven》。</p>
<blockquote>
<p>我的天啊，我很喜欢的一首歌，都不知道原来是这部电影的片尾曲，现在查了资料，才知道，可能 2018 年看完也喜欢过这首歌，但是，一定早就忘了。</p></blockquote>
<p>当时，很为这部电影的结局感到难过，可能感触比较多，就填写了《七绝・宿命》。</p>
<blockquote>
<p>江村晚照渔灯瘦，烟柳依依月满楼。</p>
<p>往昔伊人舟戏水，今朝何处水行舟。</p></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282027670.png"></p>
<p>说回 Rin&rsquo;（凛）这个乐团，其实，使用的都是中国的传统乐器，尺八从唐代传入日本，听闻在中国已经失传了，但近年来，随着日本尺八艺术家的寻根活动，这一乐器重新回到了中国。</p>
<p>三味弦其实就是中国的三弦琴，于 1560 年经冲绳传到了日本。而三弦琴最近这两年好像很火，至少我觉得是这样，有褚琪桂梓使用三弦琴和现代乐结合起来，并在楼台栅栏边上演出，虽然很离经叛道，但我觉得还挺有创意的，也算是一种传承的方式了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506282052823.png"></p>
<p>至此，才有了我后续对日本妖怪文化的一系列的关注和了解，不管是阴阳师、百鬼夜行、玉前藻、酒吞童子、天狗、河童等都基本知道是什么意思，而我也更是记住了安倍晴明这个人。</p>
<p>不久之后，看到网易推出了手游《阴阳师》，是一个回合制游戏，里面最主要的玩法，就是抽式神，还有就是氪金皮肤。这个游戏画面很精美，诡谲的画风，人物造型也独具一格，音乐也很贴切，各方面都很出彩。但我也没玩多久，就一两个月吧，后来就不了了之了。现在印象深刻的，只剩下主界面清冽的风铃声，叮叮铃铃的。</p>
<p>后来，我也看了很多日本奇幻类型的电影和动漫，比如电影《妖怪大战争》，还有动漫《夏目友人帐》和《虫师》。其中，《夏目友人帐》一共有 6 季我全都看完了，《虫师》就只拍了一季，至今我还不断重温，算是近几年在我心里评价最高的动漫作品。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291423068.jpg"></p>
<h2 id="对日本神话故事深入了解">对日本神话故事深入了解</h2>
<p>《阴阳师》第二部是基于日本神话为蓝本而创作的，里面出现了很多和日本神话一一对应的人物和设定，比如须佐之男、八岐大蛇、伊邪那美和伊邪那岐等人物，虽然很久以前就对日本神话人物有一些了解，但都是碎片化的、不够深入和系统的，这一次又出现了与之关联的作品，刚好就对日本神话做一次全面的了解吧。</p>
<p>从小学的街机游戏《拳皇 97》游戏里名为大蛇的 BOSS，接着草薙京、八神庵和神乐千鹤，都和日本神话三大神器草薙剑、八尺琼勾玉和八咫镜一一对应，都会让人想到须佐之男斩杀八岐大蛇的故事。</p>
<p>《犬夜叉：天下霸道之剑》动漫电影里出现的丛云牙、黄泉之国，和日本神话也是有对应的。丛云牙就是上面的草薙剑的别称，黄泉之国就是伊邪那美掌管的世界。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291428317.png"></p>
<p>再然后，是在《火影忍者》这部动漫作品里，岸本齐史又把日本神话里的诸多设定，套了进去。比如对宇智波族写轮眼的设定，有什么月读、天照、须佐能乎、伊邪那美、伊邪那岐等招式，对大蛇丸的设定有草薙剑这个神器和八岐大蛇这个真身，特别是岸本齐史的亲爹宇智波鼬，全身上下都是神器，十拳剑、八尺琼勾玉、八咫镜，简直无人能敌。</p>
<p>而日本神话，到底讲了什么内容呢？我为了深入了解，倒是把一些资料都看了一遍，简单来说，就是来自《古事记》这本书里这样的一个故事：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291338295.png"></p>
<p>伊邪那岐和伊邪那美是兄妹，后来结为夫妻，生下了众神。伊邪那美在生火神迦具土神时，被其身上的火焰烧伤了下体，卧床不起，不久便死去。</p>
<p>伊邪那岐悲痛万分，一气之下拔出十拳剑，将火神迦具土神斩杀。</p>
<p>因过于思念亡妻，伊邪那岐便去到黄泉国寻找伊邪那美。</p>
<p>伊邪那美告知伊邪那岐，自己已吃了黄泉灶火煮的食物，身体变得污浊，若要一起回去，须征得黄泉国的神同意。</p>
<p>伊邪那岐等得不耐烦，取下左发髻上戴着的多齿木梳，折下一个边齿点燃照明，却看到伊邪那美满身蛆虫蠕动，气结喉塞，头部被大雷盘踞，胸部被火雷盘踞，腹部被黑雷盘踞，下阴被拆雷盘踞，左手被若雷盘踞，右手被土雷盘踞，左足被鸣雷盘踞，右足被伏雷盘踞，共有八雷神缠绕其尸身。</p>
<p>伊邪那岐吓得拔腿就跑，伊邪那美怒斥其侮辱自己。</p>
<p>伊邪那岐丢出黑御鬘变成山葡萄，趁豫母都志许卖捡食之际逃跑，却仍被追上，再丢出右发髻插着的发梳，折下一齿变成竹笋，又趁豫母都志许卖捡食之际逃逸。</p>
<p>后来伊邪那美遣八雷神率领一千五百黄泉大军追赶，伊邪那岐抽出十拳剑，一边挥舞一边逃走，还从坂下的桃树上摘下三个桃子打向黄泉军，成功脱身。</p>
<p>伊邪那美恼怒之下，与伊邪那岐决裂，发誓每天要杀死伊邪那岐所治国民一千人，伊邪那岐则回应每天将建立一千五百个产房。</p>
<p>伊邪那岐成功摆脱追杀后，觉得自己 “亲见泉国，此既不祥”，于是在筑紫日向进行 “禊祓”（袪除污秽的净化仪式）。</p>
<p>在洗濯过程中，从他抛弃的衣物及身上的秽物，生成三位污秽之神，还生出了海神、船神。</p>
<p>伊邪那岐洗左眼时，化成了天照大御神（太阳女神）；洗右眼时，化成了月读命（月神）；洗鼻子时，化成了建速须佐之男命（英雄神或暴风神，在《日本书纪》中叫作素盏鸣尊）。</p>
<p>伊邪那岐吩咐天照大神去治理 “高天原”（天界），吩咐月神治理夜之国，吩咐须佐之男治理海洋，但须佐之男不从命，只是嚎啕大哭，说要到母亲所在的黄泉国去。伊邪那岐勃然大怒，将他赶走。</p>
<p>须佐之男到高天原向姐姐天照大神辞行，却在那儿大闹一场，毁坏了天照大神所造的田埂，填平了田里的沟渠。</p>
<p>天照大神在清净的机房里看织女织神衣时，须佐之男拆毁机房的屋顶，把斑马剥了皮，扔进机房里，致使织女受到惊吓，被梭子击中而死，最终被伊邪那岐赶出了高天原。</p>
<p>须佐之男流落到人间，在人间游历时听到一对老夫妇哭着说八岐大蛇要吃掉自己的第 8 个女儿奇稻田姬。</p>
<p>须佐之男便说，如果自己杀死了八岐大蛇，女儿就需要嫁给自己。最后，须佐之男弄来了好几缸的美酒摆在地上，引诱八岐大蛇来饮用。</p>
<p>八岐大蛇被酒香吸引，将八个头分别伸进八个酒缸，把美酒喝了个精光，很快便醉倒，毫无知觉。</p>
<p>须佐之男手持十拳剑斩杀了八岐大蛇，杀死它之后，在其尾部发现了一把神剑，即草薙剑。</p>
<p>之后，须佐之男与奇稻田姬结为夫妻，从此定居于出云国。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291555856.png"></p>
<h2 id="对当下电影现状很失望">对当下电影现状很失望</h2>
<p>其实，相比日本神话、妖怪题材的影视创作，我对中国神话、妖怪文化题材的电影更为期待，论文化底蕴，真不是一个级别的。</p>
<p>《山海经》《中国神话传说》《搜神记》《西游记》《封神演义》《聊斋志异》等典籍都有着深厚的中国传统文化价值，里面流传着一个个精彩的故事，奈何没有什么好电影。</p>
<p>就知道拍《西游记》，最多就《封神演义》，都快被拍烂了，生怕拍点其他的，没有像猴哥、哪吒那么大的 IP 作为保底，票房没有保证然后扑街，管你三七二十一，我要赚钱啊大哥。金庸的武侠剧也是这个路数，拍了又拍，越拍越烂。</p>
<p>在这之中，《山海经》是我最为期待的，比如每个神兽就是一个故事，然后，基于某个人物，把它们都串起来，最终，形成一个系列。只要有想象力，完全有发挥的空间，但是，一直都没有听过有人要做这个事情。</p>
<p>不过想来也情有可原，这种奇幻题材因为特效的原因，要花费很大的拍摄成本，关乎到赚钱的事情，没那么好做下去的，一切都要为了盈利。</p>
<p>可是，抛开拍摄成本不谈，现在一部电影，不说特效、大场面了，能逻辑自洽的讲好一个故事，都得谢天谢地了。</p>
<p>我是真不知道，现在 2025 年这些电影从业者是否是脱离群众太久了，很多故事生搬硬套，连常识都频频出错，本来很正常的现实主义作品，拍出来居然可以是魔幻片。</p>
<p>而且很多编剧、导演没有脑子，好好的一个故事，哪怕照搬原著一字一句进行拍摄，都比瞎编乱改的强上百倍，不知道是不是都这样认为，不改编一下怎么能体现自己的才华横溢？</p>
<p>这个就跟现在的歌曲改编一样，改编不是乱编，分明就是瞎编，只要是改编的，基本上都很难听。可能是因为我们比较会尊老爱幼，生怕自己改编得太好了，让原作者下不来台，真是高尚的道德品质。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291411838.png"></p>
<p>不过，也有可能像汪海林说的，以前煤老板只是想要美女，其他的，任由发挥，让专业的人做专业的事，现在呢？都是从流量出发，多方掣肘，没办法完全按照自己的想法来拍摄电影，不听是吧？要是拍出来不赚钱怎么办？你来赔钱吗？</p>
<p>之前，我还很期待乌尔善的《封神三部曲》，这都宣传多少年了，等了那么久，第一部终于在 2023 年上映了，自己也去电影院支持了，看完感觉很不错，当时就很期待第二部，一直想着 2024 年 7 月份什么时候到来啊。没想到，第二部今年春节上映，口碑直线下降，彻底爆雷了，片子质量惨不忍睹，质子团好像只剩下二郎神此沙没有塌房了？真的让我瞠目结舌了属于是。</p>
<p>我看有那么多人吐槽，也就没兴趣去看了，毕竟，再怎么合理，光殷郊把元始天尊功力吸光，万分期待的三头六臂法相原来是蓝精灵这一点，就已经足够劝退，什么垃圾电影，和之前发的概念图，完全一个天一个地，赤裸裸的挂羊头卖狗肉。</p>
<p>而且，这里面的四大天王和《黑神话：悟空》里的四大天王一经对比，特效上的差距堪称云泥之别。一个呆若木鸡，毫无生机；一个怒目圆睁，神采奕奕，前者被秒得连渣儿都不剩。</p>
<p>所以，电影从业者，也不要抱怨观众为什么不去电影院看电影，都把观众当傻子是吧？</p>
<p>有志气、有抱负的导演真的很少。不过，这个是大环境造成的问题，不以个人的意志为转移。虽然很难，但总有人会这样选择，比如饺子导演。不过话说回来，如果连最基本的讲好一个故事这个事情都那么难，可想而知，现在整个电影市场环境有多糟糕了。</p>
<p>很小的时候，我一直以为，电影院里上映的电影，一定都是佳作，因为一部电影能够上映，肯定要通过层层审核的，那些审核电影的人那么有文化，一定不会错的，后来，我才发现，我还是太过于天真了。</p>
<p>现在上映的电影，不管国内还是国外，十有九烂，不看也罢，有时间还是看看以前的经典电影吧，画面越是模糊，质量也就越高。</p>
<p>奇幻题材电影，让我印象深刻的还得是《蜀山传》，特效放现在完全不过时，甚至更好，特别是张柏芝饰演的孤月大师，脸碎成一片片飘散那个场景，唯美至极。</p>
<p>可惜当时这部电影票房不好，被观众骂惨了，导致没有续作，但就是这样的 “烂片”，放现在也是完全碾压级别。</p>
<p>可一看电影上映时间是 2001 年，距今已经 24 个年头了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291354189.jpg"></p>
<h2 id="结语">结语</h2>
<p>总的来说，《阴阳师 1、2》不算特别优秀的作品，但是，这种类型的电影，以及故事还过得去，没有特别离谱的剧情硬伤，打个 8 分吧，要问我为什么是这个分数，没有为什么，哈哈哈，我只是凭感觉给的，就这样吧。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506291322844.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-06-28 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-06-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 28 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-06-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉+煎蛋+黑米粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：下庄烧鹅&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;抬举，40kg，3组，每组10次。&lt;/li&gt;
&lt;li&gt;往后拉，60kg，3组，每组10次。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506300840250.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉+煎蛋+黑米粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：下庄烧鹅</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>抬举，40kg，3组，每组10次。</li>
<li>往后拉，60kg，3组，每组10次。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506300840250.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
]]></content:encoded>
    </item>
    <item>
      <title>技术网站使用体验与广告问题的思考</title>
      <link>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E6%8A%80%E6%9C%AF%E7%BD%91%E7%AB%99%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C%E4%B8%8E%E5%B9%BF%E5%91%8A%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%9D%E8%80%83/</link>
      <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E6%8A%80%E6%9C%AF%E7%BD%91%E7%AB%99%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C%E4%B8%8E%E5%B9%BF%E5%91%8A%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%9D%E8%80%83/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508241419805.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;对于程序员来说，技术网站还是很多的，我可以列举出来很多个，比如 CSDN，简书，掘金，博客园，开源中国，力扣，InfoQ、思否等。&lt;/p&gt;
&lt;p&gt;早些年我是逛开源中国的，后来，发现了 CSDN，就迁移到 CSDN 了，但是，CSDN 广告真的太恐怖了，不到万不得已，我是绝对不想打开的，因为真的受不了这个广告，&lt;/p&gt;
&lt;p&gt;简书出来之后，就转到简书了，继续写一些技术文章，内容主要是遇到的问题分析、积累的一些解决方案等，但是，后来简书真的吃相越来越难看了。&lt;/p&gt;
&lt;p&gt;满屏的广告不说，文章最后本来应该就是评论区的，硬是要在这个小地方塞进去了十几篇推荐的文章，每次看到最后，想看下评论区，都要把窗口拖下去很久才行。&lt;/p&gt;
&lt;p&gt;文章左侧还有一个 APP 二维码，一直闪烁，我都不清楚简书的产品经理脑袋里装的都是什么，完全没有脑子，阅读文章内容时，注意力老是被这个二维码的动效干扰，人都变得很烦躁，猜测这个功能的目的，是为了推流下载简书 APP，但是，在实现这个目的过程中，采用了简答粗暴的方式，真的一点脑子都没有。&lt;/p&gt;
&lt;p&gt;再加上文章详情页，右侧推荐的文章都是那种 “庞太师与我娘亲二三事” 之类的文章，我当时就觉得受够了，简书死不足惜。&lt;/p&gt;
&lt;p&gt;再加上 2017 年饱醉豚无端抹黑程序员事件，彻底激了众怒了，所以，就转到博客园了。&lt;/p&gt;
&lt;p&gt;博客园的优点其实很多的，比如整个网站没什么广告，然后个人博客风格还可以自定义，编辑器也过得去，但是不知道什么原因，没有继续在上面发发技术文章，或者平时逛逛，基本上得很少用，只能是我自己的选择问题了。&lt;/p&gt;
&lt;p&gt;最后，就迁移到极客时间推出的 InfoQ 网站了，在上面写了几篇技术文章，感觉这个网站没那么多广告，这点还是很不错的，然后不管是编辑器、个人主页都很清爽，但说实话人气确实不咋地。而且，很多文章都是太资讯、行业化了？一看就不是程序员平时写的东西。&lt;/p&gt;
&lt;p&gt;后面，迁移到掘金了，在掘金应该是比较久的了，之前一直也是不错的，但是，最近感觉掘金的广告也变多了起来，可能是有 KPI 绩效的要求，每次打开，都要顶部撑开一个大位置，用来放广告，然后再收缩起来，不知道这个动画效果是不是没有处理好的原因，每次都感觉卡顿，然后莫名其妙的。&lt;/p&gt;
&lt;p&gt;这一点也是很烦的。以致有人写了文章吐槽这个，有意思的是，这篇文章还上掘金热搜榜了，也不知道掘金小编是怎么审核通过的，还是有格局的，亦或是早就看不惯了，迫于上级要求，只能通过这个方式表达不满了。&lt;/p&gt;
&lt;p&gt;然后我现在发文，是掘金和公众号一起，先是在公众号发完，然后同步到掘金，然后再同步到个人博客。这一流程基本沿用至今。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261359433.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261401459.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;上面就是一些使用技术网站的背景，从上面的描述中，可以看到，其实，自己是疯狂吐槽简书的，挑的问题也最多，那是因为很喜欢简书的，至少一开始真的很惊艳，干干净净，简简单单的，但是现在已经全都变了。&lt;/p&gt;
&lt;p&gt;但是，任何事情都要结合实际情况来分析，从不同的角度去看，每个人都有不一样的难处。&lt;/p&gt;
&lt;p&gt;用户觉得广告太多，阅读体验差，网站觉得我要运营，要买服务器，要花钱的，不搞点收益，怎么活下去，你们白嫖了还到处抱怨？&lt;/p&gt;
&lt;p&gt;要解决这个问题，还是在于用不用。&lt;/p&gt;
&lt;p&gt;如果不用那就眼不见为净，没有任何烦恼，如果要用，单纯去指责网站意义不大，愤怒、指责、抱怨只是短暂发泄下负面的情绪，没办法彻底解决掉这个问题。因为赚钱嘛，不寒碜。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261456171.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;同时，如果技术网站，要推行类似 Medium 的付费模式。我估计死得更快，我赏脸在你这个破网站上发表文章，没找你要稿费都不错了，我看点别人的文章还要收费？&lt;/p&gt;
&lt;p&gt;毕竟，我们没有这个付费的传统习惯，从最初的音乐、电影、单机游戏和办公软件之类的，能用盗版用盗版，这个怎么说呢，不去评判好坏了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261453320.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;我也有理由说的！现在的视频网站，都什么操作？开通会员还得看广告，这不是坑人吗？会员等级还分三六九等，VIP分成了好几个档次，简直是要把用户的钱包榨干！更夸张的是，同一份资源，换个设备看还要多花钱，这也太离谱了吧！还有那些限制分辨率、限制投屏的操作，这不是欺负人吗？我可是乖乖交了会员费的好人，怎么就要被这样对待？好人就该被枪指着是吧！你们既然这样，那别怪我去找盗版了！脸都不要了！&lt;/p&gt;
&lt;p&gt;很多人都有过上面的经历，所以，才没办法单纯评判好坏。我们不是没有这个付费的传统习惯，我们只会为值得的东西买单。&lt;/p&gt;
&lt;p&gt;再加上 Windows 之前之所以能在中国打开市场，并且，占据大部分市场份额，就是因为它默许了 Windows 盗版横行。而且，在开源这一块也是一样，要想让我们付费和打赏，还是太难了，我看尤雨溪入驻国内 “爱发电” 平台，想要扩宽国内的 Vue 赞助渠道，不会有几个钢镚的。&lt;/p&gt;
&lt;p&gt;所以，回归正传，怎么解决这个技术网站的阅读体验问题呢？&lt;/p&gt;
&lt;p&gt;只能是折中的手段，那就是通过安装广告拦截插件来解决了。甚至定位并拦截哪些广告区域，通过这个方式，后面再浏览各大技术网站时，已经干净很多了。&lt;/p&gt;
&lt;p&gt;至此，现在看技术博文，就是在掘金比较多了，偶尔看下 InfoQ 上的文章，因为有一些资讯或者访谈类的文章，其实还是不错的。&lt;/p&gt;
&lt;p&gt;然后，因为之前的 ARTS 打卡活动，也经常要看下力扣的，现在这个打卡活动结束了，时不时也去看下日常的讨论，还有就是思否，这种问答式的模式其实还是很不错的，只是感觉有些时候，感兴趣的话题不是很多。&lt;/p&gt;
&lt;p&gt;现在，基本不会怎么改变这个习惯了吧。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261501513.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508241419805.jpg"></p>
<p>对于程序员来说，技术网站还是很多的，我可以列举出来很多个，比如 CSDN，简书，掘金，博客园，开源中国，力扣，InfoQ、思否等。</p>
<p>早些年我是逛开源中国的，后来，发现了 CSDN，就迁移到 CSDN 了，但是，CSDN 广告真的太恐怖了，不到万不得已，我是绝对不想打开的，因为真的受不了这个广告，</p>
<p>简书出来之后，就转到简书了，继续写一些技术文章，内容主要是遇到的问题分析、积累的一些解决方案等，但是，后来简书真的吃相越来越难看了。</p>
<p>满屏的广告不说，文章最后本来应该就是评论区的，硬是要在这个小地方塞进去了十几篇推荐的文章，每次看到最后，想看下评论区，都要把窗口拖下去很久才行。</p>
<p>文章左侧还有一个 APP 二维码，一直闪烁，我都不清楚简书的产品经理脑袋里装的都是什么，完全没有脑子，阅读文章内容时，注意力老是被这个二维码的动效干扰，人都变得很烦躁，猜测这个功能的目的，是为了推流下载简书 APP，但是，在实现这个目的过程中，采用了简答粗暴的方式，真的一点脑子都没有。</p>
<p>再加上文章详情页，右侧推荐的文章都是那种 “庞太师与我娘亲二三事” 之类的文章，我当时就觉得受够了，简书死不足惜。</p>
<p>再加上 2017 年饱醉豚无端抹黑程序员事件，彻底激了众怒了，所以，就转到博客园了。</p>
<p>博客园的优点其实很多的，比如整个网站没什么广告，然后个人博客风格还可以自定义，编辑器也过得去，但是不知道什么原因，没有继续在上面发发技术文章，或者平时逛逛，基本上得很少用，只能是我自己的选择问题了。</p>
<p>最后，就迁移到极客时间推出的 InfoQ 网站了，在上面写了几篇技术文章，感觉这个网站没那么多广告，这点还是很不错的，然后不管是编辑器、个人主页都很清爽，但说实话人气确实不咋地。而且，很多文章都是太资讯、行业化了？一看就不是程序员平时写的东西。</p>
<p>后面，迁移到掘金了，在掘金应该是比较久的了，之前一直也是不错的，但是，最近感觉掘金的广告也变多了起来，可能是有 KPI 绩效的要求，每次打开，都要顶部撑开一个大位置，用来放广告，然后再收缩起来，不知道这个动画效果是不是没有处理好的原因，每次都感觉卡顿，然后莫名其妙的。</p>
<p>这一点也是很烦的。以致有人写了文章吐槽这个，有意思的是，这篇文章还上掘金热搜榜了，也不知道掘金小编是怎么审核通过的，还是有格局的，亦或是早就看不惯了，迫于上级要求，只能通过这个方式表达不满了。</p>
<p>然后我现在发文，是掘金和公众号一起，先是在公众号发完，然后同步到掘金，然后再同步到个人博客。这一流程基本沿用至今。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261359433.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261401459.png"></p>
<p>上面就是一些使用技术网站的背景，从上面的描述中，可以看到，其实，自己是疯狂吐槽简书的，挑的问题也最多，那是因为很喜欢简书的，至少一开始真的很惊艳，干干净净，简简单单的，但是现在已经全都变了。</p>
<p>但是，任何事情都要结合实际情况来分析，从不同的角度去看，每个人都有不一样的难处。</p>
<p>用户觉得广告太多，阅读体验差，网站觉得我要运营，要买服务器，要花钱的，不搞点收益，怎么活下去，你们白嫖了还到处抱怨？</p>
<p>要解决这个问题，还是在于用不用。</p>
<p>如果不用那就眼不见为净，没有任何烦恼，如果要用，单纯去指责网站意义不大，愤怒、指责、抱怨只是短暂发泄下负面的情绪，没办法彻底解决掉这个问题。因为赚钱嘛，不寒碜。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261456171.jpg"></p>
<p>同时，如果技术网站，要推行类似 Medium 的付费模式。我估计死得更快，我赏脸在你这个破网站上发表文章，没找你要稿费都不错了，我看点别人的文章还要收费？</p>
<p>毕竟，我们没有这个付费的传统习惯，从最初的音乐、电影、单机游戏和办公软件之类的，能用盗版用盗版，这个怎么说呢，不去评判好坏了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261453320.png"></p>
<p>我也有理由说的！现在的视频网站，都什么操作？开通会员还得看广告，这不是坑人吗？会员等级还分三六九等，VIP分成了好几个档次，简直是要把用户的钱包榨干！更夸张的是，同一份资源，换个设备看还要多花钱，这也太离谱了吧！还有那些限制分辨率、限制投屏的操作，这不是欺负人吗？我可是乖乖交了会员费的好人，怎么就要被这样对待？好人就该被枪指着是吧！你们既然这样，那别怪我去找盗版了！脸都不要了！</p>
<p>很多人都有过上面的经历，所以，才没办法单纯评判好坏。我们不是没有这个付费的传统习惯，我们只会为值得的东西买单。</p>
<p>再加上 Windows 之前之所以能在中国打开市场，并且，占据大部分市场份额，就是因为它默许了 Windows 盗版横行。而且，在开源这一块也是一样，要想让我们付费和打赏，还是太难了，我看尤雨溪入驻国内 “爱发电” 平台，想要扩宽国内的 Vue 赞助渠道，不会有几个钢镚的。</p>
<p>所以，回归正传，怎么解决这个技术网站的阅读体验问题呢？</p>
<p>只能是折中的手段，那就是通过安装广告拦截插件来解决了。甚至定位并拦截哪些广告区域，通过这个方式，后面再浏览各大技术网站时，已经干净很多了。</p>
<p>至此，现在看技术博文，就是在掘金比较多了，偶尔看下 InfoQ 上的文章，因为有一些资讯或者访谈类的文章，其实还是不错的。</p>
<p>然后，因为之前的 ARTS 打卡活动，也经常要看下力扣的，现在这个打卡活动结束了，时不时也去看下日常的讨论，还有就是思否，这种问答式的模式其实还是很不错的，只是感觉有些时候，感兴趣的话题不是很多。</p>
<p>现在，基本不会怎么改变这个习惯了吧。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506261501513.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>找技术答案的经历：从踩坑到用 AI 的变化</title>
      <link>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E6%89%BE%E6%8A%80%E6%9C%AF%E7%AD%94%E6%A1%88%E7%9A%84%E7%BB%8F%E5%8E%86%E4%BB%8E%E8%B8%A9%E5%9D%91%E5%88%B0%E7%94%A8-ai-%E7%9A%84%E5%8F%98%E5%8C%96/</link>
      <pubDate>Sat, 21 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E6%89%BE%E6%8A%80%E6%9C%AF%E7%AD%94%E6%A1%88%E7%9A%84%E7%BB%8F%E5%8E%86%E4%BB%8E%E8%B8%A9%E5%9D%91%E5%88%B0%E7%94%A8-ai-%E7%9A%84%E5%8F%98%E5%8C%96/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508241418402.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;2020 年 7 月，因为第一次使用 Flutter 来开发项目，所以研究后发现，如果要使用 iPhone 真机调试，需要在 XCode 上运行。但当时苹果手机系统版本是 13.6，而 XCode 是 11.3.1，所以运行时出现如下提示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;This&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;iPhone&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;running&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;iOS&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;13.6&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;G68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;which&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;may&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;supported&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Xcode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;An&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;updated&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Xcode&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;may&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;found&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;App&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Store&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;developer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也就是说，当前 XCode 版本过低，不支持当前手机的版本。然而，App Store 没有 XCode 升级提示，我便以为 XCode 还没有新版本发布。那么，要解决这个问题，当下就是想办法让其支持 13.6 版本的手机。&lt;/p&gt;
&lt;p&gt;于是我在百度上搜索，发现 CSDN 有很多 iOS 13.6 真机调试包可以下载，但需要积分。由于 CSDN 广告太多，我早已反感，之前攒的积分也花光了，所以没办法下载。&lt;/p&gt;
&lt;p&gt;当时我就想，为什么别人能弄到这个 13.6 真机调试包，总不可能都是自己做出来的吧。反正我看到 CSDN 上面到处都是，都标着很高的积分，心里暗自吐槽，这尼玛是不是都你抄我、我抄你的啊。好多东西无非就是信息差，提前知道了，或者在外网看了相关讯息，拿到别人的东西，就拿到国内来卖。&lt;/p&gt;
&lt;p&gt;如果是自己辛辛苦苦弄出来的，也认了，毕竟是自己的劳动成果。但如果是拿别人的东西来唬人，那性质就不是一样的了。&lt;/p&gt;
&lt;p&gt;反正很长一段时间里，我使用百度搜索一些问题的解决方案，不下五六篇都是一模一样的，我都不知道谁才是原创。或者本来答案就是 Stack Overflow 上面的，只不过翻译了一下而已，也不给个链接或者标注下，真是糟糕透了。&lt;/p&gt;
&lt;p&gt;基于这个原因，我用必应搜索，搜索到的结果很干净，没有那么多杂七杂八的东西（比如满屏的广告）干扰定位问题答案。&lt;/p&gt;
&lt;p&gt;比如搜索 XCode 13.6 相关内容，我慢慢找，就发现了这个问题：&lt;a href=&#34;https://stackoverflow.com/questions/62934922/xcode-11-5-doesnt-support-ios-13-6&#34;&gt;Xcode 11.5 doesn&amp;rsquo;t support iOS 13.6?&lt;/a&gt;，没错，Stack Overflow 上面就有答案。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506211133523.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Stack Overflow 除了访问很慢，其它没什么问题。而且在这个问答里，我找到了 13.6 真机调试包下载的地方，也就是 Github 上面的&lt;a href=&#34;https://github.com/filsv/iPhoneOSDeviceSupport&#34;&gt;iPhoneOSDeviceSupport&lt;/a&gt;。我看了这个项目，是好几年前的了，甚至 14.0 的真机调试包都有提供。所以我严重怀疑 CSDN 上面那些就是抄的这里的，从这里下载后，自己标上积分供人下载。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506211135778.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508241418402.jpeg"></p>
<p>2020 年 7 月，因为第一次使用 Flutter 来开发项目，所以研究后发现，如果要使用 iPhone 真机调试，需要在 XCode 上运行。但当时苹果手机系统版本是 13.6，而 XCode 是 11.3.1，所以运行时出现如下提示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">This</span> <span class="nx">iPhone</span> <span class="mi">11</span> <span class="k">is</span> <span class="nx">running</span> <span class="nx">iOS</span> <span class="mf">13.6</span> <span class="p">(</span><span class="mi">17</span><span class="nx">G68</span><span class="p">),</span> <span class="nx">which</span> <span class="nx">may</span> <span class="nx">not</span> <span class="nx">be</span> <span class="nx">supported</span> <span class="nx">by</span> <span class="k">this</span> <span class="nx">version</span> <span class="k">of</span> <span class="nx">Xcode</span><span class="p">.</span> <span class="nx">An</span> <span class="nx">updated</span> <span class="nx">version</span> <span class="k">of</span> <span class="nx">Xcode</span> <span class="nx">may</span> <span class="nx">be</span> <span class="nx">found</span> <span class="nx">on</span> <span class="nx">the</span> <span class="nx">App</span> <span class="nx">Store</span> <span class="nx">or</span> <span class="nx">at</span> <span class="nx">developer</span><span class="p">.</span><span class="nx">apple</span><span class="p">.</span><span class="nx">com</span><span class="p">.</span>
</span></span></code></pre></div><p>也就是说，当前 XCode 版本过低，不支持当前手机的版本。然而，App Store 没有 XCode 升级提示，我便以为 XCode 还没有新版本发布。那么，要解决这个问题，当下就是想办法让其支持 13.6 版本的手机。</p>
<p>于是我在百度上搜索，发现 CSDN 有很多 iOS 13.6 真机调试包可以下载，但需要积分。由于 CSDN 广告太多，我早已反感，之前攒的积分也花光了，所以没办法下载。</p>
<p>当时我就想，为什么别人能弄到这个 13.6 真机调试包，总不可能都是自己做出来的吧。反正我看到 CSDN 上面到处都是，都标着很高的积分，心里暗自吐槽，这尼玛是不是都你抄我、我抄你的啊。好多东西无非就是信息差，提前知道了，或者在外网看了相关讯息，拿到别人的东西，就拿到国内来卖。</p>
<p>如果是自己辛辛苦苦弄出来的，也认了，毕竟是自己的劳动成果。但如果是拿别人的东西来唬人，那性质就不是一样的了。</p>
<p>反正很长一段时间里，我使用百度搜索一些问题的解决方案，不下五六篇都是一模一样的，我都不知道谁才是原创。或者本来答案就是 Stack Overflow 上面的，只不过翻译了一下而已，也不给个链接或者标注下，真是糟糕透了。</p>
<p>基于这个原因，我用必应搜索，搜索到的结果很干净，没有那么多杂七杂八的东西（比如满屏的广告）干扰定位问题答案。</p>
<p>比如搜索 XCode 13.6 相关内容，我慢慢找，就发现了这个问题：<a href="https://stackoverflow.com/questions/62934922/xcode-11-5-doesnt-support-ios-13-6">Xcode 11.5 doesn&rsquo;t support iOS 13.6?</a>，没错，Stack Overflow 上面就有答案。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506211133523.png"></p>
<p>Stack Overflow 除了访问很慢，其它没什么问题。而且在这个问答里，我找到了 13.6 真机调试包下载的地方，也就是 Github 上面的<a href="https://github.com/filsv/iPhoneOSDeviceSupport">iPhoneOSDeviceSupport</a>。我看了这个项目，是好几年前的了，甚至 14.0 的真机调试包都有提供。所以我严重怀疑 CSDN 上面那些就是抄的这里的，从这里下载后，自己标上积分供人下载。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506211135778.png"></p>
<p>所以，求知要到知识的源头去。也正因如此，我现在都用必应搜索，或者到 Stack Overflow 找问题解决方案。现在国内的这个环境，真是无力吐槽。</p>
<p>但是，说回到现在 2025 年，因为 AI 的爆发，搜索引擎受到了很大冲击。我感觉 Stack Overflow 基本快没什么人用了，因为遇到问题，第一个想法肯定是先问 AI，最多对不确定的信息再三确认下。毕竟，AI 给的答案不一定都对，需要进一步甄别。但相比之前传统查找解决问题的方式，效率各方面都不可同日而语。</p>
<p>DeepSeek 过年时爆火，现在全球整个 AI 市场，各大模型感觉都不知道升级了多少代，速度真的太快了。比如，最近 360 纳米 AI 又搞出一个超级智能体，也是在进一步探索可能性。</p>
<p>在这样的时代背景下，上面存在的问题，将进一步被其他方式解决，比如使用 AI 来查找问题答案。那么不管各大技术网站、博文质量如何，你都不用操心这些了，最终能去伪存真、化繁为简，直接给你答案。</p>
<p>总之，还是那句话，拥抱变化，淘汰人的不是 AI，而是使用 AI 的人。这句话跟《浪客剑心》的那句台词有异曲同工之处：</p>
<p>“创造时代的并不是刀，而是使用刀的人。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506211404436.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>36-《精力管理》摘要</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/36-%E7%B2%BE%E5%8A%9B%E7%AE%A1%E7%90%86%E6%91%98%E8%A6%81/</link>
      <pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/36-%E7%B2%BE%E5%8A%9B%E7%AE%A1%E7%90%86%E6%91%98%E8%A6%81/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161935829.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;精力就是做事情的能力。包括体能、情感、思维、意志四个方面。&lt;/li&gt;
&lt;li&gt;今天我们要分析一条革命性的理论——管理精力，而非时间，才是是高效表现的基础。&lt;/li&gt;
&lt;li&gt;我们与运动员合作成功的秘诀并非在于技巧或战略。人们通常认为，才华横溢的人面对挑战时只要配备足够技能，就能够发挥出最好的水平。从我们的经验来看却并非如此。精力才是完全点燃才华和技能的正解。&lt;/li&gt;
&lt;li&gt;人们极少考虑我们消耗了多少精力储备，总是想当然地认为它能够随用随取。事实上，不断增长的需求逐步耗尽了我们的精力储备——尤其由于我们不对随着年龄出现的能力减退做任何补救。通过全方位的训练，我们可以极大地减缓身体和思维的衰退，并切实地深化情感和精神的能力，直至生命的尽头。&lt;/li&gt;
&lt;li&gt;如果某件事你每次做之前都需要思考，你很可能不会长久坚持这件事。&lt;/li&gt;
&lt;li&gt;通过运动和休息交替进行可以最大限度提高表现，这条理论最初由斐洛斯特拉图斯提出，他是古希腊运动员训练手册的编撰者。随着训练强度增大、对运动员要求提高，能力的恢复和补偿程度也必然相应增加，否则，运动员的表现将会逐渐下降。&lt;/li&gt;
&lt;li&gt;持续健身能带来身心改善，但若停止一周，曾经的改善就会大幅退步，只要停止4周，这种改善就会完全消失。&lt;/li&gt;
&lt;li&gt;自然本身存在规律的脉动，在活跃和休息之间有节奏、波浪形地交替。涨潮退潮，四季更替，日升日落，不胜枚举。同理，所有有机体都遵从恒久的节奏——鸟类迁徙，熊类冬眠，松鼠收集坚果，鱼儿产卵，生物的活动都有一定的间歇。&lt;/li&gt;
&lt;li&gt;张弛有度是全情投入、维持机能和保持健康的关键。相反，单线化运动最终会导致机能障碍和死亡。想象一幅健康的脑电图或心电图是如何起伏波动的，再想象它的反面，是不是一条直线？&lt;/li&gt;
&lt;li&gt;我拥有在任何情况下高度集中的能力，摒弃那些让我分心的事物。然而，我无法在打完18洞的过程里始终集中精力，即便可以，我怀疑我的思维也会过度损耗，思维变得混沌，最终还是无法推杆入洞。因而我制订了一套步骤，帮助我完成从高度集中到惬意放松的过渡，反之亦然。&lt;/li&gt;
&lt;li&gt;从最实用的角度看，全情投入的能力取决于周期性休息的能力。&lt;/li&gt;
&lt;li&gt;科技的进步永不止息。它本该帮我们更好地感知周围的事物，然而却成为现实中导致我们无法全情投入的祸因。&lt;/li&gt;
&lt;li&gt;《心流》的作者、心理学家米哈里·契克森米哈写道，“最佳时刻，往往发生在一个人的身心为了达成艰难目标或完成有意义的事情，而自愿达到极限的时候。”&lt;/li&gt;
&lt;li&gt;我们还发现，喝水或许是最常被人忽略的体能再生方式。口渴不会像饥饿一样散发出明显的信号，等我们感到口渴的时候，身体或许已经缺水很久了。一家研究机构称，每天至少饮用1.8公斤水对维持体能有诸多好处。&lt;/li&gt;
&lt;li&gt;睡眠需求随年龄、性别、基因体能而异，但普遍的科学共识是：人体每晚需要7至8小时的睡眠才可以运转良好。还有数项研究发现，即使将人们隔绝自然光或钟表，他们还是会每24小时睡眠7至8个小时。&lt;/li&gt;
&lt;li&gt;小憩就是一种精力恢复手段。斯坦皮发现，小睡片刻的工人即便不能长时间睡眠，仍可以保持超过24小时的惊人高效和敏锐。唯一需要注意的地方就是小憩需要定时，以免受试者陷入更深的睡眠中。如果小憩超出30或40分钟，许多受试者会感到眩晕无力，甚至比不睡更加疲倦。&lt;/li&gt;
&lt;li&gt;即便适度锻炼有诸多益处，大多数美国人还是几乎不锻炼。原因很简单，提升力量与耐力需要我们踏出舒适区，体验不适的感觉，并且需要持续一定时间才能见效。但大多数人在看到明显的效果之前就放弃了。&lt;/li&gt;
&lt;li&gt;对需要坐在办公桌前工作的大批白领来说，日常锻炼的缺乏阻碍了机体的自然增强，导致年龄增长后，大多数人应对挑战和压力的能力都逐渐下降。&lt;/li&gt;
&lt;li&gt;定期锻炼可以缓解他的紧张感，帮助他更好地控制情感。&lt;/li&gt;
&lt;li&gt;身体锻炼是思维和情感精力的极佳源泉。&lt;/li&gt;
&lt;li&gt;盖洛普公司发现，保持优秀表现的诀窍之一是在工作环境中至少交一位好朋友。一段稳固的关系包括付出与回报、倾诉与倾听、珍视他人和被人同等珍视。如果一段关系中总是付出而得不到相应的回馈，不免会感到空虚和失落。以自我为中心的关系，也称不上真正的情感关系。&lt;/li&gt;
&lt;li&gt;当愤怒逐渐累积时，保罗会选择用腹部做深呼吸，放松肩膀和面部肌肉，掐断自己一触即发的情绪。当情绪逐渐平复下来，他会想办法将沮丧的感觉用一种大家更容易接受的方式表现出来——通常是自嘲的方式。如果保罗认为有必要提出批评的意见，他会采用 “三明治”技巧。首先真诚地对该员工的良好表现给出正面评价，然后以讨论而非宣讲的形式提出批评意见——因为自己的看法或许并非完全准确，最后以鼓励结尾。用“三明治”的方式提出意见不仅让他看起来充满善意和关怀，而且更容易让员工听取他的建议，不会产生逆反心理。&lt;/li&gt;
&lt;li&gt;只有接受那些看似相反的品质，不逼自己在其间二选一，才有可能获得最深刻最丰富的情感能力。情感层面的全情投入需要遵循斯多葛派哲学家的“破格文体”——美德的共同存在性。从这一角度看来，没有一种美德是不依赖其他品质而成为美德的。所有的美德都有条件。例如，毫不留情的诚实只是残酷而已。&lt;/li&gt;
&lt;li&gt;越来越多证据表明，大脑的运作方式也类似肌肉——积极使用能够提升能力，使用不足就会萎缩。&lt;/li&gt;
&lt;li&gt;尼采有句名言 ：“知晓生命的意义，方能忍耐一切。”任何能够点燃人类精神的事物都有助于全情投入、促进最佳表现。意志精力的关键动力在于性格品质——一个人如果有自己的人生目标，他的勇气和信念，即使面对艰难困苦和个人牺牲也会在所不惜。意志精力由激情、奉献、正直与诚实支持着。&lt;/li&gt;
&lt;li&gt;弗兰克尔是纳粹集中营中幸存的心理学家，他创作了《活出生命的意义》这本经典巨著。书中他引用了尼采的名言：“知晓生命的意义，方能忍耐一切。”弗兰克尔也描述了在不断有人死去的环境中，这个认知如何挽救了他的生命：生而没有意义的人是痛苦的，没有目标、没有目的、无需继续忍受。他很快就会迷失。我们的人生态度需要从根本上转变。我们既要自己学着转变，也要向绝望之人伸出援手，告诉他我们对生活的期待其实并不重要，重要的是生活于我们有何期望。我们要停止追问生命的意义所在，每时每刻提醒自己接受生命的检视。我们的回应不仅体现在言语和冥想中，还要贯穿我们的行为举止。生命的终极意义是担起责任，找寻难题的答案，并且完成生命为每个人设定的任务。&lt;/li&gt;
&lt;li&gt;每个人都拥有许多未知的潜力，只能在困境中才会激发它们。&lt;/li&gt;
&lt;li&gt;当目标感从消极流向积极、从外部流向内部、从自己流向他人，它就成为生活中最强大也最持久的精力源。&lt;/li&gt;
&lt;li&gt;设想一下，如果你坐在一艘行驶在海上的小船里，船底突然开始漏水，你的目的肯定是阻止小船沉下去。但如果你一直忙着舀水，肯定无暇顾及小船的航向。生活也是如此。当我们忙着填补漏洞，不让自己沉底，就没有多余精力探寻更深层的意义了。&lt;/li&gt;
&lt;li&gt;出于对内心深处软弱无力的恐惧，恃强的人会蛮横粗暴地对待他人。因为不愿承认内心的不足，成功的领导者永远都在吹嘘自己的成就，炫耀自己认识多少大人物。&lt;/li&gt;
&lt;li&gt;“邪恶的本质缺陷并非是罪恶本身，而是自我否认。”《少有人走的路》的作者斯科特·派克写道，“邪恶攻击他人，而不承认自己的失败……因为必须否认自己是坏人，所以只能把别人当作坏人。”&lt;/li&gt;
&lt;li&gt;若困在狭隘的自我视角中，我们也不会注意到或有意培养自己的能力。我们或许可以尽力压制自己令人反感的一面，但同时也很难认可自己的优秀品质。&lt;/li&gt;
&lt;li&gt;使用许多手段否认生活中的不如意或逃避为此承担责任。责怪他人并将自己看作受害者是一种常见的方式。&lt;/li&gt;
&lt;li&gt;所有表现卓越的人都依靠积极的仪式习惯管理精力和规范行为。如果你一直久坐不动，打算开始锻炼身体，你可以最开始每周3次、每次步行15分钟，然后逐周增加步行时间或加快步伐。&lt;/li&gt;
&lt;li&gt;不管面对什么样的事情，他要么全情投入，要么有策略地离开。&lt;/li&gt;
&lt;li&gt;人类行为只有5%是受自我意识支配的。我们是习惯的造物，因而我们的行为有95%都是自动反应或对于某种需求或紧急情况的应激反应。&lt;/li&gt;
&lt;li&gt;在任何表现至上的领域，压力与恢复的平衡都至关重要。我们越能高效恢复精力，越能尽快储备资源以备调用。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161935829.png"></p>
<ol>
<li>精力就是做事情的能力。包括体能、情感、思维、意志四个方面。</li>
<li>今天我们要分析一条革命性的理论——管理精力，而非时间，才是是高效表现的基础。</li>
<li>我们与运动员合作成功的秘诀并非在于技巧或战略。人们通常认为，才华横溢的人面对挑战时只要配备足够技能，就能够发挥出最好的水平。从我们的经验来看却并非如此。精力才是完全点燃才华和技能的正解。</li>
<li>人们极少考虑我们消耗了多少精力储备，总是想当然地认为它能够随用随取。事实上，不断增长的需求逐步耗尽了我们的精力储备——尤其由于我们不对随着年龄出现的能力减退做任何补救。通过全方位的训练，我们可以极大地减缓身体和思维的衰退，并切实地深化情感和精神的能力，直至生命的尽头。</li>
<li>如果某件事你每次做之前都需要思考，你很可能不会长久坚持这件事。</li>
<li>通过运动和休息交替进行可以最大限度提高表现，这条理论最初由斐洛斯特拉图斯提出，他是古希腊运动员训练手册的编撰者。随着训练强度增大、对运动员要求提高，能力的恢复和补偿程度也必然相应增加，否则，运动员的表现将会逐渐下降。</li>
<li>持续健身能带来身心改善，但若停止一周，曾经的改善就会大幅退步，只要停止4周，这种改善就会完全消失。</li>
<li>自然本身存在规律的脉动，在活跃和休息之间有节奏、波浪形地交替。涨潮退潮，四季更替，日升日落，不胜枚举。同理，所有有机体都遵从恒久的节奏——鸟类迁徙，熊类冬眠，松鼠收集坚果，鱼儿产卵，生物的活动都有一定的间歇。</li>
<li>张弛有度是全情投入、维持机能和保持健康的关键。相反，单线化运动最终会导致机能障碍和死亡。想象一幅健康的脑电图或心电图是如何起伏波动的，再想象它的反面，是不是一条直线？</li>
<li>我拥有在任何情况下高度集中的能力，摒弃那些让我分心的事物。然而，我无法在打完18洞的过程里始终集中精力，即便可以，我怀疑我的思维也会过度损耗，思维变得混沌，最终还是无法推杆入洞。因而我制订了一套步骤，帮助我完成从高度集中到惬意放松的过渡，反之亦然。</li>
<li>从最实用的角度看，全情投入的能力取决于周期性休息的能力。</li>
<li>科技的进步永不止息。它本该帮我们更好地感知周围的事物，然而却成为现实中导致我们无法全情投入的祸因。</li>
<li>《心流》的作者、心理学家米哈里·契克森米哈写道，“最佳时刻，往往发生在一个人的身心为了达成艰难目标或完成有意义的事情，而自愿达到极限的时候。”</li>
<li>我们还发现，喝水或许是最常被人忽略的体能再生方式。口渴不会像饥饿一样散发出明显的信号，等我们感到口渴的时候，身体或许已经缺水很久了。一家研究机构称，每天至少饮用1.8公斤水对维持体能有诸多好处。</li>
<li>睡眠需求随年龄、性别、基因体能而异，但普遍的科学共识是：人体每晚需要7至8小时的睡眠才可以运转良好。还有数项研究发现，即使将人们隔绝自然光或钟表，他们还是会每24小时睡眠7至8个小时。</li>
<li>小憩就是一种精力恢复手段。斯坦皮发现，小睡片刻的工人即便不能长时间睡眠，仍可以保持超过24小时的惊人高效和敏锐。唯一需要注意的地方就是小憩需要定时，以免受试者陷入更深的睡眠中。如果小憩超出30或40分钟，许多受试者会感到眩晕无力，甚至比不睡更加疲倦。</li>
<li>即便适度锻炼有诸多益处，大多数美国人还是几乎不锻炼。原因很简单，提升力量与耐力需要我们踏出舒适区，体验不适的感觉，并且需要持续一定时间才能见效。但大多数人在看到明显的效果之前就放弃了。</li>
<li>对需要坐在办公桌前工作的大批白领来说，日常锻炼的缺乏阻碍了机体的自然增强，导致年龄增长后，大多数人应对挑战和压力的能力都逐渐下降。</li>
<li>定期锻炼可以缓解他的紧张感，帮助他更好地控制情感。</li>
<li>身体锻炼是思维和情感精力的极佳源泉。</li>
<li>盖洛普公司发现，保持优秀表现的诀窍之一是在工作环境中至少交一位好朋友。一段稳固的关系包括付出与回报、倾诉与倾听、珍视他人和被人同等珍视。如果一段关系中总是付出而得不到相应的回馈，不免会感到空虚和失落。以自我为中心的关系，也称不上真正的情感关系。</li>
<li>当愤怒逐渐累积时，保罗会选择用腹部做深呼吸，放松肩膀和面部肌肉，掐断自己一触即发的情绪。当情绪逐渐平复下来，他会想办法将沮丧的感觉用一种大家更容易接受的方式表现出来——通常是自嘲的方式。如果保罗认为有必要提出批评的意见，他会采用 “三明治”技巧。首先真诚地对该员工的良好表现给出正面评价，然后以讨论而非宣讲的形式提出批评意见——因为自己的看法或许并非完全准确，最后以鼓励结尾。用“三明治”的方式提出意见不仅让他看起来充满善意和关怀，而且更容易让员工听取他的建议，不会产生逆反心理。</li>
<li>只有接受那些看似相反的品质，不逼自己在其间二选一，才有可能获得最深刻最丰富的情感能力。情感层面的全情投入需要遵循斯多葛派哲学家的“破格文体”——美德的共同存在性。从这一角度看来，没有一种美德是不依赖其他品质而成为美德的。所有的美德都有条件。例如，毫不留情的诚实只是残酷而已。</li>
<li>越来越多证据表明，大脑的运作方式也类似肌肉——积极使用能够提升能力，使用不足就会萎缩。</li>
<li>尼采有句名言 ：“知晓生命的意义，方能忍耐一切。”任何能够点燃人类精神的事物都有助于全情投入、促进最佳表现。意志精力的关键动力在于性格品质——一个人如果有自己的人生目标，他的勇气和信念，即使面对艰难困苦和个人牺牲也会在所不惜。意志精力由激情、奉献、正直与诚实支持着。</li>
<li>弗兰克尔是纳粹集中营中幸存的心理学家，他创作了《活出生命的意义》这本经典巨著。书中他引用了尼采的名言：“知晓生命的意义，方能忍耐一切。”弗兰克尔也描述了在不断有人死去的环境中，这个认知如何挽救了他的生命：生而没有意义的人是痛苦的，没有目标、没有目的、无需继续忍受。他很快就会迷失。我们的人生态度需要从根本上转变。我们既要自己学着转变，也要向绝望之人伸出援手，告诉他我们对生活的期待其实并不重要，重要的是生活于我们有何期望。我们要停止追问生命的意义所在，每时每刻提醒自己接受生命的检视。我们的回应不仅体现在言语和冥想中，还要贯穿我们的行为举止。生命的终极意义是担起责任，找寻难题的答案，并且完成生命为每个人设定的任务。</li>
<li>每个人都拥有许多未知的潜力，只能在困境中才会激发它们。</li>
<li>当目标感从消极流向积极、从外部流向内部、从自己流向他人，它就成为生活中最强大也最持久的精力源。</li>
<li>设想一下，如果你坐在一艘行驶在海上的小船里，船底突然开始漏水，你的目的肯定是阻止小船沉下去。但如果你一直忙着舀水，肯定无暇顾及小船的航向。生活也是如此。当我们忙着填补漏洞，不让自己沉底，就没有多余精力探寻更深层的意义了。</li>
<li>出于对内心深处软弱无力的恐惧，恃强的人会蛮横粗暴地对待他人。因为不愿承认内心的不足，成功的领导者永远都在吹嘘自己的成就，炫耀自己认识多少大人物。</li>
<li>“邪恶的本质缺陷并非是罪恶本身，而是自我否认。”《少有人走的路》的作者斯科特·派克写道，“邪恶攻击他人，而不承认自己的失败……因为必须否认自己是坏人，所以只能把别人当作坏人。”</li>
<li>若困在狭隘的自我视角中，我们也不会注意到或有意培养自己的能力。我们或许可以尽力压制自己令人反感的一面，但同时也很难认可自己的优秀品质。</li>
<li>使用许多手段否认生活中的不如意或逃避为此承担责任。责怪他人并将自己看作受害者是一种常见的方式。</li>
<li>所有表现卓越的人都依靠积极的仪式习惯管理精力和规范行为。如果你一直久坐不动，打算开始锻炼身体，你可以最开始每周3次、每次步行15分钟，然后逐周增加步行时间或加快步伐。</li>
<li>不管面对什么样的事情，他要么全情投入，要么有策略地离开。</li>
<li>人类行为只有5%是受自我意识支配的。我们是习惯的造物，因而我们的行为有95%都是自动反应或对于某种需求或紧急情况的应激反应。</li>
<li>在任何表现至上的领域，压力与恢复的平衡都至关重要。我们越能高效恢复精力，越能尽快储备资源以备调用。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>35-《非暴力沟通》摘要</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/35-%E9%9D%9E%E6%9A%B4%E5%8A%9B%E6%B2%9F%E9%80%9A%E6%91%98%E8%A6%81/</link>
      <pubDate>Fri, 13 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/35-%E9%9D%9E%E6%9A%B4%E5%8A%9B%E6%B2%9F%E9%80%9A%E6%91%98%E8%A6%81/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161935924.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;言语上的指责、嘲讽、否定、说教以及任意打断、拒不回应、随意出口的评价和结论给我们带来的情感和精神上的创伤，甚至比肉体的伤害更加令人痛苦。这些无心或有意的语言暴力让人与人变得冷漠、隔膜、敌视。&lt;/li&gt;
&lt;li&gt;我很希望这本书能帮助更多的人安静下来。使用暴力的人其实是因为他们内心的宁静遭到了破坏，所以他们才会用暴力的方式维护或寻求心灵的和平。&lt;/li&gt;
&lt;li&gt;非暴力沟通提醒我们人性是相通的——虽然每个人的价值观和生活方式或许不同，但作为人却有着共同的感受和需要。这样，在发生矛盾和冲突的时候，运用非暴力沟通，我们将能专注于彼此的感受和需要，从而促进倾听、理解以及由衷的互助。&lt;/li&gt;
&lt;li&gt;人们常说：“爱能使心灵的创伤痊愈。”&lt;/li&gt;
&lt;li&gt;作为有色人种，生活在执行种族隔离政策的南非并不是很有意思的事情。在那里，肤色随时都可能给你招来无情的刺激。十岁那年，白人打了我，他们认为我太黑了；接着，黑人又打了我，他们认为我太白了。这样的耻辱也许会让任何人想报复社会。&lt;/li&gt;
&lt;li&gt;非暴力生活的一个关键就是：感激生活的赐予，而不贪心。&lt;/li&gt;
&lt;li&gt;我意识到什么是真正的非暴力以及认识自身暴力的重要性。由于缺乏了解，我们常常认识不到自身的暴力。我们认为，只有打人、鞭挞、杀人以及战争等才算是暴力，而这类事与我们无关。&lt;/li&gt;
&lt;li&gt;因为恐惧无法带来和平。&lt;/li&gt;
&lt;li&gt;让尊重、理解、欣赏、感激、慈悲和友情，而非自私自利、贪婪、憎恨、偏见、怀疑和敌意，来主导生活。人们常说：这是一个弱肉强食的世界，为了生存，我们必须不择手段。这个观点，请恕我无法同意。&lt;/li&gt;
&lt;li&gt;我相信，人天生热爱生命，乐于互助。可是，究竟是什么，使我们难以体会到心中的爱，以致互相伤害？又是什么，让有些人即使在充满敌意的环境中，也能心存爱意？&lt;/li&gt;
&lt;li&gt;也许我们并不认为自己的谈话方式是“暴力”的，但我们的语言确实常常引发自己和他人的痛苦。&lt;/li&gt;
&lt;li&gt;当我们真诚助人时，我们丰富他人生命的愿望得到了满足。我们的行为，是出于由衷的喜悦。&lt;/li&gt;
&lt;li&gt;非暴力沟通的四个要素：1．观察 2．感受 3．需要 4．请求&lt;/li&gt;
&lt;li&gt;首先，留意发生的事情。我们此刻观察到什么？不管是否喜欢，只是说出人们所做的事情。要点是，清楚地表达观察结果，而不判断或评估。接着，表达感受，例如受伤、害怕、喜悦、开心、气愤等等。然后，说出哪些需要导致那样的感受。&lt;/li&gt;
&lt;li&gt;非暴力沟通提醒我们专注于彼此的观察、感受、需要和请求。它鼓励倾听，培育尊重与爱，使我们情意相通，乐于互助。有些人用非暴力沟通理解自己，有些人用它改善人际关系，还有人借助它改进工作。在世界各地，非暴力沟通被用来协调各个层面的争论和冲突。&lt;/li&gt;
&lt;li&gt;对他人的评价实际上反映了我们的需要和价值观。&lt;/li&gt;
&lt;li&gt;分类和评判提倡的是暴力。&lt;/li&gt;
&lt;li&gt;暴力的根源在于人们忽视彼此的感受与需要，而将冲突归咎于对方——至少大部分暴力的根源都是如此。&lt;/li&gt;
&lt;li&gt;美国领导人把前苏联看作是致力于摧毁美国生活方式的“邪恶帝国”；前苏联领导人将美国人看作是试图征服他们的“帝国主义压迫者”。双方都没有承认内心的恐惧。&lt;/li&gt;
&lt;li&gt;如果真的想过上悲惨生活，就去与他人做比较。&lt;/li&gt;
&lt;li&gt;比较也是一种评判。&lt;/li&gt;
&lt;li&gt;我们对自己的思想、情感和行动负有责任。可是，人们广泛使用“不得不”这一短语。例如：“不管你是否喜欢，有些事你不得不做。”显然，这种表达方式淡化了个人责任。“你让我”是人们常用的另一短语，例如：“你让我伤透了心。”此时，我们的表达方式忽视了我们情感的内在根源。&lt;/li&gt;
&lt;li&gt;我们可以用负责任的语言代替回避责任的语言。&lt;/li&gt;
&lt;li&gt;一旦意识不到我们是自己的主人，我们就成了危险人物。&lt;/li&gt;
&lt;li&gt;我们无法强迫他人按我们的期待生活。&lt;/li&gt;
&lt;li&gt;认为“某人应当受到惩罚”使我们难以体会到心中的爱。&lt;/li&gt;
&lt;li&gt;我们大多数的人使用的语言倾向于评判、比较、命令和指责，而不是鼓励我们倾听彼此的感受和需要。&lt;/li&gt;
&lt;li&gt;对于国王、沙皇、贵族来说，将臣民训练得具有奴隶般的精神状态符合他们的利益。“不应该”、“应该”和“不得不”这些表达方式特别适合这个目的：人们越是习惯于评定是非，他们也就越倾向于追随权威，来获得正确和错误的标准。一旦专注于自身的感受和需要，我们就不再是好奴隶和好属下。&lt;/li&gt;
&lt;li&gt;人天生热爱生命，乐于互助。可是，异化的沟通方式使我们难以体会到心中的爱。道德评判就是其中的一种，它将不符合我们价值观的人看作是不道德的或邪恶的。进行比较也是一种评判，它会蒙蔽对人对己的爱意。异化的沟通方式还淡化了我们对自己的思想、情感和行为的责任意识。此外，强人所难也会造成心灵的隔阂。&lt;/li&gt;
&lt;li&gt;不区分观察和评论，人们将倾向于听到批评。&lt;/li&gt;
&lt;li&gt;非暴力沟通的第一个要素是观察。我们仔细观察正在发生的事情，并清楚地说出观察结果。非暴力沟通并不要求我们保持完全的客观而不作任何评论。它只是强调区分观察和评论的重要性。将观察和评论混为一谈，人们将倾向于听到批评，甚至会产生逆反心理。&lt;/li&gt;
&lt;li&gt;不带评论的观察是人类智力的最高形式。&lt;/li&gt;
&lt;li&gt;对于大多数的人来说，观察他人及其行为，而不评判、指责或以其他方式进行分析，是难以做到的。&lt;/li&gt;
&lt;li&gt;非暴力沟通的第一个要素是观察。将观察和评论混为一谈，别人就会倾向于听到批评，并反驳我们。非暴力沟通是动态的语言，不主张绝对化的结论。它提倡在特定的时间和情境中进行观察，并清楚地描述观察结果。例如，它会说“欧文在过去的5场比赛中没有进一个球”，而不是说“欧文是个差劲的前锋”。&lt;/li&gt;
&lt;li&gt;只是描述观察结果而不含任何评论。&lt;/li&gt;
&lt;li&gt;非暴力沟通的第二个要素是感受。心理学家罗洛·梅（Rollo May）认为：“成熟的人十分敏锐，就像听交响乐的不同乐章，不论是热情奔放，还是柔和舒缓，他都能体察到细微的起伏。”&lt;/li&gt;
&lt;li&gt;当我们说“我觉得”，我们常常并不是在表达感受，而是在表达想法。&lt;/li&gt;
&lt;li&gt;非暴力沟通的第二个要素是感受。通过建立表达感受的词汇表，我们可以更清楚地表达感受，从而使沟通更为顺畅。在表达感受时，示弱有助于解决冲突。此外，非暴力沟通还对表达具体感受的词语与陈述想法、评论以及观点的词语作了区分。&lt;/li&gt;
&lt;li&gt;非暴力沟通强调，感受的根源在于我们自身。我们的需要和期待，以及对他人言行的看法，导致了我们的感受。&lt;/li&gt;
&lt;li&gt;听到不中听的话的四种选择：
1．责备自己 2．指责他人 3．体会自己的感受和需要 4．体会他人的感受和需要&lt;/li&gt;
&lt;li&gt;批评往往暗含着期待。对他人的批评实际上间接表达了我们尚未满足的需要。如果一个人说“你从不理解我”，他实际上是渴望得到理解。如果太太说“这个星期你每天都工作到很晚，你喜欢工作，不喜欢我”，那反映了她看重亲密关系。&lt;/li&gt;
&lt;li&gt;如果我们通过批评来提出主张，人们的反应常常是申辩或反击。反之，如果我们直接说出需要，其他人就较有可能作出积极的回应。&lt;/li&gt;
&lt;li&gt;双方都习惯于指责对方。&lt;/li&gt;
&lt;li&gt;如果我们不看重自己的需要，别人可能也不会。实际上，如果直接说出需要，获得积极回应的可能性就会增加。&lt;/li&gt;
&lt;li&gt;对于大多数人来说，个人成长一般会经历三个阶段：（1）“情感的奴隶”——我们认为自己有义务使他人快乐；（2）“面目可憎”时期——此时，我们拒绝考虑他人的感受和需要；（3）“生活的主人”——我们意识到，虽然我们对自己的意愿、感受和行动负有完全的责任，但无法为他人负责。与此同时，我们还认识到，我们无法牺牲他人来满足自己的需要。&lt;/li&gt;
&lt;li&gt;首先，清楚地告诉对方，我们希望他们做什么。如果我们请求他人不做什么，对方也许会感到困惑，不知道我们到底想要什么。而且，这样的请求还容易引起别人的反感。&lt;/li&gt;
&lt;li&gt;我们提出的请求越具体越好。如果我们的意思含糊不清，别人就难以了解我们到底想要什么。&lt;/li&gt;
&lt;li&gt;抽象的语言无助于深化自我认识。&lt;/li&gt;
&lt;li&gt;许多来向我求助的人后来发现，他们感到沮丧或灰心，很大程度上是因为他们不清楚自己对他人究竟有什么样的期待。&lt;/li&gt;
&lt;li&gt;如果我们只是表达自己的感受，别人可能就不清楚我们想要什么。&lt;/li&gt;
&lt;li&gt;像“你没有听明白”“这不是我的意思”“你听错了”这样的表达，很可能会让托尼觉得老师在批评他。&lt;/li&gt;
&lt;li&gt;参加集体讨论时，说清楚我们希望得到怎样的反馈，是至关重要的。如果不清楚发言的目的，我们的讨论也许只是在浪费时间，而无法满足任何人的需要。&lt;/li&gt;
&lt;li&gt;如何区分命令和请求：请求没有得到满足时，提出请求的人如果批评和指责，那就是命令；如果想利用对方的内疚来达到目的，也是命令。&lt;/li&gt;
&lt;li&gt;我们越是将他人的不顺从看作是对我们的排斥，我们所表达的愿望就越有可能被看作是命令。&lt;/li&gt;
&lt;li&gt;在生活中，如果我们不想勉强人，那么，清楚地表明这一点是重要的——这有助于人们相信我们提出的是请求而非命令。&lt;/li&gt;
&lt;li&gt;在人们无法满足我们的愿望时，我们是否尊重他们的感受和需要最能体现我们提出的是请求还是命令。如果我们愿意去体会是什么使他们无法说“是”，那么，根据我的定义，我们提出的就是请求而非命令。选择通过请求而非命令来表达愿望，并不意味着，一旦人们说“不”，我们就不再去满足自己的需要。但它意味着，除非已经充分体会是什么妨碍了他人说“是”，我们就不会试图说服他们。&lt;/li&gt;
&lt;li&gt;如果我们只是想改变别人，以使他们的行动符合我们的利益，那么非暴力沟通并不是适当的工具。非暴力沟通是用来帮助我们在诚实和倾听的基础上与人联系。使用非暴力沟通时，我们希望人们的改变和行动是出于对生命的爱。一旦人们相信我们看重彼此的感情，并能兼顾双方的需要，那么，他们也就会相信我们所表达的愿望是请求而非命令。&lt;/li&gt;
&lt;li&gt;我要会见的学生有四十位。在学校中，他们被看作是“品行不端”的学生。我认为，像“品行不端”这样的标签会带来很消极的影响。如果一个学生被贴上这样的标签，那岂不是说他不遵守学校规矩是正常的吗？这样的标签将鼓励学生做我们不希望他们做的事，然后，他们的行为似乎又进一步证实了我们的判断。&lt;/li&gt;
&lt;li&gt;“在印象中，如果我没照你说的去做，你就不会尊重我。如果我知道你并不想使唤我，在你叫我时，我会乐于回应你。如果你高高在上，像个盛气凌人的老板，你将会发现，你一头撞在了墙上。当你反复提醒我，你为我做的各种事情，你最好准备再次碰壁！你可以大声抱怨、责骂，但我仍不会去倒垃圾。即使你现在改变方式，我也需要时间忘记不快。”&lt;/li&gt;
&lt;li&gt;一旦人们认为不答应我们就会受到责罚，他们就会把我们的请求看作是命令。如果我们清楚地表达我们无意强人所难，人们一般会相信，我们提出的是请求而非命令。非暴力沟通的目的不是为了改变他人来迎合我们。相反，非暴力沟通重视每个人的需要，它的目的是帮助我们在诚实和倾听的基础上与人联系。&lt;/li&gt;
&lt;li&gt;在前四章中，我们介绍了如何通过非暴力沟通的四个要素来表达自己。本章我们将探讨如何倾听他人，了解他们的观察、感受、需要和请求，并给予反馈。&lt;/li&gt;
&lt;li&gt;尽管有种种相似之处，生活的每时每刻就像一个刚出生的婴儿，一张新的面孔，我们从未见过，也不可能再次见到。我们无法停留在过去，也无法预见我们的反应。我们需要不带成见地感受变化。我们需要用全身心去倾听。&lt;/li&gt;
&lt;li&gt;在安慰他人或提建议前，先看看那是否是他们想要的。&lt;/li&gt;
&lt;li&gt;·建议：“我想你应该……”
·比较：“这算不了什么。你听听我的经历……”
·说教：“如果你这样做……你将会得到很大的好处。”
·安慰：“这不是你的错；你已经尽最大努力了。”
·回忆：“这让我想起……”
·否定：“高兴一点。不要这么难过。”
·同情：“哦，你这可怜的人……”
·询问：“这种情况是什么时候开始的？”
·辩解：“我原想早点打电话给你，但昨晚……”
·纠正：“事情的经过不是那样的。”&lt;/li&gt;
&lt;li&gt;说了什么，并考虑他的情况符合哪种理论，我们是在诊断人——我们并没有倾听他们。在非暴力沟通中，倾听他人意味着，放下已有的想法和判断，一心一意地体会他人。倾听的这种品质体现了它与理解以及同情之间的区别。&lt;/li&gt;
&lt;li&gt;分析妨碍了倾听。&lt;/li&gt;
&lt;li&gt;不论别人说什么，我们只听到他们此时此刻的（a）观察，（b）感受，（c）需要 和（d）请求。&lt;/li&gt;
&lt;li&gt;在倾听他人的观察、感受、需要和请求之后，我们可以主动表达我们的理解。如果我们已经准确领会了他们的意思，我们的反馈将帮助他们意识到这一点。反之，如果我们的理解还不到位，他们也就有机会来纠正我们。此外，这样做还有助于人们体会自己的状况，从而深入了解自己。&lt;/li&gt;
&lt;li&gt;一般来说，如果一个人在说话时有明显的情绪，他一般会期待得到他人的反馈。如果我们自己是说话的那个人，我们不妨清楚地表明我们是否期待反馈。&lt;/li&gt;
&lt;li&gt;一个人在听别人谈自己的感受和需要时，将会留意其中是否暗含着批评或嘲讽。如果我们的语气很肯定，仿佛是在宣布他们的内心世界，那么，通常不会有好的反应。然而，一旦别人通过我们的语气意识到我们是在体会，而非下结论，他们一般就不会产生反感。&lt;/li&gt;
&lt;li&gt;有时，我们认为自己受到了指责，实际上，那些话是他人表达需要和请求的方式。如果意识到这一点，我们就不会认为自己的人格受到了伤害。反之，如果一心分析自己或对方的过错，我们就会认为自己被贬低了。&lt;/li&gt;
&lt;li&gt;作家约瑟夫·坎伯（Joseph Campbell）说道：“为了幸福，必须把‘别人怎么看我’这个问题放在一边。”&lt;/li&gt;
&lt;li&gt;如果人们常常怀疑我们的诚意，那么，我们就需要好好审视自己的动机。也许，我们只是在机械地运用非暴力沟通，而忘记其目的。这时，我们就可以问自己，我们关心的是加深与人的联系，还是以“标准的”非暴力沟通方式来说话。或者，虽然我们是以非暴力沟通的方式来表达自己，我们在乎的也许只是改变他人来迎合我们的需要。&lt;/li&gt;
&lt;li&gt;一旦一个人意识到自己得到了理解和接纳，一般来说，他会觉得很惬意。&lt;/li&gt;
&lt;li&gt;怎样判断对方的感受是否已经充分表达呢？首先，如果一个人觉得别人已经完全明白他的意思，他就会变得轻松。这时，我们也会感到放松。另一个更为明显的标志是，他停止了谈话。如果无法确定对方是否还有话要说，就不妨问一句：“你还有什么话要告诉我吗？”&lt;/li&gt;
&lt;li&gt;我们无法给别人我们自己都没有的东西。有时，我们会发现自己没有心情去关心别人。一般来说，这反映了我们也需要得到关心。如果告诉他人我们正处于痛苦中，我们无法顾及他们的感受和需要，别人很可能就会伸出援手。&lt;/li&gt;
&lt;li&gt;联合国前秘书长汉马斯克德（Dag Hammarskjold）曾经说道：“你越是留意自己内心的声音，就越能够听到别人的声音。”一旦我们能够敏锐地察觉并照顾自己的感受和需要，我们就有能力迅速调整好状态，来倾听他人。&lt;/li&gt;
&lt;li&gt;我大声地提出请求，是为了提醒他们注意我此时此刻的痛苦和需要。&lt;/li&gt;
&lt;li&gt;当他人遭遇不幸时，我们常常急于提建议，安慰，或表达我们的态度和感受。为了倾听他人，我们需要先放下已有的想法和判断，全心全意地体会对方。倾听他人有助于对他人的理解和接纳。&lt;/li&gt;
&lt;li&gt;如果有人倾听你，不对你评头论足，不替你担惊受怕，也不想改变你，这多美好啊……每当我得到人们的倾听和理解，我就可以用新的眼光看世界，并继续前进……这真神奇啊！一旦有人倾听，看起来无法解决的问题就有了解决办法，千头万绪的思路也会变得清晰起来。&lt;/li&gt;
&lt;li&gt;非暴力沟通鼓励我们表达自己最深的感受和需要，因此，我们有时也许会发现运用非暴力沟通是富有挑战性的。然而，通过倾听，我们将意识到他人的人性以及彼此的共通之处，这会使自我表达变得容易些。我们越是倾听他人语言背后的感受和需要，就越不怕与他们坦诚地沟通。我们最不愿意示弱的时候往往是因为担心失去控制想显得强硬的时候。&lt;/li&gt;
&lt;li&gt;“你和我们说，在一个生气的人面前，永远不要用‘不过’‘可是’‘但是’之类的词语。一开始，我很想为自己辩护，我想和他说，‘可是，我们真的没房间’。幸好，在那时，我想起了那句话。我一直记得这句话，是因为在一周前，妈妈在和我争吵时说，‘如果我说什么，你都说‘但是’，小心我杀了你’。想一想，我妈妈生气时听到‘但是’都想杀了我，何况那个男人呢？如果我在他愤怒时说，‘可是，我们真的没房间’，我想我早就没命了。”&lt;/li&gt;
&lt;li&gt;当别人说“不”的时候，我们常常会认为他们是在拒绝我们。有时，我们甚至还会觉得自己受到了伤害。然而，如果我们能够体会他人的感受和需要，我们也许就会发现是什么使他们无法答应我们的请求。&lt;/li&gt;
&lt;li&gt;有的时候，谈话的气氛很沉闷。我们体会不到说话的人有怎样的感受和需要，也不知道他对我们有什么期待。这样的谈话是很累人的。它只是在浪费我们的时间，而无法帮助我们与他人加深联系。这种局面的出现往往是因为说话的人并不清楚自己的感受、需要和请求。&lt;/li&gt;
&lt;li&gt;人们常常没有意识到，他们需要的是别人的理解和接纳。他们也没有意识到，直接表达自己的感受和需要，与讲故事相比，更容易得到他们所期待的联系。&lt;/li&gt;
&lt;li&gt;说的人更希望对方打断，而不是假装在听。&lt;/li&gt;
&lt;li&gt;所有的人都希望自己的话对人有益，而不想被人当作负担。&lt;/li&gt;
&lt;li&gt;有的时候，我们说了心里话，很想知道对方的反应，却发现对方一句话也不说。这时，我们也许会很不安，容易把事情往坏处想。在别人保持沉默时，我们一般会觉得有些别扭，而很难静下心来体会对方的感受和需要。&lt;/li&gt;
&lt;li&gt;倾听使我们勇于面对自己的弱点。它还可以帮助我们预防潜在的暴力，使谈话生动有趣，并了解“不！”和沉默所反映的感受和需要。一次又一次，我见证了，倾听帮助人们治愈心灵的创伤。&lt;/li&gt;
&lt;li&gt;非暴力沟通最重要的应用也许是培养对自己的爱。&lt;/li&gt;
&lt;li&gt;如何培养对自己的爱呢？转变自我评价的方式是一个重要方面。既然希望自己所做的任何事情都是有益的，那么，自我评价的方式就要有助于学习，使我们的选择符合生命的需要。然而，不幸的是，我们的自我评价方式往往导致自我憎恨，而无助于学习。&lt;/li&gt;
&lt;li&gt;失误揭示我们的局限性，并引导我们的成长。&lt;/li&gt;
&lt;li&gt;我希望，我们的改变是出于对生命的爱，而不是出于羞愧或内疚这些具有负面影响的心理。&lt;/li&gt;
&lt;li&gt;羞愧是自我憎恨的一种形式，出于羞愧的行为不是自由而快乐的行为。即使我们试图更加友善和体贴，一旦人们意识到我们行为背后的羞愧或内疚，他们对这些行为的欣赏也就比不上那些只是出于爱的行为。在我们的语言中，有一个词极易引起羞愧和内疚。我们经常使用它来打击自己。它在我们的意识中是如此根深蒂固，以致许多人无法想象，没有它生活将如何继续。这个词就是“应该”，也就是“我应该早点知道”或“我不应该做那件事情”中的“应该”。如果我们认为自己“应该”怎么样，在大多数的情况下，我们也就封闭了自我。因为“应该”意味着我们别无选择。这使我们感到无奈和沮丧。同时，又心有不甘，不愿屈服。&lt;/li&gt;
&lt;li&gt;自责是尚未满足的需要的可悲表达。&lt;/li&gt;
&lt;li&gt;经常责备自己、强迫自己将使我们“更像椅子而不像人”。非暴力沟通认为，对他人的指责反映了我们遇到了挫折——他人的行为不符合我们的需要。如果我们指责的那个人恰好是我们自己，那么，言下之意是：“我的行为不符合我的需要。”我相信，如果我们专注于需要是否得到满足以及得到怎样的满足，我们就更有可能从自我评价中获益。&lt;/li&gt;
&lt;li&gt;如果发现我们痛骂自己：“你看你，又把事情搞砸了！”我们马上就可以问：“我什么样的需要没有得到满足？”一旦意识到自己尚未满足的需要——很可能是多个层面的需要，我们的身心状态就会发生明显的变化。我们不再感到羞愧、内疚和沮丧，而开始体会到别的情感。不论它们是忧愁、失望、恐惧、悲伤、挫折感或别的——其目的都是推动我们去满足需要和追逐梦想。&lt;/li&gt;
&lt;li&gt;非暴力沟通鼓励我们直面人生的苦难：在遇到挫折时，充分体会人生的悲哀和内心的渴望。是的，感到遗憾是难免的。但它能帮助我们从经历中学习，而无须责备自己。我们意识到过去的行为违背了自己的需要及价值观，并允许这种觉察引发的情感充分流淌。一旦专注于尚未满足的需要，我们就会考虑如何满足它。反之，如果用苛刻的语言指责自己，我们不仅难以找到解决办法，而且容易陷于自我惩罚的痛苦中。&lt;/li&gt;
&lt;li&gt;非暴力沟通自我宽恕：感到遗憾时，我们试图了解过去的行为所要满足的需要。&lt;/li&gt;
&lt;li&gt;人的行为总是服务于自身的需要及价值观。&lt;/li&gt;
&lt;li&gt;当我们拥抱自己的各个方面，并理解它们所反映的需要及价值观，我们活在对自己深深的爱之中。&lt;/li&gt;
&lt;li&gt;我深信，出于对生命纯洁的爱，而不是出于恐惧、内疚、羞愧、职责或义务来选择生活，是爱惜自己的重要体现。&lt;/li&gt;
&lt;li&gt;不论你选择做什么，了解自己为什么要那样做。&lt;/li&gt;
&lt;li&gt;我们知道，如果不做某些事情，我们就会责备自己。我们认为不做那些事情是不对的、愚蠢的。可是，如果为了体面而循规蹈矩，我们最终难免会感到厌烦。&lt;/li&gt;
&lt;li&gt;最危险的行为也许是“因为别人的要求”我们不得不做。&lt;/li&gt;
&lt;li&gt;我相信，我们越是投入服务生命的乐趣中——服务生命是唯一的目的，我们也就越爱自己。&lt;/li&gt;
&lt;li&gt;非暴力沟通最重要的应用也许在于培育对自己的爱。当我们的表现不完美时，我们可以通过体会忧伤和自我宽恕，来看清个人成长的方向，以及避免自我惩罚。评价自己的行为时，我们专注于尚未满足的需要；这样，我们就不再依赖羞愧、内疚、恼怒或沮丧的心理来寻求改变，而让爱主导我们的学习和成长。&lt;/li&gt;
&lt;li&gt;充分表达愤怒的第一步是我们不再归咎于他人。如果我们认为“他让我很生气”，那么，我们难免就会指责他人。然而，实际情况是，我们心情并不取决于他人的行为。&lt;/li&gt;
&lt;li&gt;生气的原因在于我们的想法——对他人的评判和指责。&lt;/li&gt;
&lt;li&gt;如果在一个社会中，内疚被运用来控制人；那么，指责他人就容易成为一种习惯。同时，为了使这种手段奏效，我们可能就会认为一个人可以主导另一个人的情绪。&lt;/li&gt;
&lt;li&gt;听到不中听的话时，我们有四种选择：1．责备自己；2．指责他人；3．体会自己的感受和需要；4．体会他人的感受和需要。&lt;/li&gt;
&lt;li&gt;希望他人因为内疚发生改变，就是将刺激和原因混为一谈。&lt;/li&gt;
&lt;li&gt;假定我们约了个人，时间到了，她却没来。如果彼此的关系处于比较微妙的时期，我们可能会忧心忡忡。如果我们看重的是诚实守信，我们也许会觉得不耐烦。反之，如果我们想休息一会儿，我们可能就不会介意她来晚了。因此，同一件事情，不同的需要导致不同的感受。一旦意识到自己的需要——不论是友谊、诚信还是休息，我们就可以更加体贴自己。我们可能会有强烈的情绪，但不再生气。可是，如果意识不到自己尚未满足的需要，一心考虑别人的过错，我们难免就会生气。除了专注于自身的感受和需要，我们还可以选择去体会对方的感受和需要。此时，我们也不会感到生气。我们无须压抑愤怒，只要我们专注于他人的感受和需要，愤怒也就不再存在。&lt;/li&gt;
&lt;li&gt;在我看来，愤怒是我们的思维方式造成的。它的核心是尚未满足的需要。如果我们能够借助它来提醒自己——我们有需要没有得到满足，而我们的思维方式正使它难以得到满足，那愤怒就是有价值的。&lt;/li&gt;
&lt;li&gt;愤怒驱使我们去惩罚他人，而不是去满足需要。&lt;/li&gt;
&lt;li&gt;我们将会有意识地用“我生气是因为我需要……”来取代“我生气是因为他们……”。&lt;/li&gt;
&lt;li&gt;我生气的原因不在于别人做了什么，而在于我怎么看待对方及其行为。&lt;/li&gt;
&lt;li&gt;当我们意识到自己的需要，愤怒就转变为服务需要的情感。&lt;/li&gt;
&lt;li&gt;如果人们认为自己的痛苦是由其他人造成的，并认为那些人应该受到谴责或惩罚，那么，就像这位年轻的囚犯那样，他们播下了暴力的种子。&lt;/li&gt;
&lt;li&gt;指责一个人，往往使我们的愿望更难得到满足。&lt;/li&gt;
&lt;li&gt;指责他人有时可以使我们达到目的——出于害怕、内疚或惭愧，他们改变了自己的行为。&lt;/li&gt;
&lt;li&gt;批评和指责使人倾向于自我保护并变得更有攻击性。&lt;/li&gt;
&lt;li&gt;我们只是静静地体会自己。接着，想一想是什么想法使我们生气了。&lt;/li&gt;
&lt;li&gt;越是能够倾听他人，也越有机会被倾听。&lt;/li&gt;
&lt;li&gt;在大多数的情况下，在表达自己之前，我们需要先倾听他人。如果对方还处于某种情绪中，他们就很难静下心来体会我们的感受和需要。一旦我们用心倾听他们，并表达我们的理解，在得到倾听和理解之后，他们一般也就会开始留意我们的感受和需要。&lt;/li&gt;
&lt;li&gt;一旦意识到他人的感受和需要，我们就会发现彼此相同的人性。&lt;/li&gt;
&lt;li&gt;留意头脑中出现的暴力想法，而不评判它们。&lt;/li&gt;
&lt;li&gt;那位先生一直诉说着他的忧虑和不满。不经意间，他已经从犹太人谈到了黑人。看起来，他渴望有人了解他的痛苦。我静静地听着，大概十分钟后，他停了下来。他觉得我已经理解了他。&lt;/li&gt;
&lt;li&gt;人们常常觉得自己受到了指责，有时他们自己也同意，并开始恨自己——但这并不意味着他们会改变自己的行为。&lt;/li&gt;
&lt;li&gt;我们需要有足够的耐心来学习和运用非暴力沟通。在与人交往的过程中，我们的第一反应常常是习惯性的反应，因此，运用非暴力沟通有时是很别扭的事。然而，如果我们想要实现自己的人生选择，我们就要给自己充分的时间。&lt;/li&gt;
&lt;li&gt;练习把每一个指责都转化为尚未满足的需要。&lt;/li&gt;
&lt;li&gt;如果你希望自己在生气的时候也能运用非暴力沟通，我建议你做以下的练习。在前面，我们已经提到，我们生气是因为我们的想法——我们认为人们“应该”或“不应该”做什么，我们还给人贴上各种标签，并说长论短。请留意我们头脑中“我不喜欢抽烟的人……”之类的想法。然后，问自己：“我不喜欢他们……，是因为我什么样的需要没有得到满足？”通过这样的方式，我们就把注意力放在了尚未得到满足的需要，而不是考虑他人有什么过错。&lt;/li&gt;
&lt;li&gt;在生气时，批评和指责他人都无法真正传达我们的心声。如果想充分表达愤怒，我们就不能归咎于他人，而把注意力放在自己的感受和需要上。与批评和指责他人相比，直接说出我们的需要更有可能使我们的愿望得到满足。&lt;/li&gt;
&lt;li&gt;表达愤怒的四个步骤是：（1）停下来，除了呼吸，什么都别做；（2）想一想是什么想法使我们生气了；（3）体会自己的需要；（4）表达感受和尚未满足的需要。有时，在第3步和第4步之间，我们需要先倾听他人。在得到倾听和理解之后，他们也就可以静下心来体会我们的感受和需要。&lt;/li&gt;
&lt;li&gt;非暴力沟通认为，如果一个人做的事情会伤害到自己或他人，那是因为他不够成熟。为此，他需要得到帮助。如果我们不够成熟，我们可能会有以下的表现：（1）我们意识不到自己行为的后果；（2）我们认识不到，我们并不需要通过惩罚他人来满足自己的需要；（3）我们相信，我们有“权利”去惩罚或伤害他人，因为他们是罪有应得；（4）我们产生了幻觉，例如，听到“某种声音”叫我们去杀人。&lt;/li&gt;
&lt;li&gt;使用防卫性的强制力，是为了保护自己或他人，而不是为了惩罚、羞辱或谴责他人。&lt;/li&gt;
&lt;li&gt;我们希望痛苦能让他们：（1）意识到自己的过错；（2）感到懊悔；（3）改变行为。然而，在实际生活中，惩罚往往加强了对方的敌意和抵触心理，使双方的关系更加疏远。&lt;/li&gt;
&lt;li&gt;有的时候孩子拒绝做一件对他们有益的事情，只是因为他们不想在父母的压力面前屈服。其次，即使体罚能带来立竿见影的效果，这也并不意味着，其他方法无法达到同样的效果。最后，我还担心，体罚孩子会造成不良的社会影响。如果我们把暴力作为解决问题的办法，虽然孩子可能会去做我们要求的事，但这样做难道不是在鼓励孩子用暴力来解决冲突吗？&lt;/li&gt;
&lt;li&gt;当我们为了回避惩罚去做事情时，我们可能会忽视事情本身的价值，而陷于对失败的忧虑。如果员工的表现只是在服从管理层的命令，士气就会受到影响；或迟或早，工作效率就会降低。&lt;/li&gt;
&lt;li&gt;我希望他基于怎样的原因去做我想要他做的事情？&lt;/li&gt;
&lt;li&gt;了解别人基于什么样的原因来满足我们的愿望是至关重要的。&lt;/li&gt;
&lt;li&gt;在有些情形中，我们没有机会和他人交流，这时，我们也许需要使用强制力来保护自己和他人。我们这样做，是为了避免伤害，而不是为了惩罚他人。如果我们威胁他人或实施惩罚，人们常常会产生敌意和抵触心理。这样，彼此的关系将会疏远。同时，惩罚还可能使人忽视事情本身的意义，而把注意力放在不服从的后果上。如果我们试图通过惩罚来使人们认识自己的需要，那么，我们很可能适得其反。&lt;/li&gt;
&lt;li&gt;然而，对于大多数人来说，倾听和表达自己的需要并不容易。一般来说，我们的文化倾向于把个人需要看作是消极的、具有破坏性的。如果一个人公开表达自己的需要，就很可能被看作是自私的。&lt;/li&gt;
&lt;li&gt;专注于我们想要做的，而不是追究错在哪里。&lt;/li&gt;
&lt;li&gt;我感到惊讶的是，只要我不再批评和指责他人，而把注意力放在自己的感受和需要，我的心情就放松了许多。&lt;/li&gt;
&lt;li&gt;在情绪低落的时候，我们也许会怨天尤人。然而，如果我们以苛刻的态度对人对己，我们的心情也好不到哪里去。通过运用非暴力沟通，我们不再试图分析自己或他人有什么毛病，而是用心去了解我们的需要，这样，我们的内心将逐渐变得平和。一旦我们发现自己心底深处的愿望，并采取积极的行动，我们将会重获生活的热情。&lt;/li&gt;
&lt;li&gt;优雅地接受别人的感激。&lt;/li&gt;
&lt;li&gt;在别人表达感激时，人们通常有两种截然不同的反应。一种是自我膨胀，相信我们比别人优越；另一种是假谦虚，否定别人的欣赏，耸耸肩说：“哦，这没什么。”纳菲滋帮助我看到了，我们有别的方式来听取感激。如果我意识到我的能力是生命赋予我的，我就能够同时避免自我膨胀和假谦虚。&lt;/li&gt;
&lt;li&gt;虽然人们在听到感激时会不太自在，但绝大多数的人渴望得到他人的肯定和感激。&lt;/li&gt;
&lt;li&gt;我刚刚结束一个有100多人参加的研讨班，除了一个人，其他人都高度评价这次的研讨班。然而，我牢记的却是那个人的不满。&lt;/li&gt;
&lt;li&gt;约翰·鲍威尔（John Powell）在他的《爱的秘密》一书中讲到，对于没有在父亲活着的时候表达自己的感激，他十分伤心。这激起了我的强烈共鸣。如果无法向那些对我们的一生有极为重要影响的人表达感激，我们会感到多么悲哀啊！&lt;/li&gt;
&lt;li&gt;在赞扬他人时，我们很少揭示内心活动，而把自己放在了裁判的位置。赞扬也常常被人用来实现个人目的。非暴力沟通鼓励我们充分表达感激。在表达感激时，我们说出：（1）对我们有益的行为；（2）我们的哪些需要得到了满足；（3）我们的需要得到满足后，我们是什么样的心情。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161935924.png"></p>
<ol>
<li>言语上的指责、嘲讽、否定、说教以及任意打断、拒不回应、随意出口的评价和结论给我们带来的情感和精神上的创伤，甚至比肉体的伤害更加令人痛苦。这些无心或有意的语言暴力让人与人变得冷漠、隔膜、敌视。</li>
<li>我很希望这本书能帮助更多的人安静下来。使用暴力的人其实是因为他们内心的宁静遭到了破坏，所以他们才会用暴力的方式维护或寻求心灵的和平。</li>
<li>非暴力沟通提醒我们人性是相通的——虽然每个人的价值观和生活方式或许不同，但作为人却有着共同的感受和需要。这样，在发生矛盾和冲突的时候，运用非暴力沟通，我们将能专注于彼此的感受和需要，从而促进倾听、理解以及由衷的互助。</li>
<li>人们常说：“爱能使心灵的创伤痊愈。”</li>
<li>作为有色人种，生活在执行种族隔离政策的南非并不是很有意思的事情。在那里，肤色随时都可能给你招来无情的刺激。十岁那年，白人打了我，他们认为我太黑了；接着，黑人又打了我，他们认为我太白了。这样的耻辱也许会让任何人想报复社会。</li>
<li>非暴力生活的一个关键就是：感激生活的赐予，而不贪心。</li>
<li>我意识到什么是真正的非暴力以及认识自身暴力的重要性。由于缺乏了解，我们常常认识不到自身的暴力。我们认为，只有打人、鞭挞、杀人以及战争等才算是暴力，而这类事与我们无关。</li>
<li>因为恐惧无法带来和平。</li>
<li>让尊重、理解、欣赏、感激、慈悲和友情，而非自私自利、贪婪、憎恨、偏见、怀疑和敌意，来主导生活。人们常说：这是一个弱肉强食的世界，为了生存，我们必须不择手段。这个观点，请恕我无法同意。</li>
<li>我相信，人天生热爱生命，乐于互助。可是，究竟是什么，使我们难以体会到心中的爱，以致互相伤害？又是什么，让有些人即使在充满敌意的环境中，也能心存爱意？</li>
<li>也许我们并不认为自己的谈话方式是“暴力”的，但我们的语言确实常常引发自己和他人的痛苦。</li>
<li>当我们真诚助人时，我们丰富他人生命的愿望得到了满足。我们的行为，是出于由衷的喜悦。</li>
<li>非暴力沟通的四个要素：1．观察 2．感受 3．需要 4．请求</li>
<li>首先，留意发生的事情。我们此刻观察到什么？不管是否喜欢，只是说出人们所做的事情。要点是，清楚地表达观察结果，而不判断或评估。接着，表达感受，例如受伤、害怕、喜悦、开心、气愤等等。然后，说出哪些需要导致那样的感受。</li>
<li>非暴力沟通提醒我们专注于彼此的观察、感受、需要和请求。它鼓励倾听，培育尊重与爱，使我们情意相通，乐于互助。有些人用非暴力沟通理解自己，有些人用它改善人际关系，还有人借助它改进工作。在世界各地，非暴力沟通被用来协调各个层面的争论和冲突。</li>
<li>对他人的评价实际上反映了我们的需要和价值观。</li>
<li>分类和评判提倡的是暴力。</li>
<li>暴力的根源在于人们忽视彼此的感受与需要，而将冲突归咎于对方——至少大部分暴力的根源都是如此。</li>
<li>美国领导人把前苏联看作是致力于摧毁美国生活方式的“邪恶帝国”；前苏联领导人将美国人看作是试图征服他们的“帝国主义压迫者”。双方都没有承认内心的恐惧。</li>
<li>如果真的想过上悲惨生活，就去与他人做比较。</li>
<li>比较也是一种评判。</li>
<li>我们对自己的思想、情感和行动负有责任。可是，人们广泛使用“不得不”这一短语。例如：“不管你是否喜欢，有些事你不得不做。”显然，这种表达方式淡化了个人责任。“你让我”是人们常用的另一短语，例如：“你让我伤透了心。”此时，我们的表达方式忽视了我们情感的内在根源。</li>
<li>我们可以用负责任的语言代替回避责任的语言。</li>
<li>一旦意识不到我们是自己的主人，我们就成了危险人物。</li>
<li>我们无法强迫他人按我们的期待生活。</li>
<li>认为“某人应当受到惩罚”使我们难以体会到心中的爱。</li>
<li>我们大多数的人使用的语言倾向于评判、比较、命令和指责，而不是鼓励我们倾听彼此的感受和需要。</li>
<li>对于国王、沙皇、贵族来说，将臣民训练得具有奴隶般的精神状态符合他们的利益。“不应该”、“应该”和“不得不”这些表达方式特别适合这个目的：人们越是习惯于评定是非，他们也就越倾向于追随权威，来获得正确和错误的标准。一旦专注于自身的感受和需要，我们就不再是好奴隶和好属下。</li>
<li>人天生热爱生命，乐于互助。可是，异化的沟通方式使我们难以体会到心中的爱。道德评判就是其中的一种，它将不符合我们价值观的人看作是不道德的或邪恶的。进行比较也是一种评判，它会蒙蔽对人对己的爱意。异化的沟通方式还淡化了我们对自己的思想、情感和行为的责任意识。此外，强人所难也会造成心灵的隔阂。</li>
<li>不区分观察和评论，人们将倾向于听到批评。</li>
<li>非暴力沟通的第一个要素是观察。我们仔细观察正在发生的事情，并清楚地说出观察结果。非暴力沟通并不要求我们保持完全的客观而不作任何评论。它只是强调区分观察和评论的重要性。将观察和评论混为一谈，人们将倾向于听到批评，甚至会产生逆反心理。</li>
<li>不带评论的观察是人类智力的最高形式。</li>
<li>对于大多数的人来说，观察他人及其行为，而不评判、指责或以其他方式进行分析，是难以做到的。</li>
<li>非暴力沟通的第一个要素是观察。将观察和评论混为一谈，别人就会倾向于听到批评，并反驳我们。非暴力沟通是动态的语言，不主张绝对化的结论。它提倡在特定的时间和情境中进行观察，并清楚地描述观察结果。例如，它会说“欧文在过去的5场比赛中没有进一个球”，而不是说“欧文是个差劲的前锋”。</li>
<li>只是描述观察结果而不含任何评论。</li>
<li>非暴力沟通的第二个要素是感受。心理学家罗洛·梅（Rollo May）认为：“成熟的人十分敏锐，就像听交响乐的不同乐章，不论是热情奔放，还是柔和舒缓，他都能体察到细微的起伏。”</li>
<li>当我们说“我觉得”，我们常常并不是在表达感受，而是在表达想法。</li>
<li>非暴力沟通的第二个要素是感受。通过建立表达感受的词汇表，我们可以更清楚地表达感受，从而使沟通更为顺畅。在表达感受时，示弱有助于解决冲突。此外，非暴力沟通还对表达具体感受的词语与陈述想法、评论以及观点的词语作了区分。</li>
<li>非暴力沟通强调，感受的根源在于我们自身。我们的需要和期待，以及对他人言行的看法，导致了我们的感受。</li>
<li>听到不中听的话的四种选择：
1．责备自己 2．指责他人 3．体会自己的感受和需要 4．体会他人的感受和需要</li>
<li>批评往往暗含着期待。对他人的批评实际上间接表达了我们尚未满足的需要。如果一个人说“你从不理解我”，他实际上是渴望得到理解。如果太太说“这个星期你每天都工作到很晚，你喜欢工作，不喜欢我”，那反映了她看重亲密关系。</li>
<li>如果我们通过批评来提出主张，人们的反应常常是申辩或反击。反之，如果我们直接说出需要，其他人就较有可能作出积极的回应。</li>
<li>双方都习惯于指责对方。</li>
<li>如果我们不看重自己的需要，别人可能也不会。实际上，如果直接说出需要，获得积极回应的可能性就会增加。</li>
<li>对于大多数人来说，个人成长一般会经历三个阶段：（1）“情感的奴隶”——我们认为自己有义务使他人快乐；（2）“面目可憎”时期——此时，我们拒绝考虑他人的感受和需要；（3）“生活的主人”——我们意识到，虽然我们对自己的意愿、感受和行动负有完全的责任，但无法为他人负责。与此同时，我们还认识到，我们无法牺牲他人来满足自己的需要。</li>
<li>首先，清楚地告诉对方，我们希望他们做什么。如果我们请求他人不做什么，对方也许会感到困惑，不知道我们到底想要什么。而且，这样的请求还容易引起别人的反感。</li>
<li>我们提出的请求越具体越好。如果我们的意思含糊不清，别人就难以了解我们到底想要什么。</li>
<li>抽象的语言无助于深化自我认识。</li>
<li>许多来向我求助的人后来发现，他们感到沮丧或灰心，很大程度上是因为他们不清楚自己对他人究竟有什么样的期待。</li>
<li>如果我们只是表达自己的感受，别人可能就不清楚我们想要什么。</li>
<li>像“你没有听明白”“这不是我的意思”“你听错了”这样的表达，很可能会让托尼觉得老师在批评他。</li>
<li>参加集体讨论时，说清楚我们希望得到怎样的反馈，是至关重要的。如果不清楚发言的目的，我们的讨论也许只是在浪费时间，而无法满足任何人的需要。</li>
<li>如何区分命令和请求：请求没有得到满足时，提出请求的人如果批评和指责，那就是命令；如果想利用对方的内疚来达到目的，也是命令。</li>
<li>我们越是将他人的不顺从看作是对我们的排斥，我们所表达的愿望就越有可能被看作是命令。</li>
<li>在生活中，如果我们不想勉强人，那么，清楚地表明这一点是重要的——这有助于人们相信我们提出的是请求而非命令。</li>
<li>在人们无法满足我们的愿望时，我们是否尊重他们的感受和需要最能体现我们提出的是请求还是命令。如果我们愿意去体会是什么使他们无法说“是”，那么，根据我的定义，我们提出的就是请求而非命令。选择通过请求而非命令来表达愿望，并不意味着，一旦人们说“不”，我们就不再去满足自己的需要。但它意味着，除非已经充分体会是什么妨碍了他人说“是”，我们就不会试图说服他们。</li>
<li>如果我们只是想改变别人，以使他们的行动符合我们的利益，那么非暴力沟通并不是适当的工具。非暴力沟通是用来帮助我们在诚实和倾听的基础上与人联系。使用非暴力沟通时，我们希望人们的改变和行动是出于对生命的爱。一旦人们相信我们看重彼此的感情，并能兼顾双方的需要，那么，他们也就会相信我们所表达的愿望是请求而非命令。</li>
<li>我要会见的学生有四十位。在学校中，他们被看作是“品行不端”的学生。我认为，像“品行不端”这样的标签会带来很消极的影响。如果一个学生被贴上这样的标签，那岂不是说他不遵守学校规矩是正常的吗？这样的标签将鼓励学生做我们不希望他们做的事，然后，他们的行为似乎又进一步证实了我们的判断。</li>
<li>“在印象中，如果我没照你说的去做，你就不会尊重我。如果我知道你并不想使唤我，在你叫我时，我会乐于回应你。如果你高高在上，像个盛气凌人的老板，你将会发现，你一头撞在了墙上。当你反复提醒我，你为我做的各种事情，你最好准备再次碰壁！你可以大声抱怨、责骂，但我仍不会去倒垃圾。即使你现在改变方式，我也需要时间忘记不快。”</li>
<li>一旦人们认为不答应我们就会受到责罚，他们就会把我们的请求看作是命令。如果我们清楚地表达我们无意强人所难，人们一般会相信，我们提出的是请求而非命令。非暴力沟通的目的不是为了改变他人来迎合我们。相反，非暴力沟通重视每个人的需要，它的目的是帮助我们在诚实和倾听的基础上与人联系。</li>
<li>在前四章中，我们介绍了如何通过非暴力沟通的四个要素来表达自己。本章我们将探讨如何倾听他人，了解他们的观察、感受、需要和请求，并给予反馈。</li>
<li>尽管有种种相似之处，生活的每时每刻就像一个刚出生的婴儿，一张新的面孔，我们从未见过，也不可能再次见到。我们无法停留在过去，也无法预见我们的反应。我们需要不带成见地感受变化。我们需要用全身心去倾听。</li>
<li>在安慰他人或提建议前，先看看那是否是他们想要的。</li>
<li>·建议：“我想你应该……”
·比较：“这算不了什么。你听听我的经历……”
·说教：“如果你这样做……你将会得到很大的好处。”
·安慰：“这不是你的错；你已经尽最大努力了。”
·回忆：“这让我想起……”
·否定：“高兴一点。不要这么难过。”
·同情：“哦，你这可怜的人……”
·询问：“这种情况是什么时候开始的？”
·辩解：“我原想早点打电话给你，但昨晚……”
·纠正：“事情的经过不是那样的。”</li>
<li>说了什么，并考虑他的情况符合哪种理论，我们是在诊断人——我们并没有倾听他们。在非暴力沟通中，倾听他人意味着，放下已有的想法和判断，一心一意地体会他人。倾听的这种品质体现了它与理解以及同情之间的区别。</li>
<li>分析妨碍了倾听。</li>
<li>不论别人说什么，我们只听到他们此时此刻的（a）观察，（b）感受，（c）需要 和（d）请求。</li>
<li>在倾听他人的观察、感受、需要和请求之后，我们可以主动表达我们的理解。如果我们已经准确领会了他们的意思，我们的反馈将帮助他们意识到这一点。反之，如果我们的理解还不到位，他们也就有机会来纠正我们。此外，这样做还有助于人们体会自己的状况，从而深入了解自己。</li>
<li>一般来说，如果一个人在说话时有明显的情绪，他一般会期待得到他人的反馈。如果我们自己是说话的那个人，我们不妨清楚地表明我们是否期待反馈。</li>
<li>一个人在听别人谈自己的感受和需要时，将会留意其中是否暗含着批评或嘲讽。如果我们的语气很肯定，仿佛是在宣布他们的内心世界，那么，通常不会有好的反应。然而，一旦别人通过我们的语气意识到我们是在体会，而非下结论，他们一般就不会产生反感。</li>
<li>有时，我们认为自己受到了指责，实际上，那些话是他人表达需要和请求的方式。如果意识到这一点，我们就不会认为自己的人格受到了伤害。反之，如果一心分析自己或对方的过错，我们就会认为自己被贬低了。</li>
<li>作家约瑟夫·坎伯（Joseph Campbell）说道：“为了幸福，必须把‘别人怎么看我’这个问题放在一边。”</li>
<li>如果人们常常怀疑我们的诚意，那么，我们就需要好好审视自己的动机。也许，我们只是在机械地运用非暴力沟通，而忘记其目的。这时，我们就可以问自己，我们关心的是加深与人的联系，还是以“标准的”非暴力沟通方式来说话。或者，虽然我们是以非暴力沟通的方式来表达自己，我们在乎的也许只是改变他人来迎合我们的需要。</li>
<li>一旦一个人意识到自己得到了理解和接纳，一般来说，他会觉得很惬意。</li>
<li>怎样判断对方的感受是否已经充分表达呢？首先，如果一个人觉得别人已经完全明白他的意思，他就会变得轻松。这时，我们也会感到放松。另一个更为明显的标志是，他停止了谈话。如果无法确定对方是否还有话要说，就不妨问一句：“你还有什么话要告诉我吗？”</li>
<li>我们无法给别人我们自己都没有的东西。有时，我们会发现自己没有心情去关心别人。一般来说，这反映了我们也需要得到关心。如果告诉他人我们正处于痛苦中，我们无法顾及他们的感受和需要，别人很可能就会伸出援手。</li>
<li>联合国前秘书长汉马斯克德（Dag Hammarskjold）曾经说道：“你越是留意自己内心的声音，就越能够听到别人的声音。”一旦我们能够敏锐地察觉并照顾自己的感受和需要，我们就有能力迅速调整好状态，来倾听他人。</li>
<li>我大声地提出请求，是为了提醒他们注意我此时此刻的痛苦和需要。</li>
<li>当他人遭遇不幸时，我们常常急于提建议，安慰，或表达我们的态度和感受。为了倾听他人，我们需要先放下已有的想法和判断，全心全意地体会对方。倾听他人有助于对他人的理解和接纳。</li>
<li>如果有人倾听你，不对你评头论足，不替你担惊受怕，也不想改变你，这多美好啊……每当我得到人们的倾听和理解，我就可以用新的眼光看世界，并继续前进……这真神奇啊！一旦有人倾听，看起来无法解决的问题就有了解决办法，千头万绪的思路也会变得清晰起来。</li>
<li>非暴力沟通鼓励我们表达自己最深的感受和需要，因此，我们有时也许会发现运用非暴力沟通是富有挑战性的。然而，通过倾听，我们将意识到他人的人性以及彼此的共通之处，这会使自我表达变得容易些。我们越是倾听他人语言背后的感受和需要，就越不怕与他们坦诚地沟通。我们最不愿意示弱的时候往往是因为担心失去控制想显得强硬的时候。</li>
<li>“你和我们说，在一个生气的人面前，永远不要用‘不过’‘可是’‘但是’之类的词语。一开始，我很想为自己辩护，我想和他说，‘可是，我们真的没房间’。幸好，在那时，我想起了那句话。我一直记得这句话，是因为在一周前，妈妈在和我争吵时说，‘如果我说什么，你都说‘但是’，小心我杀了你’。想一想，我妈妈生气时听到‘但是’都想杀了我，何况那个男人呢？如果我在他愤怒时说，‘可是，我们真的没房间’，我想我早就没命了。”</li>
<li>当别人说“不”的时候，我们常常会认为他们是在拒绝我们。有时，我们甚至还会觉得自己受到了伤害。然而，如果我们能够体会他人的感受和需要，我们也许就会发现是什么使他们无法答应我们的请求。</li>
<li>有的时候，谈话的气氛很沉闷。我们体会不到说话的人有怎样的感受和需要，也不知道他对我们有什么期待。这样的谈话是很累人的。它只是在浪费我们的时间，而无法帮助我们与他人加深联系。这种局面的出现往往是因为说话的人并不清楚自己的感受、需要和请求。</li>
<li>人们常常没有意识到，他们需要的是别人的理解和接纳。他们也没有意识到，直接表达自己的感受和需要，与讲故事相比，更容易得到他们所期待的联系。</li>
<li>说的人更希望对方打断，而不是假装在听。</li>
<li>所有的人都希望自己的话对人有益，而不想被人当作负担。</li>
<li>有的时候，我们说了心里话，很想知道对方的反应，却发现对方一句话也不说。这时，我们也许会很不安，容易把事情往坏处想。在别人保持沉默时，我们一般会觉得有些别扭，而很难静下心来体会对方的感受和需要。</li>
<li>倾听使我们勇于面对自己的弱点。它还可以帮助我们预防潜在的暴力，使谈话生动有趣，并了解“不！”和沉默所反映的感受和需要。一次又一次，我见证了，倾听帮助人们治愈心灵的创伤。</li>
<li>非暴力沟通最重要的应用也许是培养对自己的爱。</li>
<li>如何培养对自己的爱呢？转变自我评价的方式是一个重要方面。既然希望自己所做的任何事情都是有益的，那么，自我评价的方式就要有助于学习，使我们的选择符合生命的需要。然而，不幸的是，我们的自我评价方式往往导致自我憎恨，而无助于学习。</li>
<li>失误揭示我们的局限性，并引导我们的成长。</li>
<li>我希望，我们的改变是出于对生命的爱，而不是出于羞愧或内疚这些具有负面影响的心理。</li>
<li>羞愧是自我憎恨的一种形式，出于羞愧的行为不是自由而快乐的行为。即使我们试图更加友善和体贴，一旦人们意识到我们行为背后的羞愧或内疚，他们对这些行为的欣赏也就比不上那些只是出于爱的行为。在我们的语言中，有一个词极易引起羞愧和内疚。我们经常使用它来打击自己。它在我们的意识中是如此根深蒂固，以致许多人无法想象，没有它生活将如何继续。这个词就是“应该”，也就是“我应该早点知道”或“我不应该做那件事情”中的“应该”。如果我们认为自己“应该”怎么样，在大多数的情况下，我们也就封闭了自我。因为“应该”意味着我们别无选择。这使我们感到无奈和沮丧。同时，又心有不甘，不愿屈服。</li>
<li>自责是尚未满足的需要的可悲表达。</li>
<li>经常责备自己、强迫自己将使我们“更像椅子而不像人”。非暴力沟通认为，对他人的指责反映了我们遇到了挫折——他人的行为不符合我们的需要。如果我们指责的那个人恰好是我们自己，那么，言下之意是：“我的行为不符合我的需要。”我相信，如果我们专注于需要是否得到满足以及得到怎样的满足，我们就更有可能从自我评价中获益。</li>
<li>如果发现我们痛骂自己：“你看你，又把事情搞砸了！”我们马上就可以问：“我什么样的需要没有得到满足？”一旦意识到自己尚未满足的需要——很可能是多个层面的需要，我们的身心状态就会发生明显的变化。我们不再感到羞愧、内疚和沮丧，而开始体会到别的情感。不论它们是忧愁、失望、恐惧、悲伤、挫折感或别的——其目的都是推动我们去满足需要和追逐梦想。</li>
<li>非暴力沟通鼓励我们直面人生的苦难：在遇到挫折时，充分体会人生的悲哀和内心的渴望。是的，感到遗憾是难免的。但它能帮助我们从经历中学习，而无须责备自己。我们意识到过去的行为违背了自己的需要及价值观，并允许这种觉察引发的情感充分流淌。一旦专注于尚未满足的需要，我们就会考虑如何满足它。反之，如果用苛刻的语言指责自己，我们不仅难以找到解决办法，而且容易陷于自我惩罚的痛苦中。</li>
<li>非暴力沟通自我宽恕：感到遗憾时，我们试图了解过去的行为所要满足的需要。</li>
<li>人的行为总是服务于自身的需要及价值观。</li>
<li>当我们拥抱自己的各个方面，并理解它们所反映的需要及价值观，我们活在对自己深深的爱之中。</li>
<li>我深信，出于对生命纯洁的爱，而不是出于恐惧、内疚、羞愧、职责或义务来选择生活，是爱惜自己的重要体现。</li>
<li>不论你选择做什么，了解自己为什么要那样做。</li>
<li>我们知道，如果不做某些事情，我们就会责备自己。我们认为不做那些事情是不对的、愚蠢的。可是，如果为了体面而循规蹈矩，我们最终难免会感到厌烦。</li>
<li>最危险的行为也许是“因为别人的要求”我们不得不做。</li>
<li>我相信，我们越是投入服务生命的乐趣中——服务生命是唯一的目的，我们也就越爱自己。</li>
<li>非暴力沟通最重要的应用也许在于培育对自己的爱。当我们的表现不完美时，我们可以通过体会忧伤和自我宽恕，来看清个人成长的方向，以及避免自我惩罚。评价自己的行为时，我们专注于尚未满足的需要；这样，我们就不再依赖羞愧、内疚、恼怒或沮丧的心理来寻求改变，而让爱主导我们的学习和成长。</li>
<li>充分表达愤怒的第一步是我们不再归咎于他人。如果我们认为“他让我很生气”，那么，我们难免就会指责他人。然而，实际情况是，我们心情并不取决于他人的行为。</li>
<li>生气的原因在于我们的想法——对他人的评判和指责。</li>
<li>如果在一个社会中，内疚被运用来控制人；那么，指责他人就容易成为一种习惯。同时，为了使这种手段奏效，我们可能就会认为一个人可以主导另一个人的情绪。</li>
<li>听到不中听的话时，我们有四种选择：1．责备自己；2．指责他人；3．体会自己的感受和需要；4．体会他人的感受和需要。</li>
<li>希望他人因为内疚发生改变，就是将刺激和原因混为一谈。</li>
<li>假定我们约了个人，时间到了，她却没来。如果彼此的关系处于比较微妙的时期，我们可能会忧心忡忡。如果我们看重的是诚实守信，我们也许会觉得不耐烦。反之，如果我们想休息一会儿，我们可能就不会介意她来晚了。因此，同一件事情，不同的需要导致不同的感受。一旦意识到自己的需要——不论是友谊、诚信还是休息，我们就可以更加体贴自己。我们可能会有强烈的情绪，但不再生气。可是，如果意识不到自己尚未满足的需要，一心考虑别人的过错，我们难免就会生气。除了专注于自身的感受和需要，我们还可以选择去体会对方的感受和需要。此时，我们也不会感到生气。我们无须压抑愤怒，只要我们专注于他人的感受和需要，愤怒也就不再存在。</li>
<li>在我看来，愤怒是我们的思维方式造成的。它的核心是尚未满足的需要。如果我们能够借助它来提醒自己——我们有需要没有得到满足，而我们的思维方式正使它难以得到满足，那愤怒就是有价值的。</li>
<li>愤怒驱使我们去惩罚他人，而不是去满足需要。</li>
<li>我们将会有意识地用“我生气是因为我需要……”来取代“我生气是因为他们……”。</li>
<li>我生气的原因不在于别人做了什么，而在于我怎么看待对方及其行为。</li>
<li>当我们意识到自己的需要，愤怒就转变为服务需要的情感。</li>
<li>如果人们认为自己的痛苦是由其他人造成的，并认为那些人应该受到谴责或惩罚，那么，就像这位年轻的囚犯那样，他们播下了暴力的种子。</li>
<li>指责一个人，往往使我们的愿望更难得到满足。</li>
<li>指责他人有时可以使我们达到目的——出于害怕、内疚或惭愧，他们改变了自己的行为。</li>
<li>批评和指责使人倾向于自我保护并变得更有攻击性。</li>
<li>我们只是静静地体会自己。接着，想一想是什么想法使我们生气了。</li>
<li>越是能够倾听他人，也越有机会被倾听。</li>
<li>在大多数的情况下，在表达自己之前，我们需要先倾听他人。如果对方还处于某种情绪中，他们就很难静下心来体会我们的感受和需要。一旦我们用心倾听他们，并表达我们的理解，在得到倾听和理解之后，他们一般也就会开始留意我们的感受和需要。</li>
<li>一旦意识到他人的感受和需要，我们就会发现彼此相同的人性。</li>
<li>留意头脑中出现的暴力想法，而不评判它们。</li>
<li>那位先生一直诉说着他的忧虑和不满。不经意间，他已经从犹太人谈到了黑人。看起来，他渴望有人了解他的痛苦。我静静地听着，大概十分钟后，他停了下来。他觉得我已经理解了他。</li>
<li>人们常常觉得自己受到了指责，有时他们自己也同意，并开始恨自己——但这并不意味着他们会改变自己的行为。</li>
<li>我们需要有足够的耐心来学习和运用非暴力沟通。在与人交往的过程中，我们的第一反应常常是习惯性的反应，因此，运用非暴力沟通有时是很别扭的事。然而，如果我们想要实现自己的人生选择，我们就要给自己充分的时间。</li>
<li>练习把每一个指责都转化为尚未满足的需要。</li>
<li>如果你希望自己在生气的时候也能运用非暴力沟通，我建议你做以下的练习。在前面，我们已经提到，我们生气是因为我们的想法——我们认为人们“应该”或“不应该”做什么，我们还给人贴上各种标签，并说长论短。请留意我们头脑中“我不喜欢抽烟的人……”之类的想法。然后，问自己：“我不喜欢他们……，是因为我什么样的需要没有得到满足？”通过这样的方式，我们就把注意力放在了尚未得到满足的需要，而不是考虑他人有什么过错。</li>
<li>在生气时，批评和指责他人都无法真正传达我们的心声。如果想充分表达愤怒，我们就不能归咎于他人，而把注意力放在自己的感受和需要上。与批评和指责他人相比，直接说出我们的需要更有可能使我们的愿望得到满足。</li>
<li>表达愤怒的四个步骤是：（1）停下来，除了呼吸，什么都别做；（2）想一想是什么想法使我们生气了；（3）体会自己的需要；（4）表达感受和尚未满足的需要。有时，在第3步和第4步之间，我们需要先倾听他人。在得到倾听和理解之后，他们也就可以静下心来体会我们的感受和需要。</li>
<li>非暴力沟通认为，如果一个人做的事情会伤害到自己或他人，那是因为他不够成熟。为此，他需要得到帮助。如果我们不够成熟，我们可能会有以下的表现：（1）我们意识不到自己行为的后果；（2）我们认识不到，我们并不需要通过惩罚他人来满足自己的需要；（3）我们相信，我们有“权利”去惩罚或伤害他人，因为他们是罪有应得；（4）我们产生了幻觉，例如，听到“某种声音”叫我们去杀人。</li>
<li>使用防卫性的强制力，是为了保护自己或他人，而不是为了惩罚、羞辱或谴责他人。</li>
<li>我们希望痛苦能让他们：（1）意识到自己的过错；（2）感到懊悔；（3）改变行为。然而，在实际生活中，惩罚往往加强了对方的敌意和抵触心理，使双方的关系更加疏远。</li>
<li>有的时候孩子拒绝做一件对他们有益的事情，只是因为他们不想在父母的压力面前屈服。其次，即使体罚能带来立竿见影的效果，这也并不意味着，其他方法无法达到同样的效果。最后，我还担心，体罚孩子会造成不良的社会影响。如果我们把暴力作为解决问题的办法，虽然孩子可能会去做我们要求的事，但这样做难道不是在鼓励孩子用暴力来解决冲突吗？</li>
<li>当我们为了回避惩罚去做事情时，我们可能会忽视事情本身的价值，而陷于对失败的忧虑。如果员工的表现只是在服从管理层的命令，士气就会受到影响；或迟或早，工作效率就会降低。</li>
<li>我希望他基于怎样的原因去做我想要他做的事情？</li>
<li>了解别人基于什么样的原因来满足我们的愿望是至关重要的。</li>
<li>在有些情形中，我们没有机会和他人交流，这时，我们也许需要使用强制力来保护自己和他人。我们这样做，是为了避免伤害，而不是为了惩罚他人。如果我们威胁他人或实施惩罚，人们常常会产生敌意和抵触心理。这样，彼此的关系将会疏远。同时，惩罚还可能使人忽视事情本身的意义，而把注意力放在不服从的后果上。如果我们试图通过惩罚来使人们认识自己的需要，那么，我们很可能适得其反。</li>
<li>然而，对于大多数人来说，倾听和表达自己的需要并不容易。一般来说，我们的文化倾向于把个人需要看作是消极的、具有破坏性的。如果一个人公开表达自己的需要，就很可能被看作是自私的。</li>
<li>专注于我们想要做的，而不是追究错在哪里。</li>
<li>我感到惊讶的是，只要我不再批评和指责他人，而把注意力放在自己的感受和需要，我的心情就放松了许多。</li>
<li>在情绪低落的时候，我们也许会怨天尤人。然而，如果我们以苛刻的态度对人对己，我们的心情也好不到哪里去。通过运用非暴力沟通，我们不再试图分析自己或他人有什么毛病，而是用心去了解我们的需要，这样，我们的内心将逐渐变得平和。一旦我们发现自己心底深处的愿望，并采取积极的行动，我们将会重获生活的热情。</li>
<li>优雅地接受别人的感激。</li>
<li>在别人表达感激时，人们通常有两种截然不同的反应。一种是自我膨胀，相信我们比别人优越；另一种是假谦虚，否定别人的欣赏，耸耸肩说：“哦，这没什么。”纳菲滋帮助我看到了，我们有别的方式来听取感激。如果我意识到我的能力是生命赋予我的，我就能够同时避免自我膨胀和假谦虚。</li>
<li>虽然人们在听到感激时会不太自在，但绝大多数的人渴望得到他人的肯定和感激。</li>
<li>我刚刚结束一个有100多人参加的研讨班，除了一个人，其他人都高度评价这次的研讨班。然而，我牢记的却是那个人的不满。</li>
<li>约翰·鲍威尔（John Powell）在他的《爱的秘密》一书中讲到，对于没有在父亲活着的时候表达自己的感激，他十分伤心。这激起了我的强烈共鸣。如果无法向那些对我们的一生有极为重要影响的人表达感激，我们会感到多么悲哀啊！</li>
<li>在赞扬他人时，我们很少揭示内心活动，而把自己放在了裁判的位置。赞扬也常常被人用来实现个人目的。非暴力沟通鼓励我们充分表达感激。在表达感激时，我们说出：（1）对我们有益的行为；（2）我们的哪些需要得到了满足；（3）我们的需要得到满足后，我们是什么样的心情。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>34-《实践论》摘要</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/34-%E5%AE%9E%E8%B7%B5%E8%AE%BA%E6%91%98%E8%A6%81/</link>
      <pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/34-%E5%AE%9E%E8%B7%B5%E8%AE%BA%E6%91%98%E8%A6%81/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506121839847.jpg&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;马克思以前的唯物论，离开人的社会性，离开人的历史发展，去观察认识问题，因此不能了解认识对社会实践的依赖关系，即认识对生产和阶级斗争的依赖关系。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的社会实践，不限于生产活动一种形式，还有多种其他的形式，阶级斗争，政治生活，科学和艺术的活动，总之社会实际生活的一切领域都是社会的人所参加的。因此，人的认识，在物质生活以外，还从政治生活文化生活中（与物质生活密切联系），在各种不同程度上，知道人和人的各种关系。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;马克思主义者认为人类社会的生产活动，是一步又一步地由低级向高级发展，因此，人们的认识，不论对于自然界方面，对于社会方面，也都是一步又一步地由低级向高级发展，即由浅入深，由片面到更多的方面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们要想得到工作的胜利即得到预想的结果，一定要使自己的思想合于客观外界的规律性，如果不合，就会在实践中失败。人们经过失败之后，也就从失败取得教训，改正自己的思想使之适合于外界的规律性，人们就能变失败为胜利，所谓“失败者成功之母”，“吃一堑长一智”，就是这个道理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然而人的认识究竟怎样从实践发生，而又服务于实践呢？这只要看一看认识的发展过程就会明了的。原来人在实践过程中，开始只是看到过程中各个事物的现象方面，看到各个事物的片面，看到各个事物之间的外部联系。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社会实践的继续，使人们在实践中引起感觉和印象的东西反复了多次，于是在人们的脑子里生起了一个认识过程中的突变（即飞跃），产生了概念。概念这种东西已经不是事物的现象，不是事物的各个片面，不是它们的外部联系，而是抓着了事物的本质，事物的全体，事物的内部联系了。概念同感觉，不但是数量上的差别，而且有了性质上的差别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;认识的真正任务在于经过感觉而到达于思维，到达于逐步了解客观事物的内部矛盾，了解它的规律性，了解这一过程和那一过程间的内部联系，即到达于论理的认识。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这种基于实践的由浅入深的辩证唯物论的关于认识发展过程的理论，在马克思主义以前，是没有一个人这样解决过的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;指出了社会的人在他们的生产和阶级斗争的复杂的、经常反复的实践中，由感性认识到论理认识的推移的运动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;感觉只解决现象问题，理论才解决本质问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;马克思、恩格斯、列宁、斯大林之所以能够作出他们的理论，除了他们的天才条件之外，主要地是他们亲自参加了当时的阶级斗争和科学实验的实践，没有这后一个条件，任何天才也是不能成功的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果要直接地认识某种或某些事物，便只有亲身参加于变革现实、变革某种或某些事物的实践的斗争中，才能触到那种或那些事物的现象，也只有在亲身参加变革现实的实践的斗争中，才能暴露那种或那些事物的本质而理解它们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一切真知都是从直接经验发源的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;就知识的总体说来，无论何种知识都是不能离开直接经验的。任何知识的来源，在于人的肉体感官对客观外界的感觉，否认了这个感觉，否认了直接经验，否认亲自参加变革现实的实践，他就不是唯物论者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人有一句老话：“不入虎穴，焉得虎子。”这句话对于人们的实践是真理，对于认识论也是真理。离开实践的认识是不可能的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人民对于帝国主义的认识也是这样。第一阶段是表面的感性的认识阶段，表现在太平天国运动和义和团运动等笼统的排外主义的斗争上。第二阶段才进到理性的认识阶段，看出了帝国主义内部和外部的各种矛盾，并看出了帝国主义联合中国买办阶级和封建阶级以压榨中国人民大众的实质，这种认识是从一九一九年五四运动前后才开始的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那个具体战争的规律性，懂得了战略和战术，因而能够有把握地去指导战争。此时，如果改换一个无经验的人去指导，又会要在吃了一些败仗之后（有了经验之后）才能理会战争的正确的规律。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果这个人在这项工作中经过了一个时期，他有了这项工作的经验了，而他又是一个肯虚心体察情况的人，不是一个主观地、片面地、表面地看问题的人，他就能够自己做出应该怎样进行工作的结论，他的工作勇气也就可以大大地提高了。只有那些主观地、片面地和表面地看问题的人，跑到一个地方，不问环境的情况，不看事情的全体（事情的历史和全部现状），也不触到事情的本质（事情的性质及此一事情和其他事情的内部联系），就自以为是地发号施令起来，这样的人是没有不跌交子的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;认识的过程，第一步，是开始接触外界事情，属于感觉的阶段。第二步，是综合感觉的材料加以整理和改造，属于概念、判断和推理的阶段。只有感觉的材料十分丰富（不是零碎不全）和合于实际（不是错觉），才能根据这样的材料造出正确的概念和论理来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二是认识有待于深化，认识的感性阶段有待于发展到理性阶段——这就是认识论的辩证法。如果以为认识可以停顿在低级的感性阶段，以为只有感性认识可靠，而理性认识是靠不住的，这便是重复了历史上的“经验论”的错误。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;庸俗的事务主义家不是这样，他们尊重经验而看轻理论，因而不能通观客观过程的全体，缺乏明确的方针，没有远大的前途，沾沾自喜于一得之功和一孔之见。这种人如果指导革命，就会引导革命走上碰壁的地步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理性认识依赖于感性认识，感性认识有待于发展到理性认识，这就是辩证唯物论的认识论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;认识从实践始，经过实践得到了理论的认识，还须再回到实践去。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;斯大林说得好：“理论若不和革命实践联系起来，就会变成无对象的理论，同样，实践若不以革命理论为指南，就会变成盲目的实践。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;许多时候须反复失败过多次，才能纠正错误的认识，才能到达于和客观过程的规律性相符合，因而才能够变主观的东西为客观的东西，即在实践中得到预想的结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;革命时期情况的变化是很急速的，如果革命党人的认识不能随之而急速变化，就不能引导革命走向胜利。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们反对革命队伍中的顽固派，他们的思想不能随变化了的客观情况而前进，在历史上表现为右倾机会主义。这些人看不出矛盾的斗争已将客观过程推向前进了，而他们的认识仍然停止在旧阶段。一切顽固党的思想都有这样的特征。他们的思想离开了社会的实践，他们不能站在社会车轮的前头充任向导的工作，他们只知跟在车子后面怨恨车子走得太快了，企图把它向后拉，开倒车。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们也反对“左”翼空谈主义。他们的思想超过客观过程的一定发展阶段，有些把幻想看作真理，有些则把仅在将来有现实可能性的理想，勉强地放在现时来做，离开了当前大多数人的实践，离开了当前的现实性，在行动上表现为冒险主义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;马克思主义者承认，在绝对的总的宇宙发展过程中，各个具体过程的发展都是相对的，因而在绝对真理的长河中，人们对于在各个一定发展阶段上的具体过程的认识只具有相对的真理性。无数相对的真理之总和，就是绝对的真理。客观过程的发展是充满着矛盾和斗争的发展，人的认识运动的发展也是充满着矛盾和斗争的发展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社会的发展到了今天的时代，正确地认识世界和改造世界的责任，已经历史地落在无产阶级及其政党的肩上。这种根据科学认识而定下来的改造世界的实践过程，在世界、在中国均已到达了一个历史的时节——自有历史以来未曾有过的重大时节，这就是整个儿地推翻世界和中国的黑暗面，把它们转变过来成为前所未有的光明世界。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世界到了全人类都自觉地改造自己和改造世界的时候，那就是世界的共产主义时代。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506121839847.jpg"></p>
<ol>
<li>
<p>马克思以前的唯物论，离开人的社会性，离开人的历史发展，去观察认识问题，因此不能了解认识对社会实践的依赖关系，即认识对生产和阶级斗争的依赖关系。</p>
</li>
<li>
<p>人的社会实践，不限于生产活动一种形式，还有多种其他的形式，阶级斗争，政治生活，科学和艺术的活动，总之社会实际生活的一切领域都是社会的人所参加的。因此，人的认识，在物质生活以外，还从政治生活文化生活中（与物质生活密切联系），在各种不同程度上，知道人和人的各种关系。</p>
</li>
<li>
<p>马克思主义者认为人类社会的生产活动，是一步又一步地由低级向高级发展，因此，人们的认识，不论对于自然界方面，对于社会方面，也都是一步又一步地由低级向高级发展，即由浅入深，由片面到更多的方面。</p>
</li>
<li>
<p>人们要想得到工作的胜利即得到预想的结果，一定要使自己的思想合于客观外界的规律性，如果不合，就会在实践中失败。人们经过失败之后，也就从失败取得教训，改正自己的思想使之适合于外界的规律性，人们就能变失败为胜利，所谓“失败者成功之母”，“吃一堑长一智”，就是这个道理。</p>
</li>
<li>
<p>然而人的认识究竟怎样从实践发生，而又服务于实践呢？这只要看一看认识的发展过程就会明了的。原来人在实践过程中，开始只是看到过程中各个事物的现象方面，看到各个事物的片面，看到各个事物之间的外部联系。</p>
</li>
<li>
<p>社会实践的继续，使人们在实践中引起感觉和印象的东西反复了多次，于是在人们的脑子里生起了一个认识过程中的突变（即飞跃），产生了概念。概念这种东西已经不是事物的现象，不是事物的各个片面，不是它们的外部联系，而是抓着了事物的本质，事物的全体，事物的内部联系了。概念同感觉，不但是数量上的差别，而且有了性质上的差别。</p>
</li>
<li>
<p>认识的真正任务在于经过感觉而到达于思维，到达于逐步了解客观事物的内部矛盾，了解它的规律性，了解这一过程和那一过程间的内部联系，即到达于论理的认识。</p>
</li>
<li>
<p>这种基于实践的由浅入深的辩证唯物论的关于认识发展过程的理论，在马克思主义以前，是没有一个人这样解决过的。</p>
</li>
<li>
<p>指出了社会的人在他们的生产和阶级斗争的复杂的、经常反复的实践中，由感性认识到论理认识的推移的运动。</p>
</li>
<li>
<p>感觉只解决现象问题，理论才解决本质问题。</p>
</li>
<li>
<p>马克思、恩格斯、列宁、斯大林之所以能够作出他们的理论，除了他们的天才条件之外，主要地是他们亲自参加了当时的阶级斗争和科学实验的实践，没有这后一个条件，任何天才也是不能成功的。</p>
</li>
<li>
<p>如果要直接地认识某种或某些事物，便只有亲身参加于变革现实、变革某种或某些事物的实践的斗争中，才能触到那种或那些事物的现象，也只有在亲身参加变革现实的实践的斗争中，才能暴露那种或那些事物的本质而理解它们。</p>
</li>
<li>
<p>一切真知都是从直接经验发源的。</p>
</li>
<li>
<p>就知识的总体说来，无论何种知识都是不能离开直接经验的。任何知识的来源，在于人的肉体感官对客观外界的感觉，否认了这个感觉，否认了直接经验，否认亲自参加变革现实的实践，他就不是唯物论者。</p>
</li>
<li>
<p>中国人有一句老话：“不入虎穴，焉得虎子。”这句话对于人们的实践是真理，对于认识论也是真理。离开实践的认识是不可能的。</p>
</li>
<li>
<p>中国人民对于帝国主义的认识也是这样。第一阶段是表面的感性的认识阶段，表现在太平天国运动和义和团运动等笼统的排外主义的斗争上。第二阶段才进到理性的认识阶段，看出了帝国主义内部和外部的各种矛盾，并看出了帝国主义联合中国买办阶级和封建阶级以压榨中国人民大众的实质，这种认识是从一九一九年五四运动前后才开始的。</p>
</li>
<li>
<p>那个具体战争的规律性，懂得了战略和战术，因而能够有把握地去指导战争。此时，如果改换一个无经验的人去指导，又会要在吃了一些败仗之后（有了经验之后）才能理会战争的正确的规律。</p>
</li>
<li>
<p>如果这个人在这项工作中经过了一个时期，他有了这项工作的经验了，而他又是一个肯虚心体察情况的人，不是一个主观地、片面地、表面地看问题的人，他就能够自己做出应该怎样进行工作的结论，他的工作勇气也就可以大大地提高了。只有那些主观地、片面地和表面地看问题的人，跑到一个地方，不问环境的情况，不看事情的全体（事情的历史和全部现状），也不触到事情的本质（事情的性质及此一事情和其他事情的内部联系），就自以为是地发号施令起来，这样的人是没有不跌交子的。</p>
</li>
<li>
<p>认识的过程，第一步，是开始接触外界事情，属于感觉的阶段。第二步，是综合感觉的材料加以整理和改造，属于概念、判断和推理的阶段。只有感觉的材料十分丰富（不是零碎不全）和合于实际（不是错觉），才能根据这样的材料造出正确的概念和论理来。</p>
</li>
<li>
<p>第二是认识有待于深化，认识的感性阶段有待于发展到理性阶段——这就是认识论的辩证法。如果以为认识可以停顿在低级的感性阶段，以为只有感性认识可靠，而理性认识是靠不住的，这便是重复了历史上的“经验论”的错误。</p>
</li>
<li>
<p>庸俗的事务主义家不是这样，他们尊重经验而看轻理论，因而不能通观客观过程的全体，缺乏明确的方针，没有远大的前途，沾沾自喜于一得之功和一孔之见。这种人如果指导革命，就会引导革命走上碰壁的地步。</p>
</li>
<li>
<p>理性认识依赖于感性认识，感性认识有待于发展到理性认识，这就是辩证唯物论的认识论。</p>
</li>
<li>
<p>认识从实践始，经过实践得到了理论的认识，还须再回到实践去。</p>
</li>
<li>
<p>人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。</p>
</li>
<li>
<p>斯大林说得好：“理论若不和革命实践联系起来，就会变成无对象的理论，同样，实践若不以革命理论为指南，就会变成盲目的实践。”</p>
</li>
<li>
<p>许多时候须反复失败过多次，才能纠正错误的认识，才能到达于和客观过程的规律性相符合，因而才能够变主观的东西为客观的东西，即在实践中得到预想的结果。</p>
</li>
<li>
<p>革命时期情况的变化是很急速的，如果革命党人的认识不能随之而急速变化，就不能引导革命走向胜利。</p>
</li>
<li>
<p>我们反对革命队伍中的顽固派，他们的思想不能随变化了的客观情况而前进，在历史上表现为右倾机会主义。这些人看不出矛盾的斗争已将客观过程推向前进了，而他们的认识仍然停止在旧阶段。一切顽固党的思想都有这样的特征。他们的思想离开了社会的实践，他们不能站在社会车轮的前头充任向导的工作，他们只知跟在车子后面怨恨车子走得太快了，企图把它向后拉，开倒车。</p>
</li>
<li>
<p>我们也反对“左”翼空谈主义。他们的思想超过客观过程的一定发展阶段，有些把幻想看作真理，有些则把仅在将来有现实可能性的理想，勉强地放在现时来做，离开了当前大多数人的实践，离开了当前的现实性，在行动上表现为冒险主义。</p>
</li>
<li>
<p>马克思主义者承认，在绝对的总的宇宙发展过程中，各个具体过程的发展都是相对的，因而在绝对真理的长河中，人们对于在各个一定发展阶段上的具体过程的认识只具有相对的真理性。无数相对的真理之总和，就是绝对的真理。客观过程的发展是充满着矛盾和斗争的发展，人的认识运动的发展也是充满着矛盾和斗争的发展。</p>
</li>
<li>
<p>社会的发展到了今天的时代，正确地认识世界和改造世界的责任，已经历史地落在无产阶级及其政党的肩上。这种根据科学认识而定下来的改造世界的实践过程，在世界、在中国均已到达了一个历史的时节——自有历史以来未曾有过的重大时节，这就是整个儿地推翻世界和中国的黑暗面，把它们转变过来成为前所未有的光明世界。</p>
</li>
<li>
<p>世界到了全人类都自觉地改造自己和改造世界的时候，那就是世界的共产主义时代。</p>
</li>
<li>
<p>通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>33-《知行：技术人的管理之路》摘要</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/33-%E7%9F%A5%E8%A1%8C%E6%8A%80%E6%9C%AF%E4%BA%BA%E7%9A%84%E7%AE%A1%E7%90%86%E4%B9%8B%E8%B7%AF%E6%91%98%E8%A6%81/</link>
      <pubDate>Wed, 11 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/33-%E7%9F%A5%E8%A1%8C%E6%8A%80%E6%9C%AF%E4%BA%BA%E7%9A%84%E7%AE%A1%E7%90%86%E4%B9%8B%E8%B7%AF%E6%91%98%E8%A6%81/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506111946066.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;丹尼尔・平克在《驱动力 3.0》一书中有说：“服从让我们撑过白天，而投入才能让我们撑过夜晚。” 这告诉了我们一个很简单的事实：外驱让我们可以做好本职工作，而内驱才能让我们成就卓越。&lt;/li&gt;
&lt;li&gt;驱动力 2.0 的核心价值观是 “顺从”；而驱动力 3.0 的核心价值观是 “自主”。&lt;/li&gt;
&lt;li&gt;我们做管理工作的目标，归根结底，不就是 “群策群力打胜仗” 吗？“群策群力” 就是如何带好团队，“打胜仗” 就是如何取得好的业绩，“带人”+“做事”，齐了。&lt;/li&gt;
&lt;li&gt;想被提拔为一个管理者最好的方式，就是你首先成为一个实际上的管理者，我们常常把这样的晋升理念叫 “既定事实”，而这种理念在互联网行业里被广泛认同。&lt;/li&gt;
&lt;li&gt;无论你走哪条路上，你都会发现有些能力是共通的，比如规划、带人、沟通、执行等管理能力覆盖了全部 8 个方向。&lt;/li&gt;
&lt;li&gt;对于工程师思维特别重的管理者来说，他们尤其倚重技术；对于不懂技术的管理者来说，他们又特别迷信技术。&lt;/li&gt;
&lt;li&gt;做工程师的时候，技术是用来做事情的，掌握好技术的目的就是为了做好实施，看待技术是从如何运用的角度出发。而对于管理者来说，技术是达成目标的手段之一，所以看待技术是从如何评估的角度出发，评估该项技术是否是最合理的手段，以及如何选择才合理，并据此做出决策，因此常常被称为技术判断力。我们的老领导经常会告诫我们，即使做了管理，技术判断力不能丢，就是指这种能力。&lt;/li&gt;
&lt;li&gt;首先，把技术提到更高视角来看待。做技术的时候，把技术做好就是最大的目标；而做了管理之后，你会把技术作为一个手段来看待，看它究竟能为目标带来什么。但这并不意味着你就不再关心技术，只是关心的层次不同了，你开始需要借助每个人的技术能力去做更大的事情了。这很像在学习组装电脑，即便已经不需要关心主板、内存、CPU 的内部运行逻辑，但你还是要很清楚它们的功能是什么，接口什么样，以及从哪些维度去衡量一个主板的好坏、内存的好坏、CPU 的好坏，也得清楚在整台电脑中，哪个部件可能会是短板，等等。所以，技术转管理并不意味着不关心技术，只是更关心更大的目标和整体结果了。&lt;/li&gt;
&lt;li&gt;其次，换一种学习方式来掌握技术。你要深刻地认识到，亲自写代码固然是很好的学习技术的方式，但是作为 leader，你需要快速掌握更多的技术，并且快速判断该如何搭配使用，所以你一定得有更高效的学习方式才行。这里我介绍三个行之有效的做法：建立你的学习机制。你可以想想在团队内建立什么样的学习机制，可以帮助你借助团队的力量来提升技术判断力，并结合自己的情况来创建。请教专家。在了解某一个领域的情况时，借助你的平台，找你能找到的最厉害的专家高手进行请教，他们之所以成为高手，一般都能给出高屋建瓴、醍醐灌顶的认知。在这个知识型工作者的时代，和自己埋头思考相比，共创成果往往会出乎你想象，特别能增长见识，你可以看看在团队中如何建立共创机制。&lt;/li&gt;
&lt;li&gt;别忘了，自从你带团队的那一天起，你就已经不是一个人在战斗。所以，你可以依靠团队和更广的人脉，去拓展技术视野和技术判断力。常见的几个方式如下：建立技术学习机制。盘点你负责的业务，需要哪些方面的技术，成立一个或几个核心的技术小组，让团队对各个方向的技术保持敏感，要求小组定期做交流和分享，这样你就可以保持技术的敏感度。专项技术调研项目化。如果某项技术对团队的业务有重要的价值，可以专门立项做技术调研，并要求项目负责人做调研汇报。和技术大牛交流。越是厉害的技术人，越能深入浅出地把技术讲明白，所以针对某项技术找大牛取经，也是学习的好途径。你看，虽然实际操刀的时间少了，但是你和技术大牛的交流机会多了，一方面因为你有更大的影响力了，另一方面，你和大牛有了共同的诉求，就是把技术 “变现”，让技术产生价值。听取工作汇报。因为你带的是技术团队，大部分工作都和技术相关，在读员工的周报、季度汇报时，相互探讨，也是一种切磋和学习。总之，你会发现，技术管理人的技术水准的提升和保持，主要看能从周围人的身上汲取到多少信息和知识，而不再只是靠自学。&lt;/li&gt;
&lt;li&gt;站在工程师视角上，追求工作的极致品质，恰恰是一种良好的工匠精神。但是站在管理者视角上，就需要评估一段时间内的产出效率了。衡量一项工作 “到底需要花 5 天做到 70 分，还是 10 天做到 90 分”，是管理者的日常工作。90 分方案未必就比 70 分方案好，此时，就需要优秀工程师出身的你放弃一些执念了。一旦放松这个念头，你就会发现，完成一项工作，原来还有很多的手段可以选择。&lt;/li&gt;
&lt;li&gt;分工不是为了高效，而是为了能容纳更多的人来一起干更大、更复杂的事情，做简单的小事情，是不需要分工的。&lt;/li&gt;
&lt;li&gt;凝聚力即是团队协作的基础，又是团队协作的目标。强大的凝聚力，是战斗力强大的团队的重要特征之一。&lt;/li&gt;
&lt;li&gt;如果能够带出一个良好的团队，持续不断地把一件又一件的事情做好，才算是一个好的团队管理者。所以，团队产出是否可持续，是考量管理者价值的一个很重要的维度，它体现了这个团队是否健康，是否有耐力和韧劲。其中，耐力让团队走得远，韧劲让团队走得稳。&lt;/li&gt;
&lt;li&gt;提升一个团队的耐力和韧劲，有两个要素：梯队培养和团队文化。&lt;/li&gt;
&lt;li&gt;一个团队的文化价值观，主要来源于团队负责人或核心管理者。你是什么样的作风和价值观，你团队就会是什么样的，也就是说，你的团队文化和你喜欢什么样的文化关系不大，而和你是什么样的人关系很大。&lt;/li&gt;
&lt;li&gt;面对问题，如果你总是抱怨，那么和团队强调积极文化是不会成功的； 面对合作，如果你总是对抗，那么和团队强调紧密协作是不会成功的； 面对工作，如果你总是被动等待，那么和团队强调积极主动是不会成功的； 面对下属，如果你总是漠不关心，那么和团队强调温暖有爱也是不会成功的。&lt;/li&gt;
&lt;li&gt;你想打造什么样的团队文化，核心是从你身上的优秀品质中提炼，从而把你优秀的特质放大到整个团队。若你身上没有的特质，那就不适合作为团队的文化价值观去培育。&lt;/li&gt;
&lt;li&gt;很多管理者为了激发培养对象的成长动力，常用句式是，“如果你干得好，将会如何如何……” 我的建议是，只明确培养的意向和计划就足够了，最好不要作出成长之外的承诺。&lt;/li&gt;
&lt;li&gt;如果你团队有不少资历比你老的员工，或者有一些技术能力比你强的员工，那么我得首先恭喜你。因为这至少说明两个问题：第一，你真的是非常优秀，以至于你能被公司赏识来负责这样一个团队；第二，因为这些老资格和高能力员工的存在，你有机会做出更好的业绩。&lt;/li&gt;
&lt;li&gt;既然你被任命为这个团队的负责人，你就是此次时刻带领这个团队最合适的人。&lt;/li&gt;
&lt;li&gt;我曾经的上级传授给我一句话，非常有效，相信对于此时的你也一定会有帮助，她对我说：“你也许不是那个最强的人，但是你得相信，你是此时此刻做这事儿最合适的人。”&lt;/li&gt;
&lt;li&gt;对于提升员工个人能力来说，最关键的往往不是学习的方法，而是学习的意愿。&lt;/li&gt;
&lt;li&gt;主动学习的员工总会是少数派，不只是公司的员工如此，社会生活中的人们亦是如此，所以有人说，“学习是反人性的事情！”&lt;/li&gt;
&lt;li&gt;往往因为某个要素不具备就否定所有的可能性。&lt;/li&gt;
&lt;li&gt;给员工信心和耐心，允许他们犯错、走弯路。因为很多经验都是踩坑儿踩出来的，所以不能一出问题就劈头盖脸一顿批，甚至是剥夺其做事的机会。&lt;/li&gt;
&lt;li&gt;善用威者不轻怒，善用恩者不妄施。&lt;/li&gt;
&lt;li&gt;你要做的，不是和团队成员竞争、比较，也不是比团队每个人都强，而是要考虑如何让大家把自己的才智都发挥出来，去达成一个共同的团队目标。总之，你要做的不是管束和控制大家，而是引导和支持大家。&lt;/li&gt;
&lt;li&gt;你可能满足不了某员工所期望的工作内容，但是还有行为模式和思维模式方面可以考虑，比如某些人特别爱和人沟通协调，那就让他用沟通讨论的方式去工作；如果有人特别善于独立思考和筹划，那就发挥他的思维优势；有的人行动特别迅速，那就让他去快速启动一项工作。总之，千万别简单认为发挥员工优势，就是鼓励员工 “挑活”；优势是多层次的，所以让员工发挥优势这件事并不困难。&lt;/li&gt;
&lt;li&gt;这里我提供一个简单实用的方法，即尽量避免用 “任务性” 的语言，而多使用 “成果性” 的语言。比如你安排一项工作给员工，常见的说法是：“把项目 A 抓紧做一下吧，下周要发布。” 这在员工看起来，他收到了一项任务。但换成 “成果性” 的说法是：“项目 A 会帮我们验证一个结论，决定我们是否在这个方向上持续投入，下周就要做出决策，所以，你看下周能否搞定？” 显然，成果性的说法会让员工更清楚自己工作的价值，完成之后也会很有成就感。&lt;/li&gt;
&lt;li&gt;作为管理者，只有言行一致，保持承诺一致性，才能赢得团队的信任。&lt;/li&gt;
&lt;li&gt;每一个激励方案都需要去思考和设计，把外驱和内驱结合起来，把长期和短期结合起来，把业务推进和职业幸福集合起来，把个人工作和团队使命结合起来。&lt;/li&gt;
&lt;li&gt;大多管理者都能够想到这一点，就是在工作进展过程中要了解进度、评估风险，而不是任务交代完了就撒手不管了。&lt;/li&gt;
&lt;li&gt;既然是授权，事中最好不要干涉太多，只做约定好的 check 和支持就好。&lt;/li&gt;
&lt;li&gt;一线员工是用工作量来评估价值的，他们只要做出了自己该做的，就是有价值的；而管理者是用团队业绩来评估价值的，即便不是管理者个人的原因，只要结果是团队不出业绩，那么管理者的价值就很难体现。&lt;/li&gt;
&lt;li&gt;管理者分配工作的方式是直接交代要做什么，并不会和员工去分享和探讨这项工作的价值，以及对团队和公司意味着什么，所以起不到激励效果。&lt;/li&gt;
&lt;li&gt;作为管理者你可以亲身感受得到，总会有一批人因为工作没有价值而离职。他们不是矫情，而是真的需要看到自己给公司和社会带来什么价值。所以，管理者的一项重要修炼，就是去梳理团队的使命和项目的意义。&lt;/li&gt;
&lt;li&gt;对于新管理者，你在绩效评估和沟通之前，先审视一下自己的角色：你是这个团队的管理者，是这个团队的负责人，你是有责任来评价团队每个员工的工作表现和业绩的。你是站在团队的视角来看待这个问题，而不是站在任何一个成员的对立面来特别针对他。即便他做的也还不错，但是你如果还是把低绩效的名额给了他，那么你一定是有自己的依据的，所以这个绩效也的确是他应得的，你并不欠他什么。你有管理者的职业素养，有管理者的工作视角，也有令人信服的评价依据，你做出来的就是最公平和最恰当的决策。所以，你需要考虑的事情是，如何和他达成共识，期待并支持他也可以像其他同事一样，变得更加出色。 所以，你的角色不仅仅是一个评判者和告知者，还更是一个辅导者和支持者。&lt;/li&gt;
&lt;li&gt;希望我和初级管理者们澄清一个事情，那就是：“上级默认是需要管理者们主动向上沟通和反馈的，而非默认不需要。”&lt;/li&gt;
&lt;li&gt;相信你也听过这样一个说法：看似是两个人之间的沟通，其实至少是 “四个人” 之间的对话，哪 “四个人” 呢？也就是：你想表达的、你实际表达的、对方听到的和对方对于听到内容的理解，这其中每一步传递都会造成失真，所以很难领会到对方的真实意图也就情理之中了。&lt;/li&gt;
&lt;li&gt;向上沟通、向下沟通和横向沟通构成了管理沟通的主体，所以我把它们称为管理沟通的三大典型场景。&lt;/li&gt;
&lt;li&gt;管理者要做出好的业绩，就需要站高一层，站在自己上级的视角来和各个团队协同，以收获共同期待的成果。并且大部分时候，帮合作团队一起做好工作，也是为了自己的业绩，你并不会吃亏。&lt;/li&gt;
&lt;li&gt;工作中最好还是以做事为主，少考虑一些个人感受。如果就事论事地去沟通问题，反而会赢得更多合作者的尊重。&lt;/li&gt;
&lt;li&gt;不能默认对方一定能收到，而且不能默认对方理解的和你想的是一致的。&lt;/li&gt;
&lt;li&gt;对于你关心的问题，一定要去确认清楚，跟进到底，形成沟通闭环。&lt;/li&gt;
&lt;li&gt;影响力，是一种不使用强制性力量却能改变别人的看法和行为的能力。一般又分为职权影响力和非职权影响力。&lt;/li&gt;
&lt;li&gt;要想提升自己在这个因素上的影响力，不妨去盘点一下别人经常用什么正向的词来形容你，并进一步地把它们打磨得更加鲜明。一旦对方认同你的人品，就有了很好的信任基础。&lt;/li&gt;
&lt;li&gt;一旦违背了如下三个批评的原则，“促其改变” 的效果就很难达到： 人是 OK 的原则。即，对事不对人。批评事，不要打击人，更不能给人贴标签。 具体性原则。指出具体哪里做的不好，让对方容易认同。 面向未来的原则。体现负面的暂时性和过去时，并提供改变的 “出口”。&lt;/li&gt;
&lt;li&gt;我采取的策略是问自己这两个问题： 如果做，收益是否很大？收益越大，这个事情就越重要。 如果不做，损失是否很大？损失越大，这个事情就越紧急。&lt;/li&gt;
&lt;li&gt;可以靠经常能关注到的一个随身物件来提示。比如你的手环、戒指，甚至是手上的一个伤疤，只要你能时不时关注到，就可以。一旦看到这个物件，你就问一下自己 “我是不是在发怒”，这也是一种觉察。 每天写觉察日记，反思自己在情绪管理方面是否有所失误。我身边就有伙伴用这种方式并取得了比较好的效果。 可以和伙伴约定，请他帮忙提醒。一旦他发觉你情绪不对，都可以当场或事后提醒你，来加强觉察。 用你的重要关切来提醒。比如，你可以和你的上级约定，把这个季度的情绪化频次作为一项 KPI 纳入自己的《绩效计划》，从而让你心里总是悬着一根弦来不断提醒自己要注意情绪。细心的你一定发现了，这个方法显然也可以用于帮自己的下级来提升情绪管理的能力。事实上，我就用过，并且取得了很好的效果。&lt;/li&gt;
&lt;li&gt;作为管理者我们需要清楚一点，的确会有很多事情是我们掌控之外的，其中不乏不合理或不完善的。对于这样的情况，发泄抱怨则意味着我们内心深处已经对此无能无力了。而实际上，我们也许并不需要完美地解决这个问题，而只需要把一个 40 分的状态改善到 60 分就行了，或者即便没有改善到 60 分，我们也把事情往好的方向上推进了一点点，这也是我们的价值。而抱怨除了把负面情绪感染给团队之外，收获不到任何正向的价值。&lt;/li&gt;
&lt;li&gt;“这个规定太不合理了，没法遵守！”—— 那么，怎么样就合理了？ “我们在指定日期肯定做不完，没戏！”—— 那么，什么条件满足之后，就能做完呢？或者，认为什么时候能做完？ “这个设计很不合理，完全不考虑用户体验！”—— 那么，怎么样会合理一些呢？ “团队的氛围太差了，郁闷！”—— 那么，怎么做氛围会变好一点点呢？&lt;/li&gt;
&lt;li&gt;我会问自己的初心：“你到底想要的是什么？你能为上级、下级和公司带来哪些价值呢？” 通过问自己这个问题，我会秉持一种帮助公司、帮助 CEO 和下属的初衷，把我们的利益全部统一起来，以至于从一开始就不担心上级不信任、下级不服气以及同级排挤的问题。因为，每个人都不会拒绝你给他带来支持和帮助的。&lt;/li&gt;
&lt;li&gt;遇到冲突时，跳出自己的角色来判断是非对错，通过审视初心来做决策，很容易让自己充满力量。&lt;/li&gt;
&lt;li&gt;不要指望按照头衔去筹划自己的工作，就可以满足上级和公司的期待。&lt;/li&gt;
&lt;li&gt;如果你不主动去争取你想要的，你就不得不接受一些你不想要的。&lt;/li&gt;
&lt;li&gt;其实，我们对于一个人的评价，从来都是有双重标准的，一个标准是 “及格”，另外一个标准是 “优秀”。所谓 “及格”，就是只要胜任工作的要求就好了；而 “优秀”，除了胜任工作要求，还需要脱颖而出，超出团队普通表现，成为整个团队的核心人物。&lt;/li&gt;
&lt;li&gt;罗伯特・迪尔茨的 “NLP 逻辑层次图”，一个人的行为、能力、价值观，都源于一个最根本的认知，就是自我角色的设定。&lt;/li&gt;
&lt;li&gt;“7-2-1” 法则，即：10% 靠听课和看书自学，20% 靠相互交流和讨论，70% 靠工作实践。&lt;/li&gt;
&lt;li&gt;模仿，是人们学习新技能非常重要和常用的方式。当你尝试做管理的时候，也可能在不断模仿那些你认为 “最优秀” 的管理者，并希望像他们一样 “成功”。&lt;/li&gt;
&lt;li&gt;对于管理者来说，最大的客户就是上级，因此，价值最大化的核心就是去匹配上级和公司的期待。&lt;/li&gt;
&lt;li&gt;这是一种面向客户的视角，即，围绕客户的需要去发挥和提升自己的能力和价值。&lt;/li&gt;
&lt;li&gt;这个视角在 “求生存” 的时候特别好用，其逻辑是通过满足别人的期待，来获得自己生存的资源，因此也叫 “生存视角”。&lt;/li&gt;
&lt;li&gt;最核心的就是要厘清上级的期待并努力去兑现它，这对于在新的环境中 “生存” 下来是非常有效的，即是这个道理。&lt;/li&gt;
&lt;li&gt;职位头衔已经不再体现职责要求，我们需要从固化的职位要求中跳脱出来，从实际的工作需求去定义自己的职责和角色。&lt;/li&gt;
&lt;li&gt;我想说的是，无论是主动也好，被动也罢；无论是出于使命、兴趣也好，抑或是欲望、压力也罢，只要是在职场中，就有一个基本法则在发挥作用，那就是 “价值兑现”，即，你能收获多少回馈，取决于你能输出多少价值。这里的回馈不仅是指物质回馈，还包括成长感、成就感、幸福感等精神回馈。所以，无论是什么初衷，以及选择了什么样的职业道路，最终都会落在一个问题上：“我能否最大化地输出自己的价值？”&lt;/li&gt;
&lt;li&gt;即便如此，在最后的最后，我还是有两句话要交代：请耐心地给自己成长的时间。这个时代的快节奏带给我们很多的焦虑和不安，仿佛一不小心就会错过什么。其实，职业生涯就像一场 “马拉松”，很漫长，5 年或 10 年可以发生很多事，而你的生涯可能是 20 年、30 年，甚至可以像我一样，贯穿整个余生。在这么漫长的岁月中，肯定有人 “先胖”，有人 “后胖”，不用着急。成功其实很容易，因为所有的失败都不叫 “失败”，都只是 “尚未成功” 而已；只要有一次 “成功” 可以让你足慰平生，你就是个 “成功者”。互联网拉平了世界，你随时都有时间和机会去赢得自己的成功，或早或晚。用自己最擅长的姿势，开创属于自己的发展之路。不是前人走过的路才叫路，也没有什么规定好的 “管理之路” 是你必须要走的。因此，也就不存在所谓的 “弯路”，所有你走过的路都是你的成长之路，这条路是你自己开创的。事实上，所有的路上都有一条法则是奏效的，那就是 “价值兑换”，所以，做技术不重要，做管理也不重要，把技术和管理当成你职业的两条腿，在职场中输出自己最大的价值，才是最好的，才真正属于你。切记，不要被别人的路限制住，也不要被某个职位限制住，没有哪个职位可以定义你的职业发展。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506111946066.png"></p>
<ol>
<li>丹尼尔・平克在《驱动力 3.0》一书中有说：“服从让我们撑过白天，而投入才能让我们撑过夜晚。” 这告诉了我们一个很简单的事实：外驱让我们可以做好本职工作，而内驱才能让我们成就卓越。</li>
<li>驱动力 2.0 的核心价值观是 “顺从”；而驱动力 3.0 的核心价值观是 “自主”。</li>
<li>我们做管理工作的目标，归根结底，不就是 “群策群力打胜仗” 吗？“群策群力” 就是如何带好团队，“打胜仗” 就是如何取得好的业绩，“带人”+“做事”，齐了。</li>
<li>想被提拔为一个管理者最好的方式，就是你首先成为一个实际上的管理者，我们常常把这样的晋升理念叫 “既定事实”，而这种理念在互联网行业里被广泛认同。</li>
<li>无论你走哪条路上，你都会发现有些能力是共通的，比如规划、带人、沟通、执行等管理能力覆盖了全部 8 个方向。</li>
<li>对于工程师思维特别重的管理者来说，他们尤其倚重技术；对于不懂技术的管理者来说，他们又特别迷信技术。</li>
<li>做工程师的时候，技术是用来做事情的，掌握好技术的目的就是为了做好实施，看待技术是从如何运用的角度出发。而对于管理者来说，技术是达成目标的手段之一，所以看待技术是从如何评估的角度出发，评估该项技术是否是最合理的手段，以及如何选择才合理，并据此做出决策，因此常常被称为技术判断力。我们的老领导经常会告诫我们，即使做了管理，技术判断力不能丢，就是指这种能力。</li>
<li>首先，把技术提到更高视角来看待。做技术的时候，把技术做好就是最大的目标；而做了管理之后，你会把技术作为一个手段来看待，看它究竟能为目标带来什么。但这并不意味着你就不再关心技术，只是关心的层次不同了，你开始需要借助每个人的技术能力去做更大的事情了。这很像在学习组装电脑，即便已经不需要关心主板、内存、CPU 的内部运行逻辑，但你还是要很清楚它们的功能是什么，接口什么样，以及从哪些维度去衡量一个主板的好坏、内存的好坏、CPU 的好坏，也得清楚在整台电脑中，哪个部件可能会是短板，等等。所以，技术转管理并不意味着不关心技术，只是更关心更大的目标和整体结果了。</li>
<li>其次，换一种学习方式来掌握技术。你要深刻地认识到，亲自写代码固然是很好的学习技术的方式，但是作为 leader，你需要快速掌握更多的技术，并且快速判断该如何搭配使用，所以你一定得有更高效的学习方式才行。这里我介绍三个行之有效的做法：建立你的学习机制。你可以想想在团队内建立什么样的学习机制，可以帮助你借助团队的力量来提升技术判断力，并结合自己的情况来创建。请教专家。在了解某一个领域的情况时，借助你的平台，找你能找到的最厉害的专家高手进行请教，他们之所以成为高手，一般都能给出高屋建瓴、醍醐灌顶的认知。在这个知识型工作者的时代，和自己埋头思考相比，共创成果往往会出乎你想象，特别能增长见识，你可以看看在团队中如何建立共创机制。</li>
<li>别忘了，自从你带团队的那一天起，你就已经不是一个人在战斗。所以，你可以依靠团队和更广的人脉，去拓展技术视野和技术判断力。常见的几个方式如下：建立技术学习机制。盘点你负责的业务，需要哪些方面的技术，成立一个或几个核心的技术小组，让团队对各个方向的技术保持敏感，要求小组定期做交流和分享，这样你就可以保持技术的敏感度。专项技术调研项目化。如果某项技术对团队的业务有重要的价值，可以专门立项做技术调研，并要求项目负责人做调研汇报。和技术大牛交流。越是厉害的技术人，越能深入浅出地把技术讲明白，所以针对某项技术找大牛取经，也是学习的好途径。你看，虽然实际操刀的时间少了，但是你和技术大牛的交流机会多了，一方面因为你有更大的影响力了，另一方面，你和大牛有了共同的诉求，就是把技术 “变现”，让技术产生价值。听取工作汇报。因为你带的是技术团队，大部分工作都和技术相关，在读员工的周报、季度汇报时，相互探讨，也是一种切磋和学习。总之，你会发现，技术管理人的技术水准的提升和保持，主要看能从周围人的身上汲取到多少信息和知识，而不再只是靠自学。</li>
<li>站在工程师视角上，追求工作的极致品质，恰恰是一种良好的工匠精神。但是站在管理者视角上，就需要评估一段时间内的产出效率了。衡量一项工作 “到底需要花 5 天做到 70 分，还是 10 天做到 90 分”，是管理者的日常工作。90 分方案未必就比 70 分方案好，此时，就需要优秀工程师出身的你放弃一些执念了。一旦放松这个念头，你就会发现，完成一项工作，原来还有很多的手段可以选择。</li>
<li>分工不是为了高效，而是为了能容纳更多的人来一起干更大、更复杂的事情，做简单的小事情，是不需要分工的。</li>
<li>凝聚力即是团队协作的基础，又是团队协作的目标。强大的凝聚力，是战斗力强大的团队的重要特征之一。</li>
<li>如果能够带出一个良好的团队，持续不断地把一件又一件的事情做好，才算是一个好的团队管理者。所以，团队产出是否可持续，是考量管理者价值的一个很重要的维度，它体现了这个团队是否健康，是否有耐力和韧劲。其中，耐力让团队走得远，韧劲让团队走得稳。</li>
<li>提升一个团队的耐力和韧劲，有两个要素：梯队培养和团队文化。</li>
<li>一个团队的文化价值观，主要来源于团队负责人或核心管理者。你是什么样的作风和价值观，你团队就会是什么样的，也就是说，你的团队文化和你喜欢什么样的文化关系不大，而和你是什么样的人关系很大。</li>
<li>面对问题，如果你总是抱怨，那么和团队强调积极文化是不会成功的； 面对合作，如果你总是对抗，那么和团队强调紧密协作是不会成功的； 面对工作，如果你总是被动等待，那么和团队强调积极主动是不会成功的； 面对下属，如果你总是漠不关心，那么和团队强调温暖有爱也是不会成功的。</li>
<li>你想打造什么样的团队文化，核心是从你身上的优秀品质中提炼，从而把你优秀的特质放大到整个团队。若你身上没有的特质，那就不适合作为团队的文化价值观去培育。</li>
<li>很多管理者为了激发培养对象的成长动力，常用句式是，“如果你干得好，将会如何如何……” 我的建议是，只明确培养的意向和计划就足够了，最好不要作出成长之外的承诺。</li>
<li>如果你团队有不少资历比你老的员工，或者有一些技术能力比你强的员工，那么我得首先恭喜你。因为这至少说明两个问题：第一，你真的是非常优秀，以至于你能被公司赏识来负责这样一个团队；第二，因为这些老资格和高能力员工的存在，你有机会做出更好的业绩。</li>
<li>既然你被任命为这个团队的负责人，你就是此次时刻带领这个团队最合适的人。</li>
<li>我曾经的上级传授给我一句话，非常有效，相信对于此时的你也一定会有帮助，她对我说：“你也许不是那个最强的人，但是你得相信，你是此时此刻做这事儿最合适的人。”</li>
<li>对于提升员工个人能力来说，最关键的往往不是学习的方法，而是学习的意愿。</li>
<li>主动学习的员工总会是少数派，不只是公司的员工如此，社会生活中的人们亦是如此，所以有人说，“学习是反人性的事情！”</li>
<li>往往因为某个要素不具备就否定所有的可能性。</li>
<li>给员工信心和耐心，允许他们犯错、走弯路。因为很多经验都是踩坑儿踩出来的，所以不能一出问题就劈头盖脸一顿批，甚至是剥夺其做事的机会。</li>
<li>善用威者不轻怒，善用恩者不妄施。</li>
<li>你要做的，不是和团队成员竞争、比较，也不是比团队每个人都强，而是要考虑如何让大家把自己的才智都发挥出来，去达成一个共同的团队目标。总之，你要做的不是管束和控制大家，而是引导和支持大家。</li>
<li>你可能满足不了某员工所期望的工作内容，但是还有行为模式和思维模式方面可以考虑，比如某些人特别爱和人沟通协调，那就让他用沟通讨论的方式去工作；如果有人特别善于独立思考和筹划，那就发挥他的思维优势；有的人行动特别迅速，那就让他去快速启动一项工作。总之，千万别简单认为发挥员工优势，就是鼓励员工 “挑活”；优势是多层次的，所以让员工发挥优势这件事并不困难。</li>
<li>这里我提供一个简单实用的方法，即尽量避免用 “任务性” 的语言，而多使用 “成果性” 的语言。比如你安排一项工作给员工，常见的说法是：“把项目 A 抓紧做一下吧，下周要发布。” 这在员工看起来，他收到了一项任务。但换成 “成果性” 的说法是：“项目 A 会帮我们验证一个结论，决定我们是否在这个方向上持续投入，下周就要做出决策，所以，你看下周能否搞定？” 显然，成果性的说法会让员工更清楚自己工作的价值，完成之后也会很有成就感。</li>
<li>作为管理者，只有言行一致，保持承诺一致性，才能赢得团队的信任。</li>
<li>每一个激励方案都需要去思考和设计，把外驱和内驱结合起来，把长期和短期结合起来，把业务推进和职业幸福集合起来，把个人工作和团队使命结合起来。</li>
<li>大多管理者都能够想到这一点，就是在工作进展过程中要了解进度、评估风险，而不是任务交代完了就撒手不管了。</li>
<li>既然是授权，事中最好不要干涉太多，只做约定好的 check 和支持就好。</li>
<li>一线员工是用工作量来评估价值的，他们只要做出了自己该做的，就是有价值的；而管理者是用团队业绩来评估价值的，即便不是管理者个人的原因，只要结果是团队不出业绩，那么管理者的价值就很难体现。</li>
<li>管理者分配工作的方式是直接交代要做什么，并不会和员工去分享和探讨这项工作的价值，以及对团队和公司意味着什么，所以起不到激励效果。</li>
<li>作为管理者你可以亲身感受得到，总会有一批人因为工作没有价值而离职。他们不是矫情，而是真的需要看到自己给公司和社会带来什么价值。所以，管理者的一项重要修炼，就是去梳理团队的使命和项目的意义。</li>
<li>对于新管理者，你在绩效评估和沟通之前，先审视一下自己的角色：你是这个团队的管理者，是这个团队的负责人，你是有责任来评价团队每个员工的工作表现和业绩的。你是站在团队的视角来看待这个问题，而不是站在任何一个成员的对立面来特别针对他。即便他做的也还不错，但是你如果还是把低绩效的名额给了他，那么你一定是有自己的依据的，所以这个绩效也的确是他应得的，你并不欠他什么。你有管理者的职业素养，有管理者的工作视角，也有令人信服的评价依据，你做出来的就是最公平和最恰当的决策。所以，你需要考虑的事情是，如何和他达成共识，期待并支持他也可以像其他同事一样，变得更加出色。 所以，你的角色不仅仅是一个评判者和告知者，还更是一个辅导者和支持者。</li>
<li>希望我和初级管理者们澄清一个事情，那就是：“上级默认是需要管理者们主动向上沟通和反馈的，而非默认不需要。”</li>
<li>相信你也听过这样一个说法：看似是两个人之间的沟通，其实至少是 “四个人” 之间的对话，哪 “四个人” 呢？也就是：你想表达的、你实际表达的、对方听到的和对方对于听到内容的理解，这其中每一步传递都会造成失真，所以很难领会到对方的真实意图也就情理之中了。</li>
<li>向上沟通、向下沟通和横向沟通构成了管理沟通的主体，所以我把它们称为管理沟通的三大典型场景。</li>
<li>管理者要做出好的业绩，就需要站高一层，站在自己上级的视角来和各个团队协同，以收获共同期待的成果。并且大部分时候，帮合作团队一起做好工作，也是为了自己的业绩，你并不会吃亏。</li>
<li>工作中最好还是以做事为主，少考虑一些个人感受。如果就事论事地去沟通问题，反而会赢得更多合作者的尊重。</li>
<li>不能默认对方一定能收到，而且不能默认对方理解的和你想的是一致的。</li>
<li>对于你关心的问题，一定要去确认清楚，跟进到底，形成沟通闭环。</li>
<li>影响力，是一种不使用强制性力量却能改变别人的看法和行为的能力。一般又分为职权影响力和非职权影响力。</li>
<li>要想提升自己在这个因素上的影响力，不妨去盘点一下别人经常用什么正向的词来形容你，并进一步地把它们打磨得更加鲜明。一旦对方认同你的人品，就有了很好的信任基础。</li>
<li>一旦违背了如下三个批评的原则，“促其改变” 的效果就很难达到： 人是 OK 的原则。即，对事不对人。批评事，不要打击人，更不能给人贴标签。 具体性原则。指出具体哪里做的不好，让对方容易认同。 面向未来的原则。体现负面的暂时性和过去时，并提供改变的 “出口”。</li>
<li>我采取的策略是问自己这两个问题： 如果做，收益是否很大？收益越大，这个事情就越重要。 如果不做，损失是否很大？损失越大，这个事情就越紧急。</li>
<li>可以靠经常能关注到的一个随身物件来提示。比如你的手环、戒指，甚至是手上的一个伤疤，只要你能时不时关注到，就可以。一旦看到这个物件，你就问一下自己 “我是不是在发怒”，这也是一种觉察。 每天写觉察日记，反思自己在情绪管理方面是否有所失误。我身边就有伙伴用这种方式并取得了比较好的效果。 可以和伙伴约定，请他帮忙提醒。一旦他发觉你情绪不对，都可以当场或事后提醒你，来加强觉察。 用你的重要关切来提醒。比如，你可以和你的上级约定，把这个季度的情绪化频次作为一项 KPI 纳入自己的《绩效计划》，从而让你心里总是悬着一根弦来不断提醒自己要注意情绪。细心的你一定发现了，这个方法显然也可以用于帮自己的下级来提升情绪管理的能力。事实上，我就用过，并且取得了很好的效果。</li>
<li>作为管理者我们需要清楚一点，的确会有很多事情是我们掌控之外的，其中不乏不合理或不完善的。对于这样的情况，发泄抱怨则意味着我们内心深处已经对此无能无力了。而实际上，我们也许并不需要完美地解决这个问题，而只需要把一个 40 分的状态改善到 60 分就行了，或者即便没有改善到 60 分，我们也把事情往好的方向上推进了一点点，这也是我们的价值。而抱怨除了把负面情绪感染给团队之外，收获不到任何正向的价值。</li>
<li>“这个规定太不合理了，没法遵守！”—— 那么，怎么样就合理了？ “我们在指定日期肯定做不完，没戏！”—— 那么，什么条件满足之后，就能做完呢？或者，认为什么时候能做完？ “这个设计很不合理，完全不考虑用户体验！”—— 那么，怎么样会合理一些呢？ “团队的氛围太差了，郁闷！”—— 那么，怎么做氛围会变好一点点呢？</li>
<li>我会问自己的初心：“你到底想要的是什么？你能为上级、下级和公司带来哪些价值呢？” 通过问自己这个问题，我会秉持一种帮助公司、帮助 CEO 和下属的初衷，把我们的利益全部统一起来，以至于从一开始就不担心上级不信任、下级不服气以及同级排挤的问题。因为，每个人都不会拒绝你给他带来支持和帮助的。</li>
<li>遇到冲突时，跳出自己的角色来判断是非对错，通过审视初心来做决策，很容易让自己充满力量。</li>
<li>不要指望按照头衔去筹划自己的工作，就可以满足上级和公司的期待。</li>
<li>如果你不主动去争取你想要的，你就不得不接受一些你不想要的。</li>
<li>其实，我们对于一个人的评价，从来都是有双重标准的，一个标准是 “及格”，另外一个标准是 “优秀”。所谓 “及格”，就是只要胜任工作的要求就好了；而 “优秀”，除了胜任工作要求，还需要脱颖而出，超出团队普通表现，成为整个团队的核心人物。</li>
<li>罗伯特・迪尔茨的 “NLP 逻辑层次图”，一个人的行为、能力、价值观，都源于一个最根本的认知，就是自我角色的设定。</li>
<li>“7-2-1” 法则，即：10% 靠听课和看书自学，20% 靠相互交流和讨论，70% 靠工作实践。</li>
<li>模仿，是人们学习新技能非常重要和常用的方式。当你尝试做管理的时候，也可能在不断模仿那些你认为 “最优秀” 的管理者，并希望像他们一样 “成功”。</li>
<li>对于管理者来说，最大的客户就是上级，因此，价值最大化的核心就是去匹配上级和公司的期待。</li>
<li>这是一种面向客户的视角，即，围绕客户的需要去发挥和提升自己的能力和价值。</li>
<li>这个视角在 “求生存” 的时候特别好用，其逻辑是通过满足别人的期待，来获得自己生存的资源，因此也叫 “生存视角”。</li>
<li>最核心的就是要厘清上级的期待并努力去兑现它，这对于在新的环境中 “生存” 下来是非常有效的，即是这个道理。</li>
<li>职位头衔已经不再体现职责要求，我们需要从固化的职位要求中跳脱出来，从实际的工作需求去定义自己的职责和角色。</li>
<li>我想说的是，无论是主动也好，被动也罢；无论是出于使命、兴趣也好，抑或是欲望、压力也罢，只要是在职场中，就有一个基本法则在发挥作用，那就是 “价值兑现”，即，你能收获多少回馈，取决于你能输出多少价值。这里的回馈不仅是指物质回馈，还包括成长感、成就感、幸福感等精神回馈。所以，无论是什么初衷，以及选择了什么样的职业道路，最终都会落在一个问题上：“我能否最大化地输出自己的价值？”</li>
<li>即便如此，在最后的最后，我还是有两句话要交代：请耐心地给自己成长的时间。这个时代的快节奏带给我们很多的焦虑和不安，仿佛一不小心就会错过什么。其实，职业生涯就像一场 “马拉松”，很漫长，5 年或 10 年可以发生很多事，而你的生涯可能是 20 年、30 年，甚至可以像我一样，贯穿整个余生。在这么漫长的岁月中，肯定有人 “先胖”，有人 “后胖”，不用着急。成功其实很容易，因为所有的失败都不叫 “失败”，都只是 “尚未成功” 而已；只要有一次 “成功” 可以让你足慰平生，你就是个 “成功者”。互联网拉平了世界，你随时都有时间和机会去赢得自己的成功，或早或晚。用自己最擅长的姿势，开创属于自己的发展之路。不是前人走过的路才叫路，也没有什么规定好的 “管理之路” 是你必须要走的。因此，也就不存在所谓的 “弯路”，所有你走过的路都是你的成长之路，这条路是你自己开创的。事实上，所有的路上都有一条法则是奏效的，那就是 “价值兑换”，所以，做技术不重要，做管理也不重要，把技术和管理当成你职业的两条腿，在职场中输出自己最大的价值，才是最好的，才真正属于你。切记，不要被别人的路限制住，也不要被某个职位限制住，没有哪个职位可以定义你的职业发展。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>32-如何提升项目管理能力</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/32-%E5%A6%82%E4%BD%95%E6%8F%90%E5%8D%87%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%83%BD%E5%8A%9B/</link>
      <pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/32-%E5%A6%82%E4%BD%95%E6%8F%90%E5%8D%87%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%83%BD%E5%8A%9B/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506101409918.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;如何提升项目管理能力？这个问题覆盖面很广，其实，很多时候方法都是通用的，这方面和学一门技术所运用的技巧是一样的，可以先实践后学习，以终为始，先解决当前遇到的问题，解决了之后再总结，久而久之就像涂鸦一样，慢慢这一块那一块也会涂完，而不是一开始就按顺序涂完整幅画。&lt;/p&gt;
&lt;p&gt;在做事情的时候，有些知识不是立马就会用到的，学了之后没有应用，很快就会忘记，而且没有立马实践意味着没有产出，你没看到有什么显著的成果，就会打击积极性，便不利于你后续的学习。&lt;/p&gt;
&lt;p&gt;其实，这个思路无形之中刚好契合了毛泽东《实践论》所说的，“&lt;strong&gt;通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;所以，这也是我们项目计划为什么需要有复盘会议的原因，实践、认识、再实践、再认识，如此反复，不断地向真理靠近。&lt;/p&gt;
&lt;p&gt;市面上相关项目管理的书籍很多，但是大部分都是一些方法技巧，我始终认为方法固然很重要，但是意识才是最核心的那部分，只有不断修炼意识层面，哪怕方法暂时掌握不到位，日积月累，终有一日也会有所成就。&lt;/p&gt;
&lt;p&gt;所以，项目管理的书籍，我就只推荐一本，来自刘建国的《知行：技术人的管理之路》，主要内容就是程序员如何走上管理、为什么要做管理、怎么做好管理，全方位剖析会遇到的问题怎么解决等等，我觉得是很实用的一本书。&lt;/p&gt;
&lt;p&gt;其他的，就是一些看起来好像和项目管理一点关系都没有，实际上关联密切的书籍，首先就是《实践论》，它是如此的重要，以致我不得不多次提及，除了这本书之外，还推荐《非暴力沟通》和《精力管理》，附录会有一些摘要，可以简单看一下，基本上可以总结为四个方面，覆盖项目管理所需的各项能力：方法、意识、沟通、身体。&lt;/p&gt;
&lt;p&gt;其中，身体其实才是最重要的，它是一座高楼的地基。地基的好坏，直接影响到上层的建设。在项目管理上也是如此，它会关系到你能成长到哪一个阶段。&lt;/p&gt;
&lt;p&gt;因为对于项目负责人而言，无论是手头上的开发任务，还是面对与多个部门的沟通协作，以及处理诸多繁琐事务，外加达成目标的压力，无不耗费巨大的精力和心力。&lt;/p&gt;
&lt;p&gt;“身体是革命的本钱”，这句话大家都听过，所言非虚，在此就不再赘述了。&lt;/p&gt;
&lt;p&gt;至此，从 2022 年 8 月开始编写这些内容，从开发人员到项目负责人再到项目总负责人，对遇到的各类项目问题都进行了梳理，并以个人浅见提供了一些解决方案，总结为一句话就是：&lt;strong&gt;结果导向，修己安人&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个系列，基本上就告一段落了，如果后面有一些心得还是会持续更新的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506101409918.jpeg"></p>
<p>如何提升项目管理能力？这个问题覆盖面很广，其实，很多时候方法都是通用的，这方面和学一门技术所运用的技巧是一样的，可以先实践后学习，以终为始，先解决当前遇到的问题，解决了之后再总结，久而久之就像涂鸦一样，慢慢这一块那一块也会涂完，而不是一开始就按顺序涂完整幅画。</p>
<p>在做事情的时候，有些知识不是立马就会用到的，学了之后没有应用，很快就会忘记，而且没有立马实践意味着没有产出，你没看到有什么显著的成果，就会打击积极性，便不利于你后续的学习。</p>
<p>其实，这个思路无形之中刚好契合了毛泽东《实践论》所说的，“<strong>通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。</strong>”</p>
<p>所以，这也是我们项目计划为什么需要有复盘会议的原因，实践、认识、再实践、再认识，如此反复，不断地向真理靠近。</p>
<p>市面上相关项目管理的书籍很多，但是大部分都是一些方法技巧，我始终认为方法固然很重要，但是意识才是最核心的那部分，只有不断修炼意识层面，哪怕方法暂时掌握不到位，日积月累，终有一日也会有所成就。</p>
<p>所以，项目管理的书籍，我就只推荐一本，来自刘建国的《知行：技术人的管理之路》，主要内容就是程序员如何走上管理、为什么要做管理、怎么做好管理，全方位剖析会遇到的问题怎么解决等等，我觉得是很实用的一本书。</p>
<p>其他的，就是一些看起来好像和项目管理一点关系都没有，实际上关联密切的书籍，首先就是《实践论》，它是如此的重要，以致我不得不多次提及，除了这本书之外，还推荐《非暴力沟通》和《精力管理》，附录会有一些摘要，可以简单看一下，基本上可以总结为四个方面，覆盖项目管理所需的各项能力：方法、意识、沟通、身体。</p>
<p>其中，身体其实才是最重要的，它是一座高楼的地基。地基的好坏，直接影响到上层的建设。在项目管理上也是如此，它会关系到你能成长到哪一个阶段。</p>
<p>因为对于项目负责人而言，无论是手头上的开发任务，还是面对与多个部门的沟通协作，以及处理诸多繁琐事务，外加达成目标的压力，无不耗费巨大的精力和心力。</p>
<p>“身体是革命的本钱”，这句话大家都听过，所言非虚，在此就不再赘述了。</p>
<p>至此，从 2022 年 8 月开始编写这些内容，从开发人员到项目负责人再到项目总负责人，对遇到的各类项目问题都进行了梳理，并以个人浅见提供了一些解决方案，总结为一句话就是：<strong>结果导向，修己安人</strong>。</p>
<p>这个系列，基本上就告一段落了，如果后面有一些心得还是会持续更新的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《华为销售法》读后感：作为新人，我从书中学到的销售认知</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%8D%8E%E4%B8%BA%E9%94%80%E5%94%AE%E6%B3%95%E8%AF%BB%E5%90%8E%E6%84%9F%E4%BD%9C%E4%B8%BA%E6%96%B0%E4%BA%BA%E6%88%91%E4%BB%8E%E4%B9%A6%E4%B8%AD%E5%AD%A6%E5%88%B0%E7%9A%84%E9%94%80%E5%94%AE%E8%AE%A4%E7%9F%A5/</link>
      <pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%8D%8E%E4%B8%BA%E9%94%80%E5%94%AE%E6%B3%95%E8%AF%BB%E5%90%8E%E6%84%9F%E4%BD%9C%E4%B8%BA%E6%96%B0%E4%BA%BA%E6%88%91%E4%BB%8E%E4%B9%A6%E4%B8%AD%E5%AD%A6%E5%88%B0%E7%9A%84%E9%94%80%E5%94%AE%E8%AE%A4%E7%9F%A5/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao.cn/Users/haowei/Documents/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7/Picture/202506161104486.jpg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;读后感&#34;&gt;读后感&lt;/h1&gt;
&lt;p&gt;这本书主要是讲华为 ToB 销售的成长史，覆盖了销售的方方面面，介绍了华为是如何起家、如何拓展国际市场、如何销售管理、激励政策、干部晋升和培训等内容。&lt;/p&gt;
&lt;p&gt;从华为的成长历程，可以窥见很多东西，对于我这个销售小白来说，算是大开眼界了。所以，在看这本书的过程中，很多章节基本都是划线了，感觉差不多都要把整本书划下来了，确实是很不错的一本书。&lt;/p&gt;
&lt;p&gt;在介绍书中内容之前，我先解释下销售对象，它有三个分类，分别为 ToC 、ToB 和 ToG。ToC 主要面向消费者，类似淘宝、京东上面的商家，出售家电、数码和手机等产品；ToB 则主要是面向组织或者企业，比如钉钉 / 企业微信、OA 办公系统等；ToG 则是面向政府及公共机构，比如智慧城市项目、政务信息化平台等。&lt;/p&gt;
&lt;p&gt;通常来讲，ToB 比 ToC 会难很多，原因在于 ToC 需要面对的只是一个人而已，只要是人就会有情绪，不管是用什么营销手段，广告、打折、优惠券和双 11 等都可以，只需要能调动消费者的情绪，很容易就会被商家攻破。写到这里，突然想起来那种商家发的短信内容，什么主人、小主，陛下等等措词，真是够不要脸的，能不能好好说话，好在近几年好像收敛很多了。&lt;/p&gt;
&lt;p&gt;但是 ToB 则不同，ToB 面向的不再是一个人，而是一个企业，既然是企业，那么就需要多个环节的人员（技术、采购、管理等）参与决策，需要攻破的不是单方面的某个人，而是全部的环节都要一一击破，这就是 ToB 为什么比 ToC 难做的原因。&lt;/p&gt;
&lt;p&gt;说回本书，从最初华为公司成立，到发展到现在全球知名的企业，销售在其中起到了很重要的作用，一开始因为还是泥腿子，小米加步枪就开搞了，不管是用什么办法，唯一的目的，就是活下去。&lt;/p&gt;
&lt;p&gt;为了活下去，华为一开始就采用了 “先模仿，后超越” 的战略，先向优秀的公司学习，而且，不是浅尝辄止、流于表面的学习，是全方位的学习。&lt;/p&gt;
&lt;p&gt;先模仿竞争对手，对方做什么我们也跟着这样做，然后在做的过程中，开始总结对方存在的问题，以及自己的优势，避开对方在用户层面的心智优势，充分挖掘自己的长处，最终找到差异化的突破口，能在市场上争得一席之地。&lt;/p&gt;
&lt;p&gt;与此同时，华为还力争怎么在市场上站稳脚跟，因为大城市地盘都被大公司瓜分了，所以，华为深入小地方的市场深耕，先不讲能赚多少钱，至少先能有项目，一来可以积累经验，二来竞争压力比较小，能先做成生意，这个是正向循环的。而且，不能因为是小客户就表现得漫不经心，要以客户为中心，全心全意服务客户，体现出产品的价格优势和服务质量，这就在客户心里埋下了种子，总有一天可能会生根发芽。&lt;/p&gt;
&lt;p&gt;因为没有谁能预知市场是怎么发展的，谁能说得准，最后哪个客户是做大做强的，所以，要重视客户的需求。这个策略一听起来就有 “农村包围城市” 那个意思了，事实上也是如此。&lt;/p&gt;
&lt;p&gt;上面就是部分我对书里感受比较深的几个点了。因为接下来要参与产品推广工作，说白了，就是要思考团队怎么赚钱、生意从哪里来，所以我才去了解了一下销售的知识。&lt;/p&gt;
&lt;p&gt;在我看来，销售就是一个六边形战士，需要学习和掌握的技能太多了。我一下子就想到荷兰足球巨星古利特，身高 1 米 90，可以胜任清道夫、中场和前锋。身高、体重、速度、意识、脚法和体力六个方面都是顶级，名副其实的六边形战士。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506161056774.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;对于销售而言，产品知识、销售技能、销售管理、商务英语、商务礼仪等方面都要掌握，上面是书里列举的，我觉得第六个就是体态，体态包括形体、精神面貌等方面。这六个方面都需要做好，才能确保每个环节都能应对得游刃有余，面对不同的人，就掏出不一样的技能包。&lt;/p&gt;
&lt;p&gt;人永远比机器复杂多变。机器就是你输入指令，它就干嘛，但是人则不同，就需要实时面对不同的情况，因此，我就要想明白应该怎么做好这个工作。&lt;/p&gt;
&lt;p&gt;首先，我需要清楚，以前的成绩全都将清零，没办法一直躺在功劳簿上而不思进取。从现在开始，你就是一张白纸，而且，要接受没有那么及时的成就感，不像以前敲点代码，实现一个功能，立马就能看到成果，带个项目，过段时间，就能拿到结果，现在则不是，可能好几年都没看到任何成绩，一直在工作上那么要强的你，无法容忍工作上出现任何纰漏的你，怎么去面对这种挫败感？&lt;/p&gt;
&lt;p&gt;因为 ToB 这种东西，不是你努力就可以了的，努力只是增加成功的概率，这个时候怎么平和地去接受失败？所以，我只能对自己说一句话，&lt;strong&gt;要成功，先从失败开始。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;接着，我要好好整理思绪，很多事情能够做好不是因为自己有多厉害，能力强当然最好，但是，更主要的是顺势而为，什么阶段应该做什么事情，&lt;strong&gt;遵循规律不是因为认命，遵循规律的目的，是为了更好的打破规律。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;逆势而为可能也会成功，但难度会增加很多。正所谓 “天时地利人和”，如果主动放弃前面这两个关键要素，光有一个“人和”，很难能有什么浪花。&lt;/p&gt;
&lt;p&gt;新的工作内容，要使用系统化的解决方案，而不只是解决局部的问题。要解决一个问题、做好一件事情，不是某个方面做好就可以了。&lt;/p&gt;
&lt;p&gt;比如你要减肥，不是说少吃多动就可以了，实际上，如果想系统化解决减肥问题，每个环节都要做到位，怎么睡觉、怎么情绪管理、怎么控制饮食、怎么科学运动？这些问题都得想明白，然后形成一套科学的行为习惯，让其每天有序运转。&lt;/p&gt;
&lt;p&gt;而不是今天专注睡觉，明天狠抓节食，后天突击运动。这就像种地，今天这里挖一挖，明天那里锄一锄，最后整块地被搞得面目全非，还怎么播种？所以，需要按部就班地从左到右、从上到下锄地，然后播种，完成整套工序后，才算是完成种地这个事情。&lt;/p&gt;
&lt;p&gt;等我想明白了，我觉得应该知道怎么做好 ToB 这个工作了。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;体态管理：减肥塑形、健身锻炼；&lt;/li&gt;
&lt;li&gt;礼仪修养：商务礼仪规范、国际礼仪准则、各国文化习俗；&lt;/li&gt;
&lt;li&gt;沟通能力：演讲与表达技巧、商务英语运用、情商培养；&lt;/li&gt;
&lt;li&gt;专业技术：行业知识储备、解决方案设计、技术原理掌握；&lt;/li&gt;
&lt;li&gt;业务技能：市场推广策略、销售流程管理；&lt;/li&gt;
&lt;li&gt;管理能力：自我时间与目标管理、团队协作与领导、结果导向的执行能力。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除此之外，我还有一个心得，当你看到点什么东西都觉得大开眼界，说明还是不够通的，要是通的话不会那么惊叹，就好像现在项目管理方面的工作，不敢说精通，只能说稍微有点经验，但是，基本什么问题或者话题，都可以唠嗑几句，甭管对不对吧，至少能有自己的一些见解。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="/Users/haowei/Documents/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7/Picture/202506161104486.jpg"></p>
<h1 id="读后感">读后感</h1>
<p>这本书主要是讲华为 ToB 销售的成长史，覆盖了销售的方方面面，介绍了华为是如何起家、如何拓展国际市场、如何销售管理、激励政策、干部晋升和培训等内容。</p>
<p>从华为的成长历程，可以窥见很多东西，对于我这个销售小白来说，算是大开眼界了。所以，在看这本书的过程中，很多章节基本都是划线了，感觉差不多都要把整本书划下来了，确实是很不错的一本书。</p>
<p>在介绍书中内容之前，我先解释下销售对象，它有三个分类，分别为 ToC 、ToB 和 ToG。ToC 主要面向消费者，类似淘宝、京东上面的商家，出售家电、数码和手机等产品；ToB 则主要是面向组织或者企业，比如钉钉 / 企业微信、OA 办公系统等；ToG 则是面向政府及公共机构，比如智慧城市项目、政务信息化平台等。</p>
<p>通常来讲，ToB 比 ToC 会难很多，原因在于 ToC 需要面对的只是一个人而已，只要是人就会有情绪，不管是用什么营销手段，广告、打折、优惠券和双 11 等都可以，只需要能调动消费者的情绪，很容易就会被商家攻破。写到这里，突然想起来那种商家发的短信内容，什么主人、小主，陛下等等措词，真是够不要脸的，能不能好好说话，好在近几年好像收敛很多了。</p>
<p>但是 ToB 则不同，ToB 面向的不再是一个人，而是一个企业，既然是企业，那么就需要多个环节的人员（技术、采购、管理等）参与决策，需要攻破的不是单方面的某个人，而是全部的环节都要一一击破，这就是 ToB 为什么比 ToC 难做的原因。</p>
<p>说回本书，从最初华为公司成立，到发展到现在全球知名的企业，销售在其中起到了很重要的作用，一开始因为还是泥腿子，小米加步枪就开搞了，不管是用什么办法，唯一的目的，就是活下去。</p>
<p>为了活下去，华为一开始就采用了 “先模仿，后超越” 的战略，先向优秀的公司学习，而且，不是浅尝辄止、流于表面的学习，是全方位的学习。</p>
<p>先模仿竞争对手，对方做什么我们也跟着这样做，然后在做的过程中，开始总结对方存在的问题，以及自己的优势，避开对方在用户层面的心智优势，充分挖掘自己的长处，最终找到差异化的突破口，能在市场上争得一席之地。</p>
<p>与此同时，华为还力争怎么在市场上站稳脚跟，因为大城市地盘都被大公司瓜分了，所以，华为深入小地方的市场深耕，先不讲能赚多少钱，至少先能有项目，一来可以积累经验，二来竞争压力比较小，能先做成生意，这个是正向循环的。而且，不能因为是小客户就表现得漫不经心，要以客户为中心，全心全意服务客户，体现出产品的价格优势和服务质量，这就在客户心里埋下了种子，总有一天可能会生根发芽。</p>
<p>因为没有谁能预知市场是怎么发展的，谁能说得准，最后哪个客户是做大做强的，所以，要重视客户的需求。这个策略一听起来就有 “农村包围城市” 那个意思了，事实上也是如此。</p>
<p>上面就是部分我对书里感受比较深的几个点了。因为接下来要参与产品推广工作，说白了，就是要思考团队怎么赚钱、生意从哪里来，所以我才去了解了一下销售的知识。</p>
<p>在我看来，销售就是一个六边形战士，需要学习和掌握的技能太多了。我一下子就想到荷兰足球巨星古利特，身高 1 米 90，可以胜任清道夫、中场和前锋。身高、体重、速度、意识、脚法和体力六个方面都是顶级，名副其实的六边形战士。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506161056774.jpeg"></p>
<p>对于销售而言，产品知识、销售技能、销售管理、商务英语、商务礼仪等方面都要掌握，上面是书里列举的，我觉得第六个就是体态，体态包括形体、精神面貌等方面。这六个方面都需要做好，才能确保每个环节都能应对得游刃有余，面对不同的人，就掏出不一样的技能包。</p>
<p>人永远比机器复杂多变。机器就是你输入指令，它就干嘛，但是人则不同，就需要实时面对不同的情况，因此，我就要想明白应该怎么做好这个工作。</p>
<p>首先，我需要清楚，以前的成绩全都将清零，没办法一直躺在功劳簿上而不思进取。从现在开始，你就是一张白纸，而且，要接受没有那么及时的成就感，不像以前敲点代码，实现一个功能，立马就能看到成果，带个项目，过段时间，就能拿到结果，现在则不是，可能好几年都没看到任何成绩，一直在工作上那么要强的你，无法容忍工作上出现任何纰漏的你，怎么去面对这种挫败感？</p>
<p>因为 ToB 这种东西，不是你努力就可以了的，努力只是增加成功的概率，这个时候怎么平和地去接受失败？所以，我只能对自己说一句话，<strong>要成功，先从失败开始。</strong></p>
<p>接着，我要好好整理思绪，很多事情能够做好不是因为自己有多厉害，能力强当然最好，但是，更主要的是顺势而为，什么阶段应该做什么事情，<strong>遵循规律不是因为认命，遵循规律的目的，是为了更好的打破规律。</strong></p>
<p>逆势而为可能也会成功，但难度会增加很多。正所谓 “天时地利人和”，如果主动放弃前面这两个关键要素，光有一个“人和”，很难能有什么浪花。</p>
<p>新的工作内容，要使用系统化的解决方案，而不只是解决局部的问题。要解决一个问题、做好一件事情，不是某个方面做好就可以了。</p>
<p>比如你要减肥，不是说少吃多动就可以了，实际上，如果想系统化解决减肥问题，每个环节都要做到位，怎么睡觉、怎么情绪管理、怎么控制饮食、怎么科学运动？这些问题都得想明白，然后形成一套科学的行为习惯，让其每天有序运转。</p>
<p>而不是今天专注睡觉，明天狠抓节食，后天突击运动。这就像种地，今天这里挖一挖，明天那里锄一锄，最后整块地被搞得面目全非，还怎么播种？所以，需要按部就班地从左到右、从上到下锄地，然后播种，完成整套工序后，才算是完成种地这个事情。</p>
<p>等我想明白了，我觉得应该知道怎么做好 ToB 这个工作了。</p>
<ol>
<li>体态管理：减肥塑形、健身锻炼；</li>
<li>礼仪修养：商务礼仪规范、国际礼仪准则、各国文化习俗；</li>
<li>沟通能力：演讲与表达技巧、商务英语运用、情商培养；</li>
<li>专业技术：行业知识储备、解决方案设计、技术原理掌握；</li>
<li>业务技能：市场推广策略、销售流程管理；</li>
<li>管理能力：自我时间与目标管理、团队协作与领导、结果导向的执行能力。</li>
</ol>
<p>除此之外，我还有一个心得，当你看到点什么东西都觉得大开眼界，说明还是不够通的，要是通的话不会那么惊叹，就好像现在项目管理方面的工作，不敢说精通，只能说稍微有点经验，但是，基本什么问题或者话题，都可以唠嗑几句，甭管对不对吧，至少能有自己的一些见解。</p>
<p>所以，我很清楚，现在要开始在这张白纸上面，绘制接下来的一切，是繁花似锦，还是潦草人生，都是未知的，<strong>一切都在于自己的选择。</strong></p>
<h1 id="摘抄">摘抄</h1>
<ol>
<li>销售人员凭着个人能力，先拿下几单再说，没有学习什么理论，目标就是把项目拿下，拿结果说话。</li>
<li>学习华为一定不能照搬照抄其今天的打法，它今天已经有20万名员工，因此相关企业要根据自身的条件，联系自己企业的发展阶段和实际情况，有针对性地采用不同的打法。其实，管理的精髓是一样的。</li>
<li><strong>本书特别适合那些因面对To B行业扩大份额而感到困难、没有经验的企业创始人、销售负责人等高管，他们一般都会思考以下几个问题：如何制定销售战略？如何调研和分析市场？如何研究竞争对手，从而制定竞争策略？如何进行客户关系管理？如何运作销售项目？如何管理销售团队？如何管理销售业务？</strong></li>
<li>企业战略是对企业各种战略的统称，是指企业根据环境变化，依据本身资源和实力选择适合的经营领域与产品，形成自己的核心竞争力，目的是通过差异化在竞争中取胜。</li>
<li>离开战略谈战术是没有意义的，因为企业只有保证“做正确的事”，才能谈“正确地做事”。</li>
<li>战略规划是工作的起点，要先明确“去哪里”的问题，再解决“怎么去”的问题，所以要先明确方向，先做计划，然后才能开始工作。</li>
<li>华为在战略规划的这个5步环节中，所有的工作有一个重要的指导方针——<strong>“以客户为中心，以结果为导向”</strong>。“以客户为中心”，而不是以自己的产品技术为中心，客户需要什么就提供什么，为客户创造价值，一切围绕客户转，客户的需求就是最高的命令，全员参与，一定要让客户满意。“以结果为导向”，华为考察工作就是考察结果，考察绩效，评价一个组织或者一个干部行不行就是看结果，这个人的学历不重要，别人对他的评价也仅仅是参考，因为都有主观因素，华为就是看结果，行就上，不行就下，规则简单，并且执行坚决，不会讲情面。</li>
<li>SWOT分析（基于内外部竞争环境和竞争条件的态势分析）。</li>
<li>在华为，每位员工都要签署PBC协议，协议包含三个层面的内容：个人目标承诺、人员管理目标承诺和个人能力提升目标承诺。PBC考核要和KPI保持一致，大家为了同一个目标，劲儿往一处使。</li>
<li>华为的工作会议有个特色，就是每个会议必有会议纪要。会议纪要就像法律文件一样，要跟踪检查，下次开会前要再看看上次会议的遗留问题有没有解决，责任人有没有完成任务，否则要追责，轻了挨一通批评，严重了立即换人。华为检查工作、落实结果的执行力非常强，赏罚分明，纪律严明，大家严格按照会议纪要推动，不敢大意。</li>
<li>华为一路走来都在对标竞争对手，向竞争对手学习。这是被逼的，事实证明这也是对的，是捷径。</li>
<li>中国是世界上最大的新兴市场，世界巨头都云集于此。公司创立之初，就在家门口碰到了全球最激烈的竞争，我们不得不在夹缝中求生存。</li>
<li>不努力往前跑就是破产，我们没有什么退路，只能坚持到现在。</li>
<li>为了活下来，只有进步。怎么进步呢？只有学习。</li>
<li>公司内部从来不提“竞争对手”这个词，而是说“友商”。坦率地说，当时的华为也谈不上是这些巨头的竞争对手。</li>
<li>华为的学习是全方位的。</li>
<li>学习的目的不是简单模仿，而是超越。</li>
<li>华为一直强调“以客户为中心”，面向客户需求，重视客户需求，按照客户需求改进产品，并快速响应客户反馈。在向竞争对手全面学习之后，华为很快就从早期的简单模仿走向面向客户需求开发产品。</li>
<li>华为自己的销售团队有狼性，擅长经营客户关系，擅长运作项目，就冲在前面打市场、打项目，自己出面运作项目，把客户关系掌握在自己手里。</li>
<li>“向竞争对手学习”“向业界第一学习”一直是华为的重要战略，使得华为少走弯路，能够快速发展，继而通过学习实现超越。这也是所谓的“后发优势”，通过观察行业先行者的行动及效果而采取相应行动，从而降低风险，减少自身面临的不确定性。这也是华为实践得来的经验教训。</li>
<li>在产品技术创新上，华为要保持技术领先，但只能是领先竞争对手半步，领先三步就会成为“先烈”，明确将技术导向战略转为客户需求导向战略。</li>
<li>超前太多的技术，当然也是人类的瑰宝，但必须牺牲自己来实现。2000年IT（信息技术）泡沫破灭的浪潮使世界损失了20万亿美元的财富。从统计分析可以得出，几乎100%的公司并不是因为技术不先进而死掉的，而是技术先进到别人还没有对它完全认识与认可，以致没有人购买，产品卖不出去却消耗了大量的人力、物力、财力，丧失了竞争力。许多领导世界潮流的技术，虽然是万米赛跑的领跑者，但却不一定是赢家。</li>
<li>通过“向竞争对手学习”，采用跟随战略逐步发展和壮大自己是一个比较好的战略，就像华为当年第一次开始学习，学习IBM如何管理研发那样，“先僵化、再固化、再优化”，从零开始，先学会了，再谈超越的事情，稳步发展，终至大成。</li>
<li>商场如战场，对很多公司而言，销售往往是冲在最前面的，和竞争对手正面交锋，争取市场和客户。“兵者，国之大事，死生之地，存亡之道，不可不察也”，对公司而言，销售至关重要。</li>
<li>从2000年左右开始在To B行业探索，从零开始，一边学习西方先进的销售理论，一边研究竞争对手，在实战中成长。</li>
<li>要打仗就要定目标。</li>
<li>目标确定后，就要进一步调研我们对标的竞争对手的情况，他们各自的销售额、市场份额、客户分布，对比我们的情况，最终确定应该和谁竞争。</li>
<li>如果我们的定位是要做到行业一流，就要研究目标行业的前三或前五的竞争对手。如果我们的实力暂时还无法进入行业第一梯队，就要研究第二梯队的竞争对手情况。</li>
<li>确定目标之后，就要了解竞争对手的市场在哪里，客户有多少，大致是什么情况。如果我们要在某一区域和该竞争对手打，我们的力量如何，团队是否够大，是否打得过。如果力量有限，有哪些困难。在目标区域，我们有无市场基础，有无客户关系、渠道资源支撑。如果有，可否支撑我们的销售目标。如果没有，需要如何发展，需要多久的时间，我们能不能持续提供人力、物力支持。竞争对手的客户是大型、中型居多，还是小型居多。我们现阶段的力量，是适合争夺大型、中型，还是小型客户。竞争对手的客户是国有客户居多，还是民营客户居多。我们现阶段的力量，是适合争夺国有客户，还是民营客户。对待不同体量、不同类型的客户，我们的优势究竟如何，要分析，继而得出结论，从哪一类型或哪一体量的客户下手。</li>
<li>确认完竞争对手的客户情况，接下来就要研究竞争对手是如何发展和建设客户关系的。他们刚开始是如何切入客户关系的？是关系介绍、陌生拜访，还是通过市场活动拓展客户关系？他们的做法对我们而言有无借鉴意义？如果有，我们怎么做到？如果没有，我们现阶段应该怎么办？还要研究竞争对手是如何参与招投标的。比如，它应对大、中小型客户的招投标模式分别是什么样的。大型客户招投标对公司的资质要求、产品技术参数、成功案例比较严格。竞争对手是否设置了投标门槛？如果有，我们如何应对？中小型客户的招投标比较灵活、随机，项目不大，发标和投标的时间周期很短。竞争对手是如何应对的？安排了多少人对接这些数量的客户？华为要学习，对目标客户实现全面覆盖。</li>
<li>进一步找出竞争对手赢得客户、赢得订单的主要因素，明确是价格优惠，产品、解决方案领先，还是客户关系好、渠道关系好，抑或售后服务好。</li>
<li>思科的工作模式给了华为很大的启发，华为就干脆发挥直接做客户关系、做项目的优势，加大市场力度，加大客户经理人手的投入，重点发展自己赢得客户、掌握客户关系的能力。中标之后，再用项目吸引代理商加盟，逐步发展和建设自己的代理商队伍。然后对代理商进行技能培训，让代理商发现项目信息，引荐客户关系，开展市场活动等。发现项目以后，他们和华为配合运作，这种模式行之有效，这被称为华为的“准直销”模式。</li>
<li>知彼知己，百战不殆。竞争对手的风格主要由他们的高管团队决定，只有研究他们的风格以及既往的做法，才能在项目争取的关键时刻，赢得机会。要了解竞争对手的高管团队的风格特征是保守型，还是激进型。如果他们保守，在竞争中就要保持激进，力争尽快超越。如果他们激进，那么研究他们的市场结果是好的还是坏的，好的结果说明打法对路，就应该学习；如果是坏的，就要研究是哪里出了问题，不能重蹈覆辙。华为研究了思科，它的打法十分激进，在全国各地设置办事处，每个办事处有10～50人，市场覆盖面大，对客户关系的把握非常强，运作项目的打法专业，市场结果也好。华为只有学习，先学会了再说。研究竞争对手是善于杀价，还是善于做市场活动、维护客户关系。如果他们善于杀价，华为就扮演低价杀手，同样杀入。如果他们善于市场活动和客户关系，华为学习过来以同样的方法打市场。也要明确他们的高管团队是民企风格、外企风格，还是国企风格。一般来说，外企风格比较激进，打法专业，难对付；国企风格保守，内部规矩多，决策拖沓，好对付；民企风格在国内差异比较大，水平不一，要具体分析，看看他们属于比较激进、专业，还是偏保守，看看他们的市场与项目运作能力，做出对策。</li>
<li>如果研发队伍占比30%以上，100人以上，说明对手的产品实力不错。如果市场部门人数占比3%左右，至少10人，经常举办全国性市场活动，说明对手有一定的市场营销能力。如果解决方案部门及售前技术支持部门占比5%左右，至少10人，说明对手有一定的解决方案能力。</li>
<li>凡事预则立。</li>
<li>有效、完整的市场洞察要完成对5个方面的研究，分别是看行业/趋势、看市场/客户、看竞争、看自己、看机会，简称“5看”。目的是输出机会点，找到属于自己的战略机会点，抓住战略机会窗。</li>
<li>华为做国际市场，考虑的第一个风险就是政策风险，即去这个国家会不会被敌对。</li>
<li>对客户进行市场调研的方式有很多种，华为成功的实践经验证明，购买行业报告、重点客户访谈、行业专家访谈、行业代理商访谈等方式高效可行。</li>
<li>因为华为多年来的实践和事实证明：团队战斗力强，能够一直以奋斗的态度努力工作去赢得市场和客户，能够踏踏实实地从零开始，一个项目一个项目地做，一个客户一个客户地积累，这种团队即使放在海外市场，也会有灿烂的明天。</li>
<li>战略洞察阶段的重点工作，是要对目标行业和潜在客户进行全面分析，了解客户的需求，明白客户的痛点，明白什么样的客户才是华为的客户，找到客户群体的普遍规律，就是客户画像。</li>
<li>据笔者这些年来辅导企业的经验和观察，很多公司对市场洞察了解很少，基本上是凭感觉做计划，公司的业务发展既没有战略规划的牵引，也没有市场洞察，结果就是没有数据支撑，做决策不准确，公司的发展十分缓慢，管理水平提升速度缓慢，这些都是亟待解决的问题。</li>
<li>“用数字说话”更有信服力。市场调研需要了解目标行业、目标区域的基础信息和数据走向，例如，市场容量、客户分布、产品性能对比、技术发展趋势等。不少企业遇到的问题是，这些工作如果自己从头开始做，时间来不及，费用出不起，准确性很难保证，总的来说难度很大。实际上，自己做完全没有必要。不同行业、不同地区都存在很多调研公司、相关事业机构、第三方服务机构等，它们的工作内容就包括对行业进行了解，已经是一个成熟的生态圈。而且它们已经存在多年，早就已经做了相关数据的调研整理和分析。可以直接找到这些机构购买现成的报告，省时省力。注意，行业报告这一方法的目的是使我们大体上对市场情况有个初步了解，有个框架上的概念。这些数据可能存在不全面或针对性较弱的问题，但只要这些对前期市场拓展有帮助，就可以暂时忽略。</li>
<li>不管是客户还是竞争对手，它们的很多市场活动都会在网络上进行报道，而且一般都是重要事件，所以在网络上可以找到相关信息。华为一般使用关键词或者关键词组合进行搜索，能够初步获得第一层信息。然后再从这些信息里面找到更多的细节，梳理出新的关键字和关键字组合，进行第二次搜索，甚至第三次、第四次搜索，一层一层地逐渐深入剖析，就能离华为需要的信息越来越近，得到的有效信息也越来越多。笔者在马来西亚开拓市场的时候，需要了解竞争对手思科的情况，就搜索“思科+市场活动”“思科+代理商”“思科+媒体”等关键词。出于市场宣传的需要，思科一定会发布活动、新闻等宣传信息。只要有动作，就会在网络上留下痕迹。通过搜索，笔者看到了思科在某年某月在哪里举行了什么市场活动，针对哪个行业，有哪些客户参与，是和哪个代理商举行的，是和哪个媒体合作的。华为就可以参照它，做类似的市场活动。比如，华为也可以去找这类媒体公司或者相关媒体公司。更关键的是，华为知道了它的代理商是谁，目标行业是哪些，以及它的客户分布和类型，就可以有目的地接近它的代理商以及客户。</li>
<li>用地区商会开拓地方客户。</li>
<li>和政府部门打好交道其实并不难，只要接触几次你就会发现，如果你的企业做实事，它们是非常愿意提供帮助的，这也是它们的工作，同时，企业做好了也是它们的政绩。</li>
<li>进入圈子这个方式，比较有用，因为一旦进入某个小圈子，就可以认识十几人、几十人，可以快速发展人脉。</li>
<li>一是自己组织的展会，也就是自己的主场，比较容易树立自己公司的形象。这个时候不管是发布产品还是跟客户沟通，都非常有优势，有利于让客户了解和信任。</li>
<li>二是参加展会，展会上有各家相关公司，本来它们的目的就是展示自己，在这个场合和它们攀谈，它们还愿意说更多的信息，愿意交流，比起专程登门拜访效果还好。在展会上认识之后，再预约以后的见面，效果比陌生拜访更好，从不认识到成为朋友。</li>
<li>关注竞争对手的圈子市场拓展一定要注意这个手段，非常有效。</li>
<li>竞争对手是老师，他们在市场处于领先地位，有需要学习的地方，例如，他们的客户在哪里，是怎么开拓的，他们如何维护和客户的关系，他们的代理商是谁，给予代理商什么样的政策和支持，他们的价格策略等。可以有目的地接近竞争对手的圈子，例如，竞争对手的代理商、竞争对手的员工等。竞争对手的代理商也不是铁板一块，一部分也同样在寻找新的机会和合作伙伴。这时，就看我们能不能抓住机会，促成新的合作。</li>
<li>行业分析报告可以在市场调研的早期使用，通过报告初步了解市场情况，适用于看行业/趋势阶段。网络搜索引擎则适用于针对具体信息的收集和整理，有目的设计关键词组合进行搜索，得到针对性的信息，适用于看市场/客户阶段。咨询公司法、政府相关部门可以得到直接的信息，比较快速、高效，可以同时用于看行业/趋势与看市场/客户阶段。行业协会、商会法、竞争对手的圈子、产品相关社交圈子、展会等会议有利于认识更多的人、拓展关系，适用于看竞争阶段。</li>
<li>战略制定分三步走，分别是定战略控制点、定目标、定策略。“3定”的目的是输出战略规划。</li>
<li>华为有句话叫“板凳要坐十年冷”，就是要求研发人员耐得住寂寞，要坚持，目标是至少十年的长期发展，这也是华为的核心企业文化之一。</li>
<li>华为公司团队就是典型的“两头大”，研发队伍占40%，销售队伍占35%，这两支核心团队成了华为的战略控制点。</li>
<li>定目标有两个原则。一是要注意结合公司的愿景和使命。战略目标的起点和基点就是为了实现公司的愿景和使命。</li>
<li>华为公司最早的愿景是“丰富人们的沟通和生活”。1996年制定的《华为基本法》里写道：华为的追求是在电子信息领域实现顾客的梦想，并依靠点点滴滴、锲而不舍的艰苦追求，使我们成为世界级领先公司。公司的战略目标就是围绕“如何实现公司成为世界级领先公司，实现客户梦想”而制定的。</li>
<li>二是要注意目标是否合理。</li>
<li>公司的愿景和使命是希望达到的远方，它不是近期目标。战略目标是解决现阶段问题，是路标，引领公司一步一步向前发展，在可以预见的3年，制定可达到、有挑战的目标。</li>
<li>目标也是可以不断修正的。因为刚开始也不见得就能全面了解情况，就能够把目标定准。</li>
<li>慢慢掌握了情况，有了经验和案例数据，根据实际情况做了调整，目标定得越来越合理。</li>
<li>在定策略之前，我们要在确定自己核心优势的基础上，先研究竞争对手，研究业界第一流的竞争对手，把它们当老师，学习它们的长处，发现差距，发现自己的短板，想办法弥补，同时，找到自己的核心优势，放大优势。前期采用跟随策略，后期则要想办法超越。华为30年来以来就是这样做的。</li>
<li>由于华为公司小，没有品牌，同时产品技术也一般，在城市的运营商市场没有人敢采购，一台机器也卖不出去。华为就避开城市，来到农村，发挥自己价格便宜的成本优势和服务优势。这就是华为的战略控制点，“农村包围城市”就是华为的策略。农村市场不被竞争对手重视，不来农村，觉得远，条件差，单子小，工作辛苦，认为在城市就会有足够的订单，就忽略了这个市场，而华为只能做这个市场。华为在农村市场深耕，对农村客户极为重视。以华为的服务优势为例，华为的团队能做到24小时响应，能迅速到现场解决问题，从深圳坐飞机直接到客户现场是常有的事情。工程师带上笔记本，现场可以改代码，也可以立刻换新机器。这些服务在很大程度上弥补了产品质量的问题，农村客户就这样逐渐接受了这家条件不太好，但是注重服务的“土八路”公司。1995年，“村村通工程”让华为斩获15亿元。有了一点小成绩，华为开始进入城市市场，逐渐发展。华为的策略非常明确，就是以自己的成本优势和服务优势作为自己的战略控制点，这造就了华为第一个快速发展的阶段，实现了早期“活下去”的战略目标。</li>
<li>华为认识到，只靠产品便宜、服务好不行。在国际市场，唯有创新和质量超过对手，公司才有机会叩开欧洲市场的大门。</li>
<li>当时，荷兰有4家运营商，最小的一家叫Telfort，它购买了一张3G牌照，准备建网。但它遇到了一个难题——机房空间很小，摆不下第二台机柜。那时，Telfort采用的全网设备都是诺基亚提供的。Telfort找到诺基亚说：“能不能给我们开发一种小型机柜，以便我们的3G机柜也能放置进去。”诺基亚说：“不好意思，我们没有这种产品。单独给你们开发规模又太小。”碰壁后，Telfort找到当时的市场老大爱立信，并表示愿意扔掉全网诺基亚设备，跟爱立信合作。爱立信说：“对不起，我们不可能为了你改变产品研发路标。”同样，在爱立信眼中，Telfort是个小客户，也不被重视。2003年，Telfort在快要破产的情况下，遇到了华为。华为在欧洲的拓展团队听说这件事后，特意上门拜访，打探对方到底遇到了什么困难。Telfort当时也不相信华为，只不过自己走投无路，死马当活马医，才没有拒绝华为。了解完情况后，华为想到了一个解决方案——分布式基站——基站室内部分做成分体式空调那样，体积只有DVD一般大小，然后把大部分的功能放到室外。Telfort对此半信半疑：“你们说得这么好听，基站说分就能分，说合就能合吗？”华为承诺：“给一个机会，我们可以做到。”8个月后，华为的分布式基站终于诞生了。凭此，华为进入欧洲的梦想终于变成现实。然而，没过多久，当地第一大运营商荷兰皇家电信（KPN）收购了Telfort，而华为则付出了沉重的代价——全网设备被扔掉。市场一线人员、研发人员、交付人员，费尽千辛万苦才盘下的一个项目，说没就没了。荷兰皇家电信的逻辑很简单——无线网络不是设备做得漂亮就可以，关键得有用户，且很多人用起来不会出问题。所以，它没有给华为分布式基站的试验机会，认为那是一个冒险。经历这次沉重打击，华为在欧洲市场的拓展又耽搁了两年。2006年，当时世界第一大运营商沃达丰遇到一个困难，它在西班牙的主网，竞争不过当地龙头Telefonica。这时，沃达丰想到了华为有个分布式基站。沃达丰觉得，可以给华为一个机会，但它告诉华为，只有一次机会。华为也知道，一旦沃达丰否决了华为的分布式基站，今后在欧洲就再也没人相信华为了。不成功，便成仁。</li>
<li>品牌是什么？品牌是连接企业的主观努力与消费者客观认知的桥梁，它是消费者对产品印象的总和。品牌的本质就是“如何在消费者心中拥有一个名称”，在客户的心智中占领一个位置。<strong>让消费者记住品牌的差异就是企业最伟大的胜利。</strong></li>
<li>1969年，杰克·特劳特首先提出“定位”战略，掀起了第三次生产力革命。定位理论强调，避开竞争对手在顾客心智中的强势，或是利用其强势中蕴含的弱点，在顾客心智中寻找针对竞争对手而言最具优势的位置，从而使品牌胜出，在竞争中赢得优先选择，这就是定位的意义。定位要求企业选择细分领域，在细分领域有独特的差异化优势，以确立优势地位，树立品牌。</li>
<li>我们的竞争对手是谁，竞争对手的价值是什么</li>
<li>定位要避开竞争对手在顾客心智中的强势，或是利用其强势中蕴含的弱点，确立品牌的优势位置。</li>
<li>为定位提供可靠证明就是要证明自己选择这个定位是可以做好的。</li>
<li>全面贯彻品牌定位就是将品牌定位工作整合进企业运营的方方面面，对内想好如何做品牌，对外做好市场宣传、广告推广等营销活动，把品牌形象植入顾客的心智。</li>
<li>我们和它们唯一的不同就是价格。</li>
<li>品牌是企业成功发展的重要基础，要建设品牌就要首先做好品牌定位。</li>
<li>品牌愿景就是企业品牌的未来蓝图和终极目标，品牌愿景以公司愿景为基础，突出企业对消费者的长期承诺，是品牌定位和个性形成的基础。</li>
<li>品牌建设不在于费用多少，贵在找到适合自己的做法，贵在坚持，持续地向市场传播品牌形象。</li>
<li>品牌传播体系包括两部分：一是传播内容，二是传播渠道。传播内容是可以进行传播的素材、理念、文案、活动、话题等。确定好传播内容后，就要寻找传播渠道，传播渠道分为线上和线下。线上传播渠道主要是网站、博客、微博、播客、微信、论坛等，线下传播渠道主要是杂志、报纸、户外媒体、展会、沙龙等。</li>
<li>To C消费者的特征是决策简单，个人喜欢了很快可以决定；To B客户则不同，其购买要经过管理层、采购层、技术层、使用者等多个角色，且都可以发表意见，所以To B的品牌传播要考虑影响客户的各个方面。</li>
<li>华为公司的品牌工作由总部的市场部来负责，它每年年初制定年度宣传预算和公司总部的品牌工作规划，然后品牌工作分解到各个产品线，由各个产品线再次优化方案，产品线的市场部再落地实施，每个季度评估效果，每年优化迭代。</li>
<li>每次活动之后会评估效果，如果发现活动的主题设计和价值主张与一线的现实不符，市场部和一线代表处经过讨论也可以及时调整年度活动规划。市场部很重视一线员工的意见，会按照一线的实际情况设计市场活动。</li>
<li>市场活动的目的是建设品牌，建设品牌的目的是为业务服务，最终是为了实现销售目标，占领市场，华为也不例外。</li>
<li>华为的MTL，不只是一套营销流程，也是一种战略思维模式。这套思维模式要求把客户放在市场选择最前端，也就是说要以客户为中心，以结果为导向，研究客户在哪里，客户需要什么。围绕客户的需求进行深入的市场洞察，然后选择细分市场，规划产品、服务及解决方案，针对客户群体设计并执行营销活动，实现营销规划。在这个过程中，与客户联合创新，针对客户的需求培育市场，发现和生成销售线索，最终目的是实现销售，从而推动增长。</li>
<li>市场营销动作是系统化的。</li>
<li>每一次市场活动结束后需要进行复盘，总结销售线索数量，以及最终成交的情况，完成评价闭环，从而不断迭代，提升市场活动的质量。</li>
<li>一般来说，在开始大规模销售之前，要对销售人员、产品行销、市场营销人员等进行销售培训。培训的内容有商务礼仪、销售技能、渠道合作、项目运作、销售管理等。华为的培训是非常严格的，员工在出国之前，一般要接受长达4～6个月的培训。</li>
<li>国际部学员培训的内容比较多，有产品知识、销售技能、销售管理、商务英语、商务礼仪。</li>
<li>这个阶段，国际部会安排研发部门、供应链部门、技术支援部门等经常和大家做交流，介绍它们最新的工作情况。开始笔者不太理解：“为什么要了解其他部门的工作情况和最新进展？”等我们到了国际市场，就明白了。当我们需要这些部门支援的时候，自然而然地会和它们联系，而且对它们的情况心里有数，知道该怎么请它们配合工作。</li>
<li>练兵千日磨一剑，用兵一时见功夫。</li>
<li>MTL流程的目的是通过营销活动，培育市场，生成线索，推进机会点，促进增长。当我们从市场营销活动中发现线索以后，就开始进入项目销售阶段。</li>
<li>To B销售基于单位的业务需求，采购量大，单个订单小则万元左右，大则以亿元为单位，甚至更多。其次，这种需求一般是有周期性的，以年/季度为单位，循环采购，所以，B类客户期望和供方形式长期、稳定的合作关系。也正因如此，To B项目招投标的流程严格，决策谨慎，决策链复杂；项目采购一般要经过内部讨论后立项，预算设计、预算审核通过后，进入招标流程。同时，因为B类客户采购的产品都是企业/机构用途，所以对产品的性能和指标要求较为严格，对投标公司的资质要求、准入条件、实力、成功案例均有所要求。</li>
<li>To B销售是一个全流程，从接触客户开始就要谨慎小心，从各个细节证明自己的专业是可以信任的。即使一时打不开局面，也不要灰心，持续攻关，建设客户关系，等待机会。</li>
<li>时刻注意客户满意度，不要以为合同签了就万事大吉，To B类商业客户一旦发现出了问题，有不满情绪，供方就要及时处理，否则，一旦事态扩大，客户可能中断合作。</li>
<li>刚开始接触客户，从陌生到认识，重要的是让客户了解自己，留下良好的第一印象，通过自我介绍让客户了解公司以及公司的产品。所以第一次陌生拜访很重要，第一印象好不好，只有一次机会。销售人员要做好第一次拜访，就要多关注细节，可以找相关同事或朋友现场模拟，熟能生巧。</li>
<li>客户的需求决定我们推出什么产品和解决方案，了解客户需求是非常重要的一个环节。挖掘客户需求就需要提问，提问有两种方式——开放式提问和封闭式提问。开放式提问就是向客户提出比较概括、宽泛的问题，让客户自由阐述。比如“你们对这个方案有什么考虑”，目的是使对方更多地讲讲有关情况、想法等，让我们了解更多的信息。例如，笔者一般会问，“对于这个项目的方案设计，您有什么考虑”“您比较在意的关键因素是哪些，为什么”等。这样就能了解客户对方案设计的各个方面到底了解多少，以及根据其了解的程度，要如何引导。如果对方有顾虑，我们也知道如何打消这些顾虑。封闭式提问是指对提问者提出的问题有预设的答案，用来澄清事实，获取重点，缩小讨论范围。例如，“你们倾向于国内品牌，还是国际品牌”“投标时间定了吗”“上半年，还是下半年”等。</li>
<li>高手爱听，新手爱说。</li>
<li>第一次陌生拜访最好不要超过20分钟，因为毕竟是第一次拜访，双方都不熟悉，第一次会谈的主要目的是和客户见面，留下良好的第一印象，建立联系，基本就完成任务了。如果交谈时间过长，由于刚开始对客户还不熟悉，如果出现纰漏，现场弥补效果很可能不理想。一回生，二回熟，这次达到目的就尽快结束，以后再进行商务拜访双方就熟悉了，一步步搞好客户关系。在结束时，需要给第二次拜访预留由头，提出阶段性方案，并提醒客户会对方案进行细化，给出一个行动表，和客户保持沟通。</li>
<li>让客户产生信任的基础主要源于三个方面：公司实力、产品价值、个人品牌。</li>
<li>对大公司的销售来说，销售工作相对容易。客观上讲，公司的品牌起到了推介作用，客户心理上接纳程度高，信任度也会相对更高。</li>
<li>如果公司的实力小，客户自然也会犹豫，犹豫主要源于不了解。</li>
<li>销售高手通常上来先讲利益，客户听得懂，感兴趣，然后接着讲证据。客户听了这些真实的案例会信服，也会问更多的问题。这时，我们就可以抓住机会，趁热打铁，介绍特征，同时说明优势。这样，整个销售过程顺理成章，节奏尽在掌控之中。</li>
<li>客户对销售个人印象的好坏对销售进展是否顺利也有很大影响。和客户相处，只有当他觉得和你处得来，才愿意和你接近，进而产生信任，所以销售个人需做好细节，给客户留下良好的印象。不张扬，谦虚，不油滑，重承诺，这些都是客户看重的品质。很多人会误以为高谈阔论或者投其所好是销售能力的体现，恰恰相反，客户看重的是踏实、稳重、实干、守信用。另外，要用自己的成功案例和业绩说服他，包括自己服务了多少客户，做了哪些引以为豪的项目，以此证明你是可靠的，有能力。如果你只是个新人，成功案例不多，就表明自己的诚意和决心，这也可以打动客户。</li>
<li>用户对我们产生信任之后，我们就要趁热打铁，快速成交。成交是客户关系的开始。成交之后，我们和客户才有了真正意义上的合作。</li>
<li>成交之后，销售人员的第一个重点是做好项目的交付，要继续盯项目的交付进展，每周定期和公司供应链部门沟通，了解产品的生产排期有没有异常，元器件供应是否正常等，目的是保证质量，保证工期，让客户满意。很多销售人员在这个环节容易出问题，就是签了单以后，就觉得自己的事已经完成，把订单交给公司就不管了，去做其他项目，一旦项目的交付时间无法保证，客户就会催促，发现有问题了才催公司，这就导致项目交付可能出问题。在这种情况下，客户的满意度就会大打折扣，会觉得中标后就不重视他了，对你的信任度会降低，会为后面的合作埋下隐患。项目交付以后，维护客户关系的第二个重点是定期回访。回访不一定去现场，可以一两个月打个电话或者发封邮件问一问，和客户保持联系，让客户感受到关怀，让客户放心。回访其实也是给后面的项目留一个契机，可以顺理成章地问客户：“今年还有没有什么需求或计划？”回访工作很容易把项目推到下一个阶段，有机会扩大销售。维护客户关系的第三个重点是做好售后服务。售后服务周期有半年、一年等，在质保期，一旦出现问题，销售应该及时解决，可以派技术支持人员到现场处理，更换配件或者安排维修人员等。要让客户感受到我们以客户利益为重，恪守承诺，进而树立良好、职业化的形象。</li>
<li>政府类客户有一个重要特征，就是总部集权。总部对下属部门的垂直管理非常严格，地方都听中央的，同时计划性非常强，总部提前几年就把项目规划和采购预算做好了，下发到地方执行，然后总部每年持续更新规划。所以在研究政府类客户的时候，销售就要到相应的政府部门总部机构了解相应规划。例如，做铁路行业设备的企业，就需要到铁道部委总部的某建设部门了解相关产品的项目计划，这个部门有全国的项目计划表，从项目计划表里面再研究相关设备的采购计划。</li>
<li>因为没有对行业进行整体研究，不了解行业的市场容量，看不到市场全貌，也没有客户画像，导致不能做出正确的战略判断，这是国内企业普遍存在的问题。简言之，就是没有做好“5看”。</li>
<li>业务刚刚开始的时候，先破冰做好第一单，当它做好了一个小学的关系，拿下项目之后，可以通过这个小学的关系人如校长，认识他的社交圈子——教育协会、组织等，进而拿下其他小学。</li>
<li>行业地图的意义就在于指导我们的工作，让我们看见全局。刚开始可能是一个城市的行业地图，后来可以是一个省甚至全国的行业地图。行业地图就是公司的财富，是公司对市场的认知，对客户的把握，用来指导企业战略的制定，完成年度工作计划。华为非常重视行业地图工作，强调对于行业客户的全面覆盖。华为做行业客户的风格是自上而下，全面接触。对于一个行业如医疗，从中央部委的关系到省市级客户的关系再到区县级客户的关系，华为通通要做。</li>
<li>华为的做法是公司高层把握部委级别的关系，由公司的公共关系部负责协调安排公司高层和医疗相关部委领导见面，一年要走动几次，如果有大项目要启动，则随时沟通。公司在得到了高层客户关系的肯定和支持之后，各个代表处负责把握医疗行业在省市级客户的关系，由负责该行业的销售团队来对接省市级客户。对于区县级别的客户，则安排销售人员去当地区县进一步拓展关系。华为分3级来对接客户关系，目标就是实现客户100%覆盖，能够做到的客户全部做到，全部执行到位，不给竞争对手留一点机会，于是流传这样一句话，“华为过后，寸草不生”。</li>
<li>在行业地图上，客户星罗棋布，我们需要特别标注重要客户，即有了稳定合作关系并且产出大或者公司认为重要、合作潜力大的客户，也就是指名大客户。公司判定指名大客户的指标主要有以下两个。第一，销售额。越是稳定合作的客户，公司越要认真对待。对于各个区域内产出较大的客户，例如，年销售额1000万元以上，划为指名大客户。公司会从销售管理的角度持续关注该客户，要求该客户所在区域销售人员定期汇报进展。快速响应客户新需求，提升客户满意度。第二，未来潜力。顾名思义，这部分客户则是指对公司意义重大或者合作潜力巨大的客户，是未来有可能成为指名大客户的客户。这种客户即使目前没有合作或者合作很少，也要予以重视，目的是后继扩大合作。例如，在四川区域，本地几家上市的酒业、农业、饲料业公司对华为而言就是合作潜力巨大的客户，是指名大客户。在杭州，电商巨头公司就是指名大客户。同样由公司总部重点关注，安排区域里销售人员专人负责跟进，定期检查工作进展。</li>
<li>指名大客户对于销售的重要意义主要有以下两点。其一，已经稳定合作的指名大客户就是优质“奶牛”，它每年都会有稳定的大额产出，其销售收入是我们营收的稳定基础，是完成任务指标的基石。其二，对于正在合作开发的指名大客户，虽然暂时产出不多，但是它有潜力，会有更大的产出，找到了就要重视，它会逐渐变成我们牧场里面的“奶牛”。</li>
<li>普遍关系运作有3个特征：易于接触、易于突破、易于发展成支持者。</li>
<li>对于不同的项目，在有限的时间内合理地投入，对于普遍关系的基层干部、基层员工等要接触，达到一定的覆盖面即可。通常来讲，To B项目销售至少要对目标客户内部的5类角色做到基本接触，即管理线、技术线、采购线、财务线、用户线。</li>
<li>我们曾经在某省和某个大客户的一把手领导在前期沟通得比较充分，备受信任，大订单基本搞定了，但也仅仅是重点维护了和这个领导的关系，没有做到普遍关系。后来这个领导离任，新领导是原来的副总，他和之前的领导在很多管理理念上有较大差异，销售人员这才意识到他的重要性，但为时已晚，后期维护就比较吃力。有限时间内未能充分挖掘他的需求及顾虑，最终我们与该公司的项目基本终止。根据笔者这些年做管理咨询的经验，现实中绝大多数公司都会忽略普遍关系的重要性，做项目仅仅就是认识个别人或者个别领导，这是大忌。没有普遍关系，我们的信息来源太少，项目的关系支撑很单一，一旦发生变化，我们做不到及时响应，就会出现上述问题。</li>
<li>普遍而言，一般公司在运作项目的时候，和客户之间建设的关系是普遍关系和关键关系，组织关系都在销售人员的手里。这种情况对公司而言是比较危险的，因为销售人员可能离职甚至跳槽到竞争对手那里。一旦发生这种情况，公司没有积累任何客户资料，也没有积累任何客户关系，会出现客户关系空白的局面，进而面临巨大的损失。</li>
<li>2005年，我们在马来西亚做医院项目，用户线是医院的网络部门，竞争对手是阿尔卡特。我们的技术工程师和客户网络部门的工程师做了两次小范围技术交流，并向对方赠送了小礼品，客户的工程师对我们说了很多项目信息。之前客户一直使用阿尔卡特的产品，阿尔卡特为他们服务了10年。在外人看来，这个客户是阿尔卡特的铁杆客户，项目很难拿下，当时我们也是这样判断的。但是客户的工程师告诉我们，这10年来，阿尔卡特的服务越来越差，不把客户当回事。设备出了问题去找阿尔卡特，它的响应速度很慢、态度很差，客户早就很生气了。但苦于全部设备都是阿尔卡特的，他们也不敢怎么样。这次正好，只要我们的产品性能测试过关，我们的设备能够连上阿尔卡特的设备，能够使用，就有希望。这给了我们重要的提示。我们就在客户的需求指标上提前做准备，进行说明和引导，对于马上进行的测试工作格外重视。技术人员连夜从网上下载阿尔卡特的网络设备说明书，找到对应的设备型号，开始研究。结果就是我们顺利完成了测试工作，赢得客户的信任，并最终拿下项目。这就是用户线的作用，他们几句话就可以告诉我们内情，教我们怎么做。</li>
<li>一般来说，技术线客户仅对项目的技术方案部分感兴趣，喜欢讨论技术细节，比较容易相处。</li>
<li>如果用户都说好，技术部门也说这家公司的产品好，再运作管理线就容易。</li>
<li>如果客户的拍板决策人只有一个人，运作的底线是不能让他反对，他可以中立。如果反对，底线是不能一直反对，这次不行就下次，要表明态度，持续地维护客户关系。</li>
<li>对于管理线可采取以下两个策略。第一，多次拜访，不要急于求成。第二，处好关系，底线是不能反对。</li>
<li>对于技术线可采取以下两个策略。第一，发展成为Coach（线人）。第二，和他相处最重要的一点是尊重他的技术权威。</li>
<li>总的来说，用户线较为容易相处，其次是技术线和财务线，最难建立联系的就是管理线和采购线。</li>
<li>项目的成败归根结底是客户关系，只有得到客户的理解、支持和信任，他们才会放心把项目给你，所以华为一开始就十分重视客户关系建设和管理。</li>
<li>技术线的人比较务实，就事论事，喜欢谈技术细节，和他们打交道要注意以下两点。第一，我们做项目之前要做好功课，对该项目的技术方案有一定了解，和技术线交流就谈项目的技术方案，和他们有共同的语言，讨论问题多用技术术语，显示我们懂技术。从项目的技术角度出发，和他们考虑同样的问题，这样会让他们感到我们很专业，而且是从他们的角度出发来解决问题。第二，尊重和赞美他们的专业意见，有利于处好关系，将其逐步发展成我们的Coach。</li>
<li>一个项目里面存在5种客户关系，赢得项目是一个博弈的过程，不可能所有人都是我们的支持者，这就需要我们尽可能发展支持者，<strong>团结一切力量对抗反对者。</strong></li>
<li>销售需要注意发现客户隐藏的需求。某些需求，表面上是要买设备、买服务，背后更深层次的原因可能是因为客户组织的迭代，需要更优质的产品，也可能单纯是之前的供应商产品或服务不到位。总之，销售还需要进一步挖掘客户特别的要求或考虑，要把隐藏在项目需求背后的原因挖出来。</li>
<li>2004年，华为做西南某政府网络安全项目，客户在内部讨论阶段，因为自身技术部门不够专业，特地委托设计方，所以该设计方的意见则成为项目成败的关键，用户线透露的这一信息为我们的工作指明了方向。方案设计经过前期的讨论，客户对需求有了比较准确的定义，这个阶段销售就要形成一个具体方案。在这个项目里，我们要明确自己的优势是什么。在技术指标、品牌、价格、服务等方面哪些比竞争对手强，要在方案里突出自己的优势。人无我有的服务，如果竞争对手在售后服务方面有短板，售后服务不能做到24小时响应，我们则要强调售后服务要求24小时响应，3小时到现场服务。独特的技术，如果我们有某项独特的技术指标，那么就要大力宣传和推荐，让用户认可，写入招标方案的技术要求。如果我们的某些技术指标不如竞争对手，就强调大家的产品都能满足实际工作需要，某些具体指标没必要定得过高。价格优势，如果大家的价格都差不多，就要突出我们的品牌优势、国产优势或者服务优势。总之，这个阶段要通过设计方案建立门槛，利用自身独有的优势屏蔽竞争对手。 2004年，华为做西南某医疗行业客户项目，客户的网点有1000多个，需要每天晚上和行业主管单位同步数据。</li>
<li>百闻不如一见。</li>
<li>着装注意“三色原则”，就是服装不要超过三种颜色。男士要注意发型，不要太乱，指甲要整洁；女士注意不要化浓妆，最好穿职业装。</li>
<li>美好的印象是在前3分钟建立的，第一印象很难改变，因此，我们见每一个客户都要做好准备。</li>
<li>拜访从和客户握手开始，握手要有力，3秒左右，交换名片，落座，进入开场白环节。要给自己设计一个漂亮的开场白，要简洁、大方、有趣，控制在1分钟以内。</li>
<li>在华为，我们经常模拟常见的客户拜访场景，有人扮演客户，其他人练习登门拜访，旁边的人观察，一次交谈几分钟。这一轮演练结束以后，角色互换。这个过程很有趣，通过对不同角色的扮演和观察，我们会看到自己的不足，继而强化训练。熟能生巧，练习多了，在客户拜访时就不会恐惧了，进而提高拜访水平。</li>
<li>销售工作归根结底还是人的工作，成败的关键还是客户关系。</li>
<li>在合适的时机送合适的礼品，可以起到事半功倍的作用。要注意的是，礼品不在于贵重，而在于贴心，要突出对客户的体贴、尊重。</li>
<li>要注意，成交的前提是产生信任，客户不信任则不会投赞成票，商务活动就是产生信任的时机。</li>
<li>以上这7种武器可以在项目发展的6个阶段发挥威力。在项目产生需求的阶段，最适合的武器是拜访，以此接触客户、了解客户。当然也可以带上公司的小礼品，通过展会认识客户，发现客户需求。在项目的内部准备阶段，最适合的武器是技术交流、小礼品。在项目的方案设计阶段，最适合的武器是技术交流、展会、商务活动。在项目的评估和比较阶段，最适合的武器是参观考察、技术交流、商务活动。在项目的投标竞争阶段，最适合的武器是参观考察、商务活动等手段。在项目的购买和实施阶段，最适合的武器是小礼品、商务活动等手段，主要是维护客户关系。</li>
<li>从公司经营角度看，任何公司都有4件大事：一是产品研发和生产；二是市场推广；三是销售；四是售后服务。</li>
<li>LTC流程作为运作类流程之一，是秉承“以客户为中心”的思想，从销售视角建立的“发现销售线索—培育线索—将线索转化为订单—管理订单执行/回款”的流程。</li>
<li>验证机会点就是要对机会点进行综合评估，判断该机会是否有效，是否值得做，有多大的把握能把项目做成。这一步需要决策，要进行综合评估，需要整个销售项目团队以及相关的职能团队共同完成。</li>
<li>把公司所有项目进行统一管理的工具就是销售漏斗，对To B销售管理来说，销售漏斗是一个重要且必需的管理工具。</li>
<li>在销售工作中，首先是发现销售线索。这些线索属于情报，没有得到确认，销售人员跟踪这些线索，联系客户，然后确认项目需求真实存在，并且有预算。这时，线索就转化为项目机会或者商机。我们把项目线索比喻为一滴水，多个项目机会就是多滴水，汇聚成水流——商机。</li>
<li>值得注意的是，在漏斗第三层的上面还有一层筛子，它是防止渣子、碎石这些杂质流进漏斗。这个筛子被比喻为项目机会的评判标准，项目情报要经过验证才能成为项目线索。华为要求在验证项目是否为有效商机时，至少要和客户接触，不管是面谈，还是电话或邮件，都要先接触客户，确认这个项目的采购需求，而且采购有明确的时间规划，一般要求1年内有采购计划，这样这个项目线索才是有效的。如果没有筛子，没有标准，随便一个项目机会就被销售人员定义为3类项目，会导致3类项目的质量很低。销售每天联系这些项目，疲于奔命，没有结果，这是要避免的。</li>
<li>不是所有的项目都有机会发展。</li>
<li>华为To B的企业网部门在抓销售额的时候，不仅仅是抓1类项目应该怎么运作，而是盯着3类项目，抓商机的储备，因为3层漏斗里面如果没有足够的水，那么等1类项目结束之后，漏斗就干了，没有项目了，不能保证销售目标的达成。</li>
<li>为什么3类项目这么重要？为什么商机储备这么重要？针对To B行业项目进行销售管理的意义在于管理成功率，提升项目成功率，保证销售目标达成，而不是每个项目都要求赢。只要项目储备足够大，按照项目成功的概率也能完成公司目标，不在于某个项目的成败得失。</li>
<li>衰减率异常这个漏斗的形状意味着什么？说明大部分3层项目都丢了，只有一小部分进入2层。很多2层项目也丢了，只有一小部分流到1层。1层里面有一小部分成功，漏斗里面仅流出来一点水，项目成功率非常低。从这个形状很难看的漏斗模型，很容易看出来项目销售的情况有问题，项目销售的成功率太低，需要进一步分析原因，扭转局面，这样销售漏斗就起到了销售管理的作用。</li>
<li>公司没有项目储备，总是在忙手头的事情，没有为将来做准备，这是普遍问题。</li>
<li>这时，销售人员和客户刚刚见面，刚刚认识，要注意商务礼仪，发展客户关系。</li>
<li>华为经常遇到这种情况：第一个报备项目的代理商并不是客户最支持的代理商。在这种情况下，是以“拿下项目”为原则，以客户意见为准，客户推荐哪家代理商，就优先支持谁。对第一个报备项目的代理商则给予适当回报，如给其一个新的客户或者订单，让其负责维护客户。</li>
<li>任正非说过：“所谓狼性，就是要有敏锐的嗅觉，不屈不挠、奋不顾身的进攻精神和群体奋斗的决心，强烈的目标导向，不达目的不罢休的精神。”</li>
<li>“以客户为中心，以奋斗者为本，长期坚持艰苦奋斗”这句话深深印在每个华为人的脑海。</li>
<li>“为客户服务是华为存在的唯一理由，客户需求是华为发展的原动力。”</li>
<li>企业不应从自身角度出发去想推出什么产品，而应推出客户需要的产品或者服务，要为客户创造价值，让客户更成功。华为在企业文化的高度，要求每个员工以客户为中心，员工被明确告知，客户利益高于其他一切群体的利益。这可以说是华为的最高要求，是每个员工的行为准则，是每个新员工入职学习的第一课。</li>
<li>华为明确了自己的原则就是“以奋斗者为本”。对一家公司来说，员工不会100%都是奋斗者，那么华为开宗明义：不是奋斗者就不为本。道理很简单，没有客户就没有企业，而没有员工去奋斗创造优质的产品、服务，又哪里会有客户。</li>
<li>不奋斗，没有奋斗者，面临世界级的强敌，华为这样的弱小公司怎么会赢呢？为了活下去，公司必须“以奋斗者为本”。</li>
<li>员工知道公司“以奋斗者为本”，他就会放心成为奋斗者，敢打敢拼，愿意付出和奉献，因为他知道公司不会亏待他，这就是文化的力量。</li>
<li>烧不死的鸟是凤凰</li>
<li>要打造狼性团队，就要给“狼”吃肉。如果给“狼”吃草，时间久了，“狼”就在团队里消失了。同样，如果让雷锋吃亏，以后就不会有雷锋了，这是负向循环。公司出现了雷锋就奖励他，树立标杆，雷锋有回报，大家都看得到，都会想当雷锋，就会有更多的雷锋涌现出来，这是正向循环。</li>
<li>赏罚分明的做法使得每一位干部都兢兢业业、认真努力地工作，带领团队实现组织目标，让团队成功，让目标达成。</li>
<li>干部要洞察客户的需求，针对客户需求提升自身能力，弥补能力短板，抓业务增长。一手抓业务，告诉员工如何做，提供资源支持一线；一手抓管理，让员工队伍有纪律，有干劲，提升组织的业务水平和管理水平。</li>
<li>“将军是打出来的”。</li>
<li>“一切为了胜利”如果浓缩成一个字，就是“赢”，华为的精神就是“赢”的精神。</li>
<li>销售，就是要赢，赢得项目，赢得客户，赢得市场，这是唯一的答案，也是必须的结果。</li>
<li>对销售而言，结果是第一位的，在华为没有结果谈苦劳是没有任何意义的。每个人的任务必须按时、保质完成，没有借口。为了赢，就必须“一切为业务服务，一切为了前线”，“让听得到炮声的人指挥战斗”。</li>
<li>华为的员工培养方法是基于721法则设计的。721法则提出，就工作能力而言，能力提升的70%来自工作实践，20%来自就学习课题和老师、同学之间进行的讨论，讨论不限于是课堂上、工作中还是下班后，10%来自课堂学习、老师的培训。</li>
<li>一个干部要想晋升，就必须经过多个业务领域的历练，比如从研发部门去做产品行销、市场营销或者一线销售，下一步还可能到供应链、采购部工作等。这种做法，既能开阔干部的经营管理视野，满足个人发展需求，也可有效遏制腐败的滋生。</li>
<li>华为干部培训中心的员工培养项目有三个特点。一是重视实践，强调训战结合，需要什么就学什么，马上能用。所谓的训战，就是一边赋能、一边实战，强调学习的转化。任正非说：“华为大学一定要办得不像大学，因为我们的学员都接受过正规教育。你们的特色就是训战结合，赋予学员专业作战能力。整个公司第一要奋斗，第二要学会掌握奋斗的办法，仅有干劲，没有能力是不行的。”训战一体化最早在军事上应用较多，后来在华为发扬光大，现在的企业培训，对训战一体化模式越来越认可。二是师资以员工兼职为主，倡导“最优秀的人培养更优秀的人”。华为管理着公司近一万名兼职讲师队伍，站上讲台的都是各级管理干部和业务专家。三是除了赋能，也要锻造“精神”。员工在华为大学参加培训，不仅要掌握相应的技能，也要训练对公司价值观的认可，对企业文化的传承，对公司制度的学习，对个人精气神的修炼。</li>
<li>在工作中如何正确、客观、合理地评价人才和工作结果？一切都要从做好考核开始——正确评价“创造了多少价值”尤为重要，要合理设计考核指标，正确衡量工作结果，既要有“责任结果”评价，也要评估“关键行为”，综合评价“价值创造”，把每个员工的季度考核做到位，作为年度激励的依据。</li>
<li>任正非说：“企业持续发展的动力不是人才问题，是利益分配的问题。”</li>
<li>公司强调：对员工而言，最大的非物质激励就是机会。</li>
<li>华为管理狼性销售团队有3个要点——抓纪律、管过程、立典型。</li>
<li>在华为，对销售人员而言，最大的纪律就是按时完成任务。这是铁的纪律，完成了任务才合格，完不成就会面临转岗或者被辞退。公司对销售人员的要求是攻下山头，攻不下，只有换人。正是因为华为要求每一个人都必须完成任务，赏罚分明，严格地执行纪律，才使得这支队伍具备超强的执行力。</li>
<li>狼性销售团队是公司业务发展的重要支撑，但不是仅仅靠喊口号就可以打造出来的，这是一个全面工程。企业文化、干部队伍、员工能力、人才培养、绩效考核、激励政策等方面都要做到位，同时要抓纪律、管过程、立典型，这是打造狼性销售团队的法宝。</li>
<li>华为就用例行的每周项目分析会，每个人讲自己的项目，一个人一个人地讲，讲讲项目背景、竞争情况、客户情况、客户需求、目前进展、下一步计划，一个项目一个项目分析，通过集体讨论分析，传授知识和经验来帮助他们成长。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>31-常用文档编写规范</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/31-%E5%B8%B8%E7%94%A8%E6%96%87%E6%A1%A3%E7%BC%96%E5%86%99%E8%A7%84%E8%8C%83/</link>
      <pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/31-%E5%B8%B8%E7%94%A8%E6%96%87%E6%A1%A3%E7%BC%96%E5%86%99%E8%A7%84%E8%8C%83/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091859678.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;部门项目文档是使用 &lt;code&gt;ShowDoc&lt;/code&gt; 进行管理的，为了技术文档的整洁以及易于阅读，根据当前实际情况，整理了一些文档编写规范。&lt;/p&gt;
&lt;p&gt;标准的文档应包括 &lt;code&gt;TOC&lt;/code&gt; 标题目录、说明栏、标题、子标题（如果需要）、内容，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091842786.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091843371.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;2-标题&#34;&gt;2. 标题&lt;/h1&gt;
&lt;p&gt;标题总共有 3 种样式，可以选择任意一种，视具体情况而定，但是最好不要混用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;一、样式&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;、样式&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;样式&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;预览效果，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091846702.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;如果只有一级标题，3 种样式都可以使用，&lt;strong&gt;如果有子标题，建议使用样式3&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是一级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;##&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是二级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;###&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是三级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;###&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是三级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;##&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.2&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是二级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;##&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.3&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是二级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;这是一级标题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;文档内容中显示的效果，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091826297.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;文档大纲显示的目录样式，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091827126.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3-代码块&#34;&gt;3. 代码块&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;Markdown&lt;/code&gt; 语法支持代码格式化，在文档中显示更为美观，方式是除了操作栏上面的快捷按钮 &lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091826634.png&#34;&gt;，也可以头尾加上```实现，我们通常使用这个功能主要是为了在文档中贴上代码，但也会在其他情况下使用，比如一些命令或者很长的 &lt;code&gt;Bug&lt;/code&gt; 报错信息。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;代码&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vue&#34; data-lang=&#34;vue&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;CounterApp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;mounted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;setInterval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;命令&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Bug 报错信息&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Uncaught TypeError: Cannot &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; property &lt;span class=&#34;s1&#34;&gt;&amp;#39;toggleRowSelection&amp;#39;&lt;/span&gt; of undefined
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;4-文本高亮&#34;&gt;4. 文本高亮&lt;/h1&gt;
&lt;p&gt;文本高亮通常在输入英文单词时使用，一来为了强调重点，二来是为了界面美观。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091859678.png"></p>
<h1 id="1-前言">1. 前言</h1>
<p>部门项目文档是使用 <code>ShowDoc</code> 进行管理的，为了技术文档的整洁以及易于阅读，根据当前实际情况，整理了一些文档编写规范。</p>
<p>标准的文档应包括 <code>TOC</code> 标题目录、说明栏、标题、子标题（如果需要）、内容，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091842786.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091843371.png"></p>
<h1 id="2-标题">2. 标题</h1>
<p>标题总共有 3 种样式，可以选择任意一种，视具体情况而定，但是最好不要混用。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="err">#</span> <span class="err">一、样式</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="mi">1</span><span class="err">、样式</span><span class="mi">2</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="mi">1</span><span class="p">.</span> <span class="err">样式</span><span class="mi">3</span>
</span></span></code></pre></div><p>预览效果，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091846702.png"></p>
<p>如果只有一级标题，3 种样式都可以使用，<strong>如果有子标题，建议使用样式3</strong>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="err">#</span> <span class="mi">1</span><span class="p">.</span> <span class="err">这是一级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">##</span> <span class="mf">1.1</span> <span class="err">这是二级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">###</span> <span class="mf">1.1</span><span class="p">.</span><span class="mi">1</span> <span class="err">这是三级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">###</span> <span class="mf">1.1</span><span class="p">.</span><span class="mi">2</span> <span class="err">这是三级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">##</span> <span class="mf">1.2</span> <span class="err">这是二级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">##</span> <span class="mf">1.3</span> <span class="err">这是二级标题</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="mi">2</span><span class="p">.</span> <span class="err">这是一级标题</span>
</span></span></code></pre></div><p>文档内容中显示的效果，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091826297.png"></p>
<p>文档大纲显示的目录样式，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091827126.png"></p>
<h1 id="3-代码块">3. 代码块</h1>
<p><code>Markdown</code> 语法支持代码格式化，在文档中显示更为美观，方式是除了操作栏上面的快捷按钮 <img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091826634.png">，也可以头尾加上```实现，我们通常使用这个功能主要是为了在文档中贴上代码，但也会在其他情况下使用，比如一些命令或者很长的 <code>Bug</code> 报错信息。</p>
<ol>
<li>代码</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vue" data-lang="vue"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">CounterApp</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">data</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">counter</span><span class="o">:</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nx">mounted</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">setInterval</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="k">this</span><span class="p">.</span><span class="nx">counter</span><span class="o">++</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span> <span class="mi">1000</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><ol start="2">
<li>命令</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">npm install
</span></span><span class="line"><span class="cl">npm run dev
</span></span></code></pre></div><ol start="3">
<li>Bug 报错信息</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">Uncaught TypeError: Cannot <span class="nb">read</span> property <span class="s1">&#39;toggleRowSelection&#39;</span> of undefined
</span></span></code></pre></div><h1 id="4-文本高亮">4. 文本高亮</h1>
<p>文本高亮通常在输入英文单词时使用，一来为了强调重点，二来是为了界面美观。</p>
<ol>
<li>实现方式</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="err">我们创建了一份完整的构建</span> <span class="sb">`Vue`</span> <span class="err">服务端渲染应用的指南。这份指南非常深入，适合已经熟悉</span> <span class="sb">`Vue`</span> <span class="err">、</span> <span class="sb">`webpack`</span> <span class="err">和</span> <span class="sb">`Node.js`</span> <span class="err">开发的开发者阅读。请移步</span> <span class="sb">`ssr.vuejs.org`</span> <span class="err">。</span>
</span></span></code></pre></div><ol start="2">
<li>实现效果</li>
</ol>
<p>我们创建了一份完整的构建 <code>Vue</code> 服务端渲染应用的指南。这份指南非常深入，适合已经熟悉 <code>Vue</code> 、 <code>webpack</code> 和 <code>Node.js</code> 开发的开发者阅读。请移步 <code>ssr.vuejs.org</code> 。</p>
<h1 id="5-超链接">5. 超链接</h1>
<p>超链接的使用方式，方括号里是超链接显示的文本内容，圆括号是超链接具体的网址。</p>
<ol>
<li>实现方式</li>
</ol>
<pre tabindex="0"><code>[ECMAScript 6](https://es6.ruanyifeng.com/)
</code></pre><ol start="2">
<li>实现效果</li>
</ol>
<p><a href="https://es6.ruanyifeng.com/">ECMAScript 6</a></p>
<h1 id="6-插入图片">6. 插入图片</h1>
<p>插入图片的使用方式和超链接方式很相似，只是在前面多个一个感叹号 <code>!</code> 而已。但这种不是最便捷的，如果是在 <code>ShowDoc</code> 上面使用，直接复制图片，在文档中粘贴即可，会自动上传并回显图片的路径。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506091903043.png"></p>
<h1 id="7-应用模板">7. 应用模板</h1>
<ol>
<li>解决方案文档，可以参照《Web应用实现在手机端访问和使用方案》</li>
<li>技术笔记文档，可以参照《Sentry的基本使用》、《Linux与Windows跨平台文件共享实现》</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>30-多项目的需求和计划如何有效规划</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/30-%E5%A4%9A%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%9C%80%E6%B1%82%E5%92%8C%E8%AE%A1%E5%88%92%E5%A6%82%E4%BD%95%E6%9C%89%E6%95%88%E8%A7%84%E5%88%92/</link>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/30-%E5%A4%9A%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%9C%80%E6%B1%82%E5%92%8C%E8%AE%A1%E5%88%92%E5%A6%82%E4%BD%95%E6%9C%89%E6%95%88%E8%A7%84%E5%88%92/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071603375.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在前面《25 - 项目需求如何有效梳理》文章中，已经说明过项目需求应如何依据实际情况进行梳理。不过，那是针对单个项目的情况。&lt;/p&gt;
&lt;p&gt;倘若项目负责人负责多个项目，且这些项目之间存在一定关联，例如同属某个具体行业，此时，项目需求梳理就会面临问题。&lt;/p&gt;
&lt;p&gt;该项目负责人所在团队有 10 人，负责项目 A、B 两个项目，这就需要两份需求文档、两个项目计划以及两个版本发布时间。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;项目 A 的需求文档和项目计划&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071506286.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051758210.png&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;项目 B 的需求文档和项目计划&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071509910.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051758321.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;按理来说，这种安排并没有什么问题。然而，由于这两个项目均由这 10 个人负责，存在人员复用的情况，项目 A 的需求和计划一旦发生变化，就会对项目 B 的需求和计划制定产生影响。&lt;/p&gt;
&lt;p&gt;对于项目负责人而言，项目管理的难度显著增加。一方面，需要在不同的项目文档里整理需求；另一方面，还需在不同项目中修改计划。&lt;/p&gt;
&lt;p&gt;此外，还有两个版本发布时间，原本 10 个人负责的工作，却出现两个目标时间节点，无论是目标导向还是上下级沟通，都变得很复杂。&lt;/p&gt;
&lt;p&gt;如何解决这一问题呢？&lt;/p&gt;
&lt;p&gt;一方面要简化项目负责人对多个项目的管理工作，另一方面要让这 10 个项目成员更具目标感和凝聚力，设定唯一目标，即 10 个人要在规定的时间节点前完成安排的任务。&lt;/p&gt;
&lt;p&gt;鉴于项目 A 和项目 B 同属一个行业，可以把它们转为子项目，重新创建一个总项目，下设子项目 A 和子项目 B，如此一来，就只需一份需求文档、一个项目计划和一个版本发布时间。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071525960.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051801688.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;但这里存在一个问题，总项目的版本号只是用来做需求规划的，项目 A、项目 B 都有各自独立的版本号，并没有办法沿用总项目的版本号。那么，如何将它们与需求文档关联起来，以便追溯呢？&lt;/p&gt;
&lt;p&gt;例如，项目 A 线上出现了 Bug，需要查看这个版本更新了哪些内容，才能判断 Bug 的影响范围。&lt;/p&gt;
&lt;p&gt;假设总项目需求文档是 V1.0，而项目 A 当前版本是 V2.1，怎么在需求文档中查看项目 A 的 V2.1 迭代了哪些功能呢？&lt;/p&gt;
&lt;p&gt;我能想到的是，只需要在总项目每个版本的需求文档里，在项目 A 旁标记当前版本号，并评估这些迭代功能是否需要升版本号即可。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071534091.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071603375.jpeg"></p>
<p>在前面《25 - 项目需求如何有效梳理》文章中，已经说明过项目需求应如何依据实际情况进行梳理。不过，那是针对单个项目的情况。</p>
<p>倘若项目负责人负责多个项目，且这些项目之间存在一定关联，例如同属某个具体行业，此时，项目需求梳理就会面临问题。</p>
<p>该项目负责人所在团队有 10 人，负责项目 A、B 两个项目，这就需要两份需求文档、两个项目计划以及两个版本发布时间。</p>
<ol>
<li>项目 A 的需求文档和项目计划</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071506286.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051758210.png"></p>
<ol start="2">
<li>项目 B 的需求文档和项目计划</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071509910.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051758321.png"></p>
<p>按理来说，这种安排并没有什么问题。然而，由于这两个项目均由这 10 个人负责，存在人员复用的情况，项目 A 的需求和计划一旦发生变化，就会对项目 B 的需求和计划制定产生影响。</p>
<p>对于项目负责人而言，项目管理的难度显著增加。一方面，需要在不同的项目文档里整理需求；另一方面，还需在不同项目中修改计划。</p>
<p>此外，还有两个版本发布时间，原本 10 个人负责的工作，却出现两个目标时间节点，无论是目标导向还是上下级沟通，都变得很复杂。</p>
<p>如何解决这一问题呢？</p>
<p>一方面要简化项目负责人对多个项目的管理工作，另一方面要让这 10 个项目成员更具目标感和凝聚力，设定唯一目标，即 10 个人要在规定的时间节点前完成安排的任务。</p>
<p>鉴于项目 A 和项目 B 同属一个行业，可以把它们转为子项目，重新创建一个总项目，下设子项目 A 和子项目 B，如此一来，就只需一份需求文档、一个项目计划和一个版本发布时间。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071525960.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506051801688.png"></p>
<p>但这里存在一个问题，总项目的版本号只是用来做需求规划的，项目 A、项目 B 都有各自独立的版本号，并没有办法沿用总项目的版本号。那么，如何将它们与需求文档关联起来，以便追溯呢？</p>
<p>例如，项目 A 线上出现了 Bug，需要查看这个版本更新了哪些内容，才能判断 Bug 的影响范围。</p>
<p>假设总项目需求文档是 V1.0，而项目 A 当前版本是 V2.1，怎么在需求文档中查看项目 A 的 V2.1 迭代了哪些功能呢？</p>
<p>我能想到的是，只需要在总项目每个版本的需求文档里，在项目 A 旁标记当前版本号，并评估这些迭代功能是否需要升版本号即可。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071534091.png"></p>
<p>如果要在该文档系统中列出项目 A 某个版本的全部需求（比如 V2.1 ），可以在搜索框使用【项目 A `2.1`】进行搜索，这样相关内容就能全部罗列出来。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506071538319.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2025-06-04 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-06-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 04 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2025-06-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米+鸡蛋+脱脂牛奶&lt;/li&gt;
&lt;li&gt;午餐：番茄炒蛋+猪肉+手工面&lt;/li&gt;
&lt;li&gt;晚餐：酸菜猪肉饺子+冰西瓜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;躺着举手，20kg，5组，一组10个。&lt;/li&gt;
&lt;li&gt;大腿上下，75kg，一组10个，5组。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;先坚持一个月，其他的再说，不然说那么多有个毛用。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米+鸡蛋+脱脂牛奶</li>
<li>午餐：番茄炒蛋+猪肉+手工面</li>
<li>晚餐：酸菜猪肉饺子+冰西瓜</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>躺着举手，20kg，5组，一组10个。</li>
<li>大腿上下，75kg，一组10个，5组。</li>
</ol>
<h2 id="有氧">有氧</h2>
<p>无</p>
<h2 id="总结">总结</h2>
<p>先坚持一个月，其他的再说，不然说那么多有个毛用。</p>
]]></content:encoded>
    </item>
    <item>
      <title>29-任务跟进问题的反思与解决方案</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/29-%E9%A1%B9%E7%9B%AE%E6%80%BB%E8%B4%9F%E8%B4%A3%E4%BA%BA%E6%80%8E%E4%B9%88%E8%B7%9F%E8%BF%9B%E4%BB%BB%E5%8A%A1/</link>
      <pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/29-%E9%A1%B9%E7%9B%AE%E6%80%BB%E8%B4%9F%E8%B4%A3%E4%BA%BA%E6%80%8E%E4%B9%88%E8%B7%9F%E8%BF%9B%E4%BB%BB%E5%8A%A1/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031131783.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;最近，我发现有些事情安排下去后，如果我这边没有跟进到位，过一段时间，这件事情可能就突然没了下文。&lt;/p&gt;
&lt;p&gt;起因是之前我和项目负责人沟通一件事，有个项目的原型和已有项目基本没什么差别，于是探讨如何复用和设计，以实现前端组件复用，减少工作量。&lt;/p&gt;
&lt;p&gt;当时，我们在座位上沟通，也说好方案大概完成的时间。然而，过了一两周，我看项目需求文档时，发现上面压根没记录这件事。和他沟通后，他才又想起来好像有这么回事。&lt;/p&gt;
&lt;p&gt;乍听之下，肯定觉得这是项目负责人的问题。但深入思考后，我才意识到，很可能我这边才是最大的问题。&lt;/p&gt;
&lt;p&gt;为什么这么说呢？&lt;/p&gt;
&lt;p&gt;因为我习惯在滴答清单上列出每天要做的任务，每做完一条就勾选掉。这本身没什么问题，问题在于对于安排型任务，我也是如此处理。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031124170.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;通常我会和项目负责人在座位上沟通，把事情的背景、要做什么、为什么这样做以及要达成什么结果都说明清楚，然后给出大概的完成时间。&lt;/p&gt;
&lt;p&gt;之后，我就在滴答清单上把这条任务勾掉，觉得事情已经安排下去，就算做完了。&lt;/p&gt;
&lt;p&gt;但这个事情进入下一个环节，会出现哪些情况呢？&lt;/p&gt;
&lt;p&gt;如果项目负责人本身具备及时反馈的意识，那还好说。但要是项目负责人不重视，或者被其他事情干扰、疏忽了，而我这边又没有及时跟进，过了一两周甚至更久，才突然想起好像有这么一件事，那时可就晚了。&lt;/p&gt;
&lt;p&gt;这个时候，我能去问责项目负责人吗？&lt;/p&gt;
&lt;p&gt;其实也不是不行，但对方也有理由，这一两周也没闲着，只是事情太多太杂，忘记了而已。&lt;/p&gt;
&lt;p&gt;通常都是这类理由，所以问责也于事无补，反正也改变不了现在这个结果。因此，没必要问责，还是要从最本质的问题出发，找到最根本的原因，再通过一些策略彻底解决这个问题。&lt;/p&gt;
&lt;p&gt;首先，从我自身角度来说，就是要跟进到位。那怎么解决任务跟进的问题呢？&lt;/p&gt;
&lt;p&gt;我想到一个方案，就是在企业微信上创建一个任务清单表格，把需求提出方、提出时间、任务内容、安排时间、计划完成时间、验收情况、进度情况都填写清楚，并实时更新。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031126818.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;每周都要梳理一遍上面的任务情况，再结合每两周一次的项目进度会议，及时更新任务进度。&lt;/p&gt;
&lt;p&gt;如果出现任何问题，比如事情被遗忘、遇到困难、无法推进等等，及时沟通解决。等事情验收完成后，再在任务清单上标记已完成。我觉得这样就能解决上述问题。&lt;/p&gt;
&lt;p&gt;总的来说，安排任务时，不能只是把任务分配下去就高枕无忧了。虽然每一条任务的发布和验收形成闭环是很理想的状态，但在这个过程中，及时跟进也至关重要。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031131783.png"></p>
<p>最近，我发现有些事情安排下去后，如果我这边没有跟进到位，过一段时间，这件事情可能就突然没了下文。</p>
<p>起因是之前我和项目负责人沟通一件事，有个项目的原型和已有项目基本没什么差别，于是探讨如何复用和设计，以实现前端组件复用，减少工作量。</p>
<p>当时，我们在座位上沟通，也说好方案大概完成的时间。然而，过了一两周，我看项目需求文档时，发现上面压根没记录这件事。和他沟通后，他才又想起来好像有这么回事。</p>
<p>乍听之下，肯定觉得这是项目负责人的问题。但深入思考后，我才意识到，很可能我这边才是最大的问题。</p>
<p>为什么这么说呢？</p>
<p>因为我习惯在滴答清单上列出每天要做的任务，每做完一条就勾选掉。这本身没什么问题，问题在于对于安排型任务，我也是如此处理。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031124170.png"></p>
<p>通常我会和项目负责人在座位上沟通，把事情的背景、要做什么、为什么这样做以及要达成什么结果都说明清楚，然后给出大概的完成时间。</p>
<p>之后，我就在滴答清单上把这条任务勾掉，觉得事情已经安排下去，就算做完了。</p>
<p>但这个事情进入下一个环节，会出现哪些情况呢？</p>
<p>如果项目负责人本身具备及时反馈的意识，那还好说。但要是项目负责人不重视，或者被其他事情干扰、疏忽了，而我这边又没有及时跟进，过了一两周甚至更久，才突然想起好像有这么一件事，那时可就晚了。</p>
<p>这个时候，我能去问责项目负责人吗？</p>
<p>其实也不是不行，但对方也有理由，这一两周也没闲着，只是事情太多太杂，忘记了而已。</p>
<p>通常都是这类理由，所以问责也于事无补，反正也改变不了现在这个结果。因此，没必要问责，还是要从最本质的问题出发，找到最根本的原因，再通过一些策略彻底解决这个问题。</p>
<p>首先，从我自身角度来说，就是要跟进到位。那怎么解决任务跟进的问题呢？</p>
<p>我想到一个方案，就是在企业微信上创建一个任务清单表格，把需求提出方、提出时间、任务内容、安排时间、计划完成时间、验收情况、进度情况都填写清楚，并实时更新。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202506031126818.png"></p>
<p>每周都要梳理一遍上面的任务情况，再结合每两周一次的项目进度会议，及时更新任务进度。</p>
<p>如果出现任何问题，比如事情被遗忘、遇到困难、无法推进等等，及时沟通解决。等事情验收完成后，再在任务清单上标记已完成。我觉得这样就能解决上述问题。</p>
<p>总的来说，安排任务时，不能只是把任务分配下去就高枕无忧了。虽然每一条任务的发布和验收形成闭环是很理想的状态，但在这个过程中，及时跟进也至关重要。</p>
]]></content:encoded>
    </item>
    <item>
      <title>28-项目总负责人应该在什么时候介入项目</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/28-%E9%A1%B9%E7%9B%AE%E6%80%BB%E8%B4%9F%E8%B4%A3%E4%BA%BA%E5%BA%94%E8%AF%A5%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E4%BB%8B%E5%85%A5%E9%A1%B9%E7%9B%AE%E4%B8%AD/</link>
      <pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/28-%E9%A1%B9%E7%9B%AE%E6%80%BB%E8%B4%9F%E8%B4%A3%E4%BA%BA%E5%BA%94%E8%AF%A5%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E4%BB%8B%E5%85%A5%E9%A1%B9%E7%9B%AE%E4%B8%AD/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280600445.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;项目总负责人究竟应该在什么时候介入项目呢？&lt;/p&gt;
&lt;p&gt;这个问题的本质其实是在深入探讨，何时需要项目总负责人直接替代项目负责人做出关键决策，或者直接介入并解决项目推进过程中遇到的具体问题。&lt;/p&gt;
&lt;p&gt;下面以项目负责人为张三、项目总负责人为王七的实际案例进行详细说明。&lt;/p&gt;
&lt;h1 id=&#34;2-事情起因&#34;&gt;2. 事情起因&lt;/h1&gt;
&lt;p&gt;曾经有一次，客户在项目沟通群里反馈了一个问题，明确提到平台的地图功能没有正常显示出来。&lt;/p&gt;
&lt;p&gt;当时正值周六，按照常规工作安排，大家都没有在公司上班，因此项目负责人张三可能没有及时留意到沟通群里的消息，也就没有在第一时间回复客户。&lt;/p&gt;
&lt;p&gt;后来，有看到消息的同事将客户反馈的问题转发到了部门群，这样整个部门的人员都能看到客户的反馈内容了。&lt;/p&gt;
&lt;p&gt;可即便如此，张三仍然没有在部门群里对客户的问题进行回复。&lt;/p&gt;
&lt;h1 id=&#34;3-张三为什么没有及时回复&#34;&gt;3. 张三为什么没有及时回复&lt;/h1&gt;
&lt;p&gt;事后了解到，他认为地图功能并不是由自己负责的项目团队开发的，而是属于其他项目团队的功能，自己负责的项目仅仅是在使用这个功能模块而已。&lt;/p&gt;
&lt;p&gt;也就是说，他在内心将自己定位为功能使用方，所以觉得不应该由自己来回复客户，而应该由负责开发地图功能的相关人员来处理。&lt;/p&gt;
&lt;h1 id=&#34;4-王七为什么没有及时回复&#34;&gt;4. 王七为什么没有及时回复&lt;/h1&gt;
&lt;p&gt;事实上，项目总负责人王七在周六当天也看到了客户在沟通群里反馈的消息，但他同样没有及时回复客户，就这样任由问题持续发酵。&lt;/p&gt;
&lt;p&gt;王七当时的想法是等着张三去处理这个问题 —— 因为在他看来，这是项目负责人职责范围内的事情。如果王七事事都介入处理，就相当于虽然已经对张三进行了授权，自己却又在一旁指手画脚，这样的做法显得有些奇怪。&lt;/p&gt;
&lt;p&gt;不过事后回头来看，王七在这件事情上确实存在考虑不周全的问题，没有全面深入地看到问题的核心本质。&lt;/p&gt;
&lt;h1 id=&#34;5-从客户的视角看问题&#34;&gt;5. 从客户的视角看问题&lt;/h1&gt;
&lt;p&gt;换位思考，假设你自己就是那位客户，在沟通群里反馈问题之后过了很长时间都没有人回复，会作何感想呢？&lt;/p&gt;
&lt;p&gt;而且需要注意的是，这次反馈问题的渠道不是工单渠道，而是群内的实时交流渠道，在这种情况下，客户即便不生气，心里也会十分不爽吧。&lt;/p&gt;
&lt;p&gt;毕竟，客户在使用功能时遇到了问题，急需解决以便正常使用，而我们却没有给予足够的重视。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280601514.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;6-张三的问题与改进&#34;&gt;6. 张三的问题与改进&lt;/h1&gt;
&lt;p&gt;张三的做法乍一看似乎有一定的合理性，但他根本没有想明白关键问题所在 —— 对外和对内处理问题的方式是截然不同的。&lt;/p&gt;
&lt;p&gt;在公司或者部门内部，上面提到的那种想法虽然存在一定问题，但还不是特别严重。&lt;/p&gt;
&lt;p&gt;因为无论对外还是对内，项目负责人的职责本来就包括对项目整体的管理，一旦出现问题，第一责任人肯定还是要找到项目负责人，怎么会有出现问题先去找具体功能负责人的道理呢？&lt;/p&gt;
&lt;p&gt;正确的处理流程应该是：客户的反馈先到达张三这里，然后由张三再去找对应的同事沟通并解决问题。&lt;strong&gt;在对外沟通时，个人所代表的不再是自己，而是整个公司。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因此，每一句话、每一个行为都需要用公司的标准来严格要求自己。&lt;/p&gt;
&lt;p&gt;就算明知道问题属于其他项目组甚至其他部门，如果该部门的相关人员不在这个沟通群里，也应该先回复客户，比如可以说 “我先了解一下具体是什么问题”。&lt;/p&gt;
&lt;p&gt;然后再去寻找对应的同事，不管是部门内部的还是其他部门的，都要积极去协商协调，最终把问题解决掉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;客户不会去关注你是哪个部门的，他们只知道你是这家公司的员工。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不管在公司内部具体是由谁负责这件事情，客户只需要你帮忙解决他们遇到的问题，仅此而已。&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;7-王七的问题与改进&#34;&gt;7. 王七的问题与改进&lt;/h1&gt;
&lt;p&gt;当客户反馈问题之后，已经过去了五六个小时，张三还是没有回复客户。&lt;/p&gt;
&lt;p&gt;这个时候，王七可能觉得这是张三的职责所在，认为张三需要经历这样的事情，而这也正是导致王七没有直接介入沟通的原因，差不多就是想让张三通过这次犯错来积累工作经验。&lt;/p&gt;
&lt;p&gt;不过，王七也犯了同样的错误：从想法本身来看没有问题，把全部职责交给张三，张三就应该承担起相应的责任。&lt;/p&gt;
&lt;p&gt;但关键在于**要弄清楚是什么事情，不可能什么事情都能用来攒经验的。**就拿上面这件事情来说，&lt;strong&gt;客诉问题，一直是重中之重的事情，不可掉以轻心。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;正如前面所提到的，客户不会去关心你公司内部的分工情况，他们只知道你是这家公司的员工，你在客户面前的任何表现，都直接关系到客户对这家公司的整体印象。&lt;/p&gt;
&lt;p&gt;所以在这种情况下，当张三没有回复客户时，如果过了一两个小时，张三仍然没有回复，那么王七自己就需要直接介入，回复客户，并跟进这个事情，弄清楚到底是什么原因导致了这个问题，确保问题能有效解决。&lt;/p&gt;
&lt;p&gt;至于要问责或弄清楚张三为什么没有及时回复客户等事情，可以等事情解决了之后再说，现在首要解决的是客户遇到的问题，&lt;strong&gt;一切以客户为先。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280601121.jpg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280600445.png"></p>
<h1 id="1-前言">1. 前言</h1>
<p>项目总负责人究竟应该在什么时候介入项目呢？</p>
<p>这个问题的本质其实是在深入探讨，何时需要项目总负责人直接替代项目负责人做出关键决策，或者直接介入并解决项目推进过程中遇到的具体问题。</p>
<p>下面以项目负责人为张三、项目总负责人为王七的实际案例进行详细说明。</p>
<h1 id="2-事情起因">2. 事情起因</h1>
<p>曾经有一次，客户在项目沟通群里反馈了一个问题，明确提到平台的地图功能没有正常显示出来。</p>
<p>当时正值周六，按照常规工作安排，大家都没有在公司上班，因此项目负责人张三可能没有及时留意到沟通群里的消息，也就没有在第一时间回复客户。</p>
<p>后来，有看到消息的同事将客户反馈的问题转发到了部门群，这样整个部门的人员都能看到客户的反馈内容了。</p>
<p>可即便如此，张三仍然没有在部门群里对客户的问题进行回复。</p>
<h1 id="3-张三为什么没有及时回复">3. 张三为什么没有及时回复</h1>
<p>事后了解到，他认为地图功能并不是由自己负责的项目团队开发的，而是属于其他项目团队的功能，自己负责的项目仅仅是在使用这个功能模块而已。</p>
<p>也就是说，他在内心将自己定位为功能使用方，所以觉得不应该由自己来回复客户，而应该由负责开发地图功能的相关人员来处理。</p>
<h1 id="4-王七为什么没有及时回复">4. 王七为什么没有及时回复</h1>
<p>事实上，项目总负责人王七在周六当天也看到了客户在沟通群里反馈的消息，但他同样没有及时回复客户，就这样任由问题持续发酵。</p>
<p>王七当时的想法是等着张三去处理这个问题 —— 因为在他看来，这是项目负责人职责范围内的事情。如果王七事事都介入处理，就相当于虽然已经对张三进行了授权，自己却又在一旁指手画脚，这样的做法显得有些奇怪。</p>
<p>不过事后回头来看，王七在这件事情上确实存在考虑不周全的问题，没有全面深入地看到问题的核心本质。</p>
<h1 id="5-从客户的视角看问题">5. 从客户的视角看问题</h1>
<p>换位思考，假设你自己就是那位客户，在沟通群里反馈问题之后过了很长时间都没有人回复，会作何感想呢？</p>
<p>而且需要注意的是，这次反馈问题的渠道不是工单渠道，而是群内的实时交流渠道，在这种情况下，客户即便不生气，心里也会十分不爽吧。</p>
<p>毕竟，客户在使用功能时遇到了问题，急需解决以便正常使用，而我们却没有给予足够的重视。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280601514.png"></p>
<h1 id="6-张三的问题与改进">6. 张三的问题与改进</h1>
<p>张三的做法乍一看似乎有一定的合理性，但他根本没有想明白关键问题所在 —— 对外和对内处理问题的方式是截然不同的。</p>
<p>在公司或者部门内部，上面提到的那种想法虽然存在一定问题，但还不是特别严重。</p>
<p>因为无论对外还是对内，项目负责人的职责本来就包括对项目整体的管理，一旦出现问题，第一责任人肯定还是要找到项目负责人，怎么会有出现问题先去找具体功能负责人的道理呢？</p>
<p>正确的处理流程应该是：客户的反馈先到达张三这里，然后由张三再去找对应的同事沟通并解决问题。<strong>在对外沟通时，个人所代表的不再是自己，而是整个公司。</strong></p>
<p>因此，每一句话、每一个行为都需要用公司的标准来严格要求自己。</p>
<p>就算明知道问题属于其他项目组甚至其他部门，如果该部门的相关人员不在这个沟通群里，也应该先回复客户，比如可以说 “我先了解一下具体是什么问题”。</p>
<p>然后再去寻找对应的同事，不管是部门内部的还是其他部门的，都要积极去协商协调，最终把问题解决掉。</p>
<p><strong>客户不会去关注你是哪个部门的，他们只知道你是这家公司的员工。</strong></p>
<p><strong>不管在公司内部具体是由谁负责这件事情，客户只需要你帮忙解决他们遇到的问题，仅此而已。</strong></p>
<h1 id="7-王七的问题与改进">7. 王七的问题与改进</h1>
<p>当客户反馈问题之后，已经过去了五六个小时，张三还是没有回复客户。</p>
<p>这个时候，王七可能觉得这是张三的职责所在，认为张三需要经历这样的事情，而这也正是导致王七没有直接介入沟通的原因，差不多就是想让张三通过这次犯错来积累工作经验。</p>
<p>不过，王七也犯了同样的错误：从想法本身来看没有问题，把全部职责交给张三，张三就应该承担起相应的责任。</p>
<p>但关键在于**要弄清楚是什么事情，不可能什么事情都能用来攒经验的。**就拿上面这件事情来说，<strong>客诉问题，一直是重中之重的事情，不可掉以轻心。</strong></p>
<p>正如前面所提到的，客户不会去关心你公司内部的分工情况，他们只知道你是这家公司的员工，你在客户面前的任何表现，都直接关系到客户对这家公司的整体印象。</p>
<p>所以在这种情况下，当张三没有回复客户时，如果过了一两个小时，张三仍然没有回复，那么王七自己就需要直接介入，回复客户，并跟进这个事情，弄清楚到底是什么原因导致了这个问题，确保问题能有效解决。</p>
<p>至于要问责或弄清楚张三为什么没有及时回复客户等事情，可以等事情解决了之后再说，现在首要解决的是客户遇到的问题，<strong>一切以客户为先。</strong></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505280601121.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>27-项目管理制度难以执行的问题探讨</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/27-%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E5%88%B6%E5%BA%A6%E9%9A%BE%E4%BB%A5%E6%89%A7%E8%A1%8C%E7%9A%84%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/27-%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E5%88%B6%E5%BA%A6%E9%9A%BE%E4%BB%A5%E6%89%A7%E8%A1%8C%E7%9A%84%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262053475.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;在项目管理中，我们常会制定一些规章制度用以约束行为，从而有效推进项目。但现实中，无论是开会沟通通知还是口头传达的要求，往往只能坚持一段时间，过后便会恢复原状。&lt;/p&gt;
&lt;p&gt;正如那句话说的：&lt;strong&gt;“你无法要求别人做什么，除非他自己愿意去做。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;工作中亦是如此，即便强调过每天下班前要在项目任务系统填写当天日志，对方也只能坚持一阵子，时间一长便又故态复萌。&lt;/p&gt;
&lt;p&gt;同理，项目计划需要实时更新，以避免信息同步不及时影响后续功能开发或决策制定，但很多人依旧未能遵守，大多是坚持一段时间后便打回原形。&lt;/p&gt;
&lt;p&gt;这种现象很难单纯用对错来评判。回归本质，我们的核心目的在于：将所有问题公开化，通过即时沟通制定规章制度，确保各项目有效推进，避免延期，最终达成项目目标。&lt;/p&gt;
&lt;p&gt;那么，该如何解决这些问题呢？发脾气或许能起到一定作用，但也要看对象，而且大多数情况下并不推荐。更合适的做法是找个会议室私下沟通清楚，避免当众批评，以免引发逆反心理，得不偿失。&lt;/p&gt;
&lt;p&gt;因此，我们需要探寻有效的解决方法。就以任务日志缺填这一问题为例（实际情况中存在的问题远不止于此，此处仅作举例说明），可以采取以下措施：&lt;/p&gt;
&lt;p&gt;首先，将规章制度以严谨的文字梳理成文档，并建立惩罚机制。例如，约定任务日志缺填每月不得超过 3 次，否则需赞助50 块钱到部门经费 ，同时，项目总负责人自己也需赞助 50 块钱。&lt;/p&gt;
&lt;p&gt;这样做的目的在于：一方面，项目总负责人作为全部项目首要责任人，理应对项目中出现的任务问题负责；另一方面，避免将自己置于项目成员的对立面，减少摩擦，让大家感受到你与他们是站在同一阵线，制定这些规定只是为了更好地进行项目管理，而不是针对谁。&lt;/p&gt;
&lt;p&gt;在落实过程中，月底统计时如果发现有人当月缺填超过 3 次，就需要当面沟通了解情况，探究缺填的原因。&lt;/p&gt;
&lt;p&gt;沟通时要因人而异，大多数情况下，只要解释合理（无论真假），都按真实情况处理，并明确告知此次可以通融，但下个月如果再出现类似情况，将直接收取 50 块钱，不再给予额外机会。&lt;/p&gt;
&lt;p&gt;因为，我们的目的并不是为了这 50 块钱，所以，给对方一次改正的机会，让对方感受到被尊重，后续会更愿意、自觉地遵守这些规章制度。&lt;/p&gt;
&lt;p&gt;但凡事也有例外的，虽然应该不多。如果下个月对方依旧出现，任务日志缺填超过 3 次以上的情况，该如何处理？&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262053120.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;这需要根据具体原因来判断：如果理由充分、合情合理，可暂时不收取费用；如果理由并不充分，则直接收取费用，并与对方一同扫码将费用赞助至部门经费，同时在部门群内公开，以消除大家对项目总负责人是否也一起赞助 50 块钱了的疑虑。&lt;/p&gt;
&lt;p&gt;如果下个月仍然出现缺填且理由不充分，在要求对方赞助 50 块时态度还很恶劣，那么，就需要明确告诉对方：制定项目规章制度的目的是什么？任务日志的作用是什么 —— 让项目负责人能够实时了解每个人的工作情况、任务进度，以及是否存在影响项目推进的问题，以便及时采取其他方案。&lt;/p&gt;
&lt;p&gt;如果对方依旧不服从，就需要强硬处理，因为规章制度刚落实时如果不及时拔除这根钉子，后续将难以服众。&lt;/p&gt;
&lt;p&gt;总的来说，项目总负责人应以身作则，制定合理的规章制度，并通过实际沟通和客观判断，赢得大家的信任，促使大家养成良好习惯。&lt;/p&gt;
&lt;p&gt;实际上，设置 50 块钱赞助部门经费的规定，重点并非在于金额多少，而是形成一种无形的约束。&lt;/p&gt;
&lt;p&gt;理想状态下，一年可能就收个两三次，大概就 300 块钱左右。毕竟，钱好像不是很多，但是要让大家白白支出这笔钱，肯定觉得太亏了。相信这样应该能有效解决一些项目管理中遇到的问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262056402.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262053475.jpeg"></p>
<p>在项目管理中，我们常会制定一些规章制度用以约束行为，从而有效推进项目。但现实中，无论是开会沟通通知还是口头传达的要求，往往只能坚持一段时间，过后便会恢复原状。</p>
<p>正如那句话说的：<strong>“你无法要求别人做什么，除非他自己愿意去做。”</strong></p>
<p>工作中亦是如此，即便强调过每天下班前要在项目任务系统填写当天日志，对方也只能坚持一阵子，时间一长便又故态复萌。</p>
<p>同理，项目计划需要实时更新，以避免信息同步不及时影响后续功能开发或决策制定，但很多人依旧未能遵守，大多是坚持一段时间后便打回原形。</p>
<p>这种现象很难单纯用对错来评判。回归本质，我们的核心目的在于：将所有问题公开化，通过即时沟通制定规章制度，确保各项目有效推进，避免延期，最终达成项目目标。</p>
<p>那么，该如何解决这些问题呢？发脾气或许能起到一定作用，但也要看对象，而且大多数情况下并不推荐。更合适的做法是找个会议室私下沟通清楚，避免当众批评，以免引发逆反心理，得不偿失。</p>
<p>因此，我们需要探寻有效的解决方法。就以任务日志缺填这一问题为例（实际情况中存在的问题远不止于此，此处仅作举例说明），可以采取以下措施：</p>
<p>首先，将规章制度以严谨的文字梳理成文档，并建立惩罚机制。例如，约定任务日志缺填每月不得超过 3 次，否则需赞助50 块钱到部门经费 ，同时，项目总负责人自己也需赞助 50 块钱。</p>
<p>这样做的目的在于：一方面，项目总负责人作为全部项目首要责任人，理应对项目中出现的任务问题负责；另一方面，避免将自己置于项目成员的对立面，减少摩擦，让大家感受到你与他们是站在同一阵线，制定这些规定只是为了更好地进行项目管理，而不是针对谁。</p>
<p>在落实过程中，月底统计时如果发现有人当月缺填超过 3 次，就需要当面沟通了解情况，探究缺填的原因。</p>
<p>沟通时要因人而异，大多数情况下，只要解释合理（无论真假），都按真实情况处理，并明确告知此次可以通融，但下个月如果再出现类似情况，将直接收取 50 块钱，不再给予额外机会。</p>
<p>因为，我们的目的并不是为了这 50 块钱，所以，给对方一次改正的机会，让对方感受到被尊重，后续会更愿意、自觉地遵守这些规章制度。</p>
<p>但凡事也有例外的，虽然应该不多。如果下个月对方依旧出现，任务日志缺填超过 3 次以上的情况，该如何处理？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262053120.jpeg"></p>
<p>这需要根据具体原因来判断：如果理由充分、合情合理，可暂时不收取费用；如果理由并不充分，则直接收取费用，并与对方一同扫码将费用赞助至部门经费，同时在部门群内公开，以消除大家对项目总负责人是否也一起赞助 50 块钱了的疑虑。</p>
<p>如果下个月仍然出现缺填且理由不充分，在要求对方赞助 50 块时态度还很恶劣，那么，就需要明确告诉对方：制定项目规章制度的目的是什么？任务日志的作用是什么 —— 让项目负责人能够实时了解每个人的工作情况、任务进度，以及是否存在影响项目推进的问题，以便及时采取其他方案。</p>
<p>如果对方依旧不服从，就需要强硬处理，因为规章制度刚落实时如果不及时拔除这根钉子，后续将难以服众。</p>
<p>总的来说，项目总负责人应以身作则，制定合理的规章制度，并通过实际沟通和客观判断，赢得大家的信任，促使大家养成良好习惯。</p>
<p>实际上，设置 50 块钱赞助部门经费的规定，重点并非在于金额多少，而是形成一种无形的约束。</p>
<p>理想状态下，一年可能就收个两三次，大概就 300 块钱左右。毕竟，钱好像不是很多，但是要让大家白白支出这笔钱，肯定觉得太亏了。相信这样应该能有效解决一些项目管理中遇到的问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505262056402.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《泳者之心》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B3%B3%E8%80%85%E4%B9%8B%E5%BF%83%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B3%B3%E8%80%85%E4%B9%8B%E5%BF%83%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;《泳者之心》于 2024 年 5 月 31 日上映，这部根据真实故事改编的影片，讲述了 1926 年 8 月 6 日，特鲁迪・埃德尔从法国出发，耗时 14 小时 31 分钟横渡 34 公里英吉利海峡并打破纪录的故事。这一成绩比当时的男子纪录快了近两小时，特鲁迪也因此成为历史上首位成功横渡英吉利海峡的女性。&lt;/p&gt;
&lt;p&gt;影片开篇的舒缓配乐十分抓耳，没有高亢或悲伤的情绪，只是静静陈述一段故事，却让人隐约感受到一种隐忍而坚强的情愫。&lt;/p&gt;
&lt;p&gt;镜头从远景逐渐拉近，从模糊变得清晰，随即展现女主特鲁迪涂抹油脂的画面，面对波涛汹涌的冰冷大海，观众很容易就代入到故事之中。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505242236271.jpg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;2-电影的主旨&#34;&gt;2. 电影的主旨&lt;/h1&gt;
&lt;p&gt;这部电影的内核与《摔跤吧！爸爸》相似，都在探讨女性面临的困境 —— 女性生来似乎就被预设了相同的命运。&lt;/p&gt;
&lt;p&gt;《摔跤吧！爸爸》中，爸爸马哈维亚因两个女儿有摔跤天赋，不顾世俗嘲讽，选择跳出这种命运轮回，培养女儿吉塔和巴比塔成为摔跤手。&lt;/p&gt;
&lt;p&gt;他希望女儿们能获得奥运金牌，更重要的是让她们能够选择自己想要的人生。&lt;/p&gt;
&lt;p&gt;而在《泳者之心》里，扮演引路人角色的是妈妈葛楚。与《摔跤吧！爸爸》不同的是，吉塔曾有过迷茫和放弃，特鲁迪却从始至终从未怀疑过自己的实力。&lt;/p&gt;
&lt;p&gt;她坚信自己一定能成功，即便付出生命也在所不惜，展现出更为坚韧的内心。&lt;/p&gt;
&lt;h1 id=&#34;3-电影逻辑&#34;&gt;3. 电影逻辑&lt;/h1&gt;
&lt;p&gt;影片的整体逻辑，包括情节铺垫和故事发展的流畅性，都处理得合理到位。&lt;/p&gt;
&lt;p&gt;开头提到因轮船出事，许多女性因不会游泳而丧生，再加上妈妈的双胞胎姐姐 7 岁时溺水身亡，这些情节为妈妈葛楚一直支持特鲁迪两姐妹游泳提供了充足的理由。&lt;/p&gt;
&lt;p&gt;特鲁迪游泳之所以如此厉害，除了自身的努力，还因为她在麻疹这种致命疾病中幸存下来，这从侧面印证了她的坚强。&lt;/p&gt;
&lt;p&gt;为了游泳，即便面临不能在室内练习、每天需要搬煤烧锅炉等刁难条件，她也敢于应对，因热爱而迎难而上。&lt;/p&gt;
&lt;p&gt;她比其他人更优秀的原因在于，除了上面提到的天赋和努力，她从小就在大海中学习游泳，不断挑战更高难度的副本，强度是不一样的。&lt;/p&gt;
&lt;p&gt;还有，最后三个人在海边等待时，裸泳男比尔先发现特鲁迪也合情合理，因为他作为泳者，又经常在海边，对海上事物的敏锐度肯定高于其他两人。&lt;/p&gt;
&lt;p&gt;因此，在剧情逻辑方面没有明显硬伤，至少我没发现特别突兀的地方。&lt;/p&gt;
&lt;h1 id=&#34;4-有点小瑕疵&#34;&gt;4. 有点小瑕疵&lt;/h1&gt;
&lt;p&gt;但我认为影片存在一些可能的瑕疵，主要有三点：姐夫的笑太过刻意、未体现是否坐船熟悉过路线、遇到水母群时为何不让船先开道。&lt;/p&gt;
&lt;p&gt;当特鲁迪在家庭聚餐中宣布要横渡英吉利海峡时，姐夫的大笑显得太过刻意。虽然导演想通过这种不可思议的态度来表达当时人们的普遍轻蔑，但时机选择有待商榷。&lt;/p&gt;
&lt;p&gt;起初爸爸听到妈妈要让两闺女加入游泳队时的大笑尚符合逻辑，一来受当时社会背景影响，二来没有成绩支撑，别人不信也正常，表现得直接些也情有可原。&lt;/p&gt;
&lt;p&gt;可这次不同，特鲁迪早已今非昔比，她已是当时的世界第一人。从幼时患麻疹幸存，到初学游泳时不被看好，再到后来夺冠，诸多不可能最终都变成可能。她经历了各种磨难，并证明了自己，甚至之前为拿到横渡英吉利海峡的赞助，还打赌要在 3 小时内从纽约游到新泽西，全程约 11.3 公里，她还赌赢了。&lt;/p&gt;
&lt;p&gt;所以，姐夫没理由有如此反应，即便再不可置信，也不至于这样大笑，这种反应更像是一个平时跑 1 公里都气喘吁吁的人说自己明天要跑 30 公里时才会有的，这是导演处理的问题了。&lt;/p&gt;
&lt;p&gt;特鲁迪都参加过奥运会、拿过各种奖项，想要横渡英吉利海峡，虽然感觉不可思议，但难道就一定是天方夜谭吗？有什么不可能的？那个大笑和整个画面格格不入，显得很割裂。&lt;/p&gt;
&lt;p&gt;此外，影片中没有体现为横渡英吉利海峡做更合理的准备。虽然有裸泳者比尔作为导师，展现出专业的规划能力，还认识船长，可谓天时地利人和都具备了。&lt;/p&gt;
&lt;p&gt;但我没去考证真实的流程，毕竟电影虽根据真实事件改编，却不一定要与现实完全一致。在影片中，是否应该多一些特鲁迪的练习镜头呢？比如坐船熟悉路线，了解大概位置、可能出现的问题及注意事项，这样是否更合理，还是说特鲁迪每年都去这个海峡，早已习惯？但看起来不像啊，毕竟出发点是在法国。&lt;/p&gt;
&lt;p&gt;不然，看完总觉得特鲁迪就在海边练习了几回，也不知道练习时游了多远，然后第一次挑战就是全程了，这感觉不太符合挑战应有的行事逻辑，不过现实中比影视作品不合乎逻辑的情况比比皆是，也未必非得如此。&lt;/p&gt;
&lt;p&gt;还有，遇到水母群时，为什么不让船先过去开出一条路，然后特鲁迪在后面跟着游过去，这样是不是就不会受伤了？可能有人会说不能借助外力，但不是还有补给吗？没道理不能这样做，如果怕跟在船后面，海浪卷起把她拖到海里，那就快速前进，稍作等待再游过去就是了，这一点我是没想明白的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251636112.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;5-转场&#34;&gt;5. 转场&lt;/h1&gt;
&lt;p&gt;观影过程中，我猜中了两次转场，一次是小特鲁迪从水下冒出来，我就觉得要长大了，结果确实如此。还有一次是特鲁迪第二次横渡英吉利海峡时，弟弟从广播里听到消息，告诉了妈妈，妈妈不相信，说明天他们就回来了，让弟弟关了广播去睡觉。然后，妈妈在厨房做宵夜？我就想着等下就设计成因为邻居开了广播然后听到了吧，结果还真是。不知道在电影里有没有相关术语，只是凭感觉觉得下一秒会是这样。&lt;/p&gt;
&lt;p&gt;影片最后，特鲁迪在大海中游泳，从黑夜开始，镜头慢慢右转，最终呈现她向前迎着朝阳的画面。这个转场设计真的太巧妙了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251622086.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>《泳者之心》于 2024 年 5 月 31 日上映，这部根据真实故事改编的影片，讲述了 1926 年 8 月 6 日，特鲁迪・埃德尔从法国出发，耗时 14 小时 31 分钟横渡 34 公里英吉利海峡并打破纪录的故事。这一成绩比当时的男子纪录快了近两小时，特鲁迪也因此成为历史上首位成功横渡英吉利海峡的女性。</p>
<p>影片开篇的舒缓配乐十分抓耳，没有高亢或悲伤的情绪，只是静静陈述一段故事，却让人隐约感受到一种隐忍而坚强的情愫。</p>
<p>镜头从远景逐渐拉近，从模糊变得清晰，随即展现女主特鲁迪涂抹油脂的画面，面对波涛汹涌的冰冷大海，观众很容易就代入到故事之中。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505242236271.jpg"></p>
<h1 id="2-电影的主旨">2. 电影的主旨</h1>
<p>这部电影的内核与《摔跤吧！爸爸》相似，都在探讨女性面临的困境 —— 女性生来似乎就被预设了相同的命运。</p>
<p>《摔跤吧！爸爸》中，爸爸马哈维亚因两个女儿有摔跤天赋，不顾世俗嘲讽，选择跳出这种命运轮回，培养女儿吉塔和巴比塔成为摔跤手。</p>
<p>他希望女儿们能获得奥运金牌，更重要的是让她们能够选择自己想要的人生。</p>
<p>而在《泳者之心》里，扮演引路人角色的是妈妈葛楚。与《摔跤吧！爸爸》不同的是，吉塔曾有过迷茫和放弃，特鲁迪却从始至终从未怀疑过自己的实力。</p>
<p>她坚信自己一定能成功，即便付出生命也在所不惜，展现出更为坚韧的内心。</p>
<h1 id="3-电影逻辑">3. 电影逻辑</h1>
<p>影片的整体逻辑，包括情节铺垫和故事发展的流畅性，都处理得合理到位。</p>
<p>开头提到因轮船出事，许多女性因不会游泳而丧生，再加上妈妈的双胞胎姐姐 7 岁时溺水身亡，这些情节为妈妈葛楚一直支持特鲁迪两姐妹游泳提供了充足的理由。</p>
<p>特鲁迪游泳之所以如此厉害，除了自身的努力，还因为她在麻疹这种致命疾病中幸存下来，这从侧面印证了她的坚强。</p>
<p>为了游泳，即便面临不能在室内练习、每天需要搬煤烧锅炉等刁难条件，她也敢于应对，因热爱而迎难而上。</p>
<p>她比其他人更优秀的原因在于，除了上面提到的天赋和努力，她从小就在大海中学习游泳，不断挑战更高难度的副本，强度是不一样的。</p>
<p>还有，最后三个人在海边等待时，裸泳男比尔先发现特鲁迪也合情合理，因为他作为泳者，又经常在海边，对海上事物的敏锐度肯定高于其他两人。</p>
<p>因此，在剧情逻辑方面没有明显硬伤，至少我没发现特别突兀的地方。</p>
<h1 id="4-有点小瑕疵">4. 有点小瑕疵</h1>
<p>但我认为影片存在一些可能的瑕疵，主要有三点：姐夫的笑太过刻意、未体现是否坐船熟悉过路线、遇到水母群时为何不让船先开道。</p>
<p>当特鲁迪在家庭聚餐中宣布要横渡英吉利海峡时，姐夫的大笑显得太过刻意。虽然导演想通过这种不可思议的态度来表达当时人们的普遍轻蔑，但时机选择有待商榷。</p>
<p>起初爸爸听到妈妈要让两闺女加入游泳队时的大笑尚符合逻辑，一来受当时社会背景影响，二来没有成绩支撑，别人不信也正常，表现得直接些也情有可原。</p>
<p>可这次不同，特鲁迪早已今非昔比，她已是当时的世界第一人。从幼时患麻疹幸存，到初学游泳时不被看好，再到后来夺冠，诸多不可能最终都变成可能。她经历了各种磨难，并证明了自己，甚至之前为拿到横渡英吉利海峡的赞助，还打赌要在 3 小时内从纽约游到新泽西，全程约 11.3 公里，她还赌赢了。</p>
<p>所以，姐夫没理由有如此反应，即便再不可置信，也不至于这样大笑，这种反应更像是一个平时跑 1 公里都气喘吁吁的人说自己明天要跑 30 公里时才会有的，这是导演处理的问题了。</p>
<p>特鲁迪都参加过奥运会、拿过各种奖项，想要横渡英吉利海峡，虽然感觉不可思议，但难道就一定是天方夜谭吗？有什么不可能的？那个大笑和整个画面格格不入，显得很割裂。</p>
<p>此外，影片中没有体现为横渡英吉利海峡做更合理的准备。虽然有裸泳者比尔作为导师，展现出专业的规划能力，还认识船长，可谓天时地利人和都具备了。</p>
<p>但我没去考证真实的流程，毕竟电影虽根据真实事件改编，却不一定要与现实完全一致。在影片中，是否应该多一些特鲁迪的练习镜头呢？比如坐船熟悉路线，了解大概位置、可能出现的问题及注意事项，这样是否更合理，还是说特鲁迪每年都去这个海峡，早已习惯？但看起来不像啊，毕竟出发点是在法国。</p>
<p>不然，看完总觉得特鲁迪就在海边练习了几回，也不知道练习时游了多远，然后第一次挑战就是全程了，这感觉不太符合挑战应有的行事逻辑，不过现实中比影视作品不合乎逻辑的情况比比皆是，也未必非得如此。</p>
<p>还有，遇到水母群时，为什么不让船先过去开出一条路，然后特鲁迪在后面跟着游过去，这样是不是就不会受伤了？可能有人会说不能借助外力，但不是还有补给吗？没道理不能这样做，如果怕跟在船后面，海浪卷起把她拖到海里，那就快速前进，稍作等待再游过去就是了，这一点我是没想明白的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251636112.png"></p>
<h1 id="5-转场">5. 转场</h1>
<p>观影过程中，我猜中了两次转场，一次是小特鲁迪从水下冒出来，我就觉得要长大了，结果确实如此。还有一次是特鲁迪第二次横渡英吉利海峡时，弟弟从广播里听到消息，告诉了妈妈，妈妈不相信，说明天他们就回来了，让弟弟关了广播去睡觉。然后，妈妈在厨房做宵夜？我就想着等下就设计成因为邻居开了广播然后听到了吧，结果还真是。不知道在电影里有没有相关术语，只是凭感觉觉得下一秒会是这样。</p>
<p>影片最后，特鲁迪在大海中游泳，从黑夜开始，镜头慢慢右转，最终呈现她向前迎着朝阳的画面。这个转场设计真的太巧妙了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251622086.png"></p>
<h1 id="6-破风者">6. 破风者</h1>
<p>当姐姐看到特鲁迪因洋流一直游得很慢时，说了一句 “她喜欢竞争”，这让我想到了骑行中的 “破风者” 和长跑中的 “领跑员”，这些人的作用就是在骑行、跑步比赛中，有人在前面控制节奏或减少风阻。除了这个目的，还有激励、激起竞争心的作用。</p>
<h1 id="7-配乐">7. 配乐</h1>
<p>这部电影最大的惊喜就是配乐了，我居然听出了史诗感，这在我这里绝对是加分项。电影质量本身就很好，加上如此出色、贴切的配乐，达到了 1 加 1 大于 2 的效果。我查资料时看到配乐拿了好几个奖，这真的是实至名归。我现在发现好像配乐出色的电影，质量大部分都很不错，不知道这之间是否有很大因果关系。但配乐的作用是锦上添花、喧宾夺主还是相辅相成，都要看导演的功力了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251136180.png"></p>
<h1 id="8-胜利可以掩盖所有问题">8. 胜利可以掩盖所有问题</h1>
<p>“谁赢他们帮谁。”</p>
<p>在《让子弹飞》中张麻子说的这句话，突然就在我脑海中浮现。虽然电影中对于女性的偏见是一方面，但好像只要有成绩，就可以掩盖所有问题，似乎确实如此。</p>
<p>电影中，特鲁迪在奥运之旅铩羽而归，导致之前的努力全部归零。直到有一个小女孩说，因为看到她游泳，激励着自己也学习了游泳，她是自己的英雄。所以，特鲁迪萌生了横渡英吉利海峡的想法。有时我在想，如果特鲁迪奥运会之旅成功了，没有输得那么惨，为自己正名了，她是否还会挑战横渡英吉利海峡？</p>
<p>我觉得她还是会的，因为她是特鲁迪。</p>
<p>特鲁迪让我很欣赏的一点是，面对任何不公的遭遇，她不是歇斯底里地去质问，只是选择勇敢地面对。遇到闲言碎语，你怎么看我、怎么刁难我，是你的事情，没有关系，我只想做好这件事情，任何困难我都会勇敢面对，而且我坚信我可以。</p>
<h1 id="9-关于选择">9. 关于选择</h1>
<p>在电影中，姐姐梅格选择了妥协，表面上看是父母之命媒妁之言，实际上还是与个人性格有关。</p>
<p>从爸爸的性格来看，梅格完全可以反抗，因为从小到大的诸多事情都能看出爸爸拿两个女儿没有一点办法，这里其实只是为了突出特鲁迪在游泳这件事上的艰难，她好像一下子就只剩自己一个人在战斗了，但特鲁迪还是义无反顾。</p>
<p>能说谁对谁错吗？我想不能。有些选择看起来是错的，实则是好的；有些看起来是对的，却又好像是错的，一切都取决于你如何看待。</p>
<h1 id="10-成功并非一人之功">10. 成功并非一人之功</h1>
<p>最近我在研究系统化解决问题，以前总是只关注重点，不在乎细枝末节。</p>
<p>最近突然醒悟，一个问题能够解决或一件事情能够做成，不是光靠某个部分（通常只关注台上个人的努力）做得够好就行，而是方方面面都要做到位，只是重要程度不同，但不表示可以忽略。</p>
<p>我之前以为顺势而为就是风口上的猪，是个人都可以，现在看来，这种理解太狭隘了，实际上顺势而为是要团结一切可以团结的力量。风口重要，个人努力也重要，但客观存在的其他因素同样至关重要。</p>
<p>如果特鲁迪没有这么开明的爸妈呢？爸爸虽然一直反对，但很多细节都表现出无声的爱，他一直反对学习游泳，却还是带特鲁迪去海边教她游泳；一直反对加入游泳队，但妈妈坚持，他也就没说什么，别看他咋咋呼呼，妈妈一个眼神他就怂了，甚至有点妻管严。</p>
<p>妈妈更不用说了，一直是精神上的导师，没有妈妈的坚持和信任，特鲁迪不会有这样的成绩。</p>
<p>除此之外，如果没遇到曾成功横渡海峡、经验丰富，还能进行路线设计并认识船长，提供船、食物和引领的裸泳者比尔呢？她还会成功吗？</p>
<p>如果没有最后众人点起篝火，让特鲁迪看到方向呢？她还会成功吗？</p>
<p>或许还是会成功，但我觉得难度一定会增加好几个级别。</p>
<p>电影中，特鲁迪在最后几公里，因为暗礁只能独自前进，在黑夜之中找不到任何方向，一直苦苦坚持，直到最后看到海岸边的点点星火时，我心里只有一句：真替她高兴。</p>
<p>“古之立事者，不惟有超世之才，亦必有坚韧不拔之志。”</p>
<p>她就是这句话最好的诠释。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251634657.png"></p>
<h1 id="11-想明白了一个问题">11. 想明白了一个问题</h1>
<p>因为这部电影和《垫底辣妹》整体的叙事设计很相似，所以就想到了七八年前看《垫底辣妹》时，觉得工藤沙耶加的爸爸，其人设处理和铺垫都有点生硬的问题。</p>
<p>爸爸和小时候的工藤沙耶加关系还是很不错的，但是后来因为偏心弟弟，完全不关心女儿了，关系变得恶劣，然后工藤沙耶加还奇怪，自己的妈妈为什么要嫁给爸爸这种男人，然后妈妈还解释说，别看爸爸是这样的人，其实内心是很善良的，为了圆善良这个点，用了在考试途中，帮忙别人清雪、推车这个情节设计。</p>
<p>当时，我不是很明白，为什么爸爸对女主工藤沙耶加的态度，转变得那么不合理，小时候亲密无间，中学态度转变一百八十度，极为恶劣，直到沙耶加努力学习，有成绩了然后态度终于好转。</p>
<p>一直想不明白这个点，就是很生硬，总觉得有点说不通。</p>
<p>看完《泳者之心》之后，才明白问题出在哪里，原来就是自己代入了工藤沙耶加的视角去看待这些问题了。</p>
<p>工藤沙耶加是谁？一个打扮入时、甜美可爱的时尚女孩，她每日里浓妆艳抹，和朋友们昏天黑地地玩耍，对于学习全不上心，所以学习成绩早就成为全年级倒数第一名，这个活生生就是一个小太妹的作风，这对于当年立志要考清北，最后还失败的他爸怎么能容忍，自己态度恶劣不是没有道理。</p>
<p>特鲁迪和工藤沙耶加情况完全不同，没有这种人物的成长感、蜕变感，好像其他角色，比如上面提到的吉塔、工藤沙耶加一出场还是新手号，而特鲁迪从小就已经是成品号了，指的是强硬地面对困境的性格底色。</p>
<h1 id="12-女主演员是谁">12. 女主演员是谁</h1>
<p>从电影开始，女主特鲁迪出场的第一个镜头开始，我就总觉得这个女演员怎么那么眼熟呢？但是又记不起来是谁，总觉得是海后啊，但又不是很确定，就是出演《海王》中海后一角的艾梅柏，前些年跟德普打官司的那个，然后又和马斯克搞得鸡飞狗跳的，也没立马查资料了，只是有一点点膈应，其实，也不是特别讨厌海后了，只是相比《海王》出场的惊艳感，场外的事情太扣分了。带着这个忐忑的感觉继续观看，后来查了资料才知道是谁，我说怎么那么眼熟，原来就是电影《星球大战》后传三部曲的女主蕾伊。这种不太舒服的感觉一下子烟消云散。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251240515.jpg"></p>
<h1 id="13-结语">13. 结语</h1>
<p>当特鲁迪赌赢从纽约游到新西兰，拿到横渡英吉利海峡的赞助，深夜里回到家，和妈妈的一番对话，是这部电影里我最喜欢的台词，也是对特鲁迪最大的赞美。</p>
<p>“跟我说说晚上外面是什么样的？”</p>
<p>“今晚我游泳的时候，有条港海豹一直跟着我。”</p>
<p>“有条海豹跟着呢？”</p>
<p>“绝对有。”</p>
<p>“不是跟着你，特鲁迪，它是在追你。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505251630538.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week Finale</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-finale/</link>
      <pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-finale/</guid>
      <description>&lt;p&gt;从 2023 年 10 月 22 日开始，我对自己说：如果能坚持每周更新一篇 ARTS 文章，就继续运营这个公众号并群发。&lt;/p&gt;
&lt;p&gt;所以前面 10 篇都没有群发记录，基本是偷偷在写 —— 主要想验证自己能否坚持下来，万一失败了，反正也不会有人知道。&lt;/p&gt;
&lt;p&gt;但当时心里一直想着：要做就做好，要么就不做。没有不清不楚、不黑不白、不上不下的中间地带。&lt;/p&gt;
&lt;p&gt;这个打卡活动，我从 2020 年 4 月底购买陈皓《左耳听风》课程时就知道了，起初打算试试看，后来不知怎么就不了了之。这次重拾起来主要有三个目的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;平时上班敲代码的机会变少，想通过刷算法题保持对代码的感觉。&lt;/li&gt;
&lt;li&gt;我有一份问题清单，记录着工作中遇到的问题、技术点和小技巧，但一直没整理，打算通过 Tip 模块倒逼自己梳理。&lt;/li&gt;
&lt;li&gt;老生常谈的英语学习。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;前期坚持的效果还不错，印象中没补几次卡，应该就是过年放假时间长了点，其他时候都还好。&lt;/p&gt;
&lt;p&gt;起初计划每周阅读 Medium 上的文章，说实话，上面的文章质量真不错，而且这个网站没有广告，阅读体验特别好。&lt;/p&gt;
&lt;p&gt;我做 Review 这件事的流程基本是：自己先看一遍，看不懂的用欧路翻译插件一键自动记录到生词本，了解大概内容后自己翻译，再用有道翻译原文，对比两者的差异。&lt;/p&gt;
&lt;p&gt;这个模式坚持了一段时间后，我觉得 Medium 上的文章有时太长，自行翻译太费时间，加上需要翻墙，在公司看文章很不方便，于是换成在 &lt;a href=&#34;https://breakingnewsenglish.com/&#34;&gt;Breaking News English&lt;/a&gt; 网站翻译新闻短文，一方面文章篇幅短，另一方面不用翻墙，还能了解新闻资讯。&lt;/p&gt;
&lt;p&gt;在这个网站坚持一段时间后，有一天我突然觉得自己看英文文章不发怵了，不管多长都能硬着头皮看下去，总觉得自己马上就能看懂了。但这种感觉没持续多久，就又回归正常状态了。&lt;/p&gt;
&lt;p&gt;说真的，我很讨厌英语，为什么要学这个东西呢？但后来我想明白了，“师夷长技以制夷” 的前提是你得懂对方在说什么。当然也可以用翻译软件，但学习一门语言就是在学习一种文化，只有了解了文化和风俗习惯，应对问题，才能游刃有余。这是翻译软件无法替代的。&lt;/p&gt;
&lt;p&gt;坚持这个打卡活动到某个时间点时，我突然觉得差不多了，就是已经不需要证明什么了。当时计划在 2024 年 10 月 22 日结束这个打卡活动。&lt;/p&gt;
&lt;p&gt;但刚好《黑神话：悟空》8 月底开售，我想自己都等了 4 年了，Windows 电脑和游戏手柄都有，装备齐全，没理由不去玩，一玩才发现，这质量也太高了吧，远远超出预期。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505232231255.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;9 月初通关《黑神话：悟空》后，我真正对魂类游戏产生了兴趣，想起 2017 年买的《黑暗之魂 3》，每次玩都因为不知道怎么玩，也不看攻略，再加上都是骷髅有点吓人，玩了几次，实在玩不下去，就作罢了。&lt;/p&gt;
&lt;p&gt;这次趁热打铁，我把老贼的《黑暗之魂 3》通关了，通关后才感叹这真是艺术品啊。它在我 Steam 游戏库里吃灰快 8 年，直到现在，我才真正体验到这部作品为什么是史诗级别的。接着我又通关了老贼的《艾尔登法环》，这部年度游戏也是神作，就不多说了。&lt;/p&gt;
&lt;p&gt;前前后后花了很多时间在游戏上，ARTS 打卡活动就经常断掉，只能攒起来恶补，每周一次的打卡规定也形同虚设。&lt;/p&gt;
&lt;p&gt;但我一点都不慌，也不觉得心虚，因为我已经不需要这些来证明自己能坚持这个打卡活动了。&lt;/p&gt;
&lt;p&gt;我坚信，即使是现在，我依然可以按严格的每周一更频率坚持打卡，只是已经没有这个必要了。&lt;/p&gt;
&lt;p&gt;从 2023 年 5 月 13 日陈皓过世到现在已经 2 年了，时间过得真快。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>从 2023 年 10 月 22 日开始，我对自己说：如果能坚持每周更新一篇 ARTS 文章，就继续运营这个公众号并群发。</p>
<p>所以前面 10 篇都没有群发记录，基本是偷偷在写 —— 主要想验证自己能否坚持下来，万一失败了，反正也不会有人知道。</p>
<p>但当时心里一直想着：要做就做好，要么就不做。没有不清不楚、不黑不白、不上不下的中间地带。</p>
<p>这个打卡活动，我从 2020 年 4 月底购买陈皓《左耳听风》课程时就知道了，起初打算试试看，后来不知怎么就不了了之。这次重拾起来主要有三个目的：</p>
<ol>
<li>平时上班敲代码的机会变少，想通过刷算法题保持对代码的感觉。</li>
<li>我有一份问题清单，记录着工作中遇到的问题、技术点和小技巧，但一直没整理，打算通过 Tip 模块倒逼自己梳理。</li>
<li>老生常谈的英语学习。</li>
</ol>
<p>前期坚持的效果还不错，印象中没补几次卡，应该就是过年放假时间长了点，其他时候都还好。</p>
<p>起初计划每周阅读 Medium 上的文章，说实话，上面的文章质量真不错，而且这个网站没有广告，阅读体验特别好。</p>
<p>我做 Review 这件事的流程基本是：自己先看一遍，看不懂的用欧路翻译插件一键自动记录到生词本，了解大概内容后自己翻译，再用有道翻译原文，对比两者的差异。</p>
<p>这个模式坚持了一段时间后，我觉得 Medium 上的文章有时太长，自行翻译太费时间，加上需要翻墙，在公司看文章很不方便，于是换成在 <a href="https://breakingnewsenglish.com/">Breaking News English</a> 网站翻译新闻短文，一方面文章篇幅短，另一方面不用翻墙，还能了解新闻资讯。</p>
<p>在这个网站坚持一段时间后，有一天我突然觉得自己看英文文章不发怵了，不管多长都能硬着头皮看下去，总觉得自己马上就能看懂了。但这种感觉没持续多久，就又回归正常状态了。</p>
<p>说真的，我很讨厌英语，为什么要学这个东西呢？但后来我想明白了，“师夷长技以制夷” 的前提是你得懂对方在说什么。当然也可以用翻译软件，但学习一门语言就是在学习一种文化，只有了解了文化和风俗习惯，应对问题，才能游刃有余。这是翻译软件无法替代的。</p>
<p>坚持这个打卡活动到某个时间点时，我突然觉得差不多了，就是已经不需要证明什么了。当时计划在 2024 年 10 月 22 日结束这个打卡活动。</p>
<p>但刚好《黑神话：悟空》8 月底开售，我想自己都等了 4 年了，Windows 电脑和游戏手柄都有，装备齐全，没理由不去玩，一玩才发现，这质量也太高了吧，远远超出预期。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505232231255.jpg"></p>
<p>9 月初通关《黑神话：悟空》后，我真正对魂类游戏产生了兴趣，想起 2017 年买的《黑暗之魂 3》，每次玩都因为不知道怎么玩，也不看攻略，再加上都是骷髅有点吓人，玩了几次，实在玩不下去，就作罢了。</p>
<p>这次趁热打铁，我把老贼的《黑暗之魂 3》通关了，通关后才感叹这真是艺术品啊。它在我 Steam 游戏库里吃灰快 8 年，直到现在，我才真正体验到这部作品为什么是史诗级别的。接着我又通关了老贼的《艾尔登法环》，这部年度游戏也是神作，就不多说了。</p>
<p>前前后后花了很多时间在游戏上，ARTS 打卡活动就经常断掉，只能攒起来恶补，每周一次的打卡规定也形同虚设。</p>
<p>但我一点都不慌，也不觉得心虚，因为我已经不需要这些来证明自己能坚持这个打卡活动了。</p>
<p>我坚信，即使是现在，我依然可以按严格的每周一更频率坚持打卡，只是已经没有这个必要了。</p>
<p>从 2023 年 5 月 13 日陈皓过世到现在已经 2 年了，时间过得真快。</p>
<p>我在《关于陈皓，二三事》这篇文章里介绍过一些交集，虽然我们从未沟通过，但我还是很感恩。</p>
<p>陈皓文章中体现的一些东西一直激励着我，虽说他是后端，我是前端，那个课程大部分内容是后端、大数据、Go 语言、各种服务器知识等，和我关联不大，但他在做人做事、职业规划、工作学习上的建议，让我醍醐灌顶，很是受用。</p>
<p>现在真的要结束了，想起过去快两年在电脑前码字的时光，不管是艳阳高照的白天，还是灯火通明的深夜，我都是开心的，也觉得很值得。</p>
<p>我相信 “日拱一卒，功不唐捐”。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505232301230.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>26-项目任务繁重领导还要加新任务怎么办</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/26-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E7%B9%81%E9%87%8D%E9%A2%86%E5%AF%BC%E8%BF%98%E8%A6%81%E5%8A%A0%E6%96%B0%E4%BB%BB%E5%8A%A1%E6%80%8E%E4%B9%88%E5%8A%9E/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/26-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E7%B9%81%E9%87%8D%E9%A2%86%E5%AF%BC%E8%BF%98%E8%A6%81%E5%8A%A0%E6%96%B0%E4%BB%BB%E5%8A%A1%E6%80%8E%E4%B9%88%E5%8A%9E/</guid>
      <description>&lt;p&gt;这个问题最初出现在技术管理沟通群里，有群友提问：自己负责的项目任务已十分繁重，可领导还要安排新任务，不知如何是好。答应吧，担心自己所在的小组即便累死累活也难以完成；不答应吧，又怕惹领导不高兴。&lt;/p&gt;
&lt;p&gt;我想起之前看《铁齿铜牙纪晓岚 4》时，有这样一段剧情：乾隆打算在凌烟阁挂上二十四幅功臣图，众人就谁排第一产生争执。乾隆使计让杜小月说出，若让纪晓岚进入军机部，也能像和珅一样出色，所以不同意和珅比纪晓岚厉害。乾隆顺水推舟，安排了角色互换的游戏，让纪晓岚去军机部，和珅去修四库全书。结果两人在处理不同部门事务时，因为缺乏经验，导致处处受阻，只能私下碰头商讨对策。&lt;/p&gt;
&lt;p&gt;剧中，纪晓岚说皇上让自己查张廷玉的几块银两用在何处，觉得这点小事不必斤斤计较。和珅则表示，皇上安排的事情，最怕的不是大事，因为大事有章法可循，按章办理即可；最怕的是小事，没有先例，只能琢磨心思、见招拆招，所以对皇上安排的小事，要特别小心。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505191948632.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;还有曾仕强先生在一期节目中说道：“如果老板让我去死，我到底去不去呢？” 他给出的回答是，先应承 “好的，老板”，然后自己不去就行了嘛。&lt;/p&gt;
&lt;p&gt;从上述事例中，我们能得到什么启发呢？一方面要明白领导的用意，另一方面是不要直接拒绝领导。关键在于不要直接拒绝，而非完全不能拒绝。&lt;/p&gt;
&lt;p&gt;其实核心还是 &lt;strong&gt;“先肯定后否决”&lt;/strong&gt; 的策略，这和我们平时常用的标准反驳句式如出一辙 ——&lt;strong&gt;“你说的确实有道理，但是……”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果是我，我会先一口答应下来，尤其是在多人场合。如果只有自己和领导两人沟通，拒绝的影响相对小一些；然而在多人场合直接拒绝，领导可能会觉得没面子。要是领导心眼小、心胸狭窄，日后难免会给你穿小鞋。所以，先痛快地答应 “好的”，然后过半小时左右去找领导，解释目前手头上的任务太多，若新任务时间紧迫，是否可以将其他任务暂缓？如果不能暂缓，多项任务同时推进实在难以完成，恐怕最后会顾此失彼。&lt;/p&gt;
&lt;p&gt;这样做既能表明自己有积极完成任务的态度，又能说明客观条件不允许。领导的回应通常有两种：要么让你先暂缓其他任务，要么让你推迟新任务的完成时间，问题往往就能迎刃而解。当然，如果领导听不进建议，仍然一意孤行，直接干他就是了（哈哈哈，你敢信，我就敢说）。&lt;/p&gt;
&lt;p&gt;由此可以延伸思考，领导安排任务时，必然有自己的考量。一般有两种情况：一是从当时的实际情况出发，认为由你负责更为合适；二是借此进行测试。培养一个人并非突然委以重任或提拔，而是通过日常工作中的突然考验，时不时来这么一下，看你瞬间的反应，从多个维度综合评估你是否值得信任、能否为我所用。&lt;/p&gt;
&lt;p&gt;可能有人会说，公司的组织架构、管理方式和领导的性格等各方面情况都不一样，但我觉得核心逻辑是一样的 —— 先肯定后否决，只是在执行方式上，需根据实际情况调整。比如公司是扁平化管理，上下级没有明显的严格层级划分，而你对自己负责的项目情况又特别清楚，领导安排新的任务时，你完全可以直接当面解释目前的情况，说明加上新任务可能会导致的问题，而不必非要一口答应，等到半个小时之后才去找领导解释，那样做事就太死板了。&lt;/p&gt;
&lt;p&gt;不过话说回来，工作和生活本就是一体的，但又不尽相同，人在上面的行事风格差异很大。工作上的这种测试是可以接受的，毕竟只是工作。但生活中类似的测试，真的不能接受，因为很没意思。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>这个问题最初出现在技术管理沟通群里，有群友提问：自己负责的项目任务已十分繁重，可领导还要安排新任务，不知如何是好。答应吧，担心自己所在的小组即便累死累活也难以完成；不答应吧，又怕惹领导不高兴。</p>
<p>我想起之前看《铁齿铜牙纪晓岚 4》时，有这样一段剧情：乾隆打算在凌烟阁挂上二十四幅功臣图，众人就谁排第一产生争执。乾隆使计让杜小月说出，若让纪晓岚进入军机部，也能像和珅一样出色，所以不同意和珅比纪晓岚厉害。乾隆顺水推舟，安排了角色互换的游戏，让纪晓岚去军机部，和珅去修四库全书。结果两人在处理不同部门事务时，因为缺乏经验，导致处处受阻，只能私下碰头商讨对策。</p>
<p>剧中，纪晓岚说皇上让自己查张廷玉的几块银两用在何处，觉得这点小事不必斤斤计较。和珅则表示，皇上安排的事情，最怕的不是大事，因为大事有章法可循，按章办理即可；最怕的是小事，没有先例，只能琢磨心思、见招拆招，所以对皇上安排的小事，要特别小心。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505191948632.png"></p>
<p>还有曾仕强先生在一期节目中说道：“如果老板让我去死，我到底去不去呢？” 他给出的回答是，先应承 “好的，老板”，然后自己不去就行了嘛。</p>
<p>从上述事例中，我们能得到什么启发呢？一方面要明白领导的用意，另一方面是不要直接拒绝领导。关键在于不要直接拒绝，而非完全不能拒绝。</p>
<p>其实核心还是 <strong>“先肯定后否决”</strong> 的策略，这和我们平时常用的标准反驳句式如出一辙 ——<strong>“你说的确实有道理，但是……”</strong></p>
<p>如果是我，我会先一口答应下来，尤其是在多人场合。如果只有自己和领导两人沟通，拒绝的影响相对小一些；然而在多人场合直接拒绝，领导可能会觉得没面子。要是领导心眼小、心胸狭窄，日后难免会给你穿小鞋。所以，先痛快地答应 “好的”，然后过半小时左右去找领导，解释目前手头上的任务太多，若新任务时间紧迫，是否可以将其他任务暂缓？如果不能暂缓，多项任务同时推进实在难以完成，恐怕最后会顾此失彼。</p>
<p>这样做既能表明自己有积极完成任务的态度，又能说明客观条件不允许。领导的回应通常有两种：要么让你先暂缓其他任务，要么让你推迟新任务的完成时间，问题往往就能迎刃而解。当然，如果领导听不进建议，仍然一意孤行，直接干他就是了（哈哈哈，你敢信，我就敢说）。</p>
<p>由此可以延伸思考，领导安排任务时，必然有自己的考量。一般有两种情况：一是从当时的实际情况出发，认为由你负责更为合适；二是借此进行测试。培养一个人并非突然委以重任或提拔，而是通过日常工作中的突然考验，时不时来这么一下，看你瞬间的反应，从多个维度综合评估你是否值得信任、能否为我所用。</p>
<p>可能有人会说，公司的组织架构、管理方式和领导的性格等各方面情况都不一样，但我觉得核心逻辑是一样的 —— 先肯定后否决，只是在执行方式上，需根据实际情况调整。比如公司是扁平化管理，上下级没有明显的严格层级划分，而你对自己负责的项目情况又特别清楚，领导安排新的任务时，你完全可以直接当面解释目前的情况，说明加上新任务可能会导致的问题，而不必非要一口答应，等到半个小时之后才去找领导解释，那样做事就太死板了。</p>
<p>不过话说回来，工作和生活本就是一体的，但又不尽相同，人在上面的行事风格差异很大。工作上的这种测试是可以接受的，毕竟只是工作。但生活中类似的测试，真的不能接受，因为很没意思。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 51</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-51/</link>
      <pubDate>Sat, 17 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-51/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/range-addition-ii/&#34;&gt;598. 区间加法 II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个 &lt;code&gt;m x n&lt;/code&gt; 的矩阵 &lt;code&gt;M&lt;/code&gt; 和一个操作数组 &lt;code&gt;op&lt;/code&gt; 。矩阵初始化时所有的单元格都为 &lt;code&gt;0&lt;/code&gt; 。&lt;code&gt;ops[i] = [ai, bi]&lt;/code&gt; 意味着当所有的 &lt;code&gt;0 &amp;lt;= x &amp;lt; ai&lt;/code&gt; 和 &lt;code&gt;0 &amp;lt;= y &amp;lt; bi&lt;/code&gt; 时， &lt;code&gt;M[x][y]&lt;/code&gt; 应该加 1。&lt;/p&gt;
&lt;p&gt;在 &lt;em&gt;执行完所有操作后&lt;/em&gt; ，计算并返回 &lt;em&gt;矩阵中最大整数的个数&lt;/em&gt; 。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505171101863.jpeg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;M&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中最大的整数是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;而且&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;M&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中有4个值为2的元素&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;因此返回&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果操作组为空，则表示都是0，直接返回m*n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 找到最小的m和n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minM&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minN&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;minM&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;minM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;minN&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;minN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 返回最小的m和n的个数相乘
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minM&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;这道题其实还是很简单的，只是一开始会有点绕，不太清楚要讲什么，但是仔细观察就会发现，突破点就是这个 “矩阵中最大整数的个数”。因为所有的格子都要 + 1，所以，最大的整数只会出现在操作组a1、b1值最小的那个上面。所以，我们要做的工作，就是找出最小值的那个操作组。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2505/250515-carlo-ancelotti.html&#34;&gt;Carlo Ancelotti leaves Real Madrid to coach Brazil - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/range-addition-ii/">598. 区间加法 II</a></p>
<p>给你一个 <code>m x n</code> 的矩阵 <code>M</code> 和一个操作数组 <code>op</code> 。矩阵初始化时所有的单元格都为 <code>0</code> 。<code>ops[i] = [ai, bi]</code> 意味着当所有的 <code>0 &lt;= x &lt; ai</code> 和 <code>0 &lt;= y &lt; bi</code> 时， <code>M[x][y]</code> 应该加 1。</p>
<p>在 <em>执行完所有操作后</em> ，计算并返回 <em>矩阵中最大整数的个数</em> 。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505171101863.jpeg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">m</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=</span> <span class="mi">3</span><span class="err">，</span><span class="nx">ops</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span> <span class="nx">M</span> <span class="nx">中最大的整数是</span> <span class="mi">2</span><span class="p">,</span> <span class="nx">而且</span> <span class="nx">M</span> <span class="nx">中有4个值为2的元素</span><span class="err">。</span><span class="nx">因此返回</span> <span class="mi">4</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">maxCount</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">m</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">ops</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果操作组为空，则表示都是0，直接返回m*n
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">ops</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">m</span> <span class="o">*</span> <span class="nx">n</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 找到最小的m和n
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">minM</span> <span class="o">=</span> <span class="nx">m</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">minN</span> <span class="o">=</span> <span class="nx">n</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">ops</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">minM</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">minM</span><span class="p">,</span><span class="nx">ops</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">        <span class="nx">minN</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">minN</span><span class="p">,</span><span class="nx">ops</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 返回最小的m和n的个数相乘
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">return</span> <span class="nx">minM</span> <span class="o">*</span> <span class="nx">minN</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>这道题其实还是很简单的，只是一开始会有点绕，不太清楚要讲什么，但是仔细观察就会发现，突破点就是这个 “矩阵中最大整数的个数”。因为所有的格子都要 + 1，所以，最大的整数只会出现在操作组a1、b1值最小的那个上面。所以，我们要做的工作，就是找出最小值的那个操作组。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2505/250515-carlo-ancelotti.html">Carlo Ancelotti leaves Real Madrid to coach Brazil - Breaking News English Lesson</a></p>
<p>65 岁的传奇足球教练卡洛・安切洛蒂已决定离开西班牙豪门皇家马德里，出任巴西国家队主教练。他执教皇马的最后一场比赛将于 5 月 25 日举行，次日他将正式走马上任巴西国家队主教练一职。安切洛蒂对记者表示：“从 26 日起，我将成为巴西队主帅，这是一项重大挑战。现在，我仍是皇马主帅，我希望能圆满完成这最后一段征程，为这段美妙的冒险画上句号。” 执教巴西队将是安切洛蒂首次担任国家队主教练一职。安切洛蒂是有史以来最成功的足球教练之一，他是唯一一位赢得过欧洲五大顶级联赛冠军的教练，还创纪录地五次捧起欧洲冠军联赛奖杯。</p>
<p>巴西队是世界上战绩最为辉煌的国家队，也是唯一一个五次夺得国际足联世界杯冠军的国家，但上一次夺冠还是在 2002 年，自那以后，巴西队再未闯入过世界杯决赛。2014 年，巴西队在半决赛中 1 比 7 惨败给德国队。巴西足球联合会主席埃德纳尔多・罗德里格斯希望安切洛蒂能扭转巴西队的命运。罗德里格斯先生说：“安切洛蒂是历史上最伟大的教练，如今他执掌着世界上最伟大的国家队。我们将携手为巴西足球书写新的辉煌篇章。” 安切洛蒂将率领巴西队出战下个月对阵巴拉圭和厄瓜多尔的世界杯预选赛。</p>
<h2 id="tip">Tip</h2>
<p>之前一直用 DeepSeek 来检查文章、公司文档的错别字和标点符号，结果它总是输出莫名其妙的东西。后来我换成 Kimi，虽然效果好了很多，但还是不尽如人意，很多语句都有问题。这次换成豆包 AI，好像是好一些，但也就那样吧。</p>
<p>所以说，想用 AI 写文，实际上搞不好反而会降低效率。当然，这还是得看使用的人，如果没什么底线，觉得输出的东西无所谓，那效率确实高得很。</p>
<h2 id="share">Share</h2>
<p>“醉后不知天在水，满船清梦压星河。”</p>
<p>这真的是人能写出来的么？</p>
]]></content:encoded>
    </item>
    <item>
      <title>25-项目需求如何有效梳理</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/25-%E9%A1%B9%E7%9B%AE%E9%9C%80%E6%B1%82%E5%A6%82%E4%BD%95%E6%9C%89%E6%95%88%E6%A2%B3%E7%90%86/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/25-%E9%A1%B9%E7%9B%AE%E9%9C%80%E6%B1%82%E5%A6%82%E4%BD%95%E6%9C%89%E6%95%88%E6%A2%B3%E7%90%86/</guid>
      <description>&lt;p&gt;现在我们的需求梳理方式，基本上就是一句话。什么意思呢？就是有一个需求文档，项目负责人把要做的事情依次列出，再对其进行评估，如果需要设计原型，就安排产品进行功能原型设计，如果需要提供解决方案，那么就先安排自己或其他开发成员提供解决方案。&lt;/p&gt;
&lt;p&gt;好像没有什么问题？其实，真正的产品需求文档，也就是俗称的 PRD 文档，是很规范的，就不说什么形式上的问题，比如文档信息、版本更新历史、名词解释等等。就光内容的要求，就很精细。就拿 APP 的 PRD 文档来说，是需要把原型的图片贴到文档里的，然后要对每个功能和交互进行说明，比如点击这个按钮，会出现什么弹窗，弹窗的布局是什么样子的，内容是什么，文本是什么颜色的，是使用什么字体的等等。比如，XiaoPiu 的官方示例：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505151110023.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;这样详细的好处是，在之前的文章《16 - 项目的任务质量如何保证》中已经有过类似的叙述，那就是避免需求边界不清晰，导致后续的返工。&lt;/p&gt;
&lt;p&gt;但是，对于我们现阶段而言，项目的需求应该怎么梳理呢？这个怎么说呢？如果是在大公司，分工比较明确，那么这样做无可厚非，精益求精未尝不可，但是，如果是中小型公司，或者只是一个部门，要自负盈亏，考虑到实际工作中的产出，或者说性价比，那么就感觉有点过度精细了，说好听点，是追求极致与差不多这个度怎么把控的问题，说直白点，是怎么利益最大化的问题。&lt;/p&gt;
&lt;p&gt;所以，从实际情况出发，虽然 PRD 文档规范化，有诸多好处，但是投入产出比显然很低的，因为没有那么多人手把这个需求做到这么精细的程度，加上平时沟通也很及时，有什么问题及时沟通处理就行，而且，PRD 文档规范化还有一个重要的目的是，为了和其他部门或其他公司进行沟通交流使用的。&lt;/p&gt;
&lt;p&gt;可是，只是我们部门内部使用的需求文档，就没必要这么精细了，只要能做好这件事情就行。但是，虽然是一句话需求，但还是有优化空间的，我们做不到整个文档规范化，但对这一句话的需求，可以规范化。&lt;/p&gt;
&lt;p&gt;上面说的是 PRD 文档的规范问题，但其实，对于需求的整理，可以遵循需求的 INVEST 原则。需求的 INVEST 原则最早由 极限编程（XP）的倡导者 Bill Wake 提出。这一原则旨在指导敏捷开发中用户故事的拆分与编写，帮助团队更高效地管理需求，确保故事的可交付性和价值性。&lt;/p&gt;
&lt;p&gt;INVEST 原则主要用于优化用户故事的描述，使其满足以下特性：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;独立性（Independent）&lt;/strong&gt;：故事之间减少依赖，便于单独开发和测试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可协商性（Negotiable）&lt;/strong&gt;：避免过早锁定细节，鼓励通过沟通逐步完善需求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;有价值（Valuable）&lt;/strong&gt;：每个故事必须为用户或客户提供明确价值，避免资源浪费。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可估算（Estimable）&lt;/strong&gt;：团队能评估工作量以制定迭代计划。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;短小（Small）&lt;/strong&gt; ：单个故事工作量控制在几天内，以降低风险。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可测试（Testable）&lt;/strong&gt;：明确验收标准，确保功能可验证。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;结合我们部门自身情况，需求来源其实很多的，所以可分为两种，一种是部门外，另一种是部门内，如果是部门外，需要加上角色；如果是部门内，角色可不加。可以简化为，&lt;strong&gt;是谁？要做什么？为什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这里就以设备管理功能，写一个示例参考：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;深圳客户希望能看到自己有多少台设备，方便统计和日常维护。&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;是谁：深圳客户&lt;/li&gt;
&lt;li&gt;要做什么：看到自己有多少台设备&lt;/li&gt;
&lt;li&gt;为什么：方便统计和日常维护&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过这种方式，既能保证需求的清晰性和可操作性，又能在现有资源条件下实现需求梳理的优化，为项目的顺利推进奠定基础。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>现在我们的需求梳理方式，基本上就是一句话。什么意思呢？就是有一个需求文档，项目负责人把要做的事情依次列出，再对其进行评估，如果需要设计原型，就安排产品进行功能原型设计，如果需要提供解决方案，那么就先安排自己或其他开发成员提供解决方案。</p>
<p>好像没有什么问题？其实，真正的产品需求文档，也就是俗称的 PRD 文档，是很规范的，就不说什么形式上的问题，比如文档信息、版本更新历史、名词解释等等。就光内容的要求，就很精细。就拿 APP 的 PRD 文档来说，是需要把原型的图片贴到文档里的，然后要对每个功能和交互进行说明，比如点击这个按钮，会出现什么弹窗，弹窗的布局是什么样子的，内容是什么，文本是什么颜色的，是使用什么字体的等等。比如，XiaoPiu 的官方示例：</p>
<p><img alt="img" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505151110023.png"></p>
<p>这样详细的好处是，在之前的文章《16 - 项目的任务质量如何保证》中已经有过类似的叙述，那就是避免需求边界不清晰，导致后续的返工。</p>
<p>但是，对于我们现阶段而言，项目的需求应该怎么梳理呢？这个怎么说呢？如果是在大公司，分工比较明确，那么这样做无可厚非，精益求精未尝不可，但是，如果是中小型公司，或者只是一个部门，要自负盈亏，考虑到实际工作中的产出，或者说性价比，那么就感觉有点过度精细了，说好听点，是追求极致与差不多这个度怎么把控的问题，说直白点，是怎么利益最大化的问题。</p>
<p>所以，从实际情况出发，虽然 PRD 文档规范化，有诸多好处，但是投入产出比显然很低的，因为没有那么多人手把这个需求做到这么精细的程度，加上平时沟通也很及时，有什么问题及时沟通处理就行，而且，PRD 文档规范化还有一个重要的目的是，为了和其他部门或其他公司进行沟通交流使用的。</p>
<p>可是，只是我们部门内部使用的需求文档，就没必要这么精细了，只要能做好这件事情就行。但是，虽然是一句话需求，但还是有优化空间的，我们做不到整个文档规范化，但对这一句话的需求，可以规范化。</p>
<p>上面说的是 PRD 文档的规范问题，但其实，对于需求的整理，可以遵循需求的 INVEST 原则。需求的 INVEST 原则最早由 极限编程（XP）的倡导者 Bill Wake 提出。这一原则旨在指导敏捷开发中用户故事的拆分与编写，帮助团队更高效地管理需求，确保故事的可交付性和价值性。</p>
<p>INVEST 原则主要用于优化用户故事的描述，使其满足以下特性：</p>
<ol>
<li>
<p><strong>独立性（Independent）</strong>：故事之间减少依赖，便于单独开发和测试。</p>
</li>
<li>
<p><strong>可协商性（Negotiable）</strong>：避免过早锁定细节，鼓励通过沟通逐步完善需求。</p>
</li>
<li>
<p><strong>有价值（Valuable）</strong>：每个故事必须为用户或客户提供明确价值，避免资源浪费。</p>
</li>
<li>
<p><strong>可估算（Estimable）</strong>：团队能评估工作量以制定迭代计划。</p>
</li>
<li>
<p><strong>短小（Small）</strong> ：单个故事工作量控制在几天内，以降低风险。</p>
</li>
<li>
<p><strong>可测试（Testable）</strong>：明确验收标准，确保功能可验证。</p>
</li>
</ol>
<p>结合我们部门自身情况，需求来源其实很多的，所以可分为两种，一种是部门外，另一种是部门内，如果是部门外，需要加上角色；如果是部门内，角色可不加。可以简化为，<strong>是谁？要做什么？为什么？</strong></p>
<p>这里就以设备管理功能，写一个示例参考：</p>
<blockquote>
<p>深圳客户希望能看到自己有多少台设备，方便统计和日常维护。</p></blockquote>
<ol>
<li>是谁：深圳客户</li>
<li>要做什么：看到自己有多少台设备</li>
<li>为什么：方便统计和日常维护</li>
</ol>
<p>通过这种方式，既能保证需求的清晰性和可操作性，又能在现有资源条件下实现需求梳理的优化，为项目的顺利推进奠定基础。</p>
]]></content:encoded>
    </item>
    <item>
      <title>24-项目测试流程漏洞分析以及改进</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/24-%E9%A1%B9%E7%9B%AE%E6%B5%8B%E8%AF%95%E6%B5%81%E7%A8%8B%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%BB%A5%E5%8F%8A%E6%94%B9%E8%BF%9B/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/24-%E9%A1%B9%E7%9B%AE%E6%B5%8B%E8%AF%95%E6%B5%81%E7%A8%8B%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%BB%A5%E5%8F%8A%E6%94%B9%E8%BF%9B/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;项目发起测试时，首先要在 OA 填写软件测试申请单。填好之后，由项目负责人准备当前版本的测试用例，交给测试部门，同时沟通确定测试周期，之后才正式开始项目功能测试。&lt;/p&gt;
&lt;h1 id=&#34;2-线上版本出现明显的问题&#34;&gt;2. 线上版本出现明显的问题&lt;/h1&gt;
&lt;p&gt;最近有个线上平台，客户反馈说平台里有个列表的按钮怎么点都没反应，而且弹窗的样式也错乱了。可这个版本明明是测试通过才上线的，这就说明测试环节肯定出问题了。&lt;/p&gt;
&lt;h1 id=&#34;3-问题产生的原因分析&#34;&gt;3. 问题产生的原因分析&lt;/h1&gt;
&lt;p&gt;为什么会出现这种情况呢？&lt;/p&gt;
&lt;p&gt;主要还是测试流程有漏洞。因为项目负责人提供给测试部门的测试用例，只包含了当前迭代的需求。所以测试的时候，测试人员就只测了新增加的功能，而出问题的那个功能是旧功能，因为不在迭代的需求范围内，所以压根就没测。&lt;/p&gt;
&lt;p&gt;按理说，这个旧功能没做任何改动，怎么会出问题呢？&lt;/p&gt;
&lt;p&gt;后来发现，在开发当前迭代需求的时候，有可能开发人员不小心动到了这个功能的代码，或者是在修复其他小问题的时候影响到了它。&lt;/p&gt;
&lt;p&gt;还有可能是当前迭代需求其实和这个功能是有关联的，但我们只关注了迭代功能有没有完成，根本没管那些关联功能，这才导致问题在实际使用的时候暴露出来。&lt;/p&gt;
&lt;h1 id=&#34;4-测试流程改进办法&#34;&gt;4. 测试流程改进办法&lt;/h1&gt;
&lt;p&gt;为了解决测试覆盖不全，又不想每一轮都全部测一遍浪费时间的问题，我们优化了测试流程：&lt;/p&gt;
&lt;p&gt;项目负责人这边要提供完整的测试用例，还要标注清楚当前版本里哪些功能必须测试，哪些不用测试。&lt;/p&gt;
&lt;p&gt;测试人员分三轮进行测试：&lt;/p&gt;
&lt;p&gt;第一轮，不管标注的是不是必须测试，把平台所有功能的测试用例都过一遍；&lt;/p&gt;
&lt;p&gt;第二轮，专门验证已经修复的 Bug，同时再把那些必须测的功能测一遍；&lt;/p&gt;
&lt;p&gt;第三轮，等所有 Bug 都修好了，确定没什么大问题了，再把平台全部功能的测试用例再过一遍。&lt;/p&gt;
&lt;p&gt;这样一来，既能保证测试全面，又不会做太多无用功。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505141718208.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>项目发起测试时，首先要在 OA 填写软件测试申请单。填好之后，由项目负责人准备当前版本的测试用例，交给测试部门，同时沟通确定测试周期，之后才正式开始项目功能测试。</p>
<h1 id="2-线上版本出现明显的问题">2. 线上版本出现明显的问题</h1>
<p>最近有个线上平台，客户反馈说平台里有个列表的按钮怎么点都没反应，而且弹窗的样式也错乱了。可这个版本明明是测试通过才上线的，这就说明测试环节肯定出问题了。</p>
<h1 id="3-问题产生的原因分析">3. 问题产生的原因分析</h1>
<p>为什么会出现这种情况呢？</p>
<p>主要还是测试流程有漏洞。因为项目负责人提供给测试部门的测试用例，只包含了当前迭代的需求。所以测试的时候，测试人员就只测了新增加的功能，而出问题的那个功能是旧功能，因为不在迭代的需求范围内，所以压根就没测。</p>
<p>按理说，这个旧功能没做任何改动，怎么会出问题呢？</p>
<p>后来发现，在开发当前迭代需求的时候，有可能开发人员不小心动到了这个功能的代码，或者是在修复其他小问题的时候影响到了它。</p>
<p>还有可能是当前迭代需求其实和这个功能是有关联的，但我们只关注了迭代功能有没有完成，根本没管那些关联功能，这才导致问题在实际使用的时候暴露出来。</p>
<h1 id="4-测试流程改进办法">4. 测试流程改进办法</h1>
<p>为了解决测试覆盖不全，又不想每一轮都全部测一遍浪费时间的问题，我们优化了测试流程：</p>
<p>项目负责人这边要提供完整的测试用例，还要标注清楚当前版本里哪些功能必须测试，哪些不用测试。</p>
<p>测试人员分三轮进行测试：</p>
<p>第一轮，不管标注的是不是必须测试，把平台所有功能的测试用例都过一遍；</p>
<p>第二轮，专门验证已经修复的 Bug，同时再把那些必须测的功能测一遍；</p>
<p>第三轮，等所有 Bug 都修好了，确定没什么大问题了，再把平台全部功能的测试用例再过一遍。</p>
<p>这样一来，既能保证测试全面，又不会做太多无用功。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505141718208.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2.我为什么要跑步</title>
      <link>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/3.%E6%88%91%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E8%B7%91%E6%AD%A5/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/3.%E6%88%91%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E8%B7%91%E6%AD%A5/</guid>
      <description>&lt;p&gt;我为什么要跑步？&lt;/p&gt;
&lt;p&gt;这个问题一下难住我了，我突然不知道怎么回答，也不知道是从什么时候开始，对跑步有一种说不上的喜爱，喜欢跑步好像挺代表一个人积极向上的精神面貌？兴许就是这样吧。&lt;/p&gt;
&lt;p&gt;以前的跑步安排是有问题的，哪怕一段几百米的路程都要记录到行走分类中，这些太精细的做法，直接导致这个事情是一个不容忽视要认真对待的事情，这么精神紧绷专注的做法，只能给自己增加难度，跑步不是一个任务，不是你每天下班回来，还要像工作时，那么用心专注解决的难题，而不容任何疏忽，我现在觉得这个做法太过于苛刻了。&lt;/p&gt;
&lt;p&gt;人毕竟不是机器，要像弹簧一样，松弛有度，有紧有松，这样在工作和生活中才能做好调整，如果一直高度专注的投入，可能会有弹簧崩断的时候。&lt;/p&gt;
&lt;p&gt;跑步应该是一种恩赐，是一种享受，有时我在想，我已经足够幸运了，还能跑步，有的人连自己身体健康都是一种奢求，而对于我而言，我还能跑步，没有什么比这个更让我感恩的了。&lt;/p&gt;
&lt;p&gt;在去做这个事情的时候，要放松身心，该步行的步行，该浪费的时间就应该浪费，每时每分每秒都要计较，那么真的太累了。&lt;/p&gt;
&lt;p&gt;用心去感受它。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我为什么要跑步？</p>
<p>这个问题一下难住我了，我突然不知道怎么回答，也不知道是从什么时候开始，对跑步有一种说不上的喜爱，喜欢跑步好像挺代表一个人积极向上的精神面貌？兴许就是这样吧。</p>
<p>以前的跑步安排是有问题的，哪怕一段几百米的路程都要记录到行走分类中，这些太精细的做法，直接导致这个事情是一个不容忽视要认真对待的事情，这么精神紧绷专注的做法，只能给自己增加难度，跑步不是一个任务，不是你每天下班回来，还要像工作时，那么用心专注解决的难题，而不容任何疏忽，我现在觉得这个做法太过于苛刻了。</p>
<p>人毕竟不是机器，要像弹簧一样，松弛有度，有紧有松，这样在工作和生活中才能做好调整，如果一直高度专注的投入，可能会有弹簧崩断的时候。</p>
<p>跑步应该是一种恩赐，是一种享受，有时我在想，我已经足够幸运了，还能跑步，有的人连自己身体健康都是一种奢求，而对于我而言，我还能跑步，没有什么比这个更让我感恩的了。</p>
<p>在去做这个事情的时候，要放松身心，该步行的步行，该浪费的时间就应该浪费，每时每分每秒都要计较，那么真的太累了。</p>
<p>用心去感受它。</p>
]]></content:encoded>
    </item>
    <item>
      <title>4.我对怎么写好一篇文章的思考</title>
      <link>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/4.%E6%88%91%E5%AF%B9%E6%80%8E%E4%B9%88%E5%86%99%E5%A5%BD%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E7%9A%84%E6%80%9D%E8%80%83/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/4.%E6%88%91%E5%AF%B9%E6%80%8E%E4%B9%88%E5%86%99%E5%A5%BD%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E7%9A%84%E6%80%9D%E8%80%83/</guid>
      <description>&lt;p&gt;是紧扣主题，还是东拉西扯？&lt;/p&gt;
&lt;p&gt;开门见山&lt;/p&gt;
&lt;p&gt;抛砖引玉&lt;/p&gt;
&lt;p&gt;冰山理论&lt;/p&gt;
&lt;p&gt;吊胃口&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>是紧扣主题，还是东拉西扯？</p>
<p>开门见山</p>
<p>抛砖引玉</p>
<p>冰山理论</p>
<p>吊胃口</p>
]]></content:encoded>
    </item>
    <item>
      <title>《鸢尾花》读后感</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E9%B8%A2%E5%B0%BE%E8%8A%B1%E8%AF%BB%E5%90%8E%E6%84%9F/</link>
      <pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E9%B8%A2%E5%B0%BE%E8%8A%B1%E8%AF%BB%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121922007.jpg&#34;  /&gt;
&lt;h1 id=&#34;读后感&#34;&gt;读后感&lt;/h1&gt;
&lt;p&gt;《鸢尾花》这个书名真好听，封面设计也很出彩。起初我以为它是本长篇小说，没想到竟是 18 个小故事的合集。书中文字依旧延续着黑塞兼具诗意与哲思的风格，每个故事都像一面镜子，能照出你最初的模样，颇有苏东坡与佛印参禅的韵味 —— 不同的人读来都会有不一样的感悟。有的故事浅显易懂，有的则寓意深刻，但无论如何，与这本书的邂逅本身就是美妙的。&lt;/p&gt;
&lt;p&gt;这本书里有不少故事我都很喜欢，而有些故事，兴许是我理解有限，实在看不太懂，所以也说不上喜欢与否，只能怪自己才疏学浅，没能领悟其中深刻的含义。&lt;/p&gt;
&lt;p&gt;我比较喜欢的故事有《矮人》《奥古斯图斯》《笛梦》《法尔德姆》《鸟儿》《欧洲人》《神秘的山》《鸢尾花》，其中，最喜欢的当属《神秘的山》。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121928313.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在《矮人》这个故事里，能看到爱情、尊重和义气的元素，它也是 &amp;ldquo;所有的标准条件，都只是为了不喜欢的人而准备的&amp;rdquo; 这句话的深度诠释。故事里的女神最终也只不过是个普通人，有着普通人的遭遇。如此一来，很多事情都变得可笑，毕竟太阳底下没有新鲜事儿。因为故事里的狗狗叫费诺，我一下子就想到了《指环王》里的至高王 —— 他也叫这个名字，是精灵宝钻的创造者。再加上故事里有矮人，还以为自己看错书串场了。&lt;/p&gt;
&lt;p&gt;《奥古斯图斯》这个故事的文风与《悉达多》颇为相似，虽然也是涅槃的结局，但这次更多探讨的是溺爱的话题。故事里，母亲许愿让所有人都喜欢自己的孩子奥古斯图斯，于是他从小就在众人的宠溺中长大，不管是谁都会对他青睐有加。时间久了，奥古斯图斯开始越发肆意妄为，把众人玩弄于股掌之间 —— 反正大家都不会拒绝他。慢慢地，他的身体和灵魂仿佛坠入深渊，腐败滋生，阳光消逝，黑暗笼罩了他的人生，他也在这黑暗中越陷越深。直到遇到贵妇人的拒绝，不知他是遭遇了挫败，还是就此幡然醒悟，开始从迷茫中苏醒。曾经英俊的脸庞变得丑陋，生锈的灵魂开始寻求新生，最后，他终于在壁炉旁看到了一直期望的千万个发光的小精灵在飞舞，仿佛又找回了曾经的自己。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122005916.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;《笛梦》是一个关于追求自我的故事，甚至可以看成是《德米安》的袖珍版。在人生成长的过程中，我们不会一直是襁褓中的婴儿，&amp;ldquo;没有回头路，要探索世界，就必须一路向前&amp;rdquo;。在不断面对成长中的困境、不断面对人生选择的过程中，我们总以为每次都会有人助自己一臂之力，可当行舟穿过迷雾，我们才发现，一直以来，我们所等待、所期盼的，原来就是我们自己。&lt;/p&gt;
&lt;p&gt;《法尔德姆》是个很奇幻的故事，按理说我完全看不懂，应该不会感兴趣才对。但奇妙的是，我好像又懂那么一点，这种似懂非懂的感觉，反而让我深深被这个故事吸引。我隐约觉得，它讲的是人生不过短短百年，任凭斗转星移、岁月变迁，哲学却是永恒不变的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122006945.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;《鸟儿》的故事，用书中一句话就能概括，那就是 &amp;ldquo;现今的人们不再虔诚地对待任何事物，失去了忠诚和信仰&amp;rdquo;。我在阅读时，感觉这个故事有点像《黑神话：悟空》第三回 “夜生白露” 的剧情，虽然不完全一样，但同样讲述了一个从拥有信仰，到因利益熏心而信仰崩塌，进而众生癫狂的故事。&lt;/p&gt;
&lt;p&gt;《欧洲人》这个故事的讽刺意味十足。故事设定在世界面临灭亡，诺亚要保留地球上的每个物种以保证物种多样性。在诺亚方舟上，各个人种、各个国家的人都进行了才艺表演，中国人、印第安人、马来人和黑人等都展现了各自的才艺，可欧洲人不仅没展示什么才艺，还大放厥词。别人说他吹牛，他还死不承认。最有意思的是，因为欧洲人只有一个男人，意味着他要繁衍后代就得和其他国家的人结合，这暗戳戳地讽刺了欧洲人应该放下高傲的姿态，向其他国家的人学习，不然等待他们的只有灭亡。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122006513.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;《神秘的山》是这本书中我最喜爱的故事。在像诗一样优美的文字里，它讲述了一位登山者的一生，展现出钢铁般的不屈意志。这让我联想到从小到大听过的神话传说，像夸父逐日、精卫填海、后羿射日，无不是古人对抗大自然的勇气写照。我想这个故事亦是如此，尤其是最后那段长长的描写，震撼人心，真的想背下来。阅读时，我的脑海中不断闪过《徒手攀岩》《老人与海》等影视作品和书籍中的类似片段，仿佛从人类诞生、从浩瀚银河与璀璨星辰开始轮转的那一刻起，所有的一切都在这一瞬间交织在了一起。大自然值得敬畏，人类虽然渺小，但人类的赞歌就是勇气的赞歌。&lt;/p&gt;
&lt;p&gt;《鸢尾花》讲述的是一个背井离乡、追寻成功的故事，也可以说是探讨 “根在何处” 的故事。无论外面的世界多么繁花似锦、精彩纷呈，但终有凋零的那一天，可故土不会。在那片土地上，留存着最纯粹的东西，它不会随着世事变迁而改变，永远藏在每个人的内心深处。忘记故乡，就如同无根的浮萍，只能任雨打风吹，漂泊在世间。在《笛梦》中我们找到了自己，而《鸢尾花》则对这一点进行了补充和修正。这一点我深有感触，虽然我去过很多地方，但对那些城市大多只是浮于表面的欣赏，并没有真正喜欢上。要是真喜欢，也不会在那里待了那么久，却连特别出名的景点都没去过。真正让我发自内心热爱的，还是自己的故乡。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121927459.png&#34; style=&#34;zoom: 45%;&#34; /&gt;
&lt;h1 id=&#34;摘抄&#34;&gt;摘抄&lt;/h1&gt;
&lt;h2 id=&#34;矮人&#34;&gt;矮人&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;好故事就像高贵的野兽，隐藏在暗处，人们常常得在山谷和森林外守候很久才能等到。&lt;/li&gt;
&lt;li&gt;人们见过一些这样的例子，最难接近、最高傲的女人也最能在一瞬间坠入情网，就像最严寒的冬天过后，往往出现最温暖明媚的春天。&lt;/li&gt;
&lt;li&gt;越是在追求时努力装得亲切端庄，达到目的后就越会恣意妄为。&lt;/li&gt;
&lt;li&gt;我亲爱的最美丽的姑娘，别人对你说的那些话，一部分是假的，但大部分是真的。爱情就像一阵巨浪，它扑向我们，卷着我们向前，而我们无力抗拒。不过我知道，我对我的未婚妻——住在这高贵房子里的小姐有所亏欠，你不必因此担心。我在各个地方见过一些美丽的女子，并且爱过不少，但没人能与你相比。&lt;/li&gt;
&lt;li&gt;这位骄傲的小姐此刻也感受到了爱情那令人屈辱的隐隐的痛，感受到了嫉妒，在丝绸被褥中失眠了大半夜。&lt;/li&gt;
&lt;li&gt;小船靠近穆拉诺岛时，这座城市宛如漂浮在平坦光滑、波光粼粼的湖面上的白色幻影。&lt;/li&gt;
&lt;li&gt;太阳挂在远处的山边，被粉红色的雾气笼罩的山脉若隐若现，穆拉诺岛上传来阵阵钟声。&lt;/li&gt;
&lt;li&gt;太阳早已下山，星星在平静的海面上闪着白光。&lt;/li&gt;
&lt;li&gt;几乎无论在哪儿，智者总为蠢人服务，大部分人的人生就像一出糟糕的喜剧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;奥古斯图斯&#34;&gt;奥古斯图斯&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;宾斯旺格先生会轻轻打开一扇窗，从他昏暗的小屋里传出轻柔的、给人以慰藉的音乐，仿佛云层缝隙中透出的一丝月光。&lt;/li&gt;
&lt;li&gt;她想得越久，许下的心愿就越多，思绪更加混乱，根本做不了决定。&lt;/li&gt;
&lt;li&gt;我希望人人都喜欢你。&lt;/li&gt;
&lt;li&gt;啊，我已经为你许下了我能想到的最好的愿望，但这也许并不恰当。而且即使所有人都爱你，也不会有人像你的妈妈那般爱你。&lt;/li&gt;
&lt;li&gt;如果她责骂、惩罚他，孩子就大声叫嚷，抱怨人人都爱他、对他好，只有妈妈不是。&lt;/li&gt;
&lt;li&gt;奥古斯图斯人见人爱，这是她的错。她有时会难过地、几乎害怕地想，当初若是没有许下这个愿望就好了。&lt;/li&gt;
&lt;li&gt;她忍不住笑了，愉快地想，对孩子的事用不着总那么较真。&lt;/li&gt;
&lt;li&gt;他的心变得空虚又贪婪，他的灵魂变得病态又扭曲。&lt;/li&gt;
&lt;li&gt;他思考回忆得越多，越觉得那遥远的小光点美丽、惹人爱、值得追求，最后，他认出了它，眼泪夺眶而出。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;笛梦&#34;&gt;笛梦&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;如果我能同时理解并唱出这世间的千百首歌，关于花草、人类、云朵、阔叶林、松树林和各种动物，关于远方的海洋与高山、星星与月亮，倘若所有这些能同时在我心中响起并被我唱出，那么我就成了亲爱的上帝，而每首歌都会成为天上的一颗星星。&lt;/li&gt;
&lt;li&gt;“没有回头路，”他认真又友善地说，“要探索世界，就必须一路向前。你已经和那个棕色眼睛的姑娘共度了最美好的时刻，现在你离她越远，一切就会变得越美好。你可以去你想去的地方，我让你来掌舵！”&lt;/li&gt;
&lt;li&gt;那次美好的散步、布丽姬特、父亲、家乡，似乎只是一场梦，年迈又沮丧的我长久以来一直在这条黑夜之河上航行。&lt;/li&gt;
&lt;li&gt;我知道，我不能呼唤那个男人，知道真相的我就像被严冬侵蚀那般寒冷。&lt;/li&gt;
&lt;li&gt;为了弄清我所预料的事，我俯身看向河水，举起灯笼，漆黑的水面上有一张棱角分明且严肃的脸注视着我，灰色的眼睛，一张苍老睿智的脸，是我自己。&lt;/li&gt;
&lt;li&gt;既然没有了回去的路，我就继续在黑暗中彻夜航行。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;法尔德姆&#34;&gt;法尔德姆&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;村落美丽洁净，人们安分守己、勤勤恳恳，不爱冒险或刺激，若邻居过得不比自己好，就心满意足了。&lt;/li&gt;
&lt;li&gt;我这一生只想听一听，看一看，只想思考永恒的东西，所以我希望变成一座山，和法尔德姆国一样大，顶峰高耸入云。&lt;/li&gt;
&lt;li&gt;穷人变得富有，法尔德姆国变成了山。&lt;/li&gt;
&lt;li&gt;当年的年轻人现在老了，当年的老人已经离世。不变也不老的，只有那座山。&lt;/li&gt;
&lt;li&gt;当山顶的积雪透过云层闪光时，山仿佛在笑，喜于自己不再是人，不再需要依据人类的规则来计算时间。&lt;/li&gt;
&lt;li&gt;那座山和那块土地都崩塌了，法尔德姆的旧址上，无边无际的大海波涛汹涌，太阳和星星在海平面上轮流现身。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;艰难之路&#34;&gt;艰难之路&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;必须发生点什么，立即，刻不容缓，否则我们和世界会因恐惧而化作石头。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;来自外星的奇怪信息&#34;&gt;来自外星的奇怪信息&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;少年骑在鸟背上。&lt;/li&gt;
&lt;li&gt;这里的一切就像一则恐怖童话，暴行、尸体、食尸鸟所组成的怪异世界，似乎在无意义又无纪律地遵守一个让人难以理解、难以置信的规则：只有恶劣、愚蠢和丑陋的事，没有美好和善良的事。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;连环梦&#34;&gt;连环梦&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;世上所有填满思想和诗歌的书本都敌不过一分钟的抽噎。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;鸟儿&#34;&gt;鸟儿&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;它是周一村的鸟，没有同类，只有这一只，人们从远古时代就知道它了。&lt;/li&gt;
&lt;li&gt;周一村的人就像每个有特别东西的人一样，偶尔会被人嘲笑，“周一村的人，”旁人说道，“眼里只有那只鸟。”&lt;/li&gt;
&lt;li&gt;虽然不是人人都见过它，但至少人人都认识某个见过它一次或多次，并聊起过它的人。&lt;/li&gt;
&lt;li&gt;现在的年轻人几乎叫不出几朵野花或蝴蝶的名字。但如今时不时地还能听到一个老奶奶或老爷爷给孩子们讲鸟儿的故事。&lt;/li&gt;
&lt;li&gt;沙拉斯特问自己，也问苍天，如果那个加略人出于道德和理智的原因逃避他的角色，拒绝出卖耶稣，难道这对上帝的决定和救赎工作有一丁点作用吗？有改变或阻碍吗？&lt;/li&gt;
&lt;li&gt;现今的人们不再虔诚地对待任何事物，失去了忠诚和信仰。&lt;/li&gt;
&lt;li&gt;现在重要的不是忠诚和信仰，而是能射中。&lt;/li&gt;
&lt;li&gt;孙子嘲笑祖父心中的善神，美丽优雅的生灵总有一天会被猎捕、杀死，总有人花钱买它们的头或毛皮。不久后，它们会振翅飞走，而它们的存在会成为传说。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;欧洲人&#34;&gt;欧洲人&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;蓝色的天空和蔼地俯视着一无所有的地球。&lt;/li&gt;
&lt;li&gt;人类的英雄气概在这些塔楼上以令人感动的忠诚坚持到了最后一日。&lt;/li&gt;
&lt;li&gt;唯一幸存的欧洲人套着救生圈在洪水中漂流，他用最后的力气记录了最后几天发生的事，为了让后来者知道，他的祖国比最后消灭的敌人多活了几个小时，是永远的胜利者。&lt;/li&gt;
&lt;li&gt;俗世间所有种类的生灵都留下了一个样本。&lt;/li&gt;
&lt;li&gt;中国人则展示了如何等间距地种下秧苗，从而将小麦的产量提高两倍。&lt;/li&gt;
&lt;li&gt;那个欧洲人很不受待见，被人类远亲厌恶多次，因为他严厉又蔑视地挑剔他人的表演。&lt;/li&gt;
&lt;li&gt;中国人回答，一个民族只有不愁吃又膜拜神灵，才会幸福。&lt;/li&gt;
&lt;li&gt;一对夫妇有三个孩子，每个孩子又各自成家，每对年轻夫妇每年生一个孩子，多少年后才能有一百人？&lt;/li&gt;
&lt;li&gt;找到幸福显然比任何技巧都重要。&lt;/li&gt;
&lt;li&gt;这个男人留在这儿，是为了让我们提高警惕，获得动力。或许他是一个幽灵，但他无法繁衍后代，除非他再次融入多肤色人类的群体中。他不可能毁了你们在新土地上的生活。你们放心吧！&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;皮克托变形记&#34;&gt;皮克托变形记&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;一棵变成泉水流走了，一棵变成鳄鱼，一棵变成一条鱼，以新面貌来玩新游戏，开心地游来游去，凉爽又十分惬意。大象和岩石交换外衣，长颈鹿和鲜花交换身材。&lt;/li&gt;
&lt;li&gt;他变成鹿、鱼、人、蛇、云和鸟。但无论是哪一种形态，他都是完整的，是一对，有月亮，也有太阳，有男人，也有女人，是流经各地的孪生河，是挂在天上的双子星。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;神秘的山&#34;&gt;神秘的山&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;这世上没有什么东西能逃脱人类的觊觎，即使是缝隙中的一根小草，或丢弃在路边的一颗石头，最终也会出现一个好奇又贪婪的人，拿起它们，注视、触摸，就像孩子一样。&lt;/li&gt;
&lt;li&gt;人类始终无法摆脱贪念，如兄弟般地爱大自然，一旦他感到舒适自在，感到自己被当作客人接待，就想要当主人，想掠夺、战胜、击败这位曾经的朋友。&lt;/li&gt;
&lt;li&gt;塞斯科·比昂迪用濒死的双眼看着这一切，好像初次与它们相见。他看着这座他自以为熟悉的山，第一次身处于它千年的孤寂和忧伤的威严中，第一次知道所有的生命——山和人、岩羚羊和鸟、星辰和所有创造出来的东西，全都在一种必然的规律中生存和死亡。而一个人的生死和一块被水冲下山滚落成碎片，或在日晒雨淋中渐渐风化的石头没有区别。当他呻吟着，并以冰冷的心等待死亡时，他感受到了同样的呻吟，以及同样不可名状且绝望的寒冷，从这座山、这片土地、空气和星空中传来。尽管他在遭受极大的痛苦，却不觉得过分孤独，尽管他觉得自己虚弱地死在这荒山野岭中是可怕且荒谬的，却又觉得这并不比时时处处都在发生的事更可怕、更荒谬。而这个一辈子都不满足，觉得要对抗全世界的人，第一次吃惊地感受到世界的某种和谐和永恒之美，他竟慢慢接受了自己的死亡。他又看了一眼千疮百孔的山脊，屹立在群星闪烁的深蓝寒夜里，又听了一遍山谷中看不见的潺潺流水声。当他感到双手渐渐僵硬，硬朗的脸上露出了狂野又满足的微笑，一闪而过，有点像幸灾乐祸，但其实是表示他理解并同意现在发生的事，表明这次他不再固执地反抗，而是赞同这一切。黄山把他留了下来，他没有被找到。村民们为此感到悲痛惋惜，因为人人都想把他安葬在墓地，但他长眠于山石间，也是遵循着生命的规律，并不会逊色于在度过快乐而漫长的一生后，被安葬在老家教堂的荫凉处。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;藤椅的童话&#34;&gt;藤椅的童话&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;它多想偶尔说上一句话，而且它知道自己可以教年轻人一些有价值的东西。但可惜的是，现在什么都做不了了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;王国&#34;&gt;王国&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;当事情这样发展，当这个被击垮的民族自愿并真诚地走上这条命运之路时，旧日的光景便会再现，又将有一条安静的河流，不间断地自它流向世界。今日的敌人未来会再次聆听这静静流淌的河水，会再次被感动。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;影子戏&#34;&gt;影子戏&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;远处是河水、芦苇和草地交织而成的明媚风光，更远处的淡青色的丛林山丘形成了轻柔的弧线，云朵追逐着它，只有燥热的风吹起的时候，人们才能看到远处稀稀拉拉的城堡与农庄的白色小光点闪烁着。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;鸢尾花&#34;&gt;鸢尾花&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;若我心中的音乐已不再是我生命的重点，那我一天都活不了。若我要和一个男人一起生活，那他心中的音乐必须与我的和谐一致。他自己的音乐要纯净，和我的配起来要悦耳，而这必须是他唯一的渴望。&lt;/li&gt;
&lt;li&gt;你以为是为了我才走这条路，但其实是为了你自己，你知道吗？&lt;/li&gt;
&lt;li&gt;你会变成什么样子，这你不用管。你这一生追求过很多东西，荣誉、幸福、知识，还有我，你的小伊丽丝。这些都只是漂亮的图像，它们会离开你，就像我现在不得不离开你一样。我也是这样的。我一直在寻找，找到的都是漂亮可爱的图像，但它们终有一日会脱落凋零。现在，我不管什么图像了，我不再寻找了，我要回家了。我只需再迈出一步，就到家了。你也会去那里，安塞尔姆，你的额头上将不再有皱纹。&lt;/li&gt;
&lt;li&gt;雪里立着一株纤细的鸢尾，开着一朵美丽又寂寞的花。&lt;/li&gt;
&lt;li&gt;在金色篱笆间看到了有着明亮脉络的浅蓝色小径，通向花朵的秘密和内心。他知道那里有他寻找的东西，本质就在那里，不再是图像。&lt;/li&gt;
&lt;li&gt;安塞尔姆轻轻地唱着歌，他的小径静静地沉入故乡。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121922007.jpg"  />
<h1 id="读后感">读后感</h1>
<p>《鸢尾花》这个书名真好听，封面设计也很出彩。起初我以为它是本长篇小说，没想到竟是 18 个小故事的合集。书中文字依旧延续着黑塞兼具诗意与哲思的风格，每个故事都像一面镜子，能照出你最初的模样，颇有苏东坡与佛印参禅的韵味 —— 不同的人读来都会有不一样的感悟。有的故事浅显易懂，有的则寓意深刻，但无论如何，与这本书的邂逅本身就是美妙的。</p>
<p>这本书里有不少故事我都很喜欢，而有些故事，兴许是我理解有限，实在看不太懂，所以也说不上喜欢与否，只能怪自己才疏学浅，没能领悟其中深刻的含义。</p>
<p>我比较喜欢的故事有《矮人》《奥古斯图斯》《笛梦》《法尔德姆》《鸟儿》《欧洲人》《神秘的山》《鸢尾花》，其中，最喜欢的当属《神秘的山》。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121928313.png"></p>
<p>在《矮人》这个故事里，能看到爱情、尊重和义气的元素，它也是 &ldquo;所有的标准条件，都只是为了不喜欢的人而准备的&rdquo; 这句话的深度诠释。故事里的女神最终也只不过是个普通人，有着普通人的遭遇。如此一来，很多事情都变得可笑，毕竟太阳底下没有新鲜事儿。因为故事里的狗狗叫费诺，我一下子就想到了《指环王》里的至高王 —— 他也叫这个名字，是精灵宝钻的创造者。再加上故事里有矮人，还以为自己看错书串场了。</p>
<p>《奥古斯图斯》这个故事的文风与《悉达多》颇为相似，虽然也是涅槃的结局，但这次更多探讨的是溺爱的话题。故事里，母亲许愿让所有人都喜欢自己的孩子奥古斯图斯，于是他从小就在众人的宠溺中长大，不管是谁都会对他青睐有加。时间久了，奥古斯图斯开始越发肆意妄为，把众人玩弄于股掌之间 —— 反正大家都不会拒绝他。慢慢地，他的身体和灵魂仿佛坠入深渊，腐败滋生，阳光消逝，黑暗笼罩了他的人生，他也在这黑暗中越陷越深。直到遇到贵妇人的拒绝，不知他是遭遇了挫败，还是就此幡然醒悟，开始从迷茫中苏醒。曾经英俊的脸庞变得丑陋，生锈的灵魂开始寻求新生，最后，他终于在壁炉旁看到了一直期望的千万个发光的小精灵在飞舞，仿佛又找回了曾经的自己。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122005916.png"></p>
<p>《笛梦》是一个关于追求自我的故事，甚至可以看成是《德米安》的袖珍版。在人生成长的过程中，我们不会一直是襁褓中的婴儿，&ldquo;没有回头路，要探索世界，就必须一路向前&rdquo;。在不断面对成长中的困境、不断面对人生选择的过程中，我们总以为每次都会有人助自己一臂之力，可当行舟穿过迷雾，我们才发现，一直以来，我们所等待、所期盼的，原来就是我们自己。</p>
<p>《法尔德姆》是个很奇幻的故事，按理说我完全看不懂，应该不会感兴趣才对。但奇妙的是，我好像又懂那么一点，这种似懂非懂的感觉，反而让我深深被这个故事吸引。我隐约觉得，它讲的是人生不过短短百年，任凭斗转星移、岁月变迁，哲学却是永恒不变的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122006945.png"></p>
<p>《鸟儿》的故事，用书中一句话就能概括，那就是 &ldquo;现今的人们不再虔诚地对待任何事物，失去了忠诚和信仰&rdquo;。我在阅读时，感觉这个故事有点像《黑神话：悟空》第三回 “夜生白露” 的剧情，虽然不完全一样，但同样讲述了一个从拥有信仰，到因利益熏心而信仰崩塌，进而众生癫狂的故事。</p>
<p>《欧洲人》这个故事的讽刺意味十足。故事设定在世界面临灭亡，诺亚要保留地球上的每个物种以保证物种多样性。在诺亚方舟上，各个人种、各个国家的人都进行了才艺表演，中国人、印第安人、马来人和黑人等都展现了各自的才艺，可欧洲人不仅没展示什么才艺，还大放厥词。别人说他吹牛，他还死不承认。最有意思的是，因为欧洲人只有一个男人，意味着他要繁衍后代就得和其他国家的人结合，这暗戳戳地讽刺了欧洲人应该放下高傲的姿态，向其他国家的人学习，不然等待他们的只有灭亡。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505122006513.png"></p>
<p>《神秘的山》是这本书中我最喜爱的故事。在像诗一样优美的文字里，它讲述了一位登山者的一生，展现出钢铁般的不屈意志。这让我联想到从小到大听过的神话传说，像夸父逐日、精卫填海、后羿射日，无不是古人对抗大自然的勇气写照。我想这个故事亦是如此，尤其是最后那段长长的描写，震撼人心，真的想背下来。阅读时，我的脑海中不断闪过《徒手攀岩》《老人与海》等影视作品和书籍中的类似片段，仿佛从人类诞生、从浩瀚银河与璀璨星辰开始轮转的那一刻起，所有的一切都在这一瞬间交织在了一起。大自然值得敬畏，人类虽然渺小，但人类的赞歌就是勇气的赞歌。</p>
<p>《鸢尾花》讲述的是一个背井离乡、追寻成功的故事，也可以说是探讨 “根在何处” 的故事。无论外面的世界多么繁花似锦、精彩纷呈，但终有凋零的那一天，可故土不会。在那片土地上，留存着最纯粹的东西，它不会随着世事变迁而改变，永远藏在每个人的内心深处。忘记故乡，就如同无根的浮萍，只能任雨打风吹，漂泊在世间。在《笛梦》中我们找到了自己，而《鸢尾花》则对这一点进行了补充和修正。这一点我深有感触，虽然我去过很多地方，但对那些城市大多只是浮于表面的欣赏，并没有真正喜欢上。要是真喜欢，也不会在那里待了那么久，却连特别出名的景点都没去过。真正让我发自内心热爱的，还是自己的故乡。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505121927459.png" style="zoom: 45%;" />
<h1 id="摘抄">摘抄</h1>
<h2 id="矮人">矮人</h2>
<ol>
<li>好故事就像高贵的野兽，隐藏在暗处，人们常常得在山谷和森林外守候很久才能等到。</li>
<li>人们见过一些这样的例子，最难接近、最高傲的女人也最能在一瞬间坠入情网，就像最严寒的冬天过后，往往出现最温暖明媚的春天。</li>
<li>越是在追求时努力装得亲切端庄，达到目的后就越会恣意妄为。</li>
<li>我亲爱的最美丽的姑娘，别人对你说的那些话，一部分是假的，但大部分是真的。爱情就像一阵巨浪，它扑向我们，卷着我们向前，而我们无力抗拒。不过我知道，我对我的未婚妻——住在这高贵房子里的小姐有所亏欠，你不必因此担心。我在各个地方见过一些美丽的女子，并且爱过不少，但没人能与你相比。</li>
<li>这位骄傲的小姐此刻也感受到了爱情那令人屈辱的隐隐的痛，感受到了嫉妒，在丝绸被褥中失眠了大半夜。</li>
<li>小船靠近穆拉诺岛时，这座城市宛如漂浮在平坦光滑、波光粼粼的湖面上的白色幻影。</li>
<li>太阳挂在远处的山边，被粉红色的雾气笼罩的山脉若隐若现，穆拉诺岛上传来阵阵钟声。</li>
<li>太阳早已下山，星星在平静的海面上闪着白光。</li>
<li>几乎无论在哪儿，智者总为蠢人服务，大部分人的人生就像一出糟糕的喜剧。</li>
</ol>
<h2 id="奥古斯图斯">奥古斯图斯</h2>
<ol>
<li>宾斯旺格先生会轻轻打开一扇窗，从他昏暗的小屋里传出轻柔的、给人以慰藉的音乐，仿佛云层缝隙中透出的一丝月光。</li>
<li>她想得越久，许下的心愿就越多，思绪更加混乱，根本做不了决定。</li>
<li>我希望人人都喜欢你。</li>
<li>啊，我已经为你许下了我能想到的最好的愿望，但这也许并不恰当。而且即使所有人都爱你，也不会有人像你的妈妈那般爱你。</li>
<li>如果她责骂、惩罚他，孩子就大声叫嚷，抱怨人人都爱他、对他好，只有妈妈不是。</li>
<li>奥古斯图斯人见人爱，这是她的错。她有时会难过地、几乎害怕地想，当初若是没有许下这个愿望就好了。</li>
<li>她忍不住笑了，愉快地想，对孩子的事用不着总那么较真。</li>
<li>他的心变得空虚又贪婪，他的灵魂变得病态又扭曲。</li>
<li>他思考回忆得越多，越觉得那遥远的小光点美丽、惹人爱、值得追求，最后，他认出了它，眼泪夺眶而出。</li>
</ol>
<h2 id="笛梦">笛梦</h2>
<ol>
<li>如果我能同时理解并唱出这世间的千百首歌，关于花草、人类、云朵、阔叶林、松树林和各种动物，关于远方的海洋与高山、星星与月亮，倘若所有这些能同时在我心中响起并被我唱出，那么我就成了亲爱的上帝，而每首歌都会成为天上的一颗星星。</li>
<li>“没有回头路，”他认真又友善地说，“要探索世界，就必须一路向前。你已经和那个棕色眼睛的姑娘共度了最美好的时刻，现在你离她越远，一切就会变得越美好。你可以去你想去的地方，我让你来掌舵！”</li>
<li>那次美好的散步、布丽姬特、父亲、家乡，似乎只是一场梦，年迈又沮丧的我长久以来一直在这条黑夜之河上航行。</li>
<li>我知道，我不能呼唤那个男人，知道真相的我就像被严冬侵蚀那般寒冷。</li>
<li>为了弄清我所预料的事，我俯身看向河水，举起灯笼，漆黑的水面上有一张棱角分明且严肃的脸注视着我，灰色的眼睛，一张苍老睿智的脸，是我自己。</li>
<li>既然没有了回去的路，我就继续在黑暗中彻夜航行。</li>
</ol>
<h2 id="法尔德姆">法尔德姆</h2>
<ol>
<li>村落美丽洁净，人们安分守己、勤勤恳恳，不爱冒险或刺激，若邻居过得不比自己好，就心满意足了。</li>
<li>我这一生只想听一听，看一看，只想思考永恒的东西，所以我希望变成一座山，和法尔德姆国一样大，顶峰高耸入云。</li>
<li>穷人变得富有，法尔德姆国变成了山。</li>
<li>当年的年轻人现在老了，当年的老人已经离世。不变也不老的，只有那座山。</li>
<li>当山顶的积雪透过云层闪光时，山仿佛在笑，喜于自己不再是人，不再需要依据人类的规则来计算时间。</li>
<li>那座山和那块土地都崩塌了，法尔德姆的旧址上，无边无际的大海波涛汹涌，太阳和星星在海平面上轮流现身。</li>
</ol>
<h2 id="艰难之路">艰难之路</h2>
<ol>
<li>必须发生点什么，立即，刻不容缓，否则我们和世界会因恐惧而化作石头。</li>
</ol>
<h2 id="来自外星的奇怪信息">来自外星的奇怪信息</h2>
<ol>
<li>少年骑在鸟背上。</li>
<li>这里的一切就像一则恐怖童话，暴行、尸体、食尸鸟所组成的怪异世界，似乎在无意义又无纪律地遵守一个让人难以理解、难以置信的规则：只有恶劣、愚蠢和丑陋的事，没有美好和善良的事。</li>
</ol>
<h2 id="连环梦">连环梦</h2>
<ol>
<li>世上所有填满思想和诗歌的书本都敌不过一分钟的抽噎。</li>
</ol>
<h2 id="鸟儿">鸟儿</h2>
<ol>
<li>它是周一村的鸟，没有同类，只有这一只，人们从远古时代就知道它了。</li>
<li>周一村的人就像每个有特别东西的人一样，偶尔会被人嘲笑，“周一村的人，”旁人说道，“眼里只有那只鸟。”</li>
<li>虽然不是人人都见过它，但至少人人都认识某个见过它一次或多次，并聊起过它的人。</li>
<li>现在的年轻人几乎叫不出几朵野花或蝴蝶的名字。但如今时不时地还能听到一个老奶奶或老爷爷给孩子们讲鸟儿的故事。</li>
<li>沙拉斯特问自己，也问苍天，如果那个加略人出于道德和理智的原因逃避他的角色，拒绝出卖耶稣，难道这对上帝的决定和救赎工作有一丁点作用吗？有改变或阻碍吗？</li>
<li>现今的人们不再虔诚地对待任何事物，失去了忠诚和信仰。</li>
<li>现在重要的不是忠诚和信仰，而是能射中。</li>
<li>孙子嘲笑祖父心中的善神，美丽优雅的生灵总有一天会被猎捕、杀死，总有人花钱买它们的头或毛皮。不久后，它们会振翅飞走，而它们的存在会成为传说。</li>
</ol>
<h2 id="欧洲人">欧洲人</h2>
<ol>
<li>蓝色的天空和蔼地俯视着一无所有的地球。</li>
<li>人类的英雄气概在这些塔楼上以令人感动的忠诚坚持到了最后一日。</li>
<li>唯一幸存的欧洲人套着救生圈在洪水中漂流，他用最后的力气记录了最后几天发生的事，为了让后来者知道，他的祖国比最后消灭的敌人多活了几个小时，是永远的胜利者。</li>
<li>俗世间所有种类的生灵都留下了一个样本。</li>
<li>中国人则展示了如何等间距地种下秧苗，从而将小麦的产量提高两倍。</li>
<li>那个欧洲人很不受待见，被人类远亲厌恶多次，因为他严厉又蔑视地挑剔他人的表演。</li>
<li>中国人回答，一个民族只有不愁吃又膜拜神灵，才会幸福。</li>
<li>一对夫妇有三个孩子，每个孩子又各自成家，每对年轻夫妇每年生一个孩子，多少年后才能有一百人？</li>
<li>找到幸福显然比任何技巧都重要。</li>
<li>这个男人留在这儿，是为了让我们提高警惕，获得动力。或许他是一个幽灵，但他无法繁衍后代，除非他再次融入多肤色人类的群体中。他不可能毁了你们在新土地上的生活。你们放心吧！</li>
</ol>
<h2 id="皮克托变形记">皮克托变形记</h2>
<ol>
<li>一棵变成泉水流走了，一棵变成鳄鱼，一棵变成一条鱼，以新面貌来玩新游戏，开心地游来游去，凉爽又十分惬意。大象和岩石交换外衣，长颈鹿和鲜花交换身材。</li>
<li>他变成鹿、鱼、人、蛇、云和鸟。但无论是哪一种形态，他都是完整的，是一对，有月亮，也有太阳，有男人，也有女人，是流经各地的孪生河，是挂在天上的双子星。</li>
</ol>
<h2 id="神秘的山">神秘的山</h2>
<ol>
<li>这世上没有什么东西能逃脱人类的觊觎，即使是缝隙中的一根小草，或丢弃在路边的一颗石头，最终也会出现一个好奇又贪婪的人，拿起它们，注视、触摸，就像孩子一样。</li>
<li>人类始终无法摆脱贪念，如兄弟般地爱大自然，一旦他感到舒适自在，感到自己被当作客人接待，就想要当主人，想掠夺、战胜、击败这位曾经的朋友。</li>
<li>塞斯科·比昂迪用濒死的双眼看着这一切，好像初次与它们相见。他看着这座他自以为熟悉的山，第一次身处于它千年的孤寂和忧伤的威严中，第一次知道所有的生命——山和人、岩羚羊和鸟、星辰和所有创造出来的东西，全都在一种必然的规律中生存和死亡。而一个人的生死和一块被水冲下山滚落成碎片，或在日晒雨淋中渐渐风化的石头没有区别。当他呻吟着，并以冰冷的心等待死亡时，他感受到了同样的呻吟，以及同样不可名状且绝望的寒冷，从这座山、这片土地、空气和星空中传来。尽管他在遭受极大的痛苦，却不觉得过分孤独，尽管他觉得自己虚弱地死在这荒山野岭中是可怕且荒谬的，却又觉得这并不比时时处处都在发生的事更可怕、更荒谬。而这个一辈子都不满足，觉得要对抗全世界的人，第一次吃惊地感受到世界的某种和谐和永恒之美，他竟慢慢接受了自己的死亡。他又看了一眼千疮百孔的山脊，屹立在群星闪烁的深蓝寒夜里，又听了一遍山谷中看不见的潺潺流水声。当他感到双手渐渐僵硬，硬朗的脸上露出了狂野又满足的微笑，一闪而过，有点像幸灾乐祸，但其实是表示他理解并同意现在发生的事，表明这次他不再固执地反抗，而是赞同这一切。黄山把他留了下来，他没有被找到。村民们为此感到悲痛惋惜，因为人人都想把他安葬在墓地，但他长眠于山石间，也是遵循着生命的规律，并不会逊色于在度过快乐而漫长的一生后，被安葬在老家教堂的荫凉处。</li>
</ol>
<h2 id="藤椅的童话">藤椅的童话</h2>
<ol>
<li>它多想偶尔说上一句话，而且它知道自己可以教年轻人一些有价值的东西。但可惜的是，现在什么都做不了了。</li>
</ol>
<h2 id="王国">王国</h2>
<ol>
<li>当事情这样发展，当这个被击垮的民族自愿并真诚地走上这条命运之路时，旧日的光景便会再现，又将有一条安静的河流，不间断地自它流向世界。今日的敌人未来会再次聆听这静静流淌的河水，会再次被感动。</li>
</ol>
<h2 id="影子戏">影子戏</h2>
<ol>
<li>远处是河水、芦苇和草地交织而成的明媚风光，更远处的淡青色的丛林山丘形成了轻柔的弧线，云朵追逐着它，只有燥热的风吹起的时候，人们才能看到远处稀稀拉拉的城堡与农庄的白色小光点闪烁着。</li>
</ol>
<h2 id="鸢尾花">鸢尾花</h2>
<ol>
<li>若我心中的音乐已不再是我生命的重点，那我一天都活不了。若我要和一个男人一起生活，那他心中的音乐必须与我的和谐一致。他自己的音乐要纯净，和我的配起来要悦耳，而这必须是他唯一的渴望。</li>
<li>你以为是为了我才走这条路，但其实是为了你自己，你知道吗？</li>
<li>你会变成什么样子，这你不用管。你这一生追求过很多东西，荣誉、幸福、知识，还有我，你的小伊丽丝。这些都只是漂亮的图像，它们会离开你，就像我现在不得不离开你一样。我也是这样的。我一直在寻找，找到的都是漂亮可爱的图像，但它们终有一日会脱落凋零。现在，我不管什么图像了，我不再寻找了，我要回家了。我只需再迈出一步，就到家了。你也会去那里，安塞尔姆，你的额头上将不再有皱纹。</li>
<li>雪里立着一株纤细的鸢尾，开着一朵美丽又寂寞的花。</li>
<li>在金色篱笆间看到了有着明亮脉络的浅蓝色小径，通向花朵的秘密和内心。他知道那里有他寻找的东西，本质就在那里，不再是图像。</li>
<li>安塞尔姆轻轻地唱着歌，他的小径静静地沉入故乡。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2.为什么每次跑步都坚持不了多久</title>
      <link>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/2.%E4%B8%BA%E4%BB%80%E4%B9%88%E6%AF%8F%E6%AC%A1%E8%B7%91%E6%AD%A5%E9%83%BD%E5%9D%9A%E6%8C%81%E4%B8%8D%E4%BA%86%E5%A4%9A%E4%B9%85/</link>
      <pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%BD%93%E6%88%91%E8%B7%91%E6%AD%A5%E6%97%B6/2.%E4%B8%BA%E4%BB%80%E4%B9%88%E6%AF%8F%E6%AC%A1%E8%B7%91%E6%AD%A5%E9%83%BD%E5%9D%9A%E6%8C%81%E4%B8%8D%E4%BA%86%E5%A4%9A%E4%B9%85/</guid>
      <description>&lt;p&gt;周日去体检了，然后昨晚想着去跑步了，那种感觉果然是健身房给不了的，真的静静地、慢慢地，跑完一公里再一公里，最近在B站看《西游记后传》，曹荣导演的精剪版本，还是很不错的。&lt;/p&gt;
&lt;p&gt;在跑步的时候一直在想为什么每次跑步都坚持不了多久呢？&lt;/p&gt;
&lt;p&gt;问题是类似哈登在抢七的表现，遇到不公就开始对抗起来了，开始表现出沮丧，消极面对了，这个是不对的。&lt;/p&gt;
&lt;p&gt;其实我也是这样，在梧州滑雪那个撑杆不应该发脾气的，应该积极面对，把问题解决掉，不要发这种没用任何用处的脾气。一点意思都没有。&lt;/p&gt;
&lt;p&gt;比如今天早上本来要出去跑步，结果时间不太够，可能太紧张了，就不打算去了，但是有没有想过，其实可以降低标准的。&lt;/p&gt;
&lt;p&gt;为什么一定要十全十美？&lt;/p&gt;
&lt;p&gt;为什么一定要规定跑5公里？&lt;/p&gt;
&lt;p&gt;不能跑3公里，减少点时间么？&lt;/p&gt;
&lt;p&gt;事情也做了，虽然不能喝5公里相比，但是至少比你什么都没做强吧？&lt;/p&gt;
&lt;p&gt;是这个道理的吧？&lt;/p&gt;
&lt;p&gt;要随机应变，要想明白我们的目的是什么，而不是拣了芝麻丢了西瓜，每天5公里的目的是什么？&lt;/p&gt;
&lt;p&gt;难道是为了每天跑5公里这个目的么？&lt;/p&gt;
&lt;p&gt;最终的目的是为了减肥外加身体健康，这个才是最终的追求，所以当时没办法完成5公里，为什么不想着完成两公里、三公里就可以了呢？&lt;/p&gt;
&lt;p&gt;为什么就立马选择不去了呢？&lt;/p&gt;
&lt;p&gt;你跑了3公里，你就前进了一点，你什么都没跑，当天你就是收获了个寂寞啊。&lt;/p&gt;
&lt;p&gt;要透过表象看问题，抓住问题的本质。&lt;/p&gt;
&lt;p&gt;解决问题，不能浮于表面，像割草一样，今天长了，就割一点，改天长了又割一点，根本没有彻底解决问题。&lt;/p&gt;
&lt;p&gt;解决问题就是要把草连根拔起，不给任何反复的机会。&lt;/p&gt;
&lt;p&gt;解决这个跑步的问题也是一样的，不要每次都拿5公里做推脱，也不要陷入完美主义的陷阱。&lt;/p&gt;
&lt;p&gt;世界上压根就没有什么是完美的，有的只是每一天的坚持，有的只是日积月累的坚持。&lt;/p&gt;
&lt;p&gt;当这些积累到一定的阶段，才可以引起质变。才会真正产生作用。&lt;/p&gt;
&lt;p&gt;嫉恶如仇是有问题的。会让你丧失对真相的，对利弊的判断。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>周日去体检了，然后昨晚想着去跑步了，那种感觉果然是健身房给不了的，真的静静地、慢慢地，跑完一公里再一公里，最近在B站看《西游记后传》，曹荣导演的精剪版本，还是很不错的。</p>
<p>在跑步的时候一直在想为什么每次跑步都坚持不了多久呢？</p>
<p>问题是类似哈登在抢七的表现，遇到不公就开始对抗起来了，开始表现出沮丧，消极面对了，这个是不对的。</p>
<p>其实我也是这样，在梧州滑雪那个撑杆不应该发脾气的，应该积极面对，把问题解决掉，不要发这种没用任何用处的脾气。一点意思都没有。</p>
<p>比如今天早上本来要出去跑步，结果时间不太够，可能太紧张了，就不打算去了，但是有没有想过，其实可以降低标准的。</p>
<p>为什么一定要十全十美？</p>
<p>为什么一定要规定跑5公里？</p>
<p>不能跑3公里，减少点时间么？</p>
<p>事情也做了，虽然不能喝5公里相比，但是至少比你什么都没做强吧？</p>
<p>是这个道理的吧？</p>
<p>要随机应变，要想明白我们的目的是什么，而不是拣了芝麻丢了西瓜，每天5公里的目的是什么？</p>
<p>难道是为了每天跑5公里这个目的么？</p>
<p>最终的目的是为了减肥外加身体健康，这个才是最终的追求，所以当时没办法完成5公里，为什么不想着完成两公里、三公里就可以了呢？</p>
<p>为什么就立马选择不去了呢？</p>
<p>你跑了3公里，你就前进了一点，你什么都没跑，当天你就是收获了个寂寞啊。</p>
<p>要透过表象看问题，抓住问题的本质。</p>
<p>解决问题，不能浮于表面，像割草一样，今天长了，就割一点，改天长了又割一点，根本没有彻底解决问题。</p>
<p>解决问题就是要把草连根拔起，不给任何反复的机会。</p>
<p>解决这个跑步的问题也是一样的，不要每次都拿5公里做推脱，也不要陷入完美主义的陷阱。</p>
<p>世界上压根就没有什么是完美的，有的只是每一天的坚持，有的只是日积月累的坚持。</p>
<p>当这些积累到一定的阶段，才可以引起质变。才会真正产生作用。</p>
<p>嫉恶如仇是有问题的。会让你丧失对真相的，对利弊的判断。</p>
]]></content:encoded>
    </item>
    <item>
      <title>23-项目当前版本中修复上个版本测试反馈 Bug 的时机</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/23-%E9%A1%B9%E7%9B%AE%E5%BD%93%E5%89%8D%E7%89%88%E6%9C%AC%E4%B8%AD%E4%BF%AE%E5%A4%8D%E4%B8%8A%E4%B8%AA%E7%89%88%E6%9C%AC%E6%B5%8B%E8%AF%95%E5%8F%8D%E9%A6%88-bug-%E7%9A%84%E6%97%B6%E6%9C%BA/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/23-%E9%A1%B9%E7%9B%AE%E5%BD%93%E5%89%8D%E7%89%88%E6%9C%AC%E4%B8%AD%E4%BF%AE%E5%A4%8D%E4%B8%8A%E4%B8%AA%E7%89%88%E6%9C%AC%E6%B5%8B%E8%AF%95%E5%8F%8D%E9%A6%88-bug-%E7%9A%84%E6%97%B6%E6%9C%BA/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;项目当前版本（假设为&lt;code&gt;1.0&lt;/code&gt;）开发完成之后，会提交给测试组进行测试，然后，开始进行下一个版本（假设为&lt;code&gt;2.0&lt;/code&gt;）的研发工作。&lt;/p&gt;
&lt;p&gt;但是，测试组测试周期可能要一两个月，期间会不断的反馈 &lt;code&gt;Bug&lt;/code&gt; 到系统里，等项目当前版本（&lt;code&gt;1.0&lt;/code&gt;） &lt;code&gt;Bug&lt;/code&gt; 修复完成之后，再进行下一轮的测试。&lt;/p&gt;
&lt;p&gt;这时，项目新的版本（&lt;code&gt;2.0&lt;/code&gt;）功能开发进行中，每个人都已经有自己的开发任务了，时间也排好了，应该怎么安排？&lt;/p&gt;
&lt;p&gt;还有，在 &lt;code&gt;A&lt;/code&gt; 功能模块上修复 &lt;code&gt;Bug&lt;/code&gt;，而同时又在 &lt;code&gt;A&lt;/code&gt; 功能模块上开发新的功能，代码合并可能会冲突等等问题怎么处理？&lt;/p&gt;
&lt;h1 id=&#34;2-权衡任务调整的利弊&#34;&gt;2. 权衡任务调整的利弊&lt;/h1&gt;
&lt;p&gt;因为测试反馈 &lt;code&gt;Bug&lt;/code&gt; 数量不是一个可控的事情，有时第一轮测试完成，都没几个 &lt;code&gt;Bug&lt;/code&gt;，有时第一轮测试就反馈好几十个 &lt;code&gt;Bug&lt;/code&gt;，完全可以衍生新的任务，评估个两三天去处理。&lt;/p&gt;
&lt;p&gt;所以，如果你打算，暂停或推迟当前版本（&lt;code&gt;2.0&lt;/code&gt;）的开发任务，而去执行修复上个版本（&lt;code&gt;1.0&lt;/code&gt;）的 &lt;code&gt;Bug&lt;/code&gt; 的任务，很有可能收益不大，因为可能都没有几个 &lt;code&gt;Bug&lt;/code&gt; 让你修复。&lt;/p&gt;
&lt;p&gt;但是，如果你完全对第一轮反馈的 &lt;code&gt;Bug&lt;/code&gt; 不管不顾，又会影响到测试组的测试进度。&lt;/p&gt;
&lt;h1 id=&#34;3-基于测试周期的任务调整&#34;&gt;3. 基于测试周期的任务调整&lt;/h1&gt;
&lt;p&gt;上面说的，虽然测试反馈 &lt;code&gt;Bug&lt;/code&gt; 的个数是不可控的，但庆幸的是，测试周期是明确的，比如第一轮具体是什么时间段，第二轮又是什么时间段，这些都是前期沟通好的，虽然偶有变数，但是大体上问题不大。&lt;/p&gt;
&lt;p&gt;在这个基础之下，项目负责人就要根据测试轮次结束的时间，对当前反馈的 &lt;code&gt;Bug&lt;/code&gt; 情况，进行任务上面的调整，比如第一轮测试反馈了 &lt;code&gt;50&lt;/code&gt; 个 &lt;code&gt;Bug&lt;/code&gt;，然后按功能模块划分清楚，以及哪些功能模块对应的负责人是谁，修复这些 &lt;code&gt;Bug&lt;/code&gt; 需要多少工作量，新增一条修复 &lt;code&gt;Bug&lt;/code&gt; 的任务在项目当前版本（&lt;code&gt;2.0&lt;/code&gt;）计划中。&lt;/p&gt;
&lt;h1 id=&#34;4-测试环节的漏洞&#34;&gt;4. 测试环节的漏洞&lt;/h1&gt;
&lt;p&gt;但是，如果 &lt;code&gt;Bug&lt;/code&gt; 特别多，花费了大量的时间，甚至影响到了当前版本（&lt;code&gt;2.0&lt;/code&gt;）的开发进度怎么办？&lt;/p&gt;
&lt;p&gt;这个时候，是否需要延长修复 &lt;code&gt;Bug&lt;/code&gt; 的任务呢？&lt;/p&gt;
&lt;p&gt;缩短开发的任务时间呢？&lt;/p&gt;
&lt;p&gt;加加班？&lt;/p&gt;
&lt;p&gt;这些方式可以解决这个问题，但是，治标不治本。&lt;/p&gt;
&lt;p&gt;因为在这个功能到测试组介入参与测试时，其实，已经有过三个环节，对功能进行测试了。&lt;/p&gt;
&lt;p&gt;一个是功能开发人员自测，编写测试用例，然后对开发的功能点一一测试。&lt;/p&gt;
&lt;p&gt;另一个是功能开发任务验收，这个验收的工作就是根据功能开发人员提供的测试用例，验收人自行跑一下这个测试用例，看下有没有什么问题。&lt;/p&gt;
&lt;p&gt;最后一个是项目负责人内测，就是项目当前版本（&lt;code&gt;1.0&lt;/code&gt;）结束，要给测试组提测之前，把全部功能都测试一遍。&lt;/p&gt;
&lt;p&gt;上面这三个环节，为什么不能发现和解决掉一些很明显的 &lt;code&gt;Bug&lt;/code&gt;，而一定要测试组测试时才发现？&lt;/p&gt;
&lt;h1 id=&#34;5-优化测试流程&#34;&gt;5. 优化测试流程&lt;/h1&gt;
&lt;p&gt;理想状态下，每一轮测试都不应反馈那么多 &lt;code&gt;Bug&lt;/code&gt; 的，然后需要排两三天的时间去处理的，通过一两天差不多了，甚至在开发当前功能时抽个一天的时间解决掉就行。&lt;/p&gt;
&lt;p&gt;所以，回答项目开发中应什么时候去修复测试反馈的 &lt;code&gt;Bug&lt;/code&gt; 这个问题，那就是做好下面的流程：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>项目当前版本（假设为<code>1.0</code>）开发完成之后，会提交给测试组进行测试，然后，开始进行下一个版本（假设为<code>2.0</code>）的研发工作。</p>
<p>但是，测试组测试周期可能要一两个月，期间会不断的反馈 <code>Bug</code> 到系统里，等项目当前版本（<code>1.0</code>） <code>Bug</code> 修复完成之后，再进行下一轮的测试。</p>
<p>这时，项目新的版本（<code>2.0</code>）功能开发进行中，每个人都已经有自己的开发任务了，时间也排好了，应该怎么安排？</p>
<p>还有，在 <code>A</code> 功能模块上修复 <code>Bug</code>，而同时又在 <code>A</code> 功能模块上开发新的功能，代码合并可能会冲突等等问题怎么处理？</p>
<h1 id="2-权衡任务调整的利弊">2. 权衡任务调整的利弊</h1>
<p>因为测试反馈 <code>Bug</code> 数量不是一个可控的事情，有时第一轮测试完成，都没几个 <code>Bug</code>，有时第一轮测试就反馈好几十个 <code>Bug</code>，完全可以衍生新的任务，评估个两三天去处理。</p>
<p>所以，如果你打算，暂停或推迟当前版本（<code>2.0</code>）的开发任务，而去执行修复上个版本（<code>1.0</code>）的 <code>Bug</code> 的任务，很有可能收益不大，因为可能都没有几个 <code>Bug</code> 让你修复。</p>
<p>但是，如果你完全对第一轮反馈的 <code>Bug</code> 不管不顾，又会影响到测试组的测试进度。</p>
<h1 id="3-基于测试周期的任务调整">3. 基于测试周期的任务调整</h1>
<p>上面说的，虽然测试反馈 <code>Bug</code> 的个数是不可控的，但庆幸的是，测试周期是明确的，比如第一轮具体是什么时间段，第二轮又是什么时间段，这些都是前期沟通好的，虽然偶有变数，但是大体上问题不大。</p>
<p>在这个基础之下，项目负责人就要根据测试轮次结束的时间，对当前反馈的 <code>Bug</code> 情况，进行任务上面的调整，比如第一轮测试反馈了 <code>50</code> 个 <code>Bug</code>，然后按功能模块划分清楚，以及哪些功能模块对应的负责人是谁，修复这些 <code>Bug</code> 需要多少工作量，新增一条修复 <code>Bug</code> 的任务在项目当前版本（<code>2.0</code>）计划中。</p>
<h1 id="4-测试环节的漏洞">4. 测试环节的漏洞</h1>
<p>但是，如果 <code>Bug</code> 特别多，花费了大量的时间，甚至影响到了当前版本（<code>2.0</code>）的开发进度怎么办？</p>
<p>这个时候，是否需要延长修复 <code>Bug</code> 的任务呢？</p>
<p>缩短开发的任务时间呢？</p>
<p>加加班？</p>
<p>这些方式可以解决这个问题，但是，治标不治本。</p>
<p>因为在这个功能到测试组介入参与测试时，其实，已经有过三个环节，对功能进行测试了。</p>
<p>一个是功能开发人员自测，编写测试用例，然后对开发的功能点一一测试。</p>
<p>另一个是功能开发任务验收，这个验收的工作就是根据功能开发人员提供的测试用例，验收人自行跑一下这个测试用例，看下有没有什么问题。</p>
<p>最后一个是项目负责人内测，就是项目当前版本（<code>1.0</code>）结束，要给测试组提测之前，把全部功能都测试一遍。</p>
<p>上面这三个环节，为什么不能发现和解决掉一些很明显的 <code>Bug</code>，而一定要测试组测试时才发现？</p>
<h1 id="5-优化测试流程">5. 优化测试流程</h1>
<p>理想状态下，每一轮测试都不应反馈那么多 <code>Bug</code> 的，然后需要排两三天的时间去处理的，通过一两天差不多了，甚至在开发当前功能时抽个一天的时间解决掉就行。</p>
<p>所以，回答项目开发中应什么时候去修复测试反馈的 <code>Bug</code> 这个问题，那就是做好下面的流程：</p>
<ol>
<li>功能开发人员自测</li>
<li>功能开发任务验收</li>
<li>项目负责人内测</li>
</ol>
<p>然后，等测试哪一天测试完成之后，评估一下反馈的 <code>Bug</code> 数量，补充一条修复 <code>Bug</code> 任务，同时，变更当前的开发任务时间。</p>
<p>理论上来说，这条修复 <code>Bug</code> 的任务时间也就一天左右，最多也就两天了，除非出现突发的不可控因素。</p>
<p><strong>如果反馈的 <code>Bug</code> 特别多，需要的修复时间也很长，意味着上面三个环节压根没有做到位。</strong></p>
<h1 id="6-代码合并问题的处理">6. 代码合并问题的处理</h1>
<p>这个问题，其实可以等版本 <code>1.0</code> 的测试全部通过，发布至线上环境之后，再把 <code>1.0</code> 的代码合并到 <code>2.0</code> 的分支（即当前的 `Dev 分支），解决掉冲突就可以了。</p>
<h1 id="7-整体流程">7. 整体流程</h1>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505081008638.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>22-怎么对反馈的 Bug 进行有效管理</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/22-%E6%80%8E%E4%B9%88%E5%AF%B9%E5%8F%8D%E9%A6%88%E7%9A%84-bug-%E8%BF%9B%E8%A1%8C%E6%9C%89%E6%95%88%E7%AE%A1%E7%90%86/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/22-%E6%80%8E%E4%B9%88%E5%AF%B9%E5%8F%8D%E9%A6%88%E7%9A%84-bug-%E8%BF%9B%E8%A1%8C%E6%9C%89%E6%95%88%E7%AE%A1%E7%90%86/</guid>
      <description>&lt;p&gt;一个项目的 &lt;code&gt;Bug&lt;/code&gt; 来源是多方面的。有的是线上功能试用反馈，比如客户在使用平台功能时，发现了影响功能使用的 &lt;code&gt;Bug&lt;/code&gt;；有的是项目负责人验收任务时反馈的；还有的是测试人员反馈的。&lt;/p&gt;
&lt;p&gt;测试人员反馈的 &lt;code&gt;Bug&lt;/code&gt; 一般都记录在 &lt;code&gt;Bug&lt;/code&gt; 系统里进行管理，所以问题不大。发在沟通群里的，多个人看到了之后，会给功能负责人带来一定的约束力，通常问题也不大。&lt;/p&gt;
&lt;p&gt;最大的问题是那种私底下一对一沟通反馈的 &lt;code&gt;Bug&lt;/code&gt;。比如，项目负责人张三给项目成员李四发消息，反馈了一个功能上面的 &lt;code&gt;Bug&lt;/code&gt; ，李四说记下来了。&lt;/p&gt;
&lt;p&gt;如果李四解决了并反馈给张三，那还好；但如果李四不反馈，张三就不知道这个 &lt;code&gt;Bug&lt;/code&gt; 的状态了。除非张三主动去问，否则谁也不知道这个 &lt;code&gt;Bug&lt;/code&gt; 是否已经解决。&lt;/p&gt;
&lt;p&gt;写到这里，我不由得感叹，要做好一件事情，各方面的协作都要到位。**任何一个流程没有有效执行，都会导致后续的环节发生变化，并需及时提供相应的对策，从而使简单的问题复杂化。**所以，制定清晰的流程并传达到位，是多么的重要。&lt;/p&gt;
&lt;p&gt;首先，在推动从流程入手解决这个问题之前，要先分析一下：&lt;/p&gt;
&lt;p&gt;为什么反馈 &lt;code&gt;Bug&lt;/code&gt; 时要私底下一对一沟通呢？&lt;/p&gt;
&lt;p&gt;为什么不直接发到沟通群里呢？&lt;/p&gt;
&lt;p&gt;原因很简单，大家都是同事，低头不见抬头见。发现对方开发的功能出现了 &lt;code&gt;Bug&lt;/code&gt;，虽然不是什么大事，毕竟，谁都不能保证自己开发的功能，一个 &lt;code&gt;Bug&lt;/code&gt; 都没有。只是，发到项目沟通群里，当众指出别人的问题，不管对方心胸多么宽广，总会不高兴的，自然而然，都会觉得没必要做这种不讨好的事情，反正能解决掉这个 &lt;code&gt;Bug&lt;/code&gt; 就行，是否是私底下一对一沟通反馈，没有那么重要。&lt;/p&gt;
&lt;p&gt;我觉得换位思考，上面这样的原因是可以接受的，但是&lt;strong&gt;完全依赖人，而不是依赖流程，是不能彻底解决掉问题的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以，我们可以这样规定：&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;Bug&lt;/code&gt; 系统上进行管理，为项目创建一个对应的版本。在这个版本的开发时间段内，遇到的所有问题，以及别人反馈的 &lt;code&gt;Bug&lt;/code&gt;，都记录在这个上面，而不是私下沟通。这样虽然是公开的，但是不去看就不会知道，不像在项目沟通群里，当众处刑。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504301641476.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;因为 &lt;code&gt;Bug&lt;/code&gt; 系统是和邮件关联的。比如你是项目负责人张三，在验收李四开发的一个功能时，发现了问题123，那么就在 &lt;code&gt;Bug&lt;/code&gt; 系统记录，并分配给李四。&lt;/p&gt;
&lt;p&gt;等李四解决掉 &lt;code&gt;Bug&lt;/code&gt; 之后，就修改这个 &lt;code&gt;Bug&lt;/code&gt; 的状态为 “已解决”，张三就知道 &lt;code&gt;Bug&lt;/code&gt; 已经解决了，然后再去跟进，这样就形成了闭环。&lt;/p&gt;
&lt;p&gt;那如果张三还是不把 &lt;code&gt;Bug&lt;/code&gt; 记录到 &lt;code&gt;Bug&lt;/code&gt; 系统，或者李四解决了 &lt;code&gt;Bug&lt;/code&gt; 但没有在 &lt;code&gt;Bug&lt;/code&gt; 系统上修改状态呢？&lt;/p&gt;
&lt;p&gt;那就需要及时介入沟通了，不能听之任之。&lt;strong&gt;抓而不紧，等于不抓&lt;/strong&gt;，出现问题要第一时间解决，表明你对这件事情很重视。&lt;/p&gt;
&lt;p&gt;否则，大家都觉得可有可无，慢慢就变成做做样子应付了事，那通过流程化解决对 &lt;code&gt;Bug&lt;/code&gt; 进行有效管理的初衷就无法达成了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>一个项目的 <code>Bug</code> 来源是多方面的。有的是线上功能试用反馈，比如客户在使用平台功能时，发现了影响功能使用的 <code>Bug</code>；有的是项目负责人验收任务时反馈的；还有的是测试人员反馈的。</p>
<p>测试人员反馈的 <code>Bug</code> 一般都记录在 <code>Bug</code> 系统里进行管理，所以问题不大。发在沟通群里的，多个人看到了之后，会给功能负责人带来一定的约束力，通常问题也不大。</p>
<p>最大的问题是那种私底下一对一沟通反馈的 <code>Bug</code>。比如，项目负责人张三给项目成员李四发消息，反馈了一个功能上面的 <code>Bug</code> ，李四说记下来了。</p>
<p>如果李四解决了并反馈给张三，那还好；但如果李四不反馈，张三就不知道这个 <code>Bug</code> 的状态了。除非张三主动去问，否则谁也不知道这个 <code>Bug</code> 是否已经解决。</p>
<p>写到这里，我不由得感叹，要做好一件事情，各方面的协作都要到位。**任何一个流程没有有效执行，都会导致后续的环节发生变化，并需及时提供相应的对策，从而使简单的问题复杂化。**所以，制定清晰的流程并传达到位，是多么的重要。</p>
<p>首先，在推动从流程入手解决这个问题之前，要先分析一下：</p>
<p>为什么反馈 <code>Bug</code> 时要私底下一对一沟通呢？</p>
<p>为什么不直接发到沟通群里呢？</p>
<p>原因很简单，大家都是同事，低头不见抬头见。发现对方开发的功能出现了 <code>Bug</code>，虽然不是什么大事，毕竟，谁都不能保证自己开发的功能，一个 <code>Bug</code> 都没有。只是，发到项目沟通群里，当众指出别人的问题，不管对方心胸多么宽广，总会不高兴的，自然而然，都会觉得没必要做这种不讨好的事情，反正能解决掉这个 <code>Bug</code> 就行，是否是私底下一对一沟通反馈，没有那么重要。</p>
<p>我觉得换位思考，上面这样的原因是可以接受的，但是<strong>完全依赖人，而不是依赖流程，是不能彻底解决掉问题的。</strong></p>
<p>所以，我们可以这样规定：</p>
<p>在 <code>Bug</code> 系统上进行管理，为项目创建一个对应的版本。在这个版本的开发时间段内，遇到的所有问题，以及别人反馈的 <code>Bug</code>，都记录在这个上面，而不是私下沟通。这样虽然是公开的，但是不去看就不会知道，不像在项目沟通群里，当众处刑。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504301641476.png"></p>
<p>因为 <code>Bug</code> 系统是和邮件关联的。比如你是项目负责人张三，在验收李四开发的一个功能时，发现了问题123，那么就在 <code>Bug</code> 系统记录，并分配给李四。</p>
<p>等李四解决掉 <code>Bug</code> 之后，就修改这个 <code>Bug</code> 的状态为 “已解决”，张三就知道 <code>Bug</code> 已经解决了，然后再去跟进，这样就形成了闭环。</p>
<p>那如果张三还是不把 <code>Bug</code> 记录到 <code>Bug</code> 系统，或者李四解决了 <code>Bug</code> 但没有在 <code>Bug</code> 系统上修改状态呢？</p>
<p>那就需要及时介入沟通了，不能听之任之。<strong>抓而不紧，等于不抓</strong>，出现问题要第一时间解决，表明你对这件事情很重视。</p>
<p>否则，大家都觉得可有可无，慢慢就变成做做样子应付了事，那通过流程化解决对 <code>Bug</code> 进行有效管理的初衷就无法达成了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《山音》读后感</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%B1%B1%E9%9F%B3%E8%AF%BB%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%B1%B1%E9%9F%B3%E8%AF%BB%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291914643.jpg&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h1 id=&#34;读后感&#34;&gt;读后感&lt;/h1&gt;
&lt;p&gt;《山音》是川端康成于1949年至1954年创作的长篇小说，以战后日本家庭为背景，通过老年视角探讨生死与孤独。&lt;/p&gt;
&lt;p&gt;尽管我一直说川端康成是我最喜欢的日本作家，但他的作品我看得并不多，只有《雪国》被我反复阅读。&lt;/p&gt;
&lt;p&gt;为什么他的作品看得不多，我却如此笃定他就是我最喜欢的日本作家呢？其实很简单，我本来也没看过几个日本作家的作品（笑），东野圭吾的作品看得多一些，剩下的就是村上春树的了。而《雪国》在我心中一直是神一般的存在，所以最喜欢之名非川端康成莫属了。&lt;/p&gt;
&lt;p&gt;川端康成的作品，比如《古都》《千只鹤》《伊豆的舞女》等，一直在我待看的阅读名单之中，只是都没有去看，感觉看川端康成的作品需要一点耐心。如果不是他的忠实读者，可能会觉得他的作品故事性不强，没有什么看头，都是些鸡毛蒜皮的事情，甚至觉得无聊至极，哪有推理小说反转反转又反转来得刺激。&lt;/p&gt;
&lt;p&gt;然而，川端康成的文字魅力在于对大自然景色的细腻描绘和遣词造句的美感，这种文风真的可以沁人心脾，让人流连忘返。他的作品中没有什么大喜大悲，只是淡淡的哀愁，就好像在冰冷的月轮之下，静静拂过晚风的群山，给人一种静谧而深沉的孤寂之感。&lt;/p&gt;
&lt;p&gt;我最初被《山音》吸引，是因为它的书名和封面，于是决定看一看。&lt;/p&gt;
&lt;p&gt;因为对川端康成的生平有所了解，所以在阅读过程中，很多细枝末节的东西，在他人看来稀松平常，却容易让我产生联想。比如开头不久就出现的“氰化钾”，我心里愣了一下，就想起川端康成的自杀。他选择了口含煤气管的方式结束生命，并留下这样一句话：“无言的死，就是无限的活。”这句话也道出了他对死亡的独特看法。&lt;/p&gt;
&lt;p&gt;接着，书中男主人公信吾说要解决老了糊涂的问题，甚至提出是否可以把脑袋砍下来，然后去医院洗一下。这个想法让我想起了三岛由纪夫的死法。当年在了解整个过程之后，差点一整周都吃不下饭，每每想起都忍不住干呕，着实太过于离谱了。&lt;/p&gt;
&lt;p&gt;三岛纪由夫就是个神经病，其实是三岛由纪夫，不知道为什么我一直叫错这个名字。&lt;/p&gt;
&lt;p&gt;三岛由纪夫是川端康成推荐出道的，后来在文学上造诣颇深，在文坛上也颇有名气，与川端康成亦师亦友。然而，他是个狂热的军事帝国主义右翼分子，崇尚武士道精神，力图复辟军事帝国主义。他狂爱健身，一身肌肉腱子，但后来基本属于精神错乱类型了，组织了私人武装“盾会”，绑架军官，并发表演讲企图发起政变，但没人鸟他。&lt;/p&gt;
&lt;p&gt;最终，他以日本传统艺能剖腹自杀的方式明志，“盾会”其他成员充当介错人，可惜砍了几次没成功，差点要咬舌自尽，最后换了个人才彻底了结。&lt;/p&gt;
&lt;p&gt;事后，川端康成还到现场去了，虽然没看到三岛由纪夫的尸身，但现场的惨状令人难以想象，一个七十多岁的老人看到那一幕，不知道应该是什么样的心情。&lt;/p&gt;
&lt;p&gt;川端康成一直很后悔没有把三岛由纪夫劝到正途，觉得自己没有尽到前辈的义务。他一直念叨“被砍头的应该是我”，总觉得是自己一直以来关于死亡的探讨，影响到了三岛由纪夫，才会让他变得如此极端。&lt;/p&gt;
&lt;p&gt;这件事情，估计也给川端康成后来的自杀埋下了伏笔。本来他的晚年生活就郁郁寡欢，一直与孤独为伴，再遇到这种事情，身心俱疲在所难免。&lt;/p&gt;
&lt;p&gt;三岛由纪夫虽然有很多评价很高的作品，但我总觉得脑子不太正常的人，其作品也难以引起我的兴趣。类似的还有顾城，他的这句“黑夜给了我一双黑色的眼睛，而我却用它来寻找光明。”也曾激励着很多人，但在了解他的生平以及最后做出的那些残忍的事情后，我基本没兴趣去看他的作品了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291929226.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;说回《山音》这部作品，在阅读过程中，我其实有点郁闷，因为里面描写了太多信吾和菊子之间很细腻的交流方式，感觉有点过界了。&lt;/p&gt;
&lt;p&gt;“扒灰？”&lt;/p&gt;
&lt;p&gt;当时我心里就想着，不是吧，这两个字从脑袋蹦出来的时候，就让我想起了《红楼梦》里焦大醉骂的那句“爬灰的爬灰，养小叔子的养小叔子。”贾宝玉还问王熙凤“爬灰是啥意思？”结果被王熙凤骂了个狗血淋头，笑死个人。&lt;/p&gt;
&lt;p&gt;我心里暗自祈祷，千万不要往贾珍和秦可卿方向发展啊喂，那可真是三观尽碎，看不下去了。好在看完之后，我才幡然醒悟。其实这和《雪国》一脉相传，不管是信吾的白月光——保子的姐姐，还是菊子，或者英子，还是各种子吧，这些人物都只是信吾对死亡的恐惧而延伸的对生的贪恋的具象化产物，而这贪恋开始慢慢扭曲到不能自已，甚至常年噩梦不止。这种手法在《湖》中也有使用，通过大丑脚的男子银平与美丽动人的少女的强烈对比，表现出对美好事物的追求。所以，扒灰什么的并不存在，只是对死亡的恐惧与对生的贪恋，心里已经有点扭曲了，分不清梦境和现实了，而信吾也深知这一点。&lt;/p&gt;
&lt;p&gt;我之前常开玩笑说，东野圭吾笔下的女人没一个好东西，但川端康成笔下的女人却是另一个极端。在川端康成的作品中，每个女性角色，无论美丑、青春与年老、清冷还是热情，都各有特色。她们并非十全十美，但个个都是活生生、很立体的人物，充分展现了女性特有的风采，真是有意思。&lt;/p&gt;
&lt;p&gt;说到这种感觉，韩寒镜头下的女人也给我留下了深刻的印象，《后会无期》里的王珞丹，《乘风破浪》里的赵丽颖，都拍得挺美，挺有质感的，至少她们在其他电影或电视剧里，没给我眼前一亮的感觉。不得不说柯达还挺会拍女人的。&lt;/p&gt;
&lt;p&gt;关于死亡的话题，人们一直以来都习惯于缄口不言。&lt;/p&gt;
&lt;p&gt;在《山音》中，信吾不断地面临着身边友人的离世，这进一步加剧了他对死亡的恐惧。川端康成的一生与死亡紧密相连，他不断经历亲友的离世，甚至被称为“葬礼上的名人”，内心的创伤不断加深。同样，NBA球星麦迪在职业生涯早期，似乎也一直在参加亲朋好友的葬礼。虽然不敢武断地将他的惺忪睡眼与之直接关联，但那种忧郁的气质想必也与频繁面对死亡的经历脱不了干系吧。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291945794.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在这死亡的探讨之中，有几处情节让我感触颇深。北本因为头发白，发疯似的拔掉白发，以为这样就可以长出黑发，变回年轻，最后拔光头发，终于发疯了也就死掉了。还有一个是因为信吾的工厂是生产氰化钾的，所以友人说可以自由地选择死亡的方式，等哪天想不开，找信吾要下氰化钾就行了。但信吾却不这样认为，他坚称自己是不会这样的：&lt;/p&gt;
&lt;p&gt;“一想到只要有了自由，随时都可以行事，就可以产生一股忍受今后痛苦的力量。”&lt;/p&gt;
&lt;p&gt;这句话让我想起了前段时间琼瑶的离世。她在离世之前写了亲笔信，道出了自己这样选择的前因后果，以及对死亡的看法。她不想接受备受疾病折磨的结局，而是选择了一个敢于面对终点的人生。&lt;/p&gt;
&lt;p&gt;但我认为，不同的人生会有不同的选择，但更多的是无从选择，只能做好当下的每一件事情，不管是如何糟糕的境地，都能从中探寻到一些星火。&lt;/p&gt;
&lt;p&gt;在《入殓师》电影中，小林大悟一直在不断地面对死亡，每天都是冰冷的触感，那种冰冷就好像针一样刺痛着他的神经，如同将他全身的灵魂都抽离了一般。所以，当他回到家中的时候，一直死命地抱着自己的妻子，那种对生命的渴望，那种对心跳和体温的留恋，边抱着边哭，这一幕给我留下了特别深刻的印象。&lt;/p&gt;
&lt;p&gt;怎么看待死亡？或许可以用《入殓师》的台词来回答这个问题。&lt;/p&gt;
&lt;p&gt;“在这里工作得越久，渐渐地我就越相信，死亡，其实就是一扇门，它并不意味着一个生命的结束，而是穿过它，进入另一阶段的一扇门。而我呢，就是守门人，送人们穿过那扇门，并对他们说，路上小心，我们后会有期。”&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291953037.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;从某些迹象来看，我一直怀疑英子才是修一的情妇，而绢子是杜撰的人物。看到最后，我还真以为会有一个反转，但并没有如我所愿。所以，我还是手动转换话题，结束关于死亡的讨论吧。&lt;/p&gt;
&lt;p&gt;“冬天的旭日泼洒下恍如经过一阵春雨濡湿的暖和的辉光。”&lt;/p&gt;
&lt;p&gt;这句是《山音》这本书中我很喜欢的句子。川端康成对美的追求，以及细腻的笔触，勾勒出冬季里的暖阳，带来一种带有温度的冰冷触感。他的一生充满了悲凉和孤独，整本书都弥漫着这种曲调。&lt;/p&gt;
&lt;p&gt;但我还是想说，在体会这种情感在肝肠之间百转千回，在感受这种悲伤注入血液并在全身蔓延时，我深信：在物哀、破碎、绝望与唯美这些构成的美感之中，同样能够孕育出希望的种子，指引我们发现生活中的积极之美，就好像那一次：&lt;/p&gt;
&lt;p&gt;“凌晨四点醒来，发现海棠花未眠。”&lt;/p&gt;
&lt;h1 id=&#34;摘抄&#34;&gt;摘抄&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;夏日夕雾迷茫，海上风平浪静。&lt;/li&gt;
&lt;li&gt;英子是不是企图通过赞美那同居的女伴，达到间接贬低修一的情人的目的呢？她的真心实在难以捉摸。&lt;/li&gt;
&lt;li&gt;梦中的时间是不可思议的。&lt;/li&gt;
&lt;li&gt;水田把先逝的鸟山当作了笑料，如今别人也把水田的死当作了笑柄。&lt;/li&gt;
&lt;li&gt;人们说面具眼睛朝下，面带愁容，表情显得忧郁；眼睛朝上，面部生辉，表情就显得明朗。让它左右活动，据说是表示心潮的起伏。&lt;/li&gt;
&lt;li&gt;连续出现一系列怪事，诸如在梦中拥抱姑娘，觉得戴面具的英子可爱，几乎要同慈童面具接吻等等，莫非自己心中隐藏着一种游荡的东西？信吾落入了沉思。&lt;/li&gt;
&lt;li&gt;狗崽成了宗达的画中物，慈童面具成了现实中的女人，或许这两种情况的颠倒也是一种偶然的启示呢。&lt;/li&gt;
&lt;li&gt;唔。平凡人的生涯就是今年也要活下去，以便能再见到新年的小沙丁鱼干和青鱼子干呀。许多人不是都死了吗？&lt;/li&gt;
&lt;li&gt;不过，一个女人不会让别的女人妒忌，男人是不是觉得她有点美中不足呢？&lt;/li&gt;
&lt;li&gt;恍如海啸的是山上的暴风雨声，又有一种尖锐的风雨声盖过这声音迫近过来。&lt;/li&gt;
&lt;li&gt;冬天的旭日泼洒下恍如经过一阵春雨濡湿的暖和的辉光。&lt;/li&gt;
&lt;li&gt;染发只是一种掩饰。有掩饰真相的念头，我们就不会出现像北本那样的奇迹。&lt;/li&gt;
&lt;li&gt;不自然的奇迹是不会持久的。北本拔白发，也许是反抗年龄的流逝，反抗没落的命运。不过，寿命看来又是另一码事。头发虽然变黑了，寿命却不能延长。或许是相反。继白发之后又长出黑发来，因此而消耗了大量的精力，也许这才缩短了寿命呢。但是，北本的拼死冒险，对我们来说也不是毫不相干的。&lt;/li&gt;
&lt;li&gt;假如北本过世是事实，那么他过世之前白发变成黑发这件事，大概也是事实吧。假如长出黑发来是事实，那么长黑发之前他疯了，大概也是事实吧。假如疯了是事实，那么在疯之前他把头发都拔光，大概也是事实吧。假如把头发拔光是事实，那么照镜子时他眼看着头发变白了，大概也是事实吧。这样看来，友人的话岂不都是事实吗？信吾不寒而栗。&lt;/li&gt;
&lt;li&gt;一个老人竟如此轻薄而残酷地议论已故老人的传闻，信吾总觉得不是滋味。&lt;/li&gt;
&lt;li&gt;太太无论怎么好，她丈夫也没有在战争中死去啊。&lt;/li&gt;
&lt;li&gt;菊子是修一的受害者，同时也是修一的赦免者。&lt;/li&gt;
&lt;li&gt;心中所想的事，不由得变成自语了。&lt;/li&gt;
&lt;li&gt;所谓妻子的自觉，就是从面对丈夫的丑恶行为开始的吧。&lt;/li&gt;
&lt;li&gt;信吾记得，过去从友人那里听说过，向男人坦白这些事，对女人来说是绝对需要的。如果女人另有情夫，让她坦白这种事，她是会犹豫的。&lt;/li&gt;
&lt;li&gt;惧怕战争灾难的年轻学生如若渴望和平，不彻底贯彻甘地式的不抵抗主义是不行的。&lt;/li&gt;
&lt;li&gt;是长年陪伴，成为一体同心了？还是老妻连个性和遗言都丧失殆尽了呢？&lt;/li&gt;
&lt;li&gt;妻子本来没有理由要去死，却为丈夫的自杀而殉身，让丈夫把自己所要说的那份话也包含在遗言中，难道她就没有什么可留恋、可后悔、可迷惘的吗？真不可思议。&lt;/li&gt;
&lt;li&gt;什么也不言语，只顾伴随男人去死的女人——偶尔也有男女倒过来的，不过大多数是女人跟随——这样的女人如今已经老朽，并且就在自己身边，信吾有点惊恐了。&lt;/li&gt;
&lt;li&gt;在众人爱戴之中消失。&lt;/li&gt;
&lt;li&gt;难遇得以今相遇，难闻得以今相闻。&lt;/li&gt;
&lt;li&gt;没能帮助相原免于堕落的责任在房子吗？在信吾吗？在相原自己吗？还是责任不在于任何人呢？信吾把视线投向暮色苍茫的庭院。&lt;/li&gt;
&lt;li&gt;飞鸟掠过六乡川熠熠生辉的流水，身上也闪烁着银光。红色的公共汽车从北边的桥上奔驰而过，看上去似非偶然。&lt;/li&gt;
&lt;li&gt;乔木茂密而浓重的绿韵，仿佛洒落在菊子那纤细的后脖颈上。&lt;/li&gt;
&lt;li&gt;信吾回想起四五天前在友人家中观赏过的渡边华山的水墨画。画的是一只乌鸦落在枯木的顶梢上。画题是：“乌鸦掠过五月雨，顽强攀登迎黎明。”读了这首诗，信吾似乎明白了这幅画的意思，也体会了华山的心情。&lt;/li&gt;
&lt;li&gt;不过老兄，倘使像华山那样为区区小事动不动就剖腹自杀，我们该不知要剖腹自杀多少回啦。&lt;/li&gt;
&lt;li&gt;对任何人的幸福，自己都无能为力。&lt;/li&gt;
&lt;li&gt;在信吾这伙年过花甲之人的聚会上，衰老的毛病和不治之症的恐怖每每都会变成话题。&lt;/li&gt;
&lt;li&gt;因为让这种悲惨的疾病的痛苦长期折磨下去，实在是太凄凉了。再说，既然已经被宣判了死期，就希望自己有选择死期的自由。&lt;/li&gt;
&lt;li&gt;一想到只要有了自由，随时都可以行事，就可以产生一股忍受今后痛苦的力量。&lt;/li&gt;
&lt;li&gt;停在不是站台的地方。&lt;/li&gt;
&lt;li&gt;男人自暴自弃，使女人简直束手无策，真让女人无法接近哩。要是遭到遗弃还忍耐下去，那房子就只好同孩子们一起自杀。男人就是在走投无路的时候，还有别的女人跟他一道殉死，也许他还不是不可救药。&lt;/li&gt;
&lt;li&gt;绢子反抗说，那不是修一的孩子。生不生，她是不会接受信吾的干涉的。是不是修一的孩子，信吾虽然不得而知，但总觉得她是故意这样说的。&lt;/li&gt;
&lt;li&gt;人真的不能埋在地下憩息吗？过了五万年再起来，或许自己的困难、社会的难题都早已完全解决，世界变成乐园了。&lt;/li&gt;
&lt;li&gt;红花令人联想到秋野恬静的清晨。&lt;/li&gt;
&lt;li&gt;方才忘记结法的事就像是谎言似的。&lt;/li&gt;
&lt;li&gt;她身穿带垫肩的瘦长的蓝大衣，线条从肩流泻而下，一副柔媚而洒脱的姿态。&lt;/li&gt;
&lt;li&gt;人世间竟有这样酷似的人，甚至令人觉得他们只能是父女关系。不过，这种情况并不多。对那个姑娘来说，恐怕只有这个男人与她这么酷似；对这个男人来说，恐怕也只有这个女子与他这么酷似。彼此都只限于一个人，或者说人世间像他们两人这样的例子仅有这一对。两人毫不相干地生存，做梦也不会想到对方的存在。&lt;/li&gt;
&lt;li&gt;这两人突然同乘一辆电车。初次邂逅之后，大概也不可能再次相遇了吧。在漫长的人生道路上，仅仅相遇了三十分钟，而且也没有交谈就分手了。尽管相邻而坐，然而也没有相互瞧瞧，大概两人也没有发现彼此是如此相似吧。奇迹般的人，不知道自己的奇迹就离去了。&lt;/li&gt;
&lt;li&gt;战争年代跟和平时期不一样。&lt;/li&gt;
&lt;li&gt;那女孩子有点与众不同，爸爸才悄悄地感到她有魅力，才会没完没了地产生各种奇妙的念头。一个女人总要跟别的女人有所不同，才能吸引男子嘛。&lt;/li&gt;
&lt;li&gt;她那从下巴颏儿到脖颈的线条优美得无法形容。&lt;/li&gt;
&lt;li&gt;从下巴颏儿到脖颈的线条还飘逸着菊子那少女般的风采。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291914643.jpg" style="zoom:50%;" />
<h1 id="读后感">读后感</h1>
<p>《山音》是川端康成于1949年至1954年创作的长篇小说，以战后日本家庭为背景，通过老年视角探讨生死与孤独。</p>
<p>尽管我一直说川端康成是我最喜欢的日本作家，但他的作品我看得并不多，只有《雪国》被我反复阅读。</p>
<p>为什么他的作品看得不多，我却如此笃定他就是我最喜欢的日本作家呢？其实很简单，我本来也没看过几个日本作家的作品（笑），东野圭吾的作品看得多一些，剩下的就是村上春树的了。而《雪国》在我心中一直是神一般的存在，所以最喜欢之名非川端康成莫属了。</p>
<p>川端康成的作品，比如《古都》《千只鹤》《伊豆的舞女》等，一直在我待看的阅读名单之中，只是都没有去看，感觉看川端康成的作品需要一点耐心。如果不是他的忠实读者，可能会觉得他的作品故事性不强，没有什么看头，都是些鸡毛蒜皮的事情，甚至觉得无聊至极，哪有推理小说反转反转又反转来得刺激。</p>
<p>然而，川端康成的文字魅力在于对大自然景色的细腻描绘和遣词造句的美感，这种文风真的可以沁人心脾，让人流连忘返。他的作品中没有什么大喜大悲，只是淡淡的哀愁，就好像在冰冷的月轮之下，静静拂过晚风的群山，给人一种静谧而深沉的孤寂之感。</p>
<p>我最初被《山音》吸引，是因为它的书名和封面，于是决定看一看。</p>
<p>因为对川端康成的生平有所了解，所以在阅读过程中，很多细枝末节的东西，在他人看来稀松平常，却容易让我产生联想。比如开头不久就出现的“氰化钾”，我心里愣了一下，就想起川端康成的自杀。他选择了口含煤气管的方式结束生命，并留下这样一句话：“无言的死，就是无限的活。”这句话也道出了他对死亡的独特看法。</p>
<p>接着，书中男主人公信吾说要解决老了糊涂的问题，甚至提出是否可以把脑袋砍下来，然后去医院洗一下。这个想法让我想起了三岛由纪夫的死法。当年在了解整个过程之后，差点一整周都吃不下饭，每每想起都忍不住干呕，着实太过于离谱了。</p>
<p>三岛纪由夫就是个神经病，其实是三岛由纪夫，不知道为什么我一直叫错这个名字。</p>
<p>三岛由纪夫是川端康成推荐出道的，后来在文学上造诣颇深，在文坛上也颇有名气，与川端康成亦师亦友。然而，他是个狂热的军事帝国主义右翼分子，崇尚武士道精神，力图复辟军事帝国主义。他狂爱健身，一身肌肉腱子，但后来基本属于精神错乱类型了，组织了私人武装“盾会”，绑架军官，并发表演讲企图发起政变，但没人鸟他。</p>
<p>最终，他以日本传统艺能剖腹自杀的方式明志，“盾会”其他成员充当介错人，可惜砍了几次没成功，差点要咬舌自尽，最后换了个人才彻底了结。</p>
<p>事后，川端康成还到现场去了，虽然没看到三岛由纪夫的尸身，但现场的惨状令人难以想象，一个七十多岁的老人看到那一幕，不知道应该是什么样的心情。</p>
<p>川端康成一直很后悔没有把三岛由纪夫劝到正途，觉得自己没有尽到前辈的义务。他一直念叨“被砍头的应该是我”，总觉得是自己一直以来关于死亡的探讨，影响到了三岛由纪夫，才会让他变得如此极端。</p>
<p>这件事情，估计也给川端康成后来的自杀埋下了伏笔。本来他的晚年生活就郁郁寡欢，一直与孤独为伴，再遇到这种事情，身心俱疲在所难免。</p>
<p>三岛由纪夫虽然有很多评价很高的作品，但我总觉得脑子不太正常的人，其作品也难以引起我的兴趣。类似的还有顾城，他的这句“黑夜给了我一双黑色的眼睛，而我却用它来寻找光明。”也曾激励着很多人，但在了解他的生平以及最后做出的那些残忍的事情后，我基本没兴趣去看他的作品了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291929226.jpg"></p>
<p>说回《山音》这部作品，在阅读过程中，我其实有点郁闷，因为里面描写了太多信吾和菊子之间很细腻的交流方式，感觉有点过界了。</p>
<p>“扒灰？”</p>
<p>当时我心里就想着，不是吧，这两个字从脑袋蹦出来的时候，就让我想起了《红楼梦》里焦大醉骂的那句“爬灰的爬灰，养小叔子的养小叔子。”贾宝玉还问王熙凤“爬灰是啥意思？”结果被王熙凤骂了个狗血淋头，笑死个人。</p>
<p>我心里暗自祈祷，千万不要往贾珍和秦可卿方向发展啊喂，那可真是三观尽碎，看不下去了。好在看完之后，我才幡然醒悟。其实这和《雪国》一脉相传，不管是信吾的白月光——保子的姐姐，还是菊子，或者英子，还是各种子吧，这些人物都只是信吾对死亡的恐惧而延伸的对生的贪恋的具象化产物，而这贪恋开始慢慢扭曲到不能自已，甚至常年噩梦不止。这种手法在《湖》中也有使用，通过大丑脚的男子银平与美丽动人的少女的强烈对比，表现出对美好事物的追求。所以，扒灰什么的并不存在，只是对死亡的恐惧与对生的贪恋，心里已经有点扭曲了，分不清梦境和现实了，而信吾也深知这一点。</p>
<p>我之前常开玩笑说，东野圭吾笔下的女人没一个好东西，但川端康成笔下的女人却是另一个极端。在川端康成的作品中，每个女性角色，无论美丑、青春与年老、清冷还是热情，都各有特色。她们并非十全十美，但个个都是活生生、很立体的人物，充分展现了女性特有的风采，真是有意思。</p>
<p>说到这种感觉，韩寒镜头下的女人也给我留下了深刻的印象，《后会无期》里的王珞丹，《乘风破浪》里的赵丽颖，都拍得挺美，挺有质感的，至少她们在其他电影或电视剧里，没给我眼前一亮的感觉。不得不说柯达还挺会拍女人的。</p>
<p>关于死亡的话题，人们一直以来都习惯于缄口不言。</p>
<p>在《山音》中，信吾不断地面临着身边友人的离世，这进一步加剧了他对死亡的恐惧。川端康成的一生与死亡紧密相连，他不断经历亲友的离世，甚至被称为“葬礼上的名人”，内心的创伤不断加深。同样，NBA球星麦迪在职业生涯早期，似乎也一直在参加亲朋好友的葬礼。虽然不敢武断地将他的惺忪睡眼与之直接关联，但那种忧郁的气质想必也与频繁面对死亡的经历脱不了干系吧。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291945794.png"></p>
<p>在这死亡的探讨之中，有几处情节让我感触颇深。北本因为头发白，发疯似的拔掉白发，以为这样就可以长出黑发，变回年轻，最后拔光头发，终于发疯了也就死掉了。还有一个是因为信吾的工厂是生产氰化钾的，所以友人说可以自由地选择死亡的方式，等哪天想不开，找信吾要下氰化钾就行了。但信吾却不这样认为，他坚称自己是不会这样的：</p>
<p>“一想到只要有了自由，随时都可以行事，就可以产生一股忍受今后痛苦的力量。”</p>
<p>这句话让我想起了前段时间琼瑶的离世。她在离世之前写了亲笔信，道出了自己这样选择的前因后果，以及对死亡的看法。她不想接受备受疾病折磨的结局，而是选择了一个敢于面对终点的人生。</p>
<p>但我认为，不同的人生会有不同的选择，但更多的是无从选择，只能做好当下的每一件事情，不管是如何糟糕的境地，都能从中探寻到一些星火。</p>
<p>在《入殓师》电影中，小林大悟一直在不断地面对死亡，每天都是冰冷的触感，那种冰冷就好像针一样刺痛着他的神经，如同将他全身的灵魂都抽离了一般。所以，当他回到家中的时候，一直死命地抱着自己的妻子，那种对生命的渴望，那种对心跳和体温的留恋，边抱着边哭，这一幕给我留下了特别深刻的印象。</p>
<p>怎么看待死亡？或许可以用《入殓师》的台词来回答这个问题。</p>
<p>“在这里工作得越久，渐渐地我就越相信，死亡，其实就是一扇门，它并不意味着一个生命的结束，而是穿过它，进入另一阶段的一扇门。而我呢，就是守门人，送人们穿过那扇门，并对他们说，路上小心，我们后会有期。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504291953037.jpg"></p>
<p>从某些迹象来看，我一直怀疑英子才是修一的情妇，而绢子是杜撰的人物。看到最后，我还真以为会有一个反转，但并没有如我所愿。所以，我还是手动转换话题，结束关于死亡的讨论吧。</p>
<p>“冬天的旭日泼洒下恍如经过一阵春雨濡湿的暖和的辉光。”</p>
<p>这句是《山音》这本书中我很喜欢的句子。川端康成对美的追求，以及细腻的笔触，勾勒出冬季里的暖阳，带来一种带有温度的冰冷触感。他的一生充满了悲凉和孤独，整本书都弥漫着这种曲调。</p>
<p>但我还是想说，在体会这种情感在肝肠之间百转千回，在感受这种悲伤注入血液并在全身蔓延时，我深信：在物哀、破碎、绝望与唯美这些构成的美感之中，同样能够孕育出希望的种子，指引我们发现生活中的积极之美，就好像那一次：</p>
<p>“凌晨四点醒来，发现海棠花未眠。”</p>
<h1 id="摘抄">摘抄</h1>
<ol>
<li>夏日夕雾迷茫，海上风平浪静。</li>
<li>英子是不是企图通过赞美那同居的女伴，达到间接贬低修一的情人的目的呢？她的真心实在难以捉摸。</li>
<li>梦中的时间是不可思议的。</li>
<li>水田把先逝的鸟山当作了笑料，如今别人也把水田的死当作了笑柄。</li>
<li>人们说面具眼睛朝下，面带愁容，表情显得忧郁；眼睛朝上，面部生辉，表情就显得明朗。让它左右活动，据说是表示心潮的起伏。</li>
<li>连续出现一系列怪事，诸如在梦中拥抱姑娘，觉得戴面具的英子可爱，几乎要同慈童面具接吻等等，莫非自己心中隐藏着一种游荡的东西？信吾落入了沉思。</li>
<li>狗崽成了宗达的画中物，慈童面具成了现实中的女人，或许这两种情况的颠倒也是一种偶然的启示呢。</li>
<li>唔。平凡人的生涯就是今年也要活下去，以便能再见到新年的小沙丁鱼干和青鱼子干呀。许多人不是都死了吗？</li>
<li>不过，一个女人不会让别的女人妒忌，男人是不是觉得她有点美中不足呢？</li>
<li>恍如海啸的是山上的暴风雨声，又有一种尖锐的风雨声盖过这声音迫近过来。</li>
<li>冬天的旭日泼洒下恍如经过一阵春雨濡湿的暖和的辉光。</li>
<li>染发只是一种掩饰。有掩饰真相的念头，我们就不会出现像北本那样的奇迹。</li>
<li>不自然的奇迹是不会持久的。北本拔白发，也许是反抗年龄的流逝，反抗没落的命运。不过，寿命看来又是另一码事。头发虽然变黑了，寿命却不能延长。或许是相反。继白发之后又长出黑发来，因此而消耗了大量的精力，也许这才缩短了寿命呢。但是，北本的拼死冒险，对我们来说也不是毫不相干的。</li>
<li>假如北本过世是事实，那么他过世之前白发变成黑发这件事，大概也是事实吧。假如长出黑发来是事实，那么长黑发之前他疯了，大概也是事实吧。假如疯了是事实，那么在疯之前他把头发都拔光，大概也是事实吧。假如把头发拔光是事实，那么照镜子时他眼看着头发变白了，大概也是事实吧。这样看来，友人的话岂不都是事实吗？信吾不寒而栗。</li>
<li>一个老人竟如此轻薄而残酷地议论已故老人的传闻，信吾总觉得不是滋味。</li>
<li>太太无论怎么好，她丈夫也没有在战争中死去啊。</li>
<li>菊子是修一的受害者，同时也是修一的赦免者。</li>
<li>心中所想的事，不由得变成自语了。</li>
<li>所谓妻子的自觉，就是从面对丈夫的丑恶行为开始的吧。</li>
<li>信吾记得，过去从友人那里听说过，向男人坦白这些事，对女人来说是绝对需要的。如果女人另有情夫，让她坦白这种事，她是会犹豫的。</li>
<li>惧怕战争灾难的年轻学生如若渴望和平，不彻底贯彻甘地式的不抵抗主义是不行的。</li>
<li>是长年陪伴，成为一体同心了？还是老妻连个性和遗言都丧失殆尽了呢？</li>
<li>妻子本来没有理由要去死，却为丈夫的自杀而殉身，让丈夫把自己所要说的那份话也包含在遗言中，难道她就没有什么可留恋、可后悔、可迷惘的吗？真不可思议。</li>
<li>什么也不言语，只顾伴随男人去死的女人——偶尔也有男女倒过来的，不过大多数是女人跟随——这样的女人如今已经老朽，并且就在自己身边，信吾有点惊恐了。</li>
<li>在众人爱戴之中消失。</li>
<li>难遇得以今相遇，难闻得以今相闻。</li>
<li>没能帮助相原免于堕落的责任在房子吗？在信吾吗？在相原自己吗？还是责任不在于任何人呢？信吾把视线投向暮色苍茫的庭院。</li>
<li>飞鸟掠过六乡川熠熠生辉的流水，身上也闪烁着银光。红色的公共汽车从北边的桥上奔驰而过，看上去似非偶然。</li>
<li>乔木茂密而浓重的绿韵，仿佛洒落在菊子那纤细的后脖颈上。</li>
<li>信吾回想起四五天前在友人家中观赏过的渡边华山的水墨画。画的是一只乌鸦落在枯木的顶梢上。画题是：“乌鸦掠过五月雨，顽强攀登迎黎明。”读了这首诗，信吾似乎明白了这幅画的意思，也体会了华山的心情。</li>
<li>不过老兄，倘使像华山那样为区区小事动不动就剖腹自杀，我们该不知要剖腹自杀多少回啦。</li>
<li>对任何人的幸福，自己都无能为力。</li>
<li>在信吾这伙年过花甲之人的聚会上，衰老的毛病和不治之症的恐怖每每都会变成话题。</li>
<li>因为让这种悲惨的疾病的痛苦长期折磨下去，实在是太凄凉了。再说，既然已经被宣判了死期，就希望自己有选择死期的自由。</li>
<li>一想到只要有了自由，随时都可以行事，就可以产生一股忍受今后痛苦的力量。</li>
<li>停在不是站台的地方。</li>
<li>男人自暴自弃，使女人简直束手无策，真让女人无法接近哩。要是遭到遗弃还忍耐下去，那房子就只好同孩子们一起自杀。男人就是在走投无路的时候，还有别的女人跟他一道殉死，也许他还不是不可救药。</li>
<li>绢子反抗说，那不是修一的孩子。生不生，她是不会接受信吾的干涉的。是不是修一的孩子，信吾虽然不得而知，但总觉得她是故意这样说的。</li>
<li>人真的不能埋在地下憩息吗？过了五万年再起来，或许自己的困难、社会的难题都早已完全解决，世界变成乐园了。</li>
<li>红花令人联想到秋野恬静的清晨。</li>
<li>方才忘记结法的事就像是谎言似的。</li>
<li>她身穿带垫肩的瘦长的蓝大衣，线条从肩流泻而下，一副柔媚而洒脱的姿态。</li>
<li>人世间竟有这样酷似的人，甚至令人觉得他们只能是父女关系。不过，这种情况并不多。对那个姑娘来说，恐怕只有这个男人与她这么酷似；对这个男人来说，恐怕也只有这个女子与他这么酷似。彼此都只限于一个人，或者说人世间像他们两人这样的例子仅有这一对。两人毫不相干地生存，做梦也不会想到对方的存在。</li>
<li>这两人突然同乘一辆电车。初次邂逅之后，大概也不可能再次相遇了吧。在漫长的人生道路上，仅仅相遇了三十分钟，而且也没有交谈就分手了。尽管相邻而坐，然而也没有相互瞧瞧，大概两人也没有发现彼此是如此相似吧。奇迹般的人，不知道自己的奇迹就离去了。</li>
<li>战争年代跟和平时期不一样。</li>
<li>那女孩子有点与众不同，爸爸才悄悄地感到她有魅力，才会没完没了地产生各种奇妙的念头。一个女人总要跟别的女人有所不同，才能吸引男子嘛。</li>
<li>她那从下巴颏儿到脖颈的线条优美得无法形容。</li>
<li>从下巴颏儿到脖颈的线条还飘逸着菊子那少女般的风采。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>21-项目里程碑应有复盘会议</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/21-%E9%A1%B9%E7%9B%AE%E9%87%8C%E7%A8%8B%E7%A2%91%E5%BA%94%E6%9C%89%E5%A4%8D%E7%9B%98%E4%BC%9A%E8%AE%AE/</link>
      <pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/21-%E9%A1%B9%E7%9B%AE%E9%87%8C%E7%A8%8B%E7%A2%91%E5%BA%94%E6%9C%89%E5%A4%8D%E7%9B%98%E4%BC%9A%E8%AE%AE/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;复盘会议通常是在项目某个版本完成开发并正式上线之后才召开的，但复盘工作其实并不是等到最后才开始的。项目负责人应该在项目前期就开始着手准备，在项目推进的过程中，持续记录各种各样的问题，这样在会议上就能有更充分的内容来进行讨论和总结经验。&lt;/p&gt;
&lt;p&gt;当项目负责人要召开项目复盘会议的时候，需要把项目相关人员都通知到位，比如产品、后端、前端和测试等等。然后预订一个会议室，在群里发布会议通知，到时候按计划如期进行。&lt;/p&gt;
&lt;p&gt;这个复盘会议对于项目负责人来说，一方面能够吸取项目管理方面的经验，另一方面也有助于提升项目团队的凝聚力。&lt;/p&gt;
&lt;p&gt;在会议上，把项目开发过程中哪些是做得好的，哪些是做得不好的，依次都列出来，让大家一起讨论一下，有一个总结与反思的过程，也是一个一起分享成果的过程。&lt;/p&gt;
&lt;p&gt;对于做得好的地方，那肯定是要表扬的；对于做得不好的地方，大家就再接再厉。&lt;/p&gt;
&lt;p&gt;复盘会议上讨论的内容，基本上涵盖了项目版本周期的方方面面，目前主要总结了以下几点。&lt;/p&gt;
&lt;h1 id=&#34;2-任务完成情况&#34;&gt;2. 任务完成情况&lt;/h1&gt;
&lt;p&gt;这个版本的项目任务计划制定得是否合理？哪些任务有多次变更的？已过期的任务具体原因又是什么？&lt;/p&gt;
&lt;h1 id=&#34;3-测试反馈bug问题&#34;&gt;3. 测试反馈BUG问题&lt;/h1&gt;
&lt;p&gt;把这个版本测试提出的 &lt;code&gt;Bug&lt;/code&gt; 整理和归纳一下，分析一下具体的情况。哪些 &lt;code&gt;Bug&lt;/code&gt; 是完全可以通过提前规划来避免的呢？比如输入框的校验，基本都没有，功能开发的时候，只是保证能用就行了，功能的边界完全没有自测。类似这种问题，就可以在会上进行讨论，然后达成共识，加入到开发规范里，后续就可以规避类似的问题了。&lt;/p&gt;
&lt;h1 id=&#34;4-会议记录&#34;&gt;4. 会议记录&lt;/h1&gt;
&lt;p&gt;我们每次开会都有会议记录文档，然后会把反馈的问题都记录下来。这些文档在复盘的时候就会起到作用，可以从中吸取经验。看看有哪些问题是第一次出现的，那有没有对策可以避免再次出现呢？这些都是可以在复盘阶段解决的。&lt;/p&gt;
&lt;h1 id=&#34;5-技术笔记&#34;&gt;5. 技术笔记&lt;/h1&gt;
&lt;p&gt;技术笔记是开发过程中对功能难点进行总结的文档。遇到哪些功能解决不了的？后来又是怎么解决的？都可以在复盘会议上进行分享。&lt;/p&gt;
&lt;h1 id=&#34;6-群内反馈的问题&#34;&gt;6. 群内反馈的问题&lt;/h1&gt;
&lt;p&gt;群里反馈的问题可不止是项目讨论群里的，还有其他客户群里的。客户反馈了哪些问题，又提出了哪些需求？后续我们的工作要怎么规划？&lt;/p&gt;
&lt;h1 id=&#34;7-总结&#34;&gt;7. 总结&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;复盘的目的不是对过去的问责，而是对过去的反思和总结，并着眼于未来如何改善。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目这个版本的功能已经完成了，事已至此，没必要深究谁没做好，然后让对方有心理负担。我们的目的一向是解决问题，这次没做好，下次做好不就行了，谁都有没做好的时候。&lt;/p&gt;
&lt;p&gt;更重要的是，今天比昨天做好一点。更重要的是，着眼于未来，这个项目下一个版本能不能比上个版本做得更好一点？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>复盘会议通常是在项目某个版本完成开发并正式上线之后才召开的，但复盘工作其实并不是等到最后才开始的。项目负责人应该在项目前期就开始着手准备，在项目推进的过程中，持续记录各种各样的问题，这样在会议上就能有更充分的内容来进行讨论和总结经验。</p>
<p>当项目负责人要召开项目复盘会议的时候，需要把项目相关人员都通知到位，比如产品、后端、前端和测试等等。然后预订一个会议室，在群里发布会议通知，到时候按计划如期进行。</p>
<p>这个复盘会议对于项目负责人来说，一方面能够吸取项目管理方面的经验，另一方面也有助于提升项目团队的凝聚力。</p>
<p>在会议上，把项目开发过程中哪些是做得好的，哪些是做得不好的，依次都列出来，让大家一起讨论一下，有一个总结与反思的过程，也是一个一起分享成果的过程。</p>
<p>对于做得好的地方，那肯定是要表扬的；对于做得不好的地方，大家就再接再厉。</p>
<p>复盘会议上讨论的内容，基本上涵盖了项目版本周期的方方面面，目前主要总结了以下几点。</p>
<h1 id="2-任务完成情况">2. 任务完成情况</h1>
<p>这个版本的项目任务计划制定得是否合理？哪些任务有多次变更的？已过期的任务具体原因又是什么？</p>
<h1 id="3-测试反馈bug问题">3. 测试反馈BUG问题</h1>
<p>把这个版本测试提出的 <code>Bug</code> 整理和归纳一下，分析一下具体的情况。哪些 <code>Bug</code> 是完全可以通过提前规划来避免的呢？比如输入框的校验，基本都没有，功能开发的时候，只是保证能用就行了，功能的边界完全没有自测。类似这种问题，就可以在会上进行讨论，然后达成共识，加入到开发规范里，后续就可以规避类似的问题了。</p>
<h1 id="4-会议记录">4. 会议记录</h1>
<p>我们每次开会都有会议记录文档，然后会把反馈的问题都记录下来。这些文档在复盘的时候就会起到作用，可以从中吸取经验。看看有哪些问题是第一次出现的，那有没有对策可以避免再次出现呢？这些都是可以在复盘阶段解决的。</p>
<h1 id="5-技术笔记">5. 技术笔记</h1>
<p>技术笔记是开发过程中对功能难点进行总结的文档。遇到哪些功能解决不了的？后来又是怎么解决的？都可以在复盘会议上进行分享。</p>
<h1 id="6-群内反馈的问题">6. 群内反馈的问题</h1>
<p>群里反馈的问题可不止是项目讨论群里的，还有其他客户群里的。客户反馈了哪些问题，又提出了哪些需求？后续我们的工作要怎么规划？</p>
<h1 id="7-总结">7. 总结</h1>
<p><strong>复盘的目的不是对过去的问责，而是对过去的反思和总结，并着眼于未来如何改善。</strong></p>
<p>项目这个版本的功能已经完成了，事已至此，没必要深究谁没做好，然后让对方有心理负担。我们的目的一向是解决问题，这次没做好，下次做好不就行了，谁都有没做好的时候。</p>
<p>更重要的是，今天比昨天做好一点。更重要的是，着眼于未来，这个项目下一个版本能不能比上个版本做得更好一点？</p>
]]></content:encoded>
    </item>
    <item>
      <title>20-项目进度会议时间过长的问题</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/20-%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E4%BC%9A%E8%AE%AE%E6%97%B6%E9%97%B4%E8%BF%87%E9%95%BF%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/20-%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E4%BC%9A%E8%AE%AE%E6%97%B6%E9%97%B4%E8%BF%87%E9%95%BF%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;我们统一每周周二开项目进度会议，每个项目的情况都不一样，有些问题就是需要讨论很久，所以时间是无法评估的。&lt;/p&gt;
&lt;p&gt;我们不可能要求什么时间内一定要开完项目进度会议，只能说项目负责人需要知道项目进度会议的流程，并且逐渐按照流程执行。&lt;/p&gt;
&lt;p&gt;一般情况下，每周开一次项目进度会议，任务通常不会太多，通常一次会议所需时间应该不会太长，但是我们把项目会议流程梳理之后就会发现，时间是大大超出我们预期的，如下所示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目进度情况（20 分钟）&lt;/li&gt;
&lt;li&gt;问题反馈讨论（20 分钟）&lt;/li&gt;
&lt;li&gt;任务验收
&lt;ul&gt;
&lt;li&gt;功能演示（20 分钟）&lt;/li&gt;
&lt;li&gt;代码抽查（20 分钟）&lt;/li&gt;
&lt;li&gt;文档查看（10 分钟）&lt;/li&gt;
&lt;li&gt;Bug 修复情况（10 分钟）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;后续工作安排
&lt;ul&gt;
&lt;li&gt;任务安排（20 分钟）&lt;/li&gt;
&lt;li&gt;加班情况（10 分钟）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282158811.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;项目人较多时，就需要 &lt;code&gt;2&lt;/code&gt; 个小时左右；项目人较少时，也需要 &lt;code&gt;1&lt;/code&gt; 个小时左右。我觉得项目会议时间在 &lt;code&gt;1 - 2&lt;/code&gt; 个小时之内是可以接受的，但是开到 3 个小时以上就有点问题了。&lt;/p&gt;
&lt;p&gt;要解决问题，最终还是要回到问题本身。项目进度会议时间过长，你的诉求到底是什么？最要解决的本质问题是什么？难道真的是项目时间过长吗？&lt;/p&gt;
&lt;p&gt;那我直接规定每次开会不能超过某个时长就好了，没必要在这里纠结那么多。&lt;/p&gt;
&lt;p&gt;所以说，&lt;strong&gt;本质的问题不在项目会议时间过长，而在于这个项目进度会议的时间是否产生了价值，是否有必要。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;那我们要清楚，到底是哪些问题，容易导致项目进度会议时间拉长呢？&lt;/p&gt;
&lt;p&gt;我想了一下，可能是这三种情况。&lt;/p&gt;
&lt;h1 id=&#34;2-没有在会前准备解决方案&#34;&gt;2. 没有在会前准备解决方案&lt;/h1&gt;
&lt;p&gt;有些问题没有在会前自己捋一遍，然后根据自己研究的结果，给出多个解决方案，并整理到文档中，然后发到项目讨论群里，而是自己闷头在研究，简单在脑里想了下，觉得想明白了，等到项目进度会议上再深入沟通。&lt;/p&gt;
&lt;p&gt;在项目进度会议上，没有什么文档，大家就一起参与讨论了，只是口头沟通，然后七嘴八舌的，说什么都有，这样行不行，那样行不行？&lt;/p&gt;
&lt;p&gt;讨论没有任何依据，只是凭感觉，反正你一句我一句，再加上一些闲话，最终浪费了很多时间。&lt;/p&gt;
&lt;p&gt;正确的做法应该是，在会前要把自己研究或者想到的解决方案，整理到文档中，要列举至少两三个方案，并把每个方案的优说明缺点清楚，最后在总结一栏，把自己推荐的方案标明清楚，并说明你选择该方案的原因。&lt;/p&gt;
&lt;p&gt;当然你可能会说，有些难题是在会上反馈出来的，哪有时间去准备解决方案文档，很多都是靠沟通交流得出的。&lt;/p&gt;
&lt;p&gt;如果是这种情况，那么可以简单沟通一下，然后回去整理好解决方案文档，发到项目讨论群里，然后叫上相关人员在座位上过一下，然后把最终结论补上文档即可。&lt;/p&gt;
&lt;h1 id=&#34;3-无关话题太多以及范围过大&#34;&gt;3. 无关话题太多以及范围过大&lt;/h1&gt;
&lt;p&gt;有时在项目进度例会上，很多时候沟通是没有依据的，也就是没有围绕项目当前的情况进行，总是一连串旁枝末节的话题，一个接一个没完没了。&lt;/p&gt;
&lt;p&gt;你说这些话题有必要讨论吗？&lt;/p&gt;
&lt;p&gt;当然有的，但是要看当前项目的情况和时机。比如有些规划是大半年以后的，有些甚至是几年后都不一定要做的，这些话题进行深入沟通可以增长个人的知识面，但是在当前没有什么意义，完全可以在私底下去了解。&lt;/p&gt;
&lt;p&gt;如果觉得很有用处，可以在了解之后，叫上几个人在座位上探讨一番，而不是在项目进度会议上。&lt;/p&gt;
&lt;p&gt;比如讨论 &lt;code&gt;App&lt;/code&gt; 的功能，说着说着，又说到 &lt;code&gt;Flutter&lt;/code&gt; 最近好像不太平，&lt;code&gt;Flutter&lt;/code&gt; 组又裁员了，然后还在 &lt;code&gt;GitHub&lt;/code&gt; 上面搞了一个社区的分支，单独维护，然后说不计划合并到 &lt;code&gt;Google&lt;/code&gt; 的主分支上了，然后又讨论 &lt;code&gt;Flutter&lt;/code&gt; 是不是要完蛋了？那我们后续开发 &lt;code&gt;App&lt;/code&gt; 要换不要技术方案？那老项目要怎么维护？&lt;code&gt;Android&lt;/code&gt;、&lt;code&gt;iOS&lt;/code&gt;、鸿蒙、微信小程序这些跨平台要怎么解决等等。&lt;/p&gt;
&lt;p&gt;完全没完没了，这些讨论当然有意义，但是，在项目进度例会上进行讨论，真的太不划算了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>我们统一每周周二开项目进度会议，每个项目的情况都不一样，有些问题就是需要讨论很久，所以时间是无法评估的。</p>
<p>我们不可能要求什么时间内一定要开完项目进度会议，只能说项目负责人需要知道项目进度会议的流程，并且逐渐按照流程执行。</p>
<p>一般情况下，每周开一次项目进度会议，任务通常不会太多，通常一次会议所需时间应该不会太长，但是我们把项目会议流程梳理之后就会发现，时间是大大超出我们预期的，如下所示：</p>
<ul>
<li>项目进度情况（20 分钟）</li>
<li>问题反馈讨论（20 分钟）</li>
<li>任务验收
<ul>
<li>功能演示（20 分钟）</li>
<li>代码抽查（20 分钟）</li>
<li>文档查看（10 分钟）</li>
<li>Bug 修复情况（10 分钟）</li>
</ul>
</li>
<li>后续工作安排
<ul>
<li>任务安排（20 分钟）</li>
<li>加班情况（10 分钟）</li>
</ul>
</li>
</ul>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282158811.png"></p>
<p>项目人较多时，就需要 <code>2</code> 个小时左右；项目人较少时，也需要 <code>1</code> 个小时左右。我觉得项目会议时间在 <code>1 - 2</code> 个小时之内是可以接受的，但是开到 3 个小时以上就有点问题了。</p>
<p>要解决问题，最终还是要回到问题本身。项目进度会议时间过长，你的诉求到底是什么？最要解决的本质问题是什么？难道真的是项目时间过长吗？</p>
<p>那我直接规定每次开会不能超过某个时长就好了，没必要在这里纠结那么多。</p>
<p>所以说，<strong>本质的问题不在项目会议时间过长，而在于这个项目进度会议的时间是否产生了价值，是否有必要。</strong></p>
<p>那我们要清楚，到底是哪些问题，容易导致项目进度会议时间拉长呢？</p>
<p>我想了一下，可能是这三种情况。</p>
<h1 id="2-没有在会前准备解决方案">2. 没有在会前准备解决方案</h1>
<p>有些问题没有在会前自己捋一遍，然后根据自己研究的结果，给出多个解决方案，并整理到文档中，然后发到项目讨论群里，而是自己闷头在研究，简单在脑里想了下，觉得想明白了，等到项目进度会议上再深入沟通。</p>
<p>在项目进度会议上，没有什么文档，大家就一起参与讨论了，只是口头沟通，然后七嘴八舌的，说什么都有，这样行不行，那样行不行？</p>
<p>讨论没有任何依据，只是凭感觉，反正你一句我一句，再加上一些闲话，最终浪费了很多时间。</p>
<p>正确的做法应该是，在会前要把自己研究或者想到的解决方案，整理到文档中，要列举至少两三个方案，并把每个方案的优说明缺点清楚，最后在总结一栏，把自己推荐的方案标明清楚，并说明你选择该方案的原因。</p>
<p>当然你可能会说，有些难题是在会上反馈出来的，哪有时间去准备解决方案文档，很多都是靠沟通交流得出的。</p>
<p>如果是这种情况，那么可以简单沟通一下，然后回去整理好解决方案文档，发到项目讨论群里，然后叫上相关人员在座位上过一下，然后把最终结论补上文档即可。</p>
<h1 id="3-无关话题太多以及范围过大">3. 无关话题太多以及范围过大</h1>
<p>有时在项目进度例会上，很多时候沟通是没有依据的，也就是没有围绕项目当前的情况进行，总是一连串旁枝末节的话题，一个接一个没完没了。</p>
<p>你说这些话题有必要讨论吗？</p>
<p>当然有的，但是要看当前项目的情况和时机。比如有些规划是大半年以后的，有些甚至是几年后都不一定要做的，这些话题进行深入沟通可以增长个人的知识面，但是在当前没有什么意义，完全可以在私底下去了解。</p>
<p>如果觉得很有用处，可以在了解之后，叫上几个人在座位上探讨一番，而不是在项目进度会议上。</p>
<p>比如讨论 <code>App</code> 的功能，说着说着，又说到 <code>Flutter</code> 最近好像不太平，<code>Flutter</code> 组又裁员了，然后还在 <code>GitHub</code> 上面搞了一个社区的分支，单独维护，然后说不计划合并到 <code>Google</code> 的主分支上了，然后又讨论 <code>Flutter</code> 是不是要完蛋了？那我们后续开发 <code>App</code> 要换不要技术方案？那老项目要怎么维护？<code>Android</code>、<code>iOS</code>、鸿蒙、微信小程序这些跨平台要怎么解决等等。</p>
<p>完全没完没了，这些讨论当然有意义，但是，在项目进度例会上进行讨论，真的太不划算了。</p>
<p>正确的做法应该是，紧跟当前项目核心问题进行讨论。比如上面的例子，<code>App</code> 的某个功能，在使用或实现上是否出现了问题，以及怎么解决这些问题？不要把话题扩散太广，避免违背了这个会议的初衷。</p>
<p>这个<strong>会议的目的是要解决项目当前的问题</strong>，不是新闻热点讨论会议。</p>
<h1 id="4-会议主持人没有做好把控">4. 会议主持人没有做好把控</h1>
<p>上面的问题，虽然源头都是会议前没有准备问题的解决方案文档、无关话题太多以及范围过大，但是，真正可以解决掉这个问题的，当然还是要回归到项目负责人对会议开展的把控上。</p>
<p>一看到有任何苗头，就可以立马打断，把话题拉回项目自身，而不是放任不管，浪费白白太多时间。</p>
<p>项目进度例会，我们担心有些人不说，但又怕有些人说太多，所以还是要灵活把控这个尺度，<strong>鼓励少说的多说，控制说多的少说</strong>，但目的是一致的，为了能及时暴露项目当前存在的问题，以及讨论出解决这些问题的方案。</p>
<p>至于无关紧要之事，可以会后私下里沟通。</p>
<h1 id="5-总结">5. 总结</h1>
<p>项目进度会议时间过长的问题，最终还是要回归到这个问题的诉求上，也就是说，如果我们能够做到会议前准备好要讨论的问题的解决方案文档、减少无关话题、项目负责人做好会议进行的把控工作，那么应该是可以解决这个问题的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>19-过进度方式二：项目成员依次汇报任务进度并演示功能</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/19-%E8%BF%87%E8%BF%9B%E5%BA%A6%E6%96%B9%E5%BC%8F%E4%BA%8C%E9%A1%B9%E7%9B%AE%E6%88%90%E5%91%98%E4%BE%9D%E6%AC%A1%E8%AF%B4%E6%98%8E%E5%92%8C%E6%BC%94%E7%A4%BA%E4%BB%BB%E5%8A%A1%E5%AE%8C%E6%88%90%E6%83%85%E5%86%B5/</link>
      <pubDate>Sat, 26 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/19-%E8%BF%87%E8%BF%9B%E5%BA%A6%E6%96%B9%E5%BC%8F%E4%BA%8C%E9%A1%B9%E7%9B%AE%E6%88%90%E5%91%98%E4%BE%9D%E6%AC%A1%E8%AF%B4%E6%98%8E%E5%92%8C%E6%BC%94%E7%A4%BA%E4%BB%BB%E5%8A%A1%E5%AE%8C%E6%88%90%E6%83%85%E5%86%B5/</guid>
      <description>&lt;p&gt;这几年项目进度例会的模式，都是按照上篇《18-过进度方式一：项目负责人进行全部功能演示》的方式进行的，其目的也在上篇说明清楚了，都是从项目负责人的能力提升方面考虑的，其会议流程是这样的：&lt;/p&gt;
&lt;p&gt;第一步，项目负责人把当前项目情况进行汇报，然后重点问题说一下。&lt;/p&gt;
&lt;p&gt;第二步，每个项目成员在自己的座位上，说一下上周做的事情，下周计划做什么，遇到什么问题。&lt;/p&gt;
&lt;p&gt;第三步，散会。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504251021563.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;但是，不同的阶段关注的重点不一样。&lt;/p&gt;
&lt;p&gt;在项目进度例会中，对当前所做的工作进行验收，是很重要的一环，这些也在《16-项目的任务质量如何保证》中，把前因后果也说明清楚了。&lt;/p&gt;
&lt;p&gt;本篇主要是探讨让项目负责人把全部功能进行演示和让项目成员依次汇报任务进度和演示，这两种方式不同之处在哪里？&lt;/p&gt;
&lt;p&gt;首先，我们要知道，参加会议的人，什么样的心态都有。有的人现在遇到了很多问题，亟需在会议上反馈出来，然后帮助他解决这些问题；有的人觉得我现在忙得很，又天天开会，真烦，能不能少开一点、少说一点，让我赶紧忙完，要不然就得加班了；有的人觉得真好啊，最好开一整天，又可以摸鱼了，等等。在这些心态之下，各人的反应也会不一样。但更深层的一点是，多一事不如少一事，你要让他主动去说，那太难了，你问了才会说，不问就不说，甚至你问了，也可能因为性格等各方面的原因，都不太愿意说太多。加上大部分人都在会上刷手机，不会有心思听那么多的。&lt;/p&gt;
&lt;p&gt;在这样的情况之下，让项目负责人把全部任务进度进行汇报并演示可验收的功能，很难覆盖到其他项目成员。他们本身不会觉得和这个会议有什么太大的关系，反正就是听一听，看一看手机，到了时间散会就完事儿。也许有些人可能有问题要反馈，但是他不会主动去提。&lt;/p&gt;
&lt;p&gt;所以，项目进度例会的整体流程就要进行调整：&lt;/p&gt;
&lt;p&gt;第一步，项目负责人要对项目当前的情况进行汇报，比如延期风险高不高？有什么重点问题？说一下，同步下信息，以及后续要注意哪些方面，等等。&lt;/p&gt;
&lt;p&gt;第二步，就是要项目成员依次到前面来，而不是在自己座位上。把自己上周完成了哪些任务说一下，哪些任务进度怎么样也说一下，然后是演示一下自己开发的功能或者一些技术文档，最后就是遇到了哪些问题？需要现在就讨论和解决，然后就是下周计划做什么？把这些信息都记录在会议记录文档上面。&lt;/p&gt;
&lt;p&gt;一方面可以减少项目负责人需要全面深入细节的工作；另一方面，可以侧面给项目成员一点压力。因为每次项目进度例会都要说一下工作内容，你如果上周完全都不用心，那么工作自然没什么产出，这样你总不能胡编乱造吧。&lt;/p&gt;
&lt;p&gt;冥冥之中，不需要谁整天盯着你工作，你自己清楚，无形之中，就会有约束力，也减少了项目负责人的管理工作。&lt;/p&gt;
&lt;p&gt;第三步，项目负责人把项目成员过进度中反馈的待解决问题，都记录到会议记录文档里面。下次项目进度例会，会看下待解决的问题是否已经解决。&lt;/p&gt;
&lt;p&gt;第四步，项目负责人要根据当前项目进度情况，再次强调要重点关注的点，然后评估下是否需要加班。如有需要，进行加班安排。&lt;/p&gt;
&lt;p&gt;第五步，散会。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504251025116.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;相信按上面这个流程，可以有效解决项目成员在会议上没有深入参与的问题，并且能起到日常工作的一些约束，加强自我管理的意识，达成期望的工作目标。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>这几年项目进度例会的模式，都是按照上篇《18-过进度方式一：项目负责人进行全部功能演示》的方式进行的，其目的也在上篇说明清楚了，都是从项目负责人的能力提升方面考虑的，其会议流程是这样的：</p>
<p>第一步，项目负责人把当前项目情况进行汇报，然后重点问题说一下。</p>
<p>第二步，每个项目成员在自己的座位上，说一下上周做的事情，下周计划做什么，遇到什么问题。</p>
<p>第三步，散会。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504251021563.png"></p>
<p>但是，不同的阶段关注的重点不一样。</p>
<p>在项目进度例会中，对当前所做的工作进行验收，是很重要的一环，这些也在《16-项目的任务质量如何保证》中，把前因后果也说明清楚了。</p>
<p>本篇主要是探讨让项目负责人把全部功能进行演示和让项目成员依次汇报任务进度和演示，这两种方式不同之处在哪里？</p>
<p>首先，我们要知道，参加会议的人，什么样的心态都有。有的人现在遇到了很多问题，亟需在会议上反馈出来，然后帮助他解决这些问题；有的人觉得我现在忙得很，又天天开会，真烦，能不能少开一点、少说一点，让我赶紧忙完，要不然就得加班了；有的人觉得真好啊，最好开一整天，又可以摸鱼了，等等。在这些心态之下，各人的反应也会不一样。但更深层的一点是，多一事不如少一事，你要让他主动去说，那太难了，你问了才会说，不问就不说，甚至你问了，也可能因为性格等各方面的原因，都不太愿意说太多。加上大部分人都在会上刷手机，不会有心思听那么多的。</p>
<p>在这样的情况之下，让项目负责人把全部任务进度进行汇报并演示可验收的功能，很难覆盖到其他项目成员。他们本身不会觉得和这个会议有什么太大的关系，反正就是听一听，看一看手机，到了时间散会就完事儿。也许有些人可能有问题要反馈，但是他不会主动去提。</p>
<p>所以，项目进度例会的整体流程就要进行调整：</p>
<p>第一步，项目负责人要对项目当前的情况进行汇报，比如延期风险高不高？有什么重点问题？说一下，同步下信息，以及后续要注意哪些方面，等等。</p>
<p>第二步，就是要项目成员依次到前面来，而不是在自己座位上。把自己上周完成了哪些任务说一下，哪些任务进度怎么样也说一下，然后是演示一下自己开发的功能或者一些技术文档，最后就是遇到了哪些问题？需要现在就讨论和解决，然后就是下周计划做什么？把这些信息都记录在会议记录文档上面。</p>
<p>一方面可以减少项目负责人需要全面深入细节的工作；另一方面，可以侧面给项目成员一点压力。因为每次项目进度例会都要说一下工作内容，你如果上周完全都不用心，那么工作自然没什么产出，这样你总不能胡编乱造吧。</p>
<p>冥冥之中，不需要谁整天盯着你工作，你自己清楚，无形之中，就会有约束力，也减少了项目负责人的管理工作。</p>
<p>第三步，项目负责人把项目成员过进度中反馈的待解决问题，都记录到会议记录文档里面。下次项目进度例会，会看下待解决的问题是否已经解决。</p>
<p>第四步，项目负责人要根据当前项目进度情况，再次强调要重点关注的点，然后评估下是否需要加班。如有需要，进行加班安排。</p>
<p>第五步，散会。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504251025116.png"></p>
<p>相信按上面这个流程，可以有效解决项目成员在会议上没有深入参与的问题，并且能起到日常工作的一些约束，加强自我管理的意识，达成期望的工作目标。</p>
]]></content:encoded>
    </item>
    <item>
      <title>前端业务组件封装与管理的解决方案</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E5%89%8D%E7%AB%AF%E4%B8%9A%E5%8A%A1%E7%BB%84%E4%BB%B6%E5%B0%81%E8%A3%85%E4%B8%8E%E7%AE%A1%E7%90%86%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link>
      <pubDate>Sat, 26 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E5%89%8D%E7%AB%AF%E4%B8%9A%E5%8A%A1%E7%BB%84%E4%BB%B6%E5%B0%81%E8%A3%85%E4%B8%8E%E7%AE%A1%E7%90%86%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;在前端开发中，业务组件的封装与管理是一个常见的难题。当多个项目共用同一个业务组件时，如何平衡不同项目的需求差异，同时保持组件的可维护性和可扩展性，成为了一个亟待解决的问题。&lt;/p&gt;
&lt;h1 id=&#34;2-如何应对多项目需求差异&#34;&gt;2 如何应对多项目需求差异&lt;/h1&gt;
&lt;p&gt;在业务组件封装过程中，我们常常会遇到这样的问题：项目 &lt;code&gt;A&lt;/code&gt; 和项目 &lt;code&gt;B&lt;/code&gt; 都使用了某个业务组件，但项目 &lt;code&gt;A&lt;/code&gt; 迭代了需求，而这个需求在项目 &lt;code&gt;B&lt;/code&gt; 中却用不到。如果这次为了满足项目 &lt;code&gt;A&lt;/code&gt; 的需求而修改组件，那么未来项目 &lt;code&gt;B&lt;/code&gt; 也可能出现类似但不完全相同的需求，难道每次都要通过特判来解决吗？&lt;/p&gt;
&lt;p&gt;实际上，业务组件的问题并非孤立存在，而是整个前端项目开发流程中的一个环节。我们需要从更高的层次、更宏观的角度去看待，梳理整个前端项目的开发流程，预见可能面临的问题，并逐一讨论解决方案、进行应用和验证，而不仅仅是解决业务组件自身的问题。&lt;/p&gt;
&lt;h1 id=&#34;3-期望的应用场景&#34;&gt;3. 期望的应用场景&lt;/h1&gt;
&lt;p&gt;我们期望构建一个高效、灵活的前端开发流程，具体场景如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;提供一个基础的项目模板，其中包含常用的业务组件，如登录注册、首页、个人中心、用户管理等。这样，新的项目可以直接基于模板启动，减少重复工作。&lt;/li&gt;
&lt;li&gt;通过动态配置主题色等功能，满足客户项目的定制化需求。例如，不同客户可能对界面风格有不同偏好，通过风格配置平台可以快速实现定制。&lt;/li&gt;
&lt;li&gt;在菜单管理中配置好路由，从业务组件库中引入所需的业务组件。如果现有组件不满足需求，则可以迭代现有组件或新增组件。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;4-通用性与灵活性&#34;&gt;4. 通用性与灵活性&lt;/h1&gt;
&lt;p&gt;业务组件应具备通用功能，能够满足大部分项目的需求，从而减少重复开发，提高开发效率。当遇到特殊需求时，可以采用组合式函数的方式，将逻辑单独抽离出来复用。同时，提供样式自定义功能，通过增加一个 &lt;code&gt;.vue&lt;/code&gt; 文件来实现样式定制，从而复用组合式函数。这种做法既保持了组件的通用性，又提供了足够的灵活性来应对不同项目的需求。&lt;/p&gt;
&lt;h1 id=&#34;5-确保质量和稳定性&#34;&gt;5. 确保质量和稳定性&lt;/h1&gt;
&lt;p&gt;为了保证业务组件的质量和稳定性，单元测试是必不可少的环节。主要包括以下两个方面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对组件的逻辑代码进行测试，确保其功能正确无误。&lt;/li&gt;
&lt;li&gt;测试组件之间的交互是否符合预期，例如父子组件之间的数据传递、事件触发等。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;6-满足多样化需求&#34;&gt;6. 满足多样化需求&lt;/h1&gt;
&lt;p&gt;业务组件的风格动态设置是一个关键问题。以当前常见的&lt;code&gt;明亮&lt;/code&gt;和&lt;code&gt;暗黑&lt;/code&gt;风格为例，问题的根本原因并不在于组件自身，而在于项目。因此，需要设置的不是业务组件的主题，而是项目的主题。而项目是基于我们提供的项目模板开发的，所以项目模板需要提供风格动态设置功能。&lt;/p&gt;
&lt;p&gt;最佳的实现方式是通过可视化页面进行配置，然后生成 &lt;code&gt;CSS&lt;/code&gt; 文件，将其引入到项目中进行配置。这就需要开发一个可视化主题配置平台，比如 &lt;code&gt;Arco Design Lab&lt;/code&gt; 平台（&lt;a href=&#34;https://arco.design/docs/designlab/guideline&#34;&gt;平台使用指南&lt;/a&gt;），能够很好地满足这一需求。&lt;/p&gt;
&lt;h1 id=&#34;7-总结&#34;&gt;7. 总结&lt;/h1&gt;
&lt;p&gt;通过建立一套完整的开发规范、提供风格动态设置功能，我们可以有效地解决多项目需求差异的问题，提高开发效率和质量。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>在前端开发中，业务组件的封装与管理是一个常见的难题。当多个项目共用同一个业务组件时，如何平衡不同项目的需求差异，同时保持组件的可维护性和可扩展性，成为了一个亟待解决的问题。</p>
<h1 id="2-如何应对多项目需求差异">2 如何应对多项目需求差异</h1>
<p>在业务组件封装过程中，我们常常会遇到这样的问题：项目 <code>A</code> 和项目 <code>B</code> 都使用了某个业务组件，但项目 <code>A</code> 迭代了需求，而这个需求在项目 <code>B</code> 中却用不到。如果这次为了满足项目 <code>A</code> 的需求而修改组件，那么未来项目 <code>B</code> 也可能出现类似但不完全相同的需求，难道每次都要通过特判来解决吗？</p>
<p>实际上，业务组件的问题并非孤立存在，而是整个前端项目开发流程中的一个环节。我们需要从更高的层次、更宏观的角度去看待，梳理整个前端项目的开发流程，预见可能面临的问题，并逐一讨论解决方案、进行应用和验证，而不仅仅是解决业务组件自身的问题。</p>
<h1 id="3-期望的应用场景">3. 期望的应用场景</h1>
<p>我们期望构建一个高效、灵活的前端开发流程，具体场景如下：</p>
<ol>
<li>提供一个基础的项目模板，其中包含常用的业务组件，如登录注册、首页、个人中心、用户管理等。这样，新的项目可以直接基于模板启动，减少重复工作。</li>
<li>通过动态配置主题色等功能，满足客户项目的定制化需求。例如，不同客户可能对界面风格有不同偏好，通过风格配置平台可以快速实现定制。</li>
<li>在菜单管理中配置好路由，从业务组件库中引入所需的业务组件。如果现有组件不满足需求，则可以迭代现有组件或新增组件。</li>
</ol>
<h1 id="4-通用性与灵活性">4. 通用性与灵活性</h1>
<p>业务组件应具备通用功能，能够满足大部分项目的需求，从而减少重复开发，提高开发效率。当遇到特殊需求时，可以采用组合式函数的方式，将逻辑单独抽离出来复用。同时，提供样式自定义功能，通过增加一个 <code>.vue</code> 文件来实现样式定制，从而复用组合式函数。这种做法既保持了组件的通用性，又提供了足够的灵活性来应对不同项目的需求。</p>
<h1 id="5-确保质量和稳定性">5. 确保质量和稳定性</h1>
<p>为了保证业务组件的质量和稳定性，单元测试是必不可少的环节。主要包括以下两个方面：</p>
<ol>
<li>对组件的逻辑代码进行测试，确保其功能正确无误。</li>
<li>测试组件之间的交互是否符合预期，例如父子组件之间的数据传递、事件触发等。</li>
</ol>
<h1 id="6-满足多样化需求">6. 满足多样化需求</h1>
<p>业务组件的风格动态设置是一个关键问题。以当前常见的<code>明亮</code>和<code>暗黑</code>风格为例，问题的根本原因并不在于组件自身，而在于项目。因此，需要设置的不是业务组件的主题，而是项目的主题。而项目是基于我们提供的项目模板开发的，所以项目模板需要提供风格动态设置功能。</p>
<p>最佳的实现方式是通过可视化页面进行配置，然后生成 <code>CSS</code> 文件，将其引入到项目中进行配置。这就需要开发一个可视化主题配置平台，比如 <code>Arco Design Lab</code> 平台（<a href="https://arco.design/docs/designlab/guideline">平台使用指南</a>），能够很好地满足这一需求。</p>
<h1 id="7-总结">7. 总结</h1>
<p>通过建立一套完整的开发规范、提供风格动态设置功能，我们可以有效地解决多项目需求差异的问题，提高开发效率和质量。</p>
]]></content:encoded>
    </item>
    <item>
      <title>展厅3D项目实现方案</title>
      <link>https://dstweihao.cn/posts/electron/%E5%B1%95%E5%8E%853d%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%88/</link>
      <pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/electron/%E5%B1%95%E5%8E%853d%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;本项目旨在开发一个展厅&lt;code&gt;3D&lt;/code&gt;展示系统，主要功能为监控大屏与&lt;code&gt;3D&lt;/code&gt;城市沙盘显示。项目涉及两台电脑屏幕，分别标记为&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;B&lt;/code&gt;。&lt;code&gt;A&lt;/code&gt;屏幕用于展示&lt;code&gt;3D&lt;/code&gt;城市沙盘，用户点击沙盘中的特定区域时，&lt;code&gt;B&lt;/code&gt;屏幕将显示与该区域相关的效果视频。因此，项目的核心在于如何构建&lt;code&gt;3D&lt;/code&gt;城市沙盘以及实现两台电脑之间的通信功能。&lt;/p&gt;
&lt;h1 id=&#34;解决方案&#34;&gt;解决方案&lt;/h1&gt;
&lt;p&gt;最初计划使用&lt;code&gt;Three.js&lt;/code&gt;来开发&lt;code&gt;3D&lt;/code&gt;城市沙盘，并通过&lt;code&gt;Electron&lt;/code&gt;开发两个独立的应用程序，分别部署在&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;B&lt;/code&gt;电脑上以实现通信功能。然而，在项目推进过程中，我们发现&lt;code&gt;3D&lt;/code&gt;城市沙盘可以通过视频形式实现，仅需由&lt;code&gt;UI&lt;/code&gt;设计团队制作一个&lt;code&gt;3D&lt;/code&gt;城市沙盘视频即可。对于沙盘大屏的左右旋转功能，可以通过捕获手势事件来控制视频播放器的快进和后退操作，从而避免了使用&lt;code&gt;Three.js&lt;/code&gt;开发&lt;code&gt;3D&lt;/code&gt;沙盘的复杂工作。&lt;/p&gt;
&lt;h1 id=&#34;电脑间通信验证&#34;&gt;电脑间通信验证&lt;/h1&gt;
&lt;p&gt;基于&lt;code&gt;electron-vite-vue&lt;/code&gt;和&lt;code&gt;ws&lt;/code&gt;框架，我们开发了两个应用程序：客户端和服务端。客户端部署在主屏（&lt;code&gt;A&lt;/code&gt;电脑），服务端部署在副屏（&lt;code&gt;B&lt;/code&gt;电脑）。当系统启动时，服务端将在本地创建一个&lt;code&gt;WebSocket&lt;/code&gt;服务器，监听&lt;code&gt;8080&lt;/code&gt;端口。客户端则创建一个&lt;code&gt;WebSocket&lt;/code&gt;客户端实例，连接至该服务器，从而实现两台电脑之间的通信功能。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/electron-vite/electron-vite-vue&#34;&gt;electron-vite-vue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/websockets/ws&#34;&gt;ws&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;假设&lt;code&gt;B&lt;/code&gt;电脑的&lt;code&gt;IP&lt;/code&gt;地址为&lt;code&gt;192.168.28.112&lt;/code&gt;，我们首先在&lt;code&gt;B&lt;/code&gt;电脑上创建一个&lt;code&gt;WebSocket&lt;/code&gt;服务器，监听&lt;code&gt;8080&lt;/code&gt;端口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;WebSocket&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;ws&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;wss&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;WebSocket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wss&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;connection&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;message&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;incoming&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;received: %s&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;something&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;close&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;clear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;client disconnected&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接下来，在&lt;code&gt;A&lt;/code&gt;电脑上创建一个新的&lt;code&gt;WebSocket&lt;/code&gt;客户端实例，连接到&lt;code&gt;B&lt;/code&gt;电脑的&lt;code&gt;WebSocket&lt;/code&gt;服务器，用于发送消息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;WebSocket&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;ws&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 本地调试
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// const ws = new WebSocket(&amp;#39;ws://localhost:8080&amp;#39;);  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 连接`B`电脑的 `WebSocket` 服务器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;WebSocket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;ws://192.168.28.112:8080&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;open&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;connected&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;setInterval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Hello Server!&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;message&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;incoming&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;close&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;clear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;disconnected&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;error&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;err&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;WebSocket Error: &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;err&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过上述实现，&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;B&lt;/code&gt;电脑之间的通信效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504231100832.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504231101378.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>本项目旨在开发一个展厅<code>3D</code>展示系统，主要功能为监控大屏与<code>3D</code>城市沙盘显示。项目涉及两台电脑屏幕，分别标记为<code>A</code>和<code>B</code>。<code>A</code>屏幕用于展示<code>3D</code>城市沙盘，用户点击沙盘中的特定区域时，<code>B</code>屏幕将显示与该区域相关的效果视频。因此，项目的核心在于如何构建<code>3D</code>城市沙盘以及实现两台电脑之间的通信功能。</p>
<h1 id="解决方案">解决方案</h1>
<p>最初计划使用<code>Three.js</code>来开发<code>3D</code>城市沙盘，并通过<code>Electron</code>开发两个独立的应用程序，分别部署在<code>A</code>和<code>B</code>电脑上以实现通信功能。然而，在项目推进过程中，我们发现<code>3D</code>城市沙盘可以通过视频形式实现，仅需由<code>UI</code>设计团队制作一个<code>3D</code>城市沙盘视频即可。对于沙盘大屏的左右旋转功能，可以通过捕获手势事件来控制视频播放器的快进和后退操作，从而避免了使用<code>Three.js</code>开发<code>3D</code>沙盘的复杂工作。</p>
<h1 id="电脑间通信验证">电脑间通信验证</h1>
<p>基于<code>electron-vite-vue</code>和<code>ws</code>框架，我们开发了两个应用程序：客户端和服务端。客户端部署在主屏（<code>A</code>电脑），服务端部署在副屏（<code>B</code>电脑）。当系统启动时，服务端将在本地创建一个<code>WebSocket</code>服务器，监听<code>8080</code>端口。客户端则创建一个<code>WebSocket</code>客户端实例，连接至该服务器，从而实现两台电脑之间的通信功能。</p>
<ol>
<li><a href="https://github.com/electron-vite/electron-vite-vue">electron-vite-vue</a></li>
<li><a href="https://github.com/websockets/ws">ws</a></li>
</ol>
<p>假设<code>B</code>电脑的<code>IP</code>地址为<code>192.168.28.112</code>，我们首先在<code>B</code>电脑上创建一个<code>WebSocket</code>服务器，监听<code>8080</code>端口：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">WebSocket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;ws&#39;</span><span class="p">);</span>  
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">wss</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">.</span><span class="nx">Server</span><span class="p">({</span> <span class="nx">port</span><span class="o">:</span> <span class="mi">8080</span> <span class="p">});</span>  
</span></span><span class="line"><span class="cl"><span class="nx">wss</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;connection&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">connection</span><span class="p">(</span><span class="nx">ws</span><span class="p">)</span> <span class="p">{</span>  
</span></span><span class="line"><span class="cl">  <span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;message&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">incoming</span><span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>  
</span></span><span class="line"><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;received: %s&#39;</span><span class="p">,</span> <span class="nx">message</span><span class="p">);</span>  
</span></span><span class="line"><span class="cl">  <span class="p">});</span>  
</span></span><span class="line"><span class="cl">  <span class="nx">ws</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;something&#39;</span><span class="p">);</span>  
</span></span><span class="line"><span class="cl">  <span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;close&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">clear</span><span class="p">()</span> <span class="p">{</span>  
</span></span><span class="line"><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;client disconnected&#39;</span><span class="p">);</span>  
</span></span><span class="line"><span class="cl">  <span class="p">});</span>  
</span></span><span class="line"><span class="cl"><span class="p">});</span>  
</span></span></code></pre></div><p>接下来，在<code>A</code>电脑上创建一个新的<code>WebSocket</code>客户端实例，连接到<code>B</code>电脑的<code>WebSocket</code>服务器，用于发送消息：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">WebSocket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;ws&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="c1">// 本地调试
</span></span></span><span class="line"><span class="cl"><span class="c1">// const ws = new WebSocket(&#39;ws://localhost:8080&#39;);  
</span></span></span><span class="line"><span class="cl"><span class="c1">// 连接`B`电脑的 `WebSocket` 服务器
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">ws</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">(</span><span class="s1">&#39;ws://192.168.28.112:8080&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;open&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">open</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;connected&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="nx">setInterval</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">ws</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello Server!&#39;</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span> <span class="mi">3000</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;message&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">incoming</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;close&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">clear</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;disconnected&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">&#39;WebSocket Error: &#39;</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div><p>通过上述实现，<code>A</code>和<code>B</code>电脑之间的通信效果如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504231100832.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504231101378.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 49</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-49/</link>
      <pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-49/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/convert-date-to-binary/&#34;&gt;3280. 将日期转换为二进制表示&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;date&lt;/code&gt;，它的格式为 &lt;code&gt;yyyy-mm-dd&lt;/code&gt;，表示一个公历日期。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;date&lt;/code&gt; 可以重写为二进制表示，只需要将年、月、日分别转换为对应的二进制表示（不带前导零）并遵循 &lt;code&gt;year-month-day&lt;/code&gt; 的格式。&lt;/p&gt;
&lt;p&gt;返回 &lt;code&gt;date&lt;/code&gt; 的 &lt;strong&gt;二进制&lt;/strong&gt; 表示。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2080-02-29&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;100000100000-10-11101&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;100000100000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11101&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;分别是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;02&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;29&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的二进制表示&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;convertDateToBinary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;day&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;yearBinary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;monthBinary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dayBinary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;day&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;yearBinary&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;monthBinary&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dayBinary&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将日期格式的字符串拆分为年、月、日三个部分。&lt;/li&gt;
&lt;li&gt;利用 &lt;code&gt;Number.prototype.toString()&lt;/code&gt; 方法中基数的特性，将数字转换为二进制字符串。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2504/250414-water-purification.html&#34;&gt;Scientists discover new water purification microbes - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;科学家们在我们脚下的地球中发现了一种以前未知的微生物。密歇根州立大学的研究人员一直在探索地球表面下方和上方的一个区域，称为临界区。这个区域对于提供维持生命的条件至关重要。研究人员将这些微生物称为 CSP1-3。微生物可能是净化水过程的关键部分。微生物学家 James Tiedje 说，虽然土壤层负责雨水的大部分过滤，但 CSP1-3 也是必不可少的。他说：“CSP1-3 是清理土壤表层的清道夫。他们的工作是净化我们的饮用水。&lt;/p&gt;
&lt;p&gt;Tiedje 博士和他的团队专注于生活在我们脚下 200 米深处土壤中的微生物。他说，CSP1-3 微生物可以去除供水中的有害污染物和碎屑。他现在想在他的实验室中培养 CSP1-3，以了解更多关于它们的特性。他认为它们可以用来清理土壤中的污染。他说：“我们不知道它们代谢顽固污染物的能力，如果我们能了解这一点，我们就可以帮助解决地球上最紧迫的问题之一。scitechdaily.com 网站称：“了解这个新发现的群体可以促进保护工作并帮助应对气候变化。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在平时写邮件和使用 &lt;code&gt;typora&lt;/code&gt; 软件写日记的时候，特别苦恼怎么能快速插入日期，比如写日记，每次都要复制昨天的日记文档，然后修改时间，很是繁琐，所以就研究了一下，结果发现使用搜狗输入法就很快实现了。&lt;/p&gt;
&lt;p&gt;使用搜狗输入法，在中文模式下，输入 &lt;code&gt;rq&lt;/code&gt; ，则会自动显示日期格式 &lt;code&gt;年月日&lt;/code&gt; ，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301608646.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/convert-date-to-binary/">3280. 将日期转换为二进制表示</a></p>
<p>给你一个字符串 <code>date</code>，它的格式为 <code>yyyy-mm-dd</code>，表示一个公历日期。</p>
<p><code>date</code> 可以重写为二进制表示，只需要将年、月、日分别转换为对应的二进制表示（不带前导零）并遵循 <code>year-month-day</code> 的格式。</p>
<p>返回 <code>date</code> 的 <strong>二进制</strong> 表示。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span> <span class="nx">date</span> <span class="o">=</span> <span class="s2">&#34;2080-02-29&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span> <span class="s2">&#34;100000100000-10-11101&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="mi">100000100000</span><span class="p">,</span> <span class="mi">10</span> <span class="nx">和</span> <span class="mi">11101</span> <span class="nx">分别是</span> <span class="mi">2080</span><span class="p">,</span> <span class="mi">02</span> <span class="nx">和</span> <span class="mi">29</span> <span class="nx">的二进制表示</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">convertDateToBinary</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="p">[</span><span class="nx">year</span><span class="p">,</span> <span class="nx">month</span><span class="p">,</span> <span class="nx">day</span><span class="p">]</span> <span class="o">=</span> <span class="nx">date</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;-&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">yearBinary</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">year</span><span class="p">).</span><span class="nx">toString</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">monthBinary</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">month</span><span class="p">).</span><span class="nx">toString</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">dayBinary</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">day</span><span class="p">).</span><span class="nx">toString</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="sb">`</span><span class="si">${</span><span class="nx">yearBinary</span><span class="si">}</span><span class="sb">-</span><span class="si">${</span><span class="nx">monthBinary</span><span class="si">}</span><span class="sb">-</span><span class="si">${</span><span class="nx">dayBinary</span><span class="si">}</span><span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>将日期格式的字符串拆分为年、月、日三个部分。</li>
<li>利用 <code>Number.prototype.toString()</code> 方法中基数的特性，将数字转换为二进制字符串。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2504/250414-water-purification.html">Scientists discover new water purification microbes - Breaking News English Lesson</a></p>
<p>科学家们在我们脚下的地球中发现了一种以前未知的微生物。密歇根州立大学的研究人员一直在探索地球表面下方和上方的一个区域，称为临界区。这个区域对于提供维持生命的条件至关重要。研究人员将这些微生物称为 CSP1-3。微生物可能是净化水过程的关键部分。微生物学家 James Tiedje 说，虽然土壤层负责雨水的大部分过滤，但 CSP1-3 也是必不可少的。他说：“CSP1-3 是清理土壤表层的清道夫。他们的工作是净化我们的饮用水。</p>
<p>Tiedje 博士和他的团队专注于生活在我们脚下 200 米深处土壤中的微生物。他说，CSP1-3 微生物可以去除供水中的有害污染物和碎屑。他现在想在他的实验室中培养 CSP1-3，以了解更多关于它们的特性。他认为它们可以用来清理土壤中的污染。他说：“我们不知道它们代谢顽固污染物的能力，如果我们能了解这一点，我们就可以帮助解决地球上最紧迫的问题之一。scitechdaily.com 网站称：“了解这个新发现的群体可以促进保护工作并帮助应对气候变化。</p>
<h2 id="tip">Tip</h2>
<p>在平时写邮件和使用 <code>typora</code> 软件写日记的时候，特别苦恼怎么能快速插入日期，比如写日记，每次都要复制昨天的日记文档，然后修改时间，很是繁琐，所以就研究了一下，结果发现使用搜狗输入法就很快实现了。</p>
<p>使用搜狗输入法，在中文模式下，输入 <code>rq</code> ，则会自动显示日期格式 <code>年月日</code> ，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301608646.png"></p>
<p>如果输入 <code>sj</code> ，则会显示<code>年月日时分秒</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301612720.png"></p>
<p>这样就可以快速插入日期了。</p>
<h2 id="share">Share</h2>
<p><a href="https://www.zhihu.com/tardis/zm/art/673733904?source_id=1005">一文读懂：PMF（product market fit）与产品管理</a></p>
<p>“一些初创企业，花很多的时间专注于他的新技术、新功能、新创意，不做用户访谈，花极少的时间验证市场需求、用户付费意愿，最后用一个产品去解决一个不存在的问题或者市场，拿着锤子找钉子，这样的结果大概率也是失败的。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>18-过进度方式一：项目负责人进行全部功能演示</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/18-%E8%BF%87%E8%BF%9B%E5%BA%A6%E6%96%B9%E5%BC%8F%E4%B8%80%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%BF%9B%E8%A1%8C%E5%85%A8%E9%83%A8%E5%8A%9F%E8%83%BD%E6%BC%94%E7%A4%BA/</link>
      <pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/18-%E8%BF%87%E8%BF%9B%E5%BA%A6%E6%96%B9%E5%BC%8F%E4%B8%80%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%BF%9B%E8%A1%8C%E5%85%A8%E9%83%A8%E5%8A%9F%E8%83%BD%E6%BC%94%E7%A4%BA/</guid>
      <description>&lt;p&gt;在项目进度会议中，由开发人员自行演示近期完成的项目功能似乎无可厚非。毕竟，他们是最熟悉这些功能的操作流程的，部分功能甚至需要连接特定设备或模拟数据才能顺利演示。若非使用开发人员事先准备好的账号，整个演示流程可能会耗费大量时间，从而降低会议效率。&lt;/p&gt;
&lt;p&gt;然而，深入分析后不难发现，这种做法存在一些潜在问题。首先，项目负责人可能对其他同事开发的功能并不熟悉；其次，项目负责人作为整个项目的负责人，在进行项目整体汇报时，若将主要演示职责交给开发人员，会导致职责划分不清晰，这不仅不利于项目负责人的个人成长，也不利于项目的顺利开展。&lt;/p&gt;
&lt;p&gt;因此，项目功能演示环节最好由项目负责人全程主导，开发人员可适时进行补充。这样做的好处有三点：一是避免职责不清；二是增强项目负责人的责任感；三是促使项目负责人更深入地了解项目需求，因为只有真正理解项目需求，才能顺利进行演示，这也有助于后续的功能验收环节，其影响是多方面的。&lt;/p&gt;
&lt;p&gt;归根结底，问题的根源在于&lt;strong&gt;项目需求与方案环节&lt;/strong&gt;。项目负责人需要确保对项目需求有清晰、透彻的理解，虽然不一定亲自编写代码，但可以在脑海中模拟开发过程，至少要清楚功能的具体形态和使用方式。基于此，项目负责人可以在每周一提前浏览本周的任务，鉴于项目进度会议每周举行一次，本周需要实现的功能数量相对有限，亲自操作演示也不会花费过多时间，从而确保在周二的项目进度会议上能够清晰、准确地进行汇报。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>在项目进度会议中，由开发人员自行演示近期完成的项目功能似乎无可厚非。毕竟，他们是最熟悉这些功能的操作流程的，部分功能甚至需要连接特定设备或模拟数据才能顺利演示。若非使用开发人员事先准备好的账号，整个演示流程可能会耗费大量时间，从而降低会议效率。</p>
<p>然而，深入分析后不难发现，这种做法存在一些潜在问题。首先，项目负责人可能对其他同事开发的功能并不熟悉；其次，项目负责人作为整个项目的负责人，在进行项目整体汇报时，若将主要演示职责交给开发人员，会导致职责划分不清晰，这不仅不利于项目负责人的个人成长，也不利于项目的顺利开展。</p>
<p>因此，项目功能演示环节最好由项目负责人全程主导，开发人员可适时进行补充。这样做的好处有三点：一是避免职责不清；二是增强项目负责人的责任感；三是促使项目负责人更深入地了解项目需求，因为只有真正理解项目需求，才能顺利进行演示，这也有助于后续的功能验收环节，其影响是多方面的。</p>
<p>归根结底，问题的根源在于<strong>项目需求与方案环节</strong>。项目负责人需要确保对项目需求有清晰、透彻的理解，虽然不一定亲自编写代码，但可以在脑海中模拟开发过程，至少要清楚功能的具体形态和使用方式。基于此，项目负责人可以在每周一提前浏览本周的任务，鉴于项目进度会议每周举行一次，本周需要实现的功能数量相对有限，亲自操作演示也不会花费过多时间，从而确保在周二的项目进度会议上能够清晰、准确地进行汇报。</p>
]]></content:encoded>
    </item>
    <item>
      <title>17-解决代码合并引发的功能演示问题</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/17-%E8%A7%A3%E5%86%B3%E4%BB%A3%E7%A0%81%E5%90%88%E5%B9%B6%E5%BC%95%E5%8F%91%E7%9A%84%E5%8A%9F%E8%83%BD%E6%BC%94%E7%A4%BA%E9%97%AE%E9%A2%98/</link>
      <pubDate>Sat, 19 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/17-%E8%A7%A3%E5%86%B3%E4%BB%A3%E7%A0%81%E5%90%88%E5%B9%B6%E5%BC%95%E5%8F%91%E7%9A%84%E5%8A%9F%E8%83%BD%E6%BC%94%E7%A4%BA%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;我们每周二都会召开项目进度例会，会议中需要逐一汇报五六个项目的进展情况。为了能够在会议中顺利演示相关功能，必须将已开发完成的功能代码合并至&lt;code&gt;Dev&lt;/code&gt;分支，否则将无法进行功能演示。&lt;/p&gt;
&lt;p&gt;对于那些能够在会议前完成合并的分支，其代码已成功合并至开发环境平台，此时仅需进行功能验收即可。然而，功能分支的代码需经过项目负责人的评审，但往往功能开发任务在当天刚刚完成，而项目负责人本身还承担着其他功能的开发任务，因此难以及时完成代码评审及合并工作。在这种情况下，该如何妥善处理呢？&lt;/p&gt;
&lt;p&gt;一种可行的方案是&lt;code&gt;Clone&lt;/code&gt;功能分支代码至本地，在本地环境中运行并进行验收。但这一流程存在诸多不便：需要&lt;code&gt;Clone&lt;/code&gt;分支代码、安装依赖，且可能面临与本地环境不兼容的问题，还需进行微调才能成功运行，整个过程较为繁琐。在会议中花费大量时间进行此类操作显然毫无意义，那么如何简化这一流程呢？&lt;/p&gt;
&lt;p&gt;一方面，可以在会议前与相关人员进行沟通，提前了解哪些任务已完成且已合并至&lt;code&gt;Dev&lt;/code&gt;分支，哪些功能的代码尚未完成评审并合并至&lt;code&gt;Dev&lt;/code&gt;分支。对于尚未合并的功能分支，可提前将其&lt;code&gt;Clone&lt;/code&gt;至本地电脑，安装好依赖并成功运行，待开会时通过远程连接至本地电脑即可进行演示。&lt;/p&gt;
&lt;p&gt;另一种方案是直接打开代码仓库&lt;code&gt;GitLab&lt;/code&gt;，查看项目分支的代码，让负责功能开发的同事详细介绍该功能的实现方式以及代码的设计思路，这样既能解决上述问题，也能达到功能演示的目的。&lt;/p&gt;
&lt;p&gt;此外，还可以考虑在现有的&lt;code&gt;Dev&lt;/code&gt;、&lt;code&gt;TEST&lt;/code&gt;、&lt;code&gt;Staging&lt;/code&gt;、&lt;code&gt;Master&lt;/code&gt; 四个环境之外，额外设立一个&lt;code&gt;Preview&lt;/code&gt;环境。项目的各个功能分支，无论处于何种状态，均可立即合并至&lt;code&gt;Preview&lt;/code&gt;环境。功能开发完成后，项目负责人可直接将该功能分支合并至&lt;code&gt;Preview&lt;/code&gt;分支，解决合并冲突后通过&lt;code&gt;CI/CD&lt;/code&gt;流水线自动部署至&lt;code&gt;Preview&lt;/code&gt;环境，从而方便地进行功能演示。&lt;code&gt;Preview&lt;/code&gt;环境主要用于功能演示，最终的代码合并仍需以&lt;code&gt;Dev&lt;/code&gt;、&lt;code&gt;TEST&lt;/code&gt;、&lt;code&gt;Staging&lt;/code&gt;、&lt;code&gt;Master&lt;/code&gt; 四个分支为主，项目负责人在完成代码评审后，需将功能分支代码合并至&lt;code&gt;Dev&lt;/code&gt;分支。&lt;/p&gt;
&lt;p&gt;通过以上提供的三种解决方案，包括项目负责人在会前做好准备工作、通过&lt;code&gt;GitLab&lt;/code&gt;查看功能分支代码进行验收、提供&lt;code&gt;Preview&lt;/code&gt;环境以便直接合并功能分支进行验收，相信可以解决会议上因代码没有合并，从而无法进行功能演示的问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我们每周二都会召开项目进度例会，会议中需要逐一汇报五六个项目的进展情况。为了能够在会议中顺利演示相关功能，必须将已开发完成的功能代码合并至<code>Dev</code>分支，否则将无法进行功能演示。</p>
<p>对于那些能够在会议前完成合并的分支，其代码已成功合并至开发环境平台，此时仅需进行功能验收即可。然而，功能分支的代码需经过项目负责人的评审，但往往功能开发任务在当天刚刚完成，而项目负责人本身还承担着其他功能的开发任务，因此难以及时完成代码评审及合并工作。在这种情况下，该如何妥善处理呢？</p>
<p>一种可行的方案是<code>Clone</code>功能分支代码至本地，在本地环境中运行并进行验收。但这一流程存在诸多不便：需要<code>Clone</code>分支代码、安装依赖，且可能面临与本地环境不兼容的问题，还需进行微调才能成功运行，整个过程较为繁琐。在会议中花费大量时间进行此类操作显然毫无意义，那么如何简化这一流程呢？</p>
<p>一方面，可以在会议前与相关人员进行沟通，提前了解哪些任务已完成且已合并至<code>Dev</code>分支，哪些功能的代码尚未完成评审并合并至<code>Dev</code>分支。对于尚未合并的功能分支，可提前将其<code>Clone</code>至本地电脑，安装好依赖并成功运行，待开会时通过远程连接至本地电脑即可进行演示。</p>
<p>另一种方案是直接打开代码仓库<code>GitLab</code>，查看项目分支的代码，让负责功能开发的同事详细介绍该功能的实现方式以及代码的设计思路，这样既能解决上述问题，也能达到功能演示的目的。</p>
<p>此外，还可以考虑在现有的<code>Dev</code>、<code>TEST</code>、<code>Staging</code>、<code>Master</code> 四个环境之外，额外设立一个<code>Preview</code>环境。项目的各个功能分支，无论处于何种状态，均可立即合并至<code>Preview</code>环境。功能开发完成后，项目负责人可直接将该功能分支合并至<code>Preview</code>分支，解决合并冲突后通过<code>CI/CD</code>流水线自动部署至<code>Preview</code>环境，从而方便地进行功能演示。<code>Preview</code>环境主要用于功能演示，最终的代码合并仍需以<code>Dev</code>、<code>TEST</code>、<code>Staging</code>、<code>Master</code> 四个分支为主，项目负责人在完成代码评审后，需将功能分支代码合并至<code>Dev</code>分支。</p>
<p>通过以上提供的三种解决方案，包括项目负责人在会前做好准备工作、通过<code>GitLab</code>查看功能分支代码进行验收、提供<code>Preview</code>环境以便直接合并功能分支进行验收，相信可以解决会议上因代码没有合并，从而无法进行功能演示的问题。</p>
]]></content:encoded>
    </item>
    <item>
      <title>储能企业调研流程基于AI智能体优化</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E5%82%A8%E8%83%BD%E4%BC%81%E4%B8%9A%E8%B0%83%E7%A0%94%E6%B5%81%E7%A8%8B%E5%9F%BA%E4%BA%8Eai%E6%99%BA%E8%83%BD%E4%BD%93%E4%BC%98%E5%8C%96/</link>
      <pubDate>Thu, 17 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E5%82%A8%E8%83%BD%E4%BC%81%E4%B8%9A%E8%B0%83%E7%A0%94%E6%B5%81%E7%A8%8B%E5%9F%BA%E4%BA%8Eai%E6%99%BA%E8%83%BD%E4%BD%93%E4%BC%98%E5%8C%96/</guid>
      <description>&lt;h1 id=&#34;1-存在问题&#34;&gt;1. 存在问题&lt;/h1&gt;
&lt;p&gt;在做储能企业调研的时候，我们总会依次对每个企业进行分析，比如查看官网信息，或者使用必应搜索，从中查找到我们关注的要点信息，比如企业所在地区、企业规模、企业的产品、企业是否有做工商储等等，这些信息都要去收集和整理，然后，对其进行判断得有依据，比如企业的产品有哪些？为什么可以说有这些？依据在哪里？官网上有展示，还是相关新闻上有列出？我在调研了十几个企业之后，就忍不了了，效率真的太低了，所以工作方式就想办法优化一下。&lt;/p&gt;
&lt;h1 id=&#34;2-方案一使用当贝-ai-设计提示语实现&#34;&gt;2. 方案一：使用当贝 AI 设计提示语实现&lt;/h1&gt;
&lt;p&gt;以当贝 AI 为例，其实际上也是基于 DeepSeek 使用的。主要是要求从企业名称、地区、实缴资本、参保人数、企业性质、产品、是否已做工商储能、是否已有云平台、EMS 软件是否自研、致远与其合作机会点这几个维度，给出准确的答案，且要有依据，不能瞎编乱造，要显示依据的信息源头，并使用表格输出。其中，企业性质是指企业在储能行业的性质，比如储能设备厂商、储能方案供应商、设备厂商等。提示语如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我每次发一个企业名称，您就从网上收集资料，从以下几个维度提供准确的答案：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 企业名称
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 地区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 实缴资本
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 参保人数
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 企业性质（指企业在储能行业的性质，如储能设备厂商、储能方案供应商、设备厂商等）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 产品
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 是否已做工商储能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 是否已有云平台
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- EMS 软件是否自研
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 致远与其合作机会点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求提供依据，不能瞎编乱造，并显示依据的信息源头，使用表格输出。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;随机使用网上的企业验证，可以看到如下结果，有结论还有信息源头链接。其中，实缴资本和参保人数，去爱企查对比过了，基本都一致。其他的，如果不太确定，可以点击信息的来源链接再次确认。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171737960.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171737901.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3-方案二基于扣子开发ai智能体推荐&#34;&gt;3. 方案二：基于扣子开发AI智能体【推荐】&lt;/h1&gt;
&lt;p&gt;方案一虽然能解决存在的问题，但是，没有解决彻底，在使用了几十次之后，暴露了一些问题，如下所示：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当贝 AI 提问次数过多，页面就会卡顿。&lt;/li&gt;
&lt;li&gt;每次提问过十几次，就会胡乱改动要求的输出格式，输出的格式很不稳定。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了解决这些问题，基于扣子平台开发了名为“储能企业调研专家”的 AI 智能体，该智能体基于 DeepSeek-V3 模型。角色设定与回复内容如下：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808251.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后扣子平台会根据提示词自动添加插件，用于加强智能体的功能，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808463.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;最终，经过不断根据输出的结果反馈，去优化提示语，功能基本满足当前需求，使用页面如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808852.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;使用网上随机一个企业进行验证，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171738608.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;点击“储能是否已有云平台”依据的链接，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171739837.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;5-最后&#34;&gt;5. 最后&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;使用“储能企业调研专家”AI智能体进行后续的企业调研工作，简化和高效收集企业相关信息，虽然不是百分百正确，但是相对于人工存在的收集完整性和效率问题，稍有出入还是可以接受的，毕竟，最终还是要深入去和销售沟通的，当前的工作只是做一下筛选，已经可以满足需求了。&lt;/li&gt;
&lt;li&gt;下一步的计划是，基于扣子开发工作流的应用，把企业名单上传，然后补全企业全称，然后再通过多个维度补全信息，就直接拿到调研结果，效率更高。&lt;/li&gt;
&lt;li&gt;储能企业调研专家：&lt;code&gt;https://www.coze.cn/s/2od-7ymcuHk&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-存在问题">1. 存在问题</h1>
<p>在做储能企业调研的时候，我们总会依次对每个企业进行分析，比如查看官网信息，或者使用必应搜索，从中查找到我们关注的要点信息，比如企业所在地区、企业规模、企业的产品、企业是否有做工商储等等，这些信息都要去收集和整理，然后，对其进行判断得有依据，比如企业的产品有哪些？为什么可以说有这些？依据在哪里？官网上有展示，还是相关新闻上有列出？我在调研了十几个企业之后，就忍不了了，效率真的太低了，所以工作方式就想办法优化一下。</p>
<h1 id="2-方案一使用当贝-ai-设计提示语实现">2. 方案一：使用当贝 AI 设计提示语实现</h1>
<p>以当贝 AI 为例，其实际上也是基于 DeepSeek 使用的。主要是要求从企业名称、地区、实缴资本、参保人数、企业性质、产品、是否已做工商储能、是否已有云平台、EMS 软件是否自研、致远与其合作机会点这几个维度，给出准确的答案，且要有依据，不能瞎编乱造，要显示依据的信息源头，并使用表格输出。其中，企业性质是指企业在储能行业的性质，比如储能设备厂商、储能方案供应商、设备厂商等。提示语如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">我每次发一个企业名称，您就从网上收集资料，从以下几个维度提供准确的答案：
</span></span><span class="line"><span class="cl">- 企业名称
</span></span><span class="line"><span class="cl">- 地区
</span></span><span class="line"><span class="cl">- 实缴资本
</span></span><span class="line"><span class="cl">- 参保人数
</span></span><span class="line"><span class="cl">- 企业性质（指企业在储能行业的性质，如储能设备厂商、储能方案供应商、设备厂商等）
</span></span><span class="line"><span class="cl">- 产品
</span></span><span class="line"><span class="cl">- 是否已做工商储能
</span></span><span class="line"><span class="cl">- 是否已有云平台
</span></span><span class="line"><span class="cl">- EMS 软件是否自研
</span></span><span class="line"><span class="cl">- 致远与其合作机会点
</span></span><span class="line"><span class="cl">要求提供依据，不能瞎编乱造，并显示依据的信息源头，使用表格输出。
</span></span></code></pre></div><p>随机使用网上的企业验证，可以看到如下结果，有结论还有信息源头链接。其中，实缴资本和参保人数，去爱企查对比过了，基本都一致。其他的，如果不太确定，可以点击信息的来源链接再次确认。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171737960.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171737901.png"></p>
<h1 id="3-方案二基于扣子开发ai智能体推荐">3. 方案二：基于扣子开发AI智能体【推荐】</h1>
<p>方案一虽然能解决存在的问题，但是，没有解决彻底，在使用了几十次之后，暴露了一些问题，如下所示：</p>
<ol>
<li>当贝 AI 提问次数过多，页面就会卡顿。</li>
<li>每次提问过十几次，就会胡乱改动要求的输出格式，输出的格式很不稳定。</li>
</ol>
<p>为了解决这些问题，基于扣子平台开发了名为“储能企业调研专家”的 AI 智能体，该智能体基于 DeepSeek-V3 模型。角色设定与回复内容如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808251.png"></p>
<p>然后扣子平台会根据提示词自动添加插件，用于加强智能体的功能，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808463.png"></p>
<p>最终，经过不断根据输出的结果反馈，去优化提示语，功能基本满足当前需求，使用页面如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171808852.png"></p>
<p>使用网上随机一个企业进行验证，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171738608.png"></p>
<p>点击“储能是否已有云平台”依据的链接，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504171739837.png"></p>
<h1 id="5-最后">5. 最后</h1>
<ol>
<li>使用“储能企业调研专家”AI智能体进行后续的企业调研工作，简化和高效收集企业相关信息，虽然不是百分百正确，但是相对于人工存在的收集完整性和效率问题，稍有出入还是可以接受的，毕竟，最终还是要深入去和销售沟通的，当前的工作只是做一下筛选，已经可以满足需求了。</li>
<li>下一步的计划是，基于扣子开发工作流的应用，把企业名单上传，然后补全企业全称，然后再通过多个维度补全信息，就直接拿到调研结果，效率更高。</li>
<li>储能企业调研专家：<code>https://www.coze.cn/s/2od-7ymcuHk</code></li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《长安的荔枝》读后感</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E9%95%BF%E5%AE%89%E7%9A%84%E8%8D%94%E6%9E%9D%E8%AF%BB%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E9%95%BF%E5%AE%89%E7%9A%84%E8%8D%94%E6%9E%9D%E8%AF%BB%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;img src=&#34;https://dstweihao.cn/Users/haowei/Downloads/图片/202504142357556.jpg&#34; style=&#34;zoom: 50%; &#34; /&gt;
&lt;h1 id=&#34;读后感&#34;&gt;读后感&lt;/h1&gt;
&lt;h2 id=&#34;1&#34;&gt;1&lt;/h2&gt;
&lt;p&gt;“一骑红尘妃子笑，无人知是荔枝来。”这句诗早已深入人心，本书正是以此为灵感创作而成。这是我第一次阅读马伯庸的作品，初读之下，便觉得生词颇多。或许是因为我平时阅读量较少，许多成语都未曾见过。书中用词多与时代背景契合，虽稍显生僻，却并未让人觉得突兀。&lt;/p&gt;
&lt;p&gt;此前，我曾多次向微信读书反馈，建议开发生词本功能，以便读者能积累生僻字词和成语。然而，微信读书对此并没有任何回应，可能认为该功能与现有的笔记功能重复，于是便不了了之了。&lt;/p&gt;
&lt;h2 id=&#34;2&#34;&gt;2&lt;/h2&gt;
&lt;p&gt;阅读本书时，我的脑海中不断浮现出电影《妖猫传》的画面。陈凯歌近年来的作品常受诟病，但《妖猫传》尚可圈点。此类题材的电影本就稀缺，能拍得不错的更是寥寥无几。《妖猫传》对大唐盛世的全方位塑造，令人较为满意。至于贵妃扮演者容貌欠佳的问题，我便不多作评论，姑且凑合着看吧，只能说尚可。杨贵妃诞辰之夜，歌舞升平，觥筹交错，朝臣百姓皆沉醉于大唐盛世之中。再加上幻术表演，宛如仙境。李白醉卧于地，命高力士脱靴，并留下千古名句“云想衣裳花想容”，好一番意气风发之态。在这样的场景构建下，我脑海中的画面与书中的内容自然融合，愈发生动形象。&lt;/p&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;p&gt;本书着重讲述了如何将岭南的新鲜荔枝运至长安。阅读过程中，我一直在思考解决方案。首先想到的是使用冰块，途中不断补充冰块，似乎就能解决问题。然而，当时的条件恐怕难以大量制作冰块，尤其是在夏季的南方，天气炎热，冰块很快就会融化，此方案显然不可行。于是，我又想到另一个方案：直接用马车将整棵荔枝树运到长安。不管花费多少，反正不是我出钱，最终都要朝廷承担，有钱就是任性。但马车长途跋涉，荔枝可能会在途中掉落。即便将果实包裹妥当，以防止震落，最终难以解决的问题是行驶速度过慢，不知何时才能抵达长安。既然此方案也不行，我又想到另一个脑洞大开的方案：既然荔枝运不到长安，为何不让杨贵妃直接去岭南呢？毕竟，这本书后续的发展谁又能猜到呢？世人都认为荔枝要从岭南送到长安，为何不能把杨贵妃搬到岭南呢？当时我将能想到的方案都想了一遍，如今整理这些心得，仍觉得饶有趣味。&lt;/p&gt;
&lt;h2 id=&#34;4&#34;&gt;4&lt;/h2&gt;
&lt;p&gt;书中对吃甘蔗的描写十分生动，有一种亲切感，还提到蟑螂有小老鼠一般大小，我不由得想到了两张经典的梗图。一张是“广东蟑螂很担心你”，另一张是“广东蟑螂机场到了”。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504150003979.jpg&#34; style=&#34;zoom:25%;&#34; /&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504150003345.jpg&#34; style=&#34;zoom:25%;&#34; /&gt;
&lt;h2 id=&#34;5&#34;&gt;5&lt;/h2&gt;
&lt;p&gt;书中提到有胡商一直在广州做香料生意，这让我联想到广州三里屯，那里有很多外国人，每次与他们擦肩而过，都能闻到浓烈的香水气味，令人不禁皱眉。书中还讲到了林邑奴，也就是我们常说的昆仑奴，大部分人不怎么深究的话，都普遍理解为“黑色皮肤的奴隶”。然而，当“广州”“昆仑奴”“黑人”这几个要素串联起来时，我真的有点绷不住了，这也太地狱笑话了。&lt;/p&gt;
&lt;p&gt;陈凯歌的电影《无极》中就出现了昆仑奴的形象，而在金庸的武侠小说《侠客行》后记里，也有专门为《三十三剑客图》所作的小传，其中提到的虬髯客、聂隐娘和昆仑奴都给我留下了深刻的印象。虬髯客是一个神秘的游侠，聂隐娘没记错有变大变小的本领，前几年还有一部由舒淇主演的电影《聂隐娘》。昆仑奴的故事似乎也是一个忠心义气的故事，盲猜马伯庸也是借鉴了这一点。&lt;/p&gt;
&lt;p&gt;说回林邑奴，一开始我还有些调侃的心态，但看到后面林邑奴为报恩情，选择赴死，不由得让人肃然起敬：“向主人尽忠，乃是我的本分，跑来示警，是为了向大使报恩。”&lt;/p&gt;
&lt;h2 id=&#34;6&#34;&gt;6&lt;/h2&gt;
&lt;p&gt;鱼朝恩这个名字听起来不错，我一下子想到了鱼玄机。她好像是唐代的歌妓，又好像在《鹿鼎记》中出现过，但不对，那是陈圆圆。后来想起，鱼玄机应该是杨叛的推理武侠小说《鬼缠铃》中的人物，印象已十分模糊，似乎是一个有诗才、超脱尘世的女子。但后来得知，唐代女诗人鱼玄机的才华可与李清照媲美，是我孤陋寡闻了。&lt;/p&gt;
&lt;h2 id=&#34;7&#34;&gt;7&lt;/h2&gt;
&lt;p&gt;总觉得李善德对一些事情过于掉以轻心。当鱼朝恩向李善德索要荔枝转运的手札时，我就觉得事情不妙。而且，他掌握转运荔枝之法从岭南回来后，为什么不先找韩洄、杜甫商量，却先自行去各大部门走流程呢？本来在去岭南之前，大家都有过深入探讨，如今他掌握更多信息，应该与二人共享，共同商讨对策。不过，这也不能全怪李善德，毕竟韩洄在毫无头绪时，只会劝李善德和老婆离婚，属于是梅开二度了。别人都说“行有不得，反求诸己”，“遇事不决，量子力学”，他却说：“要不，你还是赶紧回家，跟嫂子和离吧。”，着实笑死个人。&lt;/p&gt;
&lt;h2 id=&#34;8&#34;&gt;8&lt;/h2&gt;
&lt;p&gt;“内圣外王”这个成语让我颇感兴趣，这似乎也可以和王阳明的“知行合一”对应上。还有就是，这不就是《艾尔登法环》游戏里面的设定吗？在《艾尔登法环》中，统治者为神人，然后需要找配偶作为艾尔登法环之王，在外征战，一个主要在内统治，一个主要在外开疆扩土，这居然都能对应上，想想就挺有意思的。&lt;/p&gt;
&lt;h2 id=&#34;9&#34;&gt;9&lt;/h2&gt;
&lt;p&gt;当苏谅质问李善德时，我不禁想起了《西游记》中的老龟。老龟曾恳求唐僧向佛祖询问自己何时能得道成仙，可唐僧却把这事给忘了。结果，老龟一怒之下，将师徒四人抛入河中，经书受潮，字迹变得模糊不清。他们只能在岸上把经书打开晒干。看着唐僧垂头丧气的样子，孙悟空道出了一句充满佛理的话：“天地本不全，天地也应不全之理，非人力所能为也。”&lt;/p&gt;
&lt;h2 id=&#34;10&#34;&gt;10&lt;/h2&gt;
&lt;p&gt;“怎么会这样？万事即将俱备，怎么上头又改需求？”本是一本官场讽刺小说，却让我联想到了项目管理。李善德就相当于项目经理，要把一件事做成，确实不容易。需求一变，所有事情都可能要重新调整，深有体会。如果感兴趣，可以看看我的《项目管理：问题描述与解决方案》系列，便知其中无奈。&lt;/p&gt;
&lt;h2 id=&#34;11&#34;&gt;11&lt;/h2&gt;
&lt;p&gt;“每到夏日，上头说要一块冰，中间为求安全，会按十块来调拨。下头执行的人为了更安全，总得备出二十块才放心。层层加码，步步增量，至于是否会造成浪费，并没人关心。”这太真实了，就像上级张三接到任务，要求项目必须在4月25日之前完成，张三便要求下属李四在4月20日之前完成，李四又让王五在4月15日完成，不断压缩时间，以防出现问题，没有回旋的余地。最后，项目在4月18日完成，王五还觉得很愧疚，李四为安抚人心，还说“晚一两天不算什么大事”，硬是赚了个老好人的形象。其实只有李四心里清楚，张三要求的是4月20日之前完成，上下两头好处都占了。&lt;/p&gt;
&lt;p&gt;这本书看似官场现形记，实则在职场也是如此。一旦扯皮，就完全扯不清，都在踢皮球。前几年，有次公司有个流程一直没走通，我问了这个人，他说找谁谁谁，问了那个人，又说找谁谁谁，最后才反应过来，这分明就是在踢皮球。我直接拉了一个群讨论，结果还是说不清，还在扯皮，气得我差点暴走，直接解散了群，爱干不干。这是我工作上唯一一次破防，幸好忍住了没在群里开骂。但之后我非常后悔，因为太不成熟了。虽然任由情绪发泄很爽很痛快，但太愚蠢了，就像在战场上自己赌气从战壕跳出来，暴露在阳光下一样，不懂得保护自己。而且，稍微遇到点不公觉得不可思议的事情就这样，以后还怎么做更大的事情呢？站在他们的角度，并没有什么问题。我为什么一定要做可在可不在我工作范围内的事情？公司有明文规定说我就必须要干这个事情吗？就算公司真有明文规定我就一定要遵守吗？我为什么就一定要帮一下？我为什么就一定要尽心尽力做好工作？不能理所当然、强制地要求他人，这真的是经验教训。&lt;/p&gt;
&lt;h2 id=&#34;12&#34;&gt;12&lt;/h2&gt;
&lt;p&gt;荔枝还是冰镇的好吃，那一口下去，酸甜可口。印象中倒没有因吃多上火流鼻血。不过，可能都是生活中太过熟悉的东西了，早就不怎么稀罕了，都不太记得上次吃荔枝是几年前的事了。还是要想起小时候，在果园玩耍或者摘荔枝吃的那些时光，在书里都能找到一些影子，那真是无忧无虑的生活。书中反复提到那一句“做人最重要的就是开心”，这句话好像在香港的电影中，亦或者粤语地区常能听到，人生嘛，理应如此的。&lt;/p&gt;
&lt;h2 id=&#34;13&#34;&gt;13&lt;/h2&gt;
&lt;p&gt;小说的最后，李善德对杨国忠的那番慷慨陈词，实属勇气可嘉。要知道，这本就是掉脑袋的事情。即便李善德从岭南转运荔枝有功，但如果杨国忠真要搞死他，那也是分分钟的事。这部分无疑是整本书的高潮。因为从本书一开始，李善德就处处碰壁，经历了无数的憋屈和压抑。终于，在这里，读者与他一道，扬眉吐气了。&lt;/p&gt;
&lt;h2 id=&#34;14&#34;&gt;14&lt;/h2&gt;
&lt;p&gt;杨贵妃不过是大唐盛世、权力表现的一种象征。没有杨贵妃，也会有李贵妃、赵贵妃，或者其他能彰显盛世奢靡的人物。就像纣王的酒池肉林，只是奢靡的另一种表现形式。&lt;/p&gt;
&lt;p&gt;表面上看，唐玄宗千里送荔枝是为了博美人一笑，但实际上，这正是他“富贵不还乡，如锦衣夜行”的炫耀心态的体现。他仿佛站在世界之巅，呼风唤雨，无所不能。当统治者陷入这种沾沾自喜的心态，很容易变得刚愎自用，且不知居安思危，走向灭亡是必然的。&lt;/p&gt;
&lt;p&gt;烽火戏诸侯也是如此，表面上看是周幽王昏庸无道，居然为了博褒姒一笑，点燃了烽火台，戏弄了诸侯，实际上也是一种权力的炫耀心态。&lt;/p&gt;
&lt;p&gt;同《妖猫传》的结局一样，安史之乱很快到来，曾经的繁华最终只剩下马嵬坡的一缕香魂。&lt;/p&gt;
&lt;h1 id=&#34;摘抄&#34;&gt;摘抄&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;老兵突然明白了，既是身临绝境，退无可退，何不向前拼死一搏，说不定还能搏出一点微茫希望。&lt;/li&gt;
&lt;li&gt;骨肉恩岂断，男儿死无时。&lt;/li&gt;
&lt;li&gt;做人最重要的就是开心。&lt;/li&gt;
&lt;li&gt;天下送客最好的手段，莫过于开口借钱。&lt;/li&gt;
&lt;li&gt;他感觉自己比发问前知道得更少了。&lt;/li&gt;
&lt;li&gt;石榴酒，葡萄浆。兰桂芳，茱萸香。愿君驻金鞍，暂此共年芳。愿君解罗襦，一醉同匡床。文君正新寡，结念在歌倡。昨宵绮帐迎韩寿，今朝罗袖引潘郎。莫吹羌笛惊邻里，不用琵琶喧洞房。且歌新夜曲，莫弄楚明光。此曲怨且艳，哀音断人肠。&lt;/li&gt;
&lt;li&gt;无心与物竞，鹰隼莫相猜。&lt;/li&gt;
&lt;li&gt;等死，死国可乎？&lt;/li&gt;
&lt;li&gt;向主人尽忠，乃是我的本分，跑来示警，是为了向大使报恩。&lt;/li&gt;
&lt;li&gt;嘁！人家堂堂岭南五府经略使，会嫉妒你吗？何节帅是担心圣人起了疑心：为何李善德能把新鲜荔枝运来，他却不能？是不能还是不愿？岭南山长水远，这经略使的旗节还能不能放心给他？&lt;/li&gt;
&lt;li&gt;你若在呈上转运法之时，附上一份谢表，说明此事有岭南五府经略使着力推动，度支司同人大力支持，太府寺、司农寺、尚食局助力良多，你猜鱼朝恩还敢不敢抢你的功？良元兄啊，做官之道，其实就三句话：和光同尘，雨露均沾，花花轿子众人抬。一个人吃独食，是吃不长久的。&lt;/li&gt;
&lt;li&gt;“要不，你还是赶紧回家，跟嫂子和离吧。”&lt;/li&gt;
&lt;li&gt;甲，叙荔枝物性易变事；乙，叙岭南京城驿路事；丙，叙分枝植瓮之法并盐洗隔水之法；丁，叙转运路线并交替驿传之法；戊，叙诸色耗费与程限事。&lt;/li&gt;
&lt;li&gt;流程那种东西，是弱者才要遵循的规矩。&lt;/li&gt;
&lt;li&gt;其实，杨国忠不给手书，还有一层深意。倘若李善德把事情办砸了，他只消收回银牌，两者之间便没任何关系，没有任何文书留迹，切割得清清楚楚。&lt;/li&gt;
&lt;li&gt;以力破巧，因地制宜。&lt;/li&gt;
&lt;li&gt;怎么会这样？万事即将俱备，怎么上头又改需求？&lt;/li&gt;
&lt;li&gt;每到夏日，上头说要一块冰，中间为求安全，会按十块来调拨。下头执行的人为了更安全，总得备出二十块才放心。层层加码，步步增量，至于是否会造成浪费，并没人关心。&lt;/li&gt;
&lt;li&gt;荔枝转运的费用，其实是颇有为难的。从太府寺的藏署出并不合适，国用虽丰，自有法度，总要量入为出；而从大盈库里拿，等于是从圣人的锦袋里掏钱，也不是不行，但咱们做臣子的，非但不为陛下分忧，反而去讨债，不是为臣之道。&lt;/li&gt;
&lt;li&gt;越接近成功，我的朋友就越少，内心就越愧疚。&lt;/li&gt;
&lt;li&gt;圣人刚打赏过的官员，你们转头就说他该判斩刑？是暗讽圣人识人不明吗？&lt;/li&gt;
&lt;li&gt;此事起于贵妃的一句无心感叹，终于贵妃的一声轻笑。&lt;/li&gt;
&lt;li&gt;一个因从岭南运荔枝而犯事的官员，居然被判处长流岭南。&lt;/li&gt;
&lt;li&gt;他这个人哪，笨拙，胆小，窝囊，可一定会豁出命去守护他所珍视的东西。&lt;/li&gt;
&lt;li&gt;无论什么烂人都有优点。&lt;/li&gt;
&lt;li&gt;我嫁的是他，又不是长安。&lt;/li&gt;
&lt;li&gt;如果你用周德文的视角去审视史书上每一件大事，你会发现，上头一道命令，下面的人得忙活上半天，有大量琐碎的事务要处理。光是模拟想象一下，头发都会一把一把地掉。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;成语&#34;&gt;成语&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;不啻天壤 (bù chì tiān rǎng) - 形容差别极大，如同天与地的距离。&lt;/li&gt;
&lt;li&gt;钤印押缝 (qián yìn yā fèng) - 在文书或字画接缝处盖章，表示确认或防伪。&lt;/li&gt;
&lt;li&gt;口含天宪 (kǒu hán tiān xiàn) - 指代皇帝或权臣的言语如同法律，不容违抗。&lt;/li&gt;
&lt;li&gt;四肢百骸 (sì zhī bǎi hái) - 泛指全身的骨骼和肢体，借指整个身体。&lt;/li&gt;
&lt;li&gt;引颈受戮 (yǐn jǐng shòu lù) - 伸长脖子等待被杀，形容认罪伏法或甘愿受罚。&lt;/li&gt;
&lt;li&gt;贻人口实 (yí rén kǒu shí) - 给人留下话柄或把柄，导致被指责。&lt;/li&gt;
&lt;li&gt;恒河沙数 (héng hé shā shù) - 像恒河中的沙子一样多，形容数量极多。&lt;/li&gt;
&lt;li&gt;癣疥之疾 (xuǎn jiè zhī jí) - 比喻无足轻重的小问题或轻微的祸患。&lt;/li&gt;
&lt;li&gt;洞若观火 (dòng ruò guān huǒ) - 形容观察事物非常透彻清楚，如同看火一样明显。&lt;/li&gt;
&lt;li&gt;案牍劳形 (àn dú láo xíng) - 长期伏案处理文书，使身体疲惫。&lt;/li&gt;
&lt;li&gt;花萼相辉 (huā è xiāng huī) - 比喻兄弟友爱和睦，如同花与萼相互映衬。&lt;/li&gt;
&lt;li&gt;所费不赀 (suǒ fèi bù zī) - 花费的钱财无法计量，形容耗费巨大。&lt;/li&gt;
&lt;li&gt;如臂使指 (rú bì shǐ zhǐ) - 比喻指挥调动灵活自如，完全听从支配。&lt;/li&gt;
&lt;li&gt;涓埃不剩 (juān āi bù shèng) - 连一滴水、一粒尘都不剩，形容彻底消失或耗尽。&lt;/li&gt;
&lt;li&gt;文山牍海 (wén shān dú hǎi) - 形容文件或文书堆积如山，事务繁重。&lt;/li&gt;
&lt;li&gt;内圣外王 (nèi shèng wài wáng) - 儒家思想中修养自身以成圣贤，对外施行王道治国。&lt;/li&gt;
&lt;li&gt;明艳无俦 (míng yàn wú chóu) - 形容光彩夺目，美丽无人能比。&lt;/li&gt;
&lt;li&gt;汲汲营营 (jí jí yíng yíng) - 急切地追逐名利，忙于钻营算计。&lt;/li&gt;
&lt;li&gt;羚羊挂角 (líng yáng guà jiǎo) - 比喻诗文意境超脱，不着痕迹，无迹可寻。&lt;/li&gt;
&lt;li&gt;熟极而流 (shú jí ér liú) - 技艺熟练到极致时，运用自如如流水般自然。&lt;/li&gt;
&lt;li&gt;叩石垦壤 (kòu shí kěn rǎng) - 敲击石头开垦土地，形容艰苦的劳作或创业。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="/Users/haowei/Downloads/图片/202504142357556.jpg" style="zoom: 50%; " />
<h1 id="读后感">读后感</h1>
<h2 id="1">1</h2>
<p>“一骑红尘妃子笑，无人知是荔枝来。”这句诗早已深入人心，本书正是以此为灵感创作而成。这是我第一次阅读马伯庸的作品，初读之下，便觉得生词颇多。或许是因为我平时阅读量较少，许多成语都未曾见过。书中用词多与时代背景契合，虽稍显生僻，却并未让人觉得突兀。</p>
<p>此前，我曾多次向微信读书反馈，建议开发生词本功能，以便读者能积累生僻字词和成语。然而，微信读书对此并没有任何回应，可能认为该功能与现有的笔记功能重复，于是便不了了之了。</p>
<h2 id="2">2</h2>
<p>阅读本书时，我的脑海中不断浮现出电影《妖猫传》的画面。陈凯歌近年来的作品常受诟病，但《妖猫传》尚可圈点。此类题材的电影本就稀缺，能拍得不错的更是寥寥无几。《妖猫传》对大唐盛世的全方位塑造，令人较为满意。至于贵妃扮演者容貌欠佳的问题，我便不多作评论，姑且凑合着看吧，只能说尚可。杨贵妃诞辰之夜，歌舞升平，觥筹交错，朝臣百姓皆沉醉于大唐盛世之中。再加上幻术表演，宛如仙境。李白醉卧于地，命高力士脱靴，并留下千古名句“云想衣裳花想容”，好一番意气风发之态。在这样的场景构建下，我脑海中的画面与书中的内容自然融合，愈发生动形象。</p>
<h2 id="3">3</h2>
<p>本书着重讲述了如何将岭南的新鲜荔枝运至长安。阅读过程中，我一直在思考解决方案。首先想到的是使用冰块，途中不断补充冰块，似乎就能解决问题。然而，当时的条件恐怕难以大量制作冰块，尤其是在夏季的南方，天气炎热，冰块很快就会融化，此方案显然不可行。于是，我又想到另一个方案：直接用马车将整棵荔枝树运到长安。不管花费多少，反正不是我出钱，最终都要朝廷承担，有钱就是任性。但马车长途跋涉，荔枝可能会在途中掉落。即便将果实包裹妥当，以防止震落，最终难以解决的问题是行驶速度过慢，不知何时才能抵达长安。既然此方案也不行，我又想到另一个脑洞大开的方案：既然荔枝运不到长安，为何不让杨贵妃直接去岭南呢？毕竟，这本书后续的发展谁又能猜到呢？世人都认为荔枝要从岭南送到长安，为何不能把杨贵妃搬到岭南呢？当时我将能想到的方案都想了一遍，如今整理这些心得，仍觉得饶有趣味。</p>
<h2 id="4">4</h2>
<p>书中对吃甘蔗的描写十分生动，有一种亲切感，还提到蟑螂有小老鼠一般大小，我不由得想到了两张经典的梗图。一张是“广东蟑螂很担心你”，另一张是“广东蟑螂机场到了”。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504150003979.jpg" style="zoom:25%;" />
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504150003345.jpg" style="zoom:25%;" />
<h2 id="5">5</h2>
<p>书中提到有胡商一直在广州做香料生意，这让我联想到广州三里屯，那里有很多外国人，每次与他们擦肩而过，都能闻到浓烈的香水气味，令人不禁皱眉。书中还讲到了林邑奴，也就是我们常说的昆仑奴，大部分人不怎么深究的话，都普遍理解为“黑色皮肤的奴隶”。然而，当“广州”“昆仑奴”“黑人”这几个要素串联起来时，我真的有点绷不住了，这也太地狱笑话了。</p>
<p>陈凯歌的电影《无极》中就出现了昆仑奴的形象，而在金庸的武侠小说《侠客行》后记里，也有专门为《三十三剑客图》所作的小传，其中提到的虬髯客、聂隐娘和昆仑奴都给我留下了深刻的印象。虬髯客是一个神秘的游侠，聂隐娘没记错有变大变小的本领，前几年还有一部由舒淇主演的电影《聂隐娘》。昆仑奴的故事似乎也是一个忠心义气的故事，盲猜马伯庸也是借鉴了这一点。</p>
<p>说回林邑奴，一开始我还有些调侃的心态，但看到后面林邑奴为报恩情，选择赴死，不由得让人肃然起敬：“向主人尽忠，乃是我的本分，跑来示警，是为了向大使报恩。”</p>
<h2 id="6">6</h2>
<p>鱼朝恩这个名字听起来不错，我一下子想到了鱼玄机。她好像是唐代的歌妓，又好像在《鹿鼎记》中出现过，但不对，那是陈圆圆。后来想起，鱼玄机应该是杨叛的推理武侠小说《鬼缠铃》中的人物，印象已十分模糊，似乎是一个有诗才、超脱尘世的女子。但后来得知，唐代女诗人鱼玄机的才华可与李清照媲美，是我孤陋寡闻了。</p>
<h2 id="7">7</h2>
<p>总觉得李善德对一些事情过于掉以轻心。当鱼朝恩向李善德索要荔枝转运的手札时，我就觉得事情不妙。而且，他掌握转运荔枝之法从岭南回来后，为什么不先找韩洄、杜甫商量，却先自行去各大部门走流程呢？本来在去岭南之前，大家都有过深入探讨，如今他掌握更多信息，应该与二人共享，共同商讨对策。不过，这也不能全怪李善德，毕竟韩洄在毫无头绪时，只会劝李善德和老婆离婚，属于是梅开二度了。别人都说“行有不得，反求诸己”，“遇事不决，量子力学”，他却说：“要不，你还是赶紧回家，跟嫂子和离吧。”，着实笑死个人。</p>
<h2 id="8">8</h2>
<p>“内圣外王”这个成语让我颇感兴趣，这似乎也可以和王阳明的“知行合一”对应上。还有就是，这不就是《艾尔登法环》游戏里面的设定吗？在《艾尔登法环》中，统治者为神人，然后需要找配偶作为艾尔登法环之王，在外征战，一个主要在内统治，一个主要在外开疆扩土，这居然都能对应上，想想就挺有意思的。</p>
<h2 id="9">9</h2>
<p>当苏谅质问李善德时，我不禁想起了《西游记》中的老龟。老龟曾恳求唐僧向佛祖询问自己何时能得道成仙，可唐僧却把这事给忘了。结果，老龟一怒之下，将师徒四人抛入河中，经书受潮，字迹变得模糊不清。他们只能在岸上把经书打开晒干。看着唐僧垂头丧气的样子，孙悟空道出了一句充满佛理的话：“天地本不全，天地也应不全之理，非人力所能为也。”</p>
<h2 id="10">10</h2>
<p>“怎么会这样？万事即将俱备，怎么上头又改需求？”本是一本官场讽刺小说，却让我联想到了项目管理。李善德就相当于项目经理，要把一件事做成，确实不容易。需求一变，所有事情都可能要重新调整，深有体会。如果感兴趣，可以看看我的《项目管理：问题描述与解决方案》系列，便知其中无奈。</p>
<h2 id="11">11</h2>
<p>“每到夏日，上头说要一块冰，中间为求安全，会按十块来调拨。下头执行的人为了更安全，总得备出二十块才放心。层层加码，步步增量，至于是否会造成浪费，并没人关心。”这太真实了，就像上级张三接到任务，要求项目必须在4月25日之前完成，张三便要求下属李四在4月20日之前完成，李四又让王五在4月15日完成，不断压缩时间，以防出现问题，没有回旋的余地。最后，项目在4月18日完成，王五还觉得很愧疚，李四为安抚人心，还说“晚一两天不算什么大事”，硬是赚了个老好人的形象。其实只有李四心里清楚，张三要求的是4月20日之前完成，上下两头好处都占了。</p>
<p>这本书看似官场现形记，实则在职场也是如此。一旦扯皮，就完全扯不清，都在踢皮球。前几年，有次公司有个流程一直没走通，我问了这个人，他说找谁谁谁，问了那个人，又说找谁谁谁，最后才反应过来，这分明就是在踢皮球。我直接拉了一个群讨论，结果还是说不清，还在扯皮，气得我差点暴走，直接解散了群，爱干不干。这是我工作上唯一一次破防，幸好忍住了没在群里开骂。但之后我非常后悔，因为太不成熟了。虽然任由情绪发泄很爽很痛快，但太愚蠢了，就像在战场上自己赌气从战壕跳出来，暴露在阳光下一样，不懂得保护自己。而且，稍微遇到点不公觉得不可思议的事情就这样，以后还怎么做更大的事情呢？站在他们的角度，并没有什么问题。我为什么一定要做可在可不在我工作范围内的事情？公司有明文规定说我就必须要干这个事情吗？就算公司真有明文规定我就一定要遵守吗？我为什么就一定要帮一下？我为什么就一定要尽心尽力做好工作？不能理所当然、强制地要求他人，这真的是经验教训。</p>
<h2 id="12">12</h2>
<p>荔枝还是冰镇的好吃，那一口下去，酸甜可口。印象中倒没有因吃多上火流鼻血。不过，可能都是生活中太过熟悉的东西了，早就不怎么稀罕了，都不太记得上次吃荔枝是几年前的事了。还是要想起小时候，在果园玩耍或者摘荔枝吃的那些时光，在书里都能找到一些影子，那真是无忧无虑的生活。书中反复提到那一句“做人最重要的就是开心”，这句话好像在香港的电影中，亦或者粤语地区常能听到，人生嘛，理应如此的。</p>
<h2 id="13">13</h2>
<p>小说的最后，李善德对杨国忠的那番慷慨陈词，实属勇气可嘉。要知道，这本就是掉脑袋的事情。即便李善德从岭南转运荔枝有功，但如果杨国忠真要搞死他，那也是分分钟的事。这部分无疑是整本书的高潮。因为从本书一开始，李善德就处处碰壁，经历了无数的憋屈和压抑。终于，在这里，读者与他一道，扬眉吐气了。</p>
<h2 id="14">14</h2>
<p>杨贵妃不过是大唐盛世、权力表现的一种象征。没有杨贵妃，也会有李贵妃、赵贵妃，或者其他能彰显盛世奢靡的人物。就像纣王的酒池肉林，只是奢靡的另一种表现形式。</p>
<p>表面上看，唐玄宗千里送荔枝是为了博美人一笑，但实际上，这正是他“富贵不还乡，如锦衣夜行”的炫耀心态的体现。他仿佛站在世界之巅，呼风唤雨，无所不能。当统治者陷入这种沾沾自喜的心态，很容易变得刚愎自用，且不知居安思危，走向灭亡是必然的。</p>
<p>烽火戏诸侯也是如此，表面上看是周幽王昏庸无道，居然为了博褒姒一笑，点燃了烽火台，戏弄了诸侯，实际上也是一种权力的炫耀心态。</p>
<p>同《妖猫传》的结局一样，安史之乱很快到来，曾经的繁华最终只剩下马嵬坡的一缕香魂。</p>
<h1 id="摘抄">摘抄</h1>
<ol>
<li>老兵突然明白了，既是身临绝境，退无可退，何不向前拼死一搏，说不定还能搏出一点微茫希望。</li>
<li>骨肉恩岂断，男儿死无时。</li>
<li>做人最重要的就是开心。</li>
<li>天下送客最好的手段，莫过于开口借钱。</li>
<li>他感觉自己比发问前知道得更少了。</li>
<li>石榴酒，葡萄浆。兰桂芳，茱萸香。愿君驻金鞍，暂此共年芳。愿君解罗襦，一醉同匡床。文君正新寡，结念在歌倡。昨宵绮帐迎韩寿，今朝罗袖引潘郎。莫吹羌笛惊邻里，不用琵琶喧洞房。且歌新夜曲，莫弄楚明光。此曲怨且艳，哀音断人肠。</li>
<li>无心与物竞，鹰隼莫相猜。</li>
<li>等死，死国可乎？</li>
<li>向主人尽忠，乃是我的本分，跑来示警，是为了向大使报恩。</li>
<li>嘁！人家堂堂岭南五府经略使，会嫉妒你吗？何节帅是担心圣人起了疑心：为何李善德能把新鲜荔枝运来，他却不能？是不能还是不愿？岭南山长水远，这经略使的旗节还能不能放心给他？</li>
<li>你若在呈上转运法之时，附上一份谢表，说明此事有岭南五府经略使着力推动，度支司同人大力支持，太府寺、司农寺、尚食局助力良多，你猜鱼朝恩还敢不敢抢你的功？良元兄啊，做官之道，其实就三句话：和光同尘，雨露均沾，花花轿子众人抬。一个人吃独食，是吃不长久的。</li>
<li>“要不，你还是赶紧回家，跟嫂子和离吧。”</li>
<li>甲，叙荔枝物性易变事；乙，叙岭南京城驿路事；丙，叙分枝植瓮之法并盐洗隔水之法；丁，叙转运路线并交替驿传之法；戊，叙诸色耗费与程限事。</li>
<li>流程那种东西，是弱者才要遵循的规矩。</li>
<li>其实，杨国忠不给手书，还有一层深意。倘若李善德把事情办砸了，他只消收回银牌，两者之间便没任何关系，没有任何文书留迹，切割得清清楚楚。</li>
<li>以力破巧，因地制宜。</li>
<li>怎么会这样？万事即将俱备，怎么上头又改需求？</li>
<li>每到夏日，上头说要一块冰，中间为求安全，会按十块来调拨。下头执行的人为了更安全，总得备出二十块才放心。层层加码，步步增量，至于是否会造成浪费，并没人关心。</li>
<li>荔枝转运的费用，其实是颇有为难的。从太府寺的藏署出并不合适，国用虽丰，自有法度，总要量入为出；而从大盈库里拿，等于是从圣人的锦袋里掏钱，也不是不行，但咱们做臣子的，非但不为陛下分忧，反而去讨债，不是为臣之道。</li>
<li>越接近成功，我的朋友就越少，内心就越愧疚。</li>
<li>圣人刚打赏过的官员，你们转头就说他该判斩刑？是暗讽圣人识人不明吗？</li>
<li>此事起于贵妃的一句无心感叹，终于贵妃的一声轻笑。</li>
<li>一个因从岭南运荔枝而犯事的官员，居然被判处长流岭南。</li>
<li>他这个人哪，笨拙，胆小，窝囊，可一定会豁出命去守护他所珍视的东西。</li>
<li>无论什么烂人都有优点。</li>
<li>我嫁的是他，又不是长安。</li>
<li>如果你用周德文的视角去审视史书上每一件大事，你会发现，上头一道命令，下面的人得忙活上半天，有大量琐碎的事务要处理。光是模拟想象一下，头发都会一把一把地掉。</li>
</ol>
<h1 id="成语">成语</h1>
<ol>
<li>不啻天壤 (bù chì tiān rǎng) - 形容差别极大，如同天与地的距离。</li>
<li>钤印押缝 (qián yìn yā fèng) - 在文书或字画接缝处盖章，表示确认或防伪。</li>
<li>口含天宪 (kǒu hán tiān xiàn) - 指代皇帝或权臣的言语如同法律，不容违抗。</li>
<li>四肢百骸 (sì zhī bǎi hái) - 泛指全身的骨骼和肢体，借指整个身体。</li>
<li>引颈受戮 (yǐn jǐng shòu lù) - 伸长脖子等待被杀，形容认罪伏法或甘愿受罚。</li>
<li>贻人口实 (yí rén kǒu shí) - 给人留下话柄或把柄，导致被指责。</li>
<li>恒河沙数 (héng hé shā shù) - 像恒河中的沙子一样多，形容数量极多。</li>
<li>癣疥之疾 (xuǎn jiè zhī jí) - 比喻无足轻重的小问题或轻微的祸患。</li>
<li>洞若观火 (dòng ruò guān huǒ) - 形容观察事物非常透彻清楚，如同看火一样明显。</li>
<li>案牍劳形 (àn dú láo xíng) - 长期伏案处理文书，使身体疲惫。</li>
<li>花萼相辉 (huā è xiāng huī) - 比喻兄弟友爱和睦，如同花与萼相互映衬。</li>
<li>所费不赀 (suǒ fèi bù zī) - 花费的钱财无法计量，形容耗费巨大。</li>
<li>如臂使指 (rú bì shǐ zhǐ) - 比喻指挥调动灵活自如，完全听从支配。</li>
<li>涓埃不剩 (juān āi bù shèng) - 连一滴水、一粒尘都不剩，形容彻底消失或耗尽。</li>
<li>文山牍海 (wén shān dú hǎi) - 形容文件或文书堆积如山，事务繁重。</li>
<li>内圣外王 (nèi shèng wài wáng) - 儒家思想中修养自身以成圣贤，对外施行王道治国。</li>
<li>明艳无俦 (míng yàn wú chóu) - 形容光彩夺目，美丽无人能比。</li>
<li>汲汲营营 (jí jí yíng yíng) - 急切地追逐名利，忙于钻营算计。</li>
<li>羚羊挂角 (líng yáng guà jiǎo) - 比喻诗文意境超脱，不着痕迹，无迹可寻。</li>
<li>熟极而流 (shú jí ér liú) - 技艺熟练到极致时，运用自如如流水般自然。</li>
<li>叩石垦壤 (kòu shí kěn rǎng) - 敲击石头开垦土地，形容艰苦的劳作或创业。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>Pinia持久化插件 pinia-plugin-persistedstate 的基本使用</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/pinia%E6%8C%81%E4%B9%85%E5%8C%96%E6%8F%92%E4%BB%B6-pinia-plugin-persistedstate-%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</link>
      <pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/pinia%E6%8C%81%E4%B9%85%E5%8C%96%E6%8F%92%E4%BB%B6-pinia-plugin-persistedstate-%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;在&lt;code&gt;Vue&lt;/code&gt;项目开发过程中，状态管理是至关重要的环节。随着&lt;code&gt;Pinia&lt;/code&gt;的推出，它凭借更简洁直观的&lt;code&gt;API&lt;/code&gt;，逐渐成为&lt;code&gt;Vuex&lt;/code&gt;的有力替代品。为了进一步简化本地存储的管理，&lt;a href=&#34;https://www.npmjs.com/package/pinia-plugin-persistedstate&#34;&gt;pinia-plugin-persistedstate&lt;/a&gt; 插件应运而生，它能够帮助开发者轻松实现状态的持久化。&lt;/p&gt;
&lt;p&gt;本文将详细介绍如何使用该插件，并解决在跨项目登录时由于数据格式不一致导致的问题。&lt;/p&gt;
&lt;h1 id=&#34;安装插件&#34;&gt;安装插件&lt;/h1&gt;
&lt;p&gt;在项目的根目录下运行以下命令以安装插件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pinia&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;persistedstate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;随后，在&lt;code&gt;main.ts&lt;/code&gt;文件中引入并配置插件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createPinia&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pinia&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;piniaPluginPersistedstate&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pinia-plugin-persistedstate&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pinia&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createPinia&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;pinia&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;piniaPluginPersistedstate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;完成以上步骤后，&lt;code&gt;Pinia&lt;/code&gt;便具备了持久化功能。&lt;/p&gt;
&lt;h1 id=&#34;基本使用&#34;&gt;基本使用&lt;/h1&gt;
&lt;p&gt;假设我们需要管理用户信息&lt;code&gt;userInfo&lt;/code&gt;，并将其持久化到本地存储中，那么就可以这样实现：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defineStore&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pinia&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;useUserInfoStore&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defineStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;userInfo&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;persist&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;setUserInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;info&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;按照上述配置，用户信息将自动持久化到本地存储中。&lt;/p&gt;
&lt;h1 id=&#34;仅持久化对象中的特定字段&#34;&gt;仅持久化对象中的特定字段&lt;/h1&gt;
&lt;p&gt;在实际应用中，开发者可能会面临跨项目登录时出现的兼容性问题。具体场景为：用户在项目&lt;code&gt;A&lt;/code&gt;完成登录操作后，随即打开项目&lt;code&gt;B&lt;/code&gt;。由于&lt;code&gt;Token&lt;/code&gt;的复用机制，项目&lt;code&gt;B&lt;/code&gt;会自动完成登录流程。然而，在尝试获取用户信息&lt;code&gt;userInfo&lt;/code&gt;时，由于不同项目对数据格式的定义存在差异，导致项目&lt;code&gt;B&lt;/code&gt;无法准确获取用户的&lt;code&gt;ID&lt;/code&gt;，进而无法基于此&lt;code&gt;ID&lt;/code&gt;发起正确的网络请求。具体表现如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;项目&lt;code&gt;A&lt;/code&gt;的数据格式：&lt;code&gt;{ name: &#39;xiaoming&#39;, nick_name: &#39;小明&#39;, userID: &#39;9527&#39; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;项目&lt;code&gt;B&lt;/code&gt;的数据格式：&lt;code&gt;{ userInfo: { name: &#39;xiaoming&#39;, nick_name: &#39;小明&#39;, userID: &#39;9527&#39; } }&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于插件默认将整个&lt;code&gt;state&lt;/code&gt;对象存储起来，导致数据多了一层&lt;code&gt;userInfo&lt;/code&gt;外壳，从而引发格式不一致的问题。&lt;/p&gt;
&lt;p&gt;为了去掉&lt;code&gt;userInfo&lt;/code&gt;这一层外壳，我们需要自定义序列化和反序列化逻辑。修改后的&lt;code&gt;Store&lt;/code&gt;配置如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defineStore&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pinia&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;useUserInfoStore&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defineStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;userInfo&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;persist&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;userInfo&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;storage&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;localStorage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;paths&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;userInfo&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 明确声明要持久化的字段
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;nx&#34;&gt;serializer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;serialize&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;deserialize&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;JSON.parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;setUserInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;info&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;userInfo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;经过上述配置，用户信息的存储结构变为&lt;code&gt;{ name: &#39;xiaoming&#39;, nick_name: &#39;小明&#39;, userID: &#39;9527&#39; }&lt;/code&gt;，不再有额外的&lt;code&gt;userInfo&lt;/code&gt;外壳，从而解决了跨项目登录时的格式不一致问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>在<code>Vue</code>项目开发过程中，状态管理是至关重要的环节。随着<code>Pinia</code>的推出，它凭借更简洁直观的<code>API</code>，逐渐成为<code>Vuex</code>的有力替代品。为了进一步简化本地存储的管理，<a href="https://www.npmjs.com/package/pinia-plugin-persistedstate">pinia-plugin-persistedstate</a> 插件应运而生，它能够帮助开发者轻松实现状态的持久化。</p>
<p>本文将详细介绍如何使用该插件，并解决在跨项目登录时由于数据格式不一致导致的问题。</p>
<h1 id="安装插件">安装插件</h1>
<p>在项目的根目录下运行以下命令以安装插件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">i</span> <span class="nx">pinia</span><span class="o">-</span><span class="nx">plugin</span><span class="o">-</span><span class="nx">persistedstate</span>
</span></span></code></pre></div><p>随后，在<code>main.ts</code>文件中引入并配置插件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createPinia</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pinia&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">piniaPluginPersistedstate</span> <span class="kr">from</span> <span class="s1">&#39;pinia-plugin-persistedstate&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">pinia</span> <span class="o">=</span> <span class="nx">createPinia</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="nx">pinia</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">piniaPluginPersistedstate</span><span class="p">)</span>
</span></span></code></pre></div><p>完成以上步骤后，<code>Pinia</code>便具备了持久化功能。</p>
<h1 id="基本使用">基本使用</h1>
<p>假设我们需要管理用户信息<code>userInfo</code>，并将其持久化到本地存储中，那么就可以这样实现：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineStore</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pinia&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">useUserInfoStore</span> <span class="o">=</span> <span class="nx">defineStore</span><span class="p">(</span><span class="s1">&#39;userInfo&#39;</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">state</span><span class="o">:</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="nx">userInfo</span>: <span class="kt">null</span> <span class="kr">as</span> <span class="kt">any</span>
</span></span><span class="line"><span class="cl">    <span class="p">}),</span>
</span></span><span class="line"><span class="cl">    <span class="nx">persist</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">actions</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">setUserInfo</span><span class="p">(</span><span class="nx">info</span>: <span class="kt">any</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">this</span><span class="p">.</span><span class="nx">userInfo</span> <span class="o">=</span> <span class="nx">info</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div><p>按照上述配置，用户信息将自动持久化到本地存储中。</p>
<h1 id="仅持久化对象中的特定字段">仅持久化对象中的特定字段</h1>
<p>在实际应用中，开发者可能会面临跨项目登录时出现的兼容性问题。具体场景为：用户在项目<code>A</code>完成登录操作后，随即打开项目<code>B</code>。由于<code>Token</code>的复用机制，项目<code>B</code>会自动完成登录流程。然而，在尝试获取用户信息<code>userInfo</code>时，由于不同项目对数据格式的定义存在差异，导致项目<code>B</code>无法准确获取用户的<code>ID</code>，进而无法基于此<code>ID</code>发起正确的网络请求。具体表现如下：</p>
<ol>
<li>项目<code>A</code>的数据格式：<code>{ name: 'xiaoming', nick_name: '小明', userID: '9527' }</code></li>
<li>项目<code>B</code>的数据格式：<code>{ userInfo: { name: 'xiaoming', nick_name: '小明', userID: '9527' } }</code></li>
</ol>
<p>由于插件默认将整个<code>state</code>对象存储起来，导致数据多了一层<code>userInfo</code>外壳，从而引发格式不一致的问题。</p>
<p>为了去掉<code>userInfo</code>这一层外壳，我们需要自定义序列化和反序列化逻辑。修改后的<code>Store</code>配置如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineStore</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pinia&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">useUserInfoStore</span> <span class="o">=</span> <span class="nx">defineStore</span><span class="p">(</span><span class="s1">&#39;userInfo&#39;</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">state</span><span class="o">:</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="nx">userInfo</span>: <span class="kt">null</span> <span class="kr">as</span> <span class="kt">any</span>
</span></span><span class="line"><span class="cl">    <span class="p">}),</span>
</span></span><span class="line"><span class="cl">    <span class="nx">persist</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">key</span><span class="o">:</span> <span class="s1">&#39;userInfo&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">storage</span>: <span class="kt">localStorage</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">paths</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;userInfo&#39;</span><span class="p">],</span> <span class="c1">// 明确声明要持久化的字段
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="nx">serializer</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">serialize</span><span class="o">:</span> <span class="p">(</span><span class="nx">state</span>: <span class="kt">any</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">state</span><span class="p">.</span><span class="nx">userInfo</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">            <span class="nx">deserialize</span><span class="o">:</span> <span class="p">(</span><span class="nx">str</span>: <span class="kt">string</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">({</span> <span class="nx">userInfo</span>: <span class="kt">JSON.parse</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">})</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="kr">as</span> <span class="kt">any</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">actions</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">setUserInfo</span><span class="p">(</span><span class="nx">info</span>: <span class="kt">any</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">this</span><span class="p">.</span><span class="nx">userInfo</span> <span class="o">=</span> <span class="nx">info</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div><p>经过上述配置，用户信息的存储结构变为<code>{ name: 'xiaoming', nick_name: '小明', userID: '9527' }</code>，不再有额外的<code>userInfo</code>外壳，从而解决了跨项目登录时的格式不一致问题。</p>
<h1 id="其他配置选项">其他配置选项</h1>
<p>在使用该插件时，虽然主要需求是“仅持久化对象中的特定字段”，因此只使用了<code>serializer</code>配置项，但插件还支持其他功能。以下是部分可选配置：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createPinia</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pinia&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">piniaPluginPersistedstate</span> <span class="kr">from</span> <span class="s1">&#39;pinia-plugin-persistedstate&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">pinia</span> <span class="o">=</span> <span class="nx">createPinia</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">pinia</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">piniaPluginPersistedstate</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">storage</span>: <span class="kt">localStorage</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">key</span><span class="o">:</span> <span class="s1">&#39;myCustomStoreKey&#39;</span><span class="p">,</span> <span class="c1">// 自定义存储键名
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">debug</span>: <span class="kt">true</span><span class="p">,</span> <span class="c1">// 启用调试
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">serializer</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">serialize</span><span class="p">(</span><span class="nx">state</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="c1">// 自定义序列化逻辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>      <span class="k">return</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">state</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nx">deserialize</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="c1">// 自定义反序列化逻辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>      <span class="k">return</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nx">beforeHydrate</span><span class="p">(</span><span class="nx">context</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 在恢复状态之前执行的逻辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Before hydrating:&#39;</span><span class="p">,</span> <span class="nx">context</span><span class="p">.</span><span class="nx">store</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nx">afterHydrate</span><span class="p">(</span><span class="nx">context</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 在恢复状态之后执行的逻辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;After hydrating:&#39;</span><span class="p">,</span> <span class="nx">context</span><span class="p">.</span><span class="nx">store</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nx">pick</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;userInfo.name&#39;</span><span class="p">,</span> <span class="s1">&#39;userInfo.email&#39;</span><span class="p">],</span> <span class="c1">// 只持久化 userInfo 下的 name 和 email 属性
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// omit: [&#39;userInfo.password&#39;], // 省略 userInfo 下的 password 属性（与 pick 互斥）
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// ... 定义你的 store ...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">pinia</span><span class="p">;</span>
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>16-项目的任务质量如何保证</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/16-%E9%A1%B9%E7%9B%AE%E7%9A%84%E4%BB%BB%E5%8A%A1%E8%B4%A8%E9%87%8F%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81/</link>
      <pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/16-%E9%A1%B9%E7%9B%AE%E7%9A%84%E4%BB%BB%E5%8A%A1%E8%B4%A8%E9%87%8F%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;项目的任务质量如何保证？在我看来，主要取决于以下这几个环节：需求要明确、任务开发时间要合理评估、任务需提供测试用例、在项目进度会议上进行功能演示。&lt;strong&gt;产品质量是生产出来的，不是检验出来的&lt;/strong&gt;，不可能全都依赖于验收环节，毕竟那时已经晚了。验收环节只是为任务的质量加了一层防护，应从源头开始，就要不断地关注和解决存在的问题。&lt;/p&gt;
&lt;h1 id=&#34;需求要明确&#34;&gt;需求要明确&lt;/h1&gt;
&lt;p&gt;需求要明确，这一点在前面几篇文章中都反复提到过，这里就不再赘述了。简而言之，就是产品的需求要具体到可量化的程度。比如我要买苹果，应该是我要买10斤XXX牌子的苹果。&lt;/p&gt;
&lt;h1 id=&#34;任务开发时间合理评估&#34;&gt;任务开发时间合理评估&lt;/h1&gt;
&lt;p&gt;在评估任务开发时间的时候，要根据实际情况，不能过于宽松。比如一个设备列表的功能排个两三天就差不多了，硬是排了一周多，这显然是有问题的。但也不能太严格，比如就给一天的时间，这就存心为难他人了，大可不必，实事求是就好了。&lt;/p&gt;
&lt;p&gt;有人觉得开发任务只要时间够长，那么交付的功能质量一定就更好，实际上并非如此。人性本就如此，很少有人会提前完成任务，大部分人都会压到最后一刻才说做完了，不过，这也没什么可指摘的，人之常情。&lt;/p&gt;
&lt;p&gt;所以，任务开发所需的时间，通常以一个“跳一跳能够够得到”的要求去评估即可。&lt;/p&gt;
&lt;p&gt;**我们不会要求一个只能跑10公里的人去跑马拉松，我们只会要求他不断地跑到10公里、11公里和9公里，而不是他每次都只跑了5公里。**道理是一样的，没有什么是十全十美的，只希望每个人都能在自身能力范围内做到最好，仅此而已。&lt;/p&gt;
&lt;h1 id=&#34;任务需提供测试用例&#34;&gt;任务需提供测试用例&lt;/h1&gt;
&lt;p&gt;我们开发人员在开发完成之后，就匆忙提交任务进度为100%，意味着任务已经完成了。但是在验收人去验收的时候，还是经常发现这样或那样的问题。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，就需要把全部的问题都放到明面上，而不是藏着掖着，让大家都能清楚地知道，哪些功能确实是真的验收了。&lt;/p&gt;
&lt;p&gt;这就需要开发人员在开发完成这个功能之后，提供一个自测报告，也就是在AgileTC测试用例管理平台编写这个功能的测试用例（在《AgileTC测试用例管理平台的基本使用》这篇文章中有介绍过如何使用），把全部功能要测试的点依次列出。&lt;/p&gt;
&lt;p&gt;这样验收人在验收功能时，就可以根据这个测试用例，把全部功能都过一遍，有规范有依据，不会像之前那样混乱，到底哪些功能是没问题的，哪些功能是有问题的，一目了然，沟通效率也会更高。&lt;/p&gt;
&lt;p&gt;以微信读书PC端的功能为例，图一为微信读书PC端的页面，图二为根据功能编写的测试用例，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504121134646.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504121137716.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;什么时候编写测试用例&#34;&gt;什么时候编写测试用例&lt;/h1&gt;
&lt;p&gt;上面提到的是在任务开发完成之后再编写测试用例，但如果在需求阶段就编写测试用例会不会有什么问题呢？&lt;/p&gt;
&lt;p&gt;在需求阶段就编写测试用例，这种开发模式就是常说的&lt;code&gt;TDD&lt;/code&gt;（测试驱动开发）模式。这个方式当然是可行的，但存在一个问题，就是最终交付的功能和最初的需求可能会有出入，导致之前编写的测试用例不能用了，需要重新编写。&lt;/p&gt;
&lt;p&gt;首先，开发人员在需求阶段就编写测试用例，相当于在对需求进行分解，同时对需求也会更加了解，能和产品明确，达成共识，避免接下来出现返工的情况。&lt;/p&gt;
&lt;p&gt;总体而言，测试用例等同于列出需求点，后续需求有变更，也不是全部测试用例都不能用了，很大概率只是个别测试用例进行微调而已。&lt;/p&gt;
&lt;p&gt;所以，不管是在需求阶段还是开发完功能之后再编写，在我看来都可以的。&lt;/p&gt;
&lt;p&gt;说到底，测试用例最终还是要围绕需求来编写，从需求中提炼出的测试要点才是真实有效的。所以，**对被测对象业务的熟悉程度，也决定了能否设计出高质量的测试用例。**毕竟，各功能点之间往往都是有关联的，会隐藏很多被我们忽略掉或者是想不到的测试用例。&lt;/p&gt;
&lt;h1 id=&#34;在项目进度会议上进行功能演示&#34;&gt;在项目进度会议上进行功能演示&lt;/h1&gt;
&lt;p&gt;我们发现只有在项目进度会议上进行功能演示才会发现问题。开发人员通常口头上说“已经做完了”，这很有可能是片面的，并非开发人员存心欺瞒，只是每个人对需求的理解，有可能一开始就有差异，这种差异即便功能已经开发完成，还是可能会存在。&lt;/p&gt;
&lt;p&gt;在项目进度会议上进行功能演示，整个项目团队的人员都可以看到，并且可以随时提出问题，虽然这样会增加会议的时间，但我相信这是值得的。&lt;/p&gt;
&lt;p&gt;这其实也就是在敏捷开发模式中提到的&lt;code&gt;Sprint Review&lt;/code&gt;环节，简单来说，就是解决颗粒度对齐的问题（笑），能让项目团队中的相关人员，包括但不限于产品、研发、测试和需求提出方等参与验收当前开发的功能，确认是否有需求理解偏差或潜在的需求调整，能够及时反馈和沟通，有助于项目下一步的功能优化和工作安排。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>项目的任务质量如何保证？在我看来，主要取决于以下这几个环节：需求要明确、任务开发时间要合理评估、任务需提供测试用例、在项目进度会议上进行功能演示。<strong>产品质量是生产出来的，不是检验出来的</strong>，不可能全都依赖于验收环节，毕竟那时已经晚了。验收环节只是为任务的质量加了一层防护，应从源头开始，就要不断地关注和解决存在的问题。</p>
<h1 id="需求要明确">需求要明确</h1>
<p>需求要明确，这一点在前面几篇文章中都反复提到过，这里就不再赘述了。简而言之，就是产品的需求要具体到可量化的程度。比如我要买苹果，应该是我要买10斤XXX牌子的苹果。</p>
<h1 id="任务开发时间合理评估">任务开发时间合理评估</h1>
<p>在评估任务开发时间的时候，要根据实际情况，不能过于宽松。比如一个设备列表的功能排个两三天就差不多了，硬是排了一周多，这显然是有问题的。但也不能太严格，比如就给一天的时间，这就存心为难他人了，大可不必，实事求是就好了。</p>
<p>有人觉得开发任务只要时间够长，那么交付的功能质量一定就更好，实际上并非如此。人性本就如此，很少有人会提前完成任务，大部分人都会压到最后一刻才说做完了，不过，这也没什么可指摘的，人之常情。</p>
<p>所以，任务开发所需的时间，通常以一个“跳一跳能够够得到”的要求去评估即可。</p>
<p>**我们不会要求一个只能跑10公里的人去跑马拉松，我们只会要求他不断地跑到10公里、11公里和9公里，而不是他每次都只跑了5公里。**道理是一样的，没有什么是十全十美的，只希望每个人都能在自身能力范围内做到最好，仅此而已。</p>
<h1 id="任务需提供测试用例">任务需提供测试用例</h1>
<p>我们开发人员在开发完成之后，就匆忙提交任务进度为100%，意味着任务已经完成了。但是在验收人去验收的时候，还是经常发现这样或那样的问题。</p>
<p>为了解决这个问题，就需要把全部的问题都放到明面上，而不是藏着掖着，让大家都能清楚地知道，哪些功能确实是真的验收了。</p>
<p>这就需要开发人员在开发完成这个功能之后，提供一个自测报告，也就是在AgileTC测试用例管理平台编写这个功能的测试用例（在《AgileTC测试用例管理平台的基本使用》这篇文章中有介绍过如何使用），把全部功能要测试的点依次列出。</p>
<p>这样验收人在验收功能时，就可以根据这个测试用例，把全部功能都过一遍，有规范有依据，不会像之前那样混乱，到底哪些功能是没问题的，哪些功能是有问题的，一目了然，沟通效率也会更高。</p>
<p>以微信读书PC端的功能为例，图一为微信读书PC端的页面，图二为根据功能编写的测试用例，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504121134646.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504121137716.png"></p>
<h1 id="什么时候编写测试用例">什么时候编写测试用例</h1>
<p>上面提到的是在任务开发完成之后再编写测试用例，但如果在需求阶段就编写测试用例会不会有什么问题呢？</p>
<p>在需求阶段就编写测试用例，这种开发模式就是常说的<code>TDD</code>（测试驱动开发）模式。这个方式当然是可行的，但存在一个问题，就是最终交付的功能和最初的需求可能会有出入，导致之前编写的测试用例不能用了，需要重新编写。</p>
<p>首先，开发人员在需求阶段就编写测试用例，相当于在对需求进行分解，同时对需求也会更加了解，能和产品明确，达成共识，避免接下来出现返工的情况。</p>
<p>总体而言，测试用例等同于列出需求点，后续需求有变更，也不是全部测试用例都不能用了，很大概率只是个别测试用例进行微调而已。</p>
<p>所以，不管是在需求阶段还是开发完功能之后再编写，在我看来都可以的。</p>
<p>说到底，测试用例最终还是要围绕需求来编写，从需求中提炼出的测试要点才是真实有效的。所以，**对被测对象业务的熟悉程度，也决定了能否设计出高质量的测试用例。**毕竟，各功能点之间往往都是有关联的，会隐藏很多被我们忽略掉或者是想不到的测试用例。</p>
<h1 id="在项目进度会议上进行功能演示">在项目进度会议上进行功能演示</h1>
<p>我们发现只有在项目进度会议上进行功能演示才会发现问题。开发人员通常口头上说“已经做完了”，这很有可能是片面的，并非开发人员存心欺瞒，只是每个人对需求的理解，有可能一开始就有差异，这种差异即便功能已经开发完成，还是可能会存在。</p>
<p>在项目进度会议上进行功能演示，整个项目团队的人员都可以看到，并且可以随时提出问题，虽然这样会增加会议的时间，但我相信这是值得的。</p>
<p>这其实也就是在敏捷开发模式中提到的<code>Sprint Review</code>环节，简单来说，就是解决颗粒度对齐的问题（笑），能让项目团队中的相关人员，包括但不限于产品、研发、测试和需求提出方等参与验收当前开发的功能，确认是否有需求理解偏差或潜在的需求调整，能够及时反馈和沟通，有助于项目下一步的功能优化和工作安排。</p>
]]></content:encoded>
    </item>
    <item>
      <title>15-项目任务验收工作没有真正落实</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/15-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E9%AA%8C%E6%94%B6%E5%B7%A5%E4%BD%9C%E6%B2%A1%E6%9C%89%E7%9C%9F%E6%AD%A3%E8%90%BD%E5%AE%9E/</link>
      <pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/15-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E9%AA%8C%E6%94%B6%E5%B7%A5%E4%BD%9C%E6%B2%A1%E6%9C%89%E7%9C%9F%E6%AD%A3%E8%90%BD%E5%AE%9E/</guid>
      <description>&lt;p&gt;之前我们计划由项目负责人每周五进行任务验收，但在开展过程中，验收其他开发同事的任务时，经常出现缺胳膊少腿的情况：比如某个任务完成了，但文档没写，或者写了又没有提交更新；某个任务计划的结束时间都超过了，也没有及时变更，至于过期的原因也没有说明等等，执行起来很困难。现在在项目进度会议上把完成的任务进行验收，就需要周一的时候，项目负责人牵头更新任务的时间、功能和文档情况，否则周二在项目进度会议上，还是会出现各种各样的问题。但是周一的时候，项目负责人已经验收过任务，周二在项目进度会议上又要过一次，对于其他开发同事来说，就觉得被问了两次，显然这个方式可能没有从根本上解决问题。&lt;/p&gt;
&lt;p&gt;之前项目负责人去验收，实际上是不知道任务进度情况的，只有问了项目开发的同事才知道负责的任务完成了没有，项目负责人完全不知道有多少任务需要验收，完全是随机的状态，相应的其他事情的计划就又要变更了。那我们何不反过来，使用观察者模式，等开发同事完成任务后，给项目负责人发一下邮件或者企业微信的消息，一来形成闭环，二来强化开发同事任务是需要验收的这个意识。项目负责人这个时候立马去验收也可以，但不推荐，因为挨个去验收，精力就会分散，建议把可验收的任务整理记到下周一当天工作计划里，统一验收。后续等我们在线项目管理系统上线，里面就提供一个功能：如果开发同事任务完成，需提交技术文档（如有需要），然后把任务状态变更为待验收，这个时候，系统就会给项目负责人发一条可验收的邮件，相信可以有效解决这个问题。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504090957901.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>之前我们计划由项目负责人每周五进行任务验收，但在开展过程中，验收其他开发同事的任务时，经常出现缺胳膊少腿的情况：比如某个任务完成了，但文档没写，或者写了又没有提交更新；某个任务计划的结束时间都超过了，也没有及时变更，至于过期的原因也没有说明等等，执行起来很困难。现在在项目进度会议上把完成的任务进行验收，就需要周一的时候，项目负责人牵头更新任务的时间、功能和文档情况，否则周二在项目进度会议上，还是会出现各种各样的问题。但是周一的时候，项目负责人已经验收过任务，周二在项目进度会议上又要过一次，对于其他开发同事来说，就觉得被问了两次，显然这个方式可能没有从根本上解决问题。</p>
<p>之前项目负责人去验收，实际上是不知道任务进度情况的，只有问了项目开发的同事才知道负责的任务完成了没有，项目负责人完全不知道有多少任务需要验收，完全是随机的状态，相应的其他事情的计划就又要变更了。那我们何不反过来，使用观察者模式，等开发同事完成任务后，给项目负责人发一下邮件或者企业微信的消息，一来形成闭环，二来强化开发同事任务是需要验收的这个意识。项目负责人这个时候立马去验收也可以，但不推荐，因为挨个去验收，精力就会分散，建议把可验收的任务整理记到下周一当天工作计划里，统一验收。后续等我们在线项目管理系统上线，里面就提供一个功能：如果开发同事任务完成，需提交技术文档（如有需要），然后把任务状态变更为待验收，这个时候，系统就会给项目负责人发一条可验收的邮件，相信可以有效解决这个问题。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504090957901.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>14-项目进度会议的两种设计</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/14-%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E4%BC%9A%E8%AE%AE%E7%9A%84%E4%B8%A4%E7%A7%8D%E8%AE%BE%E8%AE%A1/</link>
      <pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/14-%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E4%BC%9A%E8%AE%AE%E7%9A%84%E4%B8%A4%E7%A7%8D%E8%AE%BE%E8%AE%A1/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;召开项目进度会议的方式应依据部门的具体情况灵活安排。尽管一些部门的职能结构通常为项目总负责人、项目负责人，再到具体项目及其成员，但在实际召开项目进度会议时，通常有以下两种设计思路：一种是项目总负责人深度参与并引导会议；另一种则是授权项目负责人自行组织会议，而项目总负责人则另设专门的项目负责人会议。&lt;/p&gt;
&lt;h1 id=&#34;项目负责人主导型会议&#34;&gt;&lt;strong&gt;项目负责人主导型会议&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;项目负责人主导项目进度会议的全过程。他们负责申请会议室、准备设备、在项目群中发布通知并召集相关人员参会，项目总负责人也会参与其中。会议中，无论是项目进度汇报、问题反馈、任务验收还是后续工作安排，均由项目负责人主导提出、讨论并解决问题，项目总负责人则主要扮演补充角色，例如指出潜在问题等。这种模式能够有效增强项目负责人的责任感，使其将项目视为自己的责任。换言之，项目负责人应明确，在项目事务中，他们行使的是权力而非义务。**权力是主动争取并愿意承担的事情，而义务则是他人强加的要求，二者意义截然不同。**许多项目负责人虽然参与了许多工作，但心态上仍与项目脱节，认为项目是上级安排的任务，只是机械地执行上级指令，而未意识到自己需要对项目的各个方面负责。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504070951070.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;分层汇报机制会议&#34;&gt;分层汇报机制会议&lt;/h1&gt;
&lt;p&gt;在这种会议模式下，项目负责人负责组织项目进度会议，而项目总负责人则主导召开项目负责人会议，用于听取各项目负责人的项目整体情况汇报。这种方式通常适用于规模较大的团队，且对项目负责人和项目总负责人的能力要求较高，实施起来并非易事。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504070950661.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>召开项目进度会议的方式应依据部门的具体情况灵活安排。尽管一些部门的职能结构通常为项目总负责人、项目负责人，再到具体项目及其成员，但在实际召开项目进度会议时，通常有以下两种设计思路：一种是项目总负责人深度参与并引导会议；另一种则是授权项目负责人自行组织会议，而项目总负责人则另设专门的项目负责人会议。</p>
<h1 id="项目负责人主导型会议"><strong>项目负责人主导型会议</strong></h1>
<p>项目负责人主导项目进度会议的全过程。他们负责申请会议室、准备设备、在项目群中发布通知并召集相关人员参会，项目总负责人也会参与其中。会议中，无论是项目进度汇报、问题反馈、任务验收还是后续工作安排，均由项目负责人主导提出、讨论并解决问题，项目总负责人则主要扮演补充角色，例如指出潜在问题等。这种模式能够有效增强项目负责人的责任感，使其将项目视为自己的责任。换言之，项目负责人应明确，在项目事务中，他们行使的是权力而非义务。**权力是主动争取并愿意承担的事情，而义务则是他人强加的要求，二者意义截然不同。**许多项目负责人虽然参与了许多工作，但心态上仍与项目脱节，认为项目是上级安排的任务，只是机械地执行上级指令，而未意识到自己需要对项目的各个方面负责。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504070951070.png"></p>
<h1 id="分层汇报机制会议">分层汇报机制会议</h1>
<p>在这种会议模式下，项目负责人负责组织项目进度会议，而项目总负责人则主导召开项目负责人会议，用于听取各项目负责人的项目整体情况汇报。这种方式通常适用于规模较大的团队，且对项目负责人和项目总负责人的能力要求较高，实施起来并非易事。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504070950661.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>13-项目为什么需要加班</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/13-%E9%A1%B9%E7%9B%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%8A%A0%E7%8F%AD/</link>
      <pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/13-%E9%A1%B9%E7%9B%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%8A%A0%E7%8F%AD/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;为何项目会频繁出现加班的情况呢？究其根源究竟在哪里呢？从项目管理的角度出发，我认为项目负责人可能在以下几个关键环节存在不足之处，从而引发了加班现象的产生。&lt;/p&gt;
&lt;h1 id=&#34;需求不够清晰明确&#34;&gt;需求不够清晰明确&lt;/h1&gt;
&lt;p&gt;项目需求是否已经足够明确呢？例如，当我要开发设备列表这一功能时，上级给出的需求仅仅是一句“实现对设备的管理”，而没有细化到该功能的具体要求，比如页面默认应显示10条数据、需支持分页功能且分页选项为10、20、30、50和100条，还要支持按设备名称和设备ID进行搜索，列表要展示的表头包括设备名称、设备ID、设备型号等。&lt;/p&gt;
&lt;p&gt;在需求沟通阶段，若未能明确需求的范围，就会使要做的工作存在过多不确定因素。就好比我要提一个需求，即“用一张纸剪一个圆”，如果只是简单地告诉对方“我要剪一个圈”，而对方仅凭感觉去剪，剪好后我却觉得不满意，要求剪得小一点，但又没有明确具体要多小，对方只能凭借自己的感觉不断尝试，直至剪出令我满意的结果为止。在这个过程中，对方其实一直在进行返工，这无疑就变相导致了加班的情况出现。&lt;/p&gt;
&lt;p&gt;正确的做法应当是，在告知对方要剪一个圆时，直接将圆画在纸上，待双方沟通确认之后，对方只需剪一次即可，从而避免出现反复返工的问题。&lt;/p&gt;
&lt;h1 id=&#34;项目缺乏充分的预研工作&#34;&gt;项目缺乏充分的预研工作&lt;/h1&gt;
&lt;p&gt;在项目的预研阶段，项目负责人需要在脑海中对项目从无到有的整个过程进行全面且深入的分析，将可能出现的问题逐一梳理，并且提供相应的解决方案，而不是仅仅依据需求阶段沟通好的需求，就仓促地开始着手实施。&lt;/p&gt;
&lt;p&gt;需求阶段的工作做到位只是基础的第一步，接下来的第二步就是要以终为始，从最终结果开始倒推，思考可能会遇到哪些问题呢？这个功能采用何种技术来实现呢？这个饼图应该使用哪个插件来制作呢？这个3D动画效果是选用哪个第三方库来实现，还是自行开发呢？天气数据又该使用哪个平台呢？客户提出的这个需求是否真的能够实现呢？类似这样的一系列问题都需要项目负责人提前想清楚，并且做到心中有数，甚至对于一些功能难点，还需要制作一个Demo来进行验证。&lt;/p&gt;
&lt;p&gt;倘若在这一阶段没有做到位，仅根据需求评估项目的开发计划，并且向客户承诺交付的时间，那么在项目推进过程中，一旦发现存在无法解决的问题，或者某个环节比预期花费了更多时间，为了应对这种阻碍项目推进的突发状况，项目负责人往往只能被迫安排加班，否则就无法按照预期完成项目。简而言之，就是前期预研工作没有做到位，从而意外地遇到了隐藏的暗礁。&lt;/p&gt;
&lt;h1 id=&#34;临时插入需求导致的问题&#34;&gt;临时插入需求导致的问题&lt;/h1&gt;
&lt;p&gt;其实关于项目推进过程中出现紧急需求插入的情况，已经在《10-项目需求变更时如何处理》这篇文章中有所提及，当遇到这种情况时，应该如何妥善解决呢？这里就不再重复阐述了，只是想说明一下为何这种情况下会出现加班的情况。原因就在于项目负责人没有充分按照《10-项目需求变更时如何处理》中提到的方案去操作，而是盲目地接下来，完全不进行沟通，只要上级提出任务，就理所当然地认为上级是知晓当前项目情况的，如果自己有不同意见，可能会给上级留下不好的印象，会被认为是身为项目负责人，稍微增加一点工作量就开始抱怨。于是，就硬着头皮接受了任务，但此时已经有正在进行的工作了，新增的任务必然需要额外的人力和时间去完成，那么在这种情况下，只能安排加班，否则还能怎么办呢？最终项目没有如期达成，被上级批评，而项目负责人自己却感到非常委屈，明明项目团队天天都在加班，只是差了一点点就完成了，却还要被批评，心里十分不爽。这就是典型的吃力不讨好，没有及时与上级进行沟通。很多人总是错误地认为上级是全能全知的，上级的决策一定都是正确的，既然上级安排了临时任务，那一定是有其原因的，也一定知道我正在忙很多事情。这种想法是不可取的。类似这种情况，由于项目需求变更、临时插入紧急任务，一定要及时向上级反馈，不能等到事情搞砸了，再去找各种理由，即便理由再充分，但项目没有按照预期交付，这个结果就是工作没有做好。&lt;/p&gt;
&lt;h1 id=&#34;关于加班的合理时机&#34;&gt;关于加班的合理时机&lt;/h1&gt;
&lt;p&gt;说实话，其实我是很反对加班的。虽然我加班还挺多的，但并不是因为我加班多才反对的，主要是加班要加得有意义，加班本身不应成为目的。然而，许多人却将加班视为勤奋的象征。例如，有人会说：“我一个月加班近50个小时，这难道还不算努力吗？”我见过太多人在正常工作时间内拖沓，却把事情留到加班时间去完成，这种行为毫无意义。&lt;/p&gt;
&lt;p&gt;加班应该是应对突发情况的手段，而不是常态。比如，当服务器突然宕机，或者线上平台的关键功能无法使用，严重影响用户体验时，这种紧急情况需要立即解决，加班是必要的。这种加班才是有意义的，因为它解决了实际问题，避免了更大的损失。&lt;/p&gt;
&lt;p&gt;许多硬性安排的加班往往只是形式主义，大多数人只是在“摸鱼”，不会关注“今天把事情做完”的重要性，不会追求提高工作效率，只是在凑时长而已。&lt;/p&gt;
&lt;p&gt;甚至有些人认为“我做得越快，不就是做得越多吗？”这种想法有一定道理，但关键在于如何利用时间。如果你担心完成任务太快会被认为无所事事，那么可以利用剩余时间学习新技术、阅读专业文章，提升自己，这才是更有意义的做法。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>为何项目会频繁出现加班的情况呢？究其根源究竟在哪里呢？从项目管理的角度出发，我认为项目负责人可能在以下几个关键环节存在不足之处，从而引发了加班现象的产生。</p>
<h1 id="需求不够清晰明确">需求不够清晰明确</h1>
<p>项目需求是否已经足够明确呢？例如，当我要开发设备列表这一功能时，上级给出的需求仅仅是一句“实现对设备的管理”，而没有细化到该功能的具体要求，比如页面默认应显示10条数据、需支持分页功能且分页选项为10、20、30、50和100条，还要支持按设备名称和设备ID进行搜索，列表要展示的表头包括设备名称、设备ID、设备型号等。</p>
<p>在需求沟通阶段，若未能明确需求的范围，就会使要做的工作存在过多不确定因素。就好比我要提一个需求，即“用一张纸剪一个圆”，如果只是简单地告诉对方“我要剪一个圈”，而对方仅凭感觉去剪，剪好后我却觉得不满意，要求剪得小一点，但又没有明确具体要多小，对方只能凭借自己的感觉不断尝试，直至剪出令我满意的结果为止。在这个过程中，对方其实一直在进行返工，这无疑就变相导致了加班的情况出现。</p>
<p>正确的做法应当是，在告知对方要剪一个圆时，直接将圆画在纸上，待双方沟通确认之后，对方只需剪一次即可，从而避免出现反复返工的问题。</p>
<h1 id="项目缺乏充分的预研工作">项目缺乏充分的预研工作</h1>
<p>在项目的预研阶段，项目负责人需要在脑海中对项目从无到有的整个过程进行全面且深入的分析，将可能出现的问题逐一梳理，并且提供相应的解决方案，而不是仅仅依据需求阶段沟通好的需求，就仓促地开始着手实施。</p>
<p>需求阶段的工作做到位只是基础的第一步，接下来的第二步就是要以终为始，从最终结果开始倒推，思考可能会遇到哪些问题呢？这个功能采用何种技术来实现呢？这个饼图应该使用哪个插件来制作呢？这个3D动画效果是选用哪个第三方库来实现，还是自行开发呢？天气数据又该使用哪个平台呢？客户提出的这个需求是否真的能够实现呢？类似这样的一系列问题都需要项目负责人提前想清楚，并且做到心中有数，甚至对于一些功能难点，还需要制作一个Demo来进行验证。</p>
<p>倘若在这一阶段没有做到位，仅根据需求评估项目的开发计划，并且向客户承诺交付的时间，那么在项目推进过程中，一旦发现存在无法解决的问题，或者某个环节比预期花费了更多时间，为了应对这种阻碍项目推进的突发状况，项目负责人往往只能被迫安排加班，否则就无法按照预期完成项目。简而言之，就是前期预研工作没有做到位，从而意外地遇到了隐藏的暗礁。</p>
<h1 id="临时插入需求导致的问题">临时插入需求导致的问题</h1>
<p>其实关于项目推进过程中出现紧急需求插入的情况，已经在《10-项目需求变更时如何处理》这篇文章中有所提及，当遇到这种情况时，应该如何妥善解决呢？这里就不再重复阐述了，只是想说明一下为何这种情况下会出现加班的情况。原因就在于项目负责人没有充分按照《10-项目需求变更时如何处理》中提到的方案去操作，而是盲目地接下来，完全不进行沟通，只要上级提出任务，就理所当然地认为上级是知晓当前项目情况的，如果自己有不同意见，可能会给上级留下不好的印象，会被认为是身为项目负责人，稍微增加一点工作量就开始抱怨。于是，就硬着头皮接受了任务，但此时已经有正在进行的工作了，新增的任务必然需要额外的人力和时间去完成，那么在这种情况下，只能安排加班，否则还能怎么办呢？最终项目没有如期达成，被上级批评，而项目负责人自己却感到非常委屈，明明项目团队天天都在加班，只是差了一点点就完成了，却还要被批评，心里十分不爽。这就是典型的吃力不讨好，没有及时与上级进行沟通。很多人总是错误地认为上级是全能全知的，上级的决策一定都是正确的，既然上级安排了临时任务，那一定是有其原因的，也一定知道我正在忙很多事情。这种想法是不可取的。类似这种情况，由于项目需求变更、临时插入紧急任务，一定要及时向上级反馈，不能等到事情搞砸了，再去找各种理由，即便理由再充分，但项目没有按照预期交付，这个结果就是工作没有做好。</p>
<h1 id="关于加班的合理时机">关于加班的合理时机</h1>
<p>说实话，其实我是很反对加班的。虽然我加班还挺多的，但并不是因为我加班多才反对的，主要是加班要加得有意义，加班本身不应成为目的。然而，许多人却将加班视为勤奋的象征。例如，有人会说：“我一个月加班近50个小时，这难道还不算努力吗？”我见过太多人在正常工作时间内拖沓，却把事情留到加班时间去完成，这种行为毫无意义。</p>
<p>加班应该是应对突发情况的手段，而不是常态。比如，当服务器突然宕机，或者线上平台的关键功能无法使用，严重影响用户体验时，这种紧急情况需要立即解决，加班是必要的。这种加班才是有意义的，因为它解决了实际问题，避免了更大的损失。</p>
<p>许多硬性安排的加班往往只是形式主义，大多数人只是在“摸鱼”，不会关注“今天把事情做完”的重要性，不会追求提高工作效率，只是在凑时长而已。</p>
<p>甚至有些人认为“我做得越快，不就是做得越多吗？”这种想法有一定道理，但关键在于如何利用时间。如果你担心完成任务太快会被认为无所事事，那么可以利用剩余时间学习新技术、阅读专业文章，提升自己，这才是更有意义的做法。</p>
]]></content:encoded>
    </item>
    <item>
      <title>12-遇到问题无法解决应该怎么处理</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/12-%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98%E6%97%A0%E6%B3%95%E8%A7%A3%E5%86%B3%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86/</link>
      <pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/12-%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98%E6%97%A0%E6%B3%95%E8%A7%A3%E5%86%B3%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;如果遇到问题，无法解决，应该怎么处理？其实，这个问题要从两个不同的视角来探讨：一个是项目成员的角度，另一个是项目负责人的角度。假设项目成员是李四、王五，项目负责人是张三。&lt;/p&gt;
&lt;h1 id=&#34;及时反馈&#34;&gt;及时反馈&lt;/h1&gt;
&lt;p&gt;比如项目成员李四，有一条功能开发的任务，工期为5天。在开发过程中，他遇到一个无法解决的问题，一个人琢磨了一两天，但始终无法突破，就这样卡在了这个点上。他的心路历程可能是这样的：一方面，他担心自己的技术能力不足，觉得这个问题在别人看来可能很简单，自己居然解决不了；另一方面，他想死磕到底，觉得遇到这样的技术难题，如果不解决就太不甘心了。这些想法本身没有问题，毕竟谁都不想被别人说技术菜，而死磕难题正是极客精神的体现，值得鼓励。&lt;/p&gt;
&lt;p&gt;但问题在于，这种心态放在项目团队中可能会带来隐患。&lt;strong&gt;项目最终看的是产出和结果&lt;/strong&gt;，而不是个人的技术表现。只要项目能够完成，其他因素都是次要的。从这个角度看，担心被人说技术菜、死磕技术难点，都变得毫无意义。因为&lt;strong&gt;解决问题的方式并不唯一，不一定非要从技术入手&lt;/strong&gt;。比如，李四可以把问题及时反馈给项目负责人张三，由张三组织项目团队讨论，甚至与客户沟通，看看是否可以通过微调需求来解决问题。也许客户的需求，用另一种呈现方式同样可以满足，而无需纠结于技术实现本身。&lt;/p&gt;
&lt;p&gt;有人可能会问，如果讨论后发现确实只能通过技术手段解决呢？如果项目负责人张三已经召集项目团队进行讨论，仍然没有解决方案，那又有什么可害怕的？大家绞尽脑汁都没能解决，怎么能说明李四技术很菜呢？如果有人质疑，他完全可以回怼：“你那么厉害，那你来试试看。”&lt;/p&gt;
&lt;p&gt;所以，项目成员遇到问题，如果已经使出浑身解数，还是没能解决，要及时反馈给项目负责人，要从项目全局角度考虑问题，而不只是个人的维度。你及时反馈，虽然是别人给你的解决思路，但最终执行的是你，这条任务还是你来完成的，而你如期完成了这条任务。&lt;/p&gt;
&lt;h1 id=&#34;小心猴子&#34;&gt;小心“猴子”&lt;/h1&gt;
&lt;p&gt;上面是项目成员李四的角度，那么从项目负责人张三的角度来看呢？&lt;/p&gt;
&lt;p&gt;如果项目成员不是像李四那样闷头死磕问题，而是遇到问题就立即反馈，比如王五，张三应该如何应对？&lt;/p&gt;
&lt;p&gt;有些项目负责人可能会及时介入，觉得自己项目同事遇到了问题，自己当仁不让，当然要身先士卒，冲到最前面了。这个本来是很好的行为，出发点也是好的，但这样做的结果是，原本属于王五的开发任务可能完全变成了张三的工作。这就是我们常说的**“小心下属的猴子跳到上级身上”**的问题。王五可能因此变得依赖，而张三则疲于奔命，吃力不讨好。这种情况本质上取决于项目成员的性格和工作态度。如果是这种倾向明显的同事，张三首先要做的不是直接介入，而是反问王五“有好好研究过了吗？”，如果王五支支吾吾，那就先让他自己研究一下，不要遇到点小问题就退缩，如果王五说已经研究过了，那张三就需要及时调整王五任务的优先级，让王五先做其他事情，避免他无所事事，自己再介入。&lt;/p&gt;
&lt;p&gt;意思就是说，对于项目成员反馈的问题，张三可以介入协助，但最好只提供解决问题的思路和建议，比如分享自己调研到的可行方案，然后交给王五去验证。张三的角色主要是引导作用，而不是直接接手去解决问题。他需要激发项目成员的主动性，让他们在遇到问题时真正动脑思考，而不是轻易放弃。如果最终仍然没有解决方案，张三可以召集相关同事讨论，甚至向上级反馈，让更高层来做决策。&lt;/p&gt;
&lt;p&gt;所以，项目负责人在处理项目成员反馈的问题时，应避免替团队成员承担过多责任，而是通过引导和协调，激发他们的主观能动性。一来项目成员可以得到锻炼，二来项目负责人可以投入精力在更重要的事情上，这对于项目团队而言，是大有裨益的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>如果遇到问题，无法解决，应该怎么处理？其实，这个问题要从两个不同的视角来探讨：一个是项目成员的角度，另一个是项目负责人的角度。假设项目成员是李四、王五，项目负责人是张三。</p>
<h1 id="及时反馈">及时反馈</h1>
<p>比如项目成员李四，有一条功能开发的任务，工期为5天。在开发过程中，他遇到一个无法解决的问题，一个人琢磨了一两天，但始终无法突破，就这样卡在了这个点上。他的心路历程可能是这样的：一方面，他担心自己的技术能力不足，觉得这个问题在别人看来可能很简单，自己居然解决不了；另一方面，他想死磕到底，觉得遇到这样的技术难题，如果不解决就太不甘心了。这些想法本身没有问题，毕竟谁都不想被别人说技术菜，而死磕难题正是极客精神的体现，值得鼓励。</p>
<p>但问题在于，这种心态放在项目团队中可能会带来隐患。<strong>项目最终看的是产出和结果</strong>，而不是个人的技术表现。只要项目能够完成，其他因素都是次要的。从这个角度看，担心被人说技术菜、死磕技术难点，都变得毫无意义。因为<strong>解决问题的方式并不唯一，不一定非要从技术入手</strong>。比如，李四可以把问题及时反馈给项目负责人张三，由张三组织项目团队讨论，甚至与客户沟通，看看是否可以通过微调需求来解决问题。也许客户的需求，用另一种呈现方式同样可以满足，而无需纠结于技术实现本身。</p>
<p>有人可能会问，如果讨论后发现确实只能通过技术手段解决呢？如果项目负责人张三已经召集项目团队进行讨论，仍然没有解决方案，那又有什么可害怕的？大家绞尽脑汁都没能解决，怎么能说明李四技术很菜呢？如果有人质疑，他完全可以回怼：“你那么厉害，那你来试试看。”</p>
<p>所以，项目成员遇到问题，如果已经使出浑身解数，还是没能解决，要及时反馈给项目负责人，要从项目全局角度考虑问题，而不只是个人的维度。你及时反馈，虽然是别人给你的解决思路，但最终执行的是你，这条任务还是你来完成的，而你如期完成了这条任务。</p>
<h1 id="小心猴子">小心“猴子”</h1>
<p>上面是项目成员李四的角度，那么从项目负责人张三的角度来看呢？</p>
<p>如果项目成员不是像李四那样闷头死磕问题，而是遇到问题就立即反馈，比如王五，张三应该如何应对？</p>
<p>有些项目负责人可能会及时介入，觉得自己项目同事遇到了问题，自己当仁不让，当然要身先士卒，冲到最前面了。这个本来是很好的行为，出发点也是好的，但这样做的结果是，原本属于王五的开发任务可能完全变成了张三的工作。这就是我们常说的**“小心下属的猴子跳到上级身上”**的问题。王五可能因此变得依赖，而张三则疲于奔命，吃力不讨好。这种情况本质上取决于项目成员的性格和工作态度。如果是这种倾向明显的同事，张三首先要做的不是直接介入，而是反问王五“有好好研究过了吗？”，如果王五支支吾吾，那就先让他自己研究一下，不要遇到点小问题就退缩，如果王五说已经研究过了，那张三就需要及时调整王五任务的优先级，让王五先做其他事情，避免他无所事事，自己再介入。</p>
<p>意思就是说，对于项目成员反馈的问题，张三可以介入协助，但最好只提供解决问题的思路和建议，比如分享自己调研到的可行方案，然后交给王五去验证。张三的角色主要是引导作用，而不是直接接手去解决问题。他需要激发项目成员的主动性，让他们在遇到问题时真正动脑思考，而不是轻易放弃。如果最终仍然没有解决方案，张三可以召集相关同事讨论，甚至向上级反馈，让更高层来做决策。</p>
<p>所以，项目负责人在处理项目成员反馈的问题时，应避免替团队成员承担过多责任，而是通过引导和协调，激发他们的主观能动性。一来项目成员可以得到锻炼，二来项目负责人可以投入精力在更重要的事情上，这对于项目团队而言，是大有裨益的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《流星之绊》读后感</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E6%B5%81%E6%98%9F%E4%B9%8B%E7%BB%8A%E8%AF%BB%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E6%B5%81%E6%98%9F%E4%B9%8B%E7%BB%8A%E8%AF%BB%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504012227977.png&#34; style=&#34;zoom: 80%;&#34; /&gt;
&lt;h1 id=&#34;读后感&#34;&gt;读后感&lt;/h1&gt;
&lt;p&gt;《流星之绊》是东野圭吾在2008年发表的长篇小说，主要讲述兄妹三人夜出观看流星，回家发现父母双亡，此后在孤儿院长大。接着因为矢崎静奈被骗，他们兄妹三人气不过，开始了合伙设计诈骗他人。在这之后，因为一个偶然的事情，在父母被杀案件追诉期将近的日子，有明泰辅发现了曾在凶案现场碰到的那个男人，于是通过连环设计嫁祸凶手，企图用伪证迫使对方自行认罪。&lt;/p&gt;
&lt;p&gt;这本书在看的过程中，看到矢崎静奈的所作所为，就不得不感叹，东野圭吾的书里好像就没有过好女人。《白夜行》的唐泽雪穗、《幻夜》里的新海美冬，都让人觉得后背发凉、毛骨悚然，像是无情的“杀人机器”，而这次静奈也通过伪装和演技，把很多男人玩得晕头转向。我本来以为又是熟悉的套路，但在最后一次行骗面对户神行成时，她却因为情愫萌生，变得犹犹豫豫，导致计划最终落败，但恰好是这一点，反而让人物变得更为立体了。&lt;/p&gt;
&lt;p&gt;在阅读过程中，早就知道户神行成不会是凶手——因为推理小说的情节设计来说，明面上的答案都不会是真正的答案（除了《恶意》）。实不相瞒，看《恶意》这本书的时候我还想着，有没有可能以后写个小说让凶手就是主角“我”，没想到《恶意》直接实现了我的这个想法，真的太巧了。当然，后来知道阿加莎的《罗杰疑案》用过类似手法，不过那是后话了。&lt;/p&gt;
&lt;p&gt;说回《流星之绊》，快结尾时还没有任何凶手的提示。因为凶手必须是早就出现的人，不可能凭空冒出来，这样才能情节反转。但我把出场人物想了一圈，好像没谁有强烈的动机，完全猜不出来。索性抱着看热闹的心态继续读下去，想看看东野圭吾怎么编下去。当有明功一回忆起似曾相识的画面时，我脑袋里突然冒出一个念头：难道凶手是有明泰辅？自己都不知道这想法怎么来的，接着又想会不会是矢崎静奈？毕竟没有血缘关系，谁知道是真的没血缘关系，还是假的，如果有其他隐情呢？再来次《白夜行》？不过他们当时都是小孩，还一起去看流星雨了，显然不太可能。&lt;/p&gt;
&lt;p&gt;真正看到最后知道凶手是谁时，有点意外。倒不是说动机不行，就是感觉有点俗套，可能因为之前看过《新参者》，觉得类似的动机不够新颖，说服力也不够强。不过总体还行，至少比《梦幻花》好太多了。&lt;/p&gt;
&lt;h1 id=&#34;摘抄&#34;&gt;摘抄&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;这个世界只有骗人和被骗。你们看看政治家、官僚，不都是在欺骗国民，中饱私囊？可明知是这样，国民就起来暴动了？没有吧，都死心了不是？所以，只要干得巧妙就是赢家。被骗了就去骗回来，同样，被我们骗了的人，如果不甘心吃亏，也可以再去骗别人。&lt;/li&gt;
&lt;li&gt;钱财乃天下流转之物，那就让它流到我们这儿来吧。&lt;/li&gt;
&lt;li&gt;我们要骗人，再也不受窝囊气了。&lt;/li&gt;
&lt;li&gt;根据泰辅的经验，和女人比较疏远的男人有两种：一种是不讨女人喜欢，很卖力但对方不予理睬，还有一种是并非不受欢迎，但心思全被别的事情占了去，与女人无缘。&lt;/li&gt;
&lt;li&gt;你善于合乎理性地做好工作，但却不知道，要打动人心光靠理性并不够。&lt;/li&gt;
&lt;li&gt;花力气得到的答案比轻易就弄明白的更显珍贵。&lt;/li&gt;
&lt;li&gt;人类的行为并非都能用理性来解释。或者应该说，不合情理的地方居多。盗窃杀人犯将罪证藏到天花板上，搬家时竟然忘了，这确实不太自然，有些鲁莽。但人就是这样，会犯这样那样的错误。还有，对于警察来说，那种事无关紧要。&lt;/li&gt;
&lt;li&gt;外表越出众的人，越有可能深藏着一张人们无法想象的面孔。&lt;/li&gt;
&lt;li&gt;为了生存。我们无依无靠，没有任何资本，要想活在这个世上，根本就没有选择手段的余地。如果允许我找一条理由，那就是我想履行责任，作为兄长的责任。当然，现在我已经知道这是个天大的错误。不管出于什么理由，也不该让他们成为罪犯。作为兄长，我应该阻止他们，我犯了严重的错误。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504012227977.png" style="zoom: 80%;" />
<h1 id="读后感">读后感</h1>
<p>《流星之绊》是东野圭吾在2008年发表的长篇小说，主要讲述兄妹三人夜出观看流星，回家发现父母双亡，此后在孤儿院长大。接着因为矢崎静奈被骗，他们兄妹三人气不过，开始了合伙设计诈骗他人。在这之后，因为一个偶然的事情，在父母被杀案件追诉期将近的日子，有明泰辅发现了曾在凶案现场碰到的那个男人，于是通过连环设计嫁祸凶手，企图用伪证迫使对方自行认罪。</p>
<p>这本书在看的过程中，看到矢崎静奈的所作所为，就不得不感叹，东野圭吾的书里好像就没有过好女人。《白夜行》的唐泽雪穗、《幻夜》里的新海美冬，都让人觉得后背发凉、毛骨悚然，像是无情的“杀人机器”，而这次静奈也通过伪装和演技，把很多男人玩得晕头转向。我本来以为又是熟悉的套路，但在最后一次行骗面对户神行成时，她却因为情愫萌生，变得犹犹豫豫，导致计划最终落败，但恰好是这一点，反而让人物变得更为立体了。</p>
<p>在阅读过程中，早就知道户神行成不会是凶手——因为推理小说的情节设计来说，明面上的答案都不会是真正的答案（除了《恶意》）。实不相瞒，看《恶意》这本书的时候我还想着，有没有可能以后写个小说让凶手就是主角“我”，没想到《恶意》直接实现了我的这个想法，真的太巧了。当然，后来知道阿加莎的《罗杰疑案》用过类似手法，不过那是后话了。</p>
<p>说回《流星之绊》，快结尾时还没有任何凶手的提示。因为凶手必须是早就出现的人，不可能凭空冒出来，这样才能情节反转。但我把出场人物想了一圈，好像没谁有强烈的动机，完全猜不出来。索性抱着看热闹的心态继续读下去，想看看东野圭吾怎么编下去。当有明功一回忆起似曾相识的画面时，我脑袋里突然冒出一个念头：难道凶手是有明泰辅？自己都不知道这想法怎么来的，接着又想会不会是矢崎静奈？毕竟没有血缘关系，谁知道是真的没血缘关系，还是假的，如果有其他隐情呢？再来次《白夜行》？不过他们当时都是小孩，还一起去看流星雨了，显然不太可能。</p>
<p>真正看到最后知道凶手是谁时，有点意外。倒不是说动机不行，就是感觉有点俗套，可能因为之前看过《新参者》，觉得类似的动机不够新颖，说服力也不够强。不过总体还行，至少比《梦幻花》好太多了。</p>
<h1 id="摘抄">摘抄</h1>
<ol>
<li>这个世界只有骗人和被骗。你们看看政治家、官僚，不都是在欺骗国民，中饱私囊？可明知是这样，国民就起来暴动了？没有吧，都死心了不是？所以，只要干得巧妙就是赢家。被骗了就去骗回来，同样，被我们骗了的人，如果不甘心吃亏，也可以再去骗别人。</li>
<li>钱财乃天下流转之物，那就让它流到我们这儿来吧。</li>
<li>我们要骗人，再也不受窝囊气了。</li>
<li>根据泰辅的经验，和女人比较疏远的男人有两种：一种是不讨女人喜欢，很卖力但对方不予理睬，还有一种是并非不受欢迎，但心思全被别的事情占了去，与女人无缘。</li>
<li>你善于合乎理性地做好工作，但却不知道，要打动人心光靠理性并不够。</li>
<li>花力气得到的答案比轻易就弄明白的更显珍贵。</li>
<li>人类的行为并非都能用理性来解释。或者应该说，不合情理的地方居多。盗窃杀人犯将罪证藏到天花板上，搬家时竟然忘了，这确实不太自然，有些鲁莽。但人就是这样，会犯这样那样的错误。还有，对于警察来说，那种事无关紧要。</li>
<li>外表越出众的人，越有可能深藏着一张人们无法想象的面孔。</li>
<li>为了生存。我们无依无靠，没有任何资本，要想活在这个世上，根本就没有选择手段的余地。如果允许我找一条理由，那就是我想履行责任，作为兄长的责任。当然，现在我已经知道这是个天大的错误。不管出于什么理由，也不该让他们成为罪犯。作为兄长，我应该阻止他们，我犯了严重的错误。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>关于读书笔记</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%85%B3%E4%BA%8E%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%85%B3%E4%BA%8E%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/</guid>
      <description>&lt;p&gt;最近一直在思考阅读的意义。每次看完一本书，总觉得应该留下点什么，因为如果不及时记录，时间一久，连当时对这本书的感受都会变得模糊。更糟糕的是，有些书的内容甚至完全记不清了。比如东野圭吾的《盛夏的方程式》和《祈祷落幕时》，明明是读过的，现在却连故事主线都讲不出来，甚至可能记岔了细节。&lt;/p&gt;
&lt;p&gt;所以，打算新开一个读后感系列，把看完一本书后的感受都写一写，不需要强求自己提炼出什么深刻见解。感受毕竟是主观之物，只要是真实的，那就可以，比如随手写下对某个情节的吐槽，或者对某句话的感触，甚至只是简单复述一下故事内容。关键是，把这些零散的想法及时记下来，哪怕只是片段式的笔记，也能在未来某个时刻重新唤起当时的自己。&lt;/p&gt;
&lt;p&gt;阅读本身是私人的体验，思考的深浅因人而异。与其纠结于有没有价值，不如专注于有没有动过脑。只要读了、想了，哪怕只是片刻的触动，也是一种收获。而记录的意义，不是为了证明自己读了多少本书，而是为了对抗遗忘，让那些稍纵即逝的感受有机会被保留下来。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>最近一直在思考阅读的意义。每次看完一本书，总觉得应该留下点什么，因为如果不及时记录，时间一久，连当时对这本书的感受都会变得模糊。更糟糕的是，有些书的内容甚至完全记不清了。比如东野圭吾的《盛夏的方程式》和《祈祷落幕时》，明明是读过的，现在却连故事主线都讲不出来，甚至可能记岔了细节。</p>
<p>所以，打算新开一个读后感系列，把看完一本书后的感受都写一写，不需要强求自己提炼出什么深刻见解。感受毕竟是主观之物，只要是真实的，那就可以，比如随手写下对某个情节的吐槽，或者对某句话的感触，甚至只是简单复述一下故事内容。关键是，把这些零散的想法及时记下来，哪怕只是片段式的笔记，也能在未来某个时刻重新唤起当时的自己。</p>
<p>阅读本身是私人的体验，思考的深浅因人而异。与其纠结于有没有价值，不如专注于有没有动过脑。只要读了、想了，哪怕只是片刻的触动，也是一种收获。而记录的意义，不是为了证明自己读了多少本书，而是为了对抗遗忘，让那些稍纵即逝的感受有机会被保留下来。</p>
]]></content:encoded>
    </item>
    <item>
      <title>11-项目涉及设备的问题</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/11-%E9%A1%B9%E7%9B%AE%E6%B6%89%E5%8F%8A%E8%AE%BE%E5%A4%87%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/11-%E9%A1%B9%E7%9B%AE%E6%B6%89%E5%8F%8A%E8%AE%BE%E5%A4%87%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;我们部门在开发一些项目时，确实需要借用设备，但每次开发新需求时都要从硬件部门借设备，开发完成后又要归还。这种频繁的借还流程不仅增加了沟通成本，还导致项目负责人和开发人员对设备的功能和应用场景缺乏直观的了解。有时甚至连设备长什么样都不知道，这显然不利于我们真正理解业务需求，甚至可能导致开发方向与实际业务脱节。&lt;/p&gt;
&lt;p&gt;有人提议是否可以申请一些设备常驻我们部门，让项目相关人员在开发过程中能够随时试用设备，真实感受应用场景，同时遇到问题时可以立即用设备重现和排查。这个想法确实有一定道理，但仔细想想，设备本身也在不断迭代，如果设备长期放在我们部门，可能只能停留在某个版本，后续更新无法跟上，反而会限制我们的开发思路。此外，设备的使用频率主要集中在开发阶段，项目上线后很少再被关注，长期占用硬件资源可能造成浪费。&lt;/p&gt;
&lt;p&gt;其实，我们的核心问题并不是设备是否常驻，而是如何让开发人员在开发阶段有机会试用设备，从而增强对业务的理解和对设备功能的熟悉。与其申请设备常驻，不如在开发阶段短期借用设备，确保开发人员在关键阶段能够充分接触和使用设备，同时避免资源的长期占用。这样既能满足开发需求，又能兼顾资源的合理利用。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我们部门在开发一些项目时，确实需要借用设备，但每次开发新需求时都要从硬件部门借设备，开发完成后又要归还。这种频繁的借还流程不仅增加了沟通成本，还导致项目负责人和开发人员对设备的功能和应用场景缺乏直观的了解。有时甚至连设备长什么样都不知道，这显然不利于我们真正理解业务需求，甚至可能导致开发方向与实际业务脱节。</p>
<p>有人提议是否可以申请一些设备常驻我们部门，让项目相关人员在开发过程中能够随时试用设备，真实感受应用场景，同时遇到问题时可以立即用设备重现和排查。这个想法确实有一定道理，但仔细想想，设备本身也在不断迭代，如果设备长期放在我们部门，可能只能停留在某个版本，后续更新无法跟上，反而会限制我们的开发思路。此外，设备的使用频率主要集中在开发阶段，项目上线后很少再被关注，长期占用硬件资源可能造成浪费。</p>
<p>其实，我们的核心问题并不是设备是否常驻，而是如何让开发人员在开发阶段有机会试用设备，从而增强对业务的理解和对设备功能的熟悉。与其申请设备常驻，不如在开发阶段短期借用设备，确保开发人员在关键阶段能够充分接触和使用设备，同时避免资源的长期占用。这样既能满足开发需求，又能兼顾资源的合理利用。</p>
]]></content:encoded>
    </item>
    <item>
      <title>10-项目需求变更时如何处理</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/10-%E9%A1%B9%E7%9B%AE%E9%9C%80%E6%B1%82%E5%8F%98%E6%9B%B4%E6%97%B6%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86/</link>
      <pubDate>Sat, 29 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/10-%E9%A1%B9%E7%9B%AE%E9%9C%80%E6%B1%82%E5%8F%98%E6%9B%B4%E6%97%B6%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86/</guid>
      <description>&lt;p&gt;虽然在项目开发前期，我们已经做好准备工作，一个环节到一个环节有条不紊地执行，但不可否认，在这个过程中，难免会出现需求变更的情况。作为项目负责人，应该怎么去处理这件事呢？&lt;/p&gt;
&lt;p&gt;项目遇到需求变更，通常都是新增需求，很少是减少需求的变更。简而言之，就是增加了工作量。而项目负责人面临的难题在于：如何在不影响整体计划的前提下，高效应对这种变化。需求变更的规模有大有小，不可一概而论。如果是小的变更，那无伤大雅，适当微调即可。但倘若是很大的变更，比如新增的功能开发需要一两周甚至更长时间，那么整个项目计划可能就需要推倒重做，这无可厚非。&lt;/p&gt;
&lt;p&gt;我们要探讨的是介于这大小之间的需求变更——那些有机会在当前计划里解决掉的需求，比如增加了一周的工作量。你有信心能按当前制定的计划如期交付吗？现在的情况是，我们可能只是将需求变更分为大小两个情况：小的微调，大的立刻调整项目计划，然后项目上线时间就会变更。久而久之，这种处理方式可能会让人觉得理所当然。&lt;/p&gt;
&lt;p&gt;事实上，大部分项目开发工作是有协商空间的，并未被完全限定死。遇到突发情况，比如客户需求变更，但交付时间没有任何商量余地时，项目负责人该怎么办？有人可能会说加班，但有时加班未必能解决问题。&lt;/p&gt;
&lt;p&gt;也许现在我们可以慢慢培养这方面的意识和能力，在平时多积累这方面的经验，避免真正遇到事情时手忙脚乱、无从下手。也就是说，我们可以将需求变更分为三种情况：小的变更，微调即可；大的变更，比如需要增加两周工作量，那就变更项目计划；中等变更，比如需要增加一周工作量，我们先不急于调整计划 ，而是先想一想：有没有什么办法可以在不变更计划的情况下解决这个问题？然后将各种可能的解决方案列出来（1、2、3……），召集项目其他成员一起讨论。也许经过多轮讨论，我们就能找到解决方案。如果讨论后仍无法解决，再根据实际情况变更项目计划。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>虽然在项目开发前期，我们已经做好准备工作，一个环节到一个环节有条不紊地执行，但不可否认，在这个过程中，难免会出现需求变更的情况。作为项目负责人，应该怎么去处理这件事呢？</p>
<p>项目遇到需求变更，通常都是新增需求，很少是减少需求的变更。简而言之，就是增加了工作量。而项目负责人面临的难题在于：如何在不影响整体计划的前提下，高效应对这种变化。需求变更的规模有大有小，不可一概而论。如果是小的变更，那无伤大雅，适当微调即可。但倘若是很大的变更，比如新增的功能开发需要一两周甚至更长时间，那么整个项目计划可能就需要推倒重做，这无可厚非。</p>
<p>我们要探讨的是介于这大小之间的需求变更——那些有机会在当前计划里解决掉的需求，比如增加了一周的工作量。你有信心能按当前制定的计划如期交付吗？现在的情况是，我们可能只是将需求变更分为大小两个情况：小的微调，大的立刻调整项目计划，然后项目上线时间就会变更。久而久之，这种处理方式可能会让人觉得理所当然。</p>
<p>事实上，大部分项目开发工作是有协商空间的，并未被完全限定死。遇到突发情况，比如客户需求变更，但交付时间没有任何商量余地时，项目负责人该怎么办？有人可能会说加班，但有时加班未必能解决问题。</p>
<p>也许现在我们可以慢慢培养这方面的意识和能力，在平时多积累这方面的经验，避免真正遇到事情时手忙脚乱、无从下手。也就是说，我们可以将需求变更分为三种情况：小的变更，微调即可；大的变更，比如需要增加两周工作量，那就变更项目计划；中等变更，比如需要增加一周工作量，我们先不急于调整计划 ，而是先想一想：有没有什么办法可以在不变更计划的情况下解决这个问题？然后将各种可能的解决方案列出来（1、2、3……），召集项目其他成员一起讨论。也许经过多轮讨论，我们就能找到解决方案。如果讨论后仍无法解决，再根据实际情况变更项目计划。</p>
]]></content:encoded>
    </item>
    <item>
      <title>09-项目任务不应写多人负责</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/09-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E4%B8%8D%E5%BA%94%E5%86%99%E5%A4%9A%E4%BA%BA%E8%B4%9F%E8%B4%A3/</link>
      <pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/09-%E9%A1%B9%E7%9B%AE%E4%BB%BB%E5%8A%A1%E4%B8%8D%E5%BA%94%E5%86%99%E5%A4%9A%E4%BA%BA%E8%B4%9F%E8%B4%A3/</guid>
      <description>&lt;p&gt;在项目开发过程中，我们常常会遇到一些任务需要多人共同负责的情况。例如，某个功能任务需要前后端同步开发，如果把前后端的开发人员都归到同一条任务上，就会出现一些问题。&lt;/p&gt;
&lt;p&gt;举个例子，设备管理模块的开发需要张三负责后端，李四负责前端。如果将他们的任务写在一起，当前进度显示为&lt;code&gt;60%&lt;/code&gt;，我们无法直接了解具体情况。这个&lt;code&gt;60%&lt;/code&gt;可能意味着后端已完成，只是前端还在开发；也可能是后端和前端都还未完成。这样一来，项目负责人就不得不去沟通询问，才能知道真实情况，这无疑降低了工作效率。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503261452379.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;因此，项目开发计划里的任务最好是一人一条，拆分清晰。这样做的好处有两个：一是可以明确职责，避免出现责任不清的情况；二是任务状态会更加透明，项目负责人能够一目了然地掌握每个环节的进展，从而减少管理难度。&lt;/p&gt;
&lt;p&gt;如下图所示，当任务拆分清晰后，我们可以立刻知道设备管理功能模块的后端开发进度为&lt;code&gt;100%&lt;/code&gt;，已经完成，而前端开发进度为&lt;code&gt;20%&lt;/code&gt;。这样一来，项目负责人就能根据这些信息及时调整计划，合理安排后续工作，确保项目顺利推进。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503261502187.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>在项目开发过程中，我们常常会遇到一些任务需要多人共同负责的情况。例如，某个功能任务需要前后端同步开发，如果把前后端的开发人员都归到同一条任务上，就会出现一些问题。</p>
<p>举个例子，设备管理模块的开发需要张三负责后端，李四负责前端。如果将他们的任务写在一起，当前进度显示为<code>60%</code>，我们无法直接了解具体情况。这个<code>60%</code>可能意味着后端已完成，只是前端还在开发；也可能是后端和前端都还未完成。这样一来，项目负责人就不得不去沟通询问，才能知道真实情况，这无疑降低了工作效率。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503261452379.png"></p>
<p>因此，项目开发计划里的任务最好是一人一条，拆分清晰。这样做的好处有两个：一是可以明确职责，避免出现责任不清的情况；二是任务状态会更加透明，项目负责人能够一目了然地掌握每个环节的进展，从而减少管理难度。</p>
<p>如下图所示，当任务拆分清晰后，我们可以立刻知道设备管理功能模块的后端开发进度为<code>100%</code>，已经完成，而前端开发进度为<code>20%</code>。这样一来，项目负责人就能根据这些信息及时调整计划，合理安排后续工作，确保项目顺利推进。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503261502187.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>08-项目中不可控的任务如何安排和验收</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/08-%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%B8%8D%E5%8F%AF%E6%8E%A7%E7%9A%84%E4%BB%BB%E5%8A%A1%E5%A6%82%E4%BD%95%E5%AE%89%E6%8E%92%E5%92%8C%E9%AA%8C%E6%94%B6/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/08-%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%B8%8D%E5%8F%AF%E6%8E%A7%E7%9A%84%E4%BB%BB%E5%8A%A1%E5%A6%82%E4%BD%95%E5%AE%89%E6%8E%92%E5%92%8C%E9%AA%8C%E6%94%B6/</guid>
      <description>&lt;p&gt;项目中有时会有一些任务的时间是不可控的，不可控的原因在于该工作完全受制于他人。意思就是如果其他人没有做好，比如前后端同步开发，前端通常可能会快一些，然后要等后端提供接口，这个时候联调工作是没办法开展的，也不知道什么时候可以，自己就会很被动，走走停停，既浪费时间精力，也容易没有任何产出。这种通常是其他人还没做好的情况，最怕的是那一种，比如设备那边说已经很OK了，现在可以开发了，然后去试用了，发现还是不行，然后一下子不知道该干嘛了，也不知道什么时候可以改好，等的话可能要很久，就浪费时间了，不等的话可能一下子就修复好可用了，自己完全处于左右为难的状态。&lt;/p&gt;
&lt;p&gt;之前有APP项目就是这样的情况，本来APP功能已经开发好了，然后测试阶段，设备经常出现问题，可以用但是又不稳定，经常测到一半就测不下去了，然后反馈给到设备那边，改了好几次，觉得可以了，又继续测试了，后来还是不行。反复多次我才醒悟苗头不对，不能再这样下去了，立马中止项目测试，和设备那边沟通，设备需要确保完全没有问题，再继续这个项目的工作，可以说是血的教训。&lt;/p&gt;
&lt;p&gt;这个问题之所以会造成那么大的影响，是因为我们在和他人协作的时候，没有和对方明确一个具体的时间节点，而是很含糊地回答道：“等某某完成了我才可以对接”，然后再问一句：“那他什么时候可以做完呢？过几天吧”，到底是几天？哪一天的？不知道呢。这样是有隐患的，因为这些模糊的信息，负责对接的开发同事完全就是看天吃饭了，任何结果完全是随机的。过几天，可能是一天，也可能是两天，甚至是一周或者更多，再者，项目负责人调整项目任务的时间也会变得很困难。&lt;/p&gt;
&lt;p&gt;我们需要和对方明确一个具体的时间节点，比如前端同事需要问下后端的同事，接口是哪一天可以提供使用，而这个使用的意思，基本上是自测过的，不说一个Bug都没有，至少是相对稳定的。我们知道这个具体的时间节点之后，就可以先安排其他事情了，项目开发工作的开展就会很清晰，而不是完全混乱的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>项目中有时会有一些任务的时间是不可控的，不可控的原因在于该工作完全受制于他人。意思就是如果其他人没有做好，比如前后端同步开发，前端通常可能会快一些，然后要等后端提供接口，这个时候联调工作是没办法开展的，也不知道什么时候可以，自己就会很被动，走走停停，既浪费时间精力，也容易没有任何产出。这种通常是其他人还没做好的情况，最怕的是那一种，比如设备那边说已经很OK了，现在可以开发了，然后去试用了，发现还是不行，然后一下子不知道该干嘛了，也不知道什么时候可以改好，等的话可能要很久，就浪费时间了，不等的话可能一下子就修复好可用了，自己完全处于左右为难的状态。</p>
<p>之前有APP项目就是这样的情况，本来APP功能已经开发好了，然后测试阶段，设备经常出现问题，可以用但是又不稳定，经常测到一半就测不下去了，然后反馈给到设备那边，改了好几次，觉得可以了，又继续测试了，后来还是不行。反复多次我才醒悟苗头不对，不能再这样下去了，立马中止项目测试，和设备那边沟通，设备需要确保完全没有问题，再继续这个项目的工作，可以说是血的教训。</p>
<p>这个问题之所以会造成那么大的影响，是因为我们在和他人协作的时候，没有和对方明确一个具体的时间节点，而是很含糊地回答道：“等某某完成了我才可以对接”，然后再问一句：“那他什么时候可以做完呢？过几天吧”，到底是几天？哪一天的？不知道呢。这样是有隐患的，因为这些模糊的信息，负责对接的开发同事完全就是看天吃饭了，任何结果完全是随机的。过几天，可能是一天，也可能是两天，甚至是一周或者更多，再者，项目负责人调整项目任务的时间也会变得很困难。</p>
<p>我们需要和对方明确一个具体的时间节点，比如前端同事需要问下后端的同事，接口是哪一天可以提供使用，而这个使用的意思，基本上是自测过的，不说一个Bug都没有，至少是相对稳定的。我们知道这个具体的时间节点之后，就可以先安排其他事情了，项目开发工作的开展就会很清晰，而不是完全混乱的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>07-项目中应提前准备下一阶段计划</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/07-%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%BA%94%E6%8F%90%E5%89%8D%E5%87%86%E5%A4%87%E4%B8%8B%E4%B8%80%E9%98%B6%E6%AE%B5%E8%AE%A1%E5%88%92/</link>
      <pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/07-%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%BA%94%E6%8F%90%E5%89%8D%E5%87%86%E5%A4%87%E4%B8%8B%E4%B8%80%E9%98%B6%E6%AE%B5%E8%AE%A1%E5%88%92/</guid>
      <description>&lt;p&gt;在项目当前版本的功能开发任务都完成之后，&lt;strong&gt;人就空出来了&lt;/strong&gt;，通常这个时候，项目负责人还有很多繁琐的工作要做，比如项目内部验收、提交测试申请和版本发布等等。为了给项目成员找事情做，就匆匆忙忙安排下个版本的任务，然后项目成员只是简单了解下需求，就开始敲代码了。前期的需求分析、方案设计、开发计划，项目负责人是没有时间系统地去梳理的，这就容易造成项目成员在新功能开发过程中，需求理解有偏差，加上当前版本发布时间节点不明确，目标感也不强。&lt;/p&gt;
&lt;p&gt;项目负责人的开发任务应比项目成员提前3天左右时间结束，这个时候项目的其他功能还在继续开发，项目负责人可以借机着手准备下个阶段的任务（之所以是下个阶段，而不是下个版本，是因为有可能不是迭代这个项目了），将需求进行梳理分析，编写方案设计和制定开发计划，等到其他项目成员开发任务完成之后，就接着下个阶段的任务进行，项目负责人这时再回到当前项目，去做内部验收和提交测试申请，整个衔接是很清晰顺畅，不至于那么被动，捉襟见肘。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>在项目当前版本的功能开发任务都完成之后，<strong>人就空出来了</strong>，通常这个时候，项目负责人还有很多繁琐的工作要做，比如项目内部验收、提交测试申请和版本发布等等。为了给项目成员找事情做，就匆匆忙忙安排下个版本的任务，然后项目成员只是简单了解下需求，就开始敲代码了。前期的需求分析、方案设计、开发计划，项目负责人是没有时间系统地去梳理的，这就容易造成项目成员在新功能开发过程中，需求理解有偏差，加上当前版本发布时间节点不明确，目标感也不强。</p>
<p>项目负责人的开发任务应比项目成员提前3天左右时间结束，这个时候项目的其他功能还在继续开发，项目负责人可以借机着手准备下个阶段的任务（之所以是下个阶段，而不是下个版本，是因为有可能不是迭代这个项目了），将需求进行梳理分析，编写方案设计和制定开发计划，等到其他项目成员开发任务完成之后，就接着下个阶段的任务进行，项目负责人这时再回到当前项目，去做内部验收和提交测试申请，整个衔接是很清晰顺畅，不至于那么被动，捉襟见肘。</p>
]]></content:encoded>
    </item>
    <item>
      <title>新型储能制造业高质量发展行动方案解读</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E6%96%B0%E5%9E%8B%E5%82%A8%E8%83%BD%E5%88%B6%E9%80%A0%E4%B8%9A%E9%AB%98%E8%B4%A8%E9%87%8F%E5%8F%91%E5%B1%95%E8%A1%8C%E5%8A%A8%E6%96%B9%E6%A1%88%E8%A7%A3%E8%AF%BB/</link>
      <pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E6%96%B0%E5%9E%8B%E5%82%A8%E8%83%BD%E5%88%B6%E9%80%A0%E4%B8%9A%E9%AB%98%E8%B4%A8%E9%87%8F%E5%8F%91%E5%B1%95%E8%A1%8C%E5%8A%A8%E6%96%B9%E6%A1%88%E8%A7%A3%E8%AF%BB/</guid>
      <description>&lt;p&gt;储能行业正站在新的风口浪尖，一份《新型储能制造业高质量发展行动方案》为我们揭开了这个领域未来发展的神秘面纱。这份方案不仅描绘了储能行业的发展蓝图，更给相关企业指明了前进的方向，释放出巨大的市场潜力和发展机遇。今天，咱们就来聊聊这份方案透露出的储能行业机会点，以及企业应该重点关注的方面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 储能技术创新：突破瓶颈，引领未来&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;技术创新是储能行业发展的核心驱动力。方案强调要发展多元化新型储能本体技术，包括锂电池、钠电池、液流电池等，以及高效集成和智慧调控技术、全生命周期多维度安全技术。这就好比是给储能行业打造更强大的“心脏”和更聪明的“大脑”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 产业布局优化：集聚发展，形成合力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;方案提出要加强产业布局规划，引导企业向资源富集、应用场景丰富地区聚集，培育先进制造业集群。这就像把分散的力量整合起来，形成一个强大的拳头，共同出击市场。企业可以借此机会参与区域产业集群建设，享受政策支持和产业集聚效应，降低生产成本，提高市场竞争力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 产业链协同发展：上下游联动，打造闭环&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;引导优化供需关系，加强产业链上下游企业供需对接，形成协同联动机制。企业要主动与上下游伙伴建立稳定合作关系，实现资源共享、优势互补，共同开拓市场。同时，创新商业模式，如共享储能、储能租赁等，满足不同用户需求。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 标准制定与知识产权保护：掌握话语权，守护创新成果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在提升标准体系支撑水平和加强知识产权保护运用方面，企业要积极参与新型储能标准制定，争取在标准中体现自身技术和产品特点，提升行业话语权。同时，强化自身知识产权保护，培育高价值专利，借助知识产权运营提升经济效益。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 市场应用拓展：多领域开花，释放潜力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;方案推动储能产品在电源侧、电网侧、用户侧等多领域应用。企业要针对不同应用场景，开发定制化储能解决方案，扩大市场份额。比如在新能源富集地区，支持新型储能支撑可再生能源大规模消纳；在用户侧，推动储能产品在数据中心、工业园区等场所的应用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. 国际拓展：走向世界，提升影响力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;方案鼓励企业拓展国际市场，参与国际标准制定。企业可利用政策支持，提升国际影响力，参与全球储能项目建设，推动储能产品出口，融入全球新能源产业格局。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. 企业应重点关注的方面&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;储能企业要想在竞争中脱颖而出，必须抓住技术创新、产业布局、产业链协同、标准制定、市场应用拓展及国际拓展等关键机会点。重点关注技术研发、市场布局、产业链合作、标准合规、客户服务和国际合作等方面。&lt;/p&gt;
&lt;p&gt;总之，新型储能制造业在政策推动下蕴含着巨大发展潜力，企业只要紧跟政策导向，抓住关键机会点，就能在激烈的市场竞争中脱颖而出，为推动行业高质量发展和实现碳达峰碳中和目标贡献力量，同时也能收获自身的发展和成长。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>储能行业正站在新的风口浪尖，一份《新型储能制造业高质量发展行动方案》为我们揭开了这个领域未来发展的神秘面纱。这份方案不仅描绘了储能行业的发展蓝图，更给相关企业指明了前进的方向，释放出巨大的市场潜力和发展机遇。今天，咱们就来聊聊这份方案透露出的储能行业机会点，以及企业应该重点关注的方面。</p>
<p><strong>1. 储能技术创新：突破瓶颈，引领未来</strong></p>
<p>技术创新是储能行业发展的核心驱动力。方案强调要发展多元化新型储能本体技术，包括锂电池、钠电池、液流电池等，以及高效集成和智慧调控技术、全生命周期多维度安全技术。这就好比是给储能行业打造更强大的“心脏”和更聪明的“大脑”。</p>
<p><strong>2. 产业布局优化：集聚发展，形成合力</strong></p>
<p>方案提出要加强产业布局规划，引导企业向资源富集、应用场景丰富地区聚集，培育先进制造业集群。这就像把分散的力量整合起来，形成一个强大的拳头，共同出击市场。企业可以借此机会参与区域产业集群建设，享受政策支持和产业集聚效应，降低生产成本，提高市场竞争力。</p>
<p><strong>3. 产业链协同发展：上下游联动，打造闭环</strong></p>
<p>引导优化供需关系，加强产业链上下游企业供需对接，形成协同联动机制。企业要主动与上下游伙伴建立稳定合作关系，实现资源共享、优势互补，共同开拓市场。同时，创新商业模式，如共享储能、储能租赁等，满足不同用户需求。</p>
<p><strong>4. 标准制定与知识产权保护：掌握话语权，守护创新成果</strong></p>
<p>在提升标准体系支撑水平和加强知识产权保护运用方面，企业要积极参与新型储能标准制定，争取在标准中体现自身技术和产品特点，提升行业话语权。同时，强化自身知识产权保护，培育高价值专利，借助知识产权运营提升经济效益。</p>
<p><strong>5. 市场应用拓展：多领域开花，释放潜力</strong></p>
<p>方案推动储能产品在电源侧、电网侧、用户侧等多领域应用。企业要针对不同应用场景，开发定制化储能解决方案，扩大市场份额。比如在新能源富集地区，支持新型储能支撑可再生能源大规模消纳；在用户侧，推动储能产品在数据中心、工业园区等场所的应用。</p>
<p><strong>6. 国际拓展：走向世界，提升影响力</strong></p>
<p>方案鼓励企业拓展国际市场，参与国际标准制定。企业可利用政策支持，提升国际影响力，参与全球储能项目建设，推动储能产品出口，融入全球新能源产业格局。</p>
<p><strong>7. 企业应重点关注的方面</strong></p>
<p>储能企业要想在竞争中脱颖而出，必须抓住技术创新、产业布局、产业链协同、标准制定、市场应用拓展及国际拓展等关键机会点。重点关注技术研发、市场布局、产业链合作、标准合规、客户服务和国际合作等方面。</p>
<p>总之，新型储能制造业在政策推动下蕴含着巨大发展潜力，企业只要紧跟政策导向，抓住关键机会点，就能在激烈的市场竞争中脱颖而出，为推动行业高质量发展和实现碳达峰碳中和目标贡献力量，同时也能收获自身的发展和成长。</p>
]]></content:encoded>
    </item>
    <item>
      <title>06-项目计划如何制定</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/06-%E9%A1%B9%E7%9B%AE%E8%AE%A1%E5%88%92%E5%A6%82%E4%BD%95%E5%88%B6%E5%AE%9A/</link>
      <pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/06-%E9%A1%B9%E7%9B%AE%E8%AE%A1%E5%88%92%E5%A6%82%E4%BD%95%E5%88%B6%E5%AE%9A/</guid>
      <description>&lt;p&gt;我们在制定项目计划的时候，如果只是把功能开发部分列出来，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157068.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;可能会造成项目延期，在上一篇文章《05-项目为什么总是延期》中已经分析过了，这里就不再赘述了，我们现在要探讨的是，如何制定一个项目计划呢？&lt;/p&gt;
&lt;p&gt;在开始项目计划制定之前，可以先了解一下开发模式的相关知识，这部分主要是&lt;a href=&#34;https://b23.tv/eeIEBa2&#34;&gt;《【清华大学】项目管理的逻辑（全6讲）》&lt;/a&gt;里面的内容，有兴趣的可以去看一下，还是很不错的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 瀑布式开发&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;预测型开发，在还没有开始着手编写代码前，就可以提前预知结果如何，之所以叫瀑布式，是因为整个开发流程都是有序的，就像水从上往下流，每一步做很到位就到下一阶段。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 迭代式开发&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;迭代式开发，顾名思义，就是一个版本接着一个版本进行迭代，先将项目整体框架搭建好，然后基础布局全部铺开，就好像画人物肖像一样，先勾勒草图，画出人物整体轮廓，然后才依次画出脑袋、眉毛、眼睛、鼻子、嘴巴等等，全部画出来之后，才是着色。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 增量式开发&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;增量式开发，咋听之下，与迭代式开发的意思一样，实际上是不一样的，增量式开发的意思是，每次只构建一点，每个阶段就交付一部分，然后组合在一起，还是用画人物肖像来举例子，一开始先画头发，画完之后上色，然后接着是眉毛，画好之后着色，以此类推，全部画好一个地方再接着画另一个地方，如下图所示：&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157400.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 敏捷式开发&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;适应型开发，灵活性很高，需求可以随时提，然后放到需求池里，可能两周一个周期发一个版本。因为能干的活儿很有限，就像坐地铁一样，人很多，挤不上去那就下一趟，所以敏捷开发的思路就是，未必做得到，所以下个版本实现需求，可以有节奏地持续开发。&lt;/p&gt;
&lt;p&gt;以上就是常用的开发模式，但是我们在实际应用中，应该怎么选择哪一种开发模式呢？为此有一个&lt;code&gt;STACEY&lt;/code&gt;矩阵图可以作一些参考，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157174.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;从上图中可以知道，选择哪种开发模式，是基于需求和技术两个维度去评估的，所以项目负责人在编写项目需求与方案文档的时候，可能就可以做出判断了。说回我们自身，开发模式毕竟只是项目管理中的一种技巧，要深刻认识到它并不是万能的，如果掉入盲目迷信权威的陷阱，那么就太死板了，真正应用的时候，还是要考虑实际情况，在遵循基本原则的基础上，要明白事物变化的重要性，在变化的世界里使用不变的方法是不现实的，没有任何一种开发模式能够适用全部的项目。&lt;/p&gt;
&lt;p&gt;现在部门按照项目来管理，每个人都比较清楚自己要做的事情，也没有那么多交叉的任务，所以变更理应很少才对，在制定项目计划的时候，我们可以把项目开发的周期全部列出，虽然项目计划通常都会有变更，但项目计划最好能够做到有始有终，把全部任务时间明确一下，然后项目交付时间基本就确定了，其中的任意环节有变更，很有可能是不会影响到项目交付时间的。我们可以把项目计划分为11个环节，如下所示：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;需求分析&lt;/li&gt;
&lt;li&gt;原型设计&lt;/li&gt;
&lt;li&gt;方案设计&lt;/li&gt;
&lt;li&gt;开发计划&lt;/li&gt;
&lt;li&gt;开发阶段&lt;/li&gt;
&lt;li&gt;下版计划（下一阶段任务计划）&lt;/li&gt;
&lt;li&gt;内部验收&lt;/li&gt;
&lt;li&gt;产品验收&lt;/li&gt;
&lt;li&gt;测试阶段&lt;/li&gt;
&lt;li&gt;模拟升级&lt;/li&gt;
&lt;li&gt;正式发布&lt;/li&gt;
&lt;li&gt;复盘会议&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如下图所示，就是根据这11个环节制定的项目开发计划，虽然实际情况会有所出入，但是可以知道这个项目12月底基本上就可以交付了，有这样很清晰的时间节点，对于接下来的开发工作，会更有目标和方向感，其中经常出现任务变更，大多是在开发阶段，但是并不代表做好这个环节就没事了，接下来的环节如果遇到问题，也是会影响到项目交付的，所以怎么能管理好一个项目，是需要多方面去思考和解决问题的，并不是只做好开发任务环节就行了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157081.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我们在制定项目计划的时候，如果只是把功能开发部分列出来，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157068.png"></p>
<p>可能会造成项目延期，在上一篇文章《05-项目为什么总是延期》中已经分析过了，这里就不再赘述了，我们现在要探讨的是，如何制定一个项目计划呢？</p>
<p>在开始项目计划制定之前，可以先了解一下开发模式的相关知识，这部分主要是<a href="https://b23.tv/eeIEBa2">《【清华大学】项目管理的逻辑（全6讲）》</a>里面的内容，有兴趣的可以去看一下，还是很不错的。</p>
<p><strong>1. 瀑布式开发</strong></p>
<p>预测型开发，在还没有开始着手编写代码前，就可以提前预知结果如何，之所以叫瀑布式，是因为整个开发流程都是有序的，就像水从上往下流，每一步做很到位就到下一阶段。</p>
<p><strong>2. 迭代式开发</strong></p>
<p>迭代式开发，顾名思义，就是一个版本接着一个版本进行迭代，先将项目整体框架搭建好，然后基础布局全部铺开，就好像画人物肖像一样，先勾勒草图，画出人物整体轮廓，然后才依次画出脑袋、眉毛、眼睛、鼻子、嘴巴等等，全部画出来之后，才是着色。</p>
<p><strong>3. 增量式开发</strong></p>
<p>增量式开发，咋听之下，与迭代式开发的意思一样，实际上是不一样的，增量式开发的意思是，每次只构建一点，每个阶段就交付一部分，然后组合在一起，还是用画人物肖像来举例子，一开始先画头发，画完之后上色，然后接着是眉毛，画好之后着色，以此类推，全部画好一个地方再接着画另一个地方，如下图所示：<img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157400.png"></p>
<p><strong>4. 敏捷式开发</strong></p>
<p>适应型开发，灵活性很高，需求可以随时提，然后放到需求池里，可能两周一个周期发一个版本。因为能干的活儿很有限，就像坐地铁一样，人很多，挤不上去那就下一趟，所以敏捷开发的思路就是，未必做得到，所以下个版本实现需求，可以有节奏地持续开发。</p>
<p>以上就是常用的开发模式，但是我们在实际应用中，应该怎么选择哪一种开发模式呢？为此有一个<code>STACEY</code>矩阵图可以作一些参考，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157174.png"></p>
<p>从上图中可以知道，选择哪种开发模式，是基于需求和技术两个维度去评估的，所以项目负责人在编写项目需求与方案文档的时候，可能就可以做出判断了。说回我们自身，开发模式毕竟只是项目管理中的一种技巧，要深刻认识到它并不是万能的，如果掉入盲目迷信权威的陷阱，那么就太死板了，真正应用的时候，还是要考虑实际情况，在遵循基本原则的基础上，要明白事物变化的重要性，在变化的世界里使用不变的方法是不现实的，没有任何一种开发模式能够适用全部的项目。</p>
<p>现在部门按照项目来管理，每个人都比较清楚自己要做的事情，也没有那么多交叉的任务，所以变更理应很少才对，在制定项目计划的时候，我们可以把项目开发的周期全部列出，虽然项目计划通常都会有变更，但项目计划最好能够做到有始有终，把全部任务时间明确一下，然后项目交付时间基本就确定了，其中的任意环节有变更，很有可能是不会影响到项目交付时间的。我们可以把项目计划分为11个环节，如下所示：</p>
<ol>
<li>需求分析</li>
<li>原型设计</li>
<li>方案设计</li>
<li>开发计划</li>
<li>开发阶段</li>
<li>下版计划（下一阶段任务计划）</li>
<li>内部验收</li>
<li>产品验收</li>
<li>测试阶段</li>
<li>模拟升级</li>
<li>正式发布</li>
<li>复盘会议</li>
</ol>
<p>如下图所示，就是根据这11个环节制定的项目开发计划，虽然实际情况会有所出入，但是可以知道这个项目12月底基本上就可以交付了，有这样很清晰的时间节点，对于接下来的开发工作，会更有目标和方向感，其中经常出现任务变更，大多是在开发阶段，但是并不代表做好这个环节就没事了，接下来的环节如果遇到问题，也是会影响到项目交付的，所以怎么能管理好一个项目，是需要多方面去思考和解决问题的，并不是只做好开发任务环节就行了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157081.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>05-项目为什么总是延期</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/05-%E9%A1%B9%E7%9B%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E6%80%BB%E6%98%AF%E5%BB%B6%E6%9C%9F/</link>
      <pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/05-%E9%A1%B9%E7%9B%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E6%80%BB%E6%98%AF%E5%BB%B6%E6%9C%9F/</guid>
      <description>&lt;p&gt;当前一个项目在开发新需求的时候，我们制定的计划只是列出功能开发的部分，并不是整个项目全部的周期，这就造成项目从开始到能够正式上线，时间规划是不全面、不清晰的（只是代码编写部分有时间计划），项目负责人基本上只会关注功能开发的部分，至于内部验收、Bug修复、测试周期和版本发布时间等等环节，有点听天由命，完全是看前一个环节进展的情况而定——前一个环节进展顺利，那就到下一个环节，进展不顺利就变更下个环节的时间，反复几次，项目上线的时间一拖再拖，遥遥无期。&lt;/p&gt;
&lt;p&gt;之所以会这样，是因为在项目推进过程中，我们聚焦的一直是&lt;strong&gt;解决项目当前遇到的难题&lt;/strong&gt;，为了解决这个难题，不断地调整项目任务计划时间，明天后天下周下个月等等。也许我们可以转换一下思路：项目推进过程中，以终为始，以最终结果为导向，聚焦&lt;strong&gt;项目上线发布&lt;/strong&gt;这个目标。为了达成这个目标，我们要采取不同的做事情方式，也就是多维度思考如何解决问题。&lt;/p&gt;
&lt;p&gt;导致项目进度受阻的问题有大有小，如果是不可抗力的情况（比如有的项目需要用到设备，结果设备完全用不了），那当然没有办法，但这种情况相对来说还是比较少的。其他的那些问题就要想一下，是不是当下一定要解决，或者说一定要从技术层面解决才行呢？那当然不是，我们的需求只是解决问题，问题解决了就行，并不关心用了什么方式。就好像要从广州到北京，需求只是要去到北京，并不在乎你怎么过去，是要坐飞机、坐动车、自己开车或者打车什么都可以，只要能到北京就行。&lt;/p&gt;
&lt;p&gt;在项目推进过程中，项目负责人遇到问题时，以前可能是这样思考的：&amp;ldquo;这个问题解决起来很困难，可能需要5天的时间，我要问一下，项目计划能不能变更，调整一下上线的时间？&amp;ldquo;现在的话，如果是以终为始，可能就需要这样思考了：&amp;ldquo;这个问题解决起来很困难，可能需要5天时间，这个版本计划11月15日上线，时间有点紧张——这个功能是不是必须的？一定是这个版本要加的么？能不能下个版本？为什么需要5天的时间，有没有其他更好的解决方案？5天的时间里，我是不是可以先做其他事情？测试阶段、发版阶段还有没有什么潜在的问题？第三方编译走通过了么？时间有点赶，问题有点多，可能要动员一下，让大家知道现在时间有点紧张，加加班才行了，宁愿赶在前面，也不要后面遇到问题了没时间解决。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我们倾向于哪怕只是一点点可能性，也要挣扎一下，不要那么容易就缴械投降。还是要回到小平同志说的那句话：&amp;ldquo;不管黑猫白猫，能捉老鼠的就是好猫。&amp;rdquo;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>当前一个项目在开发新需求的时候，我们制定的计划只是列出功能开发的部分，并不是整个项目全部的周期，这就造成项目从开始到能够正式上线，时间规划是不全面、不清晰的（只是代码编写部分有时间计划），项目负责人基本上只会关注功能开发的部分，至于内部验收、Bug修复、测试周期和版本发布时间等等环节，有点听天由命，完全是看前一个环节进展的情况而定——前一个环节进展顺利，那就到下一个环节，进展不顺利就变更下个环节的时间，反复几次，项目上线的时间一拖再拖，遥遥无期。</p>
<p>之所以会这样，是因为在项目推进过程中，我们聚焦的一直是<strong>解决项目当前遇到的难题</strong>，为了解决这个难题，不断地调整项目任务计划时间，明天后天下周下个月等等。也许我们可以转换一下思路：项目推进过程中，以终为始，以最终结果为导向，聚焦<strong>项目上线发布</strong>这个目标。为了达成这个目标，我们要采取不同的做事情方式，也就是多维度思考如何解决问题。</p>
<p>导致项目进度受阻的问题有大有小，如果是不可抗力的情况（比如有的项目需要用到设备，结果设备完全用不了），那当然没有办法，但这种情况相对来说还是比较少的。其他的那些问题就要想一下，是不是当下一定要解决，或者说一定要从技术层面解决才行呢？那当然不是，我们的需求只是解决问题，问题解决了就行，并不关心用了什么方式。就好像要从广州到北京，需求只是要去到北京，并不在乎你怎么过去，是要坐飞机、坐动车、自己开车或者打车什么都可以，只要能到北京就行。</p>
<p>在项目推进过程中，项目负责人遇到问题时，以前可能是这样思考的：&ldquo;这个问题解决起来很困难，可能需要5天的时间，我要问一下，项目计划能不能变更，调整一下上线的时间？&ldquo;现在的话，如果是以终为始，可能就需要这样思考了：&ldquo;这个问题解决起来很困难，可能需要5天时间，这个版本计划11月15日上线，时间有点紧张——这个功能是不是必须的？一定是这个版本要加的么？能不能下个版本？为什么需要5天的时间，有没有其他更好的解决方案？5天的时间里，我是不是可以先做其他事情？测试阶段、发版阶段还有没有什么潜在的问题？第三方编译走通过了么？时间有点赶，问题有点多，可能要动员一下，让大家知道现在时间有点紧张，加加班才行了，宁愿赶在前面，也不要后面遇到问题了没时间解决。&rdquo;</p>
<p>我们倾向于哪怕只是一点点可能性，也要挣扎一下，不要那么容易就缴械投降。还是要回到小平同志说的那句话：&ldquo;不管黑猫白猫，能捉老鼠的就是好猫。&rdquo;</p>
]]></content:encoded>
    </item>
    <item>
      <title>04-项目负责人对业务不熟悉</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/04-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E5%AF%B9%E4%B8%9A%E5%8A%A1%E4%B8%8D%E7%86%9F%E6%82%89/</link>
      <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/04-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E5%AF%B9%E4%B8%9A%E5%8A%A1%E4%B8%8D%E7%86%9F%E6%82%89/</guid>
      <description>&lt;p&gt;一直以来，项目管理中存在一个较为突出的问题：项目负责人在接到产品需求后，往往只是简单浏览一眼，便着手制定项目开发计划。计划制定完成后，负责人通常只深入研究自己负责开发的模块，而对其他模块则不再深入了解。对于由其他同事负责开发的功能模块，项目负责人通常连三个基本问题都无法准确回答：一是“是什么”，即这个功能具体是什么；二是“为什么”，即客户为什么需要这个功能，这个功能对客户有什么实际用途，是否可以不开发；三是“怎么做”，即这个功能在前端和后端分别是如何实现的。即便能回答到第三个问题，通常也仅能涉及前端或后端的部分内容。而实际情况往往更为糟糕，有时连第一个问题都无法准确回答。负责开发该功能模块的同事，可能也是在开发过程中逐步了解需求，其对需求的掌握程度，刚好足以完成功能开发即可。&lt;/p&gt;
&lt;p&gt;这种状况容易导致项目管理出现诸多问题，表面上看似平静，实则处于一种失控状态，主要体现在以下几个方面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;任务时间评估不到位&lt;/strong&gt;：项目负责人由于对整体功能和需求缺乏深入了解，导致在评估任务所需时间时不够准确，经常需要变更任务计划，影响项目进度的稳定性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;风险意识不足&lt;/strong&gt;：由于对业务不够熟悉，项目负责人无法提前识别潜在的延期风险因素，也无法有效判断是否需要安排加班来应对可能出现的问题，从而增加了项目按时完成的不确定性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;任务验收困难&lt;/strong&gt;：在验收功能时，由于项目负责人对业务和需求不够了解，只能依赖开发同事的回答来判断功能是否实现以及是否与需求一致。这种情况下，验收工作往往流于形式，难以深入和全面地评估功能质量，导致验收工作的积极性和效果都不理想。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了解决这些问题，项目负责人需要自行梳理一份详细的项目需求与功能实现文档。比如下图所示的文档格式。在文档中，将每个功能按照“是什么”、“为什么”、“怎么做”这三个问题进行清晰的梳理和记录。在项目推进过程中，一旦出现需求变更，应及时更新文档，确保项目负责人对项目的整体情况有清晰的把握和了解。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503202330117.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>一直以来，项目管理中存在一个较为突出的问题：项目负责人在接到产品需求后，往往只是简单浏览一眼，便着手制定项目开发计划。计划制定完成后，负责人通常只深入研究自己负责开发的模块，而对其他模块则不再深入了解。对于由其他同事负责开发的功能模块，项目负责人通常连三个基本问题都无法准确回答：一是“是什么”，即这个功能具体是什么；二是“为什么”，即客户为什么需要这个功能，这个功能对客户有什么实际用途，是否可以不开发；三是“怎么做”，即这个功能在前端和后端分别是如何实现的。即便能回答到第三个问题，通常也仅能涉及前端或后端的部分内容。而实际情况往往更为糟糕，有时连第一个问题都无法准确回答。负责开发该功能模块的同事，可能也是在开发过程中逐步了解需求，其对需求的掌握程度，刚好足以完成功能开发即可。</p>
<p>这种状况容易导致项目管理出现诸多问题，表面上看似平静，实则处于一种失控状态，主要体现在以下几个方面：</p>
<ol>
<li>
<p><strong>任务时间评估不到位</strong>：项目负责人由于对整体功能和需求缺乏深入了解，导致在评估任务所需时间时不够准确，经常需要变更任务计划，影响项目进度的稳定性。</p>
</li>
<li>
<p><strong>风险意识不足</strong>：由于对业务不够熟悉，项目负责人无法提前识别潜在的延期风险因素，也无法有效判断是否需要安排加班来应对可能出现的问题，从而增加了项目按时完成的不确定性。</p>
</li>
<li>
<p><strong>任务验收困难</strong>：在验收功能时，由于项目负责人对业务和需求不够了解，只能依赖开发同事的回答来判断功能是否实现以及是否与需求一致。这种情况下，验收工作往往流于形式，难以深入和全面地评估功能质量，导致验收工作的积极性和效果都不理想。</p>
</li>
</ol>
<p>为了解决这些问题，项目负责人需要自行梳理一份详细的项目需求与功能实现文档。比如下图所示的文档格式。在文档中，将每个功能按照“是什么”、“为什么”、“怎么做”这三个问题进行清晰的梳理和记录。在项目推进过程中，一旦出现需求变更，应及时更新文档，确保项目负责人对项目的整体情况有清晰的把握和了解。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503202330117.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>03-项目负责人能力阶段划分</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/03-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%83%BD%E5%8A%9B%E9%98%B6%E6%AE%B5%E5%88%92%E5%88%86/</link>
      <pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/03-%E9%A1%B9%E7%9B%AE%E8%B4%9F%E8%B4%A3%E4%BA%BA%E8%83%BD%E5%8A%9B%E9%98%B6%E6%AE%B5%E5%88%92%E5%88%86/</guid>
      <description>&lt;p&gt;我认真思考了一下，觉得项目负责人的能力可以分为五个阶段，分别对应的关键字是开发、方法、产品、整体、市场。虽然看起来好像呈递进关系，但是我发现实际上不是这样的，很多人可能没办法将其划分在哪个阶段，有些是好几个阶段都覆盖，各阶段要求的能力都有一点，但又不完全具备；有些是第二阶段了，可能第一阶段还没达到等等，所以这个划分只是参考。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 开发能力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目里自己负责开发的功能高质量完成，基本可以认为是&lt;strong&gt;可以直接给客户演示&lt;/strong&gt;的标准：功能没有特别重大的Bug（例如不会突然崩溃或无法使用）；功能边界定义清晰（例如手机号输入有格式限制，且包含正确提示和异常处理）；界面交互流畅，避免出现逻辑混乱的页面跳转；视觉细节完善，连一个像素的偏差都会调整到位。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 方法论沉淀&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目里自己开发的模块业务非常熟悉，但其他人负责的部分了解不足；能够独立完成需求理解、方案设计、开发计划制定、内部验收、测试提交和项目上线全流程，对分配到的模块有完整把控力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 产品化思维&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对项目中所有业务需求的关联性和实现路径一清二楚；熟练使用项目涉及的硬件设备及相关配套产品；如果由你主导，能够完成产品需求文档和原型设计，并对需求合理性提出专业建议。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 技术全局观&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;突破单一技术栈限制，例如前端出身的负责人掌握后端核心技术逻辑，后端负责人熟悉前端核心实现原理，能够主导跨技术栈的方案设计与协作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 市场价值洞察&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从技术执行转向产品驱动，深入理解产品的市场定位与核心价值（例如清楚产品解决什么痛点、目标用户是谁）；关注产品的市场推广策略与用户增长，推动技术方案适配市场需求。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我认真思考了一下，觉得项目负责人的能力可以分为五个阶段，分别对应的关键字是开发、方法、产品、整体、市场。虽然看起来好像呈递进关系，但是我发现实际上不是这样的，很多人可能没办法将其划分在哪个阶段，有些是好几个阶段都覆盖，各阶段要求的能力都有一点，但又不完全具备；有些是第二阶段了，可能第一阶段还没达到等等，所以这个划分只是参考。</p>
<p><strong>1. 开发能力</strong></p>
<p>项目里自己负责开发的功能高质量完成，基本可以认为是<strong>可以直接给客户演示</strong>的标准：功能没有特别重大的Bug（例如不会突然崩溃或无法使用）；功能边界定义清晰（例如手机号输入有格式限制，且包含正确提示和异常处理）；界面交互流畅，避免出现逻辑混乱的页面跳转；视觉细节完善，连一个像素的偏差都会调整到位。</p>
<p><strong>2. 方法论沉淀</strong></p>
<p>项目里自己开发的模块业务非常熟悉，但其他人负责的部分了解不足；能够独立完成需求理解、方案设计、开发计划制定、内部验收、测试提交和项目上线全流程，对分配到的模块有完整把控力。</p>
<p><strong>3. 产品化思维</strong></p>
<p>对项目中所有业务需求的关联性和实现路径一清二楚；熟练使用项目涉及的硬件设备及相关配套产品；如果由你主导，能够完成产品需求文档和原型设计，并对需求合理性提出专业建议。</p>
<p><strong>4. 技术全局观</strong></p>
<p>突破单一技术栈限制，例如前端出身的负责人掌握后端核心技术逻辑，后端负责人熟悉前端核心实现原理，能够主导跨技术栈的方案设计与协作。</p>
<p><strong>5. 市场价值洞察</strong></p>
<p>从技术执行转向产品驱动，深入理解产品的市场定位与核心价值（例如清楚产品解决什么痛点、目标用户是谁）；关注产品的市场推广策略与用户增长，推动技术方案适配市场需求。</p>
]]></content:encoded>
    </item>
    <item>
      <title>02-项目管理的意义</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/02-%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E7%9A%84%E6%84%8F%E4%B9%89/</link>
      <pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/02-%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E7%9A%84%E6%84%8F%E4%B9%89/</guid>
      <description>&lt;p&gt;我们探讨项目管理的意义，只会聚焦于关联密切的那部分。至于关系到公司成本投入等问题，虽然是不争的事实，但对于我们而言，有点遥远，就不再过多拓展。&lt;/p&gt;
&lt;p&gt;对于项目负责人而言，他需要明白项目管理的意义。根据我个人的一些经验，总结了以下三点，分别涉及一个项目完整的周期，即开始、过程和结束。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一致性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目标一致、步伐一致，项目中的全体成员都需要知道，我们的目标是什么？并将全部精力投入到达成目标的要事上面。在这个过程中，间接实现了项目降本增效，还有提高团队的凝聚力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;及时性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目进行过程中，无时无刻都在发生变化，不管是项目制定的计划，还是遇到了业务或技术难点，及时了解到当下的情况，尽快解决问题，可以避免项目进度受阻。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;高质性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目完成并不意味着没有问题，质量如何保证，就需要项目负责人进行项目的验收，不然怎么知道已经完善了呢？&lt;/p&gt;
&lt;p&gt;以上这三点都是对于项目而言，那么对于项目负责人来说，意义又在哪里呢？&lt;/p&gt;
&lt;p&gt;那就是一个人的成功（做好事情）固然值得肯定，但如果他能将这种成功因地制宜地在团队其他人身上应验，那将意义深远。一方面，团队里的成员能力有所提升，对项目上面的工作肯定是有帮助的；另一方面，我们都知道每个人都有自己对世界的一套认知，怎么做事情，都有自己的方式，我们只是一直在摸索那条规律，不断应验和调整。如果其他人也适用，那至少说明，你的一整套理论是有可取之处的，越来越靠近那条规律；如果不适用，那也可以借机进行反思和完善，对你而言是大有裨益的。这也是教员《实践论》里提到的观点：“人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>我们探讨项目管理的意义，只会聚焦于关联密切的那部分。至于关系到公司成本投入等问题，虽然是不争的事实，但对于我们而言，有点遥远，就不再过多拓展。</p>
<p>对于项目负责人而言，他需要明白项目管理的意义。根据我个人的一些经验，总结了以下三点，分别涉及一个项目完整的周期，即开始、过程和结束。</p>
<p><strong>一致性</strong></p>
<p>目标一致、步伐一致，项目中的全体成员都需要知道，我们的目标是什么？并将全部精力投入到达成目标的要事上面。在这个过程中，间接实现了项目降本增效，还有提高团队的凝聚力。</p>
<p><strong>及时性</strong></p>
<p>项目进行过程中，无时无刻都在发生变化，不管是项目制定的计划，还是遇到了业务或技术难点，及时了解到当下的情况，尽快解决问题，可以避免项目进度受阻。</p>
<p><strong>高质性</strong></p>
<p>项目完成并不意味着没有问题，质量如何保证，就需要项目负责人进行项目的验收，不然怎么知道已经完善了呢？</p>
<p>以上这三点都是对于项目而言，那么对于项目负责人来说，意义又在哪里呢？</p>
<p>那就是一个人的成功（做好事情）固然值得肯定，但如果他能将这种成功因地制宜地在团队其他人身上应验，那将意义深远。一方面，团队里的成员能力有所提升，对项目上面的工作肯定是有帮助的；另一方面，我们都知道每个人都有自己对世界的一套认知，怎么做事情，都有自己的方式，我们只是一直在摸索那条规律，不断应验和调整。如果其他人也适用，那至少说明，你的一整套理论是有可取之处的，越来越靠近那条规律；如果不适用，那也可以借机进行反思和完善，对你而言是大有裨益的。这也是教员《实践论》里提到的观点：“人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>01-写在前面</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/01-%E5%86%99%E5%9C%A8%E5%89%8D%E9%9D%A2/</link>
      <pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/01-%E5%86%99%E5%9C%A8%E5%89%8D%E9%9D%A2/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;这些内容是我在2022年8月编写的，当时在部门内部进行了分享，主要涉及项目管理知识和个人工作经验总结。最开始我是计划以写书的方式系统整理这些内容，但因种种原因一直搁置。现在我觉得，事情还是越早开始越好，因为不同阶段的工作重心会有变化。若一味拖延，可能错失深入处理细节的机会，而且时间越久，当初的感受和体会也会淡去，相应的观点也可能会有出入。因此，现在就开始着手整理吧。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;你可能是项目中的开发能手，最佳情况也只是能保证自己负责开发的功能没有问题，其他的你是无法保证的。哪怕你承担了项目中全部的开发工作，测试阶段、验收阶段和发布阶段也是需要其他人协助的。假设这些你都可以自己完成，而且也做得很到位，但要是需要该项目在很短的时间内交付，想必你就没有办法了。一个人的能力不管多高，人的精力终究是有限的，任何事情能够得到一个比较满意的结果，都离不开众人的努力，对于项目而言也是如此。&lt;/p&gt;
&lt;p&gt;在推进多项目管理过程中，反馈出来不少问题，我针对这些问题进行了分析，并且提供了一些相应的解决方案。不过这些方案不一定全对，只是我个人的一些反思总结和心得分享。我计划把内容分为意识、能力、方法、提升和附录这几个部分。意识主要是项目管理意识方面的探讨，意识是这一切的基础，意识没有到位，后面的其他方面做得再好，也是有局限性的，就像一棵大树，树根没有长好，枝干树叶的成长也是有限的。因为意识很重要，所以把它放在前面。能力主要是探讨项目管理应该具备哪些能力。方法主要是项目管理方法上面的探讨。至于附录，是一些有助于提升项目管理能力的书籍摘要。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>这些内容是我在2022年8月编写的，当时在部门内部进行了分享，主要涉及项目管理知识和个人工作经验总结。最开始我是计划以写书的方式系统整理这些内容，但因种种原因一直搁置。现在我觉得，事情还是越早开始越好，因为不同阶段的工作重心会有变化。若一味拖延，可能错失深入处理细节的机会，而且时间越久，当初的感受和体会也会淡去，相应的观点也可能会有出入。因此，现在就开始着手整理吧。</p></blockquote>
<p>你可能是项目中的开发能手，最佳情况也只是能保证自己负责开发的功能没有问题，其他的你是无法保证的。哪怕你承担了项目中全部的开发工作，测试阶段、验收阶段和发布阶段也是需要其他人协助的。假设这些你都可以自己完成，而且也做得很到位，但要是需要该项目在很短的时间内交付，想必你就没有办法了。一个人的能力不管多高，人的精力终究是有限的，任何事情能够得到一个比较满意的结果，都离不开众人的努力，对于项目而言也是如此。</p>
<p>在推进多项目管理过程中，反馈出来不少问题，我针对这些问题进行了分析，并且提供了一些相应的解决方案。不过这些方案不一定全对，只是我个人的一些反思总结和心得分享。我计划把内容分为意识、能力、方法、提升和附录这几个部分。意识主要是项目管理意识方面的探讨，意识是这一切的基础，意识没有到位，后面的其他方面做得再好，也是有局限性的，就像一棵大树，树根没有长好，枝干树叶的成长也是有限的。因为意识很重要，所以把它放在前面。能力主要是探讨项目管理应该具备哪些能力。方法主要是项目管理方法上面的探讨。至于附录，是一些有助于提升项目管理能力的书籍摘要。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 48</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-48/</link>
      <pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-48/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/first-letter-to-appear-twice/&#34;&gt;2351. 第一个出现两次的字母&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个由小写英文字母组成的字符串 &lt;code&gt;s&lt;/code&gt; ，请你找出并返回第一个出现 &lt;strong&gt;两次&lt;/strong&gt; 的字母。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 &lt;code&gt;a&lt;/code&gt; 的 &lt;strong&gt;第二次&lt;/strong&gt; 出现比 &lt;code&gt;b&lt;/code&gt; 的 &lt;strong&gt;第二次&lt;/strong&gt; 出现在字符串中的位置更靠前，则认为字母 &lt;code&gt;a&lt;/code&gt; 在字母 &lt;code&gt;b&lt;/code&gt; 之前出现两次。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt; 包含至少一个出现两次的字母。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abccbaacz&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;字母&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在下标&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;、&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;处出现&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;字母&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在下标&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;处出现&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;字母&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在下标&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;、&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;处出现&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;字母&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;z&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在下标&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;处出现&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;字母&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;是第一个出现两次的字母&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;因为在所有字母中&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;第二次出现的下标是最小的&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;repeatedCharacter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;earliestRepeatIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;Infinity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 如果出现了第一次和最后一次的位置不相等，则表示有2个以上存在
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lastIndexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// 第一个出现两次的字母，则关键点就在第二次出现的位置，谁最靠前（indexOf越小），那么该位置的字母就是所求的值。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;            &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;secondOccurrenceIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;earliestRepeatIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;earliestRepeatIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;secondOccurrenceIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;earliestRepeatIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果出现了第一次和最后一次的位置不相等，则表示有2个以上存在&lt;/li&gt;
&lt;li&gt;第一个出现两次的字母，则关键点就在第二次出现的位置，谁最靠前（indexOf越小），那么该位置的字母就是所求的值。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2502/250227-fog-harvesting.html&#34;&gt;Fog harvesting could provide water for dry cities - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;全球许多地区降雨稀少，人们每日获取饮用水都面临巨大挑战。科学家发现了一项可能帮助世界最干旱城镇的新技术——从雾中收集水分，这项技术有望为数百万人口提供饮用水。智利研究人员正在探索&amp;quot;捕雾取水&amp;quot;技术的应用潜力。这项技术原理简单：在立柱之间悬挂巨型网状幕帘，当云雾穿行其间，水滴附着在网格表面，最终汇聚成水流通过下方管道导入储水罐。这种低成本、易操作的集水方式为干旱地区提供了新选择。&lt;/p&gt;
&lt;p&gt;来自首都圣地亚哥私立大学马约尔大学的研究团队，在年均降雨量不足5毫米的沙漠小镇阿尔托奥斯特西奥开展实地测试。当地居民日常饮用水主要依赖卡车运输。研究负责人弗吉尼亚·卡特·甘贝里尼博士指出，这项技术将开启&amp;quot;新时代&amp;quot;，其研究&amp;quot;标志着雾水资源利用认知的重大转变——从局限于农村地区的小型解决方案，升级为适用于城市的实用水源&amp;quot;。她补充道：&amp;ldquo;云雾中的水资源既能提升城市应对气候变化的能力，又能改善清洁水源的获取条件。&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在 Windows 中，端口被占用，怎么解决？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/first-letter-to-appear-twice/">2351. 第一个出现两次的字母</a></p>
<p>给你一个由小写英文字母组成的字符串 <code>s</code> ，请你找出并返回第一个出现 <strong>两次</strong> 的字母。</p>
<p><strong>注意：</strong></p>
<ul>
<li>如果 <code>a</code> 的 <strong>第二次</strong> 出现比 <code>b</code> 的 <strong>第二次</strong> 出现在字符串中的位置更靠前，则认为字母 <code>a</code> 在字母 <code>b</code> 之前出现两次。</li>
<li><code>s</code> 包含至少一个出现两次的字母。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;abccbaacz&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="s2">&#34;c&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">字母</span> <span class="s1">&#39;a&#39;</span> <span class="nx">在下标</span> <span class="mi">0</span> <span class="err">、</span><span class="mi">5</span> <span class="nx">和</span> <span class="mi">6</span> <span class="nx">处出现</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">字母</span> <span class="s1">&#39;b&#39;</span> <span class="nx">在下标</span> <span class="mi">1</span> <span class="nx">和</span> <span class="mi">4</span> <span class="nx">处出现</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">字母</span> <span class="s1">&#39;c&#39;</span> <span class="nx">在下标</span> <span class="mi">2</span> <span class="err">、</span><span class="mi">3</span> <span class="nx">和</span> <span class="mi">7</span> <span class="nx">处出现</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">字母</span> <span class="s1">&#39;z&#39;</span> <span class="nx">在下标</span> <span class="mi">8</span> <span class="nx">处出现</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">字母</span> <span class="s1">&#39;c&#39;</span> <span class="nx">是第一个出现两次的字母</span><span class="err">，</span><span class="nx">因为在所有字母中</span><span class="err">，</span><span class="s1">&#39;c&#39;</span> <span class="nx">第二次出现的下标是最小的</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">repeatedCharacter</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">earliestRepeatIndex</span> <span class="o">=</span> <span class="kc">Infinity</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 如果出现了第一次和最后一次的位置不相等，则表示有2个以上存在
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="o">!==</span> <span class="nx">str</span><span class="p">.</span><span class="nx">lastIndexOf</span><span class="p">(</span><span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// 第一个出现两次的字母，则关键点就在第二次出现的位置，谁最靠前（indexOf越小），那么该位置的字母就是所求的值。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="kr">const</span> <span class="nx">secondOccurrenceIndex</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">str</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="nx">earliestRepeatIndex</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">earliestRepeatIndex</span><span class="p">,</span> <span class="nx">secondOccurrenceIndex</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">str</span><span class="p">[</span><span class="nx">earliestRepeatIndex</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>如果出现了第一次和最后一次的位置不相等，则表示有2个以上存在</li>
<li>第一个出现两次的字母，则关键点就在第二次出现的位置，谁最靠前（indexOf越小），那么该位置的字母就是所求的值。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2502/250227-fog-harvesting.html">Fog harvesting could provide water for dry cities - Breaking News English Lesson</a></p>
<p>全球许多地区降雨稀少，人们每日获取饮用水都面临巨大挑战。科学家发现了一项可能帮助世界最干旱城镇的新技术——从雾中收集水分，这项技术有望为数百万人口提供饮用水。智利研究人员正在探索&quot;捕雾取水&quot;技术的应用潜力。这项技术原理简单：在立柱之间悬挂巨型网状幕帘，当云雾穿行其间，水滴附着在网格表面，最终汇聚成水流通过下方管道导入储水罐。这种低成本、易操作的集水方式为干旱地区提供了新选择。</p>
<p>来自首都圣地亚哥私立大学马约尔大学的研究团队，在年均降雨量不足5毫米的沙漠小镇阿尔托奥斯特西奥开展实地测试。当地居民日常饮用水主要依赖卡车运输。研究负责人弗吉尼亚·卡特·甘贝里尼博士指出，这项技术将开启&quot;新时代&quot;，其研究&quot;标志着雾水资源利用认知的重大转变——从局限于农村地区的小型解决方案，升级为适用于城市的实用水源&quot;。她补充道：&ldquo;云雾中的水资源既能提升城市应对气候变化的能力，又能改善清洁水源的获取条件。&rdquo;</p>
<h2 id="tip">Tip</h2>
<p>在 Windows 中，端口被占用，怎么解决？</p>
<p>在 Windows 下检查端口 503 是否被占用，以管理员身份运行 “命令提示符” 窗口，使用命令检查当前端口使用的进程：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">netstat -ano <span class="p">|</span> findstr :503
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502211744587.png"></p>
<p>然后记下状态为 LISTENING 的数字（例如 39880），然后使用以下命令，终止进程：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"> taskkill /PID <span class="m">39880</span> /F
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502211744928.png"></p>
<h2 id="share">Share</h2>
<p>《大才非学不成》 [明·郑晓]</p>
<p>胆欲大，心欲小；智欲圆，行欲方。大志非才不就，大才非学不成。学非记诵云尔，当究事所以然，融于心目，如身亲履之。南阳一出即相，淮阴一出即将，果盖世雄才，皆是平时所学。志士读书当知此。不然，世之能读书能文章不善做官做人者最多也。</p>
<p>​</p>
]]></content:encoded>
    </item>
    <item>
      <title>车辆运维管理行业洞察与竞品分析</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E8%BD%A6%E8%BE%86%E8%BF%90%E7%BB%B4%E7%AE%A1%E7%90%86%E8%A1%8C%E4%B8%9A%E6%B4%9E%E5%AF%9F%E4%B8%8E%E7%AB%9E%E5%93%81%E5%88%86%E6%9E%90/</link>
      <pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E8%BD%A6%E8%BE%86%E8%BF%90%E7%BB%B4%E7%AE%A1%E7%90%86%E8%A1%8C%E4%B8%9A%E6%B4%9E%E5%AF%9F%E4%B8%8E%E7%AB%9E%E5%93%81%E5%88%86%E6%9E%90/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;车辆运维管理是指对车辆进行日常维护、故障处理、性能监测、成本控制等一系列活动的管理。随着物联网、大数据、人工智能等技术的发展，车辆运维管理软件和解决方案的市场竞争日益激烈。&lt;/p&gt;
&lt;h1 id=&#34;2-确定目标&#34;&gt;2. 确定目标&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;通过产品差异化定位，找到竞争者的差异，打造自己的优势，抢占市场份额，通过市场细分来确定自己的定位。&lt;/li&gt;
&lt;li&gt;学习对方的优势，借鉴优秀的产品设计，帮助自己挖掘需求，根据自身产品找到好的切入点，更好地做产品。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;3-车辆管理系统架构&#34;&gt;3. 车辆管理系统架构&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503051039444.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-车辆管理系统行业市场情况及后续发展趋势&#34;&gt;4. 车辆管理系统行业市场情况及后续发展趋势&lt;/h1&gt;
&lt;p&gt;以下基于《2025-2028年中国车辆管理系统行业市场调查研究及发展战略规划报告》相关行业报告整理。&lt;/p&gt;
&lt;h2 id=&#34;41-行业概述&#34;&gt;4.1. 行业概述&lt;/h2&gt;
&lt;p&gt;随着我国经济的持续快速发展，汽车产业已成为国民经济的重要支柱产业，车辆管理系统作为其重要组成部分，市场需求逐年增长。科技进步和智能化、网络化、信息化技术的广泛应用，推动了车辆管理系统技术水平和功能的完善。政府高度重视车辆管理系统的建设与发展，出台了一系列政策法规，如智能交通系统（ITS）的建设、车联网技术的研发与应用等，为行业发展创造了良好外部环境。&lt;/p&gt;
&lt;p&gt;车辆管理系统是指利用现代信息技术，对车辆及其相关资源进行有效管理的一系列软硬件系统的总称。根据功能和应用领域，可分为车辆基础信息管理系统、车辆运行监控系统、车辆安全管理系统、车辆服务支持系统和车辆智能化管理系统。&lt;/p&gt;
&lt;h2 id=&#34;42-市场现状分析&#34;&gt;4.2. 市场现状分析&lt;/h2&gt;
&lt;p&gt;近年来，我国车辆管理系统市场规模持续扩大，预计到2028年，市场规模将达到数千亿元。新能源汽车车辆管理系统市场需求增长迅速，智能交通系统建设和城市交通管理需求上升，大数据、云计算、人工智能等新兴技术的应用，为市场提供了新的增长点。&lt;/p&gt;
&lt;p&gt;市场呈现多元化、竞争激烈的特点，参与主体包括国内外知名企业、创新型中小企业和科研机构。竞争主要集中在硬件、软件和服务三个层面，企业需根据自身优势和市场定位，形成差异化竞争策略。&lt;/p&gt;
&lt;h2 id=&#34;43-主要市场驱动因素&#34;&gt;4.3. 主要市场驱动因素&lt;/h2&gt;
&lt;p&gt;经济快速发展和人民生活水平提高，汽车保有量逐年攀升，带动了车辆管理系统在车辆登记、年检、保险、维修等方面的需求。&lt;/p&gt;
&lt;p&gt;ITS通过集成交通管理、车辆监控、信息服务等技术，提高交通效率、减少拥堵、保障交通安全，其推广和应用推动了车辆管理系统市场增长。&lt;/p&gt;
&lt;p&gt;政府出台了一系列政策，如《关于加快推进智能交通系统建设的指导意见》，鼓励车辆管理系统的技术创新和应用。&lt;/p&gt;
&lt;h2 id=&#34;44-产业链分析&#34;&gt;4.4. 产业链分析&lt;/h2&gt;
&lt;p&gt;包括上游原材料供应、中游系统研发与集成、下游系统应用与服务三个主要环节。上游涉及传感器、芯片、通信模块等电子元器件生产和供应；中游包括软件开发、硬件组装和系统集成；下游则涵盖安装、调试、维护和增值服务。&lt;/p&gt;
&lt;p&gt;上游原材料供应商与中游系统集成商紧密合作，确保硬件稳定供应和质量保障。中游系统集成商与下游应用服务商协同，提升市场竞争力。产业链各方在技术创新和产业升级方面也保持着良好沟通与合作。&lt;/p&gt;
&lt;h2 id=&#34;45-技术发展趋势&#34;&gt;4.5. 技术发展趋势&lt;/h2&gt;
&lt;p&gt;包括传感器技术、通信技术、数据处理与分析技术以及人工智能技术。这些技术的不断进步和融合，将推动车辆管理系统向更高效、更智能的方向发展。&lt;/p&gt;
&lt;p&gt;物联网、大数据、云计算、人工智能等新兴技术在车辆管理系统中的应用越来越广泛。例如，物联网技术实现车辆与设备的互联互通，实时采集车辆的各种数据；大数据技术对车辆数据进行深度分析，为企业提供决策支持；人工智能技术实现车辆的智能调度、故障预测等。&lt;/p&gt;
&lt;h2 id=&#34;46-市场风险及挑战&#34;&gt;4.6. 市场风险及挑战&lt;/h2&gt;
&lt;p&gt;政策的不确定性可能对行业产生重大影响，如技术标准、安全要求调整，以及政府补贴政策的变动。&lt;/p&gt;
&lt;p&gt;技术更新迭代快，企业需持续投入研发以保持竞争力。同时，知识产权保护也面临挑战。&lt;/p&gt;
&lt;h2 id=&#34;47-发展战略规划&#34;&gt;4.7. 发展战略规划&lt;/h2&gt;
&lt;p&gt;到2028年，实现车辆管理系统核心技术的自主创新和突破，提高国产化率。扩大市场规模，提升市场占有率，特别是在新能源汽车、智能交通等新兴领域。推动行业标准化和规范化建设，加强与国际标准对接。&lt;/p&gt;
&lt;p&gt;加强技术创新和研发投入，建立高水平技术研发团队，与高校、科研机构合作。积极开拓国内外市场，扩大市场份额。与其他企业建立战略合作伙伴关系，实现资源共享、优势互补。提升企业品牌知名度和美誉度。&lt;/p&gt;
&lt;h1 id=&#34;5-车辆管理存在哪些痛点&#34;&gt;5. 车辆管理存在哪些痛点&lt;/h1&gt;
&lt;h2 id=&#34;51-纸质化办公效率低下&#34;&gt;5.1. 纸质化办公效率低下&lt;/h2&gt;
&lt;p&gt;传统纸质办公流程依赖大量人力，需人工登记和安排车辆，无法全面追踪和监管车辆。车辆实际位置与行驶情况需与用车人和司机逐一核实，严重影响企业办公效率。&lt;/p&gt;
&lt;h2 id=&#34;52-车辆调度难题&#34;&gt;5.2. 车辆调度难题&lt;/h2&gt;
&lt;p&gt;缺乏实时监控平台和统一管理制度，无法随时掌握公务用车情况。调度员难以有效指派任务，常导致车辆使用混乱，急需用车时无车可用，或公务车去向不明。&lt;/p&gt;
&lt;h2 id=&#34;53-车务信息繁杂&#34;&gt;5.3. 车务信息繁杂&lt;/h2&gt;
&lt;p&gt;公车日常车务信息涵盖加油、维修、保养、保险、年检、停车费、过路费等。企业车辆数量多时，人工记录易出错或丢失数据，管理统计效率低下。&lt;/p&gt;
&lt;h2 id=&#34;54-车辆监管不足&#34;&gt;5.4. 车辆监管不足&lt;/h2&gt;
&lt;p&gt;无法实时掌握车辆动态，及时了解车辆位置、状态及行驶轨迹，导致车辆运营情况难以掌控，存在安全隐患。&lt;/p&gt;
&lt;h2 id=&#34;55-成本控制困难&#34;&gt;5.5. 成本控制困难&lt;/h2&gt;
&lt;p&gt;车辆燃油消耗、维修保养、保险费用等运营成本较高，企业难以有效控制，导致运营成本增加。&lt;/p&gt;
&lt;h1 id=&#34;6-选择竞品&#34;&gt;6. 选择竞品&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://www.szlanyou.com/&#34;&gt;联友科技&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cl.wintaosaas.com/&#34;&gt;元道通信&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zhijiaxing.net/ysgc/home&#34;&gt;云上管车&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;7-选择分析维度&#34;&gt;7. 选择分析维度&lt;/h1&gt;
&lt;p&gt;通过目标用户、战略定位、布局规划、盈利模式、产品定位、社会资源、发展概况、资金实力、资源优势、产品功能、人力资源、技术实力、运营策略、数据表现和SWOT分析模型整理对比。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202501091325582.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;8-形成结论&#34;&gt;8. 形成结论&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;将硬件、软件和服务三方面整合，产业链上下游协同发展，提供一体化的解决方案，满足客户的多样化需求，可以形成差异化竞争优势。如果单独专注于某一个部分，最终可能会遇到发展瓶颈，或者处于被动局面。&lt;/li&gt;
&lt;li&gt;我们应该从当前可利用的资源入手，找到合适的业务切入点。例如，XXX数据平台的现有客户群，这些客户已经在使用XXX的产品。我们可以优先支持与XXX数据平台相关的功能，同时拓展到车辆运维管理方面的需求挖掘和宣传。&lt;/li&gt;
&lt;li&gt;由于XXX的产品成本较高，我们可以推出TBOX产品，以满足中低端市场和车辆运维管理的需求。这样可以与XXX的产品形成互补，满足不同层次客户的需求。&lt;/li&gt;
&lt;li&gt;随着新能源汽车的普及，我们可以直接跳过燃油车，专注于新能源汽车的相关功能，如电池管理、电池安全、预测告警和大数据分析等，而不是传统燃油车的油耗统计等功能。&lt;/li&gt;
&lt;li&gt;我们可以重点关注新能源汽车的电池管理系统（BMS）。这不仅与我们的储能业务有直接关联，还能发挥我们在储能领域的已有优势。这样可以更好地满足市场需求，同时提升我们的竞争力。&lt;/li&gt;
&lt;li&gt;与汽车制造商、物流公司、保险公司等建立合作关系，拓展业务渠道。&lt;/li&gt;
&lt;li&gt;关键词：新能源、差异化、智能化、中西部、合作伙伴、全球化。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;9-后续规划&#34;&gt;9. 后续规划&lt;/h1&gt;
&lt;p&gt;第一步，我们可以先对XXX数据平台的现有客户做个调研，看看他们在车辆管理系统方面是否有需求。通过调研，我们不仅能发现市场机会，还能找到客户的痛点。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>车辆运维管理是指对车辆进行日常维护、故障处理、性能监测、成本控制等一系列活动的管理。随着物联网、大数据、人工智能等技术的发展，车辆运维管理软件和解决方案的市场竞争日益激烈。</p>
<h1 id="2-确定目标">2. 确定目标</h1>
<ol>
<li>通过产品差异化定位，找到竞争者的差异，打造自己的优势，抢占市场份额，通过市场细分来确定自己的定位。</li>
<li>学习对方的优势，借鉴优秀的产品设计，帮助自己挖掘需求，根据自身产品找到好的切入点，更好地做产品。</li>
</ol>
<h1 id="3-车辆管理系统架构">3. 车辆管理系统架构</h1>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503051039444.png"></p>
<h1 id="4-车辆管理系统行业市场情况及后续发展趋势">4. 车辆管理系统行业市场情况及后续发展趋势</h1>
<p>以下基于《2025-2028年中国车辆管理系统行业市场调查研究及发展战略规划报告》相关行业报告整理。</p>
<h2 id="41-行业概述">4.1. 行业概述</h2>
<p>随着我国经济的持续快速发展，汽车产业已成为国民经济的重要支柱产业，车辆管理系统作为其重要组成部分，市场需求逐年增长。科技进步和智能化、网络化、信息化技术的广泛应用，推动了车辆管理系统技术水平和功能的完善。政府高度重视车辆管理系统的建设与发展，出台了一系列政策法规，如智能交通系统（ITS）的建设、车联网技术的研发与应用等，为行业发展创造了良好外部环境。</p>
<p>车辆管理系统是指利用现代信息技术，对车辆及其相关资源进行有效管理的一系列软硬件系统的总称。根据功能和应用领域，可分为车辆基础信息管理系统、车辆运行监控系统、车辆安全管理系统、车辆服务支持系统和车辆智能化管理系统。</p>
<h2 id="42-市场现状分析">4.2. 市场现状分析</h2>
<p>近年来，我国车辆管理系统市场规模持续扩大，预计到2028年，市场规模将达到数千亿元。新能源汽车车辆管理系统市场需求增长迅速，智能交通系统建设和城市交通管理需求上升，大数据、云计算、人工智能等新兴技术的应用，为市场提供了新的增长点。</p>
<p>市场呈现多元化、竞争激烈的特点，参与主体包括国内外知名企业、创新型中小企业和科研机构。竞争主要集中在硬件、软件和服务三个层面，企业需根据自身优势和市场定位，形成差异化竞争策略。</p>
<h2 id="43-主要市场驱动因素">4.3. 主要市场驱动因素</h2>
<p>经济快速发展和人民生活水平提高，汽车保有量逐年攀升，带动了车辆管理系统在车辆登记、年检、保险、维修等方面的需求。</p>
<p>ITS通过集成交通管理、车辆监控、信息服务等技术，提高交通效率、减少拥堵、保障交通安全，其推广和应用推动了车辆管理系统市场增长。</p>
<p>政府出台了一系列政策，如《关于加快推进智能交通系统建设的指导意见》，鼓励车辆管理系统的技术创新和应用。</p>
<h2 id="44-产业链分析">4.4. 产业链分析</h2>
<p>包括上游原材料供应、中游系统研发与集成、下游系统应用与服务三个主要环节。上游涉及传感器、芯片、通信模块等电子元器件生产和供应；中游包括软件开发、硬件组装和系统集成；下游则涵盖安装、调试、维护和增值服务。</p>
<p>上游原材料供应商与中游系统集成商紧密合作，确保硬件稳定供应和质量保障。中游系统集成商与下游应用服务商协同，提升市场竞争力。产业链各方在技术创新和产业升级方面也保持着良好沟通与合作。</p>
<h2 id="45-技术发展趋势">4.5. 技术发展趋势</h2>
<p>包括传感器技术、通信技术、数据处理与分析技术以及人工智能技术。这些技术的不断进步和融合，将推动车辆管理系统向更高效、更智能的方向发展。</p>
<p>物联网、大数据、云计算、人工智能等新兴技术在车辆管理系统中的应用越来越广泛。例如，物联网技术实现车辆与设备的互联互通，实时采集车辆的各种数据；大数据技术对车辆数据进行深度分析，为企业提供决策支持；人工智能技术实现车辆的智能调度、故障预测等。</p>
<h2 id="46-市场风险及挑战">4.6. 市场风险及挑战</h2>
<p>政策的不确定性可能对行业产生重大影响，如技术标准、安全要求调整，以及政府补贴政策的变动。</p>
<p>技术更新迭代快，企业需持续投入研发以保持竞争力。同时，知识产权保护也面临挑战。</p>
<h2 id="47-发展战略规划">4.7. 发展战略规划</h2>
<p>到2028年，实现车辆管理系统核心技术的自主创新和突破，提高国产化率。扩大市场规模，提升市场占有率，特别是在新能源汽车、智能交通等新兴领域。推动行业标准化和规范化建设，加强与国际标准对接。</p>
<p>加强技术创新和研发投入，建立高水平技术研发团队，与高校、科研机构合作。积极开拓国内外市场，扩大市场份额。与其他企业建立战略合作伙伴关系，实现资源共享、优势互补。提升企业品牌知名度和美誉度。</p>
<h1 id="5-车辆管理存在哪些痛点">5. 车辆管理存在哪些痛点</h1>
<h2 id="51-纸质化办公效率低下">5.1. 纸质化办公效率低下</h2>
<p>传统纸质办公流程依赖大量人力，需人工登记和安排车辆，无法全面追踪和监管车辆。车辆实际位置与行驶情况需与用车人和司机逐一核实，严重影响企业办公效率。</p>
<h2 id="52-车辆调度难题">5.2. 车辆调度难题</h2>
<p>缺乏实时监控平台和统一管理制度，无法随时掌握公务用车情况。调度员难以有效指派任务，常导致车辆使用混乱，急需用车时无车可用，或公务车去向不明。</p>
<h2 id="53-车务信息繁杂">5.3. 车务信息繁杂</h2>
<p>公车日常车务信息涵盖加油、维修、保养、保险、年检、停车费、过路费等。企业车辆数量多时，人工记录易出错或丢失数据，管理统计效率低下。</p>
<h2 id="54-车辆监管不足">5.4. 车辆监管不足</h2>
<p>无法实时掌握车辆动态，及时了解车辆位置、状态及行驶轨迹，导致车辆运营情况难以掌控，存在安全隐患。</p>
<h2 id="55-成本控制困难">5.5. 成本控制困难</h2>
<p>车辆燃油消耗、维修保养、保险费用等运营成本较高，企业难以有效控制，导致运营成本增加。</p>
<h1 id="6-选择竞品">6. 选择竞品</h1>
<ol>
<li><a href="https://www.szlanyou.com/">联友科技</a></li>
<li><a href="https://cl.wintaosaas.com/">元道通信</a></li>
<li><a href="https://zhijiaxing.net/ysgc/home">云上管车</a></li>
</ol>
<h1 id="7-选择分析维度">7. 选择分析维度</h1>
<p>通过目标用户、战略定位、布局规划、盈利模式、产品定位、社会资源、发展概况、资金实力、资源优势、产品功能、人力资源、技术实力、运营策略、数据表现和SWOT分析模型整理对比。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202501091325582.png"></p>
<h1 id="8-形成结论">8. 形成结论</h1>
<ol>
<li>将硬件、软件和服务三方面整合，产业链上下游协同发展，提供一体化的解决方案，满足客户的多样化需求，可以形成差异化竞争优势。如果单独专注于某一个部分，最终可能会遇到发展瓶颈，或者处于被动局面。</li>
<li>我们应该从当前可利用的资源入手，找到合适的业务切入点。例如，XXX数据平台的现有客户群，这些客户已经在使用XXX的产品。我们可以优先支持与XXX数据平台相关的功能，同时拓展到车辆运维管理方面的需求挖掘和宣传。</li>
<li>由于XXX的产品成本较高，我们可以推出TBOX产品，以满足中低端市场和车辆运维管理的需求。这样可以与XXX的产品形成互补，满足不同层次客户的需求。</li>
<li>随着新能源汽车的普及，我们可以直接跳过燃油车，专注于新能源汽车的相关功能，如电池管理、电池安全、预测告警和大数据分析等，而不是传统燃油车的油耗统计等功能。</li>
<li>我们可以重点关注新能源汽车的电池管理系统（BMS）。这不仅与我们的储能业务有直接关联，还能发挥我们在储能领域的已有优势。这样可以更好地满足市场需求，同时提升我们的竞争力。</li>
<li>与汽车制造商、物流公司、保险公司等建立合作关系，拓展业务渠道。</li>
<li>关键词：新能源、差异化、智能化、中西部、合作伙伴、全球化。</li>
</ol>
<h1 id="9-后续规划">9. 后续规划</h1>
<p>第一步，我们可以先对XXX数据平台的现有客户做个调研，看看他们在车辆管理系统方面是否有需求。通过调研，我们不仅能发现市场机会，还能找到客户的痛点。</p>
<p>第二步，在调研的基础上，我们需要分析一下XXX数据平台的现状，重新定位一下，把现有的功能优化升级，确保它能真正解决客户的问题。在此基础上，再深入开发车辆运维管理平台的功能。</p>
<p>第三步，针对物流、租赁、共享、公务用车这些行业，我们可以整理出一套通用的功能模块，比如车辆定位、调度管理、费用管理、报表统计等。这些模块要设计得灵活一点，能适配不同客户的需求，为后面的市场推广和客户服务打好基础。</p>
<p>第四步，<strong>宣传先行</strong>，设计针对各行业的宣传页面，详细介绍车辆管理系统的功能和优势，并在官网上发布。在吸引客户的同时，收集他们的反馈和需求，以此为基础推出通用功能的V1.0版本。根据客户的具体需求，进行产品迭代，推出V2.0版本，提供定制化服务。</p>
<p>第五步，针对TBOX、车辆检测设备的硬件开发，评估自主研发的可行性。如果自主研发存在困难，可以考虑与其他公司合作，采购现成的硬件产品并进行贴牌。</p>
]]></content:encoded>
    </item>
    <item>
      <title>基于 DataEase 的企业数据分析实践</title>
      <link>https://dstweihao.cn/posts/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/%E5%9F%BA%E4%BA%8E-dataease-%E7%9A%84%E4%BC%81%E4%B8%9A%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%AE%9E%E8%B7%B5/</link>
      <pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/%E5%9F%BA%E4%BA%8E-dataease-%E7%9A%84%E4%BC%81%E4%B8%9A%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%AE%9E%E8%B7%B5/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;在上一篇《基于 Selenium 实现的必应企业信息抓取工具》中，成功实现了对企业信息的批量抓取与导出。接下来，将对这些数据进行深入分析，包括地区分布、所属行业、规模大小等维度。其中，最直接的需求是统计每个省份的企业数量，并通过地图可视化直观展示。经过对 Tableau、FineReport 等数据分析工具的调研，发现 DataEase 不仅功能强大，而且开源免费，非常适合需求。虽然 DataEase 有详细的帮助文档，但在实际使用过程中记录一些细节仍然非常有帮助。以下将通过示例数据来验证各个流程。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031737977.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;2-下载&#34;&gt;2. 下载&lt;/h1&gt;
&lt;p&gt;DataEase 的下载与安装非常便捷，通过&lt;a href=&#34;https://www.fit2cloud.com/dataease/index.html&#34;&gt;DataEase 官方网站&lt;/a&gt;直接下载安装包。官网上提供了桌面版和服务器版的安装包，可以根据自身需求选择合适的版本进行安装。&lt;/p&gt;
&lt;h1 id=&#34;3-数据源&#34;&gt;3. 数据源&lt;/h1&gt;
&lt;p&gt;在开始数据分析之前，首先需要创建数据源。数据源是连接 DataEase 与数据存储的桥梁，通过配置数据源，可以将各类数据引入到 DataEase 中进行分析。DataEase 支持多种数据源类型，包括 OLTP、OLAP、数据仓库、数据湖、数据文件和 API 接口等，能够满足不同场景下的数据接入需求。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031658592.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-数据集&#34;&gt;4. 数据集&lt;/h1&gt;
&lt;p&gt;完成数据源配置后，接下来需要创建数据集。数据集是对数据源中的数据进行组织和管理的逻辑单元。在创建数据集时，DataEase 会根据表格中的数据类型自动对字段进行分类。如果表格中的值是数值类型，则默认归类到指标处，方便后续的分析与计算。&lt;/p&gt;
&lt;p&gt;此外，DataEase 还支持新建计算字段，用于对表格中的数据进行进一步处理。例如，在示例数据中，如果需要计算一个名为“年龄收入效率”的指标，其公式为：年龄收入效率 = 工资 / 年龄。可以在字段表达式中写入以下 SQL 表达式，并进行校验：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHEN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;年龄&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;THEN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;no&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ELSE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;工资&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;年龄&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;END&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过新建计算字段，可以灵活地对数据进行加工和转换，满足各种复杂的分析需求。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503041715704.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;5-仪表板&#34;&gt;5. 仪表板&lt;/h1&gt;
&lt;p&gt;DataEase 的仪表板功能非常强大，支持多种图表类型和查询功能。在应用场景中，主要利用仪表板对表格数据进行可视化展示。&lt;/p&gt;
&lt;h2 id=&#34;51-地区分布&#34;&gt;5.1 地区分布&lt;/h2&gt;
&lt;p&gt;首先创建了一个仪表板来展示用户的地区分布情况。通过拖动地图组件到仪表板中，并选择省份作为维度，记录数作为指标，即可直观地展示每个省份的用户数量。在地图的标签设置中，可以根据需求选择是否显示省份名称、统计字数等信息，以便更好地呈现数据。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031703583.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在标签处可以对地图显示进行设置，比如是否显示省份名称，是否显示统计字数等等。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031705258.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;52-城市数排名&#34;&gt;5.2 城市数排名&lt;/h2&gt;
&lt;p&gt;接下来，通过创建一个新的仪表板来展示城市的排名情况。在维度处选择城市，指标处选择记录数，并在记录数处设置排序，即可生成城市用户数量的排名图表。通过这种方式，可以清晰地了解哪些城市的用户数量较多，为后续的分析提供依据。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>在上一篇《基于 Selenium 实现的必应企业信息抓取工具》中，成功实现了对企业信息的批量抓取与导出。接下来，将对这些数据进行深入分析，包括地区分布、所属行业、规模大小等维度。其中，最直接的需求是统计每个省份的企业数量，并通过地图可视化直观展示。经过对 Tableau、FineReport 等数据分析工具的调研，发现 DataEase 不仅功能强大，而且开源免费，非常适合需求。虽然 DataEase 有详细的帮助文档，但在实际使用过程中记录一些细节仍然非常有帮助。以下将通过示例数据来验证各个流程。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031737977.png"></p>
<h1 id="2-下载">2. 下载</h1>
<p>DataEase 的下载与安装非常便捷，通过<a href="https://www.fit2cloud.com/dataease/index.html">DataEase 官方网站</a>直接下载安装包。官网上提供了桌面版和服务器版的安装包，可以根据自身需求选择合适的版本进行安装。</p>
<h1 id="3-数据源">3. 数据源</h1>
<p>在开始数据分析之前，首先需要创建数据源。数据源是连接 DataEase 与数据存储的桥梁，通过配置数据源，可以将各类数据引入到 DataEase 中进行分析。DataEase 支持多种数据源类型，包括 OLTP、OLAP、数据仓库、数据湖、数据文件和 API 接口等，能够满足不同场景下的数据接入需求。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031658592.png"></p>
<h1 id="4-数据集">4. 数据集</h1>
<p>完成数据源配置后，接下来需要创建数据集。数据集是对数据源中的数据进行组织和管理的逻辑单元。在创建数据集时，DataEase 会根据表格中的数据类型自动对字段进行分类。如果表格中的值是数值类型，则默认归类到指标处，方便后续的分析与计算。</p>
<p>此外，DataEase 还支持新建计算字段，用于对表格中的数据进行进一步处理。例如，在示例数据中，如果需要计算一个名为“年龄收入效率”的指标，其公式为：年龄收入效率 = 工资 / 年龄。可以在字段表达式中写入以下 SQL 表达式，并进行校验：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-mysql" data-lang="mysql"><span class="line"><span class="cl"><span class="k">CASE</span><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">WHEN</span><span class="w"> </span><span class="p">[</span><span class="err">年龄</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span><span class="no">NULL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">ELSE</span><span class="w"> </span><span class="p">([</span><span class="err">工资</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">[</span><span class="err">年龄</span><span class="p">])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">END</span><span class="w">
</span></span></span></code></pre></div><p>通过新建计算字段，可以灵活地对数据进行加工和转换，满足各种复杂的分析需求。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503041715704.png"></p>
<h1 id="5-仪表板">5. 仪表板</h1>
<p>DataEase 的仪表板功能非常强大，支持多种图表类型和查询功能。在应用场景中，主要利用仪表板对表格数据进行可视化展示。</p>
<h2 id="51-地区分布">5.1 地区分布</h2>
<p>首先创建了一个仪表板来展示用户的地区分布情况。通过拖动地图组件到仪表板中，并选择省份作为维度，记录数作为指标，即可直观地展示每个省份的用户数量。在地图的标签设置中，可以根据需求选择是否显示省份名称、统计字数等信息，以便更好地呈现数据。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031703583.png"></p>
<p>在标签处可以对地图显示进行设置，比如是否显示省份名称，是否显示统计字数等等。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031705258.png"></p>
<h2 id="52-城市数排名">5.2 城市数排名</h2>
<p>接下来，通过创建一个新的仪表板来展示城市的排名情况。在维度处选择城市，指标处选择记录数，并在记录数处设置排序，即可生成城市用户数量的排名图表。通过这种方式，可以清晰地了解哪些城市的用户数量较多，为后续的分析提供依据。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031718198.png"></p>
<h2 id="53-年龄收入效率">5.3 年龄收入效率</h2>
<p>最后，利用仪表板展示“年龄收入效率”的分析结果。在维度处选择姓名，指标处选择“年龄收入效率”，并设置排序，即可生成相应的图表。通过该图表，可以直观地比较不同用户的年龄收入效率。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202503031719037.png"></p>
<h1 id="6-最后">6. 最后</h1>
<p>经过实际使用，DataEase 的操作非常简单，交互体验良好。对于当前的工作需求，DataEase 提供的功能已经足够强大。未来，计划进一步接入数据库，并尝试利用 AI 技术生成更复杂的数据分析结果，以提升数据分析的效率和深度。</p>
<p>DataEase 作为一款开源的数据可视化分析工具，不仅功能丰富，而且易于上手，非常适合广大用户进行数据可视化分析。希望本文的实践分享能够为大家提供一些参考和帮助。</p>
]]></content:encoded>
    </item>
    <item>
      <title>基于Selenium实现的必应企业信息抓取工具</title>
      <link>https://dstweihao.cn/posts/python/%E5%9F%BA%E4%BA%8Eselenium%E7%9A%84%E5%BF%85%E5%BA%94%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF%E6%8A%93%E5%8F%96%E5%B7%A5%E5%85%B7%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/python/%E5%9F%BA%E4%BA%8Eselenium%E7%9A%84%E5%BF%85%E5%BA%94%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF%E6%8A%93%E5%8F%96%E5%B7%A5%E5%85%B7%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;因为近期在做一些行业客户群的数据分析，拿到&lt;code&gt;600&lt;/code&gt;多条客户信息，需要对其进行分析。由于所在的是&lt;code&gt;To B&lt;/code&gt;行业，所以只能先清理掉个人以及没有明确显示企业相关信息的数据。在此之后，需要基于这些企业名单，仔细分析各企业的情况。这可以通过爱企查的批量功能快速导出各企业的情况，但其要求模板中提供的企业名称必须是全称。&lt;/p&gt;
&lt;p&gt;因此，我需要把剩下的&lt;code&gt;500&lt;/code&gt;多条企业数据的名称一一补全。一开始是打算使用&lt;code&gt;DeepSeek&lt;/code&gt;帮我基于关键词把企业名称补全，但反复验证后发现给的数据基本都是瞎编的。无奈之下，我只能一个一个查，具体操作是通过必应搜索关键词，比如“宁德时代”，然后从搜索结果中找到完整的企业名称“宁德时代新能源科技股份有限公司”复制到表格中。&lt;/p&gt;
&lt;p&gt;可是，如果只是几十条数据还好，这&lt;code&gt;500&lt;/code&gt;多条数据，我要查到猴年马月了，这人工操作实在太繁琐，而且效率太低了，实在忍不了，就想着怎么把这一整个流程实现自动化。&lt;/p&gt;
&lt;p&gt;通过&lt;code&gt;DeepSeek&lt;/code&gt;查了下，可以使用&lt;code&gt;Python&lt;/code&gt;实现，但我没学过&lt;code&gt;Python&lt;/code&gt;，不过编程语言嘛，大同小异，就依葫芦画瓢，把教程走一遍。最开始是打算使用必应搜索&lt;code&gt;API&lt;/code&gt;实现的，因为必应搜索&lt;code&gt;API&lt;/code&gt;可以免费使用，虽然有额度，但对我来说已经足够。但在开通相关服务时需要用到&lt;code&gt;VISA&lt;/code&gt;卡，各种操作实在太麻烦了，只能研究其他方案。结果好几个方案验证都行不通，我都打算放弃了，想老老实实一个个查算了，但昨晚回去又研究了一下，发现&lt;code&gt;Selenium&lt;/code&gt;可以实现这个需求。&lt;/p&gt;
&lt;h1 id=&#34;2-需求描述&#34;&gt;2. 需求描述&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;有一个&lt;code&gt;.txt&lt;/code&gt;文档用来存放关键词，有一个&lt;code&gt;.xlsx&lt;/code&gt;表格用来存放输出的结果，表格格式包含两个表头：关键词、企业名称。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代码读取&lt;code&gt;.txt&lt;/code&gt;文档中的关键词，依次通过必应搜索，将结果中来自爱企查的信息补充到表格的企业全称中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于来自爱企查的结果，去掉后缀“ - 爱企查”，只保留企业名称内容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为来自爱企查的结果通常很精准，所以第一次执行时，得到的相关公司信息基本不会有问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果没有来自爱企查的结果，则可能是关键词信息有误，这种情况下只能默认选择第一个出现的企业名称。待全部匹配输出成功后，再通过人工逐一确认。由于这种情况通常不会很多，所以工作量相对较小。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提供一个变量，可以控制是否要获取来自爱企查的结果。如果设置为“是”，则限制结果必须来自爱企查；否则选择必应搜索第一个出现的企业。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;3-项目地址&#34;&gt;3. 项目地址&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/dstweihao/bing-aiqicha-scraper&#34;&gt;GitHub - dstweihao/bing-aiqicha-scraper&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-项目结构&#34;&gt;4. 项目结构&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bing&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;aiqicha&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scraper&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;├──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keywords&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;         		&lt;span class=&#34;c1&#34;&gt;# 输入关键词文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;├──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;企业名称清单&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xlsx&lt;/span&gt;  		      &lt;span class=&#34;c1&#34;&gt;# 输出文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;└──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;     					&lt;span class=&#34;c1&#34;&gt;# 主程序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;5-依赖安装&#34;&gt;5. 依赖安装&lt;/h1&gt;
&lt;p&gt;脚本需在Python 3.6及以上版本运行，检查Python版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建虚拟环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Windows: .venv\Scripts\activate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装核心依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;selenium&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;webdriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;manager&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pandas&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;openpyxl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中，各依赖说明如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;库名称&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;安装命令&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;selenium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;浏览器自动化控制&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install selenium&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;webdriver-manager&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;自动管理浏览器驱动&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install webdriver-manager&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pandas&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;数据处理和Excel导出&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install pandas&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;openpyxl&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;增强Excel文件支持&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install openpyxl&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;6-脚本代码&#34;&gt;6. 脚本代码&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;./bing-aiqicha-scraper/run.py&lt;/code&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>因为近期在做一些行业客户群的数据分析，拿到<code>600</code>多条客户信息，需要对其进行分析。由于所在的是<code>To B</code>行业，所以只能先清理掉个人以及没有明确显示企业相关信息的数据。在此之后，需要基于这些企业名单，仔细分析各企业的情况。这可以通过爱企查的批量功能快速导出各企业的情况，但其要求模板中提供的企业名称必须是全称。</p>
<p>因此，我需要把剩下的<code>500</code>多条企业数据的名称一一补全。一开始是打算使用<code>DeepSeek</code>帮我基于关键词把企业名称补全，但反复验证后发现给的数据基本都是瞎编的。无奈之下，我只能一个一个查，具体操作是通过必应搜索关键词，比如“宁德时代”，然后从搜索结果中找到完整的企业名称“宁德时代新能源科技股份有限公司”复制到表格中。</p>
<p>可是，如果只是几十条数据还好，这<code>500</code>多条数据，我要查到猴年马月了，这人工操作实在太繁琐，而且效率太低了，实在忍不了，就想着怎么把这一整个流程实现自动化。</p>
<p>通过<code>DeepSeek</code>查了下，可以使用<code>Python</code>实现，但我没学过<code>Python</code>，不过编程语言嘛，大同小异，就依葫芦画瓢，把教程走一遍。最开始是打算使用必应搜索<code>API</code>实现的，因为必应搜索<code>API</code>可以免费使用，虽然有额度，但对我来说已经足够。但在开通相关服务时需要用到<code>VISA</code>卡，各种操作实在太麻烦了，只能研究其他方案。结果好几个方案验证都行不通，我都打算放弃了，想老老实实一个个查算了，但昨晚回去又研究了一下，发现<code>Selenium</code>可以实现这个需求。</p>
<h1 id="2-需求描述">2. 需求描述</h1>
<ol>
<li>
<p>有一个<code>.txt</code>文档用来存放关键词，有一个<code>.xlsx</code>表格用来存放输出的结果，表格格式包含两个表头：关键词、企业名称。</p>
</li>
<li>
<p>代码读取<code>.txt</code>文档中的关键词，依次通过必应搜索，将结果中来自爱企查的信息补充到表格的企业全称中。</p>
</li>
<li>
<p>对于来自爱企查的结果，去掉后缀“ - 爱企查”，只保留企业名称内容。</p>
</li>
<li>
<p>因为来自爱企查的结果通常很精准，所以第一次执行时，得到的相关公司信息基本不会有问题。</p>
</li>
<li>
<p>如果没有来自爱企查的结果，则可能是关键词信息有误，这种情况下只能默认选择第一个出现的企业名称。待全部匹配输出成功后，再通过人工逐一确认。由于这种情况通常不会很多，所以工作量相对较小。</p>
</li>
<li>
<p>提供一个变量，可以控制是否要获取来自爱企查的结果。如果设置为“是”，则限制结果必须来自爱企查；否则选择必应搜索第一个出现的企业。</p>
</li>
</ol>
<h1 id="3-项目地址">3. 项目地址</h1>
<p><a href="https://github.com/dstweihao/bing-aiqicha-scraper">GitHub - dstweihao/bing-aiqicha-scraper</a></p>
<h1 id="4-项目结构">4. 项目结构</h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">bing</span><span class="o">-</span><span class="n">aiqicha</span><span class="o">-</span><span class="n">scraper</span><span class="o">/</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="n">keywords</span><span class="o">.</span><span class="n">txt</span>         		<span class="c1"># 输入关键词文件</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="n">企业名称清单</span><span class="o">.</span><span class="n">xlsx</span>  		      <span class="c1"># 输出文件</span>
</span></span><span class="line"><span class="cl"><span class="err">└──</span> <span class="n">run</span><span class="o">.</span><span class="n">py</span>     					<span class="c1"># 主程序</span>
</span></span></code></pre></div><h1 id="5-依赖安装">5. 依赖安装</h1>
<p>脚本需在Python 3.6及以上版本运行，检查Python版本：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">python</span> <span class="o">--</span><span class="n">version</span>
</span></span></code></pre></div><p>创建虚拟环境：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="o">.</span><span class="n">venv</span>
</span></span><span class="line"><span class="cl"><span class="n">source</span> <span class="o">.</span><span class="n">venv</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>  <span class="c1"># Windows: .venv\Scripts\activate</span>
</span></span></code></pre></div><p>安装核心依赖：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">selenium</span> <span class="n">webdriver</span><span class="o">-</span><span class="n">manager</span> <span class="n">pandas</span> <span class="n">openpyxl</span>
</span></span></code></pre></div><p>其中，各依赖说明如下：</p>
<table>
  <thead>
      <tr>
          <th>库名称</th>
          <th>作用</th>
          <th>安装命令</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>selenium</code></td>
          <td>浏览器自动化控制</td>
          <td><code>pip install selenium</code></td>
      </tr>
      <tr>
          <td><code>webdriver-manager</code></td>
          <td>自动管理浏览器驱动</td>
          <td><code>pip install webdriver-manager</code></td>
      </tr>
      <tr>
          <td><code>pandas</code></td>
          <td>数据处理和Excel导出</td>
          <td><code>pip install pandas</code></td>
      </tr>
      <tr>
          <td><code>openpyxl</code></td>
          <td>增强Excel文件支持</td>
          <td><code>pip install openpyxl</code></td>
      </tr>
  </tbody>
</table>
<h1 id="6-脚本代码">6. 脚本代码</h1>
<p><code>./bing-aiqicha-scraper/run.py</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium</span> <span class="kn">import</span> <span class="n">webdriver</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium.webdriver.chrome.service</span> <span class="kn">import</span> <span class="n">Service</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">webdriver_manager.chrome</span> <span class="kn">import</span> <span class="n">ChromeDriverManager</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium.webdriver.common.by</span> <span class="kn">import</span> <span class="n">By</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 配置参数</span>
</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;keywords.txt&#34;</span><span class="p">,</span> <span class="s2">&#34;r&#34;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">search_keywords</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()]</span>
</span></span><span class="line"><span class="cl"><span class="n">output_file</span> <span class="o">=</span> <span class="s2">&#34;企业名称清单.xlsx&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">USE_AIQICHA</span> <span class="o">=</span> <span class="kc">True</span>  <span class="c1"># 模式切换开关：True=仅爱企查结果，False=普通模式</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">bing_search</span><span class="p">(</span><span class="n">keyword</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 动态构建查询URL</span>
</span></span><span class="line"><span class="cl">    <span class="n">query</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&#34;</span><span class="si">{</span><span class="n">keyword</span><span class="si">}</span><span class="s2">+site%3Aaiqicha.baidu.com&#34;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="n">keyword</span>
</span></span><span class="line"><span class="cl">    <span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;https://cn.bing.com/search?q=</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 根据模式选择元素定位器</span>
</span></span><span class="line"><span class="cl">        <span class="n">selector</span> <span class="o">=</span> <span class="s1">&#39;li.b_algo h2 a[href*=&#34;aiqicha.baidu.com&#34;]&#39;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="s1">&#39;li.b_algo h2 a&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">find_element</span><span class="p">(</span><span class="n">By</span><span class="o">.</span><span class="n">CSS_SELECTOR</span><span class="p">,</span> <span class="n">selector</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 统一清理企业名称</span>
</span></span><span class="line"><span class="cl">        <span class="n">clean_name</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; - 爱企查&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;【&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">clean_name</span><span class="p">,</span> <span class="s2">&#34;爱企查&#34;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="s2">&#34;普通结果&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="ow">not</span> <span class="n">USE_AIQICHA</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 普通模式降级处理：尝试获取第一个结果</span>
</span></span><span class="line"><span class="cl">            <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="n">fallback</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">find_element</span><span class="p">(</span><span class="n">By</span><span class="o">.</span><span class="n">CSS_SELECTOR</span><span class="p">,</span> <span class="s1">&#39;li.b_algo h2 a&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="n">fallback</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; - &#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="s2">&#34;普通结果（待确认）&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="n">keyword</span><span class="p">,</span> <span class="s2">&#34;未找到&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">keyword</span><span class="p">,</span> <span class="s2">&#34;未找到（爱企查）&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启动浏览器</span>
</span></span><span class="line"><span class="cl"><span class="n">driver</span> <span class="o">=</span> <span class="n">webdriver</span><span class="o">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">service</span><span class="o">=</span><span class="n">Service</span><span class="p">(</span><span class="n">ChromeDriverManager</span><span class="p">()</span><span class="o">.</span><span class="n">install</span><span class="p">()))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 批量处理（修改结果记录部分）</span>
</span></span><span class="line"><span class="cl"><span class="n">results</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">kw</span> <span class="ow">in</span> <span class="n">search_keywords</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">name</span><span class="p">,</span> <span class="n">source</span> <span class="o">=</span> <span class="n">bing_search</span><span class="p">(</span><span class="n">kw</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;关键词&#34;</span><span class="p">:</span> <span class="n">kw</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;企业全称&#34;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;来源&#34;</span><span class="p">:</span> <span class="n">source</span>  <span class="c1"># 新增来源标识列</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;[</span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2">] </span><span class="si">{</span><span class="n">kw</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 保存结果（增加列排序）</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">results</span><span class="p">)[[</span><span class="s2">&#34;关键词&#34;</span><span class="p">,</span> <span class="s2">&#34;企业全称&#34;</span><span class="p">,</span> <span class="s2">&#34;来源&#34;</span><span class="p">]]</span><span class="o">.</span><span class="n">to_excel</span><span class="p">(</span><span class="n">output_file</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">driver</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span>
</span></span></code></pre></div><h1 id="7-运行验证">7. 运行验证</h1>
<p>在网上随机找了一些企业进行验证，关键词示例如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">极光动力
</span></span><span class="line"><span class="cl">上海明我
</span></span><span class="line"><span class="cl">易能数字能源
</span></span></code></pre></div><p>仅爱企查结果：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502221542457.png"></p>
<p>普通模式：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502221545729.png"></p>
<h1 id="8-真实应用">8. 真实应用</h1>
<p>在真实使用过程中，可以结合企业微信文档进行操作。首先运行第一次查询，拿到“仅爱企查结果”。然后，通过爱企查的批量查询功能，将第一次查询得到的全部数据导入，进行批量查询。接着，从爱企查导出的表格中，筛选出“经营状态”为<code>--</code>的条目（这些通常是无效或无法查询到的企业信息），并将这些条目复制到爱企查的导入模板中，再进行第二次导入，这次可以使用普通模式。这样基本能简化很多工作量。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《哪吒2》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%93%AA%E5%90%922%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%93%AA%E5%90%922%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502160030095.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;1&#34;&gt;1&lt;/h1&gt;
&lt;p&gt;2019年在中山看了《哪吒之魔童降世》，现在想起来居然已经过去六年了。这六年国内动画电影其实上了不少，但我就提不起兴趣，《哪吒1》之后只去电影院看了《罗小黑战记》，感觉还可以。本来《姜子牙》是打算去电影院看的，结果没去成，后来在电脑上看了，感觉有点一般。国外动画电影倒是看了几部，像《灌篮高手》《铃芽之旅》还有《名侦探柯南：百万美元的五棱星》，这三部里面最让我记住的居然是《灌篮高手》，其他两部真的惭愧，我差点在电影院睡着，现在剧情都只记得些零碎片段。对了，去年3月看了《飞驰人生2》，一直想写观后感，结果拖到现在都没动笔。所以这次看完《哪吒2》我立马开写，生怕过几天又忘了刚看完时的感受。&lt;/p&gt;
&lt;h1 id=&#34;2&#34;&gt;2&lt;/h1&gt;
&lt;p&gt;影片《哪吒之魔童闹海》一开始，就是为哪吒和敖丙重塑肉身的剧情，这一段还是很搞笑的，很吸引人继续看下去。以前我们总是称赞美国大片特效画面视觉一流，但在观影《哪吒2》的过程中，我却一直暗暗惊叹，原来我们已经可以这么厉害了，画面特效毫不逊色，再加上武术指导的天然优势，呈现出更加精彩的效果。恰好最近刚看了国内3A大作《影之刃零》蛇年贺岁实机演示视频，对武术方面的设计很感兴趣，一招一式都是学问，所以看到鲨鱼和章鱼分别和李靖、殷夫人对战的片段，感觉非常精彩——武术指导有板有眼、有来有回，绝对是用心了的。还有鹿童的设计也很不错，弓箭的大招是我很喜欢的（谁让我对弓箭手有偏爱呢），生出多支手臂万箭齐发，视觉效果拉满。另外，敖丙和申公豹父亲对打时有点斗智斗勇的感觉，而敖丙和北海龙王敖顺对战时，那个用腘窝勾着长枪的动作也确实惊艳到了。为什么我对这个动作很熟悉？因为《浪客剑心最终章人诛篇》电影里，雪代缘用的戚家军刀法就有用腘窝勾着刀鞘抽刀的动作，帅气十足。&lt;/p&gt;
&lt;h1 id=&#34;3&#34;&gt;3&lt;/h1&gt;
&lt;p&gt;影片的一些铺垫处理得不错，鹿童陪考时的几个意味深长的特写镜头，已经暗示他早就起疑了。十二金仙聚会，说到壮大阐教，以及降妖伏魔，太平天下，由鹿童出言暗示十二金仙应该攻打东海——这其实就是无量仙翁和自己大弟子鹿童在唱双簧、投石问路。若是能成功，自然能达成目的；若是反对，那就从长计议。然后，无量仙翁去到陈塘关，看到城毁人亡，生灵涂炭，刚从结界护卫口中得知是东海出兵消灭的，没有再三确认，就急匆匆开始对东海动兵，这些都为后面的反转作足了准备。&lt;/p&gt;
&lt;h1 id=&#34;4&#34;&gt;4&lt;/h1&gt;
&lt;p&gt;影片中还是有泪点的，因为是看陈浩民版《封神榜》电视剧长大的，里面殷夫人和《哪吒2》中的人设并无二致，但李靖的人设就大不相同了。不管是《封神榜》电视剧，还是《西游记》中，李靖似乎都不太讨喜，在《西游记》中，各种细节都被解读为塔一刻不能离手，不然哪吒就要突突了自己。观影过程虽然知道人设不同以往，但难免还是有点讨厌的情绪，不过这无伤大雅，在《哪吒2》中塑造得很好。&lt;/p&gt;
&lt;h1 id=&#34;5&#34;&gt;5&lt;/h1&gt;
&lt;p&gt;为什么非要等到殷夫人死了哪吒才爆发，有时候总会觉得这样的设计太过于无情。诸如此类的情节设计数不胜数，《火影忍者》中雏田被佩恩杀死鸣人暴走九尾化，《七龙珠》中克林被弗利萨杀死卡卡罗特变身超级赛亚人，《龙珠Z》中16号被沙鲁杀死，悟饭变身超二等等，都有这种推动情绪到高潮的 “献祭” 之举，虽无可厚非，但还是看得泪目，希望殷夫人在《哪吒3》中复活。&lt;/p&gt;
&lt;h1 id=&#34;6&#34;&gt;6&lt;/h1&gt;
&lt;p&gt;整部影片没觉得有啥要挑剔的地方，如果非要说的话，东海龙王确实显得太年轻了点，和敖丙站在一起跟兄弟似的，总让人有点出戏。这种违和感就像《霍比特人》里精灵王瑟兰迪尔和儿子莱戈拉斯同框——可能莱戈拉斯整天在外奔波风吹日晒，所以看起来比老爹沧桑；还有《犬夜叉》里的犬大将和杀生丸，虽然都是霸气的大妖怪，可父子同台时总觉得杀生丸面相更老成些。&lt;/p&gt;
&lt;p&gt;最后冲破天元鼎的段落要说稍有牵强，毕竟那么恢弘的阵法，吼一嗓子就突破了。而且哪吒现出三头六臂法身后，本来期待能看到更炸裂的战斗场面，结果和无量仙翁的对决还是纯靠吼和对波，要是能多设计些武术招式或者炫酷仙法，观感绝对更上一层楼。&lt;/p&gt;
&lt;p&gt;不过说真的这些都算吹毛求疵了，任何挑剔在如此诚意满满的作品面前都不值一提。瑕不掩瑜，作为观众我已经看得心满意足。&lt;/p&gt;
&lt;h1 id=&#34;7&#34;&gt;7&lt;/h1&gt;
&lt;p&gt;电影最终目的还是要讲好一个故事，并不需要你一定要传达多么主旋律的东西，该懂的道理已经够多了，不需要你在屏幕上一而再、再而三地说来道去。也不用显得自己高深莫测、曲高和寡，然后说观众文化水平低。就好像2019年的《地球最后的夜晚》，什么垃圾电影，还搞文艺意识流，《东邪西毒》不比你意识流，《一代宗师》不比你意识流，有你那么难懂，故弄玄虚罢了。看一半好多人都离场了，自己都想走了，还跨年呢，有这时间用来睡觉比啥都值。讲好一个故事，有头有尾、符合逻辑，都太难了，非得整点花活儿，才显得自己有文化、非同凡响？&lt;/p&gt;
&lt;p&gt;冯小刚说“因为有那么多垃圾观众，才有了那么多垃圾电影”，这话有一定的道理，但要辩证地看待：有好多垃圾电影钻了空子，花大量的钱投入宣发，忽悠观众；还有那种在电影院观影反应，怼脸上拍的视频，狗都能有观影反应，想出这个点子的真是人才，无力吐槽。好就是好，不好就是不好，没有那么多弯弯绕绕的。好电影就应该站着把钱挣了，这是出于一份热爱所应得的，真心换真心罢了。&lt;/p&gt;
&lt;p&gt;一部作品的生命其实和作者息息相关，作品本身就代表着导演的人生经历。从饺子导演访谈中知道，当时他自学3D动画，一度窝在家里，靠着父母退休金坚持了好多年。没有强大的内心，是无法挺住世俗的偏见和攻击的，但凡亲戚碎嘴、父母不通情达理，都不好受。换位思考，如果作为饺子的父母，估计会觉得这孩子脑子有病了吧。所以，在这样的人生经历之下，《哪吒2》中表达的父母对子女不顾一切的感情，就显得多么真挚——特别是开局哪吒和太乙真人去玉虚宫，分别时殷夫人嘱咐的那一段，就让人泪目。&lt;/p&gt;
&lt;p&gt;同样的，《火影忍者》中波风水门和漩涡玖辛奈临死之时嘱咐鸣人那一段；第四次忍者大战我爱罗得知为什么沙子总会自动保护自己那一段，原来是因为能力源自于自己母亲，母亲临死之前，还是念念不忘保护他&amp;hellip;这些无不闻者落泪、听者伤心，都源自于爱。而哪吒所传达的，也就只是这些而已：不需要你功成名就，也从不在意你是魔童，你只是一位母亲的孩子而已。&lt;/p&gt;
&lt;h1 id=&#34;8&#34;&gt;8&lt;/h1&gt;
&lt;p&gt;从《哪吒1》得知那句“我命由我不由天”，如此振聋发聩的一句话，结合当时电影中哪吒魔童的设定和剧情，真是让人心口一热、血脉偾张——人生由我自己来定义，我就是要逆天改命！没想到这句话其实在李连杰主演的《太极张三丰》里早被反派喊过，明明小时候就看过张三丰暴打董天宝的名场面，如今却半点印象不剩。当年《哪吒1》大火后，现在提起这句话，十个人里九个半先想到的就是重度黑眼圈的魔童，和《西虹市首富》把“卧龙凤雏”变成嘲讽梗一个道理：当有些东西被时代重新定义，那兴许就是进步了吧。&lt;/p&gt;
&lt;h1 id=&#34;9&#34;&gt;9&lt;/h1&gt;
&lt;p&gt;从“我命由我不由天”到“我想试试”，这是对自己能力认识的自信笃定，是哪吒的自信，也是饺子导演的自信。我想试试，是的，我只想试一试，并没说自己一定行，但就是想试一试。&lt;/p&gt;
&lt;p&gt;我希望《哪吒2》能冲到150亿以上的票房，真心觉得好电影就该赚更多钱。因为有梦想有良知的电影人，肯定能造福观众。如果在前期那么艰难的处境下，还能无怨无悔地坚持，那没理由不越来越好。我想表达的是，真正用心制作的作品，观众一定能感受得到。&lt;/p&gt;
&lt;p&gt;想起2015年在济南观看的《大圣归来》，剧情都不太记得了，只知道影片很燃，是一部不可多得的好电影。当时观影出来，外面下着蒙蒙细雨，在等车的时候，看着路灯下的行人，心里就一直感慨：为了心中的信念一直艰苦奋斗，然后实现了梦想，那种感觉一定很爽，但一定很难吧。不管是《大圣归来》还是《哪吒》，或者说饺子导演的经历，我想起了：&lt;/p&gt;
&lt;p&gt;“在坚冰还盖着北海的时候，我看到了怒放的梅花。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502160030095.png"></p>
<h1 id="1">1</h1>
<p>2019年在中山看了《哪吒之魔童降世》，现在想起来居然已经过去六年了。这六年国内动画电影其实上了不少，但我就提不起兴趣，《哪吒1》之后只去电影院看了《罗小黑战记》，感觉还可以。本来《姜子牙》是打算去电影院看的，结果没去成，后来在电脑上看了，感觉有点一般。国外动画电影倒是看了几部，像《灌篮高手》《铃芽之旅》还有《名侦探柯南：百万美元的五棱星》，这三部里面最让我记住的居然是《灌篮高手》，其他两部真的惭愧，我差点在电影院睡着，现在剧情都只记得些零碎片段。对了，去年3月看了《飞驰人生2》，一直想写观后感，结果拖到现在都没动笔。所以这次看完《哪吒2》我立马开写，生怕过几天又忘了刚看完时的感受。</p>
<h1 id="2">2</h1>
<p>影片《哪吒之魔童闹海》一开始，就是为哪吒和敖丙重塑肉身的剧情，这一段还是很搞笑的，很吸引人继续看下去。以前我们总是称赞美国大片特效画面视觉一流，但在观影《哪吒2》的过程中，我却一直暗暗惊叹，原来我们已经可以这么厉害了，画面特效毫不逊色，再加上武术指导的天然优势，呈现出更加精彩的效果。恰好最近刚看了国内3A大作《影之刃零》蛇年贺岁实机演示视频，对武术方面的设计很感兴趣，一招一式都是学问，所以看到鲨鱼和章鱼分别和李靖、殷夫人对战的片段，感觉非常精彩——武术指导有板有眼、有来有回，绝对是用心了的。还有鹿童的设计也很不错，弓箭的大招是我很喜欢的（谁让我对弓箭手有偏爱呢），生出多支手臂万箭齐发，视觉效果拉满。另外，敖丙和申公豹父亲对打时有点斗智斗勇的感觉，而敖丙和北海龙王敖顺对战时，那个用腘窝勾着长枪的动作也确实惊艳到了。为什么我对这个动作很熟悉？因为《浪客剑心最终章人诛篇》电影里，雪代缘用的戚家军刀法就有用腘窝勾着刀鞘抽刀的动作，帅气十足。</p>
<h1 id="3">3</h1>
<p>影片的一些铺垫处理得不错，鹿童陪考时的几个意味深长的特写镜头，已经暗示他早就起疑了。十二金仙聚会，说到壮大阐教，以及降妖伏魔，太平天下，由鹿童出言暗示十二金仙应该攻打东海——这其实就是无量仙翁和自己大弟子鹿童在唱双簧、投石问路。若是能成功，自然能达成目的；若是反对，那就从长计议。然后，无量仙翁去到陈塘关，看到城毁人亡，生灵涂炭，刚从结界护卫口中得知是东海出兵消灭的，没有再三确认，就急匆匆开始对东海动兵，这些都为后面的反转作足了准备。</p>
<h1 id="4">4</h1>
<p>影片中还是有泪点的，因为是看陈浩民版《封神榜》电视剧长大的，里面殷夫人和《哪吒2》中的人设并无二致，但李靖的人设就大不相同了。不管是《封神榜》电视剧，还是《西游记》中，李靖似乎都不太讨喜，在《西游记》中，各种细节都被解读为塔一刻不能离手，不然哪吒就要突突了自己。观影过程虽然知道人设不同以往，但难免还是有点讨厌的情绪，不过这无伤大雅，在《哪吒2》中塑造得很好。</p>
<h1 id="5">5</h1>
<p>为什么非要等到殷夫人死了哪吒才爆发，有时候总会觉得这样的设计太过于无情。诸如此类的情节设计数不胜数，《火影忍者》中雏田被佩恩杀死鸣人暴走九尾化，《七龙珠》中克林被弗利萨杀死卡卡罗特变身超级赛亚人，《龙珠Z》中16号被沙鲁杀死，悟饭变身超二等等，都有这种推动情绪到高潮的 “献祭” 之举，虽无可厚非，但还是看得泪目，希望殷夫人在《哪吒3》中复活。</p>
<h1 id="6">6</h1>
<p>整部影片没觉得有啥要挑剔的地方，如果非要说的话，东海龙王确实显得太年轻了点，和敖丙站在一起跟兄弟似的，总让人有点出戏。这种违和感就像《霍比特人》里精灵王瑟兰迪尔和儿子莱戈拉斯同框——可能莱戈拉斯整天在外奔波风吹日晒，所以看起来比老爹沧桑；还有《犬夜叉》里的犬大将和杀生丸，虽然都是霸气的大妖怪，可父子同台时总觉得杀生丸面相更老成些。</p>
<p>最后冲破天元鼎的段落要说稍有牵强，毕竟那么恢弘的阵法，吼一嗓子就突破了。而且哪吒现出三头六臂法身后，本来期待能看到更炸裂的战斗场面，结果和无量仙翁的对决还是纯靠吼和对波，要是能多设计些武术招式或者炫酷仙法，观感绝对更上一层楼。</p>
<p>不过说真的这些都算吹毛求疵了，任何挑剔在如此诚意满满的作品面前都不值一提。瑕不掩瑜，作为观众我已经看得心满意足。</p>
<h1 id="7">7</h1>
<p>电影最终目的还是要讲好一个故事，并不需要你一定要传达多么主旋律的东西，该懂的道理已经够多了，不需要你在屏幕上一而再、再而三地说来道去。也不用显得自己高深莫测、曲高和寡，然后说观众文化水平低。就好像2019年的《地球最后的夜晚》，什么垃圾电影，还搞文艺意识流，《东邪西毒》不比你意识流，《一代宗师》不比你意识流，有你那么难懂，故弄玄虚罢了。看一半好多人都离场了，自己都想走了，还跨年呢，有这时间用来睡觉比啥都值。讲好一个故事，有头有尾、符合逻辑，都太难了，非得整点花活儿，才显得自己有文化、非同凡响？</p>
<p>冯小刚说“因为有那么多垃圾观众，才有了那么多垃圾电影”，这话有一定的道理，但要辩证地看待：有好多垃圾电影钻了空子，花大量的钱投入宣发，忽悠观众；还有那种在电影院观影反应，怼脸上拍的视频，狗都能有观影反应，想出这个点子的真是人才，无力吐槽。好就是好，不好就是不好，没有那么多弯弯绕绕的。好电影就应该站着把钱挣了，这是出于一份热爱所应得的，真心换真心罢了。</p>
<p>一部作品的生命其实和作者息息相关，作品本身就代表着导演的人生经历。从饺子导演访谈中知道，当时他自学3D动画，一度窝在家里，靠着父母退休金坚持了好多年。没有强大的内心，是无法挺住世俗的偏见和攻击的，但凡亲戚碎嘴、父母不通情达理，都不好受。换位思考，如果作为饺子的父母，估计会觉得这孩子脑子有病了吧。所以，在这样的人生经历之下，《哪吒2》中表达的父母对子女不顾一切的感情，就显得多么真挚——特别是开局哪吒和太乙真人去玉虚宫，分别时殷夫人嘱咐的那一段，就让人泪目。</p>
<p>同样的，《火影忍者》中波风水门和漩涡玖辛奈临死之时嘱咐鸣人那一段；第四次忍者大战我爱罗得知为什么沙子总会自动保护自己那一段，原来是因为能力源自于自己母亲，母亲临死之前，还是念念不忘保护他&hellip;这些无不闻者落泪、听者伤心，都源自于爱。而哪吒所传达的，也就只是这些而已：不需要你功成名就，也从不在意你是魔童，你只是一位母亲的孩子而已。</p>
<h1 id="8">8</h1>
<p>从《哪吒1》得知那句“我命由我不由天”，如此振聋发聩的一句话，结合当时电影中哪吒魔童的设定和剧情，真是让人心口一热、血脉偾张——人生由我自己来定义，我就是要逆天改命！没想到这句话其实在李连杰主演的《太极张三丰》里早被反派喊过，明明小时候就看过张三丰暴打董天宝的名场面，如今却半点印象不剩。当年《哪吒1》大火后，现在提起这句话，十个人里九个半先想到的就是重度黑眼圈的魔童，和《西虹市首富》把“卧龙凤雏”变成嘲讽梗一个道理：当有些东西被时代重新定义，那兴许就是进步了吧。</p>
<h1 id="9">9</h1>
<p>从“我命由我不由天”到“我想试试”，这是对自己能力认识的自信笃定，是哪吒的自信，也是饺子导演的自信。我想试试，是的，我只想试一试，并没说自己一定行，但就是想试一试。</p>
<p>我希望《哪吒2》能冲到150亿以上的票房，真心觉得好电影就该赚更多钱。因为有梦想有良知的电影人，肯定能造福观众。如果在前期那么艰难的处境下，还能无怨无悔地坚持，那没理由不越来越好。我想表达的是，真正用心制作的作品，观众一定能感受得到。</p>
<p>想起2015年在济南观看的《大圣归来》，剧情都不太记得了，只知道影片很燃，是一部不可多得的好电影。当时观影出来，外面下着蒙蒙细雨，在等车的时候，看着路灯下的行人，心里就一直感慨：为了心中的信念一直艰苦奋斗，然后实现了梦想，那种感觉一定很爽，但一定很难吧。不管是《大圣归来》还是《哪吒》，或者说饺子导演的经历，我想起了：</p>
<p>“在坚冰还盖着北海的时候，我看到了怒放的梅花。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 47</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-47/</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-47/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/detect-pattern-of-length-m-repeated-k-or-more-times/&#34;&gt;1566. 重复至少 K 次且长度为 M 的模式&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个正整数数组&lt;code&gt;arr&lt;/code&gt;，请你找出一个长度为&lt;code&gt;m&lt;/code&gt;且在数组中至少重复&lt;code&gt;k&lt;/code&gt;次的模式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;模式&lt;/strong&gt;是由一个或多个值组成的子数组（连续的子序列），&lt;strong&gt;连续&lt;/strong&gt;重复多次但&lt;strong&gt;不重叠&lt;/strong&gt;。模式由其长度和重复次数定义。&lt;/p&gt;
&lt;p&gt;如果数组中存在至少重复&lt;code&gt;k&lt;/code&gt;次且长度为&lt;code&gt;m&lt;/code&gt;的模式，则返回&lt;code&gt;true&lt;/code&gt;，否则返回&lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;模式&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的长度为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且连续重复&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;注意&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;模式可以重复&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;次或更多次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;但不能少于&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;containsPattern&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;valid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentPos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;patternPos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;currentPos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;patternPos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;valid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;valid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;valid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先检查数组的长度是否至少为 &lt;code&gt;m * k&lt;/code&gt;。如果不足，则直接返回 &lt;code&gt;false&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;遍历所有可能的模式起始位置 &lt;code&gt;i&lt;/code&gt;，确保这些位置可以容纳至少 &lt;code&gt;k&lt;/code&gt; 个连续的模式（即 &lt;code&gt;i&lt;/code&gt; 的范围是 &lt;code&gt;0&lt;/code&gt; 到 &lt;code&gt;arr.length - m * k&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;对于每个起始位置 &lt;code&gt;i&lt;/code&gt;，检查从该位置开始的连续 &lt;code&gt;k&lt;/code&gt; 个模式的元素是否完全一致。直接通过数组索引比较元素。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2501/250130-working-remotely.html&#34;&gt;New Zealand relaxes visa rules for &amp;lsquo;digital nomads&amp;rsquo; - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/detect-pattern-of-length-m-repeated-k-or-more-times/">1566. 重复至少 K 次且长度为 M 的模式</a></p>
<p>给你一个正整数数组<code>arr</code>，请你找出一个长度为<code>m</code>且在数组中至少重复<code>k</code>次的模式。</p>
<p><strong>模式</strong>是由一个或多个值组成的子数组（连续的子序列），<strong>连续</strong>重复多次但<strong>不重叠</strong>。模式由其长度和重复次数定义。</p>
<p>如果数组中存在至少重复<code>k</code>次且长度为<code>m</code>的模式，则返回<code>true</code>，否则返回<code>false</code>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">],</span> <span class="nx">m</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">k</span> <span class="o">=</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">模式</span> <span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="nx">的长度为</span> <span class="mi">1</span> <span class="err">，</span><span class="nx">且连续重复</span> <span class="mi">4</span> <span class="nx">次</span><span class="err">。</span><span class="nx">注意</span><span class="err">，</span><span class="nx">模式可以重复</span> <span class="nx">k</span> <span class="nx">次或更多次</span><span class="err">，</span><span class="nx">但不能少于</span> <span class="nx">k</span> <span class="nx">次</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">containsPattern</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">arr</span><span class="p">,</span> <span class="nx">m</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">&lt;</span> <span class="nx">m</span> <span class="o">*</span> <span class="nx">k</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="nx">n</span> <span class="o">-</span> <span class="nx">m</span> <span class="o">*</span> <span class="nx">k</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">valid</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">k</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">pos</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">pos</span> <span class="o">&lt;</span> <span class="nx">m</span><span class="p">;</span> <span class="nx">pos</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="kr">const</span> <span class="nx">currentPos</span> <span class="o">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span> <span class="o">*</span> <span class="nx">m</span> <span class="o">+</span> <span class="nx">pos</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="kr">const</span> <span class="nx">patternPos</span> <span class="o">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">pos</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">currentPos</span><span class="p">]</span> <span class="o">!==</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">patternPos</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">valid</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                    <span class="k">break</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">valid</span><span class="p">)</span> <span class="k">break</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">valid</span><span class="p">)</span> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>首先检查数组的长度是否至少为 <code>m * k</code>。如果不足，则直接返回 <code>false</code>。</li>
<li>遍历所有可能的模式起始位置 <code>i</code>，确保这些位置可以容纳至少 <code>k</code> 个连续的模式（即 <code>i</code> 的范围是 <code>0</code> 到 <code>arr.length - m * k</code>）。</li>
<li>对于每个起始位置 <code>i</code>，检查从该位置开始的连续 <code>k</code> 个模式的元素是否完全一致。直接通过数组索引比较元素。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2501/250130-working-remotely.html">New Zealand relaxes visa rules for &lsquo;digital nomads&rsquo; - Breaking News English Lesson</a></p>
<p>对有意在新西兰工作的人来说，这是一个好消息。该国放宽了签证政策，希望吸引&quot;数字游民&quot;在当地居住和工作长达九个月。数字游民指能基于远程在线工作方式在任何地方生活的人群。新西兰推出新签证，允许境外雇主员工在该国远程工作三个月，并可延长至九个月——但停留满九个月者可能需要缴税。经济增长部长尼古拉·威利斯表示，新政策旨在&quot;让更多富裕且极具才华的人通过入境口来到新西兰&quot;，以促进经济发展。</p>
<p>近年来该国经济面临多重挑战：新冠疫情重创的旅游业尚未恢复至疫情前水平，青年人才流失问题加剧——当前二十余岁年轻人赴海外工作数量创历史新高。移民部长埃丽卡·斯坦福预计，新签证持有者在境内停留时间延长将刺激消费，&ldquo;更重要的是希望他们能爱上这个地方&rdquo;。</p>
<h2 id="tip">Tip</h2>
<p>DeepSeek满血版使用</p>
<p>年前使用<code>DeepSeek</code>还挺顺畅的，没想到过年期间突然爆火，导致流量暴涨。再加上美帝“亡我之心不死”，天天攻击，服务器经常繁忙，有时候重复提问<code>20</code>多次都没反应，实在忍不了了，只能研究其他渠道来使用深度思考（R1）功能。</p>
<p>经过一番查找，发现可以使用硅基流动（SiliconFlow）提供的服务。硅基流动与华为云联合推出了基于昇腾云的DeepSeek R1 &amp; V3推理服务。使用邀请码注册：https://cloud.siliconflow.cn/i/wDEipqNd，可以赠送<code>14</code>块钱，足够用很久了。不过，由于这是<code>API</code>调用的方式，历史问答的内容无法保留，因此需要结合<code>Cherry Studio</code>客户端软件来使用。</p>
<p>当然，如果觉得麻烦，也可以考虑使用<code>360</code>的纳米<code>AI</code>搜索的慢思考模式，或者<code>kimi</code>的<code>k1.5长思考</code>模式。不过，就推理方面来说，还是觉得DeepSeek更有意思一些。</p>
<h2 id="share">Share</h2>
<p>哈哈哈，实属蚌埠住了。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502082048894.png" style="zoom: 50%;" />
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 46</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-46/</link>
      <pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-46/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/swap-for-longest-repeated-character-substring/&#34;&gt;1156. 单字符重复子串的最大长度&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果字符串中的所有字符都相同，那么这个字符串是单字符重复的字符串。&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;text&lt;/code&gt;，你只能交换其中两个字符一次或者什么都不做，然后得到一些单字符重复的子串。返回其中最长的子串的长度。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ababa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxRepOpt1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;max_length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;max_length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;max_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用一个对象 &lt;code&gt;count&lt;/code&gt; 来统计每个字符的出现次数。遍历字符串，将每个字符的出现次数记录在 &lt;code&gt;count&lt;/code&gt; 中。&lt;/li&gt;
&lt;li&gt;使用一个外层循环，从每个字符开始，向右扩展，找到当前字符的最长连续重复子串。&lt;/li&gt;
&lt;li&gt;如果当前子串长度小于该字符的总出现次数，尝试检查子串两端是否有相同字符，或者中间是否有不同字符可以交换。&lt;/li&gt;
&lt;li&gt;每次找到一个更长的子串时，更新 &lt;code&gt;max_length&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2501/250127-year-of-the-snake.html&#34;&gt;Lunar New Year sees record migration in China - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/swap-for-longest-repeated-character-substring/">1156. 单字符重复子串的最大长度</a></p>
<p>如果字符串中的所有字符都相同，那么这个字符串是单字符重复的字符串。</p>
<p>给你一个字符串 <code>text</code>，你只能交换其中两个字符一次或者什么都不做，然后得到一些单字符重复的子串。返回其中最长的子串的长度。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">text</span> <span class="o">=</span> <span class="s2">&#34;ababa&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">3</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">maxRepOpt1</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">count</span> <span class="o">=</span> <span class="p">{};</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="kr">char</span> <span class="k">of</span> <span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">count</span><span class="p">[</span><span class="kr">char</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span><span class="p">[</span><span class="kr">char</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="nx">count</span><span class="p">[</span><span class="kr">char</span><span class="p">]</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">max_length</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">text</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="kr">char</span> <span class="o">=</span> <span class="nx">text</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">length</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> 
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">while</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">n</span> <span class="o">&amp;&amp;</span> <span class="nx">text</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">===</span> <span class="kr">char</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">length</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="nx">j</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">count</span><span class="p">[</span><span class="kr">char</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">n</span> <span class="o">&amp;&amp;</span> <span class="nx">text</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">!==</span> <span class="kr">char</span> <span class="o">&amp;&amp;</span> <span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="nx">n</span> <span class="o">&amp;&amp;</span> <span class="nx">text</span><span class="p">[</span><span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="kr">char</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="kd">let</span> <span class="nx">k</span> <span class="o">=</span> <span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="k">while</span> <span class="p">(</span><span class="nx">k</span> <span class="o">&lt;</span> <span class="nx">n</span> <span class="o">&amp;&amp;</span> <span class="nx">text</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="o">===</span> <span class="kr">char</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">length</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">k</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">count</span><span class="p">[</span><span class="kr">char</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">length</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">length</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="nx">max_length</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">max_length</span><span class="p">,</span> <span class="nx">length</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">max_length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>使用一个对象 <code>count</code> 来统计每个字符的出现次数。遍历字符串，将每个字符的出现次数记录在 <code>count</code> 中。</li>
<li>使用一个外层循环，从每个字符开始，向右扩展，找到当前字符的最长连续重复子串。</li>
<li>如果当前子串长度小于该字符的总出现次数，尝试检查子串两端是否有相同字符，或者中间是否有不同字符可以交换。</li>
<li>每次找到一个更长的子串时，更新 <code>max_length</code>。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2501/250127-year-of-the-snake.html">Lunar New Year sees record migration in China - Breaking News English Lesson</a></p>
<p>春节是中国最重要的节日。数亿人会返回家乡庆祝这一传统佳节，今年也不例外。机场、火车站和汽车站挤满了踏上年度返乡之旅的旅客。今年对应中国十二生肖中的蛇年。庆祝活动从1月29日开始，持续长达16天，其中前七天是国家法定假日。路透社报道称今年出境游尤其受欢迎，援引某旅行社数据称&quot;平台出境航班和度假套餐预订量较去年翻倍&quot;，最热门目的地集中在亚洲地区。</p>
<p>美联社将中国春节称为&quot;全球最大规模的年度人口迁徙&quot;。随着中国现代化高速交通网络的发展，春运流动人数呈几何级增长。新华社预计今年出行人次将&quot;创历史新高&quot;。3500年前春节雏形初现时，离乡者寥寥无几。但随着中国经济腾飞，数十亿人因工作、求学或追求更好的生活在全国各地迁徙。这场年度迁徙潮成为经济助推器，旅游、酒店和零售行业在此期间迎来利润增长。</p>
<h2 id="tip">Tip</h2>
<p>通过TeamViewer传输exe文件过大的问题</p>
<p>使用<code>Electron</code>开发的一个<code>PC</code>软件，包大小为<code>400MB</code>，有可能是<code>TeamViewer</code>传输大小有限制，每次传到<code>200MB</code>就自动中断了，导致无法把<code>.exe</code>文件从<code>A</code>电脑传输到无网络的<code>B</code>电脑上，又不想使用<code>U盘</code>进行传输，因为<code>B</code>电脑主机环境在机房，操作起来非常不方便。为了解决这个问题，可以通过压缩分卷的方式，把<code>400MB</code>大小的软件包分成两个<code>200MB</code>即可。以<code>VSCode</code>软件为例，将<code>100MB</code>软件包压缩分卷为两个<code>50MB</code>的文件。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502061118092.png"></p>
<h2 id="share">Share</h2>
<p><a href="https://www.infoq.cn/article/00ZflUA3lzstmwIMRYDs">《2025 年，我的第一个建议是别当程序员了！但如果非要当，这些办法可以教会你如何提升自己》</a></p>
<ol>
<li>
<p>我在做事时，倾向于不轻易说“给你 10 个人去做”。因为一旦给团队说 10 个人去做，团队就不思考了。</p>
</li>
<li>
<p>优秀的程序员通过自己的思考，产生的影响是非线性的，一定要用好这种能力。</p>
</li>
<li>
<p>很多创新都是在资源受限的情况下被迫发生的。</p>
</li>
<li>
<p>我是个实用主义者，我所学的所有技术都是因为别人付钱让我去做项目。我从不免费学习知识或做项目。所以，我的判断完全不是从美感或品位出发的，在我看来，品位就是用最低的成本赚最多的钱。如果一个设计不能让我后续用最低成本维护、用最少时间达到效果并赚到钱，那它就不是好设计。</p>
</li>
<li>
<p>如果只注重表面的美观而忽视了实用性，那么这种所谓的“美”只是主观的，并不符合业界的实际需求和标准。</p>
</li>
<li>
<p>我认为所谓品味，你应该问自己：解决这个问题该用什么方法最优雅？这包括几方面考虑：一是你面临的脑力负担，需不需要了解全貌才能解决；二是你要承担多大风险，作为工程师，首先要考虑的是项目会不会因你的选择而失败；三是收益。</p>
</li>
<li>
<p>我自己在做重大决定时，第一个倾向是能不做就不做，能晚点做就晚点做，保持系统的简洁，也就是所谓的品味。作为古典程序员流派，我更倾向于以简单为美。</p>
</li>
<li>
<p>程序员并没有绝对的优秀与否之分，评价标准并非线性。写代码比我快一秒钟，或者接口设计比我好一点点，都不能简单判定谁更出色。不存在这样一个明确的标准，每个人都可以从他人身上学到东西。如果真有值得学习之处，交流其实更为重要，而不是纠结于谁更优秀。这涉及到自我认知的问题，我建议就是放弃所有这种自我优越感，每个人都能从对方身上学到东西。</p>
</li>
<li>
<p>我觉得程序员这个职业和传统职业最大的不同在于，我们不需要做前人做过的工作。一个人把别人做过的事再做一遍，这没什么了不起，甚至在这个行业是可耻的。看看世界上需要什么，有什么问题需要解决，把问题解决好，你就厉害了。你不需要和任何人比较，你就是最厉害的。</p>
</li>
<li>
<p>不喜欢一定是有原因的，要么违反你的人性，要么违反你的道德。不做自己不感兴趣的事本身就是一个加分项，你会更有意愿去钻研，不会觉得累。比如我过去三四年，每天工作十四五个小时很常见，虽然赚钱也不多，但核心是开心，因为做了自己感兴趣的事，就不会觉得累。</p>
</li>
<li>
<p>抬杠的过程有助于去魅，并且强迫自己找证据、了解真相。敢于抬杠是一个挑战权威的过程，并且强迫自己学习。年轻人要想办法做和别人不一样的那个人，无论是做人还是做事。别人都做得那么好了，你还有什么希望？你要做点自己感兴趣，觉得还没人好好做的事。</p>
</li>
<li>
<p>如果不会英语，那就去学。现在全球化是大趋势，英语不仅是语言，更是一种思维方式，尤其是技术领域，它已经成为了全球交流的通用语言。如果你想进步，就必须克服语言障碍，融入全球化的交流中。中国年轻开发者确实需要提升眼界。有一个简单的方法就是多看像 Hacker News 这样的国际知名技术社区，并积极参与其中的讨论。</p>
</li>
<li>
<p>只要有效就 OK，关键是无效。所以，无效才是原罪。</p>
</li>
<li>
<p>对我们所有创业者来说，创业者首先是个产品经理，产品到底给谁用，为什么用户要用，这才是关键。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>产品线上交付阶段出现的两次显著Bug分析</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E4%BA%A7%E5%93%81%E7%BA%BF%E4%B8%8A%E4%BA%A4%E4%BB%98%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%AC%A1%E6%98%BE%E8%91%97bug%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90/</link>
      <pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E4%BA%A7%E5%93%81%E7%BA%BF%E4%B8%8A%E4%BA%A4%E4%BB%98%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%AC%A1%E6%98%BE%E8%91%97bug%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;近期，部门内部的&lt;code&gt;A&lt;/code&gt;项目在线上使用时出现了两次较为明显的&lt;code&gt;Bug&lt;/code&gt;。作为负责A项目需求梳理、原型设计和功能验收的产品经理，我将从这一角色出发进行思考和总结。&lt;/p&gt;
&lt;h1 id=&#34;问题描述&#34;&gt;问题描述&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;前端页面编辑一个输入框时，显示“入参错误”。&lt;/li&gt;
&lt;li&gt;前端页面修改模块&lt;code&gt;A&lt;/code&gt;时，模块&lt;code&gt;B&lt;/code&gt;和模块&lt;code&gt;C&lt;/code&gt;的同一参数输入框出现联动，都变为了模块&lt;code&gt;A&lt;/code&gt;的值。&lt;/li&gt;
&lt;li&gt;前端页面调用的字段和后端定义的功能没有对应上。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;问题分析&#34;&gt;问题分析&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;问题一的主要原因是后端相关的功能只发布在了开发和测试环境，而正式环境没有发布。&lt;/li&gt;
&lt;li&gt;问题二的原因是模块&lt;code&gt;A&lt;/code&gt;、&lt;code&gt;B&lt;/code&gt;和&lt;code&gt;C&lt;/code&gt;中同一参数是抽取复用的，但前端在处理时，没有使用对象解构赋值 &lt;code&gt;{...parameter}&lt;/code&gt; 来创建一个新的对象副本，而是直接引用了同一份 &lt;code&gt;parameter&lt;/code&gt; 对象导致。&lt;/li&gt;
&lt;li&gt;问题三的原因是需求文档显示，前端在开发时，已经和后端同事约定好参数字段一一对应，但在后端实现时，&lt;strong&gt;沟通&lt;/strong&gt;上面信息没有同步到位，字段和预期的不一致，导致功能出现异常。前端开发人员没有真正从&lt;strong&gt;用户角度&lt;/strong&gt;出发，验证功能是否完善。产品交付时，产品经理没有依据需求文档进行验收，做好输入和输出两个关键部分，形成&lt;strong&gt;闭环&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;经验教训&#34;&gt;经验教训&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;当需求中出现大量专业性较高的参数字段时，需要在需求文档中说明清楚，确保信息同步，毕竟这些不是像&lt;code&gt;username&lt;/code&gt;、&lt;code&gt;mobile&lt;/code&gt;、&lt;code&gt;email&lt;/code&gt;等常识类的字段。&lt;/li&gt;
&lt;li&gt;前端在开发功能后，通常容易陷入只要保证自己实现的功能页面增删改查没有问题，就可以了。很少多想一步，从用户角度出发，模拟用户的使用场景，然后再次确认功能是否正常，这个意识还是很重要的。因为一个功能模块不仅仅涉及前端，还有后端，功能的验收要结合后端进行，这个时候没办法把职责划分那么清晰，只能前端主导，后端配合，把整个功能模块验证流程都走一遍，而不是浮于表面。&lt;/li&gt;
&lt;li&gt;在部门里，期望产品同事参与到项目中，具体除了整理需求文档和原型设计，最终的交付也是很重要的，这就需要产品切实参与到版本功能的验收，确保和预期的需求一致。这方面曾涉及到对研发的&lt;strong&gt;信任问题&lt;/strong&gt;，其实和信任没有关系，能力再出众，功能做得再好，如果理解错了需求，最终交付的不是需求的本意，那也是有问题的，所以产品参与最终版本的功能确认，是很关键的一环。就好像封装一个函数，输入和输出，先不管函数里面到底是怎么实现的，最终还是以函数输出的结果为重，函数给的结果都不对，里面用了多好的技术和巧妙构思，都显得苍白无力。所以，产品对于每一个需求点，需求-&amp;gt;验收，应形成&lt;strong&gt;闭环&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;潜意识里还是觉得是内部的项目，导致重视程度不够，而且，忙并不是借口，对于负责A项目的产品工作来说，验收形成闭环这一块确实懈怠了，本就应该按标准的项目流程去走，必须做的就要去做，没办法省略掉。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;预防措施&#34;&gt;预防措施&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;验收环节需提供详细测试用例，并且分为三个环节：研发自测、项目负责人验收和产品交付验收，基本覆盖了这个功能的开发人员、这个项目的负责人和这个需求的提出人。&lt;/li&gt;
&lt;li&gt;发版节奏放缓，确保各个环节都做到位。贪图求快，功能质量出现问题，工作结果还是大打折扣的。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>近期，部门内部的<code>A</code>项目在线上使用时出现了两次较为明显的<code>Bug</code>。作为负责A项目需求梳理、原型设计和功能验收的产品经理，我将从这一角色出发进行思考和总结。</p>
<h1 id="问题描述">问题描述</h1>
<ol>
<li>前端页面编辑一个输入框时，显示“入参错误”。</li>
<li>前端页面修改模块<code>A</code>时，模块<code>B</code>和模块<code>C</code>的同一参数输入框出现联动，都变为了模块<code>A</code>的值。</li>
<li>前端页面调用的字段和后端定义的功能没有对应上。</li>
</ol>
<h1 id="问题分析">问题分析</h1>
<ol>
<li>问题一的主要原因是后端相关的功能只发布在了开发和测试环境，而正式环境没有发布。</li>
<li>问题二的原因是模块<code>A</code>、<code>B</code>和<code>C</code>中同一参数是抽取复用的，但前端在处理时，没有使用对象解构赋值 <code>{...parameter}</code> 来创建一个新的对象副本，而是直接引用了同一份 <code>parameter</code> 对象导致。</li>
<li>问题三的原因是需求文档显示，前端在开发时，已经和后端同事约定好参数字段一一对应，但在后端实现时，<strong>沟通</strong>上面信息没有同步到位，字段和预期的不一致，导致功能出现异常。前端开发人员没有真正从<strong>用户角度</strong>出发，验证功能是否完善。产品交付时，产品经理没有依据需求文档进行验收，做好输入和输出两个关键部分，形成<strong>闭环</strong>。</li>
</ol>
<h1 id="经验教训">经验教训</h1>
<ol>
<li>当需求中出现大量专业性较高的参数字段时，需要在需求文档中说明清楚，确保信息同步，毕竟这些不是像<code>username</code>、<code>mobile</code>、<code>email</code>等常识类的字段。</li>
<li>前端在开发功能后，通常容易陷入只要保证自己实现的功能页面增删改查没有问题，就可以了。很少多想一步，从用户角度出发，模拟用户的使用场景，然后再次确认功能是否正常，这个意识还是很重要的。因为一个功能模块不仅仅涉及前端，还有后端，功能的验收要结合后端进行，这个时候没办法把职责划分那么清晰，只能前端主导，后端配合，把整个功能模块验证流程都走一遍，而不是浮于表面。</li>
<li>在部门里，期望产品同事参与到项目中，具体除了整理需求文档和原型设计，最终的交付也是很重要的，这就需要产品切实参与到版本功能的验收，确保和预期的需求一致。这方面曾涉及到对研发的<strong>信任问题</strong>，其实和信任没有关系，能力再出众，功能做得再好，如果理解错了需求，最终交付的不是需求的本意，那也是有问题的，所以产品参与最终版本的功能确认，是很关键的一环。就好像封装一个函数，输入和输出，先不管函数里面到底是怎么实现的，最终还是以函数输出的结果为重，函数给的结果都不对，里面用了多好的技术和巧妙构思，都显得苍白无力。所以，产品对于每一个需求点，需求-&gt;验收，应形成<strong>闭环</strong>。</li>
<li>潜意识里还是觉得是内部的项目，导致重视程度不够，而且，忙并不是借口，对于负责A项目的产品工作来说，验收形成闭环这一块确实懈怠了，本就应该按标准的项目流程去走，必须做的就要去做，没办法省略掉。</li>
</ol>
<h1 id="预防措施">预防措施</h1>
<ol>
<li>验收环节需提供详细测试用例，并且分为三个环节：研发自测、项目负责人验收和产品交付验收，基本覆盖了这个功能的开发人员、这个项目的负责人和这个需求的提出人。</li>
<li>发版节奏放缓，确保各个环节都做到位。贪图求快，功能质量出现问题，工作结果还是大打折扣的。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 45</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-45/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-45/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/&#34;&gt;1475. 商品折扣后的最终价格&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个数组 &lt;code&gt;prices&lt;/code&gt; ，其中 &lt;code&gt;prices[i]&lt;/code&gt; 是商店里第 &lt;code&gt;i&lt;/code&gt; 件商品的价格。&lt;/p&gt;
&lt;p&gt;商店里正在进行促销活动，如果你要买第 &lt;code&gt;i&lt;/code&gt; 件商品，那么你可以得到与 &lt;code&gt;prices[j]&lt;/code&gt; 相等的折扣，其中 &lt;code&gt;j&lt;/code&gt; 是满足 &lt;code&gt;j &amp;gt; i&lt;/code&gt; 且 &lt;code&gt;prices[j] &amp;lt;= prices[i]&lt;/code&gt; 的 &lt;strong&gt;最小下标&lt;/strong&gt; ，如果没有满足条件的 &lt;code&gt;j&lt;/code&gt; ，你将没有任何折扣。&lt;/p&gt;
&lt;p&gt;请你返回一个数组，数组中第 &lt;code&gt;i&lt;/code&gt; 个元素是折扣后你购买商品 &lt;code&gt;i&lt;/code&gt; 最终需要支付的价格。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;商品&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的价格为&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;price&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;你将得到&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的折扣&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以最终价格为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;商品&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的价格为&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;price&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;你将得到&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的折扣&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以最终价格为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;商品&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的价格为&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;price&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;你将得到&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的折扣&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以最终价格为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;商品&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;都没有折扣&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;finalPrices&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;priceDifferences&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;currentPrice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lowerPriceIndexes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;priceDifference&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;comparePrice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;compareIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;compareIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;comparePrice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentPrice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;lowerPriceIndexes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;compareIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lowerPriceIndexes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;priceDifference&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentPrice&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(...&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lowerPriceIndexes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;priceDifference&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentPrice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;prices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;minIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;priceDifferences&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;priceDifference&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;priceDifferences&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先遍历查询满足条件的下标，然后获取最小下标。&lt;/li&gt;
&lt;li&gt;如果没有符合条件的折扣，则使用当前价格。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2409/240916-astronauts-cosmonauts-taikonauts.html&#34;&gt;Mystery drones in USA causing alarm - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/">1475. 商品折扣后的最终价格</a></p>
<p>给你一个数组 <code>prices</code> ，其中 <code>prices[i]</code> 是商店里第 <code>i</code> 件商品的价格。</p>
<p>商店里正在进行促销活动，如果你要买第 <code>i</code> 件商品，那么你可以得到与 <code>prices[j]</code> 相等的折扣，其中 <code>j</code> 是满足 <code>j &gt; i</code> 且 <code>prices[j] &lt;= prices[i]</code> 的 <strong>最小下标</strong> ，如果没有满足条件的 <code>j</code> ，你将没有任何折扣。</p>
<p>请你返回一个数组，数组中第 <code>i</code> 个元素是折扣后你购买商品 <code>i</code> 最终需要支付的价格。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">prices</span> <span class="o">=</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">商品</span> <span class="mi">0</span> <span class="nx">的价格为</span> <span class="nx">price</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">=</span><span class="mi">8</span> <span class="err">，</span><span class="nx">你将得到</span> <span class="nx">prices</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">=</span><span class="mi">4</span> <span class="nx">的折扣</span><span class="err">，</span><span class="nx">所以最终价格为</span> <span class="mi">8</span> <span class="o">-</span> <span class="mi">4</span> <span class="o">=</span> <span class="mi">4</span> <span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">商品</span> <span class="mi">1</span> <span class="nx">的价格为</span> <span class="nx">price</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">=</span><span class="mi">4</span> <span class="err">，</span><span class="nx">你将得到</span> <span class="nx">prices</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="mi">2</span> <span class="nx">的折扣</span><span class="err">，</span><span class="nx">所以最终价格为</span> <span class="mi">4</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">=</span> <span class="mi">2</span> <span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">商品</span> <span class="mi">2</span> <span class="nx">的价格为</span> <span class="nx">price</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">=</span><span class="mi">6</span> <span class="err">，</span><span class="nx">你将得到</span> <span class="nx">prices</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="mi">2</span> <span class="nx">的折扣</span><span class="err">，</span><span class="nx">所以最终价格为</span> <span class="mi">6</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">=</span> <span class="mi">4</span> <span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">商品</span> <span class="mi">3</span> <span class="nx">和</span> <span class="mi">4</span> <span class="nx">都没有折扣</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">finalPrices</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">prices</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">priceDifferences</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="nx">prices</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">currentPrice</span><span class="p">,</span> <span class="nx">currentIndex</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">lowerPriceIndexes</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">priceDifference</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">        <span class="nx">prices</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">comparePrice</span><span class="p">,</span> <span class="nx">compareIndex</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">compareIndex</span> <span class="o">&gt;</span> <span class="nx">currentIndex</span> <span class="o">&amp;&amp;</span> <span class="nx">comparePrice</span> <span class="o">&lt;=</span> <span class="nx">currentPrice</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">lowerPriceIndexes</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">compareIndex</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">})</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">lowerPriceIndexes</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">priceDifference</span> <span class="o">=</span> <span class="nx">currentPrice</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="kd">let</span> <span class="nx">minIndex</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(...</span><span class="nx">lowerPriceIndexes</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="nx">priceDifference</span> <span class="o">=</span> <span class="nx">currentPrice</span> <span class="o">-</span> <span class="nx">prices</span><span class="p">[</span><span class="nx">minIndex</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="nx">priceDifferences</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">priceDifference</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">priceDifferences</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>先遍历查询满足条件的下标，然后获取最小下标。</li>
<li>如果没有符合条件的折扣，则使用当前价格。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2409/240916-astronauts-cosmonauts-taikonauts.html">Mystery drones in USA causing alarm - Breaking News English Lesson</a></p>
<p>美国各地已经有数百起神秘无人机的目击事件。上个月，人们首次开始向警方讲述无人机的情况。从那以后，越来越多的人报告看到了他们。大多数目击事件发生在新泽西州。那里的居民很担心，因为无人机一直在军事基地上空飞行。在新泽西州唐纳德·特朗普的高尔夫球场附近发现了一架无人机。由于“可疑”无人机活动，纽约州斯图尔特机场上周关闭了一个小时。美国当局表示，他们不确定无人机来自哪里。一位发言人表示，不明飞行物（UFO）对公众没有危险。</p>
<p>由于无人机目击事件，许多阴谋论在网上开始出现。社交媒体上的一些人说俄罗斯和中国正在利用这些物体监视美国。一名新泽西州共和党众议员表示，这些无人机来自大西洋的一艘“伊朗母舰”。美国国土安全部部长告诉美国广播公司新闻，他知道“没有外国参与这些目击事件”。他补充说：“如果我们发现任何外国参与或犯罪活动，我们将与美国公众沟通。”联邦调查局调查人员表示，大多数无人机目击事件都是“认错人”的情况，人们对新闻报道“反应过度”。</p>
<h2 id="tip">Tip</h2>
<p><code>Element Plus</code>组件库的<code>Table</code>表格组件，在设置<code>el-table-column</code>的<code>type</code>为<code>selection</code>，<code>align</code>为<code>center</code>时，出现只有表头居中了，但是内容没有居中，排查了一下原因，是因为在自行封装的Table组件中，设置了<code>show-overflow-tooltip</code>，虽然已经过滤了type为custom的情况，但是缺少了过滤<code>selection</code>的情况，所以勾选框多了一个<code>el-tooltip</code>的样式，导致<code>center</code>不生效。</p>
<h2 id="share">Share</h2>
<p>因为在《铁齿铜牙纪晓岚》中知道“皎皎者易污”，然后把李固的《遗黄琼书》书信内容也看了一下，不得不说，写的真好，发人深省：</p>
<ol>
<li>盖君子谓：“伯夷隘，柳下惠不恭。”</li>
<li>常闻语曰：“峣峣者易缺，皎皎者易污。”《阳春》之曲，和者必寡；盛名之下，其实难副。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>unplugin-vue-router 的基本使用</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/unplugin-vue-router-%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</link>
      <pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/unplugin-vue-router-%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;在&lt;code&gt;Vue3&lt;/code&gt;开发过程中，每次创建新的页面都需要注册路由，需要在&lt;code&gt;src/router.ts&lt;/code&gt;中新增页面的路径，并将&lt;code&gt;URL&lt;/code&gt;路径映射到组件中，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createMemoryHistory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRouter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;vue-router&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;HomePageView&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;./HomePageView.vue&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;DevListView&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;./DevListView.vue&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;routes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;component&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;HomePageView&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/DevListView&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;component&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;DevListView&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;router&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRouter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;history&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;createMemoryHistory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;routes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;虽然看起来工作量不大，但如果页面特别多，就会感到繁琐。即使是微小的改动，如组件名的修改，也需要在路由文件中反复确认，反复如此就会感到不便。为了简化这部分工作，我想到了一个解决方案，那就是开发一个&lt;code&gt;Vue3&lt;/code&gt;菜单路由生成工具，只需填写组件的中文名称，根据树形结构生成一个与&lt;code&gt;routes&lt;/code&gt;结构相同的数组，然后替换使用即可。但还是觉得不够好，随后想到既然自己能发现这个问题，别人可能早已有了应对方案。接着，我就发现了 &lt;a href=&#34;https://uvr.esm.is/&#34;&gt;unplugin-vue-router&lt;/a&gt; 插件。&lt;/p&gt;
&lt;h1 id=&#34;2-配置&#34;&gt;2. 配置&lt;/h1&gt;
&lt;h2 id=&#34;21-安装&#34;&gt;2.1 安装&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;D&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unplugin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;router&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;22-viteconfigts&#34;&gt;2.2 vite.config.ts&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;VueRouter&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;unplugin-vue-router/vite&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defineConfig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;plugins&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;VueRouter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;cm&#34;&gt;/* options */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ⚠️ Vue must be placed after VueRouter()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;Vue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;23-tsconfigjson&#34;&gt;2.3 tsconfig.json&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;include&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// other files...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;./typed-router.d.ts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;compilerOptions&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;moduleResolution&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Bundler&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;24-vite-envdts&#34;&gt;2.4 vite-env.d.ts&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;/// &amp;lt;reference types=&amp;#34;unplugin-vue-router/client&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;3-应用&#34;&gt;3. 应用&lt;/h1&gt;
&lt;h2 id=&#34;31-常规方式&#34;&gt;3.1 常规方式&lt;/h2&gt;
&lt;p&gt;因为项目布局是基于&lt;code&gt;Element Plus&lt;/code&gt;组件库的&lt;code&gt;&amp;lt;el-container&amp;gt;&lt;/code&gt;搭建的，其中对&lt;code&gt;&amp;lt;e-main&amp;gt;&lt;/code&gt;进行了处理，&lt;code&gt;&amp;lt;router-view&amp;gt;&lt;/code&gt;是 Vue Router 的一个内置组件，用于渲染匹配当前路由的组件，如下所示：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>在<code>Vue3</code>开发过程中，每次创建新的页面都需要注册路由，需要在<code>src/router.ts</code>中新增页面的路径，并将<code>URL</code>路径映射到组件中，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createMemoryHistory</span><span class="p">,</span> <span class="nx">createRouter</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vue-router&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">HomePageView</span> <span class="kr">from</span> <span class="s1">&#39;./HomePageView.vue&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">DevListView</span> <span class="kr">from</span> <span class="s1">&#39;./DevListView.vue&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">routes</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span> <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="nx">component</span>: <span class="kt">HomePageView</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span> <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;/DevListView&#39;</span><span class="p">,</span> <span class="nx">component</span>: <span class="kt">DevListView</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nx">createRouter</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">history</span>: <span class="kt">createMemoryHistory</span><span class="p">(),</span>
</span></span><span class="line"><span class="cl">  <span class="nx">routes</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><p>虽然看起来工作量不大，但如果页面特别多，就会感到繁琐。即使是微小的改动，如组件名的修改，也需要在路由文件中反复确认，反复如此就会感到不便。为了简化这部分工作，我想到了一个解决方案，那就是开发一个<code>Vue3</code>菜单路由生成工具，只需填写组件的中文名称，根据树形结构生成一个与<code>routes</code>结构相同的数组，然后替换使用即可。但还是觉得不够好，随后想到既然自己能发现这个问题，别人可能早已有了应对方案。接着，我就发现了 <a href="https://uvr.esm.is/">unplugin-vue-router</a> 插件。</p>
<h1 id="2-配置">2. 配置</h1>
<h2 id="21-安装">2.1 安装</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="o">-</span><span class="nx">D</span> <span class="nx">unplugin</span><span class="o">-</span><span class="nx">vue</span><span class="o">-</span><span class="nx">router</span>
</span></span></code></pre></div><h2 id="22-viteconfigts">2.2 vite.config.ts</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">VueRouter</span> <span class="kr">from</span> <span class="s1">&#39;unplugin-vue-router/vite&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="nx">VueRouter</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">      <span class="cm">/* options */</span>
</span></span><span class="line"><span class="cl">    <span class="p">}),</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// ⚠️ Vue must be placed after VueRouter()
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">Vue</span><span class="p">(),</span>
</span></span><span class="line"><span class="cl">  <span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h2 id="23-tsconfigjson">2.3 tsconfig.json</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;include&#34;</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// other files...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s2">&#34;./typed-router.d.ts&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;compilerOptions&#34;</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// ...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="s2">&#34;moduleResolution&#34;</span><span class="o">:</span> <span class="s2">&#34;Bundler&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// ...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h2 id="24-vite-envdts">2.4 vite-env.d.ts</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="c1">/// &lt;reference types=&#34;unplugin-vue-router/client&#34; /&gt;
</span></span></span></code></pre></div><h1 id="3-应用">3. 应用</h1>
<h2 id="31-常规方式">3.1 常规方式</h2>
<p>因为项目布局是基于<code>Element Plus</code>组件库的<code>&lt;el-container&gt;</code>搭建的，其中对<code>&lt;e-main&gt;</code>进行了处理，<code>&lt;router-view&gt;</code>是 Vue Router 的一个内置组件，用于渲染匹配当前路由的组件，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">el-main</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">router-view</span> <span class="na">v-slot</span><span class="o">=</span><span class="s">&#34;{ Component }&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">component</span> <span class="na">:is</span><span class="o">=</span><span class="s">&#34;Component&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">router-view</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">el-main</span><span class="p">&gt;</span>
</span></span></code></pre></div><p>所以，<code>DevList.vue</code>和<code>DataList.vue</code>组件都在<code>&lt;e-main&gt;</code>中渲染显示，常规的组件文件结构，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">src</span><span class="o">/</span><span class="nx">components</span><span class="o">/</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">Login</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">Register</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">Container</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">└──</span> <span class="nx">DevManagement</span>
</span></span><span class="line"><span class="cl">    <span class="err">├──</span> <span class="nx">DevList</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl">    <span class="err">└──</span> <span class="nx">DataList</span><span class="p">.</span><span class="nx">vue</span>
</span></span></code></pre></div><p>然后，在<code>router.ts</code>文件中是这样的：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createRouter</span><span class="p">,</span> <span class="nx">createWebHistory</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vue-router&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">Login</span> <span class="kr">from</span> <span class="s1">&#39;@/components/Login.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">Register</span> <span class="kr">from</span> <span class="s1">&#39;@/components/Register.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">Container</span> <span class="kr">from</span> <span class="s1">&#39;@/components/Container.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">DevList</span> <span class="kr">from</span> <span class="s1">&#39;@/components/DevManagement/DevList.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">DataList</span> <span class="kr">from</span> <span class="s1">&#39;@/components/DevManagement/DataList.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">routes</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;/login&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Login&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">component</span>: <span class="kt">Login</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;/register&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Register&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">component</span>: <span class="kt">Register</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Container&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">component</span>: <span class="kt">Container</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">children</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;DevManagement/DevList&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;DevList&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">component</span>: <span class="kt">DevList</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;DevManagement/DataList&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;DataList&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">component</span>: <span class="kt">DataList</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nx">createRouter</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">history</span>: <span class="kt">createWebHistory</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">BASE_URL</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="nx">routes</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">router</span><span class="p">;</span>
</span></span></code></pre></div><h2 id="32-使用unplugin-vue-router方式">3.2 使用unplugin-vue-router方式</h2>
<p>需将<code>src/components</code>修改为<code>src/pages</code>，然后把登录页<code>Login.vue</code>重命名为<code>index.vue</code>，再创建一个<code>Container</code>文件夹和<code>Container.vue</code>相对应，这样就会自动识别<code>DevList.vue</code>和<code>DataList.vue</code>为<code>Container.vue</code>的子路由，其路由为<code>/Container/DevManagement/DevList</code>，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">src</span><span class="o">/</span><span class="nx">pages</span><span class="o">/</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">index</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">Register</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="nx">Container</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">└──</span> <span class="nx">Container</span>
</span></span><span class="line"><span class="cl">    <span class="err">└──</span> <span class="nx">DevManagement</span>
</span></span><span class="line"><span class="cl">        <span class="err">├──</span> <span class="nx">DevList</span><span class="p">.</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl">        <span class="err">└──</span> <span class="nx">DataList</span><span class="p">.</span><span class="nx">vue</span>
</span></span></code></pre></div><p>在<code>src/router.ts</code>文件中配置如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createRouter</span><span class="p">,</span> <span class="nx">createWebHashHistory</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vue-router&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">routes</span><span class="p">,</span> <span class="nx">handleHotUpdate</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vue-router/auto-routes&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nx">createRouter</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">history</span>: <span class="kt">createWebHashHistory</span><span class="p">(),</span>
</span></span><span class="line"><span class="cl">  <span class="nx">routes</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// This will update routes at runtime without reloading the page
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="kr">import</span><span class="p">.</span><span class="nx">meta</span><span class="p">.</span><span class="nx">hot</span><span class="p">)</span> <span class="p">{</span> 
</span></span><span class="line"><span class="cl">  <span class="nx">handleHotUpdate</span><span class="p">(</span><span class="nx">router</span><span class="p">)</span> 
</span></span><span class="line"><span class="cl"><span class="p">}</span> 
</span></span></code></pre></div><p>如此一来，后续只需要在<code>src/pages</code>文件夹下按约定的规范处理即可，不需要在<code>router.ts</code>文件中进行修改了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>组态页面渲染器通过npm包方式使用页面没有渲染成功的问题</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E7%BB%84%E6%80%81%E9%A1%B5%E9%9D%A2%E6%B8%B2%E6%9F%93%E5%99%A8%E9%80%9A%E8%BF%87npm%E5%8C%85%E6%96%B9%E5%BC%8F%E4%BD%BF%E7%94%A8%E9%A1%B5%E9%9D%A2%E6%B2%A1%E6%9C%89%E6%B8%B2%E6%9F%93%E6%88%90%E5%8A%9F%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E7%BB%84%E6%80%81%E9%A1%B5%E9%9D%A2%E6%B8%B2%E6%9F%93%E5%99%A8%E9%80%9A%E8%BF%87npm%E5%8C%85%E6%96%B9%E5%BC%8F%E4%BD%BF%E7%94%A8%E9%A1%B5%E9%9D%A2%E6%B2%A1%E6%9C%89%E6%B8%B2%E6%9F%93%E6%88%90%E5%8A%9F%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;在项目开发过程中，计划将组态页面的渲染器集成到组件库，以 &lt;code&gt;npm&lt;/code&gt; 包的形式供后续项目模板复用。如此一来，倘若组态页面渲染出现问题，便能简化修复与迭代工作。&lt;/p&gt;
&lt;h1 id=&#34;遇到问题&#34;&gt;遇到问题&lt;/h1&gt;
&lt;p&gt;采用本地引入方式开发完成后，切换至 &lt;code&gt;npm&lt;/code&gt; 包方式使用，此时面包屑可正常显示，然而组态页面部分却呈现空白状态。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202412181540840.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;分析问题&#34;&gt;分析问题&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;既然面包屑显示正常，那就表明通过向组件传入 &lt;code&gt;Router&lt;/code&gt; 对象进行相关操作并无问题，毕竟面包屑与组态页面共同构成了项目中的具体功能页面。不可能 &lt;code&gt;Router&lt;/code&gt; 有问题，面包屑却还能正常显示。&lt;/li&gt;
&lt;li&gt;推测组件打包生成 &lt;code&gt;npm&lt;/code&gt; 包后，自身未携带 &lt;code&gt;Vue&lt;/code&gt; 环境，致使 &lt;code&gt;Vue&lt;/code&gt; 内置特殊元素 &lt;code&gt;&amp;lt;component&amp;gt;&lt;/code&gt; 渲染失败，此前使用 &lt;code&gt;Pinia&lt;/code&gt; 时就碰到过类似情况。&lt;/li&gt;
&lt;li&gt;那么，该如何在组件里创建 &lt;code&gt;Vue&lt;/code&gt; 环境呢？&lt;/li&gt;
&lt;li&gt;要是不使用 &lt;code&gt;&amp;lt;component&amp;gt;&lt;/code&gt;，而改用渲染函数来实现会怎样呢？&lt;/li&gt;
&lt;li&gt;&lt;code&gt;markRaw&lt;/code&gt; 的作用是什么？&lt;/li&gt;
&lt;li&gt;利用渲染函数实现后，发现打包成 &lt;code&gt;npm&lt;/code&gt; 包使用时依旧出现空白，这就说明并非 &lt;code&gt;&amp;lt;component&amp;gt;&lt;/code&gt; 的问题，如此一来，问题范围便缩小到组态页面的数据源上了。&lt;/li&gt;
&lt;li&gt;对比本地引用和 &lt;code&gt;npm&lt;/code&gt; 包两种方式下的数据请求差异，发现使用 &lt;code&gt;npm&lt;/code&gt; 包时，存在接口未发起请求的情况，进而定位到问题根源。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;问题原因&#34;&gt;问题原因&lt;/h1&gt;
&lt;p&gt;由于该渲染器是在项目中使用，其请求的 &lt;code&gt;baseURL&lt;/code&gt; 是通过 &lt;code&gt;window.location.origin&lt;/code&gt; 获取的。在本地引入使用时，本地开发服务器地址为 &lt;code&gt;http://localhost:3000/&lt;/code&gt;，并且在 &lt;code&gt;Vue&lt;/code&gt; 项目的 &lt;code&gt;vite.config.ts&lt;/code&gt; 中已做代理，所以请求正常。但当把渲染器代码移至组件库并以 &lt;code&gt;npm&lt;/code&gt; 包方式使用时，它自行获取的请求地址仍是 &lt;code&gt;http://localhost:3000/&lt;/code&gt;，并未经过代理处理，致使请求资源的接口异常，最终造成页面空白。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;baseURL&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;DEV&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://192.168.50.20&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;location&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;origin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;总结&#34;&gt;总结&lt;/h1&gt;
&lt;p&gt;解决 &lt;code&gt;Bug&lt;/code&gt; 的思路仍有待提升，自己还是过于急于求成了。刚察觉到问题的一点苗头，就贸然行事、妄下结论，实在有些武断。一开始认定是 &lt;code&gt;&amp;lt;component&amp;gt;&lt;/code&gt; 的问题，就应当采用排除法，不该如此笃定。实际上，只需用简单示例测试一下，便能排除该选项，也不至于耗费大量精力深入研究如何在组件里创建 &lt;code&gt;Vue&lt;/code&gt; 环境？如何用渲染函数实现组件？平白浪费了许多时间。&lt;/p&gt;
&lt;p&gt;每次解决完一个 &lt;code&gt;Bug&lt;/code&gt; 之后都会觉得，这个算啥问题，真的不值一提。可在解决过程中，却常常感到无奈，好几次都差点放弃。原本代码放在项目中使用正常，非要解耦，感觉像是没事找事。不过，最终还是坚持了下来，觉得应该差不多能弄清楚问题所在了。虽说花费的时间不太划算，就如同这篇文章写得好似没什么价值一般，但总结一下解决 &lt;code&gt;Bug&lt;/code&gt; 的心路历程，相信还是会有所收获的。积累到一定程度，便能为自己提供更多面对问题时的视角与启发。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>在项目开发过程中，计划将组态页面的渲染器集成到组件库，以 <code>npm</code> 包的形式供后续项目模板复用。如此一来，倘若组态页面渲染出现问题，便能简化修复与迭代工作。</p>
<h1 id="遇到问题">遇到问题</h1>
<p>采用本地引入方式开发完成后，切换至 <code>npm</code> 包方式使用，此时面包屑可正常显示，然而组态页面部分却呈现空白状态。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202412181540840.png"></p>
<h1 id="分析问题">分析问题</h1>
<ol>
<li>既然面包屑显示正常，那就表明通过向组件传入 <code>Router</code> 对象进行相关操作并无问题，毕竟面包屑与组态页面共同构成了项目中的具体功能页面。不可能 <code>Router</code> 有问题，面包屑却还能正常显示。</li>
<li>推测组件打包生成 <code>npm</code> 包后，自身未携带 <code>Vue</code> 环境，致使 <code>Vue</code> 内置特殊元素 <code>&lt;component&gt;</code> 渲染失败，此前使用 <code>Pinia</code> 时就碰到过类似情况。</li>
<li>那么，该如何在组件里创建 <code>Vue</code> 环境呢？</li>
<li>要是不使用 <code>&lt;component&gt;</code>，而改用渲染函数来实现会怎样呢？</li>
<li><code>markRaw</code> 的作用是什么？</li>
<li>利用渲染函数实现后，发现打包成 <code>npm</code> 包使用时依旧出现空白，这就说明并非 <code>&lt;component&gt;</code> 的问题，如此一来，问题范围便缩小到组态页面的数据源上了。</li>
<li>对比本地引用和 <code>npm</code> 包两种方式下的数据请求差异，发现使用 <code>npm</code> 包时，存在接口未发起请求的情况，进而定位到问题根源。</li>
</ol>
<h1 id="问题原因">问题原因</h1>
<p>由于该渲染器是在项目中使用，其请求的 <code>baseURL</code> 是通过 <code>window.location.origin</code> 获取的。在本地引入使用时，本地开发服务器地址为 <code>http://localhost:3000/</code>，并且在 <code>Vue</code> 项目的 <code>vite.config.ts</code> 中已做代理，所以请求正常。但当把渲染器代码移至组件库并以 <code>npm</code> 包方式使用时，它自行获取的请求地址仍是 <code>http://localhost:3000/</code>，并未经过代理处理，致使请求资源的接口异常，最终造成页面空白。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">baseURL</span> <span class="o">=</span> <span class="kr">import</span><span class="p">.</span><span class="nx">meta</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">DEV</span> <span class="o">?</span> <span class="s2">&#34;http://192.168.50.20&#34;</span> <span class="o">:</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">origin</span>
</span></span></code></pre></div><h1 id="总结">总结</h1>
<p>解决 <code>Bug</code> 的思路仍有待提升，自己还是过于急于求成了。刚察觉到问题的一点苗头，就贸然行事、妄下结论，实在有些武断。一开始认定是 <code>&lt;component&gt;</code> 的问题，就应当采用排除法，不该如此笃定。实际上，只需用简单示例测试一下，便能排除该选项，也不至于耗费大量精力深入研究如何在组件里创建 <code>Vue</code> 环境？如何用渲染函数实现组件？平白浪费了许多时间。</p>
<p>每次解决完一个 <code>Bug</code> 之后都会觉得，这个算啥问题，真的不值一提。可在解决过程中，却常常感到无奈，好几次都差点放弃。原本代码放在项目中使用正常，非要解耦，感觉像是没事找事。不过，最终还是坚持了下来，觉得应该差不多能弄清楚问题所在了。虽说花费的时间不太划算，就如同这篇文章写得好似没什么价值一般，但总结一下解决 <code>Bug</code> 的心路历程，相信还是会有所收获的。积累到一定程度，便能为自己提供更多面对问题时的视角与启发。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《心灵奇旅》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%BF%83%E7%81%B5%E5%A5%87%E6%97%85%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Fri, 29 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%BF%83%E7%81%B5%E5%A5%87%E6%97%85%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h1 id=&#34;1&#34;&gt;1&lt;/h1&gt;
&lt;p&gt;这是一部能够给心灵带来慰藉的电影，或许在人生迷茫的时候，可以看一下，洗涤内心，还自己一片净土。&lt;/p&gt;
&lt;p&gt;影片的男主乔伊是一位音乐老师，他一直梦想着能够加入乐队演出。然而，在即将有机会出演时，他却在路上不慎掉进深井，然后就挂掉了，灵魂飘荡到了“生之来处”。在这部电影中，有这样的设定：人们从“生之来处”前往地球，死后则会到达“生之彼岸”。乔伊显然心有不甘，因为乐队演出一直是他最大的梦想。于是，他混入导师团队，阴差阳错之下，负责引导22号——这个号称几千年来最顽劣、一直未找到自己生命意义的灵魂，一同前往地球。在与22号相处的日子里，他们相互之间的认识产生了碰撞，迸发出了不一样的火花。&lt;/p&gt;
&lt;h1 id=&#34;2&#34;&gt;2&lt;/h1&gt;
&lt;p&gt;当22号附身到乔伊身上时，那一段剧情还是很好玩的。22号初次体验做人的感觉，弄出了很多笑料。虽然附身在成年人乔伊身上，但他表现出的却是一个孩子的天真与可爱。&lt;/p&gt;
&lt;p&gt;还有其他很多有趣的场景，比如他调侃林肯的话：“你真的不介意被印在一分钱上吗？”林肯回答：“不介意，这是我的荣幸。”22号贱贱的小表情，继续道，“二十美元上的可是杰克逊总统。”然后林肯就破防了。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411242224006.png&#34; /&gt;
&lt;p&gt;此外，还有剃头发的片段，以及乔伊经常表现出的小聪明，都让人忍俊不禁。影片中还出现了尼克斯球队，我不禁想起A-史密斯那句经典的话：“上次尼克斯夺冠时我才5岁，女士们先生们，现在我51了。”&lt;/p&gt;
&lt;h1 id=&#34;3&#34;&gt;3&lt;/h1&gt;
&lt;p&gt;22号终究还是孩子的心态，通过附身在乔伊身体里，以他自己的认知面对了乔伊过去面对的事情，但是，却很意外地收到了不一样的结果，这让乔伊自己从第三人的角度看到了不同的世界，也对自己一直以来的认知产生了冲击。&lt;/p&gt;
&lt;p&gt;在理发店里和理发老板聊天时，22号实话实说，但不知内情的旁人却认为他这是一种夸张的说辞。但不管怎么样，这些话却巧合地让人不由得深思，如同接受了哲学家的思想洗礼。乔伊也突然发觉，自己可能忽略掉了太多身边的人和事。也许，多关心身边的人，以及注意到日常生活中的点点滴滴，才是最重要的。&lt;/p&gt;
&lt;p&gt;当乔伊和22号一起去找乔伊的妈妈补裤子时，理想与现实又一次碰撞。乔伊的妈妈担心追求梦想不切实际，连自己的生活都很难保障。但乔伊说，他愿意为此付出一切。我还是觉得梦想应该依托现实，如果在现实生活中能够满足基本的保障，那么追逐梦想的风险就会降低，而不是做什么事情都要孤注一掷，为什么一定要如此极端呢？或许，我们可以采取更为周全的策略来达成目的。当然，世界上不乏天才，对于他们来说，梭哈可能才是正确的选择，因为时间过于宝贵，比如不修边幅的韦神，我管你这那的，我只要数学。但对于普通人而言，稳扎稳打可能更为保险。&lt;/p&gt;
&lt;p&gt;我觉得很美好的一幕是，时间准备到了，乔伊准备可以换回身体时，22号却坐在台阶上，静静地看着天空、阳光和落叶。枫叶被吹起来又落下，沙沙作响，他的心里很平静。突然，他感受到了一种前所未有的喜悦，并说了一句特别感人的话：“我从来没这样快乐过，能真实地体验到在地球上的发生的这一切。有没有可能一直以来，错的一直就是我而不是别人？”就这一句，完全升华了整个故事。能够认识到自己、找到自己，是如此珍贵的品质。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411260631241.png&#34; /&gt;
&lt;h1 id=&#34;4&#34;&gt;4&lt;/h1&gt;
&lt;p&gt;当乔伊终于实现了自己的梦想，万般期待的那一天终于到来时，他却并没有感觉有什么不一样。多茜娅和他讲了一个鱼的故事：&lt;/p&gt;
&lt;p&gt;小鱼说：“我想寻找大海。”&lt;/p&gt;
&lt;p&gt;老鱼说：“大海？你就在海里呢。”&lt;/p&gt;
&lt;p&gt;小鱼说：“这只是水，我想找到的是大海。”&lt;/p&gt;
&lt;p&gt;乔伊陷入了沉思。他回到家里，看着22号留下的那些稀松平常的小物件，不由得弹起了钢琴。随着美妙的旋律响起，他的心境开始变化，不掺杂任何世俗的心思。说实话，这一段音乐真的很好听，让人一下子陷入对自身的审视之中。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411260652521.png&#34; /&gt;
&lt;p&gt;其实，人生的追求是什么呢？是重于泰山还是轻于鸿毛？&lt;/p&gt;
&lt;p&gt;这个关于鱼的故事可以有多种解读。从亲子关系的角度去解读的话，也可以得到一些启示。如果对小朋友总是盲目地提出不切实际的要求，总是以为出人头地才是唯一的出路，那么最珍贵的其实已经拥有————比起这些虚妄之物，小朋友才是最珍贵的。很多时候，都是后知后觉，就像苏东坡说的：“惟愿孩儿愚且鲁，无灾无难到公卿。”&lt;/p&gt;
&lt;p&gt;另一种解读就是从自我的人生思考去诠释。到底什么才是人生的追求？是雄心壮志、功成名就，还是游山玩水、吃喝玩乐？人生的追求是否有高低贵贱之分？是否可以仗着自己好像在做着符合主流观念里的“高大上”的追求，而对他人想要追求的生活横加指责？&lt;/p&gt;
&lt;h1 id=&#34;5&#34;&gt;5&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411292138753.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在2017年有一段时间，我尝试过晚上9点睡觉，然后早上4点30分起来跑步。当时天色还未全亮，我在冷风中、在小区的跑道上跑步，周边就是早餐店铺，冒着蒸汽，天上时不时能听到飞机飞过的轰鸣声。那时我正在研究《了凡四训》，看了书、看了漫画版，还把近3个小时的电影看了很多遍，对生活和自己的人生进行总结和反思。&lt;/p&gt;
&lt;p&gt;人生真的需要那么多东西吗？早上只要两个馒头和一杯豆浆，中午只要蒜炒空心菜和两碗米饭，晚饭也可以是蒜炒红薯叶加两碗米饭。并不一定需要山珍海味、大鱼大肉，这些足够果腹。很多东西都变成了无谓的追求，消耗自己的精力和时间。想要简单点其实并不难。既然最终都会消亡，那人生的追求和意义又体现在哪里？&lt;/p&gt;
&lt;p&gt;然后我又想到了《倚天屠龙记》里金毛狮王谢逊出家的情节。渡厄要收他为徒，意味着他变成“空”字辈，和空闻、空智大师同一辈分，这显然占了很大便宜。但渡厄说：“师父是空，弟子是空，你归我门下，仍是叫作谢逊，你懂了么？”谢逊说：“弟子懂了。牛屎谢逊，皆是虚影，身既无物，何况于名？”&lt;/p&gt;
&lt;p&gt;“身既无物，何况于名？”这句话当时给了我很大的启发。到最后功名利禄都是一场空，那人生的意义又算什么呢？相同的道理和逻辑，如果对己有利的事物最终都会消亡，那对己不利的事物是否同样会消亡？成功是这样，失败也会是这样。那我有必要害怕失败吗？&lt;/p&gt;
&lt;p&gt;既然如此，何不好好地尝试去努力一把，试一试能不能取得自己满意的结果？当时我还给自己写了一首《浣溪沙·跬步》：&lt;/p&gt;
&lt;p&gt;身既无身何况名，是非成败酒中轻，若为将领首为兵。
小隐于山禅意院，竹林听雨玉箫声，夜深远寺有钟鸣。&lt;/p&gt;
&lt;p&gt;其实都是化用了“身既无物，何况于名？”这一句，还有我最爱的、念叨最多的那一句诗词：“姑苏城外寒山寺，夜半钟声到客船。”每每念起，心里总会出奇地平静。&lt;/p&gt;
&lt;p&gt;说到底，自己拥有了才有资格说不稀罕。要不然怎么证明自己是真的不稀罕，还是自己真的酸？等到真的拥有时，心态是否会发生一百八十度的转变？人心真的值得相信吗？&lt;/p&gt;
&lt;p&gt;当你真的有一个小目标时，你说你不爱钱，别人大概率会相信你。但你穷得叮当响，你说你穷是因为你不爱钱，哪怕你说的是真心话，别人也不会相信。当然，你也可以说不需要别人相信。只是，过多地阐述自己如此的标新立异和拥有真知灼见，本身就是一种愚蠢。只有笨人才会那么强烈地排斥世俗，给自己带来不必要的麻烦，你志不在此，不要浪费无谓的精力。言归正传，所以，《黑神话：悟空》第一回过场动画最后那句“若不披这件衣裳，众生又怎知我尘缘已断，金海尽干？”从这个角度去解读也是可以的。因此，在2017年，基本上就是以下这几句话对我影响颇深：&lt;/p&gt;
&lt;p&gt;“从前种种，譬如昨日死；往后种种，譬如昨日生。”&lt;/p&gt;
&lt;p&gt;“命由我作，福自己求。”&lt;/p&gt;
&lt;p&gt;“身既无物，何况于名？”&lt;/p&gt;
&lt;p&gt;“不可不趁三十之前立志猛进也。”&lt;/p&gt;
&lt;h1 id=&#34;6&#34;&gt;6&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411292140745.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;最后，结合电影的故事，我想说的是，梦想和现实并不冲突。我所理解的，就是尽可能在现实中创造比较好的生活的条件，这样对追求梦想更为有利。然后，在追梦的过程中，不要忘记我们是活生生的人。当下的每一个时刻都是美好的瞬间，可以是一缕阳光、满山遍野的野草、吹尽松林的晚风、一声蝉鸣和一束星光……这些道不尽此时的安详与美好。灵魂出生需要生命的火花，而火花就是现在，人生的追求并没有标准答案，你也可以是出题人。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1">1</h1>
<p>这是一部能够给心灵带来慰藉的电影，或许在人生迷茫的时候，可以看一下，洗涤内心，还自己一片净土。</p>
<p>影片的男主乔伊是一位音乐老师，他一直梦想着能够加入乐队演出。然而，在即将有机会出演时，他却在路上不慎掉进深井，然后就挂掉了，灵魂飘荡到了“生之来处”。在这部电影中，有这样的设定：人们从“生之来处”前往地球，死后则会到达“生之彼岸”。乔伊显然心有不甘，因为乐队演出一直是他最大的梦想。于是，他混入导师团队，阴差阳错之下，负责引导22号——这个号称几千年来最顽劣、一直未找到自己生命意义的灵魂，一同前往地球。在与22号相处的日子里，他们相互之间的认识产生了碰撞，迸发出了不一样的火花。</p>
<h1 id="2">2</h1>
<p>当22号附身到乔伊身上时，那一段剧情还是很好玩的。22号初次体验做人的感觉，弄出了很多笑料。虽然附身在成年人乔伊身上，但他表现出的却是一个孩子的天真与可爱。</p>
<p>还有其他很多有趣的场景，比如他调侃林肯的话：“你真的不介意被印在一分钱上吗？”林肯回答：“不介意，这是我的荣幸。”22号贱贱的小表情，继续道，“二十美元上的可是杰克逊总统。”然后林肯就破防了。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411242224006.png" />
<p>此外，还有剃头发的片段，以及乔伊经常表现出的小聪明，都让人忍俊不禁。影片中还出现了尼克斯球队，我不禁想起A-史密斯那句经典的话：“上次尼克斯夺冠时我才5岁，女士们先生们，现在我51了。”</p>
<h1 id="3">3</h1>
<p>22号终究还是孩子的心态，通过附身在乔伊身体里，以他自己的认知面对了乔伊过去面对的事情，但是，却很意外地收到了不一样的结果，这让乔伊自己从第三人的角度看到了不同的世界，也对自己一直以来的认知产生了冲击。</p>
<p>在理发店里和理发老板聊天时，22号实话实说，但不知内情的旁人却认为他这是一种夸张的说辞。但不管怎么样，这些话却巧合地让人不由得深思，如同接受了哲学家的思想洗礼。乔伊也突然发觉，自己可能忽略掉了太多身边的人和事。也许，多关心身边的人，以及注意到日常生活中的点点滴滴，才是最重要的。</p>
<p>当乔伊和22号一起去找乔伊的妈妈补裤子时，理想与现实又一次碰撞。乔伊的妈妈担心追求梦想不切实际，连自己的生活都很难保障。但乔伊说，他愿意为此付出一切。我还是觉得梦想应该依托现实，如果在现实生活中能够满足基本的保障，那么追逐梦想的风险就会降低，而不是做什么事情都要孤注一掷，为什么一定要如此极端呢？或许，我们可以采取更为周全的策略来达成目的。当然，世界上不乏天才，对于他们来说，梭哈可能才是正确的选择，因为时间过于宝贵，比如不修边幅的韦神，我管你这那的，我只要数学。但对于普通人而言，稳扎稳打可能更为保险。</p>
<p>我觉得很美好的一幕是，时间准备到了，乔伊准备可以换回身体时，22号却坐在台阶上，静静地看着天空、阳光和落叶。枫叶被吹起来又落下，沙沙作响，他的心里很平静。突然，他感受到了一种前所未有的喜悦，并说了一句特别感人的话：“我从来没这样快乐过，能真实地体验到在地球上的发生的这一切。有没有可能一直以来，错的一直就是我而不是别人？”就这一句，完全升华了整个故事。能够认识到自己、找到自己，是如此珍贵的品质。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411260631241.png" />
<h1 id="4">4</h1>
<p>当乔伊终于实现了自己的梦想，万般期待的那一天终于到来时，他却并没有感觉有什么不一样。多茜娅和他讲了一个鱼的故事：</p>
<p>小鱼说：“我想寻找大海。”</p>
<p>老鱼说：“大海？你就在海里呢。”</p>
<p>小鱼说：“这只是水，我想找到的是大海。”</p>
<p>乔伊陷入了沉思。他回到家里，看着22号留下的那些稀松平常的小物件，不由得弹起了钢琴。随着美妙的旋律响起，他的心境开始变化，不掺杂任何世俗的心思。说实话，这一段音乐真的很好听，让人一下子陷入对自身的审视之中。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411260652521.png" />
<p>其实，人生的追求是什么呢？是重于泰山还是轻于鸿毛？</p>
<p>这个关于鱼的故事可以有多种解读。从亲子关系的角度去解读的话，也可以得到一些启示。如果对小朋友总是盲目地提出不切实际的要求，总是以为出人头地才是唯一的出路，那么最珍贵的其实已经拥有————比起这些虚妄之物，小朋友才是最珍贵的。很多时候，都是后知后觉，就像苏东坡说的：“惟愿孩儿愚且鲁，无灾无难到公卿。”</p>
<p>另一种解读就是从自我的人生思考去诠释。到底什么才是人生的追求？是雄心壮志、功成名就，还是游山玩水、吃喝玩乐？人生的追求是否有高低贵贱之分？是否可以仗着自己好像在做着符合主流观念里的“高大上”的追求，而对他人想要追求的生活横加指责？</p>
<h1 id="5">5</h1>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411292138753.png"></p>
<p>在2017年有一段时间，我尝试过晚上9点睡觉，然后早上4点30分起来跑步。当时天色还未全亮，我在冷风中、在小区的跑道上跑步，周边就是早餐店铺，冒着蒸汽，天上时不时能听到飞机飞过的轰鸣声。那时我正在研究《了凡四训》，看了书、看了漫画版，还把近3个小时的电影看了很多遍，对生活和自己的人生进行总结和反思。</p>
<p>人生真的需要那么多东西吗？早上只要两个馒头和一杯豆浆，中午只要蒜炒空心菜和两碗米饭，晚饭也可以是蒜炒红薯叶加两碗米饭。并不一定需要山珍海味、大鱼大肉，这些足够果腹。很多东西都变成了无谓的追求，消耗自己的精力和时间。想要简单点其实并不难。既然最终都会消亡，那人生的追求和意义又体现在哪里？</p>
<p>然后我又想到了《倚天屠龙记》里金毛狮王谢逊出家的情节。渡厄要收他为徒，意味着他变成“空”字辈，和空闻、空智大师同一辈分，这显然占了很大便宜。但渡厄说：“师父是空，弟子是空，你归我门下，仍是叫作谢逊，你懂了么？”谢逊说：“弟子懂了。牛屎谢逊，皆是虚影，身既无物，何况于名？”</p>
<p>“身既无物，何况于名？”这句话当时给了我很大的启发。到最后功名利禄都是一场空，那人生的意义又算什么呢？相同的道理和逻辑，如果对己有利的事物最终都会消亡，那对己不利的事物是否同样会消亡？成功是这样，失败也会是这样。那我有必要害怕失败吗？</p>
<p>既然如此，何不好好地尝试去努力一把，试一试能不能取得自己满意的结果？当时我还给自己写了一首《浣溪沙·跬步》：</p>
<p>身既无身何况名，是非成败酒中轻，若为将领首为兵。
小隐于山禅意院，竹林听雨玉箫声，夜深远寺有钟鸣。</p>
<p>其实都是化用了“身既无物，何况于名？”这一句，还有我最爱的、念叨最多的那一句诗词：“姑苏城外寒山寺，夜半钟声到客船。”每每念起，心里总会出奇地平静。</p>
<p>说到底，自己拥有了才有资格说不稀罕。要不然怎么证明自己是真的不稀罕，还是自己真的酸？等到真的拥有时，心态是否会发生一百八十度的转变？人心真的值得相信吗？</p>
<p>当你真的有一个小目标时，你说你不爱钱，别人大概率会相信你。但你穷得叮当响，你说你穷是因为你不爱钱，哪怕你说的是真心话，别人也不会相信。当然，你也可以说不需要别人相信。只是，过多地阐述自己如此的标新立异和拥有真知灼见，本身就是一种愚蠢。只有笨人才会那么强烈地排斥世俗，给自己带来不必要的麻烦，你志不在此，不要浪费无谓的精力。言归正传，所以，《黑神话：悟空》第一回过场动画最后那句“若不披这件衣裳，众生又怎知我尘缘已断，金海尽干？”从这个角度去解读也是可以的。因此，在2017年，基本上就是以下这几句话对我影响颇深：</p>
<p>“从前种种，譬如昨日死；往后种种，譬如昨日生。”</p>
<p>“命由我作，福自己求。”</p>
<p>“身既无物，何况于名？”</p>
<p>“不可不趁三十之前立志猛进也。”</p>
<h1 id="6">6</h1>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411292140745.png"></p>
<p>最后，结合电影的故事，我想说的是，梦想和现实并不冲突。我所理解的，就是尽可能在现实中创造比较好的生活的条件，这样对追求梦想更为有利。然后，在追梦的过程中，不要忘记我们是活生生的人。当下的每一个时刻都是美好的瞬间，可以是一缕阳光、满山遍野的野草、吹尽松林的晚风、一声蝉鸣和一束星光……这些道不尽此时的安详与美好。灵魂出生需要生命的火花，而火花就是现在，人生的追求并没有标准答案，你也可以是出题人。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-25 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-25-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 25 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-25-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：排骨粥+鸡蛋+炒油麦菜&lt;/li&gt;
&lt;li&gt;午餐：血鸭+农家一碗香+炖汤&lt;/li&gt;
&lt;li&gt;晚餐：玉米、水豆腐、鸡蛋、泡菜、珍珠奶茶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252157280.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;一下班先去健身房是对的，运动完会感觉到饿。&lt;/li&gt;
&lt;li&gt;晚上就吃玉米、鸡蛋蛮好的。&lt;/li&gt;
&lt;li&gt;戒掉珍珠奶茶。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：排骨粥+鸡蛋+炒油麦菜</li>
<li>午餐：血鸭+农家一碗香+炖汤</li>
<li>晚餐：玉米、水豆腐、鸡蛋、泡菜、珍珠奶茶</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252157280.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>一下班先去健身房是对的，运动完会感觉到饿。</li>
<li>晚上就吃玉米、鸡蛋蛮好的。</li>
<li>戒掉珍珠奶茶。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-24 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-24-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 24 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-24-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒粉+皮蛋瘦肉粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：羊肉汤&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252204962.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;中午如果吃的多了，晚上就要控制了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒粉+皮蛋瘦肉粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：羊肉汤</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252204962.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>中午如果吃的多了，晚上就要控制了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-23 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-23-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 23 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-23-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：排骨粥+炒河粉炒+鸡蛋+油麦菜&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：干蒸粉肠、肥肠、米粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252200576.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;还是慢慢来吧。&lt;/li&gt;
&lt;li&gt;晚上还是要控制，不然白忙活了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：排骨粥+炒河粉炒+鸡蛋+油麦菜</li>
<li>午餐：公司食堂</li>
<li>晚餐：干蒸粉肠、肥肠、米粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411252200576.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>还是慢慢来吧。</li>
<li>晚上还是要控制，不然白忙活了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-20 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：牛肉肠粉+豆浆&lt;/li&gt;
&lt;li&gt;午餐：血鸭+炖汤&lt;/li&gt;
&lt;li&gt;晚餐：肉末零食、AD钙奶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210851153.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;慢慢戒掉豆浆、炖汤、全部饮料。&lt;/li&gt;
&lt;li&gt;晚上基本不吃。&lt;/li&gt;
&lt;li&gt;18:30就去健身房。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：牛肉肠粉+豆浆</li>
<li>午餐：血鸭+炖汤</li>
<li>晚餐：肉末零食、AD钙奶</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210851153.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>慢慢戒掉豆浆、炖汤、全部饮料。</li>
<li>晚上基本不吃。</li>
<li>18:30就去健身房。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-19 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、排骨粥、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：烧鸡+炖汤&lt;/li&gt;
&lt;li&gt;晚餐：捞粉+鸡肉辣汤粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210851153.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚餐吃多了，已经超过薄荷健康App定的量了，不应该吃了的。&lt;/li&gt;
&lt;li&gt;早点去健身房吧。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、排骨粥、鸡蛋</li>
<li>午餐：烧鸡+炖汤</li>
<li>晚餐：捞粉+鸡肉辣汤粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210851153.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚餐吃多了，已经超过薄荷健康App定的量了，不应该吃了的。</li>
<li>早点去健身房吧。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《海蒂和爷爷》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B5%B7%E8%92%82%E5%92%8C%E7%88%B7%E7%88%B7%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Thu, 14 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B5%B7%E8%92%82%E5%92%8C%E7%88%B7%E7%88%B7%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411142327970.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;《海蒂和爷爷》是一部2015年上映，由阿兰·葛斯彭纳执导的电影。影片主要讲述了海蒂这个小姑娘被姨妈托付给住在阿尔卑斯山上的爷爷，并与爷爷一起生活的温馨故事。&lt;/p&gt;
&lt;p&gt;电影一开始，映入眼帘的是阿尔卑斯山绚丽的风景，湛蓝的天空下，雄鹰翱翔天际，镜头下是一群山羊悠然自得地吃着青草，充满了生机与安详。阳光温暖而明媚，让人心旷神怡。&lt;/p&gt;
&lt;p&gt;在这样的景色渲染下，故事开始了。&lt;/p&gt;
&lt;h1 id=&#34;1&#34;&gt;1&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;人们总喜欢说些鸡毛蒜皮的事情，你需要决定相信自己的眼睛和耳朵，还是别人的话。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;爷爷在村子里的口碑不是很好，大家都怕他，也不喜和其交往。&lt;/p&gt;
&lt;p&gt;海蒂一开始也是害怕的，因为彼得那个小伙子说，村子里的人说她爷爷以前杀过人。&lt;/p&gt;
&lt;p&gt;但是爷爷说，人们总喜欢说些鸡毛蒜皮的事情，你需要决定相信自己的眼睛和耳朵，还是别人的话。&lt;/p&gt;
&lt;p&gt;海蒂选择相信爷爷的话。&lt;/p&gt;
&lt;p&gt;生活中，无足轻重的事情实在太多。每天的热搜新闻，无论多么微不足道，只要能吸引流量，就有一群自媒体蜂拥而至，如同秃鹰见到腐肉，饿狼碰到羔羊，唯恐落后。那么多网络垃圾信息充斥着世界的每一个角落。在这个时代，眼见为虚，耳听为实，似乎已失去了说服力。&lt;/p&gt;
&lt;p&gt;但在这样一部充满童真的电影里，我们再去抬杠未免太过分了，所以，没必要表达那么多，不要搞得自己好像有什么真知灼见似的，总之，回到电影本身，你不一定要完全听信他人怎么说，你可以有自己的选择。&lt;/p&gt;
&lt;h1 id=&#34;2&#34;&gt;2&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;我们很幸运，不是吗？爷爷。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;爷爷背海蒂回家，海蒂说，我们很幸运，不是吗？爷爷。&lt;/p&gt;
&lt;p&gt;简单的一句话，足以让人感觉到海蒂的善良。是啊，虽然自己的境遇已经够不幸了，但相比之下，彼得的奶奶眼睛瞎了，牙齿掉了，既看不见，也吃不了硬一点的面包，我们是不是已经足够幸福了呢？不知为何，当时看到这一幕，眼前闪过的是《神雕侠侣》里郭芙为李莫愁所害，大火即将烧到她的身边，杨过和小龙女的一段对话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;杨过对小龙女说道：“龙儿，这姑娘害了我不够，又来害你，今日终于遭到如此报应。”小龙女听后，用明亮的眼光凝视着他，问道：“过儿，难道你不去救她？”杨过则恨恨地回答：“她将咱们害成这样，我不亲手杀她，已对得起她父母了。”小龙女听后，叹了口气，用温柔的语气说道：“我们不好，是我们命苦，让别人开开心心的不好吗？”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;表面上好像有点风马牛不相及的感觉，其实本质上都是出于纯粹的善意之心。&lt;/p&gt;
&lt;h1 id=&#34;3&#34;&gt;3&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;他们知道太少，因为他们只知道这个村子，但是你见过这个世界更多的东西。如果做某事会让你开心，那么你就只管去做，无论别人说了什么。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;海蒂不想认字，但是又想听故事，克拉拉的奶奶循循善诱，故事说一半就不继续说了，“如果你识字，你就会知道接下来会发生什么。你喜欢故事，不是吗？”激发海蒂去好好学习。&lt;/p&gt;
&lt;p&gt;海蒂在课堂上回答老师的提问，自己的梦想是什么？她说想写故事。老师和学生哄堂大笑，对啊，不就是山上的放羊娃，能认识几个字都已经足够优秀了，还奢望能写故事，简直天方夜谭。&lt;/p&gt;
&lt;p&gt;但是克拉拉的奶奶开导她，“他们知道太少，因为他们只知道这个村子，但是你见过这个世界更多的东西。如果做某事会让你开心，那么你就只管去做，无论别人说了什么。”&lt;/p&gt;
&lt;p&gt;如果做某事会让你开心，想必这一生，便能将全部的热情倾注到自己热爱的事业，相信这将激发自己无穷的潜力。&lt;/p&gt;
&lt;p&gt;不过，每个人的路都不一样，什么叫见过世面，什么是对，什么是错呢？最重要的其实还是开心。就像《灌篮高手》里的樱木花道，一开始是为了追求赤木晴子才加入的篮球队，但是，经过那么多的磨难，终于诚实地面对自己的内心，对于篮球“非常喜欢！这次绝不是说谎！”&lt;/p&gt;
&lt;h1 id=&#34;4&#34;&gt;4&lt;/h1&gt;
&lt;p&gt;整部电影算是没有反派吧，每个人不同立场，看待不同事情，都有苦衷的感觉。&lt;/p&gt;
&lt;p&gt;当时就觉得海蒂应该叫上克拉拉来山里，体验一下不一样的生活。&lt;/p&gt;
&lt;p&gt;看的时候还在想，最后克拉拉的双腿不会好起来吧，没想到还真的是，结局双腿真的好起来了，可以说是非常完美的结局了。&lt;/p&gt;
&lt;p&gt;最后，我想说的是，难道我要奢望一部电影，改变我的人生吗？那不至于。在繁忙的生活中，有一段闲暇的时光，静静地感受，那种光线透过窗台，照射在屋子某一个角落的静谧，就已经足够温暖人心。&lt;/p&gt;
&lt;h1 id=&#34;题外话&#34;&gt;题外话&lt;/h1&gt;
&lt;p&gt;因为爷爷的扮演者在《帝国的毁灭》中扮演过希特勒，所以大家都在弹幕上调侃，爷爷以前何止杀过人，爷爷我啊，年轻时征服过欧洲，还是很搞笑的。当然我之所以知道，是因为我看第二遍的时候，打开了弹幕哈哈。经过2019年观看诺兰蝙蝠侠系列电影第三部，因为开了弹幕被剧透米兰达就是爬出深渊的小孩之后，体验感大打折扣，对自己很看重的电影，不可能再开弹幕。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411142327970.png"></p>
<p>《海蒂和爷爷》是一部2015年上映，由阿兰·葛斯彭纳执导的电影。影片主要讲述了海蒂这个小姑娘被姨妈托付给住在阿尔卑斯山上的爷爷，并与爷爷一起生活的温馨故事。</p>
<p>电影一开始，映入眼帘的是阿尔卑斯山绚丽的风景，湛蓝的天空下，雄鹰翱翔天际，镜头下是一群山羊悠然自得地吃着青草，充满了生机与安详。阳光温暖而明媚，让人心旷神怡。</p>
<p>在这样的景色渲染下，故事开始了。</p>
<h1 id="1">1</h1>
<blockquote>
<p>人们总喜欢说些鸡毛蒜皮的事情，你需要决定相信自己的眼睛和耳朵，还是别人的话。</p></blockquote>
<p>爷爷在村子里的口碑不是很好，大家都怕他，也不喜和其交往。</p>
<p>海蒂一开始也是害怕的，因为彼得那个小伙子说，村子里的人说她爷爷以前杀过人。</p>
<p>但是爷爷说，人们总喜欢说些鸡毛蒜皮的事情，你需要决定相信自己的眼睛和耳朵，还是别人的话。</p>
<p>海蒂选择相信爷爷的话。</p>
<p>生活中，无足轻重的事情实在太多。每天的热搜新闻，无论多么微不足道，只要能吸引流量，就有一群自媒体蜂拥而至，如同秃鹰见到腐肉，饿狼碰到羔羊，唯恐落后。那么多网络垃圾信息充斥着世界的每一个角落。在这个时代，眼见为虚，耳听为实，似乎已失去了说服力。</p>
<p>但在这样一部充满童真的电影里，我们再去抬杠未免太过分了，所以，没必要表达那么多，不要搞得自己好像有什么真知灼见似的，总之，回到电影本身，你不一定要完全听信他人怎么说，你可以有自己的选择。</p>
<h1 id="2">2</h1>
<blockquote>
<p>我们很幸运，不是吗？爷爷。</p></blockquote>
<p>爷爷背海蒂回家，海蒂说，我们很幸运，不是吗？爷爷。</p>
<p>简单的一句话，足以让人感觉到海蒂的善良。是啊，虽然自己的境遇已经够不幸了，但相比之下，彼得的奶奶眼睛瞎了，牙齿掉了，既看不见，也吃不了硬一点的面包，我们是不是已经足够幸福了呢？不知为何，当时看到这一幕，眼前闪过的是《神雕侠侣》里郭芙为李莫愁所害，大火即将烧到她的身边，杨过和小龙女的一段对话：</p>
<blockquote>
<p>杨过对小龙女说道：“龙儿，这姑娘害了我不够，又来害你，今日终于遭到如此报应。”小龙女听后，用明亮的眼光凝视着他，问道：“过儿，难道你不去救她？”杨过则恨恨地回答：“她将咱们害成这样，我不亲手杀她，已对得起她父母了。”小龙女听后，叹了口气，用温柔的语气说道：“我们不好，是我们命苦，让别人开开心心的不好吗？”</p></blockquote>
<p>表面上好像有点风马牛不相及的感觉，其实本质上都是出于纯粹的善意之心。</p>
<h1 id="3">3</h1>
<blockquote>
<p>他们知道太少，因为他们只知道这个村子，但是你见过这个世界更多的东西。如果做某事会让你开心，那么你就只管去做，无论别人说了什么。</p></blockquote>
<p>海蒂不想认字，但是又想听故事，克拉拉的奶奶循循善诱，故事说一半就不继续说了，“如果你识字，你就会知道接下来会发生什么。你喜欢故事，不是吗？”激发海蒂去好好学习。</p>
<p>海蒂在课堂上回答老师的提问，自己的梦想是什么？她说想写故事。老师和学生哄堂大笑，对啊，不就是山上的放羊娃，能认识几个字都已经足够优秀了，还奢望能写故事，简直天方夜谭。</p>
<p>但是克拉拉的奶奶开导她，“他们知道太少，因为他们只知道这个村子，但是你见过这个世界更多的东西。如果做某事会让你开心，那么你就只管去做，无论别人说了什么。”</p>
<p>如果做某事会让你开心，想必这一生，便能将全部的热情倾注到自己热爱的事业，相信这将激发自己无穷的潜力。</p>
<p>不过，每个人的路都不一样，什么叫见过世面，什么是对，什么是错呢？最重要的其实还是开心。就像《灌篮高手》里的樱木花道，一开始是为了追求赤木晴子才加入的篮球队，但是，经过那么多的磨难，终于诚实地面对自己的内心，对于篮球“非常喜欢！这次绝不是说谎！”</p>
<h1 id="4">4</h1>
<p>整部电影算是没有反派吧，每个人不同立场，看待不同事情，都有苦衷的感觉。</p>
<p>当时就觉得海蒂应该叫上克拉拉来山里，体验一下不一样的生活。</p>
<p>看的时候还在想，最后克拉拉的双腿不会好起来吧，没想到还真的是，结局双腿真的好起来了，可以说是非常完美的结局了。</p>
<p>最后，我想说的是，难道我要奢望一部电影，改变我的人生吗？那不至于。在繁忙的生活中，有一段闲暇的时光，静静地感受，那种光线透过窗台，照射在屋子某一个角落的静谧，就已经足够温暖人心。</p>
<h1 id="题外话">题外话</h1>
<p>因为爷爷的扮演者在《帝国的毁灭》中扮演过希特勒，所以大家都在弹幕上调侃，爷爷以前何止杀过人，爷爷我啊，年轻时征服过欧洲，还是很搞笑的。当然我之所以知道，是因为我看第二遍的时候，打开了弹幕哈哈。经过2019年观看诺兰蝙蝠侠系列电影第三部，因为开了弹幕被剧透米兰达就是爬出深渊的小孩之后，体验感大打折扣，对自己很看重的电影，不可能再开弹幕。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-11-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-11-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;不记得了。&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210850635.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;计划再好，不执行等于零。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>不记得了。</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411210850635.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>计划再好，不执行等于零。</p>
]]></content:encoded>
    </item>
    <item>
      <title>Web应用实现在手机端访问和使用方案</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/web%E5%BA%94%E7%94%A8%E5%AE%9E%E7%8E%B0%E5%9C%A8%E6%89%8B%E6%9C%BA%E7%AB%AF%E8%AE%BF%E9%97%AE%E5%92%8C%E4%BD%BF%E7%94%A8%E6%96%B9%E6%A1%88/</link>
      <pubDate>Fri, 01 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/web%E5%BA%94%E7%94%A8%E5%AE%9E%E7%8E%B0%E5%9C%A8%E6%89%8B%E6%9C%BA%E7%AB%AF%E8%AE%BF%E9%97%AE%E5%92%8C%E4%BD%BF%E7%94%A8%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;h1 id=&#34;1-背景&#34;&gt;1. 背景&lt;/h1&gt;
&lt;p&gt;当前的后台管理系统主要负责云平台和云服务器的管理，并且是以&lt;code&gt;Web&lt;/code&gt;应用的形式在使用。但是，当出现服务器紧急情况或需要进行平台注册审核时，如果这些任务发生在非工作时间，例如在通勤路上，我们就无法使用&lt;code&gt;PC&lt;/code&gt;浏览器进行访问和操作，这显然是不方便的。另外，由于后台管理系统仅供内部人员使用，我们只需要它能满足基本的查看和配置需求，对于便利性和美观性并没有太高要求。因此，将&lt;code&gt;Web&lt;/code&gt;端的所有功能移植到手机端并开发一个&lt;code&gt;App&lt;/code&gt;，显然很不划算。毕竟，每当&lt;code&gt;Web&lt;/code&gt;端功能迭代时，&lt;code&gt;App&lt;/code&gt;端也需要同步更新，这意味着同一功能需要实现两次，所以，开发&lt;code&gt;App&lt;/code&gt;的方案就不考虑了。&lt;/p&gt;
&lt;h1 id=&#34;2-方案&#34;&gt;2. 方案&lt;/h1&gt;
&lt;h2 id=&#34;21-方案一使用手机edgefirefox浏览器访问使用推荐&#34;&gt;2.1 方案一：使用手机Edge、Firefox浏览器访问使用【推荐】&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;使用手机通过&lt;code&gt;Edge&lt;/code&gt;或&lt;code&gt;Firefox&lt;/code&gt;浏览器访问时，设置为“查看桌面网站”（&lt;code&gt;Firefox&lt;/code&gt;中称为桌面版网站开关），即可浏览平台的完整布局，并通过手势放大和缩小来居中展示所需内容，操作便捷。&lt;/li&gt;
&lt;li&gt;可将后台管理系统的管理平台添加到手机主屏幕，实现快速访问。&lt;/li&gt;
&lt;li&gt;以&lt;code&gt;TDesign&lt;/code&gt;页面模板演示效果。&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010950736.jpg&#34; style=&#34;zoom: 50%;&#34; /&gt;
&lt;h2 id=&#34;22-方案二当前页面--全屏&#34;&gt;2.2 方案二：当前页面 + 全屏&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;创建一个专为手机端使用的手机端菜单，仅显示关注页面，手机端访问时读取该菜单显示。&lt;/li&gt;
&lt;li&gt;利用&lt;code&gt;@media&lt;/code&gt;媒体查询调整各页面布局，例如筛选条件等，以避免布局错乱。&lt;/li&gt;
&lt;li&gt;默认情况下，只能在手机横屏模式下使用，提供一个全屏按钮，点击后将当前页面全屏化，以争取更多展示空间。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411011005842.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;23-方案三远程软件控制电脑访问使用&#34;&gt;2.3 方案三：远程软件控制电脑访问使用&lt;/h2&gt;
&lt;p&gt;使用远程软件（如向日葵）访问电脑，然后在手机端通过手势放大和缩小进行操作。效果与方案一相似，但存在以下不足：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;输入时需要手动打开键盘。&lt;/li&gt;
&lt;li&gt;页面有滚动条时操作繁琐。&lt;/li&gt;
&lt;li&gt;连接可能不稳定，画质不佳。&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411011010811.jpg&#34; style=&#34;zoom:80%;&#34; /&gt;
&lt;h1 id=&#34;3-结论&#34;&gt;3. 结论&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;方案一无需额外开发成本，只需在指定手机浏览器上使用即可。&lt;/li&gt;
&lt;li&gt;方案二需要额外开发，且最终呈现效果可能不如方案一。&lt;/li&gt;
&lt;li&gt;方案三存在上述提到的缺点。&lt;/li&gt;
&lt;li&gt;综合考虑，推荐采用方案一。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-背景">1. 背景</h1>
<p>当前的后台管理系统主要负责云平台和云服务器的管理，并且是以<code>Web</code>应用的形式在使用。但是，当出现服务器紧急情况或需要进行平台注册审核时，如果这些任务发生在非工作时间，例如在通勤路上，我们就无法使用<code>PC</code>浏览器进行访问和操作，这显然是不方便的。另外，由于后台管理系统仅供内部人员使用，我们只需要它能满足基本的查看和配置需求，对于便利性和美观性并没有太高要求。因此，将<code>Web</code>端的所有功能移植到手机端并开发一个<code>App</code>，显然很不划算。毕竟，每当<code>Web</code>端功能迭代时，<code>App</code>端也需要同步更新，这意味着同一功能需要实现两次，所以，开发<code>App</code>的方案就不考虑了。</p>
<h1 id="2-方案">2. 方案</h1>
<h2 id="21-方案一使用手机edgefirefox浏览器访问使用推荐">2.1 方案一：使用手机Edge、Firefox浏览器访问使用【推荐】</h2>
<ol>
<li>使用手机通过<code>Edge</code>或<code>Firefox</code>浏览器访问时，设置为“查看桌面网站”（<code>Firefox</code>中称为桌面版网站开关），即可浏览平台的完整布局，并通过手势放大和缩小来居中展示所需内容，操作便捷。</li>
<li>可将后台管理系统的管理平台添加到手机主屏幕，实现快速访问。</li>
<li>以<code>TDesign</code>页面模板演示效果。</li>
</ol>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010950736.jpg" style="zoom: 50%;" />
<h2 id="22-方案二当前页面--全屏">2.2 方案二：当前页面 + 全屏</h2>
<ol>
<li>创建一个专为手机端使用的手机端菜单，仅显示关注页面，手机端访问时读取该菜单显示。</li>
<li>利用<code>@media</code>媒体查询调整各页面布局，例如筛选条件等，以避免布局错乱。</li>
<li>默认情况下，只能在手机横屏模式下使用，提供一个全屏按钮，点击后将当前页面全屏化，以争取更多展示空间。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411011005842.png"></p>
<h2 id="23-方案三远程软件控制电脑访问使用">2.3 方案三：远程软件控制电脑访问使用</h2>
<p>使用远程软件（如向日葵）访问电脑，然后在手机端通过手势放大和缩小进行操作。效果与方案一相似，但存在以下不足：</p>
<ol>
<li>输入时需要手动打开键盘。</li>
<li>页面有滚动条时操作繁琐。</li>
<li>连接可能不稳定，画质不佳。</li>
</ol>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411011010811.jpg" style="zoom:80%;" />
<h1 id="3-结论">3. 结论</h1>
<ol>
<li>方案一无需额外开发成本，只需在指定手机浏览器上使用即可。</li>
<li>方案二需要额外开发，且最终呈现效果可能不如方案一。</li>
<li>方案三存在上述提到的缺点。</li>
<li>综合考虑，推荐采用方案一。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-31 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-31-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-31-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、排骨粥、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：咸鱼蒸饭、米饭、炖汤&lt;/li&gt;
&lt;li&gt;晚餐：酸菜饺子&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010911611.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;健身房1个小时&lt;/li&gt;
&lt;li&gt;23点前睡觉&lt;/li&gt;
&lt;li&gt;阅读30页&lt;/li&gt;
&lt;li&gt;每天一篇文章&lt;/li&gt;
&lt;li&gt;控制饮食，不超过薄荷健康App规定&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、排骨粥、鸡蛋</li>
<li>午餐：咸鱼蒸饭、米饭、炖汤</li>
<li>晚餐：酸菜饺子</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010911611.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>健身房1个小时</li>
<li>23点前睡觉</li>
<li>阅读30页</li>
<li>每天一篇文章</li>
<li>控制饮食，不超过薄荷健康App规定</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>VuePress文档初始化请求过多问题探讨</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/vuepress%E6%96%87%E6%A1%A3%E5%88%9D%E5%A7%8B%E5%8C%96%E8%AF%B7%E6%B1%82%E8%BF%87%E5%A4%9A%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8/</link>
      <pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/vuepress%E6%96%87%E6%A1%A3%E5%88%9D%E5%A7%8B%E5%8C%96%E8%AF%B7%E6%B1%82%E8%BF%87%E5%A4%9A%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8/</guid>
      <description>&lt;h1 id=&#34;1-背景&#34;&gt;1. 背景&lt;/h1&gt;
&lt;p&gt;公司有部门使用&lt;code&gt;VuePress 1.0&lt;/code&gt;搭建平台的帮助文档，前期文档不是很多，所以没有暴露出特别明显的问题。但随着文档的逐步迭代和内容的增多，出现了大量的并发请求，总共有218个请求，导致服务器带宽耗尽、响应速度下降，进而影响了文档的使用。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410301528188.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;2-问题分析&#34;&gt;2. 问题分析&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;VuePress 1.0&lt;/code&gt;是基于&lt;code&gt;Vue 2&lt;/code&gt;和&lt;code&gt;webpack&lt;/code&gt;实现的，其模块化方式使用的是&lt;code&gt;CommonJS&lt;/code&gt;。这意味着，当项目打包部署在服务器并进行访问时，需要将源码全部加载完成后才能进行渲染，即同步加载。随着项目持续迭代，内容增多，性能问题逐渐显现。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319263.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3-解决方案&#34;&gt;3. 解决方案&lt;/h1&gt;
&lt;p&gt;考虑到向服务器发起了&lt;code&gt;200&lt;/code&gt;多个请求，但查看那些&lt;code&gt;.js&lt;/code&gt;文件，整个&lt;code&gt;js&lt;/code&gt;文件夹大小才&lt;code&gt;10.3MB&lt;/code&gt;，是否可以将&lt;code&gt;10.3MB&lt;/code&gt;分为&lt;code&gt;10&lt;/code&gt;个&lt;code&gt;.js&lt;/code&gt;文件，减少请求至&lt;code&gt;10&lt;/code&gt;次呢？&lt;/p&gt;
&lt;h2 id=&#34;31-方案一替换成showdoc&#34;&gt;3.1 方案一：替换成showDoc&lt;/h2&gt;
&lt;p&gt;使用&lt;code&gt;showDoc&lt;/code&gt;在线文档系统，相比&lt;code&gt;vuepress&lt;/code&gt;基于&lt;code&gt;vue.js&lt;/code&gt;的静态站点生成器，除了操作便利，对于解决并发请求&lt;code&gt;200&lt;/code&gt;次这个问题，还是有帮助的，毕竟&lt;code&gt;showDoc&lt;/code&gt;初始化的时候，是从服务器获取文档目录，再通过文档&lt;code&gt;ID&lt;/code&gt;，去请求文档详情，通常来说，不会有那么多文档目录，不太可能出现并发请求&lt;code&gt;200&lt;/code&gt;次这个问题，只是将&lt;code&gt;vuepress&lt;/code&gt;迁移至&lt;code&gt;showDoc&lt;/code&gt;，花费的成本很高，文档格式需要调整，图片需要上传，想想这个工作量就头大，再者，作为平台的帮助文档，本身带有宣传的作用，很难醒目地在&lt;code&gt;showDoc&lt;/code&gt;中体现平台的公司名和&lt;code&gt;Logo&lt;/code&gt;，所以这个方案不推荐。&lt;/p&gt;
&lt;h2 id=&#34;32-方案二研究webpack如何合并打包&#34;&gt;3.2 方案二：研究webpack如何合并打包&lt;/h2&gt;
&lt;p&gt;如果请求过多是因为文件太分散导致的，那么，能够在当前基础上，也就是&lt;code&gt;webpack&lt;/code&gt;里，找到，当打包时，将各个文件合并，减少请求次数呢？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;VuePress 1.0&lt;/code&gt; 支持通过 &lt;a href=&#34;https://github.com/mozilla-neutrino/webpack-chain&#34;&gt;webpack-chain&lt;/a&gt; 链式操作来修改内部的 &lt;code&gt;webpack&lt;/code&gt; 配置，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;exports&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;chainWebpack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isServer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// config 是一个 ChainableConfig 的实例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;那在 &lt;code&gt;webpack&lt;/code&gt; 中，如何对打包的体积、文件等进行处理呢？在 &lt;code&gt;webpack&lt;/code&gt; 官方文档中，有推荐使用 &lt;code&gt;SplitChunksPlugin&lt;/code&gt; 插件，是为了代码分割，减少包的体积，然后优化加载效率，感觉和自己的初衷背道而驰，最终没达到自己想要的效果。还有就是研究了下 &lt;code&gt;ModuleConcatenationPlugin&lt;/code&gt; 插件，其作用是将所有模块的作用域“提升”或合并到一个闭包中，从而使得代码在浏览器中执行速度更快。但是因为要在使用 &lt;code&gt;webpack-chain&lt;/code&gt; 去调研 &lt;code&gt;webpack&lt;/code&gt; 的配置，尝试使用后也没达到预期，加上再花精力投入到 &lt;code&gt;VuePress 1.0&lt;/code&gt; 和 &lt;code&gt;webpack-chain&lt;/code&gt; 感觉有点不值。所以，就再想想其他方案。&lt;/p&gt;
&lt;h2 id=&#34;33-方案三替换成vitepress推荐&#34;&gt;3.3 方案三：替换成VitePress【推荐】&lt;/h2&gt;
&lt;p&gt;说到减少并发请求次数，实际上，&lt;code&gt;Vite&lt;/code&gt;就在做这样的工作。&lt;code&gt;Vite&lt;/code&gt;采用的JavaScript模块化方式是&lt;code&gt;ESM（ECMAScript Modules）&lt;/code&gt;。与&lt;code&gt;CommonJS&lt;/code&gt;相比，&lt;code&gt;ESM&lt;/code&gt;支持按需加载，并且是异步执行的，不会阻塞浏览器的其他事件处理。这意味着在首次加载时，我们无需加载所有资源，仅需加载首页所需的资源即可。这样就能减少了并发请求次数，解决当前遇到的问题。&lt;/p&gt;
&lt;p&gt;而&lt;code&gt;VitePress&lt;/code&gt;，正是基于&lt;code&gt;Vue 3&lt;/code&gt;和&lt;code&gt;Vite&lt;/code&gt;构建的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319296.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;5-方案验证&#34;&gt;5. 方案验证&lt;/h1&gt;
&lt;p&gt;以下是两个文档框架的对比，内容基本为空，可忽略不计。可以看到&lt;code&gt;VuePress 1.0&lt;/code&gt;初始化请求的就有&lt;code&gt;26&lt;/code&gt;个请求，大部分都是&lt;code&gt;.js&lt;/code&gt;文件，而&lt;code&gt;VitePress 1.0&lt;/code&gt;只有&lt;code&gt;9&lt;/code&gt;个请求，&lt;code&gt;.js&lt;/code&gt;文件的请求才&lt;code&gt;4&lt;/code&gt;个。&lt;/p&gt;
&lt;h2 id=&#34;51-vuepress-10&#34;&gt;5.1 VuePress 1.0&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319902.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;52-vitepress-10&#34;&gt;5.2 VitePress 1.0&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319744.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-背景">1. 背景</h1>
<p>公司有部门使用<code>VuePress 1.0</code>搭建平台的帮助文档，前期文档不是很多，所以没有暴露出特别明显的问题。但随着文档的逐步迭代和内容的增多，出现了大量的并发请求，总共有218个请求，导致服务器带宽耗尽、响应速度下降，进而影响了文档的使用。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410301528188.png"></p>
<h1 id="2-问题分析">2. 问题分析</h1>
<p><code>VuePress 1.0</code>是基于<code>Vue 2</code>和<code>webpack</code>实现的，其模块化方式使用的是<code>CommonJS</code>。这意味着，当项目打包部署在服务器并进行访问时，需要将源码全部加载完成后才能进行渲染，即同步加载。随着项目持续迭代，内容增多，性能问题逐渐显现。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319263.png"></p>
<h1 id="3-解决方案">3. 解决方案</h1>
<p>考虑到向服务器发起了<code>200</code>多个请求，但查看那些<code>.js</code>文件，整个<code>js</code>文件夹大小才<code>10.3MB</code>，是否可以将<code>10.3MB</code>分为<code>10</code>个<code>.js</code>文件，减少请求至<code>10</code>次呢？</p>
<h2 id="31-方案一替换成showdoc">3.1 方案一：替换成showDoc</h2>
<p>使用<code>showDoc</code>在线文档系统，相比<code>vuepress</code>基于<code>vue.js</code>的静态站点生成器，除了操作便利，对于解决并发请求<code>200</code>次这个问题，还是有帮助的，毕竟<code>showDoc</code>初始化的时候，是从服务器获取文档目录，再通过文档<code>ID</code>，去请求文档详情，通常来说，不会有那么多文档目录，不太可能出现并发请求<code>200</code>次这个问题，只是将<code>vuepress</code>迁移至<code>showDoc</code>，花费的成本很高，文档格式需要调整，图片需要上传，想想这个工作量就头大，再者，作为平台的帮助文档，本身带有宣传的作用，很难醒目地在<code>showDoc</code>中体现平台的公司名和<code>Logo</code>，所以这个方案不推荐。</p>
<h2 id="32-方案二研究webpack如何合并打包">3.2 方案二：研究webpack如何合并打包</h2>
<p>如果请求过多是因为文件太分散导致的，那么，能够在当前基础上，也就是<code>webpack</code>里，找到，当打包时，将各个文件合并，减少请求次数呢？</p>
<p><code>VuePress 1.0</code> 支持通过 <a href="https://github.com/mozilla-neutrino/webpack-chain">webpack-chain</a> 链式操作来修改内部的 <code>webpack</code> 配置，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">chainWebpack</span> <span class="p">(</span><span class="nx">config</span><span class="p">,</span> <span class="nx">isServer</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// config 是一个 ChainableConfig 的实例
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>那在 <code>webpack</code> 中，如何对打包的体积、文件等进行处理呢？在 <code>webpack</code> 官方文档中，有推荐使用 <code>SplitChunksPlugin</code> 插件，是为了代码分割，减少包的体积，然后优化加载效率，感觉和自己的初衷背道而驰，最终没达到自己想要的效果。还有就是研究了下 <code>ModuleConcatenationPlugin</code> 插件，其作用是将所有模块的作用域“提升”或合并到一个闭包中，从而使得代码在浏览器中执行速度更快。但是因为要在使用 <code>webpack-chain</code> 去调研 <code>webpack</code> 的配置，尝试使用后也没达到预期，加上再花精力投入到 <code>VuePress 1.0</code> 和 <code>webpack-chain</code> 感觉有点不值。所以，就再想想其他方案。</p>
<h2 id="33-方案三替换成vitepress推荐">3.3 方案三：替换成VitePress【推荐】</h2>
<p>说到减少并发请求次数，实际上，<code>Vite</code>就在做这样的工作。<code>Vite</code>采用的JavaScript模块化方式是<code>ESM（ECMAScript Modules）</code>。与<code>CommonJS</code>相比，<code>ESM</code>支持按需加载，并且是异步执行的，不会阻塞浏览器的其他事件处理。这意味着在首次加载时，我们无需加载所有资源，仅需加载首页所需的资源即可。这样就能减少了并发请求次数，解决当前遇到的问题。</p>
<p>而<code>VitePress</code>，正是基于<code>Vue 3</code>和<code>Vite</code>构建的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319296.png"></p>
<h1 id="5-方案验证">5. 方案验证</h1>
<p>以下是两个文档框架的对比，内容基本为空，可忽略不计。可以看到<code>VuePress 1.0</code>初始化请求的就有<code>26</code>个请求，大部分都是<code>.js</code>文件，而<code>VitePress 1.0</code>只有<code>9</code>个请求，<code>.js</code>文件的请求才<code>4</code>个。</p>
<h2 id="51-vuepress-10">5.1 VuePress 1.0</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319902.png"></p>
<h2 id="52-vitepress-10">5.2 VitePress 1.0</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410312319744.png"></p>
<h1 id="6-结论">6. 结论</h1>
<p>由于<code>VitePress</code>也是<code>VuePress</code>团队开发的，并且是他们重点推荐的文档框架，从<code>VuePress</code>迁移至<code>VitePress</code>不需要推倒重来，只需调整差异部分，迁移成本相对较低，因此建议迁移至<code>VitePress</code>。</p>
]]></content:encoded>
    </item>
    <item>
      <title>App开发Flutter支持Harmony OS Next方案</title>
      <link>https://dstweihao.cn/posts/flutter/app%E5%BC%80%E5%8F%91flutter%E6%94%AF%E6%8C%81harmony-os-next%E6%96%B9%E6%A1%88/</link>
      <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/flutter/app%E5%BC%80%E5%8F%91flutter%E6%94%AF%E6%8C%81harmony-os-next%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;h1 id=&#34;1-背景&#34;&gt;1. 背景&lt;/h1&gt;
&lt;p&gt;由于当前部门使用&lt;code&gt;Flutter&lt;/code&gt;框架进行开发，支持生成&lt;code&gt;Android&lt;/code&gt;和&lt;code&gt;iOS&lt;/code&gt;两端的&lt;code&gt;App&lt;/code&gt;应用。现在鸿蒙系统计划完全去掉&lt;code&gt;AOSP&lt;/code&gt;核心代码，将无法支持&lt;code&gt;Android&lt;/code&gt;应用。因此，鸿蒙手机接下来只能安装鸿蒙&lt;code&gt;App&lt;/code&gt;应用。鉴于此，从长远来看，部门&lt;code&gt;App&lt;/code&gt;后续也需要支持鸿蒙系统。那么，如何从成本和可维护性方面考虑后续的开发模式？可以兼顾到&lt;code&gt;Android&lt;/code&gt;、&lt;code&gt;iOS&lt;/code&gt;和鸿蒙系统，同时老项目又能支持在鸿蒙手机上运行？重新开发鸿蒙版本？显然不切实际。&lt;/p&gt;
&lt;h1 id=&#34;2-解决方案&#34;&gt;2. 解决方案&lt;/h1&gt;
&lt;h2 id=&#34;21-方案一flutter-for-openharmony&#34;&gt;2.1 方案一：Flutter for OpenHarmony&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://gitee.com/openharmony-sig/flutter_flutter&#34;&gt;https://gitee.com/openharmony-sig/flutter_flutter&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;鸿蒙官方计划对&lt;code&gt;Flutter&lt;/code&gt;进行反向适配，即基于&lt;code&gt;Flutter SDK&lt;/code&gt;的稳定版本进行拓展，使其能够在鸿蒙&lt;code&gt;DevEco Studio&lt;/code&gt;上构建和生成鸿蒙&lt;code&gt;App&lt;/code&gt;应用。&lt;/p&gt;
&lt;h3 id=&#34;211-优势&#34;&gt;2.1.1 优势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;官方支持。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Flutter&lt;/code&gt;源码直接可用，只需简单适配，成本低。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;212-劣势&#34;&gt;2.1.2 劣势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;因使用&lt;code&gt;Flutter&lt;/code&gt;版本为&lt;code&gt;3.7&lt;/code&gt;，与当前最新&lt;code&gt;3.24&lt;/code&gt;版本相差过大，加上&lt;code&gt;Flutter&lt;/code&gt;迭代特别频繁，很多开发方式、组件都在不断变化，后续要使用新的&lt;code&gt;Flutter&lt;/code&gt;特性，可能不会那么容易。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Flutter&lt;/code&gt;正在考虑使用自研的图形渲染引擎&lt;code&gt;Impeller&lt;/code&gt;替换掉&lt;code&gt;Skia&lt;/code&gt;，这无疑又加大了更多的变数。最后，可能会变成多个分支进行维护。&lt;/li&gt;
&lt;li&gt;部门已有项目，使用的&lt;code&gt;Flutter&lt;/code&gt;版本都是最新的，可能是没办法兼容的。除非新项目统一使用这个&lt;code&gt;3.7&lt;/code&gt;版本的&lt;code&gt;Flutter SDK&lt;/code&gt;来开发。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;22-方案二arkui-x-跨平台框架&#34;&gt;2.2 方案二：ArkUI-X 跨平台框架&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://gitee.com/arkui-x&#34;&gt;https://gitee.com/arkui-x&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;ArkUI-X&lt;/code&gt;扩展&lt;code&gt;ArkUI&lt;/code&gt;开发框架到多个&lt;code&gt;OS&lt;/code&gt;平台，让开发者基于一套主代码，就可以构建支持多平台的精美、高性能应用。目前支持&lt;code&gt;OpenHarmony&lt;/code&gt;、&lt;code&gt;HarmonyOS&lt;/code&gt;、&lt;code&gt;Android&lt;/code&gt;、&lt;code&gt;iOS&lt;/code&gt;，后续会逐步增加更多平台支持，可以简单理解为鸿蒙版的&lt;code&gt;Flutter&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;221-优势&#34;&gt;2.2.1 优势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;官方支持。&lt;/li&gt;
&lt;li&gt;鸿蒙版的&lt;code&gt;Flutter&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;222-劣势&#34;&gt;2.2.2 劣势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;有学习成本，虽然鸿蒙和&lt;code&gt;Flutter&lt;/code&gt;是有一些共性的，学习成本相比之下不会太高，但是毕竟是新的开发模式，各种各样的知识和问题都是需要积累和时间的。&lt;/li&gt;
&lt;li&gt;有开发成本，已有的&lt;code&gt;Flutter&lt;/code&gt;项目需要重新开发。&lt;/li&gt;
&lt;li&gt;生态各方面还处于初期，还未成熟和完善，也不适合立马接入商业项目应用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;23-方案三flutter-web推荐&#34;&gt;2.3 方案三：Flutter Web【推荐】&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;http://192.168.24.10/appweb/index.html&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;通过&lt;code&gt;Flutter Web&lt;/code&gt;可以部署在网页上，然后在手机浏览器上使用，并设置为全屏，则可以达到和&lt;code&gt;App&lt;/code&gt;一样的使用效果。&lt;/p&gt;
 &lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410300919747.png&#34; style=&#34;zoom: 80%;&#34; /&gt;
&lt;h3 id=&#34;231-优势&#34;&gt;2.3.1 优势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;无开发成本。&lt;/li&gt;
&lt;li&gt;使用时无需安装。&lt;/li&gt;
&lt;li&gt;与系统无关，只要有浏览器就可使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;232-劣势&#34;&gt;2.3.2 劣势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;需要说服使用鸿蒙手机的客户接受这种使用方式。&lt;/li&gt;
&lt;li&gt;各手机浏览器需要支持全屏功能，不过可以代码实现，检测到当前是手机访问，则自动全屏即可。&lt;/li&gt;
&lt;li&gt;考虑到毕竟是在网页上使用，体验可能不如&lt;code&gt;App&lt;/code&gt;，但是现在手机性能、网络访问各方面发展都很不错，这方面应该不会特别明显。&lt;/li&gt;
&lt;li&gt;不联网的项目怎么办？可以基于鸿蒙开发一个基于&lt;code&gt;WebView&lt;/code&gt;的简单手机浏览器，并加载本地&lt;code&gt;Flutter Web&lt;/code&gt;部署的包，打开这个应用就可访问。&lt;/li&gt;
&lt;li&gt;额外多一些适配的工作，但不会很多，&lt;code&gt;Flutter&lt;/code&gt;项目开发，需同时考虑兼容&lt;code&gt;Web&lt;/code&gt;端。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;24-方案四flutter-官方支持-harmonyos&#34;&gt;2.4 方案四：Flutter 官方支持 HarmonyOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Flutter&lt;/code&gt;官方暂没有支持&lt;code&gt;HarmonyOS&lt;/code&gt;的计划，但是这个问答 &lt;a href=&#34;https://github.com/flutter/flutter/issues/38437&#34;&gt;《HarmonyOS Support》&lt;/a&gt; 毕竟是几年前了，以后的发展并不好说，如果鸿蒙系统大规模发展起来，发展到可以倒逼&lt;code&gt;Flutter&lt;/code&gt;官方支持也不是没有可能。&lt;/p&gt;
&lt;h1 id=&#34;3-结论&#34;&gt;3. 结论&lt;/h1&gt;
&lt;p&gt;到底选哪个方案，不是绝对的，只能是阶段性的，因为很多方案都还存在变数。考虑到部门的&lt;code&gt;App&lt;/code&gt;项目情况，推荐选择【方案三】，但是方案一、方案二可以在后续进行这方面的调研和准备工作，伺机而动。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-背景">1. 背景</h1>
<p>由于当前部门使用<code>Flutter</code>框架进行开发，支持生成<code>Android</code>和<code>iOS</code>两端的<code>App</code>应用。现在鸿蒙系统计划完全去掉<code>AOSP</code>核心代码，将无法支持<code>Android</code>应用。因此，鸿蒙手机接下来只能安装鸿蒙<code>App</code>应用。鉴于此，从长远来看，部门<code>App</code>后续也需要支持鸿蒙系统。那么，如何从成本和可维护性方面考虑后续的开发模式？可以兼顾到<code>Android</code>、<code>iOS</code>和鸿蒙系统，同时老项目又能支持在鸿蒙手机上运行？重新开发鸿蒙版本？显然不切实际。</p>
<h1 id="2-解决方案">2. 解决方案</h1>
<h2 id="21-方案一flutter-for-openharmony">2.1 方案一：Flutter for OpenHarmony</h2>
<blockquote>
<p><a href="https://gitee.com/openharmony-sig/flutter_flutter">https://gitee.com/openharmony-sig/flutter_flutter</a></p></blockquote>
<p>鸿蒙官方计划对<code>Flutter</code>进行反向适配，即基于<code>Flutter SDK</code>的稳定版本进行拓展，使其能够在鸿蒙<code>DevEco Studio</code>上构建和生成鸿蒙<code>App</code>应用。</p>
<h3 id="211-优势">2.1.1 优势</h3>
<ol>
<li>官方支持。</li>
<li><code>Flutter</code>源码直接可用，只需简单适配，成本低。</li>
</ol>
<h3 id="212-劣势">2.1.2 劣势</h3>
<ol>
<li>因使用<code>Flutter</code>版本为<code>3.7</code>，与当前最新<code>3.24</code>版本相差过大，加上<code>Flutter</code>迭代特别频繁，很多开发方式、组件都在不断变化，后续要使用新的<code>Flutter</code>特性，可能不会那么容易。</li>
<li><code>Flutter</code>正在考虑使用自研的图形渲染引擎<code>Impeller</code>替换掉<code>Skia</code>，这无疑又加大了更多的变数。最后，可能会变成多个分支进行维护。</li>
<li>部门已有项目，使用的<code>Flutter</code>版本都是最新的，可能是没办法兼容的。除非新项目统一使用这个<code>3.7</code>版本的<code>Flutter SDK</code>来开发。</li>
</ol>
<h2 id="22-方案二arkui-x-跨平台框架">2.2 方案二：ArkUI-X 跨平台框架</h2>
<blockquote>
<p><a href="https://gitee.com/arkui-x">https://gitee.com/arkui-x</a></p></blockquote>
<p><code>ArkUI-X</code>扩展<code>ArkUI</code>开发框架到多个<code>OS</code>平台，让开发者基于一套主代码，就可以构建支持多平台的精美、高性能应用。目前支持<code>OpenHarmony</code>、<code>HarmonyOS</code>、<code>Android</code>、<code>iOS</code>，后续会逐步增加更多平台支持，可以简单理解为鸿蒙版的<code>Flutter</code>。</p>
<h3 id="221-优势">2.2.1 优势</h3>
<ol>
<li>官方支持。</li>
<li>鸿蒙版的<code>Flutter</code>。</li>
</ol>
<h3 id="222-劣势">2.2.2 劣势</h3>
<ol>
<li>有学习成本，虽然鸿蒙和<code>Flutter</code>是有一些共性的，学习成本相比之下不会太高，但是毕竟是新的开发模式，各种各样的知识和问题都是需要积累和时间的。</li>
<li>有开发成本，已有的<code>Flutter</code>项目需要重新开发。</li>
<li>生态各方面还处于初期，还未成熟和完善，也不适合立马接入商业项目应用。</li>
</ol>
<h2 id="23-方案三flutter-web推荐">2.3 方案三：Flutter Web【推荐】</h2>
<blockquote>
<p>http://192.168.24.10/appweb/index.html</p></blockquote>
<p>通过<code>Flutter Web</code>可以部署在网页上，然后在手机浏览器上使用，并设置为全屏，则可以达到和<code>App</code>一样的使用效果。</p>
 <img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410300919747.png" style="zoom: 80%;" />
<h3 id="231-优势">2.3.1 优势</h3>
<ol>
<li>无开发成本。</li>
<li>使用时无需安装。</li>
<li>与系统无关，只要有浏览器就可使用。</li>
</ol>
<h3 id="232-劣势">2.3.2 劣势</h3>
<ol>
<li>需要说服使用鸿蒙手机的客户接受这种使用方式。</li>
<li>各手机浏览器需要支持全屏功能，不过可以代码实现，检测到当前是手机访问，则自动全屏即可。</li>
<li>考虑到毕竟是在网页上使用，体验可能不如<code>App</code>，但是现在手机性能、网络访问各方面发展都很不错，这方面应该不会特别明显。</li>
<li>不联网的项目怎么办？可以基于鸿蒙开发一个基于<code>WebView</code>的简单手机浏览器，并加载本地<code>Flutter Web</code>部署的包，打开这个应用就可访问。</li>
<li>额外多一些适配的工作，但不会很多，<code>Flutter</code>项目开发，需同时考虑兼容<code>Web</code>端。</li>
</ol>
<h2 id="24-方案四flutter-官方支持-harmonyos">2.4 方案四：Flutter 官方支持 HarmonyOS</h2>
<p><code>Flutter</code>官方暂没有支持<code>HarmonyOS</code>的计划，但是这个问答 <a href="https://github.com/flutter/flutter/issues/38437">《HarmonyOS Support》</a> 毕竟是几年前了，以后的发展并不好说，如果鸿蒙系统大规模发展起来，发展到可以倒逼<code>Flutter</code>官方支持也不是没有可能。</p>
<h1 id="3-结论">3. 结论</h1>
<p>到底选哪个方案，不是绝对的，只能是阶段性的，因为很多方案都还存在变数。考虑到部门的<code>App</code>项目情况，推荐选择【方案三】，但是方案一、方案二可以在后续进行这方面的调研和准备工作，伺机而动。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;不记得了&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010912628.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;计划再好，不执行等于零。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>不记得了</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202411010912628.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>计划再好，不执行等于零。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-21 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 21 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、排骨粥、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：农家小炒肉、米饭、炖汤&lt;/li&gt;
&lt;li&gt;晚餐：两包汤达人泡面、生椰拿铁+冰块、2鸡蛋、火腿肠、无糖可乐、椰奶饮料&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410220912036.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;运动计划重启后第四天，继续加油。&lt;/li&gt;
&lt;li&gt;本来打算晚上0点前睡觉，结果还是没达成。&lt;/li&gt;
&lt;li&gt;早点去健身房，吃掉最大的那只青蛙。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、排骨粥、鸡蛋</li>
<li>午餐：农家小炒肉、米饭、炖汤</li>
<li>晚餐：两包汤达人泡面、生椰拿铁+冰块、2鸡蛋、火腿肠、无糖可乐、椰奶饮料</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410220912036.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>运动计划重启后第四天，继续加油。</li>
<li>本来打算晚上0点前睡觉，结果还是没达成。</li>
<li>早点去健身房，吃掉最大的那只青蛙。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-20 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：无&lt;/li&gt;
&lt;li&gt;午餐：大盘鸡+面&lt;/li&gt;
&lt;li&gt;晚餐：新疆羊肉串、无糖可乐、百香多益菌、珍珠奶茶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410210906459.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;运动计划重启后第三天，继续加油。&lt;/li&gt;
&lt;li&gt;什么都不用想，先保持习惯，比如一个小时看完一部电影，也是很不错的。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：无</li>
<li>午餐：大盘鸡+面</li>
<li>晚餐：新疆羊肉串、无糖可乐、百香多益菌、珍珠奶茶</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410210906459.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>运动计划重启后第三天，继续加油。</li>
<li>什么都不用想，先保持习惯，比如一个小时看完一部电影，也是很不错的。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-19 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 19 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、皮蛋瘦肉粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：烧鸭+卤猪皮、米饭&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410210904993.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;运动计划重启后第二天，继续加油。&lt;/li&gt;
&lt;li&gt;早点睡吧。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、皮蛋瘦肉粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：烧鸭+卤猪皮、米饭</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410210904993.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>运动计划重启后第二天，继续加油。</li>
<li>早点睡吧。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-10-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 17 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-10-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：酸汤牛肉&lt;/li&gt;
&lt;li&gt;晚餐：干蒸粉肠+米粉、益生菌饮料、无糖生可乐、零食&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410180914854.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;居然都过了两个月了。&lt;/li&gt;
&lt;li&gt;黑神话悟空、黑暗之魂3都通关了，收收心，回归了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、鸡蛋</li>
<li>午餐：酸汤牛肉</li>
<li>晚餐：干蒸粉肠+米粉、益生菌饮料、无糖生可乐、零食</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410180914854.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>居然都过了两个月了。</li>
<li>黑神话悟空、黑暗之魂3都通关了，收收心，回归了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 44</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-44/</link>
      <pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-44/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/reverse-words-in-a-string-iii/&#34;&gt;557. 反转字符串中的单词 III&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个字符串 &lt;code&gt;s&lt;/code&gt; ，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Let&amp;#39;s take LeetCode contest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;s&amp;#39;teL ekat edoCteeL tsetnoc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;reverseWords&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/\S+/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;word&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;reverse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;trimEnd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;String.prototype.match()&lt;/code&gt; 方法检索字符串与正则表达式进行匹配的结果。比如以上示例，&lt;code&gt;s.match(/\S+/g)&lt;/code&gt;的结果为&lt;code&gt; [ &amp;quot;Let&#39;s&amp;quot;, &#39;take&#39;, &#39;LeetCode&#39;, &#39;contest&#39; ]&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2409/240916-astronauts-cosmonauts-taikonauts.html&#34;&gt;Record number of people in space - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;太空变得越来越拥挤了。目前，太空中创纪录地有19人。这一记录是在俄罗斯联盟号宇宙飞船的三名乘员与国际空间站（ISS）对接后打破的。最近的任务包括NASA宇航员Don Pettit和俄罗斯宇航员Alexey Ovchinin以及Ivan Vagner。他们将国际空间站的居民人数增加到了12人。中国的宇航员也是这一记录的一部分。他们在天宫空间站有三名“太空人”在工作。剩下的四名太空旅行者是SpaceX的极光黎明任务的一部分。该项目在上周四见证了历史上第一次全平民太空行走。&lt;/p&gt;
&lt;p&gt;关于最近的记录有一点争议，那就是关于外太空起点的定义。NASA和美国军方将地球大气层和外太空的边界视为海拔80公里。按照这种解释，人类在太空中的记录是20人，在2023年5月和今年1月创下。然而，外太空边缘的传统定义被称为卡门线。国际航空联合会将这条线定为海拔100公里。新的记录使用了这个定义。卡门线用于法律目的，以区分飞机和宇宙飞船。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在给项目配置&lt;code&gt;Sentry&lt;/code&gt;时，要将&lt;code&gt;sourcemaps&lt;/code&gt;通过&lt;code&gt;sentry-wizard&lt;/code&gt;自动上传至&lt;code&gt;Sentry&lt;/code&gt;，但是却提示以下报错信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Loading&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Wizard&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;failed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Did&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;you&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;provide&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再三确认&lt;code&gt;URL&lt;/code&gt;是没有问题，所以，就很奇怪这是什么问题？&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;curl&lt;/code&gt;命令是没有问题的，但是，返回了&lt;code&gt;Sentry&lt;/code&gt;网站没有证书的信息。&lt;/p&gt;
&lt;p&gt;查看&lt;code&gt;Github&lt;/code&gt;上面的&lt;code&gt;Issues&lt;/code&gt;，发现有类似的问题，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/getsentry/sentry-wizard/issues/416&#34;&gt;Loading Wizard failed for NextJs #416&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;提供的解决方案是，使用命令 &lt;code&gt;set NODE_TLS_REJECT_UNAUTHORIZED=0&lt;/code&gt; ，因为在&lt;code&gt;Node.js&lt;/code&gt; 中，&lt;code&gt;NODE_TLS_REJECT_UNAUTHORIZED&lt;/code&gt; 是一个环境变量，用于控制&lt;code&gt;Node.js&lt;/code&gt;在执行&lt;code&gt;HTTPS&lt;/code&gt;请求时是否应该拒绝未经授权的&lt;code&gt;SSL&lt;/code&gt;证书。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/reverse-words-in-a-string-iii/">557. 反转字符串中的单词 III</a></p>
<p>给定一个字符串 <code>s</code> ，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;Let&#39;s take LeetCode contest&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="s2">&#34;s&#39;teL ekat edoCteeL tsetnoc&#34;</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">reverseWords</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">s</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="nx">s</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="sr">/\S+/g</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">word</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">result</span> <span class="o">+=</span> <span class="nx">word</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">).</span><span class="nx">reverse</span><span class="p">().</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span><span class="p">.</span><span class="nx">trimEnd</span><span class="p">();</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p><code>String.prototype.match()</code> 方法检索字符串与正则表达式进行匹配的结果。比如以上示例，<code>s.match(/\S+/g)</code>的结果为<code> [ &quot;Let's&quot;, 'take', 'LeetCode', 'contest' ]</code>。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2409/240916-astronauts-cosmonauts-taikonauts.html">Record number of people in space - Breaking News English Lesson</a></p>
<p>太空变得越来越拥挤了。目前，太空中创纪录地有19人。这一记录是在俄罗斯联盟号宇宙飞船的三名乘员与国际空间站（ISS）对接后打破的。最近的任务包括NASA宇航员Don Pettit和俄罗斯宇航员Alexey Ovchinin以及Ivan Vagner。他们将国际空间站的居民人数增加到了12人。中国的宇航员也是这一记录的一部分。他们在天宫空间站有三名“太空人”在工作。剩下的四名太空旅行者是SpaceX的极光黎明任务的一部分。该项目在上周四见证了历史上第一次全平民太空行走。</p>
<p>关于最近的记录有一点争议，那就是关于外太空起点的定义。NASA和美国军方将地球大气层和外太空的边界视为海拔80公里。按照这种解释，人类在太空中的记录是20人，在2023年5月和今年1月创下。然而，外太空边缘的传统定义被称为卡门线。国际航空联合会将这条线定为海拔100公里。新的记录使用了这个定义。卡门线用于法律目的，以区分飞机和宇宙飞船。</p>
<h2 id="tip">Tip</h2>
<p>在给项目配置<code>Sentry</code>时，要将<code>sourcemaps</code>通过<code>sentry-wizard</code>自动上传至<code>Sentry</code>，但是却提示以下报错信息：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">Loading</span> <span class="nx">Wizard</span> <span class="nx">failed</span><span class="p">.</span> <span class="nx">Did</span> <span class="nx">you</span> <span class="nx">provide</span> <span class="nx">the</span> <span class="nx">right</span> <span class="nx">URL</span><span class="o">?</span>
</span></span></code></pre></div><p>再三确认<code>URL</code>是没有问题，所以，就很奇怪这是什么问题？</p>
<p>使用<code>curl</code>命令是没有问题的，但是，返回了<code>Sentry</code>网站没有证书的信息。</p>
<p>查看<code>Github</code>上面的<code>Issues</code>，发现有类似的问题，如下所示：</p>
<p><a href="https://github.com/getsentry/sentry-wizard/issues/416">Loading Wizard failed for NextJs #416</a></p>
<p>提供的解决方案是，使用命令 <code>set NODE_TLS_REJECT_UNAUTHORIZED=0</code> ，因为在<code>Node.js</code> 中，<code>NODE_TLS_REJECT_UNAUTHORIZED</code> 是一个环境变量，用于控制<code>Node.js</code>在执行<code>HTTPS</code>请求时是否应该拒绝未经授权的<code>SSL</code>证书。</p>
<p>然后，可以使用命令<code>npx @sentry/wizard@latest -i sourcemaps</code>可以正常执行了，只是在运行<code>npm run build</code>进行打包的时候，还是报错了，提示证书异常：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">error</span><span class="o">:</span> <span class="nx">API</span> <span class="nx">request</span> <span class="nx">failed</span>
</span></span><span class="line"><span class="cl">  <span class="nx">caused</span> <span class="nx">by</span><span class="o">:</span> <span class="p">[</span><span class="mi">60</span><span class="p">]</span> <span class="nx">SSL</span> <span class="nx">peer</span> <span class="nx">certificate</span> <span class="nx">or</span> <span class="nx">SSH</span> <span class="nx">remote</span> <span class="nx">key</span> <span class="nx">was</span> <span class="nx">not</span> <span class="nx">OK</span> <span class="p">(</span><span class="nx">schannel</span><span class="o">:</span> <span class="nx">SEC_E_UNTRUSTED_ROOT</span> <span class="p">(</span><span class="mh">0x80090325</span><span class="p">))</span>
</span></span></code></pre></div><p>所以，还是没办法解决，后来，<code>Sentry</code>更新了证书就好了。</p>
<h2 id="share">Share</h2>
<p>“套用98年乔丹对斯科特·伯勒尔的一段话：‘你肯定想再来一局，你想告诉你的外孙们，你打败了乔丹，那我和我外孙们说点什么？说我打败了斯科特·伯勒尔吗？’这才是真正的杀人诛心！他们赢了乔丹可以使劲吹。乔丹赢了他们有意思吗？”</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 43</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-43/</link>
      <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-43/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/sign-of-the-product-of-an-array/&#34;&gt;1822. 数组元素积的符号&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;已知函数 &lt;code&gt;signFunc(x)&lt;/code&gt; 将会根据 &lt;code&gt;x&lt;/code&gt; 的正负返回特定值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 &lt;code&gt;x&lt;/code&gt; 是正数，返回 &lt;code&gt;1&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;如果 &lt;code&gt;x&lt;/code&gt; 是负数，返回 &lt;code&gt;-1&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;如果 &lt;code&gt;x&lt;/code&gt; 是等于 &lt;code&gt;0&lt;/code&gt; ，返回 &lt;code&gt;0&lt;/code&gt; 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;nums&lt;/code&gt; 。令 &lt;code&gt;product&lt;/code&gt; 为数组 &lt;code&gt;nums&lt;/code&gt; 中所有元素值的乘积。&lt;/p&gt;
&lt;p&gt;返回 &lt;code&gt;signFunc(product)&lt;/code&gt; 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;数组中所有值的乘积是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;144&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;signFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;144&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arraySign&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;product&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;product&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;product&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;product&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;signFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;signFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;题目很简单。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2409/240912-nature-and-mental-health.html&#34;&gt;Nature can reduce anxiety and boost mental health - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/sign-of-the-product-of-an-array/">1822. 数组元素积的符号</a></p>
<p>已知函数 <code>signFunc(x)</code> 将会根据 <code>x</code> 的正负返回特定值：</p>
<ul>
<li>如果 <code>x</code> 是正数，返回 <code>1</code> 。</li>
<li>如果 <code>x</code> 是负数，返回 <code>-1</code> 。</li>
<li>如果 <code>x</code> 是等于 <code>0</code> ，返回 <code>0</code> 。</li>
</ul>
<p>给你一个整数数组 <code>nums</code> 。令 <code>product</code> 为数组 <code>nums</code> 中所有元素值的乘积。</p>
<p>返回 <code>signFunc(product)</code> 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">数组中所有值的乘积是</span> <span class="mi">144</span> <span class="err">，</span><span class="nx">且</span> <span class="nx">signFunc</span><span class="p">(</span><span class="mi">144</span><span class="p">)</span> <span class="o">=</span> <span class="mi">1</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">arraySign</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">product</span> <span class="o">=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">    <span class="nx">nums</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">n</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">product</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="nx">product</span> <span class="o">=</span> <span class="nx">product</span> <span class="o">*</span> <span class="nx">n</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">signFunc</span><span class="p">(</span><span class="nx">product</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">signFunc</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">p</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">p</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>题目很简单。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2409/240912-nature-and-mental-health.html">Nature can reduce anxiety and boost mental health - Breaking News English Lesson</a></p>
<p>我们都知道，置身于大自然中对我们有好处。新的研究表明，在自然界中仅 10 分钟就有助于我们的心理健康。该研究还表示，在自然环境中与他人共度时光有助于建立人际关系。即使在城市公园和园艺中也可以有所作为。香港城市大学的一项研究发现，大自然增加了我们将他人视为“完全的人”的方式。研究人员表示，这使我们更多地帮助和合作他人。我们变得更善于交际。这让我们对自己感觉更好。我们感觉更积极，因此我们的心理健康得到了改善。帮助他人也可以减轻我们的压力和焦虑。</p>
<p>心理健康是一个在世界范围内日益增长的问题。越来越多的人患有焦虑、抑郁和其他心理障碍。美国全国精神疾病联盟报告称，五分之一的美国人有心理健康问题。该研究包含关于大自然如何帮助解决这些问题的好建议。它说，在树上或田野里度过的时间与更好的睡眠和注意力的提高有关。日本千叶大学的一项研究发现，即使是鲜花也对心理健康有积极影响。研究人员发现，办公桌上放着一瓶玫瑰的员工在短短四分钟后就变得更加平静，压力也减轻了。</p>
<h2 id="tip">Tip</h2>
<p>在维护部门内部的API库时，出现执行命令报错，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309251531813.png"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">errors</span><span class="o">:</span><span class="mi">477</span>
</span></span><span class="line"><span class="cl">    <span class="nx">ErrorCaptureStackTrace</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="o">^</span>
</span></span><span class="line"><span class="cl"><span class="nb">Error</span><span class="o">:</span> <span class="nx">Command</span> <span class="nx">failed</span> <span class="kd">with</span> <span class="nx">ENOENT</span><span class="o">:</span> <span class="nx">npm</span> <span class="nx">run</span> <span class="nx">clean</span>
</span></span><span class="line"><span class="cl"><span class="nx">spawn</span> <span class="nx">npm</span> <span class="nx">run</span> <span class="nx">clean</span> <span class="nx">ENOENT</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">Process</span><span class="p">.</span><span class="nx">ChildProcess</span><span class="p">.</span><span class="nx">_handle</span><span class="p">.</span><span class="nx">onexit</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">child_process</span><span class="o">:</span><span class="mi">283</span><span class="o">:</span><span class="mi">19</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">onErrorNT</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">child_process</span><span class="o">:</span><span class="mi">478</span><span class="o">:</span><span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">processTicksAndRejections</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">process</span><span class="o">/</span><span class="nx">task_queues</span><span class="o">:</span><span class="mi">83</span><span class="o">:</span><span class="mi">21</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">errno</span><span class="o">:</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">code</span><span class="o">:</span> <span class="s1">&#39;ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">syscall</span><span class="o">:</span> <span class="s1">&#39;spawn npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">spawnargs</span><span class="o">:</span> <span class="p">[],</span>
</span></span><span class="line"><span class="cl">  <span class="nx">originalMessage</span><span class="o">:</span> <span class="s1">&#39;spawn npm run clean ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">shortMessage</span><span class="o">:</span> <span class="s1">&#39;Command failed with ENOENT: npm run clean\nspawn npm run clean ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">command</span><span class="o">:</span> <span class="s1">&#39;npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">exitCode</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">signal</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">signalDescription</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">stdout</span><span class="o">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">stderr</span><span class="o">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">failed</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">timedOut</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">isCanceled</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">killed</span><span class="o">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>从报错信息可知，代码在执行到<code>npm run clean</code>命令时报错了，提示找不到这个命令，但是我复制命令在终端运行是成功的，在windows10系统是没问题的，但我在mac系统上运行就报错了，执行代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">await</span> <span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span>
</span></span></code></pre></div><p>初步猜测，可能execa用法在mac环境中不生效。将其注释，没有提示报错，所以，接着就要研究如何在mac环境中使用execa了。只需将</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span> 
</span></span></code></pre></div><p>改写为</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;run&#39;</span><span class="p">,</span> <span class="s1">&#39;clean&#39;</span><span class="p">],</span> <span class="p">{</span> <span class="nx">shell</span><span class="o">:</span> <span class="kc">true</span> <span class="p">})</span>
</span></span></code></pre></div><p>即可，这时，我们就会想知道这两种用法有什么区别呢？</p>
<p><code>execa</code>是一个用于执行<code>shell</code>命令的<code>Node.js</code>模块，它可以将命令作为参数传递给它，并返回一个<code>Promise</code>，以便在命令执行完成之后处理。根据报错提示没有找到<code>npm</code>命令，很有可能是execa模块无法正确识别到环境变量。</p>
<p>所以将<code>npm run clean</code>拆分为<code>npm</code>和<code>run clean</code>两个参数，并将 shell 选项设置为<code>true</code>，以便在子进程中运行命令的时候使用默认的<code>shell</code>，这样可以正确找到<code>npm</code>命令并且识别环境变量，找到<code>npm</code>命令。</p>
<h2 id="share">Share</h2>
<p>“上兵伐谋，其次伐交，其次伐兵，其下攻城。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>《论幸福生活》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%BA%E5%B9%B8%E7%A6%8F%E7%94%9F%E6%B4%BB/</link>
      <pubDate>Mon, 07 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%BA%E5%B9%B8%E7%A6%8F%E7%94%9F%E6%B4%BB/</guid>
      <description>&lt;h2 id=&#34;导言&#34;&gt;导言&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;我们可以这样说：塞涅卡的立场就是斯多亚派的立场，但某些个人的特点同样清晰可辨。&lt;/li&gt;
&lt;li&gt;芝诺&lt;/li&gt;
&lt;li&gt;幸福在于内在的统一与生活的和谐，而对于这一内在统一与和谐来说，同本性相一致的生活是其必要和充分条件。&lt;/li&gt;
&lt;li&gt;理性首先必须在其中证明自身的领域是对事物善恶的评估。在伦理学研究的范围中，这也是不同哲学学派最为清晰地展示彼此差异的领域。斯多亚派的思想虽然复杂，但立场鲜明。唯一真正的善好（bonum）是道德的善好，亦即德性，唯一真正的败坏（malum）是道德的败坏，亦即恶习。所有其他的东西都是中性的（ἀδιάϕορα, indifferentia）。幸福的生活，与本性相一致的生活，理性引导的生活，其特殊之处在于它导向作为唯一的善好的德性。&lt;/li&gt;
&lt;li&gt;修辞能力被看作文学——审美文化的本质所在，而这种文化本身——这在罗马是第一次——被看作是一种价值。在向公众雄辩（declamationes，本义为练习讲演）的过程中展示修辞能力，这甚至在一定意义上替代了不再可能实现的对政治决策的积极参与。在这样的环境下，一种新的修辞风格得到发展，而且这种风格影响到当时的文学（散文和诗歌），这一点也不让人惊讶。这种风格受到特殊条件的制约——同法庭演讲相反，雄辩的宗旨不再是通过说服而实现某个特定目标，而是仅仅要在此刻并且是为了此刻给听众留下深刻印象，吸引听众。因此，这些讲演的宏观结构变得不再重要。关键的是演讲包含精彩而令人难忘的片段，让听众一听就能有所理解。恰如其分的隐喻、机智的双关语、出乎意料的笑点、隽永的警句，成了这种新派修辞术及其影响下的文学所青睐的手段。&lt;/li&gt;
&lt;li&gt;“你……培植德性也无非是因为希望从中获取某种享乐”。&lt;/li&gt;
&lt;li&gt;没有人能够快乐地生活，除非他同时也正派地生活。&lt;/li&gt;
&lt;li&gt;“让德性先行，让享乐跟随”。&lt;/li&gt;
&lt;li&gt;“真正的快乐建立在德性之上”。&lt;/li&gt;
&lt;li&gt;热衷于哲学的人心灵不受财富羁绊。&lt;/li&gt;
&lt;li&gt;财富不是善好，但是有用。&lt;/li&gt;
&lt;li&gt;某些德性需要鞭策，有些德性需要缰绳。&lt;/li&gt;
&lt;li&gt;当作者试图向读者建议某种生活方式时，他自己的生活同他的教导有什么样的关系就成了尤为急迫的问题。&lt;/li&gt;
&lt;li&gt;享受这些事物并不会妨碍不受它们羁绊的独立性，而且一旦境况变化，哲学家会毫无顾虑地将它们抛弃。&lt;/li&gt;
&lt;li&gt;当塞涅卡明白如何离弃权力和财富这些值得偏好之物时，他最终也懂得了如何离弃生命这一值得偏好之物。随着皮索的密谋败露，塞涅卡被赐自缢，他坚定地、毫不犹豫地服从了这项命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;论幸福生活&#34;&gt;论幸福生活&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;获得幸福的生活如此之难，以至于一个人——如果他在路线上犯了错误——越是急切地走向它，他离它也就越遥远。如果那条路通往相反的方向，速度本身将会成为更大距离的原因。&lt;/li&gt;
&lt;li&gt;当我们东溜西逛，不追随领路人，而是听从那些呼唤我们前往不同方向的人的嘈杂的呼喊和喧哗时，生命将在歧途上消磨殆尽；这生命是短暂的——即使我们日夜操劳以图获得善好的心灵。因此，我们必须确定我们的方向和途径，而且不能没有一位有经验的、探索过我们所前往的领域的人作为向导，因为这里的条件和其他旅途不尽相同：在那些旅途中，有标记好的路线，还有可以咨询的当地居民，不让我们走错；但是在这里，正是最常走、最热闹的路最具有欺骗性。&lt;/li&gt;
&lt;li&gt;我们不能像羊群那样追随先行的群体，不朝着当去之处，而朝着众人所去之处前行。然而和以下这种行为相比，没有任何行为能把我们引入更大的败坏，那就是按照传闻行事，认为最好的就是那些受到热烈欢迎而被接受的事物，并且用许多的先例代替良好的范例，不根据理性却通过模仿来生活。&lt;/li&gt;
&lt;li&gt;没有哪个人在自己跌倒时不把另一个人也带倒在自己身上，前面的人导致了其追随者的覆灭——在生活中也到处可见。没有人犯错误仅仅影响自己，他也是其他人错误的原因和始作俑者。因为效法前人是有害的，而且，当每一个人都宁愿轻信而非判断时，那么关于生活就从来没有判断，而常常只有轻信；而手手相传的错误把我们转来转去并掀翻在地。因为盲从他人的先例，我们走向毁灭；我们将会得到治疗——只要我们脱离众人。&lt;/li&gt;
&lt;li&gt;人类事务并没有安排得那么好，以至于更好的东西取悦更多的人：大众是最坏之物的明证。&lt;/li&gt;
&lt;li&gt;让我们探究什么事做起来最好，而非什么事大家最常做，以及什么事使我们拥有永恒的幸福，而非什么事得到群众——真理最坏的阐释者的赞同。&lt;/li&gt;
&lt;li&gt;一切我至今所做的，我宁愿没有做；一切我以前所说的，当我再次想起时，就嫉妒哑巴；一切我以前所想要的，我视之为仇敌的诅咒；一切我以前所畏惧的，善好的诸神啊，比起我以前所欲求的，是多么无足轻重！我曾与许多人为敌，又从怨怼回到友谊——如果恶人之间也存在任何友谊的话；然而我和自己还没有友好相处。我曾倾尽全力让自己出类拔萃，并且靠着某样天资声名远扬，然而除了让自己成为众矢之的并为那些怀有恶意的人指明能刺痛我的地方以外，我又得到了什么呢？&lt;/li&gt;
&lt;li&gt;你看见那些赞美有口才者、追捧有财富者、奉承有影响者以及吹嘘有权力者的人了吗？他们所有人，要么是敌人，要么—这是一样的—可能成为敌人。有多少人仰慕你，就有多少人妒恨你。我为何不去寻求一些事实上善好的、我可以感受到的而非用来炫耀的东西？那些被人注目、令人驻足、使人惊异地相互指点的东西，其实是外表光鲜亮丽，内里悲惨可怜。&lt;/li&gt;
&lt;li&gt;幸福的生活是顺应自身本性的生活，使它出现除此以外别无他法：心灵首先要健康且永葆康泰，进而要勇健有力，然后要完美地忍耐，顺应时势，关注肉体以及与肉体相关的事物却不过分焦虑，最后要留意另一些为生活提供方便的事物，但不对其中任何东西过分着迷，利用命运的礼物而不做它的奴仆。&lt;/li&gt;
&lt;li&gt;当那些刺激或者恐吓我们的东西被驱离后，永恒的宁静和自由会随之而来。因为在享乐和痛苦遭到蔑视之后，取代那些渺小脆弱并且因那些可耻行径而有害的事物的，是巨大的喜悦，稳定而平正，然后是灵魂的安宁、和谐以及不乏温和的崇高；因为所有野蛮都源自软弱。&lt;/li&gt;
&lt;li&gt;如果我说“最高的善好是轻视无常之事且以德性为乐的灵魂”，或者说“它是不可战胜的灵魂之力，对于事务富有经验，行事温厚，且伴有丰沛的仁爱和对与之交游之人的关怀”。我们也可以如此定义，称这样一种人是幸福的：对他而言没有任何善好与败坏——除了善好和败坏的灵魂；他推崇道义，满足于德性，无常之事既不会将他抬高，也不能把他击碎；他不知道比他能够自给的善好更大的善好；对他而言真正的享乐将是对享乐的蔑视。&lt;/li&gt;
&lt;li&gt;幸福生活是自由、正直、无畏、坚定、处于恐惧和欲望之外的灵魂；对它而言，唯一的善好便是道义，唯一的败坏便是丑恶，而其他的不过是既无损又无益于幸福生活的事物的琐碎集合，它们或来或往，却对最高的善好毫无增损。&lt;/li&gt;
&lt;li&gt;不健全的人不是幸福的，而一个追求有害而非最好的事物的人不是健全的。&lt;/li&gt;
&lt;li&gt;幸福的人是判断正确的人；幸福的人是无论当下境遇如何，都满足于自己的境况并与之友好相处的人；幸福的人是得到理性对他所有境况的认可的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2&#34;&gt;2&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一些事令人快乐却不正派，一些事则相反，极为正派但是艰难，要通过痛苦达成。&lt;/li&gt;
&lt;li&gt;一些人是不幸的但并非缺乏享乐，相反，他们正是由于这享乐而不幸。倘若享乐已经将自身融入德性，这种事不会发生。事实上，德性经常缺乏享乐，也从不需要它。&lt;/li&gt;
&lt;li&gt;为什么你们将不同乃至对立的事物放在一起？德性是一种崇高的事物，卓越而尊贵，不可战胜，不知疲倦；享乐低下卑微，奴颜婢膝，虚弱无力，势必倾覆，以妓院酒肆为驻地和居所。德性，你将在神殿之中遇见它，或在广场上，在元老院里；你会发现它驻守在城墙外，沾满灰尘，皮肤黝黑，双手粗糙。享乐，你会发现它时常在浴室、发汗室和那些见不得市政官的场所周围潜伏着，寻找阴暗之处，阴柔无力，浸着酒和油膏，肤色苍白，或是浓妆艳抹，涂抹着防腐的药剂。&lt;/li&gt;
&lt;li&gt;本性处于变动之中的事物从不可靠——因此，那来去匆匆、刚发挥自身作用便迅速消亡的事物甚至不可能有任何实体，因为它趋向的正是自身终结之地，且在开始时就看向终点。&lt;/li&gt;
&lt;li&gt;在善好的事物和败坏的事物之中均存在享乐，而且自身的耻辱带给卑劣者的快乐并不比卓越的行为带给正派人的少？正因为如此，古人训诫我们寻求最好的而非最快乐的生活，这样一来享乐就不是正直和善好的意愿的向导，而只是其同伴。因为我们必须以本性为向导，正是这本性，理性留心观察并向它咨询。&lt;/li&gt;
&lt;li&gt;如果我们谨慎而勇敢地持守身体的天资和合于本性的禀赋，如同它们仅被赋予一日，转瞬即逝；如果我们不屈服于它们的奴役，并且外物不占有我们；如果受身体欢迎的以及来自外部的事物对于我们而言，处于援军和轻装士兵在军营中的位置——它们应当服从而非率领，这样才有益于心灵。&lt;/li&gt;
&lt;li&gt;这样的人会是镇定而有条理的，并且在行事之中高尚而不乏和善。&lt;/li&gt;
&lt;li&gt;我们的心灵应当做同样的事：当它跟随自己的感官并通过它们将自己延伸向外物之后，它应当是那些外物和自己的主人。&lt;/li&gt;
&lt;li&gt;最高的善好就是灵魂的和谐一致，因为哪里有谐和统一哪里就一定有德性；恶习才和自己不一致。&lt;/li&gt;
&lt;li&gt;“但是你，”他说，“培植德性也无非是因为希望从中获取某种享乐。”首先，即使德性会提供享乐，它也不因此就是为了享乐而被追求。因为它不是提供享乐，而是也提供享乐；它不是为享乐而辛劳，而是它的辛劳——尽管它追求的是其他事物——也附带收获了享乐。&lt;/li&gt;
&lt;li&gt;就如同在为了种植作物而犁过的耕地中，一些花朵杂生其间。尽管它们赏心悦目，然而如此多的辛劳却不是为了这些花草而付出的——播种者自有其他目的，它们只是附带生长出来。同样，享乐不是德性的报酬也不是其原因，而是它的副产品，而且德性不是因为它取悦人而被赞成，而是如果它被赞成，它也取悦人。&lt;/li&gt;
&lt;li&gt;最高的善好存在于最好的心灵的判断和习性本身之中，它一旦将自己的空间充满并以自己的界限将自身合围，最高的善好就已经达成，并且不再渴求更多，因为全体之外并无其他事物，它们并不比终点之后的路程多。&lt;/li&gt;
&lt;li&gt;当你问我是为了什么而寻求德性的时候，你就错了，因为你在询问某种高于至高的事物。你问我在德性中寻找什么？它本身。因为它没有任何比自身更好的东西了，它本身就是自己的奖赏。这难道不够伟大吗？当我对你说“最高的善好是不可摧毁的灵魂的坚毅、远见、高尚、健康、自由、和谐以及美”时，你现在还要求这些品质所归向的某种更伟大的东西吗？你为什么跟我谈起享乐？我寻求的是人的善好而不是肚腹的善好，显然肚腹在牲畜和野兽那里更宽大。&lt;/li&gt;
&lt;li&gt;然而谁不知道，正是那些最愚蠢的人最多地拥有你们所说的享乐，游手好闲的人充溢着快乐，而且灵魂自身推荐了种种扭曲的享乐方式？首先是妄自尊大，自命不凡，对他人的高傲不逊，对自己的境况盲目而短视的热爱，出于琐屑幼稚的原因的雀跃；此外是戏谑刻薄，以侮辱他人为乐的傲慢，怠惰灵魂的懒散和放荡。这灵魂流连于赏心乐事，因自己而昏昏欲睡。&lt;/li&gt;
&lt;li&gt;你拥抱享乐，我限制它；你享受享乐，我利用它；你以它为最高的善好，我不以其为善好；为了它，你什么都做，我什么都不做。&lt;/li&gt;
&lt;li&gt;但我们会看到，德性在那些如此侮蔑地对待它的人那里是否仍然是德性——它一旦撤离岗位，就无法拥有自己的名字了。同时，就当下讨论的问题而言，我要展示许多被享乐所占据的人，尽管命运向他们倾倒出它所有的馈赠，你还是必须承认他们是败坏的人。&lt;/li&gt;
&lt;li&gt;任何走向德性的人，都给出了高贵天性的证明。追随享乐的人看起来孱弱、破碎，正在丧失男性气概，即将陷入耻辱—除非有人为他分辨享乐，以便他能知道，在它们之中哪些止于本性需求之内，哪些闷头向前冲、无休无止，而且越是被满足，就越难以满足。&lt;/li&gt;
&lt;li&gt;来吧，让德性先行，每一步都将是安全的。过度享乐是有害的，但在德性中不需要害怕有任何过度，因为在它自身之中存在尺度；因自身的庞大而劳苦的事物不是善好。进一步说，对于禀有理性本性的生物，有什么事物比理性更适于被置于眼前呢？如果那种结合受到赞同，如果和这个随从走向幸福生活受到赞同，就让德性先行，让享乐跟随并且像影子一样围绕在身边。把德性这最为高贵的女主人当作侍女交给享乐，属于灵魂不能构想任何伟大事物的人。&lt;/li&gt;
&lt;li&gt;那些将领导权交给了享乐的人在两方面都一无所有，因为他们失去了德性，而且不是他们拥有享乐，而是享乐拥有他们。&lt;/li&gt;
&lt;li&gt;对于寻求败坏而非善好的人，得偿所愿是危险的。正如我们冒着辛劳和危险猎取野兽，而拥有那些被捕获的野兽也令人焦虑——它们时常将主人撕成碎片。&lt;/li&gt;
&lt;li&gt;巨大的享乐也是如此：它们成为巨大的败坏，而且它们作为被捕获的对象却捕获了捕获者。&lt;/li&gt;
&lt;li&gt;享乐越多、越大，那被民众称为快乐的人就越渺小，就是更多人的奴仆。&lt;/li&gt;
&lt;li&gt;你不给德性一个坚实的、不可动摇的基础，而是命令它站在不稳定的地方，然而有什么像对侥幸的期待以及肉体的和影响肉体的事物的多变一样不稳定？如果他因享乐和痛苦的芒刺而动摇，他怎么能服从神明并以善好的灵魂接受发生的任何事，而且不抱怨命运，成为一个对自身际遇怀抱善意的解读者？如果他倾向于享乐的话，他甚至不是祖国善好的保护者和守卫者，也不是朋友的捍卫者。&lt;/li&gt;
&lt;li&gt;任何出于宇宙的构造法则而必须忍耐的事物，就让它被勇敢地承受吧。我们已经被推向这一誓言：忍受属于凡人的一切，不被我们无力避免的事物所搅扰。我们出生于君主国，服从神明即是自由。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;“然后呢？为了幸福地生活，德性就足够了吗？”难道那完美神圣的德性不是足够的，甚至是超乎足够的吗？因为，一个置身于对一切事物的欲望之外的人还能缺乏什么呢？一个把自己的一切都集中于自身的人还会从外界需求什么呢？但正在向德性前行的人，尽管他已经行进了很远，由于他仍然挣扎在凡人的诸事中，还是需要命运的些许垂青，直到他解开那绳结和尘世的所有锁链。那么，二者有什么区别？其他人被约束、被绑缚，乃至被撕扯，但这向着高处行进并把自己提升得更高的人拖着一条宽松的锁链，他还不自由，但已经几乎是自由的了。&lt;/li&gt;
&lt;li&gt;我不是一位智者，而且，为了滋养你的恶意，也不会成为一位智者。因此，请不要要求我与至善之人等同，而是要求我比败坏之人好一点。每天从我的恶习中去除一些，并且检讨我的错误，这对我来说就足够了。&lt;/li&gt;
&lt;li&gt;我还没有获得健康，甚至也不会获得，我为我的痛风调配的是缓解而不是根治的药，如果它发作的次数少一些并且不那么刺痛，我就满意了。但是跟你们比起来，跛足的人啊，我无异于赛跑选手。我说这些并非代表我自己——因为我深陷于各种恶习之中——而是代表那已经取得了一些成绩的人。&lt;/li&gt;
&lt;li&gt;你说：“你说一套做一套。”这，最恶意的以及对最好的人最敌视的人们哪，是责备柏拉图的话，是责备伊壁鸠鲁的话，也是责备芝诺的话，因为他们所有人说的都不是自己事实上是如何生活的，而是所有人以及自己应该如何生活。我谈论的是德性而非我自己，而且，当我声讨恶习的时候，我首先声讨我自己的恶习——一旦我有能力，我就会过应该过的生活。&lt;/li&gt;
&lt;li&gt;你们评论一个人的生，另一个人的死，并且朝着因某些非凡的可赞之举而伟大的人物的名字狂吠，就像小狗冲着走近的陌生人狂吠一样。因为无人被视为好人于你们有利，仿佛他人的德性是对你们缺点的指责一样。你们心怀嫉妒，把他人的光辉业绩和你们的卑鄙相比较，而你们不知道这大胆的举动会为你们带来多少损失。因为如果那些追随德性的人尚且贪婪放荡而野心勃勃，你们这些连德性之名都深以为恨的人又是什么？&lt;/li&gt;
&lt;li&gt;你们否认有任何人践行了他所说的，或者按照他言谈中的榜样生活。这有什么奇怪的呢——既然他们所说的是勇毅宏大之事，是要从人世的一切狂风骤雨中抽身？当他们努力把自己从十字架上卸下——你们每一个人却自己把自己的钉子钉上去——他们即使经历刑罚，也只是挂在一根刑柱上；但这些自己惩罚自己的人，却被与他们欲望一样多的十字架所撕裂。但是他们满口诽谤，在诬蔑他人一事上巧妙而优雅，我不会相信他们有空顾及此事——除非还有些人从示众架上向观众吐口水。&lt;/li&gt;
&lt;li&gt;我不会吝啬地守护，也不会奢侈地挥霍我拥有的任何东西，我认为我拥有任何事物的程度都不会超过拥有被妥善施予的事物。我将不会根据数目、重量或者任何评价——除非是对于接受者的评价——来衡量恩惠，在我看来，配得上的人所收到的永远不算多。我做任何事都不会是为了名声，我做的一切都是出于良心，我将相信，我有意识地做的每一件事都发生在众人的注视之下。&lt;/li&gt;
&lt;li&gt;对我来说吃喝的目的将在于平息自然的需求，而不是填满或清空肠胃。对于朋友我将愉悦可亲，对于敌人我将温和平易，我将在被请求之前就接受请求，甚至会跑去欢迎正派的人的恳求。我将知道我的祖国即是世界，而它的主宰即是诸神，他们立于我之上，在我的周围，做我言行的审查者。当自然要索回我的灵魂或者理性要舍弃它时，我将离开这个世界，证明我热爱过良知和善好的追求，也没有妨害过任何人的自由，更不用说我自己的自由了。&lt;/li&gt;
&lt;li&gt;位打算、希望、尝试去做这些事的人，将接近诸神；诚然，即使他没能到达，也是在伟大的挑战中失败的。&lt;/li&gt;
&lt;li&gt;“为什么那人既热衷于哲学，却又作为如此一位富豪而活着呢？为什么他声称钱财应当被轻视却又占有，认为生命应当被轻视却又活着，认为健康应当被轻视，却又无比用心地保持它，希望它尽可能地好？为什么一方面他认为流放不过是空洞的名词，还说‘换换地方又有什么坏处’，然而另一方面，如果条件允许的话，他会在祖国老去？而且，为什么他断定时日长短并无区别，然而如果没有什么阻止他的话，他会延长生命，且于年届高寿之时仍然愉悦地焕发青春？”&lt;/li&gt;
&lt;li&gt;他说，那些事物应当被轻视，但并不是为了不拥有，而是为了不焦虑地拥有。他不把它们从自己身边赶走，但在它们离开之时无忧无虑地送别。诚然，命运把财富存放在何处会更加安全呢——除了放在那它将收回财富，而归还者毫无怨言的地方？&lt;/li&gt;
&lt;li&gt;对于智者而言，用以展示他的灵魂的材料在财富中比在贫困中更加丰富，这有什么可怀疑的呢？因为在贫困之中，唯一一种德性就是不屈不挠、不被压垮；然而在财富之中，自制、慷慨、勤勉、条理和宽宏都有了广阔的空间。&lt;/li&gt;
&lt;li&gt;财富属于更可取的事物。&lt;/li&gt;
&lt;li&gt;“那么，”你说，“你为什么嘲笑我，既然财富在你那里和在我这里占据着同样的位置？”你想知道它占据着多么不同的位置吗？如果财富从我身边流走，它不会带走任何东西，除了它自己；如果它离开你的左右，你会瞠目结舌，感到自己失魂落魄。在我这儿，财富占据着一定的位置；在你那里，它占据了最高的位置。到头来，财富是属于我的，你是属于财富的。&lt;/li&gt;
&lt;li&gt;“怎么？”你说，“你赠予是为了收获回报吗？”相反，我是为了避免损失：赠予应当处于这样一种位置——它不必被索回，却能被反赠。恩惠应该像深埋的宝藏一样被安放，你不会将它从地里掘出，除非是确有必要。&lt;/li&gt;
&lt;li&gt;你没有理由认为有不需辛劳的德性。实际上，某些德性需要鞭策，某些德性则需要缰绳。&lt;/li&gt;
&lt;li&gt;“那么，如果我们都想占有财富，我，一个愚人，和你，一位智者，之间有什么差别？”有很多：因为财富在智者那里处于奴仆之地，而在愚人那里居于主人之位。智者不允许财富做任何事，而财富允许你们做所有事。你们，仿佛有人曾许诺你们永远拥有财富一样，习惯并依赖于它；而智者，正当他身处财富之中时，会比往常更多地考量贫困。&lt;/li&gt;
&lt;li&gt;一位统帅从来不会如此相信和平以至于不为战争做准备——这战争即使尚未进行，却已经宣布。华美的居所使你们傲慢自大，仿佛它不可能焚毁或倒塌；财产使你们惊叹失神，仿佛它置身于一切危险之外，仿佛你们的财产比命运拥有的力量所能消耗的还要多。&lt;/li&gt;
&lt;li&gt;你们游手好闲，享受财富却没有预见它的危险，就像野蛮人通常所做的那样，他们被包围而不认识攻城的器械，懒散地看着围城军队的辛劳，也不理解那远处搭建起来的东西有什么作用。同样的事也发生在你们身上：你们在自己的产业中萎靡不振，也不考量有多少不幸正在四周威胁着你们，眼看就要劫夺昂贵的战利品。然而，任何取走智者财富的人仍然将他所有的东西全部留在他的身边，因为他满足现状地活着，对未来无忧无虑。&lt;/li&gt;
&lt;li&gt;你们还有空闲检查他人的过失，或者评判任何人吗？‘为什么这个哲学家住得如此宽敞？为什么那个晚餐吃得这么讲究？’你们全身布满烂疮，却还留心别人的粉刺？这就像是一个人嘲笑极美的身体上的黑痣或疣子，而他自己却被恶心的疥疮所蚕食。&lt;/li&gt;
&lt;li&gt;责备柏拉图追求钱财吧，责备亚里士多德收受钱财吧，责备德谟克利特漠视钱财吧，责备伊壁鸠鲁耗费钱财吧！拿阿尔希比亚德和斐德若责难我本人吧，你们这些（……）一旦得以模仿我们的恶习便已然无比幸福的人！&lt;/li&gt;
&lt;li&gt;人类事务并非处于如此境况——即使你们对自己的处境所知甚少——以至于你们还留有如此多的空闲，得以摇唇鼓舌来侮辱比你们更好的人。&lt;/li&gt;
&lt;li&gt;你们对此一无所知，带着一脸同你们的命运不相称的表情，就像许多闲坐在竞技场或剧院之中的人，家中已经开始哭丧，只是噩耗尚未传报给他们。然而我从高处远眺，看见了这是怎样的风暴：它们或是威胁着你们，片刻之后便要撕裂它们的雨云；或是已经近在咫尺，正步步紧逼，要将你们和你们所拥有的一切席卷一空。进一步说呢？难道现在不也正有一场旋风——虽然你们几乎没有感觉到——旋转着、席卷着你们逃避和希求同样事物的灵魂，它们一时被抬至天穹绝顶，一时被摔在无底深渊（……）？&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<h2 id="导言">导言</h2>
<ul>
<li>我们可以这样说：塞涅卡的立场就是斯多亚派的立场，但某些个人的特点同样清晰可辨。</li>
<li>芝诺</li>
<li>幸福在于内在的统一与生活的和谐，而对于这一内在统一与和谐来说，同本性相一致的生活是其必要和充分条件。</li>
<li>理性首先必须在其中证明自身的领域是对事物善恶的评估。在伦理学研究的范围中，这也是不同哲学学派最为清晰地展示彼此差异的领域。斯多亚派的思想虽然复杂，但立场鲜明。唯一真正的善好（bonum）是道德的善好，亦即德性，唯一真正的败坏（malum）是道德的败坏，亦即恶习。所有其他的东西都是中性的（ἀδιάϕορα, indifferentia）。幸福的生活，与本性相一致的生活，理性引导的生活，其特殊之处在于它导向作为唯一的善好的德性。</li>
<li>修辞能力被看作文学——审美文化的本质所在，而这种文化本身——这在罗马是第一次——被看作是一种价值。在向公众雄辩（declamationes，本义为练习讲演）的过程中展示修辞能力，这甚至在一定意义上替代了不再可能实现的对政治决策的积极参与。在这样的环境下，一种新的修辞风格得到发展，而且这种风格影响到当时的文学（散文和诗歌），这一点也不让人惊讶。这种风格受到特殊条件的制约——同法庭演讲相反，雄辩的宗旨不再是通过说服而实现某个特定目标，而是仅仅要在此刻并且是为了此刻给听众留下深刻印象，吸引听众。因此，这些讲演的宏观结构变得不再重要。关键的是演讲包含精彩而令人难忘的片段，让听众一听就能有所理解。恰如其分的隐喻、机智的双关语、出乎意料的笑点、隽永的警句，成了这种新派修辞术及其影响下的文学所青睐的手段。</li>
<li>“你……培植德性也无非是因为希望从中获取某种享乐”。</li>
<li>没有人能够快乐地生活，除非他同时也正派地生活。</li>
<li>“让德性先行，让享乐跟随”。</li>
<li>“真正的快乐建立在德性之上”。</li>
<li>热衷于哲学的人心灵不受财富羁绊。</li>
<li>财富不是善好，但是有用。</li>
<li>某些德性需要鞭策，有些德性需要缰绳。</li>
<li>当作者试图向读者建议某种生活方式时，他自己的生活同他的教导有什么样的关系就成了尤为急迫的问题。</li>
<li>享受这些事物并不会妨碍不受它们羁绊的独立性，而且一旦境况变化，哲学家会毫无顾虑地将它们抛弃。</li>
<li>当塞涅卡明白如何离弃权力和财富这些值得偏好之物时，他最终也懂得了如何离弃生命这一值得偏好之物。随着皮索的密谋败露，塞涅卡被赐自缢，他坚定地、毫不犹豫地服从了这项命令。</li>
</ul>
<h2 id="论幸福生活">论幸福生活</h2>
<ul>
<li>获得幸福的生活如此之难，以至于一个人——如果他在路线上犯了错误——越是急切地走向它，他离它也就越遥远。如果那条路通往相反的方向，速度本身将会成为更大距离的原因。</li>
<li>当我们东溜西逛，不追随领路人，而是听从那些呼唤我们前往不同方向的人的嘈杂的呼喊和喧哗时，生命将在歧途上消磨殆尽；这生命是短暂的——即使我们日夜操劳以图获得善好的心灵。因此，我们必须确定我们的方向和途径，而且不能没有一位有经验的、探索过我们所前往的领域的人作为向导，因为这里的条件和其他旅途不尽相同：在那些旅途中，有标记好的路线，还有可以咨询的当地居民，不让我们走错；但是在这里，正是最常走、最热闹的路最具有欺骗性。</li>
<li>我们不能像羊群那样追随先行的群体，不朝着当去之处，而朝着众人所去之处前行。然而和以下这种行为相比，没有任何行为能把我们引入更大的败坏，那就是按照传闻行事，认为最好的就是那些受到热烈欢迎而被接受的事物，并且用许多的先例代替良好的范例，不根据理性却通过模仿来生活。</li>
<li>没有哪个人在自己跌倒时不把另一个人也带倒在自己身上，前面的人导致了其追随者的覆灭——在生活中也到处可见。没有人犯错误仅仅影响自己，他也是其他人错误的原因和始作俑者。因为效法前人是有害的，而且，当每一个人都宁愿轻信而非判断时，那么关于生活就从来没有判断，而常常只有轻信；而手手相传的错误把我们转来转去并掀翻在地。因为盲从他人的先例，我们走向毁灭；我们将会得到治疗——只要我们脱离众人。</li>
<li>人类事务并没有安排得那么好，以至于更好的东西取悦更多的人：大众是最坏之物的明证。</li>
<li>让我们探究什么事做起来最好，而非什么事大家最常做，以及什么事使我们拥有永恒的幸福，而非什么事得到群众——真理最坏的阐释者的赞同。</li>
<li>一切我至今所做的，我宁愿没有做；一切我以前所说的，当我再次想起时，就嫉妒哑巴；一切我以前所想要的，我视之为仇敌的诅咒；一切我以前所畏惧的，善好的诸神啊，比起我以前所欲求的，是多么无足轻重！我曾与许多人为敌，又从怨怼回到友谊——如果恶人之间也存在任何友谊的话；然而我和自己还没有友好相处。我曾倾尽全力让自己出类拔萃，并且靠着某样天资声名远扬，然而除了让自己成为众矢之的并为那些怀有恶意的人指明能刺痛我的地方以外，我又得到了什么呢？</li>
<li>你看见那些赞美有口才者、追捧有财富者、奉承有影响者以及吹嘘有权力者的人了吗？他们所有人，要么是敌人，要么—这是一样的—可能成为敌人。有多少人仰慕你，就有多少人妒恨你。我为何不去寻求一些事实上善好的、我可以感受到的而非用来炫耀的东西？那些被人注目、令人驻足、使人惊异地相互指点的东西，其实是外表光鲜亮丽，内里悲惨可怜。</li>
<li>幸福的生活是顺应自身本性的生活，使它出现除此以外别无他法：心灵首先要健康且永葆康泰，进而要勇健有力，然后要完美地忍耐，顺应时势，关注肉体以及与肉体相关的事物却不过分焦虑，最后要留意另一些为生活提供方便的事物，但不对其中任何东西过分着迷，利用命运的礼物而不做它的奴仆。</li>
<li>当那些刺激或者恐吓我们的东西被驱离后，永恒的宁静和自由会随之而来。因为在享乐和痛苦遭到蔑视之后，取代那些渺小脆弱并且因那些可耻行径而有害的事物的，是巨大的喜悦，稳定而平正，然后是灵魂的安宁、和谐以及不乏温和的崇高；因为所有野蛮都源自软弱。</li>
<li>如果我说“最高的善好是轻视无常之事且以德性为乐的灵魂”，或者说“它是不可战胜的灵魂之力，对于事务富有经验，行事温厚，且伴有丰沛的仁爱和对与之交游之人的关怀”。我们也可以如此定义，称这样一种人是幸福的：对他而言没有任何善好与败坏——除了善好和败坏的灵魂；他推崇道义，满足于德性，无常之事既不会将他抬高，也不能把他击碎；他不知道比他能够自给的善好更大的善好；对他而言真正的享乐将是对享乐的蔑视。</li>
<li>幸福生活是自由、正直、无畏、坚定、处于恐惧和欲望之外的灵魂；对它而言，唯一的善好便是道义，唯一的败坏便是丑恶，而其他的不过是既无损又无益于幸福生活的事物的琐碎集合，它们或来或往，却对最高的善好毫无增损。</li>
<li>不健全的人不是幸福的，而一个追求有害而非最好的事物的人不是健全的。</li>
<li>幸福的人是判断正确的人；幸福的人是无论当下境遇如何，都满足于自己的境况并与之友好相处的人；幸福的人是得到理性对他所有境况的认可的人。</li>
</ul>
<h2 id="2">2</h2>
<ul>
<li>一些事令人快乐却不正派，一些事则相反，极为正派但是艰难，要通过痛苦达成。</li>
<li>一些人是不幸的但并非缺乏享乐，相反，他们正是由于这享乐而不幸。倘若享乐已经将自身融入德性，这种事不会发生。事实上，德性经常缺乏享乐，也从不需要它。</li>
<li>为什么你们将不同乃至对立的事物放在一起？德性是一种崇高的事物，卓越而尊贵，不可战胜，不知疲倦；享乐低下卑微，奴颜婢膝，虚弱无力，势必倾覆，以妓院酒肆为驻地和居所。德性，你将在神殿之中遇见它，或在广场上，在元老院里；你会发现它驻守在城墙外，沾满灰尘，皮肤黝黑，双手粗糙。享乐，你会发现它时常在浴室、发汗室和那些见不得市政官的场所周围潜伏着，寻找阴暗之处，阴柔无力，浸着酒和油膏，肤色苍白，或是浓妆艳抹，涂抹着防腐的药剂。</li>
<li>本性处于变动之中的事物从不可靠——因此，那来去匆匆、刚发挥自身作用便迅速消亡的事物甚至不可能有任何实体，因为它趋向的正是自身终结之地，且在开始时就看向终点。</li>
<li>在善好的事物和败坏的事物之中均存在享乐，而且自身的耻辱带给卑劣者的快乐并不比卓越的行为带给正派人的少？正因为如此，古人训诫我们寻求最好的而非最快乐的生活，这样一来享乐就不是正直和善好的意愿的向导，而只是其同伴。因为我们必须以本性为向导，正是这本性，理性留心观察并向它咨询。</li>
<li>如果我们谨慎而勇敢地持守身体的天资和合于本性的禀赋，如同它们仅被赋予一日，转瞬即逝；如果我们不屈服于它们的奴役，并且外物不占有我们；如果受身体欢迎的以及来自外部的事物对于我们而言，处于援军和轻装士兵在军营中的位置——它们应当服从而非率领，这样才有益于心灵。</li>
<li>这样的人会是镇定而有条理的，并且在行事之中高尚而不乏和善。</li>
<li>我们的心灵应当做同样的事：当它跟随自己的感官并通过它们将自己延伸向外物之后，它应当是那些外物和自己的主人。</li>
<li>最高的善好就是灵魂的和谐一致，因为哪里有谐和统一哪里就一定有德性；恶习才和自己不一致。</li>
<li>“但是你，”他说，“培植德性也无非是因为希望从中获取某种享乐。”首先，即使德性会提供享乐，它也不因此就是为了享乐而被追求。因为它不是提供享乐，而是也提供享乐；它不是为享乐而辛劳，而是它的辛劳——尽管它追求的是其他事物——也附带收获了享乐。</li>
<li>就如同在为了种植作物而犁过的耕地中，一些花朵杂生其间。尽管它们赏心悦目，然而如此多的辛劳却不是为了这些花草而付出的——播种者自有其他目的，它们只是附带生长出来。同样，享乐不是德性的报酬也不是其原因，而是它的副产品，而且德性不是因为它取悦人而被赞成，而是如果它被赞成，它也取悦人。</li>
<li>最高的善好存在于最好的心灵的判断和习性本身之中，它一旦将自己的空间充满并以自己的界限将自身合围，最高的善好就已经达成，并且不再渴求更多，因为全体之外并无其他事物，它们并不比终点之后的路程多。</li>
<li>当你问我是为了什么而寻求德性的时候，你就错了，因为你在询问某种高于至高的事物。你问我在德性中寻找什么？它本身。因为它没有任何比自身更好的东西了，它本身就是自己的奖赏。这难道不够伟大吗？当我对你说“最高的善好是不可摧毁的灵魂的坚毅、远见、高尚、健康、自由、和谐以及美”时，你现在还要求这些品质所归向的某种更伟大的东西吗？你为什么跟我谈起享乐？我寻求的是人的善好而不是肚腹的善好，显然肚腹在牲畜和野兽那里更宽大。</li>
<li>然而谁不知道，正是那些最愚蠢的人最多地拥有你们所说的享乐，游手好闲的人充溢着快乐，而且灵魂自身推荐了种种扭曲的享乐方式？首先是妄自尊大，自命不凡，对他人的高傲不逊，对自己的境况盲目而短视的热爱，出于琐屑幼稚的原因的雀跃；此外是戏谑刻薄，以侮辱他人为乐的傲慢，怠惰灵魂的懒散和放荡。这灵魂流连于赏心乐事，因自己而昏昏欲睡。</li>
<li>你拥抱享乐，我限制它；你享受享乐，我利用它；你以它为最高的善好，我不以其为善好；为了它，你什么都做，我什么都不做。</li>
<li>但我们会看到，德性在那些如此侮蔑地对待它的人那里是否仍然是德性——它一旦撤离岗位，就无法拥有自己的名字了。同时，就当下讨论的问题而言，我要展示许多被享乐所占据的人，尽管命运向他们倾倒出它所有的馈赠，你还是必须承认他们是败坏的人。</li>
<li>任何走向德性的人，都给出了高贵天性的证明。追随享乐的人看起来孱弱、破碎，正在丧失男性气概，即将陷入耻辱—除非有人为他分辨享乐，以便他能知道，在它们之中哪些止于本性需求之内，哪些闷头向前冲、无休无止，而且越是被满足，就越难以满足。</li>
<li>来吧，让德性先行，每一步都将是安全的。过度享乐是有害的，但在德性中不需要害怕有任何过度，因为在它自身之中存在尺度；因自身的庞大而劳苦的事物不是善好。进一步说，对于禀有理性本性的生物，有什么事物比理性更适于被置于眼前呢？如果那种结合受到赞同，如果和这个随从走向幸福生活受到赞同，就让德性先行，让享乐跟随并且像影子一样围绕在身边。把德性这最为高贵的女主人当作侍女交给享乐，属于灵魂不能构想任何伟大事物的人。</li>
<li>那些将领导权交给了享乐的人在两方面都一无所有，因为他们失去了德性，而且不是他们拥有享乐，而是享乐拥有他们。</li>
<li>对于寻求败坏而非善好的人，得偿所愿是危险的。正如我们冒着辛劳和危险猎取野兽，而拥有那些被捕获的野兽也令人焦虑——它们时常将主人撕成碎片。</li>
<li>巨大的享乐也是如此：它们成为巨大的败坏，而且它们作为被捕获的对象却捕获了捕获者。</li>
<li>享乐越多、越大，那被民众称为快乐的人就越渺小，就是更多人的奴仆。</li>
<li>你不给德性一个坚实的、不可动摇的基础，而是命令它站在不稳定的地方，然而有什么像对侥幸的期待以及肉体的和影响肉体的事物的多变一样不稳定？如果他因享乐和痛苦的芒刺而动摇，他怎么能服从神明并以善好的灵魂接受发生的任何事，而且不抱怨命运，成为一个对自身际遇怀抱善意的解读者？如果他倾向于享乐的话，他甚至不是祖国善好的保护者和守卫者，也不是朋友的捍卫者。</li>
<li>任何出于宇宙的构造法则而必须忍耐的事物，就让它被勇敢地承受吧。我们已经被推向这一誓言：忍受属于凡人的一切，不被我们无力避免的事物所搅扰。我们出生于君主国，服从神明即是自由。</li>
</ul>
<h2 id="3">3</h2>
<ul>
<li>“然后呢？为了幸福地生活，德性就足够了吗？”难道那完美神圣的德性不是足够的，甚至是超乎足够的吗？因为，一个置身于对一切事物的欲望之外的人还能缺乏什么呢？一个把自己的一切都集中于自身的人还会从外界需求什么呢？但正在向德性前行的人，尽管他已经行进了很远，由于他仍然挣扎在凡人的诸事中，还是需要命运的些许垂青，直到他解开那绳结和尘世的所有锁链。那么，二者有什么区别？其他人被约束、被绑缚，乃至被撕扯，但这向着高处行进并把自己提升得更高的人拖着一条宽松的锁链，他还不自由，但已经几乎是自由的了。</li>
<li>我不是一位智者，而且，为了滋养你的恶意，也不会成为一位智者。因此，请不要要求我与至善之人等同，而是要求我比败坏之人好一点。每天从我的恶习中去除一些，并且检讨我的错误，这对我来说就足够了。</li>
<li>我还没有获得健康，甚至也不会获得，我为我的痛风调配的是缓解而不是根治的药，如果它发作的次数少一些并且不那么刺痛，我就满意了。但是跟你们比起来，跛足的人啊，我无异于赛跑选手。我说这些并非代表我自己——因为我深陷于各种恶习之中——而是代表那已经取得了一些成绩的人。</li>
<li>你说：“你说一套做一套。”这，最恶意的以及对最好的人最敌视的人们哪，是责备柏拉图的话，是责备伊壁鸠鲁的话，也是责备芝诺的话，因为他们所有人说的都不是自己事实上是如何生活的，而是所有人以及自己应该如何生活。我谈论的是德性而非我自己，而且，当我声讨恶习的时候，我首先声讨我自己的恶习——一旦我有能力，我就会过应该过的生活。</li>
<li>你们评论一个人的生，另一个人的死，并且朝着因某些非凡的可赞之举而伟大的人物的名字狂吠，就像小狗冲着走近的陌生人狂吠一样。因为无人被视为好人于你们有利，仿佛他人的德性是对你们缺点的指责一样。你们心怀嫉妒，把他人的光辉业绩和你们的卑鄙相比较，而你们不知道这大胆的举动会为你们带来多少损失。因为如果那些追随德性的人尚且贪婪放荡而野心勃勃，你们这些连德性之名都深以为恨的人又是什么？</li>
<li>你们否认有任何人践行了他所说的，或者按照他言谈中的榜样生活。这有什么奇怪的呢——既然他们所说的是勇毅宏大之事，是要从人世的一切狂风骤雨中抽身？当他们努力把自己从十字架上卸下——你们每一个人却自己把自己的钉子钉上去——他们即使经历刑罚，也只是挂在一根刑柱上；但这些自己惩罚自己的人，却被与他们欲望一样多的十字架所撕裂。但是他们满口诽谤，在诬蔑他人一事上巧妙而优雅，我不会相信他们有空顾及此事——除非还有些人从示众架上向观众吐口水。</li>
<li>我不会吝啬地守护，也不会奢侈地挥霍我拥有的任何东西，我认为我拥有任何事物的程度都不会超过拥有被妥善施予的事物。我将不会根据数目、重量或者任何评价——除非是对于接受者的评价——来衡量恩惠，在我看来，配得上的人所收到的永远不算多。我做任何事都不会是为了名声，我做的一切都是出于良心，我将相信，我有意识地做的每一件事都发生在众人的注视之下。</li>
<li>对我来说吃喝的目的将在于平息自然的需求，而不是填满或清空肠胃。对于朋友我将愉悦可亲，对于敌人我将温和平易，我将在被请求之前就接受请求，甚至会跑去欢迎正派的人的恳求。我将知道我的祖国即是世界，而它的主宰即是诸神，他们立于我之上，在我的周围，做我言行的审查者。当自然要索回我的灵魂或者理性要舍弃它时，我将离开这个世界，证明我热爱过良知和善好的追求，也没有妨害过任何人的自由，更不用说我自己的自由了。</li>
<li>位打算、希望、尝试去做这些事的人，将接近诸神；诚然，即使他没能到达，也是在伟大的挑战中失败的。</li>
<li>“为什么那人既热衷于哲学，却又作为如此一位富豪而活着呢？为什么他声称钱财应当被轻视却又占有，认为生命应当被轻视却又活着，认为健康应当被轻视，却又无比用心地保持它，希望它尽可能地好？为什么一方面他认为流放不过是空洞的名词，还说‘换换地方又有什么坏处’，然而另一方面，如果条件允许的话，他会在祖国老去？而且，为什么他断定时日长短并无区别，然而如果没有什么阻止他的话，他会延长生命，且于年届高寿之时仍然愉悦地焕发青春？”</li>
<li>他说，那些事物应当被轻视，但并不是为了不拥有，而是为了不焦虑地拥有。他不把它们从自己身边赶走，但在它们离开之时无忧无虑地送别。诚然，命运把财富存放在何处会更加安全呢——除了放在那它将收回财富，而归还者毫无怨言的地方？</li>
<li>对于智者而言，用以展示他的灵魂的材料在财富中比在贫困中更加丰富，这有什么可怀疑的呢？因为在贫困之中，唯一一种德性就是不屈不挠、不被压垮；然而在财富之中，自制、慷慨、勤勉、条理和宽宏都有了广阔的空间。</li>
<li>财富属于更可取的事物。</li>
<li>“那么，”你说，“你为什么嘲笑我，既然财富在你那里和在我这里占据着同样的位置？”你想知道它占据着多么不同的位置吗？如果财富从我身边流走，它不会带走任何东西，除了它自己；如果它离开你的左右，你会瞠目结舌，感到自己失魂落魄。在我这儿，财富占据着一定的位置；在你那里，它占据了最高的位置。到头来，财富是属于我的，你是属于财富的。</li>
<li>“怎么？”你说，“你赠予是为了收获回报吗？”相反，我是为了避免损失：赠予应当处于这样一种位置——它不必被索回，却能被反赠。恩惠应该像深埋的宝藏一样被安放，你不会将它从地里掘出，除非是确有必要。</li>
<li>你没有理由认为有不需辛劳的德性。实际上，某些德性需要鞭策，某些德性则需要缰绳。</li>
<li>“那么，如果我们都想占有财富，我，一个愚人，和你，一位智者，之间有什么差别？”有很多：因为财富在智者那里处于奴仆之地，而在愚人那里居于主人之位。智者不允许财富做任何事，而财富允许你们做所有事。你们，仿佛有人曾许诺你们永远拥有财富一样，习惯并依赖于它；而智者，正当他身处财富之中时，会比往常更多地考量贫困。</li>
<li>一位统帅从来不会如此相信和平以至于不为战争做准备——这战争即使尚未进行，却已经宣布。华美的居所使你们傲慢自大，仿佛它不可能焚毁或倒塌；财产使你们惊叹失神，仿佛它置身于一切危险之外，仿佛你们的财产比命运拥有的力量所能消耗的还要多。</li>
<li>你们游手好闲，享受财富却没有预见它的危险，就像野蛮人通常所做的那样，他们被包围而不认识攻城的器械，懒散地看着围城军队的辛劳，也不理解那远处搭建起来的东西有什么作用。同样的事也发生在你们身上：你们在自己的产业中萎靡不振，也不考量有多少不幸正在四周威胁着你们，眼看就要劫夺昂贵的战利品。然而，任何取走智者财富的人仍然将他所有的东西全部留在他的身边，因为他满足现状地活着，对未来无忧无虑。</li>
<li>你们还有空闲检查他人的过失，或者评判任何人吗？‘为什么这个哲学家住得如此宽敞？为什么那个晚餐吃得这么讲究？’你们全身布满烂疮，却还留心别人的粉刺？这就像是一个人嘲笑极美的身体上的黑痣或疣子，而他自己却被恶心的疥疮所蚕食。</li>
<li>责备柏拉图追求钱财吧，责备亚里士多德收受钱财吧，责备德谟克利特漠视钱财吧，责备伊壁鸠鲁耗费钱财吧！拿阿尔希比亚德和斐德若责难我本人吧，你们这些（……）一旦得以模仿我们的恶习便已然无比幸福的人！</li>
<li>人类事务并非处于如此境况——即使你们对自己的处境所知甚少——以至于你们还留有如此多的空闲，得以摇唇鼓舌来侮辱比你们更好的人。</li>
<li>你们对此一无所知，带着一脸同你们的命运不相称的表情，就像许多闲坐在竞技场或剧院之中的人，家中已经开始哭丧，只是噩耗尚未传报给他们。然而我从高处远眺，看见了这是怎样的风暴：它们或是威胁着你们，片刻之后便要撕裂它们的雨云；或是已经近在咫尺，正步步紧逼，要将你们和你们所拥有的一切席卷一空。进一步说呢？难道现在不也正有一场旋风——虽然你们几乎没有感觉到——旋转着、席卷着你们逃避和希求同样事物的灵魂，它们一时被抬至天穹绝顶，一时被摔在无底深渊（……）？</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 42</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-42/</link>
      <pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-42/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/check-if-number-has-equal-digit-count-and-digit-value/&#34;&gt;2283. 判断一个数的数字计数是否等于数位的值&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个下标从 &lt;strong&gt;0&lt;/strong&gt; 开始长度为 &lt;code&gt;n&lt;/code&gt; 的字符串 &lt;code&gt;num&lt;/code&gt; ，它只包含数字。&lt;/p&gt;
&lt;p&gt;如果对于 &lt;strong&gt;每个&lt;/strong&gt; &lt;code&gt;0 &amp;lt;= i &amp;lt; n&lt;/code&gt; 的下标 &lt;code&gt;i&lt;/code&gt; ，都满足数位 &lt;code&gt;i&lt;/code&gt; 在 &lt;code&gt;num&lt;/code&gt; 中出现了 &lt;code&gt;num[i]&lt;/code&gt;次，那么请你返回 &lt;code&gt;true&lt;/code&gt; ，否则返回 &lt;code&gt;false&lt;/code&gt; 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;数字&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中出现了一次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;数字&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中出现了两次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;数字&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中出现了一次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;数字&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;中出现了零次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1210&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;满足题目要求条件&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以返回&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;digitCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;postion&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;postion&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;postion&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;postion&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;只需求得下标字符&lt;code&gt;i&lt;/code&gt;在字符串中出现的次数与&lt;code&gt;num[i]&lt;/code&gt;相等即可。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2409/240909-marmosets.html&#34;&gt;Marmoset monkeys call each other by name - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/check-if-number-has-equal-digit-count-and-digit-value/">2283. 判断一个数的数字计数是否等于数位的值</a></p>
<p>给你一个下标从 <strong>0</strong> 开始长度为 <code>n</code> 的字符串 <code>num</code> ，它只包含数字。</p>
<p>如果对于 <strong>每个</strong> <code>0 &lt;= i &lt; n</code> 的下标 <code>i</code> ，都满足数位 <code>i</code> 在 <code>num</code> 中出现了 <code>num[i]</code>次，那么请你返回 <code>true</code> ，否则返回 <code>false</code> 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">num</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;1&#39;</span> <span class="err">。</span><span class="nx">数字</span> <span class="mi">0</span> <span class="nx">在</span> <span class="nx">num</span> <span class="nx">中出现了一次</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">num</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;2&#39;</span> <span class="err">。</span><span class="nx">数字</span> <span class="mi">1</span> <span class="nx">在</span> <span class="nx">num</span> <span class="nx">中出现了两次</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">num</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;1&#39;</span> <span class="err">。</span><span class="nx">数字</span> <span class="mi">2</span> <span class="nx">在</span> <span class="nx">num</span> <span class="nx">中出现了一次</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">num</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span> <span class="err">。</span><span class="nx">数字</span> <span class="mi">3</span> <span class="nx">在</span> <span class="nx">num</span> <span class="nx">中出现了零次</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;1210&#34;</span> <span class="nx">满足题目要求条件</span><span class="err">，</span><span class="nx">所以返回</span> <span class="kc">true</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">digitCount</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">num</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">num</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">num</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">({</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">n</span> <span class="p">});</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nb">Number</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span> <span class="o">!==</span> <span class="nx">getCount</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">num</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">getCount</span><span class="p">(</span><span class="kr">char</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">postion</span> <span class="o">=</span> <span class="nx">s</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="kr">char</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="k">while</span> <span class="p">(</span><span class="nx">postion</span> <span class="o">!==-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span><span class="o">++</span>
</span></span><span class="line"><span class="cl">            <span class="nx">postion</span> <span class="o">=</span> <span class="nx">s</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="kr">char</span><span class="p">,</span> <span class="nx">postion</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">count</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>只需求得下标字符<code>i</code>在字符串中出现的次数与<code>num[i]</code>相等即可。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2409/240909-marmosets.html">Marmoset monkeys call each other by name - Breaking News English Lesson</a></p>
<p>研究人员表示，狨猴会叫出对方的名字，类似于人类识别彼此的方式。这种 20 厘米长的灵长类动物原产于南美洲。耶路撒冷希伯来大学的科学家研究了 10 只狨猴的社会互动。研究小组发现，这些动物对他们组中的其他猴子使用了独特的叫声。该研究的合著者大卫·奥马尔博士说，狨猴是已知的第一批使用名字的非人类灵长类动物。研究人员将狨猴分为各种配对。然后，他们使用人工智能分析了 50,000 多只猴子的叫声。这使科学家们能够确定这些动物彼此都有名字。</p>
<p>Omer 博士认为，这些发现可以揭示人类语言是如何进化的。他说：“直到最近，人们还认为人类语言是一个无中生有的奇异现象。我们开始看到证据表明情况并非如此。Omer 假设了狨猴是如何发展出一种叫名系统的。他说：“狨猴生活在一夫一妻制的小家庭群体中，就像人类一样一起照顾它们的幼崽。这些相似性表明，他们面临着与我们早期前语言祖先相当的进化社会挑战。其他已知能通过名字识别同类生物的生物是海豚和大象。</p>
<h2 id="tip">Tip</h2>
<p>在<code>Windows</code>系统中，要删除多层级的文件夹，比如项目依赖包<code>node_module</code>，它的目录可能包含有成千上万的文件和子目录，因为系统删除时会将这些文件逐一检查，读取文件大小、权限验证等，会额外增加删除所需的时间，如果电脑配置不太行，真的让人受不了。</p>
<p>基于博文<a href="https://blog.csdn.net/xiaoerbuyu1233/article/details/108490963">《Windows下快速删除上万个文件和子目录(快速删除文件) 命令行cmd快速删除文件夹》</a>提供的解决方案如下：</p>
<p>在<code>D:\tools\FASTDEL</code>中新建一个<code>fastdel.bat</code>文件，然后复制下面的代码：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl"><span class="p">@</span><span class="k">ECHO</span> OFF
</span></span><span class="line"><span class="cl"><span class="k">ECHO</span> Delete Folder: <span class="nv">%CD%</span>
</span></span><span class="line"><span class="cl"><span class="k">PAUSE</span>
</span></span><span class="line"><span class="cl"><span class="k">SET</span> <span class="nv">FOLDER</span><span class="p">=</span><span class="nv">%CD%</span>
</span></span><span class="line"><span class="cl"><span class="k">CD</span> ..
</span></span><span class="line"><span class="cl"><span class="k">DEL</span> /F/Q/S <span class="s2">&#34;</span><span class="nv">%FOLDER%</span><span class="s2">\*&#34;</span> <span class="p">&gt;</span> NUL
</span></span><span class="line"><span class="cl"><span class="k">RMDIR</span> /Q/S <span class="s2">&#34;</span><span class="nv">%FOLDER%</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">EXIT</span>
</span></span></code></pre></div><p>保存之后，打开系统环境变量配置页面，在<code>Path</code>路径加上<code>D:\tools\FASTDEL</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409211001590.png"></p>
<p>之后，在你要删除的文件目录下，打开<code>Windows PowerShell</code>命令窗口，然后输入命令<code>FASTDEL</code>进行删除即可，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409211020986.png"></p>
<h2 id="share">Share</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202410021756188.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 41</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-41/</link>
      <pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-41/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/find-all-anagrams-in-a-string/&#34;&gt;438. 找到字符串中所有字母异位词&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定两个字符串 &lt;code&gt;s&lt;/code&gt; 和 &lt;code&gt;p&lt;/code&gt;，找到 &lt;code&gt;s&lt;/code&gt; 中所有 &lt;code&gt;p&lt;/code&gt; 的 异位词的子串，返回这些子串的起始索引。不考虑答案输出的顺序。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cbaebabacd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;起始索引等于&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的子串是&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cba&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;它是&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的异位词&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;起始索引等于&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的子串是&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bac&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;它是&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的异位词&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;findAnagrams&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;pCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;isEqual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;charCodeAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;isEqual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sCount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isEqual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;count1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;count1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;创建&lt;code&gt;pCount&lt;/code&gt;和&lt;code&gt;sCount&lt;/code&gt;字母表，通过一个字母的&lt;code&gt;Unicode&lt;/code&gt;编码减去字母a的&lt;code&gt;Unicode&lt;/code&gt;编码，得到其在字母表中的位置，并且将其计数，通过滑动窗口，左减右加，最后通过对比相同位置计数是否相等，来确定是否是字母异位词。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2409/240902-eye-colour-change.html&#34;&gt;Eye colour change is riskiest cosmetic surgery - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/find-all-anagrams-in-a-string/">438. 找到字符串中所有字母异位词</a></p>
<p>给定两个字符串 <code>s</code> 和 <code>p</code>，找到 <code>s</code> 中所有 <code>p</code> 的 异位词的子串，返回这些子串的起始索引。不考虑答案输出的顺序。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;cbaebabacd&#34;</span><span class="p">,</span> <span class="nx">p</span> <span class="o">=</span> <span class="s2">&#34;abc&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span>
</span></span><span class="line"><span class="cl"><span class="nx">起始索引等于</span> <span class="mi">0</span> <span class="nx">的子串是</span> <span class="s2">&#34;cba&#34;</span><span class="p">,</span> <span class="nx">它是</span> <span class="s2">&#34;abc&#34;</span> <span class="nx">的异位词</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">起始索引等于</span> <span class="mi">6</span> <span class="nx">的子串是</span> <span class="s2">&#34;bac&#34;</span><span class="p">,</span> <span class="nx">它是</span> <span class="s2">&#34;abc&#34;</span> <span class="nx">的异位词</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">findAnagrams</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">p</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">pCount</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="mi">26</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> 
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">sCount</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="mi">26</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="kr">char</span> <span class="k">of</span> <span class="nx">p</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">pCount</span><span class="p">[</span><span class="kr">char</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">-</span> <span class="s1">&#39;a&#39;</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)]</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sCount</span><span class="p">[</span><span class="nx">s</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="o">-</span> <span class="s1">&#39;a&#39;</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)]</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">isEqual</span><span class="p">(</span><span class="nx">pCount</span><span class="p">,</span> <span class="nx">sCount</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sCount</span><span class="p">[</span><span class="nx">s</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span> <span class="o">-</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="o">-</span> <span class="s1">&#39;a&#39;</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)]</span> <span class="o">-=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sCount</span><span class="p">[</span><span class="nx">s</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="o">-</span> <span class="s1">&#39;a&#39;</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)]</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">isEqual</span><span class="p">(</span><span class="nx">pCount</span><span class="p">,</span> <span class="nx">sCount</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span> <span class="o">-</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">isEqual</span><span class="p">(</span><span class="nx">count1</span><span class="p">,</span> <span class="nx">count2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="mi">26</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">count1</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">!==</span> <span class="nx">count2</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>创建<code>pCount</code>和<code>sCount</code>字母表，通过一个字母的<code>Unicode</code>编码减去字母a的<code>Unicode</code>编码，得到其在字母表中的位置，并且将其计数，通过滑动窗口，左减右加，最后通过对比相同位置计数是否相等，来确定是否是字母异位词。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2409/240902-eye-colour-change.html">Eye colour change is riskiest cosmetic surgery - Breaking News English Lesson</a></p>
<p>全世界越来越多的人选择整容手术来提升他们的容貌。潜在患者可能不知道的是，改变眼睛颜色的手术是风险最大的。在线眼镜店 Overnight Glasses 进行的研究断言，眼部颜色手术有92%的可能性出现并发症。眼睛颜色变化在研究人员最危险的整容手术名单中名列前茅。此类手术包括虹膜植入物和激光色素去除。还有一个称为角膜色素沉着的程序。这是一种永久性的眼睛颜色变化，其中使用精密激光技术将特殊的着色剂插入眼睛中。</p>
<p>今年早些时候，美国眼科学会发布了对眼睛变色手术的警告。Ashley Brissette 博士强调了可能出错的事情。这些包括染料泄漏、过敏反应、感染、对光敏感、可能导致混浊或视力丧失的角膜损伤，以及最终失明。她说：“我们用眼睛做的任何事情，都必须非常非常小心。研究人员表示，恢复时间可能长达两个月，手术的平均费用为 12,000 美元。眼科医生 Nicole Bajic 建议戴彩色隐形眼镜，而不是动刀。她说，“可以给你你想要的外观，而不会危及你的眼睛健康”。</p>
<h2 id="tip">Tip</h2>
<p>在使用<code>npm i</code>命令给项目安装依赖时，出现卡住的情况，等了好久，也没见成功或者中断，这就无法入手去解决问题。使用命令<code>npm install --verbose</code>可以看到安装的更多信息，便于排查问题。</p>
<h2 id="share">Share</h2>
<p>“珍惜现在，就是穿越时空。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 40</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-40/</link>
      <pubDate>Thu, 19 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-40/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/rotate-array/&#34;&gt;189. 轮转数组&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个整数数组 &lt;code&gt;nums&lt;/code&gt;，将数组中的元素向右轮转 &lt;code&gt;k&lt;/code&gt; 个位置，其中 &lt;code&gt;k&lt;/code&gt; 是非负数。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;向右轮转&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;步&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;向右轮转&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;步&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;向右轮转&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;步&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;rotate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;middlePart&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;splice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;unshift&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(...&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;middlePart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;通过示例1，可以找到规律，元素向右轮转了k个位置，相当于从 &lt;code&gt;nums.length - count&lt;/code&gt; 位置截取然后再添加到数组的开头位置。如果&lt;code&gt;k&lt;/code&gt;的值等于数组长度，那么，经过向右轮转之后，各元素还是原位。因此，使用 &lt;code&gt;k % nums.length&lt;/code&gt; 取余，处理当k大于数组长度的情况。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2408/240812-emotional-attachment-to-ai.html&#34;&gt;1Scientists fear people will fall in love with AI voices - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;拥有 ChatGPT 的公司 OpenAI 担心人们可能会在情感上依赖人工智能的声音。该公司上周向用户发布了一种新的“高级语音模式”。聊天机器人配备了一系列栩栩如生的声音，这些声音与人声几乎没有区别。他们可以实时进行真实的对话，在适当的时间大笑，用“嗯”、“啊”和“嗯”插话，他们可以适应被打断。OpenAI 的一份报告指出，新发布的、听起来像人的声音可能会导致人们依赖 AI 来陪伴，甚至浪漫和爱情。它警告说：“用户可能会与 AI 建立社交关系，从而减少他们对人类互动的需求。&lt;/p&gt;
&lt;p&gt;OpenAI 报告警告说，未来的聊天机器人可能会从根本上改变社会。它们将重塑我们与家人、朋友和同事的互动方式。他们甚至可能篡夺人类之间的交流。该报告指出了新工具的好处。这些包括给孤独的人带来安慰和友谊，给那些缺乏自信的人信心。报告称，人们可能会获得足够的信心来开始在现实世界中约会。另一方面，聊天机器人可能会导致人们变得更粗鲁、更不耐烦和更自私。Wired.com 写道，新的聊天机器人包括“潜在的&amp;hellip;&amp;hellip;放大社会偏见，传播虚假信息，并帮助开发化学或生物武器”。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在运行&lt;code&gt;electron-vue&lt;/code&gt;项目时，打算把&lt;code&gt;node_modules&lt;/code&gt;删除了再重新安装，却提示&lt;code&gt;node_modules/electron&lt;/code&gt;文件夹正在被使用，删除失败。然后，把相关窗口都关闭了还是不行，猜测是有关联的进程没有关闭，所以，就看下怎么处理。步骤如下：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/rotate-array/">189. 轮转数组</a></p>
<p>给定一个整数数组 <code>nums</code>，将数组中的元素向右轮转 <code>k</code> 个位置，其中 <code>k</code> 是非负数。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">],</span> <span class="nx">k</span> <span class="o">=</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span>
</span></span><span class="line"><span class="cl"><span class="nx">向右轮转</span> <span class="mi">1</span> <span class="nx">步</span><span class="o">:</span> <span class="p">[</span><span class="mi">7</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">向右轮转</span> <span class="mi">2</span> <span class="nx">步</span><span class="o">:</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">向右轮转</span> <span class="mi">3</span> <span class="nx">步</span><span class="o">:</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">rotate</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">k</span> <span class="o">&lt;=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">count</span> <span class="o">=</span> <span class="nx">k</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">count</span> <span class="o">=</span> <span class="nx">k</span> <span class="o">%</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">middlePart</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="nx">count</span><span class="p">,</span> <span class="nx">count</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="nx">nums</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(...</span><span class="nx">middlePart</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">nums</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>通过示例1，可以找到规律，元素向右轮转了k个位置，相当于从 <code>nums.length - count</code> 位置截取然后再添加到数组的开头位置。如果<code>k</code>的值等于数组长度，那么，经过向右轮转之后，各元素还是原位。因此，使用 <code>k % nums.length</code> 取余，处理当k大于数组长度的情况。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2408/240812-emotional-attachment-to-ai.html">1Scientists fear people will fall in love with AI voices - Breaking News English Lesson</a></p>
<p>拥有 ChatGPT 的公司 OpenAI 担心人们可能会在情感上依赖人工智能的声音。该公司上周向用户发布了一种新的“高级语音模式”。聊天机器人配备了一系列栩栩如生的声音，这些声音与人声几乎没有区别。他们可以实时进行真实的对话，在适当的时间大笑，用“嗯”、“啊”和“嗯”插话，他们可以适应被打断。OpenAI 的一份报告指出，新发布的、听起来像人的声音可能会导致人们依赖 AI 来陪伴，甚至浪漫和爱情。它警告说：“用户可能会与 AI 建立社交关系，从而减少他们对人类互动的需求。</p>
<p>OpenAI 报告警告说，未来的聊天机器人可能会从根本上改变社会。它们将重塑我们与家人、朋友和同事的互动方式。他们甚至可能篡夺人类之间的交流。该报告指出了新工具的好处。这些包括给孤独的人带来安慰和友谊，给那些缺乏自信的人信心。报告称，人们可能会获得足够的信心来开始在现实世界中约会。另一方面，聊天机器人可能会导致人们变得更粗鲁、更不耐烦和更自私。Wired.com 写道，新的聊天机器人包括“潜在的&hellip;&hellip;放大社会偏见，传播虚假信息，并帮助开发化学或生物武器”。</p>
<h2 id="tip">Tip</h2>
<p>在运行<code>electron-vue</code>项目时，打算把<code>node_modules</code>删除了再重新安装，却提示<code>node_modules/electron</code>文件夹正在被使用，删除失败。然后，把相关窗口都关闭了还是不行，猜测是有关联的进程没有关闭，所以，就看下怎么处理。步骤如下：</p>
<p>打开任务管理器 ➔ 性能 ➔ CPU ➔ 打开资源监视器 ➔ 关联的句柄 ➔ 搜索句柄electron ➔ 右键结束进程。</p>
<h2 id="share">Share</h2>
<p>查理·芒格的“大猩猩理论”：一个聪明人进入一个有大猩猩的房间，解释他的想法是什么，而那个大猩猩只是坐在那里吃它的香蕉。结束这段谈话后，那个解释的人出来时一定变得更聪明了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 39</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-39/</link>
      <pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-39/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/check-if-n-and-its-double-exist/&#34;&gt;1346. 检查整数及其两倍数是否存在&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;arr&lt;/code&gt;，请你检查是否存在两个整数 &lt;code&gt;N&lt;/code&gt; 和 &lt;code&gt;M&lt;/code&gt;，满足 &lt;code&gt;N&lt;/code&gt; 是 &lt;code&gt;M&lt;/code&gt; 的两倍（即，&lt;code&gt;N = 2 * M&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;更正式地，检查是否存在两个下标 &lt;code&gt;i&lt;/code&gt; 和 &lt;code&gt;j&lt;/code&gt; 满足：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i != j&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0 &amp;lt;= i, j &amp;lt; arr.length&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arr[i] == 2 * arr[j]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;N&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;是&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;M&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的两倍&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;即&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;checkIfExist&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;includes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;把整数数组中的每个整数都乘以2，然后验证其值是否和数组中油相等的存在，如果存在，并且它的下标并不相等（为了排除&lt;code&gt;0*2=0&lt;/code&gt;的情况），则证明整数及其两倍数存在。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2408/240805-mercury-diamonds.html&#34;&gt;18-km wide diamond layer on Mercury, says study&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;美国著名影星玛丽莲·梦露曾唱过一首著名的歌:“钻石是女孩最好的朋友”。比利时列日大学的科学家们相信，他们已经发掘出了数量巨大的这种宝石。在水星的地壳下可能有一个18公里宽的宝石层。离我们最近的行星邻居很可能是天上的一颗宝石。研究人员测试了大约45亿年前水星是如何形成的。这颗行星是从宇宙尘埃和气体云的旋转中演化而来的。经过数百万年的时间，尘埃被压缩成石墨，石墨的化学性质与钻石相同。两者都是碳元素的固体形式。水星上的钻石不太可能被开采出来，因为它们在地表以下约500公里处。&lt;/p&gt;
&lt;p&gt;研究人员使用一种被称为砧压机的机器来模拟水星形成的条件。这台印刷机是用来制造人造钻石的。研究人员在石墨胶囊内混合了各种元素。其中包括硅、镁和铝。太空舱承受的压力是地球上的7万倍。它被加热到2000摄氏度的温度。首席研究员推测水星上的钻石。他说:“钻石只由碳构成，所以它们应该与我们在地球上所知道的相似……它们会像纯钻石。”科学家们相信在地球表面下有一千万亿吨钻石。专家表示，这些隐藏的宝石的价值几乎无法估量。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;使用&lt;code&gt;Chrome&lt;/code&gt;访问&lt;code&gt;HTTP&lt;/code&gt;网站时，因为浏览器自动转为&lt;code&gt;HTTPS&lt;/code&gt;导致访问失败，查了下网上的解决方案，如下所示：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在&lt;code&gt;Chrome&lt;/code&gt;浏览器地址栏输入&lt;code&gt;chrome://net-internals/#hsts&lt;/code&gt;并回车。&lt;/li&gt;
&lt;li&gt;找到页面中的&lt;code&gt;Delete domain security policies&lt;/code&gt;部分。&lt;/li&gt;
&lt;li&gt;输入导致问题的网站域名。&lt;/li&gt;
&lt;li&gt;点击&lt;code&gt;Delete&lt;/code&gt;按钮删除该域名的安全策略。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;p&gt;前些天，早上过来公司，打开菜鸟教程网站，看了下正则表达式的内容，然后看了“关于我们”一栏，里面有句话说得蛮好的：“我们坚持一件事情，并不是因为这样做了会有效果，而是坚信，这样做是对的。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/check-if-n-and-its-double-exist/">1346. 检查整数及其两倍数是否存在</a></p>
<p>给你一个整数数组 <code>arr</code>，请你检查是否存在两个整数 <code>N</code> 和 <code>M</code>，满足 <code>N</code> 是 <code>M</code> 的两倍（即，<code>N = 2 * M</code>）。</p>
<p>更正式地，检查是否存在两个下标 <code>i</code> 和 <code>j</code> 满足：</p>
<ul>
<li><code>i != j</code></li>
<li><code>0 &lt;= i, j &lt; arr.length</code></li>
<li><code>arr[i] == 2 * arr[j]</code></li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">N</span> <span class="o">=</span> <span class="mi">10</span> <span class="nx">是</span> <span class="nx">M</span> <span class="o">=</span> <span class="mi">5</span> <span class="nx">的两倍</span><span class="err">，</span><span class="nx">即</span> <span class="mi">10</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">5</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">checkIfExist</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kr">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">m</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">index</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">m</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">index</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="nx">index</span> <span class="o">!=</span> <span class="nx">i</span>
</span></span><span class="line"><span class="cl">  <span class="p">})</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="nx">result</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>把整数数组中的每个整数都乘以2，然后验证其值是否和数组中油相等的存在，如果存在，并且它的下标并不相等（为了排除<code>0*2=0</code>的情况），则证明整数及其两倍数存在。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2408/240805-mercury-diamonds.html">18-km wide diamond layer on Mercury, says study</a></p>
<p>美国著名影星玛丽莲·梦露曾唱过一首著名的歌:“钻石是女孩最好的朋友”。比利时列日大学的科学家们相信，他们已经发掘出了数量巨大的这种宝石。在水星的地壳下可能有一个18公里宽的宝石层。离我们最近的行星邻居很可能是天上的一颗宝石。研究人员测试了大约45亿年前水星是如何形成的。这颗行星是从宇宙尘埃和气体云的旋转中演化而来的。经过数百万年的时间，尘埃被压缩成石墨，石墨的化学性质与钻石相同。两者都是碳元素的固体形式。水星上的钻石不太可能被开采出来，因为它们在地表以下约500公里处。</p>
<p>研究人员使用一种被称为砧压机的机器来模拟水星形成的条件。这台印刷机是用来制造人造钻石的。研究人员在石墨胶囊内混合了各种元素。其中包括硅、镁和铝。太空舱承受的压力是地球上的7万倍。它被加热到2000摄氏度的温度。首席研究员推测水星上的钻石。他说:“钻石只由碳构成，所以它们应该与我们在地球上所知道的相似……它们会像纯钻石。”科学家们相信在地球表面下有一千万亿吨钻石。专家表示，这些隐藏的宝石的价值几乎无法估量。</p>
<h2 id="tip">Tip</h2>
<p>使用<code>Chrome</code>访问<code>HTTP</code>网站时，因为浏览器自动转为<code>HTTPS</code>导致访问失败，查了下网上的解决方案，如下所示：</p>
<ol>
<li>在<code>Chrome</code>浏览器地址栏输入<code>chrome://net-internals/#hsts</code>并回车。</li>
<li>找到页面中的<code>Delete domain security policies</code>部分。</li>
<li>输入导致问题的网站域名。</li>
<li>点击<code>Delete</code>按钮删除该域名的安全策略。</li>
</ol>
<h2 id="share">Share</h2>
<p>前些天，早上过来公司，打开菜鸟教程网站，看了下正则表达式的内容，然后看了“关于我们”一栏，里面有句话说得蛮好的：“我们坚持一件事情，并不是因为这样做了会有效果，而是坚信，这样做是对的。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 38</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-38/</link>
      <pubDate>Fri, 13 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-38/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/&#34;&gt;2432. 处理用时最长的那个任务的员工&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;共有 &lt;code&gt;n&lt;/code&gt; 位员工，每位员工都有一个从 &lt;code&gt;0&lt;/code&gt; 到 &lt;code&gt;n - 1&lt;/code&gt; 的唯一 id 。&lt;/p&gt;
&lt;p&gt;给你一个二维整数数组 &lt;code&gt;logs&lt;/code&gt; ，其中 &lt;code&gt;logs[i] = [idi, leaveTimei]&lt;/code&gt; ：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;idi&lt;/code&gt; 是处理第 &lt;code&gt;i&lt;/code&gt; 个任务的员工的 id ，且&lt;/li&gt;
&lt;li&gt;&lt;code&gt;leaveTimei&lt;/code&gt; 是员工完成第 &lt;code&gt;i&lt;/code&gt; 个任务的时刻。所有 &lt;code&gt;leaveTimei&lt;/code&gt; 的值都是 &lt;strong&gt;唯一&lt;/strong&gt; 的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意，第 &lt;code&gt;i&lt;/code&gt; 个任务在第 &lt;code&gt;(i - 1)&lt;/code&gt; 个任务结束后立即开始，且第 &lt;code&gt;0&lt;/code&gt; 个任务从时刻 &lt;code&gt;0&lt;/code&gt; 开始。&lt;/p&gt;
&lt;p&gt;返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足，则返回几人中 &lt;strong&gt;最小&lt;/strong&gt; 的 id 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;任务&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;于时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;开始&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且在时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;结束&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;共计&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;个单位时间&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;任务&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;于时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;开始&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且在时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;结束&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;共计&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;个单位时间&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;任务&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;于时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;开始&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且在时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;结束&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;共计&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;个单位时间&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;任务&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;于时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;开始&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;且在时刻&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;结束&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;共计&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;个单位时间&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;时间最长的任务是任务&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;而&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的员工是处理此任务的员工&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以返回&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hardestWorker&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestDuration&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;employeeDurationDifferences&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentTimeDiff&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;employeeDurationDifferences&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentTimeDiff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;longestDuration&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;longestDuration&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentTimeDiff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestDurationEmployees&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;employeeDurationDifferences&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;diff&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;diff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestDuration&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果只存在一个员工是这个任务时长，则直接返回该员工的ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;longestDurationEmployees&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestDurationEmployees&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestDurationEmployeeIds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;longestDurationEmployees&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;longestDurationEmployeeIds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(...&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;longestDurationEmployeeIds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/">2432. 处理用时最长的那个任务的员工</a></p>
<p>共有 <code>n</code> 位员工，每位员工都有一个从 <code>0</code> 到 <code>n - 1</code> 的唯一 id 。</p>
<p>给你一个二维整数数组 <code>logs</code> ，其中 <code>logs[i] = [idi, leaveTimei]</code> ：</p>
<ul>
<li><code>idi</code> 是处理第 <code>i</code> 个任务的员工的 id ，且</li>
<li><code>leaveTimei</code> 是员工完成第 <code>i</code> 个任务的时刻。所有 <code>leaveTimei</code> 的值都是 <strong>唯一</strong> 的。</li>
</ul>
<p>注意，第 <code>i</code> 个任务在第 <code>(i - 1)</code> 个任务结束后立即开始，且第 <code>0</code> 个任务从时刻 <code>0</code> 开始。</p>
<p>返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足，则返回几人中 <strong>最小</strong> 的 id 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">n</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span> <span class="nx">logs</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">9</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">15</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">任务</span> <span class="mi">0</span> <span class="nx">于时刻</span> <span class="mi">0</span> <span class="nx">开始</span><span class="err">，</span><span class="nx">且在时刻</span> <span class="mi">3</span> <span class="nx">结束</span><span class="err">，</span><span class="nx">共计</span> <span class="mi">3</span> <span class="nx">个单位时间</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">任务</span> <span class="mi">1</span> <span class="nx">于时刻</span> <span class="mi">3</span> <span class="nx">开始</span><span class="err">，</span><span class="nx">且在时刻</span> <span class="mi">5</span> <span class="nx">结束</span><span class="err">，</span><span class="nx">共计</span> <span class="mi">2</span> <span class="nx">个单位时间</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">任务</span> <span class="mi">2</span> <span class="nx">于时刻</span> <span class="mi">5</span> <span class="nx">开始</span><span class="err">，</span><span class="nx">且在时刻</span> <span class="mi">9</span> <span class="nx">结束</span><span class="err">，</span><span class="nx">共计</span> <span class="mi">4</span> <span class="nx">个单位时间</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">任务</span> <span class="mi">3</span> <span class="nx">于时刻</span> <span class="mi">9</span> <span class="nx">开始</span><span class="err">，</span><span class="nx">且在时刻</span> <span class="mi">15</span> <span class="nx">结束</span><span class="err">，</span><span class="nx">共计</span> <span class="mi">6</span> <span class="nx">个单位时间</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">时间最长的任务是任务</span> <span class="mi">3</span> <span class="err">，</span><span class="nx">而</span> <span class="nx">id</span> <span class="nx">为</span> <span class="mi">1</span> <span class="nx">的员工是处理此任务的员工</span><span class="err">，</span><span class="nx">所以返回</span> <span class="mi">1</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">hardestWorker</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">n</span><span class="p">,</span> <span class="nx">logs</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">longestDuration</span> <span class="o">=</span> <span class="nx">logs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">employeeDurationDifferences</span> <span class="o">=</span> <span class="p">[[</span><span class="nx">logs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">logs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]]];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nx">logs</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">log</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&gt;=</span> <span class="nx">logs</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">currentTimeDiff</span> <span class="o">=</span> <span class="nx">logs</span><span class="p">[</span><span class="nx">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="nx">logs</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="nx">employeeDurationDifferences</span><span class="p">.</span><span class="nx">push</span><span class="p">([</span><span class="nx">logs</span><span class="p">[</span><span class="nx">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">currentTimeDiff</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">        <span class="nx">longestDuration</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">longestDuration</span><span class="p">,</span> <span class="nx">currentTimeDiff</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">longestDurationEmployees</span> <span class="o">=</span> <span class="nx">employeeDurationDifferences</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">diff</span> <span class="p">=&gt;</span> <span class="nx">diff</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="nx">longestDuration</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果只存在一个员工是这个任务时长，则直接返回该员工的ID
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">longestDurationEmployees</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">longestDurationEmployees</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">longestDurationEmployeeIds</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="nx">longestDurationEmployees</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">record</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">longestDurationEmployeeIds</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">record</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(...</span><span class="nx">longestDurationEmployeeIds</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，通过<code>logs</code>二维数组，获取到每个员工的<code>ID</code>以及对应的任务时长，同时，使用<code>Math.max()</code>函数求得任务时长最大值，然后，筛选任务时长最大值的员工<code>ID</code>，如果只有一个员工，则直接返回结果，否则，通过遍历获取全部的员工<code>ID</code>，再使用<code>Math.min()</code>函数，求得最小值。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2407/240729-violence-against-women.html">Violence against women and girls at &rsquo;epidemic&rsquo; levels</a></p>
<p>英国警方发布了一份报告，强调针对妇女和女孩的暴力事件急剧增加。报告指出，厌女症和针对妇女的犯罪行为达到了创纪录的水平。据报道，一年内有100多万起此类犯罪。这可能只是冰山一角。将会有大量的暴力事件没有被报道。伦敦大都会警察局撰文描述了这一问题的严重性。报告称:“针对妇女和女孩的暴力是地方性的、系统性的，对社会的威胁与恐怖主义一样严重。”它补充说，针对妇女的犯罪占所有记录犯罪的20%。它说:“我们必须采取行动，改变妇女和女孩无法接受的现实。”</p>
<p>该报告由英国国家警察局长委员会和警务学院发布。副警长麦琪·布莱斯称这些数据“令人震惊”。她说:“对妇女和女孩的暴力行为是国家的紧急情况。作为一个社会，我们需要向前迈进，做出改变，不再认为针对妇女和女孩的暴力是不可避免的。”警方表示:“每12名女性中就有1人会成为暴力的受害者。每六起谋杀案中就有一起是家庭暴力造成的。每20个人中就有1个人——其中超过200万人——在他们的生活中会对妇女和女孩施暴。”报告称，基于性别的暴力犯罪包括骚扰、谋杀、网络性虐待、强奸和跟踪。</p>
<h2 id="tip">Tip</h2>
<p>markdown 文档如何自动加上标题编号？</p>
<p>因为我那个记录问题的<code>markdown</code>文档，需要时不时更新一下内容，所以，标题的编号也要同步更新，这个文档内容那么多，改起来工作量很大，只能研究一下，怎么在<code>markdown</code>文档里自动加上标题编号。</p>
<p>在<code>VSCode</code>里有插件能够实现这个需求，自己也使用了一段时间，感觉还是很方便的，只是因为电脑更新系统，不小心卸载了这个插件，不太记得插件名字了，只能使用另一个———— <a href="https://marketplace.visualstudio.com/items?itemName=panchaoxin.markdown-header">Markdown Header</a>。可使用这个插件增加标题编号时，发现它并不是基于现有的标题编号进行更新，而是额外增加了标题编号，比如<code>1.1 1.1</code>，加上要清空标题编号没有生效，只能看下，怎么把当前文档里的标题编号全都清空，然后，再使用这个插件自动生成标题编号，解决思路是，在<code>VSCode</code>中使用正则表达式搜索，匹配到<code># 1.2.3</code>类似的格式，一个<code>#</code>加一个空格，然后是标题编号，全部替换成<code>#</code>即可。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="p">(</span><span class="err">#\</span><span class="nx">s</span><span class="o">+</span><span class="p">)(</span><span class="err">\</span><span class="nx">b</span><span class="err">\</span><span class="nx">d</span><span class="o">+</span><span class="p">(</span><span class="err">\</span><span class="p">.</span><span class="err">\</span><span class="nx">d</span><span class="o">+</span><span class="p">)</span><span class="o">*</span><span class="err">\</span><span class="nx">b</span><span class="p">)</span>
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409051357213.png"></p>
<p>接着，使用<code>Ctrl+Shift+P</code>，选择<code>Markdown generate header number</code>，一键生成标题编号。</p>
<h2 id="share">Share</h2>
<p>“若不披上这件衣裳，众生又怎知我尘缘已断、金海尽干？”</p>
]]></content:encoded>
    </item>
    <item>
      <title>AgileTC测试用例管理平台的基本使用</title>
      <link>https://dstweihao.cn/posts/agiletc/agiletc%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</link>
      <pubDate>Wed, 21 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/agiletc/agiletc%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</guid>
      <description>&lt;h1 id=&#34;1-背景&#34;&gt;1. 背景&lt;/h1&gt;
&lt;p&gt;使用企业微信在线文档对测试用例进行管理，存在以下问题，比如新建版本，每次都要设置下执行测试用例那一栏，要提供通过、失败、阻塞等选项，操作异常繁琐，比如版本管理问题，多个版本之后，想要追溯老版本测试了哪些功能，很难进行筛选，比如测试用例越来越多，文档打开慢的问题等等。&lt;/p&gt;
&lt;h1 id=&#34;2-调研&#34;&gt;2. 调研&lt;/h1&gt;
&lt;p&gt;为了解决以上问题，调研了市面上的一些平台，发现有些平台功能过多，有些平台需要付费，现阶段，显然不太合适，然后发现了&lt;code&gt;AgileTC&lt;/code&gt;，它是一套敏捷的测试用例管理平台，以脑图方式编辑可快速上手，有以下几个优势：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;可新建多个用例集，用例可以设置优先级；&lt;/li&gt;
&lt;li&gt;可基于用例集，创建执行测试任务，并且可跟进优先级筛选进行测试；&lt;/li&gt;
&lt;li&gt;版本管理问题，多个版本管理不会有问题，创建执行测试任务就是一个版本，比如&lt;code&gt;V1.0&lt;/code&gt;研发自测，就是一条执行测试任务；&lt;/li&gt;
&lt;li&gt;可搜索快速定位到要查看的功能模块，并且其他功能模块收起；&lt;/li&gt;
&lt;li&gt;可以设置前置条件、执行步骤、预期结果标签；&lt;/li&gt;
&lt;li&gt;左侧有菜单，可快速查看其他项目；&lt;/li&gt;
&lt;li&gt;离开当前页，可以自动保存；&lt;/li&gt;
&lt;li&gt;学习成本很低，而且是开源免费的；&lt;/li&gt;
&lt;li&gt;可以导出执行测试结果为&lt;code&gt;xmind&lt;/code&gt;文件，用于项目提测时，给到测试组。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;基于以上原因，计划使用&lt;code&gt;AgileTC&lt;/code&gt;系统，在线管理各项目的测试用例。&lt;/p&gt;
&lt;h1 id=&#34;3-基本使用&#34;&gt;3. 基本使用&lt;/h1&gt;
&lt;h2 id=&#34;31-准备环境&#34;&gt;3.1 准备环境&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. mac/linux/windows
1. java 1.8
1. mysql 服务端
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;32-下载&#34;&gt;3.2 下载&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/didi/AgileTC.git
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;33-create-database-case_manager&#34;&gt;3.3 create database case_manager&lt;/h2&gt;
&lt;p&gt;使用命令 &lt;code&gt;create database case_manager&lt;/code&gt;在 MySQL Workbench 中创建依赖数据库。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504509.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;34-运行-case-serversql-脚本内容&#34;&gt;3.4 运行 case-server.sql 脚本内容&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;拷贝 &lt;code&gt;./AgileTC/case-server/sql/case-server.sql&lt;/code&gt; 文件内容，在 MySQL Workbench 中运行。&lt;/li&gt;
&lt;li&gt;双击 &lt;code&gt;case_manager&lt;/code&gt; ，选中当前依赖数据库。&lt;/li&gt;
&lt;li&gt;点击闪电图标执行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504879.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;35-修改-application-devproperties-文件&#34;&gt;3.5 修改 application-dev.properties 文件&lt;/h2&gt;
&lt;p&gt;修改 &lt;code&gt;./AgileTC/case-server/src/main/resources/application-dev.properties&lt;/code&gt; 文件，如下所示：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;spring.datasource.url=jdbc:mysql://localhost:3306/case_manager?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=12345678
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;36-运行命令-mvn-spring-bootrun&#34;&gt;3.6 运行命令 mvn spring-boot:run&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在&lt;code&gt;case-server&lt;/code&gt;目录下执行命令&lt;code&gt;mvn spring-boot:run&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;使用浏览器打开 &lt;code&gt;http://localhost:8094/case/caseList/1&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504409.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-背景">1. 背景</h1>
<p>使用企业微信在线文档对测试用例进行管理，存在以下问题，比如新建版本，每次都要设置下执行测试用例那一栏，要提供通过、失败、阻塞等选项，操作异常繁琐，比如版本管理问题，多个版本之后，想要追溯老版本测试了哪些功能，很难进行筛选，比如测试用例越来越多，文档打开慢的问题等等。</p>
<h1 id="2-调研">2. 调研</h1>
<p>为了解决以上问题，调研了市面上的一些平台，发现有些平台功能过多，有些平台需要付费，现阶段，显然不太合适，然后发现了<code>AgileTC</code>，它是一套敏捷的测试用例管理平台，以脑图方式编辑可快速上手，有以下几个优势：</p>
<ol>
<li>可新建多个用例集，用例可以设置优先级；</li>
<li>可基于用例集，创建执行测试任务，并且可跟进优先级筛选进行测试；</li>
<li>版本管理问题，多个版本管理不会有问题，创建执行测试任务就是一个版本，比如<code>V1.0</code>研发自测，就是一条执行测试任务；</li>
<li>可搜索快速定位到要查看的功能模块，并且其他功能模块收起；</li>
<li>可以设置前置条件、执行步骤、预期结果标签；</li>
<li>左侧有菜单，可快速查看其他项目；</li>
<li>离开当前页，可以自动保存；</li>
<li>学习成本很低，而且是开源免费的；</li>
<li>可以导出执行测试结果为<code>xmind</code>文件，用于项目提测时，给到测试组。</li>
</ol>
<p>基于以上原因，计划使用<code>AgileTC</code>系统，在线管理各项目的测试用例。</p>
<h1 id="3-基本使用">3. 基本使用</h1>
<h2 id="31-准备环境">3.1 准备环境</h2>
<pre tabindex="0"><code>1. mac/linux/windows
1. java 1.8
1. mysql 服务端
</code></pre><h2 id="32-下载">3.2 下载</h2>
<pre tabindex="0"><code>git clone https://github.com/didi/AgileTC.git
</code></pre><h2 id="33-create-database-case_manager">3.3 create database case_manager</h2>
<p>使用命令 <code>create database case_manager</code>在 MySQL Workbench 中创建依赖数据库。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504509.png"></p>
<h2 id="34-运行-case-serversql-脚本内容">3.4 运行 case-server.sql 脚本内容</h2>
<ol>
<li>拷贝 <code>./AgileTC/case-server/sql/case-server.sql</code> 文件内容，在 MySQL Workbench 中运行。</li>
<li>双击 <code>case_manager</code> ，选中当前依赖数据库。</li>
<li>点击闪电图标执行。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504879.png"></p>
<h2 id="35-修改-application-devproperties-文件">3.5 修改 application-dev.properties 文件</h2>
<p>修改 <code>./AgileTC/case-server/src/main/resources/application-dev.properties</code> 文件，如下所示：</p>
<pre tabindex="0"><code>spring.datasource.url=jdbc:mysql://localhost:3306/case_manager?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=12345678
</code></pre><h2 id="36-运行命令-mvn-spring-bootrun">3.6 运行命令 mvn spring-boot:run</h2>
<ol>
<li>在<code>case-server</code>目录下执行命令<code>mvn spring-boot:run</code>。</li>
<li>使用浏览器打开 <code>http://localhost:8094/case/caseList/1</code>。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408201504409.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>产品宣传页设计之我见</title>
      <link>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E4%BA%A7%E5%93%81%E5%AE%A3%E4%BC%A0%E9%A1%B5%E8%AE%BE%E8%AE%A1%E4%B9%8B%E6%88%91%E8%A7%81/</link>
      <pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A1/%E4%BA%A7%E5%93%81%E5%AE%A3%E4%BC%A0%E9%A1%B5%E8%AE%BE%E8%AE%A1%E4%B9%8B%E6%88%91%E8%A7%81/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;在当今数字营销日益重要的时代，产品宣传页作为品牌与消费者之间的首要接触点，其设计质量直接关乎用户的初步印象及购买意愿。在我的认知里，有效传达信息的方式，从影响力大到小排序应为：VR &amp;gt; 3D &amp;gt; 视频 &amp;gt; 图片 &amp;gt; 文字。最近，我参与了产品宣传页的设计工作，并深入调研了其他公司的成功案例，特别是Apple官网和小米官网，以汲取灵感。通过此次调研，我总结了以下四个关键的设计原则，用于提升产品宣传页的效果。&lt;/p&gt;
&lt;h1 id=&#34;2-突出重点瞬间吸引用户注意&#34;&gt;2. 突出重点：瞬间吸引用户注意&lt;/h1&gt;
&lt;p&gt;在信息爆炸的当下，用户的注意力尤为宝贵。产品宣传页的首要任务是迅速抓住用户的眼球。这要求我们在设计上：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;打造视觉冲击力&lt;/strong&gt;：利用高清图片、鲜明色彩或独特布局，创造出强烈的视觉吸引力，让用户一眼难忘。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;明确核心卖点&lt;/strong&gt;：直接展现产品最具特色的优势，如卓越性能、独特设计或价格优势，避免冗余信息干扰。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;引导视觉流程&lt;/strong&gt;：通过合理的布局和视觉元素（如箭头、高亮、动画效果），引导用户关注关键信息。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，Apple官网的iPhone 15 Pro页面，通过动态岛设计、A16仿生芯片等核心卖点的突出展示，成功吸引了用户的注意力。&lt;/p&gt;
&lt;h1 id=&#34;3-精简标语言简意赅触动人心&#34;&gt;3. 精简标语：言简意赅，触动人心&lt;/h1&gt;
&lt;p&gt;标语是产品宣传页的灵魂，应简洁有力，直击用户内心。一个好的标语应具备：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;简洁性&lt;/strong&gt;：用最少的字数传达最清晰的信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;易记性&lt;/strong&gt;：便于用户口口相传，形成良好口碑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;情感共鸣&lt;/strong&gt;：触动用户情感，增强品牌认同感。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，Apple的“快，更简单”和“岂止于大”等标语，正是言简意赅、易于记忆且能引发情感共鸣的典范。&lt;/p&gt;
&lt;h1 id=&#34;4-强调数据以事实为依据增强说服力&#34;&gt;4. 强调数据：以事实为依据，增强说服力&lt;/h1&gt;
&lt;p&gt;数据是展现产品优势的有效手段。在产品宣传页中，通过具体数据和对比图来展示产品性能，能显著提升说服力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;具体数值&lt;/strong&gt;：提供产品的性能参数或提升幅度，让用户一目了然。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对比图&lt;/strong&gt;：直观展示产品与其他竞品的差异，凸显优势。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权威认证&lt;/strong&gt;：引用第三方权威机构的测试报告或认证，增加可信度。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，Apple和小米官网在宣传产品时，均大量使用了具体数据和对比图，有效增强了说服力。&lt;/p&gt;
&lt;h1 id=&#34;5-真实场景身临其境促进购买决策&#34;&gt;5. 真实场景：身临其境，促进购买决策&lt;/h1&gt;
&lt;p&gt;真实场景能让用户更直观地感受产品的使用效果，从而提升购买意愿。在产品宣传页中，可通过以下方式营造真实场景：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;高清图片和视频&lt;/strong&gt;：展示产品在不同场景下的应用效果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VR/AR技术&lt;/strong&gt;：利用虚拟现实或增强现实技术，让用户亲身体验产品。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户评价&lt;/strong&gt;：展示真实用户的反馈和使用体验，增加可信度。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，Apple的3D看机功能和链家VR看房服务，都是让用户身临其境体验产品的成功案例。&lt;/p&gt;
&lt;h1 id=&#34;6-调研启发与总结&#34;&gt;6. 调研启发与总结&lt;/h1&gt;
&lt;p&gt;通过本次调研，我对产品宣传页的设计有了更深刻的认知，并总结出以下几点启发：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;跨部门合作&lt;/strong&gt;：设计过程需要多个部门紧密协作，确保信息的准确性和一致性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;明确宣传策略&lt;/strong&gt;：在设计前明确产品的宣传定位和目标受众，确保设计方向正确。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灵活运用原则&lt;/strong&gt;：根据产品特点和市场需求，灵活运用上述四大设计原则。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续优化&lt;/strong&gt;：根据用户反馈和数据分析，不断调整和优化宣传页的设计和内容，提升用户体验和销售效果。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>在当今数字营销日益重要的时代，产品宣传页作为品牌与消费者之间的首要接触点，其设计质量直接关乎用户的初步印象及购买意愿。在我的认知里，有效传达信息的方式，从影响力大到小排序应为：VR &gt; 3D &gt; 视频 &gt; 图片 &gt; 文字。最近，我参与了产品宣传页的设计工作，并深入调研了其他公司的成功案例，特别是Apple官网和小米官网，以汲取灵感。通过此次调研，我总结了以下四个关键的设计原则，用于提升产品宣传页的效果。</p>
<h1 id="2-突出重点瞬间吸引用户注意">2. 突出重点：瞬间吸引用户注意</h1>
<p>在信息爆炸的当下，用户的注意力尤为宝贵。产品宣传页的首要任务是迅速抓住用户的眼球。这要求我们在设计上：</p>
<ol>
<li><strong>打造视觉冲击力</strong>：利用高清图片、鲜明色彩或独特布局，创造出强烈的视觉吸引力，让用户一眼难忘。</li>
<li><strong>明确核心卖点</strong>：直接展现产品最具特色的优势，如卓越性能、独特设计或价格优势，避免冗余信息干扰。</li>
<li><strong>引导视觉流程</strong>：通过合理的布局和视觉元素（如箭头、高亮、动画效果），引导用户关注关键信息。</li>
</ol>
<p>例如，Apple官网的iPhone 15 Pro页面，通过动态岛设计、A16仿生芯片等核心卖点的突出展示，成功吸引了用户的注意力。</p>
<h1 id="3-精简标语言简意赅触动人心">3. 精简标语：言简意赅，触动人心</h1>
<p>标语是产品宣传页的灵魂，应简洁有力，直击用户内心。一个好的标语应具备：</p>
<ol>
<li><strong>简洁性</strong>：用最少的字数传达最清晰的信息。</li>
<li><strong>易记性</strong>：便于用户口口相传，形成良好口碑。</li>
<li><strong>情感共鸣</strong>：触动用户情感，增强品牌认同感。</li>
</ol>
<p>例如，Apple的“快，更简单”和“岂止于大”等标语，正是言简意赅、易于记忆且能引发情感共鸣的典范。</p>
<h1 id="4-强调数据以事实为依据增强说服力">4. 强调数据：以事实为依据，增强说服力</h1>
<p>数据是展现产品优势的有效手段。在产品宣传页中，通过具体数据和对比图来展示产品性能，能显著提升说服力：</p>
<ol>
<li><strong>具体数值</strong>：提供产品的性能参数或提升幅度，让用户一目了然。</li>
<li><strong>对比图</strong>：直观展示产品与其他竞品的差异，凸显优势。</li>
<li><strong>权威认证</strong>：引用第三方权威机构的测试报告或认证，增加可信度。</li>
</ol>
<p>例如，Apple和小米官网在宣传产品时，均大量使用了具体数据和对比图，有效增强了说服力。</p>
<h1 id="5-真实场景身临其境促进购买决策">5. 真实场景：身临其境，促进购买决策</h1>
<p>真实场景能让用户更直观地感受产品的使用效果，从而提升购买意愿。在产品宣传页中，可通过以下方式营造真实场景：</p>
<ol>
<li><strong>高清图片和视频</strong>：展示产品在不同场景下的应用效果。</li>
<li><strong>VR/AR技术</strong>：利用虚拟现实或增强现实技术，让用户亲身体验产品。</li>
<li><strong>用户评价</strong>：展示真实用户的反馈和使用体验，增加可信度。</li>
</ol>
<p>例如，Apple的3D看机功能和链家VR看房服务，都是让用户身临其境体验产品的成功案例。</p>
<h1 id="6-调研启发与总结">6. 调研启发与总结</h1>
<p>通过本次调研，我对产品宣传页的设计有了更深刻的认知，并总结出以下几点启发：</p>
<ol>
<li><strong>跨部门合作</strong>：设计过程需要多个部门紧密协作，确保信息的准确性和一致性。</li>
<li><strong>明确宣传策略</strong>：在设计前明确产品的宣传定位和目标受众，确保设计方向正确。</li>
<li><strong>灵活运用原则</strong>：根据产品特点和市场需求，灵活运用上述四大设计原则。</li>
<li><strong>持续优化</strong>：根据用户反馈和数据分析，不断调整和优化宣传页的设计和内容，提升用户体验和销售效果。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>Sentry的基本使用</title>
      <link>https://dstweihao.cn/posts/sentry/sentry%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</link>
      <pubDate>Sun, 18 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/sentry/sentry%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</guid>
      <description>&lt;h2 id=&#34;1-系统简介&#34;&gt;1. 系统简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Sentry&lt;/code&gt;是一个开源的监控系统，可以收集项目中的异常信息，便于开发人员第一时间发现问题，定位问题，解决问题。当前文档基于&lt;code&gt;Sentry 23.11.2&lt;/code&gt;进行说明。&lt;/p&gt;
&lt;h2 id=&#34;2-系统搭建&#34;&gt;2. 系统搭建&lt;/h2&gt;
&lt;p&gt;虽然&lt;code&gt;Sentry&lt;/code&gt;官方提供了在线系统，但是因为需要翻墙，加上如果是公司项目，考虑到安全问题，还是倾向于私有化部署，在&lt;code&gt;Github&lt;/code&gt;上有一个开源项目用于部署&lt;code&gt;Sentry&lt;/code&gt;，可以使用该项目进行部署：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/getsentry/onpremise.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;因为这个项目涉及很多后端的技术知识，&lt;code&gt;Sentry&lt;/code&gt;搭建最好是后端人员来做，然后部署到服务器上面去。&lt;/p&gt;
&lt;h2 id=&#34;3-创建项目&#34;&gt;3. 创建项目&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Sentry&lt;/code&gt;搭建成功，部署到服务器，比如当前&lt;code&gt;Sentry&lt;/code&gt;在线系统为&lt;code&gt;https://123.11.22.133&lt;/code&gt;，使用账号&lt;code&gt;test001&lt;/code&gt;登录，一开始默认是英文显示，如果想要切换为中文，只需要在左上角的&lt;code&gt;User settings&lt;/code&gt;里的&lt;code&gt;Language&lt;/code&gt;选项选择&lt;code&gt;Simplified Chinese&lt;/code&gt;即可，然后创建项目，其他平台同理，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051429752.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;4-vue3项目引入sentry&#34;&gt;4. Vue3项目引入Sentry&lt;/h2&gt;
&lt;p&gt;项目创建完成后，会跳转至 &lt;code&gt;Vue SDK&lt;/code&gt; 配置的说明文档，默认勾选三个监控模块，并且提供&lt;code&gt;Vue3&lt;/code&gt;和&lt;code&gt;Vue2&lt;/code&gt;版本的引入方式，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051456521.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;三个监控模块的简单功能说明，如下所示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Error Monitoring：&lt;/strong&gt; 自动报告项目错误和异常。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance Monitoring：&lt;/strong&gt; 通过性能监控，&lt;code&gt;Sentry&lt;/code&gt;跟踪你的软件性能，测量吞吐量和延迟等指标，并显示错误对多个系统的影响。&lt;code&gt;Sentry&lt;/code&gt;捕获由事务和&lt;code&gt;span&lt;/code&gt;组成的分布式跟踪，这些跟踪测量单个服务以及这些服务中的单个操作。在分布式跟踪中了解更多关于我们的模型的信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session Replay：&lt;/strong&gt; 会话重播通过像视频一样重现用户浏览器在错误发生前、发生中、发生后的情况，帮助你更快地找到错误或延迟问题的根本原因。受浏览器开发者工具的启发，你可以在一个组合的&lt;code&gt;UI&lt;/code&gt;中回放应用程序的&lt;code&gt;DOM&lt;/code&gt;状态，并查看关键的用户交互，如鼠标点击、滚动、网络请求和控制台条目。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;首先，我们需要依照文档进行配置，安装依赖&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;save&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;@sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;yarn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;yarn&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;add&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;@sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后，在&lt;code&gt;main.ts&lt;/code&gt;里引入&lt;code&gt;Sentry.init()&lt;/code&gt;，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createApp&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vue&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRouter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vue-router&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@sentry/vue&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createApp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;router&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRouter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;dsn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://examplePublicKey@o0.ingest.sentry.io/0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;integrations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;browserTracingIntegration&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;router&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replayIntegration&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Set tracesSampleRate to 1.0 to capture 100%
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// of transactions for tracing.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// We recommend adjusting this value in production
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;tracesSampleRate&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;1.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Set `tracePropagationTargets` to control for which URLs trace propagation should be enabled
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;tracePropagationTargets&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;/^https:\/\/yourserver\.io\/api/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Capture Replay for 10% of all sessions,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// plus for 100% of sessions with an error
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;replaysSessionSampleRate&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;replaysOnErrorSampleRate&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;1.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;router&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#app&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时，只要项目在本地运行或部署至线上，打开项目，然后打开浏览器控制台，查看&lt;code&gt;Network&lt;/code&gt;列表，会发现很多类似这样的请求，并没有报错，这就意味着当前已经正常上报到&lt;code&gt;Sentry&lt;/code&gt;系统了，如下所示：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="1-系统简介">1. 系统简介</h2>
<p><code>Sentry</code>是一个开源的监控系统，可以收集项目中的异常信息，便于开发人员第一时间发现问题，定位问题，解决问题。当前文档基于<code>Sentry 23.11.2</code>进行说明。</p>
<h2 id="2-系统搭建">2. 系统搭建</h2>
<p>虽然<code>Sentry</code>官方提供了在线系统，但是因为需要翻墙，加上如果是公司项目，考虑到安全问题，还是倾向于私有化部署，在<code>Github</code>上有一个开源项目用于部署<code>Sentry</code>，可以使用该项目进行部署：</p>
<pre tabindex="0"><code>git clone https://github.com/getsentry/onpremise.git
</code></pre><p>因为这个项目涉及很多后端的技术知识，<code>Sentry</code>搭建最好是后端人员来做，然后部署到服务器上面去。</p>
<h2 id="3-创建项目">3. 创建项目</h2>
<p><code>Sentry</code>搭建成功，部署到服务器，比如当前<code>Sentry</code>在线系统为<code>https://123.11.22.133</code>，使用账号<code>test001</code>登录，一开始默认是英文显示，如果想要切换为中文，只需要在左上角的<code>User settings</code>里的<code>Language</code>选项选择<code>Simplified Chinese</code>即可，然后创建项目，其他平台同理，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051429752.png"></p>
<h2 id="4-vue3项目引入sentry">4. Vue3项目引入Sentry</h2>
<p>项目创建完成后，会跳转至 <code>Vue SDK</code> 配置的说明文档，默认勾选三个监控模块，并且提供<code>Vue3</code>和<code>Vue2</code>版本的引入方式，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051456521.png"></p>
<p>三个监控模块的简单功能说明，如下所示：</p>
<ul>
<li><strong>Error Monitoring：</strong> 自动报告项目错误和异常。</li>
<li><strong>Performance Monitoring：</strong> 通过性能监控，<code>Sentry</code>跟踪你的软件性能，测量吞吐量和延迟等指标，并显示错误对多个系统的影响。<code>Sentry</code>捕获由事务和<code>span</code>组成的分布式跟踪，这些跟踪测量单个服务以及这些服务中的单个操作。在分布式跟踪中了解更多关于我们的模型的信息。</li>
<li><strong>Session Replay：</strong> 会话重播通过像视频一样重现用户浏览器在错误发生前、发生中、发生后的情况，帮助你更快地找到错误或延迟问题的根本原因。受浏览器开发者工具的启发，你可以在一个组合的<code>UI</code>中回放应用程序的<code>DOM</code>状态，并查看关键的用户交互，如鼠标点击、滚动、网络请求和控制台条目。</li>
</ul>
<p>首先，我们需要依照文档进行配置，安装依赖</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">Using</span> <span class="nx">npm</span>
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="o">--</span><span class="nx">save</span> <span class="kd">@sentry</span><span class="o">/</span><span class="nx">vue</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">Using</span> <span class="nx">yarn</span>
</span></span><span class="line"><span class="cl"><span class="nx">yarn</span> <span class="nx">add</span> <span class="kd">@sentry</span><span class="o">/</span><span class="nx">vue</span>
</span></span></code></pre></div><p>然后，在<code>main.ts</code>里引入<code>Sentry.init()</code>，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createApp</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;vue&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createRouter</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;vue-router&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="o">*</span> <span class="kr">as</span> <span class="nx">Sentry</span> <span class="kr">from</span> <span class="s2">&#34;@sentry/vue&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">createApp</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// ...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nx">createRouter</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// ...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Sentry</span><span class="p">.</span><span class="nx">init</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">app</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">dsn</span><span class="o">:</span> <span class="s2">&#34;https://examplePublicKey@o0.ingest.sentry.io/0&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">integrations</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="nx">Sentry</span><span class="p">.</span><span class="nx">browserTracingIntegration</span><span class="p">({</span> <span class="nx">router</span> <span class="p">}),</span>
</span></span><span class="line"><span class="cl">    <span class="nx">Sentry</span><span class="p">.</span><span class="nx">replayIntegration</span><span class="p">(),</span>
</span></span><span class="line"><span class="cl">  <span class="p">],</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// Set tracesSampleRate to 1.0 to capture 100%
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// of transactions for tracing.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// We recommend adjusting this value in production
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">tracesSampleRate</span>: <span class="kt">1.0</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// Set `tracePropagationTargets` to control for which URLs trace propagation should be enabled
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">tracePropagationTargets</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="sr">/^https:\/\/yourserver\.io\/api/</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// Capture Replay for 10% of all sessions,
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// plus for 100% of sessions with an error
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">replaysSessionSampleRate</span>: <span class="kt">0.1</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">replaysOnErrorSampleRate</span>: <span class="kt">1.0</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">router</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">mount</span><span class="p">(</span><span class="s2">&#34;#app&#34;</span><span class="p">);</span>
</span></span></code></pre></div><p>此时，只要项目在本地运行或部署至线上，打开项目，然后打开浏览器控制台，查看<code>Network</code>列表，会发现很多类似这样的请求，并没有报错，这就意味着当前已经正常上报到<code>Sentry</code>系统了，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="err">/api/6/envelope/?sentry_key=485eee5b72d4758f53483e6ee56c43ed&amp;sentry_version=7&amp;sentry_client=sentry.javascript.vue%2F7.85.0</span>
</span></span></code></pre></div><h2 id="5-异常报错示例">5. 异常报错示例</h2>
<p>为了真实验证<code>Sentry</code>的功能，现以一个真实场景来演示，在项目中添加一个按钮，然后设置点击事件之后，触发打印<code>console</code>，<code>sentryTest</code>并未定义，所以会报错，代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vue" data-lang="vue"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">el-button</span> <span class="nt">@click</span><span class="s">=&#34;sentryClicked&#34;</span><span class="p">&gt;</span><span class="na">Sentry测试</span><span class="err">&lt;/</span><span class="na">el</span><span class="nt">-button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">setup</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;ts&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineComponent</span><span class="p">,</span> <span class="nx">ref</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;vue&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">function</span> <span class="nx">sentryClicked</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;sentryClicked: &#39;</span><span class="p">,</span> <span class="nx">sentryTest</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span></code></pre></div><p>在项目页面，我们可以看到，在浏览器控制台，确实有报错信息生成，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051530416.png"></p>
<p>然后，我们到<code>Sentry</code>在线系统查看，确实有收到报错信息，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051533294.png"></p>
<p>里面指明了报错原因是 <code>sentryTest is not defined</code> ，然后还提交了用户的<code>IP</code>、浏览器版本以及版本号、平台系统等等信息，便于分析异常错误。还可以使用<code>Session Replay</code>重现用户浏览器在错误发生前、发生中、发生后的情况，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051538755.png"></p>
<h2 id="6-上传sourcemap文件">6. 上传SourceMap文件</h2>
<p>通常<code>Sentry</code>在线系统上面的信息，也是可以排查解决<code>BUG</code>的，比如<code>sentryTest is not defined</code>，我们只需要在项目中搜索<code>sentryTest</code>就可以定位到代码报错的位置，但是如果是一些比较通用的，或者信息比较含糊的，是没办法精准定位代码位置的，这个时候，就可能有想法了，怎么让才能在<code>Sentry</code>在线系统看到，到底是执行到哪一步的时候，报错了呢？</p>
<p>这就是本节所需要实现功能，这就需要 <code>SourceMap</code> 文件，什么是 <code>SourceMap</code> 文件呢？</p>
<p>因为使用<code>Vite</code>打包之后，所有代码都压缩在一起，很难从中定位到异常代码的位置，<code>Sentry</code>通过<code>.map</code>文件中的映射关系将编译后的代码行映射回源代码行，从而提供准确的错误定位信息。可以帮助开发人员更轻松地理解和修复生产环境中的错误。</p>
<p>首先，需要在<code>Vue3</code>项目的 <code>vite.config.ts</code> 里进行设置，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">build</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">sourcemap</span>: <span class="kt">true</span><span class="p">,</span> <span class="c1">// Source map generation must be turned on
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="p">},</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><p>然后运行 <code>npm run build</code> 命令，在生成的 <code>dist/assets/</code>里就会发现后缀为<code>.map</code>的文件，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051551198.png"></p>
<p>然后我们需要把<code>.map</code>文件上传到 <code>Sentry</code> 在线系统。</p>
<h3 id="61-通过sentry-wizard自动上传至sentry推荐">6.1 通过sentry-wizard自动上传至Sentry【推荐】</h3>
<p>在官方提供的<code> Configure Vue SDK</code>页面中已经推荐使用<code>sentry-wizard</code>来自动上传<code>SourceMap</code>至<code>Sentry</code>，具体实现步骤如下所示：</p>
<ol>
<li>
<p>安装依赖</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npx</span> <span class="err">@</span><span class="nx">sentry</span><span class="o">/</span><span class="nx">wizard</span><span class="err">@</span><span class="nx">latest</span> <span class="o">-</span><span class="nx">i</span> <span class="nx">sourcemaps</span>
</span></span></code></pre></div></li>
<li>
<p>会在终端生成很多提示，提示信息都很清晰，依次选择即可，分别有：</p>
<ol>
<li>Do you want to continue anyway? <code>(Yes)</code></li>
<li>Are you using Sentry SaaS or self-hosted Sentry? <code>(Self-hosted/on-premise/single-tenant)</code></li>
<li>Please enter the URL of your self-hosted Sentry instance.  <code>(https://123.11.22.133)</code></li>
<li>Do you already have a Sentry account?  <code>(Yes)</code></li>
<li>Select your Sentry project.  <code>(test)</code></li>
<li>Which framework, bundler or build tool are you using? <code>（Vite）</code></li>
<li>The @sentry/vite-plugin package is already installed.  <code>(Yes)</code></li>
<li>Updated @sentry/vite-plugin with NPM.</li>
<li>Added the Sentry Vite plugin to vite.config.ts and enabled.</li>
<li>Added auth token to .env.sentry-build-plugin</li>
<li>Added .env.sentry-build-plugin to .gitignore.</li>
<li>Are you using a CI/CD tool to build and deploy your application?  <code>(No)</code></li>
</ol>
</li>
<li>
<p>然后我们会看到<code>vite.config.ts</code>里<code>@sentry/vite-plugin</code>插件的配置，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">sentryVitePlugin</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;@sentry/vite-plugin&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="nx">sentryVitePlugin</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">      <span class="nx">org</span><span class="o">:</span> <span class="s2">&#34;sentry&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nx">project</span><span class="o">:</span> <span class="s2">&#34;project-template-vue&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;https://123.11.22.133&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">})],</span>
</span></span></code></pre></div><p>此时需注意，因在设置<code>self-hosted Sentry</code>时，输入的是<code>https://123.11.22.133</code>，但是<code>sentry-wizard</code>自动在<code>vite.config.ts</code>中生成填写的url值为<code>https://123.11.22.133/</code>，需要去掉<code>/</code>，避免运行<code>npm run build</code>时报错：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">error</span><span class="o">:</span> <span class="nx">Two</span> <span class="nx">different</span> <span class="nx">url</span> <span class="nx">values</span> <span class="nx">supplied</span><span class="o">:</span> <span class="sb">`https://123.11.22.133`</span> <span class="p">(</span><span class="nx">from</span> <span class="nx">token</span><span class="p">),</span> <span class="sb">`https://123.11.22.133/`</span><span class="p">.</span>
</span></span></code></pre></div></li>
<li>
<p>在源码目录下，还自动生成了文件<code>.env.sentry-build-plugin</code>，并且<code>.gitignore.</code>里进行忽略。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051652090.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051656775.png"></p>
</li>
<li>
<p>运行<code>npm run build</code>打包上传，如下所示，当上传<code>SourceMap</code>完成之后，会有相应详细的信息进行说明。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051712511.png"></p>
</li>
<li>
<p>通过在<code>Sentry</code>上面查看项目的<code>SourceMap</code>页面，查看<code>Releases</code>的值为<code>a8b55844dbd5417cefcc00231df0b7df59fec973</code>，来确定本次上传的版本，如下图所示，已经上次成功。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051720507.png"></p>
</li>
<li>
<p>验证 <code>sentryTest is not defined</code>异常报错示例，我们可以看到在异常详情页，会直接定位到源码报错的位置，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051900928.png"></p>
</li>
</ol>
<h3 id="62-通过sentry-cli上传至sentry">6.2 通过Sentry Cli上传至Sentry</h3>
<p>登录<code>Sentry</code>在线系统，以<code>mac</code>环境为例，在终端输入如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">mac</span>
</span></span><span class="line"><span class="cl"><span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="o">--</span><span class="nx">url</span> <span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/login
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">windows</span><span class="p">,</span> <span class="nx">在</span> <span class="nx">node_modules</span> <span class="nx">里找到</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span><span class="p">.</span><span class="nx">exe</span><span class="err">，</span><span class="nx">右键Copy</span> <span class="nx">Path</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"><span class="o">~</span><span class="err">\</span><span class="nx">node_modules</span><span class="err">\@</span><span class="nx">sentry</span><span class="err">\</span><span class="nx">cli</span><span class="o">-</span><span class="nx">win32</span><span class="o">-</span><span class="nx">x64</span><span class="err">\</span><span class="nx">bin</span><span class="err">\</span><span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span><span class="p">.</span><span class="nx">exe</span> <span class="o">--</span><span class="nx">url</span> <span class="nx">https</span><span class="o">:</span><span class="c1">//123.11.22.133:211/ login
</span></span></span></code></pre></div><p>然后会提示输入<code>token</code>，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">dstweihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="o">--</span><span class="nx">url</span> <span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/ login
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">This</span> <span class="nx">helps</span> <span class="nx">you</span> <span class="nx">signing</span> <span class="k">in</span> <span class="nx">your</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="kd">with</span> <span class="nx">an</span> <span class="nx">authentication</span> <span class="nx">token</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"><span class="nx">If</span> <span class="nx">you</span> <span class="k">do</span> <span class="nx">not</span> <span class="nx">yet</span> <span class="nx">have</span> <span class="nx">a</span> <span class="nx">token</span> <span class="nx">ready</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">bring</span> <span class="nx">up</span> <span class="nx">a</span> <span class="nx">browser</span> <span class="k">for</span> <span class="nx">you</span>
</span></span><span class="line"><span class="cl"><span class="nx">to</span> <span class="nx">create</span> <span class="nx">a</span> <span class="nx">token</span> <span class="nx">now</span><span class="p">.</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Sentry</span> <span class="nx">server</span><span class="o">:</span> <span class="mf">123.11</span><span class="p">.</span><span class="mf">22.133</span>
</span></span><span class="line"><span class="cl"><span class="nx">Open</span> <span class="nx">browser</span> <span class="nx">now</span><span class="o">?</span> <span class="p">[</span><span class="nx">y</span><span class="o">/</span><span class="nx">n</span><span class="p">]</span> <span class="nx">n</span>
</span></span><span class="line"><span class="cl"><span class="nx">Enter</span> <span class="nx">your</span> <span class="nx">token</span><span class="o">:</span> 
</span></span></code></pre></div><p><code>token</code>是在<code>Sentry</code>在线系统生成的，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051934070.png"></p>
<p>这时，只要复制<code>token</code>到终端，就可以完成登录流程了，如下所示，就是成功登录了<code>Sentry</code>在线系统：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">Enter</span> <span class="nx">your</span> <span class="nx">token</span><span class="o">:</span> <span class="mf">104e37</span><span class="nx">d1d6b8ac962205719ef8380981ecbaaf587c166566c7df20372d0d72de</span>
</span></span><span class="line"><span class="cl"><span class="nx">Valid</span> <span class="nx">token</span> <span class="k">for</span> <span class="nx">user</span> <span class="nx">test001</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Stored</span> <span class="nx">token</span> <span class="k">in</span> <span class="err">/Users/weihao/.sentryclirc</span>
</span></span><span class="line"><span class="cl"><span class="nx">dstweihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> 
</span></span></code></pre></div><ol>
<li>
<p>上传<code>SourceMap</code>到<code>Sentry</code>在线系统，登录成功之后，就需要将SourceMap文件上传到<code>Sentry</code>在线系统，首先，需要在项目里新建一个<code>.sentryclirc</code>文件，里面的内容，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">defaults</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">url</span><span class="o">=</span><span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">org</span><span class="o">=</span><span class="nx">sentry</span>
</span></span><span class="line"><span class="cl"><span class="nx">project</span><span class="o">=</span><span class="nx">test</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">auth</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">token</span><span class="o">=</span><span class="mf">104e37</span><span class="nx">d1d6b8ac962205719ef8380981ecbaaf587c166566c7df20372d0d72de</span>
</span></span></code></pre></div><p>然后使用以下命令：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="nx">releases</span> <span class="o">-</span><span class="nx">o</span> <span class="nx">sentry</span> <span class="o">-</span><span class="nx">p</span> <span class="nx">test</span> <span class="nx">files</span> <span class="nx">test</span><span class="err">@</span><span class="mf">1.0</span><span class="p">.</span><span class="mi">0</span> <span class="nx">upload</span><span class="o">-</span><span class="nx">sourcemaps</span> <span class="s1">&#39;./dist/assets/&#39;</span> <span class="o">--</span><span class="nx">url</span><span class="o">-</span><span class="nx">prefix</span> <span class="s1">&#39;~/test/js&#39;</span>
</span></span></code></pre></div><p>这里需要对该命令一些参数说明一下：</p>
<p><code>sentry</code>：组织名</p>
<p><code>test</code>：项目名</p>
<p><code>1.0.0</code>：版本号，需和main.ts里的<code>release: 'test@1.0.0'</code>一致。</p>
<p><code>./dist/assets/</code>：项目打包生成的<code>dist</code>里<code>.map</code>文件所在目录</p>
<p><code>~/test/js</code>：如果部署在服务器上面，不是部署在主目录，而是在<code>test</code>文件夹下面，那就需要加上</p>
<p>在终端显示如下，就表示已经上传成功：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Found</span> <span class="mi">2</span> <span class="nx">release</span> <span class="nx">files</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Analyzing</span> <span class="mi">2</span> <span class="nx">sources</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Analyzing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.47</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Rewriting</span> <span class="nx">sources</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Rewriting</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.534</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Adding</span> <span class="nx">source</span> <span class="nx">map</span> <span class="nx">references</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Bundling</span> <span class="nx">files</span> <span class="k">for</span> <span class="nx">upload</span><span class="p">...</span> <span class="o">~</span><span class="err">/test/js/index-o3HPk7Oz.js.map</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Bundling</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.855</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Optimizing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.017</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Uploading</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">12.873</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Uploaded</span> <span class="nx">release</span> <span class="nx">files</span> <span class="nx">to</span> <span class="nx">Sentry</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Processing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.129</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">File</span> <span class="nx">upload</span> <span class="nx">complete</span> <span class="p">(</span><span class="nx">processing</span> <span class="nx">pending</span> <span class="nx">on</span> <span class="nx">server</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Source</span> <span class="nx">Map</span> <span class="nx">Upload</span> <span class="nx">Report</span>
</span></span><span class="line"><span class="cl">  <span class="nx">Minified</span> <span class="nx">Scripts</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/index-o3HPk7Oz.js (sourcemap at index-o3HPk7Oz.js.map)</span>
</span></span><span class="line"><span class="cl">  <span class="nx">Source</span> <span class="nx">Maps</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/index-o3HPk7Oz.js.map</span>
</span></span></code></pre></div><p>此时，我们可以在<code>Sentry</code>在线系统上面查看到上传的<code>sourcemap</code>文件，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312051953880.png"></p>
</li>
</ol>
<h2 id="7-其他">7. 其他</h2>
<ol>
<li>中英文切换：设置 —  账户 —  详细信息 —  账户详情 — 语言 — Simplified Chinese</li>
<li>时区设置：设置 —  账户 —  详细信息 —  账户详情 —  时区 —  Shanghai</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 37</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-37/</link>
      <pubDate>Sat, 10 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-37/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/check-if-it-is-a-straight-line/&#34;&gt;1232. 缀点成线&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个数组 &lt;code&gt;coordinates&lt;/code&gt; ，其中 &lt;code&gt;coordinates[i] = [x, y]&lt;/code&gt; ， &lt;code&gt;[x, y]&lt;/code&gt; 表示横坐标为 &lt;code&gt;x&lt;/code&gt;、纵坐标为 &lt;code&gt;y&lt;/code&gt; 的点。请你来判断，这些点是否在该坐标系中属于同一条直线上。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408031032533.jpeg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;checkStraightLine&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 两点确定一条直线
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 同一个X轴
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;allEqualX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;every&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;allEqualX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 同一个Y轴
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;allEqualY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;every&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;allEqualY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 对角线
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 斜率
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;slope&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 遍历剩余的坐标点，检查斜率是否一致
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;xi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;yi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coordinates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 避免除以零，并且使用交叉乘积来比较斜率
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;yi&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;xi&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，我们明确需求，即判断一组点是否都在同一直线上。这包括三种情况：所有点的X轴坐标相同、所有点的Y轴坐标相同，或者是这些点构成一条斜线。我们可以使用&lt;code&gt;every&lt;/code&gt;方法遍历数组中的点，对比它们的X轴或Y轴坐标是否相同。&lt;/p&gt;
&lt;p&gt;接下来，对于斜线的判断，我们需要验证这些点的斜率是否一致。如果直接计算斜率 &lt;code&gt;(yi - y0) / (xi - x0)&lt;/code&gt; 并与另一个斜率 &lt;code&gt;(y2 - y1) / (x2 - x1)&lt;/code&gt; 进行比较，而 &lt;code&gt;x2 - x1&lt;/code&gt; 为0时，会遇到除零错误或浮点数精度问题。为了避免这些问题，我们可以使用交叉乘积的方法，即两边同时乘以 &lt;code&gt;(xi - x0) * (x2 - x1)&lt;/code&gt;，从而得到 &lt;code&gt;(yi - y0) * (x1 - x0) == (y1 - y0) * (xi - x0)&lt;/code&gt; 作为斜率是否相等的判断条件。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/check-if-it-is-a-straight-line/">1232. 缀点成线</a></p>
<p>给定一个数组 <code>coordinates</code> ，其中 <code>coordinates[i] = [x, y]</code> ， <code>[x, y]</code> 表示横坐标为 <code>x</code>、纵坐标为 <code>y</code> 的点。请你来判断，这些点是否在该坐标系中属于同一条直线上。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408031032533.jpeg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">coordinates</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">],[</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">],[</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],[</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">checkStraightLine</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">coordinates</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 两点确定一条直线
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="k">if</span> <span class="p">(</span><span class="nx">coordinates</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 同一个X轴
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="kr">const</span> <span class="nx">allEqualX</span> <span class="o">=</span> <span class="nx">coordinates</span><span class="p">.</span><span class="nx">every</span><span class="p">((</span><span class="nx">item</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">===</span> <span class="nx">coordinates</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">allEqualX</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 同一个Y轴
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="kr">const</span> <span class="nx">allEqualY</span> <span class="o">=</span> <span class="nx">coordinates</span><span class="p">.</span><span class="nx">every</span><span class="p">((</span><span class="nx">item</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="nx">coordinates</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">allEqualY</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 对角线
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="kr">const</span> <span class="p">[</span><span class="nx">x0</span><span class="p">,</span> <span class="nx">y0</span><span class="p">]</span> <span class="o">=</span> <span class="nx">coordinates</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="kr">const</span> <span class="p">[</span><span class="nx">x1</span><span class="p">,</span> <span class="nx">y1</span><span class="p">]</span> <span class="o">=</span> <span class="nx">coordinates</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 斜率
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="kr">const</span> <span class="nx">slope</span> <span class="o">=</span> <span class="p">(</span><span class="nx">y1</span> <span class="o">-</span> <span class="nx">y0</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="nx">x1</span> <span class="o">-</span> <span class="nx">x0</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 遍历剩余的坐标点，检查斜率是否一致
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">coordinates</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="p">[</span><span class="nx">xi</span><span class="p">,</span> <span class="nx">yi</span><span class="p">]</span> <span class="o">=</span> <span class="nx">coordinates</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 避免除以零，并且使用交叉乘积来比较斜率
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">((</span><span class="nx">yi</span> <span class="o">-</span> <span class="nx">y0</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="nx">x1</span> <span class="o">-</span> <span class="nx">x0</span><span class="p">)</span> <span class="o">!==</span> <span class="p">(</span><span class="nx">y1</span> <span class="o">-</span> <span class="nx">y0</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="nx">xi</span> <span class="o">-</span> <span class="nx">x0</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，我们明确需求，即判断一组点是否都在同一直线上。这包括三种情况：所有点的X轴坐标相同、所有点的Y轴坐标相同，或者是这些点构成一条斜线。我们可以使用<code>every</code>方法遍历数组中的点，对比它们的X轴或Y轴坐标是否相同。</p>
<p>接下来，对于斜线的判断，我们需要验证这些点的斜率是否一致。如果直接计算斜率 <code>(yi - y0) / (xi - x0)</code> 并与另一个斜率 <code>(y2 - y1) / (x2 - x1)</code> 进行比较，而 <code>x2 - x1</code> 为0时，会遇到除零错误或浮点数精度问题。为了避免这些问题，我们可以使用交叉乘积的方法，即两边同时乘以 <code>(xi - x0) * (x2 - x1)</code>，从而得到 <code>(yi - y0) * (x1 - x0) == (y1 - y0) * (xi - x0)</code> 作为斜率是否相等的判断条件。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2407/240725-mass-tourism.html">Spanish residents take to streets against mass tourism - Breaking News English Lesson</a></p>
<p>西班牙成千上万的人正在抗议大众旅游。在巴塞罗那，居民们用水枪向餐馆里的游客喷射。在马略卡岛上，一万人走上街头，手举横幅，上面写着：“够了！”和“马略卡不出售！”马略卡岛的人们对他们的租金上涨感到愤怒。由于旅游业的发展，当地人几乎无法购买房屋。由于公司正在购买房产以租给游客，房价飙升。Airbnb的一位发言人说：“旅游业从业者无法在自己所在的城市负担得起租金。”她补充说：“我们认为将经济……建立在……旅游业之上是不可持续的，必须改变。”
旅游区的居民有很多抱怨。他们说旅游对他们的生活产生了负面影响。许多人再也找不到住的地方了。一些人不得不搬出家园，因为房东正在提高租金。日常生活也成了问题。公交车和火车上挤满了背包客和拉着行李箱的游客。由于垃圾不断增加，城镇很难保持街道清洁。当地人也抱怨说，由于游客，他们无法在自己喜欢的餐馆吃饭。西班牙并不是唯一一个旅游业成为问题的国家。日本、奥地利和墨西哥已经采取行动，寻求在帮助当地人和可持续旅游业之间找到平衡。</p>
<h2 id="tip">Tip</h2>
<p><code>&lt;img&gt;</code> 动态修改图片颜色</p>
<p>在实现<code>el-menu</code>动态配置菜单图标的时候，因为从字体图标替换成在线获取的<code>.svg</code>图片，所以需要研究下如何实现动态配置颜色，好解决后续各项目不同主题的需求。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="cl"><span class="nt">transform</span><span class="o">:</span> <span class="nt">translateX</span><span class="o">(</span><span class="nt">-80px</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="nt">filter</span><span class="o">:</span> <span class="nt">drop-shadow</span><span class="o">(</span><span class="p">#</span><span class="nn">a80f0f</span> <span class="nt">80px</span> <span class="nt">0</span><span class="o">);</span>
</span></span></code></pre></div><h2 id="share">Share</h2>
<h2 id="独家专访亚马逊-cto-werner-vogels--infoq"><a href="https://mp.weixin.qq.com/s/YAvZPZfTFBLZ3OqnIHJElg">独家专访亚马逊 CTO Werner Vogels | InfoQ </a></h2>
<ol>
<li>各种商业机构和教育平台都能帮我们快速掌握新的编程语言，所以到底选择哪种语言本身已经不那么重要了。</li>
<li>由于技术发展太过迅速，高等教育、大学课程根本就跟不上变化。问问那些刚刚走出校园的学生就知道了，他们对区块链、生成式 AI 等新技术的了解肯定不如我们这些从业者。而且随着技术的采用周期越来越短，产品的上市速度也会远超以往。也就是说，学校里传授的知识不再具有先进性。所以除了编程语言之外，我们在学校中的最大收获就是学习能力，这种学习能力决定我们能否成为技术专家、保持终身钻研。</li>
<li>我认为任何接受过良好基础教育的人都有能力掌握计算机技术，即便专业不同。因为具体学了什么专业并不重要，重要的是教育经历让你掌握了学习能力、知道要如何设立更宏大的目标、如何汇总信息、记在脑子里、进行批判性思考，如此往复。</li>
<li>在实际工作中，我强调“协作”是日常工作的核心。</li>
<li>对于招聘，我更关心候选人是否具备在大学里培养的学习能力，而不仅仅是特定的语言或技术。</li>
<li>技术的变化一刻不停，永远别指望自己毕业之后头一年学到的东西够用一辈子。</li>
<li>但保守并不代表守旧，研究人员还是在努力把成果整合起来，打造出能让消费者们眼前一亮的产品。就像那个有趣的比喻，如果你看到一只熊在跳舞，那最重要的就是它能跳舞，而不是它跳得好不好。希望大家能用类似的心态看待前沿技术，尽量宽容一点。</li>
<li>AI 可以接管一些繁琐的任务，这使得开发者可以更专注于他们真正擅长的工作，如获取和整合信息、做出决策和规划。</li>
<li>人需要肩负起监管的职责。请记住，AI 只是辅助、是帮助我们的工具。它们是在帮我们做预测，而不是替我们做预测，责任永远要由人来承担。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-08 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：猪杂粥、豆浆&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：麻辣烫、无糖生可乐、雪碧、西瓜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408090941954.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;下班就去健身房&lt;/li&gt;
&lt;li&gt;戒掉可乐、饮料&lt;/li&gt;
&lt;li&gt;22:30前睡觉&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：猪杂粥、豆浆</li>
<li>午餐：公司食堂</li>
<li>晚餐：麻辣烫、无糖生可乐、雪碧、西瓜</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408090941954.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>下班就去健身房</li>
<li>戒掉可乐、饮料</li>
<li>22:30前睡觉</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-06 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 06 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：鸡蛋、炒河粉、豆浆&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：蒸土豆、黄瓜、牛奶、无糖生可乐、沙示可乐、气泡苏打水、豆豉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408071147404.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;下班就去健身房&lt;/li&gt;
&lt;li&gt;戒掉可乐、饮料&lt;/li&gt;
&lt;li&gt;23:00前睡觉&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：鸡蛋、炒河粉、豆浆</li>
<li>午餐：公司食堂</li>
<li>晚餐：蒸土豆、黄瓜、牛奶、无糖生可乐、沙示可乐、气泡苏打水、豆豉</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408071147404.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>下班就去健身房</li>
<li>戒掉可乐、饮料</li>
<li>23:00前睡觉</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-05 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 05 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：青椒鸡蛋煎饼、炒河粉、炒油麦菜、鸡蛋、牛奶、豆浆&lt;/li&gt;
&lt;li&gt;午餐：公司食堂、鱼片、卤鸡腿等&lt;/li&gt;
&lt;li&gt;晚餐：蒸土豆、鸡蛋、牛奶、气泡苏打水、老干妈&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408061106380.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;明明下班很早的，但是却能磨叽到10点才出门，干嘛呢？真是气死个人。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：青椒鸡蛋煎饼、炒河粉、炒油麦菜、鸡蛋、牛奶、豆浆</li>
<li>午餐：公司食堂、鱼片、卤鸡腿等</li>
<li>晚餐：蒸土豆、鸡蛋、牛奶、气泡苏打水、老干妈</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408061106380.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>明明下班很早的，但是却能磨叽到10点才出门，干嘛呢？真是气死个人。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-04 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 04 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶&lt;/li&gt;
&lt;li&gt;午餐：猪耳朵、紫色面、煎蛋、青椒、西红柿&lt;/li&gt;
&lt;li&gt;晚餐：无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050941266.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;事实证明，少吃才是最重要的，要保持饥饿感入睡，效果才会明显。晚上没吃，忍一忍，现在体重立马有效果了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶</li>
<li>午餐：猪耳朵、紫色面、煎蛋、青椒、西红柿</li>
<li>晚餐：无</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050941266.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>事实证明，少吃才是最重要的，要保持饥饿感入睡，效果才会明显。晚上没吃，忍一忍，现在体重立马有效果了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-03 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 03 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：紫色蔬菜面、猪皮、猪血、青椒&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：玉米、鸡蛋&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050932213.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;还是坚持下去吧，熬夜啊熬夜，真发愁。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：紫色蔬菜面、猪皮、猪血、青椒</li>
<li>午餐：公司食堂</li>
<li>晚餐：玉米、鸡蛋</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050932213.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>还是坚持下去吧，熬夜啊熬夜，真发愁。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-08-01 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-08-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;不记得了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050932489.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;好久没去了，有半个月了吧。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>不记得了。</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202408050932489.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>好久没去了，有半个月了吧。</p>
]]></content:encoded>
    </item>
    <item>
      <title>解决SonarQube中Vue项目中deep选择器报错的问题</title>
      <link>https://dstweihao.cn/posts/sonarqube/%E8%A7%A3%E5%86%B3sonarqube%E4%B8%ADvue%E9%A1%B9%E7%9B%AE%E4%B8%ADdeep%E9%80%89%E6%8B%A9%E5%99%A8%E6%8A%A5%E9%94%99%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Fri, 19 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/sonarqube/%E8%A7%A3%E5%86%B3sonarqube%E4%B8%ADvue%E9%A1%B9%E7%9B%AE%E4%B8%ADdeep%E9%80%89%E6%8B%A9%E5%99%A8%E6%8A%A5%E9%94%99%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;当使用SonarQube对Vue项目进行代码质量审查时，可能会遭遇因Vue特有的&lt;code&gt;deep&lt;/code&gt;选择器（旨在实现样式深度穿透）而触发的错误或警告。由于SonarQube默认并不识别这一Vue特有的语法，这些错误报告可能会成为审查过程中的干扰项。为了优化审查体验，并专注于更实际的代码质量问题，我们可以通过自定义SonarQube的质量配置文件来忽略这些针对&lt;code&gt;deep&lt;/code&gt;选择器的错误。&lt;/p&gt;
&lt;p&gt;以下是具体的操作步骤，基于SonarQube的通用界面和&lt;a href=&#34;https://community.sonarsource.com/t/how-to-include-a-pseudo-class-selector-in-sonar-rules-deep-vue/79689&#34;&gt;《How to include a pseudo class selector in Sonar rules (deep - Vue)》&lt;/a&gt;社区讨论中的指导。&lt;/p&gt;
&lt;h1 id=&#34;2-创建自定义css质量配置文件&#34;&gt;2. 创建自定义CSS质量配置文件&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;登录到SonarQube的Web界面。&lt;/li&gt;
&lt;li&gt;导航到&lt;strong&gt;Quality Profiles&lt;/strong&gt;页面。&lt;/li&gt;
&lt;li&gt;点击页面上的&lt;strong&gt;Create&lt;/strong&gt;按钮，选择&lt;strong&gt;Copy an existing quality profile&lt;/strong&gt;作为创建方式。&lt;/li&gt;
&lt;li&gt;在弹出的对话框中，设置以下选项：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Language&lt;/strong&gt;：选择&lt;code&gt;CSS&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile to copy&lt;/strong&gt;：选择&lt;code&gt;Sonar Way&lt;/code&gt;作为基础配置文件，因为它包含了SonarQube推荐的CSS最佳实践。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;：输入自定义配置文件的名称，例如&lt;code&gt;CustomVueCSS&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;点击&lt;strong&gt;Create&lt;/strong&gt;完成配置文件的创建。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655180.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3-设置自定义配置文件为默认&#34;&gt;3. 设置自定义配置文件为默认&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;回到&lt;strong&gt;Quality Profiles&lt;/strong&gt;页面，在CSS语言下，你应该能看到刚才创建的&lt;code&gt;CustomVueCSS&lt;/code&gt;配置文件。&lt;/li&gt;
&lt;li&gt;在&lt;code&gt;CustomVueCSS&lt;/code&gt;配置文件旁的&lt;strong&gt;Actions&lt;/strong&gt;列中，点击&lt;strong&gt;Set as Default&lt;/strong&gt;按钮，将其设置为默认的质量配置文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655441.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-修改配置文件以忽略deep选择器&#34;&gt;4. 修改配置文件以忽略deep选择器&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在&lt;strong&gt;Quality Profiles&lt;/strong&gt;页面，找到并点击刚设置为默认的&lt;code&gt;CustomVueCSS&lt;/code&gt;配置文件名称，进入配置文件的详细设置页面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在该页面中，找到并定位到&lt;strong&gt;Pseudo-class selectors should be valid&lt;/strong&gt;这条规则。
&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655374.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击这条规则，定位到&lt;strong&gt;Quality Profiles&lt;/strong&gt;，点击&lt;code&gt;CustomVueCSS&lt;/code&gt;配置文件名称右侧的&lt;strong&gt;Change&lt;/strong&gt;按钮，进入规则的详细配置界面。
&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655488.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在&lt;strong&gt;ignorePseudoClasses&lt;/strong&gt;字段中，添加&lt;code&gt;deep&lt;/code&gt;作为要忽略的伪类选择器。这样，SonarQube在检查CSS代码时将不再报告&lt;code&gt;deep&lt;/code&gt;选择器为无效或错误。
&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655343.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击&lt;strong&gt;Save&lt;/strong&gt;按钮保存更改。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>当使用SonarQube对Vue项目进行代码质量审查时，可能会遭遇因Vue特有的<code>deep</code>选择器（旨在实现样式深度穿透）而触发的错误或警告。由于SonarQube默认并不识别这一Vue特有的语法，这些错误报告可能会成为审查过程中的干扰项。为了优化审查体验，并专注于更实际的代码质量问题，我们可以通过自定义SonarQube的质量配置文件来忽略这些针对<code>deep</code>选择器的错误。</p>
<p>以下是具体的操作步骤，基于SonarQube的通用界面和<a href="https://community.sonarsource.com/t/how-to-include-a-pseudo-class-selector-in-sonar-rules-deep-vue/79689">《How to include a pseudo class selector in Sonar rules (deep - Vue)》</a>社区讨论中的指导。</p>
<h1 id="2-创建自定义css质量配置文件">2. 创建自定义CSS质量配置文件</h1>
<ol>
<li>登录到SonarQube的Web界面。</li>
<li>导航到<strong>Quality Profiles</strong>页面。</li>
<li>点击页面上的<strong>Create</strong>按钮，选择<strong>Copy an existing quality profile</strong>作为创建方式。</li>
<li>在弹出的对话框中，设置以下选项：
<ul>
<li><strong>Language</strong>：选择<code>CSS</code>。</li>
<li><strong>Profile to copy</strong>：选择<code>Sonar Way</code>作为基础配置文件，因为它包含了SonarQube推荐的CSS最佳实践。</li>
<li><strong>Name</strong>：输入自定义配置文件的名称，例如<code>CustomVueCSS</code>。</li>
</ul>
</li>
<li>点击<strong>Create</strong>完成配置文件的创建。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655180.png"></p>
<h1 id="3-设置自定义配置文件为默认">3. 设置自定义配置文件为默认</h1>
<ol>
<li>回到<strong>Quality Profiles</strong>页面，在CSS语言下，你应该能看到刚才创建的<code>CustomVueCSS</code>配置文件。</li>
<li>在<code>CustomVueCSS</code>配置文件旁的<strong>Actions</strong>列中，点击<strong>Set as Default</strong>按钮，将其设置为默认的质量配置文件。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655441.png"></p>
<h1 id="4-修改配置文件以忽略deep选择器">4. 修改配置文件以忽略deep选择器</h1>
<ol>
<li>
<p>在<strong>Quality Profiles</strong>页面，找到并点击刚设置为默认的<code>CustomVueCSS</code>配置文件名称，进入配置文件的详细设置页面。</p>
</li>
<li>
<p>在该页面中，找到并定位到<strong>Pseudo-class selectors should be valid</strong>这条规则。
<img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655374.png"></p>
</li>
<li>
<p>点击这条规则，定位到<strong>Quality Profiles</strong>，点击<code>CustomVueCSS</code>配置文件名称右侧的<strong>Change</strong>按钮，进入规则的详细配置界面。
<img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655488.png"></p>
</li>
<li>
<p>在<strong>ignorePseudoClasses</strong>字段中，添加<code>deep</code>作为要忽略的伪类选择器。这样，SonarQube在检查CSS代码时将不再报告<code>deep</code>选择器为无效或错误。
<img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407191655343.png"></p>
</li>
<li>
<p>点击<strong>Save</strong>按钮保存更改。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-11 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-11-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 11 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-11-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、热狗、纯牛奶、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：鱼腩荷叶蒸饭&lt;/li&gt;
&lt;li&gt;晚餐：烧鹅、米饭、蜜雪珍珠奶茶、蜜雪红茶、无糖可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407150926164.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;什么都变得没有任何意思。不就是减个肥嘛，没什么这啊那啊的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、热狗、纯牛奶、鸡蛋</li>
<li>午餐：鱼腩荷叶蒸饭</li>
<li>晚餐：烧鹅、米饭、蜜雪珍珠奶茶、蜜雪红茶、无糖可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407150926164.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>什么都变得没有任何意思。不就是减个肥嘛，没什么这啊那啊的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-10 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 10 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：菠萝包、豆浆&lt;/li&gt;
&lt;li&gt;午餐：红烧肉酸菜荷叶蒸饭&lt;/li&gt;
&lt;li&gt;晚餐：烧鹅、米饭、蜜雪珍珠奶茶、蜜雪红茶、无糖可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407110903239.jpg&#34; style=&#34;zoom: 80%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;不能被任何事情影响到每日去健身房的任务、自己的工作计划。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;体重没觉得有变化，回到86.2kg了，之前已经是84.8kg了，又回去了，看来还是吃多了，显而易见的问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：菠萝包、豆浆</li>
<li>午餐：红烧肉酸菜荷叶蒸饭</li>
<li>晚餐：烧鹅、米饭、蜜雪珍珠奶茶、蜜雪红茶、无糖可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407110903239.jpg" style="zoom: 80%;" />
<h2 id="总结">总结</h2>
<ol>
<li>
<p>不能被任何事情影响到每日去健身房的任务、自己的工作计划。</p>
</li>
<li>
<p>体重没觉得有变化，回到86.2kg了，之前已经是84.8kg了，又回去了，看来还是吃多了，显而易见的问题。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-09 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 09 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、煮鸡蛋、豆浆、青菜&lt;/li&gt;
&lt;li&gt;午餐：鸡蛋猪肉荷叶蒸饭&lt;/li&gt;
&lt;li&gt;晚餐：一个苹果、无糖可乐、纯水乐苏打水&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407100919295.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;换成其他的跑步机，爬坡坡度可以到16，但是感觉很累。&lt;/li&gt;
&lt;li&gt;体重反而升了，看来还是吃多了，奇怪了，晚上明明都没吃饭。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、煮鸡蛋、豆浆、青菜</li>
<li>午餐：鸡蛋猪肉荷叶蒸饭</li>
<li>晚餐：一个苹果、无糖可乐、纯水乐苏打水</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407100919295.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>换成其他的跑步机，爬坡坡度可以到16，但是感觉很累。</li>
<li>体重反而升了，看来还是吃多了，奇怪了，晚上明明都没吃饭。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-08 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 08 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、煮鸡蛋、豆浆、青菜&lt;/li&gt;
&lt;li&gt;午餐：公司食堂、河粉、红烧豆腐、肉片&lt;/li&gt;
&lt;li&gt;晚餐：酸菜饺子、凉拌素菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407090918297.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;回去立马去健身房，9点半才去，何苦呢？匆匆忙忙的。&lt;/li&gt;
&lt;li&gt;晚上不要吃太多东西了，今早体重都没掉，还升了，何苦呢？&lt;/li&gt;
&lt;li&gt;目标70kg，薄荷健康App的时间节点为11月初。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、煮鸡蛋、豆浆、青菜</li>
<li>午餐：公司食堂、河粉、红烧豆腐、肉片</li>
<li>晚餐：酸菜饺子、凉拌素菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407090918297.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>回去立马去健身房，9点半才去，何苦呢？匆匆忙忙的。</li>
<li>晚上不要吃太多东西了，今早体重都没掉，还升了，何苦呢？</li>
<li>目标70kg，薄荷健康App的时间节点为11月初。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-07 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 07 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：煮玉米、烤肠、煮鸡蛋、纯牛奶&lt;/li&gt;
&lt;li&gt;午餐：蜜雪珍珠奶茶、华莱士全鸡、啤酒味饮料、鸡肉汉堡、无糖可乐&lt;/li&gt;
&lt;li&gt;晚餐：无糖可乐、苏打气泡水&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿上下，68kg，50次&lt;/li&gt;
&lt;li&gt;肩部，50kg，20次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407081139777.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;可能是坚持去健身房，有些效果了，现在心率都不升了，说明强度开始不够了，要增加运动强度。&lt;/li&gt;
&lt;li&gt;今天算是吃大餐了，早知如此，可能还是去吃肯德基吮指鸡好了。毕竟之前很想吃 ，但是，忍住了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：煮玉米、烤肠、煮鸡蛋、纯牛奶</li>
<li>午餐：蜜雪珍珠奶茶、华莱士全鸡、啤酒味饮料、鸡肉汉堡、无糖可乐</li>
<li>晚餐：无糖可乐、苏打气泡水</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿上下，68kg，50次</li>
<li>肩部，50kg，20次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407081139777.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>可能是坚持去健身房，有些效果了，现在心率都不升了，说明强度开始不够了，要增加运动强度。</li>
<li>今天算是吃大餐了，早知如此，可能还是去吃肯德基吮指鸡好了。毕竟之前很想吃 ，但是，忍住了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 36</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-36/</link>
      <pubDate>Sun, 07 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-36/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/shuffle-string/&#34;&gt;1528. 重新排列字符串&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;s&lt;/code&gt; 和一个 &lt;strong&gt;长度相同&lt;/strong&gt; 的整数数组 &lt;code&gt;indices&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;请你重新排列字符串 &lt;code&gt;s&lt;/code&gt; ，其中第 &lt;code&gt;i&lt;/code&gt; 个字符需要移动到 &lt;code&gt;indices[i]&lt;/code&gt; 指示的位置。&lt;/p&gt;
&lt;p&gt;返回重新排列后的字符串。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/07/26/q1.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;codeleet&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;indices&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;leetcode&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;如上图所示&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;codeleet&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;重新排列后变为&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;leetcode&amp;#34;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;restoreString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;indices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;indices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;题目很简单，只需要遍历&lt;code&gt;indices&lt;/code&gt;数组，对于每个遍历到的索引&lt;code&gt;i&lt;/code&gt;，我们取出&lt;code&gt;indices[i]&lt;/code&gt;的值，这个值直接对应了字符串&lt;code&gt;s&lt;/code&gt;中某个字符的索引。然后，我们根据这个索引从&lt;code&gt;s&lt;/code&gt;中取出相应的字符，并将这些字符按照&lt;code&gt;indices&lt;/code&gt;数组的顺序依次拼接起来，形成新的字符串。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2406/240624-medicinal-plants.html&#34;&gt;Chimpanzees use medicinal plants when sick - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;人类自史前时代起便开始使用药用植物，至今全球各地仍在使用传统草药。科学家首次发现黑猩猩也会寻找森林中的果实来为自己治病。英国牛津大学的研究人员在乌干达的布东戈中央森林保护区对黑猩猩的行为进行了研究。研究人员跟踪了一只手部受伤的黑猩猩，发现它在寻找一种蕨类植物的叶子。这种蕨类植物可能具有减轻黑猩猩手部肿胀的功效。另一只患有寄生虫感染的黑猩猩则寻找猫棘树的树皮，这有助于缓解它的病情。&lt;/p&gt;
&lt;p&gt;研究团队表示，黑猩猩的疾病和受伤情况与它们所食用的植物的药用特性之间存在很强的相关性。研究人员测试了不属于黑猩猩正常饮食的植物提取物，发现88%的提取物具有抗菌特性，33%的提取物具有抗炎特性。研究员兼人类学家艾洛蒂·弗雷曼博士表示：“药理学研究结果表明，布东戈的黑猩猩会食用多种具有强大药用特性的植物。”她说，她的团队对灵长类动物行为的研究可能为我们在生活中更广泛地使用自然疗法铺平道路。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;Vue Next&lt;/code&gt;项目开发过程中，我们需要调试一些鼠标悬停才会出现的元素，比如&lt;code&gt;Element Plus&lt;/code&gt; 里的 &lt;code&gt;&amp;lt;el-dropdown&amp;gt;&lt;/code&gt; 组件，如要修改它下拉菜单的背景色，可使用鼠标悬停显示下拉框，然后按下快捷键 &lt;code&gt;Ctrl + Shift + C&lt;/code&gt; 触发视图查看，再点击下拉框即可获取&lt;code&gt;Class&lt;/code&gt;名称进行修改，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407050954853.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407051007783.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;p&gt;每个人所要追求的东西并不一样，没必要强人所难，说过一两次就够了，平常心对待，说到底，只不过一份工作而已，承载不了太多的东西。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/shuffle-string/">1528. 重新排列字符串</a></p>
<p>给你一个字符串 <code>s</code> 和一个 <strong>长度相同</strong> 的整数数组 <code>indices</code> 。</p>
<p>请你重新排列字符串 <code>s</code> ，其中第 <code>i</code> 个字符需要移动到 <code>indices[i]</code> 指示的位置。</p>
<p>返回重新排列后的字符串。</p>
<p><img alt="img" loading="lazy" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/07/26/q1.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;codeleet&#34;</span><span class="p">,</span> <span class="nx">indices</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="s2">&#34;leetcode&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">如上图所示</span><span class="err">，</span><span class="s2">&#34;codeleet&#34;</span> <span class="nx">重新排列后变为</span> <span class="s2">&#34;leetcode&#34;</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">restoreString</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="nx">indices</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">indices</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">result</span> <span class="o">+=</span> <span class="nx">s</span><span class="p">[</span><span class="nx">indices</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">i</span><span class="p">)];</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>题目很简单，只需要遍历<code>indices</code>数组，对于每个遍历到的索引<code>i</code>，我们取出<code>indices[i]</code>的值，这个值直接对应了字符串<code>s</code>中某个字符的索引。然后，我们根据这个索引从<code>s</code>中取出相应的字符，并将这些字符按照<code>indices</code>数组的顺序依次拼接起来，形成新的字符串。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2406/240624-medicinal-plants.html">Chimpanzees use medicinal plants when sick - Breaking News English Lesson</a></p>
<p>人类自史前时代起便开始使用药用植物，至今全球各地仍在使用传统草药。科学家首次发现黑猩猩也会寻找森林中的果实来为自己治病。英国牛津大学的研究人员在乌干达的布东戈中央森林保护区对黑猩猩的行为进行了研究。研究人员跟踪了一只手部受伤的黑猩猩，发现它在寻找一种蕨类植物的叶子。这种蕨类植物可能具有减轻黑猩猩手部肿胀的功效。另一只患有寄生虫感染的黑猩猩则寻找猫棘树的树皮，这有助于缓解它的病情。</p>
<p>研究团队表示，黑猩猩的疾病和受伤情况与它们所食用的植物的药用特性之间存在很强的相关性。研究人员测试了不属于黑猩猩正常饮食的植物提取物，发现88%的提取物具有抗菌特性，33%的提取物具有抗炎特性。研究员兼人类学家艾洛蒂·弗雷曼博士表示：“药理学研究结果表明，布东戈的黑猩猩会食用多种具有强大药用特性的植物。”她说，她的团队对灵长类动物行为的研究可能为我们在生活中更广泛地使用自然疗法铺平道路。</p>
<h2 id="tip">Tip</h2>
<p>在<code>Vue Next</code>项目开发过程中，我们需要调试一些鼠标悬停才会出现的元素，比如<code>Element Plus</code> 里的 <code>&lt;el-dropdown&gt;</code> 组件，如要修改它下拉菜单的背景色，可使用鼠标悬停显示下拉框，然后按下快捷键 <code>Ctrl + Shift + C</code> 触发视图查看，再点击下拉框即可获取<code>Class</code>名称进行修改，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407050954853.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407051007783.png"></p>
<h2 id="share">Share</h2>
<p>每个人所要追求的东西并不一样，没必要强人所难，说过一两次就够了，平常心对待，说到底，只不过一份工作而已，承载不了太多的东西。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-06 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 06 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、煎鸡蛋、皮蛋瘦肉粥&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：炸串、珍珠奶茶、无糖可乐、苏打气泡水&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407081138515.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早点去健身房&lt;/li&gt;
&lt;li&gt;不要熬夜&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、煎鸡蛋、皮蛋瘦肉粥</li>
<li>午餐：公司食堂</li>
<li>晚餐：炸串、珍珠奶茶、无糖可乐、苏打气泡水</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407081138515.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早点去健身房</li>
<li>不要熬夜</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 35</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-35/</link>
      <pubDate>Sat, 06 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-35/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/latest-time-you-can-obtain-after-replacing-characters/&#34;&gt;3114. 替换字符可以得到的最晚时间&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;s&lt;/code&gt;，表示一个 12 小时制的时间格式，其中一些数字（可能没有）被 &lt;code&gt;&amp;quot;?&amp;quot;&lt;/code&gt; 替换。&lt;/p&gt;
&lt;p&gt;12 小时制时间格式为 &lt;code&gt;&amp;quot;HH:MM&amp;quot;&lt;/code&gt; ，其中 &lt;code&gt;HH&lt;/code&gt; 的取值范围为 &lt;code&gt;00&lt;/code&gt; 至 &lt;code&gt;11&lt;/code&gt;，&lt;code&gt;MM&lt;/code&gt; 的取值范围为 &lt;code&gt;00&lt;/code&gt; 至 &lt;code&gt;59&lt;/code&gt;。最早的时间为 &lt;code&gt;00:00&lt;/code&gt;，最晚的时间为 &lt;code&gt;11:59&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你需要将 &lt;code&gt;s&lt;/code&gt; 中的 &lt;strong&gt;所有&lt;/strong&gt; &lt;code&gt;&amp;quot;?&amp;quot;&lt;/code&gt; 字符替换为数字，使得结果字符串代表的时间是一个 &lt;strong&gt;有效&lt;/strong&gt; 的 12 小时制时间，并且是可能的 &lt;strong&gt;最晚&lt;/strong&gt; 时间。&lt;/p&gt;
&lt;p&gt;返回结果字符串。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1?:?4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;11:54&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;通过替换&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;字符&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;可以得到的最晚12小时制时间是&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;11:54&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;findLatestTime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;replacementDigits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;9&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;9&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;replacementDigits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sub&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;replacementString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;replacementString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;timeString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;replacementString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;11&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replacementString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sub&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;replacementString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，将&lt;code&gt;&amp;quot;HH:MM&amp;quot;&lt;/code&gt;的每个时分最大取值明确，然后如果是&lt;code&gt;?&lt;/code&gt;就替换成对应索引的数值，这样可以满足通用的情况下 ，在这个基础上，对特殊情况进行处理，然后得出想要的结果。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2406/240606-army-recruits.html&#34;&gt;Top US doctor wants social media health warnings - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/latest-time-you-can-obtain-after-replacing-characters/">3114. 替换字符可以得到的最晚时间</a></p>
<p>给你一个字符串 <code>s</code>，表示一个 12 小时制的时间格式，其中一些数字（可能没有）被 <code>&quot;?&quot;</code> 替换。</p>
<p>12 小时制时间格式为 <code>&quot;HH:MM&quot;</code> ，其中 <code>HH</code> 的取值范围为 <code>00</code> 至 <code>11</code>，<code>MM</code> 的取值范围为 <code>00</code> 至 <code>59</code>。最早的时间为 <code>00:00</code>，最晚的时间为 <code>11:59</code>。</p>
<p>你需要将 <code>s</code> 中的 <strong>所有</strong> <code>&quot;?&quot;</code> 字符替换为数字，使得结果字符串代表的时间是一个 <strong>有效</strong> 的 12 小时制时间，并且是可能的 <strong>最晚</strong> 时间。</p>
<p>返回结果字符串。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span> <span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;1?:?4&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span> <span class="s2">&#34;11:54&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span> <span class="nx">通过替换</span> <span class="s2">&#34;?&#34;</span> <span class="nx">字符</span><span class="err">，</span><span class="nx">可以得到的最晚12小时制时间是</span> <span class="s2">&#34;11:54&#34;</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">findLatestTime</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeString</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">replacementDigits</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;1&#34;</span><span class="p">,</span> <span class="s2">&#34;9&#34;</span><span class="p">,</span> <span class="s2">&#34;0&#34;</span><span class="p">,</span> <span class="s2">&#34;5&#34;</span><span class="p">,</span> <span class="s2">&#34;9&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">timeString</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="kr">char</span> <span class="o">=</span> <span class="nx">timeString</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="kr">char</span> <span class="o">===</span> <span class="s2">&#34;?&#34;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="kr">char</span> <span class="o">=</span> <span class="nx">replacementDigits</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="nx">result</span> <span class="o">+=</span> <span class="kr">char</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">sub</span> <span class="o">=</span> <span class="nx">result</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">replacementString</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">timeString</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">===</span> <span class="s2">&#34;?&#34;</span> <span class="o">&amp;&amp;</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">sub</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">11</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">replacementString</span> <span class="o">=</span> <span class="s2">&#34;0&#34;</span> <span class="o">+</span> <span class="nx">timeString</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">timeString</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="s2">&#34;?&#34;</span> <span class="o">&amp;&amp;</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">sub</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">11</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">replacementString</span> <span class="o">=</span> <span class="s2">&#34;11&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">replacementString</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">result</span> <span class="o">=</span> <span class="nx">result</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">sub</span><span class="p">,</span> <span class="nx">replacementString</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，将<code>&quot;HH:MM&quot;</code>的每个时分最大取值明确，然后如果是<code>?</code>就替换成对应索引的数值，这样可以满足通用的情况下 ，在这个基础上，对特殊情况进行处理，然后得出想要的结果。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2406/240606-army-recruits.html">Top US doctor wants social media health warnings - Breaking News English Lesson</a></p>
<p>社交媒体已经改变了世界。它既有好的一面，也有坏的一面。其中一个不好的地方是，它可能导致心理健康问题。这是美国顶级医生想要解决的问题。美国卫生与公共服务部部长维韦克·穆尔西希望社交媒体公司在其平台上发布有关心理健康的警告。他尤其担心这些平台对年轻人的伤害。他说算法导致年轻人接触到极端色情和暴力内容。穆尔西博士说：“现在是时候要求在社交媒体平台上贴上卫生与公共服务部长的警告标签了，指出社交媒体与青少年心理健康的严重损害有关。”他还表示，需要法律来保护年轻人在网络上的安全。</p>
<p>多年来，穆尔西博士一直在为加强对社交媒体的管控而奔走呼吁。2023年，他警告说，社交媒体对儿童和青少年的心理健康和福祉构成“严重的伤害风险”。他最近的警告发表在《纽约时报》的一篇客座文章中。他写道：“年轻人面临的心理健康危机是一场紧急事件。社交媒体已成为一个重要的促成因素。”他担心年轻人花在网络上的时间太长。他说“每天花费三个多小时在社交媒体上的年轻人面临焦虑和抑郁症状的风险是其他人的两倍。”穆尔西认为，就像香烟上的警告一样，在线警告也会有所帮助。</p>
<h2 id="tip">Tip</h2>
<p>Cookie Banner是指网站上出现的一种通知条，用于告知用户该网站使用Cookie等技术来收集、存储和处理用户数据，并且需要用户同意这些数据的使用。通常，Cookie Banner会包含一个简要的说明，告知用户使用Cookie的目的和类型，以及提供一个同意或拒绝的选项。此外，还可能包含一个链接，指向更详细的隐私政策或Cookie策略页面。</p>
<p>Cookie政策是网站提供给用户的一份声明，解释了网站如何使用Cookie（一种小型文本文件），以及与Cookie相关的数据收集和隐私保护措施。Cookie是一种存储在用户计算机上的文本文件，它包含有关用户访问网站的信息。许多网站使用Cookie来跟踪用户行为，例如记住用户首选项、购物车信息、广告和其他内容。Cookie政策通常包括以下信息：</p>
<ol>
<li>网站使用Cookie的目的和类型。</li>
<li>与Cookie相关的数据如何收集、存储和使用。</li>
<li>用户如何控制Cookie的使用和删除Cookie。</li>
<li>如何保护用户数据隐私。</li>
<li>Cookie政策的更新和变更如何通知用户。</li>
</ol>
<h2 id="share">Share</h2>
<p>既要，又要，还要。</p>
<p>不可能“我全都要的”，只能有所取舍，有失才有得。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-05 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 05 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、青菜、鸡蛋、豆浆&lt;/li&gt;
&lt;li&gt;午餐：藤椒鱼片、炖汤、2碗米饭、青菜&lt;/li&gt;
&lt;li&gt;晚餐：牛肉捞烩面、百事气泡苏打水、无糖可乐2听&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407060953582.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早点去健身房&lt;/li&gt;
&lt;li&gt;不要熬夜&lt;/li&gt;
&lt;li&gt;减少无糖可乐&lt;/li&gt;
&lt;li&gt;不吃超量&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、青菜、鸡蛋、豆浆</li>
<li>午餐：藤椒鱼片、炖汤、2碗米饭、青菜</li>
<li>晚餐：牛肉捞烩面、百事气泡苏打水、无糖可乐2听</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407060953582.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早点去健身房</li>
<li>不要熬夜</li>
<li>减少无糖可乐</li>
<li>不吃超量</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-04 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、青菜、豆浆&lt;/li&gt;
&lt;li&gt;午餐：猪红、排骨、河粉&lt;/li&gt;
&lt;li&gt;晚餐：一个苹果、百事气泡苏打水、无糖可乐一听&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407050939322.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早点去健身房，要事第一，做好就好了。&lt;/li&gt;
&lt;li&gt;不要熬夜了，熬夜太多次了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、青菜、豆浆</li>
<li>午餐：猪红、排骨、河粉</li>
<li>晚餐：一个苹果、百事气泡苏打水、无糖可乐一听</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407050939322.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早点去健身房，要事第一，做好就好了。</li>
<li>不要熬夜了，熬夜太多次了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-03 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶&lt;/li&gt;
&lt;li&gt;午餐：台湾卤肉、2碗米饭&lt;/li&gt;
&lt;li&gt;晚餐：无糖生可乐一听、冰柜绿豆沙、无糖可口可乐一瓶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;大腿内存，5档，68kg，50次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407040949597.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;最近感觉迷上了无糖生可乐，这不是一个好的迹象。&lt;/li&gt;
&lt;li&gt;熬夜会想减脂效果大打折扣。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶</li>
<li>午餐：台湾卤肉、2碗米饭</li>
<li>晚餐：无糖生可乐一听、冰柜绿豆沙、无糖可口可乐一瓶</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>大腿内存，5档，68kg，50次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407040949597.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>最近感觉迷上了无糖生可乐，这不是一个好的迹象。</li>
<li>熬夜会想减脂效果大打折扣。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-01-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶&lt;/li&gt;
&lt;li&gt;午餐：酸菜炒肉、煮肉片、鸡蛋面&lt;/li&gt;
&lt;li&gt;晚餐：凉拌菜、一块猪耳朵、无糖生可乐一丁、无糖可口可乐一瓶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿30次，75kg&lt;/li&gt;
&lt;li&gt;肩膀20次，50kg&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407020908864.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;中午还是不要吃粉面了，容易吃多了，导致晚上都不好吃什么。就算吃也只要一份肉好了。&lt;/li&gt;
&lt;li&gt;可乐还是要戒了，虽然是无糖的，虽然很爽，但还是会有影响的。本来就不应该喝的，要慢慢戒掉。&lt;/li&gt;
&lt;li&gt;如果昨晚能够忍住不吃凉拌菜+猪耳朵，一定会降的，其实也没特别想吃这个，哪怕煮玉米也比这个稳妥。&lt;/li&gt;
&lt;li&gt;去健身房，宜早不宜晚。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶</li>
<li>午餐：酸菜炒肉、煮肉片、鸡蛋面</li>
<li>晚餐：凉拌菜、一块猪耳朵、无糖生可乐一丁、无糖可口可乐一瓶</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿30次，75kg</li>
<li>肩膀20次，50kg</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407020908864.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>中午还是不要吃粉面了，容易吃多了，导致晚上都不好吃什么。就算吃也只要一份肉好了。</li>
<li>可乐还是要戒了，虽然是无糖的，虽然很爽，但还是会有影响的。本来就不应该喝的，要慢慢戒掉。</li>
<li>如果昨晚能够忍住不吃凉拌菜+猪耳朵，一定会降的，其实也没特别想吃这个，哪怕煮玉米也比这个稳妥。</li>
<li>去健身房，宜早不宜晚。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-07-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-07-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶&lt;/li&gt;
&lt;li&gt;午餐：梅菜扣肉、红烧狮子头、2碗米饭&lt;/li&gt;
&lt;li&gt;晚餐：无糖生可乐一听、冰柜珍珠奶茶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407031016100.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;中午吃了梅干扣肉、红烧狮子头，2碗米饭，然后就算了下热量，远远超过了，然后打算晚上不吃东西了，总是有点忍不住的感觉，很想吃东西，但事实忍住了，去完健身房，晚上和了一听无糖冰可乐，然后是一个在超市买的奶茶。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：鸡蛋、玉米、蒙牛脱脂纯牛奶</li>
<li>午餐：梅菜扣肉、红烧狮子头、2碗米饭</li>
<li>晚餐：无糖生可乐一听、冰柜珍珠奶茶</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407031016100.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>中午吃了梅干扣肉、红烧狮子头，2碗米饭，然后就算了下热量，远远超过了，然后打算晚上不吃东西了，总是有点忍不住的感觉，很想吃东西，但事实忍住了，去完健身房，晚上和了一听无糖冰可乐，然后是一个在超市买的奶茶。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-30 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-30-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-30-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：大份炒河粉、豆浆&lt;/li&gt;
&lt;li&gt;午餐：珍珠奶茶、苹果、零食青豆等零食&lt;/li&gt;
&lt;li&gt;晚餐：玉米、鸡蛋、牛奶、无糖可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010944929.jpg&#34; style=&#34;zoom: 33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早上练车去了，所以在外面吃了炒河粉，份量还是很足的，打了一上午方向盘，下午2点回来。&lt;/li&gt;
&lt;li&gt;因为没觉得饿，又有点想喝珍珠奶茶，所以，只能不吃午饭了，就和珍珠奶茶，然后吃苹果、零食。&lt;/li&gt;
&lt;li&gt;把买的零食清空了，吃光了就不打算再买了。&lt;/li&gt;
&lt;li&gt;晚上还是想吃大餐，还是忍住了，还是老老实实煮玉米吃吧。实在馋就喝无糖可乐。无糖可乐也不能经常喝，还是要戒掉。&lt;/li&gt;
&lt;li&gt;看到别人练得好，一身肌肉，其实也很羡慕的。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：大份炒河粉、豆浆</li>
<li>午餐：珍珠奶茶、苹果、零食青豆等零食</li>
<li>晚餐：玉米、鸡蛋、牛奶、无糖可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010944929.jpg" style="zoom: 33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早上练车去了，所以在外面吃了炒河粉，份量还是很足的，打了一上午方向盘，下午2点回来。</li>
<li>因为没觉得饿，又有点想喝珍珠奶茶，所以，只能不吃午饭了，就和珍珠奶茶，然后吃苹果、零食。</li>
<li>把买的零食清空了，吃光了就不打算再买了。</li>
<li>晚上还是想吃大餐，还是忍住了，还是老老实实煮玉米吃吧。实在馋就喝无糖可乐。无糖可乐也不能经常喝，还是要戒掉。</li>
<li>看到别人练得好，一身肌肉，其实也很羡慕的。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 29 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：炒河粉、煎蛋&lt;/li&gt;
&lt;li&gt;午餐：公司食堂，多蔬菜，少量肉&lt;/li&gt;
&lt;li&gt;晚餐：猪耳朵炒辣椒盖浇面、无糖可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010937038.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;今天过来加班，然后晚上回去还是拖拉了很久才去的。&lt;/li&gt;
&lt;li&gt;早上吃了炒河粉，晚上又吃了面，所以感觉还是有点吃多了的。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：炒河粉、煎蛋</li>
<li>午餐：公司食堂，多蔬菜，少量肉</li>
<li>晚餐：猪耳朵炒辣椒盖浇面、无糖可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010937038.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>今天过来加班，然后晚上回去还是拖拉了很久才去的。</li>
<li>早上吃了炒河粉，晚上又吃了面，所以感觉还是有点吃多了的。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-28 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 28 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶&lt;/li&gt;
&lt;li&gt;午餐：公司食堂，多蔬菜，少量肉&lt;/li&gt;
&lt;li&gt;晚餐：不记得了&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010933669.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;超级想吃肯德基原味鸡，但是，一看一块热量就快400了，还是算了吧，好不容易刚有点状态，不能一下子就破功了。&lt;/li&gt;
&lt;li&gt;本来有点不想去了，拖拉了那么久才去的，所以忙完都10点多了。不管那么多了，总之，能坚持去就行，其他都不重要。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶</li>
<li>午餐：公司食堂，多蔬菜，少量肉</li>
<li>晚餐：不记得了</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407010933669.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>超级想吃肯德基原味鸡，但是，一看一块热量就快400了，还是算了吧，好不容易刚有点状态，不能一下子就破功了。</li>
<li>本来有点不想去了，拖拉了那么久才去的，所以忙完都10点多了。不管那么多了，总之，能坚持去就行，其他都不重要。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-27 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶&lt;/li&gt;
&lt;li&gt;午餐：公司食堂，大白菜，少量肉&lt;/li&gt;
&lt;li&gt;晚餐：焖面、一碗面汤、若干零食&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406280947216.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;一下子就落下一周了，真的不能中断，一中断要再捡起来会变得特别困难。&lt;/li&gt;
&lt;li&gt;午餐、晚餐都要主要，午餐尽量做到8/2的素荤比例，晚餐自己做。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶</li>
<li>午餐：公司食堂，大白菜，少量肉</li>
<li>晚餐：焖面、一碗面汤、若干零食</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406280947216.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>一下子就落下一周了，真的不能中断，一中断要再捡起来会变得特别困难。</li>
<li>午餐、晚餐都要主要，午餐尽量做到8/2的素荤比例，晚餐自己做。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-21 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 21 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶、牛肉丸&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：玉米/酸菜猪肉饺子&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406240914299.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;本来不打算吃了，但是回来还是去吃下饺子了，当时都快10点了。属于是先去运动了，然后再吃晚饭。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶、牛肉丸</li>
<li>午餐：公司食堂</li>
<li>晚餐：玉米/酸菜猪肉饺子</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406240914299.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>本来不打算吃了，但是回来还是去吃下饺子了，当时都快10点了。属于是先去运动了，然后再吃晚饭。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 34</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-34/</link>
      <pubDate>Fri, 21 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-34/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/average-value-of-even-numbers-that-are-divisible-by-three/&#34;&gt;2455. 可被三整除的偶数的平均值&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个由正整数组成的整数数组 &lt;code&gt;nums&lt;/code&gt; ，返回其中可被 &lt;code&gt;3&lt;/code&gt; 整除的所有偶数的平均值。&lt;/p&gt;
&lt;p&gt;注意：&lt;code&gt;n&lt;/code&gt; 个元素的平均值等于 &lt;code&gt;n&lt;/code&gt; 个元素 &lt;strong&gt;求和&lt;/strong&gt; 再除以 &lt;code&gt;n&lt;/code&gt; ，结果 &lt;strong&gt;向下取整&lt;/strong&gt; 到最接近的整数。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;是可以被&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;整除的偶数&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;averageValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;floor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;因为可被&lt;code&gt;3&lt;/code&gt;整除的判断条件为&lt;code&gt;nums[i] % 3 === 0&lt;/code&gt;，偶数的判断条件为&lt;code&gt;nums[i] % 2 === 0&lt;/code&gt;，所以可以合起来为&lt;code&gt;nums[i] % 6 === 0&lt;/code&gt;，然后，再使用&lt;code&gt;total&lt;/code&gt;来记录求和值，&lt;code&gt;count&lt;/code&gt;来记录次数，相除即可得到想要的平均值。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2406/240606-army-recruits.html&#34;&gt;Australia to allow foreign citizens into its army - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;澳大利亚很快将允许非澳大利亚人参军。来自英国、加拿大和新西兰等国家的人可以申请加入澳大利亚国防军(ADF)。澳大利亚在招人参军方面遇到了问题。政府希望向其他国家的人开放军队以解决征兵问题。ADF目前缺少约4400名工人。从7月起，在澳大利亚永久居住的新西兰人可以申请加入。明年，来自英国、美国和加拿大的学生将有机会。澳大利亚国防部长理查德·马尔斯(Richard Marles)表示，未来可能会有更多国家的人加入。&lt;/p&gt;
&lt;p&gt;马勒斯表示，出于安全考虑，法国正在改变征兵政策。他说:“澳大利亚政府选择发展澳大利亚国防军，因为这对于应对未来十年乃至更长时间内的国家安全挑战至关重要。”国防部发言人说:“为了发展国防军，我们采取了大胆的行动。从更广泛的人群中招募人才将有助于确保(ADF)反映澳大利亚的全面多样性，并能够吸引(所有)澳大利亚社会的人才。”反对党外交部长西蒙·伯明翰不同意这项政策。他说，这显示了政府的失败。他说:“我们应该看到更多的澳大利亚人有信心报名参加。”&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;Math.floor() 、Math.ceil() 和 Math.round()&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/average-value-of-even-numbers-that-are-divisible-by-three/">2455. 可被三整除的偶数的平均值</a></p>
<p>给你一个由正整数组成的整数数组 <code>nums</code> ，返回其中可被 <code>3</code> 整除的所有偶数的平均值。</p>
<p>注意：<code>n</code> 个元素的平均值等于 <code>n</code> 个元素 <strong>求和</strong> 再除以 <code>n</code> ，结果 <strong>向下取整</strong> 到最接近的整数。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">15</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">9</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="mi">6</span> <span class="nx">和</span> <span class="mi">12</span> <span class="nx">是可以被</span> <span class="mi">3</span> <span class="nx">整除的偶数</span><span class="err">。</span><span class="p">(</span><span class="mi">6</span> <span class="o">+</span> <span class="mi">12</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">=</span> <span class="mi">9</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">averageValue</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">total</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">%</span> <span class="mi">6</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">total</span> <span class="o">+=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">      <span class="nx">count</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="nx">count</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">total</span> <span class="o">/</span> <span class="nx">count</span><span class="p">)</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>因为可被<code>3</code>整除的判断条件为<code>nums[i] % 3 === 0</code>，偶数的判断条件为<code>nums[i] % 2 === 0</code>，所以可以合起来为<code>nums[i] % 6 === 0</code>，然后，再使用<code>total</code>来记录求和值，<code>count</code>来记录次数，相除即可得到想要的平均值。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2406/240606-army-recruits.html">Australia to allow foreign citizens into its army - Breaking News English Lesson</a></p>
<p>澳大利亚很快将允许非澳大利亚人参军。来自英国、加拿大和新西兰等国家的人可以申请加入澳大利亚国防军(ADF)。澳大利亚在招人参军方面遇到了问题。政府希望向其他国家的人开放军队以解决征兵问题。ADF目前缺少约4400名工人。从7月起，在澳大利亚永久居住的新西兰人可以申请加入。明年，来自英国、美国和加拿大的学生将有机会。澳大利亚国防部长理查德·马尔斯(Richard Marles)表示，未来可能会有更多国家的人加入。</p>
<p>马勒斯表示，出于安全考虑，法国正在改变征兵政策。他说:“澳大利亚政府选择发展澳大利亚国防军，因为这对于应对未来十年乃至更长时间内的国家安全挑战至关重要。”国防部发言人说:“为了发展国防军，我们采取了大胆的行动。从更广泛的人群中招募人才将有助于确保(ADF)反映澳大利亚的全面多样性，并能够吸引(所有)澳大利亚社会的人才。”反对党外交部长西蒙·伯明翰不同意这项政策。他说，这显示了政府的失败。他说:“我们应该看到更多的澳大利亚人有信心报名参加。”</p>
<h2 id="tip">Tip</h2>
<p>Math.floor() 、Math.ceil() 和 Math.round()</p>
<ol>
<li>Math.floor()，向下取整，Math.floor(5.96) = 5。</li>
<li>Math.ceil()，向上取整，Math.ceil(5.96) = 6。</li>
<li>Math.round()，四舍五入，取其值的绝对值进行四舍五入，如果原数是负数，结果保持为负。比如Math.round(5.96) = 6；Math.round(-5.0001) = -5。</li>
</ol>
<h2 id="share">Share</h2>
<p>第二名就是头号输家。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-20 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶、牛肉丸&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：不记得了&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406240913681.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;没什么好说的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶、牛肉丸</li>
<li>午餐：公司食堂</li>
<li>晚餐：不记得了</li>
</ol>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406240913681.jpg"></p>
<h2 id="总结">总结</h2>
<p>没什么好说的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 33</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-33/</link>
      <pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-33/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/special-array-i/&#34;&gt;3151. 特殊数组 I&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果数组的每一对相邻元素都是两个奇偶性不同的数字，则该数组被认为是一个 &lt;strong&gt;特殊数组&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;Aging 有一个整数数组 &lt;code&gt;nums&lt;/code&gt;。如果 &lt;code&gt;nums&lt;/code&gt; 是一个 &lt;strong&gt;特殊数组&lt;/strong&gt; ，返回 &lt;code&gt;true&lt;/code&gt;，否则返回 &lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;只有两对相邻元素&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;它们都包含了奇偶性不同的数字&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;因此答案为&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isArraySpecial&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;一开始想到的方案是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果nums[0] 为偶数时，只要遍历偶数索引，其值如果出现奇数，则返回false&lt;/li&gt;
&lt;li&gt;如果nums[0] 为奇数时，只要遍历偶数索引，其值如果出现偶数，则返回false&lt;/li&gt;
&lt;li&gt;否则，返回true&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但是，出现相邻为奇数或偶数时，是不满足条件的，因为两个条件分开判断的，所以，还是把问题想复杂化了，其实处理起来很简单，只需要判断相邻的两个数，只要出现一次奇偶性相同，则为false，否则为true。&lt;/p&gt;
&lt;p&gt;但这里，也引申出了一个问题，检查数组边界和和不检查数组边界，哪个效率更高一点？&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 检查数组边界
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 不检查数组边界
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一般来说，前者因为有一个比较的操作，所以，会影响到实际代码执行效率，但是，避免了潜在的数组越界错误；后者，没有这个比较操作，但是会有潜在数据越界错误。从健壮性和避免潜在错误的角度考虑，第一个方式是更推荐的写法。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2406/240603-rising-sea-levels.html&#34;&gt;Panama evacuates islanders due to rising sea levels - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上升的海平面导致巴拿马撤离了其中一个岛屿的居民。位于巴拿马加勒比海岸的小岛加尔迪·苏格杜布的居民正在被重新安置到内陆。然而，一名巴拿马政府官员表示，一些人拒绝撤离他们的祖居。他们将一直留到最后一刻。巴拿马政府表示，加尔迪·苏格杜布是即将发生的事情的一个迹象，因为更多的低洼岛屿正面临被海水吞没的威胁。巴拿马环境部门最近的一项研究估计，该国将失去2.01%的沿海领土。该研究还指出，将有大约38,000人需要搬迁，成本约为12亿美元。&lt;/p&gt;
&lt;p&gt;加尔迪·苏格杜布一直是世代居住的古纳族人的家园。这个拥挤的岛屿只有366米长和137米宽，却曾经是将近300个家庭的家园。他们依靠捕鱼和旅游业谋生。24岁的岛民纳丁·莫拉莱斯说：“我们有点难过……但海水一点一点地淹没了这个岛屿。”她补充道：“最近，我发现气候变化产生了重大影响……潮汐的水位比以前更高，而且酷热难当。”莫拉莱斯女士表示，她希望她的社区在新的地点能够繁荣。她的新家将位于距离船只前往加尔迪·苏格杜布的港口两公里处，这是一项价值1200万美元的政府开发项目。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;git 切换分支&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/special-array-i/">3151. 特殊数组 I</a></p>
<p>如果数组的每一对相邻元素都是两个奇偶性不同的数字，则该数组被认为是一个 <strong>特殊数组</strong> 。</p>
<p>Aging 有一个整数数组 <code>nums</code>。如果 <code>nums</code> 是一个 <strong>特殊数组</strong> ，返回 <code>true</code>，否则返回 <code>false</code>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">只有两对相邻元素</span><span class="err">：</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="nx">和</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span><span class="err">，</span><span class="nx">它们都包含了奇偶性不同的数字</span><span class="err">，</span><span class="nx">因此答案为</span> <span class="kc">true</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">isArraySpecial</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">!==</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>一开始想到的方案是：</p>
<ol>
<li>如果nums[0] 为偶数时，只要遍历偶数索引，其值如果出现奇数，则返回false</li>
<li>如果nums[0] 为奇数时，只要遍历偶数索引，其值如果出现偶数，则返回false</li>
<li>否则，返回true</li>
</ol>
<p>但是，出现相邻为奇数或偶数时，是不满足条件的，因为两个条件分开判断的，所以，还是把问题想复杂化了，其实处理起来很简单，只需要判断相邻的两个数，只要出现一次奇偶性相同，则为false，否则为true。</p>
<p>但这里，也引申出了一个问题，检查数组边界和和不检查数组边界，哪个效率更高一点？</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// 检查数组边界
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">!==</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">   <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// 不检查数组边界
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">   <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>一般来说，前者因为有一个比较的操作，所以，会影响到实际代码执行效率，但是，避免了潜在的数组越界错误；后者，没有这个比较操作，但是会有潜在数据越界错误。从健壮性和避免潜在错误的角度考虑，第一个方式是更推荐的写法。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2406/240603-rising-sea-levels.html">Panama evacuates islanders due to rising sea levels - Breaking News English Lesson</a></p>
<p>上升的海平面导致巴拿马撤离了其中一个岛屿的居民。位于巴拿马加勒比海岸的小岛加尔迪·苏格杜布的居民正在被重新安置到内陆。然而，一名巴拿马政府官员表示，一些人拒绝撤离他们的祖居。他们将一直留到最后一刻。巴拿马政府表示，加尔迪·苏格杜布是即将发生的事情的一个迹象，因为更多的低洼岛屿正面临被海水吞没的威胁。巴拿马环境部门最近的一项研究估计，该国将失去2.01%的沿海领土。该研究还指出，将有大约38,000人需要搬迁，成本约为12亿美元。</p>
<p>加尔迪·苏格杜布一直是世代居住的古纳族人的家园。这个拥挤的岛屿只有366米长和137米宽，却曾经是将近300个家庭的家园。他们依靠捕鱼和旅游业谋生。24岁的岛民纳丁·莫拉莱斯说：“我们有点难过……但海水一点一点地淹没了这个岛屿。”她补充道：“最近，我发现气候变化产生了重大影响……潮汐的水位比以前更高，而且酷热难当。”莫拉莱斯女士表示，她希望她的社区在新的地点能够繁荣。她的新家将位于距离船只前往加尔迪·苏格杜布的港口两公里处，这是一项价值1200万美元的政府开发项目。</p>
<h2 id="tip">Tip</h2>
<p>git 切换分支</p>
<ol>
<li>git branch  查看当前分支</li>
<li>git branch -r 查看远程仓库的分支列表</li>
<li>git checkout <branch-name> 切换到已存在的分支</li>
<li>git checkout -b <new-branch-name> 创建并切换到新分支</li>
</ol>
<p>在切换分支前，确保你的工作目录是干净的（没有未提交的更改）。如果有未提交的更改，可以使用<code>git stash</code>命令将其暂存起来，然后再切换分支。</p>
<h2 id="share">Share</h2>
<p>布利斯定理：用较多的时间为一次工作事前计划，做这项工作所用的总时间就会减少。</p>
<ol>
<li>启示1：事前先思考，事后少烦恼。</li>
<li>启示2：事先做计划，成功概率大。</li>
<li>启示3：拆分大目标，再各个击破。</li>
</ol>
<p>凡事预则立，不立则废，好计划是成功的开始。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-19 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-19-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、牛奶、牛肉丸&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：玉米饺子、珍珠奶茶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406200858607.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早一点去健身房，吃掉那一只青蛙。&lt;/li&gt;
&lt;li&gt;中午多吃点蔬菜，少点肉食。&lt;/li&gt;
&lt;li&gt;早点睡觉。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、牛奶、牛肉丸</li>
<li>午餐：公司食堂</li>
<li>晚餐：玉米饺子、珍珠奶茶</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406200858607.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早一点去健身房，吃掉那一只青蛙。</li>
<li>中午多吃点蔬菜，少点肉食。</li>
<li>早点睡觉。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-18 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 18 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、烤肠&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：猪肉、河粉、西红柿、豆腐、鸡蛋&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;前后拉肩，50kg，20次。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406190920175.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早一点去健身房，可以边爬坡边看B站动漫。&lt;/li&gt;
&lt;li&gt;不喝无糖可乐了&lt;/li&gt;
&lt;li&gt;早点睡觉&lt;/li&gt;
&lt;li&gt;中午和晚上还是吃多了一点，再减少一点，或者增加蔬菜的份量。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、烤肠</li>
<li>午餐：公司食堂</li>
<li>晚餐：猪肉、河粉、西红柿、豆腐、鸡蛋</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>前后拉肩，50kg，20次。</li>
</ol>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406190920175.jpg"></p>
<h2 id="总结">总结</h2>
<ol>
<li>早一点去健身房，可以边爬坡边看B站动漫。</li>
<li>不喝无糖可乐了</li>
<li>早点睡觉</li>
<li>中午和晚上还是吃多了一点，再减少一点，或者增加蔬菜的份量。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 17 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋、烤肠&lt;/li&gt;
&lt;li&gt;午餐：公司食堂&lt;/li&gt;
&lt;li&gt;晚餐：菠菜、河粉、鸡蛋&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;前后拉肩，50kg，50次。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406190916721.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;什么也不用多说，坚持下去，不要找任何借口。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋、烤肠</li>
<li>午餐：公司食堂</li>
<li>晚餐：菠菜、河粉、鸡蛋</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>前后拉肩，50kg，50次。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406190916721.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>什么也不用多说，坚持下去，不要找任何借口。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 32</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-32/</link>
      <pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-32/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/number-of-good-pairs/&#34;&gt;1512. 好数对的数目&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;nums&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;如果一组数字 &lt;code&gt;(i,j)&lt;/code&gt; 满足 &lt;code&gt;nums[i]&lt;/code&gt; == &lt;code&gt;nums[j]&lt;/code&gt; 且 &lt;code&gt;i&lt;/code&gt; &amp;lt; &lt;code&gt;j&lt;/code&gt; ，就可以认为这是一组 &lt;strong&gt;好数对&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;返回好数对的数目。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;有&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;组好数对&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;分别是&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;下标从&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;开始&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;numIdenticalPairs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;题目相对简单，使用for遍历两次，加上条件判断，累计出现好书对次数即可。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2405/240530-national-service.html&#34;&gt;UK leader wants national service for 18-year-olds  - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;英国首相里希·苏纳克计划为18岁年轻人引入国民服役制度，如果他所在的党派在7月4日的英国大选中获胜，他将推行强制国民服役。根据他的计划，年轻人满18岁时将有两个选择：一是花一年时间在陆军、海军或空军服役，政府预计约有3万人会选择这一选项；二是每月一个周末从事志愿工作，比如为英国的国民卫生服务体系、急救服务、消防服务或地方社区提供服务。苏纳克表示，这将帮助年轻人获得宝贵技能，并有助于“建设更强大的国家文化”。&lt;/p&gt;
&lt;p&gt;然而，苏纳克的计划遭到了许多人的批评。各种专家表示，该计划成本过高，且英国没有足够的人员来培训3万名军队志愿者。许多国防专家认为这一想法不切实际。前海军司令艾伦·韦斯特表示，虽然他对更多年轻人意识到国防的重要性感到高兴，但这一想法是“荒谬的”。他认为政府需要增加国防开支，而国民服役制度将“榨取”国防资金。许多年轻人也不同意这一计划，认为它剥夺了他们的自由。然而，一名17岁的年轻人表示，这将给许多年轻人带来目标，并指出国民服役制度在数十个国家都运作良好。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;升级 package.json 中全部依赖包到最新版本&lt;/p&gt;
&lt;p&gt;在 Vue 项目 package.json 中，要将全部依赖包升级至最新版本，可以使用工具 &lt;a href=&#34;https://github.com/raineorshine/npm-check-updates&#34;&gt;npm-check-updates &lt;/a&gt;实现，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406111552312.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;全局安装&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;check&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;updates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者，npx安装&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npx&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;check&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;updates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查并显示最新版本&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ncu&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;u&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;重新安装&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/number-of-good-pairs/">1512. 好数对的数目</a></p>
<p>给你一个整数数组 <code>nums</code> 。</p>
<p>如果一组数字 <code>(i,j)</code> 满足 <code>nums[i]</code> == <code>nums[j]</code> 且 <code>i</code> &lt; <code>j</code> ，就可以认为这是一组 <strong>好数对</strong> 。</p>
<p>返回好数对的数目。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">有</span> <span class="mi">4</span> <span class="nx">组好数对</span><span class="err">，</span><span class="nx">分别是</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="err">，</span><span class="nx">下标从</span> <span class="mi">0</span> <span class="nx">开始</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">numIdenticalPairs</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">==</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">j</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">count</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">count</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>题目相对简单，使用for遍历两次，加上条件判断，累计出现好书对次数即可。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2405/240530-national-service.html">UK leader wants national service for 18-year-olds  - Breaking News English Lesson</a></p>
<p>英国首相里希·苏纳克计划为18岁年轻人引入国民服役制度，如果他所在的党派在7月4日的英国大选中获胜，他将推行强制国民服役。根据他的计划，年轻人满18岁时将有两个选择：一是花一年时间在陆军、海军或空军服役，政府预计约有3万人会选择这一选项；二是每月一个周末从事志愿工作，比如为英国的国民卫生服务体系、急救服务、消防服务或地方社区提供服务。苏纳克表示，这将帮助年轻人获得宝贵技能，并有助于“建设更强大的国家文化”。</p>
<p>然而，苏纳克的计划遭到了许多人的批评。各种专家表示，该计划成本过高，且英国没有足够的人员来培训3万名军队志愿者。许多国防专家认为这一想法不切实际。前海军司令艾伦·韦斯特表示，虽然他对更多年轻人意识到国防的重要性感到高兴，但这一想法是“荒谬的”。他认为政府需要增加国防开支，而国民服役制度将“榨取”国防资金。许多年轻人也不同意这一计划，认为它剥夺了他们的自由。然而，一名17岁的年轻人表示，这将给许多年轻人带来目标，并指出国民服役制度在数十个国家都运作良好。</p>
<h2 id="tip">Tip</h2>
<p>升级 package.json 中全部依赖包到最新版本</p>
<p>在 Vue 项目 package.json 中，要将全部依赖包升级至最新版本，可以使用工具 <a href="https://github.com/raineorshine/npm-check-updates">npm-check-updates </a>实现，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406111552312.png"></p>
<p>全局安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="o">-</span><span class="nx">g</span> <span class="nx">npm</span><span class="o">-</span><span class="nx">check</span><span class="o">-</span><span class="nx">updates</span>
</span></span></code></pre></div><p>或者，npx安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npx</span> <span class="nx">npm</span><span class="o">-</span><span class="nx">check</span><span class="o">-</span><span class="nx">updates</span>
</span></span></code></pre></div><p>检查并显示最新版本</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">ncu</span> <span class="o">-</span><span class="nx">u</span>
</span></span></code></pre></div><p>重新安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span>
</span></span></code></pre></div><p>至此，完成。</p>
<h2 id="share">Share</h2>
<p>第一次知道技术胖，是在2018年，当时看他的博客学了一下Weex，然后是Flutter，后来没怎么关注了，没想到现在退休回老家当保安了，财富自由就是可以任性，不过，生活才是最重要的。最近，看了他新发布的这篇文章。</p>
<p><a href="https://juejin.cn/post/7314916944934518784">给年轻程序员的三点启示 | 程序软技能-01 - 掘金 (juejin.cn)</a></p>
<p>“我从06年开始进入编程领域，做过Java、Python、PHP，前端，现在已经回到自己的家乡，和母亲生活再一起，过着梦寐以求的田园生活。在编程领域摸爬滚打了16年，通过这个文章，我希望能给小伙伴一些启发。现在我已经退出职场，也不准备作培训和卖课，所以分享文章的目的很简单，就是想我在程序领域走过的弯路和踩过的坑，小伙伴不要再走一遍或者再踩坑了。”</p>
<p>“启示一：尽早作自己喜欢的事。”</p>
<p>“启示二：抛开代码与人沟通。”</p>
<p>“启示三：慢慢建立个人权威。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>《吸血鬼猎人D》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%90%B8%E8%A1%80%E9%AC%BC%E7%8C%8E%E4%BA%BAd%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%90%B8%E8%A1%80%E9%AC%BC%E7%8C%8E%E4%BA%BAd%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在B站无意中发现了一部动漫电影《吸血鬼猎人D》，看着封面还不错，就试着点开了视频，看了一会儿，发现画面很精美，人物造型高大威猛，肌肉线条清晰可见。如果我没记错的话，这种风格在日本动漫中，好像盛行于八九十年代，《北斗神拳》就是这种风格的代表。自己小学三年级左右看的日本动漫《鸦天狗卡布都》（又名《天下无敌超级忍者》）也是这种风格。&lt;/p&gt;
&lt;p&gt;好多年前，我看了《范海辛》电影，追完了《黑夜传说》系列电影，对吸血鬼和狼人的故事很感兴趣，在B站反复看了电影解说。本来一直想要看《暮光之城》系列的，但是一直没有看成。&lt;/p&gt;
&lt;p&gt;所以，这一次我决定好好看下这部动漫电影。&lt;/p&gt;
&lt;p&gt;电影讲述了在遥远的未来，吸血鬼猎人D接受委托，深入吸血鬼的领地，与邪恶势力展开殊死搏斗，以解救被吸血鬼贵族玛埃尔绑架的纯真少女夏洛特。在惊心动魄的战斗中，D不仅展现了超凡的战斗技巧和智慧，还揭示了夏洛特与吸血鬼贵族玛埃尔之间错综复杂的情感纠葛，展现了一个充满爱情、牺牲与勇气的世界。&lt;/p&gt;
&lt;h2 id=&#34;d的两次出场&#34;&gt;D的两次出场&lt;/h2&gt;
&lt;p&gt;电影一开场，就是吸血鬼贵族玛埃尔掳走夏洛特的情节，所到之处，灯火熄灭，玫瑰凋零，营造着一种恐怖的氛围。但随着D出场，在炎炎烈日之下，一人一马，这种让人恐怖的感觉瞬间消散，这是D的第一次出场。&lt;/p&gt;
&lt;p&gt;D的第二次出场，是和玛克斯兄妹相遇。这次相遇设计得很巧妙，随着玛克斯老大对着D所在方向射出急箭，在那个月圆之下，铁马扬蹄，披风飞扬，D一手抓住了来箭。加上音乐的渲染，管弦乐营造出一种末世的悲壮感，这一幕实在让人震撼，帅爆了有没有！&lt;/p&gt;
&lt;p&gt;帅哥美女，谁不爱看？所以，我一直无法理解，老美近年来一些影视作品中的政治正确趋势。特别是最近荷兰弟主演的《罗密欧与猪过夜》，这简直是对经典的亵渎。还有前年备受期待的《指环王》电视剧《力量之戒》，里面非要加入黑人精灵的角色，这让我瞬间失去了兴趣。再加上罗伯特·阿拉马约演的年轻精灵王爱隆，那形象简直让人无法直视，这鞋拔子脸不去犁地可惜了，哪里有什么贵族气质，我直接选择了弃剧。&lt;/p&gt;
&lt;p&gt;在这个背景之下，对《吸血鬼猎人D》这部动漫电影如此着迷，也就在意料之中了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032313838.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032307853.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;电影中的风景&#34;&gt;电影中的风景&lt;/h2&gt;
&lt;p&gt;电影《吸血鬼猎人D》中的风景，着实令人叹为观止，每一帧都仿佛是一幅精心绘制的壁纸，展现了手绘艺术的巅峰之作。在这样精美又宏大的场景下，一人一马的身影更显得孤傲而大气。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032329700.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;首先映入眼帘的是一望无垠的沙漠之地，烈日当空，远处泛起青色的天色，营造出一种孤寂而神秘的氛围。在这片寂静的沙漠中，D的身影显得尤为突出，他的坚定与冷静仿佛成为了这片荒凉之地的唯一亮点。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032332231.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;紧接着，一群沙漠蝠魟鱼突然飞起，打破了沙漠的宁静。D骑马跳过这些生物，继续前行。在驰骋的过程中，可以看到古老的巨大科技遗物矗立在沙漠之中，这些遗迹与周围的自然环境形成了鲜明的对比，让人不禁感叹时间的流逝和文明的变迁。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032335458.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;可以说，这部电影中的风景画面是极为出色的。它们不仅展现了独特的视觉效果，更通过画面传达了一种深沉的情感和史诗般的故事氛围。&lt;/p&gt;
&lt;h2 id=&#34;人物的造型&#34;&gt;人物的造型&lt;/h2&gt;
&lt;p&gt;人物绘画得很精美，除了高大立体，装扮也很出彩。比如吸血鬼贵族玛埃尔的鬓发挂上珠子，真的非常精美。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122213134.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;夏洛特的造型也非常出色，充分展现了她的纯真与美丽。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122217202.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;剧情和设定&#34;&gt;剧情和设定&lt;/h2&gt;
&lt;p&gt;电影的剧情因为年代久远的原因，显得中规中矩，这是很正常的。故事套路就那么多，你借鉴一点他借鉴一点，大家看得多了，就不觉得有什么稀奇的了。就像很多人说《沙丘》剧情很老套一样，都是因为影视化太晚，一些巧妙的设定，早被其他电影借鉴完了。&lt;/p&gt;
&lt;p&gt;《火影忍者》这部动漫，应该是借鉴了《吸血鬼猎人D》中很多的人物设定。比如，鹿丸的影子术和贵族三杰中的“影子使者”技能很相似，千手柱间的木遁和“千面人”的技能也很像，君麻吕和长门的一些设定与格罗夫的情况相似等等。还有，《犬夜叉》中杀生丸使用十六夜来设计犬夜叉的方式和《吸血鬼猎人D》中最后的大战中，卡蜜拉使用的幻术，利用D的母亲制造幻象，企图抓住D的心结进行进攻，这两个设定如出一辙。&lt;/p&gt;
&lt;h2 id=&#34;冷酷与温情&#34;&gt;冷酷与温情&lt;/h2&gt;
&lt;p&gt;D人物看似寡言少语，冷酷无情，但实际上，他的内心非常柔软。他虽然是吸血鬼和人类所生的混血儿，在两边都不受待见，但他一直都压制住吸血鬼的血统，而使用人类的方式生活。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406130001033.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在看到蕾拉深受重伤时，他本可以袖手旁观，但他没有。&lt;/p&gt;
&lt;p&gt;在小镇的情节中，蕾拉本来要设计陷害D，但在马商老头那里，她知道了D的过往。这一段让我特别泪目，是全片最高能的部分，通过他人之口，交代了D的伟大事迹和遭遇的不公，但他毫无怨言。&lt;/p&gt;
&lt;p&gt;小镇不允许吸血鬼贵族和混血儿进入，所以D来这里买马时招来了小镇上的治安官，准备对其发难。但马商老头开始讲述，几十年前，吸血鬼贵族掳走了小镇上的十几个小孩。因为对方是恐怖的贵族，所以小镇不得不雇佣强大的吸血鬼猎人。吸血鬼猎人以一敌多，把小孩全都救回来了。但事情结束之后，镇上的人们连一句道谢的话都没有说，就把猎人赶出了小镇，因为那个猎人是个混血儿，人们害怕他身上一半的吸血鬼血统。马商老头说完，直接举枪对准了治安官，说到，那个猎人就是D，几十年前，他就是被D所救的十几个小孩之一：&lt;/p&gt;
&lt;p&gt;“我到现在仍清楚地记得你的模样，那顶宽边的帽子，胸前的坠饰，背上的长剑，还有那样俊美的脸庞，跟那个时候一模一样。果然混血儿是不会老的啊。”&lt;/p&gt;
&lt;p&gt;他心思细腻，在第一次和吸血鬼贵族玛埃尔交手时，就注意到了夏洛特在担心玛埃尔的安危，显然另有隐情。&lt;/p&gt;
&lt;p&gt;在最终大战中，和玛埃尔交手时，D本可以了结对方，但是，在知道这一切都只是因为相爱，玛埃尔和夏洛特并没有想要伤害任何人，只是不想遭受世间他人的偏见，选择离开这个世界，去往遥远的星海。&lt;/p&gt;
&lt;p&gt;所以，他心软了，剑没有选择刺中玛埃尔的要害。&lt;/p&gt;
&lt;p&gt;电影最后，随着玛埃尔和夏洛特乘坐太空飞船，去往外太空，优美的旋律在耳边响起，带着对美好的祝愿，在这一刻仿佛变成恒星，永远闪耀在银河之中。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406130020541.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;D的人设和我非常喜欢的《火影忍者》中的第四代火影——波风水门很像，都是坚毅而温暖的美男子，只是没有波风水门那么平易近人，D显得极为高冷和淡然。不过话说回来，活了几千年，经历过多少生死，早就难以起一丝波澜了。&lt;/p&gt;
&lt;p&gt;电影的最后，D去参加蕾拉的葬礼，碰到了蕾拉的小孙女，在小女孩邀请D去她家时，露出了全片唯一的一丝微笑，他此次前来正是为了赴约，快百年前答应的那一件事情：&lt;/p&gt;
&lt;p&gt;“不要同情我，如果你真的可怜我的话，等我死后在我的坟前放上一朵小花吧。因为你这个人似乎很爱多管闲事。”&lt;/p&gt;
&lt;p&gt;不知道为什么，我有一种沧海桑田的感觉，如同《倚天屠龙记》中张三丰看到郭襄遗书时的感慨：&lt;/p&gt;
&lt;p&gt;“张三丰瞧着郭襄的遗书，眼前似乎又看到了那个明慧潇洒的少女，可是，那是一百年前的事了。”&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122332566.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>在B站无意中发现了一部动漫电影《吸血鬼猎人D》，看着封面还不错，就试着点开了视频，看了一会儿，发现画面很精美，人物造型高大威猛，肌肉线条清晰可见。如果我没记错的话，这种风格在日本动漫中，好像盛行于八九十年代，《北斗神拳》就是这种风格的代表。自己小学三年级左右看的日本动漫《鸦天狗卡布都》（又名《天下无敌超级忍者》）也是这种风格。</p>
<p>好多年前，我看了《范海辛》电影，追完了《黑夜传说》系列电影，对吸血鬼和狼人的故事很感兴趣，在B站反复看了电影解说。本来一直想要看《暮光之城》系列的，但是一直没有看成。</p>
<p>所以，这一次我决定好好看下这部动漫电影。</p>
<p>电影讲述了在遥远的未来，吸血鬼猎人D接受委托，深入吸血鬼的领地，与邪恶势力展开殊死搏斗，以解救被吸血鬼贵族玛埃尔绑架的纯真少女夏洛特。在惊心动魄的战斗中，D不仅展现了超凡的战斗技巧和智慧，还揭示了夏洛特与吸血鬼贵族玛埃尔之间错综复杂的情感纠葛，展现了一个充满爱情、牺牲与勇气的世界。</p>
<h2 id="d的两次出场">D的两次出场</h2>
<p>电影一开场，就是吸血鬼贵族玛埃尔掳走夏洛特的情节，所到之处，灯火熄灭，玫瑰凋零，营造着一种恐怖的氛围。但随着D出场，在炎炎烈日之下，一人一马，这种让人恐怖的感觉瞬间消散，这是D的第一次出场。</p>
<p>D的第二次出场，是和玛克斯兄妹相遇。这次相遇设计得很巧妙，随着玛克斯老大对着D所在方向射出急箭，在那个月圆之下，铁马扬蹄，披风飞扬，D一手抓住了来箭。加上音乐的渲染，管弦乐营造出一种末世的悲壮感，这一幕实在让人震撼，帅爆了有没有！</p>
<p>帅哥美女，谁不爱看？所以，我一直无法理解，老美近年来一些影视作品中的政治正确趋势。特别是最近荷兰弟主演的《罗密欧与猪过夜》，这简直是对经典的亵渎。还有前年备受期待的《指环王》电视剧《力量之戒》，里面非要加入黑人精灵的角色，这让我瞬间失去了兴趣。再加上罗伯特·阿拉马约演的年轻精灵王爱隆，那形象简直让人无法直视，这鞋拔子脸不去犁地可惜了，哪里有什么贵族气质，我直接选择了弃剧。</p>
<p>在这个背景之下，对《吸血鬼猎人D》这部动漫电影如此着迷，也就在意料之中了。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032313838.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032307853.png"></p>
<h2 id="电影中的风景">电影中的风景</h2>
<p>电影《吸血鬼猎人D》中的风景，着实令人叹为观止，每一帧都仿佛是一幅精心绘制的壁纸，展现了手绘艺术的巅峰之作。在这样精美又宏大的场景下，一人一马的身影更显得孤傲而大气。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032329700.png"></p>
<p>首先映入眼帘的是一望无垠的沙漠之地，烈日当空，远处泛起青色的天色，营造出一种孤寂而神秘的氛围。在这片寂静的沙漠中，D的身影显得尤为突出，他的坚定与冷静仿佛成为了这片荒凉之地的唯一亮点。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032332231.png"></p>
<p>紧接着，一群沙漠蝠魟鱼突然飞起，打破了沙漠的宁静。D骑马跳过这些生物，继续前行。在驰骋的过程中，可以看到古老的巨大科技遗物矗立在沙漠之中，这些遗迹与周围的自然环境形成了鲜明的对比，让人不禁感叹时间的流逝和文明的变迁。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406032335458.png"></p>
<p>可以说，这部电影中的风景画面是极为出色的。它们不仅展现了独特的视觉效果，更通过画面传达了一种深沉的情感和史诗般的故事氛围。</p>
<h2 id="人物的造型">人物的造型</h2>
<p>人物绘画得很精美，除了高大立体，装扮也很出彩。比如吸血鬼贵族玛埃尔的鬓发挂上珠子，真的非常精美。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122213134.png"></p>
<p>夏洛特的造型也非常出色，充分展现了她的纯真与美丽。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122217202.png"></p>
<h2 id="剧情和设定">剧情和设定</h2>
<p>电影的剧情因为年代久远的原因，显得中规中矩，这是很正常的。故事套路就那么多，你借鉴一点他借鉴一点，大家看得多了，就不觉得有什么稀奇的了。就像很多人说《沙丘》剧情很老套一样，都是因为影视化太晚，一些巧妙的设定，早被其他电影借鉴完了。</p>
<p>《火影忍者》这部动漫，应该是借鉴了《吸血鬼猎人D》中很多的人物设定。比如，鹿丸的影子术和贵族三杰中的“影子使者”技能很相似，千手柱间的木遁和“千面人”的技能也很像，君麻吕和长门的一些设定与格罗夫的情况相似等等。还有，《犬夜叉》中杀生丸使用十六夜来设计犬夜叉的方式和《吸血鬼猎人D》中最后的大战中，卡蜜拉使用的幻术，利用D的母亲制造幻象，企图抓住D的心结进行进攻，这两个设定如出一辙。</p>
<h2 id="冷酷与温情">冷酷与温情</h2>
<p>D人物看似寡言少语，冷酷无情，但实际上，他的内心非常柔软。他虽然是吸血鬼和人类所生的混血儿，在两边都不受待见，但他一直都压制住吸血鬼的血统，而使用人类的方式生活。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406130001033.png"></p>
<p>在看到蕾拉深受重伤时，他本可以袖手旁观，但他没有。</p>
<p>在小镇的情节中，蕾拉本来要设计陷害D，但在马商老头那里，她知道了D的过往。这一段让我特别泪目，是全片最高能的部分，通过他人之口，交代了D的伟大事迹和遭遇的不公，但他毫无怨言。</p>
<p>小镇不允许吸血鬼贵族和混血儿进入，所以D来这里买马时招来了小镇上的治安官，准备对其发难。但马商老头开始讲述，几十年前，吸血鬼贵族掳走了小镇上的十几个小孩。因为对方是恐怖的贵族，所以小镇不得不雇佣强大的吸血鬼猎人。吸血鬼猎人以一敌多，把小孩全都救回来了。但事情结束之后，镇上的人们连一句道谢的话都没有说，就把猎人赶出了小镇，因为那个猎人是个混血儿，人们害怕他身上一半的吸血鬼血统。马商老头说完，直接举枪对准了治安官，说到，那个猎人就是D，几十年前，他就是被D所救的十几个小孩之一：</p>
<p>“我到现在仍清楚地记得你的模样，那顶宽边的帽子，胸前的坠饰，背上的长剑，还有那样俊美的脸庞，跟那个时候一模一样。果然混血儿是不会老的啊。”</p>
<p>他心思细腻，在第一次和吸血鬼贵族玛埃尔交手时，就注意到了夏洛特在担心玛埃尔的安危，显然另有隐情。</p>
<p>在最终大战中，和玛埃尔交手时，D本可以了结对方，但是，在知道这一切都只是因为相爱，玛埃尔和夏洛特并没有想要伤害任何人，只是不想遭受世间他人的偏见，选择离开这个世界，去往遥远的星海。</p>
<p>所以，他心软了，剑没有选择刺中玛埃尔的要害。</p>
<p>电影最后，随着玛埃尔和夏洛特乘坐太空飞船，去往外太空，优美的旋律在耳边响起，带着对美好的祝愿，在这一刻仿佛变成恒星，永远闪耀在银河之中。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406130020541.png"></p>
<p>D的人设和我非常喜欢的《火影忍者》中的第四代火影——波风水门很像，都是坚毅而温暖的美男子，只是没有波风水门那么平易近人，D显得极为高冷和淡然。不过话说回来，活了几千年，经历过多少生死，早就难以起一丝波澜了。</p>
<p>电影的最后，D去参加蕾拉的葬礼，碰到了蕾拉的小孙女，在小女孩邀请D去她家时，露出了全片唯一的一丝微笑，他此次前来正是为了赴约，快百年前答应的那一件事情：</p>
<p>“不要同情我，如果你真的可怜我的话，等我死后在我的坟前放上一朵小花吧。因为你这个人似乎很爱多管闲事。”</p>
<p>不知道为什么，我有一种沧海桑田的感觉，如同《倚天屠龙记》中张三丰看到郭襄遗书时的感慨：</p>
<p>“张三丰瞧着郭襄的遗书，眼前似乎又看到了那个明慧潇洒的少女，可是，那是一百年前的事了。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406122332566.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-03 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-03-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061332042.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061332042.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2024-06-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 02 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-06-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061331154.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061331154.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2024-05-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 29 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061330435.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061330435.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>关于陈皓，我的一些感受</title>
      <link>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E5%85%B3%E4%BA%8E%E9%99%88%E7%9A%93%E6%88%91%E7%9A%84%E4%B8%80%E4%BA%9B%E6%84%9F%E5%8F%97/</link>
      <pubDate>Thu, 23 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF/%E5%85%B3%E4%BA%8E%E9%99%88%E7%9A%93%E6%88%91%E7%9A%84%E4%B8%80%E4%BA%9B%E6%84%9F%E5%8F%97/</guid>
      <description>&lt;p&gt;去年差不多这个时候，听闻陈皓突然逝世，很是震惊。&lt;/p&gt;
&lt;p&gt;第一次知道陈皓这个名字，是在极客时间上面，因为购买了《左耳听风》课程，所以知道这个人。这个课程基本涵盖了陈皓个人网站上面的精华博文，因为很多涉及后端方面的内容，所以我并没有全部看完，只是看了技术基础、程序员练级攻略、程序员面试攻略、高效学习、高效沟通这几块内容，可以说干货满满，很受启发。并且，每次重温，都会有不同的体会。&lt;/p&gt;
&lt;p&gt;当时购买课程之后，可以加群的，即陈皓发起的ARTS活动，自己也申请入群，不知道为什么，没有入群成功，也就没太在意。想要打卡这个活动，又觉得有点难，很怕自己坚持不下来，所以就不了了之了。&lt;/p&gt;
&lt;p&gt;后来，听说他要和我所在的部门合作一些项目，觉得很巧，很有意思。&lt;/p&gt;
&lt;p&gt;只是去年他过来开会，沟通项目的业务，当时他就在一楼，本来想着去见一面，能请教一下问题，但是因为是后端相关的会议，加上觉得这样不太合适，所以就没下去。&lt;/p&gt;
&lt;p&gt;没想到过了两个多月他就因为心梗突然过世了，真是人生无常。当时看到百度热搜里那条过世的消息，心里蛮不是滋味的。&lt;/p&gt;
&lt;p&gt;陈皓自己个人网站，酷壳上面好几篇博文都很不错，也是上面课程的内容：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://coolshell.cn/articles/19085.html&#34;&gt;《谈谈我的“三观”》&lt;/a&gt; - 第一步要努力实现自我价值，第二步要全力照顾好家人，第三步要尽可能帮助善良的人，第四步为族群发声，第五步为国家争荣誉。事实上作为男人，前两步成功，人生已算得上圆满，做到第三步堪称伟大，而随意颠倒次序的那些人，一般不值得信任。修身齐家治国平天下。穷则独善其身，达则兼济天下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://coolshell.cn/articles/4990.html&#34;&gt;《程序员技术练级攻略》&lt;/a&gt; - 有时候我们需要更多的是抬起头来看看技术以外的事情，或者是说我们在作技术的时候不去思考为什么会有这个技术，为什么不是别的，问题不在于技术，问题在于我们死读书，读死书，成了技术的书呆子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://coolshell.cn/articles/19464.html&#34;&gt;《如何超过大多数人》&lt;/a&gt; - 要超过别人其实还是比较简单的，尤其在今天的中国，更是简单。因为，你只看看中国的互联网，你就会发现，他们基本上全部都是在消费大众，让大众变得更为地愚蠢和傻瓜。所以，在今天的中国，你基本上不用做什么，只需要不使用中国互联网，你就很自然地超过大多数人了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://coolshell.cn/articles/17583.html&#34;&gt;《技术人员的发展之路》&lt;/a&gt; - 能够去规划自己的个人发展的人，通常都是有很多机会和可能性的人；有很多机会和可能性的人，通常都是有Leadership，喜欢冒险的人；有Leadership喜欢冒险的人，通常都是学习能力强，思维活跃，喜欢折腾，懂得“投资”的人；学习能力强思维活跃的人，通常来说，都是喜欢看书，喜欢实践和新鲜事物，不怕艰难和挑战，用智力而不是使蛮力的人；懂得“投资”的人，通常来说，他们更多的关注的是未来和长远的成长，而不是当下的KPI、奖金和晋升。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://coolshell.cn/articles/20977.html&#34;&gt;《程序员如何把控自己的职业》&lt;/a&gt;- 如果你想更好的把握时代，提升自己，你需要知道这个时代的趋势是什么，需要什么样的人，这些人需要什么样的能力，这些能力是怎么获得的，投入到基础知识的学习就像“基建”一样，如果基础不好，不能长高，学习能力也是需要适应这个快速时代的重要的基础能力，没有好的学习能力，很快就会掉队被淘汰。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从去年10月份开始，我突然萌生要打卡这个ARTS活动的想法，起初只是觉得我应该做这个事情，因为上班能敲代码的时间基本都没有了，只能下班回来找一点事情做，不让自己脱离代码太久了。我也并没有打算，能从ARTS打卡活动中，一定有所收获，但正是这种很坦然的心态，反而促使我坚持到了现在，而且在这过程之中，我从未有任何心理压力。&lt;/p&gt;
&lt;p&gt;说句题外话，陈皓老师真的看起来有点虚胖，健康状态真的不是很好。所以我们还是要多注意身体，不要熬夜，坚持运动，饮食有度，毕竟身体是革命的本钱，是好几个0前面的1，没有1，后面再多的0都是徒然。我也是一样，每天要去健身房，然后，不要熬夜了。但一直以来都太忙了，其他都能坚持下来，就是熬夜总是戒不掉，争取再努力，调整回来吧。最后以陈皓老师的座右铭结尾吧，与诸君共勉：&lt;/p&gt;
&lt;p&gt;“芝兰生于深谷，不以无人而不芳，君子修身养德，不以穷困而改志。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>去年差不多这个时候，听闻陈皓突然逝世，很是震惊。</p>
<p>第一次知道陈皓这个名字，是在极客时间上面，因为购买了《左耳听风》课程，所以知道这个人。这个课程基本涵盖了陈皓个人网站上面的精华博文，因为很多涉及后端方面的内容，所以我并没有全部看完，只是看了技术基础、程序员练级攻略、程序员面试攻略、高效学习、高效沟通这几块内容，可以说干货满满，很受启发。并且，每次重温，都会有不同的体会。</p>
<p>当时购买课程之后，可以加群的，即陈皓发起的ARTS活动，自己也申请入群，不知道为什么，没有入群成功，也就没太在意。想要打卡这个活动，又觉得有点难，很怕自己坚持不下来，所以就不了了之了。</p>
<p>后来，听说他要和我所在的部门合作一些项目，觉得很巧，很有意思。</p>
<p>只是去年他过来开会，沟通项目的业务，当时他就在一楼，本来想着去见一面，能请教一下问题，但是因为是后端相关的会议，加上觉得这样不太合适，所以就没下去。</p>
<p>没想到过了两个多月他就因为心梗突然过世了，真是人生无常。当时看到百度热搜里那条过世的消息，心里蛮不是滋味的。</p>
<p>陈皓自己个人网站，酷壳上面好几篇博文都很不错，也是上面课程的内容：</p>
<ol>
<li>
<p><a href="https://coolshell.cn/articles/19085.html">《谈谈我的“三观”》</a> - 第一步要努力实现自我价值，第二步要全力照顾好家人，第三步要尽可能帮助善良的人，第四步为族群发声，第五步为国家争荣誉。事实上作为男人，前两步成功，人生已算得上圆满，做到第三步堪称伟大，而随意颠倒次序的那些人，一般不值得信任。修身齐家治国平天下。穷则独善其身，达则兼济天下。</p>
</li>
<li>
<p><a href="https://coolshell.cn/articles/4990.html">《程序员技术练级攻略》</a> - 有时候我们需要更多的是抬起头来看看技术以外的事情，或者是说我们在作技术的时候不去思考为什么会有这个技术，为什么不是别的，问题不在于技术，问题在于我们死读书，读死书，成了技术的书呆子。</p>
</li>
<li>
<p><a href="https://coolshell.cn/articles/19464.html">《如何超过大多数人》</a> - 要超过别人其实还是比较简单的，尤其在今天的中国，更是简单。因为，你只看看中国的互联网，你就会发现，他们基本上全部都是在消费大众，让大众变得更为地愚蠢和傻瓜。所以，在今天的中国，你基本上不用做什么，只需要不使用中国互联网，你就很自然地超过大多数人了。</p>
</li>
<li>
<p><a href="https://coolshell.cn/articles/17583.html">《技术人员的发展之路》</a> - 能够去规划自己的个人发展的人，通常都是有很多机会和可能性的人；有很多机会和可能性的人，通常都是有Leadership，喜欢冒险的人；有Leadership喜欢冒险的人，通常都是学习能力强，思维活跃，喜欢折腾，懂得“投资”的人；学习能力强思维活跃的人，通常来说，都是喜欢看书，喜欢实践和新鲜事物，不怕艰难和挑战，用智力而不是使蛮力的人；懂得“投资”的人，通常来说，他们更多的关注的是未来和长远的成长，而不是当下的KPI、奖金和晋升。</p>
</li>
<li>
<p><a href="https://coolshell.cn/articles/20977.html">《程序员如何把控自己的职业》</a>- 如果你想更好的把握时代，提升自己，你需要知道这个时代的趋势是什么，需要什么样的人，这些人需要什么样的能力，这些能力是怎么获得的，投入到基础知识的学习就像“基建”一样，如果基础不好，不能长高，学习能力也是需要适应这个快速时代的重要的基础能力，没有好的学习能力，很快就会掉队被淘汰。</p>
</li>
</ol>
<p>从去年10月份开始，我突然萌生要打卡这个ARTS活动的想法，起初只是觉得我应该做这个事情，因为上班能敲代码的时间基本都没有了，只能下班回来找一点事情做，不让自己脱离代码太久了。我也并没有打算，能从ARTS打卡活动中，一定有所收获，但正是这种很坦然的心态，反而促使我坚持到了现在，而且在这过程之中，我从未有任何心理压力。</p>
<p>说句题外话，陈皓老师真的看起来有点虚胖，健康状态真的不是很好。所以我们还是要多注意身体，不要熬夜，坚持运动，饮食有度，毕竟身体是革命的本钱，是好几个0前面的1，没有1，后面再多的0都是徒然。我也是一样，每天要去健身房，然后，不要熬夜了。但一直以来都太忙了，其他都能坚持下来，就是熬夜总是戒不掉，争取再努力，调整回来吧。最后以陈皓老师的座右铭结尾吧，与诸君共勉：</p>
<p>“芝兰生于深谷，不以无人而不芳，君子修身养德，不以穷困而改志。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 52</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-52/</link>
      <pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-52/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/number-of-different-integers-in-a-string/&#34;&gt;1805. 字符串中不同整数的数目&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;word&lt;/code&gt; ，该字符串由数字和小写英文字母组成。&lt;/p&gt;
&lt;p&gt;请你用空格替换每个不是数字的字符。例如，&lt;code&gt;&amp;quot;a123bc34d8ef34&amp;quot;&lt;/code&gt; 将会变成 &lt;code&gt;&amp;quot; 123 34 8 34&amp;quot;&lt;/code&gt; 。注意，剩下的这些整数为（相邻彼此至少有一个空格隔开）：&lt;code&gt;&amp;quot;123&amp;quot;&lt;/code&gt;、&lt;code&gt;&amp;quot;34&amp;quot;&lt;/code&gt;、&lt;code&gt;&amp;quot;8&amp;quot;&lt;/code&gt; 和 &lt;code&gt;&amp;quot;34&amp;quot;&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;返回对 &lt;code&gt;word&lt;/code&gt; 完成替换后形成的 &lt;strong&gt;不同&lt;/strong&gt; 整数的数目。&lt;/p&gt;
&lt;p&gt;只有当两个整数的 &lt;strong&gt;不含前导零&lt;/strong&gt; 的十进制表示不同， 才认为这两个整数也不同。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;word&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;a123bc34d8ef34&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;不同的整数有&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;123&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;、&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;34&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;8&amp;#34;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;注意&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;34&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;只计数一次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;numDifferentIntegers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 1. 匹配所有的数字，返回一个数组，每个元素是一个数字字符串
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/\d+/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 2. 如果没有匹配到数字，返回0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 3. 去掉前导0，返回一个新的数组，每个元素是一个数字字符串
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/^0+/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 4. 用Set去重
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 去重
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// 5. 返回Set的大小
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;匹配所有的数字，返回一个数组，每个元素是一个数字字符串。&lt;/li&gt;
&lt;li&gt;如果没有匹配到数字，返回0。&lt;/li&gt;
&lt;li&gt;去掉前导0，返回一个新的数组，每个元素是一个数字字符串。&lt;/li&gt;
&lt;li&gt;用Set去重。&lt;/li&gt;
&lt;li&gt;使用 set.size 返回大小，即为所求的值。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2505/250519-ginger-cats.html&#34;&gt;Scientists find why most ginger cats are male - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/number-of-different-integers-in-a-string/">1805. 字符串中不同整数的数目</a></p>
<p>给你一个字符串 <code>word</code> ，该字符串由数字和小写英文字母组成。</p>
<p>请你用空格替换每个不是数字的字符。例如，<code>&quot;a123bc34d8ef34&quot;</code> 将会变成 <code>&quot; 123 34 8 34&quot;</code> 。注意，剩下的这些整数为（相邻彼此至少有一个空格隔开）：<code>&quot;123&quot;</code>、<code>&quot;34&quot;</code>、<code>&quot;8&quot;</code> 和 <code>&quot;34&quot;</code> 。</p>
<p>返回对 <code>word</code> 完成替换后形成的 <strong>不同</strong> 整数的数目。</p>
<p>只有当两个整数的 <strong>不含前导零</strong> 的十进制表示不同， 才认为这两个整数也不同。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">word</span> <span class="o">=</span> <span class="s2">&#34;a123bc34d8ef34&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">不同的整数有</span> <span class="s2">&#34;123&#34;</span><span class="err">、</span><span class="s2">&#34;34&#34;</span> <span class="nx">和</span> <span class="s2">&#34;8&#34;</span> <span class="err">。</span><span class="nx">注意</span><span class="err">，</span><span class="s2">&#34;34&#34;</span> <span class="nx">只计数一次</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">numDifferentIntegers</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 1. 匹配所有的数字，返回一个数组，每个元素是一个数字字符串
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">nums</span> <span class="o">=</span> <span class="nx">word</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="sr">/\d+/g</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 2. 如果没有匹配到数字，返回0
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 3. 去掉前导0，返回一个新的数组，每个元素是一个数字字符串
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">nums</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">n</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">n</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/^0+/</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 4. 用Set去重
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">set</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Set</span><span class="p">(</span><span class="nx">nums</span><span class="p">);</span> <span class="c1">// 去重
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="c1">// 5. 返回Set的大小
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">return</span> <span class="nx">set</span><span class="p">.</span><span class="nx">size</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>匹配所有的数字，返回一个数组，每个元素是一个数字字符串。</li>
<li>如果没有匹配到数字，返回0。</li>
<li>去掉前导0，返回一个新的数组，每个元素是一个数字字符串。</li>
<li>用Set去重。</li>
<li>使用 set.size 返回大小，即为所求的值。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2505/250519-ginger-cats.html">Scientists find why most ginger cats are male - Breaking News English Lesson</a></p>
<p>科学家们揭开了一个关于猫科动物的长期谜团。日本九州大学的遗传学家发现，为什么十只橘猫中有八只是雄性。佐佐木博之博士发现，X 染色体上的一个突变导致了一种此前未知的“橘色基因”。佐佐木博士说：“找到这个基因一直是我的梦想，所以终于破解了这个谜团，我感到非常高兴。”这种基因负责动物皮肤的色素沉着。雄性哺乳动物有一条 X 染色体和一条 Y 染色体。如果雄性猫的 X 染色体上有这种基因，它就会是橘色的。由于雌性猫有两条 X 染色体，所以两条染色体上都需要有这种基因，猫才会是橘色的。这种情况发生的可能性较小。</p>
<p>佐佐木博士及其同事的研究成果已发表在《当代生物学》杂志上。在这项研究中，研究人员分析了 18 只猫的 DNA。其中 10 只猫的毛色为橘色。研究人员发现，所有橘色猫都有一种名为 ARHGAP36 的基因突变，而非橘色猫则没有这种突变。佐佐木博士表示，猫主人通常会将毛色与性格特征联系起来。他写道：“许多猫主人坚信不同毛色和花纹与不同性格有关。目前尚无科学证据支持这一观点，但这确实是个有趣的想法，我很想进一步探究。”他还表示，橘色猫可能具有某些共同的行为特征，因为它们大多是雄性。</p>
<h2 id="tip">Tip</h2>
<p>腾讯 ARC 图片修复工具，挺好用的。https://arc.tencent.com/zh/ai-demos/faceRestoration</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505222237754.png"></p>
<h2 id="share">Share</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202505220644480.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-05-21 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 21 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061329753.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406061329753.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 31</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-31/</link>
      <pubDate>Mon, 20 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-31/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/thousand-separator/&#34;&gt;1556. 千位分隔数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数 &lt;code&gt;n&lt;/code&gt;，请你每隔三位添加点（即 &amp;ldquo;.&amp;rdquo; 符号）作为千位分隔符，并将结果以字符串格式返回。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;123456789&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;123.456.789&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;thousandSeparator&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;因为是千位分隔数，所以使用倒序遍历，然后通过找规律，如下所示：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;//index      0 123
const str = &amp;#34;1.234&amp;#34;
//index      012 345 678
const str = &amp;#34;123.456.789&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;从以上可知，str.length - i 的值得出为3、3和6，都是3的倍数，所以可以使用&lt;code&gt;(str.length - i) % 3 == 0&lt;/code&gt;来找到要插入&lt;code&gt;.&lt;/code&gt;的位置，加上当最后一位和第一位时不需要加上&lt;code&gt;.&lt;/code&gt;，然后通过result依次拼接字符串，得到所求结果值。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;题外话：最近总算把ARTS之前落下的进度赶上来了。好几次看着前面要补4篇左右，心里还是有点虚啊，但是从来没有要放弃，就觉得慢慢补回来就好了，不需要做任何心理建设，然后就补回来了。还是按正常节奏，每周完成一篇比较好。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240418-seafood-forever-chemicals.html&#34;&gt;Seafood could have higher levels of &amp;lsquo;forever chemicals&amp;rsquo; - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一项新研究指出，海鲜中可能存在更高水平的“永久化学物质”。永久化学物质是人造毒素，不会分解。它们可以停留在人体血液中，导致各种健康问题，包括癌症、肾脏和肝脏问题、激素变化以及对胎儿发育的损害。来自美国达特茅斯学院的研究人员表示，应该为海鲜中的永久化学物质制定安全指南。他们说，这些毒素的水平在虾、明虾和龙虾等海洋生物中最高。这可能意味着喜欢寿司、生鱼片和虾仁鸡尾酒的人可能需要重新考虑他们的饮食习惯，减少一些海鲜的摄入量。&lt;/p&gt;
&lt;p&gt;永久化学物质在20世纪30年代被开发出来。从20世纪50年代以来，它们被用于制造许多产品。它们通常存在于食品包装中。我们大部分的食品包装纸、外卖盒、比萨盒和其他食品容器都含有这些化学物质。几十年来，这些化学物质已经进入了我们的食物链。研究人员表示，海鲜中的永久化学物质水平较高。梅根·罗曼诺教授表示，她希望人们继续享用海鲜，但要意识到风险。她说：“我们的建议不是不吃海鲜。海鲜是蛋白质和欧米茄脂肪酸的重要来源。”她补充说，让人们更多地了解我们所吃食物的成分是很重要的。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;git pull放弃本地修改，强制更新。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/thousand-separator/">1556. 千位分隔数</a></p>
<p>给你一个整数 <code>n</code>，请你每隔三位添加点（即 &ldquo;.&rdquo; 符号）作为千位分隔符，并将结果以字符串格式返回。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">n</span> <span class="o">=</span> <span class="mi">123456789</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="s2">&#34;123.456.789&#34;</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">thousandSeparator</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">str</span> <span class="o">=</span> <span class="nb">String</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">s</span> <span class="o">=</span> <span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">((</span><span class="nx">str</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="nx">i</span><span class="p">)</span> <span class="o">%</span> <span class="mi">3</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">i</span> <span class="o">!==</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="nx">i</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">s</span> <span class="o">=</span> <span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="nx">s</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="nx">result</span> <span class="o">=</span> <span class="nx">s</span> <span class="o">+</span> <span class="nx">result</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>因为是千位分隔数，所以使用倒序遍历，然后通过找规律，如下所示：</p>
<pre tabindex="0"><code>//index      0 123
const str = &#34;1.234&#34;
//index      012 345 678
const str = &#34;123.456.789&#34;
</code></pre><p>从以上可知，str.length - i 的值得出为3、3和6，都是3的倍数，所以可以使用<code>(str.length - i) % 3 == 0</code>来找到要插入<code>.</code>的位置，加上当最后一位和第一位时不需要加上<code>.</code>，然后通过result依次拼接字符串，得到所求结果值。</p>
<blockquote>
<p>题外话：最近总算把ARTS之前落下的进度赶上来了。好几次看着前面要补4篇左右，心里还是有点虚啊，但是从来没有要放弃，就觉得慢慢补回来就好了，不需要做任何心理建设，然后就补回来了。还是按正常节奏，每周完成一篇比较好。</p></blockquote>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240418-seafood-forever-chemicals.html">Seafood could have higher levels of &lsquo;forever chemicals&rsquo; - Breaking News English Lesson</a></p>
<p>一项新研究指出，海鲜中可能存在更高水平的“永久化学物质”。永久化学物质是人造毒素，不会分解。它们可以停留在人体血液中，导致各种健康问题，包括癌症、肾脏和肝脏问题、激素变化以及对胎儿发育的损害。来自美国达特茅斯学院的研究人员表示，应该为海鲜中的永久化学物质制定安全指南。他们说，这些毒素的水平在虾、明虾和龙虾等海洋生物中最高。这可能意味着喜欢寿司、生鱼片和虾仁鸡尾酒的人可能需要重新考虑他们的饮食习惯，减少一些海鲜的摄入量。</p>
<p>永久化学物质在20世纪30年代被开发出来。从20世纪50年代以来，它们被用于制造许多产品。它们通常存在于食品包装中。我们大部分的食品包装纸、外卖盒、比萨盒和其他食品容器都含有这些化学物质。几十年来，这些化学物质已经进入了我们的食物链。研究人员表示，海鲜中的永久化学物质水平较高。梅根·罗曼诺教授表示，她希望人们继续享用海鲜，但要意识到风险。她说：“我们的建议不是不吃海鲜。海鲜是蛋白质和欧米茄脂肪酸的重要来源。”她补充说，让人们更多地了解我们所吃食物的成分是很重要的。</p>
<h2 id="tip">Tip</h2>
<p>git pull放弃本地修改，强制更新。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git fetch --all
</span></span><span class="line"><span class="cl">git reset --hard origin/master
</span></span><span class="line"><span class="cl">git clean -f -d
</span></span></code></pre></div><ol>
<li><code>git fetch --all</code>：从远程仓库获取最新的内容。</li>
<li><code>git reset --hard origin/master</code>：将本地仓库的内容重置为与远程仓库相同，包括放弃任何本地修改。</li>
<li><code>git clean -f -d</code>：清除工作目录中未跟踪的文件和目录。</li>
</ol>
<h2 id="share">Share</h2>
<p>《À la folie》是一首法语歌曲，它还有一个日语版本，也非常好听。但我最喜欢的是MV版本，可能是因为多了一些铃铃铃的音效的缘故，超级好听，百听不厌。对我来说，一首歌曲的调调才是它的灵魂，其他都不是那么重要。</p>
<blockquote>
<p><a href="https://c6.y.qq.com/base/fcgi-bin/u?__=a0JQTl32bQN8">https://c6.y.qq.com/base/fcgi-bin/u?__=a0JQTl32bQN8</a></p></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405202244764.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 30</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-30/</link>
      <pubDate>Sun, 19 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-30/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/largest-number-at-least-twice-of-others/&#34;&gt;747. 至少是其他数字两倍的最大数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;nums&lt;/code&gt; ，其中总是存在 &lt;strong&gt;唯一的&lt;/strong&gt; 一个最大整数 。&lt;/p&gt;
&lt;p&gt;请你找出数组中的最大元素并检查它是否 &lt;strong&gt;至少是数组中每个其他数字的两倍&lt;/strong&gt; 。如果是，则返回 &lt;strong&gt;最大元素的下标&lt;/strong&gt; ，否则返回 &lt;code&gt;-1&lt;/code&gt; 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;是最大的整数&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;对于数组中的其他整数&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;至少是数组中其他元素的两倍&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的下标是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以返回&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dominantIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toSorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先将数字从小到大排序，生成新数组；&lt;/li&gt;
&lt;li&gt;然后获取最后一位，如果大于等于倒数第二位的数值乘以2，则表示存在满足条件的最大整数，否则返回-1；&lt;/li&gt;
&lt;li&gt;通过indexOf在原nums数组中获取最大整数下标。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240415-auto-insurance.html&#34;&gt;Rising auto insurance premiums fuelling inflation - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;汽车保险费的飙升正在加剧美国的通货膨胀压力，成本以最快的速度上涨。仅在3月份，保险费就上涨了2.6%，这意味着成本比去年同期高出了22.2%。这些涨价导致了上个月通货膨胀率上升了0.4%。除汽车保险外，其他任何消费类别都没有像它一样飙升。Foxbusiness.com表示，美国汽车保险的平均费用已经超过每年2300美元，约合每月192美元。不断上涨的价格对最低收入者影响最大。对于那些在生活成本危机中努力维持生计的人来说，保险正成为一种更大的经济负担。&lt;/p&gt;
&lt;p&gt;汽车分析师肖恩·塔克试图解释价格上涨背后的原因。他说：“我认为最大的因素是新车和它们越来越贵，所以如果你撞坏了你的车，替换成本非常高，而且现在小事故的费用也很昂贵。”他将现代汽车中的技术、小工具和安全设备的复杂性归因于更昂贵的修理和更换成本。更换电动汽车电池的费用可能在6500美元到2万美元以上。一个简单的刮擦可能会损坏昂贵的嵌入式传感器、摄像头和声纳。推动劳动力成本上升的一个因素是汽车技工的短缺。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;git命令窗口样式美化&lt;/p&gt;
&lt;p&gt;用了N年的东西，一直没有关注样式问题，只觉得还行，但是最近安装nvm，发现一下字体看不清，就看下怎么设置样式，才发现这个可以右键Options然后进行设置，除了字体颜色、背景色，还有主题可选，但是试用了一下，不够美观，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402011121252.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在网上查了一下，发现这个样式还不错。&lt;a href=&#34;https://blog.csdn.net/qq_46359697/article/details/107756317&#34;&gt;Git Bash界面的美化（一看必会）_git bash美化-CSDN博客&lt;/a&gt;，配置流程就是修改.minttyrc文件，位置在&lt;code&gt;C:\Users\weihao&lt;/code&gt;，将里面的使用#注释，然后复制样式覆盖即可。&lt;/p&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405190008036.png&#34; style=&#34;zoom: 50%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/largest-number-at-least-twice-of-others/">747. 至少是其他数字两倍的最大数</a></p>
<p>给你一个整数数组 <code>nums</code> ，其中总是存在 <strong>唯一的</strong> 一个最大整数 。</p>
<p>请你找出数组中的最大元素并检查它是否 <strong>至少是数组中每个其他数字的两倍</strong> 。如果是，则返回 <strong>最大元素的下标</strong> ，否则返回 <code>-1</code> 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="mi">6</span> <span class="nx">是最大的整数</span><span class="err">，</span><span class="nx">对于数组中的其他整数</span><span class="err">，</span><span class="mi">6</span> <span class="nx">至少是数组中其他元素的两倍</span><span class="err">。</span><span class="mi">6</span> <span class="nx">的下标是</span> <span class="mi">1</span> <span class="err">，</span><span class="nx">所以返回</span> <span class="mi">1</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">dominantIndex</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">sortedNums</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">toSorted</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">a</span> <span class="o">-</span> <span class="nx">b</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">sortedNums</span><span class="p">[</span><span class="nx">sortedNums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="nx">sortedNums</span><span class="p">[</span><span class="nx">sortedNums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">sortedNums</span><span class="p">[</span><span class="nx">sortedNums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>先将数字从小到大排序，生成新数组；</li>
<li>然后获取最后一位，如果大于等于倒数第二位的数值乘以2，则表示存在满足条件的最大整数，否则返回-1；</li>
<li>通过indexOf在原nums数组中获取最大整数下标。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240415-auto-insurance.html">Rising auto insurance premiums fuelling inflation - Breaking News English Lesson</a></p>
<p>汽车保险费的飙升正在加剧美国的通货膨胀压力，成本以最快的速度上涨。仅在3月份，保险费就上涨了2.6%，这意味着成本比去年同期高出了22.2%。这些涨价导致了上个月通货膨胀率上升了0.4%。除汽车保险外，其他任何消费类别都没有像它一样飙升。Foxbusiness.com表示，美国汽车保险的平均费用已经超过每年2300美元，约合每月192美元。不断上涨的价格对最低收入者影响最大。对于那些在生活成本危机中努力维持生计的人来说，保险正成为一种更大的经济负担。</p>
<p>汽车分析师肖恩·塔克试图解释价格上涨背后的原因。他说：“我认为最大的因素是新车和它们越来越贵，所以如果你撞坏了你的车，替换成本非常高，而且现在小事故的费用也很昂贵。”他将现代汽车中的技术、小工具和安全设备的复杂性归因于更昂贵的修理和更换成本。更换电动汽车电池的费用可能在6500美元到2万美元以上。一个简单的刮擦可能会损坏昂贵的嵌入式传感器、摄像头和声纳。推动劳动力成本上升的一个因素是汽车技工的短缺。</p>
<h2 id="tip">Tip</h2>
<p>git命令窗口样式美化</p>
<p>用了N年的东西，一直没有关注样式问题，只觉得还行，但是最近安装nvm，发现一下字体看不清，就看下怎么设置样式，才发现这个可以右键Options然后进行设置，除了字体颜色、背景色，还有主题可选，但是试用了一下，不够美观，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402011121252.png"></p>
<p>在网上查了一下，发现这个样式还不错。<a href="https://blog.csdn.net/qq_46359697/article/details/107756317">Git Bash界面的美化（一看必会）_git bash美化-CSDN博客</a>，配置流程就是修改.minttyrc文件，位置在<code>C:\Users\weihao</code>，将里面的使用#注释，然后复制样式覆盖即可。</p>
<h2 id="share">Share</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405190008036.png" style="zoom: 50%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2024-05-18 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 18 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;早餐：德式早餐肠、牛奶
午餐：腌面套餐、油泼biangbiang面、肉夹馍
晚餐：冰西瓜、特浓格瓦斯&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405200932935.jpg&#34; alt=&#34;2a8917f45b7932a551199d7b4084462&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;因为中午吃腌面时没有吃好，所以有点不开心，就继续吃了肉夹馍和油泼面，晚上下雨了，冒雨回来的，然后买了冰西瓜，加上冰箱里的特浓格瓦斯。&lt;/p&gt;
&lt;p&gt;总觉得，不能一而再再而三地忽视一些问题了，我不要那么多花里胡哨的东西，我只要现在，就只要现在，立刻，马上，做好这些事情。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>早餐：德式早餐肠、牛奶
午餐：腌面套餐、油泼biangbiang面、肉夹馍
晚餐：冰西瓜、特浓格瓦斯</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405200932935.jpg" alt="2a8917f45b7932a551199d7b4084462" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>因为中午吃腌面时没有吃好，所以有点不开心，就继续吃了肉夹馍和油泼面，晚上下雨了，冒雨回来的，然后买了冰西瓜，加上冰箱里的特浓格瓦斯。</p>
<p>总觉得，不能一而再再而三地忽视一些问题了，我不要那么多花里胡哨的东西，我只要现在，就只要现在，立刻，马上，做好这些事情。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 29</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-29/</link>
      <pubDate>Sat, 18 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-29/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/smallest-even-multiple/&#34;&gt;2413. 最小偶倍数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个正整数 &lt;code&gt;n&lt;/code&gt; ，返回 &lt;code&gt;2&lt;/code&gt; 和 &lt;code&gt;n&lt;/code&gt; 的最小公倍数（正整数）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的最小公倍数是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;smallestEvenMultiple&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;两个数中一个数是另一个数的倍数，则较大的数就是它们的最小公倍数。&lt;/li&gt;
&lt;li&gt;两个数是相邻的自然数或是两个不同的质数，则它们的乘积就是最小公倍数。&lt;/li&gt;
&lt;li&gt;通过取余（%）运算符实现即可。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240411-music-tempo.html&#34;&gt;Chechnya bans music that is too slow or too fast - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;车臣共和国的文化部制定了关于人们可以听什么速度的音乐的规定。该部门禁止播放速度过快或过慢的歌曲，并发布了有关允许的歌曲节奏的公告。公告中写道：“从现在开始，所有的音乐、歌唱和舞蹈作品的节奏应该在80到116拍每分钟之间。”这个新标准的起点是每分钟80拍，比许多现代流行音乐要慢得多。然而，俄罗斯国歌通常以每分钟76拍的速度演奏。文化部尚未就国歌是否受到新规定的影响发表任何声明。很可能国歌将成为这一新规定的例外。&lt;/p&gt;
&lt;p&gt;禁止播放速度过快或过慢的音乐旨在保护车臣的文化和传统。《莫斯科时报》称这是为了“根除任何西方化的迹象”。车臣领导人拉姆赞·卡德罗夫表示，这项禁令是为了使音乐“符合车臣人的心态”。他补充道：“借用他人的音乐文化是不可容忍的。”车臣文化部部长穆萨·达达耶夫表示：“我们必须将车臣人民的文化遗产传承给人民和我们子孙后代。”当地艺术家需要在6月1日之前重新创作他们的歌曲以符合新的节奏要求。车臣的人们将不能再听到电子音乐，或者碧昂丝、公鸭和泰勒的许多歌曲。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;git clone xxx not found&lt;/p&gt;
&lt;p&gt;在使用git从gitlab下载项目的时候，出现以下这个报错问题：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;fatal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://gitlab.xxx.com/xxx/web/project-name/&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;found&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因为URL是copy的，所以不会弄错，猜测应该是用户名和密码异常，所以使用以下命令进行配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.name &lt;span class=&#34;s2&#34;&gt;&amp;#34;xxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.password &lt;span class=&#34;s2&#34;&gt;&amp;#34;xxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;发现还是失败了，就想着怎么触发用户名和密码输入那个弹窗。看了一下发现使用的URL其实是没有.git结尾的，修改了一下clone的命令为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://gitlab.xxx.com/xxx/web/project-name.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时，触发了用户名和密码输入弹窗，填入正确信息即可，问题解决。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/smallest-even-multiple/">2413. 最小偶倍数</a></p>
<p>给你一个正整数 <code>n</code> ，返回 <code>2</code> 和 <code>n</code> 的最小公倍数（正整数）。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">n</span> <span class="o">=</span> <span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">10</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="mi">5</span> <span class="nx">和</span> <span class="mi">2</span> <span class="nx">的最小公倍数是</span> <span class="mi">10</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">smallestEvenMultiple</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">&gt;=</span> <span class="mi">2</span> <span class="o">&amp;&amp;</span> <span class="nx">n</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">n</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">n</span> <span class="o">*</span> <span class="mi">2</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>两个数中一个数是另一个数的倍数，则较大的数就是它们的最小公倍数。</li>
<li>两个数是相邻的自然数或是两个不同的质数，则它们的乘积就是最小公倍数。</li>
<li>通过取余（%）运算符实现即可。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240411-music-tempo.html">Chechnya bans music that is too slow or too fast - Breaking News English Lesson</a></p>
<p>车臣共和国的文化部制定了关于人们可以听什么速度的音乐的规定。该部门禁止播放速度过快或过慢的歌曲，并发布了有关允许的歌曲节奏的公告。公告中写道：“从现在开始，所有的音乐、歌唱和舞蹈作品的节奏应该在80到116拍每分钟之间。”这个新标准的起点是每分钟80拍，比许多现代流行音乐要慢得多。然而，俄罗斯国歌通常以每分钟76拍的速度演奏。文化部尚未就国歌是否受到新规定的影响发表任何声明。很可能国歌将成为这一新规定的例外。</p>
<p>禁止播放速度过快或过慢的音乐旨在保护车臣的文化和传统。《莫斯科时报》称这是为了“根除任何西方化的迹象”。车臣领导人拉姆赞·卡德罗夫表示，这项禁令是为了使音乐“符合车臣人的心态”。他补充道：“借用他人的音乐文化是不可容忍的。”车臣文化部部长穆萨·达达耶夫表示：“我们必须将车臣人民的文化遗产传承给人民和我们子孙后代。”当地艺术家需要在6月1日之前重新创作他们的歌曲以符合新的节奏要求。车臣的人们将不能再听到电子音乐，或者碧昂丝、公鸭和泰勒的许多歌曲。</p>
<h2 id="tip">Tip</h2>
<p>git clone xxx not found</p>
<p>在使用git从gitlab下载项目的时候，出现以下这个报错问题：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">fatal</span><span class="o">:</span> <span class="nx">repository</span> <span class="s1">&#39;https://gitlab.xxx.com/xxx/web/project-name/&#39;</span> <span class="nx">not</span> <span class="nx">found</span>
</span></span></code></pre></div><p>因为URL是copy的，所以不会弄错，猜测应该是用户名和密码异常，所以使用以下命令进行配置：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git config --global user.name <span class="s2">&#34;xxxx&#34;</span>
</span></span><span class="line"><span class="cl">git config --global user.password <span class="s2">&#34;xxxx&#34;</span>
</span></span></code></pre></div><p>发现还是失败了，就想着怎么触发用户名和密码输入那个弹窗。看了一下发现使用的URL其实是没有.git结尾的，修改了一下clone的命令为：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://gitlab.xxx.com/xxx/web/project-name.git
</span></span></code></pre></div><p>此时，触发了用户名和密码输入弹窗，填入正确信息即可，问题解决。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402021037069.png"></p>
<h2 id="share">Share</h2>
<p><a href="https://developer.aliyun.com/article/1356721?utm_content=g_1000382235">技术人对抗焦虑的加减法-阿里云开发者社区 (aliyun.com)</a></p>
<ol>
<li>不要把别人贩卖的焦虑强加到自己的感受中</li>
<li>没有坑，就让自己先成为萝卜，等待机会</li>
<li>要抓住问题的本质，如果只是找一匹跑得更快的马，那就不会发明汽车</li>
<li>决定未来的不是过去，也不是他人的评价，而是你自己定义的将来</li>
<li>最挑战的事情，最高级的快乐</li>
<li>警惕低水平的勤奋，不要碎片化学习</li>
<li>认知自己，比认知知识点更重要</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 28</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-28/</link>
      <pubDate>Fri, 17 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-28/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/diagonal-traverse/&#34;&gt;498. 对角线遍历&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个大小为 &lt;code&gt;m x n&lt;/code&gt; 的矩阵 &lt;code&gt;mat&lt;/code&gt; ，请以对角线遍历的顺序，用一个数组返回这个矩阵中的所有元素。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2021/04/10/diag1-grid.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;findDiagonalOrder&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，检查矩阵的行数，如果矩阵是空的，直接返回一个空数组。&lt;/p&gt;
&lt;p&gt;然后，获取矩阵的行数 &lt;code&gt;m&lt;/code&gt; 和列数 &lt;code&gt;n&lt;/code&gt;，并初始化一个空数组 &lt;code&gt;result&lt;/code&gt; 来存储遍历的结果。接着，初始化变量 &lt;code&gt;row&lt;/code&gt; 和 &lt;code&gt;col&lt;/code&gt; 分别代表当前的行和列，&lt;code&gt;d&lt;/code&gt; 代表遍历的方向。在矩阵中，向右上方向移动，行数减小，列数增大，所以，当&lt;code&gt;d=1&lt;/code&gt;时，为右上方向遍历，当&lt;code&gt;d=-1&lt;/code&gt;时，为左下方向遍历。&lt;/p&gt;
&lt;p&gt;接下来，通过一个循环来遍历整个矩阵。在每一次循环中，将当前位置的值加入到结果数组中，然后根据当前的遍历方向 &lt;code&gt;d&lt;/code&gt; 来更新 &lt;code&gt;row&lt;/code&gt; 和 &lt;code&gt;col&lt;/code&gt; 的值。同时，根据不同的情况（比如超出边界），调整 &lt;code&gt;row&lt;/code&gt;、&lt;code&gt;col&lt;/code&gt; 和 &lt;code&gt;d&lt;/code&gt; 的值，以确保遍历的方向是正确的。&lt;/p&gt;
&lt;p&gt;最后，返回结果数组。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240408-solar-eclipse.html&#34;&gt;Rockets and planes chase the solar eclipse - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/diagonal-traverse/">498. 对角线遍历</a></p>
<p>给你一个大小为 <code>m x n</code> 的矩阵 <code>mat</code> ，请以对角线遍历的顺序，用一个数组返回这个矩阵中的所有元素。</p>
<p><img alt="img" loading="lazy" src="https://assets.leetcode.com/uploads/2021/04/10/diag1-grid.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">mat</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],[</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">findDiagonalOrder</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">mat</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">mat</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">m</span> <span class="o">=</span> <span class="nx">mat</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">mat</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">row</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">col</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">d</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">m</span> <span class="o">*</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">mat</span><span class="p">[</span><span class="nx">row</span><span class="p">][</span><span class="nx">col</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">        <span class="nx">row</span> <span class="o">-=</span> <span class="nx">d</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="nx">col</span> <span class="o">+=</span> <span class="nx">d</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">row</span> <span class="o">&gt;=</span> <span class="nx">m</span><span class="p">)</span> <span class="p">{</span> <span class="nx">row</span> <span class="o">=</span> <span class="nx">m</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">col</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">d</span> <span class="o">=</span> <span class="o">-</span><span class="nx">d</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">col</span> <span class="o">&gt;=</span> <span class="nx">n</span><span class="p">)</span> <span class="p">{</span> <span class="nx">col</span> <span class="o">=</span> <span class="nx">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">row</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">d</span> <span class="o">=</span> <span class="o">-</span><span class="nx">d</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">row</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>  <span class="p">{</span> <span class="nx">row</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">d</span> <span class="o">=</span> <span class="o">-</span><span class="nx">d</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">col</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>  <span class="p">{</span> <span class="nx">col</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">d</span> <span class="o">=</span> <span class="o">-</span><span class="nx">d</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，检查矩阵的行数，如果矩阵是空的，直接返回一个空数组。</p>
<p>然后，获取矩阵的行数 <code>m</code> 和列数 <code>n</code>，并初始化一个空数组 <code>result</code> 来存储遍历的结果。接着，初始化变量 <code>row</code> 和 <code>col</code> 分别代表当前的行和列，<code>d</code> 代表遍历的方向。在矩阵中，向右上方向移动，行数减小，列数增大，所以，当<code>d=1</code>时，为右上方向遍历，当<code>d=-1</code>时，为左下方向遍历。</p>
<p>接下来，通过一个循环来遍历整个矩阵。在每一次循环中，将当前位置的值加入到结果数组中，然后根据当前的遍历方向 <code>d</code> 来更新 <code>row</code> 和 <code>col</code> 的值。同时，根据不同的情况（比如超出边界），调整 <code>row</code>、<code>col</code> 和 <code>d</code> 的值，以确保遍历的方向是正确的。</p>
<p>最后，返回结果数组。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240408-solar-eclipse.html">Rockets and planes chase the solar eclipse - Breaking News English Lesson</a></p>
<p>周一，天文学家和飞行员在天空中追逐日食。当时，加拿大、美国和墨西哥的数百万人凝视着天空，瞥见了罕见的天体事件——日全食。太阳、月亮和地球对齐，挡住了太阳圆盘的视线。 美国宇航局为其高空WB-57飞机配备了特殊的传感器和仪器，以从独特的太阳事件中收集信息。飞行员在15,240米高的日食中导航，以观察日冕 - 太阳的外表面。美国宇航局还向地球的高层大气层（称为电离层）发射火箭，试图解开太阳的一些最大谜团。</p>
<p>当月亮遮挡太阳的脸时，就会发生日全食。这种天体现象瞬间将白天变成黑夜。整体性意味着太阳的日冕变得比太阳的圆盘暗一百万倍。这使得科学家更容易观察和研究太阳。太阳天体物理学家阿米尔·卡斯皮博士解释说：“日全食让我们以任何其他时间和方式都不可能的方式研究和观察日冕。日食经常对自然产生令人困惑的影响。它们短暂地搅动了夜行动物，使鸟类和昆虫变得寂静。驾驶员也可能受到影响，应随着照明和能见度条件的变化而减速。</p>
<h2 id="tip">Tip</h2>
<p>Cannot find module xxx or its corresponding type declarations.</p>
<p>在Vue3项目的vite.config.ts中设置别名之后，在.vue文件中引入会报红提示这个没有找到的错误，验证了下，虽然不影响功能使用，但是体验不好。</p>
<p><code>VSCode</code>中使用<code>Ctrl+Shift+P</code>，然后输入<code>type</code>，选择<code>Volar:Select TypeScript Version...</code>，然后选择<code>Use Workspace Version xxx</code>即可。</p>
<h2 id="share">Share</h2>
<p>你要听人家说什么，而不是要听人家怎么说。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-05-15 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;早餐：炒河粉、豆浆
午餐：公司食堂
晚餐：豌杂面&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405152331019.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;今天也坚持了下，爬坡走了一个半小时，没想到还是可以的，看看手机视频，时间过得还是很快的。一方面是早上吃了炒粉，然后晚上吃了豌杂面，按理说应该是吃多了。所以坚持一下下，多一点时间吧。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>早餐：炒河粉、豆浆
午餐：公司食堂
晚餐：豌杂面</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405152331019.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>今天也坚持了下，爬坡走了一个半小时，没想到还是可以的，看看手机视频，时间过得还是很快的。一方面是早上吃了炒粉，然后晚上吃了豌杂面，按理说应该是吃多了。所以坚持一下下，多一点时间吧。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-05-14 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-05-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;早餐：鸡蛋、炒河粉
午餐：桂林米粉、卤肉、瘦肉
晚餐：山姆大叔汉堡、椒盐鸡块、薯条、零度可乐、可口可乐&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405150842441.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;很显然，运动和不运动差之千里，虽然是2点睡觉，6点半醒来，但是整个人不算特别困，也没觉得一点精神都没有，感觉好像睡得还可以。坚持坚持再坚持，早上去吃了炒河粉和豆浆，用薄荷健康App计算，一下子就超标了，所以只能午饭、晚饭只能吃少一点了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>早餐：鸡蛋、炒河粉
午餐：桂林米粉、卤肉、瘦肉
晚餐：山姆大叔汉堡、椒盐鸡块、薯条、零度可乐、可口可乐</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405150842441.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>很显然，运动和不运动差之千里，虽然是2点睡觉，6点半醒来，但是整个人不算特别困，也没觉得一点精神都没有，感觉好像睡得还可以。坚持坚持再坚持，早上去吃了炒河粉和豆浆，用薄荷健康App计算，一下子就超标了，所以只能午饭、晚饭只能吃少一点了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 50</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-50/</link>
      <pubDate>Mon, 13 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-50/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/&#34;&gt;1493. 删掉一个元素以后全为 1 的最长子数组&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个二进制数组 &lt;code&gt;nums&lt;/code&gt; ，你需要从中删掉一个元素。&lt;/p&gt;
&lt;p&gt;请你在删掉元素的结果数组中，返回最长的且只包含 1 的非空子数组的长度。&lt;/p&gt;
&lt;p&gt;如果不存在这样的子数组，请返回 0 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;删掉位置&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的数字后&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的最长全&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;子数组为&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestSubarray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 检查数组是否全为1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isAllOnes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;every&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 检查数组是否全为0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isAllZeros&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;every&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 处理数组，返回最长连续1的长度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;processArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;segments&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxLength&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxLength&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;maxLength&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxLength&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;isAllOnes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;isAllZeros&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 找出所有满足条件的0的位置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;zeroIndices&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;zeroIndices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;zeroIndices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;processArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxResult&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;zeroIndices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;modifiedArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;modifiedArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentMax&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;processArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;modifiedArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;currentMax&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxResult&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;maxResult&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentMax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxResult&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/">1493. 删掉一个元素以后全为 1 的最长子数组</a></p>
<p>给你一个二进制数组 <code>nums</code> ，你需要从中删掉一个元素。</p>
<p>请你在删掉元素的结果数组中，返回最长的且只包含 1 的非空子数组的长度。</p>
<p>如果不存在这样的子数组，请返回 0 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">2</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">删掉位置</span> <span class="mi">4</span> <span class="nx">的数字后</span><span class="err">，</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="nx">的最长全</span> <span class="mi">1</span> <span class="nx">子数组为</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">longestSubarray</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 检查数组是否全为1
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">function</span> <span class="nx">isAllOnes</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">every</span><span class="p">(</span><span class="nx">n</span> <span class="p">=&gt;</span> <span class="nx">n</span> <span class="o">===</span> <span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 检查数组是否全为0
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">function</span> <span class="nx">isAllZeros</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">every</span><span class="p">(</span><span class="nx">n</span> <span class="p">=&gt;</span> <span class="nx">n</span> <span class="o">===</span> <span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 处理数组，返回最长连续1的长度
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">function</span> <span class="nx">processArray</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">str</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">segments</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;0&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">maxLength</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">segment</span> <span class="k">of</span> <span class="nx">segments</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">segment</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">maxLength</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">maxLength</span> <span class="o">=</span> <span class="nx">segment</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">maxLength</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">isAllOnes</span><span class="p">(</span><span class="nx">nums</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">isAllZeros</span><span class="p">(</span><span class="nx">nums</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 找出所有满足条件的0的位置
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">zeroIndices</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="mi">1</span> <span class="o">||</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="mi">1</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">zeroIndices</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">zeroIndices</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">processArray</span><span class="p">(</span><span class="nx">nums</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">maxResult</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="nx">zeroIndices</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">index</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">modifiedArray</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">nums</span><span class="p">));</span>
</span></span><span class="line"><span class="cl">        <span class="nx">modifiedArray</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">currentMax</span> <span class="o">=</span> <span class="nx">processArray</span><span class="p">(</span><span class="nx">modifiedArray</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">currentMax</span> <span class="o">&gt;</span> <span class="nx">maxResult</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">maxResult</span> <span class="o">=</span> <span class="nx">currentMax</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">maxResult</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>处理特殊情况，如全1或全0数组。</li>
<li>遍历数组，找到所有<strong>左右至少有一个1的0的位置</strong>。</li>
<li>如果没有符合条件的0，则直接计算原数组的最长连续1的长度。</li>
<li>对于每个符合条件的0，替换为1，切割数组，找到最长长度。</li>
<li>比较所有替换后的最长长度，并减1。</li>
<li>最终返回最大值。</li>
</ol>
<blockquote>
<p>其实一开始，我是通过判断左右都为1的0才作为候选进行替换，但在实际操作中发现了一个问题：替换为1并切割后的长度并不比原生的长，导致所求结果出现偏差。具体来说，替换后的最长连续1的长度小于原生长度，最终返回了原生长度。而这个原生长度并没有经过0替换为1的操作，因此减1的修正逻辑是不必要的，导致结果一直错误。</p></blockquote>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2505/250512-india-pakistan-ceasefire.html">Pakistan and India agree to ceasefire - Breaking News English Lesson</a></p>
<p>巴基斯坦和印度宣布停火，但双方均声称对方违反协议。这两个拥核邻国在最近几周已濒临全面战争。此次冲突的导火索是4月22日在印度控制的克什米尔地区帕哈甘旅游胜地发生的袭击事件，造成26名平民死亡。印度指责巴基斯坦策划了此次袭击，但巴基斯坦坚决否认指控。袭击发生后，双方互相发动军事打击：印度向巴基斯坦旁遮普省的空军基地发射导弹，巴基斯坦则称其目标是印度的军事设施。这些行动加剧了局势升级为更危险地区冲突的风险。</p>
<p>尽管达成停火，但局势仍显脆弱。巴基斯坦外交部表示“仍致力于忠实地执行停火协议”。印度军方发言人则否认印方违反停火的指控，并警告称“若领土遭袭，印度将进行反击”，强调“印度军队已做好全面作战准备，随时捍卫国家”。美国总统特朗普宣布此次停火是在美国斡旋下达成的，美方“敦促双方寻求缓和局势的途径，并愿意协助启动建设性对话”。此外，中国外交部长王毅也表示愿为印巴停火发挥建设性作用，支持通过对话解决争端。</p>
<h2 id="tip">Tip</h2>
<p>如何在 Mermaid 在线编辑器中实现长截图？</p>
<p>在 <a href="https://mermaid-live.nodejs.cn/">Mermaid 在线编辑器</a> 上快速截图，虽然已经支持以 PNG 格式下载，但当流程图很长时，页面两边的间距过大，导致流程图内容展示过小。所以，可以使用 Google 浏览器的全屏截图功能。具体操作是：在流程图预览模式下，按下 <code>F12</code>，然后按下 <code>Ctrl + Shift + P</code>，输入 <code>screenshot</code>，选择 <strong>Capture full size screenshot</strong>，这样就可以实现长截图了。</p>
<p>不过，在 <a href="https://mermaid.nodejs.cn/">Mermaid 中文网</a> 上，这个方法一直没成功。后来发现，可以先点击 <strong>Kroki</strong> 预览流程图，然后缩小窗口，再使用上述命令，这样就能成功截图了。</p>
<h2 id="share">Share</h2>
<p><a href="https://www.infoq.cn/article/YgS4DyKMbX4p3mSSU8fA">AI 时代团队管理的变与不变-InfoQ</a></p>
<ol>
<li>软件改不动体现于，为了修复一个问题却带来了三个新问题，或为了修复一个小问题却导致了大故障，最终让人失去改的勇气和信心。</li>
<li>职业发展是在职场中完成的，而自我发展是在关系中完成的，且关系越是紧密的场合就越能帮助个人更好地发展自我。</li>
<li>一个自我发展不足的人，是很难在工作与生活中做好倾听、与人共情、尊重和看见他人的，且这些人也没有意识到这方面不足。</li>
<li>人最大的问题是不认为自己有问题，最重的傲慢是以为自己才对，背后折射出的是个人自我发展的不成熟。</li>
<li>育儿之所以对于成年人的自我发展那么重要，是因为成年人需要在一个更干净和纯粹的关系中，照见自己的不足、发现自己的傲慢与无知，通过这些强烈的刺激而引发自我改变。</li>
<li>自我成长是一个系统性的终身话题，对管理者的要求尤为高。</li>
<li><strong>未来淘汰你的不是 AI，而是掌握 AI 的人。</strong></li>
<li>人的核心竞争力在于通过软件设计驾驭复杂度，以及通过工程能力来确保软件开发的效率和质量，这两大内容没有人的参与 AI 独自是搞不定的。不过，我们可以通过用好 AI 而让这两件事变得更容易。</li>
<li>管理理念得从“胡萝卜 + 大棒”转向人性化管理和自组织管理。</li>
<li>实施人性化管理的背后，考验的是管理者自身的自我发展水平，当管理者不具备看见人、尊重人的能力并具备良好的独立人格时，他就很难有人性化管理的意识与行动。</li>
<li><strong>低效的团队会让人无一例外地发现，管理者是整个团队的最大瓶颈。</strong></li>
<li>这些管理者普遍面临精力、心力和能力“三力”不足的现象，以至于没有办法通过授权、放权、机制等有效的手段将自主性还给员工，从而让员工获得更多锻炼而更好地成长。</li>
<li>无论管理者有多强的能力，当一个团队交到他手上后，他就得想方设法激发每位团队成员的主人翁意识和工作热情，当员工有自主性时才能长出自驱力，进一步通过个体间的协作而变成自组织团队。</li>
<li>一个自组织团队的管理者，才能让自己的精力和心力不枯竭，而能打造出这样的团队，也意味着他是名胜任的管理者，证明自己的能力的同时，对管理者这个身份才会有认同感，才能找到成为管理者的价值感。</li>
<li>当管理者的焦点变成关注团队和人在先时，管理手段就会慢慢离开本能的命令和控制型。这个转变，也是从管理者个人的“我想”变成了整个团队的“我们想”。</li>
<li>管理者一定要有的认知是，团队是自己的，授权和支持员工的成长，最终都会让自己从中享受到成果，自己和员工是共赢而非博弈关系。共赢思维一旦建立，才会花更多的精力去塑造良好的团队文化氛围，以氛围做土壤，让员工进一步长出“我想”、“我要”和“我能”。</li>
<li>技术管理是有方法可循的，是可以学习的，最重要的是管理者得像解决软件缺陷那样去对待技术管理问题。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 27</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-27/</link>
      <pubDate>Fri, 10 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-27/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/length-of-last-word/&#34;&gt;58. 最后一个单词的长度&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串 &lt;code&gt;s&lt;/code&gt;，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 &lt;strong&gt;最后一个&lt;/strong&gt; 单词的长度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;单词&lt;/strong&gt; 是指仅由字母组成、不包含任何空格字符的最大子字符串。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;最后一个单词是&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;“&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;World&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;”，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;长度为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lengthOfLastWord&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;只是通过空格切割字符串变成数组，然后过滤掉空字符串，即全部单词的数组，再取数组最后一个值的长度，即为所求值。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240404-gmail.html&#34;&gt;Gmail celebrates its 20th birthday - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这家全球使用率最高的电子邮件提供商周一迎来了20岁生日。Gmail 于 2004 年 4 月 1 日推出。当时，它是革命性的，因为它提供了大量的存储空间，而且是免费的。有些人认为这是一个骗局，因为它是在愚人节宣布的。然而，这不是开玩笑。Gmail 免费提供了 1 GB 的巨大存储空间。许多其他提供商仅提供 15 兆字节。起初，人们只有在收到邀请后才能注册 Gmail。它成为技术爱好者的“必备”工具。Gmail成功的另一个原因是它搜索邮件的速度比当时的任何其他电子邮件服务都快。它在过滤垃圾邮件方面也更好。&lt;/p&gt;
&lt;p&gt;自 2004 年以来，Gmail 已成为全球最大的电子邮件提供商。超过 17 亿人使用它。这占世界人口的20%。在美国，大约45%的电子邮件用户使用它。多年来，谷歌已将其免费存储空间增加到 15 GB，并添加了许多新功能。其中之一是一键式取消订阅按钮，可将不需要的邮件拒之门外。另一个功能是“撤消发送”按钮。这允许用户在单击“发送”后停止发送邮件。PC Mag网站称，Gmail是当今生活的重要组成部分。它写道：“Gmail已经融入了这么多人的生活中，几乎没有人对此有太多想法。人们很可能会永远使用它。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;String.prototype.split() 方法接受一个模式，通过搜索模式将字符串分割成一个有序的子串列表，将这些子串放入一个数组，并返回该数组。&lt;/li&gt;
&lt;li&gt;Array.prototype.splice() 通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。&lt;/li&gt;
&lt;li&gt;Array.prototype.slice() 返回一个新的数组对象，这一对象是一个由 &lt;code&gt;start&lt;/code&gt; 和 &lt;code&gt;end&lt;/code&gt; 决定的原数组的浅拷贝（包括 &lt;code&gt;start&lt;/code&gt;，不包括 &lt;code&gt;end&lt;/code&gt;），其中 &lt;code&gt;start&lt;/code&gt; 和 &lt;code&gt;end&lt;/code&gt; 代表了数组元素的索引。原始数组不会被改变。&lt;/li&gt;
&lt;li&gt;Array.prototype.toSpliced() 是 &lt;code&gt;splice()&lt;/code&gt;方法的复制版本。它返回一个新数组，并在给定的索引处删除和/或替换了一些元素。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;p&gt;在看《少年包青天》，然后八贤王对包拯说的一句话：“你的心，不要改，只是再多一点计谋和手段”。结合最近百度副总裁璩静事件，不管真心还是假意，是没办法用很激进的方式处理团队的事情，很容易落人口实，陷自己于不利之地。引以为戒，引以为戒。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/length-of-last-word/">58. 最后一个单词的长度</a></p>
<p>给你一个字符串 <code>s</code>，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 <strong>最后一个</strong> 单词的长度。</p>
<p><strong>单词</strong> 是指仅由字母组成、不包含任何空格字符的最大子字符串。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">s</span> <span class="o">=</span> <span class="s2">&#34;Hello World&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">最后一个单词是</span><span class="err">“</span><span class="nx">World</span><span class="err">”，</span><span class="nx">长度为</span> <span class="mi">5</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">lengthOfLastWord</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">s</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">s</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">).</span><span class="nx">filter</span><span class="p">((</span><span class="nx">item</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">item</span> <span class="o">!==</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span><span class="p">[</span><span class="nx">result</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">].</span><span class="nx">length</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>只是通过空格切割字符串变成数组，然后过滤掉空字符串，即全部单词的数组，再取数组最后一个值的长度，即为所求值。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240404-gmail.html">Gmail celebrates its 20th birthday - Breaking News English Lesson</a></p>
<p>这家全球使用率最高的电子邮件提供商周一迎来了20岁生日。Gmail 于 2004 年 4 月 1 日推出。当时，它是革命性的，因为它提供了大量的存储空间，而且是免费的。有些人认为这是一个骗局，因为它是在愚人节宣布的。然而，这不是开玩笑。Gmail 免费提供了 1 GB 的巨大存储空间。许多其他提供商仅提供 15 兆字节。起初，人们只有在收到邀请后才能注册 Gmail。它成为技术爱好者的“必备”工具。Gmail成功的另一个原因是它搜索邮件的速度比当时的任何其他电子邮件服务都快。它在过滤垃圾邮件方面也更好。</p>
<p>自 2004 年以来，Gmail 已成为全球最大的电子邮件提供商。超过 17 亿人使用它。这占世界人口的20%。在美国，大约45%的电子邮件用户使用它。多年来，谷歌已将其免费存储空间增加到 15 GB，并添加了许多新功能。其中之一是一键式取消订阅按钮，可将不需要的邮件拒之门外。另一个功能是“撤消发送”按钮。这允许用户在单击“发送”后停止发送邮件。PC Mag网站称，Gmail是当今生活的重要组成部分。它写道：“Gmail已经融入了这么多人的生活中，几乎没有人对此有太多想法。人们很可能会永远使用它。</p>
<h2 id="tip">Tip</h2>
<ol>
<li>String.prototype.split() 方法接受一个模式，通过搜索模式将字符串分割成一个有序的子串列表，将这些子串放入一个数组，并返回该数组。</li>
<li>Array.prototype.splice() 通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。</li>
<li>Array.prototype.slice() 返回一个新的数组对象，这一对象是一个由 <code>start</code> 和 <code>end</code> 决定的原数组的浅拷贝（包括 <code>start</code>，不包括 <code>end</code>），其中 <code>start</code> 和 <code>end</code> 代表了数组元素的索引。原始数组不会被改变。</li>
<li>Array.prototype.toSpliced() 是 <code>splice()</code>方法的复制版本。它返回一个新数组，并在给定的索引处删除和/或替换了一些元素。</li>
</ol>
<h2 id="share">Share</h2>
<p>在看《少年包青天》，然后八贤王对包拯说的一句话：“你的心，不要改，只是再多一点计谋和手段”。结合最近百度副总裁璩静事件，不管真心还是假意，是没办法用很激进的方式处理团队的事情，很容易落人口实，陷自己于不利之地。引以为戒，引以为戒。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202405092313021.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 26</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-26/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-26/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/search-insert-position/&#34;&gt;35. 搜索插入位置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。&lt;/p&gt;
&lt;p&gt;请必须使用时间复杂度为 &lt;code&gt;O(log n)&lt;/code&gt; 的算法。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;searchInsert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;floor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 如果没有找到目标值，返回 left
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;一开始事宜for循环，然后加上三个if条件进行判断就解答出来了，但是，不符合题目要求的时间复杂度 &lt;code&gt;O(log n)&lt;/code&gt;，所以就看了一下官方解答思路，使用二分查找法解答。如果目标值存在于数组中，返回它的索引，如果不存在，返回目标值应该被插入的位置。二分查找法之前已经使用过，但是一下子没想起来，所以还是要多练习才行。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2404/240401-ai-extinction.html&#34;&gt;AI an &amp;rsquo;extinction-level threat&amp;rsquo; says study by experts - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;美国国务院委托的一份报告警告说，人工智能存在生存威胁。该报告假设了最坏情况下对人类的“灭绝级威胁”。作者指出，“武器化和失控导致的人工智能能力迅速扩大，对国家安全构成越来越大的风险”。该报告补充说，美国政府“明确而迫切需要”“迅速果断地”进行干预。它继续说：“先进人工智能的兴起有可能破坏全球安全的稳定，让人想起核武器的引入。该报告呼吁成立一个新的联邦机构来监管开发人工智能工具的公司，并限制人工智能的发展。&lt;/p&gt;
&lt;p&gt;这份长达247页的报告是国务院于2022年11月委托撰写的。它是由一家提供有关人工智能的技术简报和指导的公司编写的。作者与OpenAI、Google DeepMind和Meta等人工智能公司的专家进行了广泛的交谈。作者建议为人工智能模型的计算能力设定上限。他们还建议将开源或揭示更强大的人工智能模型背后的编码定为刑事犯罪。Futurism.com 网站表示：“超过一半的受访人工智能研究人员表示，人类有5%的可能性会被逼到灭绝，以及其他&amp;rsquo;极其糟糕的结果&amp;rsquo;。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;gitlab 仓库迁移&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; git clone --mirror url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; git remote set-url –-push origin url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; git push --mirror 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后会出现提示没有权限的问题，如下图所示：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/search-insert-position/">35. 搜索插入位置</a></p>
<p>给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。</p>
<p>请必须使用时间复杂度为 <code>O(log n)</code> 的算法。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span> <span class="nx">target</span> <span class="o">=</span> <span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="mi">2</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">function</span> <span class="nx">searchInsert</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="nx">target</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">left</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">right</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">while</span> <span class="p">(</span><span class="nx">left</span> <span class="o">&lt;=</span> <span class="nx">right</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">mid</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">((</span><span class="nx">left</span> <span class="o">+</span> <span class="nx">right</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">mid</span><span class="p">]</span> <span class="o">===</span> <span class="nx">target</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="k">return</span> <span class="nx">mid</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">mid</span><span class="p">]</span> <span class="o">&lt;</span> <span class="nx">target</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">left</span> <span class="o">=</span> <span class="nx">mid</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">right</span> <span class="o">=</span> <span class="nx">mid</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="nx">left</span><span class="p">;</span> <span class="c1">// 如果没有找到目标值，返回 left
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>一开始事宜for循环，然后加上三个if条件进行判断就解答出来了，但是，不符合题目要求的时间复杂度 <code>O(log n)</code>，所以就看了一下官方解答思路，使用二分查找法解答。如果目标值存在于数组中，返回它的索引，如果不存在，返回目标值应该被插入的位置。二分查找法之前已经使用过，但是一下子没想起来，所以还是要多练习才行。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2404/240401-ai-extinction.html">AI an &rsquo;extinction-level threat&rsquo; says study by experts - Breaking News English Lesson</a></p>
<p>美国国务院委托的一份报告警告说，人工智能存在生存威胁。该报告假设了最坏情况下对人类的“灭绝级威胁”。作者指出，“武器化和失控导致的人工智能能力迅速扩大，对国家安全构成越来越大的风险”。该报告补充说，美国政府“明确而迫切需要”“迅速果断地”进行干预。它继续说：“先进人工智能的兴起有可能破坏全球安全的稳定，让人想起核武器的引入。该报告呼吁成立一个新的联邦机构来监管开发人工智能工具的公司，并限制人工智能的发展。</p>
<p>这份长达247页的报告是国务院于2022年11月委托撰写的。它是由一家提供有关人工智能的技术简报和指导的公司编写的。作者与OpenAI、Google DeepMind和Meta等人工智能公司的专家进行了广泛的交谈。作者建议为人工智能模型的计算能力设定上限。他们还建议将开源或揭示更强大的人工智能模型背后的编码定为刑事犯罪。Futurism.com 网站表示：“超过一半的受访人工智能研究人员表示，人类有5%的可能性会被逼到灭绝，以及其他&rsquo;极其糟糕的结果&rsquo;。</p>
<h2 id="tip">Tip</h2>
<p>gitlab 仓库迁移</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> git clone --mirror url
</span></span><span class="line"><span class="cl"> git remote set-url –-push origin url
</span></span><span class="line"><span class="cl"> git push --mirror 
</span></span></code></pre></div><p>然后会出现提示没有权限的问题，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404091559471.png"></p>
<pre tabindex="0"><code>remote: GitLab: You are not allowed to force push code to a protected branch on this project.
</code></pre><p>需要打开GitLab，在项目设置那里，开启允许强制更新开关，然后再运行命令<code>git push --mirror</code>即可。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404091600182.png"></p>
<h2 id="share">Share</h2>
<p>“每当你想要批评别人时，你要记住，这个世界上所有的人，并不是个个都有过你拥有的那些优越条件。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>《党委会的工作方法》读后感</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%85%9A%E5%A7%94%E4%BC%9A%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95%E8%AF%BB%E5%90%8E%E6%84%9F/</link>
      <pubDate>Mon, 29 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%85%9A%E5%A7%94%E4%BC%9A%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95%E8%AF%BB%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;去年国庆期间，看完了这本小册子，从中知道了很多管理团队上面的方法，当时自己的评价是：“完全值得每日一读”。但是看完也就看完了，并没有特别重视。这一段时间在团队管理上面，遇到了一些问题，想起这本小册子，温习了一下，顿觉发人深省，不由得感叹，之前毫不在意，如今逐字学习。行有不得，反求诸己，所以打算每一个工作方法都结合自身经历进行分析、总结和反思，希望自己在这方面能有所长进。&lt;/p&gt;
&lt;h2 id=&#34;一党委书记要善于当班长&#34;&gt;一、党委书记要善于当“班长”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;党的委员会有一二十个人，像军队的一个班，书记好比是“班长”。要把这个班带好，的确不容易。目前各中央局、分局都领导很大的地区，担负很繁重的任务。领导工作不仅要决定方针政策，还要制定正确的工作方法。有了正确的方针政策，如果在工作方法上疏忽了，还是要发生问题。党委要完成自己的领导任务，就必须依靠党委这“一班人”，充分发挥他们的作用。书记要当好“班长”，就应该很好地学习和研究&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果这“一班人”动作不整齐，就休想带领千百万人去作战，去建设。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;一个人的能力不管有多厉害，他的时间和精力终究是有限的，单打独斗可以做成一些事情，但做不成大事，要做大事，就需要借助众人的力量，所以他需要一个团队，这是前提，而这之后，他想要把事情做好，这是结果，为了这个结果，他需要把团队带好，这是过程。我们常说，兵熊熊一个，将熊熊一窝，决定团队成败的最重要的人永远是团队负责人。文中提到的“正确的方针政策”和“正确的工作方法”，刚好对应上了团队负责人最重要的两个工作——目标和计划，目标是要做什么？计划是怎么做？然后重点来了，你知道做什么，也知道要怎么做，那么，你要怎么样才能让别人按照你的想法去执行呢？就因为你是领导么？就因为你官比较大？不是的，根本不会有人吃你这一套，换位思考，我也会这样想，如果这些事情对我没有好处，甚至还增加我的工作量，我干嘛要认可你说的，别跟我提什么为了团队的发展，为了团队的将来，跟我有什么关系，将来的事情谁说得准，多一事不如少一事，而且一将功成万骨枯，到时候出事情了我背锅，有成果了你摘桃子，我不见得落得什么好处。&lt;/p&gt;
&lt;p&gt;做什么？怎么做？怎么让他做？通过职权施压，短期可能会有效果，但是长期来看，这是不健康的方式，迟早会有问题。要让别人心甘情愿去做某件事情，我觉得可以从两方面入手，一是领导力，领导力并不等于职权，它是被他人信任的体现，是需要日常去积累的；二是从人性是自私的这一点入手，只有摸清对方工作的诉求，才能对症下药，灵活调整应对方案。&lt;/p&gt;
&lt;h2 id=&#34;二要把问题摆到桌面上来&#34;&gt;二、要把问题摆到桌面上来。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;不仅“班长”要这样做，委员也要这样做。不要在背后议论。有了问题就开会，摆到桌面上来讨论，规定它几条，问题就解决了。有问题而不摆到桌面上来，就会长期不得解决，甚至一拖几年。“班长”和委员还要能互相谅解。书记和委员，中央和各中央局，各中央局和区党委之间的谅解、支援和友谊，比什么都重要。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这就是项目管理制度执行过程中，之所以会出问题的原因，很多事情没说明白，似是而非，让同事有太多的选择余地，那大家肯定选择对自己有利的东西了，不会照你期望的流程执行。因此，必须假设人性本恶，先考虑最坏的情况，然后再采取行动，否则，永远无法解决问题。仅仅在群里发布是不够的，很多人不会重视，必须要在会议上，对所有规定的事情进行详细说明和解释，定好奖罚机制，达成共识。&lt;/p&gt;
&lt;h2 id=&#34;三互通情报&#34;&gt;三、“互通情报”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;就是说，党委各委员之间要把彼此知道的情况互相通知、互相交流。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;信息的同步很重要，作为管理人员，也不要仗着掌握一些重要信息，然后拿捏其他同事。消除信息差很重要，传达是否及时，传达是否到位也很重要。&lt;/p&gt;
&lt;h2 id=&#34;四不懂得和不了解的东西要问下级不要轻易表示赞成或反对&#34;&gt;四、不懂得和不了解的东西要问下级，不要轻易表示赞成或反对。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;有些文件起草出来压下暂时不发，就是因为其中还有些问题没有弄清楚，需要先征求下级的意见。我们切不可强不知以为知，要“不耻下问”，要善于倾听下面干部的意见。先做学生，然后再做先生；先向下面干部请教，然后再下命令。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;我们做出的决定包括了下面干部提出的正确意见，他们当然拥护。下面干部的话，有正确的，也有不正确的，听了以后要加以分析。对正确的意见，必须听，并且照它做。中央领导之所以正确，主要是由于综合了各地供给的材料、报告和正确的意见。如果各地不来材料，不提意见，中央就很难正确地发号施令。对下面来的错误意见也要听，根本不听是不对的；不过听了而不照它做，并且要给以批评。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;管理带人，以前还觉得不就是带人嘛，有什么难的，经历过一些事情之后，会有敬畏之心，而且要学的东西太多了，没办法面面俱到，很多技术细节没办法像之前那样深入，所以会觉得心里没底。很多时候，你只能听取在这个方向深入的同事提出的意见，这个时候就遇到考验了，你害不害怕手底下的人比你厉害？说实话，我恨不得团队里每个人都比我厉害，这样我工作更好达成，至于担心会被替代，其实也要明白，自己肯定是具备他人没有的优势，才会被安排做这样的工作，哪有那么容易就被替代的，即便如此，那只能说明自己就应该被淘汰，谁让你不持续成长呢，总之，我很乐意接受这种挑战，混吃等死有什么意思。&lt;/p&gt;
&lt;h2 id=&#34;五学会弹钢琴&#34;&gt;五、学会“弹钢琴”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;党委要抓紧中心工作，又要围绕中心工作而同时开展其他方面的工作。我们现在管的方面很多，各地、各军、各部门的工作，都要照顾到，不能只注意一部分问题而把别的丢掉。凡是有问题的地方都要点一下，这个方法我们一定要学会。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;有时候会觉得，如果只是带一个项目的话，不会有什么难度，但是带五个项目的时候，就开始觉得有点力不从心，我一直在想问题出在哪里，为什么总觉得没有做好呢？其实，问题就在于把五个项目作为独立的个体来看了，其实，它们是相互关联的。看似多个项目，其实是一个项目，然后那五个项目只是五个模块罢了，各个模块又有相应的负责人，你只需要管理好五个人即可，而不是全部的十几个人。&lt;/p&gt;
&lt;h2 id=&#34;六要抓紧&#34;&gt;六、要“抓紧”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;就是说，党委对主要工作不但一定要“抓”，而且一定要“抓紧”。什么东西只有抓得很紧，毫不放松，才能抓住。抓而不紧，等于不抓。伸着巴掌，当然什么也抓不住。就是把手握起来，但是不握紧，样子像抓，还是抓不住东西。我们有些同志，也抓主要工作，但是抓而不紧，所以工作还是不能做好。不抓不行，抓而不紧也不行。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这一点就是我要写这篇文章的原因。&lt;/p&gt;
&lt;p&gt;在项目管理初期已经制定了管理制度，但执行过程中没有及时跟进，这就导致一些同事不遵守规定，比如今天不写项目进度会议记录，没有人提醒；明天不及时更新项目计划，也没有人提醒。这样一试探，便越发随意了。&lt;/p&gt;
&lt;p&gt;那为什么不及时提醒呢？其实就是自己生气了，觉得说了那么多次，为什么总是这样？就开始不管不问了。这个是不对的，无论发生什么情况，都不应该赌气去做事情。无论问题大小，作为团队负责人，你都是第一责任人，应该对所有问题负起责任。不能被动地观望，任由问题扩大，到那时，已经为时已晚。&lt;/p&gt;
&lt;p&gt;任何策略的制定都是为了实现特定目标，而不是为了制定而制定。重要的是做得好不好，而不是做得多不多。如果事情做得不好，再彰显自己怎么用心努力也是无济于事，不要掉进“没有功劳，也有苦劳”的陷阱，结果好就是好，不好就是不好，不要去争取这种施舍。&lt;/p&gt;
&lt;p&gt;抓而不紧，等于不抓。如同朝鲜战争一样，打得一拳开，免得百拳来。当时不打这一仗，不是后代也要打的问题，是以后连跟人打仗的资格都未必有，只有挨打的份儿。&lt;/p&gt;
&lt;h2 id=&#34;七胸中有数&#34;&gt;七、胸中有“数”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这是说，对情况和问题一定要注意到它们的数量方面，要有基本的数量的分析。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在任何群众运动中，群众积极拥护的有多少，反对的有多少，处于中间状态的有多少，这些都必须有个基本的调查，基本的分析，不可无根据地、主观地决定问题。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;有一次在向上反馈的时候，我说有些同事任务交叉得有点多，可能有点问题；还有一次，我说项目管理系统里待验收的任务，验收是否真的落实了？感觉很多人看都没看，就随便点了一下，算是验收通过了。然后上面问，有数据么，任务怎么交叉了？哪些任务是应付验收的？然后，我就懵圈了，因为我答不上来。&lt;/p&gt;
&lt;p&gt;这两件事情，我现在想起来还是很生气，我不至于犯这种错的，还是平时太想当然，太掉以轻心了，一些细节不够重视，才在这种事情上栽了跟头。所以我回去写了检讨书，狠狠反思了一下。&lt;/p&gt;
&lt;p&gt;没有调研就没有发言权，任何事情下结论之前，需要做下调研，依据事实和数据来判断，不能空口无凭。这部分在《毛选》中就有具体的处理方案，可以细读一下的。不应使用“想当然”、“凭感觉”来解决遇到的问题，没有数据作为佐证，就无法保证做出正确的判断，再者，你有的只是你的感觉，是很难让他人信服的。&lt;/p&gt;
&lt;p&gt;在向上管理里面，任何需要反馈的问题，都应该先想清楚，而不是想当然、凭感觉，应实事求是，基于数据说话。&lt;/p&gt;
&lt;p&gt;职责越大，就越需要谨言慎行，话不能乱说，事不可乱做，你不严谨的言行，容易留下后患。&lt;/p&gt;
&lt;h2 id=&#34;八安民告示&#34;&gt;八、“安民告示”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;开会要事先通知，像出安民告示一样，让大家知道要讨论什么问题，解决什么问题，并且早作准备。有些地方开干部会，事前不准备好报告和决议草案，等开会的人到了才临时凑合，好像“兵马已到，粮草未备”，这是不好的。如果没有准备，就不要急于开会。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;开会之前，提前在群里发一下通知，这样其他同事可以安排好自己的时间，特别是跨部门协作更应如此，然后要讨论任何问题，不应该自己想都没想，就召集大伙召开会议，要准备几个方案，理清楚各方案利弊，然后自己的倾向方案是哪个？为什么？如果做到这些，可以说已经具备召开会议的条件了。&lt;/p&gt;
&lt;h2 id=&#34;九精兵简政&#34;&gt;九、“精兵简政”。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;讲话、演说、写文章和写决议案，都应当简明扼要。会议也不要开得太长。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;会议前准备充分，那么开会时间就不会那么长，要明确重点，最近遇到的问题是，有同事经常开会就是3个小时，虽然适当拓展话题也是蛮好的，不怕你话多，就怕你没得讲。但是每次都这样也有点挺不住，因为还有其他项目要过进度，一天的时间很快就没了的。有些讨论的内容，其实是发散性的，可说可不说，也可以会后在座位上进一步讨论，所以，为了不打击对方的积极性，也就没在会议上去打断对方，只能自己先想办法，怎么解决这个问题，我就把会议安排在上午，然后还剩下一个多小时下班吃饭，就有了会议时长限制，不会总是开太久了。&lt;/p&gt;
&lt;h2 id=&#34;十注意团结那些和自己意见不同的同志一道工作&#34;&gt;十、注意团结那些和自己意见不同的同志一道工作。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;不论在地方上或部队里，都应该注意这一条。对党外人士也是一样。我们都是从五湖四海汇集拢来的，我们不仅要善于团结和自己意见相同的同志，而且要善于团结和自己意见不同的同志一道工作。我们当中还有犯过很大错误的人，不要嫌这些人，要准备和他们一道工作。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;“把朋友搞得多多的，把敌人搞得少少。”其实这一句话就说完了，但知行合一一向都很难，在工作中，如果某人给你留下了不好的印象，你心里就会给他贴上标签，这样就很难相对客观地去判断一些事情，到最后工作没做好，吃亏的还是自己。&lt;/p&gt;
&lt;p&gt;我一直秉承着只要认真工作，哪怕笨一点也没关系，能帮的一定会帮，大家都是普通人，集思广益，总能找到解决问题的方法，但是你不用心，投机取巧，推诿甩锅，还耍小聪明就忍不了了，不要觉得自己做什么别人都不知道，怎么可能呢，没人是傻子，更不要说领导层的都是人精，谁不知道你心里那点小九九？&lt;/p&gt;
&lt;p&gt;所以，我特别生气，无法理解这种人，啥好处都让你拿了，其他人汤都喝不上，还要替你背锅，加上一份工作，想做就把它做好，你觉得不爽不满意了，所以才消极怠工，那走就是了，找到你觉得更好的工作，然后会变得更加积极主动，认真努力不是更好？在这浪费时间有意思么？还是说你本来就是这样的人，这个只是借口而已？&lt;/p&gt;
&lt;p&gt;没有人喜欢工作，但至少有点契约精神，加上资本是逐利的，任何人都可以被替代，不说显得自己多职业，至少为了自己，好好打磨自己的技艺，而不是浪费时间。&lt;/p&gt;
&lt;p&gt;管理带人就是没办法可以随意爆发自己的情绪，有万分委屈该忍还是要忍，要不然成何体统，内心恨不得把对方头都拧断了，但还是要心平气和地去沟通，因为发脾气不能解决问题，只会让事情变得更糟糕，至于换人，之前我也觉得直接换人不就好了，但是现在又觉得，并不是什么事情换人就可以解决的，一定是自己哪个方面做得不够好，才会变成这样，没有人一开始就是这样的，要不然当初面试就不会招进来，就当是修炼自己的度量了，可以想象自己那些伟大的抱负，上升到更高的维度，就觉得当下这些都是小事情了。谁身上都有缺点，谁身上都有长处，容人之所短，用人之所长。&lt;/p&gt;
&lt;h2 id=&#34;十一力戒骄傲&#34;&gt;十一、力戒骄傲。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这对领导者是一个原则问题，也是保持团结的一个重要条件。就是没有犯过大错误，而且工作有了很大成绩的人，也不要骄傲。禁止给党的领导者祝寿，禁止用党的领导者的名字作地名、街名和企业的名字，保持艰苦奋斗作风，制止歌功颂德现象。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其实，说到底大家都是打工的，谁比谁高贵呢？出了公司谁认识你，所以根本没什么值得炫耀或者颐指气使的。&lt;/p&gt;
&lt;p&gt;之前有一次安排加班，有个同事已经连续加了两天了，事情还没有做完，最好当然是能加班了。但本着人性化的原则，就安排先休息了，然后其他骨干同事就说，以前我们都有过熬夜通宵加班的，这个算什么，继续安排就是了，没必要和他解释那么多。然后我说，该说还是要说，你安排先休息了，对方不一定就真的去休息，你不安排休息，对方不一定就真的继续加班，人在工位，但是心里不情愿啊。我相信只要懂得换位思考，体谅他人的难处，事情一定会往好的方向发展，但是这个方式还是要看人，没有任何一种方法能够适用所有人，管理就是见人说人话，见鬼说鬼话，千变万化，无穷无尽。&lt;/p&gt;
&lt;p&gt;后来，我还是和那个同事沟通，说连续加班挺累的吧，还是先休息下，然后再继续加班吧，然后他也没休息，继续先忙完要紧的事情了。&lt;/p&gt;
&lt;p&gt;言归正传，其实这个点，也是我想说的，很多领导都会说，我每天那么用心工作，天天熬夜，为什么你们都不能用心一点？其实他不明白，屁股决定脑袋，位置都不一样，职责肯定不一样的，你拿这个来要求下属，下属只会笑话你，换我做领导，我比你还能卷，睡在公司都行。&lt;/p&gt;
&lt;p&gt;我觉得以上就是一个骄傲的例子。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语&lt;/h2&gt;
&lt;p&gt;管理之所以被称为一门艺术，是因为人性是自私的，人性是趋利避害的，人性是好逸恶劳的，人性是变化的，我们要知道在变化中求不变，又要在不变中求变化，一切都要见机行事，没办法像套公式一样，简单粗暴地解决遇到的所有问题，而是使用一种妥当的方式，让他人能够接受的方式去安排和落实工作，并拿到成果。管理不是目的，结果也不是目的，好的结果才是。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>去年国庆期间，看完了这本小册子，从中知道了很多管理团队上面的方法，当时自己的评价是：“完全值得每日一读”。但是看完也就看完了，并没有特别重视。这一段时间在团队管理上面，遇到了一些问题，想起这本小册子，温习了一下，顿觉发人深省，不由得感叹，之前毫不在意，如今逐字学习。行有不得，反求诸己，所以打算每一个工作方法都结合自身经历进行分析、总结和反思，希望自己在这方面能有所长进。</p>
<h2 id="一党委书记要善于当班长">一、党委书记要善于当“班长”。</h2>
<blockquote>
<p>党的委员会有一二十个人，像军队的一个班，书记好比是“班长”。要把这个班带好，的确不容易。目前各中央局、分局都领导很大的地区，担负很繁重的任务。领导工作不仅要决定方针政策，还要制定正确的工作方法。有了正确的方针政策，如果在工作方法上疏忽了，还是要发生问题。党委要完成自己的领导任务，就必须依靠党委这“一班人”，充分发挥他们的作用。书记要当好“班长”，就应该很好地学习和研究</p></blockquote>
<blockquote>
<p>如果这“一班人”动作不整齐，就休想带领千百万人去作战，去建设。</p></blockquote>
<p>一个人的能力不管有多厉害，他的时间和精力终究是有限的，单打独斗可以做成一些事情，但做不成大事，要做大事，就需要借助众人的力量，所以他需要一个团队，这是前提，而这之后，他想要把事情做好，这是结果，为了这个结果，他需要把团队带好，这是过程。我们常说，兵熊熊一个，将熊熊一窝，决定团队成败的最重要的人永远是团队负责人。文中提到的“正确的方针政策”和“正确的工作方法”，刚好对应上了团队负责人最重要的两个工作——目标和计划，目标是要做什么？计划是怎么做？然后重点来了，你知道做什么，也知道要怎么做，那么，你要怎么样才能让别人按照你的想法去执行呢？就因为你是领导么？就因为你官比较大？不是的，根本不会有人吃你这一套，换位思考，我也会这样想，如果这些事情对我没有好处，甚至还增加我的工作量，我干嘛要认可你说的，别跟我提什么为了团队的发展，为了团队的将来，跟我有什么关系，将来的事情谁说得准，多一事不如少一事，而且一将功成万骨枯，到时候出事情了我背锅，有成果了你摘桃子，我不见得落得什么好处。</p>
<p>做什么？怎么做？怎么让他做？通过职权施压，短期可能会有效果，但是长期来看，这是不健康的方式，迟早会有问题。要让别人心甘情愿去做某件事情，我觉得可以从两方面入手，一是领导力，领导力并不等于职权，它是被他人信任的体现，是需要日常去积累的；二是从人性是自私的这一点入手，只有摸清对方工作的诉求，才能对症下药，灵活调整应对方案。</p>
<h2 id="二要把问题摆到桌面上来">二、要把问题摆到桌面上来。</h2>
<blockquote>
<p>不仅“班长”要这样做，委员也要这样做。不要在背后议论。有了问题就开会，摆到桌面上来讨论，规定它几条，问题就解决了。有问题而不摆到桌面上来，就会长期不得解决，甚至一拖几年。“班长”和委员还要能互相谅解。书记和委员，中央和各中央局，各中央局和区党委之间的谅解、支援和友谊，比什么都重要。</p></blockquote>
<p>这就是项目管理制度执行过程中，之所以会出问题的原因，很多事情没说明白，似是而非，让同事有太多的选择余地，那大家肯定选择对自己有利的东西了，不会照你期望的流程执行。因此，必须假设人性本恶，先考虑最坏的情况，然后再采取行动，否则，永远无法解决问题。仅仅在群里发布是不够的，很多人不会重视，必须要在会议上，对所有规定的事情进行详细说明和解释，定好奖罚机制，达成共识。</p>
<h2 id="三互通情报">三、“互通情报”。</h2>
<blockquote>
<p>就是说，党委各委员之间要把彼此知道的情况互相通知、互相交流。</p></blockquote>
<p>信息的同步很重要，作为管理人员，也不要仗着掌握一些重要信息，然后拿捏其他同事。消除信息差很重要，传达是否及时，传达是否到位也很重要。</p>
<h2 id="四不懂得和不了解的东西要问下级不要轻易表示赞成或反对">四、不懂得和不了解的东西要问下级，不要轻易表示赞成或反对。</h2>
<blockquote>
<p>有些文件起草出来压下暂时不发，就是因为其中还有些问题没有弄清楚，需要先征求下级的意见。我们切不可强不知以为知，要“不耻下问”，要善于倾听下面干部的意见。先做学生，然后再做先生；先向下面干部请教，然后再下命令。</p></blockquote>
<blockquote>
<p>我们做出的决定包括了下面干部提出的正确意见，他们当然拥护。下面干部的话，有正确的，也有不正确的，听了以后要加以分析。对正确的意见，必须听，并且照它做。中央领导之所以正确，主要是由于综合了各地供给的材料、报告和正确的意见。如果各地不来材料，不提意见，中央就很难正确地发号施令。对下面来的错误意见也要听，根本不听是不对的；不过听了而不照它做，并且要给以批评。</p></blockquote>
<p>管理带人，以前还觉得不就是带人嘛，有什么难的，经历过一些事情之后，会有敬畏之心，而且要学的东西太多了，没办法面面俱到，很多技术细节没办法像之前那样深入，所以会觉得心里没底。很多时候，你只能听取在这个方向深入的同事提出的意见，这个时候就遇到考验了，你害不害怕手底下的人比你厉害？说实话，我恨不得团队里每个人都比我厉害，这样我工作更好达成，至于担心会被替代，其实也要明白，自己肯定是具备他人没有的优势，才会被安排做这样的工作，哪有那么容易就被替代的，即便如此，那只能说明自己就应该被淘汰，谁让你不持续成长呢，总之，我很乐意接受这种挑战，混吃等死有什么意思。</p>
<h2 id="五学会弹钢琴">五、学会“弹钢琴”。</h2>
<blockquote>
<p>党委要抓紧中心工作，又要围绕中心工作而同时开展其他方面的工作。我们现在管的方面很多，各地、各军、各部门的工作，都要照顾到，不能只注意一部分问题而把别的丢掉。凡是有问题的地方都要点一下，这个方法我们一定要学会。</p></blockquote>
<p>有时候会觉得，如果只是带一个项目的话，不会有什么难度，但是带五个项目的时候，就开始觉得有点力不从心，我一直在想问题出在哪里，为什么总觉得没有做好呢？其实，问题就在于把五个项目作为独立的个体来看了，其实，它们是相互关联的。看似多个项目，其实是一个项目，然后那五个项目只是五个模块罢了，各个模块又有相应的负责人，你只需要管理好五个人即可，而不是全部的十几个人。</p>
<h2 id="六要抓紧">六、要“抓紧”。</h2>
<blockquote>
<p>就是说，党委对主要工作不但一定要“抓”，而且一定要“抓紧”。什么东西只有抓得很紧，毫不放松，才能抓住。抓而不紧，等于不抓。伸着巴掌，当然什么也抓不住。就是把手握起来，但是不握紧，样子像抓，还是抓不住东西。我们有些同志，也抓主要工作，但是抓而不紧，所以工作还是不能做好。不抓不行，抓而不紧也不行。</p></blockquote>
<p>这一点就是我要写这篇文章的原因。</p>
<p>在项目管理初期已经制定了管理制度，但执行过程中没有及时跟进，这就导致一些同事不遵守规定，比如今天不写项目进度会议记录，没有人提醒；明天不及时更新项目计划，也没有人提醒。这样一试探，便越发随意了。</p>
<p>那为什么不及时提醒呢？其实就是自己生气了，觉得说了那么多次，为什么总是这样？就开始不管不问了。这个是不对的，无论发生什么情况，都不应该赌气去做事情。无论问题大小，作为团队负责人，你都是第一责任人，应该对所有问题负起责任。不能被动地观望，任由问题扩大，到那时，已经为时已晚。</p>
<p>任何策略的制定都是为了实现特定目标，而不是为了制定而制定。重要的是做得好不好，而不是做得多不多。如果事情做得不好，再彰显自己怎么用心努力也是无济于事，不要掉进“没有功劳，也有苦劳”的陷阱，结果好就是好，不好就是不好，不要去争取这种施舍。</p>
<p>抓而不紧，等于不抓。如同朝鲜战争一样，打得一拳开，免得百拳来。当时不打这一仗，不是后代也要打的问题，是以后连跟人打仗的资格都未必有，只有挨打的份儿。</p>
<h2 id="七胸中有数">七、胸中有“数”。</h2>
<blockquote>
<p>这是说，对情况和问题一定要注意到它们的数量方面，要有基本的数量的分析。</p></blockquote>
<blockquote>
<p>在任何群众运动中，群众积极拥护的有多少，反对的有多少，处于中间状态的有多少，这些都必须有个基本的调查，基本的分析，不可无根据地、主观地决定问题。</p></blockquote>
<p>有一次在向上反馈的时候，我说有些同事任务交叉得有点多，可能有点问题；还有一次，我说项目管理系统里待验收的任务，验收是否真的落实了？感觉很多人看都没看，就随便点了一下，算是验收通过了。然后上面问，有数据么，任务怎么交叉了？哪些任务是应付验收的？然后，我就懵圈了，因为我答不上来。</p>
<p>这两件事情，我现在想起来还是很生气，我不至于犯这种错的，还是平时太想当然，太掉以轻心了，一些细节不够重视，才在这种事情上栽了跟头。所以我回去写了检讨书，狠狠反思了一下。</p>
<p>没有调研就没有发言权，任何事情下结论之前，需要做下调研，依据事实和数据来判断，不能空口无凭。这部分在《毛选》中就有具体的处理方案，可以细读一下的。不应使用“想当然”、“凭感觉”来解决遇到的问题，没有数据作为佐证，就无法保证做出正确的判断，再者，你有的只是你的感觉，是很难让他人信服的。</p>
<p>在向上管理里面，任何需要反馈的问题，都应该先想清楚，而不是想当然、凭感觉，应实事求是，基于数据说话。</p>
<p>职责越大，就越需要谨言慎行，话不能乱说，事不可乱做，你不严谨的言行，容易留下后患。</p>
<h2 id="八安民告示">八、“安民告示”。</h2>
<blockquote>
<p>开会要事先通知，像出安民告示一样，让大家知道要讨论什么问题，解决什么问题，并且早作准备。有些地方开干部会，事前不准备好报告和决议草案，等开会的人到了才临时凑合，好像“兵马已到，粮草未备”，这是不好的。如果没有准备，就不要急于开会。</p></blockquote>
<p>开会之前，提前在群里发一下通知，这样其他同事可以安排好自己的时间，特别是跨部门协作更应如此，然后要讨论任何问题，不应该自己想都没想，就召集大伙召开会议，要准备几个方案，理清楚各方案利弊，然后自己的倾向方案是哪个？为什么？如果做到这些，可以说已经具备召开会议的条件了。</p>
<h2 id="九精兵简政">九、“精兵简政”。</h2>
<blockquote>
<p>讲话、演说、写文章和写决议案，都应当简明扼要。会议也不要开得太长。</p></blockquote>
<p>会议前准备充分，那么开会时间就不会那么长，要明确重点，最近遇到的问题是，有同事经常开会就是3个小时，虽然适当拓展话题也是蛮好的，不怕你话多，就怕你没得讲。但是每次都这样也有点挺不住，因为还有其他项目要过进度，一天的时间很快就没了的。有些讨论的内容，其实是发散性的，可说可不说，也可以会后在座位上进一步讨论，所以，为了不打击对方的积极性，也就没在会议上去打断对方，只能自己先想办法，怎么解决这个问题，我就把会议安排在上午，然后还剩下一个多小时下班吃饭，就有了会议时长限制，不会总是开太久了。</p>
<h2 id="十注意团结那些和自己意见不同的同志一道工作">十、注意团结那些和自己意见不同的同志一道工作。</h2>
<blockquote>
<p>不论在地方上或部队里，都应该注意这一条。对党外人士也是一样。我们都是从五湖四海汇集拢来的，我们不仅要善于团结和自己意见相同的同志，而且要善于团结和自己意见不同的同志一道工作。我们当中还有犯过很大错误的人，不要嫌这些人，要准备和他们一道工作。</p></blockquote>
<p>“把朋友搞得多多的，把敌人搞得少少。”其实这一句话就说完了，但知行合一一向都很难，在工作中，如果某人给你留下了不好的印象，你心里就会给他贴上标签，这样就很难相对客观地去判断一些事情，到最后工作没做好，吃亏的还是自己。</p>
<p>我一直秉承着只要认真工作，哪怕笨一点也没关系，能帮的一定会帮，大家都是普通人，集思广益，总能找到解决问题的方法，但是你不用心，投机取巧，推诿甩锅，还耍小聪明就忍不了了，不要觉得自己做什么别人都不知道，怎么可能呢，没人是傻子，更不要说领导层的都是人精，谁不知道你心里那点小九九？</p>
<p>所以，我特别生气，无法理解这种人，啥好处都让你拿了，其他人汤都喝不上，还要替你背锅，加上一份工作，想做就把它做好，你觉得不爽不满意了，所以才消极怠工，那走就是了，找到你觉得更好的工作，然后会变得更加积极主动，认真努力不是更好？在这浪费时间有意思么？还是说你本来就是这样的人，这个只是借口而已？</p>
<p>没有人喜欢工作，但至少有点契约精神，加上资本是逐利的，任何人都可以被替代，不说显得自己多职业，至少为了自己，好好打磨自己的技艺，而不是浪费时间。</p>
<p>管理带人就是没办法可以随意爆发自己的情绪，有万分委屈该忍还是要忍，要不然成何体统，内心恨不得把对方头都拧断了，但还是要心平气和地去沟通，因为发脾气不能解决问题，只会让事情变得更糟糕，至于换人，之前我也觉得直接换人不就好了，但是现在又觉得，并不是什么事情换人就可以解决的，一定是自己哪个方面做得不够好，才会变成这样，没有人一开始就是这样的，要不然当初面试就不会招进来，就当是修炼自己的度量了，可以想象自己那些伟大的抱负，上升到更高的维度，就觉得当下这些都是小事情了。谁身上都有缺点，谁身上都有长处，容人之所短，用人之所长。</p>
<h2 id="十一力戒骄傲">十一、力戒骄傲。</h2>
<blockquote>
<p>这对领导者是一个原则问题，也是保持团结的一个重要条件。就是没有犯过大错误，而且工作有了很大成绩的人，也不要骄傲。禁止给党的领导者祝寿，禁止用党的领导者的名字作地名、街名和企业的名字，保持艰苦奋斗作风，制止歌功颂德现象。</p></blockquote>
<p>其实，说到底大家都是打工的，谁比谁高贵呢？出了公司谁认识你，所以根本没什么值得炫耀或者颐指气使的。</p>
<p>之前有一次安排加班，有个同事已经连续加了两天了，事情还没有做完，最好当然是能加班了。但本着人性化的原则，就安排先休息了，然后其他骨干同事就说，以前我们都有过熬夜通宵加班的，这个算什么，继续安排就是了，没必要和他解释那么多。然后我说，该说还是要说，你安排先休息了，对方不一定就真的去休息，你不安排休息，对方不一定就真的继续加班，人在工位，但是心里不情愿啊。我相信只要懂得换位思考，体谅他人的难处，事情一定会往好的方向发展，但是这个方式还是要看人，没有任何一种方法能够适用所有人，管理就是见人说人话，见鬼说鬼话，千变万化，无穷无尽。</p>
<p>后来，我还是和那个同事沟通，说连续加班挺累的吧，还是先休息下，然后再继续加班吧，然后他也没休息，继续先忙完要紧的事情了。</p>
<p>言归正传，其实这个点，也是我想说的，很多领导都会说，我每天那么用心工作，天天熬夜，为什么你们都不能用心一点？其实他不明白，屁股决定脑袋，位置都不一样，职责肯定不一样的，你拿这个来要求下属，下属只会笑话你，换我做领导，我比你还能卷，睡在公司都行。</p>
<p>我觉得以上就是一个骄傲的例子。</p>
<h2 id="结语">结语</h2>
<p>管理之所以被称为一门艺术，是因为人性是自私的，人性是趋利避害的，人性是好逸恶劳的，人性是变化的，我们要知道在变化中求不变，又要在不变中求变化，一切都要见机行事，没办法像套公式一样，简单粗暴地解决遇到的所有问题，而是使用一种妥当的方式，让他人能够接受的方式去安排和落实工作，并拿到成果。管理不是目的，结果也不是目的，好的结果才是。</p>
<p>没办法生搬硬套书籍里的理论知识，只有不断地总结犯过的错误，才能从中吸取教训，并用于指导我们接下来的管理工作。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-04-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 29 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;早餐：鸡蛋、炒河粉、豆浆
午餐：猪肉浇头、血鸭、黄面
晚餐：猪脚饭、冰西瓜&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404301628481.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;这几天都在下雨，然后回来就没怎么去健身房，还是吃得太多了。然后又熬夜，总是说很多事情要做，但是，自己又不够专注。&lt;/p&gt;
&lt;p&gt;健身，睡觉是第一位。然后才是饮食和运动。还是吃得太好了。&lt;/p&gt;
&lt;p&gt;要么不做，要做就做到最好。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>早餐：鸡蛋、炒河粉、豆浆
午餐：猪肉浇头、血鸭、黄面
晚餐：猪脚饭、冰西瓜</p>
<h2 id="无氧">无氧</h2>
<p>无</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404301628481.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>这几天都在下雨，然后回来就没怎么去健身房，还是吃得太多了。然后又熬夜，总是说很多事情要做，但是，自己又不够专注。</p>
<p>健身，睡觉是第一位。然后才是饮食和运动。还是吃得太好了。</p>
<p>要么不做，要做就做到最好。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 25</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-25/</link>
      <pubDate>Sun, 28 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-25/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/&#34;&gt;28. 找出字符串中第一个匹配项的下标&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你两个字符串 &lt;code&gt;haystack&lt;/code&gt; 和 &lt;code&gt;needle&lt;/code&gt; ，请你在 &lt;code&gt;haystack&lt;/code&gt; 字符串中找出 &lt;code&gt;needle&lt;/code&gt; 字符串的第一个匹配项的下标（下标从 0 开始）。如果 &lt;code&gt;needle&lt;/code&gt; 不是 &lt;code&gt;haystack&lt;/code&gt; 的一部分，则返回 &lt;code&gt;-1&lt;/code&gt; 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;haystack&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sadbutsad&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;needle&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sad&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sad&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;在下标&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;和&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;处匹配&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;第一个匹配项的下标是&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以返回&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;haystack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;needle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;haystack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;needle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;indexOf()&lt;/code&gt;&lt;/strong&gt; 方法返回数组中第一次出现给定元素的下标，如果不存在则返回-1。这道题目只是这个方法的应用而已，没有太多可以说的。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2403/240325-electronic-waste-catastrophe.html&#34;&gt;Climate change increases price of Easter eggs - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今年的复活节彩蛋价格将比去年高得多。原因是气候变化。极端的天气模式使种植可可变得更具挑战性。可可豆用于制作巧克力。全球约70％的可可豆在西非种植。加纳和科特迪瓦最近的高温、干旱和大雨大大减少了可可豆的种植量。温度比正常高四度。路透社称，与去年同期相比，可可价格已翻了一番。能源和气候分析师Amber Sawyer表示，西非农民在面对极端高温和降雨时“感到困难”。&lt;/p&gt;
&lt;p&gt;巧克力彩蛋是基督教复活节的礼物，庆祝耶稣的复活。传统上，人们染色和绘制鸡蛋。维基百科称，巧克力彩蛋最早出现在法国路易十四的宫廷，约在1725年。1873年，英国巧克力公司J.S. Fry生产了第一个空心巧克力蛋，类似于今天人们赠送的巧克力蛋。维基百科称：“在西方文化中，赠送巧克力彩蛋现在已经司空见惯，仅在英国就售出了8000万个复活节彩蛋。”然而，气候变化正在使种植可可豆变得更加困难。气候分析师表示，如果我们希望稳定供应可可和巧克力，就需要采取更多措施减少化石燃料排放。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;return&lt;/code&gt;语句终止函数的执行，并返回一个指定的值给函数调用者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;break&lt;/code&gt;语句中止当前循环，&lt;code&gt;switch&lt;/code&gt;语句或&lt;code&gt;label&lt;/code&gt;语句，并把程序控制流转到紧接着被中止语句后面的语句。中止外层循环，需使用&lt;code&gt;label&lt;/code&gt;语句，在外层&lt;code&gt;for&lt;/code&gt;循环前加上&lt;code&gt;outer&lt;/code&gt;，然后使用&lt;code&gt;break outer&lt;/code&gt;实现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;continue&lt;/code&gt;声明终止当前循环或标记循环的当前迭代中的语句执行，并在下一次迭代时继续执行循环。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;p&gt;有些习惯一旦断掉，就很难再捡起来了，所以这个ARTS要补很多篇文章，只能先找下当前应对策略，一方面可以有效完成任务，另一方面先易后难，执行起来会顺利一点。事情太多太多了，雨露均沾很难，要有取舍，别到时候啥都没得到。&lt;/p&gt;
&lt;p&gt;睡觉，运动，饮食，学习，工作。身体是革命的本钱，任务美好的遐想都基于自身的健康，没有健康，这一切只不过是空中阁楼，不要做陀螺，要做不倒翁。&lt;/p&gt;
&lt;p&gt;不要被忙碌的表象迷惑，你所谓的熬夜只是在隔靴挠痒，根本没有，也不想命中要害，要对自己诚实，不要自欺欺人。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/">28. 找出字符串中第一个匹配项的下标</a></p>
<p>给你两个字符串 <code>haystack</code> 和 <code>needle</code> ，请你在 <code>haystack</code> 字符串中找出 <code>needle</code> 字符串的第一个匹配项的下标（下标从 0 开始）。如果 <code>needle</code> 不是 <code>haystack</code> 的一部分，则返回 <code>-1</code> 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">haystack</span> <span class="o">=</span> <span class="s2">&#34;sadbutsad&#34;</span><span class="p">,</span> <span class="nx">needle</span> <span class="o">=</span> <span class="s2">&#34;sad&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="s2">&#34;sad&#34;</span> <span class="nx">在下标</span> <span class="mi">0</span> <span class="nx">和</span> <span class="mi">6</span> <span class="nx">处匹配</span><span class="err">。</span>
</span></span><span class="line"><span class="cl"><span class="nx">第一个匹配项的下标是</span> <span class="mi">0</span> <span class="err">，</span><span class="nx">所以返回</span> <span class="mi">0</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">strStr</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">haystack</span><span class="p">,</span> <span class="nx">needle</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">haystack</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">needle</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p><strong><code>indexOf()</code></strong> 方法返回数组中第一次出现给定元素的下标，如果不存在则返回-1。这道题目只是这个方法的应用而已，没有太多可以说的。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240325-electronic-waste-catastrophe.html">Climate change increases price of Easter eggs - Breaking News English Lesson</a></p>
<p>今年的复活节彩蛋价格将比去年高得多。原因是气候变化。极端的天气模式使种植可可变得更具挑战性。可可豆用于制作巧克力。全球约70％的可可豆在西非种植。加纳和科特迪瓦最近的高温、干旱和大雨大大减少了可可豆的种植量。温度比正常高四度。路透社称，与去年同期相比，可可价格已翻了一番。能源和气候分析师Amber Sawyer表示，西非农民在面对极端高温和降雨时“感到困难”。</p>
<p>巧克力彩蛋是基督教复活节的礼物，庆祝耶稣的复活。传统上，人们染色和绘制鸡蛋。维基百科称，巧克力彩蛋最早出现在法国路易十四的宫廷，约在1725年。1873年，英国巧克力公司J.S. Fry生产了第一个空心巧克力蛋，类似于今天人们赠送的巧克力蛋。维基百科称：“在西方文化中，赠送巧克力彩蛋现在已经司空见惯，仅在英国就售出了8000万个复活节彩蛋。”然而，气候变化正在使种植可可豆变得更加困难。气候分析师表示，如果我们希望稳定供应可可和巧克力，就需要采取更多措施减少化石燃料排放。</p>
<h2 id="tip">Tip</h2>
<ul>
<li>
<p><code>return</code>语句终止函数的执行，并返回一个指定的值给函数调用者。</p>
</li>
<li>
<p><code>break</code>语句中止当前循环，<code>switch</code>语句或<code>label</code>语句，并把程序控制流转到紧接着被中止语句后面的语句。中止外层循环，需使用<code>label</code>语句，在外层<code>for</code>循环前加上<code>outer</code>，然后使用<code>break outer</code>实现。</p>
</li>
<li>
<p><code>continue</code>声明终止当前循环或标记循环的当前迭代中的语句执行，并在下一次迭代时继续执行循环。</p>
</li>
</ul>
<h2 id="share">Share</h2>
<p>有些习惯一旦断掉，就很难再捡起来了，所以这个ARTS要补很多篇文章，只能先找下当前应对策略，一方面可以有效完成任务，另一方面先易后难，执行起来会顺利一点。事情太多太多了，雨露均沾很难，要有取舍，别到时候啥都没得到。</p>
<p>睡觉，运动，饮食，学习，工作。身体是革命的本钱，任务美好的遐想都基于自身的健康，没有健康，这一切只不过是空中阁楼，不要做陀螺，要做不倒翁。</p>
<p>不要被忙碌的表象迷惑，你所谓的熬夜只是在隔靴挠痒，根本没有，也不想命中要害，要对自己诚实，不要自欺欺人。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 24</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-24/</link>
      <pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-24/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/merge-two-sorted-lists/&#34;&gt;21. 合并两个有序链表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;将两个升序链表合并为一个新的 &lt;strong&gt;升序&lt;/strong&gt; 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例 1：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * Definition for singly-linked list.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * function ListNode(val, next) {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; *     this.val = (val===undefined ? 0 : val)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; *     this.next = (next===undefined ? null : next)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * @param {ListNode} list1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * @param {ListNode} list2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; * @return {ListNode}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mergeTwoLists&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;val&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;val&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mergeTwoLists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mergeTwoLists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/merge-two-sorted-lists/">21. 合并两个有序链表</a></p>
<p>将两个升序链表合并为一个新的 <strong>升序</strong> 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。</p>
<p><strong>示例 1：</strong></p>
<p><img alt="img" loading="lazy" src="https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">list1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">],</span> <span class="nx">list2</span><span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="cm">/**
</span></span></span><span class="line"><span class="cl"><span class="cm"> * Definition for singly-linked list.
</span></span></span><span class="line"><span class="cl"><span class="cm"> * function ListNode(val, next) {
</span></span></span><span class="line"><span class="cl"><span class="cm"> *     this.val = (val===undefined ? 0 : val)
</span></span></span><span class="line"><span class="cl"><span class="cm"> *     this.next = (next===undefined ? null : next)
</span></span></span><span class="line"><span class="cl"><span class="cm"> * }
</span></span></span><span class="line"><span class="cl"><span class="cm"> */</span>
</span></span><span class="line"><span class="cl"><span class="cm">/**
</span></span></span><span class="line"><span class="cl"><span class="cm"> * @param {ListNode} list1
</span></span></span><span class="line"><span class="cl"><span class="cm"> * @param {ListNode} list2
</span></span></span><span class="line"><span class="cl"><span class="cm"> * @return {ListNode}
</span></span></span><span class="line"><span class="cl"><span class="cm"> */</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">mergeTwoLists</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">list1</span><span class="p">,</span> <span class="nx">list2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">list1</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">list2</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">list2</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">list1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">list1</span><span class="p">.</span><span class="nx">val</span> <span class="o">&lt;</span> <span class="nx">list2</span><span class="p">.</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">list1</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="nx">mergeTwoLists</span><span class="p">(</span><span class="nx">list1</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="nx">list2</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">list1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">list2</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="nx">mergeTwoLists</span><span class="p">(</span><span class="nx">list1</span><span class="p">,</span> <span class="nx">list2</span><span class="p">.</span><span class="nx">next</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">list2</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>比较两个链表的头节点，将较小的头节点作为合并后的链表的头节点，然后递归地将剩余的部分合并。</p>
<ol>
<li>首先，判断两个链表是否有空的情况，如果其中一个链表为空，说明另一个链表就是合并后的链表，直接返回。</li>
<li>接着，比较两个链表的头节点，将较小的头节点作为合并后的链表的头节点。</li>
<li>对于较小头节点所在的链表，将其头节点的下一个节点与另一个链表进行合并，得到的结果作为较小头节点的下一个节点。</li>
<li>返回较小头节点作为合并后的链表的头节点。</li>
<li>重复以上步骤，直到两个链表的所有节点都被合并。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240325-electronic-waste-catastrophe.html">UN warns of environmental e-waste catastrophe - Breaking News English Lesson</a></p>
<p>联合国向全球消费者发出了严厉警告。我们丢弃的电子产品数量已经造成了“环境灾难”。我们正在处理创纪录数量的“电子垃圾”。联合国将电子产品定义为任何带插头或电池的物品，并且通常含有有毒化学物质和物质，如铅和汞。电子垃圾包括被丢弃的手机、冰箱和电子烟。联合国全球电子垃圾监测器报告称，在2022年，全球产生了令人震惊的6200万吨电子垃圾。CNN表示，这些垃圾“可以填满超过150万辆40吨重的卡车，如果把它们挨个贴在一起，可以&hellip;绕过赤道”。</p>
<p>大多数电子垃圾来自发达国家。其中很多被发送到较贫穷的国家进行回收。然而，这些国家缺乏技术和资源以最大程度地减少环境破坏地处理电子垃圾。庞大的垃圾量造成了大量的健康问题。被倾倒的电子产品正在污染河流和海洋。去年有令人不安的58吨汞进入了环境。其中一部分进入了食物链。联合国指责制造商“缺乏责任心”，因为他们未能对其产品的命运负责。它还指责消费者，称“购买电子产品只需点击几下”，但“处理它们却更加困难”。</p>
<h2 id="tip">Tip</h2>
<p>链表（LinkedList）是一种常见的数据结构，它由一系列节点组成，每个节点包含两部分：数据和指向下一个节点的引用。</p>
<p>常见的有单向链表和双向链表，单向链表中的每个节点只有一个指向下一个节点的引用，双向链表中每个节点都有两个引用，分别指向前一个节点和后一个节点。</p>
<p>链表的实现原理，主要依靠节点之间的引用关系。链表的头部指向第一个节点，而最后一个节点的指针指向 null。这样，当需要遍历链表时，只需从头部开始，依次沿着指针向下移动即可。</p>
<p>举个例子，假设我们有一个单向链表，其中包含节点 A、B、C 和 D，它们依次相连：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">A</span> <span class="o">-&gt;</span> <span class="nx">B</span> <span class="o">-&gt;</span> <span class="nx">C</span> <span class="o">-&gt;</span> <span class="nx">D</span> <span class="o">-&gt;</span> <span class="kc">null</span>
</span></span></code></pre></div><p>如果要查询链表中的某个节点，需要从头节点开始，沿着指针依次移动，直到找到目标节点或者到达链表末尾。</p>
<p>如果要删除或者插入节点，则需要调整相邻节点之间的引用关系，以保持链表的连续性。</p>
<p>与 ArrayList 相比，LinkedList 在查找和修改操作方面效率较低，因为需要遍历整个链表才能找到目标元素，但在增加和删除操作方面效率更高，因为不需要移动元素。</p>
<h2 id="share">Share</h2>
<p>循环论证是一种逻辑错误，具体表现为用来证明论题的论据本身的真实性要依靠论题来证明。换句话说，就是用论点去证明论据，再用论据来证明论点，这构成了一个无法打破的循环。比如，“真是奇怪，都说票好难抢，但是为什么动车上的人全都买到票了。”</p>
]]></content:encoded>
    </item>
    <item>
      <title>运动记录240421</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 21 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：孜然鸭肉汉堡、藤椒半鸡、珍珠奶茶&lt;/li&gt;
&lt;li&gt;晚餐：大鸡腿、无糖可乐、菠萝啤&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿内外侧肌训练器，外侧，5挡，68kg，一组，一组20次。&lt;/li&gt;
&lt;li&gt;坐姿腿屈伸训练器，75kg，10次。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404220937381.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;应该是很久没有去健身房了，总是觉得有很多事情要忙，有很多课程要学习，现在回归本质，就是运动是一切精力的来源。必不可少的部分，就一定要坚持做好，身体是革命的本钱。坚持应该坚持的部分，不要找任何借口。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、鸡蛋</li>
<li>午餐：孜然鸭肉汉堡、藤椒半鸡、珍珠奶茶</li>
<li>晚餐：大鸡腿、无糖可乐、菠萝啤</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿内外侧肌训练器，外侧，5挡，68kg，一组，一组20次。</li>
<li>坐姿腿屈伸训练器，75kg，10次。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404220937381.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>应该是很久没有去健身房了，总是觉得有很多事情要忙，有很多课程要学习，现在回归本质，就是运动是一切精力的来源。必不可少的部分，就一定要坚持做好，身体是革命的本钱。坚持应该坚持的部分，不要找任何借口。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-04-13 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-13-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 13 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-04-13-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404220931355.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;无。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>无。</p>
<h2 id="无氧">无氧</h2>
<p>无。</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404220931355.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>无。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《你想活出怎样的人生》观后感.md</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E4%BD%A0%E6%83%B3%E6%B4%BB%E5%87%BA%E6%80%8E%E6%A0%B7%E7%9A%84%E4%BA%BA%E7%94%9F%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E4%BD%A0%E6%83%B3%E6%B4%BB%E5%87%BA%E6%80%8E%E6%A0%B7%E7%9A%84%E4%BA%BA%E7%94%9F%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092310995.webp&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;1&#34;&gt;1&lt;/h2&gt;
&lt;p&gt;回想宫崎骏上一部上映的电影，已经是2013年，距今已有十一年之久，那时在唐山的网吧里，在微博偶然刷到了《起风了》的预告片，一开始就被主题曲《ひこうき雲》轻快动听的旋律吸引住了，加上当时的说法是，这部《起风了》应该是收官之作了，所以当时情绪很复杂，既有期待又有不舍，不像《你想活出怎样的人生》，只是隐约看到一两则新闻，其他没有过多关注，虽然也有说是告别之作，但是竟没觉得有何特别之处，心态还是很坦然的，不过想到宫崎骏老爷子都八十四高龄了，这次应该真的是最后一部了。&lt;/p&gt;
&lt;h2 id=&#34;2&#34;&gt;2&lt;/h2&gt;
&lt;p&gt;你想活出怎样的人生？&lt;/p&gt;
&lt;p&gt;通过电影名字，就可以知道这部电影的主旨，剩下的就是我们怎么能在这场奇幻旅途之中，寻找到想要的答案。&lt;/p&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;p&gt;整部影片的剧情用一句话概括就是，二战之后，一个丧母的少年和一只会说话的苍鹭去寻找继母的奇幻旅程。&lt;/p&gt;
&lt;p&gt;我本来想着，要把电影剧情一五一十地表述完整，但是，我感觉这个东西很容易变成流水账，完全是为了充字数，并不会有什么价值可言，是个人只要想写，都可以写出来，所以就此作罢。&lt;/p&gt;
&lt;p&gt;我觉得观后感，是很自我的东西，不用非常刻意去挖掘多高深的内容，也不需要每看一部电影，好像带着写观后感的任务一样，那就违背了初衷，我不是为了写观后感才去看电影的，我是喜欢电影，喜欢这部电影才有感而发，是很纯粹的一些感受。&lt;/p&gt;
&lt;h2 id=&#34;4&#34;&gt;4&lt;/h2&gt;
&lt;p&gt;在电影院观看时，我一开始并不觉得音乐有多出色，至少相比之前那些作品而言，没有觉得很惊艳。但是现在在敲这些文字时，QQ音乐正好放着配乐《Ask me why》，居然觉得很好听，仿佛有一股暖流，慢慢流淌遍及我的全身，而《青サギ》则是清冽的感觉，像在深山的竹林，偶然听见风铃一样冰凉的声音。&lt;/p&gt;
&lt;h2 id=&#34;5&#34;&gt;5&lt;/h2&gt;
&lt;p&gt;宫崎骏的电影，没有绝对的善与恶，不同的立场，不同的选择，大家都只不过是为了自己坚持的正义而战罢了。&lt;/p&gt;
&lt;p&gt;我很感恩，在我很小的时候，遇到了《千与千寻》和《哈尔的移动城堡》这两部电影，不管岁月如何变迁，不管社会如何险恶，不管人心如何复杂多变，我始终相信，会有那么一样东西，是如此纯粹，如此干净而美好的。&lt;/p&gt;
&lt;p&gt;哪怕做不到具体的某个事物，只是某个瞬间，让我们回归到最初的自己，就好像从未改变过一样。&lt;/p&gt;
&lt;p&gt;想到《火影忍者》里大蛇丸，找到君麻吕的时候，说的那一段话，抛开PUA洗脑这些因素不谈，整段话还是很有哲理的，带着对美好事物的向往。&lt;/p&gt;
&lt;p&gt;“并没有所谓的活着一定就有意义这种事情，但是活下去，说不定能找到有趣的事情，就像你找到了那朵花一样，就像我找到了你一样。”&lt;/p&gt;
&lt;p&gt;我又想起来2015年加入的QQ群，叫作06年神雕侠侣，里面就有位大兄弟说的一段话，我很喜欢，所以截图一直保存至今，我想这就是宫崎骏的电影，之所以如此迷人的原因。&lt;/p&gt;
&lt;p&gt;“无论这个人走过怎么样的一条路，经历过什么样的沧桑浮华，对美好事物的爱永远都不会消失。”&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092104813.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;6&#34;&gt;6&lt;/h2&gt;
&lt;p&gt;这部电影中，让我印象比较深刻的是苍鹭，太好玩了，他的造型让我眼前一亮，本体是一个留着大鼻子的老头，披着苍鹭的外形，出场的画面都很滑稽，补鸟喙窟窿那段笑死我了哈哈哈，还有就是戴眼罩的样子，太可爱了。然后苍鹭露出原型振翅滑稽的飞行样子，让我想到了《千与千寻》里的苍蝇带着坊宝宝变的小白鼠起飞的样子。除此之外，从影片中还是能看出，有之前很多作品的影子，比如任意门就是对应的《哈尔的移动城堡》，进入异世界的入口就对应了《千与千寻》等等，想必宫崎骏老爷子也是想在告别之作，缅怀自己已逝去的岁月吧。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092312633.webp&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;7&#34;&gt;7&lt;/h2&gt;
&lt;p&gt;“我不怕火，能生下你，是我的荣幸。”&lt;/p&gt;
&lt;p&gt;当时看到这一幕的时候，想到了丹尼斯·维伦纽瓦的电影《降临》里的剧情，对，就是《沙丘》的导演，女主因为接触到外星人，所以有了预知未来的能力，当她知道和男主在一起，会面临未来女儿死亡的结果时，当她只能眼睁睁看着结果发生时，拥有的同时就正在失去。&lt;/p&gt;
&lt;p&gt;“如果你已经能一览自己的人生，从始到终，你会想做改变吗？”&lt;/p&gt;
&lt;p&gt;“就算知晓整段旅程，知晓它如何终结，我也选择接受。选择去拥抱其中每个瞬间。”&lt;/p&gt;
&lt;p&gt;有异曲同工之处，这一切都源自于爱。我还想到韩寒《乘风波浪》里最后那一声“妈咪”，也是很感人的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092323099.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;8&#34;&gt;8&lt;/h2&gt;
&lt;p&gt;要说影片觉得不好之处，应该是结局突然就结束了，感觉太匆忙了些，然后就是火美在看到真人老爸，也就是自己未来老公的时候，稍微多一些表情变化就好了，表现出一丝细腻的联系，电影中整得好像陌生人一样，缺少了一点温情。其他的都还好。&lt;/p&gt;
&lt;h2 id=&#34;9&#34;&gt;9&lt;/h2&gt;
&lt;p&gt;最后那段塔主人对真人说的那些话，其实也是本片的高潮之处。&lt;/p&gt;
&lt;p&gt;“我穿越时间和空间，旅行了很远，才找到它们，你可以建造自己的塔，创造一个没有邪恶的国度，一个富裕和平而美好的世界。”&lt;/p&gt;
&lt;p&gt;“你想回到那个充满了凶杀和盗窃的疯狂世界吗？它很快就会变成一片火海。”&lt;/p&gt;
&lt;p&gt;“随你交朋友，回你的世界去，但你必须堆积这些石头。”&lt;/p&gt;
&lt;p&gt;“我的塔撑不了多久时间了。”&lt;/p&gt;
&lt;p&gt;有人说，真人其实是宫崎骏自己，但我觉得塔主人才是宫崎骏自己，在自己即将告别之际，让屏幕前的你我，勇敢地做出一个选择，你能活出怎样的人生？你敢活出怎样的人生？你想活出怎样的人生？&lt;/p&gt;
&lt;p&gt;想到的是东野圭吾的《解忧杂货店》里的结尾，那个一张白纸的回信，十年前就很受感动，所以一直保留这个照片，而以这个作为结尾，同样很适用于《你想活出怎样的人生》这部电影想要传达的美好祝愿。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404082315094.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092310995.webp"></p>
<h2 id="1">1</h2>
<p>回想宫崎骏上一部上映的电影，已经是2013年，距今已有十一年之久，那时在唐山的网吧里，在微博偶然刷到了《起风了》的预告片，一开始就被主题曲《ひこうき雲》轻快动听的旋律吸引住了，加上当时的说法是，这部《起风了》应该是收官之作了，所以当时情绪很复杂，既有期待又有不舍，不像《你想活出怎样的人生》，只是隐约看到一两则新闻，其他没有过多关注，虽然也有说是告别之作，但是竟没觉得有何特别之处，心态还是很坦然的，不过想到宫崎骏老爷子都八十四高龄了，这次应该真的是最后一部了。</p>
<h2 id="2">2</h2>
<p>你想活出怎样的人生？</p>
<p>通过电影名字，就可以知道这部电影的主旨，剩下的就是我们怎么能在这场奇幻旅途之中，寻找到想要的答案。</p>
<h2 id="3">3</h2>
<p>整部影片的剧情用一句话概括就是，二战之后，一个丧母的少年和一只会说话的苍鹭去寻找继母的奇幻旅程。</p>
<p>我本来想着，要把电影剧情一五一十地表述完整，但是，我感觉这个东西很容易变成流水账，完全是为了充字数，并不会有什么价值可言，是个人只要想写，都可以写出来，所以就此作罢。</p>
<p>我觉得观后感，是很自我的东西，不用非常刻意去挖掘多高深的内容，也不需要每看一部电影，好像带着写观后感的任务一样，那就违背了初衷，我不是为了写观后感才去看电影的，我是喜欢电影，喜欢这部电影才有感而发，是很纯粹的一些感受。</p>
<h2 id="4">4</h2>
<p>在电影院观看时，我一开始并不觉得音乐有多出色，至少相比之前那些作品而言，没有觉得很惊艳。但是现在在敲这些文字时，QQ音乐正好放着配乐《Ask me why》，居然觉得很好听，仿佛有一股暖流，慢慢流淌遍及我的全身，而《青サギ》则是清冽的感觉，像在深山的竹林，偶然听见风铃一样冰凉的声音。</p>
<h2 id="5">5</h2>
<p>宫崎骏的电影，没有绝对的善与恶，不同的立场，不同的选择，大家都只不过是为了自己坚持的正义而战罢了。</p>
<p>我很感恩，在我很小的时候，遇到了《千与千寻》和《哈尔的移动城堡》这两部电影，不管岁月如何变迁，不管社会如何险恶，不管人心如何复杂多变，我始终相信，会有那么一样东西，是如此纯粹，如此干净而美好的。</p>
<p>哪怕做不到具体的某个事物，只是某个瞬间，让我们回归到最初的自己，就好像从未改变过一样。</p>
<p>想到《火影忍者》里大蛇丸，找到君麻吕的时候，说的那一段话，抛开PUA洗脑这些因素不谈，整段话还是很有哲理的，带着对美好事物的向往。</p>
<p>“并没有所谓的活着一定就有意义这种事情，但是活下去，说不定能找到有趣的事情，就像你找到了那朵花一样，就像我找到了你一样。”</p>
<p>我又想起来2015年加入的QQ群，叫作06年神雕侠侣，里面就有位大兄弟说的一段话，我很喜欢，所以截图一直保存至今，我想这就是宫崎骏的电影，之所以如此迷人的原因。</p>
<p>“无论这个人走过怎么样的一条路，经历过什么样的沧桑浮华，对美好事物的爱永远都不会消失。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092104813.png"></p>
<h2 id="6">6</h2>
<p>这部电影中，让我印象比较深刻的是苍鹭，太好玩了，他的造型让我眼前一亮，本体是一个留着大鼻子的老头，披着苍鹭的外形，出场的画面都很滑稽，补鸟喙窟窿那段笑死我了哈哈哈，还有就是戴眼罩的样子，太可爱了。然后苍鹭露出原型振翅滑稽的飞行样子，让我想到了《千与千寻》里的苍蝇带着坊宝宝变的小白鼠起飞的样子。除此之外，从影片中还是能看出，有之前很多作品的影子，比如任意门就是对应的《哈尔的移动城堡》，进入异世界的入口就对应了《千与千寻》等等，想必宫崎骏老爷子也是想在告别之作，缅怀自己已逝去的岁月吧。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092312633.webp"></p>
<h2 id="7">7</h2>
<p>“我不怕火，能生下你，是我的荣幸。”</p>
<p>当时看到这一幕的时候，想到了丹尼斯·维伦纽瓦的电影《降临》里的剧情，对，就是《沙丘》的导演，女主因为接触到外星人，所以有了预知未来的能力，当她知道和男主在一起，会面临未来女儿死亡的结果时，当她只能眼睁睁看着结果发生时，拥有的同时就正在失去。</p>
<p>“如果你已经能一览自己的人生，从始到终，你会想做改变吗？”</p>
<p>“就算知晓整段旅程，知晓它如何终结，我也选择接受。选择去拥抱其中每个瞬间。”</p>
<p>有异曲同工之处，这一切都源自于爱。我还想到韩寒《乘风波浪》里最后那一声“妈咪”，也是很感人的。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404092323099.jpg"></p>
<h2 id="8">8</h2>
<p>要说影片觉得不好之处，应该是结局突然就结束了，感觉太匆忙了些，然后就是火美在看到真人老爸，也就是自己未来老公的时候，稍微多一些表情变化就好了，表现出一丝细腻的联系，电影中整得好像陌生人一样，缺少了一点温情。其他的都还好。</p>
<h2 id="9">9</h2>
<p>最后那段塔主人对真人说的那些话，其实也是本片的高潮之处。</p>
<p>“我穿越时间和空间，旅行了很远，才找到它们，你可以建造自己的塔，创造一个没有邪恶的国度，一个富裕和平而美好的世界。”</p>
<p>“你想回到那个充满了凶杀和盗窃的疯狂世界吗？它很快就会变成一片火海。”</p>
<p>“随你交朋友，回你的世界去，但你必须堆积这些石头。”</p>
<p>“我的塔撑不了多久时间了。”</p>
<p>有人说，真人其实是宫崎骏自己，但我觉得塔主人才是宫崎骏自己，在自己即将告别之际，让屏幕前的你我，勇敢地做出一个选择，你能活出怎样的人生？你敢活出怎样的人生？你想活出怎样的人生？</p>
<p>想到的是东野圭吾的《解忧杂货店》里的结尾，那个一张白纸的回信，十年前就很受感动，所以一直保留这个照片，而以这个作为结尾，同样很适用于《你想活出怎样的人生》这部电影想要传达的美好祝愿。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404082315094.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《奥本海默》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%A5%A5%E6%9C%AC%E6%B5%B7%E9%BB%98%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Mon, 08 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E5%A5%A5%E6%9C%AC%E6%B5%B7%E9%BB%98%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;这个观后感是2023年9月看完电影之后写的，原本是放在RMPW打卡活动中，但后来觉得这个打卡活动不太合理，就没有继续了。所以，还是单拎出来，归入到「电影日志」分类中吧。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504072122349.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;去年五六月份就听说克里斯托弗·诺兰要拍一部关于原子弹的电影，当时并不知道奥本海默这个人，后来才去了解了一下。说到诺兰的实拍，不免会在各平台看到很多梗图，印象最深的是女王和天行者的表情图，真的要实拍吗？真的吗&amp;hellip;&amp;hellip;这时想起来还是让人忍俊不禁。时间过得太快了，本来以为诺兰的新作还要很久才能看到，没想到电影那么快就上映了。我上次看诺兰的电影应该是《信条》，虽然很烧脑，但是看完还是觉得不错，我还是比较喜欢有点新意或真正用心去拍的电影。&lt;/p&gt;
&lt;p&gt;有时候我也在想什么才是一部好电影？是票房好？是口碑好？还是看导演是谁？演员是谁？或者说我喜欢的就是？&lt;/p&gt;
&lt;p&gt;《奥本海默》整部电影时长长达3个小时，在电影院里算是相当长了，剧情主要讲述了奥本海默这个项目经理在二战期间带领团队研制原子弹的过程，也就是“曼哈顿计划”，以及二战结束后所遭遇的不公正待遇。看完这部电影，我不禁想起《模仿游戏》、《萨利机长》，还有《钱学森》、《横空出世》，这些电影都与《奥本海默》有相似之处，可能是因为它们都涉及到有毒的青苹果、拍摄手法、个人遭遇以及有关原子弹的话题。&lt;/p&gt;
&lt;p&gt;诺兰在这部电影中依旧使用了他擅长的时间线穿梭叙事手法，如果观影中稍不注意，就会觉得这电影被剪得稀碎，难以理清整部电影剧情的走向。加上彩色和黑白画面的交叉使用，就好像正派和反派在对立着，从不同视角叙说这一段历史，然后才汇集于故事的结局之中，让这种稀碎感更为严重，总的来说，电影还是很能发人深思的。&lt;/p&gt;
&lt;p&gt;核武器的滥用会给人类的未来带来怎样严重的后果？电影中展现了很多奥本海默对后果的想象，无尽的爆炸，无休止的灭亡，哀乐响彻蓝色星球上空。&lt;/p&gt;
&lt;p&gt;“现在我成了死神，世界的毁灭者。”&lt;/p&gt;
&lt;p&gt;基里安·墨菲曾在蝙蝠侠三部曲中饰演稻草人，但我不记得他也出演过《盗梦空间》，这个演员的长相确实很有特点，尤其是他那如海洋一样深邃的眼睛。我听说他主演的《浴血黑帮》电视剧也很不错，打算找时间看一看。&lt;/p&gt;
&lt;p&gt;电影中也讲了奥本海默的情史，不得不说，奥本海默，你可真的是玩得花。&lt;/p&gt;
&lt;p&gt;在《奥本海默》中，只有在实验引爆时才出现蘑菇云，本来以为会看到小男孩和胖子的实拍，可惜并没有。&lt;/p&gt;
&lt;p&gt;电影的配乐非常出色，特别是有几段旋律，例如&lt;code&gt;American Prometheus&lt;/code&gt;、&lt;code&gt;Can You Hear The Music&lt;/code&gt;和&lt;code&gt;Destroyer Of Worlds&lt;/code&gt;等，我自己也专门找了一下这些曲子。&lt;/p&gt;
&lt;p&gt;另外，爱因斯坦在电影中出现了几次，这些画面我都非常喜欢，特别是最后和奥本海默在湖边的对话，一下子就升华了电影的主题。&lt;/p&gt;
&lt;p&gt;“有一天，当他们对你的惩罚足够多时，他们会给你提供鲑鱼和土豆沙拉，发表演讲，给你一枚奖章。请记住，这不是为了你，而是为了他们”。&lt;/p&gt;
&lt;p&gt;尽管原子弹在二战的胜利中发挥了重要作用，作为有良心的科学家，应该始终为全人类的未来着想。然而，现实往往是残酷的，鸟尽弓藏，到头来只不过是政治斗争中的牺牲品，棋盘上的一枚棋子而已。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>这个观后感是2023年9月看完电影之后写的，原本是放在RMPW打卡活动中，但后来觉得这个打卡活动不太合理，就没有继续了。所以，还是单拎出来，归入到「电影日志」分类中吧。</p></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202504072122349.png"></p>
<p>去年五六月份就听说克里斯托弗·诺兰要拍一部关于原子弹的电影，当时并不知道奥本海默这个人，后来才去了解了一下。说到诺兰的实拍，不免会在各平台看到很多梗图，印象最深的是女王和天行者的表情图，真的要实拍吗？真的吗&hellip;&hellip;这时想起来还是让人忍俊不禁。时间过得太快了，本来以为诺兰的新作还要很久才能看到，没想到电影那么快就上映了。我上次看诺兰的电影应该是《信条》，虽然很烧脑，但是看完还是觉得不错，我还是比较喜欢有点新意或真正用心去拍的电影。</p>
<p>有时候我也在想什么才是一部好电影？是票房好？是口碑好？还是看导演是谁？演员是谁？或者说我喜欢的就是？</p>
<p>《奥本海默》整部电影时长长达3个小时，在电影院里算是相当长了，剧情主要讲述了奥本海默这个项目经理在二战期间带领团队研制原子弹的过程，也就是“曼哈顿计划”，以及二战结束后所遭遇的不公正待遇。看完这部电影，我不禁想起《模仿游戏》、《萨利机长》，还有《钱学森》、《横空出世》，这些电影都与《奥本海默》有相似之处，可能是因为它们都涉及到有毒的青苹果、拍摄手法、个人遭遇以及有关原子弹的话题。</p>
<p>诺兰在这部电影中依旧使用了他擅长的时间线穿梭叙事手法，如果观影中稍不注意，就会觉得这电影被剪得稀碎，难以理清整部电影剧情的走向。加上彩色和黑白画面的交叉使用，就好像正派和反派在对立着，从不同视角叙说这一段历史，然后才汇集于故事的结局之中，让这种稀碎感更为严重，总的来说，电影还是很能发人深思的。</p>
<p>核武器的滥用会给人类的未来带来怎样严重的后果？电影中展现了很多奥本海默对后果的想象，无尽的爆炸，无休止的灭亡，哀乐响彻蓝色星球上空。</p>
<p>“现在我成了死神，世界的毁灭者。”</p>
<p>基里安·墨菲曾在蝙蝠侠三部曲中饰演稻草人，但我不记得他也出演过《盗梦空间》，这个演员的长相确实很有特点，尤其是他那如海洋一样深邃的眼睛。我听说他主演的《浴血黑帮》电视剧也很不错，打算找时间看一看。</p>
<p>电影中也讲了奥本海默的情史，不得不说，奥本海默，你可真的是玩得花。</p>
<p>在《奥本海默》中，只有在实验引爆时才出现蘑菇云，本来以为会看到小男孩和胖子的实拍，可惜并没有。</p>
<p>电影的配乐非常出色，特别是有几段旋律，例如<code>American Prometheus</code>、<code>Can You Hear The Music</code>和<code>Destroyer Of Worlds</code>等，我自己也专门找了一下这些曲子。</p>
<p>另外，爱因斯坦在电影中出现了几次，这些画面我都非常喜欢，特别是最后和奥本海默在湖边的对话，一下子就升华了电影的主题。</p>
<p>“有一天，当他们对你的惩罚足够多时，他们会给你提供鲑鱼和土豆沙拉，发表演讲，给你一枚奖章。请记住，这不是为了你，而是为了他们”。</p>
<p>尽管原子弹在二战的胜利中发挥了重要作用，作为有良心的科学家，应该始终为全人类的未来着想。然而，现实往往是残酷的，鸟尽弓藏，到头来只不过是政治斗争中的牺牲品，棋盘上的一枚棋子而已。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 23</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-23/</link>
      <pubDate>Fri, 29 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-23/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/best-sightseeing-pair/&#34;&gt;1014. 最佳观光组合&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个正整数数组 &lt;code&gt;values&lt;/code&gt;，其中 &lt;code&gt;values[i]&lt;/code&gt; 表示第 &lt;code&gt;i&lt;/code&gt; 个观光景点的评分，并且两个景点 &lt;code&gt;i&lt;/code&gt; 和 &lt;code&gt;j&lt;/code&gt; 之间的 &lt;strong&gt;距离&lt;/strong&gt; 为 &lt;code&gt;j - i&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;一对景点（&lt;code&gt;i &amp;lt; j&lt;/code&gt;）组成的观光组合的得分为 &lt;code&gt;values[i] + values[j] + i - j&lt;/code&gt; ，也就是景点的评分之和 &lt;strong&gt;减去&lt;/strong&gt; 它们两者之间的距离。&lt;/p&gt;
&lt;p&gt;返回一对观光景点能取得的最高分。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxScoreSightseeingPair&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxPrev&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 记录前面位置能够得到的最大得分
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxPrev&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 计算当前位置的得分
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;nx&#34;&gt;maxPrev&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;maxPrev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 更新前面位置能够得到的最大得分
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;一开始我以为使用两个&lt;code&gt;for&lt;/code&gt;循环然后通过&lt;code&gt;Math.max()&lt;/code&gt;比较一下取最大值就解出来，然后提交到力扣后，提示超出时间限制。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，可以使用动态规划来优化算法以避免重复计算，通过调整计算公式为&lt;code&gt;values[i] + i + (values[j] - j)&lt;/code&gt;，可以将当前位置的值加上索引值，再加上下一个位置的值减去索引值，然后取最大值。因此，可以将&lt;code&gt;values[i] + i&lt;/code&gt;和&lt;code&gt;values[j] - j&lt;/code&gt;分别都取最大值，然后再比较两者的和，从而得到观光景点能取得的最高分。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2403/240321-human-speech.html&#34;&gt;Human speech is 8 times older than we thought - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/best-sightseeing-pair/">1014. 最佳观光组合</a></p>
<p>给你一个正整数数组 <code>values</code>，其中 <code>values[i]</code> 表示第 <code>i</code> 个观光景点的评分，并且两个景点 <code>i</code> 和 <code>j</code> 之间的 <strong>距离</strong> 为 <code>j - i</code>。</p>
<p>一对景点（<code>i &lt; j</code>）组成的观光组合的得分为 <code>values[i] + values[j] + i - j</code> ，也就是景点的评分之和 <strong>减去</strong> 它们两者之间的距离。</p>
<p>返回一对观光景点能取得的最高分。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">values</span> <span class="o">=</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">11</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="nx">values</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">+</span> <span class="nx">values</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">+</span> <span class="nx">i</span> <span class="o">-</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">8</span> <span class="o">+</span> <span class="mi">5</span> <span class="o">+</span> <span class="mi">0</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">=</span> <span class="mi">11</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">maxScoreSightseeingPair</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">values</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">maxValue</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">maxPrev</span> <span class="o">=</span> <span class="nx">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1">// 记录前面位置能够得到的最大得分
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">values</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">maxValue</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">maxValue</span><span class="p">,</span> <span class="nx">maxPrev</span> <span class="o">+</span> <span class="nx">values</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">-</span> <span class="nx">i</span><span class="p">)</span> <span class="c1">// 计算当前位置的得分
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="nx">maxPrev</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">maxPrev</span><span class="p">,</span> <span class="nx">values</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">+</span> <span class="nx">i</span><span class="p">)</span> <span class="c1">// 更新前面位置能够得到的最大得分
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">maxValue</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>一开始我以为使用两个<code>for</code>循环然后通过<code>Math.max()</code>比较一下取最大值就解出来，然后提交到力扣后，提示超出时间限制。</p>
<p>为了解决这个问题，可以使用动态规划来优化算法以避免重复计算，通过调整计算公式为<code>values[i] + i + (values[j] - j)</code>，可以将当前位置的值加上索引值，再加上下一个位置的值减去索引值，然后取最大值。因此，可以将<code>values[i] + i</code>和<code>values[j] - j</code>分别都取最大值，然后再比较两者的和，从而得到观光景点能取得的最高分。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240321-human-speech.html">Human speech is 8 times older than we thought - Breaking News English Lesson</a></p>
<p>研究人员表示，他们已经找到了人类开始说话的可能历史时期。考古学家、史前史专家史蒂文·米森博士认为，基础语言形成于大约160万年前。这比许多科学家之前认为的时间早了八倍。进化学专家先前认为，人类口头语言始于大约20万年前。米森表示，他的研究显示，第一种人类语言要么在东非，要么在南非发展起来的。他说，说话的能力促进了进化。他说，语言“无疑是使随后大部分人类身体和文化进化成为可能的关键”。</p>
<p>米森博士在他的新书《语言之谜》（The Language Puzzle）中解释了他认为人类语言是如何在如此久远的过去发展起来的。他说，我们的大脑在大约150万年前迅速增大。这种增长改变了我们大脑的结构。一个称为额叶的区域发展了起来，这是大脑产生语言的部分。另一个重要的变化是我们声道的发育，这是我们产生声音，因此得以说话的地方。米森说，语言让人类得以传播到世界各地。这意味着人类可以做三件重要的事情。他们可以考虑和计划未来的行动，他们还可以传授知识。米森说，语言“深刻地改变了人类的故事”。</p>
<h2 id="tip">Tip</h2>
<p>打算将自己博客使用的PaperMod主题更新一下，然后放弃本地的修改，因为使用<code>git pull</code>时提示了本地有变动的部分，需要先处理才行，我觉得不是很重要，就打算放弃本地修改，强制更新，使用如下命令：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git fetch --all					
</span></span><span class="line"><span class="cl">git reset --hard origin/master
</span></span><span class="line"><span class="cl">git clean -f -d
</span></span></code></pre></div><p>三个命令解释如下：</p>
<ol>
<li><code>git fetch --all</code>：从远程仓库获取最新的内容。</li>
<li><code>git reset --hard origin/master</code>：将本地仓库的内容重置为与远程仓库相同，包括放弃任何本地修改。</li>
<li><code>git clean -f -d</code>：清除工作目录中未跟踪的文件和目录。</li>
</ol>
<h2 id="share">Share</h2>
<p>抓而不紧，等于不抓。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《海王2》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B5%B7%E7%8E%8B2%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 26 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B5%B7%E7%8E%8B2%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;我原本计划电影上映之后，去电影院观看的，但时间过得飞快，一眨眼这都快4月份了，查了一下，电影院早就没有拍片了，所以只能在B站看了，这里不得不吐槽一下，原来花了4块钱购买观看还有48个小时的时效啊。&lt;/p&gt;
&lt;p&gt;如果我没记错的话，貌似好久没有什么3D电影上映了，所以《海王2》没能在电影院看下3D还是有点后悔的，都怪我忙着忙着就忘记这个事情了。&lt;/p&gt;
&lt;p&gt;自从18年看完《海王》之后，就一直很期待《海王2》。当年漫威系列电影如日中天，但DC系列电影《海王》却收获了不俗的票房和评分，这其中必然有其独特之处。对我个人而言，整部电影都非常精彩，肌肉硬汉的风格总是让人着迷，加上男主角一路打怪升级、捡装备，剧情爽快，BGM更是史诗级别，转场时的音乐让人大为震撼。看完后，我甚至整理了一个《海王》的歌单，这也充分说明了我对这部电影的喜爱。&lt;/p&gt;
&lt;p&gt;导演温子仁对亚特兰蒂斯海底世界的呈现十分震撼，既有科技感又十分绚丽，美不胜收。而角色的装备和服装设计也不失真实感，不会让人觉得是塑料玩具。&lt;/p&gt;
&lt;p&gt;下面就以几个点，简单说下我的感受。&lt;/p&gt;
&lt;h2 id=&#34;黄金战衣&#34;&gt;黄金战衣&lt;/h2&gt;
&lt;p&gt;在影片开头，黄金战衣晾在衣架上这一幕确实让人捧腹，十分喜感。我之前一直以为黄金战衣是海王自带的装备，类似钢铁侠的纳米战衣，会自动覆盖全身。但事实上，在第一部电影中海王去捡极品装备——三叉戟时，并没有展示黄金战衣上身的过程，之后一直没特别留意这个黄金战衣是怎么出现在海王身上的，所以才有点意外。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403252235073.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;boss&#34;&gt;BOSS&lt;/h2&gt;
&lt;p&gt;在第一部电影中，我们知道黑蝠鲼并没有死，因此第二部中基本可以确定他会成为反派角色。然而随着剧情的发展，出现了新的邪恶敌对势力，特别是当黑蝠鲼拿着冒绿光的三叉戟出场时，画面一下子让人联想到《指环王》中的索伦，因为他从熊熊大火中走出，展现出预见未来的能力，并具有蛊惑人心的特质，太像是冒绿光的索伦了，外形也有些像《魔兽世界》中的巫妖王，风格不能说很相似吧，只能说是一模一样。&lt;/p&gt;
&lt;p&gt;通常情况下，这种类型的电影，观众都能够猜到电影的结局，因此这些情节并不是那么重要。重要的是电影是否能够带给观众爽点，正反两派的对抗是否让人看得津津有味。电影开头海王就被偷家，之后一直处于下风，这样的设计让观众很期待他会如何找回场子，否则如果每次都能轻易解决反派，电影就缺乏看点了。黑蝠鲼作为反派角色的强势表现，以及海王的打斗效果都展现了合理性，没有让人感到意外。总的来说，电影中的细节处理要合理才能引起观众的共鸣。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403252155584.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;鱼王&#34;&gt;鱼王&lt;/h2&gt;
&lt;p&gt;沉没堡垒的鱼王和《星球大战》中的贾巴的设定很像。两者都是以做中间商赚取差价为生，都拥有臃肿的身材。而在自己地盘都有激情演奏的乐团，自己则横卧在大床上，身边都有美女，不对，是美鱼环绕。另外，如有来访人员，都需要带上手铐才可进入自己地盘。而它们最终被制服的方式也很相似，在《海王2》中，鱼王被海王用氧气面罩罩住脑袋，逼迫其告知黑蝠鲼的下落，而在《星球大战》中，贾巴则被公主用铁链从身后勒死。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403260706015.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;和解&#34;&gt;和解&lt;/h2&gt;
&lt;p&gt;魔鬼深渊确实给人一种类似于骷髅岛的既视感，让人感觉随时可能有一个手持板斧的五十米身高的靓仔跳出来，仰天捶胸。在魔鬼深渊中，对于海王和奥姆两兄弟之间的误会也得到了澄清。海王之所以挑战奥姆，并不是为了争夺王位，而是为了阻止亚特兰斯特对陆地发起进攻。然而，奥姆从小就接收到父亲的告诫，认为海王迟早会来争夺王位，所以对海王一直充满敌意。有了这样的解释，后续两兄弟的相处方式变得更加合理和可理解。至于洛基和阿兹卡班的梗就有点意思了，当时没有反应过来，现在想起来会心一笑。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403260724966.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;最后决战&#34;&gt;最后决战&lt;/h2&gt;
&lt;p&gt;在冰山的大决战中，本来海王和黑蝠鲼的战斗非常激烈，场面也很精彩。然而，突然间BOSS蛊惑奥姆，出手打了海王一拳，血染祭坛，解封了BOSS。BOSS刚从冰箱里出来，还没解冻就被海王秒了，这种情节实属让人看不懂了，瞬间打脸了我上面的设想，比我设想的还糟糕，反而黑蝠鲼才更像是BOSS。话说回来，如果要钻牛角尖的话，其实黑蝠鲼并不一定非要拐走小亚瑟，可以带医护人员去抽血，避免打草惊蛇，争取更多时间，说不定就能达成灭世的目的。不过这种细节不值得深究，就像武侠小说中侠客每天忙着行侠仗义，不收一分一文，也没见去打工，钱到底怎么来的一样，那就没意思了。&lt;/p&gt;
&lt;p&gt;最后，海王决定搭救黑蝠鲼，与第一部呼应，展现了同样的场景却做出了不同的选择，也展现了海王的成长过程，从一个愣头青变成一个更有胸襟的愣头青。然而，黑蝠鲼却拒绝了海王的帮助，有点像诺兰电影《蝙蝠侠》中的小丑，我怎么可能让你救我，好让你现在这么圣母，有机会对自己当年所作所为进行弥补。这种复杂的心理，让故事更加生动，也让角色更加立体和有深度，虽然第一部海王那样选择并没有什么错。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403262246065.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语&lt;/h2&gt;
&lt;p&gt;第二部的基调基本就是we are 伐木累了，一些对话也蛮有笑点的。比如黑蝠鲼对海王说的那句“海王啊海王，你真是不知廉耻”，就让我笑出声了。虽然没有第一部那么惊艳，没有那么多令人印象深刻的场景，加上这部结尾BOSS大战也有些仓促，原本期待的壮观战斗就这样戛然而止，让人满腔的情绪像皮球一下子泄气了。而且卡拉森也没有出场，稍微有点失望。但是考虑到场外狗血的事情实在太多了，温子仁能够完成这部电影并上映已经是非常不容易了，所以我们没有必要过多呵责了。整体来说，这部电影中规中矩，如有情怀加成，还是值得一看的。&lt;/p&gt;
&lt;p&gt;至于《海王3》，我觉得应该没有太大的希望了。温子仁已经忙于拍摄《克苏鲁呼唤》电影了，而且现在观众对于漫威和DC系列电影已经有些审美疲劳，不再像前几年那样期待。但最重要的是，鹰酱现在优秀的电影实在太少了，很多作品都被政治正确所裹挟，越来越魔幻。&lt;/p&gt;
&lt;p&gt;除此之外，还有一句对话给我留下了深刻的印象，就是海王对奥姆说的，“你对陆地上的人有所偏见，让你缺少了半个世界的乐趣。”&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403262257085.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>我原本计划电影上映之后，去电影院观看的，但时间过得飞快，一眨眼这都快4月份了，查了一下，电影院早就没有拍片了，所以只能在B站看了，这里不得不吐槽一下，原来花了4块钱购买观看还有48个小时的时效啊。</p>
<p>如果我没记错的话，貌似好久没有什么3D电影上映了，所以《海王2》没能在电影院看下3D还是有点后悔的，都怪我忙着忙着就忘记这个事情了。</p>
<p>自从18年看完《海王》之后，就一直很期待《海王2》。当年漫威系列电影如日中天，但DC系列电影《海王》却收获了不俗的票房和评分，这其中必然有其独特之处。对我个人而言，整部电影都非常精彩，肌肉硬汉的风格总是让人着迷，加上男主角一路打怪升级、捡装备，剧情爽快，BGM更是史诗级别，转场时的音乐让人大为震撼。看完后，我甚至整理了一个《海王》的歌单，这也充分说明了我对这部电影的喜爱。</p>
<p>导演温子仁对亚特兰蒂斯海底世界的呈现十分震撼，既有科技感又十分绚丽，美不胜收。而角色的装备和服装设计也不失真实感，不会让人觉得是塑料玩具。</p>
<p>下面就以几个点，简单说下我的感受。</p>
<h2 id="黄金战衣">黄金战衣</h2>
<p>在影片开头，黄金战衣晾在衣架上这一幕确实让人捧腹，十分喜感。我之前一直以为黄金战衣是海王自带的装备，类似钢铁侠的纳米战衣，会自动覆盖全身。但事实上，在第一部电影中海王去捡极品装备——三叉戟时，并没有展示黄金战衣上身的过程，之后一直没特别留意这个黄金战衣是怎么出现在海王身上的，所以才有点意外。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403252235073.png"></p>
<h2 id="boss">BOSS</h2>
<p>在第一部电影中，我们知道黑蝠鲼并没有死，因此第二部中基本可以确定他会成为反派角色。然而随着剧情的发展，出现了新的邪恶敌对势力，特别是当黑蝠鲼拿着冒绿光的三叉戟出场时，画面一下子让人联想到《指环王》中的索伦，因为他从熊熊大火中走出，展现出预见未来的能力，并具有蛊惑人心的特质，太像是冒绿光的索伦了，外形也有些像《魔兽世界》中的巫妖王，风格不能说很相似吧，只能说是一模一样。</p>
<p>通常情况下，这种类型的电影，观众都能够猜到电影的结局，因此这些情节并不是那么重要。重要的是电影是否能够带给观众爽点，正反两派的对抗是否让人看得津津有味。电影开头海王就被偷家，之后一直处于下风，这样的设计让观众很期待他会如何找回场子，否则如果每次都能轻易解决反派，电影就缺乏看点了。黑蝠鲼作为反派角色的强势表现，以及海王的打斗效果都展现了合理性，没有让人感到意外。总的来说，电影中的细节处理要合理才能引起观众的共鸣。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403252155584.png"></p>
<h2 id="鱼王">鱼王</h2>
<p>沉没堡垒的鱼王和《星球大战》中的贾巴的设定很像。两者都是以做中间商赚取差价为生，都拥有臃肿的身材。而在自己地盘都有激情演奏的乐团，自己则横卧在大床上，身边都有美女，不对，是美鱼环绕。另外，如有来访人员，都需要带上手铐才可进入自己地盘。而它们最终被制服的方式也很相似，在《海王2》中，鱼王被海王用氧气面罩罩住脑袋，逼迫其告知黑蝠鲼的下落，而在《星球大战》中，贾巴则被公主用铁链从身后勒死。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403260706015.png"></p>
<h2 id="和解">和解</h2>
<p>魔鬼深渊确实给人一种类似于骷髅岛的既视感，让人感觉随时可能有一个手持板斧的五十米身高的靓仔跳出来，仰天捶胸。在魔鬼深渊中，对于海王和奥姆两兄弟之间的误会也得到了澄清。海王之所以挑战奥姆，并不是为了争夺王位，而是为了阻止亚特兰斯特对陆地发起进攻。然而，奥姆从小就接收到父亲的告诫，认为海王迟早会来争夺王位，所以对海王一直充满敌意。有了这样的解释，后续两兄弟的相处方式变得更加合理和可理解。至于洛基和阿兹卡班的梗就有点意思了，当时没有反应过来，现在想起来会心一笑。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403260724966.png"></p>
<h2 id="最后决战">最后决战</h2>
<p>在冰山的大决战中，本来海王和黑蝠鲼的战斗非常激烈，场面也很精彩。然而，突然间BOSS蛊惑奥姆，出手打了海王一拳，血染祭坛，解封了BOSS。BOSS刚从冰箱里出来，还没解冻就被海王秒了，这种情节实属让人看不懂了，瞬间打脸了我上面的设想，比我设想的还糟糕，反而黑蝠鲼才更像是BOSS。话说回来，如果要钻牛角尖的话，其实黑蝠鲼并不一定非要拐走小亚瑟，可以带医护人员去抽血，避免打草惊蛇，争取更多时间，说不定就能达成灭世的目的。不过这种细节不值得深究，就像武侠小说中侠客每天忙着行侠仗义，不收一分一文，也没见去打工，钱到底怎么来的一样，那就没意思了。</p>
<p>最后，海王决定搭救黑蝠鲼，与第一部呼应，展现了同样的场景却做出了不同的选择，也展现了海王的成长过程，从一个愣头青变成一个更有胸襟的愣头青。然而，黑蝠鲼却拒绝了海王的帮助，有点像诺兰电影《蝙蝠侠》中的小丑，我怎么可能让你救我，好让你现在这么圣母，有机会对自己当年所作所为进行弥补。这种复杂的心理，让故事更加生动，也让角色更加立体和有深度，虽然第一部海王那样选择并没有什么错。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403262246065.png"></p>
<h2 id="结语">结语</h2>
<p>第二部的基调基本就是we are 伐木累了，一些对话也蛮有笑点的。比如黑蝠鲼对海王说的那句“海王啊海王，你真是不知廉耻”，就让我笑出声了。虽然没有第一部那么惊艳，没有那么多令人印象深刻的场景，加上这部结尾BOSS大战也有些仓促，原本期待的壮观战斗就这样戛然而止，让人满腔的情绪像皮球一下子泄气了。而且卡拉森也没有出场，稍微有点失望。但是考虑到场外狗血的事情实在太多了，温子仁能够完成这部电影并上映已经是非常不容易了，所以我们没有必要过多呵责了。整体来说，这部电影中规中矩，如有情怀加成，还是值得一看的。</p>
<p>至于《海王3》，我觉得应该没有太大的希望了。温子仁已经忙于拍摄《克苏鲁呼唤》电影了，而且现在观众对于漫威和DC系列电影已经有些审美疲劳，不再像前几年那样期待。但最重要的是，鹰酱现在优秀的电影实在太少了，很多作品都被政治正确所裹挟，越来越魔幻。</p>
<p>除此之外，还有一句对话给我留下了深刻的印象，就是海王对奥姆说的，“你对陆地上的人有所偏见，让你缺少了半个世界的乐趣。”</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403262257085.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 22</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-22/</link>
      <pubDate>Wed, 20 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-22/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/non-decreasing-array/&#34;&gt;665. 非递减数列&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个长度为 &lt;code&gt;n&lt;/code&gt; 的整数数组 &lt;code&gt;nums&lt;/code&gt; ，请你判断在 &lt;strong&gt;最多&lt;/strong&gt; 改变 &lt;code&gt;1&lt;/code&gt; 个元素的情况下，该数组能否变成一个非递减数列。&lt;/p&gt;
&lt;p&gt;我们是这样定义一个非递减数列的： 对于数组中任意的 &lt;code&gt;i&lt;/code&gt; &lt;code&gt;(0 &amp;lt;= i &amp;lt;= n-2)&lt;/code&gt;，总满足 &lt;code&gt;nums[i] &amp;lt;= nums[i + 1]&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;你可以通过把第一个&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;变成&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;来使得它成为一个非递减数列&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;你不能在只改变一个元素的情况下将其变为非递减数列&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;checkPossibility&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 如果数组只有一个元素，则直接返回true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 只要有一个不满足的元素，就拿到元素的下标，然后跳出循环。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 如果出现元素A的下一个值A+1大于等于上一个值A-1，则将A赋值为A+1。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 否则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 再次遍历,如果修改某个元素后，不满足 nums[i] &amp;lt;= nums[i + 1]，则结果为false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/non-decreasing-array/">665. 非递减数列</a></p>
<p>给你一个长度为 <code>n</code> 的整数数组 <code>nums</code> ，请你判断在 <strong>最多</strong> 改变 <code>1</code> 个元素的情况下，该数组能否变成一个非递减数列。</p>
<p>我们是这样定义一个非递减数列的： 对于数组中任意的 <code>i</code> <code>(0 &lt;= i &lt;= n-2)</code>，总满足 <code>nums[i] &lt;= nums[i + 1]</code>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span> <span class="nx">你可以通过把第一个</span> <span class="mi">4</span> <span class="nx">变成</span> <span class="mi">1</span> <span class="nx">来使得它成为一个非递减数列</span><span class="err">。</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">2</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span> <span class="nx">你不能在只改变一个元素的情况下将其变为非递减数列</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">checkPossibility</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// 如果数组只有一个元素，则直接返回true
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 只要有一个不满足的元素，就拿到元素的下标，然后跳出循环。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">index</span> <span class="o">=</span> <span class="nx">i</span>
</span></span><span class="line"><span class="cl">      <span class="k">break</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 如果出现元素A的下一个值A+1大于等于上一个值A-1，则将A赋值为A+1。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 否则
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// 再次遍历,如果修改某个元素后，不满足 nums[i] &lt;= nums[i + 1]，则结果为false
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，要先遍历数组，因为不管出现几次不满足<code>nums[i] &lt;= nums[i + 1]</code>条件的情况，只需要拿一次来改变元素，然后验证即可，所以当拿到不满足条件的情况时，立马跳出循环，然后通过这个元素的上一个和下一个值进行判断和改变，生成新的数组，再次遍历，如果出现一次不满足<code>nums[i] &lt;= nums[i + 1]</code>条件的情况，则可知结果为<code>false</code>，否则为<code>true</code>。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240318-giant-blueberry.html">Giant blueberry smashes record for heaviest ever - Breaking News English Lesson</a></p>
<p>澳大利亚的一位农民刚刚创下了世界上最大蓝莓的纪录。这颗巨大的蓝莓重达惊人的20.4克，轻松打破了之前的记录，之前的纪录是16.2克。这颗创纪录的蓝莓的直径相当于乒乓球大小，直径为39.31毫米，周长为12.35厘米。这颗创纪录的蓝莓几乎比普通蓝莓重了将近10倍。这颗水果是由澳大利亚新南威尔士州的Costa集团员工种植的。高级园艺师布拉德·霍金表示，他对吉尼斯世界纪录正式认证这一记录感到非常高兴。他说：“这是良好育种和良好种植的结合。”</p>
<p>霍金先生表示，他的蓝莓来自Eterna品种，以其脆爽的口感和长久的保鲜期而闻名。他告诉记者：“Eterna作为一个品种，具有非常出色的口味和一致大的果实。当我们采摘这一颗时，可能还有大约20颗其他大小相似的浆果。”他补充说：“尽管这个果实很大，但在质量或口味上绝对没有妥协，就像开发高端品种时所期望的那样。”起初，他不确定是否打破了记录。他说：“我们必须重新校准天平以确保我们没有搞混。”当被问及他会如何处理他的奖品蓝莓时，他建议用它来制作一杯果汁可能是最合适的结局。</p>
<h2 id="tip">Tip</h2>
<p>Array.prototype.reduce()</p>
<p><strong><code>reduce()</code></strong> 方法对数组中的每个元素按序执行一个提供的 <strong>reducer</strong> 函数，每一次运行 <strong>reducer</strong> 会将先前元素的计算结果作为参数传入，最后将其结果汇总为单个返回值。</p>
<p>比如使用<code>reduce</code>方法找到子数组长度最长的子数组的写法为：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">longestSubArray</span> <span class="o">=</span> <span class="nx">arrs</span><span class="p">.</span><span class="nx">reduce</span><span class="p">((</span><span class="nx">prev</span><span class="p">,</span> <span class="nx">current</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">prev</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">current</span><span class="p">.</span><span class="nx">length</span> <span class="o">?</span> <span class="nx">prev</span> <span class="o">:</span> <span class="nx">current</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div><h2 id="share">Share</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403111047902.jpg" style="zoom: 50%;" />
]]></content:encoded>
    </item>
    <item>
      <title>《沙丘2》观后感</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B2%99%E4%B8%982%E8%A7%82%E5%90%8E%E6%84%9F/</link>
      <pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%B2%99%E4%B8%982%E8%A7%82%E5%90%8E%E6%84%9F/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180111808.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;有剧透。&lt;/p&gt;
&lt;p&gt;第一次看《沙丘》这部电影是在中学的教室里，当时学校安排周六补课，全校就一个班在上晚自习，所以，就比平时随便了一些。&lt;/p&gt;
&lt;p&gt;过了那么多年，我已经记不清电影剧情了，但是蓝眼睛和沙虫的设定给我留下了深刻的印象，当然之后也没专门找时间去重温，只是恰巧有新版上映，所以想起来了这个事情。查了下资料，知道了当时观看的是2003年拍摄的电影，特效各方面当然是不能和现在的相比了，新版2021年10月份上映，当时去看了《沙丘1》，整体感受就是，轰隆隆的音效持续了两个多小时，体验不算很好。虽然音乐确实有宗教的元素，和电影故事还是很契合的，但是还是觉得太嘈杂了。要不是因为有滤镜，还真不好说能不能看完。&lt;/p&gt;
&lt;p&gt;现在等了三年，《沙丘2》终于上映了，然后我就去看了，看完之后，想起来写写观后感，也不知道要写些下，就把自己的一些想法梳理了一下。&lt;/p&gt;
&lt;h2 id=&#34;吐槽一驾驭沙虫没有铺垫&#34;&gt;吐槽一：驾驭沙虫没有铺垫&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180123039.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;保罗在驾驭沙虫用于证明自己，是否可以是一个弗里曼人时，没有任何对驾驭沙虫测试作一些铺垫，只是说保罗召唤出来的沙虫，体型特别大，比任何人召唤出来的沙虫都大，然后保罗费了九牛二虎之力，才完成了驾驭沙虫测试。&lt;/p&gt;
&lt;p&gt;这一部分情节，我还是觉得有点突兀，凭什么保罗可以毫发无伤的情况下就能完成测试了呢？就因为天选之子么，如果每次都用这个来解释，那就太宿命论了，感觉人物不够真实。&lt;/p&gt;
&lt;p&gt;我当时就想起了《阿凡达》第一部里，杰克征服托鲁克成为魅影骑士的剧情，在这之前，电影已经对魅影骑士有介绍了，征服托鲁克在纳美人看来是非常了不起的事情，是部落一直以来的传说，然后杰克一行还被其追杀过，压迫感十足，所以杰克后面要去征服托鲁克的时候，观众立马就知道这意味着什么，不由得捏了一把汗，毕竟托鲁克块头真的太大了，搞不好真的会丢了性命。因此，当杰克成功征服托鲁克，成为魅影骑士之后，王者归来，带给观众的感觉将会很震撼。&lt;/p&gt;
&lt;p&gt;而在《沙丘2》中呢？没有对驾驭沙虫有过什么特别神圣化的渲染，好像只要是个弗里曼人就可以驾驭沙虫，我理解电影里使用“体型特别大”这样的设定是用来强调，保罗是天选之子，连体型那么大的沙虫都可以驾驭，好推进电影剧情，但是这样的处理，我觉得不是很好。&lt;/p&gt;
&lt;p&gt;我能想到的是，如果是我来设计，可能会有一部分内容用于介绍沙虫的强大，类似上面《阿凡达》魅影骑士的渲染，然后呢，召唤沙虫的工具——振荡器可以加上一个这样的设定，振荡器的强度是可以调节的，根据强度对应召唤沙虫的大小，部落明文规定不能超过危险线，几百年来只有部落首领某某试过，但不幸殒命，所以已成禁忌。然后弗里曼人里有人不服保罗，想弄死他又不能太明显，就想借刀杀人，在振荡器上做了手脚，保罗进行驾驭沙虫测试时，居然召唤出了传说中的沙虫，面对生死存亡之际，保罗毅然迎了上去，最后虽然身受重伤，但还是征服了沙虫。这样不是更有说服力么？营造保罗是天选之子，为成为弗里曼人首领铺路的过程中，真的很欠缺说服力，没有感觉保罗面临了多困难的考验，太平淡了。&lt;/p&gt;
&lt;h2 id=&#34;吐糟二对菲德恐怖压迫感渲染立不住&#34;&gt;吐糟二：对菲德恐怖、压迫感渲染立不住&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180105536.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;从《沙丘1》开始，电影了对哈克南男爵的渲染，一直都不错的，不管是造型还是音乐，压迫感都快要溢出来了，但是在《沙丘2》里对菲德这块的处理，真的很一般。&lt;/p&gt;
&lt;p&gt;菲德一出场就舌头舔刀尖，对待下人，一出手就是割喉，残忍至极，我能理解电影营造恐怖氛围的意图，用来说明，菲德我可是很恐怖的哦，压迫感很强的，你们最好不要惹我。但是在菲德生日举行的角斗场上，却出现了一个特别搞笑的情节，角斗场上菲德的对手居然是三个老弱病残的俘虏，而且两个还下药了，剩下一个还是因为哈克南男爵故意设计试探实力，才没有下药，但是，那个没有被下药的俘虏，看起来都快70岁了，没有70岁，60岁总该有了吧，拜托，你行不行啊，至于么，台上小兵还各种欢呼，然后姐妹会的公爵夫人还觉得菲德好厉害，我都觉得尴尬。本来以为三个俘虏周围那些有点像异形的十几个黑衣人也是俘虏，后来才发现是菲德那边的士兵，期间还帮菲德砍了老头一刀，被菲德呵责后退了，然后菲德反杀之前，还一脸挑衅地邪笑，我着实被逗笑了，你碾死一只蚂蚁之前，张牙舞爪地干嘛呢，还差点被蚂蚁咬死了。&lt;/p&gt;
&lt;p&gt;如果这个俘虏是哪位大人物，在前面有过铺垫，以一敌百，所向披靡，是厄崔迪家族有史以来最强大的战士，或者说是邓肯也行了，然后被你菲德轻轻松松虐杀了，那么菲德这个反派人设一下子就立起来了，但是我应该没记错，这个俘虏不是啊，也就菲德关掉并扔了屏蔽场对打造人设起到了一点点作用，其他的全都背道而驰，菲德这个反派完全就是弱鸡啊，没觉得有什么能力，更谈不上压迫感，这样的对手，不觉得很无聊么？&lt;/p&gt;
&lt;h2 id=&#34;吐槽三最后皇帝出兵如同儿戏&#34;&gt;吐槽三：最后皇帝出兵如同儿戏&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403182346154.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;保罗一路开挂，在北方集合了弗里曼人，因为喝了生命之水的缘故，知道了当年的内情，皇帝因为忌惮保罗他爸厄崔迪公爵的威望，暗地里设计和协助哈克南男爵灭了厄崔迪家族，所以保罗对皇帝下战书，然后皇帝集齐全部战力，直接到厄拉科斯星球上了，到了之后，开始问哈克南男爵，为什么一直没有搞定保罗，然后对保罗在北方的情况清楚吗？我当时就震惊了，皇帝被下战书，全部人马立马到了战场，然后到了战场才要问，当前形势如何？哪有被挑衅就倾巢而出的，哪怕全员出动，哪有不掌握当前战场形势的，都没调查清楚，就盲目出兵，都到战场了，还问责哈克南男爵有用么？你人都到这里了，简直是盲盒式开战，就不说其他了，天气总该知道吧，大风暴都要来了，皇帝兵团还傻乎乎在外面，毫无章法，整个战役下来，不管天时地利人和，全在保罗这边，我那么笨的都能想到，如果我是皇帝，保罗下战书了，那么第一时间，肯定是要先弄清现在是什么情况？然后让哈克南男爵继续顶上去，想办法让其他家族也过来围剿保罗，不管怎么设计，肯定要先让其他家族送命啊，怎么自己直接跳到人家水晶里开大，这不是找死么？这个反派塑造得那么愚蠢，有什么意思呢，实际上大战观感很平淡，更不要说最后，不管多高科技，总要沦为村口械斗了，不过老美一贯如此，这一点从《黑豹》可见一斑。还不如把村口互殴设计为，保罗通过音言直接控制菲德，让菲德自己自杀，那更突出保罗的强大。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180109703.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;总的来说，《沙丘2》电影时长两个半小时，不算很长，其实还可以了，可能本身对这种类型的电影有所偏爱，加上中学时代的滤镜，虽然有槽点，但是故事挺吸引我的。&lt;/p&gt;
&lt;p&gt;甜茶演技不错啊，一些微表情还是很好的，里面展示角色霸气的地方有三，还是有爽到的，第一个是在北方会议上那句，“你们谁都不能反对我，这里我说的算。”第二个是大战前，在山上振臂高呼的画面；第三个是让皇帝俯首吻戒指，示意让位。至于女主，还是觉得不是很适合这个角色，而且演技真的不太行，再怎么说也是女强人，坚韧是可以，但是一直板着脸真的顶不住，特别是最后知道保罗要娶皇帝女儿时，那种神态，真的跟小孩子过家家一样。我立马想到的是《英雄》《夜宴》中章子怡那种有点委屈，但是很愤懑的表演，眼睛微红，嘴角抽搐，额头青筋暴起，通过一些微表情的处理，一下子就感觉到是活生生的人才有的情绪。&lt;/p&gt;
&lt;p&gt;杰西卡第二部变成圣母的造型确实蛮惊艳的，至于野兽拉班，想到《银河护卫队》略微有点出戏，还有伊勒琅公主，我说咋那么眼熟，原来是《奥本海默》里的美国女共产党员，全裸出镜，牺牲很大，我不得不被迫留下了深刻的印象。&lt;/p&gt;
&lt;p&gt;2021年10月份看完《沙丘1》后，回来查了下原著有六本书，感觉这个看完有点花时间啊，就在B站看解读电影视频，顺便发现有一个原著剧情解说的系列，UP主是负七七七七七七，按耐不住好奇心，就了解了全部的原著剧情。看完之后，就觉得说《沙丘》媲美《指环王》并不为过，世界观宏大，探讨的也蛮有深度的，至于电影嘛，那就远远不是一个级别的了。&lt;/p&gt;
&lt;p&gt;《沙丘2》电影的配乐毕竟出自汉斯·季默之手，除了太嘈杂这个问题，其他自不必多说，但我隐约觉得配乐有喧宾夺主的感觉，电影里有很多情节没办法够到引爆观众情绪那个点的时候，总是习惯性依靠配乐对其弥补，在带有宗教元素略显诡异的氛围下，观众好像一下子就被唬住了，但是，仔细想想就感觉被忽悠了，毕竟这个情节或者转场真不一定非要有这个配乐才行，在观影过程中，我基本都能猜到，来了来了，应该要来配乐了，然后就真的来了。&lt;/p&gt;
&lt;p&gt;期待《沙丘3》，后面的故事真的很精彩，但是保罗真的老惨了，俄狄浦斯式的悲剧人物。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180111808.png"></p>
<p>有剧透。</p>
<p>第一次看《沙丘》这部电影是在中学的教室里，当时学校安排周六补课，全校就一个班在上晚自习，所以，就比平时随便了一些。</p>
<p>过了那么多年，我已经记不清电影剧情了，但是蓝眼睛和沙虫的设定给我留下了深刻的印象，当然之后也没专门找时间去重温，只是恰巧有新版上映，所以想起来了这个事情。查了下资料，知道了当时观看的是2003年拍摄的电影，特效各方面当然是不能和现在的相比了，新版2021年10月份上映，当时去看了《沙丘1》，整体感受就是，轰隆隆的音效持续了两个多小时，体验不算很好。虽然音乐确实有宗教的元素，和电影故事还是很契合的，但是还是觉得太嘈杂了。要不是因为有滤镜，还真不好说能不能看完。</p>
<p>现在等了三年，《沙丘2》终于上映了，然后我就去看了，看完之后，想起来写写观后感，也不知道要写些下，就把自己的一些想法梳理了一下。</p>
<h2 id="吐槽一驾驭沙虫没有铺垫">吐槽一：驾驭沙虫没有铺垫</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180123039.png"></p>
<p>保罗在驾驭沙虫用于证明自己，是否可以是一个弗里曼人时，没有任何对驾驭沙虫测试作一些铺垫，只是说保罗召唤出来的沙虫，体型特别大，比任何人召唤出来的沙虫都大，然后保罗费了九牛二虎之力，才完成了驾驭沙虫测试。</p>
<p>这一部分情节，我还是觉得有点突兀，凭什么保罗可以毫发无伤的情况下就能完成测试了呢？就因为天选之子么，如果每次都用这个来解释，那就太宿命论了，感觉人物不够真实。</p>
<p>我当时就想起了《阿凡达》第一部里，杰克征服托鲁克成为魅影骑士的剧情，在这之前，电影已经对魅影骑士有介绍了，征服托鲁克在纳美人看来是非常了不起的事情，是部落一直以来的传说，然后杰克一行还被其追杀过，压迫感十足，所以杰克后面要去征服托鲁克的时候，观众立马就知道这意味着什么，不由得捏了一把汗，毕竟托鲁克块头真的太大了，搞不好真的会丢了性命。因此，当杰克成功征服托鲁克，成为魅影骑士之后，王者归来，带给观众的感觉将会很震撼。</p>
<p>而在《沙丘2》中呢？没有对驾驭沙虫有过什么特别神圣化的渲染，好像只要是个弗里曼人就可以驾驭沙虫，我理解电影里使用“体型特别大”这样的设定是用来强调，保罗是天选之子，连体型那么大的沙虫都可以驾驭，好推进电影剧情，但是这样的处理，我觉得不是很好。</p>
<p>我能想到的是，如果是我来设计，可能会有一部分内容用于介绍沙虫的强大，类似上面《阿凡达》魅影骑士的渲染，然后呢，召唤沙虫的工具——振荡器可以加上一个这样的设定，振荡器的强度是可以调节的，根据强度对应召唤沙虫的大小，部落明文规定不能超过危险线，几百年来只有部落首领某某试过，但不幸殒命，所以已成禁忌。然后弗里曼人里有人不服保罗，想弄死他又不能太明显，就想借刀杀人，在振荡器上做了手脚，保罗进行驾驭沙虫测试时，居然召唤出了传说中的沙虫，面对生死存亡之际，保罗毅然迎了上去，最后虽然身受重伤，但还是征服了沙虫。这样不是更有说服力么？营造保罗是天选之子，为成为弗里曼人首领铺路的过程中，真的很欠缺说服力，没有感觉保罗面临了多困难的考验，太平淡了。</p>
<h2 id="吐糟二对菲德恐怖压迫感渲染立不住">吐糟二：对菲德恐怖、压迫感渲染立不住</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180105536.png"></p>
<p>从《沙丘1》开始，电影了对哈克南男爵的渲染，一直都不错的，不管是造型还是音乐，压迫感都快要溢出来了，但是在《沙丘2》里对菲德这块的处理，真的很一般。</p>
<p>菲德一出场就舌头舔刀尖，对待下人，一出手就是割喉，残忍至极，我能理解电影营造恐怖氛围的意图，用来说明，菲德我可是很恐怖的哦，压迫感很强的，你们最好不要惹我。但是在菲德生日举行的角斗场上，却出现了一个特别搞笑的情节，角斗场上菲德的对手居然是三个老弱病残的俘虏，而且两个还下药了，剩下一个还是因为哈克南男爵故意设计试探实力，才没有下药，但是，那个没有被下药的俘虏，看起来都快70岁了，没有70岁，60岁总该有了吧，拜托，你行不行啊，至于么，台上小兵还各种欢呼，然后姐妹会的公爵夫人还觉得菲德好厉害，我都觉得尴尬。本来以为三个俘虏周围那些有点像异形的十几个黑衣人也是俘虏，后来才发现是菲德那边的士兵，期间还帮菲德砍了老头一刀，被菲德呵责后退了，然后菲德反杀之前，还一脸挑衅地邪笑，我着实被逗笑了，你碾死一只蚂蚁之前，张牙舞爪地干嘛呢，还差点被蚂蚁咬死了。</p>
<p>如果这个俘虏是哪位大人物，在前面有过铺垫，以一敌百，所向披靡，是厄崔迪家族有史以来最强大的战士，或者说是邓肯也行了，然后被你菲德轻轻松松虐杀了，那么菲德这个反派人设一下子就立起来了，但是我应该没记错，这个俘虏不是啊，也就菲德关掉并扔了屏蔽场对打造人设起到了一点点作用，其他的全都背道而驰，菲德这个反派完全就是弱鸡啊，没觉得有什么能力，更谈不上压迫感，这样的对手，不觉得很无聊么？</p>
<h2 id="吐槽三最后皇帝出兵如同儿戏">吐槽三：最后皇帝出兵如同儿戏</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403182346154.png"></p>
<p>保罗一路开挂，在北方集合了弗里曼人，因为喝了生命之水的缘故，知道了当年的内情，皇帝因为忌惮保罗他爸厄崔迪公爵的威望，暗地里设计和协助哈克南男爵灭了厄崔迪家族，所以保罗对皇帝下战书，然后皇帝集齐全部战力，直接到厄拉科斯星球上了，到了之后，开始问哈克南男爵，为什么一直没有搞定保罗，然后对保罗在北方的情况清楚吗？我当时就震惊了，皇帝被下战书，全部人马立马到了战场，然后到了战场才要问，当前形势如何？哪有被挑衅就倾巢而出的，哪怕全员出动，哪有不掌握当前战场形势的，都没调查清楚，就盲目出兵，都到战场了，还问责哈克南男爵有用么？你人都到这里了，简直是盲盒式开战，就不说其他了，天气总该知道吧，大风暴都要来了，皇帝兵团还傻乎乎在外面，毫无章法，整个战役下来，不管天时地利人和，全在保罗这边，我那么笨的都能想到，如果我是皇帝，保罗下战书了，那么第一时间，肯定是要先弄清现在是什么情况？然后让哈克南男爵继续顶上去，想办法让其他家族也过来围剿保罗，不管怎么设计，肯定要先让其他家族送命啊，怎么自己直接跳到人家水晶里开大，这不是找死么？这个反派塑造得那么愚蠢，有什么意思呢，实际上大战观感很平淡，更不要说最后，不管多高科技，总要沦为村口械斗了，不过老美一贯如此，这一点从《黑豹》可见一斑。还不如把村口互殴设计为，保罗通过音言直接控制菲德，让菲德自己自杀，那更突出保罗的强大。</p>
<h2 id="结语">结语</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403180109703.png"></p>
<p>总的来说，《沙丘2》电影时长两个半小时，不算很长，其实还可以了，可能本身对这种类型的电影有所偏爱，加上中学时代的滤镜，虽然有槽点，但是故事挺吸引我的。</p>
<p>甜茶演技不错啊，一些微表情还是很好的，里面展示角色霸气的地方有三，还是有爽到的，第一个是在北方会议上那句，“你们谁都不能反对我，这里我说的算。”第二个是大战前，在山上振臂高呼的画面；第三个是让皇帝俯首吻戒指，示意让位。至于女主，还是觉得不是很适合这个角色，而且演技真的不太行，再怎么说也是女强人，坚韧是可以，但是一直板着脸真的顶不住，特别是最后知道保罗要娶皇帝女儿时，那种神态，真的跟小孩子过家家一样。我立马想到的是《英雄》《夜宴》中章子怡那种有点委屈，但是很愤懑的表演，眼睛微红，嘴角抽搐，额头青筋暴起，通过一些微表情的处理，一下子就感觉到是活生生的人才有的情绪。</p>
<p>杰西卡第二部变成圣母的造型确实蛮惊艳的，至于野兽拉班，想到《银河护卫队》略微有点出戏，还有伊勒琅公主，我说咋那么眼熟，原来是《奥本海默》里的美国女共产党员，全裸出镜，牺牲很大，我不得不被迫留下了深刻的印象。</p>
<p>2021年10月份看完《沙丘1》后，回来查了下原著有六本书，感觉这个看完有点花时间啊，就在B站看解读电影视频，顺便发现有一个原著剧情解说的系列，UP主是负七七七七七七，按耐不住好奇心，就了解了全部的原著剧情。看完之后，就觉得说《沙丘》媲美《指环王》并不为过，世界观宏大，探讨的也蛮有深度的，至于电影嘛，那就远远不是一个级别的了。</p>
<p>《沙丘2》电影的配乐毕竟出自汉斯·季默之手，除了太嘈杂这个问题，其他自不必多说，但我隐约觉得配乐有喧宾夺主的感觉，电影里有很多情节没办法够到引爆观众情绪那个点的时候，总是习惯性依靠配乐对其弥补，在带有宗教元素略显诡异的氛围下，观众好像一下子就被唬住了，但是，仔细想想就感觉被忽悠了，毕竟这个情节或者转场真不一定非要有这个配乐才行，在观影过程中，我基本都能猜到，来了来了，应该要来配乐了，然后就真的来了。</p>
<p>期待《沙丘3》，后面的故事真的很精彩，但是保罗真的老惨了，俄狄浦斯式的悲剧人物。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 17 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米、烤肠、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐：爆米花、可乐、烤肠&lt;/li&gt;
&lt;li&gt;晚餐：手抓饭、馕&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;向下拉伸，5X10次，30KG。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181359756.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;昨晚看了《沙丘2》，然后吃了手抓饭，第一次吃，感觉味道不错啊。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米、烤肠、鸡蛋</li>
<li>午餐：爆米花、可乐、烤肠</li>
<li>晚餐：手抓饭、馕</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>向下拉伸，5X10次，30KG。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181359756.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>昨晚看了《沙丘2》，然后吃了手抓饭，第一次吃，感觉味道不错啊。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-16 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 16 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 玉米、牛奶、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 玉米和酸菜捆饭+三四根巧乐兹雪糕&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181336635.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;巧乐兹雪糕突然买多了，好大一箱，天啊！然后才发现一根就260卡路里，吃一根基本不能乱吃东西了，只能慢慢控制了。&lt;/p&gt;
&lt;p&gt;早睡早起，没得说的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 玉米、牛奶、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 玉米和酸菜捆饭+三四根巧乐兹雪糕</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181336635.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>巧乐兹雪糕突然买多了，好大一箱，天啊！然后才发现一根就260卡路里，吃一根基本不能乱吃东西了，只能慢慢控制了。</p>
<p>早睡早起，没得说的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-15 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 15 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 玉米、牛奶、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 凉菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181333127.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;凉菜还是吃太多了，而且还是重油重辣的。&lt;/p&gt;
&lt;p&gt;晚上早点睡觉。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 玉米、牛奶、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 凉菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181333127.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>凉菜还是吃太多了，而且还是重油重辣的。</p>
<p>晚上早点睡觉。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 21</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-21/</link>
      <pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-21/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/array-nesting/&#34;&gt;565. 数组嵌套&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;索引从&lt;code&gt;0&lt;/code&gt;开始长度为&lt;code&gt;N&lt;/code&gt;的数组&lt;code&gt;A&lt;/code&gt;，包含&lt;code&gt;0&lt;/code&gt;到&lt;code&gt;N - 1&lt;/code&gt;的所有整数。找到最大的集合&lt;code&gt;S&lt;/code&gt;并返回其大小，其中 &lt;code&gt;S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }&lt;/code&gt;且遵守以下的规则。&lt;/p&gt;
&lt;p&gt;假设选择索引为&lt;code&gt;i&lt;/code&gt;的元素&lt;code&gt;A[i]&lt;/code&gt;为&lt;code&gt;S&lt;/code&gt;的第一个元素，&lt;code&gt;S&lt;/code&gt;的下一个元素应该是&lt;code&gt;A[A[i]]&lt;/code&gt;，之后是&lt;code&gt;A[A[A[i]]]...&lt;/code&gt; 以此类推，不断添加直到&lt;code&gt;S&lt;/code&gt;出现重复的元素。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;其中一种最长的&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;S&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;K&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;S&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arrayNesting&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 使用visited数组来记录访问过的元素
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;visited&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getNumValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 设置count，用于记录最大集合长度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 直到为false,也就是已访问过，出现重复元素，则跳出循环，返回最大集合长度count
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestSubArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 因为前面如果已经访问过，那么后面再次访问时，获取数组长度值一定是比之前的小的。比如当i=0时，触发了后面i=3的递归遍历，当真的执行到i=3时，又重复进行，所以没有意义。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;subArrayLength&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getNumValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// 每次遍历，比较大小，获取最大值，赋值给到longestSubArray
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;            &lt;span class=&#34;nx&#34;&gt;longestSubArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;longestSubArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;subArrayLength&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestSubArray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;我一开始的思路是使用递归，依次将&lt;code&gt;nums&lt;/code&gt;各个元素都执行一遍，虽然也解出来了，但是无法满足力扣的解题需求，毕竟是暴力解法，不够优雅。然后使用&lt;code&gt;ChatGPT&lt;/code&gt;，让它诊断了下代码，提出特别好的解法，就是上面的代码。最核心的一点就是，使用&lt;code&gt;visited&lt;/code&gt;数组来记录访问过的元素，因为如果前面已经访问过，那么后面再次访问时，获取集合长度值一定是比之前的小。比如上面的示例1，当&lt;code&gt;i=0&lt;/code&gt;时，其值为&lt;code&gt;5&lt;/code&gt;，触发了后面&lt;code&gt;i=5&lt;/code&gt;的递归遍历，当真的执行到&lt;code&gt;i=5&lt;/code&gt;时，又重复进行，所以没有意义。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2403/240311-rain.html&#34;&gt;It once rained for two million years, say scientists&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;农民在干旱时期祈求降雨。我们大多数人都有过这样的经历，即希望上天为我们的花园降雨以便浇灌植物。然而，我们谁也无法想象一场持续200万年的长时间降雨。英国地质学家和法医科学家阿拉斯泰尔·鲁菲尔发现，在2亿至3亿年前，在盘古大陆分离成大陆之前，地球确实经历了一个长达200万年不间断降雨的时代。鲁菲尔博士说，这有助于促进全球动植物的发展。他认为，降雨可能是由一系列大规模火山喷发后湿度的大幅上升引发的。&lt;/p&gt;
&lt;p&gt;鲁费尔博士及其团队是基于在欧洲东阿尔卑斯山脉进行的研究，该研究于20世纪70年代和80年代展开。数据显示，在可追溯到2亿多年前的古老岩石中沉积了不寻常的地层。鲁菲尔说，这导致越来越多的证据表明，雨季可能是“使恐龙和可能是我们现代陆地动物群其他成员多样化并占领陆地”的触发因素。他补充说：“这可能是生命史上最重要的事件之一，因为它不仅在允许恐龙时代的同时，也促成了大多数构成现代动物群的关键类群的起源，包括龟类、鳄鱼、蜥蜴和哺乳动物。”&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;Flutter国内环境配置&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/array-nesting/">565. 数组嵌套</a></p>
<p>索引从<code>0</code>开始长度为<code>N</code>的数组<code>A</code>，包含<code>0</code>到<code>N - 1</code>的所有整数。找到最大的集合<code>S</code>并返回其大小，其中 <code>S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }</code>且遵守以下的规则。</p>
<p>假设选择索引为<code>i</code>的元素<code>A[i]</code>为<code>S</code>的第一个元素，<code>S</code>的下一个元素应该是<code>A[A[i]]</code>，之后是<code>A[A[A[i]]]...</code> 以此类推，不断添加直到<code>S</code>出现重复的元素。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">A</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span> 
</span></span><span class="line"><span class="cl"><span class="nx">A</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">6</span><span class="p">,</span> <span class="nx">A</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="mf">2.</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">其中一种最长的</span> <span class="nx">S</span><span class="p">[</span><span class="nx">K</span><span class="p">]</span><span class="o">:</span>
</span></span><span class="line"><span class="cl"><span class="nx">S</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="nx">A</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nx">A</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="nx">A</span><span class="p">[</span><span class="mi">6</span><span class="p">],</span> <span class="nx">A</span><span class="p">[</span><span class="mi">2</span><span class="p">]}</span> <span class="o">=</span> <span class="p">{</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">}</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">arrayNesting</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 使用visited数组来记录访问过的元素
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">visited</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">getNumValue</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 设置count，用于记录最大集合长度
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 直到为false,也就是已访问过，出现重复元素，则跳出循环，返回最大集合长度count
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="nx">visited</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">visited</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="nx">index</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">count</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">longestSubArray</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 因为前面如果已经访问过，那么后面再次访问时，获取数组长度值一定是比之前的小的。比如当i=0时，触发了后面i=3的递归遍历，当真的执行到i=3时，又重复进行，所以没有意义。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">visited</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="kd">let</span> <span class="nx">subArrayLength</span> <span class="o">=</span> <span class="nx">getNumValue</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">nums</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// 每次遍历，比较大小，获取最大值，赋值给到longestSubArray
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="nx">longestSubArray</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">longestSubArray</span><span class="p">,</span> <span class="nx">subArrayLength</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">longestSubArray</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>我一开始的思路是使用递归，依次将<code>nums</code>各个元素都执行一遍，虽然也解出来了，但是无法满足力扣的解题需求，毕竟是暴力解法，不够优雅。然后使用<code>ChatGPT</code>，让它诊断了下代码，提出特别好的解法，就是上面的代码。最核心的一点就是，使用<code>visited</code>数组来记录访问过的元素，因为如果前面已经访问过，那么后面再次访问时，获取集合长度值一定是比之前的小。比如上面的示例1，当<code>i=0</code>时，其值为<code>5</code>，触发了后面<code>i=5</code>的递归遍历，当真的执行到<code>i=5</code>时，又重复进行，所以没有意义。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240311-rain.html">It once rained for two million years, say scientists</a></p>
<p>农民在干旱时期祈求降雨。我们大多数人都有过这样的经历，即希望上天为我们的花园降雨以便浇灌植物。然而，我们谁也无法想象一场持续200万年的长时间降雨。英国地质学家和法医科学家阿拉斯泰尔·鲁菲尔发现，在2亿至3亿年前，在盘古大陆分离成大陆之前，地球确实经历了一个长达200万年不间断降雨的时代。鲁菲尔博士说，这有助于促进全球动植物的发展。他认为，降雨可能是由一系列大规模火山喷发后湿度的大幅上升引发的。</p>
<p>鲁费尔博士及其团队是基于在欧洲东阿尔卑斯山脉进行的研究，该研究于20世纪70年代和80年代展开。数据显示，在可追溯到2亿多年前的古老岩石中沉积了不寻常的地层。鲁菲尔说，这导致越来越多的证据表明，雨季可能是“使恐龙和可能是我们现代陆地动物群其他成员多样化并占领陆地”的触发因素。他补充说：“这可能是生命史上最重要的事件之一，因为它不仅在允许恐龙时代的同时，也促成了大多数构成现代动物群的关键类群的起源，包括龟类、鳄鱼、蜥蜴和哺乳动物。”</p>
<h2 id="tip">Tip</h2>
<p>Flutter国内环境配置</p>
<p>最近，github都登录不上，挂了梯子，git clone都是失败的，无奈之下，只能研究切换至国内镜像来使用。</p>
<p>首先，在<a href="https://flutter.cn/community/china?tab=windows">《在中国网络环境下使用 Flutter - Flutter 中文文档》</a>文档页面，可以看到相关介绍。主要是需要将<code>PUB_HOSTED_URL</code>和<code>FLUTTER_STORAGE_BASE_URL</code>设置为镜像站点。以 <code>CFUG</code>的镜像为例，使用管理员权限打开Windows Powershell，然后使用Windows setx命令永久设置环境变量，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">setx PUB_HOSTED_URL https://pub.flutter-io.cn
</span></span><span class="line"><span class="cl">setx FLUTTER_STORAGE_BASE_URL https://storage.flutter-io.cn
</span></span></code></pre></div><p>然后关闭窗口，再打开，输入flutter doctor验证。</p>
<p>相关资料：</p>
<ol>
<li>Flutter 镜像安装帮助：https://mirrors.tuna.tsinghua.edu.cn/help/flutter</li>
<li>Flutter SDK：https://mirrors.tuna.tsinghua.edu.cn/help/flutter-sdk.git</li>
</ol>
<h2 id="share">Share</h2>
<p>面向 ChatGPT 学习和工作已经成为一种趋势，我自己也用了蛮久的，毕竟它可以快速提升效率。然而，我们需要警惕的是，如果在学习和工作中遇到问题时只是简单地抄答案，而没有尽最大努力尝试自己解决，那将是一种悲哀的做法。首先，这样做只是为了完成学习计划和工作任务，对自身不会有任何真正的收获；其次，ChatGPT 给出的答案并不一定完全正确，很多时候可能是胡编乱造的，如果我们没有进一步甄别和思考，很容易被误导。因此，ChatGPT 应该被视为辅助工具，而不应该直接依赖它来解决问题本身。无论答案正确与否，我们都应该自行判断、思考和学习。知其然知其所以然。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-12 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 12 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 玉米、牛奶、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂：吊烧鸡&lt;/li&gt;
&lt;li&gt;晚餐： 鸡排+捆饭&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403122300736.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;继续，先保持去健身房，不中断。&lt;/p&gt;
&lt;p&gt;晚上早点睡觉。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 玉米、牛奶、鸡蛋</li>
<li>午餐： 公司食堂：吊烧鸡</li>
<li>晚餐： 鸡排+捆饭</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403122300736.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>继续，先保持去健身房，不中断。</p>
<p>晚上早点睡觉。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《程序员职业规划手册》课程笔记</title>
      <link>https://dstweihao.cn/posts/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4/%E7%A8%8B%E5%BA%8F%E5%91%98%E8%81%8C%E4%B8%9A%E8%A7%84%E5%88%92%E6%89%8B%E5%86%8C%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Sun, 10 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4/%E7%A8%8B%E5%BA%8F%E5%91%98%E8%81%8C%E4%B8%9A%E8%A7%84%E5%88%92%E6%89%8B%E5%86%8C%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;企业作为一个商业组织，大多动作的基本前提都是看成本和收益。所以一个朴素的理念是，当你创造的价值超过你的薪水，你就一直有竞争力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想要更好地发展，除了了解路径和能力要求之外，还要回到一个本源问题：理解自己岗位对于公司的价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其实“要不要转管理”这个话题，你可以从三个角度来问自己。第一，意愿，也就是你愿不愿意？第二，特质，也就是你的个人特质适不适合做管理？第三，能力，你当下的能力能不能成为管理者？&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;现在此时此刻的感悟就是，管理真的不好做，光能不当众破防暴走发脾气这一条，就可以卡住很多人。因为你发脾气并不能解决问题，事已至此，你指责对方，人性本就趋利避害，对方也只会千方百计去找各种借口，互相推诿，到头来，事情没有解决，反而变得更糟糕。每次准备发脾气的时候，就默念一百遍“宰相肚里能撑船”吧，哈哈哈。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技术管理者只是减少了写代码的时间，不代表我们放弃了技术，反而是从一个更高的维度看待技术。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人再优秀，每天也只有 24 小时，也只有一双手，也有很多能力短板和盲区。但当我们有了自己的团队，就可以能力互补，可以互相激发，很多原来一个人干不了的事就有可能干成了。因此，从职业发展角度来看，管理是放大个人价值的杠杆。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在当下的职场，没有任何人是孤岛，每个人都需要跟人去沟通，在协作中完成任务。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;哈佛商学院克里斯坦森教授在《你要如何衡量你的人生》中说过，“如果你想要帮助他人，就要做管理者。管理者是最崇高的职业之一，没有哪一个职业能像管理者一样为他人提供学习和成长的机会，让他们懂得承担责任并取得成就，以及为团队的成功做出贡献。”这是我看过对于管理者最好的诠释，送给所有已经是管理者，或者未来希望成为管理者的你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《远见》一书中说，“在老板面前表达你的野心是一件健康而有益的事”。你需要主动跟老板去争取机会，能够承担更大的挑战，大多数人的成长都是在事上练出来的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;前年和领导谈心，说到团队的未来发展，我脱口而出，团队发展状大，成立子公司，为什么一定要比其他部门差呢？就要做第一。现在想起来，不免心虚，且不说公司层面、外部市场瞬息万变，单是部门自身就存在很多需要解决的问题，只能说躬身入局，才知深浅，很多事情人一多，关系一复杂，难度成倍数增加，但是我不后悔，敢想就敢要，越挫就越勇，未来的事情谁说得准呢。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;绝大多数技术人发展的瓶颈在于只看到了自己手中的代码，只关注正确的实现和高效的交付。但写完代码，这一切才刚刚开始。综合能力的发展会让我们拥有宏观视角，更理解企业的价值传导链路，自己在这个链路上可以贡献的价值是什么，突破这一层，未来的职业发展才会有更多可能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解自己适不适合做技术专家，有没有持续钻研的兴趣。分享一个自测小方法，思考两个问题就好。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你下班后会不会去主动研究？&lt;/li&gt;
&lt;li&gt;没有项目的要求，没有老板的压力，你会不会持续在某个方向精进学习？&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这个瞬息万变的时代，任何对于未来的预测行为都是徒劳的。但我们可以换个角度思考这个问题，产生这样的困惑，最主要的原因，就是没有看到在变化的市场需求背后，技术提供了哪些不变的价值。反过来讲，只要未来的市场依然有这部分需求，技术岗就依然有发展前景。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;唯一不变的就是变化本身，不自我设限，你的人生存在无数个可能。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数字化、规模化、智能化、以及技术底层能力的建设，这是在变化的市场中，技术一直在发挥的价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当下很多技术人对于产业数字化不感冒，因为所做的工作跟原来互联网红利期时做的技术工作差异很大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;能用技术帮助真实世界解决疑难杂症，提升效率，技术的价值就得到了很大的发挥，你的岗位价值也是毋庸置疑的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做一个终生学习者，持续精进专业技术能力，向行业学习。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;怎么学习一个行业？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这个行业的商业模式是什么，也就是靠什么赚钱的？&lt;/li&gt;
&lt;li&gt;行业的规模如何？头部玩家有哪些？它们的模式有哪些特色？&lt;/li&gt;
&lt;li&gt;这个行业的上下游是谁？有哪些经典的作业场景？业务操作流程是什么样的？&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技术的本质是一个工具，未来技术的价值不会局限在互联网行业，而是在更多不同的行业、场景下去开花结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;市场永远在变化，在当下的时代，没有任何能力可以帮你安身立命，安稳一生。唯有不断学习，提升专业能力，向行业学习，方能适应不断变化的市场。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在心怀“技术改变世界”梦想的同时，更需要脚踏实地，从市场的需求中去思考技术的价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技术人的务实，从来不是只在办公室里冥思苦想，在大脑中自嗨，而是要走出实验室，回到真实的世界，敢于把自己的手弄脏，用技术这个犀利的工具解决真实世界里的一个又一个难题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;实践是检验真理的唯一标准，写代码的工作也是一样的，不要纸上谈兵。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;知名人才发展专家薛毅然老师说，“职业发展无非是如何更好地实现个人能力和价值与市场需求的整合，以及通过你个人能力的提升，去创造下一个被整合的机会”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在人生的重要事情上，需要一种魄力，抛开我喜不喜欢，先考虑应不应该。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在大环境动荡的当下，我们能做的就是把自己当作一家公司，不断做销售，积累客户。换句话说，就是主动通过各种渠道去了解市场的变化，了解自己的行情，给自己增加备选机会。同时还要长年累月地给自己做宣传，做出自己的代表作，积累自己的职场口碑，建立个人影响力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个岗位的工作，都承载了公司体系内的一部分功能，最终形成合力，实现整个体系的目标，而我们就是每一个部分的工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任何一个岗位，都是围绕企业目标服务的，围绕为客户创造价值服务。所以在职场，一定是结果导向的。这个结果，不是你做了几个项目，写出了多少行代码，引入了多么新颖的技术，而是看你做的事情给公司创造了什么价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;给你举个例子，小 A 是一个非常优秀的技术人，年年拿高绩效，今年她从一线升为技术管理者，每天工作比之前还努力，却只拿了普通绩效，特别委屈。我告诉她，你现在是技术管理者，你的考核结果是团队拿到的结果，以及团队拿结果的能力。那时她才意识到，自己虽然很拼，但团队并没有成长起来，才意识到管理者的角色要求是什么样的，找到了接下来的努力方向。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;管理者前期肯定要亲力亲为，冲在最前面，毕竟这个时候是要起带头作用的，平时自己在公司也是一样的，从各方面都会特别注意，我不想落别人口实，基本都要求自己呈现比较好的精神面貌，但是亲历亲为也是有时间段的，到了一定的阶段，就需要开始做好规划，向下授权，从中脱身，聚焦更为重要的事情。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你很努力，结果却不好，那还是要回到目标上，看看自己努力的方向对不对。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上，职场有一个冰冷的事实是，任何人都是可以替代的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些人把工作当做人生的重要寄托，当成自己成就感、价值感、甚至幸福感的主要来源，但职场真的承载不了太多东西。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在任何一份工作中，你都是自己职业发展的主人。工作的成就感不只是岗位本身带来的，更是我们自己挖掘出来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论做什么事，都不要急着一头扎进去，先看到全景，才能游刃有余。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;切勿不可只见树木，不见森林。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;企业存在的目的是为客户创造价值，从而获取利润。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时不时给自己按个暂停键，从手中忙碌的工作中后退一步，站在你的 N+1（上一级）、N+2（上级的上级）角度去思考。想想他们在忙什么？你合作的上下游在忙什么？你所在的业务单元今年有哪些重要的 OKR？目前面临哪些挑战？从这些信息中，你可以判断自己当下关注的优先事项和目标是否正确。它们对公司来说，是真正有价值的东西，还是只是一些细枝末叶？同时，它也会时刻提醒我们的工作要以终为始，要知道自己写的代码跟企业创造价值中间的关系。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;跟我情况如此相似，当前正受困于细枝末节的事情，无法脱身，最近一直在研究如何脱身，把精力和时间聚焦在行业和市场上面。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为员工定期向老板汇报工作，这根本不是什么“会来事儿”，而是你的基本义务，没做到，那是你自己失责。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只要我们的目标是一致的，很多问题都可以化解。不管对方是说话特别直，让你在会上很没颜面，还是特别强势，言语中带着火药味，还是表面态度很好，实际可能和稀泥……都不重要，只要目标一致，大家就可以合作。你不喜欢的人，不代表不可以合作，职场本身也承载不了那么多个人情绪。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你要知道不同的人身上不同的利益诉求和恐惧。你会发现，我们这里说到的“利益”和“恐惧”，就是基础人与人相处的“换位思考”。在组织中，不同的岗位都有自己的角色诉求，也有这个岗位需要处理的挑战和工作。如果你理解了人与人相处的基本逻辑，同时理解了当人处在职场这个游戏场中，都有不同的“角色要求”，很多合作中的问题可能就豁然开朗了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上，晋升不是奖励。如果过去功劳特别多，那也应该是用绩效、年终奖来奖励，而不是晋升。在大多数企业中，晋升也不是论资排辈，不是说你在这个岗位多少年了，就该给你晋升机会了。跳出个人视角，站在公司角度来看这个问题，晋升是企业的一次人才选拔，选拔那些对于公司未来发展更有价值，能承担更大责任的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大多数企业晋升的选拔是从战功、能力、影响力以及候选人与企业文化的匹配度来看的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为第一个“吃螃蟹”的人，你的价值会被放大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我一直认为，职业发展不等于升职加薪。即使当下你没有晋升机会，不代表你没有成长。个人的职业发展需要回到自我身上。职位是一时的，只是在这个企业的一个 Title 而已，而能力是长在我们身上的，离开公司，跳槽也是可以带走的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技术人的能力提升无止境，你的能力提升最好围绕“能给公司创造价值”这件事来做，尤其是竞争激烈的当下。举个例子，你做的是 ToB 业务，业务面临的问题可能不是服务性能瓶颈，而是如何快速交付，这样才能在市场竞争激烈、与客户谈判时有更多的筹码。你要尽快学习的不是高并发系统架构怎么设计，而是研究如何提高交付效率，你可能需要了解一些敏捷开发、研发效能提升工具，再思考在系统架构上哪些地方可以优化，哪些可以抽象？业界内相似的系统架构是如何设计的？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<ol>
<li>
<p>企业作为一个商业组织，大多动作的基本前提都是看成本和收益。所以一个朴素的理念是，当你创造的价值超过你的薪水，你就一直有竞争力。</p>
</li>
<li>
<p>想要更好地发展，除了了解路径和能力要求之外，还要回到一个本源问题：理解自己岗位对于公司的价值。</p>
</li>
<li>
<p>其实“要不要转管理”这个话题，你可以从三个角度来问自己。第一，意愿，也就是你愿不愿意？第二，特质，也就是你的个人特质适不适合做管理？第三，能力，你当下的能力能不能成为管理者？</p>
<blockquote>
<p>现在此时此刻的感悟就是，管理真的不好做，光能不当众破防暴走发脾气这一条，就可以卡住很多人。因为你发脾气并不能解决问题，事已至此，你指责对方，人性本就趋利避害，对方也只会千方百计去找各种借口，互相推诿，到头来，事情没有解决，反而变得更糟糕。每次准备发脾气的时候，就默念一百遍“宰相肚里能撑船”吧，哈哈哈。</p></blockquote>
</li>
<li>
<p>技术管理者只是减少了写代码的时间，不代表我们放弃了技术，反而是从一个更高的维度看待技术。</p>
</li>
<li>
<p>一个人再优秀，每天也只有 24 小时，也只有一双手，也有很多能力短板和盲区。但当我们有了自己的团队，就可以能力互补，可以互相激发，很多原来一个人干不了的事就有可能干成了。因此，从职业发展角度来看，管理是放大个人价值的杠杆。</p>
</li>
<li>
<p>在当下的职场，没有任何人是孤岛，每个人都需要跟人去沟通，在协作中完成任务。</p>
</li>
<li>
<p>哈佛商学院克里斯坦森教授在《你要如何衡量你的人生》中说过，“如果你想要帮助他人，就要做管理者。管理者是最崇高的职业之一，没有哪一个职业能像管理者一样为他人提供学习和成长的机会，让他们懂得承担责任并取得成就，以及为团队的成功做出贡献。”这是我看过对于管理者最好的诠释，送给所有已经是管理者，或者未来希望成为管理者的你。</p>
</li>
<li>
<p>《远见》一书中说，“在老板面前表达你的野心是一件健康而有益的事”。你需要主动跟老板去争取机会，能够承担更大的挑战，大多数人的成长都是在事上练出来的。</p>
<blockquote>
<p>前年和领导谈心，说到团队的未来发展，我脱口而出，团队发展状大，成立子公司，为什么一定要比其他部门差呢？就要做第一。现在想起来，不免心虚，且不说公司层面、外部市场瞬息万变，单是部门自身就存在很多需要解决的问题，只能说躬身入局，才知深浅，很多事情人一多，关系一复杂，难度成倍数增加，但是我不后悔，敢想就敢要，越挫就越勇，未来的事情谁说得准呢。</p></blockquote>
</li>
<li>
<p>绝大多数技术人发展的瓶颈在于只看到了自己手中的代码，只关注正确的实现和高效的交付。但写完代码，这一切才刚刚开始。综合能力的发展会让我们拥有宏观视角，更理解企业的价值传导链路，自己在这个链路上可以贡献的价值是什么，突破这一层，未来的职业发展才会有更多可能。</p>
</li>
<li>
<p>了解自己适不适合做技术专家，有没有持续钻研的兴趣。分享一个自测小方法，思考两个问题就好。</p>
<ol>
<li>你下班后会不会去主动研究？</li>
<li>没有项目的要求，没有老板的压力，你会不会持续在某个方向精进学习？</li>
</ol>
</li>
<li>
<p>在这个瞬息万变的时代，任何对于未来的预测行为都是徒劳的。但我们可以换个角度思考这个问题，产生这样的困惑，最主要的原因，就是没有看到在变化的市场需求背后，技术提供了哪些不变的价值。反过来讲，只要未来的市场依然有这部分需求，技术岗就依然有发展前景。</p>
<blockquote>
<p>唯一不变的就是变化本身，不自我设限，你的人生存在无数个可能。</p></blockquote>
</li>
<li>
<p>数字化、规模化、智能化、以及技术底层能力的建设，这是在变化的市场中，技术一直在发挥的价值。</p>
</li>
<li>
<p>当下很多技术人对于产业数字化不感冒，因为所做的工作跟原来互联网红利期时做的技术工作差异很大。</p>
</li>
<li>
<p>能用技术帮助真实世界解决疑难杂症，提升效率，技术的价值就得到了很大的发挥，你的岗位价值也是毋庸置疑的。</p>
</li>
<li>
<p>做一个终生学习者，持续精进专业技术能力，向行业学习。</p>
</li>
<li>
<p>怎么学习一个行业？</p>
<ol>
<li>这个行业的商业模式是什么，也就是靠什么赚钱的？</li>
<li>行业的规模如何？头部玩家有哪些？它们的模式有哪些特色？</li>
<li>这个行业的上下游是谁？有哪些经典的作业场景？业务操作流程是什么样的？</li>
</ol>
</li>
<li>
<p>技术的本质是一个工具，未来技术的价值不会局限在互联网行业，而是在更多不同的行业、场景下去开花结果。</p>
</li>
<li>
<p>市场永远在变化，在当下的时代，没有任何能力可以帮你安身立命，安稳一生。唯有不断学习，提升专业能力，向行业学习，方能适应不断变化的市场。</p>
</li>
<li>
<p>在心怀“技术改变世界”梦想的同时，更需要脚踏实地，从市场的需求中去思考技术的价值。</p>
</li>
<li>
<p>技术人的务实，从来不是只在办公室里冥思苦想，在大脑中自嗨，而是要走出实验室，回到真实的世界，敢于把自己的手弄脏，用技术这个犀利的工具解决真实世界里的一个又一个难题。</p>
<blockquote>
<p>实践是检验真理的唯一标准，写代码的工作也是一样的，不要纸上谈兵。</p></blockquote>
</li>
<li>
<p>知名人才发展专家薛毅然老师说，“职业发展无非是如何更好地实现个人能力和价值与市场需求的整合，以及通过你个人能力的提升，去创造下一个被整合的机会”。</p>
</li>
<li>
<p>在人生的重要事情上，需要一种魄力，抛开我喜不喜欢，先考虑应不应该。</p>
</li>
<li>
<p>在大环境动荡的当下，我们能做的就是把自己当作一家公司，不断做销售，积累客户。换句话说，就是主动通过各种渠道去了解市场的变化，了解自己的行情，给自己增加备选机会。同时还要长年累月地给自己做宣传，做出自己的代表作，积累自己的职场口碑，建立个人影响力。</p>
</li>
<li>
<p>每个岗位的工作，都承载了公司体系内的一部分功能，最终形成合力，实现整个体系的目标，而我们就是每一个部分的工具。</p>
</li>
<li>
<p>任何一个岗位，都是围绕企业目标服务的，围绕为客户创造价值服务。所以在职场，一定是结果导向的。这个结果，不是你做了几个项目，写出了多少行代码，引入了多么新颖的技术，而是看你做的事情给公司创造了什么价值。</p>
</li>
<li>
<p>给你举个例子，小 A 是一个非常优秀的技术人，年年拿高绩效，今年她从一线升为技术管理者，每天工作比之前还努力，却只拿了普通绩效，特别委屈。我告诉她，你现在是技术管理者，你的考核结果是团队拿到的结果，以及团队拿结果的能力。那时她才意识到，自己虽然很拼，但团队并没有成长起来，才意识到管理者的角色要求是什么样的，找到了接下来的努力方向。</p>
<blockquote>
<p>管理者前期肯定要亲力亲为，冲在最前面，毕竟这个时候是要起带头作用的，平时自己在公司也是一样的，从各方面都会特别注意，我不想落别人口实，基本都要求自己呈现比较好的精神面貌，但是亲历亲为也是有时间段的，到了一定的阶段，就需要开始做好规划，向下授权，从中脱身，聚焦更为重要的事情。</p></blockquote>
</li>
<li>
<p>如果你很努力，结果却不好，那还是要回到目标上，看看自己努力的方向对不对。</p>
</li>
<li>
<p>事实上，职场有一个冰冷的事实是，任何人都是可以替代的。</p>
</li>
<li>
<p>有些人把工作当做人生的重要寄托，当成自己成就感、价值感、甚至幸福感的主要来源，但职场真的承载不了太多东西。</p>
</li>
<li>
<p>在任何一份工作中，你都是自己职业发展的主人。工作的成就感不只是岗位本身带来的，更是我们自己挖掘出来的。</p>
</li>
<li>
<p>无论做什么事，都不要急着一头扎进去，先看到全景，才能游刃有余。</p>
<blockquote>
<p>切勿不可只见树木，不见森林。</p></blockquote>
</li>
<li>
<p>企业存在的目的是为客户创造价值，从而获取利润。</p>
</li>
<li>
<p>时不时给自己按个暂停键，从手中忙碌的工作中后退一步，站在你的 N+1（上一级）、N+2（上级的上级）角度去思考。想想他们在忙什么？你合作的上下游在忙什么？你所在的业务单元今年有哪些重要的 OKR？目前面临哪些挑战？从这些信息中，你可以判断自己当下关注的优先事项和目标是否正确。它们对公司来说，是真正有价值的东西，还是只是一些细枝末叶？同时，它也会时刻提醒我们的工作要以终为始，要知道自己写的代码跟企业创造价值中间的关系。</p>
<blockquote>
<p>跟我情况如此相似，当前正受困于细枝末节的事情，无法脱身，最近一直在研究如何脱身，把精力和时间聚焦在行业和市场上面。</p></blockquote>
</li>
<li>
<p>作为员工定期向老板汇报工作，这根本不是什么“会来事儿”，而是你的基本义务，没做到，那是你自己失责。</p>
</li>
<li>
<p>只要我们的目标是一致的，很多问题都可以化解。不管对方是说话特别直，让你在会上很没颜面，还是特别强势，言语中带着火药味，还是表面态度很好，实际可能和稀泥……都不重要，只要目标一致，大家就可以合作。你不喜欢的人，不代表不可以合作，职场本身也承载不了那么多个人情绪。</p>
</li>
<li>
<p>你要知道不同的人身上不同的利益诉求和恐惧。你会发现，我们这里说到的“利益”和“恐惧”，就是基础人与人相处的“换位思考”。在组织中，不同的岗位都有自己的角色诉求，也有这个岗位需要处理的挑战和工作。如果你理解了人与人相处的基本逻辑，同时理解了当人处在职场这个游戏场中，都有不同的“角色要求”，很多合作中的问题可能就豁然开朗了。</p>
</li>
<li>
<p>事实上，晋升不是奖励。如果过去功劳特别多，那也应该是用绩效、年终奖来奖励，而不是晋升。在大多数企业中，晋升也不是论资排辈，不是说你在这个岗位多少年了，就该给你晋升机会了。跳出个人视角，站在公司角度来看这个问题，晋升是企业的一次人才选拔，选拔那些对于公司未来发展更有价值，能承担更大责任的人。</p>
</li>
<li>
<p>大多数企业晋升的选拔是从战功、能力、影响力以及候选人与企业文化的匹配度来看的。</p>
</li>
<li>
<p>作为第一个“吃螃蟹”的人，你的价值会被放大。</p>
</li>
<li>
<p>我一直认为，职业发展不等于升职加薪。即使当下你没有晋升机会，不代表你没有成长。个人的职业发展需要回到自我身上。职位是一时的，只是在这个企业的一个 Title 而已，而能力是长在我们身上的，离开公司，跳槽也是可以带走的。</p>
</li>
<li>
<p>技术人的能力提升无止境，你的能力提升最好围绕“能给公司创造价值”这件事来做，尤其是竞争激烈的当下。举个例子，你做的是 ToB 业务，业务面临的问题可能不是服务性能瓶颈，而是如何快速交付，这样才能在市场竞争激烈、与客户谈判时有更多的筹码。你要尽快学习的不是高并发系统架构怎么设计，而是研究如何提高交付效率，你可能需要了解一些敏捷开发、研发效能提升工具，再思考在系统架构上哪些地方可以优化，哪些可以抽象？业界内相似的系统架构是如何设计的？</p>
</li>
<li>
<p>你要定期回顾自己的工作，多思考，多总结。</p>
<blockquote>
<p>基本上时不时就会反思下当前的工作，写一下复盘日志，加上平时有写日记的习惯，所以这一块做的还是很多的，感受就是，从过往的真实的场景中，吸取有用的成分，用来指导往后的工作安排。</p></blockquote>
</li>
<li>
<p>在降本增效的当下，非常建议你增加一些经营视角，即主动去帮公司省钱。比如主动优化服务资源消耗，降低线上资源。主动去看业务链路中哪些环节可以线上化，降低人力成本……这些工作可以持续做。</p>
</li>
<li>
<p>晋升对于职场人来说确实很重要，但不是职业发展的全部。对待晋升，我建议从战略上藐视它，战术上重视它。跟日常生活中一样，挣钱不是目的，是结果。晋升也不是目的，而是结果，是你创造了好的价值，能力也得到了提升，当外界环境具备时，水到渠成的结果。不必强求，回到修内功这件事上，这才是我们职业发展中最重要的事情。</p>
</li>
<li>
<p>发现问题、分析问题、解决问题的过程，才能真正体现你的能力。</p>
</li>
<li>
<p>工具，就意味着只有在需要的场景下才能发挥价值，而不是停留在实验室搞技术的军备竞赛。</p>
</li>
<li>
<p>一份技术工作是否有技术含量，不应该以并发量、技术的新旧程度来评判，反而应该看当下的业务场景下，技术是否有用武之地，有哪些技术可以帮助提升的点。如果有，那这份工作就是有技术含量，就是值得尝试的。</p>
</li>
<li>
<p>我们很擅长思考，但在一些职业发展的关键问题上，可能我们为了追求确定而过度思考了。</p>
</li>
<li>
<p>逻辑分析适应于信息充分，边界明确的场景，而职业发展本身就是不确定性极高的一件事，你获取的信息也相当不全，这个时候靠逻辑推理，那绝对是给自己画地为牢。很多时候不需要万无一失，而是一种干就完了的魄力，在不断试错中慢慢寻找答案。</p>
</li>
<li>
<p>很多 35+ 危机的人是被当前的高薪困住了，舍不得放下眼前利益，去看更多的可能性，即使遇到巨大的瓶颈，也选择先忍受。但你完全可以用投资的视角来看，你要的是眼前这一两年的收入，还是长线的收入。在竞争激烈的当下，如果固守着眼前的利益，那好的机会可能很快就被别人抢走了，很多人眼前的高薪很大概率是持续不了多久的。</p>
</li>
<li>
<p>稳健自己的财务，给自己预留“试错空间”。如果你想像简一样多去探索更多的可能，要么趁年轻，无债一身轻，多去尝试，多去折腾，折腾之后认真复盘。要么给自己预留足够的试错空间。这个试错空间来自基础的财务安全。未来的五到十年，我们都需要一些底线思维，采取稳妥的财务策略。</p>
</li>
<li>
<p>当下我会建议你尽量减少负债，存好至少三年家庭开销的钱。比如你家每年开销 30 万，那你至少要存 90 万可支配的现金流。为什么是三年？就是为极端情况做准备。如果你失业，还找不到工作，被迫换方向，那“转行穷三年”是普遍规律。我在从企业出来之前，也算了好多遍这个账。</p>
</li>
<li>
<p>这里提醒一句，学习的东西要跟自己当下的工作相关，或者至少有实践场合，因为不实践的知识都是“死知识”，没有通过实践拿到结果的知识都是别人的经验，不是你自己真正的认知。在 AI 时代，这些死知识、假认知一文不值。</p>
</li>
<li>
<p>为了健康，你每天至少要睡 8 个小时，每周有 3-4 次运动。同时你还要记住，自己不是一个人在战斗，需要构建良好的社会支持系统，包括亲密的家庭关系，高质量的同频朋友。这部分在当前竞争激烈的环境下非常重要，最基础的是，它可以给你提供情绪价值，还可以提供一起学习、互相激励的成长伙伴。</p>
</li>
<li>
<p>那些曾经把我们带到很远地方的东西，可能也会变成我们进一步向前的阻碍，我们必须不断地自我进化。</p>
</li>
<li>
<p>我做技术人职业发展一年多，发现阻碍大多数 30+ 技术人职业发展的核心因素，根本不是技术能力，而是其它能力。</p>
</li>
<li>
<p>对所在的产品全局有一定的了解，能理解客户的痛点。</p>
</li>
<li>
<p>如果不确定自己是否具备产品思维，那么可以时不时地思考这么几个问题。</p>
<ol>
<li>
<p>这个产品对于痛点的解决程度如何？</p>
</li>
<li>
<p>还有哪些没有解决，或者解决得并不好？</p>
</li>
<li>
<p>用户 / 客户使用这个产品的体验如何，流畅度如何？</p>
</li>
<li>
<p>这个产品跟别的产品来说，有哪些不一样的特性？</p>
</li>
</ol>
</li>
<li>
<p>了解自己所在业务域的商业模式，也就是靠什么赚钱。</p>
</li>
<li>
<p>我的一个朋友之前一直在大厂做技术管理，这几年开始转型做乙方，帮助一些传统行业做数字化转型。我问他从带技术团队，到带销售、产品、研发这样的综合团队，对自己触动最大的事什么？他脱口而出，“经营思维！现在觉得在大厂工作时真的是太不会算账了，搭建一个数仓系统，动不动就要几百台机器。而如今常常要去甲方竞标项目，会把所有的成本，甚至包括技术人的工资、业务线其它角色的工资，服务器使用，办公产地的租金，甚至水电费都完全算上，细化到每天的成本，乘以工期，去计算总成本。真是不当家，不知道柴米贵！”原来，他们刚开始即使有企业的品牌背书，但因为单日成本太高，竞标也经常失败。后来才开始不断想办法去“降本增效”，砍掉不必要的角色，关键流程提效，缩短整个开发周期……他说，“如果我们算出来一个系统，成本需要 60 万，而市场上别人能花 40 万买到同样价值的系统，那就就说明我们没有竞争力，还有继续优化的空间。”</p>
</li>
<li>
<p>从个人职业发展角度看，如果一个人技术人的专业技术能力只专注在“冰山之上”，那就真成了“搬砖”的了。而且越在冰山之上的能力越是简单、入门门槛低，越是底层能力，鲁棒性越强。</p>
</li>
<li>
<p>我们的技术技能就好比一个锤子或者一个锯，业务好比要做一张桌子。做一张桌子需要很多道工序，需要设计，需要锯木头，需要锤子钉钉子，需要打磨，需要抛光，可能还需要营销推广……如果我们看不到桌子的全貌，就很难知道什么时候需要用锤子，要锤多少次，怎么锤才能锤得更精准。换句话来说，业务研发的价值绝不仅仅是你的代码写得多好、没有 Bug、你做的接口 TPS 多么厉害，还要看你到底用技术解决了多少业务问题，带来多少业务增量，给客户创造了什么价值。在完全不了解业务情况下，空谈技术，那就是耍流氓，也是空中楼阁，没办法长久。</p>
</li>
<li>
<p>到了一定年龄，给企业带来的价值更多是在一些不确定的、不清晰的事情上，去定义什么是有价值的，从而定义自己的工作。</p>
<blockquote>
<p>现在基本处于这样的状态，只有目标，但是不知道自己要做什么，要怎么做，一切都很模糊，需要自己慢慢探索，不会像以前那样，有特别清晰的事情12345安排给你，一切都要靠自己悟，最终的目的就是，怎么让团队能有一个相对让人满意的产出。</p></blockquote>
</li>
<li>
<p>如何做到技术赋能业务？</p>
<ol>
<li>了解业务：就是你要理解商业价值，比如清楚当前业务的重要指标，要达成这些业务指标需要解决哪些问题，哪些可以通过技术手段解决？如果你的企业用 OKR 做技术管理，那就是业务重要的 O。</li>
<li>定义问题：当你找到要解决的问题，就要把这个业务问题转化为技术问题。</li>
<li>解决问题：这一步是技术人相对擅长的，用技术手段去解决问题。</li>
<li>数据回证：提前做好数据埋点，通过数据统计论证最开始的设想，检验是否真正解决了问题？有哪些收益？</li>
</ol>
</li>
<li>
<p>技术只是打底，只是起步，长期职业发展看的是综合能力，是各种软技能的组合。</p>
</li>
<li>
<p>沟通表达能力是一种最基础，却最重要的职场通用能力，也是最被技术人低估，同时阻碍很多人职业发展的能力。</p>
</li>
<li>
<p>沟通表达是所有综合能力的基础。</p>
</li>
<li>
<p>换位思考，其实不难，就是你要理解别人的诉求，别人关注的重点，然后把要讲的内容以别人能接受的方式讲出去。你可能觉得有点别扭，但别忘了，沟通的目的就是有效传达信息，让对方理解和接受。那你就一定要去理解你的沟通对象。</p>
</li>
<li>
<p>沟通表达就是心里要有沟通对象，找到信息和别人关心的东西之间的关联，接着按照一定的结构和框架输出，细节上再注意少讲技术黑话。</p>
<blockquote>
<p>之前给测试解释过，为什么A和B两个项目不能同时部署到测试服务器，因为这个就跟家里的电视机一样，你正在放着《西游记》，想要看《红楼梦》自然就要换台了。</p></blockquote>
</li>
<li>
<p>你每天可能在工作上花了 10 个小时，甚至更长的时间，但对最终结果起到关键作用的、对年底绩效有关键影响的事情其实不多。如果不找到这些重要的事情，就可能忙忙碌碌，结果却总不好。你可能特别爱学习，一年下来参加了不少活动，囤了不少课程，看了很多书，但真正对你个人成长影响比较大的事情其实没多少。如果没有阶段性的成长目标，付费学习可能就只是一种消遣，并没有给你带来真正的成长。所以，你需要花足够多的时间去梳理自己的目标。从职业发展角度来看，有 2 个目标很关键，第一是你手头的工作，第二是你长期的能力发展。</p>
</li>
<li>
<p>很多事情商量着来，当你把选择权拿在自己手里，就不容易被环境裹挟了。</p>
</li>
<li>
<p>大多数人对于情绪管理的理解就是我要足够理性，消灭情绪，这其实是对于情绪巨大的误解。事实上，情绪不但是一种无法逃避的客观存在，更是身体对我们的提醒，背后蕴含着巨大的礼物。</p>
<blockquote>
<p>很多人之所以争吵并不是因为问题本身，而是在沟通时因为语气、用词这些次要的因素满满积累，最终爆发出来的，因为在群里打字聊天，文字无法完全承载我们要表达的意思，在不同的人看来，一个表情一个符号都有可能是一个炸弹，所以在沟通时，如果感觉稍微不对，应该立马当面讨论，而不是一味在群里发消息，文字越打越多，情绪越烧越旺，在爆发那一刻，完全忘记了在讨论什么问题，所以每次出现这种事情，应想办法让相关人员先冷静冷静，今天就先不讨论了，明天再说，因为人的情绪一旦上来，什么事情都沟通不好，如果不明白我们要解决的是问题本身，而不是反被问题解决了，那就没办法把工作做好了。和别人沟通时，并不需要关注表情、语气这些，只需要很平静地听对方说的内容即可。</p></blockquote>
</li>
<li>
<p>当情绪上来时，千万不要去抗拒，或者责备自己“为什么又生气了”。</p>
</li>
<li>
<p>一个人想走得更远，就不能只依靠个人力量，需要和更多人跨界协同。</p>
</li>
<li>
<p>拓展职场社交的真谛在于，你能否在跟你不同的人身上找到交集，并促进双方利益的共同发展。</p>
</li>
<li>
<p>从更长远角度的来看，科技永远是第一生产力，从整个社会角度来看，技术人才并没有过剩，只是在大家熟知的互联网行业显得过剩而已。更多的机会就在于我们自己能不能打破原有的惯性，破除原来熟悉的圈子，去跨界协作，发现更多的可能性。</p>
</li>
<li>
<p>我们都说要往复合型人才发展，那对于技术人来说，复合型人才就是既能写得一手好代码，做出合适的架构，解决一个个业务难题，又能写得出好的技术文章，能站在技术大会去分享，还能不被技术人的标签束缚，保持好奇心和敬畏心，与不同岗位、不同企业、不同行业的人交流碰撞，在更大的舞台上绽放光彩。</p>
</li>
<li>
<p>很多人会觉得影响力领域突出的人更有领导力，事实上，那只是一种外显的力量，真正的领导力来自深度信任的建立，凝聚人心，使众人行。所以，在领导力这件事上，反而是关系建立领域靠前的人更有优势。</p>
</li>
<li>
<p>世界上没有完全相同的两片叶子，也没有完全相同的两个人，每个人都是独一无二的存在。</p>
</li>
<li>
<p>如何找准自己的优势？</p>
<ol>
<li>哪些事会让你觉得特别有成就感？或者说，哪些事你比别人做得又快又好？</li>
<li>哪些事即使没有别人要求，你也会持续去做？</li>
<li>如果时间充裕，你也愿意努力的话，你还会擅长哪些事情？</li>
</ol>
</li>
<li>
<p>一定要记住，技术大牛不是唯一的发展之路，每个人可以有不同的选择，结合自己的优势，在具体的“场景 - 角色 - 目标”中去找到自己的最优解就是王道。</p>
</li>
<li>
<p>如何全面定义自己的职业发展目标？</p>
<ol>
<li>你是否在学习和成长？</li>
<li>你是否在对别人、公司甚至社会产生积极的影响力？</li>
<li>你的工作体验如何？</li>
<li>你的工作薪酬福利？</li>
</ol>
</li>
<li>
<p>在当下的环境中，如果企业本身发展受阻，升职加薪的游戏会越来越难玩。很多时候不是你不够优秀，而是这个土壤可能没有合适的机会。</p>
</li>
<li>
<p>但要记住一个点，40+ 职业目标如果一定要有一个核心要素的话，我会建议回归自己的内心，做自己内心认可价值的事情，给自己的职业生涯减少遗憾。</p>
</li>
<li>
<p>人的自我价值感是无法自证的。</p>
</li>
<li>
<p>接纳不是躺平，而是不与事实对抗。</p>
</li>
<li>
<p>当我们说“别无选择”的时候，往往是我们不愿意为另一种选择付出代价。</p>
</li>
<li>
<p>为自己的选择像成年人一样负责。</p>
</li>
<li>
<p>站在更长远的职业发展角度来看，一方面我们要抓住机会，另一方面要抵御风险，构建自己的职业发展护城河。</p>
</li>
<li>
<p>职业发展的机会来自不断积累职场燃料，包括可迁移的技能、有意义的经验、持久的关系。每一种都对获得长远的成功非常关键。</p>
</li>
<li>
<p>做技术是把简单问题深刻化，而做咨询要善于把复杂问题简单化，一语中的，说到别人的关键痛处。</p>
</li>
<li>
<p>技术不只是停留在代码层面，而应该深入到业务现场，真正解决真实世界的问题，做到技术赋能业务。于是“线下拜访商户”的经历也成了对我很有意义的经历。</p>
</li>
<li>
<p>很多事情我们做之前并不知道它有什么意义，而是你去做了，去体验了，才让它有了不一样的意义。</p>
</li>
<li>
<p>你自己才是最强大稳固的支持者。</p>
</li>
<li>
<p>重要的不是你有多少关系，不是你微信有多少人，而是你是否在维护这些关系，是否用心投入到一些重要关系的经营上，他们是否是你持久的关系。</p>
</li>
<li>
<p>对于帮助过我们的人表示感恩，对于合作中的伙伴永远保持尊重。</p>
</li>
<li>
<p>什么是职业发展护城河？我的理解是要具备 2 个特点。</p>
<ol>
<li>绝无仅有，就是别人很难模仿和超越，或者至少不是短时间能超越的。</li>
<li>可以不断使用和复制，并且加深加固。比如你解决代码 Bug 的能力不是护城河，但如果你能把技术人日常 Bug、故障的排查沉淀成一系列的文章，甚至形成自己的课程，那就是形成了一定的护城河。</li>
</ol>
</li>
<li>
<p>职业发展最大的护城河是“把自己活成一支队伍”，就是能脱离平台，自建体系。</p>
</li>
<li>
<p>如果你明显没有在创造价值，就请立即退出会议或挂断电话。这种离开并不是一种粗鲁行为，让别人留下来浪费时间，那才是粗鲁的。</p>
</li>
<li>
<p>工作的意义应该给社会创造一些自己认可的价值，帮助这个世界变得更好，贡献自己的哪怕一点点价值。</p>
</li>
<li>
<p>不论什么时候，记得花时间与自己呆在一起，认真去对待你的热爱，因为它是你自己非常重要的一部分。</p>
</li>
<li>
<p>当我们的人生大厦只有一根柱子时，这座大厦就是个“尖塔式”建筑，遇到不确定性很强的事就几乎没有转圜的空间，人生又谈何幸福？</p>
</li>
<li>
<p>我们还需要看到工作之外更全局的人生。</p>
<blockquote>
<p>工作不是生活的全部，它只是谋生的工具，人生的精彩不应仅仅如此而已。</p></blockquote>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 20</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-20/</link>
      <pubDate>Sat, 09 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-20/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/queens-that-can-attack-the-king/&#34;&gt;1222. 可以攻击国王的皇后&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在一个 &lt;strong&gt;下标从 0 开始&lt;/strong&gt; 的 &lt;code&gt;8 x 8&lt;/code&gt; 棋盘上，可能有多个黑皇后和一个白国王。&lt;/p&gt;
&lt;p&gt;给你一个二维整数数组 &lt;code&gt;queens&lt;/code&gt;，其中 &lt;code&gt;queens[i] = [xQueeni, yQueeni]&lt;/code&gt; 表示第 &lt;code&gt;i&lt;/code&gt; 个黑皇后在棋盘上的位置。还给你一个长度为 &lt;code&gt;2&lt;/code&gt; 的整数数组 &lt;code&gt;king&lt;/code&gt;，其中 &lt;code&gt;king = [xKing, yKing]&lt;/code&gt; 表示白国王的位置。&lt;/p&gt;
&lt;p&gt;返回 &lt;em&gt;能够直接攻击国王的黑皇后的坐标&lt;/em&gt;。你可以以 &lt;strong&gt;任何顺序&lt;/strong&gt; 返回答案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例 1：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://pic.leetcode.cn/1703052515-HqjAJq-chess1.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queens&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;king&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;上面的图示显示了三个可以直接攻击国王的皇后和三个不能攻击国王的皇后&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;（&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;用红色虚线标记&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;）。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;queensAttacktheKing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;king&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 初始化棋盘
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 将皇后的位置标记在棋盘上
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;queens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Q&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 顺时针方向遍历棋盘
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;directions&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;directions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;king&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;king&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Q&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/queens-that-can-attack-the-king/">1222. 可以攻击国王的皇后</a></p>
<p>在一个 <strong>下标从 0 开始</strong> 的 <code>8 x 8</code> 棋盘上，可能有多个黑皇后和一个白国王。</p>
<p>给你一个二维整数数组 <code>queens</code>，其中 <code>queens[i] = [xQueeni, yQueeni]</code> 表示第 <code>i</code> 个黑皇后在棋盘上的位置。还给你一个长度为 <code>2</code> 的整数数组 <code>king</code>，其中 <code>king = [xKing, yKing]</code> 表示白国王的位置。</p>
<p>返回 <em>能够直接攻击国王的黑皇后的坐标</em>。你可以以 <strong>任何顺序</strong> 返回答案。</p>
<p><strong>示例 1：</strong></p>
<p><img loading="lazy" src="https://pic.leetcode.cn/1703052515-HqjAJq-chess1.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">queens</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">]],</span> <span class="nx">king</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">上面的图示显示了三个可以直接攻击国王的皇后和三个不能攻击国王的皇后</span><span class="err">（</span><span class="nx">用红色虚线标记</span><span class="err">）。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">queensAttacktheKing</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">queens</span><span class="p">,</span> <span class="nx">king</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 初始化棋盘
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">board</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">from</span><span class="p">({</span> <span class="nx">length</span><span class="o">:</span> <span class="mi">8</span> <span class="p">},</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">from</span><span class="p">({</span> <span class="nx">length</span><span class="o">:</span> <span class="mi">8</span> <span class="p">},</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="kc">null</span><span class="p">));</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 将皇后的位置标记在棋盘上
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">queens</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">queen</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">board</span><span class="p">[</span><span class="nx">queen</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="nx">queen</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="s1">&#39;Q&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">res</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 顺时针方向遍历棋盘
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">directions</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="nx">element</span> <span class="k">of</span> <span class="nx">directions</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="p">[</span><span class="nx">dx</span><span class="p">,</span> <span class="nx">dy</span><span class="p">]</span> <span class="o">=</span> <span class="nx">element</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">x</span> <span class="o">=</span> <span class="nx">king</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="nx">dx</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">y</span> <span class="o">=</span> <span class="nx">king</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="nx">dy</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">while</span> <span class="p">(</span><span class="nx">x</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">x</span> <span class="o">&lt;</span> <span class="mi">8</span> <span class="o">&amp;&amp;</span> <span class="nx">y</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">y</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">x</span><span class="p">][</span><span class="nx">y</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;Q&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">res</span><span class="p">.</span><span class="nx">push</span><span class="p">([</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">                <span class="k">break</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="nx">x</span> <span class="o">+=</span> <span class="nx">dx</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="nx">y</span> <span class="o">+=</span> <span class="nx">dy</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">res</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>首先初始化一个<code>8*8</code>的棋盘，将皇后的位置标记在棋盘上；</li>
<li>以国王为坐标系原点，顺时针遍历国王周围的<code>8</code>个方向，每次沿着一个方向遍历到边界，如果遇到皇后，将其坐标加入结果数组；</li>
<li>返回结果数组。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240307-sora-text-to-video.html">Hollywood actor says OpenAI Sora could cause job losses</a></p>
<p>好莱坞制片人兼演员泰勒·佩里担心人工智能将导致电影行业的就业岗位减少。他举了一个个人的例子来说明这种情况正在发生。他说他计划进行8亿美元的电影工作室扩建项目，但已经推迟了这个项目的实施，等待看看人工智能的发展情况。他认为人工智能将对就业产生巨大的影响。他在接受《好莱坞报道》网站采访时表达了他的担忧。他说：“必须有一些规定来保护我们（免受人工智能的影响）。如果没有，我就看不出我们如何生存下去。”他说OpenAI的新文字转视频工具Sora让他推迟了工作室的计划，他说他的项目“因为Sora和我看到的东西而搁置了”。</p>
<p>Sora是一个新的工具，可以生成长达一分钟的视频。用户只需输入提示，软件就会创建一个视频。它还可以根据一张照片创建视频。Sora的名称来自日语单词“天空”，纽约时报说这是为了展示工具的“无限创意潜力”。泰勒·佩里表示，他理解人工智能在电影制作中的有用性，但他担心会导致就业岗位减少。他说：“这让我非常担心行业中的所有人。我立刻开始考虑到受到影响的行业中的所有人，包括演员和编辑。”他补充道：“我认为这将触及我们行业的每个角落。”</p>
<blockquote>
<p>注：我只想到《浪客剑心》里那句台词：“创造时代的并不是刀，而是使用刀的人。”</p></blockquote>
<h2 id="tip">Tip</h2>
<p>git clone fatal：发送请求时出错&hellip;</p>
<p>在使用<code>git clone</code>项目时，提示以下信息，然后一直需要提示输入用户名和密码。</p>
<pre tabindex="0"><code>fatal: 发送请求时出错。
fatal: 服务器提交了协议冲突. Section=ResponseStatusLine
</code></pre><p>从上面可知，应该是git配置上面出现了问题，所以就打算将<code>git</code>配置初始化，通过以下命令查看<code>git</code>配置文件所在位置，并将所有<code>.gitconfig</code>文件全都删除。</p>
<pre tabindex="0"><code>git config --list --show-origin
</code></pre><p>重新打开<code>Git Bash Here</code>，使用以下命令，然后配置<code>Git</code>在本地存储凭据信息，以便自动记住用户名和密码，避免每次进行<code>Git</code>操作时都需要输入凭据信息。</p>
<pre tabindex="0"><code>git config --global credential.helper store
</code></pre><p>然后只要输入一次用户名和密码，后续操作就都不需要输入了。</p>
<h2 id="share">Share</h2>
<p><a href="https://cloud.tencent.com/developer/article/1873011">研发效能度量实践者指南（万字长文）-腾讯云开发者社区-腾讯云 (tencent.com)</a></p>
<ol>
<li>“我虽然没有功劳，但是我也有苦劳。” 大部分人可能只关注自己的付出，但并不关心付出所获得的实际效果。作为管理者应该为“苦劳鼓掌，为功劳付钱”。而功劳和苦劳的体现也需要借助客观的度量数据来体现，否则团队中的成员会逐渐陷入碌碌无为的窘境。</li>
<li>管理者往往会把目标拆解为可度量的指标。但是，目标和指标常常并不是简单的全局与局部的关系。目标的拆解过程看起来很顺畅，是那么地理所当然，但是当把拆解完的指标合并起来的的时候，结果往往让人哭笑不得。有一个笑话说的是，“你问人工智能，我要找一个女朋友，像安·海瑟薇一样的大眼睛，像朱莉娅·罗伯茨一样的大嘴，喜爱运动，陆上运动、水上运动都会。人工智能就根据这几个指标给出了母青蛙的答案”。所以，指标和目标常常并不是充分必要的关系。</li>
<li>指标是为了实现目标的，但是在实践过程中，指标很多时候却是与目标为敌的。管理者常常把目标拆解为指标，时间久了以后，他就只知道指标，而忘了背后更重要的目标。如果目标是林，那么指标就是木，时间久了就是只见树木，不见森林。这个时候忘记了目标是什么的管理者就会变得非常短视。那些不懂数据的人很糟糕，而最最糟糕的人是那些只看数字的人。在福特汽车的发展史上，有一段至暗时期。那些实践经验丰富，但是没有上过商学院的的老一辈管理层被干掉，取而代之的名校管理背景的数据分析师，公司试图通过精细化的数字管理来实现业务的增长。由于这些数据分析师并不熟悉业务，所以就只能看度量数据，越是不懂业务就越依赖度量数据来做决策，最后使整个公司陷入了泥潭。软件研发也有类似的尴尬，为了更好的代码质量，所以就制定了严格的代码测试覆盖率要求。时间一久，大家都机械性的追求这个指标，而忘记了当时设立这个指标的初衷，于是就出现了高覆盖率的大量单元测试中没有断言这样尴尬的局面。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-08 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 青菜粥、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 猪红韭菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403090904953.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;本来打算说好好整理《程序员职业规划手册》课程笔记的，然后这次就不去健身房爬坡了吧，这个念头一起我就知道，又开始找借口了。其实哪怕真不去，也不见得能全身心投入到课程笔记，总有这啊那啊的事情影响，所以不要找借口，千万不要中了自己的圈套，老老实实按自己计划落实就好，不要犹豫哪怕一秒钟。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 青菜粥、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 猪红韭菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403090904953.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>本来打算说好好整理《程序员职业规划手册》课程笔记的，然后这次就不去健身房爬坡了吧，这个念头一起我就知道，又开始找借口了。其实哪怕真不去，也不见得能全身心投入到课程笔记，总有这啊那啊的事情影响，所以不要找借口，千万不要中了自己的圈套，老老实实按自己计划落实就好，不要犹豫哪怕一秒钟。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-07 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 07 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 八宝粥、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 酸菜炒猪大肠&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403080922932.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚上还是吃得太多，导致这些天体重一直没有什么变化。&lt;/li&gt;
&lt;li&gt;睡得还是太晚，我倒要看看什么时候能改正了。&lt;/li&gt;
&lt;li&gt;想明白你想要什么，无关紧要的事物，全都清空，珍惜每一分每一秒，做好当下重要的事情。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 八宝粥、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 酸菜炒猪大肠</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403080922932.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚上还是吃得太多，导致这些天体重一直没有什么变化。</li>
<li>睡得还是太晚，我倒要看看什么时候能改正了。</li>
<li>想明白你想要什么，无关紧要的事物，全都清空，珍惜每一分每一秒，做好当下重要的事情。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-06 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 06 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-06-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 鸡蛋炒肉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403080921206.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;每次在健身房跑步机上爬坡，看当天NBA比赛，时间就过得很快。后面可以考虑怎么把一个小时的时间充分利用起来。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 鸡蛋炒肉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403080921206.jpg"></p>
<h2 id="总结">总结</h2>
<p>每次在健身房跑步机上爬坡，看当天NBA比赛，时间就过得很快。后面可以考虑怎么把一个小时的时间充分利用起来。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-05 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-05-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 油豆腐炒肉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403060856518.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;只要运动，整个人精神面貌以及心态都会变得特别积极。&lt;/li&gt;
&lt;li&gt;调整饮食结构，当前吃的减半。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 油豆腐炒肉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403060856518.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>只要运动，整个人精神面貌以及心态都会变得特别积极。</li>
<li>调整饮食结构，当前吃的减半。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-03-04 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 04 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-03-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 面筋大白菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403042243349.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;想起2020年11月17日，突然开悟，要不就继续坚持跑步，要不就不干，别一天天磨磨唧唧，这阿那阿的，哪有那么多的借口，现在立马开始。&lt;/li&gt;
&lt;li&gt;中午在公司食堂，因为是自选的，所以总是容易打多，发现个小技巧，可以观察看前面的妹子怎么打的，就照搬就行，总不会打多了。&lt;/li&gt;
&lt;li&gt;回南天，下小雨，不过好在回暖了，不像之前那么冷。&lt;/li&gt;
&lt;li&gt;先能坚持每天下班去健身房爬坡一个小时，坚持一个月，然后再增加无氧的环节。&lt;/li&gt;
&lt;li&gt;能吃饱不全是第五个包子的功劳，减肥这件事也是一样的，是需要日积月累的，不是一时兴起，立马见效的。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 面筋大白菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403042243349.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>想起2020年11月17日，突然开悟，要不就继续坚持跑步，要不就不干，别一天天磨磨唧唧，这阿那阿的，哪有那么多的借口，现在立马开始。</li>
<li>中午在公司食堂，因为是自选的，所以总是容易打多，发现个小技巧，可以观察看前面的妹子怎么打的，就照搬就行，总不会打多了。</li>
<li>回南天，下小雨，不过好在回暖了，不像之前那么冷。</li>
<li>先能坚持每天下班去健身房爬坡一个小时，坚持一个月，然后再增加无氧的环节。</li>
<li>能吃饱不全是第五个包子的功劳，减肥这件事也是一样的，是需要日积月累的，不是一时兴起，立马见效的。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 19</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-19/</link>
      <pubDate>Sat, 02 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-19/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/image-smoother/&#34;&gt;661. 图片平滑器&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;图像平滑器&lt;/strong&gt; 是大小为 &lt;code&gt;3 x 3&lt;/code&gt; 的过滤器，用于对图像的每个单元格平滑处理，平滑处理后单元格的值为该单元格的平均灰度。&lt;/p&gt;
&lt;p&gt;每个单元格的 &lt;strong&gt;平均灰度&lt;/strong&gt; 定义为：该单元格自身及其周围的 8 个单元格的平均值，结果需向下取整。（即，需要计算蓝色平滑器中 9 个单元格的平均值）。&lt;/p&gt;
&lt;p&gt;如果一个单元格周围存在单元格缺失的情况，则计算平均灰度时不考虑缺失的单元格（即，需要计算红色平滑器中 4 个单元格的平均值）。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2021/05/03/smoother-grid.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;给你一个表示图像灰度的 &lt;code&gt;m x n&lt;/code&gt; 整数矩阵 &lt;code&gt;img&lt;/code&gt; ，返回对图像的每个单元格平滑处理后的图像 。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例 1:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2021/05/03/smooth-grid.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;对于点&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;对于点&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.83333333&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;对于点&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;平均&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.88888889&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;imageSmoother&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;calculate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;calculate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;totalValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;totalValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;totalValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，代码初始化了两个变量 &lt;code&gt;m&lt;/code&gt; 和 &lt;code&gt;n&lt;/code&gt;，分别表示输入二维数组 &lt;code&gt;img&lt;/code&gt; 的行数和列数。然后，创建了一个与 &lt;code&gt;img&lt;/code&gt; 相同大小的二维数组 &lt;code&gt;result&lt;/code&gt;，用于存储平滑后的图像。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/image-smoother/">661. 图片平滑器</a></p>
<p><strong>图像平滑器</strong> 是大小为 <code>3 x 3</code> 的过滤器，用于对图像的每个单元格平滑处理，平滑处理后单元格的值为该单元格的平均灰度。</p>
<p>每个单元格的 <strong>平均灰度</strong> 定义为：该单元格自身及其周围的 8 个单元格的平均值，结果需向下取整。（即，需要计算蓝色平滑器中 9 个单元格的平均值）。</p>
<p>如果一个单元格周围存在单元格缺失的情况，则计算平均灰度时不考虑缺失的单元格（即，需要计算红色平滑器中 4 个单元格的平均值）。</p>
<p><img loading="lazy" src="https://assets.leetcode.com/uploads/2021/05/03/smoother-grid.jpg"></p>
<p>给你一个表示图像灰度的 <code>m x n</code> 整数矩阵 <code>img</code> ，返回对图像的每个单元格平滑处理后的图像 。</p>
<p><strong>示例 1:</strong></p>
<p><img loading="lazy" src="https://assets.leetcode.com/uploads/2021/05/03/smooth-grid.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span><span class="nx">img</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span><span class="p">[[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="o">:</span>
</span></span><span class="line"><span class="cl"><span class="nx">对于点</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">:</span> <span class="nx">平均</span><span class="p">(</span><span class="mi">3</span><span class="o">/</span><span class="mi">4</span><span class="p">)</span> <span class="o">=</span> <span class="nx">平均</span><span class="p">(</span><span class="mf">0.75</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="nx">对于点</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">:</span> <span class="nx">平均</span><span class="p">(</span><span class="mi">5</span><span class="o">/</span><span class="mi">6</span><span class="p">)</span> <span class="o">=</span> <span class="nx">平均</span><span class="p">(</span><span class="mf">0.83333333</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="nx">对于点</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">:</span> <span class="nx">平均</span><span class="p">(</span><span class="mi">8</span><span class="o">/</span><span class="mi">9</span><span class="p">)</span> <span class="o">=</span> <span class="nx">平均</span><span class="p">(</span><span class="mf">0.88888889</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">imageSmoother</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">img</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">m</span> <span class="o">=</span> <span class="nx">img</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">img</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">m</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">map</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">m</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">result</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="o">=</span> <span class="nx">calculate</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">calculate</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">totalValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">x</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span> <span class="nx">x</span> <span class="o">&lt;=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">m</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span> <span class="nx">x</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">y</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span> <span class="nx">y</span> <span class="o">&lt;=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span> <span class="nx">y</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">totalValue</span> <span class="o">+=</span> <span class="nx">img</span><span class="p">[</span><span class="nx">x</span><span class="p">][</span><span class="nx">y</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">                <span class="nx">count</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">totalValue</span> <span class="o">/</span> <span class="nx">count</span> <span class="o">&gt;&gt;</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，代码初始化了两个变量 <code>m</code> 和 <code>n</code>，分别表示输入二维数组 <code>img</code> 的行数和列数。然后，创建了一个与 <code>img</code> 相同大小的二维数组 <code>result</code>，用于存储平滑后的图像。</p>
<p>接下来，使用两个嵌套的循环遍历 <code>img</code> 中的每个像素，通过调用内部函数 <code>calculate</code> 计算对应位置的平均值，并将结果存储到 <code>result</code> 数组中。</p>
<p><code>calculate</code> 函数用于计算给定位置 <code>(i, j)</code> 像素及其周围像素的平均值。它首先定义了两个变量 <code>totalValue</code> 和 <code>count</code>，分别用于记录像素值的总和和像素数量。</p>
<p>然后，使用两个嵌套的循环遍历 <code>(i, j)</code> 周围的像素。通过调用 <code>Math.max</code> 和 <code>Math.min</code> 函数来确保不越界，遍历的范围是 <code>(i-1, j-1)</code> 到 <code>(i+1, j+1)</code>。在每次遍历中，将遍历到的像素值累加到 <code>totalValue</code> 中，并增加 <code>count</code> 的值。</p>
<p>最后，返回 <code>totalValue / count</code> 的整数部分，使用位右移运算符 <code>&gt;&gt; 0</code> 实现。这样就得到了 <code>(i, j)</code> 像素及其周围像素的平均值。</p>
<p>整个过程在外部循环中进行，完成后返回平滑后的图像 <code>result</code>。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2403/240304-weighing-airline-passengers.html">Airline starts to weigh luggage AND passengers - Breaking News English Lesson</a></p>
<p>芬兰国家航空公司芬兰航空已经开始在从首都赫尔辛基出发的航班上对乘客进行称重。这次称重是基于自愿的原则，并且完全匿名。公司发言人表示，这项新举措是为了确保航班安全标准得到遵守。他说，任何一架飞机都不应超过安全起降的最大重量限制。这个重量包括飞机本身、燃料、托运行李和货物、机上餐饮品、水箱和乘客的重量。芬兰航空表示，航空公司无法准确知道乘客和他们的随身行李的具体重量，因此他们必须依赖航空当局提供的平均估计值。</p>
<p>自愿参加称重的乘客将在赫尔辛基机场的登机口站上称重秤。芬兰航空官员最初担心客户会强烈反对，因为体重是一个非常私人的问题。然而，在测试的第一个星期，超过1000名乘客同意接受称重。公司表示：“我们希望能够有足够多的志愿者，包括商务和休闲旅行者，以便我们可以获得尽可能准确的信息来进行重要的平衡计算。”它补充说：“目前为止，我们的客户对此反应非常积极。”一位官员表示，旅客可以“放心”，他们的体重不会与个人数据关联起来，可以“安心”。</p>
<h2 id="tip">Tip</h2>
<p>超长<code>String</code>转<code>Number</code>精度丢失问题</p>
<p>在实现算法题时，遇到最后数字相加的值和预期的值不一致，因为使用的<code>Number(str)</code>方法，有一定的区间限制，会出现精度丢失。修改为使用<code>BigInt</code>实现，可以表示任意大的整数，但是<code>BigInt</code>在表示时，后缀会有一个<code>n</code>，这样的话就没办法直接和<code>Number</code>类型的数字进行运算，只能<code>Number</code>转为<code>BigInt</code>来运算，拿到结果之后再进行下一步处理。</p>
<h2 id="share">Share</h2>
<p><a href="https://www.infoq.cn/article/Ly4avjCIkBp2gF3eqrEK">OpenAI也搞“年龄歧视”？奥特曼对话盖茨爆料：员工整体年龄偏大，是个坏兆头-InfoQ精选文章</a></p>
<p><strong>山姆·奥特曼:</strong> 大家一定经常让你提点建议，那你一般会怎么说？</p>
<p><strong>比尔·盖茨:</strong> 我觉得这世界上有很多不同形式的人才。在我的职业生涯之初，我只重视纯粹的智商，类似于工程技术的灵性。当然，这个逻辑在财务和销售领域也有体现。但事实证明这是不对的。能建立起强大团队的技能组合才是重中之重。能引导人们思考、找到想要解决的问题、建立一支融合不同人才的队伍，才是最重要的能力所在。所以我想告诉年轻人，数学和科学能力当然很重要，但如果你真想成就一番事业，那么前面说的这种才能组合必不可少。</p>
<p>你呢，你会给出什么样的建议？</p>
<p><strong>山姆·奥特曼:</strong> 我比较关注大多数人对于风险的错误理解。大家往往害怕放弃自己当前这份轻松愉快的工作，不敢奔赴自己真正想做的事情。但实际上，如果始终止步不前，那他们最终回顾一生，只会感叹自己从没有投入过、没有创办自己想象中的企业、也没试着成为一名 AI 研究者。我觉得这才是最大的风险，是让整个人生沦于平庸的风险。</p>
<p>正因为如此，我们应该明确自己的目标，同时积极询问其他人需要什么，这就是良好的开端。很多人都在以自己不想的方式虚耗时间，而我给出的建议就是试着以积极的方式解决这个问题。</p>
<p><strong>比尔·盖茨:</strong> 确实，让人们从事一份自己有成就感、满足感的工作，往往能够迸发出他们自己都难以想象的力量。</p>
<p><strong>山姆·奥特曼:</strong> 绝对是这样。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-02-29 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-29-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 公司食堂+龙脆骨炸鸡块&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403010857855.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;运动的效果真的很明显，过年刚回来真的很容易困，这些天状态立马回来了，虽然睡得晚，然后自然醒来，差不多就快6个小时，早上还是精力满满，当然最好还是不要熬夜。逐步去调整和改正吧。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 公司食堂+龙脆骨炸鸡块</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403010857855.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>运动的效果真的很明显，过年刚回来真的很容易困，这些天状态立马回来了，虽然睡得晚，然后自然醒来，差不多就快6个小时，早上还是精力满满，当然最好还是不要熬夜。逐步去调整和改正吧。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-02-28 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 小炒&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402290022571.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;最近可真的冷，才10来度，不过还是要坚持吧。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 小炒</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402290022571.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>最近可真的冷，才10来度，不过还是要坚持吧。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 18</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-18/</link>
      <pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-18/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/max-consecutive-ones/&#34;&gt;485. 最大连续 1 的个数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个二进制数组 &lt;code&gt;nums&lt;/code&gt; ， 计算其中最大连续 &lt;code&gt;1&lt;/code&gt; 的个数。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;开头的两位和最后的三位都是连续&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;所以最大连续&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;的个数是&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;3.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;findMaxConsecutiveOnes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 数组转换为字符串
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果不存在0，则直接返回数组长度即可
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果不存在1，则直接返回0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 通过0切割为各字符串数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 通过比较字符长度，从长到短排序，然后获取索引为0，即可获取最大连续1的个数的值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先讲nums数组转换为字符串，然后通过0切割成不同长度全为1的字符串数组，本来一开始打算使用Math.max(&amp;hellip;arr)实现的，但是因为Math.max()在执行时，会转换为数字进行比较，而且是number类型，在转换超长字符串111时，丢失精度，最大只能返回8，无法满足解题需求。所以，调整为使用sort来实现，当b.length - a.length时，按照字符串长度从长到短进行排序；当a.length - b.length时，按照字符串长度从短到长进行排序，然后通过索引0获取最大值maxValue，至此，maxValue.length即为所求值。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2402/240229-cold-weather-exercise.html&#34;&gt;Cold weather exercise burns more calories&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;每个人都知道锻炼对保持健康是必不可少的。它可以降低患心脏病的风险，并帮助我们保持健康的体重。它还能减轻压力，让我们更快乐。医生说，在寒冷的天气里锻炼对我们更有好处。在寒冷或寒冷的天气里慢跑甚至游泳对我们的身心健康有额外的好处。原因是寒冷给我们的心脏一个更有活力的锻炼。纽约特殊外科医院的安吉拉·佩德约诺维奇医生解释了原因。她说:“在寒冷的天气里，你的心脏必须更加努力地将血液输送到全身。随着时间的推移，这有助于提高你的耐力。”&lt;/p&gt;
&lt;p&gt;佩德约诺维奇博士说，寒冷天气的锻炼可以帮助身体以更快的速度燃烧卡路里。她说:“因为你的身体需要更努力地工作来保持核心温度，所以在寒冷的环境中锻炼实际上会增加卡路里的燃烧。”在低温下进行体育锻炼可以促进我们的新陈代谢，从而帮助我们减肥。在寒冷中，我们的新陈代谢减慢，所以我们可以保存脂肪和保暖。另一个好处是，在自然光下有助于减轻我们的压力。这对于患有季节性情感障碍(S.A.D.)的人来说尤其如此。这是一种由冬季白昼变短、变暗引起的抑郁症。这在远离赤道的人身上更为常见。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：所以为什么说减肥最佳运动方式是游泳，一方面是上面的原因，另一方面是因为不伤膝盖，但是游完泳很容易饿，这点就很需要克制了，很多人就死在这点上哈哈哈。但是，我游了一两个月之后，发现游泳不一定就是最好的，因为水的阻力，相比慢跑，还是很难持续游起来的，没有强度心率没有达标，燃脂效率很低，效果就不够明显了。有一说一，蝶泳、自由泳这些真是难学，还是慢慢来吧。叔本华也说过保持身体健康的方式，里面就有“每日需运动两小时”和“经常洗冷水浴”。好长一段时间，因为嫌太麻烦了，冬天也是洗冷水澡的，但前提是水量要大，三下五除二就洗完了，不然真受不了。不过这些年都懈怠了，有时也觉得没必要刻意过得苦哈哈的，差不多就行了。不过，不要总是让自己身体和心态处于太安逸的环境，总归是对的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;为什么&lt;code&gt;Math.max(...[ &#39;&#39;, &#39;&#39;,&#39;&#39; ])&lt;/code&gt;的值为0？&lt;/p&gt;
&lt;p&gt;这行代码使用扩展运算符将数组 &lt;code&gt;[&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;]&lt;/code&gt; 展开成参数列表，相当于 &lt;code&gt;Math.max(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;)&lt;/code&gt;。由于 &lt;code&gt;Math.max()&lt;/code&gt; 方法会将所有参数转换为数字再比较大小，空字符串会被转换为数字 0，因此最终比较的参数为 &lt;code&gt;Math.max(0, 0, 0, 0)&lt;/code&gt;。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/max-consecutive-ones/">485. 最大连续 1 的个数</a></p>
<p>给定一个二进制数组 <code>nums</code> ， 计算其中最大连续 <code>1</code> 的个数。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">开头的两位和最后的三位都是连续</span> <span class="mi">1</span> <span class="err">，</span><span class="nx">所以最大连续</span> <span class="mi">1</span> <span class="nx">的个数是</span> <span class="mf">3.</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">findMaxConsecutiveOnes</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 数组转换为字符串
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">str</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果不存在0，则直接返回数组长度即可
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;0&#39;</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果不存在1，则直接返回0
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;1&#39;</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 通过0切割为各字符串数组
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">arr</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">).</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;0&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 通过比较字符长度，从长到短排序，然后获取索引为0，即可获取最大连续1的个数的值
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">maxValue</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">sort</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">b</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">})[</span><span class="mi">0</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">maxValue</span><span class="p">.</span><span class="nx">length</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先讲nums数组转换为字符串，然后通过0切割成不同长度全为1的字符串数组，本来一开始打算使用Math.max(&hellip;arr)实现的，但是因为Math.max()在执行时，会转换为数字进行比较，而且是number类型，在转换超长字符串111时，丢失精度，最大只能返回8，无法满足解题需求。所以，调整为使用sort来实现，当b.length - a.length时，按照字符串长度从长到短进行排序；当a.length - b.length时，按照字符串长度从短到长进行排序，然后通过索引0获取最大值maxValue，至此，maxValue.length即为所求值。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2402/240229-cold-weather-exercise.html">Cold weather exercise burns more calories</a></p>
<p>每个人都知道锻炼对保持健康是必不可少的。它可以降低患心脏病的风险，并帮助我们保持健康的体重。它还能减轻压力，让我们更快乐。医生说，在寒冷的天气里锻炼对我们更有好处。在寒冷或寒冷的天气里慢跑甚至游泳对我们的身心健康有额外的好处。原因是寒冷给我们的心脏一个更有活力的锻炼。纽约特殊外科医院的安吉拉·佩德约诺维奇医生解释了原因。她说:“在寒冷的天气里，你的心脏必须更加努力地将血液输送到全身。随着时间的推移，这有助于提高你的耐力。”</p>
<p>佩德约诺维奇博士说，寒冷天气的锻炼可以帮助身体以更快的速度燃烧卡路里。她说:“因为你的身体需要更努力地工作来保持核心温度，所以在寒冷的环境中锻炼实际上会增加卡路里的燃烧。”在低温下进行体育锻炼可以促进我们的新陈代谢，从而帮助我们减肥。在寒冷中，我们的新陈代谢减慢，所以我们可以保存脂肪和保暖。另一个好处是，在自然光下有助于减轻我们的压力。这对于患有季节性情感障碍(S.A.D.)的人来说尤其如此。这是一种由冬季白昼变短、变暗引起的抑郁症。这在远离赤道的人身上更为常见。</p>
<blockquote>
<p>注：所以为什么说减肥最佳运动方式是游泳，一方面是上面的原因，另一方面是因为不伤膝盖，但是游完泳很容易饿，这点就很需要克制了，很多人就死在这点上哈哈哈。但是，我游了一两个月之后，发现游泳不一定就是最好的，因为水的阻力，相比慢跑，还是很难持续游起来的，没有强度心率没有达标，燃脂效率很低，效果就不够明显了。有一说一，蝶泳、自由泳这些真是难学，还是慢慢来吧。叔本华也说过保持身体健康的方式，里面就有“每日需运动两小时”和“经常洗冷水浴”。好长一段时间，因为嫌太麻烦了，冬天也是洗冷水澡的，但前提是水量要大，三下五除二就洗完了，不然真受不了。不过这些年都懈怠了，有时也觉得没必要刻意过得苦哈哈的，差不多就行了。不过，不要总是让自己身体和心态处于太安逸的环境，总归是对的。</p></blockquote>
<h2 id="tip">Tip</h2>
<p>为什么<code>Math.max(...[ '', '','' ])</code>的值为0？</p>
<p>这行代码使用扩展运算符将数组 <code>[&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;]</code> 展开成参数列表，相当于 <code>Math.max(&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;)</code>。由于 <code>Math.max()</code> 方法会将所有参数转换为数字再比较大小，空字符串会被转换为数字 0，因此最终比较的参数为 <code>Math.max(0, 0, 0, 0)</code>。</p>
<p>在 JavaScript 中，空字符串会被转换为数字 0 是因为在进行字符串转换为数字的过程中，如果字符串包含非数字字符（除了符号、小数点等特殊字符），则会被转换为数字 0。当 JavaScript 引擎在转换字符串为数字时，会按照以下规则进行处理：</p>
<ol>
<li>如果字符串中包含非数字字符（除了符号、小数点等特殊字符），则转换结果为 NaN（Not-a-Number）。</li>
<li>如果字符串为空字符串或只包含空格字符，则转换结果为数字 0。</li>
<li>如果字符串表示整数或浮点数形式的数字（例如 &ldquo;123&rdquo;、&ldquo;3.14&rdquo;），则会按照对应的数字进行转换。</li>
</ol>
<p>因此，空字符串会被转换为数字 0 是因为它不包含任何数字字符，符合规则2的转换规则。</p>
<h2 id="share">Share</h2>
<p><a href="https://www.infoq.cn/article/AwaLR90KhsuAIwgamEvo">代码人生攻略：程序员们如何为自己编织一份明朗未来？— InfoQ精选文章</a></p>
<p>主要分享了对大模型时代的变革、生成式AI对各技术领域的影响、大模型时代。程序员的“生存法则”变了吗？、巨头碾压，大模型小创企业有核心壁垒吗？从事开源项目的收益问题、互联网公司是否还需要CTO等问题的讨论，值得一看。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-02-27 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 27 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-02-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 瘦肉粥、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 杀猪粉+新疆羊肉串&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;爬坡，5.07公里，56分钟。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;控制饮食，坚持运动，日积月累，方见成效。&lt;/li&gt;
&lt;li&gt;最近写日记的格式变为做对、做错、改正，我觉得运动日记也可以按这个格式来写，分析总结当天在运动上方方面面的问题，利于后续的调整和完善。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 瘦肉粥、青菜、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 杀猪粉+新疆羊肉串</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<p>爬坡，5.07公里，56分钟。</p>
<h2 id="总结">总结</h2>
<ol>
<li>控制饮食，坚持运动，日积月累，方见成效。</li>
<li>最近写日记的格式变为做对、做错、改正，我觉得运动日记也可以按这个格式来写，分析总结当天在运动上方方面面的问题，利于后续的调整和完善。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 17</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-17/</link>
      <pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-17/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/add-to-array-form-of-integer/&#34;&gt;989. 数组形式的整数加法&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;整数的 &lt;strong&gt;数组形式&lt;/strong&gt; &lt;code&gt;num&lt;/code&gt; 是按照从左到右的顺序表示其数字的数组。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例如，对于 &lt;code&gt;num = 1321&lt;/code&gt; ，数组形式是 &lt;code&gt;[1,3,2,1]&lt;/code&gt; 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;给定 &lt;code&gt;num&lt;/code&gt; ，整数的 &lt;strong&gt;数组形式&lt;/strong&gt; ，和整数 &lt;code&gt;k&lt;/code&gt; ，返回 &lt;em&gt;整数 &lt;code&gt;num + k&lt;/code&gt; 的 &lt;strong&gt;数组形式&lt;/strong&gt;&lt;/em&gt; 。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;34&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1200&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;34&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1234&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;addToArrayForm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;numStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;outStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;outNum&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;numStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;numStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;outStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;BigInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;numStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;BigInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;outStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;outStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;n&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;outNum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;outStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;outNum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，先将num数组转为数字，然后再和k相加，最后再次遍历为数组即可。在实现过程中遇到Number转换超长String会出现精度丢失问题，使用BigInt实现，但是因为BigInt格式后缀会有n，所以在转换为数组时，判断去掉n。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2402/240226-decimal-point.html&#34;&gt;Decimal point 150 years older than thought&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一项新发现令全球数学家兴奋不已。最近出土的文件显示，生活在威尼斯的商人乔瓦尼·比安奇尼(Giovanni Bianchini)在14世纪40年代的记录中使用了一个小数点。历史学家对这一重大发现给予了高度评价，因为它意味着小数点的使用比之前认为的要早150年。比安奇尼是一位敏锐的天文学家，他对自己观测到的天象进行了详细标注，并提供了基于恒星和行星排列计算占星术预测给威尼斯人民。格伦·范·布鲁梅伦博士注意到比安奇尼在1441年至1450年间一篇论文中使用了小数点。如今，小数点已成为我们生活中不可或缺的一部分，并且看起来已经被使用了几千年。历史学家指出，在20世纪90年代，伊斯兰世界就开始采用某种形式上等同于小数点功能的符号。很可能是由于比安奇尼曾去过中东并受到那里学者们影响所致，这些学者在许多数学概念形成方面扮演着关键角色。其他历史证据表明，在12世纪中国知识分子也采用过某种形式上等同于小数点功能的符号。直到1593年才有确切记录显示最早明确使用小数点系统，当时德国数学家克里斯托夫·克拉维斯在其天文研究中应用了该系统。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;在windows环境使用git安装nvm&lt;/p&gt;
&lt;p&gt;因公司电脑做了软件安装限制，导致不能使用.exe方式配置nvm工具，但是平时项目开发中，经常需对老项目使用不同的node版本，所以这个工具还是很重要的。确定研究一下有没有其他方式配置nvm，在github上看到有&lt;a href=&#34;https://github.com/nvm-sh/nvm?tab=readme-ov-file#git-install&#34;&gt;Git Install&lt;/a&gt;章节，用法是要git clone项目源码下来，然后配置，但是现在github一直clone不了项目，所以就去gitee上看了一下，发现有这个仓库&lt;a href=&#34;https://gitee.com/RubyMetric/nvm-cn?_from=gitee_search&#34;&gt;nvm-cn: 🧊 nvm国内安装工具 (gitee.com)&lt;/a&gt;，用法很简单，只需要在&lt;code&gt;Git Bash Here&lt;/code&gt;上使用以下命令即可安装：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/add-to-array-form-of-integer/">989. 数组形式的整数加法</a></p>
<p>整数的 <strong>数组形式</strong> <code>num</code> 是按照从左到右的顺序表示其数字的数组。</p>
<ul>
<li>例如，对于 <code>num = 1321</code> ，数组形式是 <code>[1,3,2,1]</code> 。</li>
</ul>
<p>给定 <code>num</code> ，整数的 <strong>数组形式</strong> ，和整数 <code>k</code> ，返回 <em>整数 <code>num + k</code> 的 <strong>数组形式</strong></em> 。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">num</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span> <span class="nx">k</span> <span class="o">=</span> <span class="mi">34</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="mi">1200</span> <span class="o">+</span> <span class="mi">34</span> <span class="o">=</span> <span class="mi">1234</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">addToArrayForm</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">numStr</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">outStr</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">outNum</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">num</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">numStr</span> <span class="o">=</span> <span class="nx">numStr</span> <span class="o">+</span> <span class="nx">num</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="nx">outStr</span> <span class="o">=</span> <span class="nx">BigInt</span><span class="p">(</span><span class="nx">numStr</span><span class="p">)</span> <span class="o">+</span> <span class="nx">BigInt</span><span class="p">(</span><span class="nx">k</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">outStr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">outStr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">!==</span> <span class="s1">&#39;n&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">outNum</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nb">Number</span><span class="p">(</span><span class="nx">outStr</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">outNum</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，先将num数组转为数字，然后再和k相加，最后再次遍历为数组即可。在实现过程中遇到Number转换超长String会出现精度丢失问题，使用BigInt实现，但是因为BigInt格式后缀会有n，所以在转换为数组时，判断去掉n。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2402/240226-decimal-point.html">Decimal point 150 years older than thought</a></p>
<p>一项新发现令全球数学家兴奋不已。最近出土的文件显示，生活在威尼斯的商人乔瓦尼·比安奇尼(Giovanni Bianchini)在14世纪40年代的记录中使用了一个小数点。历史学家对这一重大发现给予了高度评价，因为它意味着小数点的使用比之前认为的要早150年。比安奇尼是一位敏锐的天文学家，他对自己观测到的天象进行了详细标注，并提供了基于恒星和行星排列计算占星术预测给威尼斯人民。格伦·范·布鲁梅伦博士注意到比安奇尼在1441年至1450年间一篇论文中使用了小数点。如今，小数点已成为我们生活中不可或缺的一部分，并且看起来已经被使用了几千年。历史学家指出，在20世纪90年代，伊斯兰世界就开始采用某种形式上等同于小数点功能的符号。很可能是由于比安奇尼曾去过中东并受到那里学者们影响所致，这些学者在许多数学概念形成方面扮演着关键角色。其他历史证据表明，在12世纪中国知识分子也采用过某种形式上等同于小数点功能的符号。直到1593年才有确切记录显示最早明确使用小数点系统，当时德国数学家克里斯托夫·克拉维斯在其天文研究中应用了该系统。</p>
<h2 id="tip">Tip</h2>
<p>在windows环境使用git安装nvm</p>
<p>因公司电脑做了软件安装限制，导致不能使用.exe方式配置nvm工具，但是平时项目开发中，经常需对老项目使用不同的node版本，所以这个工具还是很重要的。确定研究一下有没有其他方式配置nvm，在github上看到有<a href="https://github.com/nvm-sh/nvm?tab=readme-ov-file#git-install">Git Install</a>章节，用法是要git clone项目源码下来，然后配置，但是现在github一直clone不了项目，所以就去gitee上看了一下，发现有这个仓库<a href="https://gitee.com/RubyMetric/nvm-cn?_from=gitee_search">nvm-cn: 🧊 nvm国内安装工具 (gitee.com)</a>，用法很简单，只需要在<code>Git Bash Here</code>上使用以下命令即可安装：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">bash -c <span class="s2">&#34;</span><span class="k">$(</span>curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh<span class="k">)</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>然后验证一下，使用命令<code>nvm ls</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402011112106.png"></p>
<p>使用<code>nvm</code>命令时只能在<code>Git Bash Here</code>上使用，在<code>Windows PowerShell</code>和<code>CMD</code>命令窗口是使用不了的。</p>
<p>指定默认的Node版本，使用一下命令：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">nvm</span> <span class="nx">alias</span> <span class="k">default</span> <span class="mf">16.14</span><span class="p">.</span><span class="mi">2</span>
</span></span></code></pre></div><h2 id="share">Share</h2>
<p>技术的发展是永无止境的，脚踏实地才能遥望星空。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 16</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-16/</link>
      <pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-16/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/available-captures-for-rook/&#34;&gt;999. 可以被一步捕获的棋子数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在一个 8 x 8 的棋盘上，有一个白色的车（&lt;code&gt;Rook&lt;/code&gt;），用字符 &lt;code&gt;&#39;R&#39;&lt;/code&gt; 表示。棋盘上还可能存在空方块，白色的象（&lt;code&gt;Bishop&lt;/code&gt;）以及黑色的卒（&lt;code&gt;pawn&lt;/code&gt;），分别用字符 &lt;code&gt;&#39;.&#39;&lt;/code&gt;，&lt;code&gt;&#39;B&#39;&lt;/code&gt; 和 &lt;code&gt;&#39;p&#39;&lt;/code&gt; 表示。不难看出，大写字符表示的是白棋，小写字符表示的是黑棋。&lt;/p&gt;
&lt;p&gt;车按国际象棋中的规则移动。东，西，南，北四个基本方向任选其一，然后一直向选定的方向移动，直到满足下列四个条件之一：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;棋手选择主动停下来。&lt;/li&gt;
&lt;li&gt;棋子因到达棋盘的边缘而停下。&lt;/li&gt;
&lt;li&gt;棋子移动到某一方格来捕获位于该方格上敌方（黑色）的卒，停在该方格内。&lt;/li&gt;
&lt;li&gt;车不能进入/越过已经放有其他友方棋子（白色的象）的方格，停在友方棋子前。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你现在可以控制车移动一次，请你统计有多少敌方的卒处于你的捕获范围内（即，可以被一步捕获的棋子数）。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/23/1253_example_1_improved.PNG&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;在本例中&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;车能够捕获所有的卒&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;numRookCaptures&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 定义标记outer，用于break中止外层for循环，结束获取R位置的流程。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;outer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;outer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;board&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/available-captures-for-rook/">999. 可以被一步捕获的棋子数</a></p>
<p>在一个 8 x 8 的棋盘上，有一个白色的车（<code>Rook</code>），用字符 <code>'R'</code> 表示。棋盘上还可能存在空方块，白色的象（<code>Bishop</code>）以及黑色的卒（<code>pawn</code>），分别用字符 <code>'.'</code>，<code>'B'</code> 和 <code>'p'</code> 表示。不难看出，大写字符表示的是白棋，小写字符表示的是黑棋。</p>
<p>车按国际象棋中的规则移动。东，西，南，北四个基本方向任选其一，然后一直向选定的方向移动，直到满足下列四个条件之一：</p>
<ul>
<li>棋手选择主动停下来。</li>
<li>棋子因到达棋盘的边缘而停下。</li>
<li>棋子移动到某一方格来捕获位于该方格上敌方（黑色）的卒，停在该方格内。</li>
<li>车不能进入/越过已经放有其他友方棋子（白色的象）的方格，停在友方棋子前。</li>
</ul>
<p>你现在可以控制车移动一次，请你统计有多少敌方的卒处于你的捕获范围内（即，可以被一步捕获的棋子数）。</p>
<p><img loading="lazy" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/23/1253_example_1_improved.PNG"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="p">[</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;p&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;R&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;p&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;p&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">,</span><span class="s2">&#34;.&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">在本例中</span><span class="err">，</span><span class="nx">车能够捕获所有的卒</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">numRookCaptures</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">board</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">x</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">y</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 定义标记outer，用于break中止外层for循环，结束获取R位置的流程。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">outer</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">board</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">x</span> <span class="o">=</span> <span class="nx">j</span>
</span></span><span class="line"><span class="cl">                <span class="nx">y</span> <span class="o">=</span> <span class="nx">i</span>
</span></span><span class="line"><span class="cl">                <span class="k">break</span> <span class="nx">outer</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">x</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">y</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;B&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">y</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;p&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">x</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">y</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;B&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">y</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;p&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">y</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">x</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;B&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">x</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;p&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">y</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">x</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;B&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">board</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">x</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;p&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">count</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">count</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，我们需要找到<code>R</code>的位置，然后从该位置开始，依次向上、下、左、右四个方向遍历。我们可以定义一个变量<code>count</code>来记录出现<code>p</code>的有效次数。在遍历过程中，我们需要判断是否存在<code>B</code>，如果存在，就停止该方向的遍历。如果遇到有效的<code>p</code>，就将计数<code>count</code>加1，并停止该方向的遍历。最终，返回<code>count</code>的值，即为题目所求的次数。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401311336693.png"></p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2401/240122-fire-ants.html">Deadly fire ants spreading across Australia</a></p>
<p>澳大利亚独特的生态系统正受到一种入侵和致命物种——红火蚁的威胁。这种微小的蚂蚁原产于南美洲，但在过去一个世纪里已经传播到世界各地。它是世界上最具入侵性的生物之一。它对农作物和农业用地造成了广泛的破坏。它还杀死了大量的本地昆虫和其他动物，包括牲畜。蚂蚁的剧痛和毒液叮咬会导致人类严重的过敏反应。它还可能导致致命的过敏性休克。农业部长的一位女发言人称火蚁是“一种可怕的入侵性超级害虫，会造成严重的社会、经济和环境危害”。</p>
<p>2001年，红火蚁首次在澳大利亚被发现。自那时以来，它们在很大程度上被限制在昆士兰州内。然而，澳大利亚入侵物种委员会(ISC)表示，这些蚂蚁正在洪水中传播到全国各地。它们成千上万地相互粘着，在暴风雨的洪水中形成“筏子”。ISC的一份声明称：“火蚁在降雨前后更加活跃，可以形成巨大的漂浮筏，随着水流移动，在新地区建立立足点。”它补充说：“我们的团队专注于限制进一步的传播。”ISC警告说，如果目前的爆发不得到控制，火蚁将到达“澳大利亚的每一个角落”。</p>
<h2 id="tip">Tip</h2>
<p>Package.json中依赖库版本号前缀^和~的区别？</p>
<p>在了解<code>^</code>和<code>~</code>区别之前，我们需要在<a href="https://semver.org/lang/zh-CN/">语义化版本 2.0.0 | Semantic Versioning (semver.org)</a>上了解项目版本号规范。根据语义化版本规范，一个版本号由三个数字组成，用点号分隔，格式为&quot;主版本号.次版本号.补丁版本号&quot;，例如版本号2.5.6。以下是对每个数字的含义：</p>
<ol>
<li>主版本号：当进行大规模的API变更或不兼容的改动时，增加主版本号。这意味着新版本可能会导致现有代码无法正常工作。</li>
<li>次版本号：当添加新功能，但保持向后兼容时，增加次版本号。新版本引入的改动应该可以与旧版本的代码兼容。</li>
<li>补丁版本号：当进行小的bug修复或性能优化等不影响现有功能的改动时，增加补丁版本号。补丁版本号的更新应该不会引入新的功能或破坏现有功能。</li>
</ol>
<p>在package.json文件中，dependencies字段用于指定项目所依赖的包及其版本。在这些依赖项的版本号中：</p>
<ol>
<li><code>^</code>符号：允许安装指定版本的最新次要版本，但不包括更高的主要版本。例如，如果依赖项的版本号为^1.2.3，那么运行npm install命令时，将安装1.2.3版本的最新次要版本，例如1.2.4、1.3.0，但不会安装2.0.0版本。</li>
<li><code>~</code>符号：允许安装指定版本的最新补丁版本，但不包括更高的次要版本。例如，如果依赖项的版本号为~1.2.3，那么运行npm install命令时，将安装1.2.3版本的最新补丁版本，例如1.2.4，但不会安装1.3.0版本。</li>
</ol>
<p>总结起来，<code>^</code>符号允许安装指定版本的最新次要版本，而<code>~</code>符号允许安装指定版本的最新补丁版本。</p>
<h2 id="share">Share</h2>
<ol>
<li>在给任何事情下结论之前，需要做下调研，依据事实和数据来判断，不能空口无凭。</li>
<li>发脾气不是你的目的，解决问题才是，不要让愤怒影响到自己的判断。</li>
<li>如果管人是那么简单的事情，那么管理也不会是一门复杂的学科，如果团队里的人都如此合你心意，什么工作都做得很好，那还要你干嘛，你不就是有和没有都是一样了么？容人所短，用其所长。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 15</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-15/</link>
      <pubDate>Mon, 22 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-15/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/reshape-the-matrix/&#34;&gt;566. 重塑矩阵&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 MATLAB 中，有一个非常有用的函数 &lt;code&gt;reshape&lt;/code&gt; ，它可以将一个 &lt;code&gt;m x n&lt;/code&gt; 矩阵重塑为另一个大小不同（&lt;code&gt;r x c&lt;/code&gt;）的新矩阵，但保留其原始数据。&lt;/p&gt;
&lt;p&gt;给你一个由二维数组 &lt;code&gt;mat&lt;/code&gt; 表示的 &lt;code&gt;m x n&lt;/code&gt; 矩阵，以及两个正整数 &lt;code&gt;r&lt;/code&gt; 和 &lt;code&gt;c&lt;/code&gt; ，分别表示想要的重构的矩阵的行数和列数。&lt;/p&gt;
&lt;p&gt;重构后的矩阵需要将原始矩阵的所有元素以相同的 &lt;strong&gt;行遍历顺序&lt;/strong&gt; 填充。&lt;/p&gt;
&lt;p&gt;如果具有给定参数的 &lt;code&gt;reshape&lt;/code&gt; 操作是可行且合理的，则输出新的重塑矩阵；否则，输出原始矩阵。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2021/04/24/reshape1-grid.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;matrixReshape&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;allNums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;allNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;allNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;allNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;resultValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;allNums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;splice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultValue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;首先，我们可以定义一个空数组&lt;code&gt;allNums&lt;/code&gt;来存储&lt;code&gt;mat&lt;/code&gt;矩阵中的所有元素。然后，我们需要判断&lt;code&gt;allNums&lt;/code&gt;的长度是否等于重塑后矩阵的行数&lt;code&gt;r&lt;/code&gt;乘以列数&lt;code&gt;c&lt;/code&gt;。如果不相等，说明无法进行重塑操作，直接返回原始矩阵&lt;code&gt;mat&lt;/code&gt;。如果相等，我们可以定义一个空数组&lt;code&gt;result&lt;/code&gt;来存储重塑后的矩阵。接下来，我们可以通过列数&lt;code&gt;c&lt;/code&gt;的值，使用数组&lt;code&gt;splice(startIndex, endIndex)&lt;/code&gt;方法对&lt;code&gt;allNums&lt;/code&gt;进行截取，直到&lt;code&gt;allNums&lt;/code&gt;的长度为&lt;code&gt;0&lt;/code&gt;。在每次截取后，将截取的部分作为一行加入&lt;code&gt;resultValue&lt;/code&gt;数组中。完成截取后，我们可以返回&lt;code&gt;resultValue&lt;/code&gt;作为重塑后的矩阵。一开始没看完题目描述最后一句，导致解题出现偏差。本来很简单的题目，自己想复杂了。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2401/240118-trillionaire.html&#34;&gt;World will see first trillionaire in next 10 years&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一首著名的歌曲和一个问答节目问道：“谁想成为百万富翁？”几十年来，拥有一百万美元是超级富豪的目标。现在，目标变成了十亿美元。反贫困慈善机构乐施会刚刚发布了一份报告，称未来十年内世界将诞生第一个万亿富翁。一万亿是一个巨大的数字和难以置信的金额。它由1后面跟着12个0组成。一万亿等于一百万个一百万美元。该慈善机构表示，贫富差距正在扩大，并指出自新冠疫情爆发以来这种差距已经“被加速”。报告还说：“我们将在未来十年内产生一个万亿富翁，而要消除贫困，则需要200多年。”&lt;/p&gt;
&lt;p&gt;乐施会在世界经济论坛的年度会议上谈到了不平等问题。作为例子，它表示自2020年以来全球最富有的五个人的财富增长了114% 。该慈善机构发言人说：“前五位亿万富翁们的财富增加了两倍。另一方面，近50亿人变得更穷。”特斯拉CEO埃隆·马斯克是地球上最富有的人。他个人身价接近2500亿美元。AP新闻社称：“如果某人真正达到那个万亿元里程碑，他或她将与油气资源丰厚的沙特阿拉伯具有相同价值。”乐施会表示现在世界正处于“分裂之初”，呼吁开启“公共行动新时代”以缩小财富差距。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：作为快船队小卡球迷，不得不说，这两年快船老板鲍尔默确实赚麻了。&lt;img alt=&#34;14EE39EE&#34; loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401221553947.gif&#34;&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;使用npm install package@latest 时，安装的是V1.6.0还是V1.6.1-beta ？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/reshape-the-matrix/">566. 重塑矩阵</a></p>
<p>在 MATLAB 中，有一个非常有用的函数 <code>reshape</code> ，它可以将一个 <code>m x n</code> 矩阵重塑为另一个大小不同（<code>r x c</code>）的新矩阵，但保留其原始数据。</p>
<p>给你一个由二维数组 <code>mat</code> 表示的 <code>m x n</code> 矩阵，以及两个正整数 <code>r</code> 和 <code>c</code> ，分别表示想要的重构的矩阵的行数和列数。</p>
<p>重构后的矩阵需要将原始矩阵的所有元素以相同的 <strong>行遍历顺序</strong> 填充。</p>
<p>如果具有给定参数的 <code>reshape</code> 操作是可行且合理的，则输出新的重塑矩阵；否则，输出原始矩阵。</p>
<p><img alt="img" loading="lazy" src="https://assets.leetcode.com/uploads/2021/04/24/reshape1-grid.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">mat</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]],</span> <span class="nx">r</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">c</span> <span class="o">=</span> <span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">matrixReshape</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">mat</span><span class="p">,</span> <span class="nx">r</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">allNums</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">mat</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">mat</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">allNums</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">mat</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">allNums</span><span class="p">.</span><span class="nx">length</span> <span class="o">!==</span> <span class="nx">r</span> <span class="o">*</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">mat</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">resultValue</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">while</span> <span class="p">(</span><span class="nx">allNums</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">resultValue</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">allNums</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">c</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">resultValue</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先，我们可以定义一个空数组<code>allNums</code>来存储<code>mat</code>矩阵中的所有元素。然后，我们需要判断<code>allNums</code>的长度是否等于重塑后矩阵的行数<code>r</code>乘以列数<code>c</code>。如果不相等，说明无法进行重塑操作，直接返回原始矩阵<code>mat</code>。如果相等，我们可以定义一个空数组<code>result</code>来存储重塑后的矩阵。接下来，我们可以通过列数<code>c</code>的值，使用数组<code>splice(startIndex, endIndex)</code>方法对<code>allNums</code>进行截取，直到<code>allNums</code>的长度为<code>0</code>。在每次截取后，将截取的部分作为一行加入<code>resultValue</code>数组中。完成截取后，我们可以返回<code>resultValue</code>作为重塑后的矩阵。一开始没看完题目描述最后一句，导致解题出现偏差。本来很简单的题目，自己想复杂了。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2401/240118-trillionaire.html">World will see first trillionaire in next 10 years</a></p>
<p>一首著名的歌曲和一个问答节目问道：“谁想成为百万富翁？”几十年来，拥有一百万美元是超级富豪的目标。现在，目标变成了十亿美元。反贫困慈善机构乐施会刚刚发布了一份报告，称未来十年内世界将诞生第一个万亿富翁。一万亿是一个巨大的数字和难以置信的金额。它由1后面跟着12个0组成。一万亿等于一百万个一百万美元。该慈善机构表示，贫富差距正在扩大，并指出自新冠疫情爆发以来这种差距已经“被加速”。报告还说：“我们将在未来十年内产生一个万亿富翁，而要消除贫困，则需要200多年。”</p>
<p>乐施会在世界经济论坛的年度会议上谈到了不平等问题。作为例子，它表示自2020年以来全球最富有的五个人的财富增长了114% 。该慈善机构发言人说：“前五位亿万富翁们的财富增加了两倍。另一方面，近50亿人变得更穷。”特斯拉CEO埃隆·马斯克是地球上最富有的人。他个人身价接近2500亿美元。AP新闻社称：“如果某人真正达到那个万亿元里程碑，他或她将与油气资源丰厚的沙特阿拉伯具有相同价值。”乐施会表示现在世界正处于“分裂之初”，呼吁开启“公共行动新时代”以缩小财富差距。</p>
<blockquote>
<p>注：作为快船队小卡球迷，不得不说，这两年快船老板鲍尔默确实赚麻了。<img alt="14EE39EE" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401221553947.gif"></p></blockquote>
<h2 id="tip">Tip</h2>
<p>使用npm install package@latest 时，安装的是V1.6.0还是V1.6.1-beta ？</p>
<p>在部门搭建私有<code>npm</code>仓库，对一些组件库和工具库进行管理，但是出现有同事使用<code>package@latest</code>下载到了<code>beta</code>版本，研究了<code>npm</code>发包机制知道问题出在哪里，因为在发布版本时，都是使用<code>npm publish</code>命令的，所以事实上<code>V1.6.0-beta</code>只是名称改为了<code>-beta</code>而已，要解决这个问题，后续beta版本发布时，需要使用命令<code>npm publish --tag beta</code>。官方文档如下<a href="https://docs.npmjs.com/adding-dist-tags-to-packages">Adding dist-tags to packages | npm Docs (npmjs.com)</a>。</p>
<h2 id="share">Share</h2>
<p>奥卡姆的剃刀定律：在诸多相互竞争的理论中，选择假设最小的，也即最简单的可能就是最正确的，切勿浪费较多东西去做那些用较少东西同样可以做好的事情。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 14</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-14/</link>
      <pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-14/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/&#34;&gt;1450. 在既定时间做作业的学生人数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你两个整数数组 &lt;code&gt;startTime&lt;/code&gt;（开始时间）和 &lt;code&gt;endTime&lt;/code&gt;（结束时间），并指定一个整数 &lt;code&gt;queryTime&lt;/code&gt; 作为查询时间。&lt;/p&gt;
&lt;p&gt;已知，第 &lt;code&gt;i&lt;/code&gt; 名学生在 &lt;code&gt;startTime[i]&lt;/code&gt; 时开始写作业并于 &lt;code&gt;endTime[i]&lt;/code&gt; 时完成作业。&lt;/p&gt;
&lt;p&gt;请返回在查询时间 &lt;code&gt;queryTime&lt;/code&gt; 时正在做作业的学生人数。形式上，返回能够使 &lt;code&gt;queryTime&lt;/code&gt; 处于区间 &lt;code&gt;[startTime[i], endTime[i]]&lt;/code&gt;（含）的学生人数。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;示例 1：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输入：startTime = [1,2,3], endTime = [3,2,7], queryTime = 4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出：1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;解释：一共有 3 名学生。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第一名学生在时间 1 开始写作业，并于时间 3 完成作业，在时间 4 没有处于做作业的状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第二名学生在时间 2 开始写作业，并于时间 2 完成作业，在时间 4 没有处于做作业的状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第三名学生在时间 3 开始写作业，预计于时间 7 完成作业，这是是唯一一名在时间 4 时正在做作业的学生。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;busyStudent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;startTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;endTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;queryTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;doHomeworkCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;startTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;queryTime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;startTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;queryTime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;endTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;doHomeworkCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;doHomeworkCount&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/">1450. 在既定时间做作业的学生人数</a></p>
<p>给你两个整数数组 <code>startTime</code>（开始时间）和 <code>endTime</code>（结束时间），并指定一个整数 <code>queryTime</code> 作为查询时间。</p>
<p>已知，第 <code>i</code> 名学生在 <code>startTime[i]</code> 时开始写作业并于 <code>endTime[i]</code> 时完成作业。</p>
<p>请返回在查询时间 <code>queryTime</code> 时正在做作业的学生人数。形式上，返回能够使 <code>queryTime</code> 处于区间 <code>[startTime[i], endTime[i]]</code>（含）的学生人数。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">示例 1：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">输入：startTime = [1,2,3], endTime = [3,2,7], queryTime = 4
</span></span><span class="line"><span class="cl">输出：1
</span></span><span class="line"><span class="cl">解释：一共有 3 名学生。
</span></span><span class="line"><span class="cl">第一名学生在时间 1 开始写作业，并于时间 3 完成作业，在时间 4 没有处于做作业的状态。
</span></span><span class="line"><span class="cl">第二名学生在时间 2 开始写作业，并于时间 2 完成作业，在时间 4 没有处于做作业的状态。
</span></span><span class="line"><span class="cl">第三名学生在时间 3 开始写作业，预计于时间 7 完成作业，这是是唯一一名在时间 4 时正在做作业的学生。
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">busyStudent</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">startTime</span><span class="p">,</span> <span class="nx">endTime</span><span class="p">,</span> <span class="nx">queryTime</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">doHomeworkCount</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">startTime</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">queryTime</span> <span class="o">&gt;=</span> <span class="nx">startTime</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">queryTime</span> <span class="o">&lt;=</span> <span class="nx">endTime</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">doHomeworkCount</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">doHomeworkCount</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>因为开始时间和结束时间是一一对应的，所以只需要使用startTime来遍历即可，然后判断queryTime的值是否处于startTime和endTime之间，如果是就+1。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2401/240111-purple-rain-prince.html">Prince&rsquo;s &lsquo;Purple Rain&rsquo; movie to become a musical</a></p>
<p>1984年的电影《Purple Rain》将被改编成百老汇音乐剧，上演地点在纽约。这部电影是基于艺术家Prince创作的同名专辑而制作的，他也在其中担任主演。这应该会鼓励人们去观看音乐剧版本。新音乐剧的制片人对他们的项目感到兴奋。他们表示：“自从Prince传世经典电影问世已经过去了40年，我们认为没有比这个舞台改编更适合用来致敬Prince和他留下的遗产。” 他们还补充说：“我们迫不及待地想让新一代人重新发现《Purple Rain》，再次体验它那强大的力量，但这一次是现场版。”
《Purple Rain》电影凭借最佳原创歌曲配乐获得了奥斯卡金像奖。许多评论家认为《Purple Rain》是最伟大的音乐电影之一。《Purple Rain》专辑连续24周位居美国公告牌200强榜首，并在该榜单上停留了167周之久。其中包含了热门单曲“When Doves Cry”。该电影讲述了一个有抱负的歌手和吉他手努力成名的故事。故事展示了他复杂的家庭生活、与音乐竞争对手之间的战斗以及一段新恋情。Prince于2016年因服用止痛药物过量而去世，全球销售超过1亿张唱片，使其成为史上销量最高的音乐艺术家之一。</p>
<h2 id="tip">Tip</h2>
<p>Android toolchain - develop for Android devices</p>
<p>在运行flutter doctor命令检测flutter开发环境情况的时候，提示没有找到Android SDK，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401150959898.png"></p>
<p>但在【Setting——Languages&amp;Frameworks——Android SDK——Android SDK Location】上已经配置了对应的地址。可能的原因是flutter的配置没有生效，使用以下命令解决，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dart" data-lang="dart"><span class="line"><span class="cl"><span class="n">flutter</span> <span class="n">config</span> <span class="o">--</span><span class="n">android</span><span class="o">-</span><span class="n">sdk</span> <span class="nl">E:</span><span class="err">\</span><span class="n">Data</span><span class="err">\</span><span class="n">SDK</span><span class="err">\</span><span class="n">AndroidSDK</span>
</span></span></code></pre></div><p>提示已经配置成功，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401150958681.png"></p>
<p>此时，再次运行flutter doctor命令，会提示缺少<code>cmdline-tools component</code>，让你运行命令<code>path/to/sdkmanager --install &quot;cmdline-tools;latest&quot;</code>去解决，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401151001456.png"></p>
<p>很有可能是Android SDK没有下载这个依赖，查看Android SDK配置页面，将<code>Android SDK Command-line Tools（latest）</code>勾选上即可，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401151005501.png"></p>
<p>然后，继续运行flutter doctor命令，会提示你一些Android许可证不被接受，需要运行命令<code>flutter doctor --android-licenses</code>，然后一直选择<code>y</code>即可，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dart" data-lang="dart"><span class="line"><span class="cl"> <span class="n">Some</span> <span class="n">Android</span> <span class="n">licenses</span> <span class="n">not</span> <span class="n">accepted</span><span class="p">.</span> <span class="n">To</span> <span class="n">resolve</span> <span class="k">this</span><span class="p">,</span> <span class="nl">run:</span> <span class="n">flutter</span> <span class="n">doctor</span> <span class="o">--</span><span class="n">android</span><span class="o">-</span><span class="n">licenses</span>
</span></span></code></pre></div><p>至此，flutter开发环境Android SDK配置不生效问题得以解决。</p>
<h2 id="share">Share</h2>
<p>《名侦探柯南：绯色的不在场证明》和《名侦探柯南：绯色的弹丸》很好看。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-01-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 17 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 瘦肉粥、炒河粉、青菜、鸡蛋、油条&lt;/li&gt;
&lt;li&gt;午餐： 瘦肉、鸡腿河粉&lt;/li&gt;
&lt;li&gt;晚餐： 杀猪粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401180905134.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早睡早起&lt;/li&gt;
&lt;li&gt;坚持运动&lt;/li&gt;
&lt;li&gt;控制饮食&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 瘦肉粥、炒河粉、青菜、鸡蛋、油条</li>
<li>午餐： 瘦肉、鸡腿河粉</li>
<li>晚餐： 杀猪粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401180905134.jpg"></p>
<h2 id="总结">总结</h2>
<ol>
<li>早睡早起</li>
<li>坚持运动</li>
<li>控制饮食</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 13</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-13/</link>
      <pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-13/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/monotonic-array/&#34;&gt;896. 单调数列&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果数组是单调递增或单调递减的，那么它是 &lt;strong&gt;单调&lt;/strong&gt; 的。&lt;/p&gt;
&lt;p&gt;如果对于所有 &lt;code&gt;i &amp;lt;= j&lt;/code&gt;，&lt;code&gt;nums[i] &amp;lt;= nums[j]&lt;/code&gt;，那么数组 &lt;code&gt;nums&lt;/code&gt; 是单调递增的。 如果对于所有 &lt;code&gt;i &amp;lt;= j&lt;/code&gt;，&lt;code&gt;nums[i]&amp;gt; = nums[j]&lt;/code&gt;，那么数组 &lt;code&gt;nums&lt;/code&gt; 是单调递减的。&lt;/p&gt;
&lt;p&gt;当给定的数组 &lt;code&gt;nums&lt;/code&gt; 是单调数组时返回 &lt;code&gt;true&lt;/code&gt;，否则返回 &lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isMonotonic&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isIncreasing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isDecreasing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;isIncreasing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;isDecreasing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isIncreasing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isDecreasing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;定义两个变量isIncreasing和isDecreasing，初始值均设为true。通过for循环遍历数列，当出现不满足从小到大的条件时，将isIncreasing设为false并跳出循环。然后继续判断是否满足从大到小的条件，如果不满足，则将isDecreasing设为false并跳出循环。最后通过逻辑与判断，只要isIncreasing或isDecreasing中有一个为true，即可确认为单调数列。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2401/240108-winter-coat-muggings.html&#34;&gt;Muggers now targeting luxury winter coats&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;世界各地的城市都发生了一连串的抢劫事件，因为劫匪们都把注意力集中在一种新的物品上——奢侈的外套。最近几周，在伦敦、华盛顿和其他大都市地区，人们的外套都被持刀抢劫了。英国伯明翰一名男子的夹克被小偷偷走，他的脸被划伤。犯罪分子的目标是单价高达2200美元的大衣。除了从人们的背上偷走外套外，小偷还闯入人们的车辆。伯明翰城市大学的犯罪学家大卫·威尔逊教授警告说，这些抢劫案是一种新的“奢侈犯罪趋势”的开始。他说，盗窃事件“令人担忧”。&lt;/p&gt;
&lt;p&gt;威尔逊教授警告那些穿着高端冬季夹克的人要小心了。他说:“我会告诉任何穿着加拿大鹅品牌夹克的人要小心，注意你周围的环境和你周围的人。”你必须警惕那些可能试图偷走它们的机会主义者。”他补充说:“窃贼过去常常以劳力士手表为目标，这些手表售价数千英镑，然后在网上出售。”伦敦交通局的一位发言人说:“加拿大鹅毛大衣是抢劫的目标。这对我们来说是一个真正的担忧，因为它确实影响了年轻人在网络上的安全。”她补充说，这种“贪婪的犯罪”是“非常令人担忧、恐吓和恐惧的”。&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;因项目开发计划使用Bing Maps地图替换百度地图，所以就需要考虑坐标转换的问题，否则定位会出现偏差，当前在 &lt;a href=&#34;https://www.lddgo.net&#34;&gt;www.lddgo.net&lt;/a&gt; 上面发现有坐标系转换工具，就使用了一下，进行验证。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bing Maps转百度地图国内地址：GCJ02 -&amp;gt; BD09 偏差几米左右&lt;/li&gt;
&lt;li&gt;Bing Maps转百度地图国外地址：WGS84 -&amp;gt; BD09 偏差几米左右&lt;/li&gt;
&lt;li&gt;百度地图转Bing Maps国内地址：BD09 -&amp;gt; GCJ02 偏差几米左右&lt;/li&gt;
&lt;li&gt;百度地图转Bing Maps国外地址：国外坐标不需要转换，直接用 偏差几米左右&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;慈不掌兵，因小失大。&lt;/li&gt;
&lt;li&gt;了解了下showcase，对项目质量的提升应该很有帮助，想办法落实。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/monotonic-array/">896. 单调数列</a></p>
<p>如果数组是单调递增或单调递减的，那么它是 <strong>单调</strong> 的。</p>
<p>如果对于所有 <code>i &lt;= j</code>，<code>nums[i] &lt;= nums[j]</code>，那么数组 <code>nums</code> 是单调递增的。 如果对于所有 <code>i &lt;= j</code>，<code>nums[i]&gt; = nums[j]</code>，那么数组 <code>nums</code> 是单调递减的。</p>
<p>当给定的数组 <code>nums</code> 是单调数组时返回 <code>true</code>，否则返回 <code>false</code>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">isMonotonic</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">isIncreasing</span> <span class="o">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">isDecreasing</span> <span class="o">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">isIncreasing</span> <span class="o">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">isDecreasing</span> <span class="o">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">isIncreasing</span> <span class="o">||</span> <span class="nx">isDecreasing</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>定义两个变量isIncreasing和isDecreasing，初始值均设为true。通过for循环遍历数列，当出现不满足从小到大的条件时，将isIncreasing设为false并跳出循环。然后继续判断是否满足从大到小的条件，如果不满足，则将isDecreasing设为false并跳出循环。最后通过逻辑与判断，只要isIncreasing或isDecreasing中有一个为true，即可确认为单调数列。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2401/240108-winter-coat-muggings.html">Muggers now targeting luxury winter coats</a></p>
<p>世界各地的城市都发生了一连串的抢劫事件，因为劫匪们都把注意力集中在一种新的物品上——奢侈的外套。最近几周，在伦敦、华盛顿和其他大都市地区，人们的外套都被持刀抢劫了。英国伯明翰一名男子的夹克被小偷偷走，他的脸被划伤。犯罪分子的目标是单价高达2200美元的大衣。除了从人们的背上偷走外套外，小偷还闯入人们的车辆。伯明翰城市大学的犯罪学家大卫·威尔逊教授警告说，这些抢劫案是一种新的“奢侈犯罪趋势”的开始。他说，盗窃事件“令人担忧”。</p>
<p>威尔逊教授警告那些穿着高端冬季夹克的人要小心了。他说:“我会告诉任何穿着加拿大鹅品牌夹克的人要小心，注意你周围的环境和你周围的人。”你必须警惕那些可能试图偷走它们的机会主义者。”他补充说:“窃贼过去常常以劳力士手表为目标，这些手表售价数千英镑，然后在网上出售。”伦敦交通局的一位发言人说:“加拿大鹅毛大衣是抢劫的目标。这对我们来说是一个真正的担忧，因为它确实影响了年轻人在网络上的安全。”她补充说，这种“贪婪的犯罪”是“非常令人担忧、恐吓和恐惧的”。</p>
<h2 id="tip">Tip</h2>
<p>因项目开发计划使用Bing Maps地图替换百度地图，所以就需要考虑坐标转换的问题，否则定位会出现偏差，当前在 <a href="https://www.lddgo.net">www.lddgo.net</a> 上面发现有坐标系转换工具，就使用了一下，进行验证。</p>
<ol>
<li>Bing Maps转百度地图国内地址：GCJ02 -&gt; BD09 偏差几米左右</li>
<li>Bing Maps转百度地图国外地址：WGS84 -&gt; BD09 偏差几米左右</li>
<li>百度地图转Bing Maps国内地址：BD09 -&gt; GCJ02 偏差几米左右</li>
<li>百度地图转Bing Maps国外地址：国外坐标不需要转换，直接用 偏差几米左右</li>
</ol>
<h2 id="share">Share</h2>
<ol>
<li>慈不掌兵，因小失大。</li>
<li>了解了下showcase，对项目质量的提升应该很有帮助，想办法落实。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2024-01-15 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 瘦肉粥、汤圆、青菜、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 瘦肉河粉&lt;/li&gt;
&lt;li&gt;晚餐： 杀猪粉、鸡腿&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401161128544.jpg&#34; alt=&#34;0166847e0f1a136d4ccf451f621f874&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;坚持才行，中断了一段时间之后，发现还是保持运动习惯，百害而无一利。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 瘦肉粥、汤圆、青菜、鸡蛋</li>
<li>午餐： 瘦肉河粉</li>
<li>晚餐： 杀猪粉、鸡腿</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401161128544.jpg" alt="0166847e0f1a136d4ccf451f621f874" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<p>坚持才行，中断了一段时间之后，发现还是保持运动习惯，百害而无一利。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 12</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-12/</link>
      <pubDate>Thu, 11 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-12/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/matrix-diagonal-sum/&#34;&gt;1572. 矩阵对角线元素的和&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个正方形矩阵 &lt;code&gt;mat&lt;/code&gt;，请你返回矩阵对角线元素的和。&lt;/p&gt;
&lt;p&gt;请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2020/08/14/sample_1911.png&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;对角线的和为&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;请注意&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;元素&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;只会被计算一次&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;diagonalSum&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 设置总和值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 遍历相加
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果mat长度是奇数，会出现中心值相加两次的情况，所以这里要减去一次。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 获取数组中间下标值，减去1除以2加上1就是中间值，但是因为下标是0开始的，所以减去1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;coreIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;mat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coreIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;coreIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sumValue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;通过遍历二维数组，找到每个元素位置的规律即可，就是&lt;code&gt;mat[i][i]&lt;/code&gt;和&lt;code&gt;mat[i][mat.length - 1 - i]&lt;/code&gt;，然后处理二维数组长度是偶数和奇数的情况，奇数情况下，会出现多加一次中间值的情况，减去一次即可。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2401/240101-weight-loss-drugs.html&#34;&gt;Better weight-loss drugs predicted for 2024&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最常见的新年决心之一就是减肥。由于最近批准的注射药物被证明在帮助人们减肥方面特别有效，减肥有望在2024年变得更容易实现。它们属于一类叫做GLP-1的药物。其中最著名的是Wegovy和Ozempic。据drugs.com网站报道，在对使用Wegovy药物的患者进行的广泛研究中，有83%的参与者减掉了5%或更多的体重。相比之下，只有31%的服用安慰剂的参与者能够实现相同的减重效果。梅奥诊所(Mayo Clinic)的一位心脏病专家表示，减肥药物“将继续存在”，而且“越来越多的此类药物将进入市场”。&lt;/p&gt;
&lt;p&gt;行业专家强调了这些新疗法的重要性。著名杂志《科学》宣布，该系列减肥药将成为2023年医学界的“年度突破”。对于超重的人和那些发现锻炼困难的人来说，今年可能会更好。一种叫做Zepbound的新药物已经获得批准。在临床试验中，服用这种药物的人平均减轻了20%至25%的体重。肥胖专家朱莉安娜·西蒙内蒂医生说，这些新药“很神奇，因为它们解决了体重反弹的潜在生理原因”。她补充说:“过去十年我一直在这个领域工作，结果非常令人印象深刻。”&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;PATCH、PUT和POST方法的区别？&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;请求方法&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;请求是否有主体&lt;/th&gt;
          &lt;th&gt;成功的响应是否有主体&lt;/th&gt;
          &lt;th&gt;安全&lt;/th&gt;
          &lt;th&gt;幂等&lt;/th&gt;
          &lt;th&gt;可缓存&lt;/th&gt;
          &lt;th&gt;允许在HTML表单中使用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;PATCH&lt;/td&gt;
          &lt;td&gt;用于对资源进行部分修改。&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;可能有&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;不允许&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PUT&lt;/td&gt;
          &lt;td&gt;创建一个新的资源或用请求的有效载荷替换目标资源的表示。&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;可能有&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;不允许&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;POST&lt;/td&gt;
          &lt;td&gt;发送数据给服务器。&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;仅在包含足够新的信息时&lt;/td&gt;
          &lt;td&gt;允许&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;幂等：任何数量的重复、相同的请求都会使资源处于相同的状态。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/matrix-diagonal-sum/">1572. 矩阵对角线元素的和</a></p>
<p>给你一个正方形矩阵 <code>mat</code>，请你返回矩阵对角线元素的和。</p>
<p>请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。</p>
<p><img alt="img" loading="lazy" src="https://assets.leetcode.com/uploads/2020/08/14/sample_1911.png"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">mat</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="p">[</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">25</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">对角线的和为</span><span class="err">：</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">5</span> <span class="o">+</span> <span class="mi">9</span> <span class="o">+</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">7</span> <span class="o">=</span> <span class="mi">25</span>
</span></span><span class="line"><span class="cl"><span class="nx">请注意</span><span class="err">，</span><span class="nx">元素</span> <span class="nx">mat</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">5</span> <span class="nx">只会被计算一次</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">diagonalSum</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">mat</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 设置总和值
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">sumValue</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">mat</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 遍历相加
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="nx">sumValue</span> <span class="o">=</span> <span class="nx">sumValue</span> <span class="o">+</span> <span class="nx">mat</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">+</span> <span class="nx">mat</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">mat</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">-</span> <span class="nx">i</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果mat长度是奇数，会出现中心值相加两次的情况，所以这里要减去一次。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">mat</span><span class="p">.</span><span class="nx">length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 获取数组中间下标值，减去1除以2加上1就是中间值，但是因为下标是0开始的，所以减去1
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="kd">let</span> <span class="nx">coreIndex</span> <span class="o">=</span> <span class="p">((</span><span class="nx">mat</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sumValue</span> <span class="o">=</span> <span class="nx">sumValue</span> <span class="o">-</span> <span class="nx">mat</span><span class="p">[</span><span class="nx">coreIndex</span><span class="p">][</span><span class="nx">coreIndex</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">sumValue</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>通过遍历二维数组，找到每个元素位置的规律即可，就是<code>mat[i][i]</code>和<code>mat[i][mat.length - 1 - i]</code>，然后处理二维数组长度是偶数和奇数的情况，奇数情况下，会出现多加一次中间值的情况，减去一次即可。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2401/240101-weight-loss-drugs.html">Better weight-loss drugs predicted for 2024</a></p>
<p>最常见的新年决心之一就是减肥。由于最近批准的注射药物被证明在帮助人们减肥方面特别有效，减肥有望在2024年变得更容易实现。它们属于一类叫做GLP-1的药物。其中最著名的是Wegovy和Ozempic。据drugs.com网站报道，在对使用Wegovy药物的患者进行的广泛研究中，有83%的参与者减掉了5%或更多的体重。相比之下，只有31%的服用安慰剂的参与者能够实现相同的减重效果。梅奥诊所(Mayo Clinic)的一位心脏病专家表示，减肥药物“将继续存在”，而且“越来越多的此类药物将进入市场”。</p>
<p>行业专家强调了这些新疗法的重要性。著名杂志《科学》宣布，该系列减肥药将成为2023年医学界的“年度突破”。对于超重的人和那些发现锻炼困难的人来说，今年可能会更好。一种叫做Zepbound的新药物已经获得批准。在临床试验中，服用这种药物的人平均减轻了20%至25%的体重。肥胖专家朱莉安娜·西蒙内蒂医生说，这些新药“很神奇，因为它们解决了体重反弹的潜在生理原因”。她补充说:“过去十年我一直在这个领域工作，结果非常令人印象深刻。”</p>
<h2 id="tip">Tip</h2>
<p>PATCH、PUT和POST方法的区别？</p>
<table>
  <thead>
      <tr>
          <th>请求方法</th>
          <th>作用</th>
          <th>请求是否有主体</th>
          <th>成功的响应是否有主体</th>
          <th>安全</th>
          <th>幂等</th>
          <th>可缓存</th>
          <th>允许在HTML表单中使用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>PATCH</td>
          <td>用于对资源进行部分修改。</td>
          <td>是</td>
          <td>可能有</td>
          <td>否</td>
          <td>是</td>
          <td>否</td>
          <td>不允许</td>
      </tr>
      <tr>
          <td>PUT</td>
          <td>创建一个新的资源或用请求的有效载荷替换目标资源的表示。</td>
          <td>是</td>
          <td>可能有</td>
          <td>否</td>
          <td>是</td>
          <td>否</td>
          <td>不允许</td>
      </tr>
      <tr>
          <td>POST</td>
          <td>发送数据给服务器。</td>
          <td>是</td>
          <td>是</td>
          <td>否</td>
          <td>否</td>
          <td>仅在包含足够新的信息时</td>
          <td>允许</td>
      </tr>
  </tbody>
</table>
<p>幂等：任何数量的重复、相同的请求都会使资源处于相同的状态。</p>
<p>以上内容来源于www.mozilla.org。</p>
<h2 id="share">Share</h2>
<p>之前跟欧路词典反馈过，建议浏览器插件加上一个功能，查询单词时自动添加到生词本，后来支持了，用起来还是很不错的。提高英文水平，就不会每次在Review上花那么多时间了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024-01-09 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 09 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2024-01-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、瘦肉粥、油条、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 公司食堂&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401120855754.jpg&#34; style=&#34;zoom: 33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;一边在跑步机爬坡，一边看快船和太阳的比赛，还可以。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、瘦肉粥、油条、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 公司食堂</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401120855754.jpg" style="zoom: 33%;" />
<h2 id="总结">总结</h2>
<p>一边在跑步机爬坡，一边看快船和太阳的比赛，还可以。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 11</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-11/</link>
      <pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-11/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/transpose-matrix/&#34;&gt;867. 转置矩阵&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个二维整数数组 &lt;code&gt;matrix&lt;/code&gt;， 返回 &lt;code&gt;matrix&lt;/code&gt; 的 &lt;strong&gt;转置矩阵&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;矩阵的 &lt;strong&gt;转置&lt;/strong&gt; 是指将矩阵的主对角线翻转，交换矩阵的行索引与列索引。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://assets.leetcode.com/uploads/2021/02/10/hint_transpose.png&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;matrix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;transpose&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;matrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultArr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;matrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;matrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// 如果是undefined，则赋值[]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resultArr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;resultArr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;resultArr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;matrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultArr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;从示例1可以看出，转置前后的数据，其实是有规律可循的，所求的二维数组，其实就是转置前，每个子元素数组同下标的集合，示例1中的147分别是matrix中各子元素数组下标为0的值，以此类推，使用两个for循环得到结果。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2312/231228-chat-with-whale.html&#34;&gt;Scientists &amp;rsquo;talk&amp;rsquo; with a whale for 20 minutes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;科学家表示，他们与一头鲸鱼进行了一次“对话”。他们还表示，这种聊天可以帮助他们有朝一日与外星人交谈。这些科学家来自加州大学、阿拉斯加鲸鱼基金会和SETI(搜寻外星智慧)。这三个组织联合起来，与一头名叫吐温的座头鲸交谈。他们用“座头鲸语言”和她交谈了20分钟。他们的对话发生在科学家们向阿拉斯加海岸外的海洋发送“联系电话”之后。吐温听到了呼唤，做出了回应。她游到考察船边聊天。SETI表示，这是人类和座头鲸之间的第一次交流。&lt;/p&gt;
&lt;p&gt;科学家们说，他们与吐温的对话并不深刻。布伦达·麦考恩教授说，这更像是一系列的问候。鲸鱼使用联络呼叫让其他鲸鱼知道它们在哪里。科学家们在20分钟内发起了36次同样的呼叫。每一次，吐温都做出了回应。她甚至匹配了研究人员每一次呼叫的间隔时间。麦考恩教授告诉《商业内幕》网站，她的研究可以让与外星人交谈变得更容易。她说:“这个星球上有各种各样的智能体。通过研究它们，我们可以更好地了解外星人可能是什么样子的，因为它们不会完全同我们一样。”&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;switch 和 if else 哪个效率高&lt;/p&gt;
&lt;p&gt;在大多数情况下，&lt;code&gt;switch&lt;/code&gt; 语句的效率通常比 &lt;code&gt;if else&lt;/code&gt; 语句要高。这是因为 &lt;code&gt;switch&lt;/code&gt; 语句使用了跳转表来查找符合条件的分支，而不是逐个比较条件。跳转表实际上是一个数组，通过将条件值作为索引，可以直接访问到对应的目标地址。因此，跳转表的查找方式具有固定的时间复杂度 O(1)，无论有多少个分支，查找时间都是恒定的。&lt;/p&gt;
&lt;p&gt;相比之下，&lt;code&gt;if else&lt;/code&gt; 语句需要逐个比较条件，如果有多个条件，它的查找时间将随着条件数量和复杂度的增加而增加。在最坏的情况下，&lt;code&gt;if else&lt;/code&gt; 语句的时间复杂度可能达到 O(n)，其中 n 是分支的数量。&lt;/p&gt;
&lt;p&gt;然而，在实际应用中，仍然需要根据具体的场景来选择使用 &lt;code&gt;switch&lt;/code&gt; 还是 &lt;code&gt;if else&lt;/code&gt;。如果条件是固定的值，且分支数量较多，建议使用 &lt;code&gt;switch&lt;/code&gt; 语句。如果条件是动态的，并且需要进行更复杂的条件判断，建议使用 &lt;code&gt;if else&lt;/code&gt; 语句。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/transpose-matrix/">867. 转置矩阵</a></p>
<p>给你一个二维整数数组 <code>matrix</code>， 返回 <code>matrix</code> 的 <strong>转置矩阵</strong> 。</p>
<p>矩阵的 <strong>转置</strong> 是指将矩阵的主对角线翻转，交换矩阵的行索引与列索引。</p>
<p><img loading="lazy" src="https://assets.leetcode.com/uploads/2021/02/10/hint_transpose.png"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],[</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">7</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">],[</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">9</span><span class="p">]]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">transpose</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">matrix</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">resultArr</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">matrix</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">matrix</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// 如果是undefined，则赋值[]
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">resultArr</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">resultArr</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="nx">resultArr</span><span class="p">[</span><span class="nx">j</span><span class="p">].</span><span class="nx">push</span><span class="p">(</span><span class="nx">matrix</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">resultArr</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>从示例1可以看出，转置前后的数据，其实是有规律可循的，所求的二维数组，其实就是转置前，每个子元素数组同下标的集合，示例1中的147分别是matrix中各子元素数组下标为0的值，以此类推，使用两个for循环得到结果。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2312/231228-chat-with-whale.html">Scientists &rsquo;talk&rsquo; with a whale for 20 minutes</a></p>
<p>科学家表示，他们与一头鲸鱼进行了一次“对话”。他们还表示，这种聊天可以帮助他们有朝一日与外星人交谈。这些科学家来自加州大学、阿拉斯加鲸鱼基金会和SETI(搜寻外星智慧)。这三个组织联合起来，与一头名叫吐温的座头鲸交谈。他们用“座头鲸语言”和她交谈了20分钟。他们的对话发生在科学家们向阿拉斯加海岸外的海洋发送“联系电话”之后。吐温听到了呼唤，做出了回应。她游到考察船边聊天。SETI表示，这是人类和座头鲸之间的第一次交流。</p>
<p>科学家们说，他们与吐温的对话并不深刻。布伦达·麦考恩教授说，这更像是一系列的问候。鲸鱼使用联络呼叫让其他鲸鱼知道它们在哪里。科学家们在20分钟内发起了36次同样的呼叫。每一次，吐温都做出了回应。她甚至匹配了研究人员每一次呼叫的间隔时间。麦考恩教授告诉《商业内幕》网站，她的研究可以让与外星人交谈变得更容易。她说:“这个星球上有各种各样的智能体。通过研究它们，我们可以更好地了解外星人可能是什么样子的，因为它们不会完全同我们一样。”</p>
<h2 id="tip">Tip</h2>
<p>switch 和 if else 哪个效率高</p>
<p>在大多数情况下，<code>switch</code> 语句的效率通常比 <code>if else</code> 语句要高。这是因为 <code>switch</code> 语句使用了跳转表来查找符合条件的分支，而不是逐个比较条件。跳转表实际上是一个数组，通过将条件值作为索引，可以直接访问到对应的目标地址。因此，跳转表的查找方式具有固定的时间复杂度 O(1)，无论有多少个分支，查找时间都是恒定的。</p>
<p>相比之下，<code>if else</code> 语句需要逐个比较条件，如果有多个条件，它的查找时间将随着条件数量和复杂度的增加而增加。在最坏的情况下，<code>if else</code> 语句的时间复杂度可能达到 O(n)，其中 n 是分支的数量。</p>
<p>然而，在实际应用中，仍然需要根据具体的场景来选择使用 <code>switch</code> 还是 <code>if else</code>。如果条件是固定的值，且分支数量较多，建议使用 <code>switch</code> 语句。如果条件是动态的，并且需要进行更复杂的条件判断，建议使用 <code>if else</code> 语句。</p>
<h2 id="share">Share</h2>
<p>总是有人要赢的，那为什么不能是我呢？ —— 科比·布莱恩特</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 10</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-10/</link>
      <pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-10/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/count-good-triplets/&#34;&gt;1534. 统计好三元组&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;arr&lt;/code&gt; ，以及 &lt;code&gt;a&lt;/code&gt;、&lt;code&gt;b&lt;/code&gt; 、&lt;code&gt;c&lt;/code&gt; 三个整数。请你统计其中好三元组的数量。&lt;/p&gt;
&lt;p&gt;如果三元组 &lt;code&gt;(arr[i], arr[j], arr[k])&lt;/code&gt; 满足下列全部条件，则认为它是一个 &lt;strong&gt;好三元组&lt;/strong&gt; 。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0 &amp;lt;= i &amp;lt; j &amp;lt; k &amp;lt; arr.length&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;|arr[i] - arr[j]| &amp;lt;= a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;|arr[j] - arr[k]| &amp;lt;= b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;|arr[i] - arr[k]| &amp;lt;= c&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 &lt;code&gt;|x|&lt;/code&gt; 表示 &lt;code&gt;x&lt;/code&gt; 的绝对值。&lt;/p&gt;
&lt;p&gt;返回 &lt;strong&gt;好三元组的数量&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;一共有&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;个好三元组&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;countGoodTriplets&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resultCount&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resultCount&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;要得到好三元组的数量，要先判断出&lt;code&gt;i&lt;/code&gt;、&lt;code&gt;j&lt;/code&gt;、&lt;code&gt;k&lt;/code&gt;能有多少种组合，使用&lt;code&gt;3&lt;/code&gt;个&lt;code&gt;for&lt;/code&gt;来遍历，因为&lt;code&gt;0 &amp;lt;= i &amp;lt; j &amp;lt; k &amp;lt; arr.length&lt;/code&gt;的条件，可以&lt;code&gt;i&lt;/code&gt;从&lt;code&gt;0&lt;/code&gt;开始，&lt;code&gt;j&lt;/code&gt;从&lt;code&gt;i+1&lt;/code&gt;开始，&lt;code&gt;k&lt;/code&gt;从&lt;code&gt;j+1&lt;/code&gt;开始，依次得出&lt;code&gt;arr[i], arr[j], arr[k]&lt;/code&gt;存在的组合，然后使用4个条件进行判断，使用&lt;code&gt;resultCount&lt;/code&gt;来计数即可。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/count-good-triplets/">1534. 统计好三元组</a></p>
<p>给你一个整数数组 <code>arr</code> ，以及 <code>a</code>、<code>b</code> 、<code>c</code> 三个整数。请你统计其中好三元组的数量。</p>
<p>如果三元组 <code>(arr[i], arr[j], arr[k])</code> 满足下列全部条件，则认为它是一个 <strong>好三元组</strong> 。</p>
<ul>
<li><code>0 &lt;= i &lt; j &lt; k &lt; arr.length</code></li>
<li><code>|arr[i] - arr[j]| &lt;= a</code></li>
<li><code>|arr[j] - arr[k]| &lt;= b</code></li>
<li><code>|arr[i] - arr[k]| &lt;= c</code></li>
</ul>
<p>其中 <code>|x|</code> 表示 <code>x</code> 的绝对值。</p>
<p>返回 <strong>好三元组的数量</strong>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">7</span><span class="p">],</span> <span class="nx">a</span> <span class="o">=</span> <span class="mi">7</span><span class="p">,</span> <span class="nx">b</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="nx">c</span> <span class="o">=</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">一共有</span> <span class="mi">4</span> <span class="nx">个好三元组</span><span class="err">：</span><span class="p">[(</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)]</span> <span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">countGoodTriplets</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">arr</span><span class="p">,</span> <span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">resultCount</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">k</span> <span class="o">=</span> <span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">k</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">k</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;=</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">k</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">-</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="nx">a</span> <span class="o">&amp;&amp;</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">-</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">k</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="nx">b</span> <span class="o">&amp;&amp;</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">-</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">k</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="o">++</span><span class="nx">resultCount</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">resultCount</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>要得到好三元组的数量，要先判断出<code>i</code>、<code>j</code>、<code>k</code>能有多少种组合，使用<code>3</code>个<code>for</code>来遍历，因为<code>0 &lt;= i &lt; j &lt; k &lt; arr.length</code>的条件，可以<code>i</code>从<code>0</code>开始，<code>j</code>从<code>i+1</code>开始，<code>k</code>从<code>j+1</code>开始，依次得出<code>arr[i], arr[j], arr[k]</code>存在的组合，然后使用4个条件进行判断，使用<code>resultCount</code>来计数即可。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2312/231218-brainoware-biocomputer.html">Scientists make biocomputer with brain tissue</a></p>
<p>随着研究人员制造出“生物计算机”，人与机器的融合又向前迈进了一步。美国印第安纳大学的生物工程师将实验室培养的人类脑组织与微电极结合在一起。科学家们将他们的发明命名为Brainoware。它还处于发展的萌芽阶段，但已经可以执行语音识别等复杂任务。首席研究员郭峰博士希望他的软件将有助于推进人工智能技术。这也可能意味着人工智能硬件比单纯使用硅芯片消耗的能源要少得多。郭博士说:“这只是概念验证，表明我们可以完成这项工作。我们还有很长的路要走。”</p>
<p>研究人员表示，他们的Brainware系统利用了“类器官”。这些是人工培育的类似器官的组织束和干细胞。郭博士说，他的团队的类器官就像迷你大脑。它们已经转化并发展了神经元，类似于人类大脑中的神经元。研究人员表示，他们的下一步是研究如何让Brainware适应更高级别的任务。这项技术有一天可以用来创建改进的大脑模型，并推动神经科学研究向前发展。它还可能促进神经系统疾病的治疗。研究人员当前面临的一个主要挑战是找到如何保持活组织存活的解决方案。</p>
<h2 id="tip">Tip</h2>
<p>什么是npx？</p>
<p>因为最近在项目Vue3中集成Sentry前端异常监控系统，看到官方文档里有使用npx的指令，就去了解了一下。当你在项目中使用npx执行一个命令时，npx 会在当前项目的的<code>./node_modules/.bin</code>目录下查找是否有对应可执行的命令，没有找到的话再从全局环境查找是否有安装对应的模块，如果全局环境中没有，会创建一个临时目录，并在其中下载对应的模块，命令执行完毕后临时目录会被删除，不会占有本地资源。这种机制可以确保在执行命令时使用最新的模块，并且不会对全局环境造成过多的污染。</p>
<h2 id="share">Share</h2>
<ol>
<li>感觉一直在补ARTS的打卡任务，按理这周应该是ARTS Week 11了，不过这周就想补上了，不清楚为什么那么忙，太多太多需要做的事情。</li>
<li>无论做什么事情，要做就做好，不然就不做。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-12-28 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 28 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-28-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 炒河粉、瘦肉粥、烧麦、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 扣肉蒸饭&lt;/li&gt;
&lt;li&gt;晚餐： 公司食堂、大桶珍珠奶茶&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312290907492.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;昨晚很晚才去，外面有点冷的，不过值得，还是运动的感觉好。还是好好像之前那样，每天一小时吧，真的运动和不运动，差太多太多了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 炒河粉、瘦肉粥、烧麦、鸡蛋</li>
<li>午餐： 扣肉蒸饭</li>
<li>晚餐： 公司食堂、大桶珍珠奶茶</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312290907492.jpg"></p>
<h2 id="总结">总结</h2>
<p>昨晚很晚才去，外面有点冷的，不过值得，还是运动的感觉好。还是好好像之前那样，每天一小时吧，真的运动和不运动，差太多太多了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 9</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-09/</link>
      <pubDate>Mon, 25 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-09/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/three-consecutive-odds/&#34;&gt;1550. 存在连续三个奇数的数组&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数数组 &lt;code&gt;arr&lt;/code&gt;，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 &lt;code&gt;true&lt;/code&gt; ；否则，返回 &lt;code&gt;false&lt;/code&gt; 。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;示例 1：

输入：arr = [2,6,4,1]
输出：false
解释：不存在连续三个元素都是奇数的情况
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;threeConsecutiveOdds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果数组长度小于3，则直接返回false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lastIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 定义当前值、下一个值、再下一个值，如果存在连续的三个奇数，则可直接得到结果，返回true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;last&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 如果已经比较至数组倒数第三个，还是没有结果，而当i是倒数第二个时，因为只有2个值了，就没有比较的必要了，返回结果false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lastIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;next&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;last&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;总的来说，编辑数组，判断是否存在连续三个元素都是奇数的情况，有则返回&lt;code&gt;true&lt;/code&gt;，否则继续遍历，不是就接着比较，等到最后倒数第三个还是没有结果，意味着不存在，返回&lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2312/231211-peach-fuzz-colour-of-the-year.html&#34;&gt;Peach fuzz is colour of the year for 2024&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官方宣布，柔和桃（Peach fuzz）是2024年的年度流行色。世界色彩权威机构潘通（Pantone）将柔和桃选为2024年最能给人们带来舒适的色调。Pantone是有关配色方案的信息和建议的首选来源。它从2000年开始评选年度颜色。对即将到来的年度色调的审议小组表示：“柔和桃能带来归属感，并激发人们重新调整和追求成长的机会。”它补充说，在柔和桃中，“我们可以从内心寻找平静，这会对我们的幸福产生积极的影响。”潘通色彩研究所（Pantone Colour Institute）副总裁劳里•普雷斯曼（Laurie Pressman）表示，这种颜色“温馨的感觉能够把人们聚在一起，并丰富我们的灵魂”。&lt;/p&gt;
&lt;p&gt;潘通配色系统是所有颜色的行业标准。到2024年，从平面设计到时尚，再到科技，各行各业都有可能将柔和桃融入他们的产品、营销和广告中。该公司的网站称：“潘通提供了一种通用的色彩语言，使品牌和制造商在工作流程的每个阶段都能做出对色彩至关重要的决定。”它补充道：“潘通的色彩语言支持所有注重色彩的行业，比如纺织品、服装、美容、室内设计、建筑和工业设计等，其中印刷、纺织品、塑料、颜料和涂料等多种材料已有超过10000种颜色标准。”&lt;/p&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;解决 android gradle 下载特别慢的问题&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;flutter/android&lt;/code&gt;开发时，经常遇到&lt;code&gt;gradle&lt;/code&gt;下载特别慢的问题，甚至是超时失败，严重影响到项目的开发工作，为了解决这个问题，可以考虑替换成国内的镜像来下载解决。首先，在&lt;code&gt;android/gradle/wrapper/gradle-wrapper.properties&lt;/code&gt;中，查看当前&lt;code&gt;gradle&lt;/code&gt;版本，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251127878.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后在&lt;a href=&#34;https://mirrors.cloud.tencent.com/gradle/&#34;&gt;腾讯镜像gradle&lt;/a&gt;上面，查看是否存在该版本，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251128029.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/three-consecutive-odds/">1550. 存在连续三个奇数的数组</a></p>
<p>给你一个整数数组 <code>arr</code>，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 <code>true</code> ；否则，返回 <code>false</code> 。</p>
<pre tabindex="0"><code>示例 1：

输入：arr = [2,6,4,1]
输出：false
解释：不存在连续三个元素都是奇数的情况
</code></pre><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">threeConsecutiveOdds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果数组长度小于3，则直接返回false
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">lastIndex</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 定义当前值、下一个值、再下一个值，如果存在连续的三个奇数，则可直接得到结果，返回true
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="kd">let</span> <span class="nx">current</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">next</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">last</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="c1">// 如果已经比较至数组倒数第三个，还是没有结果，而当i是倒数第二个时，因为只有2个值了，就没有比较的必要了，返回结果false
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">&gt;</span> <span class="nx">lastIndex</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">current</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">next</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">last</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>总的来说，编辑数组，判断是否存在连续三个元素都是奇数的情况，有则返回<code>true</code>，否则继续遍历，不是就接着比较，等到最后倒数第三个还是没有结果，意味着不存在，返回<code>false</code>。</p>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2312/231211-peach-fuzz-colour-of-the-year.html">Peach fuzz is colour of the year for 2024</a></p>
<p>官方宣布，柔和桃（Peach fuzz）是2024年的年度流行色。世界色彩权威机构潘通（Pantone）将柔和桃选为2024年最能给人们带来舒适的色调。Pantone是有关配色方案的信息和建议的首选来源。它从2000年开始评选年度颜色。对即将到来的年度色调的审议小组表示：“柔和桃能带来归属感，并激发人们重新调整和追求成长的机会。”它补充说，在柔和桃中，“我们可以从内心寻找平静，这会对我们的幸福产生积极的影响。”潘通色彩研究所（Pantone Colour Institute）副总裁劳里•普雷斯曼（Laurie Pressman）表示，这种颜色“温馨的感觉能够把人们聚在一起，并丰富我们的灵魂”。</p>
<p>潘通配色系统是所有颜色的行业标准。到2024年，从平面设计到时尚，再到科技，各行各业都有可能将柔和桃融入他们的产品、营销和广告中。该公司的网站称：“潘通提供了一种通用的色彩语言，使品牌和制造商在工作流程的每个阶段都能做出对色彩至关重要的决定。”它补充道：“潘通的色彩语言支持所有注重色彩的行业，比如纺织品、服装、美容、室内设计、建筑和工业设计等，其中印刷、纺织品、塑料、颜料和涂料等多种材料已有超过10000种颜色标准。”</p>
<h2 id="tip">Tip</h2>
<p>解决 android gradle 下载特别慢的问题</p>
<p>在<code>flutter/android</code>开发时，经常遇到<code>gradle</code>下载特别慢的问题，甚至是超时失败，严重影响到项目的开发工作，为了解决这个问题，可以考虑替换成国内的镜像来下载解决。首先，在<code>android/gradle/wrapper/gradle-wrapper.properties</code>中，查看当前<code>gradle</code>版本，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251127878.png"></p>
<p>然后在<a href="https://mirrors.cloud.tencent.com/gradle/">腾讯镜像gradle</a>上面，查看是否存在该版本，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251128029.png"></p>
<p>最后将<code>distributionUrl</code>设置为腾讯镜像地址即可，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">distributionUrl</span><span class="o">=</span><span class="n">https</span><span class="err">\</span><span class="p">:</span><span class="c1">//mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip</span><span class="w">
</span></span></span></code></pre></div><h2 id="share">Share</h2>
<p>之前一直觉得代码评审不是很重要，加上也没那么多时间去做这个事情，然后这些天刚好打算在项目质量上面，有一些突破，从需求到开发到测试到上线，可以做什么来提升项目的质量？自然而然就涉及到代码评审了，然后开了一下午会，好像也没看了多少代码，太耗费时间了。总的感受还是，从源头去解决问题，也就是在gitlab合并代码前，一定要根据制定的代码规范检查一遍，然后才是具体实现的功能逻辑是否有缺陷，确保合并时代码是符合规范的，这样后续的代码评审会议，时间也不会那么久了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 8</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-08/</link>
      <pubDate>Sat, 16 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-08/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/valid-parentheses/&#34;&gt;20. 有效的括号&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个只包括 &lt;code&gt;&#39;(&#39;&lt;/code&gt;，&lt;code&gt;&#39;)&#39;&lt;/code&gt;，&lt;code&gt;&#39;{&#39;&lt;/code&gt;，&lt;code&gt;&#39;}&#39;&lt;/code&gt;，&lt;code&gt;&#39;[&#39;&lt;/code&gt;，&lt;code&gt;&#39;]&#39;&lt;/code&gt; 的字符串 &lt;code&gt;s&lt;/code&gt; ，判断字符串是否有效。&lt;/p&gt;
&lt;p&gt;有效字符串需满足：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;左括号必须用相同类型的右括号闭合。&lt;/li&gt;
&lt;li&gt;左括号必须以正确的顺序闭合。&lt;/li&gt;
&lt;li&gt;每个右括号都有一个对应的相同类型的左括号。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;示例 1：
输入：s = &amp;#34;()&amp;#34;
输出：true

示例 2：
输入：s = &amp;#34;(]&amp;#34;
输出：false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isValid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;(&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;)&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;[&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stack&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;(&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;[&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;stack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;总的来说，就是通过栈后进先出（LIFO ，Last In First Out）的机制实现。&lt;/li&gt;
&lt;li&gt;如果字符串长度不是偶数，则说明不是成对的，可直接返回&lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;通过&lt;code&gt;Map&lt;/code&gt;，创建一个对象，用来处理左右括号映射关系&lt;/li&gt;
&lt;li&gt;创建一个数组&lt;code&gt;stack&lt;/code&gt;，用来实现栈的操作&lt;/li&gt;
&lt;li&gt;如果是左括号，则入栈&lt;code&gt;stack.push(s)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;如果是右括号，&lt;code&gt;stack.pop()&lt;/code&gt; 栈顶的左括号出栈，获取它映射的右括号，进行比较&lt;/li&gt;
&lt;li&gt;如果不相等，直接返回&lt;code&gt;false&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;当&lt;code&gt;stack&lt;/code&gt;长度为空，说明入栈的左括号都找到了对应的右括号，返回&lt;code&gt;true&lt;/code&gt;，否则为&lt;code&gt;false&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2312/231214-javier-milei.html&#34;&gt;Argentina&amp;rsquo;s president warns of economic &amp;lsquo;shock treatment&amp;rsquo;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;阿根廷有了一位新总统。他叫哈维尔·米莱。他出人意料地赢得了11月的选举。米莱承诺要扭转阿根廷糟糕的经济。他特别表示，他将降低目前在140%左右的通胀率。他还希望大幅削减公共债务。在过去的几十年里，阿根廷借了很多钱。米莱开始想偿还这笔钱。在他作为总统的第一次演讲中，他说经济需要“休克疗法”来恢复。他表示，前几届政府花费太多，“没有钱了”。他警告阿根廷人，未来几年的生活将会很艰难。他说，人们将不得不生活在“紧缩”中以帮助经济。&lt;/p&gt;
&lt;p&gt;哈维尔·米莱与阿根廷以前见过的任何政治家都不同。他是一个极右翼政治家。许多人说他很像美国前总统川普和巴西前总统博索纳罗。在米莱竞选期间，人们经常看到他拿着电锯。他想让人们知道，他将在经济方面大幅削减开支。他称自己的选举胜利是阿根廷历史的转折点，就像1989年柏林墙的倒塌一样。他承诺限制堕胎权并放宽枪支法。他也因为不相信气候变化而惹恼了环保人士。他说:“我们知道，短期内形势将会恶化，但之后我们将看到我们努力的成果。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/valid-parentheses/">20. 有效的括号</a></p>
<p>给定一个只包括 <code>'('</code>，<code>')'</code>，<code>'{'</code>，<code>'}'</code>，<code>'['</code>，<code>']'</code> 的字符串 <code>s</code> ，判断字符串是否有效。</p>
<p>有效字符串需满足：</p>
<ol>
<li>左括号必须用相同类型的右括号闭合。</li>
<li>左括号必须以正确的顺序闭合。</li>
<li>每个右括号都有一个对应的相同类型的左括号。</li>
</ol>
<pre tabindex="0"><code>示例 1：
输入：s = &#34;()&#34;
输出：true

示例 2：
输入：s = &#34;(]&#34;
输出：false
</code></pre><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">isValid</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s1">&#39;(&#39;</span><span class="o">:</span> <span class="s1">&#39;)&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s1">&#39;[&#39;</span><span class="o">:</span> <span class="s1">&#39;]&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s1">&#39;{&#39;</span><span class="o">:</span> <span class="s1">&#39;}&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">stack</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">s</span> <span class="o">=</span> <span class="nx">str</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">s</span> <span class="o">==</span> <span class="s1">&#39;(&#39;</span> <span class="o">||</span> <span class="nx">s</span> <span class="o">==</span> <span class="s1">&#39;[&#39;</span> <span class="o">||</span> <span class="nx">s</span> <span class="o">==</span> <span class="s1">&#39;{&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">stack</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">s</span> <span class="o">!==</span> <span class="nx">map</span><span class="p">[</span><span class="nx">stack</span><span class="p">.</span><span class="nx">pop</span><span class="p">()])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">stack</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>总的来说，就是通过栈后进先出（LIFO ，Last In First Out）的机制实现。</li>
<li>如果字符串长度不是偶数，则说明不是成对的，可直接返回<code>false</code></li>
<li>通过<code>Map</code>，创建一个对象，用来处理左右括号映射关系</li>
<li>创建一个数组<code>stack</code>，用来实现栈的操作</li>
<li>如果是左括号，则入栈<code>stack.push(s)</code></li>
<li>如果是右括号，<code>stack.pop()</code> 栈顶的左括号出栈，获取它映射的右括号，进行比较</li>
<li>如果不相等，直接返回<code>false</code>。</li>
<li>当<code>stack</code>长度为空，说明入栈的左括号都找到了对应的右括号，返回<code>true</code>，否则为<code>false</code>。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2312/231214-javier-milei.html">Argentina&rsquo;s president warns of economic &lsquo;shock treatment&rsquo;</a></p>
<p>阿根廷有了一位新总统。他叫哈维尔·米莱。他出人意料地赢得了11月的选举。米莱承诺要扭转阿根廷糟糕的经济。他特别表示，他将降低目前在140%左右的通胀率。他还希望大幅削减公共债务。在过去的几十年里，阿根廷借了很多钱。米莱开始想偿还这笔钱。在他作为总统的第一次演讲中，他说经济需要“休克疗法”来恢复。他表示，前几届政府花费太多，“没有钱了”。他警告阿根廷人，未来几年的生活将会很艰难。他说，人们将不得不生活在“紧缩”中以帮助经济。</p>
<p>哈维尔·米莱与阿根廷以前见过的任何政治家都不同。他是一个极右翼政治家。许多人说他很像美国前总统川普和巴西前总统博索纳罗。在米莱竞选期间，人们经常看到他拿着电锯。他想让人们知道，他将在经济方面大幅削减开支。他称自己的选举胜利是阿根廷历史的转折点，就像1989年柏林墙的倒塌一样。他承诺限制堕胎权并放宽枪支法。他也因为不相信气候变化而惹恼了环保人士。他说:“我们知道，短期内形势将会恶化，但之后我们将看到我们努力的成果。”</p>
<h2 id="tip">Tip</h2>
<p>栈是一种后进先出（LIFO）的数据结构，**类似于我们在现实生活中处理堆叠的物体的方式。**栈的主要操作包括将元素压入栈（push），从栈中弹出元素（pop），和查看栈顶元素（peek）。</p>
<h2 id="share">Share</h2>
<p>最近观察，所见所闻，想到《铁齿铜牙纪晓岚》中和珅演的王刚对纪晓岚说的“清官的确令人敬佩，可清官也令人畏啊。”清官易苛，苛则寡恩，仗着自己平时廉洁，以自己为标准，可以毫无顾忌对他人横加指责。以之对应的则是在工作中，在团队管理上，仗着自己为了团队兢兢业业，没有任何私心，所作所为完全经得起推敲，就开始眼里容不得沙子了，好像谁都不如自己用心一样，那么简单的事情怎么还做不好呢？水至清则无鱼，谁身上没有点问题呢，想想自己的缺点，想想别人的长处，会容得下世界上很多事情。有时候说还不如不说，做还不如不做，完全是以你想要的结果为准，只要结果是达到预期的，不管什么方式都是可以的，尊重，理解，保持平和的心态。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-12-15 运动记录231215</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 无&lt;/li&gt;
&lt;li&gt;午餐： 腊肉蒸饭&lt;/li&gt;
&lt;li&gt;晚餐： 猪脚饭&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312160934967.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;想着本来就打算看快船VS勇士的比赛的，还不如去健身房爬坡，边走边看。然后就晚了一点。&lt;/li&gt;
&lt;li&gt;快3点了才睡觉，还是太晚了。&lt;/li&gt;
&lt;li&gt;老实说，运动和不运动，真的不一样。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 无</li>
<li>午餐： 腊肉蒸饭</li>
<li>晚餐： 猪脚饭</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312160934967.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>想着本来就打算看快船VS勇士的比赛的，还不如去健身房爬坡，边走边看。然后就晚了一点。</li>
<li>快3点了才睡觉，还是太晚了。</li>
<li>老实说，运动和不运动，真的不一样。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-12-10 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 10 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 青枣、鸭脖&lt;/li&gt;
&lt;li&gt;午餐： 豌杂面&lt;/li&gt;
&lt;li&gt;晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312110921851.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;慢慢调整了，事情很多，突然就啥都不想做了。&lt;/li&gt;
&lt;li&gt;不要那么晚睡觉了，真不得行，太伤身体了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 青枣、鸭脖</li>
<li>午餐： 豌杂面</li>
<li>晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312110921851.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>慢慢调整了，事情很多，突然就啥都不想做了。</li>
<li>不要那么晚睡觉了，真不得行，太伤身体了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-12-09 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 09 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-12-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 青枣&lt;/li&gt;
&lt;li&gt;午餐： 鸡蛋炒荞麦面&lt;/li&gt;
&lt;li&gt;晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312092329935.png&#34; style=&#34;zoom: 33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;之前感冒发烧，然后一连串的问题，状态不是很好，就中断了，现在调整回来。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 青枣</li>
<li>午餐： 鸡蛋炒荞麦面</li>
<li>晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312092329935.png" style="zoom: 33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>之前感冒发烧，然后一连串的问题，状态不是很好，就中断了，现在调整回来。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>物联网开发名词解释</title>
      <link>https://dstweihao.cn/posts/%E7%89%A9%E8%81%94%E7%BD%91%E5%BC%80%E5%8F%91/%E5%90%8D%E8%AF%8D%E8%A7%A3%E9%87%8A/</link>
      <pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%89%A9%E8%81%94%E7%BD%91%E5%BC%80%E5%8F%91/%E5%90%8D%E8%AF%8D%E8%A7%A3%E9%87%8A/</guid>
      <description>&lt;h2 id=&#34;zigbee协议&#34;&gt;Zigbee协议&lt;/h2&gt;
&lt;p&gt;Zigbee协议是一种无线通信协议，专门设计用于低功耗、低数据速率、短距离的无线通信应用。它基于IEEE 802.15.4标准，并添加了网络和应用层的协议，用于构建低功耗无线传感器网络和物联网设备。&lt;/p&gt;
&lt;p&gt;以下是Zigbee协议的主要特点和组成部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;低功耗：Zigbee协议设计用于低功耗应用，节点可以进入睡眠状态以节省能量，并通过周期性唤醒来进行通信。&lt;/li&gt;
&lt;li&gt;网络拓扑：Zigbee支持多种网络拓扑结构，包括星型、网状和混合结构。其中，协调器（Coordinator）负责网络的管理和协调，路由器（Router）用于中继数据，终端设备（End Device）作为最低级的节点。&lt;/li&gt;
&lt;li&gt;自组织网络：Zigbee网络具有自组织和自愈能力，可动态调整网络拓扑结构，使网络具备容错性和鲁棒性。&lt;/li&gt;
&lt;li&gt;低数据速率：Zigbee协议适用于低数据速率的应用，通常在10-100 kbps的范围内。&lt;/li&gt;
&lt;li&gt;安全性：Zigbee协议提供多层安全机制，包括加密、认证和访问控制，以确保数据的安全性和网络的保密性。&lt;/li&gt;
&lt;li&gt;应用层协议：Zigbee协议定义了一系列的应用层协议，用于特定的应用领域，如家庭自动化、智能能源管理、工业控制等。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Zigbee协议广泛应用于物联网领域，包括智能家居、智能建筑、工业自动化、农业监测等。它提供了一种低成本、低功耗、可靠且安全的无线通信解决方案。&lt;/p&gt;
&lt;h2 id=&#34;zigbee网关&#34;&gt;Zigbee网关&lt;/h2&gt;
&lt;p&gt;Zigbee网关是连接Zigbee无线通信网络与其他网络（如以太网、Wi-Fi等）的设备。它充当一个桥梁，通过与Zigbee设备建立无线连接，将Zigbee设备的数据转发到其他网络，或将其他网络的命令传递给Zigbee设备。Zigbee网关通常具备数据转换和协议转换的功能，以适应不同网络之间的数据交互需求。&lt;/p&gt;
&lt;h2 id=&#34;zigbee组播&#34;&gt;Zigbee组播&lt;/h2&gt;
&lt;p&gt;Zigbee组播是Zigbee网络中的一种通信方式，用于一对多的数据传输。在Zigbee网络中，多个设备可以加入同一个组播组，并通过组播组地址进行通信。当一个设备发送数据到组播组地址时，所有加入该组播组的设备都可以接收到该数据。Zigbee组播可以用于广播命令、控制多个设备或进行集群通信等场景。&lt;/p&gt;
&lt;h2 id=&#34;zigbee节点&#34;&gt;Zigbee节点&lt;/h2&gt;
&lt;p&gt;Zigbee节点是指加入Zigbee无线通信网络的设备。每个Zigbee节点可以是传感器、执行器、控制器或其他类型的设备。Zigbee节点通过与Zigbee协调器通信，参与组网、数据传输和网络管理等操作。每个Zigbee节点具有唯一的64位或16位的节点地址，用于在Zigbee网络中进行标识和通信。&lt;/p&gt;
&lt;h2 id=&#34;zigbee设备&#34;&gt;Zigbee设备&lt;/h2&gt;
&lt;p&gt;Zigbee设备是指采用Zigbee通信协议的终端设备，如智能灯泡、智能插座、传感器等。这些设备可以通过Zigbee协议进行通信和互联，构建起一个Zigbee网络。在Zigbee网络中，虽然Zigbee节点和Zigbee设备通常可以视为相同的概念，但有一些微妙的区别：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;角色：Zigbee节点可以扮演不同的角色，例如协调器（Coordinator）、路由器（Router）和终端设备（End Device）。而Zigbee设备通常被视为终端设备，扮演终端设备角色。&lt;/li&gt;
&lt;li&gt;能力：Zigbee节点通常具有更复杂的功能和能力，可以作为网络的核心，负责管理网络的拓扑结构、路由选择等。而Zigbee设备通常具有更简单的功能，执行特定的任务或提供特定的服务。&lt;/li&gt;
&lt;li&gt;参与程度：Zigbee节点更强调对整个Zigbee网络的参与和管理，通常需要进行配置和设置。而Zigbee设备更强调作为终端设备的使用，通常不需要进行复杂的配置和管理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要注意的是，这些区别并不是严格的定义，而是对于Zigbee网络中的概念的一种常见理解。在实际应用中，节点和设备的概念可能会交叉使用，具体的区分可以根据具体的实际情况和需求来确定。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="zigbee协议">Zigbee协议</h2>
<p>Zigbee协议是一种无线通信协议，专门设计用于低功耗、低数据速率、短距离的无线通信应用。它基于IEEE 802.15.4标准，并添加了网络和应用层的协议，用于构建低功耗无线传感器网络和物联网设备。</p>
<p>以下是Zigbee协议的主要特点和组成部分：</p>
<ol>
<li>低功耗：Zigbee协议设计用于低功耗应用，节点可以进入睡眠状态以节省能量，并通过周期性唤醒来进行通信。</li>
<li>网络拓扑：Zigbee支持多种网络拓扑结构，包括星型、网状和混合结构。其中，协调器（Coordinator）负责网络的管理和协调，路由器（Router）用于中继数据，终端设备（End Device）作为最低级的节点。</li>
<li>自组织网络：Zigbee网络具有自组织和自愈能力，可动态调整网络拓扑结构，使网络具备容错性和鲁棒性。</li>
<li>低数据速率：Zigbee协议适用于低数据速率的应用，通常在10-100 kbps的范围内。</li>
<li>安全性：Zigbee协议提供多层安全机制，包括加密、认证和访问控制，以确保数据的安全性和网络的保密性。</li>
<li>应用层协议：Zigbee协议定义了一系列的应用层协议，用于特定的应用领域，如家庭自动化、智能能源管理、工业控制等。</li>
</ol>
<p>Zigbee协议广泛应用于物联网领域，包括智能家居、智能建筑、工业自动化、农业监测等。它提供了一种低成本、低功耗、可靠且安全的无线通信解决方案。</p>
<h2 id="zigbee网关">Zigbee网关</h2>
<p>Zigbee网关是连接Zigbee无线通信网络与其他网络（如以太网、Wi-Fi等）的设备。它充当一个桥梁，通过与Zigbee设备建立无线连接，将Zigbee设备的数据转发到其他网络，或将其他网络的命令传递给Zigbee设备。Zigbee网关通常具备数据转换和协议转换的功能，以适应不同网络之间的数据交互需求。</p>
<h2 id="zigbee组播">Zigbee组播</h2>
<p>Zigbee组播是Zigbee网络中的一种通信方式，用于一对多的数据传输。在Zigbee网络中，多个设备可以加入同一个组播组，并通过组播组地址进行通信。当一个设备发送数据到组播组地址时，所有加入该组播组的设备都可以接收到该数据。Zigbee组播可以用于广播命令、控制多个设备或进行集群通信等场景。</p>
<h2 id="zigbee节点">Zigbee节点</h2>
<p>Zigbee节点是指加入Zigbee无线通信网络的设备。每个Zigbee节点可以是传感器、执行器、控制器或其他类型的设备。Zigbee节点通过与Zigbee协调器通信，参与组网、数据传输和网络管理等操作。每个Zigbee节点具有唯一的64位或16位的节点地址，用于在Zigbee网络中进行标识和通信。</p>
<h2 id="zigbee设备">Zigbee设备</h2>
<p>Zigbee设备是指采用Zigbee通信协议的终端设备，如智能灯泡、智能插座、传感器等。这些设备可以通过Zigbee协议进行通信和互联，构建起一个Zigbee网络。在Zigbee网络中，虽然Zigbee节点和Zigbee设备通常可以视为相同的概念，但有一些微妙的区别：</p>
<ol>
<li>角色：Zigbee节点可以扮演不同的角色，例如协调器（Coordinator）、路由器（Router）和终端设备（End Device）。而Zigbee设备通常被视为终端设备，扮演终端设备角色。</li>
<li>能力：Zigbee节点通常具有更复杂的功能和能力，可以作为网络的核心，负责管理网络的拓扑结构、路由选择等。而Zigbee设备通常具有更简单的功能，执行特定的任务或提供特定的服务。</li>
<li>参与程度：Zigbee节点更强调对整个Zigbee网络的参与和管理，通常需要进行配置和设置。而Zigbee设备更强调作为终端设备的使用，通常不需要进行复杂的配置和管理。</li>
</ol>
<p>需要注意的是，这些区别并不是严格的定义，而是对于Zigbee网络中的概念的一种常见理解。在实际应用中，节点和设备的概念可能会交叉使用，具体的区分可以根据具体的实际情况和需求来确定。</p>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 7</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-07/</link>
      <pubDate>Thu, 30 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-07/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/longest-common-prefix/&#34;&gt;14. 最长公共前缀&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;编写一个函数来查找字符串数组中的最长公共前缀。&lt;/p&gt;
&lt;p&gt;如果不存在公共前缀，返回空字符串 &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;示例 1：
输入：strs = [&amp;#34;flower&amp;#34;,&amp;#34;flow&amp;#34;,&amp;#34;flight&amp;#34;]
输出：&amp;#34;fl&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;temp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;temp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStrValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStrValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minStr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;总的来说就是，先将字符串数组排序，拿到最短的字符串，通过遍历这个最短的字符串，依次对比其他字符串相同下标的字符，是否相等，拿到出现不相等的下标，然后截取这个最短字符串的前缀即是我们要求的值。&lt;/li&gt;
&lt;li&gt;首先，如果字符串数组是&lt;code&gt;[&amp;quot;&amp;quot;]&lt;/code&gt;,直接返回结果为&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果字符串数组只有一个元素，就返回元素自身。&lt;/li&gt;
&lt;li&gt;使用冒泡排序，将字符串数组，长度最短的字符串放在前面，获取最短字符串的值。&lt;/li&gt;
&lt;li&gt;遍历最短字符串，依次对比其他字符串的相同下标的字符，是否相等，如果不相等，就返回存在不相等的下标，比如&lt;code&gt;[ &#39;flow&#39;, &#39;flower&#39;, &#39;flight&#39; ]&lt;/code&gt;，通过&lt;code&gt;flow&lt;/code&gt;来遍历，然后会在&lt;code&gt;o&lt;/code&gt;也就是下标为&lt;code&gt;2&lt;/code&gt;时，出现不相等，此时就截取最短字符串的值，&lt;code&gt;minStr.substring(0, i)&lt;/code&gt;，最长公共前缀。&lt;/li&gt;
&lt;li&gt;题外话，前面的&lt;code&gt;if&lt;/code&gt;是在力扣提交解法，反馈之后补上的，有点写测试用例的意思，当时我也在想，能不能有一个完美的解法，但是，仔细一想，直接根据特殊场景，给出直接的结果，虽然会觉得代码有点难看，但结果本身就是提高算法效率的事情，所以就这样了。一开始这道题目没有一点思路的，反复研究，才想到解法。不管解法好坏，当下的目的是解得出来，思路最重要，等积累到一定程度，自己能力有所长进，相信给出的解法一定会越来越优雅。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://medium.com/@oyinade/stop-telling-people-everything-5cfc217988a8&#34;&gt;Stop Telling People Everything. My experience | by Oyinade | Oct, 2023 | Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你知道，当人们说不要透露下一步或者自己的计划给别人，不要告诉别人任何事情。在某种程度上，我一直觉得这句话很难理解，因为你不告诉别人你的情况，别人怎么能帮到你呢？我想说的是，没有人天生就是一座孤岛，在你生命的某个时刻，你需要和别人有交集。你需要别人帮助你，指导你，给你指路。&lt;/p&gt;
&lt;p&gt;让我用自己来举例子，在三年前，当我还在读大学的时候，我接到了一个很小的项目，我决定测试一下这句话，看看我最后的表现如何，所以我没有告诉任何人关于这个项目。&lt;/p&gt;
&lt;p&gt;当然，我对这个项目做了研究，我还上网寻求指导，我很有信心它会成为一个非常棒的项目。&lt;/p&gt;
&lt;p&gt;我要展示作品的那一天到来了，当我起身开始展示时，我的很多朋友，甚至我周围的人，都有点震惊地发现，我被交给了这个项目，却没有提起任何事情，因为这是一个相当大的交易。&lt;/p&gt;
&lt;p&gt;我能听到有人说，“她为什么不告诉我们”的窃窃私语，但木已成舟，我现在要展示它。当我开始我的演讲时，我没有足够的信心来讲好，我的肢体语言传达了一个完全不同的信息，我匆忙做了所有的事情，一个本应该花45分钟简单而清晰的解释的演讲，在15分钟内就完成了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/longest-common-prefix/">14. 最长公共前缀</a></p>
<p>编写一个函数来查找字符串数组中的最长公共前缀。</p>
<p>如果不存在公共前缀，返回空字符串 <code>&quot;&quot;</code>。</p>
<pre tabindex="0"><code>示例 1：
输入：strs = [&#34;flower&#34;,&#34;flow&#34;,&#34;flight&#34;]
输出：&#34;fl&#34;
</code></pre><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">strs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&#34;&#34;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">strs</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">strs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">strs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">strs</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="nx">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">strs</span><span class="p">[</span><span class="nx">j</span><span class="p">].</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">strs</span><span class="p">[</span><span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">].</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="kd">let</span> <span class="nx">temp</span> <span class="o">=</span> <span class="nx">strs</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">                <span class="nx">strs</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">=</span> <span class="nx">strs</span><span class="p">[</span><span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">                <span class="nx">strs</span><span class="p">[</span><span class="nx">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nx">temp</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">minStr</span> <span class="o">=</span> <span class="nx">strs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">minStr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">const</span> <span class="nx">minStrValue</span> <span class="o">=</span> <span class="nx">minStr</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">strs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">strs</span><span class="p">[</span><span class="nx">j</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span> <span class="o">!==</span> <span class="nx">minStrValue</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="nx">minStr</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">minStr</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>总的来说就是，先将字符串数组排序，拿到最短的字符串，通过遍历这个最短的字符串，依次对比其他字符串相同下标的字符，是否相等，拿到出现不相等的下标，然后截取这个最短字符串的前缀即是我们要求的值。</li>
<li>首先，如果字符串数组是<code>[&quot;&quot;]</code>,直接返回结果为<code>&quot;&quot;</code>。</li>
<li>如果字符串数组只有一个元素，就返回元素自身。</li>
<li>使用冒泡排序，将字符串数组，长度最短的字符串放在前面，获取最短字符串的值。</li>
<li>遍历最短字符串，依次对比其他字符串的相同下标的字符，是否相等，如果不相等，就返回存在不相等的下标，比如<code>[ 'flow', 'flower', 'flight' ]</code>，通过<code>flow</code>来遍历，然后会在<code>o</code>也就是下标为<code>2</code>时，出现不相等，此时就截取最短字符串的值，<code>minStr.substring(0, i)</code>，最长公共前缀。</li>
<li>题外话，前面的<code>if</code>是在力扣提交解法，反馈之后补上的，有点写测试用例的意思，当时我也在想，能不能有一个完美的解法，但是，仔细一想，直接根据特殊场景，给出直接的结果，虽然会觉得代码有点难看，但结果本身就是提高算法效率的事情，所以就这样了。一开始这道题目没有一点思路的，反复研究，才想到解法。不管解法好坏，当下的目的是解得出来，思路最重要，等积累到一定程度，自己能力有所长进，相信给出的解法一定会越来越优雅。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://medium.com/@oyinade/stop-telling-people-everything-5cfc217988a8">Stop Telling People Everything. My experience | by Oyinade | Oct, 2023 | Medium</a></p>
<p>你知道，当人们说不要透露下一步或者自己的计划给别人，不要告诉别人任何事情。在某种程度上，我一直觉得这句话很难理解，因为你不告诉别人你的情况，别人怎么能帮到你呢？我想说的是，没有人天生就是一座孤岛，在你生命的某个时刻，你需要和别人有交集。你需要别人帮助你，指导你，给你指路。</p>
<p>让我用自己来举例子，在三年前，当我还在读大学的时候，我接到了一个很小的项目，我决定测试一下这句话，看看我最后的表现如何，所以我没有告诉任何人关于这个项目。</p>
<p>当然，我对这个项目做了研究，我还上网寻求指导，我很有信心它会成为一个非常棒的项目。</p>
<p>我要展示作品的那一天到来了，当我起身开始展示时，我的很多朋友，甚至我周围的人，都有点震惊地发现，我被交给了这个项目，却没有提起任何事情，因为这是一个相当大的交易。</p>
<p>我能听到有人说，“她为什么不告诉我们”的窃窃私语，但木已成舟，我现在要展示它。当我开始我的演讲时，我没有足够的信心来讲好，我的肢体语言传达了一个完全不同的信息，我匆忙做了所有的事情，一个本应该花45分钟简单而清晰的解释的演讲，在15分钟内就完成了。</p>
<p>讲师们很不高兴，事实上，如果我能把他们脸上的表情用语言表达出来，那就是，我们应该把它交给别人。</p>
<p>在我完成演讲后，我的一个朋友过来问我，你为什么不告诉我们，然后我们就可以帮助你或指导你怎么做了。我一句话也说不出来，因为我认为我做的是对的。但是我的表现和对整个情况的判断低于平均水平，没有给人留下深刻的印象。</p>
<p>说句公道话，我会让别人教我怎么做，我从那次经历中学到了什么呢，那就是，如果你不知道如何做某件事，就向能帮助你的人求助，不要指望自己能做得很好。</p>
<p>“别再向别人透露你的计划了。”</p>
<p>我认为我对这个概念的理解不够好，或者我可能把它用在了错误的情况下。我甚至读过一些关于生活中真正成功人士的书，他们也说了同样的话，但我不明白他们的意思。</p>
<p>我仍然在努力理解这句话的真正含义以及如何应用它。如果你能帮助我更清楚地理解，我将不胜感激，因为最近我一直在经历艰难的挑战，老实说，我需要帮助。</p>
<p>所以我同意这句话吗？不完全是。我觉得如果你的计划需要帮助，你应该去找那些更了解你的人，那些有纯洁意图的人。</p>
<h2 id="tip">Tip</h2>
<pre tabindex="0"><code>X [ERROR] No known conditions for &#34;./lib/locale/lang/zh-cn&#34; specifier in &#34;element-plus&#34; package [plugin vite:dep-scan]
</code></pre><p><code>Vue3</code>项目模版打算部署至<code>Sentry</code>前端监控系统试用，然后就运行项目，因为<code>nodejs</code>版本升级到了<code>v18.18.0</code>，出现一些依赖不兼容的问题，就打算趁这个机会升级至<code>Vite5</code>，然后就遇到了<code>Element Plus</code>组件库国际化问题，研究了一下，是用法上面有了变化导致的，具体可以看这个<code>issue</code>，[<a href="https://github.com/element-plus/element-plus/issues/13609">i18n] [All] [plugin:vite:import-analysis] No known conditions for &ldquo;./lib/locale/lang/zh-cn&rdquo; specifier in &ldquo;element-plus&rdquo; package · Issue #13609 · element-plus/element-plus (github.com)</a>，方案就是：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// 2.3.7以及之前的用法
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="nx">zhCN</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/lib/locale/lang/zh-cn&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">en</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/lib/locale/lang/en&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// 2.3.8+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="nx">zhCN</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/dist/locale/zh-cn.mjs&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">en</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/dist/locale/en.mjs&#34;</span><span class="p">;</span>
</span></span></code></pre></div><h2 id="share">Share</h2>
<p>“我今天去种地了，什么地？对你的死心塌地。我今天还钓鱼了，什么鱼？对你的至死不渝。”在B站听的电影解说，现听现抄，被逗笑了，实属蚌埠住了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《周恩来的青少年时代》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%91%A8%E6%81%A9%E6%9D%A5%E7%9A%84%E9%9D%92%E5%B0%91%E5%B9%B4%E6%97%B6%E4%BB%A3/</link>
      <pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%91%A8%E6%81%A9%E6%9D%A5%E7%9A%84%E9%9D%92%E5%B0%91%E5%B9%B4%E6%97%B6%E4%BB%A3/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311280008257.png&#34; alt=&#34;image-20231128000814944&#34; style=&#34;zoom: 67%;&#34; /&gt;
&lt;h2 id=&#34;为中华之崛起而读书&#34;&gt;为中华之崛起而读书&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;有一位身材瘦小纤弱、仪表清秀英俊的热血少年，找来一把剪刀，“喀嚓”一声，剪掉了象征清朝臣民的辫子，表示同清朝政府决裂，成为全校第一个剪辫子的学生。在他的影响下，许多同学也都纷纷剪掉了辫子。这位冒着要掉脑袋危险的少年不是别人，他就是周恩来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教历史的高老师很富于正义感，经常向学生灌输反清革命思想，慷慨激昂地讲述孙中山、黄兴、陈天华、秋瑾等革命党人的事迹和黄花岗七十二烈士英勇牺牲的悲壮史实，并向思想进步的学生推荐进步书刊。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来后来在回忆童年生活时曾说到三个“母亲”。“我的生母慈祥、温柔，但文化不高，因为万家认为女人不应该受教育。可是我从她的身上学到了善良和宽容大度的品德。我的生母是个爽朗的人，因此，我的性格也有她的这一部分……我与世无争。我的嗣母才学出众，她的父母很开明。她教我热爱知识，学会动脑筋。我的奶妈把我带到大运河边她自己的家里。我从她那里了解到劳动人民是如何生活的。她教我大公无私。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来写过一篇《念娘文》，满怀深情地说道：“直到今天，我还得感谢母亲的启发，没她的爱护，我不会走上好学的道路。”“慈母终日守在房中不出门，我的好静的性格是从她身上继承过来的。”情真意切地表达了内心对母亲的感情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;几十年后周恩来曾回忆道：“封建家庭素来好面子，摆空场面，宁可债台高筑，不肯丢掉面子。因此，我从小就懂得生活艰难。父亲常外出，我10岁、11岁即开始当家，照管家里柴米油盐，外出应酬，在这方面，给了我一些锻炼。”他还说：“我小的时候，是一个破产的封建家庭子弟，只有十一二岁，母亲死了，父亲在外谋事，我就是靠天天借债过日子，最不好受了，借了债还得给人家去磕头，拜圣人。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来认识到是社会黑暗造成了人间的贫富之分，从此，他萌发了反封建的意识。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来后来回忆道：“12岁的那年，我离家去东北。这是我生活和思想转变的关键。没有这一次的离家，我的一生一定也是无所成就，和留在家里的弟兄辈一样，走向悲剧的下场。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;求学南开-崭露才华&#34;&gt;求学南开 崭露才华&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;南开学校创始人严修书写的“容止格言”：面必净，发必理，衣必整，钮必结。头容正，肩容平，胸容宽，背容直。气象：勿傲、勿暴、勿怠；颜色：宜和、宜静、宜庄。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来生活虽然艰难困苦，可是他发奋读书的意志十分坚定。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来深知到南开学习的机会得来不易，因此非常珍惜，读书极为刻苦用功，各门成绩一直名列班级或者年级前列。为此，他规定自己要做到5个不虚度：读书不虚度，学业不虚度，习师不虚度，交友不虚度，光阴不虚度。他自从来到南开以后，每天起床钟一响，就立即起床、跑步、做操，保持着在沈阳东关学校时锻炼身体的良好习惯。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来的这篇《诚能动物论》被南开《校风》作为“代论”发表在第30期上。在周恩来所有的中学作文中，《诚能动物论》应该是写得最好，也是最著名的一篇。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来的数学成绩也很好，心算比一般同学的笔算还快。《校风》上曾记载道：他的笔算速赛是48名参赛中最优者之一，代数得满分。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来刚入学时，英语基础比较差。他努力学习，刻苦攻读，每天早晨起床和中午下午课余时间都用来学习英文。他勤学苦练、手不释卷。进入第二学年，他的英文成绩大为改观，甚至能读一些英文原著。在《南开毕业同学录》中的《周恩来小传》里这样记载：“初至英文非佳，嗣后发奋攻读，始同趋进步。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;天下兴亡，匹夫有责。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新旧不并立，冰炭不同炉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“敬业乐群会”的组织章程严密，活动丰富多彩。该会下设智育部、稽古部、演说部和俱乐部，还有诗团、国文研究团、辩论团、军事研究团、演剧团、音乐团等。后来还办起图书室，定期举行学术报告会、茶话会，邀请中外名人来校演讲，在学生中的影响越来越大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来认为，戏剧是唤醒和教育人民的最通俗的方式。他十分热心于新剧演出。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来在南开的4年，可以说是全面成长的4年，也是才华初露的4年。通过勤学苦读，他成为了一个非常优秀的学生；而他又决不是一个一心“只读圣贤书”的学生。相反，他有着广泛的兴趣，表现出多方面的才能。他经常积极参加各种社团活动，曾组建或参与过的全校性及班级范围的团体就有近10个。在给朋友的信中，他曾言自己参加各种课外活动并从中获得了不少乐趣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来不愿意贪图现成的财富和安逸，要靠自己的努力选择未来，这也是一个有志青年所持的人生态度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1917年6月26日，周恩来以优异的成绩结束了中学时代。在毕业典礼上，张伯苓安排周恩来代表毕业同学讲话，徐世昌亲自为他颁发毕业证书。周恩来还获得了“国文最佳奖”的金质奖章一枚。在南开学校的毕业证书存根上，记载着他的毕业成绩总平均为89.72分。毕业前夕，周恩来受全班同学委托负责编写同学录，周恩来的小传是由同学常策欧撰写的，文中对周恩来予以高度评价：“君性温和诚实，最富于感情，挚于友谊，凡朋友及公益事，无不尽力。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;东渡日本在彷徨中看到了真理之光&#34;&gt;东渡日本：在彷徨中看到了真理之光&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;周恩来一度陷入严重的思想苦闷之中。他整天喝酒，以为酒可以浇愁。他又学着焚香诵读佛经，开始接受在日本流行的“无生主义”（“修得无生，便是涅槃”）。这是佛教名词，认为一切现象之生灭变化，都是世间众生虚妄分别的产物，本质在于“无生”，修得无生，即是涅槃，即熄灭生死轮回而后获得的一种精神境界。可是，对周恩来这样一个有着崇高抱负的爱国青年来说，当时他的思想虽处在波动之中，但他始终割舍不去的是国家与社会的前途。想到这些，他依然是一腔热血，豪情如虹。    经过一番痛苦的思索与挣扎，他终于从迷惘中走了出来。1918年新年后不久，他在日记中写道，来日本求学，“第一样事情就是炼得铁石心肠，钢硬志气，不为利起，不为势屈”。不久之后，他又在日记中阐述自己的人生见解，他认为，大凡天下真有本事的人总是心里有一定主见，轻易不肯改变的。成败固不足论事，然而当他活着的时候，总要想他所办的事成功，不能因为有挫折便灰心，也不能因为有小小的成功便满足。人总要有个志向，平常的人不过是吃饱了，穿暖了，便以为了事。有大志向的人，便想去救国。    周恩来一边学习日语，一边留心考察日本社会。他经常阅读日文报纸，并注意从接触的实际生活中去学习知识。他在日记中写道：“日本人的一举一动，一切的行事，我们留学的人都应该注意。”他很快为自己定下了生活准则：第一，想要想比现在还新的思想；第二，做要做现在最新的事情；第三，学要学离现在最近的学问。思想要自由，做事要实在，学问要真切。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来也曾受到社会上一种流行看法的影响，认为中国太弱了，日本那样的“军国”道路未必不是救中国的一种办法。但后来他的看法改变了，他在日记中写道：“日本也是行军国主义的国家。军国主义的第一个条件是有强权无公理的。两个军国主义的政策碰到一块儿，自然是要比比谁强谁弱了，而且军国主义必定是扩张领土为最要的事。”“将来欧战完后，德意志的军国主义恐怕难保得住了，日本的军国主义不知又教谁打呢？军国主义在二十世纪上我看是绝对不能存留了。我从前所想的军国贤人政治这两种主义可以救中国的，现在想想实在是大错了。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《新青年》杂志1915年9月创刊于上海，原名《青年杂志》，1916年9月更名为《新青年》，早期主要由陈独秀一人主编。该刊以提倡民主和科学、反对专制和迷信、提倡新道德反对旧道德、提倡新文学反对旧文学为主要内容，成为发起和推动新文化运动的阵地，在当时整个中国思想文化界，尤其是青年知识分子中具有极广泛的影响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;随着进化的轨道，去做那最新最近于大同理想的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;5月10日那天，当中国驻日记者彭翼仲于8天前从轮船上蹈海赴国难的消息传来，周恩来极度震惊，悲愤难抑，在当天的日记上录下了彭翼仲的两句绝命诗：“霹雳一声中日约，亡奴何必贪生！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1918年5月19日，由南开同学会干事长童冠贤介绍，周恩来正式加入新中学会。对此，周恩来在日记中记述：“我今天在新中学会表示我的入会意见，说了一大篇话。大概的意思是：我们中国所以如此衰弱的缘故，全是因为不能图新，又本能保旧，又不能改良……所以我刚入这会，见着这个‘新’字，心里头非常痛快。望诸同志人人心中有着这个‘新’字，中国才有望呢。末了我又说了到日本求学的两大利害，一个是‘主动的观察力’，一个是‘被动的熏染力’。这两层意见说完之后，我说出两句要紧的话赠给大家：‘哲学的思想，科学的能力’。”从此，周恩来成为新中学会成员，开始经常参加新中学会的活动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;马克思主义对他影响显然是主要的，他在10月20日的日记中写道：“二十年华识真理，于今虽晚尚非迟。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1919年3月，南开学校即将创办大学部的消息传到东京，周恩来思考之后，决定重回南开学习，寻求革命的真理。临行前，他将自己十分喜爱的梁启超《自励》一诗，书赠好友王朴山：“献身甘作万矢的，著论求为百世师，誓起民权移旧俗，更研哲理牖新知。十年以后当思我，举国犹狂欲语谁？世界无穷愿无尽，海天寥廓立多时。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在京都逗留期间，周恩来学习了河上肇主编的《社会问题研究》上系统介绍马克思主义理论的文章，懂得了阶级斗争学说。他接受了这门科学，并决心用它来武装自己的头脑。他除了阅读书刊外，有时也外出走走，4次游览了京都名胜岚山，触景生情写下了《雨中岚山》（4月5日）、《雨后岚山》（4月5日）、《游日本京都圆山公园》（4月5日）、《四次游圆山公园》（4月9日）4首诗。其中，《雨中岚山》全诗如下：    雨中二次游岚山，两岸苍松，夹着几株樱。    到尽处突见一山高，流出泉水绿如许，绕石照人。    潇潇雨，雾蒙浓；    一线阳光穿云出，愈见娇妍。    人间的万象真理，愈求愈模糊；    模糊中偶然见着一点光明，真愈觉姣妍。    这首白话诗反映出年轻的周恩来探索革命真理的艰辛，体现了他在各种学说中探寻到马克思主义革命真理的那种无限喜悦和振奋的心情。置身于秀丽景色之中，周恩来思索着自己思想上经历的许多艰难和曲折，回忆着一件件难忘的往事。他觉得朦胧的雨雾中，让人感到渺茫，感到失落，而那穿云透雾的阳光，又给人带来了光明与希望，让他看到了真理之光。    正是在这种心情下，周恩来于1919年4月中旬由神户港登船回国。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;投身于五四洪流&#34;&gt;投身于“五四”洪流&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;觉悟社作为一个崭新的团体，没有设置会长、秘书之类的职衔，组织上实行委员制，本着分工负责的精神，将内部工作分为数类，由全体社员分担。为了斗争的需要，社员的姓名对外不公开，而用抽签的办法，以号取名，用以作为通信的代号或发表文章的笔名。在男会员中周恩来是5号，后化名“伍豪”。女会员中邓颖超是1号，后化名“逸豪”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来在为觉悟社起草的《觉悟的宣言》中，阐述了觉悟社的目标是：“本着反省、实行、持久、奋斗、活泼、愉快、牺牲、创造、批评、互助的精神，求适应于‘人’的生活——做学生方面的‘思想改造’事业。抽象的话是：要本‘革心’、‘革新’的精神，求大家的‘自觉’、‘自决’。”在这篇宣言的最后，周恩来充满激情地写道：“我们的决心就是齐心努力向‘觉悟’道上走，同时也盼望社会上所有的人都向‘觉悟’道上走。努力！奋斗！一步步的‘觉悟’，一步步的‘进化’。‘觉悟’无边无止，‘进化’无穷。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来撰写的《觉悟》一文实际上是该刊的发刊词。文中写道：“人在世界上同一切生物最大的区别，就是人能够觉悟，一切生物不能够觉悟。觉悟的起点，由于人能够知道自己。因着觉悟，遂能解决人生的人格、地位、趋向，向进化方面求种种适应人的生活。”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;身陷囹圄&#34;&gt;身陷囹圄&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;4月2日，周恩来、马千里、时子周等6名被拘代表率先绝食。到了4日，全体绝食，决心以死捍卫初衷。他们说：“我们宁愿饿死，也不能因迫害而病死。”并提出3项要求：一是释放单独扣押在拘留所的代表；二是允许代表们到院中散步，互相往来；三是将被拘代表送法庭或由警厅司法科受理，速开公审，按法律解决。面对全体代表团结一致、视死如归的抗议，警厅不得不答应了代表们的这3项要求，并被迫将患病或未成年的各界联合会代表3人释放，绝食斗争取得了决定性胜利。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在狱中，周恩来向大家宣讲马克思主义。从当年的《检厅日录》中，可以看到这样的记载：5月14日，由周恩来介绍马克思学说；5月28日，周恩来讲马克思学说——历史上经济组织的变迁同马克思传记；5月31日，仍由周恩来讲马克思学说——唯物史观；6月2日，仍由周恩来讲马克思学说——唯物史观的总论同阶级竞争史；6月4日，仍由周恩来讲马克思学说——经济论中的余工余值说；6月7日，周恩来讲解马克思的学说——经济论中的资本论同资产集中说，等等。他还编写了记述狱中斗争实况的《警厅拘留记》和《检厅日录》两本书。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在被羁押、失去自由的几个月里，周恩来思考了许多问题，出狱后，他在一封讲到自己的共产主义信念的信中说，“思想是颤动于狱中”，入狱前他是一个关心国家命运和社会改造，积极参加进步活动的学生；出狱后，他就逐步走上职业革命的道路。他说，一种革命意识的萌芽“是从这个时候开始的”。同时，他深深感到苦难的中国需要有根本的改造，而改造必须有更加强大的社会力量，要“到民间去”，进行“农工组织之运动”，而且必须有正确的思想、理论来指导。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;会上，周恩来还分析了为什么他们每次请愿都没有达到预期效果的原因。他认为：自从五四运动以来，涌现出来的爱国团体并不少。但是团体虽多，步调却不够统一。只有改造这些团体，使各个团体真正联合起来，才能达到改造旧中国的目的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;异域的斗争&#34;&gt;异域的斗争&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;周恩来为什么将目的地选在欧洲呢？在他到达巴黎后不久写给表兄陈式周的信中谈到了这一点：“主要意旨，惟在求实学以谋自立，虔心考查以求了解彼邦社会真相暨解决诸道，而思所以应用之于吾民族间者。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1921年春天，经早期共产党人张申府、刘清扬介绍，周恩来在巴黎加入了中国共产党，成为中国共产党建党前八个发起组之一的巴黎共产主义小组成员。周恩来入党后，因工作需要，他放弃了报考英国爱丁堡大学的机会，与天津4名勤工俭学学生转到法国中部布卢瓦城学习。本来，爱丁堡大学也同意免去入学考试，只考一门英文。他放弃报考的原因除因工作需要之外，还有另外的原因：考试时间定在9月，开学则在10月，还要等待半年之久；更令他头疼的是，英国的生活费用是全欧洲最高的，在伦敦生活，每年的生活费用约200镑，折合中国货币在千元以上，爱丁堡是苏格兰首府，生活费用稍为便宜，但每年仍需千元左右，是巴黎的两倍。巴黎虽然是世界名都，可谓花花世界，但生活费用相对伦敦而言低得多，每月只需中国货币40元，一年也不过500元左右。这对经济拮据的周恩来来说，当然是一个好去处。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;从少年到赤光&#34;&gt;从《少年》到《赤光》&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;经过1921年的“二八斗争”及反对中法秘密大借款和占领里大的斗争，广大勤工俭学学生受到深刻的教育。首先，勤工俭学的理想在当时的现实社会里是很难实现的。如果没有社会制度的变革，即使个人奋斗的力量无穷，也只是以卵击石。无论是实行工读主义还是勤工俭学主义，都不能达到改造社会的目的，只有在马克思主义指导下进行社会革命才是唯一的出路。其次，勤工俭学学生们认清了资产阶级的“自由、平等、博爱”的虚伪性，他们没有想到，号称自由、高唱人权的法兰西，竟然用武力镇压学生，竟然出现这种无耻、卑劣的举动。他们不远万里，漂洋过海，来到法兰西，是为追求光明而来的，却仍然被邪恶、强权所左右。光明在哪里？学生们相信，理想总有一天会实现的。在这种信念的鼓舞下，他们没有屈服，没有颓丧，而是准备更加英勇、机智地进行斗争。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中法当局坚持敌视并驱逐中国勤工俭学学生的行为，很快催生了中国旅欧共产主义组织。1921年底到1922年初，由周恩来、赵世炎等发起，邀请了部分团体代表，在巴黎共同商讨组织旅欧“中国少年共产党”的事宜。代表们就“中国少年共产党”的组织、纲领、成立时间等问题进行了充分讨论，并达成协议。会后，赵世炎、李维汉等在法国，聂荣臻、刘伯坚等在比利时，周恩来去德国，分别建立和发展“中国少年共产党”的基层组织，为成立统一组织作准备。这些“中国少年共产党”成员在国共合作后，绝大部分都成为中国共产党员，再以个人名义加入了中国国民党。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从这时开始，邓小平在周恩来领导下工作，二人建立起深厚友谊。50多年后，邓小平对外国记者说：“周总理是一生勤勤恳恳、任劳任怨工作的人。他一天的工作时间总超过12小时，有时在16小时以上，一生如此。我们认识很早，在法国勤工俭学时就住在一起。对我来说他始终是一个兄长。我们差不多同时期走上了革命的道路。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;邓小平经常是白天做工，下工后即赶到《赤光》编辑部。在那狭小的房间里，周恩来将写好或修改好的稿件交给他，邓小平把它一笔一画地刻写在蜡纸上，然后用一台简陋的印刷机印好，再装订起来。为了能保证每半月出一期，每期12页左右的内容，周恩来、邓小平一同忘我地工作着。经常是深夜工作完成后，邓小平就在这小房间里打上地铺和周恩来住在一起。这段时间，邓小平和长他6岁的周恩来十分接近，邓小平很敬重这位兄长式的同志和领导，从他身上学到了许多东西。周恩来也十分喜欢邓小平，给予他很多的关心和爱护。在周恩来的直接领导和帮助下，邓小平认真的工作态度和出色的工作成绩给其他的同志们留下了深刻的印象。几十年后，他们的战友还清楚地记得：“当时，邓小平同志负责《赤光》的编辑出版工作，几乎我每次到书记局去，都亲眼看见他正在搞刻蜡版、油印、装订工作，他的字既工整又美观，刊物印刷清晰。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来作为主编和主要撰稿人，在《赤光》上发表的文章多达30余篇。其中较重要的有：《军阀统治下的中国》《列强共管中国的步骤》《革命救国论》《国际帝国主义乘火打劫的机会又到了》《救国运动与爱国主义》《北洋军阀与外交关系》《华府会议的又一教训》《这才是一个确实的“进兵”中国》《再论中国共产主义者之加入国民党问题》等。从这些文章中可以反映出，周恩来对中国社会各阶级的关系，中国革命的当前任务和远景等基本问题，都已有了比较清楚和符合实际的认识。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;黄埔军校政治部主任&#34;&gt;黄埔军校政治部主任&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;6月16日国共两党人士500多人，隆重举行了开学典礼。孙中山以国民党总理的身份亲临致辞，发表重要演说，指明军校宗旨就是：创造革命军，来挽救中国的危亡。他在开学演说中号召全体师生：“从今天起立一个志愿，一生一世都不存升官发财的心理”，要“学先烈的行为，像他们一样，舍身成仁”，不“贪生畏死”。他还亲自批准将这样一副对联贴在军校大门上：升官发财行往他处，贪生畏死勿入斯门。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来之所以能够到黄埔军校任职，是由两方面的因素促成的：一是组织的要求。根据档案史料记载，1924年7月，人在巴黎的周恩来接到中央指示，要他回国负责国共两党的统一战线工作。二是张申府的推荐。张申府与周恩来在法国结识，是中国共产党最早的共产主义小组创始人，也是周恩来的入党介绍人。周恩来去法国勤工俭学时，比张先到法国，两人在巴黎相逢，接触较多，经常聚会畅谈，特别是在中国共产党法国支部方面的事情，两人经常有着一致的意见，建立起了深厚的感情。1924年回国后，张申府参与了黄埔军校的筹建工作，并被孙中山任命为黄埔军校政治部副主任（时任主任为戴季陶），是中共从事早期军事工作的党员之一，也是当时在黄埔军校中担任的最高职务的中共党员。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来到任之后，这位26岁的年轻人，很快就崭露出了令人瞩目的才华。他按照苏联创建红军的经验，逐步建立起一整套行之有效的政治工作制度，健全政治工作机构，设立各级党代表，传授三民主义和马克思主义，开设具有最新内容、理论性很强的政治课，开展多种形式的思想政治教育等，开辟了黄埔军校乃至以后国民革命军政治工作的新局面。    第一，建立健全政治部组织机构和工作制度。周恩来一到任，就对政治部原有班子进行了整顿，增设组织机构，设置“指导”、“编纂”、“秘书”三股，并从黄埔一期毕业生中选调优秀共产党员任职，以保证政治部工作正常运转；制定了服务细则，明确了政治工作宗旨，规定了各级领导的权力范围和工作职责。对全校的政治思想教育工作，进行了分工，制定了工作细则和条例，如《政治部服务细则》《本校政治部政治指导员条例》《宣传队组织条例》《政治讨论会规则》等。此外，军校政治部还建立了政治问答制度。上述制度的建立与规则、条例的制定，对于搞好军校的政治教育并使其走向正规化，起到了十分重要的作用。后来，毛泽东在总结第一次国内革命战争时期的工作经验时说：“那时军队有一种新气象，官兵之间和军民之间大体上是团结的，奋勇向前的革命精神充满了军队。那时军队设立了党代表和政治部，这种制度是中国历史上没有的，靠了这种制度使军队一新其面目。”而这种制度在中国的实行正是从黄埔军校开始的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来还给军校各级长官另加政治教育的“小灶”，要求他们每星期二、五晚上7时开始，听特别讲演一个半小时。特别讲演的题目均由政治部拟定，请各界名人到校。在被称为大花厅的礼堂里，黄埔军校教官们见到了许许多多站立在那个时代潮头的人物：彭湃到这里讲广东海丰农民运动，李求实讲全国青年运动，邓中夏讲省港大罢工，何香凝讲廖仲恺的革命事略，宋子文讲财政，李烈钧讲军事，孙科讲吏治等。毛泽东、刘少奇都曾在这里发表演讲。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;志同道合的伴侣&#34;&gt;志同道合的伴侣&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;1923年5月，邓颖超在《女星》旬刊上发表了一篇文章，其中有一段话是这样写的：“两性的恋爱，本来是光明正大的事，并不是污浊神秘的。但它的来源，须得要基础于纯洁的友爱，美的感情的渐馥渐浓，个性的接近，相互的了解，思想的融合，人生观的一致。此外，更需两性间觅得共同的‘学’与‘业’来维系着有移动性的爱情，以期永久。这种真纯善美的恋爱，是人生之花，是精神的高尚产品，对于社会，对于人类将来，是有良好影响的。”从这段话里，明显反映了她和周恩来之间真纯善美的恋爱关系。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311280008257.png" alt="image-20231128000814944" style="zoom: 67%;" />
<h2 id="为中华之崛起而读书">为中华之崛起而读书</h2>
<ol>
<li>
<p>有一位身材瘦小纤弱、仪表清秀英俊的热血少年，找来一把剪刀，“喀嚓”一声，剪掉了象征清朝臣民的辫子，表示同清朝政府决裂，成为全校第一个剪辫子的学生。在他的影响下，许多同学也都纷纷剪掉了辫子。这位冒着要掉脑袋危险的少年不是别人，他就是周恩来。</p>
</li>
<li>
<p>教历史的高老师很富于正义感，经常向学生灌输反清革命思想，慷慨激昂地讲述孙中山、黄兴、陈天华、秋瑾等革命党人的事迹和黄花岗七十二烈士英勇牺牲的悲壮史实，并向思想进步的学生推荐进步书刊。</p>
</li>
<li>
<p>周恩来后来在回忆童年生活时曾说到三个“母亲”。“我的生母慈祥、温柔，但文化不高，因为万家认为女人不应该受教育。可是我从她的身上学到了善良和宽容大度的品德。我的生母是个爽朗的人，因此，我的性格也有她的这一部分……我与世无争。我的嗣母才学出众，她的父母很开明。她教我热爱知识，学会动脑筋。我的奶妈把我带到大运河边她自己的家里。我从她那里了解到劳动人民是如何生活的。她教我大公无私。”</p>
</li>
<li>
<p>周恩来写过一篇《念娘文》，满怀深情地说道：“直到今天，我还得感谢母亲的启发，没她的爱护，我不会走上好学的道路。”“慈母终日守在房中不出门，我的好静的性格是从她身上继承过来的。”情真意切地表达了内心对母亲的感情。</p>
</li>
<li>
<p>几十年后周恩来曾回忆道：“封建家庭素来好面子，摆空场面，宁可债台高筑，不肯丢掉面子。因此，我从小就懂得生活艰难。父亲常外出，我10岁、11岁即开始当家，照管家里柴米油盐，外出应酬，在这方面，给了我一些锻炼。”他还说：“我小的时候，是一个破产的封建家庭子弟，只有十一二岁，母亲死了，父亲在外谋事，我就是靠天天借债过日子，最不好受了，借了债还得给人家去磕头，拜圣人。”</p>
</li>
<li>
<p>周恩来认识到是社会黑暗造成了人间的贫富之分，从此，他萌发了反封建的意识。</p>
</li>
<li>
<p>周恩来后来回忆道：“12岁的那年，我离家去东北。这是我生活和思想转变的关键。没有这一次的离家，我的一生一定也是无所成就，和留在家里的弟兄辈一样，走向悲剧的下场。”</p>
</li>
</ol>
<h2 id="求学南开-崭露才华">求学南开 崭露才华</h2>
<ol>
<li>
<p>南开学校创始人严修书写的“容止格言”：面必净，发必理，衣必整，钮必结。头容正，肩容平，胸容宽，背容直。气象：勿傲、勿暴、勿怠；颜色：宜和、宜静、宜庄。</p>
</li>
<li>
<p>周恩来生活虽然艰难困苦，可是他发奋读书的意志十分坚定。</p>
</li>
<li>
<p>周恩来深知到南开学习的机会得来不易，因此非常珍惜，读书极为刻苦用功，各门成绩一直名列班级或者年级前列。为此，他规定自己要做到5个不虚度：读书不虚度，学业不虚度，习师不虚度，交友不虚度，光阴不虚度。他自从来到南开以后，每天起床钟一响，就立即起床、跑步、做操，保持着在沈阳东关学校时锻炼身体的良好习惯。</p>
</li>
<li>
<p>周恩来的这篇《诚能动物论》被南开《校风》作为“代论”发表在第30期上。在周恩来所有的中学作文中，《诚能动物论》应该是写得最好，也是最著名的一篇。</p>
</li>
<li>
<p>周恩来的数学成绩也很好，心算比一般同学的笔算还快。《校风》上曾记载道：他的笔算速赛是48名参赛中最优者之一，代数得满分。</p>
</li>
<li>
<p>周恩来刚入学时，英语基础比较差。他努力学习，刻苦攻读，每天早晨起床和中午下午课余时间都用来学习英文。他勤学苦练、手不释卷。进入第二学年，他的英文成绩大为改观，甚至能读一些英文原著。在《南开毕业同学录》中的《周恩来小传》里这样记载：“初至英文非佳，嗣后发奋攻读，始同趋进步。”</p>
</li>
<li>
<p>天下兴亡，匹夫有责。</p>
</li>
<li>
<p>新旧不并立，冰炭不同炉。</p>
</li>
<li>
<p>“敬业乐群会”的组织章程严密，活动丰富多彩。该会下设智育部、稽古部、演说部和俱乐部，还有诗团、国文研究团、辩论团、军事研究团、演剧团、音乐团等。后来还办起图书室，定期举行学术报告会、茶话会，邀请中外名人来校演讲，在学生中的影响越来越大。</p>
</li>
<li>
<p>周恩来认为，戏剧是唤醒和教育人民的最通俗的方式。他十分热心于新剧演出。</p>
</li>
<li>
<p>周恩来在南开的4年，可以说是全面成长的4年，也是才华初露的4年。通过勤学苦读，他成为了一个非常优秀的学生；而他又决不是一个一心“只读圣贤书”的学生。相反，他有着广泛的兴趣，表现出多方面的才能。他经常积极参加各种社团活动，曾组建或参与过的全校性及班级范围的团体就有近10个。在给朋友的信中，他曾言自己参加各种课外活动并从中获得了不少乐趣。</p>
</li>
<li>
<p>周恩来不愿意贪图现成的财富和安逸，要靠自己的努力选择未来，这也是一个有志青年所持的人生态度。</p>
</li>
<li>
<p>1917年6月26日，周恩来以优异的成绩结束了中学时代。在毕业典礼上，张伯苓安排周恩来代表毕业同学讲话，徐世昌亲自为他颁发毕业证书。周恩来还获得了“国文最佳奖”的金质奖章一枚。在南开学校的毕业证书存根上，记载着他的毕业成绩总平均为89.72分。毕业前夕，周恩来受全班同学委托负责编写同学录，周恩来的小传是由同学常策欧撰写的，文中对周恩来予以高度评价：“君性温和诚实，最富于感情，挚于友谊，凡朋友及公益事，无不尽力。”</p>
</li>
</ol>
<h2 id="东渡日本在彷徨中看到了真理之光">东渡日本：在彷徨中看到了真理之光</h2>
<ol>
<li>
<p>周恩来一度陷入严重的思想苦闷之中。他整天喝酒，以为酒可以浇愁。他又学着焚香诵读佛经，开始接受在日本流行的“无生主义”（“修得无生，便是涅槃”）。这是佛教名词，认为一切现象之生灭变化，都是世间众生虚妄分别的产物，本质在于“无生”，修得无生，即是涅槃，即熄灭生死轮回而后获得的一种精神境界。可是，对周恩来这样一个有着崇高抱负的爱国青年来说，当时他的思想虽处在波动之中，但他始终割舍不去的是国家与社会的前途。想到这些，他依然是一腔热血，豪情如虹。    经过一番痛苦的思索与挣扎，他终于从迷惘中走了出来。1918年新年后不久，他在日记中写道，来日本求学，“第一样事情就是炼得铁石心肠，钢硬志气，不为利起，不为势屈”。不久之后，他又在日记中阐述自己的人生见解，他认为，大凡天下真有本事的人总是心里有一定主见，轻易不肯改变的。成败固不足论事，然而当他活着的时候，总要想他所办的事成功，不能因为有挫折便灰心，也不能因为有小小的成功便满足。人总要有个志向，平常的人不过是吃饱了，穿暖了，便以为了事。有大志向的人，便想去救国。    周恩来一边学习日语，一边留心考察日本社会。他经常阅读日文报纸，并注意从接触的实际生活中去学习知识。他在日记中写道：“日本人的一举一动，一切的行事，我们留学的人都应该注意。”他很快为自己定下了生活准则：第一，想要想比现在还新的思想；第二，做要做现在最新的事情；第三，学要学离现在最近的学问。思想要自由，做事要实在，学问要真切。</p>
</li>
<li>
<p>周恩来也曾受到社会上一种流行看法的影响，认为中国太弱了，日本那样的“军国”道路未必不是救中国的一种办法。但后来他的看法改变了，他在日记中写道：“日本也是行军国主义的国家。军国主义的第一个条件是有强权无公理的。两个军国主义的政策碰到一块儿，自然是要比比谁强谁弱了，而且军国主义必定是扩张领土为最要的事。”“将来欧战完后，德意志的军国主义恐怕难保得住了，日本的军国主义不知又教谁打呢？军国主义在二十世纪上我看是绝对不能存留了。我从前所想的军国贤人政治这两种主义可以救中国的，现在想想实在是大错了。”</p>
</li>
<li>
<p>《新青年》杂志1915年9月创刊于上海，原名《青年杂志》，1916年9月更名为《新青年》，早期主要由陈独秀一人主编。该刊以提倡民主和科学、反对专制和迷信、提倡新道德反对旧道德、提倡新文学反对旧文学为主要内容，成为发起和推动新文化运动的阵地，在当时整个中国思想文化界，尤其是青年知识分子中具有极广泛的影响。</p>
</li>
<li>
<p>随着进化的轨道，去做那最新最近于大同理想的事情。</p>
</li>
<li>
<p>5月10日那天，当中国驻日记者彭翼仲于8天前从轮船上蹈海赴国难的消息传来，周恩来极度震惊，悲愤难抑，在当天的日记上录下了彭翼仲的两句绝命诗：“霹雳一声中日约，亡奴何必贪生！”</p>
</li>
<li>
<p>1918年5月19日，由南开同学会干事长童冠贤介绍，周恩来正式加入新中学会。对此，周恩来在日记中记述：“我今天在新中学会表示我的入会意见，说了一大篇话。大概的意思是：我们中国所以如此衰弱的缘故，全是因为不能图新，又本能保旧，又不能改良……所以我刚入这会，见着这个‘新’字，心里头非常痛快。望诸同志人人心中有着这个‘新’字，中国才有望呢。末了我又说了到日本求学的两大利害，一个是‘主动的观察力’，一个是‘被动的熏染力’。这两层意见说完之后，我说出两句要紧的话赠给大家：‘哲学的思想，科学的能力’。”从此，周恩来成为新中学会成员，开始经常参加新中学会的活动。</p>
</li>
<li>
<p>马克思主义对他影响显然是主要的，他在10月20日的日记中写道：“二十年华识真理，于今虽晚尚非迟。”</p>
</li>
<li>
<p>1919年3月，南开学校即将创办大学部的消息传到东京，周恩来思考之后，决定重回南开学习，寻求革命的真理。临行前，他将自己十分喜爱的梁启超《自励》一诗，书赠好友王朴山：“献身甘作万矢的，著论求为百世师，誓起民权移旧俗，更研哲理牖新知。十年以后当思我，举国犹狂欲语谁？世界无穷愿无尽，海天寥廓立多时。”</p>
</li>
<li>
<p>在京都逗留期间，周恩来学习了河上肇主编的《社会问题研究》上系统介绍马克思主义理论的文章，懂得了阶级斗争学说。他接受了这门科学，并决心用它来武装自己的头脑。他除了阅读书刊外，有时也外出走走，4次游览了京都名胜岚山，触景生情写下了《雨中岚山》（4月5日）、《雨后岚山》（4月5日）、《游日本京都圆山公园》（4月5日）、《四次游圆山公园》（4月9日）4首诗。其中，《雨中岚山》全诗如下：    雨中二次游岚山，两岸苍松，夹着几株樱。    到尽处突见一山高，流出泉水绿如许，绕石照人。    潇潇雨，雾蒙浓；    一线阳光穿云出，愈见娇妍。    人间的万象真理，愈求愈模糊；    模糊中偶然见着一点光明，真愈觉姣妍。    这首白话诗反映出年轻的周恩来探索革命真理的艰辛，体现了他在各种学说中探寻到马克思主义革命真理的那种无限喜悦和振奋的心情。置身于秀丽景色之中，周恩来思索着自己思想上经历的许多艰难和曲折，回忆着一件件难忘的往事。他觉得朦胧的雨雾中，让人感到渺茫，感到失落，而那穿云透雾的阳光，又给人带来了光明与希望，让他看到了真理之光。    正是在这种心情下，周恩来于1919年4月中旬由神户港登船回国。</p>
</li>
</ol>
<h2 id="投身于五四洪流">投身于“五四”洪流</h2>
<ol>
<li>
<p>觉悟社作为一个崭新的团体，没有设置会长、秘书之类的职衔，组织上实行委员制，本着分工负责的精神，将内部工作分为数类，由全体社员分担。为了斗争的需要，社员的姓名对外不公开，而用抽签的办法，以号取名，用以作为通信的代号或发表文章的笔名。在男会员中周恩来是5号，后化名“伍豪”。女会员中邓颖超是1号，后化名“逸豪”。</p>
</li>
<li>
<p>周恩来在为觉悟社起草的《觉悟的宣言》中，阐述了觉悟社的目标是：“本着反省、实行、持久、奋斗、活泼、愉快、牺牲、创造、批评、互助的精神，求适应于‘人’的生活——做学生方面的‘思想改造’事业。抽象的话是：要本‘革心’、‘革新’的精神，求大家的‘自觉’、‘自决’。”在这篇宣言的最后，周恩来充满激情地写道：“我们的决心就是齐心努力向‘觉悟’道上走，同时也盼望社会上所有的人都向‘觉悟’道上走。努力！奋斗！一步步的‘觉悟’，一步步的‘进化’。‘觉悟’无边无止，‘进化’无穷。”</p>
</li>
<li>
<p>周恩来撰写的《觉悟》一文实际上是该刊的发刊词。文中写道：“人在世界上同一切生物最大的区别，就是人能够觉悟，一切生物不能够觉悟。觉悟的起点，由于人能够知道自己。因着觉悟，遂能解决人生的人格、地位、趋向，向进化方面求种种适应人的生活。”</p>
</li>
</ol>
<h2 id="身陷囹圄">身陷囹圄</h2>
<ol>
<li>
<p>4月2日，周恩来、马千里、时子周等6名被拘代表率先绝食。到了4日，全体绝食，决心以死捍卫初衷。他们说：“我们宁愿饿死，也不能因迫害而病死。”并提出3项要求：一是释放单独扣押在拘留所的代表；二是允许代表们到院中散步，互相往来；三是将被拘代表送法庭或由警厅司法科受理，速开公审，按法律解决。面对全体代表团结一致、视死如归的抗议，警厅不得不答应了代表们的这3项要求，并被迫将患病或未成年的各界联合会代表3人释放，绝食斗争取得了决定性胜利。</p>
</li>
<li>
<p>在狱中，周恩来向大家宣讲马克思主义。从当年的《检厅日录》中，可以看到这样的记载：5月14日，由周恩来介绍马克思学说；5月28日，周恩来讲马克思学说——历史上经济组织的变迁同马克思传记；5月31日，仍由周恩来讲马克思学说——唯物史观；6月2日，仍由周恩来讲马克思学说——唯物史观的总论同阶级竞争史；6月4日，仍由周恩来讲马克思学说——经济论中的余工余值说；6月7日，周恩来讲解马克思的学说——经济论中的资本论同资产集中说，等等。他还编写了记述狱中斗争实况的《警厅拘留记》和《检厅日录》两本书。</p>
</li>
<li>
<p>在被羁押、失去自由的几个月里，周恩来思考了许多问题，出狱后，他在一封讲到自己的共产主义信念的信中说，“思想是颤动于狱中”，入狱前他是一个关心国家命运和社会改造，积极参加进步活动的学生；出狱后，他就逐步走上职业革命的道路。他说，一种革命意识的萌芽“是从这个时候开始的”。同时，他深深感到苦难的中国需要有根本的改造，而改造必须有更加强大的社会力量，要“到民间去”，进行“农工组织之运动”，而且必须有正确的思想、理论来指导。</p>
</li>
<li>
<p>会上，周恩来还分析了为什么他们每次请愿都没有达到预期效果的原因。他认为：自从五四运动以来，涌现出来的爱国团体并不少。但是团体虽多，步调却不够统一。只有改造这些团体，使各个团体真正联合起来，才能达到改造旧中国的目的。</p>
</li>
</ol>
<h2 id="异域的斗争">异域的斗争</h2>
<ol>
<li>
<p>周恩来为什么将目的地选在欧洲呢？在他到达巴黎后不久写给表兄陈式周的信中谈到了这一点：“主要意旨，惟在求实学以谋自立，虔心考查以求了解彼邦社会真相暨解决诸道，而思所以应用之于吾民族间者。”</p>
</li>
<li>
<p>1921年春天，经早期共产党人张申府、刘清扬介绍，周恩来在巴黎加入了中国共产党，成为中国共产党建党前八个发起组之一的巴黎共产主义小组成员。周恩来入党后，因工作需要，他放弃了报考英国爱丁堡大学的机会，与天津4名勤工俭学学生转到法国中部布卢瓦城学习。本来，爱丁堡大学也同意免去入学考试，只考一门英文。他放弃报考的原因除因工作需要之外，还有另外的原因：考试时间定在9月，开学则在10月，还要等待半年之久；更令他头疼的是，英国的生活费用是全欧洲最高的，在伦敦生活，每年的生活费用约200镑，折合中国货币在千元以上，爱丁堡是苏格兰首府，生活费用稍为便宜，但每年仍需千元左右，是巴黎的两倍。巴黎虽然是世界名都，可谓花花世界，但生活费用相对伦敦而言低得多，每月只需中国货币40元，一年也不过500元左右。这对经济拮据的周恩来来说，当然是一个好去处。</p>
</li>
</ol>
<h2 id="从少年到赤光">从《少年》到《赤光》</h2>
<ol>
<li>
<p>经过1921年的“二八斗争”及反对中法秘密大借款和占领里大的斗争，广大勤工俭学学生受到深刻的教育。首先，勤工俭学的理想在当时的现实社会里是很难实现的。如果没有社会制度的变革，即使个人奋斗的力量无穷，也只是以卵击石。无论是实行工读主义还是勤工俭学主义，都不能达到改造社会的目的，只有在马克思主义指导下进行社会革命才是唯一的出路。其次，勤工俭学学生们认清了资产阶级的“自由、平等、博爱”的虚伪性，他们没有想到，号称自由、高唱人权的法兰西，竟然用武力镇压学生，竟然出现这种无耻、卑劣的举动。他们不远万里，漂洋过海，来到法兰西，是为追求光明而来的，却仍然被邪恶、强权所左右。光明在哪里？学生们相信，理想总有一天会实现的。在这种信念的鼓舞下，他们没有屈服，没有颓丧，而是准备更加英勇、机智地进行斗争。</p>
</li>
<li>
<p>中法当局坚持敌视并驱逐中国勤工俭学学生的行为，很快催生了中国旅欧共产主义组织。1921年底到1922年初，由周恩来、赵世炎等发起，邀请了部分团体代表，在巴黎共同商讨组织旅欧“中国少年共产党”的事宜。代表们就“中国少年共产党”的组织、纲领、成立时间等问题进行了充分讨论，并达成协议。会后，赵世炎、李维汉等在法国，聂荣臻、刘伯坚等在比利时，周恩来去德国，分别建立和发展“中国少年共产党”的基层组织，为成立统一组织作准备。这些“中国少年共产党”成员在国共合作后，绝大部分都成为中国共产党员，再以个人名义加入了中国国民党。</p>
</li>
<li>
<p>从这时开始，邓小平在周恩来领导下工作，二人建立起深厚友谊。50多年后，邓小平对外国记者说：“周总理是一生勤勤恳恳、任劳任怨工作的人。他一天的工作时间总超过12小时，有时在16小时以上，一生如此。我们认识很早，在法国勤工俭学时就住在一起。对我来说他始终是一个兄长。我们差不多同时期走上了革命的道路。”</p>
</li>
<li>
<p>邓小平经常是白天做工，下工后即赶到《赤光》编辑部。在那狭小的房间里，周恩来将写好或修改好的稿件交给他，邓小平把它一笔一画地刻写在蜡纸上，然后用一台简陋的印刷机印好，再装订起来。为了能保证每半月出一期，每期12页左右的内容，周恩来、邓小平一同忘我地工作着。经常是深夜工作完成后，邓小平就在这小房间里打上地铺和周恩来住在一起。这段时间，邓小平和长他6岁的周恩来十分接近，邓小平很敬重这位兄长式的同志和领导，从他身上学到了许多东西。周恩来也十分喜欢邓小平，给予他很多的关心和爱护。在周恩来的直接领导和帮助下，邓小平认真的工作态度和出色的工作成绩给其他的同志们留下了深刻的印象。几十年后，他们的战友还清楚地记得：“当时，邓小平同志负责《赤光》的编辑出版工作，几乎我每次到书记局去，都亲眼看见他正在搞刻蜡版、油印、装订工作，他的字既工整又美观，刊物印刷清晰。”</p>
</li>
<li>
<p>周恩来作为主编和主要撰稿人，在《赤光》上发表的文章多达30余篇。其中较重要的有：《军阀统治下的中国》《列强共管中国的步骤》《革命救国论》《国际帝国主义乘火打劫的机会又到了》《救国运动与爱国主义》《北洋军阀与外交关系》《华府会议的又一教训》《这才是一个确实的“进兵”中国》《再论中国共产主义者之加入国民党问题》等。从这些文章中可以反映出，周恩来对中国社会各阶级的关系，中国革命的当前任务和远景等基本问题，都已有了比较清楚和符合实际的认识。</p>
</li>
</ol>
<h2 id="黄埔军校政治部主任">黄埔军校政治部主任</h2>
<ol>
<li>
<p>6月16日国共两党人士500多人，隆重举行了开学典礼。孙中山以国民党总理的身份亲临致辞，发表重要演说，指明军校宗旨就是：创造革命军，来挽救中国的危亡。他在开学演说中号召全体师生：“从今天起立一个志愿，一生一世都不存升官发财的心理”，要“学先烈的行为，像他们一样，舍身成仁”，不“贪生畏死”。他还亲自批准将这样一副对联贴在军校大门上：升官发财行往他处，贪生畏死勿入斯门。</p>
</li>
<li>
<p>周恩来之所以能够到黄埔军校任职，是由两方面的因素促成的：一是组织的要求。根据档案史料记载，1924年7月，人在巴黎的周恩来接到中央指示，要他回国负责国共两党的统一战线工作。二是张申府的推荐。张申府与周恩来在法国结识，是中国共产党最早的共产主义小组创始人，也是周恩来的入党介绍人。周恩来去法国勤工俭学时，比张先到法国，两人在巴黎相逢，接触较多，经常聚会畅谈，特别是在中国共产党法国支部方面的事情，两人经常有着一致的意见，建立起了深厚的感情。1924年回国后，张申府参与了黄埔军校的筹建工作，并被孙中山任命为黄埔军校政治部副主任（时任主任为戴季陶），是中共从事早期军事工作的党员之一，也是当时在黄埔军校中担任的最高职务的中共党员。</p>
</li>
<li>
<p>周恩来到任之后，这位26岁的年轻人，很快就崭露出了令人瞩目的才华。他按照苏联创建红军的经验，逐步建立起一整套行之有效的政治工作制度，健全政治工作机构，设立各级党代表，传授三民主义和马克思主义，开设具有最新内容、理论性很强的政治课，开展多种形式的思想政治教育等，开辟了黄埔军校乃至以后国民革命军政治工作的新局面。    第一，建立健全政治部组织机构和工作制度。周恩来一到任，就对政治部原有班子进行了整顿，增设组织机构，设置“指导”、“编纂”、“秘书”三股，并从黄埔一期毕业生中选调优秀共产党员任职，以保证政治部工作正常运转；制定了服务细则，明确了政治工作宗旨，规定了各级领导的权力范围和工作职责。对全校的政治思想教育工作，进行了分工，制定了工作细则和条例，如《政治部服务细则》《本校政治部政治指导员条例》《宣传队组织条例》《政治讨论会规则》等。此外，军校政治部还建立了政治问答制度。上述制度的建立与规则、条例的制定，对于搞好军校的政治教育并使其走向正规化，起到了十分重要的作用。后来，毛泽东在总结第一次国内革命战争时期的工作经验时说：“那时军队有一种新气象，官兵之间和军民之间大体上是团结的，奋勇向前的革命精神充满了军队。那时军队设立了党代表和政治部，这种制度是中国历史上没有的，靠了这种制度使军队一新其面目。”而这种制度在中国的实行正是从黄埔军校开始的。</p>
</li>
<li>
<p>周恩来还给军校各级长官另加政治教育的“小灶”，要求他们每星期二、五晚上7时开始，听特别讲演一个半小时。特别讲演的题目均由政治部拟定，请各界名人到校。在被称为大花厅的礼堂里，黄埔军校教官们见到了许许多多站立在那个时代潮头的人物：彭湃到这里讲广东海丰农民运动，李求实讲全国青年运动，邓中夏讲省港大罢工，何香凝讲廖仲恺的革命事略，宋子文讲财政，李烈钧讲军事，孙科讲吏治等。毛泽东、刘少奇都曾在这里发表演讲。</p>
</li>
</ol>
<h2 id="志同道合的伴侣">志同道合的伴侣</h2>
<ol>
<li>
<p>1923年5月，邓颖超在《女星》旬刊上发表了一篇文章，其中有一段话是这样写的：“两性的恋爱，本来是光明正大的事，并不是污浊神秘的。但它的来源，须得要基础于纯洁的友爱，美的感情的渐馥渐浓，个性的接近，相互的了解，思想的融合，人生观的一致。此外，更需两性间觅得共同的‘学’与‘业’来维系着有移动性的爱情，以期永久。这种真纯善美的恋爱，是人生之花，是精神的高尚产品，对于社会，对于人类将来，是有良好影响的。”从这段话里，明显反映了她和周恩来之间真纯善美的恋爱关系。</p>
</li>
<li>
<p>周恩来和邓颖超结婚的时候，当着许多好友的面宣布，把“互爱、互敬、互助、互勉、互商、互谅、互信、互识”作为相伴终身的准则。他们在共同的革命生涯中互敬互爱、互助互勉，共同培育着忠贞不渝的夫妻之情、战友之情、同志之情和师生之情。在人们心目中，他们是最忠诚、最美满的革命伴侣。</p>
</li>
</ol>
<h2 id="黄浦江畔的风暴">黄浦江畔的风暴</h2>
<ol>
<li>
<p>周恩来是1926年底，奉中央之命从广州来到上海的。这次来上海，名义上是担任中央组织部的秘书，实际上是要负责整个党的组织工作。为了领导好这次起义，周恩来认真地总结了第二次武装起义的经验和教训。3月3日他在军委会议上作了《关于上海的武装起义》的报告，充分肯定了第二次武装起义具有很大的意义，同时认为起义失败“问题全在于没有准备，在于党的领导人在事变中缺乏果断”。</p>
</li>
<li>
<p>在充分研究与分析的基础上，他提出了军事准备工作的五点具体意见：第一，建立领导机构。军委除原有5人外，再增加罗亦农，各部委（即区委）分别成立军委。第二，加强队伍的训练。如对纠察队先着重形式，编序号。自卫队从事训练，查考人数，发宣传大纲，教授巷战等。第三，加强对敌军工作。在周恩来的直接指挥下成立海军委员会，从事策反。第四，武器准备。如把武器集中起来，做好武器的运输准备工作等。第五，情报工作。如设法与北伐军保持联系。</p>
</li>
</ol>
<h2 id="在腥风血雨的日子里">在腥风血雨的日子里</h2>
<ol>
<li>周恩来怒目圆睁，猛地站起来，掀翻桌子，义正辞严地谴责道：“你们公然叛变革命的三民主义和三大政策，反对共产党、反对人民，你们这样是不会有好下场的。”</li>
</ol>
<h2 id="第一次莫斯科之行">第一次莫斯科之行</h2>
<ol>
<li>
<p>7月3日，周恩来向大会作军事报告。报告总结了党自从事军事斗争以来的经验教训，批评两种错误倾向：一是为了联合战线而仅帮助国民党巩固国民革命军；二是南昌起义失败后，“抹杀一切军事工作，反对一切军事准备，军事技术的训练，都目之为军事投机”。周恩来也作了自我批评，他说道，我们的主要错误是我们不懂得我们在军队工作的基本任务，不懂得这一工作的目的。</p>
</li>
<li>
<p>在选举中央主席时，由于过分强调工人成分和对知识分子的偏见，加之共产国际定的基调与苏联党的干预，最终在周恩来、向忠发两人中，选择了工人出身的向忠发。这样，向忠发被推举为中央政治局主席和中央政治局常委主席，成了党的最高领导人。后来的事实证明，向忠发无法驾驭党的全面工作，不能起到应有的领导作用，在党内只是一个摆设。这也是六大后李立三能掌握中共中央实际权力，“左”倾冒险错误在中共中央占统治地位的一个原因。</p>
</li>
</ol>
<h2 id="隐蔽战线上的硝烟">隐蔽战线上的硝烟</h2>
<ol>
<li>
<p>1927年，形势逆转，造成了部分党员理想信念动摇，加上国民党对共产党主要领导人悬赏5万至8万银元，一些追求享乐和腐化的动摇分子便向敌人告密甚至充当内奸。6月，中共江苏省委秘书长韩步先被捕叛变，他指认了当时的江苏省委书记，我党早期著名的工运领袖，陈独秀的长子陈延年。这位年仅28岁的青年革命家，25岁时担任了中共广东省委书记，参与领导了1925年6月震惊中外的省港工人大罢工。他在枪林弹雨中九死一生，显示了一个革命者的超人才华和胆略，可惜死在叛徒的手里。省委组织部长郭伯和也一同惨遭杀害。不久，叛徒又向敌人供出了赵世炎的住址。由于事先没有任何防范，7月21日，赵世炎被上海警备司令部逮捕。赵世炎是我党又一著名早期工运领袖，与周恩来共事密切，一同策划、组织、参与领导了许多革命活动。赵世炎没有被严刑拷打所屈服，更没有被高官厚禄所利诱，他赤胆忠魂，为中国革命事业流尽了最后一滴血。</p>
</li>
<li>
<p>周恩来领导特科期间，始终贯彻的指导思想是：深入敌人的党、政、军、警、宪、特机关，探取情报、肃清内奸，有效地粉碎敌人的破坏阴谋，保卫党中央的安全。根据这一指导思想，周恩来制定了严格的原则与纪律，牢固地把握着政治方向，避免特科走上单纯恐怖活动的歧路。他曾反复强调：不许乱打叛徒，危害大的才打；不准打公开的特务；不准搞绑票，这是三条基本原则。周恩来曾多次制止并严厉批评特科具体负责人顾顺章背离党的长远利益和秘密工作原则，追求表面轰轰烈烈，热衷于单纯恐怖行动的倾向，使特科在隐蔽斗争中有明确的政治方向。</p>
</li>
<li>
<p>周恩来在斗争实践中，摸索出一套使特科屡创战绩的秘密工作方法。如他明确了情报与保卫二者关系，使中央特科的情报科与特务科（行动队）既有不同侧重，又密切配合；秘密工作中，他强调组织要隐蔽、精干、少而密、单线联系；在活动中尽量职业化、社会化，以公开身份掩护，“利用合法掩护非法，合法与非法巧妙结合”，“秘密工作和公开工作绝对分开”等。    在周恩来指导下，特科还形成了在敌人内部发展情报关系的工作方法：即“打进去”和“拉出来”。所谓“打进去”，即选派干练人员打进敌人重要部门，获取核心秘密。在他的指导下，后被他誉为“龙潭三杰”的钱壮飞、李克农、胡底打入国民党中统核心机构，使党掌握了国民党特务情报最高指挥机关的一举一动。所谓“拉出来”，即设法将敌方重要部门人员争取过来，为我提供秘密情报。周恩来经常强调，建立强有力的反间谍关系，要广为选择，大胆使用，各尽其才，在工作中考验。他研究并批准特科在国民党专业反共领导机关——中央组织部调查科中，拉出了第一个重要的反间谍关系——国民党驻沪特派员杨登瀛（鲍君甫）。杨利用其特殊地位和同各方面的关系，多次提供了国民党特务行动部署和隐藏在中共内部的叛徒、奸细情报，帮助被捕的任弼时、关向应等同志获释，对保卫党中央、清理内奸、打击敌特发挥了重要作用。成为历史上党的情报侦察工作争取、运用秘密反间力量的一个最早的成功典范。</p>
</li>
<li>
<p>周恩来曾回忆道：彭湃等“入警备司令部后，已知必死，故他们传出书信多是遗嘱之辞。他们嘱咐党中同志不要因他们被捕而伤痛，要继续努力谋得革命的发展。他们嘱咐党中重要负责同志要为党惜身”。    8月30日下午，彭湃、杨殷、颜昌颐、邢士贞4人，被枪杀于淞沪警备司令部院内旷地之上。</p>
</li>
<li>
<p>8月31日，周恩来起草了《中共中央为反抗国民党屠杀革命领袖告全国劳苦群众书》，愤怒声讨反动派的屠杀罪行，沉痛悼念牺牲的烈士，号召全国劳苦群众“起来，纪念着彭杨诸领袖之血的教训！起来，与帝国主义国民党作坚决不断的斗争”。周恩来抑制不住沉痛的心情，他一边起草，一边流泪。</p>
</li>
<li>
<p>4月25日，顾顺章与武汉行营主任何成浚见面后，并没有把他知道的秘密全部说出来，而是待价而沽，提出了三个要求：第一，赶快送他到南京去，他要面见蒋介石，以便一网打尽共产党中央机关和领导人；第二，要保密，不要打电报给南京；第三，要保证他的安全。然而，何成浚和蔡孟坚邀功心切，没有听从顾顺章的意见，接连给南京的国民党中央组织部党务调查科负责人徐恩曾发了6封电报，报告顾顺章被捕和叛变的情况以及押往南京的计划。电报内容被陈赓安插在国民党中统内部，并担任中统负责人徐恩曾秘书的钱壮飞获悉。</p>
</li>
<li>
<p>面对千钧一发的险恶形势，周恩来立即转移办公地点，召集聂荣臻、陈赓、洪扬生、李强等人召开紧急会议，决定采取一系列应对措施：（1）销毁大量机密文件；（2）迅速将党的主要负责人转移，并采取严密的保卫措施，适当换用新的领导秘书；（3）把一切可以成为顾顺章侦察目标的干部，尤其是中央特科的同志，尽快地转移到安全地带或撤离上海；（4）切断顾顺章在上海所能利用的重要关系；（5）废止顾顺章所知道的一切秘密联络方法和工作方法，由各部门负责实施紧急改变。在不到一天的时间内，把四五百人的地下党组织和领导人转移到安全地点。</p>
</li>
<li>
<p>顾顺章的叛变，危害和威胁是不可估量的。顾顺章叛变后，中共中央立即陷入极其险恶的境地，周恩来和中央特科的危机应对能力面临前所未有的挑战。</p>
</li>
<li>
<p>1931年6月10日，周恩来主持召开了中共中央政治局会议，通过了由他起草的《中央审查特委工作总结》。《总结》认为，特委工作虽有许多成绩，给予党以不少保护作用，但终因顾顺章这样一个高级干部的叛变，遂使全部工作发生动摇，这不能不说是特委工作本身的错误的结果，尤其是特委本身政治教育的缺乏，成为特委基础不能巩固的历史病源。周恩来作了自我批评，表示自己要负主要责任。</p>
</li>
</ol>
<h2 id="挽救危局">挽救危局</h2>
<ol>
<li>
<p>顾顺章的叛变，并不是偶然的。1931年春，周恩来对顾顺章的腐化已有所闻并提出过批评，中央也准备派知识分子出身的康生接替此项工作。对于周恩来等人的批评，他表面上虚与委蛇，背地里依然我行我素。后来，在他家中发现的事实表明，他早已有叛变之心。因为他早就写好了一封给蒋介石的自首书，藏在家里备用，并嘱咐其妻：“我如被捕不能回来，可将此信交给蒋介石。”当然，还未等到这一天，中共组织就在确定他已叛变的第一时间从他家中搜出了这封信。其实，对于顾顺章这样的人来说，生活上的“腐化”和“堕落”，是不可能被改变的。吸鸦片、玩妓女、灯红酒绿、纸醉金迷，是顾顺章的生活意义所在，他活着就是为了这些；他投身中共，也不过是为了有一天能最大限度地满足一己私欲。在那时，如果以组织的名义，禁止他吸鸦片、玩妓女，禁止他生活上的“腐化”和“堕落”，他恐怕立即与中共分手，回到他的帮会中去，回到他的“江湖”上去了。    多次批评教育无果后，周恩来已有意将顾顺章调离特科。为了不影响特科工作，周恩来将在中共顺直省委组织部工作的聂荣臻调到特科工作。聂荣臻的调来，名义上是“从政治上加强特科”，实际上是为了约束顾顺章的放荡行为。顾顺章也很快明白了中央调聂荣臻到特科的真正用意，遂产生了消极抵触情绪。他不敢正面发泄，便把不满情绪倾泄于聂荣臻身上，专门派给他一些很困难很危险的任务去完成，并美其名曰为“考验、锻炼、重用”。    顾顺章思想上的变化，还有一个原因，那就是六届三中、四中全会后，严酷打击了一批党的优秀领袖人物，再加上何孟雄等人的被捕，罗章龙等人的被开除党籍，各地党组织相继被破坏等，使得许多革命意志不坚定者相继登报脱党。这一时期，顾顺章的思想也多少产生了一些动摇。周恩来于1950年5月在军委情报部的一次讲话中曾说过：“顾顺章的叛变，不是偶然的，当时的立三路线和四中全会都加深了他的动摇……”</p>
</li>
<li>
<p>本来可以在1931年5月出狱的恽代英，由于顾顺章的出卖，被枪杀于南京，离被释放只差几天的时间。恽代英被捕后，虽遭受了百般酷刑，但他除了承认自己是中国共产党党员外，国民党反动军警未得到他任何供词，而且还在狱中留下了“浪迹江湖忆旧游，故人生死各千秋，已摈忧患寻常事，留得豪情作楚囚”的千古绝句，连国民党中央调查科科长徐恩曾都说“共产党的可怕就在于此”。</p>
</li>
<li>
<p>特务们审讯陈琮英，向忠发居然出面对质：“你不要编口供了，有什么就讲吧，我们是什么人，他们都知道！”杨秀贞并非中共党员，虽说她知道向忠发的政治身份，受审讯时一开始并不承认向忠发是中共党员。所以，后来周恩来曾气愤地说：“他（指向忠发）的节操还不如一个妓女！”</p>
</li>
</ol>
<h2 id="转移苏区">转移苏区</h2>
<ol>
<li>顾顺章叛变后，国民党像疯狗一样，在上海街头四处搜捕共产党人。向忠发叛变后，使身为中共中央政治局常委兼军委书记的周恩来处于了一个最为危险的境地。由于长期在党内最高层工作，从出任黄埔军校政治部主任起，周恩来就是著名的政治活动家，国共双方的不少人都熟悉他。到上海从事秘密工作的几年间，顾、向二人与周恩来同是特委负责人，平时相处甚多，彼此非常熟悉对方的生活规律、脾气与秉性。在此严峻形势下，中央指示周恩来务必尽速离开上海，前往中央苏区。</li>
</ol>
<h2 id="军事高参">军事高参</h2>
<ol>
<li>周恩来等认为，红军的主动进攻必须是有条件的，要符合红军的实际作战能力，决不能实行红军作战能力所不及的盲目的进攻。</li>
</ol>
<h2 id="长征路上上">长征路上（上）</h2>
<ol>
<li>遵义会议是在紧急的战争形势下召开的，集中地解决了党内所面临的最迫切的组织问题和军事问题，结束了“左”倾教条主义错误在中央的统治，确立了毛泽东在红军和中共中央的领导地位。这次会议，在极端危急的历史关头，挽救了党，挽救了红军，挽救了中国革命，在中国共产党和红军的历史上，是一个生死攸关的转折点。</li>
</ol>
<h2 id="长征路上下">长征路上（下）</h2>
<ol>
<li>
<p>遵义会议后，军事指挥变为红军的作战行动要经中央政治局会议研究讨论，这样虽然可以发挥大家的才智，但也带来新问题，对许多具体问题争论不休，使指挥员难下决心，难以部署，对红军作战不利。3月10日，中央政治局召开扩大会议讨论“打鼓新场战斗”。开会讨论时，毛泽东经分析主张不打，但大多数人同意打，毛泽东的意见被否决。毛泽东以大局为重，半夜找到了周恩来，周恩来认真思考后接受了毛泽东的意见。周恩来后来回忆说：“从遵义一出发，遇到敌人一个师守在打鼓新场那个地方，大家开会都说要打，硬要去攻那个堡垒。只毛主席一个人说不能打，打又是啃硬的，损失了更不应该，我们应该在运动战中去消灭敌人嘛。但别人一致通过要打，毛主席那样高的威信还是不听，他也只好服从，但毛主席回去一想，还是不放心，觉得这样不对，半夜里提马灯又到我那里来，叫我把命令暂时晚一点发，还是想一想。我接受了毛主席的意见，一早再开会议，把大家说服了。”后来敌情通报证明毛泽东的判断是正确的，使红军避免了一次重大损失和危险。</p>
</li>
<li>
<p>四渡赤水，是在云贵川边界地区与数倍于己的优势敌人进行的机动战役。在战斗过程中，红军东西驰骋千里，南北往返数次，声东击西，调动敌人，妙趣横生，精彩纷呈，被誉为战争史上的奇观。通过四渡赤水，摆脱了数十万敌军的围追堵截，渡过金沙江，夺取了战略上的主动权。但由于数月连续行军作战，迂回穿插，部队很疲劳，加上行军多，打仗少，于是有人抱怨，有人不理解，最严重的是林彪，他怀疑甚至否定毛泽东的指挥。为了统一作战指导思想，1935年5月12日，在四川会理召开了中央政治局扩大会议。周恩来在发言中肯定了遵义会议以来的战略方针是完全正确的，“我们没有理由怀疑党中央的战略方针，更不能产生动摇”，严肃批评了林彪等人的错误，维护了毛泽东的正确领导。</p>
</li>
</ol>
<h2 id="民族危亡时刻">民族危亡时刻</h2>
<ol>
<li>12月18日，周恩来亲自到止园杨公馆拜会了杨虎城将军，双方进行了交谈。随即在张公馆的中楼，举行了以东北军张学良、17路军杨虎城、中共周恩来为代表的三方会谈。在会谈中，周恩来充分肯定了张、杨的爱国热情，并提出和平解决“西安事变”的六项主张：一、双方停战，中央军撤至潼关以东；二、改组南京政府，肃清亲日派，加入抗战成员；三、释放政治犯，保障民主权利；四、停止“剿共”，联合红军抗日，共产党公开活动；五、召开各党、各派、各界、各军救国会议；六、与同情抗日的国家合作。三方在政策上取得了一致意见，达成了共识，被称为“三位一体”。周恩来还特别强调，“三位一体”，将是推动全国抗日民族统一战线的中坚。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 6</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-06/</link>
      <pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-06/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/palindrome-number/&#34;&gt;9. 回文数&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个整数 &lt;code&gt;x&lt;/code&gt; ，如果 &lt;code&gt;x&lt;/code&gt; 是一个回文整数，返回 &lt;code&gt;true&lt;/code&gt; ；否则，返回 &lt;code&gt;false&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例如，&lt;code&gt;121&lt;/code&gt; 是回文，而 &lt;code&gt;123&lt;/code&gt; 不是。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;121&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isPalindrome&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;turnX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;turnX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;turnX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;turnX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，将整数转化为字符串，然后for遍历，倒序输出，组合成翻转的字符串&lt;/li&gt;
&lt;li&gt;将翻转后的字符串转换成整数和原始整数比较，如果相等，则为&lt;code&gt;true&lt;/code&gt;，反之为&lt;code&gt;false&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;上面这个是很直观的一种解法，其实自己想过另一种解法，就是双指针，左右逐步向中间执行对比，只要有一个不相等则为&lt;code&gt;false&lt;/code&gt;，否则就是&lt;code&gt;true&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2311/231127-bacteria-memories.html&#34;&gt;Bacteria Memories - ESL Lesson Plan - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;细菌在其单细胞形式中具有一种机制，可以存储记忆并将其传递给后代。&lt;/li&gt;
&lt;li&gt;细菌没有大脑，但它们可以从环境中收集信息，如果它们经常遇到这种环境，它们可以存储它，并在以后快速访问它，以造福它们。&lt;/li&gt;
&lt;li&gt;细菌的记忆与人类不同。它可能更类似于我们的肌肉记忆。我们的身体组织对下一步该做什么有一种感觉，因为以前已经重复了很多次。&lt;/li&gt;
&lt;li&gt;铁不仅对地球生命的起源至关重要，而且对生命的进化也至关重要。细胞利用它是有道理的。&lt;/li&gt;
&lt;li&gt;我们对细菌行为了解得越多，就越容易对抗它们。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;掘金小册子&lt;a href=&#34;https://juejin.cn/book/6844733783166418958&#34;&gt;《你不知道的 Chrome 调试技巧》&lt;/a&gt;是免费的，里面主要是讲了一些Chrome DevTools的使用技巧，今天看完，主要是记录了下一些印象比较深的点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;全屏截图，通过 &lt;code&gt;Capture full size screenshot&lt;/code&gt; 命令。&lt;/li&gt;
&lt;li&gt;取色器，Chrome DevTools 自带取色器，之前一直没注意。&lt;/li&gt;
&lt;li&gt;console.table（） 可以将对象或数组以一个表格方式打印出来，方便查看。&lt;/li&gt;
&lt;li&gt;console.log({value1,value2,value3}) 当想打印多个值时，要区分总是要加上前缀，如&lt;code&gt;value1---&lt;/code&gt;，其实通过&lt;code&gt;{}&lt;/code&gt;就可以以对象的格式打印出来。&lt;/li&gt;
&lt;li&gt;console.log()并没有立即拍摄对象快照，它只是存储一个指向对象的引用，在代码返回事件队列时才去拍摄快照。 使用 &lt;code&gt;JSON.stringify()&lt;/code&gt; 方法处理打印的结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;share&#34;&gt;Share&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;很多事情不能太急着下结论，要缓一缓，不能自己认为是什么样的，就笃定事实就是这样的，要慢一点，不能依据情绪判断事情，这样很容易出问题，话一旦说出口，就很难改变了，没有调查就没有发言权，任何凭感觉而做的判断，都是在给自己设下陷阱。&lt;/li&gt;
&lt;li&gt;谁身上多少都有些问题，用人要用其长处。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/palindrome-number/">9. 回文数</a></p>
<p>给你一个整数 <code>x</code> ，如果 <code>x</code> 是一个回文整数，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p>
<p>回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。</p>
<ul>
<li>例如，<code>121</code> 是回文，而 <code>123</code> 不是。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">x</span> <span class="o">=</span> <span class="mi">121</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="kc">true</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">isPalindrome</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">x</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">turnX</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">strX</span> <span class="o">=</span> <span class="nb">String</span><span class="p">(</span><span class="nx">x</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">strX</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">turnX</span> <span class="o">=</span> <span class="nx">turnX</span> <span class="o">+</span> <span class="nx">strX</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">turnX</span><span class="p">)</span> <span class="o">==</span> <span class="nx">x</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>首先，将整数转化为字符串，然后for遍历，倒序输出，组合成翻转的字符串</li>
<li>将翻转后的字符串转换成整数和原始整数比较，如果相等，则为<code>true</code>，反之为<code>false</code>。</li>
<li>上面这个是很直观的一种解法，其实自己想过另一种解法，就是双指针，左右逐步向中间执行对比，只要有一个不相等则为<code>false</code>，否则就是<code>true</code>。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2311/231127-bacteria-memories.html">Bacteria Memories - ESL Lesson Plan - Breaking News English Lesson</a></p>
<ol>
<li>细菌在其单细胞形式中具有一种机制，可以存储记忆并将其传递给后代。</li>
<li>细菌没有大脑，但它们可以从环境中收集信息，如果它们经常遇到这种环境，它们可以存储它，并在以后快速访问它，以造福它们。</li>
<li>细菌的记忆与人类不同。它可能更类似于我们的肌肉记忆。我们的身体组织对下一步该做什么有一种感觉，因为以前已经重复了很多次。</li>
<li>铁不仅对地球生命的起源至关重要，而且对生命的进化也至关重要。细胞利用它是有道理的。</li>
<li>我们对细菌行为了解得越多，就越容易对抗它们。</li>
</ol>
<h2 id="tip">Tip</h2>
<p>掘金小册子<a href="https://juejin.cn/book/6844733783166418958">《你不知道的 Chrome 调试技巧》</a>是免费的，里面主要是讲了一些Chrome DevTools的使用技巧，今天看完，主要是记录了下一些印象比较深的点：</p>
<ol>
<li>全屏截图，通过 <code>Capture full size screenshot</code> 命令。</li>
<li>取色器，Chrome DevTools 自带取色器，之前一直没注意。</li>
<li>console.table（） 可以将对象或数组以一个表格方式打印出来，方便查看。</li>
<li>console.log({value1,value2,value3}) 当想打印多个值时，要区分总是要加上前缀，如<code>value1---</code>，其实通过<code>{}</code>就可以以对象的格式打印出来。</li>
<li>console.log()并没有立即拍摄对象快照，它只是存储一个指向对象的引用，在代码返回事件队列时才去拍摄快照。 使用 <code>JSON.stringify()</code> 方法处理打印的结果。</li>
</ol>
<h2 id="share">Share</h2>
<ol>
<li>很多事情不能太急着下结论，要缓一缓，不能自己认为是什么样的，就笃定事实就是这样的，要慢一点，不能依据情绪判断事情，这样很容易出问题，话一旦说出口，就很难改变了，没有调查就没有发言权，任何凭感觉而做的判断，都是在给自己设下陷阱。</li>
<li>谁身上多少都有些问题，用人要用其长处。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 5</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-05/</link>
      <pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-05/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/container-with-most-water/&#34;&gt;11. 盛最多水的容器&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个长度为 &lt;code&gt;n&lt;/code&gt; 的整数数组 &lt;code&gt;height&lt;/code&gt; 。有 &lt;code&gt;n&lt;/code&gt; 条垂线，第 &lt;code&gt;i&lt;/code&gt; 条线的两个端点是 &lt;code&gt;(i, 0)&lt;/code&gt; 和 &lt;code&gt;(i, height[i])&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;找出其中的两条线，使得它们与 &lt;code&gt;x&lt;/code&gt; 轴共同构成的容器可以容纳最多的水。&lt;/p&gt;
&lt;p&gt;返回容器可以储存的最大水量。&lt;/p&gt;
&lt;p&gt;**说明：**你不能倾斜容器。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://aliyun-lc-upload.oss-cn-hangzhou.aliyuncs.com/aliyun-lc-upload/uploads/2018/07/25/question_11.jpg&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;图中垂直线代表输入数组&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;在此情况下&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;容器能够容纳水&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;（&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;表示为蓝色部分&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;）&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;的最大值为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxArea&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;area&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentArea&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;nx&#34;&gt;area&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;area&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentArea&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nx&#34;&gt;left&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nx&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;area&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义两个指针left和right，分别指向容器的左边界和右边界。&lt;/li&gt;
&lt;li&gt;定义一个变量area用于存储最大面积的结果，初始值为0。&lt;/li&gt;
&lt;li&gt;使用一个循环，当left小于right时进行迭代：计算当前的面积，即min(height[left], height[right]) * (right - left)。Math.min()返回传入参数中最小值。&lt;/li&gt;
&lt;li&gt;如果当前面积大于area，则更新area的值。&lt;/li&gt;
&lt;li&gt;如果height[left]小于height[right]，则将left右移一位；否则将right左移一位。&lt;/li&gt;
&lt;li&gt;循环结束后，返回area作为最大面积的结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://breakingnewsenglish.com/2311/231123-napoleon-hat.html&#34;&gt;Napoleon&amp;rsquo;s Hat - ESL Lesson Plan - Breaking News English Lesson&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拿破仑的帽子是拍卖史上最贵的，以210万美元的价格售出。&lt;/li&gt;
&lt;li&gt;拿破仑大约有120顶帽子，本周这顶破记录的帽子由毛毡制成，上面有法国国旗的红、白、蓝三种颜色。&lt;/li&gt;
&lt;li&gt;最近有好莱坞电影《拿破仑》上映，由雷德利·斯科特执导，华金·菲尼克斯饰演拿破仑，凡妮莎·柯比饰演约瑟芬。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;tip&#34;&gt;Tip&lt;/h2&gt;
&lt;p&gt;项目中有些接口，请求的资源大小有200KB之多，在前端页面交互使用上体验很差，而这些资源通常都不会改变，频繁去请求作用不大，徒增服务器负担。为了解决这个问题，引入HTTP 304 状态码机制，当浏览器发起一个条件请求到服务器时，服务器会使用304状态码来表示请求资源未更新，可以直接使用当前缓存的资源，无需再重新从服务器下载。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/container-with-most-water/">11. 盛最多水的容器</a></p>
<p>给定一个长度为 <code>n</code> 的整数数组 <code>height</code> 。有 <code>n</code> 条垂线，第 <code>i</code> 条线的两个端点是 <code>(i, 0)</code> 和 <code>(i, height[i])</code> 。</p>
<p>找出其中的两条线，使得它们与 <code>x</code> 轴共同构成的容器可以容纳最多的水。</p>
<p>返回容器可以储存的最大水量。</p>
<p>**说明：**你不能倾斜容器。</p>
<p><img loading="lazy" src="https://aliyun-lc-upload.oss-cn-hangzhou.aliyuncs.com/aliyun-lc-upload/uploads/2018/07/25/question_11.jpg"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">49</span> 
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">图中垂直线代表输入数组</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">]</span><span class="err">。</span><span class="nx">在此情况下</span><span class="err">，</span><span class="nx">容器能够容纳水</span><span class="err">（</span><span class="nx">表示为蓝色部分</span><span class="err">）</span><span class="nx">的最大值为</span> <span class="mi">49</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">maxArea</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">height</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">left</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">right</span> <span class="o">=</span> <span class="nx">height</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">area</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">while</span> <span class="p">(</span><span class="nx">left</span> <span class="o">&lt;</span> <span class="nx">right</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">       <span class="kd">let</span> <span class="nx">currentArea</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">height</span><span class="p">[</span><span class="nx">left</span><span class="p">],</span> <span class="nx">height</span><span class="p">[</span><span class="nx">right</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="nx">right</span> <span class="o">-</span> <span class="nx">left</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">       <span class="nx">area</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">area</span><span class="p">,</span> <span class="nx">currentArea</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">       <span class="k">if</span> <span class="p">(</span><span class="nx">height</span><span class="p">[</span><span class="nx">left</span><span class="p">]</span> <span class="o">&lt;</span> <span class="nx">height</span><span class="p">[</span><span class="nx">right</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">left</span><span class="o">++</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">       <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">right</span><span class="o">--</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">       <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">area</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>定义两个指针left和right，分别指向容器的左边界和右边界。</li>
<li>定义一个变量area用于存储最大面积的结果，初始值为0。</li>
<li>使用一个循环，当left小于right时进行迭代：计算当前的面积，即min(height[left], height[right]) * (right - left)。Math.min()返回传入参数中最小值。</li>
<li>如果当前面积大于area，则更新area的值。</li>
<li>如果height[left]小于height[right]，则将left右移一位；否则将right左移一位。</li>
<li>循环结束后，返回area作为最大面积的结果。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://breakingnewsenglish.com/2311/231123-napoleon-hat.html">Napoleon&rsquo;s Hat - ESL Lesson Plan - Breaking News English Lesson</a></p>
<ol>
<li>拿破仑的帽子是拍卖史上最贵的，以210万美元的价格售出。</li>
<li>拿破仑大约有120顶帽子，本周这顶破记录的帽子由毛毡制成，上面有法国国旗的红、白、蓝三种颜色。</li>
<li>最近有好莱坞电影《拿破仑》上映，由雷德利·斯科特执导，华金·菲尼克斯饰演拿破仑，凡妮莎·柯比饰演约瑟芬。</li>
</ol>
<h2 id="tip">Tip</h2>
<p>项目中有些接口，请求的资源大小有200KB之多，在前端页面交互使用上体验很差，而这些资源通常都不会改变，频繁去请求作用不大，徒增服务器负担。为了解决这个问题，引入HTTP 304 状态码机制，当浏览器发起一个条件请求到服务器时，服务器会使用304状态码来表示请求资源未更新，可以直接使用当前缓存的资源，无需再重新从服务器下载。</p>
<ol>
<li>
<p>背景、初衷和目标：304状态码主要是为了减少不必要的网络请求，减少服务器负担和提高性能而设计的。当客户端发起条件请求时，服务器可以通过304状态码告知客户端，所请求的资源未发生变化，可以直接使用当前缓存的资源。</p>
</li>
<li>
<p>优势和劣势：优势：可以减少网络请求加快前端页面加载速度，降低服务器负担。劣势：如果配置不正确，可能导致前端页面展示的不是最新的数据。</p>
</li>
<li>
<p>使用场景： 适用于请求资源过大的业务场景，或者图片、样式等静态资源。</p>
</li>
<li>
<p>组成部分和关键点：前端发起的条件请求时需要在请求头中包含条件标识，如If-Modified-Since、If-None-Match等，服务器收到请求后，判断资源是否有更新，如果没有更新会返回304状态码。</p>
<p>如下所示：</p>
<pre tabindex="0"><code>GET /example.html HTTP/1.1
Host: www.example.com
If-None-Match: &#34;abc123&#34;
If-Modified-Since: Fri, 24 Nov 2023 01:27:35 GMT

HTTP/1.1 304 Not Modified
</code></pre></li>
<li>
<p>底层原理和关键实现：当服务器收到前端发起的请求之后，会比较请求中的条件标识和资源的最后更新时间或实体标签，判断资源是否有更新，如果没有更新则返回304状态码，否则会返回200状态码和最新的资源内容。</p>
</li>
<li>
<p>已有的实现和对比： 大多数主流的web服务器和浏览器都支持304状态码，如Apache、Nginx、IIS等。与传统的200状态码相比，304状态码能更有效地利用缓存，减少不必要的网络请求和降低服务器资源负担。</p>
</li>
</ol>
<p>要验证服务器是否正确处理304状态码，可以打开浏览器的开发者工具中切换到 Network（网络）选项卡，查看指定的网络请求，在第一次请求之后的请求，是否显示  304 Not Modified ，然后其 Size 和Time 是否较少。如是，就说明在请求时，是使用了浏览器自身的缓存而不是重新从服务器下载资源。</p>
<h2 id="share">Share</h2>
<p>上周生病了之后，就没及时打卡这个活动了，整个人都晕晕的。只能这周补上了，加上RMPW活动，应该是要四篇，但也只能慢慢补了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-11-12 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 12 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 薄荷健康热干面、粥&lt;/li&gt;
&lt;li&gt;午餐： 华莱士汉堡、半鸡套餐、中可&lt;/li&gt;
&lt;li&gt;晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;抬起肩部，30kg，30次&lt;/li&gt;
&lt;li&gt;肩部拉伸，50kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311130909794.png&#34; alt=&#34;58a07513f69af5fcccb5316886ca4cfc_&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;今天是放开了吃了，全是炸鸡和可乐，快乐一下了。现在感觉偶尔吃一下，其实没啥感觉，只要能坚持下去，这些都不是问题。吃完继续坚持呗，肚子变小了，摸起来都不太一样。很明显知道确实变小了。&lt;/li&gt;
&lt;li&gt;还是早点睡，争取11点前睡觉，然后5点多起来吧，把晚上学习、写文章的事情，放到早上来做。&lt;/li&gt;
&lt;li&gt;本来打算隔一天去健身房的，但是想了想，不就最多一个半小时么，一天24小时，挤挤总能挤出时间的，不要给自己找借口。&lt;/li&gt;
&lt;li&gt;饮食再注意下，中午正常吃，晚上健康饮食。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 薄荷健康热干面、粥</li>
<li>午餐： 华莱士汉堡、半鸡套餐、中可</li>
<li>晚餐： 华莱士全鸡套餐、中可、一瓶百事可乐</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>抬起肩部，30kg，30次</li>
<li>肩部拉伸，50kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311130909794.png" alt="58a07513f69af5fcccb5316886ca4cfc_" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>今天是放开了吃了，全是炸鸡和可乐，快乐一下了。现在感觉偶尔吃一下，其实没啥感觉，只要能坚持下去，这些都不是问题。吃完继续坚持呗，肚子变小了，摸起来都不太一样。很明显知道确实变小了。</li>
<li>还是早点睡，争取11点前睡觉，然后5点多起来吧，把晚上学习、写文章的事情，放到早上来做。</li>
<li>本来打算隔一天去健身房的，但是想了想，不就最多一个半小时么，一天24小时，挤挤总能挤出时间的，不要给自己找借口。</li>
<li>饮食再注意下，中午正常吃，晚上健康饮食。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 4</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-04/</link>
      <pubDate>Sun, 12 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-04/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为  &lt;a href=&#34;https://leetcode.cn/problems/move-zeroes/&#34;&gt;283. 移动零&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个数组 &lt;code&gt;nums&lt;/code&gt;，编写一个函数将所有 &lt;code&gt;0&lt;/code&gt; 移动到数组的末尾，同时保持非零元素的相对顺序。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;请注意&lt;/strong&gt; ，必须在不复制数组的情况下原地对数组进行操作。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;moveZeroes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 记录数组中存在0的个数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 使用递归的方式，遍历删除数组中的0，并且记录数组中出现0的次数。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;deleteZeroes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;deleteZeroes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;splice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;deleteZeroes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 根据数组中出现0的次数，将删除全部0后的数据，在尾部添加count次0元素。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，先找到数组中0的位置，然后依次将其从数组中删除，并记录出现0的次数。&lt;/li&gt;
&lt;li&gt;根据0出现的次数，在数据尾部加上0。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;review&#34;&gt;Review&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://medium.com/@anjishnuray/your-life-is-built-by-what-you-do-after-your-work-hours-bc26ecc68169&#34;&gt;Your Life Is Built By What You Do After Your Work Hours | by Anjishnu Ray | Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你的工作会给你的人生带来价值，但不会很多，特别是你还很年轻的时候，你的人生是由你下班后的空闲时间决定的。&lt;/p&gt;
&lt;p&gt;我们通常工作6~8个小时，除去睡觉的时间，仍然还有8个小时的空闲时间。这些时间足够让你用来创造更有可能性的未来。&lt;/p&gt;
&lt;p&gt;成功人士总是会选择艰难的道路，首先你要在脑海中想象自己就是一位成功人士，然后在现实中，也这样认为。在这些下班后的空闲时间里，你是选择去Netflix网站看电影，还是用来打磨你的技能，你是得过且过，还是为你的将来制定周详的计划？成功人士总是选择艰难的道路，因为尽管很困难，但它是有价值的。&lt;/p&gt;
&lt;p&gt;成功人士总是优先考虑成就而不是舒适度。这是他们的生活方式。他们每天如此，最终使他成为现实中的成功人士。&lt;/p&gt;
&lt;p&gt;当你工作的时候，你就是在工作，你是在成长，在进步，在完成项目，这没有错。但是你是否想过利用你的空闲时间来打磨你的技能，实验和尝试新的事物？如果这些努力给你带来好处，你会后悔吗？肯定不会，但是如果你浪费你的空闲时间在肤浅的事情和盲目的娱乐上，肯定会让你后悔。不是说现在，而是在未来的某个时刻。&lt;/p&gt;
&lt;p&gt;休息能够恢复你的精力，放松能让你感到舒适。我们是人，当然需要休息，我们需要恢复精力和适当放松。这些都是必需品。但是安逸？我们为什么觉得安逸是一个必需品呢？它不是必需的，不应该成为一个必选项。&lt;/p&gt;
&lt;p&gt;就像那些成功人士说的那样，最好的潜力往往能在人们的坟墓中找到。这是因为直到他们死去，他们都没有在梦想中投入足够的努力和精力。&lt;/p&gt;
&lt;p&gt;青春是用来燃烧的，而不是用来消磨的。把这句话印到你的脑海之中吧。&lt;/p&gt;
&lt;p&gt;当人们老去之时，唯一的希望就是还能够拥有更多的时间。不，这不可能。当你变老之时，你是为自己的一生感到自豪，还是后悔不已呢？&lt;/p&gt;
&lt;p&gt;你不会活上一千年。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为  <a href="https://leetcode.cn/problems/move-zeroes/">283. 移动零</a></p>
<p>给定一个数组 <code>nums</code>，编写一个函数将所有 <code>0</code> 移动到数组的末尾，同时保持非零元素的相对顺序。</p>
<p><strong>请注意</strong> ，必须在不复制数组的情况下原地对数组进行操作。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">12</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">moveZeroes</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 记录数组中存在0的个数
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 使用递归的方式，遍历删除数组中的0，并且记录数组中出现0的次数。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">deleteZeroes</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">deleteZeroes</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">nums</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="nx">count</span><span class="o">++</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="nx">deleteZeroes</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">nums</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 根据数组中出现0的次数，将删除全部0后的数据，在尾部添加count次0元素。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">count</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">nums</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">nums</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><p>解题思路：</p>
<ol>
<li>首先，先找到数组中0的位置，然后依次将其从数组中删除，并记录出现0的次数。</li>
<li>根据0出现的次数，在数据尾部加上0。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://medium.com/@anjishnuray/your-life-is-built-by-what-you-do-after-your-work-hours-bc26ecc68169">Your Life Is Built By What You Do After Your Work Hours | by Anjishnu Ray | Medium</a></p>
<p>你的工作会给你的人生带来价值，但不会很多，特别是你还很年轻的时候，你的人生是由你下班后的空闲时间决定的。</p>
<p>我们通常工作6~8个小时，除去睡觉的时间，仍然还有8个小时的空闲时间。这些时间足够让你用来创造更有可能性的未来。</p>
<p>成功人士总是会选择艰难的道路，首先你要在脑海中想象自己就是一位成功人士，然后在现实中，也这样认为。在这些下班后的空闲时间里，你是选择去Netflix网站看电影，还是用来打磨你的技能，你是得过且过，还是为你的将来制定周详的计划？成功人士总是选择艰难的道路，因为尽管很困难，但它是有价值的。</p>
<p>成功人士总是优先考虑成就而不是舒适度。这是他们的生活方式。他们每天如此，最终使他成为现实中的成功人士。</p>
<p>当你工作的时候，你就是在工作，你是在成长，在进步，在完成项目，这没有错。但是你是否想过利用你的空闲时间来打磨你的技能，实验和尝试新的事物？如果这些努力给你带来好处，你会后悔吗？肯定不会，但是如果你浪费你的空闲时间在肤浅的事情和盲目的娱乐上，肯定会让你后悔。不是说现在，而是在未来的某个时刻。</p>
<p>休息能够恢复你的精力，放松能让你感到舒适。我们是人，当然需要休息，我们需要恢复精力和适当放松。这些都是必需品。但是安逸？我们为什么觉得安逸是一个必需品呢？它不是必需的，不应该成为一个必选项。</p>
<p>就像那些成功人士说的那样，最好的潜力往往能在人们的坟墓中找到。这是因为直到他们死去，他们都没有在梦想中投入足够的努力和精力。</p>
<p>青春是用来燃烧的，而不是用来消磨的。把这句话印到你的脑海之中吧。</p>
<p>当人们老去之时，唯一的希望就是还能够拥有更多的时间。不，这不可能。当你变老之时，你是为自己的一生感到自豪，还是后悔不已呢？</p>
<p>你不会活上一千年。</p>
<p>每一分钟都很重要。</p>
<p>每一个行动都算数。</p>
<p>说实话，一旦你变老了，你就不会再有那么多时间和精力，但是现在，你还很年轻，精力是无限的，精神气、对知识的渴望和对世界的好奇心，都是无限的。要把它们用在正确的方向上。</p>
<p>如果你没有掌控自己的人生，那人生将毫无意义。成功人士通过征服自己来征服自己的人生。那不是一天一周或者一个月的事情，这需要花费好几年的时间。他们坚信自己能够成功，所以一次又一次的坚持，永不放弃。</p>
<p>难道你不想感受那种成就感吗？</p>
<h2 id="tip">Tip</h2>
<p><code>npm install</code> 自己<code>vue next</code>模版，出现封装的库引向的是<code>192.168.24.XXX</code>的npm私有源，使用命令<code>npm config set</code>设置了新的npm私有源<code>112.230.193.XXX</code>，但是一直没有生效，总是报错如下：</p>
<p><img loading="lazy" src="/Users/haowei/Documents/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7/Picture/202311081429242.png"></p>
<p>原因是因为<code>package-lock.json</code>里面的是<code>192.168.24.XXX</code>的npm私有源，虽然在终端运行命令<code>npm config set</code>设置新的npm私有源路径，但<code>npm install</code>时，读取的还是<code>package-lock.json</code>里面的，起因是npm私有源路径有改动，这个模版没有及时进行更新。涉及到的知识点可以是<code>package-lock.json</code>和<code>package.json</code>的异同。<code>package.json</code>是对项目的高级描述，用于指定项目的基本信息和依赖包的版本范围，而<code>package-lock.json</code>是由<code>npm</code>自动生成和维护的文件，用于确保项目在不同环境下安装的依赖包的版本一致性，在实际开发中，我们只需要编辑和维护<code>package.json</code>文件，而<code>package-lock.json</code>文件会在每次执行<code>npm install</code>命令时自动更新。</p>
<h2 id="share">Share</h2>
<p>很多时候，察言观色有利于我们读懂对方要说的意思，但在争吵中，这却是有害的，你可能会说，不是有些情况是我们要根据对方的反映，选择一些可以缓和场面的用词么，但是，这个前提是你自己情绪是稳定的，然而，在这一步之前，我们很容易忽略对方说的内容，而过分在意对方说话时的神情和语气，导致自己的情绪先失控了。在这个时候，我们是做不到什么察言观色的，基本无脑输出了，所以在争吵的时候，我们不要在意别人怎么说，只需要在意说的是什么，别人声调一拉高，你也跟着拉高，最后只能针尖对麦芒，无法收场。别人声调一拉高，你还是很平和的说出你自己的观点，别人自然觉得有点尴尬，也会降低声调好好说话。当然你也会说，这也太憋屈了吧，凭啥别人怎么爽都行，不高兴就怼，你却要思前顾后的，一忍再忍，好不窝囊。这当然也没错，但是如果你的目的是想解决问题本身，而不是在争吵上面争个输赢，那也只能如此了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>RMPW Week 1</title>
      <link>https://dstweihao.cn/posts/rmpw/rmpw-week-1/</link>
      <pubDate>Sun, 12 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/rmpw/rmpw-week-1/</guid>
      <description>&lt;h2 id=&#34;read&#34;&gt;Read&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311012011478.jpg&#34; alt=&#34;23845292-2_u_9&#34; style=&#34;zoom: 80%;&#34; /&gt;
&lt;p&gt;《新参者》仿佛还是在沿用《白夜行》的写作方式，表面上一直游离在剧情主线之外，一直在叙述一些仿佛和凶杀案无关的事情，实际上环环相扣，直到最后，才会把所有的事情全都串起来。整本书不算特别惊艳，如果《白夜行》可以是9.7分，那《新参者》可能也就8.0分，行凶者是谁也不觉得有多意外，可能是很晚才出场的缘故，一般最不可能是凶手的，结果是凶手，这种反差可能才会更为强烈，行凶的动机也略微俗套。书中觉得出彩的，反而是一些温暖人心的小事情，大多都是关乎亲情。不同的店铺，不同的家庭，不同表达爱的方式。印象中特别深刻的是，三井峰子对其多年未见、关系紧张的儿子弘毅表达的爱意，那是一个美丽的误会，但却深入人心。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;动机这东西，只要本人不说，就没人知道。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;男人解决不了婆媳间的矛盾，事情没那么简单。你能做的就是倾听各自的说辞。只要默默听就行，一定不要反驳，不然只会火上浇油。听完就做出理解的表情，说她有道理，说得对，然后告诉她会找机会把她的想法转达给另一方。当然，千万不要真去转达。总有一天，她还会责问你，事情办得怎样了。到时你就要忍，让她们把矛头指向你。你能做的只有这些。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;这个嘛，果然是因为你。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;三井女士搬到小传马町后，每天应该都过得很快乐。她完全沉浸在默默守望的愉悦中了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;我从和户纪子的事中明白了一个道理，那就是男人要想让女人幸福，就得像牛马一样工作。但峰子的行动又告诉我，仅仅那样也不行。我真是蠢极了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;我的确疼爱儿子，而且对这点很有自信。但疼爱和重视不一样。所谓重视，是考虑孩子的未来，不断为他做出最好的选择，我却没能那么做。我只是为自己有了一个可以倾注爱的对象而极其高兴。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;当然，孩子总有一天会长大，不会永远那么可爱，有时还会闯祸。这种时候，父亲往往会选择逃避。工作一忙，他们更为自己找到一个体面的借口。我也一样。妻子跟我说起儿子时，我只嫌她啰唆，根本不想跟她一起解决问题。当妻子因此责怪我时，我总会说自己有工作。即便工作不忙，我也总把这句话当武器，将所有麻烦都推给妻子，甚至在听说儿子交了狐朋狗友时，我也并不在意。我乐观地认为，稍微活泼一点的男孩子总有一段时期会这样。实际上，我的乐观只是在自欺欺人。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;movies&#34;&gt;Movies&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.nowre.com/articles/2022/12/oppenheimer.jpeg&#34;&gt;&lt;/p&gt;
&lt;p&gt;去年五六月份就听说克里斯托弗·诺兰要拍一部关于原子弹的电影，当时并不知道奥本海默这个人，后来才去了解了一下。说到诺兰的实拍，不免会在各平台看到很多梗图，印象最深的是女王和天行者的表情图，真的要实拍吗？真的吗&amp;hellip;&amp;hellip;这时想起来还是让人忍俊不禁。时间过得太快了，本来以为诺兰的新作还要很久才能看到，没想到电影那么快就上映了。我上次看诺兰的电影应该是《信条》，虽然很烧脑，但是看完还是觉得不错，我还是比较喜欢有点新意或真正用心去拍的电影。&lt;/p&gt;
&lt;p&gt;有时候我也在想什么才是一部好电影？是票房好？是口碑好？还是看导演是谁？演员是谁？或者说我喜欢的就是？&lt;/p&gt;
&lt;p&gt;《奥本海默》整部电影时长长达3个小时，在电影院里算是相当长了，剧情主要讲述了奥本海默这个项目经理在二战期间带领团队研制原子弹的过程，这就是”曼哈顿计划“，以及二战结束后所遭遇的不公正待遇。看完这部电影，我不禁想起《模仿游戏》、《萨利机长》，还有《钱学森》、《横空出世》，这些电影都与《奥本海默》有相似之处，可能是因为它们都涉及到有毒的青苹果、拍摄手法、个人遭遇以及有关原子弹的话题。&lt;/p&gt;
&lt;p&gt;诺兰在这部电影中依旧使用了他擅长的时间线穿梭叙事手法，如果观影中稍不注意，就会觉得这电影被剪得稀碎，难以理清整部电影剧情的走向。加上彩色和黑白画面的交叉使用，就好像正派和反派的对立着，从不同视角叙说这一段历史，然后才汇集于故事的结局之中，让这种稀碎感更为严重，总的来说，电影还是很能发人深思的。&lt;/p&gt;
&lt;p&gt;核武器的滥用会给人类的未来带来怎样严重的后果？电影中展现了很多奥本海默对后果的想象，无尽的爆炸，无休止的灭亡，哀乐响彻蓝色星球上空。&lt;/p&gt;
&lt;p&gt;“现在我成了死神，世界的毁灭者。”&lt;/p&gt;
&lt;p&gt;基里安·墨菲曾在蝙蝠侠三部曲中饰演稻草人，但我不记得他也出演过《盗梦空间》，这个演员的长相确实很有特点，尤其是他那如海洋一样深邃的眼睛。我听说他主演的《浴血黑帮》电视剧也很不错，打算找时间看一看。&lt;/p&gt;
&lt;p&gt;电影中也讲了奥本海默的情史，不得不说，奥本海默，你可真的是玩得花。&lt;/p&gt;
&lt;p&gt;在《奥本海默》中，只有在实验引爆时才出现蘑菇云，本来以为会看到小男孩和胖子的实拍，可惜并没有。&lt;/p&gt;
&lt;p&gt;电影的音乐非常出色，特别是几段旋律，例如American Prometheus、Can You Hear The Music和Destroyer Of Worlds等，我自己也专门找了一下这些曲子。&lt;/p&gt;
&lt;p&gt;另外，爱因斯坦在电影中出现了几次，这些画面我都非常喜欢，特别是最后和奥本海默在湖边的对话，一下子就升华了电影的主题。&lt;/p&gt;
&lt;p&gt;“有一天，当他们对你的惩罚足够多时，他们会给你提供鲑鱼和土豆沙拉，发表演讲，给你一枚奖章。请记住，这不是为了你，而是为了他们”。&lt;/p&gt;
&lt;p&gt;尽管原子弹在二战的胜利中发挥了重要作用，作为有良心的科学家，我们应该始终为全人类的未来着想。然而，现实往往是残酷的，鸟尽弓藏，到头来只不过是政治斗争中的牺牲品，棋盘上的一枚棋子。&lt;/p&gt;
&lt;h2 id=&#34;poetry&#34;&gt;Poetry&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311090721103.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;writing&#34;&gt;Writing&lt;/h2&gt;
&lt;p&gt;其实，本来不打算整这第二个打卡活动了，也就是RMPW，本来ARTS已经够花时间的了。但是不整这个，一来对不上AR7这个网名，本来这个的意思就是这两个打卡活动的开头字母，外加每周一次的意思。&lt;/p&gt;
&lt;p&gt;每次打算去做这个事情，总是害怕做不到怎么办？读书笔记要整理，电影要看，诗词要背，文章要写。仔细想一下，还是很花时间的，看什么书，什么电影，背哪些诗词，自己是很明白的，但是要写什么，倒是难住我了。一开始的设计思路是，把看的书，外加看的电影和背的诗词，联系起来，然后在跑步时，构思一下文章，甚至一篇小说，但是，总觉得太耗时间了，在跑步机上面我要看书的。然后就是，基于世界名画，构思一篇小说，或者看图写话，用文字准确描绘名画的场景，这样一来可以知道世界名画相关知识，增长知识面，二来我也比较感兴趣。但还是觉得不妥，总觉得要素过多，不便于坚持下去，一开始应该从简单的开始，先能坚持一段时间，再慢慢上强度，思来想去，就变成现在这样子，“每周一篇原创作品，畅所欲言，题材不限，体裁不限，如不是诗词，字数800字左右。”本来打算只是100字的，贵在坚持嘛，但是又太简单了，毕竟是以周为单位，不是以天为单位。&lt;/p&gt;
&lt;p&gt;但具体要写些什么呢？&lt;/p&gt;
&lt;p&gt;我自己本来就有写日记，心里话都在里面了（你信么？不信就对了），然后平时工作上面遇到的严重问题，检讨和反思过程也要写一下，加上健身日记，也写写心得体会，接下去要去完善的部分，还有平时的技术博文，感觉自己写东西的机会还是很多的，但大多都率性而为，没有任何约束就是了，通常都是简单检查一下，有没有错别字，有没有病句就够了，至于遣词造句，梳理文章整体脉络，结构，逻辑自洽，是没有什么深入的，别人看得懂就行。想到这些，我就觉得，还是对自己要求高一些，毕竟，我都快忘了写文学方面文章的感觉是什么样的了。不管悲春伤秋？矫揉造作？无病呻吟？还是堆砌辞藻？都有吧，也都忘得七七八八了。&lt;/p&gt;
&lt;p&gt;写到这里，我好像明白为什么这个RMPW被我推迟了一个多月了，因为总是打算去做这些事情之后，才去完成这些环节的工作，比如要去看新的书籍、电影、诗词，完成之后，才可以开始不是？但是，其实不一定非要这样，还有其他的思路，就是先掏空自己，先把自己所做过的会的，先整理出来，看的书和电影，读书时代背了还记得的诗词，先把这些依次输出，一来相对简单，而且刚好可以借此机会重温，二来会促使自己要不断输入，不然就没有东西可写了。&lt;/p&gt;
&lt;p&gt;在小学那时数学老师就告诉我们，写文章的技巧，就是不管三七二十一，想到什么写什么，不要去想写下的文字到底符不符合作文主旨，哪怕前言不搭后语，都可以，全都写出来之后，你就知道自己应该怎么办了。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="read">Read</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311012011478.jpg" alt="23845292-2_u_9" style="zoom: 80%;" />
<p>《新参者》仿佛还是在沿用《白夜行》的写作方式，表面上一直游离在剧情主线之外，一直在叙述一些仿佛和凶杀案无关的事情，实际上环环相扣，直到最后，才会把所有的事情全都串起来。整本书不算特别惊艳，如果《白夜行》可以是9.7分，那《新参者》可能也就8.0分，行凶者是谁也不觉得有多意外，可能是很晚才出场的缘故，一般最不可能是凶手的，结果是凶手，这种反差可能才会更为强烈，行凶的动机也略微俗套。书中觉得出彩的，反而是一些温暖人心的小事情，大多都是关乎亲情。不同的店铺，不同的家庭，不同表达爱的方式。印象中特别深刻的是，三井峰子对其多年未见、关系紧张的儿子弘毅表达的爱意，那是一个美丽的误会，但却深入人心。</p>
<blockquote>
<p>动机这东西，只要本人不说，就没人知道。</p></blockquote>
<blockquote>
<p>男人解决不了婆媳间的矛盾，事情没那么简单。你能做的就是倾听各自的说辞。只要默默听就行，一定不要反驳，不然只会火上浇油。听完就做出理解的表情，说她有道理，说得对，然后告诉她会找机会把她的想法转达给另一方。当然，千万不要真去转达。总有一天，她还会责问你，事情办得怎样了。到时你就要忍，让她们把矛头指向你。你能做的只有这些。</p></blockquote>
<blockquote>
<p>这个嘛，果然是因为你。</p></blockquote>
<blockquote>
<p>三井女士搬到小传马町后，每天应该都过得很快乐。她完全沉浸在默默守望的愉悦中了。</p></blockquote>
<blockquote>
<p>我从和户纪子的事中明白了一个道理，那就是男人要想让女人幸福，就得像牛马一样工作。但峰子的行动又告诉我，仅仅那样也不行。我真是蠢极了。</p></blockquote>
<blockquote>
<p>我的确疼爱儿子，而且对这点很有自信。但疼爱和重视不一样。所谓重视，是考虑孩子的未来，不断为他做出最好的选择，我却没能那么做。我只是为自己有了一个可以倾注爱的对象而极其高兴。</p></blockquote>
<blockquote>
<p>当然，孩子总有一天会长大，不会永远那么可爱，有时还会闯祸。这种时候，父亲往往会选择逃避。工作一忙，他们更为自己找到一个体面的借口。我也一样。妻子跟我说起儿子时，我只嫌她啰唆，根本不想跟她一起解决问题。当妻子因此责怪我时，我总会说自己有工作。即便工作不忙，我也总把这句话当武器，将所有麻烦都推给妻子，甚至在听说儿子交了狐朋狗友时，我也并不在意。我乐观地认为，稍微活泼一点的男孩子总有一段时期会这样。实际上，我的乐观只是在自欺欺人。</p></blockquote>
<h2 id="movies">Movies</h2>
<p><img loading="lazy" src="https://files.nowre.com/articles/2022/12/oppenheimer.jpeg"></p>
<p>去年五六月份就听说克里斯托弗·诺兰要拍一部关于原子弹的电影，当时并不知道奥本海默这个人，后来才去了解了一下。说到诺兰的实拍，不免会在各平台看到很多梗图，印象最深的是女王和天行者的表情图，真的要实拍吗？真的吗&hellip;&hellip;这时想起来还是让人忍俊不禁。时间过得太快了，本来以为诺兰的新作还要很久才能看到，没想到电影那么快就上映了。我上次看诺兰的电影应该是《信条》，虽然很烧脑，但是看完还是觉得不错，我还是比较喜欢有点新意或真正用心去拍的电影。</p>
<p>有时候我也在想什么才是一部好电影？是票房好？是口碑好？还是看导演是谁？演员是谁？或者说我喜欢的就是？</p>
<p>《奥本海默》整部电影时长长达3个小时，在电影院里算是相当长了，剧情主要讲述了奥本海默这个项目经理在二战期间带领团队研制原子弹的过程，这就是”曼哈顿计划“，以及二战结束后所遭遇的不公正待遇。看完这部电影，我不禁想起《模仿游戏》、《萨利机长》，还有《钱学森》、《横空出世》，这些电影都与《奥本海默》有相似之处，可能是因为它们都涉及到有毒的青苹果、拍摄手法、个人遭遇以及有关原子弹的话题。</p>
<p>诺兰在这部电影中依旧使用了他擅长的时间线穿梭叙事手法，如果观影中稍不注意，就会觉得这电影被剪得稀碎，难以理清整部电影剧情的走向。加上彩色和黑白画面的交叉使用，就好像正派和反派的对立着，从不同视角叙说这一段历史，然后才汇集于故事的结局之中，让这种稀碎感更为严重，总的来说，电影还是很能发人深思的。</p>
<p>核武器的滥用会给人类的未来带来怎样严重的后果？电影中展现了很多奥本海默对后果的想象，无尽的爆炸，无休止的灭亡，哀乐响彻蓝色星球上空。</p>
<p>“现在我成了死神，世界的毁灭者。”</p>
<p>基里安·墨菲曾在蝙蝠侠三部曲中饰演稻草人，但我不记得他也出演过《盗梦空间》，这个演员的长相确实很有特点，尤其是他那如海洋一样深邃的眼睛。我听说他主演的《浴血黑帮》电视剧也很不错，打算找时间看一看。</p>
<p>电影中也讲了奥本海默的情史，不得不说，奥本海默，你可真的是玩得花。</p>
<p>在《奥本海默》中，只有在实验引爆时才出现蘑菇云，本来以为会看到小男孩和胖子的实拍，可惜并没有。</p>
<p>电影的音乐非常出色，特别是几段旋律，例如American Prometheus、Can You Hear The Music和Destroyer Of Worlds等，我自己也专门找了一下这些曲子。</p>
<p>另外，爱因斯坦在电影中出现了几次，这些画面我都非常喜欢，特别是最后和奥本海默在湖边的对话，一下子就升华了电影的主题。</p>
<p>“有一天，当他们对你的惩罚足够多时，他们会给你提供鲑鱼和土豆沙拉，发表演讲，给你一枚奖章。请记住，这不是为了你，而是为了他们”。</p>
<p>尽管原子弹在二战的胜利中发挥了重要作用，作为有良心的科学家，我们应该始终为全人类的未来着想。然而，现实往往是残酷的，鸟尽弓藏，到头来只不过是政治斗争中的牺牲品，棋盘上的一枚棋子。</p>
<h2 id="poetry">Poetry</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311090721103.png"></p>
<h2 id="writing">Writing</h2>
<p>其实，本来不打算整这第二个打卡活动了，也就是RMPW，本来ARTS已经够花时间的了。但是不整这个，一来对不上AR7这个网名，本来这个的意思就是这两个打卡活动的开头字母，外加每周一次的意思。</p>
<p>每次打算去做这个事情，总是害怕做不到怎么办？读书笔记要整理，电影要看，诗词要背，文章要写。仔细想一下，还是很花时间的，看什么书，什么电影，背哪些诗词，自己是很明白的，但是要写什么，倒是难住我了。一开始的设计思路是，把看的书，外加看的电影和背的诗词，联系起来，然后在跑步时，构思一下文章，甚至一篇小说，但是，总觉得太耗时间了，在跑步机上面我要看书的。然后就是，基于世界名画，构思一篇小说，或者看图写话，用文字准确描绘名画的场景，这样一来可以知道世界名画相关知识，增长知识面，二来我也比较感兴趣。但还是觉得不妥，总觉得要素过多，不便于坚持下去，一开始应该从简单的开始，先能坚持一段时间，再慢慢上强度，思来想去，就变成现在这样子，“每周一篇原创作品，畅所欲言，题材不限，体裁不限，如不是诗词，字数800字左右。”本来打算只是100字的，贵在坚持嘛，但是又太简单了，毕竟是以周为单位，不是以天为单位。</p>
<p>但具体要写些什么呢？</p>
<p>我自己本来就有写日记，心里话都在里面了（你信么？不信就对了），然后平时工作上面遇到的严重问题，检讨和反思过程也要写一下，加上健身日记，也写写心得体会，接下去要去完善的部分，还有平时的技术博文，感觉自己写东西的机会还是很多的，但大多都率性而为，没有任何约束就是了，通常都是简单检查一下，有没有错别字，有没有病句就够了，至于遣词造句，梳理文章整体脉络，结构，逻辑自洽，是没有什么深入的，别人看得懂就行。想到这些，我就觉得，还是对自己要求高一些，毕竟，我都快忘了写文学方面文章的感觉是什么样的了。不管悲春伤秋？矫揉造作？无病呻吟？还是堆砌辞藻？都有吧，也都忘得七七八八了。</p>
<p>写到这里，我好像明白为什么这个RMPW被我推迟了一个多月了，因为总是打算去做这些事情之后，才去完成这些环节的工作，比如要去看新的书籍、电影、诗词，完成之后，才可以开始不是？但是，其实不一定非要这样，还有其他的思路，就是先掏空自己，先把自己所做过的会的，先整理出来，看的书和电影，读书时代背了还记得的诗词，先把这些依次输出，一来相对简单，而且刚好可以借此机会重温，二来会促使自己要不断输入，不然就没有东西可写了。</p>
<p>在小学那时数学老师就告诉我们，写文章的技巧，就是不管三七二十一，想到什么写什么，不要去想写下的文字到底符不符合作文主旨，哪怕前言不搭后语，都可以，全都写出来之后，你就知道自己应该怎么办了。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-11-09 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 09 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-09-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 玉米、鸡蛋&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 公司食堂&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;左右大腿，68kg，100次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311092242348.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;最近早点睡，状态真不一样&lt;/li&gt;
&lt;li&gt;健身房团建去了，关门了两天，刚好我也要忙写文章，就少了几天。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 玉米、鸡蛋</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 公司食堂</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>左右大腿，68kg，100次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311092242348.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>最近早点睡，状态真不一样</li>
<li>健身房团建去了，关门了两天，刚好我也要忙写文章，就少了几天。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 3</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-03/</link>
      <pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-03/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为  &lt;a href=&#34;https://leetcode.cn/problems/longest-consecutive-sequence/&#34;&gt;128. 最长连续序列&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个未排序的整数数组 &lt;code&gt;nums&lt;/code&gt; ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。&lt;/p&gt;
&lt;p&gt;请你设计并实现时间复杂度为 &lt;code&gt;O(n)&lt;/code&gt; 的算法解决此问题。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;解释&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;最长数字连续序列是&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;它的长度为&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longestConsecutive&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 如果数组为空，则值为0，否则最小为1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceMaxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 去重，使用对象key唯一性的特性实现数组去重。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 获取最终的去重后的数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hasOwnProperty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;call&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 将数组排序，从小到大排序
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 设置顺序起点为数组下标为0的位置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 设置顺序起点值，下标为0的值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;latestStartValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 用来记录每个顺序，以起点为key，总共有多少次。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// 因为设置了latestStartValue = result[0]，默认会走else逻辑，sequenceCountObject[0]会多一次。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// 实现的逻辑是，比如数组为[1,2,3,4,5,8,9,10]，当后一个数，减去它的下标等于当前值latestStartValue(4-3=1)，意味着还是处于顺序中，如果不是，比如到8了，那就开始新的顺序起点。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;// 其中，因为第一个起点数，不是每次都是下标0开始的，所以不能只是item - latestStartIndex，而是item - (index - latestStartIndex)拿到差值。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;latestStartValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;latestStartValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;c1&#34;&gt;// 如果当前值减去下标差值一直等于顺序起点值，意味着还处于顺序中，就加到对象这个以每个起点下标为key的值上，+1。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;c1&#34;&gt;//当对象中还没有存在这个起点下标的key时，默认从1开始，因为当latestStartIndex开始新的起点的时候，是走上面的if逻辑的，意味着这里要把起点的次数算上，所以是1+1,第一个1是起点，第二个1是记录次数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;                    &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latestStartIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 获取多个顺序长度的最大值，如果比当前值大，则赋值最新。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hasOwnProperty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;call&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceCountObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceMaxValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;sequenceMaxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sequenceMaxValue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为  <a href="https://leetcode.cn/problems/longest-consecutive-sequence/">128. 最长连续序列</a></p>
<p>给定一个未排序的整数数组 <code>nums</code> ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。</p>
<p>请你设计并实现时间复杂度为 <code>O(n)</code> 的算法解决此问题。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="err">：</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="err">：</span><span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">100</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="err">：</span><span class="mi">4</span>
</span></span><span class="line"><span class="cl"><span class="nx">解释</span><span class="err">：</span><span class="nx">最长数字连续序列是</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span><span class="err">。</span><span class="nx">它的长度为</span> <span class="mi">4</span><span class="err">。</span>
</span></span></code></pre></div><p>实现代码如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">longestConsecutive</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// 如果数组为空，则值为0，否则最小为1
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">sequenceMaxValue</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">category</span> <span class="o">=</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 去重，使用对象key唯一性的特性实现数组去重。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">nums</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">item</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">category</span><span class="p">[</span><span class="nx">item</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">category</span><span class="p">[</span><span class="nx">item</span><span class="p">].</span><span class="nx">push</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">category</span><span class="p">[</span><span class="nx">item</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nx">item</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 获取最终的去重后的数组
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">category</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nb">Object</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">category</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nb">Number</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 将数组排序，从小到大排序
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">result</span><span class="p">.</span><span class="nx">sort</span><span class="p">((</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nx">x</span> <span class="o">-</span> <span class="nx">y</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1">// 设置顺序起点为数组下标为0的位置
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">latestStartIndex</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 设置顺序起点值，下标为0的值
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">latestStartValue</span> <span class="o">=</span> <span class="nx">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 用来记录每个顺序，以起点为key，总共有多少次。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kd">let</span> <span class="nx">sequenceCountObject</span> <span class="o">=</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nx">result</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">item</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 因为设置了latestStartValue = result[0]，默认会走else逻辑，sequenceCountObject[0]会多一次。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// 实现的逻辑是，比如数组为[1,2,3,4,5,8,9,10]，当后一个数，减去它的下标等于当前值latestStartValue(4-3=1)，意味着还是处于顺序中，如果不是，比如到8了，那就开始新的顺序起点。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="c1">// 其中，因为第一个起点数，不是每次都是下标0开始的，所以不能只是item - latestStartIndex，而是item - (index - latestStartIndex)拿到差值。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">-</span> <span class="p">(</span><span class="nx">index</span> <span class="o">-</span> <span class="nx">latestStartIndex</span><span class="p">)</span> <span class="o">!==</span> <span class="nx">latestStartValue</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">latestStartIndex</span> <span class="o">=</span> <span class="nx">index</span>
</span></span><span class="line"><span class="cl">                <span class="nx">latestStartValue</span> <span class="o">=</span> <span class="nx">result</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                
</span></span><span class="line"><span class="cl">                <span class="c1">// 如果当前值减去下标差值一直等于顺序起点值，意味着还处于顺序中，就加到对象这个以每个起点下标为key的值上，+1。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>                <span class="k">if</span> <span class="p">(</span><span class="nx">sequenceCountObject</span><span class="p">[</span><span class="nx">latestStartIndex</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">sequenceCountObject</span><span class="p">[</span><span class="nx">latestStartIndex</span><span class="p">]</span> <span class="o">=</span> <span class="nx">sequenceCountObject</span><span class="p">[</span><span class="nx">latestStartIndex</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="c1">//当对象中还没有存在这个起点下标的key时，默认从1开始，因为当latestStartIndex开始新的起点的时候，是走上面的if逻辑的，意味着这里要把起点的次数算上，所以是1+1,第一个1是起点，第二个1是记录次数
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>                    <span class="nx">sequenceCountObject</span><span class="p">[</span><span class="nx">latestStartIndex</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1">// 获取多个顺序长度的最大值，如果比当前值大，则赋值最新。
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">sequenceCountObject</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nb">Object</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">sequenceCountObject</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="kr">const</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">sequenceCountObject</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">&gt;</span> <span class="nx">sequenceMaxValue</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">sequenceMaxValue</span> <span class="o">=</span> <span class="nx">value</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">sequenceMaxValue</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>首先将整个数组去重，然后从小到大排序，然后通过后一个数减去前一个数，其值是否为1来实现，主要思路是这个，但实现过程中，也是在不断地摸索，整体比前面两道题难很多，具体步骤如下：</p>
<ol>
<li>如果数组为空，则最长连续序列值sequenceMaxValue为0，否则sequenceMaxValue最小为1。</li>
<li>去重，使用对象key唯一性的特性实现数组去重。</li>
<li>获取最终的去重后的数组。</li>
<li>将数组排序，从小到大排序。</li>
<li>将数组遍历，创建一个对象，用每个顺序起点作为key，判断数组中的元素是否在这个顺序中，如果是，其值+1，如果不是，开始新的顺序，使用新的顺序起点为key，以此类推。</li>
<li>然后将对象中，value最大的，就是当前数组中，最长连续序列值。</li>
</ol>
<h2 id="review">Review</h2>
<p><a href="https://medium.com/@kevinnokiawriting/the-more-you-do-the-easier-it-gets-3230f80c7f97">The More You Do, The Easier It Gets | by Kevin Nokia Writing | Medium</a></p>
<p>作者主要是说之前一直喜欢玩电子游戏，花了很多时间在这上面，但是那都是短暂的快乐。所以他想要改变，想做一些值得的东西，那怎么能够改变呢？从习惯入手，在最初的14天或21天会很困难，但是在那之后，你的身体和心灵会帮助你养成你想要养成的新习惯，只需要21天，就会变得不一样，反复做你所做的事情，你做的越多，就越容易。最后，引用了一句宫本武藏的话：</p>
<p>“一开始可能看起来很困难，但不开始一切都很困难。”</p>
<p><img alt="image-20231108215109788" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311082151678.png"></p>
<h2 id="tip">Tip</h2>
<p>在<code>mac</code>下 <code>flutter</code> 怎么切换指定版本？在 <code>flutter sdk</code>目录下，运行命令 <code>git checkout &lt;指定版本&gt;</code>即可，比如 <code>git checkout 3.3.10</code>，然后使用命令 <code>flutter version</code> 查看当前版本，如下所示：<img alt="截屏2023-11-07 17.42.03" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311071742456.png"></p>
<h2 id="share">Share</h2>
<ol>
<li>
<p>学习减肥知识可以在薄荷健康APP上面，有很多教程，可以都看看。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311032213494.png" alt="image-20231103221345776" style="zoom:33%;" />
</li>
<li>
<p>学习时间管理可以在滴答清单APP上面新手指南-最佳实践，上面有很多文章都很不错。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311032214956.png" alt="image-20231103221454846" style="zoom:33%;" />
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>关于RMPW</title>
      <link>https://dstweihao.cn/posts/rmpw/%E5%85%B3%E4%BA%8Ermpw/</link>
      <pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/rmpw/%E5%85%B3%E4%BA%8Ermpw/</guid>
      <description>&lt;p&gt;&lt;code&gt;RMPW &lt;/code&gt; 是我基于陈皓提出的 &lt;code&gt;ARTS&lt;/code&gt; 所设想的一个关于写作方面的训练活动，以周为单位。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Read&lt;/code&gt;：每周一本书，概括该书内容，摘抄好句，思考感悟。 &lt;a href=&#34;https://weread.qq.com/&#34;&gt;微信读书-正版书籍小说免费阅读 (qq.com)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Movies&lt;/code&gt;：每周一部电影，概括作品内容，摘抄好句，思考感悟。 &lt;a href=&#34;https://www.libvio.pro/&#34;&gt;LIBVIO-官网&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Poetry&lt;/code&gt;：每周背一首诗词/诗歌。  &lt;a href=&#34;https://www.gushiwen.cn/&#34;&gt;古诗文网-古诗文经典传承 (gushiwen.cn)&lt;/a&gt;上面有&lt;code&gt;译&lt;/code&gt;、&lt;code&gt;注&lt;/code&gt;、&lt;code&gt;赏&lt;/code&gt;、&lt;code&gt;音&lt;/code&gt;、&lt;code&gt;背&lt;/code&gt;功能，还是很方便的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;writing&lt;/code&gt;：每周一篇原创作品，畅所欲言，题材不限，体裁不限，如不是诗词，字数800字左右。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><code>RMPW </code> 是我基于陈皓提出的 <code>ARTS</code> 所设想的一个关于写作方面的训练活动，以周为单位。</p>
<p><code>Read</code>：每周一本书，概括该书内容，摘抄好句，思考感悟。 <a href="https://weread.qq.com/">微信读书-正版书籍小说免费阅读 (qq.com)</a></p>
<p><code>Movies</code>：每周一部电影，概括作品内容，摘抄好句，思考感悟。 <a href="https://www.libvio.pro/">LIBVIO-官网</a></p>
<p><code>Poetry</code>：每周背一首诗词/诗歌。  <a href="https://www.gushiwen.cn/">古诗文网-古诗文经典传承 (gushiwen.cn)</a>上面有<code>译</code>、<code>注</code>、<code>赏</code>、<code>音</code>、<code>背</code>功能，还是很方便的。</p>
<p><code>writing</code>：每周一篇原创作品，畅所欲言，题材不限，体裁不限，如不是诗词，字数800字左右。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-11-04 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 04 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-04-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 薄荷健康粥、玉米热狗、牛奶&lt;/li&gt;
&lt;li&gt;午餐： 公司食堂&lt;/li&gt;
&lt;li&gt;晚餐： 羊肉烩面&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;胸部前推，40kg，70次&lt;/li&gt;
&lt;li&gt;扩胸，35kg，30次&lt;/li&gt;
&lt;li&gt;左右大腿，68kg，100次&lt;/li&gt;
&lt;li&gt;向下拉伸，50kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311060936168.png&#34; alt=&#34;6239fadf2f8fdfe96d961a432d513d08_&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;还是要注意控制饮食，然后是在公司时注意吃的东西&lt;/li&gt;
&lt;li&gt;晚上早点睡觉。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 薄荷健康粥、玉米热狗、牛奶</li>
<li>午餐： 公司食堂</li>
<li>晚餐： 羊肉烩面</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>胸部前推，40kg，70次</li>
<li>扩胸，35kg，30次</li>
<li>左右大腿，68kg，100次</li>
<li>向下拉伸，50kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311060936168.png" alt="6239fadf2f8fdfe96d961a432d513d08_" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>还是要注意控制饮食，然后是在公司时注意吃的东西</li>
<li>晚上早点睡觉。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-11-02 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 02 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-11-02-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 薄荷健康粥、玉米热狗、牛奶&lt;/li&gt;
&lt;li&gt;午餐： 猪脚、鸡腿、面&lt;/li&gt;
&lt;li&gt;晚餐： 公司食堂，吃的有点多&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;上推肩部，25kg，50次&lt;/li&gt;
&lt;li&gt;大腿上下，75kg，50次&lt;/li&gt;
&lt;li&gt;拉伸肩部，50kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311030909761.jpg&#34; alt=&#34;b9c26fbfea7e14debc623fe8b0c6b08&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;最近加班，晚上在公司吃的时候，很容易控制不住，这个点要注意。&lt;/li&gt;
&lt;li&gt;坚持去健身房，力量训练+1个小时爬坡。&lt;/li&gt;
&lt;li&gt;晚上早点睡觉。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 薄荷健康粥、玉米热狗、牛奶</li>
<li>午餐： 猪脚、鸡腿、面</li>
<li>晚餐： 公司食堂，吃的有点多</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>上推肩部，25kg，50次</li>
<li>大腿上下，75kg，50次</li>
<li>拉伸肩部，50kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311030909761.jpg" alt="b9c26fbfea7e14debc623fe8b0c6b08" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>最近加班，晚上在公司吃的时候，很容易控制不住，这个点要注意。</li>
<li>坚持去健身房，力量训练+1个小时爬坡。</li>
<li>晚上早点睡觉。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《周恩来（开国领袖画传系列）》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%91%A8%E6%81%A9%E6%9D%A5%E5%BC%80%E5%9B%BD%E9%A2%86%E8%A2%96%E7%94%BB%E4%BC%A0%E7%B3%BB%E5%88%97/</link>
      <pubDate>Tue, 31 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%91%A8%E6%81%A9%E6%9D%A5%E5%BC%80%E5%9B%BD%E9%A2%86%E8%A2%96%E7%94%BB%E4%BC%A0%E7%B3%BB%E5%88%97/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310310850668.jpg&#34; alt=&#34;23830244-1_u_1&#34;  /&gt;
&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;p&gt;为中华之崛起而读书。
愿相会于中华腾飞世界时。&lt;/p&gt;
&lt;h2 id=&#34;第一部分&#34;&gt;第一部分&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一天，老师在课堂上问学生：“读书是为了什么？”有的同学回答：“为光耀门楣。”有的同学说：“为个人前途而读书。”周恩来回答说：“为了中华之崛起。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1917年6月，周恩来从南开学校毕业后，经过一番慎重的思考，决定到日本留学。靠同学、师友的帮助，周恩来筹集到一笔最低限度的赴日路费。9月，他由天津登轮东渡。临行前，他写下了那首抒发救国抱负的著名诗篇：“大江歌罢掉头东，邃密群科济世穷。面壁十年图破壁，难酬蹈海亦英雄。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;求学又何必终日守着课本呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“第一，想要想比现在还新的思想；第二，做要做现在最新的事情；第三，学要学离现在最近的学问。思想要自由，做事要实在，学问要真切。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们中国自从去岁受欧战媾和的影响，一般稍具普通常识的人，也随着生了一种很深刻的觉悟：凡是不合于现代进化的军国主义、资产阶级、党阀、官僚、男女不平等界限、顽固思想、旧道德、旧伦常……全认他为应该铲除应该改革的。有了这种‘觉悟’，遂酝酿成这次全国的‘学潮’，冲动了全国的学生界，人人全想向‘觉悟’方面走。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来抓到五号，谐音为“伍豪”，这成了他后来常用的代号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只有把五四运动以后在全国各地产生的大小进步团体联合起来，加以改造，采取共同行动，才能改造旧的中国，挽救中国的危亡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在此期间，周恩来还先后阅读了《共产党宣言》《社会主义从空想到科学的发展》《法兰西内战》《国家与革命》等马克思主义的经典著作和法国、英国共产党的报刊，考察了欧洲社会现实，比较了各种思潮，逐渐认定了共产主义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1921年春，周恩来（左二）与他的入党介绍人张申府（右一）、刘清扬（右二）夫妇及好友赵光宸（左一）在柏林万赛湖留影。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;47c51e4801a29b71d21e7a08922b276&#34; loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311010842712.jpg&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1921年春，经过张申府、刘清扬介绍，周恩来加入了中国共产党8个发起组之一的巴黎共产主义小组，成为中国共产党创建人之一。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;旅欧中国共产主义青年团执行委员会对周恩来作出评语：为人“诚恳温和，活动能力富足，说话动听，作文敏捷，对主义有深刻的研究，故能完全无产阶级化。英文较好，法文、德文亦可以看书看报。本区成立的发启（起）人，他是其中的一个。曾任本区三届执行委员，热心耐苦，成绩卓著”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;互爱、互敬、互助、互勉、互商、互谅、互信、互识——周恩来与邓颖超的“八互”原则。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第二部分&#34;&gt;第二部分&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;1944年3月3日、4日，周恩来在延安中央党校作报告时对南昌起义失败的经验教训进行了总结，他说：“南昌起义是反对国民党的一种军事行动的尝试，中央虽指出了南昌起义五点错误，但没有指出它的主要错误。我觉得它的主要错误是没有采取就地革命的方针，起义后不应把军队拉走，即使要走，也不应走得太远。当时如果就地进行土地革命，是可以把武汉被解散的军校学生和两湖起义尚存的一部分农民集合起来的，是可以更大地发展自己的力量的。但南昌起义后不是在当地进行土地革命，而是远走汕头；不是就地慢慢发展，而是单纯的军事进攻和到海港去，希望得到苏联的军火接济。假使就地革命，不一定能保住南昌，但湘、鄂、赣三省的形势就会不同，并且能同毛泽东同志领导的秋收起义部队会合。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在长征中，毛主席先取得了稼祥、洛甫的支持。经过不断斗争，在遵义会议前夜，就排除了李德，不让李德指挥作战。这样就开好了遵义会议。中央的很多同志都站在毛主席方面。由于毛主席拨转了航向，使中国革命在惊涛骇浪中得以转危为安，转败为胜。这是中国革命历史中的伟大转折点。毛主席的正确路线在党中央取得了领导地位，真正取得了领导地位。——1972年6月10日周恩来在党中央召集的一次会议上的讲话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1934年10月，由于“左”倾冒险主义的错误领导，中央苏区红军第五次反“围剿”失败了。红军被迫开始长征。长征开始时，军事指挥权依然掌握在共产国际顾问李德和中共临时中央负责人博古手中，他们对于国民党军队的围追堵截一筹莫展，造成战略撤退中的逃跑主义，使红军的力量遭到重大损失。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;遵义会议在1935年1月15日至17日举行，会议由博古主持，并由其首先作关于第五次反“围剿”总结的报告。他强调红军失利的种种客观原因，掩盖军事指挥上的错误。周恩来作副报告。他指出第五次反“围剿”失利的主要原因是军事领导的战略战术的错误，并主动承担责任，作了自我批评，又批评了博古和李德。毛泽东在会上作了长篇发言，他对错误的军事路线进行切中要害的分析和批评，阐述中国革命战争的战略问题，指明今后的方向，得到了王稼祥、朱德、周恩来、李富春、聂荣臻等人的赞同。周恩来在发言中全力推举由毛泽东来领导红军的今后行动，对于确立毛泽东在党内的领导地位起了重要作用。会议选举毛泽东为中共中央政治局常委，朱德、周恩来为军事指挥者，周恩来是党内委托的在指挥军事上下最后决心的负责者。会后，毛泽东担任周恩来军事指挥上的帮助者。毛泽东、周恩来、王稼祥组成三人小组，负责指挥红军的行动。遵义会议确立了毛泽东在党中央和红军中的领导地位，从而挽救了党，挽救了红军，挽救了中国革命。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据今天中国战争长期性与发展不平衡的特点，对于各种区域的不同情况，要采用不同的方式，不要机械的呆板规定，要有具体性与灵活性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;30日下午，周恩来以中共中央代表团的名义作关于统一战线工作的报告。他详细叙述了六届五中全会以来抗日民族统一战线建立和发展的历史过程，接着又剖析抗战中国民党政策的矛盾性：第一，联苏实现了，但是还存在反共的思想，所以在各方面或明或暗地反对苏联影响的扩大；第二，联共政策实行了，可是同时又在国民党区域内发展限制中国共产党的政策；第三，要群众，因为抗战需要群众，军队补充需要群众，粮食的供给需要群众，同时又统制民众运动。他认为，中国共产党统一战线工作的原则应该包括：坚持抗战高于一切，一切服从抗战；坚持党的政治上的独立性，信仰共产主义；实现三民主义，从共产主义的观点来实现三民主义；认定国民党为主要合作对象，不是削弱国民党，而是推动国民党进步；坚持民众的动员；坚持国内民主；坚持国际和平阵线；坚持反对汉奸、托派；发展我们的力量，扩大和巩固统一战线，等等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们在江南敌后地区确定发展的方向，有三个原则：（1）哪个地方空虚，我们就向那个地方发展。（2）哪个地方危险，我们就到哪个地方去创造新的活动地区。（3）哪个地方只有敌人伪军，友党友军较不注意没有去活动，我们就向哪里发展。这样可以减少磨擦，利于抗战。——1939年3月周恩来在皖南云岭新四军军部干部大会上的讲话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来领导的中共南方局直接领导新四军的工作。1939年春，为传达中共六届六中全会精神，确立新四军发展的战略方针，解决新四军领导人项英与叶挺之间的矛盾，中共中央书记处委托周恩来前往皖南云岭，视察新四军。一到云岭，周恩来首先进行周密的调查研究。他不但听取新四军领导人的汇报，还找军部各部门座谈，听取各支队负责人的意见，到附近的机关、医院、抗大分校和连队驻地了解部队的学习、军事训练、生活等情况。通过这种实地的观察和调研，对新四军情况的了解，比原来只是通过电文往来所了解的，要清楚和具体得多了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来到新四军所要解决的另一个问题，是要改善中共中央东南局书记兼新四军副军长项英和新四军军长叶挺之间的关系。周恩来陪同已到重庆的叶挺回到新四军军部后，向军部领导干部传达了中共中央关于叶挺工作的意见，并多次找项英谈话，要他搞好同叶挺的关系。周恩来严肃地批评项英说：叶挺是个好同志，很有军事才能，这样的将领如不去团结，还要团结谁呢？又说：叶挺是热爱党的事业的，热爱人民解放事业的，不能认为他现在不是党员就不欢迎他。他参加党，不如留在党外对党的工作有利。在周恩来的帮助下，项英作了自我批评，表示要同叶挺搞好团结，但事实上仍没有消除对叶挺的成见，叶挺的处境也未见改善，直到皖南事变发生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国内工作很忙，不允许我长期在国外治病。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你们的行为，使亲者痛，仇者快。你们做了日寇想做而做不到的事。你何应钦是中华民族的千古罪人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;隐蔽精干、长期埋伏、积蓄力量、以待时机。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来在开幕典礼上发表演说，并于4月30日在大会上作《论统一战线》的长篇发言，首先系统地回顾了抗日民族统一战线的形成和发展过程，接着总结了第一次大革命以来统一战线的经验教训。他指出：必须对敌人、队伍、司令官这三方面认识清楚。敌人是帝国主义、封建势力，敌人营垒是会变化的。队伍包括无产阶级、农民、小资产阶级、自由资产阶级，有时甚至包括大地主大资产阶级的一部分。对队伍要作严格的区别。对此不加以区别的右的观点和强调区别而不去求得今天统一的方法的“左”的观点都是不正确的。领导权就是司令官的问题，是统一战线最集中的一个问题。我们要同一切可以争取的力量合作，但也要防止在统一战线中“左”的和右的错误。右的错误是放弃领导权，“左”的错误是把自己孤立起来，成了“无兵司令”、“空军司令”。右倾是把整个队伍送出去，“左”倾是把整个队伍推出去。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第三部分&#34;&gt;第三部分&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;毛泽东同志在我们党的七届二中全会上提出了这个问题，我们一旦取得了全国政权，就带来一个危险，就有一些人可能会被资产阶级的糖衣炮弹所腐蚀，被胜利冲昏头脑，滋长官僚主义，脱离群众，甚至会出现个人野心家，背叛群众。这方面的危险是随时存在的，每个共产党员都要警惕。这个问题怎么解决？最好的办法是有人监督。——1957年4月24日周恩来在中共浙江省委扩大会议上的讲话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1949年3月23日，毛泽东、朱德、刘少奇、周恩来和任弼时登上吉普车离开西柏坡前往北平。毛泽东对周围的人说：同志们，我们就要进北平了。我们进北平，可不是李自成进北平，他们进了北平就变了。我们共产党人进北平，是要继续革命，建设社会主义，直到实现共产主义。出发前，毛泽东只睡了四五个小时。他兴奋地对周恩来说：“今天是进京的日子，不睡觉也高兴啊。今天是进京‘赶考’嘛。进京‘赶考’去，精神不好怎么行呀？”周恩来笑着说：“我们应当都能考试及格，不要退回来。”毛泽东说：“退回去就失败了。我们决不当李自成，我们都希望考个好成绩。”3月25日，中共中央进入北平。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;庆龄先生：沪滨告别，瞬近三年，每当蒋贼肆虐之际，辄以先生安全为念。今幸解放迅速，先生从此永脱险境，诚人民之大喜，私心亦为之大慰。现全国胜利在即，新中国建设有待于先生指教者正多，敢借颖超专诚迎迓之便，谨陈渴望先生北上之情。敬希早日命驾，实为至幸。——1949年6月21日周恩来致宋庆龄信。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;今天的革命，决不能再如辛亥革命和北伐战争那样，由于中途妥协而使反动派最后又得到胜利。历史经验证明，革命如不能进行到底，则一定失败。今天我们决不能再蹈此覆辙。——1949年4月17日周恩来《关于和平谈判问题的报告》。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1月14日，毛泽东发表了《关于时局的声明》，严正指出：为了迅速结束战争，实现真正的和平，减少人民的痛苦，我们愿意在八项条件的基础上进行和平谈判。这八条是：（一）惩办战争罪犯；（二）废除伪宪法；（三）废除伪法统；（四）依据民主原则改编一切反动军队；（五）没收官僚资本；（六）改革土地制度；（七）废除卖国条约；（八）召开没有反动分子参加的政治协商会议，成立民主联合政府，接收南京国民党反动政府及其所属各级政府的一切权力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中间道路是万万走不通的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;谈判破裂后，周恩来在北京饭店召集各党派、团体和民主人士代表座谈，解释道：“抗战胜利，为了全国人民的要求，我们和国民党和谈；和谈破裂，大打起来，我们还保留着代表团不撤退；即使在大打时也没有立刻提出打倒国民党的口号。这次渡江前，江南人民觉得能不打、和平解决也好，我们又和国民党和谈，谈了近一个月，最后我们提出八条廿四款，各民主党派认为条件太宽大了，而反动派还不接受，我们就战斗过江。我们所走的路，使大家觉得有利。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挽留张治中和谈破裂后，张治中决定在24日回南京“复命”。周恩来知道后，当日就前往六国饭店看望张治中，表示了恳切的挽留。周恩来还语重心长地对张治中说：“西安事变，我们对不起一个姓张的朋友，今天再不能对不起你了。”于是，张治中、邵力子、刘斐、章士钊、李蒸及其随从人员开会讨论后，一致同意留下。4月25日，国民党派飞机到北平接代表，非但一个代表没有回去，张治中的夫人及家属九人也乘飞机来到北平。这是周恩来事先通知上海地下党组织秘密安排的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第四部分&#34;&gt;第四部分&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;周恩来回忆中国的外交史说：“中国的反对分子在外交上一贯是神经衰弱怕帝国主义的。清朝的西太后，北洋军阀的袁世凯，国民党的蒋介石，哪一个不是跪在地上办外交呢？中国一百年来的外交史是一部屈辱的外交史。我们不学他们。我们不要被动、怯懦，而要认清帝国主义的本质，要有独立精神，要争取主动，没有畏惧，要有信心。”最后，周恩来说：外交是代表国家的工作，我们大家要在具体工作中，加强团结，才能把外交工作搞好。在开辟战场之初，应当在工作中锻炼培养，要求每一个同志一切从学习出发，不要骄傲，不要急躁，不要气馁。同时，还要有纪律。外交同军事一样，外交不过是“文打”而已。我们说一句话，做一件事，都可能影响战斗，必须有严格的纪律。一切都要事先请示、商讨，批准后再做，做完后要报告，这一点很重要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2月17日晚6时，周恩来陪同毛泽东到中国驻苏联大使馆看望使馆工作人员和留学生。他对留学生说：无产阶级的革命事业，需要年轻的一代来继承，鼓励大家努力学习马列主义，学好业务知识，以便将来回国，为祖国的社会主义革命和建设服务。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;艰苦奋斗，努力学习。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;9月30日，周恩来在全国政协举行的建国1周年庆祝大会上声明：“中国人民热爱和平，但是为了保卫和平，从不也永不害怕反抗侵略战争。中国人民决不能容忍外国的侵略，也不能听任帝国主义者对自己的邻人肆行侵略而置之不理。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;朝鲜战争期间，耗费周恩来精力最多的，是组织指挥和维护战区交通运输和后勤保障。聂荣臻回忆道：“整个后勤工作，当时都是在周恩来同志的领导关怀下进行的。这方面的事情，我几乎每件都向他请示。他抓得很细。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当时很多人反对，说中国基础工业这么薄弱，去搞尖端，真是想入非非。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;总理说，长工，我们分两步走吧，第一步小点，第二步再扩大一点。一下子不要搞那么大。他说，苏联帮助我们搞航空工业是要算账的，我们的外汇不多，一下子把钱过多地用到航空工业上吃不消，其他工业就照顾不了啦。你冷静地考虑考虑，我的意见是减少三分之一。我国航空工业，是在周总理的直接关怀下搞起来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;三年准备，十年计划经济建设。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来详细介绍了中国“一五”计划的设想。主要内容为：（一）中国经济状况；（二）五年建设方针；（三）五年建设的主要指标和主要项目；（四）长期建设的准备工作；（五）请苏联援助事项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来把中国代表团工作人员按业务性质、工作关系分为若干相应的组，让他们分头同苏方各有关部门直接商洽，面对面地研究苏联援助中国的具体项目。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对香港的政策同对内地是不一样的，如果照抄，结果一定搞不好。因为香港现在还在英国统治下，是纯粹的资本主义市场，不能社会主义化，也不应该社会主义化。香港要完全按资本主义制度办事，才能存在和发展，这对我们是有利的。香港的主权总有一天我们是要收回的，连英国也可能这样想。——1957年4月28日周恩来在上海同工商界人士座谈会上的讲话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国政府通过秘密途径向港英政府提出了三项条件：一、香港不能用作反对中华人民共和国的军事基地；二、不许进行旨在破坏中华人民共和国威信的活动；三、中华人民共和国在港人员必须得到保护。只要港英政府很好地遵守这三项条件，香港就可以长期地维持现状。对此，港英政府欣然接受，并和北京方面约定，对此秘而不宣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1951年春，周恩来向当时的新华社香港分社社长黄作梅阐述了中央对香港的政策：我们对香港的政策，是东西方斗争全局的战略部署的一部分，不收回香港，维持其资本主义英国占领不变，是不能用狭隘的领土主权原则来衡量的，来作决定的。我们在全国解放以前已决定不去解放香港，从长期的全球战略讲，不是软弱，不是妥协，而是一种积极主动的进攻和斗争。我们把香港留在英国人手上比收回来好，也比落入美国人之手上好。在这种情况下，香港对我们大有好处，大有用处。我们可以最大限度地开展最广泛的爱国统一战线工作，团结一切可以团结的人，支持我们的反美斗争，支持我们的国内经济建设。香港是我们通往东南亚、亚非拉和西方世界的窗口。它将是我们的瞭望台、气象台和桥头堡。要进行社会主义建设，香港可作为我们同国外进行经济联系的基地，可以通过它吸收外资，争取外汇。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1954年3月，周恩来对准备接待英国工党访华团的北京干部嘱咐：英国客人来后，我们对“不成熟的问题，也不要去谈，例如香港问题……我们是否要收复香港，如何收复，政府还没有考虑过，我们就不要谈”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1957年4月28日，周恩来在上海同工商界人士举行了座谈会，阐述了中国共产党对香港的政策，以及如何处理同香港的关系问题。他指出：“我们不能把香港看成内地，对香港的政策与内地不是一样的。”“我们在香港的企业，应该适应那里的环境，才能使香港为我所用。”“香港可作为我们同国外进行经济联系的基地，可通过它吸收外资，争取外汇。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1960年，周恩来结合新的形势，总结过去十多年的经验，对港、澳工作提出“长期打算，充分利用”的方针，即暂时不考虑收复香港，但应充分利用香港的有利地位，为中国的社会主义建设、外交战略以及对台工作服务。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1963年，美国共产党发表声明，对中共的港澳政策提出非难，指责中国“竟然容许殖民地存在”。对此，周恩来多次代表中国政府表明态度。3月8日，《人民日报》发表经周恩来修改审定的重要文章《评美国共产党的声明》。文章指出，“香港、澳门这类问题，属于历史上遗留下来的帝国主义强加于中国的一系列不平等条约问题”，“我们一贯主张，在条件成熟的时候，经过谈判和平解决。在解决之前维持现状”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1997年7月1日，中华人民共和国恢复对香港行使主权，实现了周恩来生前的预言——“香港的主权总有一天我们是要收回的”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们相信你，你也相信我们。我们要制定一个协定，互相有什么就说出来。我们今后是要长期合作共事的，共同合作把西藏建设成为一个民主和社会主义的新西藏。——1960年1月25日周恩来接见班禅时的谈话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;倡导和平共处五项原则这些原则就是两国互相尊重领土主权，互不侵犯，互不干涉内政，平等互惠，和平共处。这些原则，不仅对我们两国适用，而且对于亚洲的其他国家以及对世界一切国家都能适用。——1954年6月27日周恩来在新德里记者招待会上的书面谈话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来说：“只要你在请柬上写一句话：请你欣赏一部彩色歌剧电影《中国的罗密欧与朱丽叶》。放映前作3分钟的说明，概括地介绍一下剧情，用词要有点诗意，带点悲剧气氛；把观众的思路引入电影，不再作其它解释。这样试试，我保你不会失败。不信，可以打赌，如果失败了，我送你一瓶茅台酒，我出钱。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;邓小平在1979年11月26日会见美国不列颠百科全书出版公司编委会副主席吉布尼和加拿大麦吉尔大学东亚研究所主任林达光时说：四个现代化建设的方针和目标是毛泽东主席和周恩来总理生前提出的，由于“四人帮”的干扰，实际上没有真正地做起来。粉碎“四人帮”之后，要花很大的精力处理“四人帮”干扰造成的许多问题。去年开始我们才真正地把重点转到四个现代化建设上来。就我们国内来说，什么是中国最大的政治？四个现代化就是中国最大的政治。我们搞四个现代化一定会有许多复杂的问题需要解决，还会不断地遇到困难。比如，我们现在机构臃肿，人浮于事。比如，我们要掌握现代科学技术，可是人才不够。比如，我们需要有一个安定团结的政治局面，我们现在基本上有了，但还存在不少的问题。比如，我们参加国际合作，在充分吸收外国的先进科学技术和资金方面，也还要摸索经验。尽管有这样那样的困难和问题，但是我相信我们现在走的路是正确的。这些障碍，这些困难，这些不足，我们相信是可以逐步解决、逐步克服的。这三两年内可能看不出突出的成绩，过几年面貌会看得更清楚。现在尽管人们还有怀疑，但是中国的领导人、中国的绝大多数人是有信心的，是相信这个事业能够成功的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1951年10月，法国著名科学家约里奥·居里委托中国放射化学家杨承宗转告毛泽东：“你们要反对原子弹，你们必须拥有原子弹”。对此，毛泽东和周恩来都深以为然。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;4月18日，亚非会议在万隆独立厅开幕。这是有史以来第一次没有西方国家参加而由亚非国家自己举行的国际会议。19日，周恩来出席亚非会议全体会议。根据会议出现的新情况，周恩来在上午会议上临时决定把原定的发言稿改作书面发言散发，在下午另作一个补充发言。在补充发言中，周恩来指出：“中国代表团是来求团结而不是来吵架的。我们共产党人从不讳言我们相信共产主义和认为社会主义制度是好的。但是，在这个会议上用不着来宣传个人的思想意识和各国的政治制度，虽然这种不同在我们中间显然是存在的。”他在发言中提出了求同存异的方针，强调“中国代表团是来求同而不是来立异的。在我们中间有无求同的基础呢？有的。那就是亚非绝大多数国家和人民自近代以来都曾经受过，并且现在仍在受着殖民主义所造成的灾难和痛苦。这是我们大家都承认的。从解除殖民主义痛苦和灾难中找共同基础，我们就容易互相了解和尊重、互相同情和支持……我们的会议应该求同而存异。同时，会议应将这些共同愿望和要求肯定下来。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“克什米尔公主号”事件1955年，台湾特务组织企图趁亚非会议暗杀周恩来，破坏亚非会议。他们获悉周恩来将乘坐印度航空公司“克什米尔公主号”飞机赴印度尼西亚后，策划了代号为“1号”的谋害计划。他们收买香港启德机场的地勤人员周驹，在打扫卫生之际，将定时炸弹安放在飞机的右翼轮舱附近。4月11日上午12时15分，飞机飞离启德机场。下午6时30分，飞机在北婆罗洲沙捞越古晋100海里处上空爆炸，中国和越南代表团工作人员以及随同前往的中外记者11人全部遇难。由于周恩来临时改变了出国路线，才幸免于难。事件发生后，国际社会一片震惊。面对险象丛生的局势，周恩来一面安排调查事件的真相，一面依然如期前往参加会议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中美大使级会谈至今虽然没有取得实质性成果，但我们毕竟就两国侨民问题进行了具体的建设性的接触，我们要回了一个钱学森。单就这件事来说，会议也是值得的，有价值的。——周恩来20世纪50年代末在一次会议上的讲话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“无论到哪里，他的威力都抵得上五个师”钱学森1934年在上海交通大学机械工程系毕业后，次年去美国研究航空工程和空气动力学。他曾先后在美国马萨诸塞州理工学院、加利福尼亚州理工学院学习和研究，获得了博士学位，并历任这两个学校的教授。1949年下半年，他担任加利福尼亚州理工学院的“古根罕喷气推进研究所”的负责人，领导研究生的研究和教学工作。当时，他已被公认为是力学界和应用数学界的权威学者之一，曾参与研制美国的第一枚导弹，并获得美国陆军上校军衔。新中国成立后，钱学森抱着赤子之心和对新中国的向往，决定回国，为新生的祖国贡献自己的智慧和力量。1950年7月，钱学森以探亲的名义向美国当局提出了回国的要求。但由于他的身份特殊，美国政府拒绝让导弹专家回到共产党执政的红色中国。有人甚至说：宁可把这个家伙枪毙了，也不能让他离开美国。因为那些对我们来说至为宝贵的情况，他知道得太多了。无论到哪里，他的威力都抵得上五个师！随后钱学森受到拘留，继而受到监视，时间长达5年之久。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周恩来以雄辩的事实说明我国知识界的面貌在过去6年来已经发生了根本的变化，指出：知识分子“中间的绝大部分已经成为国家工作人员，已经为社会主义服务，已经是工人阶级的一部分。”他还深刻分析了世界现代科学技术的特点及在社会发展中的重要地位与作用，指出：在社会主义时代比以前任何时代都更加需要充分地提高生产技术，更加需要充分地发展和利用科学知识。基于这一认识，提出“科学是关系到我们的国防、经济和文化各方面的有决定性的因素”的论断。周恩来在报告中强调：要坚决摒弃对知识分子的“左”的宗派主义倾向，消除他们学非所用和闲得发慌的浪费国家最宝贵的财产的现象，并提出了最充分动员和发挥知识分子力量的三项措施：第一，应该改善对于他们的使用和安排，使他们能够发挥他们对于国家有益的专长；第二，应该对于所使用的知识分子有充分的了解，给他们以应得的信任和支持，使他们能够积极地进行工作；第三，应该给知识分子以必要的工作条件和适当的待遇，其中包括改善生活待遇和政治待遇，确定和修改升级制度等。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310310850668.jpg" alt="23830244-1_u_1"  />
<h2 id="点评">点评</h2>
<p>为中华之崛起而读书。
愿相会于中华腾飞世界时。</p>
<h2 id="第一部分">第一部分</h2>
<ol>
<li>
<p>一天，老师在课堂上问学生：“读书是为了什么？”有的同学回答：“为光耀门楣。”有的同学说：“为个人前途而读书。”周恩来回答说：“为了中华之崛起。”</p>
</li>
<li>
<p>1917年6月，周恩来从南开学校毕业后，经过一番慎重的思考，决定到日本留学。靠同学、师友的帮助，周恩来筹集到一笔最低限度的赴日路费。9月，他由天津登轮东渡。临行前，他写下了那首抒发救国抱负的著名诗篇：“大江歌罢掉头东，邃密群科济世穷。面壁十年图破壁，难酬蹈海亦英雄。”</p>
</li>
<li>
<p>求学又何必终日守着课本呢？</p>
</li>
<li>
<p>“第一，想要想比现在还新的思想；第二，做要做现在最新的事情；第三，学要学离现在最近的学问。思想要自由，做事要实在，学问要真切。”</p>
</li>
<li>
<p>我们中国自从去岁受欧战媾和的影响，一般稍具普通常识的人，也随着生了一种很深刻的觉悟：凡是不合于现代进化的军国主义、资产阶级、党阀、官僚、男女不平等界限、顽固思想、旧道德、旧伦常……全认他为应该铲除应该改革的。有了这种‘觉悟’，遂酝酿成这次全国的‘学潮’，冲动了全国的学生界，人人全想向‘觉悟’方面走。</p>
</li>
<li>
<p>周恩来抓到五号，谐音为“伍豪”，这成了他后来常用的代号。</p>
</li>
<li>
<p>只有把五四运动以后在全国各地产生的大小进步团体联合起来，加以改造，采取共同行动，才能改造旧的中国，挽救中国的危亡。</p>
</li>
<li>
<p>在此期间，周恩来还先后阅读了《共产党宣言》《社会主义从空想到科学的发展》《法兰西内战》《国家与革命》等马克思主义的经典著作和法国、英国共产党的报刊，考察了欧洲社会现实，比较了各种思潮，逐渐认定了共产主义。</p>
</li>
<li>
<p>1921年春，周恩来（左二）与他的入党介绍人张申府（右一）、刘清扬（右二）夫妇及好友赵光宸（左一）在柏林万赛湖留影。</p>
<p><img alt="47c51e4801a29b71d21e7a08922b276" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311010842712.jpg"></p>
</li>
<li>
<p>1921年春，经过张申府、刘清扬介绍，周恩来加入了中国共产党8个发起组之一的巴黎共产主义小组，成为中国共产党创建人之一。</p>
</li>
<li>
<p>旅欧中国共产主义青年团执行委员会对周恩来作出评语：为人“诚恳温和，活动能力富足，说话动听，作文敏捷，对主义有深刻的研究，故能完全无产阶级化。英文较好，法文、德文亦可以看书看报。本区成立的发启（起）人，他是其中的一个。曾任本区三届执行委员，热心耐苦，成绩卓著”。</p>
</li>
<li>
<p>互爱、互敬、互助、互勉、互商、互谅、互信、互识——周恩来与邓颖超的“八互”原则。</p>
</li>
</ol>
<h2 id="第二部分">第二部分</h2>
<ol>
<li>
<p>1944年3月3日、4日，周恩来在延安中央党校作报告时对南昌起义失败的经验教训进行了总结，他说：“南昌起义是反对国民党的一种军事行动的尝试，中央虽指出了南昌起义五点错误，但没有指出它的主要错误。我觉得它的主要错误是没有采取就地革命的方针，起义后不应把军队拉走，即使要走，也不应走得太远。当时如果就地进行土地革命，是可以把武汉被解散的军校学生和两湖起义尚存的一部分农民集合起来的，是可以更大地发展自己的力量的。但南昌起义后不是在当地进行土地革命，而是远走汕头；不是就地慢慢发展，而是单纯的军事进攻和到海港去，希望得到苏联的军火接济。假使就地革命，不一定能保住南昌，但湘、鄂、赣三省的形势就会不同，并且能同毛泽东同志领导的秋收起义部队会合。”</p>
</li>
<li>
<p>在长征中，毛主席先取得了稼祥、洛甫的支持。经过不断斗争，在遵义会议前夜，就排除了李德，不让李德指挥作战。这样就开好了遵义会议。中央的很多同志都站在毛主席方面。由于毛主席拨转了航向，使中国革命在惊涛骇浪中得以转危为安，转败为胜。这是中国革命历史中的伟大转折点。毛主席的正确路线在党中央取得了领导地位，真正取得了领导地位。——1972年6月10日周恩来在党中央召集的一次会议上的讲话。</p>
</li>
<li>
<p>1934年10月，由于“左”倾冒险主义的错误领导，中央苏区红军第五次反“围剿”失败了。红军被迫开始长征。长征开始时，军事指挥权依然掌握在共产国际顾问李德和中共临时中央负责人博古手中，他们对于国民党军队的围追堵截一筹莫展，造成战略撤退中的逃跑主义，使红军的力量遭到重大损失。</p>
</li>
<li>
<p>遵义会议在1935年1月15日至17日举行，会议由博古主持，并由其首先作关于第五次反“围剿”总结的报告。他强调红军失利的种种客观原因，掩盖军事指挥上的错误。周恩来作副报告。他指出第五次反“围剿”失利的主要原因是军事领导的战略战术的错误，并主动承担责任，作了自我批评，又批评了博古和李德。毛泽东在会上作了长篇发言，他对错误的军事路线进行切中要害的分析和批评，阐述中国革命战争的战略问题，指明今后的方向，得到了王稼祥、朱德、周恩来、李富春、聂荣臻等人的赞同。周恩来在发言中全力推举由毛泽东来领导红军的今后行动，对于确立毛泽东在党内的领导地位起了重要作用。会议选举毛泽东为中共中央政治局常委，朱德、周恩来为军事指挥者，周恩来是党内委托的在指挥军事上下最后决心的负责者。会后，毛泽东担任周恩来军事指挥上的帮助者。毛泽东、周恩来、王稼祥组成三人小组，负责指挥红军的行动。遵义会议确立了毛泽东在党中央和红军中的领导地位，从而挽救了党，挽救了红军，挽救了中国革命。</p>
</li>
<li>
<p>根据今天中国战争长期性与发展不平衡的特点，对于各种区域的不同情况，要采用不同的方式，不要机械的呆板规定，要有具体性与灵活性。</p>
</li>
<li>
<p>30日下午，周恩来以中共中央代表团的名义作关于统一战线工作的报告。他详细叙述了六届五中全会以来抗日民族统一战线建立和发展的历史过程，接着又剖析抗战中国民党政策的矛盾性：第一，联苏实现了，但是还存在反共的思想，所以在各方面或明或暗地反对苏联影响的扩大；第二，联共政策实行了，可是同时又在国民党区域内发展限制中国共产党的政策；第三，要群众，因为抗战需要群众，军队补充需要群众，粮食的供给需要群众，同时又统制民众运动。他认为，中国共产党统一战线工作的原则应该包括：坚持抗战高于一切，一切服从抗战；坚持党的政治上的独立性，信仰共产主义；实现三民主义，从共产主义的观点来实现三民主义；认定国民党为主要合作对象，不是削弱国民党，而是推动国民党进步；坚持民众的动员；坚持国内民主；坚持国际和平阵线；坚持反对汉奸、托派；发展我们的力量，扩大和巩固统一战线，等等。</p>
</li>
<li>
<p>我们在江南敌后地区确定发展的方向，有三个原则：（1）哪个地方空虚，我们就向那个地方发展。（2）哪个地方危险，我们就到哪个地方去创造新的活动地区。（3）哪个地方只有敌人伪军，友党友军较不注意没有去活动，我们就向哪里发展。这样可以减少磨擦，利于抗战。——1939年3月周恩来在皖南云岭新四军军部干部大会上的讲话。</p>
</li>
<li>
<p>周恩来领导的中共南方局直接领导新四军的工作。1939年春，为传达中共六届六中全会精神，确立新四军发展的战略方针，解决新四军领导人项英与叶挺之间的矛盾，中共中央书记处委托周恩来前往皖南云岭，视察新四军。一到云岭，周恩来首先进行周密的调查研究。他不但听取新四军领导人的汇报，还找军部各部门座谈，听取各支队负责人的意见，到附近的机关、医院、抗大分校和连队驻地了解部队的学习、军事训练、生活等情况。通过这种实地的观察和调研，对新四军情况的了解，比原来只是通过电文往来所了解的，要清楚和具体得多了。</p>
</li>
<li>
<p>周恩来到新四军所要解决的另一个问题，是要改善中共中央东南局书记兼新四军副军长项英和新四军军长叶挺之间的关系。周恩来陪同已到重庆的叶挺回到新四军军部后，向军部领导干部传达了中共中央关于叶挺工作的意见，并多次找项英谈话，要他搞好同叶挺的关系。周恩来严肃地批评项英说：叶挺是个好同志，很有军事才能，这样的将领如不去团结，还要团结谁呢？又说：叶挺是热爱党的事业的，热爱人民解放事业的，不能认为他现在不是党员就不欢迎他。他参加党，不如留在党外对党的工作有利。在周恩来的帮助下，项英作了自我批评，表示要同叶挺搞好团结，但事实上仍没有消除对叶挺的成见，叶挺的处境也未见改善，直到皖南事变发生。</p>
</li>
<li>
<p>国内工作很忙，不允许我长期在国外治病。</p>
</li>
<li>
<p>你们的行为，使亲者痛，仇者快。你们做了日寇想做而做不到的事。你何应钦是中华民族的千古罪人。</p>
</li>
<li>
<p>隐蔽精干、长期埋伏、积蓄力量、以待时机。</p>
</li>
<li>
<p>周恩来在开幕典礼上发表演说，并于4月30日在大会上作《论统一战线》的长篇发言，首先系统地回顾了抗日民族统一战线的形成和发展过程，接着总结了第一次大革命以来统一战线的经验教训。他指出：必须对敌人、队伍、司令官这三方面认识清楚。敌人是帝国主义、封建势力，敌人营垒是会变化的。队伍包括无产阶级、农民、小资产阶级、自由资产阶级，有时甚至包括大地主大资产阶级的一部分。对队伍要作严格的区别。对此不加以区别的右的观点和强调区别而不去求得今天统一的方法的“左”的观点都是不正确的。领导权就是司令官的问题，是统一战线最集中的一个问题。我们要同一切可以争取的力量合作，但也要防止在统一战线中“左”的和右的错误。右的错误是放弃领导权，“左”的错误是把自己孤立起来，成了“无兵司令”、“空军司令”。右倾是把整个队伍送出去，“左”倾是把整个队伍推出去。</p>
</li>
</ol>
<h2 id="第三部分">第三部分</h2>
<ol>
<li>
<p>毛泽东同志在我们党的七届二中全会上提出了这个问题，我们一旦取得了全国政权，就带来一个危险，就有一些人可能会被资产阶级的糖衣炮弹所腐蚀，被胜利冲昏头脑，滋长官僚主义，脱离群众，甚至会出现个人野心家，背叛群众。这方面的危险是随时存在的，每个共产党员都要警惕。这个问题怎么解决？最好的办法是有人监督。——1957年4月24日周恩来在中共浙江省委扩大会议上的讲话。</p>
</li>
<li>
<p>1949年3月23日，毛泽东、朱德、刘少奇、周恩来和任弼时登上吉普车离开西柏坡前往北平。毛泽东对周围的人说：同志们，我们就要进北平了。我们进北平，可不是李自成进北平，他们进了北平就变了。我们共产党人进北平，是要继续革命，建设社会主义，直到实现共产主义。出发前，毛泽东只睡了四五个小时。他兴奋地对周恩来说：“今天是进京的日子，不睡觉也高兴啊。今天是进京‘赶考’嘛。进京‘赶考’去，精神不好怎么行呀？”周恩来笑着说：“我们应当都能考试及格，不要退回来。”毛泽东说：“退回去就失败了。我们决不当李自成，我们都希望考个好成绩。”3月25日，中共中央进入北平。</p>
</li>
<li>
<p>庆龄先生：沪滨告别，瞬近三年，每当蒋贼肆虐之际，辄以先生安全为念。今幸解放迅速，先生从此永脱险境，诚人民之大喜，私心亦为之大慰。现全国胜利在即，新中国建设有待于先生指教者正多，敢借颖超专诚迎迓之便，谨陈渴望先生北上之情。敬希早日命驾，实为至幸。——1949年6月21日周恩来致宋庆龄信。</p>
</li>
<li>
<p>今天的革命，决不能再如辛亥革命和北伐战争那样，由于中途妥协而使反动派最后又得到胜利。历史经验证明，革命如不能进行到底，则一定失败。今天我们决不能再蹈此覆辙。——1949年4月17日周恩来《关于和平谈判问题的报告》。</p>
</li>
<li>
<p>1月14日，毛泽东发表了《关于时局的声明》，严正指出：为了迅速结束战争，实现真正的和平，减少人民的痛苦，我们愿意在八项条件的基础上进行和平谈判。这八条是：（一）惩办战争罪犯；（二）废除伪宪法；（三）废除伪法统；（四）依据民主原则改编一切反动军队；（五）没收官僚资本；（六）改革土地制度；（七）废除卖国条约；（八）召开没有反动分子参加的政治协商会议，成立民主联合政府，接收南京国民党反动政府及其所属各级政府的一切权力。</p>
</li>
<li>
<p>中间道路是万万走不通的。</p>
</li>
<li>
<p>谈判破裂后，周恩来在北京饭店召集各党派、团体和民主人士代表座谈，解释道：“抗战胜利，为了全国人民的要求，我们和国民党和谈；和谈破裂，大打起来，我们还保留着代表团不撤退；即使在大打时也没有立刻提出打倒国民党的口号。这次渡江前，江南人民觉得能不打、和平解决也好，我们又和国民党和谈，谈了近一个月，最后我们提出八条廿四款，各民主党派认为条件太宽大了，而反动派还不接受，我们就战斗过江。我们所走的路，使大家觉得有利。”</p>
</li>
<li>
<p>挽留张治中和谈破裂后，张治中决定在24日回南京“复命”。周恩来知道后，当日就前往六国饭店看望张治中，表示了恳切的挽留。周恩来还语重心长地对张治中说：“西安事变，我们对不起一个姓张的朋友，今天再不能对不起你了。”于是，张治中、邵力子、刘斐、章士钊、李蒸及其随从人员开会讨论后，一致同意留下。4月25日，国民党派飞机到北平接代表，非但一个代表没有回去，张治中的夫人及家属九人也乘飞机来到北平。这是周恩来事先通知上海地下党组织秘密安排的。</p>
</li>
</ol>
<h2 id="第四部分">第四部分</h2>
<ol>
<li>
<p>周恩来回忆中国的外交史说：“中国的反对分子在外交上一贯是神经衰弱怕帝国主义的。清朝的西太后，北洋军阀的袁世凯，国民党的蒋介石，哪一个不是跪在地上办外交呢？中国一百年来的外交史是一部屈辱的外交史。我们不学他们。我们不要被动、怯懦，而要认清帝国主义的本质，要有独立精神，要争取主动，没有畏惧，要有信心。”最后，周恩来说：外交是代表国家的工作，我们大家要在具体工作中，加强团结，才能把外交工作搞好。在开辟战场之初，应当在工作中锻炼培养，要求每一个同志一切从学习出发，不要骄傲，不要急躁，不要气馁。同时，还要有纪律。外交同军事一样，外交不过是“文打”而已。我们说一句话，做一件事，都可能影响战斗，必须有严格的纪律。一切都要事先请示、商讨，批准后再做，做完后要报告，这一点很重要。</p>
</li>
<li>
<p>2月17日晚6时，周恩来陪同毛泽东到中国驻苏联大使馆看望使馆工作人员和留学生。他对留学生说：无产阶级的革命事业，需要年轻的一代来继承，鼓励大家努力学习马列主义，学好业务知识，以便将来回国，为祖国的社会主义革命和建设服务。</p>
</li>
<li>
<p>艰苦奋斗，努力学习。</p>
</li>
<li>
<p>9月30日，周恩来在全国政协举行的建国1周年庆祝大会上声明：“中国人民热爱和平，但是为了保卫和平，从不也永不害怕反抗侵略战争。中国人民决不能容忍外国的侵略，也不能听任帝国主义者对自己的邻人肆行侵略而置之不理。”</p>
</li>
<li>
<p>朝鲜战争期间，耗费周恩来精力最多的，是组织指挥和维护战区交通运输和后勤保障。聂荣臻回忆道：“整个后勤工作，当时都是在周恩来同志的领导关怀下进行的。这方面的事情，我几乎每件都向他请示。他抓得很细。”</p>
</li>
<li>
<p>当时很多人反对，说中国基础工业这么薄弱，去搞尖端，真是想入非非。</p>
</li>
<li>
<p>总理说，长工，我们分两步走吧，第一步小点，第二步再扩大一点。一下子不要搞那么大。他说，苏联帮助我们搞航空工业是要算账的，我们的外汇不多，一下子把钱过多地用到航空工业上吃不消，其他工业就照顾不了啦。你冷静地考虑考虑，我的意见是减少三分之一。我国航空工业，是在周总理的直接关怀下搞起来的。</p>
</li>
<li>
<p>三年准备，十年计划经济建设。</p>
</li>
<li>
<p>周恩来详细介绍了中国“一五”计划的设想。主要内容为：（一）中国经济状况；（二）五年建设方针；（三）五年建设的主要指标和主要项目；（四）长期建设的准备工作；（五）请苏联援助事项。</p>
</li>
<li>
<p>周恩来把中国代表团工作人员按业务性质、工作关系分为若干相应的组，让他们分头同苏方各有关部门直接商洽，面对面地研究苏联援助中国的具体项目。</p>
</li>
<li>
<p>对香港的政策同对内地是不一样的，如果照抄，结果一定搞不好。因为香港现在还在英国统治下，是纯粹的资本主义市场，不能社会主义化，也不应该社会主义化。香港要完全按资本主义制度办事，才能存在和发展，这对我们是有利的。香港的主权总有一天我们是要收回的，连英国也可能这样想。——1957年4月28日周恩来在上海同工商界人士座谈会上的讲话。</p>
</li>
<li>
<p>中国政府通过秘密途径向港英政府提出了三项条件：一、香港不能用作反对中华人民共和国的军事基地；二、不许进行旨在破坏中华人民共和国威信的活动；三、中华人民共和国在港人员必须得到保护。只要港英政府很好地遵守这三项条件，香港就可以长期地维持现状。对此，港英政府欣然接受，并和北京方面约定，对此秘而不宣。</p>
</li>
<li>
<p>1951年春，周恩来向当时的新华社香港分社社长黄作梅阐述了中央对香港的政策：我们对香港的政策，是东西方斗争全局的战略部署的一部分，不收回香港，维持其资本主义英国占领不变，是不能用狭隘的领土主权原则来衡量的，来作决定的。我们在全国解放以前已决定不去解放香港，从长期的全球战略讲，不是软弱，不是妥协，而是一种积极主动的进攻和斗争。我们把香港留在英国人手上比收回来好，也比落入美国人之手上好。在这种情况下，香港对我们大有好处，大有用处。我们可以最大限度地开展最广泛的爱国统一战线工作，团结一切可以团结的人，支持我们的反美斗争，支持我们的国内经济建设。香港是我们通往东南亚、亚非拉和西方世界的窗口。它将是我们的瞭望台、气象台和桥头堡。要进行社会主义建设，香港可作为我们同国外进行经济联系的基地，可以通过它吸收外资，争取外汇。</p>
</li>
<li>
<p>1954年3月，周恩来对准备接待英国工党访华团的北京干部嘱咐：英国客人来后，我们对“不成熟的问题，也不要去谈，例如香港问题……我们是否要收复香港，如何收复，政府还没有考虑过，我们就不要谈”。</p>
</li>
<li>
<p>1957年4月28日，周恩来在上海同工商界人士举行了座谈会，阐述了中国共产党对香港的政策，以及如何处理同香港的关系问题。他指出：“我们不能把香港看成内地，对香港的政策与内地不是一样的。”“我们在香港的企业，应该适应那里的环境，才能使香港为我所用。”“香港可作为我们同国外进行经济联系的基地，可通过它吸收外资，争取外汇。”</p>
</li>
<li>
<p>1960年，周恩来结合新的形势，总结过去十多年的经验，对港、澳工作提出“长期打算，充分利用”的方针，即暂时不考虑收复香港，但应充分利用香港的有利地位，为中国的社会主义建设、外交战略以及对台工作服务。</p>
</li>
<li>
<p>1963年，美国共产党发表声明，对中共的港澳政策提出非难，指责中国“竟然容许殖民地存在”。对此，周恩来多次代表中国政府表明态度。3月8日，《人民日报》发表经周恩来修改审定的重要文章《评美国共产党的声明》。文章指出，“香港、澳门这类问题，属于历史上遗留下来的帝国主义强加于中国的一系列不平等条约问题”，“我们一贯主张，在条件成熟的时候，经过谈判和平解决。在解决之前维持现状”。</p>
</li>
<li>
<p>1997年7月1日，中华人民共和国恢复对香港行使主权，实现了周恩来生前的预言——“香港的主权总有一天我们是要收回的”。</p>
</li>
<li>
<p>我们相信你，你也相信我们。我们要制定一个协定，互相有什么就说出来。我们今后是要长期合作共事的，共同合作把西藏建设成为一个民主和社会主义的新西藏。——1960年1月25日周恩来接见班禅时的谈话。</p>
</li>
<li>
<p>倡导和平共处五项原则这些原则就是两国互相尊重领土主权，互不侵犯，互不干涉内政，平等互惠，和平共处。这些原则，不仅对我们两国适用，而且对于亚洲的其他国家以及对世界一切国家都能适用。——1954年6月27日周恩来在新德里记者招待会上的书面谈话。</p>
</li>
<li>
<p>周恩来说：“只要你在请柬上写一句话：请你欣赏一部彩色歌剧电影《中国的罗密欧与朱丽叶》。放映前作3分钟的说明，概括地介绍一下剧情，用词要有点诗意，带点悲剧气氛；把观众的思路引入电影，不再作其它解释。这样试试，我保你不会失败。不信，可以打赌，如果失败了，我送你一瓶茅台酒，我出钱。”</p>
</li>
<li>
<p>邓小平在1979年11月26日会见美国不列颠百科全书出版公司编委会副主席吉布尼和加拿大麦吉尔大学东亚研究所主任林达光时说：四个现代化建设的方针和目标是毛泽东主席和周恩来总理生前提出的，由于“四人帮”的干扰，实际上没有真正地做起来。粉碎“四人帮”之后，要花很大的精力处理“四人帮”干扰造成的许多问题。去年开始我们才真正地把重点转到四个现代化建设上来。就我们国内来说，什么是中国最大的政治？四个现代化就是中国最大的政治。我们搞四个现代化一定会有许多复杂的问题需要解决，还会不断地遇到困难。比如，我们现在机构臃肿，人浮于事。比如，我们要掌握现代科学技术，可是人才不够。比如，我们需要有一个安定团结的政治局面，我们现在基本上有了，但还存在不少的问题。比如，我们参加国际合作，在充分吸收外国的先进科学技术和资金方面，也还要摸索经验。尽管有这样那样的困难和问题，但是我相信我们现在走的路是正确的。这些障碍，这些困难，这些不足，我们相信是可以逐步解决、逐步克服的。这三两年内可能看不出突出的成绩，过几年面貌会看得更清楚。现在尽管人们还有怀疑，但是中国的领导人、中国的绝大多数人是有信心的，是相信这个事业能够成功的。</p>
</li>
<li>
<p>1951年10月，法国著名科学家约里奥·居里委托中国放射化学家杨承宗转告毛泽东：“你们要反对原子弹，你们必须拥有原子弹”。对此，毛泽东和周恩来都深以为然。</p>
</li>
<li>
<p>4月18日，亚非会议在万隆独立厅开幕。这是有史以来第一次没有西方国家参加而由亚非国家自己举行的国际会议。19日，周恩来出席亚非会议全体会议。根据会议出现的新情况，周恩来在上午会议上临时决定把原定的发言稿改作书面发言散发，在下午另作一个补充发言。在补充发言中，周恩来指出：“中国代表团是来求团结而不是来吵架的。我们共产党人从不讳言我们相信共产主义和认为社会主义制度是好的。但是，在这个会议上用不着来宣传个人的思想意识和各国的政治制度，虽然这种不同在我们中间显然是存在的。”他在发言中提出了求同存异的方针，强调“中国代表团是来求同而不是来立异的。在我们中间有无求同的基础呢？有的。那就是亚非绝大多数国家和人民自近代以来都曾经受过，并且现在仍在受着殖民主义所造成的灾难和痛苦。这是我们大家都承认的。从解除殖民主义痛苦和灾难中找共同基础，我们就容易互相了解和尊重、互相同情和支持……我们的会议应该求同而存异。同时，会议应将这些共同愿望和要求肯定下来。”</p>
</li>
<li>
<p>“克什米尔公主号”事件1955年，台湾特务组织企图趁亚非会议暗杀周恩来，破坏亚非会议。他们获悉周恩来将乘坐印度航空公司“克什米尔公主号”飞机赴印度尼西亚后，策划了代号为“1号”的谋害计划。他们收买香港启德机场的地勤人员周驹，在打扫卫生之际，将定时炸弹安放在飞机的右翼轮舱附近。4月11日上午12时15分，飞机飞离启德机场。下午6时30分，飞机在北婆罗洲沙捞越古晋100海里处上空爆炸，中国和越南代表团工作人员以及随同前往的中外记者11人全部遇难。由于周恩来临时改变了出国路线，才幸免于难。事件发生后，国际社会一片震惊。面对险象丛生的局势，周恩来一面安排调查事件的真相，一面依然如期前往参加会议。</p>
</li>
<li>
<p>中美大使级会谈至今虽然没有取得实质性成果，但我们毕竟就两国侨民问题进行了具体的建设性的接触，我们要回了一个钱学森。单就这件事来说，会议也是值得的，有价值的。——周恩来20世纪50年代末在一次会议上的讲话。</p>
</li>
<li>
<p>“无论到哪里，他的威力都抵得上五个师”钱学森1934年在上海交通大学机械工程系毕业后，次年去美国研究航空工程和空气动力学。他曾先后在美国马萨诸塞州理工学院、加利福尼亚州理工学院学习和研究，获得了博士学位，并历任这两个学校的教授。1949年下半年，他担任加利福尼亚州理工学院的“古根罕喷气推进研究所”的负责人，领导研究生的研究和教学工作。当时，他已被公认为是力学界和应用数学界的权威学者之一，曾参与研制美国的第一枚导弹，并获得美国陆军上校军衔。新中国成立后，钱学森抱着赤子之心和对新中国的向往，决定回国，为新生的祖国贡献自己的智慧和力量。1950年7月，钱学森以探亲的名义向美国当局提出了回国的要求。但由于他的身份特殊，美国政府拒绝让导弹专家回到共产党执政的红色中国。有人甚至说：宁可把这个家伙枪毙了，也不能让他离开美国。因为那些对我们来说至为宝贵的情况，他知道得太多了。无论到哪里，他的威力都抵得上五个师！随后钱学森受到拘留，继而受到监视，时间长达5年之久。</p>
</li>
<li>
<p>周恩来以雄辩的事实说明我国知识界的面貌在过去6年来已经发生了根本的变化，指出：知识分子“中间的绝大部分已经成为国家工作人员，已经为社会主义服务，已经是工人阶级的一部分。”他还深刻分析了世界现代科学技术的特点及在社会发展中的重要地位与作用，指出：在社会主义时代比以前任何时代都更加需要充分地提高生产技术，更加需要充分地发展和利用科学知识。基于这一认识，提出“科学是关系到我们的国防、经济和文化各方面的有决定性的因素”的论断。周恩来在报告中强调：要坚决摒弃对知识分子的“左”的宗派主义倾向，消除他们学非所用和闲得发慌的浪费国家最宝贵的财产的现象，并提出了最充分动员和发挥知识分子力量的三项措施：第一，应该改善对于他们的使用和安排，使他们能够发挥他们对于国家有益的专长；第二，应该对于所使用的知识分子有充分的了解，给他们以应得的信任和支持，使他们能够积极地进行工作；第三，应该给知识分子以必要的工作条件和适当的待遇，其中包括改善生活待遇和政治待遇，确定和修改升级制度等。</p>
</li>
<li>
<p>去年12月以后冒进就冒了头，因此，现在的情况和去年不同了，已经不是预防而是需要反对冒进了！如果冒进继续下去，又会脱离实际，脱离群众，脱离今天的需要和可能。不能向群众泼冷水，但也不能把少数积极分子的要求当成群众的要求。——1956年6月12日周恩来在国务院第三十次全体会议上的讲话。</p>
</li>
<li>
<p>1956年1月20日，周恩来在党中央召开的知识分子问题会议上呼吁：不要搞那些不切实际的事情，要使我们的计划成为切实可行的、实事求是的计划，而不是盲目冒进的计划。1月30日，在政协二届二次会议上，周恩来提出：我们应该努力去做那些客观上经过努力可以做到的事情，不这样做，就要犯右倾保守的错误；我们也应该注意避免超越现实条件所许可的范围，不勉强去做那些客观上做不到的事情，否则就要犯盲目冒进的错误。</p>
</li>
<li>
<p>2月6日，周恩来和李富春、李先念等开会研究解决在计划会议和财政会议上压缩指标的问题。他指出：各部门搞计划要实事求是，不能超过客观可能，没有根据地乱提计划。各部门专业会议订的计划都很大，计委、财政部要压一压。</p>
</li>
<li>
<p>2月8日，周恩来在国务院全体会议上提出一个重要的原则：经济工作要实事求是。他指出：超过现实可能和没有根据的事，不要乱提，不要乱加快，否则就很危险。各部门订计划，不管是12年远景计划，还是今明两年的年度计划，都要实事求是。</p>
</li>
<li>
<p>“我作为总理从良心上不能同意这个决定”胡乔木回忆：1956年各条战线、各省市根据毛主席1955年冬在《中国农村的社会主义高潮》序言的精神，加快速度，扩大了预定计划的规模，增加了预算指标。4月下旬，毛主席在颐年堂政治局会议上提出追加1956年的基建预算20个亿，受到与会同志的反对……会上，尤以周恩来同志发言最多，认为追加基建预算将造成物资供应紧张，增加城市人口，更会带来一系列困难等等。毛主席最后仍坚持自己的意见，就宣布散会。会后周恩来同志又亲自去找毛主席，说我作为总理从良心上不能同意这个决定。这句话使毛主席非常生气，不久，毛主席就离开了北京。</p>
</li>
</ol>
<h2 id="第五部分">第五部分</h2>
<ol>
<li>和平统一祖国的进程十分艰难。但周恩来从来没有灰心过。他曾表示：我们希望在我们这辈子看到中国的完全统一，不过，我们并不想包办革命的事业，可以留给后一辈去完成的。只要他们一天能守住台湾，不使它从中国分裂出去，那么，我们就不改变目前对他们的关系，希望他们不要过这条界。对解决台湾问题，周恩来常常说：“急是无用的”，“我们这辈子如看不到解放台湾，下一代或再下一代总会看到的。我们只要播好种，把路开对了就行”。</li>
<li>在1960年12月12日至14日的国务院常务会议上，周恩来进一步解释了八字方针的含义：“‘调整’的目的，是为了更好地扩大再生产；‘巩固’，是为了再前进；‘充实’，是为了搞好配套，使生产能力得到充分发挥；‘提高’就更容易懂了。”但是，周恩来又指出：执行这八字方针的任务是很紧张的，绝不是轻松的，问题是我们要主动的有秩序的有计划的紧张。</li>
<li>1960年10月，在调运粮食最紧张的时候，青海省在要求中央调进粮食时送来5万斤鱼。周恩来十分生气，严厉批评说：“青海送中央5万斤鱼，简直胡闹。为什么要中央调粮又送鱼？”他当场指示“起草通知，全国从今以后，不许送中央一针一线一条鱼，要做全面通报，严格禁止。本来禁了多年，自大跃进以来又起来了。这是走后门，不拿一个省开刀不行。”会后，周恩来指定有关人员起草了《中共中央关于不准请客送礼和停止新建招待所的通知》。周恩来对此身体力行，以身作则。1961年初，淮安县委给周恩来和邓颖超送来一些家乡的土产。周恩来要秘书回信表示感谢，同时转告说：“在中央三令五申不准送礼的情况下，你们这样做是不好的。现在周总理和邓大姐从他们的薪金中拿出100元寄给你们，作为偿付藕粉、莲子、馓子、工艺品的价款，其他的一些针织品等以后有便人再带给你们。”周恩来的秘书还把中央的有关通知寄去，请他们“仔细研究，并望严格执行”。</li>
<li>我们下去调查，必须对事物进行分析、综合和比较。要敢于正视困难，解决困难。要坚守毛泽东同志的三条原则：从群众中来，到群众中去；集中起来，坚持下去；坚持真理，修正错误。目前的毛病，还是我们发号施令太多，走群众路线太少。——1961年3月19日周恩来在中央工作会议中南、华北小组会上的讲话。</li>
<li>在伯延公社的一次座谈会上，面对共和国总理，一个叫张二廷的社员直言不讳：“这两年生活一年不如一年。”“如果再这样下去两年，连你也会没有吃的。”“因为我们当然首先要顾自己，你们征购不到，还不是没有吃的？”周恩来后来说：“这句话对我教育很大，我很受感动。当时在场的地委干部听了以后，说这个人是个落后分子。我跟他们解释：这样看不对，这个社员说的是真理，一个农民把我们看作他自己的人才会说这样的话，这是一针见血的话。”座谈后，张二廷向到家里做客的周恩来如实反映了伯延公社遭灾情况和公共食堂等方面存在的问题，并希望周恩来以后还能来伯延。周恩来表示，有机会一定来，如果自己来不了，也一定会派人来。在“文化大革命”前，周恩来每年都派人到伯延调查，并代他看望这位农民朋友。</li>
<li>他提醒在座的文艺工作领导干部说：“我们懂得少，发言权很少，不要过多干涉。在座的同志都是做领导的人，希望你们干涉少些。”</li>
<li>关于文艺为谁服务的问题，周恩来认为政治标准应遵循文艺为工农兵、为劳动人民服务的原则，但又强调：“政治标准不等于一切，还有艺术标准，还有个如何服务的问题”，“文艺的形式是多种多样的，不能框起来。”他还强调说：“艺术是要人民批准的。只要人民爱好，就有价值；不是反党、反社会主义的，就许可存在，没有权力去禁演。艺术家要面对人民，而不是只面对领导。”</li>
<li>周恩来的讲话，处处体现了他所要求的民主作风和协商精神。他说：“我首先声明，今天我的讲话允许大家思考、讨论、批判、否定、肯定。”“我今天所说的这些话不一定对，我是树个‘的’，让大家来射，树个活靶子，让大家来攻。”</li>
<li>提倡“说真话，鼓真劲，做实事，收实效”。</li>
<li>我们检讨的原则是：肯定成绩，前途光明；坚持真理，修正错误。检讨的方针是：从团结的愿望出发，通过出气和上下通气，达到新的团结，方法是批评与自我批评。检讨的目的，是为了增强团结。这里，最重要的是毛泽东同志讲的实事求是，也就是说真话，鼓真劲，做实事，收实效。——1962年2月3日周恩来在中央工作会议上的讲话。</li>
<li>在全面调整国民经济的关键时刻，1962年1月11日至2月7日，中共中央在北京召开扩大的中央工作会议，又称“七千人大会”。会议分析了形势，总结了经验教训，对过去的缺点错误揭盖子、找原因，并根据毛泽东的建议，展开批评与自我批评，开了一次大范围的“出气”会。其间，周恩来发表了两次重要讲话。在会议初期，周恩来参加了福建组的讨论，连续3天听取会议的发言，并在2月3日的小组会上发表讲话。他认为最重要的是“实事求是，也就是说真话，鼓真劲，做实事，收实效。”针对几年来浮夸、虚报等党风不纯现象，周恩来提出：“我们要提倡说真话”，“大家都说假话，看领导的脸色说话，那不就同旧社会的官场习气一样了吗？你们反映的情况我听起来觉得很痛心。你们说假话当然不对，但更重要的是我们压你们。从现在起，不要乱压任务、乱戴帽子了。要提倡讲真话，即使是讲过了火的也要听。”周恩来分析说：“说真话，鼓真劲，做实事，收实效。这四句话归纳起来就是：实事求是。”“如何做到实事求是？首先要通过认真的调查研究。要调查研究得好确实是不容易的，因为现在已经有四年的浮夸风气，不易一下子改变过来。”“要了解真实情况，就要与老百姓平等相待。在战争年代，我们与老百姓住在一起，天天见面，不分彼此，和群众的关系很密切。现在就不一样了。”“因为有了那么一些形式，就显得不那么亲切，不是平起平坐，而是隔了一层。”“为什么还会产生这个隔阂呢？我想就是因为国家大了，‘官’大了，和根据地的情况不一样了。所以你们鼓掌，我心里就不安。现在造成的这种形势，一定要改变，下决心改变。要搞好调查研究，就要真正联系群众。”周恩来还将这个问题提升到党内民主的高度上来认识，指出：“我们要发扬民主，恢复和加强党内正常的民主生活。”“这几年有的同志把它搁到一边去了。当然有些事情是中央带的头。比如开电话会议，是中央先开的，以后一层一层压下去，电话会议又无法讨论，只能层层下压，这是不对的。”他强调说：“我们党内正常的民主生活要尽快恢复起来，毛泽东同志的建党思想要恢复起来，现在被搁在一边的党的优良传统和作风通通都要恢复起来。”周恩来切中时弊的深刻剖析，引起与会者的极大反响和共鸣。</li>
<li>在2月7日的闭幕会上，周恩来再次发表讲话指出：国民经济各条战线的调整工作正在进行并有初步成效，但最为重要的是对过去工作中的缺点错误揭开了盖子，破除了迷信，统一了认识，总结了经验。他还对几年来工作中的缺点和错误主动承担了责任，“国务院及其所属的各综合性委员会、各综合口和各部，要负很大的责任”。“不切实际地规定跃进的进度，就使人们只注意多快，不注意好省；只注意数量，不注意品种、质量；只要高速度，不重视按比例；只顾主观需要，不顾客观可能；只顾当前要求，没有长远打算；不从整个历史时期来计算大跃进的速度，而要求年年有同样的高速度。”“结果，欲速则不达。”周恩来发自内心的自我批评，既减轻了中央各部门和地方的压力，也做了表率。他的这种实事求是、光明磊落的态度和胸怀，对党和人民的利益高度负责的高尚品格和思想作风，给了各级领导干部极为深刻的教育。</li>
<li>20世纪50年代末60年代初，中国面临十分复杂的国际国内局势：帝国主义推行核讹诈政策；中苏关系破裂，苏联单方面中止对华援助；中国国民经济处于困境。受其影响，中国原子能事业的发展也面临前所未有的困难。有些外国人断言：中国的核工业已遭到“毁灭性打击”，“20年也搞不出原子弹来”。</li>
</ol>
<h2 id="第六部分">第六部分</h2>
<ol>
<li>
<p>记得有一次周总理对我们说：“你们可得帮我把住经济工作这个关啊！经济基础不乱，局面还能维持。经济基础一乱，局面就没法收拾了。所以，经济工作一定要紧紧抓住，生产决不能停。生产停了，国家怎么办？不种田了，没有粮食吃，人民怎么能活下去？还能闹什么革命？”</p>
</li>
<li>
<p>我在电话里问候周总理的时候，他还说：“我就是睡觉太少了！”谁知这次通话以后，我就再也没有能直接听到他那洪亮的声音了！</p>
</li>
<li>
<p>1月19日、20日，在京西宾馆召开的军委碰头会上，叶剑英、聂荣臻、徐向前等军委领导同志就军队要不要搞“四大”（即“大鸣、大放、大字报、大辩论”。——编者注）的问题，同江青、陈伯达、叶群等人展开了激烈的斗争。叶剑英拍案痛斥江青等人：谁想搞乱军队，决不会有好下场！盛怒之下，叶剑英将右手掌骨震裂。徐向前也站起来说，我们搞了一辈子军队，人民的军队，难道就叫他们几个毁了吗？几位老帅“大闹京西宾馆”，为后来老同志们开展更大的斗争揭开了序幕。</p>
</li>
<li>
<p>2月11日、16日，斗争达到高潮，时称“大闹怀仁堂”。老同志们主要围绕3个重大原则问题同中央文革成员据理力争：（一）要不要党的领导。叶剑英质问张春桥、陈伯达：“上海‘夺权’，改名为‘上海公社’，这样大问题，涉及国家的体制，不经过政治局讨论，就擅自改变名称，这是想干什么？”“革命，能没有党的领导吗？”谭震林痛斥张春桥：“不要党的领导，一天到晚老是群众‘自己解放自己’，这是什么？这是形而上学！”（二）应不应该把老干部打倒。叶剑英说：“老干部是党和国家的宝贵财富，对犯有错误的干部，我们党向来是‘惩前毖后，治病救人’，哪有随便打倒的道理？”李先念说：“老干部都打倒了，革命靠什么？”“现在是全国范围内的大‘逼供信’！”谭震林则指着张春桥道：“你们的目的，就是要整掉老干部，把老干部一个一个打光”，“就是要把老干部统统打倒”。“这一次，是党的历史上斗争最残酷的一次，超过历史上任何一次！”陈毅、徐向前也揭露康生、江青一伙打着毛主席旗号诬陷干部的手法。（三）要不要稳定军队。叶剑英、徐向前等老帅多次责问陈伯达、康生、张春桥等：“你们把党搞乱了，把政府搞乱了，把工厂、农村搞乱了，你们还嫌不够，还一定要把军队搞乱！这样搞，你们想干什么？”“军队是无产阶级专政的支柱，这样把军队乱下去，还要不要支柱？”“革命，能不要军队吗？”为坚持真理，制止“文化大革命”的错误作法，老同志们大义凛然，坚定地表示：“砍脑袋，坐监牢，开除党籍，也要斗争到底！”</p>
</li>
<li>
<p>你们带头搞这样一个示威游行，还声称要把陈毅同志抓走，我不能答应你们，也没法担这个风险，我们要防止对党、对国家不利的一切行动！</p>
</li>
<li>
<p>4月14日，周恩来在北京接见应邀来华访问的美国乒乓球队全体队员。在谈话中，周恩来提出：你们这次应邀来访，打开了中美两国人民友好往来的大门，我们相信今后两国人民的友好往来将会得到两国大多数人的赞成和支持。周恩来还请美国乒乓球队回国后转达他对美国人民的问候。</p>
</li>
<li>
<p>基辛格评价“乒乓外交”这整个事情是周恩来的代表作。跟中国人的所有举动一样，它有着多层意义。描写得光彩夺目的表面是最不重要的部分。对这些美国青年的邀请最明显的意义是：它象征着中国已承担了和美国改善关系的义务；而更深一层的意义是，它保证——比通过任何渠道发出的外交信息都更有分量——现在肯定将被邀请的使节将来踏上的是友好国家的国土。这是向白宫发出的一个信号。</p>
</li>
<li>
<p>不能讲毛主席从“文化大革命”初期就已看出林彪反党，只是当时为了打倒刘少奇而没有提林彪的问题，这不是我们党看问题的方法和主席的作风。我们要历史地、辩证地、发展地看问题。因为一个人的思想是发展的，不能说林彪早先的思想和他以后的思想是一样的，会有变化的。同样，我们对林彪的认识也有一个发展的过程。怎么会一下子就识破他呢？九大时还不可能识破他，否则，怎么会让他当副主席？林彪的欺骗性也就在这里。因此，对林彪要作具体分析，他也有一个从量变到质变的过程。不要以为说他坏，就从头到尾都是坏的。林彪取得接班人的地位是有历史原因的，是当时党内形势发展的结果。总之，对我们党来说，林彪事件的教训是深刻的。——1972年8月1日、2日周恩来在接见回国述职大使和外事单位负责同志时的谈话纪要</p>
</li>
<li>
<p>“九一三”林彪事件，客观上宣告了“文化大革命”的理论和实践的失败。在此次事件中，周恩来充分表现出对党对国家的无限忠诚，并得到全党、全军和全国人民的衷心拥戴。在毛泽东支持下，周恩来开始主持中央日常工作。</p>
</li>
<li>
<p>极左思潮是有世界性的。中国也有极左思潮，在我们鼻子下面也有嘛。实际上各单位的极左思潮都是林彪放纵起来的，就是空洞，极端，形式主义，空喊无产阶级政治挂帅，很抽象，这是违反毛泽东思想的。关于这个问题，如果我们不好好做工作，还要犯错误。——1972年8月1日、2日周恩来接见回国述职大使和外事单位负责同志时的谈话纪要。</p>
</li>
<li>
<p>你的手伸过世界最辽阔的海洋来和我握手——25年没有交往了啊！</p>
</li>
<li>
<p>周恩来既表现出高度的原则性，又显示了必要的灵活性。</p>
</li>
<li>
<p>谈判对手眼中的周恩来○尼克松：周的仪表给人的印象是待人热情，开诚布公，善于自制又显然充满激情。周的机敏胜过我所认识的任何一位世界领导人，而且明显带有中国人性格的特征。周还有一种罕见的本领，就是对细小的事情非常留神，但又不被琐事所缠住。他的精力充沛得惊人。在我们的一些时间比较长的会谈中，我注意到，随着时间一小时一小时地过去，听着译员低声翻译的单调的声音，双方一些年纪比较轻的人露出了倦意，但是73岁的周却始终头脑敏锐，精神抖擞，聚精会神。他从不离题，从不讲废话，也从不要求休息。○基辛格：他是一个杰出的历史人物。他精通哲学、熟谙往事，长于历史分析，足智多谋，谈吐机智而有风趣，样样都卓越超群。他对于情况的了解，特别是美国的情况，也包括我个人的背景，了如指掌，简直令人吃惊。他的一言一行几乎都是有明确目的的。简而言之，我生平所遇到的两三个给我印象最深刻的人中，周恩来是其中之一。他温文儒雅，耐心无穷，聪慧过人，机巧敏捷。他在我们讨论之际，轻而易举地就点破了我们新关系的实质，似乎除此之外别无明智的选择。中国和美国在70年代初谋求和解，这是世界环境所决定的。但事情来得这样快，发展又如此顺利，则是由于中国总理的光辉品格和远见卓识起了不小的作用。</p>
</li>
<li>
<p>在毛泽东的过问下，周恩来想方设法，使相当一批老干部解除了囚禁，或得到及时救治和妥善安置。1972年4月，经他亲自审改发表了《人民日报》社论《惩前毖后，治病救人》。社论指出：经过长期革命斗争锻炼的老干部是党的宝贵财富。要严格区分敌我矛盾和人民内部矛盾这两类不同性质的矛盾。除了极少数混进革命队伍的阶级敌人和屡教不改、不可救药的分子外，对一切犯错误的同志，不论老干部、新干部，党内的同志、党外的同志，都要按照“团结——批评——团结”的公式，采取教育为主的方针。正如得过伤寒病可以产生免疫力一样，犯过错误的人，只要认真改正错误，善于从错误中吸取教训，有了免疫力，就有可能工作得更好。</p>
</li>
<li>
<p>如果不是把林彪、陈伯达的问题揭发出来，不是粉碎林彪反党集团斗争的胜利，邓小平同志的问题是解决不了的。——1973年4月1日周恩来在中央国家机关各部、委负责人会议上的讲话。</p>
</li>
<li>
<p>既然把我推上了历史舞台，我就得完成历史任务。——1974年12月23日周恩来抱病飞往长沙向毛泽东汇报四届人大准备情况行前对医生如是说。</p>
</li>
<li>
<p>11月12日，邓小平陪外宾赴长沙去见毛泽东。毛泽东向他了解了10月17日政治局会议“风波”后，肯定了邓小平的做法，并且批评了江青。同一天，毛泽东写信给江青，警告她：“不要多露面，不要批文件，不要由你组阁（当后台老板）。你积怨甚多，要团结多数。”针对江青提名由王洪文当人大常委会副委员长，毛泽东一针见血地指出：“江青有野心。她是想叫王洪文作（人大）委员长，她自己作党的主席。”毛泽东托人转告周恩来：（人大常委会）朱德、董必武之后要安排宋庆龄；邓小平、张春桥、李先念等可任国务院副总理。其他人事问题由周恩来主持安排。</p>
</li>
<li>
<p>12月23日、24日、25日、27日，毛泽东与周恩来、王洪文进行了四次谈话，确定四届人大和国务院的人事安排。在谈话中，毛泽东告诫王洪文：“不要搞‘四人帮’。”“江青有野心，你们看有没有？我看是有。”又说：“批林批孔，批走后门，成了三个主题，就搞乱了。搞乱了，也不告诉我。”“说批林批孔是第二次文化大革命是不对的。”毛泽东还高度评价了邓小平，称邓小平“人才难得”，“政治思想强”，“政治比他（指王洪文。——编者注）强”。毛泽东还采纳周恩来的建议，提出在四届人大前召开的中共十届二中全会上，增选邓小平为中央政治局常委、副主席，同时担任中央军委副主席、国务院副总理兼总参谋长。关于四届人大的人事安排问题，毛泽东重申：“总理还是我们的总理”，人大开过后，总理可安心养病，国务院的工作由邓小平去顶。毛泽东还就四届人大常委会委员长、副委员长和国务院副总理、各部部长的人选问题提出一些具体意见。</p>
</li>
<li>
<p>12月26日，是毛泽东81岁生日。这一天的谈话，只有他和周恩来两个人。相处近50年的老战友，在决定党和国家命运的关键时刻，促膝长谈，直到次日凌晨。毛泽东对周恩来说：“列宁为什么说对资产阶级专政这个问题要搞清楚。这个问题不搞清楚，就会变成修正主义。要使全国知道。”毛泽东还谈到，要尽快“解放”一批老干部，要安定团结，要把国民经济搞上去。他们还就党和国家领导人员的任职问题交换意见，最终确定了中共十届二中全会和四届人大会议上的人事安排方案。</p>
</li>
<li>
<p>机组人员的回忆随周恩来飞赴长沙时的机组人员汪云回忆：总理跟我过去见到的完全不一样了：他明显消瘦，穿了一件灰呢子大衣，戴一顶蓝呢子帽，还围着围巾，戴着口罩。以前我送总理上飞机，他在舷梯上一步一步地走得很有劲。这次登机时，总理走得很慢，很费劲，而且还有点晃。总理脸上、手上有很多老年斑，端杯子时手还微微发抖。看到这种情况，我的心一下子就提起来了。</p>
</li>
<li>
<p>我已经得了癌症，工作的时间不会太长了，这也是自然规律，是不以人的意志为转移的。现在，我正在医院里同疾病作斗争，在可能的情况下，我还要继续和大家一起奋斗，共同实现我们的宏伟目标。——1975年1月17日周恩来参加四届人大一次会议天津代表团分组讨论时的谈话。</p>
</li>
<li>
<p>周恩来把目标对准西方发达国家，批准引进了大批成套新型生产设备，并确定了“一学、二用、三改、四创”的引进国外先进技术的方针。</p>
</li>
<li>
<p>1971年12月，他同叶剑英、李先念等一起听取关于航空工业产品质量问题的汇报，要求航空系统各单位的主要领导亲自抓产品质量，恢复合理的规章制度，批判极左思潮。他说：不能认为凡是资本主义国家的东西都不好，它们也是劳动人民创造的。不要以为我们什么都能搞，要批判地学习外国的东西。</p>
</li>
<li>
<p>你这一年干得很好，比我强得多！——1975年9月20日周恩来进手术室前对邓小平如是说</p>
</li>
<li>
<p>1975年7月初开始，经毛泽东同意，中共中央政治局的日常工作由邓小平主持。7月4日，邓小平向中央读书班第四期学员发表《加强党的领导，整顿党的作风》的讲话，提出“三项指示为纲”的口号。他说：“前一个时期，毛泽东同志有三条重要指示：第一，要学习理论，反修防修；第二，要安定团结；第三，要把国民经济搞上去。这三条指示互相联系，是个整体，不能丢掉任何一条。这是我们这一时期工作的纲。”他还强调，当前我们有好多事要办，“特别是要把国民经济搞上去”。在以后的几个月里，邓小平连续发表讲话，指导各条战线雷厉风行、大刀阔斧地进行整顿，开始系统地纠正“文化大革命”以来种种“左”的做法，落实党的正确政策。</p>
</li>
<li>
<p>1975年9月7日，周恩来在医院会见罗马尼亚共产党中央书记伊利耶·维尔德茨。他对客人说：“马克思的请帖，我已经收到了。这没有什么，这是不以人的意志为转移的自然法则。”“我现在病中，已经不能再工作了。邓小平同志将接替我主持国务院工作。邓小平同志很有才能，你们可以完全相信，邓小平同志将会继续执行我党的内外方针。”“现在，副总理（指邓小平。——编者注）已经全面负起责任来了。”他还特别有所寓意地说，具有55年光荣历史的中国共产党是敢于斗争的。这是周恩来在其光辉的外交生涯中，最后一次会见外宾。</p>
</li>
<li>
<p>我这里没有什么事了，你们还是去照顾别的生病的同志，那里更需要你们……——1976年1月7日周恩来弥留之际对吴阶平大夫如是说。</p>
</li>
<li>
<p>这时的周恩来，仍然自己动手起草或批阅文件。他历来反对那种只动脑不动手甚至既不动脑也不动手的领导作风。</p>
</li>
<li>
<p>7月23日，最后一次来到人民大会堂，嘱咐工作人员对新同志要搞好“传、帮、带”。</p>
</li>
<li>
<p>8月24日，在北海公园散步时，长时间凝望湖水沉思，并告诉身边的工作人员：“你知道今天是什么日子吗？今天是老舍先生的忌日！”</p>
</li>
<li>
<p>周恩来知道自己将不久于人世。半个多世纪以来，他一直处在政治斗争的中心位置，经历过多次血与火、生和死的考验。他虽然面对死亡，却内心坦然，神态自若，没有表现出丝毫悲观失望和烦躁不安。唯一使他感到遗憾的，就是自己再不能像以前那样工作了。尽管如此，周恩来仍关注着国内政局的变化，思考着党和国家的前途和命运。面对因江青一伙不断反扑而趋于恶化的形势，医务人员常常看到周恩来眼望天花板，时而陷入沉思，时而轻轻地摇头叹息。</p>
</li>
<li>
<p>1月7日，周恩来病情继续恶化，呼吸十分微弱，长时间处于昏迷状态。医疗组成员、护理人员等昼夜守护在病房，随时准备抢救。深夜11时，弥留中的周恩来从昏迷中苏醒。他微睁双眼，认出守在他身边的吴阶平大夫，用微弱的声音说道：“我这里没有什么事了。你们还是去照顾别的生病的同志，那里更需要你们……”这是周恩来留下的最后的话。1976年1月8日上午9时57分，周恩来的心脏停止了跳动，终年78岁。</p>
</li>
<li>
<p>邓颖超的回忆早在1956年中央作出死后实行火葬这个决定不久，我们二人就共同商定，互相保证，把我们的骨灰撒到祖国的大好河山去，撒到水里、土里去。在他病重住院期间，他曾专门交代医务人员：现在对癌症的治疗还没有好办法，我一旦死去，你们要彻底检查一下，好好研究研究，能为国家的医学发展作出一点贡献，我是很高兴的。周恩来对他的后事，曾经对我说过，丧礼要从简，规格不要超过中央的任何人。一定不要搞特殊化。</p>
</li>
<li>
<p>欲悲闻鬼叫，我哭豺狼笑。洒泪祭雄杰，扬眉剑出鞘。——《天安门诗抄》</p>
</li>
<li>
<p>1981年6月27日，中共十一届六中全会通过《关于建国以来党的若干历史问题的决议》。这个由邓小平主持起草的“决议”中郑重地写道：“周恩来同志对党和人民无限忠诚，鞠躬尽瘁。他在‘文化大革命’中处于非常困难的地位。他顾全大局，任劳任怨，为继续进行党和国家的正常的工作，为尽量减少‘文化大革命’所造成的损失，为保护大批的党内外干部，做了坚持不懈的努力，费尽了心血。他同林彪、江青反革命集团的破坏进行了各种形式的斗争。他的逝世引起了全党和全国各族人民的无限悲痛。”</p>
</li>
<li>
<p>有一次，我突然接到你寄给我的印有李卜克内西和卢森堡像的明信片，你在明信片上写了“希望我们两个人，将来也像他们两个人那样，一同上断头台”这样英勇的革命的誓言。</p>
</li>
<li>
<p>那时我们都加入了无产阶级先锋队的行列。宣誓的时候，我们都下定决心，愿为革命而死，洒热血、抛头颅，在所不惜。我们之间的书信，可以说是情书，也可以说不是情书，我们信里谈的是革命，是相互的共勉。我们的爱情总是和革命交织在一起，因此，我们革命几十年，出生入死，艰险困苦，患难与共，悲喜分担，有时战斗在一起，有时分散两地，无畏无私。在我们的革命生涯里，总是坚定地、泰然地、沉着地奋斗下去。我们的爱情，经历了几十年也没有任何消减。</p>
</li>
<li>
<p>恩来同志，有外宾问你，你哪里来的这么充沛的精力去工作？你说：一想到我们死去的那些烈士，我们亲密的战友们，就有使不完的劲，要加倍地努力工作，全心全意地为人民服务。这也激励着我，使我无限振奋。我要老骥伏枥，志在千里，烈士暮年，壮心不已，把我有生的余力和余热，更好地为人民多服一点务。</p>
</li>
<li>
<p>我们一直是坚持把革命的利益、国家的利益、党的利益放在第一位，而把个人的事情、个人的利益放在第二位。我们在革命征途上是坚定的，不屈不挠的，不管遇到任何艰难险阻，都是勇往直前地去奋斗，不计个人的得失，不计个人的流血牺牲，不计夫妇的分离。</p>
</li>
<li>
<p>你的侄辈让你讲你我的恋爱故事，你曾说，就是看到我能坚持革命。我也看到你这一点。所以，我们之间谁也没有计较谁的相貌，计较性格有什么差异，为共产主义的理想奋斗，这是最可靠的长期的相爱的基石和保证。我与你是萍水相逢，不是一见倾心，更不是恋爱至上。我们是经过无意的发展，两地相互通信的了解，到有意的、经过考验的结婚，又经过几十年的战斗，结成这样一种战友的、伴侣的、相爱始终的、共同生活的夫妇。把我们的相爱溶化在人民中间，溶化在同志之间，溶化在朋友之间，溶化在青年儿童一代。因此，我们的爱情生活不是简单的，不是为爱情而爱情，我们的爱情是深长的，是永恒的。我们从来没有感觉彼此有什么隔阂。我们是根据我们的革命事业、我们的共同理想相爱的，以后又发现我们有许多相同的爱好，这也是我们生活协调、内容活跃的一个条件。</p>
</li>
<li>
<p>周恩来是伟大的马克思主义者，党和国家主要领导人之一，中国人民解放军主要创建人之一，伟大的无产阶级革命家、政治家、军事家和外交家。他为中国人民解放事业和社会主义建设事业毫无保留地奉献了自己的一生，他崇高的精神和人格，在中国共产党和中华民族的历史上，矗立起一座巍巍丰碑，永远铭刻在各族人民的心里。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-30 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-30-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 30 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-30-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310302337127.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;肩部抬举，30kg，50次&lt;/li&gt;
&lt;li&gt;肩部拉伸，45kg，20次&lt;/li&gt;
&lt;li&gt;大腿上下，75kg，50次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310302337969.png&#34; alt=&#34;image-20231030233731589&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;深刻检讨自己，最近工作压力、学习压力上来之后，有点赌气了，要不得的。&lt;/li&gt;
&lt;li&gt;依据减肥策略，控制饮食，有序进行。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310302337127.png" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>肩部抬举，30kg，50次</li>
<li>肩部拉伸，45kg，20次</li>
<li>大腿上下，75kg，50次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310302337969.png" alt="image-20231030233731589" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>深刻检讨自己，最近工作压力、学习压力上来之后，有点赌气了，要不得的。</li>
<li>依据减肥策略，控制饮食，有序进行。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 2</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-02/</link>
      <pubDate>Sun, 29 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-02/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为  &lt;a href=&#34;https://leetcode.cn/problems/group-anagrams/&#34;&gt;49. 字母异位词分组 - 力扣（LeetCode）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。&lt;/p&gt;
&lt;p&gt;字母异位词 是由重新排列源单词的所有字母得到的一个新单词。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;示例&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输入&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;eat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tea&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tan&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;输出&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;bat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;nat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;tan&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;eat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;tea&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现代码如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;eat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tea&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tan&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;bat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;groupAnagrams&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sortedStrs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sortedStr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;sortedStrs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sortedStr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;sortedStrs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;categories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;groupAnagrams&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路：&lt;/p&gt;
&lt;p&gt;通过查看示例1的输出数组得知，相同字母但顺序可以不一样，所以我们可以考虑，将各元素重新排序，那么就可以知道哪些元素是相同的。首先，先遍历 &lt;code&gt;strs&lt;/code&gt; 数组，使用 &lt;code&gt;split(&amp;quot;&amp;quot;)&lt;/code&gt; 将字符串&lt;code&gt;str&lt;/code&gt;分割为字符数组，然后使用 &lt;code&gt;sort()&lt;/code&gt; 对字符数组进行排序，最后使用 &lt;code&gt;join(&amp;quot;&amp;quot;)&lt;/code&gt; 将排序后的字符数组拼接为字符串。 &lt;code&gt;sortedStrs&lt;/code&gt; 其值如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;aet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;aet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;ant&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;aet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;ant&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;abt&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后开始将 &lt;code&gt;sortedStrs&lt;/code&gt; 中的元素进行分类，将相同元素归入同一个数组中，使用对象&lt;code&gt;key&lt;/code&gt;的唯一性进行实现，遍历 &lt;code&gt;sortedStrs&lt;/code&gt; ，将元素作为对象 &lt;code&gt;categories&lt;/code&gt; 的&lt;code&gt;key&lt;/code&gt;值，如果&lt;code&gt;key&lt;/code&gt;没有存在，则生成新的&lt;code&gt;key&lt;/code&gt;，并将元素自身添加至&lt;code&gt;value&lt;/code&gt;数组中，如果已存在，则将元素添加至&lt;code&gt;value&lt;/code&gt;数组中。在以下代码中，如果 &lt;code&gt;sortedStrs&lt;/code&gt; 中有相同的元素，则加入到 &lt;code&gt;categories[str]&lt;/code&gt; 数组中，但是因为 &lt;code&gt;sortedStrs&lt;/code&gt; 是排序后的数据，虽然元素被排序了，但是下标 &lt;code&gt;index&lt;/code&gt; 是不变的，所以就 &lt;code&gt;push&lt;/code&gt; 原数组 &lt;code&gt;strs&lt;/code&gt; 相同下标的元素。因为如下所示：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为  <a href="https://leetcode.cn/problems/group-anagrams/">49. 字母异位词分组 - 力扣（LeetCode）</a></p>
<p>给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。</p>
<p>字母异位词 是由重新排列源单词的所有字母得到的一个新单词。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">示例</span> <span class="mi">1</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">输入</span><span class="o">:</span> <span class="nx">strs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;eat&#34;</span><span class="p">,</span> <span class="s2">&#34;tea&#34;</span><span class="p">,</span> <span class="s2">&#34;tan&#34;</span><span class="p">,</span> <span class="s2">&#34;ate&#34;</span><span class="p">,</span> <span class="s2">&#34;nat&#34;</span><span class="p">,</span> <span class="s2">&#34;bat&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">输出</span><span class="o">:</span> <span class="p">[[</span><span class="s2">&#34;bat&#34;</span><span class="p">],[</span><span class="s2">&#34;nat&#34;</span><span class="p">,</span><span class="s2">&#34;tan&#34;</span><span class="p">],[</span><span class="s2">&#34;ate&#34;</span><span class="p">,</span><span class="s2">&#34;eat&#34;</span><span class="p">,</span><span class="s2">&#34;tea&#34;</span><span class="p">]]</span>
</span></span></code></pre></div><p>实现代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">strs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;eat&#34;</span><span class="p">,</span> <span class="s2">&#34;tea&#34;</span><span class="p">,</span> <span class="s2">&#34;tan&#34;</span><span class="p">,</span> <span class="s2">&#34;ate&#34;</span><span class="p">,</span> <span class="s2">&#34;nat&#34;</span><span class="p">,</span> <span class="s2">&#34;bat&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">groupAnagrams</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">strs</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">sortedStrs</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="nx">strs</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">str</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kd">let</span> <span class="nx">sortedStr</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="p">).</span><span class="nx">sort</span><span class="p">().</span><span class="nx">join</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="nx">sortedStrs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">sortedStr</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">categories</span> <span class="o">=</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">    <span class="nx">sortedStrs</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">str</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">].</span><span class="nx">push</span><span class="p">(</span><span class="nx">strs</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nx">strs</span><span class="p">[</span><span class="nx">index</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">categories</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">categories</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">result</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">groupAnagrams</span><span class="p">(</span><span class="nx">strs</span><span class="p">)</span>
</span></span></code></pre></div><p>解题思路：</p>
<p>通过查看示例1的输出数组得知，相同字母但顺序可以不一样，所以我们可以考虑，将各元素重新排序，那么就可以知道哪些元素是相同的。首先，先遍历 <code>strs</code> 数组，使用 <code>split(&quot;&quot;)</code> 将字符串<code>str</code>分割为字符数组，然后使用 <code>sort()</code> 对字符数组进行排序，最后使用 <code>join(&quot;&quot;)</code> 将排序后的字符数组拼接为字符串。 <code>sortedStrs</code> 其值如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">[</span> <span class="s1">&#39;aet&#39;</span><span class="p">,</span> <span class="s1">&#39;aet&#39;</span><span class="p">,</span> <span class="s1">&#39;ant&#39;</span><span class="p">,</span> <span class="s1">&#39;aet&#39;</span><span class="p">,</span> <span class="s1">&#39;ant&#39;</span><span class="p">,</span> <span class="s1">&#39;abt&#39;</span> <span class="p">]</span>
</span></span></code></pre></div><p>然后开始将 <code>sortedStrs</code> 中的元素进行分类，将相同元素归入同一个数组中，使用对象<code>key</code>的唯一性进行实现，遍历 <code>sortedStrs</code> ，将元素作为对象 <code>categories</code> 的<code>key</code>值，如果<code>key</code>没有存在，则生成新的<code>key</code>，并将元素自身添加至<code>value</code>数组中，如果已存在，则将元素添加至<code>value</code>数组中。在以下代码中，如果 <code>sortedStrs</code> 中有相同的元素，则加入到 <code>categories[str]</code> 数组中，但是因为 <code>sortedStrs</code> 是排序后的数据，虽然元素被排序了，但是下标 <code>index</code> 是不变的，所以就 <code>push</code> 原数组 <code>strs</code> 相同下标的元素。因为如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">sortedStrs</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">str</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">].</span><span class="nx">push</span><span class="p">(</span><span class="nx">strs</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">categories</span><span class="p">[</span><span class="nx">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nx">strs</span><span class="p">[</span><span class="nx">index</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><p>至此，我们可以得到<code>categories</code>的值，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">{</span> 
</span></span><span class="line"><span class="cl">    <span class="nx">aet</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;eat&#39;</span><span class="p">,</span> <span class="s1">&#39;tea&#39;</span><span class="p">,</span> <span class="s1">&#39;ate&#39;</span><span class="p">],</span> 
</span></span><span class="line"><span class="cl">    <span class="nx">ant</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;tan&#39;</span><span class="p">,</span> <span class="s1">&#39;nat&#39;</span><span class="p">],</span> 
</span></span><span class="line"><span class="cl">    <span class="nx">abt</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;bat&#39;</span><span class="p">]</span> 
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>然后通过遍历 <code>categories</code> 对象，将其值加入新的数组<code>result</code>即可完成，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">[</span> <span class="p">[</span> <span class="s1">&#39;eat&#39;</span><span class="p">,</span> <span class="s1">&#39;tea&#39;</span><span class="p">,</span> <span class="s1">&#39;ate&#39;</span> <span class="p">],</span> <span class="p">[</span> <span class="s1">&#39;tan&#39;</span><span class="p">,</span> <span class="s1">&#39;nat&#39;</span> <span class="p">],</span> <span class="p">[</span> <span class="s1">&#39;bat&#39;</span> <span class="p">]</span> <span class="p">]</span>
</span></span></code></pre></div><h2 id="review">Review</h2>
<p><a href="https://medium.com/@kevinnokiawriting/why-reading-is-part-of-success-6c9cea0c1edb">Why Reading Is Part of Success | by Kevin Nokia | Medium</a></p>
<p>作者主要是说了阅读为什么可以是成功的一部分，这是因为阅读就像是和他人交流，你总能从别人身上学到一些东西。如果你平时总是很固执和虚荣，觉得自己无所不知，他人的建议置若罔闻，那么你很容易走向困境。如果你想改变这种局面，那就需要知道：</p>
<ol>
<li>固执和虚荣会阻碍学习有价值的东西。</li>
<li>不要仰视任何人，不要瞧不起任何人。</li>
<li>尊重是学习的关键，这就是为什么我们需要倾听别人的声音。</li>
<li>如果你觉得听别人说话很难，那就从阅读开始吧，阅读是教你如何倾听的一个很简单的工具。</li>
<li>你可以从每天阅读5分钟开始。如果你还是觉得很难，你可以先读一分钟。</li>
</ol>
<h2 id="tip">Tip</h2>
<p><code>git clone -b ${1:-dev}</code> 的意思是，将远程仓库的分支代码克隆至本地，如果有传参，则克隆传入的分支代码，如果没有传参，则默认克隆<code>dev</code>分支的代码。通常项目会有设置<code>dev</code>、<code>test</code>、<code>staging</code>和<code>master</code>分支，如果想要部署不同环境时，依赖不同环境的库或项目，就会用到这个动态设置分支名称的功能。比如在<code>install.sh</code>文件中，有如下示例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">git</span> <span class="nx">clone</span> <span class="o">-</span><span class="nx">b</span> <span class="nx">$</span><span class="p">{</span><span class="mi">1</span><span class="o">:-</span><span class="nx">dev</span><span class="p">}</span> <span class="nx">https</span><span class="o">:</span><span class="c1">//github.com/ar7/test.git
</span></span></span></code></pre></div><p>要在<code>.yml</code>中调用，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">.</span><span class="o">/</span><span class="nx">install</span><span class="p">.</span><span class="nx">sh</span> <span class="nx">$</span><span class="p">{</span><span class="nx">BRANCH_NAME</span><span class="p">}</span>
</span></span></code></pre></div><h2 id="share">Share</h2>
<ol>
<li>
<p>人们不会去做你想让他们去做的事情，他们只会去做他们想去做的事情。</p>
</li>
<li>
<p>我觉得一个人只要认真做事，那么就值得肯定，哪怕结果不是很好，那我也会舍得花费时间和精力去协助和分担，因为做好一件事情本来就是很难的，有些事一个人就可以，有些事就需要团队的力量。大家互帮互助，才会走得更远。但是如果和我耍小心机，所作所为完全是为了自己，任务难点就推给别人，一有问题就先甩锅，那么太让我生气了。以前心态还会爆炸，就在想为什么会有这种人，但也只是生闷气，后来想明白了，我只需要多为厚道、认真做事的同事服务，为他们争取更多的利益，偷奸耍滑的睁一只眼闭一只眼就可以了，没必要去指责，用其所长即可。大家都是打工的，爱咋地咋地，只需要重点关注团队核心三四个人，还有剩下认真做事的人就行，其他不值得浪费任何时间。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-27 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-27-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310280948249.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿左右，68kg，100次&lt;/li&gt;
&lt;li&gt;胸部上推，30kg，100次&lt;/li&gt;
&lt;li&gt;肩部拉伸，50kg，10次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310280948488.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚上很随机的就想去吃下新疆羊肉串，然后就去了，然后吃多了。&lt;/li&gt;
&lt;li&gt;现在开始增加力量训练的比重。&lt;/li&gt;
&lt;li&gt;晚上早点睡。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310280948249.jpg" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿左右，68kg，100次</li>
<li>胸部上推，30kg，100次</li>
<li>肩部拉伸，50kg，10次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310280948488.jpg" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚上很随机的就想去吃下新疆羊肉串，然后就去了，然后吃多了。</li>
<li>现在开始增加力量训练的比重。</li>
<li>晚上早点睡。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-26 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-26-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-26-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310262329017.png&#34; alt=&#34;image-20231026232340040&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿左右，68kg，130次&lt;/li&gt;
&lt;li&gt;抬举肩部，20kg，100次&lt;/li&gt;
&lt;li&gt;拉伸肩部，30kg，100次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310262315145.png&#34; alt=&#34;image-20231026231402487&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚上加班，还是坚持去了下。&lt;/li&gt;
&lt;li&gt;今晚增加了力量训练，所以压缩了爬坡的时间。&lt;/li&gt;
&lt;li&gt;后面应该会加强力量训练。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310262329017.png" alt="image-20231026232340040" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿左右，68kg，130次</li>
<li>抬举肩部，20kg，100次</li>
<li>拉伸肩部，30kg，100次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310262315145.png" alt="image-20231026231402487" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚上加班，还是坚持去了下。</li>
<li>今晚增加了力量训练，所以压缩了爬坡的时间。</li>
<li>后面应该会加强力量训练。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-25 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-25-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-25-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310252336231.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;胸部，30kg，100次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310252335525.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚上吃的很多了，但是从健身房回来还是饿了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310252336231.png" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<p>胸部，30kg，100次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310252335525.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚上吃的很多了，但是从健身房回来还是饿了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-22 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-22-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-22-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310222208950.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;后拉，45g，30次&lt;/li&gt;
&lt;li&gt;后拉，25kg，70次&lt;/li&gt;
&lt;li&gt;后拉，30kg，40次&lt;/li&gt;
&lt;li&gt;胸部，40kg，30次&lt;/li&gt;
&lt;li&gt;向下拉，35kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310222212131.png&#34; alt=&#34;image-20231022221242314&#34; style=&#34;zoom: 33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;力量训练可以慢慢提升强度，这样可以坚持得久一点，不然一下上强度，很容易泄气。后续会慢慢提升力量训练的占比。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310222208950.png" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>后拉，45g，30次</li>
<li>后拉，25kg，70次</li>
<li>后拉，30kg，40次</li>
<li>胸部，40kg，30次</li>
<li>向下拉，35kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310222212131.png" alt="image-20231022221242314" style="zoom: 33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>力量训练可以慢慢提升强度，这样可以坚持得久一点，不然一下上强度，很容易泄气。后续会慢慢提升力量训练的占比。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>ARTS Week 1</title>
      <link>https://dstweihao.cn/posts/arts/arts-week-01/</link>
      <pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/arts-week-01/</guid>
      <description>&lt;h2 id=&#34;algorithm&#34;&gt;Algorithm&lt;/h2&gt;
&lt;p&gt;本周的算法题为 &lt;a href=&#34;https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&amp;amp;envId=top-100-liked&#34;&gt;1. 两数之和 - 力扣（LeetCode）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给定一个整数数组 &lt;code&gt;nums&lt;/code&gt; 和一个整数目标值 &lt;code&gt;target&lt;/code&gt;，请你在该数组中找出 &lt;strong&gt;和为目标值&lt;/strong&gt; &lt;em&gt;&lt;code&gt;target&lt;/code&gt;&lt;/em&gt; 的那 &lt;strong&gt;两个&lt;/strong&gt; 整数，并返回它们的数组下标。&lt;/p&gt;
&lt;p&gt;你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。&lt;/p&gt;
&lt;p&gt;你可以按任意顺序返回答案。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;示例 1：
输入：nums = [2,7,11,15], target = 9
输出：[0,1]
解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;实现代码如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;twoSum&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;j&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;twoSum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;nums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解题思路是，遍历两次 &lt;code&gt;nums&lt;/code&gt; 数据，然后将 &lt;code&gt;nums[i]&lt;/code&gt; 和 &lt;code&gt;nums[j]&lt;/code&gt; 相加，如果其值等于 &lt;code&gt;target&lt;/code&gt; ，则添加到 &lt;code&gt;output&lt;/code&gt; 数组中，以示例1的数据举例，因为遍历两次，会出现 &lt;code&gt;[0,1]&lt;/code&gt; 和 &lt;code&gt;[1,0]&lt;/code&gt; 的情况，所以需要对数组去重，数组去重使用 &lt;code&gt;Array.from(new Set(output))&lt;/code&gt; 实现。至此，是可以实现示例1的需求了，但是如果是示例2时，就会出问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="algorithm">Algorithm</h2>
<p>本周的算法题为 <a href="https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&amp;envId=top-100-liked">1. 两数之和 - 力扣（LeetCode）</a></p>
<p>给定一个整数数组 <code>nums</code> 和一个整数目标值 <code>target</code>，请你在该数组中找出 <strong>和为目标值</strong> <em><code>target</code></em> 的那 <strong>两个</strong> 整数，并返回它们的数组下标。</p>
<p>你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。</p>
<p>你可以按任意顺序返回答案。</p>
<pre tabindex="0"><code>示例 1：
输入：nums = [2,7,11,15], target = 9
输出：[0,1]
解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
</code></pre><p>实现代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">15</span><span class="p">],</span> <span class="nx">target</span> <span class="o">=</span> <span class="mi">9</span>
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">twoSum</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="nx">target</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">let</span> <span class="nx">output</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="nx">nums</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">item</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">nums</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">data</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">!==</span> <span class="nx">j</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">+</span> <span class="nx">data</span> <span class="o">===</span> <span class="nx">target</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">output</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">output</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="nx">output</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">from</span><span class="p">(</span><span class="k">new</span> <span class="nx">Set</span><span class="p">(</span><span class="nx">output</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">output</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="nx">twoSum</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="nx">target</span><span class="p">)</span>
</span></span></code></pre></div><p>解题思路是，遍历两次 <code>nums</code> 数据，然后将 <code>nums[i]</code> 和 <code>nums[j]</code> 相加，如果其值等于 <code>target</code> ，则添加到 <code>output</code> 数组中，以示例1的数据举例，因为遍历两次，会出现 <code>[0,1]</code> 和 <code>[1,0]</code> 的情况，所以需要对数组去重，数组去重使用 <code>Array.from(new Set(output))</code> 实现。至此，是可以实现示例1的需求了，但是如果是示例2时，就会出问题。</p>
<pre tabindex="0"><code>示例 2：
输入：nums = [3,2,4], target = 6
输出：[1,2]
</code></pre><p>因为是遍历两次<code>nums</code>数组的，当<code>[0,0]</code>时，也是可以满足等于6的条件的，然后两个0就会被添加到output数组中，然后去重，就会有0，然后我们通过肉眼可知，正确结果是[1,2]的，为了解决这个漏洞就需要判断不要让同下标的数值进行相加，也就是<code>if(i !== j)</code>。</p>
<p>这个代码实现思路其实很不满意，会有更优的实现方式，现在刚开始，首要目的是解得出来，后面总结再进一步学习和优化。</p>
<h2 id="review">Review</h2>
<p><a href="https://medium.com/@mirraesmael/the-reader-in-a-non-bookish-community-9cf4cd075753">The Reader in a Non-Bookish Community | by Mirra Esmael | Sep, 2023 | Medium</a></p>
<ol>
<li>作者认为阅读和成为读者都是一种骄傲，它不是由你读过的书的数量来定义的，也不是因为阅读是大多数人觉得令人生畏的活动之一，而是作为一个读书意味着你的大脑已经探索了无数页的论点、概念、问题和表述。</li>
<li>在作者家乡，根据读者主要阅读材料，可以有三种类型读者：1、为了学习而读书；2、为了背诵《古兰经》；3、为了娱乐而读书，作者是第三种读者。</li>
<li>爱读书的人是积极地、有规律地或大部分时间都在读书的人。</li>
<li>虽然阅读对大多数人来说有积极的内涵和印象，但是没有实际行动来支持这一点。</li>
<li>不管读书带来的是好处还是坏处，作者一直认为它是一个积极的因素，它给作者带来了更多的机会。这就是为什么作者一直在向她的朋友和亲人宣传阅读。</li>
</ol>
<h2 id="tip">Tip</h2>
<pre tabindex="0"><code>node:internal/errors:477
    ErrorCaptureStackTrace(err);
    ^
Error: Command failed with ENOENT: npm run clean
spawn npm run clean ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -2,
  code: &#39;ENOENT&#39;,
  syscall: &#39;spawn npm run clean&#39;,
  path: &#39;npm run clean&#39;,
  spawnargs: [],
  originalMessage: &#39;spawn npm run clean ENOENT&#39;,
  shortMessage: &#39;Command failed with ENOENT: npm run clean\nspawn npm run clean ENOENT&#39;,
  command: &#39;npm run clean&#39;,
  exitCode: undefined,
  signal: undefined,
  signalDescription: undefined,
  stdout: &#39;&#39;,
  stderr: &#39;&#39;,
  failed: true,
  timedOut: false,
  isCanceled: false,
  killed: false
}
</code></pre><p>从报错信息可知，代码在执行到<code>npm run clean</code>命令时报错了，提示找不到这个命令，但是我复制命令在终端运行是成功的，在windows10系统是没问题的，但我在mac系统上运行就报错了，执行代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">await</span> <span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span>
</span></span></code></pre></div><p>初步猜测，可能execa用法在mac环境中不生效。将其注释，没有提示报错，所以，接着就要研究如何在mac环境中使用execa了。只需将</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span> 
</span></span></code></pre></div><p>改写为</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;run&#39;</span><span class="p">,</span> <span class="s1">&#39;clean&#39;</span><span class="p">],</span> <span class="p">{</span> <span class="nx">shell</span><span class="o">:</span> <span class="kc">true</span> <span class="p">})</span>
</span></span></code></pre></div><p>即可，这时，我们就会想知道这两种用法有什么区别呢？</p>
<p><code>execa</code>是一个用于执行<code>shell</code>命令的<code>Node.js</code>模块，它可以将命令作为参数传递给它，并返回一个<code>Promise</code>，以便在命令执行完成之后处理。根据报错提示没有找到<code>npm</code>命令，很有可能是execa模块无法正确识别到环境变量。</p>
<p>所以将<code>npm run clean</code>拆分为<code>npm</code>和<code>run clean</code>两个参数，并将 shell 选项设置为<code>true</code>，以便在子进程中运行命令的时候使用默认的<code>shell</code>，这样可以正确找到<code>npm</code>命令并且识别环境变量，找到<code>npm</code>命令。</p>
<h2 id="share">Share</h2>
<ol>
<li>使用<code>ChatGPT</code>有一段时间了，发现用来工作和学习效率真是太高了，只要提问就能得到你想要的答案。我就一直在想，如果我一问就给出全部答案了，那我还写什么技术博文，直接复制粘贴就完成一篇技术博文了。但要真是这样，那可太没意思了，纯粹是搬运工，自己根本没掌握这些知识，有啥用？。<code>ChatGPT</code>只是一个工具，工具没有好坏，要看使用工具的人。</li>
<li>一直觉得“技术+英语+法律”应该是一个比较有优势的程序员形态，技术就像Y轴，英语就像是X轴，法律是坐标轴外圆，这是你能拥有的安全的东西。技术让你站得更高，英语让你看得更远，法律是让你可以做对的事情。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-21 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 21 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310212307482.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿左右，68kg，5档，50次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310212304359.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;晚上算是一改之前在外面吃的习惯，自己做了，结合薄荷生活饮食调整。也是第一次买这个东西，当前还是减到预期的体重，后面再考虑塑身吧。&lt;/li&gt;
&lt;li&gt;因为气温骤降，清补凉不开了，然后买了珍珠奶茶，也就这一次了吧。&lt;/li&gt;
&lt;li&gt;熬夜会让新陈代谢降低，不利于减肥。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310212307482.png" style="zoom:33%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿左右，68kg，5档，50次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310212304359.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>晚上算是一改之前在外面吃的习惯，自己做了，结合薄荷生活饮食调整。也是第一次买这个东西，当前还是减到预期的体重，后面再考虑塑身吧。</li>
<li>因为气温骤降，清补凉不开了，然后买了珍珠奶茶，也就这一次了吧。</li>
<li>熬夜会让新陈代谢降低，不利于减肥。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-20 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 20 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：一个酸菜包、一个青菜包&lt;/li&gt;
&lt;li&gt;午餐：手撕鸡、蜜汁鸡腿饭&lt;/li&gt;
&lt;li&gt;晚餐：10个汤饺、6个青枣、一个橘子、海南椰奶清补凉、蛋白粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;无。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310202307606.png&#34; alt=&#34;image-20231020230717524&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;今天下雨，还是去健身房了，发现中午在食堂吃套餐饭，好像还是有点作用的。&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：一个酸菜包、一个青菜包</li>
<li>午餐：手撕鸡、蜜汁鸡腿饭</li>
<li>晚餐：10个汤饺、6个青枣、一个橘子、海南椰奶清补凉、蛋白粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>无。</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310202307606.png" alt="image-20231020230717524" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>今天下雨，还是去健身房了，发现中午在食堂吃套餐饭，好像还是有点作用的。</li>
<li></li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-18 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 18 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：两个菜包，牛奶&lt;/li&gt;
&lt;li&gt;午餐：烧鸭黄面&lt;/li&gt;
&lt;li&gt;晚餐：五宝汤粉、6个青枣、一个橘子、陈皮特饮、海南椰奶清补凉、蛋白粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿左右，68kg，5档，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310182335268.png&#34; alt=&#34;image-20231018233523996&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;饮食结构要调整一下，晚上吃玉米吧。最近有点问题，可能太忙了，还是不够注意。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：两个菜包，牛奶</li>
<li>午餐：烧鸭黄面</li>
<li>晚餐：五宝汤粉、6个青枣、一个橘子、陈皮特饮、海南椰奶清补凉、蛋白粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿左右，68kg，5档，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310182335268.png" alt="image-20231018233523996" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>饮食结构要调整一下，晚上吃玉米吧。最近有点问题，可能太忙了，还是不够注意。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-17 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 17 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米，牛奶&lt;/li&gt;
&lt;li&gt;午餐：猪脚碱水面&lt;/li&gt;
&lt;li&gt;晚餐：公司食堂、海南椰奶清补凉、蛋白粉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;大腿上下，75kg，30次&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;肩部，25kg，20次&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310180032963.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在公司食堂吃晚饭，还是要少吃点。&lt;/li&gt;
&lt;li&gt;不要熬夜，没别的了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米，牛奶</li>
<li>午餐：猪脚碱水面</li>
<li>晚餐：公司食堂、海南椰奶清补凉、蛋白粉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>
<p>大腿上下，75kg，30次</p>
</li>
<li>
<p>肩部，25kg，20次</p>
</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310180032963.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>在公司食堂吃晚饭，还是要少吃点。</li>
<li>不要熬夜，没别的了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-16 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐：玉米，两个鸡蛋，牛奶&lt;/li&gt;
&lt;li&gt;午餐：酸菜鱼，一碗米饭&lt;/li&gt;
&lt;li&gt;晚餐：猪杂粉、海南椰奶清补凉、蛋白粉&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310162248424.png&#34; alt=&#34;image-20231016224856298&#34; style=&#34;zoom: 15%;&#34; /&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿左右，68kg，5档，60次&lt;/li&gt;
&lt;li&gt;肩部，25kg，50次&lt;/li&gt;
&lt;li&gt;扩胸，20kg，3档，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310162240489.png&#34; alt=&#34;image-20231016224025543&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐没问题，晚饭调整下，早上多煮些，留晚上吃。&lt;/li&gt;
&lt;li&gt;不要熬夜，事情太多了，还是提高效率，早睡早起。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐：玉米，两个鸡蛋，牛奶</li>
<li>午餐：酸菜鱼，一碗米饭</li>
<li>晚餐：猪杂粉、海南椰奶清补凉、蛋白粉</li>
</ol>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310162248424.png" alt="image-20231016224856298" style="zoom: 15%;" />
<h2 id="无氧">无氧</h2>
<ol>
<li>大腿左右，68kg，5档，60次</li>
<li>肩部，25kg，50次</li>
<li>扩胸，20kg，3档，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310162240489.png" alt="image-20231016224025543" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>早餐没问题，晚饭调整下，早上多煮些，留晚上吃。</li>
<li>不要熬夜，事情太多了，还是提高效率，早睡早起。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-15 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 15 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;早餐： 一袋鲜肉玉米饺，鸡蛋，牛奶&lt;/li&gt;
&lt;li&gt;午餐： 猪杂粉，5个青枣，一个🍊&lt;/li&gt;
&lt;li&gt;晚餐： 玉米，鸡蛋，牛奶，蛋白粉，海南后安粉，海南清补凉&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;肩部，20kg，40次&lt;/li&gt;
&lt;li&gt;扩胸动作，25kg，20次&lt;/li&gt;
&lt;li&gt;坐式曲腿，75kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310152306250.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;一袋鲜肉玉米饺，太多了，应该只吃一半，加玉米之类。&lt;/li&gt;
&lt;li&gt;猪杂粉按理不应该吃，但也还行。&lt;/li&gt;
&lt;li&gt;海南后安粉感觉有点像我那边的粉，但是就吃这一次了吧。清补凉真不错，估计也会控制了。&lt;/li&gt;
&lt;li&gt;要早点睡觉，不要熬夜。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<ol>
<li>早餐： 一袋鲜肉玉米饺，鸡蛋，牛奶</li>
<li>午餐： 猪杂粉，5个青枣，一个🍊</li>
<li>晚餐： 玉米，鸡蛋，牛奶，蛋白粉，海南后安粉，海南清补凉</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>肩部，20kg，40次</li>
<li>扩胸动作，25kg，20次</li>
<li>坐式曲腿，75kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310152306250.png" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>一袋鲜肉玉米饺，太多了，应该只吃一半，加玉米之类。</li>
<li>猪杂粉按理不应该吃，但也还行。</li>
<li>海南后安粉感觉有点像我那边的粉，但是就吃这一次了吧。清补凉真不错，估计也会控制了。</li>
<li>要早点睡觉，不要熬夜。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《新参者》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%96%B0%E5%8F%82%E8%80%85/</link>
      <pubDate>Sat, 14 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%96%B0%E5%8F%82%E8%80%85/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311012011478.jpg&#34; alt=&#34;23845292-2_u_9&#34; style=&#34;zoom: 33%;&#34; /&gt;
&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;p&gt;美丽的误会是个温暖的故事。&lt;/p&gt;
&lt;h2 id=&#34;1&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;不劳者不得食。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;动机这东西，只要本人不说，就没人知道。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1-1&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;男人解决不了婆媳间的矛盾，事情没那么简单。你能做的就是倾听各自的说辞。只要默默听就行，一定不要反驳，不然只会火上浇油。听完就做出理解的表情，说她有道理，说得对，然后告诉她会找机会把她的想法转达给另一方。当然，千万不要真去转达。总有一天，她还会责问你，事情办得怎样了。到时你就要忍，让她们把矛头指向你。你能做的只有这些。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4&#34;&gt;4&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;刑警一般不会让人看出自己的目的。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;6&#34;&gt;6&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;柳泽先生，女人是很复杂的。表面上看起来关系不好，实际可能正好相反。当然也有表里一致的情况。作为刑警，我觉得女性的心理最难琢磨。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-1&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;没关系，好东西是不会消亡的。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;5&#34;&gt;5&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;三个表盘同时运转的原理很简单。一般钟表的机械装置安装在表盘后面，但这个钟却安在底端，靠发条运转的轴立在三角柱的中心位置，轴的运动通过齿轮传递到三个表盘。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;三角钟的构造就像寺田父女一样，看似方向不同，却由一根轴连在一起。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-2&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;那次怀孕是失算——这句话像刺一样扎进了弘毅的心。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;5-1&#34;&gt;5&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;这个嘛，果然是因为你。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1-2&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;三井女士搬到小传马町后，每天应该都过得很快乐。她完全沉浸在默默守望的愉悦中了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人对事情的理解方式不一样。律师可能会说是自己巧妙周旋，才没有发生纠纷。实际上根本就不需要律师，我只想告诉你这一点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;5-2&#34;&gt;5&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;户纪子的信字里行间都充满对直弘的爱，但也可以解释为是对不成熟的人的安慰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我从和户纪子的事中明白了一个道理，那就是男人要想让女人幸福，就得像牛马一样工作。但峰子的行动又告诉我，仅仅那样也不行。我真是蠢极了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-3&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;我是个新参者。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4-1&#34;&gt;4&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;陀螺都有适合自己的陀螺线。您家的陀螺如果用这根线，应该能转得很好。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1-3&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;他们误以为自己是凭一己之力长大的，很快便会忘记父母曾给予的保护。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人到底有没有成熟，和年龄没有关系，需要父母的判断。这种判断对孩子的人生来说十分必要，而且只有父母能那么做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根本就不是独立生活，只是换了保护人而已。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;7&#34;&gt;7&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;这个年轻人身上正散发出一种想拼命改变自己的气息。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;8&#34;&gt;8&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;我的确疼爱儿子，而且对这点很有自信。但疼爱和重视不一样。所谓重视，是考虑孩子的未来，不断为他做出最好的选择，我却没能那么做。我只是为自己有了一个可以倾注爱的对象而极其高兴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当然，孩子总有一天会长大，不会永远那么可爱，有时还会闯祸。这种时候，父亲往往会选择逃避。工作一忙，他们更为自己找到一个体面的借口。我也一样。妻子跟我说起儿子时，我只嫌她啰唆，根本不想跟她一起解决问题。当妻子因此责怪我时，我总会说自己有工作。即便工作不忙，我也总把这句话当武器，将所有麻烦都推给妻子，甚至在听说儿子交了狐朋狗友时，我也并不在意。我乐观地认为，稍微活泼一点的男孩子总有一段时期会这样。实际上，我的乐观只是在自欺欺人。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311012011478.jpg" alt="23845292-2_u_9" style="zoom: 33%;" />
<h2 id="点评">点评</h2>
<p>美丽的误会是个温暖的故事。</p>
<h2 id="1">1</h2>
<ol>
<li>不劳者不得食。</li>
</ol>
<h2 id="3">3</h2>
<ol>
<li>动机这东西，只要本人不说，就没人知道。</li>
</ol>
<h2 id="1-1">1</h2>
<ol>
<li>男人解决不了婆媳间的矛盾，事情没那么简单。你能做的就是倾听各自的说辞。只要默默听就行，一定不要反驳，不然只会火上浇油。听完就做出理解的表情，说她有道理，说得对，然后告诉她会找机会把她的想法转达给另一方。当然，千万不要真去转达。总有一天，她还会责问你，事情办得怎样了。到时你就要忍，让她们把矛头指向你。你能做的只有这些。</li>
</ol>
<h2 id="4">4</h2>
<ol>
<li>刑警一般不会让人看出自己的目的。</li>
</ol>
<h2 id="6">6</h2>
<ol>
<li>柳泽先生，女人是很复杂的。表面上看起来关系不好，实际可能正好相反。当然也有表里一致的情况。作为刑警，我觉得女性的心理最难琢磨。</li>
</ol>
<h2 id="3-1">3</h2>
<ol>
<li>没关系，好东西是不会消亡的。</li>
</ol>
<h2 id="5">5</h2>
<ol>
<li>
<p>三个表盘同时运转的原理很简单。一般钟表的机械装置安装在表盘后面，但这个钟却安在底端，靠发条运转的轴立在三角柱的中心位置，轴的运动通过齿轮传递到三个表盘。</p>
</li>
<li>
<p>三角钟的构造就像寺田父女一样，看似方向不同，却由一根轴连在一起。</p>
</li>
</ol>
<h2 id="3-2">3</h2>
<ol>
<li>那次怀孕是失算——这句话像刺一样扎进了弘毅的心。</li>
</ol>
<h2 id="5-1">5</h2>
<ol>
<li>这个嘛，果然是因为你。</li>
</ol>
<h2 id="1-2">1</h2>
<ol>
<li>
<p>三井女士搬到小传马町后，每天应该都过得很快乐。她完全沉浸在默默守望的愉悦中了。</p>
</li>
<li>
<p>每个人对事情的理解方式不一样。律师可能会说是自己巧妙周旋，才没有发生纠纷。实际上根本就不需要律师，我只想告诉你这一点。</p>
</li>
</ol>
<h2 id="5-2">5</h2>
<ol>
<li>
<p>户纪子的信字里行间都充满对直弘的爱，但也可以解释为是对不成熟的人的安慰。</p>
</li>
<li>
<p>我从和户纪子的事中明白了一个道理，那就是男人要想让女人幸福，就得像牛马一样工作。但峰子的行动又告诉我，仅仅那样也不行。我真是蠢极了。</p>
</li>
</ol>
<h2 id="3-3">3</h2>
<ol>
<li>我是个新参者。</li>
</ol>
<h2 id="4-1">4</h2>
<ol>
<li>陀螺都有适合自己的陀螺线。您家的陀螺如果用这根线，应该能转得很好。</li>
</ol>
<h2 id="1-3">1</h2>
<ol>
<li>
<p>他们误以为自己是凭一己之力长大的，很快便会忘记父母曾给予的保护。</p>
</li>
<li>
<p>一个人到底有没有成熟，和年龄没有关系，需要父母的判断。这种判断对孩子的人生来说十分必要，而且只有父母能那么做。</p>
</li>
<li>
<p>根本就不是独立生活，只是换了保护人而已。</p>
</li>
</ol>
<h2 id="7">7</h2>
<ol>
<li>这个年轻人身上正散发出一种想拼命改变自己的气息。</li>
</ol>
<h2 id="8">8</h2>
<ol>
<li>
<p>我的确疼爱儿子，而且对这点很有自信。但疼爱和重视不一样。所谓重视，是考虑孩子的未来，不断为他做出最好的选择，我却没能那么做。我只是为自己有了一个可以倾注爱的对象而极其高兴。</p>
</li>
<li>
<p>当然，孩子总有一天会长大，不会永远那么可爱，有时还会闯祸。这种时候，父亲往往会选择逃避。工作一忙，他们更为自己找到一个体面的借口。我也一样。妻子跟我说起儿子时，我只嫌她啰唆，根本不想跟她一起解决问题。当妻子因此责怪我时，我总会说自己有工作。即便工作不忙，我也总把这句话当武器，将所有麻烦都推给妻子，甚至在听说儿子交了狐朋狗友时，我也并不在意。我乐观地认为，稍微活泼一点的男孩子总有一段时期会这样。实际上，我的乐观只是在自欺欺人。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-14 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 14 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;饮食&#34;&gt;饮食&lt;/h2&gt;
&lt;p&gt;早餐：土豆，2个鸡蛋，牛奶
午餐：鱼杂粉
晚餐：炒螺蛳粉，海南清补凉&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;大腿，68kg，50次
胸部，30次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310142347010.png&#34; alt=&#34;image-20231014234747751&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;炒螺蛳粉不应该吃，改之，海南清补凉真的好吃，本来想说不应该吃，但太好吃了。&lt;/li&gt;
&lt;li&gt;早睡早起，不要再熬夜了。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<h2 id="饮食">饮食</h2>
<p>早餐：土豆，2个鸡蛋，牛奶
午餐：鱼杂粉
晚餐：炒螺蛳粉，海南清补凉</p>
<h2 id="无氧">无氧</h2>
<p>大腿，68kg，50次
胸部，30次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310142347010.png" alt="image-20231014234747751" style="zoom:33%;" />
<h2 id="总结">总结</h2>
<ol>
<li>炒螺蛳粉不应该吃，改之，海南清补凉真的好吃，本来想说不应该吃，但太好吃了。</li>
<li>早睡早起，不要再熬夜了。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-12 运动记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 12 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-12-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310141653397.png&#34; alt=&#34;image-20231014165300072&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310141653397.png" alt="image-20231014165300072" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-11</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-11-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-11-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310120013394.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310120013394.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-10</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-10-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;大腿内外侧肌训练器，外侧，5挡，68kg，30次&lt;/p&gt;
&lt;p&gt;胸部，32次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310102237247.png&#34; alt=&#34;image-20231010223658629&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="无氧">无氧</h2>
<p>大腿内外侧肌训练器，外侧，5挡，68kg，30次</p>
<p>胸部，32次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310102237247.png" alt="image-20231010223658629" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>《宝贵的人生建议》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%AE%9D%E8%B4%B5%E7%9A%84%E4%BA%BA%E7%94%9F%E5%BB%BA%E8%AE%AE/</link>
      <pubDate>Sun, 08 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%AE%9D%E8%B4%B5%E7%9A%84%E4%BA%BA%E7%94%9F%E5%BB%BA%E8%AE%AE/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082339998.png&#34; alt=&#34;image-20231008233928960&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h2 id=&#34;中文版独家40条人生建议&#34;&gt;中文版独家40条人生建议&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对一个东西最好的批评是做出新东西来替代它。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;毫不犹豫地自我投资——花钱上课，学习新技能。这些不起眼的投资，能产生丰厚的回报。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;对已经发生的事进行假设，是浪费时间。对未来进行假设，则大有裨益。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2&#34;&gt;2&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;大多数争论其实跟争论本身毫无关系。所以在大多数情况下，人们无法通过争论来赢得争论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功最可靠的方法，是你自己定义成功。先射箭，然后在射中的地方，画一个靶心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大量阅读历史，你就会明白过去发生过多少怪事；这样，对于未来的怪事，你将见怪不怪。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;重要的事，通常不紧急，紧急的事，通常不重要。要完成重要的事，就不要操之过急。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4&#34;&gt;4&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;你没喜欢每一个人的义务，你有厌恶任何一个人的自由。但对每个人，你都要给予基本的尊重，包括你厌恶的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;单靠自己，你无法真正成为你自己。你无法单枪匹马地成为一个独树一帜的人。这是一个悖论，如果你想变得独一无二，你需要世界上所有其他人的帮助。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个成功，都有某种不能用金钱衡量的成本。要追求成功，就必须心甘情愿地付出成本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;快速地失败。频繁地失败。从失败中吸取教训。如果你能不断地从失败中成长，失败就不是耻辱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你能做的最利己的事，就是慷慨。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1-1&#34;&gt;1&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;当你原谅别人时，对方可能没有察觉，但你会释怀。宽恕不是为了别人，宽恕是我们给自己的礼物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你“做不了”某件事，那可能很尴尬。但如果你正在“学着做”某件事，那就是令人敬佩的。只需小小几步，你就能跨越“不能”和“学习”之间的界线。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要用别人的尺子丈量自己的人生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个很有价值的年度目标是深入了解一门学科。一年之后你会惊叹，一年前你是多么无知。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2-1&#34;&gt;2&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;痛苦总是不可避免的。是否为痛苦所折磨，则是人的选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;运动 +多样化饮食=健康。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要通过借债来购买价值不断贬损的东西。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解自身的好方法是，认真地思考他人身上让你生气的地方。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设定一个雄心勃勃的目标有这样的好处：能把标准定得很高。这样一来，即使你努力后没实现目标，你也会实现超出一般水平的成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学习的最好方法是，试着把你会的东西教给别人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在谈判中获得对方同意的最佳途径是，要真正理解，同意对对方意味着什么。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;伟大的秘诀：每年变得比去年好一点点，年复一年。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你可以选择今天不生气。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-1&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;不要做最好的。做唯一的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人都害羞。其他人在等你做自我介绍；他们在等你给他们发邮件；他们在等你约他们出去。不要犹豫，去做吧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你越对别人感兴趣，别人就越觉得你有趣。要让自己变得有趣，就要先对别人感兴趣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;别人拒绝你时，不要觉得被冒犯。想想看，他们和你一样：诸事繁忙，心烦意乱。过段时间再尝试。第二次请求成功的概率，高得惊人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;准时代表着尊重。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为领导者，要让别人知道你对他们的期望，这种期望可能超过他们对自身的期望。为他们提供一个能让他们进阶的声誉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要想把一件事情做好，去做就是。要想做到卓越，就要重复做，日复一日地做。要打造精品就要执着地做下去。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4-1&#34;&gt;4&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;缩减任务清单的方法是问自己：“假如这件事没做成，将会发生的最坏的情况是什么？”删除其他任务，只留下那些预防灾难发生的任务。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对自己犯的错误承担责任，是提升一个人境界的最好方式。如果你把事情搞砸了，就坦率承认。勇于承担责任，你会变得无比强大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;怨恨是一种诅咒，它不会影响对方，只会伤害自己。放下怨恨，就像它是毒药。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“不”是一个可以接受的回答，即使是没有理由的“不”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;慷慨一些，再慷慨一些。没有人在临终时后悔给予太多。做墓地里最富有的人没有任何意义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;危机袭来时，不要浪费。没有问题，就没有进步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你绝不会真的想要出名。随便找一个名人的传记读一下，你就知道了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;伴随着请求而来的赞美，不是赞美。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你是什么样的人，取决于你做什么。不在于你说什么，不在于你信什么，给谁投票，而在于，你把时间花在什么上面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论在什么年纪，你都可以问自己：“为什么我还在做这件事？”对这个问题，你需要进行很好的回答。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最重要的事，就是始终把最重要的事，当作最重要的事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不为过去的自己感到难堪，你就可能还没有长大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在内部争吵中，不要用“你”这个字。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要让别人的紧急事项成为你的紧急事项。事实上，不要受制于任何急迫感。聚焦于重要的事情。急迫性是暴君。重要才是王道。不要被急迫感挟制！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;5&#34;&gt;5&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;当失败在你预料之中时，那就不是失败。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做没有人能看明白的事情，能带来最大的回报。如果有可能，就去做一些还没有名字的工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对除了爱情之外的所有事情，一开始都要制定退出策略。为结局做好准备。几乎所有事都易进难出。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要试图让别人喜欢你，要让他们尊重你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成熟的基础：那不是你的错，不代表那不是你的责任。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;预测未来之所以难，在于你要忘记对未来的预期。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人的时间都是有限的，每个人的时间都在不断减少。你能用钱获得的最高杠杆，就是买别人的时间。在可能的情况下，要聘请员工，外包工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;恐惧让人做蠢事，所以不要相信人们在恐惧中做出的任何事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不刻意寻求他人的认同，你就拥有无限力量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你热爱从事的事应该完全适合你，但你的人生目标应该超越你。要为远远超越自我的事业而努力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功的秘诀：少做承诺，多做实事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;工作是为了成就自己，而不是获取利益。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082339998.png" alt="image-20231008233928960" style="zoom:50%;" />
<h2 id="中文版独家40条人生建议">中文版独家40条人生建议</h2>
<ol>
<li>
<p>对一个东西最好的批评是做出新东西来替代它。</p>
</li>
<li>
<p>毫不犹豫地自我投资——花钱上课，学习新技能。这些不起眼的投资，能产生丰厚的回报。</p>
</li>
</ol>
<h2 id="1">1</h2>
<ol>
<li>对已经发生的事进行假设，是浪费时间。对未来进行假设，则大有裨益。</li>
</ol>
<h2 id="2">2</h2>
<ol>
<li>
<p>大多数争论其实跟争论本身毫无关系。所以在大多数情况下，人们无法通过争论来赢得争论。</p>
</li>
<li>
<p>成功最可靠的方法，是你自己定义成功。先射箭，然后在射中的地方，画一个靶心。</p>
</li>
<li>
<p>大量阅读历史，你就会明白过去发生过多少怪事；这样，对于未来的怪事，你将见怪不怪。</p>
</li>
</ol>
<h2 id="3">3</h2>
<ol>
<li>重要的事，通常不紧急，紧急的事，通常不重要。要完成重要的事，就不要操之过急。</li>
</ol>
<h2 id="4">4</h2>
<ol>
<li>
<p>你没喜欢每一个人的义务，你有厌恶任何一个人的自由。但对每个人，你都要给予基本的尊重，包括你厌恶的人。</p>
</li>
<li>
<p>单靠自己，你无法真正成为你自己。你无法单枪匹马地成为一个独树一帜的人。这是一个悖论，如果你想变得独一无二，你需要世界上所有其他人的帮助。</p>
</li>
<li>
<p>每个成功，都有某种不能用金钱衡量的成本。要追求成功，就必须心甘情愿地付出成本。</p>
</li>
<li>
<p>快速地失败。频繁地失败。从失败中吸取教训。如果你能不断地从失败中成长，失败就不是耻辱。</p>
</li>
<li>
<p>你能做的最利己的事，就是慷慨。</p>
</li>
</ol>
<h2 id="1-1">1</h2>
<ol>
<li>
<p>当你原谅别人时，对方可能没有察觉，但你会释怀。宽恕不是为了别人，宽恕是我们给自己的礼物。</p>
</li>
<li>
<p>如果你“做不了”某件事，那可能很尴尬。但如果你正在“学着做”某件事，那就是令人敬佩的。只需小小几步，你就能跨越“不能”和“学习”之间的界线。</p>
</li>
<li>
<p>不要用别人的尺子丈量自己的人生。</p>
</li>
<li>
<p>一个很有价值的年度目标是深入了解一门学科。一年之后你会惊叹，一年前你是多么无知。</p>
</li>
</ol>
<h2 id="2-1">2</h2>
<ol>
<li>
<p>痛苦总是不可避免的。是否为痛苦所折磨，则是人的选择。</p>
</li>
<li>
<p>运动 +多样化饮食=健康。</p>
</li>
<li>
<p>不要通过借债来购买价值不断贬损的东西。</p>
</li>
<li>
<p>了解自身的好方法是，认真地思考他人身上让你生气的地方。</p>
</li>
<li>
<p>设定一个雄心勃勃的目标有这样的好处：能把标准定得很高。这样一来，即使你努力后没实现目标，你也会实现超出一般水平的成功。</p>
</li>
<li>
<p>学习的最好方法是，试着把你会的东西教给别人。</p>
</li>
<li>
<p>在谈判中获得对方同意的最佳途径是，要真正理解，同意对对方意味着什么。</p>
</li>
<li>
<p>伟大的秘诀：每年变得比去年好一点点，年复一年。</p>
</li>
<li>
<p>你可以选择今天不生气。</p>
</li>
</ol>
<h2 id="3-1">3</h2>
<ol>
<li>
<p>不要做最好的。做唯一的。</p>
</li>
<li>
<p>每个人都害羞。其他人在等你做自我介绍；他们在等你给他们发邮件；他们在等你约他们出去。不要犹豫，去做吧。</p>
</li>
<li>
<p>你越对别人感兴趣，别人就越觉得你有趣。要让自己变得有趣，就要先对别人感兴趣。</p>
</li>
<li>
<p>别人拒绝你时，不要觉得被冒犯。想想看，他们和你一样：诸事繁忙，心烦意乱。过段时间再尝试。第二次请求成功的概率，高得惊人。</p>
</li>
<li>
<p>准时代表着尊重。</p>
</li>
<li>
<p>作为领导者，要让别人知道你对他们的期望，这种期望可能超过他们对自身的期望。为他们提供一个能让他们进阶的声誉。</p>
</li>
<li>
<p>要想把一件事情做好，去做就是。要想做到卓越，就要重复做，日复一日地做。要打造精品就要执着地做下去。</p>
</li>
</ol>
<h2 id="4-1">4</h2>
<ol>
<li>
<p>缩减任务清单的方法是问自己：“假如这件事没做成，将会发生的最坏的情况是什么？”删除其他任务，只留下那些预防灾难发生的任务。</p>
</li>
<li>
<p>对自己犯的错误承担责任，是提升一个人境界的最好方式。如果你把事情搞砸了，就坦率承认。勇于承担责任，你会变得无比强大。</p>
</li>
<li>
<p>怨恨是一种诅咒，它不会影响对方，只会伤害自己。放下怨恨，就像它是毒药。</p>
</li>
<li>
<p>“不”是一个可以接受的回答，即使是没有理由的“不”。</p>
</li>
<li>
<p>慷慨一些，再慷慨一些。没有人在临终时后悔给予太多。做墓地里最富有的人没有任何意义。</p>
</li>
<li>
<p>危机袭来时，不要浪费。没有问题，就没有进步。</p>
</li>
<li>
<p>你绝不会真的想要出名。随便找一个名人的传记读一下，你就知道了。</p>
</li>
<li>
<p>伴随着请求而来的赞美，不是赞美。</p>
</li>
<li>
<p>你是什么样的人，取决于你做什么。不在于你说什么，不在于你信什么，给谁投票，而在于，你把时间花在什么上面。</p>
</li>
<li>
<p>无论在什么年纪，你都可以问自己：“为什么我还在做这件事？”对这个问题，你需要进行很好的回答。</p>
</li>
<li>
<p>最重要的事，就是始终把最重要的事，当作最重要的事。</p>
</li>
<li>
<p>如果你不为过去的自己感到难堪，你就可能还没有长大。</p>
</li>
<li>
<p>在内部争吵中，不要用“你”这个字。</p>
</li>
<li>
<p>不要让别人的紧急事项成为你的紧急事项。事实上，不要受制于任何急迫感。聚焦于重要的事情。急迫性是暴君。重要才是王道。不要被急迫感挟制！</p>
</li>
</ol>
<h2 id="5">5</h2>
<ol>
<li>
<p>当失败在你预料之中时，那就不是失败。</p>
</li>
<li>
<p>做没有人能看明白的事情，能带来最大的回报。如果有可能，就去做一些还没有名字的工作。</p>
</li>
<li>
<p>对除了爱情之外的所有事情，一开始都要制定退出策略。为结局做好准备。几乎所有事都易进难出。</p>
</li>
<li>
<p>不要试图让别人喜欢你，要让他们尊重你。</p>
</li>
<li>
<p>成熟的基础：那不是你的错，不代表那不是你的责任。</p>
</li>
<li>
<p>预测未来之所以难，在于你要忘记对未来的预期。</p>
</li>
<li>
<p>每个人的时间都是有限的，每个人的时间都在不断减少。你能用钱获得的最高杠杆，就是买别人的时间。在可能的情况下，要聘请员工，外包工作。</p>
</li>
<li>
<p>恐惧让人做蠢事，所以不要相信人们在恐惧中做出的任何事。</p>
</li>
<li>
<p>如果你不刻意寻求他人的认同，你就拥有无限力量。</p>
</li>
<li>
<p>你热爱从事的事应该完全适合你，但你的人生目标应该超越你。要为远远超越自我的事业而努力。</p>
</li>
<li>
<p>成功的秘诀：少做承诺，多做实事。</p>
</li>
<li>
<p>工作是为了成就自己，而不是获取利益。</p>
</li>
<li>
<p>审视别人的弱点很容易，反思自己的弱点很难，但后者的回报要高得多。</p>
</li>
<li>
<p>年轻时，结交比你年长的朋友；年老时，结交比你年轻的朋友。</p>
</li>
<li>
<p>当你弄明白你的人生使命是什么时，你将完成你的人生使命。你的目标是发现自己的目标是什么。这不是一个悖论。这就是人生之路。</p>
</li>
<li>
<p>使用锋利的东西时，始终与之保持距离。</p>
</li>
<li>
<p>当别人告诉你什么地方出问题时，他们通常是对的。当他们告诉你如何解决问题时，他们通常是错的。</p>
</li>
<li>
<p>请求搭车时，让自己显得与对方是相似的人。</p>
</li>
<li>
<p>如果你不能确定自己迫切需要什么，你迫切需要的也许是睡觉。</p>
</li>
<li>
<p>不要管别人怎么看待你，因为他们根本没看你。</p>
</li>
<li>
<p>通过改变行为来改变想法，比通过改变想法来改变行为要容易得多。你寻求什么样的改变，就将其付诸行动。</p>
</li>
<li>
<p>一般而言，不必要时无须多言。</p>
</li>
<li>
<p>任何有价值的事都需要无尽的工作。你无法给工作设定上限，所以你必须给工作时间设限。你唯一能管理的是时间，而不是工作。</p>
</li>
<li>
<p>如果你想超越你心目中的英雄，那就放下自尊心，像学生一样模仿他们，直到你能超越他们。这是所有大师的成功之道。</p>
</li>
<li>
<p>万事不必完美才精彩。特别是婚礼。</p>
</li>
<li>
<p>当你陷入困境时，睡一觉。当你睡觉时，把问题交给你的潜意识。第二天早上你就会得到答案。</p>
</li>
</ol>
<h2 id="6">6</h2>
<ol>
<li>
<p>对待他人的标准不是他们有多坏，而是你有多好。</p>
</li>
<li>
<p>如果你只有目标而没有实现目标的计划，那目标就只是一个梦。</p>
</li>
<li>
<p>要不同凡响，就需要读书。</p>
</li>
<li>
<p>要想成功，就要让别人给你钱；要想富有，就帮助其他人成功。</p>
</li>
<li>
<p>改变世界的是你的行为，而不是你的观点。</p>
</li>
<li>
<p>你不是与一个人结婚，你是与一家人结婚。</p>
</li>
<li>
<p>在大约99%的情况下，正确的时机就是当下。</p>
</li>
<li>
<p>凡事都要有节制，除了你热爱的事。选择几项让你痴迷的兴趣爱好。事实上，要全面节制，以便你能全情投入地去做热爱的事。</p>
</li>
<li>
<p>管理自己时用脑，管理他人时用心。</p>
</li>
</ol>
<h2 id="7">7</h2>
<ol>
<li>
<p>没有人像你一样在意自己的东西。</p>
</li>
<li>
<p>你在“但是”之前说的所有的话，都不重要。</p>
</li>
<li>
<p>双方争执时，找到第三方。</p>
</li>
<li>
<p>努力，无论锻炼、陪伴还是工作，重要的不是数量，而是坚持。坚持每天做一点，比什么都强，这比你偶尔一为重要得多。</p>
</li>
<li>
<p>当你领导时，你真正的工作是培养更多领导者，而不是更多追随者。</p>
</li>
<li>
<p>说话时要自信，如同你是对的，倾听时要仔细，如同你是错的。</p>
</li>
<li>
<p>我们告诉自己的最大谎言是：“我不需要写下来，因为我能记住。”</p>
</li>
<li>
<p>私下批评，公开表扬。</p>
</li>
<li>
<p>不要总犯同样的错误，试着犯些新错误。</p>
</li>
<li>
<p>作为一个成熟的人，衡量你成长的尺度是，你愿意进行多少令人不舒服的谈话。</p>
</li>
</ol>
<h2 id="8">8</h2>
<ol>
<li>
<p>在任何谈判中，你都应该说出最有力的一句话：“你能给出更好的条件吗？”</p>
</li>
<li>
<p>没有“准时”这回事。要么你迟到了，要么你早到了。这是你的选择。</p>
</li>
<li>
<p>艺术创作不是自私的，是为其他人服务的。如果你的创作不表达真实的自己，你就是在欺骗我们。</p>
</li>
<li>
<p>当你犯错误时，要飞快地比受委屈的人更严厉地惩罚自己。令人意外的是，这可以缓解他们的愤怒。</p>
</li>
<li>
<p>学习如何在独处时不孤独。独处是创造力涌现的必要条件。</p>
</li>
<li>
<p>在诸事不顺的日子里做什么，比在顺风顺水的日子里做什么，要重要得多。</p>
</li>
<li>
<p>要变得富有，不需要赚更多钱；首先要做的是，更好地管理已经赚到的钱。</p>
</li>
<li>
<p>在互联网上获得正确答案的最好方式是：贴一个明显错误的答案，然后等着别人纠正你。</p>
</li>
<li>
<p>褒奖好行为，而不是惩罚坏行为，结果会好十倍，特别是在教育儿童和训练动物时。</p>
</li>
<li>
<p>拒绝或回避赞美是不礼貌的。带着感谢接受赞美，即使你认为你不配得到这份赞美。</p>
</li>
<li>
<p>聪明的人，不会只为了金钱而拼命工作。</p>
</li>
<li>
<p>如果你做的事情要躲着别人可能对你没好处。</p>
</li>
<li>
<p>让他人觉得自己很重要；这将让他们开心，也将让你开心。</p>
</li>
<li>
<p>如何对待那些对你没有一点用的人，将成为评判你的标准。</p>
</li>
<li>
<p>我们往往高估一天能完成的事，而低估十年能取得的成就。拿出十年来，你可以成就不可思议的奇迹。坚持长期主义，积小胜为大胜，即使犯了大错误，也可以慢慢改正。</p>
</li>
<li>
<p>让别人知道你记得他们的名字，这样他们就绝不会忘记你的名字。记住名字的诀窍是第一次听到时就在心里重复几遍。</p>
</li>
<li>
<p>最好的工作是一个你不够格的工作，因为它会迫使你挖掘潜力。事实上，要只去应聘那些你不够格的工作。</p>
</li>
<li>
<p>“我现在应该做什么？”要回答这个问题，唯一有效的方式，是先解决另一个问题：“我应该成为什么样的人？”</p>
</li>
<li>
<p>对粗鲁的陌生人彬彬有礼，会让他惊奇。</p>
</li>
<li>
<p>如果你相信每个人最好的一面，那么偶尔被骗，只会付出微小的代价，因为当你相信别人最好的一面时，他们通常待你最好。</p>
</li>
<li>
<p>往前看，关注方向，而不是目的地。保持正确的方向，就会抵达你想去的地方。</p>
</li>
<li>
<p>被认可，即艺术。</p>
</li>
<li>
<p>要脱颖而出，就要感谢让你的生活发生变化的老师。</p>
</li>
</ol>
<h2 id="9">9</h2>
<ol>
<li>
<p>当你陷入困境时，向别人解释你的问题。通常只需要把问题阐述清楚，解决方案就会浮出水面。让“解释问题”成为解决难题的过程的一部分。</p>
</li>
<li>
<p>当被介绍给某人时，要与对方进行眼神交流，并数到四，或者对自己说：“我看到你了。”你们将记住彼此。</p>
</li>
<li>
<p>只需要向团队成员表示你欣赏他们，你的团队就能取得重大的成就，这些成就是你一个人无法企及的。</p>
</li>
<li>
<p>要想取得世俗的成功，可以做一些奇怪的事。让你的怪异成为一种习惯。</p>
</li>
<li>
<p>你的时间和空间是有限的。那些不能再给你带来快乐的东西，要移走、送人、扔掉，给能给你带来快乐的东西腾出时间和空间。</p>
</li>
<li>
<p>不要拿别人的外在与你的内在做比较。</p>
</li>
<li>
<p>有时，第一个想法是最好的，但通常第五个想法才是最好的。排除那些显而易见的想法。试着给自己一个惊喜。</p>
</li>
<li>
<p>别费力气与旧事物斗争，只管建设新事物。</p>
</li>
<li>
<p>刚认识一个人时，要迅速发现他真实的性格，可以观察他在网速极慢时会怎么做。</p>
</li>
<li>
<p>谈判时，不要追求得到更大的蛋糕，而要追求把蛋糕做大。</p>
</li>
<li>
<p>多大的事情让你生气，决定了你的格局有多大。</p>
</li>
</ol>
<h2 id="10">10</h2>
<ol>
<li>
<p>要多做对他人来说是工作、对你来说像玩儿一样的事。</p>
</li>
<li>
<p>如果你想做成一件事，就交给忙碌的人去做。</p>
</li>
<li>
<p>要记住，即使你预期的修复工作花的时间，将三倍于预计时间，最终花的时间，还将是你预期的三倍。</p>
</li>
<li>
<p>模仿他人，是一个很好的起点。模仿自己，是一个令人失望的终点。</p>
</li>
<li>
<p>要注意你把注意力放在哪里。</p>
</li>
<li>
<p>要获得最大的效果，就要聚焦于你最大的机会，而不是你最大的问题。</p>
</li>
<li>
<p>经常给孩子读书是他们能受的最好的教育。</p>
</li>
<li>
<p>有多少人不欣赏你或你的工作并不重要。有多少人欣赏，是唯一重要的事情。</p>
</li>
<li>
<p>人生之路上，不要试图避免意外，而要直面它。</p>
</li>
<li>
<p>不要在饿的时候去买吃的。</p>
</li>
<li>
<p>客户抱怨时，即使不是你的错。也要先道歉，然后问：“我们可以怎么做来解决这个问题？”要假设客户是对的，这是企业发展需要付出的微小成本。</p>
</li>
<li>
<p>一种值得培养的超能力是从你不喜欢的人那里学习。这就是“谦逊”。这是一种勇气，让愚蠢、可恨、疯狂、刻薄的人教你一些东西，因为他们尽管有人格上的缺陷，但他们都知道一些你不知道的东西。</p>
</li>
<li>
<p>对于你喜爱的每一件好东西，都要问问自己，喜爱到什么程度最合适。</p>
</li>
<li>
<p>做出明智决定的诀窍：站在25年后的视角上，评估今天的选择。未来的你会怎么想？</p>
</li>
<li>
<p>专注于你喜欢的东西，而不是一味贬损你讨厌的东西，你会变得更好，也会让别人变得更好。人生短暂，把注意力集中在美好的事物上。</p>
</li>
</ol>
<h2 id="11">11</h2>
<ol>
<li>
<p>不快乐源自想要别人拥有的东西。快乐源自想要自己已经拥有的东西。</p>
</li>
<li>
<p>注意和谁在一起时你感觉最好。多和他们在一起。</p>
</li>
<li>
<p>你在工作之外做的事，可能成为你真正的工作。</p>
</li>
<li>
<p>你能为孩子做的最好的事就是爱你的配偶。</p>
</li>
<li>
<p>能从别人的角度看待问题，你就能在世界上畅行无阻。这种视角转变能带来发自内心的同理心。它还赋予你说服他人的能力，这是伟大设计的关键。掌握从他人视角看问题的能力，可以帮你打开无数紧闭的大门。</p>
</li>
<li>
<p>五年后你会想，假如当初开始行动就好了。</p>
</li>
<li>
<p>你无法改变过去，但你可以改变对过去的叙述。重要的不是你经历了什么，而是你怎么对待这些事。</p>
</li>
<li>
<p>美好的旅行，是向着兴趣出发，而不是朝着一个地方前进。找寻你的激情所在，而不是奔向某个地方。</p>
</li>
<li>
<p>孩子犯错时，让他自己选择惩罚方式。他会比你更严厉。</p>
</li>
<li>
<p>在人生的每个关键时刻，都要完全接受这个问题：“可能发生的最坏情况是什么？”演练你对“最坏”情况的反应，等那种情况发生时，那就会像是一场冒险，而不至于让你裹足不前。</p>
</li>
<li>
<p>创作一个准备扔掉的东西。写出一本好书的唯一方法是先写一本糟糕的书。电影、歌曲、家具，任何东西，都是如此。</p>
</li>
<li>
<p>对愤怒的正确回应不是愤怒。当你看到别人愤怒时，你看到的是他们的痛苦。对愤怒的正确回应是同情。</p>
</li>
<li>
<p>当你找到自己真正喜欢的事时，慢慢做，慢慢享受。</p>
</li>
<li>
<p>有攻击性的狗不会叫，但会咬人。</p>
</li>
<li>
<p>结局几乎总是更好的事的开端。</p>
</li>
<li>
<p>给予，你不会变穷。不给予，你不可能变富。</p>
</li>
<li>
<p>为了更好地演讲，看一段自己讲话的录像。这会让你震惊，也让你痛苦，但这是一条有效的改进途径。</p>
</li>
<li>
<p>担忧毫无意义。可以肯定的是，你担心的事，99%都不会发生。</p>
</li>
<li>
<p>你以为你看清了未来，只是因为你看到的其实是眼前。</p>
</li>
<li>
<p>没有完美，只有进步。完成胜过完美。</p>
</li>
<li>
<p>如果你相信任何挫折都只是暂时的，你就选择了幸运。</p>
</li>
<li>
<p>如果你做的事没有任何人能做，你求职时就不需要简历。</p>
</li>
<li>
<p>读你最喜欢的作家读过的书。</p>
</li>
<li>
<p>当你无法决定时，问自己：“哪个选择日后带来的回报比眼前多？”轻松的选择马上就有回报。最好的选择最后带来回报。</p>
</li>
<li>
<p>头脑中的想法总是完美的，但完美的东西从来都不真实。马上把想法记下来，画出草图来，或者做出纸板原型来。这样，你的想法会更接近真实，因为它不完美。</p>
</li>
<li>
<p>好奇心能杀死确定性。好奇心越强，你的可能性就越多。</p>
</li>
<li>
<p>衡量财富的标准，不是金钱能买到的东西，而是金钱买不到的东西。</p>
</li>
<li>
<p>要从错误中学习，先从嘲笑自己的错误开始。</p>
</li>
<li>
<p>你精心培养的人离去，是令人遗憾的；更糟糕的是，你不培养他们，他们却留下来。</p>
</li>
<li>
<p>当你让别人等你时，他们就开始想到你所有的缺点。</p>
</li>
<li>
<p>倾听的目的并不是回答，而是听出弦外之音。</p>
</li>
<li>
<p>你犯的上一个错误，是你最好的老师。</p>
</li>
<li>
<p>幸福的最大杀手就是比较。如果非要比较，就和昨天的自己比较。</p>
</li>
<li>
<p>想要成功一次，就专注于结果；想要不断成功，就专注于创造结果的过程。</p>
</li>
<li>
<p>你的理想伴侣不是永远和你没有分歧的人，而是你乐于与之意见相左的人。</p>
</li>
<li>
<p>开阔的心胸是通往开放思想最直接的路径。</p>
</li>
<li>
<p>如果你限于人生困境，去一个你从未听说过的地方旅行。</p>
</li>
<li>
<p>改变他人观点最有力的做法是对其观点感到好奇。</p>
</li>
<li>
<p>如果你不关心你的手下，他们也就不会关心你的使命。</p>
</li>
<li>
<p>要加快会议速度，就必须规定，发言者必须说点其他参会人不知道的东西。</p>
</li>
<li>
<p>独行快，众行远。</p>
</li>
<li>
<p>每周留出一天，不工作，不做生意，不赚钱。把这一天称为“放空日”（或叫别的名字）。利用这一天休息、充电、思考人生中最重要的事。令人意外的是，你将发现过这个放空日是你一周里做的最有成效的事。</p>
</li>
<li>
<p>选择那些能带来更多选项的选项。</p>
</li>
<li>
<p>做事要以终为始。碗碟架堆满后，再想调整，就无从下手了。</p>
</li>
<li>
<p>当你陷入困境时，把可能行不通的办法列一个长长的单子。这份单子上会冒出一颗种子，这颗种子会长成一个让你走出困境的解决方案。</p>
</li>
<li>
<p>不管你多大，现在，就是你的黄金岁月。美好的事情会带来金色的回忆，糟糕的事情会带来宝贵的教训。</p>
</li>
<li>
<p>缓解愤怒最有效的方法是给自己一点时间。</p>
</li>
<li>
<p>防止衰老的良方主要是保持好奇心。</p>
</li>
<li>
<p>生活忙碌，但别忘了艺术。</p>
</li>
<li>
<p>人生中只有很少的遗憾，是遗憾自己做了什么。几乎所有的遗憾都是遗憾自己没有做什么。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-08</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 08 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-08-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;大腿内外侧肌训练器，外侧，5挡，68kg，50次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082249893.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="无氧">无氧</h2>
<p>大腿内外侧肌训练器，外侧，5挡，68kg，50次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082249893.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>关于ARTS</title>
      <link>https://dstweihao.cn/posts/arts/%E5%85%B3%E4%BA%8Earts/</link>
      <pubDate>Sun, 08 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/%E5%85%B3%E4%BA%8Earts/</guid>
      <description>&lt;p&gt;&lt;code&gt;ARTS&lt;/code&gt; 是陈皓在课程《左耳听风》中提出的原创概念，以周为单位，循环反复的学习活动。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Algorithm&lt;/code&gt;： 在 &lt;a href=&#34;https://leetcode.cn/&#34;&gt;LeetCode&lt;/a&gt; 上做一道算法题，这一步主要是为了编程的训练和学习，如果不训练，看再多的书籍也是没有用的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Review&lt;/code&gt;： 读一篇英文文章，主要是为了训练英文，英文能力不行，无法成为技术高手。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Tips&lt;/code&gt;： 分享一个小技术，可以总结和归纳日常生活中的知识点。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Share&lt;/code&gt;： 分享一个观点，为了让你建立影响力，能够输出价值观。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310161002811.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><code>ARTS</code> 是陈皓在课程《左耳听风》中提出的原创概念，以周为单位，循环反复的学习活动。</p>
<p><code>Algorithm</code>： 在 <a href="https://leetcode.cn/">LeetCode</a> 上做一道算法题，这一步主要是为了编程的训练和学习，如果不训练，看再多的书籍也是没有用的。</p>
<p><code>Review</code>： 读一篇英文文章，主要是为了训练英文，英文能力不行，无法成为技术高手。</p>
<p><code>Tips</code>： 分享一个小技术，可以总结和归纳日常生活中的知识点。</p>
<p><code>Share</code>： 分享一个观点，为了让你建立影响力，能够输出价值观。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310161002811.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-10-07</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 07 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-10-07-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;坐姿腿屈伸训练器，75kg，50次&lt;/p&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310072305821.png&#34; alt=&#34;image-20231007230530652&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="无氧">无氧</h2>
<p>坐姿腿屈伸训练器，75kg，50次</p>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310072305821.png" alt="image-20231007230530652" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>《共产党宣言：纪念版》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%85%B1%E4%BA%A7%E5%85%9A%E5%AE%A3%E8%A8%80%E7%BA%AA%E5%BF%B5%E7%89%88/</link>
      <pubDate>Wed, 04 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%85%B1%E4%BA%A7%E5%85%9A%E5%AE%A3%E8%A8%80%E7%BA%AA%E5%BF%B5%E7%89%88/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082335028.png&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h2 id=&#34;编者引言&#34;&gt;编者引言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;《宣言》运用历史唯物主义原理，指出原始土地公有制解体以来的全部历史都是阶级斗争的历史，即社会发展各个阶段上被剥削阶级和剥削阶级之间、被统治阶级和统治阶级之间斗争的历史。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人的自由发展是一切人的自由发展的条件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1888年英文版序言&#34;&gt;1888年英文版序言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;每一历史时代主要的经济生产方式和交换方式以及必然由此产生的社会结构，是该时代政治的和精神的历史所赖以确立的基础，并且只有从这一基础出发，这一历史才能得到说明；因此人类的全部历史（从土地公有的原始氏族社会解体以来）都是阶级斗争的历史，即剥削阶级和被剥削阶级之间、统治阶级和被压迫阶级之间斗争的历史；这个阶级斗争的历史包括有一系列发展阶段，现在已经达到这样一个阶段，即被剥削被压迫的阶级（无产阶级），如果不同时使整个社会一劳永逸地摆脱一切剥削、压迫以及阶级差别和阶级斗争，就不能使自己从进行剥削和统治的那个阶级（资产阶级）的奴役下解放出来。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;1890年德文版序言&#34;&gt;1890年德文版序言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;全世界的无产者现在真正联合起来了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;共产党宣言&#34;&gt;共产党宣言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;至今一切社会的历史都是阶级斗争的历史。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;资产阶级用来推翻封建制度的武器，现在却对准资产阶级自己了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;资产阶级不仅锻造了置自身于死地的武器；它还产生了将要运用这种武器的人——现代的工人，即无产者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这些不得不把自己零星出卖的工人，像其他任何货物一样，也是一种商品，所以他们同样地受到竞争的一切变化、市场的一切波动的影响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;法律、道德、宗教在他们看来全都是资产阶级偏见，隐藏在这些偏见后面的全都是资产阶级利益。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无产者没有什么自己的东西必须加以保护，他们必须摧毁至今保护和保障私有财产的一切。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使无产阶级形成为阶级，推翻资产阶级的统治，由无产阶级夺取政权。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;消灭私有制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有人责备我们共产党人，说我们要消灭个人挣得的、自己劳动得来的财产，要消灭构成个人的一切自由、活动和独立的基础的财产。好一个劳动得来的、自己挣得的、自己赚来的财产！你们说的是资产阶级财产出现以前的那种小资产阶级的、小农的财产吗？那种财产用不着我们去消灭，工业的发展已经把它消灭了，而且每天都在消灭它。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在共产主义社会里，已经积累起来的劳动只是扩大、丰富和提高工人的生活的一种手段。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产主义并不剥夺任何人占有社会产品的权力，它只剥夺利用这种占有去奴役他人劳动的权力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一旦没有资本，也就不再有雇佣劳动了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;资产者唯恐失去的那种教育，对绝大多数人来说是把人训练成机器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你们的观念本身是资产阶级的生产关系和所有制关系的产物，正像你们的法不过是被奉为法律的你们这个阶级的意志一样，而这种意志的内容是由你们这个阶级的物质生活条件来决定的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你们的利己观念使你们把自己的生产关系和所有制关系从历史的、在生产过程中是暂时的关系变成永恒的自然规律和理性规律，这种利己观念是你们和一切灭亡了的统治阶级所共有的。谈到古代所有制的时候你们所能理解的，谈到封建所有制的时候你们所能理解的，一谈到资产阶级所有制你们就再也不能理解了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人对人的剥削一消灭，民族对民族的剥削就会随之消灭。民族内部的阶级对立一消失，民族之间的敌对关系就会随之消失。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任何一个时代的统治思想始终都不过是统治阶级的思想。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在旧社会内部已经形成了新社会的因素，旧思想的瓦解是同旧生活条件的瓦解步调一致的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不管阶级对立具有什么样的形式，社会上一部分人对另一部分人的剥削却是过去各个世纪所共有的事实。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当阶级差别在发展进程中已经消失而全部生产集中在联合起来的个人的手里的时候，公共权力就失去政治性质。原来意义上的政治权力，是一个阶级用以压迫另一个阶级的有组织的暴力。如果说无产阶级在反对资产阶级的斗争中一定要联合为阶级，通过革命使自己成为统治阶级，并以统治阶级的资格用暴力消灭旧的生产关系，那么它在消灭这种生产关系的同时，也就消灭了阶级对立的存在条件，消灭了阶级本身的存在条件，从而消灭了它自己这个阶级的统治。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人的自由发展是一切人的自由发展的条件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为了激起同情，贵族们不得不装模作样，似乎他们已经不关心自身的利益，只是为了被剥削的工人阶级的利益才去写对资产阶级的控诉书。他们用来泄愤的手段是：唱唱诅咒他们的新统治者的歌，并向他叽叽咕咕地说一些或多或少凶险的预言。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基督教的社会主义，只不过是僧侣用来使贵族的怨愤神圣化的圣水罢了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自由贸易！为了工人阶级的利益；保护关税！为了工人阶级的利益；单人牢房！为了工人阶级的利益。这才是资产阶级的社会主义唯一真实的结论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;批判的空想的社会主义和共产主义的意义，是同历史的发展成反比的。阶级斗争越发展和越具有确定的形式，这种超乎阶级斗争的幻想，这种反对阶级斗争的幻想，就越失去任何实践意义和任何理论根据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产党人到处都支持一切反对现存的社会制度和政治制度的革命运动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产党人不屑于隐瞒自己的观点和意图。他们公开宣布：他们的目的只有用暴力推翻全部现存的社会制度才能达到。让统治阶级在共产主义革命面前发抖吧。无产者在这个革命中失去的只是锁链。他们获得的将是整个世界。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全世界无产者，联合起来！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;附录&#34;&gt;附录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;第二个问题：共产主义者的目标是什么？答：建立这样的社会：使社会的每一个成员都能完全自由地发展和发挥他的全部才能和力量，并且不会因此而损害这个社会的基本条件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无产阶级是完全靠自己的劳动39而不是靠任何一种资本的利润为生的社会阶级；因而这一阶级的祸福和存亡取决于工商业繁荣期和萧条期的更替，一句话，取决于竞争的波动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无产阶级是由于采用机器而产生的，这些机器发明于上个世纪中期，其中最重要的是蒸汽机、纺纱机和机械织布机。这些价钱很贵、因而只有富人才买得起的机器，挤掉了当时的工人，因为用机器生产商品比原来的工人用不完善的纺车和织布机生产商品又便宜又快。这样一来，机器就使工业全部落到大资本家手里，并且使工人仅有的一点薄产，主要是他们的工具、织布机等，变得一钱不值，于是资本家就占有了一切，而工人却一无所有。从此就实行了工厂制度。当资本家看出这样做对他们是何等有利时，他们就力图把工厂制度扩展到越来越多的劳动部门。他们使工人之间的分工越来越细，于是，从前完成整件工作的每个工人，现在只做这件工作的一部分。这种简化的劳动使产品生产得更快，因而也更便宜。这时人们才发现：几乎在每一个劳动部门都可以使用机器。一个劳动部门一旦照工厂方式来经营，它就像纺纱业和织布业一样落到了大资本家的手里，工人也就失掉了最后的一点独立性。我们渐渐可以看到，几乎所有的劳动部门都照工厂方式进行经营了。于是，从前的中间等级，特别是小手工业师傅日益破产，工人原来的状况发生了根本的变化，产生了两个逐渐并吞所有其他阶级的新阶级。这两个阶级就是：一、大资本家阶级，他们在所有先进国家里几乎独占了生活资料和生产这些生活资料的手段（机器、工厂、工场等）。这就是资产者阶级或资产阶级。二、完全没有财产的阶级，他们仅仅为了换得生活资料，不得不把自己的劳动出卖给第一个阶级，即资产者。由于在这种劳动交易中买卖双方并不是平等的，而是资产者处于有利地位，所以无财产者不得不接受资产者提出的苛刻条件。这个依赖于资产者的阶级叫做无产者阶级或无产阶级。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;奴隶一次就被完全卖掉了。无产者必须一天一天、一小时一小时地出卖自己。奴隶是某一个主人的财产，而且正是由于这个原因，他的生活不管怎样坏，总还是有保障的。而无产者可以说是整个资产者阶级的奴隶，不是某一个主人的奴隶，如果没有人需要他的劳动，就没有人购买它，因而他的生活是没有保障的。奴隶被看做物，不被看做市民社会的成员。无产者被承认是人，是市民社会的成员。因此奴隶能够比无产者生活得好些，但无产者处于更高的发展阶段。奴隶通过成为无产者，并在所有的私有制关系中只要废除奴隶制关系就能解放自己。无产者只有废除一切私有制才能解放自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实行财产公有的第一个基本条件是通过民主的国家制度达到无产阶级的政治解放。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;迄今一切宗教都是单个民族或多个民族的历史发展阶段的表现。而共产主义却是使一切现有宗教成为多余并使之消灭的发展阶段。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;弗恩格斯-共产主义原理&#34;&gt;弗·恩格斯 共产主义原理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;这种新的社会制度首先必须剥夺相互竞争的个人对工业和一切生产部门的经营权，而代之以所有这些生产部门由整个社会来经营，就是说，为了共同的利益、按照共同的计划、在社会全体成员的参加下来经营。这样，这种新的社会制度将消灭竞争，而代之以联合。因为个人经营工业的必然结果是私有制，竞争不过是单个私有者经营工业的一种方式，所以私有制同工业的个体经营和竞争是分不开的。因此私有制也必须废除，而代之以共同使用全部生产工具和按照共同的协议来分配全部产品，即所谓财产公有。废除私有制甚至是工业发展必然引起的改造整个社会制度的最简明扼要的概括。所以共产主义者完全正确地强调废除私有制是自己的主要要求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;革命不能故意地、随心所欲地制造，革命在任何地方和任何时候都是完全不以单个政党和整个阶级的意志和领导为转移的各种情况的必然结果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;弗恩格斯-关于共产主义者同盟的历史&#34;&gt;弗·恩格斯 关于共产主义者同盟的历史&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;每当问题涉及具体批判现存社会，即分析经济事实的时候，他们的手工业者旧有的成见对于他们就成为一种障碍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现代被压迫阶级即无产阶级如果不同时使整个社会摆脱阶级划分，从而摆脱阶级斗争，就不能争得自身的解放。因此，共产主义现在已经不再意味着凭空设想一种尽可能完善的社会理想，而是意味着深入理解无产阶级所进行的斗争的性质、条件以及由此产生的一般目的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;马克思恩格斯关于共产党宣言的重要论述摘编&#34;&gt;马克思恩格斯关于《共产党宣言》的重要论述摘编&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;问题并不在于实现某种空想的体系，而在于要自觉地参加我们眼前发生的改造社会的历史过程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这些教育者的首要原则就是拿自己没有学会的东西教给别人。党完全可以不要这种教育者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;指出所犯的每一个错误、遭到的每一次失败都是原来纲领中的各种错误理论观点的必然结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们应当在当前的运动中代表运动的未来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产党人不是同其他工人政党相对立的特殊政党。他们没有任何同整个无产阶级的利益不同的利益。他们不提出任何特殊的原则，用以塑造无产阶级的运动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产党人为工人阶级的最近的目的和利益而斗争，但是他们在当前的运动中同时代表运动的未来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对我们的直接的好处或对国家朝着经济革命和政治革命的方向前进的历史发展的好处是无可争辩的、值得争取的。而所有这一切又必须以党的无产阶级性质不致因此发生问题为前提。对我来说，这是绝对的界限。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代替那存在着阶级和阶级对立的资产阶级旧社会的，将是这样一个联合体，在那里，每个人的自由发展是一切人的自由发展的条件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生产资料归社会所有。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;共产主义者同盟章程&#34;&gt;共产主义者同盟章程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;推翻资产阶级，建立无产阶级统治，消灭以阶级对立为基础的资产阶级旧社会，建立没有阶级、没有私有制的新社会。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082335028.png" style="zoom:50%;" />
<h2 id="编者引言">编者引言</h2>
<ol>
<li>
<p>《宣言》运用历史唯物主义原理，指出原始土地公有制解体以来的全部历史都是阶级斗争的历史，即社会发展各个阶段上被剥削阶级和剥削阶级之间、被统治阶级和统治阶级之间斗争的历史。</p>
</li>
<li>
<p>每个人的自由发展是一切人的自由发展的条件。</p>
</li>
</ol>
<h2 id="1888年英文版序言">1888年英文版序言</h2>
<ol>
<li>每一历史时代主要的经济生产方式和交换方式以及必然由此产生的社会结构，是该时代政治的和精神的历史所赖以确立的基础，并且只有从这一基础出发，这一历史才能得到说明；因此人类的全部历史（从土地公有的原始氏族社会解体以来）都是阶级斗争的历史，即剥削阶级和被剥削阶级之间、统治阶级和被压迫阶级之间斗争的历史；这个阶级斗争的历史包括有一系列发展阶段，现在已经达到这样一个阶段，即被剥削被压迫的阶级（无产阶级），如果不同时使整个社会一劳永逸地摆脱一切剥削、压迫以及阶级差别和阶级斗争，就不能使自己从进行剥削和统治的那个阶级（资产阶级）的奴役下解放出来。</li>
</ol>
<h2 id="1890年德文版序言">1890年德文版序言</h2>
<ol>
<li>全世界的无产者现在真正联合起来了。</li>
</ol>
<h2 id="共产党宣言">共产党宣言</h2>
<ol>
<li>
<p>至今一切社会的历史都是阶级斗争的历史。</p>
</li>
<li>
<p>资产阶级用来推翻封建制度的武器，现在却对准资产阶级自己了。</p>
</li>
<li>
<p>资产阶级不仅锻造了置自身于死地的武器；它还产生了将要运用这种武器的人——现代的工人，即无产者。</p>
</li>
<li>
<p>这些不得不把自己零星出卖的工人，像其他任何货物一样，也是一种商品，所以他们同样地受到竞争的一切变化、市场的一切波动的影响。</p>
</li>
<li>
<p>法律、道德、宗教在他们看来全都是资产阶级偏见，隐藏在这些偏见后面的全都是资产阶级利益。</p>
</li>
<li>
<p>无产者没有什么自己的东西必须加以保护，他们必须摧毁至今保护和保障私有财产的一切。</p>
</li>
<li>
<p>使无产阶级形成为阶级，推翻资产阶级的统治，由无产阶级夺取政权。</p>
</li>
<li>
<p>消灭私有制。</p>
</li>
<li>
<p>有人责备我们共产党人，说我们要消灭个人挣得的、自己劳动得来的财产，要消灭构成个人的一切自由、活动和独立的基础的财产。好一个劳动得来的、自己挣得的、自己赚来的财产！你们说的是资产阶级财产出现以前的那种小资产阶级的、小农的财产吗？那种财产用不着我们去消灭，工业的发展已经把它消灭了，而且每天都在消灭它。</p>
</li>
<li>
<p>在共产主义社会里，已经积累起来的劳动只是扩大、丰富和提高工人的生活的一种手段。</p>
</li>
<li>
<p>共产主义并不剥夺任何人占有社会产品的权力，它只剥夺利用这种占有去奴役他人劳动的权力。</p>
</li>
<li>
<p>一旦没有资本，也就不再有雇佣劳动了。</p>
</li>
<li>
<p>资产者唯恐失去的那种教育，对绝大多数人来说是把人训练成机器。</p>
</li>
<li>
<p>你们的观念本身是资产阶级的生产关系和所有制关系的产物，正像你们的法不过是被奉为法律的你们这个阶级的意志一样，而这种意志的内容是由你们这个阶级的物质生活条件来决定的。</p>
</li>
<li>
<p>你们的利己观念使你们把自己的生产关系和所有制关系从历史的、在生产过程中是暂时的关系变成永恒的自然规律和理性规律，这种利己观念是你们和一切灭亡了的统治阶级所共有的。谈到古代所有制的时候你们所能理解的，谈到封建所有制的时候你们所能理解的，一谈到资产阶级所有制你们就再也不能理解了。</p>
</li>
<li>
<p>人对人的剥削一消灭，民族对民族的剥削就会随之消灭。民族内部的阶级对立一消失，民族之间的敌对关系就会随之消失。</p>
</li>
<li>
<p>任何一个时代的统治思想始终都不过是统治阶级的思想。</p>
</li>
<li>
<p>在旧社会内部已经形成了新社会的因素，旧思想的瓦解是同旧生活条件的瓦解步调一致的。</p>
</li>
<li>
<p>不管阶级对立具有什么样的形式，社会上一部分人对另一部分人的剥削却是过去各个世纪所共有的事实。</p>
</li>
<li>
<p>当阶级差别在发展进程中已经消失而全部生产集中在联合起来的个人的手里的时候，公共权力就失去政治性质。原来意义上的政治权力，是一个阶级用以压迫另一个阶级的有组织的暴力。如果说无产阶级在反对资产阶级的斗争中一定要联合为阶级，通过革命使自己成为统治阶级，并以统治阶级的资格用暴力消灭旧的生产关系，那么它在消灭这种生产关系的同时，也就消灭了阶级对立的存在条件，消灭了阶级本身的存在条件，从而消灭了它自己这个阶级的统治。</p>
</li>
<li>
<p>每个人的自由发展是一切人的自由发展的条件。</p>
</li>
<li>
<p>为了激起同情，贵族们不得不装模作样，似乎他们已经不关心自身的利益，只是为了被剥削的工人阶级的利益才去写对资产阶级的控诉书。他们用来泄愤的手段是：唱唱诅咒他们的新统治者的歌，并向他叽叽咕咕地说一些或多或少凶险的预言。</p>
</li>
<li>
<p>基督教的社会主义，只不过是僧侣用来使贵族的怨愤神圣化的圣水罢了。</p>
</li>
<li>
<p>自由贸易！为了工人阶级的利益；保护关税！为了工人阶级的利益；单人牢房！为了工人阶级的利益。这才是资产阶级的社会主义唯一真实的结论。</p>
</li>
<li>
<p>批判的空想的社会主义和共产主义的意义，是同历史的发展成反比的。阶级斗争越发展和越具有确定的形式，这种超乎阶级斗争的幻想，这种反对阶级斗争的幻想，就越失去任何实践意义和任何理论根据。</p>
</li>
<li>
<p>共产党人到处都支持一切反对现存的社会制度和政治制度的革命运动。</p>
</li>
<li>
<p>共产党人不屑于隐瞒自己的观点和意图。他们公开宣布：他们的目的只有用暴力推翻全部现存的社会制度才能达到。让统治阶级在共产主义革命面前发抖吧。无产者在这个革命中失去的只是锁链。他们获得的将是整个世界。</p>
</li>
<li>
<p>全世界无产者，联合起来！</p>
</li>
</ol>
<h2 id="附录">附录</h2>
<ol>
<li>
<p>第二个问题：共产主义者的目标是什么？答：建立这样的社会：使社会的每一个成员都能完全自由地发展和发挥他的全部才能和力量，并且不会因此而损害这个社会的基本条件。</p>
</li>
<li>
<p>无产阶级是完全靠自己的劳动39而不是靠任何一种资本的利润为生的社会阶级；因而这一阶级的祸福和存亡取决于工商业繁荣期和萧条期的更替，一句话，取决于竞争的波动。</p>
</li>
<li>
<p>无产阶级是由于采用机器而产生的，这些机器发明于上个世纪中期，其中最重要的是蒸汽机、纺纱机和机械织布机。这些价钱很贵、因而只有富人才买得起的机器，挤掉了当时的工人，因为用机器生产商品比原来的工人用不完善的纺车和织布机生产商品又便宜又快。这样一来，机器就使工业全部落到大资本家手里，并且使工人仅有的一点薄产，主要是他们的工具、织布机等，变得一钱不值，于是资本家就占有了一切，而工人却一无所有。从此就实行了工厂制度。当资本家看出这样做对他们是何等有利时，他们就力图把工厂制度扩展到越来越多的劳动部门。他们使工人之间的分工越来越细，于是，从前完成整件工作的每个工人，现在只做这件工作的一部分。这种简化的劳动使产品生产得更快，因而也更便宜。这时人们才发现：几乎在每一个劳动部门都可以使用机器。一个劳动部门一旦照工厂方式来经营，它就像纺纱业和织布业一样落到了大资本家的手里，工人也就失掉了最后的一点独立性。我们渐渐可以看到，几乎所有的劳动部门都照工厂方式进行经营了。于是，从前的中间等级，特别是小手工业师傅日益破产，工人原来的状况发生了根本的变化，产生了两个逐渐并吞所有其他阶级的新阶级。这两个阶级就是：一、大资本家阶级，他们在所有先进国家里几乎独占了生活资料和生产这些生活资料的手段（机器、工厂、工场等）。这就是资产者阶级或资产阶级。二、完全没有财产的阶级，他们仅仅为了换得生活资料，不得不把自己的劳动出卖给第一个阶级，即资产者。由于在这种劳动交易中买卖双方并不是平等的，而是资产者处于有利地位，所以无财产者不得不接受资产者提出的苛刻条件。这个依赖于资产者的阶级叫做无产者阶级或无产阶级。</p>
</li>
<li>
<p>奴隶一次就被完全卖掉了。无产者必须一天一天、一小时一小时地出卖自己。奴隶是某一个主人的财产，而且正是由于这个原因，他的生活不管怎样坏，总还是有保障的。而无产者可以说是整个资产者阶级的奴隶，不是某一个主人的奴隶，如果没有人需要他的劳动，就没有人购买它，因而他的生活是没有保障的。奴隶被看做物，不被看做市民社会的成员。无产者被承认是人，是市民社会的成员。因此奴隶能够比无产者生活得好些，但无产者处于更高的发展阶段。奴隶通过成为无产者，并在所有的私有制关系中只要废除奴隶制关系就能解放自己。无产者只有废除一切私有制才能解放自己。</p>
</li>
<li>
<p>实行财产公有的第一个基本条件是通过民主的国家制度达到无产阶级的政治解放。</p>
</li>
<li>
<p>迄今一切宗教都是单个民族或多个民族的历史发展阶段的表现。而共产主义却是使一切现有宗教成为多余并使之消灭的发展阶段。</p>
</li>
</ol>
<h2 id="弗恩格斯-共产主义原理">弗·恩格斯 共产主义原理</h2>
<ol>
<li>
<p>这种新的社会制度首先必须剥夺相互竞争的个人对工业和一切生产部门的经营权，而代之以所有这些生产部门由整个社会来经营，就是说，为了共同的利益、按照共同的计划、在社会全体成员的参加下来经营。这样，这种新的社会制度将消灭竞争，而代之以联合。因为个人经营工业的必然结果是私有制，竞争不过是单个私有者经营工业的一种方式，所以私有制同工业的个体经营和竞争是分不开的。因此私有制也必须废除，而代之以共同使用全部生产工具和按照共同的协议来分配全部产品，即所谓财产公有。废除私有制甚至是工业发展必然引起的改造整个社会制度的最简明扼要的概括。所以共产主义者完全正确地强调废除私有制是自己的主要要求。</p>
</li>
<li>
<p>革命不能故意地、随心所欲地制造，革命在任何地方和任何时候都是完全不以单个政党和整个阶级的意志和领导为转移的各种情况的必然结果。</p>
</li>
</ol>
<h2 id="弗恩格斯-关于共产主义者同盟的历史">弗·恩格斯 关于共产主义者同盟的历史</h2>
<ol>
<li>
<p>每当问题涉及具体批判现存社会，即分析经济事实的时候，他们的手工业者旧有的成见对于他们就成为一种障碍。</p>
</li>
<li>
<p>现代被压迫阶级即无产阶级如果不同时使整个社会摆脱阶级划分，从而摆脱阶级斗争，就不能争得自身的解放。因此，共产主义现在已经不再意味着凭空设想一种尽可能完善的社会理想，而是意味着深入理解无产阶级所进行的斗争的性质、条件以及由此产生的一般目的。</p>
</li>
</ol>
<h2 id="马克思恩格斯关于共产党宣言的重要论述摘编">马克思恩格斯关于《共产党宣言》的重要论述摘编</h2>
<ol>
<li>
<p>问题并不在于实现某种空想的体系，而在于要自觉地参加我们眼前发生的改造社会的历史过程。</p>
</li>
<li>
<p>这些教育者的首要原则就是拿自己没有学会的东西教给别人。党完全可以不要这种教育者。</p>
</li>
<li>
<p>指出所犯的每一个错误、遭到的每一次失败都是原来纲领中的各种错误理论观点的必然结果。</p>
</li>
<li>
<p>他们应当在当前的运动中代表运动的未来。</p>
</li>
<li>
<p>共产党人不是同其他工人政党相对立的特殊政党。他们没有任何同整个无产阶级的利益不同的利益。他们不提出任何特殊的原则，用以塑造无产阶级的运动。</p>
</li>
<li>
<p>共产党人为工人阶级的最近的目的和利益而斗争，但是他们在当前的运动中同时代表运动的未来。</p>
</li>
<li>
<p>对我们的直接的好处或对国家朝着经济革命和政治革命的方向前进的历史发展的好处是无可争辩的、值得争取的。而所有这一切又必须以党的无产阶级性质不致因此发生问题为前提。对我来说，这是绝对的界限。</p>
</li>
<li>
<p>代替那存在着阶级和阶级对立的资产阶级旧社会的，将是这样一个联合体，在那里，每个人的自由发展是一切人的自由发展的条件。</p>
</li>
<li>
<p>生产资料归社会所有。</p>
</li>
</ol>
<h2 id="共产主义者同盟章程">共产主义者同盟章程</h2>
<ol>
<li>推翻资产阶级，建立无产阶级统治，消灭以阶级对立为基础的资产阶级旧社会，建立没有阶级、没有私有制的新社会。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《时生》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%97%B6%E7%94%9F/</link>
      <pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%97%B6%E7%94%9F/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082322801.png&#34; alt=&#34;image-20231008232258842&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h2 id=&#34;序章&#34;&gt;序章&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;买一辆露营车，到了周末就全家一起去山上或海边。生两个儿子，有个女儿也好，可以将她打扮得漂漂亮亮的。大家一起在河边烤自己钓的鱼。若能过上这样的生活，还要过多的钱干什么？只要有个人人健康、充满欢笑的家庭，就别无他求了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;宫本先生，简而言之，这是件很严重的事情。现在你只顾眼前，才说这样的话，但人会随着时间而改变。刚开始，你会觉得只要两个人在一起就行，可时间一长，就会想要孩子了，尤其是朋友、亲戚家里添了小孩的时候。到那时你再后悔，丽子就有苦难言了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不能生孩子的事常常会让某一方伤心，有时两人也相互刺激对方，但总是没过多长时间就将它抛在一边了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;未来不仅仅是明天。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时间的时，出生的生。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;6&#34;&gt;6&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;亲生的孩子不愿意送给别人天经地义，由母亲亲自养大孩子自然再好不过。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;9&#34;&gt;9&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;千鹤拾起小广告，长长地叹了一口气。“干大事，赚大钱。”她又叹了一口气，“只有真正的傻瓜才会说这种话。”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;10&#34;&gt;10&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;就这样，一晃他已经二十三岁了。就算是高中毕业后没考上大学，一年后再上，到今年春天也应该大学毕业了。在这五年里，自己到底都干了些什么？一想到这个，他就心情郁闷。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;看第一遍的时候，读到一半，拓实的脑袋突然变得一片空白，便又从头读起，大脑仍拒绝文字进入，可意思是理解的，但他不愿相信。他拿着便条，茫然伫立，看着壁橱里面的木板。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;11&#34;&gt;11&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;她的出走并非无缘无故。她直到现在才突然离开，应该说是自己的幸运了，但想不通她为什么走得这么突然。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拓实一把揪住时生的领口，握紧右拳，胳膊猛地后摆。时生抽搐着脸，闭上眼睛。见状，拓实不知为何竟无法出手，一种近似怜爱的奇妙感情涌了上来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;出生到世上，单单因为这个，就该心存感激。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这家伙到底是什么来历依然不得而知，可和他在一起总觉得很开心，真奇怪。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;13&#34;&gt;13&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;是吧？可再过二十年，就不用为这种事发愁了。因为几乎每人都带着电话呢，很小，可以放在口袋里，在路上也能拨打。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;14&#34;&gt;14&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;如今的世道，脚踏实地就得受穷。虚张声势也好，故弄玄虚也好，押中大冷门就能赢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;梦总是突然醒的，就像泡沫一般，越吹越大，最后啪地破灭，什么也没有，除了空虚。没有脚踏实地建立起来的东西，就无法形成精神和物质上的支撑。要到那时，日本人才会明白。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们失去的东西呀。从现在起再过十多年，谁都将失去重要的东西，包括你刚才说的人情。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;17&#34;&gt;17&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;我就是因贫穷才被扔掉的，随后在毫不相干的家庭里被养大，最后一无所有。扔掉我的人却为别人的贫困而拼命，因拼命工作而受人感激，被当成救命菩萨一样。扔掉婴儿的女人被当成了菩萨。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;20&#34;&gt;20&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;纠缠不休的男人可没有女人缘啊。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;22&#34;&gt;22&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;吃了苦就挂在脸上那才叫惨哪。再说，悲观也没用。谁都想生在好人家，可无法选择父母。发给你什么牌，你就只能尽量打好它。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;30&#34;&gt;30&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;“我，”时生真挚地望着拓实，“是你的儿子。宫本拓实先生，我来自未来。”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;31&#34;&gt;31&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;“再过几年，你会结婚生子。你将给你的儿子取名为时生，时间的时，生命的生。那孩子长到十七岁时，因某种缘故而回到过去。那就是我。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这世上不能让普通人知道的东西多的是。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;32&#34;&gt;32&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;什么都不懂的人反而能够长命百岁，这世上就是傻瓜最厉害。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做人嘛，抓住一两个紧要处就行，其他的方面装傻就好了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;别那么消沉，女人有的是。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;36&#34;&gt;36&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;“你从没觉得来到这个世界真好吗？”时生说道，“你现在不是喜欢千鹤吗？今后你也会喜欢各种各样的人，正因为活着才能这样。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我怎么能拖累你呢？你应该加上我的寿命，长久地活下去。只要想到你能活下去，即便在现在这一瞬间，我也已经感受到了未来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确信自己喜欢的人能好好地活着，即便面对死亡，也看到了未来。对你父亲来说，你母亲就是未来。人不论在什么时候都会感受到未来。无论是怎样短暂的一个瞬间，只要有活着的感觉，就有未来。我告诉你，未来不仅仅是明天。未来在人心中。只要心中有未来，人就能幸福起来。因为有人教了你母亲这个，她才将你生下来。可你看看自己，整天牢骚满腹，不思进取。你感受不到未来不能怪别人，要怪你自己，因为你是个浑蛋！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;38&#34;&gt;38&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;我是个狡猾的女人，最终会在心里衡量：一边是收入稳定的工薪族冈部，一边是无业的拓实哥，跟谁一起过对自己的将来更有利？我要是跟他说你的事，或许他就真死心了，可我也想留着他那张牌。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当时我从你身上也看到了自己的模样：老不走运，干什么都干不好，慢慢地变得奴颜婢膝。拓哥你变成那副模样，肯定也是因为我。我们在一起已经不可救药，我们已经到了必须各奔前程的时候。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;39&#34;&gt;39&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;“不是你的错。”他又说了一遍，“虽然风风雨雨的说不清楚，但不是你的错。我的人生只能靠自己，以后，我不会再怪你了，我想说的就是这个。嗯，还有一句。我感谢你生下了我。谢谢。”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;40&#34;&gt;40&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;我和千鹤那时都是什么事情也不懂的小鬼，现在终于能以成年人的姿态重新开始了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为过去是不会改变的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;41&#34;&gt;41&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;到此为止了。时间虽然不长，但和你在一起，我过得很开心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;能与你在一起，我就感到很幸福，在这个世界相遇之前，我就这么想。与现在的你相遇之前，我就非常幸福了。我觉得能生到这个世界上真好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;也许不应该去改变过去。但是，明明知道会发生什么，却什么也不做，也办不到。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;42&#34;&gt;42&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;那时跟她多说说话就好了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;终章&#34;&gt;终章&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;时间到底是怎么一回事，我不太明白。或许也能像时生一样，在什么时候，我的灵魂也能畅游在时间之中。或者是借助了来自未来的灵魂之力，人类才创造了历史。多亏了时生，我才走上正途。自然，这一切也可以全当成错觉。或许是从前有个叫时生的人，在我年轻时对我产生了一点影响，我就把他当成自己的儿子，借此来减轻一些现在伤痛的心情罢了。一切都在下意识之中。但我还是愿意认为，那时的时生，就是我们的儿子时生。不遇上他，时生就不会降生到这个世界。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;未来不仅仅是明天—这声音至今仍在宫本的脑海深处回响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我朋友打开车窗，他下了车，说道：‘不能再往前去了，老老实实地待在这儿。’当时，不知为什么，他盯着我的脸。看到他，我也有种亲切、怜悯的感觉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他知道过去是改变不了的，但无法袖手旁观。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一定要努力活下去，因为有美好的人生在等着你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时生，我在花屋敷等你！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082322801.png" alt="image-20231008232258842" style="zoom:50%;" />
<h2 id="序章">序章</h2>
<ol>
<li>
<p>买一辆露营车，到了周末就全家一起去山上或海边。生两个儿子，有个女儿也好，可以将她打扮得漂漂亮亮的。大家一起在河边烤自己钓的鱼。若能过上这样的生活，还要过多的钱干什么？只要有个人人健康、充满欢笑的家庭，就别无他求了。</p>
</li>
<li>
<p>宫本先生，简而言之，这是件很严重的事情。现在你只顾眼前，才说这样的话，但人会随着时间而改变。刚开始，你会觉得只要两个人在一起就行，可时间一长，就会想要孩子了，尤其是朋友、亲戚家里添了小孩的时候。到那时你再后悔，丽子就有苦难言了。</p>
</li>
<li>
<p>不能生孩子的事常常会让某一方伤心，有时两人也相互刺激对方，但总是没过多长时间就将它抛在一边了。</p>
</li>
<li>
<p>未来不仅仅是明天。</p>
</li>
<li>
<p>时间的时，出生的生。</p>
</li>
</ol>
<h2 id="6">6</h2>
<ol>
<li>亲生的孩子不愿意送给别人天经地义，由母亲亲自养大孩子自然再好不过。</li>
</ol>
<h2 id="9">9</h2>
<ol>
<li>千鹤拾起小广告，长长地叹了一口气。“干大事，赚大钱。”她又叹了一口气，“只有真正的傻瓜才会说这种话。”</li>
</ol>
<h2 id="10">10</h2>
<ol>
<li>
<p>就这样，一晃他已经二十三岁了。就算是高中毕业后没考上大学，一年后再上，到今年春天也应该大学毕业了。在这五年里，自己到底都干了些什么？一想到这个，他就心情郁闷。</p>
</li>
<li>
<p>看第一遍的时候，读到一半，拓实的脑袋突然变得一片空白，便又从头读起，大脑仍拒绝文字进入，可意思是理解的，但他不愿相信。他拿着便条，茫然伫立，看着壁橱里面的木板。</p>
</li>
</ol>
<h2 id="11">11</h2>
<ol>
<li>
<p>她的出走并非无缘无故。她直到现在才突然离开，应该说是自己的幸运了，但想不通她为什么走得这么突然。</p>
</li>
<li>
<p>拓实一把揪住时生的领口，握紧右拳，胳膊猛地后摆。时生抽搐着脸，闭上眼睛。见状，拓实不知为何竟无法出手，一种近似怜爱的奇妙感情涌了上来。</p>
</li>
<li>
<p>出生到世上，单单因为这个，就该心存感激。</p>
</li>
<li>
<p>这家伙到底是什么来历依然不得而知，可和他在一起总觉得很开心，真奇怪。</p>
</li>
</ol>
<h2 id="13">13</h2>
<ol>
<li>是吧？可再过二十年，就不用为这种事发愁了。因为几乎每人都带着电话呢，很小，可以放在口袋里，在路上也能拨打。</li>
</ol>
<h2 id="14">14</h2>
<ol>
<li>
<p>如今的世道，脚踏实地就得受穷。虚张声势也好，故弄玄虚也好，押中大冷门就能赢。</p>
</li>
<li>
<p>梦总是突然醒的，就像泡沫一般，越吹越大，最后啪地破灭，什么也没有，除了空虚。没有脚踏实地建立起来的东西，就无法形成精神和物质上的支撑。要到那时，日本人才会明白。</p>
</li>
<li>
<p>我们失去的东西呀。从现在起再过十多年，谁都将失去重要的东西，包括你刚才说的人情。</p>
</li>
</ol>
<h2 id="17">17</h2>
<ol>
<li>我就是因贫穷才被扔掉的，随后在毫不相干的家庭里被养大，最后一无所有。扔掉我的人却为别人的贫困而拼命，因拼命工作而受人感激，被当成救命菩萨一样。扔掉婴儿的女人被当成了菩萨。</li>
</ol>
<h2 id="20">20</h2>
<ol>
<li>纠缠不休的男人可没有女人缘啊。</li>
</ol>
<h2 id="22">22</h2>
<ol>
<li>吃了苦就挂在脸上那才叫惨哪。再说，悲观也没用。谁都想生在好人家，可无法选择父母。发给你什么牌，你就只能尽量打好它。</li>
</ol>
<h2 id="30">30</h2>
<ol>
<li>“我，”时生真挚地望着拓实，“是你的儿子。宫本拓实先生，我来自未来。”</li>
</ol>
<h2 id="31">31</h2>
<ol>
<li>
<p>“再过几年，你会结婚生子。你将给你的儿子取名为时生，时间的时，生命的生。那孩子长到十七岁时，因某种缘故而回到过去。那就是我。”</p>
</li>
<li>
<p>这世上不能让普通人知道的东西多的是。</p>
</li>
</ol>
<h2 id="32">32</h2>
<ol>
<li>
<p>什么都不懂的人反而能够长命百岁，这世上就是傻瓜最厉害。</p>
</li>
<li>
<p>做人嘛，抓住一两个紧要处就行，其他的方面装傻就好了。</p>
</li>
<li>
<p>别那么消沉，女人有的是。</p>
</li>
</ol>
<h2 id="36">36</h2>
<ol>
<li>
<p>“你从没觉得来到这个世界真好吗？”时生说道，“你现在不是喜欢千鹤吗？今后你也会喜欢各种各样的人，正因为活着才能这样。”</p>
</li>
<li>
<p>我怎么能拖累你呢？你应该加上我的寿命，长久地活下去。只要想到你能活下去，即便在现在这一瞬间，我也已经感受到了未来。</p>
</li>
<li>
<p>确信自己喜欢的人能好好地活着，即便面对死亡，也看到了未来。对你父亲来说，你母亲就是未来。人不论在什么时候都会感受到未来。无论是怎样短暂的一个瞬间，只要有活着的感觉，就有未来。我告诉你，未来不仅仅是明天。未来在人心中。只要心中有未来，人就能幸福起来。因为有人教了你母亲这个，她才将你生下来。可你看看自己，整天牢骚满腹，不思进取。你感受不到未来不能怪别人，要怪你自己，因为你是个浑蛋！</p>
</li>
</ol>
<h2 id="38">38</h2>
<ol>
<li>
<p>我是个狡猾的女人，最终会在心里衡量：一边是收入稳定的工薪族冈部，一边是无业的拓实哥，跟谁一起过对自己的将来更有利？我要是跟他说你的事，或许他就真死心了，可我也想留着他那张牌。</p>
</li>
<li>
<p>当时我从你身上也看到了自己的模样：老不走运，干什么都干不好，慢慢地变得奴颜婢膝。拓哥你变成那副模样，肯定也是因为我。我们在一起已经不可救药，我们已经到了必须各奔前程的时候。</p>
</li>
</ol>
<h2 id="39">39</h2>
<ol>
<li>“不是你的错。”他又说了一遍，“虽然风风雨雨的说不清楚，但不是你的错。我的人生只能靠自己，以后，我不会再怪你了，我想说的就是这个。嗯，还有一句。我感谢你生下了我。谢谢。”</li>
</ol>
<h2 id="40">40</h2>
<ol>
<li>
<p>我和千鹤那时都是什么事情也不懂的小鬼，现在终于能以成年人的姿态重新开始了。</p>
</li>
<li>
<p>因为过去是不会改变的。</p>
</li>
</ol>
<h2 id="41">41</h2>
<ol>
<li>
<p>到此为止了。时间虽然不长，但和你在一起，我过得很开心。</p>
</li>
<li>
<p>能与你在一起，我就感到很幸福，在这个世界相遇之前，我就这么想。与现在的你相遇之前，我就非常幸福了。我觉得能生到这个世界上真好。</p>
</li>
<li>
<p>也许不应该去改变过去。但是，明明知道会发生什么，却什么也不做，也办不到。</p>
</li>
</ol>
<h2 id="42">42</h2>
<ol>
<li>那时跟她多说说话就好了。</li>
</ol>
<h2 id="终章">终章</h2>
<ol>
<li>
<p>时间到底是怎么一回事，我不太明白。或许也能像时生一样，在什么时候，我的灵魂也能畅游在时间之中。或者是借助了来自未来的灵魂之力，人类才创造了历史。多亏了时生，我才走上正途。自然，这一切也可以全当成错觉。或许是从前有个叫时生的人，在我年轻时对我产生了一点影响，我就把他当成自己的儿子，借此来减轻一些现在伤痛的心情罢了。一切都在下意识之中。但我还是愿意认为，那时的时生，就是我们的儿子时生。不遇上他，时生就不会降生到这个世界。</p>
</li>
<li>
<p>未来不仅仅是明天—这声音至今仍在宫本的脑海深处回响。</p>
</li>
<li>
<p>我朋友打开车窗，他下了车，说道：‘不能再往前去了，老老实实地待在这儿。’当时，不知为什么，他盯着我的脸。看到他，我也有种亲切、怜悯的感觉。</p>
</li>
<li>
<p>他知道过去是改变不了的，但无法袖手旁观。</p>
</li>
<li>
<p>一定要努力活下去，因为有美好的人生在等着你。</p>
</li>
<li>
<p>时生，我在花屋敷等你！</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《毛泽东自述》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%AF%9B%E6%B3%BD%E4%B8%9C%E8%87%AA%E8%BF%B0/</link>
      <pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%AF%9B%E6%B3%BD%E4%B8%9C%E8%87%AA%E8%BF%B0/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082319963.png&#34; alt=&#34;image-20231008231934597&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;p&gt;听讲历史和读书，跟亲身经历过是不同的。&lt;/p&gt;
&lt;h2 id=&#34;毛泽东一九三六年同斯诺的谈话&#34;&gt;毛泽东一九三六年同斯诺的谈话&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对于建设社会主义的规律的认识，必须有一个过程。必须从实践出发，从没有经验到有经验，从有较少的经验到有较多的经验，从建设社会主义这个未被认识的必然王国，到逐步克服盲目性、认识客观规律，从而获得自由，在认识上出现一个飞跃，到达自由王国。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;斯诺先生是中国人民的好朋友。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;一个共产党员的经历&#34;&gt;一个共产党员的经历&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;当我用公开反抗的办法来保卫自己的权利的时候，我父亲就软了下来；可是如果我保持温顺的态度，他只会更多地打骂我。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国家兴亡，匹夫有责。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二长沙时代&#34;&gt;二、长沙时代&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;每天早晨图书馆一开门我就进去。中午我仅仅休息片刻，买两块米糕吃。这就是我每天的午餐。我每天在图书馆里一直阅读到闭馆的时候。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们人数不多，但都是思想上很认真的人，不屑于议论琐事。他们所做和所说的每一件事，都有一个目的。他们没有时间谈情说爱，认为时局是如此危急，求知的需要是如此迫切，没有时间去谈论女人或私人问题。我对女人不感兴趣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这种年龄的男青年的生活中，议论女性的姿色通常占有重要的位置，可是我的同伴不但不这样做，而且连日常生活中的普通事情也拒绝谈论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我的朋友们和我只乐于谈论大事——人的性质，人类社会的性质，中国的性质，世界，宇宙！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们也成了热心的体育锻炼者。寒假里，我们徒步穿过田野，上山下山，绕行城墙，渡河过江。碰到下雨，我们就脱掉衬衫让雨淋，说这是雨浴。烈日当空，我们脱掉衬衫，说是日光浴。春风吹来的时候我们大声叫嚷，说这是一种叫做‘风浴’的新体育项目。在已经下霜的日子里，我们露天睡觉，甚至于到十一月份，我们还在寒冷的河水里游泳。这一切都是在‘锻炼身体’的名义下进行的；这对于增强我的体质也许很有帮助，我后来在中国南方的多次往返行军，以及从江西到西北的长征路上，特别需要这样的体质。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三革命的序曲&#34;&gt;三、革命的序曲&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;尽管他们已经在一起战斗了多年，他们往往不了解彼此在入党以前的情况，那些日子往往被看做一种黑暗时代，人们的真正的生命只是在入党以后才开始。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我觉得我对我自己的国家了解得还不够，把我的时间花在中国会更有益处。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这以后，我越来越相信只有通过群众的行动确立起来的群众政治权力，才能保证有力的改革的实现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我接受马克思主义、认为它是对历史的正确解释，以后，就一直没有动摇过。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;五苏维埃运动&#34;&gt;五、苏维埃运动&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;动摇的机会主义，在那继续妥协明显地意味着灾难临头的时刻，使党丧失果断的领导和它自己的独立路线。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;能说会道，而且说得太多，却提不出任何实现的办法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;毛认为，在客观上，罗易是个蠢才，鲍罗廷是个冒失鬼，陈独秀则是一名不自觉的叛徒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;陈独秀的确害怕工人，特别害怕武装起来的农民。当武装暴动的现实终于摆在他面前的时候，他完全失掉了他的理智。再也看不清楚事情将怎样发展。他的小资产阶级的本性使他陷于惊慌和失败。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当时陈独秀是中国共产党的大独裁者，他甚至不同中央委员会商量就作出重大的决定。“他不把共产国际的命令给党的其他领导人看，甚至于也不同我们讨论这些命令。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产国际在一九二七年并不是向中国共产党提出“忠告”，而是干脆下命令。显然，中国党甚至无权拒绝这些命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;苏维埃是在革命的废墟上建立起来的，甚至于还要赤手空拳地从失败中斗出新的胜利来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一九二七年八月一日，贺龙率领二十军和叶挺率领的十一军二十四师[插图]同朱德合作，领导了具有历史意义的南昌起义[插图]，红军的前身就这样组织起来了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;党采取了一条新的路线，放弃同国民党合作的一切希望，因为国民党已经不可救药地成了帝国主义的工具，不能实行民主革命的任务了。夺取政权的长期和公开的斗争现在开始了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六红军的成长&#34;&gt;六、红军的成长&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一、上门板；二、捆铺草；三、对老百姓说话要和气，要随时帮助他们；四、借东西要还；五、损坏东西要赔；六、买卖公平；七、买东西要付钱；八、要讲卫生，盖厕所离住房要远。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第一、对敌人要拚死斗争；第二、要武装群众；第三、要筹款支持斗争。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一、敌进我退！二、敌驻我扰！三、敌疲我打！四、敌退我追！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;红军最重要的一条战术，过去是，现在仍然是，能够在进攻时集中主力，随后又能迅速分散。这意味着避免阵地战，力求在运动中迎击并歼灭敌人的有生力量。红军奇妙的机动性和神速有力的速决战，就是在上述战术的基础上发展起来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;李立三和陈独秀一样，对农村苏维埃缺乏信心，他主张对长沙、武汉、南昌那样的大城市采取有力的进攻策略。他要在农村搞“恐怖”，打掉地主豪绅的气焰；要工人发动“强大的攻势”，要举行暴动和罢工，使敌人在自己的后方陷于瘫痪。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我认为如果红军没有在围剿开始前不久创造的三个条件，就不可能取得这次胜利：第一、第一军团和第三军团在集中的指挥下统一起来了；第二、清算了李立三路线；第三、党战胜了红军内和苏区内的AB团（刘铁超等）及其他现行反革命分子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;红军的胜利行军，以及它的胜利到达甘陕并保存自己的有生力量，首先是由于共产党的正确领导，其次是由于苏维埃人民的骨干的伟大的才能、勇气、决心以及几乎超人的忍耐力和革命热情。中国共产党过去、现在、将来都忠于马列主义，并将继续进行斗争反对一切机会主义倾向。它之所以不可战胜和必然取得最后胜利，其原因之一就在于这种决心&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2023/09/28发表想法
燃起来了。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;红军的胜利行军，以及它的胜利到达甘陕并保存自己的有生力量，首先是由于共产党的正确领导，其次是由于苏维埃人民的骨干的伟大的才能、勇气、决心以及几乎超人的忍耐力和革命热情。中国共产党过去、现在、将来都忠于马列主义，并将继续进行斗争反对一切机会主义倾向。它之所以不可战胜和必然取得最后胜利，其原因之一就在于这种决心&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二一个国家的迁移&#34;&gt;二、一个国家的迁移&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;党国命运系于围歼赤党于长江以南&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三大渡河上的英雄&#34;&gt;三、大渡河上的英雄&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;刘伯承当着彝族大头人的面喝了一碗滴了刚宰的公鸡的血的酒，那个大头人也喝了，他们按照部落的仪式歃血为盟结成兄弟。红军在誓言中宣称，谁违反了盟约的条款，谁就像那只刚被宰的鸡那样软弱、怯懦。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四过大草地&#34;&gt;四、过大草地&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;毛泽东幽默地对我说：“这是我们唯一的外债，将来我们一定要向藏民偿还我们不得不取自他们的给养。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产党人自己宣称并且显然相信，他们是在挺进到抗日前线去，这是一个非常重要的心理因素，它有助于他们把一种有可能变成败坏士气的退却转变为斗志昂扬的胜利进军。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;论反对日本帝国主义&#34;&gt;论反对日本帝国主义&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;人民群众越来越清楚地认识到是谁代表他们的真正利益。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国共产党和全国人民一样，不容许日本保留中国的寸土。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们当然不会把我们的军队开进抗日军队占领的任何地区去——一段时期以来，我们也没有这样做过。红军是不会采取机会主义的办法来利用任何战争局势的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;论统一战线&#34;&gt;论统一战线&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;日本帝国主义是无法打败真正团结、武装和组织起来的中国人民的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选举权应该是普遍的，不受财产、社会地位、教育程度和性别的限制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有真正的反帝斗争就没有国家的统一。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;中国共产党和世界事务&#34;&gt;中国共产党和世界事务&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;中国人民今天面对的根本问题是同日本帝国主义的斗争。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡是愿意参加这个共同战线的，都将作为友好国家受到我们的欢迎，不管它在促使这条共同战线成为反对侵略者的有效武器方面能作出多大贡献。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只有在中国取得真正的独立和民主之后，才有可能把大量外资用于大规模地发展生产事业。也只有自由的中国，由于生产性经济的广泛发展，才能够偿还这种外国投资的本金和利息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人民政府如果建立起来，外国借款和外国投资应就只能被用来发展中国经济生活中的基本生产能力——特别是在全国范围内建设基础工业和引进科学的农业方法和农业组织。同南京的政策相反，对影响中国独立政治权利的外国投资，一概不予承认。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;书签&#34;&gt;书签&lt;/h2&gt;
&lt;p&gt;2023/09/30
同南京的政策相反，对影响中国独立政治权利的外国投资，一概不予承认。&lt;/p&gt;
&lt;p&gt;问：苏维埃对外国传教士的新政策是否意味着将承认他们的财产权？他们是否将继续享有传教、教书、拥有土地、办学校和其他事业的权利？&lt;/p&gt;
&lt;p&gt;答：是的。但这不包括日本传教士。&lt;/p&gt;
&lt;p&gt;问：苏维埃政府目前对美国政府和美国人民的希望是什么？美国政府和人民怎样才能最好地帮助中国人民？&lt;/p&gt;
&lt;p&gt;答：我们认为美国人民和美国政府对中国是有远见的，形势注定美国政府要对中国和日本的未来起非常积极的作用。我们希望并且相信，他们将同中国人民结成统一战线以反对日本帝国主义及日本所代表的法西斯战线。&lt;/p&gt;
&lt;h2 id=&#34;毛泽东一九三九年同斯诺的谈话&#34;&gt;毛泽东一九三九年同斯诺的谈话&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;统一战线已经存在一个时候了。在人民的心中，在他们的谈话里，他们承认不仅存在名义上的统一战线，而且存在实际上的统一战线。但是有那么一小撮人，他们事实上不得不承认统一战线，而在口头上企图否认统一战线。我们叫这些人阿Q主义者，他们的手段是阿Q主义。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082319963.png" alt="image-20231008231934597" style="zoom:50%;" />
<h2 id="点评">点评</h2>
<p>听讲历史和读书，跟亲身经历过是不同的。</p>
<h2 id="毛泽东一九三六年同斯诺的谈话">毛泽东一九三六年同斯诺的谈话</h2>
<ol>
<li>
<p>对于建设社会主义的规律的认识，必须有一个过程。必须从实践出发，从没有经验到有经验，从有较少的经验到有较多的经验，从建设社会主义这个未被认识的必然王国，到逐步克服盲目性、认识客观规律，从而获得自由，在认识上出现一个飞跃，到达自由王国。</p>
</li>
<li>
<p>斯诺先生是中国人民的好朋友。</p>
</li>
</ol>
<h2 id="一个共产党员的经历">一个共产党员的经历</h2>
<ol>
<li>
<p>当我用公开反抗的办法来保卫自己的权利的时候，我父亲就软了下来；可是如果我保持温顺的态度，他只会更多地打骂我。</p>
</li>
<li>
<p>国家兴亡，匹夫有责。</p>
</li>
</ol>
<h2 id="二长沙时代">二、长沙时代</h2>
<ol>
<li>
<p>每天早晨图书馆一开门我就进去。中午我仅仅休息片刻，买两块米糕吃。这就是我每天的午餐。我每天在图书馆里一直阅读到闭馆的时候。</p>
</li>
<li>
<p>他们人数不多，但都是思想上很认真的人，不屑于议论琐事。他们所做和所说的每一件事，都有一个目的。他们没有时间谈情说爱，认为时局是如此危急，求知的需要是如此迫切，没有时间去谈论女人或私人问题。我对女人不感兴趣。</p>
</li>
<li>
<p>在这种年龄的男青年的生活中，议论女性的姿色通常占有重要的位置，可是我的同伴不但不这样做，而且连日常生活中的普通事情也拒绝谈论。</p>
</li>
<li>
<p>我的朋友们和我只乐于谈论大事——人的性质，人类社会的性质，中国的性质，世界，宇宙！</p>
</li>
<li>
<p>我们也成了热心的体育锻炼者。寒假里，我们徒步穿过田野，上山下山，绕行城墙，渡河过江。碰到下雨，我们就脱掉衬衫让雨淋，说这是雨浴。烈日当空，我们脱掉衬衫，说是日光浴。春风吹来的时候我们大声叫嚷，说这是一种叫做‘风浴’的新体育项目。在已经下霜的日子里，我们露天睡觉，甚至于到十一月份，我们还在寒冷的河水里游泳。这一切都是在‘锻炼身体’的名义下进行的；这对于增强我的体质也许很有帮助，我后来在中国南方的多次往返行军，以及从江西到西北的长征路上，特别需要这样的体质。</p>
</li>
</ol>
<h2 id="三革命的序曲">三、革命的序曲</h2>
<ol>
<li>
<p>尽管他们已经在一起战斗了多年，他们往往不了解彼此在入党以前的情况，那些日子往往被看做一种黑暗时代，人们的真正的生命只是在入党以后才开始。</p>
</li>
<li>
<p>我觉得我对我自己的国家了解得还不够，把我的时间花在中国会更有益处。</p>
</li>
<li>
<p>在这以后，我越来越相信只有通过群众的行动确立起来的群众政治权力，才能保证有力的改革的实现。</p>
</li>
<li>
<p>我接受马克思主义、认为它是对历史的正确解释，以后，就一直没有动摇过。</p>
</li>
</ol>
<h2 id="五苏维埃运动">五、苏维埃运动</h2>
<ol>
<li>
<p>动摇的机会主义，在那继续妥协明显地意味着灾难临头的时刻，使党丧失果断的领导和它自己的独立路线。</p>
</li>
<li>
<p>能说会道，而且说得太多，却提不出任何实现的办法。</p>
</li>
<li>
<p>毛认为，在客观上，罗易是个蠢才，鲍罗廷是个冒失鬼，陈独秀则是一名不自觉的叛徒。</p>
</li>
<li>
<p>陈独秀的确害怕工人，特别害怕武装起来的农民。当武装暴动的现实终于摆在他面前的时候，他完全失掉了他的理智。再也看不清楚事情将怎样发展。他的小资产阶级的本性使他陷于惊慌和失败。”</p>
</li>
<li>
<p>当时陈独秀是中国共产党的大独裁者，他甚至不同中央委员会商量就作出重大的决定。“他不把共产国际的命令给党的其他领导人看，甚至于也不同我们讨论这些命令。”</p>
</li>
<li>
<p>共产国际在一九二七年并不是向中国共产党提出“忠告”，而是干脆下命令。显然，中国党甚至无权拒绝这些命令。</p>
</li>
<li>
<p>苏维埃是在革命的废墟上建立起来的，甚至于还要赤手空拳地从失败中斗出新的胜利来。</p>
</li>
<li>
<p>一九二七年八月一日，贺龙率领二十军和叶挺率领的十一军二十四师[插图]同朱德合作，领导了具有历史意义的南昌起义[插图]，红军的前身就这样组织起来了。</p>
</li>
<li>
<p>党采取了一条新的路线，放弃同国民党合作的一切希望，因为国民党已经不可救药地成了帝国主义的工具，不能实行民主革命的任务了。夺取政权的长期和公开的斗争现在开始了。</p>
</li>
</ol>
<h2 id="六红军的成长">六、红军的成长</h2>
<ol>
<li>
<p>一、上门板；二、捆铺草；三、对老百姓说话要和气，要随时帮助他们；四、借东西要还；五、损坏东西要赔；六、买卖公平；七、买东西要付钱；八、要讲卫生，盖厕所离住房要远。</p>
</li>
<li>
<p>第一、对敌人要拚死斗争；第二、要武装群众；第三、要筹款支持斗争。</p>
</li>
<li>
<p>一、敌进我退！二、敌驻我扰！三、敌疲我打！四、敌退我追！</p>
</li>
<li>
<p>红军最重要的一条战术，过去是，现在仍然是，能够在进攻时集中主力，随后又能迅速分散。这意味着避免阵地战，力求在运动中迎击并歼灭敌人的有生力量。红军奇妙的机动性和神速有力的速决战，就是在上述战术的基础上发展起来的。</p>
</li>
<li>
<p>李立三和陈独秀一样，对农村苏维埃缺乏信心，他主张对长沙、武汉、南昌那样的大城市采取有力的进攻策略。他要在农村搞“恐怖”，打掉地主豪绅的气焰；要工人发动“强大的攻势”，要举行暴动和罢工，使敌人在自己的后方陷于瘫痪。</p>
</li>
<li>
<p>我认为如果红军没有在围剿开始前不久创造的三个条件，就不可能取得这次胜利：第一、第一军团和第三军团在集中的指挥下统一起来了；第二、清算了李立三路线；第三、党战胜了红军内和苏区内的AB团（刘铁超等）及其他现行反革命分子。</p>
</li>
<li>
<p>红军的胜利行军，以及它的胜利到达甘陕并保存自己的有生力量，首先是由于共产党的正确领导，其次是由于苏维埃人民的骨干的伟大的才能、勇气、决心以及几乎超人的忍耐力和革命热情。中国共产党过去、现在、将来都忠于马列主义，并将继续进行斗争反对一切机会主义倾向。它之所以不可战胜和必然取得最后胜利，其原因之一就在于这种决心</p>
</li>
</ol>
<p>2023/09/28发表想法
燃起来了。</p>
<ol>
<li>红军的胜利行军，以及它的胜利到达甘陕并保存自己的有生力量，首先是由于共产党的正确领导，其次是由于苏维埃人民的骨干的伟大的才能、勇气、决心以及几乎超人的忍耐力和革命热情。中国共产党过去、现在、将来都忠于马列主义，并将继续进行斗争反对一切机会主义倾向。它之所以不可战胜和必然取得最后胜利，其原因之一就在于这种决心</li>
</ol>
<h2 id="二一个国家的迁移">二、一个国家的迁移</h2>
<ol>
<li>党国命运系于围歼赤党于长江以南</li>
</ol>
<h2 id="三大渡河上的英雄">三、大渡河上的英雄</h2>
<ol>
<li>刘伯承当着彝族大头人的面喝了一碗滴了刚宰的公鸡的血的酒，那个大头人也喝了，他们按照部落的仪式歃血为盟结成兄弟。红军在誓言中宣称，谁违反了盟约的条款，谁就像那只刚被宰的鸡那样软弱、怯懦。</li>
</ol>
<h2 id="四过大草地">四、过大草地</h2>
<ol>
<li>
<p>毛泽东幽默地对我说：“这是我们唯一的外债，将来我们一定要向藏民偿还我们不得不取自他们的给养。”</p>
</li>
<li>
<p>共产党人自己宣称并且显然相信，他们是在挺进到抗日前线去，这是一个非常重要的心理因素，它有助于他们把一种有可能变成败坏士气的退却转变为斗志昂扬的胜利进军。</p>
</li>
</ol>
<h2 id="论反对日本帝国主义">论反对日本帝国主义</h2>
<ol>
<li>
<p>人民群众越来越清楚地认识到是谁代表他们的真正利益。</p>
</li>
<li>
<p>中国共产党和全国人民一样，不容许日本保留中国的寸土。</p>
</li>
<li>
<p>我们当然不会把我们的军队开进抗日军队占领的任何地区去——一段时期以来，我们也没有这样做过。红军是不会采取机会主义的办法来利用任何战争局势的。</p>
</li>
</ol>
<h2 id="论统一战线">论统一战线</h2>
<ol>
<li>
<p>日本帝国主义是无法打败真正团结、武装和组织起来的中国人民的。</p>
</li>
<li>
<p>选举权应该是普遍的，不受财产、社会地位、教育程度和性别的限制。</p>
</li>
<li>
<p>没有真正的反帝斗争就没有国家的统一。</p>
</li>
</ol>
<h2 id="中国共产党和世界事务">中国共产党和世界事务</h2>
<ol>
<li>
<p>中国人民今天面对的根本问题是同日本帝国主义的斗争。</p>
</li>
<li>
<p>凡是愿意参加这个共同战线的，都将作为友好国家受到我们的欢迎，不管它在促使这条共同战线成为反对侵略者的有效武器方面能作出多大贡献。</p>
</li>
<li>
<p>只有在中国取得真正的独立和民主之后，才有可能把大量外资用于大规模地发展生产事业。也只有自由的中国，由于生产性经济的广泛发展，才能够偿还这种外国投资的本金和利息。</p>
</li>
<li>
<p>人民政府如果建立起来，外国借款和外国投资应就只能被用来发展中国经济生活中的基本生产能力——特别是在全国范围内建设基础工业和引进科学的农业方法和农业组织。同南京的政策相反，对影响中国独立政治权利的外国投资，一概不予承认。</p>
</li>
</ol>
<h2 id="书签">书签</h2>
<p>2023/09/30
同南京的政策相反，对影响中国独立政治权利的外国投资，一概不予承认。</p>
<p>问：苏维埃对外国传教士的新政策是否意味着将承认他们的财产权？他们是否将继续享有传教、教书、拥有土地、办学校和其他事业的权利？</p>
<p>答：是的。但这不包括日本传教士。</p>
<p>问：苏维埃政府目前对美国政府和美国人民的希望是什么？美国政府和人民怎样才能最好地帮助中国人民？</p>
<p>答：我们认为美国人民和美国政府对中国是有远见的，形势注定美国政府要对中国和日本的未来起非常积极的作用。我们希望并且相信，他们将同中国人民结成统一战线以反对日本帝国主义及日本所代表的法西斯战线。</p>
<h2 id="毛泽东一九三九年同斯诺的谈话">毛泽东一九三九年同斯诺的谈话</h2>
<ol>
<li>
<p>统一战线已经存在一个时候了。在人民的心中，在他们的谈话里，他们承认不仅存在名义上的统一战线，而且存在实际上的统一战线。但是有那么一小撮人，他们事实上不得不承认统一战线，而在口头上企图否认统一战线。我们叫这些人阿Q主义者，他们的手段是阿Q主义。</p>
</li>
<li>
<p>我个人支持孙中山的民权原则，我不妨碍他们爱想什么想什么。事实上，我现在很忙，没有时间去管这个闲事。</p>
</li>
<li>
<p>共产党从没有屈服于任何党派、任何个人。</p>
</li>
<li>
<p>抗战和民主是同一把剑的两个刃。有的人假装支持抗战，但却拒绝民主的方针。他们实际上对剑的两个刃都不愿意使用。他们在把反帝斗争拖向失败。</p>
</li>
</ol>
<h2 id="附二-窑洞中的预言">附二 窑洞中的预言</h2>
<ol>
<li>
<p>在说话时，他善于把很复杂的问题讲得连没有文化的人也听得懂。他惯用俗话和家常的比喻；他从不向听者讲大话，而总是以平等的口气和人谈话。他和人民之间是交心的；他和群众的思想从来都是沟通的。</p>
</li>
<li>
<p>革命运动要求它的领袖能够比旁人早一点看到将来要发生的事；在这方面毛很成功，所以他的追随者对他的判断力产生了极大的信心。</p>
</li>
<li>
<p>我们的战略应该是在漫长和游移不定的战线上的运动战：这种战略的胜利有赖于在艰险地形上的高度机动性，其特点是迅速的进攻和后退，迅速的集中和分散。那将是一场大规模的运动战，而不是长壕、聚众、坚堡的单纯阵地战……攻坚战也要利用，但那将是辅助的，次要的……日本的经济将在旷日持久而昂贵的对华占领的重担下出现裂痕，在无数非决定性的战斗的冲击下，日军的士气将发生崩溃。</p>
</li>
<li>
<p>从社会进步的观点来说，毛本质上是革命派，而蒋则是保守派。蒋是一个内向的人，他似乎时常有意强调自己超脱于群众之上，以保持中国关于权贵的传统。毛则一点也不神秘。他并不声称自己是永远不犯错误的。我听到过他承认犯了错误，而且他并不因为改变自己的主意而感到羞耻。</p>
</li>
<li>
<p>毛说话一长，总要说一些家常的俏皮话，或者简练的警句。他似乎是靠在所有辩论中取胜而保持自己的领导地位的。他有广博的学识，在辩论中熟练地运用着辩证法。他的策略很有意思。他极少从正面攻击对手。他这里攻一下，那里攻一下，迂回包抄对方的立论，一个一个地驳倒对方的辩护词，直到把对方完全困住，最后用一句妙语或者有力的逻辑把对方打垮。他喜爱和人们接触，使人们欢笑，同各色人等在一起都很自在。他有活泼的想象力。我记得一次有人向他描述在上海看过的一出喜剧，他笑得直到流了泪。</p>
</li>
<li>
<p>虽然毛无疑是中国共产党人中最杰出的人物，他决不是一个独裁者。他是靠众人的折服而成为领袖的，他的所有决定都是讨论的结果，是集体的判断。共产党里没有一个相当于蒋介石在国民党里的总裁这样的职位。毛主要是通过他在政治局和军事委员会的作用而发挥他的影响的。他在边区政府里没有官职。大家仍旧只叫他“主席”——这只是一个荣誉称号，来历是在江西的时候他曾被选举为苏维埃政府的主席。</p>
</li>
<li>
<p>中国共产党内部的团结和很少派别之争，在中国政治运动史上是鲜见的，而且也不像世界其他国家共产党的历史，连苏共也不例外。其原因一部分可能是由于过去十年来中国共产党人太忙于避免被敌人消灭，没有时间来互相作对了。</p>
</li>
<li>
<p>革命党人在武装斗争过程中培育起来的相互间的深厚友谊，无疑是坐在沙发里发议论而不冒生命危险的理论家所不能有的。民主国家里的共产党，在知识界享有平等权利和某种程度的名望，就没有能建立起一个伟大运动的感情基础，这恐怕也是原因之一。</p>
</li>
<li>
<p>这些人似乎有某种我在美国左翼团体里从来没有见过的东西：志同道合者之间的真诚友谊。我们的左翼分子随时都在等待你发表某种意见以便他们能高呼‘去你的，叛徒！’虽然他们同你在十分之九的问题上都是一致的。”共同经受过苦痛和危难的经历使人们亲近起来，使个性和思想上的小分歧显得微不足道，这种经历大概是人类最深厚的友谊了。对于中国共产党人来说，这种友谊无疑像水泥一样，它弥合了内部的裂纹，使外界瞧它不见。</p>
</li>
<li>
<p>在毛泽东和他的追随者身上，民族情绪似乎比在发达资本主义国家里的共产党人身上更为强烈。需要再次指出，按照共产党的理论，中国是半封建半殖民地国家，它进行斗争不是为了立即实现社会主义，而是为了一方面争取民族解放，另一方面清除“封建主义残余”而实现社会民主。他们十多年来一直遵循这个学说，在它的基础上建立和壮大了军队，因此自然培养了一种自信、自力更生和独立思考的精神。中共在它的长期斗争中时常被割断同共产国际的关系，得不到那里的超级思想家的忠告。中共领导人不得不在战场上解决理论问题，一个决定往往要迅速导致同志们的生或死。</p>
</li>
<li>
<p>中共以它的长期武装斗争的历史、在没有俄国物质援助的情况下建立自己的军队、打出自己的江山、在运用革命权力方面积累巨大的实际政治经验，而区别于共产国际的其他所有支部。对其他共产党来说，无产阶级可能除了苏联以外就没有祖国；但是中共用革命胜利赢得了自己的祖国。</p>
</li>
<li>
<p>世界各地老发牢骚的自由主义者、激进派、坐在沙发上空想的革命家和改革家可能把自己的失败和无能归罪于斯大林，从而逃避内疚；中共却一贯只把失败归罪于自己和客观环境。在旁的国家里，莫斯科审判和清洗的是非之争遮蔽了每个共产党内部政治中远为紧急的问题。据我看，中国人却带点怀疑地看待那些争论。不管怎样，他们正忙于自己争生存的问题，没有闲功夫多管他们搞不清楚，也控制不了的在莫斯科发生的事。</p>
</li>
<li>
<p>毛泽东的地位不是莫斯科给的；现在除了他的中国同志们和军队以外，谁也不能撤去他的职务。事实上，毛曾两次被开除出党，据说是违反了共产国际的路线；但是这些命令从未执行。顺便提一下，他是唯一从未去莫斯科朝圣的重要共产党领袖。他从未会见过斯大林。他从未到过国外。</p>
</li>
<li>
<p>自由派如果愿意做反斯大林的亲华派，他们可以爱叫他什么就叫他什么，也许这样可以解决他们感情上的矛盾——只要他们做些实际的事去阻止美国武装日本，帮助中国和八路军赢得胜利。</p>
</li>
<li>
<p>我个人的感觉是，那些一厢情愿以为中共是“不同的”，“只是改良派”而已经抛弃革命手段的自由派，注定了最后一定会幻灭。中共现在是民族主义者，因为他们是处在革命的民族统一战线阶段，而且他们自己有足够的力量，不怕被淹没而成为人家的傀儡。但是他们的信仰仍然是国际社会主义；而且如果条件变了，他们会采取自己认为必要的任何手段以便“继续呆在历史的火车头上面”。</p>
</li>
</ol>
<h2 id="毛泽东一九六五年同斯诺的谈话">毛泽东一九六五年同斯诺的谈话</h2>
<ol>
<li>
<p>我相信从一九四九年人民共和国成立以来，我是为了发表文章而同他交谈的第一个外国人。</p>
</li>
<li>
<p>为什么我能成为一个例外呢？大概是因为从他还是一个受通缉的“赤匪”住在陕西窑洞里的时候起，我就认识他了。一九三六年，我还是年轻的新闻记者，为了想看一看蒋介石费了十年时间试图“清剿”的究竟是些什么样的人，因而进入了中国西北地区。我是第一个进入老“红区”的新闻记者，也是第一个采访毛泽东、周恩来、林彪和其他领导人的人。毛当时四十三岁，很瘦，比一般中国人高，在从华南（经过康藏高原的东部）进行以“长征”闻名的六千英里英勇撤退的锻炼而变得更加坚强。我在他的窑洞里度过好多个夜晚，听他讲自己的生平，介绍到那时为止的共产党革命历史。</p>
</li>
<li>
<p>毛主席本来可以带着可以理解的自豪感谈到他的“自力更生”政策。但是他没有夸口。我发现他处于作哲理思考的情绪之中，谈到他同死亡的约会，而且看上去愿意把自己的政治遗产留待后世去评价。这位老战士还有一两度精力的高潮，还有时间去发动“无产阶级文化大革命”，以使他的教导在青年身上留下持久的印记，这是到第二年才充分显示出来的。</p>
</li>
<li>
<p>好多年前，我请你把你的生平告诉我。开始你反对，我争论说，让中国人民和外国人民知道你是怎样的人，是什么力量在推动你工作，这是有用处的。我想你会同意，把你的传记发表出来是好事，不是坏事。如今，又有谣言说你病得很重。如果在屏幕上向全世界戳穿这些谣言是极大的夸张，那不是很好吗？</p>
</li>
<li>
<p>在我看来，毛泽东很可能想通过这种方式，把中国对战争与和平的条件的看法，特别是对越南问题的看法通知美国。</p>
</li>
<li>
<p>毛泽东直截了当地声明，除非中国领土受到直接攻击，中国不会介入越南。</p>
</li>
</ol>
<h2 id="西藏和神">西藏和神</h2>
<ol>
<li>
<p>封建主已经失去了土地，他们的农奴得到了解放，现在做了主人。</p>
</li>
<li>
<p>开始时决定胜败的不是手中有什么武器。真正起决定作用的是胜利的决心和正确的目标。还有其他许多因素。现在二十多年过去了，他们的武器比过去的好了，但是决定胜负的仍然是同样的那些因素。</p>
</li>
<li>
<p>那时大家想的主要是从日本人手里解放中国。我那时的确没有预见到革命中国的兴起在世界上的全部意义。</p>
</li>
</ol>
<h2 id="关于第三世界">关于第三世界</h2>
<ol>
<li>
<p>一个脱离群众的政府是决不能扑灭解放战争的。</p>
</li>
<li>
<p>在东南亚，在印度、非洲甚至拉丁美洲的某些国家，存在着一些与引起中国革命的社会条件相似的社会条件。每个国家有它自己的问题，解决的办法也很不相同，但是我不知道你是否同意，将来发生的社会革命有许多地方可以借鉴中国的经验？</p>
</li>
<li>
<p>哪里有严重的压迫，那里就会有革命。</p>
</li>
</ol>
<h2 id="原子弹">原子弹</h2>
<ol>
<li>即使人类从地球上消灭了（进行大规模的自杀），生命不可能被人造的原子弹消灭。</li>
</ol>
<h2 id="裁军">裁军？</h2>
<ol>
<li>肯尼迪总统被暗杀时，中国（共产党）人感到非常吃惊。他们可没有谋划暗杀他。赫鲁晓夫在俄国被撤职的时候，中国人又一次大吃一惊。他们并没有下命令叫这样做呀。</li>
</ol>
<h2 id="中国人口有多少">中国人口有多少？</h2>
<ol>
<li>解放前，他们生了儿子隐瞒不报，为的是怕抽壮丁。解放后，他们倾向于多报人数，少报土地，缩小产量，夸大灾情。</li>
</ol>
<h2 id="美国在越南">美国在越南</h2>
<ol>
<li>在中国取得反帝革命胜利的条件是：第一，蒋介石领导的旧统治集团软弱无能，这个人经常吃败仗。第二，人民解放军很强，有得力的领导，人民也信任它。在这些条件不具备的地方，美国人就能进行干预。否则他们就来不了，或者很快就得离开。</li>
</ol>
<h2 id="中国和美国">中国和美国</h2>
<ol>
<li>
<p>只有美国军队入侵中国，才会发生战争。他们可能来，他们也可能不来。如果他们来，他们确实不会得到很多便宜。那简直是不允许的。美国领导人大概知道这一点，因此他们不会入侵中国。这样就不会有战争，因为如果他们不派军队到中国来，中国当然决不会派军队去进攻美国。</p>
</li>
<li>
<p>有些美国人曾经说，中国革命是俄国侵略者领导的，但实际上中国革命是美国人武装起来的。</p>
</li>
</ol>
<h2 id="去见上帝">去见上帝</h2>
<ol>
<li>
<p>毛提起他的两个弟弟都已被杀害。[插图]他的第一个妻子也在革命时期（一九三〇年）被害，他们的儿子是朝鲜战争中牺牲的。他说，奇怪的是，至今死亡总是放过了他。他好几次准备了要死，但死亡看来就是不要他。他有什么办法呢？有几次看来他要死了。他的一个警卫员紧挨他站着时被打死了。有一次他全身溅满了另一个士兵的鲜血，可是炸弹没有碰到他。</p>
</li>
<li>
<p>按照辩证法的规律，一切斗争最后都必须得到解决，地球上人的生存斗争也是这样。</p>
</li>
<li>
<p>在中国全部悠久的历史中，我不记得有任何人曾像你这样崛起于默默无闻的农村，不但领导一场社会革命获得成功，而且写下了这个革命的历史，制定出获得军事胜利的战略，阐明了一种改变中国传统思想的意识形态学说，然后在一种新的文化中实践了自己的哲学，这种新文化对全世界产生广泛的影响。</p>
</li>
<li>
<p>毛想了一下然后说，我知道，他的生涯是从做小学教员开始的。当时他没有想到打仗。也没有想到成为共产党人。他像我一样，多少是个民主人士。后来——他有时也感到奇怪，是哪些原因偶然凑合的结果——他才变得有志于建立中国共产党。不管怎样，事情的发展是不以个人的意志为转移的。重要的是，中国受到了帝国主义、封建主义和官僚资本主义的压迫。事实就是这样……</p>
</li>
<li>
<p>听讲历史和读书，跟亲身经历过是不同的。</p>
</li>
<li>
<p>从现在起一千年之后，所有我们这些人，甚至马克思、恩格斯和列宁都在内，大概会显得相当可笑吧。</p>
</li>
</ol>
<h2 id="毛泽东一九七年同斯诺的谈话">毛泽东一九七〇年同斯诺的谈话</h2>
<ol>
<li>
<p>主席说，所谓“四个伟大”——对毛本人的称号——“伟大的导师、伟大的领袖、伟大的统帅、伟大的舵手”讨嫌。总有一天要统统去掉。只剩下“TEACHER（导师）”这个词，就是教员。毛历来是当教员的，现在还是当教员。甚至在他成为共产主义者之前，他就是长沙的一个小学教员。其他的称号一概辞去。</p>
</li>
<li>
<p>我常常想，不知道那些呼毛口号最响，挥动旗子最起劲的人，是不是——就像有些人所说的——在打着红旗反红旗。</p>
</li>
<li>
<p>毛点点头。他说，这些人分三种。一种是真心实意的。第二种是随大流的——因为别人喊“万岁”，他们也跟着喊。第三种人是伪君子。我（按：指斯诺）没有受这一套的骗是对的。</p>
</li>
<li>
<p>教给中国人民进行革命的正是日本军国主义者。由于他们的侵略，他们激起中国人民进行战斗，并且帮助了中国的社会主义取得统治地位。</p>
</li>
<li>
<p>尼克松是毛泽东最好的代理人。他对柬埔寨炸得越凶，他就越使更多的人变成共产党人。他是他们最好的弹药运输人。</p>
</li>
<li>
<p>文化大革命中有两件事他很不赞成。一个是讲假话。有人一面说要文斗，不要武斗，而实际上却在桌子下面踢人家一脚，然后把脚收回来。当被踢的那个人问他：“你为什么踢我啊？”他又说：“我没有踢啊，你看，我的脚不是还在这里吗？”毛说，这是讲假话。后来，文化大革命中的冲突发展成了打派仗——开始用长矛，后头用步枪，又用迫击炮。外国人讲中国大乱，不是假话，是真的，武斗。主席很不高兴的另一件事是虐待“俘虏”——即罢了官和接受再教育的党员和其他人。解放军的老办法——释放俘虏并发给路费回家，这曾使许多敌人士兵受到感化而志愿参加他们的队伍——常常被忽视了。</p>
</li>
<li>
<p>如果一个人不讲真话，他怎么能得到别人的信任呢？谁信任你啊？朋友之间也是这样。</p>
</li>
<li>
<p>中国应该学美国把责任和财富分散到五十个州的那种发展办法。中央政府不能什么事都干。中国必须依靠地区和地方的积极性。</p>
</li>
</ol>
<h2 id="附-天安门上会见毛泽东">附 天安门上会见毛泽东</h2>
<ol>
<li>
<p>中国领导人当众做的事情都是有目的的。重大的事情正在发生，但这是什么事情呢？</p>
</li>
<li>
<p>个人崇拜是“讨厌”的。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《党委会的工作方法》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%85%9A%E5%A7%94%E4%BC%9A%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95/</link>
      <pubDate>Wed, 27 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%85%9A%E5%A7%94%E4%BC%9A%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082316158.png&#34; alt=&#34;image-20231008231646096&#34; style=&#34;zoom: 50%;&#34; /&gt;
&lt;h2 id=&#34;2&#34;&gt;2&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;不懂得和不了解的东西要问下级，不要轻易表示赞成或反对。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些文件起草出来压下暂时不发，就是因为其中还有些问题没有弄清楚，需要先征求下级的意见。我们切不可强不知以为知，要“不耻下问”，要善于倾听下面干部的意见。先做学生，然后再做先生；先向下面干部请教，然后再下命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们做出的决定包括了下面干部提出的正确意见，他们当然拥护。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;党委对主要工作不但一定要“抓”，而且一定要“抓紧”。什么东西只有抓得很紧，毫不放松，才能抓住。抓而不紧，等于不抓。伸着巴掌，当然什么也抓不住。就是把手握起来，但是不握紧，样子像抓，还是抓不住东西。我们有些同志，也抓主要工作，但是抓而不紧，所以工作还是不能做好。不抓不行，抓而不紧也不行。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3&#34;&gt;3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在任何群众运动中，群众积极拥护的有多少，反对的有多少，处于中间状态的有多少，这些都必须有个基本的调查，基本的分析，不可无根据地、主观地决定问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;开会要事先通知，像出安民告示一样，让大家知道要讨论什么问题，解决什么问题，并且早作准备。有些地方开干部会，事前不准备好报告和决议草案，等开会的人到了才临时凑合，好像“兵马已到，粮草未备”，这是不好的。如果没有准备，就不要急于开会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;讲话、演说、写文章和写决议案，都应当简明扼要。会议也不要开得太长。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意团结那些和自己意见不同的同志一道工作。不论在地方上或部队里，都应该注意这一条。对党外人士也是一样。我们都是从五湖四海汇集拢来的，我们不仅要善于团结和自己意见相同的同志，而且要善于团结和自己意见不同的同志一道工作。我们当中还有犯过很大错误的人，不要嫌这些人，要准备和他们一道工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;力戒骄傲。这对领导者是一个原则问题，也是保持团结的一个重要条件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4&#34;&gt;4&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;我们看问题一定不要忘记划清这两种界限：革命和反革命的界限，成绩和缺点的界限。记着这两条界限，事情就好办，否则就会把问题的性质弄混淆了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们对于每一个人和每一件事，都应该采取分析研究的态度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082316158.png" alt="image-20231008231646096" style="zoom: 50%;" />
<h2 id="2">2</h2>
<ol>
<li>
<p>不懂得和不了解的东西要问下级，不要轻易表示赞成或反对。</p>
</li>
<li>
<p>有些文件起草出来压下暂时不发，就是因为其中还有些问题没有弄清楚，需要先征求下级的意见。我们切不可强不知以为知，要“不耻下问”，要善于倾听下面干部的意见。先做学生，然后再做先生；先向下面干部请教，然后再下命令。</p>
</li>
<li>
<p>我们做出的决定包括了下面干部提出的正确意见，他们当然拥护。</p>
</li>
<li>
<p>党委对主要工作不但一定要“抓”，而且一定要“抓紧”。什么东西只有抓得很紧，毫不放松，才能抓住。抓而不紧，等于不抓。伸着巴掌，当然什么也抓不住。就是把手握起来，但是不握紧，样子像抓，还是抓不住东西。我们有些同志，也抓主要工作，但是抓而不紧，所以工作还是不能做好。不抓不行，抓而不紧也不行。</p>
</li>
</ol>
<h2 id="3">3</h2>
<ol>
<li>
<p>在任何群众运动中，群众积极拥护的有多少，反对的有多少，处于中间状态的有多少，这些都必须有个基本的调查，基本的分析，不可无根据地、主观地决定问题。</p>
</li>
<li>
<p>开会要事先通知，像出安民告示一样，让大家知道要讨论什么问题，解决什么问题，并且早作准备。有些地方开干部会，事前不准备好报告和决议草案，等开会的人到了才临时凑合，好像“兵马已到，粮草未备”，这是不好的。如果没有准备，就不要急于开会。</p>
</li>
<li>
<p>讲话、演说、写文章和写决议案，都应当简明扼要。会议也不要开得太长。</p>
</li>
<li>
<p>注意团结那些和自己意见不同的同志一道工作。不论在地方上或部队里，都应该注意这一条。对党外人士也是一样。我们都是从五湖四海汇集拢来的，我们不仅要善于团结和自己意见相同的同志，而且要善于团结和自己意见不同的同志一道工作。我们当中还有犯过很大错误的人，不要嫌这些人，要准备和他们一道工作。</p>
</li>
<li>
<p>力戒骄傲。这对领导者是一个原则问题，也是保持团结的一个重要条件。</p>
</li>
</ol>
<h2 id="4">4</h2>
<ol>
<li>
<p>我们看问题一定不要忘记划清这两种界限：革命和反革命的界限，成绩和缺点的界限。记着这两条界限，事情就好办，否则就会把问题的性质弄混淆了。</p>
</li>
<li>
<p>我们对于每一个人和每一件事，都应该采取分析研究的态度。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《秘密》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E7%A7%98%E5%AF%86/</link>
      <pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E7%A7%98%E5%AF%86/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082313609.png&#34; alt=&#34;image-20231008231301109&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h2 id=&#34;6&#34;&gt;6&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;简直够了！刚开始以为妻子死了，终日叹气愁苦不堪，接着又为失去女儿而悲痛，可恶的是两种情况不知什么时候又会交替。自己失去的到底是妻子还是女儿？！没有人能清楚地告诉他。这种对真相的一无所知、深切的悲痛，连同让心情无法恢复平静的空虚，无时无刻不侵蚀着他。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;18&#34;&gt;18&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;当无法忍受自己的遭遇时，就希望有一个怨恨的对象。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;20&#34;&gt;20&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;时间一直在流逝，以后也会继续。榻榻米的茶色会越来越深，自己也会渐渐衰老。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;23&#34;&gt;23&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;如果打破了一个规矩，就会接着打破第二个、第三个，持续下去就完蛋了。学习也是这样，我之前的人生就是一个例子。其后果就是，从小学到短期大学的十四年里虽然上了学，却没学到什么安身立命的手艺。我可不想同样的事发生两次，死也不要再产生那么深切的懊悔。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这世界上有很多很棒的东西，比如不用花钱就能感到幸福或改变世界观的东西，而且都能轻易得到。我总在想，为什么我现在才发现呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我不是单纯地把那些孩子作为中学生行为举止的范本，而是和他们在一起，能感觉到之前的旧价值观获得了更新。不仅如此，我还感受到，自己所不知道的精神之花一朵朵地绽放了。和她们接触之后，我眼中的世界的颜色都不一样了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;27&#34;&gt;27&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;明明有轻松的道路，却偏偏要选一条艰苦的，并且牺牲快乐的时光来学习——这样的努力没有理由收获不到回报。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;37&#34;&gt;37&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;当你告诉我我和文也没有血缘关系时，我光在考虑自己还能不能当好一个父亲，却完全没想过要为爱的人选择一条幸福的路。我明明那么爱文也，却做了这么蠢的事。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;43&#34;&gt;43&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;自己的事情自己最清楚。这样下去，我会慢慢消失。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;45&#34;&gt;45&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;“什么事情都会有结束的一天。其实我的生命本应该在事故发生那天就结束，只是被延长到了今天。”她小声地继续说，“我能活着，都是因为你。”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;46&#34;&gt;46&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;或许就是这样，当失去什么的时候，时间总是过得飞快。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082313609.png" alt="image-20231008231301109" style="zoom:50%;" />
<h2 id="6">6</h2>
<ol>
<li>简直够了！刚开始以为妻子死了，终日叹气愁苦不堪，接着又为失去女儿而悲痛，可恶的是两种情况不知什么时候又会交替。自己失去的到底是妻子还是女儿？！没有人能清楚地告诉他。这种对真相的一无所知、深切的悲痛，连同让心情无法恢复平静的空虚，无时无刻不侵蚀着他。</li>
</ol>
<h2 id="18">18</h2>
<ol>
<li>当无法忍受自己的遭遇时，就希望有一个怨恨的对象。</li>
</ol>
<h2 id="20">20</h2>
<ol>
<li>时间一直在流逝，以后也会继续。榻榻米的茶色会越来越深，自己也会渐渐衰老。</li>
</ol>
<h2 id="23">23</h2>
<ol>
<li>
<p>如果打破了一个规矩，就会接着打破第二个、第三个，持续下去就完蛋了。学习也是这样，我之前的人生就是一个例子。其后果就是，从小学到短期大学的十四年里虽然上了学，却没学到什么安身立命的手艺。我可不想同样的事发生两次，死也不要再产生那么深切的懊悔。</p>
</li>
<li>
<p>这世界上有很多很棒的东西，比如不用花钱就能感到幸福或改变世界观的东西，而且都能轻易得到。我总在想，为什么我现在才发现呢？</p>
</li>
<li>
<p>我不是单纯地把那些孩子作为中学生行为举止的范本，而是和他们在一起，能感觉到之前的旧价值观获得了更新。不仅如此，我还感受到，自己所不知道的精神之花一朵朵地绽放了。和她们接触之后，我眼中的世界的颜色都不一样了。</p>
</li>
</ol>
<h2 id="27">27</h2>
<ol>
<li>明明有轻松的道路，却偏偏要选一条艰苦的，并且牺牲快乐的时光来学习——这样的努力没有理由收获不到回报。</li>
</ol>
<h2 id="37">37</h2>
<ol>
<li>当你告诉我我和文也没有血缘关系时，我光在考虑自己还能不能当好一个父亲，却完全没想过要为爱的人选择一条幸福的路。我明明那么爱文也，却做了这么蠢的事。</li>
</ol>
<h2 id="43">43</h2>
<ol>
<li>自己的事情自己最清楚。这样下去，我会慢慢消失。</li>
</ol>
<h2 id="45">45</h2>
<ol>
<li>“什么事情都会有结束的一天。其实我的生命本应该在事故发生那天就结束，只是被延长到了今天。”她小声地继续说，“我能活着，都是因为你。”</li>
</ol>
<h2 id="46">46</h2>
<ol>
<li>或许就是这样，当失去什么的时候，时间总是过得飞快。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《恶意》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%81%B6%E6%84%8F/</link>
      <pubDate>Fri, 22 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%81%B6%E6%84%8F/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082307846.png&#34; style=&#34;zoom: 50%;&#34; /&gt;
&lt;h2 id=&#34;事件之章-野野口修的手记&#34;&gt;事件之章 野野口修的手记&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;每个人都有秘密，都有不将其公开的权利，死人也是。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;疑惑之章-加贺恭一郎的记录&#34;&gt;疑惑之章 加贺恭一郎的记录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;教师和学生之间的关系，是建立在错觉上的。教师错以为自己在教授什么，学生错以为自己在学习什么。重要的是，这种错觉让双方都幸福。毕竟看清真相反而没有一点好处。我们在做的，不过是教育的过家家而已。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;求索之章-加贺恭一郎的独白&#34;&gt;求索之章 加贺恭一郎的独白&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;人在艰难困苦的时候不容易表现出开心的样子，反过来却没有那么难。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作家不会为了金钱出卖自己的作品，尤其是可能收获好评的作品。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;告白之章-野野口修的手记&#34;&gt;告白之章 野野口修的手记&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在一起的时候越幸福，分开的时候就越痛苦。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于作家来说，作品就像自己的分身一样。说得更明白些，它就是作家的孩子。作家爱着自己创作出来的作品，就像世上的父母爱他们的孩子一般。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓写作者就是这样，一定会把自己写的东西保存下来。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;过去之章一-加贺恭一郎的记录&#34;&gt;过去之章（一） 加贺恭一郎的记录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;这种人只不过是喜欢把自己的快乐建立在别人的不幸之上，总是处处寻找这样的机会。至于对象是谁，他们根本无所谓。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;真相之章-加贺恭一郎的阐明&#34;&gt;真相之章 加贺恭一郎的阐明&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;那大量的作品不是过去写的，而是最近匆忙写的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;日高先生根本就没有剽窃你的小说，旧横线本和稿纸上的东西，不过是你对日高先生作品的仿写。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你一点儿都不怕被捕，不只如此，你的所有计划都是以被捕为前提制订的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你费了大量时间和精力，就是为了制造一个动机，一个杀害日高邦彦先生的恰当动机。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这真是令人震惊的想法，杀人之前先把动机准备好，简直前所未闻。别看我现在如此确信，得到这个结论可让我着实头疼了一番：这种事真的有可能发生吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;横线本和稿纸上的作品也好，暗示你和日高初美女士关系的小道具也罢，都是同样的道理。如果它们是能使你脱罪的证据，那么警方肯定会仔细确认真伪，但恰恰相反，它们都直指你的动机。遗憾的是在当下，警方倾向于严查对嫌疑人有利的证据，而于嫌疑人不利的证据就处理得很宽松。你正是很好地利用了这一漏洞。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那个按着女中学生、协助藤尾正哉施暴的人正是你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当教师说“霸凌现象不复存在了”，他们说的仅仅是“我希望霸凌现象不复存在了”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;嗯，是的，我说的是猫，你杀死的那只猫。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你做了毒丸子，然后选准日高夫妇不在家的时候，把毒丸子放进他们的庭院，杀死了猫。理由只有一个——制造我刚才描述的日高先生的形象。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你在捏造那份手记时就考虑到，有必要在一开始就将日高邦彦这个人物的残忍根植在阅读者心里。为此，你准备了杀猫的插曲。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这个动机被公开时，世人的同情必须集中到你身上，而被害人日高先生将身败名裂。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不害怕被逮捕，纵使拼上所剩无几的生命，也要贬损一个人的人品。我在想，这究竟是怎样一种心理？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;就是因为看不顺眼所以看不顺眼。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对日高先生，你的心里潜藏着自己都无法理解的、深不见底的恶意，于是才有了这次的案件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;日高先生没有任何理由被你憎恨。他曾是个优秀的少年，还本该是你的恩人。虽然你和藤尾正哉合伙霸凌过他，他仍然拯救了你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这份恩情反而滋生了憎恨。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在他面前，你不可能没有低人一等的感觉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你少年时代讨厌日高先生，或许正是你母亲这种不假思索的蔑视埋下的种子。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202310082307846.png" style="zoom: 50%;" />
<h2 id="事件之章-野野口修的手记">事件之章 野野口修的手记</h2>
<ol>
<li>每个人都有秘密，都有不将其公开的权利，死人也是。</li>
</ol>
<h2 id="疑惑之章-加贺恭一郎的记录">疑惑之章 加贺恭一郎的记录</h2>
<ol>
<li>教师和学生之间的关系，是建立在错觉上的。教师错以为自己在教授什么，学生错以为自己在学习什么。重要的是，这种错觉让双方都幸福。毕竟看清真相反而没有一点好处。我们在做的，不过是教育的过家家而已。</li>
</ol>
<h2 id="求索之章-加贺恭一郎的独白">求索之章 加贺恭一郎的独白</h2>
<ol>
<li>
<p>人在艰难困苦的时候不容易表现出开心的样子，反过来却没有那么难。</p>
</li>
<li>
<p>作家不会为了金钱出卖自己的作品，尤其是可能收获好评的作品。</p>
</li>
</ol>
<h2 id="告白之章-野野口修的手记">告白之章 野野口修的手记</h2>
<ol>
<li>
<p>在一起的时候越幸福，分开的时候就越痛苦。</p>
</li>
<li>
<p>对于作家来说，作品就像自己的分身一样。说得更明白些，它就是作家的孩子。作家爱着自己创作出来的作品，就像世上的父母爱他们的孩子一般。</p>
</li>
<li>
<p>所谓写作者就是这样，一定会把自己写的东西保存下来。</p>
</li>
</ol>
<h2 id="过去之章一-加贺恭一郎的记录">过去之章（一） 加贺恭一郎的记录</h2>
<ol>
<li>这种人只不过是喜欢把自己的快乐建立在别人的不幸之上，总是处处寻找这样的机会。至于对象是谁，他们根本无所谓。</li>
</ol>
<h2 id="真相之章-加贺恭一郎的阐明">真相之章 加贺恭一郎的阐明</h2>
<ol>
<li>
<p>那大量的作品不是过去写的，而是最近匆忙写的。</p>
</li>
<li>
<p>日高先生根本就没有剽窃你的小说，旧横线本和稿纸上的东西，不过是你对日高先生作品的仿写。</p>
</li>
<li>
<p>你一点儿都不怕被捕，不只如此，你的所有计划都是以被捕为前提制订的。</p>
</li>
<li>
<p>你费了大量时间和精力，就是为了制造一个动机，一个杀害日高邦彦先生的恰当动机。</p>
</li>
<li>
<p>这真是令人震惊的想法，杀人之前先把动机准备好，简直前所未闻。别看我现在如此确信，得到这个结论可让我着实头疼了一番：这种事真的有可能发生吗？</p>
</li>
<li>
<p>横线本和稿纸上的作品也好，暗示你和日高初美女士关系的小道具也罢，都是同样的道理。如果它们是能使你脱罪的证据，那么警方肯定会仔细确认真伪，但恰恰相反，它们都直指你的动机。遗憾的是在当下，警方倾向于严查对嫌疑人有利的证据，而于嫌疑人不利的证据就处理得很宽松。你正是很好地利用了这一漏洞。</p>
</li>
<li>
<p>那个按着女中学生、协助藤尾正哉施暴的人正是你。</p>
</li>
<li>
<p>当教师说“霸凌现象不复存在了”，他们说的仅仅是“我希望霸凌现象不复存在了”。</p>
</li>
<li>
<p>嗯，是的，我说的是猫，你杀死的那只猫。</p>
</li>
<li>
<p>你做了毒丸子，然后选准日高夫妇不在家的时候，把毒丸子放进他们的庭院，杀死了猫。理由只有一个——制造我刚才描述的日高先生的形象。</p>
</li>
<li>
<p>你在捏造那份手记时就考虑到，有必要在一开始就将日高邦彦这个人物的残忍根植在阅读者心里。为此，你准备了杀猫的插曲。</p>
</li>
<li>
<p>这个动机被公开时，世人的同情必须集中到你身上，而被害人日高先生将身败名裂。</p>
</li>
<li>
<p>不害怕被逮捕，纵使拼上所剩无几的生命，也要贬损一个人的人品。我在想，这究竟是怎样一种心理？</p>
</li>
<li>
<p>就是因为看不顺眼所以看不顺眼。</p>
</li>
<li>
<p>对日高先生，你的心里潜藏着自己都无法理解的、深不见底的恶意，于是才有了这次的案件。</p>
</li>
<li>
<p>日高先生没有任何理由被你憎恨。他曾是个优秀的少年，还本该是你的恩人。虽然你和藤尾正哉合伙霸凌过他，他仍然拯救了你。</p>
</li>
<li>
<p>这份恩情反而滋生了憎恨。</p>
</li>
<li>
<p>在他面前，你不可能没有低人一等的感觉。</p>
</li>
<li>
<p>你少年时代讨厌日高先生，或许正是你母亲这种不假思索的蔑视埋下的种子。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-21</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-21-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309261941811.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309261941811.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-20</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 20 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-20-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309202252843.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309202252843.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-18</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 18 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-18-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309182207300.png&#34; alt=&#34;image-20230918220752943&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309182207300.png" alt="image-20230918220752943" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-17</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 17 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-17-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;今天本来打算户外跑20公里，试下半马的，但是还是算了，再等等吧，《Feeling Me》觉得蛮好听的，用来跑步最合适不过了。&lt;/p&gt;
&lt;p&gt;现在在吃上面的控制越来越强了，可以说不吃就不吃。饮食的控制过程，确实很痛苦，不能乱吃，也不能不吃，既这样，又那样，还是很不好受的，差点给整抑郁了，也不知道自己这么严格干嘛，别人过得多滋润，我却要这样受罪。不过好在都熬过来了，现在对饮食这块控制强得很，说不吃就不吃，吃多少就多少。珍珠奶茶估计放我面前，都可以不动的，就是被迫灌进嘴里都可以不咽下去，我知道我的决心是大到一定程度了。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172126863.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172126520.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>今天本来打算户外跑20公里，试下半马的，但是还是算了，再等等吧，《Feeling Me》觉得蛮好听的，用来跑步最合适不过了。</p>
<p>现在在吃上面的控制越来越强了，可以说不吃就不吃。饮食的控制过程，确实很痛苦，不能乱吃，也不能不吃，既这样，又那样，还是很不好受的，差点给整抑郁了，也不知道自己这么严格干嘛，别人过得多滋润，我却要这样受罪。不过好在都熬过来了，现在对饮食这块控制强得很，说不吃就不吃，吃多少就多少。珍珠奶茶估计放我面前，都可以不动的，就是被迫灌进嘴里都可以不咽下去，我知道我的决心是大到一定程度了。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172126863.png" style="zoom:33%;" />
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172126520.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>减重20斤总结记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-17-%E5%87%8F%E9%87%8D20%E6%96%A4%E6%80%BB%E7%BB%93%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 17 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-17-%E5%87%8F%E9%87%8D20%E6%96%A4%E6%80%BB%E7%BB%93%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;今年4月中旬，开始萌生减肥的想法，这也不是第一次了，这些年总是反反复复，减肥这个事情，坚持一段时间，然后又突然打回原形，没有任何进展。我自己都已经习惯了，也没什么好懊恼的，所以心情特别平静，但是这一次，想着，总是这样好像也说不过去吧，总得试一试。&lt;/p&gt;
&lt;p&gt;开始用薄荷APP记录饮食，然后称重，然后是下班回来开始跑步，跑着跑着容易膝盖疼，好的，那就缓一缓再继续，但是突然又下雨了，哎呀，今天就算了，明天再说，然后明天又下雨了，那就再明天，然后又下雨了，然后就没有然后了。&lt;/p&gt;
&lt;p&gt;我一下子好像明白问题出在哪里了，就是坚持这个事情，本来是可以养成习惯的，但是因为户外跑步，经常下雨，一两天之后，习惯又开始没了，人的惰性一旦占据上风，再赢回来就得做一下心理建设，这一关通常比较难，要是再碰到下雨，跑步这事又得黄，思来想去，不行，这不是办法。&lt;/p&gt;
&lt;p&gt;没撤，去健身房，办了年卡，健身区 + 游泳。&lt;/p&gt;
&lt;p&gt;都说游泳是最佳的有氧运动，对膝盖起到很好的保护，那就先去游泳，然后开始研究游泳，买了装备，每天下班就去。大概坚持了一两个月吧，感觉体重没啥变化，每天就狗刨式的游法，强度不是很够，怎么感觉是在享受生活，不是来锻炼的，蝶泳和自由泳什么的，还要先学，好像也蛮难学的，也就试了下。然后想着，后面再学吧，先把体重减了，增强下信心，然后游泳就先停停，去健身区撸铁。&lt;/p&gt;
&lt;p&gt;先从爬坡开始吧。跑步机上面跑步体验没户外舒服，只能先适应了，至少不会因为下雨什么的，中断训练了。这才是最关键的，只要把运动习惯养成了，后面就不会那么难了。&lt;/p&gt;
&lt;p&gt;每天就是先做几组力量训练，然后开始爬坡，爬1个小时，最大14的坡度。坚持到一段时间后，加上看《施瓦辛格健身全书》，对健身和减肥有了更为科学的认知，所以，心态各方面又调整了下，开始明确饮食的重要性。&lt;/p&gt;
&lt;p&gt;开始使用薄荷APP记录每天的饮食，以前早上，肠粉、炒粉，中午公司食堂打满，晚上烧烤，炸串奶茶，周末，kfc，炸鸡，新疆羊肉串，可乐等等想吃啥吃啥，想喝啥喝啥，现在开始就要慢慢控制了，这过程其实很漫长，并不是现在一两句话那么简单，对于一个新疆羊肉串可以吃到一百多的人，kfc可以吃6块原味鸡套餐的人来说，那是真的太难了，还有珍珠奶茶，冰西瓜，要了老命了，每次路过冰西瓜摊，总是纠结要买来吃，不吃活着有什么意思，我已经在控制不喝珍珠奶茶了啊，难道连这个都不可以么。&lt;/p&gt;
&lt;p&gt;现在总结一下的话，控制饮食原来才是最难的，因为吃方面受到了限制，引发一连串的问题，一方面可能是因为碳水摄入不足，导致情绪很不稳定，情绪一不稳定就开始胡思乱想，想吃的不能吃，不想吃的又不能不吃，想做的不能做，不想做的又不能不做。每天上班加班已经很累了，还有去健身房，回来都很晚了，啥都没干都快12点了。每天如此。路过奶茶店、冰西瓜摊总想买点，有时在跑步机上，就开始想着，要不等下回去买杯珍珠奶茶吧。然后想了想，还是算了，不然白锻炼了。很多人都说，减肥不是什么都不能吃，只要控制摄入量就可以了，这说的当然没错，减肥不应该一刀切，不就一杯奶茶嘛，我等下再多运动运动就好了，不就一杯奶茶嘛，我等下少吃点其他的就可以了，少来了，信了你就上当了。你不要太相信自己的控制能力了，有一就有二，有二就有三，人总是会不断地说服自己，不断给自己的行为增加正当性，以此来减少不当行为给自身带来的负罪感，趋利避害人之本性，要尊重人性，所以，前期还没能完全掌控之前，一刀切不可避免。&lt;/p&gt;
&lt;p&gt;这样一久就开始想不开，怀疑人生了，不知道每天到底图什么，天天就玉米、土豆、鸡蛋、西兰花，简单拌一下，中午在公司也是只吃鸡肉，不能吃烧鸭、猪脚了，其他油炸的更加不会去碰了。后来受不了，只能买老干妈了，不然吃得太寡淡了，结果一瓶老干妈一两天就吃完了，吃完了又开始自责懊恼，连连说不能再这样了，这种情绪一直持续了一段时间，我也是见机行事了，后来应该是买了2次老干妈，然后就没再买了，我知道我赢了。&lt;/p&gt;
&lt;p&gt;没了老干妈，为了解决口味寡淡的问题，只能买油醋汁了，虽然还是玉米、土豆、鸡蛋、西兰花这些，但是好一些了。&lt;/p&gt;
&lt;p&gt;有一次在健身房，碰到美女销售，她直夸我变瘦那么多，我其实并没觉得减很多，只有十几斤这样，但是真感觉身体方方面面都有变化了。&lt;/p&gt;
&lt;p&gt;因为吃得健康，皮肤好像变好了很多，眼睛更亮了，然后肚子也小了，有一次穿那条裤子，居然可以扣上去了，把我吓一跳，然后口味越来越淡了，也不会觉得烦躁，信心越来越足了。&lt;/p&gt;
&lt;p&gt;虽然才20斤，好像也不是什么了不起的成绩，但是自己的话，还是高兴的，更高兴的是对身体的控制，任何影响到我减肥的事情，都会被我有效的解决掉，比如现在对饮食这块控制就强得很，说不吃就不吃，吃多少就多少。
加班那时，点了下午茶，本来想试下瑞幸酱香奶茶的，但是没有了，给其他人都是奶茶，我自己喝黑咖啡。估计把冰珍珠奶茶放我跟前，我都可以不为所动，就是被迫灌进嘴里都可以不咽下去，此时此刻，我清楚地知道我的决心是大到一定程度了。&lt;/p&gt;
&lt;p&gt;那天，路过冰西瓜摊，我直接就走过去了，没有犹豫一秒钟。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>今年4月中旬，开始萌生减肥的想法，这也不是第一次了，这些年总是反反复复，减肥这个事情，坚持一段时间，然后又突然打回原形，没有任何进展。我自己都已经习惯了，也没什么好懊恼的，所以心情特别平静，但是这一次，想着，总是这样好像也说不过去吧，总得试一试。</p>
<p>开始用薄荷APP记录饮食，然后称重，然后是下班回来开始跑步，跑着跑着容易膝盖疼，好的，那就缓一缓再继续，但是突然又下雨了，哎呀，今天就算了，明天再说，然后明天又下雨了，那就再明天，然后又下雨了，然后就没有然后了。</p>
<p>我一下子好像明白问题出在哪里了，就是坚持这个事情，本来是可以养成习惯的，但是因为户外跑步，经常下雨，一两天之后，习惯又开始没了，人的惰性一旦占据上风，再赢回来就得做一下心理建设，这一关通常比较难，要是再碰到下雨，跑步这事又得黄，思来想去，不行，这不是办法。</p>
<p>没撤，去健身房，办了年卡，健身区 + 游泳。</p>
<p>都说游泳是最佳的有氧运动，对膝盖起到很好的保护，那就先去游泳，然后开始研究游泳，买了装备，每天下班就去。大概坚持了一两个月吧，感觉体重没啥变化，每天就狗刨式的游法，强度不是很够，怎么感觉是在享受生活，不是来锻炼的，蝶泳和自由泳什么的，还要先学，好像也蛮难学的，也就试了下。然后想着，后面再学吧，先把体重减了，增强下信心，然后游泳就先停停，去健身区撸铁。</p>
<p>先从爬坡开始吧。跑步机上面跑步体验没户外舒服，只能先适应了，至少不会因为下雨什么的，中断训练了。这才是最关键的，只要把运动习惯养成了，后面就不会那么难了。</p>
<p>每天就是先做几组力量训练，然后开始爬坡，爬1个小时，最大14的坡度。坚持到一段时间后，加上看《施瓦辛格健身全书》，对健身和减肥有了更为科学的认知，所以，心态各方面又调整了下，开始明确饮食的重要性。</p>
<p>开始使用薄荷APP记录每天的饮食，以前早上，肠粉、炒粉，中午公司食堂打满，晚上烧烤，炸串奶茶，周末，kfc，炸鸡，新疆羊肉串，可乐等等想吃啥吃啥，想喝啥喝啥，现在开始就要慢慢控制了，这过程其实很漫长，并不是现在一两句话那么简单，对于一个新疆羊肉串可以吃到一百多的人，kfc可以吃6块原味鸡套餐的人来说，那是真的太难了，还有珍珠奶茶，冰西瓜，要了老命了，每次路过冰西瓜摊，总是纠结要买来吃，不吃活着有什么意思，我已经在控制不喝珍珠奶茶了啊，难道连这个都不可以么。</p>
<p>现在总结一下的话，控制饮食原来才是最难的，因为吃方面受到了限制，引发一连串的问题，一方面可能是因为碳水摄入不足，导致情绪很不稳定，情绪一不稳定就开始胡思乱想，想吃的不能吃，不想吃的又不能不吃，想做的不能做，不想做的又不能不做。每天上班加班已经很累了，还有去健身房，回来都很晚了，啥都没干都快12点了。每天如此。路过奶茶店、冰西瓜摊总想买点，有时在跑步机上，就开始想着，要不等下回去买杯珍珠奶茶吧。然后想了想，还是算了，不然白锻炼了。很多人都说，减肥不是什么都不能吃，只要控制摄入量就可以了，这说的当然没错，减肥不应该一刀切，不就一杯奶茶嘛，我等下再多运动运动就好了，不就一杯奶茶嘛，我等下少吃点其他的就可以了，少来了，信了你就上当了。你不要太相信自己的控制能力了，有一就有二，有二就有三，人总是会不断地说服自己，不断给自己的行为增加正当性，以此来减少不当行为给自身带来的负罪感，趋利避害人之本性，要尊重人性，所以，前期还没能完全掌控之前，一刀切不可避免。</p>
<p>这样一久就开始想不开，怀疑人生了，不知道每天到底图什么，天天就玉米、土豆、鸡蛋、西兰花，简单拌一下，中午在公司也是只吃鸡肉，不能吃烧鸭、猪脚了，其他油炸的更加不会去碰了。后来受不了，只能买老干妈了，不然吃得太寡淡了，结果一瓶老干妈一两天就吃完了，吃完了又开始自责懊恼，连连说不能再这样了，这种情绪一直持续了一段时间，我也是见机行事了，后来应该是买了2次老干妈，然后就没再买了，我知道我赢了。</p>
<p>没了老干妈，为了解决口味寡淡的问题，只能买油醋汁了，虽然还是玉米、土豆、鸡蛋、西兰花这些，但是好一些了。</p>
<p>有一次在健身房，碰到美女销售，她直夸我变瘦那么多，我其实并没觉得减很多，只有十几斤这样，但是真感觉身体方方面面都有变化了。</p>
<p>因为吃得健康，皮肤好像变好了很多，眼睛更亮了，然后肚子也小了，有一次穿那条裤子，居然可以扣上去了，把我吓一跳，然后口味越来越淡了，也不会觉得烦躁，信心越来越足了。</p>
<p>虽然才20斤，好像也不是什么了不起的成绩，但是自己的话，还是高兴的，更高兴的是对身体的控制，任何影响到我减肥的事情，都会被我有效的解决掉，比如现在对饮食这块控制就强得很，说不吃就不吃，吃多少就多少。
加班那时，点了下午茶，本来想试下瑞幸酱香奶茶的，但是没有了，给其他人都是奶茶，我自己喝黑咖啡。估计把冰珍珠奶茶放我跟前，我都可以不为所动，就是被迫灌进嘴里都可以不咽下去，此时此刻，我清楚地知道我的决心是大到一定程度了。</p>
<p>那天，路过冰西瓜摊，我直接就走过去了，没有犹豫一秒钟。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《沉思录》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%B2%89%E6%80%9D%E5%BD%95/</link>
      <pubDate>Sat, 16 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%B2%89%E6%80%9D%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;第1章-前言&#34;&gt;第1章 前言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在这个被称为森林公园的都会之中，人们没有欢乐，只有疲惫；没有激情，只有惰性。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第2章-在继承中闪耀的美德&#34;&gt;第2章 在继承中闪耀的美德&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在对待朋友的问题上，先父总能让自己与朋友的友谊之树长青，不会喜新厌旧，同时还保持着一种君子之交淡如水的交友心态；无论出现什么意外状况，他都能坦然面对，而且表现出非常好的处事心态；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他这个人就是这样，从来不会去求全责备，更不会得理不饶人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每一件事都是最后一件事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论做什么事，都要显示出既成熟又不加修饰的尊贵气质，心中要有仁爱、自由和正义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你所做的每一件事情都是最后一件，并把对理性行动的冷漠态度和深恶痛绝卸下，也请把伪善、自私和对自己所得表示不满的抱怨抛在一边吧，唯有如此你才能得到真正的解脱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人都被赋予了足够长的生命运程，而你的生命之火却即将熄灭，假如你的灵魂还不最后眷顾一下自己，那么只能活生生地把你的幸运转手交给别人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你所经历过的身外之物有没有让你陷入困惑的思考呢？让自己挤出时间来学习积极向上的新鲜事物吧，不要在解不开的心结里越陷越深了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;绝不要去猜测别人心里在想什么，琢磨别人心思的人从来都不是幸福的人。每个人都应该关注自己内心的所思所想，如果连这一点都做不到，那是很可悲可叹的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你必须铭记于心的是，整个宇宙的本来面貌是什么，而我自己本身又究竟是什么，这两者有着怎样的联系，我自己在整个宇宙中占到什么样的地位与作用；没人可以阻止你去说出或者做出任何符合自然法则原理的事情，因为你是其中不可分割的一部分。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因私欲而起的犯罪，要比那些因一时愤怒而起的犯罪具有更高一些的可谴责性。理由就是，因愤怒而犯罪的人，可能会因为某种内心的痛苦和突如其来的阵痛发作而失去了本来的理性；而因私欲而犯罪的人，则是被寻求一时痛快的欲望所掌控，这种犯罪似乎显得更为放纵和内心懦弱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人自身的力量完全可以达到不至于陷入罪恶深渊的目的。那么，本可以让人虔诚向善的东西，怎么会使人最终走向生活的堕落呢？宇宙可能会出于本性而忽视了这些事情，最终导致这种错误的发生，即善与恶竟然不分青红皂白地降临在好人与坏人的身上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世间事，稍纵即逝！对整个宇宙而言，这些事物的本体消失不见了，而对时间进程而言，则是对这些事物记忆的模糊直至彻底遗忘。世间所有可感知的事物，无不具有这样的特性。就算是那些带有快乐诱惑或带有恐惧的痛苦，以及那些所谓的闻名海内外的虚名都符合这一特性规律。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世俗的凡人费尽心思地到处打听并反复询问着九泉之下的事情，或者挖空心思去揣测隔壁邻居们的想法。他们所没有认识到的是，其实一个人只要专注于自己心中的神灵并虔心尊奉神灵就可以让自己功德圆满了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人所失去的不会是别的什么，而只有他现在的生活；每个人所享有的也不是别的什么，也只是他现在的生活。无论寿命长短，这一真理都同样适用。虽然每个人的过去并不一样，但是每个人的现在都是平等的。往事都是过眼云烟，逝去的岁月如白驹过隙。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为已经发生的事情而恼怒发愁的做法，实际上是对我们本性的背离。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人短暂仓促的一生，只是蛮荒宇宙中的“一粟”，而宇宙物质才是其巨大的“沧海”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真正的哲学可以成为我们心中的守护神，让我们免受暴力与伤害，让我们可以不被世俗的痛苦与欢愉所侵扰，也不去做漫无目的的事，不会犯错或做出伪善的事情来，最后，我们也不用总限于需要别人做或不做什么事情的迫切心情之中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于已经发生的事情，我们要坦然面对并欣然接受。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事情的发生之地便是它的根源之地，因即是果、果即是因；最后，不如用一种视死如归的心情去面对死亡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个受到虐待的人，如果在恰当的时候结束这一不幸的经历，那么他也不再有任何的痛苦。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当你还在为什么事情而烦恼的时候，你肯定忘记了这一点：一切都是依循宇宙本性发生的；你也忘记了：别人的恶行与你无关；你还忘记了：所有发生的一切，过去如此，将来也是如此，并且现在在其他地方也正在发生着；你也忘记了：一个人和整个人类之间，有着多么紧密的相互联系，这是一种共通属性，不是一点点血或者种子，而是理智。你还忘记了：每个人的理智都是一个神，来自于神性；你忘记了：任何东西都不属于人所有，他的孩子、身体以至灵魂等，都来自神的赐予；你也忘记了：一切事物都是某种看法；最后你还忘记了：每个人都只能活在当下，所能失去的也只是当下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你要反复回想：那些满腹牢骚之人，那些因拥有巨大名声或不幸、仇恨、财富之类而引人注目的人，他们现如今在哪里呢？早已化为尘埃和传说，有的甚至连传说都没有留下。在你的心里还应该记住这一类的每一件事：曾住在乡村别墅的法比阿斯·卡特利卢斯现在怎样了呢？在自家花园里的卢修斯·卢柏斯、在拜依阿的斯德丁尼阿斯、在卡帕里的第比留斯和维留斯·鲁弗斯（或维利亚的鲁弗斯），现在又怎么样了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们对引以为豪之事物的热烈追求，在竭力追逐之后毫无价值！而对一个人来说，能够有机会坦率地展示出其正直、节制以及忠于神灵，那是多么有哲学家风度！如果为最不值得骄傲的事情而骄傲，那是最难堪的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人生的圆满在于：对一切事物都要全盘考察，他自身、质料及外在形式；不如全心全意行义举，歌颂真理。我们应该做一件好事，接着再做，使中间没有空隙，便可享生命之乐，我们还有别的追求吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对一个人来说，只有在最恰当时机出现的事物才是善，他的正当理性行为是多还是少，都无关紧要，对于他而言，对这个世界的沉思究竟花了或多或少的时间，也没有多大的区别，因为对这个人来说，死亡并非是什么可怕的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每一个人，都是这个伟大国家或乃至整个世界的一位公民，五年或三年的时间，对你而言有什么不同呢？符合自然法则的事情，在对待一切时都是公正的。没有任何暴君或不公正的法官会把你赶走，除了将你送进来的自然本性，你又有什么难过呢？这个道理，就像一个执政官将一名演员从舞台上解雇一样：“可是我还没有把五幕演完呢，现在刚演了三幕。”你说得没错，但是，在人生戏剧中，三幕就算是完整的了。因为，一出戏剧究竟是否完整，取决于要上演这出戏的人，而停演这出戏的，也是同样是这个人，而你，却什么都不是。满意地退场吧，解雇你的那个人已经对你的表演满意了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第3章-理性的灵魂基于理性的生物&#34;&gt;第3章 理性的灵魂基于理性的生物&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在离开人世的时候依然保持着从不说谎、欺骗、奢侈和傲慢，是一个人所能拥有的福气备至的命运。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对待死亡，不要蔑视，而应该欣然接受，因为它是属于自然意志中的一件事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个具反省自身之品性的人，应树立起这样的观点，即在对待死亡的问题上不可轻率，也不可急躁或不屑一顾，而应该耐心等候，并将其视为一个依自然本性而发生的正常事件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不但做某事常常是不义的，而且不做某事有时也是不义的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;驱除空想。克制欲念。戒除欲望。把理性控制在其自身的力量范围之内。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对被向上抛出的石头来说，落下并不是什么恶，而被人携带也同样不是什么善。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;别人的错误由他们自己处理，这是你的义务。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一边是小孩子们的争吵与嬉闹，而另一边却是精神微弱的垂死老人，世事就是如此。在死者宅邸展现于我们面前的东西，能让我们更加清楚地认识到现实。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你应该将那些烦扰你的事物，特别是其中毫无用处的东西全部清除出去，这些完全取决于你自己的判断；你将因此而为自己赢得更为广阔的空间，只要你的心中容纳整个宇宙，理解时间的永恒性，洞察每一事物的瞬息万变，从生到死的短暂过程，以及不仅在生之前而且包括死之后的无限时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;面包的表面在烘烤时会出现一些不规则的裂纹，而这些意外产生的不规则裂纹本身，并非面包师本来想要获得的效果。然而，这些不规则裂纹却在某种角度上不失为一种锦上添花，以一种独特的方式刺激人们的食欲。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假如你在人类生活中发现什么比正义、真理、禁欲和刚毅更有价值的东西，亦即说，你发现比心灵的自我满足更好的东西，自我满足是在你并未做出自主选择的情况下分派给你的，这也是你按照正当的理性去行事的原因所在，但是，如果你真的找到了人生中比这更美好的东西，那就请你全身心地去追求它吧，请你倾心享受你所发现的最美事物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那些热爱智性和神灵胜过其他，崇拜自然的完美，行为无过失，从不抱怨的人，既不孤僻，也不需要过多的朋友。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在整个人生中，应该只关心一件事，即：自己的思想有没有偏离了一个理性动物和文明社会成员的正道。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在他心中既没有奴才心态，也没有矫揉造作之处。他会与事物保持合适的距离，既不会太近，也不会太远。他无可指责，同时也没有什么好逃避的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在火势过小的情况下，投入东西，这把火就可能很快熄灭掉了；但当火势非常猛烈的时候，就能很快吞噬掉堆积在上面的东西，火焰也越烧越旺。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要让你的行为漫无目的，你的行为应该谨守完善的技艺规则。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们人类这种理性的动物为相互的彼此而存在，克己忍耐是人类正义不可或缺的一部分，即使人偶尔犯错，那也是在不知不觉中做出。重新再回想一下，有多少人因为互相的敌意、猜忌、憎恶、蛮力争斗而丧命，并归于永久的沉寂。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;或许对于虚名等欲望的苦苦追求仍在折磨着你——看一看几乎所有的事情都会在转瞬间被人遗忘，看一看在当下两端的无尽时间中有着怎样的混沌状态，看一看世间褒贬之声皆会归于空洞，虚假的阿谀奉承者如墙头草，只会按风向做出夸赞之词，那么最终平静下来吧。就算是偌大的一个地球，也只不过是宇宙间的一个小点，而蜗居于其中的你，何其渺小，我们所拥有的东西实在是不值一提，既然如此，你想一下究竟会是什么人才会对你大加溢美之词呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;记住要隐退回你自己所在的内心疆域，而且最重要的是不要分散自己的注意力，也不要让自己过于紧张。要让自己自由自在，像一个男子汉那样去对待一切事务，不忘自己作为人类中一员、国内一个公民以及世间一个凡人的角色。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在面对一大堆事情的时候，你应该选择先做手头着急的活儿，其他的先放在一边。而在其他不着急先做的事情中，又可以区分为两大类：一是不触及一个人心灵深处的事情，即属于身外之物的范畴，往往是固定不变的，而我们内心的无尽烦恼皆来自内心灵魂的不安；另一类则是你在刚刚看到之后便不复存在、顷刻间成为过眼云烟的事物；你的心中要时刻谨记，这些瞬息万变的事物你早已经见识过很多了。宇宙在不断的变幻过程中，而生活则取决于你自己的看法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在弹指一挥间，你和他同样都会归于死亡；而在不久之后，你们的名字也会被人忘得一干二净。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只要将你的成见与不满抛到一边，那么你就不会再有这样的抱怨：“我被伤害到了。”而只要你把这样的抱怨抛诸脑后，你所受到的伤害才能最终烟消云散。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已经发生的每一件事情，都是依照公平原则而发生的。如果你用心去观察的话，你就会发现事实确实如此。我说的不限于系列事物的连贯性，也涉及公平的实质内涵，仿若早已有人为每一事物都分配了特定的价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对待事物，不能用那种曾经冒犯过你的那些人所持的看法与观点，也不要用他希望你所持有的态度去对待。你要用实事求是的态度去看待它们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人心中要时刻谨记如下两条规则：第一，按照统治机构和立法机构的理性制度所建议的，做有利于人们利益实现的事情；第二，如果你身边的人纠正了你的错误，并修正了你的看法，那还是遵照他的意见吧。但是，这一看法的改变与修正，必须要有公平的正义或公共的利益为理由，而不能仅仅是出于一时的快乐或者借此来牟取虚名。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你有理性吗？回答是我有的。那么，为何你不将它用起来呢？因为理性让你走这条路，而你却在追求别的东西吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在同一处祭坛之上摆放着一大堆乳香：有的洒在前面，有的洒在后面。但它们没有任何区别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只要你愿意重新树立对理性原则的崇敬之心，那么在不到十天的时间之内，那些现在将你视为野兽和猴子的人将把你视若神明。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;千万不要在你自己可以活上一万岁的假想之下活着。死亡之神时刻注视着你。所以，在你尚有能力的有生之年，还是去积极行善吧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要刻意去打听左邻右舍的所言所为与所想，你只要关心你自己的行为就足够了，因为这样做可以省去多余的烦恼，才符合正义和纯贞的本义；或者，如阿伽松说过的那样，不要费力理会那些道德败坏者们的一言一行，继续你正直的道路前行，就不会有烦恼。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真正的美，源自自身的内在美。这种美的全部原因皆来自它本身，而外在的溢美之词并不能成为它美的原因。任何事物既不会因人们的夸赞而变得更好，也不会因为人们的贬低而变得更坏。我敢确信的是，对乡村野夫而言，就算是异常普通的物品甚至是非常粗陋的手工制品也是一种具有美之价值的事物。真正的美，不需要其他事物的陪衬与雕饰，法律、真理、仁爱以及谦逊另当别论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;究竟有什么东西因他人溢美之词而更加美丽或因他人诋毁之言而更加丑陋呢？一块绿宝石，会因为无人称羡而变坏吗？或者如黄金、象牙、紫袍、七弦琴、短匕首、鲜花以及灌木又会如何呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入空气之后的灵魂，在空气中维持一段时间之后便会发生变异，然后消散于空气之中。而且，灵魂会被接纳为宇宙中的慧根，并获得自然中的火性。如此一来，空气就为新的灵魂留出了空间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做事不要毫无头绪，我们的所有言行都要服从正义之道，对所有的表面现象都要具备理解力和领悟力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;哲人教诲我们：若要安宁，切莫多事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实际上，我们言行中的绝大部分都是无益的，所以，假如一个人能摈弃毫无必要的多余作为，那么就可以拥有更多的悠闲之时，同时也少一些内心的不安。因此，一个人应该在做任何事情之前都先扪心自问：你要做的这件事情是否必要？一个人不但要免去无必要之事，而且要抛弃无必要之思。唯有如此，累赘多余的言行方可止于此。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你现在看到这些事情了吗？与此同时，也请顺带考察一下其他方面。切莫庸人自扰；凡事要尽量从简。人谁无过呢？所谓的过错只是相对于亲手犯下之人而言的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="第1章-前言">第1章 前言</h2>
<ol>
<li>在这个被称为森林公园的都会之中，人们没有欢乐，只有疲惫；没有激情，只有惰性。</li>
</ol>
<h2 id="第2章-在继承中闪耀的美德">第2章 在继承中闪耀的美德</h2>
<ol>
<li>
<p>在对待朋友的问题上，先父总能让自己与朋友的友谊之树长青，不会喜新厌旧，同时还保持着一种君子之交淡如水的交友心态；无论出现什么意外状况，他都能坦然面对，而且表现出非常好的处事心态；</p>
</li>
<li>
<p>他这个人就是这样，从来不会去求全责备，更不会得理不饶人。</p>
</li>
<li>
<p>每一件事都是最后一件事。</p>
</li>
<li>
<p>无论做什么事，都要显示出既成熟又不加修饰的尊贵气质，心中要有仁爱、自由和正义。</p>
</li>
<li>
<p>你所做的每一件事情都是最后一件，并把对理性行动的冷漠态度和深恶痛绝卸下，也请把伪善、自私和对自己所得表示不满的抱怨抛在一边吧，唯有如此你才能得到真正的解脱。</p>
</li>
<li>
<p>每个人都被赋予了足够长的生命运程，而你的生命之火却即将熄灭，假如你的灵魂还不最后眷顾一下自己，那么只能活生生地把你的幸运转手交给别人。</p>
</li>
<li>
<p>你所经历过的身外之物有没有让你陷入困惑的思考呢？让自己挤出时间来学习积极向上的新鲜事物吧，不要在解不开的心结里越陷越深了。</p>
</li>
<li>
<p>绝不要去猜测别人心里在想什么，琢磨别人心思的人从来都不是幸福的人。每个人都应该关注自己内心的所思所想，如果连这一点都做不到，那是很可悲可叹的。</p>
</li>
<li>
<p>你必须铭记于心的是，整个宇宙的本来面貌是什么，而我自己本身又究竟是什么，这两者有着怎样的联系，我自己在整个宇宙中占到什么样的地位与作用；没人可以阻止你去说出或者做出任何符合自然法则原理的事情，因为你是其中不可分割的一部分。</p>
</li>
<li>
<p>因私欲而起的犯罪，要比那些因一时愤怒而起的犯罪具有更高一些的可谴责性。理由就是，因愤怒而犯罪的人，可能会因为某种内心的痛苦和突如其来的阵痛发作而失去了本来的理性；而因私欲而犯罪的人，则是被寻求一时痛快的欲望所掌控，这种犯罪似乎显得更为放纵和内心懦弱。</p>
</li>
<li>
<p>人自身的力量完全可以达到不至于陷入罪恶深渊的目的。那么，本可以让人虔诚向善的东西，怎么会使人最终走向生活的堕落呢？宇宙可能会出于本性而忽视了这些事情，最终导致这种错误的发生，即善与恶竟然不分青红皂白地降临在好人与坏人的身上。</p>
</li>
<li>
<p>世间事，稍纵即逝！对整个宇宙而言，这些事物的本体消失不见了，而对时间进程而言，则是对这些事物记忆的模糊直至彻底遗忘。世间所有可感知的事物，无不具有这样的特性。就算是那些带有快乐诱惑或带有恐惧的痛苦，以及那些所谓的闻名海内外的虚名都符合这一特性规律。</p>
</li>
<li>
<p>世俗的凡人费尽心思地到处打听并反复询问着九泉之下的事情，或者挖空心思去揣测隔壁邻居们的想法。他们所没有认识到的是，其实一个人只要专注于自己心中的神灵并虔心尊奉神灵就可以让自己功德圆满了。</p>
</li>
<li>
<p>每个人所失去的不会是别的什么，而只有他现在的生活；每个人所享有的也不是别的什么，也只是他现在的生活。无论寿命长短，这一真理都同样适用。虽然每个人的过去并不一样，但是每个人的现在都是平等的。往事都是过眼云烟，逝去的岁月如白驹过隙。</p>
</li>
<li>
<p>为已经发生的事情而恼怒发愁的做法，实际上是对我们本性的背离。</p>
</li>
<li>
<p>一个人短暂仓促的一生，只是蛮荒宇宙中的“一粟”，而宇宙物质才是其巨大的“沧海”。</p>
</li>
<li>
<p>真正的哲学可以成为我们心中的守护神，让我们免受暴力与伤害，让我们可以不被世俗的痛苦与欢愉所侵扰，也不去做漫无目的的事，不会犯错或做出伪善的事情来，最后，我们也不用总限于需要别人做或不做什么事情的迫切心情之中。</p>
</li>
<li>
<p>对于已经发生的事情，我们要坦然面对并欣然接受。</p>
</li>
<li>
<p>事情的发生之地便是它的根源之地，因即是果、果即是因；最后，不如用一种视死如归的心情去面对死亡。</p>
</li>
<li>
<p>一个受到虐待的人，如果在恰当的时候结束这一不幸的经历，那么他也不再有任何的痛苦。</p>
</li>
<li>
<p>当你还在为什么事情而烦恼的时候，你肯定忘记了这一点：一切都是依循宇宙本性发生的；你也忘记了：别人的恶行与你无关；你还忘记了：所有发生的一切，过去如此，将来也是如此，并且现在在其他地方也正在发生着；你也忘记了：一个人和整个人类之间，有着多么紧密的相互联系，这是一种共通属性，不是一点点血或者种子，而是理智。你还忘记了：每个人的理智都是一个神，来自于神性；你忘记了：任何东西都不属于人所有，他的孩子、身体以至灵魂等，都来自神的赐予；你也忘记了：一切事物都是某种看法；最后你还忘记了：每个人都只能活在当下，所能失去的也只是当下。</p>
</li>
<li>
<p>你要反复回想：那些满腹牢骚之人，那些因拥有巨大名声或不幸、仇恨、财富之类而引人注目的人，他们现如今在哪里呢？早已化为尘埃和传说，有的甚至连传说都没有留下。在你的心里还应该记住这一类的每一件事：曾住在乡村别墅的法比阿斯·卡特利卢斯现在怎样了呢？在自家花园里的卢修斯·卢柏斯、在拜依阿的斯德丁尼阿斯、在卡帕里的第比留斯和维留斯·鲁弗斯（或维利亚的鲁弗斯），现在又怎么样了。</p>
</li>
<li>
<p>人们对引以为豪之事物的热烈追求，在竭力追逐之后毫无价值！而对一个人来说，能够有机会坦率地展示出其正直、节制以及忠于神灵，那是多么有哲学家风度！如果为最不值得骄傲的事情而骄傲，那是最难堪的。</p>
</li>
<li>
<p>人生的圆满在于：对一切事物都要全盘考察，他自身、质料及外在形式；不如全心全意行义举，歌颂真理。我们应该做一件好事，接着再做，使中间没有空隙，便可享生命之乐，我们还有别的追求吗？</p>
</li>
<li>
<p>对一个人来说，只有在最恰当时机出现的事物才是善，他的正当理性行为是多还是少，都无关紧要，对于他而言，对这个世界的沉思究竟花了或多或少的时间，也没有多大的区别，因为对这个人来说，死亡并非是什么可怕的事情。</p>
</li>
<li>
<p>每一个人，都是这个伟大国家或乃至整个世界的一位公民，五年或三年的时间，对你而言有什么不同呢？符合自然法则的事情，在对待一切时都是公正的。没有任何暴君或不公正的法官会把你赶走，除了将你送进来的自然本性，你又有什么难过呢？这个道理，就像一个执政官将一名演员从舞台上解雇一样：“可是我还没有把五幕演完呢，现在刚演了三幕。”你说得没错，但是，在人生戏剧中，三幕就算是完整的了。因为，一出戏剧究竟是否完整，取决于要上演这出戏的人，而停演这出戏的，也是同样是这个人，而你，却什么都不是。满意地退场吧，解雇你的那个人已经对你的表演满意了。</p>
</li>
</ol>
<h2 id="第3章-理性的灵魂基于理性的生物">第3章 理性的灵魂基于理性的生物</h2>
<ol>
<li>
<p>在离开人世的时候依然保持着从不说谎、欺骗、奢侈和傲慢，是一个人所能拥有的福气备至的命运。</p>
</li>
<li>
<p>对待死亡，不要蔑视，而应该欣然接受，因为它是属于自然意志中的一件事情。</p>
</li>
<li>
<p>一个具反省自身之品性的人，应树立起这样的观点，即在对待死亡的问题上不可轻率，也不可急躁或不屑一顾，而应该耐心等候，并将其视为一个依自然本性而发生的正常事件。</p>
</li>
<li>
<p>不但做某事常常是不义的，而且不做某事有时也是不义的。</p>
</li>
<li>
<p>驱除空想。克制欲念。戒除欲望。把理性控制在其自身的力量范围之内。</p>
</li>
<li>
<p>对被向上抛出的石头来说，落下并不是什么恶，而被人携带也同样不是什么善。</p>
</li>
<li>
<p>别人的错误由他们自己处理，这是你的义务。</p>
</li>
<li>
<p>一边是小孩子们的争吵与嬉闹，而另一边却是精神微弱的垂死老人，世事就是如此。在死者宅邸展现于我们面前的东西，能让我们更加清楚地认识到现实。</p>
</li>
<li>
<p>你应该将那些烦扰你的事物，特别是其中毫无用处的东西全部清除出去，这些完全取决于你自己的判断；你将因此而为自己赢得更为广阔的空间，只要你的心中容纳整个宇宙，理解时间的永恒性，洞察每一事物的瞬息万变，从生到死的短暂过程，以及不仅在生之前而且包括死之后的无限时间。</p>
</li>
<li>
<p>面包的表面在烘烤时会出现一些不规则的裂纹，而这些意外产生的不规则裂纹本身，并非面包师本来想要获得的效果。然而，这些不规则裂纹却在某种角度上不失为一种锦上添花，以一种独特的方式刺激人们的食欲。</p>
</li>
<li>
<p>假如你在人类生活中发现什么比正义、真理、禁欲和刚毅更有价值的东西，亦即说，你发现比心灵的自我满足更好的东西，自我满足是在你并未做出自主选择的情况下分派给你的，这也是你按照正当的理性去行事的原因所在，但是，如果你真的找到了人生中比这更美好的东西，那就请你全身心地去追求它吧，请你倾心享受你所发现的最美事物。</p>
</li>
<li>
<p>那些热爱智性和神灵胜过其他，崇拜自然的完美，行为无过失，从不抱怨的人，既不孤僻，也不需要过多的朋友。</p>
</li>
<li>
<p>在整个人生中，应该只关心一件事，即：自己的思想有没有偏离了一个理性动物和文明社会成员的正道。</p>
</li>
<li>
<p>在他心中既没有奴才心态，也没有矫揉造作之处。他会与事物保持合适的距离，既不会太近，也不会太远。他无可指责，同时也没有什么好逃避的。</p>
</li>
<li>
<p>在火势过小的情况下，投入东西，这把火就可能很快熄灭掉了；但当火势非常猛烈的时候，就能很快吞噬掉堆积在上面的东西，火焰也越烧越旺。</p>
</li>
<li>
<p>不要让你的行为漫无目的，你的行为应该谨守完善的技艺规则。</p>
</li>
<li>
<p>我们人类这种理性的动物为相互的彼此而存在，克己忍耐是人类正义不可或缺的一部分，即使人偶尔犯错，那也是在不知不觉中做出。重新再回想一下，有多少人因为互相的敌意、猜忌、憎恶、蛮力争斗而丧命，并归于永久的沉寂。</p>
</li>
<li>
<p>或许对于虚名等欲望的苦苦追求仍在折磨着你——看一看几乎所有的事情都会在转瞬间被人遗忘，看一看在当下两端的无尽时间中有着怎样的混沌状态，看一看世间褒贬之声皆会归于空洞，虚假的阿谀奉承者如墙头草，只会按风向做出夸赞之词，那么最终平静下来吧。就算是偌大的一个地球，也只不过是宇宙间的一个小点，而蜗居于其中的你，何其渺小，我们所拥有的东西实在是不值一提，既然如此，你想一下究竟会是什么人才会对你大加溢美之词呢？</p>
</li>
<li>
<p>记住要隐退回你自己所在的内心疆域，而且最重要的是不要分散自己的注意力，也不要让自己过于紧张。要让自己自由自在，像一个男子汉那样去对待一切事务，不忘自己作为人类中一员、国内一个公民以及世间一个凡人的角色。</p>
</li>
<li>
<p>在面对一大堆事情的时候，你应该选择先做手头着急的活儿，其他的先放在一边。而在其他不着急先做的事情中，又可以区分为两大类：一是不触及一个人心灵深处的事情，即属于身外之物的范畴，往往是固定不变的，而我们内心的无尽烦恼皆来自内心灵魂的不安；另一类则是你在刚刚看到之后便不复存在、顷刻间成为过眼云烟的事物；你的心中要时刻谨记，这些瞬息万变的事物你早已经见识过很多了。宇宙在不断的变幻过程中，而生活则取决于你自己的看法。</p>
</li>
<li>
<p>在弹指一挥间，你和他同样都会归于死亡；而在不久之后，你们的名字也会被人忘得一干二净。</p>
</li>
<li>
<p>只要将你的成见与不满抛到一边，那么你就不会再有这样的抱怨：“我被伤害到了。”而只要你把这样的抱怨抛诸脑后，你所受到的伤害才能最终烟消云散。</p>
</li>
<li>
<p>已经发生的每一件事情，都是依照公平原则而发生的。如果你用心去观察的话，你就会发现事实确实如此。我说的不限于系列事物的连贯性，也涉及公平的实质内涵，仿若早已有人为每一事物都分配了特定的价值。</p>
</li>
<li>
<p>对待事物，不能用那种曾经冒犯过你的那些人所持的看法与观点，也不要用他希望你所持有的态度去对待。你要用实事求是的态度去看待它们。</p>
</li>
<li>
<p>一个人心中要时刻谨记如下两条规则：第一，按照统治机构和立法机构的理性制度所建议的，做有利于人们利益实现的事情；第二，如果你身边的人纠正了你的错误，并修正了你的看法，那还是遵照他的意见吧。但是，这一看法的改变与修正，必须要有公平的正义或公共的利益为理由，而不能仅仅是出于一时的快乐或者借此来牟取虚名。</p>
</li>
<li>
<p>你有理性吗？回答是我有的。那么，为何你不将它用起来呢？因为理性让你走这条路，而你却在追求别的东西吗？</p>
</li>
<li>
<p>在同一处祭坛之上摆放着一大堆乳香：有的洒在前面，有的洒在后面。但它们没有任何区别。</p>
</li>
<li>
<p>只要你愿意重新树立对理性原则的崇敬之心，那么在不到十天的时间之内，那些现在将你视为野兽和猴子的人将把你视若神明。</p>
</li>
<li>
<p>千万不要在你自己可以活上一万岁的假想之下活着。死亡之神时刻注视着你。所以，在你尚有能力的有生之年，还是去积极行善吧。</p>
</li>
<li>
<p>不要刻意去打听左邻右舍的所言所为与所想，你只要关心你自己的行为就足够了，因为这样做可以省去多余的烦恼，才符合正义和纯贞的本义；或者，如阿伽松说过的那样，不要费力理会那些道德败坏者们的一言一行，继续你正直的道路前行，就不会有烦恼。</p>
</li>
<li>
<p>真正的美，源自自身的内在美。这种美的全部原因皆来自它本身，而外在的溢美之词并不能成为它美的原因。任何事物既不会因人们的夸赞而变得更好，也不会因为人们的贬低而变得更坏。我敢确信的是，对乡村野夫而言，就算是异常普通的物品甚至是非常粗陋的手工制品也是一种具有美之价值的事物。真正的美，不需要其他事物的陪衬与雕饰，法律、真理、仁爱以及谦逊另当别论。</p>
</li>
<li>
<p>究竟有什么东西因他人溢美之词而更加美丽或因他人诋毁之言而更加丑陋呢？一块绿宝石，会因为无人称羡而变坏吗？或者如黄金、象牙、紫袍、七弦琴、短匕首、鲜花以及灌木又会如何呢？</p>
</li>
<li>
<p>进入空气之后的灵魂，在空气中维持一段时间之后便会发生变异，然后消散于空气之中。而且，灵魂会被接纳为宇宙中的慧根，并获得自然中的火性。如此一来，空气就为新的灵魂留出了空间。</p>
</li>
<li>
<p>做事不要毫无头绪，我们的所有言行都要服从正义之道，对所有的表面现象都要具备理解力和领悟力。</p>
</li>
<li>
<p>哲人教诲我们：若要安宁，切莫多事。</p>
</li>
<li>
<p>实际上，我们言行中的绝大部分都是无益的，所以，假如一个人能摈弃毫无必要的多余作为，那么就可以拥有更多的悠闲之时，同时也少一些内心的不安。因此，一个人应该在做任何事情之前都先扪心自问：你要做的这件事情是否必要？一个人不但要免去无必要之事，而且要抛弃无必要之思。唯有如此，累赘多余的言行方可止于此。</p>
</li>
<li>
<p>你现在看到这些事情了吗？与此同时，也请顺带考察一下其他方面。切莫庸人自扰；凡事要尽量从简。人谁无过呢？所谓的过错只是相对于亲手犯下之人而言的。</p>
</li>
<li>
<p>在你自己身上发生了什么事情呢？在宇宙形成之始，降临你身上的每件事情均已通过神灵分配给你，如命运般绑住了你。一句话，生命短促！所以，你必须凭借着理性和正义来造福当下，一有清闲之时，不如自我省思一番。</p>
</li>
<li>
<p>无论是早有安排的架构抑或是挤在一起的混沌，宇宙仍是宇宙本身。但是，如若宇宙本身是一团乱麻，你是否能够保持内心原来的井然有序呢？当全部事物都保持着相互隔绝、各自为政但和谐相处的时候，你也在这之中。</p>
</li>
<li>
<p>郁郁寡欢、软弱无能、顽固不化、残忍凶暴、稚气未脱、粗俗野蛮、愚蠢麻木、虚情假意、恶语毁谤、欺世盗名以及专横暴戾，这就是世间形形色色之人。</p>
</li>
<li>
<p>不了解宇宙的人，宇宙也不了解他；不了解宇宙玄机之人，同样也是这个道理。这样的人对社会理性所持的是一种逃避的态度；这样的人是一个盲人，将理解之眼合上了；他是真正的穷人，因为他只知依赖别人，而不是从自己身上得到生活所需的一切。他是宇宙中有害无益的毒瘤，只知道对面前的一切乱发牢骚，从我们共通的本性即人类理性中分裂出来。</p>
</li>
<li>
<p>对你曾研习过的技艺应该始终热忱不减，而且要做到心无怨言，虽然它本身并不丰富多彩；以那些把自己全部灵魂寄托给神灵的人为榜样，让你的余生就这样安然度过，既不要做一名暴君，也不要做任何人的奴才。</p>
</li>
<li>
<p>世间万物都会消失。</p>
</li>
<li>
<p>比如可举韦伯大帝时代为例，你可以看到的是人们结婚生子、染疾病危、连年征战、大摆筵席、贸易买卖、辛勤耕作、阿谀奉承、傲慢不逊、猜忌狐疑、图谋不轨、置人于死地、愤世嫉俗、相恋相爱、敛财聚富、执政一方乃至皇权在身等的众生相。现如今，所有这些都不复存在。</p>
</li>
<li>
<p>你首先要关心的是你身边的人，他们不但因为忙碌于琐事而误入歧途，而且把依照惯例本性应该做的事抛诸脑后。</p>
</li>
<li>
<p>对每件事的精力分配要做到与其价值相符，而且在比例上要适当。如果你把精力都放在鸡毛蒜皮的小事上的话，那么你就无法办好正经事，也会对自己不满意。</p>
</li>
<li>
<p>究竟有没有永恒纪念呢？根本就没有。那这一否定回答带给我们的沉重痛苦应如何处置呢？答案只有一个，你要做到思想公正、行为友善、不打诳语并欣然接受一切事物，将其视为一种必然和惯例，并且来自完全一样的原理法则和渊源。</p>
</li>
<li>
<p>不论是对记忆的人还是对被记忆的而言，一切都只存在一天。</p>
</li>
<li>
<p>深入观察每个人心中的做事原则，就算是那些脑子很聪明的人也不例外，了解他们在逃避什么，又在追求什么。</p>
</li>
<li>
<p>公平发生在好人和坏人身上的事，无所谓好或者坏。原因就是，公平发生在依循自然本性而生活之人以及不依循自然而生活之人身上的事，既没有违背了自然法则，也不是遵守了自然法则。</p>
</li>
<li>
<p>你只不过是带着一具臭皮囊的灵魂而已。</p>
</li>
<li>
<p>事物有所变化并非恶，在变化后依然保持本色亦非善。</p>
</li>
<li>
<p>时间就像一条河，里面的激流仿若是世间发生的大小事件；因为就在某个事物被瞥到的时候，已被另一事物匆匆带过并替代了它原有的位置，而且再过一会儿的工夫，这一新的事物照样也被带走不误。每件业已发生的事情我们都很熟悉，它们就像春天的玫瑰、秋天的果实一样轮回出现；而对那些傻瓜而言，让他们熟悉的则是疾病、死亡、诽谤中伤、背信弃义，以及时而让他们活蹦乱跳，时而恼羞成怒的事情。</p>
</li>
<li>
<p>存在于世上的万事万物皆被和谐地安排在一起。</p>
</li>
<li>
<p>土可成水，水可成气，气可成火，反之亦同。</p>
</li>
<li>
<p>我们不应该像那些从父母处学到一切的小孩那样，办事不经大脑，说话如同鹦鹉学舌。</p>
</li>
<li>
<p>假如神灵对你说你将在明天或后天去世，那么你肯定不会去继续追问究竟是后天还是明天了。如果你真的问了，那么证明你是世界上最卑鄙无耻的家伙。因为这个时候的明天或者后天的差别是如此之小！所以，即使你能长命百岁又能如何，还是别把它当做是什么大不了的事情吧。</p>
</li>
<li>
<p>你可以把你所知道的人随便地加入进去，一个接着一个。今天是你给别人送终，明天可能就是别人给你送终。世间事，不过白驹过隙。结论就是，心中时常留意，凡世间人，朝生而暮死，人生之渺小如此也，昨日的鼻涕虫小孩明天可能就是干瘪老头子甚至是一捧骨灰。还是遵循自然法则来度过我们短暂的一生吧，尽量在人生旅途达到终点时死而瞑目。</p>
</li>
<li>
<p>学习海角的精神吧，要在海浪的不断拍打中保持傲然挺立的姿态，让周围暴虐的海水为之折服。</p>
</li>
<li>
<p>为什么这种事情偏偏降临到我的身上，我真的是不幸啊。但事情并非如此。其实我很幸福，尽管这些事情发生在我身上，但我可以不受痛苦的折磨继续潇洒下去。我既没有被现状击溃，也没有被未来吓倒。虽然这种事情可能发生在每个人身上，但并不是每个人都可以在这种情况下达到不受痛苦折磨的境界。那么，为什么这种莫大的不幸不是一种幸运呢？你会把这种在任何情况下都没有偏离人本性的事情称为不幸吗？如果一件事物与人之本性的意愿并不相抗衡的话，那么你还会认为这件事是对人之本性的背离吗？噢，你非常了解自然的意志。那么，这件业已发生的事情是否让你不再践行正直、宽容、温和、谨慎以及安全可靠的深明大义，并以此来防止草率的决断和谬误？是否让你不再抱有谦虚和自由的态度，甚至是其他一切？那么，在你困惑应否采用这一原则时都要想起这一点，即：这根本就不是什么不幸，昂头挺胸面对它，因为它是大幸。</p>
</li>
<li>
<p>无论是在你之前的无限时空，还是在你之后的无限时空，在这无限时空面前，你活了三日与活了三代又有何区别呢？</p>
</li>
</ol>
<h2 id="第4章-天地规律是我们必须遵守的">第4章 天地规律是我们必须遵守的</h2>
<ol>
<li>
<p>清晨，如果你还赖在床上不愿起来的话，那么请你这样想一下——我要为人类事业而起身工作。我现在要去做的事是为了我所存在的这个世界，而且也符合我来到这个世界的目的，所以我怎么会心有不满？难道我来到这个世界的目的就是为了能在温暖的被窝里吗？虽然这样更让你觉得满足，难道你活着就是为了享乐而不想有所作为吗？就算是一株矮小的植物、一只小鸟，还有蚂蚁、蜘蛛和蜜蜂等都在协同努力，把属于它们的小小宇宙打理得井然有序，你没有看到这些吗？难道你不愿为人类事业而努力工作，不愿意依照你天生的本性而投入战斗？</p>
</li>
<li>
<p>你根本没有去做你本来力所能及的事情。所以，你其实并不爱你自己。</p>
</li>
<li>
<p>假如你真的爱自己，那么你应该去爱自己的本性及其随之而生的意志。那些对自己天生才艺如此热爱的人已经在工作中忙得精疲力竭，他们甚至连洗澡和吃饭的时间都挤不出来；而你对自己本性重视的程度，甚至比不上那些杂耍演员对杂耍事业、舞蹈者对舞蹈艺术、财迷对钱、爱慕虚荣者对虚荣本身的重视程度。那些人，在他们一旦对某件事萌生狂热爱好之后，完全可以做到不吃不睡，竭尽所能地去把他们特别在意的事情做到尽善尽美。难道在你的心里，有利于社会的行为根本就不值得你去辛苦奋斗吗？</p>
</li>
<li>
<p>只要将那些令你烦扰的不愉快记忆忘却，就能在顷刻间恢复你内心的平静，这难道不是轻而易举的事情吗？</p>
</li>
<li>
<p>卑贱之人是否为高尚之目的而存在，这难道不够清楚明白吗？有生命者比无生命者优胜一筹，而有理性的有生命者是其中最为高贵的。</p>
</li>
<li>
<p>经常保持这样的思考，世间万物，无论是造物者还是被造之物，皆如昙花一现般稍纵即逝。万事万物犹如一条川流不息的河流，事物一直处于不断的变化之中，而运动的形式则千变万化；几乎不存在静止不动的任何事物。想想你身边的事物，过去和未来皆如无底的深渊，其中的一切事物都归于消灭。因为这些事情而把自己捧上了天或者为这些东西自寻烦恼，最终惶惶而不可终日，这种人难道不傻吗？因为这些事情只会在他身边停留那么一小段时光。</p>
</li>
<li>
<p>相对于命运的整体而言，你只是其中的一个棋子而已。</p>
</li>
<li>
<p>你既不是悲剧演员又不是妓女。</p>
</li>
<li>
<p>在你临终的那一刻，你还想多活几天……所以还是趁着你还有能力继续活下去的时候好好活着吧。</p>
</li>
<li>
<p>从来没有在言行上怠慢过任何人。</p>
</li>
<li>
<p>在快之又快的时间之内，你将成为一具尸体或者骷髅，或有名，或无名；而名字只不过是一种声波和回响。生时贵重之物，到头来都是一场空，最后都是那么易朽和无足轻重，就像小狗相互撕咬一般，也像小孩子在相互争吵、欢笑之后马上又哭闹不停一样。但忠诚、谦虚、正义和真理却从一马平川的平原，登上了奥林匹斯山。</p>
</li>
<li>
<p>在这样的世界上，获得的好名声到最后只不过是一场空而已。</p>
</li>
<li>
<p>不论死亡是最终的消灭抑或是会漂流到另一个国度，你还是平静地等待生命的结束吧。在那一时刻到来之时，你是否已经做好了准备？除了尊敬神灵和赞美神灵、以善待人、凡事宽厚待人以及自我节制之外，还有什么呢？至于那些超越可怜肉身限度之物，请记住一点：它们原本就不属于你，也不在你的能力掌控范围之内。</p>
</li>
<li>
<p>切莫不假思索地被事物的表象牵着鼻子走，应该根据你的能力及其妥当性去帮助每个人。</p>
</li>
<li>
<p>每个人都只活于当下，而当下却是一个无法被分割的点。人生的其他部分要么就是既成的过去，要么就是未定的未来。人生短短数十载，我们所生存的只是方寸之地；死后的英名即使流芳百世，也终有销声匿迹之时，只有通过可怜的人类后代来继续沿袭。</p>
</li>
<li>
<p>如果你还在乎你自己，那么就趁你还有一丝力气的时候行动起来，迅速找回现在就摆在你面前的理想目标，把游手好闲的空想抛到九霄云外，赶紧进行自我拯救吧。</p>
</li>
<li>
<p>如果你对超出你能力范围的事情做出好或坏的判断，那么必然会发生下面的情况：在坏事发生到你头上或你错过了什么好事的时候，你将迁怒于神灵，并会记恨他人，把他们看成是坏事或厄运的直接原因，或者怀疑他们是这些烂事的间接原因；就是因为我们总是去对这些事情做出或好或坏的区分，所以才使我们多行不义。</p>
</li>
<li>
<p>如果我们在能力范围之内对事物做出是非善恶的判断，那么就不会去说神灵的不是，也不会以仇视的态度去看待他人。</p>
</li>
<li>
<p>对一个人有益的事情，必然对他人也同样有益。但是，“有益”一词在这里只具有普遍意义上的中性词义，并没有褒贬的内涵。</p>
</li>
<li>
<p>人生又能几何呢？</p>
</li>
<li>
<p>这对他们又有什么伤害呢？对那些无名之辈又能造成什么伤害呢？只有一件事情最有价值，即在真理和正义中度过你的人生，就算是对说谎者和心术不正之人，也要做到宽宏大量。</p>
</li>
<li>
<p>如果你对上天恩赐与你的有限物质份额心满意足的话，那么你就不会再对有限的生命时间仍有遗憾。</p>
</li>
<li>
<p>贪图虚名之人，喜欢把别人对他的溢美之词归功于自己的功德；贪图享乐之人，则喜欢把自我的感觉当成自己的善行；具有真正理性之人，应该把自己的行为看成自己的真善。</p>
</li>
<li>
<p>我们有权利对事物不发表任何意见，更有权利使我们的灵魂不受骚扰；因为事物本身并没有迫使我们形成判断的天然能力。</p>
</li>
<li>
<p>让你自己养成仔细倾听他人诉说的习惯，尽可能深切体会倾诉者的心灵之声。</p>
</li>
<li>
<p>对整个蜂群都没有用的东西，不会给其中一只蜜蜂带来好处。</p>
</li>
<li>
<p>凡降临于你之事，必依循宇宙之理。</p>
</li>
<li>
<p>人们喜欢去讨好的都是什么样的人？出于什么样的目的？通过什么样的行为？时间将会湮没一切，转眼间，世事皆已成往事。</p>
</li>
</ol>
<h2 id="第5章-生前伟大死后遗忘">第5章 生前伟大，死后遗忘</h2>
<ol>
<li>
<p>恶绝不是什么新鲜事物，所有事物都是我们耳熟能详的，只不过转瞬即逝而已。</p>
</li>
<li>
<p>如果我能做到这一点，何须庸人自扰呢？在我心灵之外的事物，与我心灵之内并无瓜葛。如果能将其变成你的情感立场，那么你将昂然挺立。恢复到你本来的生活状态，在你力所能及的范围之内，只要你用以往熟悉的眼光再去面对各种事物，因为，你生活恢复的关键就在于此。</p>
</li>
<li>
<p>不管怎样都要懂得每个人都是各有自身价值的，而他所从事的事情与他自身一样也有着相应的价值。</p>
</li>
<li>
<p>无论是我单枪匹马去做的事还是我跟别人一起做的事，都应该指向唯一一个目标，即有利于社会并适合于社会的事。</p>
</li>
<li>
<p>有多少生前声名远播的人，死后被人遗忘；而那些夸赞别人之人，也早已不在人世。</p>
</li>
<li>
<p>不要受困于尚未发生之事，因为如果那是注定要发生之事的话，那么你要照样用你现在对待当下之物的理性坦然面对。</p>
</li>
<li>
<p>关于任何事物的记忆，也会在不久之后湮灭于时间的长河。</p>
</li>
<li>
<p>我当顶天立地，抑或借力挺直。</p>
</li>
<li>
<p>无论别人做什么或说什么，我依然还是世间的宝石，而我的色彩永远不变。</p>
</li>
<li>
<p>幸福是好的神灵，也是好的事物。那么，你正在做什么呢？哦，做白日梦吗？如果你真的如此，那么我会借神灵之名向你恳求：走开吧，因为我不要幻想。但是，你还是按着老方法又来了，我不会生你的气，只是请你离开。</p>
</li>
<li>
<p>难道你还没有意识到，无论是对你自己还是宇宙的本性，都是离不开变化的吗？</p>
</li>
<li>
<p>快到你将一切记忆抛诸脑后的时候了，而且你自己也将被其他人忘得一干二净。</p>
</li>
<li>
<p>多想想你认为至善至美的东西。</p>
</li>
<li>
<p>如果某个人冒犯了你，那么你首先要想到的问题是，究竟是什么样的善恶观念导致他犯下了这个错。这样做的原因是，如果你了解他的是非观念，那么你可能会对他心生怜悯之情，那时的你便心怀释然，不再怒火中烧。因为根源在那种错误的是非善恶观之下，你会觉得自己和他所做之事没有差别，或者相差不大，所以，你应该去宽恕他。</p>
</li>
<li>
<p>不要对你是否拥有之物想太多，要多想想你认为至善至美的东西，然后再反思一下假如你现在尚未拥有它们，你会多么热忱地去追求它们。与此同时，千万要注意，无论你对其有多么热衷，也不要过于追捧，因为这样会让你在没有得到它们时便感到心烦意乱。</p>
</li>
<li>
<p>一个人在从事应为之事时，不但可以使得自我满足，而且足以获得内心的平静。</p>
</li>
<li>
<p>停止不切实际的幻想。不要被它牵着鼻子走。珍视眼前，注重当下。花心思去了解发生在你或别人身上的各种事情。把每一个物体划分为表象的（形式的）和实质的。想想你最后离去的时刻。让一个人所犯之错停在原处。</p>
</li>
<li>
<p>因身外之物自寻烦恼是错误的，因为它们与你毫不相干。</p>
</li>
<li>
<p>无论置身何地，都将其视为最适合他的地方，或者这是主宰者特意将他放置于此。在我看来，他的确应当待在那儿，面对他卑贱的本分，甘冒风险，不要计较个人的得失，也不要惧怕死亡或者其他事。</p>
</li>
<li>
<p>谁也不能摆脱自己命运的安排。</p>
</li>
<li>
<p>不论何时何地，这些都在你的能力掌控范围之内：虔诚接受当下的安排，公正地善待身边的人，完善当前的思想技艺，不要让未经筛选之物进入你的思想。</p>
</li>
<li>
<p>切莫挖空心思去探知别人的言行准则，而要多关心一下你自己的本性所在，包括由那些发生在你身上之事所体现出来的宇宙本性和由你亲自所为之事表现出来的自身本性。</p>
</li>
<li>
<p>面对所发生的一切事情，而这些事情也曾同样发生在他们身上，他们当时是何等烦恼，何等惊诧，何等激动，那么他们现在又到哪里去了呢？哪里也找不到了。那么，为什么你还选择用原来不对的方式去对待它们呢？为什么你不把这些违背自己本性的焦躁不安留给那些始作俑者和被其牵着鼻子走的人呢？为什么你不全身心专注于对那些发生在你身上之事物的正确利用上呢？唯有如此，你才可以将其充分利用起来，而它们才是你所有工作的最佳素材。唯有专注于自身，你方可在一切行动中坚决地成为一个好人，切记……</p>
</li>
<li>
<p>无论你面对着什么样的痛苦，都要在心中如此认为：虽然这是痛苦的，但并没有给你带来耻辱，也不会使你占支配地位的理智受创，因为既有理性又有社会性的理智，并不会因此受到伤害。实际上，如果痛苦让你无法忍受，那么你也可以想想伊壁鸠鲁说过的话：痛苦并非不堪忍受之物，也不会始终挥之不去。所以，你谨记它是有限度的，而且你也不要在想象中对其夸大。你还要记住这一点，我们并没有认识到的是其他很多令我们不甚欢愉的事物，如困倦、燥热和厌食等，其与痛苦这种东西的属性完全一样。那么，假如你仍不满于这些事情的话，你索性对自己说，我屈服于痛苦。</p>
</li>
<li>
<p>莫要用野蛮人的思维方式去感知文明人。</p>
</li>
<li>
<p>幸福生活所需要的东西实际上并不多。</p>
</li>
<li>
<p>虽然无望成为一名雄辩家并在自然知识领域中无所不知，但不要因为这个原因而放弃成为一个自由、谦和、友善以及敬奉神灵之人的希望。</p>
</li>
<li>
<p>要使道德品性尽善尽美，就应该把每一天当做临死前的最后一天，既不过于激动，也不麻木不仁或做出伪善的行为。</p>
</li>
<li>
<p>现在所发生的一切事物，不是作为结果，就是在连续性中逐渐出现；甚至连那支配本身运动的宇宙主宰力量所指向的主要事物，也不再受到任何理性原则的支配。如果你时刻谨记这一点，那么你可以在很多事情面前表现得镇定自若。</p>
</li>
<li>
<p>无论你在履行自身职责时是兴味索然还是热情高涨，是昏昏欲睡还是精神抖擞，是受人诟病还是佳评如潮，也无论你是奄奄一息还是正忙于别事，都没有实质的区别，因为这些都是生命的活动，而我们的生命也会在这种活动中陨灭。只要我们在这些生命活动中做好我们手头上的事情，那么就无愧于心了。</p>
</li>
<li>
<p>为自己复仇的最佳办法，就是不要变成像对你作恶的那个人一样。</p>
</li>
<li>
<p>当你由于环境所迫而在某种意义上无法得到内心的宁静时，请尽快让你的思想转向你的灵魂，强制因素一旦消失你便应该马上重返正途。因为，只有不断尝试恢复内心的宁静才能让你学会如何执掌和谐的大局。</p>
</li>
<li>
<p>运动和变化在不断地更新着这个世界，恰如连续性的时间进程在不断地更新着岁月。在这条川流不息的河流之中，根本没有什么持久不变的东西，而对经过于此的匆匆过客，谁会愿意对其给予高度的评价呢？</p>
</li>
<li>
<p>有谁会对一只掠空而过的麻雀心生爱恋呢？恋心方动，雀已无踪。</p>
</li>
<li>
<p>如果这一目标是合适你的，那么你就不再需要苦苦寻找别的目标了。你还会去重视别的诸多事物吗？那么你将无法获得自由，你也无法获得自己的幸福，为欲念所困扰。因为你肯定会嫉妒和猜疑那些能获得这些东西的人，而且你会设计陷害那些拥有了被你看重之物的人。一个想把所有这些东西都揽入囊中的人，必然处于内心的混乱之中。</p>
</li>
<li>
<p>如果人们执著于自己的错误和无知，那么他们最终将会受到伤害。</p>
</li>
<li>
<p>我履行自己的职责，其他的事情不会打扰到我。因为这些事情要么是无生命的，要么是无理性的，甚至是漫无目的、误入歧途的。</p>
</li>
<li>
<p>死亡可以终结感官的印象，也可以撤掉我们欲望驱动的弦，停止我们迷乱的思想以及肉身的机能。</p>
</li>
<li>
<p>有些事我们无需抗拒。</p>
</li>
<li>
<p>如果在你的肉体还没有死亡的时候，你的灵魂已经不复存在，那么这就是一种莫大的耻辱。</p>
</li>
<li>
<p>保持你自己简约、善良、纯洁、认真的品性，做到不虚伪、对朋友公正不阿，敬奉神灵、仁慈和善，在为正确的事情努力的时候能够做到奋发图强。</p>
</li>
<li>
<p>人生短暂，这一世俗的人生只能修成一个正果——虔诚的秉性和具社会性的行为。</p>
</li>
<li>
<p>当你把自己从睡梦中唤醒时，发现让你忧心忡忡的事情只在梦中。现在，当你还清醒的时候，看待这些（与你有关的事）就像你看待那些（梦）一样。</p>
</li>
<li>
<p>我，由一具渺小的肉身和一个灵魂组成。对这渺小的肉体而言，所有事情都没有什么区别，因为它察觉不到其中的不同之处。但对理性而言，只有那些并非其自身活动结果的事物才是无关的。世间万物，皆为宇宙自身行为之产物，而且这些事物均在宇宙的掌控能力范围之内。但是，这只限于与当下有关的事物，对于未来和过去的心灵活动而言，它们根本是无关的。</p>
</li>
<li>
<p>无论是用手劳作，还是用脚劳作，都不违背自然法则，只要它们各司其职就行。</p>
</li>
<li>
<p>让你自己去接受那命中注定的一切吧：接受那些命中注定你必要与之生活在一起的人，还要去真诚地爱他们。</p>
</li>
</ol>
<h2 id="第6章-与傻瓜对话我们即成傻瓜">第6章 与傻瓜对话我们即成傻瓜</h2>
<ol>
<li>
<p>凡你所见之物，都将迅速消亡，那些目送过一切崩溃的人也不久于人世。长命百岁者与早年夭折之人都会被带到完全一样的地方。</p>
</li>
<li>
<p>失去只是另一种变化的形式。但宇宙的本性就是热衷于变化，而且，就是因为服从它，万事万物在目前都进行得很好，自古以来，宇宙始终都在如此运动，而且未来也将继续下去没有终结。</p>
</li>
<li>
<p>无论你在病中还是做别的事都要如此；永远不要放弃哲学，在各种哲学派别之中，最重要的原则就是对无知之人或不懂自然本性的人，不要做无谓之谈。不如多注意你手头上正在做的事情和行事的方法。</p>
</li>
<li>
<p>当你因为无耻小人得罪你而苦恼时，不如问问你自己：世界上没有无耻之徒可能吗？不可能。不可能的事不要强求。因为，这个冒犯你的人，也只是世界上存在的无耻之徒中的一个。假如你碰到招摇撞骗者、背信弃义者以及其他行恶之人时，不如也想想这个同样的道理。唯有如此，你才可以随时提醒自己：这些人是必然存在的，既然如此，你还是在对待每个人的态度上都更和善些较为妥当。</p>
</li>
<li>
<p>无论在什么情况下，你都可以劝导那些迷失于尘世的人并让他们重新找回正确的方向；因为每个人都会由于做错事而误入歧途。但除此之外，还有什么能伤害到你呢？因为你会发现，在那些冒犯你的人之中，根本没有一个人做了什么能让你心灵被玷污的事情；所谓的伤害，只存在于人心。如果做出毫无教养行为的人，根本没受过教育，那么又能带来什么伤害呢？有什么奇怪的吗？想想，你是不是还不如谴责自己呢，因为你根本没有想过这些人会犯下如此的错误。</p>
</li>
<li>
<p>在你帮助别人的时候，你还会想得到更多回报吗？你所做的事情完全符合你的本性，难道这样你也不满足，一定要从中获取回报吗？好像眼睛视物要求回报，用脚走路也要求回报。</p>
</li>
<li>
<p>幸福就在你依循本性而为的事情之中。</p>
</li>
<li>
<p>如果一个事物无法使一个人拥有公正、谦和、勇敢和自由的品性，那么对这个人而言就是一种不好的东西；没有什么事物是不好的，如果它不使人变成与上述情形相反的品性。</p>
</li>
<li>
<p>在做出任何行动时都扪心自问，其与我有何干系呢？我会不会在将来后悔呢？还有一点时间我就将死去，那么所有一切皆如浮云散尽。如果我当下所为之事，乃理性之人、社会之人及与神同受法则约束之人当为之事，我又有何求呢？</p>
</li>
<li>
<p>切莫庸人自扰，因为一切事物之存在皆符合宇宙之本性；而你自己却将在很短的时间内荡然无存，并毫无踪迹可寻，就像是哈德良和奥古斯都那样。其次，要全神贯注地盯紧你手头上的事情。</p>
</li>
<li>
<p>你要记住，尽量成为好人是你的职责所在，无论人的本性有着什么样的要求，做事时不要抱逃避态度；言谈要尽量恰当贴切，只是做到好的气质与温和谦逊即可，切莫虚伪。</p>
</li>
<li>
<p>一切事物皆在变化之中，但我们无需害怕新事物，一切事物都是我们所熟悉的对象，而这些事物的总体分布情况依然没有发生变化。</p>
</li>
<li>
<p>不要让别人再听到你对宫廷生活或自己生活的抱怨之声。</p>
</li>
<li>
<p>无论你碰到什么样的人，都要记得问问自己这样一个问题：这个人的是非善恶观念是什么样的呢？因为，对于苦与乐、因与果、荣与辱、生与死等问题，他有各种看法，会做出各种事情，这是不值得惊讶和感到新奇的事情，但我会在心里记住的是，他是不得不这样做的。</p>
</li>
<li>
<p>你根本无需责怪任何人。</p>
</li>
<li>
<p>没有什么事物不带有某种目的。</p>
</li>
<li>
<p>你又是为了什么目的而来到这个世界的呢？为了贪图享乐吗？问问你的良心能否说出这个答案。</p>
</li>
<li>
<p>整个地球本身也只不过是宇宙世界中的一个点。</p>
</li>
<li>
<p>专注于你面前的事物吧，认清它是一种思想，一个行为抑或只是一句话而已。</p>
</li>
<li>
<p>我是否有所作为？我所为之事皆关乎人类福祉。我可有得到回报？我坦然接受，并将其奉于神灵，神灵是万事万物发生之肇源，一切发生之事物皆由此而来。</p>
</li>
<li>
<p>在你洗澡的时候，你会看到这些东西——油渍、汗垢、污物以及脏兮兮的洗澡水，所有这些东西都令人恶心。我们生命的每个部分乃至一切事物，其实都是如此。</p>
</li>
<li>
<p>那些机智超凡的人，不是预言家就是高傲自负之人，他们在哪儿呢？以那些极富智慧的人为例，如查拉克斯、柏拉图学派的德梅特里尤斯以及尤德蒙，还有别的类似于他们的人。所有这些人的生命都犹如昙花一现，已死去很久了。</p>
</li>
<li>
<p>有一些人甚至很短时间就无人记得，另一些人成了传说中的英雄人物，还有一些人在传说中消失。</p>
</li>
<li>
<p>你只是弥留于世间的渺小生命体，注定是要被化解成宇宙的基本元素，呼吸也终究会停止，可能被转移到其他陌生的地方。</p>
</li>
<li>
<p>痛苦，无论是对你的身体，还是对你的灵魂，都是一个罪恶。不过，在身体遭受痛苦时，就让其表达出对痛苦的切身感受；而灵魂则完全有能力保持自身原有的平静与安宁，甚至可以不将痛苦视为一种罪恶。</p>
</li>
<li>
<p>每一个判断、动议、欲望和憎恶，都发生于灵魂深处，而没有罪恶能追溯到如此高深之处。</p>
</li>
<li>
<p>不论是在元老院，还是在其他场合，对任何人说话，都要适当，不要矫揉造作，用词朴素直白。</p>
</li>
<li>
<p>奥古斯都的宫廷、妻子、女儿、后代、祖先、姐妹、阿格里帕、亲戚、亲信、朋友、阿雷夫斯、梅塞纳斯、医生和祭司们——宫廷里的所有人都死去了。</p>
</li>
<li>
<p>接受财富或成功的时候，不要傲慢，而且要做好它们将随时离你而去的准备。</p>
</li>
<li>
<p>不要因想象整个人生而不安。</p>
</li>
<li>
<p>将来和过去都无法给你带来痛苦，能给你带来痛苦的就是当下这一时刻。但是，只要你尽量去避免它，这种痛苦完全可以忽略不计；如果你连这样都做不到的话，那么就去责骂你的心灵吧。</p>
</li>
<li>
<p>发生于人身上之事，必然属于只有在人身上才可能发生的事情；而发生在一头牛身上之事，必然也是属于符合牛之本性的事情；发生在一棵葡萄藤身上之事，也不可能背离了符合葡萄藤本性的事情；同样的，发生于一块石头身上之事，亦全然符合一块石头的本性。</p>
</li>
<li>
<p>如果在每一事物身上所发生之事都是平常和自然的，为何你还要怨天尤人呢？因为，宇宙本性不会给你带来不属于你天性的事情。</p>
</li>
<li>
<p>如果你因外部事物而感到痛苦，那么实际上真正让你不安的并非此物，而是你自己对这一事物的价值判断。而在此刻，你完全有能力去摒弃这种判断。</p>
</li>
<li>
<p>你亲眼所看到的第一个印象是什么就是什么，不要再妄加揣测了。</p>
</li>
<li>
<p>坚持你自己亲眼所见的第一印象，不要在自己的内心增加负荷，这样你就不会发生什么。除非你知道世界上所发生的每一件事情，否则不要自添烦恼。</p>
</li>
<li>
<p>这根黄瓜是苦的，那就扔掉吧。路上有荆棘，不妨绕道而行。——这就足够了。切莫再生事端，也不要继续追问这世界上为何有此等事物？</p>
</li>
<li>
<p>宇宙艺术的高明之处就在于，虽然其给自身设定了各种限制，但却可以从既定事物中再度创造出全新的类似事物，而且无需任何外在实体的帮助，更不需要一个它自身可以专门投放垃圾与废物的地方。</p>
</li>
<li>
<p>行动切忌懒散；言谈不要毫无章法；思想不要不着边际；灵魂不要陷于内争外斗；生活也不要太过忙碌以致没有闲暇。</p>
</li>
<li>
<p>纵使有一个人站在清澈纯净的泉边诅咒它，但这一泓清泉不会停止涌出甜美的泉水。如果此人再把脏土或污物扔进泉水，泉水也会迅速将其冲刷洗净，并不会被其弄脏。</p>
</li>
<li>
<p>你怎样才能在心中拥有那一泓永恒的泉水而不是一口狭小的井？只要你时刻把自己与内心满足、朴素以及谦虚温和结合起来并塑造成自由之身即可。</p>
</li>
<li>
<p>你愿意让那种在每小时里都三次责备自己的人来对你奉上赞美之词吗？你会从憎恨自己的人那里获得喜悦之情吗？连自己所做一切之事都后悔莫及的人有可能让自己满意吗？</p>
</li>
<li>
<p>对于我自己的自由意志而言，我身边之人的自由意志与我毫不相干，正如他微弱的呼吸和孱弱的身体一样，都与我无关。</p>
</li>
<li>
<p>人们存在是为了彼此。所以要教导他人，要容忍他人。</p>
</li>
</ol>
<h2 id="第7章-为了人类进步我应多做有意义的事">第7章 为了人类进步我应多做有意义的事</h2>
<ol>
<li>
<p>我拥有属于我的全部。</p>
</li>
<li>
<p>热爱邻人、真理和谦虚，除了法则本身的理性，别的都不重视。</p>
</li>
<li>
<p>所有事物，如果你只注意到其中的单独个别部分，那么就会降低对其的评价。这一道理，同样适用于你生活的各个方面。</p>
</li>
<li>
<p>对业已发生之事，切莫愤怒焦躁。</p>
</li>
<li>
<p>没有别的生活条件比你现在所处的生活更适合于哲学修为。</p>
</li>
<li>
<p>不仅要保持自己判断力和行为力的稳定性，对那些妨碍你或给你制造麻烦的人，要一如既往地保持着原来的仁爱之心。因为，因他们而烦恼、因畏惧而绕道都是软弱的表现；因畏惧而这样做的人，和使自己疏远于天生的亲朋的人，都是同等的自己立场的背叛者。</p>
</li>
<li>
<p>就算事情不利于你，而你对事物的追求与回避也扰乱着你，可你仍旧趋向于他们。可以让你的判断休息一下，保持冷静，不要再对某个事物追求或回避了。</p>
</li>
<li>
<p>其既不向外延伸，也不向内收缩；既不四处发散，也不集中凝结；被阳光所照耀，看清真理，并看清所有的事物及其蕴涵的真相。</p>
</li>
<li>
<p>假设有人鄙视我。让他自己去在意吧。而我所关心的是，我自己的一言一行绝不会有让人鄙视之处。</p>
</li>
<li>
<p>一个人的所有品行，可以在他的眼睛里一览无遗，就像恋爱中的人可以从对方的眼睛里立即读懂一切。</p>
</li>
<li>
<p>真正让我们坐立难安的并非是别人的行为本身，因为这些行为依然会归结到这些人的思想支配原则中去，真正让我们烦躁不安的是我们自己的想法。</p>
</li>
<li>
<p>想一下，这种行为带给我们的愤怒与烦恼要比带给我们愤怒与烦恼的这种行为本身，痛苦要更多一些。</p>
</li>
<li>
<p>你既不要去奉承人们，也不要因他们而自寻烦恼，这都是反社会并会给自己带来伤害的。</p>
</li>
<li>
<p>感情用事没有男子气概，温和与温顺才顺乎人之本性，更有男子气概；拥有这些品质的人，同时也会拥有力量、勇气、和精神，而容易冲动或牢骚满腹之人则不拥有这些。</p>
</li>
<li>
<p>一个人的感情越接近于平静，就越接近于力量。</p>
</li>
<li>
<p>内心的痛苦是一个人软弱的特征，而易怒之情绪也是。</p>
</li>
<li>
<p>容易被愤怒控制的人与容易陷入内心痛苦的人一样，都会受到自身的伤害，并都是屈服的一种表现。</p>
</li>
<li>
<p>企盼坏人不再作恶乃是疯狂，因为这是祈求不可能的事情。</p>
</li>
<li>
<p>希望这些人只对别人使坏而不要对你有恶行，这是无理并且暴虐的。</p>
</li>
<li>
<p>如果一个人在生命中并没有一个恒常的目标，那么他就不可能在一生中始终如一。</p>
</li>
<li>
<p>谁都不能夺走我们的自由意志。</p>
</li>
<li>
<p>你天生就要忍受这一切。</p>
</li>
<li>
<p>在你身上所发生的一切事情，都是早已为你准备好的，生命中的因果在永恒中将你和所发生的事交织在一起。</p>
</li>
<li>
<p>你还要记住，一株无花果树所要做的就是成为一株无花果树，而一只狗所要做的，就是做一只狗，一只蜜蜂就是做一只蜜蜂，而一个人所要做的，就是做一个人；而且，只有这么做才会给你带来最大的助益，并帮你牢记上述的所有美德。</p>
</li>
<li>
<p>有多少事物，你根本就没有仔细研究过，却凭着想象做出了武断的结论，而还有多少事物被你忽视了呢？所以，你应该仔细地去面对一切事，做一切事，对待一切都需要同样的做法，你因时宜而应对的能力可以得到完善，并且以此来锻炼你的思考能力，保持对已知事实的自信，不要任何的炫耀，不过你也无需刻意隐藏。</p>
</li>
<li>
<p>因为达到目标是最好的，如果失败，也要是尝试后的失败。</p>
</li>
<li>
<p>理智之人不论在任何事情上都会表现得既镇静自若又积极向上，做到欢闹中不失镇定。</p>
</li>
<li>
<p>你的生命所剩无几。</p>
</li>
<li>
<p>不要再在一个高尚的人应当具有什么品质的问题上多费唇舌了，不如去成为这样的人。</p>
</li>
<li>
<p>住在城墙围绕的城市里和住在山上牧羊的草棚是一样的。</p>
</li>
<li>
<p>人是被风驱散到地上的树叶。</p>
</li>
<li>
<p>想一下，主动接受既成事物的做法，才是理性动物应有的品质；简单依循本性的做法，是世间万物的一种必然性。</p>
</li>
<li>
<p>凡事一旦变化即不会在永恒时间中存在。</p>
</li>
<li>
<p>对于那些你应为或必须面对的事情，你应该依循最适合于人之本性的办法去处理；因为，一个人不但应当根据他自己的本性去行事，而且需要尽力而为，甚至应该将其视为一种享受。不论在哪里，这都是他力所能及的事情。</p>
</li>
<li>
<p>即便是毫无希望也要时刻努力。</p>
</li>
<li>
<p>接受一切业已发生之事且说出真理。</p>
</li>
<li>
<p>浑圆无缺，欢乐安心。</p>
</li>
<li>
<p>一个人内心如此不安的原因是什么，一个人如何才能不受他人的影响，世间一切皆在于你自己的看法。</p>
</li>
<li>
<p>灯照出的光线在熄灭前不会消失，而你心中的真理、正义和节制将在你死亡之前消失吗？</p>
</li>
<li>
<p>凡事应三思而后行，切莫漫无目标。其次，使你的行为只以公共利益为目标。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-16</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 16 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-16-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172125630.png&#34; alt=&#34;image-20230917212514426&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309172125630.png" alt="image-20230917212514426" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-15</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 15 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-15-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309152233386.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309152233386.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-14</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-14-%E8%BF%90%E5%8A%A8%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309152234048.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309152234048.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-13 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-13-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 13 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-13-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309140901695.jpg&#34; alt=&#34;f5569d649f5e6b9f2eeae6768184132&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309140901695.jpg" alt="f5569d649f5e6b9f2eeae6768184132" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-11 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-11-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-11-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112350108.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112350108.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-10 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-10-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 10 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-10-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿内外侧肌训练器，外侧，5挡，68kg，60次&lt;/li&gt;
&lt;li&gt;坐姿推肩器 25kg 两组，一组20次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112348447.png&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112348783.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="无氧">无氧</h2>
<ol>
<li>大腿内外侧肌训练器，外侧，5挡，68kg，60次</li>
<li>坐姿推肩器 25kg 两组，一组20次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112348447.png" style="zoom:33%;" />
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309112348783.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2017年电影日志</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/2017%E5%B9%B4%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</link>
      <pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/2017%E5%B9%B4%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;看过很多电影，但是没有把观后感记录一下，时间久了之后，电影传达的主旨还是记得的，但是一些细节完全没印象，思来想去，还是记录一下比较好。应该是简单描述下讲的什么内容，然后有什么启发。&lt;/p&gt;
&lt;h2 id=&#34;奔腾年代&#34;&gt;奔腾年代&lt;/h2&gt;
&lt;h2 id=&#34;心灵捕手&#34;&gt;心灵捕手&lt;/h2&gt;
&lt;h2 id=&#34;当幸福来敲门&#34;&gt;当幸福来敲门&lt;/h2&gt;
&lt;h2 id=&#34;肖申克的救赎&#34;&gt;肖申克的救赎&lt;/h2&gt;
&lt;h2 id=&#34;勇敢的心&#34;&gt;勇敢的心&lt;/h2&gt;
&lt;h2 id=&#34;风雨哈佛路&#34;&gt;风雨哈佛路&lt;/h2&gt;
&lt;h2 id=&#34;洛奇15&#34;&gt;洛奇1、5&lt;/h2&gt;
&lt;h2 id=&#34;辛特勒名单&#34;&gt;辛特勒名单&lt;/h2&gt;
&lt;h2 id=&#34;死亡诗社&#34;&gt;死亡诗社&lt;/h2&gt;
&lt;h2 id=&#34;美丽心灵&#34;&gt;美丽心灵&lt;/h2&gt;
&lt;h2 id=&#34;科比的缪斯&#34;&gt;科比的缪斯&lt;/h2&gt;
&lt;p&gt;我知道没什么能阻止我，对于18岁的我来说，篮球就是生命，你不可能强过我，因为你没我那么花时间在篮球上，即便你想，你也做不到，因为你还有其他牵绊，其他分散你精力的责任，所以我已经赢了。——科比&lt;/p&gt;
&lt;h2 id=&#34;放牛班的春天&#34;&gt;放牛班的春天&lt;/h2&gt;
&lt;h2 id=&#34;海上钢琴师&#34;&gt;海上钢琴师&lt;/h2&gt;
&lt;h2 id=&#34;永不妥协&#34;&gt;永不妥协&lt;/h2&gt;
&lt;h2 id=&#34;万物理论&#34;&gt;万物理论&lt;/h2&gt;
&lt;h2 id=&#34;国王的演讲&#34;&gt;国王的演讲&lt;/h2&gt;
&lt;h2 id=&#34;我的个神啊&#34;&gt;我的个神啊&lt;/h2&gt;
&lt;h2 id=&#34;触不可及&#34;&gt;触不可及&lt;/h2&gt;
&lt;h2 id=&#34;天堂电影院&#34;&gt;天堂电影院&lt;/h2&gt;
&lt;h2 id=&#34;天使爱美丽&#34;&gt;天使爱美丽&lt;/h2&gt;
&lt;h2 id=&#34;灵魂冲浪人&#34;&gt;灵魂冲浪人&lt;/h2&gt;
&lt;h2 id=&#34;遗愿清单&#34;&gt;遗愿清单&lt;/h2&gt;
&lt;h2 id=&#34;西西里的美丽传说&#34;&gt;西西里的美丽传说&lt;/h2&gt;
&lt;p&gt;木秀于林风必摧之，堆高于岸流必湍之。&lt;/p&gt;
&lt;h2 id=&#34;弱点&#34;&gt;弱点&lt;/h2&gt;
&lt;h2 id=&#34;叫我第一名&#34;&gt;叫我第一名&lt;/h2&gt;
&lt;h2 id=&#34;摔跤吧爸爸&#34;&gt;摔跤吧！爸爸&lt;/h2&gt;
&lt;h2 id=&#34;我的左脚&#34;&gt;我的左脚&lt;/h2&gt;
&lt;h2 id=&#34;垫底辣妹&#34;&gt;垫底辣妹&lt;/h2&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>看过很多电影，但是没有把观后感记录一下，时间久了之后，电影传达的主旨还是记得的，但是一些细节完全没印象，思来想去，还是记录一下比较好。应该是简单描述下讲的什么内容，然后有什么启发。</p>
<h2 id="奔腾年代">奔腾年代</h2>
<h2 id="心灵捕手">心灵捕手</h2>
<h2 id="当幸福来敲门">当幸福来敲门</h2>
<h2 id="肖申克的救赎">肖申克的救赎</h2>
<h2 id="勇敢的心">勇敢的心</h2>
<h2 id="风雨哈佛路">风雨哈佛路</h2>
<h2 id="洛奇15">洛奇1、5</h2>
<h2 id="辛特勒名单">辛特勒名单</h2>
<h2 id="死亡诗社">死亡诗社</h2>
<h2 id="美丽心灵">美丽心灵</h2>
<h2 id="科比的缪斯">科比的缪斯</h2>
<p>我知道没什么能阻止我，对于18岁的我来说，篮球就是生命，你不可能强过我，因为你没我那么花时间在篮球上，即便你想，你也做不到，因为你还有其他牵绊，其他分散你精力的责任，所以我已经赢了。——科比</p>
<h2 id="放牛班的春天">放牛班的春天</h2>
<h2 id="海上钢琴师">海上钢琴师</h2>
<h2 id="永不妥协">永不妥协</h2>
<h2 id="万物理论">万物理论</h2>
<h2 id="国王的演讲">国王的演讲</h2>
<h2 id="我的个神啊">我的个神啊</h2>
<h2 id="触不可及">触不可及</h2>
<h2 id="天堂电影院">天堂电影院</h2>
<h2 id="天使爱美丽">天使爱美丽</h2>
<h2 id="灵魂冲浪人">灵魂冲浪人</h2>
<h2 id="遗愿清单">遗愿清单</h2>
<h2 id="西西里的美丽传说">西西里的美丽传说</h2>
<p>木秀于林风必摧之，堆高于岸流必湍之。</p>
<h2 id="弱点">弱点</h2>
<h2 id="叫我第一名">叫我第一名</h2>
<h2 id="摔跤吧爸爸">摔跤吧！爸爸</h2>
<h2 id="我的左脚">我的左脚</h2>
<h2 id="垫底辣妹">垫底辣妹</h2>
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-08 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-08-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-08-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;大腿内外侧肌训练器，外侧，5挡，68kg，两组，一组20次&lt;/li&gt;
&lt;li&gt;坐姿推肩器 25kg 两组，一组20次&lt;/li&gt;
&lt;li&gt;坐姿腿屈伸训练器，75kg，40次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309090009111.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="无氧">无氧</h2>
<ol>
<li>大腿内外侧肌训练器，外侧，5挡，68kg，两组，一组20次</li>
<li>坐姿推肩器 25kg 两组，一组20次</li>
<li>坐姿腿屈伸训练器，75kg，40次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309090009111.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>黑泽明系列电影日志</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E9%BB%91%E6%B3%BD%E6%98%8E%E7%B3%BB%E5%88%97%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</link>
      <pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E9%BB%91%E6%B3%BD%E6%98%8E%E7%B3%BB%E5%88%97%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;黑泽明的电影看了应该有快十部了吧，那些耳熟能详的作品基本都看过了，虽然是黑白电影，但我看得津津有味的。第一次知道黑泽明这个导演应该是2013年，同年也第一次看了他的作品《罗生门》，拍的真的太出彩了，以致那么多年过去了，我一直都喜欢重复一句话，那就是：每个人都在说着对自己有利的故事。然后是《七武士》，《七武士》当时还是在火车卧铺上用手机看的，从北京到哈尔滨的火车，只记得外面风声阵阵，当时应该还没到下大雪的时节。虽然不是很喜欢日本人那些夸张的表演方式，但因为是黑泽明，因而加了一层滤镜，我就感觉还好，在这里还是要吐槽下那种夸张的表演方式，印象最深刻的是2015年看的电影日版的《白夜行》，演员经常歇斯底里的大喊大叫，真是接受不了。回归正传，之所以黑泽明的电影单独拎出来作为一个系列，算是表达我的喜爱之情。黑泽明的其他电影大部分都是2017年在上海看的，当时疯狂地看电影，一天可以看三四部。但是当时是没写什么观后感的，只能现在再去看一遍，然后再补上来了。现在除了《罗生门》、《七武士》、《乱》和《影子武士》，其他不太记得剧情是什么了，只知道这部电影自己是看过的。&lt;/p&gt;
&lt;h2 id=&#34;罗生门&#34;&gt;罗生门&lt;/h2&gt;
&lt;h2 id=&#34;七武士&#34;&gt;七武士&lt;/h2&gt;
&lt;h2 id=&#34;乱&#34;&gt;乱&lt;/h2&gt;
&lt;h2 id=&#34;影子武士&#34;&gt;影子武士&lt;/h2&gt;
&lt;h2 id=&#34;用心棒&#34;&gt;用心棒&lt;/h2&gt;
&lt;h2 id=&#34;椿三十郎&#34;&gt;椿三十郎&lt;/h2&gt;
&lt;h2 id=&#34;红胡子&#34;&gt;红胡子&lt;/h2&gt;
&lt;h2 id=&#34;蜘蛛巢城&#34;&gt;蜘蛛巢城&lt;/h2&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>黑泽明的电影看了应该有快十部了吧，那些耳熟能详的作品基本都看过了，虽然是黑白电影，但我看得津津有味的。第一次知道黑泽明这个导演应该是2013年，同年也第一次看了他的作品《罗生门》，拍的真的太出彩了，以致那么多年过去了，我一直都喜欢重复一句话，那就是：每个人都在说着对自己有利的故事。然后是《七武士》，《七武士》当时还是在火车卧铺上用手机看的，从北京到哈尔滨的火车，只记得外面风声阵阵，当时应该还没到下大雪的时节。虽然不是很喜欢日本人那些夸张的表演方式，但因为是黑泽明，因而加了一层滤镜，我就感觉还好，在这里还是要吐槽下那种夸张的表演方式，印象最深刻的是2015年看的电影日版的《白夜行》，演员经常歇斯底里的大喊大叫，真是接受不了。回归正传，之所以黑泽明的电影单独拎出来作为一个系列，算是表达我的喜爱之情。黑泽明的其他电影大部分都是2017年在上海看的，当时疯狂地看电影，一天可以看三四部。但是当时是没写什么观后感的，只能现在再去看一遍，然后再补上来了。现在除了《罗生门》、《七武士》、《乱》和《影子武士》，其他不太记得剧情是什么了，只知道这部电影自己是看过的。</p>
<h2 id="罗生门">罗生门</h2>
<h2 id="七武士">七武士</h2>
<h2 id="乱">乱</h2>
<h2 id="影子武士">影子武士</h2>
<h2 id="用心棒">用心棒</h2>
<h2 id="椿三十郎">椿三十郎</h2>
<h2 id="红胡子">红胡子</h2>
<h2 id="蜘蛛巢城">蜘蛛巢城</h2>
]]></content:encoded>
    </item>
    <item>
      <title>新海诚系列电影日志</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%96%B0%E6%B5%B7%E8%AF%9A%E7%B3%BB%E5%88%97%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</link>
      <pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/%E6%96%B0%E6%B5%B7%E8%AF%9A%E7%B3%BB%E5%88%97%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;新海诚的电影，第一次看的是在2015年，也是因为宫崎骏才去了解这个人的，然后就开始看了《秒速五厘米》，看完差点没抑郁了，拿捏的十分到位了，音乐也很不错，后来就是《你的名字》，但是刚上映时好像是2016年，但是在微博经常刷预告片，就是想知道这部电影到底什么时候上映，结果真上映了，反而没有去看，直到2018年才看了这部电影，反而看了《秒速五厘米》之后，先去看了《言叶之庭》。再后来就是2021年看的《天气之子》，然后是今年2023年的《铃芽之旅》，新海诚的电影以画面绚丽而闻名，其实故事性还可以。&lt;/p&gt;
&lt;h2 id=&#34;秒速五厘米&#34;&gt;秒速五厘米&lt;/h2&gt;
&lt;h2 id=&#34;言叶之庭&#34;&gt;言叶之庭&lt;/h2&gt;
&lt;h2 id=&#34;你的名字&#34;&gt;你的名字&lt;/h2&gt;
&lt;h2 id=&#34;天气之子&#34;&gt;天气之子&lt;/h2&gt;
&lt;h2 id=&#34;铃芽之旅&#34;&gt;铃芽之旅&lt;/h2&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>新海诚的电影，第一次看的是在2015年，也是因为宫崎骏才去了解这个人的，然后就开始看了《秒速五厘米》，看完差点没抑郁了，拿捏的十分到位了，音乐也很不错，后来就是《你的名字》，但是刚上映时好像是2016年，但是在微博经常刷预告片，就是想知道这部电影到底什么时候上映，结果真上映了，反而没有去看，直到2018年才看了这部电影，反而看了《秒速五厘米》之后，先去看了《言叶之庭》。再后来就是2021年看的《天气之子》，然后是今年2023年的《铃芽之旅》，新海诚的电影以画面绚丽而闻名，其实故事性还可以。</p>
<h2 id="秒速五厘米">秒速五厘米</h2>
<h2 id="言叶之庭">言叶之庭</h2>
<h2 id="你的名字">你的名字</h2>
<h2 id="天气之子">天气之子</h2>
<h2 id="铃芽之旅">铃芽之旅</h2>
]]></content:encoded>
    </item>
    <item>
      <title>关于技能树</title>
      <link>https://dstweihao.cn/posts/%E6%8A%80%E8%83%BD%E6%A0%91/%E5%85%B3%E4%BA%8E%E6%8A%80%E8%83%BD%E6%A0%91/</link>
      <pubDate>Thu, 07 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%8A%80%E8%83%BD%E6%A0%91/%E5%85%B3%E4%BA%8E%E6%8A%80%E8%83%BD%E6%A0%91/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;之前也算研究过”高效学习“这方面的书籍和课程，总的来说，无非就是意识和实践，意识是指明白以教代学是什么，实际上就是以终为始——先假设你想得到的结果，然后再倒逼我们从源头去规划应该怎么去做这个事情。如果你打算教别人东西，为了怕被别人问住，你不得不把相关知识都弄明白了，这无形之中，就给你施加了学习的压力，有处于你全面掌握这个知识点。实践，也就是毛泽东《实践论》里的观点，实践与理论反复验证，只有动手了人才会更加专注，也才会真正感受得到所要学的东西到底是什么？如果只停留在书籍上面，因为都是一些理论的东西，注意力很容易分散，学习效果大大折扣。&lt;/p&gt;
&lt;p&gt;比如，如果要学习Flutter开发，我不会一字不漏地看完官网文档才动手敲代码，我会立马开始敲代码，是的，啥都不知道，完全凭感觉去做这个事情，然后呢，如果要实现一个按钮，我就去看按钮的部分，动手实现了，如果要实现一个弹窗，我就去看弹窗的部分，把弹窗实现了，一步一步，慢慢先把用到的东西学起来，在这个过程中，你一定是带着问题去查看文档的，这无形之中，就会加深了印象。&lt;/p&gt;
&lt;p&gt;这个方法其实也是可以用在学校的，我就先做练习本或者试卷，根本就没学过这个知识，凭感觉去做，不知道就记下来，猜测应该是什么意思，然后再去找答案，再去收集，总结，再去做题。&lt;/p&gt;
&lt;p&gt;我们通常都会说，人心不足蛇吞象，想什么都学，结果什么都学不会。这个道理没错，但是，人这一生本来就很短暂，不可能看完古今中外所有的书，学到所有的知识，我只打算享受过程，哪怕最后都是半桶水也没有关系，我希望自己能成为一个有点知识的人，一方面我无法忍受自身知识的匮乏和认知的浅薄；另一个方面，我想学很多很多东西，将来可以给村里小朋友教点东西也行，或者其他地方的，很小的时候，就已经想过，将来要在二楼弄个书房，全都堆满书，然后可以借给很多人看，再有个房间，学习乐器什么的。乡下教育，一直以来的问题，其实不一定都是经济，经济当然是很大的原因，但其实更多的是缺少引路人，引路人一般都是父母，父母的知识面，眼界，信息差其实很大程度决定了小朋友的命运，他们不知道外面世界是什么样子的，每个人看到的世界有好坏之分，但是世界自身没有好坏之分，你看到什么是你个人主观投射而成，这就是引路人的价值所在，怎么去给小朋友搭建一个符合他们自身个性的世界，让他们看得到，摸得着，至于他们怎么选择，就完全看他们自己了，但是现在的情况是，很多大人没有什么知识面和眼界，那么搭建能力也就无从说起了。&lt;/p&gt;
&lt;p&gt;希望能以身践行，学习每一个技能，从实践总结成理论，将理论整理为教程。&lt;/p&gt;
&lt;h2 id=&#34;怎么学&#34;&gt;怎么学&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;怎么减肥？&lt;/li&gt;
&lt;li&gt;怎么增肌？&lt;/li&gt;
&lt;li&gt;怎么跑步？&lt;/li&gt;
&lt;li&gt;怎么游泳？&lt;/li&gt;
&lt;li&gt;怎么早睡早起？&lt;/li&gt;
&lt;li&gt;怎么学Vue开发？&lt;/li&gt;
&lt;li&gt;怎么学Flutter开发？&lt;/li&gt;
&lt;li&gt;怎么学Android开发？&lt;/li&gt;
&lt;li&gt;怎么学Nodejs开发？&lt;/li&gt;
&lt;li&gt;怎么学Java开发？&lt;/li&gt;
&lt;li&gt;怎么学ToB产品设计&lt;/li&gt;
&lt;li&gt;怎么学市场营销？&lt;/li&gt;
&lt;li&gt;怎么学项目管理？&lt;/li&gt;
&lt;li&gt;怎么学团队管理？&lt;/li&gt;
&lt;li&gt;怎么徒步？&lt;/li&gt;
&lt;li&gt;怎么学吉他？&lt;/li&gt;
&lt;li&gt;怎么学钢琴？&lt;/li&gt;
&lt;li&gt;怎么学英语？&lt;/li&gt;
&lt;li&gt;怎么学普通话？&lt;/li&gt;
&lt;li&gt;怎么学习画画？&lt;/li&gt;
&lt;li&gt;怎么做饭？&lt;/li&gt;
&lt;li&gt;怎么护肤？&lt;/li&gt;
&lt;li&gt;怎么穿搭？&lt;/li&gt;
&lt;li&gt;怎么阅读？&lt;/li&gt;
&lt;li&gt;怎么写读书笔记？&lt;/li&gt;
&lt;li&gt;怎么写电影日志？&lt;/li&gt;
&lt;li&gt;怎么写诗词？&lt;/li&gt;
&lt;li&gt;怎么创作歌词？&lt;/li&gt;
&lt;li&gt;怎么写小说？&lt;/li&gt;
&lt;li&gt;怎么写日记？&lt;/li&gt;
&lt;li&gt;怎么摄影？&lt;/li&gt;
&lt;li&gt;怎么创业？&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>之前也算研究过”高效学习“这方面的书籍和课程，总的来说，无非就是意识和实践，意识是指明白以教代学是什么，实际上就是以终为始——先假设你想得到的结果，然后再倒逼我们从源头去规划应该怎么去做这个事情。如果你打算教别人东西，为了怕被别人问住，你不得不把相关知识都弄明白了，这无形之中，就给你施加了学习的压力，有处于你全面掌握这个知识点。实践，也就是毛泽东《实践论》里的观点，实践与理论反复验证，只有动手了人才会更加专注，也才会真正感受得到所要学的东西到底是什么？如果只停留在书籍上面，因为都是一些理论的东西，注意力很容易分散，学习效果大大折扣。</p>
<p>比如，如果要学习Flutter开发，我不会一字不漏地看完官网文档才动手敲代码，我会立马开始敲代码，是的，啥都不知道，完全凭感觉去做这个事情，然后呢，如果要实现一个按钮，我就去看按钮的部分，动手实现了，如果要实现一个弹窗，我就去看弹窗的部分，把弹窗实现了，一步一步，慢慢先把用到的东西学起来，在这个过程中，你一定是带着问题去查看文档的，这无形之中，就会加深了印象。</p>
<p>这个方法其实也是可以用在学校的，我就先做练习本或者试卷，根本就没学过这个知识，凭感觉去做，不知道就记下来，猜测应该是什么意思，然后再去找答案，再去收集，总结，再去做题。</p>
<p>我们通常都会说，人心不足蛇吞象，想什么都学，结果什么都学不会。这个道理没错，但是，人这一生本来就很短暂，不可能看完古今中外所有的书，学到所有的知识，我只打算享受过程，哪怕最后都是半桶水也没有关系，我希望自己能成为一个有点知识的人，一方面我无法忍受自身知识的匮乏和认知的浅薄；另一个方面，我想学很多很多东西，将来可以给村里小朋友教点东西也行，或者其他地方的，很小的时候，就已经想过，将来要在二楼弄个书房，全都堆满书，然后可以借给很多人看，再有个房间，学习乐器什么的。乡下教育，一直以来的问题，其实不一定都是经济，经济当然是很大的原因，但其实更多的是缺少引路人，引路人一般都是父母，父母的知识面，眼界，信息差其实很大程度决定了小朋友的命运，他们不知道外面世界是什么样子的，每个人看到的世界有好坏之分，但是世界自身没有好坏之分，你看到什么是你个人主观投射而成，这就是引路人的价值所在，怎么去给小朋友搭建一个符合他们自身个性的世界，让他们看得到，摸得着，至于他们怎么选择，就完全看他们自己了，但是现在的情况是，很多大人没有什么知识面和眼界，那么搭建能力也就无从说起了。</p>
<p>希望能以身践行，学习每一个技能，从实践总结成理论，将理论整理为教程。</p>
<h2 id="怎么学">怎么学</h2>
<ul>
<li>怎么减肥？</li>
<li>怎么增肌？</li>
<li>怎么跑步？</li>
<li>怎么游泳？</li>
<li>怎么早睡早起？</li>
<li>怎么学Vue开发？</li>
<li>怎么学Flutter开发？</li>
<li>怎么学Android开发？</li>
<li>怎么学Nodejs开发？</li>
<li>怎么学Java开发？</li>
<li>怎么学ToB产品设计</li>
<li>怎么学市场营销？</li>
<li>怎么学项目管理？</li>
<li>怎么学团队管理？</li>
<li>怎么徒步？</li>
<li>怎么学吉他？</li>
<li>怎么学钢琴？</li>
<li>怎么学英语？</li>
<li>怎么学普通话？</li>
<li>怎么学习画画？</li>
<li>怎么做饭？</li>
<li>怎么护肤？</li>
<li>怎么穿搭？</li>
<li>怎么阅读？</li>
<li>怎么写读书笔记？</li>
<li>怎么写电影日志？</li>
<li>怎么写诗词？</li>
<li>怎么创作歌词？</li>
<li>怎么写小说？</li>
<li>怎么写日记？</li>
<li>怎么摄影？</li>
<li>怎么创业？</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-06 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-06-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 06 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-06-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309071034440.jpg&#34; alt=&#34;95a27d642f85c753cec57af9e6ab34d&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309071034440.jpg" alt="95a27d642f85c753cec57af9e6ab34d" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-05 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-05-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 05 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-05-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309071035011.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309071035011.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-04 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-04-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 04 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-04-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h3 id=&#34;饮食&#34;&gt;饮食&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;早上： 不记得了，应该鸡胸肉什么的。&lt;/li&gt;
&lt;li&gt;中午： 河粉+白切鸡&lt;/li&gt;
&lt;li&gt;晚上： 鸡胸肉、土豆、鸡蛋、油醋汁&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;坐姿推胸器 35kg  30次&lt;/li&gt;
&lt;li&gt;多功能仰卧板，卷腹，5组，1组20个，休息10秒&lt;/li&gt;
&lt;li&gt;坐姿腿屈伸训练器，75kg，30次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309050908567.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h3 id="饮食">饮食</h3>
<ol>
<li>早上： 不记得了，应该鸡胸肉什么的。</li>
<li>中午： 河粉+白切鸡</li>
<li>晚上： 鸡胸肉、土豆、鸡蛋、油醋汁</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>坐姿推胸器 35kg  30次</li>
<li>多功能仰卧板，卷腹，5组，1组20个，休息10秒</li>
<li>坐姿腿屈伸训练器，75kg，30次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309050908567.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-03 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-03-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 03 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-03-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h3 id=&#34;饮食&#34;&gt;饮食&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;早上： 鸡胸肉、西兰花、玉米、牛奶、榨菜&lt;/li&gt;
&lt;li&gt;中午： 腌面+瘦肉汤套餐&lt;/li&gt;
&lt;li&gt;晚上： 牛大骨、红薯、鸡蛋、榨菜&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;多功能仰卧板，卷腹，5组，1组20个，休息10秒&lt;/li&gt;
&lt;li&gt;坐姿推肩器 30kg 35次&lt;/li&gt;
&lt;li&gt;坐姿腿屈伸训练器，75kg，30次&lt;/li&gt;
&lt;li&gt;坐姿推胸器 35kg  10次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309040912804.jpg&#34; alt=&#34;32ba4e4cb9c7f7a7b62d79483e06368&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h3 id="饮食">饮食</h3>
<ol>
<li>早上： 鸡胸肉、西兰花、玉米、牛奶、榨菜</li>
<li>中午： 腌面+瘦肉汤套餐</li>
<li>晚上： 牛大骨、红薯、鸡蛋、榨菜</li>
</ol>
<h2 id="无氧">无氧</h2>
<ol>
<li>多功能仰卧板，卷腹，5组，1组20个，休息10秒</li>
<li>坐姿推肩器 30kg 35次</li>
<li>坐姿腿屈伸训练器，75kg，30次</li>
<li>坐姿推胸器 35kg  10次</li>
</ol>
<h2 id="有氧">有氧</h2>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309040912804.jpg" alt="32ba4e4cb9c7f7a7b62d79483e06368" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-09-02 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-02-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-02-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;h3 id=&#34;饮食&#34;&gt;饮食&lt;/h3&gt;
&lt;p&gt;今天吃的蒸的辣椒和青瓜，真的有点被恶心到了，下次不这样做了，生吃就好了。&lt;/p&gt;
&lt;p&gt;油醋汁说是0脂肪什么的，但是吃多估计也有点问题，现在科技和狠活真的太多了。&lt;/p&gt;
&lt;p&gt;晚上吃了冰西瓜，吃了玉米，两个鸡蛋，鸡胸肉煮熟了，再和辣椒煎一下，后面油和盐都会注意控制。&lt;/p&gt;
&lt;p&gt;打算记一下训练量，也打算把健身房的器材认识一下。&lt;/p&gt;
&lt;h2 id=&#34;无氧&#34;&gt;无氧&lt;/h2&gt;
&lt;p&gt;最近都是在爬坡，然后到交叉跑，就是跑一段时间，然后再爬坡，这样心率有波动，有助于燃脂，这阶段再坚持坚持，然后开始研究无氧训练，也就是力量训练，本来减肥最佳方式就是力量训练，增肌，然后提高代谢，这样吃的东西会消耗更多，自然也就好保持体重了。有氧也能减肥，但是肌肉也会跟着掉，得不偿失。&lt;/p&gt;
&lt;p&gt;力量训练量：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;大腿内外侧肌训练器，外侧，5挡，68kg，20次&lt;/li&gt;
&lt;li&gt;坐姿推胸器 40kg  20次&lt;/li&gt;
&lt;li&gt;坐姿推肩器 35kg 5次&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;有氧&#34;&gt;有氧&lt;/h2&gt;
&lt;p&gt;今天跑了10来分钟，然后剩下都是爬坡，走了2个小时，10公里。如果户外跑步，应该是1个小时20分钟这样，其实户外跑步体验更佳，但是现在是想着减肥，把体重降下来，这样会好跑一些，好想回到5分钟1公里的速度。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022312688.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<h3 id="饮食">饮食</h3>
<p>今天吃的蒸的辣椒和青瓜，真的有点被恶心到了，下次不这样做了，生吃就好了。</p>
<p>油醋汁说是0脂肪什么的，但是吃多估计也有点问题，现在科技和狠活真的太多了。</p>
<p>晚上吃了冰西瓜，吃了玉米，两个鸡蛋，鸡胸肉煮熟了，再和辣椒煎一下，后面油和盐都会注意控制。</p>
<p>打算记一下训练量，也打算把健身房的器材认识一下。</p>
<h2 id="无氧">无氧</h2>
<p>最近都是在爬坡，然后到交叉跑，就是跑一段时间，然后再爬坡，这样心率有波动，有助于燃脂，这阶段再坚持坚持，然后开始研究无氧训练，也就是力量训练，本来减肥最佳方式就是力量训练，增肌，然后提高代谢，这样吃的东西会消耗更多，自然也就好保持体重了。有氧也能减肥，但是肌肉也会跟着掉，得不偿失。</p>
<p>力量训练量：</p>
<ol>
<li>大腿内外侧肌训练器，外侧，5挡，68kg，20次</li>
<li>坐姿推胸器 40kg  20次</li>
<li>坐姿推肩器 35kg 5次</li>
</ol>
<h2 id="有氧">有氧</h2>
<p>今天跑了10来分钟，然后剩下都是爬坡，走了2个小时，10公里。如果户外跑步，应该是1个小时20分钟这样，其实户外跑步体验更佳，但是现在是想着减肥，把体重降下来，这样会好跑一些，好想回到5分钟1公里的速度。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022312688.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>健身器材介绍</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-02-%E5%81%A5%E8%BA%AB%E5%99%A8%E6%9D%90%E4%BB%8B%E7%BB%8D/</link>
      <pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-09-02-%E5%81%A5%E8%BA%AB%E5%99%A8%E6%9D%90%E4%BB%8B%E7%BB%8D/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;本文主要是介绍自己在健身房接触到的健身器材，一开始也不会专门去收集和整理这些只是，只会慢慢使用了之后，才去了解和记录。&lt;/p&gt;
&lt;h2 id=&#34;健身器材&#34;&gt;健身器材&lt;/h2&gt;
&lt;h3 id=&#34;大腿内外侧肌训练器&#34;&gt;大腿内外侧肌训练器&lt;/h3&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022333564.jpeg&#34; alt=&#34;北京力健&#34; style=&#34;zoom:50%;&#34; /&gt;
&lt;h3 id=&#34;坐姿推胸器&#34;&gt;坐姿推胸器&lt;/h3&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022338730.jpeg&#34;  /&gt;
&lt;h3 id=&#34;坐姿推肩器&#34;&gt;坐姿推肩器&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022344098.jpeg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;坐姿腿屈伸训练器&#34;&gt;坐姿腿屈伸训练器&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022347800.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;卧式曲腿训练器&#34;&gt;卧式曲腿训练器&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022348317.jpeg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;蝴蝶机&#34;&gt;蝴蝶机&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022349886.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;多功能仰卧板&#34;&gt;多功能仰卧板&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022354374.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>本文主要是介绍自己在健身房接触到的健身器材，一开始也不会专门去收集和整理这些只是，只会慢慢使用了之后，才去了解和记录。</p>
<h2 id="健身器材">健身器材</h2>
<h3 id="大腿内外侧肌训练器">大腿内外侧肌训练器</h3>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022333564.jpeg" alt="北京力健" style="zoom:50%;" />
<h3 id="坐姿推胸器">坐姿推胸器</h3>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022338730.jpeg"  />
<h3 id="坐姿推肩器">坐姿推肩器</h3>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022344098.jpeg"></p>
<h3 id="坐姿腿屈伸训练器">坐姿腿屈伸训练器</h3>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022347800.jpg"></p>
<h3 id="卧式曲腿训练器">卧式曲腿训练器</h3>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022348317.jpeg"></p>
<h3 id="蝴蝶机">蝴蝶机</h3>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022349886.jpg"></p>
<h3 id="多功能仰卧板">多功能仰卧板</h3>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309022354374.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《施瓦辛格健身全书》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%96%BD%E7%93%A6%E8%BE%9B%E6%A0%BC%E5%81%A5%E8%BA%AB%E5%85%A8%E4%B9%A6/</link>
      <pubDate>Thu, 31 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%96%BD%E7%93%A6%E8%BE%9B%E6%A0%BC%E5%81%A5%E8%BA%AB%E5%85%A8%E4%B9%A6/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309021331803.png&#34; alt=&#34;image-20230902133158093&#34; style=&#34;zoom:33%;&#34; /&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;只要你有心从错误中学习，经验就是最好的老师。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我相信，任何事情，只要我选择去做，就能够成功。我相信这点，因为我懂得，要想获得就需要牺牲、努力、坚持，并逐渐地克服障碍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你决心让自己的身体更加健康，你会发现自律、专注和成功的渴望都会逐渐灌注进你生活的其他方面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你们选择以我为师，我确实充满感激。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有疼痛，就没有收获。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无用输入导致无用输出。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有事情是偶然的，比方说，你不会随随便便就成为一名令人尊敬的医生。你需要经过多年专心的学习才能达到你的目标。在训练上，道理是一样的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你玩某种运动，你就会知道如何制订你的训练计划，以满足你特定运动的需求。然而，不管你是150磅（68.04千克）还是250磅（113.40千克），在最后，力量训练都是唯一的道路。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身对锻炼出紧致的肌肉组织，同时减少身体脂肪发挥着重要作用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有种奇怪的、极具讽刺性的生命现象是，体重过重的人也很容易疲劳，而那些消耗大量能量来训练的人，似乎有使不完的能量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;精神健康专家认为，在对抗焦虑方面，没有什么比得上运动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;定期训练可以显著地提高你的性生活质量，因为你会有更多的能量，睾酮水平更高，焦虑感下降，而且更有自尊。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“没有疼痛，就没有收获。”这句口号源于健身界。这是成功者和失败者之间的区别：你必须拥有一种真挚如火的欲望，去追求你的梦想，全心投入，获得进步，掌控你的条件以改变你的身体。你必须意识到，通过捷径，比如使用合成/雄性类固醇，只能获得短期的进步，却可能导致长期的健康问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身不是一朝之功，而是一生的事业。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第一部分-健身入门&#34;&gt;第一部分 健身入门&lt;/h2&gt;
&lt;h3 id=&#34;第一章-演变和历史&#34;&gt;第一章 演变和历史&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个人的体形看起来怎样——而不仅仅是他的力量看起来有多大——是非常重要的，因为打造富有美感体形的训练同样有益于整体健康。尽管如此，完全以美学的标准来评价男性体形的时代仍然还有好几年才能到来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身在健美比赛的竞技场之外仍然有用武之地。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果赫拉克勒斯降生在今天，那么他的名字就会是阿诺德·施瓦辛格。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不仅如此，在20世纪90年代，对那些一味看重块头而不是美感和平衡的评委，健美比赛的观众也显示出了越来越多的不满。但健美运动同样是在一个循环中，就像许多其他事物一样，因此，向一个方向摆动的钟摆会不可避免地回摆到中央位置，然后摆向另一个极端。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论是电影演员、电视演员、平面模特还是走台模特，大家都知道了，如果想要给人们留下深刻印象，那么最好有一个较好的体形。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们明白了，肌肉就是肌肉，无论你是想通过训练来保持体形和健康，还是想去参加健美比赛，你都需要同样种类的健身设施。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在某种程度上，获得更大的体形，不如提高你在某种运动中的能力。这对拳击、网球、足球等运动等来说是一条真理，并且或许在健身运动中这也同样是一条真理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身运动的第一原因是对运动的爱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身训练是实现身体健康的最佳方法之一，越多的人知道这一点并从中获益，这个世界就会越好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身的技巧适用于每一个人，也适用于每一种目的。毕竟，要教给你最好并且最有效的训练方法，有谁会比一个执著的健美运动员更能胜任呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每一个人都有保留自己意见的权利，但我认为，女性和男性有着同样的骨骼肌，因此她们也应该有自由根据自己的意愿来发展它们——健身是一项不论男女都能参与的运动。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第二章-健身基础知识&#34;&gt;第二章 健身基础知识&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;无论你进行健身是想塑造健美的身材，还是提高自己在各种运动中的表现，抑或是为了健康，看起来气色更佳，感觉精力充沛，抑或是为了身体康复，要正确地训练肌肉无不依赖相同的基础训练原则，坚持渐进式的训练过程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;渐进式训练之所以有效，是因为只要身体所承受的压力比它习惯的大，它就会去适应，从而变得强壮起来。如果你习惯每天跑2英里，那么每天跑5英里就对你的肌肉提出了更高的要求，同时这也要求心血管系统提供更多的氧气和营养，以保证肌肉在更大负荷下正常工作。如果你的身体状态很好，足够跑2英里，那么你的身体状态必须更好，才能跑5英里。在这个例子中，提高你的状态的方法其实就是增加跑的距离，并给身体时间去调整以适应这种变化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;肌肉适应了某个程度的要求——具体而言，就是你在训练中以某种强度能够举起的某种重量——当你所承受的重量或者强度增加的时候，你的肌肉就被迫变得更加发达而强壮，以适应增加的负荷。一旦你的肌肉适应了新的程度的要求，你训练的时候就可以再增加重量或者强度，这样肌肉就能继续变得更加发达和强壮。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;内华达大学的劳伦斯·戈尔丁（Lawrence Golding）博士这样解释这一现象：“如果你的汽车为10马力，你要它承受12马力的负荷，那它肯定会出故障。但是，如果你的身体的相当于一辆10马力的汽车，你让它承受12马力的负荷，它最终就会变成一辆12马力的汽车。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;并非任何一种使用重量的训练都能给你带来健美的身材。所以，你应该选择正确的练习，使用正确的技巧，这样才能向你的神经系统发出特定的信号，告诉你的身体你想要它达到什么样的适应度——这就是所谓的训练明确性，可见知道如何正确训练是何等重要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;电脑不可能知道你到底“想”要告诉它去干什么；它只是知道你实际告诉了它去做什么。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最理想的体形应该是这样的：宽阔的肩膀和背部，往下越来越细，直到一个紧致的腰部；腿和躯干的比例协调；肌肉发达、清晰、匀称，并且饱满直到关节部位；每个身体部位都足够发达，包括三角肌后部、下背、腹部、前臂和小腿；肌肉有良好的清晰度和分离度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;往往最具禀赋的运动员总是不明白这个道理：要想在运动场上称雄，必须靠艰苦的训练。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你能够举起的重量取决于三个因素：（1）你能够征用的肌纤维数量；（2）单根纤维的强度；（3）你所使用的技巧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一般而言，让肌肉最大化发展的方式是，使用单次能举起的最大重量的75％进行训练。对于多数人，使用这种重量，可以针对上半身做8～12次反复动作，针对腿部做12～15次反复动作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;光刺激肌肉增长还是不够的。为了让肌肉增长，还需要让肌肉得到休息，同时吸收足够的营养，这样肌肉才能复原和修复。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这部全书中，你不但会找到具体的练习动作以及如何将它们组合起来，还会找到整体训练计划、每次的训练量、如何安排训练日程，以及如何饮食，来为你的身体提供充足的营养以发展肌肉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有两种基本类型的耐力：肌肉耐力和心肺耐力。·肌肉耐力，是指在运动过程中肌肉反复收缩，且为完成动作征用最大数量的肌纤维的能力。比如说，在深蹲练习中，腿部肌纤维会很快疲劳。所以，如果你想完成整套动作组，就需要肌纤维快速恢复，而且在整个运动过程中，激活更多的肌纤维。·心肺耐力，是指心脏、肺、循环系统将氧气运至肌肉以维持运动的进行，并带走产生的废品（乳酸）的能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓有氧运动就是让你呼吸急促、心跳加快而你还能保持较长一段时间的练习。做有氧运动时你将会：增加肺脏从空气中吸入氧气并将其运送至血液中的能力；增加心脏通过循环系统输送大量的血液至肌肉的能力；增加运输血液至特定肌肉的毛细血管的数量和大小；增加心血管系统从肌肉中带走乳酸的能力（当我们在激烈运动过程中，乳酸让我们感觉肌肉灼痛）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你可以通过较为大量的肌肉收缩运动，增加肌肉耐力。这时你将会：增加得到锻炼的特定肌肉的毛细血管的大小和数量；增加肌肉储存糖原（碳水化合物）的能力。糖原为肌肉收缩准备能量；增加肌肉线粒体（能量工厂）的规模，线粒体用糖原制造出ATP（三磷酸腺苷），后者为肌肉收缩提供动力；增加耐力训练中被经常使用的肌纤维的发展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为健身训练依靠的是大量的运动（各种动作和反复次数），所以它对心肺功能有益，而且同样也能增加肌肉耐力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身训练的最佳强度应该是在心肺功能的极限之下，也即你的训练速度和身体向肌肉供给氧气的能力应该基本相当。这不会自然而然地提高你在各种耐力运动（比如跑步和骑自行车）中的表现，但是可以让你的心血管系统保持在良好的状态。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我一直坚信，心肺耐力同肌肉耐力同等重要。高强度的训练会使疲劳的肌肉中产生堆积的乳酸——生产肌肉收缩所需的能量时产生的废品。如果心脏、肺以及循环系统能够给这些地方提供充足的氧气，那么身体就会将这种乳酸重新加工成一种的新的能源；反之，这些堆积的乳酸会逐渐影响肌肉收缩，最终导致肌肉完全力竭。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上，你的心、肺和循环系统功能越好，那么你进行健身训练的强度就可以越大，这样你就可以更快地实现你的健身目标。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过分的有氧运动（有些运动员在比赛前无休止地训练，他们是会追悔莫及的！）可能减弱肌肉和整个身体的恢复能力。这会导致肌肉组织被作为能量消耗掉（用更大的白色肌纤维作为燃料供给小的红色肌纤维），这种结果就是所谓的“训练过度”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“训练过度”并非单指过度训练之后的疲劳感。这意味着你体内某种能量补给机制和恢复机制被压制或者关闭。“训练过度”是一种慢性症状，在这种状态下，不管你如何努力训练，都将徒劳无功。如果你发现自己处于“训练过度”状态，最好的疗法就是休息，有时要休息上几周。但是，只要你能合理地安排训练，就可以完全避免“训练过度”状态。所以，一定要注意足够的休息和足够的营养摄入。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;预防“训练过度”的一剂良药就是，在有氧训练中千万不要走极端。记住！健身就应该有健身的样子。你应该明确，和其他的运动不同，塑造和发展肌肉的主要方式就是通过渐进式的重量训练——举起那个铁家伙，而非有氧运动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重量训练和其他健身训练计划对于那些优秀的运动员来说特别有价值，因为他们在各自的领域中，要想百尺竿头更进一步已经非常难了。比方说，作为跳高比赛的王者之一的德怀特·斯通（Dwight Stones），在他的职业生涯的后期，每周都要拿出好几天时间进行训练，其中就包括重量训练，专门训练跳高的时间反而并不多。为什么？因为，多年的努力已经让他完全掌握了跳高的技术，所以过多的专业训练很难再有明显的成效。在技术上和神经肌肉的协调性上，他已经达到了登峰造极的程度，所以无论他多么努力训练收效总是甚微。所以，他需要的是一种更好的“工具”，来提升他的能力和技术。这就是为何他投入那么多时间在重量训练上的原因。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身训练可以让你塑造出最适合你的运动的身体——块头、力量和体重——这一点其他任何训练项目都做不到。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要弄清楚何种运动项目适宜使用何种重量训练并非易事。依运动生理学家乔治·布鲁克斯（George Brooks）和托马斯·费伊（Thomas Fahey）所言：“增加力量的最重要因素，是肌肉紧张的强度和持久度。我们需要对每项运动的力量要求进行评估，才能制定出一份合理而有针对性的训练计划。一般而言，对肌肉耐力有要求的运动项目应该使用动作反复次数较多的力量训练计划，对力量有要求的运动项目使用反复次数较少的训练。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不管你是针对何种运动项目进行训练，我认为以下这些基本理念是普遍适用的：1．总体而言，健身式的重量训练是控制身体成分的理想方法，无论你是想要你的身体变得更大、更重，还是想要更强壮同时又不增加体重，或者是让身材变得精干而结实又能减去过多的脂肪。这种训练计划应量身定制，以打造出最适合你的运动项目的体形。对于有些项目，身体过大或者过重反而会过犹不及。2．饮食、营养和重量训练一样是控制身体成分的重要因素。无论是为了增加体重，还是减少体重，抑或是为了变得强壮，“吃得正确”都是非常重要的。3．对于运动员来讲重量训练的最基本目的就是塑造更好的身体（更好的“硬件设施”），将力量提升到恰当的水平，同时增强身体的弱区。针对特定项目而进行的重量训练应该在具有资质的教练指导下进行。4．以健身为目的的重量训练对运动员的好处是它没有针对性。记住，相比于组合器械，使用自由重量进行训练能更好地提高身体的适应性。5．记住，举重是一项特殊的运动，需要特定的技巧以及单次最大力量的提升。但是，运动员的重量训练目的在于达到最优而非最高的力量状态，同时增强身体弱区，使各肌肉群达到更好的力量平衡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身训练能让身材标准，让身体健康、强壮，这绝非无稽之谈。毕竟，如果这种训练方式能成就那些“奥林匹亚先生”，那么对于大多数要求不高的人来说当然也一定会有很棒的效果。而且，如果你想要去做什么，为何不选择最佳的方式呢？当有人问我：“我想变得健康而结实，但是又不想变得块头太大。怎么办？”我会这样回答他们：“你想成为网球高手，你是否能说你只想学学网球，但是不想打得太好，你不是冲着温布尔顿冠军去的？或者你会让一个职业高尔夫选手教你打高尔夫，但是告诫他说不要把你教得像老虎·伍兹（Tiger Woods）那样棒？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上，并非所有的人都有足够的天赋、时间和精力让身体变得真正魁梧，铸就健美的身材。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当我们不去用肌肉，肌肉就开始萎缩和减少。我们不用它们，也就失去了它们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健身正是抵制肌肉退化的最有效的方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要担心会变得“过分发达”。你应该担忧的是你现在还剩多少肌肉。就像《爱丽丝梦游仙境》中的爱丽丝所发现的：你需要跑得越来越快，才能保持原地不动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上，人一天消耗的热量并非仅仅是看运动量，也和人拥有的肌肉量相关——肌肉会“燃烧”卡路里。这里的“燃烧”是指细胞中的氧化过程，为运动供给能量。所以，你的肌肉越多，就越容易变得和保持苗条。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309021331803.png" alt="image-20230902133158093" style="zoom:33%;" />
<h2 id="前言">前言</h2>
<ol>
<li>
<p>只要你有心从错误中学习，经验就是最好的老师。</p>
</li>
<li>
<p>我相信，任何事情，只要我选择去做，就能够成功。我相信这点，因为我懂得，要想获得就需要牺牲、努力、坚持，并逐渐地克服障碍。</p>
</li>
<li>
<p>如果你决心让自己的身体更加健康，你会发现自律、专注和成功的渴望都会逐渐灌注进你生活的其他方面。</p>
</li>
<li>
<p>你们选择以我为师，我确实充满感激。</p>
</li>
<li>
<p>没有疼痛，就没有收获。</p>
</li>
<li>
<p>无用输入导致无用输出。</p>
</li>
<li>
<p>没有事情是偶然的，比方说，你不会随随便便就成为一名令人尊敬的医生。你需要经过多年专心的学习才能达到你的目标。在训练上，道理是一样的。</p>
</li>
<li>
<p>如果你玩某种运动，你就会知道如何制订你的训练计划，以满足你特定运动的需求。然而，不管你是150磅（68.04千克）还是250磅（113.40千克），在最后，力量训练都是唯一的道路。</p>
</li>
<li>
<p>健身对锻炼出紧致的肌肉组织，同时减少身体脂肪发挥着重要作用。</p>
</li>
<li>
<p>有种奇怪的、极具讽刺性的生命现象是，体重过重的人也很容易疲劳，而那些消耗大量能量来训练的人，似乎有使不完的能量。</p>
</li>
<li>
<p>精神健康专家认为，在对抗焦虑方面，没有什么比得上运动。</p>
</li>
<li>
<p>定期训练可以显著地提高你的性生活质量，因为你会有更多的能量，睾酮水平更高，焦虑感下降，而且更有自尊。</p>
</li>
<li>
<p>“没有疼痛，就没有收获。”这句口号源于健身界。这是成功者和失败者之间的区别：你必须拥有一种真挚如火的欲望，去追求你的梦想，全心投入，获得进步，掌控你的条件以改变你的身体。你必须意识到，通过捷径，比如使用合成/雄性类固醇，只能获得短期的进步，却可能导致长期的健康问题。</p>
</li>
<li>
<p>健身不是一朝之功，而是一生的事业。</p>
</li>
</ol>
<h2 id="第一部分-健身入门">第一部分 健身入门</h2>
<h3 id="第一章-演变和历史">第一章 演变和历史</h3>
<ol>
<li>
<p>一个人的体形看起来怎样——而不仅仅是他的力量看起来有多大——是非常重要的，因为打造富有美感体形的训练同样有益于整体健康。尽管如此，完全以美学的标准来评价男性体形的时代仍然还有好几年才能到来。</p>
</li>
<li>
<p>健身在健美比赛的竞技场之外仍然有用武之地。</p>
</li>
<li>
<p>如果赫拉克勒斯降生在今天，那么他的名字就会是阿诺德·施瓦辛格。</p>
</li>
<li>
<p>不仅如此，在20世纪90年代，对那些一味看重块头而不是美感和平衡的评委，健美比赛的观众也显示出了越来越多的不满。但健美运动同样是在一个循环中，就像许多其他事物一样，因此，向一个方向摆动的钟摆会不可避免地回摆到中央位置，然后摆向另一个极端。</p>
</li>
<li>
<p>无论是电影演员、电视演员、平面模特还是走台模特，大家都知道了，如果想要给人们留下深刻印象，那么最好有一个较好的体形。</p>
</li>
<li>
<p>人们明白了，肌肉就是肌肉，无论你是想通过训练来保持体形和健康，还是想去参加健美比赛，你都需要同样种类的健身设施。</p>
</li>
<li>
<p>在某种程度上，获得更大的体形，不如提高你在某种运动中的能力。这对拳击、网球、足球等运动等来说是一条真理，并且或许在健身运动中这也同样是一条真理。</p>
</li>
<li>
<p>健身运动的第一原因是对运动的爱。</p>
</li>
<li>
<p>健身训练是实现身体健康的最佳方法之一，越多的人知道这一点并从中获益，这个世界就会越好。</p>
</li>
<li>
<p>健身的技巧适用于每一个人，也适用于每一种目的。毕竟，要教给你最好并且最有效的训练方法，有谁会比一个执著的健美运动员更能胜任呢？</p>
</li>
<li>
<p>每一个人都有保留自己意见的权利，但我认为，女性和男性有着同样的骨骼肌，因此她们也应该有自由根据自己的意愿来发展它们——健身是一项不论男女都能参与的运动。</p>
</li>
</ol>
<h3 id="第二章-健身基础知识">第二章 健身基础知识</h3>
<ol>
<li>
<p>无论你进行健身是想塑造健美的身材，还是提高自己在各种运动中的表现，抑或是为了健康，看起来气色更佳，感觉精力充沛，抑或是为了身体康复，要正确地训练肌肉无不依赖相同的基础训练原则，坚持渐进式的训练过程。</p>
</li>
<li>
<p>渐进式训练之所以有效，是因为只要身体所承受的压力比它习惯的大，它就会去适应，从而变得强壮起来。如果你习惯每天跑2英里，那么每天跑5英里就对你的肌肉提出了更高的要求，同时这也要求心血管系统提供更多的氧气和营养，以保证肌肉在更大负荷下正常工作。如果你的身体状态很好，足够跑2英里，那么你的身体状态必须更好，才能跑5英里。在这个例子中，提高你的状态的方法其实就是增加跑的距离，并给身体时间去调整以适应这种变化。</p>
</li>
<li>
<p>肌肉适应了某个程度的要求——具体而言，就是你在训练中以某种强度能够举起的某种重量——当你所承受的重量或者强度增加的时候，你的肌肉就被迫变得更加发达而强壮，以适应增加的负荷。一旦你的肌肉适应了新的程度的要求，你训练的时候就可以再增加重量或者强度，这样肌肉就能继续变得更加发达和强壮。</p>
</li>
<li>
<p>内华达大学的劳伦斯·戈尔丁（Lawrence Golding）博士这样解释这一现象：“如果你的汽车为10马力，你要它承受12马力的负荷，那它肯定会出故障。但是，如果你的身体的相当于一辆10马力的汽车，你让它承受12马力的负荷，它最终就会变成一辆12马力的汽车。”</p>
</li>
<li>
<p>并非任何一种使用重量的训练都能给你带来健美的身材。所以，你应该选择正确的练习，使用正确的技巧，这样才能向你的神经系统发出特定的信号，告诉你的身体你想要它达到什么样的适应度——这就是所谓的训练明确性，可见知道如何正确训练是何等重要。</p>
</li>
<li>
<p>电脑不可能知道你到底“想”要告诉它去干什么；它只是知道你实际告诉了它去做什么。</p>
</li>
<li>
<p>最理想的体形应该是这样的：宽阔的肩膀和背部，往下越来越细，直到一个紧致的腰部；腿和躯干的比例协调；肌肉发达、清晰、匀称，并且饱满直到关节部位；每个身体部位都足够发达，包括三角肌后部、下背、腹部、前臂和小腿；肌肉有良好的清晰度和分离度。</p>
</li>
<li>
<p>往往最具禀赋的运动员总是不明白这个道理：要想在运动场上称雄，必须靠艰苦的训练。</p>
</li>
<li>
<p>你能够举起的重量取决于三个因素：（1）你能够征用的肌纤维数量；（2）单根纤维的强度；（3）你所使用的技巧。</p>
</li>
<li>
<p>一般而言，让肌肉最大化发展的方式是，使用单次能举起的最大重量的75％进行训练。对于多数人，使用这种重量，可以针对上半身做8～12次反复动作，针对腿部做12～15次反复动作。</p>
</li>
<li>
<p>光刺激肌肉增长还是不够的。为了让肌肉增长，还需要让肌肉得到休息，同时吸收足够的营养，这样肌肉才能复原和修复。</p>
</li>
<li>
<p>在这部全书中，你不但会找到具体的练习动作以及如何将它们组合起来，还会找到整体训练计划、每次的训练量、如何安排训练日程，以及如何饮食，来为你的身体提供充足的营养以发展肌肉。</p>
</li>
<li>
<p>有两种基本类型的耐力：肌肉耐力和心肺耐力。·肌肉耐力，是指在运动过程中肌肉反复收缩，且为完成动作征用最大数量的肌纤维的能力。比如说，在深蹲练习中，腿部肌纤维会很快疲劳。所以，如果你想完成整套动作组，就需要肌纤维快速恢复，而且在整个运动过程中，激活更多的肌纤维。·心肺耐力，是指心脏、肺、循环系统将氧气运至肌肉以维持运动的进行，并带走产生的废品（乳酸）的能力。</p>
</li>
<li>
<p>所谓有氧运动就是让你呼吸急促、心跳加快而你还能保持较长一段时间的练习。做有氧运动时你将会：增加肺脏从空气中吸入氧气并将其运送至血液中的能力；增加心脏通过循环系统输送大量的血液至肌肉的能力；增加运输血液至特定肌肉的毛细血管的数量和大小；增加心血管系统从肌肉中带走乳酸的能力（当我们在激烈运动过程中，乳酸让我们感觉肌肉灼痛）。</p>
</li>
<li>
<p>你可以通过较为大量的肌肉收缩运动，增加肌肉耐力。这时你将会：增加得到锻炼的特定肌肉的毛细血管的大小和数量；增加肌肉储存糖原（碳水化合物）的能力。糖原为肌肉收缩准备能量；增加肌肉线粒体（能量工厂）的规模，线粒体用糖原制造出ATP（三磷酸腺苷），后者为肌肉收缩提供动力；增加耐力训练中被经常使用的肌纤维的发展。</p>
</li>
<li>
<p>因为健身训练依靠的是大量的运动（各种动作和反复次数），所以它对心肺功能有益，而且同样也能增加肌肉耐力。</p>
</li>
<li>
<p>健身训练的最佳强度应该是在心肺功能的极限之下，也即你的训练速度和身体向肌肉供给氧气的能力应该基本相当。这不会自然而然地提高你在各种耐力运动（比如跑步和骑自行车）中的表现，但是可以让你的心血管系统保持在良好的状态。</p>
</li>
<li>
<p>我一直坚信，心肺耐力同肌肉耐力同等重要。高强度的训练会使疲劳的肌肉中产生堆积的乳酸——生产肌肉收缩所需的能量时产生的废品。如果心脏、肺以及循环系统能够给这些地方提供充足的氧气，那么身体就会将这种乳酸重新加工成一种的新的能源；反之，这些堆积的乳酸会逐渐影响肌肉收缩，最终导致肌肉完全力竭。</p>
</li>
<li>
<p>事实上，你的心、肺和循环系统功能越好，那么你进行健身训练的强度就可以越大，这样你就可以更快地实现你的健身目标。</p>
</li>
<li>
<p>过分的有氧运动（有些运动员在比赛前无休止地训练，他们是会追悔莫及的！）可能减弱肌肉和整个身体的恢复能力。这会导致肌肉组织被作为能量消耗掉（用更大的白色肌纤维作为燃料供给小的红色肌纤维），这种结果就是所谓的“训练过度”。</p>
</li>
<li>
<p>“训练过度”并非单指过度训练之后的疲劳感。这意味着你体内某种能量补给机制和恢复机制被压制或者关闭。“训练过度”是一种慢性症状，在这种状态下，不管你如何努力训练，都将徒劳无功。如果你发现自己处于“训练过度”状态，最好的疗法就是休息，有时要休息上几周。但是，只要你能合理地安排训练，就可以完全避免“训练过度”状态。所以，一定要注意足够的休息和足够的营养摄入。</p>
</li>
<li>
<p>预防“训练过度”的一剂良药就是，在有氧训练中千万不要走极端。记住！健身就应该有健身的样子。你应该明确，和其他的运动不同，塑造和发展肌肉的主要方式就是通过渐进式的重量训练——举起那个铁家伙，而非有氧运动。</p>
</li>
<li>
<p>重量训练和其他健身训练计划对于那些优秀的运动员来说特别有价值，因为他们在各自的领域中，要想百尺竿头更进一步已经非常难了。比方说，作为跳高比赛的王者之一的德怀特·斯通（Dwight Stones），在他的职业生涯的后期，每周都要拿出好几天时间进行训练，其中就包括重量训练，专门训练跳高的时间反而并不多。为什么？因为，多年的努力已经让他完全掌握了跳高的技术，所以过多的专业训练很难再有明显的成效。在技术上和神经肌肉的协调性上，他已经达到了登峰造极的程度，所以无论他多么努力训练收效总是甚微。所以，他需要的是一种更好的“工具”，来提升他的能力和技术。这就是为何他投入那么多时间在重量训练上的原因。</p>
</li>
<li>
<p>健身训练可以让你塑造出最适合你的运动的身体——块头、力量和体重——这一点其他任何训练项目都做不到。</p>
</li>
<li>
<p>要弄清楚何种运动项目适宜使用何种重量训练并非易事。依运动生理学家乔治·布鲁克斯（George Brooks）和托马斯·费伊（Thomas Fahey）所言：“增加力量的最重要因素，是肌肉紧张的强度和持久度。我们需要对每项运动的力量要求进行评估，才能制定出一份合理而有针对性的训练计划。一般而言，对肌肉耐力有要求的运动项目应该使用动作反复次数较多的力量训练计划，对力量有要求的运动项目使用反复次数较少的训练。”</p>
</li>
<li>
<p>不管你是针对何种运动项目进行训练，我认为以下这些基本理念是普遍适用的：1．总体而言，健身式的重量训练是控制身体成分的理想方法，无论你是想要你的身体变得更大、更重，还是想要更强壮同时又不增加体重，或者是让身材变得精干而结实又能减去过多的脂肪。这种训练计划应量身定制，以打造出最适合你的运动项目的体形。对于有些项目，身体过大或者过重反而会过犹不及。2．饮食、营养和重量训练一样是控制身体成分的重要因素。无论是为了增加体重，还是减少体重，抑或是为了变得强壮，“吃得正确”都是非常重要的。3．对于运动员来讲重量训练的最基本目的就是塑造更好的身体（更好的“硬件设施”），将力量提升到恰当的水平，同时增强身体的弱区。针对特定项目而进行的重量训练应该在具有资质的教练指导下进行。4．以健身为目的的重量训练对运动员的好处是它没有针对性。记住，相比于组合器械，使用自由重量进行训练能更好地提高身体的适应性。5．记住，举重是一项特殊的运动，需要特定的技巧以及单次最大力量的提升。但是，运动员的重量训练目的在于达到最优而非最高的力量状态，同时增强身体弱区，使各肌肉群达到更好的力量平衡。</p>
</li>
<li>
<p>健身训练能让身材标准，让身体健康、强壮，这绝非无稽之谈。毕竟，如果这种训练方式能成就那些“奥林匹亚先生”，那么对于大多数要求不高的人来说当然也一定会有很棒的效果。而且，如果你想要去做什么，为何不选择最佳的方式呢？当有人问我：“我想变得健康而结实，但是又不想变得块头太大。怎么办？”我会这样回答他们：“你想成为网球高手，你是否能说你只想学学网球，但是不想打得太好，你不是冲着温布尔顿冠军去的？或者你会让一个职业高尔夫选手教你打高尔夫，但是告诫他说不要把你教得像老虎·伍兹（Tiger Woods）那样棒？”</p>
</li>
<li>
<p>事实上，并非所有的人都有足够的天赋、时间和精力让身体变得真正魁梧，铸就健美的身材。</p>
</li>
<li>
<p>当我们不去用肌肉，肌肉就开始萎缩和减少。我们不用它们，也就失去了它们。</p>
</li>
<li>
<p>健身正是抵制肌肉退化的最有效的方式。</p>
</li>
<li>
<p>不要担心会变得“过分发达”。你应该担忧的是你现在还剩多少肌肉。就像《爱丽丝梦游仙境》中的爱丽丝所发现的：你需要跑得越来越快，才能保持原地不动。</p>
</li>
<li>
<p>事实上，人一天消耗的热量并非仅仅是看运动量，也和人拥有的肌肉量相关——肌肉会“燃烧”卡路里。这里的“燃烧”是指细胞中的氧化过程，为运动供给能量。所以，你的肌肉越多，就越容易变得和保持苗条。</p>
</li>
<li>
<p>健身运动中对重量训练的使用是有节制的——使用次高水平的阻力和相对高的训练量。因此，只要做得正确，注意特定的技巧，一般健身者除了一些正常的肌肉酸痛或者偶然的扭伤（任何运动都会有的）之外，不会有重大的伤损。</p>
</li>
<li>
<p>健身训练还是一种让你的生活变得规律、有节制的好方法。当你通过训练让你的体质得到增强的时候，你就会变得更加注重饮食习惯。毕竟，为何要让那些不雅的肥肉掩盖美观的肌肉呢？你必须控制你的日程，确保训练的进行，这也就意味着更好地安排你的业余时间。坏习惯呢？像吸烟和酗酒这类事情，可能会干扰你的训练效果，影响身体的进步。明天进行晨练！千万不要熬夜，浪费太多时间在深夜档的电视节目上。如果你用健身运动来规范你的生活，它不仅会对你的身体和精神产生影响，也会改变你的所作所为，改变你身边的人。</p>
</li>
</ol>
<h3 id="第三章-训练体验">第三章 训练体验</h3>
<ol>
<li>
<p>每个健身者站在镜子前，看着自己浑身的肌肉不断冒出之时，无不欣喜异常。有人甚至还会拿出一卷皮尺，来精准地测量出自己身体每个部分到底长出了多少肌肉。但是对我来说，训练体验本身就是一种回报，就是值得欣喜的。我常常在一天中的最佳时刻去健身房训练。我喜欢训练的感觉、训练时的泵感、训练之后那几近虚脱的放松感。我不仅仅享受于作为一个健身者，也陶醉于健身的过程。</p>
</li>
<li>
<p>有些人需要别人去激励他们进行强度更大的训练，有些则需要人去提醒：不要训练过度了。就我的经验而言，那些需要克制的人，迟早是要出人头地的。</p>
</li>
<li>
<p>在健身训练中，“身”与“心”同等重要。我所知道的那些健美冠军都热情高涨，他们迫切希望让他们的肌肉发达起来。但是，“心”之所以重要还有另外一个原因。为了取得效果，你需要学会思考；你必须明白自己在干什么；你必须掌握训练技巧；你必须超越基本的健身原则，找出真正适合你的训练方式；你必须发展自己的直觉，就像发展你的肌肉一样，而且要学会倾听它们。毋庸置疑，艰苦的训练是少不了的，不过如果想要很好的效果，也少不了聪明的训练。</p>
</li>
<li>
<p>在开始阶段，每个健身者都应该严格遵守基本的健身原则。在这个阶段，你不能跟着感觉进行训练，因为你压根还不明白正确的训练方式是什么感觉——而这需要体验。诀窍就是掌握正确的训练技巧，渐渐习惯训练的感觉，然后你才可以开始依靠感觉和直觉的指引。</p>
</li>
<li>
<p>你仍然需要不断地思考和学习，聪明地进行训练，运用你的头脑，获得你需要的知识，从而达到你个人的健身目标。</p>
</li>
<li>
<p>奇妙的泵感是这个世界上最好的感觉之一，甚至可以同性爱媲美。据举重冠军和运动生理专家弗雷德·哈特菲尔德博士（粉丝们称他为“深蹲博士”）所言：“大量血液涌入肌肉会刺激或多或少的本体感受器。训练和随之产生的泵感会产生一系列荷尔蒙反应，其中包括内啡肽和脑啡肽的释放，这两种物质是天然的止痛剂。”</p>
</li>
<li>
<p>哈特菲尔德博士还说到，随着时间的推移，锻炼就越来越会引发积极的情绪，所以当锻炼的感觉与好的精神状态在你的身体中关联起来之后，你的快乐中枢就会受到更多的刺激。</p>
</li>
<li>
<p>当你的肌肉渐渐膨胀起来，你会有一种奇妙的感觉，觉得自己强壮了许多，同时更乐意进行艰苦的训练，从而达到更高的训练强度。</p>
</li>
<li>
<p>毋庸置疑，充分的休息很重要，不要操劳过度，饮食要均衡，以为锻炼补给营养，但是无论你感觉有多糟，或者多么没有精力，只要你集中精神，专心致志，泵感仍然会出现。</p>
</li>
<li>
<p>我自认为是一个注重效果的人，我做任何事情都关注结果。所以，我在健身生涯的早期就已经意识到，在训练中——和在大多数事情中一样——你的投入决定你的收获。训练越是刻苦，取得的成绩也就越显著。当然，前提是你的训练方法是要尽量有效。</p>
</li>
<li>
<p>当达到这种瓶颈状态时，要想取得更好的结果就需要增加你的训练强度。我的意思是什么呢？非常简单，强度是对你的训练效果而非训练投入度的衡量。使用什么方法可以增加强度呢？比如说，你可以：·增加训练重量；·增加每一组中的反复次数；·减少组之间的休息时间；·一次性不间断做两组或者更多组（超级组）。</p>
</li>
<li>
<p>心肺耐力是增加强度的一个制约因素。如果无法向肌肉供给充足的氧气，肌肉会过早地停止工作，你也就不能充分刺激它们。不过，如果你减少间歇时间，逐渐加快你的训练进度，就能给身体充分的时间来适应，你进行艰苦训练和持久训练的能力也会随之增加。</p>
</li>
<li>
<p>你越是资深，进步就越难，需要的训练强度就越大。</p>
</li>
<li>
<p>造成酸痛还有一个常见的原因，就是在肌肉内堆积了乳酸。当肌肉活动产生乳酸的速度比循环系统将其带走的速度快时，乳酸就会堆积起来。当你进行大量的高强度训练之时，乳酸的量就会超过一定的范围，这会给你一种灼伤感，也会在训练后给你一定的酸痛感。</p>
</li>
<li>
<p>一般而言，你可以不顾酸痛坚持训练。实际上，继续训练会缓和那种酸痛感，因为训练可以将更多的血液输送到酸痛的区域。蒸桑拿、按摩或者其他治疗方式也可以缓和酸痛感，不过归根结底你还是要等上几天，让受压过度的组织慢慢复原，你才能完全恢复。</p>
</li>
<li>
<p>任何让你感觉疼痛的训练只是徒增伤痛，加剧对身体的伤害。你唯一的办法就是，让那块有问题的身体区域休息；如果伤害严重或者一直不见好转的话，还需要寻求医生的帮助。</p>
</li>
<li>
<p>你要学会区分“好的”疼痛和受伤的疼痛，这对于你成功健身非常必要。如果顶着真正的损伤继续训练，只能让你在很长一段时间内不能再训练，甚至可能将“急性”损伤变成“慢性”损伤，如果那样的话，你可能需要好几年时间才能缓和过来。</p>
</li>
<li>
<p>但是有些疼痛不仅是必可不少的，而且实际上它们正是健身的精髓所在。当你的肌肉在“燃烧”，告诉你要停下时，再做最后几次反复——正是这最后的几次反复决定你的训练是否到位。杠铃弯举中，你的肱二头肌已经在痛苦地尖叫了，然而还要做第10次或者第11次反复——也许这是打造终极手臂的必经之路。这种训练到肌肉开始痛苦燃烧的现象并非健身独有。当有人问传奇的拳王阿里（Muhammad Ali）在一次冠军赛之前他会做多少次仰卧起坐时，他回答说，不清楚。他解释说：“只有开始疼的时候，我才开始数。”</p>
</li>
<li>
<p>不管你的借口多么冠冕堂皇，没有付出就没有收获。</p>
</li>
<li>
<p>“你难道不知道，身体在受伤之后会变得比原来更加强壮吗？折了的骨头愈合之后，也比原来要更加强韧。我不刻就能将你治愈！”</p>
</li>
<li>
<p>如果我不是保持着一种乐观的态度，积极寻医访药以求痊愈，我又怎能从那次挫败中走出来呢？我的比赛生涯也许早已经在那个时期画上句号了。</p>
</li>
<li>
<p>没有人每次都能怀着百分之百的精气神走进健身房。如若哪天你状态不佳，你的训练伙伴会对你进行鞭策，让你渐渐进入状态。而当你状态不错的时候，你也会如此去激励你的伙伴。不管天气如何，不管你前一天晚上睡得如何，不管你的情绪如何，知道会有个人在健身房等着你出现，都是一个巨大的激励。</p>
</li>
<li>
<p>你想找的结婚对象，应该是能让你生活更好的人，而不是一个让你整日抱怨的人。</p>
</li>
<li>
<p>其实道理很简单：能够有助于你更快地取得更大进步的训练伙伴则是好的训练伙伴；阻碍你进步的训练伙伴就是不好的。</p>
</li>
<li>
<p>如果你有足够的动力，那么无论什么情况下，你都会想方设法地安排训练。</p>
</li>
<li>
<p>我最常听见的抱怨是“挤不出时间来训练”。有些年轻的健身者可能在读书，或者是有工作，所以要严格安排好训练比较困难。他们说：“我真羡慕那些职业的健美运动员，他们没有那么多烦心事，一天三件事，训练、吃、睡觉。”当我听到这些，就想起一个叫塞吉奥·奥利瓦的屠夫，他晚上在屠宰场工作，工作完接着去健身房卖力训练。还有，我和弗朗哥也曾经如此，当时我们初到美国，虽然白天要砌砖工作，但仍然坚持训练计划。</p>
</li>
<li>
<p>我和我伙伴5点钟起来，打开坦克的工具箱，拿出我们藏在那儿的哑铃，然后在其他人醒来之前练上一个小时。当天的演习结束之后，我们会再训练一个小时。我想不到还有比这更艰难以至不能进行训练的情况。</p>
</li>
<li>
<p>要找到训练的时间和精力不过是动力和想象力的问题。每个人都能根据自己的个人情况，腾出训练的时间。</p>
</li>
<li>
<p>我异常明白，对于那些无志于参加健美比赛的人来说，安排训练的确会成为一个问题。他们想，每天疲于工作、事业、家庭、育儿，哪还能从一天中腾出一个小时来锻炼呢！但是底线是：如果你不去找时间，你不去付出，你就没有所得。你是真的挤不出时间吗？比方一些报道说，一天当中最容易被浪费的时间是晚上10点到12点。难道你那发烧的深夜档电视节目真的比塑造出一个好身体更重要？为何不早点入睡，明天早起来一个小时呢？我经常在早上5点钟训练，虽然要一点时间来适应，不过我在早晨的这段时间却取得了最佳的锻炼效果。</p>
</li>
<li>
<p>大多数商界和电影界的成功人士都告诉我，他们不管怎么样每天都要锻炼。要知道，他们可是这个世界上最忙碌的一群人。他们是怎么做到的？因为他们善于安排时间，因为他们充分认识到健身之于生活的重要性。</p>
</li>
<li>
<p>这些人从来不曾意识到，自私的是他们；他们根本不理解健身对你有多么重要，你为之又付出了多少辛劳和汗水。我相信，我不是唯一一个因为要早上5点起床赶往健身房而曾被女友抱怨的人。</p>
</li>
<li>
<p>不管是男性还是女性，两者的目标都是一样的——让体形呈现出最大的美感。</p>
</li>
<li>
<p>正确的方法是取得最好效果的保证。</p>
</li>
</ol>
<h3 id="第四章-健身场所">第四章 健身场所</h3>
<ol>
<li>在那次训练结束时，我获得了我能想象的最好的泵感——一个差点荒废的早晨，变成了我人生中最佳的一次训练经历。如果我不是去世界健身中心，不是和其他健美运动员在一起，不是他们启发和鼓舞我，那么那天不可能有那么大的收获。</li>
</ol>
<h3 id="第五章-开始训练">第五章 开始训练</h3>
<ol>
<li>
<p>一名专注的健身者，总是会在一天中的黄金时段待在健身房训练。他总是在思考以后的训练，计划着下一步该怎么进行。一旦他完成了一次训练，他就急不可待地想着下一次训练。所以，如果要我相信你真是要去健身的话，那你就只管走进健身房，开始训练。正如那句如雷贯耳的广告口号说的那样：“只管去做！”</p>
</li>
<li>
<p>你登上珠穆朗玛峰必然是由底部一步步攀登而上的，绝不是从山顶起步。生命是一个需要不断学习的过程，健身也绝不例外。</p>
</li>
<li>
<p>我建议，在你开始之前，用相机从四面对你的身体拍照，并记下一些重要的测量数据——脖围、胸围、二头肌尺寸、前臂尺寸、手腕的尺寸、腰围、大腿的尺寸、小腿的尺寸，还有你的体重。用这种方法，你就可以在一段时间后看到你到底取得了多大的进步。顺便说一下，如果你不好意思给自己的身体拍照，因为你不想见到自己的身材，那么这也就意味着你多么需要进行健身了。</p>
</li>
<li>
<p>健身是需要精神的充分参与的，对于你想要的结果，以及你想要成为的样子，必须有清楚的认识。</p>
</li>
<li>
<p>再说一遍，即使你无意于成为一名健美运动员，即使你健身只是为了身体健康，你也必须用最快、最有效的方法进行训练，因为浪费时间实在毫无必要。</p>
</li>
<li>
<p>你还要学着去记录自己的饮食习惯，在每周你喝了多少蛋白质饮料，以及你的食谱和饮食控制的时间。这样，也许五年之后——那时你已经记不得这些细枝末节的事情了——你还能清楚地查阅到，在你的健身过程中，你做了哪些事情，又没做哪些。</p>
</li>
<li>
<p>你的基因很大程度上决定了你的身体对训练会怎样反应。</p>
</li>
<li>
<p>健身运动就像龟兔赛跑的故事一样：坚持不懈，持之以恒，最终你会后来居上，在终点线前成功冲刺。</p>
</li>
<li>
<p>记住！你进步的速度并不是最重要的，最重要的是你能走多远。</p>
</li>
<li>
<p>你体内的睾酮越多，你就越容易变得强壮，肌肉也越容易增大。</p>
</li>
<li>
<p>自由重量还能让不同身高、不同体重、不同身体比例——长臂、短臂、长腿、短腿等——的人都达到完全的锻炼效果。</p>
</li>
<li>
<p>一个优良的健身计划所包含的器械训练不能超过30％～40％（最多如此！）。</p>
</li>
<li>
<p>人类在得到正确的反馈的时候，工作效果和学习效果最佳。知道你已经完成了某件事情，是一回事；目睹你所完成的事情，却是另外一回事。</p>
</li>
<li>
<p>反馈信息还会让你知道，你的训练是否在正规上。</p>
</li>
<li>
<p>坚持不懈地记训练日志极大地帮助了我的训练。</p>
</li>
<li>
<p>经常有人问我：“我现在开始健身，是否为时过晚？”我经常回答说：“正是你这样的年龄，才需要健身呢！”因为随着我们年龄的增大，肌肉结构以越来越快的速度萎缩。对于此，最好的药方就是健身。</p>
</li>
<li>
<p>健身可能是永葆青春的诀窍。</p>
</li>
<li>
<p>记住，很多我们认为是不可避免的衰老信号，其实只不过是我们对自己的身体懈怠或者疏忽的信号。岁数变大的过程中，并不必然伴随着肌肉或者骨质的减少——你完全可以保持现有的身材，甚至可以让其更加强壮。</p>
</li>
<li>
<p>健身是一种追求自我价值和自我肯定的生活方式——你为自己设定目标并努力达成目标，这会让你对自己的能力产生自信。</p>
</li>
<li>
<p>无论在哪项运动中，要想取得成功，都需要执著和专注，这是一般人难以想象的。要想达到顶峰就要有所牺牲，健身也不例外。</p>
</li>
</ol>
<h2 id="第二部分-训练计划">第二部分 训练计划</h2>
<h3 id="第一章-基础训练原则">第一章 基础训练原则</h3>
<ol>
<li>
<p>为了有健美的身材，你就需要像样的训练。运动员诸如足球运动员、摔跤运动员还有举重运动员都有很多的肌肉；但是，只有健美运动员才拥有优美、匀称、肌肉完全发达的身体。如果你也想拥有健美的身材，或者说你想让自己的身材更接近健美，那么你就需要学习和掌握一些训练技巧，这些训练技巧是在过去约半个世纪的时间内，由无数健身者不断摸索而总结出来的。正如打网球和挥动高尔夫球杆有各自特定的技巧一样，健身训练也有其特定的技巧，掌握这些技巧，有助于进行最快、最有效的肌肉锻炼。</p>
</li>
<li>
<p>每一个人，无论他健身的目的是什么，都应该掌握一定的基础知识，并且了解一个训练项目应该包括哪些东西。最重要的是，每个人都应该学习一些基本的练习动作，因为无论你达到了什么样的水准，这些练习都是很重要的。</p>
</li>
<li>
<p>你的肌肉只会在被强迫超负荷运作之后才会生长。它们不会对任何不足的负荷作出反应，哪怕只差了一点点。除非你强迫它们，否则肌肉永远不会增大或增强。如果使你的肌肉一直承受一个它们还不习惯的阻力，那么你就能使它们逐渐适应那个阻力，并变得更强壮。但是，一旦它们完全适应了，这个生长的过程就会停止。当这种情况发生时，能使你的肌肉继续生长的唯一办法就是进一步增加它们所承受的超负荷的量，而最基本的途径就是在你的练习中增加重量。</p>
</li>
<li>
<p>如果一个健身者在每个练习中使用的重量是他能承受的最大重量——也就是说，是他全力以赴完成一次反复时所能达到的最大重量——的70％～75％时，那么效果是最好的。如果你使用这样的重量，那么一般情况下，你会发现，你能够完成这样的练习组：·上半身肌肉，8～12次反复；·腿部肌肉，12～16次反复。这些数据只是近似值，但它们可以作为普遍的参照标准。</p>
</li>
<li>
<p>是什么导致这种“力竭”的状态呢？基本上，这是由于正在使用的肌纤维渐渐疲劳，而肌肉无法再征用更多的肌纤维以替换已经疲劳的肌纤维而造成的。肌肉收缩是一个氧化的过程——实际上，是以一种“燃烧”的形式，这就是为什么我们说训练的时候会燃烧卡路里（能量的释放产生热量）——氧化过程需要同时具备能量（肌肉中的ATP）和氧气，而一旦能量或者氧气供给不足，肌纤维就不能收缩。这时就需要休息和复原才能让它们恢复收缩的能力。</p>
</li>
<li>
<p>有氧运动（有氧气参与）是指以充分低的强度做大量的反复，这样身体才能输送足够的血液和氧气到相关区域，肌肉才能不断得到供给——比如说马拉松，或者有氧操。</p>
</li>
<li>
<p>重量训练是无氧运动（无氧气参与），相关的肌肉收缩强度过高，导致氧气的供给跟不上。所以，你的肌肉开始缺氧，你开始疲劳，不得不停下来休息，让身体输送更多的血液和氧气至疲劳区域。</p>
</li>
<li>
<p>有了一定经验的健身者，针对其上半身就会这样训练：第一组：使用较轻重量的热身组，15次反复或者稍微多一点；第二组：增加重量，使得肌肉只能做大致10～12次的反复；第三组：继续增加重量，使得“力竭”出现在8～10次反复后；第四组：增加足够的重量，使肌肉只能做6次反复（强力组）。第五组（可选）：使用相同的重量，尽量再做6次反复。如果需要的话，向训练伙伴寻求帮助，以完成该组练习（强迫次数组）。</p>
</li>
<li>
<p>从相对较轻的重量开始，这可以让你的肌肉做好充分的热身准备；然后，再使用较重的重量，稍微减少反复次数，这样可以迫使更多的血液流入肌肉中，让你体验到奇妙的泵感；最后，再增加重量，这样训练强度增大，有利于力量和体能的增加。</p>
</li>
<li>
<p>一般而言，在基础的训练计划中，我推荐每种练习动作都包括4个组，有特别规定的除外。基于以下几个原因，我认为这是最佳的训练系统：1．你需要至少做4组动作，才能使得训练量足以刺激所有可用的肌纤维。如果每种动作的组数过多，那么你的总训练量太大，有训练过度的风险。2．每种动作进行4组，这样在基础的训练程序中，身体每个部位总共进行12组动作（针对大肌肉群），而在高级的训练程序中则是20组动作，这样使得你的动作种类丰富，从而达到锻炼身体某部位所有区域的目的。比如说，上背和下背、背阔肌的外侧弧线和背部内侧。3．健身者们50年的训练经验证明，你能承受的、可以让你完成4组训练的最大重量可以刺激肌肉，让它们生长。</p>
</li>
<li>
<p>在大多数情况下，健身练习应该以最大的动作幅度来训练肌肉。（有一些特例，我以后会讲到。）</p>
</li>
<li>
<p>健身是锻炼肌肉的运动，不是单纯的举重。</p>
</li>
<li>
<p>永远注意，热身要全面彻底。</p>
</li>
<li>
<p>在健身房训练受伤的原因主要有两个：用了不合适的技巧（使用的重量过重或者不能完全控制重量），或没有进行恰当的拉伸和热身练习。</p>
</li>
<li>
<p>不管老少，掌握恰当的技巧并进行拉伸和热身练习都是有益的。养成这种习惯越早，你就越会从中受益——这是一生的利益。</p>
</li>
<li>
<p>力量训练可以让相对较少的肌纤维一次性承受巨大的压力，促使它们变得越来越粗，越来越厚实，同时也会让肌肉变得更加紧致——这对于塑造那种强壮而结实的身体大有裨益。</p>
</li>
<li>
<p>健身的根本目标是通过重量训练，让肌肉变得更大。</p>
</li>
<li>
<p>你的训练强度越大，身体需要的修复和复原的时间就越长。休息和恢复非常重要，因为虽然说训练可以刺激肌肉增长，但是肌肉的真正增长和适应是在训练之后的休养期间发生的。</p>
</li>
<li>
<p>在锻炼的过程中，以糖原形式储存在肌肉中的能量也会消耗殆尽。所以身体需要一定的时间才能重建肌肉细胞内的化学平衡，清理残存的废物，重新储备耗损的糖原。</p>
</li>
<li>
<p>细胞本身需要一定的时间，以适应运动的刺激，从而增长。毕竟，健身运动的首要目的就是让肌肉发达起来，如果你让某块肌肉训练过度，在刚完成了一次训练之后，马上强加更剧烈的压力于其上，那么该块肌肉就没有时间来增长，你的进步速度也就必然放缓。</p>
</li>
<li>
<p>不同的肌肉恢复的速度是不同的。</p>
</li>
<li>
<p>在训练了某块肌肉之后，隔上一天再训练它。</p>
</li>
<li>
<p>训练过的肌肉比没训练过的肌肉要恢复得更快。所以，你的水平越高，你恢复的速度就越快，同时你的训练强度就可以越大。</p>
</li>
<li>
<p>训练太慢也是不好的。如果在每组之间休息5分钟，你的心率已经下降了，你的泵感渐渐消失，肌肉冷却下来了，训练强度下降至零。</p>
</li>
<li>
<p>将你的组间休息时间设定在1分钟或者更少一点。在重量训练之后的第一分钟内，你的力量已经恢复了72％；到3分钟的时候，你已经完全恢复了，不需要多余的休息。但是记住，训练的意义是刺激尽可能多的肌纤维，让尽可能多的肌纤维疲劳，而这只有在身体被迫征用更多的肌纤维，来替换已疲劳的肌纤维的时候才是可能的。所以，你在两组之间，不能让肌肉完全恢复——休息的长度只要足够让训练继续下去，同时不断强迫身体征用更多的肌肉组织就可以了。</p>
</li>
<li>
<p>你越是强壮，你能举起某个重量的次数也就越多。这同时意味着，你越是发展自己的肌肉耐力，你也就越强壮。</p>
</li>
<li>
<p>用力时呼气。比如，如果你在做深蹲练习，当重量放置在肩上时，吸气，并蹲下，然后当你用力站起的时候呼气。记住，这时不要屏住呼吸。</p>
</li>
<li>
<p>肌肉在强力收缩时常常伴随着隔膜的收缩，特别是当进行腿举或者深蹲时，这会增加胸腔的压力。如果你屏住呼吸，可能会导致受伤。比如说，你可能会伤害你的会厌，阻碍咽喉气流的通道。所以，当你极尽用力的时候，呼气有助于避免这种伤害。甚至，有些人还认为，这样能让你实际上更加强壮些。</p>
</li>
<li>
<p>拉伸练习是训练中最容易被忽略的部分。当一只狮子醒来的时候，它站起来，第一件事情就是充分拉伸一下整个身躯，让每块肌肉、肌腱、韧带都做好准备，可以展开迅疾、残忍的行动。</p>
</li>
<li>
<p>拉伸练习还可以提高你在训练中的安全度。</p>
</li>
</ol>
<h3 id="第二章-了解你的身体类型">第二章 了解你的身体类型</h3>
<ol>
<li>
<p>任何一个人，只要他曾经去过海滩、游泳池或者健身房，都能证明这样一个事实：人们生来所具有的身体特征是多种多样的。一些人更高或更矮，更白或更黑，肩部更宽或更窄，腿部更长或更短，天然的耐力水平更高或更低，身体中的肌肉细胞或脂肪细胞更多或更少。</p>
</li>
<li>
<p>了解你的体型可以帮你节约许多时间，减少失望。</p>
</li>
<li>
<p>人之所以有不同的身体类型，其中的一个原因就是新陈代谢。有些人的身体天生就会燃烧很多的卡路里，有些人的身体天生倾向于将食物的能量转化为肌肉或者脂肪，而另外一些人的身体倾向于将摄入的食物转化为运动的能源。然而，随着你的身体发生改变，你的新陈代谢也会随之改变。</p>
</li>
<li>
<p>肌肉消耗能量，所以一位内胚型的人只要通过训练获得越来越多的肌肉块头，就能很容易瘦下来。</p>
</li>
<li>
<p>身体的适应性很强。体内本身具有的数千种代谢过程一直在发生作用，如果你向它们提出了不同的要求——如将摄入的蛋白质转化为肌肉，或者增加脂肪消耗以获取能量——它们也会随之作出相应的调整。</p>
</li>
<li>
<p>如果你非常瘦或者非常胖，那么需要警惕，最好让医生检查一下你的甲状腺功能。甲状腺在调节人体新陈代谢的过程中扮演着重要的角色。当甲状腺活力不足（甲减）时，这时就很难消耗过剩的脂肪；当甲状腺活力过高（甲亢）时，增加身体重量几成泡影。</p>
</li>
<li>
<p>外胚型训练如果你很外胚型，那么你的首要目标是增加体重，尤其是优质的肌肉块。如果没有一定的力量和耐力来满足马拉松式的训练，你会发现肌肉增加得很缓慢。通常还需要强迫自己吃足够的食物，才能保持增长。因此，对外胚型的人，我的建议如下：1．为了发展肌肉块，应在训练计划中安排大量的强力练习动作，即你的训练应倾向于使用较重的重量和较低的次数（热身以后每组6～8次反复）。2．学着进行高强度训练，让每一组都实在、有效。这样能缩短训练时间，而且能取得实质性的成果。（也许针对身体每个重要部位只要进行14～16组练习，而不是16～20组）。确保在动作组之间有足够的休息，并在两次训练之间给予自己充分的恢复时间。3.注意营养，摄入比你平常更多的卡路里，而且如果有必要，使用能增重的、蛋白质含量高的饮料来辅助你的饮食。4.记住，你正试图将食物能量转化为肌肉，所以不要燃烧太多的能量，要避免过量的其他形式的运动，比如有氧运动——跑步、游泳等。某些心肺训练是令人愉悦的，同时对身体的健康来说也是必需的。但是，如果每天在健身房之外花上数小时消耗大量的体能，那么在健身房训练的时候，就很难达到增长肌肉的效果。</p>
</li>
<li>
<p>中胚型训练对中胚型的人来说，增加肌肉块头相对比较容易，但必须在训练计划中包含足够多样的练习动作，这样才能让肌肉协调地增长，有款有型，而非仅仅是块头比较大。因此，对于中胚型的人，我的建议是：1.在基本的打造块头的强力练习之外，注重强调肌肉的质量和细节的孤立训练。你的肌肉很容易得到增长，所以你从一开始，就可以关注肌肉的形状和分离度。2．中胚型的人训练很容易取得成果，因此不必太过担心能量的保存或者训练过度。标准的训练强度是，针对每个身体部分进行16～20组练习；至于两组之间的休息时间，根据你个人的情况，可长可短。3．含有大量蛋白质的均衡饮食，保持一定的卡路里水平，不要让身体太轻或太重。不宜猛增30磅（13.61千克），然后再去减掉多余无用的体重。</p>
</li>
<li>
<p>内胚型训练一般而言，内胚型的人在塑造肌肉时并非特别困难，但是必须注意减掉脂肪重量，同时还要关注饮食控制以防止体重反弹。因此，对于内胚型的人，我建议：1．多采用高组数和高次数（每组反复次数不低于10～12次）的训练和很短的休息时间，以燃烧尽可能多的脂肪。如果你想变得苗条，进行一些额外的练习，增加一些额外的动作组，是一个不错的主意。2．增加有氧训练，比如说骑车、跑步或者其他一些有助于消耗卡路里的活动。在健身房训练虽然也可以消耗热量，但是不如连续进行30～45分钟或者更久的心肺训练消耗得多。3．低热量的饮食，保证营养均衡（参看第四部分）。摄入足够的蛋白质、碳水化合物和脂肪，但是一定要控制在最低限度；补充维生素和矿物质，确保身体获得最基本的营养。</p>
</li>
<li>
<p>无论上天赐予了何种体型，当你增加肌肉、减少脂肪时，你就是在改变了你的身体成分。</p>
</li>
<li>
<p>别人看不见你的体脂率，他们看到的就只是身体的外观而已。</p>
</li>
</ol>
<h3 id="第三章-基础训练计划">第三章 基础训练计划</h3>
<ol>
<li>
<p>入门者面临的首要任务就是为身体奠定坚实的基础——实实在在的肌肉，而不是大块肥肉。稍后，你再将这些肌肉塑造成均衡、优质的形状。</p>
</li>
<li>
<p>健身进步的快慢，与最终效果无关；最重要的是你能走多远，而不是多快。无论你从什么时候开始，你多大岁数，或者你是什么样的身体类型，这个过程都是一样的——在很长一段时间里，需要刻苦、持续、专注的训练。</p>
</li>
<li>
<p>通常，健身者将身体划分为以下基本的范畴或者肌肉群：·后背·肩膀·胸部·上臂·前臂·大腿和臀部·腰部·小腿但是要真正塑造和发展身体的每个重要区域，你还需要对肌肉群再进行细分：·后背——背阔肌的宽度和长度，背部厚度，中背部肌肉的发达度，下背部竖脊肌的发展；·肩膀——大小和丰满度，三角肌的三个头（前部、中部、后部）的发展，斜方肌；·胸部——胸肌上部和胸肌下部，中胸的厚度，丰满的胸腔，躯干两侧的肌肉细节，前锯肌和肋间肌；·肱二头肌——肱二头肌的上部、下部，总长度，厚度；·肱三头肌——肱三头肌三个头的发展，细节和分离度，块头和厚度；·前臂——伸肌和屈肌的发展，肱肌与肘部的联结度；·股四头肌和臀肌——股四头肌全部四个头的发展，股四头肌的分离度，大腿外侧的弧线，大腿内侧的内收肌；·腘绳肌——股二头肌的饱满度和弧线，腘绳肌与股四头肌的分离度；·腹肌——腹肌上部和下部，腰部两侧的腹外斜肌；·小腿——浅层的腓肠肌和深层的比目鱼肌。</p>
</li>
<li>
<p>对于基础训练计划，我建议如下划分：第一阶段：以3天为一个周期，锻炼整个身体，对每个身体部位每周进行2次训练。第二阶段：以2天为一个周期，锻炼整个身体，对每个身体部位每周进行3次训练。腹部：在两个阶段中，都是每天锻炼。我通常每周训练6天，星期天作为休息日。这便于我跟踪我的训练日程：星期一，某些身体部位；星期二，另一些身体部位，等等。如果你没有固定的时间，那么用“训练期1”代替星期一，用“训练期2”代替星期二，以此类推贯穿你的整个训练计划。</p>
</li>
<li>
<p>你的训练计划中必须包含休息日。记住，在较高强度的训练之后，你必须得到足够的休息，让身体恢复，以便增长力量和块头。这意味着要有充足的睡眠（8小时最佳），同时意味着你必须注意生活中的轻重主次问题。如果你的目标是锻炼出最大块的肌肉，那么你就需要注意，不要进行太多其他的运动或者身体活动，以免耗尽自己的体能。这正好像如果你想要存钱买房子或一辆车，你将必须有心地进行定期储蓄。</p>
</li>
<li>
<p>对我来说，早晨是最佳的训练时间，那时我得到了充足的休息，神清气爽。一些健身者喜欢晚些时候训练，但我身边的大多数人都喜欢在早上训练。到现在为止，比尔·珀尔仍坚持早晨5点开始训练，然后余下的时间，做其他感兴趣的事情。如果你的工作时间很有规律，这就意味着你要很早起床，完成你的训练。当弗朗哥和我早晨7点到达健身房时，通常见到律师、会计师、教师和其他全职工作者，已经完成了训练，淋浴完准备去上班了。站在他们的立场上看，这确实显示出了他们的专注，而这种专注往往能够产生最好的效果。</p>
</li>
<li>
<p>如果你只能在晚上训练，或者这是你的个人喜好，毫无疑问，你同样能取得锻炼效果。只是要问问自己，你是否认为那样是最好的安排？你晚些时间训练是因为那样对于你来说效果最好，还是因为你没有动力早早爬起来进行有规律的晨练？</p>
</li>
</ol>
<h3 id="第四章-高级训练原则">第四章 高级训练原则</h3>
<ol>
<li>
<p>在渐进式训练中，强度是关键因素。那么何为强度呢？这分为两种。一种指的是你感觉自己锻炼得有多么用力——努力的强度；另外一种指的是你对肌肉的刺激度，以让肌肉有所反应，获得增长——效果的强度。认识到这两种强度之间的差异是非常重要的。否则，你可能只会继续不停地用力锻炼（常常有受伤的风险），而不是掌握该章介绍的强度技巧，以获得最大的训练效果。</p>
</li>
<li>
<p>时间是增加训练强度的一个重要因素。通过控制时间，你可以通过两条基本的路径增加强度：（1）在更少的时间内完成相同的训练量；（2）在相同的时间内进行更多的训练。</p>
</li>
<li>
<p>增加训练负荷的最直接的方式是使用更大的重量进行训练。还有一种很好的方法，就是缩减两组之间的休息时间，连续无间隔地进行两种或者三种不同的练习——这就对你的耐力提出了更高的要求。耐力同力量一样，可以通过渐进的方式得到发展，即每次只增长一点。你也应该用自己最快的节奏，严格按照动作要领进行训练。这样可以让你在最短的时间内完成最大量的训练。</p>
</li>
<li>
<p>“冲击原则”字面上指的是对身体进行冲击，通过变换不同的训练方式，对身体进行“突袭”。</p>
</li>
<li>
<p>孤立训练指的是针对某块肌肉或者某个肌肉群或者某块肌肉的某部分，将其同其他的肌肉孤立开来进行训练。</p>
</li>
<li>
<p>完美无缺的身材是不存在的。如果某身体部位没有反应，那么不要只是接受这个事实，而要做些什么——其中一个主要的措施就是使用优先原则。</p>
</li>
<li>
<p>所谓超级组，指的是连续、无间隔地做两种练习动作。为了提高训练强度，你甚至可以连续、无间隔做三组练习（三合组）。想要达到做大量超级组所需要的耐力需要花上一段时间，不过也就是时间和毅力的问题。实际上，有两种超级组：（1）你可以针对同一个身体部位连续进行两种练习（比如坐姿划船和拉力器下拉）；（2）你可以对两个不同的身体部位进行训练（比如在引体向上之后进行仰卧推举）。针对同一个肌肉群的超级组可以让你专注于那个区域，给它终极的打击。</p>
</li>
<li>
<p>递减法指的是，当你即将无法进行某组练习的时候，减轻重量，这样你就能继续下去，进行更多的反复。初学健身的时候，我非常清楚，在快完成某个练习组时，几乎难以再进行一次反复，但这并不代表肌肉已经完全疲劳——这仅仅意味着肌肉再难以举起那个重量——如果减去一些重量，你又可以进行更多的反复；如果再减去一些重量，你又可以继续训练更长时间。每次如此做的时候，你都在强迫你的肌肉使用更多的肌纤维。绝对不能在一种练习的开始，在仍然精力旺盛、强壮有力的时候就使用递减法，而只应该将其用在最后一组上。</p>
</li>
<li>
<p>除非你想尽量发展肌肉的清晰度，否则我不推荐将重量减到过轻，因为太轻的重量不会让你的肌肉得到增长。</p>
</li>
<li>
<p>静力原则在两组练习之间的1分钟休息时间内，不要光坐着，看你的训练伙伴是如何训练的，而是继续紧缩你正在锻炼的肌肉。这样不但能保持泵感，让肌肉为更多的动作作准备，而且就其本身而言也是一种非常有益的练习。紧缩是一种静力练习，而静力——虽然健身中通常不使用静力，因为它们并不通过整个动作幅度锻炼肌肉——会让肌肉保持强烈的收缩状态。实际上我认为，光有大块头的肌肉还不够，你还要学会控制它们，而静力训练就是你的学习过程。</p>
</li>
<li>
<p>当你刚开始健身训练时，为了练就基本发达的肌肉结构，应该尽量掌握基本的练习动作，这时跟着一套计划训练会让你有很大的收获。但是经过一段时间的训练后，如果你感知自己的身体，理解它对训练的独特回应，并依据它们对你的训练作出相应的调整，你将发现会有更大的进步。</p>
</li>
<li>
<p>我开始与戴夫·德雷珀一起训练时，他告诉我一种其他的方法：他去健身房的时候，知道自己当天要训练的身体部位和要做的练习动作，但是他会根据那天的感觉来调整练习动作的顺序。比如说，他平常是以宽握引体向上开始训练，那么那天他可能会以俯身划船开始，以引体向上结束当天的训练。他相信他的直觉，并以此为训练的依据。有时他还会放弃当天的正常训练，去做一些完全不同的事情：比如15组仰卧推举、更少的大重量组或者更多的快速组。</p>
</li>
<li>
<p>身体有它自己的节奏，每天都不一样。</p>
</li>
<li>
<p>在你能够依据直觉偶尔调整训练计划并之中获益之前，至少需要经过一年或更长时间的常规训练。</p>
</li>
<li>
<p>你只有给尽可能多的肌纤维以物理上和神经上的刺激，健身的整体效果才会显现。</p>
</li>
<li>
<p>你还在疼痛难忍，你的伙伴又把重量交回给你，你能完成的次数会越来越少。但是这个技巧的重点是，轮到你的时候你就必须上——无论你准备好了没有，也不论你有多累。</p>
</li>
<li>
<p>“你来，我也来”的方法对于训练相对较小的肌肉更有用，比如肱二头肌或小腿肌肉而不是大腿肌肉或背部肌肉。诸如深蹲和俯身划船这样的练习需要非常多的能量，即使不用这种强度的训练，你也会很快用尽气力。</p>
</li>
<li>
<p>为了冲击身体，让一个身体部位每次都做不同的练习，而不是做5～6组同样的特定练习。复合组与超级组不一样：你每次做一种练习，中间休息，但是每种练习只需要完成一组，接下来做下一种练习。</p>
</li>
<li>
<p>“一个半”法另一个改变肌肉所承受的压力的方法是，在任意动作组中，完成一个完整的反复之后，再增加半个反复，然后轮流进行完整的反复和半个反复直到整组结束。当你这样做时，要保证后面的半个反复做得非常慢、非常标准，在动作的终点暂时固定重量，再慢慢地、有控制地把重量放下。</p>
</li>
<li>
<p>你用动作的下半阶段，进行一系列的半个反复，然后用动作的上半阶段，进行一系列的半个反复，然后再进行一系列的完整反复。做多少次反复由你自己决定，但要保证半个反复和整个反复的数目相等，我通常使用10-10-10系统。许多健身者选择7-7-7系统，因此这个方法还被称作“21响礼炮”：3×7=21。这种训练会产生额外的压力，因为在动作半途中你必须停下来，这样会迫使肌肉以其不适应的方式来出力。</p>
</li>
<li>
<p>没有人能够在每次训练中都用尽全力。</p>
</li>
<li>
<p>如果你使用这个系统，对一个身体部位一个星期训练三次，那么第一次是强度训练，使用相对较多的组数和次数，但是不要使用最重的重量；在第二次训练中增加重量，但是仍需要保存实力；到第三次训练时，你就要使用非常重的重量，控制每组的次数最多在4～6次。通过在一个星期内循序渐进地增加负荷，你的身体已经做好准备应对非常重的重量所带来的冲击了。</p>
</li>
<li>
<p>尝试用更快的速度举起重量有以下的益处：1．它导致了变化阻力。为什么？因为杠杆原理的作用，你在动作的一个阶段要比另一个阶段更有力。当你更有力时，重量就会稍微加速。而被加速了的重量比没有加速的或者加速很少的要重。因此，当你更有力时，重量也更重；当你的力量较弱时，重量也较轻了——这就是变化阻力。2．它可以征用最大数量的白色快肌纤维。白色快肌纤维比红色慢肌纤维更大（约22％）更强。3．它可以导致持续的力竭。当肌肉被施加超过其能力的任务时，就会生长。当你试着加速重量时，你所能实现的加速量会有一个上限，达到这个上限时肌肉不能再以更快的速度移动重量。因此与其说在练习的最后达到力竭，不如说你在每次反复中都能体验到一定程度的力竭。</p>
</li>
<li>
<p>弹震式训练比起常规、匀速的动作，要求稍为不同的技术：1．使用匀速正常地放下重量，在底部暂停一下，然后将重量举起，在整个动作行程中，稳定地加快动作速度。2．将一组练习持续到能力的极限，而不是绝对力竭。这是指当你不能再加速举起重量，而只能慢慢地举起重量时，这组练习就结束了。在弹震式训练中没有必要越过这个界限。3．在两组练习之间多留休息时间，可以有1～2分钟。因为白色快肌纤维比红色慢肌纤维需要更多的恢复时间，而快肌纤维是弹震式训练的重点。</p>
</li>
<li>
<p>罗马不是一天建成的，同样，要练出一流的身材也非一日之功。要想练出一身健硕的肌肉意味着从基本开始：掌握必需的技巧，循序渐进地增强力量、调适身体状态，然后逐渐提高训练的强度——其中一部分就需要使用高级训练原则。</p>
</li>
<li>
<p>为了达到更加理想的效果，你在训练时必须有一个目标，并且你的目标可以随训练过程的推移而变化。</p>
</li>
</ol>
<h3 id="第五章-练就一流的身材高级训练计划">第五章 练就一流的身材：高级训练计划</h3>
<ol>
<li>
<p>这个高级训练计划是为这些人设计的，他们不满足于仅仅是健康而已，想进一步挑战自己，想练就健硕有力、让人过目不忘的体形。对于这样的人来说，仅仅达成增加几磅肌肉的目标是远远不够的。相反，他们不仅仅要力量和肌肉块头有实实在在的增加，同时还想要塑造他们的身材——打造肌肉的形状和分离度，协调不同肌肉群之间的比例，打造令人印象深刻的肌肉清晰度。</p>
</li>
<li>
<p>空想是没有任何意义的，你得学着如何去达到目标。</p>
</li>
<li>
<p>如果一个人想要成为一名医生，他就必须掌握关于身体的知识——人体的构造、各部分的名称和工作方式。如果要练就一流的身材，也必须学习所有关于人体的知识——人体各部分以及肌肉的名称、身体各部分如何联结在一起、身体对各种练习的反应。如果不了解这些知识，那么不论动机有多强，你也不能把身体中的最大潜能发掘出来。</p>
</li>
<li>
<p>健身也被比喻为雕塑，因为一位健身者塑造身体体形的方法就如同一位艺术家雕刻一尊大理石或者花岗岩雕像一样，而我们唯一的原料就是我们的肌肉。</p>
</li>
<li>
<p>如果你想要全面地控制你的身体并塑造一个雕像般的体形，那么在基础训练计划里学到的练习和训练原则是远远不够的。你需要了解更多，进行更多不同种类的练习；你需要更多的知识，帮助你设计训练计划，以达到特定的结果；你还需要有一定的能力，以保证训练达到一定的强度，这样你的身体才会持续地生长和改变。</p>
</li>
<li>
<p>给自己设定这些更高的目标会花费你更多的时间、精力，需要更加投入，还要有坚持不懈的韧性。所以这就对你的精神提出了更高的要求，需要一种坚定又清醒的决心——不仅仅是“想要做什么”，还要包含一种真切的、充满愉悦感的动机。你必须对达成目标如饥似渴；必要的努力应该被看做是机遇而不是负担。不是“该死，今天又要锻炼了。”而是“哇哦，我迫不及待地要去健身房训练！”如果你有足够强的动机，那么额外的负担对你就无足挂齿。</p>
</li>
<li>
<p>我一闭起眼睛就可以在我的脑海里清楚地看到冠军的体形应该是什么样子，那个愿景出现在我的训练、饮食以及其他一切我做的与健身有关的事中，它指导着我。</p>
</li>
<li>
<p>你在高级训练中应该朝着下面这些具体的目标前进，包括：·锻炼额外的肌肉块和逐渐形成肌肉形状；·不仅要注重块头，同样也要注重每个肌肉群的细节；·塑造体形在平衡、比例和匀称方面的美感；·打造肌肉间和主要的肌肉群之间的分离度；·学习全面掌控你的身体的发展过程，这样你就能修正不平衡处、薄弱点、问题区域。</p>
</li>
<li>
<p>如果你想要练就一流身材，就必须使用一流的训练强度、技巧和知识来完成训练。这是项困难的任务，但是它可能是你的生活中最有收获的挑战之一。</p>
</li>
<li>
<p>我可以肯定如果早期的运动员能明白为何我们现在对高组数训练如此钟爱，他们的身材一定会有很大的改善。</p>
</li>
<li>
<p>当你取得越多的进步，身体往前发展的阻力也就越大。那意味着你必须在训练时更加努力，以构成必要的训练强度，而且你必须确定在你的训练中使用最有效的方式。为了确保你的身体能持续地发展，在执行高级训练计划时要完成数量相对多的练习。这不是随意的或是依据个人口味而订的，而是有着专业生理学的原理作为指导：（1）征用和激活每一块肌肉里参与活动的所有纤维，在每个特定练习中，让肌肉达到精疲力竭的状态；（2）针对每个身体部位做足量的不同练习，可以保证每个肌肉都从所有的角度得到锻炼，从而造就尽可能完美的形状，同时确保身体的主要肌肉都受到了这种全面的刺激。</p>
</li>
<li>
<p>理想状态下的训练需要每种练习做4组。你可以通过短暂休息持续做4组的事实证明，在完成最初的几组练习后，仍然有精力充沛和未被征用的肌纤维存在。所以没有哪种练习动作能够完全发展某处肌肉，即使是最简单的肌肉。</p>
</li>
<li>
<p>使用双分化训练是达到高级训练的要求的一种方法，简单地说，它是将每天的训练分成两个不同的训练期。</p>
</li>
<li>
<p>在一天内训练我的胸部、背部和腿部是非常苛刻的。我意识到，如果我在早晨训练胸部和背部，然后在休整了一段时间之后，重新恢复了体力，晚些时候再来训练，就可以以更高的强度训练身体的其他部分——这样就能让我的腿得到真正高强度的训练。</p>
</li>
<li>
<p>我发现自己正在使用的双分化训练方法，是能使我的训练维持在高强度水平上的唯一方法。我知道如果我想成为“宇宙先生”，必须要有这种训练强度。</p>
</li>
<li>
<p>使用双分化训练，你可以在早晨的训练中全力以赴，在白天恢复体力，然后精力充沛地回到健身房再次向极限发起冲击。我总是爱在两个训练期中间留8～10个小时以保证完全恢复——确保你得到了真正充足的休息。如果你白天的运动量过大的话，那么10个小时的休息可能还不够。当然，在下午的晚些时候或晚上安排第二个训练期，对你的时间表提出了新的要求，需要你进一步地调整你的日程。这个系统的另一个优点是在你的两次训练中可以燃烧许多额外的卡路里，这意味着你不需要按一天一次的训练量来控制饮食。</p>
</li>
<li>
<p>如果你的肌肉因前一天的训练感觉酸痛，那么额外增加一天的休息时间，但是无论如何都要完成建议的训练量。</p>
</li>
<li>
<p>在基础训练中，我们已谈过在训练中不时地为自己设置“重磅日”的必要性——试着挑战自己力量的最大值。当你进入高级训练后，“重磅日”显得更加重要。</p>
</li>
<li>
<p>我建议你偶尔忘记你的日常计划，进行仅由强力练习或大重量的弹震式训练构成的整套训练。记住！除非具有坚硬结实的肌肉结构，否则即使肌肉再精致、再平衡或者再比例协调，都不会好看——而坚硬的肌肉结构来自于不时使用大重量挑战你的身体极限。</p>
</li>
<li>
<p>高级训练要求每3～6个月改变你的训练计划，取消某些练习动作，替换上其他的练习动作。这项工作是非常必要的，它可以：（1）为身体每个部位提供各种各样的动作，以发展每块肌肉和每个肌肉群的每个区域；（2）强迫身体尝试一些新的、意想不到的动作，来冲击肌肉进一步地生长；（3）让你不会厌倦。</p>
</li>
<li>
<p>某些基础练习是非常根本的，必须出现在任何一个完整的训练计划中。</p>
</li>
<li>
<p>因为世界上并没有所谓完美的身体，你的身材总是存在需要改进的地方。每当你有了进步，你就可以对自己的身体有更多的了解，可以体会怎样的饮食和训练计划是最适合自己的。但是基础的训练是不能停止的，你要做的是在其上添加新的东西。</p>
</li>
<li>
<p>健身不止是一门科学，同样也是一门艺术，所以你不能被僵硬的、一成不变的训练计划所束缚。</p>
</li>
<li>
<p>有些时候，当你对某部位过度地进行了训练，强度非常剧烈，频率非常之高时，反而会让该部位更加落后于其他身体部位，因为这个部位的肌肉没有机会休息、恢复从而得到生长。解决这个问题的答案非常简单，给被训练的肌肉休息和恢复的机会，调整你的训练时间表，避免训练过度再次发生。记住！过犹不及，在健身训练中同样如此。</p>
</li>
<li>
<p>你怎样才知道自己的肌肉生长缓慢，是由训练不足还是由训练过度导致的呢？在某种程度上，随着你的训练经验越来越丰富，凭着身体的直觉就能知道这个。但是这里有一些实用的经验法则：1．解决刺激不足问题最常见的方法是，试着更艰苦地训练，提高训练的强度，采用额外的强度技巧，而不是大量增加训练的组数。2．引起训练过度的原因几乎总是训练组数过多，训练频率过高，同一身体部位在两次训练中的休息时间过少。（在训练中缺乏泵感可能是训练过度的信号之一。）如今有那么多很不错的健身者，原因之一是他们都懂得在短时间内进行高强度训练，然后给他们的肌肉充足的时间休息并恢复。始终牢记，训练能刺激肌肉生长，然而真正的生长发生在你休息的时候。</p>
</li>
</ol>
<h3 id="第六章-参赛训练计划">第六章 参赛训练计划</h3>
<ol>
<li>
<p>为健美比赛而训练，需要克服的障碍更多的是心理上的而非生理上的：你必须下定决心，你真正想要的是加入顶级健美运动员的行列，与那些很可能是你过去钦佩的健美运动员——即使他们的形象曾经启发和激励过你继续训练——同台竞技。</p>
</li>
<li>
<p>参加比赛完全是另一种游戏。你突然开始关注诸如肤色、外貌、造型，以及最主要的，学着应对一种压力——这种压力以前在健身房训练时还不存在，以至于你此时完全没有招架之力。</p>
</li>
<li>
<p>你要确定从哪些角度锻炼每一块肌肉，需要什么样的强度技巧才能获得你所追求的发展。</p>
</li>
<li>
<p>为了尽可能地减少身体脂肪，再将你的饮食摄取减到最低限度——这就齐了。</p>
</li>
<li>
<p>一个健美运动员应该把一年中的大部分时间花在强力训练上，需要吃多少就吃多少，然后再把训练转换成参赛模式，以获得比赛场上所需的肌肉质量和精细度。</p>
</li>
<li>
<p>我相信宁缺毋滥的真理——有选择性地参加一些比赛，而不是参加所有能参加的比赛。</p>
</li>
<li>
<p>我建议仅仅参加对你个人职业生涯真的很重要的比赛——一年仅参加一次比赛并且获胜，比到处参加比赛却一无所获要好得多。</p>
</li>
<li>
<p>要认识到参赛训练会做什么，不会做什么：它不会增加肌肉块头，不会让你变得更大更壮，事实上，有时候还会产生相反的效果；但它会提升你已经打造出来的肌肉的质量，去除不重要的部分，以显示出你肌肉组织中钻石般闪耀的每一面。</p>
</li>
<li>
<p>我已经认识到，单纯的块头并不能让我成为顶级冠军。我减去多余的脂肪，用的不是两个月，而是整整一年的时间。</p>
</li>
<li>
<p>看着卷尺上的大数字，或者努力去感觉衣服在你的身体周围紧绷，却没有集中足够的注意力去减少脂肪，完成终极的肌肉清晰度和质量，这将带给你必然的结果——输。我凭经验能够告诉你这个。</p>
</li>
<li>
<p>当你开始为比赛而训练时，你需要设定许多特别的目标：1．你需要将更多的注意力集中在孤立每块单独的肌肉的每个区域上。2．你需要使用额外的强度原则和更多种类的练习。3．你需要在你的训练期中增加动作组的总数量，并增加训练重量。4．你需要改变你的训练节奏，进行一定数量的超级组和三合组训练，大幅减少你的组间休息时间。5．你必须在饮食上作重大改变。6．你需要在组间休息时不断地紧缩肌肉和摆造型。7．你需要考虑找一个训练伙伴，他可以帮助你集中精力完成超强度的训练。</p>
</li>
<li>
<p>没有什么时候比你准备参加比赛时，更需要有一个可靠的训练伙伴。</p>
</li>
<li>
<p>当你的伙伴需要帮助时，你也有同样的责任。</p>
</li>
<li>
<p>这儿有一些标准，是你在设计个人的训练计划中应该使用的：1．确保你的训练计划中既有打造块头的练习，比如强力练习或者弹震式练习，也有孤立练习，以打造身体每个部位的质量。2．主要使用自由重量来发展块头和力量，拉力器和器械更多的是做孤立练习的。3．包含能锻炼到每块肌肉的每个部分的练习。</p>
</li>
<li>
<p>两天的分化：在两天内完成一次全身训练，每个身体部位一个星期训练三次；三天的分化：在三天内完成一次全身训练，每个身体部位一个星期训练两次。</p>
</li>
<li>
<p>为每个身体部位选择恰当数量的、合适的练习动作。</p>
</li>
<li>
<p>要判断哪儿是你的弱点——是胸肌上部、下部还是中部，是肱二头肌、肱三头肌还是背阔肌的宽度——你就必须看着镜子里的自己。</p>
</li>
<li>
<p>当你对训练作出一些调整时，一定要确保，你没有在矫正弱点时制造出新的弱点。你必须继续给其他身体部位足够的注意力，即使你在全力处理问题区域。</p>
</li>
<li>
<p>对质量来说最重要的一个方面是肌肉的分离度。肌肉分离度是肌肉发达的一种水平，它远远超出简单的肌肉清晰度。训练和饮食可以给你不错的清晰度，但是要变成“行走的解剖图”以赢得比赛，就需要做更多的事情。</p>
</li>
<li>
<p>完整的肌肉分离度是全面彻底地训练每一块肌肉的结果，一旦你的身体脂肪减少到一定水平，每一个平面、轮廓和侧面都会完全显露出来。要达到这种效果，需要对每块肌肉做许多不同的练习和大量的组数、次数，但是还需要特定的技巧：1．很有必要完全孤立每块肌肉以及每块肌肉的每个特定部位，这样才能锻炼到每个肌纤维，从而练就每块肌肉和主要的身体部位之间清晰的分离度。要做到这点，需要准确地知道每个练习是怎样影响肌肉的，并在训练计划中安排能够实现你想要的塑形效果的练习动作。2．没有动作的严格性，是不能实现极致的肌肉分离度的。这就要在动作的整个行程中高度集中注意力，从而让每条参与练习的肌纤维都能承受最大量的压力。任何执行上的疏忽大意都会让你达不到目标。除非你以非常严格的方式来做孤立练习，否则那些专门为特定的区域而设计的动作不会产生效果。比如，做哑铃前平举来增加胸部和三角肌的分离度时，如果你将重量甩起来而不是让肌肉做所有的工作，你就不能练就饱满的肌肉形状，也就达不到你追求的肌肉分离度。如果想锻炼某个区域，你就必须足够严格地做动作，以感觉到你要锻炼的地方在卖力工作。3．显然，如果你的肌肉被脂肪覆盖，什么样的分离度都显示不出来。所以要实现很棒的肌肉分离度，通过适当的饮食控制达到较低的脂肪含量，同样是非常重要的。</p>
</li>
<li>
<p>他没有认识到，他的体重多少、身体各部分的尺寸多少以及身体成分测试所显示的数据多少，都与健美比赛所真正关心的东西没有任何直接联系。</p>
</li>
<li>
<p>真正能衡量你的体形是否很棒的方法只有一个，就是你看起来怎样。毕竟，评委们不会使用水下称重法，使用卷尺或者任何其他的仪器来做决定。他们只会用眼睛来看，而你也必须这样做。</p>
</li>
<li>
<p>在两个东西之间寻找差别比单独分析一件东西要简单。一个好的方法是定期地用相机拍照，比较你此时和彼时的样子。另一个方法是站在健身房里其他的健身者旁边，摆出一些造型，你就可以精确地看到你的优劣势。</p>
</li>
<li>
<p>最终的测试是在竞技台上的输赢。这就是为什么，有时非常有必要参加几场比赛，才能真正地评估你的进步。从一场比赛到另一场比赛的表现，可以非常清楚地告诉你，你的训练方法是否奏效。</p>
</li>
<li>
<p>镜子是对你最诚实的评论家——如果你允许它来评论的话。</p>
</li>
<li>
<p>看镜子时只看你想看到的东西，也不是成就冠军的方法——你需要完全客观地观看自己，没有任何偏袒。</p>
</li>
<li>
<p>同样记住，坚持写你的训练日志，这样你可以对进步有一个精确的记录。</p>
</li>
<li>
<p>我总是非常享受阳光明媚的日子里在户外进行训练。在阳光下训练能让你看上去更健康，拥有更紧致的肌肤，甚至绽放出古铜般的色彩。从早期的“肌肉沙滩日”开始，健美运动员就已经开始利用阳光明媚的日子进行户外训练了。</p>
</li>
<li>
<p>进行户外训练时，我主张放缓训练的节奏，但要使用很重的重量。这样可以让从你日常的训练中得到休息，同时也是刺激和冲击你的身体的一个好办法。</p>
</li>
</ol>
<h3 id="第七章-精神高于一切-精神最强大的工具">第七章 精神高于一切 精神，最强大的工具</h3>
<ol>
<li>
<p>只有你知道了如何同时训练你的精神，你的身体才会对训练产生完全的反应。你的精神是一台发电机，是重要能量的来源。这种能量可能是消极的，从而不利于你的训练，或者你可以驾驭它，让自己进行难以置信的训练，练就你梦寐以求的体格。无论何时，当你听说某人有惊人的竞技表现的时候——高尔夫球手老虎·伍兹、篮球运动员迈克尔·乔丹（Michael Jordan）、短跑选手迈克尔·约翰逊（Michael Johnson）或者滑雪名将赫尔曼·迈尔，你要明白，他们的成功来自于他们精神的力量，而不只是技术上或是器械上的技巧。可以肯定的是，即使你拥有相同的身体技能，如果你不能在“内驱力”上匹敌他们，也就不能战胜他们。</p>
</li>
<li>
<p>当人们有强烈的动机时，他们可以在滚烫的煤上行走，他们能忍受美国海豹突击队严酷的体能训练，走过广袤的沙漠，驾雪橇穿越北极荒原，爬上珠穆朗玛峰，横渡英吉利海峡，骑自行车环游世界，举起惊人的重量——尽管异常痛苦，尽管不顺利，尽管胜算不高，尽管障碍不少，他们都毅然前行。</p>
</li>
<li>
<p>有很多具体的方法可以帮助你驾驭精神的力量以达成你的目标：1．愿景。就像我曾经说过的那样，首先对于自己想干什么、想达成什么目标，要有一个清晰的愿景。我一直十分信奉“身随心动”这句话。当你的愿景变得足够强大之后，一切其他的事情也都会紧随其后：你的生活方式、训练方式、交友观、饮食、娱乐方式。愿景就是目标，一旦你目标清晰，你的生活抉择也就随之明确了。愿景创造了信念，信念又创造了意志。有了信念，就没有了忧虑，也没有了怀疑——只有绝对的信心。2．想象。仅仅有“变强大”的愿望还不够——健身不止于此，它关注肌肉的块头、形状、对称感以及清晰度，它是一种雕塑、一门艺术。为了达成你的目标，在你的心中必须有一幅你意欲达成的体形的画面。当你看着镜子时，你必须如实地看待自己现在的样子，同时想象着自己未来理想的体形。你要通过“心眼”看到日后你将要训练出的肌肉块和强有力的体格的样子。使用这样的想象可以给你的精神和身体一个清晰的任务，一个明确的奋斗目标。3．偶像。我已在第五章提到过我是如何利用雷格·帕克的照片的，因为他具有希腊勇士般的体形，而那就是我期待有朝一日能成为的样子。我记得70年代当我与弗朗哥·哥伦布一起旅行时，身材矮小的健身者涌向他，感谢他对他们的鼓舞，让他们有信心进行训练甚至参加比赛。身材中等、富有美感体形的人可以选择弗兰克·赞恩或者是肖恩·雷作为偶像。拥有厚实肌肉的人可以从多里安·耶茨或者纳赛尔·桑贝蒂的照片中寻找灵感。当你发现一些能代表你的理想体形的运动员后，尽可能多找一些他们的照片，从杂志上将他们的照片撕下来全部贴在墙上、冰箱上——总之，只要是能帮助你集中精神进行训练的东西都可以。4．动机。动机是一种驱动力，它有助于你确立一心一意的目标，从而让你坚定地每天在健身房花上2～4个小时，完成最艰苦的训练。某种动作完成4～5组，和让你的身体真正达到极限之间，效果是完全不同的。动机给你对目标的渴望，从而使你严于律己：你在脑海中清晰地构想自己的目标，然后坚持不懈地刻苦训练：一次又一次的反复、一组又一组的练习、一次又一次的训练。5．训练策略。除了去想象最终的训练成果之外，你还应该知道，每个大肌肉群需要朝哪个方向发展；为了达成目标，你又应该采用哪些具体的练习，使用哪些技巧。既然你已经规划好了你的方向和目标，那么你现在需要做的就是设计路线。这是你要使你的训练真正个性化的关键点，弄清你的身体对特定的动作和强度技巧的反应，然后确定使用何种策略来打造你正为之努力奋斗的理想身材。除此之外，你还必须考虑我们讨论过的因素，比如说去哪家健身房训练、什么样的训练伙伴能帮助你成功，还有哪些因素可以帮助你更好地进行训练，又有哪些因素会让你的训练受阻。6．肌肉中的精神。训练成功的关键是让精神进入你的肌肉，而不是仅仅想着重量。当你将心思放在重量上，而忽视了你的肌肉时，你就不能真正感觉到肌肉在做什么——你失去了对肌肉的控制，你只是在使用蛮力，而不是在全神贯注地收缩和拉伸肌肉。所以你最终不能达到动作幅度的极限，不能使用平稳、专注而有控制的方式收缩和伸展肌肉。比如，当我在进行杠铃弯举时，我想像我的肱二头肌是座高山，不仅大，而且巨大无比。因为我想着肌肉，所以我能感觉肌肉中所有的变化。我知道在一个动作的底部位置，肌肉是否完全拉伸，以及在顶点时肌肉是否完全收缩。</p>
</li>
<li>
<p>与其总是望着远在地平线上你的雄心壮志，还不如将远大的目标分解成众多更小和更容易达到的小目标。</p>
</li>
<li>
<p>当你执行一项艰难的任务时，你随时都要面对短期失败的可能性，面对阻挡你前进的道路从而必须被克服的障碍。不要因失败而垂头丧气，因为失败可以成为很好的训练工具。失败能告诉你，你的极限在哪里，它告诉你哪条路是行得通的，哪条路是行不通的；它告诉你，你已经走到楼梯的第几级台阶上了，并且激励你努力爬得更高。挫伤你的意志的不会是失败，而只会是对失败的恐惧。这种恐惧感阻止你真正艰苦地进行训练，阻止你释放你的所有能量，阻止你燃起昂扬的斗志。殊不知，积极地寻求失败有时候会让你获益匪浅！</p>
</li>
<li>
<p>“只有当你知道怎样太过的时候，你才知道怎样合适。”这是我常常听到的谚语。</p>
</li>
<li>
<p>每个人都有训练感觉很好、又容易产生反应的身体部位，还有另外一些必须强迫训练，反应迟钝的身体部位。</p>
</li>
<li>
<p>当进展不顺利的时候，最先崩溃的总是精神而非身体。</p>
</li>
<li>
<p>在短短的休息时间里弗朗哥的肌肉没有变得更壮，肌腱也没有变得更强；改变的是他的精神、内驱力、动力以及他求胜的欲望。精神在驱动身体上的强大能量是不能忽视的。</p>
</li>
<li>
<p>刻苦的训练可以让身体释放出内啡肽（自然产生的类似吗啡的物质），它让人心情愉悦。</p>
</li>
<li>
<p>我所见过的所有健身者，无不在健身运动中提高了自尊、自信，享受到人生的乐趣。</p>
</li>
<li>
<p>真正的对手不是别人，而是自己。</p>
</li>
<li>
<p>人的自我价值需要尽可能地建立在真实之上。</p>
</li>
<li>
<p>你不只应该“相信”自己，还要能让自己朝向真实的成就前进。对于那些年轻人来说——当然对所有人都一样——训练精神、提升能力、练就真实强壮的体魄是最能实际地提升自尊心的。当你拥有一副非常棒的身体并为之骄傲时，那并不算“自负”；所谓的“自负”是指你想要人们称赞你并不真正拥有的优点。</p>
</li>
<li>
<p>健身会改变你。它使你自我感觉良好，它改变人们对你的态度。健身是对任何人敞开的大路——不论你是男人、女人还是孩子，都可以通过适当的训练增强体质，同时提高自信。</p>
</li>
<li>
<p>对我来说健身是接触现实的最好方法。当你在训练时，手中冰冷的铁家伙就是现实——你能举起它，抑或不能举起。如果训练得当，你取得进步，收到一些实效；训练不得当，你的进步微乎其微，甚至几乎没有。这是昭然的事实，你无法掩盖，必须直面。</p>
</li>
<li>
<p>人类的身体不是设计来长久地坐着的，它是用来捕杀剑齿虎或者一天步行40英里（64.37千米）的。如果我们不能在身体上找到一个宣泄的出口，紧张和不安会在我们体内郁积。我们的身体会对微小的挫折（比如在驾驶中被人超车）作出像在生死危局中一样的反应——“战或逃”的机制出了问题——肾上腺素在我们的体内泛滥，我们的血压飞升。一般性的运动尤其是健身给了我们一个宣泄的出口，让我们释放压力，满足身体对激烈活动的需求。</p>
</li>
<li>
<p>如果这对于我们大多数人是正确的，它对于那些极端处境下的人——比如在监狱中服刑的犯人、特殊奥林匹克运动会的运动员们以及贫民窟中不得不走在满是枪支和毒品的大街上的孩子们——就尤为正确。</p>
</li>
<li>
<p>许多这样的人一生都在抱怨别人，认为自己的错误是他人之过，为不断给自己带来麻烦的行为找各种借口，就是没能挺起胸膛来为自己的行为负责。</p>
</li>
<li>
<p>我们都有点像这个少年，不同的是因为我们拥有足够的能力，所以我们对健身的需求不总是那么明显。但是，需求就在那儿。我们每个人都有局限，不得不面对形形色色的挫折和沮丧；我们大多数人都明白，只有极少数人能真正不辜负我们被赋予的身体潜能。但是，灵与肉是彼此联结的，这是一个硬币的两面，随着身体健康不断提升，我们的精神也会变得更加健康，更加有力——而健身运动则是达到这种必要平衡的理想手段。</p>
</li>
</ol>
<h2 id="第三部分-身体部位练习">第三部分 身体部位练习</h2>
<ol>
<li>
<p>不谦虚地说，或许我在健美的各项赛事中的确都取得了一些成绩。而正是这些成绩使我明白，并能够勇于首先承认，没有人能够拥有完美的体格。当然，在谈及身体某些部位，像胸部和肱二头肌时，我还是可以说，我敢于和任何一个人一决高下。但是，没有一个健身者会自信满满地说，他能够挑战弗朗哥·哥伦布的背阔肌或者是汤姆·普拉茨的大腿。这正如他将需要一副异常强壮的肱三头肌，以确保能战胜尤苏普·维尔科什那极其壮硕的臂部，或者需要一组达到令人惊叹水准的腹部肌肉群，去和丹尼斯·泰那里奥那搓板式的腹部相比较一样。</p>
</li>
<li>
<p>严格地遵循正确的练习技巧来锻炼，可以使肌肉的生长速度大大加快。</p>
</li>
</ol>
<h3 id="肩部">肩部</h3>
<ol>
<li>
<p>无论从正面还是从背面来看，三角肌侧部的良好的锻炼效果都会使你看起来更健壮。</p>
</li>
<li>
<p>世界上也从来没有任何一个健身者，从未调整过他的训练方法以求克服弱点，就能塑造出一个比例协调并且平衡的体格。</p>
</li>
<li>
<p>我始终相信，无论你取得了多少进步，大量的强力训练对于肩部的锻炼来说都是必要的。</p>
</li>
<li>
<p>如果你发现虽然付出了努力，但你的三角肌发展仍然有弱点，那么高强度的训练就是唯一的解决方案了；你需要仔细地研究你的弱点，并决定该如何重组你的训练计划来解决问题。</p>
</li>
<li>
<p>为了使平举训练达到最佳效果，你需要记住两点：1.保证你的手掌在整个动作过程中一直冲下，或者更好的是，将手伸得再远一点，以让小拇指比大拇指稍微高一点点（就像手持罐子倒水一样）。这样有助于孤立三角肌，并让它们在动作过程中充分收缩。2.尽可能严格地完成动作，不使用任何借力来举起重量，并完全有控制地放下它们。动作越是严格，获得的效果就越强烈。</p>
</li>
</ol>
<h3 id="胸部">胸部</h3>
<ol>
<li>
<p>完美的胸部包括：1.较大的胸腔；2.厚实的胸大肌；3.胸大肌的内侧、外侧、上部和下部都足够发达；4.紧缩胸大肌时，有明显可见的条纹——从胸腔的中间开始，横过并从上到下穿过胸部；5.胸大肌的上部和下部间清晰的分离度；6.一个方方正正而非松松垮垮的体形，需要足够发达的胸大肌上部；7.胸大肌足够发达，在你将手臂举过头顶的时候，它们不会消失不见。</p>
</li>
<li>
<p>你不是一个只知道练块头的莽夫，而是一个关注细节的雕刻师。</p>
</li>
<li>
<p>每一个人的体质都具有其特殊性，所以练习的实际效果也会不同。</p>
</li>
<li>
<p>我特别喜欢给胸部安排一些“重磅日”。我每周都会有一次是使用非常重的重量来训练胸部的：100磅（45.36千克）的飞鸟，最多5～6次反复，用365磅（165.56千克）的重量做上斜推举，进行6～8次反复，以及超重的仰卧推举（450磅，即204.12千克），这些能够让胸大肌的块头和厚度发展到最大程度。</p>
</li>
<li>
<p>为了能使胸部肌肉的力量、块头和强度都能达到最大的程度，我推荐以下训练计划：1．从仰卧推举开始，第一组20次反复，第二组10次反复，然后增加重量，这样你接下来就只能进行5次、3次和1次反复。2．继续完成尽量多的组（至少5组），此时你使用的重量应该只允许你每组进行1～2次反复。3．最后一组动作，使用较轻的重量，这样你可以重新做很多次反复。4．继续训练，用同样的方式做上斜推举和哑铃飞鸟。</p>
</li>
</ol>
<h3 id="背部">背部</h3>
<ol>
<li>
<p>我的背部就是我击败对手的武器</p>
</li>
<li>
<p>有三个方面决定了背部的完美程度：（1）上背部的厚实度和肌肉发达度；（2）背阔肌的弧线和宽度；（3）下背部和背阔肌下部的清晰度和发达度。</p>
</li>
</ol>
<h3 id="臂部">臂部</h3>
<ol>
<li>如果你的肱三头肌的确存在问题，那么我建议你遵循优先训练原则，即趁你在锻炼的开始还精力充沛，首先训练它们。</li>
</ol>
<h2 id="第四部分-健康-营养-饮食">第四部分 健康 营养 饮食</h2>
<h3 id="第一章-营养和饮食">第一章 营养和饮食</h3>
<ol>
<li>
<p>训练会刺激肌肉生长，然而要让训练充分发挥效果，你的身体还需要充足的能量和足够的原料，而这些能量和原料就是营养所扮演的角色。</p>
</li>
<li>
<p>想要通过健身练出强壮、健康、美观的身材，营养是绝对关键的。</p>
</li>
<li>
<p>为了打造想要的体形，你提供给身体什么营养和多少营养是一个关键因素。</p>
</li>
<li>
<p>更有效地控制饮食，这让他们能增加肌肉、减少脂肪，并能以最大的能量坚持训练。</p>
</li>
<li>
<p>没有艰苦投入的大量训练，仅凭更好的营养是不可能成就冠军的。但是在艰苦的训练和良好的精神状态之外，丰富的营养知识和优秀的营养补充是健身的第三个因素。</p>
</li>
<li>
<p>我认为想要成为最棒的，就意味着将身体推到它的极限。</p>
</li>
<li>
<p>健身同时要求最多的肌肉和最少的脂肪，这是一个极难达到的状态。</p>
</li>
<li>
<p>[插图]</p>
</li>
<li>
<p>鸡蛋是非常好的优质蛋白质的来源，它们可以作为评价其他食物的蛋白质质量的参考标准，如果在蛋白质质量上给鸡蛋“完美的”100分，那么就有了下面的评分：[插图]</p>
</li>
<li>
<p>食用不完全蛋白质就像18个人打棒球，其中5个是投手，3个是捕手，这样虽然有18个人，但是两支队伍的组成都是不完整的。</p>
</li>
<li>
<p>这种召集一个完整的氨基酸“队伍”的需要，意味着只要在你的食谱里增加少量正确的食物，就会有很显著的改变。继续刚才打棒球的比喻，假如你有72名棒球运动员，但是其中没有一个人可以做一垒手，然后假设你只招募了9名额外的球员——全都是一垒手——原来72名运动员只能原地站着什么都做不了，现在一下子你就拥有了9支可以投入战斗的球队。同样的道理，当你有很多不成套的氨基酸，那么只是把缺少的那一点氨基酸加进去，就可以效果大增，让身体生成更多的肌肉。</p>
</li>
<li>
<p>这种将不完全蛋白质结合在一起的方法是很有用的，因为这样通常只需要食用脂肪含量低的几种食物，它们所含的热量比许多含完全蛋白质的食物要少。当你努力于塑造出最大量的肌肉却想让身体脂肪量尽可能少时，这样做就有很大的优势了。（你也可以在完全不摄入脂肪的情况下获得蛋白质，就是使用蛋白质补剂，这个我们稍后详谈。）</p>
</li>
<li>
<p>在弗朗西斯·摩尔·拉佩（Frances Moore Lappé）的《一座小行星的新饮食方式》中，就推荐了以下饮食搭配的方法：谷物配合种子面包，添加除去了油脂的种子粉面包，撒上芝麻或葵花籽大米加上芝麻谷物配合乳制品麦片加牛奶（现在你就知道为什么这一直被推荐为早餐搭配了！）面条加牛奶或奶酪（啊哈……撒上帕尔玛干酪的意大利面）面包加牛奶或奶酪（这是许多欧洲地区的传统午餐）谷物配合豆类大米和大豆（这在全世界都是主食，尤其是在饮食上缺乏动物蛋白质的国家）小麦面包和烤豆子混合了玉米和大豆或者小麦和大豆的面包面包和豆汤</p>
</li>
<li>
<p>考虑到可供选择的营养补剂种类繁多，我列出以下一些因素来帮你选择：第一，读一读标签。有些蛋白质补剂里含有大量的各种碳水化合物，虽然碳水化合物可以促进食物蛋白质向肌肉蛋白质的转变，但是过量还是会增加额外的热量，使燃烧脂肪更困难。因此，如果你要确保精确地摄取宏量营养素，那么计算你购买的蛋白质补剂里含有多少碳水化合物就很重要了。第二，对纯蛋白质补剂来说，如果摄入时不配合饮食或者添加碳水化合物，那么就不会被有效地代谢。研究表明，要想让摄入的蛋白质更多地被用在蛋白质合成上而不是产生能量上，就需要补充额外的卡路里，尤其是来自碳水化合物的卡路里。如果你的饮食中碳水化合物含量很低，而且希望自己所摄入的蛋白质有很大部分被用来提供能量，那就无所谓了。但如果你期望摄入的蛋白质可以发挥最大价值，就要确保在使用蛋白质补剂的同时也加入一些碳水化合物（如果不是那些已添加碳水化合物的蛋白质补剂），或者在饮食中配合食用蛋白质补剂。第三，在蛋白质补剂中主要是三种典型的蛋白质，即乳蛋白质（乳清，凝聚的乳蛋白质和酪蛋白质）、卵蛋白质和大豆蛋白质。这三种都是优质蛋白质，虽然没有什么科学依据表明哪一种蛋白质比其他两种更有利于肌肉生长，但是从牛奶和蛋类中制作出的蛋白质补剂在健身界中拥有最广泛的受众。然而大豆蛋白质也有其他两种蛋白质没有的优点。最近在医药领域中，大豆蛋白质引起了关注，因为研究表明大豆蛋白质可以在一些人体中降低血清胆固醇。所以对于胆固醇指标高的人，大豆蛋白质可能是最好的选择。最后，要记住蛋白质补剂不是食用蛋白质的唯一来源。均衡全面的饮食既是健康饮食，也是健身饮食的重要方面。</p>
</li>
<li>
<p>碳水化合物的充足供应对于一个严谨的健身者来说是关键的，理由如下：1.碳水化合物是主要的能量来源。肌肉中储存的碳水化合物，也就是糖原，能支持你进行大重量、高强度的训练。2.当身体在每个单纯的肌细胞中都储存了糖原和水分时，肌肉就会变大。3.碳水化合物在体内有“节约蛋白质”的作用，保证机体不会燃烧掉过多蛋白质来获取能量。关于这个重要方面，以后会有更多说明。4.碳水化合物是保证脑部功能正常运行的主要能量来源，如果缺少这个能源，会对情绪、性格、心智能力产生严重影响。</p>
</li>
<li>
<p>在训练后身体里有足够的碳水化合物供消耗是很重要的，否则身体就会调用氨基酸来替代供能。</p>
</li>
<li>
<p>如果你能在训练结束的20分钟内摄入必需的碳水化合物，你就能得到最好的训练结果。</p>
</li>
<li>
<p>如果你在重量训练后又接着做了一段时间的心肺训练，这点就尤为重要。也就是说，如果你在重量训练后太快投入跑步机、踏步机或者单车训练，你的身体就会处于碳水化合物严重缺失状态，你会发现自己没有精力，你可以确定，此时你的身体肯定会不必要地代谢掉更多的氨基酸，以提供能量。</p>
</li>
<li>
<p>脂肪是所有营养物里卡路里密度最高的。1磅（453.59克）脂肪含有大约4000卡路里，与1磅（453.59克）蛋白质或碳水化合物中含有的1800卡路里形成鲜明对比。</p>
</li>
<li>
<p>当你训练时，假设你没有超出自己的供氧能力（没有喘不过气），身体会以1∶1的比例燃烧脂肪和碳水化合物来供能。但是随着你训练时间的延长，脂肪的耗用比例也随之增多。在大约训练了3个小时后，体内所消耗的能量80％都是从脂肪中获取的。</p>
</li>
<li>
<p>在生物化学上，脂肪分子的结构各不相同，可以分为饱和脂肪酸、不饱和脂肪酸，还有多不饱和脂肪酸。这里所牵涉的就是连接在分子上的氢原子数量。想象一个线团，饱和脂肪酸就是缠绕得极其混乱的，不饱和脂肪酸就是只缠绕了一点的，而多不饱和脂肪酸就像整齐的线圈，根本不成团。越饱和的（缠绕得越乱的）脂肪，越有可能停留在体内、并阻塞动脉，增加罹患心脏病的风险。此外，如果饮食中富含饱和脂肪酸，就容易引起血液中胆固醇含量的增高。因此，营养学专家建议，应保证饮食中摄入的2/3的脂肪都是多不饱和脂肪酸。[插图]</p>
</li>
<li>
<p>身体缺水时，由于肾脏不能很好地过滤有害物质，身体贮存的水分不再洁净。随后，肝脏会帮助处理这些废料，这样就干扰了肝脏的一项主要功能——分解体内脂肪。所以，如果体内的水分不够，你的身体会趋向于水肿、浮肿和肥胖，这对于肌肉清晰度来说是灾难性的。缺水还可能导致钠的问题，当机体缺水的时候，钠不能被充分代谢出体外，导致进一步的水滞留，而且你在饮食中额外摄入的钠会加剧这个问题。</p>
</li>
<li>
<p>每一个进行强度训练的人，每天至少应该喝8杯水（每杯12盎司，共计约2721.55克）。有些健身者甚至摄入更多的水，而且溶液形式的水还不算在内：你需要的是纯水，不是果汁、软饮料、咖啡、茶或者其他东西。</p>
</li>
<li>
<p>根据莱纳斯·鲍林（Linus Pauling）博士的理论，你摄入的补剂是天然的还是合成的（实验室制成）都没有关系，因为你的身体辨认不出其中的差异。这个观点后来也得到大多数营养学家的认可。</p>
</li>
<li>
<p>任何食物中所含的能量都是用卡路里来衡量的。卡路里是热量单位，之所以用这种单位，因为细胞中因肌肉收缩而发生的能量生成是一种形式的氧化过程——当然，是缓慢的氧化，我们都知道的另一种形式的快速氧化就是火。卡路里，是衡量肌肉细胞中能量“缓慢燃烧”产生的热量的。</p>
</li>
<li>
<p>每种营养物中的卡路里含量是不同的，比如：·1克蛋白质或者1克碳水化合物=4卡路里·1克脂肪=9卡路里这些数据就清楚地说明了，为什么想减肥的人一直尝试将饮食中的脂肪含量最小化，以及为什么背包客徒步翻越山峰时，一定会携带脂肪含量十分丰富的食物。单位脂肪中含有的热量要比蛋白质和碳水化合物的2倍还多（同理，增肥的效果也是2倍多）。</p>
</li>
<li>
<p>有一点需要注意，当提到脂肪和卡路里时，不管是哪一种脂肪，只要质量相等就都含有同样多的食物能量。也就是说，不管你指的是橄榄油、动物脂肪、黄油、猪油，还是其他形式的脂肪或油，它们都含有一样多的能量——每克9卡路里。</p>
</li>
<li>
<p>你的身体有两种基本方式代谢（氧化）卡路里：基础代谢（用来维持基本生理功能所消耗的能量）和体力活动。有意思的是，肌肉组织决定人体对卡路里的需求。这点很重要，因为：肌肉含量越多，你在平时消耗的卡路里就越多。 肌肉做越多的工作，其消耗的卡路里越多。实际上，你的静息代谢率（RMR）根据身体无脂的部分的体重来计算，基本上也就是根据肌肉的重量，不包括脂肪的重量。所以你身体含脂量越少，你的静息代谢率越高。给希望得到专业信息的健身者一个公式，用来计算身体静息代谢率：RMR=无脂体重（磅）÷2.205×30.4根据这个计算，一个无脂体重为150磅的人静息代谢率大约为2100卡路里，一个250磅的人一天要燃烧3500卡路里（额外的运动不算在内）。还有其他一些因素影响代谢率——简单说有年龄、性别、体型、甲状腺功能——但是有一点非常重要，就是你的体形越小，你要保持体重需要吃的就越少；你的体形越大，你要保持体重就需要吃得越多。在下一章讲到饮食与体重控制时，我们会在这方面介绍更多内容。</p>
</li>
<li>
<p>每个运动员都会根据你参与的运动类型告诉你，你会燃烧掉多少卡路里。你的训练越艰苦，体力活动就越多，然后就会代谢掉更多的卡路里。无论你是在移动自己的身体（跑步）还是举杠铃，你训练得越多越辛苦，消耗的热量就越多。下面是一些例子，告诉你每项运动消耗的大概热量：[插图]顺便提一下，要注意走路、慢跑和跑步之间的关系。当你行走时，大约每英里（1.61千米）燃烧100卡路里的热量（还要注意，这取决于你的自身体重和肌肉重量）。你选择跑还是走其实关系并不大，经过相等的距离你代谢掉的热量也相等，因为你的工作量是相等的。当然不同的地方在于，你跑着的时候消耗能量的速度比走着要快。</p>
</li>
<li>
<p>健身的热量消耗主要取决于训练的强度。如果你举起很大的重量，但是反复次数相对少，然后每组之间的休息时间又长，消耗的热量就会相对少。如果你持续地训练，一组接着一组，一个练习又一个练习，休息时间很少，那么你在一个半小时到两个小时的训练中就会燃烧掉很多热量。如果你采用分化训练，一天训练两次，消耗的热量会更多，这就是为什么我青睐这样的训练方式来塑造身材、准备比赛。至于这样的训练方式究竟消耗了多少卡路里，确切数字很难说清。但是一位专家曾经评估过，我和弗朗哥·哥伦布在两天的训练中各自共消耗了将近2000卡路里——也就是说每个小时消耗500卡路里，相当于那段时间我们一直在以不错的节奏在跑步。</p>
</li>
<li>
<p>劳伦斯·戈尔丁博士曾经列出一部分药物和激素，属于“假”能量的范畴：[插图]显然，在训练前喝几杯咖啡没什么不可以，但是一把咖啡因药片会让你变得非常激奋，并且可能让你在训练中受伤。阿司匹林可以缓解疼痛，但是也会干扰中枢神经对肌肉的刺激。和其他大多数人一样，那些认为酒精、安非他明、肾上腺素、大麻或者可卡因可以帮助他们塑造成出众身材的人，更不可能成功，他们生活在幻想的世界里。想发展最优的体形，需要让自己处于最优的健康状态，为此，“对药物说不”是绝对必要的。</p>
</li>
<li>
<p>健身的终极目标就是将肌肉量最大化并保持体内脂肪含量最小化；既然蛋白质像其他种类的营养一样，含有热量，所以如果吃太多蛋白质就意味着你摄入的卡路里也更多，如果不能被机体全部消化吸收，就不能保持苗条的身材。所以在设计一个饮食计划时，应该考虑到这点。</p>
</li>
<li>
<p>为了健康着想，我还是推荐每一餐脂肪含量小于30％，但是一味追求低脂饮食，把脂肪含量控制在20％以下对健康也没有好处（还会带来其他健康问题）。</p>
</li>
<li>
<p>根据麦戈文营养和人体需求专责委员会的研究，目前推荐的平衡饮食大概比例是：蛋白质，12％；碳水化合物，58％；脂肪，30％。</p>
</li>
<li>
<p>放弃食物中的任何一个类别都会让你承受维生素和矿物质缺乏的风险。如果不合比例地大量吃水果，像曾经风靡一时的饮食方法那样，就会很难获得足够的蛋白质和足够多种类的维生素和矿物质。对想要达到肌肉重量最大化的健身者来说，全素食或者特别多碳水化合物的饮食，可能不能提供足够的蛋白质。同样，如果饮食中蛋白质的比例过大，会对肾脏和肝脏造成不健康的负担，导致身体内钙质的流失，还会使你变胖。</p>
</li>
<li>
<p>碳水化合物的缺乏是造成酮症的原因。你的身体需要充足的碳水化合物来正常代谢体内脂肪。就像那句话说的：“碳水化合物是脂肪的熔炉。”当身体中没有足够的碳水化合物来代谢脂肪（通常都是因为过度苛刻的减肥饮食方式），身体就会采取急救措施。酮症的主要症状是出现酮血症，即血液中出现酮体——脂肪不完全燃烧的产物。这些酮体可以用来代替糖原生成能量，而且它们还可以用来为大脑和神经系统供能（本应该全部依靠糖原来供能）。</p>
</li>
<li>
<p>一定要牢记：任何一种营养的严重缺乏对你的健康都是有害的，不利于训练强度的增加和肌肉质量的最大化。</p>
</li>
<li>
<p>在训练中，肌肉需要足够的血液供应，你体验到的泵感是血液隆起肌肉的结果。但是如果消化系统也需要大量的血液来消化一顿大餐，循环中的血液就远远不足了，肌肉的供血就会出现问题。如果你在训练前吃得过饱，就在身体内制造了一个争抢血液的矛盾，一时间很多地方都需要额外的供血。许多家长告诉孩子不要在一顿大餐后去游泳，他们是对的，肌肉没有足量供血的情况下去为游泳，很容易出现问题，比如严重的痉挛。</p>
</li>
<li>
<p>训练时胃里装满了未消化的食物会是非常不舒服的体验。你会觉得腹胀，迟钝缓慢，做一组强度训练就让你有想呕吐的感觉。</p>
</li>
<li>
<p>身体对不同食物的代谢速度不同。胃需要2～6个小时排空里面的东西。富含碳水化合物的食物先被消耗，随后消化的是含蛋白质的食物，最后排空脂肪食物。</p>
</li>
<li>
<p>当你早晨醒来，8～12个小时没有吃任何东西了，身体就开始缺少碳水化合物了。因为碳水化合物可以产生肌肉紧张收缩所需的糖原，所以在早晨去健身房训练前吃一顿富含碳水化合物的早餐是很有必要的。在训练前，你可以吃一顿含有水果、果汁或者烤面包的清淡早餐，这顿早餐会为你提供能量并且不会拖你的后腿。然而，如果早餐中包括了鸡蛋、肉、或者奶酪——高脂肪、高蛋白质——就需要更长的消化时间，所以在你训练前最好不要吃这类食物。</p>
</li>
<li>
<p>在训练结束后立即吃一顿大餐也是不明智的。当你训练时，你的身体承担着很大的压力，你需要等一段时间使身体系统恢复至正常的水平，让血液流出肌肉，让压力反应减弱。在训练后，蛋白质或者蛋白质/碳水化合物的补充饮料可以提供身体需要的营养素，来弥补训练造成的营养缺失，而且对于消化系统来说也是轻松的。在你训练后，洗个澡、换好衣服，然后离开健身房，你的身体系统恢复到更平稳的状态，这时你可以坐下来享受一顿营养均衡的“真正饮食”。</p>
</li>
<li>
<p>有一个传说，认为消化系统需要“休息”，也就是说你不应该太频繁地吃东西，因为这超过了你有效消化食物的能力。实际上，恰恰相反。在人类进化过程的初期，人们经常在白天抓着什么吃什么——也就是说，他们吃东西是随机的，在任何时间，只要找到合适食物——植物和水果，或者碰巧有机会获得的动物蛋白质——就吃下。总之，让你的身体处理“少食多餐”，要比少数几次大餐要好得多。一日三餐是不错，但是一日四餐更好。很多健美运动员每2～3个小时就进食一次，意味着每天至少吃五餐（对于大多数人来说这有点极端）。在体重控制上，频繁饮食是很好的策略——假设你将每天的热量摄入控制在合理范围。因为你很少在极其饥饿的情况下进食，身体就没有理由将你摄入的很多食物储存为脂肪——我们将在下一章节更深入地探讨这一点。</p>
</li>
</ol>
<h3 id="第二章-体重控制增加肌肉减少脂肪">第二章 体重控制：增加肌肉，减少脂肪</h3>
<ol>
<li>
<p>体重控制：增加肌肉，减少脂肪</p>
</li>
<li>
<p>健身中控制饮食的目的是帮助你增长肌肉，减少脂肪。很多正在流行的饮食方法都是关于整体减重的，但是使用那种方法，大多数的结果都是在减少大量脂肪的同时也减少了肌肉。甚至有一些健身者经不住诱惑，让自己处于半饥饿状态进行训练，希望以此获得最发达的肌肉。大多数成功的健身者为了增长肌肉都学习了这个章节介绍的策略，将体内脂肪控制在最少，并能在限制饮食热量的同时保持能量供应。</p>
</li>
<li>
<p>对于健身者来说，重要的不是体重而是关于身体中各种成分的量和比例：·无脂部分（肌肉、骨骼、结缔组织）·体内脂肪·水</p>
</li>
<li>
<p>在我看来，健身者都需要意识到增长肌肉要比看上去体形魁梧重要，你能越快发现这点你就会变得越好。单纯通过脂肪增长让自己体形变魁梧，只能在以后让你有很多额外的体重要减掉，这还会助长很不好的习惯，最终还要你去改正。</p>
</li>
<li>
<p>身体好像不大喜欢同时做两件相反的事，即：（1）增长肌肉，（2）减少脂肪。想同时达到这两个目标非常难。</p>
</li>
<li>
<p>无论你的身体成分正好是什么样的，都是以下这些因素影响的结果：基因。你的体型是什么样的？你是天生骨感的外胚型，或者肌肉结实的中胚型，还是重量级的内胚型呢？代谢。你能将所吃的东西全部燃烧掉吗，还是恰恰相反？这是另一个有关基因的问题。一些人不管做什么都似乎不会变胖，而另一些人却抱怨他们只是看着食物都会长胖。热量消耗。你是个大胃王吗？每天你要摄入多少热量？如果你的摄入量超过你的需求量——无论是蛋白质、碳水化合物还是脂肪——你的身体都会将这些剩余部分转化为脂肪储存起来。饮食质量。你“吃得纯净”吗？你摄入的卡路里是以高质量食物的形式存在的吗？是瘦肉蛋白质，各种营养丰富的碳水化合物，包括蔬菜、水果、淀粉？你的饮食是相对低脂肪的吗？你的习惯饮食中有很多快餐食品、深度加工的包装食品或者富含脂肪和糖的高热量食品吗？运动方式。你正在进行是大强度的健身训练吗，是那种可以刺激身体将每天摄入的食物转化为肌肉组织的重量训练吗？如果正是如此，那么你的训练强度足够并且能长期坚持吗？运动量。你每天的训练可以帮你消耗多少热量？为了消耗掉多余的热量，你做了足够的有氧运动吗？这些有氧运动可以将身体储存的脂肪变成燃料为训练供能吗？</p>
</li>
<li>
<p>如果你一直坚持健身训练并保持肌肉强壮坚实，那么随着年龄增长的发胖倾向对你就不是什么问题。</p>
</li>
<li>
<p>无论你属于那种体型，只要你的能量消耗持续大于你的能量摄入，你就会减掉体内脂肪——当你燃烧掉的热量大于你吃下的热量时，也就是说：（A）你的RMR（静息状态代谢率）+活动中消耗的热量=消耗的总热量（B）每天吃下的食物=摄入的总热量如果A的数值持续大于B，你就会减少体内脂肪。当B的数值一直持续大于A，那么你就会增长脂肪。我有一个朋友是狂热的越野爱好者，他有一次告诉我：“一次我在内华达山里背包走了几天，背着60磅（27.22公斤）的重量穿过崎岖不平的地形，根本不可能携带足够的食物来维持我的体重。”这就是为什么运动商店里卖的各种各样的旅行食品都富含脂肪的原因（然而还有一些人认为这种食品是减肥食品）。在很多时候，越野爱好者需要在沿途有食物补给，来充实他们的饮食供应。所以由于能量的大量消耗，这种活动是很苛刻的。你的体力活动越多——走路、跑步、骑自行车、滑雪、游泳、做运动等等——你消耗的热量就越多，你就越容易控制自己的体重。这就是为什么大多数严谨的健身者，会做一些心肺训练或有氧训练，比如使用跑步机、训练单车、踏步机或其他什么运动器械，来增加自己整体的活动量。</p>
</li>
<li>
<p>除了吃多少，吃什么也是至关重要的。你越是约束热量的摄入，你就越有必要获取尽可能高的营养密度——让你的钱花得物有所值。一个健身者每天摄入3000卡路里的热量，如果他吃的是瘦肉蛋白质和各种蔬菜、水果和淀粉类碳水化合物，那么比起同样每天摄入3000卡路里热量但是吃加工快餐、高脂高糖食品的人，他可以承受更强的训练强度，并打造更多肌肉。那些徒有热量的食品完全没有什么营养价值。健身饮食也就是要“吃得纯净”。就像一句老话说的“吃什么，你就是什么”。所以，如果你吃下的是垃圾食品，你的身体将变成——好吧，你懂的。</p>
</li>
<li>
<p>当你吃东西时，也将食物的热量带进体内。所有的食物热量——不管是来自于蛋白质、碳水化合物还是脂肪——如果你的身体没有特意去利用，都会让你发胖。</p>
</li>
<li>
<p>你在一段耐力训练后摄入碳水化合物，身体会以最快的速度将其转化为替代的糖原，这些碳水化合物很少会被转化为脂肪储存于体内。</p>
</li>
<li>
<p>高强度的重量训练——让肌肉在大阻力下工作——造成了身体对替代蛋白质的大量需求。在训练后不久摄入的蛋白质，或者在高强度训练的同一天内摄入的蛋白质，会被身体利用来建造肌肉组织，这时蛋白质的利用率要远远高于没有做这种训练的日子。再说一遍，当身体处于这种高需求状态下，只要摄入的蛋白质不超量，就不会在多大程度上被转化为身体脂肪。</p>
</li>
<li>
<p>如果你的目标是让蛋白质直接贡献于肌肉组织，你需要做的是重量训练；如果你的目标是消耗多余的能量，你需要做更多的有氧运动。</p>
</li>
<li>
<p>每个人都应该去做些心肺功能训练，因为这是有益于心脏、肺脏和循环系统的，我会每周拿出4天或5天，每一天最少做30分钟的有氧运动。</p>
</li>
<li>
<p>健身效果不显著的、外胚型的、很苗条不容易增重的人，不大应该做这么多的有氧运动。因为有氧运动消耗能量，而这些人需要保存能量来获得最大程度的肌肉增长。那些想要减少体内脂肪，尤其是体型趋向于内胚型的、很难变苗条的人，就适合做比这更多的有氧运动——也就是说，每周4～5天、每一天45分钟。</p>
</li>
<li>
<p>尽量不要在一进健身房开始训练之前立即就做心肺训练。一些人认为首先做有氧运动是很好的热身，但是这种运动会让你的身体疲劳，使你很难达到你本可以达到的训练强度。</p>
</li>
<li>
<p>一次性给身体注入大量卡路里不是一个好主意，消化系统不能一下子应付这么多的食物。所以，如果要吃得更多，最好吃得更频繁。这就是为什么我推荐每天吃得超过3餐的原因，这样可以很好地将每天摄入的热量分散。我认为一天4餐比较好，并且可以用高蛋白质饮料——含有大量易吸收的氨基酸（我们之后再详细讨论这点）——来配合你的饮食。</p>
</li>
<li>
<p>训练得越辛苦，吃得也越多，这没有问题。但是一定要吃纯净的食品，吃有营养的饭菜。如果你缺乏能量而且身体里没有所需的营养物，肌肉终究还是不能增长的。</p>
</li>
<li>
<p>让身体吸收足够的蛋白质，提供充足的必需氨基酸，使肌肉最大化地生长，并且为训练和肌肉增长提供必要的热量。</p>
</li>
<li>
<p>最理想的蛋白质粉是从牛奶和鸡蛋中提取的氨基酸——现在最受欢迎的是乳清的提取物。</p>
</li>
<li>
<p>典型的牛奶-鸡蛋蛋白质粉含有的营养物如下所示：净重：1盎司（28.35克）（约1/8杯）热量：110卡路里蛋白质含量：26克碳水化合物含量：0克脂肪含量：0克每杯饮料都需要充足的蛋白质粉来制作，一天3杯的话，建议在早餐与中餐之间、中餐与晚餐之间以及你睡前一小时左右时饮用。但是，由于蛋白质需要很长时间去消化，所以训练时，至少提前1.5小时饮用蛋白质饮料。</p>
</li>
<li>
<p>节食，看上去好像是减少脂肪的最快方法。但是，这样瘦下去的每一磅体重中，60％都是肌肉，只有40％是脂肪。这个结果对于想获得结实肌肉的人来说是不可接受的，因为实际上减掉的肌肉比脂肪还多。</p>
</li>
<li>
<p>在健身的意义上，减肥意味着保持身体中的蛋白质水平，同时削减其他各种形式的能量摄入。你可以通过进行更多的有氧运动来造成卡路里短缺，这样就消耗了更多的能量。</p>
</li>
<li>
<p>很难说减肥时每天应该摄入多少卡路里——因为还有很多影响因素，比如体形、体重、练习程度和身体代谢率——但可以确定的是，你要让身体处于卡路里短缺的状态，也就是消耗能量比从饮食中摄入的能量更多。这通常是一件不断试错的事情。例如，如果你记下吃的食物，发现每天摄入的总热量达到3000卡路里，并且在这个饮食水平下你的体重是稳定的，你可以通过将每天摄入的热量减少到2500或2000卡路里，来达到卡路里短缺的状态并消耗脂肪。你也可以加大运动量来燃烧更多的能量。但是如果你的代谢率较低，你需要在此基础上进一步将每天摄入的热量减少到1600或1800卡路里。我说过，这在很大程度上主要是个人经验和试验的事情。</p>
</li>
<li>
<p>想要减肥，你可以选择减少热量摄入，可以选择增加练习，或者二者同时进行。</p>
</li>
<li>
<p>如果你想尝试在最大程度上减少脂肪，我可以告诉你饮食控制的上限——当然是在不会减少肌肉组织的前提下：1.在你训练的日子里，坚持摄入充足的蛋白质（最少每磅体重1克蛋白质）——在你休息的日子蛋白质的摄入量要少一些。2.吃低脂的食物——而且其热量要占每日总摄入热量的20％。（但是也有研究表明，在饮食不变的情况下，每天增加6克鱼油或者6粒含一克鱼油的胶囊，可以让身体脂肪变少并增长更多肌肉。）3.在不会患上酮症（见“酮症”）的前提下，尽可能减少碳水化合物的摄入。4.按之前讲过的，尝试45分钟～1小时的有氧运动，每周做4或5次。如果你坚持摄入足够的蛋白质，而且不会处于酮症的状态（于是也不会调用过多的氨基酸来供能），你的脂肪摄入量也相对低，那么你就在进行对你来说最苛刻的饮食控制，同时不会缺乏营养或者能量。一定要记住，为了保证不患上酮症，你需要吃一定量的碳水化合物，而具体的摄入量是因人而异的，取决于你做了多少运动（重量训练加上有氧运动）。所以，如果你正在进行苛刻的饮食控制，你需要定期检查，确定你是否处于酮症状态。顺便提一下，要记得碳水化合物不会对你的健康产生坏的影响，也不会特别地让你变胖。只要它是营养物，你就不会仅仅吸收了空白的卡路里。所以当你控制饮食时，减少碳水化合物摄入的目的是要总体上将热量的摄入（蛋白质除外）最小化，而不是否定碳水化合物。</p>
</li>
<li>
<p>酮症的产生是由于摄入的碳水化合物过少。虽然这种情况是应该避免的（具体见“酮症”），但是很多健身者却依然喜欢低碳水化合物的饮食。因为你吃了大量的蛋白质和脂肪，处于酮症状态会减轻你对饥饿的感觉。碳水化合物的丧失还会使你脱水，你会弄不清自己的体重减轻是由于脱水还是真的减掉了脂肪。当你限制碳水化合物的摄入量时，你可以经常检查自己体内的酮水平。几乎在任何一家药店，都可以买到尿中酮体检查剂。当酮体检查棒浸上尿液时，如果你患了酮症，它的颜色会从红色变为紫色。检查棒的颜色越深代表你体内的酮水平越高。如果检验棒上没有显示出酮症迹象，你就不处于碳水化合物短缺的状态。一旦你发现检验棒上的颜色有变化的迹象，你就知道自己的身体缺乏所需的糖原了，这时就要增加碳水化合物的摄入了。底线是：只要检验棒不变颜色，你就可以尽量减少饮食中的碳水化合物，一旦检验棒颜色发生变化，就一定要增加饮食中的碳水化合物。</p>
</li>
<li>
<p>蛋白质的推荐饮食来源很多食物中都含有低热量的蛋白质，下面列举一下大多数健身者所青睐的：鱼肉（尤其是保存于水中的罐装金枪鱼，不推荐保存于油中的）。很少有鱼肉是富含脂肪的。贝类脂肪含量是很低，但是胆固醇含量很高。（顺便提一下，我们在上一章已经讲过了，像鲑鱼和鳟鱼这种脂肪含量高的鱼肉，由于其鱼油的价值，所以偶尔食用还是有益的。）家禽肉（鸡肉、火鸡肉）。去掉皮，因为皮中的脂肪含量很高；有些家禽，比如鸭子，脂肪含量是非常高的。鸡蛋。蛋白含有的热量相对低，但是整个鸡蛋含有更多的蛋白质和更多的营养。脱脂牛奶（而不是低脂牛奶）。脱脂牛奶含有50％的蛋白质和50％的碳水化合物，而低脂牛奶中约有2％为脂肪。牛奶-鸡蛋蛋白质粉或者乳清蛋白质粉下面蛋白质食物脂肪含量稍高，但也是富有营养的氨基酸来源：牛肉。严格选择瘦肉；常规的3盎司（85.05克）牛排的热量为330卡路里，其中蛋白质的含量为20克，脂肪含量27克；相比之下，如果精选非常瘦的牛肉，也是同样的重量，热量约为220卡路里，其中蛋白质的含量为24克，脂肪含量只有13克。猪肉。只选择瘦肉。不要食用其他的猪肉制品，比如香肠或者培根。羊肉。羊排比猪排的脂肪含量更高。奶酪。有些奶酪比其他种类的脂肪含量更高：如果你特别喜欢吃奶酪，一定要从商店的产品目录中选择低脂含量的奶酪。全脂牛奶（还有其他乳制品，比如黄油、奶油或者酸奶油）。</p>
</li>
<li>
<p>碳水化合物的推荐饮食来源蔬菜（尤其是绿叶蔬菜——西蓝花，芦笋，芽甘蓝，豌豆等等；如果可以，最好吃生的蔬菜或者稍微蒸过的蔬菜）。豆类（不要吃罐装的豆子，含糖量太大了）。豆子含有的不是完全蛋白质，所以你需要在吃豆子的同时吃些肉、米饭或者其他互补的食物。沙拉（谨慎使用那些沙拉酱）。水果（新鲜水果，不要吃水果罐头）。全麦面包或者黑麦面包。烤土豆。一个中等大的土豆只含有大约100卡路里的热量；不要加上黄油或者酸奶油。米饭（不是精加工的米或者速食米饭）。如果你想把摄入的热量降低，就需要把饮食做得清淡。不要使用黄油、酸奶油或油腻腻的调味品，比如番茄酱、蛋黄酱等。做饭尽量选择烤、烘或蒸的烹饪方式——不要油炸（这样会添加食物热量）或沸煮（会损耗营养）。做沙拉时放少量沙拉酱即可；一勺油含有100卡路里的热量，相当于一小块黄油。还要注意减少饮食中的盐分。</p>
</li>
<li>
<p>减肥饮食的规则总结1.正如推荐的那样，想要减肥不能急于求成——如果你每周减掉2磅（907.18克）以上的体重，那么你很可能在减掉脂肪的同时也减掉了肌肉。2.减少你的热量摄入，直到你开始发觉体重下降了。如果持续减重，就一直将饮食热量控制在这个水平。如果对饮食的一种控制方法有效，就不要进一步控制饮食了。3.饮食不要超过我推荐的最大摄入量——至少1磅（453.59克）体重1克蛋白质，低脂，尽量减少碳水化合物的摄入，但不要患上酮症。4.通过有氧运动来消耗额外的热量。如果你是个新手，慢慢开始并逐渐增加你的运动量，但是不要超过每周4或5天、每天45～60分钟的有氧运动，运动方式可以选择快走、慢跑、骑自行车等，在健身房中的器械上或者户外都可以。这样的运动量可以让你的减重目标更快、更好地实现。5.使用维生素和矿物质补剂，保证自己每天都摄入了足够的营养。6.尽可能吃新鲜的食物。这样你可以最大程度地摄入营养，并且最小程度地吸收热量。罐装食物、冷冻食品或者任何其他加工的食品营养含量都会减少，而且都添加了糖、盐以及其他化学添加剂。7.学会计算卡路里。否则，你总会认为自己没有吃下那么多东西。</p>
</li>
<li>
<p>有一些人认为旅行食品是减肥食品。你可能会惊讶地发现，不管是那些你非常热衷的“健康”早餐麦片，还是美味的“高纤维”麦麸松饼，或者是你一直信赖的“低热量”沙拉酱，含有的热量统统比你想到的高很多，至于被戏称为快餐工业“三大基础食品元素”的脂肪、糖、盐，更是塞满了这些所谓的美味“健康”食品中。</p>
</li>
</ol>
<h3 id="第三章-参赛饮食计划">第三章 参赛饮食计划</h3>
<ol>
<li>
<p>从未有一项比赛，比健美比赛更要求肌肉的形状、发达度和清晰度。健身可以让你更强壮、更健康，看起来更好，还能让你在各种运动中表现更出色，无论是棒球还是高尔夫，滑雪还是橄榄球，但如果要参加健美比赛，你就要对自己提出更高的要求。实际上，健美比赛是所有现存比赛中，要求最高、最困难、最需要训练有素的一个。</p>
</li>
<li>
<p>一定要记住，不要去追求看上去多么魁梧唬人，以求在不参赛时自我感觉良好，重要的是比赛期间你走上台时展现的样子。</p>
</li>
<li>
<p>你节制饮食的时间越长，减掉的体重就会越多，但是在此过程中你可能减掉的肌肉也越多。减掉很多脂肪的同时还保持肌肉坚实、体形完美不是不可能的——这很显然，因为一些健美运动员做到了，比如多里安·耶茨的健美事业很成功，但是也因非赛时会变得超重而著名——但是要困难得多。</p>
</li>
<li>
<p>吃高蛋白质食物（有时是非常高的蛋白质成分）来打造最大化的肌肉块头，以及尽可能减少脂肪和碳水化合物的摄入，还有做充足的有氧运动来燃烧掉任何过多的热量。但是在做这些的同时，一定要确定自己对每一种重要营养物的摄入量都是合理的，具体做法如下：1．订一个细化的、特定的饮食计划，记录下来，在饮食日志中仔细记下自己每天吃了什么、吃了多少。2．使用食物天平秤、量杯、勺子来精确计算自己每天吃下的任何东西的热量以及蛋白质、碳水化合物、脂肪的克数（非常仔细地阅读食品标签）。3．每两个或三个小时进餐一次。4．如有必要，事先准备好食物，出门时装在塑料容器里携带，你就可以做到每两个或三个小时进餐一次了。5．只要有必要，就带着所有必需的营养补剂，包括蛋白质、维生素、矿物质、必需脂肪酸，还有我们将提到的其他一些补剂。6．喝很多的水，每天至少4～5升。</p>
</li>
<li>
<p>我一直都在强调记下你个人的饮食计划，并在每天确切地记录下你每天吃了什么以及多少食物——这些记录工作非常重要。在一些研究中，监控一些人的饮食摄入，但是这些受试者并不确切地知道自己吃下了多少东西。在一天的最后，当这些受试者被要求估计自己摄入了多少热量时，他们的估计结果经常会差之千里。一些人认为自己摄入的热量很多，但实际上却没有那么多；另一些人则相反。</p>
</li>
<li>
<p>如果你没有成文的饮食计划，也没有记下自己吃下的食物及热量，你也会错误地估计自己的饮食。你对自己吃了多少的感觉可能会比实际高或少——如果你在为参赛而控制饮食，无论哪一种错误都是不应该的。你可能会问，称量所有要吃的食物，控制剂量，记下吃的每样东西并计算摄入多少热量，这样是不是很乏味而且耗费时间？毫无疑问，你说得对。但是为了让你的参赛饮食效率最大化、效果最显著，这些都是必需的。</p>
</li>
<li>
<p>有人曾经说健美不是什么高深问题，但是有时它真的不那么简单。</p>
</li>
<li>
<p>假设你平时摄入3200卡路里的热量，然后开始控制饮食，改为2000卡路里。当你的身体意识到热量在减少，它就会相应地慢下来。但是你不需要每天都把热量摄入减少到2000卡路里——你只需要做到把平均值保持在2000卡路里就可以了。你可以在一天或两三天内增加热量的摄入（大约到2600卡路里），然后再用几天把摄入热量降下来（比如1600卡路里），然后再回到每天2000卡路里的水平。除此之外，差不多每周你都可以选择一天让摄入的热量恢复到从前的水平（3200卡路里），来进一步刺激你的代谢率（并给你的艰苦训练以某种回报和奖励）。你可以坐下来，拿出纸笔，详细计算一下怎样去达到你期待的那个平均值，但是通过这样控制饮食，你可以确保自己的身体在尽可能高的代谢率水平下工作，从而消耗掉更多的热量，虽然你整体地减少了热量的摄入。</p>
</li>
<li>
<p>常规的称重是对饮食计划进行监督的基本方式。虽然经常控制不住，但是最好还是不要测量得过于频繁，不要超过一周一次或两次。身体减重并不是一个持续、有规律的过程，所以应该间隔足够长的一段时间再测量，这样才可以看到真实的进度。</p>
</li>
<li>
<p>想要看看自己离参赛身材还有多远距离的时候，镜子才是主要的衡量方法。</p>
</li>
<li>
<p>要学会合理地使用镜子，最好的方式是永远在同一面镜子前、在同样的光线下观察自己的变化，比如选择一家健身房内的同一个位置，一面固定的镜子。这样就排除了环境和光线情况的影响，你在镜子中看到的变化就可以更多地归于饮食的效果了。</p>
</li>
<li>
<p>控制饮食和训练一样，应该很理智地进行。一边控制饮食，一边检查自己的健身效果，并在你认为必要的情况下，作一些改变。因为你身体的新陈代谢每个季节、每年都会变化，还有每个人的情况也是与其他个体大不相同，所以要想设计一个好的饮食计划就不要过分拘泥于一些固定的数值。</p>
</li>
<li>
<p>极端地控制饮食却不减少肌肉组织是很难做到的，所以最好的策略是在参赛饮食计划前就控制好体重，以求之后每周以最多减掉2～2.5磅（0.91～1.13千克）的速度，让自己在12周内达到健美的体形。</p>
</li>
<li>
<p>记住，你训练得越艰苦，就要摄入越多的碳水化合物来保证不患酮症。而无论你的饮食控制是多么严格，如果没有刻苦的训练还是不能塑造出完美的体形。</p>
</li>
<li>
<p>过多的有氧运动也会刺激机体代谢掉身体中的非脂成分——肌肉——来提供更多的能量。身体确实可以征用自身的肌肉组织，尤其是白肌纤维，以给有氧运动供能。</p>
</li>
<li>
<p>在上一章中我们讨论了有氧运动的基础原则，但是在参赛饮食阶段进行心肺功能训练，你还要更加精确和小心，使其会帮到你而不是害了你。举个例子，我推荐的心肺功能训练如下：1．每天的运动量不要超过45～60分钟（不需要一次完成——分两个或更多阶段完成有氧运动最好），每周4或5次。同时要将你的饮食仔细规划好，从而不需要做再多的有氧运动。2．不要在重量训练前立即进行有氧运动，那样只能让你疲劳，并且让你的训练强度下降。3．不要在训练后立即进行有氧运动。你的身体在这时很虚弱，需要休息和恢复，至少一会儿的时间——所以在完全不同的另一个时段开始你的有氧运动是很不错的。实际上，我建议在健身房训练后摄入一些糖原填补身体空缺（含碳水化合物的食物、补剂），然后再开始做不管什么形式的有氧训练。</p>
</li>
<li>
<p>有些运动员也倾向于追求捷径，不愿去坚持长期有规律和严谨的训练生活。全社会的人都没有耐心去等待结果，运动员这么做也就不足为奇了。</p>
</li>
<li>
<p>我个人是坚决反对使用那些危险和违法药物的。各大体育赛事的联盟和组织都禁止使用这类药物，其中大多数的组织都开设检测环节来鉴别运动员们是否使用了药物。我衷心地感谢他们为之作出的努力。我真的希望各种体育杂志都可以有同样坚定的立场。有一些杂志公开声明反对使用药物，却又在之后发表文章介绍这些药物及其使用方法。我认为这种做法是可耻的。</p>
</li>
<li>
<p>在我个人成长的经历中，我受到的教育是你在运动中付出的努力越多，你的身体素质和技能就会越好，你也就越有可能成为冠军。我们真的希望引导下一代，让他们认为冠军就是使用了最好的化学药物的人吗？</p>
</li>
<li>
<p>如果你按照这本书中介绍的计划进行训练，你可以不求助于药物而成功地塑造体形——这取决于你有多大的诚意去投身其中。想要拥有顶级的身材，你要先有顶级的欲望，还要有艰苦并持久训练、不让任何东西干扰你的意志。你要不断了解怎样训练才是最有效的，而不是只会举起重量，或者没有技巧地把重物抛来抛去。需要足够的持久力来塑造你的身体到基因潜力的上限，做到这点并不容易。没有意志、欲望和梦想，就做不成大事。然而，如果你愿意去为自己的梦想付出，你就会取得你所能取得的最好成绩，这是我们任何人能期待和希望的一切。</p>
</li>
<li>
<p>不管是为了增加自己肌肉的块头还是力量，青少年都绝不应该使用合成代谢的类固醇。在青少年期，男孩子们已经处于合成代谢最活跃的时期，睾酮在体内含量充盛。这个时期在身体中加入合成代谢物质，对于他们来说是不需要的，也是很危险的。</p>
</li>
<li>
<p>我认为，最终，药物测试不仅会拯救健美比赛，同时也会拯救生命。在这个我深爱了这么多年的体育项目无药可救之前，我衷心地希望我的愿望和梦想都会变成现实。我的目标是减少药物的使用，这样这项运动又会是强健身体的，而不是毁掉身体的。</p>
</li>
<li>
<p>不管你的饮食多么的科学，还是要面对一个事实，就是严格的饮食控制会让你虚弱，你的肌肉细胞萎缩，肌肉中的糖原丧失，能量储备也会耗尽。在长时间的饮食控制的最后，你看起来绝不会是个强壮而魁梧的人，更不会是精力充沛、健康的，这绝不是你想在台上展现给评委看的。避免这种情况发生的方法就是，在比赛前一周停止控制饮食，给身体以时间去进行休整、复原和重新焕发。</p>
</li>
<li>
<p>你要做什么来对待水分滞留的问题？首先，让我们看看身体是怎样对待水的。你喝的水越多，你的身体就会在尿液中排去越多的水分。在这个过程中更多的矿物质比如钠，也随着尿液排出体外。另一方面，如果你限制饮水量，那么为了防止脱水，身体就会立即开始储存尽可能多的水分。所以你喝的水越多，你存留在体内的水分反而越少；你喝得越少，越多的水分就会滞留。</p>
</li>
<li>
<p>水是人类身体中最多的成分。肌肉主要是由水构成的。脂肪则不同，含的水分极少。</p>
</li>
<li>
<p>只要你喝了足够的水，过量的钠就会从尿液中排到体外</p>
</li>
<li>
<p>关于水液滞留的总结1．不要吃含钠过量的食物。2．仅在比赛前的一晚限制饮水量，而且你不需要完完全全地不喝水；只需要适度减量就可以了。3．保持你的血糖水平稳定。不要让自己太饥饿，也不要在马上比赛前填补大量食物。太多的食物会升高你的血糖水平，导致水分在体内滞留。4．通过训练让汗液正常地排出。训练会处理掉很多的水分，所以做有氧运动比如跑步和骑自行车都是不错的选择。做健美造型尤其是一个好方法，把水分挤到体外并使身体紧实。5．不要过分地依赖蒸汽房和桑拿来排掉水分。你可以通过上述方法来排水，但是过量会使身体虚弱。要记得，汗液不仅仅是水，你在排汗的同时也流失了很多矿物质。在辛苦的训练后，你应该使用矿物质补剂作为你整体增补计划的一部分。6．在你使用药物或者其他化学物质时，明确一下药物的副作用有哪些。记得在1980年奥林匹亚先生大赛之前，我因为肩伤注射了一支可的松。我不知道这会让我体内滞留过量的水分。后来我的身体变得肿胀，以至于我需要在比赛前整天整夜地做健美造型，以让身体再回复紧实。7．在你的训练计划里，尽量多安排户外运动，让阳光帮助你蒸发多余的水分。但是一定要喝够足量的水来补充汗液的丢失。</p>
</li>
<li>
<p>你坚持了很长的时间让自己的身材看上去很出色，为什么不继续有规律地饮食，让自己一直这么有魅力呢？</p>
</li>
</ol>
<h3 id="第四章-受伤及处理">第四章 受伤及处理</h3>
<ol>
<li>
<p>要想在健身中飞速进步，你需要不断尝试将自己的身体推向极限。但是你总会有越过身体耐压能力的时候，这就会造成身体损伤。</p>
</li>
<li>
<p>对所有这些损伤而言，初步处理就是休息。受伤的部位必须得到保护，以免进一步的损伤，使用或锻炼受伤部位只会让问题更严重。对于轻度的拉伤，休息并避免造成损伤的活动，就是唯一必要的处理方法了，直到肢体完全康复。</p>
</li>
<li>
<p>肌肉抽搐，是突然的、经常是剧烈的肌肉收缩，是拉伤的另一种信号。在某种意义上，它是一种保护性的反射，即保护一个区域免于进一步的活动以让其有时间恢复。这种抽搐可能会持续一段时间，造成很大的疼痛，或者只持续较短的时间，比如痉挛，这是肌肉疲倦、过劳的结果。不管那种形式，需要做的只是休息并避免进一步的损伤。</p>
</li>
<li>
<p>训练时的疼痛是一个警示，告诉你某些部位已经受伤了。按照疼痛的指示，你可以实行预防性的措施。首先避免引发那种疼痛的活动，让相关的部位得到恢复。经过一段充分的休息，你就可以逐渐恢复活动了。一旦你已经可以全幅度地活动受损的肢体并且也没有相关的疼痛，就说明你已经充分痊愈了，可以逐渐增加肢体在做那种动作时的阻力了。如果你开始感觉疼痛，说明你已经做得过度了。根据程度不同，痊愈会需要不同的时间。如果你操之过急，想要很快活动起来，不顾我们说过的界限——避免疼痛——就会有二次损伤、更严重的损伤甚至慢性损伤的风险。健身者经常会在或长或短的恢复期中变得沮丧，因为失去了状态、身体条件退化、肌肉“缩水”（肌肉退化及体积缩小），还有不能锻炼所带来的精神和情绪上的苦恼。然而，妥当处理受伤的能力并且自律地让伤处恢复是健身中非常重要的一部分。否则只能进一步延误，甚至彻底毁了你的目标。</p>
</li>
<li>
<p>“一盎司的预防好过一磅的治疗”，这句话对每个健身者来说都是至理名言。过劳和强度训练造成的慢性拉伤之间存在微妙的差异。紧张的训练必定会导致偶尔的残留性的肌肉酸痛或者肌肉肌腱的混合酸痛。这种过劳造成的疼痛不是真正的损伤，大多数健身者把这当做自己已经训练得足够刻苦的信号。然而，如果你感到特别的疼痛以至于不能活动，或者导致接下来的训练强度减弱，你可能就做得太过头了。</p>
</li>
<li>
<p>预防受伤的最好方式就是缓慢的拉伸、热身。</p>
</li>
<li>
<p>避免训练受伤的最好方法是注意做运动前的拉伸和热身，以及大重量训练时注意技巧的正确。要记得，你越强壮，肌肉和肌腱就可以承受越大的压力，但是通常情况下，肌肉力量增长的速度要比肌腱快，所以这就造成了一种不平衡，从而产生问题。你必须把自己的进步控制在合理的速率上，在没有充分准备的情况下，不要用太大的强度或者重量来训练。</p>
</li>
<li>
<p>通常猛烈的外力造成关节向异常的方向活动，并且超过了韧带的承受牵拉的能力，这时最薄弱的部位就会发生损伤。</p>
</li>
<li>
<p>在通常情况下，如果你只感觉到一点疼痛并且没有什么表现症状，那么损伤是轻微的；如果有疼痛、肿胀和更明显的不适感，那么损伤是比较严重的。</p>
</li>
<li>
<p>锻炼伤处只会让问题更糟。</p>
</li>
<li>
<p>有一个防止疝出现的方法，就是在举起重量时逐渐地将气呼出。这样腹部的压力就足够高来稳定你完成动作，但压力又不会太高以至于伤害到腹壁。</p>
</li>
<li>
<p>记住，绕过伤处继续训练，有时是可能的，但有时就是不能。尤其是，如果出现严重的受伤，再想和原来一样进行训练是基本不可能的。相对于身体长久的健康，一时的肌肉效果绝对是次要的。在受伤时继续训练并造成伤势加重，可能会在日后留下永久性、致残性的身体问题。</p>
</li>
<li>
<p>在天气寒冷时训练，需要格外小心来避免受伤。在温度低的时候，身体需要更长的时间变暖，所以在训练之前你应该投入更多的时间去做热身和拉伸。除此之外，在健身房里要穿得暖和一点，这样在训练的休息间隙中，你的肌肉才不会冷下来。</p>
</li>
<li>
<p>健身中出现的损伤大多是由于肌肉或肌腱过度受压或被牵拉而导致的拉伤。适当的热身、拉伸以及正确的技巧都能够帮助防止拉伤。一旦出现拉伤，需要让受伤部位休息。其他帮助恢复的方法，包括冰敷、抬高患肢以及外部加压固定；后续处理中可以使用热疗等方法。如果程度较轻，通常不需要精确地找出到底是哪里拉伤了。你可以感觉受伤的大致区域，判断哪些动作会加重损伤，这样就可以避免使用到那些区域了。拉伤可能出现在并不真正工作、而只是在杠杆原理下进行收缩的地方。</p>
</li>
<li>
<p>大多数健身者的关节损伤，是由于长年累月的负荷和磨损造成的。这些问题的产生是慢性的。年轻的健身者往往训练强度非常大，没有注意到任何问题，但是在几年后，他们就要为自己对身体的滥用付出代价了。年轻人有更好的恢复能力，可以比年龄大的训练者更快地从受伤中返还。但当你年龄增大并一直坚持训练时，有些问题就不能掉以轻心了，那些在你年轻时不会让你受伤的运动方法，可能就会给你一次教训，经过多年牵拉的肌肉，也会在这时让你尝到苦头。这时调整训练方式也许会很好，因为你已经有了年轻时梦寐以求的魁梧体形了。</p>
</li>
<li>
<p>免疫系统的主要食物是谷氨酰胺。强度训练让身体承受着较大的压力，如果你还是继续训练，你也同时开始消耗体内的谷氨酰胺。提高训练强度的一个自然反应就是，你可能发现自己变得更容易生病。几种自然物质（主要是植物来源的）可以帮助身体抵抗或者至少能更有效地处理致病原。不用多说，你需要增补的第一样物质就是谷氨酰胺。其他可以帮助你的东西是——紫锥菊、人参、维生素C以及多酚。</p>
</li>
<li>
<p>训练中，受压的不仅是身体。精神对训练压力的反应和身体的一样剧烈。健身中，最重要的素质之一——虽然不容易量化——是你面对训练（和比赛）的正确精神状态。有几种补剂可以在这方面有所帮助，包括银杏、多酚以及磷脂酰丝氨酸（一种必需脂肪酸DHA）.这些东西帮助你保持思维敏捷。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-31 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-31-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Thu, 31 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-31-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;用薄荷APP记录饮食，发现自己吃了很多种类的东西，还以为超太多了，没想到还好，可能是饮食有做挑选的原因。早上一般都是炒菜的做法，现在改为清蒸的做法，因为好很多，连西兰花都是蒸着的，感觉比之前是有作用，然后爬坡一个小时，刚好今天看完了《施瓦辛格健身全书》，抽个时间要好好捋一捋里面，健身入门和饮食减肥的章节，将那些知识串起来，形成一套流程。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309010949478.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>用薄荷APP记录饮食，发现自己吃了很多种类的东西，还以为超太多了，没想到还好，可能是饮食有做挑选的原因。早上一般都是炒菜的做法，现在改为清蒸的做法，因为好很多，连西兰花都是蒸着的，感觉比之前是有作用，然后爬坡一个小时，刚好今天看完了《施瓦辛格健身全书》，抽个时间要好好捋一捋里面，健身入门和饮食减肥的章节，将那些知识串起来，形成一套流程。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309010949478.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-29 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-29-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-29-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;以后争取健身日记，在当天就写上，不要总是第二天再补，因为很容易忘记当时的感受。&lt;/p&gt;
&lt;p&gt;在看《施瓦辛格健身全书》第四部分了，主要讲减肥和饮食的，全都是干货，这本书快看完了，感受就是第一部分 健身入门和 第四部分 健康营养饮食的内容太重要了，只要能吃透透，不会怕走那么多弯路了。&lt;/p&gt;
&lt;p&gt;接下去开始交叉运动了，显示跑步一段时间，将心率提升起来，然后再爬坡，这样，可以减少点时间，然后心率有起伏，应该会消耗更多热量。&lt;/p&gt;
&lt;p&gt;身体是革命的本钱，健身不光光只是运动而已，包括睡眠、饮食、运动，所以三个方面都要持续调整和完善。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301618656.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>以后争取健身日记，在当天就写上，不要总是第二天再补，因为很容易忘记当时的感受。</p>
<p>在看《施瓦辛格健身全书》第四部分了，主要讲减肥和饮食的，全都是干货，这本书快看完了，感受就是第一部分 健身入门和 第四部分 健康营养饮食的内容太重要了，只要能吃透透，不会怕走那么多弯路了。</p>
<p>接下去开始交叉运动了，显示跑步一段时间，将心率提升起来，然后再爬坡，这样，可以减少点时间，然后心率有起伏，应该会消耗更多热量。</p>
<p>身体是革命的本钱，健身不光光只是运动而已，包括睡眠、饮食、运动，所以三个方面都要持续调整和完善。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301618656.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-28 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-28-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 28 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-28-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;本来下大雨的，出行不便，不打算去健身房了，又有点困，但是因为瘦了13斤，重新调整了目标，下一步计划是20斤，担心每天没什么变化，还是起身去了，打伞去吧。&lt;/p&gt;
&lt;p&gt;去到健身房，现在坐式屈腿训练器，还有一个练大腿合拢力的，都是最大强度，变得一点压力都没有，可以做到20个了，后续会慢慢上强度。感觉身体是有些变化的。&lt;/p&gt;
&lt;p&gt;之前一直都是上跑步机之后，就开始爬坡，然后持续一个小时，现在调整了下策略，一部分是爬坡，一部分是跑步，之前在14坡度上面跑步，还是太难了一点，现在调整为2坡度，应该好一些。&lt;/p&gt;
&lt;p&gt;我还是相信，坚持就一定可以。&lt;/p&gt;
&lt;p&gt;饮食这块，意识也比之前强很多了。会越来越克制和严格。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308290905691.jpg&#34; alt=&#34;dfba2af7a7c1def4c355c7d03473751&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>本来下大雨的，出行不便，不打算去健身房了，又有点困，但是因为瘦了13斤，重新调整了目标，下一步计划是20斤，担心每天没什么变化，还是起身去了，打伞去吧。</p>
<p>去到健身房，现在坐式屈腿训练器，还有一个练大腿合拢力的，都是最大强度，变得一点压力都没有，可以做到20个了，后续会慢慢上强度。感觉身体是有些变化的。</p>
<p>之前一直都是上跑步机之后，就开始爬坡，然后持续一个小时，现在调整了下策略，一部分是爬坡，一部分是跑步，之前在14坡度上面跑步，还是太难了一点，现在调整为2坡度，应该好一些。</p>
<p>我还是相信，坚持就一定可以。</p>
<p>饮食这块，意识也比之前强很多了。会越来越克制和严格。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308290905691.jpg" alt="dfba2af7a7c1def4c355c7d03473751" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-27 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-27-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-27-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308290904300.jpg&#34; alt=&#34;bf1b8e1611c96614e713b7e4ed2b864&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308290904300.jpg" alt="bf1b8e1611c96614e713b7e4ed2b864" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-23 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-23-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-23-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;昨晚下班比较早，然后下午6点多就到健身房了，没怎么做力量训练，直接上跑步机爬坡了，还是跟往常一样，走一个小时看看。&lt;/p&gt;
&lt;p&gt;本来打算在爬坡时，一个小时看电影的，后面研究下，怎么做到一天刚好看了一部电影，然后写下电影日志。&lt;/p&gt;
&lt;p&gt;总是感觉很多事情要做，好多好多事情。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308241352836.jpg&#34; alt=&#34;9c354bf8aaae7d3e1011eba5390b614&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>昨晚下班比较早，然后下午6点多就到健身房了，没怎么做力量训练，直接上跑步机爬坡了，还是跟往常一样，走一个小时看看。</p>
<p>本来打算在爬坡时，一个小时看电影的，后面研究下，怎么做到一天刚好看了一部电影，然后写下电影日志。</p>
<p>总是感觉很多事情要做，好多好多事情。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308241352836.jpg" alt="9c354bf8aaae7d3e1011eba5390b614" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-21 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-21-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Mon, 21 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-21-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;今天早上吃了两个鸡蛋，一根玉米，一盒脱脂纯牛奶，感觉还行。中午在公司基本能选的都选了，可能还是吃多了一点点，下午5点多时都没觉得有多饿，下班回来买了苹果、橘子、还有玉米，还有老干妈，老干妈还是要戒掉了，或着再控制量吧，慢慢来也行了。&lt;/p&gt;
&lt;p&gt;冰箱还有牛排，就整一下了，加上芋头，一个苹果，一个橘子，就是晚饭了。&lt;/p&gt;
&lt;p&gt;因为下雨了的缘故，很晚了健身房人才多起来，一开始先练下腿，没记错第一次用这个东西，只能撑起来中间的，好像是40公斤，现在最高的68公斤都能坚持20个了，没有觉得特别吃力。再过不久可能就要上强度了。&lt;/p&gt;
&lt;p&gt;然后就是跑步机爬坡了，因为现在还是开始阶段，先爬坡一段时间吧，后面再说。一直听的是邓紫棋的《泡沫》，然后是莎拉布莱曼的那几首常听的歌，一个小时其实还是很快的，就是现在感觉时间太不够用了，恨不得一分钟挤出一个小时来用，太多太多事情了，完全就是积压到现在开始重视的。&lt;/p&gt;
&lt;p&gt;我想学很多很多的东西，而且还想要么不做，要做就做第一，休想让我认输，门都没有，一点可能性都没有。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308212255137.png&#34; alt=&#34;image-20230821225524658&#34; style=&#34;zoom: 25%;&#34; /&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308212256566.png&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>今天早上吃了两个鸡蛋，一根玉米，一盒脱脂纯牛奶，感觉还行。中午在公司基本能选的都选了，可能还是吃多了一点点，下午5点多时都没觉得有多饿，下班回来买了苹果、橘子、还有玉米，还有老干妈，老干妈还是要戒掉了，或着再控制量吧，慢慢来也行了。</p>
<p>冰箱还有牛排，就整一下了，加上芋头，一个苹果，一个橘子，就是晚饭了。</p>
<p>因为下雨了的缘故，很晚了健身房人才多起来，一开始先练下腿，没记错第一次用这个东西，只能撑起来中间的，好像是40公斤，现在最高的68公斤都能坚持20个了，没有觉得特别吃力。再过不久可能就要上强度了。</p>
<p>然后就是跑步机爬坡了，因为现在还是开始阶段，先爬坡一段时间吧，后面再说。一直听的是邓紫棋的《泡沫》，然后是莎拉布莱曼的那几首常听的歌，一个小时其实还是很快的，就是现在感觉时间太不够用了，恨不得一分钟挤出一个小时来用，太多太多事情了，完全就是积压到现在开始重视的。</p>
<p>我想学很多很多的东西，而且还想要么不做，要做就做第一，休想让我认输，门都没有，一点可能性都没有。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308212255137.png" alt="image-20230821225524658" style="zoom: 25%;" />
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308212256566.png" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-20 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-20-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 20 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-20-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;昨晚因为感觉中午吃多了，吃了15块钱20个的东北酸菜饺子，然后用薄荷健康APP算了下，有点危险，所以晚上就只吃了西瓜，然后就出门去健身房了，人还是很少的，来了几组力量训练，就爬坡，走了一个小时，期间一直在听2021年常听的那几首歌，然后想了下有什么办法能够减小小腿肚的肉，毕竟太大了，不利于跑步。&lt;/p&gt;
&lt;p&gt;回来称了一下，应该是这几年体重最低值了，争取国庆前能达成目标，虽然很难了，毕竟中间走了很多弯路，然后自己也不注重控制饮食，还是该吃吃该喝喝，这样还是不行的。还是要注意一点，然后呢，中午在公司就要严格控制了，只能去吃自选的了，不要吃粉了，碳水太多太多了。&lt;/p&gt;
&lt;p&gt;最好的结果是国庆前减到目标，哪怕不行，也要今年必须减到了，是必须，越来越严格才行，但是很担心国庆回家，因为习惯没能保持，回家没机会去健身房的啊，只能自己想办法做运动了，比如打地铺做做卷腹，或者早上路上跑步，还有就是晚上要吃少点，然后不喝酒，不喝酒太难了，在家那么多人，会聚餐的，会拉家常什么的，不喝很难，但是我应该可以的。晚上就少吃点饭，多吃点菜吧，然后尽量早点睡觉，别动不动就1点多了，虽然是常事，哈哈哈，那也没办法，一般1点多还是很吵的，在乡下就是这样，氛围也是这样了。&lt;/p&gt;
&lt;p&gt;快点瘦下来，我要回到5分钟/公里的感觉。我要跑半马，我要跑全马。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308211000456.jpg&#34; alt=&#34;d6f52c1bbd8abed52016653276f9767&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>昨晚因为感觉中午吃多了，吃了15块钱20个的东北酸菜饺子，然后用薄荷健康APP算了下，有点危险，所以晚上就只吃了西瓜，然后就出门去健身房了，人还是很少的，来了几组力量训练，就爬坡，走了一个小时，期间一直在听2021年常听的那几首歌，然后想了下有什么办法能够减小小腿肚的肉，毕竟太大了，不利于跑步。</p>
<p>回来称了一下，应该是这几年体重最低值了，争取国庆前能达成目标，虽然很难了，毕竟中间走了很多弯路，然后自己也不注重控制饮食，还是该吃吃该喝喝，这样还是不行的。还是要注意一点，然后呢，中午在公司就要严格控制了，只能去吃自选的了，不要吃粉了，碳水太多太多了。</p>
<p>最好的结果是国庆前减到目标，哪怕不行，也要今年必须减到了，是必须，越来越严格才行，但是很担心国庆回家，因为习惯没能保持，回家没机会去健身房的啊，只能自己想办法做运动了，比如打地铺做做卷腹，或者早上路上跑步，还有就是晚上要吃少点，然后不喝酒，不喝酒太难了，在家那么多人，会聚餐的，会拉家常什么的，不喝很难，但是我应该可以的。晚上就少吃点饭，多吃点菜吧，然后尽量早点睡觉，别动不动就1点多了，虽然是常事，哈哈哈，那也没办法，一般1点多还是很吵的，在乡下就是这样，氛围也是这样了。</p>
<p>快点瘦下来，我要回到5分钟/公里的感觉。我要跑半马，我要跑全马。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308211000456.jpg" alt="d6f52c1bbd8abed52016653276f9767" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-16 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-16-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Wed, 16 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-16-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;最近饮食还是老毛病，晚上回去之后，完全随机的，本来打算不吃了的，但是又想去吃东北饺子，然后呢，去了小店吃了拌面和玉米大馄饨，能吃两份东西，一共20块也是醉了，量很大了，这都两个成人的量了，还是碳水，拌面还是花生酱的，想想就离谱，还减什么肥，一顿晚饭差点给我整没了。实在没办法，事已至此，只能乖乖早点去健身房爬坡了，坡度如果还能高一点就好了，才14，好像不算很高。差不多走了一个小时，因为速度不是很快，所以也就是差不多五公里，大汗淋漓全身都湿透了。本来想走完之后，再来一些力量训练的，但是全身都是汗，好像不太好，后面还是跑步机前，先去练练力量吧。听歌的时候，听到周董的《一点点》，想到了16年在上海跑步时就经常听这首歌，当时差不多75公斤，算是标准体重了吧，随便跑跑都能25分钟左右跑完5公里，现在是有点难了，越想越气。就算饿死，也要达成目的，任何事情只要不违背道德和法律，就“不择手段”达成目的。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308170914821.jpg&#34; style=&#34;zoom:33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>最近饮食还是老毛病，晚上回去之后，完全随机的，本来打算不吃了的，但是又想去吃东北饺子，然后呢，去了小店吃了拌面和玉米大馄饨，能吃两份东西，一共20块也是醉了，量很大了，这都两个成人的量了，还是碳水，拌面还是花生酱的，想想就离谱，还减什么肥，一顿晚饭差点给我整没了。实在没办法，事已至此，只能乖乖早点去健身房爬坡了，坡度如果还能高一点就好了，才14，好像不算很高。差不多走了一个小时，因为速度不是很快，所以也就是差不多五公里，大汗淋漓全身都湿透了。本来想走完之后，再来一些力量训练的，但是全身都是汗，好像不太好，后面还是跑步机前，先去练练力量吧。听歌的时候，听到周董的《一点点》，想到了16年在上海跑步时就经常听这首歌，当时差不多75公斤，算是标准体重了吧，随便跑跑都能25分钟左右跑完5公里，现在是有点难了，越想越气。就算饿死，也要达成目的，任何事情只要不违背道德和法律，就“不择手段”达成目的。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308170914821.jpg" style="zoom:33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>关于健身日记</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-16-%E5%85%B3%E4%BA%8E%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/</link>
      <pubDate>Wed, 16 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-16-%E5%85%B3%E4%BA%8E%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308160925625.jpg&#34;&gt;最近在看微信读书看《施瓦辛格健身全书》，里面有提到健身的话最好每天斗要写一下健身日志，把当天的训练内容和饮食做一下记录，有助于我们去做阶段性的总结。我觉得是有一些道理的，之前在2021年7月8日曾写过跑步日记，记录了应该是户外第一次跑到15公里的所思所想，现在回头看了一下，感觉时间好像被具象化了，一字一句仿佛都在证明存在过，而不是虚无缥缈的事物。&lt;/p&gt;
&lt;p&gt;健身日记，计划记录的只是健身相关的文字，其他别的感悟还是要放到个人日记里去，这样应该就不会混淆了。&lt;/p&gt;
&lt;p&gt;之前很长一段时间，都是选择户外跑步，但是因为经常下雨，就没办法继续了，然后这个习惯就经常被迫中断，一旦中断，想要重新开始，身体就会出现本能性的抗拒，久而久之，之前的豪言壮志不免沦为笑柄。所以，选择加入健身房训练，一来不会给自己找任何借口了，因为不管刮风还是下雨，都不会影响到你去训练这个事情。而且还可以游泳，选择训练的方式变多了，也算不错的体验。&lt;/p&gt;
&lt;p&gt;个人感觉，户外跑步其实更能体验到运动的乐趣和成就感，因为很长的一段距离，有真实和环境接触的机会，更显得真实。在跑步机上面跑步的话，就会差一些，但好处是不会有行人干扰，比较容易分出心来想事情。&lt;/p&gt;
&lt;p&gt;户外跑步应该比之前少很多了，但是如果有这个打算，还是会去的，而且应该会多跑10公里、15公里这样的距离，至于跑步日记，应该只会记录10公里以上的心路历程，因为5公里已经没什么强度了。10公里其实也还好，15公里确实有一点点极限的感觉，但也不至于，争取能跑半马和全马，这是下一步的目标，跑长里程还是要瘦点好，之前才75公斤时，还是跑得飞快的，现在体重有点上来了，明显差一些，但是最近一段时间一直去健身房，虽然体重看着没什么掉，但是很明显整个人状态都不一样，饮食也会下意识去控制，应该吃什么吃多少的量，加上早睡早起，还是很不一样的。&lt;/p&gt;
&lt;p&gt;之前在上海就试过一段时间晚上9点睡觉，4点起床跑步，有机会可以再试下。&lt;/p&gt;
&lt;p&gt;其实我更喜欢的是户外跑步，那种要坚持再坚持的感觉，那种坚持完成之后的成就感，真的很鼓舞人。每次跑前都会觉得自己也就那样了，我是天地的；跑完之后就会觉得天地是我的，开玩笑了哈哈。):&lt;/p&gt;
&lt;p&gt;说了很多事情，其实归根结底，想要获得某一种成功，永远不会是一蹴而就的事情，而是需要坚持，不断坚持，顺其自然、水到渠成的事情，我坚持去做了，然后呢，很平静的接受任何结果，如果失败了，那只是结果之一；如果成功了，那也只是结果之一，并不能说明什么。我想我也不会有多激动，你付出了那么多的努力，觉得自己配得上这个结果，既然配得上，又有什么值得惊喜的地方？只有意外之财、不劳而获的东西，才会让人觉得自己运气真是太好了，从而激动不已。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308160925625.jpg">最近在看微信读书看《施瓦辛格健身全书》，里面有提到健身的话最好每天斗要写一下健身日志，把当天的训练内容和饮食做一下记录，有助于我们去做阶段性的总结。我觉得是有一些道理的，之前在2021年7月8日曾写过跑步日记，记录了应该是户外第一次跑到15公里的所思所想，现在回头看了一下，感觉时间好像被具象化了，一字一句仿佛都在证明存在过，而不是虚无缥缈的事物。</p>
<p>健身日记，计划记录的只是健身相关的文字，其他别的感悟还是要放到个人日记里去，这样应该就不会混淆了。</p>
<p>之前很长一段时间，都是选择户外跑步，但是因为经常下雨，就没办法继续了，然后这个习惯就经常被迫中断，一旦中断，想要重新开始，身体就会出现本能性的抗拒，久而久之，之前的豪言壮志不免沦为笑柄。所以，选择加入健身房训练，一来不会给自己找任何借口了，因为不管刮风还是下雨，都不会影响到你去训练这个事情。而且还可以游泳，选择训练的方式变多了，也算不错的体验。</p>
<p>个人感觉，户外跑步其实更能体验到运动的乐趣和成就感，因为很长的一段距离，有真实和环境接触的机会，更显得真实。在跑步机上面跑步的话，就会差一些，但好处是不会有行人干扰，比较容易分出心来想事情。</p>
<p>户外跑步应该比之前少很多了，但是如果有这个打算，还是会去的，而且应该会多跑10公里、15公里这样的距离，至于跑步日记，应该只会记录10公里以上的心路历程，因为5公里已经没什么强度了。10公里其实也还好，15公里确实有一点点极限的感觉，但也不至于，争取能跑半马和全马，这是下一步的目标，跑长里程还是要瘦点好，之前才75公斤时，还是跑得飞快的，现在体重有点上来了，明显差一些，但是最近一段时间一直去健身房，虽然体重看着没什么掉，但是很明显整个人状态都不一样，饮食也会下意识去控制，应该吃什么吃多少的量，加上早睡早起，还是很不一样的。</p>
<p>之前在上海就试过一段时间晚上9点睡觉，4点起床跑步，有机会可以再试下。</p>
<p>其实我更喜欢的是户外跑步，那种要坚持再坚持的感觉，那种坚持完成之后的成就感，真的很鼓舞人。每次跑前都会觉得自己也就那样了，我是天地的；跑完之后就会觉得天地是我的，开玩笑了哈哈。):</p>
<p>说了很多事情，其实归根结底，想要获得某一种成功，永远不会是一蹴而就的事情，而是需要坚持，不断坚持，顺其自然、水到渠成的事情，我坚持去做了，然后呢，很平静的接受任何结果，如果失败了，那只是结果之一；如果成功了，那也只是结果之一，并不能说明什么。我想我也不会有多激动，你付出了那么多的努力，觉得自己配得上这个结果，既然配得上，又有什么值得惊喜的地方？只有意外之财、不劳而获的东西，才会让人觉得自己运气真是太好了，从而激动不已。</p>
]]></content:encoded>
    </item>
    <item>
      <title>2023-08-13 爬坡记录</title>
      <link>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-13-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</link>
      <pubDate>Sun, 13 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E5%81%A5%E8%BA%AB%E6%97%A5%E8%AE%B0/2023-08-13-%E7%88%AC%E5%9D%A1%E8%AE%B0%E5%BD%95/</guid>
      <description>&lt;p&gt;最近饮食还是有点随机，晚上想吃什么总是很难按照计划进行，本来想吃得简单一点，记过脑袋一热去吃了北京烤鸭，吃了套餐应该是三十多块钱，应该有十几张饼，加上椒盐鸭骨架，到店里面吃的，看了B站无所谓有什么的牛排视频，还是摆地摊的，感觉这个模式很少见，摊主有主业，所以每个月只出摊两天。&lt;/p&gt;
&lt;p&gt;吃完之后，就去了健身房了，通过薄荷健康APP查了一下，北京烤鸭热量爆炸，所以只能加多点训练量，其实训练量也没什么，就是爬坡加上点时间而已，应该是走了2个小时，因为速度很慢，应该是4公里/小时，所以才8公里，然后加上一点力量训练，刚开始去用这些器材的时候，回来还感觉浑身酸痛，现在应该是过了这个感觉了，没那么多的酸痛了，说明身体适应了，应该要加点训练难度了。&lt;/p&gt;
&lt;img src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308160935799.jpg&#34; style=&#34;zoom: 33%;&#34; /&gt;</description>
      <content:encoded><![CDATA[<p>最近饮食还是有点随机，晚上想吃什么总是很难按照计划进行，本来想吃得简单一点，记过脑袋一热去吃了北京烤鸭，吃了套餐应该是三十多块钱，应该有十几张饼，加上椒盐鸭骨架，到店里面吃的，看了B站无所谓有什么的牛排视频，还是摆地摊的，感觉这个模式很少见，摊主有主业，所以每个月只出摊两天。</p>
<p>吃完之后，就去了健身房了，通过薄荷健康APP查了一下，北京烤鸭热量爆炸，所以只能加多点训练量，其实训练量也没什么，就是爬坡加上点时间而已，应该是走了2个小时，因为速度很慢，应该是4公里/小时，所以才8公里，然后加上一点力量训练，刚开始去用这些器材的时候，回来还感觉浑身酸痛，现在应该是过了这个感觉了，没那么多的酸痛了，说明身体适应了，应该要加点训练难度了。</p>
<img src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308160935799.jpg" style="zoom: 33%;" />
]]></content:encoded>
    </item>
    <item>
      <title>《认知觉醒：开启自我改变的原动力》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%A4%E7%9F%A5%E8%A7%89%E9%86%92%E5%BC%80%E5%90%AF%E8%87%AA%E6%88%91%E6%94%B9%E5%8F%98%E7%9A%84%E5%8E%9F%E5%8A%A8%E5%8A%9B/</link>
      <pubDate>Fri, 28 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%A4%E7%9F%A5%E8%A7%89%E9%86%92%E5%BC%80%E5%90%AF%E8%87%AA%E6%88%91%E6%94%B9%E5%8F%98%E7%9A%84%E5%8E%9F%E5%8A%A8%E5%8A%9B/</guid>
      <description>&lt;h3 id=&#34;自序-开启自我改变的原动力&#34;&gt;自序 开启自我改变的原动力&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我发现人与人之间的根本差异是认知能力上的差异，因为认知影响选择，而选择改变命运，所以成长的本质就是让大脑的认知变得更加清晰；我开始广泛涉猎知识，从脑科学、认知科学、心理学、行为科学、社会学及其他学科中，看到了自己成长的可能性，明白了自己想要什么，清楚了部分规律和真相，知道了实现梦想的方法和路径&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你若放弃了成长，五年、十年之后你肯定还是老样子，但只要去改变，就有可能收获全新的自己。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第一章-大脑一切问题的起源&#34;&gt;第一章 大脑——一切问题的起源&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032207217.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理智脑虽然高级，但比起本能脑和情绪脑，它的力量实在是太弱小了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032208684.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们在生活中做的大部分决策往往源于本能和情绪，而非理智。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不管是何种因素影响我们做出决策，初衷都是让我们好，只不过本能脑和情绪脑的决策往往与现代社会脱节，因为它们以为自己还处于原始社会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们今天虽然西装革履地坐在钢筋混凝土建造的大楼里工作，但本质上依旧是那个为了生存而随时准备战斗、逃跑或及时享乐的“原始人”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本能脑和情绪脑是公司里的员工，一个资历很老，一个年富力强，但他们都没什么文化，也没什么事业心，只在乎眼前的舒适与安逸，而理智脑则是这个公司的经理，他富有远见且身居高位，但因为太年轻，所以没有威信，做出的决策经常被两位老员工藐视。这样的大脑构造导致我们总是陷入“明明知道，但就是做不到；特别想要，但就是得不到”的怪圈，比如：·明知道读书重要，转身却掏出了手机；·明知道跑步有益，但跑了两天就没了下文；·明知道要事优先，却成天围绕琐事打转……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;·这会儿也看不了几页书，不如玩会儿游戏放松一下。·不吃饱饭，哪有力气减肥呢？·今天先玩吧，明天一定加倍学习，把今天浪费的时间补上……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上理智脑很少有主见，大多数时候我们以为自己在思考，其实都是在对自身的行为和欲望进行合理化，这正是人类被称作“自我解释的动物”的原因。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理智脑发达的人更能：·立足长远，主动走出舒适区；·为潜在的风险克制自己，为可能的收益延时满足；·保持耐心，坚持做那些短期内看不到效果的“无用之事”；·抵制诱惑，面对舒适和娱乐时，做出与其他人不同的选择……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;习惯之所以难以改变，就是因为它是自我巩固的——越用越强，越强越用。要想从既有的习惯中跳出来，最好的方法不是依靠自制力，而是依靠知识&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理智脑不是直接干活的，干活是本能脑和情绪脑的事情，因为它们的“力气”大；上天赋予理智脑智慧，是让它驱动本能和情绪，而不是直接取代它们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们大脑里的那位经理，他的职责既不是开除两位员工，也不是与他们对抗，更不是亲自上阵、包揽一切，而是学习知识，提升认知，运用策略，对两位老员工既尊重、包容又巧妙驱动，通过各种办法让他们开开心心地把活干了，最终使大脑这个“公司”团结和谐，欣欣向荣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论个体还是群体，人类的安全感都源于自己在某一方面拥有的独特优势：或能力，或财富，或权力，或影响力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做总比不做强！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事实上我更应该跟自己的过去比，哪怕好那么一点点，也是值得的！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有时选择太多也会让人陷入焦虑，比如突然有一段自由时间，却因为想做的事情太多，最后把时间都浪费在了摇摆不定上，静不下心做最重要的事，或者说根本不知道最重要的事情是什么。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想同时做很多事，又想立即看到效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自己的欲望大于能力，又极度缺乏耐心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;急于求成，想同时做很多事；避难趋易，想不怎么努力就立即看到效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;·克制欲望，不要让自己同时做很多事；·面对现实，看清自己真实的能力水平；·要事优先，想办法只做最重要的事情；·接受环境，在局限中做力所能及的事；·直面核心，狠狠逼自己一把去突破它。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现实生活中无论读书、考试，还是工作、赚钱，要想表现出色都必须经受长时间的磨炼。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要想有所成就，必须保持耐心，延迟满足。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多人虽然嘴上说要保持耐心，但身体却诚实地游走在即时满足的边缘。他们总是从最简单、最舒适的部分开始一天的工作，然后沉迷于娱乐信息、醉心于周边琐事，就是无力去做重要的事情；他们花大量的时间寻找干货文章，点击收藏，但今后可能再也不会点开；他们的新年计划非常完美，在出炉的那一瞬间，就像自己已经完成一样，但没过几天，那计划就不知所踪了；他们有时也“勤奋”得出奇，疯狂提升自己的阅读量、践行“一万小时定律”，每天坚持做同一件事，但始终与成功无缘；他们刚有了一点点改变，甚至在还只有一个想法的时候，就会急着向全世界宣告自己将要开始新生活了，但只要遇到一点挫折，很快就会消沉放弃；他们看到自己与同龄人有很大差距时，就会变得非常焦虑，然后去报很多课、读很多书、做很多事，并期望立即看到变化。总之，他们希望只读几本书就能博学多识，坚持21天就能养成一个习惯，少吃几口饭就能变瘦，读完一篇干货文章就能立即改变……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;缺乏耐心根本不是什么可耻的事，和自己的道德品质也全无关系，这仅仅是天生属性罢了，每个人都一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社会中的精英通常是那些能更好地克服天性的人，他们的耐心水平更高，延迟满足的能力更强。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复利曲线就是一种理性工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032210416.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复利效应显示了价值积累的普遍规律：前期增长非常缓慢，但到达一个拐点后会飞速增长。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于任何没有特殊资源的个体或群体来说，坚信并践行这个价值积累规律，早晚能有所成就。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;舒适区边缘另一个重要的规律是它揭示了能力成长的普遍法则：无论个体还是群体，其能力都以“舒适区—拉伸区[插图]—困难区”的形式分布，要想让自己高效成长，必须让自己始终处于舒适区的边缘，贸然跨到困难区会让自己受挫，而始终停留在舒适区会让自己停滞（见图1-4）。[插图]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人类的天性却正好与这个规律相反。在欲望上急于求成，总想一口吃成个胖子，导致自己终日在困难区受挫；在行动上避难趋易，总是停留在舒适区，导致自己在现实中总是一无所获。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复利曲线和舒适区边缘是一对好朋友，它们组合在一起可以让我们在宏观上看到保持耐心的力量，而且这种力量适用于每一个普通人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于学习成长而言，成长权重对比是每个人都应该首先认识的，它揭示了“学习、思考、行动和改变”在成长过程中的关系：即对于学习而言，学习之后的思考、思考之后的行动、行动之后的改变更重要，如果不盯住内层的改变量，那么在表层投入再多的学习量也会事倍功半；因此，从权重上看，改变量﹥行动量﹥思考量﹥学习量（见图1-5）。[插图]图1-5　成长权重对比&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多人之所以痛苦焦虑，就是因为只盯着表层的学习量。他们读了很多书、报了很多课，天天打卡、日日坚持，努力到感动自己，但就是没有深入关注过自己的思考、行动和改变，所以总是感到学无所获，甚至会认为是自己不够努力，应该继续加大学习量，结果陷入了“越学越焦虑，越焦虑越学”的恶性循环。原因仍然是我们的天性在作祟。因为单纯保持学习输入是简单的，而思考、行动和改变则相对困难。在缺乏觉知的情况下，我们会本能地避难趋易，不自觉地沉浸在表层的学习量中。同时，表层学习也是最能直接看到效果的，比如今天读了一本书、学习了5小时、背了100个单词……结果都立即可见，而底层的改变则不那么容易发生，所以急于求成的天性也会促使我们选择前者。“多即是少，少即是多”的辩证关系在图1-5中也体现得淋漓尽致：停在表层，我们就会陷入欲望漩涡，什么都想学、什么都想要，忙忙碌碌却收效甚微；若是能深入底层，盯住实际改变，我们就能跳出盲目、焦虑、浮躁的怪圈。比如，读书时不求记住书中的全部知识，只要有一两个观点促使自己发生了切实的改变就足够了，其收获与意义比读很多书但仅停留在知道的层面要大得多。时常以这样的标准指导自己学习，我们的收获就会越来越多，焦虑就会越来越少，耐心自然也就越来越强了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;另一个值得关注的微观规律是学习的平台期。这个规律表明，学习进展和时间的关系并不是我们想象中的那种线性关系（学多少是多少），而是呈现一种波浪式上升曲线（见图1-6）。[插图]图1-6　学习曲线几乎任何学习都是这样，刚开始的时候进步很快，然后会变慢，进入一个平台期。在平台期，我们可能付出了大量的努力，但看起来毫无进步，甚至可能退步，不过这仅仅是一个假象，因为大脑中的神经元细胞依旧在发生连接并被不停地巩固，到了某一节点后，就会进入下一个快速上升阶段。比如在学习英语的过程中，建立一个新的语言“过滤器”，通常需要6个月才能突破平台期。很多人并不知道这个规律，努力坚持了5个月，发现自己没有进步就摇头放弃了。这样的做法真的很可惜，因为好不容易建立起的神经元连接会在放弃练习后弱化、消失，下次学习就得重新开始。而那些时常坚持用英语“熏耳朵”的人，往往会在某一天突然发现，原来听不懂的英语好像都能听懂了，这就是平台期突破的典型表现。我猜每个人在生活中都有过这样的体验。当我们清楚了上述规律之后，就能在面对长期的冷寂或挫折失败时做出与他人不同的选择：有人选择放弃，而我们继续坚持。同时，我们不会因自己进步缓慢而沮丧，也不会因别人成长迅速而焦虑。就像写公众号，有耐心的人会牢牢盯住长远价值，他们的目光在5年、10年之后，所以不会因眼下文章的阅读量低而缺失动力，也不会因别人写出了10W+的文章（一篇文章的阅读量达到10万以上）而焦虑不安，毕竟各自所处的阶段不同，只要持续创造价值，别人的今天就是自己的明天。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;耐心不是毅力带来的结果，而是具有长远目光的结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为什么我们需要终身学习。因为当我们知道的规律越多，就越能定位自己所处的阶段和位置、预估未来的结果，进而增强自己持续行动的耐心。毫无疑问，对外部世界的规律的认知能使我们耐心倍增。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;首先，面对天性，放下心理包袱，坦然接纳自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其次，面对诱惑，学会延迟满足，变对抗为沟通。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“该有的享受一点都不会少，只是不是现在享受，而是在完成重要的事情之后。”这是一个有效的策略，因为放弃享受，它们是不会同意的，但延迟享受，它们是能接受的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一开始，我连睡觉时都要把手机放在枕边，以方便醒后第一时间拿到。后来，我把它放到书桌上，早上起来后我依然会忍不住走向书桌。这段距离给了我与身体里的原始人对话的机会。我对自己说：“那些信息已经在手机里待了一个晚上了，也不差这一会儿，等会儿再看吧，反正它们也跑不了。”几次尝试之后，我发现可以做到远离手机，因为确实不会有任何损失，而且还能体会到集中精力读书或跑步的充实感。上午和下午开始工作前，我也采用同样的策略，对自己说：“暂时忍耐一下，先做重要的事情，之后会有半小时或一小时的时间专门玩手机，想怎么玩都行。”通过自我沟通和引导，本能脑和情绪脑产生了安全感，通常它们都舍得放手让理智脑插个队。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;耐心就是这样，不能急于求成，允许自己缓慢地改变，甚至经常失败。无论结果如何，和自己对话都会产生效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后，面对困难，主动改变视角，赋予行动意义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要想办法看清那些想做之事的意义和好处，你看到的维度越多，耐心就会越强。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最高级的方法是请本能脑和情绪脑出动来解决困难。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;是的，你没有听错！本能脑和情绪脑确实畏惧困难、只会享乐，但谁说它们不能从困难的事情中感受到乐趣呢？对本能脑和情绪脑来说，它们根本不在乎你是在玩手机还是在解方程，它们只在乎是否舒适。科学家废寝忘食地沉迷于研究，是因为他们真的乐在其中；跑步者风雨无阻地迈腿奔跑，是因为他们自己不愿意停下，他们正舒服着呢！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想办法让本能脑和情绪脑感受到困难事物的乐趣并上瘾，才是理智脑的最高级的策略[插图]。学会释放本能脑和情绪脑的强大力量，我们就会无往不胜！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二章-潜意识生命留给我们的彩蛋&#34;&gt;第二章 潜意识——生命留给我们的彩蛋&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;进化是一把双刃剑，意识分层在给人类带来巨大好处的同时也带来了副作用——模糊。因为处理各种信息的速度不对等，意识很难介入潜意识，而潜意识却能轻易左右意识，所以人们总是做着自己不理解的事，比如明明想去学习，结果转身就拿起了手机；明明知道有些担忧毫无意义，却总是忍不住陷入焦虑，就像身后有个影子，它能影响你，但你不知道它是什么，回头看去一片模糊。这种模糊让人心生迷茫和恐惧，而迷茫和恐惧又使我们的认知、情绪和行动遭遇各种困扰，继而影响人生的走向。模糊，正是人生困扰之源。而人生也像是一场消除模糊的比赛，谁的模糊越严重，谁就越混沌；谁的模糊越轻微，谁就越清醒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学习知识的目的是“消除模糊”，而获取知识的方法也是“消除模糊”，目的和方法相统一，这几乎成了这个世界上所有能人共同遵守的学习法则&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;·《思考力》一书的作者上田正仁提示：思考力的本质就是“丢弃所有已经消化的信息，让问题的核心浮出水面”；·《刻意练习》中的核心方法论是：不要重复练习已经会的，要不断寻找那些稍有难度的部分；·《原则》一书的作者瑞·达利欧罗列了工作和生活中的原则，用以清晰地指导自己行事；·《超越感觉》一书告诉我们，想拥有清晰的逻辑，就坚持一点：凡事不要凭模糊的感觉判断，要寻找清晰的证据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提升思考能力的方法正是不断明确核心困难和心得感悟，并专注于此。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们总是习惯在模糊区打转，在舒适区兜圈，重复做已经掌握的事情，对真正的困难视而不见，这背后都是潜意识在操控——因为基因认为这样做耗能更低。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;优秀的人更倾向于做高耗能的事，比如“学霸”的秘诀往往在他们的错题本上——他们更愿意花时间明确错误，并集中精力攻克。而学习成绩一般的同学更喜欢勤奋地重复已经掌握的部分，对真正的困难选择睁一只眼闭一只眼，希望能够搪塞过去，结果模糊点越积越多，以致无力应付。不难发现，“学霸”和普通同学之间的差异不仅体现在勤奋的程度上，还体现在努力的模式上：谁更愿意做高耗能的事——消除模糊，制造清晰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;德国心理治疗师伯特·海灵格曾这样描述人们对烦恼的态度：受苦比解决问题来得容易，承受不幸比享受幸福来得简单。这极符合人类不愿动脑的天性。因为解决问题需要动脑，享受幸福也需要动脑平衡各种微妙的关系，而承受痛苦则只需陷在那里不动。虽然被动地承受痛苦也会耗费很多能量，但在基因的影响下，人就是不喜欢主动耗能，所以美团创始人王兴的这句话引起了很多人的共鸣：多数人为了逃避真正的思考，愿意做任何事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;而具体事件一旦变模糊，其边界就会无限扩大，原本并不困难的小事，也会在模糊的潜意识里变得难以解决。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真正的困难总比想象的要小很多。人们拖延、纠结、畏惧、害怕的根本原因往往不是事情本身有多难，而是内心的想法变得模糊。就像在3 000米跑步考核开始前，那种不知名的恐惧会让人紧张得全身发抖，而我们一旦开跑、不得不与这种恐惧正面交锋时，就会发现3 000米考核也不过如此。如果我们再积极些，学会从一开始就主动正视它、拆解它、看清它，或许那种紧张就不困扰自己了，我们甚至能从容地“享受”比赛。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;记住，任何痛苦事件都不会自动消失，哪怕再小的事情也是如此。要想不受其困扰，唯一的办法就是正视它、看清它、拆解它、化解它，不给它进入潜意识的机会，不给它变模糊的机会；即使已经进入潜意识，也要想办法将它挖出来。所以，当你感到心里有说不清、道不明的难受的感觉时，赶紧坐下来，向自己提问。·到底是什么让自己烦躁不安？是上台演讲、会见某人，还是思绪纷乱？·具体是什么让自己恐惧担忧？是能力不足、准备不够，还是害怕某事发生？·面对困境，我能做什么？不能做什么？如果做不到或搞砸了，最坏的结果是什么？一层层挖下去，直到挖不动为止。坦然地承认、接纳那些难以启齿的想法，让情绪极度透明。虽然直面情绪不会让痛苦马上消失，甚至短时间内还会加剧痛苦，但这会让你主导形势，至少不会被情绪无端恐吓。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="自序-开启自我改变的原动力">自序 开启自我改变的原动力</h3>
<ul>
<li>
<p>我发现人与人之间的根本差异是认知能力上的差异，因为认知影响选择，而选择改变命运，所以成长的本质就是让大脑的认知变得更加清晰；我开始广泛涉猎知识，从脑科学、认知科学、心理学、行为科学、社会学及其他学科中，看到了自己成长的可能性，明白了自己想要什么，清楚了部分规律和真相，知道了实现梦想的方法和路径</p>
</li>
<li>
<p>你若放弃了成长，五年、十年之后你肯定还是老样子，但只要去改变，就有可能收获全新的自己。</p>
</li>
</ul>
<h3 id="第一章-大脑一切问题的起源">第一章 大脑——一切问题的起源</h3>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032207217.png"></p>
</li>
<li>
<p>理智脑虽然高级，但比起本能脑和情绪脑，它的力量实在是太弱小了。</p>
</li>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032208684.png"></p>
</li>
<li>
<p>我们在生活中做的大部分决策往往源于本能和情绪，而非理智。</p>
</li>
<li>
<p>不管是何种因素影响我们做出决策，初衷都是让我们好，只不过本能脑和情绪脑的决策往往与现代社会脱节，因为它们以为自己还处于原始社会。</p>
</li>
<li>
<p>我们今天虽然西装革履地坐在钢筋混凝土建造的大楼里工作，但本质上依旧是那个为了生存而随时准备战斗、逃跑或及时享乐的“原始人”。</p>
</li>
<li>
<p>本能脑和情绪脑是公司里的员工，一个资历很老，一个年富力强，但他们都没什么文化，也没什么事业心，只在乎眼前的舒适与安逸，而理智脑则是这个公司的经理，他富有远见且身居高位，但因为太年轻，所以没有威信，做出的决策经常被两位老员工藐视。这样的大脑构造导致我们总是陷入“明明知道，但就是做不到；特别想要，但就是得不到”的怪圈，比如：·明知道读书重要，转身却掏出了手机；·明知道跑步有益，但跑了两天就没了下文；·明知道要事优先，却成天围绕琐事打转……</p>
</li>
<li>
<p>·这会儿也看不了几页书，不如玩会儿游戏放松一下。·不吃饱饭，哪有力气减肥呢？·今天先玩吧，明天一定加倍学习，把今天浪费的时间补上……</p>
</li>
<li>
<p>事实上理智脑很少有主见，大多数时候我们以为自己在思考，其实都是在对自身的行为和欲望进行合理化，这正是人类被称作“自我解释的动物”的原因。</p>
</li>
<li>
<p>理智脑发达的人更能：·立足长远，主动走出舒适区；·为潜在的风险克制自己，为可能的收益延时满足；·保持耐心，坚持做那些短期内看不到效果的“无用之事”；·抵制诱惑，面对舒适和娱乐时，做出与其他人不同的选择……</p>
</li>
<li>
<p>习惯之所以难以改变，就是因为它是自我巩固的——越用越强，越强越用。要想从既有的习惯中跳出来，最好的方法不是依靠自制力，而是依靠知识</p>
</li>
<li>
<p>理智脑不是直接干活的，干活是本能脑和情绪脑的事情，因为它们的“力气”大；上天赋予理智脑智慧，是让它驱动本能和情绪，而不是直接取代它们。</p>
</li>
<li>
<p>我们大脑里的那位经理，他的职责既不是开除两位员工，也不是与他们对抗，更不是亲自上阵、包揽一切，而是学习知识，提升认知，运用策略，对两位老员工既尊重、包容又巧妙驱动，通过各种办法让他们开开心心地把活干了，最终使大脑这个“公司”团结和谐，欣欣向荣。</p>
</li>
<li>
<p>无论个体还是群体，人类的安全感都源于自己在某一方面拥有的独特优势：或能力，或财富，或权力，或影响力。</p>
</li>
<li>
<p>做总比不做强！</p>
</li>
<li>
<p>事实上我更应该跟自己的过去比，哪怕好那么一点点，也是值得的！</p>
</li>
<li>
<p>有时选择太多也会让人陷入焦虑，比如突然有一段自由时间，却因为想做的事情太多，最后把时间都浪费在了摇摆不定上，静不下心做最重要的事，或者说根本不知道最重要的事情是什么。</p>
</li>
<li>
<p>想同时做很多事，又想立即看到效果。</p>
</li>
<li>
<p>自己的欲望大于能力，又极度缺乏耐心。</p>
</li>
<li>
<p>急于求成，想同时做很多事；避难趋易，想不怎么努力就立即看到效果。</p>
</li>
<li>
<p>·克制欲望，不要让自己同时做很多事；·面对现实，看清自己真实的能力水平；·要事优先，想办法只做最重要的事情；·接受环境，在局限中做力所能及的事；·直面核心，狠狠逼自己一把去突破它。</p>
</li>
<li>
<p>现实生活中无论读书、考试，还是工作、赚钱，要想表现出色都必须经受长时间的磨炼。</p>
</li>
<li>
<p>要想有所成就，必须保持耐心，延迟满足。</p>
</li>
<li>
<p>很多人虽然嘴上说要保持耐心，但身体却诚实地游走在即时满足的边缘。他们总是从最简单、最舒适的部分开始一天的工作，然后沉迷于娱乐信息、醉心于周边琐事，就是无力去做重要的事情；他们花大量的时间寻找干货文章，点击收藏，但今后可能再也不会点开；他们的新年计划非常完美，在出炉的那一瞬间，就像自己已经完成一样，但没过几天，那计划就不知所踪了；他们有时也“勤奋”得出奇，疯狂提升自己的阅读量、践行“一万小时定律”，每天坚持做同一件事，但始终与成功无缘；他们刚有了一点点改变，甚至在还只有一个想法的时候，就会急着向全世界宣告自己将要开始新生活了，但只要遇到一点挫折，很快就会消沉放弃；他们看到自己与同龄人有很大差距时，就会变得非常焦虑，然后去报很多课、读很多书、做很多事，并期望立即看到变化。总之，他们希望只读几本书就能博学多识，坚持21天就能养成一个习惯，少吃几口饭就能变瘦，读完一篇干货文章就能立即改变……</p>
</li>
<li>
<p>缺乏耐心根本不是什么可耻的事，和自己的道德品质也全无关系，这仅仅是天生属性罢了，每个人都一样。</p>
</li>
<li>
<p>社会中的精英通常是那些能更好地克服天性的人，他们的耐心水平更高，延迟满足的能力更强。</p>
</li>
<li>
<p>复利曲线就是一种理性工具。</p>
</li>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032210416.png"></p>
</li>
<li>
<p>复利效应显示了价值积累的普遍规律：前期增长非常缓慢，但到达一个拐点后会飞速增长。</p>
</li>
<li>
<p>对于任何没有特殊资源的个体或群体来说，坚信并践行这个价值积累规律，早晚能有所成就。</p>
</li>
<li>
<p>舒适区边缘另一个重要的规律是它揭示了能力成长的普遍法则：无论个体还是群体，其能力都以“舒适区—拉伸区[插图]—困难区”的形式分布，要想让自己高效成长，必须让自己始终处于舒适区的边缘，贸然跨到困难区会让自己受挫，而始终停留在舒适区会让自己停滞（见图1-4）。[插图]</p>
</li>
<li>
<p>人类的天性却正好与这个规律相反。在欲望上急于求成，总想一口吃成个胖子，导致自己终日在困难区受挫；在行动上避难趋易，总是停留在舒适区，导致自己在现实中总是一无所获。</p>
</li>
<li>
<p>复利曲线和舒适区边缘是一对好朋友，它们组合在一起可以让我们在宏观上看到保持耐心的力量，而且这种力量适用于每一个普通人。</p>
</li>
<li>
<p>对于学习成长而言，成长权重对比是每个人都应该首先认识的，它揭示了“学习、思考、行动和改变”在成长过程中的关系：即对于学习而言，学习之后的思考、思考之后的行动、行动之后的改变更重要，如果不盯住内层的改变量，那么在表层投入再多的学习量也会事倍功半；因此，从权重上看，改变量﹥行动量﹥思考量﹥学习量（见图1-5）。[插图]图1-5　成长权重对比</p>
</li>
<li>
<p>很多人之所以痛苦焦虑，就是因为只盯着表层的学习量。他们读了很多书、报了很多课，天天打卡、日日坚持，努力到感动自己，但就是没有深入关注过自己的思考、行动和改变，所以总是感到学无所获，甚至会认为是自己不够努力，应该继续加大学习量，结果陷入了“越学越焦虑，越焦虑越学”的恶性循环。原因仍然是我们的天性在作祟。因为单纯保持学习输入是简单的，而思考、行动和改变则相对困难。在缺乏觉知的情况下，我们会本能地避难趋易，不自觉地沉浸在表层的学习量中。同时，表层学习也是最能直接看到效果的，比如今天读了一本书、学习了5小时、背了100个单词……结果都立即可见，而底层的改变则不那么容易发生，所以急于求成的天性也会促使我们选择前者。“多即是少，少即是多”的辩证关系在图1-5中也体现得淋漓尽致：停在表层，我们就会陷入欲望漩涡，什么都想学、什么都想要，忙忙碌碌却收效甚微；若是能深入底层，盯住实际改变，我们就能跳出盲目、焦虑、浮躁的怪圈。比如，读书时不求记住书中的全部知识，只要有一两个观点促使自己发生了切实的改变就足够了，其收获与意义比读很多书但仅停留在知道的层面要大得多。时常以这样的标准指导自己学习，我们的收获就会越来越多，焦虑就会越来越少，耐心自然也就越来越强了。</p>
</li>
<li>
<p>另一个值得关注的微观规律是学习的平台期。这个规律表明，学习进展和时间的关系并不是我们想象中的那种线性关系（学多少是多少），而是呈现一种波浪式上升曲线（见图1-6）。[插图]图1-6　学习曲线几乎任何学习都是这样，刚开始的时候进步很快，然后会变慢，进入一个平台期。在平台期，我们可能付出了大量的努力，但看起来毫无进步，甚至可能退步，不过这仅仅是一个假象，因为大脑中的神经元细胞依旧在发生连接并被不停地巩固，到了某一节点后，就会进入下一个快速上升阶段。比如在学习英语的过程中，建立一个新的语言“过滤器”，通常需要6个月才能突破平台期。很多人并不知道这个规律，努力坚持了5个月，发现自己没有进步就摇头放弃了。这样的做法真的很可惜，因为好不容易建立起的神经元连接会在放弃练习后弱化、消失，下次学习就得重新开始。而那些时常坚持用英语“熏耳朵”的人，往往会在某一天突然发现，原来听不懂的英语好像都能听懂了，这就是平台期突破的典型表现。我猜每个人在生活中都有过这样的体验。当我们清楚了上述规律之后，就能在面对长期的冷寂或挫折失败时做出与他人不同的选择：有人选择放弃，而我们继续坚持。同时，我们不会因自己进步缓慢而沮丧，也不会因别人成长迅速而焦虑。就像写公众号，有耐心的人会牢牢盯住长远价值，他们的目光在5年、10年之后，所以不会因眼下文章的阅读量低而缺失动力，也不会因别人写出了10W+的文章（一篇文章的阅读量达到10万以上）而焦虑不安，毕竟各自所处的阶段不同，只要持续创造价值，别人的今天就是自己的明天。</p>
</li>
<li>
<p>耐心不是毅力带来的结果，而是具有长远目光的结果。</p>
</li>
<li>
<p>为什么我们需要终身学习。因为当我们知道的规律越多，就越能定位自己所处的阶段和位置、预估未来的结果，进而增强自己持续行动的耐心。毫无疑问，对外部世界的规律的认知能使我们耐心倍增。</p>
</li>
<li>
<p>首先，面对天性，放下心理包袱，坦然接纳自己。</p>
</li>
<li>
<p>其次，面对诱惑，学会延迟满足，变对抗为沟通。</p>
</li>
<li>
<p>“该有的享受一点都不会少，只是不是现在享受，而是在完成重要的事情之后。”这是一个有效的策略，因为放弃享受，它们是不会同意的，但延迟享受，它们是能接受的。</p>
</li>
<li>
<p>一开始，我连睡觉时都要把手机放在枕边，以方便醒后第一时间拿到。后来，我把它放到书桌上，早上起来后我依然会忍不住走向书桌。这段距离给了我与身体里的原始人对话的机会。我对自己说：“那些信息已经在手机里待了一个晚上了，也不差这一会儿，等会儿再看吧，反正它们也跑不了。”几次尝试之后，我发现可以做到远离手机，因为确实不会有任何损失，而且还能体会到集中精力读书或跑步的充实感。上午和下午开始工作前，我也采用同样的策略，对自己说：“暂时忍耐一下，先做重要的事情，之后会有半小时或一小时的时间专门玩手机，想怎么玩都行。”通过自我沟通和引导，本能脑和情绪脑产生了安全感，通常它们都舍得放手让理智脑插个队。</p>
</li>
<li>
<p>耐心就是这样，不能急于求成，允许自己缓慢地改变，甚至经常失败。无论结果如何，和自己对话都会产生效果。</p>
</li>
<li>
<p>最后，面对困难，主动改变视角，赋予行动意义。</p>
</li>
<li>
<p>要想办法看清那些想做之事的意义和好处，你看到的维度越多，耐心就会越强。</p>
</li>
<li>
<p>最高级的方法是请本能脑和情绪脑出动来解决困难。</p>
</li>
<li>
<p>是的，你没有听错！本能脑和情绪脑确实畏惧困难、只会享乐，但谁说它们不能从困难的事情中感受到乐趣呢？对本能脑和情绪脑来说，它们根本不在乎你是在玩手机还是在解方程，它们只在乎是否舒适。科学家废寝忘食地沉迷于研究，是因为他们真的乐在其中；跑步者风雨无阻地迈腿奔跑，是因为他们自己不愿意停下，他们正舒服着呢！</p>
</li>
<li>
<p>想办法让本能脑和情绪脑感受到困难事物的乐趣并上瘾，才是理智脑的最高级的策略[插图]。学会释放本能脑和情绪脑的强大力量，我们就会无往不胜！</p>
</li>
</ul>
<h3 id="第二章-潜意识生命留给我们的彩蛋">第二章 潜意识——生命留给我们的彩蛋</h3>
<ul>
<li>
<p>进化是一把双刃剑，意识分层在给人类带来巨大好处的同时也带来了副作用——模糊。因为处理各种信息的速度不对等，意识很难介入潜意识，而潜意识却能轻易左右意识，所以人们总是做着自己不理解的事，比如明明想去学习，结果转身就拿起了手机；明明知道有些担忧毫无意义，却总是忍不住陷入焦虑，就像身后有个影子，它能影响你，但你不知道它是什么，回头看去一片模糊。这种模糊让人心生迷茫和恐惧，而迷茫和恐惧又使我们的认知、情绪和行动遭遇各种困扰，继而影响人生的走向。模糊，正是人生困扰之源。而人生也像是一场消除模糊的比赛，谁的模糊越严重，谁就越混沌；谁的模糊越轻微，谁就越清醒。</p>
</li>
<li>
<p>学习知识的目的是“消除模糊”，而获取知识的方法也是“消除模糊”，目的和方法相统一，这几乎成了这个世界上所有能人共同遵守的学习法则</p>
</li>
<li>
<p>·《思考力》一书的作者上田正仁提示：思考力的本质就是“丢弃所有已经消化的信息，让问题的核心浮出水面”；·《刻意练习》中的核心方法论是：不要重复练习已经会的，要不断寻找那些稍有难度的部分；·《原则》一书的作者瑞·达利欧罗列了工作和生活中的原则，用以清晰地指导自己行事；·《超越感觉》一书告诉我们，想拥有清晰的逻辑，就坚持一点：凡事不要凭模糊的感觉判断，要寻找清晰的证据。</p>
</li>
<li>
<p>提升思考能力的方法正是不断明确核心困难和心得感悟，并专注于此。</p>
</li>
<li>
<p>人们总是习惯在模糊区打转，在舒适区兜圈，重复做已经掌握的事情，对真正的困难视而不见，这背后都是潜意识在操控——因为基因认为这样做耗能更低。</p>
</li>
<li>
<p>优秀的人更倾向于做高耗能的事，比如“学霸”的秘诀往往在他们的错题本上——他们更愿意花时间明确错误，并集中精力攻克。而学习成绩一般的同学更喜欢勤奋地重复已经掌握的部分，对真正的困难选择睁一只眼闭一只眼，希望能够搪塞过去，结果模糊点越积越多，以致无力应付。不难发现，“学霸”和普通同学之间的差异不仅体现在勤奋的程度上，还体现在努力的模式上：谁更愿意做高耗能的事——消除模糊，制造清晰。</p>
</li>
<li>
<p>德国心理治疗师伯特·海灵格曾这样描述人们对烦恼的态度：受苦比解决问题来得容易，承受不幸比享受幸福来得简单。这极符合人类不愿动脑的天性。因为解决问题需要动脑，享受幸福也需要动脑平衡各种微妙的关系，而承受痛苦则只需陷在那里不动。虽然被动地承受痛苦也会耗费很多能量，但在基因的影响下，人就是不喜欢主动耗能，所以美团创始人王兴的这句话引起了很多人的共鸣：多数人为了逃避真正的思考，愿意做任何事情。</p>
</li>
<li>
<p>而具体事件一旦变模糊，其边界就会无限扩大，原本并不困难的小事，也会在模糊的潜意识里变得难以解决。</p>
</li>
<li>
<p>真正的困难总比想象的要小很多。人们拖延、纠结、畏惧、害怕的根本原因往往不是事情本身有多难，而是内心的想法变得模糊。就像在3 000米跑步考核开始前，那种不知名的恐惧会让人紧张得全身发抖，而我们一旦开跑、不得不与这种恐惧正面交锋时，就会发现3 000米考核也不过如此。如果我们再积极些，学会从一开始就主动正视它、拆解它、看清它，或许那种紧张就不困扰自己了，我们甚至能从容地“享受”比赛。</p>
</li>
<li>
<p>记住，任何痛苦事件都不会自动消失，哪怕再小的事情也是如此。要想不受其困扰，唯一的办法就是正视它、看清它、拆解它、化解它，不给它进入潜意识的机会，不给它变模糊的机会；即使已经进入潜意识，也要想办法将它挖出来。所以，当你感到心里有说不清、道不明的难受的感觉时，赶紧坐下来，向自己提问。·到底是什么让自己烦躁不安？是上台演讲、会见某人，还是思绪纷乱？·具体是什么让自己恐惧担忧？是能力不足、准备不够，还是害怕某事发生？·面对困境，我能做什么？不能做什么？如果做不到或搞砸了，最坏的结果是什么？一层层挖下去，直到挖不动为止。坦然地承认、接纳那些难以启齿的想法，让情绪极度透明。虽然直面情绪不会让痛苦马上消失，甚至短时间内还会加剧痛苦，但这会让你主导形势，至少不会被情绪无端恐吓。</p>
</li>
<li>
<p>恐惧就是一个欺软怕硬的货色，你躲避它，它就张牙舞爪，你正视它，它就原形毕露。</p>
</li>
<li>
<p>很多人把行动力不足的原因归结为环境干扰或是意志力弱，其实，行动力不足的真正原因是选择模糊。</p>
</li>
<li>
<p>所谓选择模糊，就是我们在面对众多可能性时无法做出清晰、明确的选择。这样的情况很常见，比如当你心中有很多欲望、脑中有很多头绪，或者拥有可自由支配的时间时，你就会进入“既想做这个，又想做那个；既可以做这个，又可以做那个”的状态，就像自己始终站在十字路口，却不知道该往哪里去，从而使自己陷入一种不确定性之中。</p>
</li>
<li>
<p>选择模糊就是一种不确定性，而人类面对不确定性时会不自觉逃避，因为在远古时代，我们的祖先看到草丛在动但又无法得知那里面是什么时，就会产生很强的心理应激反应，来防范随时可能跳出来的狮子。为了活命，“逃避不确定性”就被写入了我们的基因，所以，当我们的头脑中有很多模糊的选项时，我们就会不自觉地选择那个最清晰、简单和确定的选项。也就是说，当我们没有足够清晰的指令或者目标时，就很容易选择享乐，放弃那些本该坚持但比较烧脑的选项。</p>
</li>
<li>
<p>在现代生活中，要想让自己更胜一筹，就必须学会花费更多的脑力和心力去思考如何拥有足够清晰的目标。我们要把目标和过程细化、具体化，在诸多可能性中建立一条单行通道，让自己始终处于“没得选”的状态。[插图]</p>
</li>
<li>
<p>人生就是一场消除模糊的比赛，我们比拼的不仅仅是成长的速度，还有成长的模式。在这条赛道上，领先的群体都有意无意地做着同一件事：消除认知、情绪和行动上的模糊。消除模糊需要主动反本能，所以这必然是一条更难走的路。不过你也无须害怕，鼓起勇气面对就好了。</p>
</li>
<li>
<p>潜意识没有思维，只关心眼前的事物，喜欢即刻、确定、简单、舒适，这是属于天性的部分，同时，它处理信息的速度又极快，至少可达11 000 000次/秒，能极其敏锐地感知很多不易察觉的信息，这是属于感性的部分。而意识，即我们的理性思考，处理信息的速度只有40次/秒，潜意识是它的275 000倍，二者的能力有着天壤之别。</p>
</li>
<li>
<p>比如当你第一次见到某人时感到些许不适，很快你就露出了礼貌的微笑，这表明潜意识察觉到了一些不良信息，但这个过程转瞬即逝，思维根本察觉不到，反而给出一大堆分析和理由，让自己接受对方，结果往往事与愿违。</p>
</li>
<li>
<p>“凭感觉”——察觉潜意识发出的信息。</p>
</li>
<li>
<p>凭感觉学习。</p>
</li>
<li>
<p>所谓“熔断不读书法”，意思就是在读书时一旦看到有启发的内容，就触发熔断点，立刻停止读书。停止读书之后做什么呢？围绕这个触发点对自己提问。·为什么刚才这个点让我有启发？·我能够把这个启发点用在3个不同的事情上吗？·这个启发点有没有其他类似的知识？</p>
</li>
<li>
<p>他又提出：无论在生活中还是在学习上，凡是被某件事击中，“动了感情”，就要有意识地提醒自己追问原因。·为什么这个电影桥段会让我感动？发生了什么？·为什么这个产品让我这么喜欢？是什么让它与众不同？·为什么我不由自主地沉溺于这段剧情了？</p>
</li>
<li>
<p>这就是高手学习的方法：先用感性能力帮助自己选择，再用理性能力帮助自己思考。文中的触动来自感性，而提问则来自理性，感性在前，理性在后，这背后的原理就是通过捕捉潜意识发出的信号进行感知。</p>
</li>
<li>
<p>“不管你现在是什么水平，这一招都管用——就是凭感觉！那些一眼就能看出答案的题目，不用理它；一眼看过去就头痛、不知道在说什么的题目，也不用理它；只有那种大致能看出点思路，但又要动点脑筋的题目，一定要多做。这个就是中间地带，是你能够进步最快的地方。”</p>
</li>
<li>
<p>“凭感觉”之所以被称为顶级的方法，是因为它能帮我们感知真正适合自己并需要的东西，让自己处于学习的“拉伸区”。如果单纯运用理性，我们通常会向优等生看齐，把眼光放在那些最难的题目上，想着如何追赶他们；如果顺从天性，我们就会在最简单的题目上打转（见图2-1）。[插图]图2-1　理性、感性、天性的选择倾向</p>
</li>
<li>
<p>更好的读书方法或许就是你在读完整本书后过几天再问自己：现在你印象最深的触动点是什么？牢牢抓住这个触动点，去关联、去实践，就会获得最大的收获，而其他的内容则可以先放到一边。这也是我自己的读书方法——只取一个全书最触动自己的点，然后尽可能去实践、改变。这样读书不仅收获更大，而且也不会焦虑。</p>
</li>
<li>
<p>潜意识的感性总能帮我们发现什么是真正适合自己的，从而引导精力投入，快速提升自己，因为在拉伸区内学习难度最小、需求最贴合、见效也最快，很容易产生心流。可见，学习虽然不是一件轻松的事，但在合适的区域内，我们依旧可以体验到轻松和有趣，如果你感受到的总是痛苦和无趣，那十有八九是感觉不对——要么在困难区煎熬，要么在舒适区打转。</p>
</li>
<li>
<p>一个人若是没有人生目标，纵然每天有吃、有喝、有书读、有班上，也会像一个迷失的人一样，内心没有喜悦、生活没有激情，甚至会厌恶自己，因为目标是存放我们热情和精力的地方。</p>
</li>
<li>
<p>真正的觉醒者往往会有意无意地用感知力来代替思考力，比如《美好人生运营指南》一书的作者一稼就提出了6条寻找人生使命的建议。·这个世界有很多事情可以做，你最想帮助哪些人？·什么事让你废寝忘食？·你在做什么事情的时候最让自己感动？·你最让人感动的时刻是什么？·如果没有任何经济压力，你会如何度过余生？·闲暇的时候，你关注最多的是哪方面的信息？</p>
</li>
<li>
<p>我们需要用心去感受什么事情让自己最触动，而不是用脑去思考什么事情最有利。理智的分析和计算无法解出内心的真正需求，唯有感性的觉知和洞察才能让答案浮出水面。而且正确的答案往往都是利他的，因为真正长久的人生意义和幸福只能从他人的反馈中获得。</p>
</li>
<li>
<p>《坚毅》一书的作者卡洛琳·亚当斯·米勒提出了3个类似的问题。·设想你即将离开世界，回首一生会为什么事情而后悔？·想一想你最喜欢的人物是谁？·你年轻的时候是怎么度过闲暇时光的？回答这3个问题同样需要我们动用感知力而不是思考力，因为直视死亡可以简化一切事物，让自己把注意力重新集中在真正重要的事情上；对于你喜欢的人物，不管是虚构的还是真实的，只要让你深深地着迷，就可以从这些人物身上反射出内心理想的自己；而年轻的时候没有家庭、工作负担，那时的追求更加遵从内心，不会受外界压力的干扰。</p>
</li>
<li>
<p>我们可以发现，理性思维虽然很高级，但在判断与选择方面可能并不具有优势，它那蹩脚的性能实在无法与灵敏快速的感性媲美。所以，先用感性选择，再用理性思考，或许是一个更好的策略，尤其是在做那些重大选择时。诚如洪兰教授的建议：小事听从你的脑，大事听从你的心。这话不无道理。</p>
</li>
<li>
<p>如何捕捉感性</p>
</li>
<li>
<p>(1)“最”字法。</p>
</li>
<li>
<p>(2)“总”字法。</p>
</li>
<li>
<p>(3)无意识的第一反应。</p>
</li>
<li>
<p>(4)梦境。</p>
</li>
<li>
<p>(5)身体。</p>
</li>
<li>
<p>(6)直觉。</p>
</li>
</ul>
<h3 id="第三章-元认知人类的终极能能力">第三章 元认知——人类的终极能能力</h3>
<ul>
<li>
<p>元，在汉语中有“头、首、始、大”的意思，即最高级别的，比如一个国家的最高领导人会被称为国家元首。元认知，就是最高级别的认知，它能对自身的“思考过程”进行认知和理解（见图3-1）。[插图]图3-1　普通认知与元认知的区别</p>
</li>
<li>
<p>当一个人能主动开启第三视角、开始持续反观自己的思维和行为时，就意味着他真正开始觉醒了，他有了快速成长的可能。</p>
</li>
<li>
<p>反观，是元认知的起点。当你开始反观自己的思考时，神奇的事情发生了：你能意识到自己在想什么，进而意识到这些想法是否明智，再进一步纠正那些不明智的想法，最终做出更好的选择。</p>
</li>
<li>
<p>如图3-2所示，这才是高级的元认知——时刻帮你从高处、深处、远处看待现在的自己，让自己保持清醒、不迷失，保持动力、不懈怠，保持平和、不冲动。有这样的能力加持，你会差吗？[插图]图3-2　元认知的维度</p>
</li>
<li>
<p>如果说学习和反思是静态的，那处于当下的、动态的自已又该如何主动运用元认知呢？很简单，启用你的“灵魂伴侣”啊！让他时刻监控你，就像电脑系统里的杀毒软件，监控着你的每一次操作，一旦发现可疑文件就立即发出警报。</p>
</li>
<li>
<p>你需要查找一份资料，打开手机，看到微信上有个小红点，不自觉地点进去，发现有人在朋友圈里发了一段搞笑视频，忍不住点开看了一下，又发现这个视频的背景音乐是自己找了很久的曲子，于是打开音乐软件去搜索这首歌曲……不知不觉，半小时过去了，之前要查找资料的事早已忘得一干二净。</p>
</li>
<li>
<p>我们总是这样，一开始只想找一根绳子，最后却牵出一头大象。有时候你会沉迷于微博、头条、手游而无法自拔；有时候你会这里弄一下、那里弄一下，忙得一团糟，却不知道自己到底在忙什么；还有的时候，你会困在某种情绪之中，无端地消耗着自己……这些都是元认知能力不足的表现——顺着自己的本性做喜欢和舒服的事，精力发散，缺乏觉知，任何偶发的干扰都会分散注意力。</p>
</li>
<li>
<p>如果有个“灵魂伴侣”一直在监控你，你就能审视自己的行为，从过程中跳出来，告诉自己：“这个事情可做可不做，还是先忍一下，等做完重要的事情再说；停下来，先想清楚什么事情是最重要的，不能盲目地做那些容易但不重要的事；再过几年回头看，现在的烦恼不值一提，与其消耗自己，不如把情绪收起来，干点有用的事……”</p>
</li>
<li>
<p>元认知能力总能让你站在高处俯瞰全局，不会让你一头扎进生活的细节，迷失其中。如果你足够细心，还会发现未来视角总是当前行动的指南针，它可以在茫茫的生命中为你导航，让你主动选择去做那些更重要而不是更有趣的事情。</p>
</li>
<li>
<p>监控自己的注意力，然后将其集中到自己需要关注的地方。</p>
</li>
<li>
<p>自我觉察只是元认知能力的基本盘，在实际生活中，元认知能力还能在自我控制方面提供强大的指导，可以说，元认知能力就是觉察力和自控力的组合。所以从实用角度讲，元认知能力可以被重新定义为：自我审视、主动控制，防止被潜意识左右的能力。</p>
</li>
<li>
<p>早上醒来时，我们的第一反应通常都是不假思索地去拿手机，这种不需要思考就能做出的习惯性反应，就来自潜意识的左右。实际上，这个时候我们最应该做的事情是起床、穿衣服、洗漱，等一切收拾妥当了再来查看信息，否则很可能受各种信息的牵引去看这个、看那个，最后，几十分钟过去了，人还在被窝里。在这一刻，我们有自我审视和主动控制的能力吗？好像没有。</p>
</li>
<li>
<p>让我们把时间拉长到一天这个跨度上去看看。很多人经常会在一天临近结束的时候发出灵魂拷问：我这一天都干了什么？最重要的事情好像没做多少，乱七八糟的琐事却做了一大堆！当下幡然醒悟、痛下决心，提醒自己从明天开始一定要先做最重要的事，但是第二天又不知不觉地陷入了这种怪圈。这个时候，我们似乎依旧被潜意识支配，无法自控。</p>
</li>
<li>
<p>现在我们再把时间拉长到做成一件事或实现人生目标的跨度上。很多人为了获得美好的人生，常常给自己立下早起、跑步、阅读、写作等目标，但是没过几天就放弃了，因为那些目标大多是受大环境影响而跟风设定的——别人说好，自己也想要，但实际上，自己并不需要。仔细想想就会发现，这仍然是我们的第一反应，是潜意识在左右我们，我们并没有真正进行自我审视和主动控制。</p>
</li>
<li>
<p>理智脑的战斗力其实表现在两方面：一方面是侧重学习、理解、记忆、运算的认知能力，即我们在校学习时主要锻炼的部分，另一方面则是侧重观察、反思、判断、选择的元认知能力（见图3-3）。[插图]图3-3　普通认知与元认知是理智脑战斗力的两个表现</p>
</li>
<li>
<p>一个人要想掌握命运之船的风帆，就必须主动、刻意地锻炼自己的元认知能力，让理智脑更多地参与大脑的决策，掌握大脑的主导权，这样，我们就会比一般人走得更快、更远。</p>
</li>
<li>
<p>在这个主导权易手的过程中，一个人会表现出的明显特征是：能够主动控制注意力，不会被随机、有趣的娱乐信息随意支配。比如，当我们漫步街头时，元认知能力弱的人总会被路边的音乐、屏幕广告、叫卖声或突发事件轻易地吸引，而元认知能力强的人则会花那么一两秒去思考这事值不值得关注。</p>
</li>
<li>
<p>“教育的意义就是教你在遇到一件事的时候如何看待它。当你对这件事进行反应的时候，总是有你自己的天性在里面，比如说有人骂你，你就想骂回去，但是你在这个反应当中会有一个哪怕是零点几秒的间隔去思考或者审视，这个间隔就是你获得的教育或者经历的意义。”</p>
</li>
<li>
<p>为什么抖音、快手等短视频App让人看得根本停不下来？因为一个视频结束后系统会立即自动跳到下一个，在整个过程中，大脑都被本能和情绪劫持，理智脑根本没有主动启动的机会。如果你希望自己能从娱乐中抽身，只需提前告诉自己：“这个视频结束后暂停几秒。”一旦理智脑拥有了审视和反思的时间，我们通常都能控制住自己。</p>
</li>
<li>
<p>每当遇到需要选择的情况时，我们要是能先停留几秒思考一下，就有可能激活自己的理智脑，启用元认知来审视当前的思维，然后做出不一样的选择。</p>
</li>
<li>
<p>一定要在选择节点上多花“元时间”。</p>
</li>
<li>
<p>元时间通常分布在“选择的节点”上，比如一件事情、一个阶段或一天开始或结束时。善用这些时间会极大程度地优化后续时间的质量。</p>
</li>
<li>
<p>想清楚。</p>
</li>
<li>
<p>在选择的节点审视自己的第一反应，并产生清晰明确的主张。</p>
</li>
<li>
<p>要想清楚，不仅要审视第一反应，同时还要有清晰明确的主张。</p>
</li>
<li>
<p>元认知能力强的一个突出表现是：对模糊零容忍。</p>
</li>
<li>
<p>想尽一切办法让自己找出那个最重要的、唯一的选项，让自己在某一个时间段里只有一条路可以走。这道理很简单，既然权重都差不多，那么做哪件事都没有损失。犹豫不决，什么都想做又什么都做不好，才是最大的损失。</p>
</li>
<li>
<p>自己行动力弱的时候，脑子里对未来的具体行动肯定是模糊不清的。</p>
</li>
<li>
<p>模糊，不仅需要在这些小事上消除，在选择人生目标等大事上也是如此。现实生活中，我们总是想都不想就一头扎进具体事情里，对什么事情更重要、什么事情最重要、做这件事对自己到底意味着什么等长远意义却极不清楚。</p>
</li>
<li>
<p>成为思维舵手有3种方法。·针对当下的时间，保持觉知，审视第一反应，产生明确的主张；·针对全天的日程，保持清醒，时刻明确下一步要做的事情；·针对长远的目标，保持思考，想清楚长远意义和内在动机。</p>
</li>
<li>
<p>元认知能力强的人就是这样：无论是当下的注意力、当天的日程安排，还是长期的人生目标，他们都力求想清楚意义、进行自我审视和主动控制，而不是随波逐流。</p>
</li>
<li>
<p>高尔基曾经说：每一次克制自己，就意味着比以前更强大。我以前不是很理解这句话的意思，但是现在懂了。因为每克制自己一次，就相当于进行了一次自我审视和主动控制，相当于进行了一次锻炼。元认知能力要是能经常锻炼，我们理智脑的自控力可不就越来越强大了嘛！</p>
</li>
</ul>
<h3 id="第四章-专注力情绪和智慧的交叉地带">第四章 专注力——情绪和智慧的交叉地带</h3>
<ul>
<li>
<p>随着行动越来越熟练，我们在行动上集中的注意力越来越少，分散在其他地方的注意力越来越多，于是我们不再去耐心感受行动。从此，分心代替专注，身心开始分离（见图4-1）。[插图]图4-1　身心合一与身心分离</p>
</li>
<li>
<p>分心走神的原因无非两个：一是觉得当下太无聊，所以追求更有意思的事情；二是觉得当下太痛苦，于是追求更舒适的事情。因为身体受困于现实，只好让思想天马行空。</p>
</li>
<li>
<p>无论我们身在何处、经历着什么，只要现实中稍不如意，我们就可以让思绪上天入地，瞬间逃离困境，享受想象中的舒适和快感。换句话说，就是分心走神的成本太低，而人的天性又是急于求成和避难趋易的，所以在默认情况下，我们都会不自觉地待在精神舒适区内。可惜“走神一时爽”，事后我们就得承担走神带来的各种损失，其中最大的损失莫过于生命质量变差。因为走神时，我们要么沉浸过去，要么担忧将来，要么幻想不可能实现的情况，走神可以让我们活在任何时候，唯独不能让我们活在当下。</p>
</li>
<li>
<p>背景关联记忆的一个副作用就是：我们感观所听到、看到、摸到、尝到、嗅到的任何信息，都会引出一些其他记忆内容，又因为感观受潜意识控制，而潜意识永不消失，所以只要我们醒着，这种分心走神随时都可能发生。这也是我们需要锻炼元认知的原因，因为成长就是克服天性的过程，我们必须用觉知力和自控力去约束天性，否则就会被潜意识左右而不自知。</p>
</li>
<li>
<p>让感受回归行动。</p>
</li>
<li>
<p>跑步时，把感受收回来，悉心体会抬腿摆臂、呼吸吐纳和迎面的微风；睡觉时，把感受收回来，悉心感受身体的紧张与松弛；吃饭时，把感受收回来，感受每一口饭菜的香甜，体会味觉从有到无的整个过程，不要第一口还没吃完就急着往嘴里塞第二口饭菜。</p>
</li>
<li>
<p>身体感受永远是进入当下状态的最好媒介，而感受事物消失的过程更是一种很好的专注力训练。它提示我们，身心合一的要领不仅是专注于当下，更是享受当下，而这种享受必将使我们更从容，不慌张</p>
</li>
<li>
<p>慢慢练习收回感受，让注意力回到当下，我们的烦恼就会慢慢减少，精力就会更加旺盛，情绪就会更加平和，身体就会更加柔软，感知就会更加灵敏，思考就会更加深入……这个习惯涉及生活的方方面面，改变它就相当于改变了自己的底层行为模式，其力量不可小觑。</p>
</li>
<li>
<p>心理学家安德斯·艾利克森和科学家罗伯特·普尔经过大量的研究后指出：所谓天才，其实并不神秘，其本质是“正确的方法”加上“大量的练习”。换言之，我们没有变得像天才般卓越是因为方法不对或练习不够。</p>
</li>
<li>
<p>“正确的方法”通常具有以下四个特征。第一，有定义明确的目标。比如你要练琴，那就告诉自己：“连续三次不犯任何错误、以适当的速度弹奏完曲子。”而不是“我要练琴半小时”这样宽泛的目标。目标定义越明确，注意力的感知精度就会越高，精力越集中，技能越精进。如果目标太大，那就将它分解成小目标，这样做也是为了使目标更具体、精细。</p>
</li>
<li>
<p>第二，练习时极度专注。谁都知道专注的重要性，但沉浸的关键是要做到“极度”专注，也就是说，在短时间内投入100%的精力比长时间投入70%的精力好，因为专注的真正动力并不是毅力和耐心，而是不断发现技巧上的微妙差异和持续存在的关注点，精力越集中则感知越细微。</p>
</li>
<li>
<p>两种模式好比手电筒里打出来的光：专注模式下光束紧密，穿透力强，径直打在一小块区域上；如果拨到发散模式，光柱就会散开，虽然光的强度会降低，但照亮的范围更广。要注意的是，一个手电筒不能同时照出两种光。</p>
</li>
<li>
<p>所以变聪明的秘诀就是：先保持极度专注，想不出答案时再将注意力转换到另一件与此毫不相干的事情上。即事前聚精会神，让意识极度投入；事后完全忘记，让意识彻底撒手。这样，灵感和答案就会大概率地出现。</p>
</li>
<li>
<p>很多例子都表明，科学发现或其他智力上的突破都是在当事人毫无期待、正在想别的事情的时候出现的。</p>
</li>
<li>
<p>好的学习模式是，在做A的时候彻底关注A，在做B的时候彻底关注B,A和B两件事情之间有非常清晰的界线。如果在做A的时候想着B，在做B的时候又想着A，那么意识工作的深度不够，潜意识也无法顺利开启，这种边界不清的习惯对能力提升伤害很大。李大钊也说过：“要学就学个踏实，要玩就玩个痛快！”说明界线分明的习惯对人性情和能力的培养都很有好处。</p>
</li>
<li>
<p>第三，能获得有效的反馈。一般而言，不论做什么事情我们都需要反馈来准确识别自己在哪些方面还存在不足，以及为什么会存在不足。缺少反馈，我们既容易出错，又容易走神，而且很难快速提升个人能力。因此，有教练指导是极好的事，有老师批评也是好的，闭门造车式的练习不仅容易让人分心走神，也会让自己长期在低水平层面徘徊。所以，想方设法得到及时、有效的指导和反馈是不断精进的重要条件。如果条件有限，反馈也可以通过书籍影像、与他人交流或者自我反思来获取。</p>
</li>
<li>
<p>第四，始终在拉伸区练习。一味重复已经掌握的事情是没有意义的，但挑战太难的任务也会让自己感到挫败，二者都无法使人进入沉浸状态，好的状态应该介于二者之间。著名心理学家米哈里·契克森米哈赖在《心流》一书中提出这样一个模型（见图4-3）：当人们对当前的活动感到厌倦时，说明应该提高难度；当人们对当前的活动感到焦虑时，说明应该保持这个水平专注练习，如此反复交替就可以让自己进入心流通道，沉浸其中。[插图]图4-3　心流通道</p>
</li>
<li>
<p>我们每天都要做那些让自己感到有些困难但又可以通过努力来完成的事情，即跳出舒适区，避开困难区，处在拉伸区。</p>
</li>
<li>
<p>刻意练习四要素</p>
</li>
</ul>
<blockquote>
<blockquote>
</blockquote></blockquote>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032213892.png"></p>
</li>
<li>
<p>我先听她弹一遍，发现有很多不熟练、易出错的地方，于是我要求她今天只练第一节，后面的先不练（把大目标拆分成小目标），然后只练刚才弹错的地方（在拉伸区练习），只要能连续流畅地弹3遍不出错就算完成（目标具体清晰）。练习过程中，我会及时纠正她的指法和按键错误（及时有效的反馈），这样，她很快进入了专注状态（沉浸其中），不一会儿就把第一节弹得很好了。</p>
</li>
<li>
<p>大量的练习。</p>
</li>
<li>
<p>审视自己的注意力——是被动吸引还是主动选择？·审视自己的沉浸度——是分心走神还是极度专注？·审视自己的练习量——是浅尝辄止还是大量投入？</p>
</li>
</ul>
<h3 id="第五章-学习力学习不是一味地努力">第五章 学习力——学习不是一味地努力</h3>
<ul>
<li>
<p>最佳的学习区域在拉伸区内、舒适区边缘，在这个区域，我们既有成就又有挑战，进步最快。事实上，它就是难易匹配的意思：既不要太难，也不要太容易，难易适中的地带才是学习的心流通道。</p>
</li>
<li>
<p>很多缺少经历的年轻人都是这样的，总想同时实现太多、太大的目标，还希望在很短的时间内实现，于是不自觉地把自己推到了困难区内。他们总是兴冲冲地开始，热火朝天地做上几天，然后很快就没劲了——做事情半途而废就是这个原因。</p>
</li>
<li>
<p>比如很多人都想通过跑步来减肥，但有的人很刻苦，上来就猛冲，以为那种痛苦感就是努力的证据，其实不然，专业教练给出的方法看上去更像是一种偷懒的做法。比如教练会建议你先慢跑，到稍微气喘的时候就改为快走，等气匀了再改为慢跑，如此反复，运动半个小时。因为就减肥而言，有氧运动前20分钟消耗的主要是身体里的糖，30分钟之后消耗脂肪的比例才会有较大幅度的上升。所以我们只需每次到舒适区的边缘坚持一下，然后回到舒适区停留一下，调整好了再到舒适区边缘……如此反复。在接下来的10~15分钟，如果体力允许，就尽量快跑，或者强度至少比前30分钟再大一点，以便消耗更多的脂肪，因为此时身体已经适应了一定的强度，可以离舒适区边缘再远一些。</p>
</li>
<li>
<p>我们就应该花大量的时间去梳理哪些内容处在自己的拉伸区，即梳理那些“会做但特别容易错或不会做但稍微努力就能懂”的内容，然后在这个区域内努力。</p>
</li>
<li>
<p>“你在孩子的学习上有没有采取什么特别的方法？”没想到他干脆地说：“有的！”我竖起耳朵继续听，他说：“就两条，一是像对待考试一样对待家庭作业；二是有问题只找主观原因。”</p>
</li>
<li>
<p>距离我们太远的事物，我们通常无法把握，无论它们是令人痛苦的还是令人享受的。</p>
</li>
<li>
<p>做选择是一件极为耗能的事情，如果没有与之匹配的清醒和定力，绝大多数人最终都会被强大的天性支配，去选择娱乐消遣。在有约束的环境下我们反而效率更高，生活更充实。</p>
</li>
<li>
<p>能解释的现象越多，这个概念就越底层。</p>
</li>
<li>
<p>不管做什么，不管当前做得怎么样，只要让自己处在舒适区的边缘持续练习，你的舒适区就会不断扩大，拉伸区也就会不断扩展，原先的困难区也会慢慢变成拉伸区，甚至是舒适区，所以成长是必然的。</p>
</li>
<li>
<p>速成是不可能的。</p>
</li>
<li>
<p>不管你遇到的是什么问题，其根源都是一样的，那就是：这个问题太大、太模糊。所以，你只要拆解目标——把大目标拆分为小目标，任务就会立即从困难区转移到拉伸区，这样你就愿意行动了。不信的话，你可以细心观察一下，几乎所有的行动达人都是拆解任务的高手。</p>
</li>
<li>
<p>胡适的英语老师、出版家王云五先生是这样自学英语写作的：找一篇英文的名家佳作，熟读几次以后，把它翻译成中文；一星期之后，再将中文反过来翻译成英文，翻译期间绝不查阅英语原文；翻译好后再与原文比对，找出自己翻译的错误、失误和不够精良之处。如此反复练习，王云五先生积累了扎实的英文功底，为日后从事英语教学和出版事业打下了坚实的基础。在那个科技、信息远不如今天发达的年代，有限的学习条件迫使人们静下心来深度学习。</p>
</li>
<li>
<p>一小部分知识精英依旧直面核心困难，努力地进行深度钻研，生产内容；而大多数信息受众始终在享受轻度学习，消费内容。如果我们真的希望在时代潮流中占据一席之地，那就应该尽早抛弃轻松学习的幻想，锤炼深度学习能力，逆流而上，成为稀缺人才，否则人生之路势必会越走越窄。</p>
</li>
<li>
<p>被动学习：如听讲、阅读、视听、演示，这些活动对学习内容的平均留存率为5%、10%、20%和30%。主动学习：如通过讨论、实践、教授给他人，将被动学习的内容留存率提升到50%、75%和90%。[插图]图5-1　学习金字塔</p>
</li>
<li>
<p>如图5-2所示，以阅读为例，从浅到深依次为：听书、自己读书、自己读书+摘抄金句、自己读书+思维导图/读书笔记、自己读书+践行操练、自己读书+践行操练+输出教授。[插图]图5-2　阅读金字塔</p>
</li>
<li>
<p>若是读完从不回顾、思考，只满足于输入的过程，这类学习的知识留存率很低。几天之后就想不起自己读了什么。更糟的是，这种努力会让人盲目追求阅读的速度和数量，让人产生勤奋的感觉，实际上，这是低水平的勤奋，投入越多损失越大。</p>
</li>
<li>
<p>这类人能够自己阅读，也做读书笔记或思维导图，但遗憾的是，他们的读书笔记往往只是把书中的内容梳理罗列了一番，看起来更像是一个大纲。很多人醉心于此，似乎对全书的知识了然于胸，殊不知，自己只是做了简单的搬运工作而已。虽然这种做法在一定程度上属于主动学习，但它仅仅是简单的知识陈述，与高级别的知识转换有很大的不同。</p>
</li>
<li>
<p>可见“缝接”是深度学习的关键，而大多数人只完成了“获取知识”，却忽略了“缝接知识”这一步，因此，他们的学习过程是不完整的。</p>
</li>
<li>
<p>“教”是最好的“学”，如果一件事情你不能讲清楚，十有八九你还没有完全理解。当然，教的最高境界是用最简洁的话让一个外行人明白你讲的东西。</p>
</li>
<li>
<p>逼迫自己获取高质量的知识以及深度缝接新知识，再用自己的语言或文字教授他人，是为深度学习之道。</p>
</li>
<li>
<p>深度学习有以下3个步骤：(1)获取高质量的知识；(2)深度缝接新知识；(3)输出成果去教授。</p>
</li>
<li>
<p>正确的行动往往是反天性的，让你觉得舒服和容易的事往往得不到好结果，而一开始你认为难受和困难的事才能让你真正产生收获，所以我们可以通过以下几个方法逐步改进。</p>
</li>
<li>
<p>一是尽可能获取并亲自钻研一手知识。</p>
</li>
<li>
<p>读书这件事最好不要请人代劳，从长远看，终归是要自己获得挖矿的能力的。</p>
</li>
<li>
<p>二是尽可能用自己的话把所学的知识写出来。</p>
</li>
<li>
<p>当一个你精心打磨的作品打动了别人，它产生的影响力将远比每天都写但缺乏深度的思考要大得多。</p>
</li>
<li>
<p>写作具有复利效应，我们写的文章随时可能被他人读到，这样也间接达到了讨论交流和教授他人的目的。</p>
</li>
<li>
<p>三是反思生活。</p>
</li>
<li>
<p>人与人之间的差距不是来自年龄，甚至不是来自经验，而是来自经验总结、反思和升华的能力。</p>
</li>
<li>
<p>持续反思让我对生活细节的感知能力变得越来越强，从生活中获得的东西也越来越多。</p>
</li>
<li>
<p>深度学习除了能让我们不再浮躁，能磨炼理智，还能带来诸多好处，比如跨界能力的提升。</p>
</li>
<li>
<p>深度学习还能让人产生更多灵感。</p>
</li>
<li>
<p>只有在自己的领域探索得足够深入时，灵感才可能在潜意识的帮助下显现。</p>
</li>
<li>
<p>深度学习还能让我们看到不同事物之间更多的关联，产生洞见。</p>
</li>
<li>
<p>如果自己在一些领域的认知积累得足够多，那么，即便是面对影视节目、娱乐八卦或新闻热点等这些分散人们注意力的事物时，也同样能调动高级认知，把它们与有益的思考关联起来，产生更深刻、更独特的见解。</p>
</li>
<li>
<p>深度之下的广度才是有效的。</p>
</li>
<li>
<p>专注于深度学习，同时对浅学习保持开放。</p>
</li>
<li>
<p>关联，正是高手们的秘密，但因形式隐蔽，常不为人所知，故而形成了暗箱。</p>
</li>
<li>
<p>在《这样读书就够了》一书中，赵周提出了读书的三个步骤：·用自己的语言重述信息，即找到触动自己的信息点；·描述自己的相关经验，即关联生活中的其他知识；·我的应用，即转化为行动，让自己切实改变。</p>
</li>
<li>
<p>深度学习的三个层次：·知道信息点·关联信息点·行动和改变</p>
</li>
<li>
<p>孤立的知识就像沙粒，只有关联才能将其聚沙成塔，形成稳固的知识晶体，最终构建自己的认知体系（见图5-3）。[插图]图5-3　关联是学习的重要环节</p>
</li>
<li>
<p>通过大量的重复动作，大脑中两个或者多个原本并不关联的神经元经过反复刺激产生了强关联。如果没有关联这个过程，就算有再多脑细胞，你也不会变得更聪明。</p>
</li>
<li>
<p>因为单纯阅读时，人容易满足于获取新知识，而一旦开始写作，就必须逼迫自己把所学的知识关联起来，所以写作就是一条深度学习的自然路径。</p>
</li>
<li>
<p>绝大多数人习惯以孤立的思维看待事物，喜欢花大量时间收集和占有信息；而另一批先行者则更喜欢拨弄信息之间的关联，从而在不知不觉间变得聪明了起来。</p>
</li>
<li>
<p>只有真正和自己有关的内容才对自己有用，在这个注意力非常匮乏的时代，没有必要把所有的书或是书中所有的内容都读完。</p>
</li>
<li>
<p>知识的获取不在于多少，而在于是否与自己有关联，以及这种关联有多充分。</p>
</li>
<li>
<p>你需要明确的目标或强烈的需求。</p>
</li>
<li>
<p>如何获取关联能力</p>
</li>
<li>
<p>首先，手中有锤子。</p>
</li>
<li>
<p>其次，输入足够多。</p>
</li>
<li>
<p>再次，保持好奇心。</p>
</li>
<li>
<p>最后，常说一句话。</p>
</li>
<li>
<p>他们都有意无意地坚持着这个思维准则：但凡收获一个感悟、了解一个观点或是学到一个知识，只要触动了自己，就要想办法让它效率最大化，而效率最大化的办法就是主动关联到别处，并让自己的行动发生改变。所以你不妨也把这句话当作口头禅，时常问自己：这个道理还能用在什么地方？</p>
</li>
<li>
<p>当知识能够帮助你做实际决策的时候，它才是你的知识。</p>
</li>
<li>
<p>我们不需要全盘掌握他人的知识体系，只需要掌握那些最能触动自己、离自己需求最近的知识（见图5-6）。[插图]图5-6　建立认知体系，关联各家的“触动碎片”</p>
</li>
<li>
<p>体系的本质就是用独特的视角将一些零散的、独立的知识、概念或观点整合为应对这个世界的方法和技巧。</p>
</li>
<li>
<p>这就是搭建个人认知体系的真相：打碎各家的认知体系，只取其中最触动自己的点或块，然后将其拼接成自己的认知网络。</p>
</li>
<li>
<p>只要学的东西是能触动自己并解决实际问题的，不管是读书、上课，还是自我反思或与人交谈，都是贴近自己的成长方式。这样成长不仅高效，而且非常“接地气”，甚至能消除学习的焦虑。</p>
</li>
<li>
<p>我建议每一个想成长的人都去进行每日反思，因为它可以提高自己对生活细节的感知能力，不会让日子像流水一样哗哗流过而什么都没留下。不过，和一般的日志不同，每日反思不是记流水账，而是留意每天最触动自己的那件事，不管是好的启发还是坏的体验，都写下来复盘，写得越细越好。一个触动点若是能转化成一个认知晶体，我们的生命质量和密度将远远超过那些不反思的人。面对生活中信息的滚滚洪流，触动真是最好的筛选器，它能让我们免受洪流的冲击，从容而体面地行走在人间。</p>
</li>
<li>
<p>一是用自己的语言重新解释新知识，这会促使自己原有的知识体系对新知识做出反应。如果能用自己的语言把一个知识、一个道理、一件事情说清楚，让外行人也能听懂，那么这些知识、道理、事情十有八九会成为自己的一部分。经常输出的人往往成长得很快，因为他们总是不断在新旧知识之间建立连接。</p>
</li>
<li>
<p>如果你在读书、写作、交谈的时候想到了一个观点，哪怕你记不清具体的内容，只有一条微弱的线索，你也要极端重视这些内容，因为那些能在需要的时候被提取的知识，是与你真正产生触动的知识，你们之间宝贵的连接还在，所以要想办法主动关联和强化。</p>
</li>
<li>
<p>很多人读书的时候往往只关注自己是否理解了书中的内容，却经常忽视头脑中冒出的想法。其实这些想法是非常珍贵的，放过了它们，我们的学习效果就会大打折扣。</p>
</li>
<li>
<p>三是在生活中能够经常练习或使用这些知识，因为实践是产生强关联的终极方法。</p>
</li>
<li>
<p>学习不是为了知道，而是为了发生真实的改变。</p>
</li>
<li>
<p>你会明白，所谓的学习成长，诸如阅读、写作、反思、培养习惯、练习技能、建立认知体系，等等，本质上都是一回事：在舒适区边缘，一点一点向外扩展。</p>
</li>
<li>
<p>因为从开始排名的那一刻，人们的锻炼动机就不知不觉地发生了转移：原先纯粹是为了身体健康，享受运动带来的美好，现在却是不自觉地为了自己的成绩在排行榜上更好看，甚至有人还专门为此去买设备或用软件“刷”步数。</p>
</li>
<li>
<p>为了不陷入痛苦，我们的大脑会开启自我保护模式，在举步维艰的时候主动调整认知，给自己找借口：“学习很难，但打卡并不难啊！只要完成打卡，不就代表任务已经完成了吗？”“既然打卡就代表完成，那为什么不选这个轻松的，而非得选那个难的呢？”</p>
</li>
<li>
<p>有人去网上购买刷步神器，坐在家中就可以让自己运动步数名列前茅；有人早上5点闹钟一响就在早起群里打个卡，然后倒头继续睡；有人翻开书，拍张照，然后将照片发到朋友圈，以示自己今天读过书了……</p>
</li>
<li>
<p>人们坚持的动机，就这样不知不觉地从学习本身转移到了完成任务上，由内在需求转移到了外在形式上。</p>
</li>
<li>
<p>阿健同学正是因为没有意识到自己的学习动机已经转移，所以疑惑为什么一旦打卡中断就不愿继续行动，因为他关心的是让打卡纪录保持完整，而不是让学习过程保持完整，其实对于学习来说，偶尔中断又有什么关系呢？</p>
</li>
<li>
<p>他们起初还记得做某件事的意义，比如知道学英语是为了与外国人流利地交谈，但时间一长，目标就被简化为每天背20个单词，于是他们每天只是机械地完成、打钩，却忘了所学为何，从此陷入为学而学的境地。</p>
</li>
<li>
<p>一件事若迟迟没有完成，心里就总是记挂，期盼着早点结束；此事一旦完成，做这件事的动机就会立即趋向于零。</p>
</li>
<li>
<p>比如你每天要打卡记20个单词，如果今天时间来不及了，但为了完成打卡，你就可能随便扫几遍，告诉自己学过了，先让任务闭合再说，不然总惦记着这事，心里难受。反过来，如果今天时间非常充裕，你一早就完成了记20个单词的任务，打卡一结束，任务就闭合了，此后，你的学习动机衰减为零，你也不会想着再多做些探索。这就是打卡心态的特性：学不到，假装一下；学到了，立即停止。</p>
</li>
</ul>
<blockquote>
<blockquote>
<p>这就是打卡心态的特性：学不到，假装一下；学到了，立即停止。所以单纯抱着打卡这一任务心态去学习，很少会有强烈的主动性，毕竟在任务心态的驱使下，人们关注的是完成情况，对任务本身没有更大的热情。</p></blockquote></blockquote>
<blockquote>
<blockquote>
<p>任务心态，身心分裂</p></blockquote></blockquote>
<blockquote>
<blockquote>
<p>任务心态在某些领域是很有用的，比如军事领域。军人必须有极强的任务意识，但在个人学习成长领域，任务心态或许并不可取。</p></blockquote></blockquote>
<blockquote>
<blockquote>
<p>比如跑步时总想着还剩多少时间就可以结束，读书时总想着还剩多少页就可以完成，背单词时总想着还剩多少个就可以完事……这样的心态会使注意力处于分散状态，很难全身心投入事物本身，从而体会其中的要领和乐趣。</p></blockquote></blockquote>
<ul>
<li>
<p>有一些人能做到学习和打卡相结合，究其原因，并没有什么神秘之处，不过是因为他们的行为动机没有改变——打卡只是学习活动的附属品。</p>
</li>
<li>
<p>让自己始终处于舒适区的边缘。</p>
</li>
<li>
<p>要求自己每天只做一个俯卧撑、每天只读一页书、每天只写50个字，这种无负担的习惯养成法最终促使他拥有了良好的身材，养成了阅读习惯，还写出了自己的书。他称这种方法简单到不可能失败。</p>
</li>
<li>
<p>老师先示范左手，再示范右手，再合起来弹一遍，让我大概知道这一首曲子出来是什么样子。接下来一周我就要努力练成这样子，周末的时候验收。不通过，继续练，通过，再到下一首曲子。如此循环两年，最后练成的曲子直接达到十级。在学习过程当中，完全不接触音乐理论。</p>
</li>
<li>
<p>是否有及时、持续的正向反馈，正是产生学习效果差异的关键。</p>
</li>
<li>
<p>我们每个人从小就是这样学会说话和走路的。没有人从学拼音规则、字母发音开始学习说话，也没有人从学力学原理、肌肉控制开始学习走路，我们只是不断地模仿和练习，直接去说、去走，从环境中持续获得反馈，体会乐趣，修正不足。最终，在不知道原理的情况下，我们就会说了，也会走了，而且做得还相当不错。</p>
</li>
<li>
<p>所有处于类似困境中的学习者，无论是在校的还是在职的，无不认为只要自己努力地输入，不停地学，就一定能学有所成，然而现实总是令他们失望。他们似乎从来没有考虑过要尽快产出点什么，以换取反馈，通过另一种方式来激励自己。也许是因为在人造的学习体制内待久了，有些人很难相信“跳过原理，直接实操”的方式是有效的，他们认为这种方法不过是奇技淫巧，强大的毅力和认知才是学习的正道。</p>
</li>
<li>
<p>持续的正向反馈才能真正激发本能脑和情绪脑的强大行动力。</p>
</li>
<li>
<p>人类强大的本能脑和情绪脑虽然没有思维、短视愚笨，时常沉溺于游戏、手机、美食、懒觉……但它们超强的欲望和情绪力量却是非常宝贵的行动力资源，如果能让它们感受到学习的乐趣，它们同样会展现强大的行动力，让自己像沉迷娱乐一样沉迷于学习。</p>
</li>
<li>
<p>科学的学习策略是产出作品、获取反馈，驱动本能脑和情绪脑去“玩玩玩”，而不是一味地努力坚持，让理智脑苦苦地去“学学学”。</p>
</li>
<li>
<p>以前你学习英语可能会选择每日打卡的方式，但现在你可能会选择直接用：直接翻译一段美文、查询英文文档、阅读英文原版书，或者把手机语言设置成英文……这么做当然会造成一些困难，但为了解决问题，你必定会想办法补全相关知识，所以你的学习行为都能得到即时反馈：要么帮自己或他人解决了一个问题，要么产出了一个有价值的作品，这些反馈带给自己的必然是强烈的成就感和继续行动的欲望。</p>
</li>
<li>
<p>想创造全新的学习动机，就得放弃一味打卡输入的做法，想办法直接运用或产出作品，获取反馈。</p>
</li>
<li>
<p>我都会建议他们去产出点什么，要么去说、要么去写、要么去分享视频……总之不能一味地学学学而毫无产出，因为没有反馈的学习不仅是痛苦的，而且十有八九会失败。</p>
</li>
<li>
<p>·教是最好的学；·用是最好的学；·输出倒逼输入；·请用作品说话……</p>
</li>
<li>
<p>那些先行者确实都有相同的品质，他们在学习的时候经常不按常理出牌，不管是不是新知识、技能，他们都直接用、直接做。当然，一开始常常用不好、做不好，但他们肯定要“鼓捣”出一个东西，然后抛出去获取反馈，不断打磨迭代。这真的是见效最快的学习方式！</p>
</li>
<li>
<p>古典在《跃迁》一书中这样描述高手的破局战略：找到自己的高价值区——让自己成为某个领域的头部——再借助头部效应的系统推力，从一个小头部不断地向大头部移动，实现跃迁。而抢占头部最好的途径莫过于持续打磨高价值的作品，凭借作品换取反馈。</p>
</li>
<li>
<p>分享不是随意分享半成品，而是尽最大力气将作品打磨成自己当前能力范围内可完成的最好的样子。</p>
</li>
<li>
<p>制定分享策略，展示给那些能力不及你的人。</p>
</li>
<li>
<p>冷静客观地对待打击。</p>
</li>
<li>
<p>所有痛苦都是上天给我们的成长提示。</p>
</li>
<li>
<p>无论是身体不适、情绪低落，还是学业落后、事业受挫，有痛苦出现，说明哪里出了问题，这不就是在告诉我们应该努力的方向吗？</p>
</li>
<li>
<p>主动的回想测试是最好的学习方法之一，比坐在那儿被动地重读材料要好得多。</p>
</li>
<li>
<p>古典的跃迁理论：打磨作品—到达一个小山的头部—受到更多关注—移动到一个更大山头的头部—借助系统推力，实现人生跃迁。</p>
</li>
<li>
<p>真正的学习成长不是“努力，努力再努力”，而是“反馈，反馈再反馈”，只有不断产出，获得反馈，我们的人生才会发生真正的变化。</p>
</li>
<li>
<p>一些人很刻苦，很勤奋，每天都很忙碌，但就是表现平平；而另一些人工作娱乐两不误，却表现优异，做任何事都游刃有余。</p>
</li>
<li>
<p>定义明确的目标、极度的专注、有效的反馈、在拉伸区练习。</p>
</li>
<li>
<p>有效学习的关键是保持极度专注，而非一味比拼毅力和耐心。</p>
</li>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032227096.png"></p>
</li>
<li>
<p>那些轻松的学霸，他们学习时从不过度消耗自己，只要感到精力不足，就停下来主动休息，这反而使他们精力桶的水位得到快速回升。</p>
</li>
<li>
<p>轻松者的精力变化曲线</p>
</li>
</ul>
<blockquote>
<blockquote>
</blockquote></blockquote>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032228013.png"></p>
</li>
<li>
<p>高效学习区对比</p>
</li>
</ul>
<blockquote>
<blockquote>
</blockquote></blockquote>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032228012.png"></p>
</li>
<li>
<p>极度专注+主动休息，如此反复。</p>
</li>
<li>
<p>在生活中，最要不得的就是那种明明已经分心走神了，却还要强撑内耗，倒不如遵循“极度专注+主动休息”的模式，让自己先尽力保持短时间的极度专注，到有些累的时候就主动停下来，这是更加明智的生活和学习策略。</p>
</li>
<li>
<p>一个人刚好感到有些累时，说明他正好处在精力舒适区边缘，此时主动休息、及时回血，就能使精力的使用效率最大化。那些靠意志力强撑又不够专注的人，其实已经将自己置身于精力的困难区，所以他们体验到的多是痛苦而非愉悦（见图5-14）。[插图]图5-14　在拉伸区练习，专注效率最佳</p>
</li>
<li>
<p>克服困难和抵制诱惑都需要消耗意志力。</p>
</li>
<li>
<p>一个真正的自控高手，不是一个只知道冲刺的人，而是一个善于主动休息、保持平衡的人。</p>
</li>
<li>
<p>极度专注、主动休息、循环往复。</p>
</li>
</ul>
<h3 id="第六章-行动力没有行动世界只是个概念">第六章 行动力——没有行动世界只是个概念</h3>
<ul>
<li>
<p>真正的行动力并不完全来源于自制力。</p>
</li>
<li>
<p>《系统之美》一书的作者德内拉·梅多斯告诉我们，世界上有一个底层的系统规律叫“增强回路”，它的发生就好比两个小孩子发生了争执，一个人打了一拳，另一个人就更用力地踢一脚，他们每一次的反应都会强化矛盾，升级暴力。注意力的使用同样遵循这个规律，最初的选择会影响行为自动增强的方向。</p>
</li>
<li>
<p>注意力的增强回路是正向的还是负向的，很大程度上取决于你最初的选择，这也是老生常谈的道理：要事第一！</p>
</li>
<li>
<p>在初始阶段，强迫自己先做重要的事情，一旦进入正向的增强回路，你便能拥有强大的行动力——这正是增强自制力、提升行动力的秘密。</p>
</li>
<li>
<p>一切都只知道个大概，这对提升行动力来说，是很致命的。</p>
</li>
<li>
<p>清晰力，也就是把目标细化、具体化的能力——行动力只有在清晰力的支撑下才能得到重构。</p>
</li>
<li>
<p>写与不写，完全不同。</p>
</li>
<li>
<p>人们通常还会有这样的疑问：把计划做得这么僵硬，会不会让自己变得很死板？事实上并不会，因为做规划的目的并不是让自己严格地按计划执行，而只是为了让自己心中有数。如果当天计划有变也没关系，有了这份预案，你能够在处理完临时任务后，把自己迅速拉回正轨，但如果没有这份预案，你极有可能在目标和时间都模糊的情况下选择娱乐消遣。所以，做规划十分有效，平时遇到干扰只要及时调整计划就好了。</p>
</li>
<li>
<p>一天24小时，在开始的时候多花点时间想清楚什么任务是最重要的，并提醒自己投身于此，这样，工作效率之高会超乎想象。</p>
</li>
<li>
<p>一个人若是缺少人生目标，那么一味追求行动力无异于缘木求鱼。</p>
</li>
<li>
<p>从某种程度上说，有自己热爱的事，比行动力本身要重要得多</p>
</li>
<li>
<p>你陷入怠惰、懒散、空虚的情绪中动弹不得时，往往是因为你的大脑处于模糊状态。</p>
</li>
<li>
<p>认知越清晰，行动越坚定。</p>
</li>
<li>
<p>爱因斯坦所说：“如果给我1小时解答一道决定我生死的问题，我会花55分钟弄清楚这道题到底在问什么。一旦清楚它到底在问什么，剩下的5分钟足够回答这个问题。”</p>
</li>
<li>
<p>聪明的思考者都知道“想清楚”才是一切的关键，在“想清楚”这件事上，他们比任何人都愿意花时间，而普通人似乎正好相反，喜欢一头扎进生活的细节洪流中，随波逐流，因为这样似乎毫不费力。于是在普通人眼里是“知易行难”，而在聪明人眼里是“知难行易”，这一点值得我们反思。</p>
</li>
<li>
<p>想先看到结果再行动的人往往无法看到结果。</p>
</li>
<li>
<p>我此前一直强调“想清楚”的重要性，但当我们绞尽脑汁去想却仍然想不清楚的时候，就要依据前人的假设先行动起来，只有这样，我们才能更接近目标的本质，才能想得更清楚。</p>
</li>
<li>
<p>很多人总是希望先找到自己的人生目标再行动，事实上，如果不行动，我们可能永远也找不到自己的人生目标，毕竟依靠低维度的认知和经历，我们很难看清自己真正想要什么。只有先依据前人的假设走到更高的层次，人生目标才可能慢慢浮现。</p>
</li>
<li>
<p>思考很重要，但光想不做，贻害无穷。</p>
</li>
<li>
<p>只有当我们真正做成一件事之后，才会知道自己能做的事情其实很少，这样就不会想要那么多了，而欲望一少，焦虑消散，我们反而能更专心地做好手头的事情。</p>
</li>
<li>
<p>不要垂涎别人二十几岁身家百万，不要羡慕别人一夜成名，他们的故事若无法真实地改变你，那对你而言都是幻想。还不如踏踏实实地用行动让自己一点一点变好，毕竟，现实结果才是最好的“评判师”。</p>
</li>
<li>
<p>行动量需要突破阈值</p>
</li>
</ul>
<blockquote>
<blockquote>
</blockquote></blockquote>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032237759.png"></p>
</li>
<li>
<p>如果你觉得别人讲的道理有理有据，而自己暂时无法反驳，碰巧自己又非常想做这件事，那就相信他们说的是对的，然后笃定地行动（见图6-9）。</p>
</li>
</ul>
<blockquote>
<blockquote>
</blockquote></blockquote>
<ul>
<li>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308032238573.png"></p>
</li>
<li>
<p>在实践途中，你自然也要保持思考，用行动反复验证他们的理论，不适则改、适则用，直到自己真正做到为止。届时你不仅能做成那件事，还能探索出自己的理论，成为别人眼中的高手。</p>
</li>
<li>
<p>为什么付出再多的心血也无法达成一次持续的行动？在他们心里，始终有这样一种执念：自己现在不做是因为还没有找到最好的方法，等找到那个方法以后，一切就会变得不一样。于是他们在寻找、搜集道理的路上越走越远。</p>
</li>
<li>
<p>他们阅读了很多有道理的书，收藏了很多有道理的文章，觉得自己无所不知，却始终不能俯下身子去行动。因为他们总认为自己还没准备好，担心方法不是最优的，贸然行动会走弯路等，殊不知，这样的观望、等待本身就无效率可言。更使人困扰的是，道理知道得越多，行动力反而越弱，因为似乎总有更好的道理等着我们去发现。</p>
</li>
<li>
<p>学习任何一门技能，本质上都是大脑中的神经细胞在建立连接。</p>
</li>
<li>
<p>道理再好，如果不去刻意练习，不去刺激相关神经元的强关联，这些美好的认知将永远不会真正对自己产生影响。</p>
</li>
<li>
<p>把认知当成技能，知道或想通一个道理时，不要高兴得太早，想想后面还要做大量的练习，这样就不浮躁了。</p>
</li>
<li>
<p>很多人不愿意行动的另一个原因是：在开始尝试的时候，总觉得自己做不好，看不到明显的效果，然后就放弃了。</p>
</li>
<li>
<p>如果一开始就能做好，我们还要学习什么呢？</p>
</li>
<li>
<p>只要不断练习，神经元之间的关联必然会越来越强，即使你感觉自己暂时在退步，也不要气馁，因为你可能进入了学习的平台期。</p>
</li>
<li>
<p>不发生真正改变的学习都是无效的学习。</p>
</li>
<li>
<p>最重要的事情只有一件</p>
</li>
<li>
<p>现实和理论都告诉我们：懂得百点不如改变一点。真正的成长不在于自己懂得了多少道理，而在于自己改变了多少。</p>
</li>
<li>
<p>对成长来讲，道理都是“空头支票”，改变才是“真金白银”。当你凡事都以改变为标准时，你的成长路径会更加清晰。</p>
</li>
</ul>
<h3 id="第七章-情绪力情绪是多角度看问题的智慧">第七章 情绪力——情绪是多角度看问题的智慧</h3>
<ul>
<li>
<p>在一定的前提下，贫穷确实会使人变笨，这不是因为贫穷让人能力不足，而是因为贫穷造成的稀缺俘获了人的注意力，进而降低了人的心智带宽。</p>
</li>
<li>
<p>所谓心智带宽，就是心智的容量，它支撑着人的认知力、行动力和自控力。心智带宽一旦降低，人很容易丧失判断力，做出不明智的选择，或急于求成，做事缺乏耐心，难以抵挡享乐的诱惑。</p>
</li>
<li>
<p>事实上，任何能制造压力的事件都会挤占我们的心智带宽，比如明天的演讲、考试的期限、失业的担忧，等等。只要我们的注意力被某一个巨大的事物吸引，我们就有可能进入稀缺状态，进而降低心智带宽，做出不明智的行为。</p>
</li>
<li>
<p>当一个人同时面临很多任务的时候，他的心智带宽就会降低，反而没有了行动力和自控力。</p>
</li>
<li>
<p>现代生活虽然缓解了生存压力，却又带来了自控上的压力。抵制诱惑和欲望无一不消耗我们的心智带宽</p>
</li>
<li>
<p>《见识》的作者吴军曾说：“很多人认为我是个善于利用时间的高手，问我如何才能同时做更多的事情。事实上，我做事的诀窍恰恰和大家想的相反，就是少做事，甚至不做事。我时常站在一生的高度去审视自己真正要做的是什么，然后打破思维定式，拒绝所有那些即使不去做天也不会塌下来的事情。”</p>
</li>
<li>
<p>脑子里存在大量任务和念头的时候，往往是我们行动力最弱的时候。</p>
</li>
<li>
<p>真正的行动力高手不是有能耐在同一时间做很多事的人，而是会想办法避免同时做很多事的人。</p>
</li>
<li>
<p>不要在最兴奋的时候做决定，也不要在最愤怒的时候做决定，尤其是重大决定。大喜大悲的时候，我们的心智带宽往往很窄，判断力也很弱。</p>
</li>
<li>
<p>世界是多维的，而我们只有一双眼睛</p>
</li>
<li>
<p>不难推断，像这辆摩托车一样，世界上任何一个人、任何一件物、任何一件事都是多维立体的。</p>
</li>
<li>
<p>一个人的性格和脾气好不好，也取决于他多角度看问题的能力：视角单一的人容易固执、急躁和钻牛角尖，而视角多元的人则表现得更为智慧、平和与包容。</p>
</li>
<li>
<p>很多人情绪不好，是因为他们把自己做的假设当成了事实，在不确定对方真实想法的情况下，直接把情绪发泄了出来。</p>
</li>
<li>
<p>越是心情不好的时候就越要多运动，越是想不通的时候越要多运动。</p>
</li>
<li>
<p>不要让事情本身束缚了你的情绪和注意力。</p>
</li>
<li>
<p>一个人想要生活幸福，需要具备以下因素。·有良好的人际关系，得到别人的爱与尊敬；·有独特的本领、技能，为他人带去独特价值；·有自主选择的权力，能做自己想做的事情。</p>
</li>
<li>
<p>我并不是在做这件事，我只是在做另外一件事。</p>
</li>
<li>
<p>·我并不是在做跑步测试，我只是在玩追逐游戏；·我并不是在写作业，我只是在挑战自己的速度；·我并不是在洗衣服，我只是在活动自己的手脚；·我并不是去见领导，我只是和一个普通人聊天；·我并不是为老板做事，我只是为了提升自己。</p>
</li>
<li>
<p>事情本身并不重要，我们只是在通过它获取另外一种乐趣，顺便把这件事给做了。在心理学上，这个方法叫作“动机转移”。</p>
</li>
<li>
<p>为自己而做，通常是为了应对外部的压力和要求，为玩而做，则是为了应对重复、枯燥的事情。</p>
</li>
<li>
<p>无穷的真理确实容易让人害怕，但只要盯住眼前的那一寸，就会从那一寸中获得快乐。</p>
</li>
</ul>
<h3 id="第八章-早冥读写跑人生五件套成本最低的成长之道">第八章 早冥读写跑，人生五件套——成本最低的成长之道</h3>
<ul>
<li>
<p>第一，每天4点起床，把全天分成三段。4点<del>12点：第一个8小时用于完成过去的工作（或者说用于完成我们一天正常的工作）；12点</del>20点：第二个8小时用来铺垫未来的工作（也可以视其为多出来的一个工作日）；20点~次日4点：第三个8小时用于休息（还是8小时没变）。作者称之为人生两季：4点起床，就相当于多了一个工作日，并且睡眠时间没有减少。</p>
</li>
<li>
<p>有时5点起，有时4点半起，最早4点起，通常不晚于5点半。相比在7点左右起床，我每天多出了2小时，按一天8小时工作时长计算，每年可以多出约90个工作日，如果坚持40年，就相当于一个人全年无休工作10年。有了这些不被打扰的时间，我可以高效地做下面这些事情。</p>
</li>
<li>
<p>成功人士一旦发现别人的好习惯，就会立刻将这个习惯变成自己的。</p>
</li>
<li>
<p>想要快速成为一个行业的高手，最好的方法就是和行业专家交流，直接向他们请教</p>
</li>
<li>
<p>读书就是用最低廉的成本获取最高级的成长策略，这是所有人提升自己的最好途径。</p>
</li>
<li>
<p>脚步不能丈量的地方，文字可以；眼睛无法看到的地方，文字可以</p>
</li>
<li>
<p>“什么是自己当前最迫切、最需要解决的问题？”</p>
</li>
<li>
<p>记得留心你认为好的书里面被作者多次提到的书，这些信息往往都是你继续发现好书的线索。</p>
</li>
<li>
<p>选书比读书本身更重要。</p>
</li>
<li>
<p>阅读是为了改变。很多人以为一本书只要读完，读书的过程就结束了。事实上，阅读只是整个过程的开始，阅读之后的思考、思考之后的实践比阅读本身更加重要（这里主要指非虚构类书籍）。很多人的阅读仅停留在表面，读的时候觉得这里好有道理、那里好有道理，读完之后就不闻不问了，然后迅速转移到下一本书中，这种满足于录入的阅读造成的一个直接后果便是，一段时间之后再去翻这本书就好像之前没有看过一样，所有的痕迹都烟消云散了。真正读好一本书，往往需要花费数倍于阅读的时间去思考和实践，并输出自己的东西——可能是一篇文章，也可能是养成一个习惯——这个过程比阅读本身要费力得多。</p>
</li>
<li>
<p>阅读量&lt;思考量&lt;行动量&lt;改变量。阅读仅仅是最表层的行为，最终的目的是通过思考和行动改变自己。</p>
</li>
<li>
<p>阅读的深度比速度重要，阅读的质量比数量重要。读得多、读得快并不一定是好事，这很可能是自我陶醉的假象。如果读书只是完成了文字扫视，但并不真正理解，那又有什么效率可言呢？如果阅读只是知道了那些道理，而自己并没有发生任何实质改变，那又有什么意义呢？所以读书慢不要紧，即使你一个月只能读完一本书，但能读通、读透，产生巨大的改变，那也比3天读1本书不知要强多少倍。</p>
</li>
<li>
<p>只要紧紧盯住“改变”这个根本目标，很多阅读障碍就会立即消失。</p>
</li>
<li>
<p>第一个是要特别注意自己在阅读时产生的关联。如果一个知识点让你想起了其他的知识、引发了关联，一定要留意，并把它记下来。知识产生关联说明知识网络正在形成或加固，这么做还可能创造新知识，这正是学习的核心方法之一。</p>
</li>
<li>
<p>第二个是读写不分家。如果你在阅读后还能把所学知识用自己的语言重新阐释，甚至将它们教授给他人，那这个知识将在你脑中变得非常牢固。</p>
</li>
<li>
<p>费曼无形中从父亲那儿学会了一个很有力的学习技能：翻译，即无论学习什么东西，都要努力琢磨它们究竟在讲什么，它们的实际意义是什么，然后用自己的话将其重新讲出来。</p>
</li>
<li>
<p>向一个没有任何背景知识的人说清楚一件事是很难的。</p>
</li>
<li>
<p>费曼技巧就是通过自己的语言，用最简单的话把一件事情讲清楚，最好让外行人也能听懂。</p>
</li>
<li>
<p>要让外行人也能看得懂我写的东西。</p>
</li>
<li>
<p>先用合适的故事引起对方“感性小人”的兴趣和注意，然后把想要表达的道理通过“感性小人”转达给“理性小人”</p>
</li>
<li>
<p>用自己的语言重新表达就是在调动自己的千军万马。</p>
</li>
<li>
<p>肯定会有人提出这样的疑问：很多观点早就被前人写过了，自己再写一遍也无法超越他们，这样做还有什么意义呢？关于这个问题，《刻意学习》一书的作者Scalers曾这样回答。你自己想明白的，是从你的体系中萌芽生长出来的；而从书上看到的，非常容易停留在做个笔记画个线，涂个手绘画个圈，自以为懂了的层面。不要害怕书上早就写了，我们每个人都可以在这个世界上，刻画出一条与众不同的轨迹。</p>
</li>
<li>
<p>“教”才是最好的“学”。</p>
</li>
<li>
<p>身体好和头脑好也是正相关的呢？我认为答案是肯定的。</p>
</li>
<li>
<p>时常运动的人，体内生态系统犹如一汪清泉，而久坐不动的人，体内生态系统则更像是一潭死水。</p>
</li>
<li>
<p>运动能够使大脑长出更多的新的神经元，这意味着运动可以在物理上让人变得更“聪明”。</p>
</li>
<li>
<p>运动不仅能使人身材更好、精神更佳，同时能增强大脑功能，提升注意力、记忆力、理解力、自制力，从而增强学习效果，让人创造更大的成就，获取更多资源。</p>
</li>
<li>
<p>在运动后的1~2小时内进行高强度、高难度的脑力活动，比如阅读、解题、背记、写作、编程，等等，或是一些需要复杂技巧的体力活动，诸如舞蹈、钢琴，以及参加不同于以往的社交活动，如接触新的环境、人物或事物，这么做可以让新的神经元受到刺激，不断生长。换句话说，运动之后，脑子需要充分接受考验或挑战，才能让自己不断地变“聪明”。</p>
</li>
<li>
<p>绝大多数运动者的硬伤就在这里：运动之后缺乏主动学习的意识和习惯。</p>
</li>
<li>
<p>运动更大的意义不在于健身而在于健脑，它不仅能使人更加乐观，还能使头脑更加灵活，最终使健康水平和认知水平实现双重提升。</p>
</li>
<li>
<p>身体和灵魂，总有一个要在路上。</p>
</li>
<li>
<p>灵魂想要走得远，身体必须在路上。</p>
</li>
<li>
<p>认知越清晰，行动越坚定。</p>
</li>
</ul>
<h3 id="结语-一流的生活不是富有而是觉知">结语 一流的生活不是富有，而是觉知</h3>
<ul>
<li>
<p>复盘的方式也极为简单，通常只需3点：①描述经过——以便日后回顾时能想起当时的场景；②分析原因——多问几个为什么，直到有深度的启发；③改进措施——尽可能提炼出一个认知点或行动点。</p>
</li>
<li>
<p>无论何时，都要把对方的情绪和意见分开对待，这样，即使在最糟糕的事情中也能学到有用的东西。</p>
</li>
<li>
<p>好的反思是感知生活中最触动自己的点，难受的、欣喜的、念念不忘的……这些点正是处在自己成长的舒适区边缘的感悟，人在舒适区边缘学习，成长是最快的。</p>
</li>
<li>
<p>越是好的反思，着眼点往往越细微，毕竟大而泛的事情大家都能感知到，而细微的变化却不是每个人都能感受到的，这体现了反思者的水平。</p>
</li>
<li>
<p>只要有困难或不舒服的事情出现，心里就会暗喜，知道自我提升的机会又来了。</p>
</li>
<li>
<p>请谨记：反思的最终目的是改变，而不是形式的完美，所以哪怕只有一句话，且这句话让自己发生了改变，那么反思的目的也就达到了。</p>
</li>
</ul>
<h3 id="后记-共同改变一起前行">后记 共同改变，一起前行</h3>
<ul>
<li>如果你想要的东西还不存在，那就亲自动手将它创造出来。</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《不生气的活法》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%8D%E7%94%9F%E6%B0%94%E7%9A%84%E6%B4%BB%E6%B3%95/</link>
      <pubDate>Tue, 04 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%8D%E7%94%9F%E6%B0%94%E7%9A%84%E6%B4%BB%E6%B3%95/</guid>
      <description>&lt;h3 id=&#34;引言&#34;&gt;引言&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对孩子而言，哭是一种工具，因为他们还不会说话，所以要用哭来吸引大人的注意力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;情绪没有好坏之分，它只是人们对环境的一种反应。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第一章-人为什么爱生气&#34;&gt;第一章 人为什么爱生气&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;为人处世最要紧的是管理好自己的情绪，中国人的管理也叫作“修己安人”，修己就是要把自己的情绪稳定住。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第一节-人为什么爱生气&#34;&gt;第一节 人为什么爱生气&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;如果一个人无条件地相信别人，其实他也是不怎么高明的，而且是鲁莽的，他没有考虑到自己的安危。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人只要发出信息，别人经过解读，就会有不同的反应，进而对发出信息的人产生很大的影响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当发现情况不利于自己的时候，他们特别能忍耐；但是等到形势稍有好转，他们又会觉得自己是世界上最了不起的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果这个人处在弱势，没有办法反抗的话，他就会乖乖地听别人的吩咐，等到稍微有点能力，他就会“耍大牌”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人可以大声讲话，也可以小声讲话，大家要去好好了解，好好运用，然后来保护自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些人的自尊心很强，害怕被别人轻视。他们天不怕地不怕，就是怕被别人看不起。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多人还有一个比较让人“害怕”的地方，就是生气的时候完全不讲理。比如一个人平常很讲道理，但是有一天突然不讲理，如果别人问他：“你怎么不讲理呢？”他会说：“你把我气成这个样子，我还讲理？！”也就是说“我不生气就讲理，一生气我就不能讲理了”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果情绪好，平时有什么事大家都会讲道理，很快就会达成默契，很好商量，一切都会有共识；但是情绪不好的时候，就连神仙来了都没有用，彼此之间很难商量事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人的管理也叫作“修己安人”，修己就是要把自己的情绪稳定住。但是现在很多领导者的情绪不稳定，如此一来员工也会跟着不稳定。安人就是让对方情绪稳定——自己稳定，别人稳定，大家都稳定，事情就很好商量，然后大家很快把力量集合起来，把事情做好。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第二节-四种因素影响情绪变化&#34;&gt;第二节 四种因素影响情绪变化&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对于不同的人来讲，对同一事物所产生的反应，大部分是不一样的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;千万不要自以为是，认为自己这样想，别人一定也这样想，因为人各有各的反应，大家要彼此尊重。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人做到完全不发脾气，是不太可能的，也没有必要。人不能压抑，压抑是不能解决问题的，压抑会使某一次的爆发更严重。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一般官越大的人脸上越没有表情——职位越高，他越知道自己内心的活动不要让别人清楚、要保持一种神秘感。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人内心有什么想法，马上表现出来，其实对自己是相当不利的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人，既不要不表现，也不要乱表现，只有适当地表现才是比较合理的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第三节-情绪反应为人们敲起警钟&#34;&gt;第三节 情绪反应为人们敲起警钟&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;情绪是一个警讯、一个警示灯，当一个人觉得自己要“爆炸”的时候，情绪就在提醒这个人：自己肯定是在什么地方出了问题。情绪没有好坏、优劣之分，它只是告诉人们：你的反应有点问题。如果一个人有这样的警觉性，他就知道该怎样去调整自己。当一个人拿起杯子要打人的时候，他只要有警觉性：打出去看起来是自己占便宜，其实最后是自己吃亏。这个人就会把杯子拿来喝一口水，然后轻轻地放下，整个事情的结果就会改变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任由情绪主宰人的一切，后果可能十分严重，所以，大家不能不动脑筋就让情绪自然地反映出来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的情绪有大的、明显的，也有小的、经常被人忽略的。如果大家能够把这些都当作是一种警讯，就好像在过马路的时候，刚刚亮黄灯，大家也会做些动作一样，会考虑该不该刹车、有没有地方停、要停在什么地方，这样就不会措手不及。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人从小看爸爸怎么样对待妈妈、妈妈怎么样对待爸爸，他长大后，很自然也会有那种反应表现出来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人要做任何事情，先把自己的情绪处理好，然后再说其他的，这样做事才有效果，否则就会白忙一场。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第四节-情绪有理性和非理性两大类&#34;&gt;第四节 情绪有理性和非理性两大类&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;有人自己摔一跤，就觉得不得了，是天大的事情；别人摔一跤，他又会觉得没有什么了不起的，爬起来就是了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们对自己与对别人是双重标准，有些领导对自己的下属也是双重标准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当你做好计划的时候，你也要知道，计划很周全、很周密，但是计划定下来就开始有变化了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当别人向你借钱的时候，你就要考量：这个钱借给他，就等于是丢掉，自己愿意吗？承受得了吗？如果能承受就借给他，不能承受就拒绝。很多事情做不做完全靠人自己的观念取舍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尤其现在，世界上的事情越来越不确定，所以大家不要有“一定”的观念。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;夸大自己的预期要求，夸大自己出乎意料的承受，那就叫作“受不了”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其实没有什么受不了的，受不了就是大惊小怪，表示你和别人不一样，表示你一定要享受特殊的待遇，这些都是不好的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些人也很喜欢从小的方面去看大的方面，从细微的地方去看显著的地方，这没什么问题，但是从细微的地方就断定一个人一定是什么样，也是不对的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;比如：你好好努力可能成功，你好好努力也可能不成功。一个“因”有好几个“果”，这才是实际的状况。一个“因”一定有一个“果”，那是不切实际的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人都是自己给自己制造压力，别人没有办法给他制造压力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;天下本无事，庸人自扰之。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;老子提倡“中庸之道”，中庸，就是“差不多”。很多人讨厌“差不多”，其实“差不多”就是最好的东西，差不多就是不能差太多。什么事情做到差不多，不求全，不全满，就是最好的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人而无情，何以为人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人一定有喜怒哀乐，发出来恰到好处，自己就心安理得了，过分的话一定不好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有人会笨到专门找一个强过自己然后把自己“干掉”的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大家不但要接受而且要顺应人的天性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人不懂得管理自己，碰到事情会拖拖拉拉，不敢吃苦，他就永远长不大，所以多吃苦不是坏事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多东西都是比较出来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人可以“期望”，但是不要“强求”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人稍微慢一点，并不是什么丢脸的事，稍微慢一点并不耽误时间。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第一节-自己是情绪负债的制造者&#34;&gt;第一节 自己是情绪负债的制造者&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;大家现在哭，第一个，要哭给别人看；第二个，要哭出一个样子；第三个，没有泪水，就开始制造一些假泪水，甚至现在有一个职业就是帮人哭。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第二节-情绪负债源自三种性格&#34;&gt;第二节 情绪负债源自三种性格&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;好人也会做很多坏事，坏人也有很多好的表现，好中有坏、坏中有好才是比较实际的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不能说一个人这件事情做得不对就是坏人，这件事情他表现得好就是好人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多人喜欢竹子，因为竹子“韧而不僵”，很少会断。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第三节-毒性教条加重了情绪的负债&#34;&gt;第三节 毒性教条加重了情绪的负债&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;只有说人做错了，没有说中国人的道理错了，因为中国文化里并没有什么主张。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无可无不可，即世界上既没有什么东西是可，也没有什么事情是不可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大家只看到外面，没有顾虑到别人的“里面”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些人为了“家和万事兴”弄得家里面的人很假，有话不敢说，有脾气不敢发，有事情不敢提出来讨论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果为了装表面的和，什么事情都不谈，各搞各的，那只是表面的好看，内心是连不在一起的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人不可能没有情绪，一个人如果总是把愤怒藏在心里面，那是会爆炸的；人也最好不要压抑，适当的抒发其实是很好的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="引言">引言</h3>
<ol>
<li>
<p>对孩子而言，哭是一种工具，因为他们还不会说话，所以要用哭来吸引大人的注意力。</p>
</li>
<li>
<p>情绪没有好坏之分，它只是人们对环境的一种反应。</p>
</li>
</ol>
<h3 id="第一章-人为什么爱生气">第一章 人为什么爱生气</h3>
<ol>
<li>为人处世最要紧的是管理好自己的情绪，中国人的管理也叫作“修己安人”，修己就是要把自己的情绪稳定住。</li>
</ol>
<h3 id="第一节-人为什么爱生气">第一节 人为什么爱生气</h3>
<ol>
<li>
<p>如果一个人无条件地相信别人，其实他也是不怎么高明的，而且是鲁莽的，他没有考虑到自己的安危。</p>
</li>
<li>
<p>一个人只要发出信息，别人经过解读，就会有不同的反应，进而对发出信息的人产生很大的影响。</p>
</li>
<li>
<p>当发现情况不利于自己的时候，他们特别能忍耐；但是等到形势稍有好转，他们又会觉得自己是世界上最了不起的人。</p>
</li>
<li>
<p>如果这个人处在弱势，没有办法反抗的话，他就会乖乖地听别人的吩咐，等到稍微有点能力，他就会“耍大牌”。</p>
</li>
<li>
<p>中国人可以大声讲话，也可以小声讲话，大家要去好好了解，好好运用，然后来保护自己。</p>
</li>
<li>
<p>有些人的自尊心很强，害怕被别人轻视。他们天不怕地不怕，就是怕被别人看不起。</p>
</li>
<li>
<p>很多人还有一个比较让人“害怕”的地方，就是生气的时候完全不讲理。比如一个人平常很讲道理，但是有一天突然不讲理，如果别人问他：“你怎么不讲理呢？”他会说：“你把我气成这个样子，我还讲理？！”也就是说“我不生气就讲理，一生气我就不能讲理了”。</p>
</li>
<li>
<p>如果情绪好，平时有什么事大家都会讲道理，很快就会达成默契，很好商量，一切都会有共识；但是情绪不好的时候，就连神仙来了都没有用，彼此之间很难商量事情。</p>
</li>
<li>
<p>中国人的管理也叫作“修己安人”，修己就是要把自己的情绪稳定住。但是现在很多领导者的情绪不稳定，如此一来员工也会跟着不稳定。安人就是让对方情绪稳定——自己稳定，别人稳定，大家都稳定，事情就很好商量，然后大家很快把力量集合起来，把事情做好。</p>
</li>
</ol>
<h3 id="第二节-四种因素影响情绪变化">第二节 四种因素影响情绪变化</h3>
<ol>
<li>
<p>对于不同的人来讲，对同一事物所产生的反应，大部分是不一样的。</p>
</li>
<li>
<p>千万不要自以为是，认为自己这样想，别人一定也这样想，因为人各有各的反应，大家要彼此尊重。</p>
</li>
<li>
<p>一个人做到完全不发脾气，是不太可能的，也没有必要。人不能压抑，压抑是不能解决问题的，压抑会使某一次的爆发更严重。</p>
</li>
<li>
<p>一般官越大的人脸上越没有表情——职位越高，他越知道自己内心的活动不要让别人清楚、要保持一种神秘感。</p>
</li>
<li>
<p>一个人内心有什么想法，马上表现出来，其实对自己是相当不利的。</p>
</li>
<li>
<p>一个人，既不要不表现，也不要乱表现，只有适当地表现才是比较合理的。</p>
</li>
</ol>
<h3 id="第三节-情绪反应为人们敲起警钟">第三节 情绪反应为人们敲起警钟</h3>
<ol>
<li>
<p>情绪是一个警讯、一个警示灯，当一个人觉得自己要“爆炸”的时候，情绪就在提醒这个人：自己肯定是在什么地方出了问题。情绪没有好坏、优劣之分，它只是告诉人们：你的反应有点问题。如果一个人有这样的警觉性，他就知道该怎样去调整自己。当一个人拿起杯子要打人的时候，他只要有警觉性：打出去看起来是自己占便宜，其实最后是自己吃亏。这个人就会把杯子拿来喝一口水，然后轻轻地放下，整个事情的结果就会改变。</p>
</li>
<li>
<p>任由情绪主宰人的一切，后果可能十分严重，所以，大家不能不动脑筋就让情绪自然地反映出来。</p>
</li>
<li>
<p>人的情绪有大的、明显的，也有小的、经常被人忽略的。如果大家能够把这些都当作是一种警讯，就好像在过马路的时候，刚刚亮黄灯，大家也会做些动作一样，会考虑该不该刹车、有没有地方停、要停在什么地方，这样就不会措手不及。</p>
</li>
<li>
<p>一个人从小看爸爸怎么样对待妈妈、妈妈怎么样对待爸爸，他长大后，很自然也会有那种反应表现出来。</p>
</li>
<li>
<p>一个人要做任何事情，先把自己的情绪处理好，然后再说其他的，这样做事才有效果，否则就会白忙一场。</p>
</li>
</ol>
<h3 id="第四节-情绪有理性和非理性两大类">第四节 情绪有理性和非理性两大类</h3>
<ol>
<li>
<p>有人自己摔一跤，就觉得不得了，是天大的事情；别人摔一跤，他又会觉得没有什么了不起的，爬起来就是了。</p>
</li>
<li>
<p>人们对自己与对别人是双重标准，有些领导对自己的下属也是双重标准。</p>
</li>
<li>
<p>当你做好计划的时候，你也要知道，计划很周全、很周密，但是计划定下来就开始有变化了。</p>
</li>
<li>
<p>当别人向你借钱的时候，你就要考量：这个钱借给他，就等于是丢掉，自己愿意吗？承受得了吗？如果能承受就借给他，不能承受就拒绝。很多事情做不做完全靠人自己的观念取舍。</p>
</li>
<li>
<p>尤其现在，世界上的事情越来越不确定，所以大家不要有“一定”的观念。</p>
</li>
<li>
<p>夸大自己的预期要求，夸大自己出乎意料的承受，那就叫作“受不了”。</p>
</li>
<li>
<p>其实没有什么受不了的，受不了就是大惊小怪，表示你和别人不一样，表示你一定要享受特殊的待遇，这些都是不好的。</p>
</li>
<li>
<p>有些人也很喜欢从小的方面去看大的方面，从细微的地方去看显著的地方，这没什么问题，但是从细微的地方就断定一个人一定是什么样，也是不对的。</p>
</li>
<li>
<p>比如：你好好努力可能成功，你好好努力也可能不成功。一个“因”有好几个“果”，这才是实际的状况。一个“因”一定有一个“果”，那是不切实际的。</p>
</li>
<li>
<p>人都是自己给自己制造压力，别人没有办法给他制造压力。</p>
</li>
<li>
<p>天下本无事，庸人自扰之。</p>
</li>
<li>
<p>老子提倡“中庸之道”，中庸，就是“差不多”。很多人讨厌“差不多”，其实“差不多”就是最好的东西，差不多就是不能差太多。什么事情做到差不多，不求全，不全满，就是最好的。</p>
</li>
<li>
<p>人而无情，何以为人</p>
</li>
<li>
<p>人一定有喜怒哀乐，发出来恰到好处，自己就心安理得了，过分的话一定不好。</p>
</li>
<li>
<p>没有人会笨到专门找一个强过自己然后把自己“干掉”的人。</p>
</li>
<li>
<p>大家不但要接受而且要顺应人的天性。</p>
</li>
<li>
<p>一个人不懂得管理自己，碰到事情会拖拖拉拉，不敢吃苦，他就永远长不大，所以多吃苦不是坏事情。</p>
</li>
<li>
<p>很多东西都是比较出来的。</p>
</li>
<li>
<p>一个人可以“期望”，但是不要“强求”。</p>
</li>
<li>
<p>人稍微慢一点，并不是什么丢脸的事，稍微慢一点并不耽误时间。</p>
</li>
</ol>
<h3 id="第一节-自己是情绪负债的制造者">第一节 自己是情绪负债的制造者</h3>
<ol>
<li>大家现在哭，第一个，要哭给别人看；第二个，要哭出一个样子；第三个，没有泪水，就开始制造一些假泪水，甚至现在有一个职业就是帮人哭。</li>
</ol>
<h3 id="第二节-情绪负债源自三种性格">第二节 情绪负债源自三种性格</h3>
<ol>
<li>
<p>好人也会做很多坏事，坏人也有很多好的表现，好中有坏、坏中有好才是比较实际的。</p>
</li>
<li>
<p>不能说一个人这件事情做得不对就是坏人，这件事情他表现得好就是好人。</p>
</li>
<li>
<p>很多人喜欢竹子，因为竹子“韧而不僵”，很少会断。</p>
</li>
</ol>
<h3 id="第三节-毒性教条加重了情绪的负债">第三节 毒性教条加重了情绪的负债</h3>
<ol>
<li>
<p>只有说人做错了，没有说中国人的道理错了，因为中国文化里并没有什么主张。</p>
</li>
<li>
<p>无可无不可，即世界上既没有什么东西是可，也没有什么事情是不可。</p>
</li>
<li>
<p>大家只看到外面，没有顾虑到别人的“里面”。</p>
</li>
<li>
<p>有些人为了“家和万事兴”弄得家里面的人很假，有话不敢说，有脾气不敢发，有事情不敢提出来讨论。</p>
</li>
<li>
<p>如果为了装表面的和，什么事情都不谈，各搞各的，那只是表面的好看，内心是连不在一起的。</p>
</li>
<li>
<p>人不可能没有情绪，一个人如果总是把愤怒藏在心里面，那是会爆炸的；人也最好不要压抑，适当的抒发其实是很好的。</p>
</li>
<li>
<p>如果每个人都为了怕爸爸发火而不敢讲话，为了怕妈妈生气就躲躲藏藏，那么这些都会成为不和的隐患，时间久了一定会爆发。</p>
</li>
<li>
<p>一个在丈夫面前“是是是、好好好”的妻子，丈夫要提高警觉，她在外面可能有问题。如果丈夫回家看电视动都不动，非常有礼貌，也不讲脏话，那他八成在外面有什么动向……</p>
</li>
<li>
<p>命比钱重要得多，但是现在许多人为了钱而拼命，那就是跟自己的身体、跟自己的生命过不去。</p>
</li>
<li>
<p>中国人很喜欢要求别人，其实是没必要的。儒家是反求诸己，从自己做起，把自己的情绪稳定了就行，不要去管别人如何，因为只有自己稳定，别人才会跟着稳定。尤其是当领导的，如果他一来就弄得大家很紧张，是没有人愿意跟着他干的，因为谁跟着他干谁倒霉。很多员工都说领导不在的时候，自己根本不紧张，会自己安排工作，但是领导一来就不得了，他会弄得大家没法工作。因为领导的情绪不稳定，所以使得整个组织里面的人都不稳定。</p>
</li>
<li>
<p>一个人一改变自己的情绪，别人也会跟着改变。</p>
</li>
</ol>
<h3 id="第四节-挣脱情绪负债的枷锁">第四节 挣脱情绪负债的枷锁</h3>
<ol>
<li>
<p>如果能认为自己没有什么贡献，不值得大惊小怪，这本来就是自己的理想，是该做的事的话，自己的心就会自由自在，情绪负债就被解除掉了。</p>
</li>
<li>
<p>人要学会自我调整，把不必要的还清、拿掉，这样人就会越来越轻松，越来越自由，越来越成熟。</p>
</li>
<li>
<p>一个人要让自己的情绪有适当的疏解，不要压抑，也不要过分控制，更不要让自己心里充满不安的情绪。</p>
</li>
<li>
<p>人要学会改变自己的想法。</p>
</li>
<li>
<p>情绪也一样，不可能很简单地分成正负、好坏、善恶、是非，但是有人偏偏去钻那个牛角尖。</p>
</li>
<li>
<p>每一种情绪都是有价值的，人生要尽可能多一种体验，否则生活永远不会完整。</p>
</li>
<li>
<p>有人却不是这样的，当他发现走错时会想：幸好拐错了，不然我一辈子看不到这边的景象。他反而会很愉快。反正已经走错了，已经消耗了时间、浪费了精力，何必再增加自己的苦恼呢？而且自己还得到了经验，知道以后问路要问清楚在什么路口、目的地在左边还是在右边，就会减少错误；如果还是错误了，那就享受这个错误，这时候心情会完全不一样。</p>
</li>
</ol>
<h3 id="第一节-现代人具有极大选择力">第一节 现代人具有极大选择力</h3>
<ol>
<li>
<p>在管理情绪这个问题上，大家应该记住四个字——慎始善终。因为慎始都不一定能够善终，如果不慎始那就更糟糕了。</p>
</li>
<li>
<p>大家首先要认定人是相当不理性的，每一个人都有缺点。有些人很喜欢“完美”，但是完美主义者其实是不切实际的。一个人如果自己很追求完美，那他的一生肯定会痛苦不堪；他如果要求别人完美，就会发现没有一个人是对劲的，所有人都很讨厌。</p>
</li>
<li>
<p>一个人要包容别人的缺点，而不是指责别人的缺点——你不可能改变那些缺点。</p>
</li>
<li>
<p>中国人是非常重视科学的，格物致知就是说：人把事情搞清楚，就会得到充分的知识，然后用这种理性来指导自己的情绪和感情。一个人只要很理性，他的情绪一定是很正常的，但是人不可能时刻都理性，人不可能每时、每事都理性，因为人无完人，法无良法。</p>
</li>
<li>
<p>先格物致知，然后得到一些知识，再用这些知识很理性地指导自己的感情，这就叫作自律。所谓自律就是自己管自己。中国人是非常不喜欢被人管的，一开口就是“你管那么多干什么”“你少管我”。中国人对管理天生有一些抗拒，但是学习西方管理的时候，人们却没有注意到这一点。</p>
</li>
<li>
<p>人不要别人管是好现象，但是自己一定要把自己管好，因为只有自己管好自己的人，才有资格不被别人管。</p>
</li>
<li>
<p>大家最好要养成习惯，即尽量不要立即反应，一个人一定要谋定而后动，对情绪也是这样，千万不要草率。想一想自己的观点对不对，你把它调整得合理，然后做出适当的反应，就不会出差错了，而不是现在什么都要的“快、快、快”。</p>
</li>
</ol>
<h3 id="第二节-人们经常无意识地选择">第二节 人们经常无意识地选择</h3>
<ol>
<li>
<p>有的人会失败，是因为他选择了失败；有的人会成功，是因为他选择了成功。</p>
</li>
<li>
<p>当一个人怀疑另一个人的时候，他越看越觉得另一个人像自己想的那个样子。大家不能够因为某个人做错一件事情，就把他划定为坏人。特别是做家长的，不能认为孩子犯一次错误就会成为坏孩子，就会无药可救。孩子有很多优点，不能只凭一件事情去判断他的好坏。</p>
</li>
<li>
<p>在当今社会，选择能力越来越重要。每个人的机会都很多，只是大家不会选择而已。什么叫作不幸？就是因为选择错误。一个男人看到很多女人，可他为什么专挑这个女人和自己结婚呢？他有很多的机会，但是他选择了这个女人，如果两个人一辈子不幸福，他只能怪自己当初没有选择正确的结婚对象。</p>
</li>
<li>
<p>做父母的也不要在子女面前去批评自己的上一辈，因为孩子将来会照样批评你——这是最好的以身作则。</p>
</li>
</ol>
<h3 id="第一节-人们喜欢将责任推出去">第一节 人们喜欢将责任推出去</h3>
<ol>
<li>
<p>当一个人做错事情时，如果他心里很清楚地知道这是自己的错误，而且下定决心下次不会再犯这种错误了，他的情绪就会比较平静；如果嘴巴上把责任推给别人，心里也认为自己没有错，那他的情绪就不会稳定。</p>
</li>
<li>
<p>一个人只要观念一改变，他的整个脾气就会改变。</p>
</li>
<li>
<p>人看到一件东西，有时候会很喜欢，有时候会不喜欢，显然情绪是变化的。</p>
</li>
<li>
<p>每一个人都知道是“他惹我”的，而没有一个人承认是“我惹他”的。</p>
</li>
<li>
<p>每个人都有自己不得已的苦衷，立场不同，讲的话就不一样。</p>
</li>
<li>
<p>人只要立场不同，讲的话就不一样，别人没有办法要求他。可是有些人经常把这些都抛开不谈，就认为是别人欺骗了自己，这说明他们对环境没有深入的认识。</p>
</li>
<li>
<p>人们情绪非常不稳定的主要原因是“一定”。</p>
</li>
<li>
<p>世界上没有一个地方的环境是让每一个人都能满意的，所以，到哪里就要适应哪里的环境。</p>
</li>
<li>
<p>有人常常认为：“别人一定要公平地对待我，否则这些人就是坏人，坏人就应该受惩罚。”为什么别人要公平地对待你呢？你有你的亲疏有别，他有他的亲疏有别。每个人的立场、标准和处境都不一样，没有理由要求别人一定要公平地对待自己。</p>
</li>
<li>
<p>一个人只有心里承认自己的错误，才有实质上的效果，才会很快改正错误。</p>
</li>
<li>
<p>人最可靠的是改变自己，而不是改变别人。</p>
</li>
<li>
<p>父母连自己的孩子也改变不了，他们又能改变得了谁呢？孩子只是暂时性地怕你、听你的，等哪一天他长大了、有实力了，反过来你就要听他的。</p>
</li>
</ol>
<h3 id="第二节-怨天尤人不如反求诸己">第二节 怨天尤人不如反求诸己</h3>
<ol>
<li>
<p>第一，老天不会说话；第二，人骂老天，老天没有反应；第三，老天爱怎么样就怎么样，根本不理人。</p>
</li>
<li>
<p>很多人都明白“言教不如身教”的道理，但在现实生活中，人们总是言教多于身教，因为讲道理比较容易。</p>
</li>
<li>
<p>小孩子打破玻璃杯，妈妈就要告诉他，打破了就打破了，妈妈也打破过，你要小心地把碎片清理干净，不要被它扎伤了，如此小孩子的心理会很正常。</p>
</li>
<li>
<p>有些人经常一检讨，就把责任推出去，不会自己承担。但是有的领导开检讨会时就处理得很高明。他很少说这个错那个错，因为他知道那没有用，只会使大家很不舒服而已。</p>
</li>
<li>
<p>这件事情，各位都没有错，是我的错，我当初没有考虑得很周到，在过程当中也没有及时提出办法来。他先承认自己有错，然后看大家有什么反应，如果大家说是他的错，那他会自我检讨，看是不是自己领导有问题，要么就是平常真的太不关心员工，引起员工的一致不满。</p>
</li>
<li>
<p>既然每个人都有错，那就每个人都分担一部分责任，也没什么大事，大家把这次错误切切实实地记载下来，以后不犯就好了。</p>
</li>
<li>
<p>人必须要先承认自己有错，而不是逼着大家一定要承认错误。</p>
</li>
<li>
<p>一个人要培养合理的思考能力，不能让自己一直生活在外界的影响与童年的阴影作用之下。</p>
</li>
<li>
<p>可以变的是权宜措施，不能变的是基本原则，否则一个人变得连原则都没有，就太可怕了。</p>
</li>
<li>
<p>曾子最了不起的地方就是经常反省自己。</p>
</li>
<li>
<p>曾子没有做什么大官，也没有什么钱，但是他了不起，他每日反省自己、检讨自己，但是对做过的事情并不后悔，他认为凡是发生过的事情都是好事情。一件事是好是坏，是人心决定的，一个人觉得它是好事情，它就是好事情。</p>
</li>
<li>
<p>人看到的是坏事情，但不一定是坏事情。比如别人借了你十万块钱，他不还了，他破产了，你怎么办？你现在骂他也没用，告他也没用，打他也没用，你只能告诉自己：这是个教训，幸好是十万，如果是一百万我今天就完蛋了；幸好我当年借他钱的时候，没有去贷款借给他，以后我就知道不能随便借钱给别人了。这样想的话，你的情绪就不会那么激动了。</p>
</li>
<li>
<p>一个人如果想要管理好情绪，就要常常去检讨自己，常常去调整自己，常常去改变自己。</p>
</li>
<li>
<p>合理就好了，不要过分。</p>
</li>
<li>
<p>一个人对人太客气是虚伪，对人不客气是骄傲；对人太好是献媚，对人不好就是有成见。</p>
</li>
<li>
<p>求人不如求己。盲目学别人，就会埋没了自己。天底下最可靠的就是自己，他人是靠不住的。</p>
</li>
</ol>
<h3 id="第三节-自己才是情绪的主宰者">第三节 自己才是情绪的主宰者</h3>
<ol>
<li>
<p>中国人最清楚相由心生的道理，一个人的心一改变，他的相貌就会改变，管理好情绪可以真正地改变人的相貌。</p>
</li>
<li>
<p>第一，要接受自己和别人不一样</p>
</li>
<li>
<p>第二，大家要承认每一个人都是独一无二、不能取代的。</p>
</li>
<li>
<p>第三，一个人既然长成这样子，一定有长成这个样子的道理。</p>
</li>
<li>
<p>一个人会长成什么样子，就是为他这辈子要做什么事情的一个准备，所以大家应该去体会自己长成这个样子是要做什么的，而不能老想着自己长得不漂亮或者长得不帅。第四，一个人就算能力不强，就算被别人看不起，也没有什么好计较的。</p>
</li>
<li>
<p>第五，不要去计较世俗的评论。</p>
</li>
<li>
<p>人们种种的情绪反应，就是因为给了自己太多的要求和条件，使自己无法对自己满意。</p>
</li>
<li>
<p>一个人是要有条件地接受自己，还是没有条件地接受自己，是人的第一个选择。</p>
</li>
<li>
<p>一个人只要有条件，就不可能快乐，因为条件不可能一直都被满足。</p>
</li>
<li>
<p>“心诚则灵”就是说如果心里有个清晰的目标，自己希望的事情就会发生。</p>
</li>
<li>
<p>人是观念的动物，“心想事成”是说观念可以决定一切，一个人的言行是根据自己的观念而改变的。</p>
</li>
<li>
<p>人要改变自己，唯一的方法就是要调整自己的观念，面对自己的一切，找到一个合理的反应。</p>
</li>
<li>
<p>一个人过分精明了，会害死自己，因为过分精打细算，是没有人能够和他相处的。一切都不要过分，一切都尽量求合理，这就叫作理性，叫作逻辑。</p>
</li>
<li>
<p>结果是大家不可能控制的，但过程是可以调整的，所以要尽量去调整过程，而不必太计较结果。而现在人刚好相反，都是结果论。不管用什么办法，只要考及格就是及格了，这是不对的。</p>
</li>
<li>
<p>他会想：幸亏我是最后一名，才救了你们，如果我不是最后一名，你就是最后一名。这种“阿Q精神”有时值得大家合理地去运用。</p>
</li>
<li>
<p>什么叫大同？大同不是完全相同，而是彼此有点不同，即要“大同小异”。</p>
</li>
<li>
<p>人要同中有异、异中求同，而不是完全一样，也不是完全不一样。</p>
</li>
</ol>
<h3 id="第四节-人都是独一无二的">第四节 人都是独一无二的</h3>
<ol>
<li>
<p>钱穆教授在中国一定喝茶，可是到了西方，他一定喝咖啡。因为他说美国没有好茶，自己只好喝咖啡；回到中国有好茶，就不用喝咖啡了。</p>
</li>
<li>
<p>有人到美国，非要花很多时间去吃中国菜，他们不愿意去尝尝麦当劳；有人到美国，宁愿开车两三个小时，也要去吃一顿中国菜，没有中国菜他就不吃饭。如果人连这点弹性都没有，情绪怎么会稳定呢？其实，在美国很难吃到正宗的中国菜。</p>
</li>
<li>
<p>如果你一开始就骂别人和自己不一样是不对的，因为别人有别人的道理，只是你不了解而已，每个人都有自己的独特之处。所以大家要彼此包容、彼此谅解，尊重各自的差异性，这样大家的情绪都会很稳定。</p>
</li>
<li>
<p>每个人都有自己的立场，大家也不用彼此看不惯。</p>
</li>
<li>
<p>一个人只要不断地把好的部分增强起来，把不满意的地方慢慢修改，让它减少就行了。</p>
</li>
</ol>
<h3 id="第五节-改变自己就在影响别人">第五节 改变自己就在影响别人</h3>
<ol>
<li>
<p>改变习惯最好的办法是什么？有的人说是用另外一个习惯来取代这个习惯，这是最容易的。</p>
</li>
<li>
<p>任何习惯，大家不要用对抗的心情去看它，不要用厌恶的心情对它，要去尊重它，要用更好的方法、更好的习惯去取代它。</p>
</li>
<li>
<p>一个人要改变别人是很困难的，改变自己会更容易。</p>
</li>
<li>
<p>每一个人只能够控制自己，很难去掌握别人，求人不如求己。</p>
</li>
<li>
<p>改变自己的人生是比较自动和主动的，即一个人怎么想，他就会产生什么样的感受。</p>
</li>
<li>
<p>同样的天气，有人觉得很好，有人觉得不好。天气是客观的存在，但人有主观的感受。</p>
</li>
<li>
<p>当老板的尽量不要让中层干部知道自己的喜好，否则会影响团体的情绪和运作。</p>
</li>
<li>
<p>改变别人最有效的办法就是改变自己，这叫“以身作则”。</p>
</li>
<li>
<p>改变小孩子最有效的办法，就是爸爸自己改变。但是如果爸爸改变不了的话，就要做到“以身为戒”。比如一个爸爸想戒烟但戒不掉，他就告诉儿子，说自己也不喜欢抽烟，但是戒不掉，这是自己的毛病，让儿子不要学。</p>
</li>
<li>
<p>不用完全以身作则，因为大家都不是圣人，但是要做到“以身为戒”就比较容易。这也是比较好的教育方法。</p>
</li>
<li>
<p>大家要记住几句话：第一，你的情绪会影响到别人；第二，你要让别人平稳，你就要自己先平稳；第三，一旦发生什么错误，你先改变自己，别人很快就会跟着改变。</p>
</li>
<li>
<p>什么叫作参考力？就是一个人会很自然地学别人，而不是强制自己要和别人一样。一个人最有价值的地方就是有参考力而不是有权力。如果你今天去勉强别人、限制别人，而不是去潜移默化地影响他，他一定是心不甘情不愿地接受你的安排，只要你一放松警惕，他就会做更坏的事情。因为人都是有逆反心理的。</p>
</li>
<li>
<p>自己的社会地位有多高，学问有多大，钱财有多少，一定要做到以身作则或者以身为戒，而不是强制别人去执行自己的命令。一个人把自己管好，大家很愿意同他在一起，会很自愿地模仿他、跟他学。</p>
</li>
<li>
<p>有心种花花不开，无意插柳柳成荫。</p>
</li>
</ol>
<h3 id="第五章-人要看开不要看破">第五章 人要“看开”，不要“看破”</h3>
<ol>
<li>有治标的方法，也有治本的方法，只有找到合理的方法，才能正确管理自己的情绪。</li>
</ol>
<h3 id="第一节-管理情绪时常见的治标方法">第一节 管理情绪时常见的治标方法</h3>
<ol>
<li>
<p>人在气头上，在高度激昂的情绪之下，是相当不理性的。但是时过境迁，大家会觉得那没有什么了不起。</p>
</li>
<li>
<p>当情绪稳定的时候，很多天大的事情，人都会觉得不算什么；但是在气头上时，小事也会变成大事。</p>
</li>
<li>
<p>当另一半声音很高的时候，你不要比他更高，对方说话声音越大，你说话声音就要越小，他就会慢慢小声下来。</p>
</li>
<li>
<p>每个人一定会找到一种消气的方法，但是基本上没有太大的用处，因为这些方法都是治标的，只会在短暂的时间里让一个人消消气，不能解决根本问题。</p>
</li>
<li>
<p>有时大家看见一个人总是穿戴得整整齐齐，面带笑容，讲话也很有精神，觉得这个人好像从来没有病过。其实在他遭遇到不幸时，他在家里受疾病折磨时，大家又何尝知道。</p>
</li>
<li>
<p>做人应该有一颗“平常心”，这话听起来很平常，但事实上很不平常。如果无论发生什么事情，都认为没什么大惊小怪的，这个人的情绪就会很稳定。</p>
</li>
<li>
<p>任何一个新事物的产生，都有它产生的原因，而且刚开始原因多半都是很正当的，因为人类不可能平白无故去制造一些害人的东西。但是这些东西到后来会越用越乱，造成很多后遗症。比如人类制造刀具，本来是要用来切肉、切菜的，绝对不是为了杀人，除非是兵器，但现在人们会拿菜刀杀人；人类制造手机，是为了方便人们之间互相联系，但是现在有人却通过手机进行诈骗活动。所有这些都是人的问题，不是工具的问题。</p>
</li>
<li>
<p>调整心态是调整情绪的唯一可行的方法，心态是自己可以调整和控制的。一个人只要改变心态，就会改变整个情绪。</p>
</li>
<li>
<p>当一个小孩摔跤的时候，妈妈最好的办法就是不要动，也不要说话，让他自己站起来，再问他有什么地方痛没有。就事论事，不要谈到情绪问题，他就不会引发这些情绪的反应，然后妈妈告诉他没有关系，谁都会摔跤，妈妈以前也摔过，以后小心一点就行了，小孩子就不会有什么情绪负债。</p>
</li>
<li>
<p>人们不是被事情所困惑，而是被自己对事情的看法所困惑，而看待事情的这种观点，是人类自己可以控制的。</p>
</li>
<li>
<p>一个人去买了一瓶酒，回家后尝了一口，觉得很难喝，他会有什么反应呢？首先，他会想到自己上当了，要把钱要回来，不然就吃亏了。这样想的话他会很不愉快。但是如果他换个角度想一下：天底下竟然有这么难喝的酒，自己以前还没有喝过。那就没事了，反正钱已经花了，根本要不回来，再去找别人，还是弄得自己生气。以后他就会记得买酒的时候，要先倒一点点品尝品尝，然后再决定买还是不买。这样的话他就不会再有什么情绪负债了。</p>
</li>
<li>
<p>人们无法改变外界，但是完全可以控制自己。比如一个人想要一杯水的温度符合自己的需要，那是很难的，因为它随时在变化，因为天气的关系，它有时候冷得很快，有时候冷得很慢；如果这个人对它没有什么期待，能喝就多喝一点，不能喝就等等再喝，那他的心情就不会受到影响。</p>
</li>
<li>
<p>在今天的社会、今天的环境中，一个人要求别人配合自己是高难度的，是几乎不可能的，所以人们只能改变自己。</p>
</li>
<li>
<p>有太多的选择，就等于无从选择。</p>
</li>
<li>
<p>没有那么多人在关注你，所以你不要总是在乎别人的看法。</p>
</li>
<li>
<p>很多苦恼都是人自己找的，很多不安宁也都是人自己想出来的，人类最大的敌人是自己，所有的痛苦和不安宁，都是自己找来的麻烦。</p>
</li>
<li>
<p>心情会改变一切的感受，会改变自己的情绪，这是大家可以掌握的、很方便而且很有效的办法。</p>
</li>
</ol>
<h3 id="第二节-如何觉察自己真正的情绪">第二节 如何觉察自己真正的情绪</h3>
<ol>
<li>
<p>人类为什么那么不容易了解自己？因为大家都认为外面的才是真实的，人的眼睛是往外长的，所以只看得到外面的东西，不太了解自己身体和心理的变化。</p>
</li>
<li>
<p>相信每个人都有这样的体验：同样一句话，当人心情很好的时候，会觉得它是好话；当人心情不好的时候，它就变成坏话。</p>
</li>
<li>
<p>现在的小孩很可怜，他什么东西都不用想，因为前辈们已经把所有的答案都想好了，他只要等着接收答案就行了，因而逐渐失去了自主性和创造力。</p>
</li>
<li>
<p>人们很容易受到外在环境的影响，理性完全被自己的情绪所淹没，所以人们越来越冲动。</p>
</li>
<li>
<p>不要总是把自己的焦点放在不可控制的部分，做任何事情都会有一定的风险性，风险性是不可控制的，大家要先把可以控制的部分控制好，再去处理不可控制的部分。</p>
</li>
<li>
<p>当一个人无缘无故地把手握得很紧的时候，就表示他要发脾气，不是拍桌子就是要打人了。</p>
</li>
<li>
<p>人们所看、所闻、所接触的是外在的，生理变化是内在的，还有一种是人们对信息的解读，那就是中间层面的。比如一个学生考完试以后，他会自己想“考不好怎么办”，这不是内在和外在的东西，而是中间层面的；一个人去体检，他会怀疑自己的身体健康，觉得癌症很可怕，“如果自己得癌症怎么办”，这也不是内在和外在的，而是中间层面的。</p>
</li>
<li>
<p>人们可以有选择，但是最关键的还是最后的决定，所以平常为什么要有明确的价值观、人生观和世界观，就是在最关键的时刻，人怎么选择自己的决定。</p>
</li>
<li>
<p>一个人只有明白自己的情绪，才有办法去合理地处理它，所以，一个人遇事时最好的处理办法就是保持冷静、不要冲动。当刺激过来时，先冷静一下，去想想外在的是什么，内在的是什么，中间层是什么，将其综合起来进行判断，再做出自己的反应。这时的反应应该是很正确的，人不会后悔。</p>
</li>
<li>
<p>“推、拖、拉”就是争取很短暂的时间，把外在的状况和内在的情形，再加上中间层的态度与思考，做一个综合的判断，然后做出合理的选择。</p>
</li>
<li>
<p>一个人不推、不拖、不拉，立即反应，别人给他东西，他马上决定要还是不要，就是目中无人；别人给他东西，他推一下、拖一下，慢慢再想要不要，就是合理的。</p>
</li>
<li>
<p>有人认为中国人很虚伪，其实不是虚伪，他只是在这个“推、拖、拉”的过程当中，去找一个合理的情绪反应。</p>
</li>
</ol>
<h3 id="第三节-情绪管理的理论">第三节 情绪管理的理论</h3>
<ol>
<li>
<p>情绪管理有一个很著名而且很重要的理论，叫作情绪理论，是美国心理学家阿尔伯特·艾利斯(Albert Ellis)提出的。</p>
</li>
<li>
<p>A(Activating events)是指不断发生变化的环境所引发的事件。</p>
</li>
<li>
<p>B(Belief)是指人们对这个事情的信念、感觉或者观点。</p>
</li>
<li>
<p>C(Consequence)就是我们常讲的情绪。</p>
</li>
<li>
<p>不同的人对相同的事件可能不会采取相同的立场、产生相同的观点、产生一样的情绪，除非当环境非常恶劣而大家有共同需求的时候，人们会产生非常抑制性的情绪，即“同仇敌忾”，这时大家没有什么个人的想法，也没有什么不同的情绪反应，他们都在为一个同样的目标而奋斗。</p>
</li>
<li>
<p>现在大家应该知道，事件发生了，与情绪当中的一个媒介有关，这个媒介就是人的看法。人无法控制事件，但是可以调整自己的看法，这就在情绪和环境的变化当中加了一道控制阀。一个人只要把自己的信念调整好，就可以保持稳定的情绪，所以，B才是关键的。</p>
</li>
<li>
<p>现在很多人喜欢显示自己很聪明、反应很快，所以有什么刺激他马上就会有所反应，结果经常吃大亏，这叫作鲁莽、莽撞。当有任何刺激发生的时候，大家最好先把嘴巴闭起来，因为嘴巴是很容易闯祸的东西。</p>
</li>
<li>
<p>聪明的人看到一件事情发生了，嘴巴会先闭起来，这个刺激就会在他脑海里面盘旋一下，然后他会找出比较合理的信念，用嘴巴表达出来，即人们平常所说的“谨言慎行”。</p>
</li>
<li>
<p>人是观念的动物，观念一改变，态度就改变，信念也会不同，然后情绪就会不一样。</p>
</li>
<li>
<p>比如说一个人今天出去，碰到下雨他就很不高兴：怎么这个时候下雨？但是如果他心里想：为什么这个时候不能下雨呢，有很多人盼望着下雨呢，不能因为我一个人反对下雨就不下了。这么一来，他的情绪就会冷静下来。</p>
</li>
<li>
<p>一个人如果要管理好自己的情绪，最有效的办法，就是时时刻刻调整自己的观念，而不要寄希望于别人或者抱怨老天，也不要不切实际地希望外界的环境会改变。</p>
</li>
<li>
<p>一个人有修养，就是他会把不合逻辑的转成合逻辑的，把那些非理性的转成理性的。</p>
</li>
<li>
<p>观念可以让人的情绪改变。</p>
</li>
<li>
<p>比如一个人生气了，他说“他这种行为我当然生气”，别人的行为引起他的生气，这太单纯了。同样的行为，他可能生气也可能不生气，这才是事实。</p>
</li>
<li>
<p>如果一个人是公司里的中层领导，他的下属骂他，他就会生气，可是他的领导骂他的时候，他就不会生气。为什么领导骂他他就受得了，下属骂他他就受不了呢？这跟他个人的观念有关。</p>
</li>
<li>
<p>有时候你去买东西，会和别人吵架，就是因为你看不起别人，你觉得他是卖东西的，要赚你的钱，没什么了不起，这是你自己的问题。其实，看到大官你要“小看”他，看到小人物你要“大看”他，这样你的情绪就会很平稳。如果你看到大官就怕，有话也不敢讲，他就会欺负你；看到小人物，你看不起他，他被你激怒了就会给你难堪，你就吃亏了。这个“度”要拿捏得恰到好处。</p>
</li>
<li>
<p>没有人会因为别人而改变，只有自己会为配合自己而改变。所以大家慢慢会找到一条路，在某种情况之下，把非理性变为理性。</p>
</li>
<li>
<p>如果任何事情发生的时候人能先动动脑筋，看看要怎么反应，情绪就会平稳得多。</p>
</li>
<li>
<p>A指一个事情发生了；B指一个人对这件事情的主观看法，因为每个人立场不同，所以观点也不同；C指人的主观看法，对这件事情的反应，即情绪表现；D指反省，对自己的行为做一个反省：这样做看看别人的反应怎么样；E指如果反省后发现行为不好，就赶快调整，调整以后再重新出发。</p>
</li>
<li>
<p>你向一个中国人道歉，你跟他说：“我真的很对不起。”他会问：“什么事？”你说：“我那一天实在是无意撞到你的，事后又没有来看你，所以我觉得很抱歉。”他会说：“我还以为有什么大事情，原来是这件事情，我老早就忘记了，你记在心里干吗？”他虽然嘴上这样说，但是他照样想办法整你。</p>
</li>
<li>
<p>中国的夫妻吵架，不是用道歉就可以解决问题的，而是要用实际的行动。</p>
</li>
<li>
<p>中国人一定要含蓄一点、缓慢一点。</p>
</li>
<li>
<p>有一项调查结果表明，如果那种很会说话的人做业务员，业绩一般都做得不好，因为人们不会太相信他，会觉得他讲得天花乱坠，不切实际，可能是在骗自己。反而是那种有口疾、讲话根本讲不清楚的人业绩很好，因为大家觉得他很实在，会觉得这人连话都讲不清楚，是不会骗自己的。</p>
</li>
<li>
<p>比如说我有意见，首先，我会坐在那里做一个动作：到处看。看到有人看我，我就请他讲；他开始讲了，我再看，看到有人看我，我就请他讲。当我请了很多人的时候，我站起来，所有人都注意我，为什么？因为那么多人请我讲，我怎么能不讲呢，这叫作众望所归。你尊重他，你讲话的时候，他就慢慢听；你不尊重他，你站起来他根本充耳不闻。所以，一个人讲话别人会听和一个人讲话别人不听，是取决于那个看不见的部分，而不是那个看得见、听得见的部分。</p>
</li>
<li>
<p>你和你的领导一起出去，领导还没有讲话你就讲，你是没有前途的。领导心里会想：我都还没有讲呢，就轮到你讲了。除非他叫你讲，否则你没有资格讲，这就叫作伦理。</p>
</li>
<li>
<p>最聪明的人是把最好的意见偷偷地告诉领导，让领导去表现，那这个人会前途无量。你拼命动脑筋，把最好的意见偷偷地给领导，让他去表现，他如果有机会升职，第一个就会提拔你，这就够了。对于中国人而言，暗的部分、看不见的部分，绝对比明显的部分要重要。</p>
</li>
<li>
<p>当一个人看到一杯茶的时候，他的想法是口很渴，想拿来喝，但是他马上会想到，如果先伸手去，很多人就会不高兴。很多中国人会这样做：拿起茶杯来，然后说“请”，请每一个人，每个人都高兴了，他就会说“抱歉，对不起，那我就先喝了”。大家就会觉得他这个人很有礼貌，很会做人。</p>
</li>
<li>
<p>当一个人烟瘾发作的时候，他也不会立刻拿出烟来自己抽，而是会请周围的人抽，请一圈，然后自己才开始抽。可是如果身上只有一支烟，怎么办？大部分人都不会处理，因为烟这个东西，是请来请去的，一个人只要先把烟拿出来，他就要请大家的，这样下次别人也会请他。而美国人是自己抽什么烟，他就拿出来自己抽，根本不在乎别人，不需要照顾别人，别人也不会怪他。</p>
</li>
<li>
<p>在中国，如果一个人只剩下一支烟，他大概会有以下几种反应：第一，拿起来就请别人抽，但是别人拿去他就没烟抽了。第二，躲在一边偷偷地抽，这样也不对。偷偷地抽，所有人都会看到。大家就会想：一支烟也没有多少钱，这个人小气到这种地步，还躲在那里抽。第三，拿烟出来的时候一定会大声说：奇怪，刚刚买的，怎么剩下一支呢？但是照请大家，那别人听到他那么大声说，一定说不抽不抽了，大家都知道他剩下一支了，然后这个人就可以自己抽了。还有第四，是最高明的人的方法。假定只有两个人，一个人说：糟糕，怎么烟只剩下一支了，你来你来。另一个人说：不用不用。这个人说：要共患难，一人一半。然后还做个动作，把烟要扯断的样子。另一个人肯定会不好意思的，这样，拿烟的那个人就可以自己抽了。</p>
</li>
</ol>
<h3 id="第四节-摆脱二分法思维的束缚">第四节 摆脱二分法思维的束缚</h3>
<ol>
<li>
<p>人们在很多地方都大力宣传，要赶快摆脱二分法思维的束缚，但这并不是简单的事情。因为人们从小所受的教育，就是要做到是非分明：什么事情都要分出对和错，分出好和坏。小学老师有标准的答案，其实这是不太正确的态度，但是他们教学的对象是小学生，所以他们不得不用二分法，因为小孩子懂的东西很少，很难在“是中有非、非中有是”的情况下去了解事情。所以，小学老师只能教给他们很单纯的“对与错、好与坏、是与非”，这是不得已的事情。</p>
</li>
<li>
<p>世界上的事情，“绝对”的几乎很少。比如哪个人是绝对的好人、哪个人是绝对的坏人，很难区分。</p>
</li>
<li>
<p>茶好不好喝，中国人不会马上回答，而是会说：“我喝喝看。”然后说：“好像还不错，你觉得呢？”很多中国人都是这种态度。凡是不假思索直接判断的都非常可怕，但是人们都很喜欢不假思索直接判断，认为这样做是“果断”，会显得很有能力，会显得一个人敢于承担责任。其实，这种情况也可以称为“武断”，有时是主观片面的。</p>
</li>
<li>
<p>有一得必有一失，有一失就有一得。</p>
</li>
<li>
<p>“大家一定要公平地对待我，不然的话就应该下地狱。”为什么大家都要公平地对待你呢？你看到的只是眼前的事情，如果你把时间拉长一点，会发现自己半个月前到他家去闹事了，结果你忘记了而他却记住了，这次他好不容易看到你，会公平地对待你吗？往往得罪人的人把事情全忘记了，但是被得罪的人会记得牢牢的。所以，不要把时光“切断”，要把时间拉长一点，看看自己和别人的实际情况，再来判断公平不公平。</p>
</li>
<li>
<p>你喜欢快乐，大家就要让你快乐。你有这么厉害吗？有钱大家都应该尊重你，为什么？</p>
</li>
<li>
<p>人海茫茫，所以你不能说别人一定要认识你，一定要喜欢你，让你快乐。有个词叫作“自寻烦恼”，同样，人也可以“自寻快乐”。</p>
</li>
<li>
<p>三分法会使人们很快乐。中国人最了不起的地方，就是把两个东西看成三个，这是在全世界其他地方都找不到的智慧。</p>
</li>
<li>
<p>中国人是二合一而不是二选一，中国人不走极端而是综合判断，想到“一定”马上就会想到“不一定”，想到“不一定”就会马上想到“一定”，这是高难度的，不容易学，但是非常值得大家学习。</p>
</li>
<li>
<p>如果用三分法来看，大家会发现公平就代表不公平，不公平才是真的公平，所谓的公平都是假的公平。</p>
</li>
<li>
<p>公平不是大家都一样，公平是大家合理地不一样。</p>
</li>
<li>
<p>中国人是把公平与不公平合在一起想的，因为他知道人世间资源是不足的，机会是有限的，根本不可能公平，公平是骗人的。</p>
</li>
<li>
<p>人们都活在相对的世界，只能够拥有相对的自由，只能够获得相对的平等。人世间也只有相对的光明，即与黑暗相对的光明。</p>
</li>
<li>
<p>快乐要自己求得，不是别人给的。一个人只要摆脱二分法的思维，就会很快乐。</p>
</li>
<li>
<p>好与坏是一样的，得与失是一样的，哪一天一个人真的能够做到生与死是一样的，那他还有什么不快乐呢？</p>
</li>
</ol>
<h3 id="第五节-管理情绪只有一条规则">第五节 管理情绪只有一条规则</h3>
<ol>
<li>
<p>管理情绪只有一条规则而已：当人观念正确的时候，人的情绪就很稳定。人们被很多不正确的观念所影响，结果导致自己的情绪不稳定。情绪是谁在主管？有的人会说是别人让他生气，环境使他痛苦，事情使他伤脑筋，唯独不说是他自己造成的。情绪如果随着外界环境的变化而变动，就表示这个人没有尽到自己是自己的主人这个责任。</p>
</li>
<li>
<p>中国人不太喜欢当面骂人，但是会给别人脸色看。给脸色看和摆架子是完全不一样的：摆架子叫“臭架子”，给别人脸色看是尊重别人的意思。一般人的错误观念是：脸色这么难看，真不礼貌，我比你更难看。其实正确的观念是：他摆脸色给我看了，他是尊重我，他希望我自己改变，那我改变就好了。</p>
</li>
<li>
<p>人们时时刻刻都要调整自己的观念，这就是儒家所讲的反求诸己。</p>
</li>
<li>
<p>很多人认为领导应该对自己客客气气的。其实领导对一个员工客气，这个员工是没有福气的；领导对这个员工不客气，说明他把这个员工当自己人，他有什么事情，不会找别人，而会专门去找这个员工做。所以，员工应该感谢他，而不是抱怨他对自己不客气。</p>
</li>
<li>
<p>大家都是人，都有情绪反应，不能认为只有自己可以发脾气，别人不可以发脾气。</p>
</li>
<li>
<p>我是长官是上级，我可以发脾气。好像他不发脾气就显不出自己的威风一样。</p>
</li>
<li>
<p>有的领导会希望他的员工发脾气，因为员工发脾气，他才知道员工真正的个性是什么；如果员工永远不发脾气，他就不知道员工到底是什么样的人。因为人都有一个忍耐的界限，如果有人没有这个界限，那他很可怕。</p>
</li>
<li>
<p>激烈的反应对身心是有害的。</p>
</li>
<li>
<p>大家应尽量避免激动，保持情绪稳定。</p>
</li>
<li>
<p>攻击不能排泄情绪，摔东西不能解决问题。</p>
</li>
<li>
<p>文化是当时当地、大家共同孕育出来的一套“花样”。</p>
</li>
</ol>
<h3 id="第六章-挖掘内心的自己善待多变的情绪">第六章 挖掘内心的自己，善待多变的情绪</h3>
<ol>
<li>愤怒、忧郁、难过、哀伤、焦虑、害怕，这几种情绪大家都经历过；无助感、无力感、羞愧感、罪恶感，这几种感觉大家也都体会过。如何看待它们？如何调整它们？还需要我们仔细挖掘内心的自己，客观对待多变的情绪。</li>
</ol>
<h3 id="第一节-放下愤怒与忧郁适度管理情绪">第一节 放下愤怒与忧郁，适度管理情绪</h3>
<ol>
<li>
<p>如果一个人明白愤怒的真相，他应该就不太会愤怒了，因为愤怒是拿别人的错误来惩罚自己。</p>
</li>
<li>
<p>做错的人没有受罪，生气的人在受罪，那就是用别人的错误来惩罚自己。</p>
</li>
<li>
<p>他是领导，员工不能让领导承认自己说错话了，不然他就没有领导权威了。</p>
</li>
<li>
<p>愤怒其实是后悔的前奏。</p>
</li>
<li>
<p>当一个人把很具体、很明确的会忧虑的事情列举出来以后，再去解决，他就没有忧虑了。所以大家要深入去分析，看自己到底怕什么、担心什么，把它找出来，能解决的就解决，不能解决的就顺其自然，看事情如何发展。</p>
</li>
<li>
<p>每个人都要提醒自己，不要长期把焦点注意在那种使自己担心、害怕的地方，其实只要一转移注意力，人就会把那些地方给忘记。</p>
</li>
</ol>
<h3 id="第二节-正视难过与哀伤激发适应性">第二节 正视难过与哀伤，激发适应性</h3>
<ol>
<li>
<p>当你要和一个人道别时，你突然间很难过甚至想哭，你会觉得伤心，这就是不祥的征兆，表示从此不会再见面了。</p>
</li>
<li>
<p>人们应该要记住：长期的隐藏难过对身体是不好的，应该适当地让它排泄。因为长期的隐藏、忍住会变成无力感，而无力感再下去就变成无助感，最后自己会救不了自己。</p>
</li>
<li>
<p>对于一切情感，大家不要去控制、压抑它，而要让它自然地发泄，但是要“适可而止”。</p>
</li>
</ol>
<h3 id="第三节-莫要焦虑与害怕一切顺其自然">第三节 莫要焦虑与害怕，一切顺其自然</h3>
<ol>
<li>
<p>一切事情都是人自己想出来的，都是人自己的选择。</p>
</li>
<li>
<p>一个人如果顾虑太多，他会一事无成；一个人如果完全不顾虑，那他是鲁莽。</p>
</li>
<li>
<p>一个老板要相信自己的中层经理人，要坚信这些中层领导是经过自己长期考验的，如果连他们都不能相信，那就没办法开展工作了。</p>
</li>
<li>
<p>人们所能控制的事情并不多，小事情可以控制，大事情很少能控制得了。比如夏天下冰雹，人们不能控制；泥石流什么时候下来，人们也不能控制。</p>
</li>
<li>
<p>每一个人都害怕失败，因为从小大家就感觉到失败是很可怕的。</p>
</li>
<li>
<p>一个人最好没有“得失心”：得就是失，失就是得。</p>
</li>
<li>
<p>人要自己去造成对自己有利的结果，而不是听天由命。</p>
</li>
<li>
<p>未来，人不能控制，未来会怎么样大家也料想不到，所以人会患得患失，焦急然后忧愁。其实，未来是会变化的，跟那些变化的东西较什么劲呢？未来是不可控制的，还能强求什么呢？</p>
</li>
<li>
<p>害怕是对的，害怕是人对不可知的、不了解的、掌握不了的事情的一种很自然的反应。</p>
</li>
<li>
<p>害怕有它的好处，就是会保护人类自己。</p>
</li>
<li>
<p>什么都不怕，人会无法无天；什么都怕，人会止步不前，没有什么大出息。</p>
</li>
<li>
<p>盲目的害怕是错的，适当的害怕是会很安全的，过分的害怕会伤害人的生理和心灵。</p>
</li>
</ol>
<h3 id="第四节-甩掉无助感与无力感重获力量">第四节 甩掉无助感与无力感，重获力量</h3>
<ol>
<li>
<p>造成沮丧的因素有三个：第一，看不起自己，因为到处都碰壁，做事情不如意，就会慢慢贬低自己；第二，自贬之后就会慢慢可怜自己；第三，会可怜别人，其实对自己可怜跟对别人可怜是一样的，只有可怜人会可怜别人。</p>
</li>
<li>
<p>孔子说“三人行，必有我师焉”，每一个人都有比自己更好的长处。孔子说自己种田不如农夫，打猎不如猎人，但是讲道理讲得过别人，也就是说人各有所长各有所短。</p>
</li>
<li>
<p>大家诧异一个人能力提高得快时，经常会讲“学识英博，非复吴下阿蒙”。</p>
</li>
<li>
<p>人要很快改变自己，不要天天在那里可怜自己、贬低自己，或者可怜别人。整天可怜别人对别人也没有帮助，应该做的是给他有效的协助，而不是同情他、取笑他，更不是可怜他。中国人同情弱者但并不同情可怜的人，是有道理的。</p>
</li>
<li>
<p>一个人最好不要苛求自己样样都懂，因为那是不可能的事情，并且会给自己太大的压力。</p>
</li>
<li>
<p>无助感是一个人碰到了太多挫折，他连突破的愿望都没有了，安于现状，无力感久了以后就会变成无助感。</p>
</li>
<li>
<p>小事情是谋事在人成事在天，大事情是谋事在天成事在人。</p>
</li>
<li>
<p>在我看来，做大事的人一般都没有自我、没有理想、没有使命，否则做不了大事。一个人有理想、有抱负、有计划，只能做小事而已。计划是需要的，但真正的大事是谁也计划不了的。</p>
</li>
<li>
<p>人一旦发现自己有无力感的时候就要特别提高警觉。想想自己为什么有无力感，因为无力感积累起来就会变成无助感，人有了无助感就没救了。</p>
</li>
</ol>
<h3 id="第五节-适度的羞愧感与罪恶感助人成长">第五节 适度的羞愧感与罪恶感，助人成长</h3>
<ol>
<li>
<p>一个孝敬父母的人，他的孝心不是表现在拿钱给父母花上面，而是表现在“不丢父母的脸”上面。</p>
</li>
<li>
<p>很多真正孝顺的人在外面常常会顾虑到父母的脸面。一个人想偷别人的东西又不敢偷，一方面是怕违法，被警察抓去，另一方面就是“怕丢父母的脸”。</p>
</li>
<li>
<p>一个人再笨，也一定有自己的长处，只要发挥自己的长处就好了。</p>
</li>
<li>
<p>一个人承认错误以后，要忘记错误、原谅自己、学习成长，不要老活在过去的阴影里面，这样才有新生活的希望。以前犯的错误，改不了也换不回来，所能改变的只是未来，未来好好做就行了。</p>
</li>
<li>
<p>人对人是一面镜子，当人对着镜子笑的时候，他会发现镜子里面的人也在对他笑；当人对着镜子生气的时候，镜子里的人也在对他生气。</p>
</li>
<li>
<p>当一个人出现的时候，你认为他会对你很好、他会与你和谐相处，那你往往就会与他和谐相处；当一个人进来以后，你认为他是坏人、存心不良，那他也许就真的存心不良了。</p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《在对的时间做对的事：俞敏洪写给年轻人的8堂创业课》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%9C%A8%E5%AF%B9%E7%9A%84%E6%97%B6%E9%97%B4%E5%81%9A%E5%AF%B9%E7%9A%84%E4%BA%8B%E4%BF%9E%E6%95%8F%E6%B4%AA%E5%86%99%E7%BB%99%E5%B9%B4%E8%BD%BB%E4%BA%BA%E7%9A%848%E5%A0%82%E5%88%9B%E4%B8%9A%E8%AF%BE/</link>
      <pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%9C%A8%E5%AF%B9%E7%9A%84%E6%97%B6%E9%97%B4%E5%81%9A%E5%AF%B9%E7%9A%84%E4%BA%8B%E4%BF%9E%E6%95%8F%E6%B4%AA%E5%86%99%E7%BB%99%E5%B9%B4%E8%BD%BB%E4%BA%BA%E7%9A%848%E5%A0%82%E5%88%9B%E4%B8%9A%E8%AF%BE/</guid>
      <description>&lt;h3 id=&#34;俞敏洪创业金句&#34;&gt;俞敏洪创业金句&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;年轻人，去闯，去努力，去奋斗，去做自己最想做的事情。只要不做坏事，只要保持良心，剩下的什么事情都能做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;客户、创始人、合伙人、投资人。把这四种人照顾好，创业一定会成功。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自序-永远相信永远充满渴望&#34;&gt;自序 永远相信，永远充满渴望&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我常常说人生有两种活法：一种是平庸地度过，比如很多白领或者我周围的一些朋友，不愿放弃自己已经拥有的东西，确实过得很舒服，也很平稳，但生活里也没有什么奇迹发生；另一种就是不甘平庸地度过，所谓的不甘平庸，不是突破现状，更多是突破自己，找到全新的自我，不害怕失败，不气馁，相信自己终会成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓的选择是在有风险的时候，仍对自己的人生抱有希望，对自己的事业抱有希望，对与朋友的合作抱有希望，这一切都是对自己的认可。如果没有冒险参与一件事的激情，就不可能享受在这个时代和一帮人做事情的成果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有任何人能保证创业一定会成功，事实上，很多人创业的结果是失败了。但我觉得，尽管创业是一个艰苦的过程，也意味着你会放弃很多东西，可能还会面临冒险、挫折和失败，但是如果不愿意经受这样的挫折和失败，不愿意放弃原有的生活，就意味着你永远只能在平庸的道路上走下去。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;推荐序-创业路上我的榜样&#34;&gt;推荐序 创业路上，我的榜样&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一个孤军奋战的人也许能成为英雄，但他却不能成就事业。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;这个世界的未来永远属于年轻人&#34;&gt;这个世界的未来永远属于年轻人&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;著名作家毛姆说过这么一句话：“当你听到年轻人自信满满、目中无人地满口胡言时，当你看到他武断教条、偏执狭隘时，你生气做什么？指出他的愚昧无知做什么？你难道忘了，你跟他一般年纪的时候也是这般愚蠢、武断、傲慢、狂妄。我说的是你，也说的是我自己。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;在对的时间做对的事&#34;&gt;在对的时间做对的事&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;我认为，做好一件事，一定是资源、能力和理想相加，最后的结果不是等于3，而是300，这样的一个过程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;做创业成功的刘邦&#34;&gt;做创业成功的刘邦&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;刘邦为什么会成功？刘邦的成功特别简单。第一，他有足够的社会经验和背景。他本身就是个小官僚，他知道中国的官僚体系到底是怎么回事，他知道如果一件事情要做起来，搭建人才结构和搭建组织结构的重要性。在当时，造反派远远不止刘邦和项羽两个人。但只有刘邦最开始就着手搭建人才结构和组织结构，并把这个结构搭建得非常好。第二，刘邦知道什么人应该用在什么地方。他从来没有乱用人，每一个人都用得非常到位。第三，刘邦用的这些人帮他搭建了一个很好的建国团队。第四，国家还没有成立的时候，刘邦的组织结构就已经搭建起来了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;创业不是大学生突发奇想就去做的事&#34;&gt;创业不是大学生突发奇想就去做的事&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;这辈子能丢什么呢？只要不是把命丢了，其实什么都没丢。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;只有好想法不能支撑起一个公司&#34;&gt;只有好想法不能支撑起一个公司&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我刚成立新东方时用的方法很简单，从一个项目入手，只做托福班，把一个班变成两个班、三个班，目标是占领整个中国的托福市场。那时候其他人既做GRE，又做托福，都是综合型的，而我只做托福。就这样，我用了一年时间打遍整个北京，北大的托福班都关门了，全国各地的人听说我这里的托福班很厉害，不远万里跑到北京，来找地方住，就为上新东方的课。到这个时候，我才告诉我的同事，我们现在要开第二个课程——GRE（美国研究生入学考试），因为来上托福的学生大部分都要接着上GRE。开始没做GRE有两个原因：第一，还没有找到合适的GRE老师；第二，我同时管两个项目根本忙不过来，担心两个都做不好。因此，我用了一年时间培训GRE老师，跟托福班的其中3个老师说不要上托福课，专心为GRE课程备课，我们4个人加在一起，如果GRE能讲到顶级状态就开课。当时备课一分钱没有，但是只要能讲GRE，工资立刻就是讲托福课的一倍。GRE课程一举成功，4个老师一下子10个班打遍天下，3个月时间就占领了中国的全部市场。接下来，项目我还是一个一个地去做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创业是一个长期的过程，没有最后的成功，只有不断的进步。每一个成功的企业家，不管年龄多大，也依然在天天想着继续创业。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;创业之前先审视自己&#34;&gt;创业之前，先审视自己&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;新东方当初能坚持下来的一个很重要的原因是，我自己就是个好老师，当时开设的很多课程我自己都能教，因此和我一起工作的老师只要能拿到自己觉得满意的工资，就不会跟我提其他非分的要求，他们知道，一旦要求过分，我自己就能顶替他们上课，不会对新东方造成太大伤害。所以，当你白手起家、身无分文，或者资金有限的时候，有一个重要前提，那就是：你必须是你创业的这个领域中的专家，是一个能掌控大局的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我花了至少五年时间才开始在管理新东方上感到得心应手。能力是不断成长的，关键是要努力学习，提高自身技能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大隐隐于市，小隐隐于野&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在一个人走进你的公司之后，他会根据自己的能力和贡献每天衡量自己到底应该得到什么，人与人之间永远都在寻找一种平衡关系。比如，人们会衡量自己在对方心中的分量到底有多重，当他觉得自己在对方心中的分量还不够重时，他是不会来跟你计较的；等到他觉得自己的才能、技术或者领导力已经达到能和你较劲的水平的时候，如果他不做出任何行动，那他就是傻瓜。所以，人与人永远都是处在某种平衡中，而这种平衡需要你对人性有深刻的了解，并且随时把握每个人的动向，满足他们的需求，同时还能压制他们不合理的要求和欲望，能让他们跟你一条心，不断往前走。所以，对人的把控能力、对环境的把控能力、对企业发展步骤的把控能力，构成了你创业是否成功的重要条件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;我心中的理想创业&#34;&gt;我心中的理想创业&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我希望每个创业者在创业前都可以问自己，一是我真的有好的项目吗？这个项目真的有创新性吗？二是我在这个领域真的有经验吗？三是我真的能带领一个团队往前走吗？四是凭我的项目和项目计划书，我真的能找到钱吗？一定不要假想一个自以为存在的市场和自以为存在的客户。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们被拒绝了会说俞老师，你可以说我这个项目不好，也可以不投我，但是你作为创业界的前辈，能不能给我一点儿指导，告诉我这个项目到底哪儿有修改的余地。我会觉得这样的人想努力、有理想，值得我重新考虑。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;靠谱成就伟大事业&#34;&gt;靠谱成就伟大事业&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;做公司有三个核心要素——“做伟大的事，找靠谱的人，分更多的钱”。而对项目是否伪需求的分析，直接关系到做伟大的事情的起点。你需要考虑一些问题：这件事情本身靠谱吗？你做的这个商业模式本身靠谱吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过去一年中我接了大量商业计划书，发现至少7成甚至8成都是伪需求。这些创业者自己创造了一个想象中的项目，觉得是一个生意，结果到后来发现走不通。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;是否有足够资金，是否真的能实现，实现之后是否容易被别人复制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以我之前接触的一个项目为例，创意是尿不湿上加芯片，小孩子尿过尿父母立刻就知道。这件事情有需求；一部分卖给家长，收入几百万；更多卖给尿不湿厂家，价格20元1个，成本10元不到。但我判断，一年不到，尿不湿厂家就会自己做这件事，因为如果一年要卖几千万个尿不湿，算一算成本，就会发现还是自己开发划算。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创业者要首先明白做的事到底是不是市场真正需要的，再选择大的方向去做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事情做大了才叫伟大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你自以为客户需要的东西到底是不是客户需要的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;颠覆是为了创造，而不是纯粹为了颠覆本身。我们要认真思考该做什么，不该做什么，而不是一哄而上，只为博一个名声。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;只要不是要命的就不是绕不过的坑&#34;&gt;只要不是要命的，就不是绕不过的坑&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;家有三月余粮，这是中国老百姓最朴素的想法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我一般会告诉自己支持的项目的创始人，不管你现在有多少钱，一定要想办法节约，别铺张浪费，尤其在商业模式没有确定，收支不能平衡的情况下，不能随便乱花钱。尽管有的时候也会失去一些商业机会，但很多小型创业公司不能像滴滴、快的那样靠补贴做生意。不能因为背靠大公司，就得大公司病，花钱大手大脚，最后无以为继。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第一个当然要考虑是否产生收入，甚至到最后是否能达到收支平衡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二个是要找到正在做的事情未来的商业模式，否则积累多少大数据也没用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为有时表面上有收入模式，如提成、佣金等，但如果收入永远低于支出，项目也无法长久。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人生中有几个关键点选错了，会产生比较大的影响。比如婚姻，如果找错了人还生了孩子就麻烦了。找合伙人也是一样，合伙人跟你有利益关系，你们又分担了一些不被外人知道的秘密，如果出现纠纷，会有各种各样的麻烦，很多项目就是被创业者的合伙人折腾没的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只要不是眼高手低，有美好的梦想总是对的。幻想是不切实际，但梦想不是幻想，梦想需要一定程度地切合实际，有实现的可能性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回到现实，设计实现梦想的路径，计划分几步走。虽然会有变化，但设计和不设计带来的效益是完全不一样的。以读书为例，如果我设计今年要读100本书，结果至少能读到80~90本。但是如果我不设计，一年可能只读三四十本，因为我不会想到我要达成某个目标，也就没有动力了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;商场如战场要做到守正出奇&#34;&gt;商场如战场，要做到“守正出奇”&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;战争要守正出奇，商业也要这样。出奇也有一个线，就是“红线”。很多人会告诉你这件事情的红线，有时候可能是一条不合理的政策，有时候可能是你认为公司应该遵循的某个规章或者你个人的某种认知。这些东西表面上看是红线，但实际上，有些是可以突破的。突破以后你才可以把事业做大做好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这个过程中，我反复研究，这样一条红线，什么是安全的，什么是不安全的。所谓守正出奇就是要打漂亮仗，空城计有时候也要唱，还要唱得漂亮。把理想建立在守正出奇的概念之上，就是要永远坚持正确的东西，并且随时出手，打法灵活，那样你做事情成功的可能性就会大很多。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;创业成功要关注四种人&#34;&gt;创业成功要关注四种人&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我认为创业要想成功，需要关注四种人：客户、创始人、合伙人、投资人。把这四种人照顾好，创业一定会成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大家都会说，客户不是现实存在的吗？但是为什么那么多项目都死掉了？原因就是他们没找对真正的客户，或者没弄清楚客户真正的需求。这很像谈恋爱的时候，如果对方心里根本就没有你，你买多少钱的东西、送多少礼物都不管用。如果说对方心里有你，可能你什么都不用做，对方就会自己来找你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我身上有两样品质非常重要：一是非常精明，我知道应该怎么赚钱；二是非常大方，我知道赚钱后必须把钱分给别人。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;先让自己跳下水&#34;&gt;先让自己跳下水&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;先跳到水里这件事特别重要，不管你是从什么状态开始学习游泳，你都得先跳下去，你得踏出第一步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创业就是将一条家犬变成一只狼的过程，一旦习惯狼的生活，再想回到家犬的状态几乎是不可能的，而且我也鼓励将这种状态持续下去。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;做一个合格的创始人&#34;&gt;做一个合格的创始人&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一个合格的创始人应该具备几个要素：有专业能力，有广阔胸怀，有领导魅力，有创业精神。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你创业的时候，有关公司命脉的那几条线，你必须是专家。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创始人要能忍耐，有气度，乐于分享，遵守契约精神。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们新东方的文化就是狼性精神。我是一只狼，我带领的团队也要是狼，他们不能是狗，更不能是羊。创始人的首要本领就是要找到有同一目标、志向和精神的人。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;强留合伙人只会使公司死翘翘&#34;&gt;强留合伙人只会使公司“死翘翘”&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;思维不一致，利益不一致，共处共事只会带来矛盾与冲突，使公司偏离轨道，走向灭亡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大家都认为上市是件好事，但直到今天为止，我也不认为上市是一件纯粹的好事。在某种意义上，上市会导致外力过强，甚至扭转企业的发展方向和发展步骤。只是经过各方面的考虑，包括团队的合作、未来的发展，以及新东方过去积累的问题，我认为上市相当于用一次变革来解决这些问题，上市的好处还是比不上市更多。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;合伙人的成功其实就是大家达到了互相契合、互补的关系，原因就像人们经常问你的两个问题：你为什么选择这个男人当你的老公？你为什么选择这几个人做你的朋友？原因无非是，这些人刚好在你身边，并且在你身边的这些人里，这个人刚好和你最契合，实际上合伙人就是这个概念。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;在企业发展的不同阶段用不同的人&#34;&gt;在企业发展的不同阶段用不同的人&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;要根据不同时期、不同发展阶段，用不同的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;面对什么时代就要做出什么样的改变，我觉得这是企业家血液里应该有的东西。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="俞敏洪创业金句">俞敏洪创业金句</h3>
<ul>
<li>
<p>年轻人，去闯，去努力，去奋斗，去做自己最想做的事情。只要不做坏事，只要保持良心，剩下的什么事情都能做。</p>
</li>
<li>
<p>客户、创始人、合伙人、投资人。把这四种人照顾好，创业一定会成功。</p>
</li>
</ul>
<h3 id="自序-永远相信永远充满渴望">自序 永远相信，永远充满渴望</h3>
<ul>
<li>
<p>我常常说人生有两种活法：一种是平庸地度过，比如很多白领或者我周围的一些朋友，不愿放弃自己已经拥有的东西，确实过得很舒服，也很平稳，但生活里也没有什么奇迹发生；另一种就是不甘平庸地度过，所谓的不甘平庸，不是突破现状，更多是突破自己，找到全新的自我，不害怕失败，不气馁，相信自己终会成功。</p>
</li>
<li>
<p>所谓的选择是在有风险的时候，仍对自己的人生抱有希望，对自己的事业抱有希望，对与朋友的合作抱有希望，这一切都是对自己的认可。如果没有冒险参与一件事的激情，就不可能享受在这个时代和一帮人做事情的成果。</p>
</li>
<li>
<p>没有任何人能保证创业一定会成功，事实上，很多人创业的结果是失败了。但我觉得，尽管创业是一个艰苦的过程，也意味着你会放弃很多东西，可能还会面临冒险、挫折和失败，但是如果不愿意经受这样的挫折和失败，不愿意放弃原有的生活，就意味着你永远只能在平庸的道路上走下去。</p>
</li>
</ul>
<h3 id="推荐序-创业路上我的榜样">推荐序 创业路上，我的榜样</h3>
<ul>
<li>一个孤军奋战的人也许能成为英雄，但他却不能成就事业。</li>
</ul>
<h3 id="这个世界的未来永远属于年轻人">这个世界的未来永远属于年轻人</h3>
<ul>
<li>著名作家毛姆说过这么一句话：“当你听到年轻人自信满满、目中无人地满口胡言时，当你看到他武断教条、偏执狭隘时，你生气做什么？指出他的愚昧无知做什么？你难道忘了，你跟他一般年纪的时候也是这般愚蠢、武断、傲慢、狂妄。我说的是你，也说的是我自己。”</li>
</ul>
<h3 id="在对的时间做对的事">在对的时间做对的事</h3>
<ul>
<li>我认为，做好一件事，一定是资源、能力和理想相加，最后的结果不是等于3，而是300，这样的一个过程。</li>
</ul>
<h3 id="做创业成功的刘邦">做创业成功的刘邦</h3>
<ul>
<li>刘邦为什么会成功？刘邦的成功特别简单。第一，他有足够的社会经验和背景。他本身就是个小官僚，他知道中国的官僚体系到底是怎么回事，他知道如果一件事情要做起来，搭建人才结构和搭建组织结构的重要性。在当时，造反派远远不止刘邦和项羽两个人。但只有刘邦最开始就着手搭建人才结构和组织结构，并把这个结构搭建得非常好。第二，刘邦知道什么人应该用在什么地方。他从来没有乱用人，每一个人都用得非常到位。第三，刘邦用的这些人帮他搭建了一个很好的建国团队。第四，国家还没有成立的时候，刘邦的组织结构就已经搭建起来了。</li>
</ul>
<h3 id="创业不是大学生突发奇想就去做的事">创业不是大学生突发奇想就去做的事</h3>
<ul>
<li>这辈子能丢什么呢？只要不是把命丢了，其实什么都没丢。</li>
</ul>
<h3 id="只有好想法不能支撑起一个公司">只有好想法不能支撑起一个公司</h3>
<ul>
<li>
<p>我刚成立新东方时用的方法很简单，从一个项目入手，只做托福班，把一个班变成两个班、三个班，目标是占领整个中国的托福市场。那时候其他人既做GRE，又做托福，都是综合型的，而我只做托福。就这样，我用了一年时间打遍整个北京，北大的托福班都关门了，全国各地的人听说我这里的托福班很厉害，不远万里跑到北京，来找地方住，就为上新东方的课。到这个时候，我才告诉我的同事，我们现在要开第二个课程——GRE（美国研究生入学考试），因为来上托福的学生大部分都要接着上GRE。开始没做GRE有两个原因：第一，还没有找到合适的GRE老师；第二，我同时管两个项目根本忙不过来，担心两个都做不好。因此，我用了一年时间培训GRE老师，跟托福班的其中3个老师说不要上托福课，专心为GRE课程备课，我们4个人加在一起，如果GRE能讲到顶级状态就开课。当时备课一分钱没有，但是只要能讲GRE，工资立刻就是讲托福课的一倍。GRE课程一举成功，4个老师一下子10个班打遍天下，3个月时间就占领了中国的全部市场。接下来，项目我还是一个一个地去做。</p>
</li>
<li>
<p>创业是一个长期的过程，没有最后的成功，只有不断的进步。每一个成功的企业家，不管年龄多大，也依然在天天想着继续创业。</p>
</li>
</ul>
<h3 id="创业之前先审视自己">创业之前，先审视自己</h3>
<ul>
<li>
<p>新东方当初能坚持下来的一个很重要的原因是，我自己就是个好老师，当时开设的很多课程我自己都能教，因此和我一起工作的老师只要能拿到自己觉得满意的工资，就不会跟我提其他非分的要求，他们知道，一旦要求过分，我自己就能顶替他们上课，不会对新东方造成太大伤害。所以，当你白手起家、身无分文，或者资金有限的时候，有一个重要前提，那就是：你必须是你创业的这个领域中的专家，是一个能掌控大局的人。</p>
</li>
<li>
<p>我花了至少五年时间才开始在管理新东方上感到得心应手。能力是不断成长的，关键是要努力学习，提高自身技能。</p>
</li>
<li>
<p>大隐隐于市，小隐隐于野</p>
</li>
<li>
<p>在一个人走进你的公司之后，他会根据自己的能力和贡献每天衡量自己到底应该得到什么，人与人之间永远都在寻找一种平衡关系。比如，人们会衡量自己在对方心中的分量到底有多重，当他觉得自己在对方心中的分量还不够重时，他是不会来跟你计较的；等到他觉得自己的才能、技术或者领导力已经达到能和你较劲的水平的时候，如果他不做出任何行动，那他就是傻瓜。所以，人与人永远都是处在某种平衡中，而这种平衡需要你对人性有深刻的了解，并且随时把握每个人的动向，满足他们的需求，同时还能压制他们不合理的要求和欲望，能让他们跟你一条心，不断往前走。所以，对人的把控能力、对环境的把控能力、对企业发展步骤的把控能力，构成了你创业是否成功的重要条件。</p>
</li>
</ul>
<h3 id="我心中的理想创业">我心中的理想创业</h3>
<ul>
<li>
<p>我希望每个创业者在创业前都可以问自己，一是我真的有好的项目吗？这个项目真的有创新性吗？二是我在这个领域真的有经验吗？三是我真的能带领一个团队往前走吗？四是凭我的项目和项目计划书，我真的能找到钱吗？一定不要假想一个自以为存在的市场和自以为存在的客户。</p>
</li>
<li>
<p>他们被拒绝了会说俞老师，你可以说我这个项目不好，也可以不投我，但是你作为创业界的前辈，能不能给我一点儿指导，告诉我这个项目到底哪儿有修改的余地。我会觉得这样的人想努力、有理想，值得我重新考虑。</p>
</li>
</ul>
<h3 id="靠谱成就伟大事业">靠谱成就伟大事业</h3>
<ul>
<li>
<p>做公司有三个核心要素——“做伟大的事，找靠谱的人，分更多的钱”。而对项目是否伪需求的分析，直接关系到做伟大的事情的起点。你需要考虑一些问题：这件事情本身靠谱吗？你做的这个商业模式本身靠谱吗？</p>
</li>
<li>
<p>过去一年中我接了大量商业计划书，发现至少7成甚至8成都是伪需求。这些创业者自己创造了一个想象中的项目，觉得是一个生意，结果到后来发现走不通。</p>
</li>
<li>
<p>是否有足够资金，是否真的能实现，实现之后是否容易被别人复制。</p>
</li>
<li>
<p>以我之前接触的一个项目为例，创意是尿不湿上加芯片，小孩子尿过尿父母立刻就知道。这件事情有需求；一部分卖给家长，收入几百万；更多卖给尿不湿厂家，价格20元1个，成本10元不到。但我判断，一年不到，尿不湿厂家就会自己做这件事，因为如果一年要卖几千万个尿不湿，算一算成本，就会发现还是自己开发划算。</p>
</li>
<li>
<p>创业者要首先明白做的事到底是不是市场真正需要的，再选择大的方向去做。</p>
</li>
<li>
<p>事情做大了才叫伟大。</p>
</li>
<li>
<p>你自以为客户需要的东西到底是不是客户需要的。</p>
</li>
<li>
<p>颠覆是为了创造，而不是纯粹为了颠覆本身。我们要认真思考该做什么，不该做什么，而不是一哄而上，只为博一个名声。</p>
</li>
</ul>
<h3 id="只要不是要命的就不是绕不过的坑">只要不是要命的，就不是绕不过的坑</h3>
<ul>
<li>
<p>家有三月余粮，这是中国老百姓最朴素的想法。</p>
</li>
<li>
<p>我一般会告诉自己支持的项目的创始人，不管你现在有多少钱，一定要想办法节约，别铺张浪费，尤其在商业模式没有确定，收支不能平衡的情况下，不能随便乱花钱。尽管有的时候也会失去一些商业机会，但很多小型创业公司不能像滴滴、快的那样靠补贴做生意。不能因为背靠大公司，就得大公司病，花钱大手大脚，最后无以为继。</p>
</li>
<li>
<p>第一个当然要考虑是否产生收入，甚至到最后是否能达到收支平衡。</p>
</li>
<li>
<p>第二个是要找到正在做的事情未来的商业模式，否则积累多少大数据也没用。</p>
</li>
<li>
<p>因为有时表面上有收入模式，如提成、佣金等，但如果收入永远低于支出，项目也无法长久。</p>
</li>
<li>
<p>人生中有几个关键点选错了，会产生比较大的影响。比如婚姻，如果找错了人还生了孩子就麻烦了。找合伙人也是一样，合伙人跟你有利益关系，你们又分担了一些不被外人知道的秘密，如果出现纠纷，会有各种各样的麻烦，很多项目就是被创业者的合伙人折腾没的。</p>
</li>
<li>
<p>只要不是眼高手低，有美好的梦想总是对的。幻想是不切实际，但梦想不是幻想，梦想需要一定程度地切合实际，有实现的可能性。</p>
</li>
<li>
<p>回到现实，设计实现梦想的路径，计划分几步走。虽然会有变化，但设计和不设计带来的效益是完全不一样的。以读书为例，如果我设计今年要读100本书，结果至少能读到80~90本。但是如果我不设计，一年可能只读三四十本，因为我不会想到我要达成某个目标，也就没有动力了。</p>
</li>
</ul>
<h3 id="商场如战场要做到守正出奇">商场如战场，要做到“守正出奇”</h3>
<ul>
<li>
<p>战争要守正出奇，商业也要这样。出奇也有一个线，就是“红线”。很多人会告诉你这件事情的红线，有时候可能是一条不合理的政策，有时候可能是你认为公司应该遵循的某个规章或者你个人的某种认知。这些东西表面上看是红线，但实际上，有些是可以突破的。突破以后你才可以把事业做大做好。</p>
</li>
<li>
<p>在这个过程中，我反复研究，这样一条红线，什么是安全的，什么是不安全的。所谓守正出奇就是要打漂亮仗，空城计有时候也要唱，还要唱得漂亮。把理想建立在守正出奇的概念之上，就是要永远坚持正确的东西，并且随时出手，打法灵活，那样你做事情成功的可能性就会大很多。</p>
</li>
</ul>
<h3 id="创业成功要关注四种人">创业成功要关注四种人</h3>
<ul>
<li>
<p>我认为创业要想成功，需要关注四种人：客户、创始人、合伙人、投资人。把这四种人照顾好，创业一定会成功。</p>
</li>
<li>
<p>大家都会说，客户不是现实存在的吗？但是为什么那么多项目都死掉了？原因就是他们没找对真正的客户，或者没弄清楚客户真正的需求。这很像谈恋爱的时候，如果对方心里根本就没有你，你买多少钱的东西、送多少礼物都不管用。如果说对方心里有你，可能你什么都不用做，对方就会自己来找你。</p>
</li>
<li>
<p>我身上有两样品质非常重要：一是非常精明，我知道应该怎么赚钱；二是非常大方，我知道赚钱后必须把钱分给别人。</p>
</li>
</ul>
<h3 id="先让自己跳下水">先让自己跳下水</h3>
<ul>
<li>
<p>先跳到水里这件事特别重要，不管你是从什么状态开始学习游泳，你都得先跳下去，你得踏出第一步。</p>
</li>
<li>
<p>创业就是将一条家犬变成一只狼的过程，一旦习惯狼的生活，再想回到家犬的状态几乎是不可能的，而且我也鼓励将这种状态持续下去。</p>
</li>
</ul>
<h3 id="做一个合格的创始人">做一个合格的创始人</h3>
<ul>
<li>
<p>一个合格的创始人应该具备几个要素：有专业能力，有广阔胸怀，有领导魅力，有创业精神。</p>
</li>
<li>
<p>你创业的时候，有关公司命脉的那几条线，你必须是专家。</p>
</li>
<li>
<p>创始人要能忍耐，有气度，乐于分享，遵守契约精神。</p>
</li>
<li>
<p>我们新东方的文化就是狼性精神。我是一只狼，我带领的团队也要是狼，他们不能是狗，更不能是羊。创始人的首要本领就是要找到有同一目标、志向和精神的人。</p>
</li>
</ul>
<h3 id="强留合伙人只会使公司死翘翘">强留合伙人只会使公司“死翘翘”</h3>
<ul>
<li>
<p>思维不一致，利益不一致，共处共事只会带来矛盾与冲突，使公司偏离轨道，走向灭亡。</p>
</li>
<li>
<p>大家都认为上市是件好事，但直到今天为止，我也不认为上市是一件纯粹的好事。在某种意义上，上市会导致外力过强，甚至扭转企业的发展方向和发展步骤。只是经过各方面的考虑，包括团队的合作、未来的发展，以及新东方过去积累的问题，我认为上市相当于用一次变革来解决这些问题，上市的好处还是比不上市更多。</p>
</li>
<li>
<p>合伙人的成功其实就是大家达到了互相契合、互补的关系，原因就像人们经常问你的两个问题：你为什么选择这个男人当你的老公？你为什么选择这几个人做你的朋友？原因无非是，这些人刚好在你身边，并且在你身边的这些人里，这个人刚好和你最契合，实际上合伙人就是这个概念。</p>
</li>
</ul>
<h3 id="在企业发展的不同阶段用不同的人">在企业发展的不同阶段用不同的人</h3>
<ul>
<li>
<p>要根据不同时期、不同发展阶段，用不同的人。</p>
</li>
<li>
<p>面对什么时代就要做出什么样的改变，我觉得这是企业家血液里应该有的东西。</p>
</li>
</ul>
<h3 id="所有关系都在重新定义">所有关系都在重新定义</h3>
<ul>
<li>
<p>这是一个所有关系都重新界定的时代。我在深刻地思考一个问题：我和员工到底是什么关系？以前，我会不假思索地认为自己与员工就是雇佣关系，员工除了到我这儿来工作，还能到别的地方工作吗？他们到别的地方工作，能拿到比这里更高的工资吗？我是老板，员工要老老实实工作，千万不要把关系搞错了，这是我原来的思维。</p>
</li>
<li>
<p>这也是一个弘扬个性才能够生存的时代。在处理人与人之间的关系，与朋友交往时，谦虚没有错。在创业有了成绩，把利益更多地让给员工和合作者，而自己尽可能少拿一点，这样的谦让也没有错。但如果你在展示才华、彰显能力时还谦虚谦让，那就只有死路一条。为什么？因为当你尽可能把自己的才能隐藏起来的时候，你的竞争对手正在不断地宣扬自己。</p>
</li>
<li>
<p>在这个一切关系都重新定义的时代，谁把自己当老板看，谁死得最快；谁把自己当雇员看，谁这辈子最没出息。事实上，这个时代使每一个人都变得更加有尊严。如果到现在为止你还觉得自己被欺负、被压迫了，那只能说明你对自己的定位不对。我觉得这是人类走向更加个性的自由发展，变得更加精神飞扬，更能够去做自己喜欢的事情，也更能保留自己尊严的时代。这个时代已经靠各种关系的重新界定，真正实现了人与人之间的平等。</p>
</li>
</ul>
<h3 id="达到人情与利益的平衡">达到人情与利益的平衡</h3>
<ul>
<li>
<p>曹操手下有一大帮伟大的人物，他本身就很伟大；刘备手下也有一大帮伟大的人物，刘备也很伟大。为什么曹操对关公那么好，关公还要过五关斩六将，非到刘备那儿去？曹操手下的人，不管刘备怎么拉拢，也不到刘备手下去？这形成了中国历史上最著名的人才争夺战。</p>
</li>
<li>
<p>研究曹操和刘备这两个人为什么能称霸一方，我发现，他们得天下，刘备偏重人情，用人情来拉拢人，结拜兄弟共打天下；曹操偏重利益，没跟任何人结拜过兄弟，他有智慧，有思想，有人品，但是他更多用的是利益和规矩。</p>
</li>
<li>
<p>我发现，企业的发展要平衡好三大块儿——权力、利益和人情。</p>
</li>
<li>
<p>我不得不正面处理与徐小平、王强的利益关系。这时候我意识到，需要建立一个新的组织结构，各归其位，才能把每个人的特长发挥到极致。在友情为基础的结构里，你不能下命令、不能指挥，只能通过友情来权衡利益和权力，很可能形成一个矛盾圈和是非圈。这个问题如果得不到及时解决，新东方很可能做不下去。最后，我们做出决定，请徐小平离开董事会。</p>
</li>
<li>
<p>大企业的内部管理十分复杂，很有必要借助制度对员工的行为加以规范，这是企业发展的必然规律。上市之前的那些年，我始终在利益和人情中间玩中庸、找平衡，结果搞得筋疲力尽、狼狈不堪。于是开始希望用严厉的美国上市公司管理规则来规范内部，以制度说话，避免人情和利益纠葛重现，实现自身的救赎，让企业顺利发展。因此，新东方上市之后，创业元老一一退出了管理层，迎来了更加职业化、专业化的经理人团队。这是超越了兄弟情谊，更多依赖切切实实的利益拼建起来的崭新结构。</p>
</li>
<li>
<p>现在，我喜欢新东方的人为了利益来和我叫板，因为他对自己价值的估计，和我对他价值的估计都可能存在失误，叫板能帮助我们双方达成平衡。</p>
</li>
</ul>
<h3 id="通过实现阶段性的理想一点点拔高人生的高度">通过实现阶段性的理想一点点拔高人生的高度</h3>
<ul>
<li>
<p>一个人即使想不清楚自己一辈子想干什么，但是有两件事情肯定能做：第一件是想清楚三年后自己应该做成什么样子；第二件是保持每天都要进步的心态，每天让自己完善一点，成长一点。</p>
</li>
<li>
<p>高远的理想把我不断拔高，交往的圈子也越来越好，周围有理想、有能量的人越来越多，我不仅追着他们攀高，还被他们拉着升高。所以，你要交牛气的朋友，天天跟在他后面，向他学习，他能走多远，你就能走多远。而不要远离比自己水平高的人，只为在不如自己的人中做老大。</p>
</li>
<li>
<p>理想可以是阶段性的，但必须是高远的。</p>
</li>
</ul>
<h3 id="通过读书学习和聆听拓展思想的宽度">通过读书、学习和聆听拓展思想的宽度</h3>
<ul>
<li>
<p>现在很多人读书太少，只是天天微信来回发，看各种商业模式，看别人赚钱就眼红。但是你会妒忌马云吗？你会妒忌马化腾吗？你会妒忌盛希泰吗？你根本就妒忌不了，因为他们太高离你太远了，你只会敬畏他们。他们之所以能成就如此伟大的事业，是由他们思想的境界所决定的。一天到晚只想着赚钱，却不想着拓展自己思想的宽度，这辈子都不可能成事。</p>
</li>
<li>
<p>读书、学习和聆听对我们非常重要。让自己变成一个有健全思想和独立思辨能力的人，这一点非常重要。</p>
</li>
<li>
<p>我上大学的时候，平均每年读100本轻轻松松，后来我到大学调研，请一年读过30本书的同学举手，大约只有十分之一。我当时就想，如果大学生都不读书了，那这个民族怎么可能有希望？我们常说犹太人很厉害，全世界几乎一半的发明创造与犹太人有关，诺贝尔奖得主有200多个是犹太人，每年全世界的创新专利犹太人就贡献了30%。现在看来，难怪这个民族这么厉害，他们一人一年能读65本书，而我们一人一年连5本都不到。</p>
</li>
<li>
<p>每天读一点儿书，学习一些新知识，聆听伟人的智慧，拓宽自己思想的宽度，总有一天，你积聚的知识会爆发出思想的火花，创新你的事业。</p>
</li>
</ul>
<h3 id="在绝望时修炼自己并善于等待">在绝望时修炼自己并善于等待</h3>
<ul>
<li>
<p>很多事情想当场解决是不可能的，有时候，时间会帮你解决，比如我们常常讲的感情的伤痛，时间会治愈。当然，光靠时间解决是不够的，还要有主动积极的心态。</p>
</li>
<li>
<p>在遇到困境和绝境的时候，不能停止生命的运转，必须知道在方寸之中，我们依然可以增加自己生命的厚度和强度。可以读书，可以锻炼某种技能，只要方向是正确的，生命就一定是一个不断积聚能量的过程，而这个能量早晚有一天会爆发出来。</p>
</li>
<li>
<p>拿家庭矛盾、员工难管、商业压力等为借口就放弃修炼，这是对自己的否定。人的生命就像水一样，关键时刻凝聚力量，就可以成为美丽的瀑布。</p>
</li>
</ul>
<h3 id="改可能是死路不改一定是死路">改可能是死路，不改一定是死路</h3>
<ul>
<li>
<p>生命不息，战斗不止。其实更重要的是，要对未来永远心存美好的希望。</p>
</li>
<li>
<p>人生不是百米赛跑，而是长长久久的马拉松，在这段旅程中，我们每个人拼的是耐力，拼的是专注，拼的是持久。我觉得，任何时代的来临都不可怕，可怕的是你自己不愿意与时代共同前进，一旦你被时代抛弃，落下，就不可能再与他人共创这个时代的辉煌，共享这个时代的成果。而且，记住，你不是一个人在战斗！</p>
</li>
<li>
<p>我常常用诺基亚的故事提醒自己，改可能是死路，但不改一定是死路。我宁可在改革的路上死掉，也不愿死在过往成功的基因上，所以我时刻做好了战斗的准备，随时准备迎接挑战，进行改革。</p>
</li>
<li>
<p>我始终相信，任何一个人想要改变自己的人生，想要改变自己的命运，最佳的法宝，或者说最好的力量，就是去战斗。</p>
</li>
</ul>
<h3 id="给自己的每一天注入力量">给自己的每一天注入力量</h3>
<ul>
<li>
<p>无论你从事哪一行，你都不只是别人的员工，你还是自己职业生涯的员工。</p>
</li>
<li>
<p>我们通常会为自己没有的东西而苦恼，却看不到自己拥有的。</p>
</li>
<li>
<p>为自己已经取得的成绩而自豪。成绩不分大小，每一次成功都意味着向前迈出了一步。</p>
</li>
<li>
<p>活着的每一天对于我们来说都是一份珍贵的礼物。</p>
</li>
<li>
<p>每天都要计划做一些积极的事情，让自己充满活力。</p>
</li>
<li>
<p>设法把那些原本想留到明天再解决的问题今天就解决掉。</p>
</li>
<li>
<p>人往往都是别人的建议者，却不是自己的。很多时候，根本原因就是我们看待事物的方式。很多人都有过为一件事苦恼不堪，过后又觉得可笑的经历。其实悲和喜只是因为我们看问题的角度不同而已。</p>
</li>
<li>
<p>做些与平常不一样的事。</p>
</li>
<li>
<p>一个人要想获得成就感，应该设立阶段性目标。</p>
</li>
<li>
<p>特别是身在企业高处的管理者，他们由谁来激励？答案是通过“看见最后成果”来激励自己。</p>
</li>
<li>
<p>我会每周写一次日记，回顾七天的经历，并根据收获大小给自己打星。</p>
</li>
</ul>
<h3 id="创想就是往前一步再往前一步">创想就是往前一步，再往前一步</h3>
<ul>
<li>
<p>创意上的突破非常重要的一点就是，你要比别人想得更前一步，哪怕只是一小步。</p>
</li>
<li>
<p>小事做着做着就能做成大事</p>
</li>
<li>
<p>所谓创意和创想，是在现有模式上想办法再往前突破一点。</p>
</li>
<li>
<p>就跟徒步一样，在你走累的时候，再往前一步，才有成就感。平时散步是不会有成就感的，因为每天散步就是为了保持身体健康而已。</p>
</li>
</ul>
<h3 id="走出舒适区">走出舒适区</h3>
<ul>
<li>人最怕待在某种舒适环境里，待到一定程度后就不愿意动了。与之相反，当处于某种绝境时，人往往会绝地反击。</li>
</ul>
<h3 id="成功需要一瞬间突破的勇气">成功需要一瞬间突破的勇气</h3>
<ul>
<li>
<p>勇气和自信，以及给自己设立一个有挑战性的，觉得可以通过努力达成的目标，比你自卑地唯唯诺诺，觉得自己什么都不行要好得多。</p>
</li>
<li>
<p>在你眼前，那些栏杆代表了生命中的各种障碍，代表了一道道坎，拦着你，不让你过去。但是我们要有突破的胆量，把阻拦生命的栏杆抬起来。必须突破自卑的壳，突破自轻的贱，突破胆怯的虚，突破失败的惧，越败越战，愈挫愈勇，才能奋勇向前。</p>
</li>
</ul>
<h3 id="引领变革要从本质上改变自己的思维">引领变革要从本质上改变自己的思维</h3>
<ul>
<li>
<p>对于一个商人或者企业家来说，有一点必须把握住，那就是，不管你多么不喜欢变化，都要顺应变革，善于变革，并且引领变革。</p>
</li>
<li>
<p>爱因斯坦说过，一个问题要解决，用原来产生这个问题的思维模式去解决是不可能的。这常常是很多企业陷入困境的重要原因。</p>
</li>
</ul>
<h3 id="比你聪明的人还比你勤奋">比你聪明的人还比你勤奋</h3>
<ul>
<li>我不敢说自己已经领悟了生命的本质，但我至少敢说自己比一般年轻人还要勤奋。我的勤奋能给我平时的思考和讲课补充营养。</li>
</ul>
<h3 id="把喜欢的事做到极致">把喜欢的事做到极致</h3>
<ul>
<li>
<p>人的一生中做事情有很多种方法，其中有这样一种——只做自己喜欢的事，哪怕饿死也要做。如果喜欢下围棋，饿死也要坚持下。如果喜欢数学，一分钱报酬都拿不到我也要钻研，最后变成陈景润那样也好。</p>
</li>
<li>
<p>如果喜欢的东西本身并不好，就不要在上面浪费时间，那是可能把你的人生毁掉的东西。你喜欢的应该是对自己的成长有利的东西。</p>
</li>
<li>
<p>清华的水木年华，他们两个长得比我还要难看，而清华的女生又特别少，谈恋爱根本就轮不到他们两个。两个人在宿舍里特别孤单和痛苦，最后想到一起唱歌互相安慰一下，没想到两个人的声音和在一起成了很好听的男声二重唱。于是两个人背着吉他，先到系里表演，然后到学院表演，再到北京各个高校表演，到最后，他们连清华大学的学位都不要了，专心唱歌。这就像我刚才说的，开始做自己喜欢做的事情，哪怕流浪一辈子也不怕。</p>
</li>
<li>
<p>清华大学的学位固然很好，但是与你终生喜欢的事情相比又有什么了不起的呢？说到底，学位是无能的人的遮羞布而已。不过我觉得，大学学位要拿，但在大学学位之上，不管是出国还是考研，就要跟你人生真正的目标结合，否则就是为了拿学位而拿学位。</p>
</li>
<li>
<p>现实生活中一般有两种资格，“硬资格”和“软资格”。硬资格就是你拿到的各种各样的学位文凭证书。一般情况下，复旦大学的学位证书比其他普通大学的证书在找工作时更好用一点儿。哈佛大学的又比复旦大学的好用一点儿。不过，也仅此而已。新东方就拒绝过很多哈佛大学的毕业生，因为很多人虽然有这样的“硬资格”，却没有相应的“软资格”，或是没有工作经验，或是对中国的教育和教学没有正确的看法，或是没有做事需要的正确的心态。</p>
</li>
<li>
<p>软资格是什么？是我们真正的能力，是我们在一生的奋斗中，不断积累的人生经验、智慧和学识。一个人真的有能力，就一定能让别人看到。人们能从你的眼神、动作、谈吐，从你做每件小事的状态中，判断出你到底有没有能力。</p>
</li>
<li>
<p>在我看来，当一个人说他什么都能干的时候，意味着他什么都不能干。</p>
</li>
<li>
<p>你一秒钟内能说出的最擅长的事，应该是你做完一定会有好成绩的事。</p>
</li>
<li>
<p>做学问不就是从精到深，再从深到泛吗？</p>
</li>
<li>
<p>研究蒋介石就得研究毛泽东，研究毛泽东就得研究中国现代史，研究中国现代史就得研究中国近代史。中国近代史怎么来的？来自世界近代史，世界近代史来自美国独立战争、法国资产阶级大革命，以及英国的宪章运动，而这一切都来自文艺复兴以及启蒙运动，又起源于古希腊、古罗马文明，甚至更古老的古埃及、古印度文明。一通百通，他不成为文化大师，谁能成为文化大师？</p>
</li>
</ul>
<h3 id="我和马云差了八个字">我和马云差了八个字</h3>
<ul>
<li>
<p>越败越战，愈挫愈勇。</p>
</li>
<li>
<p>前面的失败是奠定未来做世界大公司的基础。</p>
</li>
<li>
<p>现在我知道了，人的根本区别不在于家庭身份，不在于长相外貌，不在于学历学位，只在于自身。在这个世界上，只有自己能掌握自己的命运。没有任何人可以阻止我们前进，只要我们自己往前走。</p>
</li>
<li>
<p>有时，挡住我们前进的脚步的，恰恰是不愿意迈出第一个脚步的我们自己。</p>
</li>
</ul>
<h3 id="真正的精英具有家国情怀">真正的精英具有家国情怀</h3>
<ul>
<li>
<p>我觉得一个人如果总是想着利己的话，是不会获利的。不顾及别人的利益，自己的世界就会越来越小。人心都是肉长的，想想看，如果你周围有一个人，聪明但自私，这样的人越聪明，你就会觉得越危险，想离他越远一点儿。</p>
</li>
<li>
<p>我是利他主义精神的弘扬者，希望自己可以为周围的人带来更多快乐和帮助。我觉得这样，自己的世界会越来越大。</p>
</li>
<li>
<p>当别人知道你是一个特别自私的人，有好处才出现，没好处就不出现的时候，你再倒过来寻求别人的帮助，别人可能不会答应。</p>
</li>
<li>
<p>帮助别人就是帮助自己。</p>
</li>
<li>
<p>一个自私的、只关注自己利益的人，不管有多成功，都不能被叫作“精英”。在中国，真正的新精英的定义是既能够自我成长，又能够帮助这个社会进步的人。因此，具有家国情怀，探索体制变革，促进经济发展、文明进步，是我们一代代人的使命。</p>
</li>
<li>
<p>一个人，想赚钱是低境界，想为社会做贡献是高境界。我自己最初创业虽然也是为了钱，但是当拿到了留学的学费，也解决了生活费的时候，却放弃了出国。当时我意识到自己每天在帮助年轻人成长，帮助他们上更好的大学，这件事情的意义已经超出了我能赚多少钱的价值。这件事往大说是支持中国教育的发展，往小说就是做好新东方。</p>
</li>
<li>
<p>人生最重要的是选择一条你要走的路，并坚持自己心中的某个价值标准，不要因为某种苟且的理由而改变自己的发展方向。我希望所有创业者在如此喧嚣的世界上，永远都能够保有自己的家国情怀。</p>
</li>
</ul>
<h3 id="做人要有正确的渴望带动生命前行">做人要有正确的渴望带动生命前行</h3>
<ul>
<li>
<p>我能够走到今天，有一个重要的原因，就是内心有一种渴望，希望明天能比今天更好，希望明年能比今年更好，希望之后的五年能比现在的五年更好。</p>
</li>
<li>
<p>我当然希望中国的年轻人都立志高远，在年轻的时候就能够定一个终身目标，比如当伟大的政治家或者伟大的企业家。但是，我觉得大多数人在一开始是不可能把自己一辈子到底想干什么弄清楚的。我现在的人生就是一步一步走出来的，随着移动互联网时代的到来，我更加很难想清楚五年以后会怎么样。但我今天必须努力理解移动互联网时代正在发生什么，并且把我理解的正在发生的变革运用到新东方未来的发展中。</p>
</li>
<li>
<p>活着是美丽的风景，死了依然是栋梁之材。</p>
</li>
<li>
<p>希望每个人都渴望做一棵树，立于天地间，不悔于己，无愧于人。</p>
</li>
</ul>
<h3 id="寻找生命中的精神榜样">寻找生命中的精神榜样</h3>
<ul>
<li>
<p>我的优点之一就是从来不妒忌比我优秀的人，而是努力效仿他们，把他们作为我学习的榜样。</p>
</li>
<li>
<p>父母是离我们最近的学习榜样。我的父母都是淳朴的农民，他们虽无力教我读书，却用他们的勤劳和善良教会了我最基本的做人道理和是非标准。所以，父母对我们的影响虽然可能无法用文字来描述，却是我们一生都受用不尽的。</p>
</li>
<li>
<p>我读过不少名人传记，也仰慕过毛泽东的天才、富兰克林的智慧、林肯的信念、卢梭的坦诚，甚至羡慕过毕加索的九次婚姻。但这些伟大人物离我们的生活实在太远了，远不如那些与我们朝夕相处的人对我们的影响力大。</p>
</li>
</ul>
<h3 id="幸福的定义">幸福的定义</h3>
<ul>
<li>
<p>怎样吸引学生来我的教室听课呢？从此我开始反复训练幽默感，没想到两年不到，我就成了学生们喜欢的老师。</p>
</li>
<li>
<p>我给幸福下的第一要义就是，一辈子找一件自己非常喜欢做的事。</p>
</li>
<li>
<p>人可以孤独，但是不能孤单。孤独是一种心灵上的感觉，孤单是一种肉体上的折磨。我们可以在心灵孤独时，思考人生和自我，却不能忍受没有人关心自己。避开孤单的最好方法就是周围有一帮好朋友，我很幸运，从小到大都有朋友陪伴。</p>
</li>
<li>
<p>不要热闹，不等于不要朋友。朋友对我来说特别重要，新东方之所以能够做起来，就是因为我的几个大学和中学的朋友。而且还真是按照周国平老师的标准来挑的，挑朋友是挑能给你带来心灵丰富性的朋友，你能从他们身上学到很多东西。</p>
</li>
<li>
<p>一个人最幸运的就是找到一个适合自己的另一半。跟你在一起心心相印，既可以互相理解，同时又对你全身心地接受，在生活中遇到任何困境都不抱怨、不刺激你。</p>
</li>
</ul>
<h3 id="人生的几个关键词">人生的几个关键词</h3>
<ul>
<li>我长得难看，不是我难过，是别人难过。</li>
</ul>
<h3 id="追求高质量的朋友圈">追求高质量的朋友圈</h3>
<ul>
<li>交朋友是“宁为牛后，不为鸡头”，尽可能结交比你水平高的人。可以把自己朋友的层次不断拔高，追求更高的社交圈。</li>
</ul>
<h3 id="做事情宁为鸡头不为牛后">做事情宁为鸡头，不为牛后</h3>
<ul>
<li>
<p>一个孩子如果绘画、钢琴、书法、数学、语文，什么都学，那么他什么都难做到第一。</p>
</li>
<li>
<p>在一生中，把一件事情做到极致就很了不起。</p>
</li>
</ul>
<h3 id="做人像水做事像山">做人像水，做事像山</h3>
<ul>
<li>
<p>做人像水，做事像山。</p>
</li>
<li>
<p>做人要尽量往低处走，让着别人，遇见利益和名声尽可能往后退，给自己留有积累和发展的空间；做事一定要有自己的主见和目标，像山一样坚定，才能把事做好。</p>
</li>
</ul>
<h3 id="先做人后做事">先做人，后做事</h3>
<ul>
<li>
<p>专心致志，尽善尽美；学习榜样，提高境界；建立标准，就高避低；善待生命，珍惜时光。</p>
</li>
<li>
<p>一件事到了我手里，我一般都会认认真真地做完它，很少不做完就去做另外一件事情。</p>
</li>
<li>
<p>一是从现实生活中学，二是从历史中学。</p>
</li>
<li>
<p>我还记得有一次我在医院经过两天的抢救终于醒来，看到一缕阳光透过窗户射进病房，当时就感动得热泪盈眶，觉得太阳就是为我而重新升起的。</p>
</li>
<li>
<p>我开始善待生命，尽可能去做自己真心想做的事情，做能给自己带来欢乐和幸福的事情。</p>
</li>
</ul>
<h3 id="书都没读过怎么仰望星空">书都没读过，怎么仰望星空</h3>
<ul>
<li>
<p>读万卷书不如行万里路，行万里路不如阅人无数，阅人无数不如明师指路。</p>
</li>
<li>
<p>很多时候决定命运的是我们面对事情的态度，而非事情本身。</p>
</li>
</ul>
<h3 id="一个优秀的人的八条标志">一个优秀的人的八条标志</h3>
<ul>
<li>
<p>我一直在向优秀的人靠近，这辈子一直在追随优秀的人的脚步。</p>
</li>
<li>
<p>—爱自己，爱他人，爱自然。</p>
</li>
<li>
<p>一个人热爱工作、专注工作，就一定会在工作上取得好成绩。</p>
</li>
<li>
<p>一个人有斗志，就会喜欢挑战更难的工作，喜欢锻炼自己，让自己的生命更充实。</p>
</li>
<li>
<p>得到是人生的赏赐，要心怀感恩；失去是人生的磨炼，要坦然面对。</p>
</li>
<li>
<p>一个优秀的人做任何事都会关注他人的感受，考虑他人的利益，心怀他人。</p>
</li>
<li>
<p>观察并学习周围的人的优点，也能让我们变得更加优秀。</p>
</li>
<li>
<p>一个真诚、坦率、阳光的人很容易就能获得他人的好感，交到更多朋友。</p>
</li>
<li>
<p>一个优秀的人不会因为他人的赞赏、崇拜，便抬高自己，妄自尊大。</p>
</li>
</ul>
<h3 id="让每一天都活得丰盈温暖">让每一天都活得丰盈温暖</h3>
<ul>
<li>生的时候昂扬地生，死的时候坦然地死，也许这就是生命的本质所在。</li>
</ul>
<h3 id="钱要怎么花才有意义">钱要怎么花才有意义</h3>
<ul>
<li>很多人到最后彻底忘了挣钱是为了生活，为了幸福，而钱变成了唯一目的。</li>
</ul>
<h3 id="附录-我一定会跟踪你创客导师俞敏洪对谈创客胡彦斌">附录④ 我一定会跟踪你：创客导师俞敏洪对谈创客胡彦斌</h3>
<ul>
<li>
<p>很多创业公司之所以没有成功，不是没钱，也不是没时间，而是商业模式没有想清楚，需求没有想清楚，或者步骤没有想清楚，要在正确的时间做正确的事情。</p>
</li>
<li>
<p>在新东方，我们常常讲right timing（对的时机），然后再去做正确的事情，这件事情我觉得永远是第一位的。即使到新东方现在这个地步，也是第一位的。首先我们要搞清楚，在未来三到五年，面对现在整个社会的变迁、技术的革命，以及移动互联网给中国的教育和其他领域所带来的重大影响，新东方未来三年的布局，到底哪些是正确的，这个问题只能自己想，和团队反复探讨，但是永远没有绝对正确的答案。</p>
</li>
<li>
<p>你说得非常对，如果一个老总一头扎进去，会给投资人信心。用战术上的勤奋来掩盖战略上的懒惰，这样做生意是最可怕的事情。原来我老是这样，新东方为什么后来落后了？新东方这十年，除了今年相对来说稍微好了一点，过去十年一直落后的原因是：我比陈向东他们还要忙。我都冲到一线去了，典型的是用战术上的勤奋来掩盖战略上的懒惰。直到有一天，我坐在新东方后面的那个公园的大树底下，想新东方怎么出了那么多问题，这些问题到底关键在什么地方的时候，突然好像有点想清楚了，我的时间花得不对。所以我支持你自己用有效的时间来指导员工做事情。我把CEO的职位辞掉，去做公益。其中做公益是一部分，另一部分，我可以用长段的时间坐在家里打坐思考，我不是真的打坐，我没有信任何宗教，但是安静下来思考，并且把自己思考的东西整理成思路，再去运用，非常重要。</p>
</li>
<li>
<p>产品研发这件事情不能放。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《雪国》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E9%9B%AA%E5%9B%BD/</link>
      <pubDate>Fri, 09 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E9%9B%AA%E5%9B%BD/</guid>
      <description>&lt;h2 id=&#34;雪国&#34;&gt;雪国&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;穿过县界长长的隧道，便是雪国。夜空下一片白茫茫。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;她的话音优美而又近乎悲凄。那嘹亮的声音在雪夜里久久回荡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;玻璃上只映出姑娘一只眼睛，她反而显得更加美了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在遥远的山巅上空，还淡淡地残留着晚霞的余晖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;她的眼睛同灯光重叠的那一瞬间，就像在夕阳的余晖里飞舞的夜光虫，妖艳而美丽。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以朋友相待，不向你求欢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;她过于洁净了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尽管他感到对女子存在着一种友情，他还是渡过了这友情的浅滩。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;她的脖颈，淡淡地映上一抹杉林的暗绿。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;也许是旭日东升了，镜中的雪越发耀眼，活像燃烧的火焰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这种虚伪的麻木不仁是危险的，是一种寡廉鲜耻的表现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;暮色苍茫，从夕晖晚照下覆盖着皑皑白雪的远方群山那边，悄悄地迅速迫近过来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;远处的重山叠峦，迷迷蒙蒙地罩上了一层柔和的乳白色。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要是没有剧场的墙壁，没有听众，也没有都市的尘埃，琴声就会透过冬日澄澈的晨空，畅通无阻地响彻远方积雪的群山。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;云雾缭绕，背阴的山峦和朝阳的山峦重叠在一起，背阴和朝阳不断地变换着，现出一派苍凉的景象。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;月儿皎洁得如同一把放在晶莹的冰块上的刀。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓“难过”，可能是担心跟旅客的关系陷得更深吧？或是在这种时候她极力控制自己郁郁不乐的心情而说的？她对自己的感情竟发展到这个地步了吗？岛村沉思了好一阵子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对面县界上连绵的群山，在夕晖晚照下，已经披上了秋色，这一点淡绿反而给人一种死的感觉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;山脚下的河流，仿佛是从杉树顶梢流出来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在夕晖晚照下，这座山清晰地现出了山巅上枫叶正红的景色。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尽管驹子是爱他的，但他自己有一种空虚感，总把她的爱情看作一种美的徒劳。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他可怜驹子，也可怜自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你连指尖都泛起好看的颜色呢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;谁下流？女人若不曾坠入情网是不知道谁下流的呀。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;茫茫的银河悬在眼前，仿佛要以它那赤裸裸的身体拥抱夜色苍茫的大地。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;湖&#34;&gt;湖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;总之，所谓好友彼此没有秘密可保留，这是一种病态的空想，是一张掩盖女孩子弱点的假面具。所谓没有秘密，只是天堂或地狱的故事，人世间是绝没有这等事的。你说对恩田没有秘密，你就不是作为一个人存在，也就不是个活人了。你扪心自问吧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高贵的脚，却生长着卑贱的病菌。人生就是这么回事。像我们这双猿猴般的脚，脚皮又硬又厚，即使培植，也是生长不出来的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;妾者爱计较容貌，正室则不讲究，这是理所当然的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这个世界上，最美丽的山，不是郁郁葱葱的高山，而是被火山岩和火山灰弄荒芜了的高山。在晨曦和夕阳的辉映下，色彩斑斓，可谓万紫千红，同朝霞和夕照的天色变化别无二致。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;附录&#34;&gt;附录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一个人如果不是对生活、对未来抱有希望与憧憬，不是具有坚强的意志，光是为了出卖色相，要做到这些是不可能的。&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<h2 id="雪国">雪国</h2>
<ul>
<li>
<p>穿过县界长长的隧道，便是雪国。夜空下一片白茫茫。</p>
</li>
<li>
<p>她的话音优美而又近乎悲凄。那嘹亮的声音在雪夜里久久回荡。</p>
</li>
<li>
<p>玻璃上只映出姑娘一只眼睛，她反而显得更加美了。</p>
</li>
<li>
<p>在遥远的山巅上空，还淡淡地残留着晚霞的余晖。</p>
</li>
<li>
<p>她的眼睛同灯光重叠的那一瞬间，就像在夕阳的余晖里飞舞的夜光虫，妖艳而美丽。</p>
</li>
<li>
<p>以朋友相待，不向你求欢。</p>
</li>
<li>
<p>她过于洁净了。</p>
</li>
<li>
<p>尽管他感到对女子存在着一种友情，他还是渡过了这友情的浅滩。</p>
</li>
<li>
<p>她的脖颈，淡淡地映上一抹杉林的暗绿。</p>
</li>
<li>
<p>也许是旭日东升了，镜中的雪越发耀眼，活像燃烧的火焰。</p>
</li>
<li>
<p>这种虚伪的麻木不仁是危险的，是一种寡廉鲜耻的表现。</p>
</li>
<li>
<p>暮色苍茫，从夕晖晚照下覆盖着皑皑白雪的远方群山那边，悄悄地迅速迫近过来。</p>
</li>
<li>
<p>远处的重山叠峦，迷迷蒙蒙地罩上了一层柔和的乳白色。</p>
</li>
<li>
<p>要是没有剧场的墙壁，没有听众，也没有都市的尘埃，琴声就会透过冬日澄澈的晨空，畅通无阻地响彻远方积雪的群山。</p>
</li>
<li>
<p>云雾缭绕，背阴的山峦和朝阳的山峦重叠在一起，背阴和朝阳不断地变换着，现出一派苍凉的景象。</p>
</li>
<li>
<p>月儿皎洁得如同一把放在晶莹的冰块上的刀。</p>
</li>
<li>
<p>所谓“难过”，可能是担心跟旅客的关系陷得更深吧？或是在这种时候她极力控制自己郁郁不乐的心情而说的？她对自己的感情竟发展到这个地步了吗？岛村沉思了好一阵子。</p>
</li>
<li>
<p>对面县界上连绵的群山，在夕晖晚照下，已经披上了秋色，这一点淡绿反而给人一种死的感觉。</p>
</li>
<li>
<p>山脚下的河流，仿佛是从杉树顶梢流出来的。</p>
</li>
<li>
<p>在夕晖晚照下，这座山清晰地现出了山巅上枫叶正红的景色。</p>
</li>
<li>
<p>尽管驹子是爱他的，但他自己有一种空虚感，总把她的爱情看作一种美的徒劳。</p>
</li>
<li>
<p>他可怜驹子，也可怜自己。</p>
</li>
<li>
<p>你连指尖都泛起好看的颜色呢。</p>
</li>
<li>
<p>谁下流？女人若不曾坠入情网是不知道谁下流的呀。</p>
</li>
<li>
<p>茫茫的银河悬在眼前，仿佛要以它那赤裸裸的身体拥抱夜色苍茫的大地。</p>
</li>
</ul>
<h2 id="湖">湖</h2>
<ul>
<li>
<p>总之，所谓好友彼此没有秘密可保留，这是一种病态的空想，是一张掩盖女孩子弱点的假面具。所谓没有秘密，只是天堂或地狱的故事，人世间是绝没有这等事的。你说对恩田没有秘密，你就不是作为一个人存在，也就不是个活人了。你扪心自问吧。</p>
</li>
<li>
<p>高贵的脚，却生长着卑贱的病菌。人生就是这么回事。像我们这双猿猴般的脚，脚皮又硬又厚，即使培植，也是生长不出来的。</p>
</li>
<li>
<p>妾者爱计较容貌，正室则不讲究，这是理所当然的。</p>
</li>
<li>
<p>这个世界上，最美丽的山，不是郁郁葱葱的高山，而是被火山岩和火山灰弄荒芜了的高山。在晨曦和夕阳的辉映下，色彩斑斓，可谓万紫千红，同朝霞和夕照的天色变化别无二致。</p>
</li>
</ul>
<h2 id="附录">附录</h2>
<ul>
<li>一个人如果不是对生活、对未来抱有希望与憧憬，不是具有坚强的意志，光是为了出卖色相，要做到这些是不可能的。</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Vue3 &#43; Vite &#43; TypeScript &#43; Bootstrap5 开发指南</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/vue3-&#43;-vite-&#43;-typescript-&#43;-bootstrap5-%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</link>
      <pubDate>Fri, 09 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/vue3-&#43;-vite-&#43;-typescript-&#43;-bootstrap5-%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;2025-年-web-响应式开发解决方案基于-vue3-生态&#34;&gt;2025 年 Web 响应式开发解决方案（基于 Vue3 生态）&lt;/h1&gt;
&lt;p&gt;随着移动设备碎片化加剧和跨端需求增长，2025 年的响应式开发已从单纯的 &amp;ldquo;适配多屏幕&amp;rdquo; 升级为 &amp;ldquo;全场景体验一致性&amp;rdquo;。结合当前技术演进，针对 PC、平板、手机多端适配需求，推荐以下增强方案：&lt;/p&gt;
&lt;h2 id=&#34;一核心技术栈升级&#34;&gt;一、核心技术栈升级&lt;/h2&gt;
&lt;h3 id=&#34;1-基础框架vue-3--vite-6--typescript-5&#34;&gt;1. 基础框架：Vue 3 + Vite 6 + TypeScript 5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Vite 6 优势&lt;/strong&gt;：新增的responsive-plugin可自动识别设备类型并注入环境变量，配合import.meta.env.DEVICE_TYPE在编译时优化条件渲染&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TypeScript 5&lt;/strong&gt;：借助const type特性强化响应式断点类型定义，避免运行时类型错误&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// 设备类型类型定义示例
type DeviceType = &amp;#39;mobile&amp;#39; | &amp;#39;tablet&amp;#39; | &amp;#39;desktop&amp;#39; | &amp;#39;large-screen&amp;#39;
const deviceType: DeviceType = import.meta.env.DEVICE_TYPE as DeviceType
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2-响应式引擎tailwind-css-4--bootstrap-6-混合方案&#34;&gt;2. 响应式引擎：Tailwind CSS 4 + Bootstrap 6 混合方案&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tailwind CSS 4&lt;/strong&gt;：通过@container查询实现组件级响应式，比传统@media更精准控制元素布局&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bootstrap 6&lt;/strong&gt;：新增responsive-propsAPI，支持在组件上直接声明多端样式&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;!-- Bootstrap 6 响应式属性示例 --&amp;gt;
&amp;lt;button 
  class=&amp;#34;btn&amp;#34;
  :responsive=&amp;#34;{
    mobile: &amp;#39;btn-sm w-full&amp;#39;,
    tablet: &amp;#39;btn-md w-1/2&amp;#39;,
    desktop: &amp;#39;btn-lg w-auto&amp;#39;
  }&amp;#34;
&amp;gt;
  多端适配按钮
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;3-跨端状态管理pinia--设备传感器-api&#34;&gt;3. 跨端状态管理：Pinia + 设备传感器 API&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;利用Pinia存储设备状态（如屏幕方向、分辨率），结合ScreenOrientationAPI 实现动态适配&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// 设备状态Store示例
import { defineStore } from &amp;#39;pinia&amp;#39;

export const useDeviceStore = defineStore(&amp;#39;device&amp;#39;, {
  state: () =&amp;gt; ({
    orientation: ScreenOrientation?.type || &amp;#39;portrait-primary&amp;#39;,
    breakpoint: &amp;#39;mobile&amp;#39;
  }),
  actions: {
    init() {
      window.addEventListener(&amp;#39;orientationchange&amp;#39;, () =&amp;gt; {
        this.orientation = ScreenOrientation.type
      })
    }
  }
})
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;二组件层优化方案&#34;&gt;二、组件层优化方案&lt;/h2&gt;
&lt;h3 id=&#34;1-自适应布局组件库primevue-4--vueuse&#34;&gt;1. 自适应布局组件库：PrimeVue 4 + VueUse&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PrimeVue 4&lt;/strong&gt;：所有组件默认支持responsive属性，内置 30 + 种设备预设&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="2025-年-web-响应式开发解决方案基于-vue3-生态">2025 年 Web 响应式开发解决方案（基于 Vue3 生态）</h1>
<p>随着移动设备碎片化加剧和跨端需求增长，2025 年的响应式开发已从单纯的 &ldquo;适配多屏幕&rdquo; 升级为 &ldquo;全场景体验一致性&rdquo;。结合当前技术演进，针对 PC、平板、手机多端适配需求，推荐以下增强方案：</p>
<h2 id="一核心技术栈升级">一、核心技术栈升级</h2>
<h3 id="1-基础框架vue-3--vite-6--typescript-5">1. 基础框架：Vue 3 + Vite 6 + TypeScript 5</h3>
<ul>
<li>
<p><strong>Vite 6 优势</strong>：新增的responsive-plugin可自动识别设备类型并注入环境变量，配合import.meta.env.DEVICE_TYPE在编译时优化条件渲染</p>
</li>
<li>
<p><strong>TypeScript 5</strong>：借助const type特性强化响应式断点类型定义，避免运行时类型错误</p>
</li>
</ul>
<pre tabindex="0"><code>// 设备类型类型定义示例
type DeviceType = &#39;mobile&#39; | &#39;tablet&#39; | &#39;desktop&#39; | &#39;large-screen&#39;
const deviceType: DeviceType = import.meta.env.DEVICE_TYPE as DeviceType
</code></pre><h3 id="2-响应式引擎tailwind-css-4--bootstrap-6-混合方案">2. 响应式引擎：Tailwind CSS 4 + Bootstrap 6 混合方案</h3>
<ul>
<li>
<p><strong>Tailwind CSS 4</strong>：通过@container查询实现组件级响应式，比传统@media更精准控制元素布局</p>
</li>
<li>
<p><strong>Bootstrap 6</strong>：新增responsive-propsAPI，支持在组件上直接声明多端样式</p>
</li>
</ul>
<pre tabindex="0"><code>&lt;!-- Bootstrap 6 响应式属性示例 --&gt;
&lt;button 
  class=&#34;btn&#34;
  :responsive=&#34;{
    mobile: &#39;btn-sm w-full&#39;,
    tablet: &#39;btn-md w-1/2&#39;,
    desktop: &#39;btn-lg w-auto&#39;
  }&#34;
&gt;
  多端适配按钮
&lt;/button&gt;
</code></pre><h3 id="3-跨端状态管理pinia--设备传感器-api">3. 跨端状态管理：Pinia + 设备传感器 API</h3>
<ul>
<li>利用Pinia存储设备状态（如屏幕方向、分辨率），结合ScreenOrientationAPI 实现动态适配</li>
</ul>
<pre tabindex="0"><code>// 设备状态Store示例
import { defineStore } from &#39;pinia&#39;

export const useDeviceStore = defineStore(&#39;device&#39;, {
  state: () =&gt; ({
    orientation: ScreenOrientation?.type || &#39;portrait-primary&#39;,
    breakpoint: &#39;mobile&#39;
  }),
  actions: {
    init() {
      window.addEventListener(&#39;orientationchange&#39;, () =&gt; {
        this.orientation = ScreenOrientation.type
      })
    }
  }
})
</code></pre><h2 id="二组件层优化方案">二、组件层优化方案</h2>
<h3 id="1-自适应布局组件库primevue-4--vueuse">1. 自适应布局组件库：PrimeVue 4 + VueUse</h3>
<ul>
<li>
<p><strong>PrimeVue 4</strong>：所有组件默认支持responsive属性，内置 30 + 种设备预设</p>
</li>
<li>
<p><strong>VueUse</strong>：使用useMediaQuery组合式 API 实现组件级响应式逻辑</p>
</li>
</ul>
<pre tabindex="0"><code>&lt;script setup&gt;
import { useMediaQuery } from &#39;@vueuse/core&#39;

const isMobile = useMediaQuery(&#39;(max-width: 640px)&#39;)
const isTablet = useMediaQuery(&#39;(min-width: 641px) and (max-width: 1024px)&#39;)
&lt;/script&gt;

&lt;template&gt;
  &lt;div&gt;
    &lt;mobile-header v-if=&#34;isMobile&#34; /&gt;
    &lt;tablet-header v-else-if=&#34;isTablet&#34; /&gt;
    &lt;desktop-header v-else /&gt;
  &lt;/div&gt;
&lt;/template&gt;
</code></pre><h3 id="2-响应式数据处理vuequery--设备感知数据请求">2. 响应式数据处理：VueQuery + 设备感知数据请求</h3>
<ul>
<li>根据设备性能动态调整数据粒度，移动端请求精简数据减少流量消耗</li>
</ul>
<pre tabindex="0"><code>// 设备感知数据请求示例
useQuery([&#39;dashboard-data&#39;, deviceType], () =&gt; {
  return fetchDashboardData({
    detailLevel: deviceType === &#39;mobile&#39; ? &#39;basic&#39; : &#39;full&#39;
  })
})
</code></pre><h2 id="三性能优化策略">三、性能优化策略</h2>
<h3 id="1-渲染优化组件级代码分割">1. 渲染优化：组件级代码分割</h3>
<p>借助 Vite 6 的deviceConditionalImport功能，实现设备专属组件的按需加载</p>
<pre tabindex="0"><code>&lt;script setup&gt;
// 按设备类型动态导入组件
const [MobileComponent, TabletComponent, DesktopComponent] = await Promise.all([
  import.meta.env.DEVICE_TYPE === &#39;mobile&#39; ? import(&#39;./MobileComponent.vue&#39;) : null,
  import.meta.env.DEVICE_TYPE === &#39;tablet&#39; ? import(&#39;./TabletComponent.vue&#39;) : null,
  import.meta.env.DEVICE_TYPE === &#39;desktop&#39; ? import(&#39;./DesktopComponent.vue&#39;) : null
])
&lt;/script&gt;
</code></pre><h3 id="2-图像适配nextgen-image--webp-2">2. 图像适配：NextGen Image + WebP 2</h3>
<ul>
<li>
<p>使用<picture>标签配合srcset实现不同设备加载对应分辨率图像</p>
</li>
<li>
<p>采用 WebP 2 格式减少 50% 图像体积，配合loading=&ldquo;lazy&quot;实现按需加载</p>
</li>
</ul>
<pre tabindex="0"><code>&lt;picture&gt;
  &lt;source srcset=&#34;image-200.webp&#34; media=&#34;(max-width: 640px)&#34;&gt;
  &lt;source srcset=&#34;image-400.webp&#34; media=&#34;(max-width: 1024px)&#34;&gt;
  &lt;source srcset=&#34;image-800.webp&#34; media=&#34;(min-width: 1025px)&#34;&gt;
  &lt;img src=&#34;image-400.webp&#34; alt=&#34;响应式图像&#34; loading=&#34;lazy&#34;&gt;
&lt;/picture&gt;
</code></pre><h2 id="四测试与调试方案">四、测试与调试方案</h2>
<h3 id="1-多设备同步测试browserstack-2025--vitest">1. 多设备同步测试：BrowserStack 2025 + Vitest</h3>
<ul>
<li>
<p>利用 BrowserStack 的实时同步功能，在 20 + 设备上同时预览效果</p>
</li>
<li>
<p>使用 Vitest 的device-simulator模拟不同设备环境进行单元测试</p>
</li>
</ul>
<h3 id="2-性能监控lighthouse-mobile--web-vitals">2. 性能监控：Lighthouse Mobile + Web Vitals</h3>
<ul>
<li>
<p>重点监控移动设备的 LCP（最大内容绘制）和 CLS（累积布局偏移）</p>
</li>
<li>
<p>配置 CI/CD 流程，移动端性能得分低于 80 分自动阻断发布</p>
</li>
</ul>
<h2 id="五方案对比与选择建议">五、方案对比与选择建议</h2>
<table>
  <thead>
      <tr>
          <th>方案</th>
          <th>优势场景</th>
          <th>学习成本</th>
          <th>性能表现</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>传统 Bootstrap</td>
          <td>快速原型开发</td>
          <td>低</td>
          <td>中</td>
      </tr>
      <tr>
          <td>Tailwind 纯 CSS</td>
          <td>高度定制化 UI</td>
          <td>中</td>
          <td>高</td>
      </tr>
      <tr>
          <td>混合方案（推荐）</td>
          <td>复杂多端应用</td>
          <td>中高</td>
          <td>高</td>
      </tr>
      <tr>
          <td>组件库驱动</td>
          <td>企业级后台系统</td>
          <td>低</td>
          <td>中高</td>
      </tr>
  </tbody>
</table>
<p><strong>决策建议</strong>：</p>
<ul>
<li>
<p>简单应用：选择 Tailwind CSS 4 + VueUse 组合</p>
</li>
<li>
<p>复杂企业应用：采用混合方案 + PrimeVue 组件库</p>
</li>
<li>
<p>极致性能要求：增加 Vite 设备级代码分割和图像优化策略</p>
</li>
</ul>
<p>通过上述方案，可在 2025 年的技术环境下实现 &ldquo;一次开发，全端适配&rdquo;，同时兼顾性能和开发效率。核心思路是将响应式逻辑从 CSS 层提升到组件层和应用层，结合编译时优化和设备感知能力，构建真正适配未来多端环境的 Web 应用。</p>
<h1 id="前言">前言</h1>
<p>因为之前只是用Vue来开发IaaS平台项目，其使用场景通常都是PC，所以没怎么涉及到Web响应式设计开发相关知识。最近项目刚好是应用在PC和平板，甚至是手机上的，所以就需要考虑响应式的问题。</p>
<h1 id="1-技术选型">1. 技术选型</h1>
<p>Web响应式开发，主要是基于CSS里@media媒体查询实现，允许不同视图尺寸使用不同的布局。</p>
<h2 id="11-方案一vue-3--vite--bootstrap5">1.1 方案一：Vue 3 + Vite + Bootstrap5</h2>
<h3 id="111-优点">1.1.1 优点</h3>
<ol>
<li>
<p>容易上手：只要对 HTML 和 CSS 有基本了解的人都可以很快速的使用 Bootstrap。</p>
</li>
<li>
<p>响应式设计：Bootstrap 可以根据不同平台（手机、平板电脑和台式机）进行调整。</p>
</li>
<li>
<p>移动优先：在 Bootstrap 中，自适应移动端是框架的核心部分。</p>
</li>
<li>
<p>浏览器兼容性：Bootstrap5 兼容所有主流浏览器（Chrome、Firefox、Edge、Safari 和 Opera）。 如果您需要支持 IE11 及以下版本，请使用 Bootstrap4 或 Bootstrap3。</p>
</li>
<li>
<p>github 星数 164k</p>
</li>
<li>
<p>Bootstrap5 效果演示：https://www.bootstrap-admin.top/</p>
</li>
</ol>
<h3 id="112-缺点">1.1.2 缺点</h3>
<ol>
<li>
<p>没办法使用我们积累的vue next组件库</p>
</li>
<li>
<p>Bootstrap5 需要学习成本，但不会很难</p>
</li>
<li>
<p>相对紧急的项目，通常不应该引入新技术去开发实现，而是以快速交付为主。</p>
</li>
</ol>
<h2 id="12-方案二vue-3--vite--element-plus--media">1.2 方案二：Vue 3 + Vite + Element Plus + @media</h2>
<h3 id="121-优点">1.2.1 优点</h3>
<ol>
<li>基于前端现有技术积累，可快速开发项目功能</li>
</ol>
<h3 id="122-缺点">1.2.2 缺点</h3>
<ol>
<li>
<p>前端封装组件库，并没考虑过响应式设计，潜在未知样式问题，如开发此项目，各组件需考虑各平台（电脑、平板、手机）屏幕适配的同时，还要考虑已引用该库开发的项目兼容性问题。</p>
</li>
<li>
<p>@media媒体查询需每个页面、每个平台去适配（Bootstrap5做的事情），工作量相对较大，因无更多平台设备去验证，潜在未知的样式问题。</p>
</li>
</ol>
<h2 id="13-结论">1.3 结论</h2>
<p>简单来说，可以理解为方案一Bootstrap5帮我们处理好了屏幕适配的问题，我们只需要关注功能开发即可，方案二则是功能也要开发，样式也要关注。长远来看，倾向于方案一开发。</p>
<h1 id="2-快速搭建">2. 快速搭建</h1>
<p>Bootstrap5官方文档有提供Vite基于开发的指南<a href="https://getbootstrap.com/docs/5.2/getting-started/vite/">《Bootstrap &amp; Vite》</a>，我们虽然是基于Vue3开发的，但是相关配置基本都一样的，只是有一点点差异而已。</p>
<h2 id="21-下载">2.1 下载</h2>
<p>通过Vite直接生成基于Typescript开发的Vue3模版。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">create</span> <span class="nx">vite</span><span class="kd">@latest</span> <span class="nx">my</span><span class="o">-</span><span class="nx">vue</span><span class="o">-</span><span class="nx">app</span> <span class="o">--</span> <span class="o">--</span><span class="nx">template</span> <span class="nx">vue</span><span class="o">-</span><span class="nx">ts</span>
</span></span></code></pre></div><h2 id="22-安装">2.2 安装</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span>
</span></span><span class="line"><span class="cl"><span class="c1">// bootstrap5、popperjs
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">npm</span> <span class="nx">install</span> <span class="o">--</span><span class="nx">save</span> <span class="nx">bootstrap</span> <span class="kd">@popperjs</span><span class="o">/</span><span class="nx">core</span>
</span></span><span class="line"><span class="cl"><span class="c1">// sass
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">npm</span> <span class="nx">install</span> <span class="o">--</span><span class="nx">save</span><span class="o">-</span><span class="nx">dev</span> <span class="nx">sass</span>
</span></span><span class="line"><span class="cl"><span class="c1">// bootstrap-icons 官方图标库
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">npm</span> <span class="nx">install</span> <span class="nx">bootstrap</span><span class="o">-</span><span class="nx">icons</span>
</span></span></code></pre></div><h2 id="23-配置">2.3 配置</h2>
<h3 id="231-开发热重载">2.3.1 开发热重载</h3>
<p>在<code>vite.config.ts</code>中配置，我们需要让Vite知道在哪里可以找到我们项目的TypeScript，以及开发服务器应该如何表现(热重载从src文件夹中拉取)。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">path</span> <span class="kr">from</span> <span class="s1">&#39;path&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">resolve</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">alias</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">root</span>: <span class="kt">path.resolve</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">,</span> <span class="s1">&#39;src&#39;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nx">server</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">port</span>: <span class="kt">8080</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">host</span>: <span class="kt">true</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h3 id="232-bootstrap5">2.3.2 Bootstrap5</h3>
<ol>
<li>
<p>在<code>vite.config.ts</code>中配置，让导入变得尽可能简单：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"> <span class="nx">resolve</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">alias</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="s1">&#39;~bootstrap&#39;</span><span class="o">:</span> <span class="nx">path</span><span class="p">.</span><span class="nx">resolve</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">,</span> <span class="s1">&#39;node_modules/bootstrap&#39;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span></code></pre></div></li>
<li>
<p>在<code>src/assets/style</code>文件夹新建一个文件<code>bootstrap5.scss</code> ，引入bootstrap5样式：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kd">@import</span> <span class="s2">&#34;~bootstrap/scss/bootstrap&#34;</span><span class="p">;</span>
</span></span></code></pre></div></li>
<li>
<p>将<code>main.ts</code>文件修改为<code>main.js</code>，然后在<code>index.html</code>中同步修改：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;module&#34;</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;/src/main.js&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span></code></pre></div></li>
<li>
<p>在<code>main.js</code>中引入<code>bootstrap5</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="c1">// 自定义样式
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="s1">&#39;../src/assets/style/bootstrap5.scss&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Bootstrap5 JS
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="o">*</span> <span class="kr">as</span> <span class="nx">bootstrap</span> <span class="kr">from</span> <span class="s1">&#39;bootstrap&#39;</span>
</span></span></code></pre></div></li>
</ol>
<h2 id="23-验证">2.3 验证</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vue" data-lang="vue"><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;container mt-3&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">h2</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;my-3 text-start&#34;</span><span class="p">&gt;</span><span class="nx">按钮样式</span><span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn&#34;</span><span class="p">&gt;</span><span class="nx">基本按钮</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-primary ms-2&#34;</span><span class="p">&gt;</span><span class="nx">主要按钮</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-secondary ms-2&#34;</span><span class="p">&gt;</span><span class="nx">次要按钮</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-success ms-2&#34;</span><span class="p">&gt;</span><span class="nx">成功</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-info ms-2&#34;</span><span class="p">&gt;</span><span class="nx">信息</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-warning ms-2&#34;</span><span class="p">&gt;</span><span class="nx">警告</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-danger ms-2&#34;</span><span class="p">&gt;</span><span class="nx">危险</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-dark ms-2&#34;</span><span class="p">&gt;</span><span class="nx">黑色</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-light ms-2&#34;</span><span class="p">&gt;</span><span class="nx">浅色</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;button&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;btn btn-link ms-2&#34;</span><span class="p">&gt;</span><span class="nx">链接</span><span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span></code></pre></div><h2 id="24-效果">2.4 效果</h2>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202306121151455.png"></p>
<h1 id="3-组件">3. 组件</h1>
<h2 id="31-日期选择器">3.1 日期选择器</h2>
<p>一开始打算使用<code>&lt;input type=&quot;datetime-local&quot;&gt;</code>实现的，但是效果不是很理想，一些样式调整起来很复杂，加上本着不重复造轮子的思想，就打算引用相关日期插件实现。</p>
<ol>
<li>安装</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="kd">@popperjs</span><span class="o">/</span><span class="nx">core</span> <span class="kd">@eonasdan</span><span class="o">/</span><span class="nx">tempus</span><span class="o">-</span><span class="nx">dominus</span>
</span></span></code></pre></div><ol start="2">
<li>main.js中引入样式</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="c1">// 日期组件样式
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="s1">&#39;@eonasdan/tempus-dominus/dist/css/tempus-dominus.css&#39;</span>
</span></span></code></pre></div><ol start="3">
<li>在.vue中使用时，需引入</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">TempusDominus</span><span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@eonasdan/tempus-dominus&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span>  <span class="nx">name</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;@eonasdan/tempus-dominus/dist/locales/ru&#34;</span><span class="p">;</span>
</span></span></code></pre></div><ol start="4">
<li>实现代码</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;input-group mb-3&#34;</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;datetimepicker1&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;text&#34;</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;form-control&#34;</span> <span class="na">readonly</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">&#34;&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">span</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;input-group-text&#34;</span><span class="p">&gt;&lt;</span><span class="nt">i</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;bi bi-calendar&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">i</span><span class="p">&gt;&lt;/</span><span class="nt">span</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl"><span class="nx">onMounted</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kr">const</span> <span class="nx">element</span>: <span class="kt">any</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;datetimepicker1&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">datetimepicker1</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">TempusDominus</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">localization</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">format</span><span class="o">:</span> <span class="s1">&#39;yyyy-MM-dd HH:mm:ss&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nx">hourCycle</span><span class="o">:</span> <span class="s1">&#39;h24&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="nx">display</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">viewMode</span><span class="o">:</span> <span class="s1">&#39;calendar&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="nx">components</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">year</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">month</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">date</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">clock</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">hours</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">minutes</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">seconds</span>: <span class="kt">true</span>
</span></span><span class="line"><span class="cl">            <span class="p">},</span>
</span></span><span class="line"><span class="cl">            <span class="nx">icons</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">time</span><span class="o">:</span> <span class="s1">&#39;bi bi-clock&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">date</span><span class="o">:</span> <span class="s1">&#39;bi bi-calendar&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">up</span><span class="o">:</span> <span class="s1">&#39;bi bi-arrow-up&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">down</span><span class="o">:</span> <span class="s1">&#39;bi bi-arrow-down&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">previous</span><span class="o">:</span> <span class="s1">&#39;bi bi-chevron-left&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">next</span><span class="o">:</span> <span class="s1">&#39;bi bi-chevron-right&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">today</span><span class="o">:</span> <span class="s1">&#39;bi bi-calendar-check&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">clear</span><span class="o">:</span> <span class="s1">&#39;bi bi-trash&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">close</span><span class="o">:</span> <span class="s1">&#39;bi bi-x&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="p">},</span>
</span></span><span class="line"><span class="cl">            <span class="nx">buttons</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">today</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">clear</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="nx">close</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="nx">datetimepicker1</span><span class="p">.</span><span class="nx">locale</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><ol start="5">
<li>效果如下</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202306091617823.png"></p>
<h2 id="32-自定义主题色">3.2 自定义主题色</h2>
<p>因为Bootstrap5主题默认是蓝色，和项目设计的主题色不一致，所以就需要修改定制主题色，这一块在<a href="https://bootstrapdoc.com/docs/5.0/customize/sass/">官网Sass模块</a>也有详细说明。特别注意的是，同一Sass文件中的变量覆盖可以在默认变量之前或之后。但是，当跨Sass文件覆盖时，必须在导入Bootstrap的Sass文件之前进行覆盖。比如要将主题色修改为紫色（#6610f2），就需要在我们自定义的样式文件bootstrap5.scss中设置，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scss" data-lang="scss"><span class="line"><span class="cl"><span class="nv">$primary</span><span class="o">:</span> <span class="mh">#6610f2</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$danger</span><span class="o">:</span> <span class="mh">#ff4136</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">$theme-colors</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;primary&#34;</span><span class="o">:</span> <span class="nv">$primary</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;danger&#34;</span><span class="o">:</span> <span class="nv">$danger</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// scss
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">@import</span> <span class="s2">&#34;~bootstrap/scss/bootstrap&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">// Required
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">@import</span> <span class="s2">&#34;../node_modules/bootstrap/scss/functions&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">@import</span> <span class="s2">&#34;../node_modules/bootstrap/scss/variables&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">@import</span> <span class="s2">&#34;../node_modules/bootstrap/scss/mixins&#34;</span><span class="p">;</span>
</span></span></code></pre></div><p>效果如下图所示，可以看到按钮设置为<code>primary</code>时，颜色已经变成紫色（#6610f2）了，但是出现了一个问题，那就是次要按钮、成功、信息等按钮样式异常。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202306121719581.png"></p>
<p>为了解决这个问题，就去查看下<code>_variables.scss</code> 文件，其中有一段样式代码：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scss" data-lang="scss"><span class="line"><span class="cl"><span class="c1">// scss-docs-start theme-color-variables
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nv">$primary</span><span class="o">:</span>       <span class="nv">$blue</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$secondary</span><span class="o">:</span>     <span class="nv">$gray-600</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$success</span><span class="o">:</span>       <span class="nv">$green</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$info</span><span class="o">:</span>          <span class="nv">$cyan</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$warning</span><span class="o">:</span>       <span class="nv">$yellow</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$danger</span><span class="o">:</span>        <span class="nv">$red</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$light</span><span class="o">:</span>         <span class="nv">$gray-100</span> <span class="k">!default</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$dark</span><span class="o">:</span>          <span class="nv">$gray-900</span> <span class="k">!default</span><span class="p">;</span>
</span></span></code></pre></div><p>也就是我们在自定义样式中覆盖了，导致相关字段颜色值丢失，所以就在自定义样式文件中，补上，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scss" data-lang="scss"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// 修改主题色
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nv">$primary</span><span class="o">:</span> <span class="mh">#6610f2</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$secondary</span><span class="o">:</span> <span class="mh">#6c757d</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$success</span><span class="o">:</span> <span class="mh">#198754</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$info</span><span class="o">:</span> <span class="mh">#0dcaf0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$warning</span><span class="o">:</span> <span class="mh">#ffc107</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$danger</span><span class="o">:</span> <span class="mh">#dc3545</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$light</span><span class="o">:</span> <span class="mh">#f8f9fa</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$dark</span><span class="o">:</span> <span class="mh">#212529</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">$theme-colors</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;primary&#34;</span><span class="o">:</span> <span class="nv">$primary</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;secondary&#34;</span><span class="o">:</span> <span class="nv">$secondary</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;success&#34;</span><span class="o">:</span> <span class="nv">$success</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;info&#34;</span><span class="o">:</span> <span class="nv">$info</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;warning&#34;</span><span class="o">:</span> <span class="nv">$warning</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;danger&#34;</span><span class="o">:</span> <span class="nv">$danger</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;light&#34;</span><span class="o">:</span> <span class="nv">$light</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;dark&#34;</span><span class="o">:</span> <span class="nv">$dark</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span></code></pre></div><p>效果如下所示，虽然解决了按钮的样式问题，但是其他组件其实可能有潜在的问题，这一块后续再补充。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202306121727168.png"></p>
<h2 id="33-echarts">3.3 Echarts</h2>
<h3 id="331-安装">3.3.1 安装</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="nx">echarts</span> <span class="o">--</span><span class="nx">save</span>
</span></span></code></pre></div><h3 id="332-引入-echarts">3.3.2 引入 ECharts</h3>
<p>因为Echarts官网上面其实都有Demo的，但是结合我们实际项目，还是可以把相对贴切的模版给出来的，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;card&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;echarts&#34;</span> <span class="na">style</span><span class="o">=</span><span class="s">&#34;width: 500px; height: 300px;&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">setup</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;ts&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="o">*</span> <span class="kr">as</span> <span class="nx">echarts</span> <span class="kr">from</span> <span class="s1">&#39;echarts&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">onMounted</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">onMounted</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 基于准备好的dom，初始化echarts实例
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="kr">const</span> <span class="nx">element</span>: <span class="kt">any</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;echarts&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="kr">const</span> <span class="nx">myChart</span>: <span class="kt">any</span> <span class="o">=</span> <span class="nx">echarts</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="kr">const</span> <span class="nx">colors</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;#5470C6&#39;</span><span class="p">,</span> <span class="s1">&#39;#91CC75&#39;</span><span class="p">,</span> <span class="s1">&#39;#EE6666&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">color</span>: <span class="kt">colors</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">tooltip</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">trigger</span><span class="o">:</span> <span class="s1">&#39;axis&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nx">axisPointer</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;cross&#39;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nx">grid</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">left</span><span class="o">:</span> <span class="s1">&#39;30%&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nx">legend</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">data</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;电压&#39;</span><span class="p">,</span> <span class="s1">&#39;电流&#39;</span><span class="p">,</span> <span class="s1">&#39;功率&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nx">xAxis</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;category&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisTick</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">alignWithLabel</span>: <span class="kt">true</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// prettier-ignore
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="nx">data</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;06:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;07:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;08:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;09:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;10:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;12:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;14:10:00&#39;</span><span class="p">,</span> <span class="s1">&#39;15:30:00&#39;</span><span class="p">,</span> <span class="s1">&#39;16:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;17:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;18:00:00&#39;</span><span class="p">,</span> <span class="s1">&#39;19:00:00&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nx">yAxis</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;value&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;电压&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">position</span><span class="o">:</span> <span class="s1">&#39;left&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">alignTicks</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">offset</span>: <span class="kt">0</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLine</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">show</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">          <span class="nx">lineStyle</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">color</span>: <span class="kt">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLabel</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">formatter</span><span class="o">:</span> <span class="s1">&#39;{value} V&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;value&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;电流&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">position</span><span class="o">:</span> <span class="s1">&#39;left&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">alignTicks</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">offset</span>: <span class="kt">50</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLine</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">show</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">          <span class="nx">lineStyle</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">color</span>: <span class="kt">colors</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLabel</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">formatter</span><span class="o">:</span> <span class="s1">&#39;{value} A&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;value&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;功率&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">position</span><span class="o">:</span> <span class="s1">&#39;left&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">alignTicks</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">offset</span>: <span class="kt">100</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLine</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">show</span>: <span class="kt">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">          <span class="nx">lineStyle</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">color</span>: <span class="kt">colors</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="nx">axisLabel</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="nx">formatter</span><span class="o">:</span> <span class="s1">&#39;{value} KW&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nx">series</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;电压&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;line&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">data</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="mf">2.0</span><span class="p">,</span> <span class="mf">4.9</span><span class="p">,</span> <span class="mf">7.0</span><span class="p">,</span> <span class="mf">23.2</span><span class="p">,</span> <span class="mf">25.6</span><span class="p">,</span> <span class="mf">76.7</span><span class="p">,</span> <span class="mf">135.6</span><span class="p">,</span> <span class="mf">162.2</span><span class="p">,</span> <span class="mf">32.6</span><span class="p">,</span> <span class="mf">20.0</span><span class="p">,</span> <span class="mf">6.4</span><span class="p">,</span> <span class="mf">3.3</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;电流&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;line&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">yAxisIndex</span>: <span class="kt">1</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">data</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">          <span class="mf">2.6</span><span class="p">,</span> <span class="mf">5.9</span><span class="p">,</span> <span class="mf">9.0</span><span class="p">,</span> <span class="mf">26.4</span><span class="p">,</span> <span class="mf">28.7</span><span class="p">,</span> <span class="mf">70.7</span><span class="p">,</span> <span class="mf">175.6</span><span class="p">,</span> <span class="mf">182.2</span><span class="p">,</span> <span class="mf">48.7</span><span class="p">,</span> <span class="mf">18.8</span><span class="p">,</span> <span class="mf">6.0</span><span class="p">,</span> <span class="mf">2.3</span>
</span></span><span class="line"><span class="cl">        <span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;功率&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="kr">type</span><span class="o">:</span> <span class="s1">&#39;line&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">yAxisIndex</span>: <span class="kt">2</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nx">data</span><span class="o">:</span> <span class="p">[</span><span class="mf">2.0</span><span class="p">,</span> <span class="mf">2.2</span><span class="p">,</span> <span class="mf">3.3</span><span class="p">,</span> <span class="mf">4.5</span><span class="p">,</span> <span class="mf">6.3</span><span class="p">,</span> <span class="mf">10.2</span><span class="p">,</span> <span class="mf">20.3</span><span class="p">,</span> <span class="mf">23.4</span><span class="p">,</span> <span class="mf">23.0</span><span class="p">,</span> <span class="mf">16.5</span><span class="p">,</span> <span class="mf">12.0</span><span class="p">,</span> <span class="mf">6.2</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">};</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 绘制图表
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">myChart</span><span class="p">.</span><span class="nx">setOption</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">style</span> <span class="na">scoped</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202306121758405.png"></p>
<h3 id="332-屏幕自适应">3.3.2 屏幕自适应</h3>
<p>因为使用Bootstrap5开发本身就是为了Web响应式功能，所以Echarts也需要处理屏幕自适应的问题，这个ECharts官方文档已经有相关说明了<a href="https://echarts.apache.org/handbook/zh/concepts/chart-size/">《响应容器大小的变化》</a>，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vue" data-lang="vue"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="err">#</span><span class="nx">main</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">html</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">body</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">width</span><span class="o">:</span> <span class="mi">100</span><span class="o">%</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="err">#</span><span class="nx">main</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">height</span><span class="o">:</span> <span class="mi">400</span><span class="nx">px</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;main&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;text/javascript&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">var</span> <span class="nx">myChart</span> <span class="o">=</span> <span class="nx">echarts</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;main&#39;</span><span class="p">));</span>
</span></span><span class="line"><span class="cl">  <span class="nb">window</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">&#39;resize&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">myChart</span><span class="p">.</span><span class="nx">resize</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span></code></pre></div><h3 id="333-热更新">3.3.3 热更新</h3>
<p>待解决。</p>
<h1 id="4-打包">4. 打包</h1>
<h2 id="41-本地打开">4.1 本地打开</h2>
<p>因为项目应用场景不太一样，所以有些时候是想要直接打开<code>dist/index.html</code>就可以看到网页内容的，实现这个有现成的插件可以使用<a href="https://github.com/richardtallent/vite-plugin-singlefile">vite-plugin-singlefile</a>，其原理就是将<code>js</code>和<code>css</code>文件内容填充到<code>index.html</code>里，这样就可以通过打开<code>index.html</code>查看打包好的项目了。如下所示：</p>
<ol>
<li>安装</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="nx">vite</span><span class="o">-</span><span class="nx">plugin</span><span class="o">-</span><span class="nx">singlefile</span> <span class="o">--</span><span class="nx">save</span><span class="o">-</span><span class="nx">dev</span>
</span></span></code></pre></div><ol start="2">
<li>在vite.config.ts中配置</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineConfig</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;vite&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">vue</span> <span class="kr">from</span> <span class="s2">&#34;@vitejs/plugin-vue&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">viteSingleFile</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;vite-plugin-singlefile&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">	<span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">vue</span><span class="p">(),</span> <span class="nx">viteSingleFile</span><span class="p">()],</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>《论生命之短暂》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%BA%E7%94%9F%E5%91%BD%E4%B9%8B%E7%9F%AD%E6%9A%82/</link>
      <pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E8%AE%BA%E7%94%9F%E5%91%BD%E4%B9%8B%E7%9F%AD%E6%9A%82/</guid>
      <description>&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;p&gt;为了让某个年代以自己的名字命名，他们牺牲了所有的岁月。&lt;/p&gt;
&lt;h2 id=&#34;导读&#34;&gt;导读&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;《论生命之短暂》（De Brevitate Vitae）想要告诉我们，与其抱怨生命太短，不如学会珍惜时间。因为只有庸人们才会放纵欲望，才会为了财富、权力等外在善一生处心竭虑。他们浪费时间且不自知，到头来却还要抱怨时间不够。相反，只有热爱智慧的人，“只有潜心钻研哲学的人，才是真正悠闲自在、真正活过的人”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;心灵之困扰主要源于我们对外在事物的执着。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那些看似不幸的事情，其实对我们而言都是有益的。或者说，现实所发生的一切都是最好的安排，通过智慧，我们都能从中获益。直到今天，我们对这种想法似乎也不陌生。但我们朴素的想法，其实和斯多亚派的观点还是有些背景性与框架性的差异。我也曾撰文区分过斯多亚派的观点与自欺欺人的阿Q精神等类似现象有何不同，这里就不再赘述了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;闲暇不以快乐为目的，也不是为了满足生活必需，而是为了高尚和自由，它是因其自身故的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;投入到公民生活之中与享受闲暇之间，并不存在实质性的冲突。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;幸福的充分必要条件是理性或美德。换言之，只要我们拥有了理性或美德，我们就获取了幸福。同时，也只有理性或美德是获取幸福的手段，而所有的财富、权力等外在善都无助于我们实现这个目的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;论生命之短暂&#34;&gt;论生命之短暂&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;生命并非短暂，而是我们把它变得短暂；自然并非吝啬，而是我们浪费了太多。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生命也同理，管理得当，就会得到充分的延长。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们真正活过的只是一小部分生命而已。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一些人在寻求法律援助，另一些人在提供相应的帮助；一些人在接受审判，另一些人在为他们辩护，还有一些人要负责审判。没有人关注自身的需求，大家都在为别人的利益而活。看看那些所谓的名人，你会发现他们有一个明显的标志，那就是，甲的生命是为乙而存在的，乙的时间又奉献给了丙——没有人在意自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你没有理由要求任何人的关注，因为你看起来并不是缺少他人的陪伴，而是无法忍受自己的陪伴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我特别想抓住一个老年人对他说：“现在你已经走到了生命的尽头。你活了快一百年了，没准更多。那么，不妨来盘点一下你的人生吧。想想你有多少时间给了放债人，又有多少给了情妇、资助人或是门客。再想想那些因为和妻子吵架、惩罚奴隶以及为了所谓的社会责任不得不四处奔波而浪费的时间。当然，还有那些因为不注意身体而被疾病占用的时间和那些被庸庸碌碌浪费的时间。把这些都算上，你会发现，真正用于生活的时间少得可怜。再想想你何时有过明确的目标，何时按计划安排了自己的生活，何时随着自己的心意活过，何时可以不掩饰真性情，何时思想不受干扰，这漫长的一生又真正做出了什么成就。想想多少人剥削过你的时间，而你却对此一无所知？那些无用的忧愁、无知的喜悦、贪婪的欲望和世俗的引诱——这些浪费了你多少生命？你真正留给自己的时间少之又少。意识到这一点，你就会明白，寿命虽长，人却早就死了。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你意识不到生命的脆弱，注意不到时间的流逝，于是你在时间永远充裕的错觉中将其白白浪费——而事实是，你为某个人或某件事浪费生命的那一天，很可能就是生命的最后一天。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;忘记人必有一死，把合理的计划推迟到五六十岁，这是多么愚蠢啊！你以为那个时候就可以真正生活了，却忘了很少有人能活到那个时候！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;被奉若神明的奥古斯都大帝[5]，无疑是命运的宠儿。有生之年，他从未停止过对闲暇的渴望，试图从繁重的公务中寻找片刻安宁。他不管说什么，最后都会回到同一个主题，那就是对悠闲生活的期待。总有一天他要为自己而活——他喜欢用这一虚假却甜蜜的幻想自我宽慰，这样就能心甘情愿地劳碌。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;恶习总能吞噬时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最令人不齿的还要属终日沉湎于酒色的人——这无疑是对时间最糟糕的浪费。沉浸在对荣耀的幻想中虽然虚妄，但多少还有值得尊敬的成分。那些热衷发动战争、有着偏执仇恨的狂热分子固然有罪，但至少还有那么点男子气，而只知道贪食好色的人却失败得毫无尊严。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对沉迷于某项活动的人来说，生活最不重要，虽然没有什么比生活更难学。无论在哪个领域，人们都可以找到诸多老师。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多人临终时还认为自己没有学到生命的真谛——智者尚且如此，更不用提芸芸众生了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个人能确保不浪费时间，那他毫无疑问是伟大、超越人类局限的智者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人刚得到渴望已久的官职，又开始向往无官一身轻的生活，不停嚷嚷：“日子何时才能到头？”一个人认为组织比赛很了不起，可一旦目标达成，他又开始抱怨：“何时能摆脱这些工作！”演讲者在集会上被人山人海地包围，连声音到达不了的地方都挤满了民众，但他却说：“我什么时候才能有假期？”每个人都带着对未来生活的渴望和对当下生活的厌倦奔波忙碌着。但智者会将时间花费在自身需求上，将每天都过成最后一天。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你不能仅凭一个人的白发和皱纹就认为他活了很久：他或许长寿，但并不一定能算活得久。这就好比长途旅行的人刚离开港口就遭遇了暴风雨，虽然被狂风吹得团团转，好像奔波了很久，但其实只不过是在原地打转罢了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们经常占用他人的时间，但让我震惊的是，被占用时间的人也总能欣然接受。双方可以在占用时间的理由上达成共识，却很少关注时间本身，仿佛付出时间不算付出一样。明明是在挥霍世间最珍贵的商品，却因为看不见摸不着、难以评估，人们就觉得时间廉价甚至根本没有任何价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设人们能像计算过往的时间一样，统计出人生余下的寿命，那些年数不多的人就会惊慌、警觉，必将小心翼翼地使用时间。遗憾的是，即便微小，人们也更愿意管理确切的数目，却忽略了时间这样不知何时就会戛然而止的东西。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们经常会对所爱之人说，愿意为他们留出自己的时间，也的确在一无所知的情况下付出了时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时光不能倒流，风华不能再现。生命一旦开始，就会按照固有的轨迹走下去，不会为任何人变化或倒流。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世上最愚蠢的行为莫过于吹嘘自己的远见卓识。那些自认为目光长远的人，总在为改善生活拼命工作。他们一直在试图管理自己的生活，目光总定位在遥远的未来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拖延才是对生命最大的浪费。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;未来的承诺剥夺了享受当下的权利。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;期待是生活最大的阻力，因为期待依赖于未来，却丢掉了当下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;试图安排那些本应由命运决定的东西，就放弃了本应由自己决定的东西。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可怜的凡人啊，生命中最美好的一天，却总被最先丢弃。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;诗人想问的是：“为什么你还在徘徊？还在无所事事？要是不将这一天紧紧抓住，它可就要溜走了。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你必须能让使用时间的速度和时间流逝的速度相匹配。就好像面对随时会枯竭的小溪，你一定要趁机多喝点水。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;恶习不能只是戳戳，必须被彻底粉碎。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人生可以分为三个阶段：过去、现在和未来。现在转瞬即逝，未来飘忽不定，只有过去业已定型。命运无力改变过去，任何人都不能，但这也正是琐事缠身者丢弃的：他们总是没有时间回头看。即便想要回顾过往，重温不堪的往事也不令人愉快，因此，他们不愿意回想被虚度的时光。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不敢回忆过去的人，往往都是贪得无厌、心高气傲、小人得志、背信弃义、巧取豪夺、挥霍无度之辈。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过去才是生命中最神圣、最独立的光阴。唯有过去能超越人类一切风险，不受命运的摆布，不被欲望、恐惧或疾病扰乱。过去是屹立不倒、永恒存在的财产，任何事都不能将其打扰或夺走。面对现在，我们只能一点点地使用、一天天地过日子，但我们却能随时召唤过去，随意调用它、审视它。可惜，琐事缠身的人没有时间这么做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果容器没有底部，往里面倒再多液体也无济于事；如果生命没有依托，拥有再多时间也毫无用处，它还是会从思维的裂缝中流走。当下的时间总是短暂，短暂到让人意识不到。当下是流动的、奔流不息的，只在到来前停息过，此后便再无耽搁，就像天空和星辰，斗转星移，永不停歇。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;风烛残年的老人为多活几年虔诚祷告。他们假装还年轻，并用这种假象来安慰自己，就好像骗过了自己就能欺骗命运一样。可是，当疾病逼得他们走投无路，必须直面死亡时，他们又那样恐惧，仿佛这不是生命的必经阶段，他们是被死神强行带走的。他们说自己是傻瓜，从未真正生活过，如果有机会康复，一定会悠闲地度过余生。接着，他们就会感慨，之前的辛苦有多么徒劳。费尽心力得来的东西，他们却根本没机会享用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们不浪费、不挥霍时间，不受命运的摆布，不在漫不经心中虚度，不因无故施舍而浪费，更不会白白丢弃时间。他们合理安排了时间，即便寿命不长，留给自己的时间也足够多。不管死神何时降临，智者都能迈着坚定的步伐坦然迎接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;或许你要问，文中反复提到的琐事缠身者到底指哪些人？比如那些被看门狗逐出法庭的人；那些要么被支持者体面地压垮，要么被反对者轻蔑地击垮的人；那些因为公务不得不离开家庭，在他人门前奔波的人；那些为了不光彩的利益围着执政官转悠，却最终身败名裂的人。但我想说的还不仅仅是这些人。很多人甚至在休息的时候也要被琐事打扰：他们可能住着乡间别墅，一个人躺在沙发上享受安宁，却不知如何陪伴自己。这样的生活不是悠闲，只能算无所事事。想想那个貌似休息，却焦虑地摆弄着柯林斯铜器的人。他将大量时间浪费在生锈的铁片上，只因它的价格可能会被某个狂热的收藏家炒得离谱；那个坐在角斗场（说来惭愧，我们竟有这样恶俗的爱好，这甚至都不是罗马的发明），聚精会神地盯着角斗士的观众；那个花时间将牲畜按年龄和颜色分类的人；那个为竞技场上的勇士提供赞助的人——你觉得他们悠闲吗？还有那个在理发上浪费很多时间的人，头发要一丝不乱，一会儿觉得这里不够整齐，一会儿又要修剪两边稀疏的头发，好让它们恰好遮住额头，虽然明知道再怎么打理，剪掉的头发很快还会长出来。理发师一旦稍有不慎，他就大为光火，仿佛修剪的不是头发，而是整个人！要是哪根头发没被剪好，或是打理得不够仔细，甚至只是有几根没被束入发圈，他就会异常愤怒。你觉得这样的人悠闲吗？这些人宁愿国家一团糟，也不能让头发一团糟；宁愿国家不安全，也不能让发型不体面；宁愿不高尚，也不能不整洁！你觉得这种在梳妆打扮上浪费时间的人悠闲吗？还有一群人，他们每天忙于作曲，花大量时间聆听和研究音乐，把原本简单悦耳的旋律，故意扭曲成不自然的调式。他们成天在脑海中想象各种旋律，手指也要忍不住跟着打节拍，即便正在出席严肃甚至是悲伤的场合，这些人也总会忍不住哼出声来，这不是悠闲，而是懒散地工作。还有那些宴会！天哪，我真是无法将宴席和悠闲联系在一起！他们忧心忡忡地摆放餐具，为侍者精心打理服装，焦虑地指挥着厨师准备菜肴，再看看那些一脸温顺却又紧张兮兮地跑来跑去的奴隶。他们把家禽熟练地切成合适的分量，小心翼翼地为喝醉的宾客拭去口水。如此这般努力，只为博一个优雅、有品位的好名声。不铺张浪费一下，他们都不知道如何正常吃饭。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我也不会称这类人悠闲：他们坐着轿子，准时在一个又一个场合出现，仿佛哪个都离不开自己。他们需要被提醒什么时候沐浴、什么时候游泳、什么时候用餐；他们几乎放弃了独立思考，变得麻木颓废，连自己是否饿了都不确定。我就听说过这么一个任性的人——如果“任性”能被用来形容这种连最起码的生活常识都不愿意学习的人——当他被从浴室抬出来，放到轿子里时，他竟然问：“我现在坐好了吗？”这种连自己是否坐好了都不知道的人，你觉得他会知道自己是否活着、能否看见、能否算作悠闲吗？我甚至都不确定应该为他确实不知道还是假装不知道而同情他。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果说那些喜剧演员的表演有什么不足，那就是他们表现的罪恶太少了，远不能反映这个时代的真实状况。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些人已经颓废到需要别人来告知自己是否坐好。显然，用“悠闲”来形容这种人实属不妥，或许“有病”甚至“死了”是更为精准的表述。真正悠闲的人，能清楚地意识到自己的悠闲；而这个人却半死不活，连自己身体的位置都不清楚，他又怎么可能掌控时间呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以前只有希腊人才关心诸如尤利西斯有多少船夫，先有《伊利亚特》还是先有《奥德赛》以及它们是否是出自同一位作者这类傻问题。这些问题不能增加个人学识，即便研究成果被发表，大家也只会觉得你是书呆子，而非学者。遗憾的是，现在罗马人也开始沉迷于追求这种无用的知识了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只有潜心钻研哲学的人，才是真正悠闲自在、真正活过的人，因为他们不仅密切关注自己的人生，还能从其他时代吸取生活的经验，让历史为他们的生活增添色彩。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们常说，父母是命运分配的，我们无权选择，但我们却有权选择成为任何人的子女。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有什么能经得住时间的冲刷和打磨，除了被哲学赋予神圣光芒的伟大作品。时间无法摧毁、破坏它们，相反，它们只会随着时间的推移越来越被重视。毕竟，人们容易嫉妒近在咫尺的事物，却往往能够自由欣赏历史长河中的作品。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;而那些忘记过去、浪费当下、恐惧未来的人，他们的生命却异常短暂和苦恼。只有到了生命尽头，那些可怜人才会意识到，人生漫漫，他们虽忙忙碌碌却毫无作为。他们甚至会渴望死神的到来，但这并不能说明他们已经活得足够长了。因为愚昧，他们陷入烦躁的不安全感，转而开始期盼那些让他们恐惧的事：因为害怕死亡，所以宁可它早一点到来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一旦注意力没了落脚点，他们就会坐立不安、无所事事，完全不知道如何面对这种闲适，如何打发时光。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们期待夜晚，并因此丢掉了白天；他们恐惧黎明，并因此丢掉了夜晚。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当年傲慢的波斯帝国国王[35]在广阔的草原上排兵布阵时，看着眼前数以万计的宏大军队，竟然忍不住流下了眼泪——他知道百年之后这些都将不复存在。讽刺的是，正是这个流泪的男人为军队带来了厄运。没过多久，这些兵马就因征战和逃亡丧命于海洋、陆地，而他当年竟然还为百年之后这些人的命运担忧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为什么他们的快乐总夹杂着不安？因为这些快乐只是源于一些毫无理由的刺激，没有牢固的根基。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所有的好运都伴随着焦虑，因为运气就像公平一样不可靠。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新消遣总会取代旧消遣，希望能带来更多的希望，野心会孕育更大的野心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当享受公众荣耀开始变得痛苦时，我们转而开始为他人的荣耀奋斗；不再担任候选人，我们就开始为别人拉票；决定逃离担任检察官的烦恼时，我们又开始承担法官的责任；终于可以不当法官了，我们又成了法院院长；终日靠管理别人的财产而活，有一天我们老了，又要开始把时间花费在打理自己的财产上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;是的，无论富裕还是贫苦，人总会有不安的理由。生活就这样，被一个又一个渴望推着向前走。我们永远在渴望悠闲，却又从未真正享受过悠闲。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些疾病只有在病人不知情的前提下才能治愈，一旦真相大白，病人往往不治而亡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为了让某个年代以自己的名字命名，他们牺牲了所有的岁月。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们从不考虑终将面对的死亡，从不放弃好高骛远的希望，甚至会提前将死后的事情都安排好——宏大的坟墓、公众纪念仪式、葬礼上的表演、下葬时的奢侈。但事实上，这些人的葬礼只需火把和蜡烛就够了[42]，因为他们的生命才是最短暂的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;论心灵之安宁&#34;&gt;论心灵之安宁&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;它们像神出鬼没的敌人，说不准何时就会突然冒出来袭击你，让你既无法像面对战争一样时刻准备着，又不能像身处和平年代一样彻底放松。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我对自己说：“如果没有等值的回报，谁也别想夺走我的时间，哪怕一天也不行。我要专注于修身养性，远离外界的干扰，不需要外界的认可。我只想享受这种不被任何公共或个人事务所侵扰的宁静。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="点评">点评</h2>
<p>为了让某个年代以自己的名字命名，他们牺牲了所有的岁月。</p>
<h2 id="导读">导读</h2>
<ul>
<li>
<p>《论生命之短暂》（De Brevitate Vitae）想要告诉我们，与其抱怨生命太短，不如学会珍惜时间。因为只有庸人们才会放纵欲望，才会为了财富、权力等外在善一生处心竭虑。他们浪费时间且不自知，到头来却还要抱怨时间不够。相反，只有热爱智慧的人，“只有潜心钻研哲学的人，才是真正悠闲自在、真正活过的人”。</p>
</li>
<li>
<p>心灵之困扰主要源于我们对外在事物的执着。</p>
</li>
<li>
<p>那些看似不幸的事情，其实对我们而言都是有益的。或者说，现实所发生的一切都是最好的安排，通过智慧，我们都能从中获益。直到今天，我们对这种想法似乎也不陌生。但我们朴素的想法，其实和斯多亚派的观点还是有些背景性与框架性的差异。我也曾撰文区分过斯多亚派的观点与自欺欺人的阿Q精神等类似现象有何不同，这里就不再赘述了。</p>
</li>
<li>
<p>闲暇不以快乐为目的，也不是为了满足生活必需，而是为了高尚和自由，它是因其自身故的。</p>
</li>
<li>
<p>投入到公民生活之中与享受闲暇之间，并不存在实质性的冲突。</p>
</li>
<li>
<p>幸福的充分必要条件是理性或美德。换言之，只要我们拥有了理性或美德，我们就获取了幸福。同时，也只有理性或美德是获取幸福的手段，而所有的财富、权力等外在善都无助于我们实现这个目的。</p>
</li>
</ul>
<h2 id="论生命之短暂">论生命之短暂</h2>
<ul>
<li>
<p>生命并非短暂，而是我们把它变得短暂；自然并非吝啬，而是我们浪费了太多。</p>
</li>
<li>
<p>生命也同理，管理得当，就会得到充分的延长。</p>
</li>
<li>
<p>我们真正活过的只是一小部分生命而已。</p>
</li>
<li>
<p>一些人在寻求法律援助，另一些人在提供相应的帮助；一些人在接受审判，另一些人在为他们辩护，还有一些人要负责审判。没有人关注自身的需求，大家都在为别人的利益而活。看看那些所谓的名人，你会发现他们有一个明显的标志，那就是，甲的生命是为乙而存在的，乙的时间又奉献给了丙——没有人在意自己。</p>
</li>
<li>
<p>你没有理由要求任何人的关注，因为你看起来并不是缺少他人的陪伴，而是无法忍受自己的陪伴。</p>
</li>
<li>
<p>我特别想抓住一个老年人对他说：“现在你已经走到了生命的尽头。你活了快一百年了，没准更多。那么，不妨来盘点一下你的人生吧。想想你有多少时间给了放债人，又有多少给了情妇、资助人或是门客。再想想那些因为和妻子吵架、惩罚奴隶以及为了所谓的社会责任不得不四处奔波而浪费的时间。当然，还有那些因为不注意身体而被疾病占用的时间和那些被庸庸碌碌浪费的时间。把这些都算上，你会发现，真正用于生活的时间少得可怜。再想想你何时有过明确的目标，何时按计划安排了自己的生活，何时随着自己的心意活过，何时可以不掩饰真性情，何时思想不受干扰，这漫长的一生又真正做出了什么成就。想想多少人剥削过你的时间，而你却对此一无所知？那些无用的忧愁、无知的喜悦、贪婪的欲望和世俗的引诱——这些浪费了你多少生命？你真正留给自己的时间少之又少。意识到这一点，你就会明白，寿命虽长，人却早就死了。”</p>
</li>
<li>
<p>你意识不到生命的脆弱，注意不到时间的流逝，于是你在时间永远充裕的错觉中将其白白浪费——而事实是，你为某个人或某件事浪费生命的那一天，很可能就是生命的最后一天。</p>
</li>
<li>
<p>忘记人必有一死，把合理的计划推迟到五六十岁，这是多么愚蠢啊！你以为那个时候就可以真正生活了，却忘了很少有人能活到那个时候！</p>
</li>
<li>
<p>被奉若神明的奥古斯都大帝[5]，无疑是命运的宠儿。有生之年，他从未停止过对闲暇的渴望，试图从繁重的公务中寻找片刻安宁。他不管说什么，最后都会回到同一个主题，那就是对悠闲生活的期待。总有一天他要为自己而活——他喜欢用这一虚假却甜蜜的幻想自我宽慰，这样就能心甘情愿地劳碌。</p>
</li>
<li>
<p>恶习总能吞噬时间。</p>
</li>
<li>
<p>最令人不齿的还要属终日沉湎于酒色的人——这无疑是对时间最糟糕的浪费。沉浸在对荣耀的幻想中虽然虚妄，但多少还有值得尊敬的成分。那些热衷发动战争、有着偏执仇恨的狂热分子固然有罪，但至少还有那么点男子气，而只知道贪食好色的人却失败得毫无尊严。</p>
</li>
<li>
<p>对沉迷于某项活动的人来说，生活最不重要，虽然没有什么比生活更难学。无论在哪个领域，人们都可以找到诸多老师。</p>
</li>
<li>
<p>很多人临终时还认为自己没有学到生命的真谛——智者尚且如此，更不用提芸芸众生了。</p>
</li>
<li>
<p>如果一个人能确保不浪费时间，那他毫无疑问是伟大、超越人类局限的智者。</p>
</li>
<li>
<p>一个人刚得到渴望已久的官职，又开始向往无官一身轻的生活，不停嚷嚷：“日子何时才能到头？”一个人认为组织比赛很了不起，可一旦目标达成，他又开始抱怨：“何时能摆脱这些工作！”演讲者在集会上被人山人海地包围，连声音到达不了的地方都挤满了民众，但他却说：“我什么时候才能有假期？”每个人都带着对未来生活的渴望和对当下生活的厌倦奔波忙碌着。但智者会将时间花费在自身需求上，将每天都过成最后一天。</p>
</li>
<li>
<p>你不能仅凭一个人的白发和皱纹就认为他活了很久：他或许长寿，但并不一定能算活得久。这就好比长途旅行的人刚离开港口就遭遇了暴风雨，虽然被狂风吹得团团转，好像奔波了很久，但其实只不过是在原地打转罢了。</p>
</li>
<li>
<p>人们经常占用他人的时间，但让我震惊的是，被占用时间的人也总能欣然接受。双方可以在占用时间的理由上达成共识，却很少关注时间本身，仿佛付出时间不算付出一样。明明是在挥霍世间最珍贵的商品，却因为看不见摸不着、难以评估，人们就觉得时间廉价甚至根本没有任何价值。</p>
</li>
<li>
<p>假设人们能像计算过往的时间一样，统计出人生余下的寿命，那些年数不多的人就会惊慌、警觉，必将小心翼翼地使用时间。遗憾的是，即便微小，人们也更愿意管理确切的数目，却忽略了时间这样不知何时就会戛然而止的东西。</p>
</li>
<li>
<p>他们经常会对所爱之人说，愿意为他们留出自己的时间，也的确在一无所知的情况下付出了时间。</p>
</li>
<li>
<p>时光不能倒流，风华不能再现。生命一旦开始，就会按照固有的轨迹走下去，不会为任何人变化或倒流。</p>
</li>
<li>
<p>世上最愚蠢的行为莫过于吹嘘自己的远见卓识。那些自认为目光长远的人，总在为改善生活拼命工作。他们一直在试图管理自己的生活，目光总定位在遥远的未来。</p>
</li>
<li>
<p>拖延才是对生命最大的浪费。</p>
</li>
<li>
<p>未来的承诺剥夺了享受当下的权利。</p>
</li>
<li>
<p>期待是生活最大的阻力，因为期待依赖于未来，却丢掉了当下。</p>
</li>
<li>
<p>试图安排那些本应由命运决定的东西，就放弃了本应由自己决定的东西。</p>
</li>
<li>
<p>可怜的凡人啊，生命中最美好的一天，却总被最先丢弃。</p>
</li>
<li>
<p>诗人想问的是：“为什么你还在徘徊？还在无所事事？要是不将这一天紧紧抓住，它可就要溜走了。”</p>
</li>
<li>
<p>你必须能让使用时间的速度和时间流逝的速度相匹配。就好像面对随时会枯竭的小溪，你一定要趁机多喝点水。</p>
</li>
<li>
<p>恶习不能只是戳戳，必须被彻底粉碎。</p>
</li>
<li>
<p>人生可以分为三个阶段：过去、现在和未来。现在转瞬即逝，未来飘忽不定，只有过去业已定型。命运无力改变过去，任何人都不能，但这也正是琐事缠身者丢弃的：他们总是没有时间回头看。即便想要回顾过往，重温不堪的往事也不令人愉快，因此，他们不愿意回想被虚度的时光。</p>
</li>
<li>
<p>不敢回忆过去的人，往往都是贪得无厌、心高气傲、小人得志、背信弃义、巧取豪夺、挥霍无度之辈。</p>
</li>
<li>
<p>过去才是生命中最神圣、最独立的光阴。唯有过去能超越人类一切风险，不受命运的摆布，不被欲望、恐惧或疾病扰乱。过去是屹立不倒、永恒存在的财产，任何事都不能将其打扰或夺走。面对现在，我们只能一点点地使用、一天天地过日子，但我们却能随时召唤过去，随意调用它、审视它。可惜，琐事缠身的人没有时间这么做。</p>
</li>
<li>
<p>如果容器没有底部，往里面倒再多液体也无济于事；如果生命没有依托，拥有再多时间也毫无用处，它还是会从思维的裂缝中流走。当下的时间总是短暂，短暂到让人意识不到。当下是流动的、奔流不息的，只在到来前停息过，此后便再无耽搁，就像天空和星辰，斗转星移，永不停歇。</p>
</li>
<li>
<p>风烛残年的老人为多活几年虔诚祷告。他们假装还年轻，并用这种假象来安慰自己，就好像骗过了自己就能欺骗命运一样。可是，当疾病逼得他们走投无路，必须直面死亡时，他们又那样恐惧，仿佛这不是生命的必经阶段，他们是被死神强行带走的。他们说自己是傻瓜，从未真正生活过，如果有机会康复，一定会悠闲地度过余生。接着，他们就会感慨，之前的辛苦有多么徒劳。费尽心力得来的东西，他们却根本没机会享用。</p>
</li>
<li>
<p>他们不浪费、不挥霍时间，不受命运的摆布，不在漫不经心中虚度，不因无故施舍而浪费，更不会白白丢弃时间。他们合理安排了时间，即便寿命不长，留给自己的时间也足够多。不管死神何时降临，智者都能迈着坚定的步伐坦然迎接。</p>
</li>
<li>
<p>或许你要问，文中反复提到的琐事缠身者到底指哪些人？比如那些被看门狗逐出法庭的人；那些要么被支持者体面地压垮，要么被反对者轻蔑地击垮的人；那些因为公务不得不离开家庭，在他人门前奔波的人；那些为了不光彩的利益围着执政官转悠，却最终身败名裂的人。但我想说的还不仅仅是这些人。很多人甚至在休息的时候也要被琐事打扰：他们可能住着乡间别墅，一个人躺在沙发上享受安宁，却不知如何陪伴自己。这样的生活不是悠闲，只能算无所事事。想想那个貌似休息，却焦虑地摆弄着柯林斯铜器的人。他将大量时间浪费在生锈的铁片上，只因它的价格可能会被某个狂热的收藏家炒得离谱；那个坐在角斗场（说来惭愧，我们竟有这样恶俗的爱好，这甚至都不是罗马的发明），聚精会神地盯着角斗士的观众；那个花时间将牲畜按年龄和颜色分类的人；那个为竞技场上的勇士提供赞助的人——你觉得他们悠闲吗？还有那个在理发上浪费很多时间的人，头发要一丝不乱，一会儿觉得这里不够整齐，一会儿又要修剪两边稀疏的头发，好让它们恰好遮住额头，虽然明知道再怎么打理，剪掉的头发很快还会长出来。理发师一旦稍有不慎，他就大为光火，仿佛修剪的不是头发，而是整个人！要是哪根头发没被剪好，或是打理得不够仔细，甚至只是有几根没被束入发圈，他就会异常愤怒。你觉得这样的人悠闲吗？这些人宁愿国家一团糟，也不能让头发一团糟；宁愿国家不安全，也不能让发型不体面；宁愿不高尚，也不能不整洁！你觉得这种在梳妆打扮上浪费时间的人悠闲吗？还有一群人，他们每天忙于作曲，花大量时间聆听和研究音乐，把原本简单悦耳的旋律，故意扭曲成不自然的调式。他们成天在脑海中想象各种旋律，手指也要忍不住跟着打节拍，即便正在出席严肃甚至是悲伤的场合，这些人也总会忍不住哼出声来，这不是悠闲，而是懒散地工作。还有那些宴会！天哪，我真是无法将宴席和悠闲联系在一起！他们忧心忡忡地摆放餐具，为侍者精心打理服装，焦虑地指挥着厨师准备菜肴，再看看那些一脸温顺却又紧张兮兮地跑来跑去的奴隶。他们把家禽熟练地切成合适的分量，小心翼翼地为喝醉的宾客拭去口水。如此这般努力，只为博一个优雅、有品位的好名声。不铺张浪费一下，他们都不知道如何正常吃饭。</p>
</li>
<li>
<p>我也不会称这类人悠闲：他们坐着轿子，准时在一个又一个场合出现，仿佛哪个都离不开自己。他们需要被提醒什么时候沐浴、什么时候游泳、什么时候用餐；他们几乎放弃了独立思考，变得麻木颓废，连自己是否饿了都不确定。我就听说过这么一个任性的人——如果“任性”能被用来形容这种连最起码的生活常识都不愿意学习的人——当他被从浴室抬出来，放到轿子里时，他竟然问：“我现在坐好了吗？”这种连自己是否坐好了都不知道的人，你觉得他会知道自己是否活着、能否看见、能否算作悠闲吗？我甚至都不确定应该为他确实不知道还是假装不知道而同情他。</p>
</li>
<li>
<p>如果说那些喜剧演员的表演有什么不足，那就是他们表现的罪恶太少了，远不能反映这个时代的真实状况。</p>
</li>
<li>
<p>有些人已经颓废到需要别人来告知自己是否坐好。显然，用“悠闲”来形容这种人实属不妥，或许“有病”甚至“死了”是更为精准的表述。真正悠闲的人，能清楚地意识到自己的悠闲；而这个人却半死不活，连自己身体的位置都不清楚，他又怎么可能掌控时间呢？</p>
</li>
<li>
<p>以前只有希腊人才关心诸如尤利西斯有多少船夫，先有《伊利亚特》还是先有《奥德赛》以及它们是否是出自同一位作者这类傻问题。这些问题不能增加个人学识，即便研究成果被发表，大家也只会觉得你是书呆子，而非学者。遗憾的是，现在罗马人也开始沉迷于追求这种无用的知识了。</p>
</li>
<li>
<p>只有潜心钻研哲学的人，才是真正悠闲自在、真正活过的人，因为他们不仅密切关注自己的人生，还能从其他时代吸取生活的经验，让历史为他们的生活增添色彩。</p>
</li>
<li>
<p>人们常说，父母是命运分配的，我们无权选择，但我们却有权选择成为任何人的子女。</p>
</li>
<li>
<p>没有什么能经得住时间的冲刷和打磨，除了被哲学赋予神圣光芒的伟大作品。时间无法摧毁、破坏它们，相反，它们只会随着时间的推移越来越被重视。毕竟，人们容易嫉妒近在咫尺的事物，却往往能够自由欣赏历史长河中的作品。</p>
</li>
<li>
<p>而那些忘记过去、浪费当下、恐惧未来的人，他们的生命却异常短暂和苦恼。只有到了生命尽头，那些可怜人才会意识到，人生漫漫，他们虽忙忙碌碌却毫无作为。他们甚至会渴望死神的到来，但这并不能说明他们已经活得足够长了。因为愚昧，他们陷入烦躁的不安全感，转而开始期盼那些让他们恐惧的事：因为害怕死亡，所以宁可它早一点到来。</p>
</li>
<li>
<p>一旦注意力没了落脚点，他们就会坐立不安、无所事事，完全不知道如何面对这种闲适，如何打发时光。</p>
</li>
<li>
<p>他们期待夜晚，并因此丢掉了白天；他们恐惧黎明，并因此丢掉了夜晚。</p>
</li>
<li>
<p>当年傲慢的波斯帝国国王[35]在广阔的草原上排兵布阵时，看着眼前数以万计的宏大军队，竟然忍不住流下了眼泪——他知道百年之后这些都将不复存在。讽刺的是，正是这个流泪的男人为军队带来了厄运。没过多久，这些兵马就因征战和逃亡丧命于海洋、陆地，而他当年竟然还为百年之后这些人的命运担忧。</p>
</li>
<li>
<p>为什么他们的快乐总夹杂着不安？因为这些快乐只是源于一些毫无理由的刺激，没有牢固的根基。</p>
</li>
<li>
<p>所有的好运都伴随着焦虑，因为运气就像公平一样不可靠。</p>
</li>
<li>
<p>新消遣总会取代旧消遣，希望能带来更多的希望，野心会孕育更大的野心。</p>
</li>
<li>
<p>当享受公众荣耀开始变得痛苦时，我们转而开始为他人的荣耀奋斗；不再担任候选人，我们就开始为别人拉票；决定逃离担任检察官的烦恼时，我们又开始承担法官的责任；终于可以不当法官了，我们又成了法院院长；终日靠管理别人的财产而活，有一天我们老了，又要开始把时间花费在打理自己的财产上。</p>
</li>
<li>
<p>是的，无论富裕还是贫苦，人总会有不安的理由。生活就这样，被一个又一个渴望推着向前走。我们永远在渴望悠闲，却又从未真正享受过悠闲。</p>
</li>
<li>
<p>有些疾病只有在病人不知情的前提下才能治愈，一旦真相大白，病人往往不治而亡。</p>
</li>
<li>
<p>为了让某个年代以自己的名字命名，他们牺牲了所有的岁月。</p>
</li>
<li>
<p>他们从不考虑终将面对的死亡，从不放弃好高骛远的希望，甚至会提前将死后的事情都安排好——宏大的坟墓、公众纪念仪式、葬礼上的表演、下葬时的奢侈。但事实上，这些人的葬礼只需火把和蜡烛就够了[42]，因为他们的生命才是最短暂的。</p>
</li>
</ul>
<h2 id="论心灵之安宁">论心灵之安宁</h2>
<ul>
<li>
<p>它们像神出鬼没的敌人，说不准何时就会突然冒出来袭击你，让你既无法像面对战争一样时刻准备着，又不能像身处和平年代一样彻底放松。</p>
</li>
<li>
<p>我对自己说：“如果没有等值的回报，谁也别想夺走我的时间，哪怕一天也不行。我要专注于修身养性，远离外界的干扰，不需要外界的认可。我只想享受这种不被任何公共或个人事务所侵扰的宁静。”</p>
</li>
<li>
<p>我对自己说：“为什么非要写出流传后世的佳作呢？为什么非要让后代对你歌功颂德呢？人必有一死，无言的葬礼听起来更省心。如果非要打发时间，那还不如用质朴的文风，去写对自己有用而非为了发表的文字。做到只为眼下学习，可以避免消耗很多不必要的精力。”</p>
</li>
<li>
<p>我们过于近距离观察自我品质，偏袒总会影响我们的判断。</p>
</li>
<li>
<p>我猜想，很多人本有机会获得真正的智慧，但前提是他们没有自以为足够睿智，或是故意掩饰自己的某些性格，又无视别人的一些品格。毕竟，我们的悲哀，与其说来自于他人的奉承，还不如说是来自自我的奉承。谁敢说出关于自己的真相呢？即便被一群拍马屁的人包围，我们最大的谄媚者还是自己。</p>
</li>
<li>
<p>用一个现实的比喻来形容就是，困扰我的不是风暴，而是晕船。不管这到底是什么病，都恳请你将其连根拔除。请帮帮我这个已经看到陆地，却还在海上挣扎的人吧。</p>
</li>
<li>
<p>事实上，病症可以有无数种表现方式，但最终的结果只有一个——对自己不满。</p>
</li>
<li>
<p>当人们不敢或是未能得到所渴望的，他们能够抓住的就是渴望本身了：他们活在不平衡和反复无常中，这是处于悬而未决状态中不可避免的结果。</p>
</li>
<li>
<p>毫无建树的安逸常常会滋生恶意。</p>
</li>
<li>
<p>人性天生好动、喜欢参与活动，所以人们喜欢刺激、喜欢娱乐——越是自身层次不高的人，往往越热衷忙忙碌碌的生活。这就好比身体上的一些伤口喜欢被碰疼、被触摸，令人难受的瘙痒也希望被抓挠一样</p>
</li>
<li>
<p>正如卢克莱修[4]所说：“每个人都试图逃离自己。”</p>
</li>
<li>
<p>我们必须明白，困境来源于自身，而不是周围的环境。因为自身软弱，我们才没有办法长久忍受任何事，无论是劳苦、欢乐还是我们自己。</p>
</li>
<li>
<p>当一个人打算成为对公民和同胞有用的人时，如果能全身心地服务大众和公民，他就可以在造福他人的同时丰富自己。</p>
</li>
<li>
<p>人类又往往太过于野心勃勃，以至于很多人不惜颠倒黑白。</p>
</li>
<li>
<p>牢笼可以困住狮子或是其他动物，却无法困住人类。</p>
</li>
<li>
<p>面对时间，总有人懂得节俭地使用，另一些人则只会浪费；有些人可以将时间像记账一样仔细规划，另一些人则没有任何结余——这无疑是最可耻的。通常，一个老人除了年龄，就没有其他什么可以证明他的长寿了。</p>
</li>
<li>
<p>我认为追求美德应该做到：如果命运不幸剥夺了一个人自由行动的权利，他不应该立即丢盔弃甲，转身逃到隐蔽的地方躲起来（就好像这个世界上还有命运找不到的地方一样）；相反，他应该更谨慎地履行职责，更仔细地选择为国家服务的机会。假如他当不了兵，那就选择谋求公职；假如他不得不以平民身份生活，那就选择当一名辩护人；假如命运剥夺了他发声的机会，那就选择用无声的支持去帮助同胞；假如他出现在广场上会遭遇危险，那就选择在私人住宅里、在演出中、在宴会上，做好优秀的伴侣、忠诚的朋友和温和的赴宴者；假如他丧失了作为公民的权利，那就选择行使做人的权利。</p>
</li>
<li>
<p>不管命运有多少约束，你一定都可以在其他地方找到更宽广的空间。</p>
</li>
<li>
<p>只有一个人在面对四面八方汹涌而来的威胁、武器和锁链叮叮当当不绝于耳的声响，勇气依然不减分毫时，他才算是真正的男子汉。</p>
</li>
<li>
<p>世间最恐怖的事，莫过于除了活过的年岁，什么都没留下。</p>
</li>
<li>
<p>我们经常高估自己的能力，因此正确的自我评价至关重要。有些人因为过于相信自己的口才而受到伤害，有些人对财富要求过高却无法实现，还有人在繁重的劳动下过度透支了自己虚弱的身体。有些人过于羞涩，无法适应需要抛头露面的政治生活；有些人过于鲁莽，无法适应严谨的法庭工作；有些人无法控制自己的愤怒，稍有不悦就出言不逊；有些人无法控制自己的才智，总会说出一些机智却会给他们带来危险的俏皮话。</p>
</li>
<li>
<p>热情而又鲁莽的天性，往往会因为直言不讳给自己带来麻烦。</p>
</li>
<li>
<p>在那些人看来，桌上的菜品多就能证明自己的慷慨，表明对别人的重视。一旦少了观众和见证者，这些私下的大快朵颐就毫无乐趣。</p>
</li>
<li>
<p>通常，强迫不利于天性的发挥。一旦违背天性，人很难取得成功。</p>
</li>
<li>
<p>如果一个人能够心甘情愿地替你保守所有的秘密，你也不害怕同他分享自己内心深处隐藏的想法，这会是多么幸运啊。</p>
</li>
<li>
<p>对加图来说，为了让自己得到认可，好人与坏人都有存在的必要——他需要好人认可他的成就，需要坏人彰显他的力量</p>
</li>
<li>
<p>我们要谨记，没有钱要比有了钱又失去钱的痛苦小很多；财富越少，它能引发的痛苦就越小。千万不要以为富人更容易忍受痛苦：同样的伤口，放在高大或矮小的身躯上，疼痛感是一样的。</p>
</li>
<li>
<p>无论是从谢顶的人还是头发茂密的人头上拔头发，他们一样都觉得疼。富人和穷人在痛苦的感知度上是一样的：他们都看重钱，任何对财富的剥夺都会让他们痛苦。</p>
</li>
<li>
<p>但在我看来，只有当一个人不会再失去的时候，这种状态才是最幸福的。</p>
</li>
<li>
<p>天上的众神虽然不占据财产，却可以奉献出自己的一切。</p>
</li>
<li>
<p>当第欧根尼得知自己唯一的奴隶逃跑了之后，他觉得根本不值得花费精力把他追回来。“这真让人丢脸，”他说，“如果曼斯离开了第欧根尼可以好好活下去，而第欧根尼离开了曼斯却没法活。”</p>
</li>
<li>
<p>一个人如果能做到不欠任何人的，他将会多么开心！这样，他就只有自己可以拒绝，而这无疑是最容易的。</p>
</li>
<li>
<p>最理想的财产状况就是，既不低于贫困线，又不超它太多。</p>
</li>
<li>
<p>用食物去消除饥饿，用水去驱散饥渴，用性生活去满足需要；让我们学着去依赖自己的四肢，穿衣风格和生活方式不要盲目追赶潮流，而应沿袭先辈们的优良传统。让我们学着去提高自我的约束力，抑制奢华之心，不要过于野心膨胀，不要动辄脾气暴躁；让我们学着不去歧视贫穷，而是学会节俭，不在意别人的眼光，根据实际尽可能选择高性价比的方式来满足自然的需求；我们要遏制对期望的过分放纵以及对未来的过分痴迷；要学着依靠自身而不是命运的眷顾来获取财富。</p>
</li>
<li>
<p>当一个人思想顽固，无法用温和的办法让他们做出改变时，或许以毒攻毒的办法，比如少许的贫穷、屈辱和灾难，更能有效地帮助他们。</p>
</li>
<li>
<p>我们应该学会沿着跑道的内圈奔跑，这一点不仅适用于赛跑和竞技，更适用于人生的旅途。</p>
</li>
<li>
<p>如果坐拥无数本藏书和数不清的图书馆，但终其一生却连阅读书名的时间都没有，这又有什么意义呢？</p>
</li>
<li>
<p>将时间专注于少数作者，远比泛泛地去了解很多更有意义。</p>
</li>
<li>
<p>其实这根本谈不上高雅品位和奉献精神，最多只能算是学究们的自我陶醉——事实上，可能和学术都不沾边，毕竟很多人收藏图书都只是为了炫耀，而非研究。</p>
</li>
<li>
<p>你还会发现很多缺少基本的文化知识的人也买书，但显然他们不是为了学习，只是想用书籍来装饰客厅而已。我们应该根据真正的需要而非装点门面去买书。“但这种在书籍上的支出，”你会说，“和将金钱浪费在柯林斯青铜器或是装饰画上相比，还是体面了很多。”答案是否定的。任何浪费行为都应该受到谴责。想想那个热衷收集香橼木和象牙制成的书柜和大量不知名或是三流作者的书籍的人。他坐在成千上万的藏书中昏昏欲睡，能引发兴趣的最多只是书籍的外观和标签。这样的人难道不应该被批评吗？你会发现，越是懒惰的人，往往越会拥有一大堆关于演讲和历史的书籍，装书的箱子都快堆到天花板了。当下，精美的书房竟然变得和冷热浴室一样，成了装修房子时不可或缺的配置。当然，如果犯错是出于对学习的热爱，那还情有可原，可惜很多人收集伟大作家的著作就像收集肖像画，往往只是为了装饰一面墙。</p>
</li>
<li>
<p>任何情况下，只要你下决心将烦恼抛之脑后，让它们不再来烦扰你，你就能找到愉悦、轻松和乐观。在这一点上，我们真的应该感谢自然。知道我们的人生必然要经历痛苦，自然赋予了我们面对灾难依然可以收获慰藉的能力，这样我们就可以习惯哪怕是最坏的情况。</p>
</li>
<li>
<p>在命运面前我们都是囚犯。</p>
</li>
<li>
<p>生命就是一次服役。</p>
</li>
<li>
<p>无论多苦的环境，健全的心灵也一定会在其中找到慰藉。只要规划合理，再小的面积也能被拆解出多种用途。</p>
</li>
<li>
<p>我们要学会收敛自己的欲望，尽可能去关注那些触手可及的目标，因为欲望很难控制。放弃不可能或很难得到的东西，多去追求容易得到或特别希望得到的，但与此同时要记得，世间的一切，无论看起来多么重要，其实都是微不足道和毫无意义的。不要羡慕那些位高权重的人：站得越高，可能摔得越惨。</p>
</li>
<li>
<p>那些被不公平的命运置于危险境地的人，却往往更安全。因为他们学会了低调、谦逊，知道将财务保持在微不足道的安全线上。</p>
</li>
<li>
<p>他们也知道，权力是他们人生中最大的负担，而他们又被迫成为别人的负担，与其说被捧上云端，还不如说是被钉在了那个位置。</p>
</li>
<li>
<p>智者无须紧张慎重地行走。他们有足够的自信去同命运抗争，不向命运低头。他们从不惧怕命运。在他们看来，不仅是物品、财产、地位，连那些更为珍贵的东西，比如眼睛和双手，甚至他自己，都是命运租借给他的，总有一天需要还回去。这样想就没有什么需要抱怨的了。当然他们也并不因此看轻自己。虽然这些都不是他们的私有物品，但就像虔诚的圣人守护托付给他的财产一样，他们会认真小心地关注自己的行为举止。</p>
</li>
<li>
<p>很多时候，造成死亡的原因正是对死亡的恐惧。</p>
</li>
<li>
<p>恐惧死亡的人很难去做一个活人值得做的事。但如果一开始就能意识到，死亡是从出生起就必将要面对的事情，人就可以在这一前提下生活，确保自己有足够的勇气去面对任何事情而不感到意外。预见可能会发生的事情并假设这种事情即将发生，可以降低挫折对自己的冲击。对于有备而来的人，挫折不会造成重创，但对于那些总是幻想一切都顺利的人来说，挫折无疑是沉重的打击。</p>
</li>
<li>
<p>疾病、囚禁、灾难、大火，这些都在意料之中——我知道自己所处的乱世。</p>
</li>
<li>
<p>“发生在一个人身上的事，有可能发生在所有人身上。”只要你骨子里接受了这一点，将发生在他人身上的灾难（每天都有很多灾难上演）视为自己人生的预警，那么未来，当同样的灾难攻击你时，你就会有所防御。</p>
</li>
<li>
<p>你说“我没想到会发生这样的事”“你能相信会是这样吗”，为什么不能呢？哪个富人不会被贫穷、饥饿和乞丐盯上？哪个官员的官服、统治者的权杖、贵族的鞋带上，没有沾染过污点和耻辱，留下过不检点和让人不齿的痕迹？哪个王位不会面临毁灭、垮台、暴君和刽子手？</p>
</li>
<li>
<p>上一秒还端坐在宝座上，下一秒就可能要向别人臣服。</p>
</li>
<li>
<p>面对这些震惊世人的事件，除非你坚信可能发生的事情终会发生，否则这些灾难无疑会显得更强大，强大到让初次接触的人彻底崩溃。</p>
</li>
<li>
<p>不要让我们的付出毫无意义、劳而无功，也不要追求那些本不值得努力的目标，因为一旦没有成功，或是认为成功也不值得高兴，痛苦就会随之而来。不要像大多数人那样，沉浸在忙碌感中。</p>
</li>
<li>
<p>他们回到家中，不知道自己在为什么奔劳，接着开始发牢骚，说不知道为什么要出门，也不知道自己都去了哪里——可到了第二天，他们又开始了同样的循环。</p>
</li>
<li>
<p>开展活动要有明确的目标，这样才可能有所收获。勤奋不会让人觉得疲惫，虚假的表象才会让人发疯。即便真正的疯子，也需要希望来刺激自己，他们会为一些东西的表象而兴奋，因为被迷惑的心无法察觉到事物毫无价值的本质。</p>
</li>
<li>
<p>很多消息如果不被听到或讨论，反而更为安全。</p>
</li>
<li>
<p>一个人关注的事情一旦太多，就会把自己置于命运的掌控下。对待命运最安全的做法，就是尽量不去招惹她。把她放在心上，但不要过于相信她。有人会说，“我要出海了，如果没有什么事发生”“我要当执政官，除非有什么事阻止我”“我会生意兴隆，除非碰到什么阻碍”。这也是为什么我们会说，通常智者就不太需要面对意外。这并不是说他们不会遭遇其他人所遭遇的风险，而是说他们会正确地评估风险；也不是说他们凡事都会如愿以偿，而是说他们能预测到可能的结果——其中最重要的，就是他们明白自己的计划必然会受到阻力。少了一定会成功的期待，人就更容易应付失败带来的失落感。</p>
</li>
<li>
<p>我们还应学会变通，不将希望过多寄托在原计划上，而是根据实际情况灵活调整目标，避免在目标或现实状况发生改变时心生恐慌。</p>
</li>
<li>
<p>我们应当自我信任、自我愉悦、自我欣赏；尽可能从他人的事务中抽身，将注意力放在自己身上；不过于担心失去，即便是不幸，也能学着用友善的态度去面对。</p>
</li>
<li>
<p>只要你高兴，我身体里这半品脱鲜血由你处理。至于埋葬与否，你要是觉得我会在乎是在地上还是地下腐烂这件事，那也未免太愚蠢了。</p>
</li>
<li>
<p>法拉里斯[21]对他说：“为了让你不再被自己愚蠢的希望迷惑，我已经下令将你带出去处决了。”对此，加努斯的回答是：“谢谢你，我高贵的国王。”</p>
</li>
<li>
<p>当拉着一队死刑犯的百夫长下令将加努斯一同带走时，他正在下跳棋。他数了数棋子，对同伴说：“等我死后，你可不能撒谎说这局是你赢了。”然后他向百夫长点点头，说：“你得做证，我多赢了一颗棋子。”</p>
</li>
<li>
<p>“为什么要难过呢？你们整天都想知道灵魂是否不朽，而我很快就会知道答案了。”</p>
</li>
<li>
<p>老师问：“加努斯，你现在在想什么？又是怎样的心情？”加努斯回答说：“我打算记录一下，在那短暂的一瞬间，灵魂是否会意识到自己正在离开躯体。”他还承诺，一旦自己有什么发现，就会依次拜访他的朋友，分享灵魂的秘密。</p>
</li>
<li>
<p>高贵的灵魂啊，虽然不幸沦为盖乌斯的受害者，但我们会确保你不朽。</p>
</li>
<li>
<p>试图消灭悲伤的来源是毫无意义的，因为有时我们就是会对整个人类产生深深的厌恶。</p>
</li>
<li>
<p>我们必须要训练自己，将这些普遍存在的恶习视为不值得我们去恨、荒谬可笑的事情。</p>
</li>
<li>
<p>我们不要将凡事看得太重，用一颗包容之心去忍受：比起为生活哀叹，对其嘲笑更符合文明的发展。要记住，能够对生活报以一笑的人，往往要比那些用悲观的眼光打量它的人更优秀，因为前者依然认为生活存在希望，而后者之所以悲伤，是因为他们压根不觉得有办法改变现状。</p>
</li>
<li>
<p>无论从哪个角度看，不吝惜自己的微笑，都要比放纵自己哭泣，更能体现一个人杰出的心灵。</p>
</li>
<li>
<p>人类的一切活动都和最初一样，他们的生命并不比出生时更高尚或是更沉重。他们出生时一无所有，离开时也同样一无所有。</p>
</li>
<li>
<p>自己碰到麻烦时也一样，最得体的举动是随着自己的心意，而不是为了应付世俗传统去悲伤：许多人哭泣只是为了被别人看到，如果没有人注意，他们的眼中就不再有泪水。在这些人看来，别人都在哭，自己不哭就是不对的。这种随波逐流的坏习惯早已根深蒂固，导致很多人连悲伤这样最基本的情感都要模仿他人。</p>
</li>
<li>
<p>要么因坚强赢得尊敬，要么因懦弱被人遗忘。</p>
</li>
<li>
<p>人越勇敢，就越幸福！勇敢可以让你远离所有的不幸、嫉妒和疾病。现在你已经走出命运的监狱——这并不是说众神认为你配得上厄运，而是命运已经对你无能为力，掌控你已经毫无价值了。</p>
</li>
<li>
<p>我不会为快乐的人哭泣，也不会为落泪的人哭泣：前者亲手拭去了我的泪水，后者却用自己的泪水印证了他不配得到任何人的眼泪。</p>
</li>
<li>
<p>太在意自己的公众形象，不愿意向任何人公开真实的自己，过着和多数人一样的虚伪生活，仿佛生命只是一场表演。如果一个人总要谨言慎行，担心面具滑落时暴露真面目，那他无疑会痛苦不堪。如果我们只希望自己好的一面被别人看到，那就不可能做到无忧无虑。</p>
</li>
<li>
<p>熟悉往往会带来轻视，完全暴露于众的生活常常会面临被嘲笑的风险。</p>
</li>
<li>
<p>因为单纯而被鄙视，总要好过忍受虚伪的痛苦。</p>
</li>
<li>
<p>我们要学习回归自我。</p>
</li>
<li>
<p>独处和从众这两件事又需要适当融合、灵活变通：独处太久会让我们渴望他人，从众太久又会让我们怀念独处。总之，两者互为解药：独处能治愈我们对人群的厌恶，人群则能消减我们独处的孤单。</p>
</li>
<li>
<p>我们的大脑必须得到放松：休整后它们会更精神、更活跃。就好比一直让农田高产会加速它的枯竭一样。持续的工作会消耗我们的精力，短暂的休憩和放松则会让我们恢复能量。一直劳作不停歇，会让大脑变得迟钝和麻木。</p>
</li>
<li>
<p>只有心灵被深深触动，才可能写出超越平凡的佳作。</p>
</li>
<li>
<p>过于理性的思想很难达到一定的高度，它必须放弃常走的道路，不顾一切向前冲，并敦促驾驶者沿着自己的路线飞奔，才能到达那个原本连自己都不敢想象的目的地。</p>
</li>
</ul>
<h2 id="论天意">论天意</h2>
<ul>
<li>
<p>好人和众神的唯一区别就是时间先后，他们更像是众神的学生、竞争者以及真正的后代。如同严父培育子女，作为人类高贵的父母，众神对好人的训练也更为严苛，对他们的品行也更为关注。因此，当你看到众神认可的好人在辛勤劳作、汗流浃背、痛苦挣扎，而坏人却过着无法无天、纸醉金迷的生活时，要明白，换成我们，也希望自己的孩子谦虚低调，自己的家仆飞扬跋扈。我们对前者严加管教，却放任后者肆意妄为。神的育人之道也是如此。他不宠溺好人，而是考验他们，让他们变得坚强，更加接近自己。</p>
</li>
<li>
<p>为什么好人经常没有好报？不，坏事不会落到好人身上，好坏这两种截然相反的事物不可能结合在一起。世上有那么多条河流，天空会降下无数场暴雨，喷涌的矿泉也不计其数，但所有这些汇到一起都不会改变大海的味道，甚至不会将其冲淡一丝一毫。</p>
</li>
<li>
<p>逆境也击不垮勇者的意志。</p>
</li>
<li>
<p>将不幸视为对意志的考验。</p>
</li>
<li>
<p>只要是有光荣梦想的男子汉，哪个不渴望在辛勤付出中履行职责——即便他要面对重重危险？只要是努力工作的人，哪个不会将无所事事视为惩罚？看看我们的运动员，他们提升自身的力量，选择最强劲的对手比拼，训练时还要求陪练员拿出全部力量与其交手。他们甘愿忍受一次次的拳头和伤痛，找不到能力匹配的对手时，他们便选择一对多搏斗，因为一旦缺少对手，他们的力量和勇气也会随之退化。只有通过展示忍耐力，他们才能证明自己的强大和勇猛。好人就应该这么做。他们不应惧怕艰难困苦，不应哀叹命运多舛，无论遭遇了什么，他们都应勇于承担，并努力将其变成福气。其实，承受了什么并不重要，重要的是选择用何种方式去承受。</p>
</li>
<li>
<p>你有没有发现，父亲和母亲在宠爱孩子的方式上截然不同？父亲总是督促孩子训练，让他们挥汗如雨甚至痛哭流涕，即便是节假日也不许他们碌碌无为；与此同时，母亲却只想将孩子抱在腿上，怕他们被太阳晒伤，怕他们遭遇烦恼，见不得他们受苦流泪。像父亲培养孩子那样，神对待好人，也是男子汉之间的关爱方式。“让他们，”神说，“在劳动、苦难和失去中磨炼自己，唯有如此才能获得真正的力量。”那些生活安逸的人，挪动一下自己肥胖的身体都会觉得吃力，更不要提让他们劳作了。那些生活太过一帆风顺的人，轻微的打击都会超出他们的承受能力；但那些同苦难一次又一次顽强斗争的人，却被锤炼得刀枪不入，从不向灾难屈服，即便跌倒也会跪着战斗到底。你会不会奇怪，为什么神明爱护好人，希望他们至善至美，却安排他们站在好运的对立面？如果说，众神有时想看看勇者如何面对困境，我倒不觉得惊讶。毕竟，看到勇敢的年轻人用长矛击退袭击他的野兽，或是面对迎面冲来的狮子毫不退缩时，我们也会由衷地高兴。这种时候，人类表现得越勇猛，搏斗的画面就越吸引人。</p>
</li>
<li>
<p>自己的学徒用这种高贵难忘的方式为生命画上句号，众神又怎能不另眼相看呢？当凡人之死令众人畏惧的神都肃然起敬时，他便也升华到了神的境界。</p>
</li>
<li>
<p>从未遭遇不幸的人最不幸。</p>
</li>
<li>
<p>厄运会避开最胆小的懦夫，仿佛在说：“我为什么要选那个人做对手？他只会立刻缴械投降。我都不用浪费力气对付他，稍稍吓唬吓唬，他就会逃之夭夭，他甚至连直面我的勇气都没有。我还是去找找愿意和我决一死战的人比拼吧。和还没开战就放弃的人比赛，我自己都会脸红。”在角斗士眼里，和弱者比武是耻辱，毫无危险的胜利也毫无荣耀可言。命运女神也是如此，她对懦夫不屑一顾，只选择最英勇的人较量。只有面对最顽强不屈、最勇敢正直的人，她才愿意使出全部力量。她用烈火考验穆奇乌斯[4]，用贫穷考验法布里奇乌斯[5]，用流放考验鲁提里乌斯，用酷刑考验雷古勒斯，用毒药考验苏格拉底，用死亡考验加图。因为苦难，我们才意识到伟人的光芒。</p>
</li>
<li>
<p>苦难越大，荣耀越高。</p>
</li>
<li>
<p>痛苦背后的原因要比痛苦本身更难承受。</p>
</li>
<li>
<p>被自然选中，认为其有能力同自己的巨大威力作斗争，这类人无疑是最幸福的。“强敌的仇恨令人痛苦，”她说，“因此，让他站在庞培、恺撒和克拉苏的对立面吧；竞争公职时被不如自己的人打败令人痛苦，因此，就让他被瓦提尼乌斯[10]打败吧；深陷内战令人痛苦，因此，就让他在世界各地为正义浴血奋战吧，在这个过程中他还要遭遇各种挫折和厄运；自杀令人痛苦，因此，就让他对自己动手吧。你问我这么做的好处？那就是，人类会因此明白，这些只有加图才值得经历的事，并不是真正的坏事。”</p>
</li>
<li>
<p>不管是平庸无奇、享受低级趣味的人还是伟人，他们都可能被好运光顾，但灾难和恐惧却只有伟人能战胜。</p>
</li>
<li>
<p>你说自己伟大，但如果命运不提供任何展示美德的机会，别人又怎么会知道？这就好像置身奥林匹克运动场，你是场上唯一的选手，就算拿到了桂冠，也不能算是真正的胜利。</p>
</li>
<li>
<p>真正的勇士贪恋危险，他们在意的更多是该如何努力，而非所要经历的磨难，因为磨难也是荣耀的组成部分。士兵以负伤为荣，对盔甲上的鲜血津津乐道。从战场归来毫发无损的士兵或许同样英勇，但负伤归来的英雄却更令人钦佩。</p>
</li>
<li>
<p>只有在风暴中我们才能评价领航员的水平，只有在战场上我们才能分辨士兵的能耐。</p>
</li>
<li>
<p>挫折对不熟悉它的人打击最大——脖子越柔弱，锁链越沉重。</p>
</li>
<li>
<p>神也在用同样的方式磨炼、评估、训练自己想要考验和爱护的人。</p>
</li>
<li>
<p>没有人会在接到任务时说：“将军这是在故意刁难我。”相反，他们会说“将军这是看得起我”。</p>
</li>
<li>
<p>众神对待好人，就像老师对待学生，越是有前途越会严加要求。</p>
</li>
<li>
<p>身体最强壮的部位正是使用最多的地方。</p>
</li>
<li>
<p>水手的身体因大海冲击而变得强壮，农民的双手因辛勤劳作而结满老茧，士兵的双臂有足够的力量投掷标枪，运动员的双腿灵活矫捷——长期训练的部位总会变强壮。</p>
</li>
<li>
<p>将人们趋之若鹜的东西赐予坏人而非好人，神在用这种办法让我们质疑这些欲望。</p>
</li>
<li>
<p>让勇者紧握武器、夜宿军营，伤口尚未愈合就要裹着绷带守城站岗，与此同时，阉人和妓女却可以在城中悠然自得，这难道就公平吗？高贵的修女每天半夜起身祭祀，堕落放荡的女人却能享受安稳的睡眠，这难道就公平吗？最优秀的人往往最辛苦。</p>
</li>
<li>
<p>个体的命运在细节上似乎千差万别，但终究会走向同一个归宿：很快，我们都会死去，命运赠予我们的礼物也会随之消失。</p>
</li>
<li>
<p>真正的勇士，他的征途永远巍峨高远。</p>
</li>
<li>
<p>我已经把真正的好东西都放在你心里了，无须幸运光顾便是你真正的幸运。</p>
</li>
<li>
<p>神不用承受痛苦，而你却超越了痛苦。</p>
</li>
<li>
<p>生命的气息藏得并不深，不用武器就能让它消逝。不是说非要用剑在身体里仔细搜索才能找到生命之源，只需伤及表面就会带来死亡。剥夺生命不需要特定部位，身体无论是哪里都能被刺穿。死亡这件事，也就是呼吸离开身体的过程，其实非常迅速，以至于你都觉察不到——无论是用绳结勒住脖子，还是用水堵住呼吸；无论是从高处坠落，撞到坚硬的地面，还是被吸入的浓烟剥夺了呼吸——不管是哪种死法，过程都转瞬即逝。花这么长的时间去担忧瞬间就能了结的事，你难道不觉得脸红吗？</p>
</li>
</ul>
<h2 id="论闲暇">论闲暇</h2>
<ul>
<li>
<p>所有恶习中，最糟糕的莫过于我们连恶习本身都要推陈出新——我们甚至连一个熟悉的恶习都坚持不下去。</p>
</li>
<li>
<p>我们总依赖别人的判断，不管应该追寻和推崇什么，只关心别人追寻和推崇什么，别人想要的总是最好的。选择人生道路时，我们不看道路本身，而是看别人留下的脚印，却不知没有一对脚印能走得回来。</p>
</li>
<li>
<p>“难道我的所言所行都要和老师一模一样，你才会满意？那又能说明什么？我的目标是他们引导我做的事，而非吩咐我做的。”</p>
</li>
<li>
<p>我选择以先辈为榜样，而非重复他们的言语。</p>
</li>
<li>
<p>每个人都身处两个国家：一个是属于全人类的伟大国度，在那里，众神与人同在，我们无须再去寻找偏僻的角落，阳光普照的地方就是国土；另一个是我们碰巧出生的地方，雅典、迦太基或其他——这个国家只属于特定的群体，而非全人类。有人同时为这两个国家——伟大和不那么伟大的——服务，有人只为两者之一服务。即便归隐，我们也能尽责地为那个伟大的国家服务。</p>
</li>
<li>
<p>思考这类问题有什么意义？意义就是见证神的工作。</p>
</li>
<li>
<p>注重享乐的人并非彻底不思考，注重思考的人并非完全不享乐，注重行动的人更离不开思考。</p>
</li>
</ul>
<h2 id="论幸福生活">论幸福生活</h2>
<ul>
<li>
<p>方向如果都反了，再快的行动也只不过是在加大与最初目标的距离。</p>
</li>
<li>
<p>最大的问题就是，我们总倾向于相信他人的说法，觉得大众认可的东西才是最好的。</p>
</li>
<li>
<p>我们之所以失败，就是因为总以别人为榜样。</p>
</li>
<li>
<p>上一刻还在推崇的事，下一刻就可能反对，这就是盲目追随他人的后果。</p>
</li>
<li>
<p>我们应当去寻找最佳方式，而非最常见的方式；能长久维持幸福的方法，而非乌合之众的方法，因为后者往往是真理最糟糕的阐述者。</p>
</li>
<li>
<p>看到那些人了吗？他们吹捧你的口才、追随你的财富、努力讨你欢心、赞美你的权力，可他们却是你的敌人，即便现在不是，将来也一定会是。想知道有多少人嫉妒你，就看看有多少人崇拜你。既如此，何不去追求真正的善呢？那种内心能感知到，却不需对外炫耀的善？那些吸引眼球、让人们停下脚步带着艳羡指指点点的东西，说到底不过是金玉其外败絮其中罢了。</p>
</li>
<li>
<p>我们经常忽略触手可及的东西，黑暗中绊倒我们的，或许正是我们苦苦寻觅之物。</p>
</li>
<li>
<p>面对命运的馈赠，做它们的主人而非奴隶。</p>
</li>
<li>
<p>罪恶诞生于软弱。</p>
</li>
<li>
<p>人之所以能收获快乐，不是因为他知道万物本善，而是因为他知道一切都源于自己内心的善。</p>
</li>
<li>
<p>美德往往伴随着不快乐，美德也不需要快乐。</p>
</li>
<li>
<p>人最快乐的时候，往往正是快乐熄灭之时。</p>
</li>
<li>
<p>本性好动的事物总是更难以沉淀。</p>
</li>
<li>
<p>站在起点就能望到终点，实现目标就预示着终结。</p>
</li>
<li>
<p>美德的确会赐予人快乐，但这不是我们追求美德的原因，更何况美德赐予人的也远不止快乐。美德的终点绝非快乐，只不过是在朝其他目标努力时顺便收获了快乐。这就好比种玉米的田地也会零星长出花朵，但我们辛勤劳作并不是为了这些不起眼的小植物——它们或许赏心悦目，却不是我们耕耘的目的，最多只是顺带产物。</p>
</li>
<li>
<p>如果你问我在美德中找寻什么，我的回答是找寻美德本身，她无法提供比自身更好的东西了，美德便是美德的奖赏。</p>
</li>
<li>
<p>会被某件事支配的人不配被称为智者，更何况还是被快乐支配。他如果沉迷于快乐，又如何承受得住艰难困苦以及人类生活中无处不在的危险？他如果面对快乐这个软弱的对手都会妥协，又怎能忍受死亡、悲痛、万物崩塌和其他更强大的敌人？</p>
</li>
<li>
<p>真正高尚的品质往往深藏不露，腐化他人的东西却显而易见。</p>
</li>
<li>
<p>一旦觉得恶习也符合老师的教诲，他们便由小心翼翼变得肆无忌惮，由遮遮掩掩变成在光天化日之下享受恶习。</p>
</li>
<li>
<p>美德这位最高贵的夫人一旦沦为快乐的侍女，灵魂里便注定不会有伟大的东西。</p>
</li>
<li>
<p>猎捕野兽的过程危险、艰辛，即便捕捉到了，收押它们也难免令人忧心，弄不好它们还会让主人命丧黄泉——无尽的快乐也如此，终将会变成无边的灾祸，将本该拥有它的人变成它的猎物。</p>
</li>
<li>
<p>追求快乐的人将快乐以外的一切都放在次要位置，宁可交出自由也要听从肚子的指挥，这哪里是为自己买到快乐，明明是将自己卖给了快乐。</p>
</li>
<li>
<p>人一旦不再被欲望引诱，他便不缺少任何东西。</p>
</li>
<li>
<p>我已活过，跑完了命运的旅途。</p>
</li>
<li>
<p>你们明白，他人的美德会在无形中映出你们的不足，世上没好人才更符合你们的利益。你们心怀嫉妒地拿他们的辉煌同自身的肮脏对比，却不明白这么做最后伤害的只有自己。</p>
</li>
<li>
<p>天性志存高远，敢于追求即便拥有巨大勇气也未必能实现的理想就堪称高贵。</p>
</li>
<li>
<p>我拥有财富，你被财富拥有。</p>
</li>
<li>
<p>别再说哲学家不能拥有金钱了，没人要求智者必须贫穷。哲学家可以拥有无穷的财富，但那绝不是从别人手上夺来的，不会沾染他人的鲜血，而是在不伤害任何人、不掺杂任何卑鄙交易的前提下获得的，且支出的方式同获取财富的方式一样体面</p>
</li>
<li>
<p>最好的奉献就是，不求回报却能得到回报。</p>
</li>
<li>
<p>慷慨之所以被称为慷慨，不是因为它来自自由人，而是因为它源于自由的精神。</p>
</li>
<li>
<p>真正需要帮助的人出现时，自己却早已两手空空。</p>
</li>
<li>
<p>相比于压抑悲伤，我更愿意节制快乐。</p>
</li>
<li>
<p>智者坐拥财富时，心里想的却恰恰是贫穷。一旦宣战，即便尚未真正交火，将军也会做好一切应对准备，不轻信和平。至于你，一座漂亮的房子就能让你趾高气扬，仿佛它永不会烧毁坍塌。</p>
</li>
<li>
<p>我曾是阿里斯托芬那些笑话的素材，那帮喜剧诗人，恨不得把那点恶毒的幽默都喷到我身上，可他们越是攻击我的美德，就越令其光芒万丈，因为公开和考验会令美德更加不言自明，就像燧石的硬度只有敲打过它的人才清楚一样，那些因攻击美德而感知到其力量的人，也会更清楚美德的伟大。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《动物农场》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8A%A8%E7%89%A9%E5%86%9C%E5%9C%BA/</link>
      <pubDate>Sat, 06 May 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8A%A8%E7%89%A9%E5%86%9C%E5%9C%BA/</guid>
      <description>&lt;h2 id=&#34;第一章&#34;&gt;第一章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我懂得在这片土地上生活而且懂得不比如今活着的任何动物差。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人是我们仅有的真正仇敌。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所有生灵中唯独人是光消费不生产的。人不会产奶，不会下蛋；人力气太小，拉不动犁；人跑得不够快，逮不着兔子。然而人却是所有动物的主子。人使唤动物干活，却只给动物少得不能再少的一点回报，仅仅为了不让他们饿死，而其余的部分悉数被人据为己有。我们的劳作耕耘着土壤，我们的粪便给土壤施肥，然而我们中的任何一个，除了自己身上的一张皮以外，什么也捞不到。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人只为自己谋利益，不为其他任何动物谋利益。我们动物之间在斗争中必须完全团结一致，建立真正的同志情谊。所有的人都是我们的仇敌。所有的动物都是同志。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;赞成认大老鼠为同志的占压倒多数。反对者只有四票，即三只狗加一只猫。事后发现，猫既投了反对票，又投了赞成票。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡是两条腿行走的，那就是敌人。凡是四条腿行走或者长翅膀的，那就是朋友。同样必须记住，在反抗人类的斗争进程中，我们切不可落到去仿效人类的地步。即使你们征服了人类，也不得把他们的恶习继承下来。动物任何时候都不准住在房子里，或睡在床上，或身穿衣服，或喝酒，或吸烟，或接触钱币，或参与买卖。人类所有的习惯都是邪恶的。最最重要的是，动物不得欺压自己的同类。不分强弱，无论贤愚，我们都是兄弟。凡动物都不可杀任何别的动物。凡动物一律平等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章&#34;&gt;第二章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我们为什么要关心我们死后发生的事？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;既然造反反正要发生，那么我们为不为它出力又有什么差别？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;农场主的住宅将保留下来作为纪念馆。大家同意任何动物永远不可住在里边。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;七诫1．凡用两条腿行走的都是敌人。2．凡用四条腿行走或长翅膀的，都是朋友。3．凡动物都不可穿衣服。4．凡动物都不可睡床铺。5．凡动物都不可饮酒。6．凡动物都不可杀任何别的动物。7．凡动物一律平等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第三章&#34;&gt;第三章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;猪其实并不干活，只是指挥和监督其他动物。凭借超群的知识，他们自然会充任领导者的角色。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每一口食物都是一份实实在在的快乐，就由于如今这真正是他们自己的食物，而不是由抠门的东家布施给他们的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拳击手受到所有动物的爱戴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不论碰到什么难题，不论遭遇什么挫折，他的回答照例就一句话：“我会更加努力工作！”——这已经成了他的格言。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;驴子的寿命很长。你们中还没有谁见到过一头驴子死掉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提决议草案的总是猪。别的动物懂得如何投票，可是从来不考虑提出自己的议案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;猫对麻雀说，如今所有的动物都是同志了，随便哪只麻雀只要愿意，都可以走过来待在她的爪子上；然而麻雀们依旧保持着他们的距离。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;四条腿好，两条腿坏。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“同志们，”他说，“禽类的翅膀是主要起推进作用的器官，而不是主要起操控作用的器官，所以应当被看作是腿。人的区别性标志是手，人正是用它来干一切坏事的。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“同志们！”吱嘎尖声喊道。“难道你们认为，我们猪这样做是自私自利和享受特权的一种表现？我希望你们不这样想。我们有许多同志其实讨厌牛奶和苹果。我自己就讨厌它们。我们食用这些东西的唯一目的就是保持我们的身体健康。牛奶和苹果（同志们，这都是经科学证明了的）含有一口猪保持身体健康不可或缺的物质。我们猪是脑力劳动者。本农场的整个管理组织部门全都依靠我们。我们白天黑夜都在守护着你们的福祉。正是为了你们，我们才喝那些牛奶，吃那些苹果。要是我们这些猪无法恪尽厥责，你们可知道会发生什么？琼斯将会回来！是的，琼斯将会回来！同志们，想必……”吱嘎几乎在用恳求的语调呼吁，同时身子跳来跳去，尾巴摇个不停，“……想必你们当中没有谁愿意看到琼斯回来吧？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果说在某件事情上动物们的态度毫无争议的话，那就是他们都不愿意琼斯回来。如果问题以这样的角度摆到他们面前，那么，动物们再也无话可说了。让猪们保持良好的健康状态，其重要性是再显而易见不过的了。于是，大家无须继续争论便同意，让牛奶和被风吹落的苹果（再加上成熟苹果收成中的大头），归猪们独享。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第四章&#34;&gt;第四章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;农场的每一只动物无不各显神通向人们进行报复。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“他死了，”拳击手悲伤地说。“我没有这样做的本意。我忘了自己穿着铁靴子。谁会相信我不是故意干了这件事？”“不必伤感，同志！”自己身上有几处伤口还在滴血的雪球说。“战争就是战争。只有一种人是好的，那就是死人。”“我不愿杀生夺命，甚至不愿伤害人的生命，”拳击手一再重申，两眼噙满了泪水。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们重又聚集到一块儿，心情之激奋达于极点，每一位都扯开嗓门一而再、再而三地列举自己在刚才那一仗中的赫赫战功。一场未经筹备的祝捷庆功会说开就开。旗帜升起来了，《英格兰的生灵》一连唱了多遍，给被枪打死的那只羊举行了庄严隆重的葬礼。雪球在墓旁发表简短讲话，强调所有的动物都须作好准备为动物农场献身，如果有此必要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们一致通过决定设立军功勋章。“一级动物英雄”勋章就在彼时彼地颁发给雪球和拳击手。那是一枚铜牌（实际上从挽具房里找到过好几块旧的铜质马饰），以便在星期天和节假日佩带。另有“二级动物英雄”勋章一枚被追授与牺牲的绵羊。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;琼斯先生的猎枪被发现掉在泥浆里，动物们得知农场主宅内还有备用的枪弹。于是决定把那支猎枪架靠在旗杆脚下，就当它一门礼炮，一年鸣放两回：一回在10月12日，纪念牛棚战役；一回在6月24日施洗约翰节，纪念动物造反。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第五章&#34;&gt;第五章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;这二位在可能发生分歧的每一点上没有不发生分歧的。如果他俩中的一位提议播种更多面积大麦，另一位肯定要求扩大燕麦的播种面积；如果一位说如此这般的一块地种圆白菜正合适，另一位就会断言那儿除了种胡萝卜之类的根用作物外毫无用处。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们在不同的口号下分成两大派：一派的口号是“拥护雪球和每周三天工作制”；另一派的口号是“拥护拿破仑和槽满粮”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本杰明是不属于任何一派的唯一动物。他既不信粮食会更加丰富，也不信风车能节省劳力。他认为，要风车也罢，不要风车也罢，日子一直是怎么过的，往后还得怎么过——也就是说，过得很糟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按照拿破仑的看法，动物们该采取的措施是搞到枪支并且学会使用。按照雪球的看法，他们必须放飞更多鸽子，并在其他农场的动物中间煽风点火鼓动造反。前者的论点是：假如动物们不能自卫，他们只有被征服的份儿。后者的论点是：假如到处发生造反，动物们就无须乎进行自卫。动物们先听拿破仑的主张，接着听雪球的见解，却无法断定哪种观点是对的。其实，他们此刻正在听哪一位发言，必定会发现自己认为这一位说的有理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;起初，谁也想像不出这九条狗是哪来的，但这一疑团很快就给解开了：那正是拿破仑从他们的母亲那儿带走并秘密私养的九只小狗。尽管尚未完成长足，可已俨然是九条庞然大犬，且凶相十足，像一群恶狼。他们紧挨在拿破仑身边。有动物注意到，他们朝着拿破仑摇尾巴的神态，跟另一些狗过去惯于向琼斯先生做的姿态一个样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;背后跟着这群狗的拿破仑，这会儿登上了往日少校站着发表演说的那个隆起的平台。他宣布，从今往后星期日上午的碰头会不再举行。他说，开这种会毫无必要，纯属浪费时间。今后，有关农场运作的所有问题，将由一个专门委员会做出决定，其成员均为猪，由他亲自担任主席。猪委员们将秘密开会，以后再把他们的决议向其他动物传达。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;雪球遭到驱逐一事固然把大家都震蒙了，可动物们听到刚才宣布的这些决定仍感到十分沮丧。某些动物本想提出抗议，偏偏又找不到言之成理的论据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“光勇敢是不够的，”吱嘎说。“忠诚和服从更为重要。既然谈到了牛棚战役，我相信总有一天我们会发现雪球在其中所起的作用被夸大得厉害。纪律，同志们，铁的纪律！那才是今天的口号。只要走错一步，我们的敌人又会骑到我们头上来。同志们，你们总不要琼斯回来吧？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拳击手这会儿已经有时间把一件件事情仔细想过，便说了如下一句代表大家感受的话：“既然拿破仑同志这样说，那肯定错不了。”从此他就一直把“拿破仑永远正确”当作自己的信条，给他个人老挂在嘴上的那句“我会更加努力工作”又添上一句格言。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他表面上好像反对造风车，那纯粹是作为排除雪球的一种迂回战术加以运用，因为雪球是一个危险的角色，又有相当坏的影响力。如今雪球已然失势出局，计划便可以向前推进而不受他的干扰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们对于“策略”这个词儿还不甚了了，但吱嘎说起来却是那么富有说服力，而碰巧也在吱嘎身边的三条狗叫起来又如此显示其威胁力，于是动物们没有再问什么便认可了他的解释。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第六章&#34;&gt;第六章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;那一年动物们自始至终像奴隶一般在干活。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他的两句口头语——“我会更加努力工作”和“拿破仑永远正确”——他认为用于回答什么问题都合适。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们再次意识到一种不可名状的不自在感觉。永远别跟人类打交道，永远不要参与买卖交易，永远不要使用货币——自从琼斯被驱逐后，在第一次胜利的碰头会上最早通过的一些决议中，不是明明有那几条的嘛？所有的动物都没有忘记当初通过这些决议时的情形，或者说，至少他们认为自己还没有忘记。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拿破仑举起他的一只前蹄示意噤声，并宣布他已经做好一切安排。将来无须任何动物去干这件大家显然最不愿意干的事——跟人类接触。他打算把全副重担都压在自己肩上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事后吱嘎到农场各处转了一圈，设法打消动物们的疑虑。他向动物们保证，说什么不得参与贸易、不得使用货币的决议从未获得通过，甚至没有谁提过这样的议案。这纯粹是一种臆想，追起根来可能最初出自雪球散布的谣言。有少数动物仍然感到吃不太准，但诡计多端的吱嘎向他们问道：“同志们，你们能肯定这决不是你们梦中发生的事，后来又信以为真？你们有没有这样一份决议的文字记录？有没有写在什么地方的书面材料？”由于确实不存在这样一类的任何记载，动物们也就承认是他们自己搞错了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们怀着一种类乎忧惧的心理状态观察此人来了又走，走了又来，并且尽可能避开他。虽然如此，动物们看到拿破仑四足着地竟在给用两条腿站立的温珀下命令，一种自豪感便在他们心中油然而生，也使他们对这项新举措的抵触情绪有所缓解。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;猪们一下子搬进了农场主的住宅，把那里作为他们的宿舍楼。动物们再次想起早先好像曾通过禁止这种行为的一项决定，而吱嘎又再次有能耐使大家相信问题不在于此。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;住楼房比住猪圈也更符合领袖尊贵的身份（近来吱嘎提到拿破仑时已惯于使用“领袖”这一头衔）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;某些动物仍然给闹糊涂了，因为他们听说猪们不单单在厨房里用餐，并把起居室当作娱乐室，而且还睡在床上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“同志们，看来，”他指出，“你们已经听说，我们猪现在睡到农场主住宅的床上去了，是不是？干吗不睡？莫非你们以为什么时候有这一条针对睡床的禁令不成？床的意思仅仅是睡觉的地方而已。从正确的观点来看，圈棚里的一堆干草同样是床。戒律针对的是被单，因为那是人类的发明。我们已经把被单从农场主宅内的床上撤去，睡在上下两条毯子中间。那也是非常舒适的床铺！但是，我可以告诉你们，同志们，考虑到眼下有那么多伤脑筋的工作都得由我们去做，这还够不上我们所需要的舒适程度。你们不至于想要剥夺我们休息的权利吧，同志们？难道你们要把我们累得没法履行我们的职责不成？你们中不会有谁愿意看到琼斯回来吧？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“同志们，”他胸有成竹地说，“你们可知道，应该对此负责的是谁？你们可知道，是谁夜里摸黑进来把我们的风车搞塌了？是雪球！”他突然发出声如霹雳的咆哮。“是雪球干下了这件事！这个叛徒纯粹出于险恶的用心，妄图使我们的计划开倒车，为他自己可耻地遭到驱逐进行报复，于是在夜幕的掩盖下潜入此地把我们将近一年的劳动成果毁于一旦。同志们，我在此时此地宣布判处雪球死刑。任何动物如能将雪球绳之以法，将被授予‘动物英雄二等勋章’，还可得到十八升苹果。任何动物要是把他活捉了，可得到三十六升苹果！”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第七章&#34;&gt;第七章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;有迹象表明，每当他好像即将与弗雷德里克达成协议时，便有人声称雪球藏在狐苑；而当他倾向于跟皮尔金顿成交时，就有消息说雪球在撬棍地。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;曾在鸡蛋事件中领头造反未遂的三只米诺卡小母鸡，站出来供称，雪球曾在同一个梦中向她们现身，并且煽动她们违抗拿破仑的命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自从琼斯离开农场一直到今天以前，还没有哪一只动物杀过另一只动物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我怎么也想不明白。我实在没法相信这等事会发生在我们农场。一定是我们自己在什么地方出了纰漏。据我看来，解决的办法只有一个——更加努力工作。从今以后，每天早晨我要提前整整一小时起身。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;几年前动物们决心为推翻人类而努力苦干，而现实与当初他们致力的目标完全是两码事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理想的动物社会没有盼到，而他们反倒落入了这样一个时代：谁也不敢说出自己的想法，动辄狂吠不止的恶犬到处横行，你不得不眼睁睁看着你的同志在招认了丑恶罪行后被撕成碎片——她不知道怎么会闹成这样的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“它不再需要，同志，”吱嘎说，口气和表情都是硬邦邦的。“《英格兰的生灵》是造反之歌。但造反现已完成。今天下午处决一批叛徒是最后一幕。外部和内部的敌对分子都已被打败。过去我们通过《英格兰的生灵》表达的是对于未来一个更美好社会的渴望。但这个社会现在已经建成。很明显，这首歌不再有任何用途。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物农场，动物农场，我决不会让你受伤！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第八章&#34;&gt;第八章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;凡动物都不可杀任何别的动物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如今拿破仑被提到时不能随随便便称为“拿破仑”了。任何时候谈起他，都必须按正规方式称“我们的领袖拿破仑同志”，而猪们则喜欢为他发明创造诸如所有动物之父、人见愁、羊圈守护神、小鸭之友之类的头衔。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;农场每次取得什么成绩，好运无论临到谁的头上，都要归功于拿破仑，这已成为惯例。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;农场一般群众的普遍感受在一首题为《拿破仑同志》的诗中表达得很好，那是小不点儿创作的，全诗如下：救苦救难的恩公，您让万物欣欣向荣，幸福全仗您布施。哦，您像天上的太阳，每当我仰视您指挥若定的目光，我心中既温暖又亮堂，拿破仑同志！您创造的生灵就爱一天饱餐两顿，还有松软的干草可以在上面打滚，这一切无不是您所赐。所有的生灵大小不论，都能在圈舍里睡得安稳，因为有您守护着我们，拿破仑同志！我若有一头吃奶的小猪，不等他离开我的胸脯，哪怕他才奶瓶般大，长不盈尺，他就得学会第一件事情——永远对您老实忠诚，对，还有他牙牙学语发出的第一声——“拿破仑同志！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;四条狗夜晚守卫在他床边，每条狗负责床的一角，而一口名叫粉红眼的小猪领受的任务是：所有给拿破仑享用的食物先得由粉红眼尝过，然后给拿破仑吃，以防有谁下毒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动物们现在也了解到，雪球从来没有像许多群众至今还相信的那样获得过“动物英雄一级勋章”。这纯粹是一个子虚乌有的神话，它是在牛棚战役后不久由雪球自己散播的。这个根本没有被授勋的家伙，曾因在战斗中贪生怕死而受过处分。听了这种说法，某些动物再一次感到有些茫然，但吱嘎很快就能够使他们信服，是他们的记性出了问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="第一章">第一章</h2>
<ul>
<li>
<p>我懂得在这片土地上生活而且懂得不比如今活着的任何动物差。</p>
</li>
<li>
<p>人是我们仅有的真正仇敌。</p>
</li>
<li>
<p>所有生灵中唯独人是光消费不生产的。人不会产奶，不会下蛋；人力气太小，拉不动犁；人跑得不够快，逮不着兔子。然而人却是所有动物的主子。人使唤动物干活，却只给动物少得不能再少的一点回报，仅仅为了不让他们饿死，而其余的部分悉数被人据为己有。我们的劳作耕耘着土壤，我们的粪便给土壤施肥，然而我们中的任何一个，除了自己身上的一张皮以外，什么也捞不到。</p>
</li>
<li>
<p>人只为自己谋利益，不为其他任何动物谋利益。我们动物之间在斗争中必须完全团结一致，建立真正的同志情谊。所有的人都是我们的仇敌。所有的动物都是同志。</p>
</li>
<li>
<p>赞成认大老鼠为同志的占压倒多数。反对者只有四票，即三只狗加一只猫。事后发现，猫既投了反对票，又投了赞成票。</p>
</li>
<li>
<p>凡是两条腿行走的，那就是敌人。凡是四条腿行走或者长翅膀的，那就是朋友。同样必须记住，在反抗人类的斗争进程中，我们切不可落到去仿效人类的地步。即使你们征服了人类，也不得把他们的恶习继承下来。动物任何时候都不准住在房子里，或睡在床上，或身穿衣服，或喝酒，或吸烟，或接触钱币，或参与买卖。人类所有的习惯都是邪恶的。最最重要的是，动物不得欺压自己的同类。不分强弱，无论贤愚，我们都是兄弟。凡动物都不可杀任何别的动物。凡动物一律平等。</p>
</li>
</ul>
<h2 id="第二章">第二章</h2>
<ul>
<li>
<p>我们为什么要关心我们死后发生的事？</p>
</li>
<li>
<p>既然造反反正要发生，那么我们为不为它出力又有什么差别？</p>
</li>
<li>
<p>农场主的住宅将保留下来作为纪念馆。大家同意任何动物永远不可住在里边。</p>
</li>
<li>
<p>七诫1．凡用两条腿行走的都是敌人。2．凡用四条腿行走或长翅膀的，都是朋友。3．凡动物都不可穿衣服。4．凡动物都不可睡床铺。5．凡动物都不可饮酒。6．凡动物都不可杀任何别的动物。7．凡动物一律平等。</p>
</li>
</ul>
<h2 id="第三章">第三章</h2>
<ul>
<li>
<p>猪其实并不干活，只是指挥和监督其他动物。凭借超群的知识，他们自然会充任领导者的角色。</p>
</li>
<li>
<p>每一口食物都是一份实实在在的快乐，就由于如今这真正是他们自己的食物，而不是由抠门的东家布施给他们的。</p>
</li>
<li>
<p>拳击手受到所有动物的爱戴。</p>
</li>
<li>
<p>不论碰到什么难题，不论遭遇什么挫折，他的回答照例就一句话：“我会更加努力工作！”——这已经成了他的格言。</p>
</li>
<li>
<p>驴子的寿命很长。你们中还没有谁见到过一头驴子死掉。</p>
</li>
<li>
<p>提决议草案的总是猪。别的动物懂得如何投票，可是从来不考虑提出自己的议案。</p>
</li>
<li>
<p>猫对麻雀说，如今所有的动物都是同志了，随便哪只麻雀只要愿意，都可以走过来待在她的爪子上；然而麻雀们依旧保持着他们的距离。</p>
</li>
<li>
<p>四条腿好，两条腿坏。</p>
</li>
<li>
<p>“同志们，”他说，“禽类的翅膀是主要起推进作用的器官，而不是主要起操控作用的器官，所以应当被看作是腿。人的区别性标志是手，人正是用它来干一切坏事的。”</p>
</li>
<li>
<p>“同志们！”吱嘎尖声喊道。“难道你们认为，我们猪这样做是自私自利和享受特权的一种表现？我希望你们不这样想。我们有许多同志其实讨厌牛奶和苹果。我自己就讨厌它们。我们食用这些东西的唯一目的就是保持我们的身体健康。牛奶和苹果（同志们，这都是经科学证明了的）含有一口猪保持身体健康不可或缺的物质。我们猪是脑力劳动者。本农场的整个管理组织部门全都依靠我们。我们白天黑夜都在守护着你们的福祉。正是为了你们，我们才喝那些牛奶，吃那些苹果。要是我们这些猪无法恪尽厥责，你们可知道会发生什么？琼斯将会回来！是的，琼斯将会回来！同志们，想必……”吱嘎几乎在用恳求的语调呼吁，同时身子跳来跳去，尾巴摇个不停，“……想必你们当中没有谁愿意看到琼斯回来吧？”</p>
</li>
<li>
<p>如果说在某件事情上动物们的态度毫无争议的话，那就是他们都不愿意琼斯回来。如果问题以这样的角度摆到他们面前，那么，动物们再也无话可说了。让猪们保持良好的健康状态，其重要性是再显而易见不过的了。于是，大家无须继续争论便同意，让牛奶和被风吹落的苹果（再加上成熟苹果收成中的大头），归猪们独享。</p>
</li>
</ul>
<h2 id="第四章">第四章</h2>
<ul>
<li>
<p>农场的每一只动物无不各显神通向人们进行报复。</p>
</li>
<li>
<p>“他死了，”拳击手悲伤地说。“我没有这样做的本意。我忘了自己穿着铁靴子。谁会相信我不是故意干了这件事？”“不必伤感，同志！”自己身上有几处伤口还在滴血的雪球说。“战争就是战争。只有一种人是好的，那就是死人。”“我不愿杀生夺命，甚至不愿伤害人的生命，”拳击手一再重申，两眼噙满了泪水。</p>
</li>
<li>
<p>动物们重又聚集到一块儿，心情之激奋达于极点，每一位都扯开嗓门一而再、再而三地列举自己在刚才那一仗中的赫赫战功。一场未经筹备的祝捷庆功会说开就开。旗帜升起来了，《英格兰的生灵》一连唱了多遍，给被枪打死的那只羊举行了庄严隆重的葬礼。雪球在墓旁发表简短讲话，强调所有的动物都须作好准备为动物农场献身，如果有此必要。</p>
</li>
<li>
<p>动物们一致通过决定设立军功勋章。“一级动物英雄”勋章就在彼时彼地颁发给雪球和拳击手。那是一枚铜牌（实际上从挽具房里找到过好几块旧的铜质马饰），以便在星期天和节假日佩带。另有“二级动物英雄”勋章一枚被追授与牺牲的绵羊。</p>
</li>
<li>
<p>琼斯先生的猎枪被发现掉在泥浆里，动物们得知农场主宅内还有备用的枪弹。于是决定把那支猎枪架靠在旗杆脚下，就当它一门礼炮，一年鸣放两回：一回在10月12日，纪念牛棚战役；一回在6月24日施洗约翰节，纪念动物造反。</p>
</li>
</ul>
<h2 id="第五章">第五章</h2>
<ul>
<li>
<p>这二位在可能发生分歧的每一点上没有不发生分歧的。如果他俩中的一位提议播种更多面积大麦，另一位肯定要求扩大燕麦的播种面积；如果一位说如此这般的一块地种圆白菜正合适，另一位就会断言那儿除了种胡萝卜之类的根用作物外毫无用处。</p>
</li>
<li>
<p>动物们在不同的口号下分成两大派：一派的口号是“拥护雪球和每周三天工作制”；另一派的口号是“拥护拿破仑和槽满粮”。</p>
</li>
<li>
<p>本杰明是不属于任何一派的唯一动物。他既不信粮食会更加丰富，也不信风车能节省劳力。他认为，要风车也罢，不要风车也罢，日子一直是怎么过的，往后还得怎么过——也就是说，过得很糟。</p>
</li>
<li>
<p>按照拿破仑的看法，动物们该采取的措施是搞到枪支并且学会使用。按照雪球的看法，他们必须放飞更多鸽子，并在其他农场的动物中间煽风点火鼓动造反。前者的论点是：假如动物们不能自卫，他们只有被征服的份儿。后者的论点是：假如到处发生造反，动物们就无须乎进行自卫。动物们先听拿破仑的主张，接着听雪球的见解，却无法断定哪种观点是对的。其实，他们此刻正在听哪一位发言，必定会发现自己认为这一位说的有理。</p>
</li>
<li>
<p>起初，谁也想像不出这九条狗是哪来的，但这一疑团很快就给解开了：那正是拿破仑从他们的母亲那儿带走并秘密私养的九只小狗。尽管尚未完成长足，可已俨然是九条庞然大犬，且凶相十足，像一群恶狼。他们紧挨在拿破仑身边。有动物注意到，他们朝着拿破仑摇尾巴的神态，跟另一些狗过去惯于向琼斯先生做的姿态一个样。</p>
</li>
<li>
<p>背后跟着这群狗的拿破仑，这会儿登上了往日少校站着发表演说的那个隆起的平台。他宣布，从今往后星期日上午的碰头会不再举行。他说，开这种会毫无必要，纯属浪费时间。今后，有关农场运作的所有问题，将由一个专门委员会做出决定，其成员均为猪，由他亲自担任主席。猪委员们将秘密开会，以后再把他们的决议向其他动物传达。</p>
</li>
<li>
<p>雪球遭到驱逐一事固然把大家都震蒙了，可动物们听到刚才宣布的这些决定仍感到十分沮丧。某些动物本想提出抗议，偏偏又找不到言之成理的论据。</p>
</li>
<li>
<p>“光勇敢是不够的，”吱嘎说。“忠诚和服从更为重要。既然谈到了牛棚战役，我相信总有一天我们会发现雪球在其中所起的作用被夸大得厉害。纪律，同志们，铁的纪律！那才是今天的口号。只要走错一步，我们的敌人又会骑到我们头上来。同志们，你们总不要琼斯回来吧？”</p>
</li>
<li>
<p>拳击手这会儿已经有时间把一件件事情仔细想过，便说了如下一句代表大家感受的话：“既然拿破仑同志这样说，那肯定错不了。”从此他就一直把“拿破仑永远正确”当作自己的信条，给他个人老挂在嘴上的那句“我会更加努力工作”又添上一句格言。</p>
</li>
<li>
<p>他表面上好像反对造风车，那纯粹是作为排除雪球的一种迂回战术加以运用，因为雪球是一个危险的角色，又有相当坏的影响力。如今雪球已然失势出局，计划便可以向前推进而不受他的干扰。</p>
</li>
<li>
<p>动物们对于“策略”这个词儿还不甚了了，但吱嘎说起来却是那么富有说服力，而碰巧也在吱嘎身边的三条狗叫起来又如此显示其威胁力，于是动物们没有再问什么便认可了他的解释。</p>
</li>
</ul>
<h2 id="第六章">第六章</h2>
<ul>
<li>
<p>那一年动物们自始至终像奴隶一般在干活。</p>
</li>
<li>
<p>他的两句口头语——“我会更加努力工作”和“拿破仑永远正确”——他认为用于回答什么问题都合适。</p>
</li>
<li>
<p>动物们再次意识到一种不可名状的不自在感觉。永远别跟人类打交道，永远不要参与买卖交易，永远不要使用货币——自从琼斯被驱逐后，在第一次胜利的碰头会上最早通过的一些决议中，不是明明有那几条的嘛？所有的动物都没有忘记当初通过这些决议时的情形，或者说，至少他们认为自己还没有忘记。</p>
</li>
<li>
<p>拿破仑举起他的一只前蹄示意噤声，并宣布他已经做好一切安排。将来无须任何动物去干这件大家显然最不愿意干的事——跟人类接触。他打算把全副重担都压在自己肩上。</p>
</li>
<li>
<p>事后吱嘎到农场各处转了一圈，设法打消动物们的疑虑。他向动物们保证，说什么不得参与贸易、不得使用货币的决议从未获得通过，甚至没有谁提过这样的议案。这纯粹是一种臆想，追起根来可能最初出自雪球散布的谣言。有少数动物仍然感到吃不太准，但诡计多端的吱嘎向他们问道：“同志们，你们能肯定这决不是你们梦中发生的事，后来又信以为真？你们有没有这样一份决议的文字记录？有没有写在什么地方的书面材料？”由于确实不存在这样一类的任何记载，动物们也就承认是他们自己搞错了。</p>
</li>
<li>
<p>动物们怀着一种类乎忧惧的心理状态观察此人来了又走，走了又来，并且尽可能避开他。虽然如此，动物们看到拿破仑四足着地竟在给用两条腿站立的温珀下命令，一种自豪感便在他们心中油然而生，也使他们对这项新举措的抵触情绪有所缓解。</p>
</li>
<li>
<p>猪们一下子搬进了农场主的住宅，把那里作为他们的宿舍楼。动物们再次想起早先好像曾通过禁止这种行为的一项决定，而吱嘎又再次有能耐使大家相信问题不在于此。</p>
</li>
<li>
<p>住楼房比住猪圈也更符合领袖尊贵的身份（近来吱嘎提到拿破仑时已惯于使用“领袖”这一头衔）。</p>
</li>
<li>
<p>某些动物仍然给闹糊涂了，因为他们听说猪们不单单在厨房里用餐，并把起居室当作娱乐室，而且还睡在床上。</p>
</li>
<li>
<p>“同志们，看来，”他指出，“你们已经听说，我们猪现在睡到农场主住宅的床上去了，是不是？干吗不睡？莫非你们以为什么时候有这一条针对睡床的禁令不成？床的意思仅仅是睡觉的地方而已。从正确的观点来看，圈棚里的一堆干草同样是床。戒律针对的是被单，因为那是人类的发明。我们已经把被单从农场主宅内的床上撤去，睡在上下两条毯子中间。那也是非常舒适的床铺！但是，我可以告诉你们，同志们，考虑到眼下有那么多伤脑筋的工作都得由我们去做，这还够不上我们所需要的舒适程度。你们不至于想要剥夺我们休息的权利吧，同志们？难道你们要把我们累得没法履行我们的职责不成？你们中不会有谁愿意看到琼斯回来吧？”</p>
</li>
<li>
<p>“同志们，”他胸有成竹地说，“你们可知道，应该对此负责的是谁？你们可知道，是谁夜里摸黑进来把我们的风车搞塌了？是雪球！”他突然发出声如霹雳的咆哮。“是雪球干下了这件事！这个叛徒纯粹出于险恶的用心，妄图使我们的计划开倒车，为他自己可耻地遭到驱逐进行报复，于是在夜幕的掩盖下潜入此地把我们将近一年的劳动成果毁于一旦。同志们，我在此时此地宣布判处雪球死刑。任何动物如能将雪球绳之以法，将被授予‘动物英雄二等勋章’，还可得到十八升苹果。任何动物要是把他活捉了，可得到三十六升苹果！”</p>
</li>
</ul>
<h2 id="第七章">第七章</h2>
<ul>
<li>
<p>有迹象表明，每当他好像即将与弗雷德里克达成协议时，便有人声称雪球藏在狐苑；而当他倾向于跟皮尔金顿成交时，就有消息说雪球在撬棍地。</p>
</li>
<li>
<p>曾在鸡蛋事件中领头造反未遂的三只米诺卡小母鸡，站出来供称，雪球曾在同一个梦中向她们现身，并且煽动她们违抗拿破仑的命令。</p>
</li>
<li>
<p>自从琼斯离开农场一直到今天以前，还没有哪一只动物杀过另一只动物。</p>
</li>
<li>
<p>“我怎么也想不明白。我实在没法相信这等事会发生在我们农场。一定是我们自己在什么地方出了纰漏。据我看来，解决的办法只有一个——更加努力工作。从今以后，每天早晨我要提前整整一小时起身。”</p>
</li>
<li>
<p>几年前动物们决心为推翻人类而努力苦干，而现实与当初他们致力的目标完全是两码事。</p>
</li>
<li>
<p>理想的动物社会没有盼到，而他们反倒落入了这样一个时代：谁也不敢说出自己的想法，动辄狂吠不止的恶犬到处横行，你不得不眼睁睁看着你的同志在招认了丑恶罪行后被撕成碎片——她不知道怎么会闹成这样的。</p>
</li>
<li>
<p>“它不再需要，同志，”吱嘎说，口气和表情都是硬邦邦的。“《英格兰的生灵》是造反之歌。但造反现已完成。今天下午处决一批叛徒是最后一幕。外部和内部的敌对分子都已被打败。过去我们通过《英格兰的生灵》表达的是对于未来一个更美好社会的渴望。但这个社会现在已经建成。很明显，这首歌不再有任何用途。”</p>
</li>
<li>
<p>动物农场，动物农场，我决不会让你受伤！</p>
</li>
</ul>
<h2 id="第八章">第八章</h2>
<ul>
<li>
<p>凡动物都不可杀任何别的动物。</p>
</li>
<li>
<p>如今拿破仑被提到时不能随随便便称为“拿破仑”了。任何时候谈起他，都必须按正规方式称“我们的领袖拿破仑同志”，而猪们则喜欢为他发明创造诸如所有动物之父、人见愁、羊圈守护神、小鸭之友之类的头衔。</p>
</li>
<li>
<p>农场每次取得什么成绩，好运无论临到谁的头上，都要归功于拿破仑，这已成为惯例。</p>
</li>
<li>
<p>农场一般群众的普遍感受在一首题为《拿破仑同志》的诗中表达得很好，那是小不点儿创作的，全诗如下：救苦救难的恩公，您让万物欣欣向荣，幸福全仗您布施。哦，您像天上的太阳，每当我仰视您指挥若定的目光，我心中既温暖又亮堂，拿破仑同志！您创造的生灵就爱一天饱餐两顿，还有松软的干草可以在上面打滚，这一切无不是您所赐。所有的生灵大小不论，都能在圈舍里睡得安稳，因为有您守护着我们，拿破仑同志！我若有一头吃奶的小猪，不等他离开我的胸脯，哪怕他才奶瓶般大，长不盈尺，他就得学会第一件事情——永远对您老实忠诚，对，还有他牙牙学语发出的第一声——“拿破仑同志！”</p>
</li>
<li>
<p>四条狗夜晚守卫在他床边，每条狗负责床的一角，而一口名叫粉红眼的小猪领受的任务是：所有给拿破仑享用的食物先得由粉红眼尝过，然后给拿破仑吃，以防有谁下毒。</p>
</li>
<li>
<p>动物们现在也了解到，雪球从来没有像许多群众至今还相信的那样获得过“动物英雄一级勋章”。这纯粹是一个子虚乌有的神话，它是在牛棚战役后不久由雪球自己散播的。这个根本没有被授勋的家伙，曾因在战斗中贪生怕死而受过处分。听了这种说法，某些动物再一次感到有些茫然，但吱嘎很快就能够使他们信服，是他们的记性出了问题。</p>
</li>
<li>
<p>由九条狗和一只小公鸡前呼后拥陪伴着，拿破仑亲临现场察看已经完成的工程；他以个人的名义为动物们取得的成就向他们表示祝贺，并宣布风车被命名为拿破仑风车。</p>
</li>
<li>
<p>吱嘎说，真正展示拿破仑英明卓绝的还是这样一个事实：他对谁都不信任，甚至不信任弗雷德里克。弗雷德里克本想用一种叫做支票的东西支付木材款，那玩意儿好像是一张纸，上面写着付款的承诺。可是拿破仑太聪明了，岂会上他的当。他要求弗雷德里克用五镑面额的现钞支付货款，而且必须先交钱，然后把木材拉走。</p>
</li>
<li>
<p>钞票竟是假的！木材白送给了弗雷德里克！</p>
</li>
<li>
<p>大家认为第五条戒律是“凡动物都不可饮酒”，而后面还有两个字他们却给忘了。实际上那条戒律是这样念的：“凡动物都不可饮酒过量。”</p>
</li>
</ul>
<h2 id="第九章">第九章</h2>
<ul>
<li>
<p>在往昔的日子里他们是奴隶，而现在他们是自由的，那才是最根本的区别——吱嘎决不会忘了指出这一点。</p>
</li>
<li>
<p>如果一口猪和任何别的动物在小路上相遇，别的动物必须靠边站——这已经作为一条规矩定了下来。</p>
</li>
<li>
<p>现今的生活具有比过去较多的尊严。</p>
</li>
<li>
<p>四月，动物农场宣布成立共和国，这样就需要选举一位总统。候选人只有一名，即拿破仑，他自然毫无异议地当选此职。</p>
</li>
<li>
<p>从此再也没有谁见到过拳击手。</p>
</li>
<li>
<p>“这是我所见过的最令我感动的场景！”吱嘎说着举起他的一个蹄子抹去一滴眼泪。“我在他的病床旁边一直守到他咽气。临终前，他虚弱得连说话的力气都没有了，只能对我附耳低语，说他唯一的遗憾就是走在风车竣工之前。‘前进，同志们！’他贴在我耳边说。‘以造反的名义，前进。动物农场万岁！拿破仑同志万岁！拿破仑永远正确！’这是他最后的几句话，同志们。”</p>
</li>
</ul>
<h2 id="第十章">第十章</h2>
<ul>
<li>
<p>那是一头猪在用他的后腿行走。</p>
</li>
<li>
<p>“四条腿好，两条腿更好！四条腿好，两条腿更好！四条腿好，两条腿更好！”</p>
</li>
<li>
<p>凡动物一律平等但是有些动物比别的动物更加平等</p>
</li>
<li>
<p>动物农场的低等动物比郡内任何动物干的活更多，而消耗的饲料却更少——他相信自己这样说没错。确实，他和他的同行参观者们今天看到的很多东西，他们打算马上引进到自己的农场里去。</p>
</li>
<li>
<p>猪与人之间过去没有，也没有必要产生任何利害冲突。</p>
</li>
<li>
<p>“你们有你们的低等动物需要对付，”他说，“我们有我们的下层阶级需要摆平！”</p>
</li>
<li>
<p>到目前为止，农场的动物们有一个颇为愚蠢的惯例，就是互相称呼“同志”。</p>
</li>
<li>
<p>皮尔金顿先生始终称本农场为“动物农场”。皮尔金顿先生当然不可能知道——因为他，拿破仑，现在才第一次正式宣布此事：“动物农场”这个名称已经废除。今后农场将被称为“庄园农场”——他相信这才是农场正确的原名。</p>
</li>
<li>
<p>这下弄明白了，猪们的脸究竟出了什么问题。敢情动物们从窗外朝里望，目光从猪移到人，再从人移到猪，又重新从猪移到人，要分清哪张脸是猪的，哪张脸是人的，已经不可能了。</p>
</li>
</ul>
<h2 id="附录动物农场乌克兰文版序">附录：《动物农场》乌克兰文版序</h2>
<ul>
<li>
<p>我所以成为拥护社会主义者主要是出于对产业工人中比较穷困的一部分受到压迫和忽视的情况感到厌恶，而不是出于对计划社会有什么理论上的想望。</p>
</li>
<li>
<p>这一切经验是一个宝贵的客观教训：它告诉我极权主义的宣传能够多么轻易地控制民主国家开明人民的舆论。</p>
</li>
<li>
<p>我从来没有去过俄罗斯，我对它的了解只是通过读书看报而得到的。即使我有这力量，我也不想干涉苏联内部事务：我不会仅仅因为斯大林和他的同事的野蛮和不民主的手段而谴责他们，很有可能，即使有最好的用心，在当时当地的情况下，他们恐怕也只能如此行事。</p>
</li>
<li>
<p>西欧的人们应该看清楚苏联政权的真正面目。</p>
</li>
<li>
<p>我一直坚信，如果我们要振兴社会主义运动，打破苏联神话是必要的。</p>
</li>
<li>
<p>如果这些牲口知道它们自己的力量，我们就无法控制它们，人类剥削牲口就像富人剥削无产阶级一样。</p>
</li>
<li>
<p>真正的斗争是在牲口和人之间。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《人生的智慧》（韦启昌版本）</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%BA%BA%E7%94%9F%E7%9A%84%E6%99%BA%E6%85%A7%E9%9F%A6%E5%90%AF%E6%98%8C%E7%89%88%E6%9C%AC/</link>
      <pubDate>Wed, 03 May 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%BA%BA%E7%94%9F%E7%9A%84%E6%99%BA%E6%85%A7%E9%9F%A6%E5%90%AF%E6%98%8C%E7%89%88%E6%9C%AC/</guid>
      <description>&lt;h2 id=&#34;译者序&#34;&gt;译者序&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;深刻的哲学必然渗透着常人所认为的悲观意味，因为“天地不仁，以万物为刍狗”，它并不以人们的意志为转移。常人只是一厢情愿、出于个人喜好而主观地粉饰、美化生活及其目的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在叔本华奠定名声之前的长达六十多年不获承认的沉寂时期，叔本华从来不曾怀疑过自己的天赋使命。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真理是我唯一的指路星辰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;叔本华是位语言大师，他的思想形诸冷峻、简明、流畅的文字，每个字词都精确、讲究，但又不失自然；遣词造句莫不打上叔本华鲜明的思想和人格个性的烙印。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;叔本华是一个意识到自己使命的人。借用一个俗套的比喻：如果说海明威是硬汉文学的代表人物，那叔本华就是硬汉哲学的代表人物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;此刻的我站在路的尽头，老迈的头颅已经无力承受月桂花环。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真理可以耐心等待，因为真理是永存的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;意欲是这个世界的本原，它超越于时间、空间和因果律以外，既没有原因，也没有目的；它盲目、不顾一切地争取客体化。我们这个存在于时间、空间，遵循着因果律的复杂多样的现象世界就是意欲的产物和表现，是意欲在时、空中的客体化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;伏尔泰￼说过：“当我们离开这个世界的时候，这个世界还是照样愚蠢和邪恶，跟我们刚来到这个世界的时候所发现的并没有两样。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第一章-基本的划分&#34;&gt;第一章 基本的划分&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;亚里士多德把人生能够得到的好处分为三类——外在之物、人的灵魂和人的身体。现在我只保留他的三分法。我认为决定凡人命运的根本差别在于三项内容，他们是：1)人的自身，即在最广泛意义上属于人的个性的东西。因此，它包括人的健康、力量、外貌、气质、道德品格、精神智力及其潜在发展。2)人所拥有的身外之物，亦即财产和其他占有物。3)人向其他人所显示的样子，这可以理解为：人在其他人眼中所呈现的样子，亦即人们对他的看法。他人的看法又可分为名誉、地位和名声。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们幸福的原因存在于我们的自身之内，而不是自身之外。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人到底生活于何样的世界，首先取决于这个人对这个世界的理解。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在一个思想丰富的人看来是意味深长的事情，对于一个肤浅、头脑庸俗的人来说，却不过是平凡世界里面的乏味一幕而已。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个具忧郁气质的人所看到的悲惨一幕，在一个乐天派的眼里只是一场有趣的冲突，而一个麻木不仁的人则把这视为一件无足轻重的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;正如每个人都囿于自己的皮囊，每个人也同样囿于自己的意识。一个人只能直接活在自己的意识之中。因此，外在世界对他帮助不大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们的幸福在多大的程度上取决于我们自身，即取决于我们的个性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个头脑呆滞的人终其一生都是头脑呆滞，一个笨蛋至死仍是一个笨蛋，哪怕他身处天堂，为天堂美女所簇拥着。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;歌德说：大众，不分贵贱，都总是承认：众生能够得到的最大幸运，只有自身的个性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的健康尤其远远地压倒了一切外在的好处。甚至一个健康的乞丐也的确比一个染病的君王幸运。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一副健康、良好的体魄和由此带来的宁静和愉快的脾性，以及活跃、清晰、深刻、能够正确无误地把握事物的理解力，还有温和、节制有度的意欲及由此产生的清白良心——所有这些好处都是财富、地位所不能代替的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人的自身，亦即当这个人单独一人的时候陪伴自己的、别人对此不能予夺的内在素质，其重要性明显胜于任何他能够占有的财物和他在他人眼中呈现的样子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个人能够享有自己卓越的、与众不同的精神个性所带来的乐趣，那么，普通大众所追求的大部分乐趣对于他来说，都是纯属多余的，甚至是一种烦恼和累赘。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;贺拉斯在谈论自己时说：象牙、大理石、图画、银盆、雕像、紫衣，很多人视它们为必不可少，但是有的人却不为这些东西烦心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;苏格拉底在看到摆卖的奢侈物品时，说道：“我不需要的东西可真不少啊！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们唯一能够做到的就是尽可能充分地利用我们既定的个性。因此，我们应该循着符合我们个性的方向，努力争取适合个性的发展，除此之外则一概避免。所以，我们必须选择与我们个性相配的地位、职业和生活方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们必须避免过高估计自己的能力，尤其在我们年少气盛的时候，这可是我们生活中的暗礁。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注重保持身体健康和发挥个人自身才能比全力投入获得财富更为明智。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的内在拥有对于人的幸福才是最关键的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;彼德尼斯说过：“一个人所拥有的财产决定了这个人在他人眼中的价值。”如果这句话是正确的话，那么，反过来，他人对自己的良好评价，能以各种形式帮助自己获取财产。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章-人的自身&#34;&gt;第二章 人的自身&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一个人的自身比起这个人所拥有的财产或者他所给予别人的表象都更能带给他幸福——这一点我们已经大致上认识到了。一个人本身到底是什么，也就是说，他自身所具备的东西，才是最关键的，因为一个人的自身个性永远伴随着他，他所体验的一切都沾上他的个性色彩。无论他经历何种事情，他首要感受到的是他自己。这一点适用于人们从物质事物中获取的乐趣，而享受精神上的乐趣则更是如此。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个人的自身个性相当低劣，那么所有的乐趣都会变味，就像把价值不菲的美酒倒进被胆汁弄得苦涩难受的嘴里一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因此，除了严重灾祸以外，人们在生活中所遭遇到的事情，不论是好是坏，其重要性远远不及人们对这些事情的感受方式；也就是说，人们对事情的感受能力的本质特性和强弱程度才更为重要。一个人的自身是什么，他的自身拥有到底为何，简而言之，他的个性及其价值，才唯一直接与他的幸福有关。除此之外的一切都只是间接发挥作用，这些作用因此是可以消除的。但个性发挥的作用却永远无法消除。因此，针对他人自身优点而产生的嫉妒是最难消除的；所以这种嫉妒会被很小心、谨慎地掩藏起来。进一步而言，只有感觉意识的构成才是恒久保持的，人的个性每时每刻都持续地发挥着作用；相比较而言，除此以外的任何其他东西都永远只是暂时地、偶尔地产生作用，并且它们都受制于不断发生的各种变化。所以，亚里士多德说过：“我们能够依靠的只是我们的本性，而不是金钱。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人的自身是什么，他的自身拥有到底为何，简而言之，他的个性及其价值，才唯一直接与他的幸福有关。除此之外的一切都只是间接发挥作用，这些作用因此是可以消除的。但个性发挥的作用却永远无法消除。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们能够咬紧牙关承受纯粹从外而至的灾祸，但由我们的自身所招致的不幸却更难忍受；因为运气会有变好的时候，但我们的自身构成却永远不会改变。因此，对于人的幸福起着首要关键作用的，是属于人的主体的美好素质，这些包括高贵的品格、良好的智力、愉快的性情和健康良好的体魄——一句话，“健康的身体加上健康的心灵”(尤维纳利斯语)。所以我们应该多加注意保持和改善这一类的好处，而不是一门心思只想着占有那些身外的财产、荣誉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个愉快的人总有他高兴愉快的原因，原因就是：他是一个愉快的人。一个人的这种愉快气质能够取代一切别的内在素质，但任何其他好处都不可以替代它。一个人或许年轻、英俊、富有和备受人们的尊重，但如果要判断这个人是否幸福，那我们就必须问一问自己：这个人是否轻松愉快？如果他心情愉快，那么，他是年轻抑或年老，腰板挺直抑或腰弯背驼，家财万贯抑或一贫如洗——这些对他而言，都是无关重要的：反正他就是幸福的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“谁经常笑，谁就是幸福的；谁经常哭，谁就是痛苦不幸的。”这是一句再普通不过的话了，但我却一直无法把它忘记，因为这句话包含着朴素的真理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高兴的心情直接就使我们获益。它才是幸福的现金，而其他别的都只是兑现幸福的支票。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们应该着重获得和保持身体健康——愉快的心情就是从健康的身体里长出的花朵。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保持身体健康的手段无非就是避免一切纵欲放荡的行为、令人不快和剧烈的情绪动荡，以及长时间紧张的精神劳累；每天至少在户外进行两个小时的身体快速运动；勤洗冷水浴，饮食有节。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个人每天不进行一定的身体活动，那他就无法保持健康。一切生命活动程序如果要保持运作正常的话，那么，生命活动程序所在的整体也好，作为这一整体里面的一部分也好，都需要得到运动。因此，亚里士多德说得很对：“生命在于运动，生命的本质在于运动。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果人不进行外在的运动——很多人的生活方式都是静止缺少运动的——那他们身体外表的静止就会与内在进行着的运动形成惊人的、有害的不协调。身体内部不停的运动需要得到某种外在运动的配合与支持。上述身体内外之间的不协调就类似于：某种情绪使我们的内在沸腾激动起来，但却不得不竭力压制这种情绪从我们外表流露出来。甚至树木的生长茂盛也必须借助风的吹动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;爱比克泰德[插图]所说的“扰乱人们的不是客观事情，而是人们对客观事情的见解”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;的幸福十占其九依赖于我们的健康。只要我们保持健康，一切也就成了快乐的源泉；但缺少了健康，一切外在的好处——无论这些好处是什么——都不再具有意义，甚至那些属于人的主体的好处，诸如精神思想、情绪、气质方面的优点等，仍会由于疾病的缘故而大打折扣。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最大的愚蠢也就是为了诸如金钱、晋职、学问、声名，甚至为了肉欲和其他片刻的欢娱而献出自己的健康。我们更应该把健康放在第一位。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;超常的感觉能力会引致情绪失衡、周期性的超乎寻常的愉快或者挥之不去的忧郁。天才的条件就是具备超越常人的神经力量——亦即超常的感觉能力。所以，亚里士多德相当正确地认为：所有杰出、优越的人都是忧郁的：“所有那些无论是哲学、政治学、诗歌或其他艺术方面表现出色的人，看上去都是忧郁的”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健康与美貌有着部分的关联，虽然美貌这一属于主体的好处并不会直接带给我们幸福——它只是间接通过留给别人印象的方式做到这点——但美貌仍然是至为重要的，甚至对男人来说也是如此。良好的长相是一纸摊开的推荐书，它从一开始就为我们赢得了他人的心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对生活稍作考察就可以知道：痛苦和无聊是人类幸福的两个死敌，关于这一点，我可以作一个补充：每当我们感到快活，在我们远离上述的一个敌人的时候，我们也就接近了另一个敌人，反之亦然。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人对痛苦的感受能力和对无聊的感受能力成反比，这是由一个人的精神能力的大小所决定的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们对于外在世界发生的各种事情——甚至最微不足道的事情——所表现出的一刻不停的、强烈的关注，也暴露出他们的这种内在空虚。人的内在空虚就是无聊的真正根源，内心空虚之人无时无刻不在寻求外在刺激，试图借助某事某物使他们的精神和情绪活动起来。他们做出的选择真可谓饥不择食，要找到这方面的证明，只须看一看，这些人所沉迷的消遣是多么的贫乏和单调，还有同一样性质的社交谈话，以及许许多多靠门站着的和从窗口往外张望的人。正是由于内在的空虚，他们才追求五花八门的社交、娱乐和奢侈；而这些东西把许多人引入穷奢极欲，然后以痛苦告终。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的精神思想财富越优越和显著，那么留给无聊的空间就越小。这些人头脑里面的思想活泼，奔涌不息，不断更新；它们玩味和摸索着内在世界和外部世界的多种现象；还有把这些思想进行各种组合的冲动和能力——所有这些，除了精神松弛下来的个别时候，都使卓越的头脑免受无聊的袭击。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个精神富有的人会首先寻求没有痛苦、没有烦恼的状态，追求宁静和闲暇，亦即争取过上一种安静、简朴和尽量不受骚扰的生活。因此，一旦对所谓的人有所了解，他就会选择避世隐居的生活；如果他具备深邃、远大的思想，他甚至会选择独处。因为一个人自身拥有越丰富，他对身外之物的需求也就越少，别人对他来说就越不重要。所以，一个人具备了卓越的精神思想就会造成他不喜与人交往。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为在独处的时候，每个人都只能返求于自身，这个人的自身拥有就会暴露无遗。因此，一个愚人背负着自己可怜的自身——这一无法摆脱的负担——而叹息呻吟。而有着优越精神思想禀赋的人却以其思想使所处的死气沉沉的环境变得活泼和富有生气。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;塞尼加所说的话是千真万确的：“愚蠢的人饱受无聊之苦”。同样，耶稣说：“愚人的生活比死亡还要糟糕。”因此，我们可以发现：大致而言，一个人对与人交往的热衷程度，与他的智力的平庸及思想的贫乏成正比。人们在这个世界上要么选择独处，要么选择庸俗，除此以外，再没有更多别的选择了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人的大脑意识是人的身体的寄生物，它寓寄在人的身体之中，而人们辛苦挣来的闲暇，就是为了让人能够自由地享受意识和个性所带来的乐趣。所以，闲暇是人生的精华，除此之外，人的整个一生就只是辛苦和劳作而已。但闲暇给大多数人带来了什么呢？如果不是声色享受和胡闹，就是无聊和浑噩。人们消磨闲暇的方式就显示出闲暇对于他们是何等的没有价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡夫俗子只关心如何去打发时间，而略具才华的人却考虑如何利用时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个不需要或只需要很少进口物品的国家才是最幸运的国家。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个人内在充足、丰富，不需要从自身之外寻求娱乐，那么，这个人就是一个最幸运的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论经历任何事情，每个人最终都得返求于己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论身在何处，我们只能在我们自身寻找或者获得幸福。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;亚里士多德说得无比正确：幸福属于那些能够自得其乐的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论在任何年龄阶段，一个人的自身拥有都是真正的和唯一持久的幸福源泉。我们这个世界乏善可陈，到处充斥着匮乏和痛苦，对于那些侥幸逃过匮乏和痛苦的人们来说，无聊却正在每个角落等待着他们。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对职位、金钱、世人的赞许和垂青等诸如此类的指望，终究不会把这种人诱入歧途，牺牲自己以迎合人们卑微的目的或者低下的趣味。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他经常离开偌大的宫殿，匆匆走向室外露天——因为在屋子里他感到厌烦——直到他突然返回为止，因为他感觉出门并没有好得了多少。又或者，他策马驰往乡村庄园，就好像他的庄园失火，他必须匆忙赶去扑救一样。但刚跨进乡村庄园的门槛，他就无聊地呵欠连连，或者干脆倒头大睡。他要尽力去忘记自己，直到他想返回城市为止。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个具有思想天赋的人在个人生活之外，还过着另一种思想上的生活，后者逐渐成为了他的唯一目标，而前者只是作为实现自己目标的一种手段而已。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="译者序">译者序</h2>
<ul>
<li>
<p>深刻的哲学必然渗透着常人所认为的悲观意味，因为“天地不仁，以万物为刍狗”，它并不以人们的意志为转移。常人只是一厢情愿、出于个人喜好而主观地粉饰、美化生活及其目的。</p>
</li>
<li>
<p>在叔本华奠定名声之前的长达六十多年不获承认的沉寂时期，叔本华从来不曾怀疑过自己的天赋使命。</p>
</li>
<li>
<p>真理是我唯一的指路星辰。</p>
</li>
<li>
<p>叔本华是位语言大师，他的思想形诸冷峻、简明、流畅的文字，每个字词都精确、讲究，但又不失自然；遣词造句莫不打上叔本华鲜明的思想和人格个性的烙印。</p>
</li>
<li>
<p>叔本华是一个意识到自己使命的人。借用一个俗套的比喻：如果说海明威是硬汉文学的代表人物，那叔本华就是硬汉哲学的代表人物。</p>
</li>
<li>
<p>此刻的我站在路的尽头，老迈的头颅已经无力承受月桂花环。</p>
</li>
<li>
<p>真理可以耐心等待，因为真理是永存的。</p>
</li>
<li>
<p>意欲是这个世界的本原，它超越于时间、空间和因果律以外，既没有原因，也没有目的；它盲目、不顾一切地争取客体化。我们这个存在于时间、空间，遵循着因果律的复杂多样的现象世界就是意欲的产物和表现，是意欲在时、空中的客体化。</p>
</li>
</ul>
<h2 id="引言">引言</h2>
<ul>
<li>伏尔泰￼说过：“当我们离开这个世界的时候，这个世界还是照样愚蠢和邪恶，跟我们刚来到这个世界的时候所发现的并没有两样。”</li>
</ul>
<h2 id="第一章-基本的划分">第一章 基本的划分</h2>
<ul>
<li>
<p>亚里士多德把人生能够得到的好处分为三类——外在之物、人的灵魂和人的身体。现在我只保留他的三分法。我认为决定凡人命运的根本差别在于三项内容，他们是：1)人的自身，即在最广泛意义上属于人的个性的东西。因此，它包括人的健康、力量、外貌、气质、道德品格、精神智力及其潜在发展。2)人所拥有的身外之物，亦即财产和其他占有物。3)人向其他人所显示的样子，这可以理解为：人在其他人眼中所呈现的样子，亦即人们对他的看法。他人的看法又可分为名誉、地位和名声。</p>
</li>
<li>
<p>我们幸福的原因存在于我们的自身之内，而不是自身之外。</p>
</li>
<li>
<p>每个人到底生活于何样的世界，首先取决于这个人对这个世界的理解。</p>
</li>
<li>
<p>在一个思想丰富的人看来是意味深长的事情，对于一个肤浅、头脑庸俗的人来说，却不过是平凡世界里面的乏味一幕而已。</p>
</li>
<li>
<p>一个具忧郁气质的人所看到的悲惨一幕，在一个乐天派的眼里只是一场有趣的冲突，而一个麻木不仁的人则把这视为一件无足轻重的事情。</p>
</li>
<li>
<p>正如每个人都囿于自己的皮囊，每个人也同样囿于自己的意识。一个人只能直接活在自己的意识之中。因此，外在世界对他帮助不大。</p>
</li>
<li>
<p>我们的幸福在多大的程度上取决于我们自身，即取决于我们的个性。</p>
</li>
<li>
<p>一个头脑呆滞的人终其一生都是头脑呆滞，一个笨蛋至死仍是一个笨蛋，哪怕他身处天堂，为天堂美女所簇拥着。</p>
</li>
<li>
<p>歌德说：大众，不分贵贱，都总是承认：众生能够得到的最大幸运，只有自身的个性。</p>
</li>
<li>
<p>人的健康尤其远远地压倒了一切外在的好处。甚至一个健康的乞丐也的确比一个染病的君王幸运。</p>
</li>
<li>
<p>一副健康、良好的体魄和由此带来的宁静和愉快的脾性，以及活跃、清晰、深刻、能够正确无误地把握事物的理解力，还有温和、节制有度的意欲及由此产生的清白良心——所有这些好处都是财富、地位所不能代替的。</p>
</li>
<li>
<p>一个人的自身，亦即当这个人单独一人的时候陪伴自己的、别人对此不能予夺的内在素质，其重要性明显胜于任何他能够占有的财物和他在他人眼中呈现的样子。</p>
</li>
<li>
<p>如果一个人能够享有自己卓越的、与众不同的精神个性所带来的乐趣，那么，普通大众所追求的大部分乐趣对于他来说，都是纯属多余的，甚至是一种烦恼和累赘。</p>
</li>
<li>
<p>贺拉斯在谈论自己时说：象牙、大理石、图画、银盆、雕像、紫衣，很多人视它们为必不可少，但是有的人却不为这些东西烦心。</p>
</li>
<li>
<p>苏格拉底在看到摆卖的奢侈物品时，说道：“我不需要的东西可真不少啊！”</p>
</li>
<li>
<p>我们唯一能够做到的就是尽可能充分地利用我们既定的个性。因此，我们应该循着符合我们个性的方向，努力争取适合个性的发展，除此之外则一概避免。所以，我们必须选择与我们个性相配的地位、职业和生活方式。</p>
</li>
<li>
<p>我们必须避免过高估计自己的能力，尤其在我们年少气盛的时候，这可是我们生活中的暗礁。</p>
</li>
<li>
<p>注重保持身体健康和发挥个人自身才能比全力投入获得财富更为明智。</p>
</li>
<li>
<p>人的内在拥有对于人的幸福才是最关键的。</p>
</li>
<li>
<p>彼德尼斯说过：“一个人所拥有的财产决定了这个人在他人眼中的价值。”如果这句话是正确的话，那么，反过来，他人对自己的良好评价，能以各种形式帮助自己获取财产。</p>
</li>
</ul>
<h2 id="第二章-人的自身">第二章 人的自身</h2>
<ul>
<li>
<p>一个人的自身比起这个人所拥有的财产或者他所给予别人的表象都更能带给他幸福——这一点我们已经大致上认识到了。一个人本身到底是什么，也就是说，他自身所具备的东西，才是最关键的，因为一个人的自身个性永远伴随着他，他所体验的一切都沾上他的个性色彩。无论他经历何种事情，他首要感受到的是他自己。这一点适用于人们从物质事物中获取的乐趣，而享受精神上的乐趣则更是如此。</p>
</li>
<li>
<p>如果一个人的自身个性相当低劣，那么所有的乐趣都会变味，就像把价值不菲的美酒倒进被胆汁弄得苦涩难受的嘴里一样。</p>
</li>
<li>
<p>因此，除了严重灾祸以外，人们在生活中所遭遇到的事情，不论是好是坏，其重要性远远不及人们对这些事情的感受方式；也就是说，人们对事情的感受能力的本质特性和强弱程度才更为重要。一个人的自身是什么，他的自身拥有到底为何，简而言之，他的个性及其价值，才唯一直接与他的幸福有关。除此之外的一切都只是间接发挥作用，这些作用因此是可以消除的。但个性发挥的作用却永远无法消除。因此，针对他人自身优点而产生的嫉妒是最难消除的；所以这种嫉妒会被很小心、谨慎地掩藏起来。进一步而言，只有感觉意识的构成才是恒久保持的，人的个性每时每刻都持续地发挥着作用；相比较而言，除此以外的任何其他东西都永远只是暂时地、偶尔地产生作用，并且它们都受制于不断发生的各种变化。所以，亚里士多德说过：“我们能够依靠的只是我们的本性，而不是金钱。”</p>
</li>
<li>
<p>一个人的自身是什么，他的自身拥有到底为何，简而言之，他的个性及其价值，才唯一直接与他的幸福有关。除此之外的一切都只是间接发挥作用，这些作用因此是可以消除的。但个性发挥的作用却永远无法消除。</p>
</li>
<li>
<p>我们能够咬紧牙关承受纯粹从外而至的灾祸，但由我们的自身所招致的不幸却更难忍受；因为运气会有变好的时候，但我们的自身构成却永远不会改变。因此，对于人的幸福起着首要关键作用的，是属于人的主体的美好素质，这些包括高贵的品格、良好的智力、愉快的性情和健康良好的体魄——一句话，“健康的身体加上健康的心灵”(尤维纳利斯语)。所以我们应该多加注意保持和改善这一类的好处，而不是一门心思只想着占有那些身外的财产、荣誉。</p>
</li>
<li>
<p>一个愉快的人总有他高兴愉快的原因，原因就是：他是一个愉快的人。一个人的这种愉快气质能够取代一切别的内在素质，但任何其他好处都不可以替代它。一个人或许年轻、英俊、富有和备受人们的尊重，但如果要判断这个人是否幸福，那我们就必须问一问自己：这个人是否轻松愉快？如果他心情愉快，那么，他是年轻抑或年老，腰板挺直抑或腰弯背驼，家财万贯抑或一贫如洗——这些对他而言，都是无关重要的：反正他就是幸福的。</p>
</li>
<li>
<p>“谁经常笑，谁就是幸福的；谁经常哭，谁就是痛苦不幸的。”这是一句再普通不过的话了，但我却一直无法把它忘记，因为这句话包含着朴素的真理。</p>
</li>
<li>
<p>高兴的心情直接就使我们获益。它才是幸福的现金，而其他别的都只是兑现幸福的支票。</p>
</li>
<li>
<p>我们应该着重获得和保持身体健康——愉快的心情就是从健康的身体里长出的花朵。</p>
</li>
<li>
<p>保持身体健康的手段无非就是避免一切纵欲放荡的行为、令人不快和剧烈的情绪动荡，以及长时间紧张的精神劳累；每天至少在户外进行两个小时的身体快速运动；勤洗冷水浴，饮食有节。</p>
</li>
<li>
<p>如果一个人每天不进行一定的身体活动，那他就无法保持健康。一切生命活动程序如果要保持运作正常的话，那么，生命活动程序所在的整体也好，作为这一整体里面的一部分也好，都需要得到运动。因此，亚里士多德说得很对：“生命在于运动，生命的本质在于运动。”</p>
</li>
<li>
<p>如果人不进行外在的运动——很多人的生活方式都是静止缺少运动的——那他们身体外表的静止就会与内在进行着的运动形成惊人的、有害的不协调。身体内部不停的运动需要得到某种外在运动的配合与支持。上述身体内外之间的不协调就类似于：某种情绪使我们的内在沸腾激动起来，但却不得不竭力压制这种情绪从我们外表流露出来。甚至树木的生长茂盛也必须借助风的吹动。</p>
</li>
<li>
<p>爱比克泰德[插图]所说的“扰乱人们的不是客观事情，而是人们对客观事情的见解”。</p>
</li>
<li>
<p>的幸福十占其九依赖于我们的健康。只要我们保持健康，一切也就成了快乐的源泉；但缺少了健康，一切外在的好处——无论这些好处是什么——都不再具有意义，甚至那些属于人的主体的好处，诸如精神思想、情绪、气质方面的优点等，仍会由于疾病的缘故而大打折扣。</p>
</li>
<li>
<p>最大的愚蠢也就是为了诸如金钱、晋职、学问、声名，甚至为了肉欲和其他片刻的欢娱而献出自己的健康。我们更应该把健康放在第一位。</p>
</li>
<li>
<p>超常的感觉能力会引致情绪失衡、周期性的超乎寻常的愉快或者挥之不去的忧郁。天才的条件就是具备超越常人的神经力量——亦即超常的感觉能力。所以，亚里士多德相当正确地认为：所有杰出、优越的人都是忧郁的：“所有那些无论是哲学、政治学、诗歌或其他艺术方面表现出色的人，看上去都是忧郁的”。</p>
</li>
<li>
<p>健康与美貌有着部分的关联，虽然美貌这一属于主体的好处并不会直接带给我们幸福——它只是间接通过留给别人印象的方式做到这点——但美貌仍然是至为重要的，甚至对男人来说也是如此。良好的长相是一纸摊开的推荐书，它从一开始就为我们赢得了他人的心。</p>
</li>
<li>
<p>对生活稍作考察就可以知道：痛苦和无聊是人类幸福的两个死敌，关于这一点，我可以作一个补充：每当我们感到快活，在我们远离上述的一个敌人的时候，我们也就接近了另一个敌人，反之亦然。</p>
</li>
<li>
<p>一个人对痛苦的感受能力和对无聊的感受能力成反比，这是由一个人的精神能力的大小所决定的。</p>
</li>
<li>
<p>人们对于外在世界发生的各种事情——甚至最微不足道的事情——所表现出的一刻不停的、强烈的关注，也暴露出他们的这种内在空虚。人的内在空虚就是无聊的真正根源，内心空虚之人无时无刻不在寻求外在刺激，试图借助某事某物使他们的精神和情绪活动起来。他们做出的选择真可谓饥不择食，要找到这方面的证明，只须看一看，这些人所沉迷的消遣是多么的贫乏和单调，还有同一样性质的社交谈话，以及许许多多靠门站着的和从窗口往外张望的人。正是由于内在的空虚，他们才追求五花八门的社交、娱乐和奢侈；而这些东西把许多人引入穷奢极欲，然后以痛苦告终。</p>
</li>
<li>
<p>人的精神思想财富越优越和显著，那么留给无聊的空间就越小。这些人头脑里面的思想活泼，奔涌不息，不断更新；它们玩味和摸索着内在世界和外部世界的多种现象；还有把这些思想进行各种组合的冲动和能力——所有这些，除了精神松弛下来的个别时候，都使卓越的头脑免受无聊的袭击。</p>
</li>
<li>
<p>一个精神富有的人会首先寻求没有痛苦、没有烦恼的状态，追求宁静和闲暇，亦即争取过上一种安静、简朴和尽量不受骚扰的生活。因此，一旦对所谓的人有所了解，他就会选择避世隐居的生活；如果他具备深邃、远大的思想，他甚至会选择独处。因为一个人自身拥有越丰富，他对身外之物的需求也就越少，别人对他来说就越不重要。所以，一个人具备了卓越的精神思想就会造成他不喜与人交往。</p>
</li>
<li>
<p>因为在独处的时候，每个人都只能返求于自身，这个人的自身拥有就会暴露无遗。因此，一个愚人背负着自己可怜的自身——这一无法摆脱的负担——而叹息呻吟。而有着优越精神思想禀赋的人却以其思想使所处的死气沉沉的环境变得活泼和富有生气。</p>
</li>
<li>
<p>塞尼加所说的话是千真万确的：“愚蠢的人饱受无聊之苦”。同样，耶稣说：“愚人的生活比死亡还要糟糕。”因此，我们可以发现：大致而言，一个人对与人交往的热衷程度，与他的智力的平庸及思想的贫乏成正比。人们在这个世界上要么选择独处，要么选择庸俗，除此以外，再没有更多别的选择了。</p>
</li>
<li>
<p>人的大脑意识是人的身体的寄生物，它寓寄在人的身体之中，而人们辛苦挣来的闲暇，就是为了让人能够自由地享受意识和个性所带来的乐趣。所以，闲暇是人生的精华，除此之外，人的整个一生就只是辛苦和劳作而已。但闲暇给大多数人带来了什么呢？如果不是声色享受和胡闹，就是无聊和浑噩。人们消磨闲暇的方式就显示出闲暇对于他们是何等的没有价值。</p>
</li>
<li>
<p>凡夫俗子只关心如何去打发时间，而略具才华的人却考虑如何利用时间。</p>
</li>
<li>
<p>一个不需要或只需要很少进口物品的国家才是最幸运的国家。</p>
</li>
<li>
<p>如果一个人内在充足、丰富，不需要从自身之外寻求娱乐，那么，这个人就是一个最幸运的人。</p>
</li>
<li>
<p>无论经历任何事情，每个人最终都得返求于己。</p>
</li>
<li>
<p>无论身在何处，我们只能在我们自身寻找或者获得幸福。</p>
</li>
<li>
<p>亚里士多德说得无比正确：幸福属于那些能够自得其乐的人。</p>
</li>
<li>
<p>无论在任何年龄阶段，一个人的自身拥有都是真正的和唯一持久的幸福源泉。我们这个世界乏善可陈，到处充斥着匮乏和痛苦，对于那些侥幸逃过匮乏和痛苦的人们来说，无聊却正在每个角落等待着他们。</p>
</li>
<li>
<p>对职位、金钱、世人的赞许和垂青等诸如此类的指望，终究不会把这种人诱入歧途，牺牲自己以迎合人们卑微的目的或者低下的趣味。</p>
</li>
<li>
<p>他经常离开偌大的宫殿，匆匆走向室外露天——因为在屋子里他感到厌烦——直到他突然返回为止，因为他感觉出门并没有好得了多少。又或者，他策马驰往乡村庄园，就好像他的庄园失火，他必须匆忙赶去扑救一样。但刚跨进乡村庄园的门槛，他就无聊地呵欠连连，或者干脆倒头大睡。他要尽力去忘记自己，直到他想返回城市为止。</p>
</li>
<li>
<p>一个具有思想天赋的人在个人生活之外，还过着另一种思想上的生活，后者逐渐成为了他的唯一目标，而前者只是作为实现自己目标的一种手段而已。</p>
</li>
<li>
<p>常人却寄希望于身外之物，寄望于从财产、地位、妻子、儿女、朋友、社会人群那里获取生活快乐；他把自己一生的幸福寄托在这些上面。因此，一旦他失去了这些东西，或者对这些东西的幻想破灭，那他的幸福也就随之烟消云散了。</p>
</li>
<li>
<p>一个人自身的生命力才是身体力量和健康的源泉。</p>
</li>
<li>
<p>真正的财富只能是灵魂的内在财富；其他别的东西带来烦恼多于好处。——卢奇安[插图]语</p>
</li>
<li>
<p>能够不受阻碍地培养、发挥一个人的突出才能，不管这种才能是什么，是为真正的幸福。</p>
</li>
</ul>
<h2 id="第三章-人所拥有的财产">第三章 人所拥有的财产</h2>
<ul>
<li>
<p>对于我们认为可能得到的东西，我们每个人都有各自的视线范围。我们的要求不会超出这一视线范围。在我们心目范围之内的具体之物一旦出现，而我们又确信能够得到它，那我们就会感到幸福。但是如果得到这具体之物存在重重困难，他根本就没有得到它的希望和可能，那他就会感觉不幸和痛苦。所有在他视线以外的东西，都不会对他产生任何影响。</p>
</li>
<li>
<p>穷人不会因为得不到巨大的财富而焦虑不安，但富人在计划失算落空的时候，不会考虑到自己已经拥有相当可观的财物，并以此安慰自己。财富犹如海水：一个人海水喝得越多，他就越感到口渴。</p>
</li>
<li>
<p>我们之所以感到不满，原因就在于我们不断试图提高我们的要求，但同时，其他妨碍我们成功的条件因素却保持不变。</p>
</li>
<li>
<p>莎士比亚说的那样：乞丐一旦跨上了坐骑，就非得把马跑死为止。</p>
</li>
<li>
<p>约翰逊博士[插图]却赞同我的意见：“一个习惯于处理钱财的有钱女人，会小心翼翼地花钱。但一个在结婚以后才首次获得支配金钱权力的女人，会在用钱的时候大胆妄为，她简直就是大肆挥霍。”</p>
</li>
<li>
<p>不管怎么样，我都要奉劝那些娶贫穷女子为妻的人不要让她们继承本金，而只是领取一份年金。他们尤其需要注意，不要把孩子的财产交到她们的手上。</p>
</li>
<li>
<p>如果一个人从一开始就拥有足够的财产，能够享有真正的独立自足，也就是说，可以不用操劳就能维持舒适的生活——甚至只够维持本人而不包括他的家人就行——那就是一种弥足珍贵的优越条件；因为这个人就能以此摆脱纠缠人生的匮乏和操劳，他也就从大众的苦役中获得了解放——而这苦役本是凡夫俗子的天然命运。只有得到命运如此垂青和眷顾的人，才可以是真正自由的人。这样的人才成为自己的主人，是自己的时间和自己的力量的主宰。每天早晨他就可以说上一句：“今天是属于我的。</p>
</li>
<li>
<p>如果一个人继承了遗产，但却又不曾做出任何上述事情——哪怕他只是尝试这样做，或者只是做出了点滴的成绩——或者，他甚至没有试图细致地研究某一门学问，以支持和推动这门学问的发展；那么，这样的人就只是一个可耻的无所事事者。这种人也不会感到幸福，因为免除了贫穷只会把他引至人生的另一个痛苦极端——无聊。无聊是那样的折磨人，假如贫穷的处境使他有事可做的话，他反倒会生活得更加幸福。百无聊赖、无所事事很快就会把他引向奢侈挥霍，由此他就被剥夺了他那不配享受的优越条件。许多有钱人到最后沦为贫困，就是由于有钱就挥霍殆尽，目的只不过是为了从压迫他们的无聊那里谋求片刻的喘息。</p>
</li>
<li>
<p>任何人都不要抱怨卑鄙和下流，因为只有卑鄙和下流才是威力无比的。</p>
</li>
<li>
<p>“我们在这世上时日不多，不值得在可鄙的坏蛋的脚下爬行。”</p>
</li>
<li>
<p>拥有者也还是在某种程度上成为别人的拥有物。</p>
</li>
</ul>
<h2 id="第四章-人所展现的表象">第四章 人所展现的表象</h2>
<ul>
<li>
<p>我们所展现的表象——这也就是我们的存在在他人心目中的样子——通常都被我们过分看重，这是我们人性的一个特殊弱点所致，虽然稍作简单的思考我们就可以知道，他人的看法就其本身来说，对我们的幸福并非至关重要。</p>
</li>
<li>
<p>使一个渴求赞语的人闷闷不乐或者兴高采烈的话语，却是多么的无足轻重！——贺拉斯语</p>
</li>
<li>
<p>正确评估自己本身的价值和看待别人对自己的看法，对我们的幸福大有裨益。</p>
</li>
<li>
<p>在大多数人的头脑里面，都是些肤浅的思想和渺小的念头；这些人目光狭窄，情操低下；他们的见解谬误百出、是非颠倒——当我们了解到这些以后，我们就会逐渐对他人的评论淡然处之了。另外，从我们的自身经历就可以知道，一旦一个人不必惧怕别人，或者当一个人相信自己说的话不会传到被议论的对象的耳朵时，他就会不时地以轻蔑的方式议论别人。只要我们听一听一帮蠢人是如何带着轻蔑的口吻议论最卓越、伟大的人物，我们就更加不会对他人的看法耿耿于怀了。我们也就会知道，要是太过于看重别人的看法，那就是抬举他们了。</p>
</li>
<li>
<p>他并不从自己的真正自我，而是从自己在他人头脑中的表象那里得到满足和快感，那他就是相当不幸的。</p>
</li>
<li>
<p>每一个人首先是并且实际上确实是寄居在自身的皮囊里，而不是活在他人的见解之中；因此，我们现实的个人状况——这种状况受到健康、性情、能力、收入、女人、孩子、朋友、居住地点等诸因素的决定性的影响——对于我们的幸福，其重要性百倍于别人对我们的随心所欲的看法。</p>
</li>
<li>
<p>几乎所有的人毕生不息地奋斗，历经千难万险，最终的目标就是让别人对自己刮目相看。人们拼命追逐官位、头衔、勋章，还有财富，其首要目的都是为了获取别人对自己更大的敬意，甚至人们掌握科学、艺术，也是从根本上出于同样的目的。所有这些都只不过令人遗憾地向我们显示了人类的愚蠢已经达到多么厉害的程度。把别人的意见和看法看得太过重要是人们常犯的错误。</p>
</li>
<li>
<p>从惊恐、奴性地顾忌“别人将会怎么说呢？”一直到古罗马护民官维吉尼斯剑插女儿的心脏这一极端的例子。还有就是一些人为了身后的荣誉，不惜牺牲个人的财富、安宁、健康，甚至生命。这一错误给那些要统治人或者驾驭人的人提供了一个便利手段。</p>
</li>
<li>
<p>一个人已经可以看见那令人毛骨悚然的死亡了，此身之后，将是那漫漫无涯的永恒。但此时此刻，他并不关心别的，而只是专心一意地要给那群凑热闹的乌合之众留下一个好的印象！</p>
</li>
<li>
<p>许多迷惘的罪犯都把应该完全用于拯救自己灵魂的最后时间花在撰写和默记一篇简短的演说辞上面——他们就打算站在绞刑架的梯子上面宣读这篇演说。</p>
</li>
<li>
<p>极端的例子往往最清晰地说明事情。</p>
</li>
<li>
<p>在大多数的情况下，我们的忧心、烦恼、操劳、愤怒、恐惧都确实与别人对我们的看法有关。</p>
</li>
<li>
<p>人们头脑里面的认识和见解，绝大部分都是虚假荒唐和黑白颠倒的。</p>
</li>
<li>
<p>虚荣和骄傲之间的差别在于：骄傲就是确信自己拥有某一方面的突出价值，但虚荣则尽力让别人确信自己拥有某一方面的突出价值。</p>
</li>
<li>
<p>只有对自己的突出长处和非凡价值有一种发自内在的、坚定的和不可动摇的确信的人，才可以真正骄傲得起来。</p>
</li>
<li>
<p>虚荣就是博取他人的赞许，以便在这一基础上建立起对自己的良好评价，但对自己有一坚实的良好评价却已经是骄傲的前提条件了。</p>
</li>
<li>
<p>谦虚是美德——这一句话是蠢人的一项聪明的发明；因为根据这一说法每个人都要把自己说成像一个傻瓜似的，这就巧妙地把所有人都拉到同一个水平线上。这样做的结果就是在这世界上，似乎除了傻瓜之外，再没别样的人了。</p>
</li>
<li>
<p>他很快就认识到问题的关键并不在于他认为自己是一个有用的人，而在于别人是否也这样认为。</p>
</li>
<li>
<p>在某种意义上，名誉和声望相比，名誉的特性是否定的，而声望则具有一种肯定的性质。因为名誉并不意味着别人认为：某某人具有某种特别的、为他的主体所独有的品质；名誉只是说明：某某人并没有欠缺每一个人根据规则都必须具备的品质。因此，名誉只是表明这一个人不是一个例外。但声望却表明这个人是一个例外。声望是要去争取的，相比之下，名誉只需要保有就行了。</p>
</li>
<li>
<p>我们喜爱别人的敬重并非因为敬重本身，而只是因为人们的敬重所带给我们的好处。</p>
</li>
<li>
<p>尽管一个人的所作所为是公正的、无私的和高贵的，他的心至为纯净，头脑也卓越不凡，但只要随便任何一个人愿意去侮辱他，他就随时有可能失去他的荣誉。这个中伤者可能只是一个毫无价值的恶棍，一个愚蠢到极点的饶舌者，一个百无聊赖的浪荡子，一个赌徒——一句话，一个不值得我们去理会和计较的人。但他在中伤别人的时候，却未必违反了骑士荣誉的法则。在大多数情况下，正是这一类人喜欢做侮辱别人的事情。正如塞尼加所说的，“一个人越可鄙、越可笑，他就越喜欢摇舌中伤。”此话极正确。这种人最容易被我们上文所描绘的那种人所激怒，因为相反对立的两类人都各自憎恨对方；另外，看到别人有着明显的优势只会引起毫无价值的人的无声怨恨。</p>
</li>
<li>
<p>一旦有人诋毁这些优越的人，亦即把卑劣的品质强加在他们身上，那么，这个人的诋毁在当下就是一个客观真实的、有根据的评判，一个具有确定效力的法令。事实上，它以后永远都会是真实的和有效的，除非人们旋即用鲜血把这种诋毁和侮辱抹掉。这也就是说，如果被侮辱者容忍这一侮辱扣在自己的头上，那么，被侮辱者（在众人的眼里是个“荣誉之士”）就是侮辱者（这或许是一个最低劣的人）所说成的那个样子了。这样，他就会遭到“荣誉之士”的彻底鄙视。人们躲避他如同瘟疫一样。</p>
</li>
<li>
<p>只要别人说中了我们，那么，一个轻微的暗示所造成的伤害都更甚于一个严厉的、但却没有事实根据的指责。</p>
</li>
<li>
<p>恶言秽语就像教堂的队列，永远返回它们的出发点。</p>
</li>
<li>
<p>当我们偶尔听到一个人用嘴咬了另一个人，我们就会感到震惊，相比之下，动手动脚打架却是一件完全自然的事情。</p>
</li>
<li>
<p>谁要是不接受理智，那他就必须接受棍棒。如果一个人既没有财产可供交付罚金，同时，剥夺他的自由也不会给人们带来益处——因为人们需要他的工作效劳——那么，对这个人施以适量的体罚，则是一件既明智又合乎自然的事情。</p>
</li>
<li>
<p>决斗这种愚蠢的行为却以一本正经的方式进行，它不仅仅为人们提供了笑料。</p>
</li>
<li>
<p>不要随时听任别人的随心所欲，为其野蛮、愚蠢或者恶毒付出代价，赔上自己的身体和生命。两个少不更事的青年人，相互间一旦出言不逊，就头脑发热，不惜付出鲜血、健康，或者生命。这是骇人听闻和令人羞愧的。</p>
</li>
<li>
<p>虽然嫉妒让你的同时代人沉默，但以后总会有人不带恶意，也不带恭维地作出判断。</p>
</li>
<li>
<p>对别人的成就保持恶意的沉默，采取视而不见的态度。他们以这种方式不让公众看到优秀的事物，这更有利于那些低微、拙劣的东西。他们熟练运用这一艺术丝毫不亚于我们的当代人。嫉妒使他们和我们这个时代的无赖们都闭上了嘴巴。一般来说，名声到来越迟，维持的时间就越长久，因为任何优秀的东西都只能慢慢地成熟。流芳后世的名声就好比一株慢慢成长起来的橡树。那得来全不费工夫、但却只是昙花一现的名声，只是寿命不过一年的快速长成的植物；而虚假的名声则是迅速茁壮起来，但却很快就被连根拔掉的杂草。</p>
</li>
<li>
<p>一个人越属于他的后世，亦即属于整个人类大众，那他就越不为自己的时代所了解，因为他的贡献对象不仅是他的时代，他为之奉献的是整个人类。</p>
</li>
<li>
<p>人类精神思想的最高级的产物一般都得不到人们的欢迎，这种情况一直维持到优秀的思想者的出现——他们感受到了这些作品发出的呼唤，并使这些作品获得了威望。</p>
</li>
<li>
<p>每一个人都只能理解和欣赏与自己的本性相呼应的东西。</p>
</li>
<li>
<p>狗对于狗来说，当然才是漂亮的生物。牛对牛也是这样，猪对于猪、驴子对驴子，莫不如此。</p>
</li>
<li>
<p>就算是最强有力的手臂，如果甩出的是一件很轻的物体，那也无法给予这轻物足够的力量让它飞得很远，并且有力地击中目标。这轻物很快就会坠落地面，因为这轻物本身没有物质性的实体以接收外力。美妙和伟大的思想、天才创作的巨作也会遭遇同样的情形——如果接受这些思想的都只是弱小、荒诞的头脑。各个时代的智者们都曾为此齐声哀叹。</p>
</li>
<li>
<p>耶稣说：“向一个愚人说故事，就像跟一个睡着觉的人说话一样。故事讲完了，他会问，你说的是什么？”</p>
</li>
<li>
<p>最妙的话语，被笨蛋听了，也会招来讽刺。</p>
</li>
<li>
<p>你的话没有任何结果，众人都呆滞无言，保持良好的心情吧！石头扔进沼泽地，是不会弄出涟漪的。</p>
</li>
<li>
<p>利希腾贝格说道，“当一个脑袋和一本书互相碰撞，而只发出空洞的闷响，这空响难道就总出自书本？”他还说，“书本身就是一面镜子，一只猴子看镜子的时候，里面不会出现福音圣徒。”</p>
</li>
<li>
<p>最好的礼物通常最不被人赞叹；世上的大部分人，把最坏的视为最好。这一糟糕的状况司空见惯，但人们如何避免这种不幸？我怀疑能否从我们的世界根除这一不幸，世上只有唯一的补救之法，但它却无比困难：愚人必须获得智慧——但这是他们永远无法做到的，他们也不会懂得事物的价值。作出判断的只是他们的眼睛，而不是脑袋，他们赞扬微不足道的东西，只是因为他们从来不曾懂得什么才是好的。</p>
</li>
<li>
<p>优秀人物很少被人发现，他们能够获得人们的承认和赏识就更是稀奇的事情。人们除了智力的不足，还有一种道德上的劣性：那就是嫉妒。一旦一个人获得了名声，那名声就会使他处于高于众人的位置，而别人也就因此被相对贬低了。所以，每一个作出非凡成绩和贡献的人所得到的名声是以那些并不曾得到名声的人为代价的。</p>
</li>
<li>
<p>我们给予别人荣誉的同时，也就降低了我们自己。</p>
</li>
<li>
<p>通过创作作品而获取名声的难度与这一作品的读者群的数目成反比，个中的理由显而易见。</p>
</li>
<li>
<p>名声总是逃离追逐它的人，但却会尾随对它毫不在意的人。</p>
</li>
<li>
<p>一个人只要做出某一不端的行为，他的名誉就一去不复返了。</p>
</li>
<li>
<p>只有那些在任何情况下都能保有其价值——在这里，亦即自身直接拥有的东西——才具备绝对的价值。因而，伟大的心和伟大的头脑所具备的价值和幸福全在于它们的自身。具有价值的不是名声，而是藉以获得名声的东西——它才是实在的，而以此获得名声只是一种偶然意外而已。</p>
</li>
<li>
<p>正如光本身是看不见的，除非它经过物体的折射，同样，一个人所具有的卓越之处只是通过获得名声才变得无可争议。不过，名声这种外部显示可不是万无一失的，因为盛名之下，其实可能难副。</p>
</li>
<li>
<p>一些人声名显赫，另外的一些人却理应声名显赫。</p>
</li>
<li>
<p>如果一个人是否具备价值只能取决于这个人在别人的眼中所呈现的样子，那这样的生存将是悲惨的。如果一个英雄或者天才所具有的价值真的只在于他所拥有的名声，亦即在于他人对他的首肯，那么，他的一生就确实够悲惨的了。但真实的情形却恰恰不是这样。每个人都根据其自身本性而生存，因此，他首先是以自身的样子为了自己而活。对于一个人来说，他的自身本性，不管其存在方式为何，才是最重要的东西。如果这个人的自身本性欠缺价值，那他这个人也就欠缺价值。相比之下，他在别人头脑中的形象却是次要和枝节的东西，它受制于偶然，对他本人也只能施加间接的影响。除此之外，大众的头脑是可怜、凄凉的舞台，真正的幸福不可能在这里安家落户，只有虚幻不实的幸福才会在这里栖身。</p>
</li>
<li>
<p>从幸福学的角度看，名声只是喂养我们的骄傲和虚荣心的异常稀罕、昂贵的食物；除此之外，它就什么都不是了。</p>
</li>
<li>
<p>人们重视别人对自己的看法的程度，是完全失去比例和不合理智的。</p>
</li>
<li>
<p>我们心情愉快就在于有可供与我们比较并使我们可以看重自己的人。</p>
</li>
<li>
<p>最虚荣的国家总把荣耀挂在嘴上，并毫不迟疑地把它视为激励人们做出非凡的实事和创作出伟大著作的主要原动力。</p>
</li>
<li>
<p>名声只是一种次要之物，它只不过是成绩贡献的映象、表征、回音；并且，能够获取赞叹之物比赞叹更有价值。所以，让人们得到幸福的并不是名声，而是藉以获得名声的东西</p>
</li>
<li>
<p>我们羡慕一个伟人，并不是因为这个人被那些缺乏判断力、经常受到迷惑的大众视为伟人，而是因为这个人确实就是一个伟人。他的最大幸福并不在于后世的人会知道他，而在于在他那里我们看到了那些耐人琢磨、值得人们永久保存的思想。</p>
</li>
<li>
<p>假如他人的赞叹才是最重要的，那么，引起赞叹的东西的重要性就配不上赞叹本身了。</p>
</li>
<li>
<p>最真实的名声，亦即流传身后的名声，并不为这名声的主人知晓，但人们仍然会认为他是一个幸运的人。</p>
</li>
<li>
<p>流芳后世的名声的价值在于这一名声的实至名归，这才是这种名声的唯一报酬。</p>
</li>
<li>
<p>对于我们凡夫俗子来说，名声和青春加在一起简直太奢侈了。</p>
</li>
<li>
<p>我们也可以把名声比作冬梨——它们在夏天生长，但在冬天供人享用。</p>
</li>
<li>
<p>我们把全部的青春力量都倾注到著作里面，这些著作是不会随着我们一起老去的。</p>
</li>
<li>
<p>这犹如一个探险家抵达一处偏僻、不见人烟的地方：他的所见而不是他的所想就会使他成名。这条成名途径还有一个很大的优势：传达自己的所见较之于传达自己的所想难度更小；对于理解他人的所见也较理解他人的所想更加容易。所以，讲述见闻的作品比传达思想的著作能够拥有更多的读者，因为，正如阿斯姆斯所说的：一个人去旅行，就能讲故事。</p>
</li>
<li>
<p>到海外旅行的人只是变换了气候而已，他们并不曾改变思想意识。</p>
</li>
<li>
<p>他们应该尽可能地扩展视野，同时兼顾多个方向，以避免朝着一个方向走得太远而迷失在某一专门的、少为人知的领域里面。也就是说，他不要太过纠缠于某一学科之中的某一专门领域，更不用说去钻那些琐碎的牛角尖了。他不需要为了抛开那为数众多的竞争者而投身于偏僻的学科。每个人都能看得见的事物其实都可以成为他研究的素材。他可以对这些素材进行全新的、正确的和真实的组合。</p>
</li>
</ul>
<h2 id="第五章-建议和格言">第五章 建议和格言</h2>
<ul>
<li>
<p>理性的人寻求的不是快乐，而只是没有痛苦。</p>
</li>
<li>
<p>所有的快乐，其本质都是否定的，而痛苦的本质却是肯定的。</p>
</li>
<li>
<p>假如我们整个身体健康无恙，但只有一小处地方受伤或者作痛，那我们身体的整体健康并不会进入我们的意识，我们的注意力始终只集中在那疼痛的伤处。我们生活中的总体舒适感觉就会因这一小处伤痛而烟消云散。</p>
</li>
<li>
<p>尽管各样事情都按照我们的想法进行和发展，但只要有一件事情违反了我们的意愿——尽管这只是一件微不足道的事情——这一并不如意的事情就会进入我们的头脑；我们就会总是惦记着这一件事情，而不会想到其他更重要的、已经如我们所愿发生了的事情。</p>
</li>
<li>
<p>所谓“幸福的生活”，实应被理解为“减少了许多不幸的生活”，亦即还能勉强忍受的生活。确实，生活并不是让我们享受的，我们必须忍受它和克服它。</p>
</li>
<li>
<p>一个人所能得到的最好运数就是生活了一辈子但又没有承受过什么巨大的精神上或者肉体上的痛苦，而不是曾经享受过强烈无比的欢娱。</p>
</li>
<li>
<p>缺乏痛苦的程度是衡量一个人生活是否幸福的标准。</p>
</li>
<li>
<p>我们不应该以痛苦为代价去购买快乐，甚至只是冒着遭受痛苦的风险去这样做也不行，否则，我们就会为了那些否定、因而是虚幻的东西而付出了肯定和实在的东西。</p>
</li>
<li>
<p>真相总是姗姗来迟。</p>
</li>
<li>
<p>如果一个人试图摆脱某种祸害，那他总是清楚地知道自己的目的；但如果一个人总想着得到比自己已经拥有的更好的东西，那他就是相当盲目的。</p>
</li>
<li>
<p>更好是好的敌人。</p>
</li>
<li>
<p>我们都满怀对幸福和快乐的希冀来到这一世上，并且抱着要一一把它们化为现实的愚蠢希望。</p>
</li>
<li>
<p>没有任何一样东西是属于我们的，一切都归命运所有，因为命运不但对我们的财产物品、老婆孩子拥有无可争辩的权利；甚至我们的手脚、耳目、脸部中央的鼻子也归属于它。无论如何，用不了多长时间，我们就会获得体验，就会明白幸福和快乐只不过是一层晨雾，我们只能从远处看到它，一旦走近，它就消失不见了。</p>
</li>
<li>
<p>我们对于幸福的过分期待毁坏了这世上的一切，毁坏的程度与我们做梦的程度相一致。谁要是摆脱了过分的期待，除了自己已经拥有的以外，不再奢望更多，那么，他就能够安然无恙地生活下去</p>
</li>
<li>
<p>没有什么人、事值得我们过分的操心。</p>
</li>
<li>
<p>如果你失去一个世界，不要为此悲伤，因为这是微不足道的；如果得到一个世界，不要为此高兴，因为这是微不足道的；苦乐得失都会过去都会离开这个世界，因为这都是微不足道的。</p>
</li>
<li>
<p>欢乐拒绝在喜庆的场合露面。</p>
</li>
<li>
<p>真正优秀的聚会无论在哪里都必然是相当小型的。</p>
</li>
<li>
<p>教堂的钟声、神父的服饰、虔诚的表情、滑稽的举动——这些都是门面工夫，都是虔诚的假面。</p>
</li>
<li>
<p>衡量一个人是否幸福，我们不应该向他询问那些令他高兴的赏心乐事，而应该了解那些让他烦恼操心的事情；因为烦扰他的事情越少、越微不足道，那么，他也就生活得越幸福，因为如果微不足道的烦恼都让我们感受得到，那就意味着我们正处于安逸、舒适的状态了——在很不幸的时候，我们是不会感觉到这些小事情的。</p>
</li>
<li>
<p>我们要提醒自己不要向生活提出太多的要求，因为如果这样做，我们幸福所依靠的基础就变得太广大了。依靠如此广大的基础才可以建立起来的幸福是很容易倒塌的，因为遭遇变故的机会增多了，而变故无时不在发生。在基础方面，我们幸福的建筑物与楼房建筑物正好相反，后者因其广大的基础而变得牢固。因此，避免重大祸害的最有效途径就是考虑到我们的能力、条件，尽可能地减低我们对生活的要求。</p>
</li>
<li>
<p>一般来说，人们最常做的一件大蠢事就是过分地为生活未雨绸缪——无论这种绸缪准备是以何样的方式进行。</p>
</li>
<li>
<p>我们埋头做事，到了目标实现的时候，我们所取得的成果已经不再适合我们的需要了；或者，我们成年累月为某一工作做准备，但这些准备工夫不为人知地消耗了我们的精力，到头来，我们再也无法进行计划中的工作了。</p>
</li>
<li>
<p>当旅行者迈步走近看到的景物时，景物的形状与他从远处看见的并不一样；这些景物就好像随着旅行者的靠近而变换了形状。我们的愿望与这种情形尤其相似。通常，我们最终获得的并不是我们当初所追求的——这最终获得的东西甚至比当初所追求之物还要好。还有就是，我们在刚开始的时候选取了某一条途径追求某一样东西，但却一无所获，但在另外的一条途径反而找到了它。</p>
</li>
<li>
<p>在这世界上我们能够得到的只是教诲，而不是幸福。因此，他们习惯和满足于以希望换取思想和认识</p>
</li>
<li>
<p>除了学问，我感觉不到任何别的快乐。</p>
</li>
<li>
<p>我们也可以说，这与那些炼金术士所遭遇的情形一样：他们在只是寻找金子的过程中，却发现了火药、瓷器、医药，甚至大自然的规律。</p>
</li>
<li>
<p>一个人的个性越独特、越具价值和意义，那么，他就越有必要不时地认清自己生命总体发展的大致脉络和自己的计划，这对他大有好处。</p>
</li>
<li>
<p>如果一个人具备非凡的个性，那么，对自己的生命计划有一个大概的了解，能够比任何一切都更有效地增强自己的勇气，振作、鼓足信心，激励自己行动起来，避免走进弯路。</p>
</li>
<li>
<p>只要我们仍然置身其中，那我们的行事就只能总是遵循我们那固定不变的性格构成，受着动机的左右和我们能力的制约。</p>
</li>
<li>
<p>我们的行事自始至终都有其必然性，我们在每一刻都做着我们在那一刻认为合理和适当的事情。</p>
</li>
<li>
<p>当我们忙于从事伟大的事业或者创作不朽的著作时，自己并不会清楚地意识到这一点，我们只是觉得完成这些工作合乎自己当时的目标和打算，它们也就是当时合理的和该做的事情。</p>
</li>
<li>
<p>许多人太过沉迷于现在，这些是无忧无虑、漫不经心的人；也有的人则更多地活在将来，他们则是谨小慎微、忧心忡忡的杞人。人们很少能够在处理现在和将来两者当中把握一个恰到好处的尺度。</p>
</li>
<li>
<p>永远不要忘记：现在才是唯一真实和确切的；相比之下，将来的发展几乎总是与我们的设想有所不同，甚至过去也与我们对过去的回想有所出入。</p>
</li>
<li>
<p>距离相隔远了，物体在人的视觉里就缩小了，但却在头脑思想里放大了。</p>
</li>
<li>
<p>不要由于在过去我们的希望落空现在就变得忧郁寡欢，或者为了将来操心伤神以致败坏现时。由于懊恼过去和操劳将来，我们拒绝美好的现在时光或者任意地糟蹋它，这可是彻头彻尾的愚蠢做法。</p>
</li>
<li>
<p>无论事情多么悲痛，我们必须让过去的事情成为过去，或许我们难以做到这一点，但我们必须降伏我们的乖僻心情。</p>
</li>
<li>
<p>应该把每一天都视为一段特别的生活。</p>
</li>
<li>
<p>我从不寄托希望在任何事情</p>
</li>
<li>
<p>只有当人挣脱了所有各种可能的期望，从而返回赤裸和冰冷的存在本身，人才能领会到精神上的安宁，而精神的安宁却是幸福的构成基础。</p>
</li>
<li>
<p>我们应该永远记住今天只有一次，它永远不会再来。但是在我们的想象里，今天又将在明天重现。其实，明天已是另外的一天，它也只来一次。我们忘记了每一天的日子都是生命中的不可缺少的，因此也是无可替代的一个组成部分；我们只是把一天的日子视为在生命的名目下所包括的东西，正如在一个集合概念下面所包含的各个单一事物。在我们患病、困顿的时候，每当念及在这之前没有疾病和痛苦的时光，就陡然让人心生羡慕——那些美好的日子就犹如不曾得到我们珍惜的朋友，它们简直就是失去了的天堂。在健康、美好的日子里，这种情形应被我们时刻牢记在心，这样，我们就会倍加珍惜和享受此刻的好时光。但我们却不加留意地度过我们美好的日子，只有到了糟糕的日子真正来临的时候，我们才会想念和渴望曾经有过的美好日子。我们脸带愁容，许多欢乐愉快的时光未加品尝和咀嚼就过去了，直到以后日子变得艰难和令人沮丧的时候，我们才徒劳地为逝去了的好日子而叹息。我们不能这样做。我们应该珍惜每一刻可以忍受的现在、包括最平凡无奇的、我们无动于衷地听任其逝去，甚至迫不及待地要打发掉的日子。</p>
</li>
<li>
<p>此刻时光匆匆消逝化作神奇的往昔，从此以后，它就存留在我们的记忆里，照射出不朽之光芒。在将来，尤其到了糟糕恶劣的日子，我们的记忆就会拉起帷幕：此刻时光就会成为我们内心眷恋和思念的对象。</p>
</li>
<li>
<p>所有局限和节制都有助于增进我们的幸福。我们的视线、活动和接触的范围圈子越狭窄，我们就越幸福；范围圈子越大，我们感受的焦虑或者担忧就越多。因为随着这一范围圈子的扩大，我们的愿望、恐惧、担忧也就相应增加。</p>
</li>
<li>
<p>在儿童期，我们的视野只局限于周围的环境和狭窄的关系。到了青年期，视野明显扩大了；进入成人期以后，我们的整个生命轨迹，甚至最遥远的联系、别的国家和民族都被纳入我们的视线之内；在老年期，人们的目光所及包括了后代一辈。所有局限制约——甚至精神方面的——都有助于增进我们的幸福。原因就在于意欲受到的刺激越少，我们的痛苦也就越少。</p>
</li>
<li>
<p>人们为了驱赶无聊，不择手段寻求娱乐、社交、奢华、赌博、酗酒，等等，这些给人们带来的只是各式各样的懊丧、不幸以及金钱损失。</p>
</li>
<li>
<p>人们无事可干的时候难以保持平静。</p>
</li>
<li>
<p>，每过一段时间，当我们需要着力操持实际生活的时候，暂时完全中断精神活动会有好处。</p>
</li>
<li>
<p>一个人的生活经历可被视为一本书的正文，而对生活经历的咀嚼和认识则是对正文做出的解释。如果一个人有太多的反省和认识，但生活经历却又很少，那就好比只有两行正文，但注解却有四十行之多。如果一个人阅历很广，但却对此甚少反省，获得的认识又不多，这样，就好比一种比邦迪那版丛书——里面没有注解，正文的许多意思都不甚了了。</p>
</li>
<li>
<p>一个人在晚上睡觉前，应该详细地逐一检查自己在白天的所作所为。如果一个人耽于世俗事务或者纵情于感官享受，对过去了的事情不加回想，而只是随波逐流地生活，那么，他对生活就欠缺清晰、周密的思考，情感就会杂乱无章，思想也夹杂着某种程度的混乱不清。</p>
</li>
<li>
<p>我的拥有就在我身——这是构成幸福的最重要的内容。</p>
</li>
<li>
<p>幸福属于那些容易感到满足的人</p>
</li>
<li>
<p>获取幸福的错误方法莫过于追求花天酒地的生活，原因就在于我们企图把悲惨的人生变成接连不断的快感、欢乐和享受。这样，幻灭感就会接踵而至；与这种生活必然伴随而至的还有人与人的相互撒谎和哄骗。</p>
</li>
<li>
<p>人们聚会的场面越大，就越容易变得枯燥乏味。只有当一个人独处的时候，他才可以完全成为自己。谁要是不热爱独处，那他也就是不热爱自由，因为只有当一个人独处的时候，他才是自由的。</p>
</li>
<li>
<p>社交聚会要求人们做出牺牲，而一个人越具备独特的个性，那他就越难做出这样的牺牲。</p>
</li>
<li>
<p>一个人逃避、忍受抑或喜爱独处是和这一个人自身具备的价值恰成比例。因为在独处的时候，一个可怜虫就会感受到自己的全部可怜之处，而一个具有丰富思想的人只会感觉到自己丰富的思想。</p>
</li>
<li>
<p>一个人只会感觉到自己的自身。</p>
</li>
<li>
<p>一个人在大自然的级别中所处的位置越高，那他就越孤独，这是根本的，同时也是必然的。</p>
</li>
<li>
<p>社交聚会之所以会对才智卓越之士造成伤害，就是因为每一个人都获得了平等的权利，而这又导致人们对任何事情都提出了同等的权利和要求，尽管他们的才具参差不一。</p>
</li>
<li>
<p>放弃这种社交聚会以换回独处，那我们就是做成了一桩精明的生意。</p>
</li>
<li>
<p>当时髦进入时，常识也就引退了。</p>
</li>
<li>
<p>一个人只能与自己达致最完美的和谐，而不是与朋友或者配偶，因为人与人之间在个性和脾气方面的差异肯定会带来某些不相协调，哪怕这些不协调只是相当轻微。</p>
</li>
<li>
<p>完全、真正的内心平和和感觉宁静——这是在这尘世间仅次于健康的至高无上的恩物——也只有在一个人孤身独处的时候才可觅到；而要长期保持这一心境，则只有深居简出才行。</p>
</li>
<li>
<p>一个完全依靠自己，一切称得上属于他的东西都存在于他的自身的人是不可能不幸福的。</p>
</li>
<li>
<p>一个人的自身拥有越多，那么，别人能够给予他的也就越少。</p>
</li>
<li>
<p>平庸的人却恰恰相反，他们喜好与人交往，喜欢迁就别人。这是因为他们忍受别人要比忍受他们自己更加容易。</p>
</li>
<li>
<p>在这世上，真正具备价值的东西并不会受到人们的注意，受人注意的东西却往往缺乏价值。每一个有价值的、出类拔萃的人都宁愿离群索居——这就是上述事实的证明和结果。</p>
</li>
<li>
<p>我们可以把平庸之辈比之于那些俄罗斯兽角乐器。每只兽角只能发出一个单音，把所需的兽角恰当地凑在一起才能吹奏音乐。</p>
</li>
<li>
<p>愚蠢的人饱受其愚蠢所带来的疲累之苦</p>
</li>
<li>
<p>交往人群所欠缺的质量只能在某种程度上通过人群的数量得到弥补。</p>
</li>
<li>
<p>人的群居生活可被视为人与人相互之间的精神取暖，这类似于人们在寒冷的天气拥挤在一起以身体取暖。</p>
</li>
<li>
<p>一个人对社会交往的热衷程度大致上与他的精神思想的价值成反比。</p>
</li>
<li>
<p>孤独为一个精神禀赋优异的人带来双重的好处：第一，他可以成为自己；第二，他用不着和别人在一起。</p>
</li>
<li>
<p>我们承受所有不幸皆因我们无法独处</p>
</li>
<li>
<p>一个人如果自身具备足够的内涵，以致根本没有与别人交往的需要，那确实是一大幸事；因为几乎所有的痛苦都来自与人交往，我们平静的心境——它对我们的幸福的重要性仅次于健康——会随时因为与人交往而受到破坏。</p>
</li>
<li>
<p>节制与人交往会使我们心灵平静。</p>
</li>
<li>
<p>在这世上，不值得我们与之交谈的人比比皆是。</p>
</li>
<li>
<p>有时候，人们在谈论一个独处的人时，会说这个人不喜欢与人交往，这样的说法就犹如当一个人不愿意深夜在邦地森林[插图]行走，我们就说这个人不喜欢散步一样。</p>
</li>
<li>
<p>一个人的高贵本性正好反映在这个人无法从与他人的交往中得到乐趣，他宁愿孤独一人，而无意与他人为伴。</p>
</li>
<li>
<p>要么是孤独，要么就是庸俗。</p>
</li>
<li>
<p>孤独是困苦的；但可不要变得庸俗；因为这样，你就会发现到处都是一片沙漠。</p>
</li>
<li>
<p>对于具有伟大心灵的人来说——他们都是人类的真正导师——不喜欢与他人频繁交往是一件很自然的事情，这和校长、教育家不会愿意与吵闹、喊叫的孩子们一齐游戏、玩耍是同一样的道理。</p>
</li>
<li>
<p>一个人越年轻，他就越需要在各个方面学习。</p>
</li>
<li>
<p>把部分的孤独带进社会人群中去，学会在人群中保持一定程度上的孤独。这样，他就要学会不要把自己随时随地的想法马上告诉别人；另外，对别人所说的话千万不要太过当真。他不能对别人有太多的期待，无论在道德上抑或在思想上。对于别人的看法，他应锻炼出一副淡漠、无动于衷的态度，因为这是培养值得称道的宽容的一个最切实可行的手段。虽然生活在众人之中，但他不可以完全成为众人的一分子；他与众人应该保持一种尽量客观的联系。这样会使他避免与社会人群有太过紧密的联系，这也就保护自己免遭别人的中伤和侮辱。</p>
</li>
<li>
<p>明智的人在取暖的时候懂得与火保持一段距离，而不会像傻瓜那样太过靠近火堆；后者在灼伤自己以后，就一头扎进寒冷的孤独之中，大声地抱怨那灼人的火苗。</p>
</li>
<li>
<p>嫉妒之情对于人来说是自然的，但与此同时，它既是一种罪恶，又是一桩不幸[插图]。</p>
</li>
<li>
<p>如果不跟别人作比较，那我们就会为我们所得到的感到快乐；如果由于别人比我们更加幸运而内心不安，那我们将永远不会快乐。</p>
</li>
<li>
<p>如果你看到很多生活得比你好的人，那你就想想有多少处境比你糟糕的人吧。</p>
</li>
<li>
<p>我们应该多想一想那些处境比我们更为恶劣的人，因为那些生活得比我们好的人只是看上去比我们更好而已。甚至在实际灾祸降临在我们头上的时候，最有效的安慰——虽然这和嫉妒出自同一源头——就是想到那些遭受了更加巨大的痛苦的人，其次就是多跟那些和我们处于同一处境，亦即同病相怜的人交往、</p>
</li>
<li>
<p>没有哪一种恨意能像嫉妒那样难以消除。</p>
</li>
<li>
<p>所有发生的事情，都必然发生，是不可避免的。</p>
</li>
<li>
<p>每一天都是一段短暂的生活：早上醒来就是诞生，晚上睡眠就是死亡和结束。</p>
</li>
<li>
<p>在每个城镇里面都居住着高贵突出的人物和卑鄙下作的乌合之众，同理，在每一个人——甚至最高贵、最出众的人物——的身上，同样存在着因人而异的某些深藏在人性，甚至动物性中的极其庸俗丑陋的成分</p>
</li>
<li>
<p>甚至微不足道的烦恼——不管它出自人或事——如果我们脑子里老是想着它，老是以强烈的色彩夸大地描绘这一烦恼，就会膨胀成为可怕的巨物，让我们束手无策。</p>
</li>
<li>
<p>有时候我们不妨想象一下在失去我们所拥有的某样东西时，我们将会怎样看待那失去之物。</p>
</li>
<li>
<p>一个具有深远和高贵思想的人不应该允许自己的精神思想完全被私人琐事和低级烦恼所占据，以致无法进行深远、高贵的思考，因为这样做确实是“为了生活而毁坏了生活的目的”。</p>
</li>
<li>
<p>每个人都必须承受许许多多来自外在的艰难制约，没有了这些制约，生活也就不成其为生活了。对自己适时的小小约束会在以后的日子里避免了许多外在的桎梏，这就正如在一个圆圈里，紧靠着圆心的小圆圈对应着圆周圈，后者经常比前者大上百倍以上。</p>
</li>
<li>
<p>在这世上有着许多令人羡慕的东西，但我们只能得到其中微乎其微的一小部分，相比之下，许许多多的祸患却必然地降临在我们的头上。</p>
</li>
<li>
<p>亚里士多德说：“生命在于运动。”</p>
</li>
<li>
<p>当没有思想的人无事可做的时候，就会马上敲击手指，或者敲打随便一件手头上的物件。</p>
</li>
<li>
<p>我们的生存根本上就是动荡不安的，因此，完全的静止不动很快就会变得令人难以忍受，因为它带来可怕的无聊。</p>
</li>
<li>
<p>能够从事某样活动，如果可能的话，制作某样东西，或者至少学习某一样东西，对于我们的幸福是绝对必要的。</p>
</li>
<li>
<p>作一件艺术作品、撰写一篇文章，甚至从事某种手工制作，都会给我们带来愉快。</p>
</li>
<li>
<p>那些禀赋优异，同时也意识到自己有能力创作意蕴丰富、和谐连贯的巨著的人，在这一方面真可称得上是最幸福的人。</p>
</li>
<li>
<p>无事可干的时候，难以保持平静。</p>
</li>
<li>
<p>不要在黑暗中用眼，以避免加重眼睛的负担。</p>
</li>
<li>
<p>我们一定要给予大脑必需的、足够分量的睡眠，藉此休养、恢复。人需要睡眠就等于钟表需要上发条</p>
</li>
<li>
<p>一个人的大脑越进化，大脑活动越大，那他所需要的睡眠分量就越多。但超出了所需的分量则只是浪费光阴而已，因为在睡眠的时间长度上所得到的却在质量深度上失去了</p>
</li>
<li>
<p>在这世界上生存，具备一定的预见能力和宽恕能力合乎我们争取幸福的目的：前者帮助我们避免受到伤害和损失，后者则为我们免除了人事纷争和吵闹。</p>
</li>
<li>
<p>谁要是生活在人群当中，那他就绝对不应该拒绝和谴责任何人——只要这个人是大自然安排和产生的作品，哪怕这个人是一个最卑劣、最可笑的人。</p>
</li>
<li>
<p>没有一个人能够改变自己的真实个性，这包括道德气质、认识能力、长相脾性，等等。</p>
</li>
<li>
<p>要在人群当中生存，我们就必须容许别人以既定的自身个性存在，不管这种个性是什么。</p>
</li>
<li>
<p>对于许多人，我们最聪明的想法就是：“我不准备改变他们，我要利用他们。”</p>
</li>
<li>
<p>人与人之间在精神、性情方面同声相应抑或大相径庭，会在人们的谈话中非常轻易和迅速地显示出来，哪怕在每一个微小的细节，都让人感觉得到。</p>
</li>
<li>
<p>真正伟大的思想者，就像雄鹰一样，把自己的巢穴建筑在孤独的高处。</p>
</li>
<li>
<p>每一个人的情绪几乎都不一样，这是由一个人当时的处境、身体状况、职业、周围外在环境、头脑中匆匆掠过的思绪等诸因素所决定的。</p>
</li>
<li>
<p>记忆所产生的效果犹如针孔照相机里面的聚光镜——它把景物收进去，然后制造出一张比原物漂亮得多的图片。</p>
</li>
<li>
<p>要想得到这种好处，让别人美化自己，方式之一就是尽量不要与人见面，因为虽然记忆需要很长时间才能完成它的美化工夫，但美化的工作却马上就可以开始。</p>
</li>
<li>
<p>聪明的做法就是在间隔相当一段时间以后才重新和我们的相熟和好朋友见面，因为在重新见到他们的时候，我们就可以注意到人们的记忆已经开始工作了。</p>
</li>
<li>
<p>每一个人在他人身上所看到的与这个人的自身相等，因为每个人只能根据自己的思想智力去明白和理解他人。</p>
</li>
<li>
<p>我们在跟别人说话时，也就把自己降至别人的水平，因为我们相对拥有的优势都消失了，甚至自己作出的必要的屈就也不为人知。</p>
</li>
<li>
<p>我们跟他们谈话时，自己不在同时变得平凡庸俗简直就是不可能的事情（这里可以用电传导的规律作比喻）。</p>
</li>
<li>
<p>面对那些傻瓜、蠢蛋，我们只有一种方式让他们明白我们的头脑智力，那就是，不要和这种人谈话。</p>
</li>
<li>
<p>很多人在社交场合的感觉就像一个高超的舞者到达一个舞场，但举目所见都是跛足瘸腿的人——他又能与谁共舞呢？</p>
</li>
<li>
<p>一个人在等待某个人或者等待做某件事的时候，亦即在他坐着无事可干的时候，如果不是马上拿起手头上随便任何一样物件——手杖、小刀、餐叉之类——有节奏地敲击起来，那么，这个人就能获得我的尊敬，因为这个人起码有可能在思考事情。</p>
</li>
<li>
<p>对于许多人来说，观看完全代替了思考。他们试图制造噪音来感觉自己的存在——也就是说，当他身边没有雪茄可以服务于这同一目的的时候。基于同样的理由，这些人无时无刻不睁大眼睛、竖起耳朵注意着周围发生的一举一动。</p>
</li>
<li>
<p>拉罗什富科非常中肯地说过：很难在高度尊敬一个人的同时，又非常喜爱他。</p>
</li>
<li>
<p>我们受别人欢迎的程度和我们降低对别人的思想感情的要求相等同，并且，我们这样做必须出于真心实意，而不是虚情假意，也不是出于对他人的容忍，因为容忍植根于鄙视。</p>
</li>
<li>
<p>取悦我们所必需的思想深度刚好就是我们自己的思想深度</p>
</li>
<li>
<p>大部分人都脱离不了主体的“我”，根本上他们除了对他们自己以外，不会对别的事情感到兴趣。</p>
</li>
<li>
<p>别人所说的话马上就让他们联想到自己，别人无意中说的一句话，只要稍微涉及他们个人自身，就能吸引他们的全部注意和占据他们的全副精神；他们也就再没有剩余精力去理解谈话的客体方面的内容。</p>
</li>
<li>
<p>一个有真知灼见的人和那些受到愚弄、欺骗的大众在一起就类似于这种情形：他的手表指示的时间是正确的，但全城钟塔指示的都是错误的时间，而只有他自己才知道正确的时间。但这又有什么用呢？所有人都听任错误钟塔的指示，甚至包括那些知道这个人的手表指示了唯一正确的时间的人。</p>
</li>
<li>
<p>常人在这一方面跟小孩相似：如果我们娇惯他们，他们就会变得淘气、顽皮。所以，我们不能太过迁就和顺从任何人。</p>
</li>
<li>
<p>一般来说，假如我们拒绝借钱给一个朋友，那我们不会失去这个朋友；但如果借钱给他，那我们反倒很容易失去了他。</p>
</li>
<li>
<p>如果我们对朋友保持一定的傲气和疏忽、大咧的态度，那我们不会轻易失去他们；但如果我们表现出太多的礼貌和周到，我们反而有可能失去这些朋友，因为我们的礼貌和殷勤会使朋友变得傲慢、令人难以容忍。</p>
</li>
<li>
<p>人们尤其不能忍受别人需要他们。一旦认定别人需要他们，必然的结果就是他们将变得傲慢、无礼。</p>
</li>
<li>
<p>适合我们与之深交的人非常稀有，我们应该小心注意不要与低级、下流之辈太过亲近。</p>
</li>
<li>
<p>假设一个人认为我需要他更甚于他需要我，那么，他就会马上觉得我好像从他那里偷走了某样的东西；他就会试图获取补偿，把失去的东西拿回来。</p>
</li>
<li>
<p>我们在与人交往时能够拥有优势全在于我们对对方没有要求，不用依靠他们，并且让他们清楚地看到这一点。</p>
</li>
<li>
<p>我们应该不时地让别人感觉到我们可以没有他们，不管他们是男是女。这样做会增进友谊。的确，在与大部分人交往时，如果我们的态度不时流露出点点轻视的神气，那并不会产生什么害处；别人反倒会更加珍惜与我们的友谊。</p>
</li>
<li>
<p>“不尊崇别人的人会受到别人的尊崇”——这是一句绝妙的意大利谚语。</p>
</li>
<li>
<p>当我们缺少经验时，我们就只能对事情作出先验的判断。</p>
</li>
<li>
<p>一个人的面具纯粹是出于自己的个性而制作的，所以，这副面具跟他本人配合得天衣无缝，产生的效果极具欺骗性。</p>
</li>
<li>
<p>“从小事就可以看出一个人的性格本性。”一个人会在细节小事上疏于防备，从而表露出自己的性格。从一个人对细微事情的处理方式，或者纯粹的举止态度就可以看出这个人的无限膨胀扩张、丝毫不顾及他人的自我。</p>
</li>
<li>
<p>一个人会忘记一切，绝对所有的一切，但却不会忘记他的自我，他的本性。性格是绝对无法改正的，因为人的所有行事都出自一条内在的原则；根据这一条内在的原则，在相类似的处境之下，一个人只能永远做出同样的事情，而不可能是别的。</p>
</li>
<li>
<p>如果要对人的真实和异常可怜的本质——大多数人的本质就是这样——获得一个必需的、清晰的和透彻的认识，那么，把书本文学上对于人的行事描述作为对现实生活中人的行事的说明，或者反过来，以后者解释前者，都是很有教益做法。</p>
</li>
<li>
<p>人与人之间的差别是非常巨大的。</p>
</li>
<li>
<p>野蛮人互相吞吃对方，文明人则互相欺骗对方，这就是所谓的世道方式。国家及其设置的目标既向国外又向国内的武装工具和机器——如果这些不是为了防备、制约人的无度的不义行为，那又是为了什么？</p>
</li>
<li>
<p>每一位国王，一旦牢牢掌握了他的国家，并刚刚开始享受到点滴的富裕，就会利用这些资本率领军队，像一群海盗一样地袭击他的邻近国家吗？难道几乎所有的战争归根到底不都是烧杀抢掠的强盗行径吗？在古代和在某种程度上的中世纪，被征服者沦为征服者的奴隶，也就是说，他们要为征服者服务。但那些支付战争费用的人其实也在同样为征服者效劳。他们奉献了以前的工作收入。伏尔泰说过：“所有的战争，不过就是抢掠而已。”德国人应该记住这一点。</p>
</li>
<li>
<p>一个初学者虽然看过别人示范演奏一种乐器的指法动作，或者在击剑中所采用的招架和进攻的招式，但是，他仍然会在实际操作中马上出现差错，尽管他一心一意想把动作做好。</p>
</li>
<li>
<p>造作的行为总会引起别人的鄙视。</p>
</li>
<li>
<p>精心打扮，假装具有某种的素质，其实就是承认自己并不具备这样的素质。</p>
</li>
<li>
<p>不管一个人是冒充拥有勇气、机智、学问、智慧，抑或吹牛以显得情场得意、有钱、有地位或任何其他，我们都可以从这种假冒行为得出结论：这个人正是在这一方面有所欠缺，因为如果我们真的拥有这方面的素质和长处，那我们并不会想到故意去显示、炫耀它——想到我们的这一份拥有，我们就已经心满意足了。</p>
</li>
<li>
<p>藏拙遮丑是可以的，但冒充优越却没有理由。</p>
</li>
<li>
<p>我们也应该知道：甚至在人们还没弄清楚伪装的人想要伪装成为什么样子之前，人们就知道他在伪装了。</p>
</li>
<li>
<p>大多数情况下，人们却像一只对着镜子咆哮的狗——它以为镜子里面的是另外一只狗，殊不知它看到的正是它自己。</p>
</li>
<li>
<p>对某种拙劣文体风格的新花样如果持赞赏而不是批评的态度，那么，这种愚蠢的文风就会被仿效。</p>
</li>
<li>
<p>人们都从一个人所拥有的职位、从事的生意、隶属的民族和家庭去考虑一个人。</p>
</li>
<li>
<p>一个人自身的拥有越多，对世俗常规的安排就越感到不满，他也就越希望退出世俗人群的圈子。</p>
</li>
<li>
<p>在这个贫穷和匮乏的世界，应付匮乏和需求的手段无论在何处都是最重要的，因此，也是压倒一切的。</p>
</li>
<li>
<p>正如流通的是纸钞，而不是真金白银，同样，在这个世界上，流行的不是发自内心的尊重和真正的友谊，而只是做得尽量逼真和自然地显示尊重和友谊的表面工夫。</p>
</li>
<li>
<p>不管怎么样，我认为一条诚实的狗的摇尾示好，比人们的那些表面工夫更有价值。</p>
</li>
<li>
<p>对朋友的痛苦、不幸抱有一种强烈的、纯客观的和完全脱离利害关系的同情。</p>
</li>
<li>
<p>检验一个人是不是我们真正的朋友，除了一些需要得到朋友的确切帮助和作出一定牺牲的情形以外，最好的时机就是当我们告诉他恰逢某样不幸的时候。在这一刹那，他的脸上要么显示出一种真心的、不含杂质的悲哀，要么就是一副镇定自若的样子；或者，他会流露出某种别样的表情，后两者都证实了拉罗什福科的那句名言——“从我们最好的朋友所遭遇的不幸，我们总能找到某样并不会使我们不悦的东西。”</p>
</li>
<li>
<p>没有什么比告诉别人我们恰逢某一巨大不幸，或者向别人毫无保留地透露出自己的某些个人弱点，更能确切地使别人得到好的心情了。</p>
</li>
<li>
<p>朋友间分隔太远和长时间互不见面都会有损朋友之间的友情，尽管我们并不那么乐意承认这一点。如果久不相见，甚至我们最亲爱的朋友也会随着岁月的流逝逐渐变成抽象的概念；我们对他们的关切也由此变得越来越理性，甚至这种关系只是一种惯性的作用。</p>
</li>
<li>
<p>现在此刻是一个威力无比的女神。</p>
</li>
<li>
<p>朋友都说自己是真诚的，其实，敌人才是真诚的。所以，我们应该把敌人的抨击、指责作为苦口良药，以此更多地了解自己。</p>
</li>
<li>
<p>患难之交真的那么稀有吗？恰恰相反，我们一旦和某人交上了朋友，他就开始患难了，就向我们借钱了。</p>
</li>
<li>
<p>如果一个人以为通过显示自己的聪明和思想就能博得社交人群的欢迎，那么他就的确是个不谙世故的毛头小子！</p>
</li>
<li>
<p>对绝大多数人来说，一个人表现出聪明和思想只能激起人们对他的憎恨和反感；并且，这种憎恨和反感因为这一原因而变得更加强烈：感觉这些情绪的人找不出理由抱怨引起这些情绪的原因，他们甚至必须把这些原因掩藏起来，不让自己知道。</p>
</li>
<li>
<p>如果一个人在谈话的对方身上观察和感觉到了某种智力上的优势，那么，这个人就会得出这样的结论：对方肯定也在同等程度上观察和感觉到自己在智力上的劣势。这是他在私下里、对此并不清楚意识到的情形下得出的结论。</p>
</li>
<li>
<p>格拉西安的话说得相当正确：“唯一能够取悦别人的方式就是把自己裹以最傻呆的动物的外皮。”</p>
</li>
<li>
<p>显示自己的聪明智慧其实就是间接地指责别人愚蠢和无能。</p>
</li>
<li>
<p>一个本性庸俗的人，在面对自己的对立面时，内心会产生抵触情绪，而秘密煽起这股情绪的就是他的嫉妒。</p>
</li>
<li>
<p>虚荣心的满足带给人的快感更甚于其他的快乐，但获得这种快感的途径只能是把自己与别人作一番比较。</p>
</li>
<li>
<p>把自己这一方面确凿无疑的优势显示出来，尤其是当着其他人面前这样做，那就是一种极端鲁莽、冒失的行为。这样，人们就会受到刺激去寻求报复，就会伺机侮辱这个冒犯者。</p>
</li>
<li>
<p>萨迪在《玫瑰园》里说过：“我们应该认识到：愚人对智者的反感百倍于智者对愚人的反感。”</p>
</li>
<li>
<p>每个人都会出于天性靠近会给他带来这种优越感觉的物体，犹如他本能地走向阳光或挨近一个火炉一样。那么，这样的物体，对男人而言，就是精神思想素质明显低劣的人；对于女人，就是相貌不如自己的人。</p>
</li>
<li>
<p>一个相貌还过得去的姑娘是多么友好热情地欢迎一个相貌丑陋难看的姑娘啊！对男人来说，身体的优势并不是至关重要的问题，虽然跟一个比自己矮小的人站在一起会比跟一个比我们高大的人在一块更加让人舒服。因此，一般来说，在男人当中，愚蠢无知的人会受到欢迎，而在女人当中，相貌丑陋的女人能够让人喜爱。这些人很容易就会获得心地很好的美名，因为每个人都需要为自己的喜爱找一个借口，以欺骗自己和欺骗他人。</p>
</li>
<li>
<p>长相很美的女子永远找不到同性的朋友，甚至连普通的女伴都找不到。她们最好不要去申请那些陪伴贵妇人的职位，因为她们甫一露面，她们希望中的新主人的脸色就马上阴沉下来——她们，或者她们的女儿，可一点都不需要这样的衬托！相比之下，拥有优越的地位则是另一番情形，因为优越的地位并不像个人素质那样通过互相的对比和显示出的差异而发挥作用，而是透过反射而造成效果，就像周围环境的色彩是反射在我们的脸上一样。</p>
</li>
<li>
<p>我们信任和透露秘密给别人，大部分是因为我们的懒惰、自私和虚荣。懒惰，是由于我们自己不去作考察、发现的工夫和保持警觉，而宁愿信任别人。自私，是因为谈论自己的需要引导我们把一些秘密泄露给别人；虚荣，是因为我们谈论的事情是我们引以为豪的。虽然如此，我们却仍然希望别人尊重我们给予他们的信任。</p>
</li>
<li>
<p>诚实是十分稀有的，正因为这样，我们不得不怀疑诚实是否存在了。</p>
</li>
<li>
<p>保持礼貌就等于我们订下一条闭嘴保持沉默的协议：我们都将互相忽略和避免责备对方在道德上和智力上的缺陷。</p>
</li>
<li>
<p>随意地和不必要地以不礼貌的方式对待别人而因此与人结下怨仇，就犹如自己放火烧掉自己的房子一般的疯狂。礼貌的言行就像假币，在使用假币时也吝啬、小气就是不智的表现，而慷慨施予则是聪明的做法。各民族的人在信函的末尾处都写上一句“您的卑下的仆人”。只有德国人不肯使用“仆人”一词——因为，当然了，这并不是事实！不过，为了礼貌的缘故而不惜牺牲自己的利益，这就犹如支付金块，而不是假币了。蜡在本质上是坚硬和易碎的，但稍加温暖就会变得柔软，人们就可以把它捏成随意喜欢的形状。同样，运用礼貌和友好，甚至使一个执拗和敌视他人的人也变得顺从和与人方便。所以，礼貌之于人就犹如温暖之于蜡。</p>
</li>
<li>
<p>如果我们不曾夸张地注重自己的价值与尊严，并因此怀有某种不相称的高傲；而与此同时又清楚知道每一个人心中对他人的惯常想法和评判，那么，我们就不会对他人的侮辱感到怒不可遏——侮辱其实就是轻视别人的表示。大多数人对于只有些微责备意味的话语都非常敏感，他们的敏感与他们的相熟朋友在背后对他们的议论形成多么巨大的反差！我们应该时刻记住一般常规的礼貌只是一副张开了笑脸的面具。所以当别人偶尔挪动或者片刻收起他们的面具时，我们可不要大惊小怪。如果一个人表现得相当粗野无礼，那么，他就等于脱光了身上的衣服，赤裸着身子站在人们的面前。当然，在这种情形下，一如大多数人一样，他会暴露出一副可怜、难看的样子。</p>
</li>
<li>
<p>判断我们到底应该做些什么和不该做些什么，我们都不应以别人为榜样，因为各人所处的位置、境况、关系都不相同，各人性格的差异也会使人们对事情的处理沾上某些不同的色彩。“两个人做同样的事情，但那已经不是同一样事情了”。经过一番深思熟虑以后，我们必须以符合自己性格的方式行事。所以，在处理实际事务时，自己的独到见解是必不可少的，否则，我们做的事情就会与我们的自身不相吻合。</p>
</li>
<li>
<p>我们不应该驳斥别人的看法，而应该记住，如果试图使一个人放弃他的看法中的种种荒谬之处，那么，我们就算有玛土撒拉[插图]的寿命，也不会完成任务。</p>
</li>
<li>
<p>在与别人谈话时，我们不要试图矫正别人，尽管我们所说的话出于善意；因为冒犯和得罪别人是很容易的，但要对此作出弥补，如果不是不可能的话，也是相当困难的。</p>
</li>
<li>
<p>如果我们碰巧听到别人说出的荒谬言论开始让我们生气，我们就要想象这只是一部喜剧中的两个愚人之间的对话。这一事实久经证明：谁来到这个世上，一本正经地在最重要的问题上教育人们，那么，如果他能全身而退就已经是万幸的了。</p>
</li>
<li>
<p>谁要想让别人相信他的看法，那他就要冷静、不带激情地把他的看法表达出来。因为所有激烈的情绪都来自意欲。这样，如果一个人激烈地把自己的看法说出来，那人们就会把他的看法视为他的意欲的产物，而不是认识力的结果，因为认识力在本质上是冷静的。因为意欲在人的身上是激烈和占首位的，而认识力只是次一级的和多余的，所以，人们更多地相信我们的看法是出自激动的意欲，而不会相信意欲的激动是我们的判断所引致。</p>
</li>
<li>
<p>就算我们有充分的权利称赞自己，我们也不能受到诱惑真的这样做。因为虚荣心是那样的寻常，而人的真才实干却又是那样的不寻常，所以，一旦我们显得在称赞自己——哪怕我们只是间接地称赞自己——人们就会一百对一地打赌：我们说出这样的话是虚荣心作怪，我们缺乏足够的常识认清所说的话是多么可笑。不过，不管怎么样，培根的话[插图]也不是全错的。他说的话不仅适用造谣诬蔑，同时也适用自我赞扬。因此，他建议我们不妨酌情地夸赞自己一番。</p>
</li>
<li>
<p>如果我们怀疑一个人在说谎话的时候，我们应该假装相信他所说的话；因为这样他就会变得放肆大胆，就会更加有恃无恐地说出谎言而最后拆穿自己。但如果我们发现他的话部分地泄露了他其实想掩藏起来的真相，那我们就应该装出一副不相信的样子。由于受到这样的抵抗刺激，他就会调动其余的真相以应战了。</p>
</li>
<li>
<p>我们必须把自己的个人私事视为秘密。凡是我们的相熟朋友无法亲眼看到的事情，我们都不要让他们知道。这是因为随着时间和形势的变化，他们对我们那些最无可挑剔的事情的了解都会为我们带来不利。</p>
</li>
<li>
<p>我们更应该通过不曾说出口的话语，而不是经由说过的话来显示我们的见解。</p>
</li>
<li>
<p>甚至热烈、活泼的人所喜欢采用的那种大声跟自己说话以放松心情的做法也应该予以杜绝，以免让这种行为变成了一种习惯。因为这种习惯一旦形成，思想就会与说话亲密无间。慢慢地，甚至与别人的交谈也会演变成为说出声音的思维，而如果我们是明智的话，我们就会在思想和说话之间保留相当的距离。</p>
</li>
<li>
<p>有时候，我们以为别人根本就不会相信我们的某些事情，但其实，别人还不曾想到过要怀疑这些事情。</p>
</li>
<li>
<p>如果由于我们做出的行为使他们真的对这些事情起了疑心，那他们就肯定不会相信它们的了。</p>
</li>
<li>
<p>某些在别的方面并不曾显示出丝毫洞察力的人，却可以是研究别人私事的专家。只要掌握了少量的情况，他们就能解决至为复杂的难题。</p>
</li>
<li>
<p>如果我们告诉这些人某一件往事，但又不愿透露任何名字和描述任何当事人，那么，我们就必须小心不要说出任何肯定的和具体的情况，例如，时间、地点、相关的人的名字、其他只是跟事件有间接关联的事情，虽然这些并不起眼，也没有多大的意义。因为得到了这些肯定的资料，那些专家们就能发挥他们刁钻的洞察力把其他的一切情况一一都发掘出来。这些人的好奇心在这一方面却是如此的强烈，意欲以此刺激和发动起他们的智力，直至获得最孤僻、最不起眼的事实结果为止，因为尽管这些人对于普遍的真理无法感知和不感兴趣，但是对于那些单个的真相他们却是充满热忱的。</p>
</li>
<li>
<p>所有教导处世智慧的大师们都热切地以多方的论证建议人们沉默寡言。</p>
</li>
<li>
<p>阿拉伯谚语：“任何你的敌人不可以知道的东西，都不要告诉你的朋友。”“如果对我的秘密保持沉默，那么，这个秘密就是我看管的囚徒；如果失口说出了这个秘密，那我就变成了它的囚徒。”“沉默之树结出安宁之果。”</p>
</li>
<li>
<p>我们让自己被别人骗去的金钱花费得至为值得，任何其他的金钱花费都无法与之相比，因为用这笔钱，我们直接买回了聪明。</p>
</li>
<li>
<p>我们要尽可能地避免对他人怀有敌意，但我们却必须注意每一个人的行为表现，并把它牢记在心，因为以此可以确定这个人的价值——至少是他对于我的价值，并据此制定出对这个人所应采取的态度和行为。必须永远记住：人的性格是不会改变的。无论何时，把一个人的性格中的劣性忘掉就跟扔掉了我们千辛万苦挣得的金钱一样。只有这样我们才不会与人过分亲密和与人结下愚蠢的友谊。“不爱也不恨”包含了全部世俗智慧的一半：“不要说话也不要相信”则包含了另一半的人生智慧。不过，当然了，对于一个需要谨守这一条以及下面的这些规律的世界，我们避之唯恐不及呢。</p>
</li>
<li>
<p>让言词或者表情流露出愤怒和憎恨是徒劳无益的，既不智和危险，又可笑和流于俗套。所以，除了在行动上，我们不可以表现出憎恨或者愤怒。我们越能成功地避免由话语和表情上表示愤怒，就越能成功地通过行动把它表现出来。冷血的动物才是唯一有毒的动物。</p>
</li>
<li>
<p>说话不要加重语气[插图]。这一条世故的古老遗训旨在让别人的理解力去发掘我们说话的含意，因为常人的理解力是迟缓的，在他们明白我们说话的含意之前，我们已经把话说完了。但如果说话时加重语气，那就等于我们在诉诸别人的感情，这样，事情就会得出相反的结果。对不少人我们可以态度礼貌、声调友好地说出真正无礼的话语而又避免遭受直接的危险。</p>
</li>
<li>
<p>人生无论以何面目出现，构成人生的仍然是同样的要素。</p>
</li>
<li>
<p>无论这一人生是在茅棚、在王宫，抑或在军营、修道院里度过，人生归根到底还是同样的人生。人生的际遇、历险，获得的幸福或者遭受的不幸尽管千差万别，生活仍然就像糖果一样：尽管糖果的形状千奇百怪、颜色多种多样，但都是由同样的糖果浆做成。</p>
</li>
<li>
<p>我们生活中的事件就犹如万花筒里面的画面，每次转动万花筒都让我们看到不同的画面，但其实，我们的眼前就只是那同一个万花筒而已。</p>
</li>
<li>
<p>运气——顺运或者逆运——扮演着风的角色，它可以迅速推进我们的航程，也可以把我们推回老远的距离；对此，我们的努力和奋斗都是徒劳无功的。我们的努力和挣扎只是发挥着桨橹的作用。我们竭尽全力挥舞桨橹数小时，终于向前走了一程，这时，突如其来的一阵强风一下子就能使我们倒退同样的距离。</p>
</li>
<li>
<p>在赐予我们的同时，却又清楚无误地向我们表明：我们对于他所赐予的礼物并没有非得到不可的丝毫资格和权利，我们得到这些馈赠需要感谢赐予者的仁慈和恩惠，而不是把这些馈赠归之于自己的作为；我们也就只能以无比的谦卑，怀着喜悦的希望去接受更多不配获得的礼物？</p>
</li>
<li>
<p>当我们的目标还很遥远时，我们甚至不可以径直向着这一目标进发，而只能依靠猜测，大致上向着这个目标的方向前行。</p>
</li>
<li>
<p>泰伦斯说过：人生就像一盘掷骰子游戏，掷出的骰子如果不合你的意愿，那你就只能凭借技巧，去改进命运所摊派的骰子。</p>
</li>
<li>
<p>命运洗牌和派牌，而我们则负责出牌。</p>
</li>
<li>
<p>人生就像一盘棋局，我们计划好了一套走法，但实施这一套计划的条件却是由棋局中的对弈者——亦即生活中的运气——的意愿所决定。</p>
</li>
<li>
<p>很多时候，我们比自己所相信的更加愚蠢，但在另一方面，则比自己认为的要聪明。</p>
</li>
<li>
<p>我们的自身具有某些比我们的头脑还要聪明的东西。</p>
</li>
<li>
<p>一条规律不可能放之四海而皆准</p>
</li>
<li>
<p>生来就注定要成就一番伟大事业的人，从青年时代起就在内心秘密地感受到了这一事实。他就会像建筑蜂巢的工蜂那样去努力完成自己的使命。</p>
</li>
<li>
<p>只是当我们回首自己一生的时候，才会注意到我们其实无时无刻不在遵循着自己的原则行事，这些原则犹如一条看不见的绳线操纵着我们。</p>
</li>
<li>
<p>我们应该牢牢记住时间的作用，以及事物昙花一现的本质。</p>
</li>
<li>
<p>对于任何正在发生的事情我们都要马上清晰地想象到其相反的一面。</p>
</li>
<li>
<p>在很多情况下，我们可以由此预计到时间所发挥的作用。不过，与掌握其他知识相比，要正确认识事物的反复无常的本质，经验或许更加必不可少，正因为某种状态或者条件在其持续的时间内必然地、绝对合理地存在，所以，每一年、每一月、每一日看上去都有理由和权利永恒不变地存在。但是任何事物都无法保留这种权利，只有转换变化才是永恒的。一个明智的人其实就是一个不会被事物恒久不变的表面所欺骗的人，他甚至预见到了事情即将往哪一方向变化[插图]。</p>
</li>
<li>
<p>常人却把目前的事物状态或者它们发展的方向视为恒久不变。这是因为一般人只看到效果，但又不明白产生这些效果的原因，而正是原因包含着将来变化的种子。</p>
</li>
<li>
<p>谬误总是产生在从事物的结果推究其原因的过程</p>
</li>
<li>
<p>试图强迫正常、适中的时间加快步伐是要付出至为昂贵代价的行为。所以，我们应该小心不要向时间欠下高息债务。</p>
</li>
<li>
<p>平庸的人和明智者之间的典型差别，反映在日常生活当中就是在评估和考虑是否存在可能的危险时，前者只是提出并且考虑这一问题：相类似的危险是否曾经发生，后者却思考相类似的危险会发生，并且牢记这一句西班牙谚语：“在一年都不曾发生的事情有可能在几分钟之内发生。”当然，这两种人的提问有所不同是正常的，因为考虑将要发生什么需要洞察力，而看到已经发生了的事情则只需感官而已。</p>
</li>
<li>
<p>我们要不惜花费时间、人力、金钱和忍受烦琐、不便以及减少自己的需求，目的就是为了杜绝发生不幸的可能性。我们作出的牺牲越大，那发生不幸的可能就越小、越遥远。</p>
</li>
<li>
<p>我们不应为某件事情过分高兴或者过分悲伤，原因之一就是一切事物都在改变，另一个原因是我们对于何为有利、何为不利的判断是虚幻的。所以，几乎每一个人都曾经一度为某件事情悲伤不已，但最后那却被证明是一件天大的好事。又或者，我们曾经为之兴高采烈的事情，后来却变成了我们极度痛苦的根源。</p>
</li>
<li>
<p>我已经尝惯人世的悲欢苦乐，因此，无论何种突如其来的变故，也不会使我像女人一样软下心来，流泪哭泣。</p>
</li>
<li>
<p>一般来说，一个人在遭遇各种不幸横祸的时候，如果能够保持镇定自若，那就显示出他清楚地知道人生可能遭遇的苦难是巨大的和不可胜数的；为此原因，他把自己所遭遇的不幸仅仅视为那些发生的众多苦难中的沧海一粟而已。这也就是斯多葛派哲学所提倡的心态：我们永远不应“忘记人类的自身条件”，而要时刻记住人的生存大致说来是一种悲惨、可怜的宿命，它遭受难以胜数的灾祸和不幸的袭击。</p>
</li>
<li>
<p>无论我们身处何方，都可看见人们为了这一悲惨、贫瘠和徒劳的生存而拼力挣扎和搏斗，饱受折磨。</p>
</li>
<li>
<p>我们应该减少、节制我们的期望和要求，学会接受和适应不如意的事情和处境，时刻留意防止或者承受不幸的灾祸。这是因为大大小小的不幸事件是我们生活的组成部分，我们应该把这一点时刻牢记在心。</p>
</li>
<li>
<p>我们应该谨慎、细心地预见和避开可能的不幸，不管这些不幸来自人或事。在这方面我们应做到不遗余力、精益求精，就像一只聪明的狐狸，灵巧地躲开大大小小的灾害（很多情况下，所谓的小灾害只是经过化装的小小不便而已）。</p>
</li>
<li>
<p>在灾祸还未到来之前，如果我们镇静地把它视为有可能发生的事情，那我们就可以预先从多方面、清晰地考虑灾祸的程度、范围，这样它就起码是有限的和一目了然的。当灾祸真的发生时，它就不至于过分地影响我们。但如果我们不曾做到这一点，而是在毫无准备的情况下横遭不幸的打击，那我们受到惊吓的头脑在第一时间并不会准确地测量飞来横祸的程度和范围，这样，由于心中没数，这一灾祸就会显得无法捉摸，起码很容易显得比实际的更严重。模糊不清和无法确定会以相同的方式使每一危险显得比它的实际样子更加厉害。当然，在我们把不幸视为有可能发生的同时，我们也考虑到了我们会得到的帮助和作出的补救措施；或者至少在头脑中习惯了灾祸这一表象。</p>
</li>
<li>
<p>发生的所有大大小小的事情，都是必然地发生。</p>
</li>
<li>
<p>我们可以把那些琐碎的、每时每刻烦扰我们的小小不幸视为存心给我们做练习和锻炼之用，这样，我们就不至于在安逸中失去了忍受巨大不幸的能力。</p>
</li>
<li>
<p>人们泛称为命运的事情却通常都是自己做出的蠢事。</p>
</li>
<li>
<p>最危险和可怕的是人的狡猾，而不是人的暴怒。确实，人的头脑是比狮子的利爪还要厉害的武器。</p>
</li>
<li>
<p>真正老于世故的人，做事从来不会犹豫不决、举棋不定，这样的人也不会匆忙急躁地行动。</p>
</li>
<li>
<p>对于我们的幸福，勇气是一种非常关键的、仅次于聪明睿智的素质。</p>
</li>
<li>
<p>人的一生就是一场战斗。</p>
</li>
<li>
<p>伏尔泰说得很对。“在这世上，我们只有挺着剑前行才能取得成功；我们死去的时候，手上仍然紧握着武器。”</p>
</li>
<li>
<p>一个人如果看见天空——或者只是在地平线上——出现了阴云，就沮丧气馁、怨天尤人，那这个人就是胆怯、懦弱之辈。</p>
</li>
<li>
<p>在邪恶面前不要让步，应该勇敢无畏地面对它。</p>
</li>
<li>
<p>就算是一件有危险的事情，只要它的结局仍然悬而未决，只要还存在得到一个更好结局的可能，那我们就不要胆怯、犹豫，而应该努力抗争，正如我们只要还看到一小片蓝色的天空，我们就不应对天气感到绝望一样。</p>
</li>
<li>
<p>就算世界倒塌了下来，一片的废墟也不会改变他的脸色。</p>
</li>
<li>
<p>勇气会酿成冒失放肆。一定程度的腼腆畏惧对于我们在这一世界的生存是必需的，懦弱只是畏惧超出了限度而已。</p>
</li>
<li>
<p>事物的本性使所有的生物都具备了畏惧，这使他们得以躲避灾祸，保存生命。</p>
</li>
<li>
<p>万不得已的时候，畏惧本身就成为畏惧的理由了。</p>
</li>
</ul>
<h2 id="第六章-人生的各个阶段">第六章 人生的各个阶段</h2>
<ul>
<li>
<p>伏尔泰曾经相当美妙地说过：一个人如果没有他那种年龄的神韵，那他也就会有他那种年龄特定的种种不幸。</p>
</li>
<li>
<p>在生命开始的时候，我们前面是长远的未来；但在生命临近结束时，我们却看到了我们身后走过的漫长的过去。虽然我们的性格保持不变，但我们的心境却经历了某些显著的变化。不同时期的“现时此刻”由此沾上了某种不一样的色彩。</p>
</li>
<li>
<p>当我们如此认真地投入初次直观认识事物的时候，教育也在忙于向我们灌输种种的概念知识。</p>
</li>
<li>
<p>对事物本质的认识——亦即我们知识的真正内容——在于我们对这个世界所作的直观把握。</p>
</li>
<li>
<p>没有哪一位教育家可以把一个天生的蠢人培养成一个有头脑的人，永远不！他出生的时候是一个傻瓜，那直到他死的时候还仍然是一个傻瓜。一个人对于外在世界的初次直观把握是很深刻的，这也就解释了为什么我们的童年环境和经验在我们的记忆里会留下如此深刻的印记。</p>
</li>
<li>
<p>所有的事物作为客体，亦即纯粹作为表象而存在时，毫无例外都是令人愉快的；但当这些事物作为主体存在，亦即存在于意欲之中时，却都沉浸在痛苦和悲哀之中。</p>
</li>
<li>
<p>一切事物在被观照时都是愉悦的，但在具体存在时，却是可怕的。</p>
</li>
<li>
<p>正如在初春，树叶都带着同样的颜色、具有几乎一模一样的形体，同样，我们在幼年时也是彼此相似、并因此和谐一致。但是随着青春期的到来，人与人之间的差异分歧也就出现了，这和圆规的半径越大，划出的圆圈也就越大是同一样的道理。</p>
</li>
<li>
<p>所有的幸福都是虚幻的，而苦难才是真实的。</p>
</li>
<li>
<p>我们努力争取的只是一种无痛苦和不受烦扰的状态，而不是快感逸乐，这至少对于具有理性的人来说是这样。</p>
</li>
<li>
<p>这个世界充满着唾手可得的幸福和快乐，人们只是苦于找不到门路获得这些幸福、快乐而已；但到了老年，人们就会知道，在这个世界本就没有什么幸福、快乐可言，他们因而心安理得地咀嚼、品尝着那得过且过的现状，甚至于从平淡无奇中找到乐趣。</p>
</li>
<li>
<p>一个成熟的人从自己的生活经验中所能获得的，就是摆脱偏见；这样，他发现世界与他儿时和青年时期所看到的迥然有别。</p>
</li>
<li>
<p>在年轻时候，我们误以为，我们生活中的重要人物和有影响的事件会大张旗鼓地露面和发生。到了老年以后，对生活所做的回顾和考察却告诉我们，这些人物和事件都是悄无声息、不经意地从后门进入我们的生活。</p>
</li>
<li>
<p>处于人生前半段的人看到的是刺绣品的正面，而到了人生后半部分的人，却看到了刺绣品的背面。刺绣品的背面并不那么美丽，但却给人以教益，因为它使人明白看到刺绣品的总体针线。</p>
</li>
<li>
<p>每一个人对独处，即与己为伴的喜爱抑或憎恶，由他自身的内在价值所决定。</p>
</li>
<li>
<p>如果一个年轻人很早就洞察人事，擅长与人应接、打交道；因此，在进入社会人际关系时，能够驾轻就熟，那么，从智力和道德的角度考虑，这可是一个糟糕的迹象，它预示这个人属于平庸之辈。但如果在类似的人际关系中，一个年轻人表现出诧异、惊疑、笨拙、颠倒的举止和行为，那反而预示着他具备更高贵的素质。</p>
</li>
<li>
<p>只要我们还年轻，那么，不管人们对我们说些什么，我们还是把生活视为长无尽头而因此挥霍时间。我们年纪越大，就越懂得珍惜我们的时间。到了晚年，每度过一天，我们的感觉就类似于一个向绞刑架又前进了一步的死囚。</p>
</li>
<li>
<p>我们的智力本来就有欠完美，我们的记忆何尝不也同样如此。我们学到的东西需要温习，过去了的事情需要回想，只有这样，这两者才不至于慢慢沉没于遗忘的深谷。</p>
</li>
<li>
<p>犹如人们坐船离开海岸越远，岸上的物件就变得越少和越加难以辨认，我们以往的岁月，经历过的事情也遭遇同样的情形。</p>
</li>
<li>
<p>有时候，我们相信自己在怀念着某一处遥远的地方，但其实，我们只是怀念着我们在年轻、活泼的时候在那地方所度过的时间。时间戴上空间的面具欺骗了我们，我们只要到那地方一游，就会清楚我们受骗了。</p>
</li>
<li>
<p>一盏油灯虽然灯油不多，但它的灯芯很细，它能够点燃较长的时间；另一盏油灯虽然灯芯粗大，但它的灯油很足，它同样能燃上很长时间。</p>
</li>
<li>
<p>灯油就好比一个人的生命力，灯芯则是对身体活力的任何形式的消耗和挥霍。</p>
</li>
<li>
<p>亚里士多德发现：能在青年期和成年期都在奥林匹克比赛中获胜的人寥寥无几。</p>
</li>
<li>
<p>，一个人的性格看上去会跟他的某一个人生的阶段特别和谐一致。这样，到了那一特定的人生阶段，这个人就显示出他最好的面貌</p>
</li>
<li>
<p>犹如一个置身于一艘船上的人只能根据身后河岸景物的后退和缩小来发现船只的前行，同样，如果岁数比我们大的人在我们看来还显得年轻，那么我们就可以据此知道我们变老了。</p>
</li>
<li>
<p>我们生活的时间就像往下滚动的球体不断加速运动。</p>
</li>
<li>
<p>在青年时期，我们的直观占据上风，但在老年期，思想却把牢了统治的地位。因此，前者是创作诗歌的时期，而后者却是进行哲学思考的时候。</p>
</li>
<li>
<p>青年时期的人听命于他们直观所见之物及其产生的印象；但在老年，人们只由他们的思想决定他们的行为。</p>
</li>
<li>
<p>我们精神力最强旺、最集中的时期，毫无疑问是在青年期。这个时期最迟能够延至一个人的35岁。</p>
</li>
<li>
<p>一个伟大的小说家通常要到了50岁才能创作出他的鸿篇巨制。</p>
</li>
<li>
<p>尽管一个人的智力素质，一如他的性格和感情，就其本质而言是与生俱来的，但是，人的智力素质却不像人的性格那样保持一成不变。它其实受制于变化着的情形，而这些变化着的情形总的来说是按规律出现的。</p>
</li>
<li>
<p>人的智力立足于这一物理世界，另一原因就是智力需要得到经验的素材。</p>
</li>
<li>
<p>人生前40年提供了正文，而随后30年则提供了对这正文的注释。</p>
</li>
<li>
<p>只要人们仍然受到性欲的影响，或者受到这一魔鬼的摆布操纵，那么，性欲所造成的没完没了、花样繁多的忧郁及产生的情绪冲动，就会使人总是处于一种轻微的精神错乱之中。</p>
</li>
<li>
<p>年轻人都具有某些忧郁、凄婉的特征，而老年人却带着某种的喜悦——其中根本的原因，不是别的，正是青年人受着性欲这一魔鬼的控制——不，应该是奴役才对。这个魔鬼吝惜着不肯轻易放松他们哪怕是一个小时的自由。</p>
</li>
<li>
<p>人的性欲衰退以后，生命的真正内核也就消耗得差不多了，剩下的只是一副生命的躯壳。</p>
</li>
<li>
<p>青年人同样受到这世界的缤纷色彩及其丰富形状的诱惑，他的想象力夸大了这一世界所能给予他的东西。</p>
</li>
<li>
<p>一切坚果里面其实都是空的，不管它们如何被镀上了一层金衣。</p>
</li>
<li>
<p>无论人们如何为生活着色、打扮，人生从本质上而言，不过就是这样的一种存在：衡量它的真正价值的方法只能是视乎它缺少痛苦的程度，而不是它是否欠缺欢娱，更不是通过生活中的奢华场面。</p>
</li>
<li>
<p>老年人遭受的命运就是疾病和无聊。</p>
</li>
<li>
<p>贫穷之于老年却是一大不幸。</p>
</li>
<li>
<p>老人们比起年轻的时候更加喜爱金钱，因为金钱是失去了的体力的代替品。</p>
</li>
<li>
<p>一个人的“自身拥有”在老年期给人所带来的好处是任何时期都无法相比的。</p>
</li>
<li>
<p>爱情和女人完全地控制着一个人。在30岁的时候，战神星[插图]取得了统治地位，人们这时候变得强壮、大胆、好斗暴怒和倔强。人到40岁，四小行星接过了指挥棒，人生由此变得更加宽广。他变得节俭了，也就是说，为了实用目的而生活——这是谷神星发挥作用的原因；他有了他的安乐窝——这得之于灶神星；由于智慧女神星的作用，他知道了他需要知道的东西，而他家中的女主人——妻子——则作为天后星[插图]主宰着家里。在50岁，朱庇特星[插图]登上了王位，50岁的人已经比大多数的人多活了些时候，他觉得比他同时代的人拥有更多的优势。他充分享受着自己的力量，富于阅历和知识，他（这视他的个性和情形而定）对于自己周围的人们拥有权威，因此，他不再接受他人的命令。相反，现在是由他发号施令了。现在，他成为自己周围的指导者和统治者是最适合不过的事情。到了50岁的人就像朱庇特天神达到了他的光辉顶点。但随后在人生的60岁，农神星[插图]来到了，伴随而至的还有铅一样的笨重、迟缓和坚韧。</p>
</li>
<li>
<p>如果我们真的可以明了生命所赖以发生的神奇奥妙，那么，一切事情也就会真相大白了。</p>
</li>
</ul>
<h2 id="附">附</h2>
<ul>
<li>
<p>虽然长大后叔本华没有作为巨商跨国家贸易和赚钱——就像他父亲所希望的那样，但叔本华的思想遗产却跨国家流传开来。这种结局绝对不是叔本华父亲当初所预料到的。</p>
</li>
<li>
<p>伪装因此对于女人来说是与生俱来的，这几乎就是女人的特性，无论她们是愚蠢还是聪明。一有机会她们就会运用伪装，这对于她们来说是最自然不过的，一如动物一旦受到攻击就会马上运用自身的武器一样。并且，她们这样做的时候，还在某种程度上认为自己在行使正当权利呢。基于同样的理由，女人特别能够识穿别人的伪装行为。所以，试图在女人面前运用伪装并不可取。</p>
</li>
<li>
<p>把身材矮小、肩膀狭窄、臀部宽大、两腿矮短的女性称为“美人”、“佳丽”，这也只有被性欲蒙蔽了头脑的男人才会说得出来。也就是说，女性的全部美丽全在于这种性欲之中。</p>
</li>
<li>
<p>人生真是糟糕透顶的事情，我已决定要花费这一生去琢磨和探究这一糟糕透顶的人生。</p>
</li>
<li>
<p>在康德以后，很快就冒出了尽是玩弄字词的诡辩者。他们乱用莫测高深的字词，把他们时期的有思考能力的人弄得烦腻和厌倦，然后就把这些人吓得从此远离哲学，不再信任这种学问。但现在，某一更具思想能力的人将会出现，使哲学重新恢复其荣誉。</p>
</li>
<li>
<p>如果我在这里听到那些军官们除了谈论女人、马匹，还有其他更严肃的话题，那这金币我就用来救济穷人。</p>
</li>
<li>
<p>从《吠陀》的一页纸著作，我们所学到的就超过康德以后的整卷整卷的哲学著作。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>2023年05月电影日志</title>
      <link>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/2023%E5%B9%B4%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</link>
      <pubDate>Mon, 01 May 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/2023%E5%B9%B4%E7%94%B5%E5%BD%B1%E6%97%A5%E5%BF%97/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;看过很多电影，但是没有把观后感记录一下，时间久了之后，电影传达的主旨还是记得的，但是一些细节完全没印象，思来想去，还是记录一下比较好。应该是简单描述下讲的什么内容，然后有什么启发。&lt;/p&gt;
&lt;h2 id=&#34;贝利传奇的诞生&#34;&gt;贝利：传奇的诞生&lt;/h2&gt;
&lt;h2 id=&#34;钱学森2012&#34;&gt;钱学森（2012）&lt;/h2&gt;
&lt;h2 id=&#34;史蒂夫乔布斯2015&#34;&gt;史蒂夫·乔布斯（2015）&lt;/h2&gt;
&lt;h2 id=&#34;波西米亚狂想曲&#34;&gt;波西米亚狂想曲&lt;/h2&gt;
&lt;h2 id=&#34;阴阳师2001&#34;&gt;阴阳师（2001）&lt;/h2&gt;
&lt;h2 id=&#34;灌篮高手&#34;&gt;灌篮高手&lt;/h2&gt;
&lt;h2 id=&#34;玲芽之旅&#34;&gt;玲芽之旅&lt;/h2&gt;
&lt;h2 id=&#34;封神第一部&#34;&gt;封神第一部&lt;/h2&gt;
&lt;h2 id=&#34;流浪地球2&#34;&gt;流浪地球2&lt;/h2&gt;
&lt;h2 id=&#34;奥本海默&#34;&gt;奥本海默&lt;/h2&gt;
&lt;p&gt;时间太赶了，健身回来都很晚了，但是也不想等了，就去看了，这部电影去年还是前年，就在虎扑帖子里刷到了，说诺兰要拍奥本海默，讲原子弹的。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>看过很多电影，但是没有把观后感记录一下，时间久了之后，电影传达的主旨还是记得的，但是一些细节完全没印象，思来想去，还是记录一下比较好。应该是简单描述下讲的什么内容，然后有什么启发。</p>
<h2 id="贝利传奇的诞生">贝利：传奇的诞生</h2>
<h2 id="钱学森2012">钱学森（2012）</h2>
<h2 id="史蒂夫乔布斯2015">史蒂夫·乔布斯（2015）</h2>
<h2 id="波西米亚狂想曲">波西米亚狂想曲</h2>
<h2 id="阴阳师2001">阴阳师（2001）</h2>
<h2 id="灌篮高手">灌篮高手</h2>
<h2 id="玲芽之旅">玲芽之旅</h2>
<h2 id="封神第一部">封神第一部</h2>
<h2 id="流浪地球2">流浪地球2</h2>
<h2 id="奥本海默">奥本海默</h2>
<p>时间太赶了，健身回来都很晚了，但是也不想等了，就去看了，这部电影去年还是前年，就在虎扑帖子里刷到了，说诺兰要拍奥本海默，讲原子弹的。</p>
]]></content:encoded>
    </item>
    <item>
      <title>《一九八四》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%80%E4%B9%9D%E5%85%AB%E5%9B%9B/</link>
      <pubDate>Mon, 10 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%80%E4%B9%9D%E5%85%AB%E5%9B%9B/</guid>
      <description>&lt;h2 id=&#34;译本序&#34;&gt;译本序&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;他在小说中创造的“老大哥”、“双重思想”、“新话”等词汇都收进了权威的英语词典，甚至由他的姓衍生了一个形容词“奥威尔式”，不断地出现在报道国际新闻的记者的笔下，这在其他作家身上是很罕见的，如果不是绝无仅有的话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;奥威尔只是靠成绩优异，才免费进了一所二流的寄宿学校圣塞浦里安，后来又靠成绩优异考取了奖学金，进了英国最著名的伊顿公学。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“对一个孩子最残酷的事莫过于把他送到一所富家子弟的学校中去。一个意识到贫穷的孩子由于虚荣而感到痛苦，是成人所不能想象的。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“一个不合群的孩子在寄宿学校吃到的苦头可能是英国唯一可以与一个外人在极权主义社会中感到的孤立相比的事。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我感到我必须洗赎那压得我透不过气来的罪咎……我觉得我不仅仅应该与帝国主义决裂，而且也应该与一切人对人的统治决裂。我希望融合到受压迫的人中间去，成为他们之中的一个，站在他们的一边反对他们的暴君……在这时候，在我看来，没有出息倒是唯一的美德。自我奋斗，哪怕稍有成就，一年能挣上几百镑，我觉得稍有这种想法都是精神丑恶的，是一种欺压行为。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我尝到过贫困的生活和失败的感觉。这增强了我天生对权威的憎恨，使我第一次充分意识到工人阶级的存在，而在缅甸的工作则使我对帝国主义的性质有了一些认识。但这些经验不足以给我确切的政治方向。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;出身和教育养成的说话口音，就是一个不可逾越的障碍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“这是什么口音！一种饱食终日、无所事事、沾沾自喜、过分自信的口音，一种深沉、洪亮而带有恶意的口音，你没有看到也可以凭本能感到，他们是一切智慧的思想、细腻的感情、美丽的事物的敌人。怪不得大家都这么憎恨我们。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“英国人的（阶级）烙印是打在舌头上的。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有一个故事很生动地说明了这一点：他为了体验穷人的生活，曾经伪装酒醉的流浪汉，去辱骂一个警察，想被抓到监狱里去尝一尝与穷人一起过圣诞节的滋味。但是那个警察从他醉酒后的口音，一下就听出了这个身披借来的破烂衣服的醉鬼是一个出身伊顿公学的地道绅士，并没有上钩，而是善意相劝，叫他乖乖地回家去。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他的侄女的话最能一针见血地说明问题，她对奥威尔的传记作家克立克说：“他的一切疙瘩都来自这个事实：他认为他应该去爱他的同胞，但是他连同他们随便交谈都做不到。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;极权主义乃是现代专制主义。它从本质上来说与古代或中世纪的专制主义毫无二致，但与这些传统的专制主义不同的，或者说有过之而无不及的地方是，极权主义掌握了现代政治的统治手段，包括政治组织、社会生活、舆论工具、艺术创作、历史编纂甚至个人思想和隐私，无不在一个有形和无形的“老大哥”的全面严密控制之下（极权主义的英文“Totalitarianism”意即指此，因此也可译“全面权力主义”），这是中外历史上任何一个暴君所做不到的，更是他们连想也想不到的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;极权主义的危害，向世人敲起警钟，让大家都看到它的危害性——对伦理的破坏，对思想的控制，对自由的剥夺，对人性的扼杀，对历史的捏造和篡改……——是何等的重要。如果听任它横行，在不久的将来，人类社会将陷入万劫不复的境地。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第一部&#34;&gt;第一部&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;老大哥在看着你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你发出的每一个声音，都是有人听到的，你做出的每一个动作，除非在黑暗中，都是有人仔细观察的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;战争即和平自由即奴役无知即力量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真理部负责新闻、娱乐、教育、艺术；和平部负责战争；友爱部维持法律和秩序；富裕部负责经济事务。用新话来说，它们分别称为真部、和部、爱部、富部。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;果尔德施坦因是个叛徒、变节分子，他一度（那是很久以前了，到底多久，没有人记得清楚）是党的领导人物之一，几乎与老大哥本人平起平坐，后来从事反革命活动，被判死刑，却神秘地逃走了，不知下落。两分钟仇恨节目每天不同，但无不以果尔德施坦因为其重要人物。他是头号叛徒，最早污损党的纯洁性的人。后来的一切反党罪行、一切叛国行为、破坏颠覆、异端邪说、离经叛道都是直接起源于他的教唆。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;果尔德施坦因在对党进行他一贯的恶毒攻击，这种攻击夸张其事，不讲道理，即使一个儿童也能一眼看穿，但是听起来却又似乎有些道理，使你觉得要提高警惕，别人要是没有你那么清醒的头脑，可能上当受骗。他在谩骂老大哥，攻击党的专政，要求立即同欧亚国媾和，主张言论自由、新闻自由、集会自由、思想自由，歇斯底里地叫嚷说革命被出卖了——所有这一切的话都是用大字眼飞快地说的，可以说是对党的演说家一贯讲话作风的一种模仿，甚至还有一些新话的词汇；说真的，比任何党员在实际生活中一般使用的新话词汇还要多。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;总是有傻瓜上当受骗。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两分钟仇恨所以可怕，不是你必须参加表演，而是要避不参加是不可能的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不那么做是办不到的。掩饰你真实的感情，控制你脸部的表情，大家做什么你就做什么，这是一种本能的反应。但是有那么一两秒钟的时间里，他的眼睛里的神色很可能暴露了他自己。正好是在这一刹那，那件有意义的事情发生了——如果说那件事情真的发生了的话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我同你一致，”奥勃良似乎这样对他说。“我完全知道你的想法。你的蔑视、仇恨、厌恶，我全都知道，不过别害怕，我站在你的一边！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打倒老大哥打倒老大哥打倒老大哥打倒老大哥打倒老大哥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不论他是写了打倒老大哥，还是他没有写，并没有什么不同。不论他是继续写日记，还是他没有继续写，也没有什么不同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们会枪毙我我不在乎他们会在我后脑勺打一枪我不在乎打倒老大哥他们总是在后脑勺给你一枪我不在乎打倒老大哥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;迟迟不去开门是最糟糕的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们崇拜党和党的一切。唱歌、游行、旗帜、远足、木枪操练、高呼口号、崇拜老大哥——所有这一切对他们来说都是非常好玩的事。他们的全部凶残本性都发泄出来，用在国家公敌，用在外国人、叛徒、破坏分子、思想犯身上了。三十岁以上的人惧怕自己的孩子几乎是很普遍的事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我们将在没有黑暗的地方相见。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过去已经死亡，未来无法想象。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不论在钱币上、邮票上、书籍的封面上、旗帜上、招贴画上、香烟匣上——到处都有。眼光总是盯着你，声音总是在你的耳边响着。不论是睡着还是醒着，在工作还是在吃饭，在室内还是在户外，在澡盆里还是在床上——没有躲避的地方。除了你脑壳里的几个立方厘米以外，没有东西是属于你自己的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;千篇一律的时代，孤独的时代，老大哥的时代，双重思想的时代，向未来，向过去，向一个思想自由、人们各不相同、但生活并不孤独的时代——向一个真理存在、做过的事不能抹掉的时代致敬！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;思想罪不会带来死亡：思想罪本身就是死亡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现在他既然认识到自己是已死的人，那么尽量长久地活着就是一件重要的事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果别人都相信党说的谎话——如果所有记录都这么说——那么这个谎言就载入历史而成为真理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“谁控制过去就控制未来；谁控制现在就控制过去。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过去是可以改变的，但是却从来没有改变过。凡是现在是正确的东西，永远也是正确的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;知与不知，知道全部真实情况而却扯一些滴水不漏的谎话，同时持两种互相抵消的观点，明知它们互相矛盾而仍都相信，用逻辑来反逻辑，一边表示拥护道德一边又否定道德，一边相信民主是办不到的一边又相信党是民主的捍卫者，忘掉一切必须忘掉的东西而又在需要的时候想起它来，然后又马上忘掉它，而尤其是，把这样的做法应用到做法本身上面——这可谓绝妙透顶了：有意识地进入无意识，而后又并不意识到你刚才完成的催眠。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果除了你自己的记忆以外不存在任何记录，那你怎么能够确定哪怕是最明显的事实呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你所知道的只是，每个季度在纸面上都生产了天文数字的鞋子，但是大洋国里却有近一半的人口打赤脚。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;今天他应该表扬奥吉尔维同志。不错，根本没有奥吉尔维同志这样一个人，但是只要印上几行字，伪造几张照片，就可以马上使他存在。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个小时以前还没有想到过的奥吉尔维同志，如今已成了事实。他觉得很奇怪，你能够创造死人，却不能创造活人。在现实中从来没有存在过的奥吉尔维同志，如今却存在于过去之中，一旦伪造工作被遗忘后，他就会像查理曼大王或者恺撒大帝一样真实地存在，所根据的是同样的证据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;说真的，如果一个词不过是另一个词的反面，那有什么理由存在呢？以‘好’为例。如果你有一个‘好’字，为什么还需要‘坏’字？‘不好’就行了——而且还更好，因为这正好是‘好’的反面，而另外一字却不是。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你难道不明白，新话的全部目的是要缩小思想的范围？最后我们要使得大家在实际上不可能犯任何思想罪，因为将来没有词汇可以表达。凡是有必要使用的概念，都只有一个词来表达，意义受到严格限制，一切附带含义都被消除忘掉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;词汇逐年减少，意识的范围也就越来越小。当然，即使在现在，也没有理由或借口可以犯思想罪。这仅仅是个自觉问题，现实控制问题。但最终，甚至这样的需要也没有了。语言完善之时，即革命完成之日。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“到二〇五〇年，也许还要早些，所有关于老话的实际知识都要消灭。过去的全部文学都要销毁，乔叟、莎士比亚、弥尔顿、拜伦——他们只存在于新话的版本中，不只改成了不同的东西，而且改成了同他们原来相反的东西。甚至党的书籍也要改变。甚至口号也要改变。自由的概念也被取消了，你怎么还能叫‘自由即奴役’的口号？届时整个思想气氛就要不同了。事实上，将来不会再有像我们今天所了解的那种思想。正统的意思是不想——不需要想。正统即没有意识。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;电幕上继续不断地播送神话般的数字。同去年相比，食物、衣服、房屋、家具、铁锅、燃料、轮船、直升机、书籍、婴孩的产量都增加了——除了疾病、犯罪、发疯以外，什么都增加了。逐年逐月，每时每刻，不论什么人，什么东西都在迅速前进。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不看一下周围，你就会很容易相信，党所树立的模范体格——魁梧高大的小伙子和胸脯高耸的姑娘，金黄的头发，健康的肤色，生气勃勃，无忧无虑——是存在的，甚至是占多数。实际上，从他所了解的来看，一号空降场大多数人是矮小难看的。很难理解，各部竟尽是那种甲壳虫一样的人：又矮又小，没有到年纪就长胖了，四肢短小，忙忙碌碌，动作敏捷，胖胖的没有表情的脸上，眼睛又细又小。在党的统治下似乎这一类型的人繁殖得最快。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他觉得他凭本能就能知道，谁能生存，谁会消灭，尽管究竟靠什么才能生存，则很难说。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们不到觉悟的时候，就永远不会造反；他们不造反，就不会觉悟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很有可能，历史书中的几乎每一句话，甚至人们毫无置疑地相信的事情，都完全出之于虚构。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过去给抹掉了，而抹掉本身又被遗忘了，谎言便变成了真话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓自由就是可以说二加二等于四的自由。承认这一点，其他一切就迎刃而解。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“如果有希望的话，希望在无产者身上。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在记忆不到而书面记录又经篡改伪造的这样的情况下，党声称它已改善了人民的生活，你就得相信，因为不存在，也永远不会存在任何可以测定的比较标准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;圣克利门特教堂的钟声说，橘子和柠檬，圣克利门特教堂的钟声说，你欠我三个铜板！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二部&#34;&gt;第二部&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;他想，要是在从前，一个男人看一个女人的肉体，就动了欲念，事情就是那么单纯。可是如今已没有纯真的爱或纯真的欲念了。没有一种感情是纯真的，因为一切都夹杂着恐惧和仇恨。他们的拥抱是一场战斗，高潮就是一次胜利。这是对党的打击。这是一件政治行为。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“你做爱的时候，你就用去了你的精力；事后你感到愉快，天塌下来也不顾。他们不能让你感到这样。他们要你永远充满精力。什么游行，欢呼，挥舞旗帜，都只不过是变了质、发了酸的性欲。要是你内心感到快活，那么你有什么必要为老大哥、三年计划、两分钟仇恨等等他们这一套名堂感到兴奋？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“那只是因为我赞成积极的事情，不赞成消极的事情。在我们参加的这场比赛里，我们是无法取胜的。只不过有几种失败比别几种失败好一些，仅此而已。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他想到，你如果同一个女人生活在一起，这种失望大概是不断发生的正常的事，因此突然对她感到了一种深厚的柔情，这是他从来没有感到过的。他真希望他们是一对结婚已有十年历史的夫妇。他真希望他们两人像现在那样在街上走着，不过是公开的，不带恐惧，谈着琐碎的事儿，买着家用的杂物。他尤其希望他们能有一个地方可以单独在一起，而不必感到每次相会非做爱不可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;玻璃的弧形表面仿佛就是苍穹，下面包藏着一个小小的世界，连大气层都一并齐全。他感到他可以进入这个世界中去，事实上他已经在里面了，还有那红木大床、折叠桌、座钟、铜板蚀刻画，还有那镇纸本身。那镇纸就是他所在的那间屋子，珊瑚是裘莉亚和他自己的生命，有点永恒地嵌在这个水晶球的中心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“谁管它？总是不断地打仗，一个接着一个，反正你知道所有的消息都是谎话。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在同她说话中，他发现假装正统而又不知正统为何意是件十分容易的事。可以说，在没有理解能力的人身上，党把它的世界观灌输给他们最为成功。最明显不过的违反现实的东西，都可以使他们相信，因为他们从来不理解，对他们的要求是何等荒唐，因为他们对社会大事不发生兴趣，从来不去注意发生了什么事情。正是由于缺乏理解，他们没有发疯。他们什么都一口吞下，吞下的东西对他们并无害处，因为没有残渣遗留，就像一颗玉米粒不加消化地通过一只鸟的体内一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;始即是终，终寓于始。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你爱一个人，你就爱他，当你没有别的东西可以给他时，你仍把你的爱给他。最后一块巧克力给抢走时，他母亲怀里抱着孩子。这没有用，改变不了任何东西，并不能变出一块巧克力来，并不能使那孩子或她自己逃脱死亡；但是她仍抱着她，似乎这是很自然的事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们并不忠于一个政党，或者一个国家，或者一个思想，他们却相互忠于对方。他有生以来第一次不再轻视无产者，或者只把他们看成是一种有朝一日会爆发出生命来振兴全世界的蛰伏的力量。无产者仍有人性。他们没有麻木不仁。他们仍保有原始的感情，而他自己却是需要作出有意识的努力才能重新学会这种感情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“无产者是人，”他大声说。“我们不是人。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="译本序">译本序</h2>
<ul>
<li>
<p>他在小说中创造的“老大哥”、“双重思想”、“新话”等词汇都收进了权威的英语词典，甚至由他的姓衍生了一个形容词“奥威尔式”，不断地出现在报道国际新闻的记者的笔下，这在其他作家身上是很罕见的，如果不是绝无仅有的话。</p>
</li>
<li>
<p>奥威尔只是靠成绩优异，才免费进了一所二流的寄宿学校圣塞浦里安，后来又靠成绩优异考取了奖学金，进了英国最著名的伊顿公学。</p>
</li>
<li>
<p>“对一个孩子最残酷的事莫过于把他送到一所富家子弟的学校中去。一个意识到贫穷的孩子由于虚荣而感到痛苦，是成人所不能想象的。”</p>
</li>
<li>
<p>“一个不合群的孩子在寄宿学校吃到的苦头可能是英国唯一可以与一个外人在极权主义社会中感到的孤立相比的事。”</p>
</li>
<li>
<p>“我感到我必须洗赎那压得我透不过气来的罪咎……我觉得我不仅仅应该与帝国主义决裂，而且也应该与一切人对人的统治决裂。我希望融合到受压迫的人中间去，成为他们之中的一个，站在他们的一边反对他们的暴君……在这时候，在我看来，没有出息倒是唯一的美德。自我奋斗，哪怕稍有成就，一年能挣上几百镑，我觉得稍有这种想法都是精神丑恶的，是一种欺压行为。”</p>
</li>
<li>
<p>“我尝到过贫困的生活和失败的感觉。这增强了我天生对权威的憎恨，使我第一次充分意识到工人阶级的存在，而在缅甸的工作则使我对帝国主义的性质有了一些认识。但这些经验不足以给我确切的政治方向。”</p>
</li>
<li>
<p>出身和教育养成的说话口音，就是一个不可逾越的障碍。</p>
</li>
<li>
<p>“这是什么口音！一种饱食终日、无所事事、沾沾自喜、过分自信的口音，一种深沉、洪亮而带有恶意的口音，你没有看到也可以凭本能感到，他们是一切智慧的思想、细腻的感情、美丽的事物的敌人。怪不得大家都这么憎恨我们。”</p>
</li>
<li>
<p>“英国人的（阶级）烙印是打在舌头上的。”</p>
</li>
<li>
<p>有一个故事很生动地说明了这一点：他为了体验穷人的生活，曾经伪装酒醉的流浪汉，去辱骂一个警察，想被抓到监狱里去尝一尝与穷人一起过圣诞节的滋味。但是那个警察从他醉酒后的口音，一下就听出了这个身披借来的破烂衣服的醉鬼是一个出身伊顿公学的地道绅士，并没有上钩，而是善意相劝，叫他乖乖地回家去。</p>
</li>
<li>
<p>他的侄女的话最能一针见血地说明问题，她对奥威尔的传记作家克立克说：“他的一切疙瘩都来自这个事实：他认为他应该去爱他的同胞，但是他连同他们随便交谈都做不到。”</p>
</li>
<li>
<p>极权主义乃是现代专制主义。它从本质上来说与古代或中世纪的专制主义毫无二致，但与这些传统的专制主义不同的，或者说有过之而无不及的地方是，极权主义掌握了现代政治的统治手段，包括政治组织、社会生活、舆论工具、艺术创作、历史编纂甚至个人思想和隐私，无不在一个有形和无形的“老大哥”的全面严密控制之下（极权主义的英文“Totalitarianism”意即指此，因此也可译“全面权力主义”），这是中外历史上任何一个暴君所做不到的，更是他们连想也想不到的。</p>
</li>
<li>
<p>极权主义的危害，向世人敲起警钟，让大家都看到它的危害性——对伦理的破坏，对思想的控制，对自由的剥夺，对人性的扼杀，对历史的捏造和篡改……——是何等的重要。如果听任它横行，在不久的将来，人类社会将陷入万劫不复的境地。</p>
</li>
</ul>
<h2 id="第一部">第一部</h2>
<ul>
<li>
<p>老大哥在看着你。</p>
</li>
<li>
<p>你发出的每一个声音，都是有人听到的，你做出的每一个动作，除非在黑暗中，都是有人仔细观察的。</p>
</li>
<li>
<p>战争即和平自由即奴役无知即力量</p>
</li>
<li>
<p>真理部负责新闻、娱乐、教育、艺术；和平部负责战争；友爱部维持法律和秩序；富裕部负责经济事务。用新话来说，它们分别称为真部、和部、爱部、富部。</p>
</li>
<li>
<p>果尔德施坦因是个叛徒、变节分子，他一度（那是很久以前了，到底多久，没有人记得清楚）是党的领导人物之一，几乎与老大哥本人平起平坐，后来从事反革命活动，被判死刑，却神秘地逃走了，不知下落。两分钟仇恨节目每天不同，但无不以果尔德施坦因为其重要人物。他是头号叛徒，最早污损党的纯洁性的人。后来的一切反党罪行、一切叛国行为、破坏颠覆、异端邪说、离经叛道都是直接起源于他的教唆。</p>
</li>
<li>
<p>果尔德施坦因在对党进行他一贯的恶毒攻击，这种攻击夸张其事，不讲道理，即使一个儿童也能一眼看穿，但是听起来却又似乎有些道理，使你觉得要提高警惕，别人要是没有你那么清醒的头脑，可能上当受骗。他在谩骂老大哥，攻击党的专政，要求立即同欧亚国媾和，主张言论自由、新闻自由、集会自由、思想自由，歇斯底里地叫嚷说革命被出卖了——所有这一切的话都是用大字眼飞快地说的，可以说是对党的演说家一贯讲话作风的一种模仿，甚至还有一些新话的词汇；说真的，比任何党员在实际生活中一般使用的新话词汇还要多。</p>
</li>
<li>
<p>总是有傻瓜上当受骗。</p>
</li>
<li>
<p>两分钟仇恨所以可怕，不是你必须参加表演，而是要避不参加是不可能的。</p>
</li>
<li>
<p>不那么做是办不到的。掩饰你真实的感情，控制你脸部的表情，大家做什么你就做什么，这是一种本能的反应。但是有那么一两秒钟的时间里，他的眼睛里的神色很可能暴露了他自己。正好是在这一刹那，那件有意义的事情发生了——如果说那件事情真的发生了的话。</p>
</li>
<li>
<p>“我同你一致，”奥勃良似乎这样对他说。“我完全知道你的想法。你的蔑视、仇恨、厌恶，我全都知道，不过别害怕，我站在你的一边！”</p>
</li>
<li>
<p>打倒老大哥打倒老大哥打倒老大哥打倒老大哥打倒老大哥</p>
</li>
<li>
<p>不论他是写了打倒老大哥，还是他没有写，并没有什么不同。不论他是继续写日记，还是他没有继续写，也没有什么不同。</p>
</li>
<li>
<p>他们会枪毙我我不在乎他们会在我后脑勺打一枪我不在乎打倒老大哥他们总是在后脑勺给你一枪我不在乎打倒老大哥</p>
</li>
<li>
<p>迟迟不去开门是最糟糕的事情。</p>
</li>
<li>
<p>他们崇拜党和党的一切。唱歌、游行、旗帜、远足、木枪操练、高呼口号、崇拜老大哥——所有这一切对他们来说都是非常好玩的事。他们的全部凶残本性都发泄出来，用在国家公敌，用在外国人、叛徒、破坏分子、思想犯身上了。三十岁以上的人惧怕自己的孩子几乎是很普遍的事。</p>
</li>
<li>
<p>“我们将在没有黑暗的地方相见。”</p>
</li>
<li>
<p>过去已经死亡，未来无法想象。</p>
</li>
<li>
<p>不论在钱币上、邮票上、书籍的封面上、旗帜上、招贴画上、香烟匣上——到处都有。眼光总是盯着你，声音总是在你的耳边响着。不论是睡着还是醒着，在工作还是在吃饭，在室内还是在户外，在澡盆里还是在床上——没有躲避的地方。除了你脑壳里的几个立方厘米以外，没有东西是属于你自己的。</p>
</li>
<li>
<p>千篇一律的时代，孤独的时代，老大哥的时代，双重思想的时代，向未来，向过去，向一个思想自由、人们各不相同、但生活并不孤独的时代——向一个真理存在、做过的事不能抹掉的时代致敬！</p>
</li>
<li>
<p>思想罪不会带来死亡：思想罪本身就是死亡。</p>
</li>
<li>
<p>现在他既然认识到自己是已死的人，那么尽量长久地活着就是一件重要的事。</p>
</li>
<li>
<p>如果别人都相信党说的谎话——如果所有记录都这么说——那么这个谎言就载入历史而成为真理。</p>
</li>
<li>
<p>“谁控制过去就控制未来；谁控制现在就控制过去。”</p>
</li>
<li>
<p>过去是可以改变的，但是却从来没有改变过。凡是现在是正确的东西，永远也是正确的。</p>
</li>
<li>
<p>知与不知，知道全部真实情况而却扯一些滴水不漏的谎话，同时持两种互相抵消的观点，明知它们互相矛盾而仍都相信，用逻辑来反逻辑，一边表示拥护道德一边又否定道德，一边相信民主是办不到的一边又相信党是民主的捍卫者，忘掉一切必须忘掉的东西而又在需要的时候想起它来，然后又马上忘掉它，而尤其是，把这样的做法应用到做法本身上面——这可谓绝妙透顶了：有意识地进入无意识，而后又并不意识到你刚才完成的催眠。</p>
</li>
<li>
<p>如果除了你自己的记忆以外不存在任何记录，那你怎么能够确定哪怕是最明显的事实呢？</p>
</li>
<li>
<p>你所知道的只是，每个季度在纸面上都生产了天文数字的鞋子，但是大洋国里却有近一半的人口打赤脚。</p>
</li>
<li>
<p>今天他应该表扬奥吉尔维同志。不错，根本没有奥吉尔维同志这样一个人，但是只要印上几行字，伪造几张照片，就可以马上使他存在。</p>
</li>
<li>
<p>一个小时以前还没有想到过的奥吉尔维同志，如今已成了事实。他觉得很奇怪，你能够创造死人，却不能创造活人。在现实中从来没有存在过的奥吉尔维同志，如今却存在于过去之中，一旦伪造工作被遗忘后，他就会像查理曼大王或者恺撒大帝一样真实地存在，所根据的是同样的证据。</p>
</li>
<li>
<p>说真的，如果一个词不过是另一个词的反面，那有什么理由存在呢？以‘好’为例。如果你有一个‘好’字，为什么还需要‘坏’字？‘不好’就行了——而且还更好，因为这正好是‘好’的反面，而另外一字却不是。</p>
</li>
<li>
<p>你难道不明白，新话的全部目的是要缩小思想的范围？最后我们要使得大家在实际上不可能犯任何思想罪，因为将来没有词汇可以表达。凡是有必要使用的概念，都只有一个词来表达，意义受到严格限制，一切附带含义都被消除忘掉。</p>
</li>
<li>
<p>词汇逐年减少，意识的范围也就越来越小。当然，即使在现在，也没有理由或借口可以犯思想罪。这仅仅是个自觉问题，现实控制问题。但最终，甚至这样的需要也没有了。语言完善之时，即革命完成之日。</p>
</li>
<li>
<p>“到二〇五〇年，也许还要早些，所有关于老话的实际知识都要消灭。过去的全部文学都要销毁，乔叟、莎士比亚、弥尔顿、拜伦——他们只存在于新话的版本中，不只改成了不同的东西，而且改成了同他们原来相反的东西。甚至党的书籍也要改变。甚至口号也要改变。自由的概念也被取消了，你怎么还能叫‘自由即奴役’的口号？届时整个思想气氛就要不同了。事实上，将来不会再有像我们今天所了解的那种思想。正统的意思是不想——不需要想。正统即没有意识。”</p>
</li>
<li>
<p>电幕上继续不断地播送神话般的数字。同去年相比，食物、衣服、房屋、家具、铁锅、燃料、轮船、直升机、书籍、婴孩的产量都增加了——除了疾病、犯罪、发疯以外，什么都增加了。逐年逐月，每时每刻，不论什么人，什么东西都在迅速前进。</p>
</li>
<li>
<p>如果你不看一下周围，你就会很容易相信，党所树立的模范体格——魁梧高大的小伙子和胸脯高耸的姑娘，金黄的头发，健康的肤色，生气勃勃，无忧无虑——是存在的，甚至是占多数。实际上，从他所了解的来看，一号空降场大多数人是矮小难看的。很难理解，各部竟尽是那种甲壳虫一样的人：又矮又小，没有到年纪就长胖了，四肢短小，忙忙碌碌，动作敏捷，胖胖的没有表情的脸上，眼睛又细又小。在党的统治下似乎这一类型的人繁殖得最快。</p>
</li>
<li>
<p>他觉得他凭本能就能知道，谁能生存，谁会消灭，尽管究竟靠什么才能生存，则很难说。</p>
</li>
<li>
<p>他们不到觉悟的时候，就永远不会造反；他们不造反，就不会觉悟。</p>
</li>
<li>
<p>很有可能，历史书中的几乎每一句话，甚至人们毫无置疑地相信的事情，都完全出之于虚构。</p>
</li>
<li>
<p>过去给抹掉了，而抹掉本身又被遗忘了，谎言便变成了真话。</p>
</li>
<li>
<p>所谓自由就是可以说二加二等于四的自由。承认这一点，其他一切就迎刃而解。</p>
</li>
<li>
<p>“如果有希望的话，希望在无产者身上。”</p>
</li>
<li>
<p>在记忆不到而书面记录又经篡改伪造的这样的情况下，党声称它已改善了人民的生活，你就得相信，因为不存在，也永远不会存在任何可以测定的比较标准。</p>
</li>
<li>
<p>圣克利门特教堂的钟声说，橘子和柠檬，圣克利门特教堂的钟声说，你欠我三个铜板！</p>
</li>
</ul>
<h2 id="第二部">第二部</h2>
<ul>
<li>
<p>他想，要是在从前，一个男人看一个女人的肉体，就动了欲念，事情就是那么单纯。可是如今已没有纯真的爱或纯真的欲念了。没有一种感情是纯真的，因为一切都夹杂着恐惧和仇恨。他们的拥抱是一场战斗，高潮就是一次胜利。这是对党的打击。这是一件政治行为。</p>
</li>
<li>
<p>“你做爱的时候，你就用去了你的精力；事后你感到愉快，天塌下来也不顾。他们不能让你感到这样。他们要你永远充满精力。什么游行，欢呼，挥舞旗帜，都只不过是变了质、发了酸的性欲。要是你内心感到快活，那么你有什么必要为老大哥、三年计划、两分钟仇恨等等他们这一套名堂感到兴奋？”</p>
</li>
<li>
<p>“那只是因为我赞成积极的事情，不赞成消极的事情。在我们参加的这场比赛里，我们是无法取胜的。只不过有几种失败比别几种失败好一些，仅此而已。”</p>
</li>
<li>
<p>他想到，你如果同一个女人生活在一起，这种失望大概是不断发生的正常的事，因此突然对她感到了一种深厚的柔情，这是他从来没有感到过的。他真希望他们是一对结婚已有十年历史的夫妇。他真希望他们两人像现在那样在街上走着，不过是公开的，不带恐惧，谈着琐碎的事儿，买着家用的杂物。他尤其希望他们能有一个地方可以单独在一起，而不必感到每次相会非做爱不可。</p>
</li>
<li>
<p>玻璃的弧形表面仿佛就是苍穹，下面包藏着一个小小的世界，连大气层都一并齐全。他感到他可以进入这个世界中去，事实上他已经在里面了，还有那红木大床、折叠桌、座钟、铜板蚀刻画，还有那镇纸本身。那镇纸就是他所在的那间屋子，珊瑚是裘莉亚和他自己的生命，有点永恒地嵌在这个水晶球的中心。</p>
</li>
<li>
<p>“谁管它？总是不断地打仗，一个接着一个，反正你知道所有的消息都是谎话。”</p>
</li>
<li>
<p>在同她说话中，他发现假装正统而又不知正统为何意是件十分容易的事。可以说，在没有理解能力的人身上，党把它的世界观灌输给他们最为成功。最明显不过的违反现实的东西，都可以使他们相信，因为他们从来不理解，对他们的要求是何等荒唐，因为他们对社会大事不发生兴趣，从来不去注意发生了什么事情。正是由于缺乏理解，他们没有发疯。他们什么都一口吞下，吞下的东西对他们并无害处，因为没有残渣遗留，就像一颗玉米粒不加消化地通过一只鸟的体内一样。</p>
</li>
<li>
<p>始即是终，终寓于始。</p>
</li>
<li>
<p>如果你爱一个人，你就爱他，当你没有别的东西可以给他时，你仍把你的爱给他。最后一块巧克力给抢走时，他母亲怀里抱着孩子。这没有用，改变不了任何东西，并不能变出一块巧克力来，并不能使那孩子或她自己逃脱死亡；但是她仍抱着她，似乎这是很自然的事。</p>
</li>
<li>
<p>他们并不忠于一个政党，或者一个国家，或者一个思想，他们却相互忠于对方。他有生以来第一次不再轻视无产者，或者只把他们看成是一种有朝一日会爆发出生命来振兴全世界的蛰伏的力量。无产者仍有人性。他们没有麻木不仁。他们仍保有原始的感情，而他自己却是需要作出有意识的努力才能重新学会这种感情。</p>
</li>
<li>
<p>“无产者是人，”他大声说。“我们不是人。”</p>
</li>
<li>
<p>如果你感到保持人性是值得的，即使这不能有任何结果，你也已经打败了他们。</p>
</li>
<li>
<p>他们可以把你所做的，或者说的，或者想的都事无巨细地暴露无遗，但是你的内心仍是攻不破的，你的内心的活动甚至对你自己来说也是神秘的。</p>
</li>
<li>
<p>“你们会听到关于存在兄弟会的传说。没有疑问，你们已经形成了自己对它的形象。你们大概想象它是一个庞大的密谋分子地下网，在地下室里秘密开会，在墙上刷标语，用暗号或手部的特殊动作互相打招呼。没有这回事。兄弟会的会员没有办法认识对方，任何一个会员所认识的其他会员，人数不可能超过寥寥几个。就是果尔德施坦因本人，如果落入思想警察之手，也不能向他们提供全部会员名单，或者提供可以使他们获得全部名单的情报。没有这种名单。兄弟会所以不能消灭掉就是因为它不是一般观念中的那种组织。把它团结在一起的，只不过是一个不可摧毁的思想。除了这个思想之外，你们没有任何东西可以作你们的依靠。你们得不到同志之谊，得不到鼓励。你们最后被逮住时，也得不到援助。我们从来不援助会员。至多，绝对需要灭口时，我们有时会把一片剃须刀片偷偷地送到牢房里去。你们得习惯于在没有成果、没有希望的情况下生活下去。你们工作一阵子以后，就会被逮住，就会招供，就会死掉。这是你们能看到的唯一结果。在我们这一辈子里，不可能发生什么看得见的变化。我们是死者。我们的唯一真正的生命在于将来。我们将是作为一抔黄土，几根枯骨参加将来的生活。但是这将来距现在多远，谁也不知道。可能是一千年。目前除了把神志清醒的人的范围一点一滴地加以扩大以外，别的事情都是不可能的。我们不能采取集体行动。我们只能把我们的思想通过个人传播开去，通过一代传一代地传下去。在思想警察面前，没有别的办法。”</p>
</li>
<li>
<p>圣克利门特教堂的钟声说，橘子和柠檬，圣马丁教堂的钟声说，你欠我三个铜板，老巴莱教堂的钟声说，你什么时候归还？肖尔迪区教堂的钟声说，等我发了财。</p>
</li>
<li>
<p>世界上如果人人都工作时间短、吃得好、住的房子有浴室和电冰箱，私人有汽车甚至飞机，那么最重要形式的不平等也许早已消失了。财富一旦普及，它就不分彼此。没有疑问，可以设想有这样一个社会，从个人财物和奢侈品来说，财富是平均分配的，而权力仍留在少数特权阶层人物的手中。但是实际上这种社会不能保持长期稳定。因为，如果人人都能享受闲暇和生活保障，原来由于贫困而愚昧无知的绝大多数人就会学习文化，就会独立思考；他们一旦做到这一点，迟早就会认识到少数特权阶层的人没有作用，他们就会把他们扫除掉。从长期来看，等级社会只有在贫困和无知的基础上才能存在。二十世纪初期有些思想家梦想恢复到过去的农业社会，那不是实际的解决办法。那同机械化的趋势相冲突，而后一个趋势在整个世界里都已几乎带有本能性质了，何况，任何国家要是工业落后，军事上就会束手无策，必然会被比较先进的敌国所直接或间接控制。</p>
</li>
<li>
<p>用限制生产来保持群众贫困，也不是个令人满意的解决办法。在资本主义最后阶段，大概在一九二〇年到一九四〇年之间曾经大规模这么做过。许多国家听任经济停滞，土地休耕，资本设备不增，大批人口不给工作而由国家救济，保持半死半活。但这也造成军事上的孱弱，由于它所造成的贫困并无必要，必然会引起反对。因此问题是，如何维持经济的轮子继续转动而又不增加世界上的真正财富。物品必须生产，但不一定要分配出去。在实践中，要做到这一点的唯一办法是不断打仗。</p>
</li>
<li>
<p>战争的基本行为就是毁灭，不一定是毁灭人的生命，而是毁灭人类的劳动产品。有些物资原来会使得群众生活得太舒服了，因而从长期来说，也会使得他们太聪明了，战争就是要把这些物资打得粉碎，化为轻烟，沉入海底。战争武器即使没有实际消耗掉，但继续制造它们，仍是一方面消耗劳动力而另一方面又不生产消费品的方便办法。例如水上浮动堡垒所耗劳动力可以制造好几百艘货轮。最后因为陈旧而把它拆卸成为废料，这对无论谁都没有物质上的好处，但为了建造新的水上浮动堡垒，却又要花大量劳动力。原则上，战争计划总是以在满足了本国人口最低需要后把可能剩余的物资耗尽为度。</p>
</li>
<li>
<p>党有两个目的，一个是征服整个地球，一个是永远消灭独立思考的可能性。因此党急于要解决的也有两个大问题。一个是如何在违背一个人本人意愿情况下发现他在想些什么，另外一个是如何在几秒钟之内未加警告就杀死好几亿人。</p>
</li>
<li>
<p>三个超级国家不仅不能征服对方，而且征服了也没有什么好处。相反，只要它们继续冲突，它们就等于互相支撑，就像三捆堆在一起的秫秸一样。</p>
</li>
<li>
<p>在哲学、宗教、伦理、政治方面，二加二可能等于五，但你在设计枪炮飞机时，二加二只能等于四。效能低劣的民族迟早要被征服，要提高效能，就不能有幻觉。此外，要有效能，必须能够向过去学习，这就需要对过去发生的事有个比较正确的了解。当然，报纸和历史书总带有色彩和偏见，但今天实行的那种伪造就不可能发生。战争是保持神志清醒的可靠保障，就统治阶级而言，这也许是所有保障中最重要的保障。战争虽有胜负，但任何统治阶级都不能完全乱来。</p>
</li>
<li>
<p>战争是由一国统治集团对自己的老百姓进行的，战争的目的不是征服别国领土或保卫本国领土，战争的目的是保持社会结构不受破坏。因此，“战争”一词已名不符实。如果说战争由于持续不断已不复存在，此话可能属实。</p>
</li>
<li>
<p>如果三个超级国家互相不打仗，而同意永远和平相处，互不侵犯对方的疆界，效果大概相同。因为在那样情况下，每一国家仍是一个自给自足的天地，永远不会受到外来危险的震动。因此真正永久的和平同永久的战争一样。这就是党的口号“战争即和平”的内在含义，不过大多数党员对此了解是很肤浅的。</p>
</li>
<li>
<p>上等人的目标是要保持他们的地位。中等人的目标是要同高等人交换地位。下等人的特点始终是，他们劳苦之余无暇旁顾，偶尔才顾到日常生活以外的事，因此他们如果有目标的话，无非是取消一切差别，建立一个人人平等的社会。这样，在历史上始终存在着一场一而再再而三发生的斗争，其大致轮廓相同。在很长时期里，上等人的权力似乎颇为巩固，但迟早总有这样一个时候，他们对自己丧失了信心，或者对他们进行有效统治的能力丧失了信心，或者对两者都丧失了信心。他们就被中等人所推翻，因为中等人标榜自己为自由和正义而奋斗，把下等人争取到自己一边来。中等人一旦达到目的就把下等人重又推回到原来的被奴役地位，自己变成了上等人。不久，其他两等人中有一等人，或者两等人都分裂出一批新的中等人来，这场斗争就周而复始。三等人中只有下等人从来没有实现过自己的目标，哪怕是暂时实现自己的目标。若说整个历史从来没有物质方面的进步，那不免言之过甚。即使在今天这个衰亡时期，一般人在物质上也要比几百年前好一些。但是不论财富的增长，或态度的缓和，或改革和革命，都没有使人类接近平等一步。从下等人的观点来看，历史若有变化，大不了是主子名字改变而已。</p>
</li>
<li>
<p>过去，社会需要分成等级是上等人的学说。国王、贵族和教士、律师等这类寄生虫都宣传这种学说，并且用在死后冥界里得到补偿的诺言使这个学说容易为人所接受。而中等人只要还在争取权力的时候，总是利用自由、正义、博爱这种好听的字眼。但是现在，这些还没有居于统率地位、但预计不久就可以居于统率地位的人，却开始攻击这种人类大同的思想了。在过去，中等人在平等的旗帜下闹革命，一旦推翻了原来的暴政，自己又建立了新的暴政。现在这种新的一派中等人等于是事先就宣布要建立他们的暴政。</p>
</li>
<li>
<p>在本世纪中叶出现的新的社会主义运动，在大洋国称为英社，在欧亚国称为新布尔什维主义，在东亚国一般称为崇死，其明确目标都是要实现不自由和不平等。当然，这种新运动产生于老运动，往往保持了老运动原来的招牌，而对于它们的意识形态只是嘴上说得好听而已。</p>
</li>
<li>
<p>统治集团只有在四种情况下才会丧失权力；或者是被外部力量所征服；或者是统治无能，群众起来造反；或者是让一个强大而不满的中等人集团出现；或者是自己丧失了统治的信心和意志。</p>
</li>
<li>
<p>在本世纪中叶以后，第一种危险在现实生活中确已消失。三个强国瓜分了世界，不论哪一国都不可征服，除非是通过人口数字上的缓慢变化，而政府只要有广泛的权力，这可以很容易加以避免。第二个危险也仅仅是理论上的危险。群众从来不会自动起来造反，他们从来不会由于身受压迫而起来造反。说真的，只要不给他们比较的标准，他们从来不会意识到自己受压迫。过去时代反复出现的经济危机完全没有必要，现在不会允许发生，不过可能发生其他同样大规模的失调，而且也的确发生，但不会产生政治后果，因为不满情绪没有办法可以明确表达出来。</p>
</li>
<li>
<p>从我们目前的统治者的观点来看，唯一真正的危险是有一个新的集团分裂出去，这个集团的人既有能力，又没有充分发挥作用，因此权力欲很大；还有就是在统治者自己的队伍中产生自由主义和怀疑主义。这也就是说，问题是教育，是要对领导集团和它下面的人数更多的执行集团这两批人的觉悟不断地发挥影响。至于群众的觉悟只需在反面加以影响就行了。</p>
</li>
<li>
<p>老大哥一贯正确，全才全能。一切成就、一切胜利、一切科学发明、一切知识、一切智慧、一切幸福、一切美德，都直接来自他的领导和感召，没有人见到过老大哥。他是标语牌上的一张脸，电幕上的一个声音。我们可以相当有把握地说，他是永远不会死的，至于他究竟是哪一年生的，现在也已经有相当多的人感到没有把握了。老大哥是党用来给世人看到的自己的一个伪装。他的作用是充当对个人比较容易感到而对组织不大容易感到的爱、敬、畏这些感情的集中点。在老大哥之下是核心党，党员限在六百万人，即占大洋国人口不到百分之二。核心党下面是外围党，如果说核心党是国家的头脑，外围党就可以比作手。外围党下面是无声的群众，我们习惯称为“无产者”，大概占人口百分之八十五。按我们上面分类的名称，无产者即下等人，因为赤道地带的奴隶人口由于征服者不断易手，不能算为整个结构中的固定部分或必要部分。</p>
</li>
<li>
<p>寡头政体的关键不是父子相传，而是死人加于活人身上的一种世界观，一种生活方式的延续。一个统治集团只要能够指定它的接班人就是一个统治集团。党所操心的不是维系血统相传而是维系党的本身的永存。由谁掌握权力并不重要，只要等级结构保持不变。</p>
</li>
<li>
<p>我们时代的一切信念、习惯、趣味、感情、思想状态，其目的都是为了要保持党的神秘，防止有人看穿目前社会的真正本质。目前不可能实际发生造反，或者造反的先声。从无产阶级那里，没有什么可以担心的。你不去惹他们，他们就会一代又一代地、一个世纪又一个世纪地做工、繁殖、死亡，不仅没有造反的冲动，而且也没有能力理解可以有一个不同于目前世界的世界。只有在工业技术的发展使得你必须给他们以较高的教育的时候，他们才会具有危险性；但是由于军事和商业竞争已不复重要，民众教育水平实际已趋下降。群众有什么看法，或者没有什么看法，已被视为无足轻重的事。因为他们没有智力，所以不妨给予学术自由。而在一个党员身上，哪怕在最无足轻重的问题上都不容有丝毫的不同意见。</p>
</li>
<li>
<p>党员从生下来一直到死，都在思想警察的监视下生活。即使他在单独的时候，他也永远无法确知自己的确是单独一人。不论他在哪里，不论他在睡觉还是在醒着，在工作还是在休息，在澡盆里还是在床上，他都可能受到监视，事先没有警告，事后也不知自己已受到监视。他做的事情没有一件是可以放过的。他的友谊、他的休息、他对妻儿态度、他单独的时候的面部表情、他在睡梦中喃喃说的话、甚至他身体特有的动作，都受到严密考察。实际行为不端那就不用说了，而且不论多么细微的任何乖张古怪行为，任何习惯的变化，任何神经性习惯动作，凡是可以视为内心斗争的征象的，无不被察觉到。他在任何方面都没有选择余地。另外一方面，他的行为并不受到任何法律或任何明文规定的行为法则管辖。大洋国内没有法律。有些思想和行为，如经察觉，必死无疑，但是并没有受到正式的取缔禁止，没完没了的清洗、逮捕、拷打、监禁、气化都不是当作犯了实际罪行的惩罚，而仅仅是为了把一些有朝一日可能犯罪的人清除掉。党员不仅需要有正确的观点，而且需要正确的本能。要求他必须具备的各种信念和态度，有许多从来没有向他明确说明过，而且若要明确说明，势必暴露英社固有的内在矛盾。如果他是个天生正统的人（新话叫思想好），他不论在什么情况下想也不用想，都会知道，正确的信念应该是什么，应该有什么感情。反正，在儿童时代就受到以犯罪停止、黑白、双重思想这样的新话词汇为中心的细致的精神训练，使他不愿意也不能够对任何问题有太深太多的想法。</p>
</li>
<li>
<p>犯罪停止的意思就是指在产生任何危险思想之前出于本能地悬崖勒马的能力。这种能力还包括不能理解类比，不能看到逻辑错误，不能正确了解与英社原则不一致的最简单的论点、对于任何可以朝异端方向发展的思路感到厌倦、厌恶。</p>
</li>
<li>
<p>篡改过去所以必要，有两个原因。一个是辅助性的原因，也可以说是预防性的原因。那就是，党员所以和无产者那样能够容忍当前的生活条件，一部分原因是他没有比较的标准。为了要使他相信他比他的祖先生活过得好，物质生活平均水平不断地提高，必须使他同过去隔绝开来，就像必须使他同外国隔绝开来一样。但是篡改过去，还有一个重要得多的原因是，需要保卫党的一贯正确性。为了要让大家看到党的预言在任何情况下都是正确的，不仅需要不断修改过去的讲话、统计、各种各样的纪录，使之符合当前状况，而且不能承认在理论上或政治友敌关系上发生过任何变化。因为改变自己的思想，或者甚至改变自己的政策，无异承认自己的弱点。</p>
</li>
<li>
<p>篡改过去是英社的中心原则。这一原则认为，过去并不客观存在，它只存在于文字纪录和人的记忆中。凡是记录和记忆一致的东西，不论什么，即是过去。既然党完全控制纪录，同样也完全控制党员的思想，那么党要过去成为什么样子就必然是什么样子。同样，虽然过去可以篡改，但在任何具体问题上都决不承认篡改过。因为，不论当时需要把它改成什么样子，在改以后，新改出来的样子就是过去；任何其他不同样子的过去都没有存在过。甚至在同一件事在一年之中得改了好几次而改得面目俱非时，也是如此。党始终掌握绝对真理，很明显，绝对的东西决不可能会不同于现在的样子。下文将要谈到，要控制过去首先要依靠训练记忆力。要做到所有的文字记录都符合当前的正统思想，这样机械的事好办。但还需要使得大家对所发生的事的记忆也按所要求的样子。既然有必要改变一个人的记忆或者篡改文字记录，那么也就有必要忘掉你曾经那样做过。可以像学会其他思想上的手法一样学会这种手法。大多数党员和所有正统的和聪明的人都学会了这种手法。在老话中，这很老实地称为“现实控制”。在新话中这叫“双重思想”，不过“双重思想”所包括的还有很多别的东西。</p>
</li>
<li>
<p>双重思想意味着在一个人的思想中同时保持并且接受两种相互矛盾的认识的能力。党内知识分子知道自己的记忆应向什么方向加以改变；因此他也知道他是在篡改现实。但是由于运用了双重思想，他也使自己相信现实并没有遭到侵犯。这个过程必须是自觉的，否则就不能有足够的精确性；但也必须是不自觉的，否则就会有弄虚作假的感觉，因此也有犯罪的感觉。双重思想是英社的核心思想，因为党的根本目的就是既要利用自觉欺骗，而同时又保持完全诚实的目标坚定性。有意说谎，但又真的相信这种谎言；忘掉可以拆穿这种谎言的事实，然后在必要的时候又从忘怀的深渊中把事实拉了出来，需要多久就维持多久；否认客观现实的存在，但与此同时又一直把所否认的现实估计在内——所有这一切都是绝对必要的，不可或缺。甚至在使用双重思想这个字眼的时候也必须运用双重思想。因为你使用这个字眼就是承认你在篡改现实；再来一下双重思想，你就擦掉了这个认识；如果反复，永无休止，谎言总是抢先真理一步。最后靠双重思想为手段，党终于能够抑制历史的进程，而且谁知道呢，也许还继续几千年有这能力。</p>
</li>
<li>
<p>过去所有的寡头政体所以丧失权力，或者是由于自己僵化，或者是由于软化。所谓僵化，就是它们变得愚蠢和狂妄起来，不能适应客观情况的变化，因而被推翻掉。所谓软化，就是它们变得开明和胆怯起来，在应该使用武力的时候却作了让步，因此也被推翻掉了。那就是说，它们丧失权力或者是通过自觉，或者是通过不自觉。而党的成就是，它实行了一种思想制度，能够使两种情况同时并存。党的统治要保持长久不衰，没有任何其他的思想基础。你要统治，而且要继续统治，你就必须要能够打乱现实的意识。因为统治的秘诀就是把相信自己的一贯正确同从过去错误汲取教训的能力结合起来。</p>
</li>
<li>
<p>双重思想最巧妙的运用者就是发明双重思想、知道这是进行思想欺骗的好办法的那些人。在我们的社会里，最掌握实际情况的人也是最不是根据实际看待世界的人。总的来说，了解越多，错觉越大；人越聪明，神志越不清醒。关于这一点，有一个明显的例子：你的社会地位越高，战争歇斯底里越甚。对于战争的态度最最近乎理性的是那些争夺地区的附属国人民。在他们看来，战争无非是一场继续不断的灾祸，像潮汐一样在他们身上淹过去又淹过来。哪一方得胜对他们毫无相干。他们只知道改朝换代不过是为新的主子干以前同样的活，新主子对待他们与以前的主子并无差别。我们称为“无产者”的那些略受优待的工人只是偶尔意识到有战争在进行。必要的时候可以驱使他们发生恐惧和仇恨的狂热，但是如果听之任之，他们就会长期忘掉有战争在进行。只有在党内，尤其在核心党内才能找到真正的战争热情。最坚决相信要征服全世界的人，是那些知道这是办不到的人。这种矛盾的统一的奇怪现象——知与无知，怀疑与狂热——是大洋国社会主要特点之一。官方的意识形态中充满了矛盾，甚至在没有实际理由存在这种矛盾的地方，也存在这种矛盾。例如，社会主义运动原来所主张的一切原则，党无不加以反对和攻击，但又假社会主义之名，这么做，党教导大家要轻视工人阶级，这是过去好几百年来没有先例的，但是又要党员穿着一度是体力工人才穿的制服，所以选定这种服装也是由于这个缘故。党有计划地破坏家庭关系，但是给党的领导人所起的称呼又是直接打动家庭感情的称呼。甚至统治我们的四个部的名称，也说明有意歪曲事实之厚颜无耻到了什么程度。和平部负责战争，真理部负责造谣，友爱部负责拷打，富裕部负责挨饿。这种矛盾不是偶然的，也不是出于一般的伪善，而是有意运用双重思想。因为只是调和矛盾才能无限制地保持权力。古老的循环不能靠别的办法打破。如果要永远避免人类平等，如果我们所称的上等人要永远保持他们的地位，那么目前的心理状态就必须加以控制。</p>
</li>
<li>
<p>为什么要避免人类平等？如果说上述情况不错的话，那么这样大规模地、计划缜密地努力要在某一特定时刻冻结历史的动机又是什么呢？</p>
</li>
<li>
<p>第一章像第三章一样，实际上并没有告诉他什么他所不知道的东西，只不过是把他已经掌握的知识加以系统化而已。但是读过以后，他比以前更加清楚，自己并没有发疯。居于少数地位，哪怕是一个人的少数，也并不使你发疯。有真理，就有非真理，如果你坚持真理，哪怕全世界都不同意你，你也没有发疯。</p>
</li>
<li>
<p>神志清醒不是统计数字所能表达的</p>
</li>
<li>
<p>他以前从来没有想到，一个五十岁妇女的身体由于养儿育女而膨胀到异乎寻常的肥大，后来又由于辛劳过度而粗糙起来，像个熟透了的萝卜，居然还可能是美丽的。但是实际情况却是如此，而且，他想，为什么不可以呢？那壮实的、没有轮廓的身躯像一块大理石一般，那粗糙发红的皮肤与一个姑娘的身体之间的关系正如玫瑰的果实同玫瑰的关系一样。为什么果实要比花朵低一等呢？</p>
</li>
<li>
<p>他们只有靠用嘴巴才能把他们头脑中的秘密传来传去。但是下面那个女人没有头脑，她只有强壮的胳膊、热情的心肠和多产的肚皮。他心里想她不知生过了多少子女。很可能有十五个。她曾经有过一次像野玫瑰一样鲜花怒放的时候，大概一年左右，接着就突然像受了精的果实一样膨胀起来，越来越硬，越红，越粗，此后她的一生就是洗衣服、擦地板、补袜子、烧饭，这样打扫缝补，先是为子女，后是为孙儿，没完没了，持续不断，整整干了三十年，到了最后，还在歌唱。他对她感到一种神秘的崇敬，这种感情同屋顶烟囱后面一望无际的碧蓝的晴空景色有些掺杂在一起。奇怪的是对每个人来说，天空都是一样的天空，不论是欧亚国，还是东亚国，还是在这里。天空下面的人基本上也是一样的人——全世界到处都是一样，几亿，几十亿的人，都不知彼此的存在，被仇恨和谎言的高墙隔开，但几乎是完全一样的人——这些人从来不知道怎样思想，但是他们的心里，肚子里，肌肉里却积累着有朝一日会推翻整个世界的力量。如果有希望，希望在无产者中间！他不用读到那本书的结尾，就知道这一定是果尔德施坦因的最后一句话。未来属于无产者。他是不是能够确实知道，当无产者胜利的日子来到的时候，对他温斯顿·史密斯来说，他们建立起来的世界就不会像党的世界那样格格不入呢？是的，他知道，因为至少那个世界会是一个神志清醒的世界。凡是有平等的地方，就有神志清醒。迟早这样的事会发生：力量会变成意识。无产者是不朽的，你只要看一眼院子里那个刚强的身影，就不会有什么疑问。他们的觉醒终有一天会来到。可能要等一千年，但是在这以前，他们尽管条件不利，仍旧能保持生命，就像飞鸟一样，把党所没有的和不能扼杀的生命力通过肉体，代代相传。</p>
</li>
</ul>
<h2 id="第三部">第三部</h2>
<ul>
<li>
<p>我们将在没有黑暗的地方相会</p>
</li>
<li>
<p>“你首先要明白，在这个地方，不存在烈士殉难问题。你一定读到过以前历史上的宗教迫害的事。在中世纪里，发生过宗教迫害。那是一场失败。它的目的只是要根除异端邪说，结果却巩固了异端邪说。它每烧死一个异端分子，就制造出几千个来。为什么？因为宗教迫害公开杀死敌人，在这些敌人还没有悔改的情况下就把他们杀死，因为他们不肯悔改而把他们杀死。他们所以被杀是因为他们不肯放弃他们的真正信仰。这样，一切光荣自然归于殉难者，一切羞耻自然归于烧死他们的迫害者。后来，在二十世纪，出现了集权主义者，就是这样叫他们的。他们是德国的纳粹分子和俄国的共党分子。俄国人迫害异端邪说比宗教迫害还残酷。他们自以为从过去的错误中汲取了教训；不过他们有一点是明白的，绝不能制造殉难烈士。他们在公审受害者之前，有意打垮他们的人格尊严。他们用严刑拷打，用单独禁闭，把他们折磨得成为匍匐求饶的可怜虫，什么罪名都愿意招认，辱骂自己，攻击别人来掩蔽自己。但是过了几年之后，这种事情又发生了。死去的人成了殉难的烈士，他们的可耻下场遗忘了。再问一遍为什么是这样？首先是因为他们的供词显然是逼出来的，是假的。我们不再犯这种错误。在这里招供的都是真的。我们想办法做到这些供词是真的。而且，尤其是，我们不让死者起来反对我们，你可别以为后代会给你昭雪沉冤。后代根本不会知道有你这样一个人。你在历史的长河中消失得一干二净。我们要把你化为气体，消失在太空之中。你什么东西也没有留下：登记簿上没有你的名字，活人的头脑里没有你的记忆。不论过去和将来，你都给消灭掉了。你从来没有存在过。”</p>
</li>
<li>
<p>“温斯顿，你是白玉上的瑕疵。你是必须擦去的污点。我刚才不是对你说过，我们同过去的迫害者不同吗？我们不满足于消极的服从，甚至最奴颜婢膝的服从都不要。你最后投降，要出于你自己的自由意志。我们并不因为异端分子抗拒我们才毁灭他；只要他抗拒一天，我们就不毁灭他。我们要改造他，争取他的内心，使他脱胎换骨。我们要把他的一切邪念和幻觉都统统烧掉；我们要把他争取到我们这一边来，不仅仅是在外表上，而且是在内心里真心诚意站到我们这一边来。我们在杀死他之前也要把他改造成为我们的人。我们不能容许世界上有一个地方，不论多么隐蔽，多么不发生作用，居然有一个错误思想存在。甚至在死的时候，我们也不容许有任何脱离正规的思想。在以前，异端分子走到火刑柱前去时仍是一个异端分子，宣扬他的异端邪说，为此而高兴若狂。甚至俄国清洗中的受害者在走上刑场挨枪弹之前，他的脑壳中也可以保有反叛思想。但是我们却要在粉碎那个脑壳之前把那脑袋改造完美。以前的专制暴政的告诫是‘你干不得’。集权主义的告诫是‘你得干’。我们则是‘你得是’。我们带到这里来的人没有一个敢站出来反对我们。每个人都洗得一干二净。甚至你相信是无辜的那三个可怜的卖国贼——琼斯、阿隆逊和鲁瑟福——我们最后也搞垮了他们。我亲身参加过对他们的拷问。我看到他们慢慢地软了下来，趴在地上，哀哭着求饶。我们拷问完毕时，他们已成了行尸走肉。除了后悔自己的错误和对老大哥的爱戴以外，他们什么也没有剩下了。看到他们怎样热爱他，真是很感动人。他们要求马上枪毙他们，可以在思想还仍清白纯洁的时候趁早死去。”</p>
</li>
<li>
<p>这一切是多么容易！只要投降以后，一切迎刃而解。就像逆流游泳，不论你如何挣扎，逆流就是把你往后冲，但是一旦他突然决定掉过头来，那就顺流而下，毫不费力。</p>
</li>
<li>
<p>“如果他认为他已离地飘浮起来，如果我同时认为我看到他离地飘浮起来，那么这件事就真的发生了。”</p>
</li>
<li>
<p>“这并没有真的发生。是我们想象出来的。这是幻觉。”</p>
</li>
<li>
<p>这种想法之荒谬是显而易见的。它假定在客观上有一个“实际的”世界，那里发生着“实际的”事情。但是怎么可能有这样一个世界呢？除了通过我们自己的头脑之外，我们对任何东西有什么知识呢？一切事情都发生在我们的头脑里。凡是在头脑里发生的事情，都真的发生了。</p>
</li>
<li>
<p>他第一次认识到，你如果要保持秘密，必须也对自己保密。你必须始终知道有这个秘密在那里，但是非到需要的时候，你绝不可以让它用任何一种可以叫上一个名称的形状出现在你的意识之中，从今以后，他不仅需要正确思想，而且要正确感觉，正确做梦。而在这期间，他要始终把他的仇恨锁在心中，成为自己身体的一部分，而又同其他部分不发生关系，就像一个胞囊一样。</p>
</li>
<li>
<p>有的时候一个人能够咬紧牙关不怕痛，即使到了要痛死的程度。但是对每一个人来说，都各有不能忍受的事情——连想也不能想的事情。这并不牵涉到勇敢和怯懦问题。要是你从高处跌下来时抓住一根绳子，这并不是怯懦。要是你从水底浮上水面来，尽量吸一口气，这也并不是怯懦。这不过是一种无法不服从的本能。老鼠也是如此。对你来说，老鼠无法忍受。这是你所无法抗拒的一种压力形式，哪怕你想抗拒也不行。要你做什么你就得做什么。</p>
</li>
<li>
<p>“我出卖了你，”她若无其事地说。“我出卖了你，”他说。</p>
</li>
<li>
<p>“有时候，”她说，“他们用什么东西来威胁你，这东西你无法忍受，而且想都不能想。于是你就说，‘别这样对我，对别人去，对某某人去。’后来你也许可以伪装这不过是一种计策，这么说是为了使他们停下来，真的意思并不是这样。但是这不对。当时你说的真是这个意思。你认为没有别的办法可以救你，因此你很愿意用这个办法来救自己。你真的愿意这事发生在另外一个人身上。他受得了受不了，你根本不在乎。你关心的只是你自己。”</p>
</li>
<li>
<p>“伟大战略部署——配合巧妙——彻底溃退——俘虏五十万——完全丧失斗志——控制了整个非洲——战争结束指日可待——大获全胜——人类历史上最大的胜利——胜利，胜利，胜利！”</p>
</li>
<li>
<p>他又抬头看一眼老大哥。哦，这个雄踞全世界的巨人！这个使亚洲的乌合之众碰得头破血流的巨石！他想起在十分钟之前——是的，不过十分钟——他在思量前线的消息究竟是胜是负时，他心中还有疑惑。可是现在，覆亡的不仅仅是一支欧亚国军队而已。自从他进了友爱部那天以来，他已经有了不少变化，但是到现在才发生了最后的、不可缺少的、脱胎换骨的变化。</p>
</li>
<li>
<p>他现在不再跑，也不再叫了。他又回到了友爱部，一切都已原谅，他的灵魂洁白如雪。他站在被告席上，什么都招认，什么人都咬。他走在白色瓷砖的走廊里，觉得像走在阳光中一样，后面跟着一个武装的警卫。等待已久的子弹穿进了他的脑袋。</p>
</li>
<li>
<p>哦，残酷的、没有必要的误会！哦，背离慈爱胸怀的顽固不化的流亡者！他鼻梁两侧流下了带着酒气的泪。但是没有事，一切都很好，斗争已经结束了。他战胜了自己。他热爱老大哥。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《领导的气场》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E9%A2%86%E5%AF%BC%E7%9A%84%E6%B0%94%E5%9C%BA/</link>
      <pubDate>Wed, 05 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E9%A2%86%E5%AF%BC%E7%9A%84%E6%B0%94%E5%9C%BA/</guid>
      <description>&lt;h2 id=&#34;第一章-管理无方气场只是空谈&#34;&gt;第一章 管理无方，气场只是空谈&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;敬人者，人恒敬之&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;理，就是看得起：你看得起他，他就看得起你；你看不起他，他照样也看不起你，不管你是谁。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人既不会百分之百的好，也不会百分之百的坏；人性不是彻底的善，也不是彻底的恶，而是可善可恶。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下属讲得虽然对，却在不对的时候、不对的地方讲，所以他是错的。因此，要把管做到理，不仅话要说对，而且要在合适的地方说。说得老板有面子，他就会承认你对；说得他没有面子，再对也是错的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个好的管理者是这样的：你做得好的时候，我为什么要管你，我不需要管你；你做得不好，我也不会管你，但是我会提示你，提示无用，就再提示，提示实在不管用，我才会训斥你（如图1-1）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为干部，如果你是一个经常做指示的人，就限定了自己的下属，使他不太会动脑筋。一个很有主见、很果断、随时有主意的人，他的下属经常脑袋空空：第一，他们想了没有用；第二，他们说的跟领导不一样时会挨骂。最后，他们不再想也不再说，干脆让出整个舞台来，让领导一个人去表演——唱独角戏。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有判断力、有选择力、有声望，才有资格深藏不露。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;深藏不露的意思是在该露的时候才露，这个注解非常重要。应该露的时候你不露，人家就看不起你；不应该露的时候乱露，人家就会看笑话。有很多主管的形象在自己的下属心目当中简直是个笑话，这是他们自己的责任。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;庄子讲过：万事有所分，必有所成；有所成之后，也就必有所毁。一切事物，若是从通体来看，既没有完成，也没有毁坏，都复归于一个整体。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;管理是修己安人的历程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;美式管理是“我要—我成”的历程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;日式管理是“同生共荣”的历程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国认为：目标和成果只是管理的一部分&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“安人”必先“修己”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修己代表个人的修治，做好自律的工作。因为中国人一方面不喜欢被管，另一方面不喜欢被连自己都管不好的人管。不喜欢被管，就应该自己管好自己，这是自律，也就是修己。不接受连自己都管不好的人的管理，常常抱怨这种人管不好自己还想来管人。也就是说，每一个人在管人之前，必须先把自己管好，也就是需要自律。可见管理者和被管理者通通应该修己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“修己”的意思，是修造自己，而不是改变他人。有人花费太多的时间和精力，去改变别人。这种错误的方向，浪费了很多管理成本。管理者若是一心一意想要改变员工，员工就会保持高度警觉，不是全力抗拒，便是表面伪装接受，实际上各有自己的看法。不如管理者先修己，用心改变自己，让员工受到良好的感应，自动地改变自己，更为快速有效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无为而治，使大家各自发挥所长&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将、帅深藏不露，实行“不管之管”，车、马、炮、卒才能够在将、帅的高度支持下，放手去做自己分内的事。将、帅发挥总动员的作用，这才是有效的领导。如果老将喜欢表现，处处都要显示自己最厉害，那么，车、马、炮、卒便站在那里听命令，然后一个口令一个动作，弄得老将疲惫不堪，可能因此而缩短寿命。作为中层干部也是，如果你事事亲历亲为，只会累倒自己，下属既得不到成长，也不会因为你替他干活而感谢你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;象棋给我们的启示，便是领导不表现英雄性，下属才会表现出各自的英雄性。领导的英雄性，很容易造成一个人表演的可怕局面；领导不露英雄性，才有总动员的可能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[插图]&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章-深谙人性看人不止一面&#34;&gt;第二章 深谙人性，看人不止一面&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;中国人相当复杂，不但想到“我”，还要顾及“你”，更不能忘掉“他”。所以前文也说过，在中国做中层干部，必须十分了解中国人的特性。一方面，可以好好“理”下属员工；另一方面，可以让你在处事时深思熟虑、面面俱到，不会在不知不觉中树敌，导致后患无穷。在横的方面，要“和”，与任何人都要保持恰到好处的人际关系。在纵的方面，要“中”，对于人和事的处置，应该有自己的原则，并且一定要坚持原则，否则会被说成“没有规矩”“缺乏制度”，甚至“胡作非为”。同时，坚持原则又不能到处得罪人，弄得鸡飞狗跳，妨害安宁。“持中致和”是指既要坚持原则又能和谐相处，所以“和”就是广结善缘，用“广结善缘”来“坚持原则”，既会做人又能做事，叫作“致中和”，才是真正的圆满。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公司高层领导对同一事情，可以表示“关切”，也可以十分“震怒”，完全视情况而定，目的只有一个：先表明和自己没有关系，再看做这件事情的人是谁，可能引起什么样的后果，然后调整后续反应。而中层干部不知道领导会“关切”还是会“震怒”，于是有责任就往下推，以便“关切”时跟着“关切”，“震怒”时跟着“震怒”，确保自身“安全”最重要。基层员工经常“押宝”，有时押对有时押错，久而久之，干脆不押，凡事能推即推，能拖即拖，否则也咬文嚼字以察言观色，多方斟酌而模棱两可，我们能责怪他吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人不能管，谈什么管理？不用担心，不能管的，要“理”。你理他，他才会理你。如果理不好，那就应该“安”他，你尽力安他，他自愿卖力，安人比理人高明，理人比管人有效。可惜大家一心一意想要管人，以至于把人与人之间的关系搞乱了，员工不可能好好工作，更谈不上什么绩效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人的“不受管”不是绝对的。当他事情做得顺利的时候，最讨厌有人管他；但是一旦遭遇困难，特别是走投无路的时候，他就会大声喊：“为什么你都不管？”需要时要你管，不需要时又不要你管，这才是中国人“不受管”的真相。中国人“不”之中含着“要”，“不要、不要”然后“要”，“不露、不露”然后“露”，“不会、不会”然后比任何人都“会”，实在值得当干部的好好体会一番。“不受管”含有“受管”的成分，关键在于“需要”。想做好干部，你应该在下属需要时才来管他，即平时充分准备，需要时亮出锦囊妙计，而不是和下属一起在困境中愁眉苦脸。“预测”“前瞻”不是平日说着玩的，而是紧急时要露一手的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;苏东坡被贬至黄州后，一天傍晚，和好友佛印和尚泛舟长江。忽然，苏东坡用手往岸上一指，笑而不语。佛印顺势望去，只见岸边有一只黄狗正在啃骨头，顿有所悟，便将自己手中题有苏东坡诗句的扇子抛入水中。两人心领神会，不禁相视而笑。原来，这是一副哑联。苏东坡的上联是“狗啃河上（和尚）骨”，佛印的下联是“水流东坡尸（东坡诗）”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;听话不如“看”话&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很难听懂话，是作为中层干部真正的难处。中国人说“不要听他的话”，其中含有“中国话不能只用耳朵听”的意思，必须特别小心。中国人很少说“听他说什么”，反而常常告诫他人：“看他怎么说。”也就是说，中国话不能只用耳朵听，应该配合用眼睛看。中国话听起来含含糊糊，“看”起来清清楚楚。短短一两句话，含意却很深刻，所以“看”了之后，还要多想。如果不好好想，还是弄不清楚话意。也就是说，“看”话不能仅凭一双眼睛去看，还要用“心”，才能够真正看清楚，才能领悟“话中的话”以及“话外的话”。比如，一句“你看着办吧”，究竟是“全权委托你”，还是“猜猜我的用意”，甚至“居然搞成这样子，你自己收拾烂摊子吧”？短短五个字，足够让别人思前想后了。凡是耳朵听不懂的时候，就要用眼睛看，还要动脑筋想。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“随便”——考验你的诚意&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当你问对方要什么，对方说“随便”，意思是说：衡量你自己的能力，可以提供什么。其实，说“随便”是不想为难对方，但是，如果你傻傻的真的“随便”，对方会认为你轻视他。你请我吃饭，问到哪里用餐，我当然不能直截了当地提议上豪华酒楼，万一你认为那样不值得，我岂非自讨没趣？不过我也不愿意自贬身价，一开口就选择普通餐厅，非但显得土气，对方也未必领情。最好的办法，还是说“随便”。至少可以了解你认为拿什么招待我最合适，进而了解我在你心目中的地位，以便调整自己所应表现的态度。你经济拮据，只能够请我上普通馆子，我照样吃得高兴，因为你够诚意，我不在乎吃什么；如果你手头宽裕，豪华酒楼也请得起，却只请我上普通的馆子，我就知道你不够意思。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;甲和乙是好朋友，一天，乙到甲家里做客，甲热情招呼，顺口问他：“喝点什么东西？”乙回答：“随便，随便。”甲当然心里有数：家里确实有好酒，是留给上司丙的，现在当然不能拿给乙喝。衡量与乙的关系，决定泡一壶好茶招待他。乙见甲并没有敷衍他，自然很高兴，也知道自己在甲心里的分量。正在此时，丙不期而至，明显就是来喝那瓶好酒的。此时，甲该不该将好酒拿出来？如果拿出来就会得罪乙，不拿出来又会得罪丙。这种两难的情况却也难不倒深谙圆通之道的甲。甲对他太太大声说：“我刚才找了半天，你到底把那瓶好酒藏到哪里了？”甲的太太明白甲的意思，就大声地回答：“我昨天收拾屋子，怕把它弄脏，特地藏起来了。”话音未落，甲的太太就拿着好酒出来了，并准备了丰盛的下酒菜。乙和丙都很高兴，当然，甲将危机巧妙地化解于无形，更是高兴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用高声说话来向别人传达自己的想法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不反对并非赞成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;赞成之中有反对，反对之中有赞成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;既不说赞成也不说反对的理由&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公开表示赞成或反对，都不可靠，不如采取观察、试探、测试、迂回打听等方式来加以判断。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;合理的赞成加上合理的反对，才是正当的行为。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做事小心谨慎&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你要记住，“有人才有事”，而且“事在人为”，很难“对事不对人”，所以要把人和事联系在一起。你听到一句话，如果不清楚是谁说的，就不要急于判断它究竟是对还是错、是真还是假，首先是要弄清楚对方是谁，这是开展人际交往的第一步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果上司冤枉你后，你保持沉默，表面上看你是忍辱负重，其实不然。上司看到你居然一言不发，就会觉得奇怪：“这个人怎么回事？难道我冤枉了他？”于是，他自然想着解开谜团，结果发现自己确实冤枉了你，并由于自己内心愧疚而善待你。通常，上司冤枉你，纯属偶然，很少有上司故意颠倒是非，存心为之。但是你若不幸碰上这种上司，足以证明上司早已容不下你。在这种情况下，你据理力争又有何用？不如另谋高就。如果你没有其他出路，最好忍气吞声，说不定上司见你一直逆来顺受，网开一面，不再针对你。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用不相信的立场来相信，才不会上当&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要求他人合理之前，先求自己合理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过他人的反应来判断自己是否合理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要改变对方，最有效的方法是先改变自己。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;乙和丙是熟人。一天，甲和乙聊天时，甲突然提到丙，问：“你认识丙吗？”乙的第一反应是“不认识”，因为他不知道甲有何意图。一句“不认识”，虽然只有三个字，却包含以下几种不同的意思：“真的不认识。”“虽然认识，但是并无交情。”“认识是认识，跟不认识差不多。”“你有什么事情，要问我认不认识。”“你少打我的主意，我认不认识与你无关。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;深藏不露并不是不露，而是站在不露的立场，求得合理的露，以免露得过分或不及，对自己有害。有能力必须合理地表现，凡事量力而为，才能恰到好处。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以让代争便是兼顾“舍”与“争”的权宜措施，站在“不争”的立场来“争”，才不会乱争，才能争得恰到好处。但是“让”并非消极的“让”，而是在冷静思考之后，让最合理的人来做最合理的事。千万不要心里不情愿，却打着谦让的幌子，那是虚伪。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;怕吃亏上当&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其实每个人都有这一特性。资源是有限的，人的生命也是有限的，不断地吃亏，岂不是跟自己过不去？凡是说钱财是身外之物的人，大多都很小气。因为一个人如果心里没有某种弱点，就不会强调它。例如一个人缺乏信用，就会强调自己重信用，通过不断地强调，让别人上当。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为怕吃亏，所以彼此打交道时，以互利互惠为原则，才能皆大欢喜。如果一开始就想着欺骗对方，往往会“偷鸡不成蚀把米”，得不偿失。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人都怕吃亏，但是过分地怕吃亏就变成精打细算。其实人算总是不如天算，“机关算尽太聪明，反误了卿卿性命”。因此有人发展出一套“差不多主义”，差不多就是刚刚好，就是恰到好处，就是合理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人如果心里没有某种弱点，就不会强调它。例如一个人缺乏信用，就会强调自己重信用，通过不断地强调，让别人上当。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想要别人帮忙，只要施以小恩小惠即可。如果施以“大恩大惠”的话，会让别人心生警惕。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上司问下属：“计划书写好没有？”下属心里可能想：“糟糕，晚上忘了写了。”但是碍于面子，嘴上却说：“写好了，只是早上急着上班，忘带了。”上司明白，这是下属在找借口，如果揭穿他的话，他面子上过不去，以后可能会和自己唱反调，所以只是淡淡地说：“哦，那明天别忘了带过来。”下属因说谎暂时保住了自己的面子，下班后自然会赶快把它写好，放在公文包里，第二天一上班，就把它交上去。下属不但完成了工作，而且吸取了教训：这一次差点惹麻烦，幸亏平时信用还不错，勉强过关，下次不可以再犯，万一被拆穿，不但难堪，还可能受罚。这样，既可以保证计划书尽早完成，又不会伤了彼此的和气，何乐而不为？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切记，使一个人觉得没有面子，吃亏的并不是他，而是我们自己。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第三章-话不必多要讲得恰到好处&#34;&gt;第三章 话不必多，要讲得恰到好处&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果领导交给你一项很复杂的任务，你完成不了，又一直不说，最后任务完不成，那所有的错都是你的。如果你早说了，领导就会想其他办法。凡事刚开始的时候，都有转圜的余地，而你明明完不成任务，还一声不响，硬着头皮继续做，往往贻误了时机。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;少说话很好，但是少说话绝对不是不说话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡事在说与不说之间，看情势、论关系、套交情，衡量此时、此地、此事，对此人应该说到什么程度，才算合理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业务经理陪老板到客户那里谈判，客户提出让利3%，业务经理当场拿出计算器，熟练地计算一番，然后把结果显示给老板看，嘴上说：“不行，这样我们就无利可图了！”老板看看结果，心里明白，接着说：“虽然如此，但是看在老客户的分上，再想想办法吧。”明明可以接受，业务经理却说不行，实则将决定权交给老板。老板若同意，等于给对方一个人情；老板若不同意，则有充分的理由拒绝。所以，业务经理真正做到了“说而不死”。如果业务经理计算完，不和老板商量，就马上说“接受”或“不接受”，等于没把老板放在眼里，势必“先说先死”；如果业务经理计算完，一句话也不说，就等着老板做决定，老板就比较为难，因为他的做法摆明了告诉对方可以接受，老板再拒绝，岂不是让对方嘲笑？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;管理从某种角度来说，便是控制其差异性。任何差异都值得注意，采用合理的成本和方法来加以控制，使差异的变化合乎控制的标准。语言或文字沟通，同样需要合理的控制，才能收到预期的效果。妥当不妥当，便是合理不合理，所以仍然以合理的妥当、合理的真实为拿捏的尺度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我告诉你，你不要告诉别人。”“你如果要告诉别人，就不要说是我说的。”“你如果告诉别人是我说的，我一定说我没有说。”这三句话，代表中国人沟通的三个要则：第一，我说的话，你相不相信？或者相信到什么程度？要不要转述？或者转述到什么程度？都必须由你自己决定，不要赖到我的头上。我告诉你不要告诉别人，事实上并没有什么约束力，只是好意提醒你，你自己做主。第二，你如果决定要告诉别人，表示你已经充分明了、相信我所说的话，并且经过考虑，这时候你所说的话，已经是你自己研判之后的信息；而你所要告诉的对象，也是你自己所审慎选择、决定的。一切都与我无关，所以不必再把我扯进去，说是我说的。第三，如果你一定要告诉某人，却又指名是我说的。鉴于这个对象根本不是我选择的，要说哪些话、说到什么程度，也不是我能控制的，因此我只有表态：我并没有说这些话，至少我不是这样说的，语气、用语都不相同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人一生气，说的都是不好听的话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不明言的目的，在于“让应该知道的人知道内容，让不应该知道的人知道皮毛”。这种“以应该不应该为标准，来施行公开不公开的划分”，就是相当合理的做法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保持沉默，对上司而言，已经等于申诉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你能用沉默来引发上司的好奇心，诱导他们自动前来了解事实，那就是高明的做法。而且由于没有申诉的声音，不易引起上司的不满情绪。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="第一章-管理无方气场只是空谈">第一章 管理无方，气场只是空谈</h2>
<ul>
<li>
<p>敬人者，人恒敬之</p>
</li>
<li>
<p>理，就是看得起：你看得起他，他就看得起你；你看不起他，他照样也看不起你，不管你是谁。</p>
</li>
<li>
<p>人既不会百分之百的好，也不会百分之百的坏；人性不是彻底的善，也不是彻底的恶，而是可善可恶。</p>
</li>
<li>
<p>下属讲得虽然对，却在不对的时候、不对的地方讲，所以他是错的。因此，要把管做到理，不仅话要说对，而且要在合适的地方说。说得老板有面子，他就会承认你对；说得他没有面子，再对也是错的。</p>
</li>
<li>
<p>一个好的管理者是这样的：你做得好的时候，我为什么要管你，我不需要管你；你做得不好，我也不会管你，但是我会提示你，提示无用，就再提示，提示实在不管用，我才会训斥你（如图1-1）。</p>
</li>
<li>
<p>作为干部，如果你是一个经常做指示的人，就限定了自己的下属，使他不太会动脑筋。一个很有主见、很果断、随时有主意的人，他的下属经常脑袋空空：第一，他们想了没有用；第二，他们说的跟领导不一样时会挨骂。最后，他们不再想也不再说，干脆让出整个舞台来，让领导一个人去表演——唱独角戏。</p>
</li>
<li>
<p>有判断力、有选择力、有声望，才有资格深藏不露。</p>
</li>
<li>
<p>深藏不露的意思是在该露的时候才露，这个注解非常重要。应该露的时候你不露，人家就看不起你；不应该露的时候乱露，人家就会看笑话。有很多主管的形象在自己的下属心目当中简直是个笑话，这是他们自己的责任。</p>
</li>
<li>
<p>庄子讲过：万事有所分，必有所成；有所成之后，也就必有所毁。一切事物，若是从通体来看，既没有完成，也没有毁坏，都复归于一个整体。</p>
</li>
<li>
<p>管理是修己安人的历程</p>
</li>
<li>
<p>美式管理是“我要—我成”的历程</p>
</li>
<li>
<p>日式管理是“同生共荣”的历程</p>
</li>
<li>
<p>中国认为：目标和成果只是管理的一部分</p>
</li>
<li>
<p>“安人”必先“修己”</p>
</li>
<li>
<p>修己代表个人的修治，做好自律的工作。因为中国人一方面不喜欢被管，另一方面不喜欢被连自己都管不好的人管。不喜欢被管，就应该自己管好自己，这是自律，也就是修己。不接受连自己都管不好的人的管理，常常抱怨这种人管不好自己还想来管人。也就是说，每一个人在管人之前，必须先把自己管好，也就是需要自律。可见管理者和被管理者通通应该修己。</p>
</li>
<li>
<p>“修己”的意思，是修造自己，而不是改变他人。有人花费太多的时间和精力，去改变别人。这种错误的方向，浪费了很多管理成本。管理者若是一心一意想要改变员工，员工就会保持高度警觉，不是全力抗拒，便是表面伪装接受，实际上各有自己的看法。不如管理者先修己，用心改变自己，让员工受到良好的感应，自动地改变自己，更为快速有效。</p>
</li>
<li>
<p>无为而治，使大家各自发挥所长</p>
</li>
<li>
<p>将、帅深藏不露，实行“不管之管”，车、马、炮、卒才能够在将、帅的高度支持下，放手去做自己分内的事。将、帅发挥总动员的作用，这才是有效的领导。如果老将喜欢表现，处处都要显示自己最厉害，那么，车、马、炮、卒便站在那里听命令，然后一个口令一个动作，弄得老将疲惫不堪，可能因此而缩短寿命。作为中层干部也是，如果你事事亲历亲为，只会累倒自己，下属既得不到成长，也不会因为你替他干活而感谢你。</p>
</li>
<li>
<p>象棋给我们的启示，便是领导不表现英雄性，下属才会表现出各自的英雄性。领导的英雄性，很容易造成一个人表演的可怕局面；领导不露英雄性，才有总动员的可能。</p>
</li>
<li>
<p>[插图]</p>
</li>
</ul>
<h2 id="第二章-深谙人性看人不止一面">第二章 深谙人性，看人不止一面</h2>
<ul>
<li>
<p>中国人相当复杂，不但想到“我”，还要顾及“你”，更不能忘掉“他”。所以前文也说过，在中国做中层干部，必须十分了解中国人的特性。一方面，可以好好“理”下属员工；另一方面，可以让你在处事时深思熟虑、面面俱到，不会在不知不觉中树敌，导致后患无穷。在横的方面，要“和”，与任何人都要保持恰到好处的人际关系。在纵的方面，要“中”，对于人和事的处置，应该有自己的原则，并且一定要坚持原则，否则会被说成“没有规矩”“缺乏制度”，甚至“胡作非为”。同时，坚持原则又不能到处得罪人，弄得鸡飞狗跳，妨害安宁。“持中致和”是指既要坚持原则又能和谐相处，所以“和”就是广结善缘，用“广结善缘”来“坚持原则”，既会做人又能做事，叫作“致中和”，才是真正的圆满。</p>
</li>
<li>
<p>公司高层领导对同一事情，可以表示“关切”，也可以十分“震怒”，完全视情况而定，目的只有一个：先表明和自己没有关系，再看做这件事情的人是谁，可能引起什么样的后果，然后调整后续反应。而中层干部不知道领导会“关切”还是会“震怒”，于是有责任就往下推，以便“关切”时跟着“关切”，“震怒”时跟着“震怒”，确保自身“安全”最重要。基层员工经常“押宝”，有时押对有时押错，久而久之，干脆不押，凡事能推即推，能拖即拖，否则也咬文嚼字以察言观色，多方斟酌而模棱两可，我们能责怪他吗？</p>
</li>
<li>
<p>人不能管，谈什么管理？不用担心，不能管的，要“理”。你理他，他才会理你。如果理不好，那就应该“安”他，你尽力安他，他自愿卖力，安人比理人高明，理人比管人有效。可惜大家一心一意想要管人，以至于把人与人之间的关系搞乱了，员工不可能好好工作，更谈不上什么绩效。</p>
</li>
<li>
<p>中国人的“不受管”不是绝对的。当他事情做得顺利的时候，最讨厌有人管他；但是一旦遭遇困难，特别是走投无路的时候，他就会大声喊：“为什么你都不管？”需要时要你管，不需要时又不要你管，这才是中国人“不受管”的真相。中国人“不”之中含着“要”，“不要、不要”然后“要”，“不露、不露”然后“露”，“不会、不会”然后比任何人都“会”，实在值得当干部的好好体会一番。“不受管”含有“受管”的成分，关键在于“需要”。想做好干部，你应该在下属需要时才来管他，即平时充分准备，需要时亮出锦囊妙计，而不是和下属一起在困境中愁眉苦脸。“预测”“前瞻”不是平日说着玩的，而是紧急时要露一手的。</p>
</li>
<li>
<p>苏东坡被贬至黄州后，一天傍晚，和好友佛印和尚泛舟长江。忽然，苏东坡用手往岸上一指，笑而不语。佛印顺势望去，只见岸边有一只黄狗正在啃骨头，顿有所悟，便将自己手中题有苏东坡诗句的扇子抛入水中。两人心领神会，不禁相视而笑。原来，这是一副哑联。苏东坡的上联是“狗啃河上（和尚）骨”，佛印的下联是“水流东坡尸（东坡诗）”。</p>
</li>
<li>
<p>听话不如“看”话</p>
</li>
<li>
<p>很难听懂话，是作为中层干部真正的难处。中国人说“不要听他的话”，其中含有“中国话不能只用耳朵听”的意思，必须特别小心。中国人很少说“听他说什么”，反而常常告诫他人：“看他怎么说。”也就是说，中国话不能只用耳朵听，应该配合用眼睛看。中国话听起来含含糊糊，“看”起来清清楚楚。短短一两句话，含意却很深刻，所以“看”了之后，还要多想。如果不好好想，还是弄不清楚话意。也就是说，“看”话不能仅凭一双眼睛去看，还要用“心”，才能够真正看清楚，才能领悟“话中的话”以及“话外的话”。比如，一句“你看着办吧”，究竟是“全权委托你”，还是“猜猜我的用意”，甚至“居然搞成这样子，你自己收拾烂摊子吧”？短短五个字，足够让别人思前想后了。凡是耳朵听不懂的时候，就要用眼睛看，还要动脑筋想。</p>
</li>
<li>
<p>“随便”——考验你的诚意</p>
</li>
<li>
<p>当你问对方要什么，对方说“随便”，意思是说：衡量你自己的能力，可以提供什么。其实，说“随便”是不想为难对方，但是，如果你傻傻的真的“随便”，对方会认为你轻视他。你请我吃饭，问到哪里用餐，我当然不能直截了当地提议上豪华酒楼，万一你认为那样不值得，我岂非自讨没趣？不过我也不愿意自贬身价，一开口就选择普通餐厅，非但显得土气，对方也未必领情。最好的办法，还是说“随便”。至少可以了解你认为拿什么招待我最合适，进而了解我在你心目中的地位，以便调整自己所应表现的态度。你经济拮据，只能够请我上普通馆子，我照样吃得高兴，因为你够诚意，我不在乎吃什么；如果你手头宽裕，豪华酒楼也请得起，却只请我上普通的馆子，我就知道你不够意思。</p>
</li>
<li>
<p>甲和乙是好朋友，一天，乙到甲家里做客，甲热情招呼，顺口问他：“喝点什么东西？”乙回答：“随便，随便。”甲当然心里有数：家里确实有好酒，是留给上司丙的，现在当然不能拿给乙喝。衡量与乙的关系，决定泡一壶好茶招待他。乙见甲并没有敷衍他，自然很高兴，也知道自己在甲心里的分量。正在此时，丙不期而至，明显就是来喝那瓶好酒的。此时，甲该不该将好酒拿出来？如果拿出来就会得罪乙，不拿出来又会得罪丙。这种两难的情况却也难不倒深谙圆通之道的甲。甲对他太太大声说：“我刚才找了半天，你到底把那瓶好酒藏到哪里了？”甲的太太明白甲的意思，就大声地回答：“我昨天收拾屋子，怕把它弄脏，特地藏起来了。”话音未落，甲的太太就拿着好酒出来了，并准备了丰盛的下酒菜。乙和丙都很高兴，当然，甲将危机巧妙地化解于无形，更是高兴。</p>
</li>
<li>
<p>用高声说话来向别人传达自己的想法。</p>
</li>
<li>
<p>不反对并非赞成</p>
</li>
<li>
<p>赞成之中有反对，反对之中有赞成</p>
</li>
<li>
<p>既不说赞成也不说反对的理由</p>
</li>
<li>
<p>公开表示赞成或反对，都不可靠，不如采取观察、试探、测试、迂回打听等方式来加以判断。</p>
</li>
<li>
<p>合理的赞成加上合理的反对，才是正当的行为。</p>
</li>
<li>
<p>做事小心谨慎</p>
</li>
<li>
<p>你要记住，“有人才有事”，而且“事在人为”，很难“对事不对人”，所以要把人和事联系在一起。你听到一句话，如果不清楚是谁说的，就不要急于判断它究竟是对还是错、是真还是假，首先是要弄清楚对方是谁，这是开展人际交往的第一步。</p>
</li>
<li>
<p>如果上司冤枉你后，你保持沉默，表面上看你是忍辱负重，其实不然。上司看到你居然一言不发，就会觉得奇怪：“这个人怎么回事？难道我冤枉了他？”于是，他自然想着解开谜团，结果发现自己确实冤枉了你，并由于自己内心愧疚而善待你。通常，上司冤枉你，纯属偶然，很少有上司故意颠倒是非，存心为之。但是你若不幸碰上这种上司，足以证明上司早已容不下你。在这种情况下，你据理力争又有何用？不如另谋高就。如果你没有其他出路，最好忍气吞声，说不定上司见你一直逆来顺受，网开一面，不再针对你。</p>
</li>
<li>
<p>用不相信的立场来相信，才不会上当</p>
</li>
<li>
<p>要求他人合理之前，先求自己合理</p>
</li>
<li>
<p>通过他人的反应来判断自己是否合理</p>
</li>
<li>
<p>要改变对方，最有效的方法是先改变自己。</p>
</li>
<li>
<p>乙和丙是熟人。一天，甲和乙聊天时，甲突然提到丙，问：“你认识丙吗？”乙的第一反应是“不认识”，因为他不知道甲有何意图。一句“不认识”，虽然只有三个字，却包含以下几种不同的意思：“真的不认识。”“虽然认识，但是并无交情。”“认识是认识，跟不认识差不多。”“你有什么事情，要问我认不认识。”“你少打我的主意，我认不认识与你无关。”</p>
</li>
<li>
<p>深藏不露并不是不露，而是站在不露的立场，求得合理的露，以免露得过分或不及，对自己有害。有能力必须合理地表现，凡事量力而为，才能恰到好处。</p>
</li>
<li>
<p>以让代争便是兼顾“舍”与“争”的权宜措施，站在“不争”的立场来“争”，才不会乱争，才能争得恰到好处。但是“让”并非消极的“让”，而是在冷静思考之后，让最合理的人来做最合理的事。千万不要心里不情愿，却打着谦让的幌子，那是虚伪。</p>
</li>
<li>
<p>怕吃亏上当</p>
</li>
<li>
<p>其实每个人都有这一特性。资源是有限的，人的生命也是有限的，不断地吃亏，岂不是跟自己过不去？凡是说钱财是身外之物的人，大多都很小气。因为一个人如果心里没有某种弱点，就不会强调它。例如一个人缺乏信用，就会强调自己重信用，通过不断地强调，让别人上当。</p>
</li>
<li>
<p>因为怕吃亏，所以彼此打交道时，以互利互惠为原则，才能皆大欢喜。如果一开始就想着欺骗对方，往往会“偷鸡不成蚀把米”，得不偿失。</p>
</li>
<li>
<p>每个人都怕吃亏，但是过分地怕吃亏就变成精打细算。其实人算总是不如天算，“机关算尽太聪明，反误了卿卿性命”。因此有人发展出一套“差不多主义”，差不多就是刚刚好，就是恰到好处，就是合理。</p>
</li>
<li>
<p>一个人如果心里没有某种弱点，就不会强调它。例如一个人缺乏信用，就会强调自己重信用，通过不断地强调，让别人上当。</p>
</li>
<li>
<p>想要别人帮忙，只要施以小恩小惠即可。如果施以“大恩大惠”的话，会让别人心生警惕。</p>
</li>
<li>
<p>上司问下属：“计划书写好没有？”下属心里可能想：“糟糕，晚上忘了写了。”但是碍于面子，嘴上却说：“写好了，只是早上急着上班，忘带了。”上司明白，这是下属在找借口，如果揭穿他的话，他面子上过不去，以后可能会和自己唱反调，所以只是淡淡地说：“哦，那明天别忘了带过来。”下属因说谎暂时保住了自己的面子，下班后自然会赶快把它写好，放在公文包里，第二天一上班，就把它交上去。下属不但完成了工作，而且吸取了教训：这一次差点惹麻烦，幸亏平时信用还不错，勉强过关，下次不可以再犯，万一被拆穿，不但难堪，还可能受罚。这样，既可以保证计划书尽早完成，又不会伤了彼此的和气，何乐而不为？</p>
</li>
<li>
<p>切记，使一个人觉得没有面子，吃亏的并不是他，而是我们自己。</p>
</li>
</ul>
<h2 id="第三章-话不必多要讲得恰到好处">第三章 话不必多，要讲得恰到好处</h2>
<ul>
<li>
<p>如果领导交给你一项很复杂的任务，你完成不了，又一直不说，最后任务完不成，那所有的错都是你的。如果你早说了，领导就会想其他办法。凡事刚开始的时候，都有转圜的余地，而你明明完不成任务，还一声不响，硬着头皮继续做，往往贻误了时机。</p>
</li>
<li>
<p>少说话很好，但是少说话绝对不是不说话。</p>
</li>
<li>
<p>凡事在说与不说之间，看情势、论关系、套交情，衡量此时、此地、此事，对此人应该说到什么程度，才算合理。</p>
</li>
<li>
<p>业务经理陪老板到客户那里谈判，客户提出让利3%，业务经理当场拿出计算器，熟练地计算一番，然后把结果显示给老板看，嘴上说：“不行，这样我们就无利可图了！”老板看看结果，心里明白，接着说：“虽然如此，但是看在老客户的分上，再想想办法吧。”明明可以接受，业务经理却说不行，实则将决定权交给老板。老板若同意，等于给对方一个人情；老板若不同意，则有充分的理由拒绝。所以，业务经理真正做到了“说而不死”。如果业务经理计算完，不和老板商量，就马上说“接受”或“不接受”，等于没把老板放在眼里，势必“先说先死”；如果业务经理计算完，一句话也不说，就等着老板做决定，老板就比较为难，因为他的做法摆明了告诉对方可以接受，老板再拒绝，岂不是让对方嘲笑？</p>
</li>
<li>
<p>管理从某种角度来说，便是控制其差异性。任何差异都值得注意，采用合理的成本和方法来加以控制，使差异的变化合乎控制的标准。语言或文字沟通，同样需要合理的控制，才能收到预期的效果。妥当不妥当，便是合理不合理，所以仍然以合理的妥当、合理的真实为拿捏的尺度。</p>
</li>
<li>
<p>“我告诉你，你不要告诉别人。”“你如果要告诉别人，就不要说是我说的。”“你如果告诉别人是我说的，我一定说我没有说。”这三句话，代表中国人沟通的三个要则：第一，我说的话，你相不相信？或者相信到什么程度？要不要转述？或者转述到什么程度？都必须由你自己决定，不要赖到我的头上。我告诉你不要告诉别人，事实上并没有什么约束力，只是好意提醒你，你自己做主。第二，你如果决定要告诉别人，表示你已经充分明了、相信我所说的话，并且经过考虑，这时候你所说的话，已经是你自己研判之后的信息；而你所要告诉的对象，也是你自己所审慎选择、决定的。一切都与我无关，所以不必再把我扯进去，说是我说的。第三，如果你一定要告诉某人，却又指名是我说的。鉴于这个对象根本不是我选择的，要说哪些话、说到什么程度，也不是我能控制的，因此我只有表态：我并没有说这些话，至少我不是这样说的，语气、用语都不相同。</p>
</li>
<li>
<p>中国人一生气，说的都是不好听的话。</p>
</li>
<li>
<p>不明言的目的，在于“让应该知道的人知道内容，让不应该知道的人知道皮毛”。这种“以应该不应该为标准，来施行公开不公开的划分”，就是相当合理的做法。</p>
</li>
<li>
<p>保持沉默，对上司而言，已经等于申诉。</p>
</li>
<li>
<p>如果你能用沉默来引发上司的好奇心，诱导他们自动前来了解事实，那就是高明的做法。而且由于没有申诉的声音，不易引起上司的不满情绪。</p>
</li>
<li>
<p>中国人没有面子的时候，最想的便是把面子找回来。</p>
</li>
<li>
<p>如果指责的人背后并无靠山，那么本着“不教训不行，否则别人可能学样”的精神，让他永不敢再犯。否则“不发威，别人就会把我当成病猫”，大家一起来找麻烦，岂非防不胜防？教训的方式当然也因人而异，有明有暗，有立即有延迟，有阴柔也有刚烈，必须谋定而后动，以免伤及自己而后悔不已。</p>
</li>
<li>
<p>在向上沟通时，你最好不卑不亢。太“亢”，有损上司的面子。如果上司真要计较，吃亏的肯定是你。太“卑”，上司会觉得你无能，靠赔笑脸混日子。你不能让上司感到功高震主，也不能让上司觉得你无能。</p>
</li>
<li>
<p>当你与上司的意见发生分歧时，应该合理地坚持，才能树立信用。否则，上司一说“不”，你就见风转舵，只会给上司留下不可靠的印象。反之，如果过分坚持自己的意见，在上司眼里就成了顶撞，上司以为你在挑战他的权威，难免会以势压人，伤了和气。合理地坚持自己的意见时，要讲究技巧——首先肯定上司的意见，再表达自己的意见；或者提出问题，反过来请教上司。</p>
</li>
<li>
<p>打开上下级言路的最好方法是让上司感到下属心中有他。如果你能让上司觉得你心中有他，他会觉得你都是为他着想，你说的话他就会比较容易接受。</p>
</li>
<li>
<p>作为管理者，被别人牵着鼻子走，下面的人谁会服你？可是一旦你太凶了，所有人都会转而同情弱者，让你进退两难。所以，越是位高权重的人，越平易近人，同下属说话的时候，多数是谆谆教导的口吻，如同仁慈的长者。凡是那些动不动就大发雷霆、咄咄逼人的上司，一般是火候没到，还不懂得中国人的“为官之道”。</p>
</li>
</ul>
<h2 id="第四章-入情入理守规矩也要知变通">第四章 入情入理，守规矩也要知变通</h2>
<ul>
<li>
<p>嘴巴讲情，心里想的是理，肚子里是法，就百无禁忌，什么都通了。</p>
</li>
<li>
<p>如果你的员工工作没有做好，你马上就处罚他，这是很冒险的做法。因为可能有很多原因造成这种结果，如果处罚不当，作为上司的你就会下不了台。所以，大多数人在处理事情时都会从情入手，给对方面子。有了面子，对方就会很容易接受。如果你一开始就劈头盖脸地骂他，一点面子都不给，他就会抗拒。</p>
</li>
<li>
<p>作为下属的你要思考的是：自己一定有什么地方对不起老板，他才会借故为难，并不是真的自己怎么做都不对。老板一定是跟你有心结，你道歉没有用，解释也没有用。你必须弄清楚是因为什么事情得罪了老板，然后从行动上进行改善，老板自然就不会再为难你。遇到事情，要讲情、理、法；遇到矛盾，要用行动去化解，不要用语言去辩解，因为越辩矛盾越大。</p>
</li>
<li>
<p>人就是这样，只要有面子，就会很爱护这个面子，就不能不讲理；如果没有面子，就可以蛮不讲理——反正我已经没有面子了。</p>
</li>
<li>
<p>让一个人没有面子，自己是最吃亏的，这个道理千真万确。所以，我建议：做事情要从情开始，不要从法开始。我给你面子，你很讲理，就不必谈法了；我给你面子，你不讲理，我再给你一次面子，你还是不讲理，我就翻脸无情，就要依法处理。这样做，对方无话可说。因此，在中国为什么讲情与法，情在前，法在后，自然有其道理。</p>
</li>
<li>
<p>西方说法是“每一个人把自己的角色扮演好”，用孔子的说法就是“君君臣臣”。</p>
</li>
<li>
<p>如果你的下属8点30分上班，你就8点上班。</p>
</li>
<li>
<p>制度帮助我们把有形的规范好，但是在制度之外还有“软件”——很多无形的东西，要靠我们去运作，这就是人性化管理。人性化管理，让每个人都没有压力，都非常愉快。</p>
</li>
<li>
<p>干部的级别越高，越要早来早走。</p>
</li>
<li>
<p>外方内圆，知法更要知变通</p>
</li>
<li>
<p>不知变通，会无所作为</p>
</li>
<li>
<p>有这样一种人，他们有这样一种心态：一切照规定办。我认为这样的人是毫不用心的人，不会受大家欢迎。我把这种心态称为“公务员心态”，是一种不负责任的、无所作为的心态。</p>
</li>
<li>
<p>我认为，只要不违法、不伤害别人，一切都是可以变通的。</p>
</li>
<li>
<p>希望大家树立一个观念：大小事情都要让你的上司知道，这样做他会对你非常放心。有时间先报告，没有时间，可以先斩后奏。即便先斩后奏也一定要奏，否则自己就会被斩了。</p>
</li>
<li>
<p>不能变通，要求得理解</p>
</li>
<li>
<p>在法令许可的范围之内，才会合情合理，如果超出法定范围，坚决不要干。</p>
</li>
<li>
<p>既然天下事皆可变通，那么，我们应该怎么变？应在一定的框架范围内变——规矩是方，变通是圆。考虑事情时是外方内圆，处理事情时则是外圆内方。也就是说，一方面是法、理、情，另一方面是情、理、法。</p>
</li>
</ul>
<h2 id="第五章-向上启发上司永远是对的">第五章 向上启发，上司永远是对的</h2>
<ul>
<li>
<p>什么叫中国式沟通？就是说到对方“打”不下去，说到对方没辙。</p>
</li>
<li>
<p>我必须说明，中国人是无法讨好的，因为中国人太敏感，警觉性非常高。而警觉性高，疑心也必然重。</p>
</li>
<li>
<p>干部与上司打交道，一定要记住一条：上司永远是对的。听到这句话，肯定有人要问：如果上司说的确实行不通，怎么办？这个问题太简单了，如果我的老板叫我去死，我就说“好”，因为他永远是对的！我也拿这个问题考我的学生：如果你的老板叫你去死，你会怎么办？70%的人这样回答：“我回头叫他去死！”这样的人谁敢用啊？所以，我一律给他们零分。他们很不服气：“老师，你的答案是什么？”我说：“太简单了，我会说‘好，我去死’，然后不去死不就好了！”学生们又问：“老板发现你没有去死，会不会说你不听他的话呢？”</p>
</li>
<li>
<p>因为看人的高低，西方人看专业，而中国人看人品。</p>
</li>
<li>
<p>千万不要试图去改变你的上司，而要想办法让他自己改变，这样你就轻松了。</p>
</li>
<li>
<p>你明知道办不到，但还是要说“好”，过后再说有困难，老板就会说“那我们改一改”，改了之后，跟你的想法一样。虽然你一句话都没有说，但是你推着老板在改变。有些人只相信自己，只认为自己的想法是对的，绝对不相信别人。遇到这样的上司，你所要做的就是向上启发。</p>
</li>
<li>
<p>做干部的要做到好像听话又好像不听话，说不听话又很听话，说听话又不听话，老板就喜欢你。要和老板相处好，让他照顾你，但是你不能讨好他，这是最重要的。你讨好他，他会把你当奴才。很多干部到最后被老板当成奴才，自己也要检讨。</p>
</li>
<li>
<p>向上司汇报，一是要让上司了解情况，二是要看看上司的反应。这样我们就能做到知己知彼，掌握主动权。这样做，其实是你在操控，而不是上司在操控。也就是说，必要时，使上司改变一下主意，适当地控制他的反应。这一招不要轻易使用，更不能用得太狠。适可而止，别人会尊重你；用得太狠，算计太精，所有人都会怕你。</p>
</li>
<li>
<p>越聪明的人越是要装糊涂，不聪明的人才会显示他很聪明，大智若愚、难得糊涂就是这个道理。</p>
</li>
<li>
<p>请示一定要带着腹案去</p>
</li>
<li>
<p>身在职场的你一定要记住：带着腹案请示上级是向上报告的重要原则。</p>
</li>
<li>
<p>抬轿子的要抬得领导很安心，这才是好干部。如果抬轿子的不停地问向右拐还是向左拐，坐轿子的要不停地指挥，那领导就完全不像领导了。</p>
</li>
<li>
<p>如果我是领导，我不允许下属空着脑袋来向我请示。空着脑袋表示他没有尽责。他的方案怎么样，把方案给我，让我判断，可以；空着脑袋来找我，叫我伤脑筋，免谈。领导都是这么想的。所以，作为下属，一定要设身处地替老板着想。遇到问题要了解现状，然后带着腹案去让老板做决定。</p>
</li>
<li>
<p>一个人如果不能在3分钟内把表述的要点说完，这个人就没有沟通能力。经常开会的人都知道，只要一个人的报告超过10分钟，所有人就都不想听了。说话简明扼要，这点非常重要。向上报告，一要尊重上司，二要简明扼要。</p>
</li>
<li>
<p>向上级做报告时想要做到心中有数，而且要拿出自己的腹案来，就要在事前进行大量的调研和组织工作。这才是好下属，才是能干的下属。</p>
</li>
<li>
<p>一个有水平的领导，他心里想什么，是不会让其他人知道的。</p>
</li>
<li>
<p>如果我是上司，无论下属说什么，我的脸上都没有什么表情。我会对下属说：“你再想想，有没有更好的办法。如果想不出来也没有关系，再找别人研究一下。”这么做的目的是要让所有人都去思考。换言之，人是宝藏，一个上司要有这样的度量和能力：凡是自己的下属，你都有责任把他们的宝藏最大限度地开发出来。这才是充分利用人的“资源”，才叫会用人。</p>
</li>
<li>
<p>从下属的角度看，如果上司没有表示赞成你的方案，你一定要再想想。如果实在没有更好的办法就实话实说，意思就是你的智慧都用上了，只能想到这些。如此，上司就会再问别人。各种想法互相碰撞就会产生火花，才能做出最好的决策。</p>
</li>
<li>
<p>如果上司说“你去倒杯茶来”，那你就要提高警惕：什么意思？这里有人倒茶啊！听到这句话，你一定要说：“是，是，是。”然后去倒茶，倒完茶就先回去。因为这是上司在暗示你赶快离开。</p>
</li>
<li>
<p>如果一个下属头脑不灵活，用他的人会很痛苦——他不会体会上司的苦衷。而中国人宁可与聪明的人吵架，也不愿意和愚蠢的人说话。</p>
</li>
<li>
<p>我们对人、对上、对下，其实都是一个道理：不能太快相信，也不能不相信。</p>
</li>
<li>
<p>最奇妙的就是甲直接指示丙，但回头问乙事情的进展，考验乙的领导能力——是否能掌控自己的下属，下属在做什么是否都知道。</p>
</li>
</ul>
<h2 id="第六章-尊重平级做到皆大欢喜">第六章 尊重平级，做到皆大欢喜</h2>
<ul>
<li>
<p>做到皆大欢喜才叫圆满，如果只有你一枝独秀，所有人都会攻击你。大家都是业务员，你的业绩很好，可以挂在他人的名下，你就永远受到大家的欢迎；如果你一枝独秀，所有的人都想把你“干掉”。</p>
</li>
<li>
<p>公司老板要考虑提升一个人，不是单纯地考量其有没有能力，主要考虑的是他有没有领导的习性、特质。领导要的是什么？要的是能够得到大家的心而不是个人的满足。如果一个人能够得到升迁的机会，一定是他有能力和同级同事相处，甚至是给同级的同事一些帮助。</p>
</li>
<li>
<p>一个人有没有升迁的希望，是由高层决定的，而不是由基层决定的。高层一定是按照自己的标准来选择，你的思维越靠近高层，你的机会就越多。所以，年轻人不能巴结、不能讨好高层，但是要顺应高层。</p>
</li>
<li>
<p>常言道：老板给的好处，大家要一同分享。同样是经理，老板会特别尊重少数几位，不会一视同仁；同样是经理，老板一有事，就会想到某个人而不是想到其他什么人；同样是经理，老板一开会，一定会问他有什么意见，而不会问其他人。这个人实际上就是地下领袖——非组织的领袖。</p>
</li>
<li>
<p>其实不会算计的人，才是真正的会算。</p>
</li>
<li>
<p>我常常跟很多老板讲，你有两只眼睛，有两只耳朵，但只有一张嘴，这是告诉你要少说话；你有两只耳朵，就是要听八面的；你有两只眼睛，就是要看四方上下，不是只看一面的。这样才是对的。把耳目塞住了，这个老板就不用当了。</p>
</li>
<li>
<p>数字其实是没有人性的，我们要透过数字来管理，不可以实施数字管理。这当中有很多奥妙，是有原则的。</p>
</li>
<li>
<p>当别人有危难时，你不要隔岸观火，不要在旁边冷笑，你拉他一把，将来人家也会拉你一把。</p>
</li>
<li>
<p>任何事情只要有风吹草动，而你完全不处理，就是表示你鼓励这样做，你赞成这样做。</p>
</li>
</ul>
<h2 id="第七章-知人善任让下属感觉被尊重">第七章 知人善任，让下属感觉被尊重</h2>
<ul>
<li>
<p>下属事情做不好是谁的责任？是领导的责任，是因为领导指派工作不恰当。</p>
</li>
<li>
<p>指派工作是考验领导能力的一项重要指标</p>
</li>
<li>
<p>干部也是一样，你用6个下属，就要对6个下属的能力、水平一清二楚。给甲挑50担，因为他能够挑50担；只给乙挑20担，因为他只能够挑20担。你不可能给他们同样的工作，否则就表示你不识人。对不同的人给予不同的任务，这叫作知人善任。如果一个上级有这样的认知，对下就比较慎重。派活这件事是考验你有没有领导能力的一个很重要的指标，要慎重。你分派的工作七派八错，结果搞得一团糟，最后你要扛这个责任，麻烦还是你的。这个人不喜欢说话，你偏要派他去沟通，这是自找死路；那个人很喜欢说话，你派他去谈判，还是死路一条——他一直说却不肯听。谈判的工作是先要沟通，然后再谈判，光说不听，能行吗？指派工作要根据每个人的个性、习惯和能力，要综合考虑，这叫作适才适用。大材小用不行，小材大用也不行，一定要适才适用，才能体现出来你做领导的本领。</p>
</li>
<li>
<p>所谓“跟踪”，实际上是分派完工作之后要去检查：这个下属有没有在蒸馒头，或者他蒸得对不对，发现问题要及时处理。</p>
</li>
<li>
<p>如果你的下属拖到最后才告诉你：“没办法如期完成任务，我已经尽力了。”你应该反省自己：平时自己在干什么？为什么没有及早察觉？</p>
</li>
<li>
<p>企业内部应该是一种动态的而且是互动的状态。当你将工作指派下去后，一定要求下属不定期地向自己汇报；你也不能坐在那里坐享其成，要“跑来跑去”：跑到这儿，就是要这个下属汇报；跑到那儿，就是要那个下属汇报，不汇报你就问他。这样就掌握了任务的进度，最后一分钟才报告无法完成的事情才不会发生。</p>
</li>
<li>
<p>这其中有一个当领导的心态问题，老板需要了解情况，希望下属能直接向他汇报，但是很多下属不懂得领导的这个心态。</p>
</li>
<li>
<p>下属发现不能按计划如期完成任务，一定要及早报告给主管；主管也要实施“走动式管理”，及时督导。</p>
</li>
<li>
<p>分清下属是“不能”还是“不为”</p>
</li>
<li>
<p>下属做不好工作，老板不想开除他，而是希望他做好。在这种情况下，身为中层干部的你该怎么做？孟子讲得好：一个人做不好，有两种状况，一种叫作“不能也”，一种叫作“不为也”。如果一个人真的不能干，很容易，去训练他、培训他就可以了。但是，他能干却不做，“不是不能也，而是不为也”，原因有三：第一，不肯做；第二，不敢做；第三，不愿做。作为领导，如何判断到底是哪种情况呢？很简单，如果他平时工作做得很好，而此时不做，就是不愿做。我们一定要分析一下他为什么不情愿做。第一，他可能觉得委屈；第二，可能是做了半天，却连一个口头的奖励都没有。</p>
</li>
<li>
<p>一般情况下，除了激励机制不够以外，中国人最在乎的就是自己在他人心目中的位置，在乎自己在他人心目中有什么分量。</p>
</li>
<li>
<p>这样做不仅需要一种技巧、一种方法，更需要一种胸怀。而作为干部，胸怀要很宽广，一定要舍得让手下员工表现。</p>
</li>
<li>
<p>一个好的管理者，是这样用人的：精神一定要配合物质，不能嘴巴讲讲就算了；但是物质是无底洞，也不能常常给物质。所以，有时候我们“拍肩膀”是很管用的。但是，我也提醒各位：作为中层干部，你千万不要去拍老板的肩膀。</p>
</li>
<li>
<p>有的员工对老板的指示很可能会应付，可是对自己的承诺却会全力以赴。我们要的就是下属全力以赴，而不是尽力而为。</p>
</li>
<li>
<p>自己讲没有用，下属只是听听而已，不会百分之百地相信。很少有人会百分之百地按照老板的指示去做。上有政策，下有对策。做到六七十分就够了，干吗勉强自己啊？这就是大部分人的心态。</p>
</li>
<li>
<p>要把自己的意见变成下属的意见，让他自己说，他一说，就是在承诺。</p>
</li>
<li>
<p>作为干部，你一定要养成一个思维习惯：一件事情最好有几个解决方案。以前我们都认为办法是唯一的，而现在我们知道了，解决问题的方案有好几个，而且最好的方案永远是我们没有想出来的那一个。</p>
</li>
<li>
<p>让下属多动脑筋找出最佳方案</p>
</li>
<li>
<p>我们在没有决定之前，要广开言路，让所有人把意见都说出来；在决定以后，就必须很专制，谁都不许改。</p>
</li>
<li>
<p>这个原则跟当老板的原则是一样的：把老板的指示变成下面主动的要求。但我们要用好好商量的办法，不可以用直接下命令的办法。</p>
</li>
<li>
<p>老板最痛恨的就是：你没有去做就反对我，是不是对我有成见？你做做看，做不通再说嘛！能够设身处地，能够将心比心，你对所有的人和事就会一目了然，因为人同此心、心同此理。很多人就是太自我了。在中国社会，只要你自我感太强，你的挫折感就会很大，所以要把自我减少。我们的高级领导很少说“我”，到某个地方，绝口不说“我”字，就叫自己的名字，是有道理的。</p>
</li>
<li>
<p>一个人做到中层，要记住：你是没有什么抵抗力的。可是，基层人员就会硬碰硬地跟你顶撞，因为他虽然会怕大老板，但是他不会怕你。大老板如果下去问“你们不愿意接受新的业务吗”，大家都会说：“哪有这回事，没有这回事。”但是，你让他做他就是不做！</p>
</li>
<li>
<p>中国哲学是活学活用的，中国人有很深层次的智慧——当主管遇到困难时，下属反过来会开导、劝慰他。</p>
</li>
<li>
<p>中国人是同情弱者的，你能够让他同情，他就很愿意帮你</p>
</li>
<li>
<p>“精于刀者，死于刀；精于枪者，死于枪；精于权谋者，死于权谋。”</p>
</li>
<li>
<p>中国人是很精明的，一看到桌上有什么东西，马上就知道为什么要找她，她心里就会很快地去盘算</p>
</li>
<li>
<p>现在很多人做事不动脑筋，一切公事公办，这是行不通的。中国人见河搭桥，见人说人话，见鬼说鬼话——有效就好。但是切记，不可以存心害人。我想这几句话大家都很清楚：没有一点花样，什么都行不通；存心搞花样，所有人都不喜欢你。</p>
</li>
<li>
<p>指出下属的错误，还要让他有面子</p>
</li>
<li>
<p>指出下属错误要有策略</p>
</li>
<li>
<p>我会很有策略地讲：“你有没有听到大家都在赞美你很会穿衣服啊？但是，人家也在批评你老打错字，我看只错五六个字而已，可是人家讲得很难听啊！”我讲是别人说的，她就很容易接受；我讲是我说的，她压力很大，就会抗拒。而且我先赞美她，然后再批评她，最后再赞美她，这叫作“三明治法”（如图7-1）。于是她就接受了——我让她有面子，她就会接受。[插图]</p>
</li>
<li>
<p>如果一件事情做得没有效，你就不要做，因为那是徒劳无功的——就好比你直接指出她的错误一样。</p>
</li>
<li>
<p>整个过程我是给他们以充分的教育，让他们充分认识到错误的严重性。所以，教育要有一套方法，如果没有方法，就不是教育。</p>
</li>
<li>
<p>管理干部重在做人，教育员工要诚心诚意</p>
</li>
<li>
<p>越是高层越没有事，高层越是忙，就越表示他管理不当。</p>
</li>
<li>
<p>高层要花70%~80%的时间来做人，只需维持20%~30%的时间来做事；基层70%~80%的时间在做事，不能花很多的精力去做人；中层干部50%~60%的时间做事，40%~50%的时间做人（见表7-1）。所以，干部不做这些做什么？你还有什么事可做？这就是你的职责啊！[插图]</p>
</li>
<li>
<p>这个教训折磨了他们两个小时，他们是永远也不会忘记的——我们教育的整个过程就是要让他们铭刻在心。</p>
</li>
<li>
<p>要让他们知道你是好意，是诚心诚意想帮助他们改正这个过错，出发点是真诚的。</p>
</li>
<li>
<p>下属越级报告，作为中层干部、主管，千万不要刁难他。</p>
</li>
<li>
<p>当一个人碰到瓶颈时，唯一的办法就是面对这个事实，认真想办法去突破，而不是在那儿发混账气、耍权威、摆脸色给人家看。</p>
</li>
<li>
<p>人非圣贤，孰能无过？错了不要后悔，也不要骂人。错了，要冷静地想一想，自己一定有什么做得不对的地方。也不必给他人道歉，好好地跟对方谈，我们自然会找到一个共同点，大家一起来努力解决问题。</p>
</li>
<li>
<p>会当干部的人应该有这样的本事：所有下属不见面不打招呼就不会下班。为什么？有突发事件时，他怕你找不到人。能做到这一点，你就成功了。</p>
</li>
</ul>
<h2 id="第八章-展现魅力成就领导的气场">第八章 展现魅力，成就领导的气场</h2>
<ul>
<li>
<p>你千万要记住：把本职工作做完，还要热心帮助别人，这才叫作本分。把事情做完，其他事不管了，那不可以；本分没有做好，就拼命去帮助别人，也不对。一个人只要该做的事情没有做，就没有权力去帮助别人。如果那样做，就是想讨好别人、想邀功，就是有不良企图。</p>
</li>
<li>
<p>太热心的人总是容易被人家怀疑是有企图的，如果你采取推、拖、拉的办法，推到最后，大家都会认为这样做没有问题。任何事情一定要做到人家没话讲，你才算成功了。</p>
</li>
<li>
<p>不要太相信那些死的东西，因为人是活的。</p>
</li>
<li>
<p>人们愿意遵守的时候，这就是规矩；不愿意遵守的时候，这就不是规矩。</p>
</li>
<li>
<p>干部自己是不是守时也很重要。一般情况是，员工会看干部。所以，做干部的自己要去接受挑战，要学会带人——把大家带到都很守时。</p>
</li>
<li>
<p>我们一定要遵守时限，否则大家都浪费时间。什么叫作守时？我认为，守时就是提前完成。如果不提前完成，几乎做不到守时。</p>
</li>
<li>
<p>我在英国叫计程车，司机会一分不差地来按我的门铃，有人会说，那他不是神吗？不是，是他提前到了，他在外面守候着。这才叫作守时。</p>
</li>
<li>
<p>我们一定要懂得这么一种思路——除了理，还要讲人情。要不然，你没法跟别人打交道。</p>
</li>
<li>
<p>一个这么会变的民族，几乎已经到了乱变的时候了，还会弄到被人家看不出来。其实是中国人习惯渐变，不喜欢突变，所以，中国人总像没有变一样。</p>
</li>
<li>
<p>儒家最了不起的就是“不停滞”理论，永远在变，可是没有突变。因为只要突变就有人抗拒，我们会变到让人无从抗拒。</p>
</li>
<li>
<p>不是你的答案，而是大家的答案。既然是大家的意见，政策实行起来就没有阻碍。谁再抗拒，谁就是罪人。</p>
</li>
<li>
<p>一般说来，对上采取“干部先说”的方式，比较有效；对下则反过来，依“先听基层”的原则来进行，才能够集思广益。</p>
</li>
<li>
<p>让基层先说，使其倍觉可亲，因而更加信任你，也就知无不言了。何况基层对自己所说的话，不好意思不承认那是事实，根据这些事实来共商对策，也多半愿意就事论事，并且勇于负责。要加强基层的参与感和责任感，让他们先说是一种有效的方式。尊重他们，提供参与的机会，他们就会先说。</p>
</li>
<li>
<p>一般性的修养，可以公开，个别性的规劝，最好私下进行。你的下属同样也有面子的需求，虽然和你的上司性质不同，却应予以同等重视。不给对方面子，自己永远最没有面子。</p>
</li>
<li>
<p>一个中层干部的职责本来就是上通下达，否则就是失职。但是上传下达，要有转折，不可以赤裸裸。干部应该有这种警惕性，应该明白事理。不负责任的干部，会把上级的话直接传给下级，这是最坏的干部；把下级的话直接传给上级，这也是最坏的干部。老板跟干部讲的话，如果干部赤裸裸地传给员工，员工来找老板，老板一定否认：“是他听错了。”作为中层干部，你必须认清自己的主要任务在沟通上下之情，而不是转达上下之间的意见。否则，通信器材这样发达，通信工具如此便捷的今天，实在用不着干部在那里传来传去。通上下之情的重要关键在于使得高层和基层都听得进去，乐于接受，并且产生预期的行动。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>问题清单：点亮个人知识地图</title>
      <link>https://dstweihao.cn/posts/arts/%E9%97%AE%E9%A2%98%E6%B8%85%E5%8D%95%E7%82%B9%E4%BA%AE%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%9C%B0%E5%9B%BE/</link>
      <pubDate>Mon, 06 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/arts/%E9%97%AE%E9%A2%98%E6%B8%85%E5%8D%95%E7%82%B9%E4%BA%AE%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%9C%B0%E5%9B%BE/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在工作或学习的过程中，我们会遇到各种各样的问题。这些问题之所以成为问题，是因为它们触及了我们知识的盲区。面对未知，我们需要投入更多时间和精力去学习，逐步填补这些空白，从而点亮我们的知识地图。正是基于这个原因，就有了这个《问题清单》。🔸🔹&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;1-html&#34;&gt;1. HTML&lt;/h1&gt;
&lt;h2 id=&#34;11-img动态修改图片颜色-&#34;&gt;1.1. &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;动态修改图片颜色 🔹&lt;/h2&gt;
&lt;p&gt;在实现el-menu动态配置菜单图标的时候，因为从字体图标替换成在线获取的.svg图片，所以需要研究下如何实现动态配置颜色，好解决后续各项目不通过主题的需求。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;translateX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;-80px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;drop-shadow&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;a80f0f&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;80px&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;2-ai&#34;&gt;2. AI&lt;/h1&gt;
&lt;h2 id=&#34;21-deepseek满血版使用-&#34;&gt;2.1. DeepSeek满血版使用 🔹&lt;/h2&gt;
&lt;p&gt;年前使用&lt;code&gt;DeepSeek&lt;/code&gt;还挺顺畅的，没想到过年期间突然爆火，导致流量暴涨。再加上美帝“亡我之心不死”，天天攻击，导致服务器经常繁忙，有时候重复提问20多次都没反应，实在忍不了了，只能研究其他渠道来使用深度思考（R1）功能。&lt;/p&gt;
&lt;p&gt;经过一番查找，发现可以使用硅基流动（SiliconFlow）提供的服务。硅基流动与华为云联合推出了基于昇腾云的DeepSeek R1 &amp;amp; V3推理服务。使用邀请码注册：https://cloud.siliconflow.cn/i/wDEipqNd，可以赠送13块钱，足够用很久了。不过，由于这是API调用的方式，历史问答的内容无法保留，因此需要结合Cherry Studio客户端软件来使用。&lt;/p&gt;
&lt;p&gt;当然，如果觉得麻烦，也可以考虑使用360的纳米AI搜索的慢思考模式，或者kimi的k1.5长思考模式。不过，就推理方面来说，还是觉得DeepSeek更有意思一些。&lt;/p&gt;
&lt;h1 id=&#34;3-typescript&#34;&gt;3. TypeScript&lt;/h1&gt;
&lt;h2 id=&#34;31-as-keyof-typeof&#34;&gt;3.1. as keyof typeof&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Element&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;implicitly&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;an&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;any&amp;#39;&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;because&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;expression&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;can&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;t be used to index type &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;. No index signature with a parameter of type &amp;#39;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39; was found on type &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;viewValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;userInfoList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nx&#34;&gt;label&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;locale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;userInfoObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;keyof&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;typeof&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;userInfoObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;4-javascript&#34;&gt;4. JavaScript&lt;/h1&gt;
&lt;h2 id=&#34;41-arrayprototypeevery&#34;&gt;4.1. Array.prototype.every()&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;every()&lt;/code&gt;&lt;/strong&gt; 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。&lt;/p&gt;
&lt;p&gt;every（）方法用来判断所有元素是否都通过制定函数的测试，&lt;/p&gt;
&lt;h2 id=&#34;42-mathfloor-mathceil-和-mathround-&#34;&gt;4.2. Math.floor() 、Math.ceil() 和 Math.round() 🔹&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Math.floor()，向下取整，Math.floor(5.96) = 5。&lt;/li&gt;
&lt;li&gt;Math.ceil()，向上取整，Math.ceil(5.96) = 6。&lt;/li&gt;
&lt;li&gt;Math.round()，四舍五入，取其值的绝对值进行四舍五入，如果原数是负数，结果保持为负。比如Math.round(5.96) = 6；Math.round(-5.0001) = -5。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;43-简述js中-for-in-与-for-of-区别&#34;&gt;4.3. 简述js中 for in 与 for of 区别&lt;/h2&gt;
&lt;h2 id=&#34;44-js-遍历嵌套数组&#34;&gt;4.4. js 遍历嵌套数组&lt;/h2&gt;
&lt;h2 id=&#34;45-arrayprototypereduce-&#34;&gt;4.5. Array.prototype.reduce() 🔹&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;reduce()&lt;/code&gt;&lt;/strong&gt; 方法对数组中的每个元素按序执行一个提供的 &lt;strong&gt;reducer&lt;/strong&gt; 函数，每一次运行 &lt;strong&gt;reducer&lt;/strong&gt; 会将先前元素的计算结果作为参数传入，最后将其结果汇总为单个返回值。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>在工作或学习的过程中，我们会遇到各种各样的问题。这些问题之所以成为问题，是因为它们触及了我们知识的盲区。面对未知，我们需要投入更多时间和精力去学习，逐步填补这些空白，从而点亮我们的知识地图。正是基于这个原因，就有了这个《问题清单》。🔸🔹</p></blockquote>
<h1 id="1-html">1. HTML</h1>
<h2 id="11-img动态修改图片颜色-">1.1. <code>&lt;img&gt;</code>动态修改图片颜色 🔹</h2>
<p>在实现el-menu动态配置菜单图标的时候，因为从字体图标替换成在线获取的.svg图片，所以需要研究下如何实现动态配置颜色，好解决后续各项目不通过主题的需求。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="cl"><span class="nt">transform</span><span class="o">:</span> <span class="nt">translateX</span><span class="o">(</span><span class="nt">-80px</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="nt">filter</span><span class="o">:</span> <span class="nt">drop-shadow</span><span class="o">(</span><span class="p">#</span><span class="nn">a80f0f</span> <span class="nt">80px</span> <span class="nt">0</span><span class="o">);</span>
</span></span></code></pre></div><h1 id="2-ai">2. AI</h1>
<h2 id="21-deepseek满血版使用-">2.1. DeepSeek满血版使用 🔹</h2>
<p>年前使用<code>DeepSeek</code>还挺顺畅的，没想到过年期间突然爆火，导致流量暴涨。再加上美帝“亡我之心不死”，天天攻击，导致服务器经常繁忙，有时候重复提问20多次都没反应，实在忍不了了，只能研究其他渠道来使用深度思考（R1）功能。</p>
<p>经过一番查找，发现可以使用硅基流动（SiliconFlow）提供的服务。硅基流动与华为云联合推出了基于昇腾云的DeepSeek R1 &amp; V3推理服务。使用邀请码注册：https://cloud.siliconflow.cn/i/wDEipqNd，可以赠送13块钱，足够用很久了。不过，由于这是API调用的方式，历史问答的内容无法保留，因此需要结合Cherry Studio客户端软件来使用。</p>
<p>当然，如果觉得麻烦，也可以考虑使用360的纳米AI搜索的慢思考模式，或者kimi的k1.5长思考模式。不过，就推理方面来说，还是觉得DeepSeek更有意思一些。</p>
<h1 id="3-typescript">3. TypeScript</h1>
<h2 id="31-as-keyof-typeof">3.1. as keyof typeof</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">Element</span> <span class="nx">implicitly</span> <span class="nx">has</span> <span class="nx">an</span> <span class="s1">&#39;any&#39;</span> <span class="kr">type</span> <span class="nx">because</span> <span class="nx">expression</span> <span class="k">of</span> <span class="kr">type</span> <span class="s1">&#39;string&#39;</span> <span class="nx">can</span><span class="s1">&#39;t be used to index type &#39;</span><span class="p">{}</span><span class="s1">&#39;. No index signature with a parameter of type &#39;</span><span class="kt">string</span><span class="s1">&#39; was found on type &#39;</span><span class="p">{}</span><span class="err">&#39;</span><span class="p">.</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="nx">viewValue</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">item</span>: <span class="kt">string</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">userInfoList</span><span class="p">.</span><span class="nx">value</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">          <span class="nx">label</span>: <span class="kt">t</span><span class="p">[</span><span class="nx">locale</span><span class="p">.</span><span class="nx">value</span><span class="p">][</span><span class="nx">item</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">          <span class="nx">value</span>: <span class="kt">userInfoObject</span><span class="p">[</span><span class="nx">item</span> <span class="kr">as</span> <span class="k">keyof</span> <span class="k">typeof</span> <span class="nx">userInfoObject</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h1 id="4-javascript">4. JavaScript</h1>
<h2 id="41-arrayprototypeevery">4.1. Array.prototype.every()</h2>
<p><strong><code>every()</code></strong> 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。</p>
<p>every（）方法用来判断所有元素是否都通过制定函数的测试，</p>
<h2 id="42-mathfloor-mathceil-和-mathround-">4.2. Math.floor() 、Math.ceil() 和 Math.round() 🔹</h2>
<ol>
<li>Math.floor()，向下取整，Math.floor(5.96) = 5。</li>
<li>Math.ceil()，向上取整，Math.ceil(5.96) = 6。</li>
<li>Math.round()，四舍五入，取其值的绝对值进行四舍五入，如果原数是负数，结果保持为负。比如Math.round(5.96) = 6；Math.round(-5.0001) = -5。</li>
</ol>
<h2 id="43-简述js中-for-in-与-for-of-区别">4.3. 简述js中 for in 与 for of 区别</h2>
<h2 id="44-js-遍历嵌套数组">4.4. js 遍历嵌套数组</h2>
<h2 id="45-arrayprototypereduce-">4.5. Array.prototype.reduce() 🔹</h2>
<p><strong><code>reduce()</code></strong> 方法对数组中的每个元素按序执行一个提供的 <strong>reducer</strong> 函数，每一次运行 <strong>reducer</strong> 会将先前元素的计算结果作为参数传入，最后将其结果汇总为单个返回值。</p>
<p>比如使用<code>reduce</code>方法找到子数组长度最长的子数组的写法为：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">longestSubArray</span> <span class="o">=</span> <span class="nx">arrs</span><span class="p">.</span><span class="nx">reduce</span><span class="p">((</span><span class="nx">prev</span><span class="p">,</span> <span class="nx">current</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nx">prev</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">current</span><span class="p">.</span><span class="nx">length</span> <span class="o">?</span> <span class="nx">prev</span> <span class="o">:</span> <span class="nx">current</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div><p>以下是对JavaScript中数组（Array）原型方法 <code>filter()</code>, <code>from()</code>, 和 <code>map()</code> 的简要解释：</p>
<h3 id="451-arrayprototypefilter">4.5.1. Array.prototype.filter()</h3>
<p><code>filter()</code> 方法创建一个新数组，其包含通过所提供函数实现的测试的所有元素。这个方法对数组的每个元素执行一次给定的函数，并利用返回值（真值）来确定是否保留该元素。
<strong>语法</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">newArray</span> <span class="o">=</span> <span class="nx">array</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">callback</span><span class="p">(</span><span class="nx">element</span><span class="p">[,</span> <span class="nx">index</span><span class="p">[,</span> <span class="nx">array</span><span class="p">]])[,</span> <span class="nx">thisArg</span><span class="p">])</span>
</span></span></code></pre></div><p><strong>参数</strong>:</p>
<ul>
<li><code>callback</code>: 用来测试每个元素的函数，它可以接收三个参数：
<ul>
<li><code>element</code>: 当前正在处理的元素。</li>
<li><code>index</code>（可选）: 当前元素的索引。</li>
<li><code>array</code>（可选）: 调用 <code>filter</code> 的数组。</li>
</ul>
</li>
<li><code>thisArg</code>（可选）: 执行 <code>callback</code> 时使用的 <code>this</code> 值。
<strong>返回值</strong>: 一个新的、由通过测试的元素组成的数组。
<strong>示例</strong>:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">array</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">filteredArray</span> <span class="o">=</span> <span class="nx">array</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">element</span> <span class="p">=&gt;</span> <span class="nx">element</span> <span class="o">&gt;</span> <span class="mi">3</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">filteredArray</span><span class="p">);</span> <span class="c1">// [4, 5]
</span></span></span></code></pre></div><h3 id="452-arrayprototypefrom">4.5.2. Array.prototype.from()</h3>
<p><code>from()</code> 方法从类数组对象或可迭代对象创建一个新的、浅拷贝的数组实例。
<strong>语法</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nb">Array</span><span class="p">.</span><span class="nx">from</span><span class="p">(</span><span class="nx">arrayLike</span><span class="p">[,</span> <span class="nx">mapFn</span><span class="p">[,</span> <span class="nx">thisArg</span><span class="p">]])</span>
</span></span></code></pre></div><p><strong>参数</strong>:</p>
<ul>
<li><code>arrayLike</code>: 一个类数组对象或可迭代对象，用来从中复制元素。</li>
<li><code>mapFn</code>（可选）: 如果指定了该参数，新数组中的每个元素都会执行该回调函数。</li>
<li><code>thisArg</code>（可选）: 执行 <code>mapFn</code> 时使用的 <code>this</code> 值。
<strong>返回值</strong>: 一个新的数组实例。
<strong>示例</strong>:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">arrayLike</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">length</span><span class="o">:</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="o">:</span> <span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="o">:</span> <span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="o">:</span> <span class="s1">&#39;c&#39;</span> <span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">arrayFrom</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">from</span><span class="p">(</span><span class="nx">arrayLike</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">arrayFrom</span><span class="p">);</span> <span class="c1">// [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
</span></span></span></code></pre></div><h3 id="453-arrayprototypemap">4.5.3. Array.prototype.map()</h3>
<p><code>map()</code> 方法创建一个新数组，其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
<strong>语法</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">newArray</span> <span class="o">=</span> <span class="nx">array</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">callback</span><span class="p">(</span><span class="nx">element</span><span class="p">[,</span> <span class="nx">index</span><span class="p">[,</span> <span class="nx">array</span><span class="p">]])[,</span> <span class="nx">thisArg</span><span class="p">])</span>
</span></span></code></pre></div><p><strong>参数</strong>:</p>
<ul>
<li><code>callback</code>: 为数组中的每个元素执行的函数，它接收三个参数：
<ul>
<li><code>element</code>: 当前正在处理的元素。</li>
<li><code>index</code>（可选）: 当前元素的索引。</li>
<li><code>array</code>（可选）: 调用 <code>map</code> 的数组。</li>
</ul>
</li>
<li><code>thisArg</code>（可选）: 执行 <code>callback</code> 时使用的 <code>this</code> 值。
<strong>返回值</strong>: 一个新数组，每个元素都是回调函数的结果。
<strong>示例</strong>:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">array</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">mappedArray</span> <span class="o">=</span> <span class="nx">array</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">element</span> <span class="p">=&gt;</span> <span class="nx">element</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">mappedArray</span><span class="p">);</span> <span class="c1">// [2, 4, 6]
</span></span></span></code></pre></div><p>这些方法都是JavaScript数组处理中非常有用的工具，它们允许开发者以声明式的方式操作数组，提高代码的可读性和简洁性。</p>
<p><strong><code>map()</code></strong> 方法<strong>创建一个新数组</strong>，这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。</p>
<h2 id="46-arrayprototypefill-">4.6. Array.prototype.fill() 🔸</h2>
<p><strong><code>fill()</code></strong> 方法用一个固定值填充一个数组中从起始索引（默认为 <code>0</code>）到终止索引（默认为 <code>array.length</code>）内的全部元素。它返回修改后的数组。比如，创建一个数组长度为8，默认值为false的数组：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kd">let</span> <span class="nx">visited</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="mi">5</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="c1">// [false, false, false, false, false]
</span></span></span></code></pre></div><h2 id="47-type-和-interface-声明的区别">4.7. type 和 interface 声明的区别</h2>
<p>type 和 interface 声明的区别，尽量使用 <strong>type</strong> 声明，如果使用 <strong>interface</strong> 但又不进行导出的话，会在 vue-tsc 生成类型声明时报错。</p>
<h2 id="48-jsonstringify-实现原理">4.8. JSON.stringify() 实现原理</h2>
<p>JSON.stringify() 实现原理，多层嵌套数据，转义等等问题理清楚</p>
<h2 id="49-js-二维数组">4.9. js 二维数组</h2>
<h2 id="410-暴力解法">4.10. 暴力解法</h2>
<h2 id="411-mathmin">4.11. Math.min()</h2>
<h2 id="412-双指针">4.12. 双指针</h2>
<h2 id="413-时间复杂度">4.13. 时间复杂度</h2>
<p>时间复杂度是用来衡量算法执行时间随输入规模增长而增长的程度的一个概念。它描述了算法的运行时间与输入规模之间的关系。通常用大O符号（O）来表示。</p>
<p>时间复杂度是对算法运行时间的一个上界估计，表示在最坏情况下，算法的运行时间随输入规模增长的趋势。它帮助我们理解算法在不同规模的输入下的性能表现，并且在选择算法时提供了一个指导。</p>
<p>常见的时间复杂度包括O(1)（常数时间）、O(log n)（对数时间）、O(n)（线性时间）、O(n log n)（线性对数时间）、O(n^2)（平方时间）等。时间复杂度越低，算法的性能越好。</p>
<h2 id="414-string">4.14. String</h2>
<h2 id="415-工厂模式">4.15. 工厂模式</h2>
<h2 id="416-闭包">4.16. 闭包</h2>
<h2 id="417-esmcjs构建">4.17. ESM、CJS构建</h2>
<h2 id="418-async的作用">4.18. async的作用</h2>
<h2 id="419-统计代码运行时长">4.19. 统计代码运行时长</h2>
<p>console.time(&rsquo;test&rsquo;) — 开启一个计时器</p>
<p>console.timeEnd(&rsquo;test&rsquo;) — 结束计时并且将结果在 console 中打印出来</p>
<h2 id="420-可选链操作符">4.20. 可选链操作符</h2>
<h2 id="421-tosorted">4.21. toSorted()</h2>
<pre tabindex="0"><code>const nums = [1, 2, 16, 35, 44, 100, 27, 0]
const newNums = nums.toSorted()
console.log(&#39;newNums---&#39;, newNums)
输出：[0, 1, 100, 16, 2, 27, 35, 44]
</code></pre><p>为啥输出结果没有成功排序？</p>
<h2 id="422-按位非">4.22. 按位非（~）🔸</h2>
<p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_NOT">按位非（~） - JavaScript | MDN (mozilla.org)</a></p>
<p>按位非（~）是一个位运算符，它的作用是对一个数的每个位取反，即0变为1，1变为0。在JavaScript中，对一个数取按位非相当于对这个数取反后再减1。</p>
<h2 id="423-二分查找算法">4.23. 二分查找算法</h2>
<h2 id="424-链表--linkedlist--">4.24. 链表  LinkedList  🔹</h2>
<p>链表（LinkedList）是一种常见的数据结构，它由一系列节点组成，每个节点包含两部分：数据和指向下一个节点的引用。</p>
<p>常见的有单向链表和双向链表，单向链表中的每个节点只有一个指向下一个节点的引用，双向链表中每个节点都有两个引用，分别指向前一个节点和后一个节点。</p>
<p>链表的实现原理，主要依靠节点之间的引用关系。链表的头部指向第一个节点，而最后一个节点的指针指向 null。这样，当需要遍历链表时，只需从头部开始，依次沿着指针向下移动即可。</p>
<p>举个例子，假设我们有一个单向链表，其中包含节点 A、B、C 和 D，它们依次相连：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">A</span> <span class="o">-&gt;</span> <span class="nx">B</span> <span class="o">-&gt;</span> <span class="nx">C</span> <span class="o">-&gt;</span> <span class="nx">D</span> <span class="o">-&gt;</span> <span class="kc">null</span>
</span></span></code></pre></div><p>如果要查询链表中的某个节点，需要从头节点开始，沿着指针依次移动，直到找到目标节点或者到达链表末尾。</p>
<p>如果要删除或者插入节点，则需要调整相邻节点之间的引用关系，以保持链表的连续性。</p>
<p>与 ArrayList 相比，LinkedList 在查找和修改操作方面效率较低，因为需要遍历整个链表才能找到目标元素，但在增加和删除操作方面效率更高，因为不需要移动元素。</p>
<h2 id="425-动态规划">4.25. 动态规划</h2>
<p>斐波那契数列</p>
<p><a href="https://zhuanlan.zhihu.com/p/365698607">https://zhuanlan.zhihu.com/p/365698607</a></p>
<h2 id="426-returnbreak和continue-">4.26. return、break和continue 🔹</h2>
<ol>
<li>
<p><code>return</code>语句终止函数的执行，并返回一个指定的值给函数调用者。</p>
</li>
<li>
<p><code>break</code>语句中止当前循环，<code>switch</code>语句或<code>label</code>语句，并把程序控制流转到紧接着被中止语句后面的语句。中止外层循环，需使用<code>label</code>语句，在外层<code>for</code>循环前加上<code>outer</code>，然后使用<code>break outer</code>实现。</p>
</li>
<li>
<p><code>continue</code>声明终止当前循环或标记循环的当前迭代中的语句执行，并在下一次迭代时继续执行循环。</p>
</li>
</ol>
<h2 id="427-右移运算符-">4.27. 右移运算符 &raquo;</h2>
<p>为什么使用位右移运算符 &raquo; 0 实现可以实现取整？</p>
<p>在计算机中，位右移运算符 <code>&gt;&gt;</code> 只能用于整数类型，因此无法直接对浮点数进行位右移操作。如果尝试对浮点数进行位右移操作，编译器通常会将浮点数转换为整数，然后进行位右移操作。</p>
<p>在这种情况下，5.5 将被转换为整数 5，然后进行位右移操作。由于位右移操作是整数运算，结果也是整数，因此结果将是整数 5，而不是浮点数 5.5。</p>
<h2 id="428-位移运算符">4.28. 位移运算符</h2>
<p>&laquo; 、&raquo;、&raquo;&gt;</p>
<h2 id="429-赋值运算符">4.29. 赋值运算符</h2>
<p>&amp;=</p>
<h2 id="430-表达式和运算符">4.30. 表达式和运算符</h2>
<p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators">表达式和运算符</a></p>
<h2 id="431-js向上取整向下取整四舍五入">4.31. JS向上取整、向下取整、四舍五入</h2>
<h2 id="432-字符串数组截取-">4.32. 字符串、数组截取 🔹</h2>
<ol>
<li>String.prototype.split() 方法接受一个模式，通过搜索模式将字符串分割成一个有序的子串列表，将这些子串放入一个数组，并返回该数组。</li>
<li>Array.prototype.splice() 通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。</li>
<li>Array.prototype.slice() 返回一个新的数组对象，这一对象是一个由 <code>start</code> 和 <code>end</code> 决定的原数组的浅拷贝（包括 <code>start</code>，不包括 <code>end</code>），其中 <code>start</code> 和 <code>end</code> 代表了数组元素的索引。原始数组不会被改变。</li>
<li>Array.prototype.toSpliced() 是 <code>splice()</code>方法的复制版本。它返回一个新数组，并在给定的索引处删除和/或替换了一些元素。</li>
</ol>
<h2 id="433-为什么mathmax---的值为0-">4.33. 为什么Math.max(&hellip;[ &lsquo;&rsquo;, &lsquo;&rsquo;,&rsquo;&rsquo; ])的值为0 🔹</h2>
<p>这行代码使用扩展运算符将数组 <code>[&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;]</code> 展开成参数列表，相当于 <code>Math.max(&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;)</code>。由于 <code>Math.max()</code> 方法会将所有参数转换为数字再比较大小，空字符串会被转换为数字 0，因此最终比较的参数为 <code>Math.max(0, 0, 0, 0)</code>。</p>
<p>在 JavaScript 中，空字符串会被转换为数字 0 是因为在进行字符串转换为数字的过程中，如果字符串包含非数字字符（除了符号、小数点等特殊字符），则会被转换为数字 0。</p>
<p>当 JavaScript 引擎在转换字符串为数字时，会按照以下规则进行处理：</p>
<ol>
<li>如果字符串中包含非数字字符（除了符号、小数点等特殊字符），则转换结果为 NaN（Not-a-Number）。</li>
<li>如果字符串为空字符串或只包含空格字符，则转换结果为数字 0。</li>
<li>如果字符串表示整数或浮点数形式的数字（例如 &ldquo;123&rdquo;、&ldquo;3.14&rdquo;），则会按照对应的数字进行转换。</li>
</ol>
<p>因此，空字符串会被转换为数字 0 是因为它不包含任何数字字符，符合规则2的转换规则。</p>
<h2 id="434-数组转字符串">4.34. 数组转字符串</h2>
<p>to.String()</p>
<p>toLocaleString()</p>
<p>join()</p>
<h2 id="435-和的区别">4.35. <code>==</code>和<code>===</code>的区别</h2>
<h2 id="436-string和new-string的区别">4.36. String()和new String()的区别</h2>
<h2 id="437-字符串强制转换">4.37. 字符串强制转换</h2>
<p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#">https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#</a>字符串强制转换</p>
<h2 id="438-超长string转number精度丢失问题-">4.38. 超长String转number精度丢失问题 🔹</h2>
<p>在实现算法题时，遇到最后数字相加的值和预期的值不一致，因为使用的Number(str)方法，有一定的区间限制，会出现精度丢失。修改为使用BigInt实现，可以表示任意大的整数，但是BigInt在表示时，后缀会有一个n，这样的话就没办法直接和Number类型的数字进行运算，只能Number转为BigInt来运算，拿到结果之后再进行下一步处理。</p>
<h2 id="439-javascript中spliceslice和split含义和区别">4.39. JavaScript中splice、slice和split含义和区别？</h2>
<h2 id="440-jsonstringify实现原理了解">4.40. JSON.stringify()实现原理了解</h2>
<h2 id="441-base64算法">4.41. Base64算法</h2>
<p><a href="https://blog.csdn.net/qq_19782019/article/details/88117150">什么是Base64算法？——全网最详细讲解-CSDN博客</a></p>
<h2 id="442-hexbinaryascii和base64">4.42. hex、binary、ascii和base64</h2>
<p>Hexadecimal (hex)是一种基于16的数字系统，使用数字0-9和字母A-F来表示数值0-15。它常用于表示二进制数据的编码。</p>
<p>Binary (binary)是一种基于2的数字系统，使用数字0和1来表示数值。它是计算机中最基本的数字系统，用于表示所有的数据和指令。</p>
<p>ASCII (American Standard Code for Information Interchange)是一种字符编码标准，用于将字符映射为整数。每个ASCII字符都有一个对应的整数值，范围从0到127。</p>
<p>Base64是一种编码方式，用于将二进制数据转换为可打印的ASCII字符。它将3个字节的二进制数据编码成4个字符，通常用于在网络传输中传递二进制数据。</p>
<h2 id="443-索引下标">4.43. 索引、下标</h2>
<h2 id="444-哈希表">4.44. 哈希表</h2>
<h2 id="445-栈-">4.45. 栈 🔹</h2>
<p>栈是一种后进先出（LIFO）的数据结构，**类似于我们在现实生活中处理堆叠的物体的方式。**栈的主要操作包括将元素压入栈（push），从栈中弹出元素（pop），和查看栈顶元素（peek）。</p>
<h2 id="446-枚举">4.46. 枚举</h2>
<h2 id="447-export">4.47. export</h2>
<h2 id="448-严格模式">4.48. 严格模式</h2>
<h2 id="449-ts-ignore">4.49. @ts-ignore</h2>
<h2 id="450-constlet和var">4.50. const、let和var</h2>
<h2 id="451-自增运算符">4.51. 自增（++）运算符</h2>
<h2 id="452-什么是-f">4.52. 什么是 F#</h2>
<h2 id="453-typescript中元组的基本使用">4.53. TypeScript中元组的基本使用</h2>
<p>数组合并了相同类型的对象，而元组（Tuple）合并了不同类型的对象。</p>
<h2 id="454-switch-和-if-else-哪个效率高-">4.54. switch 和 if else 哪个效率高 🔹</h2>
<p>在大多数情况下，<code>switch</code> 语句的效率通常比 <code>if else</code> 语句要高。这是因为 <code>switch</code> 语句使用了跳转表来查找符合条件的分支，而不是逐个比较条件。跳转表实际上是一个数组，通过将条件值作为索引，可以直接访问到对应的目标地址。因此，跳转表的查找方式具有固定的时间复杂度 O(1)，无论有多少个分支，查找时间都是恒定的。</p>
<p>相比之下，<code>if else</code> 语句需要逐个比较条件，如果有多个条件，它的查找时间将随着条件数量和复杂度的增加而增加。在最坏的情况下，<code>if else</code> 语句的时间复杂度可能达到 O(n)，其中 n 是分支的数量。</p>
<p>然而，在实际应用中，仍然需要根据具体的场景来选择使用 <code>switch</code> 还是 <code>if else</code>。如果条件是固定的值，且分支数量较多，建议使用 <code>switch</code> 语句。如果条件是动态的，并且需要进行更复杂的条件判断，建议使用 <code>if else</code> 语句。</p>
<h1 id="5-network">5. Network</h1>
<h2 id="51-axios获取数据报错的json数据没有返回到catch里面">5.1. axios获取数据，报错的JSON数据没有返回到catch里面</h2>
<h2 id="52-axios实现自动设置cookie">5.2. axios实现自动设置cookie</h2>
<h2 id="53-axios中断已发出的请求简单示例验证">5.3. axios中断已发出的请求，简单示例验证</h2>
<h2 id="54-dnsurliptcphttp">5.4. DNS、URL、IP、TCP、HTTP</h2>
<h2 id="55-从输入-url-到页面加载完成发生了什么">5.5. 从输入 URL 到页面加载完成，发生了什么？</h2>
<h2 id="56-xmlhttprequest">5.6. XMLHttpRequest</h2>
<h2 id="57-ftp">5.7. FTP</h2>
<h2 id="58-file">5.8. file://</h2>
<h2 id="59-sentry没有8443端口之后">5.9. Sentry没有8443端口之后</h2>
<p>Sentry没有8443端口之后，可以使用Sentry cli登录，自动化上传SourceMap了？为啥？</p>
<h2 id="510-patchput和post方法的区别">5.10. PATCH、PUT和POST方法的区别？🔹</h2>
<table>
  <thead>
      <tr>
          <th>请求方法</th>
          <th>作用</th>
          <th>请求是否有主体</th>
          <th>成功的响应是否有主体</th>
          <th>安全</th>
          <th>幂等</th>
          <th>可缓存</th>
          <th>允许在HTML表单中使用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>PATCH</td>
          <td>用于对资源进行部分修改。</td>
          <td>是</td>
          <td>可能有</td>
          <td>否</td>
          <td>是</td>
          <td>否</td>
          <td>不允许</td>
      </tr>
      <tr>
          <td>PUT</td>
          <td>创建一个新的资源或用请求的有效载荷替换目标资源的表示。</td>
          <td>是</td>
          <td>可能有</td>
          <td>否</td>
          <td>是</td>
          <td>否</td>
          <td>不允许</td>
      </tr>
      <tr>
          <td>POST</td>
          <td>发送数据给服务器。</td>
          <td>是</td>
          <td>是</td>
          <td>否</td>
          <td>否</td>
          <td>仅在包含足够新的信息时</td>
          <td>允许</td>
      </tr>
  </tbody>
</table>
<p>幂等：任何数量的重复、相同的请求都会使资源处于相同的状态。</p>
<p>以上内容来源于www.mozilla.org。</p>
<h2 id="511-状态码-">5.11. 状态码 🔹</h2>
<p>项目中有些接口，请求的资源大小有200KB之多，在前端页面交互使用上体验很差，而这些资源通常都不会改变，频繁去请求作用不大，徒增服务器负担。为了解决这个问题，引入HTTP 304 状态码机制，当浏览器发起一个条件请求到服务器时，服务器会使用304状态码来表示请求资源未更新，可以直接使用当前缓存的资源，无需再重新从服务器下载。</p>
<ol>
<li>
<p>背景、初衷和目标：304状态码主要是为了减少不必要的网络请求，减少服务器负担和提高性能而设计的。当客户端发起条件请求时，服务器可以通过304状态码告知客户端，所请求的资源未发生变化，可以直接使用当前缓存的资源。</p>
</li>
<li>
<p>优势和劣势：优势：可以减少网络请求加快前端页面加载速度，降低服务器负担。劣势：如果配置不正确，可能导致前端页面展示的不是最新的数据。</p>
</li>
<li>
<p>使用场景： 适用于请求资源过大的业务场景，或者图片、样式等静态资源。</p>
</li>
<li>
<p>组成部分和关键点：前端发起的条件请求时需要在请求头中包含条件标识，如If-Modified-Since、If-None-Match等，服务器收到请求后，判断资源是否有更新，如果没有更新会返回304状态码。</p>
<p>如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">GET</span> <span class="o">/</span><span class="nx">example</span><span class="p">.</span><span class="nx">html</span> <span class="nx">HTTP</span><span class="o">/</span><span class="mf">1.1</span>
</span></span><span class="line"><span class="cl"><span class="nx">Host</span><span class="o">:</span> <span class="nx">www</span><span class="p">.</span><span class="nx">example</span><span class="p">.</span><span class="nx">com</span>
</span></span><span class="line"><span class="cl"><span class="nx">If</span><span class="o">-</span><span class="nx">None</span><span class="o">-</span><span class="nx">Match</span><span class="o">:</span> <span class="s2">&#34;abc123&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">If</span><span class="o">-</span><span class="nx">Modified</span><span class="o">-</span><span class="nx">Since</span><span class="o">:</span> <span class="nx">Fri</span><span class="p">,</span> <span class="mi">24</span> <span class="nx">Nov</span> <span class="mi">2023</span> <span class="mi">01</span><span class="o">:</span><span class="mi">27</span><span class="o">:</span><span class="mi">35</span> <span class="nx">GMT</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">HTTP</span><span class="o">/</span><span class="mf">1.1</span> <span class="mi">304</span> <span class="nx">Not</span> <span class="nx">Modified</span>
</span></span></code></pre></div></li>
<li>
<p>底层原理和关键实现：当服务器收到前端发起的请求之后，会比较请求中的条件标识和资源的最后更新时间或实体标签，判断资源是否有更新，如果没有更新则返回304状态码，否则会返回200状态码和最新的资源内容。</p>
</li>
<li>
<p>已有的实现和对比： 大多数主流的web服务器和浏览器都支持304状态码，如Apache、Nginx、IIS等。与传统的200状态码相比，304状态码能更有效地利用缓存，减少不必要的网络请求和降低服务器资源负担。</p>
</li>
</ol>
<p>要验证服务器是否正确处理304状态码，可以打开浏览器的开发者工具中切换到 Network（网络）选项卡，查看指定的网络请求，在第一次请求之后的请求，是否显示  304 Not Modified ，然后其 Size 和Time 是否较少。如是，就说明在请求时，是使用了浏览器自身的缓存而不是重新从服务器下载资源。</p>
<h2 id="512-fetch-api">5.12. Fetch API</h2>
<h2 id="513-http请求行请求头请求体响应行响应头响应体详解">5.13. HTTP请求行、请求头、请求体、响应行、响应头、响应体详解</h2>
<h1 id="6-git">6. Git</h1>
<h2 id="61-git-clone--b-1-dev">6.1. git clone -b ${1:-dev}</h2>
<h2 id="62-gitlab-仓库迁移-">6.2. gitlab 仓库迁移 🔹</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> git clone --mirror url
</span></span><span class="line"><span class="cl"> git remote set-url –-push origin url
</span></span><span class="line"><span class="cl"> git push --mirror 
</span></span></code></pre></div><p>然后会出现提示没有权限的问题，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404091559471.png"></p>
<pre tabindex="0"><code>remote: GitLab: You are not allowed to force push code to a protected branch on this project.
</code></pre><p>需要打开GitLab，在项目设置那里，开启允许强制更新开关，然后再运行命令<code>git push --mirror</code>即可。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202404091600182.png"></p>
<h2 id="63-git-pull放弃本地修改强制更新-">6.3. git pull放弃本地修改，强制更新 🔹</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git fetch --all
</span></span><span class="line"><span class="cl">git reset --hard origin/master
</span></span><span class="line"><span class="cl">git clean -f -d
</span></span></code></pre></div><ol>
<li><code>git fetch --all</code>：从远程仓库获取最新的内容。</li>
<li><code>git reset --hard origin/master</code>：将本地仓库的内容重置为与远程仓库相同，包括放弃任何本地修改。</li>
<li><code>git clean -f -d</code>：清除工作目录中未跟踪的文件和目录。</li>
</ol>
<h2 id="64-git-clone-fatal发送请求时出错-">6.4. git clone fatal：发送请求时出错 🔹</h2>
<p>在使用<code>git clone</code>项目时，提示以下信息，然后一直需要提示输入用户名和密码。</p>
<pre tabindex="0"><code>fatal: 发送请求时出错。
fatal: 服务器提交了协议冲突. Section=ResponseStatusLine
</code></pre><p>从上面可知，应该是git配置上面出现了问题，所以就打算将<code>git</code>配置初始化，通过以下命令查看<code>git</code>配置文件所在位置，并将所有<code>.gitconfig</code>文件全都删除。</p>
<pre tabindex="0"><code>git config --list --show-origin
</code></pre><p>重新打开<code>Git Bash Here</code>，使用以下命令，然后配置<code>Git</code>在本地存储凭据信息，以便自动记住用户名和密码，避免每次进行<code>Git</code>操作时都需要输入凭据信息。</p>
<pre tabindex="0"><code>git config --global credential.helper store
</code></pre><p>然后只要输入一次用户名和密码，后续操作就都不需要输入了。</p>
<h2 id="65-git命令出现fatal-发送请求时出错错误-">6.5. git命令出现“fatal: 发送请求时出错”错误 🔸</h2>
<p>fatal: 发送请求时出错。
fatal: 服务器提交了协议冲突. Section=ResponseStatusLine</p>
<h2 id="66-git-clone-xxx-not-found-">6.6. git clone xxx not found 🔹</h2>
<p>在使用git从gitlab下载项目的时候，出现以下这个报错问题：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">fatal</span><span class="o">:</span> <span class="nx">repository</span> <span class="s1">&#39;https://gitlab.xxx.com/xxx/web/project-name/&#39;</span> <span class="nx">not</span> <span class="nx">found</span>
</span></span></code></pre></div><p>因为URL是copy的，所以不会弄错，猜测应该是用户名和密码异常，所以使用以下命令进行配置：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git config --global user.name <span class="s2">&#34;xxxx&#34;</span>
</span></span><span class="line"><span class="cl">git config --global user.password <span class="s2">&#34;xxxx&#34;</span>
</span></span></code></pre></div><p>发现还是失败了，就想着怎么触发用户民和密码输入那个弹窗。看了一下发现使用的URL其实是没有.git结尾的，修改了一下clone的命令为：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://gitlab.xxx.com/xxx/web/project-name.git
</span></span></code></pre></div><p>此时，触发了用户名和密码输入弹窗，填入正确信息即可，问题解决。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402021037069.png"></p>
<h2 id="67-git命令窗口样式美化-">6.7. git命令窗口样式美化 🔹</h2>
<p>用了七八年的东西，一直没有关注样式问题，只觉得还行，但是最近安装nvm，发现一下字体看不清，就看下怎么设置样式，才发现这个可以右键Options然后进行设置，除了字体颜色、背景色，还有主题可选，但是试用了一下，不够美观，如下所示：</p>
<p><img alt="企业微信截图_1706757695363" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402011121252.png"></p>
<p>在网上查了一下，发现这个样式还不错。<a href="https://blog.csdn.net/qq_46359697/article/details/107756317">Git Bash界面的美化（一看必会）_git bash美化-CSDN博客</a>，配置流程就是修改.minttyrc文件，位置在<code>C:\Users\weihao</code>，将里面的使用#注释，然后复制样式覆盖即可。</p>
<h2 id="68-git-切换分支-">6.8. git 切换分支 🔹</h2>
<ol>
<li>git branch  查看当前分支</li>
<li>git branch -r 查看远程仓库的分支列表</li>
<li>git checkout <branch-name> 切换到已存在的分支</li>
<li>git checkout -b <new-branch-name> 创建并切换到新分支</li>
</ol>
<p>在切换分支前，确保你的工作目录是干净的（没有未提交的更改）。如果有未提交的更改，可以使用<code>git stash</code>命令将其暂存起来，然后再切换分支。</p>
<h1 id="7-npm">7. npm</h1>
<h2 id="71-怎么通过vue3项目相关配置知道其依赖的node和npm版本">7.1. 怎么通过Vue3项目相关配置，知道其依赖的node和npm版本</h2>
<h2 id="72-node和npm是什么关系">7.2. node和npm是什么关系</h2>
<h2 id="73-为什么npm升级之后不做向前兼容老项目需要依赖指定版本才可以正常运行">7.3. 为什么npm升级之后不做向前兼容，老项目需要依赖指定版本才可以正常运行</h2>
<h2 id="74-npm-install-命令-整个流程是什么样子的">7.4. npm install 命令 整个流程是什么样子的</h2>
<h2 id="75-npm-run-dev-命令整个流程又是什么样子的">7.5. npm run dev 命令整个流程又是什么样子的</h2>
<h2 id="76---force--和---legacy-peer-deps--的区别是什么">7.6. <code>--force</code>  和 <code>--legacy-peer-deps</code>  的区别是什么</h2>
<h2 id="77-npmnode怎么做到前端组规范">7.7. npm、node怎么做到前端组规范</h2>
<h2 id="78-npm-升级至最新命令-npm-install--g-npmlatest">7.8. npm 升级至最新命令 npm install -g npm@latest</h2>
<h2 id="79-npm-安装指定版本命令-npm-install---g">7.9. npm 安装指定版本命令 npm install <a href="mailto:npm@6.14.15">npm@6.14.15</a> -g</h2>
<h2 id="710-error-command-failed-with-enoent-npm-run-clean">7.10. Error: Command failed with ENOENT: npm run clean🔹</h2>
<p>在维护部门内部的API库时，出现执行命令报错，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202309251531813.png"></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">errors</span><span class="o">:</span><span class="mi">477</span>
</span></span><span class="line"><span class="cl">    <span class="nx">ErrorCaptureStackTrace</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="o">^</span>
</span></span><span class="line"><span class="cl"><span class="nb">Error</span><span class="o">:</span> <span class="nx">Command</span> <span class="nx">failed</span> <span class="kd">with</span> <span class="nx">ENOENT</span><span class="o">:</span> <span class="nx">npm</span> <span class="nx">run</span> <span class="nx">clean</span>
</span></span><span class="line"><span class="cl"><span class="nx">spawn</span> <span class="nx">npm</span> <span class="nx">run</span> <span class="nx">clean</span> <span class="nx">ENOENT</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">Process</span><span class="p">.</span><span class="nx">ChildProcess</span><span class="p">.</span><span class="nx">_handle</span><span class="p">.</span><span class="nx">onexit</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">child_process</span><span class="o">:</span><span class="mi">283</span><span class="o">:</span><span class="mi">19</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">onErrorNT</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">child_process</span><span class="o">:</span><span class="mi">478</span><span class="o">:</span><span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">processTicksAndRejections</span> <span class="p">(</span><span class="nx">node</span><span class="o">:</span><span class="nx">internal</span><span class="o">/</span><span class="nx">process</span><span class="o">/</span><span class="nx">task_queues</span><span class="o">:</span><span class="mi">83</span><span class="o">:</span><span class="mi">21</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">errno</span><span class="o">:</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">code</span><span class="o">:</span> <span class="s1">&#39;ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">syscall</span><span class="o">:</span> <span class="s1">&#39;spawn npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">path</span><span class="o">:</span> <span class="s1">&#39;npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">spawnargs</span><span class="o">:</span> <span class="p">[],</span>
</span></span><span class="line"><span class="cl">  <span class="nx">originalMessage</span><span class="o">:</span> <span class="s1">&#39;spawn npm run clean ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">shortMessage</span><span class="o">:</span> <span class="s1">&#39;Command failed with ENOENT: npm run clean\nspawn npm run clean ENOENT&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">command</span><span class="o">:</span> <span class="s1">&#39;npm run clean&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">exitCode</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">signal</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">signalDescription</span><span class="o">:</span> <span class="kc">undefined</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">stdout</span><span class="o">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">stderr</span><span class="o">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">failed</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">timedOut</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">isCanceled</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">killed</span><span class="o">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>从报错信息可知，代码在执行到<code>npm run clean</code>命令时报错了，提示找不到这个命令，但是我复制命令在终端运行是成功的，在windows10系统是没问题的，但我在mac系统上运行就报错了，执行代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">await</span> <span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span>
</span></span></code></pre></div><p>初步猜测，可能execa用法在mac环境中不生效。将其注释，没有提示报错，所以，接着就要研究如何在mac环境中使用execa了。只需将</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm run clean&#39;</span><span class="p">)</span> 
</span></span></code></pre></div><p>改写为</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">execa</span><span class="p">(</span><span class="s1">&#39;npm&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;run&#39;</span><span class="p">,</span> <span class="s1">&#39;clean&#39;</span><span class="p">],</span> <span class="p">{</span> <span class="nx">shell</span><span class="o">:</span> <span class="kc">true</span> <span class="p">})</span>
</span></span></code></pre></div><p>即可，这时，我们就会想知道这两种用法有什么区别呢？</p>
<p><code>execa</code>是一个用于执行<code>shell</code>命令的<code>Node.js</code>模块，它可以将命令作为参数传递给它，并返回一个<code>Promise</code>，以便在命令执行完成之后处理。根据报错提示没有找到<code>npm</code>命令，很有可能是execa模块无法正确识别到环境变量。</p>
<p>所以将<code>npm run clean</code>拆分为<code>npm</code>和<code>run clean</code>两个参数，并将 shell 选项设置为<code>true</code>，以便在子进程中运行命令的时候使用默认的<code>shell</code>，这样可以正确找到<code>npm</code>命令并且识别环境变量，找到<code>npm</code>命令。</p>
<h2 id="711-npm-i-时卡住了">7.11. npm i 时卡住了🔹</h2>
<p>在使用<code>npm i</code>命令给项目安装依赖时，出现卡住的情况，等了好久，也没见成功或者中断，这就无法入手去解决问题。使用命令<code>npm install --verbose</code>可以看到安装的更多信息，便于排查问题。</p>
<h2 id="712-在windows环境使用git安装nvm-">7.12. 在windows环境使用git安装nvm 🔹</h2>
<p>因公司电脑做了软件安装限制，导致不能使用.exe方式配置nvm工具，但是平时项目开发中，经常需对老项目使用不同的node版本，所以这个工具还是很重要的。确定研究一下有没有其他方式配置nvm，在github上看到有<a href="https://github.com/nvm-sh/nvm?tab=readme-ov-file#git-install">Git Install</a>章节，用法是要git clone项目源码下来，然后配置，但是现在github一直clone不了项目，所以就去gitee上看了一下，发现有这个仓库<a href="https://gitee.com/RubyMetric/nvm-cn?_from=gitee_search">nvm-cn: 🧊 nvm国内安装工具 (gitee.com)</a>，用法很简单，只需要在<code>Git Bash Here</code>上使用以下命令即可安装：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">bash -c <span class="s2">&#34;</span><span class="k">$(</span>curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh<span class="k">)</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>然后验证一下，使用命令<code>nvm ls</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402011112106.png"></p>
<p>使用<code>nvm</code>命令时只能在<code>Git Bash Here</code>上使用，在<code>Windows PowerShell</code>和<code>CMD</code>命令窗口是使用不了的。</p>
<p>安装新版本</p>
<pre tabindex="0"><code>nvm install 20.11.1
</code></pre><p>切换版本</p>
<pre tabindex="0"><code>nvm use 16.14.2
</code></pre><p>指定默认的Node版本，使用一下命令：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">nvm</span> <span class="nx">alias</span> <span class="k">default</span> <span class="mf">16.14</span><span class="p">.</span><span class="mi">2</span>
</span></span></code></pre></div><p>问题：git bash here每次启动都很慢。</p>
<p><a href="https://superuser.com/questions/1733316/git-bash-extremely-slow-start-up-on-windows">Git Bash extremely slow start up on Windows - Super User</a></p>
<h2 id="713-npm-elasticdump">7.13. npm elasticdump</h2>
<h2 id="714-npm-install-xxxx-legacy-peer-deps">7.14. npm install xxxx &ndash;legacy-peer-deps</h2>
<p>npm install xxxx &ndash;legacy-peer-deps 解决依赖冲突 （https://bbs.huaweicloud.com/blogs/349716?utm_source=zhihu&amp;utm_medium=bbs-ex&amp;utm_campaign=other&amp;utm_content=content）</p>
<h2 id="715-npmyarnpnpm-幽灵依赖">7.15. npm、yarn、pnpm 幽灵依赖</h2>
<h2 id="716-pnpm-的-workspaces-方案">7.16. pnpm 的 workspaces 方案</h2>
<h2 id="717-npm-config-set设置了新的npm私有源但是一直没有生效">7.17. npm config set设置了新的npm私有源，但是一直没有生效🔹</h2>
<p><code>npm install</code> 自己<code>vue next</code>模版，出现封装的库引向的是<code>192.168.24.XXX</code>的npm私有源，使用命令<code>npm config set</code>设置了新的npm私有源<code>112.230.193.XXX</code>，但是一直没有生效，总是报错如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311081429242.png"></p>
<p>原因是因为<code>package-lock.json</code>里面的是<code>192.168.24.XXX</code>的npm私有源，虽然在终端运行命令<code>npm config set</code>设置新的npm私有源路径，但<code>npm install</code>时，读取的还是<code>package-lock.json</code>里面的，起因是npm私有源路径有改动，这个模版没有及时进行更新。涉及到的知识点可以是<code>package-lock.json</code>和<code>package.json</code>的异同。<code>package.json</code>是对项目的高级描述，用于指定项目的基本信息和依赖包的版本范围，而<code>package-lock.json</code>是由<code>npm</code>自动生成和维护的文件，用于确保项目在不同环境下安装的依赖包的版本一致性，在实际开发中，我们只需要编辑和维护<code>package.json</code>文件，而<code>package-lock.json</code>文件会在每次执行<code>npm install</code>命令时自动更新。</p>
<h2 id="718-rollup550">7.18. Rollup5.50</h2>
<h2 id="719-esbuild">7.19. esbuild</h2>
<h2 id="720-zwsvue-next-workspace540-">7.20. &ldquo;@zws/vue-next&rdquo;: &ldquo;workspace:5.40 &quot;</h2>
<p>&ldquo;@zws/vue-next&rdquo;: &ldquo;workspace:5.40 &ldquo;这个用法为什么会失败？原因是pnpm的workspace用法上面有问题。</p>
<h2 id="721-npm--d--dev--g">7.21. npm -D -dev -g</h2>
<h2 id="722-pnpm-的-monorepo">7.22. pnpm 的 monorepo</h2>
<h2 id="723-什么是npx">7.23. 什么是npx？🔹</h2>
<p>因为最近在项目Vue3中集成Sentry前端异常监控系统，看到官方文档里有使用npx的指令，就去了解了一下。当你在项目中使用npx执行一个命令时，npx 会在当前项目的的<code>./node_modules/.bin</code>目录下查找是否有对应可执行的命令，没有找到的话再从全局环境查找是否有安装对应的模块，如果全局环境中没有，会创建一个临时目录，并在其中下载对应的模块，命令执行完毕后临时目录会被删除，不会占有本地资源。这种机制可以确保在执行命令时使用最新的模块，并且不会对全局环境造成过多的污染。</p>
<h2 id="724-使用npm-install-packagelatest-时安装的是v160还是v161-beta-">7.24. 使用npm install package@latest 时，安装的是V1.6.0还是V1.6.1-beta ？🔹</h2>
<p>在部门搭建私有<code>npm</code>仓库，对一些组件库和工具库进行管理，但是出现有同事使用<code>package@latest</code>下载到了<code>beta</code>版本，研究了<code>npm</code>发包机制知道问题出在哪里，因为在发布版本时，都是使用<code>npm publish</code>命令的，所以事实上<code>V1.6.0-beta</code>只是名称改为了<code>-beta</code>而已，要解决这个问题，后续beta版本发布时，需要使用命令<code>npm publish --tag beta</code>。官方文档如下<a href="https://docs.npmjs.com/adding-dist-tags-to-packages">Adding dist-tags to packages | npm Docs (npmjs.com)</a>。</p>
<h1 id="8-vue">8. Vue</h1>
<h2 id="81-createwebhashhistory">8.1. createWebHashHistory</h2>
<h2 id="82-vuepress-2x-打包流程机制以及md文档越来越多打包特别慢的原因">8.2. vuepress 2.x 打包流程机制，以及md文档越来越多，打包特别慢的原因</h2>
<h2 id="83-chrome使用http访问会强转为https的问题-">8.3. Chrome使用http访问会强转为https的问题 🔹</h2>
<p>使用Chrome访问HTTP网站时，若浏览器自动转为HTTPS导致访问失败，可尝试以下步骤解决：</p>
<ol>
<li>在Chrome浏览器地址栏输入<code>chrome://net-internals/#hsts</code>并回车。</li>
<li>找到页面中的<code>Delete domain security policies</code>部分。</li>
<li>输入导致问题的网站域名。</li>
<li>点击<code>Delete</code>按钮删除该域名的安全策略。</li>
</ol>
<p>完成上述步骤后，Chrome将不再自动将HTTP请求转为HTTPS，从而解决强转为https的问题。</p>
<h2 id="84-chrome-调试鼠标悬停后出现的元素-">8.4. Chrome 调试鼠标悬停后出现的元素 🔹</h2>
<p>在<code>Vue Next</code>项目开发过程中，我们需要调试一些鼠标悬停才会出现的元素，比如<code>Element Plus</code> 里的 <code>&lt;el-dropdown&gt;</code> 组件，如要修改它下拉菜单的背景色，可使用鼠标悬停显示下拉框，然后按下快捷键 <code>Ctrl + Shift + C</code> 触发视图查看，再点击下拉框即可获取<code>Class</code>名称进行修改，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407050954853.png"></p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202407051007783.png"></p>
<h2 id="85-pixijs">8.5. pixijs</h2>
<p><a href="https://pixijs.com/">https://pixijs.com/</a></p>
<h2 id="86-vue-i18n-must-be-called-at-the-top-of-a-setup-function">8.6. vue-i18n Must be called at the top of a <code>setup</code> function</h2>
<p>在使用vue-i18n的时候，因为是在组合式函数.ts文件中使用的，所以，报错显示如下信息：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="nx">Must</span> <span class="nx">be</span> <span class="nx">called</span> <span class="nx">at</span> <span class="nx">the</span> <span class="nx">top</span> <span class="k">of</span> <span class="nx">a</span> <span class="sb">`setup`</span> <span class="kd">function</span>
</span></span></code></pre></div><h2 id="87-升级packagejson中全部依赖包到最新版本-">8.7. 升级package.json中全部依赖包到最新版本 🔹</h2>
<p>在Vue项目package.json中，要将全部依赖包升级至最新版本，可以使用工具<a href="https://github.com/raineorshine/npm-check-updates">npm-check-updates</a>实现，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202406111552312.png"></p>
<p>全局安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="o">-</span><span class="nx">g</span> <span class="nx">npm</span><span class="o">-</span><span class="nx">check</span><span class="o">-</span><span class="nx">updates</span>
</span></span></code></pre></div><p>或者，npx安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npx</span> <span class="nx">npm</span><span class="o">-</span><span class="nx">check</span><span class="o">-</span><span class="nx">updates</span>
</span></span></code></pre></div><p>检查并显示最新版本</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">ncu</span> <span class="o">-</span><span class="nx">u</span>
</span></span></code></pre></div><p>重新安装</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span>
</span></span></code></pre></div><p>至此，完成。</p>
<h2 id="88-el-table-column中设置type为selectionalign为center异常问题-">8.8. el-table-column中设置type为selection，align为center，异常问题 🔹</h2>
<p><code>Element Plus</code>组件库的<code>Table</code>表格组件，在设置<code>el-table-column</code>的<code>type</code>为<code>selection</code>，<code>align</code>为<code>center</code>时，出现只有表头居中了，但是内容没有居中，排查了一下原因，是因为在自行封装的Table组件中，设置了<code>show-overflow-tooltip</code>，虽然已经过滤了type为custom的情况，但是缺少了过滤<code>selection</code>的情况，所以勾选框多了一个<code>el-tooltip</code>的样式，导致<code>center</code>不生效。</p>
<h2 id="89-自行封装的table组件顶部边框线没有显示问题-">8.9. 自行封装的Table组件，顶部边框线没有显示问题 🔸</h2>
<p>自行封装的Table组件，顶部边框线没有显示，排查了一下，问题出在<code>.el-table .el-table__cell</code>这个样式，因为我们自己封装的组件库，样式文件来源都会有@xxx标识的，而这个的引用则是<code>index-5c8207ce.css</code>，初步判断是<code>Element Plus</code>官方样式。对比其他项目也是用的这个组件库，是没有这个问题的。<code>Element Plus</code>版本号也是一样的，所以猜测应该是<code>Element Plus</code>样式问题。检查了一下该项目，发现引用的样式是很久以前<code>Beta</code>版本，用来自定义主题的样式的，替换成<code>Element Plus</code>默认用法<code>import 'element-plus/dist/index.css'</code>，发现问题解决了。</p>
<h2 id="810-cannot-find-module-xxx-or-its-corresponding-type-declarations-">8.10. Cannot find module xxx or its corresponding type declarations. 🔹</h2>
<p>在Vue3项目的vite.config.ts中设置别名之后，在.vue文件中引入会报红提示这个没有找到的错误，验证了下，虽然不影响功能使用，但是体验不好。</p>
<p><code>VSCode</code>中使用<code>Ctrl+Shift+P</code>，然后输入<code>type</code>，选择<code>Volar:Select TypeScript Version...</code>，然后选择<code>Use Workspace Version xxx</code>即可。</p>
<h2 id="811-百度网站不支持iframe问题">8.11. 百度网站不支持iframe问题</h2>
<h2 id="812-查看vue3项目所需的node和npm版本">8.12. 查看Vue3项目所需的node和npm版本</h2>
<p>如果我新接受一个vue项目，我怎么知道应该使用哪个版本的node和npm去npm install安装依赖的？</p>
<h2 id="813-packagejson中依赖库版本号前缀和的区别">8.13. Package.json中依赖库版本号前缀^和~的区别？🔹</h2>
<p>在了解<code>^</code>和<code>~</code>区别之前，我们需要在<a href="https://semver.org/lang/zh-CN/">语义化版本 2.0.0 | Semantic Versioning (semver.org)</a>上了解项目版本号规范。根据语义化版本规范，一个版本号由三个数字组成，用点号分隔，格式为&quot;主版本号.次版本号.补丁版本号&rdquo;，例如版本号2.5.6。以下是对每个数字的含义：</p>
<ol>
<li>主版本号：当进行大规模的API变更或不兼容的改动时，增加主版本号。这意味着新版本可能会导致现有代码无法正常工作。</li>
<li>次版本号：当添加新功能，但保持向后兼容时，增加次版本号。新版本引入的改动应该可以与旧版本的代码兼容。</li>
<li>补丁版本号：当进行小的bug修复或性能优化等不影响现有功能的改动时，增加补丁版本号。补丁版本号的更新应该不会引入新的功能或破坏现有功能。</li>
</ol>
<p>在package.json文件中，dependencies字段用于指定项目所依赖的包及其版本。在这些依赖项的版本号中：</p>
<ol>
<li><code>^</code>符号：允许安装指定版本的最新次要版本，但不包括更高的主要版本。例如，如果依赖项的版本号为^1.2.3，那么运行npm install命令时，将安装1.2.3版本的最新次要版本，例如1.2.4、1.3.0，但不会安装2.0.0版本。</li>
<li><code>~</code>符号：允许安装指定版本的最新补丁版本，但不包括更高的次要版本。例如，如果依赖项的版本号为~1.2.3，那么运行npm install命令时，将安装1.2.3版本的最新补丁版本，例如1.2.4，但不会安装1.3.0版本。</li>
</ol>
<p>总结起来，<code>^</code>符号允许安装指定版本的最新次要版本，而<code>~</code>符号允许安装指定版本的最新补丁版本。</p>
<h2 id="814-无头浏览器">8.14. 无头浏览器</h2>
<h2 id="815-在线地图坐标系转换工具使用">8.15. 在线地图坐标系转换工具使用🔹</h2>
<p>因项目开发计划使用Bing Maps地图替换百度地图，所以就需要考虑坐标转换的问题，否则定位会出现偏差，当前在 <a href="https://www.lddgo.net">www.lddgo.net</a> 上面发现有<a href="https://www.lddgo.net/convert/coordinate">坐标系转换工具</a>，就使用了一下，进行验证。</p>
<ol>
<li>Bing Maps转百度地图国内地址：GCJ02 -&gt; BD09 偏差几米左右</li>
<li>Bing Maps转百度地图国外地址：WGS84 -&gt; BD09 偏差几米左右</li>
<li>百度地图转Bing Maps国内地址：BD09 -&gt; GCJ02 偏差几米左右</li>
<li>百度地图转Bing Maps国外地址：国外地址不需要转换，直接用 偏差几米左右</li>
</ol>
<h2 id="816-国际化地图技术选型">8.16. 国际化地图技术选型</h2>
<p>因为项目业务后续会涉及国外市场，导致项目地图要能在国外使用，有客户反馈在国外定位，搜索地址没有找到，</p>
<h2 id="817-雪碧图">8.17. 雪碧图</h2>
<h2 id="818-变量提升">8.18. 变量提升</h2>
<p><a href="https://developer.mozilla.org/zh-CN/docs/Glossary/Hoisting">Hoisting（变量提升） - MDN Web 文档术语表：Web 相关术语的定义 | MDN (mozilla.org)</a></p>
<p>以下是对您列出的各个Vue.js相关主题的简要解释：</p>
<h3 id="8181-v-bindattrs">8.18.1. v-bind=&quot;$attrs&rdquo;</h3>
<p>在Vue.js中，<code>v-bind=&quot;$attrs&quot;</code>是一个特殊的绑定，它可以将父组件中没有被作为prop声明的属性（attribute）自动传递给子组件的根元素。这在创建封装组件时非常有用，可以确保所有传递给组件的属性都被正确地应用到组件的根元素上，而不需要在子组件中显式地定义每个prop。</p>
<h3 id="8182-unplugin-vue-define-options">8.18.2. unplugin-vue-define-options</h3>
<p><code>unplugin-vue-define-options</code> 是一个Vue.js插件，它允许开发者在单文件组件（SFC）中定义组件选项，而无需使用<code>export default</code>语法。这可以在某些情况下简化组件的编写，尤其是在使用TypeScript时，可以减少样板代码。</p>
<h3 id="8183-在-vue6163-中ontrack-和-ontrigger-的区别">8.18.3. 在 Vue6.16.3 中，<code>onTrack</code> 和 <code>onTrigger</code> 的区别？</h3>
<p>在Vue 3.6中，<code>onTrack</code>和<code>onTrigger</code>是用于调试的钩子，它们与Vue的响应式系统相关。</p>
<ul>
<li><code>onTrack</code>：当组件的渲染响应式依赖被追踪时调用。这个钩子可以用来了解哪些响应式属性被组件的渲染所依赖。</li>
<li><code>onTrigger</code>：当响应式属性被修改时调用，可以用来了解响应式属性的变动是如何影响组件的。
这两个钩子有助于开发者更好地理解响应式系统的行为，尤其是在进行性能优化时。</li>
</ul>
<h3 id="8184-vue-nextumdcjs">8.18.4. vue-next.umd.cjs</h3>
<p><code>vue-next.umd.cjs</code>通常指的是Vue.js下一个主要版本的UMD（Universal Module Definition）构建的CommonJS版本。UMD是一种模块定义方式，使得代码可以在客户端和服务端不同的环境中运行。<code>.cjs</code>扩展名表明这是一个CommonJS模块，通常用于Node.js环境。</p>
<h3 id="8185-ztpctablepaginationvaluepagesize-is-possibly-undefinedts18048">8.18.5. &lsquo;ztpcTablePagination.value.pageSize&rsquo; is possibly &lsquo;undefined&rsquo;.ts(18048)</h3>
<p>这个错误信息来自TypeScript编译器，它提示开发者在使用<code>ztpcTablePagination.value.pageSize</code>时，这个值可能是<code>undefined</code>。为了解决这个问题，开发者需要确保在使用<code>pageSize</code>之前它已经被正确地初始化或检查了其是否为<code>undefined</code>。可以使用TypeScript的非空断言操作符<code>!</code>或者显式的类型守卫。</p>
<h3 id="8186-vue-spa单页面的加载过程">8.18.6. Vue Spa单页面的加载过程</h3>
<p>Vue单页面应用（Single Page Application, SPA）的加载过程通常包括以下步骤：</p>
<ol>
<li><strong>下载入口HTML文件</strong>：用户访问Vue SPA时，浏览器首先下载入口HTML文件。</li>
<li><strong>加载JavaScript主文件</strong>：HTML文件中通常会包含一个或多个JavaScript文件链接，这些文件包含Vue框架和应用代码。</li>
<li><strong>初始化Vue实例</strong>：JavaScript文件加载完成后，Vue实例被创建并挂载到DOM上。</li>
<li><strong>路由解析</strong>：Vue Router（Vue.js的路由库）解析URL，确定应该显示哪个组件。</li>
<li><strong>组件渲染</strong>：根据路由，相应的组件被渲染到页面上。</li>
<li><strong>数据获取</strong>：组件可能需要从服务器获取数据，这通常通过API请求完成。</li>
<li><strong>更新视图</strong>：一旦数据被获取，视图会根据数据更新。
这个过程使得用户在浏览SPA时，不需要重新加载整个页面，只需更新必要的部分，从而提供了更加流畅的用户体验。</li>
</ol>
<h2 id="819-vue3项目模版升级至vite5element-plus组件库国际化问题">8.19. Vue3项目模版升级至Vite5，Element Plus组件库国际化问题🔹</h2>
<p>X [ERROR] No known conditions for &ldquo;./lib/locale/lang/zh-cn&rdquo; specifier in &ldquo;element-plus&rdquo; package [plugin vite:dep-scan]</p>
<p>Vue3项目模版，打算部署至Sentry前端监控系统试用，然后就运行项目，因为nodejs版本升级到了v18.18.0，出现一些依赖不兼容的问题，就打算趁这个机会升级至Vite5，然后就遇到了Element Plus组件库国际化问题，研究了一下，是用法上面有了变化导致的，具体可以看这个issue，[<a href="https://github.com/element-plus/element-plus/issues/13609">i18n] [All] [plugin:vite:import-analysis] No known conditions for &ldquo;./lib/locale/lang/zh-cn&rdquo; specifier in &ldquo;element-plus&rdquo; package · Issue #13609 · element-plus/element-plus (github.com)</a>，方案就是：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// 2.3.7以及之前的用法
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="nx">zhCN</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/lib/locale/lang/zh-cn&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">en</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/lib/locale/lang/en&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// 2.3.8之后的用法
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="nx">zhCN</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/dist/locale/zh-cn.mjs&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">en</span> <span class="nx">from</span> <span class="s2">&#34;element-plus/dist/locale/en.mjs&#34;</span><span class="p">;</span>
</span></span></code></pre></div><h2 id="820-掘金小册子你不知道的-chrome-调试技巧">8.20. 掘金小册子《你不知道的 Chrome 调试技巧》🔹</h2>
<p>掘金小册子<a href="https://juejin.cn/book/6844733783166418958">《你不知道的 Chrome 调试技巧》</a>是免费的，里面主要是讲了一些Chrome DevTools的使用技巧，今天看完，主要是记录了下一些印象比较深的点：</p>
<ol>
<li>全屏截图，通过 <code>Capture full size screenshot</code> 命令。</li>
<li>取色器，Chrome DevTools 自带取色器，之前一直没注意。</li>
<li>console.table（） 可以将对象或数组以一个表格方式打印出来，方便查看。</li>
<li>console.log({value1,value2,value3}) 当想打印多个值时，要区分总是要加上前缀，其实通过<code>{}</code>就可以以对象的格式打印出来。</li>
<li>console.log()并没有立即拍摄对象快照，它只是存储一个指向对象的引用，在代码返回事件队列时才去拍摄快照。 使用 <code>JSON.stringify()</code> 方法处理打印的结果。</li>
</ol>
<h2 id="821-el-cascader-导致-out-of-memory-的原因分析">8.21. <code>&lt;el-cascader /&gt;</code>导致 Out of Memory 的原因分析</h2>
<h2 id="822-在-html-中div-和divdiv-的区别">8.22. 在 HTML 中，<code>&lt;div /&gt;</code>和<code>&lt;div&gt;&lt;div /&gt;</code>的区别</h2>
<p>两种不同的语法形式，具有不同的含义。</p>
<div />是一个自闭合标签的写法，它表示一个 div 标签没有子元素，例如 <div class="example" /> 标签就是一个自闭合标签，它没有子元素，用来表示一个空的 div 元素。
<div><div /></div>是一个 div 元素包含一个自闭合 div 标签的写法，它表示一个 div 元素包含一个没有子元素的子 div 元素，例如 <div class="example"><div /></div> 标签就是一个 div 元素包含一个子 div 元素的示例。
<p>需要注意的是，<code>&lt;div /&gt;</code>语法形式在 HTML 中并不是标准的写法，而是在某些框架和库中使用的一种简化语法，例如 React 中的 JSX，它可以用来表示一个空的 div 元素。在标准的 HTML 中，需要使用具体的标签名称来表示一个元素的开始和结束，例如 <code>&lt;div&gt;&lt;/div&gt;</code> 标签表示一个 div 元素的开始和结束。</p>
<h2 id="823-el-table-向上向下添加一行">8.23. el-table 向上向下添加一行</h2>
<h2 id="824-el-table-实现拖拽">8.24. el-table 实现拖拽</h2>
<p>el-table 实现拖拽 （https://blog.csdn.net/ddsuuny/article/details/123206503）</p>
<h2 id="825-el-table-实现合并单元格">8.25. el-table 实现合并单元格</h2>
<p>el-table 实现合并单元格（https://blog.csdn.net/weixin_45392318/article/details/124170355）</p>
<h2 id="826-css中position属性">8.26. css中position属性</h2>
<p>css中position属性(absolute|relative|static|fixed)概述及应用</p>
<h2 id="827-vitepress的基本使用与vuepress的对比">8.27. vitepress的基本使用，与vuepress的对比</h2>
<h2 id="828-md文档中使用table标签页会生成br的问题">8.28. MD文档中使用<code>&lt;table&gt;</code>标签页，会生成br的问题</h2>
<p>MD文档中使用<code>&lt;table&gt;</code>标签页，会生成br的问题研究，初步是转义的问题</p>
<h2 id="829-微信pc端浏览器调试解决方案">8.29. 微信PC端浏览器调试解决方案</h2>
<h2 id="830-前端拓扑图编辑器插件选型对比">8.30. 前端拓扑图编辑器插件选型对比</h2>
<p>AntV 蚂蚁金服 G6 是一个图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力。旨在让关系变得透明，简单。让用户获得关系数据的 Insight</p>
<h2 id="831-vue中实现左右上下拖拽复制">8.31. vue中实现左右、上下拖拽、复制</h2>
<h2 id="832-vue实现点击复制功能">8.32. vue实现点击复制功能</h2>
<h2 id="833-基于vue的简单流程图开发">8.33. 基于vue的简单流程图开发</h2>
<h2 id="834-jsplumb-jquery流程图插件">8.34. jsplumb-jquery流程图插件</h2>
<h2 id="835-font-size-在多个浏览器上面的差异">8.35. font-size 在多个浏览器上面的差异</h2>
<h2 id="836-vue使用js-xlsx插件导出excel表格">8.36. vue使用js-xlsx插件导出Excel表格</h2>
<h2 id="837-vuex如何用watch监听thisstore数据的变化">8.37. vuex如何用watch监听this.$store数据的变化</h2>
<h2 id="838-element源码系列row以及col组件">8.38. Element源码系列——Row以及Col组件</h2>
<h2 id="839-正则匹配公司名称">8.39. 正则匹配公司名称</h2>
<h2 id="840-中国省市数据">8.40. 中国省市数据</h2>
<h2 id="841-vue基于element组件的国籍选择框">8.41. vue基于element组件的国籍选择框</h2>
<h2 id="842-vue中v-if与v-show的区别">8.42. vue中v-if与v-show的区别</h2>
<h2 id="843-如何让element-ui的message消息提示每次只弹出一个">8.43. 如何让Element UI的Message消息提示每次只弹出一个</h2>
<h2 id="844-vue中监听键盘事件">8.44. vue中监听键盘事件</h2>
<h2 id="845-vue如何在-v-for-列表中动态添加-ref-并获取对应元素dom">8.45. vue如何在 v-for 列表中动态添加 ref 并获取对应元素dom</h2>
<h2 id="846-vue页面的定时刷新">8.46. vue页面的定时刷新</h2>
<h2 id="847-vue---elementui中循环渲染表格控制字段的显示与隐藏-v-if与v-for同时使用">8.47. vue - ElementUI中循环渲染表格，控制字段的显示与隐藏 v-if与v-for同时使用</h2>
<h2 id="848-vue-router-报错uncaught-in-promise-navigationduplicate_name-navigationduplicated">8.48. vue router 报错：Uncaught (in promise) NavigationDuplicate{_name: &ldquo;NavigationDuplicated&rdquo;}</h2>
<h2 id="849-vue-data-响应式失效">8.49. vue data 响应式失效</h2>
<p>vue中通过import引入一个对象，将对象赋值到data中，然后异步修改data中这个对象的属性的值，vue无法监听到</p>
<h2 id="850-从0到1搭建webpack2vue2自定义模板详细教程">8.50. 从0到1搭建webpack2+vue2自定义模板详细教程</h2>
<h2 id="851-vueuse的原理和组件的书写规则">8.51. vue.use的原理和组件的书写规则</h2>
<h2 id="852-vue-thisrouterpush传参">8.52. vue this.$router.push()传参</h2>
<h2 id="853-父元素设置了minheight子元素设置height100无效">8.53. 父元素设置了minheight，子元素设置height100%无效</h2>
<h2 id="854-span-超过长度限制-隐藏并在鼠标移入时显示全部字段">8.54. span 超过长度限制 隐藏并在鼠标移入时显示全部字段</h2>
<h2 id="855-element导航菜单自定义样式">8.55. Element导航菜单自定义样式</h2>
<h2 id="856-vue打包后字体图标显示小方块">8.56. vue打包后字体图标显示小方块</h2>
<h2 id="857-exports-和-moduleexports-的区别">8.57. exports 和 module.exports 的区别</h2>
<h2 id="858-vue父组件向子组件传递一个动态的值子组件如何保持实时更新实时更新">8.58. vue父组件向子组件传递一个动态的值，子组件如何保持实时更新实时更新？</h2>
<h1 id="9-flutter">9. Flutter</h1>
<h2 id="91-android-studio-全局搜索快捷键ctrlshiftf失效">9.1. Android Studio 全局搜索快捷键Ctrl+Shift+F失效</h2>
<p>在Android Studio中使用全局搜索快捷键Ctrl+Shift+F时，总是没有任何反应，第一感觉是其他软件占用了这个快捷按键，所以检查了一下，发现在搜狗输入法里就有这个设置，就选择去掉了，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403181136214.png"></p>
<h2 id="92-cocoapods">9.2. cocoapods</h2>
<p><a href="https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods">https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods</a></p>
<h2 id="93-mac中的ruby是什么">9.3. Mac中的Ruby是什么？</h2>
<p>brew、Ruby、gem</p>
<h2 id="94-flutter-shorebird">9.4. flutter shorebird</h2>
<h2 id="95-萤石flutter插件ys_play65">9.5. 萤石flutter插件ys_play6.5</h2>
<p><a href="https://pub.dev/packages/ys_play">ys_play | Flutter package (pub.dev)</a></p>
<h2 id="96-running-gradle-task-assembledebug">9.6. Running Gradle task &lsquo;assembleDebug&rsquo;&hellip;</h2>
<p>Flutter项目初始化时，一直卡在这个任务上面，在Flutter项目android目录下使用命令<code>./gradlew.bat assembleDebug</code>可以看到详情的信息，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401311718114.png"></p>
<h2 id="97-fvm-版本管理">9.7. fvm 版本管理</h2>
<h2 id="98-flutter国内环境配置-">9.8. Flutter国内环境配置 🔹</h2>
<p>最近，github都登录不上，挂了梯子，git clone都是失败的，无奈之下，只能研究切换至国内镜像来使用。</p>
<p>首先，在<a href="https://flutter.cn/community/china?tab=windows">《在中国网络环境下使用 Flutter - Flutter 中文文档》</a>文档页面，可以看到相关介绍。主要是需要将<code>PUB_HOSTED_URL</code>和<code>FLUTTER_STORAGE_BASE_URL</code>设置为镜像站点。以 <code>CFUG</code>的镜像为例，使用管理员权限打开Windows Powershell，然后使用Windows setx命令永久设置环境变量，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">setx PUB_HOSTED_URL https://pub.flutter-io.cn
</span></span><span class="line"><span class="cl">setx FLUTTER_STORAGE_BASE_URL https://storage.flutter-io.cn
</span></span></code></pre></div><p>然后关闭窗口，再打开，输入flutter doctor验证。</p>
<p>相关资料：</p>
<ol>
<li>Flutter 镜像安装帮助：https://mirrors.tuna.tsinghua.edu.cn/help/flutter</li>
<li>Flutter SDK：https://mirrors.tuna.tsinghua.edu.cn/help/flutter-sdk.git</li>
</ol>
<h2 id="99-pub-getpub-upgrade和pub-outdated">9.9. Pub get、Pub upgrade和Pub outdated</h2>
<h2 id="910-使用flutter-pub-get-会修改pubspeclock么">9.10. 使用flutter pub get 会修改pubspec.lock么？</h2>
<h2 id="911-android-toolchain---develop-for-android-devices-">9.11. Android toolchain - develop for Android devices 🔹</h2>
<p>在运行flutter doctor命令检测flutter开发环境情况的时候，提示没有找到Android SDK，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401150959898.png"></p>
<p>但在【Setting——Languages&amp;Frameworks——Android SDK——Android SDK Location】上已经配置了对应的地址。可能的原因是flutter的配置没有生效，使用以下命令解决，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dart" data-lang="dart"><span class="line"><span class="cl"><span class="n">flutter</span> <span class="n">config</span> <span class="o">--</span><span class="n">android</span><span class="o">-</span><span class="n">sdk</span> <span class="nl">E:</span><span class="err">\</span><span class="n">Data</span><span class="err">\</span><span class="n">SDK</span><span class="err">\</span><span class="n">AndroidSDK</span>
</span></span></code></pre></div><p>提示已经配置成功，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401150958681.png"></p>
<p>此时，再次运行flutter doctor命令，会提示缺少<code>cmdline-tools component</code>，让你运行命令<code>path/to/sdkmanager --install &quot;cmdline-tools;latest&quot;</code>去解决，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401151001456.png"></p>
<p>很有可能是Android SDK没有下载这个依赖，查看Android SDK配置页面，将<code>Android SDK Command-line Tools（latest）</code>勾选上即可，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202401151005501.png"></p>
<p>然后，继续运行flutter doctor命令，会提示你一些Android许可证不被接受，需要运行命令<code>flutter doctor --android-licenses</code>，然后一直选择<code>y</code>即可，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dart" data-lang="dart"><span class="line"><span class="cl"> <span class="n">Some</span> <span class="n">Android</span> <span class="n">licenses</span> <span class="n">not</span> <span class="n">accepted</span><span class="p">.</span> <span class="n">To</span> <span class="n">resolve</span> <span class="k">this</span><span class="p">,</span> <span class="nl">run:</span> <span class="n">flutter</span> <span class="n">doctor</span> <span class="o">--</span><span class="n">android</span><span class="o">-</span><span class="n">licenses</span>
</span></span></code></pre></div><p>至此，flutter开发环境Android SDK配置不生效问题得以解决。</p>
<h2 id="912-gradle-wrapperproperties里怎么知道当前有下载了哪些版本">9.12. gradle-wrapper.properties里怎么知道当前有下载了哪些版本？</h2>
<h2 id="913-exception-in-thread-main-javautilzipzipexception-zip-end-header-not-found">9.13. Exception in thread &ldquo;main&rdquo; java.util.zip.ZipException: zip END header not found</h2>
<p>原因是grade版本不存在。</p>
<h2 id="914-could-not-determine-the-dependencies-of-task-easy_pdf_viewercompiledebugaidl">9.14. Could not determine the dependencies of task &lsquo;:easy_pdf_viewer:compileDebugAidl&rsquo;.</h2>
<blockquote>
<p>Failed to find Platform SDK with path: platforms;android-30</p></blockquote>
<h2 id="915-library-dart-packages-has-broken-classes-paths">9.15. Library Dart Packages has broken classes paths</h2>
<p><a href="https://github.com/flutter/flutter/issues/72773">Library Dart Packages has broken classes path: · Issue #72773 · flutter/flutter (github.com)</a></p>
<h2 id="916-android-gradle-下载特别慢的问题">9.16. android gradle 下载特别慢的问题🔹</h2>
<p>在<code>flutter/android</code>开发时，经常遇到<code>gradle</code>下载特别慢的问题，甚至是超时失败，严重影响到项目的开发工作，为了解决这个问题，可以考虑替换成国内的镜像来下载解决。首先，在<code>android/gradle/wrapper/gradle-wrapper.properties</code>中，查看当前<code>gradle</code>版本，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251127878.png"></p>
<p>然后在<a href="https://mirrors.cloud.tencent.com/gradle/">腾讯镜像gradle</a>上面，查看是否存在该版本，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202312251128029.png"></p>
<p>最后将<code>distributionUrl</code>设置为腾讯镜像地址即可，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">distributionUrl</span><span class="o">=</span><span class="n">https</span><span class="err">\</span><span class="p">:</span><span class="c1">//mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip</span><span class="w">
</span></span></span></code></pre></div><p><a href="https://blog.csdn.net/youngwah292/article/details/110734407">gradle不同版本下载太慢&mdash;腾讯做了国内镜像可以直接下载_gradle 下载-CSDN博客</a></p>
<h2 id="917-put-getpub-upgrade和pub-outdated">9.17. Put get、Pub upgrade和Pub outdated</h2>
<h2 id="918-windows-defender-防火墙域专用和公用有什么区别">9.18. Windows Defender 防火墙，域、专用和公用有什么区别？</h2>
<h2 id="919-genymotion-mac-插件路径设置">9.19. Genymotion Mac 插件路径设置</h2>
<p>Genymotion Mac 插件路径设置，其值为<code>/Applications/Genymotion.app</code></p>
<h2 id="920-error-java_home-is-set-to-an-invalid-directory-dtoolsjavajdk-19">9.20. ERROR: JAVA_HOME is set to an invalid directory: D:\tools\Java\jdk-19</h2>
<p>项目中因为遇到报错，然后计划使用java 1.8版本，然后JAVA_HOME已经变更了，但是每次运行Flutter项目一直都是报这个错，指向的是之前的旧路径。</p>
<h2 id="921-flutter-在mac下怎么切换指定版本">9.21. flutter 在Mac下怎么切换指定版本？🔹</h2>
<p>在flutter sdk目录下，运行命令 git checkout &lt;指定版本&gt;即可，比如 git checkout 3.3.10，然后使用命令flutter version 查看当前版本，如下所示：<img alt="截屏2023-11-07 17.42.03" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202311071742456.png"></p>
<p>当想要从指定版本切换回最新版本时，可以在flutter sdk目录下，运行命令<code>git branch</code>显示。</p>
<h1 id="10-sentry">10. Sentry</h1>
<h2 id="101-loading-wizard-failed-did-you-provide-the-right-url">10.1. Loading Wizard failed. Did you provide the right URL?🔹</h2>
<p>在给项目配置Sentry时，要将sourcemaps通过sentry-wizard自动上传至Sentry，但是确提示以下报错信息：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">Loading</span> <span class="nx">Wizard</span> <span class="nx">failed</span><span class="p">.</span> <span class="nx">Did</span> <span class="nx">you</span> <span class="nx">provide</span> <span class="nx">the</span> <span class="nx">right</span> <span class="nx">URL</span><span class="o">?</span>
</span></span></code></pre></div><p>再三确认URL是没有问题，所以，就很奇怪这是什么问题？</p>
<p>使用curl命令是没有问题的，但是，返回了sentry网站没有证书的信息。</p>
<p>查看github上面的issues，发现有类似的问题，如下所示：</p>
<p><a href="https://github.com/getsentry/sentry-wizard/issues/416">Loading Wizard failed for NextJs #416</a></p>
<p>提供的解决方案是，使用命令 <code>set NODE_TLS_REJECT_UNAUTHORIZED=0</code> ，因为在 Node.js 中，<code>NODE_TLS_REJECT_UNAUTHORIZED</code> 是一个环境变量，用于控制 Node.js 在执行 HTTPS 请求时是否应该拒绝未经授权的 SSL 证书。</p>
<p>然后，可以使用命令<code>npx @sentry/wizard@latest -i sourcemaps</code>可以正常执行了，只是在运行<code>npm run build</code>进行打包的时候，还是报错了，提示证书异常：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">error</span><span class="o">:</span> <span class="nx">API</span> <span class="nx">request</span> <span class="nx">failed</span>
</span></span><span class="line"><span class="cl">  <span class="nx">caused</span> <span class="nx">by</span><span class="o">:</span> <span class="p">[</span><span class="mi">60</span><span class="p">]</span> <span class="nx">SSL</span> <span class="nx">peer</span> <span class="nx">certificate</span> <span class="nx">or</span> <span class="nx">SSH</span> <span class="nx">remote</span> <span class="nx">key</span> <span class="nx">was</span> <span class="nx">not</span> <span class="nx">OK</span> <span class="p">(</span><span class="nx">schannel</span><span class="o">:</span> <span class="nx">SEC_E_UNTRUSTED_ROOT</span> <span class="p">(</span><span class="mh">0x80090325</span><span class="p">))</span>
</span></span></code></pre></div><p>所以，还是没办法解决，后来，Sentry更新了证书就好了。</p>
<h1 id="11-electron-vue">11. Electron-Vue</h1>
<h2 id="111-通过teamviewer传输exe文件过大的问题">11.1. 通过TeamViewer传输exe文件过大的问题🔹</h2>
<p>使用<code>Electron</code>开发的一个<code>PC</code>软件，包大小为<code>400MB</code>，有可能是<code>TeamViewer</code>传输大小有限制，每次传到<code>200MB</code>就自动中断了，导致无法把<code>.exe</code>文件从<code>A</code>电脑传输到无网络的<code>B</code>电脑上，又不想使用<code>U盘</code>进行传输，因为<code>B</code>电脑主机环境在机房，操作起来非常不方便。为了解决这个问题，可以通过压缩分卷的方式，把<code>400MB</code>大小的软件包分成两个<code>200MB</code>即可。以<code>VSCode</code>软件为例，将<code>100MB</code>软件包压缩分卷为两个<code>50MB</code>的文件。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502061118092.png"></p>
<h2 id="112-node_module-删除失败">11.2. node_module 删除失败🔹</h2>
<p>在运行<code>electron-vue</code>项目时，打算把<code>node_modules</code>删除了再重新安装，却提示<code>node_modules/electron</code>文件夹正在被使用，删除失败。然后，把相关窗口都关闭了还是不行，猜测是有关联的进程没有关闭，所以，就看下怎么处理。步骤如下：</p>
<p>打开任务管理器 ➔ 性能 ➔ CPU ➔ 打开资源监视器 ➔ 关联的句柄 ➔ 搜索句柄electron ➔ 右键结束进程。</p>
<h1 id="12-java">12. JAVA</h1>
<h2 id="121-at模式和透传模式">12.1. AT模式和透传模式🔹</h2>
<p>AT模式（AT Command Mode）：AT指令模式是一种通过发送特定的AT指令来控制设备的工作模式。在AT模式下，通过发送预定义的AT指令，可以实现对设备进行各种操作，例如设置参数、查询状态、发送数据等。这种模式通常用于与嵌入式设备进行通信，例如GSM模块、蓝牙模块等。</p>
<p>透传模式（Transparent Mode）：透传模式是一种直接将串口数据透传到目标设备的工作模式。在透传模式下，设备不会解析和处理接收到的数据，而是直接将数据转发给目标设备，同时将目标设备返回的数据原封不动地传输回来。透传模式通常用于需要将串口数据传递给其他设备进行处理的场景，例如将串口数据透传给单片机、传感器等。</p>
<h2 id="122-lora和lorawan的区别">12.2. LoRa和LoRaWAN的区别？🔹</h2>
<p>LoRa（长距离低功耗射频）和LoRaWAN（长距离低功耗广域网）是两个不同的概念，它们在物联网（IoT）领域中扮演不同的角色。</p>
<p>LoRa是一种调制技术，用于在无线通信中实现长距离和低功耗的传输。它是由Semtech公司开发的，基于扩频技术的无线通信技术。LoRa可以在不同的频段上进行通信，并具有较高的抗干扰能力和覆盖范围。它被用于构建物联网中的无线传感器网络，可以在城市、农村和工业环境中提供广泛的连接。</p>
<p>LoRaWAN则是一种基于LoRa技术的通信协议，用于在LoRa网络中实现端到端的通信。LoRaWAN定义了设备和网络之间的通信协议，包括设备的注册、数据传输、安全性等方面。LoRaWAN协议采用星形拓扑结构，其中终端设备通过网关与云服务器进行通信。LoRaWAN网络旨在为物联网设备提供长距离的、低功耗的、双向的通信能力，并具有较高的可扩展性和覆盖范围。</p>
<p>因此，LoRa是一种物理层技术，而LoRaWAN是在LoRa技术基础上建立的一种通信协议。LoRa提供了物理层的无线通信能力，而LoRaWAN定义了设备和网络之间的通信规则和协议，使得物联网设备可以在LoRa网络中进行通信。</p>
<p>以下是对您列出的各个主题的简要概述：</p>
<h3 id="1221-火焰图">12.2.1. 火焰图</h3>
<p>火焰图（Flame Graph）是由性能分析师和程序员使用的性能分析工具，它可以帮助开发者查看和分析软件程序的性能瓶颈。火焰图以一个倒置的树状图形式展现，其中每一列代表一个函数调用栈，宽度表示函数在样本中占用的时间比例。通过火焰图，可以快速定位到占用CPU时间最多的代码路径。</p>
<h3 id="1222-集群">12.2.2. 集群</h3>
<p>集群（Cluster）指的是一组计算机（节点）的组合，它们协同工作以完成特定的任务。在计算领域，集群可以提高系统的可靠性、可用性和性能。在分布式系统中，集群通常用于负载均衡、故障转移和高可用性等场景。</p>
<h3 id="1223-k8s">12.2.3. K8s</h3>
<p>K8s 是 Kubernetes 的缩写，它是一个开源的容器编排系统，用于自动化应用容器的部署、扩展和管理。Kubernetes 提供了一个平台，允许你在物理机或虚拟机集群上调度和运行容器。它广泛应用于微服务架构中，以支持自动化、弹性伸缩和声明式配置。</p>
<h3 id="1224-内网外网穿透">12.2.4. 内网、外网穿透</h3>
<p>内网穿透是指将局域网（内网）的服务映射到公网（外网），使得外网的设备可以访问内网的服务。外网穿透则通常指从外网访问内网资源的过程。这通常通过NAT穿透技术实现，常用的工具有Ngrok、FRP等。</p>
<h3 id="1225-jenkins">12.2.5. Jenkins</h3>
<p>Jenkins 是一个开源的自动化服务器，它支持多种自动化任务，如构建、测试和部署软件。Jenkins 可以通过插件扩展其功能，广泛应用于持续集成（CI）和持续部署（CD）领域。</p>
<h3 id="1226-junit5">12.2.6. JUnit5</h3>
<p>JUnit5 是一个Java语言的单元测试框架，用于编写和运行测试代码。它支持模块化，并且与Java 8及更高版本特性兼容。JUnit5 提供了新的注解和断言方法，使得测试更加简洁和强大。</p>
<h3 id="1227-prometheus">12.2.7. Prometheus</h3>
<p>Prometheus 是一个开源监控系统和时间序列数据库。它通过收集和存储指标数据，并通过规则对数据进行分析和告警。Prometheus 广泛用于监控云原生应用，并且与Kubernetes有良好的集成。</p>
<h3 id="1228-探活">12.2.8. 探活</h3>
<p>探活（Health Check）是指定期检查系统或服务的运行状态，以确保它们正常工作。在分布式系统中，探活机制可以自动检测服务故障并进行恢复，常见的探活方式包括HTTP探活、TCP探活等。</p>
<h3 id="1229-kafka">12.2.9. Kafka</h3>
<p>Kafka 是一个开源的流处理平台，由LinkedIn公司开发，用于构建实时的数据流和应用程序。它以高吞吐量、可扩展性和持久性著称，常用于处理大规模数据流，如日志聚合、实时分析、事件源和消息队列。</p>
<h3 id="12210-springfox">12.2.10. springfox</h3>
<p>Springfox 是一个开源的API文档生成工具，它基于Spring MVC和Spring Web的注解，自动生成API文档。Springfox 支持Swagger 2.0和OpenAPI 3.0规范，可以帮助开发者快速生成和展示RESTful API的文档。不过，随着Springdoc OpenAPI的兴起，Springfox的使用正在逐渐减少。</p>
<h1 id="13-android">13. Android</h1>
<h2 id="131-android-studio-引入so文件">13.1. Android Studio 引入.so文件</h2>
<h2 id="132-mac-env-node--no-such-file-or-directory">13.2. mac env: node : No such file or directory</h2>
<h2 id="133-android基础控件popupwindow模仿ios底部弹窗">13.3. Android基础控件—PopupWindow模仿ios底部弹窗</h2>
<h2 id="134-mac-环境变量">13.4. mac 环境变量</h2>
<h2 id="135-打印retrofit请求地址参数以及返回结果">13.5. 打印Retrofit请求地址、参数、以及返回结果</h2>
<h2 id="136-glide设置圆形图片与圆角图片">13.6. glide设置圆形图片与圆角图片</h2>
<h2 id="137-使用retrofit进行post请求报错-field-parameters-can-only-be-used-with-form-encoding">13.7. 使用Retrofit进行Post请求报错： @Field parameters can only be used with form encoding.</h2>
<h2 id="138-全局变量快速m命名">13.8. 全局变量快速m命名</h2>
<h2 id="139-两分钟理解android中pxdpsp的区别">13.9. 两分钟理解Android中PX、DP、SP的区别</h2>
<h2 id="1310-retrofit2-使用multipart上传文件">13.10. Retrofit2 使用@Multipart上传文件</h2>
<h2 id="1311-集合遍历增删报错-at-javautilhashmapkeyiteratornext">13.11. 集合遍历增删报错 at java.util.HashMap$KeyIterator.next</h2>
<h2 id="1312-linuxcp-复制文件文件夹到文件夹">13.12. linux：cp 复制文件、文件夹到文件夹</h2>
<h2 id="1313-java-gson获取jsonobject下所有键的列表">13.13. Java GSON：获取JSONObject下所有键的列表</h2>
<h2 id="1314-android中切换到主线程更新方法">13.14. Android中切换到主线程更新方法</h2>
<h2 id="1315-android-单例模式的正确姿势">13.15. Android 单例模式的正确姿势</h2>
<h2 id="1316-dagger716-详解">13.16. dagger7.16 详解</h2>
<h2 id="1317-java及android中常用链式调用写法简单示例">13.17. Java及Android中常用链式调用写法简单示例</h2>
<h2 id="1318-android-okhttp-之websocket简单使用">13.18. Android Okhttp 之WebSocket简单使用</h2>
<h2 id="1319-okhttp-中的websocket-结合rxjava-的网络请求封装">13.19. okhttp 中的websocket 结合RxJava 的网络请求封装</h2>
<h2 id="1320-adapter与activity之间的传值">13.20. Adapter与Activity之间的传值</h2>
<h2 id="1321-android-evenbus的基本使用">13.21. Android EvenBus的基本使用</h2>
<h2 id="1322-constraintlayout看完一篇真的就够了么">13.22. ConstraintLayout，看完一篇真的就够了么？</h2>
<h2 id="1323-toolbar设置详解">13.23. Toolbar设置详解</h2>
<h2 id="1324-给toolbar的menu添加图标">13.24. 给Toolbar的menu添加图标</h2>
<h2 id="1325-android--constraintlayout-中心对齐图像和文本">13.25. Android – ConstraintLayout 中心对齐图像和文本</h2>
<h2 id="1326-android-复杂的列表视图新写法-multitype-详解篇">13.26. Android 复杂的列表视图新写法: MultiType 详解篇</h2>
<h2 id="1327-android-rxjavaretrofit-一次合并请求多个接口">13.27. Android RxJava+Retrofit 一次（合并）请求多个接口</h2>
<h2 id="1328-android之application的使用">13.28. Android之Application的使用</h2>
<h2 id="1329-rxjavaretrofit使用okhttp保存和添加cookie">13.29. Rxjava、Retrofit使用OkHttp保存和添加cookie</h2>
<h2 id="1330-retrofit使用拦截器添加cookie">13.30. Retrofit使用拦截器添加Cookie</h2>
<h2 id="1331-android-glide简单使用">13.31. android Glide简单使用</h2>
<h2 id="1332-sharedpreference的优化">13.32. SharedPreference的优化</h2>
<h2 id="1333-ontouch关于performclick的warning">13.33. OnTouch关于performClick的Warning</h2>
<h2 id="1334-mvpretrofit实现的原生登录注册">13.34. MVP+Retrofit实现的原生登录注册</h2>
<h2 id="1335-drawlefttextviewedittext中图片大小设置">13.35. drawleft，textview、EditText中图片大小设置</h2>
<h2 id="1336-edittext组件drawableleft属性设置的图片和hint设置的文字之间的距离">13.36. EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离</h2>
<h2 id="1337-android实现沉浸式状态栏效果">13.37. Android实现沉浸式状态栏效果</h2>
<h2 id="1338-迁移到-androidx">13.38. 迁移到 AndroidX</h2>
<h2 id="1339-recyclerview多item布局实现">13.39. RecyclerView多item布局实现</h2>
<h2 id="1340-一种优雅的方式实现recyclerview条目多类型">13.40. 一种优雅的方式实现RecyclerView条目多类型</h2>
<h2 id="1341-bottomnavigationview点击图标颜色不改变">13.41. BottomNavigationView点击图标颜色不改变</h2>
<h2 id="1342-androidviewviewgroupjumpdrawablestocurrentstateviewgroupjava6690">13.42. android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:6690)</h2>
<h2 id="1343-android-studio-提取局部变量全局变量方法快捷键">13.43. android studio 提取局部变量，全局变量，方法快捷键</h2>
<h2 id="1344-bottomnavigationview底部导航的使用">13.44. BottomNavigationVIew底部导航的使用</h2>
<h2 id="1345-android中butterknife的使用">13.45. Android中ButterKnife的使用</h2>
<h2 id="1346-看完让你彻底搞懂websocket原理">13.46. 看完让你彻底搞懂Websocket原理</h2>
<h2 id="1347-uncaught-referenceerror-xxx-is-not-defined-at-htmlinputelementonclick">13.47. Uncaught ReferenceError: xxx is not defined at HTMLInputElement.onclick</h2>
<h2 id="1348-zxing扫一扫实现机制和算法研究透彻">13.48. ZXing扫一扫，实现机制和算法，研究透彻</h2>
<h2 id="1349-app在修改昵称和上传头像失败">13.49. App在修改昵称和上传头像失败</h2>
<p>App在修改昵称和上传头像后，按两次返回键退出，再重新登录，显示的还是之前的头像和昵称，但是如果彻底关闭该应用，就不会出现这个现象，跟event内存有关</p>
<h2 id="1350-昵称的正则">13.50. 昵称的正则</h2>
<p>昵称的正则，允许中英文数字混合，并且限制中文时是26个汉字，英文时是2~12个英文字母，混输时(比如中英、中数、英数)是多少字符，更为人性化的提示</p>
<h2 id="1351-json数据递归遍历">13.51. JSON数据，递归遍历</h2>
<h2 id="1352-关于java对象作为参数传递是传值还是传引用的问题">13.52. 关于Java对象作为参数传递是传值还是传引用的问题</h2>
<h2 id="1353-android-studio打包签名-signature-versions-v1v2的选择问题">13.53. Android Studio打包签名 Signature Versions V1、V2的选择问题</h2>
<h2 id="1354-es6promisegeneratornextyield与koa">13.54. ES6、PROMISE、GENERATOR、NEXT、YIELD与KOA</h2>
<h2 id="1355-取代promise的generator生成器函数">13.55. 取代Promise的Generator生成器函数</h2>
<h2 id="1356-android-studio之gradle自动化构建打包">13.56. Android Studio之Gradle自动化构建打包</h2>
<h2 id="1357-android-使用jenkins持续集成打包发包">13.57. Android 使用Jenkins持续集成打包发包</h2>
<h2 id="1358-gradle-手动编译出android的简单的apk文件">13.58. gradle 手动编译出android的简单的apk文件</h2>
<h2 id="1359-gradle-命令打包apk">13.59. gradle 命令打包apk</h2>
<h2 id="1360-jest顺序执行测试">13.60. JEST顺序执行测试</h2>
<h2 id="1361-android-实现类似微信异地登录强制下线">13.61. Android 实现类似微信，异地登录强制下线</h2>
<h1 id="14-windows">14. Windows</h1>
<h2 id="141-windows系统快速删除多层级的文件夹-">14.1. Windows系统快速删除多层级的文件夹 🔹</h2>
<p>在<code>Windows</code>系统中，要删除多层级的文件夹，比如项目依赖包<code>node_module</code>，它的目录可能包含有成千上万的文件和子目录，因为系统删除时会将这些文件逐一检查，读取文件大小、权限验证等，会额外增加删除所需的时间，如果电脑配置不太行，真的让人受不了。</p>
<p>基于博文<a href="https://blog.csdn.net/xiaoerbuyu1233/article/details/108490963">《Windows下快速删除上万个文件和子目录(快速删除文件) 命令行cmd快速删除文件夹》</a>提供的解决方案如下：</p>
<p>在<code>D:\tools\FASTDEL</code>中新建一个<code>fastdel.bat</code>文件，然后复制下面的代码：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl"><span class="p">@</span><span class="k">ECHO</span> OFF
</span></span><span class="line"><span class="cl"><span class="k">ECHO</span> Delete Folder: <span class="nv">%CD%</span>
</span></span><span class="line"><span class="cl"><span class="k">PAUSE</span>
</span></span><span class="line"><span class="cl"><span class="k">SET</span> <span class="nv">FOLDER</span><span class="p">=</span><span class="nv">%CD%</span>
</span></span><span class="line"><span class="cl"><span class="k">CD</span> ..
</span></span><span class="line"><span class="cl"><span class="k">DEL</span> /F/Q/S <span class="s2">&#34;</span><span class="nv">%FOLDER%</span><span class="s2">\*&#34;</span> <span class="p">&gt;</span> NUL
</span></span><span class="line"><span class="cl"><span class="k">RMDIR</span> /Q/S <span class="s2">&#34;</span><span class="nv">%FOLDER%</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">EXIT</span>
</span></span></code></pre></div><p>保存之后，打开系统环境变量配置页面，在<code>Path</code>路径加上<code>D:\tools\FASTDEL</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409211001590.png"></p>
<p>之后，在你要删除的文件目录下，打开<code>Windows PowerShell</code>命令窗口，然后输入命令<code>FASTDEL</code>进行删除即可，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409211020986.png"></p>
<h2 id="142-端口被占用怎么解决">14.2. 端口被占用，怎么解决？🔹</h2>
<p>在 Windows 下检查端口 503 是否被占用，以管理员身份运行 “命令提示符” 窗口，使用命令检查当前端口使用的进程：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">netstat -ano <span class="p">|</span> findstr :503
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502211744587.png"></p>
<p>然后记下状态为 LISTENING 的数字（例如 39880），然后使用以下命令，终止进程：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"> taskkill /PID <span class="m">39880</span> /F
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502211744928.png"></p>
<h1 id="15-技术管理">15. 技术管理</h1>
<h2 id="151-独家专访亚马逊-cto-werner-vogels--infoq--">15.1. <a href="https://mp.weixin.qq.com/s/YAvZPZfTFBLZ3OqnIHJElg">独家专访亚马逊 CTO Werner Vogels | InfoQ </a> 🔹</h2>
<ol>
<li>各种商业机构和教育平台都能帮我们快速掌握新的编程语言，所以到底选择哪种语言本身已经不那么重要了。</li>
<li>由于技术发展太过迅速，高等教育、大学课程根本就跟不上变化。问问那些刚刚走出校园的学生就知道了，他们对区块链、生成式 AI 等新技术的了解肯定不如我们这些从业者。而且随着技术的采用周期越来越短，产品的上市速度也会远超以往。也就是说，学校里传授的知识不再具有先进性。所以除了编程语言之外，我们在学校中的最大收获就是学习能力，这种学习能力决定我们能否成为技术专家、保持终身钻研。</li>
<li>我认为任何接受过良好基础教育的人都有能力掌握计算机技术，即便专业不同。因为具体学了什么专业并不重要，重要的是教育经历让你掌握了学习能力、知道要如何设立更宏大的目标、如何汇总信息、记在脑子里、进行批判性思考，如此往复。</li>
<li>在实际工作中，我强调“协作”是日常工作的核心。</li>
<li>对于招聘，我更关心候选人是否具备在大学里培养的学习能力，而不仅仅是特定的语言或技术。</li>
<li>技术的变化一刻不停，永远别指望自己毕业之后头一年学到的东西够用一辈子。</li>
<li>但保守并不代表守旧，研究人员还是在努力把成果整合起来，打造出能让消费者们眼前一亮的产品。就像那个有趣的比喻，如果你看到一只熊在跳舞，那最重要的就是它能跳舞，而不是它跳得好不好。希望大家能用类似的心态看待前沿技术，尽量宽容一点。</li>
<li>AI 可以接管一些繁琐的任务，这使得开发者可以更专注于他们真正擅长的工作，如获取和整合信息、做出决策和规划。</li>
<li>人需要肩负起监管的职责。请记住，AI 只是辅助、是帮助我们的工具。它们是在帮我们做预测，而不是替我们做预测，责任永远要由人来承担。</li>
</ol>
<h2 id="152-闭环管理">15.2. 闭环管理</h2>
<h2 id="153-巨佬jake-wharton曾说过一个app只需要一个activity">15.3. 巨佬Jake Wharton曾说过：一个App只需要一个Activity</h2>
<h2 id="154-infoq-在-ete-大会上对-android-工程师-jake-wharton-的采访">15.4. InfoQ 在 ETE 大会上对 Android 工程师 Jake Wharton 的采访</h2>
<h2 id="155-几种思维">15.5. 几种思维</h2>
<ol>
<li>
<p>归纳性思维：</p>
</li>
<li>
<p>结构性思维：</p>
</li>
<li>
<p>MECE原则：</p>
</li>
<li>
<p>慢就是快，少就是多。</p>
</li>
<li>
<p>别人有，我们也要有的思路是否正确？</p>
</li>
</ol>
<h2 id="156-我们就要做第一">15.6. 我们就要做第一</h2>
<p>我有时也在想，为什么不能是我呢？我就想干掉所有人，就要做最强的那一个。表面再怎么与世无争，再怎么云淡风轻，但还是无法压制内心深处的猛兽，那种感觉越来越强烈。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403091016929.png"></p>
<p>前年在整理团队定位、目标、规范、愿景等文档，在和领导谈心时，说到团队未来的发展，当时脱口而出，“团队发展壮大，成立子公司，其他部门凭什么就要比我们厉害呢？我们就要做第一。”现在想来，不免有点心虚，且不说公司关系错综复杂、外部市场瞬息万变，光是团队本身都有很多问题需要解决，谁和谁讨论问题吵起来了要从中调和；谁在会议上说话太难听了要及时打断，避免伤害其他同事自尊；谁和谁表面和气，暗地里互不对付，要及时察觉，避免后续任务安排不够妥当；谁工作上总是耍些小聪明杀了他的心都有了，但又不能表现出来&hellip;&hellip;看似鸡毛蒜皮的事情，但又关乎团队的健康成长，每每斡旋其中，不堪其扰，而这也只是团队管理的一小部分工作而已。话说回来，虽然有点心虚，但我不后悔当时说上面那些话，即便现在也是如此，为什么就要比别人差呢？我就想努力干掉其他人。敢想就敢要，越挫就越勇。等到真有那一天（嗯&hellip;真的很难的了哈哈哈&hellip;稍微试一试），我想我就会离开，进行下一阶段的事情。</p>
<h2 id="157-兵熊熊一个将熊熊一窝">15.7. 兵熊熊一个，将熊熊一窝</h2>
<p>一个能打的人只是他能打，能让一群能打的人聚集在一起去“打”，那战斗力可想而知。</p>
<h2 id="158-太阳底下没有新鲜事儿">15.8. 太阳底下没有新鲜事儿</h2>
<p>太阳底下没有新鲜事儿。</p>
<h2 id="159-如果你录用我">15.9. 如果你录用我</h2>
<ol>
<li><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202403140910843.jpg"></li>
</ol>
<h2 id="1510-技术人对抗焦虑的加减法-">15.10. 技术人对抗焦虑的加减法 🔹</h2>
<p><a href="https://developer.aliyun.com/article/1356721?utm_content=g_1000382235">技术人对抗焦虑的加减法-阿里云开发者社区 (aliyun.com)</a></p>
<ol>
<li>不要把别人贩卖的焦虑强加到自己的感受中</li>
<li>没有坑，就让自己先成为萝卜，等待机会</li>
<li>要从本质去思考问题，如果只是找一匹跑得更快的马，那就不会发明汽车</li>
<li>决定未来的不是过去，也不是他人的评价，而是你自己定义的将来。</li>
<li>最挑战的事情，最高级的快乐</li>
<li>警惕低水平的勤奋，不要碎片化学习</li>
<li>认知自己，比认知知识点更重要</li>
</ol>
<h2 id="1511-比尔盖茨山姆奥特曼-">15.11. 比尔·盖茨&amp;山姆·奥特曼 🔹</h2>
<p><a href="https://www.infoq.cn/article/Ly4avjCIkBp2gF3eqrEK">OpenAI也搞“年龄歧视”？奥特曼对话盖茨爆料：员工整体年龄偏大，是个坏兆头-InfoQ精选文章</a></p>
<p><strong>山姆·奥特曼:</strong> 大家一定经常让你提点建议，那你一般会怎么说？</p>
<p><strong>比尔·盖茨:</strong> 我觉得这世界上有很多不同形式的人才。在我的职业生涯之初，我只重视纯粹的智商，类似于工程技术的灵性。当然，这个逻辑在财务和销售领域也有体现。但事实证明这是不对的。能建立起强大团队的技能组合才是重中之重。能引导人们思考、找到想要解决的问题、建立一支融合不同人才的队伍，才是最重要的能力所在。所以我想告诉年轻人，数学和科学能力当然很重要，但如果你真想成就一番事业，那么前面说的这种才能组合必不可少。</p>
<p>你呢，你会给出什么样的建议？</p>
<p><strong>山姆·奥特曼:</strong> 我比较关注大多数人对于风险的错误理解。大家往往害怕放弃自己当前这份轻松愉快的工作，不敢奔赴自己真正想做的事情。但实际上，如果始终止步不前，那他们最终回顾一生，只会感叹自己从没有投入过、没有创办自己想象中的企业、也没试着成为一名 AI 研究者。我觉得这才是最大的风险，是让整个人生沦于平庸的风险。</p>
<p>正因为如此，我们应该明确自己的目标，同时积极询问其他人需要什么，这就是良好的开端。很多人都在以自己不想的方式虚耗时间，而我给出的建议就是试着以积极的方式解决这个问题。</p>
<p><strong>比尔·盖茨:</strong> 确实，让人们从事一份自己有成就感、满足感的工作，往往能够迸发出他们自己都难以想象的力量。</p>
<p><strong>山姆·奥特曼:</strong> 绝对是这样。</p>
<h2 id="1512-为什么都开始搞研发效能">15.12. 为什么都开始搞研发效能？</h2>
<p><a href="https://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&amp;mid=2649762616&amp;idx=1&amp;sn=3b7f6e570b390697d0cacb248ab9b020&amp;chksm=beccb84389bb3155ed9531ac8111c65d06eb6ec5f2912a4378e87eadd3d41870988c5d988ef3&amp;scene=21#wechat_redirect">为什么都开始搞研发效能？ (qq.com)</a></p>
<ol>
<li>国内的很多工程实践是为了做而做，而不是从本质上认可这一工程实践的实际价值。</li>
<li>当把度量变成一个指标游戏的时候，永远不要低估人们在追求指标方面“创造性”，总之我们不应该纯粹面向指标去开展工作，而应该看到指标背后更大的目标，或者是制定这些指标背后的真正动机。</li>
<li>人越来越像工具，而工具越来越像人。</li>
<li>对于研发效能，实施的思路不对，方法不对会搞垮一个团队，我们需要的是体系化的方法论和相应的工程实践。</li>
</ol>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202402231713334.png"></p>
<h2 id="1513-研发效能度量实践者指南-">15.13. 研发效能度量实践者指南 🔹</h2>
<p><a href="https://cloud.tencent.com/developer/article/1873011">研发效能度量实践者指南（万字长文）-腾讯云开发者社区-腾讯云 (tencent.com)</a></p>
<ol>
<li>“我虽然没有功劳，但是我也有苦劳。” 大部分人可能只关注自己的付出，但并不关心付出所获得的实际效果。作为管理者应该为“苦劳鼓掌，为功劳付钱”。而功劳和苦劳的体现也需要借助客观的度量数据来体现，否则团队中的成员会逐渐陷入碌碌无为的窘境。</li>
<li>管理者往往会把目标拆解为可度量的指标。但是，目标和指标常常并不是简单的全局与局部的关系。目标的拆解过程看起来很顺畅，是那么地理所当然，但是当把拆解完的指标合并起来的的时候，结果往往让人哭笑不得。有一个笑话说的是，“你问人工智能，我要找一个女朋友，像安·海瑟薇一样的大眼睛，像朱莉娅·罗伯茨一样的大嘴，喜爱运动，陆上运动、水上运动都会。人工智能就根据这几个指标给出了母青蛙的答案”。所以，指标和目标常常并不是充分必要的关系。</li>
<li>指标是为了实现目标的，但是在实践过程中，指标很多时候却是与目标为敌的。管理者常常把目标拆解为指标，时间久了以后，他就只知道指标，而忘了背后更重要的目标。如果目标是林，那么指标就是木，时间久了就是只见树木，不见森林。这个时候忘记了目标是什么的管理者就会变得非常短视。那些不懂数据的人很糟糕，而最最糟糕的人是那些只看数字的人。在福特汽车的发展史上，有一段至暗时期。那些实践经验丰富，但是没有上过商学院的的老一辈管理层被干掉，取而代之的名校管理背景的数据分析师，公司试图通过精细化的数字管理来实现业务的增长。由于这些数据分析师并不熟悉业务，所以就只能看度量数据，越是不懂业务就越依赖度量数据来做决策，最后使整个公司陷入了泥潭。软件研发也有类似的尴尬，为了更好地代码质量，所以就制定了严格的代码测试覆盖率要求。时间一久，大家都机械性的追求这个指标，而忘记了当时设立这个指标的初衷，于是就出现了高覆盖率的大量单元测试中没有断言这样尴尬的局面。</li>
</ol>
<h2 id="1514-showcase深入了解">15.14. Showcase深入了解</h2>
<p><a href="https://blog.csdn.net/Teamo_mc/article/details/129097764">ShowCase 专治开发的「我自测好了」</a></p>
<h2 id="1515-如何正确的做技术选型">15.15. 如何正确的做技术选型？</h2>
<h2 id="1516-为什么技术团队应该写博客">15.16. 为什么技术团队应该写博客？</h2>
<h2 id="1517-编写高质量的代码从命名入手">15.17. 编写高质量的代码——从命名入手</h2>
<h2 id="1518-产业数字人才研究与发展报告2023pdf">15.18. 产业数字人才研究与发展报告2023.pdf</h2>
<p><a href="https://www2.deloitte.com/content/dam/Deloitte/cn/Documents/consulting/deloitte-cn-hc-industrial-digital-talents-zh-230609.pdf">deloitte-cn-hc-industrial-digital-talents-zh-230609.pdf</a></p>
<p><a href="https://new.qq.com/rain/a/20230321A0APKZ00">《产业数字人才研究与发展报告》：我国数字人才缺口超过2500万_腾讯新闻 (qq.com)</a></p>
<h2 id="1519-cookie-banner--cookie-policy-">15.19. Cookie Banner &amp; Cookie Policy 🔹</h2>
<p>Cookie Banner是指网站上出现的一种通知条，用于告知用户该网站使用Cookie等技术来收集、存储和处理用户数据，并且需要用户同意这些数据的使用。通常，Cookie Banner会包含一个简要的说明，告知用户使用Cookie的目的和类型，以及提供一个同意或拒绝的选项。此外，还可能包含一个链接，指向更详细的隐私政策或Cookie策略页面。</p>
<p>Cookie政策是网站提供给用户的一份声明，解释了网站如何使用Cookie（一种小型文本文件），以及与Cookie相关的数据收集和隐私保护措施。Cookie是一种存储在用户计算机上的文本文件，它包含有关用户访问网站的信息。许多网站使用Cookie来跟踪用户行为，例如记住用户首选项、购物车信息、广告和其他内容。Cookie政策通常包括以下信息：</p>
<ol>
<li>网站使用Cookie的目的和类型。</li>
<li>与Cookie相关的数据如何收集、存储和使用。</li>
<li>用户如何控制Cookie的使用和删除Cookie。</li>
<li>如何保护用户数据隐私。</li>
<li>Cookie政策的更新和变更如何通知用户。</li>
</ol>
<h2 id="1520-gdpr">15.20. GDPR</h2>
<p>GDPR的全面实施，意味着欧盟对于个人信息的保护及监管达到了前所未有的高度，GDPR堪称史上最严格的数据保护法案，任何违反GDPR的行为，将会产生1000万到2000万欧元的罚款，或企业全球年营业额的2%到4%，以数额最大的为准。</p>
<p><a href="https://zhuanlan.zhihu.com/p/401330458">一文读懂GDPR - 知乎 (zhihu.com)</a></p>
<h2 id="1521-快速访问github网站">15.21. 快速访问github网站</h2>
<p>最近遇到访问<code>github</code>经常失败的问题，因为在公司<code>Windows</code>电脑是不能随便安装软件的，没办法安装梯子软件，所以就找了一下有什么方式能辅助访问<code>github</code>，查了一下在<code>Microsoft Store</code>上有一个<code>Watt Toolkit</code>软件可以使用，效果还可以。</p>
<h2 id="1522-edge浏览器解决新建标签页被限制问题">15.22. Edge浏览器解决新建标签页被限制问题</h2>
<p>使用<a href="https://microsoftedge.microsoft.com/addons/detail/custom-new-tab/onagfgjlokaciajhjmajljcfanonbmia">Custom New Tab - Microsoft Edge Addons</a>插件解决。</p>
<h2 id="1523-问题清单文档内容布局错乱">15.23. 问题清单文档内容布局错乱</h2>
<p>这个文档出现内容全都塞到目录上面去了，然后怎么调整都没有用，排查了一下，原因是有些标题出现<code>&lt;table&gt;</code>、<code>&lt;div&gt;</code>但是没有使用高亮符将其高亮，变成文本显示，因为之前<code>Paper</code>主题为了显示<code>&lt;img/&gt;</code>设置了解析<code>html</code>代码，所以导致其解析成html代码运行了。</p>
<h2 id="1524-如果没有人读博客为什么要写呢">15.24. <a href="https://andysblog.uk/why-blog-if-nobody-reads-it/">如果没有人读博客，为什么要写呢？</a></h2>
<ol>
<li>博客的目标读者，其实不是互联网人群，而是未来的你，你的文章会让你看到自己思想的演变。</li>
<li>你写博客是因为你在思考，因为你在观察，因为你希望把它放在某个地方。</li>
<li>如果有人读了，那就更好了。如果没有，工作还是完成了。这才是真正的重点。</li>
</ol>
<h1 id="16-小技巧">16. 小技巧</h1>
<h2 id="161-如何在-mermaid-在线编辑器中实现长截图-">16.1. 如何在 Mermaid 在线编辑器中实现长截图 🔹</h2>
<p>在 <a href="https://mermaid-live.nodejs.cn/">Mermaid 在线编辑器</a> 上快速截图，虽然已经支持以 PNG 格式下载，但当流程图很长时，页面两边的间距过大，导致流程图内容展示过小。所以，可以使用 Google 浏览器的全屏截图功能。具体操作是：在流程图预览模式下，按下 <code>F12</code>，然后按下 <code>Ctrl + Shift + P</code>，输入 <code>screenshot</code>，选择 <strong>Capture full size screenshot</strong>，这样就可以实现长截图了。</p>
<p>不过，在 <a href="https://mermaid.nodejs.cn/">Mermaid 中文网</a> 上，这个方法一直没成功。后来发现，可以先点击 <strong>Kroki</strong> 预览流程图，然后缩小窗口，再使用上述命令，这样就能成功截图了。</p>
<h2 id="162-ubuntu系统终端切换至root">16.2. Ubuntu系统，终端切换至root</h2>
<p>在终端输入 <code>su</code> 然后输入密码即可。</p>
<h2 id="163-邮件typora软件插入日期">16.3. 邮件、typora软件插入日期🔹</h2>
<p>在平时写邮件和 <code>typora</code> 软件写日记的时候，特别苦恼怎么能快速插入日期，比如写日记，每次都要复制昨天的日记文档，然后修改时间，很是繁琐，所以就研究了一下，结果发现使用搜狗输入法就很快实现了。</p>
<p>使用搜狗输入法，在中文模式下，输入 <code>rq</code> ，则会自动显示日期格式 <code>年月日</code> ，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301608646.png"></p>
<p>如果输入 <code>sj</code> ，则会显示<code>年月日时分秒</code>，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202308301612720.png"></p>
<p>这样就可以快速插入日期了。</p>
<h2 id="164-markdown-自动加上标题编号-">16.4. Markdown 自动加上标题编号 🔹</h2>
<p>因为我那个记录问题的<code>markdown</code>文档，需要时不时更新一下内容，所以，标题的编号也要同步更新，这个文档内容那么多，改起来工作量很大，只能研究一下，怎么在<code>markdown</code>文档里自动加上标题编号。</p>
<p>在<code>VSCode</code>里有插件能够实现这个需求，自己也使用了一段时间，感觉还是很方便的，只是因为电脑更新系统，不小心卸载了这个插件，不太记得插件名字了，只能使用另一个———— <a href="https://marketplace.visualstudio.com/items?itemName=panchaoxin.markdown-header">Markdown Header</a>。可使用这个插件增加标题编号时，发现它并不是基于现有的标题编号进行更新，而是额外增加了标题编号，比如<code>1.1 1.1</code>，加上要清空标题编号没有生效，只能看下，怎么把当前文档里的标题编号全都清空，然后，再使用这个插件自动生成标题编号，解决思路是，在<code>VSCode</code>中使用正则表达式搜索，匹配到<code># 1.2.3</code>类似的格式，一个<code>#</code>加一个空格，然后是标题编号，全部替换成<code>#</code>即可。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="cl"><span class="p">(</span><span class="err">#\</span><span class="nx">s</span><span class="o">+</span><span class="p">)(</span><span class="err">\</span><span class="nx">b</span><span class="err">\</span><span class="nx">d</span><span class="o">+</span><span class="p">(</span><span class="err">\</span><span class="p">.</span><span class="err">\</span><span class="nx">d</span><span class="o">+</span><span class="p">)</span><span class="o">*</span><span class="err">\</span><span class="nx">b</span><span class="p">)</span>
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202409051357213.png"></p>
<p>接着，使用<code>Ctrl+Shift+P</code>，选择<code>Markdown generate header number</code>，一键生成标题编号。</p>
<h2 id="165-每日背英语单词">16.5. 每日背英语单词</h2>
<p>之前一直计划每天背30个英文单词，但是坚持了几天就不了了之，总觉得太费时间了，搞不好就要1个小时，有点难顶，现在回过头来想想，自己在做事情上面，还是不够聪明，其实不用贪多，很多学习并不是为了学习知识，而是学习一种习惯，就好像ARTS，并不指望能有多大的收益，最主要的是保持一种习惯，保持一种感觉，这种感觉类似于篮球中的投篮手感，如果中断的时间过久，就会生疏。所以，可以调整为每天就5个英语单词，这个要求不过分吧。</p>
<h2 id="166-写作技巧">16.6. 写作技巧</h2>
<ol>
<li>背景、初衷和目标</li>
<li>优势和劣势</li>
<li>适用场景</li>
<li>组成部分和关键点</li>
<li>底层原理和关键实现</li>
<li>已有的实现和对比</li>
</ol>
<h1 id="17-其他">17. 其他</h1>
<h2 id="171-大猩猩理论">17.1. 大猩猩理论🔹</h2>
<p>查理·芒格的“大猩猩理论”：一个聪明人进入一个有大猩猩的房间，解释他的想法是什么，而那个大猩猩只是坐在那里吃它的香蕉。结束这段谈话后，那个解释的人出来时一定变得更聪明了。</p>
<h2 id="172-康波周期">17.2. 康波周期</h2>
<h2 id="173-忙碌海狸图灵机">17.3. “忙碌海狸”图灵机</h2>
<h2 id="174-西蒙学习法">17.4. 西蒙学习法</h2>
]]></content:encoded>
    </item>
    <item>
      <title>部门静态导航页的设计与实现</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E9%83%A8%E9%97%A8%E9%9D%99%E6%80%81%E5%AF%BC%E8%88%AA%E9%A1%B5%E8%AE%BE%E8%AE%A1/</link>
      <pubDate>Sat, 11 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E9%83%A8%E9%97%A8%E9%9D%99%E6%80%81%E5%AF%BC%E8%88%AA%E9%A1%B5%E8%AE%BE%E8%AE%A1/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;每一个公司或者团队有会有相关的项目网址，考虑到团队共用的东西，所以计划是开发一个静态导航页，这样就不需要每个人自己维护了，使用同一套即可，当时在Github上面找了一些开源的静态导航页项目，使用的是开源库&lt;a href=&#34;https://github.com/TopVitamin/static-nav&#34;&gt;static-nav&lt;/a&gt;，它是使用HTML+CSS+JQ简单实现的，代码里面网址都是直接写死的，我只要将其替换就可以。&lt;/p&gt;
&lt;h1 id=&#34;1-遇到问题&#34;&gt;1. 遇到问题&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TopVitamin/static-nav&#34;&gt;static-nav&lt;/a&gt;虽然可以正常应对当前的需求，但是使用一段时间之后发现，如果我要替换或者新增一些网址，每次都需要在.html文件中修改，然后再重新部署。一两次还好，次数多了，就有点受不了了，再加上一个模块的网址多了之后，好几个模块所占用的空间不一致的话，那布局就容易错乱，为了解决这个问题，我每次都需要使用占位符解决。&lt;/p&gt;
&lt;h1 id=&#34;2-解决方案&#34;&gt;2. 解决方案&lt;/h1&gt;
&lt;p&gt;考虑到维护、后期拓展难的问题，就打算重构这个项目，并命名为&lt;a href=&#34;https://github.com/dstweihao/dst-static-nav&#34;&gt;dst-static-nav&lt;/a&gt;，基于vue next + vite + element-plus 实现，通过一个navLists.ts文件动态配置，后期只需要将这个文件存放在服务器，如有任何需求，只需要改动这个navLists.ts文件即可，不需要改动项目界面，然后又要重新部署一遍，因为最近百度捣鼓了一个开发者搜索，所以也加了一下，项目效果图，如下所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image-20230227220909107.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;功能主要是以下几点，分别是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;左边菜单栏快速定位，右边静态导航页动态渲染&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过 navList.ts 配置，无需改动前端页面&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持百度开发者搜索&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当前只是这些功能，后期可能考虑部署线上，然后怎么可以做到通用一点。&lt;/p&gt;
&lt;h1 id=&#34;3-技术要点&#34;&gt;3. 技术要点&lt;/h1&gt;
&lt;p&gt;项目虽然很小，但是有一些细节点还是可以梳理记录一下的，技术没有高低之分，只要能解决了问题就是好技术。&lt;/p&gt;
&lt;h2 id=&#34;31-基于el-scrollbar实现左右联动定位到标题栏&#34;&gt;3.1 基于el-scrollbar实现左右联动定位到标题栏&lt;/h2&gt;
&lt;p&gt;项目开发过程中，主要解决的问题是，左侧菜单栏和右边导航布局页面的联动，需求就是左侧菜单栏选中，右边导航页对应的标题栏滚动到顶部显示，在实现中主要使用document.getElementsByName()这个函数，当&lt;div&gt;&lt;/div&gt;上定义了name属性，就可以通过这个函数获取到它与顶部的距离offsetTop，以此可以将滚动条滚动到指定的位置，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;handleSelect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;keyPath&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementsByName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nx&#34;&gt;scrollbarRef&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setScrollTop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;32-实现左侧菜单栏最后几个菜单的标题置顶&#34;&gt;3.2 实现左侧菜单栏最后几个菜单的标题置顶&lt;/h2&gt;
&lt;p&gt;在项目使用过程中，发现左侧菜单栏最后几个菜单，来回切换，导航标题没有置顶，原因很简单，因为布局不够，为了解决这个问题，就需要在最后一个导航模块增加布局，但是应该要增加多少呢？每个导航模块的高度都是不定的，所以要新增的布局高度只能通过计算，动态设置。&lt;/p&gt;
&lt;p&gt;首先，需要知道最后一个导航模块的名称，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 获取左侧菜单最后一项，基于它加上需补充的空间高度(浏览器内高度-卡片整个高度)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lastNavName&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;navLists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;at&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;chindren&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;at&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;label&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后，需要获取当前浏览器页面的高度，减去这个导航模块的高度，就可以知道需要新增多高的布局了，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tsx&#34; data-lang=&#34;tsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;handleSelect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;keyPath&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementsByName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;nx&#34;&gt;scrollbarRef&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setScrollTop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;offsetTop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;总结&#34;&gt;总结&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/dstweihao/dst-static-nav&#34;&gt;dst-static-nav&lt;/a&gt; 项目还有蛮多东西需要完善的，也是在逐步新增需求，虽然不是什么了不起的项目，但是项目开发整个流程规范是一样的，争取培养起来用心做事情的感觉，从中体验到丝丝成就感。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508132253218.jpeg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>每一个公司或者团队有会有相关的项目网址，考虑到团队共用的东西，所以计划是开发一个静态导航页，这样就不需要每个人自己维护了，使用同一套即可，当时在Github上面找了一些开源的静态导航页项目，使用的是开源库<a href="https://github.com/TopVitamin/static-nav">static-nav</a>，它是使用HTML+CSS+JQ简单实现的，代码里面网址都是直接写死的，我只要将其替换就可以。</p>
<h1 id="1-遇到问题">1. 遇到问题</h1>
<p><a href="https://github.com/TopVitamin/static-nav">static-nav</a>虽然可以正常应对当前的需求，但是使用一段时间之后发现，如果我要替换或者新增一些网址，每次都需要在.html文件中修改，然后再重新部署。一两次还好，次数多了，就有点受不了了，再加上一个模块的网址多了之后，好几个模块所占用的空间不一致的话，那布局就容易错乱，为了解决这个问题，我每次都需要使用占位符解决。</p>
<h1 id="2-解决方案">2. 解决方案</h1>
<p>考虑到维护、后期拓展难的问题，就打算重构这个项目，并命名为<a href="https://github.com/dstweihao/dst-static-nav">dst-static-nav</a>，基于vue next + vite + element-plus 实现，通过一个navLists.ts文件动态配置，后期只需要将这个文件存放在服务器，如有任何需求，只需要改动这个navLists.ts文件即可，不需要改动项目界面，然后又要重新部署一遍，因为最近百度捣鼓了一个开发者搜索，所以也加了一下，项目效果图，如下所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image-20230227220909107.png"></p>
<p>功能主要是以下几点，分别是：</p>
<ol>
<li>
<p>左边菜单栏快速定位，右边静态导航页动态渲染</p>
</li>
<li>
<p>通过 navList.ts 配置，无需改动前端页面</p>
</li>
<li>
<p>支持百度开发者搜索</p>
</li>
</ol>
<p>当前只是这些功能，后期可能考虑部署线上，然后怎么可以做到通用一点。</p>
<h1 id="3-技术要点">3. 技术要点</h1>
<p>项目虽然很小，但是有一些细节点还是可以梳理记录一下的，技术没有高低之分，只要能解决了问题就是好技术。</p>
<h2 id="31-基于el-scrollbar实现左右联动定位到标题栏">3.1 基于el-scrollbar实现左右联动定位到标题栏</h2>
<p>项目开发过程中，主要解决的问题是，左侧菜单栏和右边导航布局页面的联动，需求就是左侧菜单栏选中，右边导航页对应的标题栏滚动到顶部显示，在实现中主要使用document.getElementsByName()这个函数，当<div></div>上定义了name属性，就可以通过这个函数获取到它与顶部的距离offsetTop，以此可以将滚动条滚动到指定的位置，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">handleSelect</span> <span class="o">=</span> <span class="p">(</span><span class="nx">key</span>: <span class="kt">string</span><span class="p">,</span> <span class="nx">keyPath</span>: <span class="kt">string</span><span class="p">[])</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">		<span class="kd">let</span> <span class="nx">offsetTop</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByName</span><span class="p">(</span><span class="nx">key</span><span class="p">)[</span><span class="mi">0</span><span class="p">].</span><span class="nx">offsetTop</span>
</span></span><span class="line"><span class="cl">		<span class="nx">scrollbarRef</span><span class="p">.</span><span class="nx">value</span><span class="o">!</span><span class="p">.</span><span class="nx">setScrollTop</span><span class="p">(</span><span class="nx">offsetTop</span> <span class="o">-</span> <span class="mi">20</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h2 id="32-实现左侧菜单栏最后几个菜单的标题置顶">3.2 实现左侧菜单栏最后几个菜单的标题置顶</h2>
<p>在项目使用过程中，发现左侧菜单栏最后几个菜单，来回切换，导航标题没有置顶，原因很简单，因为布局不够，为了解决这个问题，就需要在最后一个导航模块增加布局，但是应该要增加多少呢？每个导航模块的高度都是不定的，所以要新增的布局高度只能通过计算，动态设置。</p>
<p>首先，需要知道最后一个导航模块的名称，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="c1">// 获取左侧菜单最后一项，基于它加上需补充的空间高度(浏览器内高度-卡片整个高度)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">let</span> <span class="nx">lastNavName</span> <span class="o">=</span> <span class="nx">navLists</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">?</span><span class="p">.</span><span class="nx">chindren</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">?</span><span class="p">.</span><span class="nx">label</span>
</span></span></code></pre></div><p>然后，需要获取当前浏览器页面的高度，减去这个导航模块的高度，就可以知道需要新增多高的布局了，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">handleSelect</span> <span class="o">=</span> <span class="p">(</span><span class="nx">key</span>: <span class="kt">string</span><span class="p">,</span> <span class="nx">keyPath</span>: <span class="kt">string</span><span class="p">[])</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">   <span class="kd">let</span> <span class="nx">offsetTop</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByName</span><span class="p">(</span><span class="nx">key</span><span class="p">)[</span><span class="mi">0</span><span class="p">].</span><span class="nx">offsetTop</span>
</span></span><span class="line"><span class="cl">   <span class="nx">scrollbarRef</span><span class="p">.</span><span class="nx">value</span><span class="o">!</span><span class="p">.</span><span class="nx">setScrollTop</span><span class="p">(</span><span class="nx">offsetTop</span> <span class="o">-</span> <span class="mi">20</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span></code></pre></div><h1 id="总结">总结</h1>
<p><a href="https://github.com/dstweihao/dst-static-nav">dst-static-nav</a> 项目还有蛮多东西需要完善的，也是在逐步新增需求，虽然不是什么了不起的项目，但是项目开发整个流程规范是一样的，争取培养起来用心做事情的感觉，从中体验到丝丝成就感。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202508132253218.jpeg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《精力管理》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E7%B2%BE%E5%8A%9B%E7%AE%A1%E7%90%86/</link>
      <pubDate>Sun, 20 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E7%B2%BE%E5%8A%9B%E7%AE%A1%E7%90%86/</guid>
      <description>&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;最重要的体能精力管理方法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1. 早睡早起&lt;/p&gt;
&lt;p&gt;2. 坚持在同样的时间睡觉和起床&lt;/p&gt;
&lt;p&gt;3. 每天5～6次少量进食&lt;/p&gt;
&lt;p&gt;4. 每天吃早餐&lt;/p&gt;
&lt;p&gt;5. 饮食健康，营养均衡&lt;/p&gt;
&lt;p&gt;6. 尽量减少单糖化合物摄入&lt;/p&gt;
&lt;p&gt;7. 每天饮用1360～1800克的水&lt;/p&gt;
&lt;p&gt;8. 工作时每90分钟休息片刻&lt;/p&gt;
&lt;p&gt;9. 每天进行适量身体活动&lt;/p&gt;
&lt;p&gt;10. 每周至少两次心血管功能间断训练、两次力量训练&lt;/p&gt;
&lt;h2 id=&#34;第一部分如何做到全情投入&#34;&gt;第一部分 如何做到全情投入&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;精力就是做事情的能力。包括体能、情感、思维、意志四个方面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;今天我们要分析一条革命性的理论——管理精力，而非时间，才是是高效表现的基础。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们在人生的道路上争先恐后，却吝于用片刻思考目标或方向。我们事务缠身，却又总是筋疲力尽。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时间永远不够用，我们的唯一办法只有在每一天里最大程度地生挤硬塞。然而新的问题出现了，再高效的时间管理也无法确保我们有足够的精力处理每一件事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;● 你精心规划了一天的12小时，但是到了中午你的精力就走向了负面，毫无耐心，焦躁易怒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;● 日历和掌上电脑都提醒你今天是爱人的生日，傍晚来临时你却因为疲倦失去了庆祝的心力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;精力，而非时间，
是高效表现的基础&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;精力的重要性看似显而易见，却经常被人们在工作和个人生活中忽略。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有技巧的精力管理
是高度表现、健康和幸福的基础&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们不可避免会遇到差劲的老板，糟糕的工作环境，困难的恋爱关系，以及现实中生活中的种种危机。尽管如此，我们依旧可以比现在更好地掌控精力。一天只有固定的24小时，但精力的储备与质量却没有定数。精力是我们最宝贵的资源。我们越是本着负责的态度对待它，越能变得多产而高效。反之，越是怨天尤人，我们的精力会变得越是消极、质量低下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果明天早晨你醒来的时候，带着对工作和家人的积极、专注的精力，你的状态会有多大程度改善？如果你是领导或经理，积极的精力和激情将会给公司环境精力带来多大的价值？如果员工们拥有更多的积极精力，同事关系、客户服务质量又会有多大的提升？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全情投入需要身体活跃、情感联动、思维集中，并且达到超出个人短期利益的意志高度。它意味着你在早晨对工作充满期待，晚上高高兴兴地回家，能够在工作和私人生活之间画上清晰的界线。它意味着全心投入手头的事务，不管是应对工作挑战、管理团队、陪伴所爱之人，还是娱乐消遣。全情投入会从根本上颠覆我们的生活方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在过去十年中，客户对精力的误用和挥霍总能一再刷新我们的认知——不良的饮食习惯，无效的恢复和重振精力方式，注意力不集中等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们与运动员合作成功的秘诀并非在于技巧或战略。人们通常认为，才华横溢的人面对挑战时只要配备足够技能，就能够发挥出最好的水平。从我们的经验来看却并非如此。精力才是完全点燃才华和技能的正解。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在发展的过程中，我们意外发现：运动员的精力需求跟普通人日常生活的精力需求相比简直相形见绌。
这怎么可能？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;专业运动员通常90%的时间都在训练，为了在剩余10%时间里取得结果。他们的生活围绕着增强、保持和恢复精力的主题，为短期的高强度竞技做准备。以实用为出发点，他们精确规划的日常作息也为各方面的精力管理设定了严格的程序——吃饭睡觉，训练休息，情绪控制，心理准备，保持专注，定期自查目标完成情况，等等。然而，大多数普通人从未接受过类似的系统训练，每天仍需要做到8～12小时的最佳表现。
大多数专业运动员每年得以享受4～5个月的淡季休假。经过数月的高压力、高强度的竞技比赛，淡季休假是运动员休整、疗伤和成长的重要时期。相反，普通人的“淡季休假”加起来也不过一年几周的假期。即使在休假期间，你也不见得完全在休息和恢复，因为总需要抽出时间回复邮件、查收语音信息，思考下一步的工作。
最后，专业运动员的平均职业生涯为5～7年不等。如果财务管理妥当，基本可以保证一生衣食无忧，只有极少数人会顶着压力外出奔波再找一份工作。相比之下，你可能要面对40～50年日复一日的工作生活。
在这样冰冷而残酷的现实下，我们如何才能保持最佳表现，同时又不损害健康、幸福和对生活的热情呢？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你一定要全情投入&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;原则一：
全情投入需要调动四种独立且相关联的精力源：
体能，情感，思维和意志&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想想每一次由于你因为沮丧而向别人大喊大叫，或是工作粗枝大叶，或是对手头工作精神不集中，别人的生命可能就处于危险当中。通过管理精力，你很快就会从低落、鲁莽和草率中走出来。我们有责任管理时间和金钱，也同样有责任管理体能，情感，思维和意志的精力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们极少考虑我们消耗了多少精力储备，总是想当然地认为它能够随用随取。事实上，不断增长的需求逐步耗尽了我们的精力储备——尤其由于我们不对随着年龄出现的能力减退做任何补救。通过全方位的训练，我们可以极大地减缓身体和思维的衰退，并切实地深化情感和精神的能力，直至生命的尽头。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不幸的是，恢复往往被看作虚弱的表现而非可持续机能不可或缺的一部分，导致我们对精力储备的更新和扩充不甚在意，个人和团体层面均是如此。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要想保持生命的跃动，
我们必须学习如何有节奏地
消耗和更新精力&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最丰富、最快乐和最高产的生命的共通之处，是全情应对眼前的挑战，同时能够间断地放松，留给精力再生的空间。现实生活中，许多人都将生命当作一场永无止境的马拉松，逼迫自己超过健康消耗的范畴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;原则三：
为了提高能力，我们必须突破自己的惯常极限，
模仿运动员进行系统训练。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;压力并非是我们生活中的敌人，相反，它是我们成长的关键。为了增强肌肉的力量，我们会有针对性地向它施加压力，使它爆发出超常水平的精力，造成肌肉纤维的微小撕裂，运动结束后几乎丧失运作能力。但只需24～48小时的休整，它会变得更强壮，能够更好地应对下一次刺激。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们锻炼情感、思维和意志能力，
采用的是与锻炼体能相同的方法&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过突破极限和休整恢复，我们可以在各个方面获得成长。肌肉在正常范围内使用并不会增加力量，还会随着年龄增长逐渐衰退。肌肉锻炼的最大障碍是，大多数人在刚刚体验到超出极限的不适时就退缩了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;积极的精力仪式习惯，即细致具体的精力管理方法，
是全情投入、保持高效表现的诀窍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果某件事你每次做之前都需要思考，你很可能不会长久坚持这件事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;逐渐成为自然的积极仪式习惯，
扎根于我们的深层价值观。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="点评">点评</h2>
<ul>
<li>最重要的体能精力管理方法</li>
</ul>
<p>1. 早睡早起</p>
<p>2. 坚持在同样的时间睡觉和起床</p>
<p>3. 每天5～6次少量进食</p>
<p>4. 每天吃早餐</p>
<p>5. 饮食健康，营养均衡</p>
<p>6. 尽量减少单糖化合物摄入</p>
<p>7. 每天饮用1360～1800克的水</p>
<p>8. 工作时每90分钟休息片刻</p>
<p>9. 每天进行适量身体活动</p>
<p>10. 每周至少两次心血管功能间断训练、两次力量训练</p>
<h2 id="第一部分如何做到全情投入">第一部分 如何做到全情投入</h2>
<ul>
<li>
<p>精力就是做事情的能力。包括体能、情感、思维、意志四个方面。</p>
</li>
<li>
<p>今天我们要分析一条革命性的理论——管理精力，而非时间，才是是高效表现的基础。</p>
</li>
<li>
<p>我们在人生的道路上争先恐后，却吝于用片刻思考目标或方向。我们事务缠身，却又总是筋疲力尽。</p>
</li>
<li>
<p>时间永远不够用，我们的唯一办法只有在每一天里最大程度地生挤硬塞。然而新的问题出现了，再高效的时间管理也无法确保我们有足够的精力处理每一件事。</p>
</li>
<li>
<p>● 你精心规划了一天的12小时，但是到了中午你的精力就走向了负面，毫无耐心，焦躁易怒。</p>
</li>
<li>
<p>● 日历和掌上电脑都提醒你今天是爱人的生日，傍晚来临时你却因为疲倦失去了庆祝的心力。</p>
</li>
<li>
<p>精力，而非时间，
是高效表现的基础</p>
</li>
<li>
<p>精力的重要性看似显而易见，却经常被人们在工作和个人生活中忽略。</p>
</li>
<li>
<p>有技巧的精力管理
是高度表现、健康和幸福的基础</p>
</li>
<li>
<p>人们不可避免会遇到差劲的老板，糟糕的工作环境，困难的恋爱关系，以及现实中生活中的种种危机。尽管如此，我们依旧可以比现在更好地掌控精力。一天只有固定的24小时，但精力的储备与质量却没有定数。精力是我们最宝贵的资源。我们越是本着负责的态度对待它，越能变得多产而高效。反之，越是怨天尤人，我们的精力会变得越是消极、质量低下。</p>
</li>
<li>
<p>如果明天早晨你醒来的时候，带着对工作和家人的积极、专注的精力，你的状态会有多大程度改善？如果你是领导或经理，积极的精力和激情将会给公司环境精力带来多大的价值？如果员工们拥有更多的积极精力，同事关系、客户服务质量又会有多大的提升？</p>
</li>
<li>
<p>全情投入需要身体活跃、情感联动、思维集中，并且达到超出个人短期利益的意志高度。它意味着你在早晨对工作充满期待，晚上高高兴兴地回家，能够在工作和私人生活之间画上清晰的界线。它意味着全心投入手头的事务，不管是应对工作挑战、管理团队、陪伴所爱之人，还是娱乐消遣。全情投入会从根本上颠覆我们的生活方式。</p>
</li>
<li>
<p>在过去十年中，客户对精力的误用和挥霍总能一再刷新我们的认知——不良的饮食习惯，无效的恢复和重振精力方式，注意力不集中等。</p>
</li>
<li>
<p>我们与运动员合作成功的秘诀并非在于技巧或战略。人们通常认为，才华横溢的人面对挑战时只要配备足够技能，就能够发挥出最好的水平。从我们的经验来看却并非如此。精力才是完全点燃才华和技能的正解。</p>
</li>
<li>
<p>在发展的过程中，我们意外发现：运动员的精力需求跟普通人日常生活的精力需求相比简直相形见绌。
这怎么可能？</p>
</li>
<li>
<p>专业运动员通常90%的时间都在训练，为了在剩余10%时间里取得结果。他们的生活围绕着增强、保持和恢复精力的主题，为短期的高强度竞技做准备。以实用为出发点，他们精确规划的日常作息也为各方面的精力管理设定了严格的程序——吃饭睡觉，训练休息，情绪控制，心理准备，保持专注，定期自查目标完成情况，等等。然而，大多数普通人从未接受过类似的系统训练，每天仍需要做到8～12小时的最佳表现。
大多数专业运动员每年得以享受4～5个月的淡季休假。经过数月的高压力、高强度的竞技比赛，淡季休假是运动员休整、疗伤和成长的重要时期。相反，普通人的“淡季休假”加起来也不过一年几周的假期。即使在休假期间，你也不见得完全在休息和恢复，因为总需要抽出时间回复邮件、查收语音信息，思考下一步的工作。
最后，专业运动员的平均职业生涯为5～7年不等。如果财务管理妥当，基本可以保证一生衣食无忧，只有极少数人会顶着压力外出奔波再找一份工作。相比之下，你可能要面对40～50年日复一日的工作生活。
在这样冰冷而残酷的现实下，我们如何才能保持最佳表现，同时又不损害健康、幸福和对生活的热情呢？</p>
</li>
</ul>
<p>你一定要全情投入</p>
<ul>
<li>
<p>原则一：
全情投入需要调动四种独立且相关联的精力源：
体能，情感，思维和意志</p>
</li>
<li>
<p>想想每一次由于你因为沮丧而向别人大喊大叫，或是工作粗枝大叶，或是对手头工作精神不集中，别人的生命可能就处于危险当中。通过管理精力，你很快就会从低落、鲁莽和草率中走出来。我们有责任管理时间和金钱，也同样有责任管理体能，情感，思维和意志的精力。</p>
</li>
<li>
<p>人们极少考虑我们消耗了多少精力储备，总是想当然地认为它能够随用随取。事实上，不断增长的需求逐步耗尽了我们的精力储备——尤其由于我们不对随着年龄出现的能力减退做任何补救。通过全方位的训练，我们可以极大地减缓身体和思维的衰退，并切实地深化情感和精神的能力，直至生命的尽头。</p>
</li>
<li>
<p>不幸的是，恢复往往被看作虚弱的表现而非可持续机能不可或缺的一部分，导致我们对精力储备的更新和扩充不甚在意，个人和团体层面均是如此。</p>
</li>
<li>
<p>要想保持生命的跃动，
我们必须学习如何有节奏地
消耗和更新精力</p>
</li>
<li>
<p>最丰富、最快乐和最高产的生命的共通之处，是全情应对眼前的挑战，同时能够间断地放松，留给精力再生的空间。现实生活中，许多人都将生命当作一场永无止境的马拉松，逼迫自己超过健康消耗的范畴。</p>
</li>
<li>
<p>原则三：
为了提高能力，我们必须突破自己的惯常极限，
模仿运动员进行系统训练。</p>
</li>
<li>
<p>压力并非是我们生活中的敌人，相反，它是我们成长的关键。为了增强肌肉的力量，我们会有针对性地向它施加压力，使它爆发出超常水平的精力，造成肌肉纤维的微小撕裂，运动结束后几乎丧失运作能力。但只需24～48小时的休整，它会变得更强壮，能够更好地应对下一次刺激。</p>
</li>
<li>
<p>我们锻炼情感、思维和意志能力，
采用的是与锻炼体能相同的方法</p>
</li>
</ul>
<p>通过突破极限和休整恢复，我们可以在各个方面获得成长。肌肉在正常范围内使用并不会增加力量，还会随着年龄增长逐渐衰退。肌肉锻炼的最大障碍是，大多数人在刚刚体验到超出极限的不适时就退缩了。</p>
<ul>
<li>
<p>积极的精力仪式习惯，即细致具体的精力管理方法，
是全情投入、保持高效表现的诀窍。</p>
</li>
<li>
<p>如果某件事你每次做之前都需要思考，你很可能不会长久坚持这件事。</p>
</li>
<li>
<p>逐渐成为自然的积极仪式习惯，
扎根于我们的深层价值观。</p>
</li>
<li>
<p>“仪式习惯”指的是定义明确、具有高度计划性的行为。毅力和自律将人们推向某种特定的行为方式，而仪式习惯自动会把人们拉向某条轨道。比如刷牙，你并不需要每天提醒自己去做，它已经变成因健康观念而自发产生的行为。人们在刷牙时通常切换到自动的模式，不需刻意的努力和主动意识。仪式习惯的优势在于，确保我们在非必要情况下尽量减少意识精力的消耗，让它可以节省下来用在其他需要的方面。</p>
</li>
<li>
<p>如果你面对严苛的要求也能继续保持积极的精力，说明你一定有可以让自己从压力中恢复的特定方法。我们发现，为了确保全情投入，建立良好的仪式习惯是精力管理的最有效方式。</p>
</li>
<li>
<p>我们发现，是三个步骤——目标-事实-行动，保证了变革的持久性，三者缺一不可。</p>
</li>
<li>
<p>我们的第一个挑战是，“如何依照我们最深层次的价值取向分配精力？”如今，人们像星际旅行一样超速前进，结果既不愿花时间思考自己最看重什么，也不愿把这些事情放在首要和中心的位置。多数人花费太多时间处理眼下的危机，应付他人的期望，而不是思维清醒地思考什么最重要，并以此为指导做出谨慎的选择。</p>
</li>
<li>
<p>波谲云诡</p>
</li>
<li>
<p>制定变革的计划离不开对个人现状的清醒认知。变革的第二阶段就是面对现实。</p>
</li>
<li>
<p>逃避沉重而不愉快的真相是人的天性。我们常常低估自己的精力管理方式所带来的后果，但又不能坦然地自食苦果。</p>
</li>
<li>
<p>人们在面对自我时往往会戴上 “玫瑰色滤镜”，把自己塑造成受害者，或者全然否认所做抉择对精力的储备、质量、力量和专注力所造成的深刻影响。</p>
</li>
<li>
<p>某些仪式习惯有所裨益，某些则纯属为了应急，这是人们的常态。“应急”的习惯或许能在短期内帮我们解决生活的难题，长期来看却会极大损害我们的能效、健康和幸福。</p>
</li>
<li>
<p>这些习惯的恶果只会随着时间慢慢显现。</p>
</li>
<li>
<p>养成精力仪式习惯需要在具体时间发起明确的行动，由深层价值观驱动。正如亚里士多德所说，“我们每一个人都是由自己一再重复的行为所铸造的。”</p>
</li>
<li>
<p>● 精力管理，而非时间，才是高效表现的基础。高效表现源于有技巧的精力管理。
● 领导者正是团体精力的统筹人。他们首先要具备个人精力管理技巧，然后才能调动、集中、投入和维持团队的集体精力。
● 全情投入是确保最优表现的最佳精力状态。
● 原则一：全情投入需要调动四种独立且相互关联的精力源：体能，情感，思维和意志
● 原则二：因为使用过度和使用不足都会削弱精力，必须不时更新精力以平衡消耗
● 原则三：为了提高能力，我们必须突破自己的惯常极限，模仿运动员进行系统训练。
● 原则四：积极的精力仪式习惯，即细致具体的精力管理方法，是全情投入、保持高效表现的诀窍。
● 确保改变持久需要完成三个步骤：明确目标，正视现实，付诸行动。</p>
</li>
<li>
<p>5个基本障碍困扰着他：精力低下，焦躁，消极，人际关系淡薄，还缺乏激情。</p>
</li>
<li>
<p>两年前，我们破格提拔他担任领导角色，从那往后他的表现就从A级直线下降，现在最多只能打C+，还影响到了整个销售团队。</p>
</li>
<li>
<p>我们的工作很重要的一环是透过表面看清客户的生活中实质发生了什么</p>
</li>
<li>
<p>体能不足是罪魁祸首
罗杰所有的表现障碍中，最明显的共因是他的体能管理方式。</p>
</li>
<li>
<p>大多时间他总是不吃早餐（“我在减肥”），然后在10点左右变得饥肠辘辘，只好去餐厅点一份蓝莓松饼，并为自己续上第二杯咖啡。</p>
</li>
<li>
<p>精力断层会强烈影响他的急躁程度和专注时间。晚餐是罗杰最丰富的一餐，也是导致他超重的罪魁祸首。等到7点半或8点的晚饭时间，他早已饥肠辘辘，准备好好安慰自己的肠胃——一大碗意大利面，或是大份的鸡肉或牛排，土豆，酱汁充足的沙拉，外加大量面包。只有一半的时间，他能抵制住晚间甜食的诱惑。</p>
</li>
<li>
<p>运动本可以抵消暴饮暴食的部分后果，还能有效缓解负面情感，让思维恢复清醒。</p>
</li>
<li>
<p>三四杯红酒下肚很常见。这不仅给他的营养表平添几千卡路里，还让他一早醒来时眩晕无力。</p>
</li>
<li>
<p>工作早期，他也曾是办公室里的开心果。好景不长，随着工作年份的增长，幽默带上了棱角，曾经的温和自嘲变成了尖刻的讽刺。</p>
</li>
<li>
<p>精力具有极强的传染力，负面情感开始滋生蔓长，领导者对其他人的精力影响尤其明显。罗杰的情绪强烈地传递给下属，正如老板的忽视影响了他自己的精力。</p>
</li>
<li>
<p>爱情本是情感疗伤的最好灵药。罗杰一直将瑞秋当作爱人和挚友。因为缺少共同相处的时间，两人间的浪漫感和亲密感已经变成遥远的记忆，连亲热的次数都少了许多。他们之间的氛围越来越公事公办，话题都围绕着家庭事务和条件协商——谁去取干洗衣物或外卖，谁送孩子去参加课外活动。现在他们极少就各自的生活交流感想。</p>
</li>
<li>
<p>她更拿不出时间陪伴罗杰了。罗杰理解妻子承担的压力，却还是不由自主萌生出被抛弃的感觉，跟工作中的感受如出一辙。</p>
</li>
<li>
<p>而罗杰认为，经过劳累的一周，自己至少值得一些放松和休息的时间。可他还是会感到内疚，毕竟妻子从来没有同样的休闲时间。而且讽刺的是，即使打了高尔夫，周末也很少让他有焕然一新和重装上阵的感觉。</p>
</li>
<li>
<p>步入职场以来，罗杰第一次感到自己精力分散、效率低下。</p>
</li>
<li>
<p>时间一长，他发现自己永远都在回应别人的问题，而不是执行自己的日程安排。</p>
</li>
<li>
<p>所以在某种意义上，罗杰从未真正离开过办公室。</p>
</li>
<li>
<p>精力的强大源头在于目标清晰，而罗杰显然缺乏这种动力。</p>
</li>
<li>
<p>罗杰几乎拥有了他曾经渴望的一切，但他却越来越感到疲惫、沮丧，形单影只。最后，罗杰告诉我们，他觉得自己变成了无能为力的牺牲品。</p>
</li>
<li>
<p>也许我在工作时过于轻易地急躁发火，但我本性并非如此。我没有得到老板足够的支持，公司还要削减经费。一个人在如此大的压力之下更难集中精力，或者产生热情。
“我很内疚自己没有花更多时间陪伴孩子，觉得自己亏欠她们很多。瑞秋说得对，即使我人在心也不在。不过她自己也是五十步笑百步。我怀念与妻子相处的时光。有时我会感觉自己被忽略了，可换位思考，她肩上的事情也够多了。</p>
</li>
<li>
<p>第三章　高效表现有节奏——劳逸结合的平衡</p>
</li>
<li>
<p>通过运动和休息交替进行可以最大限度提高表现，这条理论最初由斐洛斯特拉图斯提出，他是古希腊运动员训练手册的编撰者。</p>
</li>
<li>
<p>随着训练强度增大、对运动员要求提高，能力的恢复和补偿程度也必然相应增加，否则，运动员的表现将会逐渐下降。</p>
</li>
<li>
<p>精力简单来讲就是做事的能力。
人类最基本的需求是精力的消耗与恢复</p>
</li>
<li>
<p>所有精英运动员客户来找我们时都面对着水平发挥的难题，而这些难题归根结底都是精力消耗和恢复的不平衡。他们在体能、情感、思维和意志的一个或多个层面要么过度训练，要么训练不足。二者都会直接体现在运动员的表现上，包括持续的伤病、焦虑、消极、愤怒、难以集中精力和失去激情。</p>
</li>
<li>
<p>持续健身能带来身心改善，但若停止一周，曾经的改善就会大幅退步，只要停止4周，这种改善就会完全消失。</p>
</li>
<li>
<p>情感的深度和适应力取决于外界交往的积极程度和内省习惯。思维的敏锐度会因为缺乏思维挑战而减退。意志精力依赖于不断温习深层价值取向，为自我行为负责。全情投入需要在各个层面培养精力消耗（压力）和精力再生（恢复）的动态平衡。</p>
</li>
<li>
<p>不论是一开几个小时的会议，还是鼓励下属晚上和周末加班加点，员工的工作表现必然会随着时间延长变得越来越差。鼓励人们适度休息的企业文化不仅能够提高员工的忠诚度，也会给组织带来更高的效率。</p>
</li>
<li>
<p>遵循生命的节奏
自然本身存在规律的脉动，在活跃和休息之间有节奏、波浪形地交替。涨潮退潮，四季更替，日升日落，不胜枚举。同理，所有有机体都遵从恒久的节奏——鸟类迁徙，熊类冬眠，松鼠收集坚果，鱼儿产卵，生物的活动都有一定的间歇。</p>
</li>
<li>
<p>张弛有度是全情投入、维持机能和保持健康的关键。相反，单线化运动最终会导致机能障碍和死亡。想象一幅健康的脑电图或心电图是如何起伏波动的，再想象它的反面，是不是一条直线？</p>
</li>
<li>
<p>到了70年代，进一步的研究表明，大脑清醒状态下也存在同样的90～120分钟的周期，即次昼夜节律。</p>
</li>
<li>
<p>压力荷尔蒙在体内定期循环，或许能暂时保持机体活力，但时间一长就会出现多动、咄咄逼人、急躁、烦躁、愤怒、自私自利、对他人漠不关心等症状。如果人们始终忽略张弛有度的法则，还会面临头痛、背痛、肠胃功能紊乱、心脏病甚至死亡的危险。</p>
</li>
<li>
<p>最佳选手们在两轮比赛期间有固定的行为模式，包括得分后走回基线时头和肩膀如何摆正，视线看向哪里，呼吸模式，甚至自言自语的习惯等。</p>
</li>
<li>
<p>显然后者的身体更感劳累，而劳累又会带来其他负面情感，如愤怒和沮丧，使得他的心率进一步升高，肌肉僵硬。身体劳累也会让人难以集中注意力。普通人在高压之下连续伏案工作几个小时，劳累是必然的结果，随之而来的还有负面情感，注意力分散，这些最终都将降低你的表现。</p>
</li>
<li>
<p>我拥有在任何情况下高度集中的能力，摒弃那些让我分心的事物。然而，我无法在打完18洞的过程里始终集中精力，即便可以，我怀疑我的思维也会过度损耗，思维变得混沌，最终还是无法推杆入洞。因而我制订了一套步骤，帮助我完成从高度集中到惬意放松的过渡，反之亦然。</p>
</li>
<li>
<p>从离开球座起我就退入了惬意的山谷，要么跟其他选手随意聊天，要么放任我的思想天马行空。不管有没有发挥出最好的水平，我一直坚持这个模式，不过，事情不顺时当然应该更加努力一点。</p>
</li>
<li>
<p>工作中如何休息</p>
</li>
<li>
<p>“我从来不在飞机上工作，不碰手机，不碰电脑，不办公，只是阅读书籍报刊，听听音乐，做那些我通常没有时间做的事。要想工作总有理由，因为事情来得总比你的处理速度快。但如果不腾出时间休息，你就会失去效率。”</p>
</li>
<li>
<p>我会把跟家人度假的日子在日历上用荧光笔圈起来。我们每月有一次四天的周末。圣诞节假期有九天，我们要么去滑雪，要么去温暖的地方度假。</p>
</li>
<li>
<p>科技革新的步伐已经超过了人们思考后果的能力。我们的思维变得机械化——追求技术和设备优化，而不是人性化，专注于最大化人性和表现。</p>
</li>
<li>
<p>从最实用的角度看，全情投入的能力取决于周期性休息的能力。</p>
</li>
<li>
<p>科技的进步永不止息。它本该帮我们更好地感知周围的事物，然而却成为现实中导致我们无法全情投入的祸因。</p>
</li>
<li>
<p>“过度工作是这个时代的可卡因。”</p>
</li>
<li>
<p>工作狂是一种强迫症，通过自我强加的要求，无法约束工作习惯，放纵自己沉迷工作，忽视一切工作以外的事情。</p>
</li>
<li>
<p>欢迎加入法国保卫战，”他露出一个促狭的微笑，“纽约有500万工作狂，你刚刚见到了仅有的4名正在康复的人。</p>
</li>
<li>
<p>研究者发现过劳死亡的5个明显诱因：
● 妨碍正常恢复和休息模式的超长时间工作
● 妨碍正常恢复和休息模式的夜班工作
● 无假期无休息的工作
● 高压无休息的工作
● 高强度体能消耗和持续高压的工作</p>
</li>
<li>
<p>一旦生活的要求超出了我们的能力，即使全情投入也达不到要求，我们该怎么办呢？</p>
</li>
<li>
<p>《心流》的作者、心理学家米哈里·契克森米哈写道，“最佳时刻，往往发生在一个人的身心为了达成艰难目标或完成有意义的事情，而自愿达到极限的时候。”</p>
</li>
<li>
<p>如果你是暴力事件的受害者，刚刚失去心爱的人，或者最近被开除，你的第一选择应该是疗伤和康复，给自己重整旗鼓的时间。重塑能力需要把自己再一次置于曾经受伤的环境。只要恢复得充足，我们的极限都会达到新的高度。</p>
</li>
<li>
<p>能力拓展的关键在于，既要超出日常的极限，又要定期休整恢复，二者兼备才能成长。</p>
</li>
<li>
<p>他只会继续逼迫极限，导致恶性循环。他需要的是排毒的时间和改变的方法，允许自己定期恢复情感和思维精力。某些层面过度训练和另一些层面训练不足都会导致同样的结果：在生活越来越高的要求下，我们的能力只会越来越弱。</p>
</li>
<li>
<p>你要记住这些要点
● 精力的消耗与恢复是人类最基本的需求。我们称其为波动。
● 波动的反面是直线：精力消耗大于恢复，或者精力恢复大于消耗。
● 压力与恢复的平衡对于个人或团体的高效表现都至关重要。
● 我们必须在四个层面都保持健康波动的节奏，即“效能金字塔”的组成部分：体能，情感，思维和意志。
● 我们培养情感、思维和意志能力的方法与体力相同，必须系统性地将自己置于超出惯常极限的压力当中，并在过后得到充分恢复。
● 拓展能力需要为了长期回报接受短期的不适。</p>
</li>
</ul>
<h2 id="第二部分精力的四个来源">第二部分 精力的四个来源</h2>
<ul>
<li>
<p>体能是燃料的基本来源，即使大部分工作时间都是坐着一动不动。它不仅是敏锐度和生命力的核心，还影响着我们管理情绪、保持专注、创新思考甚至投入工作的能力。</p>
</li>
<li>
<p>呼吸是自律的有力工具，既能集聚精力，又能带来深度放松。延长呼气时间有利于精力恢复。三次一组吸气、六次一组呼气可以使体能、思维和情感平复下来。深度、平静、有节奏地呼吸会激发精力、敏锐和专注，也能带来放松、宁静和安宁。这就是健康的终极脉动。</p>
</li>
<li>
<p>饥饿的情况下，除食物之外很难有其他事物能吸引注意力。</p>
</li>
<li>
<p>长期过度进食则是过度“恢复”的典型代表，导致身体肥胖，损害精力。高糖高脂的食物和简单碳水化合物可以产生精力，但它们与低脂蛋白和蔬菜谷物等复合碳水化合物相比，不仅转化效率低，释放的能量也不如后者丰富。</p>
</li>
<li>
<p>缓慢释放的糖分能够提供更稳定的精力。一顿低升糖指数的早餐可以提供高效并持久的精力，例如全麦食物、蛋白质和低糖水果——草莓、梨子和苹果等。相反，高升糖指数的食物如松饼和甜麦片短期内可以激发精力，但30分钟后精力水平就会显著下降。即使是传统意义上的健康早餐——不涂黄油的面包圈和一杯橙汁——升糖指数也很高，不能帮助人们较好地维持精力。</p>
</li>
<li>
<p>控制进食量在管理体重和管理精力两方面都很关键。多吃多餐跟少吃少餐一样有问题。两餐之间的零食热量应该控制在100至150卡路里之间，并选择低升糖指数的食物，例如坚果、葵花籽、水果或半条200卡的能量棒。</p>
</li>
<li>
<p>因为精力需求到夜晚会减少，新陈代谢也会减缓，因而早上多摄入热量、晚上少摄入热量是有科学道理的。</p>
</li>
<li>
<p>孩子们每日平均摄入的卡路里总量相同，结果最重的两个级别与其他人的差别在于早餐吃得少，晚餐吃得多。</p>
</li>
<li>
<p>明尼苏达大学进行了另一项研究，研究者比较了每日摄入2000卡路里的人群，一天当中进食早的人群比后半天才大量进食的人群疲劳感更少，每周还会减重2.3磅。
[插图]
我们还发现，喝水或许是最常被人忽略的体能再生方式。口渴不会像饥饿一样散发出明显的信号，等我们感到口渴的时候，身体或许已经缺水很久了。一家研究机构称，每天至少饮用1.8公斤水对维持体能有诸多好处。</p>
</li>
<li>
<p>一天当中进食早的人群比后半天才大量进食的人群疲劳感更少，每周还会减重2.3磅。</p>
</li>
<li>
<p>喝水或许是最常被人忽略的体能再生方式。</p>
</li>
<li>
<p>口渴不会像饥饿一样散发出明显的信号，等我们感到口渴的时候，身体或许已经缺水很久了。</p>
</li>
<li>
<p>大家可以设想每天额外负重50磅带给你的精力消耗。</p>
</li>
<li>
<p>乔治不吃早餐就有问题。早餐是一天中最重要的一餐，我们之前说过，高质量的早餐不仅能够提高血糖水平，还可以强力推动新陈代谢。</p>
</li>
<li>
<p>我们都赞同“80/20”的原则：如果你摄入的80%的食物都是健康而高效的，剩下的20%可以是你喜欢的任何食物，只要份量控制得当。</p>
</li>
<li>
<p>即便少量的睡眠缺失——我们称为精力再生不足——也会深刻影响力量、心血管能力、情绪和整体精力水平。</p>
</li>
<li>
<p>睡眠需求随年龄、性别、基因体能而异，但普遍的科学共识是：人体每晚需要7至8小时的睡眠才可以运转良好。还有数项研究发现，即使将人们隔绝自然光或钟表，他们还是会每24小时睡眠7至8个小时。</p>
</li>
<li>
<p>如果从更大范围来看，过去20年间，所有的大型工业事故——切尔诺贝利、艾克森瓦尔迪兹、博帕尔和三里岛事件，都发生在半夜，多数情况都是现场负责人已经长时间工作并经常睡眠不足。</p>
</li>
<li>
<p>夜晚工作的时间
越长、越连续、结束得越晚，
你会变得越低效，也更容易犯错误</p>
</li>
<li>
<p>美国国家科学院的数据显示，医疗失误很大程度都是因为医生的疲劳。每年有近10万起医疗失误导致的死亡案例，超过机动车事故、乳腺癌和艾滋病死亡人数的总和。</p>
</li>
<li>
<p>小憩就是一种精力恢复手段。斯坦皮发现，小睡片刻的工人即便不能长时间睡眠，仍可以保持超过24小时的惊人高效和敏锐。唯一需要注意的地方就是小憩需要定时，以免受试者陷入更深的睡眠中。如果小憩超出30或40分钟，许多受试者会感到眩晕无力，甚至比不睡更加疲倦。</p>
</li>
<li>
<p>第二部分就是起床。我们建议她把闹钟放得远远的，只有起床才能关掉它。我们也建议她一醒来就打开房间里所有灯，进一步刺激身体醒来。接下来，她穿上运动衫到户外快步走10～15分钟，自然光线也能促进清醒。</p>
</li>
<li>
<p>因为大多数夜猫子早起时都不饿，但是即便少量进食，对促进新陈代谢也至关重要。</p>
</li>
<li>
<p>在培养新习惯的前两周，乔迪还是溜过几次号，熬到凌晨1点才睡。但接连几天11点15分关灯，平均每天睡上7个小时，她的精力和情感都大大改善，早晨起床也变得容易了。</p>
</li>
<li>
<p>下午3点或4点是次昼夜和昼夜节律的最低点。日本睡眠研究员辻洋一和小林利纪将它命名为“极限点”，即一天中最疲倦的时刻</p>
</li>
<li>
<p>虽然日间休息对于大多数职场人过于奢侈，但短暂休息确实利于长时间保持精力。我们发现，白天能真正休息片刻的人晚间的精力也仍旧高涨。</p>
</li>
<li>
<p>布鲁斯对父亲角色缺失带给他的影响深有体会。于是他找到我们，希望我们能帮他建立平衡的生活，并明确指出不愿牺牲自己所爱的工作，损害工作表现</p>
</li>
<li>
<p>当我们问布鲁斯，工作之外哪种活动能让他真正放松，他第一个想到的是擦鞋。</p>
</li>
<li>
<p>他很喜欢店里的一位擦鞋匠，那是一位70多岁的老人，很会讲故事。步行到擦鞋店，接受擦鞋服务，与老人展开愉快的对话，布鲁斯在这20分钟里感到了单纯的快乐。</p>
</li>
<li>
<p>即便适度锻炼有诸多益处，大多数美国人还是几乎不锻炼。原因很简单。提升力量与耐力需要我们踏出舒适区，体验不适的感觉，并且需要持续一定时间才能见效。但大多数人在看到明显的效果之前就放弃了。</p>
</li>
<li>
<p>如果加入休息时间，身体可以完成更高强度的工作。</p>
</li>
<li>
<p>研究员发现一系列短时间、高强度的有氧练习——维持60秒左右——加上完整的有氧恢复过程，对于受试者有出人意料的积极影响。只需8周时间，受试者的心脑血管健康水平显著提升，心率变化减少，情绪得以改善，免疫力提高，舒张压也降低不少。</p>
</li>
<li>
<p>间歇训练可以增大精力的容量，
使身体可以承担更多压力，
并且更加高效地恢复</p>
</li>
<li>
<p>对需要坐在办公桌前工作的大批白领来说，日常锻炼的缺乏阻碍了机体的自然增强，导致年龄增长后，大多数人应对挑战和压力的能力都逐渐下降。</p>
</li>
<li>
<p>所有受试者需提供唾液样本，以便追踪他们在重大事件之前、当中及事后的压力荷尔蒙水平。</p>
</li>
<li>
<p>相反，卧床休息还会延缓康复过程，在某些病例中还会给患者造成更大损伤。这一结论还适用于长期以来一直鼓励卧床休息的病症，包括背痛、心脏病恢复及急性传染性肝炎等。</p>
</li>
<li>
<p>定期锻炼可以缓解他的紧张感，帮助他更好地控制情感。</p>
</li>
<li>
<p>养成健身习惯的诀窍是由浅入深。</p>
</li>
<li>
<p>在新的健身计划里，他可以慢慢提高锻炼的强度，不至于刚迈出一步就想放弃。第二周，他开始每隔一天变换不同的心率区间，某次将心率保持在100至130之间，下次提升至100～140的灵活区间。渐渐他需要慢跑才能达到目标心率了。</p>
</li>
<li>
<p>弗兰克13岁的儿子喜欢骑单车。随着天气逐渐转暖，弗兰克提议他们在周六早晨一起出行。他们会骑到10英里外的小镇，吃过早餐再骑回家。弗兰克发现这是陪伴儿子的绝佳时机，于是提议他们下周继续。不需要多做考虑，单车出行变成了父子俩每周的例行活动，对两人来说这都是弥足珍贵的时光。</p>
</li>
<li>
<p>身体锻炼是思维和情感精力的极佳源泉。</p>
</li>
<li>
<p>你要记住这些要点
● 体能精力是生活最基本的精力源。
● 体能精力通过氧气和葡萄糖的化学作用获得。
● 体能精力最关键的两项调节器是呼吸和进食。
● 每天吃5～6顿低热量高营养的食物，能够为机体持续供应葡萄糖和必须的营养。
● 每天喝64盎司的水是有效管理体力的关键要素。
● 大多数人需要每晚7～8小时的睡眠，方可正常运作。
● 早睡早起可以优化效能表现。
● 间歇训练比稳态训练在锻炼体力方面更有效，在体力恢复方面更高效。
● 为了保持全情投入的状态，我们必须工作90～120分钟就休息片刻。</p>
</li>
<li>
<p>从精力角度来看，负面情感代价昂贵且效率低下。对于领导者和管理层来说，由于负面情感极易传染，如果我们激起了他人的恐惧、愤怒和戒备心，也等同于损害了他们的工作能力。</p>
</li>
<li>
<p>情商的意义在于有技巧地管控情感以保持正面积极的精力，并最终为全情投入服务。在实际应用中，自信、自控、社交技巧及共情能够牵动积极情感的“肌肉”。通俗来说，就是耐心、开放、信任和喜悦。</p>
</li>
<li>
<p>从精力角度来看，负面情感代价昂贵且效率低下。它们会快速耗尽我们的精力储备，好比一辆高油耗的汽车。对于领导者和管理层来说，由于负面情感极易传染，更是具有双倍的危险。如果我们激起了他人的恐惧、愤怒和戒备心，也等同于损害了他们的工作能力。长期的负面情感——主要是愤怒和压抑，还会导致一系列生理紊乱和疾病，小到背痛头痛，大到心脏问题和癌症。</p>
</li>
<li>
<p>长期抑郁会成倍增加患阿兹海默症的风险。</p>
</li>
<li>
<p>“我现在会有意让自己快速走出苦闷，重塑心理平衡，”他说，“尽量避免自己陷于负面的情绪中。我的目标是让身体尽快恢复正常，更加健康。”</p>
</li>
<li>
<p>当他变得急躁时，与同事沟通时也带上棱角，导致他的脾气更差。如果他被挫败感笼罩，刚到中午就感觉精力不足，缺乏工作的动力。</p>
</li>
<li>
<p>那么正面情绪能更好支配表现的证据在哪里？答案是持久性。</p>
</li>
<li>
<p>从根本上讲，康纳斯比麦肯罗更加高效地管理情感精力，因而能够长期保持高水准表现，也更享受比赛的过程。</p>
</li>
<li>
<p>员工和顶头上司之间的关系比其他因素更能决定员工的效率。盖洛普公司还进一步发现，员工的工作动力包括感受到主管或其他同事的关心、在最近7天内受到认可或表扬、以及工作环境中有人不断鼓励他们进步。换而言之，保持正面沟通是有效管理的核心。</p>
</li>
<li>
<p>在工作中的最大动力就源自老板的关心和信任。有了老板的支持，他对于自我价值越来越有信心，对待他人越来越友好，最终成为了一名成功的销售员。一次成功可以带动多次成功，并再度激发正面情绪。反之亦然。老板越来越忙，对罗杰的支持减少，对工作的享受感和安全感消失了，他的自信和投入也减弱了，最终影响了他的表现。</p>
</li>
<li>
<p>关键是要表达出你对这些活动的重视，并将投入在它们上面的时间视为神圣而不可侵犯。不仅快乐本身便是奖赏，从更实际的角度看，快乐也是维持最佳表现的重要因素。</p>
</li>
<li>
<p>心理学家契克森米哈里等发现，长时间观看电视会导致焦虑增长和轻度抑郁。相比之下，情绪恢复的来源越丰富、越有内涵，我们越能补充自己的精力储备，恢复力越好。有效的情绪再生使我们的表现更高效，在压力之下尤为明显。</p>
</li>
<li>
<p>即使在全家一起外出度假，她也总是充当导游的角色，一心游览更多的景点，而不是满足于躺在沙滩上放松一下。</p>
</li>
<li>
<p>艾丽卡其实可以在工作、生活和人际交往中变得更有效率，如果她能够在每项职责间留出空间享受一下生活，就可以补充情感精力。</p>
</li>
<li>
<p>我们问艾丽卡有没有真心喜欢的体育活动，她说小时候学过舞蹈，虽然因为芭蕾的严格训练而中止，她依旧热爱其他类型的舞蹈，比如现代舞、爵士舞和非洲舞。我们建议她每周用舞蹈课代替一些常规锻炼，最好安排在下班之后，为工作到家庭的转变做好准备。艾丽卡同意放手一试。很快，舞蹈课变成了她每周最期盼的事情，是她脱离工作的有效方式。</p>
</li>
<li>
<p>艾丽卡告诉我们，起初这些新常规让她难以接受，有种上学时翘课的感觉。但是舞蹈课、园艺和公园午餐带给她的感觉如此美妙，对她产生了莫大的吸引力。这种积极影响自然带进了她的工作中。她不再对庞大的工作量心生怨恨，开始从工作带来的思维挑战中感到另一种满足。</p>
</li>
<li>
<p>锻炼能够让他感到生活如常，并且提供情感安抚。考虑到身上的压力</p>
</li>
<li>
<p>这个过程很痛苦，让人极度悲伤、心生疲惫，但杰弗里渐渐懂得，这也是疗伤和成长的过程。</p>
</li>
<li>
<p>盖洛普公司发现，保持优秀表现的诀窍之一是在工作环境中至少交一位好朋友。一段稳固的关系包括付出与回报、倾诉与倾听、珍视他人和被人同等珍视。如果一段关系中总是付出而得不到相应的回馈，不免会感到空虚和失落。以自我为中心的关系，也称不上真正的情感关系。</p>
</li>
<li>
<p>因为她已经不再那么看重别人对她的看法，她从自己的原则里获得了勇气和精神支柱。</p>
</li>
<li>
<p>人们做出重大生活改变时，通常需要失败多次才能获得持续的成功。</p>
</li>
<li>
<p>当愤怒逐渐累积时，保罗会选择用腹部做深呼吸，放松肩膀和面部肌肉，掐断自己一触即发的情绪。当情绪逐渐平复下来，他会想办法将沮丧的感觉用一种大家更容易接受的方式表现出来——通常是自嘲的方式。
如果保罗认为有必要提出批评的意见，他会采用 “三明治”技巧。首先真诚地对该员工的良好表现给出正面评价，然后以讨论而非宣讲的形式提出批评意见——因为自己的看法或许并非完全准确，最后以鼓励结尾。用“三明治”的方式提出意见不仅让他看起来充满善意和关怀，而且更容易让员工听取他的建议，不会产生逆反心理。</p>
</li>
<li>
<p>只有接受那些看似相反的品质，不逼自己在其间二选一，才有可能获得最深刻最丰富的情感能力。情感层面的全情投入需要遵循斯多葛派哲学家的“破格文体”——美德的共同存在性。从这一角度看来，没有一种美德是不依赖其他品质而成为美德的。所有的美德都有条件。例如，毫不留情的诚实只是残酷而已。</p>
</li>
<li>
<p>你要记住这些要点
● 为了达到最佳表现，我们必须汲取愉悦、积极的情感，享受挑战、冒险和机遇。
● 正面情感精力的关键因素是自信、自控、人际关系与共情。
● 负面情感也可以维持我们的生活，但相比于正面情绪代价巨大，事倍功半。
● 在高强度压力下调动积极情感的能力是领导力的核心。
● 利用情感肌肉支配表现，需要依靠定期锻炼和间歇恢复的平衡。
● 任何带来享受、令人满足和安心的活动都可以作为情感的再生和恢复方式。
● 练习耐心、共情、自信等情感肌肉的方法与锻炼二头肌或三头肌的方法相同：越过当前的极限，留出充足的恢复空间。</p>
</li>
<li>
<p>没有什么比不能集中于手边的工作更能损害工作表现和投入程度了。</p>
</li>
<li>
<p>灵感为何往往发生在最不刻意寻找答案的瞬间。</p>
</li>
<li>
<p>越来越多证据表明，大脑的运作方式也类似肌肉——积极使用能够提升能力，使用不足就会萎缩。</p>
</li>
<li>
<p>神经学家理查德·雷斯塔克所说：“不管你处于哪个年龄阶段，都可以持续地优化大脑，与其他身体器官不同，肝脏、肺和肾使用过度会发生损耗，而大脑只会因为使用而日益敏锐，越磨越利。”</p>
</li>
<li>
<p>值得注意的是，这个神奇的效果在人们终止慢跑锻炼时几乎就立刻消失了。</p>
</li>
<li>
<p>每当人们学习新事物，都会建立起大脑细胞新的联结。</p>
</li>
<li>
<p>持续挑战大脑能够预防老龄带来的退化。学习新的体育活动会帮助我们打造新的肌肉，锻炼不同的身体部位，学习新的电脑技能、新课程、甚至每天记几个新单词都能帮助我们锻炼思维肌肉，更好地为效能表现服务。</p>
</li>
<li>
<p>看似紧急的琐事总会盖过那些非常重要却不太急迫的事。</p>
</li>
<li>
<p>你要记住这些要点
● 我们使用思维精力规划生活、集中精力。
● 最有益于全情投入的思维精力是现实乐观主义——看清事物真相，却仍朝目标积极努力。
● 优化思维精力的关键在于思想准备、构建想象、积极的自我暗示、高效的时间管理和创造力。
● 转换思维频道可以激活不同的大脑部分，提升创造力。
● 身体锻炼可以助长认知能力。
● 思维消耗与恢复的平衡可以帮助思维精力达到最大。
● 如果缺乏某种思维能力，需要系统地加以锻炼，不断突破自己的舒适区并充分休息。
● 持续挑战大脑可以有效预防老龄化思维衰退。</p>
</li>
<li>
<p>尼采有句名言 ：“知晓生命的意义，方能忍耐一切。”
任何能够点燃人类精神的事物都有助于全情投入、促进最佳表现。意志精力的关键动力在于性格品质——一个人如果有自己的人生目标，他的勇气和信念，即使面对艰难困苦和个人牺牲也会在所不惜。意志精力由激情、奉献、正直与诚实支持着。</p>
</li>
<li>
<p>意志精力是一股掌管所有维度行为的独特力量。</p>
</li>
<li>
<p>人们往往在悲剧发生之后才会意识到意志精力的重要性。</p>
</li>
<li>
<p>想要继续陪伴家人，寻找此类病症的治疗方法，继续为这个世界贡献力量。这种强烈的意愿帮助里夫振作起来，在体能严重不足、极易产生脆弱绝望情绪的情况下，最终依靠希望、乐观恢复了专注和清晰的思维。意志精力有效地挽救了他的生命。</p>
</li>
<li>
<p>当抽烟关系到一件更为重大的事情——未出世孩子的健康，她就从专注的目标中获得了更多的力量。一旦孩子出生，使命感消失，她就很难经得起烟草的诱惑。在认知层面意识到吸烟有害健康，在情感层面为吸烟的行为感到惭愧，甚至在身体层面感受到吸烟的负面影响，都不足以构成安改变行为的动机。</p>
</li>
<li>
<p>知晓生命的意义方能忍耐一切</p>
</li>
<li>
<p>弗兰克尔是纳粹集中营中幸存的心理学家，他创作了《活出生命的意义》这本经典巨著。书中他引用了尼采的名言：“知晓生命的意义，方能忍耐一切。”弗兰克尔也描述了在不断有人死去的环境中，这个认知如何挽救了他的生命：
生而没有意义的人是痛苦的，没有目标、没有目的、无需继续忍受。他很快就会迷失。我们的人生态度需要从根本上转变。我们既要自己学着转变，也要向绝望之人伸出援手，告诉他我们对生活的期待其实并不重要，重要的是生活于我们有何期望。我们要停止追问生命的意义所在，每时每刻提醒自己接受生命的检视。我们的回应不仅体现在言语和冥想中，还要贯穿我们的行为举止。生命的终极意义是担起责任，找寻难题的答案，并且完成生命为每个人设定的任务。</p>
</li>
<li>
<p>弗兰克尔认为，我们必须创造出自己生活的意义，即积极拓展意志能力。这样做会毫无疑问地引起不适。“思维健康需要保持一定的张力，它存在于已取得的和未完成的目标之间，存在于个人现状和理想自我的差距……人们需要的并非是毫无紧张感的环境，而是为了自己选择的有价值的目标努力付出。”</p>
</li>
<li>
<p>每个人都拥有许多未知的潜力，只能在困境中才会激发它们。</p>
</li>
<li>
<p>在思维中提前预演可以有效缓解焦虑，不被自我意识或尴尬的念头干扰。</p>
</li>
<li>
<p>这件事需要我亲自来做吗？</p>
</li>
<li>
<p>如果正直是关于遵守承诺，诚实则是对自己和他人说真话。</p>
</li>
<li>
<p>你要记住这些要点
● 意志精力为所有层面的行为提供动力，带来激情、恒心和投入。
● 意志精力源于价值取向和超出个人利益的目标。
● 品质——依照价值取向生活的勇气——是意志力量的关键因素。
● 最强大的意志力量是激情、投入、正直和诚实。
● 意志精力的消耗与再生密不可分。
● 意志精力通过超越自身的目标和自我关心间的平衡得以维持。
● 意志功课会同时消耗和产生精力。
● 拓展意志力量与拓展体能的原理相同，都要突破我们的舒适区域。
● 人类的意志精力甚至可以弥补严重不足的体能精力。</p>
</li>
</ul>
<h2 id="第三部分精力管理训练系统">第三部分 精力管理训练系统</h2>
<ul>
<li>
<p>树木若要在强风地区存活，一定要把根扎深。</p>
</li>
<li>
<p>人生目标是一种独特的精力源。</p>
</li>
<li>
<p>● 每天早晨上班时你的兴奋度是多少？
● 享受做事有多大程度是因为事情本身而非它带来的回报？
● 你认为自己对价值取向负有多大的责任？</p>
</li>
<li>
<p>网球选手阿什所说：“我们依生活所赐而谋生，依己之付出而生活。”</p>
</li>
<li>
<p>5条重要品质——恒心、正直、卓越、创新和投入。</p>
</li>
<li>
<p>当目标感从消极流向积极、从外部流向内部、从自己流向他人，它就成为生活中最强大也最持久的精力源。</p>
</li>
<li>
<p>设想一下，如果你坐在一艘行驶在海上的小船里，船底突然开始漏水，你的目的肯定是阻止小船沉下去。但如果你一直忙着舀水，肯定无暇顾及小船的航向。生活也是如此。当我们忙着填补漏洞，不让自己沉底，就没有多余精力探寻更深层的意义了。</p>
</li>
<li>
<p>在寻找人生目标的过程中，他发现，传授知识和学习知识能带给他最深的满足感。</p>
</li>
<li>
<p>● 如果现在就是人生的尽头，你学到的最重要的3件事是什么？为什么它们如此重要？
● 想想你最敬重的一个人，描述他/她身上你最钦佩的3种品质。
● 你能做到的最好的自己是什么样的？
● 你希望你的墓志铭如何总结你的人生？</p>
</li>
<li>
<p>体现在行为中的价值观才是美德</p>
</li>
<li>
<p>只要我们坚持自己的价值观，仍然可以带着自信力量和尊严做出正确的选择，不被愤怒、怨恨和不安的情绪困扰。</p>
</li>
<li>
<p>你要记住这些要点
● 从有记载开始，追寻使命感就是人类文明长河中必不可少的主题。
● “英雄之旅”需要调动、培养和更新我们最重要的资源——精力，才能协助我们完成最重要的使命。
● 如果缺乏强烈的使命感，我们很容易迷失在生活无常的风暴里。
● 当使命感从负面变成正面、从外部转向内部、从自我变成他人时，才能为我们提供更强大、更持久的精力。
● 负面目标源自缺陷，且充满防备性。
● 内部动机指的是我们对某件事物本身渴望，渴望仅仅源于其带给我们的满足感。
● 价值观能够提供实现目标的精力。它会带来精力管理标准的变革。
● 在行动中体现的价值叫作美德。
● 基于明确的价值观的设想蓝图可以指导我们如何投入精力。</p>
</li>
<li>
<p>如果不能吹散迷雾、擦亮镜子，诚实地看待自己，改变便无从谈起。</p>
</li>
<li>
<p>为了发挥出最优水平，我们必须学会放下负面的情绪；一旦逃避痛苦的现实变成了生活常态，最终的苦果还是要由我们自己承担。拒绝现实好似竖起一根手指支撑堤坝——当压抑的情绪最终释放，可怕的后果将四处泛滥，引起焦虑、抑郁或麻木，损害工作表现，摧毁婚姻关系，甚至导致身体上的疾病。</p>
</li>
<li>
<p>令人不快的现实并不会因为我们不关注它而自行消失。</p>
</li>
<li>
<p>保持乐观需要勇气，不仅因为人生有限，还因为在这有限的过程中，挑战、阻碍和挫折总是无法避免。</p>
</li>
<li>
<p>“所有形式的上瘾都是有害的，”精神分析专家卡尔·荣格写道，“不论这种致幻剂是酒精、吗啡还是理想主义。”</p>
</li>
<li>
<p>文饰也是一种常见的抵抗事实的手段。某些客户可能会承认自己粗暴、急躁或者吹毛求疵，但下一句话就会用一个看似冠冕堂皇的借口解释自己的行为，例如事出紧急之类的。</p>
</li>
<li>
<p>为任何情况做好最坏的打算也属于扭曲事实的一种，因为此时我们眼中的事实并非事实，而是透过狭隘的悲观镜头看到的情景。</p>
</li>
<li>
<p>过度补偿——将不被接受的情感如贪婪转化为过度慷慨——是一种更加积极的防卫方式，即便是这样，行为背后的负面冲动依然存在。</p>
</li>
<li>
<p>诚实地看待自己的行为仅仅是第一步，为自己的选择负起责任同样重要。真相或许能还你自由，却替代不了你接下来要做的事情。</p>
</li>
<li>
<p>出于对内心深处软弱无力的恐惧，恃强的人会蛮横粗暴地对待他人。因为不愿承认内心的不足，成功的领导者永远都在吹嘘自己的成就，炫耀自己认识多少大人物。</p>
</li>
<li>
<p>“邪恶的本质缺陷并非是罪恶本身，而是自我否认。”《少有人走的路》的作者斯科特·派克写道，“邪恶攻击他人，而不承认自己的失败……因为必须否认自己是坏人，所以只能把别人当作坏人。”</p>
</li>
<li>
<p>若困在狭隘的自我视角中，我们也不会注意到或有意培养自己的能力。我们或许可以尽力压制自己令人反感的一面，但同时也很难认可自己的优秀品质。</p>
</li>
<li>
<p>认识你全部的自己</p>
</li>
<li>
<p>“我们只有满怀震惊地看到真实的自己，”精神学家爱德华·惠特蒙写道，“而不是看到我们希望或想象中的自己，才算迈向个人生活现实的第一步。”</p>
</li>
<li>
<p>使用许多手段否认生活中的不如意或逃避为此承担责任。责怪他人并将自己看作受害者是一种常见的方式。</p>
</li>
<li>
<p>当罗杰因为某些行为产生负罪感，或被处境压得喘不过气来，就会走向另一个极端，看到黯淡无光、自我贬低的形象，一心只想要缓解不适，于是新一轮的自我欺骗又开始了。最重要的是，他总是选择否认。</p>
</li>
<li>
<p>为了尽快获取直观感受，请拿出一张纸、一支笔，用至少30分钟回答以下问题：
● 从1到10，你如何为自己在工作中的投入程度打分？是什么阻碍了你的表现？
● 你的日常行为有多少符合你的价值观，并为你的使命服务？脱节的地方在哪里？
● 你的工作表现多大程度上反映了你的价值观、符合自我构想？在家的表现呢？社区中的表现呢？哪里做得不足？
● 身体方面的日常习惯——饮食、锻炼、睡眠、平衡压力——如何有助于你的核心价值观？
● 你的情感回应在所有情况下如何符合你的价值观？在工作中与在家里是否程度不同？如果答案是肯定的，为什么会出现这样的情况？
● 你对任务清晰的轻重缓急区分和持续的专注力表现如何？优先级的事情多大程度上符合你认为最重要的事情？</p>
</li>
<li>
<p>自我欺骗的另一种形式，便是认定自己的观点就是事实。实际上观点不过是一种解读，是我们自主选择的看待事物的角度。如果没有意识到这一点，人们就会围绕片面的“事实”进行二度创作，最终将自己的版本当作事实。然而，看似真实的东西未必真实。虽然这种情况下的现实有可能是不可更改的，然而我们赋予它的意义却全由我们自己决定。</p>
</li>
<li>
<p>正如心理学家马丁·赛格利曼所说：“当我们的自我解读采用个人的、消极的和渲染的角度（都是我的错……结果总是这样……会影响我做一切事情），我们会放弃并失去动力。若能采取相反的角度，我们会受到鼓舞，获得精力。”</p>
</li>
<li>
<p>自我意识可以从“我就要陷入焦虑中了”向更为冷静的“焦虑正在试图控制我”的角度转变。从前一种角度看，我们是受害者；从后一种角度看，我们依然拥有决策和行动的能力。</p>
</li>
<li>
<p>通过我们的细心观察，朱莉显然害怕自己犯错，因此对批判有激烈的抵抗心理。即使她并不自知，但遇到与她相反的观点仍让她感觉软弱无力，对她的自尊也是一种威胁。结果朱莉将大量精力用来捍卫自己的观点。即便她聪明又机敏，也无法脱离自己的视角看待问题。</p>
</li>
<li>
<p>面对真相需要保持开放的心态，认同自己被蒙蔽的可能性。</p>
</li>
<li>
<p>最成功的企业并非是由最有魄力或最聪明的领导者打造的，但成功企业的领导人都完美地融合了两种看似矛盾的品质：坚定的决心和谦逊。
面对逆境，坚持不懈是通向成功的必经之路，这点很容易理解。但是最成功的领导人是如何能做到谦逊、不求闻达、乐于分享的呢？从一定程度上看，他们的谦逊给予了他人成长的空间。他们本能地意识到，任何大型公司的成功都取决于是否给予员工归属感，是否让他们感觉自己受到重视和有价值。真诚的谦逊也使得这些领导者更容易包容异见，承认自己的想法未必一贯正确。他们拥有足够的自信，即使偶尔犯错也无损于他们的形象。如果我们不在维持表象上投入过多精力，就更有可能看清事实和真相，从中学习和成长。</p>
</li>
<li>
<p>我们的想法也需要在实践中打磨，在质询中进化，在不同的观念中丰富壮大。</p>
</li>
<li>
<p>爱德华·惠特蒙说：“如果让一个人描述他最蔑视、最不能忍受、最痛恨和最难以共处的性格类型，他会写出自己性格中最压抑的一面……这些品质之所以难以忍受，正是因为它们代表着他最想否认的自己。因为我们无法接受自身的某些品质，才会难以与带有相同品质的他人相处。”回想一下你特别讨厌的某个人。他/她身上什么性格让你最反感？然后你应该问问自己：“我是那样的吗？”</p>
</li>
<li>
<p>自爱并非易事……因为它意味着爱全部的自我，包括内心和外界都不能接受的阴影部分。</p>
</li>
<li>
<p>《平静祷文》是精力管理理想状态的完美入门指导：“上帝，请赐予我平静，接受我无法改变的；请给予我勇气，改变我能改变的；请赋予我智慧，分辨这两者的区别。”我们耗费巨大的精力担忧无法控制的人和事，而更好的选择是，将精力集中在可以切实改变的事物上。面对现实会帮助我们认清两者的区别。</p>
</li>
<li>
<p>你要记住这些要点
● 面对真相能够释放精力。它发生在确立目标之后，是通往全情投入的第二阶段。
● 逃避真相会消耗大量精力。
● 我们会自我欺骗以保护自尊。
● 有些真相太难以承受，无法一次性消化。
● 不带怜悯的诚实是种残酷，对人对己均是如此。
● 我们不愿承认自己身上具有某些品质，却仍然会不自知地表现出来。
● 自我欺骗的常见形式是认定自己的看法就是真相，而它不过是我们解读世界的方式。
● 面对真相需要我们保持开放的心态，承认自己被蒙蔽的可能性。
● 过于坚持自己的一面之词是种假象，也是危险。我们都是光明与暗影、美德与恶行的混合体。
● 承认自己的局限性能帮助我们降低自我防御，增强积极精力。</p>
</li>
<li>
<p>所有表现卓越的人都依靠积极的仪式习惯管理精力和规范行为。如果你一直久坐不动，打算开始锻炼身体，你可以最开始每周3次、每次步行15分钟，然后逐周增加步行时间或加快步伐。</p>
</li>
<li>
<p>他的锋芒来自日常的磨练。</p>
</li>
<li>
<p>伦德尔每天都要进行一系列思维专注练习，提高专注力，并不断加入新的内容，确保大脑始终面对挑战。</p>
</li>
<li>
<p>不管面对什么样的事情，他要么全情投入，要么有策略地离开。</p>
</li>
<li>
<p>麦肯罗曾对他如此评价：“可能我并不喜欢伦德尔，但我还是要肯定他的努力。体育界没人像他一样刻苦……伊万或许不是最有天赋的选手，但他在身体和思维上的付出是杰出的，他比所有人都努力……他靠不断练习获得成功。”</p>
</li>
<li>
<p>人类行为只有5%是受自我意识支配的。我们是习惯的造物，因而我们的行为有95%都是自动反应或对于某种需求或紧急情况的应激反应。</p>
</li>
<li>
<p>习惯好比船锚，它确保我们即使在最艰苦的环境里也会依循价值观支配精力。每个人都会经历生活的风暴——疾病苦痛，失去至爱，遭遇背叛和失望，生活困窘，失业等。这些情况正是考验品格的时机，此时精力使用的选择就变得尤为重要。</p>
</li>
<li>
<p>“每次我们参加一项仪式习惯，都是在表达自身信仰，无论是否以语言的形式呈现。”埃文·英伯-布莱克和简宁·罗伯茨在《我们时代的仪式习惯》一书中写道。“每晚坐下来一起享受晚餐的家庭，在无声而明确地传达着他们相信家人共度时间的重要性……夜晚的床头读书时间让父母和孩子有机会分享彼此事情的看法，这种纯粹的行为表示相信亲子关系可以带来温暖、爱护和安全。”</p>
</li>
<li>
<p>高度规划的日常习惯很容易被他人看作死板极端并置之不理。我们建议你思考一个或一群你钦佩的人物，或者审视自己在生活中最高效的领域。如果跟我们大部分客户一样，你很可能已经在不自知的情况下养成某些行为习惯了。可能是个人卫生习惯，规划全天的习惯，或者陪伴家人的习惯。习惯并不会妨碍自主性，而是提供一个舒适安全的氛围让我们自由地发挥、勇敢地冒险。</p>
</li>
<li>
<p>仪式习惯的持久力来源于精力节约的本质。“我们不该培养先思后行的习惯，”哲学家怀特海于1911年写道。“反过来才是正确的。当人们不靠思索便能做出的行为越来越多，文明才得以进化。”意愿和自律推着我们行动，而悉心养成的仪式习惯会吸引我们做出行动，一旦做不到还会产生不适感，例如刷牙，沐浴，早晨吻别爱人，观看孩子的足球比赛，或者周末给父母打电话。如果我们需要一个能够持久的新行为，肯定不能花太多精力来维持它。</p>
</li>
<li>
<p>在任何表现至上的领域，压力与恢复的平衡都至关重要。我们越能高效恢复精力，越能尽快储备资源以备调用。</p>
</li>
<li>
<p>我们连去厕所都没有时间，”他们说，“哪里来的时间恢复？”我们向他们解释了运动员是如何高效地恢复精力的，指出60～90秒的间歇休息也同样有效。</p>
</li>
<li>
<p>彼得一直以来习惯于长时间坐在电脑前的工作方式，但他也承认很难保持注意力，尤其是在下午。我们要帮助他完成从马拉松选手到短跑选手的思想转变，为此，我们一起讨论了几种有条理的休整方式，穿插在他高度紧张的工作中。</p>
</li>
<li>
<p>第三段工作时间从10点半到12点，结束后他会先外出慢跑，然后回来吃午餐。经过这4.5小时的集中工作，他的产出是往日10个小时的两倍。下午他会读书、研究资料，或者处理其他事情。因为对一天的成果非常满意，晚上他也能够更加全心全意地陪伴家人。</p>
</li>
<li>
<p>成功的管理者、经理和销售员都有自己的“战前准备程序”，可以是通过散步调整状态，用腹式呼吸放松身体，或预演讲话要点，或围绕预期目标排练话术。</p>
</li>
<li>
<p>成功建立有效的精力管理仪式习惯需要依靠多种因素，但最核心的，仍然是30天或60天的养成周期中对于时间和行为的准确规划。</p>
</li>
<li>
<p>众多论据充足的研究都能证明，将时间和行为精准化和具体化，会在很大程度上增加成功的可能性。</p>
</li>
<li>
<p>某项研究要求参与者写一篇圣诞前夜的规划报告并在48小时内提交。其中一半参与者被要求明确他们准备写作的时间和地点，另一半参与者则不作要求。结果第一组有75%的人都按时交上了报告，第二组只有三分之一做到了按时提交。</p>
</li>
<li>
<p>为了达到激励效果，先给他们看了一组健身能显著降低冠心病发病率的数据，学生参与度从29%上升至39%。</p>
</li>
<li>
<p>如果人们提前规划每顿饭的具体内容，则更可能摄入健康、低热量的食物。</p>
</li>
<li>
<p>习惯的精准和具体化确保我们能够顶着压力完成任务。</p>
</li>
<li>
<p>如果在放松状态或毫无压力时不能完成任务，那么在高度压力或面临危机时就更不可能完成。建立精准的仪式习惯能够抵抗压力产生的精力分散和恐惧。“在不利情况下，人们思考得越少，得到的结果越好，”沃什说，“当你处于压力之下，思维会给你添乱。你越是保持专注，越能更好地处理突发情况。”</p>
</li>
<li>
<p>“我发现良好的晨间习惯——冥想或安静地阅读可以为一天定下良好的基调。每天早上我会用半个小时阅读《圣经》，尤其是《箴言》，里面蕴含了如此多的智慧。如果这天遇到了令人沮丧的情况，我就会回想早晨阅读的内容，例如箴言16章32节，‘不轻易发怒，胜过勇士；治服己心，强过夺城。’”</p>
</li>
<li>
<p>最重要的并不是我们沟通生命意义的方式，而是要养成重拾生命意义的习惯。</p>
</li>
<li>
<p>而且由于他把善良当作重要的价值观，他对自己也非常不满意。</p>
</li>
<li>
<p>将注意力放在自己想要有的行为而不是想要抵制的行为上。</p>
</li>
<li>
<p>我们要求乔治面带微笑，即使最初是装出来的微笑。有相当多的证据显示，微笑能够缓解焦虑，防止人们做出“非战即逃”的反应。毕竟，谁能够一边微笑一边生气呢。</p>
</li>
<li>
<p>依我们的经验，你需要慢慢养成习惯——一次只关注一项重大变化，每一步都设定一个可行的目标。</p>
</li>
<li>
<p>规划方式　它的形式丰富多变，但本质相同：每天设定养成习惯的任务，重复预想，明确目标，设定自己的相应行为。</p>
</li>
<li>
<p>她每天都要温习自己最重要的价值观：耐心，尊重他人，心怀感激和谦逊。</p>
</li>
<li>
<p>在植根于深层价值观的精力管理准则的引导下，建立投入的规则，能够避免消极情绪。</p>
</li>
<li>
<p>记录进展　若想变革持久，第二个关键要素是每天进行行为自查。自查可以帮助你看到个人预想和实际行为的差距。</p>
</li>
<li>
<p>给自己施压并不意味着在达不到目标时批判或惩罚自己。负面动力效果短暂，并且会耗费精力。</p>
</li>
<li>
<p>你要记住这些要点
● 仪式习惯是有效的精力管理工具，可以协助我们完成任务。
● 仪式习惯帮助我们将价值观和优先级融入生活的各个方面。
● 所有表现卓越的人都依靠积极的仪式习惯管理精力和规范行为。
● 个人意愿和自制力之所以有局限性，是因为每一次自控都会耗费有限的资源。
● 我们可以通过养成自发的仪式习惯来抵消主观意愿和自制力的局限性。
● 仪式习惯最重要的角色是确保精力消耗和更新达到有效平衡，以更好地为全情投入服务。
● 我们面对的压力和挑战越大，越需要细致谨慎的仪式习惯。
● 精确性和具体性是在30～60天的周期里养成习惯的关键。
● 尽量避免做出快速消耗自制力的选择。
● 为了确保持久的变革，我们需要养成一系列仪式习惯，一次只作一项重大改变。</p>
</li>
<li>
<p>他最终树立了自己的价值观，构建了目标蓝图，并且受益匪浅。面对困难抉择时，它们既是动力的源泉又是可靠的试金石。</p>
</li>
<li>
<p>因为客户只有对现状感到不适时才会产生改变的意愿。</p>
</li>
<li>
<p>我们告诉他，他的种种状况——升高的血压、较高的酒精摄入量、长期压力过大、轻度吸烟、高胆固醇和超重——极易诱发早期心脏病时，他显得非常震惊。</p>
</li>
<li>
<p>虽然罗杰承认自己有时会暴躁、消极，但他坚信自己已经很好地将这些情绪隐藏起来，表现出的都是尊重他人、平易和善的一面。</p>
</li>
<li>
<p>他听到女儿的话时仿佛在心上插了一把刀，意识到自己反应过激了，把工作中的沮丧和焦虑都发泄了在女儿身上。</p>
</li>
<li>
<p>1. 与所爱之人组成家庭，把家人放在首要位置。身外之物总是来了又走，只有亲密关系才会永恒。
2. 努力工作，高标准要求自己，永远不要在能力范围内退而求其次。
3. 尊重并善待他人。</p>
</li>
<li>
<p>培训结束后，罗杰在登机返家之前检查了积累下来的工作。 134封邮件， 45条语音信息和一堆等他解决的小问题。令他失望的是，回到家的那个晚上他几乎没时间问候妻子和孩子们，简单打了招呼就钻进了家里的办公室开始救火。</p>
</li>
<li>
<p>锻炼之后他很疲倦，精神却很振奋。</p>
</li>
<li>
<p>在公园停下成为罗杰的习惯，帮助他完成从工作到家庭的转变。每一次车子停下来，他就将工作抛之脑后，回想起家人对他多么重要，回想起自己希望如何陪伴家人。几年以来，回家对罗杰来说仿佛是从一个漩涡掉入另一个漩涡，他眼中只有无穷无尽的索求；而现在，他开始体会到家庭带来的积极精力。</p>
</li>
<li>
<p>他决定每天给她们每人写一条留言，从门缝底下塞进去。这是与女儿们建立联系的方式，即使他不能时时刻刻见到她们，也要让女儿知道她们对自己的生命很重要。</p>
</li>
<li>
<p>在接下来的几个月里，罗杰还建立了另外两个仪式习惯。第一个是在上班途中最后15分钟里提前规划好一天的任务，重温自己的价值取向。第二个是晚上下班途中给自己关心的人打电话——父母，兄弟姐妹，或者朋友。</p>
</li>
<li>
<p>建立健身、饮食和陪伴家人的习惯是罗杰前两个月的首要任务。即使这些习惯并不与工作直接相关，但它们不但改善了罗杰的体能和家庭关系，还提高了他在办公室的效率。因为心态变得积极、精力更加充沛，罗杰在工作中也收起了棱角，注意力更加集中了，尤其是健身过后的下午。</p>
</li>
<li>
<p>工作事务划分优先级。</p>
</li>
<li>
<p>现在，就像其他客户一样，罗杰决定将这些应答事务推后，先来攻克至少一件重要的、长期的任务。</p>
</li>
<li>
<p>第二个仪式习惯是严格执行间断休息。</p>
</li>
<li>
<p>为了在压力下表现更从容，他决定建立一个新仪式习惯，承担不良行为的责任，更好地展现出领导力。</p>
</li>
<li>
<p>我们先请罗杰描述出他是如何感受到压力的。他说心中首先升起一股焦虑，然后出现一堆批判的想法，以及想要控制局面的强烈欲望。我们建议，如果他下次处于这样的情况，就进行几次腹部深呼吸。我们还请他回想一下自己钦佩的某个人的危机处理方式，他选择了他的老板。最后，我们让他将老板当作榜样，参考他的方式处理问题。</p>
</li>
<li>
<p>在罗杰看来，从容应对压力是最令他满足也最有挑战性的改变。</p>
</li>
<li>
<p>因此他建立了第二项仪式习惯来应对“紧急情况”。不管当时心情如何，他都会安静地点点头，说“我了解了，不过我需要一点时间想一下”。他的首要任务是不在激怒或急躁的情况下做出回应。</p>
</li>
<li>
<p>他态度越温和，言语越鼓励他人，下属们的反馈越多。</p>
</li>
</ul>
<h2 id="实用资料">实用资料</h2>
<ul>
<li>
<p>管理好精力而非时间才是高效表现的关键。</p>
</li>
<li>
<p>. 四种精力来源：
● 体能能力取决于精力的储量。
● 情感能力取决于精力的质量。
● 思维能力取决于精力的专注度。
● 意志能力取决于精力的强度。</p>
</li>
<li>
<p>最优表现需要：
● 容量最高的精力
● 质量最优的精力
● 最集中的精力
● 最高强度的精力</p>
</li>
<li>
<p>10. 全情投入的障碍：任何会阻碍、扭曲、浪费、削弱、消耗和污染精力储备的不良习惯。</p>
</li>
<li>
<p>终身精力目标：为真正重要的事物尽己所能提供最好的精力。</p>
</li>
<li>
<p>实际年龄无法更改，生理年龄却可以通过训练加以改变。
● 生理年龄（从表现能力反映出的年龄）由有效消耗和恢复精力的能力决定。</p>
</li>
<li>
<p>长期处于压力之下得不到恢复，或长期处于脱离状态不承担压力，都会削弱精力的容量。
● 体育界将以上两种情况称为过度训练和训练不足。</p>
</li>
<li>
<p>若要维持上佳表现，最好拥有短跑运动员而不是马拉松运动员的思维状态。
● 在长达30～40年的职业生涯中，将工作时间分成90～120分钟的片段并加入短暂的休息时间，能够使人们发挥出最优水平。</p>
</li>
</ul>
<p>2022/11/20 发表想法
说得真好。</p>
<ul>
<li>
<p>大多数人在体能和意志上训练不足，却在思维和情感上训练过度。</p>
</li>
<li>
<p>大多数人在体能和意志上训练不足，却在思维和情感上训练过度。</p>
</li>
<li>
<p>领导者是企业精力的统筹人。为了共同的公司目标，他们需要从所有个体细胞中吸收、引导、沟通、更新并投入精力。</p>
</li>
<li>
<p>伟大的领导者认识到高水平的正精力是高效表现的动力，并身体力行这一原则。</p>
</li>
</ul>
<p>2022/11/20 发表想法
最重要的体能精力管理方法
1. 早睡早起
2. 坚持在同样的时间睡觉和起床
3. 每天5～6次少量进食
4. 每天吃早餐
5. 饮食健康，营养均衡
6. 尽量减少单糖化合物摄入
7. 每天饮用1360～1800克的水
8. 工作时每90分钟休息片刻
9. 每天进行适量身体活动
10. 每周至少两次心血管功能间断训练、两次力量训练</p>
<ul>
<li>最重要的体能精力管理方法</li>
</ul>
<p>1. 早睡早起
2. 坚持在同样的时间睡觉和起床
3. 每天5～6次少量进食
4. 每天吃早餐
5. 饮食健康，营养均衡
6. 尽量减少单糖化合物摄入
7. 每天饮用1360～1800克的水
8. 工作时每90分钟休息片刻
9. 每天进行适量身体活动
10. 每周至少两次心血管功能间断训练、两次力量训练</p>
<ul>
<li>最重要的体能精力管理方法</li>
</ul>
<p>1. 早睡早起
2. 坚持在同样的时间睡觉和起床
3. 每天5～6次少量进食
4. 每天吃早餐
5. 饮食健康，营养均衡
6. 尽量减少单糖化合物摄入
7. 每天饮用1360～1800克的水
8. 工作时每90分钟休息片刻
9. 每天进行适量身体活动
10. 每周至少两次心血管功能间断训练、两次力量训练</p>
<ul>
<li>
<p>若此刻便是人生尽头，列出你学到3条最重要的道理，以及它们之所以重要的原因。
1. 与你所爱之人组成家庭，并将家庭放在首要地位。
2. 努力工作，高水准要求自己，永远不要在能力范围内退而求其次。
3. 尊重他人，待人友善。</p>
</li>
<li>
<p>工作中，我要求自己做到卓越。作为领导，我要亲身示范自己的每条价值观，尤其是善良、关心他人和正直。我要让他人感到备受关怀，相信我可以完成对他们的承诺。不论做任何事情都要全心全意。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《实践论》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%AE%9E%E8%B7%B5%E8%AE%BA/</link>
      <pubDate>Wed, 12 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%AE%9E%E8%B7%B5%E8%AE%BA/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;马克思以前的唯物论，离开人的社会性，离开人的历史发展，去观察认识问题，因此不能了解认识对社会实践的依赖关系，即认识对生产和阶级斗争的依赖关系。&lt;/li&gt;
&lt;li&gt;人的社会实践，不限于生产活动一种形式，还有多种其他的形式，阶级斗争，政治生活，科学和艺术的活动，总之社会实际生活的一切领域都是社会的人所参加的。因此，人的认识，在物质生活以外，还从政治生活文化生活中（与物质生活密切联系），在各种不同程度上，知道人和人的各种关系。&lt;/li&gt;
&lt;li&gt;马克思主义者认为人类社会的生产活动，是一步又一步地由低级向高级发展，因此，人们的认识，不论对于自然界方面，对于社会方面，也都是一步又一步地由低级向高级发展，即由浅入深，由片面到更多的方面。&lt;/li&gt;
&lt;li&gt;人们要想得到工作的胜利即得到预想的结果，一定要使自己的思想合于客观外界的规律性，如果不合，就会在实践中失败。人们经过失败之后，也就从失败取得教训，改正自己的思想使之适合于外界的规律性，人们就能变失败为胜利，所谓“失败者成功之母”，“吃一堑长一智”，就是这个道理。&lt;/li&gt;
&lt;li&gt;然而人的认识究竟怎样从实践发生，而又服务于实践呢？这只要看一看认识的发展过程就会明了的。
原来人在实践过程中，开始只是看到过程中各个事物的现象方面，看到各个事物的片面，看到各个事物之间的外部联系。&lt;/li&gt;
&lt;li&gt;社会实践的继续，使人们在实践中引起感觉和印象的东西反复了多次，于是在人们的脑子里生起了一个认识过程中的突变（即飞跃），产生了概念。概念这种东西已经不是事物的现象，不是事物的各个片面，不是它们的外部联系，而是抓着了事物的本质，事物的全体，事物的内部联系了。概念同感觉，不但是数量上的差别，而且有了性质上的差别。&lt;/li&gt;
&lt;li&gt;认识的真正任务在于经过感觉而到达于思维，到达于逐步了解客观事物的内部矛盾，了解它的规律性，了解这一过程和那一过程间的内部联系，即到达于论理的认识。&lt;/li&gt;
&lt;li&gt;这种基于实践的由浅入深的辩证唯物论的关于认识发展过程的理论，在马克思主义以前，是没有一个人这样解决过的。&lt;/li&gt;
&lt;li&gt;指出了社会的人在他们的生产和阶级斗争的复杂的、经常反复的实践中，由感性认识到论理认识的推移的运动。&lt;/li&gt;
&lt;li&gt;感觉只解决现象问题，理论才解决本质问题。&lt;/li&gt;
&lt;li&gt;马克思、恩格斯、列宁、斯大林之所以能够作出他们的理论，除了他们的天才条件之外，主要地是他们亲自参加了当时的阶级斗争和科学实验的实践，没有这后一个条件，任何天才也是不能成功的。&lt;/li&gt;
&lt;li&gt;如果要直接地认识某种或某些事物，便只有亲身参加于变革现实、变革某种或某些事物的实践的斗争中，才能触到那种或那些事物的现象，也只有在亲身参加变革现实的实践的斗争中，才能暴露那种或那些事物的本质而理解它们。&lt;/li&gt;
&lt;li&gt;一切真知都是从直接经验发源的。&lt;/li&gt;
&lt;li&gt;就知识的总体说来，无论何种知识都是不能离开直接经验的。任何知识的来源，在于人的肉体感官对客观外界的感觉，否认了这个感觉，否认了直接经验，否认亲自参加变革现实的实践，他就不是唯物论者。&lt;/li&gt;
&lt;li&gt;中国人有一句老话：“不入虎穴，焉得虎子。”这句话对于人们的实践是真理，对于认识论也是真理。离开实践的认识是不可能的。&lt;/li&gt;
&lt;li&gt;中国人民对于帝国主义的认识也是这样。第一阶段是表面的感性的认识阶段，表现在太平天国运动和义和团运动等笼统的排外主义的斗争上。第二阶段才进到理性的认识阶段，看出了帝国主义内部和外部的各种矛盾，并看出了帝国主义联合中国买办阶级和封建阶级以压榨中国人民大众的实质，这种认识是从一九一九年五四运动前后才开始的。&lt;/li&gt;
&lt;li&gt;那个具体战争的规律性，懂得了战略和战术，因而能够有把握地去指导战争。此时，如果改换一个无经验的人去指导，又会要在吃了一些败仗之后（有了经验之后）才能理会战争的正确的规律。&lt;/li&gt;
&lt;li&gt;如果这个人在这项工作中经过了一个时期，他有了这项工作的经验了，而他又是一个肯虚心体察情况的人，不是一个主观地、片面地、表面地看问题的人，他就能够自己做出应该怎样进行工作的结论，他的工作勇气也就可以大大地提高了。只有那些主观地、片面地和表面地看问题的人，跑到一个地方，不问环境的情况，不看事情的全体（事情的历史和全部现状），也不触到事情的本质（事情的性质及此一事情和其他事情的内部联系），就自以为是地发号施令起来，这样的人是没有不跌交子的。&lt;/li&gt;
&lt;li&gt;认识的过程，第一步，是开始接触外界事情，属于感觉的阶段。第二步，是综合感觉的材料加以整理和改造，属于概念、判断和推理的阶段。只有感觉的材料十分丰富（不是零碎不全）和合于实际（不是错觉），才能根据这样的材料造出正确的概念和论理来。&lt;/li&gt;
&lt;li&gt;第二是认识有待于深化，认识的感性阶段有待于发展到理性阶段——这就是认识论的辩证法。如果以为认识可以停顿在低级的感性阶段，以为只有感性认识可靠，而理性认识是靠不住的，这便是重复了历史上的“经验论”的错误。&lt;/li&gt;
&lt;li&gt;庸俗的事务主义家不是这样，他们尊重经验而看轻理论，因而不能通观客观过程的全体，缺乏明确的方针，没有远大的前途，沾沾自喜于一得之功和一孔之见。这种人如果指导革命，就会引导革命走上碰壁的地步。&lt;/li&gt;
&lt;li&gt;理性认识依赖于感性认识，感性认识有待于发展到理性认识，这就是辩证唯物论的认识论。&lt;/li&gt;
&lt;li&gt;认识从实践始，经过实践得到了理论的认识，还须再回到实践去。&lt;/li&gt;
&lt;li&gt;人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。&lt;/li&gt;
&lt;li&gt;斯大林说得好：“理论若不和革命实践联系起来，就会变成无对象的理论，同样，实践若不以革命理论为指南，就会变成盲目的实践。”&lt;/li&gt;
&lt;li&gt;许多时候须反复失败过多次，才能纠正错误的认识，才能到达于和客观过程的规律性相符合，因而才能够变主观的东西为客观的东西，即在实践中得到预想的结果。&lt;/li&gt;
&lt;li&gt;革命时期情况的变化是很急速的，如果革命党人的认识不能随之而急速变化，就不能引导革命走向胜利。&lt;/li&gt;
&lt;li&gt;我们反对革命队伍中的顽固派，他们的思想不能随变化了的客观情况而前进，在历史上表现为右倾机会主义。这些人看不出矛盾的斗争已将客观过程推向前进了，而他们的认识仍然停止在旧阶段。一切顽固党的思想都有这样的特征。他们的思想离开了社会的实践，他们不能站在社会车轮的前头充任向导的工作，他们只知跟在车子后面怨恨车子走得太快了，企图把它向后拉，开倒车。&lt;/li&gt;
&lt;li&gt;我们也反对“左”翼空谈主义。他们的思想超过客观过程的一定发展阶段，有些把幻想看作真理，有些则把仅在将来有现实可能性的理想，勉强地放在现时来做，离开了当前大多数人的实践，离开了当前的现实性，在行动上表现为冒险主义。&lt;/li&gt;
&lt;li&gt;马克思主义者承认，在绝对的总的宇宙发展过程中，各个具体过程的发展都是相对的，因而在绝对真理的长河中，人们对于在各个一定发展阶段上的具体过程的认识只具有相对的真理性。无数相对的真理之总和，就是绝对的真理。客观过程的发展是充满着矛盾和斗争的发展，人的认识运动的发展也是充满着矛盾和斗争的发展。&lt;/li&gt;
&lt;li&gt;社会的发展到了今天的时代，正确地认识世界和改造世界的责任，已经历史地落在无产阶级及其政党的肩上。这种根据科学认识而定下来的改造世界的实践过程，在世界、在中国均已到达了一个历史的时节——自有历史以来未曾有过的重大时节，这就是整个儿地推翻世界和中国的黑暗面，把它们转变过来成为前所未有的光明世界。&lt;/li&gt;
&lt;li&gt;世界到了全人类都自觉地改造自己和改造世界的时候，那就是世界的共产主义时代。&lt;/li&gt;
&lt;li&gt;通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<ol>
<li>马克思以前的唯物论，离开人的社会性，离开人的历史发展，去观察认识问题，因此不能了解认识对社会实践的依赖关系，即认识对生产和阶级斗争的依赖关系。</li>
<li>人的社会实践，不限于生产活动一种形式，还有多种其他的形式，阶级斗争，政治生活，科学和艺术的活动，总之社会实际生活的一切领域都是社会的人所参加的。因此，人的认识，在物质生活以外，还从政治生活文化生活中（与物质生活密切联系），在各种不同程度上，知道人和人的各种关系。</li>
<li>马克思主义者认为人类社会的生产活动，是一步又一步地由低级向高级发展，因此，人们的认识，不论对于自然界方面，对于社会方面，也都是一步又一步地由低级向高级发展，即由浅入深，由片面到更多的方面。</li>
<li>人们要想得到工作的胜利即得到预想的结果，一定要使自己的思想合于客观外界的规律性，如果不合，就会在实践中失败。人们经过失败之后，也就从失败取得教训，改正自己的思想使之适合于外界的规律性，人们就能变失败为胜利，所谓“失败者成功之母”，“吃一堑长一智”，就是这个道理。</li>
<li>然而人的认识究竟怎样从实践发生，而又服务于实践呢？这只要看一看认识的发展过程就会明了的。
原来人在实践过程中，开始只是看到过程中各个事物的现象方面，看到各个事物的片面，看到各个事物之间的外部联系。</li>
<li>社会实践的继续，使人们在实践中引起感觉和印象的东西反复了多次，于是在人们的脑子里生起了一个认识过程中的突变（即飞跃），产生了概念。概念这种东西已经不是事物的现象，不是事物的各个片面，不是它们的外部联系，而是抓着了事物的本质，事物的全体，事物的内部联系了。概念同感觉，不但是数量上的差别，而且有了性质上的差别。</li>
<li>认识的真正任务在于经过感觉而到达于思维，到达于逐步了解客观事物的内部矛盾，了解它的规律性，了解这一过程和那一过程间的内部联系，即到达于论理的认识。</li>
<li>这种基于实践的由浅入深的辩证唯物论的关于认识发展过程的理论，在马克思主义以前，是没有一个人这样解决过的。</li>
<li>指出了社会的人在他们的生产和阶级斗争的复杂的、经常反复的实践中，由感性认识到论理认识的推移的运动。</li>
<li>感觉只解决现象问题，理论才解决本质问题。</li>
<li>马克思、恩格斯、列宁、斯大林之所以能够作出他们的理论，除了他们的天才条件之外，主要地是他们亲自参加了当时的阶级斗争和科学实验的实践，没有这后一个条件，任何天才也是不能成功的。</li>
<li>如果要直接地认识某种或某些事物，便只有亲身参加于变革现实、变革某种或某些事物的实践的斗争中，才能触到那种或那些事物的现象，也只有在亲身参加变革现实的实践的斗争中，才能暴露那种或那些事物的本质而理解它们。</li>
<li>一切真知都是从直接经验发源的。</li>
<li>就知识的总体说来，无论何种知识都是不能离开直接经验的。任何知识的来源，在于人的肉体感官对客观外界的感觉，否认了这个感觉，否认了直接经验，否认亲自参加变革现实的实践，他就不是唯物论者。</li>
<li>中国人有一句老话：“不入虎穴，焉得虎子。”这句话对于人们的实践是真理，对于认识论也是真理。离开实践的认识是不可能的。</li>
<li>中国人民对于帝国主义的认识也是这样。第一阶段是表面的感性的认识阶段，表现在太平天国运动和义和团运动等笼统的排外主义的斗争上。第二阶段才进到理性的认识阶段，看出了帝国主义内部和外部的各种矛盾，并看出了帝国主义联合中国买办阶级和封建阶级以压榨中国人民大众的实质，这种认识是从一九一九年五四运动前后才开始的。</li>
<li>那个具体战争的规律性，懂得了战略和战术，因而能够有把握地去指导战争。此时，如果改换一个无经验的人去指导，又会要在吃了一些败仗之后（有了经验之后）才能理会战争的正确的规律。</li>
<li>如果这个人在这项工作中经过了一个时期，他有了这项工作的经验了，而他又是一个肯虚心体察情况的人，不是一个主观地、片面地、表面地看问题的人，他就能够自己做出应该怎样进行工作的结论，他的工作勇气也就可以大大地提高了。只有那些主观地、片面地和表面地看问题的人，跑到一个地方，不问环境的情况，不看事情的全体（事情的历史和全部现状），也不触到事情的本质（事情的性质及此一事情和其他事情的内部联系），就自以为是地发号施令起来，这样的人是没有不跌交子的。</li>
<li>认识的过程，第一步，是开始接触外界事情，属于感觉的阶段。第二步，是综合感觉的材料加以整理和改造，属于概念、判断和推理的阶段。只有感觉的材料十分丰富（不是零碎不全）和合于实际（不是错觉），才能根据这样的材料造出正确的概念和论理来。</li>
<li>第二是认识有待于深化，认识的感性阶段有待于发展到理性阶段——这就是认识论的辩证法。如果以为认识可以停顿在低级的感性阶段，以为只有感性认识可靠，而理性认识是靠不住的，这便是重复了历史上的“经验论”的错误。</li>
<li>庸俗的事务主义家不是这样，他们尊重经验而看轻理论，因而不能通观客观过程的全体，缺乏明确的方针，没有远大的前途，沾沾自喜于一得之功和一孔之见。这种人如果指导革命，就会引导革命走上碰壁的地步。</li>
<li>理性认识依赖于感性认识，感性认识有待于发展到理性认识，这就是辩证唯物论的认识论。</li>
<li>认识从实践始，经过实践得到了理论的认识，还须再回到实践去。</li>
<li>人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。</li>
<li>斯大林说得好：“理论若不和革命实践联系起来，就会变成无对象的理论，同样，实践若不以革命理论为指南，就会变成盲目的实践。”</li>
<li>许多时候须反复失败过多次，才能纠正错误的认识，才能到达于和客观过程的规律性相符合，因而才能够变主观的东西为客观的东西，即在实践中得到预想的结果。</li>
<li>革命时期情况的变化是很急速的，如果革命党人的认识不能随之而急速变化，就不能引导革命走向胜利。</li>
<li>我们反对革命队伍中的顽固派，他们的思想不能随变化了的客观情况而前进，在历史上表现为右倾机会主义。这些人看不出矛盾的斗争已将客观过程推向前进了，而他们的认识仍然停止在旧阶段。一切顽固党的思想都有这样的特征。他们的思想离开了社会的实践，他们不能站在社会车轮的前头充任向导的工作，他们只知跟在车子后面怨恨车子走得太快了，企图把它向后拉，开倒车。</li>
<li>我们也反对“左”翼空谈主义。他们的思想超过客观过程的一定发展阶段，有些把幻想看作真理，有些则把仅在将来有现实可能性的理想，勉强地放在现时来做，离开了当前大多数人的实践，离开了当前的现实性，在行动上表现为冒险主义。</li>
<li>马克思主义者承认，在绝对的总的宇宙发展过程中，各个具体过程的发展都是相对的，因而在绝对真理的长河中，人们对于在各个一定发展阶段上的具体过程的认识只具有相对的真理性。无数相对的真理之总和，就是绝对的真理。客观过程的发展是充满着矛盾和斗争的发展，人的认识运动的发展也是充满着矛盾和斗争的发展。</li>
<li>社会的发展到了今天的时代，正确地认识世界和改造世界的责任，已经历史地落在无产阶级及其政党的肩上。这种根据科学认识而定下来的改造世界的实践过程，在世界、在中国均已到达了一个历史的时节——自有历史以来未曾有过的重大时节，这就是整个儿地推翻世界和中国的黑暗面，把它们转变过来成为前所未有的光明世界。</li>
<li>世界到了全人类都自觉地改造自己和改造世界的时候，那就是世界的共产主义时代。</li>
<li>通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《哲学家们都干了些什么》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%93%B2%E5%AD%A6%E5%AE%B6%E4%BB%AC%E9%83%BD%E5%B9%B2%E4%BA%86%E4%BA%9B%E4%BB%80%E4%B9%88/</link>
      <pubDate>Wed, 21 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%93%B2%E5%AD%A6%E5%AE%B6%E4%BB%AC%E9%83%BD%E5%B9%B2%E4%BA%86%E4%BA%9B%E4%BB%80%E4%B9%88/</guid>
      <description>&lt;h1 id=&#34;上篇-理性的崛起&#34;&gt;上篇 理性的崛起&lt;/h1&gt;
&lt;h2 id=&#34;第一章-苏格拉底好讨厌&#34;&gt;第一章 苏格拉底好讨厌&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;苏格拉底的案件常常被现代人当作“民主暴政”的例子，说明“多数人的民主”在错误的引导下也会作出邪恶的判决。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按照后人的记录，苏格拉底一辈子做得最多的事就是问问题。当然，他不是像一般人那样提问。他专挑别人的漏洞，每次都能把对方问得头昏脑胀。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;苏格拉底的母亲是助产士，他自称为思想的“助产士”，意思是能引导别人深入思考。听着是挺不错，但问题是：你考虑被问的人的感受了吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;哲学家芝诺有一个著名的比喻，说人的知识好像一个圆圈，知识越多，圆圈的周长就越长，就会发现自己越无知。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章-拯救哲学的少年国王&#34;&gt;第二章 拯救哲学的少年国王&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;这底比斯圣队非常有名，最大的特点是所有士兵都是一对一对的恋人。俗话说“上阵父子兵”，这支部队的恋人兵也同样，打仗的时候谁都不肯后退，战斗力超强。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为那个马其顿王子就是赫赫有名的亚历山大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;二十年后，亚历山大的军队所向披靡，最终让马其顿横跨欧、亚、非三洲，成为人类古代史上面积最大的帝国之一，被称为亚历山大帝国。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;厉害的人物是亚历山大的老师。在马其顿还未崛起的时候，马其顿贵族经常派人去雅典留学。其中有一个国王御医的儿子去了柏拉图学园，学成归来后成了亚历山大的老师。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;亚里士多德是柏拉图的学生，柏拉图是苏格拉底的学生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其实柏拉图原本不叫这个名字，是他的体育老师给他改名叫“柏拉图”的——你想啊，连体育老师都觉得这人强到得改名叫“强者”，你说他得有多猛……（所以下次再提到古希腊智者，与其想象成白胡子老爷爷，不如脑补成斯巴达三百勇士穿白袍。）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于知识来说，宽容永远代表着光明。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第三章-当哲学遇上宗教&#34;&gt;第三章 当哲学遇上宗教&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;比如，罗马征服了很多蛮族，那些蛮族原本有自己的神灵。为此，罗马人建了极其宏伟的“万神殿”，把各个蛮族的神灵都供奉到里面。蛮族一看打仗打不过罗马，投降后自己的神灵还能进入那么雄壮的神殿中，所以一点儿抵抗力都没有，成批成批地都投降了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;历史上有一个规律，在斗争中，哲学总站在弱者的一方。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这是因为哲学讲思辨，讲道理，而只有弱者才会去讲理。强者不需要讲理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第四章-哲学与基督教分道扬镳&#34;&gt;第四章 哲学与基督教分道扬镳&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;“我遭受的火刑不过只燃烧一小时而已，而等待你们的，将是永不熄灭的地狱之火。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“必须用暴力解决的问题都是解决不了的问题。”当强者对弱者使用暴力的时候，正说明强者没有别的招数可用了，也就说明他离失败不远了。政权屠杀革命者，说明政权快要灭亡。革命者反过来屠杀群众，说明革命即将失败。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更可贵的是，他上位靠的不是暴力、政变这些对于一个军人出身的政治家来说最为常用的招数，而是权谋、手腕。他尊重、保护敌手的性命和财产，获得了最广泛的支持，也使得他的统治能够更长久。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;听着这些神谕就跟相声里那些跑江湖算命的似的，净说点儿两头堵的双关语。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第五章-哲学的坎坷流亡路&#34;&gt;第五章 哲学的坎坷流亡路&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果亚历山大图书馆里的藏书和《古兰经》一致，那就没有留下的必要；如果不一致，就更不应该留下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;哲学喜欢跟弱者做朋友。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第六章-哲学重新被启用&#34;&gt;第六章 哲学重新被启用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;公元476年，中国南北朝的时候，西罗马帝国的最后一任皇帝被赶下台。这件事标志着西罗马帝国的灭亡，从此以后，欧洲再没有被统一过&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于上帝的理性证明，罗素还有一个反驳。罗素说，上帝是全知、全能、全善的。那么，上帝要不要符合善恶标准呢？假如上帝要遵守的话，那么上帝就有了自己必须遵守的规则，那上帝就不是万能的了。假如上帝可以不遵守善恶的标准，那么上帝就无所谓善恶，也就不是至善的了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于文明来说，最可怕的是焚书，是毁掉学校，是用暴力消灭言论。因为让人民获得幸福的方法，就在千百万文弱书生舍去生命保护的一本本书、一张张纸中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;敬字惜纸，这不光是书呆子的任务，这更是文明之路。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第七章-教会的权力有多大&#34;&gt;第七章 教会的权力有多大？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;你听说过少林寺住持向天下发号令，说当今皇帝违反佛教教义，命令全国和尚一起讨伐他吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为什么东西方有这么大的差异？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人对待宗教有更多实用主义的倾向，信宗教大多是为了要点儿好处。而且佛教说的是因果报应，就算你不信佛，多做好事也可以有好报。不像基督教讲人有原罪，光做好事没用，你不信仰基督不受洗就进不了天堂。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那时有人在爱尔兰挖了一个洞穴，有些人声称他们进入洞穴并看到了真正的地狱。后来这个洞穴越来越有名，人们蜂拥而至，以致引来教皇的关注，最后以欺诈的名义下令关闭了这个洞穴。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;圣女贞德&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;虽然国王能给他们金钱和地位，但是远没有上天堂这事重要。所以当教会的命令和国王的命令互相矛盾的时候，欧洲人更愿意听教会的话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;。欧洲国王的实际权力很小，不能直接控制封建领主的产业和军队。所谓“仆人的仆人不是我的仆人”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人过年敢用麦芽糖去封灶王爷的嘴，感觉灶王爷就跟胡同口儿那个见谁都打招呼、一下雨就满街喊收衣服的居委会大妈似的，哪有半点儿上帝的神圣感啊。中国老百姓还有“泥菩萨过河——自身难保”之类的俗语，甚至用“佛跳墙”命名荤菜，直接拿神灵调侃了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国的市井小说就更猛了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《红楼梦》里，度化女娲遗留顽石的是一僧一道，两人一起行动，一起施法，也不怕俩法术打架；《水浒传》里，和尚老道拜了把子一起去砍人；《西游记》里，道教的玉皇大帝遇到危险时叫佛教的如来佛祖帮忙。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这要让中世纪的西方人知道早就崩溃了：这里面写的都是你们的神灵啊，有你们这么不严肃的吗？在中世纪，你让一本书里除了上帝外再有一个别的神试试，不把你放火刑架上烧个十遍八遍才怪呢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《红楼梦》里，度化女娲遗留顽石的是一僧一道，两人一起行动，一起施法，也不怕俩法术打架；《水浒传》里，和尚老道拜了把子一起去砍人；《西游记》里，道教的玉皇大帝遇到危险时叫佛教的如来佛祖帮忙。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教皇也曾经要求用刑“应用一次为限”。但是有的审讯官将此理解为“一次审讯用一次”，所以打够了一顿以后，再审问几句，然后就可以再次用刑了，实际上等于没有限制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;历史忠实地履行着诗人海涅的那句名言：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在他们开始烧书的地方，他们最终会烧人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有的人被要求终身穿着有明显标志的衣服并佩戴十字架，一生都会被别人歧视。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;比这更重的刑罚是监禁，刑期往往是终身。监狱的条件各不相同。有的监牢非常窄小，没有窗户，只在房顶开一个小口，食物从房顶上递下来——好吧，我说错了，这根本就是一口井。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第八章-哲学再次惨遭抛弃&#34;&gt;第八章 哲学再次惨遭抛弃&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;因信称义&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;说白了，罗马教会认为，外在的行为很重要。而马丁·路德认为，内心的信仰比外在的行为更重要。只要内心真诚信仰上帝就能得救；而是否遵守罗马教会的规定，是否上缴税款，是否完成昂贵的宗教仪式，这些都不重要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作家伊拉斯谟说：“许多男、女修道院与公共妓院无甚差异。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;罗马圣彼得大教堂（重建）：历经120年建成；巴黎圣母院大教堂：历经182年建成；比萨大教堂：历经287年建成；科隆大教堂：历经632年建成。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《圣经》里多次提到，教徒要把收入的十分之一捐献出来。有了《圣经》当靠山，教会便理直气壮地制定了“什一税”，规定欧洲百姓十分之一的收入都要上缴给教会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在路德的年代，有位“聪明”的教皇想出了赎罪券的名目，说只要购买教会发的赎罪券，有罪的人就可以被赦免，死后就能上天堂。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你以为神佛是黑社会啊，交了钱就保护你？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;12世纪，能收集到24本书就能称得上是图书馆了。一部弥撒书的价值比得上一座葡萄园。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;换句话说，垄断了对权威的解释权，就等于垄断了一切。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很快，普通老百姓也能买得起书了，教会再也拦不住普通人阅读《圣经》。马丁·路德攻击罗马的檄文因此可以在大众中快速传播，而不是像有些人那样只在广场上匆匆作几次口头演讲就被扔到火刑架上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;工商业和农业的一个区别是，人民不需要“看天吃饭”。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="上篇-理性的崛起">上篇 理性的崛起</h1>
<h2 id="第一章-苏格拉底好讨厌">第一章 苏格拉底好讨厌</h2>
<ul>
<li>
<p>苏格拉底的案件常常被现代人当作“民主暴政”的例子，说明“多数人的民主”在错误的引导下也会作出邪恶的判决。</p>
</li>
<li>
<p>按照后人的记录，苏格拉底一辈子做得最多的事就是问问题。当然，他不是像一般人那样提问。他专挑别人的漏洞，每次都能把对方问得头昏脑胀。</p>
</li>
<li>
<p>苏格拉底的母亲是助产士，他自称为思想的“助产士”，意思是能引导别人深入思考。听着是挺不错，但问题是：你考虑被问的人的感受了吗？</p>
</li>
<li>
<p>哲学家芝诺有一个著名的比喻，说人的知识好像一个圆圈，知识越多，圆圈的周长就越长，就会发现自己越无知。</p>
</li>
</ul>
<h2 id="第二章-拯救哲学的少年国王">第二章 拯救哲学的少年国王</h2>
<ul>
<li>
<p>这底比斯圣队非常有名，最大的特点是所有士兵都是一对一对的恋人。俗话说“上阵父子兵”，这支部队的恋人兵也同样，打仗的时候谁都不肯后退，战斗力超强。</p>
</li>
<li>
<p>因为那个马其顿王子就是赫赫有名的亚历山大。</p>
</li>
<li>
<p>二十年后，亚历山大的军队所向披靡，最终让马其顿横跨欧、亚、非三洲，成为人类古代史上面积最大的帝国之一，被称为亚历山大帝国。</p>
</li>
<li>
<p>厉害的人物是亚历山大的老师。在马其顿还未崛起的时候，马其顿贵族经常派人去雅典留学。其中有一个国王御医的儿子去了柏拉图学园，学成归来后成了亚历山大的老师。</p>
</li>
<li>
<p>亚里士多德是柏拉图的学生，柏拉图是苏格拉底的学生。</p>
</li>
<li>
<p>其实柏拉图原本不叫这个名字，是他的体育老师给他改名叫“柏拉图”的——你想啊，连体育老师都觉得这人强到得改名叫“强者”，你说他得有多猛……（所以下次再提到古希腊智者，与其想象成白胡子老爷爷，不如脑补成斯巴达三百勇士穿白袍。）</p>
</li>
<li>
<p>对于知识来说，宽容永远代表着光明。</p>
</li>
</ul>
<h2 id="第三章-当哲学遇上宗教">第三章 当哲学遇上宗教</h2>
<ul>
<li>
<p>比如，罗马征服了很多蛮族，那些蛮族原本有自己的神灵。为此，罗马人建了极其宏伟的“万神殿”，把各个蛮族的神灵都供奉到里面。蛮族一看打仗打不过罗马，投降后自己的神灵还能进入那么雄壮的神殿中，所以一点儿抵抗力都没有，成批成批地都投降了。</p>
</li>
<li>
<p>历史上有一个规律，在斗争中，哲学总站在弱者的一方。</p>
</li>
<li>
<p>这是因为哲学讲思辨，讲道理，而只有弱者才会去讲理。强者不需要讲理。</p>
</li>
</ul>
<h2 id="第四章-哲学与基督教分道扬镳">第四章 哲学与基督教分道扬镳</h2>
<ul>
<li>
<p>“我遭受的火刑不过只燃烧一小时而已，而等待你们的，将是永不熄灭的地狱之火。”</p>
</li>
<li>
<p>“必须用暴力解决的问题都是解决不了的问题。”当强者对弱者使用暴力的时候，正说明强者没有别的招数可用了，也就说明他离失败不远了。政权屠杀革命者，说明政权快要灭亡。革命者反过来屠杀群众，说明革命即将失败。</p>
</li>
<li>
<p>更可贵的是，他上位靠的不是暴力、政变这些对于一个军人出身的政治家来说最为常用的招数，而是权谋、手腕。他尊重、保护敌手的性命和财产，获得了最广泛的支持，也使得他的统治能够更长久。</p>
</li>
<li>
<p>听着这些神谕就跟相声里那些跑江湖算命的似的，净说点儿两头堵的双关语。</p>
</li>
</ul>
<h2 id="第五章-哲学的坎坷流亡路">第五章 哲学的坎坷流亡路</h2>
<ul>
<li>
<p>如果亚历山大图书馆里的藏书和《古兰经》一致，那就没有留下的必要；如果不一致，就更不应该留下。</p>
</li>
<li>
<p>哲学喜欢跟弱者做朋友。</p>
</li>
</ul>
<h2 id="第六章-哲学重新被启用">第六章 哲学重新被启用</h2>
<ul>
<li>
<p>公元476年，中国南北朝的时候，西罗马帝国的最后一任皇帝被赶下台。这件事标志着西罗马帝国的灭亡，从此以后，欧洲再没有被统一过</p>
</li>
<li>
<p>对于上帝的理性证明，罗素还有一个反驳。罗素说，上帝是全知、全能、全善的。那么，上帝要不要符合善恶标准呢？假如上帝要遵守的话，那么上帝就有了自己必须遵守的规则，那上帝就不是万能的了。假如上帝可以不遵守善恶的标准，那么上帝就无所谓善恶，也就不是至善的了。</p>
</li>
<li>
<p>对于文明来说，最可怕的是焚书，是毁掉学校，是用暴力消灭言论。因为让人民获得幸福的方法，就在千百万文弱书生舍去生命保护的一本本书、一张张纸中。</p>
</li>
<li>
<p>敬字惜纸，这不光是书呆子的任务，这更是文明之路。</p>
</li>
</ul>
<h2 id="第七章-教会的权力有多大">第七章 教会的权力有多大？</h2>
<ul>
<li>
<p>你听说过少林寺住持向天下发号令，说当今皇帝违反佛教教义，命令全国和尚一起讨伐他吗？</p>
</li>
<li>
<p>为什么东西方有这么大的差异？</p>
</li>
<li>
<p>中国人对待宗教有更多实用主义的倾向，信宗教大多是为了要点儿好处。而且佛教说的是因果报应，就算你不信佛，多做好事也可以有好报。不像基督教讲人有原罪，光做好事没用，你不信仰基督不受洗就进不了天堂。</p>
</li>
<li>
<p>那时有人在爱尔兰挖了一个洞穴，有些人声称他们进入洞穴并看到了真正的地狱。后来这个洞穴越来越有名，人们蜂拥而至，以致引来教皇的关注，最后以欺诈的名义下令关闭了这个洞穴。</p>
</li>
<li>
<p>圣女贞德</p>
</li>
<li>
<p>虽然国王能给他们金钱和地位，但是远没有上天堂这事重要。所以当教会的命令和国王的命令互相矛盾的时候，欧洲人更愿意听教会的话。</p>
</li>
<li>
<p>。欧洲国王的实际权力很小，不能直接控制封建领主的产业和军队。所谓“仆人的仆人不是我的仆人”。</p>
</li>
<li>
<p>中国人过年敢用麦芽糖去封灶王爷的嘴，感觉灶王爷就跟胡同口儿那个见谁都打招呼、一下雨就满街喊收衣服的居委会大妈似的，哪有半点儿上帝的神圣感啊。中国老百姓还有“泥菩萨过河——自身难保”之类的俗语，甚至用“佛跳墙”命名荤菜，直接拿神灵调侃了。</p>
</li>
<li>
<p>中国的市井小说就更猛了。</p>
</li>
<li>
<p>《红楼梦》里，度化女娲遗留顽石的是一僧一道，两人一起行动，一起施法，也不怕俩法术打架；《水浒传》里，和尚老道拜了把子一起去砍人；《西游记》里，道教的玉皇大帝遇到危险时叫佛教的如来佛祖帮忙。</p>
</li>
<li>
<p>这要让中世纪的西方人知道早就崩溃了：这里面写的都是你们的神灵啊，有你们这么不严肃的吗？在中世纪，你让一本书里除了上帝外再有一个别的神试试，不把你放火刑架上烧个十遍八遍才怪呢。</p>
</li>
<li>
<p>《红楼梦》里，度化女娲遗留顽石的是一僧一道，两人一起行动，一起施法，也不怕俩法术打架；《水浒传》里，和尚老道拜了把子一起去砍人；《西游记》里，道教的玉皇大帝遇到危险时叫佛教的如来佛祖帮忙。</p>
</li>
<li>
<p>教皇也曾经要求用刑“应用一次为限”。但是有的审讯官将此理解为“一次审讯用一次”，所以打够了一顿以后，再审问几句，然后就可以再次用刑了，实际上等于没有限制。</p>
</li>
<li>
<p>历史忠实地履行着诗人海涅的那句名言：</p>
</li>
<li>
<p>在他们开始烧书的地方，他们最终会烧人。</p>
</li>
<li>
<p>有的人被要求终身穿着有明显标志的衣服并佩戴十字架，一生都会被别人歧视。</p>
</li>
<li>
<p>比这更重的刑罚是监禁，刑期往往是终身。监狱的条件各不相同。有的监牢非常窄小，没有窗户，只在房顶开一个小口，食物从房顶上递下来——好吧，我说错了，这根本就是一口井。</p>
</li>
</ul>
<h2 id="第八章-哲学再次惨遭抛弃">第八章 哲学再次惨遭抛弃</h2>
<ul>
<li>
<p>因信称义</p>
</li>
<li>
<p>说白了，罗马教会认为，外在的行为很重要。而马丁·路德认为，内心的信仰比外在的行为更重要。只要内心真诚信仰上帝就能得救；而是否遵守罗马教会的规定，是否上缴税款，是否完成昂贵的宗教仪式，这些都不重要。</p>
</li>
<li>
<p>作家伊拉斯谟说：“许多男、女修道院与公共妓院无甚差异。”</p>
</li>
<li>
<p>罗马圣彼得大教堂（重建）：历经120年建成；巴黎圣母院大教堂：历经182年建成；比萨大教堂：历经287年建成；科隆大教堂：历经632年建成。</p>
</li>
<li>
<p>《圣经》里多次提到，教徒要把收入的十分之一捐献出来。有了《圣经》当靠山，教会便理直气壮地制定了“什一税”，规定欧洲百姓十分之一的收入都要上缴给教会。</p>
</li>
<li>
<p>在路德的年代，有位“聪明”的教皇想出了赎罪券的名目，说只要购买教会发的赎罪券，有罪的人就可以被赦免，死后就能上天堂。</p>
</li>
<li>
<p>你以为神佛是黑社会啊，交了钱就保护你？</p>
</li>
<li>
<p>12世纪，能收集到24本书就能称得上是图书馆了。一部弥撒书的价值比得上一座葡萄园。</p>
</li>
<li>
<p>换句话说，垄断了对权威的解释权，就等于垄断了一切。</p>
</li>
<li>
<p>很快，普通老百姓也能买得起书了，教会再也拦不住普通人阅读《圣经》。马丁·路德攻击罗马的檄文因此可以在大众中快速传播，而不是像有些人那样只在广场上匆匆作几次口头演讲就被扔到火刑架上。</p>
</li>
<li>
<p>工商业和农业的一个区别是，人民不需要“看天吃饭”。</p>
</li>
<li>
<p>日耳曼人头回见到这么刺激的事，马路上全是用家乡话骂教会的大字报</p>
</li>
<li>
<p>当年路德反抗的是独裁，用的武器是哲学。然而，在用哲学打败了天主教以后，新教用新霸权代替了天主教的旧霸权。</p>
</li>
<li>
<p>宗教只会把哲学当作获权的工具，一旦取得胜利，就会毫不犹豫地把哲学扔到一边。</p>
</li>
<li>
<p>哲学要成功，必须靠自己。</p>
</li>
</ul>
<h1 id="第九章-想做痛苦的苏格拉底还是快乐的猪">第九章 想做痛苦的苏格拉底，还是快乐的猪？</h1>
<ul>
<li>
<p>我们为什么要学哲学？前言已经回答过这个问题了：我们学哲学是想知道人生的意义是什么。回答了这个问题，我们才能拥有属于自己的人生观。</p>
</li>
<li>
<p>而怀疑是思考的起点，也是思考成果的检验者。怀疑的最大作用在于能避免独断论，这样才能引导我们寻找正确的答案，免得我们轻信一切未经证实的结论。</p>
</li>
</ul>
<h2 id="第十章-笛卡尔的疑问">第十章 笛卡尔的疑问</h2>
<ul>
<li>
<p>作为一个基本没什么前人成果可以参考、没什么书可以去相信的哲学家，笛卡尔探索世间奥秘的方法只剩下一种：亲自思考世界。按他的话说，就是读“世界这本大书”。</p>
</li>
<li>
<p>管你是苏格拉底也好，柏拉图也罢，你们再有名，你们的书我也得先怀疑怀疑！</p>
</li>
<li>
<p>的知识不在先贤的书里，而是在实践检验里。</p>
</li>
<li>
<p>实际上，笛卡尔比怀疑先哲著作还要更彻底，他要彻底怀疑整个世界：我眼前的这个世界是不是都是假的？我见到的一切会不会都是幻觉、都是梦境？</p>
</li>
<li>
<p>笛卡尔的怀疑虽然小孩子都想得出，可是在哲学史上，这却是一个非常重要的问题。很多哲学家都被这个问题难住了</p>
</li>
<li>
<p>笛卡尔找到了答案：他想，不管我再怎么怀疑，“我怀疑”这件事是确定的，它肯定存在吧？那么，只要有了怀疑的念头，就说明“我”肯定是存在的——“我”要是不存在就不会有这些念头了。</p>
</li>
<li>
<p>这就是名言“我思故我在”的意思。</p>
</li>
<li>
<p>现在我们的哲学事业已经有了原则，即：我们的结论必须能经得起各种怀疑，这样才能保证它真实可信。这也是科学研究的原则。</p>
</li>
<li>
<p>然而，就是这么区区几句话，竟然能一路推理，写出厚厚的前六卷《几何原本》来，内容能够涵盖世间所有的平面几何知识。几何世界千变万化，大自然中的几何图形更是无穷无尽，但都逃不过上面这简单的几句话。</p>
</li>
<li>
<p>我们只能说欧几里得“发现”了几何。也就是说，在当时的人看来，几何知识是一种不依赖人类存在的真理，不管有没有人类，它都存在，它都不变。</p>
</li>
<li>
<p>笛卡尔意识到可以把欧氏几何的思路应用到哲学研究上。</p>
</li>
<li>
<p>因为完满的东西是不会怀疑的。</p>
</li>
<li>
<p>只是不让我们再陷入怀疑一切的荒谬境地中，它还不具备什么建设性。</p>
</li>
</ul>
<h1 id="第十一章-形而上学不是个贬义词">第十一章 “形而上学”不是个贬义词</h1>
<ul>
<li>
<p>也就是说，形而上学研究的是那些高于物理学的、看不见摸不着的学问。</p>
</li>
<li>
<p>形而上学研究的，就是那些抽象的、不同于物理世界的、看不见摸不着的学问。</p>
</li>
<li>
<p>很多小孩喜欢不停地问家长“为什么”，让家长不胜其烦。其实，这个“为什么”的游戏玩儿到最后，追问的往往就是形而上学的问题</p>
</li>
<li>
<p>加缪说过：“真正严肃的哲学问题只有一个，那就是自杀。”研究“人为什么不自杀”，其实就是在研究“人为什么活着”。</p>
</li>
<li>
<p>比如，小孩问“太阳为什么会每天升起、落下”，家长可以用牛顿力学来解释。但如果小孩进一步问：“为什么太阳要遵守牛顿力学？”这时候家长就又要打人了：“太阳不遵守牛顿力学还能遵守什么啊？这是什么破问题啊？”</p>
</li>
<li>
<p>“世界的本质是什么”的问题，在哲学里又称作“本体论”。</p>
</li>
<li>
<p>“哪些知识真实可信”的问题，在哲学里又称作“认识论”。</p>
</li>
</ul>
<h2 id="第十二章-我的心灵与我的身体无关">第十二章 我的心灵与我的身体无关</h2>
<ul>
<li>
<p>肉体上的疼痛是感官体验，随之而来的屈辱是心理活动。</p>
</li>
<li>
<p>这就是说，我们遇到的所有痛苦都可以分成两类：感官上的和精神上的。</p>
</li>
<li>
<p>相对于感官的，是精神上的痛苦。在客观世界里，人的力量终究有限。再厉害的人都无法保证自己永不受苦。而在精神世界里，只要意志坚定，我们自己就是王。最不济了，还可以选择当阿Q，通过幻想也可以保证在精神世界里不受伤害。</p>
</li>
<li>
<p>只要我的意志足够坚定，在我的精神世界里，我可以视一切为粪土。他人的嘲笑和蔑视只存在于外界那一元，和我的精神世界无关，那么又何来凌辱之说？</p>
</li>
<li>
<p>而在二元论的观念下，世界被一分为二：外界和内心。痛苦虽然来自外界，但真正承受痛苦的是我们的内心。因此，我们虽然仍旧需要尽力去改变外物，但在客观世界这一元里的得失其实不重要，关键是固守自己的内心这一元，固守住我们获得体验的最后一关。而在内心世界里，我们自己能完全做主，这就让人产生了很大的安全感。</p>
</li>
<li>
<p>假设我们只停留在“我在”的阶段，停留在“缸中之脑”的想象里，那么我们只能确认我自己存在，外界的一切存在不存在我们不知道，这就叫“唯我论”。比如，我认为我的生活是一场虚幻的梦境，这就是典型的“唯我论”。</p>
</li>
<li>
<p>假如我们带着唯我论的观念生活，也会有这样的感觉。对于我来说，外界的一切事物，不都是等我感受到的时候才会出现吗？如果把世上的一切都想象成只为我一个人安排出来的，也可以说得通啊。没准儿只有我才是这个世界上最重要的主角，其他人只是木偶、演员或者是幻象。</p>
</li>
<li>
<p>张爱玲写道：“香港的陷落成全了她……谁知道呢，也许就因为要成全她，一个大都市倾覆了。”</p>
</li>
<li>
<p>校长看他身体不好，特许他可以不参加早晨的宗教仪式，想睡到几点就睡到几点。从此，笛卡尔一生都保持着早晨不起床、躺在床上思考问题的习惯，常常一赖床就到中午了。</p>
</li>
<li>
<p>笛卡尔说，他没法在一位美丽的女士面前杀了这么肮脏的人。</p>
</li>
<li>
<p>教皇的使节当即对笛卡尔说，与世人分享你的发现是你对上帝的责任，你这一肚子学问要是不发表，你会下地狱的，知道吗？</p>
</li>
<li>
<p>“你的生命不应该献给我，应该献给那位夫人。”</p>
</li>
<li>
<p>笛卡尔说过：“不管多么荒谬、多么不可置信的事，无一不是这个或那个哲学家主张过的。”</p>
</li>
<li>
<p>您会发现，您小时候觉得自己有过的特离奇的想法，这帮哲学家早就想过了。</p>
</li>
</ul>
<h2 id="第十三章-寒冬夜行人斯宾诺莎的救赎">第十三章 寒冬夜行人斯宾诺莎的救赎</h2>
<ul>
<li>
<p>西方哲学史两千五百多年，我们介绍的哲学家有十几位。如果把这些人按照品德排序的话，斯宾诺莎就算不能独居第一，那也绝对是并列第一的。</p>
</li>
<li>
<p>从此，斯宾诺莎在荷兰的地位一落千丈。人们躲避他、厌弃他。斯宾诺莎的父亲也不肯收留儿子。父亲去世后，姐姐又要霸占遗产。为此斯宾诺莎和姐姐打了场官司，最后他赢了官司，但是他马上又把赢得的财产送给了姐姐，自己只留下一张床。</p>
</li>
<li>
<p>他回答说，自己不知道怎么把握才能不触犯宗教信条。</p>
</li>
<li>
<p>法国国王路易十四还暗示过斯宾诺莎，只要他声明下一本书献给路易十四，就可以得到一笔丰厚的养老金。斯宾诺莎回答说，我的确需要金钱，但“我只将我的著作献给真理”。</p>
</li>
<li>
<p>笛卡尔有一个很棒的想法，就是按照欧氏几何学的模式来建立哲学体系。具体来说，就是先找出一些不言自明的公设，再以这些公设为基础，按照演绎推理的方法建立整个哲学体系。</p>
</li>
<li>
<p>斯宾诺莎最有影响的著作叫《伦理学》，在他去世后才发表。这本书的全称是《按几何顺序证明的伦理学》。</p>
</li>
<li>
<p>既然这个东西绝对存在，那么它肯定不能依赖别的物体存在。</p>
</li>
<li>
<p>所以，斯宾诺莎承认上帝，但他心目中的上帝不是基督教或者犹太教中人格化的上帝，而是无所不在的实体。</p>
</li>
<li>
<p>世间万物皆为上帝，我自己也为上帝的一部分，那么我与上帝同在，自然充满无限的力量。其他人即便与我作对，他们也是上帝的一部分，他们的行为也都是上帝的意志（这点和基督教是相同的）。所以无论外人如何对我，我都应该坦然接受。</p>
</li>
<li>
<p>实体永远存在，我属于实体，那么我也可以永远存在。即便肉体消失了，我也是实体的一部分。而且一想到我和世间万物都是一体的，就可以感受到无限的力量和安全感，也就什么都不怕了。</p>
</li>
<li>
<p>再者，实体是善的，作为实体一部分的事物，即便单独看是邪恶的，它本身也是为了善的目的而存在，也是善的一部分。因此无论多么丑恶的现象，我们都应该宽容接受。</p>
</li>
<li>
<p>顺便一说，这种人和万物一体的观点在中国哲学里很常见。中国很多学派都追求“天人合一”。比如庄子讲“天地与我并生，而万物与我为一”。北宋儒学家张载更认为宇宙万物都是一体的，所以我们侍奉父母，友爱他人，就相当于爱整个宇宙了。</p>
</li>
<li>
<p>著名科幻作家阿西莫夫写过一套史诗巨著《基地》。在后几本小说里，阿西莫夫构建了一个神奇的星球。在这个星球上，所有的动物、植物甚至一草一木共同构成了一个整体，大家共享相同的意识、记忆、感情和感觉。星球上的生物个体死亡以后，组成该生物的原子会最终变成星球上其他生物和物体的一部分。所以这个星球上不存在真正意义的死亡，只有各种物体之间的转化。意识是全星球物体共享的，因此也不会消失。</p>
</li>
<li>
<p>哲学史上有个不难理解的现象，生活越是困苦的哲学家，他的学说就越关注个人幸福。反之，生活富足的哲学家，学说更容易脱离现实。斯宾诺莎就是典型的前者。</p>
</li>
<li>
<p>第一，说话要尽量让别人明白，只要别人对我们的要求不会影响我们实现自己的目标（比如求知），那就尽量满足。</p>
</li>
<li>
<p>第二，只享受为保持健康所必需的生活乐趣。</p>
</li>
<li>
<p>第三，只求取为生活和健康所必需的金钱。</p>
</li>
</ul>
<h2 id="第十四章-科学派vs数学派">第十四章 科学派VS数学派</h2>
<ul>
<li>
<p>我们完全可以换用带有另一套单位的尺子，也不影响任何科学结论。</p>
</li>
<li>
<p>斯宾诺莎</p>
</li>
<li>
<p>我上小学的时候，老师常这么教训我们，说我们现在的心灵就像是一张白纸，在上面画什么，我们就会成为什么样的人。这个“儿童心灵是白纸”的说法，追根溯源，可以追到洛克的身上。</p>
</li>
<li>
<p>洛克也承认人的本能是天生的，比如直觉之类。但洛克认为，这些本能就和动物捕食、生存的本能一样，是一种生理、心理上的习惯而已，并不是什么比客观世界高一等的理性，更不可能由此建立起一个哲学世界来。</p>
</li>
<li>
<p>洛克的哲学观点带有一部分政治内容。他是自由主义者，最痛恨独裁。所以洛克认为，如果像笛卡尔等人所说的，有一些真理是不言自明，是人先天就有的，那么这种观点可能会被独裁者利用。独裁者可以给人民灌输有利于自己统治的信仰，使得人民不懂得觉醒。</p>
</li>
<li>
<p>科学得出的真理顶多是一种概率真理。科学家不断做实验，顶多是把科学理论正确的概率提高了一点儿，却永远不能保证科学理论绝对正确。</p>
</li>
<li>
<p>用白话说，假设人类已经做过十亿次物理实验，都证明牛顿是正确的，但反对者还可以问，你怎么能保证第十亿零一次的实验还会正确呢？</p>
</li>
<li>
<p>在归纳法里，最重要的是实验数据，是观测结果，它们是科学理论的基础和证据。这些东西可以用一个词来统称：经验。</p>
</li>
<li>
<p>所以洛克代表的科学派被称为“经验主义”。</p>
</li>
</ul>
<h2 id="第十五章-莱布尼茨的哲学论战">第十五章 莱布尼茨的哲学论战</h2>
<ul>
<li>
<p>结果他们一看洛克的国籍，就都释然了。</p>
</li>
<li>
<p>哦，原来是个英国人啊。</p>
</li>
<li>
<p>英国人怎么了？</p>
</li>
<li>
<p>假如翻开英国的学术史，我们就会发现，这简直就是“跟欧洲大陆对着干”的历史。英国人和欧洲大陆不一致，是有传统的。</p>
</li>
<li>
<p>欧洲大陆神学家继承的是柏拉图，英国神学家继承的是亚里士多德，两边也是一顿吵架。</p>
</li>
<li>
<p>说到这里，有一个有趣的小规律：数学家里特别容易出神童。除了莱布尼茨外，还有帕斯卡、高斯、欧拉、拉格朗日、哈密顿、冯·诺依曼、伽罗瓦、维纳，以及当代的陶哲轩，这一长串数学家全是各种神童，随便哪个人的故事都是一个传奇。相比之下，其他行业里出神童的比例似乎没有这么高</p>
</li>
<li>
<p>莱布尼茨17岁就获得了哲学硕士学位，20岁完成博士学位的学习。但当时的莱比锡大学认为他太年轻了，觉得不像话，就没给他博士学位。莱布尼茨一生气，转身就去了外地的另一所大学。在去这所大学的路上，他一边赶路一边写了一篇论文。等到了那地方，把论文一交，人家直接就给了他博士学位，还邀请他当教授</p>
</li>
<li>
<p>莱布尼茨是怎么写的呢？他说，这个家族的历史，是整个皇族历史的一部分，必须和整个皇族的历史结合在一起写。但是要研究皇族的历史呢，又必须先研究地理。然而这片土地又是地球的一部分，所以我们要从地球的形成开始研究。</p>
</li>
<li>
<p>然后那个皇族成员左等右等也不见莱布尼茨的书写完，就派人去看看。结果那人一看就崩溃了：莱布尼茨正兴致勃勃地写远古时代的地球发展史呢。</p>
</li>
<li>
<p>他不断提出各种改进社会的提议：为德意志地区引进丝织品，在柏林建立公共卫生系统，在维也纳修建路灯及国家银行、传染病患者隔离病房。这些当然都是很棒的建议，对国家和人民也有好处，但是以莱布尼茨当时的地位，这些提议都是他没法实现的。</p>
</li>
<li>
<p>洛克说，理性主义者们所谓的一些先于经验的公设啊，理念啊，和动物的本能没有区别。莱布尼茨针锋相对地反驳：你知道人跟禽兽有什么区别吗？区别就是禽兽做事只凭经验，人却能根据经验总结出必然规律。禽兽不知道思考，总以为过去发生的事情在以后相似的场合下还会发生。所以人可以利用禽兽的习性，去设计陷阱捕捉禽兽。</p>
</li>
<li>
<p>而你们这帮经验主义者，只强调经验，不承认必然规律，那你们的联想能力不就跟禽兽一样了吗？</p>
</li>
<li>
<p>但应该强调的是，在论战中，莱布尼茨是非常有风度的。他把自己和洛克辩论的书信集结成了一本《人类理智新论》。但是当这本书写成的时候，洛克已经去世了。莱布尼茨认为对手不能答辩了，自己发表和他的辩论是不公平的，于是在自己生前一直藏着这本书没有发表。</p>
</li>
<li>
<p>物质是占据空间的，对吧？那么只要是能占据空间的东西，就可以被分成更小、更简单的东西。</p>
</li>
<li>
<p>物质被无限地分下去，最后剩下的，一定是不占据空间的“东西”——要是占据空间就能再分下去了。</p>
</li>
<li>
<p>这“东西”不占据空间，所以它不是物质。所以它是精神。</p>
</li>
<li>
<p>莱布尼茨在给他的贵族小姐们解释这件事的时候，说了一句名言：“世上没有两片树叶是相同的。”</p>
</li>
</ul>
<h2 id="第十六章-遭遇最强对手牛顿">第十六章 遭遇最强对手牛顿</h2>
<ul>
<li>
<p>现代历史学家普遍认为，这两个人各自发明了微积分，所以微积分的基本定理叫“牛顿-莱布尼茨公式”，是用两个人的名字合在一起表示的。</p>
</li>
<li>
<p>直到后来伏尔泰对万有引力大加赞扬，情况才有所改观。就像英国在微积分上吃的亏一样，法国的物理学界也因此吃了大亏。</p>
</li>
<li>
<p>在学术上，民族主义真是要不得呀。</p>
</li>
</ul>
<h2 id="第十七章-万物皆物理">第十七章 万物皆物理？</h2>
<ul>
<li>
<p>简单地说，我们衡量某个学说、理论、定理是不是好用，有两个标准：</p>
</li>
<li>
<p>第一看它能否准确地预测未来，第二看它是否足够简要。</p>
</li>
<li>
<p>第二个标准，就是一套理论在保持准确性的前提下，越简练越</p>
</li>
<li>
<p>一个平民出身的人能获得比王公贵族还大的荣耀，这就是科学的力量。</p>
</li>
<li>
<p>亚里士多德对此吐槽：那照这么说，磁石也是有灵魂的，因为磁石引起了铁的运动</p>
</li>
<li>
<p>用物理学来解释包括人类意识在内的整个世界，这种观点就叫作“机械论”。</p>
</li>
<li>
<p>霍布斯说：“如果我读的书跟别人一样多，我就不会知道得那么多了。”</p>
</li>
<li>
<p>唯物主义说物质不依赖意识存在。但是，当人没有意识的时候，又怎么知道那些物质是存在的呢？唯物主义者或许说，科学可以证明。但是科学要建立在经验的基础上。在意识无法触及的领域里，自然无法产生经验。因此，科学对这些事物只能猜测，却证明不了任何东西。</p>
</li>
</ul>
<h2 id="第十八章-你相信宿命吗">第十八章 你相信宿命吗？</h2>
<ul>
<li>
<p>决定论的意思很简单，既然世间万物都可以用物理规律来解释，那么每一个事件之间必然要遵循严格的因果关系。如果人的意识是完全由物质决定的，那肯定也得服从严格的物理定律。那么，整个世界该如何发展，该走向何处，都是由自然定律决定好了的。就像人们根据力学可以预测星辰位置一样，人们也可以根据自然规律来预测未来所有的事件。</p>
</li>
<li>
<p>如果我们这么一环一环地回溯回去，那么我们一生中的一切所思所想、我这本书中的每一个字、您看这本书时在头脑中迸发出的每一个念头，其实都是在几万亿年前的宇宙大爆炸的那一瞬间就被决定好了的。且不说这想法很诡异，关键是，那人生还有什么意思啊？</p>
</li>
<li>
<p>如果我们这么一环一环地回溯回去，那么我们一生中的一切所思所想、我这本书中的每一个字、您看这本书时在头脑中迸发出的每一个念头，其实都是在几万亿年前的宇宙大爆炸的那一瞬间就被决定好了的。且不说这想法很诡异，关键是，那人生还有什么意思啊？</p>
</li>
<li>
<p>这就像有的人在为罪犯辩护的时候，会列举罪犯一生的种种遭遇，说他如何被歧视、受到多少不公正的待遇，这才铸就了他易于犯罪的性格。这么一看，这人之所以犯罪不是他自己能控制的，都是社会的错啊！推而广之，人的任何行为，我们都可以说是外界环境促成的，那人岂不是做任何错事都不应该受到惩罚了吗？</p>
</li>
<li>
<p>所以，你觉得自己是自由的，这感觉本身也是被因果律决定好的。连你试图反抗因果律这行为本身，也是被因果律决定的。</p>
</li>
<li>
<p>这很像希腊神话中那些关于宿命的故事。大致的内容都是预言家说出了某个预言，当事人很害怕，就做出了某些自认为能绝对避免命运的行为。结果这行为阴差阳错，反而让预言成真。最终预言还是实现了。</p>
</li>
<li>
<p>这很像希腊神话中那些关于宿命的故事。大致的内容都是预言家说出了某个预言，当事人很害怕，就做出了某些自认为能绝对避免命运的行为。结果这行为阴差阳错，反而让预言成真。最终预言还是实现了。</p>
</li>
<li>
<p>唯我论把人看得最大，可以安慰人。机械论和决定论把人看得渺小，也同样可以安慰人。</p>
</li>
<li>
<p>当我们遇到挫折的时候，我们常会安慰自己说“这是命”。比如俗语说“人的命，天注定，胡思乱想没有用”，用来安慰人是很管用的。</p>
</li>
</ul>
<h2 id="第十九章-干掉因果律休谟">第十九章 干掉因果律——休谟</h2>
<ul>
<li>
<p>休谟认为，你们讨论“何事真实存在”之类的问题，实际上这些问题人类根本没有能力回答，所以你们才能怎么说怎么都有理，正反两面的观点都能成立。</p>
</li>
<li>
<p>所以在休谟这里，经验就是人的感觉印象。我感觉到了什么就是什么，至于这感觉从哪儿来的，是真是假，我不知道。</p>
</li>
<li>
<p>休谟认为，我们所谓的“我”，不过是一堆经验片段的集合而已，并没有一个独立于经验的、实在的“我”存在。</p>
</li>
<li>
<p>休谟的回答是，不知道就不知道，没关系。我们能得到的经验就是眼前的生活，在有明确的证据证明面前的生活都是幻觉之前，我们就照着自己平时的经验正常生活下去就可以了。我们没必要也没能力去无限地怀疑世界。反正想也想不出结果来，就别想了吧！</p>
</li>
<li>
<p>我们去图书馆随便拿起一本书，问这些书中包含着数和量的抽象推论吗，包含着关于实在事实和存在的任何经验的推论吗，如果都没有，就可以烧掉它，因为里面只有诡辩和幻想。</p>
</li>
<li>
<p>休谟认为，我们根据逻辑只能判断事物是不是自相矛盾。就像我们可以用逻辑去判断数学知识是不是可靠。但如果我们用逻辑去分析燃放爆竹这件事，我们会发现，我们完全可以想象我们没有点燃爆竹，只是一扔爆竹，爆竹就爆炸了的情景。这个情景并不违反逻辑规则，只和我们的经验矛盾（比如“爆竹没有点燃就不会爆炸”，这是个来自经验的知识）。所以只靠理性是无法察觉因果律的。</p>
</li>
<li>
<p>就像我们可以用逻辑去判断数学知识是不是可靠。但如果我们用逻辑去分析燃放爆竹这件事，我们会发现，我们完全可以想象我们没有点燃爆竹，只是一扔爆竹，爆竹就爆炸了的情景。这个情景并不违反逻辑规则，只和我们的经验矛盾（比如“爆竹没有点燃就不会爆炸”，这是个来自经验的知识）。所以只靠理性是无法察觉因果律的。</p>
</li>
<li>
<p>顺便说一下，演绎推理中说的“因为，所以”并非属于因果律。比如在几何里，我们说“∵（因为）两直线平行，∴（所以）这两条直线不相交”，这里面的意思并非指“两直线平行”这件事导致了“这两条直线不相交”这件事发生，而是指，当“两直线平行”这个命题为真的时候，“这两条直线不相交”这个命题也为真。</p>
</li>
<li>
<p>A事件发生在前，B事件发生在后。</p>
</li>
<li>
<p>这个“必然”能让人看见？这个“必然”能让人感觉到？没有，“必然”这个东西不在我们的经验范围之内。我们之所以认为这里有“必然”性，是因为我们过去无数次地看见了这两件事连在一起发生，所以就想当然地认为，这两件事之间有必然的联系，在未来也会永远连在一起发生。</p>
</li>
<li>
<p>休谟尖锐地指出：这种“想当然”是错的。</p>
</li>
<li>
<p>休谟认为，人相信因果律其实是一种心理错觉，只因为我们发现两件事总在一起发生，我们就期待它们能再次一起发生。但这其中并没有可靠的根据。</p>
</li>
<li>
<p>罗素有一个比喻，说假设农场里有一只鸡，每次一看到农场主来，就被喂食物，那么这只鸡就会以为农场主和给它喂食之间有因果联系。但结果有一天，农场主带来的不是鸡食而是一把猎枪，农场主把鸡杀了。换句话说，鸡通过观察发现，农场主和喂食这两件事总在一起发生，便以为其中有因果关系。但实际上，耗费它毕生时间得到的观察结果，仍旧不能证明这两件事之间有必然联系或者因果关系。</p>
</li>
<li>
<p>假如没有因果律，人还怎么活着？人为什么还要劳动，还要生产？我举起了杯子，明明我做的“举”这个动作就是杯子离开桌面的原因，这种显而易见的事还有人怀疑？</p>
</li>
</ul>
<h2 id="第二十章-哲学遇到麻烦了">第二十章 哲学遇到麻烦了</h2>
<ul>
<li>
<p>休谟有一句名言——你怎么知道明天的太阳会照样升起？</p>
</li>
<li>
<p>那么，当你在左右两个极端里选择中庸的时候，你不能说我随便选择中间的哪一点都行，你必须说明白，为什么你要选一个点，为什么不能更靠左一点，或者更靠右一点。</p>
</li>
<li>
<p>我们姑且认为人有自由意志。那么请问，动物有自由意志吗？植物有自由意志吗？如果说动物有植物没有，难道是因为前者能动后者不能动吗？那微生物有自由意志吗？或者动植物的关键区别是前者有脑？那请问脑的定义是什么？这定义能决定自由意志的有无吗？无脊椎动物的神经中枢算脑吗？鱼是脊椎动物，有类似于高等动物的大脑结构，螃蟹虾米是无脊椎动物，后者所谓的大脑仅仅是神经节。那你的意思是说，螃蟹没有自由意志而鱼有？或者说，一个只有螃蟹虾米的鱼缸是决定论的，扔进去一条鱼就不是了？</p>
</li>
<li>
<p>选择了中庸之道固然可以避免两个极端的缺点，但也同时失去了两个极端的理论支持，很容易被别人驳倒。</p>
</li>
<li>
<p>我们对自然的改造应该给人类带来好处，不给人类带来坏处</p>
</li>
<li>
<p>我们对自然的改造应该给人类带来好处，不给人类带来坏处</p>
</li>
<li>
<p>现在有两个会严重摧毁生活的哲学观点。一个是休谟的怀疑论，一个是科学的决定论。可怕的是，这两个观点正好是互相矛盾的两个极端。反对一个就等于拥护另一个，采取中庸之道的那些结论，更像是诡辩论而不是严谨的推理。</p>
</li>
<li>
<p>周围的人们都看傻了，他们拥到那个新面孔面前：“不知少侠贵姓高名？”</p>
</li>
<li>
<p>那新面孔谦虚一笑，拱了拱手：</p>
</li>
<li>
<p>“各位承让，在下康德。”</p>
</li>
<li>
<p>康德的个人秀即将开始。</p>
</li>
</ul>
<h2 id="第二十一章-教会的衰落">第二十一章 教会的衰落</h2>
<ul>
<li>
<p>教会规定，凡是印刷、出版、阅读《禁书目录》上所列书籍的人，一经发现都会受到严厉的惩处。我们之前提过的很多哲学家，比如笛卡尔、斯宾诺莎、洛克、休谟，还有后面的康德、帕斯卡，他们的著作都上过这本《禁书目录》。</p>
</li>
<li>
<p>真正有价值的，是伽利略的另一个思想实验。当初亚里士多德认为越重的物体下落速度越快。伽利略就想象，假如金属球的掉落速度比木头球的掉落速度快，那么我们用一根绳子把这两个球连在一起扔下去，按说掉落速度慢的木头球，会拖慢金属球的掉落速度。也就是说，两个球合在一起的掉落速度会比金属球慢。但是，两个球合在一起的质量不是比单独一个金属球更大了吗？那不是掉落的速度又要比金属球单独掉落更快吗？这理论自相矛盾，自然也就不攻自破了。</p>
</li>
<li>
<p>这时候裁判所不慌不忙地拿出他们存档的那份判决书，在判决书的最后，赫然就写着“不能讨论‘日心说’”这几个字。</p>
</li>
<li>
<p>这都行？</p>
</li>
<li>
<p>有人说，在判决几天以后，当伽利略被押解至某监狱，从囚车上艰难地下来的时候，他弯下腰用手指触地，喃喃地说道：“唔，它还在动。”</p>
</li>
<li>
<p>当笛卡尔知道伽利略被判刑后，深受打击，他不敢再提地球转动了。</p>
</li>
<li>
<p>《利维坦》的政治理论里有一个观点，说当君主已无法再保护臣民安全时，臣民可以转向服从新的君主。</p>
</li>
<li>
<p>查理二世的保护下，霍布斯虽然也受到了冲击，但是很轻。他失去了出版自由，但还是可以偷偷到荷兰出书，他的理论早就名扬在外了</p>
</li>
<li>
<p>在历史上，我以为有两个人对基督教权威的打击最大。一个是牛顿，一个是达尔文。</p>
</li>
<li>
<p>开普勒是“日心说”的大功臣，他有个开普勒三大定律，为牛顿研究万有引力铺平了道路。但开普勒研究天文可不是出于什么唯物主义精神，开普勒把太阳看作圣父、恒星看作圣子、宇宙中的以太看作圣灵。他研究天文学是为了印证他的神学观：世界是上帝根据完美的数的原则创造的。</p>
</li>
<li>
<p>所谓解读圣经密码，就是通过跳字、断句之类的方法，从《圣经》中找到隐藏的内容。在我们看来这种解读行为有些荒诞，但是牛顿虔诚地认为，他的物理学定律和圣经密码一样，都是上帝留给人类的神秘线索。研究圣经密码和研究物理学一样重要。</p>
</li>
<li>
<p>而且牛顿还通过复杂的公式计算出了世界末日的时间——2060年。</p>
</li>
<li>
<p>末世论具备了能引起恐慌又无法查证的特点</p>
</li>
<li>
<p>我们前面说过，欧洲国王管不住自己手下的领主，领主们又信奉教会。亨利四世被“绝罚”后，立刻叛乱四起。亨利实在扛不住了，无奈之下，不得不千里跋涉来到教皇的住所前求饶。贫民出身的教皇拒绝接见他，亨利就在大雪中站了三天三夜（据说还没穿鞋子），然后教皇才出来让他吻了自己的鞋，宽恕了他。</p>
</li>
<li>
<p>从怀里掏出一个小本儿来：谁当初背叛过我，我都记着哪。</p>
</li>
<li>
<p>面对第二次“绝罚”，亨利四世啥事也没有，直接带兵杀到了罗马。教皇只能从罗马仓皇出逃，最后凄凄惨惨地客死异乡。</p>
</li>
<li>
<p>教权和王权之间有着尖锐的矛盾。在对抗中，教会唯一的武器是信仰，一旦这信仰被哲学、科学和民主思想慢慢消磨掉，教会的权力也就立刻萎缩，说话再也不好使了。</p>
</li>
<li>
<p>1835年，除了罗马之外，欧洲各地的宗教裁判所都被取消，不久以后，罗马的裁判所也改换名字，很快就失去了逮捕审判的权力。宗教裁判所带来的黑暗时代就这样结束了。</p>
</li>
<li>
<p>“认为太阳的直径有几百万英里，与地球相距9100万英里，这是愚蠢的想法。太阳只有32英里宽，距离地球不过3000英里。情况一定如此，完全合情合理。上帝创造太阳，为的是照亮地球，他必然要把它安放在靠近服务对象的近旁。如果有人在齐翁镇盖所房子，却跑到威斯康星州的基诺沙去安装电灯为它照明，你会怎么想呢？”</p>
</li>
</ul>
<h2 id="第二十二章-宅男拯救哲学">第二十二章 宅男拯救哲学</h2>
<ul>
<li>
<p>包括康德，以及后面的谢林、黑格尔、费尔巴哈、叔本华、尼采、马克思、胡塞尔、海德格尔，还有对哲学影响颇大的爱因斯坦、海森堡。这个超豪华阵容全部都是德意志人。他们中有不少是犹太人。后来希特勒迫害犹太人，结果让一堆超级智囊脱离德国国籍到英美去作贡献了。</p>
</li>
<li>
<p>康德住在当时德国最东边一个偏远的小镇里。这个地方偏远到今天已经不属于德国而属于俄罗斯了。</p>
</li>
<li>
<p>“他先坐在床上，轻轻地躺下，将一个被角拉到肩膀上，再掖到背下，然后特别熟练地将另一个被角用同样的方法整好，接着再将身体的其他部分盖好。这样把自己像茧子一样裹好后，他便等待着睡意的来临。”</p>
</li>
<li>
<p>“他先坐在床上，轻轻地躺下，将一个被角拉到肩膀上，再掖到背下，然后特别熟练地将另一个被角用同样的方法整好，接着再将身体的其他部分盖好。这样把自己像茧子一样裹好后，他便等待着睡意的来临。”</p>
</li>
<li>
<p>康德是个大器晚成的人。觉得自己年事已高但是一事无成的人，可以拿康德来激励自己。</p>
</li>
<li>
<p>然而，康德当上的不是教授，而是地位最低的编外教师。学校不给发薪水，他的收入由上他课的学生们提供。在随后的岁月中，康德不断地申请当教授，但是不断地失败，结果这个编外教师康德足足干了15年，直到46岁的时候，才获得了教授的职位，这是非常晚的了。</p>
</li>
<li>
<p>德国古典哲学的一个共同特点是晦涩难懂，不只是康德，德国哲学家全这德行。</p>
</li>
<li>
<p>德国古典哲学的一个共同特点是晦涩难懂，不只是康德，德国哲学家全这德行。</p>
</li>
<li>
<p>我们学英语的人都知道，英语里一个句子可以带上很长很长的从句。德语和英语同属于日耳曼语系，在句子长度上更是有过之而无不及。想一想，这本《纯粹理性批判》里有的句子长到写满一页还没有写完。一整页的文字你在那儿读读读，读了五分钟还没遇见句号，那是什么感觉。</p>
</li>
<li>
<p>康德认为，我们应该把主客观世界的关系颠倒过来！</p>
</li>
<li>
<p>人类感觉到的世界，也就是“物自体”经过“先天认识形式”加工后得到的东西，我们把它（们）叫作“表象”。</p>
</li>
<li>
<p>人类感觉到的世界，也就是“物自体”经过“先天认识形式”加工后得到的东西，我们把它（们）叫作“表象”。</p>
</li>
<li>
<p>也就是说，我们生活中看到的桌子啊，椅子啊，这些都是世界的表象。桌子和椅子的真面目是物自体，到底是什么样子的我们永远无法知道。</p>
</li>
<li>
<p>这些东西不依赖于人的经验而存在，而且常常会决定着人的经验。</p>
</li>
<li>
<p>在康德的哲学世界里，所有的知识（也就是来自物自体的知识）都要先经过人类心灵的加工，才能被人类认识。所以他自比哲学界的哥白尼，在他的哲学里，不是心灵去感受经验，而是心灵加工和生产出了经验。当然，这加工过程并不是任意的。</p>
</li>
<li>
<p>有一个最常用的比喻，有色眼镜。</p>
</li>
<li>
<p>这个比喻说，假设每个人终身都必须戴着一副蓝色的有色眼镜。这个世界上所有的事物，必须都通过有色眼镜的过滤才能被人看到。那么所有人看到的就是一个蓝色的世界，而世界真实的面貌是人永远看不到的。</p>
</li>
<li>
<p>在这个比喻里，有色眼镜是先天认识形式，事物原本的颜色是物自体，人类看到的蓝色的世界，是表象。</p>
</li>
<li>
<p>要注意的是，每个人的眼镜都是相同的，不会有人不一样。因此，戴着眼镜其实不会妨碍人类的正常生活，连物理研究的结论都不会影响。反正颜色只是人类自己起的名字而已，戴眼镜者根本没法察觉到自己的异常。</p>
</li>
<li>
<p>外界的任何命令都必须先经过BIOS的处理，才能让电脑明白。</p>
</li>
<li>
<p>用白话说就是，康德认为，这世界（物自体）是人类永远无法真正认识的，人类只能看到被扭曲了的世界（表象）。但是由于每个人对真实世界的扭曲方式（先天认识形式）都是相同的，所以人类看到的同一个东西的感受还是一样的，因此我们察觉不到真实的事物是否被扭曲了。所以这个世界观并不和我们的生活经验相悖。</p>
</li>
<li>
<p>我们自己的意识就是物自体啊！</p>
</li>
<li>
<p>因果律只存在于先天认识形式里，并不存在于物自体中。</p>
</li>
<li>
<p>换句话说，康德让人的意志受到了先天认识形式的严密保护，因果律不能穿透先天认识形式去控制人的内心意志，所以人仍旧是自由的</p>
</li>
<li>
<p>再多说一句，康德认为表象世界存在因果律，并不能因此说表象世界就是一个决定论的世界。这是因为，我们的自由意志会影响表象世界：我可以凭借自己的自由意志，想拿起杯子就拿起来。既然我们的自由意志不受因果律的控制，那么表象的世界也就不是一个决定论的世界了。</p>
</li>
<li>
<p>康德说，人不可能在大脑完全空白时就直接接受经验，就好像电脑要先安装BIOS才能进一步去读盘、去安装操作系统一样（当然这例子是我举的）。“先天认识形式”是人用来接收外界知识所必备的基础。</p>
</li>
<li>
<p>比如空间和时间的概念，就是人在学习一切知识前，必须先具备的先天认识形式。</p>
</li>
<li>
<p>第一个证明是，我们有感觉对吧，而“感觉”暗含的意思是，我们感觉到的是“我们之外”的东西。我们不用人教，就知道自己有意识，自己的意识之外还有一个世界。这“之外”两个字，就说明我们有空间概念。</p>
</li>
<li>
<p>第二个证明是，人类可以想象不存在物体的空间，但是不能想象不在空间中的物体。这说明空间是不依赖外界经验存在的概念。</p>
</li>
<li>
<p>所谓“我”这个概念，实际上是很多瞬间不同的“我”合在了一起。</p>
</li>
<li>
<p>如果我们没有时间概念，就没法认识到“我”是一个存在于连续时间里的整体。</p>
</li>
<li>
<p>这说明一个知识如果不具备时间、空间和因果律的要素，我们就完全不能理解。也就是说，只要我们有关于某物的知识，这知识必定伴随着时间、空间和因果律等概念。时间、空间和因果律这些概念是先于我们的经验而存在于我们思维中的。</p>
</li>
<li>
<p>歌德将康德的理论生动地解释为：“如果我不是从一开始就心里装着这个世界，即使睁着眼睛，我也看不见。”</p>
</li>
<li>
<p>康德的解决方法是，他把世界分成了两个部分。一个部分完全不可知，另一个部分则可以用理性把握。不可知的那部分因为永远不可知，所以对我们的生活没有什么影响。只要我们在可把握的世界里生活，理性就又恢复了威力。</p>
</li>
<li>
<p>也没法证明，下一秒钟世界不会被我们从未认识到的某种力量毁灭。按照康德的世界观，这些阴谋论正是处于我们永远无法认识的世界里。那么我们该怎么办？——管它作甚！</p>
</li>
<li>
<p>莱布尼茨解释说，世间之所以有这么多恶，是因为上帝在若干恶的世界中选了一个最不那么恶的给我们，是“所有可能存在的世界中最好的”。</p>
</li>
<li>
<p>比如对于“二律背反”问题，理性就无法去讨论。</p>
</li>
<li>
<p>康德用他的形而上学把科学和宗教分成了两个领域：科学研究的是表象世界，宗教面对的是物自体的世界，所以我们不能用科学和理性去质疑宗教，同时宗教也没有必要打压科学。</p>
</li>
<li>
<p>我们生活的空间是三维的。那么，有没有四维空间？四维空间是什么样子的呢？注意，我们这里说的第四维不是时间，而是纯空间上的四维。</p>
</li>
<li>
<p>这就是问题的关键。我们虽然很聪明，我们虽然有数学家也有计算机，但是我们永远无法从感性上认识四维空间。这就是我们认识的局限，只要我们是人，无论我们用任何办法，都超越不了。四维空间里是什么样子、有什么东西，我们永远不可能知道。我们只能知道的是四维物体投影在三维空间里的“表象”。</p>
</li>
<li>
<p>这不就是康德的世界观吗？</p>
</li>
<li>
<p>叔本华的话说，任何人在读懂康德之前都只是一个孩子。</p>
</li>
<li>
<p>叔本华的话说，任何人在读懂康德之前都只是一个孩子。</p>
</li>
<li>
<p>有一个思维工具叫作“奥卡姆剃刀原则”。它的大意是，理论应该尽可能简洁，理论中一切不影响结论的多余部分，都应该被剔除掉。</p>
</li>
<li>
<p>而且康德还有自我矛盾的地方。康德说物自体是产生表象的原因，又说因果律只存在于先天认识形式中，不在物自体的世界里。那么，既然物自体世界里不能应用因果律，他又怎么能说物自体是产生表象的“原因”呢？</p>
</li>
<li>
<p>如果康德真的对时间无比严格，那邻居们把他当成活人报时器倒也合情合理。</p>
</li>
<li>
<p>但是康德又不信任医生，就自己规定了很多古怪的守则，而且严格遵守。虽然这些守则有些非常怪，但事实证明康德是很成功的，在那个医学不发达的年代，他活到了80岁。</p>
</li>
<li>
<p>都有什么怪规矩呢？——康德觉得吃药多了对身体不好，他就自己规定，无论医生怎么说，一天最多只吃两片药。为了避免伤风，他还规定在除了夏季之外的季节里，自己在散步的时候不和任何人说话。</p>
</li>
<li>
<p>他讨厌出汗，一旦发现自己要出汗，就静静地站在阴影里，好像在等人似的，一直站到要出汗的感觉消失。</p>
</li>
<li>
<p>其实用一句话就可以概括：有症状就硬憋着。</p>
</li>
<li>
<p>这都是什么治病方法呀！</p>
</li>
</ul>
<h2 id="第二十三章-哲学能囊括一切吗">第二十三章 哲学能囊括一切吗？</h2>
<ul>
<li>
<p>康德的作息时间严格得出了名，但据说有一件事曾经让他主动打乱了自己的作息时间表：读卢梭的《爱弥儿》。他屋里挂着的唯一一幅画就是卢梭的画像。康德非常喜欢卢梭，而且还关注了那个在卢梭的影响下彻底改变世界历史的大事件：法国大革命。</p>
</li>
<li>
<p>康德的哲学世界可以描绘成这么一幅图画：</p>
</li>
<li>
<p>画里有一块石头，石头旁边站着一个人，这个人戴着一副眼镜，正在看这块石头。这块石头就是世界的本质，就是“物自体”。这个人，是我们自己。我们戴着的眼镜是“先天认识形式”。我们通过眼镜所看到的画面，就是“表象”世界。</p>
</li>
<li>
<p>现在的问题是：这副眼镜是从哪儿来的？</p>
</li>
<li>
<p>这个世界的本质，黑格尔给起了个名字，叫作“绝对精神”。</p>
</li>
<li>
<p>我们今天对辩证法有一种庸俗的理解，说辩证法就是“看待事物要分两个方面”。别人批评一个现象，我非要说“要辩证地看这件事，这件事也有好的一面嘛”。这是对辩证法的误读，这不叫辩证法，这叫诡辩法。它唯一的作用是把所有的事实都捣成一片糨糊，逃避有意义的讨论。</p>
</li>
<li>
<p>这当然不是黑格尔的意思。</p>
</li>
<li>
<p>“矛盾律”的意思是，一件事不能自相矛盾，事物和事物之间也不能互相矛盾。“我长得漂亮”和“我长得丑”，两者只能有一个为真，不可能同时为真。否则，“我长得既漂亮又丑”这句话会让人感到古怪，无法理解。</p>
</li>
<li>
<p>他认为，世界不是容不得矛盾，而是恰恰相反，到处都是矛盾，矛盾就是世界的本质。</p>
</li>
<li>
<p>因为凡是找到一个概念（漂亮），我们都可以找到和它相反的概念（见到“漂亮”，就可以联想到“丑”）。假如这世上没有丑的概念，那也就无所谓漂亮不漂亮了。</p>
</li>
<li>
<p>最适合诠释这个概念的是我们传统的“阴阳说”。中国古人早就认识到，阴和阳无处不在，凡事有阴又有阳。阴阳也不是你死我活的关系，而是在冲突中和谐共存。就像“阴阳鱼”所画的那样，阴阳你中有我，我中有你，是一种互相冲突又互相产生的动态关系。</p>
</li>
<li>
<p>苏格拉底的座右铭就是“认识你自己”。那我们是怎么认识自己的呢？是通过“反思”——“返”回头思，也就是自己观察自己。但是，我们一般情况下是不会反思自己的。尤其是我们傻吃傻玩儿特别开心的时候，很多人想不起来应该反思自己这事。</p>
</li>
<li>
<p>世界对我的反应，跟我预期不一样</p>
</li>
<li>
<p>“原来我认识的自己魅力十足”，这是正题。“我发现，别人眼里的我是个小丑”，这是反题。正题和反题产生矛盾，矛盾产生冲突，冲突的过程就是“反思”：“我到底是个什么样的人呢？”</p>
</li>
<li>
<p>是一个合题——我认识到了一个更丰富、更全面的“我”，这就是合题。</p>
</li>
<li>
<p>在黑格尔看来，哲学家的任务，就是按照辩证法的规划，在一次又一次的哲学研究中不断升级对世界的认识，最终达到“绝对精神”。</p>
</li>
<li>
<p>还是用“我认识我自己”这件事来打比方：当我们回顾一生的时候，我们会认为，是过去所有的经历共同构成了“我”，我们人生里的所有经历都是“我”的一部分。而不会认为，我的人生只停留在最近的一瞬，之前都可以忽略不计。同样，黑格尔认为，哲学就是哲学史，学习哲学就要学习整个哲学史。</p>
</li>
<li>
<p>在这本书的第一页里，我们不知道世界的本质是什么，等读到最后一页的时候，其实我们还是不知道。那么，您会觉得读之前和读之后的想法是完全一样的吗？中间经过的思考都是在浪费时间吗？</p>
</li>
<li>
<p>那我们就应该按照黑格尔的指导，好好学习他的哲学，最终洞察真理，完成“绝对精神”的自我显现，这就是人生的最大意义啊。</p>
</li>
<li>
<p>哎呀，那人生意义我们已经找到了呀。</p>
</li>
<li>
<p>完！结！撒！花！</p>
</li>
<li>
<p>收！工！回！家！</p>
</li>
<li>
<p>可是，黑格尔说错了。</p>
</li>
<li>
<p>但是随着科学的发展，他当初的很多结论现在看来是错的，这也会让人怀疑这哥们儿发现的到底是不是绝对真理。</p>
</li>
<li>
<p>诗人海涅说黑格尔的书：“说实话，我很少看懂……以至我相信他是真的不想让人懂。”</p>
</li>
<li>
<p>前面说康德的话太长，黑格尔的话也长。据说有这么个段子，黑格尔的《精神现象学》写完之后，歌德慕名去看。结果刚刚看序言，就看到一大段话，歌德觉得这段话太荒谬了，他完全不同意，就把这本书扔一边再也不看了。但这其实是因为黑格尔把句子写得太长了，只要歌德翻到另一页就会发现，那页一开始就写着两个字——“但是”。</p>
</li>
<li>
<p>前面说康德的话太长，黑格尔的话也长。据说有这么个段子，黑格尔的《精神现象学》写完之后，歌德慕名去看。结果刚刚看序言，就看到一大段话，歌德觉得这段话太荒谬了，他完全不同意，就把这本书扔一边再也不看了。但这其实是因为黑格尔把句子写得太长了，只要歌德翻到另一页就会发现，那页一开始就写着两个字——“但是”。</p>
</li>
<li>
<p>怎么说呢？当意识到黑格尔的哲学不是绝对真理的时候，甚至能给人一种“幸亏如此，否则今天的学生得多遭罪”的庆幸感……</p>
</li>
</ul>
<h1 id="下篇-理性的陨落">下篇 理性的陨落</h1>
<h2 id="第一章-傲慢的叔本华">第一章 傲慢的叔本华</h2>
<ul>
<li>
<p>黑格尔是形而上学的巅峰，他创造了一个史上最完备、最庞大的形而上学世界。</p>
</li>
<li>
<p>他说黑格尔的哲学是“傻瓜喜爱的最空洞无意义的词语展示”。</p>
</li>
<li>
<p>后来打听出来了，这人叫叔本华，没什么背景，也没正经工作，整天闲晃着。出过一两本哲学书，写的是什么，不知道，没人看过。</p>
</li>
<li>
<p>后来打听出来了，这人叫叔本华，没什么背景，也没正经工作，整天闲晃着。出过一两本哲学书，写的是什么，不知道，没人看过。</p>
</li>
<li>
<p>叔本华的父亲是个大商人，祖上几代都是大富翁。有钱到什么程度呢？俄罗斯的彼得大帝和皇后来访问的时候，就住在了叔本华的曾祖父的家里。传说叔本华的曾祖父觉得客人住的房间有点儿冷，于是让仆人把白兰地倒在壁炉中燃烧取暖，这样房间里就有了酒的香味。</p>
</li>
<li>
<p>叔本华的父亲是个大商人，祖上几代都是大富翁。有钱到什么程度呢？俄罗斯的彼得大帝和皇后来访问的时候，就住在了叔本华的曾祖父的家里。传说叔本华的曾祖父觉得客人住的房间有点儿冷，于是让仆人把白兰地倒在壁炉中燃烧取暖，这样房间里就有了酒的香味。</p>
</li>
<li>
<p>总之，母子间的关系越来越差。叔本华还对他母亲说过，将来她只可能因为他而留名百世。现在我们知道，叔本华是做到了。</p>
</li>
<li>
<p>等回家一打听，他那书啊，一本都没卖出去！文化圈也没什么人响应，也就歌德给捧了捧场。就像那位出版商所担心的，过了许多年后，这本书的大部分都被拿去化为纸浆了。</p>
</li>
<li>
<p>一个天才是很难合群的，因为除了他的独白之外有什么对话能如此智慧而有趣呢？</p>
</li>
<li>
<p>前面说过，连黑格尔自己都抱怨学生们学不懂他的课，而且黑格尔说话还有很重的口音，所以他讲课别人更听不懂了。那时候黑格尔的学生不算多，一堂课也就只有三百来人。那么叔本华的课上有多少人呢？</p>
</li>
<li>
<p>基本不超过五个。</p>
</li>
<li>
<p>只干了半年，叔本华就崩溃辞职了。</p>
</li>
<li>
<p>太丢人了。</p>
</li>
<li>
<p>40岁了，他安慰自己说：“任何有出息的男人过了40岁……难免有一点儿愤世嫉俗。”</p>
</li>
<li>
<p>40岁了，他安慰自己说：“任何有出息的男人过了40岁……难免有一点儿愤世嫉俗。”</p>
</li>
<li>
<p>33岁的时候，叔本华喜欢上一个19岁的年轻女演员，但是那个女演员是个很会在男人中周旋的人。她怀过几次孕，还有私生子，但孩子的父亲不是叔本华，这让叔本华非常嫉妒。即便如此，叔本华还是很喜欢她，一度考虑和她结婚。</p>
</li>
<li>
<p>黑格尔的时代结束了，不过叔本华的时代还要迟一些才能到来。</p>
</li>
<li>
<p>叔本华仍旧一天到晚混着。</p>
</li>
<li>
<p>他出了一本《附录与补遗》。这本书以格言体写成——仿佛我们今天的人生小感悟，里面都是诸如什么《论人生》啊、《论女人》啊这种小文章。这是他所有作品里最容易读的一本。他得到的全部稿酬是免费拿十本书。</p>
</li>
<li>
<p>他引用诗人彼得拉克的话说：“谁要是走了一整天，傍晚走到了，那也该满足了。”</p>
</li>
</ul>
<h2 id="第二章-悲观主义不悲观">第二章 悲观主义不悲观</h2>
<ul>
<li>
<p>因为我自己就是物自体啊。</p>
</li>
<li>
<p>可以用非理性的方式认识我自己。我可以用“直觉”去审视自己的内心，闭上眼睛，直接去感受自己本心里的东西是啥。用白话说就是“扪心自问”，当我们处于这种状态的时候，就可以认识到物自体。</p>
</li>
<li>
<p>这个“生命意志”是啥样的呢？</p>
</li>
<li>
<p>简单地说，是一股永不停歇的力量。这股力量驱使着万物去运动，去发展。</p>
</li>
<li>
<p>我们为什么非要吃、非要喝，吃饱喝足了又要玩儿，玩儿够了又有虚荣心，等功成名就啥都有了，还想要追求青史留名、万世不朽呢？在叔本华看来，这背后驱动我们的，就是“生命意志”。</p>
</li>
<li>
<p>叔本华认为，万物的物自体是统一的，只有一个，就是“生命意志”。</p>
</li>
<li>
<p>在叔本华看来，理性固然厉害，可是在生命意志面前却处于全面劣势。</p>
</li>
<li>
<p>这就好比说，我们以为自己生活、恋爱、结婚、工作是根据我们的理性选择的。而叔本华认为，隐藏在这些理性背后的真正的原因，还是各种欲望：生殖的欲望、享乐的欲望、征服的欲望等。你以为你在靠理性生活，实际上还是在满足生命意志。所以理性以为自己克制了生命意志，其实还是在生命意志的操控之中。</p>
</li>
<li>
<p>意志是个充满欲望的君王，但是它头脑糊涂，只知道发布命令却不知道该怎么去达到目的。理性是个头脑清醒的老臣，他虽然对君王的命令有意见，但是限于身份，只能偶尔劝谏君王，大部分时候都是在用他的聪明才智去满足君王的欲望。</p>
</li>
<li>
<p>理性不是没有用，它只是实现意志的工具而已。</p>
</li>
<li>
<p>我们平时和别人发生了争执，我们说服别人用的是理性吗？绝大多数时候，靠的不是理性而是利益。</p>
</li>
<li>
<p>而利益是什么？就是满足欲望，就是生命意志。</p>
</li>
<li>
<p>可你想过没有，你进行学术讨论的目的是什么呢？学生学习哲学理论，不就是为了考试毕业吗？我们普通人读哲学，不就是为了告诉自己“我连康德都知道，我好了不起哦”！不就是为了能在和朋友聊天的时候给自己长点儿面子吗？</p>
</li>
<li>
<p>可你想过没有，你进行学术讨论的目的是什么呢？学生学习哲学理论，不就是为了考试毕业吗？我们普通人读哲学，不就是为了告诉自己“我连康德都知道，我好了不起哦”！不就是为了能在和朋友聊天的时候给自己长点儿面子吗？</p>
</li>
<li>
<p>在叔本华看来，我们人类只是“生命意志”实现目的的工具。就像人类不会在乎工具是不是快乐一样，“生命意志”也不会在乎我们人类是不是快乐。它让我们产生欲望的目的不是让我们高兴，而是让我们动起来别停。</p>
</li>
<li>
<p>所以，人不会因为满足欲望而停下脚步。满足不了欲望，人会痛苦。满足了欲望，人又会产生新的、更高的欲望，还是会痛苦。</p>
</li>
<li>
<p>更好是好的敌人。</p>
</li>
<li>
<p>所以快乐只是暂时的，痛苦才是永恒的。用叔本华的话说，人生就好像在痛苦和无聊之间不停摆动的钟摆。这种情景就像王尔德说的，“人生有两大悲剧：一个是得不到想要的东西，另一个是得到了”。</p>
</li>
<li>
<p>悲剧的一个表现，是人没有自由意志。我们记得，康德费尽千辛万苦，才给人类找回了自由意志。而在叔本华这里，自由意志又没了。在叔本华看来，人虽然表面上是自由的，但其实是在受生命意志的控制。人类就算有自由，也是一种被奴役的、极为悲惨的自由。</p>
</li>
<li>
<p>满足性欲的目的是诞生新的生命。而新的生命又意味着新的痛苦。所以叔本华认为，生殖行为就好像人和生命意志签订的卖身契。因此，在人类社会里性行为总和羞耻相连。</p>
</li>
<li>
<p>叔本华认为生殖冲动是生命意志的阴谋，所以他说：“天才总有超越自己的生殖冲动，所以天才和女人之间存在着敌意。”——你瞧，这个一辈子被女人拒绝的老单身汉，成功地利用形而上学把自己归为天才了……</p>
</li>
<li>
<p>首先，世俗的成功没有用。不仅没用，还会助长生命意志。因为叔本华认为，追求成功也是生命意志的表现。人越成功，就意味着他的生命意志越强烈，从而也就意味着人生越痛苦。</p>
</li>
<li>
<p>人的欲望是无穷无尽的，在追求成功的道路上，人会产生更多的欲望，有更多的压力和痛苦。</p>
</li>
<li>
<p>人在欣赏真正艺术的时候，内心是不带欲望的，也是忘我的。</p>
</li>
<li>
<p>因为最伟大的艺术家都是在努力审视自己的内心，表达自己内心深处最真实的感受。而且艺术是非理性的。刚才说了，叔本华认为，人在非理性状态下审视自己的内心，才能感受到生命意志。所以，最伟大的艺术品反映的是生命意志的真相。</p>
</li>
<li>
<p>康德说物自体是人不能认识到的，叔本华却详细描述了一番物自体，指明了物自体就是生命意志，体现在人的身上就是各种欲望。</p>
</li>
<li>
<p>叔本华强调非理性的欲望比理性对人的影响更大，这和后来的弗洛伊德强调潜意识的观点很像。</p>
</li>
<li>
<p>叔本华的理论和进化论也很像，都强调物种的生存本能。</p>
</li>
<li>
<p>叔本华用“生命意志”来解释人类的欲望，但在今天看来，用激素来解释要更加准确一些——比如，靠吃药甚至直接切掉某块神经，就可以让人进入“无欲无求”的状态。这说明即便有“生命意志”，我们也可以用物理的手段轻松控制它。</p>
</li>
<li>
<p>叔本华用“生命意志”来解释人类的欲望，但在今天看来，用激素来解释要更加准确一些——比如，靠吃药甚至直接切掉某块神经，就可以让人进入“无欲无求”的状态。这说明即便有“生命意志”，我们也可以用物理的手段轻松控制它。</p>
</li>
<li>
<p>很多人都是为了获得尽可能多的安全感、为了有更好的物质享乐、为了和别人攀比，才会去忍受无穷无尽的艰辛劳动、在各种挫折中垂头丧气，又因为不断产生的新欲望而苦恼。很多人奋斗一生，最后仍旧对某个欲求念念不忘，抱憾而终。仔细想一想，这辈子确实有点儿不值。</p>
</li>
<li>
<p>不管多好的享乐，玩儿一阵子就会觉得没劲了，感到空虚无聊。</p>
</li>
<li>
<p>另一种有钱人，当他们玩儿一玩儿后，发现纵欲也不过如此，他们就不再追求物欲，而是改成追求艺术。这是古往今来很多有钱人的选择。</p>
</li>
<li>
<p>悲观主义让我们把整个世界都看成是一个很差的地方。那么，我们就不必对这世界期待太多。</p>
</li>
<li>
<p>叔本华告诉别人要禁欲，要苦修，然而有意思的是，叔本华本人完全没能以身作则。通过前面的故事您也能感觉到，叔本华这人很自负，关心名声，特喜欢骂人，脾气也不怎么好。</p>
</li>
<li>
<p>他还故意给私人笔记写上错误的标题，给自己的物品贴上错误的标签，比如在茶叶罐子上贴上“毒药”，为了迷惑可能到来的小偷。（强！）</p>
</li>
<li>
<p>他从来不让理发师的剃刀接近他的脖子。</p>
</li>
<li>
<p>叔本华宣扬禁欲，但他本人很会享受。他经常去最上等的饭馆吃饭，点昂贵的饭菜，有时还会点两份主食。在西方，人们习惯吃完饭把小费放到桌子上。叔本华呢？他每次吃饭前，先把一枚金币放到餐桌上——注意，是金币哦——看得侍者们满眼发光。但每顿饭吃完以后，这位大哥又把金币放回到自己的口袋里了。</p>
</li>
<li>
<p>这是我自己跟自己打的赌，一旦有一天在这里吃饭的英国官员在马、女人和狗之外还谈点儿别的东西，我就把这枚金币捐到慈善箱里去。</p>
</li>
<li>
<p>他怕人骗他，他是德国人，记账就使用英文，后来又改用更生僻的拉丁文和希腊文。</p>
</li>
<li>
<p>叔本华不信任朋友。他说：“凡是对敌人保密的事也要对朋友保密。”还很毒舌地说：“患难之交真的那么稀有吗？恰恰相反，我们一旦和某人交上了朋友，他就开始患难了，就向我们借钱了。”</p>
</li>
<li>
<p>叔本华特别不能忍受噪声，他说“一个人能安静地忍受噪声的程度同他的智力成反比”</p>
</li>
<li>
<p>“老妇死，重负释。”（Obit anus, abit onus）。</p>
</li>
<li>
<p>在他去世五年后的一天，在德国莱比锡市的一家旧书店里，一个青年鬼使神差地拿起了一本《作为意志和表象的世界》。在这一刻，另一个震惊世界的哲学家诞生了。</p>
</li>
</ul>
<h2 id="第三章-尼采疯了">第三章 尼采疯了</h2>
<ul>
<li>
<p>尼采回忆说，那天他无意间拿起《作为意志和表象的世界》，突然有一个声音在耳边响起：“拿起来吧，拿回去读吧！”</p>
</li>
<li>
<p>一年以后尼采参军，他把一张叔本华的照片放到自己的桌前，一遇到困难就大叫：“叔本华，救救我！”</p>
</li>
<li>
<p>叔本华，一般人以为他是一个悲天悯人的慈祥老头——不！生活中他暴躁刻薄。</p>
</li>
<li>
<p>尼采，一般人以为他是一个放荡不羁的狂人——不！生活中他是一个温和的智者。</p>
</li>
<li>
<p>莎乐美本人也不想就这么跟了尼采，她希望能和两个男人都保持暧昧的关系。但是这怎么可能嘛。虽然两个男人表面上也同意，但其实三个人越处矛盾越大</p>
</li>
<li>
<p>尼采21岁那年，发生了一件可能影响了他一生的事。有一次他在科隆游玩，无意中闯进了妓院。据尼采自己说，他在妓院中慌慌张张地弹了一首钢琴曲就出来了。但是很多人认为尼采就是在这个时期染上梅毒的。</p>
</li>
<li>
<p>讽刺的是，在尼采疯了以后，财富和荣誉接踵而来。</p>
</li>
<li>
<p>然而他妹妹却故意把疯了以后的尼采打扮得像展览品，让尼采穿上白色的袍子。尼采原本就有一把浓密的胡子，这下他更像是古代的先知了。</p>
</li>
<li>
<p>我们都知道，尼采的超人理论后来被希特勒利用，成了纳粹理论的一部分。但其实尼采本人非常憎恨反犹主义者。</p>
</li>
</ul>
<h2 id="第四章-上帝死了">第四章 “上帝死了”</h2>
<ul>
<li>
<p>当上帝“需要”被证明存在的时候，不也就意味着“有可能”不存在吗？</p>
</li>
<li>
<p>上帝只负责创造最开始的世界，后面的事就必须撒手不管了——这就是前面介绍过的“自然神论”。在尼采生活的时代里，“自然神论”非常流行。这种观念把上帝从现实中请了出去，其实和无神论已经差不多了。</p>
</li>
<li>
<p>很多人即便继续相信宗教，也是出于“信教是善的”“不信社会会乱”之类的理由，而不是真正相信《圣经》里的每个字都是绝对真理。</p>
</li>
<li>
<p>在尼采看来，欧洲的精神危机，就是人们集体不知所措。</p>
</li>
<li>
<p>对于欧洲人来说，上帝都不存在了，那还有什么可以相信的呢？哲学吗？可是它搞了半天也没搞出正确答案来啊。哲学家们自己还都不能说服自己呀。</p>
</li>
<li>
<p>在尼采看来，之前哲学家们声称找到的答案，都是骗人的。</p>
</li>
<li>
<p>如果这些关于人生的答案没有经过认真的质疑和思考，只觉得胸口一热就认为自己找到正确答案了，那在尼采看来，都是错误的选择。</p>
</li>
<li>
<p>尼采说，是因为我们每个人的身体里都有一种叫作“权力意志”的东西。“权力意志”这词指的并不是政治权力，而是一种类似于叔本华的“生命意志”的物自体，是一股要让自己变得更强大、更有创造力的，永不停息的欲望。我们每个人都有突然不甘心、不服输，燃起雄心壮志的时候，这就是“权力意志”的表现。</p>
</li>
<li>
<p>传统欧洲人相信基督教的普世精神和卢梭的人文主义，两者强调的都是对弱者的关怀，强调人人平等。尼采特别反对这一点。他认为，同情弱者没错。但同情不能过度，弱者不能以此为理，去要挟、榨取强者，去拖强者的后腿，这样做是可耻的。</p>
</li>
<li>
<p>第一种道德是属于弱者的道德，尼采叫它奴隶道德（又叫“畜群道德”）。表面的内容是同情、仁慈、谦卑、平等。其实本质上，是弱者为了掩盖自己对强者的恐惧、嫉妒和自私，借助奴隶道德去限制强者。</p>
</li>
<li>
<p>这些禁令不是在保护强者——强者不会让自己的财产被别人占有——保护的是那些不能保护自己的弱者。</p>
</li>
<li>
<p>第二种道德是强者的道德，尼采叫它“贵族道德”（又叫“主人道德”）。这种道德鼓励人们积极进取、特立独行、崇尚强大、鄙视软弱、追求创新、拒绝平庸。它代表了生命积极的一面。</p>
</li>
<li>
<p>尼采的道德观不是会造成弱肉强食吗？不是会造成强者欺凌弱者吗？尼采的回答是，人的本性就是残忍的。</p>
</li>
<li>
<p>但是弱者他弱啊，没能力啊，因此只能躲在“奴隶道德”下，隐藏了自己的残忍。弱者是虚伪的，而强者的残忍是彰显自己的本性，这才是正当的。</p>
</li>
<li>
<p>尼采的这个观点，有“人性本恶”的含义，我们未必会同意。而且就算我们同意“人性本恶”，也不意味着用道德去压抑恶、追求善是不对的。但是尼采的主张的确有现实依据。在日常生活里，确实有一些人，与人为善并非因为他们本性善良，而是因为胆小懦弱。这些人一旦摇身变为强者，往往会加倍地凶狠残忍。对此有个成语叫作“小人得志”。</p>
</li>
<li>
<p>尼采推崇强者，可是他发现，大部分强者都被奴隶道德压抑着，不能摆脱弱者对他们的束缚。因此，尼采希望“超人”出现。</p>
</li>
<li>
<p>“超人”这个词在尼采的理论里，不是指拥有强大能力的人，不是说这人一定要当总统、当将军。而是指能够完全按照自己的意志行动，能充分发挥自己的创造力，并且能摆脱奴隶道德，不被弱者束缚的强者。</p>
</li>
<li>
<p>人生虚无，那我就用我的双手创造意义；人生注定是苦，那我就迎接痛苦，因为痛苦是我变成强者的必经之路。</p>
</li>
<li>
<p>他们这些理直气壮的怒气和谦卑来自哪里？是来自对宗教真理的追求吗？不是吧，更像是来自对神佛惩罚的恐惧和对宗教奖赏的向往：只想靠祈求、讨好、献媚来获得舒适的来生。没有想过要靠自己的力量去奋斗和争取。</p>
</li>
<li>
<p>问题是，在旗帜鲜明地反对一件事之前，难道不需要知道自己在反对什么吗？可是这些人在发出哀号的时候，并没有先去了解相关的科学知识。其实，这些知识都公开、免费地存在图书馆、论文数据库里，只要肯学，触手可及。可他们为什么从来都不学，只喊敬畏呢？</p>
</li>
<li>
<p>尼采所处的时代，正是西方自由经济崛起的时代。我们知道，自由经济强调的是竞争，强调胜者为王，只有这种价值观才能充分发挥自由经济的优势。资本主义社会的一大价值观是“成功至上”。</p>
</li>
<li>
<p>在尼采看来，人类的知识，如形而上学、科学理论都是理性的，可是作为世界本质的“权力意志”是非理性的，因此这些理性知识也不是真正的真理，只是“权力意志”构造的假象而已。</p>
</li>
<li>
<p>理论说完了，再说一点儿八卦吧。尼采和叔本华还有一个共同之处，他们都鄙视女性。</p>
</li>
<li>
<p>其实，歧视女性是那个时代普遍的现象，比如康德就很瞧不起他的妹妹。那时的男人都觉得女人没头脑、没文化，不是值得与之聊天的对象。很大一部分原因在于，妇女在那个时代被歧视在先，因而普遍缺少教育，这点反倒又成了性别歧视的依据。</p>
</li>
<li>
<p>在这点上，全世界的古代男人都是一个德行，中国古代的帝王搞砸了国家就说红颜祸水，都是女人害的。实际上叔本华还真这么说过，他说，就是因为从路易十三起，法国宫廷中的女人太奢侈浪费，才最终导致了法国大革命。</p>
</li>
</ul>
<h2 id="第五章-克尔凯郭尔与信仰的飞跃">第五章 克尔凯郭尔与“信仰的飞跃”</h2>
<ul>
<li>
<p>克尔凯郭尔不愿意违背自己的良心，就只能做一个全天下最难做的坏人。他故意在那女孩面前扮演讨厌鬼的角色，想让那女孩忘记他。这活脱脱是一出狗血大戏，但主人公纠结的出发点不是没来由的自作多情，而是信仰与良心。</p>
</li>
<li>
<p>后来在他的一生里，他仍旧把这个女孩当成自己的未婚妻，最后临终的时候，还把全部的财产都留给了她。</p>
</li>
<li>
<p>黑格尔把全体人类都纳入他宏大的形而上学和历史决定论中，把每个人都说成是历史棋盘上的棋子。个人意志、个人幸福和个人信仰在这个宏大的历史中微不足道，没有自己的位置。</p>
</li>
<li>
<p>他们信仰宗教并不是经过自己独立的思考，而是人云亦云，别人都信，他就随大溜去信。克尔凯郭尔认为，这些人喜欢混在群体里，通过集体的暴行来彰显自己的强大——这让人想到了克尔凯郭尔被群氓讥讽嘲笑的境况。</p>
</li>
<li>
<p>假如人的行为必须符合必然规律，那人类还谈什么自由呢？</p>
</li>
<li>
<p>“论证”信仰这个行为本身，就意味着信仰有可能是错的。而真正的信仰应该是无条件地相信。所以从逻辑上讲，我们可以靠论证接近信仰，但是不可能直达信仰。</p>
</li>
<li>
<p>克尔凯郭尔在提醒我们：我们前面对“人生意义”的长篇讨论，仅仅是思想上的热身。而最后的人生答案，不在讨论之中，而在讨论之外的“精神一跃”。</p>
</li>
<li>
<p>此外，帕斯卡还和数学家费马一起创造了“概率论”这门学科，把赌博变成了一个数学问题。</p>
</li>
<li>
<p>对于“该不该信仰上帝”这个问题，帕斯卡的思路是：上帝可能存在，也可能不存在。那么，如果我们信仰上帝，假如上帝存在呢，我们就会获得巨大的好处；假如上帝不存在呢，我们也不会因此失去什么，最多是搭上一些进教堂的时间、多遵守了一些教会规范而已。反过来，如果我们不信仰上帝，假如上帝存在呢，我们会下地狱，受到巨大的惩罚；假如上帝不存在呢，我们顶多省去了进教堂的时间和精力。所以从“赌注”的角度讲，信仰上帝比不信仰更划算。</p>
</li>
<li>
<p>帕斯卡用自己的实际行动证明了克尔凯郭尔的观点：再多的理性思考也无法直达信仰，最后的确需要“信仰的一跃”。</p>
</li>
<li>
<p>形而上学的目的是什么？</p>
</li>
<li>
<p>是用理性的方法找到终极真理。这个真理至高无上，可以指导我们的一切行为。</p>
</li>
<li>
<p>我们追问人生意义，是在面临困惑的时候，想要找一个高于其他答案的指示，好指导我们前行。</p>
</li>
</ul>
<h2 id="第六章-向科学求救">第六章 向科学求救</h2>
<ul>
<li>
<p>叔本华、尼采和克尔凯郭尔从不同的角度动摇了形而上学。</p>
</li>
<li>
<p>尤其是第一次世界大战和第二次世界大战，世界到处都是癫狂、绝望与毁灭，这怎么能让人相信世界是在纯理性的形而上学的统治之下呢？这更像是控制不住的生命意志在到处肆虐吧！</p>
</li>
<li>
<p>科学是坚持纯理性的。科学使用的是归纳法和演绎推理。所有的科学理论，都必须用理性的文字表达，都必须经得住严谨的实验。</p>
</li>
<li>
<p>前面说过，形而上学必须使用理性工具——否则就无法经得住苏格拉底式的怀疑。</p>
</li>
<li>
<p>很多物理学家认为牛顿力学已经揭示了世界的真实面目，此后的物理事业没有太多可发展的余地了，不过是修修补补，把物理数据弄得更精确点罢了。</p>
</li>
<li>
<p>关于这个实验的插图，是画了一只流着口水的、可爱的狗。实际上，巴普洛夫做实验时，是把狗的喉咙打穿，安上一个导管，很残忍的。）</p>
</li>
<li>
<p>科学的发展给哲学带来了两个影响：</p>
</li>
<li>
<p>第一个影响是打击了欧洲人民对宗教的信心</p>
</li>
<li>
<p>一个是公布各种和《圣经》记载矛盾的科学结论，就比如“日心说”之于“地心说”，进化论之于神创论。另外新大陆的发现也踹了宗教一脚，因为《圣经》里并没有记载新大陆。</p>
</li>
<li>
<p>这有点儿像芝诺的那个“知识越多越无知”的规律一样。科学愿意承认自己能力有限，正是它的优点。</p>
</li>
<li>
<p>更何况，科学可以创造出各种人间奇迹。宗教一直号称神迹可以让人们获得丰收、治愈疾病。但在近代，是科学不断在提高粮食产量、治愈疾病，而祈祷并不是每次都管用。</p>
</li>
</ul>
<h2 id="第七章-你真的了解进化论吗">第七章 你真的了解进化论吗？</h2>
<ul>
<li>
<p>一方面是达尔文需要时间酝酿思想，另一方面是他被自己的理论吓到了。直到航行结束二十多年后，达尔文才发表了进化论。</p>
</li>
<li>
<p>一次最有名的咒骂是在进化论发布不久，一个护教人士毫无教养地攻击维护进化论的赫胥黎说：“你的人猿祖先是你祖父那边的，还是你祖母那边的？”赫胥黎反击说：“如果让我从人猿和你那样的人当中选一个当祖父，我宁愿选人猿。”</p>
</li>
<li>
<p>达尔文之牛，和欧几里得一样，不仅因为他设计了一个超强的理论，还因为他的理论在后世几百年中不断被人们攻击、讨论。结果越讨论，证明它正确的证据就越多。</p>
</li>
<li>
<p>基因携带上一代生物的全部特征，在产生下一代的时候又会产生随机的变化。基因的特性完全吻合达尔文的理论。</p>
</li>
<li>
<p>进化论的关键内容有这么几条。</p>
</li>
<li>
<p>第一，生物的基因信息可以遗传给下一代。</p>
</li>
<li>
<p>第二，在遗传的时候，基因会发生不可控制的随机变异。</p>
</li>
<li>
<p>第三，整个生物种群都面临着巨大的生存压力，因为食物有限、天敌捕食，每一代诞生的新生物中的大部分都会死掉。又因为生物内部的生殖竞争（比如雄性抢夺雌性），每一代又有很多生物无法生出后代，繁衍自己的基因。</p>
</li>
<li>
<p>第四，生物后天的变化在大部分情况下不能改变基因。</p>
</li>
<li>
<p>在这个过程里，没有任何外力的干涉，没有任何智慧的设计，一切都是顺其自然地产生。而且完全符合我们观测到的大千世界。</p>
</li>
<li>
<p>进化论的意思仅仅是，基因中那些适合环境的部分被保留下来了，不适合的部分被淘汰了。这中间并没有高级和低级之分。</p>
</li>
<li>
<p>其实，为了生存，有很多生物的构造从复杂演化为简单。</p>
</li>
<li>
<p>这幅圆形图的意思是说，不管生物的构造是否复杂，大家都是演化的幸存者。</p>
</li>
<li>
<p>今天的猿类为什么不会再变成人了</p>
</li>
<li>
<p>人并不比猴子更高级，因此猴子即便再进化，也不一定就会朝着人类的方向进化。到底进化成什么样子，取决于它们受到了什么样的生存压力。</p>
</li>
<li>
<p>在食物短缺的时候，脖子较短的长颈鹿吃不到高处的叶子，死亡的概率更大，因此长脖子的基因更容易留下来。久而久之，长颈鹿的脖子也就越来越长了。</p>
</li>
<li>
<p>最后要说明的是，关于拉马克主义，目前还有一些新的理论，认为部分性状的后天改变是可以遗传给下一代的。</p>
</li>
<li>
<p>误解四：机关枪这么厉害，按照“优胜劣汰”的原则，动物为什么没能进化出机关枪呢？眼睛这么复杂的器官，只靠基因突变就有可能进化出来吗？</p>
</li>
<li>
<p>那么雄孔雀的尾巴呢？这玩意儿纯粹是累赘！</p>
</li>
<li>
<p>这个疑问乍一看的确是对进化论非常有力的攻击，所以达尔文说：“每当我凝视雄孔雀的尾羽，总感到一阵恶心！”</p>
</li>
<li>
<p>雄性个体要把自己的基因传递下去，最优的策略是寻找尽可能多的未孕雌性交配。雌性个体的最优策略，则是千挑万选，寻找基因最优秀的雄性交配。</p>
</li>
<li>
<p>那么雄性想要让自己的基因遗传下去，就必须和其他雄性竞争。最常见的竞争方式是武力搏斗，也包括用华丽的外表、漂亮的巢穴等东西去吸引雌性。所以在有性繁殖的动物里，我们会发现，最漂亮的动物常常是雄性的，和我们今天的社会正相反……</p>
</li>
<li>
<p>。之所以人类的毛发越来越少，这可能是因为只有毛发少的人类才能向异性更好地展现自己的基因优势：体型匀称、体色正常、没有皮肤病等。</p>
</li>
<li>
<p>第一，所有的科学理论都是一种假说。这就是为什么我们前面要费这么大力气解释进化论的细节，我是想让大家明白，达尔文进化论是目前最合理、证据最多、反证最少，也是最简洁、最聪明的假说。</p>
</li>
<li>
<p>简单地说，社会达尔文主义的意思是，我们的社会也应该像遵循优胜劣汰的大自然那样，有很高的淘汰率，把不适合生存的人都淘汰掉，以便达到最高效的进化。</p>
</li>
<li>
<p>无论是天性自私论，还是社会达尔文主义，全都犯了一个错误，那就是从“实然”中推理出“应然”，或者说，从“我们是什么样”推理出“我们应该怎么样”。休谟认为，这种推理是没有道理的。</p>
</li>
<li>
<p>在基督教势力很强的美国，有些地区的教科书仍旧不能讲述进化论，或者必须和神创论放在同等地位上来讲。甚至还有神创论博物馆，用大量模型和文字“论证”进化论是错误的。比如，做了一个原始人和恐龙其乐融融生活在一起的模型，告诉参观者恐龙和人类生活在一个时代……</p>
</li>
<li>
<p>进化论的第二个影响，是进一步消除了人类的神圣性。</p>
</li>
<li>
<p>所以这些冲动往往会压制其他需求，甚至能压制人的理性。</p>
</li>
<li>
<p>而且基因的最高目标是繁衍自己，而不是让人类快乐。从这个角度讲，的确可以把人类看成是基因用来满足目标的工具，看成是被基因操纵的木偶。</p>
</li>
<li>
<p>凡是没有演化出“先天认识形式”的生物，都诞生不了高级的文明，当然不可能思考哲学了。所以“先天认识形式”的存在是必然的。</p>
</li>
</ul>
<h2 id="第八章-科学倒打一耙">第八章 科学倒打一耙</h2>
<ul>
<li>
<p>归谬法是什么意思呢？就是先假设第五公设不成立，然后只要能推出不成立的第五公设和其他公设有矛盾，就可以证明第五公设是多余的了。</p>
</li>
<li>
<p>新的第五公设和前四个公设竟然还是相容的，这不就形成一个全新的几何体系了吗？而且这个几何体系和欧氏几何的各种定理全都不一样。后来这个体系就被称为非欧几何学。</p>
</li>
<li>
<p>罗巴切夫斯基幼年丧父，小时候家里非常穷困，长大以后凭着天才和勤奋进了大学当老师，又一步一步慢慢当上了喀山大学的校长。就算当上了校长，他仍旧过着勤劳朴素的生活，经常在学校里干体力活。</p>
</li>
<li>
<p>罗巴切夫斯基这个校长做得十分称职，他亲自设计学校的建筑，在霍乱流行的时候利用学校的设置对学生和教职工家属采取科学的隔离措施，最终全城在霍乱中的死亡率远远低于当时的平均水平。</p>
</li>
<li>
<p>上中学时，他用6天的时间读完了八百多页的数论专著。</p>
</li>
<li>
<p>就是这样的一个天才，研究非欧几何也没能给他带来太多的财富。因为贫病交加，黎曼39岁就去世了。</p>
</li>
<li>
<p>公理不是什么公认的道理，公理是硬性规定的。</p>
</li>
<li>
<p>但是在非欧几何出现之前，大部分知识分子对几何公理的看法和咱们的老师差不多。认为“平行线不相交”这个陈述是绝对正确的，是不以空间、时间、客观世界以及人的意志为转移的。</p>
</li>
<li>
<p>因此我们前面说，理性主义者相信这世上存在着某种先验的真理，根据之一就是欧氏几何的存在。</p>
</li>
<li>
<p>非欧几何不是建立在某种对客观世界的观察上的。非欧几何是建立在一个假设上，而且这个假设看上去就像是“闲着没事胡思乱想”出来的。结果就在这个“没事找事”的假设的基础上，建立了一套和传统几何完全不同，但是同样能用来解决客观问题、描述客观世界的新几何。在这套新几何里，平行线就可以相交了。</p>
</li>
<li>
<p>“整体大于部分”的概念在无穷大的集合中是有问题的。</p>
</li>
<li>
<p>爱因斯坦是对的，牛顿错了。</p>
</li>
<li>
<p>这不是唯一的一次实验，在这之前和之后，科学家们做了无数次实验，都证明了爱因斯坦的理论正确。</p>
</li>
<li>
<p>人们曾经以为牛顿就是物理世界最终的答案，结果牛顿被打败了，相对论取而代之。</p>
</li>
<li>
<p>首先说狭义相对论，我们看看两个最直观的结论（其实说的是同一件事）。</p>
</li>
<li>
<p>爱因斯坦说，不行，因为任何物体的移动速度都不能超过光速。再牛的武林高手，即便能突破生理极限，也没法突破物理规律的极限，他的拳速至多是接近光速，永远不可能超越光速。</p>
</li>
<li>
<p>相对论说的是，两个运动状态不同的观测者，在看同一个物体的时候，他们看到的这个物体的时间、长短、质量都是不同的。</p>
</li>
<li>
<p>牛顿理论相信物体的时间、长度、质量都是绝对的，无论观测者是谁，一米尺子的长度就是一米，是不变的。狭义相对论则认为，这些数值都是相对的，观测者不同，观测的结果就不同。</p>
</li>
<li>
<p>广义相对论的意思是说，当空间中存在物质和能量的时候，空间就会受到影响而弯曲，质能越大，空间弯曲得越厉害。引力就是由这种空间弯曲产生的。</p>
</li>
<li>
<p>有一个非常形象的比喻。好比我们的空间是一张抻平的床单，当我们往上放一个木球的时候，床单会被压下去，那么木球周围其他更轻的小球就会滚向木球，看上去就好像小球被木球吸引了一样。假如放的是铅球呢，床单会被压得更严重，造成的空间扭曲更大，引力也就更大。</p>
</li>
<li>
<p>时间和空间的独立性是不言而喻的。时间、空间这些概念，是先天的、绝对的，这也是人们相信存在先验真理的理由之一。而相对论认为，人过去对时间和空间的概念都是错的。那么人们对先验理性的信心要进一步打折扣了。</p>
</li>
<li>
<p>我们使用什么样的几何，取决于我们生活在什么样的环境里。</p>
</li>
<li>
<p>这就是说，我们熟悉的数学，其实也是一个用来解释周围世界的工具，是为了适应我们的生活环境被创造出来的，并不就是这个世界的本质。</p>
</li>
<li>
<p>相对论还有一个衍生的结论：我们对整个宇宙的认识有很大的局限性。</p>
</li>
<li>
<p>也就是说，能跟我们发生频繁联络的宇宙，最多是地球附近几光年的范围。人类有生之年能到达的宇宙，也不过几十光年。可是据推断宇宙可能有几百亿光年大，相比之下，我们能活动的范围实在小得可怜。</p>
</li>
<li>
<p>“海森堡测不准原理”</p>
</li>
<li>
<p>而且，因为不能准确预测某个电子下一刻的位置，所以我们连分辨两个电子的能力都没有。当我们观测两个相同电子的时候，我们只能看到两个电子闪来闪去，根本没法知道哪个是哪个。</p>
</li>
<li>
<p>在这个问题上，爱因斯坦扮演了顽固派的角色，试图用各种办法来驳倒测不准原理。爱因斯坦有一句名言：“上帝不掷骰子。”意思是说，世界不可能真正是随机的，一切都是确定的。</p>
</li>
<li>
<p>霍金因此说：“上帝不但掷骰子，还把骰子掷到我们看不见的地方去。”意思是说这世界不仅存在随机性，而且人类无法更准确地了解它。</p>
</li>
<li>
<p>“幻觉”的定义是什么呢？定义就来自经验主义：一个东西我说我看见了，其他人都没看见，那就说我产生“幻觉”了。</p>
</li>
<li>
<p>科学原本是理性的帮手，然而第一次世界大战以后的科学发展却不断揭示了理性的局限。其实，哲学家们很早以前就意识到了人类认识能力的局限。比如休谟认为人类不可能了解因果律，康德认为人类认识不到物自体。这些科学新发现等于佐证了哲学家们的结论。</p>
</li>
<li>
<p>海森堡则是实实在在开发过原子弹，但是在战争中，他站在了纳粹一方。他本来有机会造出原子弹改写历史的（当然，是往黑暗的那一面改写），结果由于算错了数，最终失败了。</p>
</li>
</ul>
<h2 id="第九章-罗素的幸福">第九章 罗素的幸福</h2>
<ul>
<li>
<p>罗素高寿，活了98岁。他出生的时候是中国清朝同治十一年（公元1872年），慈禧太后还不到40岁。他去世的时候是1970年，互联网已经诞生了。</p>
</li>
<li>
<p>他的名言是：“三种单纯又极其强烈的激情支配着我的一生：对爱情的渴望、对知识的追求，以及对于人类苦难不可遏制的同情。”这话更是广为流传。</p>
</li>
<li>
<p>“不是我的孩子，是我老婆的。”</p>
</li>
<li>
<p>罗素能如此受女生欢迎，主要的原因应该是他优雅的举止、智慧的谈吐、幽默的性格以及对每一位女性都非常真诚热情。</p>
</li>
</ul>
<h2 id="第十章-高富富富富富帅维特根斯坦">第十章 高富富富富富帅——维特根斯坦</h2>
<ul>
<li>
<p>但事实上，不少艺术家、思想家都出身富贵家庭。这是因为有钱人也不会是傻子，他们当然不希望自己的后代变成纨绔子弟，他们和普通家庭的家长一样，都会尽力教育好自己的子女。而有钱人有更多的资源可以利用，培养出人才的概率也就可能更大一些。</p>
</li>
<li>
<p>维特根斯坦后来跟别人说：“第一个小时我就发现他没什么可教给我。”那个老师也愤愤不平地和别人抱怨：“第一次见面他就给我上起课来了！”</p>
</li>
<li>
<p>在战争中，维特根斯坦还进行着哲学研究，开始构思他的作品《逻辑哲学论》。他一边打仗一边写，把自己的哲学思想记在了随身携带的一个笔记本里。</p>
</li>
<li>
<p>打歪的那几枪让他们无意中为人类文明做出了他们一生中最大的贡献。</p>
</li>
<li>
<p>后来战俘营中流行伤寒，死了很多人，维特根斯坦的家人以及凯恩斯等朋友都很担心他。他的家族暗中活动，让一名医生宣布维特根斯坦的身体不适合长期监禁。维特根斯坦却觉得这样不道德，拒绝在同伴获释前出去，坚称自己完全健康。</p>
</li>
<li>
<p>此时他也写完了《逻辑哲学论》，认为他自己解决了所有的哲学问题（就像黑格尔、叔本华一样）。</p>
</li>
<li>
<p>关于这事还有个段子，当时有人问他为什么把钱给自己的家人，怎么不给穷人啊。维特根斯坦回答说，金钱让人堕落，而他的亲人已经够堕落了，所以再堕落点儿也没关系。</p>
</li>
<li>
<p>但维特根斯坦已经对乡村的工作和生活环境失望至极。在法庭审查后，他就结束了小学教师的生涯。</p>
</li>
<li>
<p>维特根斯坦到了剑桥继续念博士。交了学费之后，他已经没有钱继续生活。在凯恩斯的建议下，维特根斯坦向剑桥申请津贴。</p>
</li>
<li>
<p>维特根斯坦解释完了，拍了拍两个老师的肩膀说：“别介意，我知道你们永远都搞不懂我在讲什么。”</p>
</li>
<li>
<p>。不久他的两个姐姐终于获得了“非犹太人”的身份，代价是：</p>
</li>
<li>
<p>1.7吨黄金。</p>
</li>
<li>
<p>他家统共得有多少钱啊……</p>
</li>
<li>
<p>战争结束以后，维特根斯坦在剑桥当了一阵子教授，他生活非常简朴，几乎到了苦行僧的地步。由于他的天才思想和古怪的性格，他在剑桥拥有一群崇拜者。这些学生不仅崇拜他的思想，还模仿他的穿着打扮和习惯动作。</p>
</li>
<li>
<p>一个是，毛姆小说《刀锋》主角的原型就是维特根斯坦，两者在经历上有很多呼应的地方。</p>
</li>
</ul>
<h2 id="第十一章-用逻辑搭建哲学大厦">第十一章 用逻辑搭建哲学大厦</h2>
<ul>
<li>
<p>请一个文学家来写数学论文，这样的哲学研究到后来能不混乱吗</p>
</li>
<li>
<p>逻辑实证主义者也是这么想的。他们要进行一项伟大的工程，要用严谨的逻辑符号代替之前所有的哲学观点，用逻辑的方法分析前人的一切命题，最终把整个哲学世界都用逻辑符号重铸一遍。</p>
</li>
<li>
<p>光用逻辑符号重铸，还只是第一步。逻辑实证主义还强调“实证”。</p>
</li>
<li>
<p>“实证”的意思就是说，逻辑实证主义得出的新结论，必须能有经验实实在在的证明。</p>
</li>
<li>
<p>我还是我吗？”这话如果用逻辑来分析，那么显然是一句没什么用处的话。然而我们知道，在生活中我们说这句话的时候，有自己的意思，而且不同的情景下还可以代表不止一种意思。</p>
</li>
<li>
<p>维特根斯坦发现，语言并不能只停留在表面的逻辑分析上。同样的一句话，说话的情境不同，说话人的语气、表情、手势不同，常常会表达出不同的意思。换句话说，每一个情境都给语言制定了不同的规则，语言得和规则结合在一起，才能显示真正的意思，而这规则又是没有逻辑可言的。</p>
</li>
<li>
<p>维特根斯坦发现，语言并不能只停留在表面的逻辑分析上。同样的一句话，说话的情境不同，说话人的语气、表情、手势不同，常常会表达出不同的意思。换句话说，每一个情境都给语言制定了不同的规则，语言得和规则结合在一起，才能显示真正的意思，而这规则又是没有逻辑可言的。</p>
</li>
</ul>
<h2 id="第十二章-哲学其实很实用">第十二章 哲学其实很实用</h2>
<ul>
<li>
<p>和逻辑实证主义差不多同一个时期，出现了一个新的哲学流派——实用主义。实用主义哲学家遇到了和逻辑实证主义一样的困惑：科学在飞速发展，然而哲学却一直在原地打转，这问题到底出在哪里？</p>
</li>
<li>
<p>尼采说，真理和谬误其实全是虚构的，区分真理和谬误的关键是真理实用，而谬误不实用。</p>
</li>
<li>
<p>那么，思想和真理什么的，其实就是人们应对环境的工具，源自人类繁衍自己的需要</p>
</li>
<li>
<p>在进化论里，生物的机能要随着环境不断改变，同样真理也不应该是一成不变的，也应该随着环境不断修正。在这个环境下，真理是这样，到了另一个环境里，真理就变成另外一个样了。</p>
</li>
<li>
<p>我们接受因果律的原因是它对我们有用，如果不接受它，我们就没法生活了。</p>
</li>
<li>
<p>那不就没有了分辨是非、争论真伪的必要了吗？要是人人都以实用为原则，那不就会出现极端的个人主义，不就没有真伪、没有善恶、没有道德可言了吗？</p>
</li>
<li>
<p>对于上帝存在不存在的问题，实用主义者说，假使相信上帝会给我们带来好的结果，那么我们就相信上帝是存在的。这观点恐怕宗教信徒和无神论者都没法接受。</p>
</li>
<li>
<p>不像马克思那样试图从根本上解决问题，而是从小地方一点儿一点儿改良，遇到什么问题就解决什么问题。</p>
</li>
<li>
<p>“黑猫白猫，能抓住老鼠就是好猫。”</p>
</li>
<li>
<p>这个哲学观点能不能帮助我们减少痛苦，能不能让我们内心平静，能不能让我们不再空虚、不再恐惧、不再陷入物欲的无限烦恼之中。</p>
</li>
<li>
<p>我们这本书开始还好好谈哲学，但是后面越来越扯了，结果说到选择真理的标准是实用与否，这还是严谨的哲学吗？</p>
</li>
</ul>
<h2 id="第十三章-如何看穿伪科学">第十三章 如何看穿伪科学？</h2>
<ul>
<li>
<p>实证主义是说，所有的科学经验，必须有经验来证明它是正确的。</p>
</li>
<li>
<p>这就是休谟抨击过的错误：再多的偶然观测也不能得出必然的结论。</p>
</li>
<li>
<p>这个理论叫作“概率真理”，说科学家不可能找到绝对真理，但起码能不断提高科学理论为真的概率。</p>
</li>
<li>
<p>可惜的是，这个理论也有问题。</p>
</li>
<li>
<p>最经典的反驳是“亨普尔悖论”</p>
</li>
<li>
<p>第二年，波普尔就意识到，在中学里除了数学学科外，学其他的科目都是在浪费光阴。</p>
</li>
<li>
<p>独立思考是创立一门理论必备的精神。</p>
</li>
<li>
<p>波普尔看出了其中的问题，提出了一个检验科学理论的重要标准：可证伪性。</p>
</li>
<li>
<p>什么是科学理论，什么不是科学理论？其中关键的标准，是看这个理论有没有可以被证伪的可能。</p>
</li>
<li>
<p>如果暂时没有人能证明它是错的，那它暂时就是真的。</p>
</li>
<li>
<p>比如“所有的乌鸦都是黑色的”，这就是一个可证伪的命题。这等于说“只要你能找到一只不是黑色的乌鸦，就能说明这个命题是错的”。既然我们尚未找到不是黑色的乌鸦，那么到目前为止这个命题就是暂时正确的。</p>
</li>
<li>
<p>这个试错、修改、完善的过程是无休止的，科学也因此会越来越接近真理。</p>
</li>
<li>
<p>概率主义认为，我们每一次检验科学理论正确，都是在为科学做贡献。证伪主义认为，检验正确并不为科学做贡献，只有检验出科学理论是错的，才是真正为科学做贡献。</p>
</li>
<li>
<p>有些预言家提出了精确的预言，但是在遇到和他们预言不符的事实时，他们不会承认自己错了，而是用自己的理论进一步诡辩。</p>
</li>
<li>
<p>证伪主义不光能干掉宗教和巫术，还能干掉一些哲学命题。</p>
</li>
<li>
<p>要注意，不可证伪的命题并不一定是错误的命题，而是属于无法用经验检验的命题。</p>
</li>
<li>
<p>波普尔因此主张应当建立“开放社会”，要求执政者能够广泛接受意见，赋予大众质疑政策的权利。因为执政理论和科学理论一样，永远都可能是错的。必须不断地接受证伪，才能保证理论的正确。</p>
</li>
<li>
<p>可以随时“纠错”而不是“多数说了算”，这才是波普尔等人眼中的现代民主制度的核心精神。</p>
</li>
<li>
<p>从逻辑上说，“可纠错”并不等于“最正确”，两者之间还隔着一道巨大的鸿沟。比如，该怎么定义“错”就是一个致命问题——“可纠错”不代表越纠越对，没准儿还越纠越错呢。而且“可纠错”还意味着巨大的成本。就像老师有时会在课堂上强行终止学生的讨论，因为不可能为争论支付无限多的时间成本。</p>
</li>
<li>
<p>因为历史不可重复检验，谁也不能让时光倒流</p>
</li>
<li>
<p>在历史研究中，我们常说“历史不能假设”，诸如“假如没有××，历史会怎样”的讨论，往往没有结果</p>
</li>
<li>
<p>所以在波普尔看来，历史主义大谈的“人类历史的规律”，其实是不可证伪的。</p>
</li>
<li>
<p>波普尔认为，科学只能研究局部的社会问题，如某条法律好不好用，某个政策价值如何。因为只有局部问题才可以反复验证，而那些执掌全局的宏观理论，都是不符合科学精神的。</p>
</li>
<li>
<p>总而言之，证伪主义是区分“科学”和“伪科学”的利器，但是用在社科领域的时候，还有很多争议。</p>
</li>
<li>
<p>那我劝您啊——找个机会蹬了吧！因为“总会发达”是不可证伪的呀。与其听他发誓海枯石烂，还不如让他说“我待会儿给你买个冰激凌”要好。最起码这句是立刻就能证伪的。</p>
</li>
<li>
<p>形而上学追求的是绝对真理，而绝对真理恰恰是不可证伪的——因为“可证伪”就意味着“可能会错”，就不可能是“绝对为真”。</p>
</li>
<li>
<p>比如“运动是绝对的，静止是相对的，没有绝对静止的事物”，这就是一个典型的不可证伪的命题。要证伪这个命题，就要找到一个永远静止的事物，但是人不可能观测“永远”那么长的时间。</p>
</li>
<li>
<p>证伪主义看见这两个人，会笑着说：“你们辩论不清的根本原因是你们俩的命题都不能证伪呀，其实都是空谈呀。”</p>
</li>
<li>
<p>康德和黑格尔是形而上学的巅峰。在那个时候，人们相信，可以通过理性找到永恒的真理。但是从叔本华开始，越来越多的哲学家质疑理性的局限。从尼采到克尔凯郭尔，再到维特根斯坦和波普尔，每个人从自己的角度否定了形而上学的存在。越来越多的人同意：</p>
</li>
<li>
<p>形而上学走不通，形而上学的问题都没有答案。</p>
</li>
<li>
<p>可是如果形而上学走不通了，那接下来该怎么办呢？</p>
</li>
<li>
<p>该怎么回答“人生意义是什么”的问题呢？</p>
</li>
<li>
<p>最直接的答案是不可知论和虚无主义：既然形而上学的问题都没有答案，那就意味着我们不知道人类的一切知识是否可靠，这个世界没有终极真理，没有本质，人生也没有意义。</p>
</li>
<li>
<p>形而上学没有答案，我们又不得不需要一个答案。</p>
</li>
<li>
<p>顶级艺术家思考的问题常常和哲学家一样，都是一些形而上的终极问题。只不过艺术家不用理性探索，而是想通过艺术作品让别人和自己感同身受</p>
</li>
<li>
<p>终极问题没有答案，最聪明的人类追求到最后，不约而同地发现这是一条绝路。</p>
</li>
<li>
<p>但正是因为这些艺术家陷于永远无法挣脱的苦闷，而他们又非要倚仗自己过人的天赋全力挣扎，所以他们的作品才能深深打动我们。</p>
</li>
<li>
<p>所以世界上才有艺术这东西。</p>
</li>
<li>
<p>在事情过后很短的时间内，他就收到了新西兰来的信。信里问他是不是跟维特根斯坦用拨火棍打起来了。要知道，新西兰距离英国足足有半个地球远啊，看来任何时代的人都热衷于传八卦，而且越传越邪乎。</p>
</li>
<li>
<p>所以这事说起来就是，世界级富翁的儿子维特根斯坦用拨火棍单挑过两位世界级学者，这两位世界级的学者又教出来一位世界级的大富翁。</p>
</li>
</ul>
<h2 id="第十四章-科学不为真理只为实用">第十四章 科学不为真理，只为实用？</h2>
<ul>
<li>
<p>这是由另外一颗没被发现的水星卫星的吸引造成的。他们根据牛顿理论计算出了这颗未知卫星的位置和大小，还给它起了一个名字。但实际上，他们根本观测不到这颗卫星。</p>
</li>
<li>
<p>别问我这是什么意思，我直接复制过来的，我也不知道这是啥意思。</p>
</li>
<li>
<p>这就好像我们生活中遇到的那种从来不懂得从根本上反省的人。</p>
</li>
<li>
<p>总之他遇到的所有坏事，都可以从别人身上找出无数理由，从而“严格地论证”出，他自己是不会出错的。</p>
</li>
<li>
<p>实际上科学家们不仅喜欢找理由，而且无时无刻不在找理由。</p>
</li>
<li>
<p>空气阻力也好，物体表面不够平滑也好，尺子不够精确也好，总之到处都有引起误差的原因。</p>
</li>
<li>
<p>宇称不守恒定律</p>
</li>
<li>
<p>当年牛顿定律发表后，天文学家们发现，按照牛顿的公式，天王星的位置怎么都计算不对。最后天文学家们推测应该还有一个没有被发现的星星。天文学家计算出了这颗星星的轨道，最终果然发现了它，这就是海王星。</p>
</li>
<li>
<p>——你看，这次就真发现新星星了。</p>
</li>
<li>
<p>那么，当下次牛顿定律和现实不符的时候，我们到底该怎么判断呢？</p>
</li>
<li>
<p>另一边是一个在两个世纪里被无数人经过无数次验证的经典理论，外加一颗远离人类一亿公里的、小小的、尚未被发现的新卫星，以及我们对自己天文观测能力不足的谦虚承认。</p>
</li>
<li>
<p>在讲牛顿的时候，我们说过衡量理论学说的两个标准，第一位是预言的准确性，第二位是简洁性。</p>
</li>
<li>
<p>“奥卡姆剃刀”大致的意思就是，当两个学说都能准确解释同一件事的时候，我们选择更简单的那个。</p>
</li>
<li>
<p>不为别的什么，就只是因为它简单。</p>
</li>
<li>
<p>根据奥卡姆剃刀原则，我们选择科学理论的原则竟然不是哪一个更接近真理，而是哪一个更简洁实用。</p>
</li>
<li>
<p>用别的理论，做不到同样准确又同样简洁。</p>
</li>
<li>
<p>因为到了这个时代如果再不相信相对论，眼瞅着身边的好多事就办不成了。</p>
</li>
<li>
<p>这其实是一个渐变的过程，是随着反对旧理论、支持新理论的证据越来越多，相信旧理论的科学家不断地给那些证据找理由，直到所有找出的理由堆积在一起比新理论还复杂、还难以让人接受的时候，科学理论就被改写了。</p>
</li>
<li>
<p>虽然物理学研究的结果更精确，但是生物学的方法简单实用，所以我们选择使用生物学。还是因为实用。</p>
</li>
<li>
<p>我们今天都知道地球绕着太阳转，可是我们平时会这么描述太阳——我们说太阳“升起”，太阳“落下”。当我们说“日出”和“日落”的时候，我们其实是在假设地球静止不动，运动的是太阳。</p>
</li>
<li>
<p>为什么要这么做呢？因为在日常生活里，认为“大地静止不动”更实用啊。</p>
</li>
<li>
<p>科学就是建立在经验主义基础上的、以实用主义为原则筛选出来的、可以被证伪的理论。</p>
</li>
<li>
<p>所以波普尔认为，先有观察后有理论是错的。应该是先有理论（先提出问题、设定目的），再有观察。</p>
</li>
<li>
<p>波普尔说，我们并不能证明世上存在普遍的规律，但是人类为了生存，为了便于使用理论，必须在各种混乱的经验中总结出规律来。换句话说，人类是带着“总结规律”的目的去观察、去总结经验的，因而发现了各种普适的规律。</p>
</li>
</ul>
<h2 id="第十五章-为什么要相信科学">第十五章 为什么要相信科学？</h2>
<ul>
<li>
<p>科学坚持经验主义、坚持实用主义，并且完全开放，允许证伪、允许质疑，反对独断论。</p>
</li>
<li>
<p>你能实现了就算你有本事，你要是不能实现，你的理论再天花乱坠我们也弃你不用。对于现代医学，我们也用同样的标准对待。</p>
</li>
<li>
<p>相对论的胜利来自观测实验的胜利，是经验的正确证明了理论的正确，而不是相反。</p>
</li>
<li>
<p>那怎么知道星座到底有没有用呢？找一堆人，随机分组，一组人用和本人相符的星座的预测结果，另一组用和本人不符的星座的预测结果，但也告诉他们这些都是真实的预测结果。看看两组人觉得灵验的比例是否相近。实际上，有人已经做过这样的实验，把同样一段预测结果发给不同星座的人，结果人们都表示很“灵”。</p>
</li>
<li>
<p>双盲实验在这里排除的是“幸存者偏差”的干扰。这个意思是说，只有被验证为正确的预言，人们才会广为传诵，才愿意记录在历史书上。那些出错的预言，人们没兴趣传播。因此，光从历史书上或者邻里的传闻里听说的某大师灵验所留下的印象，和现实是有偏差的。</p>
</li>
<li>
<p>因为治疗好了，治疗者绝不可能说自己是蒙的，而是强调靠的是自己的医术。治不好，就说每个病人的具体情况不同。这是典型的不可证伪。</p>
</li>
<li>
<p>假如你拒绝检验，那么你的理论在大部分情况下就是不实用的。</p>
</li>
<li>
<p>教会当年用了成千上万个宗教裁判所、遍地而起的火刑架都没能统一观点，科学家们只靠着几本学术期刊就搞定了。这不是非常了不起的事吗？</p>
</li>
</ul>
<h2 id="第十六章-寻找人生答案">第十六章 寻找人生答案</h2>
<ul>
<li>
<p>人天性趋乐避苦，人类发展奋斗千万年，你以为全体人类在干吗呢，不就是在干这一件事吗？不就是在通过经验主义和实用主义的原则，尽一切手段来驱散各种负面情绪，追求充实和快乐的生活吗？</p>
</li>
<li>
<p>“平常生活来之不易，因此平凡的生活并不平凡”</p>
</li>
<li>
<p>这些都不是唯一的答案。这世上每一个不困惑的人，对这些问题都有自己的回答。您如果想最简便地解决这些问题，那么就去找各种人问一问，选一个自己最喜欢的答案就是了。</p>
</li>
<li>
<p>厂商要用户在决定花钱购买的那一瞬间，大脑做出“只要我现在购买，我就能获得好处”的判断。哪个产品能让用户产生这个判断的概率最高，产生的购买冲动最强，哪个产品就更容易占领市场。</p>
</li>
<li>
<p>换句话说，在很多市场里，最好卖的产品是“在消费者做出决定那一瞬间最能打动消费者”的产品，而不是“真正提供价值”的产品，更不是“消费者决定购买后好久还能从中受益但是消费者意识不到”的产品。</p>
</li>
<li>
<p>换句话说，在很多市场里，最好卖的产品是“在消费者做出决定那一瞬间最能打动消费者”的产品，而不是“真正提供价值”的产品，更不是“消费者决定购买后好久还能从中受益但是消费者意识不到”的产品。</p>
</li>
<li>
<p>那么我们看到的，就不是从理性上讲最正确的答案，而是“大多数带着同样疑问的人扫了一眼，立刻觉得啊啊啊好有道理好有共鸣”的答案，是“大脑在一秒之内不加思考就认同”的答案，是“看上去很对但未必经得起推敲”的答案。</p>
</li>
<li>
<p>我们一生绝大多数的时间，都沉浸在各种各样的情绪起伏中，靠情绪的浪涛淹没我们对人生的困惑。</p>
</li>
<li>
<p>案，哲学还给不了我们答案。这就好比老师给我们出了一道题，这道题明明是“无解”，还要求我们必须解出来，这不是太荒诞了嘛！</p>
</li>
</ul>
<h2 id="第十七章-人生荒诞无意义吗">第十七章 人生荒诞、无意义吗？</h2>
<ul>
<li>
<p>第一次世界大战后，欧洲逐渐兴起了一个叫作“存在主义”的学派，他们就认为人生是荒诞的。其中最为我们所熟悉的两个人，是萨特和加缪。</p>
</li>
<li>
<p>萨特是历史上第一个自己主动拒绝领诺贝尔奖的人。因为他认为一个真正的作家不能被机构规范，所以拒绝接受来自官方的荣誉。罗素大爷没拒绝诺贝尔奖，但是也干了件猛事：罗素最著名的身份是数学家，诺贝尔奖没有数学奖，罗素是靠他写的书得了诺贝尔文学奖。所以罗素得到了一个稀有成就：“获得诺贝尔奖的数学家”。</p>
</li>
<li>
<p>但是不难承认，在剑拔弩张的冷战时代，罗素大爷跟萨特能干出审判美国总统这种猛事，他们的胆识和社会责任心都无愧于“知识分子”的称号。</p>
</li>
<li>
<p>加缪曾跟朋友说波伏娃倾心于他，但他拒绝了，因为他担心波伏娃是那种会在枕头边絮絮叨叨的才女。</p>
</li>
<li>
<p>在没有意义的情况下，人们还得假装有意义地活下去，所以存在主义者认为，这个世界是荒谬的。</p>
</li>
<li>
<p>也不光是幼儿教育，成人学习很多知识也是靠故事的形式。</p>
</li>
<li>
<p>故事，是大部分人理解这个世界的方式。</p>
</li>
<li>
<p>故事必须有开头，有冲突，有高潮，有结尾。</p>
</li>
<li>
<p>我们对整个世界的了解，都建立在一个有头有尾、有高潮的故事的基础上。</p>
</li>
<li>
<p>。在生命最后的旅程里，自己的每一个行动似乎都增加了一层别样的意义。就像电影里演的那样，那些面对死亡的人对人生多了一层思考（这是对的），因此超越了平凡的人生，做了很多有意义的事（这是不一定的）。</p>
</li>
<li>
<p>是不是有一种强烈的荒诞感？人生怎么就这么毫无征兆地、突如其来地、莫名其妙地结束了呢？我还有很多想做的事情没有做啊！</p>
</li>
<li>
<p>然而这种事是有可能发生的。现实中就有很多人，在毫无征兆的情况下，因为意外、疾病，还没反应过来就死掉了啊。</p>
</li>
<li>
<p>总之，在我们的头脑中，我们对自己的人生的评价、规划，一定是个故事模式，一定有高潮和结尾。但现实并不是如此。当现实和我们的印象发生冲突的时候，荒谬感就产生了。</p>
</li>
<li>
<p>在这个场景里，这堆木头是存在的，但是还没有被赋予本质，这就是“存在先于本质”。</p>
</li>
<li>
<p>什么都不是，“我”就是存在着。“我”先存在在这里，然后再讨论“我”是什么。</p>
</li>
<li>
<p>——其实可以说，哲学到了这里，仿佛画了一个大圆，又回到笛卡尔的“我思故我在”。我们又要从“我存在”开始了。</p>
</li>
<li>
<p>只有在自由选择的时候，我才能说“我有自我意识”，才能说“我是存在”的，才能说我是一个活生生的人，而不是一块木头或者是被别人操纵的木偶。</p>
</li>
<li>
<p>第一，我的本质是不断变化的，我的每一个选择都在一点点地塑造我。</p>
</li>
<li>
<p>在心理学上，有一些人主张“寻找自我”，通过冥想、心理分析等办法，找到内心中的那个“真我”。在存在主义看来，这就是错的。根本没有一个固定不变的“真我”等着我寻找，“真我”是在我自己手中不断创造的。</p>
</li>
<li>
<p>真正的自由也不是不经思考随便一选——假如我们的每一个决定都是通过掷骰子决定的，我们不会认为自己拥有自由意志。</p>
</li>
<li>
<p>真正的自由也不是听从自己的欲望——假如每一个决定都听从欲望，那我们就是最低等的动物了，那也不具备自由意志。</p>
</li>
<li>
<p>真正的自由意志，是经过认真思考后的结果。思考的是什么呢？思考的是我能不能为我的选择负责。</p>
</li>
<li>
<p>当我选择看一部电视剧的时候，我认为这个选择是对的吗？我真愿意把自己生命中的几个小时献给这部电视剧，而不是用来做别的吗？当我选择拖延的时候，我愿意承担拖延的后果吗？我真心觉得拖延比不拖延好吗？</p>
</li>
<li>
<p>如果答案是“否”，我还是进行了选择，这在萨特看来，就不是真正的选择。</p>
</li>
<li>
<p>萨特认为，这种想法是一种“自欺”，人哪怕在极端的情况下，都有选择的自由。哪怕是一个囚徒，还可以选择用什么心态面对每天的生活。哪怕拒绝选择，其实也是一种选择。</p>
</li>
<li>
<p>无论生活怎么摧残、禁锢我，总有一部分自由掌握在我自己的手中。我通过对这些自由的郑重选择，获得了我的自由意志，确认了我的存在，创造了我的本质。这是任何人都夺不走的。这是存在主义版本的“一个人可以被毁灭，但不能被打败”，这是哲学给我们的尊严。</p>
</li>
<li>
<p>很多人用这个寓言来比喻现代社会里人性的异化，那么它批判的，是人们在永不停歇的“工作—消费”中毫无意义地耗尽一生。我们攒够了钱和假期，通过消费换来快感的那一刻，就如同西西弗把石头推上山顶的一瞬间，看似有所成就，实则只是无意义生活中的一环</p>
</li>
<li>
<p>人生里所有的日常活动，其实都是在毫无意义地推石头。我们要去做的，不是拒绝推石头——因为无论我们做什么，世界都是荒诞的，想拒绝荒诞我们做不到——我们能做的，只有意识到这是荒诞的。</p>
</li>
<li>
<p>如果我们把推石头理解成“沉迷于‘上班—消费’的现代生活”，那这样的西西弗的确是阿Q，因为“沉迷于‘上班—消费’”这件事是可以逃脱的。但是，如果我们把推石头理解成“人生的一切行为”，把荒诞理解成人生的必然（我们前面已经证明过这一点了），把神灵对西西弗的处罚看成绝对不能逃脱的宿命，那么西西弗的幸福就不值得嘲笑，反倒是尊严和勇气的体现。</p>
</li>
<li>
<p>换句话说，在存在主义看来，我们在这世界里无论做什么事情，无论是帮助他人、创造艺术、去做英雄、改变历史、做任何的丰功伟业，从根本上讲仍旧是没有意义的，我们仍旧和西西弗推石头一样，在虚无的世界里徒劳无功。这是每一个认真思考哲学的人都一度体验过的。</p>
</li>
</ul>
<h2 id="小结-人生的意义">小结 人生的意义</h2>
<ul>
<li>
<p>关于“世界的本质到底是什么”的问题，没有标准答案，你愿意相信什么都可以。可以相信不可知论；相信先天认识形式；也可以相信真理不能说，是主观的、非理性的，只能靠领悟；也可以相信世界是一场大梦；或者相信宗教信条。</p>
</li>
<li>
<p>世界的本质就是我的信念。我相信世界的本质是什么，它就是什么。</p>
</li>
<li>
<p>没有绝对真理，没有人生意义，我们应该鼓足勇气，直面人生的虚无，认真面对眼前的每一个选择，这样就找到了自己的人生意义</p>
</li>
<li>
<p>叔本华说，人生就是在欲望和空虚中摇摆，沉浸在艺术里的一瞬间可以得到暂时的解脱。这话说得没错啊。</p>
</li>
<li>
<p>看看有哪些东西是暂时不用怀疑的</p>
</li>
<li>
<p>对于这种用一碗饭就可以暂时“悬置”起来的哲学问题，我给它们起了个名字，叫“吃饱了的哲学问题”。</p>
</li>
<li>
<p>这世上有一些问题，是我们在关注日常生活的时候，尤其是在饥饿和贫穷中奋力挣扎的时候，顾不上思考的问题。</p>
</li>
<li>
<p>但无论如何，总得要“为点儿什么”。而这个“为点儿什么”，就是我此时此刻能接受的人生意义。</p>
</li>
<li>
<p>别忘了，真正的人生意义是不能用理性的文字描写的，真正的意义就是那种不可描述的感觉。</p>
</li>
<li>
<p>加缪说过：“真正严肃的哲学问题只有一个，那就是自杀。”</p>
</li>
<li>
<p>这些答案就是你现在的人生意义。</p>
</li>
<li>
<p>有些和死神擦肩而过的人说，经过这一场磨难，自己大彻大悟，对人生有更高层次的看法了。可是，我们每个人都知道自己早晚会死，为什么非要到死到临头的时候才会大彻大悟呢？那就是因为绝大部分人平时从不愿意直面死亡，潜意识里认为自己可以永远逃避死亡。所以只有死到临头，才会开始反省人生。</p>
</li>
<li>
<p>怕死还意味着我们要珍惜生命。</p>
</li>
<li>
<p>而且以人类现有的经验而言，死亡是宇宙中少有的一件不可逆的事情。</p>
</li>
<li>
<p>如果死亡确实如唯物主义所说，是意识的永远终结，那么就意味着我们失去了一切探索世界的机会。我们甚至可以感性地说，那就意味着我们自愿放弃了这世界给我们的最大的恩赐，而这恩赐很可能只有这一次，放弃了就没有了。</p>
</li>
<li>
<p>所以维特根斯坦在《逻辑哲学论》中说：“人生问题的解答在于这个问题的消除。”</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《卓有成效的管理者》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8D%93%E6%9C%89%E6%88%90%E6%95%88%E7%9A%84%E7%AE%A1%E7%90%86%E8%80%85/</link>
      <pubDate>Wed, 21 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8D%93%E6%9C%89%E6%88%90%E6%95%88%E7%9A%84%E7%AE%A1%E7%90%86%E8%80%85/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;首先要找出什么事根本不必做，这些事做了也完全是浪费时间，于最终的成果无助。将时间记录拿出来，逐项逐项地问：“这件事如果不做，会有什么后果？”如果认为“不会有任何影响”，那么这件事便该立刻取消。对付这类事情，只要审度一下对于组织有无贡献，对于他本人有无贡献，或是对于对方的组织有无贡献。如果都没有，简单谢绝就可以了。&lt;/li&gt;
&lt;li&gt;第二个该问的问题是：“时间记录上的哪些活动可以由别人代为参加而又不影响效果？”&lt;/li&gt;
&lt;li&gt;“授权”这个名词，通常都被人误解，甚至是曲解了。这个名词的意义，应该是把可由别人做的事情交付给别人，这样才能做真正应由自己做的事——这才是有效性的一大改进。&lt;/li&gt;
&lt;li&gt;还有一项时间浪费的因素，是管理者自己可以控制并且可以消除的，这项因素是：管理者在浪费别人的时间。这种现象并不明显，但有一个简单方法可以诊断出来：去问问你的下属。有效的管理者懂得有系统及诚恳地问他的下属：“请你想想看，我常做哪些浪费你的时间而又不产生效果的事情？”问这样的问题，而且问得对方敢说真心话，才是有效管理者的特色。&lt;/li&gt;
&lt;li&gt;事实上，一位管理者大刀阔斧地减少不必要的工作，绝不会有太大的风险。人常常会有高估自己地位的重要性的倾向，认为许多事非躬亲不可。纵然是最有效的管理者，仍然免不了有许多不必要的和非生产性的工作。大胆减少自己的工作，真会出问题吗？只要看有些管理者虽然身患重病，甚至于身有残疾，仍能干得有声有色，就可以知道这种顾虑是多余的。&lt;/li&gt;
&lt;li&gt;大胆减少无谓的工作，绝对无损于有效性。&lt;/li&gt;
&lt;li&gt;一项重复出现的危机应该是可以预见的。因此，这类危机可以预先防止，或可以设计成一种例行工作，使每个人都能处理。所谓例行工作，是将本来要靠专家才能处理的事，设计成无须研究判断，人人均可处理的工作。例行的工作，可以说是专家们从过去的危机中，学会的一套有系统、有步骤的处理方式。&lt;/li&gt;
&lt;li&gt;一个平静无波的工厂，必是管理上了轨道。如果一个工厂高潮迭现，在参观者看来大家忙得不可开交，就必是管理不善。管理好的工厂，总是单调无味，没有任何刺激动人的事件。那是因为凡是可能发生的危机都早已预见，且已将解决办法变成例行工作了。&lt;/li&gt;
&lt;li&gt;另一个常见的浪费时间的原因，是组织不健全。其表现就是会议太多。我们之所以要开会，只是因为各有各的工作，要靠彼此合作才能完成某一特定任务。我们之所以要开会，只是因为某一情况所需的知识和经验，不能全部装在一个人的头脑里，需要集思广益。试着看看我们的时间记录，如果发现开会太多——例如参加会议的时间占总时间1/4以上，那一定是一个浪费时间的不健全组织。&lt;/li&gt;
&lt;li&gt;最后一项浪费时间的因素，是信息功能不健全。&lt;/li&gt;
&lt;li&gt;有效的管理者知道他必须集中他的自由时间。他知道他需要集中整块时间，时间分割成许多段，等于没有时间。时间如果能集中，即使只有一个工作日的1/4，也足可办理几件大事。反之，零零碎碎的时间，纵然总数有3/4个工作日，也是毫无用处。&lt;/li&gt;
&lt;li&gt;人们以为可以晚上加班，因此反倒没有抓紧白天的工作时间。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<ol>
<li>首先要找出什么事根本不必做，这些事做了也完全是浪费时间，于最终的成果无助。将时间记录拿出来，逐项逐项地问：“这件事如果不做，会有什么后果？”如果认为“不会有任何影响”，那么这件事便该立刻取消。对付这类事情，只要审度一下对于组织有无贡献，对于他本人有无贡献，或是对于对方的组织有无贡献。如果都没有，简单谢绝就可以了。</li>
<li>第二个该问的问题是：“时间记录上的哪些活动可以由别人代为参加而又不影响效果？”</li>
<li>“授权”这个名词，通常都被人误解，甚至是曲解了。这个名词的意义，应该是把可由别人做的事情交付给别人，这样才能做真正应由自己做的事——这才是有效性的一大改进。</li>
<li>还有一项时间浪费的因素，是管理者自己可以控制并且可以消除的，这项因素是：管理者在浪费别人的时间。这种现象并不明显，但有一个简单方法可以诊断出来：去问问你的下属。有效的管理者懂得有系统及诚恳地问他的下属：“请你想想看，我常做哪些浪费你的时间而又不产生效果的事情？”问这样的问题，而且问得对方敢说真心话，才是有效管理者的特色。</li>
<li>事实上，一位管理者大刀阔斧地减少不必要的工作，绝不会有太大的风险。人常常会有高估自己地位的重要性的倾向，认为许多事非躬亲不可。纵然是最有效的管理者，仍然免不了有许多不必要的和非生产性的工作。大胆减少自己的工作，真会出问题吗？只要看有些管理者虽然身患重病，甚至于身有残疾，仍能干得有声有色，就可以知道这种顾虑是多余的。</li>
<li>大胆减少无谓的工作，绝对无损于有效性。</li>
<li>一项重复出现的危机应该是可以预见的。因此，这类危机可以预先防止，或可以设计成一种例行工作，使每个人都能处理。所谓例行工作，是将本来要靠专家才能处理的事，设计成无须研究判断，人人均可处理的工作。例行的工作，可以说是专家们从过去的危机中，学会的一套有系统、有步骤的处理方式。</li>
<li>一个平静无波的工厂，必是管理上了轨道。如果一个工厂高潮迭现，在参观者看来大家忙得不可开交，就必是管理不善。管理好的工厂，总是单调无味，没有任何刺激动人的事件。那是因为凡是可能发生的危机都早已预见，且已将解决办法变成例行工作了。</li>
<li>另一个常见的浪费时间的原因，是组织不健全。其表现就是会议太多。我们之所以要开会，只是因为各有各的工作，要靠彼此合作才能完成某一特定任务。我们之所以要开会，只是因为某一情况所需的知识和经验，不能全部装在一个人的头脑里，需要集思广益。试着看看我们的时间记录，如果发现开会太多——例如参加会议的时间占总时间1/4以上，那一定是一个浪费时间的不健全组织。</li>
<li>最后一项浪费时间的因素，是信息功能不健全。</li>
<li>有效的管理者知道他必须集中他的自由时间。他知道他需要集中整块时间，时间分割成许多段，等于没有时间。时间如果能集中，即使只有一个工作日的1/4，也足可办理几件大事。反之，零零碎碎的时间，纵然总数有3/4个工作日，也是毫无用处。</li>
<li>人们以为可以晚上加班，因此反倒没有抓紧白天的工作时间。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>项目管理问题探讨与解决方案</title>
      <link>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link>
      <pubDate>Sun, 21 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E6%8E%A2%E8%AE%A8%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;h1 id=&#34;第1章-写在前面&#34;&gt;第1章 写在前面&lt;/h1&gt;
&lt;p&gt;你可能是项目中的开发能手，最佳情况也只是能保证自己，负责开发的功能没有问题，其他的你是无法保证的。哪怕你承担了项目中全部的开发工作，测试阶段、验收阶段和发布阶段也是需要其他人协助的，假设这些你都可以自己完成，而且也做得很到位，但要是需要该项目在很短的时间内交付，想必你就没有办法了。一个人的能力不管多高，人的精力终究是有限的，任何事情能够得到一个比较满意的结果，都离不开众人的努力，对于项目而言也是如此。&lt;/p&gt;
&lt;p&gt;这本小册，打算将多项目管理推进过程中，反馈出来的问题进行分析和提供解决方案，不一定全都是对的，算是自己的一些反思总结和心得分享。本小册计划分为意识篇、能力篇、方法篇、提升篇和附录，意识篇主要是项目管理意识方面的探讨，意识是这一切的基础，意识没有到位，后面的其他方面做得再好，也是有局限性的，就像一棵大树，树根没有长好，枝干树叶的成长也是有限的。因为意识很重要，所以放在前面。能力篇主要是项目管理应该具备哪些能力的探讨。方法篇主要是项目管理方法上面的探讨。至于附录，是一些有助于提升项目管理能力的书籍摘要。&lt;/p&gt;
&lt;h1 id=&#34;第2章-意识篇&#34;&gt;第2章 意识篇&lt;/h1&gt;
&lt;h2 id=&#34;21-项目管理的意义&#34;&gt;2.1 项目管理的意义&lt;/h2&gt;
&lt;p&gt;我们探讨项目管理的意义，只会是关联密切的那部分，至于关系到公司成本投入等等问题，虽然是不争的事实，但是对于我们来讲，有点遥远，就不再过多拓展。对于项目负责人而言，他需要明白项目管理的意义，根据我个人一些经验，总结了以下三点，分别涉及到一个项目完整的周期，开始、过程和结束。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一致性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目标一致、步伐一致、项目中的全体成员都需要知道，我们的目标是什么？将全部精力投入到达成目标的要事上面。在这个过程中，间接实现了项目降本增效，还有提高团队的凝聚力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;及时性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目进行过程中，无时无刻都在发生变化，不管是项目制定的计划，还是遇到了业务或技术难点，及时了解到当下的情况，尽快解决问题，可以避免项目进度受阻。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;高质性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目完成并不意味着没有问题，质量如何保证，就需要项目负责人进行项目的验收，不然怎么知道已经完善了呢？&lt;/p&gt;
&lt;p&gt;以上这三点都是对于项目而言，那么对于项目负责人来说，意义又在哪里呢？那就是一个人的成功（做好事情）固然值得肯定，但如果他能将这种成功因地制宜地在团队其他人身上应验，那将意义深远。&lt;/p&gt;
&lt;p&gt;一方面你团队里的成员能力有所提升，对项目上面的工作肯定是有帮助的，另一方面，我们都知道每个人都有自己对世界的一套认知，怎么做事情，都有自己的方式，我们只是一直在摸索那条规律，不断应验和调整，如果其他人也适用，那至少说明，你的一整套理论是有可取之处的，越来越靠近那条规律；如果不适用，那也可以借机进行反思和完善，对你而言是大有裨益的。这也是毛泽东《实践论》里提到的观点，”人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。“&lt;/p&gt;
&lt;h1 id=&#34;第3章-能力篇&#34;&gt;第3章 能力篇&lt;/h1&gt;
&lt;h2 id=&#34;31-项目负责人能力划分&#34;&gt;3.1 项目负责人能力划分&lt;/h2&gt;
&lt;p&gt;我认真思考了一下，觉得项目负责人的能力可以分为五个阶段，分别对应的关键字是开发、方法、产品、整体、市场。虽然看起来好像呈递进关系，但是我发现实际上不是这样的，很多人可能没办法将其划分在哪个阶段，有些是好几个阶段都覆盖，各阶段要求的能力都有一点，但又不完全具备；有些是第二阶段了，可能第一阶段还没达到等等，所以这个划分只是参考。&lt;/p&gt;
&lt;h3 id=&#34;311-第一阶段&#34;&gt;3.1.1 第一阶段&lt;/h3&gt;
&lt;p&gt;项目里自己负责开发的功能高质量完成，基本可以认为是&lt;strong&gt;可以直接给客户演示&lt;/strong&gt;的标准：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;功能没什么特别重大的bug，比如不会突然用不了；&lt;/li&gt;
&lt;li&gt;功能有完善边界，比如输入手机号有限制以及正确或异常提示等等；&lt;/li&gt;
&lt;li&gt;界面交互体验顺畅，不会出现很混乱的场景；&lt;/li&gt;
&lt;li&gt;界面美观，细节完善，哪怕一个像素都有注意到等；&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;312-第二阶段&#34;&gt;3.1.2 第二阶段&lt;/h3&gt;
&lt;p&gt;项目里自己开发的模块，业务特别熟悉，其他分配出去的就不熟悉；&lt;/p&gt;
&lt;p&gt;项目需求理解到位、项目方案设计、项目开发计划、项目内部验收、想提交测试和项目上线等环节都可完成；&lt;/p&gt;
&lt;h3 id=&#34;313-第三阶段&#34;&gt;3.1.3 第三阶段&lt;/h3&gt;
&lt;p&gt;项目里全部业务需求的脉络都一清二楚；&lt;/p&gt;
&lt;p&gt;项目中涉及到硬件相关的产品都会使用；&lt;/p&gt;
&lt;p&gt;产品需求、产品原型如果是你来做呢？对项目需求和原型有自己的见解，完全可以胜任；&lt;/p&gt;
&lt;h3 id=&#34;314-第四阶段&#34;&gt;3.1.4 第四阶段&lt;/h3&gt;
&lt;p&gt;项目里的技术栈全都熟悉，比如前端/后端出身的项目负责人去熟悉后端/前端相关技术栈知识。&lt;/p&gt;
&lt;h3 id=&#34;315-第五阶段&#34;&gt;3.1.5 第五阶段&lt;/h3&gt;
&lt;p&gt;项目的观念开始转变为产品，对其在市场上的定位以及价值有深刻的见解，明白这个产品的目的是什么？&lt;/p&gt;
&lt;p&gt;关注产品在市场上的推广与营销；&lt;/p&gt;
&lt;h2 id=&#34;32-项目负责人对业务不熟悉&#34;&gt;3.2 项目负责人对业务不熟悉&lt;/h2&gt;
&lt;h3 id=&#34;321-问题描述&#34;&gt;3.2.1 问题描述&lt;/h3&gt;
&lt;p&gt;一直以来，存在这样的问题，项目负责人接到产品需求之后，可能就扫了一眼，就开始制定项目开发计划，制定好之后，只深入了解自己负责开发的模块，其他的就不会再深入了解了。对于那些其他人开发的功能，只要问三个问题，一般都回答不上来。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;是什么，这个是什么功能？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为什么，客户为什么需要这个功能，这个功能对他们有什么用处，不开发这个功能不行么？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;怎么做，这个功能前端是怎么实现的，后端是怎么实现的？一般能回答到第三个问题的前端/后端部分都很不错了，实际情况别说第二个问题了，有可能第一个问题都不一定知道。而负责开发该功能模块的同事，也可能是边了解边开发，需求了解的程度，刚好可以开发出功能就行了。这样就容易导致，这个项目在管理上面会有问题，表面上风平浪静，其实是失控的状态，主要表现在以下方面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;任务时间评估不到位的问题，经常变更任务计划；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;风险意识问题，业务不熟悉，不能提前发现潜在的延期因素，不能有效判断是否需要加班；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任务验收问题，功能是否已实现，与需求是否一致，只根据开发同事的回答结果而定，因为对业务不熟悉，验收的时候有心无力，只能敷衍了事，整个验收工作开展很艰难，积极性也就不高；&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;322-解决方案&#34;&gt;3.2.2 解决方案&lt;/h3&gt;
&lt;p&gt;项目负责人需自己梳理一份项目需求与功能实现文档，将每个功能都按三个问题来梳理清楚，是什么，为什么，怎么做。然后项目推进过程中，有任何变更的需求，就实时更新文档，这样子至少心里是有底的。&lt;/p&gt;
&lt;h2 id=&#34;33-对bug系统的问题敏感度不高&#34;&gt;3.3 对Bug系统的问题敏感度不高&lt;/h2&gt;
&lt;h3 id=&#34;331-问题描述&#34;&gt;3.3.1 问题描述&lt;/h3&gt;
&lt;p&gt;这个问题之所以出现，是因为对工作要求边界不清晰导致的。我们在项目中引入版本管理之后，基本明确在内部验收环节，保证当前Bug系统上面的问题是已经全部解决的。&lt;/p&gt;
&lt;h3 id=&#34;332-解决方案&#34;&gt;3.3.2 解决方案&lt;/h3&gt;
&lt;p&gt;和项目负责人达成共识，内部验收环节，Bug系统上面的问题全部解决，视为任务达成。&lt;/p&gt;
&lt;h2 id=&#34;34-项目任务验收工作没有真正落实&#34;&gt;3.4 项目任务验收工作没有真正落实&lt;/h2&gt;
&lt;h3 id=&#34;341-问题描述&#34;&gt;3.4.1 问题描述&lt;/h3&gt;
&lt;p&gt;之前我们计划项目负责人，每周周五进行任务验收，但在开展过程中，验收其他开发同事任务的时候，经常出现缺胳膊少腿的情况，比如某个任务完成了，但是文档没写，或者写了又没有提交更新；某个任务时间都过了，也没有调整变更，什么原因也没有说明等等，执行起来很困难。现在在项目进度会议上，当场把任务验收，就需要周一的时候，项目负责人牵头更新任务的时间、功能和文档情况，不然周二在项目进度会议上，还是会出现各种各样的问题。但是周一的时候，项目负责人已经验收过任务，周二在项目进度会议上又过一次，对于其他开发同事来说，就觉得被问了两次，显然这个方式可能没有从根本上解决问题。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="第1章-写在前面">第1章 写在前面</h1>
<p>你可能是项目中的开发能手，最佳情况也只是能保证自己，负责开发的功能没有问题，其他的你是无法保证的。哪怕你承担了项目中全部的开发工作，测试阶段、验收阶段和发布阶段也是需要其他人协助的，假设这些你都可以自己完成，而且也做得很到位，但要是需要该项目在很短的时间内交付，想必你就没有办法了。一个人的能力不管多高，人的精力终究是有限的，任何事情能够得到一个比较满意的结果，都离不开众人的努力，对于项目而言也是如此。</p>
<p>这本小册，打算将多项目管理推进过程中，反馈出来的问题进行分析和提供解决方案，不一定全都是对的，算是自己的一些反思总结和心得分享。本小册计划分为意识篇、能力篇、方法篇、提升篇和附录，意识篇主要是项目管理意识方面的探讨，意识是这一切的基础，意识没有到位，后面的其他方面做得再好，也是有局限性的，就像一棵大树，树根没有长好，枝干树叶的成长也是有限的。因为意识很重要，所以放在前面。能力篇主要是项目管理应该具备哪些能力的探讨。方法篇主要是项目管理方法上面的探讨。至于附录，是一些有助于提升项目管理能力的书籍摘要。</p>
<h1 id="第2章-意识篇">第2章 意识篇</h1>
<h2 id="21-项目管理的意义">2.1 项目管理的意义</h2>
<p>我们探讨项目管理的意义，只会是关联密切的那部分，至于关系到公司成本投入等等问题，虽然是不争的事实，但是对于我们来讲，有点遥远，就不再过多拓展。对于项目负责人而言，他需要明白项目管理的意义，根据我个人一些经验，总结了以下三点，分别涉及到一个项目完整的周期，开始、过程和结束。</p>
<p><strong>一致性</strong></p>
<p>目标一致、步伐一致、项目中的全体成员都需要知道，我们的目标是什么？将全部精力投入到达成目标的要事上面。在这个过程中，间接实现了项目降本增效，还有提高团队的凝聚力。</p>
<p><strong>及时性</strong></p>
<p>项目进行过程中，无时无刻都在发生变化，不管是项目制定的计划，还是遇到了业务或技术难点，及时了解到当下的情况，尽快解决问题，可以避免项目进度受阻。</p>
<p><strong>高质性</strong></p>
<p>项目完成并不意味着没有问题，质量如何保证，就需要项目负责人进行项目的验收，不然怎么知道已经完善了呢？</p>
<p>以上这三点都是对于项目而言，那么对于项目负责人来说，意义又在哪里呢？那就是一个人的成功（做好事情）固然值得肯定，但如果他能将这种成功因地制宜地在团队其他人身上应验，那将意义深远。</p>
<p>一方面你团队里的成员能力有所提升，对项目上面的工作肯定是有帮助的，另一方面，我们都知道每个人都有自己对世界的一套认知，怎么做事情，都有自己的方式，我们只是一直在摸索那条规律，不断应验和调整，如果其他人也适用，那至少说明，你的一整套理论是有可取之处的，越来越靠近那条规律；如果不适用，那也可以借机进行反思和完善，对你而言是大有裨益的。这也是毛泽东《实践论》里提到的观点，”人类认识的历史告诉我们，许多理论的真理性是不完全的，经过实践的检验而纠正了它们的不完全性。“</p>
<h1 id="第3章-能力篇">第3章 能力篇</h1>
<h2 id="31-项目负责人能力划分">3.1 项目负责人能力划分</h2>
<p>我认真思考了一下，觉得项目负责人的能力可以分为五个阶段，分别对应的关键字是开发、方法、产品、整体、市场。虽然看起来好像呈递进关系，但是我发现实际上不是这样的，很多人可能没办法将其划分在哪个阶段，有些是好几个阶段都覆盖，各阶段要求的能力都有一点，但又不完全具备；有些是第二阶段了，可能第一阶段还没达到等等，所以这个划分只是参考。</p>
<h3 id="311-第一阶段">3.1.1 第一阶段</h3>
<p>项目里自己负责开发的功能高质量完成，基本可以认为是<strong>可以直接给客户演示</strong>的标准：</p>
<ol>
<li>功能没什么特别重大的bug，比如不会突然用不了；</li>
<li>功能有完善边界，比如输入手机号有限制以及正确或异常提示等等；</li>
<li>界面交互体验顺畅，不会出现很混乱的场景；</li>
<li>界面美观，细节完善，哪怕一个像素都有注意到等；</li>
</ol>
<h3 id="312-第二阶段">3.1.2 第二阶段</h3>
<p>项目里自己开发的模块，业务特别熟悉，其他分配出去的就不熟悉；</p>
<p>项目需求理解到位、项目方案设计、项目开发计划、项目内部验收、想提交测试和项目上线等环节都可完成；</p>
<h3 id="313-第三阶段">3.1.3 第三阶段</h3>
<p>项目里全部业务需求的脉络都一清二楚；</p>
<p>项目中涉及到硬件相关的产品都会使用；</p>
<p>产品需求、产品原型如果是你来做呢？对项目需求和原型有自己的见解，完全可以胜任；</p>
<h3 id="314-第四阶段">3.1.4 第四阶段</h3>
<p>项目里的技术栈全都熟悉，比如前端/后端出身的项目负责人去熟悉后端/前端相关技术栈知识。</p>
<h3 id="315-第五阶段">3.1.5 第五阶段</h3>
<p>项目的观念开始转变为产品，对其在市场上的定位以及价值有深刻的见解，明白这个产品的目的是什么？</p>
<p>关注产品在市场上的推广与营销；</p>
<h2 id="32-项目负责人对业务不熟悉">3.2 项目负责人对业务不熟悉</h2>
<h3 id="321-问题描述">3.2.1 问题描述</h3>
<p>一直以来，存在这样的问题，项目负责人接到产品需求之后，可能就扫了一眼，就开始制定项目开发计划，制定好之后，只深入了解自己负责开发的模块，其他的就不会再深入了解了。对于那些其他人开发的功能，只要问三个问题，一般都回答不上来。</p>
<ol>
<li>
<p>是什么，这个是什么功能？</p>
</li>
<li>
<p>为什么，客户为什么需要这个功能，这个功能对他们有什么用处，不开发这个功能不行么？</p>
</li>
<li>
<p>怎么做，这个功能前端是怎么实现的，后端是怎么实现的？一般能回答到第三个问题的前端/后端部分都很不错了，实际情况别说第二个问题了，有可能第一个问题都不一定知道。而负责开发该功能模块的同事，也可能是边了解边开发，需求了解的程度，刚好可以开发出功能就行了。这样就容易导致，这个项目在管理上面会有问题，表面上风平浪静，其实是失控的状态，主要表现在以下方面：</p>
<ol>
<li>
<p>任务时间评估不到位的问题，经常变更任务计划；</p>
</li>
<li>
<p>风险意识问题，业务不熟悉，不能提前发现潜在的延期因素，不能有效判断是否需要加班；</p>
</li>
<li>
<p>任务验收问题，功能是否已实现，与需求是否一致，只根据开发同事的回答结果而定，因为对业务不熟悉，验收的时候有心无力，只能敷衍了事，整个验收工作开展很艰难，积极性也就不高；</p>
</li>
</ol>
</li>
</ol>
<h3 id="322-解决方案">3.2.2 解决方案</h3>
<p>项目负责人需自己梳理一份项目需求与功能实现文档，将每个功能都按三个问题来梳理清楚，是什么，为什么，怎么做。然后项目推进过程中，有任何变更的需求，就实时更新文档，这样子至少心里是有底的。</p>
<h2 id="33-对bug系统的问题敏感度不高">3.3 对Bug系统的问题敏感度不高</h2>
<h3 id="331-问题描述">3.3.1 问题描述</h3>
<p>这个问题之所以出现，是因为对工作要求边界不清晰导致的。我们在项目中引入版本管理之后，基本明确在内部验收环节，保证当前Bug系统上面的问题是已经全部解决的。</p>
<h3 id="332-解决方案">3.3.2 解决方案</h3>
<p>和项目负责人达成共识，内部验收环节，Bug系统上面的问题全部解决，视为任务达成。</p>
<h2 id="34-项目任务验收工作没有真正落实">3.4 项目任务验收工作没有真正落实</h2>
<h3 id="341-问题描述">3.4.1 问题描述</h3>
<p>之前我们计划项目负责人，每周周五进行任务验收，但在开展过程中，验收其他开发同事任务的时候，经常出现缺胳膊少腿的情况，比如某个任务完成了，但是文档没写，或者写了又没有提交更新；某个任务时间都过了，也没有调整变更，什么原因也没有说明等等，执行起来很困难。现在在项目进度会议上，当场把任务验收，就需要周一的时候，项目负责人牵头更新任务的时间、功能和文档情况，不然周二在项目进度会议上，还是会出现各种各样的问题。但是周一的时候，项目负责人已经验收过任务，周二在项目进度会议上又过一次，对于其他开发同事来说，就觉得被问了两次，显然这个方式可能没有从根本上解决问题。</p>
<h3 id="342-解决方案">3.4.2 解决方案</h3>
<p>之前项目负责人去验收，实际上是不知道任务情况的，只有问了项目开发的同事才知道负责的任务完成了没有，项目负责人完全不知道有多少任务需要验收，完全是随机的状态，相应的其他事情的计划就又要变更了。那我们何不反过来，使用观察者模式，等开发同事完成任务了，给项目负责人发一下邮件或者企业微信的消息，一来形成闭环，二来强化开发同事任务是需要验收的这个意识。项目负责人这个时候立马去验收也可以，但是不推荐，因为挨个去验收，精力就会分散，建议把可验收的任务整理记到下周一当天工作计划里，统一验收。后续等我们在线项目管理系统上线，里面就提供一个功能，如果开发同事任务完成，需提交技术文档（如有需要），然后把任务状态变更为待验收，这个时候，系统就会给项目负责人发一条可验收的邮件，相信可以有效解决这个问题。</p>
<h1 id="第4章-方法篇">第4章 方法篇</h1>
<h2 id="41-项目为什么总是延期">4.1 项目为什么总是延期</h2>
<h3 id="411-问题描述">4.1.1 问题描述</h3>
<p>现在一个项目在开发新需求的时候，我们制定的计划只是列出功能开发的部分，并不是整个项目全部的周期，这就造成项目从开始到能够正式上线，时间规划是不全面、不清晰的（只是代码编写部分有时间计划），项目负责人基本上只会关注功能开发的部分，至于内部验收、bug修复、测试周期和版本发布时间等等环节，有点听天由命，完全是看前一个环节进展的情况而定，前一个环节进展顺利，那就到下一个环节，进展不顺利就变更下个环节的时间，反复几次，项目上线的时间一拖再拖，遥遥无期。</p>
<p>之所以会这样，是因为在项目推进过程中，我们聚焦的一直是<strong>解决项目当前遇到的难题</strong>，为了解决这个难题，不断地调整项目任务计划时间，明天后天下周下个月等等。</p>
<p>也许我们可以转换一下思路，项目推进过程中，以终为始，以最终结果为导向，聚焦<strong>项目上线发布</strong>这个目标。为了达成这个目标，我们要采取不同的做事情方式，也就是多维度思考如何解决问题。</p>
<p>导致项目进度受阻的问题有大有小，如果是不可抗力的情况（比如有的项目需要用到设备，结果设备完全用不了），那当然没有办法，但这种情况相对来说还是比较少的。其他的那些问题就要想一下，是不是当下一定要解决，或者说一定要从技术层面解决才行呢？那当然不是，我们的需求只是解决问题，问题解决了就行，并不关心用了什么方式，就好像要从广州到北京，需求只是要去到北京，并不在乎你怎么过去，是要坐飞机、坐动车、自己开车或者打车什么都可以，只要能到北京就行。</p>
<h3 id="412-解决方案">4.1.2 解决方案</h3>
<p>在项目推进过程中，项目负责人遇到问题时，以前可能是这样思考的，这个问题解决起来很困难，可能需要5天的时间，我要问一下，项目计划能不能变更，调整一下上线的时间？现在的话，如果是以终为始，可能就需要这样思考了，这个问题解决起来很困难，可能需要5天时间，这个版本计划11月15日上线，时间有点紧张，这个功能是不是必须的，一定是这个版本要加的么？能不能下个版本？为什么需要5天的时间，有没有其他更好的解决方案？5天的时间里，我是不是可以先做其他事情？测试阶段、发版阶段还有没有什么潜在的问题，第三方编译走通过了么？时间有点赶，问题有点多，可能要动员一下，让大家知道现在时间有点紧张，加加班才行了，宁愿赶在前面，也不要后面遇到问题了没时间解决。我们倾向于哪怕只是一点点可能性，也要挣扎一下，不要那么容易就缴械投降。</p>
<h2 id="42-项目计划如何制定">4.2 项目计划如何制定</h2>
<h3 id="421-问题描述">4.2.1 问题描述</h3>
<p>我们在制定项目计划的时候，如果只是把功能开发部分列出来，如下图所示：</p>
<p><img alt="image001" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157068.png"></p>
<p>可能会造成项目延期，在 <a href="#4.1%E9%A1%B9%E7%9B%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E6%80%BB%E6%98%AF%E5%BB%B6%E6%9C%9F">4.1项目为什么总是延期</a>已经分析过了，这里就不再赘述了，我们现在要探讨的是，如何制定一个项目计划呢？</p>
<h3 id="422-解决方案">4.2.2 解决方案</h3>
<p>在开始项目计划制定之前，可以先了解一下开发模式的相关知识，这部分主要是<a href="https://b23.tv/eeIEBa2">《【清华大学】项目管理的逻辑（全6讲）》</a>里面的内容，有兴趣的可以去看一下，还是很不错的。</p>
<h4 id="4221-瀑布式开发">4.2.2.1 瀑布式开发</h4>
<p>预测型开发，在还没有开始着手编写代码前，就可以提前预知结果如何，之所以叫瀑布式，是因为整个开发流程都是有序的，就像水从上往下流，每一步做很到位就到下一阶段。</p>
<h4 id="4222-迭代式开发">4.2.2.2 迭代式开发</h4>
<p>迭代式开发，顾名思义，就是一个版本接着一个版本进行迭代，先将项目整体框架搭建好，然后基础布局全部铺开，就好像画人物肖像一样，先勾勒草图，画出人物整体轮廓，然后才依次画出脑袋、眉毛、眼睛、鼻子、嘴巴等等，全部画出来之后，才是着色。</p>
<h4 id="4223-增量式开发">4.2.2.3 增量式开发</h4>
<p>增量式开发，咋听之下，与迭代式开发的意思一样，实际上是不一样的，增量式开发的意思是，每次只构建一点，每个阶段就交付一部分，然后组合在一起，还是用画人物肖像来举例子，一开始先画头发，画完之后上色，然后接着是眉毛，画好之后着色，以此类推，全部画好一个地方再接着画另一个地方，如下图所示：<img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157400.png"></p>
<h4 id="4224-敏捷式开发">4.2.2.4 敏捷式开发</h4>
<p>适应型开发，灵活性很高，需求可以随时提，然后放到需求池里，可能两星期一个周期发一个版本。因为能干的活儿很有限，就像坐地铁一样，人很多，挤不上去那就下一趟，所以敏捷开发的思路就是，未必做得到，所以下个版本实现需求，可以有节奏地持续开发。</p>
<p>以上就是常用的开发模式，但是我们在实际应用中，应该怎么选择哪一种开发模式呢？为此有一个STACEY矩阵图可以作一些参考，如下所示：</p>
<p><img alt="image003" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157174.png"></p>
<p>从上图中可以知道，选择哪种开发模式，是基于需求和技术两个维度去评估的，所以项目负责人在编写项目需求与方案文档的时候，可能就可以做出判断了。说回我们自身，开发模式毕竟只是项目管理中的一种技巧，要深刻认识到它并不是万能的，如果掉入盲目迷信权威的陷阱，那么就太死板了，真正应用的时候，还是要考虑实际情况，在遵循基本原则的基础上，要明白事物变化的重要性，在变化的世界里使用不变的方法是不现实的，没有任何一种开发模式能够适用全部的项目。</p>
<p>现在部门按照项目来管理，每个人都比较清楚自己要做的事情，也没有那么多交叉的任务，所以变更理应很少才对，在制定项目计划的时候，我们可以把项目开发的周期全部列出，虽然项目计划通常都会有变更，但项目计划最好能够做到有始有终，把全部任务时间明确一下，然后项目交付时间基本就确定了，其中的任意环节有变更，很有可能是不会影响到项目交付时间的。我们可以把项目计划分为一下11个环节，如下所示：</p>
<ol>
<li>需求分析</li>
<li>原型设计</li>
<li>方案设计</li>
<li>开发计划</li>
<li>开发阶段</li>
<li>下版计划（下一阶段任务计划）</li>
<li>内部验收</li>
<li>产品验收</li>
<li>测试阶段</li>
<li>模拟升级</li>
<li>正式发布</li>
<li>复盘会议</li>
</ol>
<p>如下图所示，就是根据这11个环节制定的项目开发计划，虽然实际情况会有所出入，但是可以知道这个项目12月底基本上就可以交付了，有这样很清晰的时间节点，对于接下来的开发工作，会更有目标和方向感，其中经常出现任务变更，大多是在开发阶段，但是并不代表做好这个环节就没事了，接下来的环节如果遇到问题，也是会影响到项目交付的，所以怎么能管理好一个项目，是需要多方面去思考和解决问题的，并不是只做好开发任务环节就行了。</p>
<p><img alt="image004" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282157081.png"></p>
<h2 id="41-项目任务不应写多人负责">4.1 项目任务不应写多人负责</h2>
<p>我们项目开发计划中，有些任务会出现多人负责的情况，打个比方，如果某个功能任务，需要前后端同步开发，把前后端的开发同事都归到一条任务上，那么就没办法立马知道当前的情况，比如当前任务处于未完成状态，实际上后端部分已经完成了，只是前端部分还在开发，如果不问清楚，会误以为后端和前端的开发工作都没有完成。所以项目开发计划里的任务，最好是一人一条，拆分清晰，一来可以明确职责，二来任务状态相对就更为透明。</p>
<h2 id="42-项目中应提前准备下一阶段计划">4.2 项目中应提前准备下一阶段计划</h2>
<h3 id="421-问题描述-1">4.2.1 问题描述</h3>
<p>在项目功能开发完成之后，<strong>人员开始空出来了</strong>，通常这个时候，项目负责人还有很多繁琐的工作要做，比如项目内部验收、提交测试申请等等。为了给项目中的开发同事找事情做，就匆匆忙忙安排下个版本的任务，然后开发同事简单了解下需求，就开始敲代码了。前期的需求分析、方案设计、开发计划，项目负责人没有时间系统地去梳理，就容易造成需求理解有偏差、时间节点不明确和当前版本的目标感不强的问题。</p>
<h3 id="422-解决方案-1">4.2.2 解决方案</h3>
<p>项目负责人的开发任务应比项目其他开发同事提前2~3天时间结束，这个时候项目还在继续开发，项目负责人可以借机着手准备下个阶段的任务（之所以是下个阶段，而不是下个版本，是因为有可能不是迭代这个项目了），将需求进行梳理分析，编写方案设计和制定开发计划，等到其他开发同事任务开发完成之后，就接着下个阶段的任务展开，项目负责人这时再回到当前项目，去做内部验收和提交测试申请，整个衔接是很清晰顺畅，不至于那么被动。</p>
<h2 id="43-项目里程碑应有复盘会议">4.3 项目里程碑应有复盘会议</h2>
<p>我们项目开发完上线之后，是没有复盘会议这个环节的，最好一个版本的事情完成之后，项目负责人主持一个复盘会议，将项目开发过程中，哪些是做得好的，哪些是做得不好的，依次列出，让大家一起讨论一下，有一个总结与反思的过程，一起享用成果的过程，做得好的要表扬，做的不好的再接再厉。这个复盘会议对于项目负责人而言，一方面能吸取项目管理上面的经验，另一方面有助于提升项目团队的凝聚力。</p>
<h2 id="44-项目进度会议时间过长">4.4 项目进度会议时间过长</h2>
<h3 id="441-问题描述">4.4.1 问题描述</h3>
<p>因为我们这个模式是刚开始的，有些项目有积压的任务，具体情况也要过一下，所以才显得时间很长。一般情况下，每周开一次项目进度会议，任务不会很多，一次会议需要的时间应该不会很长，但是我们把项目会议流程梳理之后就会发现，时间是大大超出我们预期的，如下所示：</p>
<ul>
<li>项目进度情况（20m）</li>
<li>问题反馈讨论（20m）</li>
<li>任务验收
<ul>
<li>功能演示（20m）</li>
<li>代码抽查（20m）</li>
<li>文档查看（10m）</li>
<li>bug修复情况（10m）</li>
</ul>
</li>
<li>后续工作安排
<ul>
<li>任务安排（20m）</li>
<li>加班情况（10m）</li>
</ul>
</li>
</ul>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282158811.png"></p>
<p>项目规模比较大，就需要2个小时左右，项目再小，也是需要1个小时左右的，除非各个环节灵活调整一下。</p>
<h3 id="442-解决方案">4.4.2 解决方案</h3>
<p>我们统一每周周二开项目进度会议，每个项目的情况都不一样，有些问题就是需要讨论很久，所以时间是无法评估的。我们不可能要求什么时间内一定要开完项目进度会议，只能说项目负责人需要知道项目进度会议的流程，并且逐渐按照流程执行，先试试看效果如何，有没有一些可优化的空间，让会议更为高效。</p>
<h2 id="45-项目进度会议的两种方式">4.5 项目进度会议的两种方式</h2>
<h3 id="451-各个项目进度会议">4.5.1 各个项目进度会议</h3>
<p>项目负责人主导推进这个项目进度会议，自己申请会议室和准备电脑，自己在项目群里通知，召集大家过来开会，项目管理者也一道参与。不管是项目进度、问题反馈、任务验收、后续工作安排，全程由项目负责人提出、讨论和解决问题，项目管理者只是补充的角色，比如指出一些潜在的问题等等。这个方式能更有效增长项目负责人主人翁意识，把项目当成自己的事情来做，简而言之，项目负责人应该知道，在项目的事情上面，你需要行使的是权利，而不应该是义务，权利是自己争取想去做的事情，义务则是他人对你的要求，意义完全不一样。很多项目负责人虽然做了很多事情，实际上心态仍游离在项目之外，觉得这个项目是上级安排下来的，他叫我做什么，我就做什么，不会觉得自己需要对项目的方方面面负责。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282158137.png"></p>
<h3 id="452--各个项目进度会议项目负责人会议">4.5.2  各个项目进度会议、项目负责人会议</h3>
<p>这个会议方式是，项目负责人主导项目进度会议，然后项目管理者，主导召开项目负责人会议，用于听取各项目负责人汇报项目整体情况。这个会议方式一般适合规模特别大的团队，而且对项目负责人、项目管理者的能力要求很高，不是很容易推行的方式。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202302282158001.png"></p>
<h2 id="46-项目任务质量如何保证">4.6 项目任务质量如何保证</h2>
<p>我们发现，只有在项目进度会议上真正演示时，才会发现问题，口头上回答做完了，有可能是片面的，并非开发同事存心欺瞒，只是每个人对需求的理解，有可能一开始就有差异，这种差异哪怕功能已经开发完成，还有可能会存在。在会议上演示，大家都可以看到，并且可以随时提出问题，虽然比较花时间，但是相信这是值得的。</p>
<p>我们如何评估这个功能，开发的质量如何呢？至少在黑盒层面来讲，这个功能不管是使用还是界面，都是很完善的，然后就是你有没有尽你的能力，做到最好呢？我们不会要求一个只能跑10公里的人，去跑马拉松，我们只会要求他不断地跑到10公里，11公里，9公里，而不是他每次都跑了5公里，道理是一样的，没有什么是十全十美的，只希望在自己能力范围内做到最好，仅此而已。</p>
<p>还有就是，项目进度会议，现在因为时间的关系，缺少了代码审查的环节，没有去看下某个模块的代码情况，也就是白盒层面的，这个工作项目负责人最好可以先了解一下，可以和其他开发同事交叉审查，看下效果如何。</p>
<h2 id="47-项目涉及设备的问题">4.7 项目涉及设备的问题</h2>
<h3 id="471-问题描述">4.7.1 问题描述</h3>
<p>我们有些项目是需要设备的，每次要开发新需求的时候，经常要和硬件部门借过来用一下，开发完了又要还回去。有时项目负责人都没机会去试用下设备的功能，有的可能连长什么样子都不知道，我们能不能有一些设备常驻这里，项目相关人员都能实际去操作一下，真实感受下应用场景，避免和真实业务脱节。</p>
<h3 id="472-解决方案">4.7.2 解决方案</h3>
<p>因为设备一直有在迭代，如果一直放在我们部门这边，可能只是能用这个版本，之后就不能用了，再加上常用的时段也只是开发的时候，功能开发完成，项目上线之后很少有去关注了，所以有点浪费，不太建议这样处理。我们的核心问题，其实是想让相关的开发同事都能试用下，所以在开发阶段有这个意识去操作一下即可。</p>
<h2 id="48-项目负责人完成全部功能演示">4.8 项目负责人完成全部功能演示</h2>
<h3 id="481-问题描述">4.8.1 问题描述</h3>
<p>在项目进度会议中，由开发同事自行演示最近实现的项目功能，无可厚非，毕竟是自己开发的功能，怎么操作当然是自己最熟悉了，而且有一些功能，可能还需要连接设备或模拟一些数据，才能正常演示，如果不是自己准备好的账号，整个流程操作下来也是很花时间的，在会议上就显示没有效率了。虽然这个做法有这方面的好处，但是深入挖掘，会发现可能存在一些问题，那就是项目负责人可能对其他同事开发的功能，并不熟悉，这是其一；其二就是项目负责人毕竟是对整个项目负责的，在进行项目整体汇报的时候，这样操作，完全将主要职责转移给其他开发同事了，这就造成职责不清，不利于自己的成长和项目的工作开展。</p>
<p>所以，项目功能演示这个环节，最好由项目负责人全程演示，该功能开发同事做一些补充。这样做的目的是，一来避免职责不清；二来强化项目负责人主人翁的意识；三来是倒逼项目负责人将项目需求再深入了解，因为你不了解是没办法演示的，这个也关系到后面的功能验收环节，所以影响是方方面面的。</p>
<h3 id="482-解决方案">4.8.2 解决方案</h3>
<p>这个问题的根源，还是在于<strong>项目需求与方案环节</strong>，项目负责人需要落实到位，至少是对项目的需求了然于胸，不一定是自己动手编写代码，但是可以假设是你自己开发的，在脑海中过一遍也是可以的，退一万步来说，哪怕你不知道怎么实现，至少知道功能是什么样子的，怎么样使用的。在此基础上，要做好这个事情，可以在周一时，将这一周的任务大概看一下，因为我们当前项目进度会议是每周一次的，所以要实现的功能，并不会很多，自己操作一下也不会很花时间，周二开项目进度会议时，完全是可以有交代的。</p>
<h2 id="49-项目需求变更时如何处理">4.9 项目需求变更时如何处理</h2>
<h3 id="491-问题描述">4.9.1 问题描述</h3>
<p>虽然在项目开发前期，我们已经做好准备工作，一个环节到一个环节有条不紊地执行，但不可否认，在这个过程中，难免会出现需求有变更的时候，作为项目负责人应该怎么去处理这个事情呢？</p>
<h3 id="492-解决方案">4.9.2 解决方案</h3>
<p>项目遇到需求有变更，通常都是新增了需求，很少是减少需求方面的变更，简而言之，就是增加了工作量。而项目负责人面临的难题就是怎么搞定这个事情，需求变更有大有小，不可一概而论，如果是小的变更，那无伤大雅，适当微调即可。倘若是很大的变更，比如新增的功能开发需要一两周，甚至更多，那么整个项目计划有可能就需要推倒重做，这无可厚非。</p>
<p>我们要探讨的是介于这大小之间，就是那些有机会在当前计划里可以解决掉的需求，比如增加了一周的工作量，你有信心能按当前制定的计划如期交付么？我们现在的情况有可能只是将项目需求变更分为大小两个情况，小的微调，大的立马调整项目计划，然后项目上线时间就会变更，久而久之，就会觉得这是理所当然的事情。</p>
<p>我们现在大部分项目开发工作，实际上是有协商空间的，没有限定死，真遇到那种突发情况，比如客户需求有变更，但是交付时间还是一样，没有任何商量的余地，这个时候项目负责人应该怎么办？有人可能会说加班，但是有时加班不一定就可以解决问题。</p>
<p>也许现在我们可以，慢慢培养这方面的意识和能力，在平时多去积累这方面的经验，避免真遇到事情了手忙脚乱，无从下手。也就是说，我们可以把项目需求变更分为三个情况，小的微调即可；大的比如需要增加两周工作量，那就变更项目计划；中的比如需要增加一周工作量，我们先不着急立马变更项目计划，先想一下，有没有什么办法可以在不变更项目计划的情况下解决掉这个问题呢？然后把各种可能的解决方案123列出来，召集大家一起讨论，也许就会找到办法，如果多个方案讨论之后还是不行，那我们就根据实际情况变更项目计划。</p>
<p>这样做的目的在于，可以培养我们多个维度去解决问题的意识，还有就是我们是一个项目团队，是一个整体，当我们遇到难题的时候，不管最终解决与否，我们是努力过的，没有退缩逃避。</p>
<h2 id="410-项目中不可控的任务如何安排和验收">4.10 项目中不可控的任务如何安排和验收</h2>
<h3 id="4101-问题描述">4.10.1 问题描述</h3>
<p>项目中有时会有一些任务的时间是不可控的，不可控的原因在于该工作完全受制于他人，意思就是如果其他人没有做好，比如前后端同步开发，前端通常可能会快一些，然后要等后端提供接口，这个时候这个联调工作是没办法开展的，也不知道什么时候可以，自己就会很被动，走走停停，既浪费时间精力，也容易没有任何产出。这种通常是其他人还没做好的情况，最怕的是那一种，比如设备那边说已经很OK了，现在可以开发了，然后去试用了，发现还是不行，然后一下子不知道该干嘛了，也不知道什么时候可以改好，等的话可能要很久，就浪费时间了，不等的话可能一下子就修复好可用了，自己完全处于左右为难的状态。之前有APP项目就是这样的情况，本来APP功能已经开发好了，然后测试阶段，设备经常出现问题，可以用但是又不稳定，经常测到一半，就测不下去了，然后反馈给到设备那边，改了好几次，觉得可以了，又继续测试了，后来还是不行，反复多次我才醒悟苗头不对，不能这样下去了，立马中止项目测试，和设备那边沟通，设备需要确保完全没有问题，再继续这个项目的工作，可以说是血的教训。</p>
<h3 id="4102-解决方案">4.10.2 解决方案</h3>
<p>这个问题之所以会造成那么大的影响，是因为我们在和他人协作的时候，没有和对方明确一个具体的时间节点，而是很含糊的回答道，等某某完成了我才可以对接，然后再问一句，那他什么时候可以做完呢？过几天吧，到底是几天？哪一天的？不知道呢。这样是有隐患的，因为这些模糊的信息，负责对接的开发同事完全就是看天吃饭了，任何结果完全是随机的。过几天，可能是一天，也可能是两天，甚至是一周或者更多，再者，项目负责人调整项目任务的时间也会变得很困难。</p>
<p>我们需要和对方明确一个具体的时间节点，比如前端同事需要问下后端的同事，接口是哪一天可以提供使用，而这个使用的意思，基本上是自测过的，不说一个bug都没有，至少是相对稳定的。我们知道这个具体的时间节点之后，就可以先安排其他事情了，项目开发工作的开展就会很清晰，而不是完全混乱的。</p>
<h2 id="411-项目为什么需要加班">4.11 项目为什么需要加班</h2>
<h2 id="412-项目的需求如何梳理">4.12 项目的需求如何梳理</h2>
<h2 id="413-项目中什么时候修复测试反馈的bug">4.13 项目中什么时候修复测试反馈的Bug</h2>
<h2 id="414-项目中周一时合并代码">4.14 项目中周一时合并代码</h2>
<h2 id="415-项目测试人员应重点关注的内容">4.15 项目测试人员应重点关注的内容</h2>
<h2 id="416-项目管理应该什么时候参与项目中">4.16 项目管理应该什么时候参与项目中</h2>
<h2 id="417-项目管理制定一直没办法落实怎么办">4.17 项目管理制定一直没办法落实怎么办？</h2>
<h2 id="418-产品权力过大开发无法反驳">4.18 产品权力过大，开发无法反驳</h2>
<p>产品提供的需求文档和原型设计，开发在代码实现过程中，觉得要实现的功能，破坏了当前架构，很难进行实现，产品以客户提的需求为由拒绝。</p>
<p>职责不清晰，产品权力大，做什么，只要是说用户提的，开发没办法反驳，反驳的机会都没有，功能沟通没办法细说。一个人做决定的，拍板的。提需求的时候为我们着想。自己职权上达成的。稍微回绝，就不高兴。一般来说，产品是明确要做的内容，开发是要实现怎么做，所以还是有可以协商的空间的，就事论事，把原因说明清楚，然后看产品是否有其他方案实现。</p>
<h2 id="419-遇到问题无法解决应该怎么处理">4.19 遇到问题无法解决应该怎么处理？</h2>
<p>如果遇到问题，无法解决，应该及时向上反馈，然后上级及时介入，并知悉事情的前因后果，协助开发同事解决问题，但要小心下属的猴子跳到上级身上。应以提供解决方案为主，具体继续由下属落实完成。</p>
<h2 id="420-职责不清晰">4.20 职责不清晰</h2>
<p>说到底工作只是工作，为了把事情做好，分工不同而已。</p>
<ol>
<li>
<p>大屏由后台动态配置</p>
</li>
<li>
<p>需求的价值</p>
<p>需求的问题</p>
<p>需求是叶工明确的，你只能提建议，但是拍板的还是叶工，开发自己想到的不算需求。产品之前跟过一段时间，但是后面漏掉了，没有及时跟进了，导致现在都是没有产品的，现在基本都是我们自己解决产品的问题</p>
</li>
</ol>
<h2 id="421-不是谁都有你这样的条件">4.21 不是谁都有你这样的条件</h2>
<p>不是谁都有你这样的条件，要考虑到别人是很难做到这样的，要清楚很多人是不一样的。</p>
<h2 id="计划进行中领导新安排的任务无法如期达成怎么办">计划进行中，领导新安排的任务无法如期达成怎么办？</h2>
<p>电视剧里，和珅还说过，皇上安排的事情，最怕的不是大事，因为大事有章法可循，照着办就好，最怕小事，没有先例，完全不知道怎么做，只能琢磨心思，见招拆招，所以，最要注意的老板安排的小事。</p>
<p>曾仕强曾老就有一集说道，老板让我去死，我到底去不去死？
怎么回答呢，好的，老板。然后自己不去死就行了，说到你这个，其实你肯定要一口答应下来，好的，然后先回去半个小时，然后再去找领导，解释说，现在手头上的事情有点多，时间很急的话，其他事情先推迟是否合适？这就说明你是真的想做这个事情，但是客观条件不允许，然后领导怎么回答，无非就是其他事情先缓一缓，或者这个事情呢可以晚一点，这样的回答。领导安排给你做肯定是有自己考虑的，大概率是测试，很多测试其实都是平时那一下，验证这个人能不能为我所用，将来是我自己人等等，太多了，经历多了就知道测试都是在平时突然来一下。哈哈哈，个人浅见。</p>
<h1 id="第5章-提升篇">第5章 提升篇</h1>
<h2 id="51-如何提升项目管理能力">5.1 如何提升项目管理能力？</h2>
<p>这个问题覆盖面很广，其实很多时候方法都是通用的，这方面和学一门技术所运用的技巧是一样的，可以先实践后学习，以终为始，先解决当前遇到的问题，解决了之后再总结，久而久之就像涂鸦一样，慢慢这一块那一块也会涂完，而不是一开始就有顺序涂完整幅画了。在做事情的时候，有些知识不是立马就会用到的，学了之后没有应用，很快就会忘记，而且没有立马实践意味着没有产出，你没看到有什么显著的成果，就会打击积极性，便不利于你后续的学习。其实这个思路无形之中刚好契合了毛泽东《实践论》所说的，”通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。“所以，这也是我们项目计划为什么需要有复盘会议的原因，实践、认识、再实践、再认识，如此反复，不断地向真理靠近。</p>
<p>市面上相关项目管理的书籍很多，但是大部分都是一些方法技巧，我始终认为方法固然很重要，但是意识才是最核心的那部分，只有不断修炼意识层面，哪怕方法暂时掌握不到位，日积月累，终有一日也会有所成就。所以推荐的就是一些看起来和项目管理一点关系都没有，实际上关联密切的书籍，首先就是《实践论》，它是如此的重要，以致我不得不多次提及，除了这本书之外，还推荐《非暴力沟通》和《精力管理》，附录会有一些摘要，可以简单看一下。</p>
]]></content:encoded>
    </item>
    <item>
      <title>怎么学Vue开发</title>
      <link>https://dstweihao.cn/posts/%E6%8A%80%E8%83%BD%E6%A0%91/%E6%80%8E%E4%B9%88%E5%AD%A6vue%E5%BC%80%E5%8F%91/</link>
      <pubDate>Sun, 21 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%8A%80%E8%83%BD%E6%A0%91/%E6%80%8E%E4%B9%88%E5%AD%A6vue%E5%BC%80%E5%8F%91/</guid>
      <description>&lt;h1 id=&#34;第1章-简介&#34;&gt;第1章 简介&lt;/h1&gt;
&lt;p&gt;我们在学习新技术的时候，习惯于将官方文档先过一遍，将全部的知识点全部掌握之后，再进行项目实战，但是因为太多都是概念的知识，学习过程枯燥乏味，很少有人能坚持下来。&lt;/p&gt;
&lt;p&gt;所以我在想，怎么改变这种现象？以我个人的经验来说，过多深究官方文档，反而将自己陷入知识点的海洋之中，抓不到重点，往往水过鸭背，因为学了没有真正应用，不久之后就会忘记，我的意思是，不用看什么官方文档，以终为始，不用管自己到底会不会，直接上手开发项目，根据当前的需求，去学习对应的知识点，比如现在你要生成一个 Vue3.0 项目，那么你可能只需要去学一下Vite对应的知识点就好了，不用去学Vue3.0中父子组件应该怎么传值？比如你要学习开发一个登陆页面，那你就需要去看Element-Plus应该怎么引入？如果你所学并不能为当下所用，那将毫无意义。&lt;/p&gt;
&lt;p&gt;其实在你一步一步完成真实项目的过程中，就一直在学习Vue3.0的知识点了。&lt;/p&gt;
&lt;p&gt;本书计划将 &lt;code&gt;Vue3.0&lt;/code&gt; 的知识过一遍，所以一些 &lt;code&gt;Vue2.0&lt;/code&gt; 就需要的环境配置就不再过多说明，只会提到 &lt;code&gt;Vue3.0&lt;/code&gt; 开发环境配置相关的内容，用到的技术有 &lt;code&gt;Vue3.0+Vite+TypeScript+Element-Plus+Less &lt;/code&gt;。&lt;/p&gt;
&lt;h1 id=&#34;第2章-开发环境配置&#34;&gt;第2章 开发环境配置&lt;/h1&gt;
&lt;h2 id=&#34;21-新建项目&#34;&gt;2.1 新建项目&lt;/h2&gt;
&lt;p&gt;在 &lt;a href=&#34;https://cn.vitejs.dev/&#34;&gt;Vite官方文档&lt;/a&gt; 中，已经提供了很多预设的模板，这里因为只关注当前使用的技术，所以其他模板并不详细说明，使用 &lt;code&gt;Vite&lt;/code&gt; 生成 &lt;code&gt;Vue3.0&lt;/code&gt; 项目模板，如果是使用 &lt;code&gt;JaveScript&lt;/code&gt; 进行开发，使用 &lt;code&gt;vue&lt;/code&gt; ，如果是使用 &lt;code&gt;TypeScript&lt;/code&gt; 进行开发，使用 &lt;code&gt;vue-ts&lt;/code&gt; ，具体命令如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;6.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;init&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vite&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latest&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;my&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;需要额外的双横线&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;如果是使用JaveScript开发&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;使用vue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;init&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vite&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latest&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;my&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;如果是使用JaveScript开发&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;使用vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;init&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vite&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;latest&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;my&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/001.PNG&#34;&gt;&lt;/p&gt;
&lt;p&gt;打开chrome，就会显示项目模板的内容，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/002.PNG&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;22-chrome-91版本以上跨越问题&#34;&gt;2.2 Chrome 91版本以上跨越问题&lt;/h2&gt;
&lt;h1 id=&#34;第3章-vue30基础知识&#34;&gt;第3章 Vue3.0基础知识&lt;/h1&gt;
&lt;h2 id=&#34;31-router&#34;&gt;3.1 Router&lt;/h2&gt;
&lt;h2 id=&#34;32-comand&#34;&gt;3.2 Comand&lt;/h2&gt;
&lt;h2 id=&#34;33-porps&#34;&gt;3.3 Porps&lt;/h2&gt;
&lt;h2 id=&#34;34-emit&#34;&gt;3.4 Emit&lt;/h2&gt;
&lt;h2 id=&#34;35-vuex&#34;&gt;3.5 Vuex&lt;/h2&gt;
&lt;h3 id=&#34;351-computed&#34;&gt;3.5.1 computed&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;computed&lt;/code&gt;主要用于涉及到视图更新的处理，比如用户名username的更新，刷新后，右上角用户名没有赋值成功。在&lt;code&gt;App.vue&lt;/code&gt;中已经添加了&lt;code&gt;getUserInfo&lt;/code&gt;的网络请求，但是在右上角上赋值显示失败了。&lt;/p&gt;
&lt;p&gt;使用方式如下所示，并没有触发视图更新：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;const username = store.state.userInfo.username
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;触发视图更新：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;improt { useStore } from &amp;#39;vuex&amp;#39;
const store = useStore()
const username = computed(() =&amp;gt; {
    return store.state.userInfo.username
})
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;userInfo敲定刷新后的获取策略&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="第1章-简介">第1章 简介</h1>
<p>我们在学习新技术的时候，习惯于将官方文档先过一遍，将全部的知识点全部掌握之后，再进行项目实战，但是因为太多都是概念的知识，学习过程枯燥乏味，很少有人能坚持下来。</p>
<p>所以我在想，怎么改变这种现象？以我个人的经验来说，过多深究官方文档，反而将自己陷入知识点的海洋之中，抓不到重点，往往水过鸭背，因为学了没有真正应用，不久之后就会忘记，我的意思是，不用看什么官方文档，以终为始，不用管自己到底会不会，直接上手开发项目，根据当前的需求，去学习对应的知识点，比如现在你要生成一个 Vue3.0 项目，那么你可能只需要去学一下Vite对应的知识点就好了，不用去学Vue3.0中父子组件应该怎么传值？比如你要学习开发一个登陆页面，那你就需要去看Element-Plus应该怎么引入？如果你所学并不能为当下所用，那将毫无意义。</p>
<p>其实在你一步一步完成真实项目的过程中，就一直在学习Vue3.0的知识点了。</p>
<p>本书计划将 <code>Vue3.0</code> 的知识过一遍，所以一些 <code>Vue2.0</code> 就需要的环境配置就不再过多说明，只会提到 <code>Vue3.0</code> 开发环境配置相关的内容，用到的技术有 <code>Vue3.0+Vite+TypeScript+Element-Plus+Less </code>。</p>
<h1 id="第2章-开发环境配置">第2章 开发环境配置</h1>
<h2 id="21-新建项目">2.1 新建项目</h2>
<p>在 <a href="https://cn.vitejs.dev/">Vite官方文档</a> 中，已经提供了很多预设的模板，这里因为只关注当前使用的技术，所以其他模板并不详细说明，使用 <code>Vite</code> 生成 <code>Vue3.0</code> 项目模板，如果是使用 <code>JaveScript</code> 进行开发，使用 <code>vue</code> ，如果是使用 <code>TypeScript</code> 进行开发，使用 <code>vue-ts</code> ，具体命令如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">npm</span> <span class="mf">6.</span><span class="nx">x</span>
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">init</span> <span class="nx">vite</span><span class="err">@</span><span class="nx">latest</span> <span class="nx">my</span><span class="o">-</span><span class="nx">vue</span><span class="o">-</span><span class="nx">app</span> <span class="o">--</span><span class="nx">template</span> <span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">npm</span> <span class="mi">7</span><span class="o">+</span><span class="p">,</span> <span class="nx">需要额外的双横线</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">如果是使用JaveScript开发</span><span class="err">，</span><span class="nx">使用vue</span>
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">init</span> <span class="nx">vite</span><span class="err">@</span><span class="nx">latest</span> <span class="nx">my</span><span class="o">-</span><span class="nx">vue</span><span class="o">-</span><span class="nx">app</span> <span class="o">--</span> <span class="o">--</span><span class="nx">template</span> <span class="nx">vue</span>
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">如果是使用JaveScript开发</span><span class="err">，</span><span class="nx">使用vue</span><span class="o">-</span><span class="nx">ts</span>
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">init</span> <span class="nx">vite</span><span class="err">@</span><span class="nx">latest</span> <span class="nx">my</span><span class="o">-</span><span class="nx">vue</span><span class="o">-</span><span class="nx">app</span> <span class="o">--</span> <span class="o">--</span><span class="nx">template</span> <span class="nx">vue</span><span class="o">-</span><span class="nx">ts</span>
</span></span></code></pre></div><p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/001.PNG"></p>
<p>打开chrome，就会显示项目模板的内容，如下图所示：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/002.PNG"></p>
<h2 id="22-chrome-91版本以上跨越问题">2.2 Chrome 91版本以上跨越问题</h2>
<h1 id="第3章-vue30基础知识">第3章 Vue3.0基础知识</h1>
<h2 id="31-router">3.1 Router</h2>
<h2 id="32-comand">3.2 Comand</h2>
<h2 id="33-porps">3.3 Porps</h2>
<h2 id="34-emit">3.4 Emit</h2>
<h2 id="35-vuex">3.5 Vuex</h2>
<h3 id="351-computed">3.5.1 computed</h3>
<p><code>computed</code>主要用于涉及到视图更新的处理，比如用户名username的更新，刷新后，右上角用户名没有赋值成功。在<code>App.vue</code>中已经添加了<code>getUserInfo</code>的网络请求，但是在右上角上赋值显示失败了。</p>
<p>使用方式如下所示，并没有触发视图更新：</p>
<pre tabindex="0"><code>const username = store.state.userInfo.username
</code></pre><p>触发视图更新：</p>
<pre tabindex="0"><code>improt { useStore } from &#39;vuex&#39;
const store = useStore()
const username = computed(() =&gt; {
    return store.state.userInfo.username
})
</code></pre><p>userInfo敲定刷新后的获取策略</p>
<ol>
<li>
<p>通过在App.vue中重新发起请求获取用户信息</p>
<p>问题：1.登录页面刷新因为没有token会报错，解决可以加上判断，但是代码很难看。</p>
<pre><code> 2.每个组件中都需要watch监听usrInfo，很繁琐。
</code></pre>
</li>
<li>
<p>登录后将用户信息保存在localStorage，刷新后通过vuex中获取</p>
<p>问题: 1.如果更新了用户信息,刷新后获取的还是旧的数据</p>
<pre><code> 2.在getters.ts中判断数据为空就重新发起网络请求，获取用户信息，但是因为异步的原因，数据并没有同步。
</code></pre>
</li>
<li>
<p>登录后触发commit，然后在mutations.ts中，将用户信息保存到localStorage，刷新后通过vuex获取。</p>
<p>问题: 1.需解决刷新后还是旧数据的问题，那就需要更新后，通过commit更新localStorage中的用户信息</p>
</li>
<li>
<p>最终确定以方式3实现：</p>
<p>使用方式：</p>
<pre tabindex="0"><code>
 import { useStore } from &#39;vuex&#39;

  let userInfo = store.getters.userInfo
</code></pre></li>
</ol>
<p>在ZHeaderArea.vue中的
let userInfo = computed(() =&gt; {
return store.state.userInfo
})</p>
<p>改为getter获取就报错</p>
<pre tabindex="0"><code>


### 3.5.2 watch

`watch`用于监听数据有变化触发，用于需要对数据进行操作时使用，比如个人中心，刷新后，使用`computed`方式`userInfo`没有成功获取，原因是`&lt;template&gt;`上并没有使用userInfo进行关联。

```tsx
     let userInfo = store.state.userInfo
     setUserInfoListValue(userInfo)
     watch(
         () =&gt; store.state.userInfo,
         (newValue, oldValue) =&gt; {
             userInfo = newValue
             setUserInfoListValue(userInfo)
         }
     )
     function setUserInfoListValue(info: any) {
         userInfoList.forEach((item: any) =&gt; {
             for (var key in info) {
                 if (item.prop === key) {
                     item.content = info[key] ? info[key] : &#39;--&#39;
                 }
             }
         })
     }
</code></pre><h2 id="35-viteconfigts">3.5 Vite.config.ts</h2>
<h3 id="351-如何设置路径别名">3.5.1 如何设置路径别名</h3>
<p>在项目中，因为组件或者ts文件引入，需要指定路径，如果文件层级很深，在开发中就会变得很繁琐，使用别名可以有效的解决这个问题。</p>
<p>第一步，需要在vite.config.ts文件中加上，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">path</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">resolve</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">alias</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="s1">&#39;@&#39;</span><span class="o">:</span> <span class="nx">path</span><span class="p">.</span><span class="nx">resolve</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">,</span> <span class="s1">&#39;./src&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">......</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><p>第二步，需要在tsconfig.json文件中加上，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;compilerOptions&#34;</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="p">......</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;baseUrl&#34;</span><span class="o">:</span> <span class="s2">&#34;./&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;paths&#34;</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="s2">&#34;@/*&#34;</span><span class="o">:</span><span class="p">[</span><span class="s2">&#34;./src/*&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span></code></pre></div><p>此时，就可以在项目中使用@了。</p>
<h1 id="第4章-搭建项目框架">第4章 搭建项目框架</h1>
<h2 id="41-container布局容器">4.1 Container布局容器</h2>
<h2 id="41-左侧菜单栏实现">4.1 左侧菜单栏实现</h2>
<ol>
<li>
<p>左侧菜单栏，实现过程中遇到了一个问题，那就是el-aside的宽度默认是300px，项目中需求是200px，这个不难，只需要在<el-aside>中设置width=&ldquo;200px&quot;就可以解决了，然后如果要实现展开和收缩，就需要设置<el-menu>，而它的宽度需要单独设置的 ，设置为200px，实现展开和收缩功能，收缩时宽度变为60px，但是<el-aside>还是200px，其实要实现联动，只需要动态设置width的值就好了，但是实现左侧菜单栏，我们通常是单独抽成组件来使用的，这样要联动就很麻烦，其实要实现也是可以的，使用props就好了，但我还是想着有没有更好的方法，有什么办法能够动态设置<el-aside>的宽度？</p>
<p>因为去掉<el-aside>的宽度属性发现，<el-menu>实现的效果是很理想的，后来发现只需要设置width为auto即可</p>
</li>
<li>
<p>左侧菜单栏，如何使用组件递归实现？</p>
</li>
<li>
<p>el-menu折叠时为何不显示二级菜单？</p>
<p>当菜单栏折叠时，发现首页的图标没有显示，实现的代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">el</span><span class="o">-</span><span class="nx">menu</span><span class="o">-</span><span class="nx">item</span> <span class="nx">v</span><span class="o">-</span><span class="k">if</span><span class="o">=</span><span class="s2">&#34;!item.childrens&#34;</span> <span class="o">:</span><span class="nx">index</span><span class="o">=</span><span class="s2">&#34;`${String(index)}`&#34;</span> <span class="o">:</span><span class="nx">route</span><span class="o">=</span><span class="s2">&#34;item.index&#34;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">	<span class="o">&lt;</span><span class="nx">template</span> <span class="err">#</span><span class="nx">title</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">		<span class="o">&lt;</span><span class="nx">div</span> <span class="kr">class</span><span class="o">=</span><span class="s2">&#34;zws-aside-menu-item&#34;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">			<span class="o">&lt;</span><span class="nx">i</span> <span class="o">:</span><span class="kr">class</span><span class="o">=</span><span class="s2">&#34;`zws-aside-menu-item-iconSetting iconfont ${item.icon}`&#34;</span><span class="o">&gt;&lt;</span><span class="err">/i&gt;</span>
</span></span><span class="line"><span class="cl">			<span class="o">&lt;</span><span class="nx">span</span><span class="o">&gt;</span><span class="p">{{</span> <span class="nx">item</span><span class="p">.</span><span class="nx">title</span> <span class="p">}}</span><span class="o">&lt;</span><span class="err">/span&gt;</span>
</span></span><span class="line"><span class="cl">		<span class="o">&lt;</span><span class="err">/div&gt;</span>
</span></span><span class="line"><span class="cl">	<span class="o">&lt;</span><span class="err">/template&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/el-menu-item&gt;</span>
</span></span></code></pre></div><p>之前的项目没有这个问题是因为不是使用collapse这个属性实现的，而是动态设置宽度，200和60切换达到的效果。查看官方文档的案例，发现这个写法，当折叠时，是显示图标的，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">el</span><span class="o">-</span><span class="nx">menu</span><span class="o">-</span><span class="nx">item</span> <span class="nx">index</span><span class="o">=</span><span class="s2">&#34;4&#34;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">	<span class="o">&lt;</span><span class="nx">i</span> <span class="kr">class</span><span class="o">=</span><span class="s2">&#34;el-icon-setting&#34;</span><span class="o">&gt;&lt;</span><span class="err">/i&gt;</span>
</span></span><span class="line"><span class="cl">	<span class="o">&lt;</span><span class="nx">span</span> <span class="nx">slot</span><span class="o">=</span><span class="s2">&#34;title&#34;</span><span class="o">&gt;</span><span class="nx">导航四</span><span class="o">&lt;</span><span class="err">/span&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/el-menu-item&gt;</span>
</span></span></code></pre></div><p>然后按照官网的写法，将<template>去掉就没再出现这个问题了。</p>
</li>
<li>
<p>点击左侧菜单栏，没有触发路由跳转？</p>
<p>原因是：在<el-menu>组件中忘记加上router了</p>
</li>
<li>
<p>路由跳转到新的页面，怎么让新的页面是在<el-main>组件中的？</p>
<p>需要设置嵌套路由，而且path设置时需要/，但是子路由path前面不用加/。</p>
</li>
<li>
<p>当<el-aside>的width设置为auto时，出现多余边框，如下图所示：</p>
<p><img alt="003" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/003.png"></p>
<p>但是如果把width设置为200px，是没有这个问题的，问题应该出在<el-menu>组件上面，当把它设置width为200px时，实际上<el-aside>的width是201px，这个1px到底是从哪里来的？</p>
</li>
<li></li>
<li></li>
<li></li>
</ol>
<h2 id="42-主题色切换">4.2 主题色切换</h2>
<h3 id="421-在项目中改变-sass-变量">4.2.1 在项目中改变 SASS 变量</h3>
<p>由于Element-Plus<code>处于开发状</code>态，所以官方文档里并没能做到实时更新，导致按照提供的方式，其实出现了很多问题，经过研究，当前版本，正确的配置方式为：</p>
<ol>
<li>
<p>在项目目录新建<code>element-variables.scss</code>文件，并加上覆盖的样式代码：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="cm">/* 改变主题色变量 */</span>
</span></span><span class="line"><span class="cl"><span class="nx">$</span><span class="o">--</span><span class="nx">colors</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;primary&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="mi">80</span><span class="nx">b33f</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="cm">/* 改变 icon 字体路径变量，必需（将~去掉，不然不显示图标） */</span>
</span></span><span class="line"><span class="cl"><span class="nx">$</span><span class="o">--</span><span class="nx">font</span><span class="o">-</span><span class="nx">path</span><span class="o">:</span> <span class="s2">&#34;element-plus/lib/theme-chalk/fonts&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="cm">/* 将~改为node_modules后，确实解决了路径引用报错的问题，但是项目每次刷新都很慢，需持续留意解决方案*/</span>
</span></span><span class="line"><span class="cl"><span class="err">@</span><span class="kr">import</span> <span class="s2">&#34;node_modules/element-plus/packages/theme-chalk/src/index.scss&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="cm">/* 一般以上就够满足需求了，其他设置*/</span>
</span></span><span class="line"><span class="cl"><span class="nx">$</span><span class="o">--</span><span class="nx">colors</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;primary&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="mi">003261</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;success&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="mi">21</span><span class="nx">ba45</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;warning&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="nx">f2711c</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;danger&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="nx">db2828</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;error&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="nx">db2828</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;info&#34;</span><span class="o">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;base&#34;</span><span class="o">:</span> <span class="err">#</span><span class="mi">42</span><span class="nx">b8dd</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span></code></pre></div></li>
<li>
<p>在项目<code>main.ts</code>文件中引入</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">App</span> <span class="nx">from</span> <span class="s1">&#39;./App.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">ElementPlus</span> <span class="nx">from</span> <span class="s1">&#39;element-plus&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">createApp</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;vue&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">router</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;./router/index&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="s1">&#39;./assets/iconfont/iconfont.css&#39;</span>
</span></span><span class="line"><span class="cl"><span class="c1">// 引入 element-variables.scss 文件
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">import</span> <span class="s1">&#39;../element-variables.scss&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">createApp</span><span class="p">(</span><span class="nx">App</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">ElementPlus</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">router</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">mount</span><span class="p">(</span><span class="s1">&#39;#app&#39;</span><span class="p">)</span>
</span></span></code></pre></div></li>
</ol>
<h3 id="422-命令行主题工具">4.2.2 命令行主题工具</h3>
<p>如果项目中没有使用SASS，推荐使用这个方式。</p>
<ol>
<li>
<p>在使用Elment-Plus时，打算切换主题色，安装官方文档实现，运行<code>et -i</code>时，显示如下报错信息：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">Run</span> <span class="sb">`npm audit`</span> <span class="k">for</span> <span class="nx">details</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"><span class="nx">weihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue3</span><span class="p">.</span><span class="mi">0</span> <span class="o">%</span> <span class="nx">et</span> <span class="o">-</span><span class="nx">i</span>
</span></span><span class="line"><span class="cl"><span class="nx">fs</span><span class="p">.</span><span class="nx">js</span><span class="o">:</span><span class="mi">45</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span> <span class="o">=</span> <span class="nx">primordials</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="o">^</span>
</span></span><span class="line"><span class="cl"><span class="nx">ReferenceError</span><span class="o">:</span> <span class="nx">primordials</span> <span class="nx">is</span> <span class="nx">not</span> <span class="nx">defined</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">js</span><span class="o">:</span><span class="mi">45</span><span class="o">:</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nx">req_</span> <span class="p">(</span><span class="err">/usr/local/lib/node_modules/element-theme/node_modules/natives/index.js:143:24)</span>
</span></span><span class="line"><span class="cl">    <span class="nx">at</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">req</span> <span class="p">[</span><span class="nx">as</span> <span class="nx">require</span><span class="p">]</span> <span class="p">(</span><span class="err">/usr/local/lib/node_modules/element-</span>
</span></span></code></pre></div><p>这个原因是因为Node.js版本过高导致的，官方推荐最好小于12版本。</p>
</li>
</ol>
<h2 id="43-项目部署服务器">4.3 项目部署服务器</h2>
<p>项目部署服务器的时候，发现console里显示报错，没有加载到相关js等等问题，原因是在<code>vite.config.ts</code>文件中少了设置<code>base:'./'</code>,再次部署，加载资源文件没有显示报错，但是页面显示空白，这是因为<code>router/index.ts</code>文件中，指定的路由模式为<code>history: createWebHistory()</code>，需要改为<code>history: createWebHashHistory()</code>,这两种模式的差别可看一下文章：<a href="https://www.xieniao.com/news/content/7156.html">VUE3.0 createWebHistory和createWebHashHistory</a></p>
<h1 id="第5章-其他问题">第5章 其他问题</h1>
<ol>
<li>Vue3.0项目中引入.js文件，打包报错的问题</li>
</ol>
<p><a href="https://blog.csdn.net/Haveyounow/article/details/118819037?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&amp;depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link">https://blog.csdn.net/Haveyounow/article/details/118819037?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&amp;depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link</a></p>
<ol start="2">
<li>
<p>@mouseenter 和 @mouseleave事件闪烁问题</p>
<p>不是后来才了解到，只能父子元素形成，不可以兄弟元素，兄弟元素就会闪烁</p>
</li>
</ol>
<h1 id="本书待补充知识点记录">本书待补充知识点记录</h1>
<ul>
<li>
<p><input disabled="" type="checkbox"> vuex使用指南，pinia使用指南，其与vuex的区别在哪里？</p>
</li>
<li>
<p><input disabled="" type="checkbox"> vue项目，vscode中debug使用指南</p>
</li>
<li>
<p><input disabled="" type="checkbox"> 提供vue学习路线，包括js、html、css、vue、vite、element plus等等</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《半小时漫画党史 1921—1949》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8D%8A%E5%B0%8F%E6%97%B6%E6%BC%AB%E7%94%BB%E5%85%9A%E5%8F%B2-19211949/</link>
      <pubDate>Wed, 13 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E5%8D%8A%E5%B0%8F%E6%97%B6%E6%BC%AB%E7%94%BB%E5%85%9A%E5%8F%B2-19211949/</guid>
      <description>&lt;h2 id=&#34;中国党史大事记1921-1949&#34;&gt;中国党史大事记1921-1949&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;面对苦难，中国人民没有屈服，无数仁人志士，为救亡图存，进行了各种尝试，但都未能成功。1921年，五四运动之后，在马克思列宁主义与中国工人运动相结合的进程中，中国共产党诞生了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第一章-五四风雷唤醒民众五四运动&#34;&gt;第一章 五四风雷，唤醒民众——五四运动&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;英法联军直接闯进北京，甚至一把火，烧掉了号称“万园之园”的皇家园林——圆明园&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在这种背景下，为了救百姓于水火，救民族于危难，各行各业、各个阶层的有识之士挺身而出，展开了一场场轰轰烈烈的救亡图存的斗争。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;于是他以民族、民权、民生为口号，集结了一群人，成立了中国同盟会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;救国的根本，是要解放大家的思想！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他和《新青年》，以民主和科学为号角，以各种先进的新思想为武器，向几千年封建腐朽的、酱缸一般的旧思想发起了攻击，新文化运动开始了！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章-开天辟地的大事变中国共产党的创建&#34;&gt;第二章 开天辟地的大事变——中国共产党的创建&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;立志打造一个没有压迫、没有剥削、人人平等、人人自由的理想社会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有个叫列宁的马克思主义者，凭借这套理论，带上工人兄弟们，搞了一场轰轰烈烈的十月革命，推翻了俄国资产阶级的统治。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新文化运动的主流，还在提倡西方的资产阶级民主主义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;于是有人开始力挺社会主义，当时第一个举起十月社会主义革命旗帜的人，是新文化运动的主将李大钊。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先进分子们终于看明白了：帝国主义列强都是穿一条裤子的，他们就是要压迫中国老百姓。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;原来在拥有成功革命经验的俄国，为了向世界传播共产主义思想，列宁成立了一个国际组织：
共产国际&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个叫陈望道的先进分子，夜以继日地把它翻译成中文。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;党的最高纲领是：
组织无产阶级，用阶级斗争的手段，建立劳农专政的政治，铲除私有财产制度，渐次达到一个共产主义的社会。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;党的最低纲领是：
我们当前最主要的目标是消除内乱，打倒军阀，建设国内和平；推翻帝国主义的压迫，实现中华民族完全独立；统一中国为真正的民主共和国。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然而实际上，这是中华大地上开天辟地的一声炸雷，革命的火种已经悄悄地燃起，中国黑夜沉沉，但已经射进了一束光。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第三章-打倒列强除军阀国民大革命&#34;&gt;第三章 打倒列强，除军阀——国民大革命&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在国共两党意识到这些现状的时候，共产国际来给大家牵线了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共产国际代表马林来到上海，跟孙中山聊了聊。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;之后他又找到了共产党，提议实行“党内合作”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国民党在广州附近的黄埔岛上，创办了一所陆军军官学校，国民党的蒋介石任校长，共产党的周恩来任政治部主任。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;蒋介石和汪精卫的所作所为，彻底背叛了孙中山国共合作政策和反帝反封建的纲领，国共合作全面破裂，这场轰轰烈烈的革命最终走向了失败。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第四章-星星之火可以燎原土地革命&#34;&gt;第四章 星星之火，可以燎原——土地革命&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;那里有敌人重兵驻守，还是去敌人统治力量薄弱的农村吧！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;部队到井冈山的第一件事，就是废除封建土地制度，把土地还给农民，发动农民打倒土豪劣绅，还在个别地区试行分田工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;会议选举产生了新的中共红四军前敌委员会，毛泽东当选为书记；确定了“思想建党、政治建军”的根本原则，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“红旗还能打多久？”
一些人心里产生了这个疑问。为了安抚大家，毛泽东写了一封信，论证革命高潮即将到来。
在这封信中，他为了鼓励同志们，写下了中国共产党历史上极其著名的一句话：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;即便经历了大革命的失败，中国革命依然坚挺并蓬勃发展，其中的主要原因，是找到了一条正确的革命道路，那就是——&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第五章-地球的红飘带红军长征&#34;&gt;第五章 地球的红飘带——红军长征&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;为了避开国民党军队的追击，争取最短时间北上，红军决定翻越终年积雪、气候变化无常的夹金山。这就是红军长征中最艰苦的行军之一——爬雪山。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;：红一方面军和红四方面军，终于在懋功碰上了面&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;陕甘苏区，那里的红军同志们把根据地建设得相当不错，于是当即决定前往陕北，保卫并扩大地盘。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;纵观长征途中，红军队伍纵横十多个省，长驱六万五千里，其中中央红军行程二万五千里。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第六章-抗日救国收复失地九一八事变与抗日救亡运动&#34;&gt;第六章 抗日救国，收复失地——九一八事变与抗日救亡运动&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;国难当头，共产党态度坚决，提出了收复失地、抗日救国的主张，还派同志前去东北抗日，站在了抗日救亡运动的前列。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;经过谈判，蒋介石被迫作出了“停止剿共，联红抗日”的承诺，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为表诚意，周恩来亲自前往庐山，将《中共中央为公布国共合作宣言》交给蒋介石。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国共合作的实现，受到全国人民的热烈欢迎，大家有钱的捐钱，有力的出力，父教其子，兄勉其弟，妻子送郎，共赴国难，这些都是近代中国百年未有的新气象，标志着一个古老民族的空前觉醒。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第七章-中流砥柱团结抗战全民族抗战与抗日战争的胜利&#34;&gt;第七章 中流砥柱，团结抗战——全民族抗战与抗日战争的胜利&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;1937年12月13日，凶残的日军攻下南京后，在南京城里进行烧杀掳掠等暴行，制造了惨绝人寰的南京大屠杀。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“囚笼政策”就是以铁路为柱，公路为链，碉堡为锁，对抗日根据地进行分割和“扫荡”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第八章-将革命进行到底人民解放战争&#34;&gt;第八章 将革命进行到底——人民解放战争&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;道破了真正强大的力量，不是属于反动派，而是属于人民。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在政治上，共产党坚持“放手发动群众”，建立最广泛的人民民主统一战线，团结一切可以团结的力量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;孟良崮战役，歼灭了国民党“五大主力之一”的整编第七十四师，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解放军在围城之后，对留守北平的国民党傅作义集团耐心地开展工作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第九章-中国人民从此站立起来了新民主主义革命的全国性胜利&#34;&gt;第九章 中国人民从此站立起来了——新民主主义革命的全国性胜利&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风；务必使同志们继续地保持艰苦奋斗的作风。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;会议结束后，毛泽东就率领中共中央机关离开西柏坡，迁往北平。
并把这次行程称为“进京赶考”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进城后，解放军非常严格自律，为了不扰民，这支胜利之师甚至直接睡在马路上。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<h2 id="中国党史大事记1921-1949">中国党史大事记1921-1949</h2>
<ul>
<li>面对苦难，中国人民没有屈服，无数仁人志士，为救亡图存，进行了各种尝试，但都未能成功。1921年，五四运动之后，在马克思列宁主义与中国工人运动相结合的进程中，中国共产党诞生了。</li>
</ul>
<h2 id="第一章-五四风雷唤醒民众五四运动">第一章 五四风雷，唤醒民众——五四运动</h2>
<ul>
<li>
<p>英法联军直接闯进北京，甚至一把火，烧掉了号称“万园之园”的皇家园林——圆明园</p>
</li>
<li>
<p>在这种背景下，为了救百姓于水火，救民族于危难，各行各业、各个阶层的有识之士挺身而出，展开了一场场轰轰烈烈的救亡图存的斗争。</p>
</li>
<li>
<p>于是他以民族、民权、民生为口号，集结了一群人，成立了中国同盟会。</p>
</li>
<li>
<p>救国的根本，是要解放大家的思想！</p>
</li>
<li>
<p>他和《新青年》，以民主和科学为号角，以各种先进的新思想为武器，向几千年封建腐朽的、酱缸一般的旧思想发起了攻击，新文化运动开始了！</p>
</li>
</ul>
<h2 id="第二章-开天辟地的大事变中国共产党的创建">第二章 开天辟地的大事变——中国共产党的创建</h2>
<ul>
<li>
<p>立志打造一个没有压迫、没有剥削、人人平等、人人自由的理想社会。</p>
</li>
<li>
<p>有个叫列宁的马克思主义者，凭借这套理论，带上工人兄弟们，搞了一场轰轰烈烈的十月革命，推翻了俄国资产阶级的统治。</p>
</li>
<li>
<p>新文化运动的主流，还在提倡西方的资产阶级民主主义。</p>
</li>
<li>
<p>于是有人开始力挺社会主义，当时第一个举起十月社会主义革命旗帜的人，是新文化运动的主将李大钊。</p>
</li>
<li>
<p>先进分子们终于看明白了：帝国主义列强都是穿一条裤子的，他们就是要压迫中国老百姓。</p>
</li>
<li>
<p>原来在拥有成功革命经验的俄国，为了向世界传播共产主义思想，列宁成立了一个国际组织：
共产国际</p>
</li>
<li>
<p>一个叫陈望道的先进分子，夜以继日地把它翻译成中文。</p>
</li>
<li>
<p>党的最高纲领是：
组织无产阶级，用阶级斗争的手段，建立劳农专政的政治，铲除私有财产制度，渐次达到一个共产主义的社会。</p>
</li>
<li>
<p>党的最低纲领是：
我们当前最主要的目标是消除内乱，打倒军阀，建设国内和平；推翻帝国主义的压迫，实现中华民族完全独立；统一中国为真正的民主共和国。</p>
</li>
<li>
<p>然而实际上，这是中华大地上开天辟地的一声炸雷，革命的火种已经悄悄地燃起，中国黑夜沉沉，但已经射进了一束光。</p>
</li>
</ul>
<h2 id="第三章-打倒列强除军阀国民大革命">第三章 打倒列强，除军阀——国民大革命</h2>
<ul>
<li>
<p>在国共两党意识到这些现状的时候，共产国际来给大家牵线了。</p>
</li>
<li>
<p>共产国际代表马林来到上海，跟孙中山聊了聊。</p>
</li>
<li>
<p>之后他又找到了共产党，提议实行“党内合作”。</p>
</li>
<li>
<p>国民党在广州附近的黄埔岛上，创办了一所陆军军官学校，国民党的蒋介石任校长，共产党的周恩来任政治部主任。</p>
</li>
<li>
<p>蒋介石和汪精卫的所作所为，彻底背叛了孙中山国共合作政策和反帝反封建的纲领，国共合作全面破裂，这场轰轰烈烈的革命最终走向了失败。</p>
</li>
</ul>
<h2 id="第四章-星星之火可以燎原土地革命">第四章 星星之火，可以燎原——土地革命</h2>
<ul>
<li>
<p>那里有敌人重兵驻守，还是去敌人统治力量薄弱的农村吧！</p>
</li>
<li>
<p>部队到井冈山的第一件事，就是废除封建土地制度，把土地还给农民，发动农民打倒土豪劣绅，还在个别地区试行分田工作。</p>
</li>
<li>
<p>会议选举产生了新的中共红四军前敌委员会，毛泽东当选为书记；确定了“思想建党、政治建军”的根本原则，</p>
</li>
<li>
<p>“红旗还能打多久？”
一些人心里产生了这个疑问。为了安抚大家，毛泽东写了一封信，论证革命高潮即将到来。
在这封信中，他为了鼓励同志们，写下了中国共产党历史上极其著名的一句话：</p>
</li>
<li>
<p>即便经历了大革命的失败，中国革命依然坚挺并蓬勃发展，其中的主要原因，是找到了一条正确的革命道路，那就是——</p>
</li>
</ul>
<h2 id="第五章-地球的红飘带红军长征">第五章 地球的红飘带——红军长征</h2>
<ul>
<li>
<p>为了避开国民党军队的追击，争取最短时间北上，红军决定翻越终年积雪、气候变化无常的夹金山。这就是红军长征中最艰苦的行军之一——爬雪山。</p>
</li>
<li>
<p>：红一方面军和红四方面军，终于在懋功碰上了面</p>
</li>
<li>
<p>陕甘苏区，那里的红军同志们把根据地建设得相当不错，于是当即决定前往陕北，保卫并扩大地盘。</p>
</li>
<li>
<p>纵观长征途中，红军队伍纵横十多个省，长驱六万五千里，其中中央红军行程二万五千里。</p>
</li>
</ul>
<h2 id="第六章-抗日救国收复失地九一八事变与抗日救亡运动">第六章 抗日救国，收复失地——九一八事变与抗日救亡运动</h2>
<ul>
<li>
<p>国难当头，共产党态度坚决，提出了收复失地、抗日救国的主张，还派同志前去东北抗日，站在了抗日救亡运动的前列。</p>
</li>
<li>
<p>经过谈判，蒋介石被迫作出了“停止剿共，联红抗日”的承诺，</p>
</li>
<li>
<p>为表诚意，周恩来亲自前往庐山，将《中共中央为公布国共合作宣言》交给蒋介石。</p>
</li>
<li>
<p>国共合作的实现，受到全国人民的热烈欢迎，大家有钱的捐钱，有力的出力，父教其子，兄勉其弟，妻子送郎，共赴国难，这些都是近代中国百年未有的新气象，标志着一个古老民族的空前觉醒。</p>
</li>
</ul>
<h2 id="第七章-中流砥柱团结抗战全民族抗战与抗日战争的胜利">第七章 中流砥柱，团结抗战——全民族抗战与抗日战争的胜利</h2>
<ul>
<li>
<p>1937年12月13日，凶残的日军攻下南京后，在南京城里进行烧杀掳掠等暴行，制造了惨绝人寰的南京大屠杀。</p>
</li>
<li>
<p>“囚笼政策”就是以铁路为柱，公路为链，碉堡为锁，对抗日根据地进行分割和“扫荡”。</p>
</li>
</ul>
<h2 id="第八章-将革命进行到底人民解放战争">第八章 将革命进行到底——人民解放战争</h2>
<ul>
<li>
<p>道破了真正强大的力量，不是属于反动派，而是属于人民。</p>
</li>
<li>
<p>在政治上，共产党坚持“放手发动群众”，建立最广泛的人民民主统一战线，团结一切可以团结的力量。</p>
</li>
<li>
<p>孟良崮战役，歼灭了国民党“五大主力之一”的整编第七十四师，</p>
</li>
<li>
<p>解放军在围城之后，对留守北平的国民党傅作义集团耐心地开展工作。</p>
</li>
</ul>
<h2 id="第九章-中国人民从此站立起来了新民主主义革命的全国性胜利">第九章 中国人民从此站立起来了——新民主主义革命的全国性胜利</h2>
<ul>
<li>
<p>务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风；务必使同志们继续地保持艰苦奋斗的作风。</p>
</li>
<li>
<p>会议结束后，毛泽东就率领中共中央机关离开西柏坡，迁往北平。
并把这次行程称为“进京赶考”。</p>
</li>
<li>
<p>进城后，解放军非常严格自律，为了不扰民，这支胜利之师甚至直接睡在马路上。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《曾仕强教授告诉你怎样带团队》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%9B%BE%E4%BB%95%E5%BC%BA%E6%95%99%E6%8E%88%E5%91%8A%E8%AF%89%E4%BD%A0%E6%80%8E%E6%A0%B7%E5%B8%A6%E5%9B%A2%E9%98%9F/</link>
      <pubDate>Thu, 30 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%9B%BE%E4%BB%95%E5%BC%BA%E6%95%99%E6%8E%88%E5%91%8A%E8%AF%89%E4%BD%A0%E6%80%8E%E6%A0%B7%E5%B8%A6%E5%9B%A2%E9%98%9F/</guid>
      <description>&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一个团队的成败，领导者要负70%的责任，虽然他只有一个人。这也符合二八定律，就是20%的人要负80%的责任，而80%的人只负20%的责任。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要有一致对外的态度。对内可以全员参与，大家多商量，但是对外的时候，只能有一个态度、一个说法。对外声音不一致的话，外面的人就会莫衷一是。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学习是件好事情，但是要学我们要用的、能用的知识，看见什么学什么只会浪费时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们常说，你要向谁看齐。我对这句话不太认同。每一个人的才能是不同的，不可能做到全面发展。有些知识学了以后要调整，以便适合本身的需要，适合当时的环境，然后还要试用一下，确定没有任何问题之后才可以应用。不然，学会之后马上就用，用错了，谁来负这个责任？任何事都需要适当的热情、合理的执着，然后用心分辨、选择，找到适合自己的就要稳定下来，而不是总想着求新求变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每一个时代、每一个阶段都有其重点，我们一定要抓住重点，顺应形势。30岁以前，你根本没有办法定下原则，最好到处去看看，对人对事不要妄下判断，因为这时的你判断力不够。但是30岁以后，就要定下自己的原则，适合你的，就去学，不适合的，就放弃。人的一生是很短暂的，什么都学的话，什么都学不好。只有选择了适合自己的东西，比较深入地研究，才能确定做什么，确定下来后就要好好去做，这样到了40岁时，才能不惑。如果没有自己的原则，一会儿学这个，一会儿做那个，那肯定会困惑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;什么叫文化？顾名思义，文是花纹，就是花样的意思；化就是普遍的、能够为大家所吸纳并能表现出来的东西。化是没有痕迹的，把“花样”变成没有痕迹的东西，自然而然地让人接受并遵循，这就是文化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;亲疏有别是社会最大的原动力，它促使人们广结善缘，以获得尽可能大的利益。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当你发现不适合的时候，就要调整自己，这样你才可以做一个快乐的领导者，做一个很有效率的人。这就是强调中国式管理的原因，找到一种适合中国人的管理方式，让人心甘情愿地做事情，就是最有效的管理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第一章以人为本带团队&#34;&gt;第一章 以人为本带团队&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;中国人的要求比较简单，只有两个字——合理，合理就好。合理是人决定的，不是法决定的。合理不是通过制度产生的，制度比较死，而人比较灵活。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国的文化变迁却是采用了第三种方式，一直在变，却又永远没变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国式管理就是一切都追求合理化的管理。从某种意义上说，中国式管理就叫合理化管理，管到合理的地步就叫管理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;美国人只讲权利与义务，没有等级观念，不管对方是谁，该说的话都可以说。中国人则不同，讲话要先看对象：对上面是一种说法，对下面是另一种说法，对平级的同事，用第三种说法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;即使也想当班长，也想表现，但不会直接表现出来，而是欲擒故纵，推举最不可能当选的人。大家一看那个人既没能力又没魄力，怎么能让他当选呢？而你公开表态了，自然吸引别人的目光，尤其是当大家把你和那个不可能当选的人比较时，你就会脱颖而出，成为班长的不二人选。你不会提名那些很有能力的人，否则，你自己就没有机会了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人的高明之处，在于会把所有可能发生的情况都预料到，提前做好防备，这样，就让别人无话可说了。不要以为这是虚伪，也不要以为这是奸诈，这只是中国人用来保护自己的一种手段而已。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人在一对一的时候，无话不说；只要有第三者在场，就会含糊其辞。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人认为合理就好。西方的团队管理以法为中心，重视管理；中国的团队管理以理为中心，重视领导。对中国人来说，合理比合法更重要，中国人只接受合理的法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在工作中，因时制宜是很重要的。当你的老板叫你做什么事情的时候，他会关注你有没有在做。如果你打算先将手边的事情做完了再做老板交代的事，那老板肯定不高兴，因为老板的看法是，不是我叫你做的都是不重要的事情，我叫你做的才是重要的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多领导抱怨干部们不准时，每次开会都拖拖拉拉的。其实这是领导自身的问题。领导自己也不是十分按照时间来办事的，所以上行下效了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上下级的界线划分得过于清楚，大家受等级观念的限制很难一条心&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人处于最高峰的时候，往往踌躇满志，做事非常张扬。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上苍是很公平的，当有重大事情要发生的时候，它会不断地给你一些征兆，问题是你能不能意识到。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做一个优秀的领导者，一定要见微知著。领导在作决策之前，一般会要求数据准确，信息充足，殊不知，此时这些信息已经毫无用处了，因为等你把所有的信息都搜集齐备，已是时过境迁，这些信息都已过时了。一个领导者，一定要能根据少量的信息做出正确的判断，否则就跟不上形势的变化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实际工作中，是干部帮助领导作决策，而表面上让领导来做最后的决定，这样的团队才是高效的团队。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二，做主的人最好是通才型的，而不是专才型的，否则他就会带有很强的倾向性，很容易偏激。而做从的人是能兼顾各方面的“专”，而不是单一的“专”，否则几个人都偏到某一方面去，忽视其他方面，也等于为自己设置了一个陷阱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做主的人要尽量把自己变成通才，千万不要总强调自己的专长，可以说，做主的人只要有专长，就会有偏见，这是很麻烦的事情。做任何事情只要做久了，就会有职业病。一个搞财务出身的总经理，经常会陷入财务危机，因为他做什么都要先考虑财务，财务应该是财务经理负责的，不是总经理考虑的事情。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们一般将魏徵视为忠臣的典范，但做从的人千万不要学他，否则不会有好结果。几千年只有一个“魏徵”，就说明了问题。魏徵是很特殊的，他有幸碰到了唐太宗，如果换了别的皇帝，他早就被杀了。我们读史书就可以知道，魏徵对唐太宗讲话，态度很过分，完全是教训的口吻。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做到差不多，就不能再坚持了，做从的人还是要给做主的人留有面子的，尊重他的立场，最起码在其他人面前，维护他的形象，这是非常重要的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做从的人一定要记住适时给做主的人卖人情，人情前还要加两个字，变成“顺水人情”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;干部绝对不能凡事都听领导的，否则领导会怀疑你，要么虚伪，要么不负责任。适当地表达你的意见，而且适可而止，绝对不能超越你的领导，这就是做从的人的生存之道。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;干部一定要替领导着想，该给他面子时一定要做到，不能让领导单枪匹马地去战斗。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那老板最关心的是什么？答案是：我的下属心中有没有我。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你要想有前途，要得到领导的赏识，只能让他感觉到你心中有他，心意要靠“心”的交流，只能意会，不能言传。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功就是抓住别人的心和别人的钱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;佛经里面说，颠倒心。颠倒就叫心，什么意思？当你想事情的时候，你想完好的一面又想了坏的一面，这就是颠倒，你的“心”就体现出来了。只想好的一面，那是一厢情愿，是不用心。同时又想坏的一面，这就是用心的表现，因为你颠倒了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以人为本的团队管理必须以人性为基础，对不同的人采用不同的管理方法，因此，团队管理理论没有对与错、好与坏之分，只有合适不合适之分，合适的管理才是最好的管理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人擅长浑水摸鱼，换个角度说，中国人很懂得随机应变。当环境快速变化的时候，中国人就表现突出，乱世出英雄；当环境稳定的时候，中国人就表现平平。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;忠臣不事二主，一女不事二夫&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人有一个字很重要——“无”。全世界只有中国人最懂得“无”，外国人只知道“有”才能生有，而无法“无”中生有。中国人最了不起，经常“无”中生有，能从“无”看出有来，叫作无心之感。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无心，就是做你该做的事，而不要计较成果，即不要有投资回报、投入产出的观念。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国团队的特色是讲义气，这是我们要战胜西方的利器，如果完全学西方的经验，只能跟在西方人的后面走，无法超越。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无心的投入，有不同的产出，这叫感应。中国人强调广结善缘，平常多做好事，不求回报，成败得失也不是用眼前利益来衡量的。中国人懂得用辩证的方法去思考，在我们看来，得与失是统一的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;管理中国人的团队，用中国人的方法才有效，因为我们活在中国人的圈子里。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人很高明，根本就不开口请托，而是三天两头请你吃饭。中国人是用脑袋来吃饭的，对方一定明白你的用意，用不着你开口，自然会照顾你，你一说对方反而会反感。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二章领导是团队的核心&#34;&gt;第二章 领导是团队的核心&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;站在“不要”的立场来“要”，站在“没有”的立场来阐述“有”，对大家无所求，自然有很多回报。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果只是通过外在的压力来进行宣导和沟通，通常是无济于事的。相反的，一旦使团队成员从内心深处认同你所倡导的行为，那么任何事情都会顺利发展。因为，凡是中国人心甘情愿做的事情，他们都不会计较其中的艰辛和困难，反而会视其为某种挑战，进而充满无穷的动力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个会领导的人，不会规定下属做什么、怎样做，而是促使其自发地表现自己。从这个层面上来看，中国人在自动自发的时候，可以成为世界上最优秀的人，而当我们被动的时候，又可能成为天底下最糟糕的人。团队的领导者要激发出团队成员合理的行为、打造出协同一致的团队，其首要的工作在于培养团队成员自主自发的观念。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在对中国的团队进行管理的时候，一定要密切注意中国人“快速变化”的独特性。中国人的一切经常变来变去，通常表现为“变动性”最强，同时“持续性”也最高，即“变动中有持续，持续中有变动”，可以说这是中国人中庸之道的一种体现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;治本才是主要的，治标只能暂时有用。如何治本？建立共识。要带领团队，最要紧的就是建立共识。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第一，他希望跟下属有相当程度的共识，这样步调才会一致，不会有分歧。
第二，他要求下属不断地改善，坚持不懈，但不具体要求他们干什么。
第三，他要求下属严格执行他的命令，不得有丝毫马虎。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在中国社会，某一个人赞成另一个人的观点，并不意味着是对其观点的完全认同和肯定，而是因为前者能感觉到后者对他的友善而予以的支持，这是一种道义的表现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人应该不断地自我反省，但是不可以陷入自我否定的泥潭而不能自拔。自我反省意味着认识错误后主动调整，但自我否定则会使一个人变成完全不同的另一个人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人的本性简单来说有三点：第一怕吃亏，中国人天不怕、地不怕，就怕吃亏上当；第二喜欢占小便宜，中国人一般不奢望去占大便宜，专占小便宜；第三，自私又爱面子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡是宣称钱财乃身外之物的人，多半都很小气。因为一个人如果心里没有某个弱点的话，就不会强调它。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人不会盲目地为一个人去拼命，我们会考虑值不值得。要判断值不值得，就要看对方舍不舍得，你舍得我就认为值得，你不舍得我就认为不值得。这就是中国人占小便宜的本意。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国文化强调自爱，很少讲爱人，西方人一开口就是爱人，而不讲自爱，孰对孰错？我认为，自爱才是对的。一个人要先爱自己，让自己的心中充满爱，然后才能去爱别人。不自爱的人，心中没有爱，拿什么去爱别人？所以，西方人讲爱人只是嘴上说说而已，中国人才是发自内心的。但中国人不会爱所有的人，我们首先要判断这个人值不值得爱，值得，才去爱。合理的自私就是自爱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;领导要利用中国人爱面子的特点来管理员工，适当地恭维一下员工，多听听员工的声音，给他们说话的机会，员工就会感到领导的重视，也就会以努力工作来回报。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;合理地怕吃亏、合理地占小便宜、合理地自私、合理地爱面子没有什么不好，如果不承认这些的话，就是假道学。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;企业制定的制度所制约的对象，要么是老实人，要么是无依无靠的人，要么是没有能力的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;领导若是一心一意想要改变员工，员工就会保持高度警觉，不是全力抗拒，便是表面接受，阳奉阴违。领导不如用心改变自己，让员工受到良好的感应，自动改变自己，更为快速有效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因此，作为一个领导，一定要以身作则。以身作则不是要求你的技术领先，这是不可能的，也不是说要样样做表率，那也是错误的。以身作则专指德行方面，比如，讲信用，处理事情谨慎，对人诚恳，等等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;领导要让干部觉得，面对你这样的领导，他们不忍心骗你，这样你就成功了。领导越不信任干部，干部就越有可能做对不起你的事，有句话叫作“管得越严出纰漏越大”，讲的就是这个意思。
你既然怕我骗你，那我就骗你好了，很多人都会有这种奇怪的心理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人都是很有良心的，如果领导的德行不够，员工就会认为：像你这样的领导，我对你讲良心干什么？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="引言">引言</h2>
<ul>
<li>
<p>一个团队的成败，领导者要负70%的责任，虽然他只有一个人。这也符合二八定律，就是20%的人要负80%的责任，而80%的人只负20%的责任。</p>
</li>
<li>
<p>要有一致对外的态度。对内可以全员参与，大家多商量，但是对外的时候，只能有一个态度、一个说法。对外声音不一致的话，外面的人就会莫衷一是。</p>
</li>
<li>
<p>学习是件好事情，但是要学我们要用的、能用的知识，看见什么学什么只会浪费时间。</p>
</li>
<li>
<p>人们常说，你要向谁看齐。我对这句话不太认同。每一个人的才能是不同的，不可能做到全面发展。有些知识学了以后要调整，以便适合本身的需要，适合当时的环境，然后还要试用一下，确定没有任何问题之后才可以应用。不然，学会之后马上就用，用错了，谁来负这个责任？任何事都需要适当的热情、合理的执着，然后用心分辨、选择，找到适合自己的就要稳定下来，而不是总想着求新求变。</p>
</li>
<li>
<p>每一个时代、每一个阶段都有其重点，我们一定要抓住重点，顺应形势。30岁以前，你根本没有办法定下原则，最好到处去看看，对人对事不要妄下判断，因为这时的你判断力不够。但是30岁以后，就要定下自己的原则，适合你的，就去学，不适合的，就放弃。人的一生是很短暂的，什么都学的话，什么都学不好。只有选择了适合自己的东西，比较深入地研究，才能确定做什么，确定下来后就要好好去做，这样到了40岁时，才能不惑。如果没有自己的原则，一会儿学这个，一会儿做那个，那肯定会困惑。</p>
</li>
<li>
<p>什么叫文化？顾名思义，文是花纹，就是花样的意思；化就是普遍的、能够为大家所吸纳并能表现出来的东西。化是没有痕迹的，把“花样”变成没有痕迹的东西，自然而然地让人接受并遵循，这就是文化。</p>
</li>
<li>
<p>亲疏有别是社会最大的原动力，它促使人们广结善缘，以获得尽可能大的利益。</p>
</li>
<li>
<p>当你发现不适合的时候，就要调整自己，这样你才可以做一个快乐的领导者，做一个很有效率的人。这就是强调中国式管理的原因，找到一种适合中国人的管理方式，让人心甘情愿地做事情，就是最有效的管理。</p>
</li>
</ul>
<h2 id="第一章以人为本带团队">第一章 以人为本带团队</h2>
<ul>
<li>
<p>中国人的要求比较简单，只有两个字——合理，合理就好。合理是人决定的，不是法决定的。合理不是通过制度产生的，制度比较死，而人比较灵活。</p>
</li>
<li>
<p>中国的文化变迁却是采用了第三种方式，一直在变，却又永远没变。</p>
</li>
<li>
<p>中国式管理就是一切都追求合理化的管理。从某种意义上说，中国式管理就叫合理化管理，管到合理的地步就叫管理。</p>
</li>
<li>
<p>美国人只讲权利与义务，没有等级观念，不管对方是谁，该说的话都可以说。中国人则不同，讲话要先看对象：对上面是一种说法，对下面是另一种说法，对平级的同事，用第三种说法。</p>
</li>
<li>
<p>即使也想当班长，也想表现，但不会直接表现出来，而是欲擒故纵，推举最不可能当选的人。大家一看那个人既没能力又没魄力，怎么能让他当选呢？而你公开表态了，自然吸引别人的目光，尤其是当大家把你和那个不可能当选的人比较时，你就会脱颖而出，成为班长的不二人选。你不会提名那些很有能力的人，否则，你自己就没有机会了。</p>
</li>
<li>
<p>中国人的高明之处，在于会把所有可能发生的情况都预料到，提前做好防备，这样，就让别人无话可说了。不要以为这是虚伪，也不要以为这是奸诈，这只是中国人用来保护自己的一种手段而已。</p>
</li>
<li>
<p>中国人在一对一的时候，无话不说；只要有第三者在场，就会含糊其辞。</p>
</li>
<li>
<p>中国人认为合理就好。西方的团队管理以法为中心，重视管理；中国的团队管理以理为中心，重视领导。对中国人来说，合理比合法更重要，中国人只接受合理的法。</p>
</li>
<li>
<p>在工作中，因时制宜是很重要的。当你的老板叫你做什么事情的时候，他会关注你有没有在做。如果你打算先将手边的事情做完了再做老板交代的事，那老板肯定不高兴，因为老板的看法是，不是我叫你做的都是不重要的事情，我叫你做的才是重要的。</p>
</li>
<li>
<p>很多领导抱怨干部们不准时，每次开会都拖拖拉拉的。其实这是领导自身的问题。领导自己也不是十分按照时间来办事的，所以上行下效了。</p>
</li>
<li>
<p>上下级的界线划分得过于清楚，大家受等级观念的限制很难一条心</p>
</li>
<li>
<p>一个人处于最高峰的时候，往往踌躇满志，做事非常张扬。</p>
</li>
<li>
<p>上苍是很公平的，当有重大事情要发生的时候，它会不断地给你一些征兆，问题是你能不能意识到。</p>
</li>
<li>
<p>做一个优秀的领导者，一定要见微知著。领导在作决策之前，一般会要求数据准确，信息充足，殊不知，此时这些信息已经毫无用处了，因为等你把所有的信息都搜集齐备，已是时过境迁，这些信息都已过时了。一个领导者，一定要能根据少量的信息做出正确的判断，否则就跟不上形势的变化。</p>
</li>
<li>
<p>实际工作中，是干部帮助领导作决策，而表面上让领导来做最后的决定，这样的团队才是高效的团队。</p>
</li>
<li>
<p>第二，做主的人最好是通才型的，而不是专才型的，否则他就会带有很强的倾向性，很容易偏激。而做从的人是能兼顾各方面的“专”，而不是单一的“专”，否则几个人都偏到某一方面去，忽视其他方面，也等于为自己设置了一个陷阱。</p>
</li>
<li>
<p>做主的人要尽量把自己变成通才，千万不要总强调自己的专长，可以说，做主的人只要有专长，就会有偏见，这是很麻烦的事情。做任何事情只要做久了，就会有职业病。一个搞财务出身的总经理，经常会陷入财务危机，因为他做什么都要先考虑财务，财务应该是财务经理负责的，不是总经理考虑的事情。</p>
</li>
<li>
<p>人们一般将魏徵视为忠臣的典范，但做从的人千万不要学他，否则不会有好结果。几千年只有一个“魏徵”，就说明了问题。魏徵是很特殊的，他有幸碰到了唐太宗，如果换了别的皇帝，他早就被杀了。我们读史书就可以知道，魏徵对唐太宗讲话，态度很过分，完全是教训的口吻。</p>
</li>
<li>
<p>做到差不多，就不能再坚持了，做从的人还是要给做主的人留有面子的，尊重他的立场，最起码在其他人面前，维护他的形象，这是非常重要的。</p>
</li>
<li>
<p>做从的人一定要记住适时给做主的人卖人情，人情前还要加两个字，变成“顺水人情”。</p>
</li>
<li>
<p>干部绝对不能凡事都听领导的，否则领导会怀疑你，要么虚伪，要么不负责任。适当地表达你的意见，而且适可而止，绝对不能超越你的领导，这就是做从的人的生存之道。</p>
</li>
<li>
<p>干部一定要替领导着想，该给他面子时一定要做到，不能让领导单枪匹马地去战斗。</p>
</li>
<li>
<p>那老板最关心的是什么？答案是：我的下属心中有没有我。</p>
</li>
<li>
<p>你要想有前途，要得到领导的赏识，只能让他感觉到你心中有他，心意要靠“心”的交流，只能意会，不能言传。</p>
</li>
<li>
<p>成功就是抓住别人的心和别人的钱。</p>
</li>
<li>
<p>佛经里面说，颠倒心。颠倒就叫心，什么意思？当你想事情的时候，你想完好的一面又想了坏的一面，这就是颠倒，你的“心”就体现出来了。只想好的一面，那是一厢情愿，是不用心。同时又想坏的一面，这就是用心的表现，因为你颠倒了。</p>
</li>
<li>
<p>以人为本的团队管理必须以人性为基础，对不同的人采用不同的管理方法，因此，团队管理理论没有对与错、好与坏之分，只有合适不合适之分，合适的管理才是最好的管理。</p>
</li>
<li>
<p>中国人擅长浑水摸鱼，换个角度说，中国人很懂得随机应变。当环境快速变化的时候，中国人就表现突出，乱世出英雄；当环境稳定的时候，中国人就表现平平。</p>
</li>
<li>
<p>忠臣不事二主，一女不事二夫</p>
</li>
<li>
<p>中国人有一个字很重要——“无”。全世界只有中国人最懂得“无”，外国人只知道“有”才能生有，而无法“无”中生有。中国人最了不起，经常“无”中生有，能从“无”看出有来，叫作无心之感。</p>
</li>
<li>
<p>无心，就是做你该做的事，而不要计较成果，即不要有投资回报、投入产出的观念。</p>
</li>
<li>
<p>中国团队的特色是讲义气，这是我们要战胜西方的利器，如果完全学西方的经验，只能跟在西方人的后面走，无法超越。</p>
</li>
<li>
<p>无心的投入，有不同的产出，这叫感应。中国人强调广结善缘，平常多做好事，不求回报，成败得失也不是用眼前利益来衡量的。中国人懂得用辩证的方法去思考，在我们看来，得与失是统一的。</p>
</li>
<li>
<p>管理中国人的团队，用中国人的方法才有效，因为我们活在中国人的圈子里。</p>
</li>
<li>
<p>中国人很高明，根本就不开口请托，而是三天两头请你吃饭。中国人是用脑袋来吃饭的，对方一定明白你的用意，用不着你开口，自然会照顾你，你一说对方反而会反感。</p>
</li>
</ul>
<h2 id="第二章领导是团队的核心">第二章 领导是团队的核心</h2>
<ul>
<li>
<p>站在“不要”的立场来“要”，站在“没有”的立场来阐述“有”，对大家无所求，自然有很多回报。</p>
</li>
<li>
<p>如果只是通过外在的压力来进行宣导和沟通，通常是无济于事的。相反的，一旦使团队成员从内心深处认同你所倡导的行为，那么任何事情都会顺利发展。因为，凡是中国人心甘情愿做的事情，他们都不会计较其中的艰辛和困难，反而会视其为某种挑战，进而充满无穷的动力。</p>
</li>
<li>
<p>一个会领导的人，不会规定下属做什么、怎样做，而是促使其自发地表现自己。从这个层面上来看，中国人在自动自发的时候，可以成为世界上最优秀的人，而当我们被动的时候，又可能成为天底下最糟糕的人。团队的领导者要激发出团队成员合理的行为、打造出协同一致的团队，其首要的工作在于培养团队成员自主自发的观念。</p>
</li>
<li>
<p>在对中国的团队进行管理的时候，一定要密切注意中国人“快速变化”的独特性。中国人的一切经常变来变去，通常表现为“变动性”最强，同时“持续性”也最高，即“变动中有持续，持续中有变动”，可以说这是中国人中庸之道的一种体现。</p>
</li>
<li>
<p>治本才是主要的，治标只能暂时有用。如何治本？建立共识。要带领团队，最要紧的就是建立共识。</p>
</li>
<li>
<p>第一，他希望跟下属有相当程度的共识，这样步调才会一致，不会有分歧。
第二，他要求下属不断地改善，坚持不懈，但不具体要求他们干什么。
第三，他要求下属严格执行他的命令，不得有丝毫马虎。</p>
</li>
<li>
<p>在中国社会，某一个人赞成另一个人的观点，并不意味着是对其观点的完全认同和肯定，而是因为前者能感觉到后者对他的友善而予以的支持，这是一种道义的表现。</p>
</li>
<li>
<p>人应该不断地自我反省，但是不可以陷入自我否定的泥潭而不能自拔。自我反省意味着认识错误后主动调整，但自我否定则会使一个人变成完全不同的另一个人。</p>
</li>
<li>
<p>中国人的本性简单来说有三点：第一怕吃亏，中国人天不怕、地不怕，就怕吃亏上当；第二喜欢占小便宜，中国人一般不奢望去占大便宜，专占小便宜；第三，自私又爱面子。</p>
</li>
<li>
<p>凡是宣称钱财乃身外之物的人，多半都很小气。因为一个人如果心里没有某个弱点的话，就不会强调它。</p>
</li>
<li>
<p>中国人不会盲目地为一个人去拼命，我们会考虑值不值得。要判断值不值得，就要看对方舍不舍得，你舍得我就认为值得，你不舍得我就认为不值得。这就是中国人占小便宜的本意。</p>
</li>
<li>
<p>中国文化强调自爱，很少讲爱人，西方人一开口就是爱人，而不讲自爱，孰对孰错？我认为，自爱才是对的。一个人要先爱自己，让自己的心中充满爱，然后才能去爱别人。不自爱的人，心中没有爱，拿什么去爱别人？所以，西方人讲爱人只是嘴上说说而已，中国人才是发自内心的。但中国人不会爱所有的人，我们首先要判断这个人值不值得爱，值得，才去爱。合理的自私就是自爱。</p>
</li>
<li>
<p>领导要利用中国人爱面子的特点来管理员工，适当地恭维一下员工，多听听员工的声音，给他们说话的机会，员工就会感到领导的重视，也就会以努力工作来回报。</p>
</li>
<li>
<p>合理地怕吃亏、合理地占小便宜、合理地自私、合理地爱面子没有什么不好，如果不承认这些的话，就是假道学。</p>
</li>
<li>
<p>企业制定的制度所制约的对象，要么是老实人，要么是无依无靠的人，要么是没有能力的人。</p>
</li>
<li>
<p>领导若是一心一意想要改变员工，员工就会保持高度警觉，不是全力抗拒，便是表面接受，阳奉阴违。领导不如用心改变自己，让员工受到良好的感应，自动改变自己，更为快速有效。</p>
</li>
<li>
<p>因此，作为一个领导，一定要以身作则。以身作则不是要求你的技术领先，这是不可能的，也不是说要样样做表率，那也是错误的。以身作则专指德行方面，比如，讲信用，处理事情谨慎，对人诚恳，等等。</p>
</li>
<li>
<p>领导要让干部觉得，面对你这样的领导，他们不忍心骗你，这样你就成功了。领导越不信任干部，干部就越有可能做对不起你的事，有句话叫作“管得越严出纰漏越大”，讲的就是这个意思。
你既然怕我骗你，那我就骗你好了，很多人都会有这种奇怪的心理。</p>
</li>
<li>
<p>中国人都是很有良心的，如果领导的德行不够，员工就会认为：像你这样的领导，我对你讲良心干什么？</p>
</li>
<li>
<p>中国人无定性，随时会变，可以做好人，也可以做坏人。</p>
</li>
<li>
<p>坚持原则就是守住几个原则，永远不会改变，原则以外的东西要分析，该变的就变，不该变的就不要变，否则没法配合。</p>
</li>
<li>
<p>而培养默契，就要明确地告诉干部，除了这些原则以外，其他的都可以见机行事。</p>
</li>
<li>
<p>领导在交代干部任务之前，要先交代原则，让干部根据原则来判断是否胜任。领导最怕干部“好、好、好”地乱答应，到时候却不能完成任务。</p>
</li>
<li>
<p>让干部体会到“伴君如伴虎”，这才叫全面控制。</p>
</li>
<li>
<p>领导对员工严管，是一种责任。</p>
</li>
<li>
<p>只有严管还不行，还要勤教，不教而管，就是虐待。</p>
</li>
<li>
<p>一个人到底是圣贤还是凡人，关键在一个字——“无”,“无”的程度高，他就是圣贤，“无”的程度低，他就是凡人。就像出门不带钱的人才是有钱人一样，一辈子老在“有”这个层次打转的，其实很可怜，就是我们所讲的“想不开”。非要抓住权力不放的领导身心疲惫，你要权力干什么？你认为“有”就有，你认为“没有”就没有；人家尊重你，你没有也等于“有”，人家不尊重你，你“有”还是等于没有。其实“有”和“没有”，是如影随形的，是永远并存的，不可能割裂的。
一个领导在创业初期，确实应该亲力亲为，带领大家一起奋斗；但当企业走上正轨后，领导就要逐渐放手，将权力移交给干部。</p>
</li>
<li>
<p>刚开始，领导要样样做给干部看，因为你有经验，知道该如何做。</p>
</li>
<li>
<p>一个人有目的地去做，他是不积极的；当一个人没有目的还继续做，才是积极的，所以说“无为”其实是最积极的。“无”不是没有，“无”不是任何东西，但是可以变成任何东西，这就是“无中生有”的真谛。</p>
</li>
<li>
<p>职位越高的人，越应该做无形的工作；有形的、具体的工作，要交给基层员工去做。高层主管做的都是伤脑筋的工作，伤脑筋谁看得到？但是伤脑筋是有作用的，想想这个人为什么不高兴，怎么抚慰一下；想想那个人是不是太嚣张，怎么牵制一下。这些都是无形无迹的，写工作报告的话根本就写不出来。</p>
</li>
<li>
<p>公平是不可能做到的，但是可以做到公正，公正就是合理的不公平。</p>
</li>
<li>
<p>领导千万记住，资源不足，机会有限，要告诉干部：“我保证我很公正，但是希望各位谅解，我是不可能公平的，总要有个先来后到，同样的条件，我们让他先去……”这样，去的人会感激你，因为他是被优先考虑的，而不是他应得的。没去的人也不会心生怨恨，因为你很公正。</p>
</li>
<li>
<p>你可以试试，只要你公开宣布，现在要培养某人当接班人，那个人在三年之内未必当得了你的接班人。被排除在外的人会团结起来一起赶走领导的接班人，这样别人才有希望，不然别人永远没希望。在培养接班人方面，千万别迷信所谓的法定程序，那是行不通的。</p>
</li>
<li>
<p>所有干部的职责之一，就是要培养人才。</p>
</li>
<li>
<p>一个领导真的要培养干部，就要让他轮调，让他从事过所有的业务，才知道他合适不合适。凡是直线升上来的干部，没有一个有好结果的。因为他的能力不够，眼界太窄，专业有限。那些调来调去、久经历练的人更能胜利。</p>
</li>
<li>
<p>领导要营造这样一种氛围：做对、做错、做好、做坏都和别人没关系，公司需要你，就调你，这是一种荣誉。</p>
</li>
<li>
<p>千万不要把责任往自己身上扛，你有责任，其他的人就没有责任。有很多领导，生平只做三件事：
第一，千方百计要证明他的干部是白痴。
第二，忍不住自己要表现，抢干部的功劳。
第三，把所有的责任都扛在自己身上。
这是大错特错的，他做了领导最不应该做的事，而领导应该做的是以下三件事：
第一，保证做我的干部有饭吃。
第二，不断地成长。
第三，让正确的人做正确的事。
做了这三件事，领导就可以轻轻松松地考虑将来，这才是你的工作重点。</p>
</li>
<li>
<p>人最重要的能力就是随机应变，随机应变不是投机取巧，凡是投机取巧的人没有一个成功的，但是不会随机应变的人，没有一个有前途。
凡事都在变，方法要变，态度要变，但原则不能变。《三国演义》中的关羽坚持原则，瞧不起的人就是瞧不起，这很对。但是当孙权派人说“我的儿子要娶你女儿为妻”时，关羽可以拒绝，却不能说：“吾虎女安肯嫁犬子乎？”此时的关羽相当于蜀国的外交大臣，说这种话简直对不起蜀国，完全违背了诸葛亮给他定的“北拒曹操、东和孙权”的八字方针。
见什么样的人说什么样的话，这才是高明的。领导要不断培养自己的应变能力，也要经常出各种难题来培养干部的应变能力，看他们的反应怎么样，不好就帮助他们改进。如果一切都等到问题真正出现时才想着随机应变，是非常冒险的。人们都是“事后诸葛亮”，碰到问题马上能提出解决方案的人很少，平时多锻炼干部，他们才会有把握，这是领导的责任。</p>
</li>
<li>
<p>培养干部也是如此，首先要了解干部，知道他的能力如何、喜好如何；其次，把干部的工作潜力激发出来。除此之外，就没有领导的事了。</p>
</li>
<li>
<p>如果他只能挑50斤，你让他挑100斤，就是你的错</p>
</li>
<li>
<p>领导的主要职责是知人善任，合理分配工作，并担保干部能够完成任务。</p>
</li>
<li>
<p>当领导的一定要保持神秘性，不要完全透明化，一旦透明化，你的干部就会反过来掌握你，把你架空，然后蒙蔽你，使你无能为力</p>
</li>
<li>
<p>有时候领导跟干部讲话要真真假假</p>
</li>
<li>
<p>这种故弄玄虚的做法，使得干部不清楚你的真正意图，所以他们也不敢欺骗你。</p>
</li>
<li>
<p>身为领导，你永远也不知道进入公司的前一分钟，公司里的人都在干什么，也许前一分钟一个主管正揪着员工的领子要打他，结果看见你进来了，主管就改为替员工整理领带。你看到的只是和谐的状态，殊不知，暗潮汹涌。</p>
</li>
<li>
<p>在社会中求生存，每个人都应该学会装装样子，不要太真实。从员工的角度说，每个领导都要求员工说真话，其结果往往是，说真话死得很快，说假话死得很惨。所以只能走第三条路，说出来的话不真不假，让别人搞不清楚，达到这种程度才有可能当领导。</p>
</li>
</ul>
<h2 id="第三章干部是团队的支柱">第三章 干部是团队的支柱</h2>
<ul>
<li>
<p>你为什么要成为团队的管理者？是为了坚定的信念，你才会一直奋斗下去。如果仅仅是为了薪水，那么你不当管理者反而更轻松。</p>
</li>
<li>
<p>天下者，非一人之天下，唯有德者居之。</p>
</li>
<li>
<p>企业是为社会培养人才</p>
</li>
<li>
<p>作为一个干部，最重要的能力就是沟通与协调能力。</p>
</li>
<li>
<p>我觉得这是领导和干部都需要慢慢领会的东西，要慢慢培养下属尊重你，即使他反对，也不能当面表现出来。能做到这一点，说明你的沟通能力很强。</p>
</li>
<li>
<p>你要协调，自己就不要说话。当两个人起冲突时，就把这两个人叫过来，让他们当着你的面争论，但是你不说话，如果你说话，他们就会怀疑你偏袒对方，其结果是他们都会怨恨你。但是如果你一直不说话，就会给他们一种无形的压力，在这种压力之下，他们就会自动地各退一步，最后慢慢找到一条解决之道，皆大欢喜。</p>
</li>
<li>
<p>只有真正关心你的人，才会在关键时刻给你指点迷津。</p>
</li>
<li>
<p>如果一个干部什么事都要听领导的命令，自己做不了主，那不如不当干部，反而无官一身轻。但很多干部都没有意识到这一点，认为完全服从领导就是最好的表现。</p>
</li>
<li>
<p>干部一定要掌握部分裁决权，才可能做好自己分内的事。权力是你自己奋斗得来的，而不是争来的。干部绝对不要争权，你抗议领导干预你的工作，就是争权，争权是没有好下场的。你要通过优异的表现，让领导放心，让他自然而然地尊重你，你就可以争取到相应的裁决权。</p>
</li>
<li>
<p>如果干部让下属感觉到你只是单纯地利用他们，而一点都不关心他们，更有甚者，让他们认为，你牺牲他们来成就你，不但加重他们的工作，还要把功劳抢走，那么，下属是绝对不会支持你的，而且会处处与你作对。</p>
</li>
<li>
<p>团队领导者的职责之一就是整合派系。</p>
</li>
<li>
<p>同事关系是很短暂的，留下下次见面的情分才是永久的，做人留一线，日后好相见。</p>
</li>
<li>
<p>当一个人得罪你的时候，他心里会有些愧疚，但是你也对他翻脸的时候，他就不再觉得有愧了。</p>
</li>
<li>
<p>一个好的干部，要做到自己在领导面前全力表现，回到部门后，下属全力为你服务。</p>
</li>
<li>
<p>平常的时候领导也不是无所事事的，他有两个任务：
领导的第一个任务是，始终掌握最终决策权。这里的决策有三层意义：
第一，决策必须是正确的。大家都知道，腐败是很可怕的，殊不知，决策失误比腐败更可怕。错误的决策会贻害无穷，想挽救都挽救不回来。
第二，决策不是决定。决策跟决定不同，决策针对的是重大的事件，影响长远，否则只能叫决定，没有资格叫决策。
第三，决策要能带动整个团队共同前进。有的领导说：“赚再多的钱我不在乎，损失再多的钱我也不在乎，我在乎的是让我的团队知道该做的就要去做，而不计较成败得失。”这就是领导的理念问题，决策是重大的，同时要为团队树立一个正确的价值观。</p>
</li>
<li>
<p>只要干部能做的领导就不要做。如果领导把干部的工作抢来做，就会妨碍他成长，这样的领导就不是会带人的人。凡是跟着太强悍、太能干的领导的人，就学不到任何东西，还会变得越来越无能。</p>
</li>
<li>
<p>一个领导一定要做到无人不可用，老是换人也不是件容易的事。对待干部，要让他发挥优点，同时又要克制他的缺点。</p>
</li>
<li>
<p>带一个团队，要有本事对每一个人有针对性地提出三个要求，其余的可以睁一只眼闭一只眼。</p>
</li>
<li>
<p>对不同的干部，领导要采用不同的方法。对老实的干部，领导凡事要交代清楚一些，因为他听不懂深奥的话；对聪明人点到即止，说得太清楚他会觉得没面子；对动作慢的干部，领导要督促他快一点；对动作太快的干部，领导要让他慢一点。</p>
</li>
<li>
<p>心知肚明的意思是说，干部的心里要想着领会领导的意思，但千万不要显示出你完全了解领导，即使了解也要装成不了解，这是一种自我保护。</p>
</li>
<li>
<p>干部要对领导敬而远之，保持适当的距离，有距离才能产生美。首先，领导的家务事不要介入。</p>
</li>
<li>
<p>人不能欺骗别人，但是可以造假，造假跟欺骗完全不同。很多事情都是事缓则圆，缓就是要顾及大家的情面，体谅每个人的立场，所以适当地走一些弯路，最后大事化小，小事化了。</p>
</li>
<li>
<p>会当高层主管的人，一看到公司发不出薪水来，就应主动要求减薪。这才是比较圆融的做法。因为你越是要求减薪，领导越不忍心不发给你。</p>
</li>
<li>
<p>领导者要以身作则，遇到困难的时候，要将精力和时间花在“寻找方法把工作做好”上，而不是千方百计地找理由推卸责任。</p>
</li>
<li>
<p>当员工找理由的时候，领导不要表态，要由干部说：“我们是不听理由的，你不要用理由来烦领导。”然后领导说：“没关系，让他讲。”</p>
</li>
<li>
<p>假定一个团队没有几个敢承担责任、敢做坏人的干部，这出戏是唱不起来的。</p>
</li>
<li>
<p>好人难做，坏人则比较容易做，因为领导这个“好人”要保护一大群“坏人”。否则，干部“坏”一次，就被免职，久而久之，还有哪个干部愿意为领导出力？</p>
</li>
<li>
<p>无所不知、什么都不管的人就叫领导，即同时满足这两个条件的人才是好领导。</p>
</li>
<li>
<p>其次，领导被架空，还得负责任。</p>
</li>
<li>
<p>授权的坏处就在于受权的人刚开始还规规矩矩，但是经过一段时间以后，就经不起诱惑与威胁，最后就会滥用职权。</p>
</li>
<li>
<p>只有一件事情可以肯定——信任来自考验。</p>
</li>
<li>
<p>往往职位越高的人，越是会避免把话讲得很清楚，否则就会把自己逼进死胡同。</p>
</li>
<li>
<p>如果要想得到权力，我们一般就要遵循以下三条原则：
原则一，你不要表示出来，而是要学会推。一推你就有权；一旦你表示出来，你就不可能获得授权。
原则二，你不要与领导去抢夺权力。你是没有跟领导抢权的资格的。最好的办法就是把权力统统让给他，这样他就会分一点权给你。你越不要权，他越会放心授权；你表现得越好，他对你就越信任。
原则三，这一点是最要紧的，即你要随时向他汇报。这样他就会很放心地授权给你。</p>
</li>
<li>
<p>实际上，领导多用势，而很少用权，因为用权就要决定，决定就要负责。而且领导也很少想到用权，因为权是有限的，一用就完，而拿在手里不用就可以永远有权。</p>
</li>
<li>
<p>在沟通方面，我们最重视圆满，也就是设法让每一个人都有面子</p>
</li>
<li>
<p>教务主任说：“你坚持要改，那位老师心里肯定不高兴，以后他会专门找你儿子的麻烦，那时我又帮不上忙，受苦的还是你儿子。”那个家长说：“那我们不改好了。”教务主任说：“你们既然来了，就改吧。”结果家长溜之大吉。</p>
</li>
<li>
<p>你一定要充分站在对方的立场讲话，才能有效果，这是欲擒故纵、以退为进的一种小技巧。</p>
</li>
<li>
<p>沟通要求圆满，首先要考虑其妥当性，再考虑其真实性。真实固然重要，若不妥当，再真实也可能使人受到伤害。妥当与否，实在很难说，所以不明言常常是沟通的基础，只有站在不明言的立场来把话说清楚，才不至于一开口就伤人。</p>
</li>
<li>
<p>中国人的沟通可以用三句话概括：
第一句，“我告诉你，你不要告诉别人”。
第二句，“你如果要告诉别人，就不要说是我说的”。
第三句，“如果你告诉别人是我说的，我一定说‘我没说’”。</p>
</li>
<li>
<p>你给美国人两千元钱奖金，他会很高兴，而中国人的第一反应可能是问别人有没有。别人也有的话，就会很生气。</p>
</li>
<li>
<p>在与领导沟通时，你越“对”，他越生气，因为他只认为自己是对的。干部可以在别人面前“对”，但不能在领导面前“对”，否则领导会感到没有面子。所以领导对也骂，错也骂。</p>
</li>
<li>
<p>凡是领导说的，你就点头。过一段时间再来找领导说：“现在有问题，怎么办？”一个聪明的干部从来不去改变领导，而是让领导自己改。他自己改了，会感谢你；你强迫他改，他会干掉你。</p>
</li>
<li>
<p>在沟通方面，领导要注意：
第一，当干部的意见与你的意见相反时，他要是坚持，这个人就是死不认错，他要是见风转舵，这个人就非常可怕。当领导与干部发生矛盾时，要通过第三者解决，以避免双方发生争执。
第二，领导只能骂干部，不能骂员工。员工做错事，领导不要直接去批评员工，而是让干部出面，然后领导再去抚慰员工。这样做，好像在出卖干部，其实不是，因为这是三个人的分工。</p>
</li>
</ul>
<h2 id="第四章员工是团队的基石">第四章 员工是团队的基石</h2>
<ul>
<li>
<p>第二种是成长型。这类人的特征之一是不断地充实自己，对每次工作都能够检讨得失、总结经验，并且把宝贵的经验变成具体的建议。</p>
</li>
<li>
<p>不断提高自身的知识水平</p>
</li>
<li>
<p>一个人只要有时间、有体力，多做事是不会错的，多做事就可以多得到经验，不经一事不长一智，袖手旁观到头来损失最大的还是自己。</p>
</li>
<li>
<p>分享是很好的修养，是乐趣的源泉。通过分享能够拉近人们之间的距离，推动大家互相帮助，共同进步。一个不知道分享的人，是没有什么乐趣的。</p>
</li>
<li>
<p>第一，不能当着领导的面指出对方的缺点。</p>
</li>
<li>
<p>第二，在提建议时要有诚意。</p>
</li>
<li>
<p>第三，掌握一定的沟通技巧。</p>
</li>
<li>
<p>只有站在他的立场上去说话，他才能接受；你若跟他对立，他就会拒绝你，而且只要有一句话对方听不进去，你讲得再对也没有用。</p>
</li>
<li>
<p>有些基层主管，自恃手下有几个“兵”，就认为自己有资格跟领导讨价还价，这是非常错误的。</p>
</li>
<li>
<p>中高层主管要花时间进行分析、研究、调整、改善、沟通、协调，这是他们的职责。</p>
</li>
<li>
<p>第一，认清现代年轻人的习性，并尊重其意愿。</p>
</li>
<li>
<p>第二，不要企图去改变员工，要让员工自己改变。</p>
</li>
<li>
<p>比如，有的员工常常迟到，基层主管不应责令他每天晚上10点以前睡觉，这样做没用，因为主管不可能每天晚上守着员工，看着他执行命令。有效的做法是，引用医学资料和实例让他明白：晚睡晚起不利于健康，因为晚上11点到凌晨2点是一个人新陈代谢最快的时候，这时候只有好好睡眠才能有效恢复体力；如果长期12点以后睡觉的话，人到中年之后就容易得各种疾病；通过教育让年轻人认识到晚睡是在损害健康，让他们自觉地去改掉这个坏习惯。一位优秀的基层主管必然会得到员工的信赖、尊敬和爱戴，能和员工打成一片，做员工的知心人。</p>
</li>
<li>
<p>信任、鼓励、诚实是基层主管管理员工的三大法宝：</p>
</li>
<li>
<p>第三，凡事先听取员工意见。</p>
</li>
<li>
<p>第四，先礼后兵，由情到理。</p>
</li>
<li>
<p>一位优秀的基层主管应该刚柔并济，平时对员工关怀备至，在原则问题上立场坚定，在关键时刻则敢作敢当。员工对这样的主管会既尊敬又畏惧，就会“乖乖地听话”。</p>
</li>
<li>
<p>团队领导要尊重员工
所有的员工都是把他们最宝贵的青春奉献给公司了，就冲着这一点，领导就应该感谢他们，就应该好好照顾他们、尊重他们。</p>
</li>
<li>
<p>对于员工，领导要充分地信任他们，放手让他们去做，但是要给他们无形的控制。</p>
</li>
<li>
<p>会待人的领导，就会让员工感到被尊重，感到喜悦，感到完全没有压力。而不会待人的领导，只会让员工心生怨恨，消极怠工。</p>
</li>
<li>
<p>人的一生就像爬山一样，在你上山之前，得把这辈子要吃的东西、要用的东西都准备好。但是到了半山腰，就应该把不要的东西都丢掉，这样后半辈子才会进步。如果把什么东西都一直背着，没到山顶就会累死了。一个人做到经理阶层就应丢东西，而不是抢东西，越懂得丢的人，将来爬得越高。而基层员工不得不增加东西，因为他们还有很长的人生之路要走。</p>
</li>
<li>
<p>领导者要善待亲信的员工，即使再忙，也要关心他们及其家人。一个会当领导的人，要把人事管理、人事业务延伸到员工的家庭里面去，这样团队的组织力才会增强。</p>
</li>
<li>
<p>这就是中国人的人情世故，领导者必须把人情世故、中国人的生活习惯融入所管理的团队，这样带出来的团队才不会出大纰漏，否则的话是非常危险的。</p>
</li>
<li>
<p>有的公司崛起与衰落都很快，其原因是团队不扎实，成员不可靠，机会来时就赚钱，机会走时就亏损。机会不是常有的，风水轮流转，你不可能时时刻刻都走运，必须依靠稳定高效的团队，才能立于不败之地。</p>
</li>
<li>
<p>当一个领导在员工面前表现得高人一等时，员工就会感到努力工作不值得。</p>
</li>
<li>
<p>在上面的案例中，如果建筑公司的人不管对方是不是总裁，都说：“啊，总裁您来得真早啊！”对方是总裁，他会很高兴，因为别人一眼就能认出他来；对方不是总裁，也会很高兴，因为别人把他当成总裁看待，他甚至会反过来帮助建筑公司拿下这个项目。而建筑公司的人只是喊一句“总裁”，又不花一毛钱，何乐而不为呢？</p>
</li>
<li>
<p>用而不教，领导之过</p>
</li>
<li>
<p>要改变你的干部，要改变你的员工，唯一的方法就是先改变你自己。如何改变？有三个重点：
第一，只做你应该做的事情，你并没有施恩，所以千万不要图报。领导有义务照顾员工，对员工好也是应该的。
第二，既然当领导，就要教会员工一些东西，不要误人子弟。对员工放任不管是不对的，要把他们塑造成公司需要的人。
第三，在教导员工的时候，要顾全员工的面子。要让员工听你的话，最好的办法就是让他感觉到你看得起他。有很多人拼命工作，就是因为老板重视他，这种激励效果是很强的。
教育员工要像教育小孩子一样，千万不要伤害到他的自尊心。对待贪玩的孩子，可以这样教育他：你是很聪明的，只是有些贪玩，但天底下没有一个贪玩的人是有成就的。你看看你祖父（千万不要说你看看你爸爸我，因为祖父对小孩子来说是一个比较模糊的概念），你祖父从小就用功，不然他不可能有这样的成就。
中国人教育小孩最好的方法，就是用已经去世的祖宗来教育，这是很有效的。在古时候，会当爸爸的人一看小孩不成器，不会骂孩子，而是自己跪在祖宗牌位前面向祖宗赔罪。这样做，对小孩子是很有威慑力的。</p>
</li>
<li>
<p>一个团队有没有生产力，有没有高效率，关键看它的成员之间有没有义气。</p>
</li>
<li>
<p>义气就是让员工心甘情愿地跟你同坐一条船。</p>
</li>
<li>
<p>制度只针对一般状况而制定的，没有考虑到任何特殊的情况，所以，身为领导者，必须要设身处地为员工着想，以弥补制度之不足。只有让他们感动，他们才会有义气。</p>
</li>
<li>
<p>只要求他们讲义气的话，那跟土匪强盗没什么区别，土匪强盗也是非常讲义气的，团队跟土匪强盗的区别在于守不守规矩。既要讲义气，又要守规矩，两者并不矛盾。</p>
</li>
<li>
<p>招聘基层员工时，一定要把自己的需要先列出来，按照需要来选择，第一关一定要把好，保证招进来的员工就是最恰当的人。一般来讲，大公司资本雄厚，有机会去挑选员工，而有的公司庙太小，请不到大佛，怎么办？那很简单，只能你自己培养，优秀的员工是你培养出来的，优秀的干部也是你培养出来的，不是人家培养好之后送给你的。要培养员工，就要好好去对待他，这是基层主管应该注意的事情。
另外，还要注意，选拔干部的条件和选择员工的条件不同，选拔干部不是看他们守不守规矩，有没有能力，按照这两种标准选拔干部的话，公司的基础是很不稳固的。这两种标准，是基层员工必须具备的。选拔干部，要看他能不能带人，换句话说，看他有没有将才；还要看他有没有应变能力，有没有沟通协调的能力。如果这些能力他都不具备的话，你就不要考虑选他当干部，否则既害他又害公司。凡是一辈子只喜欢规规矩矩、实实在在过安定生活的人，就不要考虑提拔他当干部，因为他不适合。一个人一辈子实实在在、规规矩矩的，只适合在基层，但是也不能因此而亏待他。</p>
</li>
<li>
<p>员工有潜力却不愿意发挥，是企业的最大损失。</p>
</li>
<li>
<p>人的潜力是无限的，只是有人不愿意开发、不愿意表现出来而已。我们常常会看到一个本来什么都不会的人，突然间变成什么都会；或者一个什么都会的人，突然变成什么都不会。前者是愿意发挥潜力的表现，而后者则是故意隐藏实力。</p>
</li>
<li>
<p>人的需要，主要还是在于求生存。基于求生存的实际需要，员工关心的是成长、充实和安全。人员发展必须充分考虑这三大项目。
这三大项目展开来看，可以用八个字来涵盖——进退、奖惩、教养、老死。这八个字涵盖了人员发展的所有内容。</p>
</li>
<li>
<p>甄选一定要把握出其不意的原则，要让对方无从防备，迫使其流露本性，这样比较容易找到合适的人选。</p>
</li>
<li>
<p>处罚员工也要注意，一定要在私底下进行处罚，尽量不要公开处罚。其实，无论是公开还是私下处罚，都是尽人皆知的事情，只是不同的处罚方式会带来不同的结果。</p>
</li>
<li>
<p>领导最大的责任就是要教导下属。如果领导把员工完全当作自己的工作对象，那他必然得不到人心。好的领导不但要帮助员工成长，还要关注员工方方面面的问题。
所谓养就是要照顾员工的生活，而不只是发薪水而已。要去看看他住的地方怎么样，跟家人相处得好不好。
所以，领导对员工尤其是对一些特殊的员工要进行家庭访问，不能只管其上班的行为，而不管其下班的行为。对西方人来说，下班后的事情领导可以不管，但中国人强调全面照顾。</p>
</li>
<li>
<p>中国的基层员工有很强烈的责任感，但是你不能提醒他“这是你的责任”，否则事与愿违。</p>
</li>
<li>
<p>当干部的人一定要记住，员工做得不好是你的责任，不是员工的责任，是你没有好好教导员工，员工才会出错。我觉得有这种想法的人是比较正确的，特别是对新员工，要格外加以照顾。</p>
</li>
<li>
<p>公司不要让新员工第一天就开始工作。这时马上让他们工作，他们一定做不好，而且还会受到老员工的排挤。因此，公司应该安排至少三天的岗位培训，让他们适应一下公司的环境，这样他们才会长期做下去。
为什么新的员工流动率比较高，老员工流动率比较低？是因为老员工经常有意无意地把新员工吓走了。老员工往往在新员工来报到的时候就告诉他们：“天堂有路你不走，地狱无门你偏闯进来。”“我们都想走了，你还进来干吗？”“我们老板用人太狠了，常常让你加班，而且从不说奖金的事。”这样，就会在新员工的心里留下阴影，以后一旦出现不如意的事，他们就会想到辞职。
老员工之所以这样做，是因为他们可以得到好处：领导会觉得，还是老员工好，更加重用、珍惜老员工。领导者一定要谨防这一点，这也是人之常情。</p>
</li>
<li>
<p>如果不好好照顾新员工，最后受损失的是企业。不要让新员工自己摸索，那叫自生自灭，很多员工都是用很高的成本招聘进来的，让他们自生自灭，其实是巨大的浪费。招不招得到人不是本事，留不留得住人才是功夫。</p>
</li>
<li>
<p>中国人的法律有一个特性——永远少一条，碰巧就是你要找的那一条。</p>
</li>
<li>
<p>要想管好员工，领导者责无旁贷。除了带头守规矩外，还要严格要求自己不做破坏团队和谐气氛的害群之马。</p>
</li>
<li>
<p>不要因为一个人的问题连累到整个公司。</p>
</li>
<li>
<p>团队的领导一定要以身作则，这里的以身作则不是技术方面的，论技术，你始终比不过员工。如果某个领导是所有员工里面技术最好的，那只能说明他的员工不称职。领导者以身作则的意思是，带头守规矩，重诚信，顾虑公司的名誉。</p>
</li>
<li>
<p>但中国人不一样，中国人看到犯罪纪实节目后，会分析罪犯的失误之处及如何避免失误。所以有些事情在国外可以公开，在中国最好不要公开，公开是有反效果的。</p>
</li>
<li>
<p>如果能让员工觉得任何时候都不能丢领导的脸，那你的团队就是一个强大的团队。</p>
</li>
<li>
<p>你提到的问题我们生产部门已经注意到了，目前正在改进。</p>
</li>
<li>
<p>千万不能站在外人的立场来批评自己公司的同人，否则一句无心之语会造成很严重的后果</p>
</li>
<li>
<p>领导要带出一个有灵性、有活力、能够随机应变的团队，使团队中的每一个人都可以独当一面，这样的团队才是无敌的。</p>
</li>
<li>
<p>领导要告诉所有的员工，你们怎么做我都尊重你们，只要求不要让人家看不起我们，这是中国式的训话。我们中国人天不怕、地不怕，就怕吃亏上当；还有另外一句话，中国人天不怕、地不怕，就怕别人看不起自己。所以与人相处，得先看得起他，其他事情就好办了；如果你看不起他，最后你一定会吃亏的。</p>
</li>
</ul>
<h2 id="第五章团队内部要高度和谐">第五章 团队内部要高度和谐</h2>
<ul>
<li>
<p>在制度行不通的情况下，我们要靠企业文化来约束人们的行为。</p>
</li>
<li>
<p>真正的中华文化是阴阳文化，阴阳文化永远是双轨的，有阴就有阳，有看得见的部分，就一定有看不见的部分。当你看到看得见的部分时，还要寻找看不见的部分，才不会吃亏。</p>
</li>
<li>
<p>任何事情都有性质上的差异，有的事情要先沟通，再请示；有的事情领导没同意，干部就不能进行横向的沟通。例如，干部对领导说：“大家希望公司组织出去玩一个星期，所有的干部都同意，现在请示您的意见。”你试试看，这样做等于捋虎须。凡是加薪、调整生产线、改变价格都要领导点头才可以行动。事情的性质不同，不可一概而论。</p>
</li>
<li>
<p>第一，表面上是领导作决定，实际上是干部作决定。</p>
</li>
<li>
<p>很多时候，人们都是站在自己的主观立场上去否定别人的，结果造成很多冲突。</p>
</li>
<li>
<p>做干部的要体会到领导的心情，领导不明白的情况下，你不能逼着他承认自己能力不足，没有办法作决定。一个干部，不能等待领导给你作决定，而是要帮助他找到最好的决策。干部应该拿着报告当面给领导分析，这样他才好意思问你哪个方案比较好，你若说，“目前为止，第三种方案比较好”，他就会决定采用第三种方案。</p>
</li>
<li>
<p>凡是跟人的利害关系有关的，干部不能私自做主，怎么办？先口头请示，领导同意后再书面申请，否则的话，你很容易成为领导眼中的沙子。</p>
</li>
<li>
<p>第二，管理要因人而异，实行双轨制。</p>
</li>
<li>
<p>人往往听话不听对错，不在乎你讲什么，而在意你怎么讲。怎么讲比较重要，讲什么一点也不重要</p>
</li>
<li>
<p>在中国式团队里，往往不要紧的内容会讲得很清楚，要紧的内容永远含含糊糊。</p>
</li>
<li>
<p>当领导对你说，“你看着办吧”，那就是对你的一种重视。当你的领导对你再三交代的时候，他其实是对你一百个不放心。</p>
</li>
<li>
<p>中国式团队管理的起点永远是两难的：准备也不对，不准备也不对；做得快也不对，做得慢也不对；听话也不对，不听话也不对……永远是反反复复的，一切都是三个字：看着办。</p>
</li>
<li>
<p>管理是很复杂的，凡是喜欢简单明了的人，干脆去搞工程不要搞管理。工程问题是有固定答案的，而管理问题绝对没有固定答案。凡是告诉你什么是正确做法的人，你一定要小心，他是在害你，因为环境随时在变，没有绝对的对错。</p>
</li>
<li>
<p>在中国式的团队里面，最难做的不是领导，也不是员工，而是干部。因为中国式团队管理的重点是干部，员工很好当，领导很好当，干部最难当。干部所处的位置是上压下顶，日子很不好过。</p>
</li>
<li>
<p>凡是干部赤裸裸地把员工的心声向上反映的，都会自找倒霉。</p>
</li>
<li>
<p>在你的领导面前，你的胳膊肘永远要向里拐，这样他才会放心。</p>
</li>
<li>
<p>中华文化是世界上公认的早熟的文化，科学越发达，越证明中国古代人了不起。</p>
</li>
<li>
<p>每个人取得任何成就都是别人成全你的，知道这一点，才知道什么叫作价值。</p>
</li>
<li>
<p>在中国式团队里，有几个基本的原则，那就是：卖力可以，卖命不行；流汗可以，流血不行；做事可以，坐牢不行。</p>
</li>
<li>
<p>他听话，我就会很快失败，我又不是神仙，总会犯一些错误，我决定错了，他还照样执行我就完了。”</p>
</li>
<li>
<p>分工是为了合作，如果不能合作，所有的分工都是无聊的</p>
</li>
<li>
<p>这个“值不值得”是中国人非常介意的事情，不值得他就不做，千万不要以为中国人没有约束力，我们的约束力就来自心中那把看不见的尺。</p>
</li>
<li>
<p>最重要的是利益，因为“利”是基础，没有共同利益作为支撑，企业团队无法继续发展，更不用说形成团队的组织力了。</p>
</li>
<li>
<p>“乐”所代表的愉悦是团队内部能够协同一致的第二个要素。当企业有了利益以后，领导者要考虑“乐不乐”，是我一个人乐，还是大家都乐？是可以长期的乐，还是只能短暂的乐？只有使得团队成员能够长期保持愉悦，团队精神才有可能形成。</p>
</li>
<li>
<p>从企业管理的角度来看，我们提出四大目标：安客户、保护员工、照顾股东、关心社会大众。</p>
</li>
<li>
<p>中国人很高明，我赢了，你喝酒，而且那个喝酒的人有着密切配合的态度，从来没有人猜拳输了之后说“我最喜欢喝酒”，如果这样的话，赢的人会很生气：赢你这种人干什么？明明很喜欢喝酒的人输拳的时候，也会推让，最后才“勉为其难”地喝下去，这样对方就很满足。如果有人猜拳的技术很高，经常都赢，岂不是不能喝酒？中国人当然也想到了这一点，一直赢的人想喝酒的话，可以说“我陪你一杯”，没有人会反对。</p>
</li>
<li>
<p>不同之处在于，归属感就是我属于你，我属于组织，我不会脱离；依附感是说你给我好处，我会依附在你身上，没有好处我会跑，这种关系不能持久。</p>
</li>
<li>
<p>如果企业只是为了赚钱而存在，那你的企业不会长久，世界上有成就的企业没有一家是为赚钱而存在的。</p>
</li>
<li>
<p>逐渐按实际贡献和表现，将下属区分为三层，最内层属于核心人物，领导应以“没有你我会死”的心情来加以礼待，给予特殊的照顾。第二层为“有也好，没有也好”的一般成员，如果他们不能再努力，提高贡献度，只能给予一般的照顾和客气的对待。最外层则为“早走早好”的待提高下属，若是他们不知自省、自律，就希望他们另谋出路，不要待在这里混日子。领导必须站在公的立场，确实依据公共目标来考核，不夹杂私心，公正地区分下属。相信大家会认同这种作风的，这就是合理的不公平。</p>
</li>
<li>
<p>有了班底之后，领导还必须进一步善用班底的力量。任何事情，领导都不要擅自决定。先把自己的看法隐藏起来，当作腹案。将自己的腹案变成问题，用来征询班底的意见，让他们在互动中找出合理的答案，经领导核准后，再由班底去执行。领导越依赖班底，班底越奋发图强而提高可靠的程度，这才是良性的互动。</p>
</li>
<li>
<p>如果某人对公司有特别的贡献，就要特别照顾他，否则他有一天会心灰意冷，辞职不干。中国人在没有辞职以前，公司挽留，他会留下来；一旦辞职就代表他去意已决。预防胜于治疗，你发现某个人萌生去意，要趁早挽留。一个好的干部走了，对你的杀伤力是非常大的，一个可以信赖的人、一个可以支撑公司的人、一个可以帮助公司发展的人，是很难找到的。我看过最差劲的领导，拿着很多求职信，对他的干部讲：“你们好好干，否则有这么多人会来顶替你们。”其结果只能是有能力的人走了，没能力的留下来。</p>
</li>
<li>
<p>优秀人才的外流实际上都是领导者的过失，对每一个人而言，类似于离职这样的变动都无异于冒险，之所以在清楚这个道理的前提下，优秀人才还是选择离开团队，就充分说明他们其实是迫于无奈，不得已而为之。</p>
</li>
<li>
<p>在员工看来，凡是贴在墙上的，效力就大打折扣，只有变成我们自己的才有效。这需要自然孕育，急不来，需要一个过程</p>
</li>
<li>
<p>我们要的是可靠的力量，而不是听话的部队，表面上的服从是没有任何意义的，你有困难的时候，没有一个表面服从的人会与你患难与共。</p>
</li>
<li>
<p>在管理企业时，要把荣誉让给员工，要把舞台让给干部，领导则变成默默无闻的树根，整个组织才能生生不息。</p>
</li>
<li>
<p>我们希望员工负责，但是不能命令他们负责。一个人自发地要负责，他不会觉得吃亏；一个人天天被别人赋予责任的时候，他是很痛苦的。</p>
</li>
<li>
<p>一个人做了部门主管，就不再需要什么功劳，你的部门做得好，就是你的功劳。领导认为你好，你就有功劳；领导认为你不好，你功劳大，他反而会认为你在搞恶势力，准备抢他的位子。身为干部，很多事情要抓大放小，才能轻松。把成就感让给员工，才能引起员工强烈的参与感。唯有员工热心参与，干部才能称心如意地推行组织所欲完成的任务，顺利实现预期的目标。</p>
</li>
<li>
<p>不要因为我一个人不努力，害了大家。</p>
</li>
<li>
<p>枝叶能做的事，树干不要去做；树干能做的事，根部也不会去做。象征“干部会做的工作，领导不要争着去做”，符合管理的“例外原理”。</p>
</li>
<li>
<p>所谓上侵下职，就是上司把下属的事情抢着办了，反过来指责下属偷懒、不负责。</p>
</li>
<li>
<p>下属能做的事情，让下属去做，上司越少干预越好，这样下属才能够自己承担应有的责任，加深“自作自受”的体会</p>
</li>
<li>
<p>第二，要适时向上司汇报工作进度和预期的结果。</p>
</li>
<li>
<p>第三，处处顾虑上司的立场和面子，不令其为难。越有能力的下属，越需要留意上司的面子问题。因为平时给上司的压力已经相当大，稍不留神，便可能“功高震主”，让上司觉得没有面子，而恼羞成怒。</p>
</li>
<li>
<p>第二，主动向上司提出有关未来的预测和筹划。</p>
</li>
<li>
<p>领导想要激励员工，必须了解他们的需求。员工的需求非但变动得很快，而且十分不容易满足。人人得寸进尺，晋升一级还企盼多多提拔。</p>
</li>
<li>
<p>中国人对于升迁的态度，大致是这样的：我不会强求；然而应该给我的，我会当仁不让；我不来请求，希望你能够主动想起；我可以谢绝，但是上级不能不考虑到我，否则我很没面子；我不一定要升迁，可是面子不能不顾；我不在乎让给别人，至少要尊重我一下；如果连这些基本的动作都没有，那未免欺人太甚，过分看不起我了。</p>
</li>
<li>
<p>塞翁失马，焉知非福。升迁固然是种收获，不升也未必是一种损失。</p>
</li>
<li>
<p>争强好胜的人，往往会引起别人的戒心，结果只抢到了小的抢不到大的。</p>
</li>
<li>
<p>第一，把自己的本职工作做好，还要找时间替上司分忧解劳。</p>
</li>
<li>
<p>懂得“兼顾”的人，一方面把本职工作做好，让上司从“放心”到“赏识”；另一方面会借着请示、报告、聊天的机会，为上司分忧解劳，暗示他不但有余力可以办事，而且对他忠诚、关心，值得信赖。</p>
</li>
<li>
<p>第二，善于体会上司的旨意，帮助他达成正确决策。</p>
</li>
<li>
<p>“兼顾”的智慧，表现在“自己有把握，却应该尊重上司的裁决权。我必须自己负责，但是事先要获得上司的许可”。</p>
</li>
<li>
<p>第三，在上司面前表现，也要让下属有机会充分发挥。</p>
</li>
<li>
<p>说到差不多的地步，做到差不多的程度，这才是良好的策略。</p>
</li>
<li>
<p>第三，升迁的原则是配合当时的情境，做通盘的考虑，自行权衡其中的利害。</p>
</li>
</ul>
<h2 id="第六章团队外部要互利互惠">第六章 团队外部要互利互惠</h2>
<ul>
<li>我不会去新开张的饭馆吃饭，一般等它开一年左右，如果它依然是顾客盈门我才去，因为我从不想当试验品。</li>
<li>团队的成员应该从提高个人的专业水平入手，强调把平时的工作做好，才能切实地达到改善的目的。同时要扩大自己的视野。一个人只有专业没有视野，就会枯燥无味，毫无乐趣可言。扩大视野，才能够从各方面来综合分析情况，这叫作通。</li>
<li>做工作一定要专心，如果你的团队能够做到把眼前的人视为最重要的人，把手上的工作视为最重要的工作，将此时此地视为最重要的时间和空间，那么这个团队就是优秀的团队。</li>
<li>在内部团队中，领导者负有70%的责任，领导者是什么样的人，其下属慢慢会变得跟领导者一样。</li>
<li>要想确定干部是否可信，最好的办法是试探他，而不是观察他。</li>
<li>我们把情、理、法的“情”摆在最上面的，是有道理的。一个领导情绪稳定的时候，他所带的团队就不会蛮干，不会冲动，不会失去控制。领导没有能力没关系，没有学识也没关系，但是情绪一定要稳定。在领导情绪稳定的时候，什么事情都很好商量，因为大家都讲道理，凭良心做事。与外部团队合作，肯定会有很多摩擦，这时候，心平气和尤其重要。稍有不慎的话，损失的将是整个企业而不是个人。</li>
<li>我觉得，领导者最重要的是品德而非能力，总经理不需要能力，专业人士才需要能力，比如说财务人员。什么都不懂的人才适合当总经理，这不是开玩笑。一个人从无到有固然不容易，从有到无更困难。见山是山，见水是水；见山不是山，见水不是水；后来又见山是山，见水是水了，这才是人生的过程。一个人学了很多，很想表现，这是第一个阶段；等到表现得差不多了就不想表现了，让别人去表现，我来欣赏；到最后有表现与没有表现一样。</li>
<li>我认为，用汉字来定契约是非常危险的，因为汉字的弹性太大，怎么解释都有道理，到最后只是保护了不讲理的那一方。所以不定契约无所谓，一定契约就要坚持，要进一步，否则就会吃亏，双方各进一步就无法合作。</li>
<li>中国人又特别重视义气。</li>
<li>中国式的管理把世道人心都结合在管理里面了，我敢预言，重义气是我们超英赶美的一个重要武器。</li>
<li>领导者应该强调建立起不重形式的相互信任，平时多投入时间进行相互的沟通和了解，关键时刻别人才能够舍生取义，提供及时的帮助和支持。</li>
<li>领导者不需要整天都待在公司里面，实际上，当你离开公司的时候，公司内部比你在的时候更和谐。作为一个领导，一定要做到我在不在公司都是一样的，如果领导不在，公司运行就不好，那表示领导有很大的问题。理想的状态是，领导定好目标后，可以随时抽出时间来，随时去和合作伙伴沟通。因为执行不是领导的事，而是干部的事。</li>
<li>有时候，适当培养几个敌人，才是生存之道。</li>
<li>竞争对手就是你的老师，我们应该善于向敌人学习。</li>
<li>一个人愿意承认自己不如人家，就可以达到海阔天空的境界；总想着“我一定要把你干掉”，最后对方没有死，你可能先死了。</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>基于 VuePress 2.x 与 ElementPlus 的组件库文档搭建实践</title>
      <link>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E5%9F%BA%E4%BA%8E-vuepress-2.x-%E4%B8%8E-elementplus-%E7%9A%84%E7%BB%84%E4%BB%B6%E5%BA%93%E6%96%87%E6%A1%A3%E6%90%AD%E5%BB%BA%E5%AE%9E%E8%B7%B5/</link>
      <pubDate>Wed, 22 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/vue%E5%BC%80%E5%8F%91/%E5%9F%BA%E4%BA%8E-vuepress-2.x-%E4%B8%8E-elementplus-%E7%9A%84%E7%BB%84%E4%BB%B6%E5%BA%93%E6%96%87%E6%A1%A3%E6%90%AD%E5%BB%BA%E5%AE%9E%E8%B7%B5/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;计划使用 &lt;code&gt;VuePress 2.x&lt;/code&gt; 结合 &lt;code&gt;ElementPlus&lt;/code&gt; 实现一个封装组件库的文档说明网站。本文将详细介绍如何搭建环境、配置项目以及解决过程中遇到的问题。&lt;/p&gt;
&lt;h1 id=&#34;2-vuepress项目初始化&#34;&gt;2. Vuepress项目初始化&lt;/h1&gt;
&lt;h2 id=&#34;21-准备工作&#34;&gt;2.1 准备工作&lt;/h2&gt;
&lt;p&gt;创建一个名为 &lt;code&gt;VuePressTest&lt;/code&gt; 的项目目录，然后进入该目录并安装依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir VuePressTest &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; VuePressTest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm init -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -D vuepress@next
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;22-配置&#34;&gt;2.2 配置&lt;/h2&gt;
&lt;p&gt;在项目根目录下的 &lt;code&gt;package.json&lt;/code&gt; 文件中添加以下脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;dev&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vuepress dev docs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;build&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vuepress build docs&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;23-示例&#34;&gt;2.3 示例&lt;/h2&gt;
&lt;p&gt;在项目根目录下创建 &lt;code&gt;docs/README.md&lt;/code&gt; 文件，并添加以下内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;home: true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;heroImage: https://artice-code-1258339218.cos.ap-beijing.myqcloud.com/vuepress/element-index.png
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;heroText: Element
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;features:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; title: 一致性 Consistency
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  details: 与现实生活一致：与现实生活的流程、逻辑保持一致，遵循用户习惯的语言和概念
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; title: 反馈 Feedback
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  details: 通过界面样式和交互动效让用户可以清晰的感知自己的操作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; title: 效率 Efficiency
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  details: 界面简单直白，让用户快速识别而非回忆，减少用户记忆负担。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;footer: by饿了么
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行 &lt;code&gt;npm run dev&lt;/code&gt; 命令后，效果如下：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>计划使用 <code>VuePress 2.x</code> 结合 <code>ElementPlus</code> 实现一个封装组件库的文档说明网站。本文将详细介绍如何搭建环境、配置项目以及解决过程中遇到的问题。</p>
<h1 id="2-vuepress项目初始化">2. Vuepress项目初始化</h1>
<h2 id="21-准备工作">2.1 准备工作</h2>
<p>创建一个名为 <code>VuePressTest</code> 的项目目录，然后进入该目录并安装依赖：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir VuePressTest <span class="o">&amp;&amp;</span> <span class="nb">cd</span> VuePressTest
</span></span><span class="line"><span class="cl">npm init -y
</span></span><span class="line"><span class="cl">npm install -D vuepress@next
</span></span><span class="line"><span class="cl">npm install
</span></span></code></pre></div><h2 id="22-配置">2.2 配置</h2>
<p>在项目根目录下的 <code>package.json</code> 文件中添加以下脚本：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;scripts&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;dev&#34;</span><span class="p">:</span> <span class="s2">&#34;vuepress dev docs&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;build&#34;</span><span class="p">:</span> <span class="s2">&#34;vuepress build docs&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h2 id="23-示例">2.3 示例</h2>
<p>在项目根目录下创建 <code>docs/README.md</code> 文件，并添加以下内容：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">home: true
</span></span><span class="line"><span class="cl">heroImage: https://artice-code-1258339218.cos.ap-beijing.myqcloud.com/vuepress/element-index.png
</span></span><span class="line"><span class="cl">heroText: Element
</span></span><span class="line"><span class="cl">features:
</span></span><span class="line"><span class="cl"><span class="k">-</span> title: 一致性 Consistency
</span></span><span class="line"><span class="cl">  details: 与现实生活一致：与现实生活的流程、逻辑保持一致，遵循用户习惯的语言和概念
</span></span><span class="line"><span class="cl"><span class="k">-</span> title: 反馈 Feedback
</span></span><span class="line"><span class="cl">  details: 通过界面样式和交互动效让用户可以清晰的感知自己的操作
</span></span><span class="line"><span class="cl"><span class="k">-</span> title: 效率 Efficiency
</span></span><span class="line"><span class="cl">  details: 界面简单直白，让用户快速识别而非回忆，减少用户记忆负担。
</span></span><span class="line"><span class="cl">footer: by饿了么
</span></span><span class="line"><span class="cl">---
</span></span></code></pre></div><p>运行 <code>npm run dev</code> 命令后，效果如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image004.png"></p>
<h1 id="3-使用element-plus">3. 使用Element-Plus</h1>
<h2 id="31-安装">3.1 安装</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">npm install element-plus --save
</span></span></code></pre></div><h2 id="32-配置">3.2 配置</h2>
<p>在 <code>.vuepress</code> 目录下创建 <code>clientAppEnhance.ts</code> 文件，引入 ElementPlus：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineClientAppEnhance</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@vuepress/client&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">ElementPlus</span> <span class="kr">from</span> <span class="s1">&#39;element-plus&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="s1">&#39;element-plus/dist/index.css&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineClientAppEnhance</span><span class="p">(({</span> <span class="nx">app</span><span class="p">,</span> <span class="nx">router</span><span class="p">,</span> <span class="nx">siteData</span> <span class="p">})</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">ElementPlus</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h2 id="33-示例">3.3 示例</h2>
<p>修改 <code>docs/README.md</code> 文件，添加一个 ElementPlus 按钮组件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">home: true
</span></span><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">el-button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;primary&#34;</span> <span class="na">:icon</span><span class="o">=</span><span class="s">&#34;Edit&#34;</span><span class="p">&gt;</span>我是Element-Plus<span class="p">&lt;/</span><span class="nt">el-button</span><span class="p">&gt;</span>
</span></span></code></pre></div><p>运行项目后，效果如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image005.png"></p>
<h2 id="34-webpack-下的-mjs-文件报错处理">3.4 Webpack 下的 .mjs 文件报错处理</h2>
<p>当前项目使用 Vite 打包工具可以正常启动，但如果使用 Webpack 打包，运行 <code>npm run dev</code> 时可能会出现与 ElementPlus 相关的报错，错误信息如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">(probably because the origin is strict EcmaScript Module, e. g. a module with javascript mimetype, a &#39;*. mjs&#39; file, or a &#39;*.js&#39; file where the package. json contains &#39;&#34;type&#34;: &#34;module&#34;&#39;). 
</span></span><span class="line"><span class="cl">The extension in the request is mandatory for it to be fully specified. 
</span></span><span class="line"><span class="cl">Add the extension to the request.
</span></span></code></pre></div><p>根据 <a href="https://webpack.docschina.org/api/module-methods/">Webpack 官方文档</a> 的解释，需要将 <code>Rule.resolve.fullySpecified</code> 选项设置为 <code>false</code> 来解决这个问题。在 <code>config.ts</code> 文件中添加以下配置：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineUserConfig</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vuepress&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="kr">type</span> <span class="p">{</span> <span class="nx">DefaultThemeOptions</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vuepress&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineUserConfig</span><span class="p">&lt;</span><span class="nt">DefaultThemeOptions</span><span class="p">&gt;({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">bundler</span><span class="o">:</span> <span class="s1">&#39;@vuepress/webpack&#39;</span><span class="p">,</span> <span class="c1">// 指定使用 Webpack 打包
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">bundlerConfig</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">chainWebpack</span><span class="o">:</span> <span class="p">(</span><span class="nx">config</span><span class="p">,</span> <span class="nx">isServer</span><span class="p">,</span> <span class="nx">isBuild</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">config</span><span class="p">.</span><span class="nx">module</span>
</span></span><span class="line"><span class="cl">        <span class="p">.</span><span class="nx">rule</span><span class="p">(</span><span class="s1">&#39;mjs&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="sr">/\.m?jsx?$/</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">.</span><span class="nx">resolve</span><span class="p">.</span><span class="kr">set</span><span class="p">(</span><span class="s1">&#39;fullySpecified&#39;</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h2 id="35-elementplus-组件图标显示">3.5 ElementPlus 组件图标显示</h2>
<p>在前面的按钮示例中，设置 <code>:icon=&quot;Edit&quot;</code> 图标并未生效，这是因为 ElementPlus 的图标需要单独引入。</p>
<p>首先安装图标库：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">npm install @element-plus/icons-vue
</span></span></code></pre></div><p>然后修改 <code>.vuepress/clientAppEnhance.ts</code> 文件，注册所有图标组件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineClientAppEnhance</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@vuepress/client&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">ElementPlus</span> <span class="kr">from</span> <span class="s1">&#39;element-plus&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="s1">&#39;element-plus/dist/index.css&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="o">*</span> <span class="kr">as</span> <span class="nx">ElIcons</span> <span class="kr">from</span> <span class="s1">&#39;@element-plus/icons-vue&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineClientAppEnhance</span><span class="p">(({</span> <span class="nx">app</span><span class="p">,</span> <span class="nx">router</span><span class="p">,</span> <span class="nx">siteData</span> <span class="p">})</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">ElementPlus</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">  <span class="c1">// 全局注册 ElementPlus 图标组件
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">ElIcons</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">key</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">app</span><span class="p">.</span><span class="nx">component</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">ElIcons</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">  <span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><p>修改按钮示例，使用已注册的图标：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">home: true
</span></span><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">el-button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;primary&#34;</span> <span class="na">icon</span><span class="o">=</span><span class="s">&#34;Edit&#34;</span><span class="p">&gt;</span>带图标的按钮<span class="p">&lt;/</span><span class="nt">el-button</span><span class="p">&gt;</span>
</span></span></code></pre></div><p>添加图标后的效果如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image006.png"></p>
<h1 id="4-markdown-中使用-vue">4. Markdown 中使用 Vue</h1>
<p>如果要对自己封装的组件进行说明，最好能像 ElementPlus 文档那样，既有组件示例，又能查看源码。VuePress 支持在 Markdown 文件中直接使用 Vue 组件。</p>
<h2 id="41-自定义组件">4.1 自定义组件</h2>
<p>在 <code>.vuepress</code> 目录下创建 <code>components</code> 文件夹，然后在其中创建 <code>Test.vue</code> 组件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vue" data-lang="vue"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;test-component&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span><span class="nx">在</span> <span class="nx">Markdown</span> <span class="nx">中引入自定义组件</span><span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">el-button</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;success&#34;</span><span class="p">&gt;</span><span class="nx">这是一个</span> <span class="nx">ElementPlus</span> <span class="nx">按钮</span><span class="p">&lt;/</span><span class="nt">el-button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;ts&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineComponent</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;vue&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineComponent</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">setup</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// 组件逻辑
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="k">return</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">style</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;less&#34;</span> <span class="na">scoped</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">.</span><span class="nx">test</span><span class="o">-</span><span class="nx">component</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">padding</span><span class="o">:</span> <span class="mi">20</span><span class="nx">px</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">border</span><span class="o">:</span> <span class="mi">1</span><span class="nx">px</span> <span class="nx">solid</span> <span class="err">#</span><span class="nx">eaeaea</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">border</span><span class="o">-</span><span class="nx">radius</span><span class="o">:</span> <span class="mi">4</span><span class="nx">px</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">margin</span><span class="o">:</span> <span class="mi">20</span><span class="nx">px</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span></code></pre></div><h2 id="42-自动注册-vue-组件">4.2 自动注册 Vue 组件</h2>
<p>安装组件自动注册插件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">npm i -D @vuepress/plugin-register-components@next
</span></span></code></pre></div><p>在 <code>config.ts</code> 中配置插件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineUserConfig</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vuepress&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="kr">type</span> <span class="p">{</span> <span class="nx">DefaultThemeOptions</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;vuepress&#39;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">path</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@vuepress/utils&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineUserConfig</span><span class="p">&lt;</span><span class="nt">DefaultThemeOptions</span><span class="p">&gt;({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="s1">&#39;@vuepress/register-components&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">componentsDir</span>: <span class="kt">path.resolve</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">,</span> <span class="s1">&#39;./components&#39;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div><h2 id="43-基本使用">4.3 基本使用</h2>
<p>在 <code>docs/README.md</code> 文件中引入自定义组件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">home: true
</span></span><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">Test</span> <span class="p">/&gt;</span>
</span></span></code></pre></div><p>引入组件后的效果如下：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/image007.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>前端异常监控系统Sentry的基本使用（2021）</title>
      <link>https://dstweihao.cn/posts/sentry/%E5%89%8D%E7%AB%AF%E5%BC%82%E5%B8%B8%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9Fsentry%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A82021/</link>
      <pubDate>Thu, 09 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/sentry/%E5%89%8D%E7%AB%AF%E5%BC%82%E5%B8%B8%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9Fsentry%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A82021/</guid>
      <description>&lt;h3 id=&#34;一系统简介&#34;&gt;一、系统简介&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Sentry&lt;/code&gt;是一个开源的监控系统，可以收集项目中的异常信息，便于开发人员第一时间发现问题，定位问题，解决问题。&lt;/p&gt;
&lt;h3 id=&#34;二系统搭建&#34;&gt;二、系统搭建&lt;/h3&gt;
&lt;p&gt;虽然&lt;code&gt;Sentry&lt;/code&gt;官方提供了在线系统，但是因为需要翻墙，加上如果是公司项目，考虑到安全问题，还是倾向于私有化部署，在&lt;code&gt;Github&lt;/code&gt;上有一个开源项目用于部署&lt;code&gt;Sentry&lt;/code&gt;，可以使用该项目进行部署：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/getsentry/onpremise.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;因为这个项目涉及很多后端的技术知识，&lt;code&gt;Sentry&lt;/code&gt;搭建最好是后端人员来做，然后部署到服务器上面去。&lt;/p&gt;
&lt;h3 id=&#34;三创建项目&#34;&gt;三、创建项目&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Sentry&lt;/code&gt;搭建成功，部署到服务器，比如当前&lt;code&gt;Sentry&lt;/code&gt;在线系统为&lt;code&gt;https://123.11.22.133:211&lt;/code&gt;，使用账号&lt;code&gt;test001&lt;/code&gt;登录，一开始默认是英文显示，如果想要切换为中文，只需要在左上角的&lt;code&gt;User settings&lt;/code&gt;里的&lt;code&gt;Language&lt;/code&gt;选项选择&lt;code&gt;Simplified Chinese&lt;/code&gt;即可，然后创建项目，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;1&#34; loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/1.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;四vue项目引入sentry&#34;&gt;四、Vue项目引入Sentry&lt;/h3&gt;
&lt;p&gt;项目创建完成后，会跳转至&lt;code&gt;Vue&lt;/code&gt;配置的说明文档，主要是&lt;code&gt;Vue&lt;/code&gt;项目如何引入&lt;code&gt;Sentry&lt;/code&gt;的一些内容，内容如下所示：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;安装依赖&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;yarn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;yarn&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;add&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tracing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;npm&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;save&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vue&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tracing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在&lt;code&gt;main.js&lt;/code&gt;里引入&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Vue&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vue&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@sentry/vue&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Integrations&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@sentry/tracing&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Sentry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;Vue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;dsn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://cd7f733c2e1e4641bdeb11ba0811d9aa@123.11.22.133:211/12&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;integrations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Integrations&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;BrowserTracing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Set tracesSampleRate to 1.0 to capture 100%
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// of transactions for performance monitoring.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// We recommend adjusting this value in production
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;tracesSampleRate&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 上报console异常信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;logErrors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此时，只要项目正常部署在线上，打开项目，然后打开浏览器控制台，查看&lt;code&gt;Network&lt;/code&gt;列表，会发现很多类似这样的请求，并没有报错，这就意味着当前已经正常上报到Sentry系统了，如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cd7f733c2e1e4641bdeb11ba0811d9aa&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sentry_version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;五异常报错示例&#34;&gt;五、异常报错示例&lt;/h3&gt;
&lt;p&gt;为了真实验证&lt;code&gt;Sentry&lt;/code&gt;的功能，现以一个真实场景来演示，在项目中添加一个按钮，然后设置点击事件之后，触发打印&lt;code&gt;console&lt;/code&gt;，&lt;code&gt;sentryTest&lt;/code&gt;并未定义，所以会报错，代码如下所示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;el&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;button&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sentryClicked&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Sentry测试&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/el-button&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/template&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;methods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;sentryClicked&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;sentryClicked: &amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sentryTest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在项目页面，我们可以看到，在浏览器控制台，确实有报错信息生成，如下图所示：&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="一系统简介">一、系统简介</h3>
<p><code>Sentry</code>是一个开源的监控系统，可以收集项目中的异常信息，便于开发人员第一时间发现问题，定位问题，解决问题。</p>
<h3 id="二系统搭建">二、系统搭建</h3>
<p>虽然<code>Sentry</code>官方提供了在线系统，但是因为需要翻墙，加上如果是公司项目，考虑到安全问题，还是倾向于私有化部署，在<code>Github</code>上有一个开源项目用于部署<code>Sentry</code>，可以使用该项目进行部署：</p>
<pre tabindex="0"><code>git clone https://github.com/getsentry/onpremise.git
</code></pre><p>因为这个项目涉及很多后端的技术知识，<code>Sentry</code>搭建最好是后端人员来做，然后部署到服务器上面去。</p>
<h3 id="三创建项目">三、创建项目</h3>
<p><code>Sentry</code>搭建成功，部署到服务器，比如当前<code>Sentry</code>在线系统为<code>https://123.11.22.133:211</code>，使用账号<code>test001</code>登录，一开始默认是英文显示，如果想要切换为中文，只需要在左上角的<code>User settings</code>里的<code>Language</code>选项选择<code>Simplified Chinese</code>即可，然后创建项目，如下图所示：</p>
<p><img alt="1" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/1.png"></p>
<h3 id="四vue项目引入sentry">四、Vue项目引入Sentry</h3>
<p>项目创建完成后，会跳转至<code>Vue</code>配置的说明文档，主要是<code>Vue</code>项目如何引入<code>Sentry</code>的一些内容，内容如下所示：</p>
<ol>
<li>
<p>安装依赖</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">Using</span> <span class="nx">yarn</span>
</span></span><span class="line"><span class="cl"><span class="nx">yarn</span> <span class="nx">add</span> <span class="err">@</span><span class="nx">sentry</span><span class="o">/</span><span class="nx">vue</span> <span class="err">@</span><span class="nx">sentry</span><span class="o">/</span><span class="nx">tracing</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">#</span> <span class="nx">Using</span> <span class="nx">npm</span>
</span></span><span class="line"><span class="cl"><span class="nx">npm</span> <span class="nx">install</span> <span class="o">--</span><span class="nx">save</span> <span class="err">@</span><span class="nx">sentry</span><span class="o">/</span><span class="nx">vue</span> <span class="err">@</span><span class="nx">sentry</span><span class="o">/</span><span class="nx">tracing</span>
</span></span></code></pre></div></li>
<li>
<p>在<code>main.js</code>里引入</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">Vue</span> <span class="nx">from</span> <span class="s2">&#34;vue&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="o">*</span> <span class="nx">as</span> <span class="nx">Sentry</span> <span class="nx">from</span> <span class="s2">&#34;@sentry/vue&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Integrations</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">&#34;@sentry/tracing&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Sentry</span><span class="p">.</span><span class="nx">init</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">  <span class="nx">Vue</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">dsn</span><span class="o">:</span> <span class="s2">&#34;http://cd7f733c2e1e4641bdeb11ba0811d9aa@123.11.22.133:211/12&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nx">integrations</span><span class="o">:</span> <span class="p">[</span><span class="k">new</span> <span class="nx">Integrations</span><span class="p">.</span><span class="nx">BrowserTracing</span><span class="p">()],</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1">// Set tracesSampleRate to 1.0 to capture 100%
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// of transactions for performance monitoring.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="c1">// We recommend adjusting this value in production
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">tracesSampleRate</span><span class="o">:</span> <span class="mf">1.0</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 上报console异常信息
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>  <span class="nx">logErrors</span><span class="o">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></div></li>
</ol>
<p>此时，只要项目正常部署在线上，打开项目，然后打开浏览器控制台，查看<code>Network</code>列表，会发现很多类似这样的请求，并没有报错，这就意味着当前已经正常上报到Sentry系统了，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="o">?</span><span class="nx">sentry_key</span><span class="o">=</span><span class="nx">cd7f733c2e1e4641bdeb11ba0811d9aa</span><span class="o">&amp;</span><span class="nx">sentry_version</span><span class="o">=</span><span class="mi">7</span>
</span></span></code></pre></div><h3 id="五异常报错示例">五、异常报错示例</h3>
<p>为了真实验证<code>Sentry</code>的功能，现以一个真实场景来演示，在项目中添加一个按钮，然后设置点击事件之后，触发打印<code>console</code>，<code>sentryTest</code>并未定义，所以会报错，代码如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">template</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"> <span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="o">&lt;</span><span class="nx">el</span><span class="o">-</span><span class="nx">button</span> <span class="err">@</span><span class="nx">click</span><span class="o">=</span><span class="s2">&#34;sentryClicked&#34;</span><span class="o">&gt;</span><span class="nx">Sentry测试</span><span class="o">&lt;</span><span class="err">/el-button&gt;</span>
</span></span><span class="line"><span class="cl"> <span class="o">&lt;</span><span class="err">/div&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/template&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">methods</span><span class="o">:</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">sentryClicked</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;sentryClicked: &#39;</span><span class="p">,</span> <span class="nx">sentryTest</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/script&gt;</span>
</span></span></code></pre></div><p>在项目页面，我们可以看到，在浏览器控制台，确实有报错信息生成，如下图所示：</p>
<p><img alt="2" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/2.png"></p>
<p>然后，我们到<code>Sentry</code>在线系统查看，确实有收到报错信息，如下图所示：</p>
<p><img alt="3" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/3.png"></p>
<p>里面指明了报错原因是<code>sentryTest is not defined</code>，然后还提交了用户的<code>IP</code>、浏览器版本以及版本号、平台系统等等信息，便于分析异常错误。</p>
<h3 id="六上传sourcemap文件">六、上传SourceMap文件</h3>
<p>通常<code>Sentry</code>在线系统上面的信息，也是可以排查解决<code>BUG</code>的，比如<code>sentryTest is not defined</code>，我们只需要在项目中搜索<code>sentryTest</code>就可以定位到代码报错的位置，但是如果是一些比较通用的，或者信息比较含糊的，是没办法精准定位代码位置的，这个时候，就可能有想法了，怎么让才能在<code>Sentry</code>在线系统看到，到底是执行到哪一步的时候，报错了呢？</p>
<p>这就是本节所需要实现功能，这就需要<code>SourceMap</code>文件，什么是<code>SourceMap</code>文件呢？</p>
<p>因为使用<code>webpack</code>打包之后，所有代码都压缩在一起，很难从中定位到异常代码的位置，而<code>SourceMap</code>就是源码，有了它，就可以定位到具体位置，所以需要提供<code>SourceMap</code>文件到<code>Sentry</code>在线系统。</p>
<p>首先，需要将<code>vue</code>项目下<code>config/index.js</code>里的<code>productionSourceMap</code>设置为<code>true</code>，然后运行<code>npm run build</code>命令，在生成的<code>dist/static/js</code>里就会发现很多后缀为<code>.map</code>的文件，如下图所示：</p>
<p><img alt="4" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/4.png"></p>
<p>然后我们需要把<code>.map</code>文件上传到<code>Sentry</code>在线系统，具体步骤如下：</p>
<ol>
<li>
<p>登录<code>Sentry</code>在线系统，在终端输入如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="o">--</span><span class="nx">url</span> <span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/ login
</span></span></span></code></pre></div><p>然后会提示输入<code>token</code>，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">dstweihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="o">--</span><span class="nx">url</span> <span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/ login
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">This</span> <span class="nx">helps</span> <span class="nx">you</span> <span class="nx">signing</span> <span class="k">in</span> <span class="nx">your</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="kd">with</span> <span class="nx">an</span> <span class="nx">authentication</span> <span class="nx">token</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"><span class="nx">If</span> <span class="nx">you</span> <span class="k">do</span> <span class="nx">not</span> <span class="nx">yet</span> <span class="nx">have</span> <span class="nx">a</span> <span class="nx">token</span> <span class="nx">ready</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">bring</span> <span class="nx">up</span> <span class="nx">a</span> <span class="nx">browser</span> <span class="k">for</span> <span class="nx">you</span>
</span></span><span class="line"><span class="cl"><span class="nx">to</span> <span class="nx">create</span> <span class="nx">a</span> <span class="nx">token</span> <span class="nx">now</span><span class="p">.</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Sentry</span> <span class="nx">server</span><span class="o">:</span> <span class="mf">123.11</span><span class="p">.</span><span class="mf">22.133</span>
</span></span><span class="line"><span class="cl"><span class="nx">Open</span> <span class="nx">browser</span> <span class="nx">now</span><span class="o">?</span> <span class="p">[</span><span class="nx">y</span><span class="o">/</span><span class="nx">n</span><span class="p">]</span> <span class="nx">n</span>
</span></span><span class="line"><span class="cl"><span class="nx">Enter</span> <span class="nx">your</span> <span class="nx">token</span><span class="o">:</span> 
</span></span></code></pre></div><p><code>token</code>是在<code>Sentry</code>在线系统生成的，如下图所示：</p>
<p><img alt="5" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/5.png"></p>
<p>这时，只要复制<code>token</code>到终端，就可以完成登录流程了，如下所示，就是成功登录了<code>Sentry</code>在线系统：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">Enter</span> <span class="nx">your</span> <span class="nx">token</span><span class="o">:</span> <span class="mf">4e6488262</span><span class="nx">fb849ef93c6217ac8bc8e9a2d635572eb584fa3b69b859e0edc5104</span>
</span></span><span class="line"><span class="cl"><span class="nx">Valid</span> <span class="nx">token</span> <span class="k">for</span> <span class="nx">user</span> <span class="nx">test001</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Stored</span> <span class="nx">token</span> <span class="k">in</span> <span class="err">/Users/weihao/.sentryclirc</span>
</span></span><span class="line"><span class="cl"><span class="nx">dstweihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> 
</span></span></code></pre></div></li>
<li>
<p>上传<code>SourceMap</code>到<code>Sentry</code>在线系统</p>
<p>登录成功之后，就需要将SourceMap文件上传到Sentry在线系统，首先，需要在项目里新建一个<code>.sentryclirc</code>文件，里面的内容，如下所示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">defaults</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">url</span><span class="o">=</span><span class="nx">http</span><span class="o">:</span><span class="c1">//123.11.22.133:211/
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">org</span><span class="o">=</span><span class="nx">dst</span>
</span></span><span class="line"><span class="cl"><span class="nx">project</span><span class="o">=</span><span class="nx">test</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">auth</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">token</span><span class="o">=</span><span class="mf">4e6488262</span><span class="nx">fb849ef93c6217ac8bc8e9a2d635572eb584fa3b69b859e0edc5104</span>
</span></span></code></pre></div><p>然后使用以下命令：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="nx">releases</span> <span class="o">-</span><span class="nx">o</span> <span class="nx">dst</span> <span class="o">-</span><span class="nx">p</span> <span class="nx">test</span> <span class="nx">files</span> <span class="nx">test</span><span class="err">@</span><span class="mf">1.0</span><span class="p">.</span><span class="mi">0</span> <span class="nx">upload</span><span class="o">-</span><span class="nx">sourcemaps</span> <span class="s1">&#39;./dist/static/js/&#39;</span> <span class="o">--</span><span class="nx">url</span><span class="o">-</span><span class="nx">prefix</span> <span class="s1">&#39;~/test/js&#39;</span> 
</span></span></code></pre></div><p>这里需要对该命令一些参数说明一下：</p>
<p><code>dst</code>：组织名</p>
<p><code>test</code>：项目名</p>
<p><code>1.0.0</code>：版本号，需和main.js里的<code>release: 'test@1.0.0'</code>一致</p>
<p><code>./dist/static/js/</code>：项目打包生成的<code>dist</code>里<code>.map</code>文件所在目录</p>
<p><code>~/test/js</code>：如果部署在服务器上面，不是部署在主目录，而是在test文件夹下面，那就需要加上</p>
<p>在终端显示如下，就表示已经上传成功：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">dstweihao</span><span class="err">@</span><span class="nx">weihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> <span class="nx">sentry</span><span class="o">-</span><span class="nx">cli</span> <span class="nx">releases</span> <span class="o">-</span><span class="nx">o</span> <span class="nx">dst</span> <span class="o">-</span><span class="nx">p</span> <span class="nx">test</span> <span class="nx">files</span> <span class="mf">1.0</span><span class="p">.</span><span class="mi">0</span> <span class="nx">upload</span><span class="o">-</span><span class="nx">sourcemaps</span> <span class="s1">&#39;./dist/static/js/&#39;</span> <span class="o">--</span><span class="nx">url</span><span class="o">-</span><span class="nx">prefix</span> <span class="s1">&#39;~/test/js&#39;</span> 
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Found</span> <span class="mi">20</span> <span class="nx">release</span> <span class="nx">files</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Analyzing</span> <span class="mi">20</span> <span class="nx">sources</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Analyzing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.238</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Rewriting</span> <span class="nx">sources</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Rewriting</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.252</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Adding</span> <span class="nx">source</span> <span class="nx">map</span> <span class="nx">references</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Bundling</span> <span class="nx">files</span> <span class="k">for</span> <span class="nx">upload</span><span class="p">...</span> <span class="o">~</span><span class="err">/test/js/vendor.331b4cf7bdabb46a7655.js.map</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Bundling</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.373</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Optimizing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.01</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Uploading</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.337</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Uploaded</span> <span class="nx">release</span> <span class="nx">files</span> <span class="nx">to</span> <span class="nx">Sentry</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">Processing</span> <span class="nx">completed</span> <span class="k">in</span> <span class="mf">0.114</span><span class="nx">s</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nx">File</span> <span class="nx">upload</span> <span class="nx">complete</span> <span class="p">(</span><span class="nx">processing</span> <span class="nx">pending</span> <span class="nx">on</span> <span class="nx">server</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">Source</span> <span class="nx">Map</span> <span class="nx">Upload</span> <span class="nx">Report</span>
</span></span><span class="line"><span class="cl">  <span class="nx">Minified</span> <span class="nx">Scripts</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/0.5578cfbb7e2e6688ddf5.js (sourcemap at 0.5578cfbb7e2e6688ddf5.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/1.08ce936a2efe46fada3a.js (sourcemap at 1.08ce936a2efe46fada3a.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/2.21a7baf07c2e2f7e0e2e.js (sourcemap at 2.21a7baf07c2e2f7e0e2e.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/3.31b60f7af161be6ebdd9.js (sourcemap at 3.31b60f7af161be6ebdd9.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/4.fb6e7da7da26fad2df3a.js (sourcemap at 4.fb6e7da7da26fad2df3a.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/5.ee4c344db81fc2458f9c.js (sourcemap at 5.ee4c344db81fc2458f9c.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/6.9079b1090416a666a327.js (sourcemap at 6.9079b1090416a666a327.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/app.ad01bb777553f9efe703.js (sourcemap at app.ad01bb777553f9efe703.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/manifest.380384094e7763635655.js (sourcemap at manifest.380384094e7763635655.js.map)</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/vendor.331b4cf7bdabb46a7655.js (sourcemap at vendor.331b4cf7bdabb46a7655.js.map)</span>
</span></span><span class="line"><span class="cl">  <span class="nx">Source</span> <span class="nx">Maps</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/0.5578cfbb7e2e6688ddf5.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/1.08ce936a2efe46fada3a.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/2.21a7baf07c2e2f7e0e2e.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/3.31b60f7af161be6ebdd9.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/4.fb6e7da7da26fad2df3a.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/5.ee4c344db81fc2458f9c.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/6.9079b1090416a666a327.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/app.ad01bb777553f9efe703.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/manifest.380384094e7763635655.js.map</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="err">/test/js/vendor.331b4cf7bdabb46a7655.js.map</span>
</span></span><span class="line"><span class="cl"><span class="nx">zlgweihao</span><span class="err">@</span><span class="nx">zlgweihao</span><span class="o">-</span><span class="nx">mac</span><span class="o">-</span><span class="nx">mini</span> <span class="nx">vue</span> <span class="o">%</span> 
</span></span></code></pre></div><p>此时，我们可以在Sentry在线系统上面查看到上传的sourcemap文件，如下图所示：</p>
</li>
</ol>
<p><img alt="6" loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/6.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>《梦幻花》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%A2%A6%E5%B9%BB%E8%8A%B1/</link>
      <pubDate>Mon, 22 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E6%A2%A6%E5%B9%BB%E8%8A%B1/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;如果厨师手艺不佳，就算原料再好也难成美食。&lt;/li&gt;
&lt;li&gt;他们的梦想就是能够早日买套自己的房子。&lt;/li&gt;
&lt;li&gt;有不少警车在现场，这里由警官负责维持治安。&lt;/li&gt;
&lt;li&gt;牵牛花市集有超过一百二十位业者设摊，真嗣和要介每年都走访每一个摊位，有时候还会和摊位老板简单地攀谈几句。但是，他们从来不买花，只是纯观赏而已。&lt;/li&gt;
&lt;li&gt;苍太无可奈何地看着整排牵牛花花盆，发现大部分牵牛花都很大，只是花都闭合起来。听说牵牛花只有早上才开花，他搞不懂看这些感觉上快要凋谢的花有什么乐趣可言。&lt;/li&gt;
&lt;li&gt;没想到有很多人在买花，摊位的老板告诉他们：“接下来花会越开越多。”每盆花上都挂着“入谷牵牛花市集”的牌子。似乎有很多人是为了这块牌子特地来这里买花的。&lt;/li&gt;
&lt;li&gt;走了一会儿，苍太的右脚越来越痛。小指头侧边被鞋子磨了。他今天穿了新球鞋，而且为了耍酷没穿袜子。&lt;/li&gt;
&lt;li&gt;很多事并不是只有唯一的答案，所以不必急着下结论。&lt;/li&gt;
&lt;li&gt;每个人都有想学的东西，只是并不容易找到而已，必须得费心寻找才行。&lt;/li&gt;
&lt;li&gt;因为至今为止没有发生任何事，就过度相信以后也不会有任何事发生。&lt;/li&gt;
&lt;li&gt;她突然想起那朵花，就是周治说，先不要上传到博客的黄花。不知道那朵花现在怎么样了。&lt;/li&gt;
&lt;li&gt;虽然你可能因为不愉快的经历，导致无法相信他人，但这个世界上有很多好人，绝对不要悲观，要对未来充满梦想。&lt;/li&gt;
&lt;li&gt;“我觉得我们两个人有点像，虽然坚定地走在自己选择的路上，却不知不觉迷失了方向。”&lt;/li&gt;
&lt;li&gt;“秋山太太用断茶的方式祈愿你们的研究获得成功，秋山先生在他太太死后才知道这件事，决定这辈子不再喝茶。&lt;/li&gt;
&lt;/ol&gt;</description>
      <content:encoded><![CDATA[<ol>
<li>如果厨师手艺不佳，就算原料再好也难成美食。</li>
<li>他们的梦想就是能够早日买套自己的房子。</li>
<li>有不少警车在现场，这里由警官负责维持治安。</li>
<li>牵牛花市集有超过一百二十位业者设摊，真嗣和要介每年都走访每一个摊位，有时候还会和摊位老板简单地攀谈几句。但是，他们从来不买花，只是纯观赏而已。</li>
<li>苍太无可奈何地看着整排牵牛花花盆，发现大部分牵牛花都很大，只是花都闭合起来。听说牵牛花只有早上才开花，他搞不懂看这些感觉上快要凋谢的花有什么乐趣可言。</li>
<li>没想到有很多人在买花，摊位的老板告诉他们：“接下来花会越开越多。”每盆花上都挂着“入谷牵牛花市集”的牌子。似乎有很多人是为了这块牌子特地来这里买花的。</li>
<li>走了一会儿，苍太的右脚越来越痛。小指头侧边被鞋子磨了。他今天穿了新球鞋，而且为了耍酷没穿袜子。</li>
<li>很多事并不是只有唯一的答案，所以不必急着下结论。</li>
<li>每个人都有想学的东西，只是并不容易找到而已，必须得费心寻找才行。</li>
<li>因为至今为止没有发生任何事，就过度相信以后也不会有任何事发生。</li>
<li>她突然想起那朵花，就是周治说，先不要上传到博客的黄花。不知道那朵花现在怎么样了。</li>
<li>虽然你可能因为不愉快的经历，导致无法相信他人，但这个世界上有很多好人，绝对不要悲观，要对未来充满梦想。</li>
<li>“我觉得我们两个人有点像，虽然坚定地走在自己选择的路上，却不知不觉迷失了方向。”</li>
<li>“秋山太太用断茶的方式祈愿你们的研究获得成功，秋山先生在他太太死后才知道这件事，决定这辈子不再喝茶。</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>《人生海海》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%BA%BA%E7%94%9F%E6%B5%B7%E6%B5%B7/</link>
      <pubDate>Fri, 19 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%BA%BA%E7%94%9F%E6%B5%B7%E6%B5%B7/</guid>
      <description>&lt;h2 id=&#34;点评&#34;&gt;点评&lt;/h2&gt;
&lt;p&gt;人生海海，十事九叹。&lt;/p&gt;
&lt;h2 id=&#34;第一部&#34;&gt;第一部&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;虫豸&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;逼仄&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;烟囱&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;簇新&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因此大家都讲太监不愧是聪明人，好像要做傻事，实际上是在打圆场，阴人阳人——老子和媒婆——都不得罪。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;笃定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;畦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解溲&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;指明他不是第一次这样救人，只是我是第一次看到。这年我十一岁，已经跑得比爷爷快，所以爷爷派我去叫上校，要不我也看不到。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上校讲：“是耶稣派我来救你的，你被我救活就是不该死。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;笤帚&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;神龛&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;楹联&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;犄角旮旯&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;胡髭&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一丘之貉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;姘头&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;麦秆&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;腐蚀&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有些草是毒草
有些人是敌人
有些山是高山的膝盖
有些人是革命的绊石
我们要在高山巅放歌
我们要在大海里畅游
革命不是请客吃饭
文化大革命就是好&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“他该难过的都难过了还有什么好难过的。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;阒静&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;蒋正南批斗会
蒋正南大概是上校名字吧，我不知道，应该是的吧。但自始至终，七嘴八舌，没有谁叫他名字&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“回去跟你爹讲，我要换套干净衣裳，他知道我衣服放在哪里。”一种命令的口气，好像我父亲是他亲兄弟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;沆瀣一气&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;爿&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;爷爷讲：“最毒妇人心，女人坏起来是个无底洞。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“你看，我刚开讲你就受不了了……”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我记得清楚，父亲交给我这件汗衫时，爷爷曾责备他，夜里蚊虫多，应该拿件长袖衬衫才对。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想到这里，我心头反而松宽下来，因为这跟我家没关系。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二部&#34;&gt;第二部&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;筲箕&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他吃酒又吃肉，完了告诉小瞎子，那几个字是：你妈是个大婊子。气得小瞎子要打他。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;掣肘&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;老保长接着讲，感觉蛮动感情的：“这村里人全死光光我都无所谓，只希望他别不得好死。如今这世道真他妈的作孽，把一个大好人糟蹋成这样，拖着老母亲四方流浪，要藏着躲着过日子。这都是小瞎子这畜生害的，要早二十几年我当着保长，必定把这畜生枪毙了。糟蹋一个好人就是罪，活该枪毙。你们不晓得他为国家立过多大功，又受过多少罪？那个罪过啊你们想不到的，生不如死啊！他是个英雄你们知道吧，只是……只是……怎么讲呢，人是有命的，他命苦，总被人糟蹋。这不，到今天还在吃苦，我真替他难过。”声音颤颤的，我怀疑他流泪了，屋里静得可以听到爷爷的喘气声。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们爱听瞎话，不爱听真话，正如大家互相不叫名字，爱叫绰号一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;玉秫剥落后，空芯子堆起来，散发出一种淡淡的谷物的草香，和这个夜晚是配的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对上校肚皮上的字也是这样，大家好像猜谜语，什么都不顾忌，乱猜，一下猜出多个底本，诸如：我是皇军一条狗；皇军万岁；皇军大大的好；我是汉奸我该死；太监是假汉奸是真，等等。好像在猜一句鬼话，说什么的都有。甚至有种说法，说那根本不是一句话，而是一张地图，地图上标的是当时上海军统特务的秘密联络图。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;七号讲她本是中国人，打小过继给日本人，才起个日本名。她继父可是个通天的大人物，汪精卫见了都要对他点头哈腰，端茶递水。就这样，因着继父的权势，加上人聪明漂亮能干，吃得开，吃得香，她在鬼子圈内可以上下通吃，杀人救人都是一两句话，稀松平常得很。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;摧枯拉朽&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“你回去告诉她，我对天发誓，老子除了自己被糟蹋外，没有糟蹋国家任何一个人一件事，有一个假字，天打雷劈！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你跟她什么都别讲，就讲我一切都好的，我信里也是这么写的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果道理可以当钞票用，我们家笃定是全村最富裕的人家。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真是滑稽，整日子对人讲这个大道理那个大道德，结果自己畜生都不如。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事情很快搞清楚，确实是爷爷揭发的上校，他虽然不知道上校躲在大陈村，但他派三姑跟踪了父亲，就知道了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;爷爷像小孩子一样听话，咚地跪在耶稣面前，呜呜哭，一边流眼泪鼻涕，一边骂自己该死该死，张口骂，闭口哭，一点不要体面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;融雪的日子比下雪的日子冷&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;桌子是有些烂，只要人不烂就无所谓。从前有个人，家里很穷，点不起油灯，他凿壁借光，照样读好书，考上古代的大学，成为一朝朝人的佳话。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大家知道，在试卷上叉代表做错题，这么多叉叉，没一个钩，叫剃光头，吃鸭蛋，考零分；在大字报上，叉代表坏蛋、反革命分子、人民公敌，群众要群起攻之，甚至要杀头。但在课桌上代表什么呢？我不知道，希望你知道。你要不知道可以回家问你爷爷，他是什么都知晓的老巫头。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所有父母都爱自己的孩子，像所有树都爱阳光一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对我好言好待十六年，却没有得到我一分钟的话别。爷爷讲过，一分钟的和好抵得过一辈子的仇恨，我和他正好反过来。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第三部&#34;&gt;第三部&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;报纸上说，生活不是你活过的样子，而是你记住的样子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这人正是小瞎子父亲，瞎佬，他什么也看不见，那天却挤在台子最前头，瞪着两只白乌珠，冲着大家高喊，引来一阵回应。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;猫是畜生，不知人间沧桑，只是年迈得走不动了，要用篮子拎着。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我当过志愿军，在朝鲜。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有雷霆面若静湖&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你怎么胖得像一头过年猪了，可以杀了过大年（元宵）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我说：你对一个你完全不了解的人谈情说爱，是对自己的不负责任。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他变成了自己想要的人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“有时我觉得他现在这样子蛮好的，可以忘掉那些脏东西，可以照自己的意愿改掉这些字。他这辈子如果只有一个愿望，我想一定是这个，把那些脏东西抹掉，改成现在这样。这个愿望死都离不开他，但也是死都实现不了的，只有现在这样子，失忆了，才能实现。”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="点评">点评</h2>
<p>人生海海，十事九叹。</p>
<h2 id="第一部">第一部</h2>
<ul>
<li>
<p>虫豸</p>
</li>
<li>
<p>逼仄</p>
</li>
<li>
<p>烟囱</p>
</li>
<li>
<p>簇新</p>
</li>
<li>
<p>因此大家都讲太监不愧是聪明人，好像要做傻事，实际上是在打圆场，阴人阳人——老子和媒婆——都不得罪。</p>
</li>
<li>
<p>笃定</p>
</li>
<li>
<p>畦</p>
</li>
<li>
<p>解溲</p>
</li>
<li>
<p>指明他不是第一次这样救人，只是我是第一次看到。这年我十一岁，已经跑得比爷爷快，所以爷爷派我去叫上校，要不我也看不到。</p>
</li>
<li>
<p>上校讲：“是耶稣派我来救你的，你被我救活就是不该死。”</p>
</li>
<li>
<p>笤帚</p>
</li>
<li>
<p>神龛</p>
</li>
<li>
<p>楹联</p>
</li>
<li>
<p>犄角旮旯</p>
</li>
<li>
<p>胡髭</p>
</li>
<li>
<p>一丘之貉</p>
</li>
<li>
<p>姘头</p>
</li>
<li>
<p>麦秆</p>
</li>
<li>
<p>腐蚀</p>
</li>
<li>
<p>有些草是毒草
有些人是敌人
有些山是高山的膝盖
有些人是革命的绊石
我们要在高山巅放歌
我们要在大海里畅游
革命不是请客吃饭
文化大革命就是好</p>
</li>
<li>
<p>“他该难过的都难过了还有什么好难过的。”</p>
</li>
<li>
<p>阒静</p>
</li>
<li>
<p>蒋正南批斗会
蒋正南大概是上校名字吧，我不知道，应该是的吧。但自始至终，七嘴八舌，没有谁叫他名字</p>
</li>
<li>
<p>“回去跟你爹讲，我要换套干净衣裳，他知道我衣服放在哪里。”一种命令的口气，好像我父亲是他亲兄弟。</p>
</li>
<li>
<p>沆瀣一气</p>
</li>
<li>
<p>爿</p>
</li>
<li>
<p>爷爷讲：“最毒妇人心，女人坏起来是个无底洞。”</p>
</li>
<li>
<p>“你看，我刚开讲你就受不了了……”</p>
</li>
<li>
<p>我记得清楚，父亲交给我这件汗衫时，爷爷曾责备他，夜里蚊虫多，应该拿件长袖衬衫才对。</p>
</li>
<li>
<p>想到这里，我心头反而松宽下来，因为这跟我家没关系。</p>
</li>
</ul>
<h2 id="第二部">第二部</h2>
<ul>
<li>
<p>筲箕</p>
</li>
<li>
<p>他吃酒又吃肉，完了告诉小瞎子，那几个字是：你妈是个大婊子。气得小瞎子要打他。</p>
</li>
<li>
<p>掣肘</p>
</li>
<li>
<p>老保长接着讲，感觉蛮动感情的：“这村里人全死光光我都无所谓，只希望他别不得好死。如今这世道真他妈的作孽，把一个大好人糟蹋成这样，拖着老母亲四方流浪，要藏着躲着过日子。这都是小瞎子这畜生害的，要早二十几年我当着保长，必定把这畜生枪毙了。糟蹋一个好人就是罪，活该枪毙。你们不晓得他为国家立过多大功，又受过多少罪？那个罪过啊你们想不到的，生不如死啊！他是个英雄你们知道吧，只是……只是……怎么讲呢，人是有命的，他命苦，总被人糟蹋。这不，到今天还在吃苦，我真替他难过。”声音颤颤的，我怀疑他流泪了，屋里静得可以听到爷爷的喘气声。</p>
</li>
<li>
<p>人们爱听瞎话，不爱听真话，正如大家互相不叫名字，爱叫绰号一样。</p>
</li>
<li>
<p>玉秫剥落后，空芯子堆起来，散发出一种淡淡的谷物的草香，和这个夜晚是配的。</p>
</li>
<li>
<p>对上校肚皮上的字也是这样，大家好像猜谜语，什么都不顾忌，乱猜，一下猜出多个底本，诸如：我是皇军一条狗；皇军万岁；皇军大大的好；我是汉奸我该死；太监是假汉奸是真，等等。好像在猜一句鬼话，说什么的都有。甚至有种说法，说那根本不是一句话，而是一张地图，地图上标的是当时上海军统特务的秘密联络图。</p>
</li>
<li>
<p>七号讲她本是中国人，打小过继给日本人，才起个日本名。她继父可是个通天的大人物，汪精卫见了都要对他点头哈腰，端茶递水。就这样，因着继父的权势，加上人聪明漂亮能干，吃得开，吃得香，她在鬼子圈内可以上下通吃，杀人救人都是一两句话，稀松平常得很。</p>
</li>
<li>
<p>摧枯拉朽</p>
</li>
<li>
<p>“你回去告诉她，我对天发誓，老子除了自己被糟蹋外，没有糟蹋国家任何一个人一件事，有一个假字，天打雷劈！”</p>
</li>
<li>
<p>你跟她什么都别讲，就讲我一切都好的，我信里也是这么写的。</p>
</li>
<li>
<p>如果道理可以当钞票用，我们家笃定是全村最富裕的人家。</p>
</li>
<li>
<p>真是滑稽，整日子对人讲这个大道理那个大道德，结果自己畜生都不如。”</p>
</li>
<li>
<p>事情很快搞清楚，确实是爷爷揭发的上校，他虽然不知道上校躲在大陈村，但他派三姑跟踪了父亲，就知道了。</p>
</li>
<li>
<p>爷爷像小孩子一样听话，咚地跪在耶稣面前，呜呜哭，一边流眼泪鼻涕，一边骂自己该死该死，张口骂，闭口哭，一点不要体面。</p>
</li>
<li>
<p>融雪的日子比下雪的日子冷</p>
</li>
<li>
<p>桌子是有些烂，只要人不烂就无所谓。从前有个人，家里很穷，点不起油灯，他凿壁借光，照样读好书，考上古代的大学，成为一朝朝人的佳话。</p>
</li>
<li>
<p>大家知道，在试卷上叉代表做错题，这么多叉叉，没一个钩，叫剃光头，吃鸭蛋，考零分；在大字报上，叉代表坏蛋、反革命分子、人民公敌，群众要群起攻之，甚至要杀头。但在课桌上代表什么呢？我不知道，希望你知道。你要不知道可以回家问你爷爷，他是什么都知晓的老巫头。</p>
</li>
<li>
<p>所有父母都爱自己的孩子，像所有树都爱阳光一样。</p>
</li>
<li>
<p>对我好言好待十六年，却没有得到我一分钟的话别。爷爷讲过，一分钟的和好抵得过一辈子的仇恨，我和他正好反过来。</p>
</li>
</ul>
<h2 id="第三部">第三部</h2>
<ul>
<li>
<p>报纸上说，生活不是你活过的样子，而是你记住的样子。</p>
</li>
<li>
<p>这人正是小瞎子父亲，瞎佬，他什么也看不见，那天却挤在台子最前头，瞪着两只白乌珠，冲着大家高喊，引来一阵回应。</p>
</li>
<li>
<p>猫是畜生，不知人间沧桑，只是年迈得走不动了，要用篮子拎着。</p>
</li>
<li>
<p>我当过志愿军，在朝鲜。</p>
</li>
<li>
<p>有雷霆面若静湖</p>
</li>
<li>
<p>你怎么胖得像一头过年猪了，可以杀了过大年（元宵）。</p>
</li>
<li>
<p>我说：你对一个你完全不了解的人谈情说爱，是对自己的不负责任。</p>
</li>
<li>
<p>他变成了自己想要的人。</p>
</li>
<li>
<p>“有时我觉得他现在这样子蛮好的，可以忘掉那些脏东西，可以照自己的意愿改掉这些字。他这辈子如果只有一个愿望，我想一定是这个，把那些脏东西抹掉，改成现在这样。这个愿望死都离不开他，但也是死都实现不了的，只有现在这样子，失忆了，才能实现。”</p>
</li>
<li>
<p>她说：“他理解不了，永远。”</p>
</li>
<li>
<p>“会的，一定会的。”</p>
</li>
<li>
<p>世上只有一种英雄主义，就是在认清了生活真相后依然热爱生活。</p>
</li>
<li>
<p>刚进厂时我有位师傅，是个女的，比我大两岁，父母曾是浙大教授，母亲是福建泉州人。她打小在外婆家长大，会说一口闽南话，也染上当地一些口语，比如“天乌乌”“人生海海”什么的。我们每天工作十二个小时，一个月下来，我十个手指头被齿状的鞋扣咬得血淋淋，当牛作马的生活让我对生活只有恨，没有爱——爱被我恨死了，葬在大海里。</p>
</li>
<li>
<p>如果因为生活苦而去死，轮不到你，我排在你十万八千里前。</p>
</li>
<li>
<p>记住，人生海海，敢死不叫勇气，活着才需要勇气</p>
</li>
<li>
<p>没有完美的人生，不完美才是人生。</p>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>《中层领导最不能犯的86个错误》</title>
      <link>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%AD%E5%B1%82%E9%A2%86%E5%AF%BC%E6%9C%80%E4%B8%8D%E8%83%BD%E7%8A%AF%E7%9A%8486%E4%B8%AA%E9%94%99%E8%AF%AF/</link>
      <pubDate>Sun, 11 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E8%AF%BB%E4%B9%A6%E6%91%98%E8%A6%81/%E4%B8%AD%E5%B1%82%E9%A2%86%E5%AF%BC%E6%9C%80%E4%B8%8D%E8%83%BD%E7%8A%AF%E7%9A%8486%E4%B8%AA%E9%94%99%E8%AF%AF/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;要做优秀的领导者，先做杰出的追随者&lt;/li&gt;
&lt;li&gt;其实从管理的角度来看，若你的上级领导表现不好，作为你的上级领导的上级领导，他们一般会认为是整个部门都不行，而不会认为领导不行，作为下级员工的你即使非常优秀，公司一般也只会从其他部门调换领导过来任职，而不会从他们所认为的一群比较差的下级员工中提拔干部。&lt;/li&gt;
&lt;li&gt;对领导交办的工作要严肃认真处理，保证按时按要求完成，并要及时汇报完成情况，而不能等领导查问。&lt;/li&gt;
&lt;li&gt;我成功的秘诀就是擅长及时准确地向领导汇报工作。&lt;/li&gt;
&lt;li&gt;领导都有一个习惯，那就是注重结果，而不是过程。&lt;/li&gt;
&lt;li&gt;发现问题及时请示。&lt;/li&gt;
&lt;li&gt;一个成功的中层领导不仅要让你的下级员工们向你及时地做工作报告，也要要求自己做到及时地向上级领导汇报的工作。&lt;/li&gt;
&lt;li&gt;不在其位就不能谋其政。&lt;/li&gt;
&lt;li&gt;越位的最大坏处就是与上级领导发生种种矛盾，难以得到上级领导的各种支持，而且往往会损害自己的名誉，招致上级领导的怨恨不满。所以，但凡有胆有识、有才有能者，都是以恪尽职守而非越位来实现自己的抱负的。&lt;/li&gt;
&lt;li&gt;事怕有心人。&lt;/li&gt;
&lt;li&gt;下级员工要清楚上级领导的意图，设身处地地站在他的立场上考虑问题。&lt;/li&gt;
&lt;li&gt;成功学家普遍认为，提升自我的最佳方法就是帮助他人。&lt;/li&gt;
&lt;li&gt;曾有一位从事过多年人事管理工作的管理者在谈起自己招聘人的心得时说：“在面谈时，最能体现出一个人思想是否成熟、心胸是否宽大的，是他对刚刚离开的那份工作的看法和评论。前来应聘的人，如果只说过去雇主的坏话，对过去的上级领导恶意中伤，这种人我是无论如何也不会考虑的。”“也许一些人确实是因为无法忍受上级领导的压迫而离职的，”他继续说，“然而，聪明的做法应该是，不要去谈论那些不愉快的旧事，更不要对自己所遭受的不公正待遇耿耿于怀。”&lt;/li&gt;
&lt;li&gt;为上级领导挡住麻烦是一件得罪人的事，但同样也是一门艺术。&lt;/li&gt;
&lt;li&gt;低调，不是一种简单的领导方法或模式，而是一种领导风格。那些不引人注目、远离镁光灯的人，往往通过他们谨慎小心、深思熟虑、切实的行动，对解决艰巨的问题起到决定性的作用。&lt;/li&gt;
&lt;li&gt;偶尔让工作出现点小瑕疵。&lt;/li&gt;
&lt;li&gt;这只黑猫就是一只聪明的黑猫。它知道身为下级员工，有时为上级领导作出恰当的“牺牲”，是一种有回报的投资。它先把老鼠追得筋疲力尽，再把它放掉，让上级领导轻而易举地抓到它。上级领导得到了老鼠，心里肯定也明白到底怎么回事。黑猫虽然没有捉到老鼠，却得到比一只老鼠更大的实惠，那就是获得了上级领导的信任。&lt;/li&gt;
&lt;li&gt;一个优秀的中层管理者，必须从学会服从开始。&lt;/li&gt;
&lt;li&gt;学习如逆水行舟，不进则退。&lt;/li&gt;
&lt;li&gt;如果什么事情都让你做完了做满了，那还要他这个上级领导做什么？&lt;/li&gt;
&lt;li&gt;事实上，每位上级领导心中都对中层领导有强烈的期望，那就是：不要只做我告诉你的事，运用你的判断力，为公司的利益，去做需要做的事。这一点每个中层领导都应该知道。不过，很少有公司清楚明白地说明过。&lt;/li&gt;
&lt;li&gt;小傅自动留在办公室，使上级领导随时可以看到他，并且诚心诚意为他服务。这样做让自己获得了额外的工资吗？没有，但是，他获得了更多的机会，使自己赢得上级领导的关注，最终获得了提升。&lt;/li&gt;
&lt;li&gt;重要的是如何将问题解决。&lt;/li&gt;
&lt;li&gt;只要你能够做到“不用上级领导交代”，自己去思考哪些事情是对公司有利的，你的才能早晚会被上级领导发现。&lt;/li&gt;
&lt;li&gt;做事不用上级领导交代是一种极珍贵的素养。&lt;/li&gt;
&lt;li&gt;我还能为上级领导做些什么。&lt;/li&gt;
&lt;li&gt;成功者除了做好本职工作以外，还需要做一些不同寻常的事情来培养自己的能力，引起人们的关注。&lt;/li&gt;
&lt;li&gt;对于公司发展有推动作用的工作。&lt;/li&gt;
&lt;li&gt;消极地等待上级领导对某个问题的注意，是不负责任的。&lt;/li&gt;
&lt;li&gt;永远不要把“要我做”当作工作的前提，“我要做”才能实现高绩效。&lt;/li&gt;
&lt;li&gt;主动就是不用上级领导告诉你，你都可以出色地完成工作。这也是优秀中层领导之所以优秀、之所以绩效高的最根本原因。&lt;/li&gt;
&lt;li&gt;“等待命令”是对自己潜能的“画地为牢”，从一开始就注定了平庸的结局。&lt;/li&gt;
&lt;li&gt;一个优秀的员工所表现出来的主动性，不仅是能坚持自己的想法并主动完成它，还应该主动承担自己工作以外的责任。&lt;/li&gt;
&lt;li&gt;企业想得到的是结果。忙碌是不值钱的，只有忙出结果才值钱。&lt;/li&gt;
&lt;li&gt;没有结果的付出只是在做无用功。&lt;/li&gt;
&lt;li&gt;上级领导心中最高分数的下级员工，一定是那些能做出突出成绩的员工。因此，中层领导一定要把自己的工作当成一项业务来做，真正做出卓越的成绩来，而不能仅盲目地为做事而做事，不关心效果。看重“功劳”而不是“苦劳”，是每一个想取得成功的中层领导必须具备的基本理念。&lt;/li&gt;
&lt;li&gt;人生来就有缺陷，大多数人都有嫉妒之心，无法面对那些比自己优秀的人。这一点正是阻挡大多数人迈向成功的绊脚石。成功学家告诉我们，提升自我的最佳方法就是帮助他人出人头地。当你努力地帮助他人时，人们一定会回报你。&lt;/li&gt;
&lt;li&gt;待人如己。&lt;/li&gt;
&lt;li&gt;不要抱怨玫瑰有刺，要为荆棘中有玫瑰而感恩。&lt;/li&gt;
&lt;li&gt;作为一名中层领导，不能凭印象用人，要乐于用比自己强的人，以他们的才华铸就自己事业的辉煌。对中层领导来说，要想真正做到识人，就要做到：观其行，听其言，品其性，辨其心。观其行：一个人在特定的思想品德、道德情操支配下表现出来的行动，别人都能看得一清二楚。中层领导通过察言观色来揣摩对方的行为，可以捕捉其内心活动的蛛丝马迹，以及探索引发这类行为的心理因素。听其言：语言能充分展示出人的职业、身份、知识水平。中层领导根据一个人每天的谈话，能够判断出他每天的工作业绩、效率，更能了解他的情绪如何。张口说话，就是在为自己画像。品其性：不同的性格决定不同的命运。性格不是与生俱来的，而是后天塑造的。塑造性格的主动权不在命运手中，在人的手中。一个人重塑自己的性格，也就把握住了自己的命运。辨其心：天地之所以成为天地，就是有了人；人之所以成为人，就是有了心。心是圣洁，人生就圣洁；心是恶毒，人生就恶毒。&lt;/li&gt;
&lt;li&gt;OEC管理法的核心是对工作的分解强调“三个一”，即分解量化到每一个人、每一天、每一项工作。在海尔，大到机器设备，小到一块玻璃，都清楚标明事件的责任人与事件检查的监督人，都有详细的工作内容及考核标准，如此形成环环相扣的责任链，做到了“奖有理，罚有据”。&lt;/li&gt;
&lt;li&gt;你的员工绝对不会做你所希望做的事情，他只会做你要求与检查他做的事情。中层领导如果只限于把工作布置下去，完全靠下级员工自觉地去完成，工作是一定要出问题的。工作布置才仅仅是第一步，之后就要坚持不间断地检查考核，通过检查考核、监督指导促进各项工作的完成。&lt;/li&gt;
&lt;li&gt;他要的只是一个最终结果。&lt;/li&gt;
&lt;li&gt;当你提携了某人，于情于理，他一定不会忘记你的提携之恩，当他有了一定的地位，或者当你出现困难的时候，他一定会为你效犬马之劳，至少他欠你一份人情，而这份情他总是要还的。&lt;/li&gt;
&lt;li&gt;一个真正想成就事业的中层领导是不怕下级员工强过自己的，他明白自己可能不是智商最高的，但他要网罗那些智商最高的人为他所用，当天下英雄都收入其囊中的时候，他也就能成就伟大的事业了。&lt;/li&gt;
&lt;li&gt;中层领导在选拔和使用人才时，一定要本着“德才兼备”的原则，所谓“德才兼备”就是既要有好的思想品质，又要有较强的工作能力。在职场上，优秀的员工都是这样一些人：无论竞争多么激烈，工作多么辛苦，从来不会放弃做人做事的道德，他们觉得这是一个人在职场上最基本的素质。&lt;/li&gt;
&lt;li&gt;小胜靠勤，大胜靠德。&lt;/li&gt;
&lt;li&gt;柯达公司选择人才的标准是“术、才、德”：“术”是指一个人的专业技能；“才”是指一个人的才华，是否聪明、能干，有谋略和胆识；“德”是一个人的品行、修养以及对公司价值观的遵守和执行。华硕在选拔人才时，注重五大指标——谦、诚、勤、敏、勇。联想人力资源部负责人曾直言：“人才要先学会做人，人才与企业发展最关键的结合点在于企业要有良好的用人战略，而人才要有良好的道德品质。我们选拔人才的标准是能够吃苦耐劳、有韧性、上进心强，能够自我激励、迎难而上。”&lt;/li&gt;
&lt;li&gt;采用情景面试法测评应聘人员的人格和特性。&lt;/li&gt;
&lt;li&gt;做人做事是一门艺术，更是一门学问。&lt;/li&gt;
&lt;li&gt;当说服下级员工时，最好不要一开始就用复杂的推理和争论。人与人之间思想的交流，需要经过感情的闸门。感情的隔阂没有消除。你纵使有千万条的道理，他也会听不进去的。只有首先动之以情，缩小彼此心灵之间的距离，打开相互沟通思想的大门，才能晓之以理，晓以大义，这样也就能收到理想的沟通效果。&lt;/li&gt;
&lt;li&gt;与下级员工先作感情的沟通，再将说理逐渐的融于情感之中，这才是最佳的沟通方式。&lt;/li&gt;
&lt;li&gt;企业中层领导必须深刻理解：融洽地沟通，重要的是建立感情。&lt;/li&gt;
&lt;li&gt;下级员工这种好感和信赖感的形成，有赖于中层领导平时不断施加影响，也就是要进行我们通常所说的“感情投资”。&lt;/li&gt;
&lt;li&gt;一个中层领导对于下级员工的影响力、指挥力并非完全来自于他所正式拥有的权力。我们把源于正式权力的影响力称为职权影响力。对于一个中层领导来说，这是他对下级员工施加影响的基础。如果没有这个基础，这个中层领导就只能是个非正式的“领导者”。&lt;/li&gt;
&lt;li&gt;作为一个中层领导，办事要公正，要不断提高自己的品德修养和业务水平，尊重下级员工，创造一个能让下级员工充分发挥才干的环境，培养相互间的好感。&lt;/li&gt;
&lt;li&gt;麦当劳（日本）董事长滕田田在其所著的畅销书《我是最会赚钱的人物》中说：“我对我的所有投资分类研究回报率，结果发现感情投资是在所有投资中花费最少、回报率最高的投资。”&lt;/li&gt;
&lt;li&gt;更好的管理策略是顺应下级员工的情绪流转，对下级员工进行适当的感情投资。&lt;/li&gt;
&lt;li&gt;建立良好的沟通机制，平时多了解下级员工的生活情况。&lt;/li&gt;
&lt;li&gt;关心下级员工的家庭成员。&lt;/li&gt;
&lt;li&gt;个人素质也是一个重要因素。&lt;/li&gt;
&lt;li&gt;有问题的下级员工往往是管理上棘手的一环。他们的工作习惯、态度，不只影响他们本身的工作效率，还动辄将个人情绪发泄，容易影响到其他下级员工。&lt;/li&gt;
&lt;li&gt;不应没完没了地追究责任，而是要把解决当前的问题放在第一位。&lt;/li&gt;
&lt;li&gt;开会的目的不是听你们作检讨，而是要你们拿出一个解决问题的方案，也就是说，我们应该做什么才能保证以后不发生和少发生这样的事情。&lt;/li&gt;
&lt;li&gt;第一，建立销售部和技术部定期交换客户情况制度；第二，责成人事部安排下级员工培训，并提出新的工程师招聘计划；第三，对客户的投诉制定出切实有效的处理流程。&lt;/li&gt;
&lt;li&gt;在问题发生的时候，作为企业的中层领导首先要做的是什么。有的时候，的确必须搞清楚事情发生中的责任问题，但是并不是每一件事都要把细节搞清楚。最重要的是要解决问题，给出解决问题的方案，不然的话，吵了半天，问题依然存在。&lt;/li&gt;
&lt;li&gt;作为一个中层领导经常会感到“累”，这多是因为中层领导“事必躬亲，干涉下级员工的工作”或追求“尽善尽美”，唯恐出现这样那样的问题而终日处心积虑的结果。&lt;/li&gt;
&lt;li&gt;要想实现轻松、高效的管理，下面几点是中层领导应该做的。&lt;/li&gt;
&