【BASH】回顧與知識點梳理(十五)

【BASH】回顧與知識點梳理 十五

    • 十五. 指令與文件的搜尋
      • 15.1 腳本文件名的搜尋
        • which (尋找『執行檔』)
      • 15.2 文件檔名的搜尋
        • whereis (由一些特定的目錄中尋找文件文件名)
        • locate / updatedb
        • find
          • 與時間有關的選項
          • 與使用者或組名有關的參數
          • 與文件權限及名稱有關的參數
          • 額外可進行的動作
      • 15.3 權限與指令間的關系
        • 讓用戶能進入某目錄成為『可工作目錄』的基本權限為何?
        • 用戶在某個目錄內讀取一個文件的基本權限為何?
        • 讓使用者可以修改一個文件的基本權限為何?
        • 讓一個使用者可以建立一個文件的基本權限為何?
        • 讓用戶進入某目錄并執行該目錄下的某個指令之基本權限為何?

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

十五. 指令與文件的搜尋

文件的搜尋可就厲害了!因為我們常常需要知道那個文件放在哪里,才能夠對該文件進行一些修改或維護等動作。 有些時候某些軟件配置文件的文件名是不變的,但是各 distribution 放置的目錄則不同。 此時就得要利用一些搜尋指令將該配置文件的完整檔名捉出來,這樣才能修改嘛!您說是吧!

15.1 腳本文件名的搜尋

我們知道在終端機模式當中,連續輸入兩次[tab]按鍵就能夠知道用戶有多少指令可以下達。 那你知不知道這些指令的完整文件名放在哪里?舉例來說,ls 這個常用的指令放在哪里呢? 就透過 which 或 type 來找尋吧!

which (尋找『執行檔』)

[root@study ~]# which [-a] command
選項或參數:
-a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
# 范例一:搜尋 ifconfig 這個指令的完整文件名
[root@study ~]# which ifconfig
/sbin/ifconfig# 范例二:用 which 去找出 which 的檔名為何?
[root@study ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'/bin/alias/usr/bin/which
# 竟然會有兩個 which ,其中一個是 alias 這玩意兒呢!那是啥?
# 那就是所謂的『命令別名』,意思是輸入 which 會等于后面接的那串指令啦!
# 更多的數據我們會在 bash 章節中再來談的!# 范例三:請找出 history 這個指令的完整文件名
[root@study ~]# which history
/usr/bin/which: no history in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@study ~]# history --help
-bash: history: --: invalid option
history: usage: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg
# 瞎密?怎么可能沒有 history ,我明明就能夠用 root 執行 history 的啊!

這個指令是根據『PATH』這個環境變量所規范的路徑,去搜尋『執行檔』的檔名~ 所以,重點是找出『執行檔』而已!且 which 后面接的是『完整檔名』喔!若加上 -a 選項,則可以列出所有的可以找到的同名執行文件,而非僅顯示第一個而已!

最后一個范例最有趣,怎么 history 這個常用的指令竟然找不到啊!為什么呢?這是因為 history 是『bash 內建的指令』啦! 但是 which 預設是找 PATH 內所規范的目錄,所以當然一定找不到的啊(有 bash 就有 history!)!那怎辦?沒關系!我們可以透過 type 這個指令喔!

15.2 文件檔名的搜尋

再來談一談怎么搜尋文件吧!在 Linux 底下也有相當優異的搜尋指令呦!通常 find 不很常用的!因為速度慢之外, 也很操硬盤!一般我們都是先使用 whereis 或者是 locate 來檢查,如果真的找不到了,才以 find 來搜尋呦! 為什么呢?因為 whereis 只找系統中某些特定目錄底下的文件而已,locate 則是利用數據庫來搜尋文件名,當然兩者就相當的快速, 并且沒有實際的搜尋硬盤內的文件系統狀態,比較省時間啦!

whereis (由一些特定的目錄中尋找文件文件名)

