玩轉 Linux 之:磁盤分區、掛載知多少?

轉載于:http://my.oschina.net/leejun2005/blog/290073

?

在做日志機擴容的時候,發現運維同學將一塊硬盤的掛載點沒有同以前的日志機保持一致,考慮到這會給日后的維護帶來麻煩,于是嘗試著手修改,在修改的同時,review 了下之前日志機的掛載配置,發現居然存在隨時掉坑的可能。。。至于什么坑,我會在文末說明。

so,感覺這事兒雖然簡單,也許一條命令就搞定的事情,但是,很多童鞋可能不明就里,純復制粘貼網上的命令,這很容易給人挖坑埋雷,今天就來聊聊 linux 下磁盤分區、掛載的問題,篇幅所限,不會聊的太底層,純當科普吧~

1、Linux 分區簡介

1.1 主分區 vs 擴展分區

硬盤分區表中最多能存儲四個分區,但我們實際使用時一般只分為兩個分區,一個是主分區(Primary Partion)一個是擴展分區(extended partition),主分區可以馬上被使用但不能再分區,擴展分區必須再進行分區后才能使用,也就是說它必須還要進行二次分區。那么由擴展分區再分下去的是什么呢?它就是邏輯分區(Logical Partion),邏輯分區沒有數量上限制。

1.2 驅動器標示的含義

對習慣于使用Dos或Windows的同學來說,有幾個分區就有幾個驅動器,并且每個分區都會獲得一個字母標識符,然后就可以選用這個字母來指定在這個分區上的文件和目錄,它們的文件結構都是獨立的,非常好理解。然而對Red Hat Linux新手來說,可就有點惱人了。因為對Linux用戶來說無論有幾個分區,都得分給目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構。Red Hat Linux中每個分區都是用來組成整個文件系統的一部分,因為它采用了一種叫“掛載點”的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯系起來。這時要載入的一個分區就在linux的存儲空間的某個目錄下獲得。
下面我們先來看看Red Hat Linux的驅動器是如何標識的。 對于IDE硬盤,驅動器標識符為“hdx1”,其中“hd”表明分區所在設備的類型,這里是指IDE硬盤了。“x”為盤號(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),“1”代表分區,前四個分區用數字1到4表示,它們是主分區或擴展分區,從5開始就是邏輯分區。例,hda3表示為第一個IDE硬盤上的第三個主分區或擴展分區,hdb2表示為第二個IDE硬盤上的第二個主分區或擴展分區。對于SCSI硬盤則標識為“sdx1”,SCSI硬盤是用“sd”來表示分區所在設備的類型的,其余則和IDE硬盤的表示方法一樣,不再贅述。
我們從上面可以看到,Red Hat Linux的分區是不同于其它操作系統分區的,它的分區格式常用的有Ext3和Swap兩種,Ext3用于存放系統文件,Swap則作為Red Hat Linux的交換分區(相當于windows中的虛擬內存文件)。那么現在我們就可以知道Red Hat Linux至少需要兩個專門的分區(Linux Native(本地)和Linux Swap(交換))。由于不能將Red Hat Linux安裝在Dos/Windows分區。一般來說我們將Red Hat Linux安裝一個或多個類型為“Linux Native”的硬盤分區,但是在Red Hat Linux的每一個分區都必須要指定一個“Mount Point”(掛載點),告訴Red Hat Linux在啟動時,這個目錄要給哪個分區使用。對“Swap”分區來說, 一般也定義一個,且它不必要定義載入點。
下面我們先對“Linux Native”和“Linux Swap”有個初步的了解。

  • SWAP分區是LINUX暫時存儲數據的交換分區,它主要是把主內存上暫時不用得數據存起來,在需要的時候再調進內存內,且作為SWAP使用的分區不用指定“Mout Point”(載入點),既然它作為交換分區,我們理所當然應給它指定大小,它至少要等于系統上實際內存的量,一般來說它的大小是內存的一至兩倍。另外你也可以創建和使用一個以上的交換分區,最多16個。

  • Linux Native是存放系統文件的地方,一般用EXT3的分區類型,對Red Hat Linux來說,有了較大的選擇余地,可以把系統文件分幾個區來裝(必須要說明掛載點),也可以就裝在同一個分區中(掛載點是“/”)。

