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
英文地址,請注明出處:http://en.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.…