使用链接来直接存储小文件内容
背景
我们有的时候只是涉及到一些小文件,比如一些配置文件,一些小的图片等等,这些文件的内容不是很大,但是我们又不想直接把这些文件放到项目中,这个时候我们可以使用链接来直接存储这些小文件的内容。
而url支持使用 data 协议来使用base64格式直接存储小文件的内容,这样我们就可以直接使用链接来存储小文件的内容。
使用
我们可以使用如下的方式来存储小文件的内容:
1 | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAAA/0lEQVQ4jZXTsUoDQRDG8d8Q9" alt="Red dot" /> |
这里的
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAAA/0lEQVQ4jZXTsUoDQRDG8d8Q9
就是一个base64格式的图片内容,我们可以直接使用这个链接来展示图片。
然后我写了一个简单的脚本来生成base64格式的图片内容:
1 | #include <fstream> |
这个脚本可以将指定的文件转换为base64格式的内容,并且生成一个md文件,这个md文件包含了下载链接,我们可以直接使用这个md文件来展示下载链接。
下面就是一个使用这个脚本生成的md文件的例子:
1 | --- |
这样我们就可以直接使用这个md文件来展示下载链接了。
QQnt插件指南
背景
新版 QQnt 使用了基于 Node.js 的插件架构技术,这种技术可以让开发者通过编写插件来扩展 QQnt 的功能。Node.js 是一种 JavaScript 运行时环境,它可以让开发者使用 JavaScript 编写服务器端应用程序。
其使用了node.js来进行处理的话,就意味着我们可以使用插件,来对最终渲染的内容进行修改。实际上就和 【html网页可以使用js插件进行自定义】或者说【hexo可以使用node.js插件进行自定义一样】。
QQnt 的插件架构技术利用了 Node.js 的模块化特性,将不同的功能模块封装成独立的插件,并通过插件管理器来加载和管理这些插件。LiteLoaderQQnt就为我们提供了这样的一个插件管理器,下面将其简称为LLnt。
使用方式&注意事项
使用方式可以查看他们的github页面,有十分详细的教程,在这里就不过多赘述。 LiteLoaderQQNT
tips:设置里面所做出的更改既无法保存也无法生效
需要注意的是,软件必须获取qqnt安装位置的所有文件访问权限,不然的话,llnt设置里面所做出的更改既无法保存也无法生效。解决这个问题有两种办法:
方法一:调整安装位置
只需要将qq安装位置不要放在默认的program file下即可,因为访问里面的文件需要管理员权限。可以将qq安装到其他目录,比如C盘的根目录或者自定义的文件夹中。这样就可以获得访问权限,llnt设置里面的更改才能保存和生效。
方法二:将qqnt文件夹取消只读,以管理员身份启动qqnt
另一种解决方法是取消qqnt文件夹的只读属性,并以管理员身份启动qqnt。这样可以确保llnt设置里面的更改能够保存和生效。
要取消qqnt文件夹的只读属性,可以按照以下步骤操作:
- 在资源管理器中,找到qqnt文件夹的位置。
- 右键单击qqnt文件夹,并选择“属性”选项。
- 在属性对话框中,取消选中“只读”复选框。
- 单击“确定”按钮保存更改。
然后,以管理员身份启动qqnt,可以通过以下步骤完成:
- 找到qqnt的快捷方式或可执行文件。
- 右键单击快捷方式或可执行文件,并选择“以管理员身份运行”选项。
这样,llnt设置里面的更改就能够保存和生效了。
下面我保存了一些下载链接,虽然说按理来说可以直接上github链接的,但是总是感觉那个不太稳定(作者删库跑路),所以说这里相当于存一份~
泰坦陨落2:泰坦和铁驭
山海旅人:修改故事的因果……
咩咩启示录:不错的家园建造和肉鸽的融合的游戏
2024/05.01 星期三
水晶之灾介绍
游戏介绍
概述
跳出盒子工作室制作
是一款卡牌战棋杀戮尖塔like类游戏,打算融合: - 战棋 - 卡牌管理元素 - 杀戮尖塔like的肉鸽
四个方向的创新
1. 多角色设计&卡牌循环机制创新
创意思考
多角色设计指的是玩家通过操作复数的角色来完成游戏给定的目标,其本质是在有限角色限制下的角色行为规划。
在很多游戏中,设计多角色设计往往是为了让玩家合理规划不同角色的合作,从而保护目标建筑,或者攻破目标单位。
但是常规的这种设计较为无聊,让我们进一步创新,假设需要保护的对象就是英雄本身……甚至更进一步,需要保护的对象和抽牌堆弃牌堆相关联……
具体而言:
两个主单位,两个从单位,主单位控制两个能力”抽牌堆“”弃牌堆“,弃牌堆炸了之后,置入弃牌堆的牌会被散落。而此时,获取卡牌需要使用移动过去,但是同时,为了调节 卡牌 和 移动 的 矛盾我们可以增加一个拾取范围。
我的看法:
1 | title:我的思考:无用的设计 |
u盘扩容盘检测以及修复
在网上购买的u盘往往会存在是扩容盘甚至是扩容TF卡的可能,对于这种U盘,最可恨的还不是其造假的纸面数据,而是其可能会带来的数据损失的风险。
下面简单介绍一下如何检测扩容盘以及如何修复扩容盘
扩容盘的检测
扩容盘的检测需要使用专业的工具,使用360或者电脑管家之类的工具往往是测不确的。我们一般可以通过两种方式来判断其是否是扩容盘: 1. 通过检测芯片型号来确定其真实的大小 2. 通过暴力填满来确定其真实的大小
通过检测芯片型号来确定其真实的大小
这是最简单的方式,但是也是最容易出错的方法之一。因为可以通过伪造芯片型号的技术日益高超,使得仅仅依靠型号检测来确认芯片的真实性变得不再可靠。
通过暴力填满来确定其真实的大小
一般会使用 mydisktest 来检测(图吧工具箱里面有) 这种方法是通过将U盘填满文件,以此来确定U盘的实际容量。这种方法虽然较为可靠,但耗时较长。
具体操作原理如下:
- 将文件持续写入u盘中
- 记录下所添加的文件的总大小,并且校验文件的完整性
- 通过校验所有文件存储的内容是否完整,我们可以知道u盘实际容量以及哪个片区存在问题。
还原扩容盘
一般有两种办法: 1. 修改U盘分区 2. 使用量产工具将U盘主控还原为真实大小
修改U盘分区的方法:
- 首先,我们需要下载一个分区工具,如DiskGenius。
- 将U盘插入电脑,打开DiskGenius软件,找到U盘所在的磁盘。
- 在磁盘列表中,右键点击U盘磁盘,选择“调整分区大小”选项。
- 在弹出的窗口中,选择“快速分区”,根据需要进行调整。
- 确认调整后,点击“保存更改”按钮,然后安全弹出U盘。
使用量产工具
- 查看U盘使用的芯片型号,可以使用这个软件:chipgenius(图吧工具箱-外设工具里面有)
- 下载对应的量产工具,可以查看网站:U盘量产工具,U盘量产工具下载大全_U盘量产网 (upantool.com)
- 将U盘插入电脑,运行量产工具,选择相应的U盘型号和量产方案。
- 在量产工具中,找到“容量调整”或“分区调整”选项,根据需要进行调整。
- 确认调整后,点击“开始量产”按钮,等待量产过程完成。
- 量产完成后,安全弹出U盘,即可看到U盘的实际容量。
tensor加法存在的问题
[[pytorch:张量(tenser)]] #### 问题阐述
python的实现逻辑和内存回收机制挺奇怪的。实际上,当使用tensor类型的时候,其更像是存储了一个指针:
- 创建变量的时候,先申请分配内存,然后再将变量指向其存储tensor的位置
- 计算的时候,实际上是不是将其对应的值赋予过去,而是将位置赋予过去。
这就导致了一个问题:
1 | before = id(x) |
输出:false
实际上,计算x+y的时候,系统先申请了一个内存空间,然后将计算结果放在这个空间内,最后将 x存储的位置改为这个内存空间的地址……
所有的变量都是存储在内存中的,如果x释放出来的内存没有被及时释放,这样就会带来很大的内存占用冗余,而这在本就对内存占用需求比较大的深度学习来说是致命的。
解决办法
所以说可以换一种写法,就可以使得其代码效率优化:
1 | z[:] = x + y |
这样的话,相当于将值进行了复写,而不是重复申请更换空间。而x+y产生的临时内存占用将会被赋值完之后被释放。
如果说,我们知道后面x中存储的数据不再会被使用了,也可以使用下面的写法:
1 | x += y |