- 博客(603)
- 收藏
- 关注
原创 【图形学相关网站】
文章目录清华大学计算机图形学课程主页清华大学图形学组出版论文胡事民教授主页徐昆教授主页陈宝权教授周昆教授鲍虎军教授计算机图形学与混合现实研讨会斯坦福Pat Hanrahan教授主页斯坦福Marc LevoyDonald GreenbergDavid SalesinLifan Wu五字班学长主页九字班闫令琪学长首页八字班来煜坤学长主页清华大学计算机图形学课程主页计算机图形学课程清华大学图形学组...
2020-02-25 13:50:50 521 1
原创 动态规划取数平方和
这个程序使用动态规划结合位图来计算可能的平方和种类。每次更新位图时,将前一个状态左移当前数的平方,并与当前状态进行或操作,更新可能的平方和。最终,通过count()方法计算不同平方和的种类数。
2024-07-15 11:35:31 403
原创 第三次课后练习
第1题 在你选择的开发和运行环境下,写一个函数print_stackframe(),用于获取当前位置的函数调用栈信息。已有的参考: ● 在ucore中写一个函数print_stackframe():这里有多种可以在uCore和rCore上可以工作的print_stackframe()实现;(piazza访问帮助) ● 在 print_stackframe() 中如何打印出被调用函数的参数列表和运行时的值:这是一个开放的还没有很好实现的题目;函数来获取和打印当前的调用栈。的函数,然后在这个函数中调用。
2023-12-25 10:50:37 489
原创 RustSBI 是什么?
RustSBI(Rust Supervisor Binary Interface)是一个开源项目,它实现了RISC-V架构中的Supervisor Binary Interface(SBI)标准。SBI 是一种规范,定义了操作系统和RISC-V处理器的超级(Supervisor)模式之间的接口,允许操作系统内核以一种可移植的方式与处理器硬件交互。RustSBI 的目标是为RISC-V架构的操作系统提供一个可移植、模块化的SBI实现,它是使用Rust编程语言编写的。
2023-11-06 16:54:46 524
原创 syscall是什么
系统调用(Syscall)是操作系统提供给应用程序的编程接口,允许应用程序与操作系统内核进行交互,以访问操作系统提供的服务和资源。系统调用是操作系统内核的一部分,通过系统调用,应用程序可以执行一些特权操作,例如文件访问、进程管理、网络通信等。在RISC-V体系结构中,系统调用通常以ecall指令的形式出现,作为从用户态进入内核态的一种方式。ecall指令用于触发异常,操作系统内核会在异常处理程序中执行相应的系统调用服务。
2023-11-06 16:45:46 1047
原创 如何删除linux的文件夹
选项,因为它会强制删除文件夹及其内容,而不进行任何确认或提示。确保您删除的文件夹是您要删除的,因为数据无法恢复。选项时,以避免意外删除重要文件或文件夹。确保您了解要删除的内容,以免不可逆地删除数据。命令来删除文件夹及其内容。要删除一个非空的文件夹和其内容,您可以使用。如果您想要在删除之前进行确认,可以使用。在Linux中,要删除文件夹,可以使用。这种方式可以帮助防止误删除文件夹。
2023-11-06 16:28:11 193
原创 qemu是什么
QEMU(Quick Emulator)是一个开源的虚拟机监控器和仿真器,它允许在不同的硬件平台上执行虚拟机。QEMU最初是用于在Linux系统上运行不同体系结构的二进制代码,但后来它扩展到支持多种硬件架构和操作系统。QEMU作为虚拟机监控器,它管理虚拟机的生命周期,包括虚拟机的创建、启动、停止和销毁。它还提供了虚拟机的资源管理和访问控制。QEMU提供硬件仿真,允许在一个虚拟环境中运行不同体系结构的操作系统和应用程序。
2023-11-06 15:59:08 1328
原创 qemu-system-riscv64 和 qemu-riscv64区别
这是一个用于运行完整虚拟机的命令,通常用于仿真整个RISC-V计算机系统。它提供了对RISC-V硬件和系统模拟的支持,允许您运行RISC-V操作系统和应用程序,就像在真实硬件上一样。您可以使用此命令启动RISC-V虚拟机,安装操作系统,并在虚拟机内部运行应用程序。这是一个用于运行RISC-V用户空间程序的命令,通常用于在主机操作系统上运行单个RISC-V应用程序。用于在主机操作系统上运行单个RISC-V应用程序。是两个不同的命令,用于在QEMU仿真环境中执行RISC-V体系结构的模拟。
2023-11-06 15:53:11 553
原创 lint是什么
lint” 通常是指一类静态代码分析工具,用于检测源代码中的潜在问题、错误、代码风格违规和安全漏洞。这些工具可以扫描源代码文件,识别代码中的问题,并生成报告,帮助开发人员改进代码质量、可维护性和安全性。用于 JavaScript 代码的静态代码分析工具,用于检测潜在问题、代码风格违规和代码质量问题。用于 TypeScript 代码的静态代码分析工具,类似于 ESLint,用于 TypeScript 项目的代码质量和风格检查。
2023-11-06 15:51:59 509
原创 已经安装了qemu
我在配置操作系统的实验环境的时候,发现我的wsl是第2版,已经安装了qemu虚拟机。并且也存在了riscv64-unknown-elf-gdb。
2023-11-06 15:51:14 48
原创 home下的.bashrc怎么查找
是一个用于配置Bash shell的脚本文件,它通常用于自定义和配置用户的命令行环境。文件,可以使用文本编辑器来编辑它,以进行定制配置。在文件浏览器中,前往用户的家目录(通常是。要查找在Linux或Unix系统中位于用户的。如果找到,它将显示文件的完整路径。这将在用户的家目录以及其子目录中查找。打开终端,并输入以下命令,使用通配符。),并启用显示隐藏文件选项,以查看以。打开终端,并输入以下命令,其中。文件存在,它将在终端中列出。您还可以使用文件浏览器来查找。开头的文件,其中就包括。
2023-11-06 14:09:47 1333
原创 如何查看wsl是wsl1还是wsl2
输出将显示 WSL 中已安装的 Linux 发行版,以及它们的版本。在 “WSL” 列下,您将看到 “wsl” 或 “wsl2”,这表示每个发行版的 WSL 版本。通过执行这些命令,您可以轻松查看每个 Linux 发行版所使用的 WSL 版本,以便进行管理和配置。为您要切换版本的 Linux 发行版名称。这将使该发行版在 WSL 2 中运行。输出将显示已安装的 Linux 发行版及其 WSL 版本,类似于上述命令行方法。上面的示例中,Ubuntu-20.04 运行在 WSL 2。
2023-11-06 13:39:08 21400
原创 mysql -u root -p Enter password: ****** ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘local
在Windows上,你可以使用服务管理器(Services Manager)来查找、启动、停止或重启各种系统服务,包括MySQL服务。使用服务管理器是Windows管理员经常执行的常见任务,因为它允许你控制和管理所有运行在Windows系统上的服务。
2023-10-23 19:19:23 578
原创 FILE*
3. 读写文件:可以使用各种文件操作函数来进行文件的读写,例如 fread(), fwrite(), fseek() 等。FILE* 是C语言中定义的一个文件指针类型,主要用于对文件的操作。具体来说,FILE* 是一个结构体指针,它包含了对文件的所有必要信息,如文件名、文件状态和文件位置等。2. 关闭文件:使用 fclose() 函数来关闭一个已经打开的文件,例如。使用 FILE* 主要进行如下操作:1. 打开文件:可以使用 fopen() 函数来打开一个文件,例如。(内容由讯飞星火AI生成)
2023-10-22 22:41:43 677
原创 ./download.sh zsh: permission denied: ./download.sh
这个错误是由于脚本文件没有执行权限导致的。在类Unix系统(如Linux和macOS)中,执行脚本文件需要脚本本身具有执行权限。你可以使用chmod命令来给脚本文件添加执行权限。这将为脚本文件添加执行权限。请注意,如果脚本中有需要管理员权限的操作(例如安装软件包或修改系统文件等),你可能需要以管理员身份运行脚本,例如使用sudo但是在使用sudo命令时要格外小心,确保你信任该脚本的来源和内容,以免造成意外的损害。
2023-07-20 10:32:43 602
原创 Dinic算法
在这个程序中,addEdge函数用于添加边,bfs函数用于计算源点到每个顶点的最短距离,dfs函数用于查找并推送流,并更新反向边的流量,maxFlow函数用于计算网络的最大流。这样的边被称为可接受边。如果从某个节点出发,所有的可接受边都被搜索过,那么就退回到上一节点。Dinic算法相对于Ford-Fulkerson和Edmonds-Karp算法,主要的优点在于效率更高,它的时间复杂度是O(n。Dinic算法是一种用于求解网络最大流问题的算法,它是Edmonds-Karp算法的改进版,效率更高。
2023-06-11 23:58:30 206
原创 Ford-Fulkerson最大流标号算法和Edmonds-Karp算法
Ford-Fulkerson算法是一种用于解决网络最大流问题的算法。此程序以邻接矩阵形式接收一个带有6个节点的图,节点编号为0-5,源点为0,汇点为5。运行结果将输出网络的最大流。注意此程序的输入图应为有向图,且需保证每条边都有反向边,反向边的初始容量为0。该算法的主要思想是,只要从源到汇有增广路径(路径中每条边的剩余容量都大于0),就持续增大总流量。在每次迭代中,我们寻找增广路径,并在该路径上推送尽可能多的流量,同时更新反向边的剩余容量。
2023-06-11 23:52:19 520
原创 匈牙利算法
匈牙利算法,又称为Kuhn-Munkres算法或KM算法,是一种用于解决分配问题的算法。注意这个实现是针对完全二分图的,节点集分为X和Y两部分,每个节点只与另一部分的节点有边连接,且每一部分的节点数量相等。这个程序接收输入矩阵大小N,然后接收N*N的cost矩阵,并返回最小的总成本。
2023-06-11 23:22:46 187
原创 Kruskal算法和prim算法
Kruskal算法是一种用来寻找连通图最小生成树的算法。这段代码首先对所有的边进行排序,然后遍历所有的边。对于每一条边,它会检查这条边的两个节点是否已经在同一个集合中。如果不是,它就将这条边添加到最小生成树中,并将这两个节点并入一个集合。这个过程一直持续到我们找到了包含所有节点的最小生成树。注意,这段代码使用了并查集数据结构来检查一个图中两个节点是否在同一个子图中。Prim算法是一种贪心算法,它找到一个连通图的最小生成树。5在这个例子中,我们使用一个邻接矩阵来表示图。
2023-06-11 20:16:18 152
原创 Dijkstra算法
邻接链表可能是一个更好的选择。另外,这个实现没有优化,运行时间复杂度为O(V^2)。如果你使用堆来存储未探索的节点,那么时间复杂度可以降低到O((V+E)logV)。Dijkstra的算法是一种广泛应用于图形中的最短路径算法。下面是一个基本的 C++ 实现,假设我们使用一个邻接矩阵来表示图。在这个例子中,我们使用一个邻接矩阵来表示图。这是一个非常直观的表示方式,但也可能会浪费很多空间。
2023-06-11 20:15:12 64
原创 一个写VHDL的模板
以下是一个常用的 VHDL 代码模板,包含了一些常用库的引用,以及典型的 VHDL 代码结构。这个模板涵盖了 VHDL 中最基本的部分,包括库引用、实体声明、架构声明、信号定义和行为描述。你可以根据自己的需求修改这个模板。请注意,VHDL 是一种硬件描述语言,用于描述数字逻辑电路的行为和结构,所以你需要理解数字逻辑设计的基本概念才能有效地使用 VHDL。
2023-06-09 10:50:31 220
原创 VHDL的generate
这样,你就不需要手动写出每一个 D 触发器实例的代码,而可以通过 generate loop 自动地生成这些代码,这大大简化了硬件描述的复杂性,特别是当你需要生成的硬件结构的数量非常大时,例如需要生成一百个或一千个相同的硬件结构。是一个 generate loop,它是 VHDL 的一种结构,用于生成重复的硬件结构。这是一种非常强大的特性,允许你以参数化的方式复制和修改硬件描述,从而生成更复杂的硬件结构。在这个特定的例子中,generate loop 是用来创建四个 D 触发器实例的,每个实例的索引由。
2023-06-07 22:28:08 904
原创 D触发器VHDL
这段VHDL代码定义了一个带有复位和设置输入的D触发器。让我们一步步来看:首先,你在使用IEEE库中的标准逻辑包。包含了用于描述数字逻辑电路的类型和函数。和提供了一些操作无符号逻辑向量的函数,例如加法、减法等。然后,定义了一个名为DTriggerDCPRdQnQSdQnQQnQQ在dataflow架构中,定义了一个处理程序,它在CPRd,或Sd的值改变时运行。如果Rd的值为 ‘0’,则清除触发器的状态;如果Sd的值为 ‘0’,则设置触发器的状态;如果CP的值在上升沿,即从 ‘0’ 变为 ‘1’,则根据。
2023-06-07 22:27:17 1989 1
原创 C++适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常用于解决两个已有接口之间不兼容的问题。在C++中,适配器模式可以通过类适配器和对象适配器两种方式实现。类适配器模式:类适配器模式使用继承来实现适配器。适配器类继承自目标接口(通常是一个抽象类),并且同时继承自被适配的类(也可以是一个类或者接口)。适配器类通过调用被适配类的方法来实现目标接口的方法。对象适配器模式:对象适配器模式使用对象组合来实现适配器。
2023-06-05 08:45:32 805
原创 用C++实现匈牙利算法
匈牙利算法(也称为增广路径算法)是一种解决二分图最大匹配问题的经典算法。请注意,这只是匈牙利算法的一种简单实现方式,实际应用中可能需要根据具体情况进行适当的修改和优化。函数来测试匈牙利算法并输出最大匹配数。函数来查找增广路径。是一个表示二分图的邻接矩阵,其中。计算二分图的最大匹配数,它调用。个节点之间是否有边。在上面的示例代码中,
2023-06-02 13:42:13 1856
原创 迪杰克斯特拉算法(Dijkstra‘s algorithm)
这个算法的基本思想是从起始节点开始,逐步扩展到所有可达的节点,直到到达目标节点。在每一步,算法都会选择当前最短的路径,并更新所有邻接节点的最短路径。这个过程会一直重复,直到所有的节点都被访问过,或者找到了到目标节点的最短路径。需要注意的是,迪杰克斯特拉算法只适用于边的权重非负的图。对于当前节点的每一个邻接节点,如果通过当前节点到达该邻接节点的路径长度小于该邻接节点当前的最短路径长度,那么更新该邻接节点的最短路径长度。重复步骤3和4,直到所有的节点都被添加到集合S,或者找到了到目标节点的最短路径。
2023-06-02 11:36:55 600
原创 群的同态和同构的区别
这个函数g是一个群同构,因为对于任何两个整数a和b,我们都有g(a+b) = (-1)^(a+b) = (-1)^a · (-1)^b = g(a) · g(b),而且,这个函数g是一一对应的(g(0) = 1,g(1) = -1,没有其他的整数能被映射到1或-1)。:如果我们有两个群(G,*)和(H,·),一个群同态是一个函数f: G -> H,满足对于G中的任意两个元素a和b,都有f(a * b) = f(a) · f(b)。简而言之,每一个同构都是同态,但并非所有的同态都是同构。
2023-06-02 10:52:14 2687
原创 正规子群概念
对于任何在S_n中的元素σ和在A_n中的元素τ,我们有στσ^-1属于A_n,所以A_n是正规的。在直观上,这个条件意味着,如果我们首先选择 N 中的一个元素,然后用 G 中的一个元素 “变换” 它,然后再用那个元素的逆元 “逆变换” 它,我们仍然会得到 N 中的一个元素。我们可以看到,如果我们选择一个偶数(在子群中),然后加上任何整数(在整个群中),然后再减去那个整数,我们仍然得到一个偶数。在数学中,特别是在群论中,一个群的正规子群(或不变子群)是一个特殊类型的子群,它在群的所有元素下都保持"不变"。
2023-06-02 10:28:52 1990
原创 阿贝尔群是什么
任何两个非零有理数相乘仍然是非零有理数,乘法满足结合律,1是单位元,每个非零有理数q的逆元是1/q,而且乘法满足交换律。任何两个非零复数相乘仍然是非零复数,乘法满足结合律,1是单位元,每个非零复数z的逆元是1/z,而且乘法满足交换律。很明显,任何两个整数相加仍然是整数,加法满足结合律,0是单位元,每个整数n的逆元是-n,而且加法满足交换律。在这些例子中,群的运算都是我们熟悉的加法或者乘法,但在更复杂的情况中,群的运算可能是更抽象的运算。整数加法群、实数加法群、复数加法群、矩阵加法群等都是阿贝尔群的例子。
2023-06-02 10:27:01 14978
原创 任何两个阶相同的循环群同构
首先,φ是满射,因为对于Z’_6的任意元素a^n,都有相应的元素n在Z_6中映射过去。同时,φ也是单射,因为如果φ(n) = φ(m),即a^n = a^m,由于a是Z’_6的生成元,我们必然有n = m,所以不同的元素映射到的也是不同的元素。l映射到了同一个元素,即b^k = b^l,那么由于b是H的生成元,我们必然有k = l,所以不同的元素映射到的也是不同的元素。最后,我们需要验证φ是否保持群运算,即对所有的整数k和l,是否有φ(a^k * a^l) = φ(a^k) * φ(a。
2023-06-01 20:38:31 1856
原创 n阶循环群,n的因子有几个,子群就有几个!
可以看到,对于4阶循环群G的每一个正因子,我们都找到了一个对应的子群,且这个子群的阶等于那个因子。最后,假设H是G的一个d阶子群,那么H必然由某个元素b生成,b的d次幂等于e。对于一个n阶循环群G(生成元为a),对于n的每一个正因子d,G确实有且只有一个d阶的子群。(n/d))^d = a^n = e,这里e是群的单位元。首先,我们看到4的所有正因子是1,2,和4。所以,对于n的每一个正因子d,G有且只有一个d阶子群,就是由a^(n/d)生成的。(n/d),所以H就是由a^(n/d)生成的。
2023-06-01 20:33:01 3279
原创 循环群的子群
类似的,我们可以找到其他的子群,比如所有3的倍数的集合3Z,所有4的倍数的集合4Z,等等。如果存在一个正整数n,使得a的n次幂等于群的单位元(在加法群中单位元通常是0,乘法群中单位元通常是1),并且对于所有的小于n的正整数m,a的m次幂都不等于单位元,那么我们就说G是n阶的。群G中存在元素a,使得对于任意的群G中的元素b,都存在整数n,使得b=a^n(这里的 “^” 表示的是群的运算,它可能是乘法,加法或其他),那么我们就称G是一个循环群,a是G的生成元。好的,让我们用一个具体的例子来说明循环群的子群。
2023-06-01 20:26:11 4828
原创 循环群和循环幺群的区别
这两个例子展示了循环群和循环幺群的特点,循环群是群的一种特殊形式,而循环幺群是幺半群的一种特殊形式,并且都具有循环性质,但在运算和结构上有所区别。循环群和循环幺群都是代数结构中的重要概念,但它们有一些区别。考虑整数模n的循环群Z/nZ和单位复数集合C*的循环幺群。循环幺群:单位复数集合C*的循环幺群。0 * z = z^1,依次类推。循环群:整数模n的循环群Z/nZ。
2023-06-01 20:16:31 461
原创 循环群的定义
其中0表示加法群的单位元,其他元素通过重复相加可以得到群中的所有元素,例如1 + 1 = 2,2 + 1 = 3,3 + 1 = 4,4 + 1 = 0,依次类推。如果一个循环群由元素a生成,那么它的阶就是a的最小正整数次幂,使得运算结果等于群的单位元。具体而言,设G是一个群,如果存在一个元素a,通过多次对a进行群运算可以得到G中的所有元素,那么G就是一个循环群,并且称a为G的一个生成元。在这个循环群中,元素1是一个生成元,因为通过重复对1进行加法运算可以得到群中的所有元素。
2023-06-01 20:08:13 3623
原创 百万富翁问题
具体来说,假设有两个百万富翁 Alice 和 Bob,他们想要比较彼此的财富谁更多,但双方都不想泄露自己的财富数额。需要注意的是,上述方案是一个简化的示例,实际的百万富翁问题的解决方案可能会更复杂,涉及更多的计算和协议设计。需要强调的是,这只是一个简化的示例,实际的安全多方计算协议和同态加密方案可能会更复杂。密文解密:最终,Alice 和 Bob 使用各自的私钥对比较结果进行解密,得到比较的结果。值得注意的是,他们无需知道对方的具体财富数额,只需比较解密后的结果。
2023-05-31 19:46:45 760
原创 同态加密算法
在同态加密中,对加密数据进行运算后得到的结果仍然是加密形式,只有在解密之后才能获取最终的结果。然而,同态加密方案通常会引入较大的计算和存储开销,并且对加密数据的计算效率较低,限制了其在大规模数据处理和实时应用方面的应用。这种特性使得同态加密在保护隐私的同时,允许对加密数据进行有意义的计算操作,而无需暴露数据的明文内容。这样,云服务器只能看到加密的数据,无法获取敏感信息的明文。因此,同态加密仍然是一个活跃的研究领域,研究人员不断努力改进算法和方案,以提高同态加密的效率和可用性,使其更适用于实际应用场景。
2023-05-31 19:38:08 622 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人