国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
一、先思考一下" >一、先思考一下
二、top 指令使用資料在哪裡" >二、top 指令使用資料在哪裡
三、統(tǒng)計(jì)數(shù)據(jù)怎么來的" >三、統(tǒng)計(jì)數(shù)據(jù)怎么來的
3.1 用戶態(tài)時(shí)間統(tǒng)計(jì)" >3.1 用戶態(tài)時(shí)間統(tǒng)計(jì)
3.2 內(nèi)核態(tài)時(shí)間統(tǒng)計(jì)" >3.2 內(nèi)核態(tài)時(shí)間統(tǒng)計(jì)
3.3 空閑時(shí)間的累積" >3.3 空閑時(shí)間的累積
四、總結(jié)" >四、總結(jié)
首頁 系統(tǒng)教程 Linux Linux 中 CPU 使用率是如何算出來的?

Linux 中 CPU 使用率是如何算出來的?

Feb 15, 2024 am 11:15 AM
linux linux教程 linux系統(tǒng) linux指令 shell腳本 overflow 嵌入式linux linux入門 linux學(xué)習(xí)

在線上伺服器觀察線上服務(wù)運(yùn)作狀態(tài)的時(shí)候,絕大多數(shù)人都是喜歡先用 top 指令看看目前系統(tǒng)的整體 cpu 使用率。例如,隨手拿來的一臺(tái)機(jī)器,top 指令顯示的使用率資訊如下:

Linux 中 CPU 利用率是如何算出來的?

這個(gè)輸出結(jié)果說簡單也簡單,說複雜也不是那麼容易就能全部搞懂的。例如:

問題 1:top 輸出的使用率資訊是如何計(jì)算出來的,它精確嗎?
問題 2:ni 這一列是 nice,它輸出的是 cpu 在處理啥時(shí)的開銷?
問題 3:wa 代表的是 io wait,那麼這段時(shí)間中 cpu 到底是忙碌還是空閒?

今天我們對 cpu 使用率統(tǒng)計(jì)進(jìn)行深入的學(xué)習(xí)。透過現(xiàn)今的學(xué)習(xí),你不僅能了解 cpu 使用率統(tǒng)計(jì)實(shí)現(xiàn)細(xì)節(jié),還能對 nice、io wait 等指標(biāo)有更深入的理解。

今天我們先從自己的思考開始!

一、先思考一下

#拋開 Linux 的實(shí)作先不談,如果有以下需求,有一個(gè)四核心伺服器,上面跑了四個(gè)進(jìn)程。

Linux 中 CPU 利用率是如何算出來的?

讓你來設(shè)計(jì)一個(gè)計(jì)算整個(gè)系統(tǒng) cpu 使用率的這個(gè)需求,支援像 top 指令這樣的輸出,滿足以下要求:

  • cpu 使用率要盡可能準(zhǔn)確;
  • # 要盡可能體現(xiàn)秒級瞬時(shí) cpu 狀態(tài)。

可以先停下來思考幾分鐘。

Linux 中 CPU 利用率是如何算出來的?

好,思考結(jié)束。經(jīng)過思考你會(huì)發(fā)現(xiàn),這個(gè)看起來很簡單的需求,實(shí)際上還是有點(diǎn)小複雜的。

其中一個(gè)想法是把所有行程的執(zhí)行時(shí)間加起來,然後再除以系統(tǒng)執(zhí)行總時(shí)間*4。

Linux 中 CPU 利用率是如何算出來的?

這個(gè)想法是沒問題的,用這種方法統(tǒng)計(jì)很長一段時(shí)間內(nèi)的 cpu 使用率是可以的,統(tǒng)計(jì)也足夠的準(zhǔn)確。

但只要用過 top 你就知道 top 輸出的 cpu 使用率並不是長時(shí)間不變的,而是預(yù)設(shè) 3 秒為單位會(huì)動(dòng)態(tài)更新一下(這個(gè)時(shí)間間隔可以使用 -d 設(shè)定)。我們的這個(gè)方案體現(xiàn)總利用率可以,體現(xiàn)這種瞬時(shí)的狀態(tài)就難辦了。你可能會(huì)想到那我也 3 秒算一次不就行了?但這個(gè) 3 秒的時(shí)間從哪個(gè)點(diǎn)開始呢。粒度很不好控制。