1.3?為什么要自定義多個分區?

分多個區有以下幾個目的:

  • 在不損失數據的情況下重裝系統,比如獨立設置/home掛載點,重裝系統的時候直接標記回/home,數據不會有任何損失。

  • 針對不同掛載點的特性分配合適的文件系統以合理發揮性能,比如對/var使用reiserfs,對/home使用xfs,對/使用ext4。

  • 針對不同的掛載點開啟不同的掛載選項,如是否需要即時同步,是否開啟日志,是否啟用壓縮。

  • 大硬盤搜索范圍大,效率低

  • 磁盤配額只能對分區做設定

  • /home、/var、/usr/local 經常是單獨分區,因為經常會操作,容易產生碎片

2、掛載點目錄簡介

2.1 常見的掛載目錄結構

每塊硬盤都分為若干個分區,每個分區都有自己的文件系統。Windows為這些文件系統各自指定了一個字母。不過 GNU/Linux 使用唯一的樹形結構來管理文件,而每個文件系統都掛載于樹形結構的某個位置。
正如 Windows 需要有 C: 驅動器一樣,GNU/Linux 必須能夠將根文件系統掛載于文件樹的根(/)上。當根掛載完成之后,您就可以將其它文件系統掛載于樹形結構各種掛載點上。根結構下的任何目錄都可以作為掛載點,而您也可以將同一文件系統同時掛載于不同的掛載點上。
掛載點實際上就是linux中的磁盤文件系統的入口目錄
Linux文件系統結構.jpg

2.2 常見的掛載目錄說明

目錄 內容

/   根目錄,存放系統命令和用戶數據等(如果下面掛載點沒有單獨的分區,它們都將在根目錄的分區中) ?
/boot boot loader 的靜態鏈接文件,存放與Linux啟動相關的程序
/home 用戶目錄,存放普通用戶的數據
/tmp 臨時文件
/usr 是Red Hat Linux系統存放軟件的地方,如有可能應將最大空間分給它
/usr/local 自已安裝程序安裝在此
/var 不斷變化的數據,服務器的一些服務、日志放在下面。
/opt (Option可選的)附加的應用程序軟件包?

/bin 基本命令執行文件?
/dev 設備文件?
/etc 主機特定的系統配置?
/lib 基本共享庫以及內核模塊?
/media 用于移動介質的掛載點?
/mnt 用于臨時掛載文件系統或者別的硬件設備(如光驅、軟驅)?
/proc 系統信息的虛擬目錄(2.4 和 2.6 內核),這些信息是在內存中,由系統自己產生的。?
/root root 用戶的目錄?
/sbin 基本系統命令執行文件?
/sys 系統信息的虛擬目錄(2.6 內核)?
/srv 系統提供的用于 service 的數據
/usr/X1186 X-Windows目錄,存放一些X-Windows的配置文件
/usr/include 系統頭文件,存儲一些C語言的頭文件
/usr/src Linux內核源代碼,Linux系統所安裝的內核源代碼都保存在此
/usr/bin 對/bin目錄的一些補充
/usr/sbin 對/sbin目錄的一些補充
/lost+found 這個目錄在大多數情況下都是空的。但是如果你正在工作突然停電,或是沒有用正常方式關機,在你重新啟動機器的時候,有些文件就會找不到應該存放的地方,對于這些文件,系統將他們放在這個目錄下。
/boot: 必須總是物理地包含 /etc、/bin、/sbin、/lib 和 /dev,否則您將不能啟動系統。
/home:每個用戶將放置他的私有數據到這個目錄的子目錄下。
/tmp: 程序創建的臨時數據大都存到這個目錄。
/usr:包含所有的用戶程序(/usr/bin),庫文件(/usr/lib),文檔(/usr/share/doc),等等。
/var:所有的可變數據,如新聞組文章、電子郵件、網站、數據庫、軟件包系統的緩存等等,將被放入這個目錄。這個目錄的大小取決于您計算機的用途,但是對大多數人來說,將主要用于軟件包系統的管理工具。如果做服務器的話空間應盡量大。我的服務器的實際分法及實際使用的大小,還沒有實際投入使用。所以/var目錄沒有用那么多。一般WEB存放網頁的目錄是/var/www,postfix郵件的存放郵件的目錄是:/var/mail,var/log,是系統日志記錄分區, /var/spool:存放一些郵件、新聞、打印隊列等。
/opt:存放可選的安裝的軟件。

