<?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>生活指南 on 张天赐的小世界</title>
    <link>https://www.zhangtianci.cn/categories/%E7%94%9F%E6%B4%BB%E6%8C%87%E5%8D%97/</link>
    <description>Recent content in 生活指南 on 张天赐的小世界</description>
    <generator>Hugo -- 0.151.0</generator>
    <language>zh-cn</language>
    <copyright>本博客的作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可</copyright>
    <lastBuildDate>Sun, 12 Oct 2025 15:08:00 +0800</lastBuildDate>
    <atom:link href="https://www.zhangtianci.cn/categories/%E7%94%9F%E6%B4%BB%E6%8C%87%E5%8D%97/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>大学毕业租房攻略</title>
      <link>https://www.zhangtianci.cn/posts/%E5%A4%A7%E5%AD%A6%E6%AF%95%E4%B8%9A%E7%A7%9F%E6%88%BF%E6%94%BB%E7%95%A5/</link>
      <pubDate>Sun, 26 Sep 2021 22:34:00 +0800</pubDate>
      <guid>https://www.zhangtianci.cn/posts/%E5%A4%A7%E5%AD%A6%E6%AF%95%E4%B8%9A%E7%A7%9F%E6%88%BF%E6%94%BB%E7%95%A5/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;来北京快要一年了，现在回想起这一年来还是有点感慨。其中比较遗憾的是房子租的不太满意，踩了不少坑。&lt;/p&gt;
&lt;p&gt;最近决定房子到期后不再续租，租一个新的房子。正好整理一下租房时需要注意的坑。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>来北京快要一年了，现在回想起这一年来还是有点感慨。其中比较遗憾的是房子租的不太满意，踩了不少坑。</p>
<p>最近决定房子到期后不再续租，租一个新的房子。正好整理一下租房时需要注意的坑。</p>
<h1 id="租房注意事项">租房注意事项</h1>
<h2 id="合租室友">合租室友</h2>
<p>为什么这一条单独放在第一个说？因为一个不好的室友，再好的房子也会让你痛苦不堪。</p>
<p>一定要确认以下内容：</p>
<ol>
<li>室友不是无业游民；</li>
<li>室友作息时间基本和你一致；</li>
<li>室友卫生情况你能不能接受（可以观察她用的卫生间、厨房及其房间的卫生情况判断）；</li>
<li>性别最好是同性；</li>
</ol>
<p>这里说一下第四条，生活习惯、生理特性的不同会让上班本来就很疲惫的你雪上加霜。</p>
<p>女生头发较长，掉在地上很明显。那就意味着想和男生保持一样的整洁度，女生要更勤快一点（男的正在秃顶过程中除外）。卫生间女生需要摆一个垃圾桶，男生不用。女生喜欢在房间弄些香香的东西，男生习惯保持原味。</p>
<h2 id="费用">费用</h2>
<h3 id="房租">房租</h3>
<p>首先当然要考虑清楚自己能有多少预算用来租房子。</p>
<p>我认为，房租占工资的 20% ~ 35% 左右都可接受。比如刚毕业的大学生来北漂，假如一个月 6000 的实习工资，那可以考虑租 1200 ~ 2100 的房子。房租高过这个范围那就有点超过你的承受能力了，要慎重考虑。要给自己留下吃饭、生病、同事聚会、出去玩耍和买买买等等的预算，小心变成一个月光族。</p>
<h3 id="生活费用">生活费用</h3>
<p>除房租外，还要考虑水、电、网、燃气、暖气和物业费。</p>
<p>其中常见的是水、电、网和燃气自付，暖气和物业费房东出。要注意商水商电可比你想象的贵。尤其是夏天开空调，舍友是个无业游民并且半夜不睡觉，会比民水民电贵 3 ~ 4 倍。</p>
<h3 id="中介费">中介费</h3>
<p>这个费用的坑就比较多了，大多数中介是收一个月房租作为中介费。</p>
<p>万万不可在签合同前交出任何看房、中介等等各种费用。万一在看房途中觉得房租不好，钱大概率是要不回来的。</p>
<p>建议在来北京前，可以问问公司同事房源、转租信息。这是免中介费的好方法。</p>
<h2 id="设施">设施</h2>
<p>看房时，讲究就比较多了，要留意的地方也比较多。</p>
<h3 id="房屋结构">房屋结构</h3>
<p>需确认是否朝阳，阳台是否方便晒洗衣服，隔音情况如何，通风情况如何，插座有几个，插座位置是否合适。</p>
<p>窗户朝北冬天较冷，朝西夏天太晒，朝东下午太暗，结合上班时间考虑，需要注意自己能接受哪种。</p>
<h3 id="电器">电器</h3>
<p>是否有空调、洗衣机、冰箱等必备电器，是否有宽带，要检查上述电器及网络能否正常使用。</p>
<h3 id="屋内设施">屋内设施</h3>
<p>衣柜，桌椅，窗户，暖气片，沙发，床垫，床板，地砖，门是否正常和老旧。</p>
<p>要重点留意卧室窗户是否漏风，不严实会导致冬冷夏热，空调会更费电。</p>
<h3 id="洗漱间">洗漱间</h3>
<p>卫浴太阳能、热水 24 h，检查是否老旧，淋浴头和水龙头等等会不会漏水，地漏是否可以正常排水，马桶水压、流速和流量足不足。</p>
<h3 id="其他">其他</h3>
<p>在室内的手机信号如何，宽带网速快不快，稳定不稳定，如果是顶楼房顶会不会漏水，5 楼及以上的楼层有没有电梯。</p>
<h2 id="周边环境">周边环境</h2>
<p>小区周围有没有地铁、公交、饭店、药店、商场超市、菜市场、公园等等。</p>
<h2 id="看房">看房</h2>
<p>再次注意，没有签合同不交任何费用，不要隔断间。</p>
<p>最好看两次房子，白天看采光和交通，晚上看隔音、照明和小区安全性。</p>
<h2 id="合同">合同</h2>
<p>注意，签合同是最后一步，要确保上面得内容全部一一确认自己可以接受。</p>
<p>合同一定要仔细看，别不好意思。</p>
<p>下面事项请考虑周全：</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>审核房产证明，并要求房东身份证复印件一份供租客留底。基于公平，租客也可给房东留底身份证复印件一份。因为缺少了中介环节，所以一定要房东将身份证复印件留下来，以防万一。除上述之外，无论是哪种签约方式，还要注意两个共同的问题：不要向没有房东转租许可的二房东租房。没签约之前，绝不能交房租。交押金之后，一定要房东开具收据。</li>
<li>谈租房条件的时候，别忘了说清楚电器非人为故障由谁负责维修，一般房东都会答应负责维修费，谈好请写进合同。明确后续老化等问题的责任，必要时录像、录音。</li>
</ol>
<h1 id="最后">最后</h1>
<p>以上内容其实难以一一做到，能做到一大半就可以租一个满意的房子了。</p>
<p>普通人没那么坏，房子的优缺点不会特意瞒着你，欺骗你。只是自己要留一个心眼，我们不去害人，但也要保证自己的利益。</p>
]]></content:encoded>
    </item>
    <item>
      <title>月度开销记录方式分享</title>
      <link>https://www.zhangtianci.cn/posts/%E6%9C%88%E5%BA%A6%E5%BC%80%E9%94%80%E8%AE%B0%E5%BD%95%E6%96%B9%E5%BC%8F%E5%88%86%E4%BA%AB/</link>
      <pubDate>Wed, 01 Sep 2021 19:23:00 +0800</pubDate>
      <guid>https://www.zhangtianci.cn/posts/%E6%9C%88%E5%BA%A6%E5%BC%80%E9%94%80%E8%AE%B0%E5%BD%95%E6%96%B9%E5%BC%8F%E5%88%86%E4%BA%AB/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;h1 id=&#34;简介&#34;&gt;简介&lt;/h1&gt;