上一個(gè)思路問題核心就是如何解決瞬時(shí)問題。提到瞬時(shí)狀態(tài),你可能就又來思路了。那我就用瞬時(shí)採樣去看,看看目前有幾個(gè)核在忙。四個(gè)核如果有兩個(gè)核在忙,那麼利用率就是 50%。

這個(gè)思路思考的方向也是正確的,但是問題有兩個(gè):

  • 你算出的數(shù)字都是 25% 的整數(shù)倍;
  • # 這個(gè)瞬時(shí)值會(huì)導(dǎo)致 cpu 使用率顯示的劇烈震盪。

例如下圖:

Linux 中 CPU 利用率是如何算出來的?

在 t1 的瞬時(shí)狀態(tài)看來,系統(tǒng)的 cpu 使用率毫無疑問就是 100%,但在 t2 時(shí)間看來,使用率又變成 0% 了。思路方向是對的,但顯然這種粗暴的計(jì)算無法像 top 指令一樣優(yōu)雅地工作。

我們再改進(jìn)一下它,把上面兩個(gè)想法結(jié)合起來,可能就能解決我們的問題了。在取樣上,我們把週期定得細(xì)一些,但在計(jì)算上我們把週期定得粗一些。

我們引入採用週期的概念,定時(shí)例如每 1 毫秒採樣一次。如果採樣的瞬時(shí),cpu 在運(yùn)行,就將這 1 ms 記錄為使用。這時(shí)會(huì)得出一個(gè)瞬間的 cpu 使用率,把它都存起來。

Linux 中 CPU 利用率是如何算出來的?

在統(tǒng)計(jì) 3 秒內(nèi)的 cpu 使用率的時(shí)候,例如上圖的 t1 和 t2 這段時(shí)間範(fàn)圍。那就把這段時(shí)間內(nèi)的所有瞬時(shí)值全加一下,取個(gè)平均值。這樣就能解決上面的問題了,統(tǒng)計(jì)相對準(zhǔn)確,避免了瞬時(shí)值劇烈震盪且粒度過粗(只能以 25% 為單位變化)的問題了。

可能有同學(xué)會(huì)問了,假如 cpu 在兩次取樣中間發(fā)生變化了呢,如下圖這種情況。

Linux 中 CPU 利用率是如何算出來的?

在目前取樣點(diǎn)到來的時(shí)候,流程 A 其實(shí)剛執(zhí)行完,有一點(diǎn)點(diǎn)時(shí)間既沒被上一個(gè)取樣點(diǎn)統(tǒng)計(jì)到,本次也統(tǒng)計(jì)不到。對於進(jìn)程 B,其實(shí)只開始了一小段時(shí)間,把 1 ms 全記上似乎有點(diǎn)多記了。

確實(shí)會(huì)存在這個(gè)問題,但因?yàn)槲覀兊膾駱邮? ms 一次,而我們??實(shí)際查看使用的時(shí)候最少也是秒級別地用,會(huì)包括有成千上萬個(gè)採樣點(diǎn)的信息,所以這種誤差並不會(huì)影響我們對全局的掌握。

事實(shí)上,Linux 也就是這樣來統(tǒng)計(jì)系統(tǒng) cpu 使用率的。雖然可能會(huì)有誤差,但作為一項(xiàng)統(tǒng)計(jì)數(shù)據(jù)使用已經(jīng)是足夠了的。在實(shí)作上,Linux 是將所有的瞬時(shí)值都累積到某一個(gè)資料上的,而不是真的存了很多份的瞬時(shí)資料。

接下來就讓我們進(jìn)入 Linux 來查看它對系統(tǒng) cpu 使用率統(tǒng)計(jì)的具體實(shí)作。

二、top 指令使用資料在哪裡

#上一節(jié)我們說的 Linux 在實(shí)作上是將瞬時(shí)值都累積到某一個(gè)資料上的,這個(gè)值是核心透過 /proc/stat 偽檔案來對使用者態(tài)暴露。 Linux 在計(jì)算系統(tǒng) cpu 使用率的時(shí)候用的就是它。

整體來看,top 指令工作的內(nèi)部細(xì)節(jié)如下圖所示。

Linux 中 CPU 利用率是如何算出來的?

#top 指令存取 /proc/stat 取得各項(xiàng) cpu 使用率使用值;

  • 核心呼叫 stat_open 函數(shù)來處理對 /proc/stat 的存??;

  • 核心存取的資料來自 kernel_cpustat 數(shù)組,並彙總;

  • 列印輸出給使用者狀態(tài)。