上面介紹了幾個掛載點,一般來說我們最少需要兩個分區(當然只要一個 / 分區也可以),需要一個SWAP分區,和一個“/”分區,但把一些常用、重要的掛載點分到其它分區,這樣便于管理。一般一個/分區,一個/usr分區,一個/home 分區,一個/var/log分區。當然這沒有什么規定,完全是依照需要來定的。我們可以使用Red Hat Linux提供的硬盤管理工具Disk Druid來完成分區和掛載點設置。

對照上圖和目錄簡介,可以把Linux系統的掛載點想象成一棵大樹
/ 為大樹的樹根
/ 衍生的其他掛載點為這顆大樹的樹枝
掛載點下的文件為樹葉

2.3 為什么 linux 的分區需要有掛載這個動作呢?

如果你看過我之前寫的 Linux 系列文章,那么應該記得我曾經標紅過一句話:linux 下一切皆文件!換言之就是linux操作系統將系統中的一切都作為文件來管理。在windows中我們常見的硬件設備(打印機、網卡、聲卡...)、磁盤分區等,在linux中統統都被視作文件,對設備、分區的訪問就是讀寫對應的文件。

3、實戰分區掛載

3.1 臨時掛載

舉個栗子,原來分區情況如下:

?
1
2
<code class="hljs erlang">[root@sg-sl-data]# df -h
Filesystem ? ? ? ? ? ?Size ?Used Avail Use<span class="hljs-comment">% Mounted on</span>/dev/sda2?? ? ? ? ? ? ?<span class="hljs-number">20</span>G ?<span class="hljs-number">5.6</span>G ? <span class="hljs-number">13</span>G ?<span class="hljs-number">31</span><span class="hljs-comment">% /</span>/dev/sda6?? ? ? ? ? ??<span class="hljs-number">996</span>M ? <span class="hljs-number">35</span>M ?<span class="hljs-number">910</span>M ? <span class="hljs-number">4</span><span class="hljs-comment">%?/data</span>/dev/sda5?? ? ? ? ? ??<span class="hljs-number">426</span>G ?<span class="hljs-number">199</span>M ?<span class="hljs-number">404</span>G ? <span class="hljs-number">1</span><span class="hljs-comment">%?/disk1</span>/dev/sda1?? ? ? ? ? ??<span class="hljs-number">996</span>M ? <span class="hljs-number">46</span>M ?<span class="hljs-number">899</span>M ? <span class="hljs-number">5</span><span class="hljs-comment">%?/boot</span>tmpfs ? ? ? ? ? ? ? ? <span class="hljs-number">7.9</span>G ? ? <span class="hljs-number">0</span> ?<span class="hljs-number">7.9</span>G ? <span class="hljs-number">0</span><span class="hljs-comment">%?/dev/shm</span></code>

3.1.1 先卸載分區:

umount /disk1
umount /data

3.1.2 再重新掛起來:

mount /dev/sda5 /data
mount /dev/sda6 /disk1
注意:如前所述,不能2個分區同時掛載到/data

3.2 永久掛載:開機自動掛載

上面步驟中的方法只是臨時工干的活兒,開機后磁盤分區會不可見或者還是掛載之前的模樣,要想永久生效,還需要修改/etc/fstab,

LABEL=/data /data ext3 defaults 1 2
LABEL=/disk1 /disk1 ext3 defaults 1 2
修改為:
/dev/sda5 /data ext3 defaults 1 2
/dev/sda6 /disk1 ext3 defaults 1 2

