自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】二叉树的数组表示推导

本文介绍了用数组存储完全二叉树的方法。树按层存储,第k层有2^k个节点。节点位置可由层数k和偏移量m计算得出:(2^k-1)+m。推导出父节点i与子节点位置的关系:左子节点为2i+1,右子节点为2i+2。这种存储方式便于通过索引快速定位父子节点。

2025-09-30 15:20:02 440

原创 neovim复制提示clipboard:no provider

摘要:Neovim在WSL中提示"clipboard: no provider"时,需安装win32yank.exe解决剪切板支持问题。方法:从GitHub下载win32yank.exe,放入~/.local/bin目录,并确保该路径在环境变量中。完成后通过:checkhealth验证剪切板功能是否可用。

2025-09-20 00:29:56 271

原创 解决wsl访问失败问题:curl: (7) Failed to connect to xx.xxx.xxx.xxx port 7899: No route to host

摘要:WSL环境下无法访问GitHub的问题排查与解决方案。问题表现为DNS解析失败,通过取消代理变量设置、检查DNS配置、测试网络连接等步骤,最终通过修改WSL的DNS配置(使用8.8.8.8和1.1.1.1公共DNS)并关闭自动生成resolv.conf功能,成功恢复网络访问。关键操作包括编辑/etc/wsl.conf、重建resolv.conf文件并重启WSL。

2025-09-18 23:32:56 368

原创 remote: Invalid username or token. Password authentication is not supported for Git operations

【Git操作身份验证失败解决方案】文章介绍了在GitHub禁用密码验证后,如何配置SSH密钥进行推送。步骤包括:1)生成ED25519算法SSH密钥;2)在GitHub添加公钥;3)将仓库地址修改为SSH格式;4)测试连接;5)首次推送时使用-u参数建立分支关联。该方法可避免每次操作都需输入凭证,且ED25519算法比传统RSA更安全高效。配置成功后仅需简单命令即可完成后续推送操作。

2025-09-04 20:53:06 2321

原创 【初识数据结构】CS61B中的基数排序

本文介绍了CS61B课程中的基数排序算法。基数排序通过牺牲内存空间换取更高效率,在某些场景下性能优于归并排序和快速排序。文章首先讲解计数排序原理及其时间复杂度θ(N),强调其适用于元素编号连续的情况。随后对比计数排序与快速排序的适用场景,指出当元素种类k和字母表大小R较大时,计数排序会消耗较多空间。基数排序部分详细介绍了LSD(最低位优先)和MSD(最高位优先)两种实现方式,分析它们的时间复杂度θ(W(N+R))及稳定性差异。最后比较了基数排序与归并排序的性能差异:基数排序在数据量大且字符串相似时表现更优,

2025-07-29 17:20:23 883

原创 【初识数据结构】CS61B中的快速排序

本文介绍了CS61B中的快速排序算法。算法流程包括选取基准值、分区和递归处理子数组。时间复杂度分析显示,最好情况为θ(NlogN),最坏情况为θ(N²)。文章对比了快速排序与归并排序的性能,指出尽管快速排序最坏情况较差,但平均性能更优。通过10%分解案例证明即使不平衡分解仍保持O(NlogN)复杂度。快速排序与二叉搜索树(BST)的比较揭示了二者在比较序列上的本质相同性。最后提出了避免最坏情况的四种策略:随机性、智能选择基准、递归深度检查和预处理,并比较了不同排序算法的性能特点。

2025-07-25 23:14:50 981

原创 【初识数据结构】CS61B 中的归并排序和选择排序

摘要:本教程介绍了两种排序算法:归并排序和插入排序。归并排序通过分治策略将数组不断分割并合并,时间复杂度为O(NlogN),具有良好的并行性能。插入排序则通过逐个元素比较和交换实现,时间复杂度在最好情况下为O(N),最坏情况下为O(N^2),特别适合已部分排序的数组。两种算法各有优势,适用于不同场景。

2025-07-24 23:55:26 933

原创 【Windows命令手册】Windows中的常用命令,并与 Linux 做比较

本文对比整理了Windows(PowerShell)与Linux(Bash)常用命令,涵盖文件操作、查找、压缩、软件管理、系统进程和网络等功能。Windows命令通常更直观但较长,如Get-ChildItem对应ls,Remove-Item对应rm;Linux命令更简洁,如cp、mv等。两者都支持多命令串联(用;分隔)和类似功能,如ping、netstat等。差异主要体现在语法和工具选择上,如Windows用taskkill结束进程,Linux用kill。该对比为跨平台用户提供了快速参考。

