杂谈

体验copilot

体验了一段时间的copilot,是时候来写个简单的总结了。 copilot是什么 copilot是一个vscode的插件。最初收到这个消息的时候,我就去申请参与内测,可能那时候已经晚了,一直等到公测才用上。它是一款自动提示插件,不过它的自动提示能力远超以前用过的,一用上,就把我惊艳到了,不是一般的函数名完成,或成员提示,而是一整段代码给你提示完成,甚至在尝试猜测你想要写的功能,直接给你补完一个函数甚至一个类。 先来看几个补全效果图: 以上没有行号灰色部分就是自动补全的部分,你给出函数名,它就猜出你应该要的代码的效果,那以下来一个更复杂点的排序,当然也是没有问题的。 不止如此,你只要写上接下来的函数的注释,有一些它也能直接给你补完这个函数的实现,你的注释还能帮助它提供更准确的信息。所以这又一次说明注释的作用,不但是给人看的,不但是用来生成自动化文档的,甚至是用来自动生成代码的。

折腾NAND

近期在折腾SSD、SD、U盘,折腾差不多来写个总结,坑不少。本文部分内容会随着时间而变化,于2021年12月编写。 常见NAND硬件 用于储存的基于NAND的硬件,有SD卡、MicroSD卡,U盘,移动固态硬盘,固态硬盘,通常来说,SD卡这类体积小的速度最慢,U盘次之,再就是移动固态硬盘,最快是固态硬盘。之所以说通常,因为还要看接口和协议速度。 颗粒品质,原片、白片、黑片 储存颗粒按品质划分可以分为三大类,原片、白片、黑片。原片就是品质最好的,原厂最严格标准下的产品,白片就是从晶圆上不及格的里面,把还相对较好的挑选出来,黑片就是白片也不如,在剩下的挑选还能用的,同时把坏区进行屏蔽后造出来的颗粒,某宝上特别便宜的U盘肯定是黑片,还有像MP3,玩具等,通常都是用的黑片。黑片寿命说不准,快的一个星期,慢的2年,看运气。 颗粒类型,SLC、MLC、TLC、QLC、3D NAND SLC表示,一个存储单元,只存0和1,即1bit,MLC保存00、01、10、11,即2bits,同理,TLC可以保存3bits,QLC保存4bits。SLC最贵,速度最快,寿命最长,可达10W次擦除(原片颗粒的情况下,不算白片黑片,下同)。MLC次之,约3000到5000次擦除。TLC再次之,约1000次擦除。QLC速度最慢,寿命最短,约800次擦除。另外,3D NAND可以大幅度提升寿命,3D TLC可达3000到5000次擦除,3D QLC可达1000到3000次擦除。

折腾linux

近期在折腾linux,折腾差不多来写个总结,这货折腾了我很长的时间。由于USB3.0已经发展很久了,现在随便买的MicroSD/SD卡或U盘基本上都是USB3.0 class 10起步,所以考虑直接用这些来安装系统,这样你对哪个系统不满意直接换个U盘或SD卡就搞定了,而且测试下来速度也不慢。即使你的机器只有USB2.0接口,那也是能用的,就是启动时能感觉出来慢一些。这个也是方便咱们在校学生只有一台电脑,能方便更换系统不必每次折腾一次硬盘,同时可以熟悉比赛时所用的linux环境。另外,如果你想偷懒,我在这也准备了一些系统镜像,直接刷入U盘即可使用,请参见本文最末尾。本文主要针对LTS20版ubuntu,存在有效时限。 在USB存储器上安装linux操作系统 在USB设备上安装个linux系统是很容易的,比起windows和MacOS来说,容易很多。这里有两种操作方式,一是使用虚拟机,这样我们只需要准备一个U盘(或SD或MicroSD卡,下文中说的U盘通常指这三者,且容量必须是16G或以上),二是使用真实机器来安装,这样我们需要准备两个U盘,多出来的一个是用来制作安装盘,安装工具推荐 Rufus 和 YUMI 以及 Ventoy,后两者可以用于制作多启动的U盘。

