[{"content":"前言 EVE欧服在通常情况下是支持裸连的，也就是不用进行其他网络操作就能通过游戏客户端登录。很可惜，裸连受到网络影响的概率比较大，假如在与他人决斗时突然来上这么一个“网络连接错误”，我想是谁都会红温。在国内，多数玩家都会选择去使用游戏加速器以优化网络体验，毕竟游戏服务器在欧洲。不开加速器的延迟大概在200MS左右，开了加速器能降到170MS左右，当然了这个还和玩家的物理位置和网络运营商有很大的关系。\n加速器的选择 我将以自身视角列举以下加速器在游戏中的体验：\nUU 加速器 AK 加速器 雷神加速器 UU加速器 大厂科技，线路质量这一块没的说，加速器的效果在三者里是最好的，价格也是最贵的，官方价格大概在30元/月。博主当年读书的时候用这个加速器也只敢在闲鱼上买共享账号登录器，大概是十块钱一个月，经常被人顶号。\n雷神加速器 它的加速质量我不敢恭维，实在是一言难尽，博主所在的QQ群里经常能看到小伙伴因为使用了它而导致游戏掉线。2020年博主经常用它加速PUBG，左上角的网络参数经常变色，有的时候是延迟跳跃，有的时候是丢包。对于EVE的加速效果来看，它至少能够让你在空间站里完成每日签到的任务，至于出站后的活动不能保证稳定开展。它在三者中算是最便宜的，博主在2022年花了四十还是五十，买了2000小时的加速服务，不用的时候可以选择暂停时间，因为平常只用来打PUBG，所以到了今天还能剩下20个小时。\nAK加速器 目前博主在用的加速器就是它，它的加速效果介于UU和雷神之间。博主之前在武汉使用移动宽带加速后，延迟大概在165MS左右，现在使用三亚电信加速后的延迟大概在170MS。它的价格在三者中处于中位，没雷神那么便宜，也没UU那么贵。不过它和雷神有一处地方相同，那就是加速时间可以暂停。博主买了40元的500小时套餐，每天高强度玩10个小时游戏，持续用了半年才用完。当然，你要是喜欢从晚上12点到下午2点玩游戏，你甚至都不用充钱，AK在这个时间段免费加速游戏。\n加速线路的选择 个人认为，加速上的什么所谓“独享”线路对EVE欧服来说就是多此一举的存在。游戏服务器大概是在伦敦，博主在三亚，物理延迟来到了至少140MS，再怎么使用独享线路也不可能突破物理限制。除此之外，我认为玩欧服游戏的人应该是比较少的。\n以AK加速器为例，线路选择带有欧洲字样的，看到哪条延迟低就选哪条，例如华北电信-欧洲6666。找不到欧洲线路可以在右上角的搜索框输入欧洲。 博主之前挺纳闷的，随便选了带华南电信国际的线路，过星门的时候左上角的星系信息和总览刷新得很慢，开装备的时候也比平常满半秒，花了几天的时间才想明白这件事。\n游戏更新是否加速 假设你的宽带是1000Mbps，用AK加速器开启加速的状态下去更新游戏登录器，下载速度大概只能来到10MB/S，因此博主习惯在游戏更新前把加速器关掉。 如果是遇到了无法更新的情况，那么建议是打开加速再试试。\n","date":"2026-05-29T19:20:05+08:00","image":"https://static.imcry.vip/img/20260529201802329.webp","permalink":"/post/2026-5-29-1905/","title":"浅谈EVE欧服的加速器设置"},{"content":"“拜年” 今年在武汉度过了人生中一次特别的春节，那是一次远离故乡独自一人的过年。非常感激那些还没遗忘我的家人和朋友，即便相隔千里，依然跨越时空传递着温暖。当然，有那么一位朋友给我献上了或许我这辈子都不会忘记的拜年词——借钱。 我也得感谢他，至少他在过年的时候还记得这个世界上还有一个我。\n死党 这位朋友是我的高中同学，他的身高和体型与我大差不大，头顶差不多的平头，甚至我俩带的眼镜框都是非常相似的黑框，当时给我们上课的英语老师向我俩吐槽分不清谁是谁，就像是双胞胎一样。我在高一主要就和两个人玩，他便是其中之一。 我们似乎组成了一个无形的“铁三角”，他的代号是“厅长”，除此之外还有“局长”和“部长”。从周一到周五，我和他都会在晚饭过后准时准点的出现在操场边缘的一个沙坑旁。\n时间紧，任务重！\n到地方后，二话不说开始组队打“王者荣耀”，我当辅助，他当射手。这里是一块死角，鲜有老师和门卫从这里经过，在这里掏出手机至少能安稳的玩上2个小时，真可谓是网瘾少年的天堂。 除了在一块打游戏，日常也要三个人一块排队打饭、一块吃饭，甚至是上课迟到也要组队。那时候，我们三个人都有各自暗恋的对象，彼此鼓励迈出感情的第一步，要是谁表白被拒绝了，我们都会互相安慰。好玩的是，最终我们三个人都被喜欢的人给拒绝了。\n转折 谁也没想到，一次简单的分班调整就可以拆散这个看似坚固无比的“铁三角”。这位朋友上课的教室被分到了隔壁班，宿舍也是如此。分班后没过几天，他的饭搭子便不再是我们，好像切割的速度快过疾驰的高铁。隔壁班有一位混的“入”，这位朋友慢慢的跟他玩的越来越好，抽烟的本事一天比一天大。 突然有一天，他的饭桌旁坐了两位女生。我很诧异，相当的诧异，这小子分班后怎么就直接开情窍了？于是我找了个地方，想从他那里学学经验。他说了什么我记不得了，不过能确定的是他说了一句这两个女生同时在喜欢他。好家伙，这牛皮吹的都能惊动几光年外的三体人了！\n偏离 高中的最后一年里，我和他很少有过接触了。从分班的那天到高考前的那一刻，他越来越像是照着一个地痞流氓的人生剧本在走，行为愈发低俗，思想愈发空洞。每每下课，他会跟我们班的一些人到厕所里抽烟。看谁不顺眼，就到那个家伙的教室门口堵着。 高考似乎对他来说已经是一种浪费时间的存在了，他好像斩断了学习的念头，成绩一降再降。在课桌上用书本垒得高高地，或许是想遮蔽他那无比迷茫的内心。\n点赞 又过去了几年，除了每年春节互发祝福，不会再有任何沟通。 我不确定他是否就读了一所高校，还是早早地参加了工作。在2025年的某一个时刻，我在朋友圈里刷到了他，随手点了一个赞。几分钟后，手表提示我有人联系。我以为他是想和我来叙叙旧，唠一唠他在生活里遇到的趣事，哪曾想他是来找我借钱的。 当然，我也一次没借给他过。因为我真的没有他说的数额。\n","date":"2026-05-28T04:37:57+08:00","permalink":"/post/2026-5-28-457/","title":"我的朋友，他没忘记我"},{"content":"往日 博主在武汉生活了几年，虽说武汉的交通开小车的大多都是横冲直撞的进攻型驾驶，骑电瓶车的倒是没怎么展示特技的。从武汉回到家乡————三亚，我常常惊叹老乡的骑行技术。很多时候，老乡们会以一种愿意在此处多停留一刻的心境，操控着电瓶车优哉游哉的在车道上环顾四周。又或者在嘴里咀嚼青涩的槟榔果和一种不知名且涂上白色化合物的叶子，十步吐一口，百步吐十口，呕吐物在路面上就像玫瑰绽开一样，让压抑色调的沥青从此有了独一无二的印记。\n今夕 不知道是从何年何月开始，人们似乎默契的参与到一种仪式上：他们右手控制车速，左手滑动屏幕。两轮怪兽摇摇晃晃的经过一个又一个路口，路缘石旁边的行人好像早已习惯了一切。如果说以前的老乡骑电瓶车是毫无波澜的一张脸，那么现在至少会多出那么几次笑容，大概是抖音太好刷了。\n我想 对应的场景，应该做对应的事情，就好比餐馆里可以吃饭和卧室里可以睡觉。但有些自私的家伙为了满足自己那一点点的欲望，不断地侵犯他人美好生活的边界。比一边骑车，一边刷视频的行为，这让我难以接受。他可以不要命，但我还要享受生活。他在肆无忌惮的的跃动手指操作，而我却要时刻提心吊胆地躲避。他用儿戏化的方式把存活的可能性降低，却从未想过那些在乎他的人。也许会有那么一天，他从车上倒了下来，视频还在播放，心脏悄然暂停。 想来想去，问题可能出在违法的成本实在是太低太低了。我从来不会去赌别人的素质，因为我一直觉得个人素质很少有人会去主动提升，只有当被罚款的那一刻，才会知道什么事情不能做。\n","date":"2026-05-27T06:52:43+08:00","image":"https://static.imcry.vip/img/20260527074353290.webp","permalink":"/post/2026-5-27-642/","title":"抖音骑行，生命要停"},{"content":"前言 在使用了一段时间的PicGo之后，图片从本地上传到服务器的操作量减了不少。一开始只知道在PicGo主程序里把图片粘进去，到后来只用VsCode上的Picgo插件，果然懒惰是进步的阶梯。 不过，PicGo默认上传的格式是.PNG，有些图片会大到200KB甚至更多，这种体积会严重影响加载速度。我尝试在PicGo主程序里安装了转换格式的插件，在每次上传前会将图片转成.WEBP格式，从而降低资源的体积。 简单在PicGo主程序测试了一番，图片确实顺利的将格式转化后上传到了图床。可惜，那款内置在VsCode的插件似乎是直接调用的Pic-Core，不按套路使用我设置的格式转换功能，上传结束后自动插入的链接依然是以.PNG结尾。 于是，我把目光转向了在VsCode里的PicList插件。这款插件和vs-picgo插件共用同一个快捷键，也就是Ctrl+Alt+U。它主要是通过PicList主程序开放的API接口来实现上传图片的功能，因此还需要额外下载PicList主程序，传图的时候也要一直开着软件。好在，它的确实现了在上传图片前转换格式的操作，很好的压缩了图片的体积，提高了资源的加载速度。\n安装 可以不分先后顺序的安装这两个应用：\n在VsCode中搜索PicList并安装 打开PicList的发行版页面下载对应的打包文件 迁移 把图床配置从PicGo迁移到PicList，是瞬间完成的事情，因为PicList自带一键迁移的功能。 接口 开启上传API服务，默认设置不需要更改。\n使用 复制一张图片，在VsCode里按下Ctrl+Alt+U。\n注意：插件不会提示正在上传的信息，但是会提示上传失败的信息。\n","date":"2026-05-26T09:26:57+08:00","permalink":"/post/2026-5-26-956/","title":"从PicGo切换到PicList"},{"content":"前言 博主在游戏里是住在北方负安等星域的，平时刷怪、反收割都要开不同种类的舰船。但是在00地区，船是不能够直接从吉他驾驶到驻地的。因为你永远不知道下一个跳跃的星系里藏着多少敌人。一般我们需要借助外部力量，最主要的是通过委托快递运输。Hallogistics目前对我来说，是EVE里最快、最便宜的运输服务。不过，网页目前并被没有汉化，博主决定简单教学一番。\n操作 演示信息如下： 快递起点：吉他 IV - 卫星 4 - 加达里海军 组装车间 快递终点：G06-8Y - Tenal Trade Tower 打开网页：Hallogistics\n复制物品信息 在EVE里用框选或按下Shift批量选择游戏物品，再按下Ctrl+C来复制信息，保持选中状态。\n创建快递合同 右键点击创建合同，合同类型选择快递。\n测算物品体积 将刚才复制到的物品信息，粘贴到快递网页的Appraisal区域，然后点击Get Appraisal按钮，网页会自动计算出总体积。 选择起点和终点 在网页左侧的Origin区域选择起点空间站，在Destination区域选择终点空间站。 作者以吉他海4空间站出发到G06星城为例。 填写合同信息 此时快递网页已经计算出价格等信息。\n填写合同目标 复制快递网页Contract to区域的信息。\n到合同界面的名字区域粘贴，点击下一步，再下一步。 填写快递终点站 复制网页中的Ship To区域信息，这对应游戏合同的运送到，然后粘贴到游戏合同内。 例如：G06-8Y - Tenal Trade Tower\n填写快递奖励 复制网页中的Reward区域信息，这对应合同的奖励，接着粘贴到游戏合同内。 例如：25000000\n填写快递保证金 复制网页中的Collateral区域信息，这对应合同的保证金，接着粘贴到游戏合同内。\n例如：1800000000\n填写快递期满 查看网页中的Expiration区域信息，这对应合同的期满。\n如果网页显示的是7 days，游戏合同内选择1周。\n填写预计完成天数 查看网页中的Completion区域信息，这对应合同的预计完成天数。\n如果网页显示的是3 days，游戏合同内输入3。\n确认合同信息 至此，你已完成合同信息的填写，接下来在游戏内点击下一步。 请仔细核对合同信息，若确认无误可以点击完成。 游戏将会扣除你在快递中填写的奖励数额。\n结果 合同的信息如下： ","date":"2026-05-25T04:07:42+08:00","image":"https://static.imcry.vip/img/20260525045405.webp","permalink":"/post/2026-5-25-442/","title":"在EVE中使用快递服务：Hallogistics"},{"content":"起因 想给电脑上的Go语言从1.25.5升级到1.26.3，找了一篇文章准备照着做。 按照这篇文章的方法，先从Go语言官网下载指定版本的压缩包后，直接覆盖到原路径。 覆盖完了之后，我一个之前做过的项目文件里，执行go fix，果不其然，直接报错了：\nPS D:\\某文件\u0026gt; go fix # internal/abi D:\\Go\\src\\internal\\abi\\map_swiss.go:25:2: ctrlEmpty redeclared in this block D:\\Go\\src\\internal\\abi\\map.go:25:2: other declaration of ctrlEmpty D:\\Go\\src\\internal\\abi\\map_swiss.go:26:2: bitsetLSB redeclared in this block D:\\Go\\src\\internal\\abi\\map.go:26:2: other declaration of bitsetLSB 错误原因大概是Go的标准库下存在两个版本的map.go和map_swiss文件。 我尝试卸载掉老版本的Go，直接用Geek工具强制已删除了，神奇的操作让我在坑里越陷越深。\n重装 打开Go的下载页面，找到go1.26.3.windows-amd64.msi下载，直接安装。 嗯，不太可能会很顺利，安装包弹了一个窗。 第一反应是，它好像还需要1.25.5版本的安装包。\n好吧，那就再下载另一份。 下载结束后，我选择1.25.5的安装包，它居然又报错了！？ 我决定直接运行试试，难道真的有什么奇怪的说法？ 这是把博主当小日子整呢？好像情况有点不对。 我仔细一看文件名：go1.25.5.windows-arm64.msi 哦，😅 原来是arm64，失敬失敬。 我把go1.25.5.windows-amd64.msi下载后，重复了上面的操作。 这下我又能当Go学长了。\n","date":"2026-05-23T18:31:08+08:00","permalink":"/post/2026-5-23-18/","title":"记录一次升级Go语言踩坑"},{"content":"前言 在完成这篇 《利用GitHub作为图床并中转加速》 的操作后，我希望还能用更快的方式在Vscode中插入图片。本次操作在Windows 11完成。\n配置 打开VsCode，进入拓展商店。\n安装插件 在搜索框中输入：\npicgo 找到开发者为PicGo的插件，然后安装。 设置插件 点击插件的⚙️图标，在弹出的菜单里选择设置。 找到Config Path和Data Path两处配置。 根据插件作者的说明vs-picgo：\n// Windows { \u0026#34;picgo.configPath\u0026#34;:\u0026#34;YOUR_HOME_DIR\\\\AppData\\\\Roaming\\\\PicGo\\\\data.json\u0026#34;, \u0026#34;picgo.dataPath\u0026#34;: \u0026#34;YOUR_HOME_DIR\\\\AppData\\\\Roaming\\\\PicGo\\\\data.json\u0026#34; } // macOS { \u0026#34;picgo.configPath\u0026#34;: \u0026#34;YOUR_HOME_DIR/Library/Application Support/picgo/data.json\u0026#34;, \u0026#34;picgo.dataPath\u0026#34;: \u0026#34;YOUR_HOME_DIR/Library/Application Support/picgo/data.json\u0026#34; } // Linux { \u0026#34;picgo.configPath\u0026#34;: \u0026#34;YOUR_HOME_DIR/.config/picgo/data.json\u0026#34;, \u0026#34;picgo.dataPath\u0026#34;: \u0026#34;YOUR_HOME_DIR/.config/picgo/data.json\u0026#34; } 也就说，Config Path和Data Path的内容要写成：\nC:\\Users\\你的用户名\\AppData\\Roaming\\picgo\\data.json 例如：C:\\Users\\ikun\\AppData\\Roaming\\picgo\\data.json 填写完毕后可以直接关闭页面，插件会自动保存配置。\n测试 关于快捷键，根据插件作者的说明vs-picgo：\nOS Uploading an image from clipboard Uploading images from explorer Uploading an image from input box Windows/Unix Ctrl + Alt + U Ctrl + Alt + E Ctrl + Alt + O OsX Cmd + Opt + U Cmd + Opt + E Cmd + Opt + O 也就是说，把图片复制后，Windows11可以在VsCode的md文件编辑界面里按下Ctrl + Alt + U，那么插件就会自动将你所复制的图片上传到服务器。 上传成功后，插件会自动插入markdown格式的图片名和图片链接。\n","date":"2026-05-22T13:31:02+08:00","image":"https://static.imcry.vip/img/20260522143730.webp","permalink":"/post/2026-5-22-13/","title":"在VsCode中使用PicGo插件"},{"content":"回忆 印象中比较知名的头像站就是 Gravatar.com 了。 依稀记得2014年，正在上小学的我第一次接触到了emlog博客程序，它所使用的头像服务正是Gravatar。不过因为种种原因，这家头像站很难打开，就算页面显示了大部分区域，图片那块依旧是开裂状态。 后来我知道了有种东西叫做镜像站，当时似乎很流行用七牛云中转缓存Gravatar，有许多好心人将自己做好的镜像站发到网上做公益。 以为 最近才回归写博客，看到Cravatar，下意识的以为它是Gravatar的镜像站，他俩就一个字母不一样。 我在几个博客间穿梭，留下了点评论，总觉得哪里怪怪的…… 我注意到我的头像依然是默认样式，这很奇怪：我明明在Gravatar上修改了我的头像，为什么过去这么久了还是不生效，难道我的头像被和谐了？？ 我点开头像的链接，发现它用的服务是Cravatar提供的，我把域名后面的内容删了再访问进去试试。\n结果 好家伙，原来Cravatar并不是Gravatar的镜像站，它们是互相独立的站点。\n比较无语的点是，新用户要在XX网站上注册一个号，然后才能登录Cravatar。 没办法，写博客的日子还得过，只能咬牙注册了。\n逛逛 随便翻阅了几下，了解到他们家的主要产品似乎是一种高度汉化的WordPressCMS程序，头像服务不会是顺手搓的吧？\n最后 总体而言，我觉得Cravatar非常适合在国内备案站点使用。但它似乎来的太迟了些，认可它的人又会有多少呢 🤔\n","date":"2026-05-21T15:14:17+08:00","image":"https://static.imcry.vip/img/20260526074847345.webp","permalink":"/post/2026-5-21-15/","title":"才知道Cravatar是另一个头像站"},{"content":"前言 博主在读书的时候，没少被ArcGis自带的添加底图功能坑过。要么直接打不开，要么打开了直接卡死，经常在作图的时候还没来得及保存文件而含泪结束进程😭。刚好最近在整理博客，顺着记忆把操作步骤重现一下。\n操作 注册并登录天地图账号 打开天地图的注册页面，把基本信息填一填。 天地图个人注册：https://passport.tianditu.gov.cn/register 注册完毕后，就正常登录。\n创建应用 进入个人中心，\n依次点击开发管理-\u0026gt;应用管理-\u0026gt;我的应用，点击创建新应用按钮，按照实际情况填写自己的信息，IP名单可以留空，点击提交。 稍等一会，页面就会刷新出一个新的应用密钥(tk)，例如\n66ab68730d47fb8z47691ebb4d14be6 保存刚才你创建好的密钥。\n获取Api地址 进入地图API页面：\nhttps://lbs.tianditu.gov.cn/server/MapService.html 我们只看球面墨卡托投影的部分。\n修改服务地址 假设此时你想要添加一个矢量底图的图层，页面上给出的服务地址为:\nhttp://t0.tianditu.gov.cn/vec_w/wmts?tk=您的密钥 按照博主之前的踩坑经验来看，原封不动的将tk换成自己生成的密钥，ArcGis无法正常加载。\n也就是说，需要在 wmts 前加上一个esri的目录，并去掉wmts之后的内容。\n所以，要将服务地址修改成如下：\nhttp://t0.tianditu.gov.cn/vec_w/esri/wmts 添加WMTS服务器 进入ArcGis，在目录侧边栏找到添加WMTS服务器，双击打开。 URL填写刚刚修改好的地址，例如：\nhttp://t0.tianditu.gov.cn/vec_w/esri/wmts 点击自定义参数旁边的+按钮，单击参数，输入\ntk 值的内容就需要用到创建应用生成的密钥，例如:\n66ab68730d47fb8z47691ebb4d14be6 输入完毕后，点击获取图层按钮。\n如果成功获取到图层，🤩 那么恭喜你！ 加载图层 在目录侧边栏找到刚才创建好的WMTS服务，展开它，将vec拖进界面。 拓展 平常为了区分谁是谁，都会服务重命名。 ","date":"2026-05-20T23:27:20+08:00","permalink":"/post/2026-5-20-23/","title":"ArcGis添加天地图服务"},{"content":"简单扯扯 博客迁移到HuGo后，速度确实快了不少，但是图片存在哪里的问题还没有解决。比较担心在用大厂的对象存储服务以后会被人恶意刷流量导致欠费，去用第三方图床也会吃到每日上传次数的限制，自建图床又得考虑维护成本。想白嫖的心情在此刻升至顶点，到底怎么样才能分币不掏？ 在B站上简单搜索了下，比较火热的方案是用GitHub的仓库作为图床，然后再搭配cloudflare来实现全球加速。\n不过按照我前段时间使用cloudflare的感受来看，这家伙一到傍晚就容易抽风，国内直连上不去。我把目光看向了腾讯云的EA加速服务，我想着用它来加速我的GitHub Pages服务。\n创建账户 先创建一个新的GitHub账户，避免污染其他账户。\n创建仓库 打开页面:https://github.com/new 在Repository name处填写好仓库名称，点击页面最下方按钮Create repository。\n创建令牌 点击GitHub个人头像，进入Settings-\u0026gt;Developer Settings-\u0026gt;Personal access tokens-\u0026gt;Tokens (classic)。 点击右上角的按钮：Generate new token-\u0026gt;Generate new token (classic) 设置过期时间，勾选repo及其下属选项 最后点击页面下方的Generate token按钮，拿到令牌后保存好。\n图片上传 配置PicGo 博主选择了PicGo作为图片上传的客户端。 PicGo下载：https://github.com/Molunerfinn/PicGo/releases/latest\n点击创建图床的十字图标。 进入界面后填写如下信息：\n图床配置名：随意 设定仓库名：GitHub用户名/仓库名，比如ikun/basketball 设定分支名：一般填写master 设定Token：填写刚才创建好的令牌，详见创建令牌 设定存储路径：填入img 设定自定义域名：先不管，最后才设置，参考再次配置picgo 尝试上传 拖入一张照片到PicGo的主界面，软件会自动将图片上传。 接着进入到PicGo的相册界面，如果出现刚才上传的图片，那就得恭喜你成功了80% 中转加速 博主将以腾讯云的EdgeOne服务演示，步骤较为省略。 如果是优化国内访问图床的速度，那么此建议使用ICP备案域名，没有备案的话可以去用别的CDN。\n新增域名 先去EA添加记录，再去域名DNS所属的解析平台添加EA给的解析值。\n操作EA 在EdgeOne里新增一个用于加速的域名，解析值为GitHub用户名.github.io，例如beidou6.github.io。 完成操作后点击下一步，EA会给出需要操作的信息。 例如：\n主机记录：cscs 记录类型：CNAME 记录值：cscs.imcry.vip.eo.dnse0.com 操作域名DNS解析 按照EA给出的信息，去域名DNS所属的解析平台添加EA给的解析值。\n配置GitHub仓库 进入到图床仓库的设置页面，点击Pages。 在Branch处设置默认分支为master，点击save按钮。\n设置自定义域名 在配置GitHub仓库同页面下，于Custom domain处填入在EA添加的加速域名，最后点击Save保存。 再次配置PicGo 回到PicGo的图床配置界面，填写设定自定义域名，填写值为在EA创建的加速域名，结尾不带斜杠，例如https://cscs.imcry.vip\n","date":"2026-05-18T14:30:01+08:00","image":"https://static.imcry.vip/img/20260518151840023.png","permalink":"/post/2026-5-18-14/","title":"利用GitHub作为图床并中转加速"},{"content":"简单扯扯 博客从2019年开始，陪伴了我将近7年。\nWordPress使用感受 当年用WordPress的时候，总感觉卡的不行。 尝试过各种替换样式库、字体库的地址，一样是卡的起飞。\nTypecho使用感受 把WordPress换到Typecho后，速度快了许多，操作也少了一些，不过丢失了一些文章。再换到Hugo也是差不多的情况，只是这些文章是我手动删的，因为有些内容似乎不太合规。 至于为什么要换到Hugo，很大一部分原因是我想降低博客的运行成本。虽然我每年都是买的百元秒杀服务器，不过接触到静态博客这种东西后，我还是想把这钱给省下来。\n部署过程 用了几天空闲的时间看了下各家静态博客的优劣势，最后选定了Hugo。\n文章迁移 先从MySQL数据库里取出博客的文章数据表，对着GeMiNi说出了我的需求，最后给我写了个Python脚本一键转换成Hugo的文章格式。\n下载主题 Hugo这玩意挺让我意外的，第一次运行需要去官网下载主题。 挑挑拣拣，最后选了hugo-theme-stack。\n修改Hugo配置 在配置文件里填写了站点名称和链接，开启了伪静态、侧边栏，配置了文章评论系统，关闭了Hugo自动下载图片。\n初始化Git仓库 因为考虑到后面的部署平台问题，我选择将Hugo目录和public目录分别建仓。 public的内容提交到Gitee上，这是为了方便国内平台拉取文件。\n部署到EA-Pages 这项服务由腾讯云提供。 博主的另一个作品也托管到他家：https://eve.imcry.vip EA-Pages会在指引页面要求选择git仓库，仓库的权限可公可私。 博主之所以选择放打包后的文件是因为EA-Pages提供的Hugo是老版本，现在用的主题没法跑在这上面。\n最后总结 😅去咬打火机都不要来折腾这种事，有够费时费力的。\n","date":"2026-05-15T12:44:05+08:00","image":"/cover/cover-5.jpg","permalink":"/post/2026-5-15-12/","title":"本站迁移至Hugo"},{"content":"数据来源 GeoFabrik是一家德国公司，定期从OpenStreetMap的全球数据库中下载数据，然后按照地理区域进行分割和处理，生成方便下载和使用的数据文件。\n数据下载 建议使用多线程工具下载，例如迅雷。 数据链接：https://download.geofabrik.de/asia/china.html\n数据时间 按照Geofabrik网站页面的说法，通常每天更新一次。\n数据内容 国内数据按照省份或直辖市划分。\n至少包含了如下数据：\n行政区划区域 建筑物轮廓 自然地貌 土地利用类型 居民点 线状和面状水系 道路网络 效果截图 以湖北省为例。\n","date":"2026-05-09T22:10:00+08:00","image":"/cover/cover-1.jpg","permalink":"/post/acquire-resources-from-geofabrik/","title":"规划佬狂喜：一键下载国内常用地理数据"},{"content":"# 说明 作者采用的handsome版本是10.1.0 这个版本已无法正常加载highlight的样式文件，需要修改handsome主题文件。\n操作 进入/usr/themes/handsome/libs目录，找到CDN.php文件，在开始编辑前请先备份此文件。 编辑文件，将该文件里的\nhttps://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/highlight.js/10.7.3 全部替换为下面其中一个源\nZstatic https://s4.zstatic.net/ajax/libs/highlight.js/10.7.3 BootCDN https://cdn.bootcdn.net/ajax/libs/highlight.js/10.7.3 jsDelivr https://cdn.jsdelivr.net/npm/highlight.js@10.7.3 修改完毕后保存，必要时需要清空CDN和本地缓存。\n","date":"2026-05-08T21:35:00+08:00","permalink":"/post/334/","title":"解决handsome主题无法高亮代码"},{"content":"说明 在天地图下载了某个市级行政区划的GeoJSON数据， 但需要将数据转化后才能放入ArcGIS转换后的SHP坐标为 GCS_China_Geodetic_Coordinate_System_2000\n成品下载 请根据现实地理位置选择下载源 国内用户：GitCode\n海外用户：GitHub\n拓展 天地图行政区划下载地址：https://cloudcenter.tianditu.gov.cn/administrativeDivision/\n脚本代码 import geopandas as gpd import tkinter as tk from tkinter import filedialog def select_and_convert(): # 初始化 tkinter 窗口，但不显示 root = tk.Tk() root.withdraw() print(\u0026#34;请选择要转换的 GeoJSON 文件...\u0026#34;) # 打开文件选择对话框，选择输入的 GeoJSON 文件 input_geojson = filedialog.askopenfilename( title=\u0026#34;选择输入的 GeoJSON 文件\u0026#34;, filetypes=[(\u0026#34;GeoJSON files\u0026#34;, \u0026#34;*.geojson\u0026#34;), (\u0026#34;All files\u0026#34;, \u0026#34;*.*\u0026#34;)] ) if not input_geojson: # 如果用户取消了选择 print(\u0026#34;未选择输入文件，程序退出。\u0026#34;) return print(f\u0026#34;已选择输入文件: {input_geojson}\u0026#34;) print(\u0026#34;\\n请选择输出 Shapefile 文件的保存位置和名称...\u0026#34;) # 打开文件保存对话框，选择输出的 Shapefile 文件路径 output_shp = filedialog.asksaveasfilename( title=\u0026#34;保存输出的 Shapefile 文件\u0026#34;, defaultextension=\u0026#34;.shp\u0026#34;, filetypes=[(\u0026#34;Shapefile\u0026#34;, \u0026#34;*.shp\u0026#34;), (\u0026#34;All files\u0026#34;, \u0026#34;*.*\u0026#34;)] ) if not output_shp: # 如果用户取消了选择 print(\u0026#34;未选择输出文件，程序退出。\u0026#34;) return print(f\u0026#34;已选择输出文件: {output_shp}\u0026#34;) try: print(\u0026#34;\\n正在读取 GeoJSON 文件...\u0026#34;) # 使用 geopandas 读取 GeoJSON 文件 gdf = gpd.read_file(input_geojson) print(\u0026#34;正在转换并保存为 Shapefile...\u0026#34;) # 将 GeoDataFrame 保存为 Shapefile # driver=\u0026#39;ESRI Shapefile\u0026#39; 参数明确指定驱动程序 gdf.to_file(output_shp, driver=\u0026#39;ESRI Shapefile\u0026#39;, encoding=\u0026#39;utf-8\u0026#39;) print(f\u0026#34;\\n转换成功！Shapefile 已保存至: {output_shp}\u0026#34;) # 尝试打印一些基本信息 print(f\u0026#34;- 包含要素数量: {len(gdf)}\u0026#34;) print(f\u0026#34;- 坐标参考系统 (CRS): {gdf.crs}\u0026#34;) if not gdf.empty: print(\u0026#34;- 属性字段:\u0026#34;, list(gdf.columns)) except Exception as e: print(f\u0026#34;转换过程中发生错误: {e}\u0026#34;) finally: # 关闭 tkinter 窗口资源 root.destroy() if __name__ == \u0026#34;__main__\u0026#34;: select_and_convert() ","date":"2026-05-06T13:35:29+08:00","image":"/cover/cover-4.jpg","permalink":"/post/2026-05-06-333/","title":"Python脚本将GeoJSON转成SHP"},{"content":"\r在Windows PowerShell运行如下命令：\n$env:GOOS=\u0026#34;linux\u0026#34; $env:CGO_ENABLED=\u0026#34;0\u0026#34; $env:GOARCH=\u0026#34;amd64\u0026#34; ","date":"2026-01-03T23:58:02+08:00","permalink":"/post/332/","title":"Golang在Windows中编译成Linux可执行文件"},{"content":"诱因 默认情况下，Create React App（CRA）或其他构建工具（Vite、Webpack）在执行 build 命令时，会生成 source map 文件\n何为 Source Map ？ Source Map 是一种映射文件（通常是 .map 文件），它将压缩/编译后的代码（main.js）映射回原始的源代码（App.jsx）。它的主要作用是方便调试：即使代码被压缩、混淆或转译（JSX → JS、ES6+ → ES5），开发者依然可以在浏览器中看到原始代码结构。\n解决方法 方法一：禁用 source map 生成 如果使用的是 Create React App (CRA) 在项目根目录创建一个或修改已有文件 .env.production ，加入以下内容：\nGENERATE_SOURCEMAP=false 重新运行 npm run build，这样构建出的产物将不包含 .map 文件，JS 文件末尾也不会有 sourceMappingURL 注释。\n如果使用的是 Vite 在 vite.config.js 中配置：\nexport default defineConfig({ build: { sourcemap: false, // 关闭 source map }, }); 如果使用的是 自定义 Webpack 配置 在 webpack.config.prod.js 中设置：\nmodule.exports = { devtool: false, // 或 \u0026#39;hidden-source-map\u0026#39;（生成但不引用） // ... }; 方法二：部署时删除 .map 文件 如果无法修改构建配置，也可以在部署脚本中手动删除：\n# 构建后删除所有 .map 文件 rm build/static/**/*.map 方法三：通过服务器配置阻止访问 .map 文件 在 Nginx 中添加：\nlocation ~ \\.map$ { deny all; } 这样即使文件存在，用户也无法通过浏览器访问\n","date":"2025-11-26T13:31:45+08:00","image":"/cover/cover-5.jpg","permalink":"/post/2025-11-26-331/","title":"React 部署在服务器后暴露源码"},{"content":"# 切换 npm 源 切换至npmmirror镜像\nnpm config set registry https://registry.npmmirror.com 清除 npm 缓存 强制清除 npm 的本地缓存，然后再重新安装依赖，解决因缓存导致的证书验证问题\nnpm cache clean --force 更新 npm 将 npm 更新到最新版本，然后再尝试安装\nnpm install -g npm ","date":"2025-09-21T03:41:00+08:00","permalink":"/post/330/","title":"修改npm镜像地址"},{"content":"# 前言 我用vscode里的终端尝试构建React项目时，发现无法执行npx指令。\n通过网上检索了下信息，得知错误是因为PowerShell 执行策略限制导致的。Windows 默认禁止运行未签名的脚本，而npx本质上是一个.ps1脚本文件。\n解决 方法一：临时允许当前会话运行脚本 在 PowerShell 中运行以下命令：\nSet-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass 方法二：永久修改当前用户的执行策略 在 PowerShell 中运行以下命令：\nSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 验证 重新在vscode的终端中执行npx命令后输出如下的类似结果：\nPS D:\\a\\b\u0026gt; npx Entering npm script environment at location: D:\\a\\b Type \u0026#39;exit\u0026#39; or ^D when finished Microsoft Windows [版本 10.0.26100.4946] ","date":"2025-08-17T02:01:00+08:00","image":"/cover/cover-2.jpg","permalink":"/post/327/","title":"解决VSCODE的终端无法执行npx命令"},{"content":"打开文件 打开路径：Python安装目录\\Lib\\site-packages\\fastapi\\openapi 编辑：docs.py文件\n替换内容 将文件中的\ncdn.jsdelivr.net 替换为\ncdn.bootcdn.net 保存文件，重新载入DOCS网页\n","date":"2025-08-16T02:41:17+08:00","permalink":"/post/326/","title":"解决FastAPI的DOC文档访问太慢"},{"content":"## 调出终端\r右击开始菜单，选择终端管理员\n运行指令 在终端管理员窗口中右键粘贴以下指令：\nreg.exe add \u0026#34;HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32\u0026#34; /f /ve 样式生效 电脑重启后样式即可生效\n如需恢复 如果需要恢复成WIN11自带的样式\n同样，在终端管理员运行指令：\nreg.exe delete \u0026#34;HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32\u0026#34; /va /f ","date":"2025-04-03T11:07:00+08:00","permalink":"/post/325/","title":"Win11修改默认右键菜单"},{"content":"# 简介\r递归在编程中是一种非常重要的算法 递归:即方法(函数)自己调用自己的一种特殊编程写法 最典型的递归场景为找出一个文件夹中全部的文件 注意 退出的条件，否则容易变成无限递归 返回值的传递,确保从最内层，层层传递到最外层 代码 import os def get_files_recursion_from_dir(path)-\u0026gt;list: \u0026#34;\u0026#34;\u0026#34;获取指定路径下的全部文件列表 包含全部文件，如果目录不存在就返回空列表 Args: path (str): 被获取的路径 \u0026#34;\u0026#34;\u0026#34; print(f\u0026#34;正在搜索文件：{path}\u0026#34;) file_list = [] if os.path.exists(path): # 判断路径是否存在 for f in os.listdir(path): # 列出该路径下的内容 new_path = path + \u0026#34;/\u0026#34; + f if os.path.isdir(new_path): # 判断指定路径是否为文件夹 file_list += get_files_recursion_from_dir(new_path) else: file_list.append(new_path) else: return [] return file_list if __name__ == \u0026#39;__main__\u0026#39;: print(get_files_recursion_from_dir(\u0026#34;D:/draw.io\u0026#34;)) 输出 正在搜索文件：D:/draw.io\r正在搜索文件：D:/draw.io/locales\r正在搜索文件：D:/draw.io/resources\r[\u0026#39;D:/draw.io/chrome_100_percent.pak\u0026#39;, \u0026#39;D:/draw.io/chrome_200_percent.pak\u0026#39;, \u0026#39;D:/draw.io/d3dcompiler_47.dll\u0026#39;, \u0026#39;D:/draw.io/draw.io.exe\u0026#39;, \u0026#39;D:/draw.io/ffmpeg.dll\u0026#39;, \u0026#39;D:/draw.io/icudtl.dat\u0026#39;, \u0026#39;D:/draw.io/libEGL.dll\u0026#39;, \u0026#39;D:/draw.io/libGLESv2.dll\u0026#39;, \u0026#39;D:/draw.io/LICENSE.electron.txt\u0026#39;, \u0026#39;D:/draw.io/LICENSES.chromium.html\u0026#39;, \u0026#39;D:/draw.io/locales/af.pak\u0026#39;, \u0026#39;D:/draw.io/locales/am.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ar.pak\u0026#39;, \u0026#39;D:/draw.io/locales/bg.pak\u0026#39;, \u0026#39;D:/draw.io/locales/bn.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ca.pak\u0026#39;, \u0026#39;D:/draw.io/locales/cs.pak\u0026#39;, \u0026#39;D:/draw.io/locales/da.pak\u0026#39;, \u0026#39;D:/draw.io/locales/de.pak\u0026#39;, \u0026#39;D:/draw.io/locales/el.pak\u0026#39;, \u0026#39;D:/draw.io/locales/en-GB.pak\u0026#39;, \u0026#39;D:/draw.io/locales/en-US.pak\u0026#39;, \u0026#39;D:/draw.io/locales/es-419.pak\u0026#39;, \u0026#39;D:/draw.io/locales/es.pak\u0026#39;, \u0026#39;D:/draw.io/locales/et.pak\u0026#39;, \u0026#39;D:/draw.io/locales/fa.pak\u0026#39;, \u0026#39;D:/draw.io/locales/fi.pak\u0026#39;, \u0026#39;D:/draw.io/locales/fil.pak\u0026#39;, \u0026#39;D:/draw.io/locales/fr.pak\u0026#39;, \u0026#39;D:/draw.io/locales/gu.pak\u0026#39;, \u0026#39;D:/draw.io/locales/he.pak\u0026#39;, \u0026#39;D:/draw.io/locales/hi.pak\u0026#39;, \u0026#39;D:/draw.io/locales/hr.pak\u0026#39;, \u0026#39;D:/draw.io/locales/hu.pak\u0026#39;, \u0026#39;D:/draw.io/locales/id.pak\u0026#39;, \u0026#39;D:/draw.io/locales/it.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ja.pak\u0026#39;, \u0026#39;D:/draw.io/locales/kn.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ko.pak\u0026#39;, \u0026#39;D:/draw.io/locales/lt.pak\u0026#39;, \u0026#39;D:/draw.io/locales/lv.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ml.pak\u0026#39;, \u0026#39;D:/draw.io/locales/mr.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ms.pak\u0026#39;, \u0026#39;D:/draw.io/locales/nb.pak\u0026#39;, \u0026#39;D:/draw.io/locales/nl.pak\u0026#39;, \u0026#39;D:/draw.io/locales/pl.pak\u0026#39;, \u0026#39;D:/draw.io/locales/pt-BR.pak\u0026#39;, \u0026#39;D:/draw.io/locales/pt-PT.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ro.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ru.pak\u0026#39;, \u0026#39;D:/draw.io/locales/sk.pak\u0026#39;, \u0026#39;D:/draw.io/locales/sl.pak\u0026#39;, \u0026#39;D:/draw.io/locales/sr.pak\u0026#39;, \u0026#39;D:/draw.io/locales/sv.pak\u0026#39;, \u0026#39;D:/draw.io/locales/sw.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ta.pak\u0026#39;, \u0026#39;D:/draw.io/locales/te.pak\u0026#39;, \u0026#39;D:/draw.io/locales/th.pak\u0026#39;, \u0026#39;D:/draw.io/locales/tr.pak\u0026#39;, \u0026#39;D:/draw.io/locales/uk.pak\u0026#39;, \u0026#39;D:/draw.io/locales/ur.pak\u0026#39;, \u0026#39;D:/draw.io/locales/vi.pak\u0026#39;, \u0026#39;D:/draw.io/locales/zh-CN.pak\u0026#39;, \u0026#39;D:/draw.io/locales/zh-TW.pak\u0026#39;, \u0026#39;D:/draw.io/resources/app-update.yml\u0026#39;, \u0026#39;D:/draw.io/resources/app.asar\u0026#39;, \u0026#39;D:/draw.io/resources/elevate.exe\u0026#39;, \u0026#39;D:/draw.io/resources.pak\u0026#39;, \u0026#39;D:/draw.io/snapshot_blob.bin\u0026#39;, \u0026#39;D:/draw.io/Uninstall draw.io.exe\u0026#39;, \u0026#39;D:/draw.io/v8_context_snapshot.bin\u0026#39;, \u0026#39;D:/draw.io/vk_swiftshader.dll\u0026#39;, \u0026#39;D:/draw.io/vk_swiftshader_icd.json\u0026#39;, \u0026#39;D:/draw.io/vulkan-1.dll\u0026#39;] ","date":"2025-01-20T03:07:00+08:00","permalink":"/post/324/","title":"[Python]初学递归"},{"content":"# 简介\rsocket(简称 套接字)是进程之间通信一个工具, 好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行 进程之间想要进行网络通信需要socket，它负责进程之间的网络数据传输 2个进程之间通过Socket进行相互通讯，就必须有服务端和客户端\nSocket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息 Socket客户端:主动连接服务端、可以发送消息、可以接收回复 服务端 代码 import socket import time socket_server = socket.socket() # 创建socket对象 host , port = \u0026#39;127.0.0.1\u0026#39; , 6565 socket_server.bind((host,port)) # 绑定IP及端口 socket_server.listen(1) # 监听，参数表示可接受的连接数量 conn , address = socket_server.accept() # 阻塞，等待客户端连接，采用这种方式可直接接收二元元组内的两个元素 conn.send(\u0026#39;我是服务端，很高兴与你连接!\u0026#39;.encode(\u0026#39;utf-8\u0026#39;)) print(f\u0026#34;服务端接收到链接，客户端地址：{address}\u0026#34;) while True: data : str = conn.recv(1024).decode(\u0026#34;UTF-8\u0026#34;) # 接收客户端发来的信息，采用服务端与客户端连接的对象,recv是缓冲区 print(f\u0026#34;接收到客户端发来的信息:{data}\u0026#34;) if data == \u0026#39;exit\u0026#39;: msg = \u0026#34;已收到结束指令，即将关闭连接！！！\u0026#34;.encode(\u0026#34;utf-8\u0026#34;) conn.send(msg) break msg = f\u0026#34;\u0026lt;自动回复\u0026gt;当前时间戳：{time.time()}\u0026#34;.encode(\u0026#34;utf-8\u0026#34;) conn.send(msg) # 服务端向客户端发送信息 print(msg.decode(\u0026#34;utf-8\u0026#34;)) conn.send(\u0026#39;再见!\u0026#39;.encode(\u0026#39;utf-8\u0026#39;)) conn.close() socket_server.close() 运行 客户端 代码 import socket , time host , port = \u0026#39;127.0.0.1\u0026#39; , 6565 socket_client = socket.socket() socket_client.connect((host,port)) socket_client.send(\u0026#39;我是客户端，很高兴与你连接!\u0026#39;.encode(\u0026#39;utf-8\u0026#39;)) while True: msg = f\u0026#34;\u0026lt;客户端自动回复\u0026gt;{time.time()}\u0026#34;.encode(\u0026#39;utf-8\u0026#39;) data = socket_client.recv(1024).decode(\u0026#39;utf-8\u0026#39;) print(f\u0026#34;收到服务端信息:{data}\u0026#34;) if data == \u0026#39;exit\u0026#39;: msg = \u0026#39;收到来自服务端的\u0026lt;退出\u0026gt;指令\u0026#39;.encode(\u0026#39;utf-8\u0026#39;) socket_client.send(msg) break socket_client.send(msg) socket_client.send(\u0026#39;再见!\u0026#39;.encode(\u0026#39;utf-8\u0026#39;)) socket_client.close() 运行 ","date":"2025-01-17T19:26:00+08:00","permalink":"/post/323/","title":"[Python]初学socket"},{"content":"# 简介\r线程可以并行执行，比如一个Python程序完全可以做到:\n一个线程在输出:你好 一个线程在输出:Hello 像这样一个程序在同一时间做两件乃至多件不同的事情，我们就称之为:多线程并行执行 Python的多线程可以通过threading模块来实现。\n代码 import threading import time def f1(msg): _count = 0 while True: _count += 1 print(f\u0026#34;{msg}{time.time()}第{_count}次执行\u0026#34;) time.sleep(0.5) def f2(name): _count = 0 while True: _count += 1 print(f\u0026#34;{name}{time.time()}第{_count}次执行\u0026#34;) time.sleep(0.5) if __name__ == \u0026#39;__main__\u0026#39;: args_1 = (\u0026#34;呵呵\u0026#34;,) kwargs_1 = {\u0026#34;name\u0026#34;:\u0026#34;cry\u0026#34;} f1_target = threading.Thread(target=f1,args=args_1) f2_target = threading.Thread(target=f2,kwargs=kwargs_1) f1_target.start() f2_target.start() 输出 呵呵1737027879.568585第1次执行\rcry1737027879.568984第1次执行\r呵呵1737027880.0688722第2次执行\rcry1737027880.0694304第2次执行\rcry1737027880.570115第3次执行\r呵呵1737027880.570115第3次执行\rcry1737027881.070405第4次执行\r呵呵1737027881.071373第4次执行\rcry1737027881.5711129第5次执行\r呵呵1737027881.571813第5次执行\rcry1737027882.071477第6次执行\r呵呵1737027882.072063第6次执行 ","date":"2025-01-16T19:50:00+08:00","permalink":"/post/322/","title":"[Python]初学多线程"},{"content":"# 简介\r设计模式就是一种编程套路，使用特定的套路得到特定的效果。\n单例模式 优点 节省内存 节省创建对象的开销 代码 dl.py\nclass apple: pass pingguo = apple() 设计模式-单例.py\nfrom dl import pingguo pg1 = pingguo pg2 = pingguo print(pg1) print(pg2) 输出 \u0026lt;dl.apple object at 0x00000534D057A090\u0026gt;\r\u0026lt;dl.apple object at 0x00000534D057A090\u0026gt; 工厂模式 优点 大批量创建对象的时候有统一的入口，易于代码维护 当发生修改，仅修改工厂类的创建方法即可 符合现实世界的模式，即由工厂来制作产品(对象) 代码 class animal: pass class dog(animal): pass class cat(animal): pass class pig(animal): pass class animalFactory: def get_animal(self,animal_type:str): if animal_type == \u0026#39;d\u0026#39;: return dog() elif animal_type == \u0026#39;c\u0026#39;: return cat() elif animal_type == \u0026#39;p\u0026#39;: return pig() dongwu = animalFactory() gou = dongwu.get_animal(\u0026#39;d\u0026#39;) mao = dongwu.get_animal(\u0026#39;c\u0026#39;) zhu = dongwu.get_animal(\u0026#39;p\u0026#39;) print(gou) print(mao) print(zhu) 输出 \u0026lt;__main__.dog object at 0x0000020BD057A210\u0026gt;\r\u0026lt;__main__.cat object at 0x0000020BD057A390\u0026gt;\r\u0026lt;__main__.pig object at 0x0000020BD057A510\u0026gt; ","date":"2025-01-15T02:39:00+08:00","permalink":"/post/321/","title":"[Python]设计模式"},{"content":"# 简介\r装饰器就是使用创建一个闭包函数，在闭包函数内调用目标函数。 可以达到不改动目标函数的同时，增加额外的功能。 写法 def outer(func): def inner(): print(\u0026#39;开始延迟\u0026#39;) func() print(\u0026#39;延迟结束\u0026#39;) return inner def yanchi(): import random import time seconds = random.randint(1,5) print(f\u0026#34;延迟{seconds}秒\u0026#34;) time.sleep(seconds) \u0026#39;\u0026#39;\u0026#39; fn = outer(yanchi) fn() \u0026#39;\u0026#39;\u0026#39; # 糖写法 @outer # 定义在目标函数之上，和第14行功能一致 def yanchi_2(): import random import time seconds = random.randint(1,5) print(f\u0026#34;延迟{seconds}秒\u0026#34;) time.sleep(seconds) yanchi_2() 输出 开始延迟\r延迟2秒\r延迟结束 ","date":"2025-01-14T18:07:00+08:00","permalink":"/post/320/","title":"[Python]装饰器"},{"content":"# 优点\r无需定义全局变量即可实现通过函数，持续的访问、修改某个值 闭包使用的变量的所用于在函数内，难以被错误的调用修改 缺点 由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存 代码 def ATM(balance): def change (num,type=True) -\u0026gt; int : nonlocal balance # 使用nonlocal关键字修改外部函数的值 if type == True: # 存钱 balance += num print(f\u0026#34;\u0026lt;存款\u0026gt;{num}元，当前余额:{balance}\u0026#34;) else: # 取钱 balance -= num print(f\u0026#34;\u0026lt;取款\u0026gt;{num}元，当前余额:{balance}\u0026#34;) return balance # 返回修改后的余额 return change atm = ATM(100) atm(10) atm(10,1) for x in range(1,10): atm(x) for x in range(10,20): atm(x,False) res:int = atm(200) print(res) 结果 \u0026lt;存款\u0026gt;10元，当前余额:110\r\u0026lt;存款\u0026gt;10元，当前余额:120\r\u0026lt;存款\u0026gt;1元，当前余额:121\r\u0026lt;存款\u0026gt;2元，当前余额:123\r\u0026lt;存款\u0026gt;3元，当前余额:126\r\u0026lt;存款\u0026gt;4元，当前余额:130\r\u0026lt;存款\u0026gt;5元，当前余额:135\r\u0026lt;存款\u0026gt;6元，当前余额:141\r\u0026lt;存款\u0026gt;7元，当前余额:148\r\u0026lt;存款\u0026gt;8元，当前余额:156\r\u0026lt;存款\u0026gt;9元，当前余额:165\r\u0026lt;取款\u0026gt;10元，当前余额:155\r\u0026lt;取款\u0026gt;11元，当前余额:144\r\u0026lt;取款\u0026gt;12元，当前余额:132\r\u0026lt;取款\u0026gt;13元，当前余额:119\r\u0026lt;取款\u0026gt;14元，当前余额:105\r\u0026lt;取款\u0026gt;15元，当前余额:90\r\u0026lt;取款\u0026gt;16元，当前余额:74\r\u0026lt;取款\u0026gt;17元，当前余额:57\r\u0026lt;取款\u0026gt;18元，当前余额:39\r\u0026lt;取款\u0026gt;19元，当前余额:20\r\u0026lt;存款\u0026gt;200元，当前余额:220\r220 ","date":"2025-01-13T22:59:00+08:00","permalink":"/post/319/","title":"[Python]初学闭包"},{"content":"\r你好2025！ 这是今年的第一篇文章，但绝不是最后一篇！\n","date":"2025-01-01T00:09:33+08:00","permalink":"/post/316/","title":"2025，你好！"},{"content":"\r再见2024！ 这是今年第一篇文章， 但也是今年最后一篇。\n","date":"2024-12-31T22:40:04+08:00","permalink":"/post/315/","title":"再见2024!"},{"content":"\r软件 UCL Depthmap （老版） AutoCAD 数据 https://imcry.lanzouw.com/iHvnA0yvouqb\n生成轴线 将dxf文件导入depthmap后，点击工具条上的Axial Map，再点击图形中的道路区域 稍等片刻后将生成大量线段 点击菜单栏 Tools-\u0026gt;Axial/Convex/Pesh-\u0026gt;Reduce to Fewest Line Map 在左侧图层区域选择Fewest-Line Map (Minimal)，并且关闭默认图层 这个时候大致的轴线图已经出来了，但仍存在少量瑕疵，需要将部分轴线进行修改\n移交CAD 这里我以Depthmap导出后在CAD载入的方式进行演示， 由于depthampX系列的print功能缺失，故本次选用老版进行演示\n将图形缩放成合适大小后，点击菜单栏 File-\u0026gt;Print 选择带有PDF的选项，点击确定 打开CAD，点击左上角图标，选择 输入-\u0026gt;PDF 若未能弹出对话框，点击命令行中的 文件 选择文件后会弹出一个窗口，直接确定即可 将背景删除，改变线段颜色后即可得到如图 ","date":"2023-06-11T17:13:00+08:00","permalink":"/post/depthmap_to_cad/","title":"空间句法：使用Depthmap自动生成轴线及导出到CAD"},{"content":"\r开始操作 本文将以某村庄为例\n数据准备 绘制好的轴线图(DXF格式) DepthmapX 0.6.0 相关下载 DepthmapX 0.6.0下载：https://github.com/SpaceGroupUCL/depthmapX/releases/tag/v0.6.0 轴线模型：https://imcry.lanzouw.com/ilaBc0yljzid\n新建图层 打开软件，点击左上角菜单 File-\u0026gt;New 来新建一个新的工程文件 接着点击软件菜单栏 Map-\u0026gt;Import 来载入已经绘制好了的轴线图\n点击菜单栏 Map→Convert Drawing Map，在弹出的对话框中的New Map Type中选择Axial Map，点击OK可以看到新生成了一个新的轴线图。\n轴线图计算分析 在菜单栏处点击Tools→Axial/Convex/Pesh→Run Graph Analysis，在弹出的对话框中设置参数如下：\nRadius：拓扑半径的设定，输入时不同数字间用英文的逗号分隔开。表示在计算时，以某一个元素为中心进行空间映射，分别以“全系统、半径为3….”进行计算。 其中下面三个方框选项：表示保留计算过程中的中间步骤 第四个方框选项：表示对计算结果进行权重设定，即对计算结果的一种修正。只有将其选中，下面的Weight by处才能进行设定，此处选择Line Length作为权重。 设置完毕后回车，得到结果\n此时，先不要急于分析结果，先将左侧的参数切换到Node Count，如果此时出现的是绿色线，就表示模型没有错误，可以进行下一步分析。 如若显示的是一片红色线中间夹杂着几条蓝色线，就说明模型中轴线有断开的地方，将其重新修正之后再进行之前的分析。\n检查无误后，将参数重新切换到Integration[HH]。 整合度高的轴线以红色显示，整合度低的轴线以蓝色显示。 整合度高就表示该原色的可达性高。 城市中那些整合度高的道路一般都是城市中的主要道路，分布些城市的重要功能。 整合度高的道路集中的地方也就是整合度核心，一般都是城市的中心区域。 对比一个城市不同时间的整合度核心，也就可以得到这个城市的发展主线。 查看选择度 将左侧的参数切换到Choice上得到的就是该元素的选择度； 将左侧的参数切换到Choice[Norm]上得到的也是该元素的选择度，是对Choice修正之后的结果； 选择度表示的是一个元素被选择的潜力，在城市道路中，选择度越高的道路代表吸引穿越交通的潜力越高。 查看全局深度 将左侧的参数切换到Total Depth上得到的就是该元素的全局深度； 全局深度表示的是一个元素被到达的潜力，在城市道路中，全局深度越高代表吸引到达交通的潜力越低。 ","date":"2023-06-08T11:15:00+08:00","permalink":"/post/277/","title":"空间句法：第一次轴线模型分析"},{"content":"Ⅰ直线\r===\n快捷键（L），使用方法与AutoCAD类似。 与轴平行：确定一个起点，然后使其与一条轴线颜色 指定数值：确定一个起点，输入数值（毫米）并观察右小角 长度 编辑框的变化，回车。 特别注意，个别用户的初始化单位不同。\nⅡ橡皮擦 快捷键（E） 方法：滑动擦除、点击对象擦除\nⅢ矩形 快捷键（R） 指定长宽：确定一个起点，输入长宽的数值并用英文逗号,隔开两者，例如 2000,3000 切换绘制平面：单机键盘方向左键\nⅣ圆 快捷键（C） 边数：决定这个对象的平滑程度，边数越大则越平滑 修改边数：在确定起点前输入数值并回车 指定半径：确定一个起点，然后输入指定数值并回车\nⅤ多边形 修改边数：在确定起点前输入数值并回车\nⅥ移动 快捷键（M） 方法：鼠标选中后拖动、指定位移、拷贝 拷贝： ① 延展拷贝：按下Ctrl后选中一个对象，输入指定数值，确定第一个副本的位置后可以输入*6，代表间隔指定数值继续复制6个此对象 ② 范围拷贝：按下Ctrl后选中一个对象，输入指定数值，确定第一个副本的位置将作为边界，输入/6，代表在你所确定的范围内系统自动计算间隔继续复制5个此对象。\n","date":"2022-07-04T17:21:00+08:00","permalink":"/post/218/","title":"学习小记：SketchUp"},{"content":"\r到了晚上，饥饿是在所难免的事情，即便是晚饭吃的再多。 花了几分钟的时间洗了凉水澡，将一天的不爽与烦恼统统带走。 出门前把手机和我的专属网抑耳机连接上，播放音乐时才发现另一只耳机毫无反应。 明明前天才给它们哥俩充上电，今天就不行了，真实离谱他妈给离谱开门————离谱到家了！ 出门后短短几分钟的时间，汗水就跟不要钱似的一个劲儿往我身上来，或许这就是夏天的魅力。 到达烧烤店后，随便点点了差不多十来串羊肉，消耗了一张绿色纸币，但是吃的是真的嗨。 在回家的路上心情不由自主的放松，晚风吹过寂静无人的街道，世间万物的节奏慢了下来，出来觅食的老鼠与蟑螂好像在这一瞬间定格。 愉悦的心情一直持续到家门楼下，我被大门拦住的了，门锁可能有它自己的想法，铁了心将我拦在外头\u0026hellip;\n","date":"2022-06-29T02:25:00+08:00","permalink":"/post/205/","title":"夜里小记"},{"content":"\r来到机场 9月11号那天中午，我同父母来到了凤凰机场。在草草与父亲道别后，我随母亲一同前往登机口，坐在门前的座椅上等待着检票。 气象台早在前几日就发布了台风预警，不过它偏移了预警路线是挺令人意想不到的，这何尝不是我中学时期的噩梦。\n开始登机 这是我第三次踏上飞机，第一次和第二次登机是代表学校参加全国性的大赛，回来时还拿了个奖。在广播通知登机前的2分钟，我到面前的一家汉堡店点了冰淇淋，在差不多走完登机桥时我仍然没吃完，索性一大口干下去。我拿着登机牌缓缓地走到座位前，不断地确认自己的座位号。\n抵达武汉 2个月前，我的录取通知书从武汉起飞来到三亚。现在，我从三亚起飞来到武汉。我可能和录取通知书完成了一次跨越时空的“双向奔赴”。下了飞机后来到机场旁的地铁站，坐上我心心念想的地铁，尽管我被车厢里的冷气吹了两小时也毫不在乎。\n进校报道 大学嘛，要说不憧憬是不可能的。 学校的大门口前就是电车站，看着就挺美汁汁~ 进入学校后，我随志愿者游览了一路的风景，向我介绍食堂、超市等等一些生活点。\n军训过后 经过14天军训的洗礼，我的室友吐槽我和刚来时不太一样。的确，来时我没长多少痘，一晒就全冒出来了。\n","date":"2021-10-10T19:45:00+08:00","permalink":"/post/204/","title":"近日小记"},{"content":"## 先扯： ##\r前段时间重装了遍电脑，用百度的方法试了很多遍都安装不上net3.5。 虽说这玩意win10自带了更高的版本，但有些软件并不兼容，运行这类软件时仍弹出“需要安装net3.5”的提示。 问题不光出现在这，甚至是在我绝地求生中莫名其妙的闪退，完了还给我提示这个。 今晚无意间逛着52论坛，碰巧发现一位大神将net3.5提取出来制成一键安装包。\n工具作者： @jidesheng6\n注意事项： 不支持Win10以下的机器 该工具编写框架为.netframework 4.7.2 最低Win10版本必须保证是1507的版本（Bulid版本号：10240） Winform的程序会根据物理设备的分辨率显示方式会有些不同，所以如果发现一些控件偏移，属于正常事件 WIN10 LSTB环境下有可能会运行错误 支持添加CAB文件，以内部版本号命名即可 请和目录下的CabFiles目录配合使用 运行截图 博主的环境是：Windows 10 Enterprise (18363) 操作完毕后可以看到在Windows功能里.net3.5已开启 下载地址： GitHub:https://github.com/jidesheng6/Win10_Offline_InstallNETFX35/releases/tag/1.9\n","date":"2021-07-18T05:05:00+08:00","permalink":"/post/158/","title":"Windows10:一键离线安装NetFrameWork3.5"},{"content":"## 前言 ##\r推荐使用Ctrl + F4快速查找型号 此表仅供参考且仅适用于中国大陆。\n适配机型 2021年6月2日 HUAWEI Mate 40 Pro HUAWEI P40 Pro+ HUAWEI Mate 40 Pro+ HUAWEI Mate 30 Pro HUAWEI Mate 40 RS保时捷设计 HUAWEI Mate 30 Pro 5G HUAWEI Mate 40 HUAWEI Mate 30E Pro 5G HUAWEI Mate 40E HUAWEI Mate 30 RS保时捷设计 HUAWEI Mate X2 HUAWEI P40 HUAWEI Mate 30 HUAWEI P40 4G HUAWEI Mate 30 5G HUAWEI MatePad Pro HUAWEI P40 Pro HUAWEI MatePad Pro 5G 2021年第三季度 HUAWEI Mate Xs HUAWEl nova 8 SE HUAWEI Mate 20 HUAWEI nova 7 5G HUAWEI Mate 20 Pro HUAWEl nova 7 Pro 5G HUAWEI Mate 20 RS保时捷设计 HUAWEl nova 6 HUAWEl nova 7 SE 5G HUAWEI nova 6 5G HUAWEI nova 7 SE 5G乐活版 HUAWEl nova 6 SE HUAWEl nova 7 SE 5G活力版 HUAWEI MatePad 10.8英寸 HUAWEl nova 8 HUAWEI MatePad 10.4英寸 HUAWEl nova 8 Pro HUAWEI MatePad 5G 10.4英寸 HUAWEl nova 8 Pro 4G 2021年第四季度 华为智慧屏 V55 2021款 华为平板M6 8.4英寸 华为智慧屏 V65 2021款 华为平板M6 高能版 华为智慧屏 V75 2021款 华为畅亨平板 2 华为智慧屏 V85 2021款 荣耀30 Pro 华为智慧屏S Pro 55 荣耀30 Pro+ 华为智慧屏S Pro 65 荣耀V30 华为智慧屏S Pro 75 荣耀V30 PRO 华为智慧屏S 55 荣耀30 华为智慧屏S 65 荣耀30s 华为智慧屏S 75 荣耀V20 华为智慧屏X 65 荣耀V20 MOSCHINO联名版 HUAWEI P30 荣耀Magic2 HUAWEI P30 Pro 荣耀20 HUAWEI Mate 20X 5G 荣耀20 PRO HUAWEI Mate 20X 荣耀X10 MAX HUAWEI Mate X 荣耀X10 HUAWEI nova 5 Pro 荣耀平板6 华为畅享20 Pro 5G 荣耀平板X6 华为畅享Z 5G 荣耀Play4 Pro 华为畅享20 Plus 5G 荣耀30青春版 华为麦芒9 5G 荣耀Play4 华为平板 M6 10.8英寸 2022年前6月 HUAWEI Mate 10 华为平板M5 8.4英寸 HUAWEI Mate 10 Pro 华为平板M5 Pro 10.8英寸 HUAWEI Mate 10保时捷设计 华为平板M5 青春版 8英寸 HUAWEI Mate RS保时捷设计 华为平板M5 青春版 10.1英寸 HUAWEI P20 Pro 华为畅享平板 HUAWEI P20 华为智慧屏V55 i HUAWEI nova 4 华为智慧屏V65 i HUAWEl nova 3 华为智慧屏V65 尊爵版 HUAWEl nova 5i Pro 华为智慧屏V65 2019款 HUAWEI nova 5z 华为智慧屏V75 2019款 HUAWEl nova 5 荣耀V10 HUAWEI nova 4e 荣耀10 华为畅享9S 荣耀Play 华为麦芒8 荣耀20S HUAWEI nova 5i 荣耀Play4T Pro 华为畅享10 Plus 荣耀9X HUAWEI Mate 9 荣耀9X PRO HUAWEI Mate 9 Pro 荣耀8X HUAWEI Mate 9 保时捷设计 荣耀9 HUAWEI P10 荣耀10 青春版 HUAWEI P10 Plus 荣耀20 i HUAWEI nova 2s 荣耀20 青春版 华为畅享10S 荣耀V9 华为畅享10 荣耀play 3 华为畅享9 Plus 荣耀平板 58英寸 HUAWEI nova 3i 荣耀Note10 华为平板M510.8英寸 荣耀平板5 10.1英寸 ","date":"2021-07-06T10:42:00+08:00","permalink":"/post/huaweihm/","title":"华为鸿蒙操作系统适配名单"},{"content":"## 非重点部分 ##\r这段时间高考完了就宅家里头 “电竞”，玩PUBG比较上头。 这游戏有美服、亚服、东南亚服、澳服等，就是没有国服，需要借助网游加速器，不然延迟分分钟上百且丢包严重。 市场上的网游加速器的款式多到眼花缭乱，定价方面也是多花多样。 例如雷神加速器，号称是按使用时长计费的加速器，随时暂停计费，新用户可试用。 刚开始我抱着白嫖的心态去试试这款加速器，刚进游戏延迟就把我干傻了，跳ping是真的厉害，还丢包。 但白嫖的工作还得走下去，于是我发现腾讯的加速器（以下称PC端）可以用QQ号白嫖3天。 腾讯的加速器分为VIP线路和SVIP线路，博主住在海南三亚，用VIP线路进亚服的延迟在58~65ms间，还算可以吧。\n白嫖的部署 百度搜索到任意一个卖QQ小号的站点并进入搜索订单页面， 例如我用的是 www.dajunqq.com/query。 联系方式输入一个热门号码，例如我输入的是18888888888。 点进去会显示QQ号和密码，将QQ号COPY，密码需要手打。不过难免会出现已经试用过了的情况，多换几个号试试。 最后，大功告成。 ","date":"2021-06-17T12:55:00+08:00","permalink":"/post/140/","title":"无限白嫖腾讯加速器"},{"content":"\r打开一个目标（斗鱼）视频的网页，在当前页面进入开发者工具的\u0026quot;Network\u0026quot;。 点击监听按钮旁边的搜索按钮调出左边的搜索界面。\n清零 先关闭监听状态，清除抓到的数据，再开启监听。\n抓包 刷新网页，等待网页加载完毕后关闭监听状态。\n搜索 来到左边的搜索界面，搜索 “m3u8” 。\n分析 从得到的搜索结果来看， 前11项为视频片段（.ts文件）的请求， 第12项为m3u8的请求，这个文件相当于视频片段（.ts文件）清单 第13项为一个post获取m3u8地址的请求，如图所见。 得到返回的json文本\n{ \u0026#34;error\u0026#34;:0, \u0026#34;data\u0026#34;:{ \u0026#34;timestamp\u0026#34;:7200, \u0026#34;thumb_video\u0026#34;:{ \u0026#34;high\u0026#34;:{ \u0026#34;url\u0026#34;:\u0026#34;https://play-tx-recpub.douyucdn2.cn/wsd-tx-rec-pub/record/HLS/live-288016rlols5_2010/288016rlols5-2010-1610276828.m3u8?tlink=6022fbcd\u0026amp;tplay=6023886d\u0026amp;exper=0\u0026amp;nlimit=5\u0026amp;us=afa201da74fcc295d4ef528c21121501\u0026amp;sign=5509ebfd9ab8f4a82b545e3af3048bf5\u0026amp;u=121610897\u0026amp;d=afa201da74fcc295d4ef528c21121501\u0026amp;ct=web\u0026amp;vid=18250951\u0026amp;pt=2\u0026amp;cdn=tx\u0026#34; }, \u0026#34;normal\u0026#34;:{ \u0026#34;url\u0026#34;:\u0026#34;https://play-tx-recpub.douyucdn2.cn/wsd-tx-rec-pub/record/HLS/live-288016rlols5_1510/288016rlols5-1510-1610276859.m3u8?tlink=6022fbcd\u0026amp;tplay=6023886d\u0026amp;exper=0\u0026amp;nlimit=5\u0026amp;us=afa201da74fcc295d4ef528c21121501\u0026amp;sign=81bfb94aae7731f1881a963636617a13\u0026amp;u=121610897\u0026amp;d=afa201da74fcc295d4ef528c21121501\u0026amp;ct=web\u0026amp;vid=18250951\u0026amp;pt=2\u0026amp;cdn=tx\u0026#34; }, \u0026#34;super\u0026#34;:{ \u0026#34;url\u0026#34;:\u0026#34;https://play-tx-recpub.douyucdn2.cn/wsd-tx-rec-pub/record/HLS/live-288016rlols5_3980/288016rlols5-3980-1610276828.m3u8?tlink=6022fbcd\u0026amp;tplay=6023886d\u0026amp;exper=0\u0026amp;nlimit=5\u0026amp;us=afa201da74fcc295d4ef528c21121501\u0026amp;sign=bf74dcb48a1644b287760e57d5625057\u0026amp;u=121610897\u0026amp;d=afa201da74fcc295d4ef528c21121501\u0026amp;ct=web\u0026amp;vid=18250951\u0026amp;pt=2\u0026amp;cdn=tx\u0026#34; } }, \u0026#34;p2pmeta\u0026#34;:{ \u0026#34;p2p\u0026#34;:0 } }} high 可能指高清 normal 可能指超清 super 可能指原画\n下载 https://play-tx-recpub.douyucdn2.cn/wsd-tx-rec-pub/record/HLS/live-288016rlols5_3980/288016rlols5-3980-1610276828.m3u8?tlink=6022fbcd\u0026amp;tplay=6023886d\u0026amp;exper=0\u0026amp;nlimit=5\u0026amp;us=afa201da74fcc295d4ef528c21121501\u0026amp;sign=bf74dcb48a1644b287760e57d5625057\u0026amp;u=121610897\u0026amp;d=afa201da74fcc295d4ef528c21121501\u0026amp;ct=web\u0026amp;vid=18250951\u0026amp;pt=2\u0026amp;cdn=tx\r这里就用super的url放入m3u8工具中下载，如图 最后 大功告成！！\n","date":"2021-02-10T03:44:00+08:00","permalink":"/post/139/","title":"记一次抓包斗鱼视频并下载"},{"content":"\r使用前准备 打开 设置-Windows功能 开启Hyper-V功能。 这里我将使用Centos 7.8系统进行安装演示\n启动Hyper-V 在开始菜单里打开Hyper-V\n进入新建虚拟机向导 点击侧边栏中的 新建-虚拟机 进行虚拟机名称和安装位置的设置 指定代数默认选择第一代 分配内存可以勾选动态内存，系统会自动给虚拟机分配内存 配置网络选择Default Switch 选择创建虚拟硬盘，硬盘的大小可根据需要设置，我比较喜欢调成20GB 选择从可启动的CD/DVD-ROM安装操作系统，再选择映像文件，填写下载的 Centos 7.8 iso文件\n最后检查下虚拟机配置，点击完成 安装系统前的准备 Hyper-V主界面中间有个虚拟机的列表，选中刚才创建的虚拟机并右键单击，点击连接\n点击启动\n点击虚拟机界面，用键盘的上下方向键（↑ ↓）进行操作 如图，基本全白的文字代表已被选中，这里要选择Install CentOS，回车，稍等片刻 安装Centos系统## 进入安装页面的第一件事情就是选择语言，中文简体，你懂的 点击网络和主机名 打开右上角的开关，记住虚拟机的IP地址，方便后续操作 点击安装位置 直接点击完成（走个过场） 点击开始安装\n从界面中可以观察到系统已经在进行安装操作了，安装的同时可以设置密码和创建用户 几分钟后提示安装完成，点击重启 SSH连接虚拟机 这里我用的是宝塔远程连接工具， 服务器IP填虚拟机的内网地址，如果没有创建用户的话用户名就填root，密码如果没设置留空即可 连接成功，如图 复制宝塔面板的安装命令\nyum install -y wget \u0026amp;\u0026amp; wget -O install.sh http://download.bt.cn/install/install_6.0.sh \u0026amp;\u0026amp; sh install.sh 在SSH界面中单击右键（粘贴的操作），回车\n安装成功后提示如下图，\nBt-Panel是面板地址（这里把原先那串IP替换成虚拟机的内网地址），\nusername是宝塔用户名，\npassword是宝塔密码\n结束 后续的操作会更加有趣\u0026hellip;\u0026hellip;\n","date":"2020-07-10T18:43:00+08:00","permalink":"/post/91/","title":"使用Windows自带的虚拟机：Hyper-V"},{"content":"## 放假前 ##\r不知道从何时起，我似乎对假期没了兴趣。 收到放假通知的那一刻，心情反而变得紧张起来。 两个星期的作业将这短短的两天假期塞得满满，距离2021届高考的那一天越来越近，一点儿准备也没有。\n上半天 坐在电脑前思考，一次次规划着未来，回神过后却心感无力。\n下半天 闲来没事，打开了这个荒废已久的博客，除了蜘蛛会光顾这里恐怕也找不到什么人。 随便点开自己博客上的文章，图片的大小和尺寸引起了我的注意，想起昨晚看过的一篇其他格式的图片和webp图片的对比文章。 兴趣一下子就来了，我想把博客大部分的图片都转换成这种格式。 因为这webp格式的图片既省带宽又能提速，能把2.6MB的png压成1.1MB的webp 先把文章中的图片全都下载到本地，然后再打开转换工具，并将这些处理过的图片重新上传并引用。 幸亏之前够懒，博客放到发臭都不会去打理，操作10来篇文章便完成了工作， 优化后的访问速度还算可以，就先这样吧。 推工具 软件用的 WebPconvPortable 官网：www.romeolight.com/products/webpconv/ 绿色版打包：\u0026raquo; 蓝奏网盘 \u0026laquo;\n","date":"2020-06-25T22:14:00+08:00","permalink":"/post/79/","title":"2020年端午小记"},{"content":"## 闲话 ##\r“提速降费”政策提出后，三大运营商积极响应，相继推出了各式各样的优惠活动。 比如，“流量不清零”、“取消漫游费”、“携号转网”…… 2019年5月7日，海南电信推出了新一轮宽带免费提速活动，最高速率可达500Mbps。 将宽带信息提交完毕后，次月提速生效。 活动入口 \u0026raquo; 海南电信活动传送门 \u0026laquo; 规则 活动时间：2019年5月20日起 参与用户范围:\n720 元包年宽带用户，可提速到100Mbps； 99元全家福中宽带产品用户、960元包年宽带用户，可提速至200Mbps； 139元全家福中宽带产品用户，可提速至200Mbps或500Mbps； 159元及以上档全家福中宽带产品用户，可提速到300Mbps或500Mbps。 同时也要确保光猫能够支持提速后的速率，若不支持可联系运营商要求更换。\n","date":"2020-06-25T00:44:00+08:00","permalink":"/post/52/","title":"海南电信宽带免费提速最高500Mbps"},{"content":"注册账号就开口问我手机号码？再见您嘞！\r推荐 z-sms：www.z-sms.com\n推荐 pdflibr：www.pdflibr.com\nSMSReceiveFree：smsreceivefree.com\nReceive SMS Online for FREE：www.receive-sms-online.info\nReceive a SMS Online：receive-a-sms.com\nFree SMS Numbers Online：smsnumbersonline.com\nReceive SMS online for Free：sms-online.co/receive-free-sms\nReceive-SMS：receive-sms.com\nReceive FREE SMS online：receivefreesms.com\nRECEIVE SMS ONLINE：www.receivesmsonline.net\nFree Online Phone：www.freeonlinephone.org\nReceive SMS Online：receive-sms-online.com\nTextNow：www.textnow.com\nTextfree：www.pinger.com/text-free\nSELLAITE：sms.sellaite.com\nTwilio：www.twilio.com\n转自 @小瑶\n","date":"2020-05-23T23:56:00+08:00","permalink":"/post/44/","title":"收集到的几个在线短信接码平台"},{"content":"Typecho的文章中的超链接通常是以当前标签页打开，还没阅读完的内容就这样飞了\n以 Typecho 1.1 版本为例 打开 var/HyperDown.php ，目标第398行\n\u0026lt;a href=\\\u0026#34;{$self-\u0026gt;_definitions[$matches[2]]}\\\u0026#34;\u0026gt;{$escaped}\u0026lt;/a\u0026gt; 将其修改为：\n\u0026lt;a target=\\\u0026#34;_blank\\\u0026#34; href=\\\u0026#34;{$self-\u0026gt;_definitions[$matches[2]]}\\\u0026#34;\u0026gt;{$escaped}\u0026lt;/a\u0026gt; ","date":"2020-05-11T13:42:00+08:00","permalink":"/post/41/","title":"Typecho文章里的超链接用新标签页打开"},{"content":"这里枚举了两个可供小伙伴学习的AMH版本和一个Kangle集成脚本，均已去除授权，仅供学习研究\rAMH5.8 极速安装支持的系统支持CentOS、Ubuntu、Debian 已发行的所有版本 kangle集成脚本支持CentOS 6.x/CentOS 7.x系统 AMH5.5 极速安装： wget http://amh.54or.com/amh.sh \u0026amp;\u0026amp; bash amh.sh 2\u0026gt;\u0026amp;1 | tee amh.log\rAMH5.8 极速安装： wget http://amh.54or.com/amh2.sh \u0026amp;\u0026amp; bash amh2.sh 2\u0026gt;\u0026amp;1 | tee amh.log\rkangle集成脚本： yum -y install wget;wget http://kangle.odata.cc/start;sh start ","date":"2020-05-04T02:28:00+08:00","permalink":"/post/31/","title":"几个去授权的服务器面板"},{"content":"以下均通过网络收集\r皮皮虾\nhttps://tool.liumingye.cn/pipixia/ 抖音\nhttps://www.ctrlqq.com/douyin/ http://laomo.me/cdn/html/douyin/ 多平台\nhttps://weishi.iiilab.com/ http://douyin.haiya360.com/ ","date":"2020-05-03T13:25:00+08:00","permalink":"/post/29/","title":"收集到的几个短视频无水印解析"},{"content":"\r就当作是一件幸运的事！\n","date":"2020-02-21T10:20:00+08:00","permalink":"/post/start/","title":"Typecho，我来了"}]