写给三年后自己的一封信
写给三年后自己的一封信嗨,三年后的val213,展信佳。
三年应该很短吧,毕竟高中三年也很短,大一也很短。越长大时间流速越快,想必这三年应该也是白驹过隙。现在在给你写这封信的人是刚刚在二饭二吃完牛杂小面的我,晚上七点半,坐在电脑面前,在VSCode里用Markdown写这封信。而明天早上就是大二的第一节课。不知道你还有几节课能上,也不知道你现在的工具链,挺好奇的。总之,让我来跟你唠叨一下吧。
写信的我现在是这样的生活状态:刚刚过完暑假回到学校,即将开启大二的学习生活。整个大一我好像都很忙,忙着学习忙着玩忙着比赛忙着社团、部门,忙着剪辑视频,完成学校的一个又一个细碎麻烦的事情和课程……很想认真学习接下来的几门专业课,看国外名校的课。今年应该会更加大胆做我觉得应该做的事情,但是应该不会再迟到了(痛苦面具)。
回顾整个大一,确实也有骄傲,也有成就感,也有自信,也有拼搏,但也有失落,有过绝望,有过愤怒,也有内耗,也有烦恼,也有不甘,也有妥协,不知道这些细节现在你还记得多少,肯定很模糊了吧。但是还好我现在已经有写博客的习惯了,都说写作是思维的训练,我接受了这个观点,这也是为什么我现在愿意在这写这 ...
关于芯片与深度学习框架
以下内容由配备GPT4的new-bing生成
关于Ascend(昇腾)Ascend芯片是华为自主研发的一系列人工智能处理器,采用了达芬奇架构,支持全栈全场景的AI应用。Ascend芯片有以下几个特点:
Ascend芯片采用了3D Cube矩阵乘法单元,能够显著提升数据利用率,缩短运算周期,实现更快更强的AI运算。
Ascend芯片集成了scalar、vector和cube三类运算单元,分别支持不同的AI算法场景,在专用加速的同时保证了架构的通用性和灵活性。
Ascend芯片具有很强的平台整合能力,充分利用华为作为系统供应商软硬件结合设计的能力,提供端、边、云的全场景AI基础设施方案。其他AI芯片,如英伟达的GPU和谷歌的TPU,也有各自的优势和特点。例如:
GPU是一种基于SIMT结构的通用并行计算设备,具有高度可编程性和灵活性,可以支持多种AI算法和应用。
TPU是一种基于Systolic Array结构的专用AI加速器,具有高效能效比和低延迟,可以支持大规模的深度学习训练和推理。
MindSpore(昇思)MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全 ...
关于在七月凌晨反思自己生活状态的随想
于是我干脆不睡了,反正心思不在睡眠。
与其囫囵吞枣发布我琐碎庸碌的生活中好不容易积攒起来的宁静,我想不如模仿摄影作品的简介,给每一张这样的相片给出足够的描述,也当作是我当下对生活感触的记录。
是的,对生活的感触,老实说,我已经很久没有看书——没错就是那种在深夜醒来意识到也没有愧疚感的状态,也很久没有画画或是认真地去做一支视频了……这些事情是我曾经最喜欢做的事情,自以为是在表达自己眼中的世界。所以这意味着什么呢,这一段时间,我丢失了对生活的感触,或者说没有时间、不愿意把时间留给感悟生活了。现如今回想,反倒是时间最紧张的高中,是我这些事情私底下偷偷干的最多,留下的文字恐怕也是最多的时候。
是的那么为什么我现在又开始了?因为我意识到了自己现在的处境。高中在对我来说现实苦闷和理想翱翔冲突最大的时候,哪几件事情对我来说是灵魂的偷渡,是人文、艺术,是跟世界、跟自己的对话,是救赎。现在同样是我落差比较大而且面临比较重要的人生抉择而颇感迷茫的时候。所以,当某天晚上我终于因为某些情绪有意无意点开一支探讨孤独的视频,我尘封的记忆被唤醒了。
怎么说呢,那只视频刘擎教授是在谈孤独,谈别人谈孤独,谈别人谈孤独的 ...
【设计模式】三个原则
三个原则SRP(单一职责原则)就一个类来说,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者限制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受意想不到的破坏。软件设计真正要做的许多内容其实就是发现职责并把那些职责互相分离。如果你能想到多于一个理由去修改一个类,那么这个类就有多于一个的职责。
举个例子窗体程序俄罗斯方块,窗体程序和游戏逻辑应该是分离的。比如说如果要移植程序,那么在不同平台上只需要修改窗体类而不需要再去修改游戏逻辑的类。写到这里的时候我想起了我自己写过的多功能日历ValCalender。在这个用QT开发的程序里,虽然我已经尽量地进行了封装和创建了足够多的类,现在来反思我发现我封装的大多数还是窗口杂糅了对应功能的类,我的功能依赖于窗口实体,因此二者是杂揉的,没有符合单一职责原则,可移植性就很低了……🤔
OCP(Open-Close Principle)开放封闭原则OCP认为软件实体应该是可扩展但是不可修改的。也就是说一方面对于扩展是开放的,另一方面对于更改是封闭的。尽管是理想 ...
一些零散的知识点
本文内容和封面均由AI生成(GPT4-bing、DALL-E)
端边云端边云是一种终端-边缘-云协同的架构,可以将云计算和边缘计算有机融合,实现数据的就近处理、智能分析和高效传输。端边云的计算架构主要分为三个部分:
端(End):指的是终端设备,如手机、智能家电、各类传感器、摄像头等,是数据的产生者和消费者,也可以执行一些简单的数据处理任务。
边(Edge):指的是靠近终端设备的边缘服务器或网关,是数据的中转站和加速器,可以执行一些复杂的数据处理任务,如数据清洗、过滤、聚合、缓存、模型推理等,减少对云端的依赖和负担。
云(Cloud):指的是传统的云计算平台,是数据的汇聚点和管理者,可以执行一些全局性和高级别的数据处理任务,如数据存储、分析、挖掘、模型训练等,提供统一的服务和接口。端边云的优势主要有以下几点:
降低时延:通过在边缘侧进行数据处理,可以减少数据在网络中的传输时间,提高响应速度,满足实时性要求。
节省带宽:通过在边缘侧进行数据过滤和压缩,可以减少数据在网络中的传输量,节省网络资源,降低成本。
增强安全:通过在边缘侧进行数据加密和隐私保护,可以减少数据在网络中的泄露风险 ...
【数据结构】sorting
前置概念说明稳定性排序算法的“稳定性”是指,如果两个元素有相等的键值,在排序后这两个元素的相对顺序应保持不变。换句话说,一个稳定的排序算法会保留输入数据中相等元素的相对顺序。
Q: 谁是不稳定的?
A;答曰:“快希选堆”
与其他技术的互动或对比
数据库: 在数据库查询中,稳定的排序算法能确保当你按多个字段排序时,每一级的排序都不会影响其他级别的排序结果。
搜索引擎: 稳定性在搜索结果排序中也很重要,以便维持其他相关因素(如页面权重)的原有顺序。
并行计算: 在并行计算环境下,稳定排序算法更易于实现,并且能更有效地维持数据的相对顺序。
机器学习: 在数据预处理阶段,使用稳定的排序算法可以防止模型因数据顺序改变而受到不必要的影响。
简而言之,稳定性是排序算法中一个经常被忽视但实际上非常重要的特性。它与其他计算领域有很多交集和应用
作者:Native8418
链接:https://www.zhihu.com/question/587663148/answer/3211983666来源:知乎
O(n^2) sorting algorithmsBubble SortSelection Sor ...
【数据结构】并查集
简介并查集是一种树形的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。
每个结点存储的是自己的父节点。
类型weighted-union存储权重信息:根节点存储的原本是-1,为了节省空间,可以把根节点存储的值乘上权重,例如权重为2的根节点,存储的值是-2;权重为3的根节点,存储的值是-3。
基本操作find1234567int find(int x){ if(x==parent[x]) return x; else return find(parent[x]);}
union1234567void union(int x,int y){ int fx=find(x); int fy=find(y); if(fx!=fy) parent[fx]=fy;}
其他union规则
按照高度
按照结点规模path compression 查找路径压缩路径压缩的本质是在查找返回的时候,将路径上的所有节点的父节点都指向根节点,这样可以减少后续查找的时间。
1 ...
【数据结构】图
基本概念
顶点(vertex)
边(edge)
有向图(directed graph)
无向图(undirected graph)
有向边(directed edge)
无向边(undirected edge)
顶点的度(degree)
入度(in-degree)
出度(out-degree)
路径(path)
简单路径(simple path)
环(cycle)
简单环(simple cycle)
连通图(connected graph):任意两个顶点之间都存在路径的无向图称为连通图。
连通分量(connected component)
强连通图(strongly connected graph):任意两个顶点之间都存在路径的有向图称为强连通图。
强连通分量(strongly connected component)
简单图与多重图:没有重复边和自环的图称为简单图,有重复边和自环的图称为多重图。
简单路径与简单回路:路径上的顶点不重复出现的路径称为简单路径。回路上的顶点不重复出现的回路称为简单回路。连通图、强连通图
若无向图中任意两个顶点之间都存在路径(不是边),则称该图为连通图,否 ...
【数据结构】优先队列和栈
优先队列的背景less flexibility, more speed
如果我们的目的是找到最小的值,比较其他数据结构:
Lists
If sorted: FindMin is O(1) but Insert is O(N)
If not sorted: Insert is O(1) but FindMin is O(N)
Balanced Binary Search Trees (BSTs)
Insert is O(log N) and FindMin is O(log N)
Hash Tables
Insert O(1) but no hope for FindMin
BSTs look good but…
BSTs are efficient for all Finds, not just FindMin
We only need FindMin
PQ 优先队列Useful if you want to keep track of the “smallest”, “largest”, “best” etc. seen so far.
1234567891011 ...
【数据结构】Btree家族
BtreeBtree 介绍
Btree 是一种多路搜索树,每个节点可以存储多个元素,每个元素可以有多个子节点。
对于一棵M阶的B树,每个节点最多有M个子节点,最少有⌈M/2⌉个子节点(⌈x⌉为向上取整符号);最多有M-1个元素,最少有⌈M/2⌉-1个元素。(B+树也是一样)
2-3树是一种特殊的 btree,2-3树的阶数为 3,每个节点最多有 2 个元素,最多有 3 个子节点。(其中“2-3”代表的是该树允许的子节点个数范围)
同样地,对于一棵4阶的2-3-4树,每个节点最多有4个子节点,最多有3个元素。每个节点最少有2个子节点,最少有1个元素。Btree 特性1.关键字集合分布在整颗树中;
2.任何一个关键字出现且只出现在一个结点中;
3.搜索有可能在非叶子结点结束;
4.其搜索性能等价于在关键字全集内做一次二分查找;
Btree 的插入
插入的时候,先找到插入的位置,然后插入到叶子节点中。
如果插入之后,叶子节点的元素个数大于 m,那么就需要进行分裂操作。
分裂操作:将叶子节点的元素分成两部分,左边的元素个数为 (m+1)/2,右边的元素个数为 m-(m+1)/2,然后将左边的 ...