2025-07-23 23:09:39 424

原创 【初识数据结构】CS61B 中的堆以及堆排序算法

摘要:本文介绍了CS61B课程中的堆(heap)数据结构及其应用。堆是一种完全二叉树,满足最小堆或最大堆性质,能高效实现优先队列操作。文章详细讲解了堆的插入(上浮)和删除(下沉)操作,以及用数组表示堆的方法。重点分析了堆排序算法,通过就地构造最大堆和不断将最大值交换到数组末尾实现排序,将时间复杂度优化至O(N logN)。相比选择排序,堆排序在时间复杂度上有显著提升,且空间复杂度仅为O(1)。

2025-07-22 23:53:57 825

原创 【初识数据结构】CS61B中的最小生成树问题

本文介绍了最小生成树(MST)的概念及其两种经典算法。MST是指连通无向图中连接所有顶点且边权总和最小的树。基于割边属性,提出了通用MST查找方法。Prim算法从随机顶点开始,每次选取连接已选顶点和未选顶点的最短边,通过优先队列进行优化。Kruskal算法则按边权排序,使用并查集避免成环,逐步构建MST。两种算法均能保证找到最优解,但实现方式和适用场景有所不同。

2025-07-21 19:36:09 2292

原创 【windows 终端美化】Windows terminal + oh-my-posh 来美化命令行终端

本文介绍了如何通过Windows Terminal和oh-my-posh美化命令行终端。主要内容包括:Windows Terminal的安装方法;通过winget或应用商店安装oh-my-posh;配置$PROFILE文件加载主题;安装Nerd字体解决图标显示问题;以及终端窗口的个性化设置(毛玻璃效果、背景图片、光标样式等)。还提供了语法建议模块和语法高亮功能的配置方法,帮助用户打造更美观实用的命令行环境。

2025-07-20 23:30:55 1108

原创 【初识数据结构】CS61B中的基本图算法:DFS, BFS, Dijkstra, A* 算法及其来历用法

本文总结了CS61B课程中关于图中路径查找的几种核心算法:DFS、BFS、Dijkstra和A算法。DFS采用深度优先策略,适合处理细长图结构;BFS采用广度优先策略,适合处理茂盛图结构。Dijkstra算法通过优先队列实现带权重图的最短路径查找,但无法处理负权重边。针对大规模图,A算法通过引入启发式函数避免不必要的遍历,提高搜索效率。文章还指出DFS和BFS的内存消耗问题(需要维护marked和edgeTo数组),以及Dijkstra算法在负权重场景下的局限性。作者通过Princeton的Graph AP

2025-07-19 22:26:42 2675

原创 【git 如何查看本地分支与远程分支之间的差异】

本文介绍了几种查看Git本地与远程分支差异的方法。通过git log branchA..branchB可查看提交差异,git diff比较文件内容差异,git status快速了解分支状态,以及git log --graph --all图形化展示分支关系。每种方法适用于不同场景,如排查提交差异、检查文件变更或直观查看分支拓扑结构。这些命令配合git fetch使用,能有效帮助开发者掌握本地与远程仓库的同步情况。

2025-07-18 00:03:10 392

原创 【add vs commit】Git 中的 add 和 commit 之间的区别

本文梳理了Git中git add和git commit的核心区别与联系。git add将工作区文件标记到暂存区,表示准备提交;git commit则将暂存区内容永久记录到本地仓库历史中。两者配合使用时,需先add后commit,未被add的修改不会被提交。提交后暂存区会清空,与最新提交保持一致。文中还通过打印文件的类比帮助理解这两个命令的关系,并给出了标准操作流程示例。

2025-07-16 23:49:32 539

原创 【Git 中的 branch 工作流】关于git 中 branch 的一些基本操作

本文介绍了Git分支协作的工作流程,重点讲解了当本地与远程仓库不一致时如何创建副本分支进行修改的方法。主要包括:1)使用git fetch更新远程状态;2)创建新分支my-feature保留本地修改;3)用git reset --hard覆盖原分支;4)可选的分支合并操作;5)使用git branch和git status查看分支状态。这些操作可以帮助开发者在多主机协作时有效管理不同版本。

2025-07-15 18:00:03 471

原创 【git fetch submodule报错】Errors during submodule fetch 如何解决?