說明:fstab 是文件系統分配表的配置文件,該文件有著嚴格的語法格式限制,類似 crontab 一樣,保存時也會對你的輸入格式進行校驗,請慎重使用,否則會有意想不到的問題發生。其一共有 6 個字段,空格分隔,具體每個字段的含義請參考這里,不再贅述:http://diamonder.blog.51cto.com/159220/282542

3.3 以下是添加硬盤&分區&掛載(高危操作,新手慎用!)

友情提示:分區操作是高危操作,尤其是新手同學請勿在生產環境隨意嘗試,否則后果自負!

更為詳細的分區教程請參見:

linux磁盤分區fdisk命令詳解?http://linux008.blog.51cto.com/2837805/548711

?
1
2
3
4
5
6
7
8
9
10
<code class="hljs groovy">fdisk?<span class="hljs-regexp">/dev/</span>sdb
??
輸入m---n---p--<span class="hljs-number">-1</span>--回車---回車---p---w
??
mkfs.ext3 <span class="hljs-regexp">/dev/</span>sdb1
??
mkdir?/disk2
??
mount?<span class="hljs-regexp">/dev/</span>sdb1 <span class="hljs-regexp">/disk2/</span>
?在<span class="hljs-regexp">/etc/</span>fstab中添加:<span class="hljs-regexp">/dev/</span>sdb1 ? ? ? ? ? ?/disk2?? ? ? ? ? ? ? ? ?ext3 ? ?defaults ? ? ? ?<span class="hljs-number">1</span> <span class="hljs-number">2</span></code>

4、通過 fstab 設置開機掛載的坑

fstab 文件大家都很熟悉,Linux 在啟動的時候通過 fstab 中的信息掛載各個分區,一個典型的分區條目就像這樣:

/dev/sdb4 /mnt/usb vfat utf8,umask=0 0 0

/dev/sda4 為需要掛載的分區,sda4 是 Linux 檢測硬盤時按順序給分區的命名,一般來講,這個名稱并不會變化,但是如果你有多塊硬盤,硬盤在電腦中的順序變化的時候,相同的名稱可能代表著不同的硬盤分區,如果你是從 USB 設備啟動,與其他 USB 設備的插入順序也會導致分區識別的困難。

因此上面 3.2 小節中的配置直接寫 /dev/sda6 是有很大的隱患的,重啟后硬盤的順序可能發生變化,比如 你把 nginx 的用戶日志放在一個單獨的分區上,那么重啟后雖然設置了 fstab,但是由于順序變了相同的分區號可能代表不同的硬盤分區了,這樣就會導致某些分區上的數據服務不可用了。

(PS:文章開頭說過在 review 以前同學的掛載配置的時候發現了埋下的一個雷,正是上面的問題。)

這個時候 UUID 就派上用場了,UUID 全稱是 Universally Unique Identifier,也就是說,每個分區有一個唯一的 UUID 值,這樣就不會發生分區識別混亂的問題了。

在 fstab 中用 UUID 掛載分區,看起來向這樣:
UUID=1234-5678 /mnt/usb vfat utf8,umask=0 0 0
在 UUID= 后面填入分區相應的 UUID 值,就可以正確掛載分區了。
那么,我們如何知道一個分區的 UUID 呢?
有 3 種方法:

4.1 通過瀏覽 /dev/disk/by-uuid/ 下的設備文件信息

# ls -l /dev/disk/by-uuid/
------
lrwxrwxrwx 1 root root 10 10-13 09:14 0909-090B -> ../../sdb5
lrwxrwxrwx 1 root root 10 10-13 09:13 7c627a81-7a6b-4806-987b-b5a8a0a93645 -> ../../sda4
.....?

4.2 通過 vol_id 命令

# vol_id /dev/sdb5
ID_FS_USAGE=filesystem
ID_FS_TYPE=vfat
ID_FS_VERSION=FAT32
ID_FS_UUID=0909-090B
ID_FS_UUID_ENC=0909-090B
ID_FS_LABEL=SWAP
ID_FS_LABEL_ENC=SWAP
ID_FS_LABEL_SAFE=SWAP

4.3 通過 blkid 命令

