Skip to content

基本知识

这篇快速指南的目标是帮助完全零基础的同学掌握最基本计算机知识,为后续的前后端开发课程打下扎实的基础。你将学习如何正确管理文件和目录,理解操作系统的权限结构,熟悉网络通信的基本概念,以及如何使用这些知识来更好地进行开发工作。

在深入学习前端和后端开发之前,这些看似基础的知识实际上都是必不可少的。理解这些基础知识可以帮助你更好地使用开发工具、配置环境、解决问题。因此,请务必认真阅读并逐步掌握每一个概念和操作。

1.文件与目录结构

1.1 目录和文件的基本概念

计算机中的文件和目录是开发工作中最基本的概念之一。目录(或称为文件夹)用于组织和管理计算机中的各种文件,类似于日常生活中的文件柜,而文件则是存放信息的容器,比如文本文件、图片、代码文件等。

  • 目录结构:目录结构类似于一棵倒置的树,根目录在顶部,下面分支出各个子目录和文件。通过这种结构可以清晰地组织计算机中的所有信息。

例如:

/ (根目录)
  ├── home/ (用户目录)
  │     ├── user1/ (子目录)
  │     │     ├── Documents/ (文档文件夹)
  │     │     │     ├── report.docx (文档文件)
  │     │     ├── Projects/ (项目文件夹)
  │     │           ├── project1/
  │     │           ├── project2/
  │     ├── user2/ (另一个用户的目录)

在这个例子中,/ 是根目录,所有其他文件和目录都位于这个根目录之下。

1.2 绝对路径和相对路径

路径是指向文件或目录的位置,可以理解为文件的"地址"。路径有两种表示方法:绝对路径和相对路径。

  • 绝对路径:指从根目录开始,完整指明文件或目录的位置。例如,在 Linux 系统中,/home/user1/Documents/report.docx 就是一个绝对路径,它从根目录开始,指向 report.docx 这个文件。

    • Windows 示例:在 Windows 中,绝对路径类似于 C:\Users\user1\Documents\report.docx。请注意,Windows 中使用反斜杠 \ 来分隔目录,而 Linux 使用正斜杠 /
  • 相对路径:指从当前所在的目录出发,描述目标文件或目录的位置。相对路径基于当前的工作目录。例如,假设当前工作目录是 /home/user1,要访问 Documents 目录下的 report.docx 文件,可以使用相对路径 Documents/report.docx

路径符号详解:

  • .:表示当前目录。例如,./script.sh 表示当前目录下的 script.sh 文件。
  • ..:表示上一级目录。例如,../Pictures/photo.jpg 表示当前目录的上一级目录中的 Pictures 目录下的 photo.jpg 文件。

TIP

了解路径是进行任何文件操作的基础。特别是在使用命令行时,你必须清楚当前的工作目录,并能灵活地使用相对路径和绝对路径来操作文件。

1.3 工作路径 (Working Directory)

工作路径是指当前命令行操作所在的目录,所有相对路径的操作都基于这个路径。你可以使用不同的命令查看和更改当前的工作路径:

  • Linux / macOS:

    • 使用 pwd(Print Working Directory)命令查看当前工作路径。

    • 使用 cd(Change Directory)命令更改工作路径。例如:

      bash
      pwd
      # 输出:/home/user1
      cd Documents
      pwd
      # 输出:/home/user1/Documents
    • 想要回到上一级目录,使用:

      bash
      cd ..
  • Windows:

    • 使用 cd 命令查看和切换工作目录。例如:

      cmd
      cd C:\Users\user1\Documents
    • 使用 dir 查看当前目录下的所有文件和文件夹。

    • 想要回到上一级目录,使用:

      cmd
      cd ..

INFO

很多初学者在使用命令行进行开发时,忽略了工作路径的重要性,导致在不恰当的目录中执行操作,尤其是在初始化 Git 仓库时,可能会导致整个系统目录被错误管理,带来很大的混乱。因此,每次操作前请务必确认当前的工作路径是否正确。

1.4 项目文件的组织和规范

在开发过程中,项目的文件和目录结构一定要规范且有条理。这不仅能提高代码的可读性,也方便其他开发人员理解你的项目结构。

项目文件夹的建议结构:

  • 根目录:项目的主目录,包含所有子文件和子目录。

  • 常见子目录:

    • assets:静态资源文件夹,如图片、字体、图标等。
    • public:公开资源,通常包含需要直接被用户访问的文件。
    • styles:样式文件夹,存放 CSS 文件。
    • src:项目的源代码,包括前端的 JavaScript 或后端的代码。
    • distbuild:编译或打包后的文件目录,通常用于发布项目。

TIP

  • 文件命名应使用有意义的英文名称,避免使用中文和空格。
  • 路径尽量简洁明了,便于记忆和使用。例如,assets/images/logo.pnga/1.png 更容易理解。

WARNING

