自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Hi3861(Pegasus) + LiteOS API应用探索

LiteOS使用lwip框架来与外界进行网络通信,以下面的框图为例,进行hi3861 tcp server和python client之间的多线程TCP通信实验(hi3861作为STA接入局域网中,python client所在主机要能够ping通hi3861的ip)。hi3861作为server监听socket,接收到新的连接请求时就创建一个handle thread来处理该连接,主线程仍然监听socket。

2023-04-03 20:48:14 661 2

原创 MIT 6.S081学习笔记

以Xv6和RISC-V为例,介绍了现代操作系统设计的基础理念:系统调用pipe、fork、exec等;延迟分配、写时拷贝、线程切换、自旋/睡眠锁、读写锁、RCU、文件系统、日志(事务&崩溃恢复)、软/硬链接、DMA、中断和轮询和内存映射文件等常见架构。

2023-02-27 11:00:02 1591

原创 Cache(缓存)基本概念

Cache——位于CPU上,处于寄存器和内存之间的存储单元。

2023-01-02 14:52:27 1975 1

原创 CS61C Spring 2021——Project 2: CS61Classify要求及实现思路

1.按部就班的完成即可,注意所谓的calling convention,将常用的变量存储在s寄存器(调用子函数前后值不会发生变化)中,临时变量存储在t寄存器中。

2022-11-09 16:01:54 782

原创 git push错误记录

使用push操作将文件上传到repo时出现time out/ssh error等信息,一般都是那个原因。因此将push/pull的方式更改为ssh,参考博客。记录使用git将本地文件push到repo时出现的错误及解决方案。

2022-09-27 11:03:31 456

原创 CS61C Spring 2021——Project 1: Philphix要求及实现思路

它接受一个单一的命令行参数作为输入(包含将要使用的替换集的文件名),根据输入的信息选择对应的字符替换集合。集合由一系列单词对组成,每一对单词占据一行,一对单词之间由任意数量的tab/space分隔。如果输入的单词不匹配的话,原样print;如果单词匹配,print符合最高优先权的替换单词。第一个单词为待匹配单词,第二个单词为替换单词。2.单词首字母变为小写后和待匹配单词对应;3.单词转换为小写后和待匹配单词对应。1.单词恰好和待匹配单词对应;

2022-09-22 15:21:44 749 5

原创 CS61C Spring 2021笔记

课程政策、相关的服务(Gradescope, Hive machines, Piazza之类的,基本上用不到)、Linux和git相关命令(有一定参考价值)。数字电路基础,采样、量化和编码,二进制、十进制和十六进制之间的相互转换;复习了Lec 1所讲的知识点,略过。原码、反码、补码和偏置编码的基本概念。

2022-09-22 11:02:41 1304

原创 MIT6.031学习笔记

记录在中发现的新东西MIT6.031能带给我的:英语阅读材料,复习Java,为CS61C的学习做准备。

2022-08-05 13:35:10 646

原创 ClickHouse+DBeaver安装总结(踩坑记录)

原计划是在win上安装clickhouse,并打算用DBeaver对其进行操作。但后来问题较多,无法解决,使用云服务器安装ClickHouse,主机远程访问的方式代替。记录这个过程存在的问题。

2022-07-26 18:09:22 1538

翻译 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 883

原创 Go语言学习笔记

  总结一下初学go语言的笔记,方便复习  参考书籍:《go语言趣学指南》  使用playground运行代码  使用main方法标识代码入口  大括号的唯一位置    在go中,大括号只有一种放置位置,左大括号与func关键字于同一层,右大括号位于单独一层,否则会报错。  使用const标识常量,使用var标识变量  变量声明的三种方式    var简短声明    上述两种方式实现的效果完全一样  +=、++、–等操作符仍然有效  if分支    使用&&表示逻辑与,||表示逻辑或,!表示逻辑非

2022-07-04 18:14:47 505

