Linux面试题及详细答案 120道(1-15)-- 基础概念

前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

  • 一、本文面试题目录
      • 1. 什么是Linux?它与Unix有什么关系和区别?
      • 2. Linux的内核版本和发行版有什么区别?列举常见的Linux发行版。
      • 3. 什么是GNU?GNU/Linux的关系是什么?
      • 4. Linux系统的主要组成部分有哪些?
      • 5. 简述Linux的启动过程。
      • 6. BIOS、GRUB在Linux启动中分别起到什么作用?
      • 7. 什么是运行级别(Runlevel)?不同运行级别的含义是什么?
      • 8. systemd和init有什么区别?为什么systemd被广泛采用?
      • 9. Linux的文件系统层级结构(FHS)是怎样的?各主要目录的作用是什么?
      • 10. 什么是Shell?常见的Shell有哪些?
      • 11. Bash和Zsh的主要区别是什么?
      • 12. 绝对路径和相对路径的区别是什么?如何表示当前目录和父目录?
      • 13. 什么是inode?它包含哪些信息?与文件有什么关系?
      • 14. 硬链接和软链接(符号链接)的区别是什么?
      • 15. 什么是虚拟文件系统(VFS)?它的作用是什么?
  • 二、120道Linux面试题目录列表

一、本文面试题目录

1. 什么是Linux?它与Unix有什么关系和区别?

定义:Linux是一个开源的类Unix操作系统内核,由Linus Torvalds于1991年首次发布。它本身只是内核,通常与GNU项目的工具和其他软件结合,形成完整的操作系统。

与Unix的关系

  • Linux受Unix设计思想启发,实现了Unix的大部分功能和接口
  • 两者都遵循"一切皆文件"的理念,拥有相似的命令行界面和编程接口
  • Linux可以看作是Unix的现代开源实现

区别

特性LinuxUnix
许可证开源(GPL)多数为商业授权
起源1991年,Linus Torvalds1969年,贝尔实验室
硬件支持广泛支持各种硬件主要支持服务器和工作站
价格免费或低成本通常需要商业许可费用
扩展性高度可定制定制性受限

2. Linux的内核版本和发行版有什么区别?列举常见的Linux发行版。

内核版本

  • 指Linux操作系统的核心程序版本
  • 由Linus Torvalds及其团队维护
  • 版本号格式通常为:主版本.次版本.修订号(如5.15.0)
  • 只包含操作系统最核心的功能:进程管理、内存管理、设备驱动等

发行版

  • 基于Linux内核,整合了各种软件和工具的完整操作系统
  • 由不同组织或公司维护
  • 除内核外,还包含桌面环境、应用程序、包管理系统等

常见发行版

  1. Debian系列:Debian、Ubuntu、Linux Mint
  2. Red Hat系列:Red Hat Enterprise Linux (RHEL)、CentOS、Fedora
  3. SUSE系列:openSUSE、SUSE Linux Enterprise
  4. 独立发行版:Arch Linux、Gentoo、Slackware
  5. 特殊用途:Kali Linux(安全测试)、Raspbian(树莓派)

示例:查看内核版本命令

uname -r  # 输出示例:5.4.0-91-generic

3. 什么是GNU?GNU/Linux的关系是什么?

GNU

  • 是"GNU’s Not Unix"的递归缩写
  • 由Richard Stallman于1983年发起的自由软件项目
  • 目标是创建一个完全自由的类Unix操作系统
  • 开发了大量基础工具:gcc编译器、bash shell、glibc库等

GNU/Linux关系

  • Linux内核与GNU项目的软件结合形成了完整的操作系统
  • 严格来说,我们使用的"Linux"系统实际上是"GNU/Linux"
  • Linux提供内核,GNU提供了用户空间的大部分工具和库
  • 两者互补,共同构成了功能完整的操作系统