&lt;p&gt;现在消费主义横行，随便刷刷新闻，看看短视频，就很容易产生消费冲动。为了避免开销过大，成为月光族，做好预算和养成记账习惯可以保证在不降低生活幸福感的前提下，实现理性消费，提高生活品质。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<h1 id="简介">简介</h1>
<p>现在消费主义横行，随便刷刷新闻，看看短视频，就很容易产生消费冲动。为了避免开销过大，成为月光族，做好预算和养成记账习惯可以保证在不降低生活幸福感的前提下，实现理性消费，提高生活品质。</p>
<p>下面分享一下我大学和现在用的记账模板。</p>
<h1 id="大学记账模板">大学记账模板</h1>
<h2 id="模板介绍">模板介绍</h2>
<p><img alt="收入和支出.webp" loading="lazy" src="../../images/%E6%94%B6%E5%85%A5%E5%92%8C%E6%94%AF%E5%87%BA.webp"></p>
<p>主要使用学期费用这一列按学期来做预算，如果这个月有其他无法预计的支出则记录在每月支出中。</p>
<p>每月收入则是父母给的生活费以及其他收入。</p>
<p><img alt="我的大学预算.webp" loading="lazy" src="../../images/%E6%88%91%E7%9A%84%E5%A4%A7%E5%AD%A6%E9%A2%84%E7%AE%97.webp"></p>
<p>根据以上数据生成一个简单的图表，主要看盈余来考虑下个月大概还能花多少钱。</p>
<p>我这个模板还算好用吧，按学期做规划比较方便。</p>
<h1 id="毕业后记账模板">毕业后记账模板</h1>
<h2 id="模板介绍-1">模板介绍</h2>
<p><img alt="交易.webp" loading="lazy" src="../../images/%E4%BA%A4%E6%98%93.webp"></p>
<p>因为毕业后消费较为复杂，所以做了自定义类别。</p>
<p><img alt="汇总.webp" loading="lazy" src="../../images/%E6%B1%87%E6%80%BB.webp"></p>
<p>这个模板主要是根据大学模板的缺点改良来的。</p>
<p>汇总这里没做可视化数据表，感觉没什么意义。只留下了我比较关心的几个数字，比如本月存款和存款增长百分比。</p>
<p>其他数据和可视化数据表等我认为需要用到的时候我再加上吧。目前我认为显示这些就足够了。</p>
<h1 id="目前在用的记账软件">目前在用的记账软件</h1>
<p>==请注意，我并不推荐任何记账软件。==</p>
<p>国家对个人信息这一块的监管和法律基本等于空白，因此软件方早晚有一天会拿你的信息通过各种途径去盈利，去做用户画像、个性化广告等等。</p>
<p>但是现在移动支付入口基本掌握在微信和支付宝手中，其实你的消费习惯、能力等信息早已经被泄露分析了。那么这类软件是否值得信赖，要不要用，如何使用，要慎重考虑。</p>
<h2 id="软件介绍">软件介绍</h2>
<p>之所以没有继续使用 Excel，是因为工作一天回到家，实在是不想开电脑进行记录了。移动端的 Excel 操作体验又差，因此需要一个移动端的记账软件。</p>
<p>现在市面上的记账软件或多或少都有社区、金融理财等和记账不相关的功能。为了商业化，可以理解，但是不能接受。其实我们只需要一个专注于记账功能的软件就够了。</p>
<p>其实我也有想过自己开发一个 Web 端的通用记账管理系统，但因为各种各样的原因（995、懒），实在是腾不出手来，因此直接买了一个记账软件——记账鸭。</p>
<p>这款软件也可以免费使用，缺点是账本数量有限制，所以我干脆买了一个终身会员（当时是 60 人民币左右入手的，最近涨价了，目前是 89 人民币）。</p>
<p><img alt="记账鸭.webp" loading="lazy" src="../../images/%E8%AE%B0%E8%B4%A6%E9%B8%AD.webp"></p>
<h2 id="下载链接">下载链接</h2>
<p>各大安卓、苹果应用商店都有，自行下载。</p>
<h1 id="最后">最后</h1>
<p>模板什么的其实能用就行，也不用太花哨。也没必要用某些记账软件来记录，做的再好能有 Excel 好吗？反而把自己的消费习惯暴露给软件厂商拿去牟利了。</p>
<p>记账一方面是需要一个可以用的模板，另一方面是要养成记账的习惯。不能今天想起来就记录一下，明天比较累就不记录了。还要记得对账，毕竟记录难免有遗漏或者错误。</p>
<p>理性消费，抵制消费主义，从记账做起 😎 。</p>
]]></content:encoded>
    </item>
    <item>
      <title>如何贡献有价值的反馈</title>
      <link>https://www.zhangtianci.cn/posts/%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E5%8F%8D%E9%A6%88/</link>
      <pubDate>Sat, 03 Oct 2020 11:14:00 +0800</pubDate>
      <guid>https://www.zhangtianci.cn/posts/%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E5%8F%8D%E9%A6%88/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;我在工作中总会有如下对话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;某测试：“张，XX 功能报错了！”
