学习笔记1
历史:
-
Unix是早期的商业化操作系统,诞生于20世纪60年代,最早由AT&T的贝尔实验室开发。它的设计目标是支持多用户和多任务的环境。
-
Linux是由Linus Torvalds于1991年创建的开源操作系统。它最初是为个人计算机而开发,后来演变成一个广泛的操作系统家族。
联系:
-
Linux是基于Unix的设计,因此它们共享一些核心概念,如多用户、多任务等。
-
Linux借用了许多Unix命令和工具,因此在使用上有相似之处,如shell命令。
-
Linux和Unix都是多用户、多任务的操作系统,适用于服务器和个人计算机。
区别:
-
Unix是商业操作系统,由多个厂商开发和发布,存在多个不同的版本,如IBM AIX、Sun Solaris等。
-
Linux是开源操作系统,由全球的开发者社区维护和改进,有众多的发行版,如Ubuntu、Fedora、CentOS等。
-
Unix通常需要购买许可才能使用,而Linux是免费的,可以自由获取和修改。
-
Unix通常用于大型服务器和工作站,而Linux可以用于服务器、个人计算机、嵌入式设备等各种用途。
-
Unix遵循Single UNIX Specification(SUS)标准,而Linux遵循POSIX标准,但没有一个统一的Linux标准。
Linux在虚拟机的应用:
-
Linux操作系统可以在虚拟化软件中运行,如VirtualBox或VMware。这允许用户在单个物理计算机上运行多个虚拟的Linux操作系统实例。
-
在大一时,你可能已经学习了在VirtualBox中安装Ubuntu等Linux发行版的过程。在后续学期中,你使用了VMware,但整体虚拟化的概念和应用方式没有太大变化。
Linux的应用:
-
Linux内核位置: Linux操作系统的内核通常存储在
/boot目录中。这是启动时加载的核心组件。 -
Linux内核映像的三部分:
- BOOT: 这是引导加载程序,负责启动计算机并加载操作系统。
- SETUP: 它包含了一些系统设置和初始化信息。
- Linux Kernel: 这是Linux操作系统的核心部分,包含了操作系统的主要功能和驱动程序。
-
Linux的三个文件流:
- stdin(标准输入): 通常与键盘输入相关联,用于接收用户的输入。
- stdout(标准输出): 通常与屏幕相关联,用于向用户显示信息。
- stderr(标准错误): 通常也与屏幕相关联,但用于显示错误和警告信息。
常见指令:
- ls: 列出目录内容。
- cd: 切换目录。
- pwd: 显示当前工作目录。
- touch: 创建文件或更新时间戳。
- cat: 查看文件内容。
- cp: 复制文件。
- mv: 移动或重命名文件。
- mkdir: 创建目录。
- rmdir: 删除空目录。
- rm: 删除文件。
- ln: 创建文件链接。
- find: 搜索文件。
- grep: 搜索文件内容。
- ssh: 远程登录。
- gzip: 压缩文件为.gz。
- gunzip: 解压.gz文件。
- tar: 打包/解包文件。
- man: 查看命令手册。
- zip: 压缩文件为.zip。
- unzip: 解压.zip文件。
绝对路径:
- 绝对路径是指从根目录开始的完整路径。
- 根目录在Linux中用斜杠(/)表示。
- 绝对路径可以唯一地标识一个文件或目录。
- 例如,/home/user/Documents 表示根目录下的home目录下的user目录下的Documents目录。
相对路径:
- 相对路径是相对于当前工作目录的路径。
- 当前工作目录是指用户当前所处的目录。
- 相对路径不能唯一地标识一个文件或目录,它的解析依赖于当前工作目录。
- 例如,如果当前工作目录是/home/user,Documents 相对路径表示当前工作目录下的Documents目录。
- 总结:
- 使用绝对路径可以准确地定位文件或目录的位置,不受当前工作目录的影响。
- 使用相对路径可以相对简洁地表示文件或目录的位置,但需要注意当前工作目录的影响。
- 在命令行或脚本中,可以使用cd命令改变当前工作目录,进而影响相对路径的解析结果。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
编程背景
Ubuntu中的快捷键和小技巧
快捷键:
-
打开终端: 使用
Ctrl + Alt + T快速打开终端,方便进行命令行操作。 -
系统监视器: 使用
Ctrl + Alt + Delete或Ctrl + Alt + Esc打开系统监视器,查看和管理正在运行的进程和系统性能。 -
应用程序切换: 使用
Alt + Tab快速切换正在运行的应用程序。 -
窗口关闭: 使用
Ctrl + W关闭当前应用程序的窗口。 -
锁定屏幕: 使用
Ctrl + Alt + L锁定屏幕,保护计算机安全。 -
终端标签页: 在终端中使用
Ctrl + Shift + T打开新的标签页,方便多任务操作。 -
复制和粘贴: 使用
Ctrl + C复制文本,使用Ctrl + V粘贴文本。 -
进程暂停和恢复: 使用
Ctrl + Z暂停正在运行的进程,使用fg命令恢复。
使用小技巧:
-
应用程序搜索: 按下Super键(通常是Windows键)并开始输入应用程序名称,以快速启动应用程序。
-
多工作区: 使用
Super + S查看和管理多个工作区,以更好地组织你的任务。 -
截屏工具: 使用
Print Screen键或Super + Shift + S截取屏幕内容,方便创建屏幕截图。 -
自定义快捷键: 在系统设置中,你可以自定义自己的快捷键,以适应你的工作流程。
-
命令行技巧: 学习一些基本的命令行技巧,如
ls(列出文件和目录)、cp(复制文件和目录)、mv(移动文件和目录)和rm(删除文件和目录)。 -
软件包管理: 使用
apt命令来安装、更新和卸载软件包。例如,sudo apt update用于更新软件包列表,sudo apt install package-name用于安装软件包。 -
备份: 定期备份你的数据,可以使用工具如Deja Dup或rsync来自动化这个过程。
程序开发流程
开发工具:
-
文本编辑器: Ubuntu提供了多个文本编辑器,包括
vim(命令行文本编辑器)、gedit(图形界面文本编辑器)、emacs(功能强大的文本编辑器)以及vscode(Visual Studio Code,跨平台的集成开发环境)。 -
编译工具: 使用
gcc编译器来编译C语言程序。 -
调试工具: 使用
gdb调试器来调试程序。 -
项目管理工具: 使用
make工具来编译和管理项目。
编译过程:
-
编写代码:使用文本编辑器编写程序代码。
-
编译代码:使用
gcc编译器编译代码,生成可执行文件。 -
调试程序:使用
gdb调试器来调试程序,查找和修复错误。 -
项目管理:使用
make工具来管理项目,包括编译和构建过程。
![]()
![]()
额外信息:
-
在编程过程中,你可以使用快捷键和命令行工具来提高效率,例如使用
vim编辑代码,使用gcc编译程序,使用gdb进行调试。 -
通过备份你的代码和数据,你可以确保在意外情况下不会丢失重要信息。
![]()
![]()
![]()
![]()
程序执行底层细节
在Linux中,C程序的执行涉及到底层细节。这包括程序的编译、链接和执行过程。在编写C程序时,需要考虑编译器如何将源代码转换为可执行文件,链接器如何解析共享库,以及操作系统如何加载和执行程序。这些底层细节对于理解程序的运行方式和性能调优非常重要。
链接库
链接库在Linux中扮演着重要的角色。它们包含了程序在运行时需要的函数和数据,分为静态链接库和动态链接库两种类型。静态链接库在编译时将库的代码和数据与可执行文件链接在一起,而动态链接库在运行时从系统的共享库中加载。了解链接库的使用和管理对于程序的开发、维护和分发至关重要。
Makefile
Makefile是用于管理和编译项目的工具。它是一个文本文件,通过make命令读取并按照文件内容对项目进行编译。Makefile由一系列目标项、依赖项和规则组成,可以自动化构建过程,提高开发效率。
GDB调试工具
GDB是Linux下强大的调试工具,可用于分析程序的执行过程,查找和解决错误。以下是一些GDB常用的断点设置指令:
(gdb) break 7: 以行号设置断点。(gdb) break function_name: 以函数名设置断点。(gdb) clear 行号: 删除指定行的断点。(gdb) clear 函数名: 删除指定函数的断点。(gdb) delete breakpoints n: 删除指定编号的断点。(gdb) clear: 删除程序中所有的基于行设置的断点。(gdb) delete: 删除程序中所有的断点。(gdb) run: 执行程序。(gdb) n: 单步调试。(gdb) c: 执行到下一个断点。(gdb) print 变量或表达式: 打印变量或表达式当前的值。(gdb) print 变量=值: 对变量进行赋值。
数据结构与算法
在这一部分,介绍了C语言中的基础内容,如结构体、指针等,以及数据结构与算法的知识。以下是重要的数据结构和算法知识点:
-
链表:线性结构,包括单链表、双向链表、循环链表等。操作包括插入、删除和读取节点,复杂度取决于具体操作。
-
树:树形结构,每个节点有一个父节点和多个子节点。二叉树是常见的树结构,包括深度优先遍历、广度优先遍历和层序遍历等操作。
-
Makefile:用于管理和编译项目,包含目标项、依赖项和规则。
-
GDB调试工具:用于程序的调试和分析,支持断点设置、变量查看和单步执行等功能。
posted on 2023-09-10 18:39 20211406张顺扬 阅读(27) 评论(0) 收藏 举报













浙公网安备 33010602011771号