学习
文章平均质量分 64
carpe~diem
这个作者很懒,什么都没留下…
展开
-
MIT 6.S081学习笔记
以Xv6和RISC-V为例,介绍了现代操作系统设计的基础理念:系统调用pipe、fork、exec等;延迟分配、写时拷贝、线程切换、自旋/睡眠锁、读写锁、RCU、文件系统、日志(事务&崩溃恢复)、软/硬链接、DMA、中断和轮询和内存映射文件等常见架构。原创 2023-02-27 11:00:02 · 826 阅读 · 0 评论 -
Cache(缓存)基本概念
Cache——位于CPU上,处于寄存器和内存之间的存储单元。原创 2023-01-02 14:52:27 · 1755 阅读 · 0 评论 -
CS61C Spring 2021——Project 2: CS61Classify要求及实现思路
1.按部就班的完成即可,注意所谓的calling convention,将常用的变量存储在s寄存器(调用子函数前后值不会发生变化)中,临时变量存储在t寄存器中。原创 2022-11-09 16:01:54 · 522 阅读 · 0 评论 -
git push错误记录
使用push操作将文件上传到repo时出现time out/ssh error等信息,一般都是那个原因。因此将push/pull的方式更改为ssh,参考博客。记录使用git将本地文件push到repo时出现的错误及解决方案。原创 2022-09-27 11:03:31 · 373 阅读 · 0 评论 -
CS61C Spring 2021——Project 1: Philphix要求及实现思路
它接受一个单一的命令行参数作为输入(包含将要使用的替换集的文件名),根据输入的信息选择对应的字符替换集合。集合由一系列单词对组成,每一对单词占据一行,一对单词之间由任意数量的tab/space分隔。如果输入的单词不匹配的话,原样print;如果单词匹配,print符合最高优先权的替换单词。第一个单词为待匹配单词,第二个单词为替换单词。2.单词首字母变为小写后和待匹配单词对应;3.单词转换为小写后和待匹配单词对应。1.单词恰好和待匹配单词对应;原创 2022-09-22 15:21:44 · 574 阅读 · 5 评论 -
CS61C Spring 2021笔记
课程政策、相关的服务(Gradescope, Hive machines, Piazza之类的,基本上用不到)、Linux和git相关命令(有一定参考价值)。数字电路基础,采样、量化和编码,二进制、十进制和十六进制之间的相互转换;复习了Lec 1所讲的知识点,略过。原码、反码、补码和偏置编码的基本概念。原创 2022-09-22 11:02:41 · 956 阅读 · 0 评论 -
MIT6.031学习笔记
记录在中发现的新东西MIT6.031能带给我的:英语阅读材料,复习Java,为CS61C的学习做准备。原创 2022-08-05 13:35:10 · 488 阅读 · 0 评论 -
ClickHouse+DBeaver安装总结(踩坑记录)
原计划是在win上安装clickhouse,并打算用DBeaver对其进行操作。但后来问题较多,无法解决,使用云服务器安装ClickHouse,主机远程访问的方式代替。记录这个过程存在的问题。原创 2022-07-26 18:09:22 · 1307 阅读 · 0 评论 -
proto—go语言生成代码参考(Generated-code reference中文翻译)
对go语言生成代码参考页面进行了翻译(大部分是google翻译做的,人工润色了一下),加深对gRPC的理解,方便以后复习。Generated-code reference(中文翻译) 此页面对使用grpc插件protoc-gen-go生成的代码进行了描述(使用protoc命令编译.proto文件)。 您可以在服务定义中找到在.proto文件如何定义 gRPC 服务。 线程安全:请注意,客户端RPC调用和服务器端RPC处理程序是线程安全的,并且旨在在并发 goroutine上运行。 但还要注意翻译 2022-07-12 18:10:12 · 706 阅读 · 0 评论 -
Go语言学习笔记
总结一下初学go语言的笔记,方便复习 参考书籍:《go语言趣学指南》 使用playground运行代码 使用main方法标识代码入口 大括号的唯一位置 在go中,大括号只有一种放置位置,左大括号与func关键字于同一层,右大括号位于单独一层,否则会报错。 使用const标识常量,使用var标识变量 变量声明的三种方式 var简短声明 上述两种方式实现的效果完全一样 +=、++、–等操作符仍然有效 if分支 使用&&表示逻辑与,||表示逻辑或,!表示逻辑非原创 2022-07-04 18:14:47 · 439 阅读 · 0 评论 -
gRPC(Python)总结+踩坑记录
总结一下在使用gRPC的过程中踩过的那些坑, 一定要仔细看官方文档!!!参考文档:Language Guide (proto3)Python Generated Code1.前言 出于项目需要,使用Python对gRPC进行二次开发。以前从没有接触过相关的概念,对于RPC、xml、json的了解也只限于听过名字的程度。初步接触gRPC的推荐阅读资源: gRPC官方(基本上所有资料都在这里,但全英文和一些专有名词看得我头疼) Protobuf3语言指南(中文翻译版) gR原创 2022-06-17 18:04:30 · 1442 阅读 · 0 评论 -
自顶向下方法学习笔记
记录自顶向下方法的学习笔记,方便以后复习第一章 计算机网络和internet 1.计算机网络中的通信过程可以用快递的方式类比。 小明想把一本书(数据)寄给北京的小红,他首先得选择一个快递公司(ftp/http/smtp),然后填写寄件人和收件人地址(host,socket interface),快递公司将这本书按照自己公司的规定进行包装(packet),然后用货运汽车运送,这其中经过的交叉路口就类似于switch,将数据packet进行转发。 2.协议是计算机网络中的重要组成,它规范了hos原创 2022-06-07 11:42:44 · 371 阅读 · 0 评论 -
使用EVE-NG安装Cisco Nexus 9300v虚拟交换机
参考链接: 思科官方文档 EVE-NG模拟器教程(二)——模拟器安装 在EVE-NG中安装Nexus 9k Cisco Virtual交换机 值得注意的是,按照视频中的步骤在EVE-NG中安装虚拟交换机成功后,点击交换机可能不会在浏览器上方弹出预期的弹框,此时需要安装EVE-NG-Win-Client-Pack此外,还可以将EVE-NG安装在ESXI中,再在EVE-NG中安装思科的虚拟交换机,便于EVE-NG和其他虚拟机进行通信,相关链接如下: 在虚拟机VMWare16中安装esx原创 2022-05-28 17:09:16 · 1884 阅读 · 0 评论 -
CS61B学习笔记——proj3 CS61BYoW的要求及实现
记录proj3的要求及实现思路,只实现了proj3最基础的部分。总体来看,proj3的难度和价值都远低于pro2。Skeleton Code Structure Two main packages:byow.TileEngine & byow.Core byow.TileEngine TERenderer.java——与render相关的方法 byow.Core——推荐将此项目中所有代码都放在此package下 RandomUtils.java——处理随机性相关的组原创 2022-05-26 17:04:52 · 2090 阅读 · 1 评论 -
压缩(Compression)/霍夫曼编码原理及实现(Java)
不同的文件各种信息出现的频率不同; 一种单一的编码方式可能只对某些文件而言是最优解; 霍夫曼编码:根据文件中各种信息出现的频率进行变长编码。 以英文文本进行举例说明(汉字、图像中的bit可以类推)。霍夫曼编码 根据出现的频率对信息进行编码,如图例所示。思路 给定一个字符串,计算每个符号出现的频率,从小到大排列; 使用哈夫曼编码的方式生成编码map和解码trie; 使用编码map将字符串压缩编码; 将编码后的bit和解码trie一起传输; 使用解码trie将字符原创 2022-05-19 20:21:50 · 441 阅读 · 0 评论 -
B-Tree和红黑树原理及部分实现(Java)
B-tree/2-3 tree/2-3-4 tree:在BST的基础上对它的worst case进行了优化,B-tree更加平衡。满足条件 所有叶子节点到root节点的距离都相同; 一个具有k个item的非叶子节点,它一定有k+1个child。 (2-3 tree:最多可以有3个child,2-3-4 tree:最多可以有4个child) 以2-3 tree为例展示insert操作的过程,2-3-4 tree类似。 红黑树(Red Black Tree ):对BST进行旋转可以平原创 2022-05-18 15:44:55 · 330 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)原理及实现(Java)
二叉搜索树(Binary Search Tree)—— 二叉树中非常经典的一种数据结构。满足条件 左子树的所有节点小于root; 右子树的所有节点大于root; 节点值不能重复。缺陷 Search Best case: O(logN),Worst case:O(N) Insert Best case: O(logN),Worst case:O(N) 当BST不平衡时(N为BST中节点的数量),极端情况下类似于单链表,search和insert操作的时间复杂度均为O(N原创 2022-05-12 16:04:57 · 258 阅读 · 0 评论 -
Java杂记
记录java中零碎的细节String和StringBuilder 在java中对String进行拼接时,不推荐使用“+”,这是因为每次“+”java并不是在修改原String,而是创建了一个新的String Object,所以“+”的时间随String的长度呈线性变化。 使用StringBuilder类创建一个可变的String,这样就不用再每次创建新的Object了,节约很多时间。==和equal() 前者比较的是两个object存储的bit是否相同(int、String、地址);原创 2022-05-12 12:41:01 · 66 阅读 · 0 评论 -
常见的排序算法原理及实现(Java)
常见的排序(Sort)算法有选择排序、堆排序、归并排序、插入排序和快速排序等。算法原理 选择排序 O(N^2) 参考博客选择排序算法原理及实现(Java/Python) 归并排序 O(NlogN) 参考博客归并排序算法原理及实现(Java) 堆排序 O(NlogN) 使用最大堆(maxHeap)进行排序; 首先将待排序的元素放入maxHeap中,再将maxHeap中的元素输出到结果数组中。 改进堆排序:就地维护一个maxHeap,节约空间。 插入原创 2022-05-10 14:33:59 · 237 阅读 · 0 评论 -
字典树(Trie)原理及实现(Java)
字典树(Trie)—— 存储字符串作为key的数据结构。因为Trie存储字符串时特殊的结构,它和BST、HashTable等相比具有独特的优势(如前缀匹配等)。满足条件 每个节点只存储一个字母; 位于同一分支上的字母组成字符串(尾节点需要单独标记)。实现方式 Trie有三种实现方式: 数组 —— 字母有限,每个节点可以使用固定大小的数组作为child节点的索引; BST —— 使用BST作为child节点的索引,与数组相比可以节约一定的空间; HashTable —— 使用原创 2022-05-06 16:47:52 · 1160 阅读 · 0 评论 -
K-d(k-dimension)Tree原理及实现(Java)
使用BST存储2D数据有天然的缺陷,只能比较一个维度的信息,从而造成信息丢失。通常使用四叉树(QuadTree,按照空间划分区域)存储2D数据,使用八叉树(OctTree,按照空间划分区域)存储3D数据。 K-d(k-dimension)Tree是以二叉树的形式存储数据的,但它使用特殊的方式划分空间,理论上可以存储多个维度的数据,并且在最近邻搜索算法nearest()上通过剪枝,获得了较高的效率。 下面以2D kdTree为例,多维kdTree在此基础上扩展即可。满足条件 root节点将整原创 2022-05-06 12:12:28 · 794 阅读 · 0 评论 -
最小生成树(Minimum Spanning Tree)的原理及实现(Java)
最小生成树(Minimum Spanning Tree):给定无向图中,边权重最小的生成树。满足条件 生成树——包含图中所有顶点的树; 最小——边权重之和最小的生成树。 它是图中全局的概念,而SPT(Shortest Path Tree,最短路径树)是相对图中某一个初始节点而言的。算法原理cut和crossing edge Cut——将图中所有顶点分入(这个好像是随便来的?)两个非空集合中; Crossing Edge——连接的顶点分别位于不同的集合中。 在一次cut中,原创 2022-04-29 16:42:24 · 1761 阅读 · 0 评论 -
Graph中环路检测(DFS&WQU)及实现(Java)
DFS检测环路 1.marked数组初始化为0,初始节点随便选一个; 2.标记当前节点(marked数组对应位置变为1),检测其是否存在环路(同时记录parent节点),如果当前节点的邻接节点v中(除parent外)有已经被marked的节点,则有环路存在,return true; 3.访问未被marked的邻接节点v,重复2过程; 4.没有环路存在,return false。WQU检测环路java代码 使用如下所示的无向图作为示例 CheckCircle.javaimpor原创 2022-04-28 16:57:41 · 640 阅读 · 0 评论 -
加权快速联合(Weighted Quick Union)算法原理及实现(Java)
加权快速联合(WQU,Weighted Quick Union),用于检测元素是否在同一个集合中。Operationpublic int parent(int p); // 返回节点p的parent节点public boolean isConnected(int p, int q); // 判断节点p和q是否属于同一个集合public void connect(int p, int q); // 连接节点p和节点qpublic int find(int p); // 返回节点p的ro原创 2022-04-27 19:19:31 · 1652 阅读 · 2 评论 -
有向图(directed graph)DFS/BFS及实现(Java)
DFS/BFSDFS——深度优先搜素,递归;BFS——广度优先搜索,队列;java代码 使用如下所示的有向图作为示例 GraphSearch.javaimport java.util.ArrayList;import java.util.Arrays;import java.util.List;public class GraphSearch { private List<Integer> res; private int[] marked; p原创 2022-04-27 11:01:30 · 1386 阅读 · 0 评论 -
迪克斯特拉(Dijkstra)算法原理及实现(Java)
迪克斯特拉(Dijkstra)算法:解决有权图中的最短路径(使用优先队列)问题; 最短路径树(Shortest Path Tree):所有节点的最短路径(相对于初始节点)组成的树。算法原理 Cut和Crossing edge Prims算法java代码To be a sailor of the world bound for all ports....原创 2022-04-26 16:43:25 · 1717 阅读 · 0 评论 -
简单图(simple graph)原理及实现(Java)
简单图(simple graph):既不包含平行边,也没有自环的图。Operation Graph(int v); // Create empty graph with v vertices public void addEdge(int v, int w); // add an edge v-w Iterable<Integer> adj(int v); // vertices adjacent to v public int V(); // nu原创 2022-04-22 12:46:51 · 3090 阅读 · 0 评论 -
解决java报错class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Comparable
记录一下遇见过的奇怪报错~正确代码public class Test<T> { private T[] test; private int size; Test() { size = 8; test = (T[]) new Object[8]; } public static void main(String[] args) { Test t = new Test(); }}当泛型变量原创 2022-04-22 10:37:11 · 4352 阅读 · 0 评论 -
堆(minHeap/maxHeap)原理及实现(Java)
堆(heap,特殊的完全二叉树),为了实现优先队列(对队列中对最大或者最小M个元素进行跟踪)而产生。满足条件 使用minHeap作为例子,maxHeap类似。 min:每个节点的值都小于/等于它的child; complete biTree:满足完全二叉数的特性。Operationinsert 1.将新的node插入叶子节点坐在层的最末端(维护complete biTree); 2.将该node和其parent node进行比较,如果不满足min的特性,交换两个节点的值;原创 2022-04-21 17:14:00 · 2042 阅读 · 0 评论 -
CS61B学习笔记——proj2 gitlet的实现
记录一下做gitlet的思路。方便后期对项目进行重构和优化~Gitlet顶层设计 -.gitlet 存储一切 -objects 存储commit和blob对象(使用hashcode作为文件名) -commits 存储每个commit对象 -blobs 存储每个blob对象 -refs -heads 存储分支末端 -remotes 远端分支(unfinished) -HEAD 存储当前branch的name,默认为master -st原创 2022-04-19 12:57:27 · 3741 阅读 · 2 评论 -
CS61B学习笔记-在git bash中添加make
安装参考链接 将下载好的zip文件解压缩到Git/mingw64下,如何找到对应的Git文件夹链接中有相应介绍。值得注意的是我们还得配置相应的环境变量PATH,不然git bash中运行make还是会提示找不到命令。...原创 2022-03-17 17:12:22 · 735 阅读 · 0 评论 -
归并排序算法原理及实现(Java)
归并排序算法思路如果数组长度为1,return将数组对半分,对两部分分别进行归并排序将上一步中归并排序后的数组合并起来算法实现 javapublic class MergeSort { /* 归并排序算法,对输入的数组a进行排序 */ public int[] MergeSort(int[] a) { int size = a.length; if (size <= 1) {原创 2022-03-16 13:14:17 · 893 阅读 · 0 评论 -
(吴恩达)机器学习笔记
突然发现自己对这个体系没有全面的认识,准备通过这个课程了解一些基础的概念,为未来的毕业论文做铺垫。week11.1 监督学习和无监督学习 监督学习:用带有正确标签的数据训练模型 监督学习可以被进一步细分为以下两类: 分原创 2021-12-17 11:28:59 · 1016 阅读 · 0 评论 -
选择排序算法原理及实现(Java/Python)
选择排序算法思路对输入的N个元素进行遍历,找到N个元素中的最小值/最大值将最小值/最大值与N个元素的首个元素互换对剩下的N-1个元素进行选择排序算法实现迭代(python)def exchange(lst, a, b): """ 根据给定的索引,交换list中的元素 """ lst[a], lst[b] = lst[b], lst[a] return lstdef find_min_idx(x, a): """ 找到当前list中最小值的索引"""原创 2021-12-14 16:09:47 · 796 阅读 · 0 评论 -
SMOTE学习笔记
对这段时间了解到了SMOTE算法及其改进的论文做一下总结,方便以后复习~经典的SMOTE[图片] 经典SMOTE算法的思想用上述图形就可以很好的表述了,最中间的样本点Y是我们选取的少数类中的跟样本点,周围四个Y样本点是选取的4个最近邻点(也是从少数类样本中选取的),然后在每一组跟样本和辅助样本点之间的欧氏空间内随机合成一个人工样本点,这样就达到了扩充少数类样本的目的,有利于之后的ML。SMOTE的改进参考文献:《SMOTE过采样及其改进算法研究综述》原创 2021-12-03 15:41:15 · 2398 阅读 · 2 评论 -
小波变换学习笔记
对这几天所学习的小波变换的知识做一下总结,方便我以后再复习:)下面的文字和图片大部分源于教程《THE WAVELET TUTORIAL》,如果想了解更多关于小波变换的知识,大家可以去访问原教程。我只是一个知识的搬运工~《THE WAVELET TUTORIAL》部分图片来源于视频为什么要进行变换 信号是一般是时域表示的,但它的信息通常存在于其频域中。例如心电图信号,医生通过将病人的心电图信号与正常的心电图进行对比,能获得相应的病理信息,但如果从频域进行分析,可能会更加直观。FT FT从整个原创 2021-11-30 16:25:50 · 1476 阅读 · 0 评论