我：“报什么错？”
某测试：“我用了下这个功能就报错了！”
我：“……（可能对方没理解我的意思？）有什么提示吗？怎么操作的？日志发来我瞧瞧。”
某测试：“我就是调用了一下就报错了，没看日志！张你研究下！”
我：……&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>我在工作中总会有如下对话：</p>
<blockquote>
<p>某测试：“张，XX 功能报错了！”
我：“报什么错？”
某测试：“我用了下这个功能就报错了！”
我：“……（可能对方没理解我的意思？）有什么提示吗？怎么操作的？日志发来我瞧瞧。”
某测试：“我就是调用了一下就报错了，没看日志！张你研究下！”
我：……</p></blockquote>
<p>这种对话不仅浪费时间，而且往往最后发现是对方没有仔细阅读文档导致的误用。无论是技术人员还是非技术人员，掌握如何提出有效反馈都能大大节约双方的时间。</p>
<p>当你决定反馈问题时（既然已经这么做了），肯定是希望问题能尽快解决。此时任何过激言语都无济于事——因为这可能是程序员的错误，也可能是你的错误。也许你有权对他们发火，但是如果你能提供有用的信息而非情绪化表达，问题往往会更快得到解决。</p>
<p>基于这些经验，我整理了以下建议，希望能帮助大家提出更有价值的反馈。</p>
<h1 id="提问前">提问前</h1>
<p>遇到问题时，心里一定很着急，可以理解。但是在决定向开源社区或开发人员提交问题前，建议先尝试以下步骤：</p>
<h2 id="阅读文档">阅读文档</h2>
<p>查阅相关功能的官方文档，利用搜索功能查找问题关键词，很多时候能快速找到解决方案。</p>
<h2 id="搜索引擎">搜索引擎</h2>
<p>90% 你遇到的问题，很可能别人也遇到过。通过 Google、StackOverflow 等技术社区搜索（建议避开 CSDN 等低质量站点），往往能快速定位解决方法。</p>
<p>永远记住，地球上的你并不孤单，包括你遇到的问题。</p>
<h2 id="问问身边的人">问问身边的人</h2>
<p>如果你身边的人也曾用过同一个功能，可以礼貌地请教。善意的技术探讨很少有人会拒绝。</p>
<p>如果以上三步都无法解决问题，就不要犹豫，立马向开源社区或开发人员提交问题就好。</p>
<h1 id="提问时">提问时</h1>
<p>提问有很多种，比如你认识作者，直接面对面请教就行。下面探讨的是如何通过互联网的方式来问问题。</p>
<h2 id="平和对等的心态">平和对等的心态</h2>
<p>提问时，不要把自己摆在顾客的位置，比如：</p>
<blockquote>
<p>项目马上要上线了，请务必解决！</p></blockquote>
<p>另外，也不要把自己摆在乞食者的位置，比如：</p>
<blockquote>
<p>救命啊，这个功能我今天急用！</p></blockquote>
<p>不论是在开源社区，还是公司部门之间，一切皆是朋友。无论对方是 Linux 内核的作者，还是新来的实习生，你们都是对等的。你的提问是在帮助完善软件。这种心态可以让你的问题赢得更多人的阅读和思考。</p>
<h2 id="通过正确的途径提交">通过正确的途径提交</h2>
<p>如果有专门的反馈邮箱或 Bug 管理系统，一定要使用这些指定渠道。</p>
<p>最不好的途径是：</p>
<ul>
<li>QQ 、微信等群组。这些群组主要是用来休闲的。对开源项目来说，在这些地方提问，作者一般不会关注，效率非常低。</li>
<li>微博、Facebook 等社交网络。不少人在微博上通过 @ 或私信询问问题，这些我经常看不到。看到了，也不情愿回复。微博是扯淡、交流情感的地方，一般是写代码写累了，才去逛逛，很少会有在社交网络上回答技术问题的心情。</li>
</ul>
<p>通过正确的途径提交问题，一般可以让你的问题得到及时准确的回复。</p>
<h2 id="使用明确有意义的标题">使用明确、有意义的标题</h2>
<p>抱着平和对等的心态，找到合适的途径后，就得静下心来将遇到的问题写成文字。书写文字不是一件简单的事情，我们可以从遵循一些简单的规则开始。</p>
<p>首先是提问标题要简洁清晰，要言之有物。比如：</p>
<blockquote>
<p>XX 功能出错，求大神指点</p>
<p>XX 功能在我的浏览器上运行不了，别人的可以</p></blockquote>
<p>上面举例的标题很糟糕，光看标题作者无法知道发生了什么事。当开源社区的问题很多时，上面这类标题，经常会让作者直接忽视或将优先级降到很低。更妥当的标题是：</p>
<blockquote>
<p>XX 功能提示 XXXXX（错误码）</p>
<p>XX 功能在 Chrome 69 无法使用</p></blockquote>
<p>明确、有意义的标题，可以帮助作者确定问题具体是什么类型、预估需要多少时间解决、是否现在马上解决等。一个好的标题，也有利于社区知识的沉淀和后期搜索。标题有如一个人的颜面衣着，虽然不是关键，但在嘈杂的信息社区中，这很重要。</p>
<h2 id="遵循良好的模板">遵循良好的模板</h2>
<p>如果社区提供了问题模板，一定要仔细看下。比如我的开源项目，当你创建一个问题时，会自动提供以下模板：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># 前言
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">请确认你已经做了下面这些事情，若 bug 还是未解决，那么请尽可详细地描述你的问题。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">- [ ]</span> 我已经安装了最新版的 Hobby
</span></span><span class="line"><span class="cl">  <span class="k">- [ ]</span> 我已经搜索了已有的 Issues 列表中有关的信息
</span></span><span class="line"><span class="cl">  <span class="k">- [ ]</span> 我已经阅读了 Hobby 的 相关文档
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 描述错误
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--简洁而清晰的描述这个错误。--&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 复现方式
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--复现该行为的步骤。--&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 预期行为
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--对你期望发生的事情进行简洁而清晰的描述。--&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 截图
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--如果可以的话，请添加一些截图以帮助描述你的问题。--&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 系统版本和运行环境
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--请描述你的版本以及运行环境。--&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gh"># 其他
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl">&lt;!--在此处添加有关该问题的其他内容。--&gt;
</span></span></code></pre></div><p>遵循这个模板去描述问题，经常能省很多事。作者一般也非常欢迎通过模板提交的问题。如果社区没有提供模板，也可以自己遵循以上模板来提交。</p>
<p>下面针对问题内容，具体说说一些需要注意的点。</p>
<h2 id="注意语法和格式">注意语法和格式</h2>
<p>虽然我们不是作家，但正确的语法、清晰的格式，可以让读者赏心悦目，也就更有心情帮你一起思考解决问题。</p>
<p>对于很多需要代码来描述的问题，要尤其注意格式，比如：</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">List</span><span class="o">&lt;</span><span class="n">Category</span><span class="o">&gt;</span><span class="w"> </span><span class="n">children</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">categories</span><span class="p">.</span><span class="na">stream</span><span class="p">().</span><span class="na">filter</span><span class="p">(</span><span class="n">category</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Objects</span><span class="p">.</span><span class="na">equal</span><span class="p">(</span><span class="n">parentCategory</span><span class="p">.</span><span class="na">getId</span><span class="p">(),</span><span class="w"> </span><span class="n">category</span><span class="p">.</span><span class="na">getParentId</span><span class="p">())).</span><span class="na">collect</span><span class="p">(</span><span class="n">Collectors</span><span class="p">.</span><span class="na">toList</span><span class="p">());</span><span class="w">
</span></span></span></code></pre></div><p>可读性不如：</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">List</span><span class="o">&lt;</span><span class="n">Category</span><span class="o">&gt;</span><span class="w"> </span><span class="n">children</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">categories</span><span class="p">.</span><span class="na">stream</span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="p">.</span><span class="na">filter</span><span class="p">(</span><span class="n">category</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Objects</span><span class="p">.</span><span class="na">equal</span><span class="p">(</span><span class="n">parentCategory</span><span class="p">.</span><span class="na">getId</span><span class="p">(),</span><span class="w"> </span><span class="n">category</span><span class="p">.</span><span class="na">getParentId</span><span class="p">()))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">Collectors</span><span class="p">.</span><span class="na">toList</span><span class="p">());</span><span class="w">
</span></span></span></code></pre></div><p>良好的代码排版能让你的内容看起来很专业，大家也就更有意愿会去帮助你，否则糟糕的排版，经常带来的是提问之后的石沉大海。</p>
<h2 id="描述事实而不是猜测">描述事实而不是猜测</h2>
<p>事实是指，依次进行了哪些操作、产生了怎样的结果。比如：</p>
<blockquote>
<p>我在 XX 环境下，通过 XX 操作后，点击 XX，这时浏览器弹出 XX 错误提示。</p></blockquote>
<p>上面是一段比较好的事实描述（更好的是把错误提示也截图上来），而不要像下面这样猜测：</p>
<blockquote>
<p>XX 功能在 XX 环境下运行不正常，我怀疑是源码第 213 行有问题。</p></blockquote>
<p>上面的描述，会让作者一头雾水、甚至很恼火。尽量避免猜测性描述，除非你能先描述事实，在事实描述清楚之后，再给出合理的猜测是欢迎的。</p>
<p>如果能提供可重现错误的在线可访问代码，那是最好不过。一旦你这么用心去做了，作者往往也会很用心地立马帮你解决。</p>
<h2 id="描述目标而非过程">描述目标而非过程</h2>
<p>经常会有这种情况，提问者在脑袋里有个更高层次的目标，他们在自以为能达到目标的特定道路上卡住了，然后跑来问该怎么走。比如：</p>
<blockquote>
<p>XX 应用如何手动指定 JDK 路径？</p></blockquote>
<p>上面这个问题的背后，提问者实际上想解决的是如何通过手动指定 JDK 路径来实现单机安装多个 JDK 的问题。提问者选择了手动指定 JDK 的方式来实现，但这过程中遇到了问题，因此跑过来继续怎么走。然而，如果只是描述过程，往往会把作者也绕进去。</p>
<p>实际情况却是，提问者选择的路本身就是一条崎岖之路，对于要解决的问题，实际上有更好的方式。这种情况下，描述清楚目标，讲清楚要干什么非常重要。</p>
<p>在描述自己是怎么做之前，一定要先描述要做什么。提问题时，What 往往比 How 更重要。</p>
<h2 id="要有具体场景">要有具体场景</h2>
<p>无论在开源社区，还是微博、知乎等平台上，有一种非常常见的问题：</p>
<blockquote>
<p>如何优化 Java 代码性能？</p>
<p>如何使用 maven 进行模块化开发？</p></blockquote>
<p>这类问题还有很多，每每遇到，只能笑笑，然后悄悄地忽略掉。因此这类问题很难回答，就如下面这些问题一样：</p>
<blockquote>
<p>如何才能让生命有意义？</p>
<p>如何打败阿里？</p></blockquote>
<p>这类提问者，一般比较浮躁，经常对问题本身也没有经过思考。踏实的提问者，不会让问题浮在空中无法回答，而会在具体场景中让问题落地：</p>
<blockquote>
<p>我的项目有 20 多个 Java 模块，接下来还会急剧增加。目前遇到以下问题……（省略五百字）…… 请问如何维护？</p></blockquote>
<h2 id="正确描述问题">正确描述问题</h2>
<h3 id="记录问题">记录问题</h3>
<p>当程序出毛病的时候，立刻停止正在做的任何操作。不要按任何健。仔细地看一下屏幕，注意那些不正常的地方，记住它或者写下来。然后慎重地点击“确定” 或“取消”，选择一个最安全的。学着养成一种条件反射——一旦电脑出了问题，先不要动。要想摆脱这个问题，关掉受影响的程序或者重新启动计算机都不好，一个解决问题的好办法是让问题再次产生。</p>
<h3 id="演示问题">演示问题</h3>
<p>报告问题的最好的方法之一是“演示”给程序员看。让程序员站在电脑前，运行他们的程序，指出程序的错误。让他们看着你启动电脑、运行程序、如何进行操作以及程序对你的输入有何反应。</p>
<h3 id="口述问题">口述问题</h3>
<p>“演示”是很好的办法，但是常常做不到。那我们应该尽可能确切地告诉程序员你做了些什么。如果是一个图形界面程序，告诉他们你按了哪个按钮，依照什么顺序按的。如果是一个命令行程序，精确的告诉他们你输入了什么命令。你应该尽可能详细地提供所输入的命令和程序的反应。</p>
<p>把你能想到的所有的输入方式都告诉程序员，如果程序要读取一个文件，你可能需要把这个文件发给他们。如果程序需要通过网络与另一台电脑通讯，你或许不能把那台电脑复制过去，但至少可以说一下电脑的类型和安装了哪些软件（如果可以的话）。</p>
<p>如果你给了程序员一长串输入和指令，他们执行以后没有出现错误，那是因为你没有给他们足够的信息，可能错误不是在每台计算机上都出现，你的系统可能和他们的在某些地方不一样。有时候程序的行为可能和你预想的不一样，这也许是误会，但是你会认为程序出错了，程序员却认为这是对的。</p>
<p>同样也要描述发生了什么。精确的描述你看到了什么。告诉他们为什么你觉得自己所看到的是错误的，最好再告诉他们，你认为自己应该看到什么。如果你只是说：“程序出错了”，那你很可能漏掉了非常重要的信息。</p>
<p>如果你看到了错误消息，一定要仔细、准确的告诉程序员，这 <em>确实</em> 很重要。在这种情况下，程序员只要修正错误，而不用去找错误。他们需要知道是什么出问题了，系统所报的错误消息正好帮助了他们。如果你没有更好的方法记住这些消息，就把它们写下来。只报告“程序出了一个错”是毫无意义的，除非你把错误消息一块报上来。</p>
<p>特殊情况下，如果有错误消息号，<em>一定</em> 要把这些号码告诉程序员。不要以为你看不出任何意义，它就没有意义。错误消息号包含了能被程序员读懂的各种信息，并且很有可能包含重要的线索。给错误消息编号是因为用语言描述计算机错误常常令人费解。用这种方式告诉你错误的所在是一个最好的办法。</p>
<p>在这种情形下，程序员的排错工作会十分高效。他们不知道发生了什么，也不可能到现场去观察，所以他们一直在搜寻有价值的线索。错误消息、错误消息号以及一些莫名其妙的延迟，都是很重要的线索，就像办案时的指纹一样重要，保存好。</p>
<h3 id="间歇性问题">间歇性问题</h3>
<p>“间歇性错误”着实让程序员发愁。相比之下，进行一系列简单的操作便能导致错误发生的问题是简单的。程序员可以在一个便于观察的条件下重复那些操作，观察每一个细节。太多的问题在这种情况下不能解决，例如：程序每星期出一次错，或者偶然出一次错，或者在程序员面前从不出错。当然还有就是程序的截止日期到了，那肯定要出错。</p>
<p>大多数“间歇性错误”并不是真正的“间歇”。其中的大多数错误与某些地方是有联系的。有一些错误可能是内存泄漏产生的，有一些可能是别的程序在不恰当的时候修改某个重要文件造成的，还有一些可能发生在某一特定时间。</p>
<p>程序员想要了解任何与你发现的问题相关的事情。有可能的话你到另一台机器上试试，多试几次，两次，三次，看看问题是不是经常发生。如果问题出现在你进行了一系列操作之后，不是你想让它出现它就会出现，这就有可能是长时间的运行或处理大文件所导致的错误。程序崩溃的时候，你要尽可能的记住你都做了些什么，并且如果你看到任何图形,也别忘了提一下。你提供的任何事情都是有帮助的。即使只是概括性的描述。这虽然不能提供导致问题的直接线索，但是可能帮助程序员重现问题。</p>
<p>最重要的是：程序员想要确定他们正在处理的是一个真正的“间歇性错误”呢，还是一个在另一类特定的计算机上才出现的错误。他们想知道有关你计算机的许多细节，以便了解你的机器与他们的有什么不同。有许多细节都依仗特定的程序，但是有一件东西你一定要提供——版本号。程序的版本、操作系统的版本以及与问题有关的程序的版本。</p>
<h2 id="仔细检查确保准确">仔细检查、确保准确</h2>
<p>是人都会犯错误，特别是在如此快节奏的互联网环境下。好不容易把问题描述清楚时，不要急着立刻提交。在提交前，至少保证从头到尾再仔细阅读一遍，比如语法错误、错别字、标点符号、排版等等。做到这些，不光是尊重别人，也是尊重自己。</p>
<h1 id="提问后">提问后</h1>
<p>提交问题后，建议通过邮件等方式订阅回复。互联网上最有效的沟通方式是异步沟通，不要期待作者马上回复，也不要心烦意乱着急地等待。</p>
<h2 id="尽可能补充信息">尽可能补充信息</h2>
<p>在接收到回复时，仔细阅读。最经常的情况是，社区回复的，经常不是你想要的。比如：</p>
<blockquote>
<p>根据你的描述，问题无法重现。能否提供具体使用环境和重现步骤？</p></blockquote>
<p>这时要淡定。仔细看看自己提交的问题描述是否足够清晰，如果有可补充的信息，尽量补充，以帮助作者能尽快定位问题。比如：</p>
<blockquote>
<p>很抱歉，我前面有一步描述不正确，实际情况是我是在 Firefox 中运行的……</p></blockquote>
<p>谦和淡定的交流，不光能帮助你解决问题，还有助于你结交更多朋友。</p>
<h2 id="适当的总结">适当的总结</h2>
<p>当问题终于解决时，建议对问题进行总结。可以编辑原帖，也可以通过博客等方式总结。你的总结，会让遇到同样问题的朋友们受益，并且对自己的技能也是一种提高。无论国内还是国外，有很多牛人之所以成为牛人，很大程度上都是因为有总结思考的好习惯。</p>
<h2 id="不要忘记感谢">不要忘记感谢</h2>
<p>最后，记得感谢。很多开源软件的作者，都是利用业余时间在创作代码。你的感谢，会让开源社区充满爱与力量。</p>
]]></content:encoded>
    </item>
    <item>
      <title>搜索引擎使用教程</title>
      <link>https://www.zhangtianci.cn/posts/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link>
      <pubDate>Tue, 24 Dec 2019 13:03:00 +0800</pubDate>
      <guid>https://www.zhangtianci.cn/posts/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;尽管人们经常使用搜索引擎，但有时候对于一些问题可能无法高效搜索，会搜出来许多无用的干扰信息。&lt;/p&gt;