历史背景
GNU项目已经开发了操作系统的大部分组件,但缺乏一个有效的内核。1991年Linux内核的出现填补了这一空白,与GNU软件结合形成了今天广泛使用的操作系统。

4. Linux系统的主要组成部分有哪些?

Linux系统由以下主要部分组成:

  1. 内核(Kernel)

    • 系统的核心,管理硬件资源
    • 负责进程管理、内存管理、文件系统、设备驱动等
    • 是操作系统与硬件之间的接口
  2. Shell(外壳)

    • 命令解释器,用户与内核交互的接口
    • 常见的有bash、zsh、sh等
    • 接收用户命令并传递给内核执行
  3. 文件系统

    • 组织和存储文件的方式
    • 常见的有ext4、xfs、btrfs等
    • 采用树形目录结构
  4. 应用程序和工具

    • 用户使用的各种软件和工具
    • 包括文本编辑器、编译器、办公软件等
    • 许多来自GNU项目
  5. 系统库(Libraries)

    • 提供程序运行所需的函数和资源
    • 如glibc(GNU C库)
    • 简化应用程序开发
  6. 服务(Services)

    • 在后台运行的程序
    • 如网络服务、打印服务等
    • 由systemd或其他初始化系统管理

结构示意图

用户 → Shell → 系统调用 → 内核 → 硬件↓应用程序 → 系统库 → 内核

5. 简述Linux的启动过程。

Linux启动过程可分为以下几个主要阶段:

  1. BIOS/UEFI初始化

    • 计算机通电后首先运行基本输入输出系统(BIOS)或统一可扩展固件接口(UEFI)
    • 进行硬件自检(POST),检测CPU、内存、硬盘等设备
    • 确定启动设备(通常是硬盘)
  2. 引导加载程序(Boot Loader)

    • 从启动设备加载引导程序(如GRUB)
    • GRUB显示启动菜单,允许用户选择操作系统
    • 加载并启动Linux内核
  3. 内核初始化

    • 内核解压并加载到内存
    • 初始化硬件设备,建立内存管理
    • 挂载临时根文件系统(initramfs/initrd)
  4. 启动初始化系统

    • 内核启动初始化进程(如systemd、upstart或传统的init)
    • 这是系统启动的第一个用户空间进程(PID=1)
  5. 系统初始化

    • 初始化系统负责启动各种服务和进程
    • 挂载/etc/fstab中定义的文件系统
    • 设置网络、时钟等系统参数
  6. 用户登录

    • 启动图形界面或命令行登录界面
    • 用户输入用户名和密码进行身份验证
    • 加载用户环境,完成启动过程

简化流程

电源启动 → BIOS/UEFI → GRUB → 内核 → systemd/init → 服务启动 → 登录界面

6. BIOS、GRUB在Linux启动中分别起到什么作用?

BIOS(Basic Input/Output System)

  • 作用:是计算机启动时运行的固件程序,负责硬件初始化和启动引导
  • 具体功能
    1. 执行POST(Power-On Self-Test,加电自检),检查硬件是否正常
    2. 初始化硬件设备,如CPU、内存、硬盘等
    3. 确定启动顺序和启动设备(通过BIOS设置)
    4. 从启动设备的MBR(主引导记录)加载引导程序

GRUB(Grand Unified Bootloader)

  • 作用:是Linux系统中常用的引导加载程序,负责加载操作系统内核
  • 具体功能
    1. 提供启动菜单,允许用户选择要启动的操作系统
    2. 加载并解压Linux内核到内存
    3. 向内核传递启动参数
    4. 支持多种文件系统和操作系统
    5. 可以在启动前修改内核参数

两者关系
BIOS完成硬件初始化后,从启动设备加载GRUB,GRUB再负责加载Linux内核。在现代系统中,UEFI正在逐渐取代BIOS,而GRUB也有对应的UEFI版本。

GRUB配置文件
主要配置文件位于/boot/grub/grub.cfg/boot/grub2/grub2.cfg

