<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>诗情太阳花</title>
  
  <subtitle>看清自己，看透世界，变得更强</subtitle>
  <link href="https://blog.nnnnzs.cn/atom.xml" rel="self"/>
  
  <link href="https://blog.nnnnzs.cn/"/>
  <updated>2022-10-12T13:45:30.942Z</updated>
  <id>https://blog.nnnnzs.cn/</id>
  
  <author>
    <name>NNNNzs</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>只要不失去你的崇高整个世界就会向你敞开</title>
    <link href="https://blog.nnnnzs.cn/2022/09/06/%E5%8F%AA%E8%A6%81%E4%B8%8D%E5%A4%B1%E5%8E%BB%E4%BD%A0%E7%9A%84%E5%B4%87%E9%AB%98%E6%95%B4%E4%B8%AA%E4%B8%96%E7%95%8C%E5%B0%B1%E4%BC%9A%E5%90%91%E4%BD%A0%E6%95%9E%E5%BC%80/"/>
    <id>https://blog.nnnnzs.cn/2022/09/06/%E5%8F%AA%E8%A6%81%E4%B8%8D%E5%A4%B1%E5%8E%BB%E4%BD%A0%E7%9A%84%E5%B4%87%E9%AB%98%E6%95%B4%E4%B8%AA%E4%B8%96%E7%95%8C%E5%B0%B1%E4%BC%9A%E5%90%91%E4%BD%A0%E6%95%9E%E5%BC%80/</id>
    <published>2022-09-06T13:05:31.000Z</published>
    <updated>2022-10-12T13:45:30.942Z</updated>
    
    <content type="html"><![CDATA[<p>7 月 29 日周五，临下班之前问了一下领导，下周不会出差吧，这周我要回家<br>领导说：放心回马鞍山吧，不出差，注意疫情防控就行。<br>结果刚到高铁站就打电话来，说是一个很紧急的项目要去桂林出差，赶紧订周日或者周一的飞机票过去<br>年龄越大，就越难有反抗情绪，虽然很不情愿但还是没有拒绝出差<br>谁能拒绝”桂林山水甲天下“呢？</p><h2 id="桂林山水甲天下"><a href="#桂林山水甲天下" class="headerlink" title="桂林山水甲天下"></a>桂林山水甲天下</h2><p>还是第一次一个人在夏天坐飞机，飞机穿过云层产生的抖动发生的噪音，有种云宫迅音的感觉<br>第一周原本周末周末也是要上班的<br>实在受不了，也就只敢请半天假，原计划是去象鼻山景区和独秀峰王城<br>结果即使是上午也热得不行，同行的小伙伴又闹肚子，就只去了象鼻山</p><p>原本是为了找到下岩神瞳，解锁岩神像，然后原神+5d 的<br>结果联动活动早就已经结束了<br>象鼻山景区，只有象鼻山是天然形成的，<br>酒窖、爱情岛、普贤塔、云峰寺等都是后来人为编纂强塞进故事<br>草草结束了一周只有半天的假，又回去加班了</p><h2 id="阳朔山水甲桂林"><a href="#阳朔山水甲桂林" class="headerlink" title="阳朔山水甲桂林"></a>阳朔山水甲桂林</h2><p>第二周的周六，总包自己家的开发也觉得扛不住，全体放了一天假<br>我赶紧报了一个第二天去阳朔县旅游的散团<br>“阳朔山水甲桂林”<br>一大早七点就吃过饭在酒店等接了，将近一个半小时的路程，睡了醒，醒了睡<br>醒时看到一路上倒是很多党群中心，都很气派</p><p>第一站是十里长廊，别去，坑人的<br>第二站是大榕树，别去，也是坑人的<br>第三站是银子岩，这个还不错<br>大自然的鬼斧神工，五颜六色的灯光照在奇形怪状的钟乳石上，还是有那么点层岩巨渊的感觉</p><p>第四站世外桃源，就是一个环形的湖，里面住了几户人家，<br>种点桃花，然后摆了几个台子，展示一些少数名族的文化<br>倒是有个陶渊明先生的文化馆<br>不知道高中那个最羡慕陶渊明的董老师有没有来过这里</p><h2 id="君问归期已有期"><a href="#君问归期已有期" class="headerlink" title="君问归期已有期"></a>君问归期已有期</h2><p>大概第二周结束的时候得知公司要去莫干山团建，此时还在桂林归期未知<br>Hr 小姐姐问我能不能回得去，我说：君问归期未有期<br>然后经过我千辛万苦万般争取，甚至说就算睡大街也要回去<br>抱着破罐子破摔的做法，终于溜回来了，赶上了第二天的团建</p><h2 id="莫干山行"><a href="#莫干山行" class="headerlink" title="莫干山行"></a>莫干山行</h2><blockquote><p>七绝·莫干山  </p><p>毛泽东  </p><p>翻身跃入七人房，<br>回首峰峦入莽苍。<br>四十八盘才走过，<br>风驰又已到钱塘。</p></blockquote><p>莫干山闻名于干将、莫邪在此铸成举世无双的雌雄宝剑<br>有山有水有瀑布有别墅区<br>铸剑池瀑布壮观<br>漂流刺激</p><p>同为四大避暑胜地<br>但是和庐山游相比，总觉得比不上<br>是无了同游庐山的心境？<br>还是无了同游的三五位针砭时弊千杯少<br>可以高谈阔论的好友？</p><h2 id="只要不失去你的崇高整个世界就会向你敞开"><a href="#只要不失去你的崇高整个世界就会向你敞开" class="headerlink" title="只要不失去你的崇高整个世界就会向你敞开"></a>只要不失去你的崇高整个世界就会向你敞开</h2><p>越年长，团建越难开心</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;7 月 29 日周五，临下班之前问了一下领导，下周不会出差吧，这周我要回家&lt;br&gt;领导说：放心回马鞍山吧，不出差，注意疫情防控就行。&lt;br&gt;结果刚到高铁站就打电话来，说是一个很紧急的项目要去桂林出差，赶紧订周日或者周一的飞机票过去&lt;br&gt;年龄越大，就越难有反抗情绪，虽然很不</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="旅游" scheme="https://blog.nnnnzs.cn/tags/%E6%97%85%E6%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>端午小记</title>
    <link href="https://blog.nnnnzs.cn/2022/06/03/%E7%AB%AF%E5%8D%88%E5%B0%8F%E8%AE%B0/"/>
    <id>https://blog.nnnnzs.cn/2022/06/03/%E7%AB%AF%E5%8D%88%E5%B0%8F%E8%AE%B0/</id>
    <published>2022-06-02T16:30:40.000Z</published>
    <updated>2022-10-12T13:45:30.944Z</updated>
    
    <content type="html"><![CDATA[<p>端午小记<br>很遗憾 三个月没到就分手了</p><p>为什么是她<br>因为刚好是她<br>合适的时间合适的地点相遇<br>再加上一些多巴胺和荷尔蒙的催化下<br>我也想试试,以为这就是不等人的缘分</p><p>为什么是我<br>因为刚好是我出现在合适的时间合适的地点<br>在她被不喜欢的人追求时一面挡箭牌出现</p><p>感情里没有对或错 只有能不能为对方包容和改变</p><p>但前提是有感情</p><p>我说的戒烟做到了，然后呢？</p><p>可能再长的时间也没有办法从我这找到所谓的“感觉”吧</p><p>为什么不是她<br>感情不是一个人的事,而是双向奔赴,刚在一起时很舒服,每天总有聊不完的话,即使她上班间隙也会抽空回我消息,<br>到后来发的信息看到也装作没看到一样不回我</p><p>为什么不是我<br>可能是自始至终没对我有过感觉吧</p><p>心急手快 大大咧咧<br>表面上要强不在乎,却心思缜密</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>“这什么 B 马鞍山，老子在南京坐高铁出站就没这么麻烦，马鞍山真是不屌照”</p><p>听完就一顿生气，阴阳怪气的回过去：马鞍山不好你来马鞍山干嘛</p><p>才发现还是对这土地爱得深沉</p><p>晚上放完行李</p><p>骑着小遛单车 吹着夜风</p><p>路过江东大道的地铁桩，路过花果山的广场，</p><p>耗时十分钟</p><p>寻三两好友去健康路喝喝啤酒吃吃龙虾</p><p>讨论着从 17 岁谈到 25 岁还在谈论的游戏，还有生活规划</p><p>如果可以，谁不想在马鞍山找个一万多块钱的 965 没有 PUA 的工作呢？</p><p>九山环一湖 翠螺出大江 半城烟雨半城山</p><p>游子何时归？</p><p style="text-align:right">壬寅年端午</p><p style="text-align:right">2022年06月03日00:37:06</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;端午小记&lt;br&gt;很遗憾 三个月没到就分手了&lt;/p&gt;
&lt;p&gt;为什么是她&lt;br&gt;因为刚好是她&lt;br&gt;合适的时间合适的地点相遇&lt;br&gt;再加上一些多巴胺和荷尔蒙的催化下&lt;br&gt;我也想试试,以为这就是不等人的缘分&lt;/p&gt;
&lt;p&gt;为什么是我&lt;br&gt;因为刚好是我出现在合适的时间合适的地点</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="忧伤感怀" scheme="https://blog.nnnnzs.cn/tags/%E5%BF%A7%E4%BC%A4%E6%84%9F%E6%80%80/"/>
    
  </entry>
  
  <entry>
    <title>利用微信小程序扫码授权</title>
    <link href="https://blog.nnnnzs.cn/2022/05/13/%E5%88%A9%E7%94%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%89%AB%E7%A0%81%E7%99%BB%E5%BD%95/"/>
    <id>https://blog.nnnnzs.cn/2022/05/13/%E5%88%A9%E7%94%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%89%AB%E7%A0%81%E7%99%BB%E5%BD%95/</id>
    <published>2022-05-13T03:09:09.000Z</published>
    <updated>2022-10-12T13:45:30.942Z</updated>
    
    <content type="html"><![CDATA[<h1 id="微信小程序扫码授权"><a href="#微信小程序扫码授权" class="headerlink" title="微信小程序扫码授权"></a>微信小程序扫码授权</h1><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>想要使用微信扫码登录自己的网址，通过授权快速获取用户的昵称，头像功能<br>由于没有企业认证账号，故只能通过微信小程序实现,</p><h2 id="体验地址"><a href="#体验地址" class="headerlink" title="体验地址"></a>体验地址</h2><p><a href="https://api.nnnnzs.cn/screen-demo.html?env=release">https://api.nnnnzs.cn/screen-demo.html?env=release</a></p><h2 id="源码"><a href="#源码" class="headerlink" title="源码"></a>源码</h2><p><a href="https://github.com/NNNNzs/wechat-screen-tools">https://github.com/NNNNzs/wechat-screen-tools</a></p><h2 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h2><p>利用微信小程序的动态创建场景码接口 (<a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html">https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html</a>),创建短token的信息存储在服务端，而不需要大量信息存储在二维码里，实现授权</p><h2 id="流程"><a href="#流程" class="headerlink" title="流程"></a>流程</h2><ol><li>客户端在请求图片,服务生成 token，注册到认证服务</li><li>前端根据 token，获取带场景值的二维码图片，并轮训该 token 状态</li><li>使用微信扫码，根据 token 获取应用信息并展示，在小程序授权登录，获取 openid,nickname,avatorImg 等信息</li><li>确认允许登录后，发送 confirm 请求，发送 userInfo 值</li><li>网络获取到该 token 对应的用户信息</li></ol><h2 id="流程图"><a href="#流程图" class="headerlink" title="流程图"></a>流程图</h2><p><img src="https://static.nnnnzs.cn/upload/142449493212df2e8d42bc3807e7e4d8.png" alt="流程图"></p><h2 id="核心接口"><a href="#核心接口" class="headerlink" title="核心接口"></a>核心接口</h2><table><thead><tr><th>接口</th><th>传参</th><th>返回值</th><th>说明</th></tr></thead><tbody><tr><td>getToken</td><td>-</td><td>token</td><td>获取 token</td></tr><tr><td>getImgByToken</td><td>token</td><td>图片的 arrayBuffer</td><td>获取小程序码</td></tr><tr><td>getInfoByToken</td><td>token</td><td>userInfo</td><td>获取用户信息</td></tr><tr><td>status</td><td>token</td><td>-1| 0| 1</td><td>-1 表示为扫码，0 表示已扫码未授权，1 表示已经授权</td></tr><tr><td>confirm</td><td>nickName、openid,头像等</td><td>-</td><td>小程序的允许授权时确认的接口</td></tr></tbody></table><h2 id="踩坑点"><a href="#踩坑点" class="headerlink" title="踩坑点"></a>踩坑点</h2><h3 id="scene-长度为最大-32-字符，利用-nodejs-的-uuid-v4-生成的值超过-32-位"><a href="#scene-长度为最大-32-字符，利用-nodejs-的-uuid-v4-生成的值超过-32-位" class="headerlink" title="scene 长度为最大 32 字符，利用 nodejs 的 uuid.v4 生成的值超过 32 位"></a>scene 长度为最大 32 字符，利用 nodejs 的 uuid.v4 生成的值超过 32 位</h3><blockquote><p>解决方案</p></blockquote><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">uuid.<span class="title function_">v4</span>().<span class="title function_">replace</span>(<span class="regexp">/-/g</span>, <span class="string">&quot;&quot;</span>).<span class="title function_">toUpperCase</span>();</span><br></pre></td></tr></table></figure><h3 id="生成二维码时，如果没有指定-page-字段可能会在页面里获取不到场景值-scene"><a href="#生成二维码时，如果没有指定-page-字段可能会在页面里获取不到场景值-scene" class="headerlink" title="生成二维码时，如果没有指定 page 字段可能会在页面里获取不到场景值(scene)"></a>生成二维码时，如果没有指定 page 字段可能会在页面里获取不到场景值(scene)</h3><blockquote><p>解决方案<br>指定<code>page: &quot;pages/index/index&quot;</code></p></blockquote><h3 id="getwxacodeunlimit-接口成功直接返回-buffer-错误返回的是-json，在-axios-中需要根据-response-的-contentType-来判断成功还是失败"><a href="#getwxacodeunlimit-接口成功直接返回-buffer-错误返回的是-json，在-axios-中需要根据-response-的-contentType-来判断成功还是失败" class="headerlink" title="getwxacodeunlimit 接口成功直接返回 buffer 错误返回的是 json，在 axios 中需要根据 response 的 contentType 来判断成功还是失败"></a>getwxacodeunlimit 接口成功直接返回 buffer 错误返回的是 json，在 axios 中需要根据 response 的 contentType 来判断成功还是失败</h3><blockquote><p>解决方案</p></blockquote><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">router.<span class="title function_">get</span>(<span class="string">&quot;/getImgByToken&quot;</span>, <span class="keyword">async</span> (req, res) =&gt; &#123;</span><br><span class="line">  <span class="keyword">const</span> &#123; access_token, expires_in &#125; = <span class="keyword">await</span> wechat.<span class="title function_">getAccessToken</span>();</span><br><span class="line">  <span class="keyword">const</span> ua = req.<span class="property">headers</span>[<span class="string">&quot;user-agent&quot;</span>];</span><br><span class="line">  <span class="keyword">const</span> token = req.<span class="property">query</span>.<span class="property">token</span>;</span><br><span class="line">  <span class="keyword">const</span> env = req.<span class="property">query</span>.<span class="property">env</span>;</span><br><span class="line">  <span class="comment">// env区分  release 发行版本   trial 体验版    develop 开发版</span></span><br><span class="line">  <span class="comment">// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html</span></span><br><span class="line">  <span class="title function_">axios</span>(&#123;</span><br><span class="line">    <span class="attr">url</span>: <span class="string">&quot;https://api.weixin.qq.com/wxa/getwxacodeunlimit&quot;</span>,</span><br><span class="line">    <span class="attr">method</span>: <span class="string">&quot;post&quot;</span>,</span><br><span class="line">    <span class="attr">params</span>: &#123;</span><br><span class="line">      <span class="attr">access_token</span>: access_token,</span><br><span class="line">    &#125;,</span><br><span class="line">    <span class="attr">responseType</span>: <span class="string">&quot;arraybuffer&quot;</span>,</span><br><span class="line">    <span class="attr">data</span>: &#123;</span><br><span class="line">      <span class="attr">scene</span>: token,</span><br><span class="line">      <span class="attr">env_version</span>: env || <span class="string">&quot;trial&quot;</span>,</span><br><span class="line">      <span class="attr">check_path</span>: <span class="literal">false</span>,</span><br><span class="line">      <span class="attr">page</span>: <span class="string">&quot;pages/index/index&quot;</span>,</span><br><span class="line">    &#125;,</span><br><span class="line">  &#125;).<span class="title function_">then</span>(<span class="function">(<span class="params">response</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> isSuccess = response.<span class="property">headers</span>[<span class="string">&quot;content-type&quot;</span>].<span class="title function_">includes</span>(<span class="string">&quot;image&quot;</span>);</span><br><span class="line">    <span class="keyword">if</span> (!isSuccess) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(response.<span class="property">data</span>.<span class="title function_">toString</span>(<span class="string">&quot;utf-8&quot;</span>));</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">      res.<span class="title function_">type</span>(<span class="string">&quot;png&quot;</span>).<span class="title function_">send</span>(response.<span class="property">data</span>);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h3 id="无论是wx-getUserProfile还是-wx-getUserInfo-无法静默获取-userInfo，都需要授权弹窗登录，不过可以缓存信息"><a href="#无论是wx-getUserProfile还是-wx-getUserInfo-无法静默获取-userInfo，都需要授权弹窗登录，不过可以缓存信息" class="headerlink" title="无论是wx.getUserProfile还是 wx.getUserInfo 无法静默获取 userInfo，都需要授权弹窗登录，不过可以缓存信息"></a>无论是<code>wx.getUserProfile</code>还是 <code>wx.getUserInfo</code> 无法静默获取 userInfo，都需要授权弹窗登录，不过可以缓存信息</h3><blockquote><p>解决方案<br>扫码进入之后onLoad就弹窗，并且存储场景值，允许拒绝授权之后再次</p></blockquote><h3 id="开发的时候场景值每次提交代码生成预览版本比较麻烦"><a href="#开发的时候场景值每次提交代码生成预览版本比较麻烦" class="headerlink" title="开发的时候场景值每次提交代码生成预览版本比较麻烦"></a>开发的时候场景值每次提交代码生成预览版本比较麻烦</h3><blockquote><p>解决方案<br>在微信小程序开发工具里面添加条件编译，通过二维码编辑<img src="https://static.nnnnzs.cn/upload/aebd25e424b7238b1938d829e980d0e5.png" alt="在微信小程序开发工具里面添加条件编译，通过二维码编辑"></p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;微信小程序扫码授权&quot;&gt;&lt;a href=&quot;#微信小程序扫码授权&quot; class=&quot;headerlink&quot; title=&quot;微信小程序扫码授权&quot;&gt;&lt;/a&gt;微信小程序扫码授权&lt;/h1&gt;&lt;h2 id=&quot;背景&quot;&gt;&lt;a href=&quot;#背景&quot; class=&quot;headerlink&quot; </summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
  </entry>
  
  <entry>
    <title>Math.ceil(25/10)*10 === 30</title>
    <link href="https://blog.nnnnzs.cn/2022/05/10/Math-ceil-25-10-10-30/"/>
    <id>https://blog.nnnnzs.cn/2022/05/10/Math-ceil-25-10-10-30/</id>
    <published>2022-05-10T15:52:14.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<p><audio id="audio" style="width:100%;height:40px" controls  src="https://static.nnnnzs.cn/upload/%E9%BB%84%E8%88%92%E9%AA%8F%20-%20%E6%81%8B%E7%88%B1%E7%97%87%E5%80%99%E7%BE%A4.mp3"></audio></p><p>终于是到了四舍五入等于 30 的年龄了<br>其实这应该是一篇放在 2022 年 3 月 8 日更新的博客<br>内容应该是来南京工作一年的总结<br>拖到五一假期，整理一下思绪打算发的<br>结果五一又忙着帮别人搬家<br>生日也得过且过，所以拖到了现在</p><h2 id="感情"><a href="#感情" class="headerlink" title="感情"></a>感情</h2><p>发上一篇帖子的时候还没有对象<br>现在终于成为了别人的狗子<br>谈恋爱真的需要很大的耐心</p><h2 id="身体"><a href="#身体" class="headerlink" title="身体"></a>身体</h2><p>烟算是戒掉了<br>从过年开始就一直和亲戚朋友们强调要戒烟<br>虽然有些场合还是得接下别人递过来的</p><p>年后至今也就主动买过一包烟<br>跳绳搁置了差不多一个月，要重拾起来<br>跑步也开始有计划地进行中<br>5.1 测体重 133，<br>5.9 体重 131.2<br>flag 是 128，没有完成，食言了<br>看到这篇帖子的人可以去支付宝领取口令红包<br>口令：倪宗山一定会瘦下来的<br>我不能再油腻了<br>立志做一个说戒烟就戒烟，说瘦就瘦的人</p><h2 id="生活"><a href="#生活" class="headerlink" title="生活"></a>生活</h2><p>换了一个房间，大阳台、大空间<br>有阳光，有独立洗手池，可以跳绳，可以平板支撑<br>做饭的话，还是不太敢尝试<br>勤洗被子勤晒太阳</p><h2 id="工作"><a href="#工作" class="headerlink" title="工作"></a>工作</h2><p>不出差了，不忙了，驻场少了，补贴也少了<br>有更多地时间可以学习了，做自己想做的事情<br>折腾 serveless,折腾服务端<br>奇淫技巧只是兴趣爱好，我是个前端，一个爱折腾的前端<br>立帖为证<br>今年一定要把 VUE3 源码那本书看完</p><h2 id="娱乐"><a href="#娱乐" class="headerlink" title="娱乐"></a>娱乐</h2><p>崩坏 3 彻底放弃，入坑原神<br>原神注定会成为，也已经成为国产之光</p><p>除了魅族的双肩包<br>为了支持而买的手表也挂了咸鱼<br>发布会沦落到卖苹果周边<br>魅族确实不行了<br>所以全套的魅族换成了全套的苹果</p><h2 id="理财"><a href="#理财" class="headerlink" title="理财"></a>理财</h2><p>理财总体收益-1w =&gt; -2w<br>存款年后基本没涨过，算是白干了好几个月<br>F**k</p><h2 id="BZ"><a href="#BZ" class="headerlink" title="BZ"></a>BZ</h2><p>老东家上了 315 之后，短暂的一整狂欢之后<br>也没有那种大快人心，大仇已报的痛哉<br>反而有一点点落寞，津津乐道的话题没了</p><p>当一个母胎单身的钢铁直男有了一个可以天天打电话的对象之后<br>仿佛一切又充满了干劲<br>阳光多灿烂<br>可我的自由行驶地缓慢</p><p style= "text-align:right">愿爱情长久</p><p style= "text-align:right">NNNNzs</p><p style= "text-align:right">2022年05月11日00:06:25</p><script>  let firstTouch = false;  const playFun = ()=>{    if(firstTouch)return     let confi = window.confirm('是否自动播放音乐');    firstTouch = true;    if(confi){      document.getElementById('audio').play()    }  }  document.body.addEventListener('click',playFun)</script>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;audio id=&quot;audio&quot; style=&quot;width:100%;height:40px&quot; controls  src=&quot;https://static.nnnnzs.cn/upload/%E9%BB%84%E8%88%92%E9%AA%8F%20-%20%E6%81%</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="忧伤感怀" scheme="https://blog.nnnnzs.cn/tags/%E5%BF%A7%E4%BC%A4%E6%84%9F%E6%80%80/"/>
    
  </entry>
  
  <entry>
    <title>强制加载element-dialog</title>
    <link href="https://blog.nnnnzs.cn/2022/05/04/%E5%BC%BA%E5%88%B6%E5%8A%A0%E8%BD%BDelement-dialog/"/>
    <id>https://blog.nnnnzs.cn/2022/05/04/%E5%BC%BA%E5%88%B6%E5%8A%A0%E8%BD%BDelement-dialog/</id>
    <published>2022-05-04T04:45:52.000Z</published>
    <updated>2022-10-12T13:45:30.942Z</updated>
    
    <content type="html"><![CDATA[<h1 id="强制加载element-dialog"><a href="#强制加载element-dialog" class="headerlink" title="强制加载element-dialog"></a>强制加载element-dialog</h1><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">el-dialog</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">MyComponent</span> /&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">el-dialog</span>&gt;</span></span><br></pre></td></tr></table></figure><p>自己封装的组件 <code>MyComponent</code> ，放在了el-dialog里面，其中有一段created和mounted之后，定时执行的方法<br>但是后来怎么调试都无法加载，查阅源码后发现，el-dailog懒加载了<br>只会在第一次展示之后才会挂在弹窗内部的东西</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;el-dialog__body&quot;</span> <span class="attr">v-if</span>=<span class="string">&quot;rendered&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">slot</span>&gt;</span><span class="tag">&lt;/<span class="name">slot</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//  element-ui/packages/dialog/src</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span><br><span class="line">  <span class="title function_">mounted</span>(<span class="params"></span>) &#123;</span><br><span class="line">    <span class="keyword">if</span> (<span class="variable language_">this</span>.<span class="property">visible</span>) &#123;</span><br><span class="line">      <span class="variable language_">this</span>.<span class="property">rendered</span> = <span class="literal">true</span>;</span><br><span class="line">      <span class="variable language_">this</span>.<span class="title function_">open</span>();</span><br><span class="line">      <span class="keyword">if</span> (<span class="variable language_">this</span>.<span class="property">appendToBody</span>) &#123;</span><br><span class="line">        <span class="variable language_">document</span>.<span class="property">body</span>.<span class="title function_">appendChild</span>(<span class="variable language_">this</span>.<span class="property">$el</span>);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>在侵入el-dialog组件的前提下，利用组件的hook事件，强制加载</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">el-dialog</span> <span class="attr">ref</span>=<span class="string">&quot;dialog&quot;</span>  @<span class="attr">hook:mounted</span>=<span class="string">&quot;$refs.dialog.rendered = true&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">MyComponent</span> /&gt;</span> </span><br><span class="line"><span class="tag">&lt;/<span class="name">el-dialog</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;强制加载element-dialog&quot;&gt;&lt;a href=&quot;#强制加载element-dialog&quot; class=&quot;headerlink&quot; title=&quot;强制加载element-dialog&quot;&gt;&lt;/a&gt;强制加载element-dialog&lt;/h1&gt;&lt;h2 id=&quot;背</summary>
      
    
    
    
    
    <category term="vue" scheme="https://blog.nnnnzs.cn/tags/vue/"/>
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
  </entry>
  
  <entry>
    <title>github action部署到vps</title>
    <link href="https://blog.nnnnzs.cn/2022/03/17/github-action%E9%83%A8%E7%BD%B2%E5%88%B0vps/"/>
    <id>https://blog.nnnnzs.cn/2022/03/17/github-action%E9%83%A8%E7%BD%B2%E5%88%B0vps/</id>
    <published>2022-03-17T02:45:46.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<h2 id="在-ECS-上创建用户，并设置密码"><a href="#在-ECS-上创建用户，并设置密码" class="headerlink" title="在 ECS 上创建用户，并设置密码"></a>在 ECS 上创建用户，并设置密码</h2><ol><li><code>adduser github-action</code></li><li><code>asswd passwd github-action</code></li></ol><h2 id="免密登陆"><a href="#免密登陆" class="headerlink" title="免密登陆"></a>免密登陆</h2><ol><li>生成密钥</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C <span class="string">&#x27;github-action&#x27;</span> -f ~/.ssh/github_action</span><br></pre></td></tr></table></figure><ol start="2"><li>复制密钥到远程服务器</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ssh-copy-id</span></span><br><span class="line">ssh-copy-id -i ~/.ssh/github_action.pub  github-action@nnnnzs.cn</span><br></pre></td></tr></table></figure><ol start="3"><li>设置默认登录<br>因为同一台电脑可能既有 root 也有其他用户登录 ecs 所以可以配置指定 Host，指定 User，使用不同的密钥<!-- ~/.ssh/config --><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">Host</span> <span class="string">nnnnzs.cn</span></span><br><span class="line"><span class="string">HostName</span> <span class="string">github-action</span></span><br><span class="line"><span class="string">User</span> <span class="string">github-action</span></span><br><span class="line"><span class="string">Port</span> <span class="number">22</span></span><br><span class="line"><span class="string">PreferredAuthentications</span> <span class="string">publickey</span></span><br><span class="line"><span class="string">IdentityFile</span> <span class="string">/Users/nnnnzs/.ssh/github_action</span></span><br><span class="line"><span class="string">UseKeychain</span> <span class="literal">yes</span></span><br><span class="line"><span class="string">AddKeysToAgent</span> <span class="literal">yes</span></span><br></pre></td></tr></table></figure></li></ol><h2 id="赋予部署文件夹权限"><a href="#赋予部署文件夹权限" class="headerlink" title="赋予部署文件夹权限"></a>赋予部署文件夹权限</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo <span class="built_in">chmod</span> -R 777 /dist</span><br></pre></td></tr></table></figure><h2 id="设置github-action的-secrets"><a href="#设置github-action的-secrets" class="headerlink" title="设置github-action的 secrets"></a>设置github-action的 secrets</h2><p><a href="https://github.com/NNNNzs/upload/settings/secrets/actions">https://github.com/NNNNzs/upload/settings/secrets/actions</a></p><h2 id="编写自动部署脚本"><a href="#编写自动部署脚本" class="headerlink" title="编写自动部署脚本"></a>编写自动部署脚本</h2><p>mkdir -p  .github/workflows<br>touch .github/workflows/build.yml</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">vue3</span> </span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">master</span>]</span><br><span class="line">  <span class="attr">pull_request:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">master</span>]</span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">checkout</span> <span class="string">code</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/checkout@v2</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Use</span> <span class="string">Node.js</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">&#x27;14&#x27;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">install</span> </span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">build</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">build</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">deploy</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">appleboy/scp-action@master</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">host:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.HOST</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">username:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.USERNAME</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;secrets.KEY&#125;&#125;</span></span><br><span class="line">          <span class="attr">port:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PORT</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">source:</span> <span class="string">&quot;./dist/&quot;</span></span><br><span class="line">          <span class="attr">target:</span> <span class="string">$&#123;&#123;secrets.PATH&#125;&#125;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">curl -H <span class="string">&quot;Content-Type:application/json&quot;</span> -X POST -d <span class="string">&#x27;&#123;&quot;title&quot;:&quot;自动部署&quot;,&quot;content&quot;:&quot;upload部署完成&quot;,&quot;url&quot;:&quot;https://api.nnnnzs.cn/upload&quot;&#125;&#x27;</span> https://api.nnnnzs.cn/Api/msg</span><br><span class="line"></span><br><span class="line">curl -H <span class="string">&quot;Content-Type:application/json&quot;</span> -X POST -d <span class="string">&#x27;&#123;&quot;uid&quot;:&quot;123&quot;&#125;&#x27;</span> http://127.0.0.1:3000/rest/test</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;在-ECS-上创建用户，并设置密码&quot;&gt;&lt;a href=&quot;#在-ECS-上创建用户，并设置密码&quot; class=&quot;headerlink&quot; title=&quot;在 ECS 上创建用户，并设置密码&quot;&gt;&lt;/a&gt;在 ECS 上创建用户，并设置密码&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;cod</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>leancloud-基础存储操作</title>
    <link href="https://blog.nnnnzs.cn/2022/02/17/leancloud-%E5%9F%BA%E7%A1%80%E5%AD%98%E5%82%A8%E6%93%8D%E4%BD%9C/"/>
    <id>https://blog.nnnnzs.cn/2022/02/17/leancloud-%E5%9F%BA%E7%A1%80%E5%AD%98%E5%82%A8%E6%93%8D%E4%BD%9C/</id>
    <published>2022-02-17T15:54:52.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="对象"><a href="#对象" class="headerlink" title="对象"></a>对象</h1><h2 id="安装使用"><a href="#安装使用" class="headerlink" title="安装使用"></a>安装使用</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">npm install leancloud-storage --save</span><br><span class="line"></span><br><span class="line"><span class="comment"># debug模式</span></span><br><span class="line">DEBUG=leancloud* node src/leancloud.js</span><br></pre></td></tr></table></figure><h2 id="初始化"><a href="#初始化" class="headerlink" title="初始化"></a>初始化</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="variable constant_">AV</span> = <span class="built_in">require</span>(<span class="string">&quot;leancloud-storage&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> &#123; <span class="title class_">Query</span>, <span class="title class_">User</span>, <span class="title class_">Object</span> &#125; = <span class="variable constant_">AV</span>;</span><br><span class="line"></span><br><span class="line"><span class="variable constant_">AV</span>.<span class="title function_">init</span>(&#123;</span><br><span class="line">  <span class="attr">appId</span>: <span class="string">&quot;Xxx&quot;</span>,</span><br><span class="line">  <span class="attr">appKey</span>: <span class="string">&quot;2233&quot;</span>,</span><br><span class="line">  <span class="attr">serverURL</span>: <span class="string">&quot;https://plqzch1l.lc-cn-n1-shared.com&quot;</span>,</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h2 id="新增"><a href="#新增" class="headerlink" title="新增"></a>新增</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// extend 一个Class 相当于一张表</span></span><br><span class="line"><span class="keyword">const</span> <span class="title class_">Config</span> = <span class="title class_">Object</span>.<span class="title function_">extend</span>(<span class="string">&quot;Config&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> config = <span class="keyword">new</span> <span class="title class_">Config</span>();</span><br><span class="line"><span class="comment">// 等价于</span></span><br><span class="line"><span class="keyword">const</span> config = <span class="keyword">new</span> <span class="title class_">Object</span>(<span class="string">&quot;Config&quot;</span>);</span><br><span class="line"></span><br><span class="line">config.<span class="title function_">set</span>(<span class="string">&quot;title&quot;</span>, <span class="string">&quot;快递详情&quot;</span>);</span><br><span class="line">config.<span class="title function_">set</span>(<span class="string">&quot;key&quot;</span>, <span class="string">&quot;book_length&quot;</span>);</span><br><span class="line">config.<span class="title function_">set</span>(<span class="string">&quot;value&quot;</span>, <span class="string">&quot;11&quot;</span>);</span><br><span class="line">config.<span class="title function_">save</span>().<span class="title function_">then</span>(<span class="function">(<span class="params">res</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(res);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h2 id="查询"><a href="#查询" class="headerlink" title="查询"></a>查询</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> query = <span class="keyword">new</span> <span class="title class_">Query</span>(<span class="string">&quot;Config&quot;</span>);</span><br><span class="line">query.<span class="title function_">get</span>(<span class="string">&quot;620e6d13b2ace54e35218427&quot;</span>).<span class="title function_">then</span>(<span class="function">(<span class="params">row</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">const</span> key = row.<span class="title function_">get</span>(<span class="string">&quot;key&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> value = row.<span class="title function_">get</span>(<span class="string">&quot;value&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> title = row.<span class="title function_">get</span>(<span class="string">&quot;title&quot;</span>);</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(title, key, value);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h2 id="修改"><a href="#修改" class="headerlink" title="修改"></a>修改</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 更新对象</span></span><br><span class="line"><span class="keyword">const</span> todo = <span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">createWithoutData</span>(<span class="string">&quot;Todo&quot;</span>, <span class="string">&quot;582570f38ac247004f39c24b&quot;</span>);</span><br><span class="line">todo.<span class="title function_">set</span>(<span class="string">&quot;content&quot;</span>, <span class="string">&quot;这周周会改到周三下午三点。&quot;</span>);</span><br><span class="line">todo.<span class="title function_">save</span>();</span><br><span class="line"></span><br><span class="line"><span class="comment">// 查看哪些属性有尚未保存的修改</span></span><br><span class="line">todo.<span class="title function_">dirtyKeys</span>(); <span class="comment">// [&#x27;content&#x27;]</span></span><br><span class="line"><span class="comment">// 撤回</span></span><br><span class="line">todo.<span class="title function_">revert</span>([<span class="string">&quot;content&quot;</span>]);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 计数器</span></span><br><span class="line">post.<span class="title function_">increment</span>(<span class="string">&quot;likes&quot;</span>, <span class="number">1</span>);</span><br><span class="line"><span class="comment">// 更新数组</span></span><br><span class="line"><span class="comment">// push</span></span><br><span class="line"><span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">add</span>(<span class="string">&quot;arrayKey&quot;</span>, value);</span><br><span class="line"><span class="comment">// 去重添加，位置随机</span></span><br><span class="line"><span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">addUnique</span>(<span class="string">&quot;arrayKey&quot;</span>, value);</span><br><span class="line"><span class="comment">// 从数组字段中删除指定对象的所有实例，如果是普通数组去掉多个，unique数组只去掉一个</span></span><br><span class="line"><span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">remove</span>(<span class="string">&quot;arrayKey&quot;</span>, value);</span><br></pre></td></tr></table></figure><h2 id="删除"><a href="#删除" class="headerlink" title="删除"></a>删除</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 删除整个</span></span><br><span class="line"><span class="keyword">const</span> todo = <span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">createWithoutData</span>(<span class="string">&quot;Todo&quot;</span>, <span class="string">&quot;582570f38ac247004f39c24b&quot;</span>);</span><br><span class="line">todo.<span class="title function_">destroy</span>();</span><br><span class="line"></span><br><span class="line"><span class="comment">// 删除某个属性</span></span><br><span class="line"><span class="keyword">const</span> todo = <span class="variable constant_">AV</span>.<span class="property">Object</span>.<span class="title function_">createWithoutData</span>(<span class="string">&quot;Todo&quot;</span>, <span class="string">&quot;582570f38ac247004f39c24b&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// priority 属性会被删除</span></span><br><span class="line">todo.<span class="title function_">unset</span>(<span class="string">&quot;priority&quot;</span>);</span><br><span class="line"><span class="comment">// 保存对象</span></span><br><span class="line">todo.<span class="title function_">save</span>();</span><br></pre></td></tr></table></figure><h2 id="关联"><a href="#关联" class="headerlink" title="关联"></a>关联</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> post = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Object</span>(<span class="string">&quot;Post&quot;</span>);</span><br><span class="line">post.<span class="title function_">set</span>(<span class="string">&quot;title&quot;</span>, <span class="string">&quot;饿了……&quot;</span>);</span><br><span class="line">post.<span class="title function_">set</span>(<span class="string">&quot;content&quot;</span>, <span class="string">&quot;中午去哪吃呢？&quot;</span>);</span><br><span class="line"><span class="comment">// 创建 comment</span></span><br><span class="line"><span class="keyword">const</span> comment = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Object</span>(<span class="string">&quot;Comment&quot;</span>);</span><br><span class="line">comment.<span class="title function_">set</span>(<span class="string">&quot;content&quot;</span>, <span class="string">&quot;当然是肯德基啦！&quot;</span>);</span><br><span class="line"><span class="comment">// 将 post 设为 comment 的一个属性值</span></span><br><span class="line">comment.<span class="title function_">set</span>(<span class="string">&quot;parent&quot;</span>, post);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 保存 comment 会同时保存 post</span></span><br><span class="line">comment.<span class="title function_">save</span>();</span><br></pre></td></tr></table></figure><h1 id="查询-1"><a href="#查询-1" class="headerlink" title="查询"></a>查询</h1><h2 id="基础查询"><a href="#基础查询" class="headerlink" title="基础查询"></a>基础查询</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> query = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Student&quot;</span>);</span><br><span class="line"><span class="comment">// 查询lastName为Simith的</span></span><br><span class="line">query.<span class="title function_">equalTo</span>(<span class="string">&quot;lastName&quot;</span>, <span class="string">&quot;Smith&quot;</span>);</span><br><span class="line">query.<span class="title function_">find</span>().<span class="title function_">then</span>(<span class="function">(<span class="params">students</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="comment">// students 是包含满足条件的 Student 对象的数组</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h2 id="条件查询"><a href="#条件查询" class="headerlink" title="条件查询"></a>条件查询</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 以下表示and  同时生效</span></span><br><span class="line"><span class="comment">// 不等于</span></span><br><span class="line">query.<span class="title function_">notEqualTo</span>(<span class="string">&quot;firstName&quot;</span>, <span class="string">&quot;Jack&quot;</span>);</span><br><span class="line"><span class="comment">// 限制 age &lt; 18</span></span><br><span class="line">query.<span class="title function_">lessThan</span>(<span class="string">&quot;age&quot;</span>, <span class="number">18</span>);</span><br><span class="line"><span class="comment">// 限制 age &lt;= 18</span></span><br><span class="line">query.<span class="title function_">lessThanOrEqualTo</span>(<span class="string">&quot;age&quot;</span>, <span class="number">18</span>);</span><br><span class="line"><span class="comment">// 限制 age &gt; 18</span></span><br><span class="line">query.<span class="title function_">greaterThan</span>(<span class="string">&quot;age&quot;</span>, <span class="number">18</span>);</span><br><span class="line"><span class="comment">// 限制 age &gt;= 18</span></span><br><span class="line">query.<span class="title function_">greaterThanOrEqualTo</span>(<span class="string">&quot;age&quot;</span>, <span class="number">18</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 最多获取 10 条结果</span></span><br><span class="line">query.<span class="title function_">limit</span>(<span class="number">10</span>);</span><br><span class="line"></span><br><span class="line">query.<span class="title function_">first</span>().<span class="title function_">then</span>(<span class="function">(<span class="params">todo</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="comment">// todo 是第一个满足条件的 Todo 对象</span></span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 跳过前 20 条结果</span></span><br><span class="line">query.<span class="title function_">skip</span>(<span class="number">20</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 分页，每页10个，跳过前20个，相当于第三页</span></span><br><span class="line"><span class="keyword">const</span> query = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">query.<span class="title function_">equalTo</span>(<span class="string">&quot;priority&quot;</span>, <span class="number">2</span>);</span><br><span class="line">query.<span class="title function_">limit</span>(<span class="number">10</span>);</span><br><span class="line">query.<span class="title function_">skip</span>(<span class="number">20</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 排序</span></span><br><span class="line"><span class="comment">// 按 createdAt 升序排列</span></span><br><span class="line">query.<span class="title function_">ascending</span>(<span class="string">&quot;createdAt&quot;</span>);</span><br><span class="line"><span class="comment">// 按 createdAt 降序排列</span></span><br><span class="line">query.<span class="title function_">descending</span>(<span class="string">&quot;createdAt&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 查找包含 &#x27;images&#x27; 的对象</span></span><br><span class="line">query.<span class="title function_">exists</span>(<span class="string">&quot;images&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 查找不包含 &#x27;images&#x27; 的对象</span></span><br><span class="line">query.<span class="title function_">doesNotExist</span>(<span class="string">&quot;images&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 第一个符合条件的title和content</span></span><br><span class="line"><span class="keyword">const</span> query = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line"><span class="comment">// 确定字段</span></span><br><span class="line">query.<span class="title function_">select</span>([<span class="string">&quot;title&quot;</span>, <span class="string">&quot;content&quot;</span>]);</span><br><span class="line">query.<span class="title function_">first</span>().<span class="title function_">then</span>(<span class="function">(<span class="params">todo</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">const</span> title = todo.<span class="title function_">get</span>(<span class="string">&quot;title&quot;</span>); <span class="comment">// √</span></span><br><span class="line">  <span class="keyword">const</span> content = todo.<span class="title function_">get</span>(<span class="string">&quot;content&quot;</span>); <span class="comment">// √</span></span><br><span class="line">  <span class="keyword">const</span> notes = todo.<span class="title function_">get</span>(<span class="string">&quot;notes&quot;</span>); <span class="comment">// undefined</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h3 id="字符串查询"><a href="#字符串查询" class="headerlink" title="字符串查询"></a>字符串查询</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 相当于 SQL 中的 title LIKE &#x27;lunch%&#x27;</span></span><br><span class="line">query.<span class="title function_">startsWith</span>(<span class="string">&quot;title&quot;</span>, <span class="string">&quot;lunch&quot;</span>);</span><br><span class="line"><span class="comment">// 相当于 SQL 中的 title LIKE &#x27;%lunch%&#x27;</span></span><br><span class="line">query.<span class="title function_">contains</span>(<span class="string">&quot;title&quot;</span>, <span class="string">&quot;lunch&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// &#x27;title&#x27; 不包含 &#x27;ticket&#x27;（不区分大小写）</span></span><br><span class="line"><span class="keyword">const</span> regExp = <span class="keyword">new</span> <span class="title class_">RegExp</span>(<span class="string">&quot;^((?!ticket).)*$&quot;</span>, <span class="string">&quot;i&quot;</span>);</span><br><span class="line">query.<span class="title function_">matches</span>(<span class="string">&quot;title&quot;</span>, regExp);</span><br></pre></td></tr></table></figure><h3 id="数组查询"><a href="#数组查询" class="headerlink" title="数组查询"></a>数组查询</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 数组属性 tags 包含 工作</span></span><br><span class="line">query.<span class="title function_">equalTo</span>(<span class="string">&quot;tags&quot;</span>, <span class="string">&quot;工作&quot;</span>);</span><br><span class="line"><span class="comment">// 数组属性长度为 3</span></span><br><span class="line">query.<span class="title function_">sizeEqualTo</span>(<span class="string">&quot;tags&quot;</span>, <span class="number">3</span>);</span><br><span class="line"><span class="comment">// 所有数组属性 tags 同时包含 工作、销售 和 会议</span></span><br><span class="line">query.<span class="title function_">containsAll</span>(<span class="string">&quot;tags&quot;</span>, [<span class="string">&quot;工作&quot;</span>, <span class="string">&quot;销售&quot;</span>, <span class="string">&quot;会议&quot;</span>]);</span><br></pre></td></tr></table></figure><h3 id="统计数量"><a href="#统计数量" class="headerlink" title="统计数量"></a>统计数量</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> query = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">query.<span class="title function_">equalTo</span>(<span class="string">&quot;isComplete&quot;</span>, <span class="literal">true</span>);</span><br><span class="line">query.<span class="title function_">count</span>().<span class="title function_">then</span>(<span class="function">(<span class="params">count</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`<span class="subst">$&#123;count&#125;</span> 个 todo 已完成。`</span>);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h3 id="组合查询"><a href="#组合查询" class="headerlink" title="组合查询"></a>组合查询</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// or</span></span><br><span class="line"><span class="keyword">const</span> priorityQuery = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">priorityQuery.<span class="title function_">greaterThanOrEqualTo</span>(<span class="string">&quot;priority&quot;</span>, <span class="number">3</span>);</span><br><span class="line"><span class="keyword">const</span> isCompleteQuery = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">isCompleteQuery.<span class="title function_">equalTo</span>(<span class="string">&quot;isComplete&quot;</span>, <span class="literal">true</span>);</span><br><span class="line"><span class="keyword">const</span> query = <span class="variable constant_">AV</span>.<span class="property">Query</span>.<span class="title function_">or</span>(priorityQuery, isCompleteQuery);</span><br><span class="line"><span class="comment">// and</span></span><br><span class="line"><span class="keyword">const</span> startDateQuery = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">startDateQuery.<span class="title function_">greaterThanOrEqualTo</span>(</span><br><span class="line">  <span class="string">&quot;createdAt&quot;</span>,</span><br><span class="line">  <span class="keyword">new</span> <span class="title class_">Date</span>(<span class="string">&quot;2016-11-13 00:00:00&quot;</span>)</span><br><span class="line">);</span><br><span class="line"><span class="keyword">const</span> endDateQuery = <span class="keyword">new</span> <span class="variable constant_">AV</span>.<span class="title class_">Query</span>(<span class="string">&quot;Todo&quot;</span>);</span><br><span class="line">endDateQuery.<span class="title function_">lessThan</span>(<span class="string">&quot;createdAt&quot;</span>, <span class="keyword">new</span> <span class="title class_">Date</span>(<span class="string">&quot;2016-12-03 00:00:00&quot;</span>));</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> query = <span class="variable constant_">AV</span>.<span class="property">Query</span>.<span class="title function_">and</span>(startDateQuery, endDateQuery);</span><br></pre></td></tr></table></figure><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><ul><li>不等于和不包含查询（无法使用索引）</li><li>通配符在前面的字符串查询（无法使用索引）</li><li>有条件的 count（需要扫描所有数据）</li><li>skip 跳过较多的行数（相当于需要先查出被跳过的那些行）</li><li>无索引的排序（另外除非复合索引同时覆盖了查询和排序，否则只有其中一个能使用索引）</li><li>无索引的查询（另外除非复合索引同时覆盖了所有条件，否则未覆盖到的条件无法使用索引，如果未覆盖的条件区分度较低将会扫描较多的数据）</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;对象&quot;&gt;&lt;a href=&quot;#对象&quot; class=&quot;headerlink&quot; title=&quot;对象&quot;&gt;&lt;/a&gt;对象&lt;/h1&gt;&lt;h2 id=&quot;安装使用&quot;&gt;&lt;a href=&quot;#安装使用&quot; class=&quot;headerlink&quot; title=&quot;安装使用&quot;&gt;&lt;/a&gt;安装使用&lt;/h</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="nodejs" scheme="https://blog.nnnnzs.cn/tags/nodejs/"/>
    
    <category term="serveless" scheme="https://blog.nnnnzs.cn/tags/serveless/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-540-有序数组中的单一元素</title>
    <link href="https://blog.nnnnzs.cn/2022/02/14/leetcode-540-%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%8D%95%E4%B8%80%E5%85%83%E7%B4%A0/"/>
    <id>https://blog.nnnnzs.cn/2022/02/14/leetcode-540-%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%8D%95%E4%B8%80%E5%85%83%E7%B4%A0/</id>
    <published>2022-02-14T07:37:22.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h2 id="给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。"><a href="#给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。" class="headerlink" title="给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。"></a>给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。</h2><p>请你找出并返回只出现一次的那个数。<br>你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。</p><h2 id="示例-1"><a href="#示例-1" class="headerlink" title="示例 1:"></a>示例 1:</h2><p>输入: nums = [1,1,2,3,3,4,4,8,8]<br>输出: 2</p><h2 id="示例-2"><a href="#示例-2" class="headerlink" title="示例 2:"></a>示例 2:</h2><p>输入: nums =  [3,3,7,7,10,11,11]<br>输出: 10</p><p>提示:</p><p>1 &lt;= nums.length &lt;= 105<br>0 &lt;= nums[i] &lt;= 105</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。&quot;&gt;&lt;a href=&quot;#给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。&quot; class=&quot;headerlink&quot; title=&quot;给你一个仅由整数组成</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>认真生活</title>
    <link href="https://blog.nnnnzs.cn/2022/02/07/%E8%AE%A4%E7%9C%9F%E7%94%9F%E6%B4%BB/"/>
    <id>https://blog.nnnnzs.cn/2022/02/07/%E8%AE%A4%E7%9C%9F%E7%94%9F%E6%B4%BB/</id>
    <published>2022-02-07T08:57:34.000Z</published>
    <updated>2022-10-12T13:45:30.945Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>2022年02月07日，春节假期的最后一天，终于迎来了虎年的第一场雪</p></blockquote><p>今年过年的假期放的比较早，从1月25日一直到2月7日接近半个月的假期</p><p>提前放假的好处就是终于有时间认真收拾自己的屋子，收拾起堆叠在杂货箱里面的东西</p><h2 id="初中"><a href="#初中" class="headerlink" title="初中"></a>初中</h2><ul><li>初中期间各种朗诵比赛 监督岗 班干证书</li><li>初三高一高三大学的毕业留影</li></ul><h2 id="高中"><a href="#高中" class="headerlink" title="高中"></a>高中</h2><ul><li>2014年 为了玩gta5而买的游戏手柄</li><li>圆孔的有线耳机</li><li>安工大附中的作文纸 印有附中大门的数学簿<br><img src="https://static.nnnnzs.cn/upload/fed60afd66b90fb7ee5ae287f86d0908.png" alt=""></li></ul><h2 id="大学"><a href="#大学" class="headerlink" title="大学"></a>大学</h2><ul><li>笔记本电脑散热器</li><li>大学期间来往合肥马鞍山的高铁票<br><img src="https://static.nnnnzs.cn/upload/2e1e12afe18e5a889e56e7efbb45efa2.png" alt=""></li><li>大学全班的三方协议蓝联</li><li>学生会和社团的工作牌笔记本</li><li>一个拆下来的固态 一个160G的</li><li>钢铁侠的U盘</li><li>两台斐讯k2路由器  一个150M传输的TP-link </li><li>党课结业证书</li><li>毕业纪念礼物<br><img src="https://static.nnnnzs.cn/upload/41de5ef757e118c4b7de8f1d344b70b4.png" alt="https://static.nnnnzs.cn/upload/41de5ef757e118c4b7de8f1d344b70b4.png"></li><li>玩客云的矿机</li></ul><h2 id="个人定制"><a href="#个人定制" class="headerlink" title="个人定制"></a>个人定制</h2><ul><li>刻有logo的钢笔<br><img src="https://static.nnnnzs.cn/upload/bdefdb406166abbeb2d66422ad21eaf9.png" alt=""></li><li>精铸的带走logo的吊坠<br><img src="https://static.nnnnzs.cn/upload/8e7f9257c371498095cac29828199b8e.png" alt=""></li><li>带有logo的可口可乐<br><img src="https://static.nnnnzs.cn/upload/ac80af4984134ad2e0dd1babc771cfab.png" alt=""></li><li>带有logo的游戏机<br><img src="https://static.nnnnzs.cn/upload/6f081b26b8ba41a66ecc2039e85143dd.png" alt=""></li></ul><h2 id="工作期间"><a href="#工作期间" class="headerlink" title="工作期间"></a>工作期间</h2><ul><li>三份的体检报告</li><li>10000+1000的期权</li><li>陈雪晴的笔记本还有照片</li><li>2018年互联网大会的工作证</li><li>跟庞颖互换（骗来的)礼物 鼓浪屿音乐盒</li><li>问惠喆圆借的数据结构</li><li>职场礼仪一本通<br><img src="https://static.nnnnzs.cn/upload/199e46aea609da3ed9eb1047f8a16bde.png" alt=""></li><li>一本民法典</li><li>2020年10月02日 13.16-13.38在西安的打车票</li><li>大雁塔的纪念币<br><img src="https://static.nnnnzs.cn/upload/6660e6ceaeb60afc4cc40a5a1865596a.png" alt=""></li><li>魅族17的手机盒 卡针<br><img src="https://static.nnnnzs.cn/upload/30c732a759fea83ef5510783ebea4920.png" alt=""></li><li>加上用的一共三个机械键盘</li><li>魅族pop蓝牙耳机</li><li>抗疫奖章<br><img src="https://static.nnnnzs.cn/upload/4ebbc9a9abbbf33e92bc782b31b332a0.png" alt=""></li></ul><p>实际上去年的时候已经扔掉了很多东西  比如一个詹姆斯的手办，一个领军的水晶杯  </p><p>虽然我喜欢收藏，喜欢备份，但是有句话没错   </p><p>定期丢掉一些物品是提高生活质量的保障 </p><p>今天是假期的最后一天了，明年没什么意外的应该不会那么长时间的出差</p><p>去年假装自己是一个奋斗逼，结果大部分时间浪费在原神上面，浪费在短视频上面</p><p>被别人说不会做饭、一身烟味，不会生活</p><p>今年要改变自己</p><p>戒烟 早睡 护肤 </p><p>少油少盐 </p><p>换个大一点的房间，有阳光，可以跳绳，可以平板支撑</p><p>今天称的体重，68KG</p><p>立贴为证，5.7之前，体重控制到64以下 </p><p>认真生活</p><p>做回以前那个脸上没痘肚上没肉的自己</p><p><img src="https://static.nnnnzs.cn/upload/b4854f4031d33c972d3498a1d79a704d.png" alt=""></p><p align="right">NNNNzs</p><p align="right">壬寅年正月初七</p><p align="right">2022年02月07日22:30:10</p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;2022年02月07日，春节假期的最后一天，终于迎来了虎年的第一场雪&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今年过年的假期放的比较早，从1月25日一直到2月7日接近半个月的假期&lt;/p&gt;
&lt;p&gt;提前放假的好处就是终于有时间认真收拾自己的屋子，收拾</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="忧伤感怀" scheme="https://blog.nnnnzs.cn/tags/%E5%BF%A7%E4%BC%A4%E6%84%9F%E6%80%80/"/>
    
  </entry>
  
  <entry>
    <title>Docker-网络</title>
    <link href="https://blog.nnnnzs.cn/2022/01/28/Docker-%E7%BD%91%E7%BB%9C/"/>
    <id>https://blog.nnnnzs.cn/2022/01/28/Docker-%E7%BD%91%E7%BB%9C/</id>
    <published>2022-01-28T09:25:47.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<h1 id="docker网络"><a href="#docker网络" class="headerlink" title="docker网络"></a>docker网络</h1><h2 id="docker-容器玉操作系统通信机制"><a href="#docker-容器玉操作系统通信机制" class="headerlink" title="docker 容器玉操作系统通信机制"></a>docker 容器玉操作系统通信机制</h2>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;docker网络&quot;&gt;&lt;a href=&quot;#docker网络&quot; class=&quot;headerlink&quot; title=&quot;docker网络&quot;&gt;&lt;/a&gt;docker网络&lt;/h1&gt;&lt;h2 id=&quot;docker-容器玉操作系统通信机制&quot;&gt;&lt;a href=&quot;#docker-容器玉操</summary>
      
    
    
    
    
    <category term="运维" scheme="https://blog.nnnnzs.cn/tags/%E8%BF%90%E7%BB%B4/"/>
    
    <category term="docker" scheme="https://blog.nnnnzs.cn/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>2021年度工作总结</title>
    <link href="https://blog.nnnnzs.cn/2022/01/19/2021%E5%B9%B4%E5%BA%A6%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93/"/>
    <id>https://blog.nnnnzs.cn/2022/01/19/2021%E5%B9%B4%E5%BA%A6%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93/</id>
    <published>2022-01-19T13:41:19.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<h1 id="2021年度工作总结"><a href="#2021年度工作总结" class="headerlink" title="2021年度工作总结"></a>2021年度工作总结</h1><h2 id="第一段是抄的"><a href="#第一段是抄的" class="headerlink" title="第一段是抄的"></a>第一段是抄的</h2><p>自2021年3月8日入职以来，至今已近一年，有硕果累累的喜悦，有工作当中的艰辛，也有遇到困难和挫折时的惆怅。  </p><p>一年的时间，每当自己在总结它的时候，感觉是那么的短暂—弹指一挥间。而也就是在这一挥间，承载着太多太多，有收获与成就，有失败与不足。回头看看2021年的足迹，伴随着自己一年的是学习与坚持。  </p><h2 id="正文"><a href="#正文" class="headerlink" title="正文"></a>正文</h2><p>刚入职时，了解到公司的web项目大部分都是前后端分离的架构，后端拆了微服务，作为前端也预研并尝试了搭建微前端架构。<br>微前端目前还是一个很新的概念，虽然也有如乾坤这样的框架，但是槽点较多，且在已有项目迁移上还有很大的成本，业务逻辑过于耦合，需求变化过于频繁，浅尝辄止。  </p><p>参与某平台的实时通讯功能开发，初次和章炎搭档，虽然扯了不少皮，但185+的身高让我敢怒不敢言。后共同参与标准验证功能开发。  </p><p>在职期间积极参加部门团建，公司团建，公司运动周，在信任自己和他人的基础上，思想统一，行动一致，积极融入团队，乐于接收同事的帮助，一言不合就20块钱。  </p><p>七月份南京疫情爆发，LZ撤场，所在小区封闭，居家隔离了21天，收到了公司以及四组成员送来的温暖，颇受感动  </p><p>“真的会有人踏着七彩祥云给居家隔离的我，送烟送饭送可乐，还有果冻”  </p><p>隔离期间持续学习，自我完善。研究了关于前端文档离线化，nodejs多版本共存与切换，<br>基于supermap关于想定编辑的web端迁移事项。无论是工作上还是面对疫情，有成果，也有力所不能及的事情。</p><p>出来之后约一个星期时间，加入中国电科某项目，某前端功能开发，其他前端功能的辅助支撑</p><p>其余大部分时间还是和章炎一起驻场LZ，见到了很多平时在公司见不到的人</p><p>主导某评估系统前端功能开发  </p><p>从夏到冬，在陆指见证6次满月。从短袖到棉袄，在LZ见证了南京疫情的起起伏伏  </p><p>起过早，通过宵，睡过100多一间连浴巾都脱线的宾馆，吃过12块钱连饭盒都没有的快餐。  </p><p>拉过网线，写过文档，写过electron套壳webview的客户端，用indexDB做过离线存储，努力变得全能，一人拆成多人用。 </p><p>吵过架，也发过脾气，需求在磨合中努力往甲方期望的方向上推进  </p><p>提前下过班，国庆也来加过班，保障项目能按照时间节点顺利通过各项验收和测试。  </p><h2 id="展望"><a href="#展望" class="headerlink" title="展望"></a>展望</h2><p>学无止境，华如前端的路还很长。</p><p>基础设施的建设还很匮乏：工具链，脚手架，流水线，lint规范，组件库，流程规范的总结，codeReview的缺失等等  </p><p>不能因为内网环境而束缚手脚，也不能因合同项目而怠慢。</p><p>祖国尚未统一，吾辈仍需努力。生在红旗下，长在春风里，目光所至皆为华夏。</p><p>卫我中华，如山使命。</p><p>祝华如10周年快乐</p><p><img src="https://static.nnnnzs.cn/upload/bd8b7b0ef0a3cf3409f527f8512cf576.jpg" alt=""></p><p>风雨犹祝，山海同欢，是承天地之佑<br>星移斗转，沧海桑田，烟火人间依旧<br>功名在我，百岁千秋，毋忘秉烛夜游<br>今古诸事，激荡中流，宏图待看新秀</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;2021年度工作总结&quot;&gt;&lt;a href=&quot;#2021年度工作总结&quot; class=&quot;headerlink&quot; title=&quot;2021年度工作总结&quot;&gt;&lt;/a&gt;2021年度工作总结&lt;/h1&gt;&lt;h2 id=&quot;第一段是抄的&quot;&gt;&lt;a href=&quot;#第一段是抄的&quot; class=&quot;</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>github action</title>
    <link href="https://blog.nnnnzs.cn/2022/01/11/github-action/"/>
    <id>https://blog.nnnnzs.cn/2022/01/11/github-action/</id>
    <published>2022-01-11T00:26:37.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<p>利用github action，在提交之后，自动将hexo打包后的内容推送到服务器上</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">auto-publish</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">workflows</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">master</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line"></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">缓存</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/cache@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">~/.npm</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;</span> <span class="string">runner.os</span> <span class="string">&#125;&#125;-node-$&#123;&#123;</span> <span class="string">hashFiles(&#x27;**/package-lock.json&#x27;)</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">restore-keys:</span> <span class="string">|</span></span><br><span class="line"><span class="string">            $&#123;&#123; runner.os &#125;&#125;-node-</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Checkout</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/checkout@master</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">build</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v1</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">install</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">generate</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run</span> <span class="string">g</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">deploy</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">appleboy/scp-action@master</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">host:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.HOST</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">username:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.USERNAME</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">password:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PASSWORD</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">port:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PORT</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">source:</span> <span class="string">&quot;public/*&quot;</span></span><br><span class="line">          <span class="attr">target:</span> <span class="string">&quot;/www/wwwroot/blog.nnnnzs.cn/&quot;</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">cd</span> <span class="string">public</span> <span class="string">&amp;&amp;</span> <span class="string">ls</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;利用github action，在提交之后，自动将hexo打包后的内容推送到服务器上&lt;/p&gt;
&lt;figure class=&quot;highlight yml&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/spa</summary>
      
    
    
    
    
    <category term="运维" scheme="https://blog.nnnnzs.cn/tags/%E8%BF%90%E7%BB%B4/"/>
    
    <category term="github" scheme="https://blog.nnnnzs.cn/tags/github/"/>
    
  </entry>
  
  <entry>
    <title>Docker-常用命令</title>
    <link href="https://blog.nnnnzs.cn/2022/01/10/Docker-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/"/>
    <id>https://blog.nnnnzs.cn/2022/01/10/Docker-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</id>
    <published>2022-01-10T02:29:10.000Z</published>
    <updated>2022-10-12T13:45:30.940Z</updated>
    
    <content type="html"><![CDATA[<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#mac虚拟机常用位置</span></span><br><span class="line">/var/lib/docker/overlay2/6cf74ecc1227dc93a85d02f15fc85c588111ea0807a65b9c2b85d9ecc704b621/diff/www/wwwroot/admin.walle-web.io</span><br><span class="line"></span><br><span class="line"><span class="comment"># 根据overlay2目录名 查找containerId名称</span></span><br><span class="line">docker ps -q | xargs docker inspect --format <span class="string">&#x27;&#123;&#123;.State.Pid&#125;&#125;, &#123;&#123;.Id&#125;&#125;, &#123;&#123;.Name&#125;&#125;, &#123;&#123;.GraphDriver.Data.WorkDir&#125;&#125;&#x27;</span> | grep <span class="string">&quot;b68f87da21051f6e3037a72cd703e2d2b0a740e607dc184a14db177e2b4c54da&quot;</span></span><br><span class="line"></span><br><span class="line">Centos-<span class="built_in">test</span>  b68f87da21051f6e3037a72cd703e2d2b0a740e607dc184a14db177e2b4c54da</span><br><span class="line"></span><br><span class="line">Error path </span><br><span class="line">/var/lib/docker/overlay2/d4e4dcf2b5388fcd5ad0d940fe9d69bc367d9458f6be60c7d82b2ac240cb853e/diff/www/wwwroot/walle-web/fe</span><br><span class="line"></span><br><span class="line">Centos path </span><br><span class="line">/var/lib/docker/overlay2/b68f87da21051f6e3037a72cd703e2d2b0a740e607dc184a14db177e2b4c54da</span><br><span class="line"></span><br><span class="line"><span class="comment"># docker启动mysql 切记是5.7 </span></span><br><span class="line">docker run -itd -p 3306:3306 --name mysql -v /Users/nnnnzs/docker_v/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7</span><br><span class="line"></span><br><span class="line"><span class="comment"># redis</span></span><br><span class="line"><span class="comment"># 切记是5.0.3</span></span><br><span class="line">docker run -itd --name my-redis -p 6379:6379 redis:5.0.3</span><br><span class="line"></span><br><span class="line"><span class="comment">## mac下docker 虚拟机目录</span></span><br><span class="line"><span class="built_in">stty</span> -<span class="built_in">echo</span> -icanon &amp;&amp; nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock &amp;&amp; <span class="built_in">stty</span> sane <span class="comment"># ls -al /var/lib/docker/overlay2/</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=</summary>
      
    
    
    
    
    <category term="运维" scheme="https://blog.nnnnzs.cn/tags/%E8%BF%90%E7%BB%B4/"/>
    
    <category term="docker" scheme="https://blog.nnnnzs.cn/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>我的2021</title>
    <link href="https://blog.nnnnzs.cn/2022/01/01/%E6%88%91%E7%9A%842021/"/>
    <id>https://blog.nnnnzs.cn/2022/01/01/%E6%88%91%E7%9A%842021/</id>
    <published>2021-12-31T16:04:26.000Z</published>
    <updated>2022-10-12T13:45:30.943Z</updated>
    
    <content type="html"><![CDATA[<h1 id="我的2021"><a href="#我的2021" class="headerlink" title="我的2021"></a>我的2021</h1><blockquote><p>每一个不曾起舞的日子都是对生命的辜负</p></blockquote><p>每次写年度总结，标题都是用公历纪年，内容却是截止到农历纪年<br>对于中国人来说公元年确实没什么仪式感，只放三天假<br>另一方面，写个年度总结太费劲了<br>从12月31日要思考到大年三十，甚至大年三十晚上在家写总结</p><p>拖延的习惯不好，所以今年从12月初就开始思考</p><p>过年期间手气比较背，跟亲戚小x怡情，输了三千多<br>虽然不至于伤筋动骨，但是也算一笔意外支出了  </p><p>翻开朋友圈、微博、公众号、手机相册、博客<br>感觉没啥好总结的，今年过的不是很“精彩”，甚至有点浪费生命，大半年时间都在出差<br>但今年公众号更新的很频繁<br>2.26 我在百助这三年<br>3.2 承蒙照顾<br>3.3 有些鸟儿是管不住的<br>3.8 最难熬的是第一天<br>4.12 希望你回家不用走很远的路<br>5.7 还剩六年<br>6.15 我与华园，不说再见<br>7.25 出差结束了<br>8.19 隔离小记<br>9.12 吾爱吾师，吾更爱真理<br>10.25 成家立业，业立家成<br>11.10 南京本来就是省外<br>到今天这篇这篇《我的2021》<br>每个月都至少一篇话题不重复的水文<br>所以这篇年度总结也不是传统意义上一年一次的总结<br>而是月度总结的总结，还是先看年初定的目标<br><img src="https://static.nnnnzs.cn/upload/e6473c85937be8582de300fd50e84a9a.png" alt="年初计划"></p><ol><li><p>离职算是意料之中的事情，年前就已经拿单子了，也写了很多关于第一份工作的思考。后听闻来了一位正义人士寻求法律援助，然后越来越多的人寻求法律援助，想起这么一段话。<br>如果你不愿意走在前面，请你跟着队伍；<br>如果你不愿意跟着队伍走，请你在路边围观；<br>如果你不愿意在路边围观，请你在网上呐喊；<br>如果你这些都做不到，请默默闭上你的眼，坐下来享受我们为你争取来的权利；<br>如果你这都做不到，请你收起你的嘲讽跟无视的目光。<br>你的视而不见，让我十分忧伤；<br>你的冷嘲热讽，让我倍感心伤！<br>我们争取的也是属于你的阳光啊！</p></li><li><p>截止基金收益率1%，整体支付宝理财收益率1.97%。今年基金收益很不理想，累计收益金额和去年基本持平甚至还少了点，可以说一年的收益全给理财金赚管理费了，甚至还亏了</p></li><li><p>Vue3源码想几次尝试但是出差996根本没时间，倒是学了个TS的实战项目，项目功能需求倒是深入看过几个开源软件的源码，浅尝辄止的达到目的，拿到不对外暴露的api</p></li><li><p>博客尝试用Vue3 + vite写了一个版本，想着封装组件，想等10月份Nuxt3重构的，结果文档不齐全，很多黑盒的api得翻源码才能知道，而且还是beta版本，bug挺多，所以只能放弃，但不能说没写，也算勉强完成</p></li><li><p>整理手机备份相册还是没做，博客的旅游版块，已经尝试在高德地图上面标点了，但是好像gps坐标轴还要转换，坐标飘移严重，不知道是拍照的时候定位就歪了，还是什么问题，没能完全解决，也没时间解决了</p></li><li><p>五一家里有事，国庆节出差加班了，之前还在选择在外打工是多干活多赚点钱，还是多周边游，没想到现实已经给出答案——社畜是没有时间旅游的。</p></li><li><p>15w这个年中就达到 ，不出所料的话发完年终奖应该可以有20w了，南京首付的话，得攒到30岁吧。</p></li></ol><h2 id="改变"><a href="#改变" class="headerlink" title="改变"></a>改变</h2><p>从崩坏3的坑跳到原神的坑：为此特地买了个ipad打游戏<br>从马鞍山996的坑跳到南京996的坑：大概过了3个月左右的965生活就一直出差出差，常态凌晨下班甚至还通宵过<br>从自研项目的坑跳到外包项目的坑：为了满足合同指标真的什么事情都能干得出来<br>明白了业务第一，产品第二，技术第三：技术永远是为了业务服务，社招大厂基本不可能了，学历永远是门槛，多赚点钱才是正确的，钱多的外包也未尝不是一种选择，如此烂的履历其实已经能达到今天这种现状也算不容易了</p><h2 id="挑战"><a href="#挑战" class="headerlink" title="挑战"></a>挑战</h2><p>serverless踩了很多坑，网关、云函数从免费到收费到弃用<br>睡眠不足，吃完午饭就犯困，血糖高还是上了年龄了？<br>揣摩甲方的需求<br>今年自己做了一些私活，也一个人从前端到后端撸完一个项目，还是比较累的，时间管理上会有些冲突<br>今年有段时间疯狂的想要买车，想在25岁之前靠自己提车，于是刷懂车帝刷到睡着，但是今年油价14次上涨，且车的实际意义不大</p><h2 id="脱单"><a href="#脱单" class="headerlink" title="脱单"></a>脱单</h2><p>春天嫂子介绍一个她同事，夏天同事介绍一个她室友，秋天舅妈介绍一个朋友的妹妹，均无后续。<br>冬天高中同学介绍一个她同事，终于过了一个不用听《圣诞结》的圣诞节，也算是过了一个不窝在家里的跨年夜<br>但是脱单这条路还很长啊</p><p>2020年走了很多路，却总有人共行。<br>2021年一个人拖着行李箱，马鞍山-南京雨花台-南京浦口，好像也走了很多路，却少了很多见闻。<br>当工作和生活区分的很开后，不扩大交际圈就只剩两点一线的。<br>每个人都有既定的朋友圈，交际圈，想要闯入一个人的生活很难，远了怕疏，近了怕烦<br>当旅行只是为了到达目的地，就想着加快脚步，沿途的风景就不是那么吸引人，少了几分随性，是错过了美好，还是达到了预期了才叫美好？<br>2022年希望有更多自己的时间，把买来的课学了，想看的书看了，想去的地方去了，锻炼身体，早睡早起，护肤养生，把待办事项中一个个空心圆圈打上勾，能够阶段性有序完成一个个目标。  </p><p>希望是本无所谓有，无所谓无的。正如地上的路，其实地上本没有路，走的人多了，也变成了路。<br>自己走的路，每一步都算数，不后悔亦无须别人同情，可以低头但不认输，处身自苦，义出肺腑，生得其名，死得其所。  </p><p align="right">2022年01月01日00:30:20</p><p align="right">NNNNz</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;我的2021&quot;&gt;&lt;a href=&quot;#我的2021&quot; class=&quot;headerlink&quot; title=&quot;我的2021&quot;&gt;&lt;/a&gt;我的2021&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;每一个不曾起舞的日子都是对生命的辜负&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;每</summary>
      
    
    
    
    
    <category term="总结" scheme="https://blog.nnnnzs.cn/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="忧伤感怀" scheme="https://blog.nnnnzs.cn/tags/%E5%BF%A7%E4%BC%A4%E6%84%9F%E6%80%80/"/>
    
  </entry>
  
  <entry>
    <title>1995.统计特殊四元组</title>
    <link href="https://blog.nnnnzs.cn/2021/12/29/leetcode-1995-%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E5%9B%9B%E5%85%83%E7%BB%84/"/>
    <id>https://blog.nnnnzs.cn/2021/12/29/leetcode-1995-%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E5%9B%9B%E5%85%83%E7%BB%84/</id>
    <published>2021-12-29T06:30:27.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="1995-统计特殊四元组"><a href="#1995-统计特殊四元组" class="headerlink" title="1995. 统计特殊四元组"></a>1995. 统计特殊四元组</h1><h2 id="给你一个-下标从-0-开始-的整数数组-nums-，返回满足下述条件的-不同-四元组-a-b-c-d-的-数目-："><a href="#给你一个-下标从-0-开始-的整数数组-nums-，返回满足下述条件的-不同-四元组-a-b-c-d-的-数目-：" class="headerlink" title="给你一个 下标从 0 开始 的整数数组 nums ，返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 ："></a>给你一个 下标从 0 开始 的整数数组 nums ，返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 ：</h2><h2 id="nums-a-nums-b-nums-c-nums-d-，且"><a href="#nums-a-nums-b-nums-c-nums-d-，且" class="headerlink" title="nums[a] + nums[b] + nums[c] == nums[d] ，且"></a>nums[a] + nums[b] + nums[c] == nums[d] ，且</h2><h2 id="a-lt-b-lt-c-lt-d"><a href="#a-lt-b-lt-c-lt-d" class="headerlink" title="a &lt; b &lt; c &lt; d"></a>a &lt; b &lt; c &lt; d</h2><h2 id="示例-1："><a href="#示例-1：" class="headerlink" title="示例 1："></a>示例 1：</h2><p>输入：nums = [1,2,3,6]<br>输出：1<br>解释：满足要求的唯一一个四元组是 (0, 1, 2, 3) 因为 1 + 2 + 3 == 6 。</p><h2 id="示例-2："><a href="#示例-2：" class="headerlink" title="示例 2："></a>示例 2：</h2><p>输入：nums = [3,3,6,4,5]<br>输出：0<br>解释：[3,3,6,4,5] 中不存在满足要求的四元组。</p><h2 id="示例-3："><a href="#示例-3：" class="headerlink" title="示例 3："></a>示例 3：</h2><p>输入：nums = [1,1,1,3,5]<br>输出：4<br>解释：满足要求的 4 个四元组如下：</p><ul><li>(0, 1, 2, 3): 1 + 1 + 1 == 3</li><li>(0, 1, 3, 4): 1 + 1 + 3 == 5</li><li>(0, 2, 3, 4): 1 + 1 + 3 == 5</li><li>(1, 2, 3, 4): 1 + 1 + 3 == 5</li></ul><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">number[]</span>&#125; <span class="variable">nums</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@return</span> &#123;<span class="type">number</span>&#125;</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">var</span> countQuadruplets = <span class="keyword">function</span>(<span class="params">nums</span>) &#123;</span><br><span class="line"><span class="keyword">const</span> length = nums.<span class="property">length</span>;</span><br><span class="line">  <span class="keyword">let</span> res = <span class="number">0</span>;</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>; i &lt; length - <span class="number">3</span>; i++) &#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">let</span> j = i + <span class="number">1</span>; j &lt; length - <span class="number">2</span>; j++) &#123;</span><br><span class="line">      <span class="keyword">for</span> (<span class="keyword">let</span> m = j + <span class="number">1</span>; m &lt; length - <span class="number">1</span>; m++) &#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">let</span> n = m + <span class="number">1</span>; n &lt; length; n++) &#123;</span><br><span class="line">          <span class="keyword">if</span> (nums[i] + nums[j] + nums[m] === nums[n]) &#123;</span><br><span class="line">            res++;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(res)</span><br><span class="line">  <span class="keyword">return</span> res;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;1995-统计特殊四元组&quot;&gt;&lt;a href=&quot;#1995-统计特殊四元组&quot; class=&quot;headerlink&quot; title=&quot;1995. 统计特殊四元组&quot;&gt;&lt;/a&gt;1995. 统计特殊四元组&lt;/h1&gt;&lt;h2 id=&quot;给你一个-下标从-0-开始-的整数数组-num</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-1078.Bigram 分词</title>
    <link href="https://blog.nnnnzs.cn/2021/12/26/leetcode-1078-Bigram-%E5%88%86%E8%AF%8D/"/>
    <id>https://blog.nnnnzs.cn/2021/12/26/leetcode-1078-Bigram-%E5%88%86%E8%AF%8D/</id>
    <published>2021-12-26T08:47:39.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="给出第一个词-first-和第二个词-second，考虑在某些文本-text-中可能以-“first-second-third”-形式出现的情况，其中-second-紧随-first-出现，third-紧随-second-出现。"><a href="#给出第一个词-first-和第二个词-second，考虑在某些文本-text-中可能以-“first-second-third”-形式出现的情况，其中-second-紧随-first-出现，third-紧随-second-出现。" class="headerlink" title="给出第一个词 first 和第二个词 second，考虑在某些文本 text 中可能以 “first second third” 形式出现的情况，其中 second 紧随 first 出现，third 紧随 second 出现。"></a>给出第一个词 first 和第二个词 second，考虑在某些文本 text 中可能以 “first second third” 形式出现的情况，其中 second 紧随 first 出现，third 紧随 second 出现。</h1><h1 id="对于每种这样的情况，将第三个词-“third”-添加到答案中，并返回答案。"><a href="#对于每种这样的情况，将第三个词-“third”-添加到答案中，并返回答案。" class="headerlink" title="对于每种这样的情况，将第三个词 “third” 添加到答案中，并返回答案。"></a>对于每种这样的情况，将第三个词 “third” 添加到答案中，并返回答案。</h1><h2 id="示例-1："><a href="#示例-1：" class="headerlink" title="示例 1："></a>示例 1：</h2><p>输入：text = “alice is a good girl she is a good student”, first = “a”, second = “good”<br>输出：[“girl”,”student”]</p><h2 id="示例-2："><a href="#示例-2：" class="headerlink" title="示例 2："></a>示例 2：</h2><p>输入：text = “we will we will rock you”, first = “we”, second = “will”<br>输出：[“we”,”rock”]</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">string</span>&#125; <span class="variable">text</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">string</span>&#125; <span class="variable">first</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">string</span>&#125; <span class="variable">second</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@return</span> &#123;<span class="type">string[]</span>&#125;</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">var</span> findOcurrences = <span class="keyword">function</span> (<span class="params">text, first, second</span>) &#123;</span><br><span class="line">  <span class="keyword">let</span> arr = text.<span class="title function_">split</span>(<span class="string">&#x27; &#x27;</span>);</span><br><span class="line">  <span class="keyword">let</span> res = []</span><br><span class="line">  arr.<span class="title function_">forEach</span>(<span class="function">(<span class="params">word, index</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">if</span> (index &lt; arr.<span class="property">length</span> - <span class="number">2</span>) &#123;</span><br><span class="line">      <span class="keyword">if</span> (word === first &amp;&amp; arr[index + <span class="number">1</span>] === second) &#123;</span><br><span class="line">        res.<span class="title function_">push</span>(arr[index + <span class="number">2</span>])</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;);</span><br><span class="line">  <span class="keyword">return</span> res;</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="title function_">findOcurrences</span>(<span class="string">&#x27;we will we will rock you&#x27;</span>, <span class="string">&#x27;we&#x27;</span>, <span class="string">&#x27;will&#x27;</span>)</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;给出第一个词-first-和第二个词-second，考虑在某些文本-text-中可能以-“first-second-third”-形式出现的情况，其中-second-紧随-first-出现，third-紧随-second-出现。&quot;&gt;&lt;a href=&quot;#给出第一个词</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-1705.吃苹果的最大数目</title>
    <link href="https://blog.nnnnzs.cn/2021/12/24/leetcode-1705-%E5%90%83%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE/"/>
    <id>https://blog.nnnnzs.cn/2021/12/24/leetcode-1705-%E5%90%83%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE/</id>
    <published>2021-12-24T07:32:40.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="有一棵特殊的苹果树，一连-n-天，每天都可以长出若干个苹果。在第-i-天，树上会长出-apples-i-个苹果，"><a href="#有一棵特殊的苹果树，一连-n-天，每天都可以长出若干个苹果。在第-i-天，树上会长出-apples-i-个苹果，" class="headerlink" title="有一棵特殊的苹果树，一连 n 天，每天都可以长出若干个苹果。在第 i 天，树上会长出 apples[i] 个苹果，"></a>有一棵特殊的苹果树，一连 n 天，每天都可以长出若干个苹果。在第 i 天，树上会长出 apples[i] 个苹果，</h1><h1 id="这些苹果将会在-days-i-天后（也就是说，第-i-days-i-天时）腐烂，变得无法食用。"><a href="#这些苹果将会在-days-i-天后（也就是说，第-i-days-i-天时）腐烂，变得无法食用。" class="headerlink" title="这些苹果将会在 days[i] 天后（也就是说，第 i + days[i] 天时）腐烂，变得无法食用。"></a>这些苹果将会在 days[i] 天后（也就是说，第 i + days[i] 天时）腐烂，变得无法食用。</h1><h1 id="也可能有那么几天，树上不会长出新的苹果，此时用-apples-i-0-且-days-i-0-表示。"><a href="#也可能有那么几天，树上不会长出新的苹果，此时用-apples-i-0-且-days-i-0-表示。" class="headerlink" title="也可能有那么几天，树上不会长出新的苹果，此时用 apples[i] == 0 且 days[i] == 0 表示。"></a>也可能有那么几天，树上不会长出新的苹果，此时用 apples[i] == 0 且 days[i] == 0 表示。</h1><h1 id="你打算每天-最多-吃一个苹果来保证营养均衡。注意，你可以在这-n-天之后继续吃苹果。"><a href="#你打算每天-最多-吃一个苹果来保证营养均衡。注意，你可以在这-n-天之后继续吃苹果。" class="headerlink" title="你打算每天 最多 吃一个苹果来保证营养均衡。注意，你可以在这 n 天之后继续吃苹果。"></a>你打算每天 最多 吃一个苹果来保证营养均衡。注意，你可以在这 n 天之后继续吃苹果。</h1><h1 id="给你两个长度为-n-的整数数组-days-和-apples-，返回你可以吃掉的苹果的最大数目。"><a href="#给你两个长度为-n-的整数数组-days-和-apples-，返回你可以吃掉的苹果的最大数目。" class="headerlink" title="给你两个长度为 n 的整数数组 days 和 apples ，返回你可以吃掉的苹果的最大数目。"></a>给你两个长度为 n 的整数数组 days 和 apples ，返回你可以吃掉的苹果的最大数目。</h1><h2 id="示例-1："><a href="#示例-1：" class="headerlink" title="示例 1："></a>示例 1：</h2><p> 输入：apples = [1,2,3,5,2], days = [3,2,1,4,2]<br> 输出：7<br> 解释：你可以吃掉 7 个苹果：</p><ul><li>第一天，你吃掉第一天长出来的苹果。</li><li>第二天，你吃掉一个第二天长出来的苹果。</li><li>第三天，你吃掉一个第二天长出来的苹果。过了这一天，第三天长出来的苹果就已经腐烂了。</li><li>第四天到第七天，你吃的都是第四天长出来的苹果。<h2 id="示例-2："><a href="#示例-2：" class="headerlink" title="示例 2："></a>示例 2：</h2>输入：apples = [3,0,0,0,0,2], days = [3,0,0,0,0,2]<br>输出：5<br>解释：你可以吃掉 5 个苹果：</li><li>第一天到第三天，你吃的都是第一天长出来的苹果。</li><li>第四天和第五天不吃苹果。</li><li>第六天和第七天，你吃的都是第六天长出来的苹果。</li></ul><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">number[]</span>&#125; <span class="variable">apples</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">number[]</span>&#125; <span class="variable">days</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@return</span> &#123;<span class="type">number</span>&#125;</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@description</span> 优先队列</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="comment">//  https://leetcode-cn.com/problems/maximum-number-of-eaten-apples/</span></span><br><span class="line"><span class="keyword">var</span> eatenApples = <span class="keyword">function</span> (<span class="params">apples, days</span>) &#123;</span><br><span class="line">  <span class="comment">// 苹果堆</span></span><br><span class="line">  <span class="keyword">let</span> appleBuck = [];</span><br><span class="line">  <span class="keyword">let</span> totalDays = apples.<span class="property">length</span></span><br><span class="line">  <span class="comment">// 从第一天开始</span></span><br><span class="line">  <span class="keyword">let</span> i = <span class="number">0</span>;</span><br><span class="line">  <span class="comment">// 可以吃掉苹果的次数</span></span><br><span class="line">  <span class="keyword">let</span> canEatAppleDays = <span class="number">0</span>;</span><br><span class="line">  <span class="keyword">while</span> (i === <span class="number">0</span> || appleBuck.<span class="property">length</span> !== <span class="number">0</span> || totalDays &gt;= <span class="number">0</span>) &#123;</span><br><span class="line">    <span class="keyword">if</span> (i &lt; apples.<span class="property">length</span>) &#123;</span><br><span class="line">      <span class="keyword">let</span> appleNum = apples[i];</span><br><span class="line">      <span class="comment">// 添加apples[i]个 days[i]过期的苹果</span></span><br><span class="line">      <span class="keyword">while</span> (appleNum !== <span class="number">0</span>) &#123;</span><br><span class="line">        appleBuck.<span class="title function_">push</span>(days[i]);</span><br><span class="line">        appleNum--</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">// 当前第几天，看看有没有苹果</span></span><br><span class="line">    appleBuck = appleBuck.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a - b);</span><br><span class="line">    appleBuck = appleBuck.<span class="title function_">filter</span>(<span class="function"><span class="params">e</span> =&gt;</span> e != <span class="number">0</span>);</span><br><span class="line">    <span class="keyword">let</span> canEatApple = <span class="literal">false</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (appleBuck.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">      canEatApple = <span class="literal">true</span></span><br><span class="line">      canEatAppleDays++</span><br><span class="line">      appleBuck.<span class="title function_">shift</span>();</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    appleBuck = appleBuck.<span class="title function_">map</span>(<span class="function"><span class="params">e</span> =&gt;</span> e - <span class="number">1</span>)</span><br><span class="line">    <span class="comment">// console.log(`第$&#123;i + 1&#125;天，今天$&#123;canEatApple ? &#x27;可以&#x27; : &#x27;不可以&#x27;&#125;，明天还有$&#123;appleBuck.length&#125;个，`)</span></span><br><span class="line">    totalDays--</span><br><span class="line">    i++</span><br><span class="line">    <span class="comment">// console.log(i, appleBuck.length, totalDays)</span></span><br><span class="line">  &#125;;</span><br><span class="line">  <span class="comment">// console.log(canEatAppleDays);</span></span><br><span class="line">  <span class="keyword">return</span> canEatAppleDays</span><br><span class="line"></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> eatenApples2 = <span class="keyword">function</span> (<span class="params">apples, days</span>) &#123;</span><br><span class="line">  <span class="comment">// 苹果堆</span></span><br><span class="line">  <span class="keyword">let</span> appleBuck = [];</span><br><span class="line">  <span class="keyword">let</span> totalDays = apples.<span class="property">length</span></span><br><span class="line">  <span class="comment">// 从第一天开始</span></span><br><span class="line">  <span class="keyword">let</span> i = <span class="number">0</span>;</span><br><span class="line">  <span class="comment">// 可以吃掉苹果的次数</span></span><br><span class="line">  <span class="keyword">let</span> canEatAppleNum = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">while</span> (i === <span class="number">0</span> || appleBuck.<span class="property">length</span> !== <span class="number">0</span> || totalDays &gt;= <span class="number">0</span>) &#123;</span><br><span class="line">    <span class="keyword">let</span> newDayAppleNum;</span><br><span class="line">    <span class="keyword">let</span> newDayAppleLeftDay;</span><br><span class="line">    <span class="keyword">let</span> todayHasApple = <span class="literal">false</span>;</span><br><span class="line">    <span class="comment">// 补给天数内，还可以添加</span></span><br><span class="line">    <span class="keyword">if</span> (i &lt; apples.<span class="property">length</span>) &#123;</span><br><span class="line">      todayHasApple = apples[i] !== <span class="number">0</span>;</span><br><span class="line">      newDayAppleNum = apples[i];</span><br><span class="line">      newDayAppleLeftDay = days[i];</span><br><span class="line">      <span class="comment">// newDayApple = new Array(appleNum).fill(days[i])</span></span><br><span class="line">      <span class="comment">// 添加apples[i]个 days[i]过期的苹果</span></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">// console.log(`第$&#123;i + 1&#125;天，今天$&#123;todayHasApple&#125;`)</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (todayHasApple) &#123;</span><br><span class="line">      <span class="keyword">let</span> last0Index;</span><br><span class="line">      <span class="keyword">let</span> lastLessIndex;</span><br><span class="line">      <span class="keyword">let</span> newappleBuck = appleBuck;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">if</span> (appleBuck.<span class="property">length</span> === <span class="number">0</span> &amp;&amp; i &lt; apples.<span class="property">length</span>) &#123;</span><br><span class="line">        appleBuck = <span class="title class_">Array</span>(newDayAppleNum).<span class="title function_">fill</span>(newDayAppleLeftDay)</span><br><span class="line">      &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">        <span class="comment">// console.log(&#x27;appleBuck&#x27;, appleBuck)</span></span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">let</span> j = <span class="number">0</span>; j &lt; appleBuck.<span class="property">length</span>; j++) &#123;</span><br><span class="line">          <span class="comment">// 今天的苹果，剩余的天数</span></span><br><span class="line">          <span class="keyword">const</span> leftDay = appleBuck[j];</span><br><span class="line">          <span class="comment">// 去掉0 </span></span><br><span class="line">          <span class="keyword">if</span> (last0Index === <span class="number">0</span>) &#123;</span><br><span class="line">            appleBuck.<span class="title function_">slice</span>(j, <span class="number">1</span>);</span><br><span class="line">          &#125;</span><br><span class="line">          <span class="comment">// 最后一个小于当前剩余天数的索引</span></span><br><span class="line">          <span class="comment">// console.log(&#x27;j&#x27;, leftDay, newDayAppleNum)</span></span><br><span class="line">          <span class="keyword">if</span> (leftDay &lt;= newDayAppleNum) &#123;</span><br><span class="line">            lastLessIndex = j;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">// 先插后截</span></span><br><span class="line">        <span class="keyword">if</span> (lastLessIndex) &#123;</span><br><span class="line">          newappleBuck = appleBuck.<span class="title function_">slice</span>(<span class="number">0</span>, lastLessIndex).<span class="title function_">concat</span>(<span class="title class_">Array</span>(newDayAppleNum).<span class="title function_">fill</span>(newDayAppleLeftDay)).<span class="title function_">concat</span>(appleBuck.<span class="title function_">slice</span>(lastLessIndex, appleBuck.<span class="property">length</span>))</span><br><span class="line">        &#125;</span><br><span class="line">        appleBuck = newappleBuck;</span><br><span class="line">        <span class="comment">// console.log(&#x27;appleBuck&#x27;, appleBuck)</span></span><br><span class="line"></span><br><span class="line">      &#125;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">// console.log(`第$&#123;i + 1&#125;天,$&#123;appleBuck&#125;`)</span></span><br><span class="line">    <span class="keyword">let</span> canEatApple = <span class="literal">false</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (appleBuck.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">      canEatApple = <span class="literal">true</span></span><br><span class="line">      canEatAppleNum++</span><br><span class="line">      appleBuck.<span class="title function_">shift</span>();</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    appleBuck = appleBuck.<span class="title function_">map</span>(<span class="function"><span class="params">e</span> =&gt;</span> e - <span class="number">1</span>)</span><br><span class="line">    <span class="comment">// console.log(`第$&#123;i + 1&#125;天，今天$&#123;canEatApple ? &#x27;可以&#x27; : &#x27;不可以&#x27;&#125;，明天还有$&#123;appleBuck.length&#125;个，`)</span></span><br><span class="line">    totalDays--</span><br><span class="line">    i++</span><br><span class="line">    <span class="comment">// console.log(i, appleBuck.length, totalDays)</span></span><br><span class="line">  &#125;;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;canEatAppleNum&#x27;</span>, canEatAppleNum);</span><br><span class="line">  <span class="keyword">return</span> canEatAppleNum</span><br><span class="line">&#125;;</span><br><span class="line"><span class="title function_">eatenApples2</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>])</span><br><span class="line"><span class="comment">// eatenApples2([3, 0, 0, 0, 0, 2], [3, 0, 0, 0, 0, 2])</span></span><br><span class="line"><span class="comment">// eatenApples([0, 149, 254, 74, 127, 86, 48, 217, 0, 11, 96, 158, 0, 167, 0, 0, 5, 73, 0, 35, 148, 0, 74, 261, 0, 0, 27, 67, 25, 46, 76, 43, 0, 0, 161, 44, 0, 148, 77, 0, 186, 228, 277, 270, 257, 242, 144, 74, 145, 84, 90, 0, 0, 0, 265, 224, 265, 86, 119, 0, 3, 0, 285, 16, 145, 212, 102, 0, 0, 0, 24, 0, 0, 136, 110, 264, 194, 0, 150, 0, 247, 0, 27, 46, 0, 118, 0, 178, 0, 0, 270, 58, 0, 109, 236, 0, 241, 241, 0, 111, 217, 252, 43, 46, 0, 0, 0, 30, 89, 0, 242, 121, 6, 0, 278, 228, 0, 119, 0, 226, 230, 0, 115, 0, 108, 167, 166, 0, 0, 110, 82, 289, 0, 13, 140, 79, 164, 0, 17, 133, 257, 68, 105, 0, 0, 0, 0, 114, 217, 37, 0, 23, 107, 74, 0, 167, 238, 0, 181, 259, 98, 0, 94, 268, 272, 0, 153, 249, 216, 0, 253, 277, 262, 229, 106, 257, 94, 154, 135, 23, 186, 0, 260, 0, 0, 252, 127, 253, 162, 18, 34, 235, 265, 35, 136, 5, 14, 132, 195, 60, 0, 0, 0, 0, 205, 277, 110, 222, 252, 16, 0, 2, 0, 227, 262, 128, 0, 76, 146, 203, 255, 0, 131, 0, 39, 110, 180, 0, 247, 49, 280, 30, 0, 283, 260, 258, 103, 231, 48, 166, 106, 33, 188, 210, 72, 52, 103, 0, 132, 129, 0, 74, 0, 0, 184, 0, 219, 164, 167, 146, 158, 77, 114, 265, 109, 223, 63, 62, 253, 0, 189, 276, 36, 129, 0, 206, 40, 0, 158, 10, 216, 13, 269, 0, 0, 0, 0, 172, 0, 0, 117, 265, 0, 177, 0, 281, 260, 0, 246, 120, 0, 46, 29, 0, 210, 0, 103, 287, 0, 61, 79, 0, 15, 0, 0, 0, 113, 0, 110, 186, 47, 137, 281, 251, 0, 184, 0, 0, 0, 204, 86, 0, 235, 43, 169, 248, 74, 269, 154, 113, 132, 213, 0, 0, 184, 0, 1, 266, 215, 156, 41, 79, 95, 0, 256, 166, 288, 0, 0, 177, 0, 0, 107, 17, 252, 137, 70, 11, 155, 105, 159, 121, 22, 0, 37, 59, 218, 231, 49, 64, 14, 0, 6, 46, 216, 0, 0, 2, 217, 0, 118, 102, 260, 0, 210, 275, 221, 0, 0, 92, 42, 31, 0, 0, 43, 108, 277, 0, 23, 198, 51, 284, 64, 9, 0, 89, 167, 256, 217, 27, 197, 232, 202, 0, 77, 217, 132, 182, 20, 186, 0, 0, 62, 0, 0, 0, 10, 40, 131, 274, 0, 221, 0, 0, 0, 159, 244, 252, 268, 234, 171, 0, 0, 146, 155, 0, 241, 179, 199, 0, 211, 265, 12, 0, 0, 90, 7, 40, 139, 203, 0, 245, 210, 0, 0, 74, 168, 213, 0, 0, 0, 80, 49, 0, 192, 0, 111, 27, 204, 0, 234, 0, 223, 242, 202, 116, 112, 281, 0, 168, 218, 214, 271, 240, 249, 13, 235, 194, 74, 0, 24, 226, 204, 248, 280, 122, 122, 148, 194, 0, 212, 0, 106, 192, 0, 241, 153, 0, 0, 109, 0, 44, 0, 0, 54, 0, 0, 12, 0, 202, 13, 44, 266, 37, 0, 0, 0, 167, 266, 79, 290, 65, 179, 258, 280, 0, 0, 93, 165, 117, 0, 287, 0, 0, 0, 23, 255, 8, 141, 0, 105, 198, 53, 104, 136, 195, 202, 70, 11, 90, 126, 88, 253, 0],</span></span><br><span class="line"><span class="comment">// [0, 90, 407, 127, 168, 55, 29, 409, 0, 15, 154, 286, 0, 50, 0, 0, 3, 108, 0, 66, 279, 0, 75, 352, 0, 0, 38, 127, 2, 62, 78, 21, 0, 0, 56, 68, 0, 43, 102, 0, 245, 247, 363, 377, 137, 90, 159, 129, 115, 107, 31, 0, 0, 0, 222, 43, 29, 160, 206, 0, 1, 0, 517, 29, 213, 96, 141, 0, 0, 0, 28, 0, 0, 205, 133, 525, 47, 0, 189, 0, 384, 0, 54, 25, 0, 58, 0, 235, 0, 0, 299, 63, 0, 54, 346, 0, 27, 299, 0, 81, 36, 503, 54, 3, 0, 0, 0, 11, 21, 0, 442, 61, 11, 0, 286, 193, 0, 230, 0, 191, 266, 0, 167, 0, 26, 190, 100, 0, 0, 213, 164, 325, 0, 11, 271, 128, 186, 0, 29, 54, 45, 122, 81, 0, 0, 0, 0, 76, 102, 55, 0, 33, 12, 138, 0, 32, 4, 0, 68, 196, 87, 0, 162, 473, 451, 0, 20, 434, 182, 0, 498, 527, 332, 329, 41, 165, 169, 68, 226, 33, 344, 0, 65, 0, 0, 193, 236, 42, 248, 31, 63, 70, 212, 49, 43, 4, 10, 159, 19, 110, 0, 0, 0, 0, 88, 58, 89, 132, 118, 20, 0, 2, 0, 248, 92, 252, 0, 41, 287, 4, 350, 0, 26, 0, 32, 75, 295, 0, 296, 92, 557, 37, 0, 103, 31, 271, 200, 95, 9, 187, 115, 43, 225, 154, 100, 8, 92, 0, 70, 237, 0, 124, 0, 0, 199, 0, 290, 18, 284, 85, 128, 40, 71, 111, 108, 319, 20, 70, 121, 0, 354, 441, 58, 20, 0, 370, 66, 0, 152, 5, 245, 20, 220, 0, 0, 0, 0, 176, 0, 0, 7, 518, 0, 101, 0, 216, 166, 0, 341, 66, 0, 88, 46, 0, 409, 0, 133, 178, 0, 36, 71, 0, 4, 0, 0, 0, 139, 0, 15, 296, 31, 112, 89, 184, 0, 210, 0, 0, 0, 227, 89, 0, 2, 67, 15, 209, 109, 413, 83, 179, 58, 313, 0, 0, 72, 0, 1, 102, 78, 160, 65, 139, 61, 0, 257, 95, 397, 0, 0, 169, 0, 0, 25, 30, 27, 135, 90, 4, 129, 160, 311, 139, 16, 0, 7, 87, 383, 154, 92, 97, 2, 0, 3, 34, 65, 0, 0, 2, 319, 0, 23, 8, 432, 0, 106, 113, 72, 0, 0, 62, 17, 59, 0, 0, 79, 136, 35, 0, 41, 167, 21, 313, 1, 2, 0, 62, 330, 403, 328, 28, 370, 308, 87, 0, 151, 78, 105, 305, 20, 10, 0, 0, 12, 0, 0, 0, 12, 76, 228, 382, 0, 336, 0, 0, 0, 178, 242, 418, 323, 436, 296, 0, 0, 81, 5, 0, 365, 22, 268, 0, 217, 451, 7, 0, 0, 111, 11, 25, 81, 400, 0, 151, 290, 0, 0, 66, 334, 259, 0, 0, 0, 41, 52, 0, 151, 0, 119, 40, 398, 0, 118, 0, 252, 86, 79, 29, 201, 548, 0, 111, 98, 134, 460, 89, 488, 20, 67, 123, 43, 0, 37, 140, 71, 93, 114, 171, 111, 228, 278, 0, 173, 0, 188, 211, 0, 106, 276, 0, 0, 205, 0, 44, 0, 0, 64, 0, 0, 11, 0, 233, 3, 10, 526, 49, 0, 0, 0, 171, 252, 33, 413, 48, 264, 348, 67, 0, 0, 122, 153, 3, 0, 180, 0, 0, 0, 19, 370, 7, 218, 0, 5, 34, 77, 132, 115, 143, 94, 77, 18, 75, 232, 162, 227, 0])</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// eatenApples2([243, 103, 0, 243, 289, 5, 72, 0, 17, 201, 0, 132, 0, 262, 0, 248, 200, 168, 295, 237, 69, 49, 52, 0, 188, 255, 168, 0, 0, 92, 258, 95, 0, 115, 0, 131, 111, 12, 0, 85, 91, 0, 111, 228, 0, 0, 244, 33, 252, 0, 160, 0, 277, 0, 0, 0, 40, 68, 210, 122, 220, 94, 164, 0, 0, 0, 28, 96, 0, 284, 165, 0, 0, 231, 295, 246, 208, 0, 277, 220, 125, 235, 199, 0, 35, 303, 32, 192, 267, 98, 288, 0, 81, 14, 45, 246, 203, 0, 256, 105, 147, 294, 165, 107, 257, 173, 277, 0, 0, 0, 215, 300, 117, 302, 0, 90, 0, 245, 0, 0, 107, 278, 166, 30, 281, 169, 178, 300, 90, 112, 27, 0, 162, 12, 226, 9, 235, 139, 273, 1, 0, 0, 265, 0, 239, 283, 204, 22, 200, 295, 0, 0, 0, 0, 0, 0, 148, 0, 57, 116, 143, 132, 201, 56, 102, 55, 0, 255, 298, 197, 81, 187, 82, 149, 212, 284, 0, 0, 75, 0, 233, 0, 67, 212, 196, 0, 165, 102, 101, 195, 104, 0, 227, 0, 270, 0, 0, 283, 1, 137, 0, 302, 62, 0, 127, 293, 182, 232, 0, 0, 137, 0, 0, 0, 98, 0, 83, 52, 0, 0, 280, 262, 24, 252, 173, 20, 236, 30, 87, 103, 0, 147, 194, 55, 152, 209, 0, 0, 110, 232, 108, 104, 90, 0, 229, 123, 110, 183, 231, 20, 134, 0, 0, 220, 193, 254, 104, 227, 0, 20, 233, 0, 55, 0, 54, 1, 0, 247, 0, 0, 0, 0, 33, 171, 19, 86, 12, 69, 0, 70, 139, 0, 125, 193, 58, 196, 109, 0, 68, 98, 0, 0, 222, 98, 0, 111, 0, 0, 0, 0, 0, 0, 214, 227, 94, 249, 0, 0, 235, 165, 221, 78, 174, 0, 163, 49, 155, 188, 189, 173, 0, 162, 0, 98, 181, 117, 50, 300, 253, 272, 210, 0, 93, 40, 46, 0, 203, 92, 193, 237, 194, 0, 127, 0, 11, 101, 201, 0, 0, 33, 129, 304, 0, 86, 0, 79, 0, 0, 260, 142, 68, 0, 243, 0, 0, 241, 224, 4, 192, 252, 0, 295, 106, 191, 292, 49, 0, 138, 0, 141, 140, 205, 262, 236, 206, 27, 22, 172, 142, 219, 123, 70, 200, 270, 17, 136, 80, 0, 209, 0, 67, 143, 0, 152, 230, 0, 72, 175, 130, 191, 291, 0, 84, 48, 250, 0, 174, 0, 0, 0, 0, 293, 75, 0, 9, 179, 0, 206, 0, 189, 61, 0, 138, 146, 83, 170, 157, 64, 0, 0, 266, 274, 0, 229, 32, 115, 176, 298, 0, 78, 235, 0, 215, 245, 95, 101, 265, 0, 0, 15, 0, 140, 0, 237, 202, 167, 19, 0, 83, 0, 172, 304, 0, 149, 186, 1, 0, 0, 70, 129, 60, 293, 0, 125, 0, 0, 39, 24, 10, 111, 161, 5, 0, 15, 93, 0, 281, 37, 222, 263, 0, 291, 6, 225, 226, 230, 296, 40, 251, 75, 40, 0, 188, 0, 0, 271, 0, 0, 87, 76, 164, 0, 4, 43, 74, 11, 51, 0, 0, 298, 150, 190, 128, 168, 69, 0, 105, 223, 0, 136, 48, 196, 172, 0, 20, 93, 234, 0, 0, 193, 136, 36, 19, 235, 150, 197, 117, 2, 54, 0, 5, 0, 0, 158, 46, 0, 151, 211, 79, 0, 280, 179, 153, 0, 0, 215, 0, 114, 217, 243, 0, 0, 279, 223, 254, 65, 213, 0, 280, 0, 280, 118, 16, 0, 179, 0, 88, 92, 251, 217, 0, 0, 107, 109, 9, 158, 139, 259], [482, 141, 0, 72, 362, 3, 118, 0, 30, 170, 0, 23, 0, 291, 0, 53, 396, 23, 327, 106, 11, 13, 100, 0, 256, 23, 116, 0, 0, 107, 215, 160, 0, 180, 0, 120, 107, 6, 0, 165, 15, 0, 46, 133, 0, 0, 188, 17, 499, 0, 278, 0, 241, 0, 0, 0, 3, 72, 290, 20, 233, 93, 17, 0, 0, 0, 7, 64, 0, 568, 107, 0, 0, 156, 412, 233, 273, 0, 242, 304, 62, 223, 82, 0, 47, 383, 63, 3, 517, 44, 69, 0, 132, 13, 45, 83, 214, 0, 417, 75, 47, 63, 107, 190, 358, 240, 470, 0, 0, 0, 272, 78, 199, 204, 0, 51, 0, 350, 0, 0, 195, 523, 212, 6, 93, 214, 102, 29, 77, 208, 20, 0, 144, 8, 106, 12, 383, 106, 359, 1, 0, 0, 337, 0, 200, 126, 208, 38, 233, 474, 0, 0, 0, 0, 0, 0, 268, 0, 49, 123, 28, 191, 67, 30, 192, 91, 0, 13, 148, 173, 92, 51, 50, 190, 89, 301, 0, 0, 72, 0, 58, 0, 34, 18, 262, 0, 54, 58, 168, 370, 200, 0, 166, 0, 16, 0, 0, 225, 1, 215, 0, 302, 97, 0, 250, 256, 291, 64, 0, 0, 42, 0, 0, 0, 195, 0, 5, 86, 0, 0, 539, 59, 13, 304, 164, 23, 248, 53, 45, 165, 0, 104, 236, 55, 5, 252, 0, 0, 205, 395, 20, 171, 83, 0, 42, 237, 100, 133, 257, 21, 252, 0, 0, 328, 30, 302, 9, 110, 0, 26, 108, 0, 1, 0, 54, 2, 0, 239, 0, 0, 0, 0, 25, 219, 15, 64, 9, 62, 0, 62, 103, 0, 230, 161, 39, 307, 169, 0, 40, 115, 0, 0, 143, 170, 0, 72, 0, 0, 0, 0, 0, 0, 252, 244, 92, 12, 0, 0, 108, 58, 163, 84, 143, 0, 51, 67, 38, 30, 186, 287, 0, 322, 0, 156, 123, 197, 61, 230, 43, 79, 117, 0, 68, 4, 33, 0, 240, 88, 156, 84, 228, 0, 184, 0, 16, 64, 336, 0, 0, 14, 218, 285, 0, 77, 0, 46, 0, 0, 128, 159, 111, 0, 106, 0, 0, 274, 175, 5, 226, 9, 0, 144, 92, 165, 67, 48, 0, 256, 0, 7, 214, 333, 148, 55, 286, 20, 6, 277, 137, 189, 232, 32, 1, 108, 24, 128, 10, 0, 142, 0, 31, 78, 0, 254, 98, 0, 83, 11, 213, 105, 463, 0, 111, 26, 166, 0, 239, 0, 0, 0, 0, 456, 47, 0, 4, 311, 0, 405, 0, 71, 107, 0, 96, 27, 130, 200, 181, 40, 0, 0, 517, 64, 0, 179, 51, 45, 158, 151, 0, 100, 309, 0, 403, 107, 42, 193, 201, 0, 0, 23, 0, 10, 0, 199, 144, 44, 13, 0, 149, 0, 344, 118, 0, 155, 176, 2, 0, 0, 99, 80, 89, 369, 0, 161, 0, 0, 6, 45, 13, 218, 30, 1, 0, 25, 172, 0, 360, 49, 40, 468, 0, 238, 1, 243, 417, 147, 537, 3, 49, 128, 45, 0, 330, 0, 0, 367, 0, 0, 14, 62, 159, 0, 4, 48, 141, 19, 7, 0, 0, 570, 249, 312, 219, 40, 2, 0, 162, 65, 0, 129, 96, 126, 319, 0, 9, 107, 312, 0, 0, 20, 124, 4, 38, 219, 232, 340, 225, 4, 100, 0, 3, 0, 0, 77, 43, 0, 283, 96, 77, 0, 337, 126, 257, 0, 0, 327, 0, 124, 253, 478, 0, 0, 28, 119, 403, 58, 122, 0, 63, 0, 405, 198, 27, 0, 186, 0, 60, 57, 47, 56, 0, 0, 65, 203, 15, 118, 31, 415])</span></span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;有一棵特殊的苹果树，一连-n-天，每天都可以长出若干个苹果。在第-i-天，树上会长出-apples-i-个苹果，&quot;&gt;&lt;a href=&quot;#有一棵特殊的苹果树，一连-n-天，每天都可以长出若干个苹果。在第-i-天，树上会长出-apples-i-个苹果，&quot; class=</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-1154.一年中的第几天</title>
    <link href="https://blog.nnnnzs.cn/2021/12/21/leetcode-1154-%E4%B8%80%E5%B9%B4%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%87%A0%E5%A4%A9/"/>
    <id>https://blog.nnnnzs.cn/2021/12/21/leetcode-1154-%E4%B8%80%E5%B9%B4%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%87%A0%E5%A4%A9/</id>
    <published>2021-12-21T02:30:58.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="1154-一年中的第几天"><a href="#1154-一年中的第几天" class="headerlink" title="1154. 一年中的第几天"></a>1154. 一年中的第几天</h1><h2 id="给你一个字符串-date-，按-YYYY-MM-DD-格式表示一个-现行公元纪年法-日期。请你计算并返回该日期是当年的第几天。"><a href="#给你一个字符串-date-，按-YYYY-MM-DD-格式表示一个-现行公元纪年法-日期。请你计算并返回该日期是当年的第几天。" class="headerlink" title="给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。"></a>给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。</h2><h2 id="通常情况下，我们认为-1-月-1-日是每年的第-1-天，1-月-2-日是每年的第-2-天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。"><a href="#通常情况下，我们认为-1-月-1-日是每年的第-1-天，1-月-2-日是每年的第-2-天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。" class="headerlink" title="通常情况下，我们认为 1 月 1 日是每年的第 1 天，1 月 2 日是每年的第 2 天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。"></a>通常情况下，我们认为 1 月 1 日是每年的第 1 天，1 月 2 日是每年的第 2 天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。</h2><h2 id="示例-1："><a href="#示例-1：" class="headerlink" title="示例 1："></a>示例 1：</h2><p>输入：date = “2019-01-09”<br>输出：9</p><h2 id="示例-2："><a href="#示例-2：" class="headerlink" title="示例 2："></a>示例 2：</h2><p>输入：date = “2019-02-10”<br>输出：41</p><h2 id="示例-3："><a href="#示例-3：" class="headerlink" title="示例 3："></a>示例 3：</h2><p>输入：date = “2003-03-01”<br>输出：60</p><h2 id="示例-4："><a href="#示例-4：" class="headerlink" title="示例 4："></a>示例 4：</h2><p>输入：date = “2004-03-01”<br>输出：61</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> &#123;<span class="type">string</span>&#125; <span class="variable">date</span></span></span><br><span class="line"><span class="comment"> * <span class="doctag">@return</span> &#123;<span class="type">number</span>&#125;</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">var</span> dayOfYear = <span class="keyword">function</span> (<span class="params">date</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> dateObj = <span class="keyword">new</span> <span class="title class_">Date</span>(date);</span><br><span class="line">  <span class="keyword">const</span> year = dateObj.<span class="title function_">getFullYear</span>();</span><br><span class="line">  <span class="keyword">const</span> firstOfYear = <span class="keyword">new</span> <span class="title class_">Date</span>(<span class="string">`<span class="subst">$&#123;year&#125;</span>-01-01`</span>);</span><br><span class="line">  <span class="keyword">return</span> ((dateObj - firstOfYear) / <span class="number">3600000</span> / <span class="number">24</span>) + <span class="number">1</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;1154-一年中的第几天&quot;&gt;&lt;a href=&quot;#1154-一年中的第几天&quot; class=&quot;headerlink&quot; title=&quot;1154. 一年中的第几天&quot;&gt;&lt;/a&gt;1154. 一年中的第几天&lt;/h1&gt;&lt;h2 id=&quot;给你一个字符串-date-，按-YYYY-MM</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-475.供暖器</title>
    <link href="https://blog.nnnnzs.cn/2021/12/21/leetcode-475-%E4%BE%9B%E6%9A%96%E5%99%A8/"/>
    <id>https://blog.nnnnzs.cn/2021/12/21/leetcode-475-%E4%BE%9B%E6%9A%96%E5%99%A8/</id>
    <published>2021-12-21T00:48:11.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="冬季已经来临。-你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。"><a href="#冬季已经来临。-你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。" class="headerlink" title="冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。"></a>冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。</h1><h1 id="在加热器的加热半径范围内的每个房屋都可以获得供暖。现在，给出位于一条水平线上的房屋-houses-和供暖器-heaters-的位置，请你找出并返回可以覆盖所有房屋的最小加热半径。"><a href="#在加热器的加热半径范围内的每个房屋都可以获得供暖。现在，给出位于一条水平线上的房屋-houses-和供暖器-heaters-的位置，请你找出并返回可以覆盖所有房屋的最小加热半径。" class="headerlink" title="在加热器的加热半径范围内的每个房屋都可以获得供暖。现在，给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置，请你找出并返回可以覆盖所有房屋的最小加热半径。"></a>在加热器的加热半径范围内的每个房屋都可以获得供暖。现在，给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置，请你找出并返回可以覆盖所有房屋的最小加热半径。</h1><h1 id="说明：所有供暖器都遵循你的半径标准，加热的半径也一样。"><a href="#说明：所有供暖器都遵循你的半径标准，加热的半径也一样。" class="headerlink" title="说明：所有供暖器都遵循你的半径标准，加热的半径也一样。"></a>说明：所有供暖器都遵循你的半径标准，加热的半径也一样。</h1><p><a href="https://leetcode-cn.com/problems/heaters/">https://leetcode-cn.com/problems/heaters/</a></p><h2 id="示例-1"><a href="#示例-1" class="headerlink" title="示例 1:"></a>示例 1:</h2><p>输入: houses = [1,2,3], heaters = [2]<br>输出: 1<br>解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1，那么所有房屋就都能得到供暖。</p><h2 id="示例-2"><a href="#示例-2" class="headerlink" title="示例 2:"></a>示例 2:</h2><p>输入: houses = [1,2,3,4], heaters = [1,4]<br>输出: 1<br>解释: 在位置1, 4上有两个供暖器。我们需要将加热半径设为1，这样所有房屋就都能得到供暖。</p><h2 id="示例-3："><a href="#示例-3：" class="headerlink" title="示例 3："></a>示例 3：</h2><p>输入：houses = [1,5], heaters = [2]<br>输出：3</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 考虑到所有情况的搜索</span></span><br><span class="line"><span class="keyword">var</span> findRadius2 = <span class="keyword">function</span> (<span class="params">houses, heaters</span>) &#123;</span><br><span class="line">  <span class="comment">//  1. 取暖器和房子排序</span></span><br><span class="line">  houses.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> a - b</span><br><span class="line">  &#125;);</span><br><span class="line">  heaters.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> a - b</span><br><span class="line">  &#125;);</span><br><span class="line">  <span class="keyword">let</span> max = <span class="number">0</span></span><br><span class="line">  <span class="keyword">const</span> minHeater = heaters[<span class="number">0</span>];</span><br><span class="line">  <span class="keyword">const</span> maxHeater = heaters[heaters.<span class="property">length</span> - <span class="number">1</span>];</span><br><span class="line"></span><br><span class="line">  houses.<span class="title function_">forEach</span>(<span class="function">(<span class="params">house, houseIndex</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">let</span> minRadis;</span><br><span class="line">    <span class="keyword">if</span> (heaters.<span class="property">length</span> === <span class="number">1</span>) &#123;</span><br><span class="line">      <span class="keyword">let</span> min = heaters[<span class="number">0</span>];</span><br><span class="line">      minRadis = <span class="title class_">Math</span>.<span class="title function_">abs</span>(house - min);</span><br><span class="line">      max = <span class="title class_">Math</span>.<span class="title function_">max</span>(max, minRadis)</span><br><span class="line">      <span class="keyword">return</span></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> (house &lt;= minHeater) &#123;</span><br><span class="line">      minRadis = minHeater - house</span><br><span class="line">      max = <span class="title class_">Math</span>.<span class="title function_">max</span>(max, minRadis)</span><br><span class="line">      <span class="keyword">return</span></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> (house &gt;= maxHeater) &#123;</span><br><span class="line">      minRadis = house - maxHeater</span><br><span class="line">      max = <span class="title class_">Math</span>.<span class="title function_">max</span>(max, minRadis)</span><br><span class="line">      <span class="keyword">return</span></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">else</span> &#123;</span><br><span class="line">      <span class="comment">// 在两个中间找到最符合的情况</span></span><br><span class="line">      <span class="keyword">let</span> midIndex = heaters.<span class="title function_">findIndex</span>(<span class="function">(<span class="params">heater, heaterIndex</span>) =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> beyond = heater &lt;= house;</span><br><span class="line">        <span class="keyword">const</span> below = house &lt;= heaters[heaterIndex + <span class="number">1</span>];</span><br><span class="line">        <span class="keyword">return</span> beyond &amp;&amp; below</span><br><span class="line">      &#125;);</span><br><span class="line">      minRadis = <span class="title class_">Math</span>.<span class="title function_">min</span>(house - heaters[midIndex], heaters[midIndex + <span class="number">1</span>] - house);</span><br><span class="line">    &#125;</span><br><span class="line">    max = <span class="title class_">Math</span>.<span class="title function_">max</span>(max, minRadis)</span><br><span class="line">  &#125;)</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(max);</span><br><span class="line">  <span class="keyword">return</span> max</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> findRadius3 = <span class="keyword">function</span> (<span class="params">houses, heaters</span>) &#123;</span><br><span class="line">  <span class="keyword">let</span> ans = <span class="number">0</span>;</span><br><span class="line">  heaters.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a - b);</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> house <span class="keyword">of</span> houses) &#123;</span><br><span class="line">    <span class="keyword">const</span> i = <span class="title function_">binarySearch</span>(heaters, house);</span><br><span class="line">    <span class="keyword">const</span> j = i + <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">const</span> leftDistance = i &lt; <span class="number">0</span> ? <span class="title class_">Number</span>.<span class="property">MAX_VALUE</span> : house - heaters[i];</span><br><span class="line">    <span class="keyword">const</span> rightDistance = j &gt;= heaters.<span class="property">length</span> ? <span class="title class_">Number</span>.<span class="property">MAX_VALUE</span> : heaters[j] - house;</span><br><span class="line">    <span class="keyword">const</span> curDistance = <span class="title class_">Math</span>.<span class="title function_">min</span>(leftDistance, rightDistance);</span><br><span class="line">    ans = <span class="title class_">Math</span>.<span class="title function_">max</span>(ans, curDistance);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> ans;</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="title function_">binarySearch</span> = (<span class="params">nums, target</span>) =&gt; &#123;</span><br><span class="line">  <span class="keyword">let</span> left = <span class="number">0</span>, right = nums.<span class="property">length</span> - <span class="number">1</span>;</span><br><span class="line">  <span class="keyword">if</span> (nums[left] &gt; target) &#123;</span><br><span class="line">    <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">while</span> (left &lt; right) &#123;</span><br><span class="line">    <span class="keyword">const</span> mid = <span class="title class_">Math</span>.<span class="title function_">floor</span>((right - left + <span class="number">1</span>) / <span class="number">2</span>) + left;</span><br><span class="line">    <span class="keyword">if</span> (nums[mid] &gt; target) &#123;</span><br><span class="line">      right = mid - <span class="number">1</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">      left = mid;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> left;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> findRadius4 = <span class="keyword">function</span> (<span class="params">houses, heaters</span>) &#123;</span><br><span class="line">  houses.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a - b);</span><br><span class="line">  heaters.<span class="title function_">sort</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a - b);</span><br><span class="line">  <span class="keyword">let</span> ans = <span class="number">0</span>;</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>, j = <span class="number">0</span>; i &lt; houses.<span class="property">length</span>; i++) &#123;</span><br><span class="line">    <span class="keyword">let</span> curDistance = <span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j]);</span><br><span class="line">    <span class="keyword">while</span> (j &lt; heaters.<span class="property">length</span> - <span class="number">1</span> &amp;&amp; <span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j]) &gt;= <span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j + <span class="number">1</span>])) &#123;</span><br><span class="line">      j++;</span><br><span class="line">      curDistance = <span class="title class_">Math</span>.<span class="title function_">min</span>(curDistance, <span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j]));</span><br><span class="line">    &#125;</span><br><span class="line">    ans = <span class="title class_">Math</span>.<span class="title function_">max</span>(ans, curDistance);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> ans;</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="title function_">findRadius2</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">2</span>])</span><br><span class="line"><span class="title function_">findRadius</span>([<span class="number">1</span>, <span class="number">5</span>], [<span class="number">2</span>])</span><br><span class="line"><span class="title function_">findRadius2</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>], [<span class="number">1</span>, <span class="number">4</span>]) <span class="comment">//3</span></span><br><span class="line"><span class="title function_">findRadius2</span>([<span class="number">1</span>, <span class="number">5</span>], [<span class="number">10</span>]) <span class="comment">//3</span></span><br><span class="line"><span class="title function_">findRadius4</span>(</span><br><span class="line">  [<span class="number">474833169</span>, <span class="number">264817709</span>, <span class="number">998097157</span>, <span class="number">817129560</span>],</span><br><span class="line">  [<span class="number">197493099</span>, <span class="number">404280278</span>, <span class="number">893351816</span>, <span class="number">505795335</span>]</span><br><span class="line">)</span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j]) &gt;= <span class="title class_">Math</span>.<span class="title function_">abs</span>(houses[i] - heaters[j + <span class="number">1</span>])</span><br><span class="line"><span class="title function_">findRadius2</span>(</span><br><span class="line">  [<span class="number">282475249</span>, <span class="number">622650073</span>, <span class="number">984943658</span>, <span class="number">144108930</span>, <span class="number">470211272</span>, <span class="number">101027544</span>, <span class="number">457850878</span>, <span class="number">458777923</span>],</span><br><span class="line">  [<span class="number">823564440</span>, <span class="number">115438165</span>, <span class="number">784484492</span>, <span class="number">74243042</span>, <span class="number">114807987</span>, <span class="number">137522503</span>, <span class="number">441282327</span>, <span class="number">16531729</span>, <span class="number">823378840</span>, <span class="number">143542612</span>])</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;冬季已经来临。-你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。&quot;&gt;&lt;a href=&quot;#冬季已经来临。-你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。&quot; class=&quot;headerlink&quot; title=&quot;冬季已经来临。 你的任务是设计一个有固定</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
  <entry>
    <title>leetcode-997.找到小镇的法官</title>
    <link href="https://blog.nnnnzs.cn/2021/12/19/leetcode-997-%E6%89%BE%E5%88%B0%E5%B0%8F%E9%95%87%E7%9A%84%E6%B3%95%E5%AE%98/"/>
    <id>https://blog.nnnnzs.cn/2021/12/19/leetcode-997-%E6%89%BE%E5%88%B0%E5%B0%8F%E9%95%87%E7%9A%84%E6%B3%95%E5%AE%98/</id>
    <published>2021-12-19T09:39:10.000Z</published>
    <updated>2022-10-12T13:45:30.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="997-找到小镇的法官"><a href="#997-找到小镇的法官" class="headerlink" title="997. 找到小镇的法官"></a>997. 找到小镇的法官</h1><h2 id="在一个小镇里，按从-1-到-n-为-n-个人进行编号。传言称，这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在，那么：小镇的法官不相信任何人。每个人（除了小镇法官外）都信任小镇的法官。只有一个人同时满足条件-1-和条件-2-。给定数组-trust，该数组由信任对-trust-i-a-b-组成，表示编号为-a-的人信任编号为-b-的人。如果小镇存在秘密法官并且可以确定他的身份，请返回该法官的编号。否则，返回-1。"><a href="#在一个小镇里，按从-1-到-n-为-n-个人进行编号。传言称，这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在，那么：小镇的法官不相信任何人。每个人（除了小镇法官外）都信任小镇的法官。只有一个人同时满足条件-1-和条件-2-。给定数组-trust，该数组由信任对-trust-i-a-b-组成，表示编号为-a-的人信任编号为-b-的人。如果小镇存在秘密法官并且可以确定他的身份，请返回该法官的编号。否则，返回-1。" class="headerlink" title="在一个小镇里，按从 1 到 n 为 n 个人进行编号。传言称，这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在，那么：小镇的法官不相信任何人。每个人（除了小镇法官外）都信任小镇的法官。只有一个人同时满足条件 1 和条件 2 。给定数组 trust，该数组由信任对 trust[i] = [a, b] 组成，表示编号为 a 的人信任编号为 b 的人。如果小镇存在秘密法官并且可以确定他的身份，请返回该法官的编号。否则，返回 -1。"></a>在一个小镇里，按从 1 到 n 为 n 个人进行编号。传言称，这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在，那么：小镇的法官不相信任何人。每个人（除了小镇法官外）都信任小镇的法官。只有一个人同时满足条件 1 和条件 2 。给定数组 trust，该数组由信任对 trust[i] = [a, b] 组成，表示编号为 a 的人信任编号为 b 的人。如果小镇存在秘密法官并且可以确定他的身份，请返回该法官的编号。否则，返回 -1。</h2><h2 id="示例-1："><a href="#示例-1：" class="headerlink" title="示例 1："></a>示例 1：</h2><p>输入：n = 2, trust = [[1,2]]<br>输出：2</p><h2 id="示例-2："><a href="#示例-2：" class="headerlink" title="示例 2："></a>示例 2：</h2><p>输入：n = 3, trust = [[1,3],[2,3]]<br>输出：3</p><h2 id="示例-3："><a href="#示例-3：" class="headerlink" title="示例 3："></a>示例 3：</h2><p>输入：n = 3, trust = [[1,3],[2,3],[3,1]]<br>输出：-1</p><h2 id="示例-4："><a href="#示例-4：" class="headerlink" title="示例 4："></a>示例 4：</h2><p>输入：n = 3, trust = [[1,2],[2,3]]<br>输出：-1</p><h2 id="示例-5："><a href="#示例-5：" class="headerlink" title="示例 5："></a>示例 5：</h2><p>输入：n = 4, trust = [[1,3],[1,4],[2,3],[2,4],[4,3]]<br>输出：3</p><h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>本题需要用到有向图中节点的入度和出度的概念。在有向图中，一个节点的入度是指向该节点的边的数量；而一个节点的出度是从该节点出发的边的数量。<br>每个人相当于一个节点，被人信任相当于指向此人的入度，信任别人相当于出度</p><h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> findJudge = <span class="keyword">function</span> (<span class="params">n, trust</span>) &#123;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> inDegrees = <span class="keyword">new</span> <span class="title class_">Array</span>(n + <span class="number">1</span>).<span class="title function_">fill</span>(<span class="number">0</span>);</span><br><span class="line">  <span class="keyword">const</span> outDegrees = <span class="keyword">new</span> <span class="title class_">Array</span>(n + <span class="number">1</span>).<span class="title function_">fill</span>(<span class="number">0</span>);</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> edge <span class="keyword">of</span> trust) &#123;</span><br><span class="line">    <span class="keyword">const</span> x = edge[<span class="number">0</span>], y = edge[<span class="number">1</span>];</span><br><span class="line">    inDegrees[y]++;</span><br><span class="line">    outDegrees[x]++;</span><br><span class="line">  &#125;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">1</span>; i &lt;= n; ++i) &#123;</span><br><span class="line">    <span class="keyword">if</span> (inDegrees[i] === n - <span class="number">1</span> &amp;&amp; outDegrees[i] === <span class="number">0</span>) &#123;</span><br><span class="line">      <span class="keyword">return</span> i;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;997-找到小镇的法官&quot;&gt;&lt;a href=&quot;#997-找到小镇的法官&quot; class=&quot;headerlink&quot; title=&quot;997. 找到小镇的法官&quot;&gt;&lt;/a&gt;997. 找到小镇的法官&lt;/h1&gt;&lt;h2 id=&quot;在一个小镇里，按从-1-到-n-为-n-个人进行编号。</summary>
      
    
    
    
    
    <category term="技术" scheme="https://blog.nnnnzs.cn/tags/%E6%8A%80%E6%9C%AF/"/>
    
    <category term="算法" scheme="https://blog.nnnnzs.cn/tags/%E7%AE%97%E6%B3%95/"/>
    
    <category term="leetcode" scheme="https://blog.nnnnzs.cn/tags/leetcode/"/>
    
  </entry>
  
</feed>