原创 gRPC(Python)总结+踩坑记录

  总结一下在使用gRPC的过程中踩过的那些坑, 一定要仔细看官方文档!!!参考文档:Language Guide (proto3)Python Generated Code1.前言  出于项目需要,使用Python对gRPC进行二次开发。以前从没有接触过相关的概念,对于RPC、xml、json的了解也只限于听过名字的程度。初步接触gRPC的推荐阅读资源:    gRPC官方(基本上所有资料都在这里,但全英文和一些专有名词看得我头疼)    Protobuf3语言指南(中文翻译版)    gR

2022-06-17 18:04:30 1765

原创 自顶向下方法学习笔记

  记录自顶向下方法的学习笔记,方便以后复习第一章 计算机网络和internet  1.计算机网络中的通信过程可以用快递的方式类比。  小明想把一本书(数据)寄给北京的小红,他首先得选择一个快递公司(ftp/http/smtp),然后填写寄件人和收件人地址(host,socket interface),快递公司将这本书按照自己公司的规定进行包装(packet),然后用货运汽车运送,这其中经过的交叉路口就类似于switch,将数据packet进行转发。  2.协议是计算机网络中的重要组成,它规范了hos

2022-06-07 11:42:44 444

原创 使用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 2410

原创 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 2530 1

原创 压缩(Compression)/霍夫曼编码原理及实现(Java)

  不同的文件各种信息出现的频率不同;  一种单一的编码方式可能只对某些文件而言是最优解;  霍夫曼编码:根据文件中各种信息出现的频率进行变长编码。  以英文文本进行举例说明(汉字、图像中的bit可以类推)。霍夫曼编码  根据出现的频率对信息进行编码,如图例所示。思路  给定一个字符串,计算每个符号出现的频率,从小到大排列;  使用哈夫曼编码的方式生成编码map和解码trie;  使用编码map将字符串压缩编码;  将编码后的bit和解码trie一起传输;  使用解码trie将字符

2022-05-19 20:21:50 519

原创 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 373