[root@study ~]# whereis [-bmsu] 文件或目錄名
選項與參數:
-l :可以列出 whereis 會去查詢的幾個主要目錄而已
-b :只找 binary 格式的文件
-m :只找在說明文件 manual 路徑下的文件
-s :只找 source 來源文件
-u :搜尋不在上述三個項目當中的其他特殊文件
# 范例一:請找出 ifconfig 這個檔名
[root@study ~]# whereis ifconfig 
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz# 范例二:只找出跟 passwd 有關的『說明文件』檔名(man page)
[root@study ~]# whereis passwd # 全部的檔名通通列出來!
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz 
/usr/share/man/man5/passwd.5.gz
[root@study ~]# whereis -m passwd # 只有在 man 里面的檔名才抓出來!
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

等一下我們會提到 find 這個搜尋指令, find 是很強大的搜尋指令,但時間花用的很大!(因為 find 是直接搜尋硬盤,為如果你的硬盤比較老舊的話,嘿嘿!有的等!) 這個時候 whereis 就相當的好用了!另外, whereis 可以加入選項來找尋相關的數據,例如,如果你是要找可執行文件 (binary) 那么加上-b就可以啦! 如果不加任何選項的話,那么就將所有的數據列出來啰!

那么 whereis 到底是使用什么咚咚呢?為何搜尋的速度會比 find 快這么多? 其實那也沒有什么,只是因為 whereis 只找幾個特定的目錄而已~并沒有全系統去查詢之故。所以說,whereis 主要是針對 /bin /sbin 底下的執行檔, 以及 /usr/share/man 底下的 man page 文件,跟幾個比較特定的目錄來處理而已。所以速度當然快的多!不過,就有某些文件是你找不到的啦! 想要知道 whereis 到底查了多少目錄?可以使用 whereis -l 來確認一下即可!

locate / updatedb

# 安裝
yum install -y mlocate
updatedb 
[root@study ~]# locate [-ir] keyword
選項與參數:
-i :忽略大小寫的差異;
-c :不輸出檔名,僅計算找到的文件數量
-l :僅輸出幾行的意思,例如輸出五行則是 -l 5
-S :輸出 locate 所使用的數據庫文件的相關信息,包括該數據庫紀錄的文件/目錄數量等
-r :后面可接正規表示法的顯示方式
# 范例一:找出系統中所有與 passwd 相關的檔名,且只列出 5 個
[root@study ~]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd# 范例二:列出 locate 查詢所使用的數據庫文件之文件名與各數據數量
[root@study ~]# locate -S
Database /var/lib/mlocate/mlocate.db:8,086 directories # 總紀錄目錄數109,605 files # 總紀錄文件數5,190,295 bytes in file names2,349,150 bytes used to store database

這個 locate 的使用更簡單,直接在后面輸入『文件的部分名稱』后,就能夠得到結果。 舉上面的例子來說,我輸入 locate passwd ,那么在完整文件名 (包含路徑名稱) 當中,只要有 passwd 在其中,就會被顯示出來的!這也是個很方便好用的指令,如果你忘記某個文件的完整檔名時~~

但是,這個東西還是有使用上的限制呦!為什么呢?你會發現使用 locate 來尋找數據的時候特別的快, 這是因為 locate 尋找的數據是由『已建立的數據庫 /var/lib/mlocate/』 里面的數據所搜尋到的,所以不用直接在去硬盤當中存取數據,呵呵!當然是很快速啰!

那么有什么限制呢?就是因為他是經由數據庫來搜尋的,而數據庫的建立默認是在每天執行一次 (每個 distribution 都不同,CentOS 7.x 是每天更新數據庫一次!),所以當你新建立起來的文件, 卻還在數據庫更新之前搜尋該文件,那么 locate 會告訴你『找不到!』呵呵!因為必須要更新數據庫呀!

那能否手動更新數據庫哪?當然可以啊!更新 locate 數據庫的方法非常簡單,直接輸入『 updatedb 』就可以了! updatedb 指令會去讀取 /etc/updatedb.conf 這個配置文件的設定,然后再去硬盤里面進行搜尋文件名的動作, 最后就更新整個數據庫文件啰!因為 updatedb 會去搜尋硬盤,所以當你執行updatedb 時,可能會等待數分鐘的時間喔!

  • updatedb:根據 /etc/updatedb.conf 的設定去搜尋系統硬盤內的文件名,并更新 /var/lib/mlocate 內的數據庫文件;
  • locate:依據 /var/lib/mlocate 內的數據庫記載,找出用戶輸入的關鍵詞文件名。