接下來我們把每一步都展開來詳細(xì)看看。

透過使用 strace 追蹤 top 指令的各種系統(tǒng)調(diào)用,可以看到它對該檔案的調(diào)用。

#?strace?top
...
openat(AT_FDCWD,?"/proc/stat",?O_RDONLY)?=?4
openat(AT_FDCWD,?"/proc/2351514/stat",?O_RDONLY)?=?8
openat(AT_FDCWD,?"/proc/2393539/stat",?O_RDONLY)?=?8
...

#除了 /proc/stat 外,還有各個(gè)行程細(xì)分的 /proc/{pid}/stat,是用來計(jì)算各個(gè)行程的 cpu 使用率時(shí)所使用的。

#核心為各個(gè)偽檔案都定義了處理函數(shù),/proc/stat 檔案的處理方法是 proc_stat_operations。

//file:fs/proc/stat.c
static?int?__init?proc_stat_init(void)
{
?proc_create("stat",?0,?NULL,?&proc_stat_operations);
?return?0;
}

static?const?struct?file_operations?proc_stat_operations?=?{
?.open??=?stat_open,
?...
};

proc_stat_operations 中包含了該檔案對應(yīng)的操作方法。當(dāng)開啟 /proc/stat 檔案的時(shí)候,stat_open 就會(huì)被呼叫到。 stat_open 依序呼叫 single_open_size,show_stat 來輸出資料內(nèi)容。讓我們來看看它的程式碼:

//file:fs/proc/stat.c
static?int?show_stat(struct?seq_file?*p,?void?*v)
{
?u64?user,?nice,?system,?idle,?iowait,?irq,?softirq,?steal;

?for_each_possible_cpu(i)?{
??struct?kernel_cpustat?*kcs?=?&kcpustat_cpu(i);

??user?+=?kcs->cpustat[CPUTIME_USER];
??nice?+=?kcs->cpustat[CPUTIME_NICE];
??system?+=?kcs->cpustat[CPUTIME_SYSTEM];
??idle?+=?get_idle_time(kcs,?i);
??iowait?+=?get_iowait_time(kcs,?i);
??irq?+=?kcs->cpustat[CPUTIME_IRQ];
??softirq?+=?kcs->cpustat[CPUTIME_SOFTIRQ];
??...
?}

?//轉(zhuǎn)換成節(jié)拍數(shù)并打印出來
?seq_put_decimal_ull(p,?"cpu??",?nsec_to_clock_t(user));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(nice));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(system));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(idle));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(iowait));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(irq));
?seq_put_decimal_ull(p,?"?",?nsec_to_clock_t(softirq));
?...
}

在上面的程式碼中,for_each_possible_cpu 是在遍歷儲(chǔ)存 cpu 使用率資料的 kcpustat_cpu 變數(shù)。這個(gè)變數(shù)是一個(gè) percpu 變量,它為每個(gè)邏輯核都準(zhǔn)備了一個(gè)數(shù)組元素。裡面存放著目前核所對應(yīng)各種事件,包括 user、nice、system、idel、iowait、irq、softirq 等。

在這個(gè)循環(huán)中,將每一個(gè)核的每種使用率加起來。最後透過 seq_put_decimal_ull 將這些資料輸出出來。

Linux 中 CPU 利用率是如何算出來的?

注意,在核心中實(shí)際每個(gè)時(shí)間記錄的是納秒數(shù),但是在輸出的時(shí)候統(tǒng)一都轉(zhuǎn)換成了節(jié)拍單位。至於節(jié)拍單位多長,下一節(jié)我們介紹。總之, /proc/stat 的輸出是從 kernel_cpustat 這個(gè) percpu 變數(shù)讀取出來的。

我們接著再看看這個(gè)變數(shù)中的資料是何時(shí)加進(jìn)來的。

三、統(tǒng)計(jì)數(shù)據(jù)怎么來的

前面我們提到內(nèi)核是以采樣的方式來統(tǒng)計(jì) cpu 使用率的。這個(gè)采樣周期依賴的是 Linux 時(shí)間子系統(tǒng)中的定時(shí)器。

Linux 內(nèi)核每隔固定周期會(huì)發(fā)出 timer interrupt (IRQ 0),這有點(diǎn)像樂譜中的節(jié)拍的概念。每隔一段時(shí)間,就打出一個(gè)拍子,Linux 就響應(yīng)之并處理一些事情。