7. 什么是运行级别(Runlevel)?不同运行级别的含义是什么?

运行级别
是Linux系统在启动时或运行中的不同操作模式,定义了系统启动哪些服务和进程。

传统运行级别(0-6)

  • 0:关机(halt)- 系统关闭
  • 1:单用户模式(single user mode)- 仅root用户可登录,无网络
  • 2:多用户模式,无网络服务(Debian系)
  • 3:多用户模式,命令行界面(Red Hat系)
  • 4:未使用(自定义)
  • 5:多用户模式,图形界面
  • 6:重启(reboot)- 系统重启

查看当前运行级别

runlevel       # 传统命令
systemctl get-default  # systemd系统

切换运行级别

init 3         # 切换到运行级别3
systemctl isolate multi-user.target  # systemd系统对应级别3

systemd中的目标(Targets)
systemd使用目标(targets)替代了传统的运行级别:

  • poweroff.target → 运行级别0
  • rescue.target → 运行级别1
  • multi-user.target → 运行级别3
  • graphical.target → 运行级别5
  • reboot.target → 运行级别6

8. systemd和init有什么区别?为什么systemd被广泛采用?

init

  • 传统的系统初始化程序,采用串行启动方式
  • 基于Shell脚本,按顺序启动服务
  • 启动速度慢,依赖管理简单
  • 配置文件复杂,分布在多个目录

systemd

  • 新一代系统和服务管理器,采用并行启动方式
  • 基于C语言编写,支持并行启动服务
  • 启动速度快,有更强大的依赖管理
  • 集成了多种系统管理功能

主要区别

特性initsystemd
启动方式串行并行
配置方式Shell脚本单元文件(.service等)
依赖管理简单复杂且精确
启动速度较慢较快
功能范围仅初始化集成日志、电源管理等
服务控制service命令systemctl命令

systemd被广泛采用的原因

  1. 启动速度快:并行启动服务,减少启动时间
  2. 强大的依赖管理:精确控制服务启动顺序
  3. 统一的管理接口:通过systemctl管理所有系统功能
  4. 更好的日志支持:集成journald日志系统
  5. 按需启动服务:只有在需要时才启动某些服务
  6. 支持快照和恢复:可以保存和恢复系统状态
  7. 更好的硬件支持:对现代硬件和技术有更好的支持

示例命令对比

# 启动服务
service httpd start   # init
systemctl start httpd  # systemd# 设置开机自启
chkconfig httpd on    # init
systemctl enable httpd # systemd

9. Linux的文件系统层级结构(FHS)是怎样的?各主要目录的作用是什么?

Linux采用树形文件系统层级结构(FHS,Filesystem Hierarchy Standard),主要目录及其作用如下:

  1. /(根目录)

    • 文件系统的起点,所有目录都源于此
  2. /bin

    • 存放基本命令(二进制文件),如ls、cp、mv等
    • 所有用户都可使用,在单用户模式下也能访问
  3. /sbin

    • 存放系统管理命令,如reboot、ifconfig等
    • 通常只有root用户可使用
  4. /etc

    • 存放系统配置文件,如网络配置、用户配置等
    • 重要文件:/etc/passwd、/etc/fstab、/etc/hostname
  5. /home

    • 普通用户的主目录
    • 通常每个用户有一个以用户名命名的子目录
  6. /root

    • 超级用户(root)的主目录
  7. /usr

    • 存放用户应用程序和文件
    • 子目录包括:/usr/bin(用户命令)、/usr/sbin(系统命令)、/usr/lib(库文件)、/usr/share(共享数据)
  8. /var

    • 存放经常变化的文件
    • 子目录包括:/var/log(日志文件)、/var/spool(邮件、打印队列)、/var/www(网页文件)
  9. /tmp

    • 临时文件目录
    • 系统重启后通常会清空
  10. /dev

    • 设备文件目录,所有硬件设备以文件形式存在于此
    • 如:/dev/sda(第一块硬盘)、/dev/null(空设备)
  11. /proc

    • 虚拟文件系统,包含系统进程和内核信息
    • 如:/proc/cpuinfo(CPU信息)、/proc/meminfo(内存信息)
  12. /sys

    • 虚拟文件系统,用于访问硬件设备和内核设置
  13. /mnt/media

    • 临时挂载点,用于挂载外部设备
  14. /lib/lib64

    • 系统库文件,供二进制程序使用