Git子模块fetch报错问题解决方案 当协作开发时遇到Errors during submodule fetch错误,主要是由于主仓库引用的子模块commit不存在。本文提供了三种解决方案:1)手动checkout子模块到有效commit;2)修改.gitmodule文件中的子模块URL;3)重新初始化子模块。作者通过git submodule update --init --recursive命令成功解决了问题。该问题常见于多设备协作开发场景,如同时使用Win主机和WSL的情况。

2025-07-14 22:06:41 1043

原创 【hello Apollo 基础实验】

本文介绍了Apollo基础实验的完整流程。实验包括:1)创建工程目录和文件结构;2)编写包管理文件(BUILD和cyberfile.xml);3)编写源代码(main.cc)和对应的BUILD文件;4)使用buildtool进行编译;5)运行生成的可执行文件。实验过程中可能遇到服务器JAR文件缺失的错误,需删除指定缓存目录后重新编译。最终成功运行后会输出不同级别的"hello Apollo"日志信息。该实验展示了Apollo平台的基本开发流程和常见问题的解决方法。

2025-07-13 23:51:18 369

原创 【Linux中常用的文件压缩与解压】Linux中的文件压缩于解压命令及其参数意义

本文介绍了Linux系统中常用的压缩解压命令,主要包含tar和zip/unzip的使用方法。对于tar命令: 压缩使用-c*vf参数,解压使用-x*vf参数,其中*代表不同压缩格式(如z对应.tar.gz) 支持压缩到指定目录和从指定目录解压 提供查看压缩包内容的命令 对于zip格式: 压缩使用zip -r递归压缩目录 解压使用unzip命令,支持指定解压目录 提供查看压缩包内容的参数 文章还详细列出了常用参数的含义和使用示例,包括tar命令的-c、-x等参数,以及zip和unzip的各种实用选项

2025-07-12 00:32:01 909

原创 【Git 中的子模块(submodule)】git add 无法跟踪内容,Git中的子模块机制

Git子模块机制解析:当主仓库无法跟踪library-sp21文件夹时,需注意其是否为子模块。子模块是独立的Git仓库,通过git submodule add命令添加,主仓库仅记录其commit引用。可通过.gitmodules文件或git submodule status命令确认。追踪子模块需单独进入其目录提交变更,再返回主仓库更新引用。该机制适用于嵌套使用外部仓库的场景,与普通文件夹的Git管理方式不同。

2025-07-09 23:49:12 767

原创 【CS61B sp24】Java中的类型检查

Java中的类型系统分为静态类型(编译时检查)和动态类型(运行时决定方法调用)。静态类型决定代码能否通过编译,动态类型决定实际调用的方法。子类对象可以赋值给父类变量,反之则会导致编译错误。强制类型转换能通过编译检查,但运行时若类型不匹配会抛出ClassCastException。判断类型兼容性的关键原则是"is-a"关系,即右侧对象必须能放入左侧变量的类型"盒子"中。类型系统通过静态检查保障安全性,但强制转换需谨慎使用以避免运行时错误。

2025-07-08 14:36:58 279

原创 【Ubuntu杀死进程】进程卡死时,如何在Ubuntu中管理或杀死进程

摘要:本文介绍5种在Ubuntu中强制终止卡死进程的方法:1)使用gnome-system-monitor图形界面;2)使用xkill命令点击窗口关闭;3)安装htop交互式工具进行可视化操作;4)通过ps+grep查找进程后kill;5)使用pkill命令一步到位。针对不同场景提供了从GUI到CLI的多种解决方案,并包含必要的安装命令(如x11-utils和htop)。(150字)

2025-07-07 23:59:25 685

原创 【Ubuntu 读写隐藏文件】如何读写Ubuntu中被隐藏的系统文件或.开头文件

文章摘要:Ubuntu系统中有两种隐藏内容:以.开头的文件/目录和系统目录(如/opt)。命令行中,使用ls -a查看隐藏文件,ls /opt访问系统目录;图形界面按Ctrl+H显示隐藏文件,直接输入路径(如/opt)可浏览系统目录(仅读权限)。如需写入权限,可通过sudo nautilus /opt以管理员身份打开。(149字)

2025-07-05 02:08:43 837

原创 【Ubuntu 安装及卸载】 Ubuntu 安装 .deb 包以及卸载软件教程