find

與時間有關的選項
[root@study ~]# find [PATH] [option] [action]
選項與參數:
1. 與時間有關的選項:共有 -atime, -ctime-mtime ,以 -mtime 說明-mtime n :n 為數字,意義為在 n 天之前的『一天之內』被更動過內容的文件;-mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的文件檔名;-mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的文件檔名。-newer file :file 為一個存在的文件,列出比 file 還要新的文件檔名
# 范例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的文件列出
[root@study ~]# find / -mtime 0
# 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,
# 有變動過內容的文件都會被列出來!那如果是三天前的 24 小時內?
# find / -mtime 3 有變動過的文件都被列出的意思!# 范例二:尋找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@study ~]# find /etc -newer /etc/passwd
# -newer 用在分辨兩個文件之間的新舊關系是很有用的!

時間參數真是挺有意思的!我們現在知道 atime, ctime 與 mtime 的意義,如果你想要找出一天內被更動過的文件名, 可以使用上述范例一的作法。但如果我想要找出『4 天內被更動過的文件檔名』呢?那可以使用『 find /var -mtime -4 』。那如果是『4 天前的那一天』就用『 find /var -mtime 4 』。有沒有加上『+, -』差別很大喔!我們可以用簡單的圖示來說明一下:
在這里插入圖片描述
圖中最右邊為目前的時間,越往左邊則代表越早之前的時間軸啦。

  • +4 代表大于等于 5 天前的檔名:ex> find /var -mtime +4
  • -4 代表小于等于 4 天內的文件檔名:ex> find /var -mtime -4
  • 4 則是代表 4-5 那一天的文件檔名:ex> find /var -mtime 4
與使用者或組名有關的參數
選項與參數:
2. 與使用者或組名有關的參數:-uid n :n 為數字,這個數字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄在/etc/passwd 里面與賬號名稱對應的數字。-gid n :n 為數字,這個數字是組名的 ID,亦即 GID,這個 GID 記錄在/etc/group,相關的介紹我們會第四篇說明~-user name :name 為使用者賬號名稱喔!例如 dmtsai-group name:name 為組名喔,例如 users-nouser :尋找文件的擁有者不存在 /etc/passwd 的人!-nogroup :尋找文件的擁有群組不存在于 /etc/group 的文件! 當你自行安裝軟件時,很可能該軟件的屬性當中并沒有文件擁有者,這是可能的!在這個時候,就可以使用 -nouser-nogroup 搜尋。
# 范例三:搜尋 /home 底下屬于 dmtsai 的文件
[root@study ~]# find /home -user dmtsai
# 這個東西也很有用的~當我們要找出任何一個用戶在系統當中的所有文件時,
# 就可以利用這個指令將屬于某個使用者的所有文件都找出來喔!# 范例四:搜尋系統中不屬于任何人的文件
[root@study ~]# find / -nouser
# 透過這個指令,可以輕易的就找出那些不太正常的文件。如果有找到不屬于系統任何人的文件時,
# 不要太緊張,那有時候是正常的~尤其是你曾經以原始碼自行編譯軟件時。

如果你想要找出某個用戶在系統底下建立了啥咚咚,使用上述的選項與參數,就能夠找出來啦! 至于那個 -nouser 或 -nogroup 的選項功能中,除了你自行由網絡上面下載文件時會發生之外, 如果你將系統里面某個賬號刪除了,但是該賬號已經在系統內建立很多文件時,就可能會發生無主孤魂的文件存在! 此時你就得使用這個 -nouser 來找出該類型的文件啰!

