HIC Dev Group Lecture 1
部分说法不够专业或存在错误,欢迎指正
本文和你缺失的那门计算机课 | 计算机技术学习札记目的类似,但针对性和实用性更强,部分已经涉及的内容不再重复。无论是开发还是以后的学习,你都要了解你的伙伴。
命令行

命令行是操作系统(OS,Operation System)中非常重要的组成部分,在不同的OS中命令语法和底层逻辑也各不相同,也有很多变种(如git bash/anaconda prompt)。命令行可以简单地理解为在特定的文件路径下执行不同的指令,便捷地管理文件或执行程序。我们的windows系统本质上是一种GUI(图形化界面),比如,删除文件你依靠显示屏和鼠标即可完成。但是通过命令行,你不仅可以通过一条简单的命令就完成删除操作,还可以使用许多不支持图形化界面的工具。
# 切换路径 更换磁盘(以D盘为例)需要先输入D:
cd C:\Users\25878\Desktop\Repository\Hexo-Blog
# 需要执行命令
npm install -g hexo-cli
这里再补充几点。
1.以管理员模式运行:可以解决部分文件和程序的权限问题,可以解决部分报错。
2.指令的格式:
npm install -g hexo-cli
↑ ↑ ↑ ↑
| | | |
| | | └─── 参数2 (Argument / Parameter)
| | |
| | └─── 选项/标志 (Option / Flag)
| |
| └─── 子命令 (Subcommand)
|
└─── 命令/程序 (Command / Program)
3.默认快捷键:Win+R启动运行窗口(在Linux系统中是Ctrl+Alt+T),输入cmd/powershell(二者存在语法的区别,但功能类似)。当然,点击任务栏的windows图标搜索也是可以的。
Linux
提到命令行和操作系统就不得不提Linux了。