本文介绍了在Ubuntu 22.04系统中安装和卸载.deb包的多种方法。安装方法包括:图形界面双击安装、使用dpkg命令安装(需处理依赖问题)以及apt安装(需指定路径)。卸载方法包含:使用apt查找包名后移除(可选择保留或删除配置)、通过dpkg卸载,以及一步到位的组合命令(同时清理依赖和配置)。文中提供了具体命令示例,如安装时使用"sudo dpkg -i 文件名.deb",卸载QQ时使用"sudo apt remove linuxqq"等操作指南。

2025-07-04 00:28:31 633

原创 【git & GitHub 工作流】关于git的正确打开方式

本文介绍了GitHub标准工作流,主要包含以下步骤:1) 克隆远程仓库到本地;2) 创建独立分支进行开发;3) 修改代码后提交到暂存区并commit;4) 推送分支到远程;5) 处理主分支更新的情况(通过rebase同步);6) 发起Pull Request进行代码合并;7) 合并后删除分支。重点强调了创建独立分支的重要性,以及如何正确处理主分支更新的情况。这套流程能有效保证代码管理的规范性和多人协作的高效性。

2025-06-21 12:54:39 2037

原创 【为xv6添加系统调用】如何为xv6添加一个系统调用(riscv版本)

本教程详细介绍了在RISC-V版xv6系统中添加系统调用的完整流程。首先需要在kernel目录修改syscall.c和syscall.h添加接口,然后在sysproc.c中实现系统调用,并在usys.pl中添加用户入口。接着在用户空间修改user.h声明函数,并创建对应的用户程序。文章从原理层面解析了"用户->内核->用户"的系统调用过程:通过usys.pl生成汇编触发ecall,内核捕获后根据a7寄存器值调用对应处理函数,最后返回用户态。整个过程涉及用户程序声明、内核接口映

2025-06-18 23:43:46 940

原创 【CPP构建工具链】构建你的第一个CPP项目

本文介绍了在已有CMakeLists.txt文件时,如何构建CPP项目。首先需要安装clang、ninja和cmake工具链并配置环境变量。具体构建步骤包括:创建build目录,使用cmake生成构建文件(指定ninja和clang++),然后通过cmake --build命令编译项目。文中还提到,若遇到-Werror导致的编译错误,可通过修改CMakeLists.txt放宽编译警告处理。整个过程无需直接处理CMakeList.txt文件,适合初次接触CPP项目的新手快速上手。

2025-06-16 21:11:40 768

原创 【makefile速成】一个makefile速成笔记

本文介绍了Makefile和CMake的入门知识。Makefile是一种构建工具,其基本规则包含目标、依赖和操作三部分,可通过自定义变量和自动变量简化编写。文章提供了一个简单Makefile示例,并解释了通配符使用方法。此外还介绍了CMake作为跨平台构建工具的优势,它能根据不同平台生成对应的构建文件,并给出了一个基本CMakeLists.txt配置示例。建议初学者通过本文或相关视频快速掌握这些构建工具的核心概念和使用方法。

2025-06-15 23:57:50 809

原创 【搭建个人博客】如何从零开始搭建一个hexo个人博客

本文详细介绍了使用Hexo框架搭建个人博客的完整流程。从安装Node.js、Git和Hexo等基础软件,到本地项目初始化、文章创建;从GitHub Pages部署配置,到主题选择和个性化设置。作者分享了自己使用的Async主题配置经验,并提供了常用命令工作流。特别针对图片和视频插入问题给出了详细解决方案,包括使用图床托管图片、HTML5视频标签和iframe嵌入外部视频等技术细节。文章还包含常见错误解决方法,如PowerShell执行策略调整,是一份全面实用的Hexo博客搭建指南。

2025-06-14 00:05:08 835

原创 【初学数据结构】关于KMP算法的回退思考

KMP算法中next数组的理解是一大难点,其核心在于记录模式串各位置的最大前后缀匹配长度,以便失配时快速回退。next数组求解通过双指针比较前缀和后缀,匹配成功时同步移动,失败时利用已计算的next值跳转。该算法避免了主串回溯,提升了匹配效率。进一步优化的nextval数组可跳过相同字符的无效回退。虽然理解难度较大,但掌握后可显著提升字符串匹配性能,是算法学习中的重要内容。

2025-06-13 03:48:21 878 1

CS61B 所需辅助 jar 包

CS61B 所需辅助 jar 包

2025-07-18

空空如也

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

TA关注的人

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