與文件權限及名稱有關的參數
選項與參數:
3. 與文件權限及名稱有關的參數:-name filename:搜尋文件名為 filename 的文件;-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。這個 SIZE 的規格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB還要大的文件,就是『 -size +50k 』-type TYPE :搜尋文件的類型為 TYPE 的,類型主要有:一般正規文件 (f), 裝置文件 (b, c),目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。-perm mode :搜尋文件權限『剛好等于』 mode 的文件,這個 mode 為類似 chmod的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755-perm -mode :搜尋文件權限『必須要全部囊括 mode 的權限』的文件,舉例來說,我們要搜尋 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,當一個文件的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。-perm /mode :搜尋文件權限『包含任一 mode 的權限』的文件,舉例來說,我們搜尋-rwxr-xr-x ,亦即 -perm /755 時,但一個文件屬性為 -rw-------也會被列出來,因為他有 -rw.... 的屬性存在!

關于文件的特殊權限,參考SECTION 7 理解文件權限

# 范例五:找出檔名為 passwd 這個文件
[root@study ~]# find / -name passwd
# 范例五-1:找出文件名包含了 passwd 這個關鍵詞的文件
[root@study ~]# find / -name "*passwd*"
# 利用這個 -name 可以搜尋檔名啊!默認是完整文件名,如果想要找關鍵詞,
# 可以使用類似 * 的任意字符來處理# 范例六:找出 /run 目錄下,文件類型為 Socket 的檔名有哪些?
[root@study ~]# find /run -type s
# 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的文件,
# 例如 socket 與 FIFO 文件,可以用 find /run -type p 或 -type s 來找!# 范例七:搜尋文件當中含有 SGID 或 SUID 或 SBIT 的屬性
[root@study ~]# find / -perm /7000 
# 所謂的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,所以當然要使用 /7000,
# 使用 -7000 表示要同時含有 ---s--s--t 的所有三個權限。而只需要任意一個,就是 /7000 ~瞭乎?

上述范例中比較有趣的就屬 -perm 這個選項啦!他的重點在找出特殊權限的文件啰! 我們知道SUID 與 SGID 都可以設定在二進制程序上,假設我想要找出來 /usr/bin, /usr/sbin 這兩個目錄下,只要具有 SUID 或 SGID 就列出來該文件,你可以這樣做:

find /usr/bin /usr/sbin -perm /6000

因為 SUID 是 4 分,SGID 2 分,總共為 6 分,因此可用 /6000 來處理這個權限! 至于 find 后面可以接多個目錄來進行搜尋!另外,find 本來就會搜尋次目錄,這個特色也要特別注意喔! 最后,我們再來看一下 find 還有什么特殊功能吧!