# blkid /dev/sdb5
/dev/sdb5: LABEL="SWAP" UUID="0909-090B" TYPE="vfat"
通過這三種方法都可以獲得分區的 UUID,UUID 依據分區不同,長度和格式都不相同。

比如我最后把 /dev/sdb 掛載在了 /data1 目錄下(不放心的話重啟或者生成文件測試下,看掛載分區的空間被占用沒):

?
1
2
3
4
5
6
7
8
<code class="hljs tcl">文件系統 ? ? ? 類型 ? 容量 ?已用 ?可用 已用% 掛載點
/dev/sda3?? ? ?ext4 ? <span class="hljs-number">518</span>G ?<span class="hljs-number">2.7</span>G ?<span class="hljs-number">489</span>G ? ?<span class="hljs-number">1</span>% /
tmpfs ? ? ? ? ?tmpfs ? <span class="hljs-number">16</span>G ? ? <span class="hljs-number">0</span> ? <span class="hljs-number">16</span>G ? ?<span class="hljs-number">0</span>%?/dev/shm
/dev/sda1?? ? ?ext4 ?<span class="hljs-number">1008</span>M ? <span class="hljs-number">61</span>M ?<span class="hljs-number">896</span>M ? ?<span class="hljs-number">7</span>%?/boot
/dev/sdb?? ? ??ext4 ? <span class="hljs-number">1.8</span>T ?<span class="hljs-number">1.1</span>G ?<span class="hljs-number">1.7</span>T ? ?<span class="hljs-number">1</span>%?/data1
grep?-v?<span class="hljs-string">'#'</span>?/etc/fstab?|column -t
UUID=<span class="hljs-number">0</span>c685e8b-dbb3<span class="hljs-number">-4</span>a1c-a106<span class="hljs-number">-3</span>f1716ab34dd ?/ ? ? ? ? ext4 ? ?defaults,noatime ? ? ? ? ? ? ?<span class="hljs-number">1</span> ?<span class="hljs-number">1</span>UUID=<span class="hljs-number">2</span>d7f1bcf<span class="hljs-number">-06</span>d1<span class="hljs-number">-486e-87</span>df<span class="hljs-number">-404</span>ba670fcd9 ?/boot?? ??ext4 ? ?defaults,noatime ? ? ? ? ? ? ?<span class="hljs-number">1</span> ?<span class="hljs-number">2</span>UUID=<span class="hljs-number">248e7</span>a99-b459<span class="hljs-number">-4800</span>-bbd3<span class="hljs-number">-354047e49</span>a2f ?swap ? ? ?swap ? ?defaults,noatime ? ? ? ? ? ? ?<span class="hljs-number">0</span> ?<span class="hljs-number">0</span>tmpfs ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/dev/shm??tmpfs ? defaults,nosuid,noexec,nodev ?<span class="hljs-number">0</span> ?<span class="hljs-number">0</span>devpts ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??/dev/pts??devpts ?gid=<span class="hljs-number">5</span>,mode=<span class="hljs-number">620</span> ? ? ? ? ? ? ? ?<span class="hljs-number">0</span> ?<span class="hljs-number">0</span>sysfs ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/sys?? ? ?sysfs ? defaults ? ? ? ? ? ? ? ? ? ? ?<span class="hljs-number">0</span> ?<span class="hljs-number">0</span><span class="hljs-keyword">proc</span> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /<span class="hljs-keyword">proc</span><span class="hljs-title"> ? ? proc</span> <span class="hljs-title"> ? defaults</span> ? ? ? ? ? ? ? ? ? ? ?0 ?0<span class="hljs-title">UUID=870ebaf6-727f-48d3-b60c-f203339d94ac</span> ?/data1<span class="hljs-title"> ? ?ext4</span> <span class="hljs-title"> ? defaults,noatime</span> ? ? ? ? ? ? ?0 ?0</code>