Linux 中 CPU 利用率是如何算出來的?

一個(gè)節(jié)拍的長度是多長時(shí)間,是通過 CONFIG_HZ 來定義的。它定義的方式是每一秒有幾次 timer interrupts。不同的系統(tǒng)中這個(gè)節(jié)拍的大小可能不同,通常在 1 ms 到 10 ms 之間??梢栽谧约旱?Linux config 文件中找到它的配置。

#?grep?^CONFIG_HZ?/boot/config-5.4.56.bsk.10-amd64
CONFIG_HZ=1000

從上述結(jié)果中可以看出,我的機(jī)器每秒要打出 1000 次節(jié)拍。也就是每 1 ms 一次。

每次當(dāng)時(shí)間中斷到來的時(shí)候,都會(huì)調(diào)用 update_process_times 來更新系統(tǒng)時(shí)間。更新后的時(shí)間都存儲(chǔ)在我們前面提到的 percpu 變量 kcpustat_cpu 中。

Linux 中 CPU 利用率是如何算出來的?

我們來詳細(xì)看下匯總過程 update_process_times 的源碼,它位于 kernel/time/timer.c 文件中。

//file:kernel/time/timer.c
void?update_process_times(int?user_tick)
{
?struct?task_struct?*p?=?current;

?//進(jìn)行時(shí)間累積處理
?account_process_tick(p,?user_tick);
?...
}

這個(gè)函數(shù)的參數(shù) user_tick 指的是采樣的瞬間是處于內(nèi)核態(tài)還是用戶態(tài)。接下來調(diào)用 account_process_tick。

//file:kernel/sched/cputime.c
void?account_process_tick(struct?task_struct?*p,?int?user_tick)
{
?cputime?=?TICK_NSEC;
?...

?if?(user_tick)
??//3.1?統(tǒng)計(jì)用戶態(tài)時(shí)間
??account_user_time(p,?cputime);
?else?if?((p?!=?rq->idle)?||?(irq_count()?!=?HARDIRQ_OFFSET))
??//3.2?統(tǒng)計(jì)內(nèi)核態(tài)時(shí)間
??account_system_time(p,?HARDIRQ_OFFSET,?cputime);
?else
??//3.3?統(tǒng)計(jì)空閑時(shí)間
??account_idle_time(cputime);
}

在這個(gè)函數(shù)中,首先設(shè)置 cputime = TICK_NSEC, 一個(gè) TICK_NSEC 的定義是一個(gè)節(jié)拍所占的納秒數(shù)。接下來根據(jù)判斷結(jié)果分別執(zhí)行 account_user_time、account_system_time 和 account_idle_time 來統(tǒng)計(jì)用戶態(tài)、內(nèi)核態(tài)和空閑時(shí)間。

3.1 用戶態(tài)時(shí)間統(tǒng)計(jì)

//file:kernel/sched/cputime.c
void?account_user_time(struct?task_struct?*p,?u64?cputime)
{
?//分兩種種情況統(tǒng)計(jì)用戶態(tài)?CPU?的使用情況
?int?index;
?index?=?(task_nice(p)?>?0)???CPUTIME_NICE?:?CPUTIME_USER;

?//將時(shí)間累積到?/proc/stat?中
?task_group_account_field(p,?index,?cputime);
?......
}

account_user_time 函數(shù)主要分兩種情況統(tǒng)計(jì):

  • 如果進(jìn)程的 nice 值大于 0,那么將會(huì)增加到 CPU 統(tǒng)計(jì)結(jié)構(gòu)的 nice 字段中。
  • 如果進(jìn)程的 nice 值小于等于 0,那么增加到 CPU 統(tǒng)計(jì)結(jié)構(gòu)的 user 字段中。

看到這里,開篇的問題 2 就有答案了,其實(shí)用戶態(tài)的時(shí)間不只是 user 字段,nice 也是。之所以要把 nice 分出來,是為了讓 Linux 用戶更一目了然地看到調(diào)過 nice 的進(jìn)程所占的 cpu 周期有多少。

我們平時(shí)如果想要觀察系統(tǒng)的用戶態(tài)消耗的時(shí)間的話,應(yīng)該是將 top 中輸出的 user 和 nice 加起來一并考慮,而不是只看 user!

接著調(diào)用 task_group_account_field 來把時(shí)間加到前面我們用到的 kernel_cpustat 內(nèi)核變量中。