額外可進行的動作
選項與參數:
4. 額外可進行的動作:-exec command :command 為其他指令,-exec 后面可再接額外的指令來處理搜尋到的結果。-print :將結果打印到屏幕上,這個動作是預設動作!
# 范例八:將上個范例找到的文件使用 ls -l 列出來~
[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 注意到,那個 -exec 后面的 ls -l 就是額外的指令,指令不支持命令別名,
# 所以僅能使用 ls -l 不可以使用 ll 喔!注意注意!# 范例九:找出系統中,大于 1MB 的文件
[root@study ~]# find / -size +1M

find 的特殊功能就是能夠進行額外的動作(action)。我們將范例八的例子以圖解來說明如下:
在這里插入圖片描述
該范例中特殊的地方有 {} 以及 \; 還有 -exec 這個關鍵詞,這些東西的意義為:

  • {} 代表的是『由 find 找到的內容』,如上圖所示,find 的結果會被放置到 {} 位置中;
  • -exec 一直到 ; 是關鍵詞,代表 find 額外動作的開始 (-exec) 到結束 (\;) ,在這中間的就是 find 指令內的額外動作。 在本例中就是『 ls -l {} 』啰!
  • 因為『 ; 』在 bash 環境下是有特殊意義的,因此利用反斜杠來跳脫

如果你要找的文件是具有特殊屬性的,例如 SUID 、文件擁有者、文件大小等等, 那么利用 locate 是沒有辦法達成你的搜尋的!此時 find 就顯的很重要啦! 另外,find 還可以利用通配符來找尋檔名呢!舉例來說,你想要找出 /etc 底下檔名包含 httpd 的文件, 那么你就可以這樣做:

[root@node-135 yurq]#  find /etc -name '*yscon*'
/etc/sysconfig

不但可以指定搜尋的目錄(連同次目錄),并且可以利用額外的選項與參數來找到最正確的檔名!真是好好用! 不過由于 find 在尋找數據的時后相當的操硬盤!所以沒事情不要使用 find 啦!有更棒的指令可以取代呦!那就是上面提到的 whereis 與 locate 啰!

find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
find /etc -size +1500k -o -size 0

注意到 -a ,那個 -a 是 and 的意思,為符合兩者才算成功,
相對于 -a ,那個 -o 就是或 (or) 的意思啰!
注意到 ! ,那個 ! 代表的是反向選擇,亦即『不是后面的項目』之意!

15.3 權限與指令間的關系

我們知道權限對于使用者賬號來說是非常重要的,因為他可以限制使用者能不能讀取/建立/刪除/修改文件或目錄!在這一章我們介紹了很多文件系統的管理指令,在這個小節當中, 我們就將這兩者結合起來,說明一下什么指令在什么樣的權限下才能夠運作吧!

讓用戶能進入某目錄成為『可工作目錄』的基本權限為何?

  • 可使用的指令:例如 cd 等變換工作目錄的指令;
  • 目錄所需權限:用戶對這個目錄至少需要具有 x 的權限 ,即751可進入目錄
  • 額外需求:如果用戶想要在這個目錄內利用 ls 查閱文件名,則用戶對此目錄還需要 r 的權限,即755可進入目錄并ls

用戶在某個目錄內讀取一個文件的基本權限為何?

  • 可使用的指令:例如本章談到的 cat, more, less 等等
  • 目錄所需權限:用戶對這個目錄至少需要具有 x 權限;即751可以進入目錄
  • 文件所需權限:使用者對文件至少需要具有 r 的權限才行!即754可讀取

讓使用者可以修改一個文件的基本權限為何?

  • 可使用的指令:例如 nano 或未來要介紹的 vi 編輯器等;
  • 目錄所需權限:用戶在該文件所在的目錄至少要有 x 權限;
  • 文件所需權限:使用者對該文件至少要有 r, w 權限

如果只賦予其他用戶w(752),那么vim和nano無法操作,但是echo能把內容清空,好奇怪,所以基本權限為w就可以修改,不過只能清空

	[root@node-135 test]# lltotal 0-rwxr---w- 1 root root 0 Aug  8 16:32 123[root@node-135 test]# vim 123[root@node-135 test]# cat 123123123123[yurq@node-135 test]$ echo 123>123[root@node-135 test]# cat 123

讓一個使用者可以建立一個文件的基本權限為何?

  • 目錄所需權限:用戶在該目錄要具有 w,x 的權限,重點在 w 啦!

讓用戶進入某目錄并執行該目錄下的某個指令之基本權限為何?

  • 目錄所需權限:用戶在該目錄至少要有 x 的權限;
  • 文件所需權限:使用者在該文件至少需要有 x 的權限

讓一個使用者 dmtsai 能夠進行『cp /dir1/file1 /dir2』的指令時,請說明 dir1, file1, dir2 的最小所需權限為何?
答:
執行 cp 時, dmtsai 要『能夠讀取來源文件,并且寫入目標文件!』所以應參考上述第二點與第四點的說明! 因此各文件/目錄的最小權限應該是:

  • dir1 :至少需要有 x 權限;
  • file1:至少需要有 r 權限;
  • dir2 :至少需要有 w, x 權限。

有一個文件全名為 /home/student/www/index.html ,各相關文件/目錄的權限如下:
drwxr-xr-x 23 root root 4096 Sep 22 12:09 /
drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home
drwx------ 6 student student 4096 Sep 29 02:23 /home/student
drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www
-rwxr–r-- 6 student student 369 Sep 29 02:27 /home/student/www/index.html
請問 vbird 這個賬號(不屬于 student 群組)能否讀取 index.html 這個文件呢?
答:
雖然 www 與 index.html 是可以讓 vbird 讀取的權限,但是因為目錄結構是由根目錄一層一層讀取的,因此 vbird 可進入 /home 但是卻不可進入 /home/student/ ,既然連進入 /home/student 都不許了, 當然就讀不到 index.html 了!所以答案是『vbird 不會讀取到 index.html 的內容』喔!

那要如何修改權限呢?其實只要將 /home/student 的權限修改為最小 711 ,或者直接給予 755 就可以啰! 這可是很重要的概念喔!

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35051.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM垃圾回收

如何確定垃圾 對堆垃圾回收前的第一步就是要判斷哪些對象已經死亡(即不能再被任何途徑使用的對象) 引用計數法 這個方法就是為對象添加計數器來標識引用個數,計數器為 0 的對象就是不可能再被使用的。但是這種方法存在循環引用問題&#x…

布谷鳥配音:一站式配音軟件

這是一款智能語音合成軟件,可以快速將文字轉換成語音,擁有多種真人模擬發音,可以選擇不同男聲、女聲、童聲,以及四川話、粵語等中文方言和外語配音,并且可對語速、語調、節奏、數字讀法、多音字、背景音等進行全方位設…

less、sass的使用及其區別

CSS預處理器 CSS 預處理器是一種擴展了原生 CSS 的工具,它們添加了一些編程語言的特性,以便更有效地編寫、組織和維護樣式代碼。預處理器允許開發者使用變量、嵌套、函數、混合等功能,從而使 CSS 更具可讀性、可維護性和重用性,特…

學習筆記整理-JS-01-語法與變量

文章目錄 一、語法與變量1. 初識JavaScript2. JavaScript的歷史3. JavaScript與ECMAScript的關系4. JavaScript的體系5. JavaScript的語言風格和特性 二、語法1. JavaScript的書寫位置2. 認識輸出語句3. REPL環境,交互式解析器4. 變量是什么5. 重點內容 一、語法與變…

使用python快速搭建HTTP服務實現局域網網頁瀏覽或文件傳輸

1.使用命令行(CMD)來快速搭建一個HTTP服務器 你可以借助Python的http.server模塊。以下是在命令行中使用Python快速搭建HTTP服務器的步驟: 打開命令提示符(CMD)。 進入你想要共享文件的目錄。使用 cd 命令來切換到目…

二、編寫第一個 Spring MVC 程序

文章目錄 一、編寫第一個 Spring MVC 程序 一、編寫第一個 Spring MVC 程序 代碼示例 創建 maven 項目&#xff0c;以此項目為父項目&#xff0c;在父項目的 pom.xml 中導入相關依賴 <dependencies><dependency><groupId>junit</groupId><artifactI…

分支和循環語句(2)(C語言)

目錄 do...while()循環 do語句的語法 do語句的特點 do while循環中的break和continue 練習 goto語句 do...while()循環 do語句的語法 do 循環語句; while(表達式); do語句的特點 循環至少執行一次&#xff0c;使用的場景有限&#xff0c;所以不是經常使用。 #inc…

【uniapp】uniapp自動導入自定義組件和設置分包:

文章目錄 一、自動導入自定義組件&#xff1a;二、設置分包和預加載&#xff1a; 一、自動導入自定義組件&#xff1a; 【Volar 官網】https://github.com/vuejs/language-tools 二、設置分包和預加載&#xff1a; 【官方文檔】https://uniapp.dcloud.net.cn/collocation…

【服務平臺】Rancher運行和管理Docker和Kubernetes,提供管理生產中的容器所需的整個軟件堆棧

Rancher是一個開源軟件平臺&#xff0c;使組織能夠在生產中運行和管理Docker和Kubernetes。使用Rancher&#xff0c;組織不再需要使用一套獨特的開源技術從頭開始構建容器服務平臺。Rancher提供了管理生產中的容器所需的整個軟件堆棧。  完整軟件堆棧 Rancher是供采用容器的團…

idea添加作者信息

idea添加作者信息 自定義作者信息idea添加作者信息自定義作者信息 自定義作者信息 idea添加作者信息 在idea中&#xff0c;經常會有這些波浪紋提示&#xff0c;放在上面之后會提示添加作者信息,點擊添加作者信息后&#xff0c;但是不是自己想要的 這里提取的話好像沒什么辦法…

JavaWeb課程學習--Day01

HTML 建立css文件&#xff1a; css使用方式&#xff1a; <span>...</span>無語意包裹標簽 css中的三種選擇器&#xff1a; 注意&#xff1a;播放視音頻時要留出播放空間 盒子模型&#xff1a; 表格標簽&#xff1a; 以上表格&#xff1a; 表單標簽&#xff1a; 表…

分布式 - 服務器Nginx:一小時入門系列之動靜分離

文章目錄 1. 動靜分離的好處2. 分離靜態文件3. 修改 Nginx 配置文件4. location 命令修飾符優先級 1. 動靜分離的好處 Apache Tocmat 嚴格來說是一款java EE服務器&#xff0c;主要是用來處理 servlet請求。處理css、js、圖片這些靜態文件的IO性能不夠好&#xff0c;因此&…

ROS學習--HelloWorld的實現(C++)

1.創建工作空間并初始化 mkdir -p 自定義空間名稱/src cd 自定義空間名稱 catkin_make上述命令&#xff0c;首先會創建一個工作空間以及一個 src 子目錄&#xff0c;然后再進入工作空間調用 catkin_make命令編譯。 2.進入 src 創建 ros 包并添加依賴 cd src catkin_create_pk…

蘇紛享首屆生態人脈會成功舉辦,紛享銷客助力伙伴共同發展

近日&#xff0c;紛享銷客&蘇紛享成功舉辦了首屆生態人脈會&#xff0c;該活動于8月3日下午在蘇州東方之門舉行。本次會議匯聚了來自近20家企業的銷售精英&#xff0c;包括金蝶、泛微、夏谷、螞蟻分工、創享、黑湖智造等眾多知名企業。會議秉持著“建立生態、共同發展、深耕…

時間復雜度與空間復雜度的詳解

目錄 1.時間復雜度 2.時間復雜度計算例題 3.空間復雜度 1.時間復雜度 算法中的基本操作的執行次數&#xff0c;為算法的時間復雜度。 如何表達 時間復雜度&#xff1f; 大O的漸進表示法 實際中我們計算時間復雜度時&#xff0c;我們其實并不一定要計算精確的執行次數&#xf…

ArcGIS Pro暨基礎入門、制圖、空間分析、影像分析、三維建模、空間統計分析與建模、python融合、案例應用

GIS是利用電子計算機及其外部設備&#xff0c;采集、存儲、分析和描述整個或部分地球表面與空間信息系統。簡單地講&#xff0c;它是在一定的地域內&#xff0c;將地理空間信息和 一些與該地域地理信息相關的屬性信息結合起來&#xff0c;達到對地理和屬性信息的綜合管理。GIS的…

【數據結構】樹和二叉樹

一、樹的概念及結構 1、樹的概念 樹 是一種非線性的數據結構&#xff0c;它是由n&#xff08;n>0&#xff09;個有限結點組成一個具有層次關系的集合。把它叫做樹是因 為它看起來像一棵倒掛的樹&#xff0c;也就是說它是根朝上&#xff0c;而葉朝下的。 有一個特殊的結點&a…

mysql8.0.3集群搭建

下載mysql安裝包&#xff1a; https://dev.mysql.com/downloads/mysql/5.7.html#downloads 準備環境 1、準備三臺服務器并設置hosts 192.168.236.143 mysql1 192.168.236.144 mysql2 192.168.236.145 mysql32、設置免密登陸 #生成秘鑰 ssh-keygen -t rsa #一直按Enter即可…

php從靜態資源到動態內容

1、從HTML到PHP demo.php:后綴由html直接改為php,實際上當前頁面已經變成了動態的php應用程序腳本 demo.php: 允許通過<?php ... ?>標簽,添加php代碼到當前腳本中 php標簽內部代碼由php.exe解釋, php標簽之外的代碼原樣輸出,仍由web服務器解析 <!DOCTYPE html>…

MySQL數據庫基礎語法

一&#xff0c;數據庫操作 數據庫中不區分大小寫&#xff01;&#xff01;&#xff01; 1.1 顯示數據庫 show databases ; 如圖&#xff1a; 1.2 創建數據庫 create database [ if not exists ]數據庫名 ; 如圖&#xff1a; 1.3 使用數據庫 use 數據庫名 &#xff1b; 如圖&a…