在开发过程中,请务必避免将系统目录(例如桌面、C 盘等)初始化为 Git 仓库,因为这会将这些目录中的所有文件都纳入版本控制,导致文件难以管理。


2.操作系统权限管理

2.1 用户权限和管理员权限

操作系统中的文件和资源通常受到权限的管理,这种管理可以防止未经授权的用户对系统进行更改。普通用户和管理员用户拥有不同的权限级别:

  • 普通用户权限:只能对用户自己创建的文件和资源进行操作。
  • 管理员权限:可以管理整个系统的文件和资源,修改系统设置,安装软件等。

在 Linux 中,sudo 是用来临时提升权限的命令。例如,你可以使用 sudo 安装软件:

bash
sudo apt-get install git

这个命令会要求你输入密码,然后以管理员权限运行安装命令。

在 Windows 中,管理员权限通常需要右键点击应用程序并选择“以管理员身份运行”,或者在出现 UAC 提示时选择确认。

2.2 如何应对权限不足的问题

当你在进行一些需要更高权限的操作时,可能会遇到Permission Denied 错误。这时候可以考虑以下解决办法:

  • 在 Linux 系统中,使用 sudo 提升权限。
  • 在 Windows 系统中,右键程序并选择“以管理员身份运行”。

WARNING

不要轻易使用管理员权限。权限越大,责任越大。管理员权限错误的操作可能会导致系统文件被意外删除或损坏。因此,除非绝对必要,否则尽量避免使用管理员权限。


3.网络通信基础知识

3.1 网络通信的概述

网络通信是指通过互联网在设备之间传递数据的过程。在开发过程中,你将会遇到各种类型的网络通信协议,比如 HTTP、HTTPS、FTP、SMTP 等。

每当你在浏览器中输入一个网址时,实际上是在向服务器发送一个请求。服务器接收到请求后,会根据请求内容返回相应的数据。这就是网络通信的基本过程。

网络通信的核心概念包括客户端、服务器和协议。

  • 客户端:发出请求的一方,比如你的电脑、手机或浏览器。
  • 服务器:接收请求并作出响应的一方,通常是存放网页和数据的远程计算机。
  • 协议:用于规范客户端和服务器之间如何交流的规则和标准,比如 HTTP、HTTPS 等。

网络协议在互联网的通信中起着至关重要的作用,它们确保了客户端和服务器之间的数据交换是可靠、有效和一致的。HTTP 就是我们在 Web 开发中最常接触到的协议之一。

3.2 HTTP 请求的构成 ((20241104153034-m54pnhz "*"))

HTTP(Hypertext Transfer Protocol) 是一种用于客户端与服务器之间进行通信的协议。在 Web 开发中,你将不断地与 HTTP 请求和响应打交道。

HTTP 请求通常由以下几部分组成:

  • 请求行:请求行包含请求方法、目标 URL 和协议版本。

    • 请求方法:例如 GET(获取资源)、POST(提交数据)、PUT(更新资源)和 DELETE(删除资源)。
    • 目标 URL:表示所请求的资源位置。
    • 协议版本:例如 HTTP/1.1、HTTP/2 等。

    例如:

    GET /index.html HTTP/1.1

    这表示使用 GET 方法请求服务器的 /index.html 页面。

  • 请求头 (Headers):请求头携带了关于请求的额外信息,例如浏览器类型、用户代理、接受的数据类型等。

    • 例如:

      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
      Accept: text/html,application/xhtml+xml,application/xml
  • 请求体 (Body):请求体包含了要发送给服务器的数据,通常在 POST、PUT 等方法中使用。例如当你在一个网站上填写表单并点击提交时,数据就会通过请求体发送到服务器。

HTTP 响应 包含服务器返回给客户端的信息,通常包括以下几部分:

  • 状态行:状态行包含状态码和状态描述。

    • 状态码:例如 200(OK,表示请求成功)、404(Not Found,表示资源未找到)、500(Internal Server Error,表示服务器错误)。

    例如:

    HTTP/1.1 200 OK
  • 响应头 (Headers):响应头提供了关于响应的一些信息,例如服务器类型、数据格式等。

  • 响应体 (Body):响应体包含了请求的资源内容,例如网页的 HTML 代码、图片数据等。

3.3 代理工具的工作原理

在开发过程中,特别是调试网络请求时,你可能会使用代理工具来帮助访问某些受限的网站或者测试网络请求的行为。代理服务器是一种中间服务器,它可以代表你的设备向互联网发送请求。

代理工具的工作原理是:当你通过代理服务器访问互联网时,代理服务器会替你发送请求并返回响应,从而隐藏你的真实 IP 地址并绕过某些网络限制。