10. 什么是Shell?常见的Shell有哪些?

Shell
是用户与Linux内核之间的接口程序,负责解释用户输入的命令并传递给内核执行。它是一种命令行解释器,也可以作为脚本语言使用。

工作原理

  1. 用户输入命令
  2. Shell解析命令
  3. Shell将命令转换为内核可理解的指令
  4. 内核执行指令并返回结果
  5. Shell将结果展示给用户

常见的Shell

  1. Bash(Bourne Again SHell)

    • 最常用的Shell,大多数Linux发行版的默认Shell
    • 兼容Bourne Shell,增加了许多新特性
    • 支持命令历史、命令补全、管道等功能
  2. Sh(Bourne Shell)

    • 早期的Unix Shell,由Stephen Bourne开发
    • 功能简单,兼容性好
    • 许多系统中sh是bash的符号链接
  3. Csh(C Shell)

    • 语法类似C语言,适合编程
    • 引入了命令历史、别名等功能
    • 在BSD系统中较常见
  4. Tcsh

    • Csh的增强版,增加了命令补全等功能
  5. Zsh(Z Shell)

    • 功能强大,结合了bash、csh等的优点
    • 支持更多扩展和自定义选项
    • 具有更强大的自动补全功能
  6. Ksh(Korn Shell)

    • 结合了Bourne Shell和C Shell的特性
    • 适合脚本编程,功能丰富

查看和切换Shell

# 查看当前使用的Shell
echo $SHELL# 查看系统安装的Shell
cat /etc/shells# 切换Shell(需注销后生效)
chsh -s /bin/zsh

11. Bash和Zsh的主要区别是什么?

Bash和Zsh都是流行的Shell,但Zsh在功能和用户体验上有更多增强:

主要区别

  1. 命令补全

    • Bash:基本的命令和文件名补全
    • Zsh:更智能的补全,支持:
      • 命令选项补全(无需记住完整选项)
      • 目录浏览补全(按Tab键可浏览目录)
      • 插件扩展补全(如git命令补全)
  2. 主题和外观

    • Bash:外观定制有限
    • Zsh:高度可定制,支持丰富的主题
    • 可显示Git分支、虚拟环境等信息
  3. 历史记录

    • Bash:基本的命令历史功能
    • Zsh:更强大的历史管理:
      • 跨会话共享历史
      • 按部分命令搜索历史
      • 历史记录去重
  4. 插件支持

    • Bash:插件支持有限
    • Zsh:有丰富的插件生态系统(如Oh My Zsh)
    • 常用插件:git、autojump、syntax-highlighting等
  5. ** globbing(模式匹配)**

    • Zsh提供更强大的模式匹配功能
    • 支持递归匹配(**)、扩展通配符等
  6. 拼写纠正

    • Zsh可以自动纠正命令拼写错误
    • Bash无此功能
  7. 启动速度

    • Bash:启动较快
    • Zsh:由于功能丰富,启动可能较慢,尤其是加载多个插件时

示例对比

  1. Zsh的递归目录匹配:
# 列出所有子目录中的.md文件
ls **/*.md  # Zsh支持,Bash默认不支持
  1. Zsh的拼写纠正:
# 如果输入了错误命令
ech hello# Zsh会提示
zsh: correct 'ech' to 'echo' [nyae]? 
  1. 安装Oh My Zsh增强Zsh功能:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

12. 绝对路径和相对路径的区别是什么?如何表示当前目录和父目录?

绝对路径

  • 从根目录(/)开始的完整路径
  • 无论当前工作目录是什么,都能准确定位文件
  • 示例:/home/user/documents/file.txt/etc/nginx/nginx.conf

相对路径

  • 相对于当前工作目录的路径
  • 不包含根目录,依赖于当前位置
  • 示例:documents/file.txt../images/photo.jpg

表示方法

  • 当前目录:用.表示
    • 示例:./script.sh(执行当前目录下的script.sh)
  • 父目录:用..表示
    • 示例:cd ..(切换到上一级目录)

区别对比

特性绝对路径相对路径
起点根目录(/)当前工作目录
长度通常较长通常较短
稳定性不随当前目录变化随当前目录变化
使用场景脚本中引用固定位置文件手动操作或相对位置固定的文件

示例
假设当前目录是/home/user

# 使用绝对路径访问文件
cat /home/user/documents/report.txt# 使用相对路径访问同一文件
cat documents/report.txt# 从当前目录访问父目录下的文件
cat ../shared/file.txt# 从当前目录访问当前目录下的文件(两种方式)
cat ./downloads/image.jpg
cat downloads/image.jpg

查看当前目录的绝对路径

pwd  # 输出示例:/home/user

13. 什么是inode?它包含哪些信息?与文件有什么关系?

inode(索引节点)
是Linux文件系统中的一个数据结构,用于存储文件的元数据(描述信息)。每个文件都对应一个唯一的inode。

inode包含的信息

  1. 文件类型(普通文件、目录、链接等)
  2. 文件权限(读、写、执行权限)
  3. 文件所有者和所属组
  4. 文件大小
  5. 最后访问时间(atime)
  6. 最后修改时间(mtime)
  7. 最后元数据修改时间(ctime)
  8. 链接数(指向该inode的硬链接数量)
  9. 文件数据块的位置指针

inode与文件的关系

  • 每个文件对应一个inode,但一个inode可以被多个文件名(硬链接)指向
  • 文件名不存储在inode中,而是存储在目录文件中
  • 目录是一种特殊文件,包含文件名与inode号的映射关系
  • 当访问文件时,系统先通过文件名找到对应的inode号,再通过inode找到文件数据

重要特性

  • inode号在同一文件系统中是唯一的
  • inode也会消耗磁盘空间(通常在格式化时分配)
  • 当inode耗尽时,即使有磁盘空间也无法创建新文件

相关命令

# 查看文件的inode号
ls -i filename  # 示例输出:12345 filename# 查看inode详细信息
stat filename# 查看文件系统的inode使用情况
df -i

示例

# 创建文件并查看其inode信息
touch testfile
stat testfile# 输出结果包含inode号、权限、大小、时间等信息File: testfileSize: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 1048605     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
Access: 2023-07-15 10:30:00.000000000 +0800
Modify: 2023-07-15 10:30:00.000000000 +0800
Change: 2023-07-15 10:30:00.000000000 +0800Birth: -

14. 硬链接和软链接(符号链接)的区别是什么?

硬链接(Hard Link)和软链接(Symbolic Link,简称symlink)是Linux中两种创建链接文件的方式,主要区别如下:

定义

  • 硬链接:指向文件inode的另一个文件名,与原文件共享同一个inode
  • 软链接:一个特殊的文件,包含指向另一个文件的路径名

主要区别

特性硬链接软链接
inode与原文件相同有自己独立的inode
存储内容不存储内容,与原文件共享数据存储指向原文件的路径
跨文件系统不支持支持
指向目录通常不允许(部分系统支持)允许
原文件删除仍可访问文件内容链接失效,变为"悬空链接"
大小与原文件相同(实际上不占用额外空间)取决于路径长度
权限与原文件共享权限设置权限不影响访问(实际取决于原文件)

创建命令

# 创建硬链接
ln 原文件 硬链接名# 创建软链接
ln -s 原文件 软链接名

示例

# 创建测试文件
echo "Hello World" > original.txt# 创建硬链接
ln original.txt hardlink.txt# 创建软链接
ln -s original.txt symlink.txt# 查看文件信息
ls -li# 输出示例(注意inode号)
12345 -rw-r--r-- 2 user user 12 Jul 15 11:00 original.txt
12345 -rw-r--r-- 2 user user 12 Jul 15 11:00 hardlink.txt
67890 lrwxrwxrwx 1 user user 12 Jul 15 11:01 symlink.txt -> original.txt

使用场景

  • 硬链接:适用于需要在不同位置访问同一文件,且不希望原文件删除后链接失效的场景
  • 软链接:适用于需要链接到目录、跨文件系统链接,或需要明确标识为链接的场景

注意事项

  • 删除原文件后,硬链接仍可正常访问内容,而软链接会变成无效链接
  • 修改硬链接或原文件的内容会相互影响(因为它们指向同一数据)
  • 软链接可以指向相对路径或绝对路径,建议使用绝对路径避免链接失效

15. 什么是虚拟文件系统(VFS)?它的作用是什么?

虚拟文件系统(VFS,Virtual File System)
是Linux内核中的一个抽象层,提供了一个统一的接口来访问不同类型的文件系统。它隐藏了各种具体文件系统的实现细节,使得用户空间程序可以用相同的方式访问不同的文件系统。

主要作用

  1. 提供统一接口:为所有文件系统提供一致的操作接口(如open、read、write等)
  2. 屏蔽实现差异:隐藏不同文件系统的底层实现细节
  3. 支持多种文件系统:允许同时使用多种不同类型的文件系统(如ext4、xfs、NTFS等)
  4. 简化应用程序开发:应用程序无需关心底层文件系统类型
  5. 管理文件系统挂载:负责文件系统的挂载和卸载

VFS的核心对象

  1. 超级块(superblock):每个已挂载的文件系统对应一个超级块对象,存储文件系统的整体信息
  2. 索引节点(inode):表示一个文件,存储文件的元数据
  3. 目录项(dentry):表示目录项,维护文件名与inode的映射关系
  4. 文件对象(file):表示进程打开的文件,包含文件指针位置等信息

工作流程

  1. 应用程序调用文件操作函数(如open())
  2. 系统调用将请求传递给VFS
  3. VFS根据文件路径确定对应的文件系统
  4. VFS调用该文件系统的具体实现函数
  5. 文件系统与底层存储设备交互
  6. 结果通过VFS返回给应用程序

优势

  • 灵活性:可以同时使用多种文件系统
  • 可扩展性:便于添加新的文件系统类型
  • 兼容性:可以访问其他操作系统的文件系统
  • 一致性:用户和应用程序使用统一的方式操作文件

支持的文件系统类型

  • 磁盘文件系统:ext4、xfs、btrfs、NTFS、FAT32等
  • 网络文件系统:NFS、CIFS等
  • 虚拟文件系统:proc、sysfs、tmpfs等

查看系统已挂载的文件系统

mount  # 显示所有已挂载的文件系统及其类型
df -T  # 显示文件系统类型和磁盘使用情况

二、120道Linux面试题目录列表

文章序号Linux面试题120道
1Linux面试题及详细答案120道(01-15)
2Linux面试题及详细答案120道(16-30)
3Linux面试题及详细答案120道(31-45)
4Linux面试题及详细答案120道(46-60)
5Linux面试题及详细答案120道(61-75)
6Linux面试题及详细答案120道(76-95)
7Linux面试题及详细答案120道(96-110)
8Linux面试题及详细答案120道(111-120)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95483.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

week1-[分支结构]中位数

week1-[分支结构]中位数 题目描述 给定 444 个正整数 a,b,c,da,b,c,da,b,c,d,输出它们的中位数,答案四舍五入保留 111 位小数。 输入格式 输入共 111 行 444 个正整数 a,b,c,da,b,c,da,b,c,d。 输出格式 输出共 111 行 111 个浮点数表示答案。 样例 #1 样…

[激光原理与应用-259]:理论 - 几何光学 - 平面镜的反射、平面透镜的折射、平面镜的反射成像、平面透镜的成像的规律

一、平面镜的反射规律平面镜的反射遵循镜面反射定律,即光线在光滑表面(反射面平整度远大于波长)发生反射时,满足以下条件:反射光线、入射光线与法线共面:反射光线、入射光线和法线(垂直于反射面…

相机按键功能解析

相机按键功能解析佳能相机按键机身背面机身正面机身顶部机身侧面 佳能相机按键 机身背面取景器目镜:用于拍摄时观察相机形成的图像。实拍显示/视频拍摄按钮:按下即可开始拍摄或录制视频。光圈/曝光补偿键:调整光圈大小和曝光补偿,…

51单片机-驱动LED模块教程

本章思维导图: 51单片机驱动LED灯模块 LED灯元器件简介 LED(Light Emitting Diode,发光二极管) 是一种固态半导体器件,通过P-N结中电子与空穴复合直接将电能转化为光能。其核心结构由P型半导体(空穴主导&a…

Git 完全手册:从入门到团队协作实战(2)

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《C修炼之路》、《Linux修炼&#xff1a;终端之内 洞悉真理…

c语言中堆和栈的区别

1.栈区(stack):由编译器自动分配释放&#xff0c;栈主要用于存储局部变量、函数参数、函数调用和返回信息等。其操作方式类似于数据结构中的栈。 2.堆区(heap):一般由程序员分配释放&#xff0c;若程序员不释放&#xff0c;则可能会引起内存泄漏。注堆和数据结构中的堆栈不一样…

华为实验WLAN 基础配置随练

业务vlan 20 192.168.20.x管理vlan 100 192.168.100.x步骤① 网络互通Core sw:vlan batch 20 100 dhcp enable int vlanif 20IP add 192.168.20.1 24dhcp select interfaceinterface GigabitEthernet0/0/1/2port link-type trunkport trunk pvid vlan 100port trunk allow-pas…

CMake 如何查找 Python2和Python3

问题 在一个CMakeLists.txt文件里面看到了下面的这句话 find_package(Python2 COMPONENTS Interpreter Development NumPy)这个好有趣啊&#xff0c;Python2也是一个C的库吗&#xff0c;也有Python2Config.cmake或者FindPython2.cmake? 回答 find_package(Python2 COMPONENTS …

心灵笔记:刻意练习

心灵笔记&#xff1a;刻意练习提要 所有人都以为“杰出”源于“天赋”&#xff0c;而“天才”却说&#xff1a;我的成就源于“正确的练习”&#xff01; 定义&#xff1a;刻意练习是一种有目的、有方法、能带来能力持续提升的结构化训练方式&#xff0c;它并非简单的重复劳动&a…

langchain入门笔记03:使用fastapi部署本地大模型后端接口,优化局域网内的问答响应速度

文章目录前言一、fastapi的简单入门1&#xff1a;安装必要的包&#xff08;python3.11&#xff09;&#xff1a;2&#xff1a;快速搭建一个fastapi&#xff1a;二、提升问答的响应速度1. fastapi部署后端接口&#xff0c;在局域网内访问的方法2. 局域网内的测试&#xff1a;“未…

【CDA 新一级】学习笔记第1篇:数据分析的时代背景

作者&#xff1a;CDA持证人 张九领我们要学习数据分析&#xff0c;就要从当前时代的数据特点&#xff0c;找到在时代特点下企业需要数据分析的痛点&#xff0c;然后理解数据分析在企业中的作用。当前时代&#xff0c;数据分析的特征是哪些呢&#xff1f;我们用VUCA来概括数据分…

Vite 为什么比 Webpack 快?原理深度分析

Hi&#xff0c;我是布兰妮甜 &#xff01;在现代前端开发中&#xff0c;构建工具的性能直接影响开发体验和生产力。Webpack 作为传统打包工具的代表&#xff0c;长期以来主导着前端构建领域&#xff0c;而 Vite 作为新一代的前端构建工具&#xff0c;凭借其出色的开发服务器启动…

数字电路上的通讯速度是越快越好还是越慢越好?

昨天我突发奇想&#xff0c;修改了一下MCU和INA226以及DAC8551的通讯速率。之前的INA226用的是I2C通讯&#xff0c;之前设置的速率是100Kbps&#xff0c;DAC8551是SPI通讯&#xff0c;速率是10Mbps&#xff0c;昨天修改之前输出位置的测试结果如图&#xff1a;可以看到&#xf…

Google Gemini 的深度研究终于进入 API 阶段

Google Gemini 最强大的功能之一是深度研究&#xff0c;但到目前为止&#xff0c;它一直严格限制在 Gemini 界面上。这种情况可能很快就会改变。 通过 Gemini 中的深度研究&#xff0c;您可以搜索几乎任何内容&#xff0c;包括学者、现有研究论文等。 谷歌将深度研究描述为一…

通过beeware制作安卓apk用于获取cpolar网址

我们都知道&#xff0c;没有付费的cpolar用户&#xff0c;要不时更新cpolar网址。每次都要自己登录去获取远程的cpolar个人网址比较麻烦&#xff0c;好在可以用python去自动获取。这里说的是&#xff0c;比如用手机装termux软件&#xff0c;再在termux中装cpolar&#xff0c;然…

Swift 实战:用链表和哈希表写出高性能的贪吃蛇引擎(LeetCode 353)

文章目录摘要描述解决方案解析问题与解决方案关键细节逐条讲示例与运行结果时间复杂度空间复杂度总结摘要 这题的目标是设计一个“贪吃蛇”核心引擎&#xff1a;给定棋盘大小和一串食物位置&#xff0c;支持不断调用 move(direction) 推进游戏&#xff0c;返回当前分数&#x…

2025-08-15:按对角线进行矩阵排序。用go语言,给你一个 n × n 的整数矩阵,要求返回一个按下面规则调整后的矩阵: - 将每一条与主对角线平行的斜线视为一个序列。对于位于主对角线及其下方的

2025-08-15&#xff1a;按对角线进行矩阵排序。用go语言&#xff0c;给你一个 n n 的整数矩阵&#xff0c;要求返回一个按下面规则调整后的矩阵&#xff1a;将每一条与主对角线平行的斜线视为一个序列。对于位于主对角线及其下方的那些斜线&#xff08;即所在位置的行索引 ≥ …

MySQL相关概念和易错知识点(5)(索引、事务、MVCC)

目录1.索引&#xff08;1&#xff09;局部性原理a.局部性原理在计算机中的地位b.pagec.池化技术&#xff08;Buffer Pool&#xff09;&#xff08;2&#xff09;如何理解索引&#xff08;3&#xff09;索引的原理a.page的构成b.多层目录c.基于B树的索引①B树的特性在索引中的作…

SQLite 子查询

SQLite 子查询 SQLite 是一个轻量级的数据库管理系统&#xff0c;广泛应用于移动设备、嵌入式系统和桌面应用。在处理复杂的查询时&#xff0c;子查询&#xff08;Subquery&#xff09;是SQLite数据库查询语言中的一个强大工具。本文将详细介绍SQLite子查询的概念、用法及其在数…

区块链系统审计方法论:全面指南与Python实践

目录 区块链系统审计方法论:全面指南与Python实践 1. 引言 2. 区块链审计框架 3. 智能合约审计关键技术 3.1 静态代码分析 3.2 符号执行(Symbolic Execution) 4. 共识机制审计 4.1 PoW共识验证 4.2 PBFT共识模拟 5. 数据完整性审计 5.1 Merkle树验证 6. 完整审计系统实现 7.…