[{"data":1,"prerenderedAt":268},["ShallowReactive",2],{"archive-2022-8-1":3},{"title":4,"articles":5,"hot_article":53,"month_arch":116,"total":264,"cover":265},"2022年8月 - 独孤影的博客",[6,16,26,35,44],{"id":7,"title":8,"uri":9,"author":10,"tags":11,"created_at":13,"view_count":14,"content":15},70,"万兆网卡台湾货的一个有趣现象","made-in-chinese-taiwan-is-not-made-in-taiwan","duguying",[12],"万兆","2022-08-30 23:54:21",221,"\u003Cp>最近入手了威联通的雷电3万兆光纤网卡。淘宝京东官方店一直缺货，好不容易等来了，赶紧分期买了。今天终于到货了。晒图\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fs2kfhdfz.webp\" alt=\"s2kfhdfz\" \u002F>\n赶紧用了一下，挺不错的。我NAS也是万兆网卡，在NAS上运行iperf3服务端，然后macbook pro上用这个雷电万兆网卡，iperf3客户端连接测速。基本跑满万兆。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fgpo9z4dx.png\" alt=\"gpo9z4dx\" \u002F>\u003C\u002Fp>\n\n\u003Cp>测速结果 \u003Cstrong>9.4Gbit\u002Fsec\u003C\u002Fstrong> 左右，符合万兆。然后测试了一下NAS上的samba服务读写速度\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fue981e7l.png\" alt=\"ue981e7l\" \u002F>\u003C\u002Fp>\n\n\u003Cp>测速结果显示，读速度1033MB\u002Fs，能达到万兆；但是写速度只有360MB\u002Fs，这可能是因为我NAS上用了3块4T日立硬盘，硬盘比较廉价，读写速度也比较差；另外我猜也可能与我使用了RAIDZ有关，毕竟RAIDZ奇偶校验比较损耗性能。\u003C\u002Fp>\n\n\u003Cp>网卡到手第一时间，发现了一个有趣的事情，网卡上看起来有一行字被人刻意的用黑色油性笔划掉了，凑近隐约能看到 made in taiwan 字样。结合国际时事，威联通以及淘宝京东官方店这款网卡最近一直缺货没补上的情况，一瞬间了解是什么情况。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fz63r8f6j.webp\" alt=\"z63r8f6j\" \u002F>\u003C\u002Fp>\n\n\u003Cp>最后呢，我想说，胳膊拧不过大腿；台湾省无脑的井底之蛙太多；希望台湾省早日回归中国大陆。这样对大家都好。\u003C\u002Fp>\n",{"id":17,"title":18,"uri":19,"author":10,"tags":20,"created_at":23,"view_count":24,"content":25},69,"大文件下载的一些经验","how-to-download-big-files",[21,22],"下载","cdn","2022-08-26 15:32:21",494,"\u003Cp>数年之前，我在一家CDN公司上班。在CDN项目主要工作是负责对客户视频数据搬运到云存储，中间也涉及到下载转码上传之类的工作。其中踩过一些坑，也吸取了一些经验。下面简单讲一下我遇到的几个问题。\u003C\u002Fp>\n\n\u003Ch3>下载没网速了\u003C\u002Fh3>\n\n\u003Cp>首先是下载没网速的情况。在处理大量的下载任务过程中，发现了一些特殊情况，客户通知我的服务回源，我的下载服务从源站下载一些大文件的时候，开始网络一切正常，可是逐渐的网速越来越低，甚至没网速，这回导致下载一直卡主。可能你会说，设置一个下载超时不就好了，但是，由于客户的文件大多是影视原片，体积巨大，有些甚至达到了几十G，如果简单的设置超时，以处理时间判断下载成败，那么这些大文件基本上不可能成功，都会以超时失败。当然，也可以分片下载来解决文件大的问题，但是对于0网速或者只有几B\u002Fs的网速，你的分片就显得无力了。其实，这个状况产生的原因大多是因为源站故障导致的，比如负载高之类的。只要断开连接重新下载就有机会恢复正常速度的连接，而且一般源站是有多个的，重新连接到新的节点就好了。所以，这里“断开连接重新发起下载”这个能力就非常重要了。我原本使用的是\u003Ccode class=\"inline-code\">github.com\u002Fnareix\u002Fcurl\u003C\u002Fcode>这个库进行文件下载，它的优点是创建异步下载任务后，可以监控当前下载的速度。这样，我可以对每个下载任务的网速进行监控，当网速低于一个阈值的时候，就放弃下载并重试。最初的时候只是简单的调用它的\u003Ccode class=\"inline-code\">Close()\u003C\u002Fcode>方法，关闭了下载。后面却发现，经常发生fd用完的情况，一查才知道\u003Ccode class=\"inline-code\">Close()\u003C\u002Fcode>方法并不能释放连接。最后只好自己修改了这个库，给它添加了强制关闭连接的能力。于是就完美的解决了这一问题。记得当时有一次，源站故障了，客户反馈说，它们接入的多家CDN厂商都上报，文件下载失败了，只有我们公司文件下载成功了，听到这消息，我嘴角不由得上翘，漏出了得意的笑容。\u003C\u002Fp>\n\n\u003Ch3>并行写同文件\u003C\u002Fh3>\n\n\u003Cp>遇到另一个印象深刻的问题就是某客户反馈文件错误的问题。客户反馈说他们在我们CDN上的文件播到一半卡死了，查了文件之后，发现文件大小正常，但是文件只有前半截有数据，后半截全是0，空的。当时，老板CTO领导全站在我工位后面，讨论这个问题，我也是第一时间加回了MD5校验，因为之前在我同事的要求下（同事是老员工、他负责任务调度、我负责几个agent，相当于他为主），去掉了上传前MD5校验，以节省任务时间。当时非常紧张，但是一时间也查不出原因，只能先加MD5校验，然后开发专用校验程序，将半年前开始的所有上传文件重新拉下来做MD5校验，查出异常文件重新上传。后来在一个偶然的机会下，发现了故障的原因，居然是调度测下发任务之后，等待N分钟之后agent还没上报成功，于是又重新下发了这个任务，然后刚好是同一个节点的agent收到该任务，这样一来，同一个节点上2个相同的任务在处理，文件路径一致，也就是说，有2个线程在从源站拉文件写到本地磁盘的同一个路径，一先一后，先处理完的线程开始上传了，后处理的还在写文件，后处理的写文件之后就会将该文件后半截变为空（这里与文件打开模式有关），这样前一个线程在上传的时候，文件其实变成半截了，再加上没有MD5校验，所以，故障就此发生了。\u003C\u002Fp>\n\n\u003Cp>所以之后我就给每个任务的本地路径前加了一个uuid目录，这样一来，不管任务是否同一个文件路径，都不会相互干扰。每个任务都有自己的独立路径了。原程序是我接手别人的，虽说这问题不是我引入，但是，平心而论换做当时的我，也是想不到这一点的。不过，吃一堑长一智，现在只要涉及到本地资源存储，我基本上都会给路径前添加uuid前缀。\u003C\u002Fp>\n",{"id":27,"title":28,"uri":29,"author":10,"tags":30,"created_at":32,"view_count":33,"content":34},68,"最近关于家庭网络我做了这些事","home-network-tunning",[31],"网络","2022-08-24 15:14:11",182,"\u003Ch3>软路由\u003C\u002Fh3>\n\n\u003Cp>我使用软路由已经有几年了，从最早的4网口工控小主机，到现在的r4s，一直是在用openwrt软路由作为家里的主路由。具体为啥要用软路由，相信懂的都懂。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fvfxfwh7n.png\" alt=\"vfxfwh7n\" \u002F>\u003C\u002Fp>\n\n\u003Cp>r4s相较于我之前用过的4网卡工控小主机，只有2个千兆网口，要小很多，很容易放进弱电箱。另外，由于我原来的工控机是英特尔J1900处理器，相较于使用arm处理器的r4s，r4s要节能得多，而且发热量也更小。\u003C\u002Fp>\n\n\u003Ch3>无线网络\u003C\u002Fh3>\n\n\u003Cp>无线网络，从最初的单路由器，到家里部署两个路由器，再到现在基于ap+ac部署的分布式无线网络。最初在老家县城的时候，由于WiFi普及率不高，基本无信号干扰，所以一个最基础的普通WiFi路由器就可以覆盖整个房子，网速也还行；后来老家农村重新建房了，3层楼房，用了2个路由器设置了两个接入点，但是从二楼到一楼切换的时候会有较长时间中断，或者是没有能切换，连接的是信号较差的二楼接入点；这种情况比较影响网络连接。所以，上次回农村老家后，将网络改为了ac+ap的部署模式，设备可以在ap间漫游，几乎不会中断网络。顺便整理了一下弱电箱，理线过程中发现光猫经常发生光信号中断的情况，最后发现是盘纤问题，光纤的尾纤弯折程度太大就会导致光信号中断，于是用绑线带重新绑了一下光纤，以免出现折纤的情况。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Frdz4f7a1.webp\" alt=\"rdz4f7a1\" \u002F>\u003C\u002Fp>\n\n\u003Cp>同时，这一波处理也将预埋的网线接入到路由设备，每个预埋网线的房间都有有线网络了。\u003C\u002Fp>\n\n\u003Ch3>展望未来\u003C\u002Fh3>\n\n\u003Cp>未来家庭万兆迟早会普及，但是按现在的标准，万兆网线要使用八类线，八类线最大的缺点就是太粗太硬，不便于穿管，而且成本不菲，并且万兆电口网卡目前也是非常昂贵。不过如果是光纤就不一样了，单模双芯光纤在某宝上就有售卖，非常便宜，而且万兆光口网卡相较于万兆电口网卡便宜很多，但是这里面有一个额外的成本，那就是光模块，如果是全新万兆单模双lc光模块，价格也不菲，不过呢，某鱼上的二手模块却是很便宜，24块钱一个，我直接卖了一盒10个，据说是从服务器上退役下来的，都是卖家测试过没问题发货，并且收到后，我自己测试过没问题。另一个设备就是光交换机，万兆光交换机的价格与万兆电口价格差别也很大。因此，全屋万兆方案我更看好全屋万兆光纤的方案。假如以后我有机会装修自己的房子的话，我肯定会要求装修师傅给我单独埋一根光纤管线，然后预埋光纤，进入万兆网络时代，这样我的nas也能发挥他的最大性能。\u003C\u002Fp>\n",{"id":36,"title":37,"uri":38,"author":10,"tags":39,"created_at":41,"view_count":42,"content":43},67,"初学rust，为什么对象不能被函数返回","think-of-rust-beginning-learner-why-can-not-return-an-object",[40],"rust","2022-08-24 10:50:06",384,"\u003Cp>7年前，我选择了自学golang，事实证明我选择对了。目前业界用golang的人越来越多，也越来越卷。于是我就想选择另一门语言了。用了这些年的golang之后，感觉golang在很多场景下还是很难胜任高新能开发；另外，我特别羡慕能做底层开发的同学，比如内核开发、协议栈开发等；因此，我看上了rust，rust号称无gc，甚至还能开发linux内核，还有一些游戏引擎，数据库引擎也是用rust开发的，一听就特别高端是吧。\u003C\u002Fp>\n\n\u003Cp>于是我作为一个新手，开始尝试上手rust，原本准备依照golang的学习路线，先写个博客或者小的web程序，但是，发现rust上手太难。于是降低了上手的要求，用rust重写了一遍我的pinyin项目，项目是将汉字翻译成拼音，支持多音词，需要接入字词库。折腾了许久，终于完成了；这里简单谈一下作为一个rust初学者的感受。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F08\u002Fxtyiguc3.webp\" alt=\"xtyiguc3\" \u002F>\u003C\u002Fp>\n\n\u003Cp>首先，最大一个问题就是局部变量无法在作用域之外使用，这在golang上会自动扩大作用域，无需考虑这些问题。比如，我在一个函数中创建出来的对象，return返回后，发现无法在外部访问，直接报错，实际上该对象在函数结束时已经被销毁。或者说，所在对象发生move，因为他的类型未实现Copy trait。\u003C\u002Fp>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F09\u002F79dsu2ub.png\" alt=\"79dsu2ub\" \u002F>\u003C\u002Fp>\n\n\u003Cp>比如，这种报错经常发生在这么一个场景，我创建了一个config包，辛苦的在里面实现了加载配置文件到一个结构体，当我完成这些之后，希望在另一个mod中引用这个config结构体，便会经常发生这种情况。\u003C\u002Fp>\n\n\u003Cpre style=\"color:#e6edf3;background-color:#0d1117;white-space:pre-wrap;word-break:break-word;\">\u003Ccode>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#ff7b72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>std::fs::File;\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>std::io::prelude::\u003Cspan style=\"color:#ff7b72;font-weight:bold\">*\u003C\u002Fspan>;\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>once_cell::sync::Lazy;\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">#[\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">derive(Deserialize)\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">]\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">#[\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">derive(Debug)\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">]\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">struct\u003C\u002Fspan> \u003Cspan style=\"color:#f0883e;font-weight:bold\">LasConfig\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">pub\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>access_log: Option\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&lt;\u003C\u002Fspan>String\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>,\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>}\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">#[\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">derive(Deserialize)\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">]\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">#[\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">derive(Debug)\u003C\u002Fspan>\u003Cspan style=\"color:#8b949e;font-weight:bold;font-style:italic\">]\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">struct\u003C\u002Fspan> \u003Cspan style=\"color:#f0883e;font-weight:bold\">Conf\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">pub\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>las: Option\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&lt;\u003C\u002Fspan>LasConfig\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>}\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">static\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>global: \u003Cspan style=\"color:#f0883e;font-weight:bold\">Lazy\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&lt;\u003C\u002Fspan>Conf\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>Lazy::new(\u003Cspan style=\"color:#ff7b72;font-weight:bold\">|\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">|\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">let\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>file_path\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">config.toml\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>;\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">let\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">mut\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>file\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">match\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>File::open(file_path)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">        \u003C\u002Fspan>Ok(f)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>f,\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">        \u003C\u002Fspan>Err(e)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>panic!\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>(\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">no such file \u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">{}\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\"> exception:\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">{}\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>,\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>file_path,\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>e)\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>};\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">let\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">mut\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>str_val\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>String::new();\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">match\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>file.read_to_string(\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&amp;\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">mut\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>str_val)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">        \u003C\u002Fspan>Ok(s)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>s,\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">        \u003C\u002Fspan>Err(e)\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">=\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&gt;\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>panic!\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>(\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">Error Reading file: \u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">{}\u003C\u002Fspan>\u003Cspan style=\"color:#a5d6ff\">&#34;\u003C\u002Fspan>,\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>e)\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>};\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>toml::from_str(\u003Cspan style=\"color:#ff7b72;font-weight:bold\">&amp;\u003C\u002Fspan>str_val).unwrap()\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>});\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">pub\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">fn\u003C\u002Fspan> \u003Cspan style=\"color:#d2a8ff;font-weight:bold\">get_config\u003C\u002Fspan>()\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>-&gt; \u003Cspan style=\"color:#f0883e;font-weight:bold\">Conf\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">    \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72;font-weight:bold\">*\u003C\u002Fspan>global\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>}\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>其中\u003Ccode class=\"inline-code\">*global\u003C\u002Fcode>的类型的确是\u003Ccode class=\"inline-code\">Conf\u003C\u002Fcode>但是却无法通过参数返回。会有如下的报错信息\u003C\u002Fp>\n\n\u003Cpre style=\"color:#e6edf3;background-color:#0d1117;white-space:pre-wrap;word-break:break-word;\">\u003Ccode>\u003Cspan style=\"display:flex;\">\u003Cspan>error[E0507]: cannot move out of dereference of `once_cell::sync::Lazy&lt;Conf&gt;`\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>  --&gt; src\u002Fconfig\u002Fcfg.rs:32:5\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>   |\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>32 |     *global\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>   |     ^^^^^^^ move occurs because value has type `Conf`, which does not implement the `Copy` trait\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>For more information about this error, try `rustc --explain E0507`.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F09\u002Fe463qi5x.png\" alt=\"e463qi5x\" \u002F>\u003C\u002Fp>\n\n\u003Cp>很明显，这里生成的\u003Ccode class=\"inline-code\">Conf\u003C\u002Fcode>类型的\u003Ccode class=\"inline-code\">global\u003C\u002Fcode>对象，但是无法直接返回。因为返回的时候发生了\u003Ccode class=\"inline-code\">move\u003C\u002Fcode>。\u003C\u002Fp>\n\n\u003Cp>神奇的是，这里\u003Ccode class=\"inline-code\">get_config()\u003C\u002Fcode>改成如下这样，就不会有报错了\u003C\u002Fp>\n\n\u003Cpre style=\"color:#e6edf3;background-color:#0d1117;white-space:pre-wrap;word-break:break-word;\">\u003Ccode>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#ff7b72\">pub\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>\u003Cspan style=\"color:#ff7b72\">fn\u003C\u002Fspan> \u003Cspan style=\"color:#d2a8ff;font-weight:bold\">get_config\u003C\u002Fspan>()\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>-&gt; \u003Cspan style=\"color:#79c0ff\">&amp;\u003C\u002Fspan>&#39;static \u003Cspan style=\"color:#f0883e;font-weight:bold\">Conf\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\"> \u003C\u002Fspan>{\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>\u003Cspan style=\"color:#6e7681\">   \u003C\u002Fspan>(\u003Cspan style=\"color:#ff7b72;font-weight:bold\">*\u003C\u002Fspan>global).borrow()\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"display:flex;\">\u003Cspan>\u003Cspan style=\"color:#6e7681\">\u003C\u002Fspan>}\u003Cspan style=\"color:#6e7681\">\n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>我们从\u003Ca href=\"https:\u002F\u002Fdoc.rust-lang.org\u002Ferror-index.html#E0507\">E0507\u003C\u002Fa>这篇文章中可以看到\u003C\u002Fp>\n\n\u003Cblockquote>\n\u003Cp>the \u003Ccode class=\"inline-code\">nothing_is_true method\u003C\u002Fcode> takes the ownership of \u003Ccode class=\"inline-code\">self\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\n\u003Cp>那么我们这里的报错应该也是\u003Ccode class=\"inline-code\">*global\u003C\u002Fcode>在返回的时候，将ownership拿走，既然不能拿走，那就改为借用好了。\u003C\u002Fp>\n",{"id":45,"title":46,"uri":46,"author":10,"tags":47,"created_at":50,"view_count":51,"content":52},63,"不更新你可能以为我已经挂了",[48,49],"琐碎","博客","2022-08-17 18:05:03",208,"\u003Cp>上一篇是2019年。为什么这么久没更新？两方面原因：第一是自从加入现在的公司后，近几年更加忙碌了，没那么多时间；第二是博客的发布后台被我改版了，没时间完善，所以发文章的功能还不够完善。\u003C\u002Fp>\n\n\u003Cp>是的，我和我的博客都没挂。并且，最近比较流行暗黑模式，无论是app还是网站，但凡不支持暗黑模式，就显得特别碍眼，所以我就索性更新了一下样式，支持了暗黑模式；亮白主题与暗黑主题根据读者计算机系统上的主体模式自动变化。你系统是亮白主题，那么你浏览我博客页面也是亮白主题；你系统是暗黑主题，那么你浏览我博客页面也是暗黑主题。另外，还给博客添加了一个搜索功能，基于bleve的搜索。\u003C\u002Fp>\n\n\u003Cp>这几年，除了疫情，其实也没什么特别的。和之前一样生活、上班，如果非得说有所不同，只能说无论是生活还是工作都比之前更忙了。\u003C\u002Fp>\n",{"title":54,"list":55},"最热文章",[56,62,68,74,80,86,92,98,104,110],{"id":57,"title":58,"uri":59,"author":10,"created_at":60,"view_count":61},28,"docker容器目录与主机目录同步","\u002Farticle\u002Fdocker容器目录与主机目录同步","2014-12-31 12:34:08",15573,{"id":63,"title":64,"uri":65,"author":10,"created_at":66,"view_count":67},21,"beego中使用fis","\u002Farticle\u002Fbeego中使用fis","2014-12-03 10:47:56",9253,{"id":69,"title":70,"uri":71,"author":10,"created_at":72,"view_count":73},20,"用github登录，oauth开发","\u002Farticle\u002F用github登录，oauth开发","2014-11-23 13:33:37",9115,{"id":75,"title":76,"uri":77,"author":10,"created_at":78,"view_count":79},18,"windows服务注册工具nssm","\u002Farticle\u002Fwindows服务注册工具nssm","2014-10-31 21:34:39",9054,{"id":81,"title":82,"uri":83,"author":10,"created_at":84,"view_count":85},49,"用latex排版中文书籍","\u002Farticle\u002F用latex排版中文书籍","2016-10-31 11:12:02",8645,{"id":87,"title":88,"uri":89,"author":10,"created_at":90,"view_count":91},19,"texlive中文书签乱码","\u002Farticle\u002Ftexlive中文书签乱码","2014-11-15 02:54:01",8466,{"id":93,"title":94,"uri":95,"author":10,"created_at":96,"view_count":97},6,"Windows上的软件包管理器chocolatey","\u002Farticle\u002FWindows上的软件包管理器chocolatey","2014-08-10 15:55:22",8012,{"id":99,"title":100,"uri":101,"author":10,"created_at":102,"view_count":103},3,"利用开源和免费资源搭建CI环境","\u002Farticle\u002F利用开源和免费资源搭建CI环境","2014-07-04 16:54:58",7740,{"id":105,"title":106,"uri":107,"author":10,"created_at":108,"view_count":109},16,"php-fpm网站目录权限配置","\u002Farticle\u002Fphp-fpm网站目录权限配置","2014-10-18 01:36:10",7276,{"id":111,"title":112,"uri":113,"author":10,"created_at":114,"view_count":115},27,"sublime text 2插件开发，外部修改文件无法重新加载","\u002Farticle\u002Fsublime text 2插件开发，外部修改文件无法重新加载","2014-12-26 20:24:13",7055,{"title":117,"list":118},"按月归档",[119,123,126,129,132,135,138,142,146,149,152,155,159,162,165,169,172,175,178,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,246,249,252,255,258,261],{"title":120,"uri":121,"view_count":122},"2026年7月","\u002Farchive\u002F2026\u002F7\u002F1","[1]",{"title":124,"uri":125,"view_count":122},"2026年1月","\u002Farchive\u002F2026\u002F1\u002F1",{"title":127,"uri":128,"view_count":122},"2025年4月","\u002Farchive\u002F2025\u002F4\u002F1",{"title":130,"uri":131,"view_count":122},"2024年6月","\u002Farchive\u002F2024\u002F6\u002F1",{"title":133,"uri":134,"view_count":122},"2024年5月","\u002Farchive\u002F2024\u002F5\u002F1",{"title":136,"uri":137,"view_count":122},"2024年4月","\u002Farchive\u002F2024\u002F4\u002F1",{"title":139,"uri":140,"view_count":141},"2023年12月","\u002Farchive\u002F2023\u002F12\u002F1","[6]",{"title":143,"uri":144,"view_count":145},"2023年11月","\u002Farchive\u002F2023\u002F11\u002F1","[2]",{"title":147,"uri":148,"view_count":122},"2023年10月","\u002Farchive\u002F2023\u002F10\u002F1",{"title":150,"uri":151,"view_count":122},"2023年7月","\u002Farchive\u002F2023\u002F7\u002F1",{"title":153,"uri":154,"view_count":145},"2023年6月","\u002Farchive\u002F2023\u002F6\u002F1",{"title":156,"uri":157,"view_count":158},"2023年5月","\u002Farchive\u002F2023\u002F5\u002F1","[3]",{"title":160,"uri":161,"view_count":145},"2023年4月","\u002Farchive\u002F2023\u002F4\u002F1",{"title":163,"uri":164,"view_count":145},"2023年3月","\u002Farchive\u002F2023\u002F3\u002F1",{"title":166,"uri":167,"view_count":168},"2023年2月","\u002Farchive\u002F2023\u002F2\u002F1","[5]",{"title":170,"uri":171,"view_count":122},"2023年1月","\u002Farchive\u002F2023\u002F1\u002F1",{"title":173,"uri":174,"view_count":145},"2022年12月","\u002Farchive\u002F2022\u002F12\u002F1",{"title":176,"uri":177,"view_count":168},"2022年11月","\u002Farchive\u002F2022\u002F11\u002F1",{"title":179,"uri":180,"view_count":181},"2022年10月","\u002Farchive\u002F2022\u002F10\u002F1","[4]",{"title":183,"uri":184,"view_count":141},"2022年9月","\u002Farchive\u002F2022\u002F9\u002F1",{"title":186,"uri":187,"view_count":168},"2022年8月","\u002Farchive\u002F2022\u002F8\u002F1",{"title":189,"uri":190,"view_count":122},"2019年7月","\u002Farchive\u002F2019\u002F7\u002F1",{"title":192,"uri":193,"view_count":122},"2019年2月","\u002Farchive\u002F2019\u002F2\u002F1",{"title":195,"uri":196,"view_count":122},"2018年9月","\u002Farchive\u002F2018\u002F9\u002F1",{"title":198,"uri":199,"view_count":122},"2018年8月","\u002Farchive\u002F2018\u002F8\u002F1",{"title":201,"uri":202,"view_count":122},"2017年11月","\u002Farchive\u002F2017\u002F11\u002F1",{"title":204,"uri":205,"view_count":122},"2017年8月","\u002Farchive\u002F2017\u002F8\u002F1",{"title":207,"uri":208,"view_count":122},"2017年5月","\u002Farchive\u002F2017\u002F5\u002F1",{"title":210,"uri":211,"view_count":122},"2017年4月","\u002Farchive\u002F2017\u002F4\u002F1",{"title":213,"uri":214,"view_count":122},"2016年11月","\u002Farchive\u002F2016\u002F11\u002F1",{"title":216,"uri":217,"view_count":122},"2016年10月","\u002Farchive\u002F2016\u002F10\u002F1",{"title":219,"uri":220,"view_count":145},"2016年9月","\u002Farchive\u002F2016\u002F9\u002F1",{"title":222,"uri":223,"view_count":122},"2016年8月","\u002Farchive\u002F2016\u002F8\u002F1",{"title":225,"uri":226,"view_count":145},"2016年7月","\u002Farchive\u002F2016\u002F7\u002F1",{"title":228,"uri":229,"view_count":168},"2016年6月","\u002Farchive\u002F2016\u002F6\u002F1",{"title":231,"uri":232,"view_count":122},"2015年12月","\u002Farchive\u002F2015\u002F12\u002F1",{"title":234,"uri":235,"view_count":122},"2015年10月","\u002Farchive\u002F2015\u002F10\u002F1",{"title":237,"uri":238,"view_count":145},"2015年2月","\u002Farchive\u002F2015\u002F2\u002F1",{"title":240,"uri":241,"view_count":122},"2015年1月","\u002Farchive\u002F2015\u002F1\u002F1",{"title":243,"uri":244,"view_count":245},"2014年12月","\u002Farchive\u002F2014\u002F12\u002F1","[8]",{"title":247,"uri":248,"view_count":145},"2014年11月","\u002Farchive\u002F2014\u002F11\u002F1",{"title":250,"uri":251,"view_count":168},"2014年10月","\u002Farchive\u002F2014\u002F10\u002F1",{"title":253,"uri":254,"view_count":158},"2014年9月","\u002Farchive\u002F2014\u002F9\u002F1",{"title":256,"uri":257,"view_count":158},"2014年8月","\u002Farchive\u002F2014\u002F8\u002F1",{"title":259,"uri":260,"view_count":158},"2014年7月","\u002Farchive\u002F2014\u002F7\u002F1",{"title":262,"uri":263,"view_count":145},"2013年9月","\u002Farchive\u002F2013\u002F9\u002F1",5,{"url":266,"title":267},"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F09\u002Fij6x8o4s.webp","老家 摄于2020年秋",1790781589996]