5、FAQ:

  • 掛載點必須是一個目錄。

  • 一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。對于其他操作系統建立的文件系統的掛載也是這樣,卸載后,目錄以前的文件都還在,不會有任何丟失。

  • 目錄只占磁盤里的一個inode,存放文件屬性等信息。

  • 任何一個分區都必須掛載到某個目錄上。

  • 目錄是邏輯上的區分。分區是物理上的區分。

  • 磁盤Linux分區都必須掛載到目錄樹中的某個具體的目錄上才能進行讀寫操作。

  • 根目錄是所有Linux的文件和目錄所在的地方,需要掛載上一個磁盤分區。

  • 一個分區可以掛在多個目錄,但反過來一個目錄只能是一個分區的掛載點。

6、refer:

[1] Linux入門筆記之一:系統分區及掛載點?http://newthink.blog.51cto.com/872263/223795/

[2] 掛載點?http://wiki.linuxdeepin.com/index.php?title=%E6%8C%82%E8%BD%BD%E7%82%B9

[3] 什么叫“掛載”,“掛載點”?linux文件系統中的概念?http://bbs.csdn.net/topics/380197703

[4] Linux文件系統簡介?http://alicsd.iteye.com/blog/816268

[5] 第八章、Linux 磁盤與文件系統管理?http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php

[6] /etc/fstab 詳解?http://diamonder.blog.51cto.com/159220/282542?http://dikar.iteye.com/blog/361659

[7] 如何在CentOS下使用fdisk添加新硬盤?http://343308530.blog.51cto.com/7202597/1251558

[8] 多硬盤分區管理fdisk?http://blog.fens.me/linux-fdisk/

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

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

相關文章

C# NanoFramework 點燈和按鍵 之 ESP32

本來周末是要搞個大的&#xff0c;WIFI 和 Web網頁之類的&#xff0c;奈何搞了兩天&#xff0c;并與外國友人聊過后&#xff0c;才發現是固件有問題&#xff0c;晚上與大佬進行交流后才發現&#xff0c;原來ESP32S的官方固件有問題&#xff0c;搞不了。所以&#xff0c;建議買的…

【ArcGIS Pro微課1000例】0002:ArcGIS Pro 2.5二三維聯動顯示

ArcGIS Pro是一款全新的桌面應用程序,它改變了桌面GIS的工作方式,以滿足新一代WebGIS應用模式。ArcGIS Pro采用Ribbon界面風格,給人全新的用戶體驗。它作為一個高級的應用程序,可以對來自本地、ArcGIS Online、或者Portal for ArcGIS的數據進行可視化、編輯、分析。同時,實…

Spring Boot 解決跨域Cors問題

后端主要代碼&#xff1a; &#xff08;http://localhost:8080/ &#xff09; /*WebCorsConfig.java*/ package com.example.demo.Controller;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsR…

C語言試題147之創建一個鏈表并且排序輸出這個鏈表

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:創建一個鏈表并且排序輸出這…

DOM節點創建(jQuery)

1DOM創建節點及節點屬性 通過JavaScript可以很方便的獲取DOM節點&#xff0c;從而進行一系列的DOM操作。但實際上一般開發者都習慣性的先定義好HTML結構&#xff0c;但這樣就非常不靈活了。 試想下這樣的情況&#xff1a;如果我們通過AJAX獲取到數據之后然后才能確定結構的話&a…

PHP中刷新輸出緩沖

2019獨角獸企業重金招聘Python工程師標準>>> http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html 轉載于:https://my.oschina.net/wuzhencan/blog/652259

2021最新計算機二級C語言試題

一、選擇題 (1) 下面敘述正確的是( C ) A. 算法的執行效率與數據的存儲結構無關 B. 算法的空間復雜度是指算法程序中指令(或語句)的條數 C. 算法的有窮性是指算法必須能在執行有限個步驟之后終止 D. 以上三種描述都不對 (2) 以下數據結構中不屬于線性數據結構的是( C ) A…

[webpack3.8.1]Guides-4-Output Management(輸出管理)

Output Management This guide extends on code examples found in the Asset Management guide.這個指南將在上一個指南的基礎上對示例代碼進行擴展。 So far weve manually included all our assets in our index.html file, but as your application grows and once you sta…

有條件地 [JsonIgnore]