原创 二叉搜索树(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 332

原创 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 117

原创 常见的排序算法原理及实现(Java)

  常见的排序(Sort)算法有选择排序、堆排序、归并排序、插入排序和快速排序等。算法原理  选择排序 O(N^2)    参考博客选择排序算法原理及实现(Java/Python)  归并排序 O(NlogN)    参考博客归并排序算法原理及实现(Java)  堆排序 O(NlogN)    使用最大堆(maxHeap)进行排序;    首先将待排序的元素放入maxHeap中,再将maxHeap中的元素输出到结果数组中。    改进堆排序:就地维护一个maxHeap,节约空间。  插入

2022-05-10 14:33:59 280

原创 字典树(Trie)原理及实现(Java)

  字典树(Trie)—— 存储字符串作为key的数据结构。因为Trie存储字符串时特殊的结构,它和BST、HashTable等相比具有独特的优势(如前缀匹配等)。满足条件  每个节点只存储一个字母;  位于同一分支上的字母组成字符串(尾节点需要单独标记)。实现方式  Trie有三种实现方式:  数组 —— 字母有限,每个节点可以使用固定大小的数组作为child节点的索引;  BST —— 使用BST作为child节点的索引,与数组相比可以节约一定的空间;  HashTable —— 使用

2022-05-06 16:47:52 1236

原创 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 955

原创 最小生成树(Minimum Spanning Tree)的原理及实现(Java)

  最小生成树(Minimum Spanning Tree):给定无向图中,边权重最小的生成树。满足条件  生成树——包含图中所有顶点的树;  最小——边权重之和最小的生成树。  它是图中全局的概念,而SPT(Shortest Path Tree,最短路径树)是相对图中某一个初始节点而言的。算法原理cut和crossing edge  Cut——将图中所有顶点分入(这个好像是随便来的?)两个非空集合中;  Crossing Edge——连接的顶点分别位于不同的集合中。  在一次cut中,

2022-04-29 16:42:24 2018

原创 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 789

原创 加权快速联合(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 2100 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 1593

原创 迪克斯特拉(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 1830

原创 简单图(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 3587

原创 解决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 4753

原创 堆(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 2405

原创 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 5165 2

原创 CS61B学习笔记-在git bash中添加make

安装参考链接      将下载好的zip文件解压缩到Git/mingw64下,如何找到对应的Git文件夹链接中有相应介绍。值得注意的是我们还得配置相应的环境变量PATH,不然git bash中运行make还是会提示找不到命令。...

2022-03-17 17:12:22 886

原创 归并排序算法原理及实现(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 975

原创 (吴恩达)机器学习笔记

突然发现自己对这个体系没有全面的认识,准备通过这个课程了解一些基础的概念,为未来的毕业论文做铺垫。week11.1 监督学习和无监督学习    监督学习:用带有正确标签的数据训练模型        监督学习可以被进一步细分为以下两类:            分

2021-12-17 11:28:59 1073

原创 选择排序算法原理及实现(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 854

原创 SMOTE学习笔记

对这段时间了解到了SMOTE算法及其改进的论文做一下总结,方便以后复习~经典的SMOTE[图片]    经典SMOTE算法的思想用上述图形就可以很好的表述了,最中间的样本点Y是我们选取的少数类中的跟样本点,周围四个Y样本点是选取的4个最近邻点(也是从少数类样本中选取的),然后在每一组跟样本和辅助样本点之间的欧氏空间内随机合成一个人工样本点,这样就达到了扩充少数类样本的目的,有利于之后的ML。SMOTE的改进参考文献:《SMOTE过采样及其改进算法研究综述》

2021-12-03 15:41:15 2750 2

原创 小波变换学习笔记

对这几天所学习的小波变换的知识做一下总结,方便我以后再复习:)下面的文字和图片大部分源于教程《THE WAVELET TUTORIAL》,如果想了解更多关于小波变换的知识,大家可以去访问原教程。我只是一个知识的搬运工~《THE WAVELET TUTORIAL》部分图片来源于视频为什么要进行变换  信号是一般是时域表示的,但它的信息通常存在于其频域中。例如心电图信号,医生通过将病人的心电图信号与正常的心电图进行对比,能获得相应的病理信息,但如果从频域进行分析,可能会更加直观。FT  FT从整个

2021-11-30 16:25:50 1597 1

原创 CS61a-2020fall学习笔记

此项目含有我对cs61a2020秋季学期大部分lab,discussion,project和homework的解答。从2021/06/22-2021/11/26,暑假太贪玩了,导致一共用时5个月才完成。课程主页github项目地址使用ok时为了不提交邮箱,可在命令行后面加上–local项目中未完成的题目如下:disc04 1.2 2.3dic05 2.2lab09 Q3 Q5lab14 Q3 Q4 Q6 Q10disc14 Q2.2 Q6.1 Q8.1 Q8.2欢迎大家对我进行指正或者与

2021-11-26 14:00:36 2512 4

原创 利用Python+云服务器+邮箱实现的个人待办事项提醒

纯属心血来潮,想建立自己的个人日程~整个项目分为四个部分,excel表格、python脚本、云服务器定时运行和邮箱1.excel表格表格一共两列,左边日期右边事件2.Python脚本""" 心血来潮,为了自建日历提醒 version1.0 date:2021/07/22 功能:日程时间对照,邮箱提醒"""# from twilio.rest import Clientimport xlrdimport timeimport smtplibfrom email.

2021-07-25 14:10:42 1058 1

原创 Python——初识类以及对self的理解

实例化:根据类(一大群对象都有的通用行为)来创造对象,该对象具有类所描述的行为。说人话就是根据模具制造对象。注意!!!Python中,首字母大写的名字指的是类。__init()__是类中的默认方法,每当我们使用该类创建对象的实例时,就会默认运行该方法。类中的方法都要用self作为第一个形参,self.属性名,此后所有创建的实例都可以访问该属性。前几天一直不清楚类中self的作用到底在哪,用的时候也是稀里糊涂的。直到今天重新回顾了一下《Python编程:从入门到实践》这本书,书里说“以self为前缀的

2021-03-19 22:35:19 242

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除