//file:kernel/sched/cputime.c
static?inline?void?task_group_account_field(struct?task_struct?*p,?int?index,
??????u64?tmp)
{
?__this_cpu_add(kernel_cpustat.cpustat[index],?tmp);
?...
}

3.2 內(nèi)核態(tài)時(shí)間統(tǒng)計(jì)

我們再來看內(nèi)核態(tài)時(shí)間是如何統(tǒng)計(jì)的,找到 account_system_time 的代碼。

//file:kernel/sched/cputime.c
void?account_system_time(struct?task_struct?*p,?int?hardirq_offset,?u64?cputime)
{
?if?(hardirq_count()?-?hardirq_offset)
??index?=?CPUTIME_IRQ;
?else?if?(in_serving_softirq())
??index?=?CPUTIME_SOFTIRQ;
?else
??index?=?CPUTIME_SYSTEM;

?account_system_index_time(p,?cputime,?index);
}

內(nèi)核態(tài)的時(shí)間主要分 3 種情況進(jìn)行統(tǒng)計(jì)。

  • 如果當(dāng)前處于硬中斷執(zhí)行上下文, 那么統(tǒng)計(jì)到 irq 字段中;
  • 如果當(dāng)前處于軟中斷執(zhí)行上下文, 那么統(tǒng)計(jì)到 softirq 字段中;
  • 否則統(tǒng)計(jì)到 system 字段中。

判斷好要加到哪個(gè)統(tǒng)計(jì)項(xiàng)中后,依次調(diào)用 account_system_index_time、task_group_account_field 來將這段時(shí)間加到內(nèi)核變量 kernel_cpustat 中。

//file:kernel/sched/cputime.c
static?inline?void?task_group_account_field(struct?task_struct?*p,?int?index,
??????u64?tmp)
{?
?__this_cpu_add(kernel_cpustat.cpustat[index],?tmp);
}

3.3 空閑時(shí)間的累積

沒錯(cuò),在內(nèi)核變量 kernel_cpustat 中不僅僅是統(tǒng)計(jì)了各種用戶態(tài)、內(nèi)核態(tài)的使用時(shí)間,空閑也一并統(tǒng)計(jì)起來了。

如果在采樣的瞬間,cpu 既不在內(nèi)核態(tài)也不在用戶態(tài)的話,就將當(dāng)前節(jié)拍的時(shí)間都累加到 idle 中。

//file:kernel/sched/cputime.c
void?account_idle_time(u64?cputime)
{
?u64?*cpustat?=?kcpustat_this_cpu->cpustat;
?struct?rq?*rq?=?this_rq();

?if?(atomic_read(&rq->nr_iowait)?>?0)
??cpustat[CPUTIME_IOWAIT]?+=?cputime;
?else
??cpustat[CPUTIME_IDLE]?+=?cputime;
}

在 cpu 空閑的情況下,進(jìn)一步判斷當(dāng)前是不是在等待 IO(例如磁盤 IO),如果是的話這段空閑時(shí)間會(huì)加到 iowait 中,否則就加到 idle 中。從這里,我們可以看到 iowait 其實(shí)是 cpu 的空閑時(shí)間,只不過是在等待 IO 完成而已。

看到這里,開篇問題 3 也有非常明確的答案了,io wait 其實(shí)是 cpu 在空閑狀態(tài)的一項(xiàng)統(tǒng)計(jì),只不過這種狀態(tài)和 idle 的區(qū)別是 cpu 是因?yàn)榈却?io 而空閑。

四、總結(jié)

本文深入分析了 Linux 統(tǒng)計(jì)系統(tǒng) CPU 利用率的內(nèi)部原理。全文的內(nèi)容可以用如下一張圖來匯總:

Linux 中 CPU 利用率是如何算出來的?

Linux 中的定時(shí)器會(huì)以某個(gè)固定節(jié)拍,比如 1 ms 一次采樣各個(gè) cpu 核的使用情況,然后將當(dāng)前節(jié)拍的所有時(shí)間都累加到 user/nice/system/irq/softirq/io_wait/idle 中的某一項(xiàng)上。

top 命令是讀取的 /proc/stat 中輸出的 cpu 各項(xiàng)利用率數(shù)據(jù),而這個(gè)數(shù)據(jù)在內(nèi)核中是根據(jù) kernel_cpustat 來匯總并輸出的。

