<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Malu Blog</title><link>https://malu.ome/</link><description>Recent content on Malu Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Wed, 09 Feb 2022 11:13:23 +0000</lastBuildDate><atom:link href="https://malu.ome/index.xml" rel="self" type="application/rss+xml"/><item><title>重庆少年的你取景地打卡</title><link>https://malu.ome/post/%E9%87%8D%E5%BA%86%E6%89%93%E5%8D%A1/</link><pubDate>Wed, 09 Feb 2022 11:13:23 +0000</pubDate><guid>https://malu.ome/post/%E9%87%8D%E5%BA%86%E6%89%93%E5%8D%A1/</guid><description>
&lt;p>过年期间去了重庆玩一圈. 打卡了一圈少年的你拍摄地点, 算是电影的圣地巡礼了?&lt;/p>
&lt;p>从机场到酒店的路上.发现重庆都是高楼.天际线真是好看啊&amp;hellip;&lt;/p>
&lt;h2 id="酒店篇">
&lt;a href="#%e9%85%92%e5%ba%97%e7%af%87" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
酒店篇
&lt;/h2>
&lt;p>这次预定的酒店是重庆观音桥的漫心酒店.进门的香氛味道很喜欢.&lt;/p>
&lt;p>入住送了安睡礼盒. 就是一篇蒸汽眼罩和耳塞. 不过好在附近也不是主干道和高速公路什么的.&lt;/p>
&lt;p>窗户对着的是居民区.晚上挺安静的也用不上&lt;/p>
&lt;p>因为最近疫情的原因没有自助早餐了. 都会直接送上房间. 挺适合我这种起不来的人的.&lt;/p>
&lt;p>都是10点钟起来吃早餐&amp;hellip;12店出门打卡. 中午饭就不吃了(不过这样是不是少了一次吃火锅的机会)&lt;/p>
&lt;p>不过说起来. 漫心的拖鞋是胶底的. 这样子就不怕水了. 这点还不错&lt;/p>
&lt;p>酒店的MINI BAR 什么东西都没有&amp;hellip;.也没什么免不免费的. 有的只是每天的几瓶矿泉水而已&lt;/p>
&lt;p>漫心和淋浴和全季的一样..都是温度是左右旋的. 止水在中间..感觉很不方面. 要是再多一个自由度控制水量就好了&lt;/p>
&lt;p>电视也是一样. 虽然可以投屏吧. 但是每次都是重置wifi的密码.. 这样子mac保存过的会连接失败. 然后怎么也连不上&amp;hellip;很麻烦啊. 到现在也不知道怎么解决. 都是用手机忘记密码后重新连接投屏的&lt;/p>
&lt;p>说起来漫心的床垫是真的舒服. 枕头也是羽绒和乳胶两种类型. 好评. 睡过最舒服的床垫&lt;/p>
&lt;p>这家漫心洗衣房感觉少了个便利贴. 之前的全季有便利贴可以让服务人员帮忙把洗完后的衣服送回房间. 这家有点不方便. 不过提了意见. 不知道会不会改进.但是估计也没什么机会再次入住了&lt;/p>
&lt;p>马桶有带喷头的只能坐便器.好评.坐垫加热暖暖的不用被冻着了.就是淋浴间必须经过马桶.没做到三分离&lt;/p>
&lt;p>最后还给我主动升级了一个房型. 好评&lt;/p>
&lt;h2 id="电影拍摄地打卡">
&lt;a href="#%e7%94%b5%e5%bd%b1%e6%8b%8d%e6%91%84%e5%9c%b0%e6%89%93%e5%8d%a1" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
电影拍摄地打卡
&lt;/h2>
&lt;h3 id="千厮门山城步道">
&lt;a href="#%e5%8d%83%e5%8e%ae%e9%97%a8%e5%b1%b1%e5%9f%8e%e6%ad%a5%e9%81%93" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
千厮门山城步道
&lt;/h3>
&lt;p>从酒店直接打车去洪崖小居. 是个居民楼. 然后附近逛一逛有几个老大爷乘凉. 朝着江边的方向有个特别长的楼梯就是取景地了.&lt;/p>
&lt;p>电影里阶梯直接下到江面. 现在新建了一个步道.搭了个平台直接到步道上.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5329%202.JPG"
alt="IMG_5329 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5459_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5459_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5458_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5458_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5326%202.JPG"
alt="IMG_5326 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5448_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5448_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5328%202.JPG"
alt="IMG_5328 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5465_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5465_副本"
/>&lt;/p>
&lt;p>这个超长的楼梯周围都是居民楼. 楼梯旁有楼梯可以到两边屋子的侧门&amp;hellip;有时候在山城不知道哪才算是一楼.&lt;/p>
&lt;h3 id="渝中区水族贸易中心">
&lt;a href="#%e6%b8%9d%e4%b8%ad%e5%8c%ba%e6%b0%b4%e6%97%8f%e8%b4%b8%e6%98%93%e4%b8%ad%e5%bf%83" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
渝中区水族贸易中心
&lt;/h3>
&lt;p>千厮门山城步道附近几百米.&lt;/p>
&lt;p>当前看起来没有多少生意了. 但是店铺还是在的. 就是水族箱里没有开灯.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5321%202.JPG"
alt="IMG_5321 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5476_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5476_副本"
/>&lt;/p>
&lt;h3 id="银星商城">
&lt;a href="#%e9%93%b6%e6%98%9f%e5%95%86%e5%9f%8e" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
银星商城
&lt;/h3>
&lt;p>旁边的商场出现火灾给围起来了&amp;hellip;还能看到烧黑的地方&amp;hellip;&lt;/p>
&lt;p>去的时候没有开门. 不知道是不是大年初五的原因.&lt;/p>
&lt;h3 id="白象居旁长台阶">
&lt;a href="#%e7%99%bd%e8%b1%a1%e5%b1%85%e6%97%81%e9%95%bf%e5%8f%b0%e9%98%b6" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
白象居旁长台阶
&lt;/h3>
&lt;p>我们沿江走着走着发现到了白象居.就钻进去看了看&amp;hellip;发现似乎山上有个步道. 但是需要上楼. 还挺有意思的&amp;hellip;&lt;/p>
&lt;p>上了九楼发现到了一个山腰的地方.附近转了转才找到这个地方.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5281%202.JPG"
alt="IMG_5281 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5495_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5495_副本"
/>&lt;/p>
&lt;p>从这下山的路上还撸了一只家猫, 大猫撸小猫&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5504_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5504_副本"
/>&lt;/p>
&lt;h3 id="二厂文创公园">
&lt;a href="#%e4%ba%8c%e5%8e%82%e6%96%87%e5%88%9b%e5%85%ac%e5%9b%ad" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
二厂文创公园
&lt;/h3>
&lt;p>二厂本身就是一个景点. 类似昙华林的一个地方? 就直接打车去了. 附近还有李子坝.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5604.JPG"
alt="IMG_5604"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5551_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5551_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5605.JPG"
alt="IMG_5605"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5558_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5558_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5606.JPG"
alt="IMG_5606"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5554_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5554_副本"
/>&lt;/p>
&lt;h3 id="铜元局地铁站">
&lt;a href="#%e9%93%9c%e5%85%83%e5%b1%80%e5%9c%b0%e9%93%81%e7%ab%99" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
铜元局地铁站
&lt;/h3>
&lt;p>单纯的只是个江边的地铁站&amp;hellip;因为地形的关系高度差很大. 有了很好拍的景&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5324%203.JPG"
alt="IMG_5324 3"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5563_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5563_副本"
/>&lt;/p>
&lt;h3 id="魁星楼天梯">
&lt;a href="#%e9%ad%81%e6%98%9f%e6%a5%bc%e5%a4%a9%e6%a2%af" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
魁星楼天梯
&lt;/h3>
&lt;p>魁星楼是一个停车场. 天梯在顶楼. 直接到附近的医院就可以上去拍了&amp;hellip;因为医院在山顶.&lt;/p>
&lt;p>然后楼下一楼还有个停车场入口的取景地&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5322%203.JPG"
alt="IMG_5322 3"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5515_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5515_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5323%203.JPG"
alt="IMG_5323 3"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5519_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5519_副本"
/>&lt;/p>
&lt;h3 id="中山四路">
&lt;a href="#%e4%b8%ad%e5%b1%b1%e5%9b%9b%e8%b7%af" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
中山四路
&lt;/h3>
&lt;p>中山四路很漂亮..附近还有玉琦美术馆. 虽然没有带身份证没法进去看&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5331%202.JPG"
alt="IMG_5331 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5537_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5537_副本"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5333%202.JPG"
alt="IMG_5333 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5541_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5541_副本"
/>&lt;/p>
&lt;h3 id="海棠溪筒子楼">
&lt;a href="#%e6%b5%b7%e6%a3%a0%e6%ba%aa%e7%ad%92%e5%ad%90%e6%a5%bc" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
海棠溪筒子楼
&lt;/h3>
&lt;p>打车到附近&amp;hellip;有个希尔顿大楼..通体金色.真的很丑. 像是川普建的一样&lt;/p>
&lt;p>附近会有个很大的标牌之路是网红打卡点..但是那里其实是从居民楼传过去的..而且要两块钱&lt;/p>
&lt;p>其实附近绕一绕从旁边就可以进去了&lt;/p>
&lt;p>不过说实话真的很阴森&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5294%202.JPG"
alt="IMG_5294 2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/IMG_5582%202_%E5%89%AF%E6%9C%AC.jpg"
alt="IMG_5582 2_副本"
/>&lt;/p>
&lt;h3 id="后记">
&lt;a href="#%e5%90%8e%e8%ae%b0" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
后记
&lt;/h3>
&lt;p>玩了几天重庆还是意犹未尽. 感觉有些地方能够拍得更好的.&lt;/p>
&lt;p>太喜欢重庆这个山城了. 上上下下的有意思的地方特别多.或许是自己就是喜欢各种山上的楼梯&lt;/p>
&lt;p>重庆市的规划也很有意思. 它不想北京这边一规划就是特别明确的居民区. 居民区里真的就是没有啥商业. 然后好大一片都是小区的自留地. 还不容易进去&lt;/p>
&lt;p>重庆就是都是单独的居民楼. 底下是商店. 楼上是居民区.步行哪里都可以穿入. 走到哪都有临街的店铺. 可以随时坐一坐&lt;/p>
&lt;p>在重庆有点奇怪的地方就是为啥感觉重庆遍地都是银行. 银行在重庆特别瞩目&lt;/p></description></item><item><title>撸招行抽奖活动积分</title><link>https://malu.ome/post/%E6%92%B8%E6%8B%9B%E8%A1%8C%E6%8A%BD%E5%A5%96%E6%B4%BB%E5%8A%A8%E7%A7%AF%E5%88%86/</link><pubDate>Sun, 06 Jun 2021 12:34:37 +0000</pubDate><guid>https://malu.ome/post/%E6%92%B8%E6%8B%9B%E8%A1%8C%E6%8A%BD%E5%A5%96%E6%B4%BB%E5%8A%A8%E7%A7%AF%E5%88%86/</guid><description>
&lt;p>招行微信公众号突然给我发送积分快要过期了的提醒, 然后又看到有积分抽奖的活动&lt;/p>
&lt;p>想着既然要过期了还不如抽奖试试呢&lt;/p>
&lt;p>于是就点进去了&lt;/p>
&lt;p>图片&lt;/p>
&lt;p>发现. 诶. 这么感觉这中奖率还挺高了&amp;hellip;玩这个我竟然还能赚积分的&lt;/p>
&lt;p>于是就一只点点点. 点了好一会发现确实可以&lt;/p>
&lt;p>但是点点点太累了&amp;hellip;这玩意能不能做成自动了&lt;/p>
&lt;p>于是我就上Charles 抓包来着&lt;/p>
&lt;p>抓完发现. 是一个post请求&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/image-20210606123437662.png"
alt="image-20210606123437662"
/>&lt;/p>
&lt;p>整个请求也挺简单的.&lt;/p>
&lt;p>就通过cookie验证用户. 指定活动id. 发送post请求. 返回结果&lt;/p>
&lt;p>于是花五分钟通过python 写好了请求的语句&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/image-20210606123552529.png"
alt="image-20210606123552529"
/>&lt;/p>
&lt;p>成功返回了..&lt;/p>
&lt;p>于是准备请求100次看看回报率&lt;/p>
&lt;p>干 完全是亏本的&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费9积分, 获得9积分, 回报率1.0
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费18积分, 获得18积分, 回报率1.0
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12971, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;19积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费27积分, 获得37积分, 回报率1.3703703703703705
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费36积分, 获得38积分, 回报率1.0555555555555556
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12971, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;19积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费45积分, 获得57积分, 回报率1.2666666666666666
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费54积分, 获得66积分, 回报率1.2222222222222223
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费63积分, 获得67积分, 回报率1.0634920634920635
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费72积分, 获得68积分, 回报率0.9444444444444444
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费81积分, 获得77积分, 回报率0.9506172839506173
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费90积分, 获得86积分, 回报率0.9555555555555556
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费99积分, 获得87积分, 回报率0.8787878787878788
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费108积分, 获得88积分, 回报率0.8148148148148148
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12971, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;19积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费117积分, 获得107积分, 回报率0.9145299145299145
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费126积分, 获得108积分, 回报率0.8571428571428571
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费135积分, 获得109积分, 回报率0.8074074074074075
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费144积分, 获得118积分, 回报率0.8194444444444444
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费153积分, 获得127积分, 回报率0.8300653594771242
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费162积分, 获得128积分, 回报率0.7901234567901234
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费171积分, 获得129积分, 回报率0.7543859649122807
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费180积分, 获得138积分, 回报率0.7666666666666667
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12972, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费189积分, 获得139积分, 回报率0.7354497354497355
&lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;respCode&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;1000&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;respMsg&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;成功&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>: &lt;span class="o">{&lt;/span>&lt;span class="s1">&amp;#39;awardId&amp;#39;&lt;/span>: 12973, &lt;span class="s1">&amp;#39;awardName&amp;#39;&lt;/span>: &lt;span class="s1">&amp;#39;9积分&amp;#39;&lt;/span>, &lt;span class="s1">&amp;#39;awardType&amp;#39;&lt;/span>: 5, &lt;span class="s1">&amp;#39;memo&amp;#39;&lt;/span>: None&lt;span class="o">}}&lt;/span>
耗费198积分, 获得148积分, 回报率0.7474747474747475
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>民国时期海南的军事地图</title><link>https://malu.ome/post/%E6%B0%91%E5%9B%BD%E6%97%B6%E6%9C%9F%E6%B5%B7%E5%8D%97%E7%9A%84%E5%86%9B%E4%BA%8B%E5%9C%B0%E5%9B%BE/</link><pubDate>Mon, 04 May 2020 10:14:34 +0000</pubDate><guid>https://malu.ome/post/%E6%B0%91%E5%9B%BD%E6%97%B6%E6%9C%9F%E6%B5%B7%E5%8D%97%E7%9A%84%E5%86%9B%E4%BA%8B%E5%9C%B0%E5%9B%BE/</guid><description>
&lt;p>最近在翻箱倒柜, 发现以前收藏的一份民国时期的军事地图. 挺有意思的&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/txu-oclc-10552568-ne49-1.jpg"
alt="txu-oclc-10552568-ne49-1"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/txu-oclc-10552568-ne49-2.jpg"
alt="txu-oclc-10552568-ne49-2"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/txu-oclc-10552568-ne49-5.jpg"
alt="txu-oclc-10552568-ne49-5"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/txu-oclc-10552568-ne49-6.jpg"
alt="txu-oclc-10552568-ne49-6"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/txu-oclc-10552568-nf49-14.jpg"
alt="txu-oclc-10552568-nf49-14"
/>&lt;/p></description></item><item><title>海南地方志下载</title><link>https://malu.ome/post/%E6%B5%B7%E5%8D%97%E5%9C%B0%E6%96%B9%E5%BF%97%E4%B8%8B%E8%BD%BD/</link><pubDate>Sun, 03 May 2020 13:28:14 +0000</pubDate><guid>https://malu.ome/post/%E6%B5%B7%E5%8D%97%E5%9C%B0%E6%96%B9%E5%BF%97%E4%B8%8B%E8%BD%BD/</guid><description>
&lt;p>之前说过想分享地方志. 正好翻到以前马伯庸的分享.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%E6%88%AA%E5%B1%8F2020-05-0313.37.52.png"
alt="截屏2020-05-0313.37.52"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%E6%88%AA%E5%B1%8F2020-05-0313.39.09.png"
alt="截屏2020-05-0313.39.09"
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%E6%88%AA%E5%B1%8F2020-05-0313.39.26.png"
alt="截屏2020-05-0313.39.26"
/>&lt;a href="https://c-t.work/s/54ebdc53989f49">奶牛快传地址&lt;/a>&lt;/p></description></item><item><title>目前的一些想法</title><link>https://malu.ome/post/%E7%9B%AE%E5%89%8D%E7%9A%84%E4%B8%80%E4%BA%9B%E6%83%B3%E6%B3%95/</link><pubDate>Sat, 02 May 2020 23:35:06 +0000</pubDate><guid>https://malu.ome/post/%E7%9B%AE%E5%89%8D%E7%9A%84%E4%B8%80%E4%BA%9B%E6%83%B3%E6%B3%95/</guid><description>
&lt;p>最近几个月总是有一些需求在脑内蹦出, 不如在blog里罗列一下, 也算是对自己的一个提醒&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://abyss.malu.moe/">abyss&lt;/a> 动漫人物识别的一个网站.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="">jav&lt;/a> 一个类似jav的网站. 因为自己存了不少DMM 6000k的M3U8, 还是想完成当初的分流计划的. 附带合购的功能&lt;/p>
&lt;/li>
&lt;li>
&lt;p>python 的DHT网络爬虫, 现在github 上有现成的DHT爬虫, 但是我想更近一步获取种子文件, 解析文件信息. 甚至画出这个种子的DHT网络结构..当然 这个可以是jav网站的一部分&lt;/p>
&lt;/li>
&lt;li>
&lt;p>分享地方志和的一个社区&lt;/p>
&lt;/li>
&lt;li>
&lt;p>blog的更新提醒&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>其中 abyss 是在实习的时候就开始的一个项目, 当初因为在twitter上每天都能看到不少画师二次创作的色图. 但是想使用都不知道是哪位角色. 于是就想弄一个人物识别的工具, 整好当时觉得深度学习挺符合这个需求了.&lt;/p>
&lt;p>一开始企图用google image 搜索关键词来获取标注的数据. 但是爬了几百G的图片后发现可用的实在太少了. 便在pixiv 手工标注图片了.&lt;/p>
&lt;p>最开始依照网络的教程用keras搭建模型. 薅google cloud 300刀试用的羊毛, 开24核心训练数据.&lt;/p>
&lt;p>后来发现百度有easydl这样的平台上传图片用他们的模型和计算资源. 部署也很简单. 后端对接接口前端负责查询展示就好了. 目前用的也是百度的api. 效果蛮不错的.&lt;/p>
&lt;p>但是! 一个应用最重要的还是维护啊. 在回校的一段时间里 abyss 就没有维护了. 网站也是经历了半年不可用的状态..源代码也没上传github, 用python重构了一遍 serverless 部署了后端. 前端放在我vu的日本服务器上.&lt;/p>
&lt;p>目前经过补充有一百多位人物的数据, (但是数据也丢了一部分&amp;hellip;只有之前的80多位了..), 感觉这种事情还是要有一个社区持续不断的补充数据. 但是花钱是不可能的. 只有白嫖才能过的了日子的样子. 在首页挂了一个qq群. 期待志同道合的人一起补充数据集.&lt;/p>
&lt;p>jav 是目前想实现的一个项目, 因为当初接触DMM的影片破解后爬了月额20多w的M3U8文件, 但是M3U8文件总会失效, 还是希望这些文件能够以影片的方式保存在某些地方. 于是便想到了实现一个网站. 通过提交需求. 网站后端下载影片后提供一个链接. 并且把文件保存在某个云盘上.&lt;/p>
&lt;p>这样子的目的是优先保存有价值的影片. 有需求的影片. 同时把这个工作自动化. 当有需求,能够提供某些人的需求后. 就有各种方式引导这个项目在一个社区运作下去了.(感觉在这片土地上这个工作有点非法的样子)&lt;/p>
&lt;p>更长远还可以弄一个类似jav的网站. 同时具有合购的功能. 现在有阿乐的开车团. 但是这个东西必须自动化才可以持续运营下去啊.&lt;/p>
&lt;p>打算之后会在blog分享一些地方志. 但是资源源头是一个问题. 还没有想法.&lt;/p>
&lt;p>还有就是一个 blog 更新提醒的小工具. 现在感觉一个个人的blog 还是挺有价值的. 但是blog文件夹已经有超过20个了. 虽然时不时的会全部打开一遍看看有什么更新. 但是这重复的动作还是想自动化. 搜索了一下感觉没有方便的轮子. 便想这自己实现一个.&lt;/p>
&lt;p>感觉技术上的事情都好实现, 但是社区运营还是会挺复杂的..但是实现的一个qq bot, 实现了武汉ingress 玩家群里的要给咕咕鸟的qq bot功能, 对特定的关键词回复或者复读. 实现也挺简单, 用了 &lt;a href="https://nonebot.cqp.moe/guide/">NoneBot&lt;/a> 这个库, 后端用redis 储存回复的内容, 随机抽取关键词的 value 回复. 但是在ingress的玩家群里大家添加的回复还是挺有意思的.&lt;/p>
&lt;p>在阿乐的群里本来打算是大家添加 影片神秘代码的分享连接, 结果都是一些脏话或者对某个人的人身攻击&amp;hellip;但是你能说这不是他们的娱乐方式吗? 只是这个娱乐方式在你看来有点刺眼罢了..&lt;/p>
&lt;p>qq bot 还实现了关键词对函数的调用. 理论上可以实现简单的对话游戏, 一些自动化操作.&lt;/p>
&lt;p>本还想实现对M3U8 的分享的. 结果还是自己精力有限.&lt;/p>
&lt;p>七七八八的瞎写了那么多, 也没什么章法. 这篇就当作今一篇碎碎念吧&lt;/p></description></item><item><title>DMM影片破解</title><link>https://malu.ome/post/dmm%E5%BD%B1%E7%89%87%E7%A0%B4%E8%A7%A3/</link><pubDate>Sat, 28 Mar 2020 21:29:43 +0000</pubDate><guid>https://malu.ome/post/dmm%E5%BD%B1%E7%89%87%E7%A0%B4%E8%A7%A3/</guid><description>
&lt;p>之前因为在一个jav论坛上发现有大佬(一个叫阿乐的奇怪大叔)发福利. 提交dmm上的月额影片然后她分享M3U8文件给你, 你下载M3U8文件的里视频分片合并就是完整的视频了.&lt;/p>
&lt;p>之后发现现在的日本jav流出方式都是这种方式流出的. 怪不得国内各种代购..&lt;/p>
&lt;p>简单来讲就是日本的DMM网站现在购买影片之后你是可以在线的方式看串流的. 然后在线的方式就是网页端播放M3U8文件.然后即使是加密的密钥也是通过http的协议请求的&amp;hellip;你在本地完全可以看到密钥的内容.&lt;/p>
&lt;p>于是你就可以通过直接下载整个M3U8文件之后通过密钥解密下载后的视频文件. 达到获取影片的目的.&lt;/p>
&lt;p>这比传统下载完整影片后用dmm的播放器录屏方式快多了(javbus这个网站的代购之前一段时间就是录屏..一些影片还能够看到因为鼠标移动出现的播放器界面).&lt;/p>
&lt;p>于是各种新的放流团队如同雨后春笋般的涌出.现在最出名的就是sht? 只有简单的片头, 而且还是通过无损合并的方式添加的. 这样对他们的好处是不用重编码. 另一个好处是下片的也不用接受那些重压缩后屎一样的画质了&lt;/p>
&lt;p>这里简单的讲解一下目前是怎么做的. 具体的实现脚本会很简单. 具体脚本可能以后会在github分享?&lt;/p>
&lt;p>在你购买一部影片之后你可以在你购买的商品看到播放方式. 这里选择第一个&lt;strong>ストリーミング&lt;/strong>(流媒体)&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-03-2822.04.52.png"
alt="截屏2020-03-2822.04.52"
/>&lt;/p>
&lt;p>之后会新打开一个标签页.. 查看浏览器的控制台看具体的网络请求&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-03-2822.06.43.png"
alt="截屏2020-03-2822.06.43"
/>&lt;/p>
&lt;p>其中最重要的就是获取一个m3u8的文件.. 里面是具体的分片地址 分片的具体连接可以看你请求的ts文件的地址拼接出来.&lt;/p>
&lt;p>其中一个&lt;a href="">https://www.dmm.co.jp/service/-/drm_iphone&lt;/a>的请求会请求M3U8文件的密钥, 这是一个16b大小的文件&lt;/p>
&lt;p>在你获取到m3u8文件后把m3u8文件的key描述信息里的URI替换成你获取的key文件地址就好了&lt;/p>
&lt;pre>&lt;code>#EXT-X-KEY:METHOD=AES-128,URI=&amp;quot;&amp;quot;
&lt;/code>&lt;/pre>&lt;p>或者选择base64保存你的key , 其中xxx内容替换为16b 编码过后的base64字符串(24b)&lt;/p>
&lt;pre>&lt;code>#EXT-X-KEY:METHOD=AES-128,URI=&amp;quot;base64:xxx&amp;quot; // xxx是编码过后的base64字符串
&lt;/code>&lt;/pre>&lt;p>你拥有分片地址和密钥之后你就可以下载解密了..现在myhd1080 和sht等论坛的大众破解方式都是这种&lt;/p>
&lt;p>当然sht还有更厉害的wmv破解, 纯手工的方式. 但是这种方式又不能批量工业化的进行..个人觉得串流6000k的影片质量相比之前的1g渣渣好多了..也足够了.&lt;/p>
&lt;p>话说dmm一部影片的价格在500日元到4000日元之间. 对应人民币是30 ~ 240元一部.. 当初年轻的时候觉得代购40一部价格还可以..毕竟得添加点服务费嘛.&lt;/p>
&lt;p>但是那些放流的论坛实际 上会直接购买dmm的月额会员. 可以在一个月的时间内拥有月额范围内影片的播放权. 价格区间在1000日元到9000日元之间. 最贵的9000日元档位有进24w的影片. 这样子每个月的费用540元而已&amp;hellip;(但是这活有被赠送银手镯的风险..还是留给敢吃这口饭的人把)&lt;/p>
&lt;p>实际上DMM对M3U8 的风控非常的低. 没有请求qps的限制. 下载ts没有权限认证. 导致了实际上24w的M3U8是可以全部抓下来的.(我就抓完了, 早些时候还有24w影片备份计划. 满打满算需要1pb的空间备份..实际上也没有进行下去). 只是少有人乐意分享出来(毕竟这是砸人饭碗啊, 阿乐还是挺好的)&lt;/p>
&lt;p>写到最后还是感觉现在分流的一些渠道还是蛮良心的. 以前一段时间内的影片都有澳门赌场的广告. 影片中各种水印. 渣画质. 以至于线上的最大赌场开业了还是之前一段时间的热门哽. 现在分流的团队也就打打论坛的广告.&lt;/p>
&lt;p>&lt;a href="https://github.com/malusama/DMM_m3u8_down">https://github.com/malusama/DMM_m3u8_down&lt;/a>
之前实现的一个GO语言 获取M3U8和下载的实例&lt;/p>
&lt;p>如果有问题可以加下qq群 617581485, 但是不保证能够解答&lt;/p></description></item><item><title>树莓派4</title><link>https://malu.ome/post/%E6%A0%91%E8%8E%93%E6%B4%BE4/</link><pubDate>Sat, 28 Mar 2020 20:21:20 +0000</pubDate><guid>https://malu.ome/post/%E6%A0%91%E8%8E%93%E6%B4%BE4/</guid><description>
&lt;p>之前写了一个bilibili的爬虫, 根据bilibili 的一个&lt;a href="http://api.bilibili.com/x/web-interface/view?aid=">api&lt;/a>获取 视频的一些信息. (记得我大一的时候也写了一个爬虫, 那时候bilibili似乎没有对api限制qps? 我记得几天就用这自己的笔记本爬了前一百万的av号?).&lt;/p>
&lt;p>爬虫的架构基本上是要爬取的av号先 生成在redis的一个队里, 爬虫从redis去出要爬的av, 获取信息后储存到mongo里. 这样子爬虫完全就是一个消费者. 消费redis里的av号. 可以随时横向扩展. 但是还有一个api对一个ip频率限制的问题.&lt;/p>
&lt;p>于是又起了一个抓取互联网上公开http代理的一个&lt;a href="https://github.com/phpgao/proxy_pool">应用&lt;/a>. 这样子爬虫就可以轮流使用代理池里的http代理. 不间断的请求api.(因为代理的问题还给一些提供http代理的服务氪过金..结果算了一下50块钱还不够一天用的)&lt;/p>
&lt;p>我在自己的笔记本上起了8个爬虫, 每个爬虫 32 的协程持续请求..跑了几个小时就有25w的数据入库, 但是在笔记本跑的最大一个问题就是如果合上盖子爬虫就停了..如果只是测试可以在本地跑, 长期运行还是得在一个不关机的机器上. 而且在自己笔记本上跑还有一个问题就是他娘的mongo写入太费cpu了把.. 爬虫跑起来mongo的进程长期400%的使用率&amp;hellip;不一会风扇就转起来了&amp;hellip;&lt;/p>
&lt;p>于是我打算把需要用到的服务mongo, redis, 代理池都由docker提供. 整个应用写个docker-compose.yaml 文件拉起来.但是有个问题. 我5刀一个月的vps内存是1g的&amp;hellip;起个redis, mongo vps内存就满了. 连ssh上去操作的时候延迟简直不能忍受. 于是又想要一个高内存的vps了&amp;hellip;.&lt;/p>
&lt;p>转了一圈国内最好的价格是2c4g的机器一年400, 三年1200.但是这个是新用户或者企业用户的优惠. 现在没有那么优惠的价格了&amp;hellip;.于是便打起了树莓派的主意(绕了那么大一圈才谈到树莓派..)&lt;/p>
&lt;p>逛了淘宝一圈以近500的价格买了一个4g内存的树莓派4, 带散热片套装.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/F1B33EB8-9879-44B5-A558-2D0065A8780C_1_105_c-20200328204200707.jpeg"
alt="F1B33EB8-9879-44B5-A558-2D0065A8780C_1_105_c"
/>&lt;/p>
&lt;p>这玩意买回来后我尝试下载一个系统写进去..按照教程在根目录创建了一个名ssh的文件.以期待在系统起起来以后能够把ssh服务给来了. 这样我就直接能够连进去了&lt;/p>
&lt;p>但是实际上并不是那么顺利. 首先是在插入写好系统的tf卡后启动树莓派. 在路由器的页面里没看到类似Raspberry名字的机器(这里是第一个坑, 不知道为啥这里看到树莓派机器的名字是*). 于是我把所有不确定机器的ip都ssh了一遍..都直接拒绝了. ..&lt;/p>
&lt;p>但是这时候我没有显示器 ..只知道树莓派开机了. ssh连接不上去. 是不知道树莓派现在什么状态了..可愁死我了.&lt;/p>
&lt;p>于是我在京东下单了hmdi的线.想等线到接上电视看看是什么状态&amp;hellip;之后就是漫长的等待.&lt;/p>
&lt;p>等到hdmi的线到了以后. 一样的操作. 接上hdmi的线, 没输入..日了够了. 这样子是完全没有进到系统里?&lt;/p>
&lt;p>于是我把官网上的系统试了好几个..各种方式写了好几遍&amp;hellip;完全没有紧张.甚至到都问淘宝店家了.&lt;/p>
&lt;p>之后发现一个异状, 我的树莓派上电后绿色的灯不闪, 理论上读取tf卡绿色灯是会闪烁的. 这是系统有问题? 于是又写了好几遍tf卡&amp;hellip;没进展&lt;/p>
&lt;p>&lt;strong>然后发现官网上又说树莓派4会有电源功率够的时候可能开机的时候不能顺利启动..于是我试了试就插上电源的网线的树莓派启动..成功了&lt;/strong>..&lt;/p>
&lt;p>于是复盘..可能之前写的系统是成功启动的, 但是在根目录下创建ssh文件并没有开启ssh服务.&lt;/p>
&lt;p>在hdmi线到了以后因为一直都是插着hdmi线启动的, 启动电流不够, 带不起开机时候的功率, 于是进入到了不断重启的状态&amp;hellip;&lt;/p>
&lt;p>进入树莓派的环境发现apt还有各种依赖的问题..执行apt -f install 修复之后还把我apt给卸载了&amp;hellip;于是还手动安装apt了几次&amp;hellip;真是一言难尽&lt;/p>
&lt;p>最后还是想说硬件这东西真难调试&amp;hellip;出错了都不知道哪里出了问题..想起当初组原实习的时候也是在一个板子上插线..用各种芯片实现小功能..弄了半天发现是板子的线接触有问题.难受死了&lt;/p></description></item><item><title>北京北京</title><link>https://malu.ome/post/%E5%8C%97%E4%BA%AC%E5%8C%97%E4%BA%AC/</link><pubDate>Sat, 09 Nov 2019 18:04:52 +0000</pubDate><guid>https://malu.ome/post/%E5%8C%97%E4%BA%AC%E5%8C%97%E4%BA%AC/</guid><description>
&lt;p>来北京也有几个月了 ,还是非常不习惯北京的居住形式.&lt;/p>
&lt;p>一个特别给我冲击感的就是厕纸不丢在马桶里冲掉! 而是丢进垃圾桶里.&lt;/p>
&lt;p>起初是在租的房子的厕所里发现有个纸筐, 起初觉得为啥在这干湿不分离的地方放一个垃圾筐???&lt;/p>
&lt;p>想想可能是女生有丢卫生巾的需求. 但是渐渐地我发现里面会堆积白色的厕纸而不是卫生巾..心里有点难受&lt;/p>
&lt;p>在一段时间里我不断说服自己这只是有些人这么做,可能是曾经的楼房楼下水管道堵过心里有阴影.但是我发现不是! 在我在公司那一层的厕所里我发现一个纸筐. 我会发现里面总是有些卫生纸&amp;hellip;.讲道理这栋建筑建成在千禧年后.按照建筑的使用年龄这算是新楼了吧. 下水管道不可能用的是铸铁. 也就没有腐蚀导致管径缩小的问题.&lt;/p>
&lt;p>我渐渐感觉厕纸丢在纸篓里而不是冲掉是一个在北方被承认的&amp;quot;常识&amp;quot;. 在我注意到这点后我甚至还发现稻香园小区里甚至有个标注专门收集厕纸的垃圾桶&amp;hellip;.我开始渐渐承认这是一个被社区接纳的做法..&lt;/p>
&lt;p>甚至在新华网的文章里也会没有违和感的讲道这一事实 , 下面的一片文章的一段&lt;/p>
&lt;p>&lt;a href="http://www.xinhuanet.com/local/2019-07/23/c_1124786075.htm">http://www.xinhuanet.com/local/2019-07/23/c_1124786075.htm&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>需要注意的是，同样是厨房中产生的垃圾，鸡鸭鱼骨头属于厨余垃圾，但大棒骨和玉米中间的核就属于其它垃圾，这是因为厨余垃圾往往在末端处理时要粉碎做肥料、饲料用，鸡鸭鱼骨头小，容易粉碎，但大骨头、玉米核硬，不容易碎，甚至可能会把厨余垃圾的末端处理设备弄坏。另外，不同于报纸、纸板箱、杂志、旧书等可回收物，卫生纸、厕纸、纸巾属于其它垃圾&lt;/p>
&lt;/blockquote>
&lt;p>公开承认了厕纸属于垃圾一类, 是需要收集处理的&amp;hellip;.我还是不明白在各种硬件条件都满足的今天为啥不冲掉.何况我已经冲掉半年了啥事都没.&lt;/p>
&lt;p>还有一个因素就是这里是北方啊! 行道树太小了. 不知道是市政建设的原因还是环境导致这里没有什么特别高大的乔木. 感觉二环外都是新栽的行道树. 因为二环胡同里的国槐还是非常高大的.但是为啥其他地方的就那么小啊? 行道树因为是新栽的根本没有遮阴的作用.所以你走在路旁会非常的晒. 特别是理你最近的人行天桥在你 500 米前, 你需要向前走 500 米再返回来走到对面的公交车站. 一次两次就能感觉到自己在外面的无力感.&lt;/p>
&lt;p>我曾经怀疑北京街道旁的小数目是不是新栽下的.于是搜索了下相关的资料.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-02-2623.28.58.png"
alt="截屏2020-02-2623.28.58"
/>&lt;/p>
&lt;p>发现国槐不愧是北京的市树.但是总感觉二环的胡同里才更常见.然后是一些毛白杨和小叶洋白蜡.嗯 感觉没什么特别的树.然后就是银杏了&amp;hellip;感觉银杏算是挺好看的景观树种.秋天金灿灿的一片.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-02-2623.36.10.png"
alt="截屏2020-02-2623.36.10"
/>&lt;/p>
&lt;p>然后又 40%的树胸径在 15cm 一下? 比了一下挺符合生活中的感受的&amp;hellip; 这感觉就太难受了.平时总宣传北京是一个有历史的古城.但是古城的印象只限在二环里.&lt;/p>
&lt;p>北京还有一个特点就是街道两旁大多数都是各种社区的围墙. 这些围墙可能是一些政府机关的. 大学的. 更多的是小区的.这就导致了大部分时候你走在街上两旁是没有什么商店的. 甚至走在北京的街头非常明显的能感受到商业区和住宅区的差别. 于是是不是你就会进入一片不欢迎你的地区..毕竟这里没有一点商业.你又不是这里的居民,你在这里闲逛干嘛.&lt;/p>
&lt;p>话说来总觉得中国的几个一线城市非常的大.从地图上看确实非常的大,密密麻麻的建筑群.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-02-2723.33.51.png"
alt="截屏2020-02-2723.33.51"
/>&lt;/p>
&lt;p>但是在这之外缺非常的让人疑惑.稍微看看城区之外的地方.&lt;/p>
&lt;p>地图上规则的矩形地块是一片一片的农田.为什么在好几万一平米的地方旁边是一块田啊?为什么这些地产之地块不开发啊??我都住到他妈六环外了好吗???每天上班得走京藏高速, 他妈的开一个小时.这些田建成房子他妈能塞多少人啊.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-02-2723.34.31.png"
alt="截屏2020-02-2723.34.31"
/>&lt;/p>
&lt;p>面对这魔幻的场面 却总能听到城市容不下那么多人口的说辞.但是我知道容不下那么多人口的原因也绝不是土地.&lt;/p>
&lt;p>相同的尺度看东京大湾区真的就是遍地都是民房&amp;hellip;&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-accelerate.aliyuncs.com/uPic/%e6%88%aa%e5%b1%8f2020-02-2723.32.42.png"
alt="截屏2020-02-2723.32.42"
/>&lt;/p>
&lt;p>于是我会觉得这会不会是北京的水资源不够.供给不了北京的 2000 多万人口.毕竟可是要南水北调供水的城市.&lt;/p>
&lt;p>等等. 你缺水为啥要在城市的周围留着那么多农田啊. 农业是高耗水的产业啊..还是觉得魔幻操作.&lt;/p>
&lt;p>综上所述..我觉得我是不是要去上海或者广州看看.&lt;/p></description></item><item><title>流式计算</title><link>https://malu.ome/post/%E6%B5%81%E5%BC%8F%E8%AE%A1%E7%AE%97/</link><pubDate>Mon, 11 Mar 2019 18:16:42 +0000</pubDate><guid>https://malu.ome/post/%E6%B5%81%E5%BC%8F%E8%AE%A1%E7%AE%97/</guid><description>
&lt;p>&lt;strong>为什么会出现流式计算？&lt;/strong>&lt;/p>
&lt;p>在现实的业务中，会有需要统计计算的需求，一部分的日志需要计算统计信息。这时候会有两个思路。&lt;/p>
&lt;p>一是当需求来的时候系统实时的计算一遍给出结果。&lt;/p>
&lt;p>二是当日志信息收集上来的时候就进行一遍计算，把结果保存好。这时候需求过来的时候直接取结果就好了。&lt;/p>
&lt;p>这两个方法分别是批量计算和流式计算。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/d56bd09ab2d99bf25bf15ea5c78813d6d458776e.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>批量计算是一种用户主动发起，高时延（相对流式计算）的计算。他需要加载数据再开始计算流程。在使用一个数据流做输入的情况下他有batch的概念。需要等到数据量满足一个batch的大小后开始计算。&lt;/p>
&lt;p>而流式计算更强调数据流的概念。数据到达处理和向后传递是不间断的。&lt;/p>
&lt;p>总感觉，流式计算像是batch粒度为一个信息大小的批量计算。而且Spark streaming就是采用小批量（batch）的方式来实现流式计算。&lt;/p>
&lt;p>&lt;strong>现在的流式计算框架之间有什么差别&lt;/strong>&lt;/p>
&lt;p>现在的流计算框架有 Twitter 的 Storm 和 Heron 还有 spark， finlk。&lt;/p>
&lt;p>&lt;strong>Storm&lt;/strong>&lt;/p>
&lt;p>Storm 使用有向图的方式定义计算流程。称之为 Topology。其中 Tuple 是 Storm 的主要数据结构。&lt;/p>
&lt;p>Spout 是有向图的数据源。它定义了数据的来源和去向，从来源接受数据发送给需要的节点。&lt;/p>
&lt;p>Bolts 是有向图中的逻辑处理单元。从 Spout 中接受数据并处理。处理后的数据根据需要指向下一个节点或者储存。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/image001.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>当定义好 Topology 便可提交到集群运行。Storm 集群主要由 Master node， Worker node 和 Coordinate node 构成。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Master node 上的 Nimbus 负责将应用代码分发给 Worker 节点 , 指派任务，并监控任务的执行。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Worker node 上的 Supervisor 负责监听从 Master node 分配来的任务，启动工作进程来运行相应的任务。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Coordinate node运行着 Zookeeper， 负责 Nimbus 和 Supervisor之间的通信。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/820234-20160110203625137-886332099.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Worker （JVM虚拟机） 节点中每个 workers 是服务器上相互独立运行的JVM进程。 每一个node可以配置运行一个或者多个worker。一个topology会分配到一个或者多个worker上运行。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Executor(线程)：是指一个worker的JVM进程中运行的Java线程。多个task可以指派给同一个executor来执行。除非是明确指定，Storm默认会给每一个executor分配一个task。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Task(bolt/spout实例)：task是spout和bolt的实例，nextTuple() 和 execute() 方法会被 executors 线程调用执行。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/20170904195320733%20%281%29.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;strong>Heron&lt;/strong>&lt;/p>
&lt;p>随着 Twitter 的数据越来越多，单个 storm 集群规模也越来越大。storm 原有的架构不可避免的碰到了之前没有过的问题。包括：每分钟数十亿的事件；大规模处理具有次秒级延迟和可预见的行为；在故障情况下，具有很高的数据准确性；具有很好的弹性，可以应对临时流量峰值和管道阻塞；易于调试；易于在共享基础设施中部署。&lt;/p>
&lt;p>Twitter 开始尝试对 strom做了一些改进，主要针对拓展性和稳定性。成果包括：使得Storm单集群可以容纳之前5倍的机器。但如果要继续改进，需要更改底层的设计和实现，代价很高，不亚于重新设计实现一个实时计算框架。&lt;/p>
&lt;p>在这个需求指引下，第二代的流式计算引擎 Heron 便诞生了。&lt;/p>
&lt;p>Heron 的设计目标包括&lt;/p>
&lt;ul>
&lt;li>
&lt;p>资源隔离 – 实时计算任务中的每一个节点和计算单元，应该确保能够使用且只使用它们分配的那些资源。这使得Heron在共享的基础设施上也保证资源分配以及资源隔离。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>兼容性 – Heron与Apache Storm的API和数据模型是完全兼容的，降低在两个系统的迁移成本。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>场景保证–Heron支持at-most-once，at-least-once，exactly-once等场景。并且在各种语义下，也可以通过不同的配置实现不同的取舍，如在exactly-once的场景下，可以通过配置选择低开销但恢复时间长、高开销但恢复时间短以及混合模式。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>性能 – 许多Heron的设计选择使得Heron获得了比Storm更高的吞吐量和更低的延迟，同时还提供了增强的可配置性来微调可能的延迟/吞吐量的折中。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>效率 – Heron的构建目标是以最小的资源使用量达到上述所有目标。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>提供新的功能，如反压机制 – 在Heron这类分布式系统中，不能保证所有的系统组件以相同的速度执行。Heron有内置的反压机制来确保拓扑在组件缓慢的情况下可以自适应。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>heron改进了一些strom框架下容易 形成系统瓶颈的地方。比如Storm的很多逻辑上相互独立的单元在实际实现中会共享资源。同时，这些资源在实践中发现是很容易成为瓶颈的。这一方面会影响系统的scalability和performance predictability，另外一方面，也很调试和进行异常处理。比如说，一个storm最小运行单元task出错的时候，可能会导致与之没有任何逻辑相关的其他task一起退出（因为系统实现的原因。）&lt;/p>
&lt;p>总而言之。heron相比storm 在底层RPC， worker之间的模块做了变更。带来性能上的提升则是副产品（至少官方是这么说的）&lt;/p></description></item><item><title>古德寺</title><link>https://malu.ome/post/%E5%8F%A4%E5%BE%B7%E5%AF%BA/</link><pubDate>Tue, 05 Mar 2019 17:28:21 +0000</pubDate><guid>https://malu.ome/post/%E5%8F%A4%E5%BE%B7%E5%AF%BA/</guid><description>
&lt;p>今天百无聊赖出去了古德寺。古德寺在汉口那边。腾讯地图显示新北门坐402便可以了。于是便出去了。&lt;/p>
&lt;p>402是一条旅游专线，它绕着东湖走一圈然到武汉大学的凌波门。不得不感叹。镜头里的生活真美。真实的凌波门其实离岸边没那么远，而且因为武汉莫名的天气东湖边的天空永远是灰蒙蒙的一片。且栈桥上非常的多人。小姐姐们倒是挺好看的，就是她们旁边的男生太碍眼了。&lt;/p>
&lt;p>在公交车上不知道过了多久。发现两旁的建筑都变成是老公房了。这就是到了武汉的老城区。回过神来才发现自己早就坐过站了。现在到了汉口的不知道什么地方。于是就下车了。下车就发现一辆公交一号线行驶过来。这地方可真是老城区。&lt;/p>
&lt;p>发现l老城区这里门面的招牌都是统一的。真不知道政府非得这样弄，要是觉得小店铺的招牌乱，可是你这样子弄整齐是整齐了，一点美感也没有。倒是时刻提醒你老大哥无处不在。&lt;/p>
&lt;p>走了几步发现颇有生活感的居民楼。无处不显着凌乱。阳台晾满了衣服和被褥。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-150359.jpg?x-oss-process=style/blog"
alt="居民楼"
/>&lt;/p>
&lt;p>看到满墙的空调外机感叹确实和十年前不一样了。在讨论宿舍该不该装空调的时候空调已悄然成为居民家中的普通电器而已。不知道当初设计楼房的时候有没有考虑空调以后每家每户都会有。看样子也是没有。空调这样子在外墙上安放在工作到时候会有冷凝水滴下来。现在设计的楼房都会有统一安装空调的地方。而且有装门收集冷凝水的管道。这样子就不会滴下来影响行人，而没有收集的老房子容易看到因为冷凝水外墙有各种各样的问题。&lt;/p>
&lt;p>在坐轻轨去古德寺的途中，看到还有汉口的大爷玩信鸽的。在楼顶置了一个鸽笼。。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-151518.jpg?x-oss-process=style/blog"
alt="鸽笼"
/>&lt;/p>
&lt;p>看着眼前的居民楼突然想到很多楼都另外配置了防盗网。但是现在很多的新房都看不到了。想起来小时候我家是没有防盗网的。是因为我们那出现了入户的小偷，在老人还在家的情况下入室抢劫。那段时间掀起了安装防盗网的风潮。想想还真有意思。改革开放前家家也没有余粮。即使入室偷盗东西后也没地方出手。在改革开放有了货币这一概念，但是家庭保险还没出现。居民只好自己寻求方法保护自己的财产了。防盗网这玩意全国各地都有，莫名的有意思。想想现在的居民楼也不需要防盗网这东西了把？&lt;/p>
&lt;p>出了轻轨站下来发现这里是一片荒凉。但是路牌明确写着古德寺路。腾讯地图显示得穿过一个居民区。但是到那个路口一看，发现有个楼拆了。怎么看怎么不对。这怎么是去一个景点的路呢。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-154346.jpg?x-oss-process=style/blog"
alt="拆迁"
/>&lt;/p>
&lt;p>走进去发现挂在拆迁的标语。高额奖励趁早拿，拖到裁决损失大。看了看周围发现生活环境确实差，就是不知道高额奖励有多少。走了很远很远。腾讯地图显示方向没错。但是这也太不像一个景点了吧。但是路口时不时有些小情侣出现。说明确实是这条路。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-154453.jpg?x-oss-process=style/blog"
alt="标语"
/>&lt;/p>
&lt;p>一段时间后发现一段黄色的围墙。上面画着一些奇奇怪怪的画。渐渐有些宗教的气息了。绕了一圈才发现古德寺得从另一个门进去。有点尴尬。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-155026.jpg?x-oss-process=style/blog"
alt="宗教"
/>&lt;/p>
&lt;p>花了八块钱的香火钱进去了。发现这里确实是个寺庙。但是这寺庙的建筑风格确实像是基督教的教堂。很有意思。发现来这里的很多都是不知道哪来的学生情侣。还有一些上了年纪的大妈。除了大妈见佛就拜外还有不少女生也跪拜。不知道是不是祈求幸福。不知道各位罗汉答不答应啊。&lt;/p>
&lt;p>刚刚进去会看到一尊四面佛。很有东南亚的特色。因为周围有一群🐘。因为四面佛不能再建筑内供奉，所以才摆在外面。&lt;/p>
&lt;p>在一个屋子外面发现几盆花椰菜。。。为啥会有花椰菜啊&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-160120.jpg?x-oss-process=style/blog"
alt="花椰菜"
/>&lt;/p>
&lt;p>发现佛教各位佛还挺有针对性的，有个延寿堂，供奉着一些佛像。不知道这里有没有祂的身影。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-160526.jpg?x-oss-process=style/blog"
alt="延寿堂"
/>&lt;/p>
&lt;p>在每个钟前都贴着请不要动的标语😄😄。不知道有什么样的经历&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-160349.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>走了走，发现一个标语牌，即使是宗教也是爱国的。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-161520%20%281%29.jpg?x-oss-process=style/blog"
alt="标语牌"
/>&lt;/p>
&lt;p>最后还是出来了。出来后发现古德寺周围还是有点荒凉的。周边也没有啥配套设施。和在古德寺里疯狂留影的一群人格格不入。而且古德寺里面还有一群鸽子。。天知道为啥特别多鸽子&lt;/p>
&lt;p>回去路上发现有一栋塔楼正在建。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/P90303-163128.jpg?x-oss-process=style/blog"
alt="塔楼"
/>&lt;/p></description></item><item><title>学校水卡破解</title><link>https://malu.ome/post/%E5%AD%A6%E6%A0%A1%E6%B0%B4%E5%8D%A1%E7%A0%B4%E8%A7%A3/</link><pubDate>Wed, 05 Dec 2018 23:06:18 +0000</pubDate><guid>https://malu.ome/post/%E5%AD%A6%E6%A0%A1%E6%B0%B4%E5%8D%A1%E7%A0%B4%E8%A7%A3/</guid><description>
&lt;h3 id="前言">
&lt;a href="#%e5%89%8d%e8%a8%80" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
前言
&lt;/h3>
&lt;p>今天淘宝买的pn523 终于到了，话不多说，鼓捣起来。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/pn532.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>先下载pn523的驱动，然后配套的软件也都有界面，方便很多&lt;/p>
&lt;p>放上店家赠送的白卡读取看下是否正常，一切正常&lt;/p>
&lt;h3 id="背景知识">
&lt;a href="#%e8%83%8c%e6%99%af%e7%9f%a5%e8%af%86" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
背景知识
&lt;/h3>
&lt;p>目前使用非接触式卡有ID (Identification Card) 和IC(Integrated Circuit Card)的区别。&lt;/p>
&lt;p>ID卡明文记录信息，大部分是出厂就设置好的卡号。&lt;/p>
&lt;p>ID卡目前差不多都绝迹了，因为特别容易复制。把卡号读取出来在写入新卡就行了。&lt;/p>
&lt;p>目前最广泛接受的是 Mifare 卡。下文称M1 卡。&lt;/p>
&lt;blockquote>
&lt;p>M1卡分为16个扇区，每个扇区对应4块（块0-块3）,共64块，编号为0-63.第0扇区的第0块用于存放厂商代码，已经固化无法更改。其余区的第0-2块用于存放数据，块3为控制块用于存放密码A、存取控制、密码B，结构如下：&lt;/p>
&lt;/blockquote>
&lt;pre>&lt;code> A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5
(密码A 6字节) (存储控制 4字节) (密码B 6字节)
&lt;/code>&lt;/pre>&lt;blockquote>
&lt;p>并且每个扇区块3中的密码和存储控制全部都是独立的，独立控制本扇区的各种操作，每个扇区都能实现不同的功能，所以广泛用作一卡通。存储控制里面4字节的具体含义我也不是很清楚(不影响我们破解)，所以就不说出来误导大家了。&lt;/p>
&lt;/blockquote>
&lt;p>卡中每个块包含16字节，所以M1卡的容量=16扇区&lt;em>4块&lt;/em>16字节=1024字节=1k (M1卡的由来)。&lt;/p>
&lt;h3 id="鼓捣过程">
&lt;a href="#%e9%bc%93%e6%8d%a3%e8%bf%87%e7%a8%8b" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
鼓捣过程
&lt;/h3>
&lt;p>先是拿宿舍楼的饮水卡尝试复制一下。直接读取UID卡信息，读取完后会储存为dump文件。&lt;/p>
&lt;p>用写入功能写到一张空白卡里。这里我用到一张CUID卡，这张卡甚至可以写0扇区。&lt;/p>
&lt;p>有些机器会验证0扇区的信息是不是自己厂家的卡，这时候CUID就起到作用了。&lt;/p>
&lt;p>不过这种卡理论上是不应该流出的。不过目前淘宝还能买到，且玩且珍惜把。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/cuid.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>如果要尝试修改扇区信息，得破解 M1 卡的各个扇区的KEY A和KEY B。&lt;/p>
&lt;p>这部分软件自动完成。大抵是穷举或者重放攻击，只有算出扇区的KEY A和KEY B才能修改。&lt;/p>
&lt;p>在机器上查询到卡内余额后，尝试修改余额信息。这张水卡只有第八扇区有信息。我们只需要看这部分就行
17.77
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/17.77.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>发现卡内0和2块内信息是相同的。且N2和N3就是余额信息&lt;/p>
&lt;p>因为卡内的数据都是二进制储存的，软件为了便于显示转换为16进制&lt;/p>
&lt;p>DEC 1777 == HEX 06FF.
在0 区块下 我除了 N2和N3其他都不知道是什么。&lt;/p>
&lt;blockquote>
&lt;p>0B FA &lt;strong>F1 06&lt;/strong> 03 03 00 00 0 00 02 00 00 02 00 02&lt;/p>
&lt;/blockquote>
&lt;p>在尝试只修改N2和N3块后发现并不能通过验证。应该是有效验位。&lt;/p>
&lt;p>于是我尝试读取不同余额下的第八扇区信息查看修改了什么内容。&lt;/p>
&lt;p>17.74
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/17.74.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>N0&lt;/th>
&lt;th>N1&lt;/th>
&lt;th>N2&lt;/th>
&lt;th>N3&lt;/th>
&lt;th>N4&lt;/th>
&lt;th>N5&lt;/th>
&lt;th>N6&lt;/th>
&lt;th>N7&lt;/th>
&lt;th>N8&lt;/th>
&lt;th>N9&lt;/th>
&lt;th>N10&lt;/th>
&lt;th>N11&lt;/th>
&lt;th>N12&lt;/th>
&lt;th>N13&lt;/th>
&lt;th>N14&lt;/th>
&lt;th>N15&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>修改前&lt;/td>
&lt;td>0B&lt;/td>
&lt;td>FA&lt;/td>
&lt;td>F1&lt;/td>
&lt;td>06&lt;/td>
&lt;td>03&lt;/td>
&lt;td>05&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>02&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>02&lt;/td>
&lt;td>00&lt;/td>
&lt;td>02&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>修改后&lt;/td>
&lt;td>14&lt;/td>
&lt;td>F7&lt;/td>
&lt;td>EE&lt;/td>
&lt;td>06&lt;/td>
&lt;td>03&lt;/td>
&lt;td>08&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>02&lt;/td>
&lt;td>00&lt;/td>
&lt;td>00&lt;/td>
&lt;td>02&lt;/td>
&lt;td>00&lt;/td>
&lt;td>05&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>到这里发现N4 和N10, N13 在余额变更之后它们是不变的。&lt;/p>
&lt;p>N1， N5， N15都和余额的差值有关。
M1卡在记录金额时现在厂家都添加效验位，防止我这样心怀不轨的人修改余额。&lt;/p>
&lt;p>但是大部分的验证都是XOR，和截断，或者取反。&lt;/p>
&lt;p>再多增加几个样本看看之前的推断是否一至&lt;/p>
&lt;p>17.68
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/17.68.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>找了一张别的卡。
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/card.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>经过一段时间的尝试，&lt;/p>
&lt;blockquote>
&lt;p>N5 = ~(N2 + N3 + N4)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>N1 = ~N5&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>N0 = N1 xor N2 xor N2 xor N4 xor N5&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>N15 = N5 - N4&lt;/p>
&lt;/blockquote>
&lt;p>这尝试的过程太心酸，别问，掉头发。&lt;/p>
&lt;p>在机器上测试，也验证通过&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/99.99%E5%85%83.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>好了，至此这张卡完全破解完成了。。&lt;/p>
&lt;p>顺带说一句。目前学校里都在使用这种卡，洗澡卡，洗衣卡，水卡，还有学生卡。
因为一张卡有15个扇区可写，如果这些卡的记录数据的扇区不同是可以用一张白卡把信息写上去
然后就可以多卡合一了。&lt;/p></description></item><item><title>故宫</title><link>https://malu.ome/post/%E6%95%85%E5%AE%AB/</link><pubDate>Sun, 04 Nov 2018 22:56:34 +0000</pubDate><guid>https://malu.ome/post/%E6%95%85%E5%AE%AB/</guid><description>
&lt;p>周二的时候刷到了故宫的一则微博, 然后就去官网上买了票。 这下好了..周末没借口瘫在家了。&lt;/p>
&lt;p>周六一大早的就起来了，九点钟出了门。 打算从东华门那走到午门， 不用经过天安门哪的人潮人海。&lt;/p>
&lt;p>话说上次国庆走到了天安门哪发现进去还要身份证。。。自己没带没法进去。&lt;/p>
&lt;p>果不其然， 天安门东出地铁站后发现哗啦啦的人朝着天安门的方向走去，还有个广东的大叔问我故宫咋走。给他指了天安门的方向后自己往东华门去了。。&lt;/p>
&lt;p>到东华门后发现东华门好像是故宫里工作人员进出的门，不知道能不能看到他们骑着电动车出来。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://malu-picture.oss-cn-beijing.aliyuncs.com/hexo/%E4%B8%9C%E5%8D%8E%E9%97%A8%E8%A7%92%E6%A5%BC.jpg?x-oss-process=style/webp"
alt="东华门"
/>&lt;/p>
&lt;p>从东华门走了十几分钟后就到了午门，排的队不是很长几分钟就进去了。&lt;/p>
&lt;p>不得不说，一进门故宫还是我十年前第一次来的样子，地上坑坑洼洼的。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://malu-picture.oss-cn-beijing.aliyuncs.com/hexo/%E6%95%85%E5%AE%AB%E5%9C%B0%E7%A0%96.jpg?x-oss-process=style/webp"
alt="故宫地砖"
/>&lt;/p>
&lt;p>随着人流走马观花看了三大殿，难以想象明朝的皇帝住在周围那么空旷的地方。不过乾清宫再明朝的时候也被皇帝分隔数间而居。这么说来，故宫所谓的9999.5间房中房的定义是隔开一栋建筑里分隔出来的啊。不过9999.5间房也是民间的编出来的饭后谈资把？&lt;/p>
&lt;p>目前查到的资料是故宫博物院院长单霁翔给出的9371间&lt;/p>
&lt;blockquote>
&lt;p>从小长在北京四合院的单霁翔在这样的行走中，摸清了世界上最大四合院的现状，从而破解了那个与紫禁城有关的传说：经过他详细统计，目前故宫博物院所管理的古代建筑数量共计9371间。其中紫禁城内8728间，紫禁城外端门、大高玄殿、御史衙门等处643间。&lt;/p>
&lt;/blockquote>
&lt;p>不过这里面间的概念和我我们一般理解的不同吧。&lt;/p>
&lt;p>到了坤宁门，便到旁边的六宫逛逛，十年前来的时候只是一路走下来。今天有时间便走走之前没走过的地方。&lt;/p>
&lt;p>走了许多宫，发现建筑格式大多数都相差不大。但是故宫会借用建筑办一些展览会。看了金器展，青铜器展，和佛像展。发现， 还是小姐姐好看。&lt;/p>
&lt;p>在六院里，与三大殿那不同的是这里多了些许树。红墙黄叶确实和故宫的色调相配，只是这黄叶未免不又些许凄凉感，不知几百年前住在这里的嫔妃生活是什么样子的。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://malu-picture.oss-cn-beijing.aliyuncs.com/hexo/%E9%93%B6%E6%9D%8F.jpg?x-oss-process=style/webp"
alt="银杏"
/>&lt;/p>
&lt;p>走到延禧宫的时候听到有个妹子说这里就是延禧宫呢~发现这里确实游客多了好多，而且还都是妹子。&lt;/p>
&lt;p>不知怎么地，在从御花园出来后发现故宫竟然就这么一路走过来了。相比恭王府故宫确实有趣很多。&lt;/p>
&lt;p>从神武门出来后上到景山。从景山最高处俯瞰紫禁城。这景山还是挖护城河的土堆起来的。以前没有工程机械全是靠人力挖掘的。。堆起这90米的土堆还真是恐怖。&lt;/p>
&lt;p>到了景山顺便看了看十年前没看的歪脖子树。逛到一座关公庙进去看了看&lt;/p>
&lt;p>发现庙里还放了BB戰士三國傳。。。有点魔幻&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://malu-picture.oss-cn-beijing.aliyuncs.com/hexo/%E5%85%B3%E5%85%AC%E5%BA%99.jpg?x-oss-process=style/webp"
alt="关公庙"
/>&lt;/p>
&lt;p>从二环内回来后累死了。&lt;/p>
&lt;p>百无聊赖便搜索延禧攻略看了看，看看之前微博上好评的剧集是怎么样的。&lt;/p>
&lt;p>剧集色调服装商确实和以往的后宫剧不同。看出来确实用心了。色调也不是芒果台瞎眼的大红大紫。&lt;/p>
&lt;p>讲的还是乾隆帝的故事。。不知道前些时候热议的乾隆帝和这部剧有没有关系。说起来这位皇帝若知道后人谈论他的时候不是谈论他的种种政绩而是他的后宫不只是何感想。不过他的情史确实可谈嘛。。。&lt;/p>
&lt;p>距离不知道还有意无意的展示了乾隆皇帝众多的印章，&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://malu-picture.oss-cn-beijing.aliyuncs.com/hexo/%E5%8D%B0%E7%AB%A0.jpg?x-oss-process=style/webp"
alt="印章"
/>&lt;/p>
&lt;p>还有他那大红大紫的器物审美，不知道和谁学的。他爸那清新淡雅的风格一点没保留。。&lt;/p>
&lt;p>倒是为瓷器的釉彩发展做出了不少贡献。&lt;/p>
&lt;p>看了些许剧集。。发现于正真的是写的还是以前写的那些。知道观众喜欢什么，就按照什么来写。&lt;/p>
&lt;p>但是里面逻辑有些问题。&lt;/p>
&lt;p>比如说傅恒知道尔晴落井下石害死一个下人的时候，傅恒要休了尔晴那一幕。&lt;/p>
&lt;p>尔晴不断申辩道那不过是一个下人， 傅恒对他三弟说你是没看到她那时候自得的样子。&lt;/p>
&lt;p>这里就发现他们争辩的都不是一个东西了，那确实是一个下人，但是人家害怕的是你做恶时无所畏惧的样子啊。&lt;/p>
&lt;p>你们闹了半天没发现你们谈论的驴头不对马嘴么。不过这是电视剧。可能我也不是目标人群吧。&lt;/p></description></item><item><title>动漫人物数据集</title><link>https://malu.ome/post/%E5%8A%A8%E6%BC%AB%E4%BA%BA%E7%89%A9%E6%95%B0%E6%8D%AE%E9%9B%86/</link><pubDate>Sat, 06 Oct 2018 23:02:43 +0000</pubDate><guid>https://malu.ome/post/%E5%8A%A8%E6%BC%AB%E4%BA%BA%E7%89%A9%E6%95%B0%E6%8D%AE%E9%9B%86/</guid><description>
&lt;p>之前因为自己希望做一个识别动漫人物的应用…方便自己刷 twitter .做了个 &lt;a href="https://abyss.malu.moe/">abyss&lt;/a>.&lt;/p>
&lt;p>但是网页版的还是不怎么方便…顺便做了个 chrome 的&lt;a href="https://chrome.google.com/webstore/detail/nljmailkjafdbjdhbkieamopknjcocpg/publish-accepted?authuser=0&amp;amp;hl=zh-CN">应用&lt;/a>..&lt;/p>
&lt;p>现在状况是在贴吧宣传了下,感觉需求还是太小众.没有什么人愿意一起实现..至少分享数据的都没有.&lt;/p>
&lt;p>自己一个人标注数据标了一万多张.喜欢的角色应该大部分都标注了,剩下的 pixiv 热度也不高.&lt;/p>
&lt;p>目前打算公开这部分数据集.如果感兴趣的可以下载看看…当成 pixiv 图包也没问题&lt;/p>
&lt;p>图片都是角色单人出现的场景,有些许图片可能背景会复杂点&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E6%88%AA%E5%9B%BE1.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E6%88%AA%E5%9B%BE2.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>奶牛快传:&lt;/p>
&lt;pre>&lt;code>https://c-t.work/s/42e78449f51c4c
&lt;/code>&lt;/pre>&lt;p>MEGA:&lt;/p>
&lt;pre>&lt;code>https://mega.nz/#!H34XDYZR!r1t2X_EyfD_F9jG4MBs6ZCzI0ncjdOHcSQSWxAuvsog
https://mega.nz/#!G7oFVaBZ!iYvACVl0OZjE-43RnUw9d3Nv33cLBaSdD_CfViFI1vA
https://mega.nz/#!nq4RVA5R!h-8MzocOQB5PR7RsOFQDnSnDYZN4rSJwd3_qpUSavK8
https://mega.nz/#!mrgnEQpJ!Ie5M0IEz7mboQu--ysSVpqAe9PQKJa0gxn-1yrvj5gQ
https://mega.nz/#!Xz5z1CbB!x1KnmL7Iu4bgEomyEVSuy1C7bmh7tezVv_9qsTGEpKE
https://mega.nz/#!7zpTXCrb!wAHBUdPYdu0-YOFdd0ndPgBOsMoI2U9PY37ShZWT4YA
https://mega.nz/#!iixxUSxI!ex6fK7F0TcOO3fwpJXgk2ojpOfqNQM7Ky0Dj63_3lTo
https://mega.nz/#!jiw3mIKB!kXmKeKM_JYHP_Vlk8H9VfL4WiskpoV4NORupQNfjAUY
https://mega.nz/#!SrpBQYRC!I1QJMN5NFfywRB3CsNJlb9-7Gf9N5G7S22cv7njzHoA
https://mega.nz/#!DmpjRYxb!MZtwnI7bPd_BWtaZdp1WEuWgeODusvf8VNRfUyGTboE
&lt;/code>&lt;/pre>&lt;p>目录:&lt;/p>
&lt;pre>&lt;code>image
├── 002
├── AbigailWilliams
├── AkiyamaMio
├── AobaSuzukaze
├── AragakiAyase
├── AyanamiRei
├── Bondorudo
├── ChitandaEru
├── Dva
├── EMT
├── EbisuzawaKurumi
├── FlandreScarlet
├── GokouRuri
├── HachikujiMayoi
├── HakureiReimu
├── IkaMusume
├── IllyasvielvonEinzbern
├── IzumiKonata
├── IzumiSagiri
├── KafuuChino
├── KaguyaLuna
├── KanameMadoka
├── KasuganoSora
├── KatoMegumi
├── KinomotoSakura
├── KirisameMarisa
├── KizunaAI
├── KomichiAya
├── Kousakakirino
├── KuriyamaMirai
├── Megumin
├── MikasaAckerman
├── MisakaMikoto
├── NaganoharaMio
├── NagatoYuki
├── NakanoAzusa
├── Nanachi
├── Reg
├── Rem
├── Riko
├── RyougiShiki
├── SakuraSaber
├── SawamuraSpencerEriri
├── SenjougaharaHitagi
├── ShiinaMashiro
├── Shimakaze
├── SoryuAsukaLangley
├── SuzumiyaHaruhi
├── TamuraManami
├── TedezaRize
├── TosakaRin
├── aisakataiga
├── amatsukaze
├── houshou
├── kuppahime
└── miku
56 directories
&lt;/code>&lt;/pre></description></item><item><title>一出好戏</title><link>https://malu.ome/post/%E4%B8%80%E5%87%BA%E5%A5%BD%E6%88%8F/</link><pubDate>Sun, 26 Aug 2018 00:07:30 +0000</pubDate><guid>https://malu.ome/post/%E4%B8%80%E5%87%BA%E5%A5%BD%E6%88%8F/</guid><description>
&lt;p>今天去看了黄渤的《一出好戏》,起因还是纸巾说黄渤当上导演后就变成索吻狂魔, 剧中舒淇,张艺兴都被索吻了,只因张艺兴拍片经验不足而在银幕献出了初吻.[捂脸]&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E9%BB%84%E6%B8%A4.gif?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>感觉片中黄渤想说的很多,但是限于电影的篇幅没办法展开来,其实任何一个话题展开来都可以拍成一部电影.但是黄渤紧赶慢赶朝着他想表达的结局去了.&lt;/p>
&lt;p>剧情发生在一个荒岛上.一群人因为灾难困在了一个无人岛,接下来就是生存的问题,相信不少人都这么幻想过这么一个场景,所以每个人心中也都有一个答案,电影中的情节也更容易被人评判合不合 「常理」.我也不例外.&lt;/p>
&lt;p>面对一个荒岛求生问题,剧中人在一开始还保留着社会中人与人的地位关系,导游(王宝强)照顾着一大群人,而公司底层的保安被x总使唤着.直到有一天底层的人发现原来的社会回不去了,自然不满因为之前社会而形成的阶层关系,在剧里则是王宝强不满其他人不工作吃着他获取的食物和有的没的抱怨. 而保安也不满现在仍被使唤着.冲突便爆发了 .&lt;/p>
&lt;p>在避雨的洞穴里众人秉着有奶便是娘的朴素观念推举王宝强为众人的头, 带领着这群人活下去.在x总还碎嘴管理经验时王宝强道出他也有好几年的经验. 两年猴子三年熊. 退伍后在动物园里担任饲养员&amp;hellip;于是王宝强在众人的强烈意愿下走上了管理的职位. 到这里自己也感觉合情合理,在极端的环境下自然是掌握更多资源的人统领着.现在有价值的自然是武力和资源, 这时候王宝强两项都有,他是退伍兵和懂得野外生存技巧.(虽然我觉得大活人怎么可能饿死&amp;hellip;)&lt;/p>
&lt;p>之后王宝强用管理后的方法管理着人,每天规定带回来食物,空手而归就饿肚子(话说既然这样为什么还要找一个人领导呢,自己一个人也饿不着啊),但是黄渤因为中了彩票6000w有强烈回归社会的欲望&amp;hellip;&lt;/p>
&lt;p>再一次冲突爆发是因为黄渤因为一次没带鱼回来然后王宝强杀鸡儆猴..(感觉这时候的冲突剧里演绎得很严重,但是每个人似乎却没什么反应&amp;hellip;在我的设想里权利的争夺出几条人命是非常正常的事情.但是在这里似乎每个人都是社会主义好公民,)..黄渤在这段里想舒淇索吻..果断被拒绝了.在出海被浪冲回来后冲突达到高点.和张总谋划着什么.&lt;/p>
&lt;p>在晚上分食中,有人抱怨为啥什么都不做却可以分到食物,这时候已经分化出两个阶级了.王宝强和他身边的狗腿子.剩下的便是需要每天带着食物回来的劳动人民..冲突爆发,张总即主角不满当下没尊严的上下级关系.带着一群人去建立带有人类尊严的新世界.&lt;/p>
&lt;p>张总那么有底气是因为他发现了一艘颠倒的巨轮.这里有个BUG,剧中人物通过颠倒的楼梯走到船上的一层&amp;hellip;或许是他们新弄了一个梯子吧..别在意,别在意&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E8%84%91%E8%A2%8B%E6%9C%89%E9%97%AE%E9%A2%98.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>巨轮上什么都有,杯碟,葡萄酒,以及渔网(一个邮轮干嘛有渔网啊!!!,别在意别在意),这时候岛上有了两个团体,一个王宝强带领着的第一代和张总坐拥游轮宝库的第二代.剧中展现了有渔网后生产力大幅提升的画面.&lt;/p>
&lt;p>在第一代和第二代接触后,张总表达了欢迎对面的人过来的意思,但是基于不知道什么的原因竟然有人依旧跟着王宝强(为啥?告诉我为啥?),张总作为拥有游轮宝库的人,表达了任何人都可以用手中的食物交换游轮上物件.并使用纸牌作为交易媒介,于是货币产生了.&lt;/p>
&lt;p>到这里感觉黄渤想表达很多东西,可是如果这方面如果更详细的表现我相信会更有意思.现代货币的抵押物,以及什么能代表他的价值,但是这里感觉黄渤一笔带过,就是为了之后张总的超发货币埋下伏笔,剧集中人发现扑克牌的货币和说好的数量不一样,,,拜托,超发最先体现的就是价值变化好吗,你们作为使用者这么后知后觉么.感觉如果黄渤想表达张总如何通过货币的发行权剥削所有人,那么通过设置一个使用货币的场景使用者发现货币的价值下降了来表达更好.而不是后来用为什么有四张红桃2表现出来.而且随着生产力的发展发行货币并没有什么错误啊,如果随着物质的增加而货币没有增加,那么单位货币代表的货物价值便增加了.这么就相当于拥有大量货币的人剥削着增长的生产率.这个话题拍一部电影都没问题.&lt;/p>
&lt;p>之后主演黄渤在不知道为什么在明显没有任何办法回去的情况下还强行离开第二代团队.而且离开团队后也没有任何离开小岛的行动,这一段非常无厘头,感觉明显为了冲突而冲突.期间不知道为什么展现了很奇怪的逻辑,比如对关心自己的女神发了一段脾气.&lt;/p>
&lt;p>对了,这里觉得黄渤主演的这个小人物追求女孩的行为非常危险,因为在之前和舒淇对话中舒淇表示并不知道对方喜欢自己,并说为什么不勇敢表达出来,在黄渤鼓起勇气表白后舒淇十动然拒.黄渤出演的小人物突然变得愤怒,似乎觉得对方愧对自己的真心和种种奉献.但是感觉这类人物会把自己对别人的奉献想得无比厚重,同时对方必须回敬.所以后面被拒绝后会愤怒,觉得对方亏待了自己.感觉显示中很多分手后报复的行为都和这种心理有关.往往追求得越痴情,报复也更加惨重.&lt;/p>
&lt;p>在之后兑奖期后黄渤彻底放弃了回去的念头,但是老天爷开了个玩笑,以天降许多鱼的方式给了他6000w,于是黄渤决定在这小岛上好好经营自己.他使用咸鱼兑换岛上不可再生的一切物品,感觉黄渤想涉及很多社会的自治和经济的一些东西,但是这些在剧集里仅仅一笔带过.最后也没见兑换东西的作用.到底还是黄渤想表达得太多太多.最后却什么也没展现&lt;/p>
&lt;p>在黄渤以信仰的方式取得地位后每个人都穿用床单制作的新衣服,感觉这似乎是想表达新的社会结构?,感觉像是日本60年代那段最左翼的时期,邪教和社会运动共同作用的结果,人们聚集在会社形式的村子里共同生活,组织生产.各种形式的社会实验.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E5%AE%97%E6%95%99.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>接下来我感觉是剧情最密集的时刻,能看出许多有趣的话题但却翻篇太快,感觉像是15页的哲学史.在这后面里看到了黄渤想表达信仰聚集起来的组织结构, 爱情与人性的抉择,拥有权力后与自己当初承诺的背离,特别是在最后发现现代社会并没有崩坏,相反每隔12天还有一艘游轮经过后.&lt;/p>
&lt;p>这里之前表现的仅仅是在荒岛上拥有地位发现可以回去现代社会,但是回去后自己还是那个小角色,每个人的地位又回去了. 似乎有不少电影都有的剧情,这里也没表现有什么方法可以让游轮发现荒岛上还有一群人的方法,仅仅告不告诉,后面的烧船又似乎是想表现另外一个事情,如果把剧情改成不是黄渤不想告诉,而是回去的方法是烧掉当前的游轮群众不愿意会不会更好?太多太多,感觉自己都混乱了.&lt;/p>
&lt;p>后面又不断表达这是梦境,这是梦境,又是一种表现手法?是黄渤想拍得太多还是仅仅我们观众多想了而已?&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E8%9C%A5%E8%9C%B4.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p></description></item><item><title>压制组在做什么</title><link>https://malu.ome/post/%E5%8E%8B%E5%88%B6%E7%BB%84%E5%9C%A8%E5%81%9A%E4%BB%80%E4%B9%88/</link><pubDate>Wed, 25 Jul 2018 21:33:51 +0000</pubDate><guid>https://malu.ome/post/%E5%8E%8B%E5%88%B6%E7%BB%84%E5%9C%A8%E5%81%9A%E4%BB%80%E4%B9%88/</guid><description>
&lt;p>&lt;strong>当压制组在压制视频时,他们做了什么&lt;/strong>&lt;/p>
&lt;p>当我们打算压缩一个文件的时候,通常可考虑的有无损压缩和有损压缩两种方法.无损压缩类似于我们通常的打包一个压缩包,我们压缩一个文件解压后和我们原来的文件时一模一样的.这是无损压缩.与此同时,还有有损压缩.即压缩后的文件解压后与源文件对比是不同的,这之间损失了一部分的信息.&lt;/p>
&lt;p>&lt;strong>为什么我们需要有损压缩?&lt;/strong>&lt;/p>
&lt;p>因为类似图片和音频之类的数据对我们而言损失一部分信息是可接受的,人类可能察觉不到这之间丢失的信息,舍去这部分对人类观感影响不大的信息对压缩率提高却是巨大的.节省下来的储存容量是可观的.&lt;/p>
&lt;p>&lt;strong>所以现在的视频编码器在怎么做?&lt;/strong>&lt;/p>
&lt;p>视频就是一连串的图片顺序播放,所以我们可以使用图片中有损压缩的方法DCT(离散余弦变换)之后进行量化编码.这便是帧内编码.类似于把图片分割成一块一块的小格子,之后进行量化,这部分允许你选择保存信息的大小容量,若你选择的大小不够,那么就会丢失一些信息.我们在这里进行DCT是因为一张图片中的信息若把它分割成小块,那么有些信息是可复用的.所以一张纯色的图片经过压缩后会比复杂的图片小&lt;/p>
&lt;p>既然视频是一连串的图片,图片与图片之间相似的话能不能够复用一部分信息呢?答案是可以的.并且现在的编码器已经实现了.这是帧间编码.现在的视频编码器会把一连串的图片分成I,P以及B帧,其中I帧为独立帧,P是会向前参考,只记录于之不同的信息,而B帧会前后都参考并记录不同的信息.这样达到压缩的目的.&lt;/p>
&lt;p>&lt;strong>为什么压制组要压缩视频,原来的视频不就经过编码吗&lt;/strong>?&lt;/p>
&lt;p>因为目前以BD为载体的高清视频原编码使用的标准可能还会有H.262,即使上了H.264也会兼容一部分上古机器编码参数不会开得太高.经过压制后的视频文件大小更容易通过网络传播.&lt;/p>
&lt;p>&lt;strong>所以目前压制组做了什么你还是没说啊?&lt;/strong>&lt;/p>
&lt;p>压制组的目标很明确,尽可能保证高观感的前提下压缩视频.所有做的所有事情都尽可能的以这前提为目标.&lt;/p>
&lt;p>压制组会选择合适的视频编码参数进行视频编码,尽可能在小体积的前提下获得高质量的观感,同时由于日本特别奇怪的制作流程和不负责任的视频处理,一些DVD或者蓝光的影碟抓取的源会有视频转制过程中的错误处理.造成不必要的视频质量损失.所以压制组会在可推断处理错误的情况下使用滤镜正确还原原有的影片信息.&lt;/p>
&lt;p>&lt;strong>压制组是怎么推断出这是制作方的错误处理过程呢?你怎么知道这不是艺术效果.&lt;/strong>&lt;/p>
&lt;p>有些视频是瑕疵是在编码过程中产生的,这类很容易判断.类似因为量化精度不足产生的banding,&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/image-3.png?x-oss-process=style/blog"
alt="banding"
/>&lt;/p>
&lt;p>抑或是采用固定码率这类不能够适应影片的码率变化产生的马赛克,当然,某些影片的马赛克是人工添加的,那就真的是艺术效果,压制也没办法给你“去马”.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/image-2.png?x-oss-process=style/blog"
alt="block"
/>&lt;/p>
&lt;p>(现代编码器会在亮度低的区域偏向于降低码率,因为人眼对暗部并不敏感,所以也容易在暗部出现马赛克)&lt;/p>
&lt;p>这都是在编码过程中引入的瑕疵,在使用新的编码标准或者提高编码参数且使用适当的滤镜能够有效提高观感.&lt;/p>
&lt;p>有些瑕疵的引入纯粹就是制作方不负责任,在制作过程中引入的.比如在隔行扫描的视频上直接当成逐行扫描的视频处理,造成两张不同时域的帧出现在同一时间里.这种怪异的东西根本就不是啥艺术效果.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/image-1.png?x-oss-process=style/blog"
alt="交错"
/>&lt;/p>
&lt;p>还有在隔行扫描的视频上当成逐行扫描来处理,造成的缟缟(一种在隔行扫描的视频里使用拉伸算法产生的画面效果)&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/image.png?x-oss-process=style/blog"
alt="缟缟"
/>&lt;/p>
&lt;p>所以压制组会使用各种方法去除这种因为处理错误造成的视频瑕疵.当然制作过程的错误大部分是历史原因(大雾——),现在的BD原盘也少了些DVD时代的IVTC错误.不像上古时代某些EP大神的rip可遇不可求.各种视频网站的兴起也使得压制组这一名词快要被人遗忘.同时也希望各个制作方别再用心做剧情,用脚出碟片.让人能够放心的收藏塑料盘.&lt;/p>
&lt;p>参考:https://vcb-s.com/archives/4738&lt;/p></description></item><item><title>为什么我不喜欢国内网游</title><link>https://malu.ome/post/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%B8%8D%E5%96%9C%E6%AC%A2%E5%9B%BD%E5%86%85%E7%BD%91%E6%B8%B8/</link><pubDate>Tue, 29 May 2018 23:09:15 +0000</pubDate><guid>https://malu.ome/post/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%B8%8D%E5%96%9C%E6%AC%A2%E5%9B%BD%E5%86%85%E7%BD%91%E6%B8%B8/</guid><description>
&lt;p>我为什么不喜欢中国的网游&lt;/p>
&lt;p>在我玩过的所有网络游戏里我个人认为最耐玩的就是EVE了，我尤其喜欢EVE里面的经济系统，它的经济系统和我玩过的所有网游都不同。那就是它的经济系统完全是没有任何管制的。&lt;/p>
&lt;p>对，不受管制的经济系统，没有各种元宝，绑定元宝，金币，绑定金币的设定。游戏里通用的货币叫做ISK（这也是游戏开发地冰岛的货币名称）。相比中国的网游，游戏是月卡制。这也就没有中国网游的RMB对游戏货币的官方转换。&lt;/p>
&lt;p>在这之前不如看看中国网游经济系统和EVE的对比&lt;/p>
&lt;p>在我玩过网游说起来最早的一款是巨人网络的&lt;a href="https://my.99.com/index/">魔域&lt;/a>,游戏中的货币有两种，金币和魔石。金币的获得来源是在游戏中击杀怪物会掉落一定数量的金币（游戏中很常见的设定，击杀怪物给予玩家一定的奖励，但是值得吐槽的是你一个魔兽干嘛随身带着人类货币啦！）。这是游戏世界里大部分NPC售卖游戏消耗品接受的货币。还有一个价值较高的货币叫魔石，魔石通过在游戏中充值获得。魔石在游戏中通过NPC购买高价值的物品，这些高价值物品的价值就是能够即时的提高玩家的战斗力。通过魔石游戏玩家还可以购买一些金币玩家没有的便捷功能。比如远程购买，原地复活。&lt;/p>
&lt;p>在这个游戏里是直接由一个货币是直接和现实中的货币相对应的。那么直接这个货币就是不可控的。你手里魔石货币的价值完全取决于土豪愿意对这个游戏氪金多少而不以游戏中物资的生产率决定。（当然，这个游戏NPC手里的物资都是无限的。。。什么经济学原理在这里都崩溃了），同时，金币和魔石之间的转换也有一个官方兜底价（官方的魔石商店里有金币出售），这也保证了金币上一定程度的也无限制供应了。&lt;/p>
&lt;p>在这个游戏的经济世界里。你手里物资的价值完全取决与土豪往这个游戏氪金多少，如果土豪今天心情好，氪了一单。游戏里的货币就会嘭的一声多了出来。你手里的货币就能购买到的物资也会相应减少（当然，市场反映需要时间）。如果土豪把手里的货币通过官方换成物资，嘭的一声游戏里的物资就凭空产生出来，你手里物资对应的货币减少。所以不管怎么土豪通过氪金并把得到的东西流通进市场，你的物资或者货币总有一方会受到损害。可喜的是通常都会同时发生。&lt;/p>
&lt;p>我第二款网游是DNF，游戏相比第一款游戏收敛了许多，游戏里与现实货币关联的货币叫做点券。点券在游戏商城里只能购买礼服，礼服能增强人物的各种属性。能通过游戏获得的货币并不与礼券相关联，同时礼券在游戏的商城里也不能购买游戏里的装备和物资(好像还是能买一些辅助性的药剂？)。这就保证了游戏里货币的独立性。游戏货币完全在游戏里通过玩家的参与产生。所以游戏里物资的价格也真实反映了它在游戏中的生产率。这时候游戏对于所有手动参与的玩家是相对公平的。至今DNF的经济系统还能保持在相对稳定的币值，让搬砖玩家每天日复一日的下地下城。当然，对于金币的消耗我们的凯丽小姐也功不可没。也只有她日复一日的吞噬玩家金币才让地下城的金融系统没被数字后面无数的0覆盖。&lt;/p>
&lt;p>通常国内RPG网游都会是这种模式，通过氪金能让你的角色原地变强。虽然有的游戏会克制一点只会在商城里出售游戏的稀缺物资而不直接出售金币，但是物资也会间接的剥削那些没有氪金辛苦搬砖的游戏玩家啊。同时以上所有的游戏交易都是通过在官方的市场面对面即时交易（DNF新版本上线了交易行，好像DNF可也以用礼券交换金币了）。&lt;/p>
&lt;p>在EVE里，游戏的货币是ISK，同时游戏也有点券，游戏点券可以购买游戏时长（游戏是包月制度的）。同时，同时！游戏里的任何物品都是可以卖的！。游戏的点卡在游戏商城里叫做飞行员执照，使用可以增加30天的游戏时间，甚至这玩意都可以挂在游戏的空间站市场里出售。诶，你刚才不是说用现实货币购买的物资会冲击游戏市场吗。没错，但是飞行员执照不是游戏物资啊，他能增加游戏人物的可游戏时间但是不能给你带来任何的增强。&lt;/p>
&lt;p>EVE和其他游戏不同的一点在他的市场完全是挂单式的。游戏里每个空间站都有一个市场，你可以吧游戏里任何物品挂到市场出售，也可以挂一个买单！所以在市场里信息是公开的，你可以在市场里看到一个物品过去的成交价格，涨幅。你甚至可以在一个玩家自发搭建的网站上查询EVE里各个物品的实时价格&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/EVE%E5%9B%BD%E6%9C%8D%E5%B8%82%E5%9C%BA.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>同时EVE里物流是有成本的，你在哪个空间站购买的物品购买后物品也只会静静的躺在那个空间站里。所以这就导致了不同物品在不同的空间站价格是不同的。且游戏里NPC不会出售任何游戏的物资（除了一些技能学习书之外）。游戏里一切战斗生产用的物资都有玩家自己挖掘制造。游戏彻底贯彻了任何物品不一定有价值但是可以有价格的理念。所以一些对游戏性没有任何帮助的收藏品在游戏的市场里也会有价格。&lt;/p>
&lt;p>我觉得EVE完善的市场机制里更重要的一点游戏里所有用到的舰船制造都是玩家制造的，制造得使用一些基础的矿石也是玩家挖掘的。生产这一环节关联了所有物资，它使得所有物品的价格和基础的矿石息息相关。&lt;/p>
&lt;p>在声讨中国网游没有一点玩家的心态做一款用心的网游而不是坑钱的网游之前不如来讨论一下为什么中国网游的经济系统那么糟糕。&lt;/p>
&lt;p>我们在现实生活中每天都用到货币，但是货币背后代表着这什么随着金融制度发展也几经变革。从一般等价物到金本位，如今金本位废除用国家税收做担保发行货币。在原始社会人们使用一般等价物进行商品的交换，这里这个一般等价物就承担着货币的功能，在这条世界线的历史里大部分人类选择用贵金属金，银作为一般等价物用来交易。我想是因为在这个世界的进程里金银这种金属在那个科技水平下开采的速率与社会生产率相当。当然中国因为是贫银国，所以古代民间交易更多的是使用铜币。这是不是古装剧描述的不太一致。在当今，金银的生产率早就比不上工业化后人类生产物资的速率的，所以抛弃金本位也是理所当然。如今使用国家税收做担保，规定税收必须使用法定货币。在唯有死亡和税收不可避免的今天看似理所当然。&lt;/p>
&lt;p>所以在游戏里要怎么推行官方指定的货币呢？大部分游戏里是没有税收的。游戏使用的是把货币与一些NPC关联起来，如果你想要购买一些消耗品就必须使用游戏指定的货币。而这些消耗品或者NPC提供的服务是游戏不可避免的一环，这样相当于对每个玩家变现收了一把人头税。而EVE则是在一些空间站的服务中收取ISK。&lt;/p>
&lt;p>在成为货币之后就是其货币的价值问题了。货币的价值是由GDP和货币流通量共同决定的。游戏里的GDP最好统计不过了。游戏的GDP则是各种物资的产出。实时，准确，无误差。&lt;/p>
&lt;p>货币流通量由发行量和回收量决定。发行在游戏里大多通过刷怪获得，而通过NPC的各种服务回收。在提供RMB兑换游戏流通货币的游戏里货币量完全是不可决定的。在游戏的初始物资不丰富的阶段无限制的货币对游戏的经济系统打击是巨大的。&lt;/p>
&lt;p>在EVE里可以通过调控物资和ISK的产出来调整游戏里的经济系统，EVE雇了经济学家每个月都会出EVE的&lt;a href="https://www.eveonline.com/article/p8f6o4/monthly-economic-report-april-2018">月度经济报告 &lt;/a>，上面有每个星域的产出，ISK的发放，总量。在年度是会出一份经济学家的报告告诉玩家EVE做了什么。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/EVE%E7%BB%8F%E6%B5%8E%E5%9B%BE%E8%A1%A8.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>或许希望国内的网游能有这一份意识，提供一个更真实，更有趣的游戏环境。&lt;/p></description></item><item><title>援力满满交易所的自动许愿</title><link>https://malu.ome/post/%E6%8F%B4%E5%8A%9B%E6%BB%A1%E6%BB%A1%E4%BA%A4%E6%98%93%E6%89%80%E7%9A%84%E8%87%AA%E5%8A%A8%E8%AE%B8%E6%84%BF/</link><pubDate>Tue, 29 May 2018 00:08:03 +0000</pubDate><guid>https://malu.ome/post/%E6%8F%B4%E5%8A%9B%E6%BB%A1%E6%BB%A1%E4%BA%A4%E6%98%93%E6%89%80%E7%9A%84%E8%87%AA%E5%8A%A8%E8%AE%B8%E6%84%BF/</guid><description>
&lt;p>前几天在逛&lt;a href="https://www.v2ex.com">V2EX&lt;/a>的时候发现一个&lt;a href="https://www.v2ex.com/t/457999">帖子&lt;/a>,是一个二次元虚拟人物交易所的引流贴，因为自己简历上也是类似的项目所以超激动的点进去了。发现是一个差不多10年的程序员新开了一个项目也是做ACGN交易所，在寻找一起玩的玩家。点进去后发现这个项目早在8年前就有人构思过并实现了，并且站长凭借当初的交易所项目拿到了进入IT行业的敲门砖。（怎么感觉很眼熟的样子。。。）&lt;/p>
&lt;p>帖子里还提到了更早以前就由类似的玩法不过是好莱坞明星的&lt;a href="https://www.hsx.com/">虚拟交易市场&lt;/a>。这个新的项目使用 VUE+ELE+RAILS+SIDKIQ 写的（话说我觉得RAILS的官方网站响应超级快。。）。也提到了台湾也有个ACGN交易所。顺带吐槽了那个类似90年代的界面。感觉台湾人确实在一些网页界面上莫名的遵循古制。对，说的就是PTT。&lt;/p>
&lt;p>援力满满这个网站的玩法和ACGN不太一样，现在还是测试阶段，站长给了每个人每个股1000的原始股做测试。看了看网站界面，比ACGN-STOCK好多了，但是股票不多，也没看到可以提交股票申请上市的选项。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/index.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>这个网站代币的获得方式目前只有 “许愿” ，许愿会随机的给予一定的代币或者股票。通过这样放出代币活跃市场。但是许愿并不是没有代价的。如果没有代价就会有人无限制的点许愿了不是。许愿需要本地计算机提供工作量证明（LOVE_POW），方式大概是和现在的区块链一样。目前网站要求的工作量证明使用的算法是SHA512。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/stock.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>这时候坏想法就出来了，网页上的许愿次数只有一次和十次的选项。作为一名合格的计算机学生这种重复性的工作肯定不能接受啊。于是想着怎么用脚本来刷&amp;quot;许愿&amp;quot;&lt;/p>
&lt;p>首先通过CHROME元素查看许愿给服务器发送了些什么数据，通过Network栏看到点击许愿后的这段时间里有5个请求。其中一个名为wishs的POST请求发送的数据是许愿的请求。其他的都是一些股票数据的更新。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/Network.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>其中数据部分发送了&lt;/p>
&lt;pre>&lt;code>cheer_word:&amp;quot;TEST&amp;quot;
code: &amp;quot;ERIRI&amp;quot;
love_power:63895713284
&lt;/code>&lt;/pre>&lt;p>其中cheer_word应该是是许愿时候那段可以自定义的文字，默认是“我永远喜欢泽村·斯宾塞·英梨梨”。code应该是动漫任务的代码，关联你对那个人物许愿。其中love_power应该就是我们关键的工作量证明。这个love_power是本地JavaScript计算出来的。通过这几个关键的字段发送到服务器验证是否通过然后给账户添加代币或者是股票。这时候得弄清楚其中的ove_power是怎么被计算出来的。&lt;/p>
&lt;p>好消息是JavaScript这种脚本语言是保留在计算机本地直接可以查看的。坏消息是为了便与传输JavaScript一般会在发布的时候加混淆。&lt;/p>
&lt;p>通过Chrome的Sources栏查看网站附带的几个JS，发现其中一个名为app的最长。于是试着搜索了一下（虽然这里说说很简单，实际上这里看了好久找了好久才找到的。可能也是我菜吧）&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/Sources.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>发现了其中工作量证明的部分代码。其实我不是很懂这里的部分是在做什么，但是里面的部分差不多可以猜到。&lt;/p>
&lt;p>o是取unix时间，精确到分钟。（毕竟网络这部分有延迟，本地和服务器不一致计算出来的就不对了）&lt;/p>
&lt;p>I是去股票的代码，估计就是ERIRI&lt;/p>
&lt;p>r是那段可以自定义的祈祷词。&lt;/p>
&lt;p>s是一个随机的数，范围是0-99999999999&lt;/p>
&lt;p>c是r + s + o + i&lt;/p>
&lt;p>然后对c进行sha512运算，正则判断是否有连续的四个0.&lt;/p>
&lt;p>在尝试理解love_power的由来以后尝试在Python里吧这个过程实现一遍&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-python" data-lang="python"> &lt;span class="n">unixtime&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mktime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strptime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2"> %H:%M:00&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">localtime&lt;/span>&lt;span class="p">()),&lt;/span> &lt;span class="s1">&amp;#39;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s1"> %H:%M:%S&amp;#39;&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;span class="n">stockcode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;ERIRI&amp;#39;&lt;/span>
&lt;span class="n">cheerWord&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;TEST&amp;#39;&lt;/span>
&lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">99999999999&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">c&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;{}{}{}{}&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cheerWord&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">unixtime&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">stockcode&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="n">res&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">hashlib&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sha512&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">hexdigest&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="k">while&lt;/span> &lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">r&lt;/span>&lt;span class="s1">&amp;#39;0{4}$&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">res&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="bp">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">unixtime&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mktime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strptime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2"> %H:%M:00&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">localtime&lt;/span>&lt;span class="p">()),&lt;/span> &lt;span class="s1">&amp;#39;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s1"> %H:%M:%S&amp;#39;&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">99999999999&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">c&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;{}{}{}{}&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cheerWord&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">unixtime&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">stockcode&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="n">res&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">hashlib&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sha512&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">hexdigest&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在发送到服务器后返回的response也验证了我的猜想，证明我这工作量证明猜想是正确的。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;success&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;coin&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;amount&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">608&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="err">&amp;lt;_sre.SRE_Match&lt;/span> &lt;span class="err">object;&lt;/span> &lt;span class="err">span=(&lt;/span>&lt;span class="mi">124&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="mi">128&lt;/span>&lt;span class="err">),&lt;/span> &lt;span class="err">match=&amp;#39;&lt;/span>&lt;span class="mi">0000&lt;/span>&lt;span class="err">&amp;#39;&amp;gt;&lt;/span> &lt;span class="mi">92230011940&lt;/span> &lt;span class="err">b&amp;#39;TEST&lt;/span>&lt;span class="mi">922300119401527526500&lt;/span>&lt;span class="err">ERIRI&amp;#39;&lt;/span>
&lt;span class="mi">1527526500&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>有没有优化的空间呢？&lt;/p>
&lt;p>可能有的。因为unix时间取值进度是分钟，所以我们在计算完一个love_power后是可以在该分钟内重复发送的。&lt;/p>
&lt;p>但是如果今后服务器添加了已经验证过的love_power不能再验证就失效了。不过今后再说吧。&lt;/p>
&lt;p>事后发现今天下午就已经有大佬用脚本刷了百万代币，果然我还是太菜了。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E6%AD%BB%E7%86%8A%E7%8C%AB.gif?x-oss-process=style/blog"
alt=""
/>&lt;/p></description></item><item><title>多贝云的一次电话面试</title><link>https://malu.ome/post/%E5%A4%9A%E8%B4%9D%E4%BA%91%E7%9A%84%E4%B8%80%E6%AC%A1%E7%94%B5%E8%AF%9D%E9%9D%A2%E8%AF%95/</link><pubDate>Sat, 19 May 2018 22:41:48 +0000</pubDate><guid>https://malu.ome/post/%E5%A4%9A%E8%B4%9D%E4%BA%91%E7%9A%84%E4%B8%80%E6%AC%A1%E7%94%B5%E8%AF%9D%E9%9D%A2%E8%AF%95/</guid><description>
&lt;p>在上一次多贝云的笔试完之后，宣讲会上介绍公司都是处理上万的QPS, 每天上百G的日子，特别是CTO讲到现在特别需求的是C++的程序员后就没报太大希望了。 本以为技术栈不符合会被拒的。。。但是一天中午我微信有个好友申请说是多贝云的人。我就一下子激灵了。&lt;/p>
&lt;p>他先自我介绍了一方，讲了一下多贝云现在的技术栈，使用的语言，和Python现在在它们公司在做的事情。说是想和我先聊聊。先是问题是对Python有特别的偏好吗?是什么原因让你学Python呢?&lt;/p>
&lt;p>之前在绿盟也谈到为什么要学Python语言，有什么喜欢的地方。然后就说了因为之前写一个项目技术栈用到Flask， 感觉Python语言特别方便，语法糖很喜欢。故现在做课程作业也都在用Python写。也不是对编程语言有啥特别的偏好，如果做的事情有意思我觉得语言不是障碍。&lt;/p>
&lt;p>之前绿盟的面试官在我讲到语法糖后突然让我表达一下什么是语法糖。我就说了 for in 这样的循环，在迭代一个列表的时候特别直观。C++里就得循环一个下标列表，使用下标去从数组里取。话说 for 循环算不算 while 的一个语法糖？然后装饰器也算一个？ （那时候面对面的情况慌得不行，感觉很多情况下我想表达的东西都没能正确无误的表达出来）&lt;/p>
&lt;p>之后问了我以后是否想来北京工作，我回答我之后想去北上广。当然真实情况是那个地方有广式的烤鸭就行。。。 武汉的烤鸭和我印象里的烤鸭根本不一样！！！真的，每个人都应该了解下广式的烤鸭。真的不是武汉这样干巴巴的。&lt;/p>
&lt;p>之后就说让HR和我约下面试时间！不久一个小姐姐就打电话过来，预约了两天后的早上十点，电话面试。还特别提到需要一台电脑，可能会用到。&lt;/p>
&lt;p>预约的那天早上10点钟过一点就有一个北京的电话打进来，自我介绍了一下是多贝云的且那天在微信和我聊过之后面试就开始了。面试官那边还说了看过我的博客，了解了我的一些技术栈，然后让我介绍一下我简历上做的项目。（话说我简历上也没写上我的博客地址，估计还翻了一下我的Github，真是感激了。），然后我简单的说了一下交易所做的事情，然后问了项目是否在线上跑，问了一下地址。我说了&lt;a href="https://Stock.malu.moe">HTTPS://Stock.malu.moe&lt;/a>, 那时候觉得里面爬的都是里番。。直接给面试官看是不是不太好。。他突然说了是不是&lt;a href="ACGN-STOCK.com">ACGN-STOCK.com&lt;/a>，连忙解释不是这个，但是是按照这个做的，很喜欢这个网站。后面面试官也没深究是哪个网站。。。不知道是不在乎还是在博文里找到了。&lt;/p>
&lt;p>接下来便是面试官一轮一轮的提问了，期间交流了一个小时，我只尽量回忆起一些问题并记录下来。&lt;/p>
&lt;p>Q.然后就着项目问我项目在服务器上是怎么运行的，我说了uwsgi+nginx。问道了session是怎么管理的，&lt;/p>
&lt;p>A.使用的Flask里内置的。但是Falsk的session在客户端是以cookie储存的。&lt;/p>
&lt;p>Q.有了解过Falsk里面session储存是怎么实现的吗？&lt;/p>
&lt;p>A.没有，后面了解Flask里面每个请求的默认的 session 对象是 &lt;code>SecureCookieSession&lt;/code>，这个类就是一个基本的字典，外加一些特殊的属性。&lt;/p>
&lt;p>Q.假如你这项目由多个后端，你觉得该怎么解决session在后端的储存，怎么保证用户的登录状态。&lt;/p>
&lt;p>A.先是回答没有了解过，但是面试官会鼓励你尝试的去给个解决方案，我说道使用同步保存session的数据库，或者保证处理用户的始终是一个，不变的服务器。最后面试官说确实这两种方法都会用到，也都是混合使用的。&lt;/p>
&lt;p>Q.你项目里用到Redis做了什么，是怎么缓存数据库的数据的。怎么保证数据的状态是最新的。&lt;/p>
&lt;p>A.做了爬虫的缓存，和一些查询数据库的缓存。查询到数据库数据后格式化为JSON数据储存起来，下次查询先查Redis时候由这条查询，如果由就直接返回Redis里的数据，没有就查询数据库把查询到的数据储存到Redis里再染回数据。Redis里我会设置过期时间，而缓存的数据有效性都是一天的，因为我爬虫设置每天才更新一次，这样解决数据有效性的问题。&lt;/p>
&lt;p>之后有问到网页怎么架设的，我说uwsgi + Nginx 但是估计我Nginx发音有问题？他没听清，我也怂了。。就说了没有，他也很困惑的结束了这个问题。估计是想问Nginx ?&lt;/p>
&lt;p>Q.多进程对处理多个用户是怎么处理的，有什么好处&lt;/p>
&lt;p>A.这个没了解。但是在鼓励下说了多个进程能够处理多个用户的同时请求。感觉不是很满意？当然不满意！&lt;/p>
&lt;p>那时候我感觉4个进程只能同时解决4个用户同时请求，多了就得等待？自己也感觉不对。&lt;/p>
&lt;p>之后了解了下Nginx现在是多进程+异步非阻塞的方式实现高并发。使用异步能大幅度的解决多个用户同时访问的问题，多个socket使用一个进程，当socket处理到出现阻塞时进程便处理其他的socket，当socket请求来了再回调进程去给他处理。&lt;/p>
&lt;p>类似处理网络请求的实现是在Linux上是一些IO操作，而Linux上的IO操作模式至今可分为三个阶段，分别为select，poll，epoll。poll解决了select的一些问题，但是其模式还是类似任务调度的轮询，在处理多个任务（socket）时性能会大幅下降。epoll的出现彻底实现了回调的操作，使得相较poll的方法性能有大幅度的提升。&lt;/p>
&lt;p>而使用多个进程能够充分利用现在CPU的多核，但是每个进程下仍是处理多个socket。使得实现了现在的高并发。&lt;/p>
&lt;p>但是系统的问题多个进程会有 ” 惊群“ 问题，大概意思就是又回到需要一个进程处理但是系统会唤起所有进程。又退回到轮询的状态，好在现在各有个的解决方案。&lt;/p>
&lt;p>之后面试官微信发给我一个链接，打开后是编辑器的页面，两边能够同时在上面码代码。&lt;/p>
&lt;p>写了一个函数的框架，叫我实现具体细节，类似寻找数组里的数返回其下标，期间根据要求修改了几次。在做题的时候时刻提醒自己要考虑各种输入情况，但是实战的时候还是实现功能就感觉完成了。&lt;/p>
&lt;p>之后问到了迭代器和生成器，那一段时间因为我页面不在打开的页面没有看到面试官的输入，也没理解面试官问的是什么问题。。。神游了一段时间，那段时间真的感觉无比漫长，感觉那时候都要挂了。&lt;/p>
&lt;p>提问大概是搜索数据库返回的是什么，大概是想问题迭代器的问题？然后我没有看到他的输入，估计也是对着代码对我提问，等我切回页面一看多了一大段代码。。。神游回来顿时出了冷汗。&lt;/p>
&lt;p>面试官看我不明白还给我解释了好多。。。&lt;/p>
&lt;p>我发现我对生成器和迭代器的概念弄错了。。我还以为我以前用的这个是生成器，但是这个是列表生成式&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="nb">iter&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>下面这个才是生成器，&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="nb">iter&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>[] 返回的是一个列表，()返回一个生成器。生成器的计算是惰性的，当使用next()计算是才会返回下一个值&lt;/p>
&lt;p>而可以被next()函数不断调用返回下一个值的是迭代器，不同于可被迭代的概念，迭代器内部是yield实现的，&lt;/p>
&lt;p>会记录你的返回位置下一次从这里开始。&lt;/p>
&lt;p>在for 循环里是通过iter()方法将可迭代对象转化成迭代器，重复调用next()方法实现的。知道for语句捕获到&lt;code>StopIteration&lt;/code> 异常。&lt;/p>
&lt;p>之后还问了我可变对象和不可变对象，除了列表和字典外都是不可变对象。问了我 is 和 == 的区别。&lt;/p>
&lt;p>问了我是否知道那些数据在Python底层的实现，回答不知道。大概是想问我字典那一类的数据是怎么储存的？&lt;/p>
&lt;p>然后借此聊到hash表？怎么解决冲突？&lt;/p>
&lt;p>然后问了我能否解释的结果&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;span class="n">a&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">b&lt;/span>
&lt;span class="n">a&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="n">b&lt;/span>
&lt;span class="n">str1&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;test&amp;#39;&lt;/span>
&lt;span class="n">str2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;test&amp;#39;&lt;/span>
&lt;span class="n">str1&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">str2&lt;/span>
&lt;span class="n">str1&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="n">str2&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我回答 is 是判断两个对象是否相等，== 是判断两个对象的值是相等。&lt;/p>
&lt;p>结果是两个结果都是True。。。我还以为我至少数字答对了呢。。结果不是&lt;/p>
&lt;p>Python对于小整数有对象池技术，在Python2.7中，“小整数”的定义是[-5,256]，在这个范围内的整数Python提前建立一段内存储存用于共享，&lt;/p>
&lt;p>Pyhon的字符串有Intern机制。它指的就是在创建一个新的字符串对象时，如果已经有了和它的值相同的字符串对象，那么就直接返回那个对象的引用，而不返回新创建的字符串对象。&lt;/p>
&lt;p>顺便还问了我是否知道id()这个函数，我回答知道，查看对象内存地址的值？不知道是否能够领会我的意思，反正肯定不是标准答案。&lt;/p>
&lt;p>之后问道了我&lt;a href="http://www.restapitutorial.com/">REST API &lt;/a>是怎么的一个概念。回答到用URL表示资源,HTTP 请求方法对资源的操作。返回的状态表示操作的结果。（在绿盟的时候面试官说了http请求请求方法不就是这么用的么？自己突然怀疑起自己是否真的了解RESTful，和他举例会有URL里有add的字段表示对这个资源的一个get请求是一个添加的操作这个请求方法是不对应的但是感觉他也不是很赞同。但是我也看到同学会用post方法请求一个数据说法是post方法更安全且不会被缓存，可以可被请求的资源为什么要隐藏地址呢？还是需要什么字段验证身份吗？使用cookie会不会更优雅？）&lt;/p>
&lt;p>之后问到了VUE，赶紧解释道只是我页面需要我才学了一点，不是很精通，现在前端发展得都是各种框架。和当初认识的根本不是一个样子。面试官人也很好没问了。。。&lt;/p>
&lt;p>之后便是问道今后的发展规划，想去的城市，爱好之类的。&lt;/p>
&lt;p>其实讲到发展规划我到也没特别在意，是不是感觉给人规划好自己五年十年的道路这个人会靠谱些对自己负责？&lt;/p>
&lt;p>有时候确实是这种感觉，可是我高中的时候我还想当一名前端工程师呢？如今看起来感觉当初对前后端也没多了解接触更多的是前端这方面的东西，而且后端那时候对我感觉像是一团迷雾，我根本不知道在服务器后面是怎么处理一起请求并返回数据给前端的。或许我觉得我在一个又一个项目中总能你朝着自己感兴趣的方向学习就是对自己的负责了吧。现在看来我更喜欢处理后端的事物，对高并发，大量数据有种蜜汁快感。&lt;/p></description></item><item><title>多贝云的一次笔试</title><link>https://malu.ome/post/%E5%A4%9A%E8%B4%9D%E4%BA%91%E7%9A%84%E4%B8%80%E6%AC%A1%E7%AC%94%E8%AF%95/</link><pubDate>Wed, 16 May 2018 21:07:36 +0000</pubDate><guid>https://malu.ome/post/%E5%A4%9A%E8%B4%9D%E4%BA%91%E7%9A%84%E4%B8%80%E6%AC%A1%E7%AC%94%E8%AF%95/</guid><description>
&lt;p>在年级的就业实习群里看到了多贝云的招聘，就顺手投了一波简历，然后有个小哥哥打电话给我说是它们会在华科开宣讲会，顺带有笔试的那种，于是就从地大走到华科去参加宣讲会了。。华科真的蛮大的。&lt;/p>
&lt;p>宣讲会是CTO来亲自给我们讲，感觉听不容易的。今天讲完晚上还得坐高铁赶到下一个城市。讲了多贝的做的一些事情，一些后台数据量，CTO希望一起共事的人的一些要求。我以为它们只是做在线教育的，但是CTO说是做在线教育的技术支持，也就是说提供一个平台，接入做在线教育的一些公司，为他们提供后面的网络等一些基础服务。有点像淘宝和上面的店家的区别。CTO提到的数据量也超级吓人的，说他们现在有1000多台服务器，每天产生150g的日志文件。那么多的服务器用阿里云之类的各种云？好像贵死吧。。？部署也是各种docker吧？加上微服务？当时听完这些数据第一感觉就是抱歉，我来错地方了。233&lt;/p>
&lt;p>在宣讲会完之后就是笔试了，笔试一共是10道题和一道附加题，所有人都是同一套试题。限时是一个小时，不过大部分人都是30分钟左右就起身离开了吧。。弄得俺也心慌慌的，快到九点半的时候就交卷了，毕竟还得走回地大呢。题目有些记得不是那么清楚，但是尽量回忆吧。&lt;/p>
&lt;p>1.什么是死锁，怎么避免死锁&lt;/p>
&lt;p>死锁是指两个或两个以上的进程在执行过程中，由于竞争资源或者由于彼此通信而造成的一种阻塞的现象，若无外力作用，它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁，这些永远在互相等待的进程称为死锁进程。死锁的预防可以使用银行家算法或者有序资源分配法。&lt;/p>
&lt;p>2.介绍一下堆和栈，有何区别&lt;/p>
&lt;p>程序的栈区存放程序函数的参数值和局部变量值，由程序自动释放。堆区有程序员分配和释放。&lt;/p>
&lt;p>3.写出你认识的http methods，并说明使用场景&lt;/p>
&lt;p>get，请求一个数据&lt;/p>
&lt;p>post，向服务器提交一个数据&lt;/p>
&lt;p>put，向服务器提交一个数据更新它&lt;/p>
&lt;p>delete，删除指定的资源&lt;/p>
&lt;p>patch，对资源的部分修改&lt;/p>
&lt;p>4.编写一个函数，给定一个无序数组和一个数字，返回数字在数组中的下标&lt;/p>
&lt;p>遍历，搜索到就返回下标&lt;/p>
&lt;p>5.要求如上题，但是数组为有序的&lt;/p>
&lt;p>二分查找&lt;/p>
&lt;p>6.有一个10G的文本文件，但是机器内存只有1G，要求根据字母排序，写出排序的思路和方法。&lt;/p>
&lt;p>我写的是根据首字母分为26个部分，倘若每个字母部分仍大于1g则使用第二个字母划分。这样保证每部分小于1g的容量再排序，排序完成后根据26个字母的顺序组合。&lt;/p>
&lt;p>7.若一条线路的TCP丢包率为10%，问其改进的方法？(这题我不会，也花时间)&lt;/p>
&lt;p>8.你了解什么设计模式，简单介绍一下&lt;/p>
&lt;p>单例模式，类负责创建自己的对象，保证只有单个对象被创建。&lt;/p>
&lt;p>工厂模式，使用一个类统一创建其他类的对象。&lt;/p>
&lt;p>装饰器模式，允许向现有的对象添加新的功能同时又不改变其结构。&lt;/p>
&lt;p>9.你了解过什么语言，各有什么优势和缺点。&lt;/p>
&lt;p>C++，静态语言，快，没有自动的内存回收，同时允许程序员申请内存空间和得自己处理内存释放。是优点同时也是缺点。&lt;/p>
&lt;p>Python，动态语言。运行速度相交其他语言会慢，但是有各种语法糖能够快捷开发。&lt;/p>
&lt;p>Java，第一影响就是万物介对象，各种库，冗长的代码，各种设计模式。&lt;/p>
&lt;p>附加题是设计一个长连接转换短连接的后端。有五个问题。&lt;/p>
&lt;p>怎么一一对应，&lt;/p>
&lt;p>通过通过0~9, a~z, A~Z表示已给62进制的数，通过自增来给每一个长连接分配一个数字，数字即为短连接。&lt;/p>
&lt;p>怎么避免碰撞，&lt;/p>
&lt;p>数据库怎么设计，&lt;/p>
&lt;p>id ShortUrl LongUrl CREATETIME UPDATETIME&lt;/p>
&lt;p>有什么改进的方法，&lt;/p>
&lt;p>使用redis数据库缓存热点数据。&lt;/p>
&lt;p>分布式的话会有什么问题&lt;/p>
&lt;p>数据库之间的同步？&lt;/p>
&lt;p>当时看到周围人都走了看时间也差不多了就急急忙忙的交了。九点20出来到宿舍正好10点钟。不知怎么的一股惆怅。&lt;/p></description></item><item><title>给网站添加https</title><link>https://malu.ome/post/%E7%BB%99%E7%BD%91%E7%AB%99%E6%B7%BB%E5%8A%A0https/</link><pubDate>Wed, 02 May 2018 17:25:23 +0000</pubDate><guid>https://malu.ome/post/%E7%BB%99%E7%BD%91%E7%AB%99%E6%B7%BB%E5%8A%A0https/</guid><description>
&lt;p>在服务器上跑起 Flask 后访问登录或注册页面 Chrome 总是会在地址栏提示当前页面不安全，的确http 是明文传输，而且会有中间人攻击的风险。总之不管怎么样地址栏有个绿色的小锁总感觉会爽很多啦。&lt;/p>
&lt;p>在谷歌搜索了一些文章，发现还有用 openssl 自签署证书的。但是这相当于你自己证明你是你自己，使用自签署的证书只是保证传输过程加密了，但是你加密的信息发送给了谁你并不知道。这里得有一个第三方出现，一个传输双方都信任的对象来作担保。于是CA机构就出现了。&lt;/p>
&lt;p>不过好像 12306 就是在首页挂上自己的证书要求你安装。。。感觉这简直违背了 https 的意义。好像 12306 这么做是想推广它自己家的CA服务。。。真是生财有道啊。&lt;/p>
&lt;p>看了一下现在腾讯云和阿里云都有个人CA证书的申请服务了，当然用的是&lt;a href="https://easy.zhetao.com/ztcam.oms?omsv=wiki&amp;amp;_verip_csrf_token_name=null">Let&amp;rsquo;s encrypt&lt;/a>之类的个人免费证书。申请之后会要求你验证你所申请的域名控制权，会要求你添加一条TXT记录或者使域名指向一个文件之类的。在CA机构扫描完成后阿里云或者腾讯云会给你发邮件。在控制台你可以下载你的证书。认证过程大概十几分钟就可以完成。&lt;/p>
&lt;p>下载证书后 nginx 配置里添加&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-nginx" data-lang="nginx"> &lt;span class="k">listen&lt;/span> &lt;span class="mi">443&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="k">ssl&lt;/span> &lt;span class="no">on&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="k">ssl_certificate&lt;/span> &lt;span class="s">/etc/nginx/ssl/1_www.malu.moe_bundle.crt&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="k">ssl_certificate_key&lt;/span> &lt;span class="s">/etc/nginx/ssl/2_www.malu.moe.key&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="k">ssl_protocols&lt;/span> &lt;span class="s">TLSv1&lt;/span> &lt;span class="s">TLSv1.1&lt;/span> &lt;span class="s">TLSv1.2&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1"># 使用的协议
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>重启你的 nginx 服务就可以看到 https 生效了。要注意证书所签署的域名必须和当前域名匹配。&lt;/p>
&lt;p>比如 malu.moe 这单个域名的证书只能在 malu.moe 域名下使用，如果在 stock.malu.moe 下就会提示证书不匹配。 Chrome 大概会提示你有风险，还会拦截下来。&lt;/p>
&lt;p>个人只能申请单个域名的证书，如果申请泛域名证书会很贵。大概上千块一年的样子。申请更高级别的认真就越麻烦。最高级别还会有人到公司审核的样子。不过一个域名能申请20个单域名证书的样子，大概也够用了。&lt;/p>
&lt;p>现在访问 &lt;a href="https://stock.malu.moe">Stock.malu.moe&lt;/a> 看看吧&lt;/p></description></item><item><title>使用uwsgi 和 nginx 部署 Flask</title><link>https://malu.ome/post/%E4%BD%BF%E7%94%A8uwsgi-%E5%92%8C-nginx-%E9%83%A8%E7%BD%B2-flask/</link><pubDate>Tue, 01 May 2018 19:09:22 +0000</pubDate><guid>https://malu.ome/post/%E4%BD%BF%E7%94%A8uwsgi-%E5%92%8C-nginx-%E9%83%A8%E7%BD%B2-flask/</guid><description>
&lt;p>之前使用了 gunicorn 来部署 Flask 应用,但是感觉 nginx 会不会更快一些, 于是就有了尝试使用 uwsgi 配合 nginx 来部署 Flask 的想法.&lt;/p>
&lt;p>但是看了一些文章之后感觉速度应该是一样的, 后端都是 Python, 但是有人说 Nginx 更安全. 静态页面的支持也更好, 所以也配置玩一下顺便测试一下静态的并发量.&lt;/p>
&lt;p>首先安装uWSGI, 使用pip来安装&lt;/p>
&lt;pre>&lt;code>pip install uwsgi
&lt;/code>&lt;/pre>&lt;p>在 Flask 应用的目录下测试 uwsgi 是否工作&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">uwsgi --socket 0.0.0.0:8000 --protocol&lt;span class="o">=&lt;/span>http -w run:app
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>这时候打开 127.0.0.1:8000 就可以看到 网站的首页了.&lt;/p>
&lt;p>接着我们配置真正配合 nginx 使用的 uwsgi 配置.&lt;/p>
&lt;p>在 Flask 应用目录下新建一个文件 config.ini 作为uwsgi 的配置文件&lt;/p>
&lt;pre>&lt;code>[uwsgi]
master = true
wsgi-file = run.py
callable = app
chmod-socker = 777
socket = 127.0.0.1:3031
processes = 4
threads = 2
buffer-size = 32768
&lt;/code>&lt;/pre>&lt;p>这里 run.py 是 Flask 应用的主文件, socket 是接收 nginx 转发过来的接口.&lt;/p>
&lt;p>使用这个配置文件启动 uwsgi&lt;/p>
&lt;pre>&lt;code>uwsgi config.ini
&lt;/code>&lt;/pre>&lt;p>接着配置 nginx 的配置文件&lt;/p>
&lt;p>nginx 默认的是 /etc/nginx/nginc.conf, 里面会载入 sites-enabled 里的所有文件.&lt;/p>
&lt;p>所以我们在 sites-enabled 文件夹里新建个名为 stock.conf 的文件,填入以下字段&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-nginx" data-lang="nginx">&lt;span class="k">server&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="kn">listen&lt;/span> &lt;span class="mi">80&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="kn">location&lt;/span> &lt;span class="s">/&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="kn">include&lt;/span> &lt;span class="s">uwsgi_params&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="kn">uwsgi_pass&lt;/span> &lt;span class="n">127.0.0.1&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">3031&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>这里的意思是监听 80 端口的信息, 使用 uwsgi 传递给 127.0.0.1:3031 这个地址, 3031是随便取得, 取啥都可以, 没有被系统占用就行.&lt;/p>
&lt;p>配置完成后可以先检查一下配置文件是否正确&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">sudo nginx -t
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果正确无误就可以启动 ngxin 了&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">sudo service nginx start
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接着打开你的网址应该就可以看到网站的首页了.&lt;/p>
&lt;p>接着我用 webbench -c 500 -t 60 测试本地的服务器并发数, 一回车 CPU 就吃满了&lt;/p>
&lt;p>&lt;img loading="lazy"
src="http://malu-picture.oss-cn-beijing.aliyuncs.com/18-5-1/23344536.jpg"
alt=""
/>&lt;/p>
&lt;p>但是效果非常好, 比之前高了很多,&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://127.0.0.1/
500 clients, running 60 sec.
Speed=135661 pages/min, 1288988 bytes/sec.
Requests: 94304 susceed, 41357 failed.
&lt;/code>&lt;/pre>&lt;p>大约相比本地使用 Flask 自带的 http server 使用 Redis 缓存效果高五倍&lt;/p>
&lt;p>接着测试打在阿里云 1G1C 服务器上的效果&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://106.15.205.43/index
500 clients, running 60 sec.
Speed=4011 pages/min, 113179 bytes/sec.
Requests: 4011 susceed, 0 failed.
&lt;/code>&lt;/pre>&lt;p>效果并没有好多少&amp;hellip;不过看了113179 bytes/sec.大约也跑满了1m的带宽了&amp;hellip;难道真的是我的服务器带宽限制了???&lt;/p>
&lt;p>在付了两块钱临时升级3个小时到10M带宽后再进行测试一下.&lt;/p>
&lt;p>先测速一下&lt;/p>
&lt;pre>&lt;code>Retrieving speedtest.net configuration...
Testing from CNISP-Union Technology (Beijing) Co. (106.15.205.43)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by China Telecom ZheJiang Branch (Hangzhou) [4.87 km]: 6.874 ms
Testing download speed................................................................................
Download: 324.60 Mbit/s
Testing upload speed................................................................................................
Upload: 9.36 Mbit/s
&lt;/code>&lt;/pre>&lt;p>不错, 阿里云好像是带宽限制的是上传的, 下载能飙到 300 M. 测试前打开top查看cpu占用&lt;/p>
&lt;pre>&lt;code>top - 23:04:20 up 3 days, 4:32, 2 users, load average: 1.81, 0.44, 0.14
Tasks: 96 total, 4 running, 92 sleeping, 0 stopped, 0 zombie
%Cpu(s): 77.7 us, 14.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 8.0 si, 0.0 st
KiB Mem : 2052568 total, 1291168 free, 161252 used, 600148 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1693260 avail Mem
&lt;/code>&lt;/pre>&lt;p>小鸡 CPU 跑到 70多&amp;hellip;&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://106.15.205.43/index
500 clients, running 60 sec.
Speed=43731 pages/min, 1123486 bytes/sec.
Requests: 42446 susceed, 1285 failed.
&lt;/code>&lt;/pre>&lt;p>好了, 数据确实多了10倍&amp;hellip;看来确实是带宽限制了. 小鸡 CPU 也不怎么受得了.&lt;/p></description></item><item><title>给后端添加redis缓存</title><link>https://malu.ome/post/%E7%BB%99%E5%90%8E%E7%AB%AF%E6%B7%BB%E5%8A%A0redis%E7%BC%93%E5%AD%98/</link><pubDate>Sun, 29 Apr 2018 00:01:47 +0000</pubDate><guid>https://malu.ome/post/%E7%BB%99%E5%90%8E%E7%AB%AF%E6%B7%BB%E5%8A%A0redis%E7%BC%93%E5%AD%98/</guid><description>
&lt;p>在 VPS 上架设好 Flask 后，我测试并发是经常发现 ORM 框架会发生错误，查询之后是 连接时设置的 pool_size 太小， 使用 SQLCHEMY 时默认的 pool_size = 5， 我改为100后就可以了。&lt;/p>
&lt;p>但是如果大并发的时候一些热点数据应该还是会频繁的查询数据库，但是这些数据是不会经常更新的。所以我就想着这么用 redis 缓存那些经常被查询但是不会更新的数据， 比如公告， STOCK 的基本信息.&lt;/p>
&lt;p>我试了测试没有使用redis进行缓存时候打开首页查询公告时候的web服务器性能，使用 webbench 进行 500 线程 60 秒的测试。&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://127.0.0.1:5000/
500 clients, running 60 sec.
Speed=1924 pages/min, 54160 bytes/sec.
Requests: 1924 susceed, 0 failed.
&lt;/code>&lt;/pre>&lt;p>在添加 Reids 缓存后再以同样的参数进行测试&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://127.0.0.1:5000/
500 clients, running 60 sec.
Speed=16735 pages/min, 468472 bytes/sec.
Requests: 16642 susceed, 93 failed.
&lt;/code>&lt;/pre>&lt;p>发送速率直接上了一个数量级，舒服。&lt;/p>
&lt;p>直接测试一下在 VPS 上跑的后端并发数，在没有添加 Redis 的后端测试的时候本地打开网页是不是回500&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://106.15.205.43/index
500 clients, running 60 sec.
Speed=3990 pages/min, 106517 bytes/sec.
Requests: 3990 susceed, 0 failed.
&lt;/code>&lt;/pre>&lt;p>添加后&lt;/p>
&lt;pre>&lt;code>Benchmarking: GET http://106.15.205.43/index
500 clients, running 60 sec.
Speed=3810 pages/min, 108984 bytes/sec.
Requests: 3810 susceed, 0 failed.
&lt;/code>&lt;/pre>&lt;p>没想到却是一样的，为啥啊?&lt;/p></description></item><item><title>配置 VPS 运行 Flask</title><link>https://malu.ome/post/%E9%85%8D%E7%BD%AE-vps-%E8%BF%90%E8%A1%8C-flask/</link><pubDate>Mon, 23 Apr 2018 23:22:54 +0000</pubDate><guid>https://malu.ome/post/%E9%85%8D%E7%BD%AE-vps-%E8%BF%90%E8%A1%8C-flask/</guid><description>
&lt;p>话说之前因为自己很喜欢 &lt;a href="https://acgn-stock.com/">ACGN_STOCK&lt;/a> 这个网站，但是因为不喜欢上面 ”金管会“ 的一些规定，加上 自己非常喜欢类似 EVE 里面那个自由市场，很喜欢这种万物都可以自由交易的游戏。所以打算自己实现一个类似的网站。&lt;/p>
&lt;p>因为自己之前的一个项目是 Falsk 框架的原因，所以打算用 Flask 框架和 Postgresql 数据库来实现这个网站。在看着教程一步一步架起一个后端后，就直接按照想法添加数据库中的表和字段了。由于这是自己第一个从头撸到尾的工程，所以踩了很多坑，类似数据库字段因为自己之前设计的不周到没考虑到，所以很多时候是写着写着数据库就又多了一个字段。但是摸爬滚打也实现了基本的样子，用户的注册登录，在市场浏览股票，股票页面的买卖交易。其中后端逻辑肯定有很多不完善的地方。但似乎感觉自己撸后端还是非常有成就感的。&lt;/p>
&lt;p>在项目初步跑起来后就面临另一个问题，网站得跑在远程的服务器上，毕竟自己在本地写代码用的是 Falsk 自己的 server 。之前还完全没有尝试过在 VPS 上搭建跑起来过，于是在这里记录一下架设过程。&lt;/p>
&lt;p>在 VPS 上通过 Gihub clone 整个项目，就得到了后端的所有代码，之后的安装 Python 所需要的库，Python 的插件可以通过&lt;/p>
&lt;pre>&lt;code>pip install -r requirements.txt
&lt;/code>&lt;/pre>&lt;p>安装 requirements.txt 文件中项目说需要的所有库，非常方便。&lt;/p>
&lt;p>不过我们这个项目需要 Python3 ，Debian 上会自带 Python2 和 Python3 两个版本的 Python，但是默认的 pip 是 Python2 的，于是打算安装 pyenv 来实现多版本 Python 的管理。&lt;/p>
&lt;p>通过下面这个脚本实现 pyenv 的安装。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer &lt;span class="p">|&lt;/span> bash
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>安装完 pyenv 后，shell 并不能识别 pyenv，因为系统的根目录里没有包含 pyenv 的目录。我们需要将pyenv 的目录添加进当前所使用的 bash 配置里。这里以 bash 为例子，zsh的配置配置文件为～/.zshrc&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;export PYENV_ROOT=&amp;#34;$HOME/.pyenv&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;export PATH=&amp;#34;$PYENV_ROOT/bin:$PATH&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;eval &amp;#34;$(pyenv init -)&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>之后用 source 命令使用新配置重启 base&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">source&lt;/span> ~/.bashrc
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>之后使用 pyenv 安装 3.5.4 的 Python，并将其设置为全局 Python 版本。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;code>pyenv install version&lt;/code> 安装，version 为对应的 Python 版本号，如 2.7.9；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv virtualenv 3.5.2 webapp-3.5.2&lt;/code> 以 3.5.2 版本创建虚拟环境；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv uninstall version&lt;/code> 删除 version 版本的 Python；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv commands&lt;/code> 列出所有命令；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv versions&lt;/code> 查看 pyenv 当前可检测到的所有版本，处于激活状态的版本前以 * 标示；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv local 2.7.9&lt;/code> 设置局部版本&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv which python&lt;/code> 查看当前 python 命令的路径；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>pyenv which pip&lt;/code> 查看当前 pip 命令的路径；&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>执行 pyenv install 3.5.4 后，安装失败 。提示没有 openssl， zlib。执行&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">apt install openssl zlib*
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>安装完毕～ 撒花❀❀❀❀&lt;/p>
&lt;p>升级 pip 不然有些库安装不了&lt;/p>
&lt;pre>&lt;code>pip install --upgrade pip
&lt;/code>&lt;/pre>&lt;p>安装所需要的所有库&lt;/p>
&lt;pre>&lt;code>pip install -r requirements.txt
&lt;/code>&lt;/pre>&lt;p>在使用 gunicorn 部署 Falsk 应用前，得先安装 postgresql 和 redis。分别是关系式数据库和 nosql 数据库。用来储存网站所需要的信息和做爬虫缓存。&lt;/p>
&lt;p>postgresql 的安装就不多言了，安装完成后需要创建一个用户和数据库。这里可以用写好的 sql 文件直接执行创建数据库&lt;/p>
&lt;p>&lt;code>psql stock -c &amp;quot;\i sql/schema.sql&amp;quot;&lt;/code>&lt;/p>
&lt;p>确定创建的用户拥有数据库的所有权限。&lt;/p>
&lt;p>安装 redis-server。之后就可以用 gunicorn 部署 Flask 应用了。&lt;/p>
&lt;pre>&lt;code>gunicorn -b 0.0.0.0:80 run:app
&lt;/code>&lt;/pre>&lt;p>run.py&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="ch">#!flask/bin/python&lt;/span>
&lt;span class="kn">from&lt;/span> &lt;span class="nn">app&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">app&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;__main__&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">app&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">debug&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>运行后很多字符错误。。。才发现每个文件开头的那句声明使用utf8的重要性。。。&lt;/p>
&lt;pre>&lt;code># -*- coding: utf-8 -*
&lt;/code>&lt;/pre>&lt;p>至此一个运行Python 后端的服务器就好了。访问 http://106.15.205.43/ 就可以看到。&lt;/p></description></item><item><title>轻文面试经历</title><link>https://malu.ome/post/%E8%BD%BB%E6%96%87%E9%9D%A2%E8%AF%95%E7%BB%8F%E5%8E%86/</link><pubDate>Wed, 14 Mar 2018 13:15:13 +0000</pubDate><guid>https://malu.ome/post/%E8%BD%BB%E6%96%87%E9%9D%A2%E8%AF%95%E7%BB%8F%E5%8E%86/</guid><description>
&lt;p>二月份寒假在家的时候看到V2EX上面有轻文的招聘贴，自己感觉十分心水。就抱着试一试的心态尝试满足他的职位描述去学习。我在三月初的时候在BOSS招聘平台上向它们投递了一份简历，之后就沉寂了一段时间。直到我以为我的简历直接被筛选掉心灰意冷后3月12号的中午它们BOSS直聘的人事专员给我发消息问我什么时候能来面试。我第一反应是能不能给一段时间刷一下题，于是考虑周六，但是周六人家不上班啊，于是周五，感觉周五下午去面试不太好，于是就发消息问周四下午行不行，那时候我还是思想斗争了很久。没想到人家第二天直接问我今天有空吗。我回答了有，于是在中午看了一下TCP的三次握手和四次挥手就匆匆从学校出发了。由于是第一次面试对面试总有一种恐惧感，总怕我不能很好的表达清楚意思，大脑一片空白，事实证明我比我想象的还要差。
经过一次公交车中转后我到达了光谷软件园，那个地方比想象中的还要偏僻。路上随处都在修高架，到处都是工程车。公交车直接在马路上到站，下车就是和车辆在一条马路上相错行走，因为周围都是围起来的工地。在腾讯地图的指引下找到了轻文公司所在的大楼，稍微在下面等待了一下就上去了，上去后发现它们公司还是很明显的，就是大门需要刷工牌，于是我和他们外面打电话准备进去的员工说了一下我是来应聘的一起进去了。
进公司后发现它们公司也不是很大，大概十几二十个人在一起办公，让我等待了一下由一个人要了一份简历之后就带我进了一个办公室。之后就开始面试了。
面试开始考官还问我怎么那么早就开始找实习。。。我说现在不都开始春招了么，而且我也确定不考研究生了，可不就出来找实习了。之后问了我一些问题，感觉都还是很基础的，但是我答得不是很好。感觉都没打出来，也看得出啦他甚不得满意，之后就是叫我回去等消息了，我感觉是GG了。出来一看才十几分钟。彻底凉凉了。。作为学习这里还是吧记忆中问到的问题彻底搞明白，在这里记录一下吧。&lt;/p>
&lt;h5 id="快排实现原理">
&lt;a href="#%e5%bf%ab%e6%8e%92%e5%ae%9e%e7%8e%b0%e5%8e%9f%e7%90%86" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
快排实现原理。
&lt;/h5>
&lt;p>从数列中挑出一个元素，使得它左边的元素都比它小，右边的元素都比他大。
之后在这个元素的左边和右边的分区递归执行上述操作，直至左右区间相等。&lt;/p>
&lt;h5 id="链表插入操作的实现">
&lt;a href="#%e9%93%be%e8%a1%a8%e6%8f%92%e5%85%a5%e6%93%8d%e4%bd%9c%e7%9a%84%e5%ae%9e%e7%8e%b0" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
链表插入操作的实现
&lt;/h5>
&lt;p>单向链表只需要使得要插入的节点的next指针指向插入位置的下一个节点，插入位置的前节点的next指针指向插入的节点。
双向链表需要使得插入位置的下一个节点的pre指针指向要插入的节点，要插入节点的next指针指向插入位置的下一个节点，插入位置的上一个节点的next指针指向要插入的节点，要插入节点的pre指针指向插入位置的上一个节点。（我觉得这种问题我觉得交流起来很麻烦，远不如在纸上写得方便清楚，但是也凸显了自己平时很少尝试用说出来的方式描述自己的思路）&lt;/p>
&lt;h5 id="反向迭代一个列表">
&lt;a href="#%e5%8f%8d%e5%90%91%e8%bf%ad%e4%bb%a3%e4%b8%80%e4%b8%aa%e5%88%97%e8%a1%a8" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
反向迭代一个列表
&lt;/h5>
&lt;p>我的第一思路是列表的reverse方法，但是后面是说道切片感觉考官应该想要的是[::-1]
三个参数，左区间，右区间，步长。区间是左闭右开。
(自己确实没这么用过，这里还迷糊了一阵，还以为是spilt方法。。。)&lt;/p>
&lt;h5 id="知道浅拷贝和深拷贝吗">
&lt;a href="#%e7%9f%a5%e9%81%93%e6%b5%85%e6%8b%b7%e8%b4%9d%e5%92%8c%e6%b7%b1%e6%8b%b7%e8%b4%9d%e5%90%97" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
知道浅拷贝和深拷贝吗？
&lt;/h5>
&lt;p>这里下意识的说知道，但是却不能很好的表达出来，大抵也是自己理解不深吧。
浅拷贝只拷贝父对象，不会拷贝对象内部的元素
浅拷贝产生的新对象中的可变对象的值发生改变会对原对象的值产生副作用，因为仅仅是拷贝了引用。
深拷贝会拷贝对象及其子元素。&lt;/p>
&lt;h5 id="知道可变对象和不可变对象吗">
&lt;a href="#%e7%9f%a5%e9%81%93%e5%8f%af%e5%8f%98%e5%af%b9%e8%b1%a1%e5%92%8c%e4%b8%8d%e5%8f%af%e5%8f%98%e5%af%b9%e8%b1%a1%e5%90%97" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
知道可变对象和不可变对象吗？
&lt;/h5>
&lt;p>这里我回答了知道，事实是我只是知道在函数使用传参的时候如果函数里修改了参数和的值可变对象的是在外部也会改变。(感觉很像作用域，那时候满脑子是set啥的。。。感觉左边变量右边一个值啥的都是对象，用久了都忘记还有int， string之类的类型了。)
可变对象有列表(list)和字典(dict)
不可变对象有数值类，字符串，元组（tuple)，集合(set)&lt;/p>
&lt;h5 id="迭代的几种方法">
&lt;a href="#%e8%bf%ad%e4%bb%a3%e7%9a%84%e5%87%a0%e7%a7%8d%e6%96%b9%e6%b3%95" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
迭代的几种方法
&lt;/h5>
&lt;p>这问题问得我一脸懵逼，我不知道问的是什么
开始我回答说不是for in么，还有个items方法。
后面考官解释了一下还是迷迷糊糊的，
类似for key, value in dict.items(): 这样？
但是还想问的是yield？&lt;/p>
&lt;h5 id="你了解元类吗">
&lt;a href="#%e4%bd%a0%e4%ba%86%e8%a7%a3%e5%85%83%e7%b1%bb%e5%90%97" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
你了解元类吗？
&lt;/h5>
&lt;p>直说了我不了解，接下来也没问了。
type,Python里类都是动态创建的，type()函数可以返回一个对象的类型，也可以创建一个新的类型。传入类名，继承的父类和方法名称和函数绑定&lt;/p>
&lt;h5 id="数据库底层是怎么实现的">
&lt;a href="#%e6%95%b0%e6%8d%ae%e5%ba%93%e5%ba%95%e5%b1%82%e6%98%af%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e7%9a%84" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
数据库底层是怎么实现的
&lt;/h5>
&lt;p>B树或B+树
二次提问知道B树或B+树是怎么样的吗就蔫了。
B树是一颗节点内可以拥有n个数据而拥有n+1个子女的树，其中子树下的元素会比父节点左边的元素大比右边的元素小。B树中所有叶节点都在同一层
B+树是B树的一个变种，其数据只存在叶节点中， 其他节点只是在搜索中用来指引到正确节点，相邻叶节点顺序链接&lt;/p>
&lt;h5 id="红黑树了解吗">
&lt;a href="#%e7%ba%a2%e9%bb%91%e6%a0%91%e4%ba%86%e8%a7%a3%e5%90%97" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
红黑树了解吗？
&lt;/h5>
&lt;p>在我回答不了解后考官说了红黑树是一颗自平衡的二叉查找树。
事后了解了一下，红黑树并不追求完全的平衡，但是在删除操作AVL需要旋转的量级为O(logN)，而红黑树至多需要三次操作就可以。所以统计性能要比AVL树要好。&lt;/p>
&lt;h5 id="说一下二叉树的遍历和三种遍历的优点">
&lt;a href="#%e8%af%b4%e4%b8%80%e4%b8%8b%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e9%81%8d%e5%8e%86%e5%92%8c%e4%b8%89%e7%a7%8d%e9%81%8d%e5%8e%86%e7%9a%84%e4%bc%98%e7%82%b9" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
说一下二叉树的遍历和三种遍历的优点
&lt;/h5>
&lt;p>但是只知道前序遍历，中序遍历，后序遍历。完全没想过他们之间有什么优点。
前序遍历在第一次遍历到节点时就执行操作，一般是想执行操作可选用。
中序遍历对与二分搜索树来说操作顺序符合从小到大（或从大到小）的顺序，遍历输出排序好的结果需要使用中序遍历。
后续遍历特点是执行操作时，肯定已经遍历过该节点的左右子节点，故适用于要进行破坏性操作的情况，比如删除所有节点。&lt;/p>
&lt;h5 id="了解restful吗谈一下你的看法">
&lt;a href="#%e4%ba%86%e8%a7%a3restful%e5%90%97%e8%b0%88%e4%b8%80%e4%b8%8b%e4%bd%a0%e7%9a%84%e7%9c%8b%e6%b3%95" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
了解RESTful吗？谈一下你的看法
&lt;/h5>
&lt;p>我说了用URL表示资源的地址，用HTTP方法表示对资源的操作，返回的状态表示操作的结果。&lt;/p>
&lt;h5 id="谈下你对单元测试的理解和看法">
&lt;a href="#%e8%b0%88%e4%b8%8b%e4%bd%a0%e5%af%b9%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95%e7%9a%84%e7%90%86%e8%a7%a3%e5%92%8c%e7%9c%8b%e6%b3%95" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
谈下你对单元测试的理解和看法
&lt;/h5>
&lt;p>我也就只说了单元测试对开发的方便，如果今后会修改一些代码也只需要跑一下测试。&lt;/p>
&lt;h5 id="知道设计模式吗">
&lt;a href="#%e7%9f%a5%e9%81%93%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e5%90%97" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
知道设计模式吗？
&lt;/h5>
&lt;p>坦白不怎么了解，虽然知道职务描述上写要知道设计模式，自己也看了一些，可是也没实际用过。不了解工程上的细节。。。&lt;/p>
&lt;p>最后才发现我即使是在一些开放性的问题上，谈的也很少，很多时候都是说到一般突然停下来，想很久。一般这个时候我都是在考虑用什么词描述比较好，可是这在对方看来就会很尴尬。。。今后或许在写代码的时候也应该使用小黄鸭调试法。尽量让自己的思路能够说出来。
后面考官了说了自己对面对对象那方面了解太少了，毕竟Python是门面对对象的语言。自己确实平常在码代码的时候不会特别注重这方面的东西。不管怎么说再接再厉吧。要不毕业后再试一下？&lt;/p></description></item><item><title>记录新发现的事物，高会中转站</title><link>https://malu.ome/post/%E8%AE%B0%E5%BD%95%E6%96%B0%E5%8F%91%E7%8E%B0%E7%9A%84%E4%BA%8B%E7%89%A9%E9%AB%98%E4%BC%9A%E4%B8%AD%E8%BD%AC%E7%AB%99/</link><pubDate>Thu, 01 Mar 2018 10:25:40 +0000</pubDate><guid>https://malu.ome/post/%E8%AE%B0%E5%BD%95%E6%96%B0%E5%8F%91%E7%8E%B0%E7%9A%84%E4%BA%8B%E7%89%A9%E9%AB%98%E4%BC%9A%E4%B8%AD%E8%BD%AC%E7%AB%99/</guid><description>
&lt;p>话说记一下今天发现很有趣的利益链条。
都说色情是互联网上最大的流量聚集地，在一些色情行业合法的国家会有一些专门的色情网站，比如pornhub 和xvideos。它们上面大部分视频是免费的，所以它们产生了互联网上大概百分之30的流量。这些视频网站当然还提供会员服务，会员可以不看烦人的广告，还可以看质量更高的自制剧。这也是网站的生存之道。&lt;/p>
&lt;p>在观看体验上pornhub之流一点也不输youtube，它们会贴心的给每段视频的进度打上标签，方便你直接进入正题。它们还根据用户在视频位置停留的时间标注“热度图”。
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/porn.png?x-oss-process=style/blog"
alt=""
/>
其中“热度图”高的地方便是人民群众比较喜欢的片段，方便你随时进入影片高潮。&lt;/p>
&lt;p>但是地球上还是有一些国家色情行业是不合法的，但是人民群众的需求你又不能消灭，所以一些利益链条就在地下蔓延开来。
在中文互联网上草榴算是中文色情信息的其中一个聚集地，在草榴论坛上会有专门的板块发布av视频的种子供人下载，其中论坛依据av视频种子发布地聚集了大量吃瓜群众，有了人就可以打广告。广告便是支撑论坛维护和背后运营人员的资本来源。广告的价格根据显示位置的不同而不同，首页头条一栏价格可在6w一个月，而一般这种网站首页的条幅广告可以占满满一屏。
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/ad.png?x-oss-process=style/blog"
alt=""
/>
(广告后面的菠菜网站的利益链条又是不同的一批人在做，不同的是菠菜网站是一波又一波的跑路，而论坛总是能接到不同的菠菜网站发布的广告）&lt;/p>
&lt;p>在论坛的利益链条下是发布种子的各种发布人员，有的发布人员是论坛自己用户自愿担任的，当然论坛会每个月象征性的给予论坛代币或者一些纪念勋章。这些发布人员获得的是论坛边缘的一些管理权限和一些“荣誉感”。
而另一些由真实利益驱动的发布人员可能在其版面发布自己的广告，可以在发布的种子里添加自己的广告文件。或者通过返利性质的网盘发布种子，在这个利益链条下，发布人员不过拾些论坛的残羹冷炙罢了。但是如果你掌握了大部分片源的发布，成为了一名有知名度的发布人，你甚至可以有一个自己的分区。之后你可以自己接广告，甚至可以在片源里添加水印，即使这样劣质的片还是会有一堆疯狂的流量。谁叫你是最大的发片组呢。&lt;/p>
&lt;p>互联网上如果有了流量那么在每个链条都会有利可图，其中一环是在下载方面花尽心思。在论坛的早期，会有一些发布人员吧种子上传到一些返利的网盘，网盘根据你上传的文件下载次数给你代币，你可以把代币换为现金。代价就是下载文件的人需要看一些广告或者网站种种限制并引诱用户开网盘的高级会员。当用户通过你的页面开通会员时你会获得一部份分成。
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/netdisc.png?x-oss-process=style/blog"
alt=""
/>
这部分的收入是十分可观的，相比在论坛上发布，自己在网盘上发布限制要小得多。以至于会有一些WordPress的站点专门发布番号信息再放上这些网盘的链接。例如在&lt;a href="https://jav.h-era.org/storage-policy.html">jav.h-era.org&lt;/a>网站的储存策略里就介绍了它们在网盘上储存了17TB的数据。并且它们会同时上传三个不同的网盘以防止个别分卷失效。
javlibrary网站也有人会在留言区发布各种网盘链接。&lt;/p>
&lt;p>但是市面上此类的网盘很多，不同的发布者可能会使用不同的网盘，个人不可能每个网盘都开个会员(此类网盘的会员可是非常非常贵）。于是这个利益链条上又产生了一个利益链条。高会中转站。&lt;/p>
&lt;p>高会中转站是一个由你提交网盘文件地址，之后网站使用高级会员账号高速下载后分享文件给你的网站服务，此类网站的原理大概是网站购买了大部分此类网盘网站的高级会员，用户购买高会中转站的流量，网站后台使用高级会员账号下载完成后提供给用户一个自己服务器上的地址给用户高速下载。这类相当于共享高级会员的网站当然是返利类网盘网站声明禁止的。不过怎么盈利就靠网站怎么逃避网盘网站的监管和营销了。&lt;/p>
&lt;p>国外的高会中转站&lt;a href="https://offcloud.com/?=5caf95ec">offcloud&lt;/a>据它们主页的数据它们至今储存了1.36PB的数据。它们的站点可以下载大部分收费网盘的资源，甚至还支持国内的百度网盘。还可以根据需求下载后由它们上传到google drive、onedrive等同步盘上去。至于收费大致就是按月10美元，按年5美元一个月。也大致就是一个vps的价格。
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/offcloud.png?x-oss-process=style/blog"
alt=""
/>
国内也有很多高会中转站，不过大多数都是二手贩子，网站做得也很简陋，但是国内这东西也刚刚传进来。之前大多数都是上某宝租个账号直接就开始下载，现在某宝严厉打击这类商品，以至于苹果礼品卡都不让出售了（说是有些礼品卡是用国外的黑卡刷出开的）。一切都才刚刚开始，&lt;/p></description></item><item><title>RSA加密</title><link>https://malu.ome/post/rsa%E5%8A%A0%E5%AF%86/</link><pubDate>Tue, 17 Oct 2017 18:18:55 +0000</pubDate><guid>https://malu.ome/post/rsa%E5%8A%A0%E5%AF%86/</guid><description>
&lt;p>2017年五月13日早些时候群里就流传了一些学校机房里的机器中了一种蠕虫病毒的图，那时候都是怀着一种调侃的心情看这些图，因为机房没法使用我们学生们就不用上一些实习了233。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E7%95%8C%E9%9D%A2.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>比这的更早些时候也有一些勒索程序，windows平台下的，也有&lt;a href="https://www.android.com/">Android&lt;/a>平台下的。不过他们更像是一些脚本小子是使用出售的模版改些东西就传播的东西，因为当时确实也因为各种勒索软件爆发论坛上有一些抱怨，互联网更深的地方还有人出售易语言勒索程序的模版。但是五月13日后画风就越来越不一样了。先是群里这种机房被感染的图片越来越多，它不是单独的一个勒索软件，他还是一个蠕虫病毒，他会自我复制传播感染其他机器，更要命的是他还利用了一个windows平台下的0DAY（&lt;a href="https://zh.wikipedia.org/wiki/%E6%B0%B8%E6%81%92%E4%B9%8B%E8%93%9D">永恒之蓝&lt;/a>）漏洞。。。&lt;/p>
&lt;p>五月12日晚微博上&lt;a href="https://zh.wikipedia.org/wiki/%E5%B1%B1%E4%B8%9C%E5%A4%A7%E5%AD%A6">山东大学&lt;/a>、&lt;a href="https://zh.wikipedia.org/wiki/%E5%8D%97%E6%98%8C%E5%A4%A7%E5%AD%A6">南昌大学&lt;/a>、&lt;a href="https://zh.wikipedia.org/wiki/%E5%B9%BF%E8%A5%BF%E5%B8%88%E8%8C%83%E5%A4%A7%E5%AD%A6">广西师范大学&lt;/a>、&lt;a href="https://zh.wikipedia.org/wiki/%E6%A1%82%E6%9E%97%E9%9B%BB%E5%AD%90%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%B8">桂林电子科技大学&lt;/a>、&lt;a href="https://zh.wikipedia.org/wiki/%E5%A4%A7%E8%BF%9E%E6%B5%B7%E4%BA%8B%E5%A4%A7%E5%AD%A6">大连海事大学&lt;/a>、&lt;a href="https://zh.wikipedia.org/wiki/%E4%B8%9C%E5%8C%97%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6">东北财经大学&lt;/a>等十几家高校发布通知，提醒师生注意防范。这个时候就能看出WannaCry这个蠕虫病毒开始搞大新闻了。除了教育网、校园网以外，&lt;a href="https://zh.wikipedia.org/wiki/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A">新浪微博&lt;/a>上不少用户反馈，北京、上海、江苏、天津等多地的出入境、派出所等公安网和政企专网也遭遇了病毒袭击，许多公安机关和政府部门由于勒索软件的影响被迫停止工作。&lt;a href="https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E5%9B%BD%E5%AE%B6%E4%BA%92%E8%81%94%E7%BD%91%E5%BA%94%E6%80%A5%E4%B8%AD%E5%BF%83">中国国家互联网应急中心&lt;/a>发布关于防范WannaCry的情况通报，称全球约101.1万个IP地址遭受“永恒之蓝”SMB漏洞攻击工具的攻击尝试，发起攻击尝试的IP地址数量9300余个。重要的是，英国的医院还被感染了。这下感觉彻底没救了，作者公布解密方案都没法挽回了。&lt;/p>
&lt;p>WannaCry会加密硬盘上的所有文件，它还会提示你，如果你想解密，需要给一个比特币地址支付比特币。那么它怎么确认是谁交了比特币呢？它得确保每个被感染的机器都有唯一的标识，不能用一个统一的比特币钱包地址，因为这样没法确认是谁交了比特币。WannaCry确实会通过tor网络给每一个感染机器分配一个比特币地址，这样作者只需要给检测单独比特币钱包是否有足够的比特币就可以给那些机器解密密钥。但是在中国的GFW是屏蔽了tor网络的。所以在中国地区感染的机器只会显示三个固定的比特币地址&lt;/p>
&lt;p>115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn&lt;/p>
&lt;p>12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw&lt;/p>
&lt;p>13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94&lt;/p>
&lt;p>所以中国地区被感染的机器想要解密是没门的，但是确实有不少人给上面那三个比特币地址支付比特币。不知道那些受害者在支付后石沉大海会是什么感觉。&lt;/p>
&lt;p>这时候我想到了那些交了钱的人拿到解密密钥后把密钥公布那样岂不是其他人就不用交钱了么？&lt;/p>
&lt;p>那如果交了比特币，作者会以什么样的方式给受害者解密呢我想。&lt;/p>
&lt;p>感染加密的时候使用对称加密，加密完上传加密密钥和机器号到作者服务器&lt;/p>
&lt;p>那么这样得确保被感染的机器能联网，而且windows默认是不给联网权限的，pass&lt;/p>
&lt;p>感染的时候使用随机的对称加密密钥，这样不会解密一个其他人都知道了密钥。&lt;/p>
&lt;p>但是这样你怎么知道随机生成的密钥是啥呢？发送给作者？不可能，默认是没联网权限的。pass&lt;/p>
&lt;p>使用不对称加密的其中一个密钥 加密 对称加密的 密钥！&lt;/p>
&lt;p>这样子就变成了加密的时候随机生成一个对称加密的密钥，加密本地的数据，加密完成后使用硬编码的不对称加密的其中一个密钥（这样子就成为公钥）加密对称加密的密钥。&lt;/p>
&lt;p>解密的时候就把被加密过后的密钥发送给作者，作者用自己的私钥解密后发给你。&lt;/p>
&lt;p>这里用到了不对称加密的一个特性，&lt;strong>用其中一个密钥加密的消息只能被另一个密钥解密&lt;/strong>。&lt;/p>
&lt;p>实际上WannaCry的加密过程会复杂点，WannaCry会本地生成一对RSA的一对密钥（我一直不明白这是为什么）。WannaCry 会给每个文件都单独生成一个AES的密钥加密后用本地生成的公钥加密，私钥由硬编码在程序里的另一对RSA密钥中的公钥加密（作者在他本地生成的RSA密钥对）实际上WannaCry是硬编码了主公钥，还有一对RSA密钥对，用作演示解密使用。。。（作者真贴心啊）
&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E6%B5%81%E7%A8%8B.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>暑假闲着没事，就尝试用java实现RSA密钥对的生成。&lt;/p>
&lt;p>按照wiki说明，得先选择两个大的质数p和q，生成N = pq。&lt;/p>
&lt;p>这里使用了java的BigInteger对象，BigInteger有probablePrime的方法可以直接生成指定的素数（java就是好，库各种齐全）&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java"> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">probablePrime&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">100&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Random&lt;/span>&lt;span class="o">());&lt;/span> &lt;span class="c1">// 取 2^100-1 范围内的随机素数
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">probablePrime&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">100&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Random&lt;/span>&lt;span class="o">());&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">N&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">);&lt;/span> &lt;span class="c1">// q * p
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接着求一个r，r = (p-1)(q-1)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">r&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">ONE&lt;/span>&lt;span class="o">).&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">ONE&lt;/span>&lt;span class="o">));&lt;/span>
&lt;span class="c1">//(q - 1)*(p - 1)
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>选择一个小于r的整数e，使e与r互质。&lt;/p>
&lt;p>这里理论上e是任何小于r且与r互质的整数，但是通常基于性能考虑会选择65537.&lt;/p>
&lt;blockquote>
&lt;p>openssl的低级版本一般会将e=3作为默认的RSA公钥指数。选取小公钥指数主要是为了提高加密或签名验证的性能，比如选e=3只需要2次模乘(ModMul)，而随机选择的e(假设n是1024-bit)则大概需要1000次模乘。NIST SP800-78 Rev 1 (2007) 曾强调“不允许使用比65537更低的公钥指数e”，但PKCS#1却从未有过类似的建议。e=65537=(2^16+1)，其签名/加密运算只需要17次模乘，性能也算不错。但我认为选这个值的目的只是一个介于小指数攻击和运算效率之间的一个折中考虑，即以防万一将来有一天&amp;quot;e=3&amp;quot;被攻破而侥幸&amp;quot;e=65537&amp;quot;可能还是安全的。&lt;/p>
&lt;p>（http://blog.csdn.net/hherima/article/details/52461759）&lt;/p>
&lt;/blockquote>
&lt;p>求得e关于r的模反元素，命名为d。&lt;/p>
&lt;p>使用扩展欧几里德算法可以求的d&lt;/p>
&lt;p>java里定义了静态变量用于exgcd使用，这里写得很不好看。。。或许还有更优雅的写法。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="kd">static&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">o&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">valueOf&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="o">),&lt;/span>&lt;span class="n">o1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">valueOf&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">1&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="nf">exgcd&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="o">){&lt;/span>
&lt;span class="k">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">compareTo&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">o&lt;/span>&lt;span class="o">)==&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="o">){&lt;/span>
&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">o1&lt;/span>&lt;span class="o">;&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">o&lt;/span>&lt;span class="o">;&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="o">}&lt;/span>&lt;span class="k">else&lt;/span>&lt;span class="o">{&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">exgcd&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">mod&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">));&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">divide&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">).&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="o">))&lt;/span> &lt;span class="o">;&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>这样，我们就完成了生成一对RSA密钥对的所有步骤，（N，e）是公钥，(N，d)是你的私钥。&lt;/p>
&lt;blockquote>
&lt;p>如果你使用随机生成的e，那么任意一个密钥都可以是公钥或私钥，但是工业界e是默认的65537，故(N,e)只能是公钥。&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;65535&amp;#34;&lt;/span>&lt;span class="o">);&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>使用公钥加密消息是，使用双方约定好的方式将消息转换成一段段小于N的且与N互质的整数n,则加密后的消息为&lt;img loading="lazy"
src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5c7221f755ee1dc5c37a0d3843763d300a47fd55"
alt="{\displaystyle c\equiv n^{e}{\pmod {N}}}"
/>。&lt;/p>
&lt;p>这里因为e是65537，本身就是一个素数。所以消息只需要切片成小于65537且不为1就可以了。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java"> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;65535&amp;#34;&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;n= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">c&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">modPow&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="o">);&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>解密消息可以用私钥d来解码，将接收的c通过以下公式转换为n：&lt;img loading="lazy"
src="https://wikimedia.org/api/rest_v1/media/math/render/svg/39e4d41353bed8f138cc9f567741051c544b7720"
alt=" c^d \equiv n\ (\mathrm{mod}\ N) "
/>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java"> &lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;c= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">c&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">nc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">c&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">modPow&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;nc= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">nc&lt;/span>&lt;span class="o">);&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>解码的原理是&lt;/p>
&lt;p>已知&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://wikimedia.org/api/rest_v1/media/math/render/svg/615bfc80513abf2a32d6c105b6b150c05773029b"
alt="{\displaystyle ed\equiv 1{\pmod {r}}}"
/>，即 &lt;img loading="lazy"
src="https://wikimedia.org/api/rest_v1/media/math/render/svg/64e2c5e70f23fe9595cf64923d3d190f7470fc08"
alt="{\displaystyle ed=1&amp;#43;h\varphi (N)}"
/>。 由&lt;a href="https://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86_(%E6%95%B0%E8%AE%BA)">欧拉定理&lt;/a>得：&lt;img loading="lazy"
src="https://wikimedia.org/api/rest_v1/media/math/render/svg/79569d77cd17c2c265be3b2980878a3a59aa1a7e"
alt="{\displaystyle n^{ed}=n^{1&amp;#43;h\varphi (N)}=n\left(n^{\varphi (N)}\right)^{h}\equiv n(1)^{h}{\pmod {N}}\equiv n{\pmod {N}}}"
/>&lt;/p>
&lt;p>RSA同样可以用来签名消息，只要拥有私钥的一方在消息后添加消息的散列值的加密信息，拥有公钥的一方接收到消息后可以用公钥解密散列值并于消息对比，如果消息的散列值与解密后的一致，则这个消息在传播路径上没有被篡改过。&lt;/p>
&lt;p>至此，RSA密钥的生成实验已经做完了，RSA的加密和签名的安全性是基于目前没有合适的算法，其复杂度增长超过目前计算机算力的增长。所以RSA的加密只要随着计算机升级增加密钥长度就可以了。可是当今计算机是怎么分发公钥的呢？说着说着感觉我知道我的下一篇应该写什么了。&lt;/p>
&lt;p>源代码：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="kn">package&lt;/span> &lt;span class="nn">math&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="kn">import&lt;/span> &lt;span class="nn">java.math.*&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="kn">import&lt;/span> &lt;span class="nn">java.util.Random&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="kd">public&lt;/span> &lt;span class="kd">class&lt;/span> &lt;span class="nc">Encode&lt;/span> &lt;span class="o">{&lt;/span>
&lt;span class="kd">static&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">o&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">valueOf&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="o">),&lt;/span>&lt;span class="n">o1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">valueOf&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">1&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">[]&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">)&lt;/span> &lt;span class="o">{&lt;/span>
&lt;span class="c1">// TODO 自动生成的方法存根
&lt;/span>&lt;span class="c1">&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">probablePrime&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">100&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Random&lt;/span>&lt;span class="o">());&lt;/span> &lt;span class="c1">// 取 2^100-1 范围内的随机素数
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">probablePrime&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">100&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Random&lt;/span>&lt;span class="o">());&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">N&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">);&lt;/span> &lt;span class="c1">// q * p
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">r&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">ONE&lt;/span>&lt;span class="o">).&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">ONE&lt;/span>&lt;span class="o">));&lt;/span> &lt;span class="c1">//(q - 1)*(p - 1)
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;q= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;p= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">p&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;N= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;r= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">e&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;65537&amp;#34;&lt;/span> &lt;span class="o">);&lt;/span>&lt;span class="c1">//new BigInteger(10,new Random());
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="c1">//while(r.gcd(e).equals(BigInteger.ONE)){
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="c1">//System.out.println(e);
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="c1">//e =new BigInteger(10,new Random());
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="c1">// }
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;e= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">exgcd&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">;&lt;/span>&lt;span class="c1">//new BigInteger(&amp;#34;2753&amp;#34; );
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;d= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="c1">//BigInteger n = BigInteger.probablePrime(11, new Random());
&lt;/span>&lt;span class="c1">&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">BigInteger&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;65535&amp;#34;&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;n= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">c&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">modPow&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;c= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">c&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">nc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">c&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">modPow&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="n">System&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s">&amp;#34;nc= &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">nc&lt;/span>&lt;span class="o">);&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">BigInteger&lt;/span> &lt;span class="nf">exgcd&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="o">){&lt;/span>
&lt;span class="k">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">compareTo&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">o&lt;/span>&lt;span class="o">)==&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="o">){&lt;/span>
&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">o1&lt;/span>&lt;span class="o">;&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">o&lt;/span>&lt;span class="o">;&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="o">}&lt;/span>&lt;span class="k">else&lt;/span>&lt;span class="o">{&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">exgcd&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">,&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">mod&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">));&lt;/span>
&lt;span class="n">BigInteger&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">subtract&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="na">divide&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="o">).&lt;/span>&lt;span class="na">multiply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="o">))&lt;/span> &lt;span class="o">;&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="o">;&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;span class="o">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>关于一些网站的传说</title><link>https://malu.ome/post/%E5%85%B3%E4%BA%8E%E4%B8%80%E4%BA%9B%E7%BD%91%E7%AB%99%E7%9A%84%E4%BC%A0%E8%AF%B4/</link><pubDate>Thu, 17 Aug 2017 12:10:59 +0000</pubDate><guid>https://malu.ome/post/%E5%85%B3%E4%BA%8E%E4%B8%80%E4%BA%9B%E7%BD%91%E7%AB%99%E7%9A%84%E4%BC%A0%E8%AF%B4/</guid><description>
&lt;p>昨天，作为最大的中文色情站点之一的草榴社区无法访问，一则关于草榴社区遭到攻击且数据尽数丢失的传言也于社交网络蔓延。尽管流量倾灌式的攻击仅会造成带宽上的压力，而不太可能直接摧毁物理层面的数据储存，但是显然，常识在刻奇面前不堪一击。在“1024”早已成为一个流行性的网络符号的时代，人们抢着献祭的，不仅是草榴社区本身，还有终将失去它的恐慌。&lt;/p>
&lt;p>其实，在这个严厉管制色情产业、并推行强烈的道德意志的国家，草榴社区的崛起和兴盛，及其大隐隐于市的经营模式，无不堪称奇迹。&lt;/p>
&lt;p>&lt;strong>色情经济的原罪&lt;/strong>&lt;/p>
&lt;p>人性如同弹簧，压得越紧，弹力越大。&lt;/p>
&lt;p>根据以色列一家市场调研公司Similar Web的报告显示，保守国家在对色情网站的人均访问数据要远高于开放国家，科威特、沙特阿拉伯、埃及等国家均名列前茅，美国、加拿大、荷兰等国家反而拖了后腿。&lt;/p>
&lt;p>这份榜单里并无中国的踪影，不过并不是中国足够“洁身自好”，而是统计样本皆为英文语种的色情网站，由于语言隔阂和教育程度，这些网站很难获得规模化的中国用户的访问。不过，如果将英文水准普遍较高的香港单独拿出来就会发现，这个弹丸之城在色情网站的人均浏览时长上在全球排到了第6位。&lt;/p>
&lt;p>周鸿祎曾分享过一个极具代表性的例子，他说曾有人将木马封包装进色情影片里进行传播，&lt;a href="http://tech.163.com/company/360/">360&lt;/a>在用户试图播放影片文件时弹出风险警告，但是大多数用户的选择都是关掉弹窗，“如果360再弹，就把360彻底的卸掉”。&lt;/p>
&lt;p>什么是刚需？这就是。&lt;/p>
&lt;p>改革开放以来，色情之于中国社会，有着解冻和非罪化的趋势，情趣用品等敏感产业也从遮掩走向坦然。但是，由于“扫黄打非”始终占据着行政意义上的制高点，“可以做爱，但是不许了解做爱”也成为了某种悖论。&lt;/p>
&lt;p>以现行法律而言，购买、下载和观看色情影片并不违法，但是只要涉及制作、运输、传播和租售行为，就属于触犯法律了，且量刑尺度极大。&lt;/p>
&lt;p>两个实际的案例，可以形象说明中国法律为色情所设立的边界：&lt;/p>
&lt;p>2002年，延安一对夫妻因在家里看“黄碟”而被当地警察刑拘一事，曾在社会舆论上引起极大争议，最后，公安机关正式道歉，并做出了赔偿。当时就有媒体称，如果按照是否观赏色情影片作为抓人的标准，恐怕中国剩不了多少清白之身的人口了。&lt;/p>
&lt;p>2013年，广州一名李姓男子在电脑摊位上以1元1部的价格售卖他个人收藏的色情影片，在刚刚获得5元“非法收益”之后就被警方抓获，最终法院以“复制、贩卖淫秽物品牟利罪、情节特别严重”将其判刑5年。&lt;/p>
&lt;p>因此，在尚未脱离原罪的色情领域，中国市场兼具高风险和低回报的不对等特性，以致于供需失衡。&lt;/p>
&lt;p>&lt;strong>草榴社区的上位&lt;/strong>&lt;/p>
&lt;p>就像上文所言，在一个将色情视为洪水猛兽的国家兜售相关内容，如同于沙漠中心贩卖水源，丝毫毋需担忧客群。饭岛爱、武藤兰、苍井空分别代表了碟片、ADSL和宽带三个时代，而P2P技术的空前发达，则使中国成为全球最大的色情影片消费国。&lt;/p>
&lt;p>早期的中文色情网站鱼龙混杂，挂羊头卖狗肉的采集模式层出不穷，用户点击一张又一张的图片，在一个又一个垃圾站之间来回跳转，就是无法抵达想要下载的文件，已是寻常之事。此时，只要小心不让&lt;a href="http://tech.163.com/company/google/">Google&lt;/a> Adsense等广告联盟“K站”，操控流量的站长利用色情内容日赚过万美金，并不算难。&lt;/p>
&lt;p>而在这样一个用户体验为负值、全赖原始荷尔蒙驱动的行业里，一旦出现超出及格线的行为，很快就会形成标杆效应。&lt;/p>
&lt;p>2004年注定是值得铭记的一年，在这一年，草榴社区、情色六月天、爱城、色中色、18P2P、九九情色先后成立。迄今，谁也无法解释为什么这些制定了“行业标准”的色情网站品牌为何集中于2004年爆发诞生，而它们的迥异命运，亦令人不胜唏嘘。&lt;/p>
&lt;p>换句话说，草榴社区的幸存和独大，恐怕也有着时运成分。&lt;/p>
&lt;p>2006年，拥有60万余注册用户的情色六月天被太原警方捣毁，由于使用境内银行卡收款，其站长坑了整个版主团队，案件也一度被广为宣传，体现扫黄成绩。&lt;/p>
&lt;p>在查处情色六月天的过程中，九九情色的“色情网站矩阵”被首度曝光，当时的资料显示，网名为“戏子”的一名华人以半投资半收购的方式，控制了高达48个中文色情站点。由于“戏子”身在美国，所以相当安全，但是用现在的话来讲，他是“不作就不会死”，躺着挣钱之余，竟然涉足儿童色情的内容，这在美国也属于犯罪范畴。2011年，中国公安部与美国警方协作，将“戏子”抓捕并引渡回国。&lt;/p>
&lt;p>2011年，色中色产生内部分裂，技术负责人与网站经营者“理念不合”，前者利用技术权限将网站数据拷贝另建新站，而后者在联合其他知名色情网站，对“叛徒”进行通缉，直到现在，若是下载当年的色情影片资源，仍然能够看到被装入文件中的控诉信件。&lt;/p>
&lt;p>2012年，新兴色情论坛MM公寓被定性为“特大淫秽色情网站”，超过两千名用户遭到抓捕，这种夸张的执法尺度一度遭到质疑，由于站长依然身在海外，办案人员甚至向其亲属施加压力，迫使关闭服务器。&lt;/p>
&lt;p>面对既是竞争对手又是同行伙伴的纷纷倒下，草榴社区的稳如磐石，更显珍贵。草榴社区明哲保身的一条重要原则是坚决不碰面向用户的经济账，据称业内有着“公开的秘密”，即监管部门会特别注意有着明显收费行为的色情网站，若是避开这道把柄，安全性会相对高很多。&lt;/p>
&lt;p>另外，草榴社区也拒绝身在中国境内的用户担任版主等职位，防止留下牵一发而动全身的创口。&lt;/p>
&lt;p>&lt;strong>并不复杂的产业&lt;/strong>&lt;/p>
&lt;p>尽管草榴社区几近一枝独秀的地位，但是从中国色情内容的产业链而言，草榴社区处在相当下游的位置。&lt;/p>
&lt;p>位于最上游的，是色情电影的购买者。一部新问世的日本AV，在DMM上通常会以1000-4000日元不等的价格售卖，就像任何盗版电影的流出过程一样，必须要有人掏出真金白银，购买获得影片文件。&lt;/p>
&lt;p>由于日本对于数字资产的保护措施十分严格，其AV生产商可以放心在DMM这样的线上渠道发行数字版的AV影片，日本国内也少有复刻行为。但是，这个规矩在中国人看来，并不值得遵守。&lt;/p>
&lt;p>DMM使用&lt;a href="http://tech.163.com/company/microsoft/">微软&lt;/a>媒体文件WMV格式的DRM版权手段防止购买者进行复制，但是，由于微软的更新漏洞，导致目前仍然有一些老旧电脑能够运行未更新DRM保护的WMV文件，完成破解。所以，中国的这批购买者通常会与色情网站合作，将购买所得的影片内销回来。&lt;/p>
&lt;p>很遗憾，松散管理的草榴社区并无力竞价这些稀缺资源，诸如上文提及的色中色以及从里面分裂出来的第一会所才是最大的买单者。这些网站设有发片员的角色，主要用于完成色情影片的压制、封装（通常会植入网站的推广文件）、发布和做种流程。&lt;/p>
&lt;p>接下来，是相当于义务工作者的转帖者，这些用户出于在其他网站赚取积分等动机，会迅速激活P2P所需要的各处网络节点，用互联网的术语来讲，就是“分发”，草榴社区就是一个举重若轻的分发渠道。&lt;/p>
&lt;p>最尾端的，也是最为大众的消费者，尽管他们（我们）没有付出任何钱物，但是就如互联网的经典商业模式一样，一切生产及流通成本最终都会转嫁到用户身上。&lt;/p>
&lt;p>2010年之后，许多“老资格”的发片员相继隐退，新一批发片员开始以团队组织运作，比较典型的是ID为“第六天魔王”的团队，他垄断了大量的热门片源——一般而言，如果某片源已被购买，其他发片员不会重复购买以避免浪费——进而在影片画面中加入网络赌场的水印广告，尽管引起用户的强烈抗议，却也取得了商业上的奇效。有消息称，由于影片传播人群足够广泛，“第六天魔王”所代理的网络赌场分账不菲，已让发片成为一门生意。&lt;/p>
&lt;p>同时，利用色情影片建立于刚性需求之上的特点，在用户与内容中间人为设置障碍、然后进行雁过拔毛式的碎片变现，也是当前色情内容产业链里的重要营生。&lt;/p>
&lt;p>比如，故意将帖子里的预览图片的尺寸缩小，引导用户“点击观看大图”，进而进入充满各种弹窗广告的图片托管代理站点，用户的每一次点击都会给作者增加CPC收入；&lt;/p>
&lt;p>比如，将种子上传到需要多次跳转的网盘里，并限制用户的下载间隔，无论用户是误点广告，还是在该网盘开通VIP账户，作者也都能够拿到佣金分成；&lt;/p>
&lt;p>再比如，伪造某些断档的番号，故意传播错误的种子，在里面留下付费购买的信息，借此点对点的吸引对该资源有着特定需求的少数用户。&lt;/p>
&lt;p>包括草榴社区在内的色情网站，对于这些产业链上游的单位急于变现的行为保持既不鼓励亦不反对的态度。毕竟，没有核心内容的持续供给，网站只是一个空空如也的坛子。某色情论坛曾经透露，一名发片员在一年时间里赚了数十万的美金，这位老兄感激网站对他的支持，转手给站方捐赠了五万美金，以示“君以国士待我，我必国士报之”的情谊。&lt;/p>
&lt;p>&lt;strong>杯弓蛇影的情绪&lt;/strong>&lt;/p>
&lt;p>&lt;a href="http://tech.163.com/company/kuaibo/">快播&lt;/a>的覆灭，是对中国网络色情文化的一次重大打击。&lt;/p>
&lt;p>快播在实质上并不主动提供色情内容，但是站长和用户的默契使用，使得快播被赋予了那些特殊情绪凝结而成的共性，当一个以快播播放器窗口为主体的网页被打开时，它也就象征了某种似由窃取而来的快感。&lt;/p>
&lt;p>草榴社区的现实处境，或与快播不可同日而语，但是就其文化的传承性而言，它们具有惊人的一致性。&lt;/p>
&lt;p>这次，人们之所以忧心忡忡的分享关于草榴社区可能永久关闭的伪劣传闻，委实是恐慌世间再无第二个草榴社区。我在微博上吐槽，称草榴社区的民间地位有点虚高，因为从功能性出发，只要掌握种子搜索引擎和番号索引数据库两类工具就能完全摆脱对于草榴社区等网站的内容依赖，但是很多慕名前来反驳我的“榴友”说得也理直气壮：在他们看来，草榴社区的价值在于其兼容并蓄的平等氛围，除了注册与非注册的区别，草榴社区的用户之间没有阶级，访问权限也趋于扁平化，近年以来，专注于自拍的版块“达盖尔的旗帜”和崇尚信息自由的“技术讨论区”起色极快，更是营造了乌托邦式的场景。&lt;/p>
&lt;p>谁也不曾料到，仅是因为站方心猿意马不太注重管理，这个色情BBS竟然在无意中承载了人们对于粗放型田园平台的全部要求：没有莫名其妙的删帖、没有脸红脖子粗的骂架、没有逼人弃坑的戾气、也没有阿谀奉承的水军。&lt;/p>
&lt;p>饱暖方思淫欲，而在淫欲之上，草榴社区偶然融合了关于表达、审美和避世等诉求，进而在中文互联网里树立出了一支独立品牌，如此究竟福兮祸兮，还很难说。但是，就像俄罗斯诗人马雅可夫斯基所说的那样——“我们感激灯塔，因为它为夜里难以出航的人，用火光照亮前路”——草榴社区的面前，注定泥泞坎坷，而在它的身后，是整整一代受到启蒙的互联网原住民。&lt;/p>
&lt;p>祝福草榴，祝福我们自己。&lt;/p>
&lt;p>&lt;strong>历史&lt;/strong>&lt;/p>
&lt;p>草榴社区创建于2006年，服务器在美国的科罗拉多州，时值中国曾经最大的色情论坛情色六月天东窗事发——其服务器虽然设在美国，但是论坛的主要管理员却都是不折不扣的中国人，又因内部斗争(主要为收入的分配)而造成不和，最后被山西省公安厅将部分论坛管理者抓获在案。草榴社区充分吸收了前辈失足的经验和教训，基本上不会设置太多的论坛管理者角色，即使需要存在的某些拥有管理权限的帐号，也都是不会在社区里发言和互动的(早期有过，但是后来就隐匿掉了)，这样就尽可能的避免了信息外泄或者产生纷争的风险。而草榴社区的实际控制者，都有着海外国籍，受到他国法律保护。&lt;/p>
&lt;p>　　因为目睹太多由利益而起的纠纷最终牵连网站的案例，加上草榴的主要创始人(几名美籍华人)家境尚好本就不算缺钱，所以并没有在盈利上花太大功夫。因为草榴社区一直是免费运营的政策——除了小范围内的展示型广告、网盘链接分成之外，都没有太多商业化的机制，这使得草榴社区的“名声”一直很好，一个不弹广告窗口、也不限定用户购买VIP方可浏览的色情论坛，怎么可能不受欢迎呢？2011年6月，草榴社区曾经尝试开放注册一天，结果一夜之内多了十三万新注册用户，管理方发现这样下去数据库会崩溃，于是就继续采用邀请注册的机制至今。&lt;/p>
&lt;p>　　但是草榴社区并非是中国色情网站行业的翘楚，它只是色情影片进行分销的一个主要渠道，更上游的，是那些收费运营、更加隐蔽的色情网站。借助P2P的共享模式，下载色情影片成为了中国网民接触色情信息的主流方式，而影片并非凭空出现的，它的片源在日本、欧美等国家以商品的形式存在，那么这中间就需要当地华人掏钱去将光碟购买下来，再将其转码成为网络流行的AVI或RMVB等文件格式，制作成种子之后上传到色情网站提供P2P下载，这些人属于“发片员”。“发片员”少数是义务性质，大多还是会从色情网站的运营方那里拿到费用补贴，而后者则利用他们带来的影片更新内容，吸引用户下载、传播、付费。而有些用户则以这些种子作为资源，将其分享到草榴社区等网站，造就了后者的繁荣。&lt;/p>
&lt;p>　　能力出众的“发片员”，甚至会在论坛里享有至高的特权，比如18P2P著名的“nike”(用户ID)，这是一名香港网友，本身从事的就是色情影片光碟租售业务(在香港合法)，因其能够以每天几十G的网络发片规模持续了好几年而闻名于世，在网络上一度有80%以上的日本有码片源都是出自他那里。18P2P对此贵客也是多方担待，明文告示任何人不得打扰nike，包括在其帖子下面回复攻击性言论、或是发送论坛短消息给他求片等，都会直接遭到封杀ID的处理。nike最终因为自己要结婚以及其最爱的AV女优松岛枫传出退役消息，而退出江湖，真正的“深藏功与名”，只留下传说。&lt;/p>
&lt;p>&lt;strong>关于DMM&lt;/strong>&lt;/p>
&lt;p>8年左右，dmm部分片商开始提供6000码率的720P和1080P的高清片源，发展到现在大部分片商都能提供HD版本，所以我们经常看到的高清片来源都是破解者从DMM下载，再解密DRM，所以我们才能有机会享有高清片子，但市面上流出的3000码率普清片子仍旧很少。&lt;/p>
&lt;p>2014年上半年，秋叶原在线，一个叫Yipman(叶问)的网友，开始在收费网盘大量发布破解dmm新片，此人的特点是，可以超越dmm配信日期提前发布新片，也就是说，dmm还没开始卖这部片子，结果叶问就已经把片源以mkv的格式发布到网上，据传闻叶问是利用dmm漏洞扫片，无需成本，也有人说他是dmm的内部工作人员，当然没有人去考证，不清楚他为何要发布有损的mkv格式而不是原档的无损wmv格式，毕竟14年下半年，解密drm就已经不是秘密。他最后一次发片是6.25日，然后就不告而别，从此下落不明，网上所有的mkv源头都是叶问，坚持了一年多大量发片，要不是这次微软突如其来的政策，叶问应该肯定还会继续发片，可以说是个传奇人物。&lt;/p>
&lt;p>因为，dmm原先的服务器是windowserver 2003，微软在7月14号停止支持window server 2003， 所以dmm今年四月份左右发公告说将在6.30号以后配合微软升级改版，630以后 ，改用新加密手段，只能有dmm专属播放器dmm player才能播放，新加密手段听说是用微软的128位加密，至今没有人成功破解出这个解密，至少在可预见的时间内是看不到希望。&lt;/p>
&lt;p>6月初，sokmil开始启用新加密。&lt;/p>
&lt;p>7月4号，dmm新片开始启用新加密，所有7月4号以后所有的新片都只能转录。&lt;/p>
&lt;p>7月14号，dmm月额旧片服务器也开始启用新加密，所有dmm电影都无法破解，所以dmm的旧片也只能转录，。&lt;/p>
&lt;p>因此mkv的源头，叶问没办法继续发mkv，包括其他破解者，叶问现在消失了， 自然mkv也没有了。&lt;/p>
&lt;p>如今我们还能看到破解DMM加密租售做代沟的一些人，可是发片已经成为一门生意，破解，高清什么的在金钱面前果然还是澳门大赌场好。&lt;/p>
&lt;p>&lt;strong>关于第六天大魔王&lt;/strong>&lt;/p>
&lt;p>2014年DMM更新了加密方式，各大站都没能力提供大量优质的片源了&lt;/p>
&lt;p>然后第六天大魔王开始垄断片源并加上了广告&lt;/p>
&lt;p>那时候片源还只能是屏幕录像的方式，所以片源很不好&lt;/p>
&lt;p>但是后期好像也自暴自弃了，&lt;/p>
&lt;p>但是现在明明又可以破解了，但是这已经是一门生意了。&lt;/p>
&lt;p>赌场给利润的百分之40.，，，谁和钱过不去啊&lt;/p>
&lt;p>话说大魔王的用户名搜索一阵&lt;/p>
&lt;p>我发现在网易云音乐上有一个注册帐号&lt;/p>
&lt;p>关注着发姐。。。&lt;/p>
&lt;p>天涯同名的帐号发过两贴&lt;/p>
&lt;p>在无锡的的分区下说是学电气自动化，经常回帖的样子.……现在倒是不玩了&lt;/p>
&lt;p>估计有正经工作了吧&lt;/p></description></item><item><title>最近关于大规模下架vpn业务一事有感</title><link>https://malu.ome/post/%E6%9C%80%E8%BF%91%E5%85%B3%E4%BA%8E%E5%A4%A7%E8%A7%84%E6%A8%A1%E4%B8%8B%E6%9E%B6vpn%E4%B8%9A%E5%8A%A1%E4%B8%80%E4%BA%8B%E6%9C%89%E6%84%9F/</link><pubDate>Thu, 20 Jul 2017 20:39:30 +0000</pubDate><guid>https://malu.ome/post/%E6%9C%80%E8%BF%91%E5%85%B3%E4%BA%8E%E5%A4%A7%E8%A7%84%E6%A8%A1%E4%B8%8B%E6%9E%B6vpn%E4%B8%9A%E5%8A%A1%E4%B8%80%E4%BA%8B%E6%9C%89%E6%84%9F/</guid><description>
&lt;p>起初是工信部发文&lt;a href="http://www.miit.gov.cn/n1146295/n1652858/n1652930/n3757020/c5471946/content.html">**工信部信管函[2017]32号**&lt;/a>说规范VPN市场得审批合格的企业才能售卖VPN。这直接就打死了把VPN用于翻墙目的商家(国内卖翻墙VPN的感觉还是在偷偷摸摸的于是这里就不用企业来称呼了。。。感觉很尴尬)。&lt;/p>
&lt;p>然后真正爆发的是国内的一个服务商&lt;a href="https://www.greenjsq.me/">Green&lt;/a>宣布六月二十二号宣布将于七月一日将终止服务，相继有几家提供VPN的服务商也宣布终止服务，这时候我们终于意识我们所做的不过是透过那一只手的手缝偷偷看这大千世界，当他不开心稍微握紧一些我们终会和大部分人一样。&lt;/p>
&lt;p>VPN业务的受尽让如今受众更广大的ShadowSocks群众开始慌张了，我们做的事不也一样啊！开始有一些消息传出说防火长城能够识别ss协议，将于明年开始部署等等的消息。&lt;a href="https://github.com/breakwa11/shadowsocks-rss">SSR&lt;/a>起初的维护者&lt;a href="https://github.com/breakwa11">breakwa11&lt;/a>也说深圳能够精确识别并开始请人喝茶了（不过似乎很多人并不喜欢breakwa11因为她开始并不遵守GPL协议，&lt;a href="https://github.com/shadowsocks/shadowsocks-windows/issues/293#issuecomment-132253168">有些人&lt;/a>声讨她开源后面她生气了开源就维护了。。。不过毕竟人家还是经济学半路出家的女程序员，很是惭愧）。&lt;/p>
&lt;p>在看breakwa11之前关于墙主动探测SS服务器的&lt;a href="https://github.com/breakwa11/shadowsocks-rss/issues/38">讨论&lt;/a>中breakwa11说当前的SS可能会被墙主动探测，并提出了改进。并且着实给出了一个python实现的ss服务检测脚本！！！（事实证明确实可以。。。）&lt;/p>
&lt;p>然而试试证明正态分布在哪都是起作用的，那个讨论帖一开始就没往技术方面讨论。。。而是牵扯到breakwa11的代码水平(但是这是个开源平台啊，自己fork过去重写啊，为啥抱怨啊？)和GPL协议。。。在吵吵嚷嚷了一阵后几位对密码学了解的人参与到了讨论中才开始了实现方式的讨论。不过途中也有一些人乱入，不知道为什么牵扯到对加密过程安全性的打包票证明的人，但是这并不是针对加密的攻击而是服务器行为的检测啊？反正后面就是很尴尬的场面，自己努力画的图证明自己论点还成为自己没读题并且没实现过过程的深刻证据。。。最后也还是承认自己理解有问题，还是很和谐的。&lt;/p>
&lt;p>不过说起来ss的原作者&lt;a href="https://github.com/clowwindy">clowwindy&lt;/a>似乎就是想让大家自己写自己的加密解密，但是他低估了人的惰性。。。现在他的&lt;a href="https://twitter.com/clowwindy">推&lt;/a>上还能看到一些关于人性哲学的感慨啥的。&lt;/p></description></item><item><title>flask后端</title><link>https://malu.ome/post/flask%E5%90%8E%E7%AB%AF/</link><pubDate>Sat, 01 Jul 2017 19:23:35 +0000</pubDate><guid>https://malu.ome/post/flask%E5%90%8E%E7%AB%AF/</guid><description>
&lt;p>闲着无事便想着把之前没做的做完，我呈想过独立实现一个个人博客的前端后端，现在准备开始写。之前我曾经用Django写过两天，但是后面因为自己懒加上还有课程实习各种实习就搁置了。。。ORZ&lt;/p>
&lt;p>粗略看了一下flask发现是py的一个后端框架，正好对py兴趣正浓便用上了。这次打算重头造一次轮子，把过程弄清楚咯&lt;/p>
&lt;p>我想先把登录的后端验证写了，我对这方面很感兴趣。看了一下HTTP是无状态协议，每次请求是不知道你现在的权限的，但是我又不能每个页面操作都输入一次密码，所以得借助一些东西帮助服务端验证你的身份。那么我能想到的便是使用本地储存的cookie了，每次访问需要权限的页面把cookie发送给服务器验证，相当于自动验证密码不用手动输入了。&lt;/p>
&lt;p>我先尝试使用cookie做验证然后太讨论安全问题。&lt;/p>
&lt;p>中途出去了以下，妈个鸡的放假了校园还是那么多情侣。走到哪个幽暗角落都有抱在一起的情侣，贼尴尬。&lt;/p>
&lt;p>突然失去了梦想，想做一条咸鱼。&lt;/p></description></item><item><title>acr122</title><link>https://malu.ome/post/acr122/</link><pubDate>Mon, 19 Jun 2017 22:10:38 +0000</pubDate><guid>https://malu.ome/post/acr122/</guid><description>
&lt;p>话说之前看到有人破解水卡手里就痒痒,于是在淘宝买了个ACR122.今天中午快递到了,下午才和京东的快递一起拿.回来试了一下,水卡读不出来,店家说是屏蔽卡&amp;hellip;.&lt;/p>
&lt;p>我也不知道是什么,搜索读出来的内容发现吾爱破解论坛说是屏蔽了效验位.很麻烦,也不知道怎么弄.&lt;/p>
&lt;p>随手那饭卡试了一下,破解成功.写入没问题,拿下楼刷了门禁,开了.但是我肯定是不敢拿去刷钱的,饭卡里金额肯定是存在数据库里的.如果卡里也有修改也没用,和数据库校对不上肯定得去喝茶了.话说卡里没有的话复制别人的卡岂不也是很危险?所以一般都是卡里的金额和数据库金额效验把?&lt;/p>
&lt;p>复制修改不了也没啥意思.退货了&amp;hellip;&lt;/p></description></item><item><title>东湖绿道</title><link>https://malu.ome/post/%E4%B8%9C%E6%B9%96%E7%BB%BF%E9%81%93/</link><pubDate>Sun, 18 Jun 2017 22:38:25 +0000</pubDate><guid>https://malu.ome/post/%E4%B8%9C%E6%B9%96%E7%BB%BF%E9%81%93/</guid><description>
&lt;p>闲着无事便想去去东湖绿道看看,看看路过几次但是一只没机会走上去的东湖凌波栈道.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E5%87%8C%E6%B3%A2%E6%A0%88%E9%81%93.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>下午三点半出的门,太阳烈得不行.看到有不少人都拿被子出来晒,还看到了几个被妹子捆绑着的玩偶.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E7%8E%A9%E5%81%B6.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>在等车的时候看见一妹子穿着韩服,跟着我上了同一班公交车(401,4字头是武汉的旅游路线.)&lt;/p>
&lt;p>磨山附近和上次去有了很大的不同,现在到处是共享单车.但是还是有人在共享单车旁做租车的生意,不知道能有什么竞争力.而且20块钱一个小时还要押金&amp;hellip;&lt;/p>
&lt;p>东湖402线路好像已经不开了吧,毕竟东湖绿道已经被共享单车占领了,当初被誉为武汉最美的公交路线确实名副其实.&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E7%BB%BF%E9%81%931.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E7%BB%BF%E9%81%932.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E7%BB%BF%E9%81%933.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>我开始不好意思开共享单车&amp;hellip;毕竟才刚刚学会.后面实在走不动了,附近开了下有没有ofo,就注册了摩拜还交了299的押金.踩的还是第一代人工发电的车.真的很重,知道为什么V2EX上一堆吐槽摩拜的了.下次试试他家新的车子(话说有些家长把孩子放在车筐里,路上我停车从后面过我还差点撞到,那母亲吓得不行,我也吓的不行&amp;hellip;.)&lt;/p>
&lt;p>我绕了一圈后到了东湖的桥那便不骑了,刚刚会老是扭车头,桥上人多路挤怕撞到人(下次买个保险再上路)&lt;/p>
&lt;p>停车买了一瓶农夫山泉,很喜欢它的瓶身插画和他的设计啊.感觉农夫山泉简直是现在饮料界的一朵奇葩,但是文艺感满满&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E5%86%9C%E5%A4%AB%E5%B1%B1%E6%B3%89.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>(农夫山泉还做了国内第一款原味茶饮料,销售不咋的但是还是坚持保留了,听说只是看到日本原味茶饮料的市场份额提前占领国内市场233.它母公司还是养生堂,搞保健品的,但是子公司这这波我还是支持的)&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E6%A1%A51.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E6%A1%A52.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%9C%E6%B9%96%E6%A1%A53.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>我过桥便走到八一路回学校了,路上开了一辆小黄车,那感觉真的好.踩上嗖嗖的,妈个鸡的摩拜就像我是人肉发电机一样.再也不想踩一代摩拜了.&lt;/p></description></item><item><title>“在github上搭建静态博客”</title><link>https://malu.ome/post/%E5%9C%A8github%E4%B8%8A%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2/</link><pubDate>Sun, 04 Jun 2017 17:55:30 +0000</pubDate><guid>https://malu.ome/post/%E5%9C%A8github%E4%B8%8A%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2/</guid><description>
&lt;p>GitHub 是一个通过 Git 进行版本控制的代码托管平台，它提供一个二级域名解析其域名下仓库的master分支下的html页面。那么我们就可以通过这个服务假设一个自己的博客。&lt;/p>
&lt;p>但是自己写 html 无疑是重复照轮子，而且自己诚实的来讲，实在是懒。而且人家写的脚本生成出来的页面设计好看得多嘛。于是我这里使用 hexo 框架生成静态的博客页面，当然也有其他的框架比如 jekyll。这里使用hexo纯粹就是我个人选择问题了。&lt;/p>
&lt;p>首先你得注册一个 github 的帐号，这里默认你已经有github账号了。然后申请一个名字为 user.github.io （user为你的用户名）的仓库，访问 user.github.io 会默认解析你master分支下的index.html页面。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E4%B8%BB%E9%A1%B5.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>安装 hexo， hexo 是用node编写的，所以你得安装node环境。&lt;/p>
&lt;p>下载Node.js安装文件：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://nodejs.org/dist/v4.2.3/node-v4.2.3-x86.msi">Windows Installer 32-bit&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://nodejs.org/dist/v4.2.3/node-v4.2.3-x64.msi">Windows Installer 64-bit&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>下载Git安装文件：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/git-for-windows/git/releases/download/v2.6.3.windows.1/Git-2.6.3-64-bit.exe">Git-2.6.3-64-bit.exe&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>必要的环境安装完成后就可以安装hexo了。在命令行下进入你需要安装的目录然后&lt;/p>
&lt;p>在命令行中输入：&lt;/p>
&lt;pre>&lt;code>npm install hexo-cli -g
&lt;/code>&lt;/pre>&lt;p>然后你将会看到:&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/npm-install-hexo-cli.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>可能你会看到一个&lt;code>WARN&lt;/code>，但是不用担心，这不会影响你的正常使用。 然后输入&lt;/p>
&lt;pre>&lt;code>npm install hexo --save
&lt;/code>&lt;/pre>&lt;p>然后你会看到命令行窗口刷了一大堆白字，下面我们来看一看Hexo是不是已经安装好了。 在命令行中输入：&lt;/p>
&lt;pre>&lt;code>hexo -v
&lt;/code>&lt;/pre>&lt;p>如果你看到了如图文字，则说明已经安装成功了。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/hexo-v.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;h2 id="初始化hexo">
&lt;a href="#%e5%88%9d%e5%a7%8b%e5%8c%96hexo" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
初始化Hexo
&lt;/h2>
&lt;p>接着上面的操作，输入：&lt;/p>
&lt;pre>&lt;code>hexo init
&lt;/code>&lt;/pre>&lt;p>然后输入：&lt;/p>
&lt;pre>&lt;code>npm install
&lt;/code>&lt;/pre>&lt;p>之后npm将会自动安装你需要的组件，只需要等待npm操作即可。&lt;/p>
&lt;h2 id="首次体验hexo">
&lt;a href="#%e9%a6%96%e6%ac%a1%e4%bd%93%e9%aa%8chexo" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
首次体验Hexo
&lt;/h2>
&lt;p>继续操作，同样是在命令行中，输入：&lt;/p>
&lt;pre>&lt;code>hexo g
&lt;/code>&lt;/pre>&lt;p>然后输入：&lt;/p>
&lt;pre>&lt;code>hexo s
&lt;/code>&lt;/pre>&lt;p>然后会提示：&lt;/p>
&lt;pre>&lt;code>INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.
&lt;/code>&lt;/pre>&lt;p>在浏览器中打开&lt;code>http://localhost:4000/&lt;/code>，你将会看到：&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/hexo-first-time.png?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;p>到目前为止，Hexo在本地的配置已经全都结束了。&lt;/p>
&lt;h2 id="修改全局配置文件">
&lt;a href="#%e4%bf%ae%e6%94%b9%e5%85%a8%e5%b1%80%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
修改全局配置文件
&lt;/h2>
&lt;p>&lt;em>此段落引用自Hexo官方文档&lt;/em>&lt;/p>
&lt;p>您可以在 &lt;code>_config.yml&lt;/code> 中修改大部份的配置。&lt;/p>
&lt;h3 id="网站">
&lt;a href="#%e7%bd%91%e7%ab%99" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
网站
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>title&lt;/code>&lt;/td>
&lt;td>网站标题&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>subtitle&lt;/code>&lt;/td>
&lt;td>网站副标题&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>description&lt;/code>&lt;/td>
&lt;td>网站描述&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>author&lt;/code>&lt;/td>
&lt;td>您的名字&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>language&lt;/code>&lt;/td>
&lt;td>网站使用的语言&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>timezone&lt;/code>&lt;/td>
&lt;td>网站时区。Hexo 默认使用您电脑的时区。&lt;a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">时区列表&lt;/a>。比如说：&lt;code>America/New_York&lt;/code>, &lt;code>Japan&lt;/code>, 和 &lt;code>UTC&lt;/code> 。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="网址">
&lt;a href="#%e7%bd%91%e5%9d%80" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
网址
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>url&lt;/code>&lt;/td>
&lt;td>网址&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>root&lt;/code>&lt;/td>
&lt;td>网站根目录&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>permalink&lt;/code>&lt;/td>
&lt;td>文章的 &lt;a href="https://xuanwo.org/2015/03/26/hexo-intor/permalinks.html">永久链接&lt;/a> 格式&lt;/td>
&lt;td>&lt;code>:year/:month/:day/:title/&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>permalink_default&lt;/code>&lt;/td>
&lt;td>永久链接中各部分的默认值&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>如果您的网站存放在子目录中，例如 &lt;code>http://yoursite.com/blog&lt;/code>，则请将您的 &lt;code>url&lt;/code> 设为 &lt;code>http://yoursite.com/blog&lt;/code> 并把 &lt;code>root&lt;/code> 设为 &lt;code>/blog/&lt;/code>。&lt;/p>
&lt;/blockquote>
&lt;h3 id="目录">
&lt;a href="#%e7%9b%ae%e5%bd%95" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
目录
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>source_dir&lt;/code>&lt;/td>
&lt;td>资源文件夹，这个文件夹用来存放内容。&lt;/td>
&lt;td>&lt;code>source&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>public_dir&lt;/code>&lt;/td>
&lt;td>公共文件夹，这个文件夹用于存放生成的站点文件。&lt;/td>
&lt;td>&lt;code>public&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tag_dir&lt;/code>&lt;/td>
&lt;td>标签文件夹&lt;/td>
&lt;td>&lt;code>tags&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>archive_dir&lt;/code>&lt;/td>
&lt;td>归档文件夹&lt;/td>
&lt;td>&lt;code>archives&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>category_dir&lt;/code>&lt;/td>
&lt;td>分类文件夹&lt;/td>
&lt;td>&lt;code>categories&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>code_dir&lt;/code>&lt;/td>
&lt;td>Include code 文件夹&lt;/td>
&lt;td>`downloads/code |&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>i18n_dir&lt;/code>&lt;/td>
&lt;td>国际化（i18n）文件夹&lt;/td>
&lt;td>&lt;code>:lang&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>skip_render&lt;/code>&lt;/td>
&lt;td>跳过指定文件的渲染，您可使用 &lt;a href="https://github.com/isaacs/node-glob">glob 表达式&lt;/a>来匹配路径。&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="文章">
&lt;a href="#%e6%96%87%e7%ab%a0" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
文章
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>new_post_name&lt;/code>&lt;/td>
&lt;td>新文章的文件名称&lt;/td>
&lt;td>:title.md&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>default_layout&lt;/code>&lt;/td>
&lt;td>预设布局&lt;/td>
&lt;td>post&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>auto_spacing&lt;/code>&lt;/td>
&lt;td>在中文和英文之间加入空格&lt;/td>
&lt;td>false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>titlecase&lt;/code>&lt;/td>
&lt;td>把标题转换为 title case&lt;/td>
&lt;td>false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>external_link&lt;/code>&lt;/td>
&lt;td>在新标签中打开链接&lt;/td>
&lt;td>true&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>filename_case&lt;/code>&lt;/td>
&lt;td>把文件名称转换为 (1) 小写或 (2) 大写&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>render_drafts&lt;/code>&lt;/td>
&lt;td>显示草稿&lt;/td>
&lt;td>false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>post_asset_folder&lt;/code>&lt;/td>
&lt;td>启动 &lt;a href="https://xuanwo.org/2015/03/26/hexo-intor/asset-folders.html">Asset 文件夹&lt;/a>&lt;/td>
&lt;td>false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>relative_link&lt;/code>&lt;/td>
&lt;td>把链接改为与根目录的相对位址&lt;/td>
&lt;td>false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>future&lt;/code>&lt;/td>
&lt;td>显示未来的文章&lt;/td>
&lt;td>true&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>highlight&lt;/code>&lt;/td>
&lt;td>代码块的设置&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="分类--标签">
&lt;a href="#%e5%88%86%e7%b1%bb--%e6%a0%87%e7%ad%be" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
分类 &amp;amp; 标签
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>default_category&lt;/code>&lt;/td>
&lt;td>默认分类&lt;/td>
&lt;td>&lt;code>uncategorized&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>category_map&lt;/code>&lt;/td>
&lt;td>分类别名&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tag_map&lt;/code>&lt;/td>
&lt;td>标签别名&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="日期--时间格式">
&lt;a href="#%e6%97%a5%e6%9c%9f--%e6%97%b6%e9%97%b4%e6%a0%bc%e5%bc%8f" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
日期 / 时间格式
&lt;/h3>
&lt;p>Hexo 使用 &lt;a href="http://momentjs.com/">Moment.js&lt;/a> 来解析和显示时间。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>date_format&lt;/code>&lt;/td>
&lt;td>日期格式&lt;/td>
&lt;td>&lt;code>MMM D YYYY&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>time_format&lt;/code>&lt;/td>
&lt;td>时间格式&lt;/td>
&lt;td>&lt;code>H:mm:ss&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="分页">
&lt;a href="#%e5%88%86%e9%a1%b5" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
分页
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>per_page&lt;/code>&lt;/td>
&lt;td>每页显示的文章量 (0 = 关闭分页功能)&lt;/td>
&lt;td>&lt;code>10&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pagination_dir&lt;/code>&lt;/td>
&lt;td>分页目录&lt;/td>
&lt;td>&lt;code>page&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="扩展">
&lt;a href="#%e6%89%a9%e5%b1%95" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
扩展
&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>theme&lt;/code>&lt;/td>
&lt;td>当前主题名称。值为&lt;code>false&lt;/code>时禁用主题&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>deploy&lt;/code>&lt;/td>
&lt;td>部署部分的设置&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="配置deployment">
&lt;a href="#%e9%85%8d%e7%bd%aedeployment" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
配置Deployment
&lt;/h2>
&lt;p>首先，你需要为自己配置身份信息，打开命令行，然后输入：&lt;/p>
&lt;pre>&lt;code>git config --global user.name &amp;quot;yourname&amp;quot;
git config --global user.email &amp;quot;youremail&amp;quot;
&lt;/code>&lt;/pre>&lt;p>同样在&lt;code>_config.yml&lt;/code>文件中，找到&lt;code>Deployment&lt;/code>，然后按照如下修改：&lt;/p>
&lt;pre>&lt;code>deploy:
type: git
repo: git@github.com:yourname/yourname.github.io.git
branch: master
&lt;/code>&lt;/pre>&lt;blockquote>
&lt;p>如果使用git方式进行部署，执行&lt;code>npm install hexo-deployer-git --save&lt;/code>来安装所需的插件&lt;/p>
&lt;/blockquote>
&lt;p>然后在当前目录打开命令行，输入：&lt;/p>
&lt;pre>&lt;code>hexo d
&lt;/code>&lt;/pre>&lt;p>随后按照提示，分别输入自己的Github账号用户名和密码，开始上传。 然后通过http://yourname.github.io/来访问自己刚刚上传的网站。&lt;/p>
&lt;h2 id="添加新文章">
&lt;a href="#%e6%b7%bb%e5%8a%a0%e6%96%b0%e6%96%87%e7%ab%a0" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
添加新文章
&lt;/h2>
&lt;p>打开Hexo目录下的&lt;code>source&lt;/code>文件夹，所有的文章都会以md形式保存在&lt;code>_post&lt;/code>文件夹中，只要在&lt;code>_post&lt;/code>文件夹中新建md类型的文档，就能在执行&lt;code>hexo g&lt;/code>的时候被渲染。 新建的文章头需要添加一些yml信息，如下所示：&lt;/p>
&lt;pre>&lt;code>---
title: hello-world //在此处添加你的标题。
date: 2014-11-7 08:55:29 //在此处输入你编辑这篇文章的时间。
categories: Exercise //在此处输入这篇文章的分类。
toc: true //在此处设定是否开启目录，需要主题支持。
---
&lt;/code>&lt;/pre>&lt;h1 id="进阶">
&lt;a href="#%e8%bf%9b%e9%98%b6" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
进阶
&lt;/h1>
&lt;p>如果成功完成了上述的全部步骤，恭喜你，你已经搭建了一个最为简单且基础的博客。但是这个博客还非常简单， 没有个人的定制，操作也比较复杂，下面的进阶技巧将会让你获得对Hexo更为深入的了解。&lt;/p>
&lt;h2 id="更换主题">
&lt;a href="#%e6%9b%b4%e6%8d%a2%e4%b8%bb%e9%a2%98" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
更换主题
&lt;/h2>
&lt;p>&lt;em>可以在此处寻找自己喜欢的主题&lt;/em> 下载所有的主题文件，保存到Hexo目录下的&lt;code>themes&lt;/code>文件夹下。然后在&lt;code>_config.yml&lt;/code>文件中修改：&lt;/p>
&lt;pre>&lt;code># Extensions
## Plugins: http://hexo.io/plugins/
## Themes: http://hexo.io/themes/
theme: landscape //themes文件夹中对应文件夹的名称
&lt;/code>&lt;/pre>&lt;p>然后先执行&lt;code>hexo clean&lt;/code>，然后重新&lt;code>hexo g&lt;/code>，并且&lt;code>hexo d&lt;/code>，很快就能看到新主题的效果了~&lt;/p>
&lt;h2 id="更换域名">
&lt;a href="#%e6%9b%b4%e6%8d%a2%e5%9f%9f%e5%90%8d" class="anchor">
&lt;svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16">
&lt;path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z">
&lt;/path>
&lt;/svg>
&lt;/a>
更换域名
&lt;/h2>
&lt;p>首先，需要注册一个域名。在中国的话，&lt;code>.cn&lt;/code>全都需要进行备案，如果不想备案的话，请注册别的顶级域名，可以使用&lt;a href="https://www.godaddy.com/">godaddy&lt;/a>或&lt;a href="http://www.xinnet.com/">新网&lt;/a>或&lt;a href="http://www.xinnet.com/">万网&lt;/a>中的任意一家，自己权衡价格即可。&lt;/p>
&lt;p>这里我是从是主机壳买的域名，主要这里卖moe的域名而已。在域名DNS解析管理里把CNAME类型的解析值映射到你的GitHub.io就行。&lt;/p>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/DNS%E8%A7%A3%E6%9E%90.png?x-oss-process=style/blog"
alt=""
/>&lt;/p></description></item><item><title>英才工程</title><link>https://malu.ome/post/%E8%8B%B1%E6%89%8D%E5%B7%A5%E7%A8%8B/</link><pubDate>Sun, 04 Jun 2017 17:30:40 +0000</pubDate><guid>https://malu.ome/post/%E8%8B%B1%E6%89%8D%E5%B7%A5%E7%A8%8B/</guid><description>
&lt;p>最近英才工程要验收了，好紧张啊。&lt;/p>
&lt;p>话说我尝试过 wordpress 但是感觉那太麻烦了，而且很多人用我不想时不时的爆bug打我的vps。毕竟我平时也不怎么更新这玩意。&lt;/p>
&lt;p>于是我转到了 github 上来，这是用 github 提供的一个服务你可以上传一个库而 github 提供一个二级域名访问你master下的主页文件。相当于把 github 的库当成一个网络空间，并且提供web服务就是了。&lt;/p>
&lt;p>可是自己手动写html文件是很麻烦的，而且归类管理也不方便。于是便出现了许多提供生成静态网页的程序脚本啥的。本文就是用 hexo生成并管理的。&lt;/p>
&lt;p>话说用静态网页就不能提供许多服务了，比如统计人数，平台什么的（话说当年用 wordpress 的时候不知道什么爬虫一天几千次访问，我都怀疑我的 vps 给人爆了拿去 ddos 去了）&lt;/p>
&lt;p>不过换得了许多好处，访问速度的提升， vps 需求的降低…… （话说你这千年只有你自己一个人访问的反正根本不需要考虑这个问题吧，而且现在服务器都是 github 的啊！）也没啥需要备份维护什么的，毕竟什么都在本地有备份只是更新需要 push 到 github 上给你们访问而已。&lt;/p>
&lt;p>不过放在 github 不好的一点就是访问速度太蛋疼了，而且国内好像是属于薛定谔的屏蔽状态。&lt;/p>
&lt;p>以上，我再去摸一篇怎么在 github 上假设这个 blog 的文。&lt;/p></description></item><item><title>最近的一些想法</title><link>https://malu.ome/post/%E6%9C%80%E8%BF%91%E7%9A%84%E4%B8%80%E4%BA%9B%E6%83%B3%E6%B3%95/</link><pubDate>Tue, 14 Mar 2017 20:09:29 +0000</pubDate><guid>https://malu.ome/post/%E6%9C%80%E8%BF%91%E7%9A%84%E4%B8%80%E4%BA%9B%E6%83%B3%E6%B3%95/</guid><description>
&lt;pre>&lt;code> 最近沉迷小说《临高启明》，真的是非常好看。起初看到知乎有人问有没有人去临高圣地巡礼。点进去看后发现是一本叫《临高启明》的小说。因为临高是海南的一个地方，顿时兴趣就来了。看到有关故乡的小说非常不容易啊，还有圣地巡礼（感觉一群神经病，笑死了）。
&lt;/code>&lt;/pre>
&lt;p>&lt;img loading="lazy"
src="https://blog-malu.oss-cn-beijing.aliyuncs.com/%E7%99%BE%E4%BB%9E%E6%BB%A9.jpg?x-oss-process=style/blog"
alt=""
/>&lt;/p>
&lt;pre>&lt;code> 后来知道《临高启明》是sc论坛坛友的讨论之作。之后主力转移到了[北朝论坛架空区]。小说具体细节还是满考究的。很多机械，工程的问题都有很详细的讨论（毕竟一群显得蛋疼的网友，什么身份的都有，小说里则是500元老院）。小说的视角也很明显是一群荷尔蒙迸发的男性们写出来的,因为伟业之一就是养小Loli。
最近花了很多时间在 看《临高启明》，几天下来追了十分之一不到。现在大概是100w字。所以大概看了有10w字，然而穿越者还没在广州站稳脚跟，还没完成初步的工业化（怎么可能啊！）。
突发奇想如果有个穿越游戏应该很好玩，带着现代人和物质穿越到过去。启动工业化。可是过头想想玩法也不过是模拟城市那样子。但是还是觉得会很有意思。用着现在的地图和资料（游戏使用这个世界真实的资料，甚至地形都可以用谷歌地图上的等高线建模）去开发资源，靠掌握的历史事件获利等等。可是感觉作为单机一个人的操作量太大了（即使现在的模拟城市操作量也很大，各种交通问题，感觉大部分是AI太智障了没能好好利用道路）。在我看来这非常有意思，如果给P社做的话。
&lt;/code>&lt;/pre></description></item><item><title>第一次安装hexo</title><link>https://malu.ome/post/%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%AE%89%E8%A3%85hexo/</link><pubDate>Tue, 14 Mar 2017 20:06:24 +0000</pubDate><guid>https://malu.ome/post/%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%AE%89%E8%A3%85hexo/</guid><description>
&lt;p>话说我之前的vps到期了，苦于囊中羞涩，暂时不想购买新的 vps 。而且主要没什么需求(ss 有师傅的服务器，blog 我想尝试架在 github 上)。由于之前的 wordpress 并没有备份，所以这里算是新的开始，我努力做到日常能写些东西 po 上来把。
我 google 了以下在 github 上搭建博客的教程，在jekyll 和 hexo 之间选择了 hexo。安装过程并不顺利， 安装 hexo 时候下载速度非常慢就不提了，hexo 服务启动后（hexo server）端口占用既然不提醒？？？我又检查重新安装了好几遍，google 了以下发现可能是端口被占用的问题,换了个端口果然解决（hexo server -p 8000）。
安装完hexo后还得执行（npm iinstall），安装node。
暂时不明白为什么。之后还得 push 到 github 的仓库上，一直没弄清楚。现在是不明不白的可以跑了，但是问题还是存在。
hexo 用的是 Markdown 写东西，暂时用的还不是很习惯，所以排版什么的可能有点问题（好像你用其他什么能写得好一样）。暂时还需要学习。
以上只是我的一些碎碎念，虽然想写一篇怎么安装 hexo 的教程，可是发现我在安装的时候并没有截图什么的。所以这里只是一些发泄的碎碎念罢了。如果有人完全看不明白也只是我的写作能力太差想到什么写什么完全没有结构所导致的结果。很多东西需要学习啊。
更多碎碎念期待下一篇。。。&lt;/p></description></item><item><title>关于重装系统后的二三事</title><link>https://malu.ome/post/%E5%85%B3%E4%BA%8E%E9%87%8D%E8%A3%85%E7%B3%BB%E7%BB%9F%E5%90%8E%E7%9A%84%E4%BA%8C%E4%B8%89%E4%BA%8B/</link><pubDate>Sat, 11 Mar 2017 22:53:52 +0000</pubDate><guid>https://malu.ome/post/%E5%85%B3%E4%BA%8E%E9%87%8D%E8%A3%85%E7%B3%BB%E7%BB%9F%E5%90%8E%E7%9A%84%E4%BA%8C%E4%B8%89%E4%BA%8B/</guid><description>
&lt;p>话说我在看到 visual stuido 2017出来以后,就像下载安装试一下。 甚至于即使那些更新和我关系不大但是我还是想要更新。然后作死就开始了。&lt;/p>
&lt;p>visual stuido 很棒，新的安装界面，更快的安装速度。 作死的是我在安装完2017后就把2015卸载了。 MMP 的卸载了一个下午还没卸载好，我直接强制结束了。我打开2017，新建一个项目，添加一个cpp文件，编译运行，错误……&lt;/p>
&lt;p>错误看不懂在说什么，2017又刚出来google什么的都找不到相关页面。估计是2015卸载顺便把什么东西一起卸载掉了。我期间重装了2015……一样出错。2017安装两次（2017安装真心块），都出错。&lt;/p>
&lt;p>我绝望了。重装了系统。&lt;/p></description></item></channel></rss>