前言通常&#xff0c;在進行 JSON 序列化或反序列化時&#xff0c;如果要忽略某個屬性&#xff0c;我們會使用 [JsonIgnore] 特性&#xff1a;public class User {public int Id { get; set; }[JsonIgnore]public string Name { get; set; } }var user new User { Id 1, Name…

C語言試題145之創建一個鏈表

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:創建一個鏈表 2 、溫馨提示 …

[轉]IntelliJ IDEA 2019.3正式發布,給我們帶來哪些新特性?

每篇一句 工欲善其事必先利其器 ——《論語衛靈公》 前言 千呼萬喚始出來。自從JetBrains在今年7月24日發布了IDEA 2019.2版本后&#xff0c;從9月份開始我便一直在關注此版本正式版的發布。JetBrains公司在9月中旬就對外公布了下一個主要版本 2019.3的Roadmap&#xff0c;而且…

Git中的日常使用 碼云

http://git.mydoc.io/?t83143轉載于:https://www.cnblogs.com/yangyuqiu/p/6164822.html

【譚浩強版】C語言程序設計(第三版)課后習題完整答案附源碼--高等教育出版社

文章目錄 第一章 語言程序設計的概念第二章 基本數據類型第三章 C語言程序的流程控制第四章 模塊化程序設計第五章 數組第六章 指針第一章 語言程序設計的概念 1.1 請編寫一個程序, 顯示以下兩行文字。 #include <stdio.h> main() {printf("I am a student.\n&qu…

php判斷是否為json格式的方法

http://www.poluoluo.com/jzxy/201403/265005.html 首先要記住json_encode返回的是字符串, 而json_decode返回的是對象 判斷數據不是JSON格式: .代碼如下:function is_not_json($str){ return is_null(json_decode($str));}判斷數據是合法的json數據: (PHP版本大于5.3) .代碼如…

FineReport中以jws方式調用WebService數據源方案

在使用WebService作為項目的數據源時&#xff0c;希望報表中也是直接調用這個WebService數據源&#xff0c;而不是定義數據連接調用對應的數據庫表&#xff0c;這樣要怎么實現呢&#xff1f; 在程序中訪問WebService應用服務&#xff0c;將WebService返回的數據轉為程序數據集&…

C語言試題148之海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只 猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一個,它同樣把多的

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:海灘上有一堆桃子,五只猴子…

一文讀懂什么是CTO、技術VP、技術總監、首席架構師

究竟什么是CTO&#xff0c;一個公司真的需要CTO么&#xff1f;哪些公司的職位對于技術管理者來講真的是CTO的職位&#xff1f;同樣是技術最高負責人&#xff0c;為什么有人叫CTO、有人叫技術總監、技術VP&#xff0c;有人叫首席架構師&#xff1f;他們之間的差別是什么&#xf…

與MySQL傳統復制相比,GTID有哪些獨特的復制姿勢?

與MySQL傳統復制相比&#xff0c;GTID有哪些獨特的復制姿勢? http://mp.weixin.qq.com/s/IF1Pld-wGW0q2NiBjMXwfg 陳華軍&#xff0c;蘇寧云商IT總部資深技術經理&#xff0c;從事數據庫服務相關的開發和維護工作&#xff0c;之前曾長期從事富士通關系數據庫的開發&#xff0c…

【ArcGIS Pro微課1000例】0007:ArcGIS Pro 2.5質量檢查:拓撲創建與編輯案例教程

文章目錄 1. 加載矢量數據2. 創建數據庫、要素數據集3. 拓撲創建4. 拓撲錯誤編輯與修改1. 加載矢量數據 矢量數據可以是單獨shp格式的文件數據,也可是存在于數據庫中的要素類。 2. 創建數據庫、要素數據集 創建數據庫 無論是在ArcMap,還是ArcGIS Pro中,創建拓撲都需要在…

C語言試題149之809乘以??=800乘以??+9乘以??+1 其中??代表的兩位數,8乘以??的結果為兩位數,9乘以??的結果為 3 位數。求??代表 的兩位數,及 809乘以??后的結果

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:809*??=800*??+9*??+1…