&lt;p&gt;对于知识工作者而言，搜索这个技能可以说是渗透到学习闭环的各个环节。因此学习一下搜索引擎的使用技巧，提高效率，可以避免时间浪费。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="前言">前言</h1>
<p>尽管人们经常使用搜索引擎，但有时候对于一些问题可能无法高效搜索，会搜出来许多无用的干扰信息。</p>
<p>对于知识工作者而言，搜索这个技能可以说是渗透到学习闭环的各个环节。因此学习一下搜索引擎的使用技巧，提高效率，可以避免时间浪费。</p>
<h1 id="搜索引擎推荐">搜索引擎推荐</h1>
<h2 id="google">Google</h2>
<p>全球第一，即使搜索中文关键词也强于百度。</p>
<h2 id="百度">百度</h2>
<p>中国第一，搜索娱乐新闻等十分好用。</p>
<p>计算机专业不推荐使用，大多数技术网站都对百度做了反爬虫，百度是无法搜索到的。</p>
<h2 id="bing">Bing</h2>
<p>针对中文进行了优化，是无法访问 Google 时最好的替代品。</p>
<p>推荐国际版，无广告。</p>
<h1 id="搜索技巧">搜索技巧</h1>
<h2 id="google-1">Google</h2>
<p><img alt="Google 高级搜索.webp" loading="lazy" src="../../images/Google%20%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2.webp"></p>
<p>如上，这是 Google 提供的高级搜索方式。</p>
<h2 id="百度-1">百度</h2>
<p><img alt="百度高级搜索.webp" loading="lazy" src="../../images/%E7%99%BE%E5%BA%A6%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2.webp"></p>
<p>如上，这是百度提供的高级搜索方式。</p>
<h2 id="bing-1">Bing</h2>
<p><img alt="Bing" loading="lazy" src="../../images/Bing%20%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2.webp"></p>
<p>Bing 并未提供可视化的高级搜索方式。</p>
<h2 id="搜索技巧-1">搜索技巧</h2>
<p>一般来说通过使用各搜索引擎提供的可视化高级搜索工具可以解决大多数需求。</p>
<p>但有一些好用的搜索引擎并没有提供可视化高级搜索工具，并且可视化高级搜索工具用起来也略微繁琐。</p>
<p>那么以下内容则是介绍不通过可视化的方式来进行高级搜索的方法。</p>
<h3 id="关键字选取">关键字选取</h3>
<p>搜索最重要的就是关键词。现在搜索引擎对于语义搜索、情景搜索、智能推荐等已经做得很好了，以前自行提取关键词的方式并不适用于现在。</p>
<p>因此我们在进行搜索的时候，既可以直接输入问题，也可以自行提取 1 - 3 个关键词进行搜索。</p>
<p>另外也可以用不同的语言来搜索。</p>
<p><img alt="英文关键字选取.webp" loading="lazy" src="../../images/%E8%8B%B1%E6%96%87%E5%85%B3%E9%94%AE%E5%AD%97%E9%80%89%E5%8F%96.webp"></p>
<p><img alt="中文关键字选取.webp" loading="lazy" src="../../images/%E4%B8%AD%E6%96%87%E5%85%B3%E9%94%AE%E5%AD%97%E9%80%89%E5%8F%96.webp"></p>
<h3 id="完全匹配">完全匹配</h3>
<p>用引号将需要完全匹配的字词引起：<code>&quot;可口可乐&quot;</code>，即可进行完全匹配，并不会搜到 <code>可乐</code> 这样的关键词。</p>
<p><img alt="完全匹配.webp" loading="lazy" src="../../images/%E5%AE%8C%E5%85%A8%E5%8C%B9%E9%85%8D.webp"></p>
<h3 id="任意匹配">任意匹配</h3>
<p>在所需字词之间添加 <code>OR</code>：<code>可口 OR 百事</code>。</p>
<p><img alt="任意匹配.webp" loading="lazy" src="../../images/%E4%BB%BB%E6%84%8F%E5%8C%B9%E9%85%8D.webp"></p>
<h3 id="不包含匹配">不包含匹配</h3>
<p>在不需要的字词前添加一个减号：<code>-可口</code>。</p>
<p><img alt="不包含匹配.webp" loading="lazy" src="../../images/%E4%B8%8D%E5%8C%85%E5%90%AB%E5%8C%B9%E9%85%8D.webp"></p>
<h3 id="数字范围">数字范围</h3>
<p>在数字之间加上两个句号并添加度量单位：<code>10..35 斤</code>、<code>300..500 元</code>、<code>2010..2011 年</code>。</p>
<p><img alt="数字匹配.webp" loading="lazy" src="../../images/%E6%95%B0%E5%AD%97%E5%8C%B9%E9%85%8D.webp"></p>
<h3 id="不常用操作">不常用操作</h3>
<p>以下操作较为繁琐，也很少用。</p>
<p><code>filetype</code> 搜索对应类型的文件。</p>
<p><code>site</code> 在某个网站内搜索。</p>
<p><code>allintitle</code> 搜索网页标题中包含关键词的结果。</p>
<p><code>allintext</code> 搜索网页文本中包含关键词的结果。</p>
<p><code>allinurl</code> 搜索网页网址中包含关键词的结果。</p>
<p><code>allinanchor</code> 搜索指向网页的链接中包含关键词的结果。</p>
<p><code>related</code> 搜索相关网站。</p>
<p><code>index of</code> 可以突破网站入口下载。</p>
<p><img alt="不常用操作.webp" loading="lazy" src="../../images/%E4%B8%8D%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C.webp"></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