Linux是一种开源和免费的类Unix操作系统,其内核由芬兰计算机科学家Linus Torvalds于1991年创建。Linux继承了Unix的设计思想,具有多用户、多任务、支持多线程和多CPU等特性。
但是大部分人的电脑上都只安装了windows/mac操作系统,linux这个听上去高大上的概念似乎离大家很遥远。当然,我想你们中有些人或许大学四年都用不着linux,但它对于专业开发者来说非常非常重要。
卓越的开发环境和社区生态:拥有海量的开源库、框架及强大的工具链,社区活跃,问题解决方案丰富,许多项目都是在
linux上测试的,绝大多数云服务器也是linux系统,是开发者和企业的首选平台。丰富的发行版和可定制性:从轻量级到功能全面,从服务器到桌面,提供多种发行版(如
Ubuntu、Kali)选择。用户可深度定制每一个环节,打造完全符合个人需求的工作环境。强大的操作系统内核:以高稳定性、高效能和安全性著称。驱动了全球绝大部分的服务器、超级计算机和安卓设备,是互联网基础设施的基石。
无所不能的命令行:通过
shell命令,外加一些下载的工具,可以高效、精准地完成文件管理、系统监控、编程开发等所有任务。其强大的脚本功能还能将复杂操作自动化,极大提升效率。便捷的环境管理:强大的包管理器(如
apt,yum)提供海量软件的一键安装与依赖管理;结合容器技术(如Docker),可快速创建、复制一致的隔离环境,从根本上解决开发、测试与部署的环境问题。
至于使用方法,主流的:1.通过VMware Workstation(相对便捷,但是存在硬件不支持的问题,比如无法调用GPU)2.下载iso文件安装双系统
3.直接下载windows官方支持的WSL。具体操作不详细展开,网上教程很多。
但它也没有这么完美,因为比较原生,一些windows上不会出现的bug,linux上会。
软件与工具
下载软件和工具,可以帮我们解决一些任务或者配置环境。比如,做过后端加分题T3的同学应该会用到burpsuite,是一个强大的网络渗透工具,积累一些常见的工具可以让你拥有舒适的使用体验,也可以让黑客在网络上招摇过市。有些工具有GUI(网页或者本地软件),但是有些工具需要命令行,命令行工具的使用要善于搜索与积累。下载途径,可以分为官网/资源上传/github仓库等等。
工具类软件推荐 | 你缺失的那门计算机课 | 计算机技术学习札记
付费与订阅
我可以断言绝大部分工具都有白嫖技巧!
比如,cursor可以靠反复申请邮箱连续订阅,pycharm可以靠破解许可证激活。
当然,有些该付费的还是要付费,比如一个月50RMB的Trae可以畅享600次的SOTA AI,一个月12RMB的Clash可以畅想高速访问,把钱用在刀刃上。
至于白嫖技巧,CSDN/b站/知乎,甚至微信公众号,完全可以cover。
网络问题
我们不可避免需要访问国外网站(甚至有人和我说导员不让用?),毫无疑问可以用VPN,但是没VPN的要哀嚎,有VPN的嫌每一次打开麻烦。
因此,我们可以使用镜像站!意思就是,通过代理服务器实时从原始网站调取内容并呈现给访客的网站。
- 直接访问URL
我这里以Hugging Face为例,是一个集成了预训练模型的网站,对于做AI相关的项目或科研非常重要,官方网站是https://huggingface.co/,没VPN上不去,但镜像站可以直接访问https://hf-mirror.com/。类似的还有直接集成高速下载链接,比如:清华大学开源软件镜像站
| Tsinghua Open Source Mirror
- 配置文件配置镜像源
我这里指的配置文件是一些控制下载资源的包管理器的配置文件,我这里举两个例子。
1.Anaconda可以控制python包的下载,如果使用基础的conda源下载速度比较慢,我们需要配置镜像源。它有一个配置文件.condarc(当然配置远远不止镜像源)。在linux系统中一般在根目录,而且可以用vim工具直接修改,在windows系统中一般在C:/Users/用户名下,直接找到文件修改即可,具体修改内容上网自行搜索,各个包管理器不太相同。
2.npm是未来组会我们制作个人主页需要用到的Node.js包管理器。我们可以通过命令行直接设置镜像源。
# Set Taobao mirror as the npm registry
npm config set registry https://registry.npmmirror.com
# Verify the configuration
npm config get registry
# Output: https://registry.npmmirror.com
另一个python下载源pip同理,通过命令行设置镜像源,它会自动在系统目录下创建/pip/pip.ini配置文件,后续可以通过修改配置文件来控制下载源功能,下面展示了路径和内容的查找方法。
# 设置镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 查找配置文件路径
C:\Users\25878>pip config list -v
For variant 'global', will try loading 'C:\ProgramData\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\25878\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\25878\AppData\Roaming\pip\pip.ini'
For variant 'site', will try loading 'c:\users\25878\appdata\local\programs\python\python38\pip.ini'
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
# 查找配置文件内容
C:\Users\25878>pip config list
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
下载速度太慢
如果下载一些比较大的文件实在等不及,我们可以使用多线程下载工具。
在linux系统中,命令行就有aria2,而windows系统中,我推荐有GUI的Motrix,大家可以自己搜索。
配环境
配环境是非常困扰同学们的一个问题,但我认为这是初学者和进阶者的核心能力区别,一旦你熟练掌握,你可以快速地复现一个项目并且修改代码。但是,应用场景五花八门,没有一个统一的解决方案,我认为配环境技巧就是
- 根据大佬的帖子一步一步来,注意不要跳步骤
- 遇到报错善搜索和问AI,对于常用的做笔记
- 保持一个良好的心态,胸有惊雷而面如平湖
硬件需要驱动的我不太熟,这里就举软件的例子。
首先,我非常推荐大家使用vscode作为首选的开发IDE,虽然配置环境部分对初学者来说比较烦琐,但是一个vscode可以运行所有环境的代码,还有很多开发实用插件和美化插件(比如我就喜欢换好看的背景,coding心情更好)。当然也要看具体的任务和个人喜好,跑AI我喜欢vscode而不是pycharm,开发我喜欢IDEA而不是vscode。
配环境,无非需要涉及到的是集成IDE,编译器,包管理器,框架,插件/工具,命令行等等。为什么Dev-C++可以直接使用?你溯源到它的文件地址,你就能发现它实质上包含编译器文件。所以你在配置vscode的c/c++环境要下载MinGW,并且要通过设置全局系统环境变量来定位他的文件位置。同样的,深度学习环境需要cuda/cudnn,java需要jdk。程序呈现给你的是可读性语言,运行需要编译器连接到底层硬件。
另外,因为不同的任务需要下载不同的包,而不同的包和不同的环境我们需要统一的管理实现环境隔离,这个时候包管理器就出现了。比如,上文提到python有anaconda,java有maven,这些包管理器帮助我们更好的构建开发环境。至于插件/工具/框架等等,我们往往需要通过命令行或者官网下载。
环境也分为本地环境和云环境,云环境我们需要租借云服务器进行运行,网站就是在云服务器上运行的。
命令行发挥了重要作用:有些环境激活需要通过命令行,例如实现SSH远程连接;确认环境是否配置可以通过观察命令行的输出。所以,学好使用shell非常重要。
Github
首先要明确,Github是一个国外网站,按刚才说的,我们可以通过vpn/镜像站访问。
常用的镜像站有:
- https://help.kkgithub.com(通过这个网站跳转)
- https://bgithub.xyz
如果你还不知道Github是啥,只是听过,那我要告诉你了:GitHub是一个流行的代码托管平台,广泛应用于个人开发者、开源项目和企业级开发团队。它基于Git版本控制系统,允许开发者存储和管理代码,同时跟踪和控制代码的更改。GitHub不仅提供代码托管服务,还集成了项目管理、代码审查和持续集成等功能。此外,GitHub也被称为“程序员的Facebook”,因为它促进了开发者之间的社交和合作。
论文代码/优秀项目都在这里开源,你也可以通过Github构建自己的小天地,没有账号的赶紧注册!