TUN 模式与普通代理模式的区别:

  • TUN 模式:

    • TUN 模式通过操作系统的网络层实现数据包的重定向,相当于在系统中建立一个虚拟的网络适配器,能够拦截系统中的所有网络流量。因此,TUN 模式可以代理所有应用程序的流量,而不只是支持代理设置的应用程序。
    • TUN 模式的实现比较复杂,通常需要系统的深度集成,因此需要管理员权限来配置虚拟网卡。
  • 系统代理模式:

    • 系统代理模式是在操作系统中设置一个代理服务器地址,只有支持代理设置的应用程序(例如浏览器)会通过代理服务器进行数据通信。
    • 使用系统代理模式时,很多系统级应用和不支持代理设置的应用不会受到影响,例如终端中的 curl 命令默认情况下并不会通过系统代理。

注意事项:

  • 在使用代理工具时,代理可能会干扰本地服务器的运行,例如本地开发服务器的请求可能会被代理截获,导致访问失败。
  • 在安装一些依赖包或工具时如果出现SSL或者握手错误,建议关闭代理,以避免由于代理设置导致的连接问题。

INFO

在使用代理工具时,请务必注意其影响和使用权限,确保它们不会干扰你当前的开发步骤。


4.提问的智慧与学习技巧

4.1 善用搜索引擎

作为开发人员,你需要不断学习和解决各种问题,而搜索引擎是你最强大的工具之一。掌握如何有效地使用搜索引擎可以让你事半功倍。

如何有效地使用搜索引擎:

  • 明确描述问题:用清晰的语句描述你遇到的问题。例如,“如何在 Linux 中安装 Node.js” 比“安装 Node.js”更能帮助你找到精确的答案。
  • 善于提取关键词:例如,遇到权限问题时,可以使用“Linux 权限不足 sudo”这样的关键词快速找到相关解决办法。
  • 搜索特定错误代码:如果程序输出了错误代码,直接将错误代码和相关信息复制到搜索引擎中进行搜索,往往可以找到别人遇到过类似问题的解决方案。
  • 使用限定符:可以使用限定符来精确搜索。例如,使用 site:stackoverflow.com 可以限定搜索结果来自 Stack Overflow。

解决问题前先搜索,不要害怕查阅各种文档和论坛,这不仅可以帮助你更快解决问题,还能增长你的知识。

4.2 提问的智慧

在编程社区中,提出一个好的问题非常重要。一个好的问题不仅可以帮助别人快速理解你的困境,还能让你更快得到高质量的解答。

提出高质量问题的要点:

  • 描述清楚问题背景:提供足够的背景信息,例如你在做什么、遇到了什么问题、以及你希望实现什么目标。
  • 展示尝试过的解决办法:列出你尝试过的解决方法,以及它们为什么没有奏效。这样可以避免他人重复你已经尝试过的步骤。
  • 简洁明了:问题要简洁明了,不要包含无关的细节。确保别人能一眼看懂你的问题核心。

4.3 AI 工具的使用与限制

AI 工具可以在学习和开发中提供很大的帮助,但你必须正确使用它们,尤其是在学习的初期。

AI 工具的优势:

  • 可以为你提供编程代码的模板、错误的调试思路,甚至帮你解释某些复杂概念。
  • 在遇到困境时,它们可以为你提供一些突破的方向。

AI 工具的限制:

  • 在初学阶段,过度依赖 AI 工具替你完成代码编写,会影响你对基础知识的掌握。你需要深入理解每一个代码片段,而不仅仅是把它们当成“黑盒”来使用。
  • AI 工具可能会给出错误或不适合当前场景的建议,因此你必须对它的回答进行批判性地思考。

TIP

AI 工具是辅助学习的工具,而不是学习的替代品。尝试理解工具给出的答案,并自己实践,才能真正掌握编程技能。


总结

  • 知识点总结:对于每个章节中的知识点,请花时间复习并进行实践操作。

  • 推荐阅读与学习资源链接:

  • 常见问题解答 (FAQ)

    Q1: 为什么我的终端提示“Permission Denied”?

    • A: 这是因为你没有足够的权限来执行某些操作。在 Linux 系统中,可以尝试使用 sudo 提升权限。在 Windows 中,尝试右键以管理员身份运行。

    Q2: 为什么 Git 提示我在错误的目录初始化仓库?

    • A: 你可能在系统目录(如桌面或根目录)中初始化了 Git 仓库。确保在你的项目文件夹中执行 git init,而不是在系统目录。

    Q3: TUN 模式和普通代理有什么区别?

    • A: TUN 模式是在系统层面重定向所有流量,而普通代理只对特定应用有效。TUN 模式需要系统权限,能够代理所有网络请求。

    Q4: 我该如何解决 npm 安装依赖时的网络问题?

    • A: 可能是代理工具干扰了连接,建议关闭代理再进行安装。另外,使用国内镜像源(如 cnpmyarn 的淘宝镜像)也可以提升安装速度。

    Q5: 为什么我使用相对路径找不到文件?

    • A: 请确认当前的工作路径是否正确,可以通过 pwd(Linux/macOS)或 cd(Windows)查看。如果工作路径不对,使用 cd 切换到正确的目录。