算法学习新姿势:从0开始用hello-algo搭建自己的在线学习平台
文章目录
- 前言
- 1.关于hello-algo
- 2.安装Docker和Docker compose
- 3.本地部署hello-algo
- 4. hello-algo本地访问
- 5.cpolar内网穿透工具安装
- 6.创建远程连接公网地址
- 7.固定Uptime Kuma公网地址
前言
今天要给大家安利一款绝对不能错过的开源神器——Hello-Algo!无论你是刚踏入编程世界的萌新,还是已经身经百战的老司机,这个项目都能让你眼前一亮。想象一下,在一个阳光明媚的下午,你懒洋洋地躺在沙发上,一边享受着咖啡的香气,一边轻松浏览各种数据结构和算法知识。更有意思的是,那些复杂的概念还能通过生动有趣的动画来解锁,就像有了一位风趣幽默的老朋友在旁边指点迷津!是不是觉得超级酷?更棒的是,有了cpolar内网穿透的帮助,无论你身在何处都能随时随地访问这个宝藏项目,再也不用担心因为地点或网络问题而错过学习的机会啦!那么,为什么我会如此强烈地推荐Hello-Algo呢?让我们一起揭开它的神秘面纱吧~
1.关于hello-algo
为什么选择Hello-Algo?
- 全面覆盖:从基础的数据结构到高级的算法问题,应有尽有。
- 互动学习:通过动画展示数据结构的变化和算法执行的过程,让你一目了然。
- 适合初学者:如果你是完全的新手,这里的内容会带你逐步进入算法的世界。
- 进阶工具库:对于已经有刷题经验的同学,Hello-Algo可以当作一个“算法字典”,帮助你回顾和梳理知识体系。
Github地址:https://github.com/krahets/hello-algo?spm=a2c6h.12873639.article-detail.7.67bd542bZUgP9b
它不仅提供了丰富的动画图解,让抽象的概念变得生动易懂,还涵盖了12种编程语言的代码实现,包括 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、Rust、C 和 Zig,满足了不同学习者的需求。
以其动画图解的直观性、多语言代码示例的丰富性、社区互动的互助性以及本地一键部署的便捷性为特点,提供了一个全面、互动且易于访问的算法和数据结构学习平台。这些特点不仅使得复杂算法概念的理解和记忆变得更加容易,也极大地促进了学习者之间的交流和知识共享,同时允许用户在自己的环境中实践和探索算法,从而深化学习体验。
2.安装Docker和Docker compose
本教程操作环境为Linux Ubuntu系统,在开始之前,我们需要先安装Docker。
如果没有安装Docker,可以查看这篇教程进行安装:《Docker安装教程——Linux、Windows、MacOS》
然后我们在docker容器中运行下 hello world
看一下是否安装成功。
sudo docker container run hello-world
可以看到出现了hello world,说明我们已经安装docker成功,就可以进行下一步了
此时Docker已经安装完了,我们进行下一步。
3.本地部署hello-algo
本项目提供了一键安装脚本,前提是需要安装git可以使用以下命令一键安装。
git clone https://github.com/krahets/hello-algo.git
现在就已经安装成功了,输入下方命令进入到hello-algo里面
cd hello-algo
现在输入下方命令来启动hello-algo
sudo docker compose up -d
启动完成后我们可以输入下方命令查看一下端口号
sudo docker ps
现在就已经全部都安装成功了,可以通过打开web浏览器输入localhost:8000来浏览Hello-algo了。
4. hello-algo本地访问
进入到hell-algo了,能看到页面非常的清晰,想学习哪个章节可以随意点击,并且可以调换白天or黑夜模式,语言也是可以选择的。
小结
上面在本地Linux中使用Docker成功部署了hello-algo,并局域网访问成功。整体来说hello-algo是一款非常不错的免费算法学习工具,它提供了完备的功能,并且具有非常好的实用性和易用性,并且也非常容易安装部署。
如果想不在同一个局域网时远程访问本地部署的hello-algo学习算法,可以创建一个公网地址,这里我使用的是cpolar内网穿透,通过cpolar转发本地端口映射的http公网地址,我们可以很容易实现远程访问,无需自己注册域名购买云服务器,可节省大量费用。
5.cpolar内网穿透工具安装
下面是安装cpolar步骤:
Cpolar官网地址: https://www.cpolar.com
使用一键脚本安装命令
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
6.创建远程连接公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:helloalgo注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:https://localhost:8000
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址在浏览器中访问即可。
如下图所示,成功实现使用公网地址异地远程访问本地部署的hello-algo
使用上面的cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们hello-algo管理界面,这样一个利用公网地址可以进行远程访问的隧道就创建好了,无需自己购买云服务器,使用cpolar创建隧道即可发布到公网进行远程访问,新域名登录,可能需要重新登陆!
7.固定Uptime Kuma公网地址
由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。
登录cpolar官网:https://www.cpolar.com
点击左侧的预留,选择保留二级子域名,地区选择china top,然后设置一个二级子域名名称,填写备注信息,点击保留。
保留成功后复制保留的二级子域名地址:
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑
。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址访问hello-algo管理界面可以看到访问成功,一个永久不会变化的远程访问方式即设置好了。
Hello-Algo绝对是每个编程爱好者都不能错过的超级大宝库!它不仅内容丰富、形式多样,还能随时随地陪伴你成长。如果你还没有体验过这个神奇项目的话,那你还在等什么呢?赶紧去试试看吧,保证让你爱不释手,从此学习算法也能变得轻松又有趣!别让你的技能树停滞不前了,快来加入Hello-Algo的世界,让编程变得更加精彩吧!
相关文章:
算法学习新姿势:从0开始用hello-algo搭建自己的在线学习平台
文章目录 前言1.关于hello-algo2.安装Docker和Docker compose3.本地部署hello-algo4. hello-algo本地访问5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 今天要给大家安利一款绝对不能错过的开源神器——Hello-Algo!无论你是刚踏…...
常用 nvm 命令指南
nvm(Node Version Manager) 是一个用于管理 Node.js 版本的工具,可以轻松安装、切换和卸载不同版本的 Node.js。本文将介绍常用的 nvm 命令,帮助你高效管理 Node.js 环境。 1. 列出系统中通过 nvm 安装的所有 Node.js 版本 nvm l…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
开源PDF解析工具olmOCR
olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具,旨在将PDF文件和其他文档高效地转换为纯文本,同时保留自然的阅读顺序。它支持表格、公式、手写内容等。 olmOCR 经过学术论文、技术文档和其他文档…...
Java里的ArrayList和LinkedList有什么区别?
大家好,我是锋哥。今天分享关于【Java里的ArrayList和LinkedList有什么区别?】面试题。希望对大家有帮助; Java里的ArrayList和LinkedList有什么区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ArrayList 和 Lin…...
Python的循环和条件判断 笔记250303
Python的循环和条件判断 Python中的循环和条件判断是编程基础,以下是关键点总结及示例: 条件判断 语法:if、elif、else,使用缩进划分代码块。逻辑运算符:and、or、not。示例:age 18 if age < 12:prin…...
浔川官方回应
浔川官方回应 近期,有用户反馈《浔川社团官方文章被 Devpress 社区收录!》一文中的文章链接,点击后出现无法访问的情况。在此,浔川社团向各位关注我们的用户致以诚挚的歉意,并就该问题作出如下说明: 经社…...
【计算机网络入门】初学计算机网络(六)
目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…...
摄像头应用编程(三):多平面视频采集
文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时,大致可以分为两类:Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…...
用工厂函数简化redis配置
工厂函数(Factory Function)不同于构造函数,工厂函数就是一个普通函数,通常用于创建对象或实例。它的核心思想是通过一个函数来封装对象的创建逻辑,而不是直接使用类的构造函数。工厂函数可以根据输入参数动态地决定创…...
网页制作11-html,css,javascript初认识のCCS样式列表(上)
Advantage. 更加精确的控制网页的内容、形式。样式更加丰富。定义样式灵活。 一、css的基本语法 Css的语法结构由三部分组成: 1、选择符 Selector: 指这种样式编码所要针对的对象,可以是一个xhtml标签,例如body hl;…...
VSCode 移除EmmyLua插件的红色波浪线提示
VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…...
【PHP】fastadmin框架后台开关的传值问题
文章目录 概要技术细节 概要 fastadmin的后台ui框架中,处理列表开关的场景比较多见,有时传值不是0和1,而是1和2,那么就需要调整js的代码了。 技术细节 处理开关字段的js代码: {field: is_sellOut,title: 销售中,yes…...
机器学习数学基础:37.统计学基础知识1
统计学基础概念入门教程 在统计学的世界里,概率和数据分布是基础且重要的概念,它们能帮助我们理解和分析各种数据现象。除此之外,点估计与区间估计也是在对总体参数进行推断时常用的方法。下面,就为统计学小白详细讲解这些关键的…...
HTB academy ---Active Directory Enumeration Attacks---An ACE in the Hole
ACL Enumeration 那么章节开始我们先枚举一下用户的GUID,也就是如图所示objectacetype这一块儿的内容,这一步的目的其实是观察我们已获得的用户对其他用户的权限,这个权限就是通过这个GUID得出来的(当然枚举的时间会比较长可能需…...
2025华为OD机试真题目录【E卷+A卷+B卷+C卷+D卷】持续收录中...
摘要 本专栏提供2025最新最全的华为OD机试真题库(EABCD卷),包括100分和200分题型。题目包含题目描述、输入描述、用例、备注和解题思路、多种语言解法(Java/JS/Py/C/C)。希望小伙伴们认真学习、顺利通过。 声明 本专…...
【Linux第一弹】Linux基础指令(上)
目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…...
linux下自旋锁(spin_lock)
文章目录 Linux自旋锁:单核与多核环境下的实现差异与核心原理 🖥️🔒一、自旋锁的核心特性 ⚙️🎯 适用场景: 二、单核环境下的自旋锁实现 🛑1. **实现原理** 🔄2. **关键代码解析** Ǵ…...
【华为OD机考】2024E+D卷真题【完全原创题解 详细考点分类 不断更新题目 六种主流语言Py+Java+Cpp+C+Js+Go】
可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 oj1441了解算法冲刺训练(备注【CSDN】否则不通过) 文章目录 相关推荐阅读模拟 数学排序字符串基础数组基础系统设计蒙特卡洛模拟其他 栈 常规栈单调栈 队列(题目极少,几乎不…...
VirtualBox虚拟机转VM虚拟机
前言:部分靶机只适用于VirtualBox,VM打不开VirtualBox的文件,所以需要进行转换 前置条件:本机已经下载VM和VirtualBox 第一步:文件转换 找到VirtualBox.exe所在位置,启动cmd窗口 文件转换的命令…...
UE5设置打开新窗口默认停靠在主窗口
打开引擎所在位置 找到路径 ...\UE_5.5\Engine\Config 找到 BaseEditorPerProjectUserSettings.ini 文件 打开后CtrlF搜索 [/Script/UnrealEd.EditorStyleSettings] 在末尾添加一行 AssetEditorOpenLocationMainWindow 保存即可,之后的项目都是默认主窗口打开...
vi常见操作命令
vi(Visual Editor)是Linux和Unix系统中广泛使用的文本编辑器,它以其高效、强大的功能深受程序员和系统管理员的喜爱。这个“常用vi命令集合.zip”压缩包包含了一份详细记录了vi编辑器常用命令的文档“常用vi命令集合.doc”。下面,…...
AIGC和搜索引擎的异同
AIGC(生成式人工智能)与搜索引擎的核心差异体现在信息处理方式和输出形态上,我们可以从以下维度对比: 一、工作原理的本质差异 信息检索机制 搜索引擎:基于关键词匹配(如"中暑怎么办"→返回相关…...
【ATXServer2】Android无法正确显示手机屏幕
文章目录 现象原因分析与解决排查手机内部minicap 解决minicap问题查看移动端Android SDK版本查看minicap支持版本单次方案多次方案 现象 原因分析与解决 由于atxserver2在与Android动终端的链接过程中使用了agent:atxserver2-android-provider,按照项目…...
fps项目总结:动画蓝图
文章目录 状态不同状态的并存性。 状态 不同状态的并存性。...
Trae:国内首款AI原生IDE,编程效率大提升
今年一月,在新闻上看到字节跳动面向海外市场推出了一款名为Trae的AI集成开发环境(IDE)。起初,我并未给予过多关注,因为市面上已有不少IDE集成了AI插件,功能也非常全面,而字节跳动自家的MarsCode…...
《深度学习进阶》第8集:多模态学习与跨领域融合**
第8集:多模态学习与跨领域融合 在深度学习的浪潮中,单模态模型(如仅处理图像或文本的模型)已经取得了令人瞩目的成就。然而,随着人工智能应用场景的复杂化和多样化,多模态学习逐渐成为研究和应用的热点。多…...
大模型在败血症预测及围手术期管理中的应用研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、败血症概述 2.1 定义与流行病学 2.2 病因与发病机制 2.3 临床表现与诊断标准 2.4 并发症与危害 三、大模型技术原理及在医疗领域的应用 3.1 大模型技术概述 3.2 大模型在医疗领…...
Hadoop架构详解
Hadoop 是一个开源的分布式计算系统,用于存储和处理大规模数据集。Hadoop 主要由HDFS(Hadoop Distributed File System)、MapReduce、Yarn(Jobtracker,TaskTracker)三大核心组件组成。其中HDFS是分布式文件…...
【操作系统】文件
文件 一、文件的概念二、文件目录2.1 FCB2.2 目录结构2.2.1 单机目录2.2.2 两级目录2.2.3 树形目录结构2.2.4 无环图目录结构 三、文件的逻辑结构和物理结构3.1 文件的逻辑结构3.1.1 顺序文件3.1.2 索引文件3.1.3 索引顺序文件 3.2 文件的物理结构3.2.1 连续分配3.2.2 隐式链接…...
我的ChatGPT怎么登不上?
近期,不少用户反馈在使用ChatGPT时遇到登录困难、连接超时等问题。本文将从技术角度分析常见原因,并提供合规、安全的解决方案,同时结合开发者实际需求推荐实用工具,助您高效应对登录障碍。 ChatGPT登录失败的常见原因 网络环境限…...
实时金融信息搜索的新突破:基于大型语言模型的智能代理框架
“An Agent Framework for Real-Time Financial Information Searching with Large Language Models” 论文地址:https://arxiv.org/pdf/2502.15684 摘要 在金融决策过程中,需要处理海量的实时信息以及复杂的时序关系。然而,传统的搜索引擎在…...
Linux服务器Ubuntu系统环境中安装Jupyter Notebook并且配置内核以便在网页端调用
一、前提 在使用终端访问,并且个人目录下已创建环境。如果还不知道创建环境和安装包,请参考之前文章 机器学习模型算法代码需要在环境中安装的库和包 二、安装相关库Jupyter Notebook 使用pip 或 conda指令安装,确保服务器上安装了 Python …...
Magic 1-For-1: 在一分钟内生成一分钟视频片段(基于Python实现,视频生成模型)
一、前言 文章所有代码都使用Python实现,并且可以分享开源,文章末尾联系博主或者往期文章末尾联系,欢迎探讨学习分享专业领域前言研究和技术分享。 二、摘要 在本技术报告中,我们介绍了 Magic 1-For-1 (Magic141&#…...
基于RK3588的重症监护信息系统应用解决方案
重症监护信息系统是医院临床信息系统的重要组成部分,也是医院信息化建设的重要组成部分。通过集成化的电子病历、实时监测、决策支持等功能,提高重症患者的诊疗效率和质量。 图片来源于网络 重症监护信息系统主要由数据信息采集单元、信息处理单元、通信…...
二十三种设计模式
2 工厂方法模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通…...
网络安全六层模型
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 一、单选题(一) 1、在以下人为的恶意攻击行为中,属于主动攻击的是( )A A.数据篡改及破坏 B…...
BrainSCK:通过知识注入和再激活进行大脑结构和认知对齐以诊断脑部疾病
文章目录 BrainSCK: Brain Structure and Cognition Alignment via Knowledge Injection and Reactivation for Diagnosing Brain Disorders摘要方法实验结果 BrainSCK: Brain Structure and Cognition Alignment via Knowledge Injection and Reactivation for Diagnosing Bra…...
【在Spring Boot项目中接入Modbus协议】
【在Spring Boot项目中接入Modbus协议】 在Spring Boot项目中接入Modbus协议,可以通过使用第三方库(如jamod或modbus4j)来实现。以下是一个基本的步骤指南,帮助你在Spring Boot项目中集成Modbus。 1. 添加依赖 首先,…...
CSS_复合选择器
目录 7. 复合选择器 7.1 交集选择器 7.2 并集选择器 7.3 后代选择器 7.4 子代选择器 7.5 兄弟选择器 7.6 属性选择器 7.7 伪类选择器 7.7.1动态伪类 7.7.2结构伪类 7.7.3否定伪类 7.7.4 UI伪类 7.7.5 目标选择器 7. 复合选择器 7.1 交集选择器 作用:…...
QT-信号与槽
1.在注册登录的练习里面,追加一个QListWidget项目列表 要求:点击注册之后,将账号显示到列表窗口小部件上面去 以及,在列表窗口小部件中双击某个账号的时候,将该账号删除 头文件 #ifndef WIDGET_H #define WIDGET_H #include <…...
在python语言中,请详细介绍一下比较运算符中等于符号(==)的情况?
李升伟 整理 一、有关思考 嗯,我现在要详细了解一下Python中的等于运算符()。首先,我得回忆一下自己之前学过的知识,可能有些地方不太确定,需要仔细思考或者查阅资料。 首先,等于运算符&#…...
halcon学习笔记1
环境的搭建就不说了,主要是作者在入职后的实际学习与实践。 打开应用程序 这里作者的个人理解是1号区域主要是可以观察到读取的图像以及后续对图像进行何种操作,2的算子类似于Opencv中的API,可以在上面进行参数的调整,例如read_I…...
解决寻找两个正序数组中位数问题:C语言实现与解析
在算法学习和实际编程应用中,处理数组相关的问题是很常见的。其中,寻找两个正序数组的中位数就是一个经典的题目,不仅考验对数组操作的熟悉程度,还涉及到对算法效率的考量。今天,我们就来深入探讨如何使用C语言解决这一…...
在 ArcGIS Pro 中描绘和绘制流域
查找数字高程模型 (DEM) 对于 DEM,我使用了USGS Lidar Explorer 地图。该地区有 10m 分辨率的 DEM。 设置坐标系 将坐标系设置为 UTM,以尽量减少失真,并使工具在后续过程中进行更精确的计算。对于俄勒冈州,这是 UTM 区域 10。 …...
在华为统信UOS中安装Anaconda,并配置PyCharm
这里写目录标题 1. 下载Anaconda安装包2. 打开终端3. 安装Anaconda4.下载安装PyCharm 1. 下载Anaconda安装包 首先打开 Anaconda官网 : https://www.anaconda.com/products/distribution,接受或拒绝网站投喂的饼干 然后输入自己的邮箱后,进入下载页面…...
谈谈 HTTPS 的工作原理,SSL / TLS 握手流程是什么?
一、HTTPS 核心机制:非对称加密 对称加密 HTTPS HTTP over TLS/SSL,通过 混合加密体系 解决三大问题: 防窃听 - 对称加密传输内容(如 AES)防篡改 - 数字签名验证数据完整性防冒充 - 数字证书验证服…...
Linux虚拟机网络配置-桥接网络配置
简介 本文档旨在指导用户如何在虚拟环境中配置Linux系统的桥接网络,以实现虚拟机与物理主机以及外部网络的直接通信。桥接网络允许虚拟机如同一台独立的物理机一样直接连接到物理网络,从而可以被分配一个独立的IP地址,并能够与网络中的其他设…...
Transformer架构
核心原理 自注意力机制 通过计算输入序列中每个位置与其他位置的关联权重(Query-Key匹配),动态聚合全局信息,解决了传统RNN/CNN的长距离依赖问题。 实现公式:Attention(Q,K,V)softmax(QKTdk)VAttention(…...
Sat- nerf深度损失
首先损失函数定义在metrics.py,代码如下: class DepthLoss(torch.nn.Module):def __init__(self, lambda_ds1.0):super().__init__()# 初始化lambda_ds参数,用于调节深度损失的权重,并且将其缩小为原来的1/3self.lambda_ds lambda_ds / 3.# 初始化均方…...