仓库管理
Github的仓库管理比较不一样,因为涉及到专业的企业开发和隐私政策,网页上可以新建仓库,但是无法直接上传代码,我们需要通过命令行工具git bash或者github desktop(GUI)对代码的版本进行管理。此外,在连接上也有一些小细节,比如采用http传输往往需要连接VPN上传,通过SSH传输可以避免这个问题,感兴趣的可以自行搜索。
仓库的功能有很多,比如release/issue/discussion等等。我要特别提及一下commit,它记录了每一次的代码提交,在团队协作的项目中至关重要。
开源代码
学术论文/开源项目的代码和进度往往会上传平台公开,学会下载开源代码从复现到修改不仅仅是做项目/做科研的基础,也可以找到实用的工具,提升我们的工作效率,或从中学习技术。可以直接从网页中下载,或者用git clone命令。下载完成后,环境配置/操作指南请参考README.md。还有,不会markdown语法的赶紧去学了,做记录/文档非常有用。
浏览器

开发者工具
“网络”可以查看网络请求和加载的页面文件,“元素”可以查看前端的盒子布局和源代码(也可以鼠标右键+查看源代码),“应用程序”可以控制网页的缓存,但我要重点提一下控制台。
鼠标右键+检查,或者F12。控制台可以直接控制网页行为并输出信息。比如在你可以禁用JavaScript上传学在西电不让粘贴的内容,你可以执行JS代码抢远望谷的位置,你可以根据报错码定位自己的网页代码错在哪里…….网页开发离不开浏览器,它不仅是容器,更是重要的测试工具。
浏览器插件
为了更便捷的使用浏览器,或者达成某些功能(比如刷课),浏览器推出了各种插件,感兴趣的同学可以关注下,除了使用也可以也通过JS等语言编写。
SOTA AI
在大见面会上,文少鼓励大家拥抱SOTA AI,简单来说就是目前性能最强的AI。首先要提醒大家,AI的概念不仅局限于大模型(LLM),还涉及一些多模态AI,比如图像生成,图像理解等等,大语言模型的变种是agent,通过调用大语言模型的api,经过微调,外加MCP工具,可以自行实现某些具体领域的功能,比如AI Code Editor。
LLM的使用,可以通过访问镜像站或者境外网站。个人觉得GPT-5/Gemini2.5-Pro深度思考比较强,claude4-sonnet的coding能力突出(速度快,但定位错误和综合思考的能力比前两个差一些),阿里qwen的使用体验也不错。日常任务,deepseek/doubao就够用了。不过我还挺喜欢花里胡哨的豆包的。
然后就是AI Code Editor,在开发领域功能非常强大,从编写,到测试,到部署让你享受强大的模型,自动补全代码,自动执行命令,用过你才知道程序员为什么被取代了。目前比较主流的就是cursor和trae,目前trae赶上的很快,使用上没有太大差异。但是要注意下载海外版,并且挂VPN才能使用。

后续搭建个人网站,可以让不太会写前端代码的也能搭建出精美的网站。
当然我不鼓励大家在编程上太依赖AI,他确实可以帮助我们完成一些繁琐的工作,但正如“确认是否修改”功能一样,需要人的审查。在一些复杂的任务中,AI很容易出错,哪怕是简单的任务也容易不符合我们的预期。我们在给他指令的时候需要把设计工作做详细,或者在他的提示下,发挥主观能动性,共同完成剩余部分。
至于不同任务下prompt如何设计,感兴趣的同学可以去搜搜,实践也会给你提供经验。
补充
在后端开发招新的学习路线中,我希望大家可以去学习操作系统/计算机网络的基础知识,一些常见的问题,比如你对校园网的疑惑,都可以解决。这里推荐一些技术人的茶歇吧,可以多积累计算机相关的知识和前沿方向。