大整数高精度计算——有趣的实现

这里收录一些有意思的实现,不过我都有进行改编以更方便使用,不过千万不要指望这性能有多高。收录的条件: 支持四则运算,必须包含除法及求余 支持字符串输入输出 代码不长 small biginteger library for contest 代码原作者Jane Alam Jan,你可以在Google上直接搜索small_biginteger_library_for_contest.pdf并下载到原始说明文档及代码,这里提供一份代码,改动不多,增加了int的构造函数和其它不等号的重载,乘法效率有优化,且增加输出到string而不直接输出终端,以便在其它场合使用更方便。

很头疼拼图

本拼图难度较高,是给程序解答专用的题目(手工解我觉得没多少可能,但不排除有运气极佳的人),是检验你的程序效率有多高用的。 它的名字是很头疼拼图,因为放入的块有H和两种T形状,而HTT就是很头疼。一共有21个块,放入一个12x12的框里,具体形状如下图 以上是就是原题,每个小方块长宽均为1,底板尺寸是12x12。全部21块放入即成功解出,每一块均可以任意平移、旋转、翻转。你需要确定本题有多少个本质不同的解及相应具体答案。答案就不在这公开了,祝玩得开心。

小恐龙拼图

本拼图难度较高,同时作为2021新年的起点! 它的名字是小恐龙拼图,因为需要连同右边小恐龙形状的拼图块一起放入,一共有11个块,放入一个12x12的框里,如下图 以上是就是原题,每个小方块长宽均为1,底板尺寸是12x12。全部11块放入即成功解出,每一块均可以任意平移、旋转、翻转。答案就不在这公开了,祝玩得开心。

101010拼图

前两个拼图最多算热个身,难度不高,真正有点挑战的是以下这个,作为2020的纪念 它的名字是101010,因为需要把10个块放入一个10x10的框里,如下图 以上是就是原题,每个小方块长宽均为1,底板尺寸是10x10。右边的块每一块都写了x2,表示有两块完全一样的形状,全部10块放入即成功解出,每一块均可以任意平移、旋转、翻转。答案就不在这公开了,祝玩得开心。

10个问号拼图

刷题经常搞得自己一脸问号,就想到弄一个由问号组成的拼图,如下图 因为由10块一样的形似问号组合而成,所以我命名为10个问号。 以上是就是原题,不同颜色来区分不同位置的小块。每个小方块长宽均为1,底板尺寸是10x10。要求把右边的“十”无重叠放入到10个问号里,放入即成功解出,答案就不在这公开了,祝玩得开心。

Orz14拼图

为了表达对大佬的膜拜,特设计一款拼图,由14个近似Orz形状的小块组合而成,如下图 因为由14块一样的小块组合而成,所以我命名为Orz14,同时也有Orz一直到4的含义。 以上是就是原题,不同颜色来区分不同位置的小块。每个小方块长宽均为1,底板尺寸是11x11。要求把右边的绿色小块也一并无重叠放入,这一块就代表大佬,放入即成功解出,答案就不在这公开了,祝玩得开心。

解迷建模

这次来聊点简单的,也许你偶尔有机会在地摊上看到有人摆了一堆解锁玩具,这回我们通过建模来解决当中属于迷宫类型的玩具。 魔金·円 第一图是初始状态,第二图是解开后各自的形状。为了更能理解接下来我说的,最好当然是你手上有一个一样的。 但是,事实上可以存在两种不同的初始状态,其路线也略不相同,以下会做说明。 编码 稍微操作几下,我们就会发现,它的操作很简单,它的边缘有一上一下,在中间的孔也有一左一右,即边缘的宽度小于等于中间的孔时,就可穿过一格。我们把它如下图摆放(俯视图):