回到開篇問題 1,top 輸出的利用率信息是如何計(jì)算出來的,它精確嗎?

/proc/stat 文件輸出的是某個(gè)時(shí)間點(diǎn)的各個(gè)指標(biāo)所占用的節(jié)拍數(shù)。如果想像 top 那樣輸出一個(gè)百分比,計(jì)算過程是分兩個(gè)時(shí)間點(diǎn) t1, t2 分別獲取一下 stat 文件中的相關(guān)輸出,然后經(jīng)過個(gè)簡單的算術(shù)運(yùn)算便可以算出當(dāng)前的 cpu 利用率。

再說是否精確。這個(gè)統(tǒng)計(jì)方法是采樣的,只要是采樣,肯定就不是百分之百精確。但由于我們查看 cpu 使用率的時(shí)候往往都是計(jì)算 1 秒甚至更長一段時(shí)間的使用情況,這其中會(huì)包含很多采樣點(diǎn),所以查看整體情況是問題不大的。

另外從本文,我們也學(xué)到了 top 中輸出的 cpu 時(shí)間項(xiàng)目其實(shí)大致可以分為三類:

第****一類:用戶態(tài)消耗時(shí)間,包括 user 和 nice。如果想看用戶態(tài)的消耗,要將 user 和 nice 加起來看才對。

第二類:內(nèi)核態(tài)消耗時(shí)間,包括 irq、softirq 和 system。

第三類:空閑時(shí)間,包括 io_wait 和 idle。其中 io_wait 也是 cpu 的空閑狀態(tài),只不過是在等 io 完成而已。如果只是想看 cpu 到底有多閑,應(yīng)該把 io_wait 和 idle 加起來才對。


以上是Linux 中 CPU 使用率是如何算出來的?的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CentOS上Postman集成應(yīng)用 CentOS上Postman集成應(yīng)用 May 19, 2025 pm 08:00 PM

在CentOS上集成Postman應(yīng)用可以通過多種方法來實(shí)現(xiàn),以下是詳細(xì)的步驟和建議:通過下載安裝包安裝Postman下載Postman的Linux版本安裝包:訪問Postman官方網(wǎng)站,選擇適用於Linux的版本進(jìn)行下載。解壓安裝包:使用以下命令將安裝包解壓到指定目錄,例如/opt:sudotar-xzfpostman-linux-x64-xx.xx.xx.tar.gz-C/opt請注意將“postman-linux-x64-xx.xx.xx.tar.gz”替換為您實(shí)際下載的文件名。創(chuàng)建符號

Linux各目錄及每個(gè)目錄的詳細(xì)介紹(轉(zhuǎn)載) Linux各目錄及每個(gè)目錄的詳細(xì)介紹(轉(zhuǎn)載) May 22, 2025 pm 07:54 PM

【常見目錄說明】目錄/bin存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這裡。 /etc存放系統(tǒng)管理和配置文件/home存放所有用戶文件的根目錄,是用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示/usr用於存放系統(tǒng)應(yīng)用程序,比較重要的目錄/usr/local?本地系統(tǒng)管理員軟件安裝目錄(安裝系統(tǒng)級的應(yīng)用)。這是最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個(gè)目錄。 /usr/x11r6?存放x?window的目錄/usr/bin?眾多

pycharm解釋器在哪裡 解釋器位置查找方法 pycharm解釋器在哪裡 解釋器位置查找方法 May 23, 2025 pm 10:09 PM

在PyCharm中設(shè)置解釋器的位置可以通過以下步驟實(shí)現(xiàn):1.打開PyCharm,點(diǎn)擊“File”菜單,選擇“Settings”或“Preferences”。 2.找到並點(diǎn)擊“Project:[你的項(xiàng)目名]”,然後選擇“PythonInterpreter”。 3.點(diǎn)擊“AddInterpreter”,選擇“SystemInterpreter”,瀏覽到Python安裝目錄,選中Python可執(zhí)行文件,點(diǎn)擊“OK”。設(shè)置解釋器時(shí)需注意路徑正確性、版本兼容性和虛擬環(huán)境的使用,以確保項(xiàng)目順利運(yùn)行。

用java編程和其他語言的區(qū)別 Java的跨平臺(tái)特性優(yōu)勢分析 用java編程和其他語言的區(qū)別 Java的跨平臺(tái)特性優(yōu)勢分析 May 20, 2025 pm 08:21 PM

Java與其他編程語言的主要區(qū)別在於其“一次編寫,到處運(yùn)行”的跨平臺(tái)特性。 1.Java的語法接近C ,但去掉了容易出錯(cuò)的指針操作,適合大型企業(yè)應(yīng)用。 2.與Python相比,Java在性能和大規(guī)模數(shù)據(jù)處理上更具優(yōu)勢。 Java的跨平臺(tái)優(yōu)勢源於Java虛擬機(jī)(JVM),它能在不同平臺(tái)上運(yùn)行相同的字節(jié)碼,簡化開發(fā)和部署,但需注意避免使用平臺(tái)特定API以保持跨平臺(tái)性。

安裝Nginx後配置文件路徑及初始設(shè)置 安裝Nginx後配置文件路徑及初始設(shè)置 May 16, 2025 pm 10:54 PM

了解Nginx的配置文件路徑和初始設(shè)置非常重要,因?yàn)樗莾?yōu)化和管理Web服務(wù)器的第一步。 1)配置文件路徑通常是/etc/nginx/nginx.conf,使用nginx-t命令可以查找並測試語法。 2)初始設(shè)置包括全局設(shè)置(如user、worker_processes)和HTTP設(shè)置(如include、log_format),這些設(shè)置允許根據(jù)需求進(jìn)行定制和擴(kuò)展,錯(cuò)誤配置可能導(dǎo)致性能問題和安全漏洞。

mysql安裝教程 手把手教你mysql安裝配置詳細(xì)步驟 mysql安裝教程 手把手教你mysql安裝配置詳細(xì)步驟 May 23, 2025 am 06:09 AM

MySQL的安裝和配置可以通過以下步驟完成:1.從官方網(wǎng)站下載適合操作系統(tǒng)的安裝包。 2.運(yùn)行安裝程序,選擇“開發(fā)者默認(rèn)”選項(xiàng)並設(shè)置root用戶密碼。 3.安裝後配置環(huán)境變量,確保MySQL的bin目錄在PATH中。 4.創(chuàng)建用戶時(shí)遵循最小權(quán)限原則並設(shè)置強(qiáng)密碼。 5.優(yōu)化性能時(shí)調(diào)整innodb_buffer_pool_size和max_connections參數(shù)。 6.定期備份數(shù)據(jù)庫並優(yōu)化查詢語句以提高性能。

Informix與MySQL在Linux上的比較 Informix與MySQL在Linux上的比較 May 29, 2025 pm 11:21 PM

Informix和MySQL均為廣受青睞的關(guān)係型數(shù)據(jù)庫管理系統(tǒng),它們在Linux環(huán)境下均表現(xiàn)優(yōu)異並得到廣泛應(yīng)用。以下是對兩者在Linux平臺(tái)上的對比分析:安裝與配置Informix:在Linux上部署Informix需要下載對應(yīng)的安裝文件,隨後依據(jù)官方文檔指引完成安裝及配置流程。 MySQL:MySQL的安裝過程較為簡便,可通過系統(tǒng)的包管理工具(例如apt或yum)輕鬆實(shí)現(xiàn)安裝,並且網(wǎng)絡(luò)上有大量的教程和社區(qū)支持可供參考。性能表現(xiàn)Informix:Informix以卓越的性能和

參加VSCode線下技術(shù)交流活動(dòng)的經(jīng)驗(yàn) 參加VSCode線下技術(shù)交流活動(dòng)的經(jīng)驗(yàn) May 29, 2025 pm 10:00 PM

參加VSCode線下技術(shù)交流活動(dòng)的經(jīng)驗(yàn)非常豐富,主要收穫包括插件開發(fā)的分享、實(shí)戰(zhàn)演示和與其他開發(fā)者的交流。 1.插件開發(fā)的分享:了解瞭如何利用VSCode的插件API提升開發(fā)效率,如自動(dòng)格式化和靜態(tài)分析插件。 2.實(shí)戰(zhàn)演示:學(xué)習(xí)瞭如何使用VSCode進(jìn)行遠(yuǎn)程開發(fā),認(rèn)識到其靈活性和擴(kuò)展性。 3.與開發(fā)者交流:獲取了優(yōu)化VSCode啟動(dòng)速度的技巧,如減少啟動(dòng)時(shí)加載的插件數(shù)量和管理插件加載順序??傊@次活動(dòng)讓我受益匪淺,強(qiáng)烈推薦對VSCode感興趣的人參加。

See all articles